<?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>189407</bug_id>
          
          <creation_ts>2018-09-07 09:03:50 -0700</creation_ts>
          <short_desc>Test262 failure with Named Capture Groups - using a reference before the group is defined</short_desc>
          <delta_ts>2020-03-24 13:08:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>178175</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1457496</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-09-07 09:03:50 -0700</bug_when>
    <thetext>This Test262 test is failing - JSTests/test262/test/built-ins/RegExp/named-groups/unicode-references.js
Exception: SyntaxError: Invalid regular expression: invalid backreference for unicode pattern
at JSTests/test262/test/built-ins/RegExp/named-groups/unicode-references.js:33

The line in question is:
  assert(compareArray([&quot;bab&quot;, &quot;b&quot;], &quot;bab&quot;.match(/\k&lt;a&gt;(?&lt;a&gt;b)\w\k&lt;a&gt;/u)));

Here the first reference of the named group “a” is being used before the referenced is defined.  This is allowed by the spec and should match the empty string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457497</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-09-07 09:04:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/34844068&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457664</commentid>
    <comment_count>2</comment_count>
      <attachid>349187</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-09-07 14:03:35 -0700</bug_when>
    <thetext>Created attachment 349187
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457667</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-07 14:05:25 -0700</bug_when>
    <thetext>Attachment 349187 did not pass style-queue:


ERROR: JSTests/ChangeLog:11:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/yarr/YarrSyntaxChecker.cpp:53:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457698</commentid>
    <comment_count>4</comment_count>
      <attachid>349187</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-09-07 14:46:34 -0700</bug_when>
    <thetext>Comment on attachment 349187
Patch

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

&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:464
&gt; +        for (auto it = m_pattern.m_namedForwardReferences.begin(), itEnd = m_pattern.m_namedForwardReferences.end(); it &lt; itEnd; ++it) {

Why not &quot;for ( : )&quot; loop?

&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:685
&gt; +    bool isValidNamedForwardReference(String subpatternName)

const String&amp;? So we don&apos;t copy?

&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:690
&gt; +        if (!m_invalidNamedForwardReferences.find(subpatternName))
&gt; +            return false;
&gt; +
&gt; +        return true;

this could be:
`return m_invalidNamedForwardReferences.contains(subpatternName)`

I think using &quot;find&quot; is also wrong to check &quot;!&quot; against. We should make sure there is a test that properly catches where this will go wrong.

&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:693
&gt; +    void atomNamedForwardReference(String subpatternName)

ditto w.r.t copy?

&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:1168
&gt; +    //  &amp;&amp;&amp;&amp;

please remove

&gt; Source/JavaScriptCore/yarr/YarrPattern.h:399
&gt; +        for (auto it = m_namedForwardReferences.begin(), itEnd = m_namedForwardReferences.end(); it &lt; itEnd; ++it) {

style: Why not make this a &quot;for ( : )&quot; loop?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457742</commentid>
    <comment_count>5</comment_count>
      <attachid>349212</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-09-07 15:55:01 -0700</bug_when>
    <thetext>Created attachment 349212
Patch with suggested updates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457743</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-07 15:58:12 -0700</bug_when>
    <thetext>Attachment 349212 did not pass style-queue:


ERROR: JSTests/ChangeLog:11:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/yarr/YarrSyntaxChecker.cpp:51:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/yarr/YarrSyntaxChecker.cpp:53:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 3 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457777</commentid>
    <comment_count>7</comment_count>
      <attachid>349212</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-07 17:04:35 -0700</bug_when>
    <thetext>Comment on attachment 349212
Patch with suggested updates

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

&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:687
&gt; +    bool isValidNamedForwardReference(const String&amp; subpatternName)
&gt; +    {
&gt; +        return !m_unmatchedNamedForwardReferences.contains(subpatternName);

All the other YARR callbacks are informative.  If you moved this check to inside your implementation of atomNamedForwardReference, then YARR would remain a parser with a nice interface.
Said another way, I don&apos;t think YARR should ask if it should inform the delegate of something.  It should just inform the delegate and let the delegate decide what to do with it.

&gt; Source/WebCore/contentextensions/URLFilterParser.cpp:144
&gt; +        fail(URLFilterParser::ForwardReference);

Could you please add a test to the ContentExtensionTest.ParsingFailures test to verify this can be hit?  I&apos;m assuming backwards compatibility isn&apos;t an issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458053</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-09-09 15:20:56 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Comment on attachment 349212 [details]
&gt; Patch with suggested updates
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=349212&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:687
&gt; &gt; +    bool isValidNamedForwardReference(const String&amp; subpatternName)
&gt; &gt; +    {
&gt; &gt; +        return !m_unmatchedNamedForwardReferences.contains(subpatternName);
&gt; 
&gt; All the other YARR callbacks are informative.  If you moved this check to
&gt; inside your implementation of atomNamedForwardReference, then YARR would
&gt; remain a parser with a nice interface.
&gt; Said another way, I don&apos;t think YARR should ask if it should inform the
&gt; delegate of something.  It should just inform the delegate and let the
&gt; delegate decide what to do with it.

The problem here is that the parser lacks the state information to determine if a RegExp construct is a syntax error or acceptable, and if acceptable how to process it.  We parse the expression once.  If there is some issues with forward references, we parse again using state from the first parsing.  The two parsings are completely independent and don&apos;t share state.  That has been the case long before this change.

If there are named forward references that don&apos;t have a subsequent named capture group, we shouldn&apos;t create a forward reference.  For Unicode patterns, it is a Syntax Error.  The more involved case is for non-unicode patterns where instead of processing as a forward reference, we treat the characters we parsed for the forward references as literal characters to match.  That logic needs to be in the parser as it has to restores parsing state, before creating the necessary character atoms.  Therefore this check cannot be in the implementation of atomNamedForwardReference unless atomNamedForwardReference informs the parser the result of the check.

The other way I considered writing this was to pass the parser an optional set of valid named forward references.  If that optional set is not provided all names are valid.  If there is a set it would contain the valid named groups.  I went with the isValidNamedForwardReference callback method as I believe that it more clearly describes what is specified in the ECMAScript standard.  The bottom line is that state needs to be shared between the parser and the YARR pattern delegate, either through callback results or arguments to the parser.

&gt; &gt; Source/WebCore/contentextensions/URLFilterParser.cpp:144
&gt; &gt; +        fail(URLFilterParser::ForwardReference);
&gt; 
&gt; Could you please add a test to the ContentExtensionTest.ParsingFailures test
&gt; to verify this can be hit?  I&apos;m assuming backwards compatibility isn&apos;t an
&gt; issue

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458155</commentid>
    <comment_count>9</comment_count>
      <attachid>349212</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-10 10:23:34 -0700</bug_when>
    <thetext>Comment on attachment 349212
Patch with suggested updates

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

&gt; Source/JavaScriptCore/yarr/YarrParser.h:433
&gt; +                        if (delegate.isValidNamedForwardReference(groupName.value())) {
&gt; +                            delegate.atomNamedForwardReference(groupName.value());

If you replaced these two lines with one line:
delegate.atomMaybeNamedForwardReference(groupName.value());

and in your delegate implementation, check if (!m_unmatchedNamedForwardReferences.contains(subpatternName)) ...
then it would behave identically and I believe it would be a better design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458311</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-09-10 16:45:33 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #9)
&gt; Comment on attachment 349212 [details]
&gt; Patch with suggested updates
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=349212&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/yarr/YarrParser.h:433
&gt; &gt; +                        if (delegate.isValidNamedForwardReference(groupName.value())) {
&gt; &gt; +                            delegate.atomNamedForwardReference(groupName.value());
&gt; 
&gt; If you replaced these two lines with one line:
&gt; delegate.atomMaybeNamedForwardReference(groupName.value());
&gt; 
&gt; and in your delegate implementation, check if
&gt; (!m_unmatchedNamedForwardReferences.contains(subpatternName)) ...
&gt; then it would behave identically and I believe it would be a better design.

Alex and I spoke in person and we agreed that the current structure although not as architecturally pure as one would like, it is the best alternative for performance and readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458312</commentid>
    <comment_count>11</comment_count>
      <attachid>349355</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-09-10 16:47:14 -0700</bug_when>
    <thetext>Created attachment 349355
Patch with updated ContentExtensionTest.ParsingFailures tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458315</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-10 16:48:53 -0700</bug_when>
    <thetext>Attachment 349355 did not pass style-queue:


ERROR: Source/JavaScriptCore/yarr/YarrSyntaxChecker.cpp:51:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/yarr/YarrSyntaxChecker.cpp:53:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458392</commentid>
    <comment_count>13</comment_count>
      <attachid>349355</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-10 21:37:40 -0700</bug_when>
    <thetext>Comment on attachment 349355
Patch with updated ContentExtensionTest.ParsingFailures tests

Rejecting attachment 349355 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 349355, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Traceback (most recent call last):
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&quot;, line 84, in &lt;module&gt;
    main()
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&quot;, line 79, in main
    WebKitPatch(os.path.abspath(__file__)).main()
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/tool/multicommandtool.py&quot;, line 305, in main
    result = command.check_arguments_and_execute(options, args, self)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/tool/multicommandtool.py&quot;, line 123, in check_arguments_and_execute
    return self.execute(options, args, tool) or 0
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/tool/commands/abstractsequencedcommand.py&quot;, line 55, in execute
    self._sequence.run_and_handle_errors(tool, options, state)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 73, in run_and_handle_errors
    self._run(tool, options, state)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 67, in _run
    step(tool, options).run(state)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py&quot;, line 54, in run
    if changelog_entry.has_valid_reviewer():
AttributeError: &apos;NoneType&apos; object has no attribute &apos;has_valid_reviewer&apos;

Full output: https://webkit-queues.webkit.org/results/9169100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458395</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-09-10 21:53:58 -0700</bug_when>
    <thetext>Committed r235882: &lt;https://trac.webkit.org/changeset/235882&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349187</attachid>
            <date>2018-09-07 14:03:35 -0700</date>
            <delta_ts>2018-09-07 15:55:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>189407.patch</filename>
            <type>text/plain</type>
            <size>21810</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzU4MDMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE4LTA5LTA3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIFRlc3QyNjIgZmFpbHVyZSB3aXRoIE5hbWVkIENhcHR1cmUgR3Jv
dXBzIC0gdXNpbmcgYSByZWZlcmVuY2UgYmVmb3JlIHRoZSBncm91cCBpcyBkZWZpbmVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk0MDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS1lbmFibGVkIHBy
ZXZpb3VzbHkgZmFpbGluZyB0ZXN0LgorCisgICAgICAgICogdGVzdDI2Mi55YW1sOgorICAgICAg
ICAqIHRlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKKwogMjAxOC0wOS0wNiAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgogCiAgICAgICAgIFtERkddIERGRyBzaG91
bGQgaGFuZGxlIFN0cmluZyN0b1N0cmluZwpJbmRleDogSlNUZXN0cy90ZXN0MjYyLnlhbWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy90ZXN0MjYyLnlhbWwJKHJldmlzaW9uIDIzNTc2MykKKysrIEpT
VGVzdHMvdGVzdDI2Mi55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC00MjE4MCw5ICs0MjE4MCw5IEBA
CiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy9ub24t
dW5pY29kZS1wcm9wZXJ0eS1uYW1lcy5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5v
RXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2NvbXBhcmVBcnJheS5qcyJd
LCBbOnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9SZWdFeHAvbmFtZWQt
Z3JvdXBzL25vbi11bmljb2RlLXJlZmVyZW5jZXMuanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWls
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvY29tcGFyZUFycmF5
LmpzIl0sIFtdCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvY29tcGFyZUFycmF5LmpzIl0sIFtdCiAtIHBhdGg6IHRl
c3QyNjIvdGVzdC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy9ub24tdW5pY29kZS1yZWZl
cmVuY2VzLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL2NvbXBhcmVBcnJheS5qcyJdLCBbOnN0cmljdF0KKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9jb21wYXJlQXJyYXkuanMiXSwgWzpzdHJpY3RdCiAtIHBhdGg6IHRlc3QyNjIvdGVz
dC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy9zdHJpbmctcmVwbGFjZS1lc2NhcGVkLmpz
CiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCiAt
IHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy9zdHJpbmct
cmVwbGFjZS1lc2NhcGVkLmpzCkBAIC00MjIyNCw5ICs0MjIyNCw5IEBACiAtIHBhdGg6IHRlc3Qy
NjIvdGVzdC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy91bmljb2RlLXByb3BlcnR5LW5h
bWVzLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
OnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9SZWdFeHAvbmFtZWQtZ3Jv
dXBzL3VuaWNvZGUtcmVmZXJlbmNlcy5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9jb21wYXJlQXJyYXkuanMiXSwg
W10KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9jb21wYXJlQXJyYXkuanMiXSwgW10KIC0gcGF0aDogdGVzdDI2Mi90
ZXN0L2J1aWx0LWlucy9SZWdFeHAvbmFtZWQtZ3JvdXBzL3VuaWNvZGUtcmVmZXJlbmNlcy5qcwot
ICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9jb21wYXJlQXJyYXkuanMiXSwgWzpzdHJpY3RdCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvY29t
cGFyZUFycmF5LmpzIl0sIFs6c3RyaWN0XQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5z
L1JlZ0V4cC9wcm9wZXJ0eS1lc2NhcGVzL2JpbmFyeS1wcm9wZXJ0aWVzLXdpdGgtdmFsdWUuanMK
ICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KIC0g
cGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9SZWdFeHAvcHJvcGVydHktZXNjYXBlcy9iaW5h
cnktcHJvcGVydGllcy13aXRoLXZhbHVlLmpzCkluZGV4OiBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0
YXRpb25zLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55
YW1sCShyZXZpc2lvbiAyMzU3NjMpCisrKyBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlh
bWwJKHdvcmtpbmcgY29weSkKQEAgLTExMjIsOSArMTEyMiw2IEBAIHRlc3QvYnVpbHQtaW5zL1Jl
Z0V4cC9uYW1lZC1ncm91cHMvZ3JvdXAKIHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9uYW1lZC1ncm91
cHMvbm9uLXVuaWNvZGUtbWFsZm9ybWVkLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBF
eHBlY3RlZCBhIFN5bnRheEVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24gYXQgYWxsJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBT
eW50YXhFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFs
bCcKLXRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9uYW1lZC1ncm91cHMvbm9uLXVuaWNvZGUtcmVmZXJl
bmNlcy5qczoKLSAgZGVmYXVsdDogIlR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdiLmxlbmd0aCcpIgotICBzdHJpY3QgbW9kZTogIlR5cGVFcnJvcjogbnVsbCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdiLmxlbmd0aCcpIgogdGVzdC9idWlsdC1pbnMv
UmVnRXhwL25hbWVkLWdyb3Vwcy9zdHJpbmctcmVwbGFjZS1ub2NhcHR1cmVzLmpzOgogICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUow4LCqyQ8c25kPiQ8ZnN0PmNk
w4LCuywgw4LCqyQ8JDxmc3Q+Y2TDgsK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMOCwqskPHNuZD4kPGZzdD5jZMOCwrssIMOC
wqskPCQ8ZnN0PmNkw4LCuykgdG8gYmUgdHJ1ZScKQEAgLTExMzQsOSArMTEzMSw2IEBAIHRlc3Qv
YnVpbHQtaW5zL1JlZ0V4cC9uYW1lZC1ncm91cHMvdW5pY28KIHRlc3QvYnVpbHQtaW5zL1JlZ0V4
cC9uYW1lZC1ncm91cHMvdW5pY29kZS1wcm9wZXJ0eS1uYW1lcy5qczoKICAgZGVmYXVsdDogJ1N5
bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogaW52YWxpZCBncm91cCBzcGVj
aWZpZXIgbmFtZScKICAgc3RyaWN0IG1vZGU6ICdTeW50YXhFcnJvcjogSW52YWxpZCByZWd1bGFy
IGV4cHJlc3Npb246IGludmFsaWQgZ3JvdXAgc3BlY2lmaWVyIG5hbWUnCi10ZXN0L2J1aWx0LWlu
cy9SZWdFeHAvbmFtZWQtZ3JvdXBzL3VuaWNvZGUtcmVmZXJlbmNlcy5qczoKLSAgZGVmYXVsdDog
J1N5bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogaW52YWxpZCBiYWNrcmVm
ZXJlbmNlIGZvciB1bmljb2RlIHBhdHRlcm4nCi0gIHN0cmljdCBtb2RlOiAnU3ludGF4RXJyb3I6
IEludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBpbnZhbGlkIGJhY2tyZWZlcmVuY2UgZm9yIHVu
aWNvZGUgcGF0dGVybicKIHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9wcm90by1mcm9tLWN0b3ItcmVh
bG0uanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjDgsKr
Lyg/Oikvw4LCuywgw4LCqy8oPzopL8OCwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUow4LCqy8oPzopL8OCwrssIMOCwqsvKD86
KS/DgsK7KSB0byBiZSB0cnVlJwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMzU3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTgtMDktMDcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9m
ZkBhcHBsZS5jb20+CisKKyAgICAgICAgVGVzdDI2MiBmYWlsdXJlIHdpdGggTmFtZWQgQ2FwdHVy
ZSBHcm91cHMgLSB1c2luZyBhIHJlZmVyZW5jZSBiZWZvcmUgdGhlIGdyb3VwIGlzIGRlZmluZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTQwNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGNv
ZGUgdG8gc2F2ZSB0aGUgbmFtZWQgZm9yd2FyZCByZWZlcmVuY2VzIHdlIHNlZSBkdXJpbmcgcGFy
c2luZyBhbmQgdmFsaWRhdGluZyB0aGF0CisgICAgICAgIHRoZXkgYXJlIGFsbCBwcmVzZW50IHdo
ZW4gcGFyc2luZyB0aGUgUmVnRXhwIGlzIGNvbXBsZXRlLiAgSWYgdGhlcmUgYXJlIHVubmFtZWQg
cmVmZXJlbmNlcywKKyAgICAgICAgd2UgcmVwYXJzZSB3aXRoIHNvbWUgdmFyaWF0aW9uIG9mIGJl
aGF2aW9yLiAgSnVzdCBsaWtlIGZvciBudW1lcmljIHJlZmVyZW5jZXMsIHRoZQorICAgICAgICBi
ZWhhdmlvciBpcyBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHdoZXRoZXIgb3Igbm90IHRoZSB1bmlj
b2RlICh1IGZsYWcpIGlzIHByZXNlbnQuICAKKyAgICAgICAgRm9yIG5vbi11bmljb2RlIHBhdHRl
cm5zLCB3ZSB0cmVhdCB0aGUgXGs8Li4uPiBhcyBhIGxpdGVyYWwgcGF0dGVybi4gIEZvciBhIHVu
aWNvZGUgCisgICAgICAgIHBhdHRlcm4gd2UgdGhyb3cgYW4gZXhjZXB0aW9uLgorCisgICAgICAg
IERpZCBzb21lIHJlZmFjdG9yaW5nLCByZW5hbWluZyBZYXJyUGF0dGVybjo6cmVzZXQoKSBhbmQg
WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXQoKQorICAgICAgICByZXNldEZvclJlcGFyc2lu
ZygpIGFzIHRoYXQgaXMgdGhlIG9ubHkgdXNlIGZvciB0aG9zZSBtZXRob2RzLgorCisgICAgICAg
ICogeWFyci9ZYXJyUGFyc2VyLmg6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6Q2hhcmFj
dGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZTo6aXNWYWxpZE5hbWVkRm9yd2FyZFJlZmVyZW5jZSk6Cisg
ICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6Q2hhcmFjdGVyQ2xhc3NQYXJzZXJEZWxlZ2F0ZTo6
YXRvbU5hbWVkRm9yd2FyZFJlZmVyZW5jZSk6CisgICAgICAgIChKU0M6OllhcnI6OlBhcnNlcjo6
cGFyc2VFc2NhcGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpyZXNldEZvclJlcGFyc2luZyk6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OnNhdmVVbm1hdGNoZWRO
YW1lZEZvcndhcmRSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5D
b25zdHJ1Y3Rvcjo6aXNWYWxpZE5hbWVkRm9yd2FyZFJlZmVyZW5jZSk6CisgICAgICAgIChKU0M6
OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OmF0b21OYW1lZEZvcndhcmRSZWZlcmVuY2Up
OgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6Y29tcGlsZSk6CisgICAgICAgIChK
U0M6OllhcnI6OllhcnJQYXR0ZXJuOjpZYXJyUGF0dGVybik6CisgICAgICAgIChKU0M6OllhcnI6
OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiB5YXJy
L1lhcnJQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpyZXNldEZv
clJlcGFyc2luZyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpjb250YWluc0ls
bGVnYWxOYW1lZEZvcndhcmRSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBh
dHRlcm46OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiB5YXJyL1lhcnJTeW50YXhDaGVja2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6U3ludGF4Q2hlY2tlcjo6aXNWYWxpZE5hbWVkRm9y
d2FyZFJlZmVyZW5jZSk6CisgICAgICAgIChKU0M6OllhcnI6OlN5bnRheENoZWNrZXI6OmF0b21O
YW1lZEZvcndhcmRSZWZlcmVuY2UpOgorCiAyMDE4LTA5LTA2ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IG9ubHkgdmlzaXQgbV9jYWNoZWRTdHJ1
Y3R1cmVJRCBpZiBpdCdzIG5vdCBudWxsLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJQYXJzZXIuaAkocmV2aXNpb24gMjM1NzYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNiArMTk1LDggQEAgcHJp
dmF0ZToKICAgICAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhc3NlcnRpb25Xb3Jk
Qm91bmRhcnkoYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgICAg
IE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgYXRvbUJhY2tSZWZlcmVuY2UodW5zaWduZWQp
IHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgICAgICBOT19SRVRVUk5fRFVF
X1RPX0FTU0VSVCB2b2lkIGF0b21OYW1lZEJhY2tSZWZlcmVuY2UoU3RyaW5nKSB7IFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQg
Ym9vbCBpc1ZhbGlkTmFtZWRGb3J3YXJkUmVmZXJlbmNlKFN0cmluZykgeyBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQg
YXRvbU5hbWVkRm9yd2FyZFJlZmVyZW5jZShTdHJpbmcpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRGVsZWdhdGUmIG1fZGVsZWdhdGU7
CkBAIC00MjEsOSArNDIzLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoIWF0RW5kT2ZQ
YXR0ZXJuKCkgJiYgIWluQ2hhcmFjdGVyQ2xhc3MpIHsKICAgICAgICAgICAgICAgICBpZiAoY29u
c3VtZSgpID09ICc8JykgewogICAgICAgICAgICAgICAgICAgICBhdXRvIGdyb3VwTmFtZSA9IHRy
eUNvbnN1bWVHcm91cE5hbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGdyb3VwTmFtZSAm
JiBtX2NhcHR1cmVHcm91cE5hbWVzLmNvbnRhaW5zKGdyb3VwTmFtZS52YWx1ZSgpKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGUuYXRvbU5hbWVkQmFja1JlZmVyZW5jZShncm91
cE5hbWUudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGdyb3VwTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fY2FwdHVyZUdyb3VwTmFtZXMuY29udGFpbnMoZ3JvdXBOYW1lLnZhbHVlKCkpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGUuYXRvbU5hbWVkQmFja1JlZmVyZW5jZShn
cm91cE5hbWUudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChkZWxlZ2F0ZS5pc1ZhbGlkTmFtZWRGb3J3YXJkUmVmZXJl
bmNlKGdyb3VwTmFtZS52YWx1ZSgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
bGVnYXRlLmF0b21OYW1lZEZvcndhcmRSZWZlcmVuY2UoZ3JvdXBOYW1lLnZhbHVlKCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2lzVW5p
Y29kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnJvckNvZGUgPSBFcnJvckNvZGU6
OkludmFsaWRCYWNrcmVmZXJlbmNlOwpAQCAtMTEzNyw2ICsxMTQ2LDggQEAgcHJpdmF0ZToKICAq
ICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzRW5kKCk7CiAgKiAgICB2b2lkIGF0b21CYWNrUmVmZXJl
bmNlKHVuc2lnbmVkIHN1YnBhdHRlcm5JZCk7CiAgKiAgICB2b2lkIGF0b21OYW1lZEJhY2tSZWZl
cmVuY2UoU3RyaW5nIHN1YnBhdHRlcm5OYW1lKTsKKyAqICAgIGJvb2wgaXNWYWxpZE5hbWVkRm9y
d2FyZFJlZmVyZW5jZShTdHJpbmcgc3VicGF0dGVybk5hbWUpOworICogICAgdm9pZCBhdG9tTmFt
ZWRGb3J3YXJkUmVmZXJlbmNlKFN0cmluZyBzdWJwYXR0ZXJuTmFtZSk7CiAgKgogICogICAgdm9p
ZCBxdWFudGlmeUF0b20odW5zaWduZWQgbWluLCB1bnNpZ25lZCBtYXgsIGJvb2wgZ3JlZWR5KTsK
ICAqCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCShy
ZXZpc2lvbiAyMzU3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVy
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0Niw5ICs0NDYsOSBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAotICAgIHZvaWQgcmVzZXQoKQorICAgIHZvaWQgcmVzZXRGb3JSZXBhcnNpbmcoKQog
ICAgIHsKLSAgICAgICAgbV9wYXR0ZXJuLnJlc2V0KCk7CisgICAgICAgIG1fcGF0dGVybi5yZXNl
dEZvclJlcGFyc2luZygpOwogICAgICAgICBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IucmVz
ZXQoKTsKIAogICAgICAgICBhdXRvIGJvZHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNq
dW5jdGlvbj4oKTsKQEAgLTQ1Niw3ICs0NTYsMTcgQEAgcHVibGljOgogICAgICAgICBtX2FsdGVy
bmF0aXZlID0gYm9keS0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1f
ZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGJvZHkpKTsKICAgICB9Ci0gICAgCisKKyAgICB2
b2lkIHNhdmVVbm1hdGNoZWROYW1lZEZvcndhcmRSZWZlcmVuY2VzKCkKKyAgICB7CisgICAgICAg
IG1faW52YWxpZE5hbWVkRm9yd2FyZFJlZmVyZW5jZXMuc2hyaW5rKDApOworICAgICAgICAKKyAg
ICAgICAgZm9yIChhdXRvIGl0ID0gbV9wYXR0ZXJuLm1fbmFtZWRGb3J3YXJkUmVmZXJlbmNlcy5i
ZWdpbigpLCBpdEVuZCA9IG1fcGF0dGVybi5tX25hbWVkRm9yd2FyZFJlZmVyZW5jZXMuZW5kKCk7
IGl0IDwgaXRFbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fY2FwdHVy
ZUdyb3VwTmFtZXMuY29udGFpbnMoKml0KSkKKyAgICAgICAgICAgICAgICBtX2ludmFsaWROYW1l
ZEZvcndhcmRSZWZlcmVuY2VzLmFwcGVuZCgqaXQpOworICAgICAgICB9CisgICAgfQorCiAgICAg
dm9pZCBhc3NlcnRpb25CT0woKQogICAgIHsKICAgICAgICAgaWYgKCFtX2FsdGVybmF0aXZlLT5t
X3Rlcm1zLnNpemUoKSAmJiAhbV9pbnZlcnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSB7CkBAIC02
NzIsNiArNjgyLDIwIEBAIHB1YmxpYzoKICAgICAgICAgYXRvbUJhY2tSZWZlcmVuY2UobV9wYXR0
ZXJuLm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5nZXQoc3VicGF0dGVybk5hbWUpKTsKICAgICB9
CiAKKyAgICBib29sIGlzVmFsaWROYW1lZEZvcndhcmRSZWZlcmVuY2UoU3RyaW5nIHN1YnBhdHRl
cm5OYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2ludmFsaWROYW1lZEZvcndhcmRSZWZlcmVu
Y2VzLmZpbmQoc3VicGF0dGVybk5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHZvaWQgYXRvbU5hbWVkRm9yd2FyZFJl
ZmVyZW5jZShTdHJpbmcgc3VicGF0dGVybk5hbWUpCisgICAgeworICAgICAgICBtX3BhdHRlcm4u
bV9uYW1lZEZvcndhcmRSZWZlcmVuY2VzLmFwcGVuZElmTm90Q29udGFpbnMoc3VicGF0dGVybk5h
bWUpOworICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0ZXJuVGVybTo6
Rm9yd2FyZFJlZmVyZW5jZSgpKTsKKyAgICB9CisgICAgCiAgICAgLy8gZGVlcCBjb3B5IHRoZSBh
cmd1bWVudCBkaXNqdW5jdGlvbi4gIElmIGZpbHRlclN0YXJ0c1dpdGhCT0wgaXMgdHJ1ZSwKICAg
ICAvLyBza2lwIGFsdGVybmF0aXZlcyB3aXRoIG1fc3RhcnRzV2l0aEJPTCBzZXQgdHJ1ZS4KICAg
ICBQYXR0ZXJuRGlzanVuY3Rpb24qIGNvcHlEaXNqdW5jdGlvbihQYXR0ZXJuRGlzanVuY3Rpb24q
IGRpc2p1bmN0aW9uLCBib29sIGZpbHRlclN0YXJ0c1dpdGhCT0wgPSBmYWxzZSkKQEAgLTEwODAs
NiArMTEwNCw3IEBAIHByaXZhdGU6CiAgICAgWWFyclBhdHRlcm4mIG1fcGF0dGVybjsKICAgICBQ
YXR0ZXJuQWx0ZXJuYXRpdmUqIG1fYWx0ZXJuYXRpdmU7CiAgICAgQ2hhcmFjdGVyQ2xhc3NDb25z
dHJ1Y3RvciBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3I7CisgICAgVmVjdG9yPFN0cmluZz4g
bV9pbnZhbGlkTmFtZWRGb3J3YXJkUmVmZXJlbmNlczsKICAgICB2b2lkKiBtX3N0YWNrTGltaXQ7
CiAgICAgYm9vbCBtX2ludmVydENoYXJhY3RlckNsYXNzOwogICAgIGJvb2wgbV9pbnZlcnRQYXJl
bnRoZXRpY2FsQXNzZXJ0aW9uIHsgZmFsc2UgfTsKQEAgLTExMDIsMTMgKzExMjcsMTQgQEAgRXJy
b3JDb2RlIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0IFN0cgogICAgIC8vIFF1b3RpbmcgTmV0
c2NhcGUncyAiV2hhdCdzIG5ldyBpbiBKYXZhU2NyaXB0IDEuMiIsCiAgICAgLy8gICAgICAiTm90
ZTogaWYgdGhlIG51bWJlciBvZiBsZWZ0IHBhcmVudGhlc2VzIGlzIGxlc3MgdGhhbiB0aGUgbnVt
YmVyIHNwZWNpZmllZAogICAgIC8vICAgICAgIGluIFwjLCB0aGUgXCMgaXMgdGFrZW4gYXMgYW4g
b2N0YWwgZXNjYXBlIGFzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCByb3cuIgotICAgIGlmIChjb250
YWluc0lsbGVnYWxCYWNrUmVmZXJlbmNlKCkpIHsKKyAgICBpZiAoY29udGFpbnNJbGxlZ2FsQmFj
a1JlZmVyZW5jZSgpIHx8IGNvbnRhaW5zSWxsZWdhbE5hbWVkRm9yd2FyZFJlZmVyZW5jZXMoKSkg
ewogICAgICAgICBpZiAodW5pY29kZSgpKQogICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZTo6
SW52YWxpZEJhY2tyZWZlcmVuY2U7CiAKICAgICAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMg
PSBtX251bVN1YnBhdHRlcm5zOwogCi0gICAgICAgIGNvbnN0cnVjdG9yLnJlc2V0KCk7CisgICAg
ICAgIGNvbnN0cnVjdG9yLnNhdmVVbm1hdGNoZWROYW1lZEZvcndhcmRSZWZlcmVuY2VzKCk7Cisg
ICAgICAgIGNvbnN0cnVjdG9yLnJlc2V0Rm9yUmVwYXJzaW5nKCk7CiAgICAgICAgIEVycm9yQ29k
ZSBlcnJvciA9IHBhcnNlKGNvbnN0cnVjdG9yLCBwYXR0ZXJuU3RyaW5nLCB1bmljb2RlKCksIG51
bVN1YnBhdHRlcm5zKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChlcnJvciwgIWhhc0Vycm9yKGVy
cm9yKSk7CiAgICAgICAgIEFTU0VSVChudW1TdWJwYXR0ZXJucyA9PSBtX251bVN1YnBhdHRlcm5z
KTsKQEAgLTExMzksNiArMTE2NSw3IEBAIFlhcnJQYXR0ZXJuOjpZYXJyUGF0dGVybihjb25zdCBT
dHJpbmcmIHAKICAgICAsIG1fZmxhZ3MoZmxhZ3MpCiB7CiAgICAgZXJyb3IgPSBjb21waWxlKHBh
dHRlcm4sIHN0YWNrTGltaXQpOworICAgIC8vICAmJiYmCiB9CiAKIHZvaWQgaW5kZW50Rm9yTmVz
dGluZ0xldmVsKFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIG5lc3RpbmdEZXB0aCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkocmV2aXNpb24gMjM1NzYz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkod29ya2luZyBj
b3B5KQpAQCAtMzU0LDcgKzM1NCw3IEBAIHN0cnVjdCBUZXJtQ2hhaW4gewogc3RydWN0IFlhcnJQ
YXR0ZXJuIHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBZYXJyUGF0dGVybihjb25zdCBTdHJpbmcm
IHBhdHRlcm4sIFJlZ0V4cEZsYWdzLCBFcnJvckNvZGUmLCB2b2lkKiBzdGFja0xpbWl0ID0gbnVs
bHB0cik7CiAKLSAgICB2b2lkIHJlc2V0KCkKKyAgICB2b2lkIHJlc2V0Rm9yUmVwYXJzaW5nKCkK
ICAgICB7CiAgICAgICAgIG1fbnVtU3VicGF0dGVybnMgPSAwOwogICAgICAgICBtX21heEJhY2tS
ZWZlcmVuY2UgPSAwOwpAQCAtMzgxLDEyICszODEsMjggQEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsK
ICAgICAgICAgbV9kaXNqdW5jdGlvbnMuY2xlYXIoKTsKICAgICAgICAgbV91c2VyQ2hhcmFjdGVy
Q2xhc3Nlcy5jbGVhcigpOwogICAgICAgICBtX2NhcHR1cmVHcm91cE5hbWVzLnNocmluaygwKTsK
KyAgICAgICAgbV9uYW1lZEZvcndhcmRSZWZlcmVuY2VzLnNocmluaygwKTsKICAgICB9CiAKICAg
ICBib29sIGNvbnRhaW5zSWxsZWdhbEJhY2tSZWZlcmVuY2UoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fbWF4QmFja1JlZmVyZW5jZSA+IG1fbnVtU3VicGF0dGVybnM7CiAgICAgfQorICAgIAor
ICAgIGJvb2wgY29udGFpbnNJbGxlZ2FsTmFtZWRGb3J3YXJkUmVmZXJlbmNlcygpCisgICAgewor
ICAgICAgICBpZiAobV9uYW1lZEZvcndhcmRSZWZlcmVuY2VzLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNlOworCisgICAg
ICAgIGZvciAoYXV0byBpdCA9IG1fbmFtZWRGb3J3YXJkUmVmZXJlbmNlcy5iZWdpbigpLCBpdEVu
ZCA9IG1fbmFtZWRGb3J3YXJkUmVmZXJlbmNlcy5lbmQoKTsgaXQgPCBpdEVuZDsgKytpdCkgewor
ICAgICAgICAgICAgaWYgKCFtX2NhcHR1cmVHcm91cE5hbWVzLmNvbnRhaW5zKCppdCkpCisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQogCiAgICAgYm9vbCBjb250YWluc1Vuc2lnbmVkTGVuZ3RoUGF0dGVybigp
CiAgICAgewpAQCAtNTEzLDYgKzUyOSw3IEBAIHN0cnVjdCBZYXJyUGF0dGVybiB7CiAgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxQYXR0ZXJuRGlzanVuY3Rpb24+LCA0PiBtX2Rpc2p1bmN0aW9u
czsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPj4gbV91c2VyQ2hh
cmFjdGVyQ2xhc3NlczsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2NhcHR1cmVHcm91cE5hbWVzOwor
ICAgIFZlY3RvcjxTdHJpbmc+IG1fbmFtZWRGb3J3YXJkUmVmZXJlbmNlczsKICAgICBIYXNoTWFw
PFN0cmluZywgdW5zaWduZWQ+IG1fbmFtZWRHcm91cFRvUGFyZW5JbmRleDsKIAogcHJpdmF0ZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhDaGVja2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tl
ci5jcHAJKHJldmlzaW9uIDIzNTc2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJTeW50YXhDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNFbmQoKSB7fQogICAgIHZvaWQgYXRvbUJhY2tS
ZWZlcmVuY2UodW5zaWduZWQpIHt9CiAgICAgdm9pZCBhdG9tTmFtZWRCYWNrUmVmZXJlbmNlKFN0
cmluZykge30KKyAgICBib29sIGlzVmFsaWROYW1lZEZvcndhcmRSZWZlcmVuY2UoU3RyaW5nKSB7
IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBhdG9tTmFtZWRGb3J3YXJkUmVmZXJlbmNlKFN0cmlu
Zykge30KICAgICB2b2lkIHF1YW50aWZ5QXRvbSh1bnNpZ25lZCwgdW5zaWduZWQsIGJvb2wpIHt9
CiAgICAgdm9pZCBkaXNqdW5jdGlvbigpIHt9CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjM1NzYzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTgtMDktMDcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5j
b20+CisKKyAgICAgICAgVGVzdDI2MiBmYWlsdXJlIHdpdGggTmFtZWQgQ2FwdHVyZSBHcm91cHMg
LSB1c2luZyBhIHJlZmVyZW5jZSBiZWZvcmUgdGhlIGdyb3VwIGlzIGRlZmluZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTQwNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZWQgbmV3IGRlbGVn
YXRlIHN0dWJzIGZvciBSZWdFeHAgcGFyc2luZy4gIFRoZXNlIGFyZSBub3QgbmVlZGVkIGZvciB0
aGUgVVJMCisgICAgICAgIGZpbHRlcmluZyB1c2UgY2FzZXMuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBubyBmdW5jdGlvbmFsaXR5IGNoYW5nZWQuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5z
aW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OlBhdHRlcm5QYXJzZXI6OmlzVmFsaWROYW1lZEZvcndhcmRSZWZlcmVuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlBhdHRlcm5QYXJzZXI6OmF0b21OYW1l
ZEZvcndhcmRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OlVSTEZpbHRlclBhcnNlcjo6c3RhdHVzU3RyaW5nKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5z
aW9ucy9VUkxGaWx0ZXJQYXJzZXIuaDoKKwogMjAxOC0wOS0wNiAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0JGQ10gQWRkIHN1cHBvcnQgZm9yIG1pbiht
YXgpLWhlaWdodApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmls
dGVyUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzU3NjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzQsNiArMTM0LDE2IEBAIHB1YmxpYzoKICAgICAgICAgZmFpbChVUkxGaWx0ZXJQYXJz
ZXI6OkJhY2tSZWZlcmVuY2UpOwogICAgIH0KIAorICAgIGJvb2wgaXNWYWxpZE5hbWVkRm9yd2Fy
ZFJlZmVyZW5jZShTdHJpbmcpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICB2b2lkIGF0b21OYW1lZEZvcndhcmRSZWZlcmVuY2UoU3RyaW5nKQorICAgIHsKKyAgICAg
ICAgZmFpbChVUkxGaWx0ZXJQYXJzZXI6OkZvcndhcmRSZWZlcmVuY2UpOworICAgIH0KKyAgICAK
ICAgICB2b2lkIGFzc2VydGlvbkJPTCgpCiAgICAgewogICAgICAgICBpZiAoaGFzRXJyb3IoKSkK
QEAgLTM3Miw2ICszODIsOCBAQCBTdHJpbmcgVVJMRmlsdGVyUGFyc2VyOjpzdGF0dXNTdHJpbmco
UGFyCiAgICAgICAgIHJldHVybiAiQ2hhcmFjdGVyIGNsYXNzIGlzIG5vdCBzdXBwb3J0ZWQuIjsK
ICAgICBjYXNlIEJhY2tSZWZlcmVuY2U6CiAgICAgICAgIHJldHVybiAiUGF0dGVybnMgY2Fubm90
IGNvbnRhaW4gYmFja3JlZmVyZW5jZXMuIjsKKyAgICBjYXNlIEZvcndhcmRSZWZlcmVuY2U6Cisg
ICAgICAgIHJldHVybiAiUGF0dGVybnMgY2Fubm90IGNvbnRhaW4gZm9yd2FyZCByZWZlcmVuY2Vz
LiI7CiAgICAgY2FzZSBNaXNwbGFjZWRTdGFydE9mTGluZToKICAgICAgICAgcmV0dXJuICJTdGFy
dCBvZiBsaW5lIGFzc2VydGlvbiBjYW4gb25seSBhcHBlYXIgYXMgdGhlIGZpcnN0IHRlcm0gaW4g
YSBmaWx0ZXIuIjsKICAgICBjYXNlIFdvcmRCb3VuZGFyeToKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5oCShyZXZpc2lvbiAy
MzU3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJz
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIE5v
bkFTQ0lJLAogICAgICAgICBVbnN1cHBvcnRlZENoYXJhY3RlckNsYXNzLAogICAgICAgICBCYWNr
UmVmZXJlbmNlLAorICAgICAgICBGb3J3YXJkUmVmZXJlbmNlLAogICAgICAgICBNaXNwbGFjZWRT
dGFydE9mTGluZSwKICAgICAgICAgV29yZEJvdW5kYXJ5LAogICAgICAgICBBdG9tQ2hhcmFjdGVy
LApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gMjM1NzYzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDktMDcgIE1pY2hhZWwgU2Fib2Zm
ICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgVGVzdDI2MiBmYWlsdXJlIHdpdGggTmFt
ZWQgQ2FwdHVyZSBHcm91cHMgLSB1c2luZyBhIHJlZmVyZW5jZSBiZWZvcmUgdGhlIGdyb3VwIGlz
IGRlZmluZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4OTQwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZWQgdGVzdHMuCisKKyAgICAgICAgKiBqcy9yZWdleHAtbmFtZWQtY2FwdHVyZS1ncm91
cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9yZWdleHAtbmFtZWQt
Y2FwdHVyZS1ncm91cHMuanM6CisKIDIwMTgtMDktMDYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtCRkNdIEFkZCBzdXBwb3J0IGZvciBtaW4obWF4KS1o
ZWlnaHQKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVnZXhwLW5hbWVkLWNh
cHR1cmUtZ3JvdXBzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjM1NzYzKQorKysgTGF5b3V0VGVz
dHMvanMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNiArNjEsMTIgQEAgUEFTUyBsZXQgciA9IG5ldyBSZWdFeHAoIi8oPzzwkIaQ
Z3JvdXBOYQogUEFTUyBsZXQgciA9IG5ldyBSZWdFeHAoIi8oPzxn8JCGm291cE5hbWUxPmFiYykv
dSIpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSW52YWxpZCByZWd1bGFyIGV4cHJlc3Np
b246IGludmFsaWQgZ3JvdXAgc3BlY2lmaWVyIG5hbWUuCiBQQVNTIGxldCByID0gbmV3IFJlZ0V4
cCgiLyg/POKAjGdyb3VwTmFtZTE+YWJjKS91IikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogaW52YWxpZCBncm91cCBzcGVjaWZpZXIgbmFt
ZS4KIFBBU1MgbGV0IHIgPSBuZXcgUmVnRXhwKCIvKD884oCNZ3JvdXBOYW1lMT5hYmMpL3UiKSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBp
bnZhbGlkIGdyb3VwIHNwZWNpZmllciBuYW1lLgorUEFTUyAiWHp6WHp6Ii5tYXRjaCgvXGs8ej5Y
KD88ej56KilYXGs8ej4vKSBpcyBbIlh6elh6eiIsICJ6eiJdCitQQVNTICJYenpYenoiLm1hdGNo
KC9cazx6PlgoPzx6PnoqKVhcazx6Pi91KSBpcyBbIlh6elh6eiIsICJ6eiJdCitQQVNTICIxMTIy
MzMyMjExIi5tYXRjaCgvXGs8b25lcz5cazx0d29zPlxrPHRocmVlcz4oPzxvbmVzPjEqKSg/PHR3
b3M+MiopKD88dGhyZWVzPjMqKVxrPHRocmVlcz5cazx0d29zPlxrPG9uZXM+LykgaXMgWyIxMTIy
MzMyMjExIiwgIjExIiwgIjIyIiwgIjMiXQorUEFTUyAiMTEyMjMzMjIxMSIubWF0Y2goL1xrPG9u
ZXM+XGs8dHdvcz5cazx0aHJlZXM+KD88b25lcz4xKikoPzx0d29zPjIqKSg/PHRocmVlcz4zKilc
azx0aHJlZXM+XGs8dHdvcz5cazxvbmVzPi91KSBpcyBbIjExMjIzMzIyMTEiLCAiMTEiLCAiMjIi
LCAiMyJdCitQQVNTICJcazx6Plh6elgiLm1hdGNoKC9cazx6PlgoeiopWC8pIGlzIFsiazx6Plh6
elgiLCAienoiXQorUEFTUyAiXGs8ej5YenpYIi5tYXRjaCgvXGs8ej5YKHoqKVgvdSkgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogaW52YWxp
ZCBiYWNrcmVmZXJlbmNlIGZvciB1bmljb2RlIHBhdHRlcm4uCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9yZWdleHAtbmFtZWQtY2FwdHVyZS1ncm91cHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy5qcwko
cmV2aXNpb24gMjM1NzYzKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1u
YW1lZC1jYXB0dXJlLWdyb3Vwcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTA0LDMgKzEwNCwxMyBA
QCBzaG91bGRUaHJvdygnbGV0IHIgPSBuZXcgUmVnRXhwKCIvKD88Z1x1CiBzaG91bGRUaHJvdygn
bGV0IHIgPSBuZXcgUmVnRXhwKCIvKD88XHUyMDBjZ3JvdXBOYW1lMT5hYmMpL3UiKScsICciU3lu
dGF4RXJyb3I6IEludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBpbnZhbGlkIGdyb3VwIHNwZWNp
ZmllciBuYW1lIicpOwogc2hvdWxkVGhyb3coJ2xldCByID0gbmV3IFJlZ0V4cCgiLyg/PFx1MjAw
ZGdyb3VwTmFtZTE+YWJjKS91IiknLCAnIlN5bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIgZXhw
cmVzc2lvbjogaW52YWxpZCBncm91cCBzcGVjaWZpZXIgbmFtZSInKTsKIAorLy8gQ2hlY2sgdGhl
IG5hbWVkIGZvcndhcmQgcmVmZXJlbmNlcyB3b3JrCitzaG91bGRCZSgnIlh6elh6eiIubWF0Y2go
L1xcXGs8ej5YKD88ej56KilYXFxcazx6Pi8pJywgJ1siWHp6WHp6IiwgInp6Il0nKTsKK3Nob3Vs
ZEJlKCciWHp6WHp6Ii5tYXRjaCgvXFxcazx6PlgoPzx6PnoqKVhcXFxrPHo+L3UpJywgJ1siWHp6
WHp6IiwgInp6Il0nKTsKK3Nob3VsZEJlKCciMTEyMjMzMjIxMSIubWF0Y2goL1xcXGs8b25lcz5c
XFxrPHR3b3M+XFxcazx0aHJlZXM+KD88b25lcz4xKikoPzx0d29zPjIqKSg/PHRocmVlcz4zKilc
XFxrPHRocmVlcz5cXFxrPHR3b3M+XFxcazxvbmVzPi8pJywgJ1siMTEyMjMzMjIxMSIsICIxMSIs
ICIyMiIsICIzIl0nKTsKK3Nob3VsZEJlKCciMTEyMjMzMjIxMSIubWF0Y2goL1xcXGs8b25lcz5c
XFxrPHR3b3M+XFxcazx0aHJlZXM+KD88b25lcz4xKikoPzx0d29zPjIqKSg/PHRocmVlcz4zKilc
XFxrPHRocmVlcz5cXFxrPHR3b3M+XFxcazxvbmVzPi91KScsICdbIjExMjIzMzIyMTEiLCAiMTEi
LCAiMjIiLCAiMyJdJyk7CisKKy8vIENoZWNrIHRoYXQgYSBuYW1lZCBmb3J3YXJkIHJlZmVyZW5j
ZSBmb3IgYSBub24tZXhpc3RlbnQgbmFtZWQgY2FwdHVyZQorLy8gbWF0Y2hlcyBmb3Igbm9uLXVu
aWNvZGUgcGF0dGVybnMgYW5kIHRocm93cyBmb3IgdW5pY29kZSBwYXR0ZXJucy4KK3Nob3VsZEJl
KCciXFxcazx6Plh6elgiLm1hdGNoKC9cXFxrPHo+WCh6KilYLyknLCAnWyJrPHo+WHp6WCIsICJ6
eiJdJyk7CitzaG91bGRUaHJvdygnIlxcXGs8ej5YenpYIi5tYXRjaCgvXFxcazx6PlgoeiopWC91
KScsICciU3ludGF4RXJyb3I6IEludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBpbnZhbGlkIGJh
Y2tyZWZlcmVuY2UgZm9yIHVuaWNvZGUgcGF0dGVybiInKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349212</attachid>
            <date>2018-09-07 15:55:01 -0700</date>
            <delta_ts>2018-09-10 16:47:14 -0700</delta_ts>
            <desc>Patch with suggested updates</desc>
            <filename>189407-2.patch</filename>
            <type>text/plain</type>
            <size>22820</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzU4MTIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE4LTA5LTA3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIFRlc3QyNjIgZmFpbHVyZSB3aXRoIE5hbWVkIENhcHR1cmUgR3Jv
dXBzIC0gdXNpbmcgYSByZWZlcmVuY2UgYmVmb3JlIHRoZSBncm91cCBpcyBkZWZpbmVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk0MDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS1lbmFibGVkIHBy
ZXZpb3VzbHkgZmFpbGluZyB0ZXN0LgorCisgICAgICAgICogdGVzdDI2Mi55YW1sOgorICAgICAg
ICAqIHRlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKKwogMjAxOC0wOS0wNiAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgogCiAgICAgICAgIFtERkddIERGRyBzaG91
bGQgaGFuZGxlIFN0cmluZyN0b1N0cmluZwpJbmRleDogSlNUZXN0cy90ZXN0MjYyLnlhbWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy90ZXN0MjYyLnlhbWwJKHJldmlzaW9uIDIzNTc2MykKKysrIEpT
VGVzdHMvdGVzdDI2Mi55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC00MjE4MCw5ICs0MjE4MCw5IEBA
CiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy9ub24t
dW5pY29kZS1wcm9wZXJ0eS1uYW1lcy5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5v
RXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2NvbXBhcmVBcnJheS5qcyJd
LCBbOnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9SZWdFeHAvbmFtZWQt
Z3JvdXBzL25vbi11bmljb2RlLXJlZmVyZW5jZXMuanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWls
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvY29tcGFyZUFycmF5
LmpzIl0sIFtdCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvY29tcGFyZUFycmF5LmpzIl0sIFtdCiAtIHBhdGg6IHRl
c3QyNjIvdGVzdC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy9ub24tdW5pY29kZS1yZWZl
cmVuY2VzLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL2NvbXBhcmVBcnJheS5qcyJdLCBbOnN0cmljdF0KKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9jb21wYXJlQXJyYXkuanMiXSwgWzpzdHJpY3RdCiAtIHBhdGg6IHRlc3QyNjIvdGVz
dC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy9zdHJpbmctcmVwbGFjZS1lc2NhcGVkLmpz
CiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCiAt
IHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy9zdHJpbmct
cmVwbGFjZS1lc2NhcGVkLmpzCkBAIC00MjIyNCw5ICs0MjIyNCw5IEBACiAtIHBhdGg6IHRlc3Qy
NjIvdGVzdC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy91bmljb2RlLXByb3BlcnR5LW5h
bWVzLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
OnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9SZWdFeHAvbmFtZWQtZ3Jv
dXBzL3VuaWNvZGUtcmVmZXJlbmNlcy5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9jb21wYXJlQXJyYXkuanMiXSwg
W10KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9jb21wYXJlQXJyYXkuanMiXSwgW10KIC0gcGF0aDogdGVzdDI2Mi90
ZXN0L2J1aWx0LWlucy9SZWdFeHAvbmFtZWQtZ3JvdXBzL3VuaWNvZGUtcmVmZXJlbmNlcy5qcwot
ICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9jb21wYXJlQXJyYXkuanMiXSwgWzpzdHJpY3RdCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvY29t
cGFyZUFycmF5LmpzIl0sIFs6c3RyaWN0XQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5z
L1JlZ0V4cC9wcm9wZXJ0eS1lc2NhcGVzL2JpbmFyeS1wcm9wZXJ0aWVzLXdpdGgtdmFsdWUuanMK
ICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KIC0g
cGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9SZWdFeHAvcHJvcGVydHktZXNjYXBlcy9iaW5h
cnktcHJvcGVydGllcy13aXRoLXZhbHVlLmpzCkluZGV4OiBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0
YXRpb25zLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55
YW1sCShyZXZpc2lvbiAyMzU3NjMpCisrKyBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlh
bWwJKHdvcmtpbmcgY29weSkKQEAgLTExMjIsOSArMTEyMiw2IEBAIHRlc3QvYnVpbHQtaW5zL1Jl
Z0V4cC9uYW1lZC1ncm91cHMvZ3JvdXAKIHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9uYW1lZC1ncm91
cHMvbm9uLXVuaWNvZGUtbWFsZm9ybWVkLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBF
eHBlY3RlZCBhIFN5bnRheEVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24gYXQgYWxsJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBT
eW50YXhFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFs
bCcKLXRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9uYW1lZC1ncm91cHMvbm9uLXVuaWNvZGUtcmVmZXJl
bmNlcy5qczoKLSAgZGVmYXVsdDogIlR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdiLmxlbmd0aCcpIgotICBzdHJpY3QgbW9kZTogIlR5cGVFcnJvcjogbnVsbCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdiLmxlbmd0aCcpIgogdGVzdC9idWlsdC1pbnMv
UmVnRXhwL25hbWVkLWdyb3Vwcy9zdHJpbmctcmVwbGFjZS1ub2NhcHR1cmVzLmpzOgogICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUow4LCqyQ8c25kPiQ8ZnN0PmNk
w4LCuywgw4LCqyQ8JDxmc3Q+Y2TDgsK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMOCwqskPHNuZD4kPGZzdD5jZMOCwrssIMOC
wqskPCQ8ZnN0PmNkw4LCuykgdG8gYmUgdHJ1ZScKQEAgLTExMzQsOSArMTEzMSw2IEBAIHRlc3Qv
YnVpbHQtaW5zL1JlZ0V4cC9uYW1lZC1ncm91cHMvdW5pY28KIHRlc3QvYnVpbHQtaW5zL1JlZ0V4
cC9uYW1lZC1ncm91cHMvdW5pY29kZS1wcm9wZXJ0eS1uYW1lcy5qczoKICAgZGVmYXVsdDogJ1N5
bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogaW52YWxpZCBncm91cCBzcGVj
aWZpZXIgbmFtZScKICAgc3RyaWN0IG1vZGU6ICdTeW50YXhFcnJvcjogSW52YWxpZCByZWd1bGFy
IGV4cHJlc3Npb246IGludmFsaWQgZ3JvdXAgc3BlY2lmaWVyIG5hbWUnCi10ZXN0L2J1aWx0LWlu
cy9SZWdFeHAvbmFtZWQtZ3JvdXBzL3VuaWNvZGUtcmVmZXJlbmNlcy5qczoKLSAgZGVmYXVsdDog
J1N5bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogaW52YWxpZCBiYWNrcmVm
ZXJlbmNlIGZvciB1bmljb2RlIHBhdHRlcm4nCi0gIHN0cmljdCBtb2RlOiAnU3ludGF4RXJyb3I6
IEludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBpbnZhbGlkIGJhY2tyZWZlcmVuY2UgZm9yIHVu
aWNvZGUgcGF0dGVybicKIHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9wcm90by1mcm9tLWN0b3ItcmVh
bG0uanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjDgsKr
Lyg/Oikvw4LCuywgw4LCqy8oPzopL8OCwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUow4LCqy8oPzopL8OCwrssIMOCwqsvKD86
KS/DgsK7KSB0byBiZSB0cnVlJwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMzU3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTgtMDktMDcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9m
ZkBhcHBsZS5jb20+CisKKyAgICAgICAgVGVzdDI2MiBmYWlsdXJlIHdpdGggTmFtZWQgQ2FwdHVy
ZSBHcm91cHMgLSB1c2luZyBhIHJlZmVyZW5jZSBiZWZvcmUgdGhlIGdyb3VwIGlzIGRlZmluZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTQwNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGNv
ZGUgdG8gc2F2ZSB0aGUgbmFtZWQgZm9yd2FyZCByZWZlcmVuY2VzIHdlIHNlZSBkdXJpbmcgcGFy
c2luZyBhbmQgdmFsaWRhdGluZyB0aGF0CisgICAgICAgIHRoZXkgYXJlIGFsbCBwcmVzZW50IHdo
ZW4gcGFyc2luZyB0aGUgUmVnRXhwIGlzIGNvbXBsZXRlLiAgSWYgdGhlcmUgYXJlIHVubmFtZWQg
cmVmZXJlbmNlcywKKyAgICAgICAgd2UgcmVwYXJzZSB3aXRoIHNvbWUgdmFyaWF0aW9uIG9mIGJl
aGF2aW9yLiAgSnVzdCBsaWtlIGZvciBudW1lcmljIHJlZmVyZW5jZXMsIHRoZQorICAgICAgICBi
ZWhhdmlvciBpcyBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHdoZXRoZXIgb3Igbm90IHRoZSB1bmlj
b2RlICh1IGZsYWcpIGlzIHByZXNlbnQuICAKKyAgICAgICAgRm9yIG5vbi11bmljb2RlIHBhdHRl
cm5zLCB3ZSB0cmVhdCB0aGUgXGs8Li4uPiBhcyBhIGxpdGVyYWwgcGF0dGVybi4gIEZvciBhIHVu
aWNvZGUgCisgICAgICAgIHBhdHRlcm4gd2UgdGhyb3cgYW4gZXhjZXB0aW9uLgorCisgICAgICAg
IERpZCBzb21lIHJlZmFjdG9yaW5nLCByZW5hbWluZyBZYXJyUGF0dGVybjo6cmVzZXQoKSBhbmQg
WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXQoKQorICAgICAgICByZXNldEZvclJlcGFyc2lu
ZygpIGFzIHRoYXQgaXMgdGhlIG9ubHkgdXNlIGZvciB0aG9zZSBtZXRob2RzLiAgQWxzbyBjaGFu
Z2VkCisgICAgICAgIGFsbCB0aGUgZGVsZWdhdGUgbWV0aG9kcyB0aGF0IHRha2UgYSBTdHJpbmcg
dG8gdGFrZSBhIGNvbnN0IFN0cmluZyYgdG8gZWxpbWluYXRlCisgICAgICAgIGNvcHkgY2h1cm4u
CisKKyAgICAgICAgKiB5YXJyL1lhcnJQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGFy
c2VyOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlOjphdG9tTmFtZWRCYWNrUmVmZXJlbmNl
KToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVn
YXRlOjppc1ZhbGlkTmFtZWRGb3J3YXJkUmVmZXJlbmNlKToKKyAgICAgICAgKEpTQzo6WWFycjo6
UGFyc2VyOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlOjphdG9tTmFtZWRGb3J3YXJkUmVm
ZXJlbmNlKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpwYXJzZUVzY2FwZSk6CisgICAg
ICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0
ZXJuQ29uc3RydWN0b3I6OnJlc2V0Rm9yUmVwYXJzaW5nKToKKyAgICAgICAgKEpTQzo6WWFycjo6
WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6c2F2ZVVubWF0Y2hlZE5hbWVkRm9yd2FyZFJlZmVyZW5j
ZXMpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tTmFt
ZWRCYWNrUmVmZXJlbmNlKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1
Y3Rvcjo6aXNWYWxpZE5hbWVkRm9yd2FyZFJlZmVyZW5jZSk6CisgICAgICAgIChKU0M6OllhcnI6
OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OmF0b21OYW1lZEZvcndhcmRSZWZlcmVuY2UpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6Ollh
cnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiB5
YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpyZXNl
dEZvclJlcGFyc2luZyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpjb250YWlu
c0lsbGVnYWxOYW1lZEZvcndhcmRSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFy
clBhdHRlcm46OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiB5YXJyL1lhcnJTeW50YXhDaGVj
a2VyLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6U3ludGF4Q2hlY2tlcjo6YXRvbU5hbWVkQmFj
a1JlZmVyZW5jZSk6CisgICAgICAgIChKU0M6OllhcnI6OlN5bnRheENoZWNrZXI6OmlzVmFsaWRO
YW1lZEZvcndhcmRSZWZlcmVuY2UpOgorICAgICAgICAoSlNDOjpZYXJyOjpTeW50YXhDaGVja2Vy
OjphdG9tTmFtZWRGb3J3YXJkUmVmZXJlbmNlKToKKwogMjAxOC0wOS0wNiAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgR2FyZGVuaW5nOiBvbmx5IHZpc2l0IG1fY2Fj
aGVkU3RydWN0dXJlSUQgaWYgaXQncyBub3QgbnVsbC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyUGFyc2VyLmgJKHJldmlzaW9uIDIzNTc2MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDcgKzE5NCw5
IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGludm9rZWQgd2l0aCBpbkNoYXJhY3RlckNsYXNzIHNl
dC4KICAgICAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhc3NlcnRpb25Xb3JkQm91
bmRhcnkoYm9vbCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgICAgIE5P
X1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgYXRvbUJhY2tSZWZlcmVuY2UodW5zaWduZWQpIHsg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgICAgICBOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVCB2b2lkIGF0b21OYW1lZEJhY2tSZWZlcmVuY2UoU3RyaW5nKSB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9p
ZCBhdG9tTmFtZWRCYWNrUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYpIHsgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorICAgICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCBib29sIGlz
VmFsaWROYW1lZEZvcndhcmRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJikgeyBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQg
YXRvbU5hbWVkRm9yd2FyZFJlZmVyZW5jZShjb25zdCBTdHJpbmcmKSB7IFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIERlbGVnYXRlJiBtX2Rl
bGVnYXRlOwpAQCAtNDIxLDkgKzQyMywxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKCFh
dEVuZE9mUGF0dGVybigpICYmICFpbkNoYXJhY3RlckNsYXNzKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGNvbnN1bWUoKSA9PSAnPCcpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBncm91cE5h
bWUgPSB0cnlDb25zdW1lR3JvdXBOYW1lKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChncm91
cE5hbWUgJiYgbV9jYXB0dXJlR3JvdXBOYW1lcy5jb250YWlucyhncm91cE5hbWUudmFsdWUoKSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlLmF0b21OYW1lZEJhY2tSZWZlcmVu
Y2UoZ3JvdXBOYW1lLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChncm91cE5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChtX2NhcHR1cmVHcm91cE5hbWVzLmNvbnRhaW5zKGdyb3VwTmFtZS52YWx1ZSgpKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlLmF0b21OYW1lZEJhY2tSZWZl
cmVuY2UoZ3JvdXBOYW1lLnZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsZWdhdGUuaXNWYWxpZE5hbWVkRm9yd2Fy
ZFJlZmVyZW5jZShncm91cE5hbWUudmFsdWUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZWxlZ2F0ZS5hdG9tTmFtZWRGb3J3YXJkUmVmZXJlbmNlKGdyb3VwTmFtZS52YWx1ZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAo
bV9pc1VuaWNvZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyb3JDb2RlID0gRXJy
b3JDb2RlOjpJbnZhbGlkQmFja3JlZmVyZW5jZTsKQEAgLTExMzYsNyArMTE0NSw5IEBAIHByaXZh
dGU6CiAgKiAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCBpbnZl
cnQgPSBmYWxzZSk7CiAgKiAgICB2b2lkIGF0b21QYXJlbnRoZXNlc0VuZCgpOwogICogICAgdm9p
ZCBhdG9tQmFja1JlZmVyZW5jZSh1bnNpZ25lZCBzdWJwYXR0ZXJuSWQpOwotICogICAgdm9pZCBh
dG9tTmFtZWRCYWNrUmVmZXJlbmNlKFN0cmluZyBzdWJwYXR0ZXJuTmFtZSk7CisgKiAgICB2b2lk
IGF0b21OYW1lZEJhY2tSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBzdWJwYXR0ZXJuTmFtZSk7Cisg
KiAgICBib29sIGlzVmFsaWROYW1lZEZvcndhcmRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBzdWJw
YXR0ZXJuTmFtZSk7CisgKiAgICB2b2lkIGF0b21OYW1lZEZvcndhcmRSZWZlcmVuY2UoY29uc3Qg
U3RyaW5nJiBzdWJwYXR0ZXJuTmFtZSk7CiAgKgogICogICAgdm9pZCBxdWFudGlmeUF0b20odW5z
aWduZWQgbWluLCB1bnNpZ25lZCBtYXgsIGJvb2wgZ3JlZWR5KTsKICAqCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCShyZXZpc2lvbiAyMzU3NjMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0Niw5ICs0NDYsOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQg
cmVzZXQoKQorICAgIHZvaWQgcmVzZXRGb3JSZXBhcnNpbmcoKQogICAgIHsKLSAgICAgICAgbV9w
YXR0ZXJuLnJlc2V0KCk7CisgICAgICAgIG1fcGF0dGVybi5yZXNldEZvclJlcGFyc2luZygpOwog
ICAgICAgICBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IucmVzZXQoKTsKIAogICAgICAgICBh
dXRvIGJvZHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKQEAgLTQ1
Niw3ICs0NTYsMTcgQEAgcHVibGljOgogICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRk
TmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVu
ZChXVEZNb3ZlKGJvZHkpKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHNhdmVVbm1hdGNoZWRO
YW1lZEZvcndhcmRSZWZlcmVuY2VzKCkKKyAgICB7CisgICAgICAgIG1fdW5tYXRjaGVkTmFtZWRG
b3J3YXJkUmVmZXJlbmNlcy5zaHJpbmsoMCk7CisgICAgICAgIAorICAgICAgICBmb3IgKGF1dG8m
IGVudHJ5IDogbV9wYXR0ZXJuLm1fbmFtZWRGb3J3YXJkUmVmZXJlbmNlcykgeworICAgICAgICAg
ICAgaWYgKCFtX3BhdHRlcm4ubV9jYXB0dXJlR3JvdXBOYW1lcy5jb250YWlucyhlbnRyeSkpCisg
ICAgICAgICAgICAgICAgbV91bm1hdGNoZWROYW1lZEZvcndhcmRSZWZlcmVuY2VzLmFwcGVuZChl
bnRyeSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGFzc2VydGlvbkJPTCgpCiAgICAg
ewogICAgICAgICBpZiAoIW1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuc2l6ZSgpICYmICFtX2ludmVy
dFBhcmVudGhldGljYWxBc3NlcnRpb24pIHsKQEAgLTY2NiwxMiArNjc2LDIzIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oc3VicGF0
dGVybklkKSk7CiAgICAgfQogCi0gICAgdm9pZCBhdG9tTmFtZWRCYWNrUmVmZXJlbmNlKFN0cmlu
ZyBzdWJwYXR0ZXJuTmFtZSkKKyAgICB2b2lkIGF0b21OYW1lZEJhY2tSZWZlcmVuY2UoY29uc3Qg
U3RyaW5nJiBzdWJwYXR0ZXJuTmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3BhdHRlcm4u
bV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4LmZpbmQoc3VicGF0dGVybk5hbWUpICE9IG1fcGF0dGVy
bi5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguZW5kKCkpOwogICAgICAgICBhdG9tQmFja1JlZmVy
ZW5jZShtX3BhdHRlcm4ubV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4LmdldChzdWJwYXR0ZXJuTmFt
ZSkpOwogICAgIH0KIAorICAgIGJvb2wgaXNWYWxpZE5hbWVkRm9yd2FyZFJlZmVyZW5jZShjb25z
dCBTdHJpbmcmIHN1YnBhdHRlcm5OYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX3VubWF0
Y2hlZE5hbWVkRm9yd2FyZFJlZmVyZW5jZXMuY29udGFpbnMoc3VicGF0dGVybk5hbWUpOworICAg
IH0KKworICAgIHZvaWQgYXRvbU5hbWVkRm9yd2FyZFJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHN1
YnBhdHRlcm5OYW1lKQorICAgIHsKKyAgICAgICAgbV9wYXR0ZXJuLm1fbmFtZWRGb3J3YXJkUmVm
ZXJlbmNlcy5hcHBlbmRJZk5vdENvbnRhaW5zKHN1YnBhdHRlcm5OYW1lKTsKKyAgICAgICAgbV9h
bHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm06OkZvcndhcmRSZWZlcmVuY2Uo
KSk7CisgICAgfQorICAgIAogICAgIC8vIGRlZXAgY29weSB0aGUgYXJndW1lbnQgZGlzanVuY3Rp
b24uICBJZiBmaWx0ZXJTdGFydHNXaXRoQk9MIGlzIHRydWUsCiAgICAgLy8gc2tpcCBhbHRlcm5h
dGl2ZXMgd2l0aCBtX3N0YXJ0c1dpdGhCT0wgc2V0IHRydWUuCiAgICAgUGF0dGVybkRpc2p1bmN0
aW9uKiBjb3B5RGlzanVuY3Rpb24oUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgYm9v
bCBmaWx0ZXJTdGFydHNXaXRoQk9MID0gZmFsc2UpCkBAIC0xMDgwLDYgKzExMDEsNyBAQCBwcml2
YXRlOgogICAgIFlhcnJQYXR0ZXJuJiBtX3BhdHRlcm47CiAgICAgUGF0dGVybkFsdGVybmF0aXZl
KiBtX2FsdGVybmF0aXZlOwogICAgIENoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IgbV9jaGFyYWN0
ZXJDbGFzc0NvbnN0cnVjdG9yOworICAgIFZlY3RvcjxTdHJpbmc+IG1fdW5tYXRjaGVkTmFtZWRG
b3J3YXJkUmVmZXJlbmNlczsKICAgICB2b2lkKiBtX3N0YWNrTGltaXQ7CiAgICAgYm9vbCBtX2lu
dmVydENoYXJhY3RlckNsYXNzOwogICAgIGJvb2wgbV9pbnZlcnRQYXJlbnRoZXRpY2FsQXNzZXJ0
aW9uIHsgZmFsc2UgfTsKQEAgLTExMDIsMTMgKzExMjQsMTQgQEAgRXJyb3JDb2RlIFlhcnJQYXR0
ZXJuOjpjb21waWxlKGNvbnN0IFN0cgogICAgIC8vIFF1b3RpbmcgTmV0c2NhcGUncyAiV2hhdCdz
IG5ldyBpbiBKYXZhU2NyaXB0IDEuMiIsCiAgICAgLy8gICAgICAiTm90ZTogaWYgdGhlIG51bWJl
ciBvZiBsZWZ0IHBhcmVudGhlc2VzIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIHNwZWNpZmllZAog
ICAgIC8vICAgICAgIGluIFwjLCB0aGUgXCMgaXMgdGFrZW4gYXMgYW4gb2N0YWwgZXNjYXBlIGFz
IGRlc2NyaWJlZCBpbiB0aGUgbmV4dCByb3cuIgotICAgIGlmIChjb250YWluc0lsbGVnYWxCYWNr
UmVmZXJlbmNlKCkpIHsKKyAgICBpZiAoY29udGFpbnNJbGxlZ2FsQmFja1JlZmVyZW5jZSgpIHx8
IGNvbnRhaW5zSWxsZWdhbE5hbWVkRm9yd2FyZFJlZmVyZW5jZXMoKSkgewogICAgICAgICBpZiAo
dW5pY29kZSgpKQogICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZTo6SW52YWxpZEJhY2tyZWZl
cmVuY2U7CiAKICAgICAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSBtX251bVN1YnBhdHRl
cm5zOwogCi0gICAgICAgIGNvbnN0cnVjdG9yLnJlc2V0KCk7CisgICAgICAgIGNvbnN0cnVjdG9y
LnNhdmVVbm1hdGNoZWROYW1lZEZvcndhcmRSZWZlcmVuY2VzKCk7CisgICAgICAgIGNvbnN0cnVj
dG9yLnJlc2V0Rm9yUmVwYXJzaW5nKCk7CiAgICAgICAgIEVycm9yQ29kZSBlcnJvciA9IHBhcnNl
KGNvbnN0cnVjdG9yLCBwYXR0ZXJuU3RyaW5nLCB1bmljb2RlKCksIG51bVN1YnBhdHRlcm5zKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChlcnJvciwgIWhhc0Vycm9yKGVycm9yKSk7CiAgICAgICAg
IEFTU0VSVChudW1TdWJwYXR0ZXJucyA9PSBtX251bVN1YnBhdHRlcm5zKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkocmV2aXNpb24gMjM1NzYzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkod29ya2luZyBjb3B5KQpA
QCAtMzU0LDcgKzM1NCw3IEBAIHN0cnVjdCBUZXJtQ2hhaW4gewogc3RydWN0IFlhcnJQYXR0ZXJu
IHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBZYXJyUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRl
cm4sIFJlZ0V4cEZsYWdzLCBFcnJvckNvZGUmLCB2b2lkKiBzdGFja0xpbWl0ID0gbnVsbHB0cik7
CiAKLSAgICB2b2lkIHJlc2V0KCkKKyAgICB2b2lkIHJlc2V0Rm9yUmVwYXJzaW5nKCkKICAgICB7
CiAgICAgICAgIG1fbnVtU3VicGF0dGVybnMgPSAwOwogICAgICAgICBtX21heEJhY2tSZWZlcmVu
Y2UgPSAwOwpAQCAtMzgxLDEyICszODEsMjYgQEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsKICAgICAg
ICAgbV9kaXNqdW5jdGlvbnMuY2xlYXIoKTsKICAgICAgICAgbV91c2VyQ2hhcmFjdGVyQ2xhc3Nl
cy5jbGVhcigpOwogICAgICAgICBtX2NhcHR1cmVHcm91cE5hbWVzLnNocmluaygwKTsKKyAgICAg
ICAgbV9uYW1lZEZvcndhcmRSZWZlcmVuY2VzLnNocmluaygwKTsKICAgICB9CiAKICAgICBib29s
IGNvbnRhaW5zSWxsZWdhbEJhY2tSZWZlcmVuY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
bWF4QmFja1JlZmVyZW5jZSA+IG1fbnVtU3VicGF0dGVybnM7CiAgICAgfQorICAgIAorICAgIGJv
b2wgY29udGFpbnNJbGxlZ2FsTmFtZWRGb3J3YXJkUmVmZXJlbmNlcygpCisgICAgeworICAgICAg
ICBpZiAobV9uYW1lZEZvcndhcmRSZWZlcmVuY2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9uYW1lZEZvcndhcmRS
ZWZlcmVuY2VzKSB7CisgICAgICAgICAgICBpZiAoIW1fY2FwdHVyZUdyb3VwTmFtZXMuY29udGFp
bnMoZW50cnkpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGJvb2wgY29udGFpbnNVbnNpZ25lZExl
bmd0aFBhdHRlcm4oKQogICAgIHsKQEAgLTUxMyw2ICs1MjcsNyBAQCBzdHJ1Y3QgWWFyclBhdHRl
cm4gewogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGF0dGVybkRpc2p1bmN0aW9uPiwgND4g
bV9kaXNqdW5jdGlvbnM7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDaGFyYWN0ZXJDbGFz
cz4+IG1fdXNlckNoYXJhY3RlckNsYXNzZXM7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9jYXB0dXJl
R3JvdXBOYW1lczsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX25hbWVkRm9yd2FyZFJlZmVyZW5jZXM7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBtX25hbWVkR3JvdXBUb1BhcmVuSW5kZXg7
CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4
Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clN5bnRheENoZWNrZXIuY3BwCShyZXZpc2lvbiAyMzU3NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcg
KzQ4LDkgQEAgcHVibGljOgogICAgIHZvaWQgYXRvbVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdp
bihib29sID0gZmFsc2UpIHt9CiAgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNFbmQoKSB7fQogICAg
IHZvaWQgYXRvbUJhY2tSZWZlcmVuY2UodW5zaWduZWQpIHt9Ci0gICAgdm9pZCBhdG9tTmFtZWRC
YWNrUmVmZXJlbmNlKFN0cmluZykge30KKyAgICB2b2lkIGF0b21OYW1lZEJhY2tSZWZlcmVuY2Uo
Y29uc3QgU3RyaW5nJikge30KKyAgICBib29sIGlzVmFsaWROYW1lZEZvcndhcmRSZWZlcmVuY2Uo
Y29uc3QgU3RyaW5nJikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgYXRvbU5hbWVkRm9yd2Fy
ZFJlZmVyZW5jZShjb25zdCBTdHJpbmcmKSB7fQogICAgIHZvaWQgcXVhbnRpZnlBdG9tKHVuc2ln
bmVkLCB1bnNpZ25lZCwgYm9vbCkge30KICAgICB2b2lkIGRpc2p1bmN0aW9uKCkge30KIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzU3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0wOS0wNyAgTWljaGFlbCBT
YWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAgICBUZXN0MjYyIGZhaWx1cmUgd2l0
aCBOYW1lZCBDYXB0dXJlIEdyb3VwcyAtIHVzaW5nIGEgcmVmZXJlbmNlIGJlZm9yZSB0aGUgZ3Jv
dXAgaXMgZGVmaW5lZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg5NDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ3JlYXRlZCBuZXcgZGVsZWdhdGUgc3R1YnMgZm9yIFJlZ0V4cCBwYXJzaW5nLiAgVGhl
c2UgYXJlIG5vdCBuZWVkZWQgZm9yIHRoZSBVUkwgZmlsdGVyaW5nCisgICAgICAgIHVzZSBjYXNl
cy4gIEFsc28gY2hhbmdlZCBhbGwgdGhlIGRlbGVnYXRlIG1ldGhvZHMgdGhhdCB0YWtlIGEgU3Ry
aW5nIHRvIHRha2UgCisgICAgICAgIGNvbnN0IFN0cmluZyYgdG8gZWxpbWluYXRlIGNvcHkgY2h1
cm4uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsaXR5IGNoYW5nZWQuCisK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlBhdHRlcm5QYXJzZXI6OmF0b21OYW1lZEJh
Y2tSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlBhdHRl
cm5QYXJzZXI6OmlzVmFsaWROYW1lZEZvcndhcmRSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OlBhdHRlcm5QYXJzZXI6OmF0b21OYW1lZEZvcndhcmRSZWZl
cmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBh
cnNlcjo6c3RhdHVzU3RyaW5nKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0
ZXJQYXJzZXIuaDoKKwogMjAxOC0wOS0wNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtMRkNdW0JGQ10gQWRkIHN1cHBvcnQgZm9yIG1pbihtYXgpLWhlaWdodApJ
bmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0
ZXJQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzU3NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMTEg
KzEyOSwyMSBAQCBwdWJsaWM6CiAgICAgICAgIGZhaWwoVVJMRmlsdGVyUGFyc2VyOjpCYWNrUmVm
ZXJlbmNlKTsKICAgICB9CiAKLSAgICB2b2lkIGF0b21OYW1lZEJhY2tSZWZlcmVuY2UoU3RyaW5n
KQorICAgIHZvaWQgYXRvbU5hbWVkQmFja1JlZmVyZW5jZShjb25zdCBTdHJpbmcmKQogICAgIHsK
ICAgICAgICAgZmFpbChVUkxGaWx0ZXJQYXJzZXI6OkJhY2tSZWZlcmVuY2UpOwogICAgIH0KIAor
ICAgIGJvb2wgaXNWYWxpZE5hbWVkRm9yd2FyZFJlZmVyZW5jZShjb25zdCBTdHJpbmcmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdm9pZCBhdG9tTmFtZWRGb3J3
YXJkUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYpCisgICAgeworICAgICAgICBmYWlsKFVSTEZpbHRl
clBhcnNlcjo6Rm9yd2FyZFJlZmVyZW5jZSk7CisgICAgfQorICAgIAogICAgIHZvaWQgYXNzZXJ0
aW9uQk9MKCkKICAgICB7CiAgICAgICAgIGlmIChoYXNFcnJvcigpKQpAQCAtMzcyLDYgKzM4Miw4
IEBAIFN0cmluZyBVUkxGaWx0ZXJQYXJzZXI6OnN0YXR1c1N0cmluZyhQYXIKICAgICAgICAgcmV0
dXJuICJDaGFyYWN0ZXIgY2xhc3MgaXMgbm90IHN1cHBvcnRlZC4iOwogICAgIGNhc2UgQmFja1Jl
ZmVyZW5jZToKICAgICAgICAgcmV0dXJuICJQYXR0ZXJucyBjYW5ub3QgY29udGFpbiBiYWNrcmVm
ZXJlbmNlcy4iOworICAgIGNhc2UgRm9yd2FyZFJlZmVyZW5jZToKKyAgICAgICAgcmV0dXJuICJQ
YXR0ZXJucyBjYW5ub3QgY29udGFpbiBmb3J3YXJkIHJlZmVyZW5jZXMuIjsKICAgICBjYXNlIE1p
c3BsYWNlZFN0YXJ0T2ZMaW5lOgogICAgICAgICByZXR1cm4gIlN0YXJ0IG9mIGxpbmUgYXNzZXJ0
aW9uIGNhbiBvbmx5IGFwcGVhciBhcyB0aGUgZmlyc3QgdGVybSBpbiBhIGZpbHRlci4iOwogICAg
IGNhc2UgV29yZEJvdW5kYXJ5OgpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvVVJMRmlsdGVyUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgJKHJldmlzaW9uIDIzNTc2MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgTm9uQVNDSUksCiAgICAgICAg
IFVuc3VwcG9ydGVkQ2hhcmFjdGVyQ2xhc3MsCiAgICAgICAgIEJhY2tSZWZlcmVuY2UsCisgICAg
ICAgIEZvcndhcmRSZWZlcmVuY2UsCiAgICAgICAgIE1pc3BsYWNlZFN0YXJ0T2ZMaW5lLAogICAg
ICAgICBXb3JkQm91bmRhcnksCiAgICAgICAgIEF0b21DaGFyYWN0ZXIsCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMzU3NjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAxOC0wOS0wNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxl
LmNvbT4KKworICAgICAgICBUZXN0MjYyIGZhaWx1cmUgd2l0aCBOYW1lZCBDYXB0dXJlIEdyb3Vw
cyAtIHVzaW5nIGEgcmVmZXJlbmNlIGJlZm9yZSB0aGUgZ3JvdXAgaXMgZGVmaW5lZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NDA3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0cy4K
KworICAgICAgICAqIGpzL3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy5q
czoKKwogMjAxOC0wOS0wNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdW0JGQ10gQWRkIHN1cHBvcnQgZm9yIG1pbihtYXgpLWhlaWdodApJbmRleDogTGF5
b3V0VGVzdHMvanMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdleHAtbmFtZWQtY2FwdHVyZS1ncm91cHMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyMzU3NjMpCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdleHAtbmFt
ZWQtY2FwdHVyZS1ncm91cHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2
MSwxMiBAQCBQQVNTIGxldCByID0gbmV3IFJlZ0V4cCgiLyg/PPCQhpBncm91cE5hCiBQQVNTIGxl
dCByID0gbmV3IFJlZ0V4cCgiLyg/PGfwkIabb3VwTmFtZTE+YWJjKS91IikgdGhyZXcgZXhjZXB0
aW9uIFN5bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogaW52YWxpZCBncm91
cCBzcGVjaWZpZXIgbmFtZS4KIFBBU1MgbGV0IHIgPSBuZXcgUmVnRXhwKCIvKD884oCMZ3JvdXBO
YW1lMT5hYmMpL3UiKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEludmFsaWQgcmVndWxh
ciBleHByZXNzaW9uOiBpbnZhbGlkIGdyb3VwIHNwZWNpZmllciBuYW1lLgogUEFTUyBsZXQgciA9
IG5ldyBSZWdFeHAoIi8oPzzigI1ncm91cE5hbWUxPmFiYykvdSIpIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IGludmFsaWQgZ3JvdXAgc3Bl
Y2lmaWVyIG5hbWUuCitQQVNTICJYenpYenoiLm1hdGNoKC9cazx6PlgoPzx6PnoqKVhcazx6Pi8p
IGlzIFsiWHp6WHp6IiwgInp6Il0KK1BBU1MgIlh6elh6eiIubWF0Y2goL1xrPHo+WCg/PHo+eiop
WFxrPHo+L3UpIGlzIFsiWHp6WHp6IiwgInp6Il0KK1BBU1MgIjExMjIzMzIyMTEiLm1hdGNoKC9c
azxvbmVzPlxrPHR3b3M+XGs8dGhyZWVzPig/PG9uZXM+MSopKD88dHdvcz4yKikoPzx0aHJlZXM+
MyopXGs8dGhyZWVzPlxrPHR3b3M+XGs8b25lcz4vKSBpcyBbIjExMjIzMzIyMTEiLCAiMTEiLCAi
MjIiLCAiMyJdCitQQVNTICIxMTIyMzMyMjExIi5tYXRjaCgvXGs8b25lcz5cazx0d29zPlxrPHRo
cmVlcz4oPzxvbmVzPjEqKSg/PHR3b3M+MiopKD88dGhyZWVzPjMqKVxrPHRocmVlcz5cazx0d29z
PlxrPG9uZXM+L3UpIGlzIFsiMTEyMjMzMjIxMSIsICIxMSIsICIyMiIsICIzIl0KK1BBU1MgIlxr
PHo+WHp6WCIubWF0Y2goL1xrPHo+WCh6KilYLykgaXMgWyJrPHo+WHp6WCIsICJ6eiJdCitQQVNT
ICJcazx6Plh6elgiLm1hdGNoKC9cazx6PlgoeiopWC91KSB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IEludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBpbnZhbGlkIGJhY2tyZWZlcmVuY2Ug
Zm9yIHVuaWNvZGUgcGF0dGVybi4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1u
YW1lZC1jYXB0dXJlLWdyb3Vwcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLmpzCShyZXZpc2lvbiAyMzU3NjMp
CisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3Jv
dXBzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMyArMTA0LDEzIEBAIHNob3VsZFRocm93KCds
ZXQgciA9IG5ldyBSZWdFeHAoIi8oPzxnXHUKIHNob3VsZFRocm93KCdsZXQgciA9IG5ldyBSZWdF
eHAoIi8oPzxcdTIwMGNncm91cE5hbWUxPmFiYykvdSIpJywgJyJTeW50YXhFcnJvcjogSW52YWxp
ZCByZWd1bGFyIGV4cHJlc3Npb246IGludmFsaWQgZ3JvdXAgc3BlY2lmaWVyIG5hbWUiJyk7CiBz
aG91bGRUaHJvdygnbGV0IHIgPSBuZXcgUmVnRXhwKCIvKD88XHUyMDBkZ3JvdXBOYW1lMT5hYmMp
L3UiKScsICciU3ludGF4RXJyb3I6IEludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBpbnZhbGlk
IGdyb3VwIHNwZWNpZmllciBuYW1lIicpOwogCisvLyBDaGVjayB0aGUgbmFtZWQgZm9yd2FyZCBy
ZWZlcmVuY2VzIHdvcmsKK3Nob3VsZEJlKCciWHp6WHp6Ii5tYXRjaCgvXFxcazx6PlgoPzx6Pnoq
KVhcXFxrPHo+LyknLCAnWyJYenpYenoiLCAienoiXScpOworc2hvdWxkQmUoJyJYenpYenoiLm1h
dGNoKC9cXFxrPHo+WCg/PHo+eiopWFxcXGs8ej4vdSknLCAnWyJYenpYenoiLCAienoiXScpOwor
c2hvdWxkQmUoJyIxMTIyMzMyMjExIi5tYXRjaCgvXFxcazxvbmVzPlxcXGs8dHdvcz5cXFxrPHRo
cmVlcz4oPzxvbmVzPjEqKSg/PHR3b3M+MiopKD88dGhyZWVzPjMqKVxcXGs8dGhyZWVzPlxcXGs8
dHdvcz5cXFxrPG9uZXM+LyknLCAnWyIxMTIyMzMyMjExIiwgIjExIiwgIjIyIiwgIjMiXScpOwor
c2hvdWxkQmUoJyIxMTIyMzMyMjExIi5tYXRjaCgvXFxcazxvbmVzPlxcXGs8dHdvcz5cXFxrPHRo
cmVlcz4oPzxvbmVzPjEqKSg/PHR3b3M+MiopKD88dGhyZWVzPjMqKVxcXGs8dGhyZWVzPlxcXGs8
dHdvcz5cXFxrPG9uZXM+L3UpJywgJ1siMTEyMjMzMjIxMSIsICIxMSIsICIyMiIsICIzIl0nKTsK
KworLy8gQ2hlY2sgdGhhdCBhIG5hbWVkIGZvcndhcmQgcmVmZXJlbmNlIGZvciBhIG5vbi1leGlz
dGVudCBuYW1lZCBjYXB0dXJlCisvLyBtYXRjaGVzIGZvciBub24tdW5pY29kZSBwYXR0ZXJucyBh
bmQgdGhyb3dzIGZvciB1bmljb2RlIHBhdHRlcm5zLgorc2hvdWxkQmUoJyJcXFxrPHo+WHp6WCIu
bWF0Y2goL1xcXGs8ej5YKHoqKVgvKScsICdbIms8ej5YenpYIiwgInp6Il0nKTsKK3Nob3VsZFRo
cm93KCciXFxcazx6Plh6elgiLm1hdGNoKC9cXFxrPHo+WCh6KilYL3UpJywgJyJTeW50YXhFcnJv
cjogSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IGludmFsaWQgYmFja3JlZmVyZW5jZSBmb3Ig
dW5pY29kZSBwYXR0ZXJuIicpOwo=
</data>
<flag name="review"
          id="366794"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349355</attachid>
            <date>2018-09-10 16:47:14 -0700</date>
            <delta_ts>2018-09-10 21:37:40 -0700</delta_ts>
            <desc>Patch with updated ContentExtensionTest.ParsingFailures tests</desc>
            <filename>189407-3.patch</filename>
            <type>text/plain</type>
            <size>25357</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzU4NzIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE4LTA5LTAxMCBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIFRlc3QyNjIgZmFpbHVyZSB3aXRoIE5hbWVkIENhcHR1cmUgR3Jv
dXBzIC0gdXNpbmcgYSByZWZlcmVuY2UgYmVmb3JlIHRoZSBncm91cCBpcyBkZWZpbmVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk0MDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS1lbmFibGVkIHBy
ZXZpb3VzbHkgZmFpbGluZyB0ZXN0LgorCisgICAgICAgICogdGVzdDI2Mi55YW1sOgorICAgICAg
ICAqIHRlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWw6CisKIDIwMTgtMDktMDggIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gUmVtb3ZlIGxvYWRN
b2R1bGUgZnVuY3Rpb24gaW4ganNjLmNwcApJbmRleDogSlNUZXN0cy90ZXN0MjYyLnlhbWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy90ZXN0MjYyLnlhbWwJKHJldmlzaW9uIDIzNTg3MikKKysrIEpT
VGVzdHMvdGVzdDI2Mi55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC00MjE4MCw5ICs0MjE4MCw5IEBA
CiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy9ub24t
dW5pY29kZS1wcm9wZXJ0eS1uYW1lcy5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5v
RXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2NvbXBhcmVBcnJheS5qcyJd
LCBbOnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9SZWdFeHAvbmFtZWQt
Z3JvdXBzL25vbi11bmljb2RlLXJlZmVyZW5jZXMuanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWls
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvY29tcGFyZUFycmF5
LmpzIl0sIFtdCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvY29tcGFyZUFycmF5LmpzIl0sIFtdCiAtIHBhdGg6IHRl
c3QyNjIvdGVzdC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy9ub24tdW5pY29kZS1yZWZl
cmVuY2VzLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL2NvbXBhcmVBcnJheS5qcyJdLCBbOnN0cmljdF0KKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9jb21wYXJlQXJyYXkuanMiXSwgWzpzdHJpY3RdCiAtIHBhdGg6IHRlc3QyNjIvdGVz
dC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy9zdHJpbmctcmVwbGFjZS1lc2NhcGVkLmpz
CiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCiAt
IHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy9zdHJpbmct
cmVwbGFjZS1lc2NhcGVkLmpzCkBAIC00MjIyNCw5ICs0MjIyNCw5IEBACiAtIHBhdGg6IHRlc3Qy
NjIvdGVzdC9idWlsdC1pbnMvUmVnRXhwL25hbWVkLWdyb3Vwcy91bmljb2RlLXByb3BlcnR5LW5h
bWVzLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
OnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9SZWdFeHAvbmFtZWQtZ3Jv
dXBzL3VuaWNvZGUtcmVmZXJlbmNlcy5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9jb21wYXJlQXJyYXkuanMiXSwg
W10KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9jb21wYXJlQXJyYXkuanMiXSwgW10KIC0gcGF0aDogdGVzdDI2Mi90
ZXN0L2J1aWx0LWlucy9SZWdFeHAvbmFtZWQtZ3JvdXBzL3VuaWNvZGUtcmVmZXJlbmNlcy5qcwot
ICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9jb21wYXJlQXJyYXkuanMiXSwgWzpzdHJpY3RdCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvY29t
cGFyZUFycmF5LmpzIl0sIFs6c3RyaWN0XQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5z
L1JlZ0V4cC9wcm9wZXJ0eS1lc2NhcGVzL2JpbmFyeS1wcm9wZXJ0aWVzLXdpdGgtdmFsdWUuanMK
ICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KIC0g
cGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9SZWdFeHAvcHJvcGVydHktZXNjYXBlcy9iaW5h
cnktcHJvcGVydGllcy13aXRoLXZhbHVlLmpzCkluZGV4OiBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0
YXRpb25zLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55
YW1sCShyZXZpc2lvbiAyMzU4NzIpCisrKyBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlh
bWwJKHdvcmtpbmcgY29weSkKQEAgLTExMjIsOSArMTEyMiw2IEBAIHRlc3QvYnVpbHQtaW5zL1Jl
Z0V4cC9uYW1lZC1ncm91cHMvZ3JvdXAKIHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9uYW1lZC1ncm91
cHMvbm9uLXVuaWNvZGUtbWFsZm9ybWVkLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBF
eHBlY3RlZCBhIFN5bnRheEVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24gYXQgYWxsJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBT
eW50YXhFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFs
bCcKLXRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9uYW1lZC1ncm91cHMvbm9uLXVuaWNvZGUtcmVmZXJl
bmNlcy5qczoKLSAgZGVmYXVsdDogIlR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChl
dmFsdWF0aW5nICdiLmxlbmd0aCcpIgotICBzdHJpY3QgbW9kZTogIlR5cGVFcnJvcjogbnVsbCBp
cyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdiLmxlbmd0aCcpIgogdGVzdC9idWlsdC1pbnMv
UmVnRXhwL25hbWVkLWdyb3Vwcy9zdHJpbmctcmVwbGFjZS1ub2NhcHR1cmVzLmpzOgogICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUow4LCqyQ8c25kPiQ8ZnN0PmNk
w4LCuywgw4LCqyQ8JDxmc3Q+Y2TDgsK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMOCwqskPHNuZD4kPGZzdD5jZMOCwrssIMOC
wqskPCQ8ZnN0PmNkw4LCuykgdG8gYmUgdHJ1ZScKQEAgLTExMzQsOSArMTEzMSw2IEBAIHRlc3Qv
YnVpbHQtaW5zL1JlZ0V4cC9uYW1lZC1ncm91cHMvdW5pY28KIHRlc3QvYnVpbHQtaW5zL1JlZ0V4
cC9uYW1lZC1ncm91cHMvdW5pY29kZS1wcm9wZXJ0eS1uYW1lcy5qczoKICAgZGVmYXVsdDogJ1N5
bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogaW52YWxpZCBncm91cCBzcGVj
aWZpZXIgbmFtZScKICAgc3RyaWN0IG1vZGU6ICdTeW50YXhFcnJvcjogSW52YWxpZCByZWd1bGFy
IGV4cHJlc3Npb246IGludmFsaWQgZ3JvdXAgc3BlY2lmaWVyIG5hbWUnCi10ZXN0L2J1aWx0LWlu
cy9SZWdFeHAvbmFtZWQtZ3JvdXBzL3VuaWNvZGUtcmVmZXJlbmNlcy5qczoKLSAgZGVmYXVsdDog
J1N5bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogaW52YWxpZCBiYWNrcmVm
ZXJlbmNlIGZvciB1bmljb2RlIHBhdHRlcm4nCi0gIHN0cmljdCBtb2RlOiAnU3ludGF4RXJyb3I6
IEludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBpbnZhbGlkIGJhY2tyZWZlcmVuY2UgZm9yIHVu
aWNvZGUgcGF0dGVybicKIHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9wcm90by1mcm9tLWN0b3ItcmVh
bG0uanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjDgsKr
Lyg/Oikvw4LCuywgw4LCqy8oPzopL8OCwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUow4LCqy8oPzopL8OCwrssIMOCwqsvKD86
KS/DgsK7KSB0byBiZSB0cnVlJwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMzU4NzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTgtMDktMTAgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9m
ZkBhcHBsZS5jb20+CisKKyAgICAgICAgVGVzdDI2MiBmYWlsdXJlIHdpdGggTmFtZWQgQ2FwdHVy
ZSBHcm91cHMgLSB1c2luZyBhIHJlZmVyZW5jZSBiZWZvcmUgdGhlIGdyb3VwIGlzIGRlZmluZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTQwNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGNv
ZGUgdG8gc2F2ZSB0aGUgbmFtZWQgZm9yd2FyZCByZWZlcmVuY2VzIHdlIHNlZSBkdXJpbmcgcGFy
c2luZyBhbmQgdmFsaWRhdGluZyB0aGF0CisgICAgICAgIHRoZXkgYXJlIGFsbCBwcmVzZW50IHdo
ZW4gcGFyc2luZyB0aGUgUmVnRXhwIGlzIGNvbXBsZXRlLiAgSWYgdGhlcmUgYXJlIHVubmFtZWQg
cmVmZXJlbmNlcywKKyAgICAgICAgd2UgcmVwYXJzZSB3aXRoIHNvbWUgdmFyaWF0aW9uIG9mIGJl
aGF2aW9yLiAgSnVzdCBsaWtlIGZvciBudW1lcmljIHJlZmVyZW5jZXMsIHRoZQorICAgICAgICBi
ZWhhdmlvciBpcyBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHdoZXRoZXIgb3Igbm90IHRoZSB1bmlj
b2RlICh1IGZsYWcpIGlzIHByZXNlbnQuICAKKyAgICAgICAgRm9yIG5vbi11bmljb2RlIHBhdHRl
cm5zLCB3ZSB0cmVhdCB0aGUgXGs8Li4uPiBhcyBhIGxpdGVyYWwgcGF0dGVybi4gIEZvciBhIHVu
aWNvZGUgCisgICAgICAgIHBhdHRlcm4gd2UgdGhyb3cgYW4gZXhjZXB0aW9uLgorCisgICAgICAg
IERpZCBzb21lIHJlZmFjdG9yaW5nLCByZW5hbWluZyBZYXJyUGF0dGVybjo6cmVzZXQoKSBhbmQg
WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXQoKQorICAgICAgICByZXNldEZvclJlcGFyc2lu
ZygpIGFzIHRoYXQgaXMgdGhlIG9ubHkgdXNlIGZvciB0aG9zZSBtZXRob2RzLiAgQWxzbyBjaGFu
Z2VkCisgICAgICAgIGFsbCB0aGUgZGVsZWdhdGUgbWV0aG9kcyB0aGF0IHRha2UgYSBTdHJpbmcg
dG8gdGFrZSBhIGNvbnN0IFN0cmluZyYgdG8gZWxpbWluYXRlCisgICAgICAgIGNvcHkgY2h1cm4u
CisKKyAgICAgICAgKiB5YXJyL1lhcnJQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGFy
c2VyOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlOjphdG9tTmFtZWRCYWNrUmVmZXJlbmNl
KToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVn
YXRlOjppc1ZhbGlkTmFtZWRGb3J3YXJkUmVmZXJlbmNlKToKKyAgICAgICAgKEpTQzo6WWFycjo6
UGFyc2VyOjpDaGFyYWN0ZXJDbGFzc1BhcnNlckRlbGVnYXRlOjphdG9tTmFtZWRGb3J3YXJkUmVm
ZXJlbmNlKToKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjpwYXJzZUVzY2FwZSk6CisgICAg
ICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0
ZXJuQ29uc3RydWN0b3I6OnJlc2V0Rm9yUmVwYXJzaW5nKToKKyAgICAgICAgKEpTQzo6WWFycjo6
WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6c2F2ZVVubWF0Y2hlZE5hbWVkRm9yd2FyZFJlZmVyZW5j
ZXMpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tTmFt
ZWRCYWNrUmVmZXJlbmNlKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1
Y3Rvcjo6aXNWYWxpZE5hbWVkRm9yd2FyZFJlZmVyZW5jZSk6CisgICAgICAgIChKU0M6OllhcnI6
OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OmF0b21OYW1lZEZvcndhcmRSZWZlcmVuY2UpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6Ollh
cnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiB5
YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpyZXNl
dEZvclJlcGFyc2luZyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpjb250YWlu
c0lsbGVnYWxOYW1lZEZvcndhcmRSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFy
clBhdHRlcm46OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiB5YXJyL1lhcnJTeW50YXhDaGVj
a2VyLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6U3ludGF4Q2hlY2tlcjo6YXRvbU5hbWVkQmFj
a1JlZmVyZW5jZSk6CisgICAgICAgIChKU0M6OllhcnI6OlN5bnRheENoZWNrZXI6OmlzVmFsaWRO
YW1lZEZvcndhcmRSZWZlcmVuY2UpOgorICAgICAgICAoSlNDOjpZYXJyOjpTeW50YXhDaGVja2Vy
OjphdG9tTmFtZWRGb3J3YXJkUmVmZXJlbmNlKToKKwogMjAxOC0wOS0wOCAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBSZW1vdmUgbG9hZE1v
ZHVsZSBmdW5jdGlvbiBpbiBqc2MuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJyUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyclBhcnNlci5oCShyZXZpc2lvbiAyMzU4NzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw3ICsxOTQsOSBAQCBwcml2
YXRlOgogICAgICAgICAvLyBpbnZva2VkIHdpdGggaW5DaGFyYWN0ZXJDbGFzcyBzZXQuCiAgICAg
ICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgYXNzZXJ0aW9uV29yZEJvdW5kYXJ5KGJv
b2wpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgICAgICBOT19SRVRVUk5f
RFVFX1RPX0FTU0VSVCB2b2lkIGF0b21CYWNrUmVmZXJlbmNlKHVuc2lnbmVkKSB7IFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQg
dm9pZCBhdG9tTmFtZWRCYWNrUmVmZXJlbmNlKFN0cmluZykgeyBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CisgICAgICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgYXRvbU5h
bWVkQmFja1JlZmVyZW5jZShjb25zdCBTdHJpbmcmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgYm9vbCBpc1ZhbGlkTmFt
ZWRGb3J3YXJkUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQorICAgICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGF0b21OYW1l
ZEZvcndhcmRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBEZWxlZ2F0ZSYgbV9kZWxlZ2F0ZTsK
QEAgLTQyMSw5ICs0MjMsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICghYXRFbmRPZlBh
dHRlcm4oKSAmJiAhaW5DaGFyYWN0ZXJDbGFzcykgewogICAgICAgICAgICAgICAgIGlmIChjb25z
dW1lKCkgPT0gJzwnKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gZ3JvdXBOYW1lID0gdHJ5
Q29uc3VtZUdyb3VwTmFtZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXBOYW1lICYm
IG1fY2FwdHVyZUdyb3VwTmFtZXMuY29udGFpbnMoZ3JvdXBOYW1lLnZhbHVlKCkpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5hdG9tTmFtZWRCYWNrUmVmZXJlbmNlKGdyb3Vw
TmFtZS52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBpZiAoZ3JvdXBOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bV9jYXB0dXJlR3JvdXBOYW1lcy5jb250YWlucyhncm91cE5hbWUudmFsdWUoKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5hdG9tTmFtZWRCYWNrUmVmZXJlbmNlKGdy
b3VwTmFtZS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGRlbGVnYXRlLmlzVmFsaWROYW1lZEZvcndhcmRSZWZlcmVu
Y2UoZ3JvdXBOYW1lLnZhbHVlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVs
ZWdhdGUuYXRvbU5hbWVkRm9yd2FyZFJlZmVyZW5jZShncm91cE5hbWUudmFsdWUoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKG1faXNVbmlj
b2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2Vycm9yQ29kZSA9IEVycm9yQ29kZTo6
SW52YWxpZEJhY2tyZWZlcmVuY2U7CkBAIC0xMTM2LDcgKzExNDUsOSBAQCBwcml2YXRlOgogICog
ICAgdm9pZCBhdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKGJvb2wgaW52ZXJ0ID0gZmFs
c2UpOwogICogICAgdm9pZCBhdG9tUGFyZW50aGVzZXNFbmQoKTsKICAqICAgIHZvaWQgYXRvbUJh
Y2tSZWZlcmVuY2UodW5zaWduZWQgc3VicGF0dGVybklkKTsKLSAqICAgIHZvaWQgYXRvbU5hbWVk
QmFja1JlZmVyZW5jZShTdHJpbmcgc3VicGF0dGVybk5hbWUpOworICogICAgdm9pZCBhdG9tTmFt
ZWRCYWNrUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgc3VicGF0dGVybk5hbWUpOworICogICAgYm9v
bCBpc1ZhbGlkTmFtZWRGb3J3YXJkUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgc3VicGF0dGVybk5h
bWUpOworICogICAgdm9pZCBhdG9tTmFtZWRGb3J3YXJkUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYg
c3VicGF0dGVybk5hbWUpOwogICoKICAqICAgIHZvaWQgcXVhbnRpZnlBdG9tKHVuc2lnbmVkIG1p
biwgdW5zaWduZWQgbWF4LCBib29sIGdyZWVkeSk7CiAgKgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAkocmV2aXNpb24gMjM1ODcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NDYsOSArNDQ2LDkgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHJlc2V0KCkK
KyAgICB2b2lkIHJlc2V0Rm9yUmVwYXJzaW5nKCkKICAgICB7Ci0gICAgICAgIG1fcGF0dGVybi5y
ZXNldCgpOworICAgICAgICBtX3BhdHRlcm4ucmVzZXRGb3JSZXBhcnNpbmcoKTsKICAgICAgICAg
bV9jaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yLnJlc2V0KCk7CiAKICAgICAgICAgYXV0byBib2R5
ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CkBAIC00NTYsNyArNDU2
LDE3IEBAIHB1YmxpYzoKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IGJvZHktPmFkZE5ld0FsdGVy
bmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92
ZShib2R5KSk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBzYXZlVW5tYXRjaGVkTmFtZWRGb3J3
YXJkUmVmZXJlbmNlcygpCisgICAgeworICAgICAgICBtX3VubWF0Y2hlZE5hbWVkRm9yd2FyZFJl
ZmVyZW5jZXMuc2hyaW5rKDApOworICAgICAgICAKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6
IG1fcGF0dGVybi5tX25hbWVkRm9yd2FyZFJlZmVyZW5jZXMpIHsKKyAgICAgICAgICAgIGlmICgh
bV9wYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMuY29udGFpbnMoZW50cnkpKQorICAgICAgICAg
ICAgICAgIG1fdW5tYXRjaGVkTmFtZWRGb3J3YXJkUmVmZXJlbmNlcy5hcHBlbmQoZW50cnkpOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBhc3NlcnRpb25CT0woKQogICAgIHsKICAgICAg
ICAgaWYgKCFtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLnNpemUoKSAmJiAhbV9pbnZlcnRQYXJlbnRo
ZXRpY2FsQXNzZXJ0aW9uKSB7CkBAIC02NjYsMTIgKzY3NiwyMyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJtKHN1YnBhdHRlcm5JZCkp
OwogICAgIH0KIAotICAgIHZvaWQgYXRvbU5hbWVkQmFja1JlZmVyZW5jZShTdHJpbmcgc3VicGF0
dGVybk5hbWUpCisgICAgdm9pZCBhdG9tTmFtZWRCYWNrUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYg
c3VicGF0dGVybk5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQobV9wYXR0ZXJuLm1fbmFtZWRH
cm91cFRvUGFyZW5JbmRleC5maW5kKHN1YnBhdHRlcm5OYW1lKSAhPSBtX3BhdHRlcm4ubV9uYW1l
ZEdyb3VwVG9QYXJlbkluZGV4LmVuZCgpKTsKICAgICAgICAgYXRvbUJhY2tSZWZlcmVuY2UobV9w
YXR0ZXJuLm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5nZXQoc3VicGF0dGVybk5hbWUpKTsKICAg
ICB9CiAKKyAgICBib29sIGlzVmFsaWROYW1lZEZvcndhcmRSZWZlcmVuY2UoY29uc3QgU3RyaW5n
JiBzdWJwYXR0ZXJuTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhbV91bm1hdGNoZWROYW1l
ZEZvcndhcmRSZWZlcmVuY2VzLmNvbnRhaW5zKHN1YnBhdHRlcm5OYW1lKTsKKyAgICB9CisKKyAg
ICB2b2lkIGF0b21OYW1lZEZvcndhcmRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBzdWJwYXR0ZXJu
TmFtZSkKKyAgICB7CisgICAgICAgIG1fcGF0dGVybi5tX25hbWVkRm9yd2FyZFJlZmVyZW5jZXMu
YXBwZW5kSWZOb3RDb250YWlucyhzdWJwYXR0ZXJuTmFtZSk7CisgICAgICAgIG1fYWx0ZXJuYXRp
dmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJtOjpGb3J3YXJkUmVmZXJlbmNlKCkpOworICAg
IH0KKyAgICAKICAgICAvLyBkZWVwIGNvcHkgdGhlIGFyZ3VtZW50IGRpc2p1bmN0aW9uLiAgSWYg
ZmlsdGVyU3RhcnRzV2l0aEJPTCBpcyB0cnVlLAogICAgIC8vIHNraXAgYWx0ZXJuYXRpdmVzIHdp
dGggbV9zdGFydHNXaXRoQk9MIHNldCB0cnVlLgogICAgIFBhdHRlcm5EaXNqdW5jdGlvbiogY29w
eURpc2p1bmN0aW9uKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIGJvb2wgZmlsdGVy
U3RhcnRzV2l0aEJPTCA9IGZhbHNlKQpAQCAtMTA4MCw2ICsxMTAxLDcgQEAgcHJpdmF0ZToKICAg
ICBZYXJyUGF0dGVybiYgbV9wYXR0ZXJuOwogICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogbV9hbHRl
cm5hdGl2ZTsKICAgICBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yIG1fY2hhcmFjdGVyQ2xhc3ND
b25zdHJ1Y3RvcjsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3VubWF0Y2hlZE5hbWVkRm9yd2FyZFJl
ZmVyZW5jZXM7CiAgICAgdm9pZCogbV9zdGFja0xpbWl0OwogICAgIGJvb2wgbV9pbnZlcnRDaGFy
YWN0ZXJDbGFzczsKICAgICBib29sIG1faW52ZXJ0UGFyZW50aGV0aWNhbEFzc2VydGlvbiB7IGZh
bHNlIH07CkBAIC0xMTAyLDEzICsxMTI0LDE0IEBAIEVycm9yQ29kZSBZYXJyUGF0dGVybjo6Y29t
cGlsZShjb25zdCBTdHIKICAgICAvLyBRdW90aW5nIE5ldHNjYXBlJ3MgIldoYXQncyBuZXcgaW4g
SmF2YVNjcmlwdCAxLjIiLAogICAgIC8vICAgICAgIk5vdGU6IGlmIHRoZSBudW1iZXIgb2YgbGVm
dCBwYXJlbnRoZXNlcyBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciBzcGVjaWZpZWQKICAgICAvLyAg
ICAgICBpbiBcIywgdGhlIFwjIGlzIHRha2VuIGFzIGFuIG9jdGFsIGVzY2FwZSBhcyBkZXNjcmli
ZWQgaW4gdGhlIG5leHQgcm93LiIKLSAgICBpZiAoY29udGFpbnNJbGxlZ2FsQmFja1JlZmVyZW5j
ZSgpKSB7CisgICAgaWYgKGNvbnRhaW5zSWxsZWdhbEJhY2tSZWZlcmVuY2UoKSB8fCBjb250YWlu
c0lsbGVnYWxOYW1lZEZvcndhcmRSZWZlcmVuY2VzKCkpIHsKICAgICAgICAgaWYgKHVuaWNvZGUo
KSkKICAgICAgICAgICAgIHJldHVybiBFcnJvckNvZGU6OkludmFsaWRCYWNrcmVmZXJlbmNlOwog
CiAgICAgICAgIHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zID0gbV9udW1TdWJwYXR0ZXJuczsKIAot
ICAgICAgICBjb25zdHJ1Y3Rvci5yZXNldCgpOworICAgICAgICBjb25zdHJ1Y3Rvci5zYXZlVW5t
YXRjaGVkTmFtZWRGb3J3YXJkUmVmZXJlbmNlcygpOworICAgICAgICBjb25zdHJ1Y3Rvci5yZXNl
dEZvclJlcGFyc2luZygpOwogICAgICAgICBFcnJvckNvZGUgZXJyb3IgPSBwYXJzZShjb25zdHJ1
Y3RvciwgcGF0dGVyblN0cmluZywgdW5pY29kZSgpLCBudW1TdWJwYXR0ZXJucyk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoZXJyb3IsICFoYXNFcnJvcihlcnJvcikpOwogICAgICAgICBBU1NFUlQo
bnVtU3VicGF0dGVybnMgPT0gbV9udW1TdWJwYXR0ZXJucyk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgJKHJldmlzaW9uIDIzNTg3MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1NCw3
ICszNTQsNyBAQCBzdHJ1Y3QgVGVybUNoYWluIHsKIHN0cnVjdCBZYXJyUGF0dGVybiB7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgWWFyclBhdHRlcm4oY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBSZWdF
eHBGbGFncywgRXJyb3JDb2RlJiwgdm9pZCogc3RhY2tMaW1pdCA9IG51bGxwdHIpOwogCi0gICAg
dm9pZCByZXNldCgpCisgICAgdm9pZCByZXNldEZvclJlcGFyc2luZygpCiAgICAgewogICAgICAg
ICBtX251bVN1YnBhdHRlcm5zID0gMDsKICAgICAgICAgbV9tYXhCYWNrUmVmZXJlbmNlID0gMDsK
QEAgLTM4MSwxMiArMzgxLDI2IEBAIHN0cnVjdCBZYXJyUGF0dGVybiB7CiAgICAgICAgIG1fZGlz
anVuY3Rpb25zLmNsZWFyKCk7CiAgICAgICAgIG1fdXNlckNoYXJhY3RlckNsYXNzZXMuY2xlYXIo
KTsKICAgICAgICAgbV9jYXB0dXJlR3JvdXBOYW1lcy5zaHJpbmsoMCk7CisgICAgICAgIG1fbmFt
ZWRGb3J3YXJkUmVmZXJlbmNlcy5zaHJpbmsoMCk7CiAgICAgfQogCiAgICAgYm9vbCBjb250YWlu
c0lsbGVnYWxCYWNrUmVmZXJlbmNlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX21heEJhY2tS
ZWZlcmVuY2UgPiBtX251bVN1YnBhdHRlcm5zOwogICAgIH0KKyAgICAKKyAgICBib29sIGNvbnRh
aW5zSWxsZWdhbE5hbWVkRm9yd2FyZFJlZmVyZW5jZXMoKQorICAgIHsKKyAgICAgICAgaWYgKG1f
bmFtZWRGb3J3YXJkUmVmZXJlbmNlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fbmFtZWRGb3J3YXJkUmVmZXJlbmNl
cykgeworICAgICAgICAgICAgaWYgKCFtX2NhcHR1cmVHcm91cE5hbWVzLmNvbnRhaW5zKGVudHJ5
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBib29sIGNvbnRhaW5zVW5zaWduZWRMZW5ndGhQYXR0
ZXJuKCkKICAgICB7CkBAIC01MTMsNiArNTI3LDcgQEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsKICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBhdHRlcm5EaXNqdW5jdGlvbj4sIDQ+IG1fZGlzanVu
Y3Rpb25zOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+PiBtX3Vz
ZXJDaGFyYWN0ZXJDbGFzc2VzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fY2FwdHVyZUdyb3VwTmFt
ZXM7CisgICAgVmVjdG9yPFN0cmluZz4gbV9uYW1lZEZvcndhcmRSZWZlcmVuY2VzOwogICAgIEhh
c2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gbV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4OwogCiBwcml2
YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNrZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhD
aGVja2VyLmNwcAkocmV2aXNpb24gMjM1ODcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclN5bnRheENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCA9
IGZhbHNlKSB7fQogICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzRW5kKCkge30KICAgICB2b2lkIGF0
b21CYWNrUmVmZXJlbmNlKHVuc2lnbmVkKSB7fQotICAgIHZvaWQgYXRvbU5hbWVkQmFja1JlZmVy
ZW5jZShTdHJpbmcpIHt9CisgICAgdm9pZCBhdG9tTmFtZWRCYWNrUmVmZXJlbmNlKGNvbnN0IFN0
cmluZyYpIHt9CisgICAgYm9vbCBpc1ZhbGlkTmFtZWRGb3J3YXJkUmVmZXJlbmNlKGNvbnN0IFN0
cmluZyYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGF0b21OYW1lZEZvcndhcmRSZWZlcmVu
Y2UoY29uc3QgU3RyaW5nJikge30KICAgICB2b2lkIHF1YW50aWZ5QXRvbSh1bnNpZ25lZCwgdW5z
aWduZWQsIGJvb2wpIHt9CiAgICAgdm9pZCBkaXNqdW5jdGlvbigpIHt9CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjM1ODcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMDktMTAgIE1pY2hhZWwgU2Fib2ZmICA8
bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgVGVzdDI2MiBmYWlsdXJlIHdpdGggTmFtZWQg
Q2FwdHVyZSBHcm91cHMgLSB1c2luZyBhIHJlZmVyZW5jZSBiZWZvcmUgdGhlIGdyb3VwIGlzIGRl
ZmluZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
OTQwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENy
ZWF0ZWQgbmV3IGRlbGVnYXRlIHN0dWJzIGZvciBSZWdFeHAgcGFyc2luZy4gIFRoZXNlIGFyZSBu
b3QgbmVlZGVkIGZvciB0aGUgVVJMIGZpbHRlcmluZworICAgICAgICB1c2UgY2FzZXMuICBBbHNv
IGNoYW5nZWQgYWxsIHRoZSBkZWxlZ2F0ZSBtZXRob2RzIHRoYXQgdGFrZSBhIFN0cmluZyB0byB0
YWtlIAorICAgICAgICBjb25zdCBTdHJpbmcmIHRvIGVsaW1pbmF0ZSBjb3B5IGNodXJuLgorCisg
ICAgICAgIFVwZGF0ZWQgVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNp
b25zLmNwcC4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UGF0dGVyblBhcnNlcjo6
YXRvbU5hbWVkQmFja1JlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6UGF0dGVyblBhcnNlcjo6aXNWYWxpZE5hbWVkRm9yd2FyZFJlZmVyZW5jZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6UGF0dGVyblBhcnNlcjo6YXRvbU5hbWVk
Rm9yd2FyZFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
VVJMRmlsdGVyUGFyc2VyOjpzdGF0dXNTdHJpbmcpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL1VSTEZpbHRlclBhcnNlci5oOgorCiAyMDE4LTA5LTEwICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBvbnRyYWNrIGV2ZW50cyBzaG91bGQgYmUgZmlyZWQg
ZXZlbiBpZiBhbiBleGlzdGluZyB0cmFuc2NlaXZlciBleGlzdHMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcAkocmV2
aXNpb24gMjM1ODcyKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmls
dGVyUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDExICsxMjksMjEgQEAgcHVibGlj
OgogICAgICAgICBmYWlsKFVSTEZpbHRlclBhcnNlcjo6QmFja1JlZmVyZW5jZSk7CiAgICAgfQog
Ci0gICAgdm9pZCBhdG9tTmFtZWRCYWNrUmVmZXJlbmNlKFN0cmluZykKKyAgICB2b2lkIGF0b21O
YW1lZEJhY2tSZWZlcmVuY2UoY29uc3QgU3RyaW5nJikKICAgICB7CiAgICAgICAgIGZhaWwoVVJM
RmlsdGVyUGFyc2VyOjpCYWNrUmVmZXJlbmNlKTsKICAgICB9CiAKKyAgICBib29sIGlzVmFsaWRO
YW1lZEZvcndhcmRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJikKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIGF0b21OYW1lZEZvcndhcmRSZWZlcmVuY2UoY29u
c3QgU3RyaW5nJikKKyAgICB7CisgICAgICAgIGZhaWwoVVJMRmlsdGVyUGFyc2VyOjpGb3J3YXJk
UmVmZXJlbmNlKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBhc3NlcnRpb25CT0woKQogICAgIHsK
ICAgICAgICAgaWYgKGhhc0Vycm9yKCkpCkBAIC0zNzIsNiArMzgyLDggQEAgU3RyaW5nIFVSTEZp
bHRlclBhcnNlcjo6c3RhdHVzU3RyaW5nKFBhcgogICAgICAgICByZXR1cm4gIkNoYXJhY3RlciBj
bGFzcyBpcyBub3Qgc3VwcG9ydGVkLiI7CiAgICAgY2FzZSBCYWNrUmVmZXJlbmNlOgogICAgICAg
ICByZXR1cm4gIlBhdHRlcm5zIGNhbm5vdCBjb250YWluIGJhY2tyZWZlcmVuY2VzLiI7CisgICAg
Y2FzZSBGb3J3YXJkUmVmZXJlbmNlOgorICAgICAgICByZXR1cm4gIlBhdHRlcm5zIGNhbm5vdCBj
b250YWluIGZvcndhcmQgcmVmZXJlbmNlcy4iOwogICAgIGNhc2UgTWlzcGxhY2VkU3RhcnRPZkxp
bmU6CiAgICAgICAgIHJldHVybiAiU3RhcnQgb2YgbGluZSBhc3NlcnRpb24gY2FuIG9ubHkgYXBw
ZWFyIGFzIHRoZSBmaXJzdCB0ZXJtIGluIGEgZmlsdGVyLiI7CiAgICAgY2FzZSBXb3JkQm91bmRh
cnk6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJz
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxG
aWx0ZXJQYXJzZXIuaAkocmV2aXNpb24gMjM1ODcyKQorKysgU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDcgQEAgcHVibGljOgogICAgICAgICBOb25BU0NJSSwKICAgICAgICAgVW5zdXBwb3J0ZWRDaGFy
YWN0ZXJDbGFzcywKICAgICAgICAgQmFja1JlZmVyZW5jZSwKKyAgICAgICAgRm9yd2FyZFJlZmVy
ZW5jZSwKICAgICAgICAgTWlzcGxhY2VkU3RhcnRPZkxpbmUsCiAgICAgICAgIFdvcmRCb3VuZGFy
eSwKICAgICAgICAgQXRvbUNoYXJhY3RlciwKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNTg3MikKKysrIFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA5LTEwICBNaWNoYWVs
IFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFRlc3QyNjIgZmFpbHVyZSB3
aXRoIE5hbWVkIENhcHR1cmUgR3JvdXBzIC0gdXNpbmcgYSByZWZlcmVuY2UgYmVmb3JlIHRoZSBn
cm91cCBpcyBkZWZpbmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODk0MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGVkIHRlc3QuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VF9GKToKKwogMjAxOC0wOS0xMCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgogCiAgICAgICAgIENCT1IgY29kZXJzIHNob3VsZCBvbmx5IGJlIGNvbXBpbGVkIGlmIFdlYkF1
dGhOIGlzIGVuYWJsZWQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9D
b250ZW50RXh0ZW5zaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAkocmV2aXNpb24gMjM1ODcyKQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTc3Myw3ICsxNzczLDEzIEBAIFRFU1RfRihDb250ZW50RXh0ZW5z
aW9uVGVzdCwgUGFyc2luZ0ZhaWwKICAgICB0ZXN0UGF0dGVyblN0YXR1cygiYV4iLCBDb250ZW50
RXh0ZW5zaW9uczo6VVJMRmlsdGVyUGFyc2VyOjpQYXJzZVN0YXR1czo6TWlzcGxhY2VkU3RhcnRP
ZkxpbmUpOwogICAgIHRlc3RQYXR0ZXJuU3RhdHVzKCIoXikiLCBDb250ZW50RXh0ZW5zaW9uczo6
VVJMRmlsdGVyUGFyc2VyOjpQYXJzZVN0YXR1czo6TWlzcGxhY2VkU3RhcnRPZkxpbmUpOwogICAg
IAotICAgIHRlc3RQYXR0ZXJuU3RhdHVzKCIoYSlcXDEiLCBDb250ZW50RXh0ZW5zaW9uczo6VVJM
RmlsdGVyUGFyc2VyOjpQYXJzZVN0YXR1czo6T2spOyAvLyBUaGlzIHNob3VsZCBiZSBCYWNrUmVm
ZXJlbmNlLCByaWdodD8KKyAgICB0ZXN0UGF0dGVyblN0YXR1cygiKGEpXFwxIiwgQ29udGVudEV4
dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXM6Ok9rKTsgLy8gQmFjayByZWZl
cmVuY2VzIGFyZSBkaXNhYmxlZCwgaXQgcGFyc2UgYXMgb2N0YWwgMQorICAgIHRlc3RQYXR0ZXJu
U3RhdHVzKCIoPEE+YSlcXGs8QT4iLCBDb250ZW50RXh0ZW5zaW9uczo6VVJMRmlsdGVyUGFyc2Vy
OjpQYXJzZVN0YXR1czo6T2spOyAvLyBOYW1lZCBiYWNrIHJlZmVyZW5jZXMgYXJlbid0IGhhbmRs
ZWQsIGl0IHBhcnNlIGFzICJrPEE+IgorICAgIHRlc3RQYXR0ZXJuU3RhdHVzKCJcXDEoYSkiLCBD
b250ZW50RXh0ZW5zaW9uczo6VVJMRmlsdGVyUGFyc2VyOjpQYXJzZVN0YXR1czo6T2spOyAvLyBG
b3J3YXJkIHJlZmVyZW5jZXMgYXJlIGRpc2FibGVkLCBpdCBwYXJzZSBhcyBvY3RhbCAxCisgICAg
dGVzdFBhdHRlcm5TdGF0dXMoIlxcOChhKSIsIENvbnRlbnRFeHRlbnNpb25zOjpVUkxGaWx0ZXJQ
YXJzZXI6OlBhcnNlU3RhdHVzOjpPayk7IC8vIEZvcndhcmQgcmVmZXJlbmNlcyBhcmUgZGlzYWJs
ZWQsIGl0IHBhcnNlIGFzICc4JworICAgIHRlc3RQYXR0ZXJuU3RhdHVzKCJcXDkoYSkiLCBDb250
ZW50RXh0ZW5zaW9uczo6VVJMRmlsdGVyUGFyc2VyOjpQYXJzZVN0YXR1czo6T2spOyAvLyBGb3J3
YXJkIHJlZmVyZW5jZXMgYXJlIGRpc2FibGVkLCBpdCBwYXJzZSBhcyAnOScKKyAgICB0ZXN0UGF0
dGVyblN0YXR1cygiXFxrPEE+KDxBPmEpIiwgQ29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBh
cnNlcjo6UGFyc2VTdGF0dXM6Ok9rKTsgLy8gTmFtZWQgZm9yd2FyZCByZWZlcmVuY2VzIGFyZW4n
dCBoYW5kbGVkLCBpdCBwYXJzZSBhcyAiazxBPiIKKyAgICB0ZXN0UGF0dGVyblN0YXR1cygiXFxr
PEE+KGEpIiwgQ29udGVudEV4dGVuc2lvbnM6OlVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXM6
Ok9rKTsgLy8gVW5tYXRjaGVkIG5hbWVkIGZvcndhcmQgcmVmZXJlbmNlcyBhcmVuJ3QgaGFuZGxl
ZCwgaXQgcGFyc2UgYXMgIms8QT4iCiB9CiAKIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwg
UGF0dGVybk1hdGNoaW5nVGhlRW1wdHlTdHJpbmcpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzU4NzIp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxOC0wOS0xMCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBUZXN0MjYyIGZhaWx1cmUgd2l0aCBOYW1lZCBDYXB0dXJlIEdyb3VwcyAtIHVzaW5nIGEg
cmVmZXJlbmNlIGJlZm9yZSB0aGUgZ3JvdXAgaXMgZGVmaW5lZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NDA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0cy4KKworICAgICAgICAq
IGpzL3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
anMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy5qczoKKwogMjAxOC0w
OS0xMCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkIHRlc3QgZ2FyZGVuaW5nLCByZWJhc2VsaW5lIGZhc3QvZXZlbnRzL2lvcy9rZXl1cC5o
dG1sIGFmdGVyIHIyMzU4MTguCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdleHAtbmFtZWQtY2Fw
dHVyZS1ncm91cHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Jl
Z2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIzNTg3MikK
KysrIExheW91dFRlc3RzL2pzL3JlZ2V4cC1uYW1lZC1jYXB0dXJlLWdyb3Vwcy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDEyIEBAIFBBU1MgbGV0IHIgPSBuZXcgUmVn
RXhwKCIvKD888JCGkGdyb3VwTmEKIFBBU1MgbGV0IHIgPSBuZXcgUmVnRXhwKCIvKD88Z/CQhptv
dXBOYW1lMT5hYmMpL3UiKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEludmFsaWQgcmVn
dWxhciBleHByZXNzaW9uOiBpbnZhbGlkIGdyb3VwIHNwZWNpZmllciBuYW1lLgogUEFTUyBsZXQg
ciA9IG5ldyBSZWdFeHAoIi8oPzzigIxncm91cE5hbWUxPmFiYykvdSIpIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IGludmFsaWQgZ3JvdXAg
c3BlY2lmaWVyIG5hbWUuCiBQQVNTIGxldCByID0gbmV3IFJlZ0V4cCgiLyg/POKAjWdyb3VwTmFt
ZTE+YWJjKS91IikgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIg
ZXhwcmVzc2lvbjogaW52YWxpZCBncm91cCBzcGVjaWZpZXIgbmFtZS4KK1BBU1MgIlh6elh6eiIu
bWF0Y2goL1xrPHo+WCg/PHo+eiopWFxrPHo+LykgaXMgWyJYenpYenoiLCAienoiXQorUEFTUyAi
WHp6WHp6Ii5tYXRjaCgvXGs8ej5YKD88ej56KilYXGs8ej4vdSkgaXMgWyJYenpYenoiLCAienoi
XQorUEFTUyAiMTEyMjMzMjIxMSIubWF0Y2goL1xrPG9uZXM+XGs8dHdvcz5cazx0aHJlZXM+KD88
b25lcz4xKikoPzx0d29zPjIqKSg/PHRocmVlcz4zKilcazx0aHJlZXM+XGs8dHdvcz5cazxvbmVz
Pi8pIGlzIFsiMTEyMjMzMjIxMSIsICIxMSIsICIyMiIsICIzIl0KK1BBU1MgIjExMjIzMzIyMTEi
Lm1hdGNoKC9cazxvbmVzPlxrPHR3b3M+XGs8dGhyZWVzPig/PG9uZXM+MSopKD88dHdvcz4yKiko
Pzx0aHJlZXM+MyopXGs8dGhyZWVzPlxrPHR3b3M+XGs8b25lcz4vdSkgaXMgWyIxMTIyMzMyMjEx
IiwgIjExIiwgIjIyIiwgIjMiXQorUEFTUyAiXGs8ej5YenpYIi5tYXRjaCgvXGs8ej5YKHoqKVgv
KSBpcyBbIms8ej5YenpYIiwgInp6Il0KK1BBU1MgIlxrPHo+WHp6WCIubWF0Y2goL1xrPHo+WCh6
KilYL3UpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSW52YWxpZCByZWd1bGFyIGV4cHJl
c3Npb246IGludmFsaWQgYmFja3JlZmVyZW5jZSBmb3IgdW5pY29kZSBwYXR0ZXJuLgogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVnZXhwLW5hbWVkLWNhcHR1cmUtZ3JvdXBzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9yZWdleHAtbmFtZWQtY2FwdHVy
ZS1ncm91cHMuanMJKHJldmlzaW9uIDIzNTg3MikKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9yZWdleHAtbmFtZWQtY2FwdHVyZS1ncm91cHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEw
NCwzICsxMDQsMTMgQEAgc2hvdWxkVGhyb3coJ2xldCByID0gbmV3IFJlZ0V4cCgiLyg/PGdcdQog
c2hvdWxkVGhyb3coJ2xldCByID0gbmV3IFJlZ0V4cCgiLyg/PFx1MjAwY2dyb3VwTmFtZTE+YWJj
KS91IiknLCAnIlN5bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogaW52YWxp
ZCBncm91cCBzcGVjaWZpZXIgbmFtZSInKTsKIHNob3VsZFRocm93KCdsZXQgciA9IG5ldyBSZWdF
eHAoIi8oPzxcdTIwMGRncm91cE5hbWUxPmFiYykvdSIpJywgJyJTeW50YXhFcnJvcjogSW52YWxp
ZCByZWd1bGFyIGV4cHJlc3Npb246IGludmFsaWQgZ3JvdXAgc3BlY2lmaWVyIG5hbWUiJyk7CiAK
Ky8vIENoZWNrIHRoZSBuYW1lZCBmb3J3YXJkIHJlZmVyZW5jZXMgd29yaworc2hvdWxkQmUoJyJY
enpYenoiLm1hdGNoKC9cXFxrPHo+WCg/PHo+eiopWFxcXGs8ej4vKScsICdbIlh6elh6eiIsICJ6
eiJdJyk7CitzaG91bGRCZSgnIlh6elh6eiIubWF0Y2goL1xcXGs8ej5YKD88ej56KilYXFxcazx6
Pi91KScsICdbIlh6elh6eiIsICJ6eiJdJyk7CitzaG91bGRCZSgnIjExMjIzMzIyMTEiLm1hdGNo
KC9cXFxrPG9uZXM+XFxcazx0d29zPlxcXGs8dGhyZWVzPig/PG9uZXM+MSopKD88dHdvcz4yKiko
Pzx0aHJlZXM+MyopXFxcazx0aHJlZXM+XFxcazx0d29zPlxcXGs8b25lcz4vKScsICdbIjExMjIz
MzIyMTEiLCAiMTEiLCAiMjIiLCAiMyJdJyk7CitzaG91bGRCZSgnIjExMjIzMzIyMTEiLm1hdGNo
KC9cXFxrPG9uZXM+XFxcazx0d29zPlxcXGs8dGhyZWVzPig/PG9uZXM+MSopKD88dHdvcz4yKiko
Pzx0aHJlZXM+MyopXFxcazx0aHJlZXM+XFxcazx0d29zPlxcXGs8b25lcz4vdSknLCAnWyIxMTIy
MzMyMjExIiwgIjExIiwgIjIyIiwgIjMiXScpOworCisvLyBDaGVjayB0aGF0IGEgbmFtZWQgZm9y
d2FyZCByZWZlcmVuY2UgZm9yIGEgbm9uLWV4aXN0ZW50IG5hbWVkIGNhcHR1cmUKKy8vIG1hdGNo
ZXMgZm9yIG5vbi11bmljb2RlIHBhdHRlcm5zIGFuZCB0aHJvd3MgZm9yIHVuaWNvZGUgcGF0dGVy
bnMuCitzaG91bGRCZSgnIlxcXGs8ej5YenpYIi5tYXRjaCgvXFxcazx6PlgoeiopWC8pJywgJ1si
azx6Plh6elgiLCAienoiXScpOworc2hvdWxkVGhyb3coJyJcXFxrPHo+WHp6WCIubWF0Y2goL1xc
XGs8ej5YKHoqKVgvdSknLCAnIlN5bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lv
bjogaW52YWxpZCBiYWNrcmVmZXJlbmNlIGZvciB1bmljb2RlIHBhdHRlcm4iJyk7Cg==
</data>
<flag name="review"
          id="366928"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="366946"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>