<?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>46112</bug_id>
          
          <creation_ts>2010-09-20 11:55:57 -0700</creation_ts>
          <short_desc>Colors seem to be parsed using HTML quirks in SVG attributes</short_desc>
          <delta_ts>2012-03-30 20:36:58 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>82056</dependson>
    
    <dependson>82335</dependson>
          <blocked>15012</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Boris Zbarsky">bzbarsky</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>jwalden+bwo</cc>
    
    <cc>krit</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>281720</commentid>
    <comment_count>0</comment_count>
      <attachid>68118</attachid>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2010-09-20 11:55:57 -0700</bug_when>
    <thetext>Created attachment 68118
Testcase

See attached testcase, which should not have gray text.  Changing &quot;eee&quot; to things like &quot;888&quot; or &quot;8ee&quot; indicates that the color parser is just allowing the page to drop the &apos;#&apos; in front of a CSS RGB color in this case, which is not allowed by the SVG specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295212</commentid>
    <comment_count>1</comment_count>
      <attachid>70973</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-10-17 06:13:25 -0700</bug_when>
    <thetext>Created attachment 70973
First attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295224</commentid>
    <comment_count>2</comment_count>
      <attachid>70973</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-17 09:11:09 -0700</bug_when>
    <thetext>Comment on attachment 70973
First attempt

I think the quirks mode is a general problem for SVG. At least I saw some examples that looked like they fail because of quirks parsing. Can&apos;t we run the complete CSS parser in strict mode somehow?
If not, don&apos;t use a boolean but an enum CSSStrictMode CSSQuirksMode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295374</commentid>
    <comment_count>3</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-10-18 00:03:05 -0700</bug_when>
    <thetext>Moin Dirk,
(In reply to comment #2)
&gt; (From update of attachment 70973 [details])
&gt; I think the quirks mode is a general problem for SVG. At least I saw some examples that looked like they fail because of quirks parsing. Can&apos;t we run the complete CSS parser in strict mode somehow?

Hmm, I assumed we had no control, but I guess we do. Since the fill attribute parsing fails in this case
I suspect MappedAttribute or some related class does not set strict mode in this (SVG) case. Will look at it
this evening.

&gt; If not, don&apos;t use a boolean but an enum CSSStrictMode CSSQuirksMode.

Could be more readable, agreed, but I&apos;ll invest why strict mode is not set first.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295660</commentid>
    <comment_count>4</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-10-18 11:42:56 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Moin Dirk,
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 70973 [details] [details])
&gt; &gt; I think the quirks mode is a general problem for SVG. At least I saw some examples that looked like they fail because of quirks parsing. Can&apos;t we run the complete CSS parser in strict mode somehow?
&gt; 
&gt; Hmm, I assumed we had no control, but I guess we do. Since the fill attribute parsing fails in this case
&gt; I suspect MappedAttribute or some related class does not set strict mode in this (SVG) case. Will look at it
&gt; this evening.

Seems to be related to this in WebCore/dom/StyledElement.cpp:

decl-&gt;setStrictParsing(false); // Mapped attributes are just always quirky.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298645</commentid>
    <comment_count>5</comment_count>
      <attachid>71695</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-10-24 13:13:44 -0700</bug_when>
    <thetext>Created attachment 71695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298646</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-24 13:16:34 -0700</bug_when>
    <thetext>Attachment 71695 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/css/CSSParser.cpp:4038:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/css/CSSMutableStyleDeclaration.cpp:629:  parseMode_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 2 in 31 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>298647</commentid>
    <comment_count>7</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-10-24 13:17:44 -0700</bug_when>
    <thetext>The approach with the enum offers more fine-grained control for SVG than we had before. Using it
bug 15012 is easy to fix for instance. I&apos;ll await the reviewing now as I know there are a few rough edges.
For instance the number of call sites could be less if we would keep CSSParser(bool) overload. Also
we may need htmlStrict() vs. strict() in CSSParser. Just some thoughts, but again I think this is the only way
to fix bugs like 15012.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298650</commentid>
    <comment_count>8</comment_count>
      <attachid>71695</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-24 13:40:18 -0700</bug_when>
    <thetext>Comment on attachment 71695
Patch

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

Do we need pixel tests for this patch? If so, you should have green rects as result images.

&gt; WebCore/css/CSSMutableStyleDeclaration.h:136
&gt; +    void setStrictParsing(bool b) { m_parseMode = b ? HTMLStrictMode : HTMLQuirksMode; }

this should take an enum. We talked about it on IRC. You fear that the patch will be to big if you change it in a row, right? But you should mention it in the ChangeLog, add a FIXME that points to the bug and even better, have a followup ready.

&gt; WebCore/css/CSSParser.h:218
&gt; +        inline bool strict() const { return m_parseMode == HTMLStrictMode; }

We have 2 strict modes, HTMLStrictMode and SVGStrictMode, the function name should be self-explanatory. Also, what does HTMLStrictMode mean for SVGStrictMode? Does HTMLStrictMode include SVGStrictMode? If yes we should rethink the enum entries. Or are they exclusive?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298765</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-25 02:44:23 -0700</bug_when>
    <thetext>Attachment 71695 did not build on chromium:
Build output: http://queues.webkit.org/results/4698082</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298775</commentid>
    <comment_count>10</comment_count>
      <attachid>71695</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-25 03:13:58 -0700</bug_when>
    <thetext>Comment on attachment 71695
Patch

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

This needs a lot more test coverage, especially the non CSSParser changes. Each function that uses CSSParser, eg. in CanvasRenderingContext2d::setFont.., Node::querySelector, needs to be tested in a SVG and HTML environment, to be sure the whole parsing is context dependant (no HTMLStrict/QuirksMode for example, when using querySelector on a SVG Element). This is a probably complex todo...

&gt; LayoutTests/ChangeLog:9
&gt; +        like eee(misses #) are not accepted. Test for strict parsing in SVG stylesheet,

s/misses/missing/; s/stylesheet/stylesheets/

&gt; LayoutTests/svg/custom/strict-color-parsing.svg:4
&gt; +&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&gt; +&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
&gt; +&lt;text fill=&quot;eee&quot;&gt;This should not be gray&lt;/text&gt;
&gt; +&lt;/svg&gt;

Hm, I don&apos;t really like the tests, I think it would be much nicer, if we had a single testcase for the color parsing, and using three different rects, that should not be gray.
It&apos;s aso easier to spot in the DRT dumps, as for rects the color gets dumped, unlike for text.

&gt; WebCore/ChangeLog:8
&gt; +        Make CSS parsing more fine-grained for SVG by adding an SVG strict mode.

s/an SVG/a SVG/

You should describe here, what&apos;s the difference between the individual parsing modes.

&gt; WebCore/css/CSSMutableStyleDeclaration.cpp:54
&gt; +    , m_parseMode(!parent || parent-&gt;parseMode())

This doesn&apos;t work. !parent is a bool. You want to use m_parseMode(parent ? parent-&gt;parseMode() : HTMLQuirksMode)

&gt; WebCore/css/CSSMutableStyleDeclaration.cpp:66
&gt; +    , m_parseMode(!parent || parent-&gt;parseMode())

Ditto.

&gt; WebCore/css/CSSMutableStyleDeclaration.cpp:79
&gt; +    , m_parseMode(!parent || parent-&gt;parseMode())

Ditto.

&gt; WebCore/css/CSSMutableStyleDeclaration.cpp:629
&gt; +    CSSParseMode parseMode_ = parseMode();

s/parseMode_/useParseMode/

&gt;&gt; WebCore/css/CSSParser.h:218
&gt;&gt; +        inline bool strict() const { return m_parseMode == HTMLStrictMode; }
&gt; 
&gt; We have 2 strict modes, HTMLStrictMode and SVGStrictMode, the function name should be self-explanatory. Also, what does HTMLStrictMode mean for SVGStrictMode? Does HTMLStrictMode include SVGStrictMode? If yes we should rethink the enum entries. Or are they exclusive?

Good point Dirk...

&gt; WebCore/css/CSSStyleSelector.cpp:653
&gt; +        CSSParser(m_checker.m_strictParsing ? HTMLStrictMode : HTMLQuirksMode).parsePropertyWithResolvedVariables(current.id(), current.isImportant(), newDecl, &amp;resolvedValueList);

This seems strange as well, it&apos;s correct. But are we sure we won&apos;t need any SVGStrictMode here?
It&apos;s the same question as Dirk has, does HTMLStrictMode include SVGStrictMode... we need to rethink the enum..

&gt; WebCore/css/CSSStyleSheet.cpp:42
&gt; +    , m_parseMode(!parentSheet || parentSheet-&gt;parseMode())

See above, this is wrong.

&gt; WebCore/css/CSSStyleSheet.cpp:63
&gt; +    , m_parseMode(!ownerRule || ownerRule-&gt;parseMode())

See above, this is wrong.

&gt; WebCore/css/CSSStyleSheet.cpp:187
&gt; +    setParseMode(strict ? HTMLStrictMode : HTMLQuirksMode);
&gt; +    CSSParser p(strict ? HTMLStrictMode : HTMLQuirksMode);

Same problem, what about SVG here?

&gt; WebCore/css/MediaList.cpp:123
&gt; -    CSSParser p(true);
&gt; +    CSSParser p;

You&apos;re disabling strict mode here?

&gt; WebCore/css/MediaList.cpp:177
&gt; +    CSSParser p;

Ditto.

&gt; WebCore/css/MediaList.cpp:229
&gt; +    CSSParser p;

Ditto.

&gt; WebCore/css/StyleBase.h:75
&gt; +        CSSParseMode parseMode() const { return !m_parent ? HTMLStrictMode : m_parent-&gt;parseMode(); }

You should reverse the check: return m_parent ? m_parent-&gt; ...

&gt; WebCore/dom/Element.cpp:1554
&gt; +    CSSParser p(strictParsing ? HTMLStrictMode : HTMLQuirksMode);

Are we sure this is never used for SVG?

&gt; WebCore/dom/Node.cpp:1560
&gt; +    CSSParser p(strictParsing ? HTMLStrictMode : HTMLQuirksMode);

Are we sure this is never used for SVG?

&gt; WebCore/dom/Node.cpp:1607
&gt; +    CSSParser p(strictParsing ? HTMLStrictMode : HTMLQuirksMode);

Are we sure this is never used for SVG?

&gt; WebCore/dom/StyledElement.cpp:135
&gt; +#if ENABLE(SVG)
&gt; +    if (isSVGElement())
&gt; +        m_inlineStyleDecl-&gt;setParseMode(SVGStrictMode);
&gt; +    else
&gt; +#endif

Does this really belong here: If the function is virtual (I did not check), then we should reimplement it in SVGStyledElement / SVGElement.

&gt; WebCore/dom/StyledElement.cpp:412
&gt; +#if ENABLE(SVG)
&gt; +    if (isSVGElement())
&gt; +        decl-&gt;setParseMode(SVGStrictMode);
&gt; +    else
&gt; +#endif
&gt; +    decl-&gt;setParseMode(HTMLQuirksMode);

Ditto.

&gt; WebCore/inspector/InspectorStyleSheet.cpp:489
&gt; +    m_pageStyleSheet-&gt;parseString(text, m_pageStyleSheet-&gt;parseMode() == HTMLStrictMode);

Ditto, what about SVG here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299301</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-25 23:09:06 -0700</bug_when>
    <thetext>Attachment 71695 did not build on gtk:
Build output: http://queues.webkit.org/results/4809014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299308</commentid>
    <comment_count>12</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-10-26 00:04:13 -0700</bug_when>
    <thetext>Hi Niko,

Thanks for the extensive review! I am going to address a subset first with a patch and comments, due
to lack of time and because some of the issues below simply need more thinking.
To be clear, the original patch at least caused no regressions.

(In reply to comment #10)
&gt; (From update of attachment 71695 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=71695&amp;action=review
&gt; 
&gt; This needs a lot more test coverage, especially the non CSSParser changes. Each function that uses CSSParser, eg. in CanvasRenderingContext2d::setFont.., Node::querySelector, needs to be tested in a SVG and HTML environment, to be sure the whole parsing is context dependant (no HTMLStrict/QuirksMode for example, when using querySelector on a SVG Element). This is a probably complex todo...

Guess there is no way around it.

&gt; &gt; LayoutTests/ChangeLog:9
&gt; &gt; +        like eee(misses #) are not accepted. Test for strict parsing in SVG stylesheet,
&gt; 
&gt; s/misses/missing/; s/stylesheet/stylesheets/

Fixed.
 
&gt; &gt; LayoutTests/svg/custom/strict-color-parsing.svg:4
&gt; &gt; +&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&gt; &gt; +&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
&gt; &gt; +&lt;text fill=&quot;eee&quot;&gt;This should not be gray&lt;/text&gt;
&gt; &gt; +&lt;/svg&gt;
&gt; 
&gt; Hm, I don&apos;t really like the tests, I think it would be much nicer, if we had a single testcase for the color parsing, and using three different rects, that should not be gray.
&gt; It&apos;s aso easier to spot in the DRT dumps, as for rects the color gets dumped, unlike for text.

I am not sure it can be one test since the stylesheet entry will override the fill PA. Have a look
at the new tests, using text was indeed not convenient.

&gt; &gt; WebCore/ChangeLog:8
&gt; &gt; +        Make CSS parsing more fine-grained for SVG by adding an SVG strict mode.
&gt; 
&gt; s/an SVG/a SVG/

Fixed.
 
&gt; You should describe here, what&apos;s the difference between the individual parsing modes.

Later, once we have thought the enum out :)
 
&gt; &gt; WebCore/css/CSSMutableStyleDeclaration.cpp:54
&gt; &gt; +    , m_parseMode(!parent || parent-&gt;parseMode())
&gt; 
&gt; This doesn&apos;t work. !parent is a bool. You want to use m_parseMode(parent ? parent-&gt;parseMode() : HTMLQuirksMode)

Agreed, but I think it should be HTMLStrictMode instead of  HTMLQuirksMode above.
Fixed.

&gt; &gt; WebCore/css/CSSMutableStyleDeclaration.cpp:66
&gt; &gt; +    , m_parseMode(!parent || parent-&gt;parseMode())
&gt; 
&gt; Ditto.
Fixed.
 
&gt; &gt; WebCore/css/CSSMutableStyleDeclaration.cpp:79
&gt; &gt; +    , m_parseMode(!parent || parent-&gt;parseMode())
&gt; 
&gt; Ditto.
Fixed.
 
&gt; &gt; WebCore/css/CSSMutableStyleDeclaration.cpp:629
&gt; &gt; +    CSSParseMode parseMode_ = parseMode();
&gt; 
&gt; s/parseMode_/useParseMode/

Even causes compile failures.
Fixed.
 
&gt; &gt;&gt; WebCore/css/CSSParser.h:218
&gt; &gt;&gt; +        inline bool strict() const { return m_parseMode == HTMLStrictMode; }
&gt; &gt; 
&gt; &gt; We have 2 strict modes, HTMLStrictMode and SVGStrictMode, the function name should be self-explanatory. Also, what does HTMLStrictMode mean for SVGStrictMode? Does HTMLStrictMode include SVGStrictMode? If yes we should rethink the enum entries. Or are they exclusive?
&gt; 
&gt; Good point Dirk...
Comes down to more thinking about the enum. Maybe on IRC...
One loose idea is to add htmlStrict and strict, where the latter tests both kinds of strictness, svg and html. I really think SVGStrictMode and HTMLStrictMode are the unit processing (10px vs. 10),
that for SVG colors SVGColor should be created instead of CSSPrimitiveValue and that color processing
for SVG should be strict too.

&gt; &gt; WebCore/css/CSSStyleSelector.cpp:653
&gt; &gt; +        CSSParser(m_checker.m_strictParsing ? HTMLStrictMode : HTMLQuirksMode).parsePropertyWithResolvedVariables(current.id(), current.isImportant(), newDecl, &amp;resolvedValueList);
&gt; 
&gt; This seems strange as well, it&apos;s correct. But are we sure we won&apos;t need any SVGStrictMode here?
&gt; It&apos;s the same question as Dirk has, does HTMLStrictMode include SVGStrictMode... we need to rethink the enum..
See above.
 
&gt; &gt; WebCore/css/CSSStyleSheet.cpp:42
&gt; &gt; +    , m_parseMode(!parentSheet || parentSheet-&gt;parseMode())
&gt; 
&gt; See above, this is wrong.
Fixed.
 
&gt; &gt; WebCore/css/CSSStyleSheet.cpp:63
&gt; &gt; +    , m_parseMode(!ownerRule || ownerRule-&gt;parseMode())
&gt; 
&gt; See above, this is wrong.
Fixed.
 
&gt; &gt; WebCore/css/CSSStyleSheet.cpp:187
&gt; &gt; +    setParseMode(strict ? HTMLStrictMode : HTMLQuirksMode);
&gt; &gt; +    CSSParser p(strict ? HTMLStrictMode : HTMLQuirksMode);
&gt; 
&gt; Same problem, what about SVG here?

I think it works now, but haven&apos;t thought it through.
 
&gt; &gt; WebCore/css/MediaList.cpp:123
&gt; &gt; -    CSSParser p(true);
&gt; &gt; +    CSSParser p;
&gt; 
&gt; You&apos;re disabling strict mode here?
No, using the default of HTMLStrictMode, but I made that explicit.
Fixed.
 
&gt; &gt; WebCore/css/MediaList.cpp:177
&gt; &gt; +    CSSParser p;
&gt; 
&gt; Ditto.
Fixed.
 
&gt; &gt; WebCore/css/MediaList.cpp:229
&gt; &gt; +    CSSParser p;
&gt; 
&gt; Ditto.
Fixed.
 
&gt; &gt; WebCore/css/StyleBase.h:75
&gt; &gt; +        CSSParseMode parseMode() const { return !m_parent ? HTMLStrictMode : m_parent-&gt;parseMode(); }
&gt; 
&gt; You should reverse the check: return m_parent ? m_parent-&gt; ...
Fixed.
 
&gt; &gt; WebCore/dom/Element.cpp:1554
&gt; &gt; +    CSSParser p(strictParsing ? HTMLStrictMode : HTMLQuirksMode);
&gt; 
&gt; Are we sure this is never used for SVG?
It probably is, as you said needs tests, so still open.

&gt; &gt; WebCore/dom/StyledElement.cpp:135
&gt; &gt; +#if ENABLE(SVG)
&gt; &gt; +    if (isSVGElement())
&gt; &gt; +        m_inlineStyleDecl-&gt;setParseMode(SVGStrictMode);
&gt; &gt; +    else
&gt; &gt; +#endif
&gt; 
&gt; Does this really belong here: If the function is virtual (I did not check), then we should reimplement it in SVGStyledElement / SVGElement.
&gt; 
&gt; &gt; WebCore/dom/StyledElement.cpp:412
&gt; &gt; +#if ENABLE(SVG)
&gt; &gt; +    if (isSVGElement())
&gt; &gt; +        decl-&gt;setParseMode(SVGStrictMode);
&gt; &gt; +    else
&gt; &gt; +#endif
&gt; &gt; +    decl-&gt;setParseMode(HTMLQuirksMode);
&gt; 
&gt; Ditto.
Unfortunately these are not virtual. Maybe the penalty is not that high to introduce it?

&gt; &gt; WebCore/inspector/InspectorStyleSheet.cpp:489
&gt; &gt; +    m_pageStyleSheet-&gt;parseString(text, m_pageStyleSheet-&gt;parseMode() == HTMLStrictMode);
&gt; 
&gt; Ditto, what about SVG here?

Needs to be tested as well.
Patch coming up.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299311</commentid>
    <comment_count>13</comment_count>
      <attachid>71843</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2010-10-26 00:06:10 -0700</bug_when>
    <thetext>Created attachment 71843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299314</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-26 00:09:40 -0700</bug_when>
    <thetext>Attachment 71843 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/css/CSSParser.cpp:4038:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 31 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>317015</commentid>
    <comment_count>15</comment_count>
      <attachid>71843</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-03 13:36:01 -0800</bug_when>
    <thetext>Comment on attachment 71843
Patch

SVG is part of HTML now.  So it seems we should use HTML parsing quirks when in an HTML document.  I&apos;m not sure I understand this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317022</commentid>
    <comment_count>16</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2010-12-03 13:40:27 -0800</bug_when>
    <thetext>Uh.... no.  SVG is not part of HTML, and in particular the syntax of SVG attributes is defined by SVG, not by HTML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317057</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-03 14:35:01 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Uh.... no.  SVG is not part of HTML, and in particular the syntax of SVG attributes is defined by SVG, not by HTML.

My understanding Boris it that SVG is &quot;part of&quot; HTML5.  However you are correct that semantics of the individual elements (including attribute parsing) are left to the SVG specification:
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-map-element.html#svg-0

So if I have svg content in a HTML document and wish to have a color specified how many different color parsing rules are in effect?

Obviously with this change, setting a color outside of the SVG content (which may be inherited by the SVG content using currentColor) is governed by HTML quirks.

What about setting via style=&quot;&quot;, or via svgElement.fill= or svgElement.setAttribute(&quot;fill&quot;, quirkyColor);

I assume that style is governed by whatever CSS rules quirks are in effect for the document?  Or is setting style= dependent on the element type?  (in which case that seems strange).   And I assume setting fill= or via setAttribute should be identical and governed by SVG&apos;s (non-quriky) color parser?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317059</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-03 14:36:08 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Obviously with this change, setting a color outside of the SVG content (which may be inherited by the SVG content using currentColor) is governed by HTML quirks.

My sentence structure above was a bit odd.  &quot;Obviously with this change&quot; makes no sense with how I ended that sentence and can be ignored. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317090</commentid>
    <comment_count>19</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2010-12-03 15:16:59 -0800</bug_when>
    <thetext>&gt; What about setting via style=&quot;&quot;

Probably needs to be defined in HTML5, which is what defines quirks mode.  But yes, should be the same for all CSS on the page, imo.

&gt; or via svgElement.fill= or svgElement.setAttribute(&quot;fill&quot;, quirkyColor);

Governed by the SVG spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339867</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-25 13:02:08 -0800</bug_when>
    <thetext>So I think this patch is OK.  But I would like to see a test (which probably doesn&apos;t need to be a pixel test, just a text-based test using some fancy JS) which tests *all* the ways we can think of to parse colors in SVG.  As I discussed above with Boris, we need to understand which ones follow HTML5 rules vs. CSS rules vs. SVG rules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357770</commentid>
    <comment_count>21</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-25 01:06:30 -0800</bug_when>
    <thetext>Rob, any news on this patch? Have a look at 54800/55119, these are related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357771</commentid>
    <comment_count>22</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-25 01:07:29 -0800</bug_when>
    <thetext>This blocks the old bug 15012 - getPresentationAttribute doesn&apos;t support SVGColor objects at present, it returns CSSPrimitiveValues, works fine for fill/stroke==SVGPaint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382735</commentid>
    <comment_count>23</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-08 23:44:30 -0700</bug_when>
    <thetext>ping! I hope Rob has another minute :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392808</commentid>
    <comment_count>24</comment_count>
      <attachid>71843</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-04-26 15:23:32 -0700</bug_when>
    <thetext>Comment on attachment 71843
Patch

r- because of Erics comments about a more detailed test and Nikos comment about the possible relation to other bugs. Maybe Rob has more time to look at it next week. Welcome to RIM Rob!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410290</commentid>
    <comment_count>25</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-05-26 01:51:03 -0700</bug_when>
    <thetext>Rob, can you look again? :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575580</commentid>
    <comment_count>26</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-10 14:33:07 -0800</bug_when>
    <thetext>Either me, or someone here in SF will look at this patch soon. As a first step I would replace the strict mode boolean by  an enum:

enum CSSParseMode {
    StrictMode,
    QuirksMode,
};

This shouldn&apos;t cause any difference on behavior.

The next step could be to  turn the enum in something like that:

enum CSSParseMode {
    StrictMode = 1 &lt;&lt; 1,
    QuirksMode = 1 &lt;&lt; 2,
    SVGPresentationMode = 1 &lt;&lt; 3
};

Than we can still differ between quirks and strict mode, but it still allows us to add more logic into the CSSParser just for SVGs presentation attributes - something that we can use for &apos;transform&apos; for instance.

Any comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592628</commentid>
    <comment_count>27</comment_count>
      <attachid>134911</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-30 16:13:05 -0700</bug_when>
    <thetext>Created attachment 134911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592770</commentid>
    <comment_count>28</comment_count>
      <attachid>134911</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-30 20:28:21 -0700</bug_when>
    <thetext>Comment on attachment 134911
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592772</commentid>
    <comment_count>29</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-03-30 20:36:58 -0700</bug_when>
    <thetext>Committed r112769: &lt;http://trac.webkit.org/changeset/112769&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>68118</attachid>
            <date>2010-09-20 11:55:57 -0700</date>
            <delta_ts>2010-09-20 11:55:57 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>test.svg</filename>
            <type>image/svg+xml</type>
            <size>299</size>
            <attacher name="Boris Zbarsky">bzbarsky</attacher>
            
              <data encoding="base64">PHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgNDgwIDMwMCIgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxn
IHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwLCAxNSkiIGlkPSJnYW1lcy1hbGwiPg0KPHRpdGxlPnBs
YXllcnM8L3RpdGxlPg0KPHRleHQgaWQ9ImhlYWRlcnMiIHg9IjAiIHk9IjEwIj4NCjx0c3BhbiB4
PSI0MCIgZmlsbD0iZWVlIj5UaGlzIHNob3VsZCBub3QgYmUgZ3JheTwvdHNwYW4+DQo8L3RleHQ+
DQo8L2c+DQo8L3N2Zz4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70973</attachid>
            <date>2010-10-17 06:13:25 -0700</date>
            <delta_ts>2010-10-24 13:13:35 -0700</delta_ts>
            <desc>First attempt</desc>
            <filename>bug-46112-20101017151803.patch</filename>
            <type>text/plain</type>
            <size>6391</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMjM4NTMxYTI3NjNlODM3ZWJjYTM3MWMwY2NkZDJhMWE0ZTlmZjdiLi44NDRkY2Fh
NjFjMDllMjE2NTE0YzEzZWQwZTgxM2VmNGFkOGExMTk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAK
IDIwMTAtMTAtMTcgIFJvYiBCdWlzICA8cndsYnVpc0BnbWFpbC5jb20+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29sb3JzIHNlZW0gdG8gYmUgcGFy
c2VkIHVzaW5nIEhUTUwgcXVpcmtzIGluIFNWRyBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjExMgorCisgICAgICAgIEFkYXB0IHRl
c3RzIHRvIHRlc3QgdGhpcyBuZXcgaW52YWxpZCBoZXggY2FzZSBib3RoIGZvcgorICAgICAgICBz
ZXR0aW5nIGl0IG9uIGZpbGwgYW5kIHVzaW5nIFNWR1BhaW50LnNldFJHQkNvbG9yLgorCisgICAg
ICAgICogc3ZnL2N1c3RvbS9pbnZhbGlkLWZpbGwtaGV4LnN2ZzoKKyAgICAgICAgKiBzdmcvY3Vz
dG9tL3JnYmNvbG9yLXN5bnRheC5zdmc6CisKKzIwMTAtMTAtMTcgIFJvYiBCdWlzICA8cndsYnVp
c0BnbWFpbC5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRGlyayBTY2h1bHplLgogCiAgICAg
ICAgIFRleHQgdW5kZXIgbmVzdGVkIGxpbmsgZHJvcHBlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3ZnL2N1c3RvbS9pbnZhbGlkLWZpbGwtaGV4LnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0
b20vaW52YWxpZC1maWxsLWhleC5zdmcKaW5kZXggMWI5MDYyYjk5ZDQwOTljN2M2MzY5ZDNiNjcw
M2NmNTMwY2JkN2NhZi4uNzRlMjc0YmYxNTE4OTFlMmZjNTVhYWRmODdkMjFhYjg4ZjE0Mjc5NCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbnZhbGlkLWZpbGwtaGV4LnN2Zwor
KysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2ludmFsaWQtZmlsbC1oZXguc3ZnCkBAIC0zLDYg
KzMsNyBAQAogICA8ZyBmaWxsPSJvcmFuZ2UiPgogICAgIDxyZWN0IHdpZHRoPSIxMDAiIGhlaWdo
dD0iMTAwIiBmaWxsPSJyZWQiLz4KICAgICA8cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIg
ZmlsbD0iI2ZmIi8+CisgICAgPHJlY3Qgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImVl
ZSIvPgogICAgIDxnIGZpbGw9ImJsYWNrIj4KICAgICAgIDx0ZXh0IHg9IjEwIiB5PSIxMzAiPlRo
ZSBhYm92ZSByZWN0IHNob3VsZCBiZSBSRUQuPC90ZXh0PgogICAgICAgPHRleHQgeD0iMTAiIHk9
IjE1MCI+U1ZHIDEuMSBGVUxMIHNheXMgdGhlcmUgc2hvdWxkIGJlIGEgImhpZ2hseSBwZXJjZWl2
YWJsZSBlcnJvciIgbWVzc2FnZSB3aGVuIGFuIGludmFsaWQgZmlsbCBpcyB1c2VkLjwvdGV4dD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcmdiY29sb3Itc3ludGF4LnN2ZyBi
L0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcmdiY29sb3Itc3ludGF4LnN2ZwppbmRleCBiNDc1NmRi
YTM1NTY3MmVkOWQ4NjIwMWMzY2YxNDZjZmM2YzllNDU4Li5lOTUzODhmMzNlNGFjOTQwZWY5MWFh
YWNlY2NiMTY3M2Y0NGZhZDhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3Jn
YmNvbG9yLXN5bnRheC5zdmcKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9yZ2Jjb2xvci1z
eW50YXguc3ZnCkBAIC00NCw2ICs0NCw4IEBACiAgICAgaWYgKCFleHBlY3RzRXhjZXB0aW9uKGNv
bCwgIiNmZmZmZiIpKSByZXR1cm47CiAgICAgaWYgKCFleHBlY3RzRXhjZXB0aW9uKGNvbCwgIiNm
ZmZmZmZmIikpIHJldHVybjsKICAgICBpZiAoIWV4cGVjdHNFeGNlcHRpb24oY29sLCAiZ3JlZW4s
IikpIHJldHVybjsKKyAgICBpZiAoIWV4cGVjdHNFeGNlcHRpb24oY29sLCAiZWVlIikpIHJldHVy
bjsKKyAgICBpZiAoIWV4cGVjdHNFeGNlcHRpb24oY29sLCAiZThlIikpIHJldHVybjsKICAgICBp
ZiAoIWV4cGVjdHNWYWxpZChjb2wsICJyZ2IoMCwgMTAsIDIwKSIsICIjMDAwQTE0IikpIHJldHVy
bjsKICAgICBpZiAoIWV4cGVjdHNWYWxpZChjb2wsICIjRkZGIiwgIiNGRkZGRkYiKSkgcmV0dXJu
OwogICAgIGlmICghZXhwZWN0c1ZhbGlkKGNvbCwgIiNGRkZGRkYiLCAiI0ZGRkZGRiIpKSByZXR1
cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGNkMTM4NGI2YzA0MjZmMzI3MjAyNjMxNmQyODUzNzRhZTk0Mjc1ZTQuLjVmMDU3NzM0NDY3
ZGQ0NWNjMzE1Y2VhMzMzOGRhMDJkOTk2NTc4NDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTAtMTAtMTcg
IFJvYiBCdWlzICA8cndsYnVpc0BnbWFpbC5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ29sb3JzIHNlZW0gdG8gYmUgcGFyc2VkIHVzaW5nIEhU
TUwgcXVpcmtzIGluIFNWRyBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjExMgorCisgICAgICAgIEFsd2F5cyBwYXJzZSBTVkcgQ1NT
IGNvbG9ycyBpbiBzdHJpY3QgbW9kZS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvckZyb21WYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1Bh
cnNlci5oOgorICAgICAgICAqIHN2Zy9TVkdDb2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcpOgorCisyMDEwLTEwLTE3ICBSb2IgQnVp
cyAgPHJ3bGJ1aXNAZ21haWwuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6
ZS4KIAogICAgICAgICBUZXh0IHVuZGVyIG5lc3RlZCBsaW5rIGRyb3BwZWQKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmlu
ZGV4IDI2YzM4NzZlYjNkZWQ5NTM4MGU0NjU3NzZhMWFhMGYwZTVkOTdlMzguLjMxZDljZGIyMThh
MmYwNmQ4MzFmNmQ5NmU5ZGYxYzFmNDk5ZThhNDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtNDAyOCwyMiAr
NDAyOCwyMiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNlclZh
bHVlKiB2YWx1ZSwgZG91YmxlKiBjb2xvckFycmF5LCBibwogUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKENTU1BhcnNlclZhbHVlKiB2YWx1ZSkKIHsK
ICAgICBSR0JBMzIgYyA9IENvbG9yOjp0cmFuc3BhcmVudDsKLSAgICBpZiAoIXBhcnNlQ29sb3JG
cm9tVmFsdWUodmFsdWUgPyB2YWx1ZSA6IG1fdmFsdWVMaXN0LT5jdXJyZW50KCksIGMpKQorICAg
IGlmICghcGFyc2VDb2xvckZyb21WYWx1ZSh2YWx1ZSA/IHZhbHVlIDogbV92YWx1ZUxpc3QtPmN1
cnJlbnQoKSwgYywgbV9zdHJpY3QpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKGMpOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFy
c2VDb2xvckZyb21WYWx1ZShDU1NQYXJzZXJWYWx1ZSogdmFsdWUsIFJHQkEzMiYgYykKK2Jvb2wg
Q1NTUGFyc2VyOjpwYXJzZUNvbG9yRnJvbVZhbHVlKENTU1BhcnNlclZhbHVlKiB2YWx1ZSwgUkdC
QTMyJiBjLCBib29sIHN0cmljdCkKIHsKLSAgICBpZiAoIW1fc3RyaWN0ICYmIHZhbHVlLT51bml0
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSICYmCi0gICAgICAgIHZhbHVlLT5mVmFs
dWUgPj0gMC4gJiYgdmFsdWUtPmZWYWx1ZSA8IDEwMDAwMDAuKSB7CisgICAgaWYgKCFzdHJpY3Qg
JiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIKKyAgICAgICAg
JiYgdmFsdWUtPmZWYWx1ZSA+PSAwLiAmJiB2YWx1ZS0+ZlZhbHVlIDwgMTAwMDAwMC4pIHsKICAg
ICAgICAgU3RyaW5nIHN0ciA9IFN0cmluZzo6Zm9ybWF0KCIlMDZkIiwgKGludCkodmFsdWUtPmZW
YWx1ZSsuNSkpOwotICAgICAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihzdHIsIGMsIG1f
c3RyaWN0KSkKKyAgICAgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3Ioc3RyLCBjLCBzdHJp
Y3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gZWxzZSBpZiAodmFsdWUtPnVu
aXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1IgfHwKICAgICAgICAg
ICAgICAgICB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UIHx8Ci0g
ICAgICAgICAgICAgICAgKCFtX3N0cmljdCAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0RJTUVOU0lPTikpIHsKLSAgICAgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29s
b3IodmFsdWUtPnN0cmluZywgYywgbV9zdHJpY3QgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19JREVOVCkpCisgICAgICAgICAgICAgICAgKCFzdHJpY3QgJiYgdmFsdWUt
PnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT04pKSB7CisgICAgICAgIGlm
ICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHZhbHVlLT5zdHJpbmcsIGMsIHN0cmljdCAmJiB2YWx1
ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9IGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1BhcnNlclZhbHVl
OjpGdW5jdGlvbiAmJgogICAgICAgICAgICAgICAgIHZhbHVlLT5mdW5jdGlvbi0+YXJncyAhPSAw
ICYmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5oCmluZGV4IDhmM2M2ZGQyYjdkMjdlZjJlNWQ0MzJiOTA0NTQ2YTgwZTc1Y2YyYTcu
LmRjYTE5NjRjMzAyOTQyYTZlN2U1MWQyMWQ3MzZlNTllYzExYjQ0MjUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0x
MjUsNyArMTI1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHBhcnNlQ29s
b3JQYXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlKiwgaW50KiBjb2xvclZhbHVlcywgYm9vbCBwYXJz
ZUFscGhhKTsKICAgICAgICAgYm9vbCBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUq
LCBkb3VibGUqIGNvbG9yVmFsdWVzLCBib29sIHBhcnNlQWxwaGEpOwogICAgICAgICBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZUNvbG9yKENTU1BhcnNlclZhbHVlKiA9IDApOwot
ICAgICAgICBib29sIHBhcnNlQ29sb3JGcm9tVmFsdWUoQ1NTUGFyc2VyVmFsdWUqLCBSR0JBMzIm
KTsKKyAgICAgICAgYm9vbCBwYXJzZUNvbG9yRnJvbVZhbHVlKENTU1BhcnNlclZhbHVlKiwgUkdC
QTMyJiwgYm9vbCBzdHJpY3QgPSB0cnVlKTsKICAgICAgICAgdm9pZCBwYXJzZVNlbGVjdG9yKGNv
bnN0IFN0cmluZyYsIERvY3VtZW50KiBkb2MsIENTU1NlbGVjdG9yTGlzdCYpOwogCiAgICAgICAg
IHN0YXRpYyBib29sIHBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiwgUkdCQTMyJiByZ2IsIGJvb2wg
c3RyaWN0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcCBiL1dlYkNvcmUv
c3ZnL1NWR0NvbG9yLmNwcAppbmRleCA3NTkwMGFkMzNiMGRjMjM2MjY5ODk1MDI5YWViYmJhNDlk
ZjI1ZjlmLi43NWMxNDkxYmRlNmM4NmEwNTQ0YjdkN2U5OWRiN2RmYzUxMTIyMTA4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHQ29sb3Iu
Y3BwCkBAIC02OSw3ICs2OSw3IEBAIENvbG9yIFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0
cmluZyhjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nKQogICAgIFN0cmluZyBzID0gY29sb3JTdHJp
bmcuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgLy8gRklYTUU6IHJld29yayBjc3MgcGFyc2VyIHNv
IGl0IGlzIG1vcmUgc3ZnIGF3YXJlCiAgICAgUkdCQTMyIGNvbG9yOwotICAgIGlmIChDU1NQYXJz
ZXI6OnBhcnNlQ29sb3IoY29sb3IsIHMpKQorICAgIGlmIChDU1NQYXJzZXI6OnBhcnNlQ29sb3Io
Y29sb3IsIHMsIHRydWUpKQogICAgICAgICByZXR1cm4gY29sb3I7CiAgICAgcmV0dXJuIENvbG9y
KCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71695</attachid>
            <date>2010-10-24 13:13:44 -0700</date>
            <delta_ts>2010-10-26 00:06:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46112-20101024221828.patch</filename>
            <type>text/plain</type>
            <size>64406</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3OTI1ZmI4NjU4ZjdkODE5MzcyYjg3MjI3NGU3ODQ1M2FhZGRmYjg4Li41MWU4OTll
MmU3ZTMzZDk0NzliOGZiZDhjNTJiMzQ5OWVkNzIzNzljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMTAtMTAtMjQgIFJvYiBCdWlzICA8cndsYnVpc0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29sb3JzIHNlZW0gdG8gYmUgcGFy
c2VkIHVzaW5nIEhUTUwgcXVpcmtzIGluIFNWRyBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjExMgorCisgICAgICAgIFRlc3QgdGhh
dCBwYXJzaW5nIG9mIGNvbG9ycyBpbiBTVkcgaXMgZG9uZSBzdHJpY3Qgc28gdGhhdCBpbnZhbGlk
IGhleGNvbG9yCisgICAgICAgIGxpa2UgZWVlKG1pc3NlcyAjKSBhcmUgbm90IGFjY2VwdGVkLiBU
ZXN0IGZvciBzdHJpY3QgcGFyc2luZyBpbiBTVkcgc3R5bGVzaGVldCwKKyAgICAgICAgc3R5bGUg
YXR0cmlidXRlIGFuZCBwcmVzZW50YXRpb24gYXR0cmlidXRlLgorCisgICAgICAgICogcGxhdGZv
cm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmctZXhwZWN0ZWQuY2hlY2tzdW06
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcvY3VzdG9tL3N0cmljdC1jb2xvci1w
YXJzaW5nLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9j
dXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzItZXhwZWN0ZWQu
Y2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcvY3VzdG9tL3N0cmlj
dC1jb2xvci1wYXJzaW5nMi1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9zdmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5nMi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9zdmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5n
My1leHBlY3RlZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9j
dXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmczLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmczLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZy5z
dmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmcyLnN2
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzMuc3Zn
OiBBZGRlZC4KKwogMjAxMC0xMC0yMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjcwMzY3LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9y
LXBhcnNpbmctZXhwZWN0ZWQuY2hlY2tzdW0gYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3Zn
L2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZy1leHBlY3RlZC5jaGVja3N1bQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNjlhMzcxYmQxNjRmMDY1NzdkZTIyYTU0OWNhYjg0YzRlNzI5MzhjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBh
cnNpbmctZXhwZWN0ZWQuY2hlY2tzdW0KQEAgLTAsMCArMSBAQAorODUzZGUwMDU2N2QxMjFiZWEw
YjdiZWNlNjZhNWQ2MWMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZy1l
eHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3Qt
Y29sb3ItcGFyc2luZy1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJmZGU5NWZmZDI2MGZlMDU2
NDQyYmNhM2ZlOTAwN2M3YTIxNWNhZApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTA1NDAKemNt
ZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMUIlUWxZYnBRPVNaNnZyMlk1Tz1EK0Nu
ZnIpQjEoCnpHQjh2eXdvZFdSeERwYEpfUDxCN1gtbV9KdHp1SWlJQ1hEUHdZJCgyYTY1REJ3VFhv
aXpiYDFBRmV5JSNALTtTYAp6REprRks7ZHRqflJGfH1UTjRNNF5yKEZSQk9TdmFIejBNOX5ET3tA
NTtiYjBrPzchTXVBRlZLYm03aGlEPmQoSiEKelYraUZCP25genhOd3sldF9zTWxEJTNnZUUqakIr
NXkyODxQTV5NfUlFJFR3UVluTyVESnp4S0ZkJSUqXk9gZ1pQCnp6Ukoke3VfZ0VHVSs/fjtfcGol
RGAhKDw5dWdaSz1Kej1JVXg3U0BjMmNsS14rNGg4Z0k9TkBeQEBFfD4kckBBRAp6dGU/MVRTSEox
RiZvT1FtQDVoOVclWkgyYFIrKGlMd0xMY1NPSlV1KUckU1NUT3lIKXg8LVc2UlJOclF2bXNyO0oK
eipSQWVFPGJgOFhgeCkwfUhATkMrWik0PF8qdnF7cER0QEVzNi1NcGZqVD8xRVo9WVhjRlRiP3gm
Z3E8K1pgeS1iCnpFbmY0fGRGN1g0K1lMWFk0MnJqZ3szPX0/R0hkNXFuS2g0UnJpJEVJdl8zV1Fs
KHhiT15CWlM+b1YxTVVYcjVPUwp6JTNVeklfKVI/MTVqfT9NX0RzQHA0NSNJcEpFYXordm54SG5u
T0VAaXNPQ0E9N2JoJjIjfk5FdHhvLUNRU0p+UlIKej8lR0BPWmZFM08zN1dSX3I9RVh0dE5OV3E5
X0duNnY8bEFzaSNrQGxid2Y0KHI8NERicDB7a1RvO0chMiQqUmVsCnpVNXMhNG5qfClOX3NRTlQp
c25eajx+dGomaGE5X21TJGV+IWkpWUhldiZnKk15dz44cFluRD4hd31kfG9HZTMlNgp6Sj9afGBN
eTA+dlh0VTk+ZUVWcylyWWxeKEprTXJjeDJMYn1faWJ8fVVwPHVjM3xuTERFYy1GQz95Y0EpcXhW
KT4Kej88fVZNS2Y4SWBpREg+SFJ6X2o3X2h1JDQ3aDUlRUp2aVhYQ3QybUE8ckIzdXt6QkhGIXlv
cis+OGhPQ3Qpc1E7CnohXn4+Qy1fP0UjNCV7YFdsVjRRV1Y9XyVTPENwY3srNWc9M3VlXlY4Zjgw
dWFsTW94X2NZJjhCX1d6ayVuM0AqWgp6K2FyQk48TUhXUE8rVk9IPVB0a1FIMEBlcW9UR25TPGI5
RUtkZGN4Q157WSowST4rPyp4OTx7Sj07SkdxVnNtcnIKem58JlZKZXlJSmFEWlZLLU9LeitGSWxH
bXNwSHdhR2xieU15dUZ4IW9IfmF0USlkYG4ydF5WKyZjWT5aeF9RR3xjCno8fTJASmI/OylId2FZ
czxJUXB2SnpQQk9ZcjxaPnozUkNtamxzRW5BQCpCOyltJW9KaD9KfG1IYDdjJnlfKCM4Iwp6R2tW
OWVnKHZHWDR4TFQpQCYze0c7RzJCOCQ0fnR+eW97fSl5ZnhtfCkoaXteNDR5OElBcip7b3VXI2dL
UH5jJVAKek8hejtTSWpMank5TS1yXm0rczZmS1B7LT4oNz9kUiNLSXc8O0dpSTJhaj1hTyFpRVVl
RmZ1KzgxVzdeRm9NMihgCnphTGV0MFgjazJjSzRLcjA5fVM8O15hMEw4cXhvYUJkPkFic045ellA
ZypzWTRqPHlkKitlZjRBIV9vSFBYIX4lcQp6ZUYqR2hqPCUwUytzQzhyPEkobzxYIXtzRTs1T1Bu
ODB7YTdfNzZ0OzJjIUxpKGYrfGB8NnNJI0Z4byNGb25JV0MKelVtY3hhcnVPeyQjcmJrTjM9Rkli
S3grWDsrWnY7N2puVEhvWGpAfm50dWZmejhqYWo5ISNVUVpwUDMqNVRte01DCk0+RlZkUSZNQmJA
MEtoZjx2O1k3QQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmctZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBh
cnNpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExMWE3NWQyMTg3NmNjNmNkZWZiZTZhMWEz
ZDk2M2EyOThiOGYxYzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw3IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJTVkdS
b290IHtzdmd9IGF0ICgwLDApIHNpemUgMTQ5eDQKKyAgICBSZW5kZXJTVkdUZXh0IHt0ZXh0fSBh
dCAoMCwtMTQpIHNpemUgMTQ5eDE4IGNvbnRhaW5zIDEgY2h1bmsocykKKyAgICAgIFJlbmRlclNW
R0lubGluZVRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE0OXgxOAorICAgICAgICBjaHVuayAx
IHRleHQgcnVuIDEgYXQgKDAuMDAsMC4wMCkgc3RhcnRPZmZzZXQgMCBlbmRPZmZzZXQgMjMgd2lk
dGggMTQ5LjAwOiAiVGhpcyBzaG91bGQgbm90IGJlIGdyYXkiCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzItZXhwZWN0
ZWQuY2hlY2tzdW0gYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3Qt
Y29sb3ItcGFyc2luZzItZXhwZWN0ZWQuY2hlY2tzdW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDY5YTM3MWJkMTY0
ZjA2NTc3ZGUyMmE1NDljYWI4NGM0ZTcyOTM4YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5nMi1leHBlY3Rl
ZC5jaGVja3N1bQpAQCAtMCwwICsxIEBACis4NTNkZTAwNTY3ZDEyMWJlYTBiN2JlY2U2NmE1ZDYx
YwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9zdmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5nMi1leHBlY3RlZC5wbmcg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2lu
ZzItZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyZmRlOTVmZmQyNjBmZTA1NjQ0MmJjYTNmZTkw
MDdjN2EyMTVjYWQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEwNTQwCnpjbWVBU0BOPyhvbEh5
YHVWQnEhaWEweX55VXsrdllWMmE+aTFCJVFsWWJwUT1TWjZ2cjJZNU89RCtDbmZyKUIxKAp6R0I4
dnl3b2RXUnhEcGBKX1A8QjdYLW1fSnR6dUlpSUNYRFB3WSQoMmE2NURCd1RYb2l6YmAxQUZleSUj
QC07U2AKekRKa0ZLO2R0an5SRnx9VE40TTRecihGUkJPU3ZhSHowTTl+RE97QDU7YmIwaz83IU11
QUZWS2JtN2hpRD5kKEohCnpWK2lGQj9uYHp4Tnd7JXRfc01sRCUzZ2VFKmpCKzV5Mjg8UE1eTX1J
RSRUd1FZbk8lREp6eEtGZCUlKl5PYGdaUAp6elJKJHt1X2dFR1UrP347X3BqJURgISg8OXVnWks9
Sno9SVV4N1NAYzJjbEteKzRoOGdJPU5AXkBARXw+JHJAQUQKenRlPzFUU0hKMUYmb09RbUA1aDlX
JVpIMmBSKyhpTHdMTGNTT0pVdSlHJFNTVE95SCl4PC1XNlJSTnJRdm1zcjtKCnoqUkFlRTxiYDhY
YHgpMH1IQE5DK1opNDxfKnZxe3BEdEBFczYtTXBmalQ/MUVaPVlYY0ZUYj94JmdxPCtaYHktYgp6
RW5mNHxkRjdYNCtZTFhZNDJyamd7Mz19P0dIZDVxbktoNFJyaSRFSXZfM1dRbCh4Yk9eQlpTPm9W
MU1VWHI1T1MKeiUzVXpJXylSPzE1an0/TV9Ec0BwNDUjSXBKRWF6K3ZueEhubk9FQGlzT0NBPTdi
aCYyI35ORXR4by1DUVNKflJSCno/JUdAT1pmRTNPMzdXUl9yPUVYdHROTldxOV9HbjZ2PGxBc2kj
a0BsYndmNChyPDREYnAwe2tUbztHITIkKlJlbAp6VTVzITRuanwpTl9zUU5UKXNuXmo8fnRqJmhh
OV9tUyRlfiFpKVlIZXYmZypNeXc+OHBZbkQ+IXd9ZHxvR2UzJTYKeko/WnxgTXkwPnZYdFU5PmVF
VnMpcllsXihKa01yY3gyTGJ9X2lifH1VcDx1YzN8bkxERWMtRkM/eWNBKXF4Vik+Cno/PH1WTUtm
OElgaURIPkhSel9qN19odSQ0N2g1JUVKdmlYWEN0Mm1BPHJCM3V7ekJIRiF5b3IrPjhoT0N0KXNR
Owp6IV5+PkMtXz9FIzQle2BXbFY0UVdWPV8lUzxDcGN7KzVnPTN1ZV5WOGY4MHVhbE1veF9jWSY4
Ql9XemslbjNAKloKeithckJOPE1IV1BPK1ZPSD1QdGtRSDBAZXFvVEduUzxiOUVLZGRjeENee1kq
MEk+Kz8qeDk8e0o9O0pHcVZzbXJyCnpufCZWSmV5SUphRFpWSy1PS3orRklsR21zcEh3YUdsYnlN
eXVGeCFvSH5hdFEpZGBuMnReVismY1k+WnhfUUd8Ywp6PH0yQEpiPzspSHdhWXM8SVFwdkp6UEJP
WXI8Wj56M1JDbWpsc0VuQUAqQjspbSVvSmg/SnxtSGA3YyZ5XygjOCMKekdrVjllZyh2R1g0eExU
KUAmM3tHO0cyQjgkNH50fnlve30peWZ4bXwpKGl7XjQ0eThJQXIqe291VyNnS1B+YyVQCnpPIXo7
U0lqTGp5OU0tcl5tK3M2ZktQey0+KDc/ZFIjS0l3PDtHaUkyYWo9YU8haUVVZUZmdSs4MVc3XkZv
TTIoYAp6YUxldDBYI2syY0s0S3IwOX1TPDteYTBMOHF4b2FCZD5BYnNOOXpZQGcqc1k0ajx5ZCor
ZWY0QSFfb0hQWCF+JXEKemVGKkdoajwlMFMrc0M4cjxJKG88WCF7c0U7NU9Qbjgwe2E3Xzc2dDsy
YyFMaShmK3xgfDZzSSNGeG8jRm9uSVdDCnpVbWN4YXJ1T3skI3Jia04zPUZJYkt4K1g7K1p2Ozdq
blRIb1hqQH5udHVmZno4amFqOSEjVVFacFAzKjVUbXtNQwpNPkZWZFEmTUJiQDBLaGY8djtZN0EK
CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9zdmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5nMi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExMWE3NWQyMTg3NmNjNmNkZWZiZTZhMWEzZDk2M2EyOThi
OGYxYzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1
c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyU1ZHUm9vdCB7c3Zn
fSBhdCAoMCwwKSBzaXplIDE0OXg0CisgICAgUmVuZGVyU1ZHVGV4dCB7dGV4dH0gYXQgKDAsLTE0
KSBzaXplIDE0OXgxOCBjb250YWlucyAxIGNodW5rKHMpCisgICAgICBSZW5kZXJTVkdJbmxpbmVU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNDl4MTgKKyAgICAgICAgY2h1bmsgMSB0ZXh0IHJ1
biAxIGF0ICgwLjAwLDAuMDApIHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDIzIHdpZHRoIDE0OS4w
MDogIlRoaXMgc2hvdWxkIG5vdCBiZSBncmF5IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmczLWV4cGVjdGVkLmNoZWNr
c3VtIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBh
cnNpbmczLWV4cGVjdGVkLmNoZWNrc3VtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2OWEzNzFiZDE2NGYwNjU3N2Rl
MjJhNTQ5Y2FiODRjNGU3MjkzOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzMtZXhwZWN0ZWQuY2hlY2tz
dW0KQEAgLTAsMCArMSBAQAorODUzZGUwMDU2N2QxMjFiZWEwYjdiZWNlNjZhNWQ2MWMKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzMtZXhwZWN0ZWQucG5nIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmczLWV4cGVj
dGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMmZkZTk1ZmZkMjYwZmUwNTY0NDJiY2EzZmU5MDA3YzdhMjE1
Y2FkCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMDU0MAp6Y21lQVNATj8ob2xIeWB1VkJxIWlh
MHl+eVV7K3ZZVjJhPmkxQiVRbFlicFE9U1o2dnIyWTVPPUQrQ25mcilCMSgKekdCOHZ5d29kV1J4
RHBgSl9QPEI3WC1tX0p0enVJaUlDWERQd1kkKDJhNjVEQndUWG9pemJgMUFGZXklI0AtO1NgCnpE
SmtGSztkdGp+UkZ8fVRONE00XnIoRlJCT1N2YUh6ME05fkRPe0A1O2JiMGs/NyFNdUFGVktibTdo
aUQ+ZChKIQp6VitpRkI/bmB6eE53eyV0X3NNbEQlM2dlRSpqQis1eTI4PFBNXk19SUUkVHdRWW5P
JURKenhLRmQlJSpeT2BnWlAKenpSSiR7dV9nRUdVKz9+O19waiVEYCEoPDl1Z1pLPUp6PUlVeDdT
QGMyY2xLXis0aDhnST1OQF5AQEV8PiRyQEFECnp0ZT8xVFNISjFGJm9PUW1ANWg5VyVaSDJgUiso
aUx3TExjU09KVXUpRyRTU1RPeUgpeDwtVzZSUk5yUXZtc3I7Sgp6KlJBZUU8YmA4WGB4KTB9SEBO
QytaKTQ8Xyp2cXtwRHRARXM2LU1wZmpUPzFFWj1ZWGNGVGI/eCZncTwrWmB5LWIKekVuZjR8ZEY3
WDQrWUxYWTQycmpnezM9fT9HSGQ1cW5LaDRScmkkRUl2XzNXUWwoeGJPXkJaUz5vVjFNVVhyNU9T
CnolM1V6SV8pUj8xNWp9P01fRHNAcDQ1I0lwSkVheit2bnhIbm5PRUBpc09DQT03YmgmMiN+TkV0
eG8tQ1FTSn5SUgp6PyVHQE9aZkUzTzM3V1Jfcj1FWHR0Tk5XcTlfR242djxsQXNpI2tAbGJ3ZjQo
cjw0RGJwMHtrVG87RyEyJCpSZWwKelU1cyE0bmp8KU5fc1FOVClzbl5qPH50aiZoYTlfbVMkZX4h
aSlZSGV2JmcqTXl3PjhwWW5EPiF3fWR8b0dlMyU2CnpKP1p8YE15MD52WHRVOT5lRVZzKXJZbF4o
SmtNcmN4MkxifV9pYnx9VXA8dWMzfG5MREVjLUZDP3ljQSlxeFYpPgp6Pzx9Vk1LZjhJYGlESD5I
UnpfajdfaHUkNDdoNSVFSnZpWFhDdDJtQTxyQjN1e3pCSEYheW9yKz44aE9DdClzUTsKeiFefj5D
LV8/RSM0JXtgV2xWNFFXVj1fJVM8Q3Bjeys1Zz0zdWVeVjhmODB1YWxNb3hfY1kmOEJfV3prJW4z
QCpaCnorYXJCTjxNSFdQTytWT0g9UHRrUUgwQGVxb1RHblM8YjlFS2RkY3hDXntZKjBJPis/Kng5
PHtKPTtKR3FWc21ycgp6bnwmVkpleUlKYURaVkstT0t6K0ZJbEdtc3BId2FHbGJ5TXl1Rnghb0h+
YXRRKWRgbjJ0XlYrJmNZPlp4X1FHfGMKejx9MkBKYj87KUh3YVlzPElRcHZKelBCT1lyPFo+ejNS
Q21qbHNFbkFAKkI7KW0lb0poP0p8bUhgN2MmeV8oIzgjCnpHa1Y5ZWcodkdYNHhMVClAJjN7RztH
MkI4JDR+dH55b3t9KXlmeG18KShpe140NHk4SUFyKntvdVcjZ0tQfmMlUAp6TyF6O1NJakxqeTlN
LXJebStzNmZLUHstPig3P2RSI0tJdzw7R2lJMmFqPWFPIWlFVWVGZnUrODFXN15Gb00yKGAKemFM
ZXQwWCNrMmNLNEtyMDl9Uzw7XmEwTDhxeG9hQmQ+QWJzTjl6WUBnKnNZNGo8eWQqK2VmNEEhX29I
UFghfiVxCnplRipHaGo8JTBTK3NDOHI8SShvPFghe3NFOzVPUG44MHthN183NnQ7MmMhTGkoZit8
YHw2c0kjRnhvI0ZvbklXQwp6VW1jeGFydU97JCNyYmtOMz1GSWJLeCtYOytadjs3am5USG9YakB+
bnR1ZmZ6OGphajkhI1VRWnBQMyo1VG17TUMKTT5GVmRRJk1CYkAwS2hmPHY7WTdBCgpsaXRlcmFs
IDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3Zn
L2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmczLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMTFhNzVkMjE4NzZjYzZjZGVmYmU2YTFhM2Q5NjNhMjk4YjhmMWMwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3Ry
aWN0LWNvbG9yLXBhcnNpbmczLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK2xheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclNWR1Jvb3Qge3N2Z30gYXQgKDAs
MCkgc2l6ZSAxNDl4NAorICAgIFJlbmRlclNWR1RleHQge3RleHR9IGF0ICgwLC0xNCkgc2l6ZSAx
NDl4MTggY29udGFpbnMgMSBjaHVuayhzKQorICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMTQ5eDE4CisgICAgICAgIGNodW5rIDEgdGV4dCBydW4gMSBhdCAo
MC4wMCwwLjAwKSBzdGFydE9mZnNldCAwIGVuZE9mZnNldCAyMyB3aWR0aCAxNDkuMDA6ICJUaGlz
IHNob3VsZCBub3QgYmUgZ3JheSIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20v
c3RyaWN0LWNvbG9yLXBhcnNpbmcuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdHJpY3Qt
Y29sb3ItcGFyc2luZy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTEwZGE2YTZiZWQ2Njg4Y2Y2ZTg4MDQyMGEy
ZDYwYmIwYTExMjMwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20v
c3RyaWN0LWNvbG9yLXBhcnNpbmcuc3ZnCkBAIC0wLDAgKzEsNCBAQAorPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIj4KKzx0ZXh0IGZpbGw9ImVlZSI+VGhpcyBzaG91bGQgbm90IGJlIGdyYXk8L3RleHQ+
Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9y
LXBhcnNpbmcyLnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNp
bmcyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jZDllNTkxNDNkZjVhNWViNDhhMDJjODg2ZTMzNjMzNzExNGVj
NzczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdHJpY3QtY29s
b3ItcGFyc2luZzIuc3ZnCkBAIC0wLDAgKzEsNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0iVVRGLTgiPz4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4K
Kzx0ZXh0IHN0eWxlPSJmaWxsOmVlZSI+VGhpcyBzaG91bGQgbm90IGJlIGdyYXk8L3RleHQ+Cis8
L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBh
cnNpbmczLnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmcz
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jYTM4YzkwNmUwZTk5ZTg4NTYzZWM0NjI2OGJlYWM1NmVmNzBlZTgz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3It
cGFyc2luZzMuc3ZnCkBAIC0wLDAgKzEsNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0iVVRGLTgiPz4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKzxz
dHlsZT4KKyAgICB0ZXh0IHsgZmlsbDplZWU7IH0KKzwvc3R5bGU+Cis8dGV4dD5UaGlzIHNob3Vs
ZCBub3QgYmUgZ3JheTwvdGV4dD4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNDFlZTAyN2E5YWIxYWNhNDEwODhiN2YwZGIx
NGE3ZDMwMTE1YjczLi5kOTliMzkyYmE0NzkxMjQ3YzQ5ZDk1N2NiY2ZjNzM5ZDZmNDA0NDJkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDk1IEBACisyMDEwLTEwLTI0ICBSb2IgQnVpcyAgPHJ3bGJ1aXNAZ21haWwuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbG9ycyBz
ZWVtIHRvIGJlIHBhcnNlZCB1c2luZyBIVE1MIHF1aXJrcyBpbiBTVkcgYXR0cmlidXRlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYxMTIKKworICAg
ICAgICBNYWtlIENTUyBwYXJzaW5nIG1vcmUgZmluZS1ncmFpbmVkIGZvciBTVkcgYnkgYWRkaW5n
IGFuIFNWRyBzdHJpY3QgbW9kZS4KKyAgICAgICAgVGhpcyByZXF1aXJlcyBjaGFuZ2luZyB0aGUg
c3RyaWN0IHBhcnNpbmcgYm9vbGVhbiB0byBhbiBlbnVtZXJhdGlvbi4KKyAgICAgICAgQmVsb3cg
dGhlIGltcG9ydGFudCBjaGFuZ2VzIGFyZSBkZXNjcmliZWQsIHRoZSByZXN0IGlzIGFkYXB0aW5n
IHRvIHRoZSBuZXcKKyAgICAgICAgZW51bWVyYXRpb24gYW5kIGNoYW5nZWQgQVBJLgorCisgICAg
ICAgIFRlc3RzOiBzdmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5nLnN2ZworICAgICAgICAg
ICAgICAgc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzIuc3ZnCisgICAgICAgICAgICAg
ICBzdmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5nMy5zdmcKKworICAgICAgICAqIGNzcy9D
U1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU0ltcG9ydFJ1bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6c2V0Q1NTU3R5bGVTaGVldCk6CisgICAgICAgICogY3Nz
L0NTU01lZGlhUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNZWRpYVJ1bGU6Omluc2Vy
dFJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6c2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb246OnBhcnNlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldExlbmd0aFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KToKKyAgICAgICAgKiBj
c3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRTdHJpY3RQYXJzaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRQYXJzZU1vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnBhcnNlTW9kZSk6CisgICAgICAg
ICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1Bh
cnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjaGVja0Zvck9ycGhhbmVkVW5pdHMpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VTaXplUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJz
ZUZpbGxQb3NpdGlvblhZKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGaWxs
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uRGVsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkR1cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25JdGVyYXRpb25Db3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVHJhbnNmb3JtT3JpZ2luU2hv
cnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDdWJpY0JlemllclRp
bWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VEYXNoYm9hcmRSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VT
aGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JGcm9tVmFsdWUpOiBkaXNhbGxvdyBpbnZh
bGlkIGhleGNvbG9yIGluIFNWR1N0cmljdE1vZGUKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6cGFyc2VTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVJlZmxl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJvcmRlckltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybU9yaWdpbik6CisgICAgICAgICogY3Nz
L0NTU1BhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpzdHJpY3QpOgorICAg
ICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2VsZWN0b3I6OnJlc29sdmVWYXJpYWJsZXNGb3JEZWNsYXJhdGlvbik6CisgICAgICAgICog
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6
Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjppbnNlcnRS
dWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nQXRMaW5l
KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTaGVldDo6c2V0UGFyc2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hl
ZXQ6OnBhcnNlTW9kZSk6CisgICAgICAgICogY3NzL0NTU1ZhcmlhYmxlc0RlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlc0RlY2xhcmF0aW9uOjpzZXRWYXJpYWJs
ZSk6CisgICAgICAgICogY3NzL01lZGlhTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUxpc3Q6OmRlbGV0ZU1lZGl1bSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUxpc3Q6OnNldE1l
ZGlhVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUxpc3Q6OmFwcGVuZE1lZGl1bSk6Cisg
ICAgICAgICogY3NzL1N0eWxlQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCYXNlOjpw
YXJzZU1vZGUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdENTU0tleWZyYW1lc1J1bGU6Omluc2VydFJ1bGUpOgorICAg
ICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0TWF0Y2hlc1NlbGVjdG9yKToKKyAgICAg
ICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpxdWVyeVNlbGVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5U2VsZWN0b3JBbGwpOgorICAgICAgICAq
IGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6
OmNyZWF0ZUlubGluZVN0eWxlRGVjbCk6ICBzZXQgU1ZHU3RyaWN0TW9kZSBmb3IgU1ZHIGVsZW1l
bnRzCisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpjcmVhdGVNYXBwZWREZWNsKTog
c2V0IFNWR1N0cmljdE1vZGUgZm9yIFNWRyBlbGVtZW50cworICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6
OnNldFRleHQpOgorCiAyMDEwLTEwLTIzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNzAzNjcuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkgYi9XZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkKaW5kZXggYzAxMzlhMjk3MzZhZGYzYjNmMGU2NGUyYzU5NDM4MWE5ZjBkNzgzNS4uYWUy
OGQwZjgyMGVkNWNmNmI1MGQ2NGY5YjQ2NWUxZjMxN2U5NDAxYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55CisrKyBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtMTEx
NSw3ICsxMTE1LDcgQEAgc3BlY2lmaWVyOgogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNf
Y2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5n
U2VsZWN0b3IoKTsKICAgICAgICAgJCQtPm1fbWF0Y2ggPSBDU1NTZWxlY3Rvcjo6SWQ7Ci0gICAg
ICAgIGlmICghcC0+bV9zdHJpY3QpCisgICAgICAgIGlmICghcC0+c3RyaWN0KCkpCiAgICAgICAg
ICAgICAkMS5sb3dlcigpOwogICAgICAgICAkJC0+bV92YWx1ZSA9ICQxOwogICAgIH0KQEAgLTEx
MjYsNyArMTEyNiw3IEBAIHNwZWNpZmllcjoKICAgICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0
YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICAgICAkJCA9IHAtPmNyZWF0
ZUZsb2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgICAgICQkLT5tX21hdGNoID0gQ1NTU2VsZWN0
b3I6OklkOwotICAgICAgICAgICAgaWYgKCFwLT5tX3N0cmljdCkKKyAgICAgICAgICAgIGlmICgh
cC0+c3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgJDEubG93ZXIoKTsKICAgICAgICAgICAgICQk
LT5tX3ZhbHVlID0gJDE7CiAgICAgICAgIH0KQEAgLTExNDEsNyArMTE0MSw3IEBAIGNsYXNzOgog
ICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwog
ICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgJCQtPm1f
bWF0Y2ggPSBDU1NTZWxlY3Rvcjo6Q2xhc3M7Ci0gICAgICAgIGlmICghcC0+bV9zdHJpY3QpCisg
ICAgICAgIGlmICghcC0+c3RyaWN0KCkpCiAgICAgICAgICAgICAkMi5sb3dlcigpOwogICAgICAg
ICAkJC0+bV92YWx1ZSA9ICQyOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0lt
cG9ydFJ1bGUuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAKaW5kZXggZTAyZDI0
NDNkZWVkYTlmZTFjYzBlMmM0NzY0NGZmMTYyODkyMGE2NS4uMDYyZWUyMDk4MzA0YjgwMDViM2U2
ZjExMmM1M2UzOGFiMDk4Nzg3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVs
ZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAKQEAgLTYzLDcgKzYzLDcg
QEAgdm9pZCBDU1NJbXBvcnRSdWxlOjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJl
ZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY28KICAgICBib29sIGNyb3NzT3JpZ2luQ1NTID0gZmFs
c2U7CiAgICAgYm9vbCB2YWxpZE1JTUVUeXBlID0gZmFsc2U7CiAgICAgQ1NTU3R5bGVTaGVldCog
cGFyZW50ID0gcGFyZW50U3R5bGVTaGVldCgpOwotICAgIGJvb2wgc3RyaWN0ID0gIXBhcmVudCB8
fCBwYXJlbnQtPnVzZVN0cmljdFBhcnNpbmcoKTsKKyAgICBib29sIHN0cmljdCA9ICFwYXJlbnQg
fHwgcGFyZW50LT5wYXJzZU1vZGUoKSA9PSBIVE1MU3RyaWN0TW9kZTsKICAgICBib29sIGVuZm9y
Y2VNSU1FVHlwZSA9IHN0cmljdDsKICAgICBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzID0g
cGFyZW50ICYmIHBhcmVudC0+ZG9jdW1lbnQoKSAmJiBwYXJlbnQtPmRvY3VtZW50KCktPnNldHRp
bmdzKCkgJiYgcGFyZW50LT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5uZWVkc1NpdGVTcGVjaWZp
Y1F1aXJrcygpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuY3BwIGIv
V2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcAppbmRleCBkMWMyMjBiZWRiNmQ5NThjOTYwZjMz
YmE5Y2VkOWY1MDlmNWEzOTZjLi4wMmZhYTVmNThkZWFkMWNiYjYzNDgxZjcyOWNkMzhkZWRjNjIy
YTcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuY3BwCisrKyBiL1dlYkNv
cmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdW5zaWduZWQgQ1NTTWVk
aWFSdWxlOjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWduZWQgaW5kZXgsIEV4
Y2VwdGlvbkMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgQ1NTUGFyc2VyIHAodXNl
U3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcChwYXJzZU1vZGUoKSk7CiAgICAgUmVm
UHRyPENTU1J1bGU+IG5ld1J1bGUgPSBwLnBhcnNlUnVsZShwYXJlbnRTdHlsZVNoZWV0KCksIHJ1
bGUpOwogICAgIGlmICghbmV3UnVsZSkgewogICAgICAgICAvLyBTWU5UQVhfRVJSOiBSYWlzZWQg
aWYgdGhlIHNwZWNpZmllZCBydWxlIGhhcyBhIHN5bnRheCBlcnJvciBhbmQgaXMgdW5wYXJzYWJs
ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA5YjFk
ZDcxNWI2Y2NhMjA5ZTNkYzI0YzRiOGRhN2QzYjAxMmQ4Mzg4Li5iNDY5ZTVhYTVjYmM2ODE5MDU3
MWNlY2M2MWVlMmMzZGZhNTE2NGNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbigpCiAgICAg
OiBtX25vZGUoMCkKICAgICAsIG1fdmFyaWFibGVEZXBlbmRlbnRWYWx1ZUNvdW50KDApCi0gICAg
LCBtX3N0cmljdFBhcnNpbmcoZmFsc2UpCisgICAgLCBtX3BhcnNlTW9kZShIVE1MUXVpcmtzTW9k
ZSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2l0ZXJhdG9yQ291bnQoMCkKICNlbmRpZgpAQCAt
NTEsNyArNTEsNyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50KQogICAgIDogQ1NTU3R5bGVEZWNsYXJhdGlvbihw
YXJlbnQpCiAgICAgLCBtX25vZGUoMCkKICAgICAsIG1fdmFyaWFibGVEZXBlbmRlbnRWYWx1ZUNv
dW50KDApCi0gICAgLCBtX3N0cmljdFBhcnNpbmcoIXBhcmVudCB8fCBwYXJlbnQtPnVzZVN0cmlj
dFBhcnNpbmcoKSkKKyAgICAsIG1fcGFyc2VNb2RlKCFwYXJlbnQgfHwgcGFyZW50LT5wYXJzZU1v
ZGUoKSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2l0ZXJhdG9yQ291bnQoMCkKICNlbmRpZgpA
QCAtNjMsNyArNjMsNyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBjb25zdCBWZQogICAgICwgbV9wcm9wZXJ0
aWVzKHByb3BlcnRpZXMpCiAgICAgLCBtX25vZGUoMCkKICAgICAsIG1fdmFyaWFibGVEZXBlbmRl
bnRWYWx1ZUNvdW50KHZhcmlhYmxlRGVwZW5kZW50VmFsdWVDb3VudCkKLSAgICAsIG1fc3RyaWN0
UGFyc2luZyghcGFyZW50IHx8IHBhcmVudC0+dXNlU3RyaWN0UGFyc2luZygpKQorICAgICwgbV9w
YXJzZU1vZGUoIXBhcmVudCB8fCBwYXJlbnQtPnBhcnNlTW9kZSgpKQogI2lmbmRlZiBOREVCVUcK
ICAgICAsIG1faXRlcmF0b3JDb3VudCgwKQogI2VuZGlmCkBAIC03Niw3ICs3Niw3IEBAIENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxl
KiBwYXJlbnQsIGNvbnN0IENTCiAgICAgOiBDU1NTdHlsZURlY2xhcmF0aW9uKHBhcmVudCkKICAg
ICAsIG1fbm9kZSgwKQogICAgICwgbV92YXJpYWJsZURlcGVuZGVudFZhbHVlQ291bnQoMCkKLSAg
ICAsIG1fc3RyaWN0UGFyc2luZyghcGFyZW50IHx8IHBhcmVudC0+dXNlU3RyaWN0UGFyc2luZygp
KQorICAgICwgbV9wYXJzZU1vZGUoIXBhcmVudCB8fCBwYXJlbnQtPnBhcnNlTW9kZSgpKQogI2lm
bmRlZiBOREVCVUcKICAgICAsIG1faXRlcmF0b3JDb3VudCgwKQogI2VuZGlmCkBAIC0xMDEsNyAr
MTAxLDcgQEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24mIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpvcGVyYXRvcj0oY29uc3QgQ1NTTXV0YWIKICAgICBBU1NFUlQoIW1faXRlcmF0b3JD
b3VudCk7CiAgICAgLy8gZG9uJ3QgYXR0YWNoIGl0IHRvIHRoZSBzYW1lIG5vZGUsIGp1c3QgbGVh
dmUgdGhlIGN1cnJlbnQgbV9ub2RlIHZhbHVlCiAgICAgbV9wcm9wZXJ0aWVzID0gb3RoZXIubV9w
cm9wZXJ0aWVzOwotICAgIG1fc3RyaWN0UGFyc2luZyA9IG90aGVyLm1fc3RyaWN0UGFyc2luZzsK
KyAgICBtX3BhcnNlTW9kZSA9IG90aGVyLm1fcGFyc2VNb2RlOwogICAgIHJldHVybiAqdGhpczsK
IH0KIApAQCAtNTM1LDcgKzUzNSw3IEBAIGJvb2wgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlCiAKICAgICAv
LyBXaGVuIHJlcGxhY2luZyBhbiBleGlzdGluZyBwcm9wZXJ0eSB2YWx1ZSwgdGhpcyBtb3ZlcyB0
aGUgcHJvcGVydHkgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4KICAgICAvLyBGaXJlZm94IHByZXNl
cnZlcyB0aGUgcG9zaXRpb24sIGFuZCBNU0lFIG1vdmVzIHRoZSBwcm9wZXJ0eSB0byB0aGUgYmVn
aW5uaW5nLgotICAgIENTU1BhcnNlciBwYXJzZXIodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBD
U1NQYXJzZXIgcGFyc2VyKHBhcnNlTW9kZSgpKTsKICAgICBib29sIHN1Y2Nlc3MgPSBwYXJzZXIu
cGFyc2VWYWx1ZSh0aGlzLCBwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICBpZiAo
IXN1Y2Nlc3MpIHsKICAgICAgICAgLy8gQ1NTIERPTSByZXF1aXJlcyByYWlzaW5nIFNZTlRBWF9F
UlIgaGVyZSwgYnV0IHRoaXMgaXMgdG9vIGRhbmdlcm91cyBmb3IgY29tcGF0aWJpbGl0eSwKQEAg
LTU5MCw3ICs1OTAsNyBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpwYXJzZURl
Y2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbgogICAgIEFTU0VSVCghbV9p
dGVyYXRvckNvdW50KTsKIAogICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwotICAgIENTU1BhcnNl
ciBwYXJzZXIodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKHBhcnNl
TW9kZSgpKTsKICAgICBwYXJzZXIucGFyc2VEZWNsYXJhdGlvbih0aGlzLCBzdHlsZURlY2xhcmF0
aW9uKTsKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CkBAIC02MjYsMTAgKzYyNiwxMCBA
QCB2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRMZW5ndGhQcm9wZXJ0eShpbnQg
cHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJgogewogICAgIEFTU0VSVCghbV9pdGVyYXRvckNvdW50
KTsKIAotICAgIGJvb2wgcGFyc2VNb2RlID0gdXNlU3RyaWN0UGFyc2luZygpOworICAgIENTU1Bh
cnNlTW9kZSBwYXJzZU1vZGVfID0gcGFyc2VNb2RlKCk7CiAgICAgc2V0U3RyaWN0UGFyc2luZyhm
YWxzZSk7CiAgICAgc2V0UHJvcGVydHkocHJvcGVydHlJZCwgdmFsdWUsIGltcG9ydGFudCk7Ci0g
ICAgc2V0U3RyaWN0UGFyc2luZyhwYXJzZU1vZGUpOworICAgIHNldFBhcnNlTW9kZShwYXJzZU1v
ZGVfKTsKIH0KIAogdW5zaWduZWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnZpcnR1YWxM
ZW5ndGgoKSBjb25zdApAQCAtNzEyLDcgKzcxMiw3IEBAIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OnNldENzc1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBl
CiAKICAgICBlYyA9IDA7CiAgICAgbV9wcm9wZXJ0aWVzLmNsZWFyKCk7Ci0gICAgQ1NTUGFyc2Vy
IHBhcnNlcih1c2VTdHJpY3RQYXJzaW5nKCkpOworICAgIENTU1BhcnNlciBwYXJzZXIocGFyc2VN
b2RlKCkpOwogICAgIHBhcnNlci5wYXJzZURlY2xhcmF0aW9uKHRoaXMsIHRleHQpOwogICAgIC8v
IEZJWE1FOiBEZXRlY3Qgc3ludGF4IGVycm9ycyBhbmQgc2V0IGVjLgogICAgIHNldE5lZWRzU3R5
bGVSZWNhbGMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uLmggYi9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4
IGQ2MjliY2ZhNmQ4ODI1MTQzZjc5ZDg3NjA4Y2RjODBhNmMxMmMwOWEuLmY4MjM4Yjc0MDU1N2Zh
MmIzYTJlZjRkMTkxNjY3ODg4YWM0YTcyMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24uaApAQCAtMTMyLDkgKzEzMiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtZXJn
ZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIGJvb2wgYXJnT3ZlcnJpZGVzT25Db25mbGlj
dCA9IHRydWUpOwogCiAgICAgYm9vbCBoYXNWYXJpYWJsZURlcGVuZGVudFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YXJpYWJsZURlcGVuZGVudFZhbHVlQ291bnQgPiAwOyB9Ci0gICAgCi0gICAg
dm9pZCBzZXRTdHJpY3RQYXJzaW5nKGJvb2wgYikgeyBtX3N0cmljdFBhcnNpbmcgPSBiOyB9Ci0g
ICAgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RQYXJzaW5n
OyB9CisKKyAgICB2b2lkIHNldFN0cmljdFBhcnNpbmcoYm9vbCBiKSB7IG1fcGFyc2VNb2RlID0g
YiA/IEhUTUxTdHJpY3RNb2RlIDogSFRNTFF1aXJrc01vZGU7IH0KKyAgICB2b2lkIHNldFBhcnNl
TW9kZShDU1NQYXJzZU1vZGUgbW9kZSkgeyBtX3BhcnNlTW9kZSA9IG1vZGU7IH0KKyAgICBDU1NQ
YXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogICAg
IHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKTsKIApAQCAt
MTY1LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAKICAgICBOb2RlKiBtX25vZGU7CiAgICAgdW5zaWdu
ZWQgbV92YXJpYWJsZURlcGVuZGVudFZhbHVlQ291bnQgOiAyNDsKLSAgICBib29sIG1fc3RyaWN0
UGFyc2luZyA6IDE7CisgICAgQ1NTUGFyc2VNb2RlIG1fcGFyc2VNb2RlIDogMjsKICNpZm5kZWYg
TkRFQlVHCiAgICAgdW5zaWduZWQgbV9pdGVyYXRvckNvdW50IDogNDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKaW5kZXggMjZjMzg3NmViM2RlZDk1MzgwZTQ2NTc3NmExYWEwZjBlNWQ5N2UzOC4uYzQwZjgz
NjgwNTYyYmQxYjIzYTQ3MWUzYzc0OTJjZDhlNmM4YzZiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xMjgs
OCArMTI4LDggQEAgc3RhdGljIGJvb2wgaGFzUHJlZml4KGNvbnN0IGNoYXIqIHN0cmluZywgdW5z
aWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyKiBwcmVmaXgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1DU1NQYXJzZXI6OkNTU1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcpCi0gICAgOiBtX3N0cmlj
dChzdHJpY3RQYXJzaW5nKQorQ1NTUGFyc2VyOjpDU1NQYXJzZXIoQ1NTUGFyc2VNb2RlIHBhcnNl
TW9kZSkKKyAgICA6IG1fcGFyc2VNb2RlKHBhcnNlTW9kZSkKICAgICAsIG1faW1wb3J0YW50KGZh
bHNlKQogICAgICwgbV9pZCgwKQogICAgICwgbV9zdHlsZVNoZWV0KDApCkBAIC0yOTIsNyArMjky
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0KQogICAgIGlmIChwYXJzZUNvbG9yKHN0cmluZywgY29s
b3IsIHN0cmljdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgQ1NTUGFyc2VyIHBhcnNl
cih0cnVlKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKEhUTUxTdHJpY3RNb2RlKTsKICAgICBSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGR1bW15U3R5bGVEZWNsYXJhdGlvbiA9IENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKIAogICAgIC8vIE5vdyB0cnkgdG8g
Y3JlYXRlIGEgY29sb3IgZnJvbSByZ2JhKCkgc3ludGF4LgpAQCAtNTM1LDcgKzUzNSw3IEBAIHN0
YXRpYyBpbnQgdW5pdEZyb21TdHJpbmcoQ1NTUGFyc2VyVmFsdWUqIHZhbHVlKQogCiB2b2lkIENT
U1BhcnNlcjo6Y2hlY2tGb3JPcnBoYW5lZFVuaXRzKCkKIHsKLSAgICBpZiAobV9zdHJpY3QgfHwg
aW5TaG9ydGhhbmQoKSkKKyAgICBpZiAoc3RyaWN0KCkgfHwgaW5TaG9ydGhhbmQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBjb2RlIGlzIHRvIGltcGxl
bWVudCB0aGUgV2luSUUgcXVpcmsgdGhhdCBhbGxvd3MgdW5pdCB0eXBlcyB0byBiZSBzZXBhcmF0
ZWQgZnJvbSB0aGVpciBudW1lcmljIHZhbHVlcwpAQCAtODExLDcgKzgxMSw3IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIH0KICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmc6CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZzoKLSAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnLCBtX3N0cmljdCk7
CisgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRk5v
bk5lZywgc3RyaWN0KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5T3V0
bGluZUNvbG9yOiAgICAgICAgLy8gPGNvbG9yPiB8IGludmVydCB8IGluaGVyaXQKICAgICAgICAg
Ly8gT3V0bGluZSBjb2xvciBoYXMgImludmVydCIgYXMgYWRkaXRpb25hbCBrZXl3b3JkLgpAQCAt
ODQzLDcgKzg0Myw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogICAgICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xv
cikKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgZWxzZSBpZiAo
KGlkID49IENTU1ZhbHVlQXF1YSAmJiBpZCA8PSBDU1NWYWx1ZVdpbmRvd3RleHQpIHx8IGlkID09
IENTU1ZhbHVlTWVudSB8fAotICAgICAgICAgICAgIChpZCA+PSBDU1NWYWx1ZVdlYmtpdEZvY3Vz
UmluZ0NvbG9yICYmIGlkIDwgQ1NTVmFsdWVXZWJraXRUZXh0ICYmICFtX3N0cmljdCkpIHsKKyAg
ICAgICAgICAgICAoaWQgPj0gQ1NTVmFsdWVXZWJraXRGb2N1c1JpbmdDb2xvciAmJiBpZCA8IENT
U1ZhbHVlV2Via2l0VGV4dCAmJiAhc3RyaWN0KCkpKSB7CiAgICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9
IHBhcnNlQ29sb3IoKTsKQEAgLTg4Miw3ICs4ODIsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3JlYXRlKG1fc3R5bGVTaGVldC0+Y29tcGxldGVV
UkwodXJpKSwgaG90U3BvdCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoKG1f
c3RyaWN0ICYmICF2YWx1ZSkgfHwgKHZhbHVlICYmICEodmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2Vy
VmFsdWU6Ok9wZXJhdG9yICYmIHZhbHVlLT5pVmFsdWUgPT0gJywnKSkpCisgICAgICAgICAgICBp
ZiAoKHN0cmljdCgpICYmICF2YWx1ZSkgfHwgKHZhbHVlICYmICEodmFsdWUtPnVuaXQgPT0gQ1NT
UGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbHVlLT5pVmFsdWUgPT0gJywnKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdmFsdWUgPSBtX3ZhbHVlTGlzdC0+
bmV4dCgpOyAvLyBjb21tYQogICAgICAgICB9CkBAIC04OTAsNyArODkwLDcgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAg
ICBpZiAoIXZhbHVlKSB7IC8vIG5vIHZhbHVlIGFmdGVyIHVybCBsaXN0IChNU0lFIDUgY29tcGF0
aWJpbGl0eSkKICAgICAgICAgICAgICAgICBpZiAobGlzdC0+bGVuZ3RoKCkgIT0gMSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIGlmICghbV9z
dHJpY3QgJiYgdmFsdWUtPmlkID09IENTU1ZhbHVlSGFuZCkgLy8gTVNJRSA1IGNvbXBhdGliaWxp
dHkgOi8KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCgpICYmIHZhbHVlLT5pZCA9PSBD
U1NWYWx1ZUhhbmQpIC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5IDovCiAgICAgICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVl
UG9pbnRlcikpOwogICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgJiYgKCh2YWx1ZS0+aWQgPj0g
Q1NTVmFsdWVBdXRvICYmIHZhbHVlLT5pZCA8PSBDU1NWYWx1ZVdlYmtpdEdyYWJiaW5nKSB8fCB2
YWx1ZS0+aWQgPT0gQ1NTVmFsdWVDb3B5IHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZU5vbmUpKQog
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRl
bnRpZmllcih2YWx1ZS0+aWQpKTsKQEAgLTg5OSw3ICs4OTksNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGlkID0gdmFsdWUtPmlkOwotICAgICAgICBpZiAoIW1fc3Ry
aWN0ICYmIHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUhhbmQpIHsgLy8gTVNJRSA1IGNvbXBhdGliaWxp
dHkgOi8KKyAgICAgICAgaWYgKCFzdHJpY3QoKSAmJiB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVIYW5k
KSB7IC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5IDovCiAgICAgICAgICAgICBpZCA9IENTU1ZhbHVl
UG9pbnRlcjsKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgfSBl
bHNlIGlmICgodmFsdWUtPmlkID49IENTU1ZhbHVlQXV0byAmJiB2YWx1ZS0+aWQgPD0gQ1NTVmFs
dWVXZWJraXRHcmFiYmluZykgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlQ29weSB8fCB2YWx1ZS0+
aWQgPT0gQ1NTVmFsdWVOb25lKQpAQCAtOTg3LDcgKzk4Nyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVUaGluIHx8IGlkID09IENTU1ZhbHVlTWVkaXVtIHx8IGlkID09IENTU1ZhbHVlVGhp
Y2spCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRk5v
bk5lZywgbV9zdHJpY3QpOworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQo
dmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnLCBzdHJpY3QoKSk7CiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmc6ICAgICAgIC8vIG5vcm1hbCB8IDxsZW5n
dGg+IHwgaW5oZXJpdApAQCAtOTk1LDcgKzk5NSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVOb3JtYWwpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3Ro
LCBtX3N0cmljdCk7CisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1
ZSwgRkxlbmd0aCwgc3RyaWN0KCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJv
cGVydHlXb3JkQnJlYWs6ICAgICAgICAgIC8vIG5vcm1hbCB8IGJyZWFrLWFsbCB8IGJyZWFrLXdv
cmQgKHRoaXMgaXMgYSBjdXN0b20gZXh0ZW5zaW9uKQpAQCAtMTAxNCw3ICsxMDE0LDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6
ICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgaW5oZXJpdAotICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNl
bnQsIG1fc3RyaWN0KSk7CisgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVu
aXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgc3RyaWN0KCkpKTsKICAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1RvcDogICAgICAgICAgLy8vLyA8cGFkZGlu
Zy13aWR0aD4gfCBpbmhlcml0CkBAIC0xMDI1LDcgKzEwMjUsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0UGFkZGluZ0VuZDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0Jl
Zm9yZToKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0FmdGVyOgotICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNl
bnQgfCBGTm9uTmVnLCBtX3N0cmljdCkpOworICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQg
JiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBzdHJpY3Qo
KSkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6ICAg
ICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IG5vbmUgfCBpbmhlcml0CkBAIC0x
MDQ0LDcgKzEwNDQsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW50cmluc2ljIHx8IGlk
ID09IENTU1ZhbHVlTWluSW50cmluc2ljKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYg
dmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBtX3N0cmljdCkp
OworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwg
Rkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgc3RyaWN0KCkpKTsKICAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6CkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICAgICAgaWYgKGlkID49IENTU1ZhbHVlWHhTbWFsbCAmJiBpZCA8PSBDU1NWYWx1ZUxhcmdlcikK
ICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSAodmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNl
bnQgfCBGTm9uTmVnLCBtX3N0cmljdCkpOworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAo
dmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBzdHJpY3QoKSkp
OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6ICAgICAg
ICAgICAvLyBub3JtYWwgfCBpdGFsaWMgfCBvYmxpcXVlIHwgaW5oZXJpdApAQCAtMTA2OCw3ICsx
MDY4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCiAgICAgICAgIGlmIChpZCA+PSBDU1NWYWx1ZUJhc2VsaW5lICYmIGlkIDw9IENTU1Zh
bHVlV2Via2l0QmFzZWxpbmVNaWRkbGUpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRy
dWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2
YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpKTsKKyAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBG
UGVyY2VudCwgc3RyaWN0KCkpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3Bl
cnR5SGVpZ2h0OiAgICAgICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0
byB8IGluaGVyaXQKQEAgLTEwNzksNyArMTA3OSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICAvLyAjIyMgaGFuZGxlIG11bHRp
bGVuZ3RoIGNhc2Ugd2hlcmUgd2UgYWxsb3cgcmVsYXRpdmUgdW5pdHMKLSAgICAgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2Vu
dCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICgh
aWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBzdHJp
Y3QoKSkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206ICAg
ICAgICAgICAgICAgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIHwgaW5oZXJpdApA
QCAtMTA5Nyw3ICsxMDk3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUF1dG8pCiAgICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVy
Y2VudCwgbV9zdHJpY3QpKTsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2
YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgc3RyaWN0KCkpKTsKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5WkluZGV4OiAgICAgICAgICAgICAgLy8gYXV0
byB8IDxpbnRlZ2VyPiB8IGluaGVyaXQKQEAgLTExMTYsNyArMTExNiw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxp
ZFVuaXQodmFsdWUsIEZOdW1iZXIgfCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBtX3N0
cmljdCkpOworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2
YWx1ZSwgRk51bWJlciB8IEZMZW5ndGggfCBGUGVyY2VudCB8IEZOb25OZWcsIHN0cmljdCgpKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50OiAg
ICAvLyBbIDxpZGVudGlmaWVyPiA8aW50ZWdlcj4/IF0rIHwgbm9uZSB8IGluaGVyaXQKICAgICAg
ICAgaWYgKGlkICE9IENTU1ZhbHVlTm9uZSkKQEAgLTEyMDYsMTQgKzEyMDYsMTQgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiB7CiAgICAgICAgIGlmIChudW0g
IT0gMSAmJiBudW0gIT0gMikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJp
Y3QpOworICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8
IEZQZXJjZW50LCBzdHJpY3QoKSk7CiAgICAgICAgIGlmICghdmFsaWRQcmltaXRpdmUpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
cGFyc2VkVmFsdWUxID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS0+ZlZhbHVlLCAo
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyl2YWx1ZS0+dW5pdCk7CiAgICAgICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VkVmFsdWUyOwogICAgICAgICBpZiAobnVtID09IDIp
IHsKICAgICAgICAgICAgIHZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQoKTsKLSAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1f
c3RyaWN0KTsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBG
TGVuZ3RoIHwgRlBlcmNlbnQsIHN0cmljdCgpKTsKICAgICAgICAgICAgIGlmICghdmFsaWRQcmlt
aXRpdmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgcGFyc2Vk
VmFsdWUyID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS0+ZlZhbHVlLCAoQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlcyl2YWx1ZS0+dW5pdCk7CkBAIC0xMjI5LDcgKzEyMjksNyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzOgogICAgICAgICByZXR1cm4g
cGFyc2VCb3JkZXJSYWRpdXMocHJvcElkLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdXRsaW5lT2Zmc2V0OgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1
ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCk7CisgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIHN0cmljdCgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRTaGFkb3c6IC8vIENTUzIgcHJvcGVy
dHksIGRyb3BwZWQgaW4gQ1NTMi4xLCBiYWNrIGluIENTUzMsIHNvIHRyZWF0IGFzIENTUzMKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93OgpAQCAtMTI0NSw3ICsxMjQ1LDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgICAgICByZXR1cm4gcGFyc2VSZWZsZWN0KHByb3BJZCwgaW1wb3J0YW50KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6Ci0gICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyLCBtX3N0cmljdCk7CisgICAgICAgIHZh
bGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyLCBzdHJpY3QoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKICAgICAgICAg
aWYgKGlkID09IENTU1ZhbHVlU3RyZXRjaCB8fCBpZCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IGlkID09
IENTU1ZhbHVlRW5kIHx8CkBAIC0xMjcxLDcgKzEyNzEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveEZsZXg6Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTnVt
YmVyLCBtX3N0cmljdCk7CisgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVl
LCBGTnVtYmVyLCBzdHJpY3QoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3hGbGV4R3JvdXA6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGlu
YWxHcm91cDoKQEAgLTEyOTksNyArMTI5OSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVT
bWFsbCB8fCBpZCA9PSBDU1NWYWx1ZUxhcmdlIHx8IGlkID09IENTU1ZhbHVlTWVkaXVtKQogICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBt
X3N0cmljdCk7CisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwg
Rkxlbmd0aCB8IEZQZXJjZW50LCBzdHJpY3QoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGU6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZU5vbmUgfHwgaWQgPT0gQ1NTVmFsdWVTbGlkZSB8fCBpZCA9PSBDU1NWYWx1ZVNjcm9sbCB8fCBp
ZCA9PSBDU1NWYWx1ZUFsdGVybmF0ZSkKQEAgLTEzMDksMTMgKzEzMDksMTMgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5p
dCh2YWx1ZSwgRkludGVnZXIgfCBGTm9uTmVnLCBtX3N0cmljdCk7CisgICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIgfCBGTm9uTmVnLCBzdHJpY3Qo
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3Bl
ZWQ6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NWYWx1ZVNs
b3cgfHwgaWQgPT0gQ1NTVmFsdWVGYXN0KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5p
dCh2YWx1ZSwgRlRpbWUgfCBGSW50ZWdlciB8IEZOb25OZWcsIG1fc3RyaWN0KTsKKyAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGVGltZSB8IEZJbnRlZ2VyIHwg
Rk5vbk5lZywgc3RyaWN0KCkpOwogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoV0NTUykKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZURpcjoKQEAgLTEzMzAsMTMgKzEzMzAsMTMgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIgfCBGTm9uTmVnLCBtX3N0cmljdCk7CisgICAgICAg
ICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkludGVnZXIgfCBGTm9uTmVn
LCBzdHJpY3QoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJx
dWVlU3BlZWQ6CiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZCA9PSBDU1NW
YWx1ZVNsb3cgfHwgaWQgPT0gQ1NTVmFsdWVGYXN0KQogICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZh
bGlkVW5pdCh2YWx1ZSwgRlRpbWUgfCBGSW50ZWdlciB8IEZOb25OZWcsIG1fc3RyaWN0KTsKKyAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGVGltZSB8IEZJbnRl
Z2VyIHwgRk5vbk5lZywgc3RyaWN0KCkpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzogLy8gYXV0byB8IG5vbmUgfCBlbGVtZW50CkBA
IC0xMzk4LDcgKzEzOTgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElk
LCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBBY2NlcHRpbmcgdmFsdWVsZXNzIG51bWJlcnMg
aXMgYSBxdWlyayBvZiB0aGUgLXdlYmtpdCBwcmVmaXhlZCB2ZXJzaW9uIG9mIHRoZSBwcm9wZXJ0
eS4KLSAgICAgICAgICAgIGlmICh2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIgfCBGTGVuZ3RoIHwg
Rk5vbk5lZywgbV9zdHJpY3QpKSB7CisgICAgICAgICAgICBpZiAodmFsaWRVbml0KHZhbHVlLCBG
TnVtYmVyIHwgRkxlbmd0aCB8IEZOb25OZWcsIHN0cmljdCgpKSkgewogICAgICAgICAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZT4gdmFsID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS0+
ZlZhbHVlLCAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyl2YWx1ZS0+dW5pdCk7CiAgICAg
ICAgICAgICAgICAgaWYgKHZhbCkgewogICAgICAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eShw
cm9wSWQsIHZhbC5yZWxlYXNlKCksIGltcG9ydGFudCk7CkBAIC0xNDkzLDcgKzE0OTMsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICAgICAgICAgIGlkID09IENTU1ZhbHVlTWVkaXVtIHx8IGlkID09IENTU1ZhbHVlVGhpY2spCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciB8IEZM
ZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpOworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUg
PSAhaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyIHwgRkxlbmd0aCB8IEZQZXJjZW50LCBz
dHJpY3QoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6IC8v
IG5vbmUgfCBib3RoIHwgaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgYXV0bwogICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVOb25lIHx8IGlkID09IENTU1ZhbHVlQm90aCB8fCBpZCA9PSBDU1NWYWx1
ZUhvcml6b250YWwgfHwgaWQgPT0gQ1NTVmFsdWVWZXJ0aWNhbCB8fCBpZCA9PSBDU1NWYWx1ZUF1
dG8pCkBAIC0xNTA5LDEzICsxNTA5LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGlu
dCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3Jt
YWwpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRk5v
bk5lZywgbV9zdHJpY3QpOworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQo
dmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnLCBzdHJpY3QoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOiAgICAgICAgLy8gYWxsIHwgMQogICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBbGwpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRV
bml0KHZhbHVlLCBGTnVtYmVyIHwgRk5vbk5lZywgbV9zdHJpY3QpICYmIHZhbHVlLT5mVmFsdWUg
PT0gMTsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTnVt
YmVyIHwgRk5vbk5lZywgc3RyaWN0KCkpICYmIHZhbHVlLT5mVmFsdWUgPT0gMTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoOiAgICAgICAgIC8v
IGF1dG8gfCA8bGVuZ3RoPgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvKQpAQCAtMTU1
MCw3ICsxNTUwLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9v
bCBpbXBvcnRhbnQpCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEZvbnRTaXplRGVsdGE6ICAgICAgICAgICAvLyA8bGVuZ3RoPgotICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCwgbV9zdHJpY3QpOworICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCwgc3RyaWN0KCkpOwogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZTogICAgIC8vIG5v
cm1hbCB8IHNwYWNlCkBAIC0yMzAzLDcgKzIzMDMsNyBAQCBDU1NQYXJzZXI6OlNpemVQYXJhbWV0
ZXJUeXBlIENTU1BhcnNlcjo6cGFyc2VTaXplUGFyYW1ldGVyKENTU1ZhbHVlTGlzdCogcGFyc2Vk
VgogICAgICAgICB9CiAgICAgICAgIHJldHVybiBOb25lOwogICAgIGNhc2UgMDoKLSAgICAgICAg
aWYgKHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0KSAmJiAocHJl
dlBhcmFtVHlwZSA9PSBOb25lIHx8IHByZXZQYXJhbVR5cGUgPT0gTGVuZ3RoKSkgeworICAgICAg
ICBpZiAodmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRk5vbk5lZywgc3RyaWN0KCkpICYmIChw
cmV2UGFyYW1UeXBlID09IE5vbmUgfHwgcHJldlBhcmFtVHlwZSA9PSBMZW5ndGgpKSB7CiAgICAg
ICAgICAgICBwYXJzZWRWYWx1ZXMtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZh
bHVlLT5mVmFsdWUsIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM+KHZh
bHVlLT51bml0KSkpOwogICAgICAgICAgICAgcmV0dXJuIExlbmd0aDsKICAgICAgICAgfQpAQCAt
MjQwMyw3ICsyNDAzLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUJh
Y2tncm91bmRDb2xvcigpCiB7CiAgICAgaW50IGlkID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKS0+
aWQ7CiAgICAgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0VGV4dCB8fCAoaWQgPj0gQ1NTVmFsdWVB
cXVhICYmIGlkIDw9IENTU1ZhbHVlV2luZG93dGV4dCkgfHwgaWQgPT0gQ1NTVmFsdWVNZW51IHx8
IGlkID09IENTU1ZhbHVlQ3VycmVudGNvbG9yIHx8Ci0gICAgICAgIChpZCA+PSBDU1NWYWx1ZUdy
ZXkgJiYgaWQgPCBDU1NWYWx1ZVdlYmtpdFRleHQgJiYgIW1fc3RyaWN0KSkKKyAgICAgICAgKGlk
ID49IENTU1ZhbHVlR3JleSAmJiBpZCA8IENTU1ZhbHVlV2Via2l0VGV4dCAmJiAhc3RyaWN0KCkp
KQogICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZCk7
CiAgICAgcmV0dXJuIHBhcnNlQ29sb3IoKTsKIH0KQEAgLTI0NTYsNyArMjQ1Niw3IEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsUG9zaXRpb25YWShib29sJiB4Rm91
bmQsIGJvb2wmIHlGb3VuZCkKICAgICAgICAgICAgIHBlcmNlbnQgPSA1MDsKICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocGVyY2VudCwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKTsKICAgICB9Ci0gICAgaWYgKHZhbGlkVW5pdChtX3ZhbHVlTGlzdC0+
Y3VycmVudCgpLCBGUGVyY2VudCB8IEZMZW5ndGgsIG1fc3RyaWN0KSkKKyAgICBpZiAodmFsaWRV
bml0KG1fdmFsdWVMaXN0LT5jdXJyZW50KCksIEZQZXJjZW50IHwgRkxlbmd0aCwgc3RyaWN0KCkp
KQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3ZhbHVlTGlzdC0+
Y3VycmVudCgpLT5mVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKW1fdmFsdWVMaXN0LT5jdXJyZW50KCkt
PnVuaXQpOwogCkBAIC0yNTY0LDcgKzI1NjQsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQ
YXJzZXI6OnBhcnNlRmlsbFNpemUoaW50IHByb3BJZCwgYm9vbCYgYWxsb3dDb21tYSkKICAgICBp
ZiAodmFsdWUtPmlkID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgcGFyc2VkVmFsdWUxID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV04p
OwogICAgIGVsc2UgewotICAgICAgICBpZiAoIXZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQ
ZXJjZW50LCBtX3N0cmljdCkpCisgICAgICAgIGlmICghdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3Ro
IHwgRlBlcmNlbnQsIHN0cmljdCgpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBw
YXJzZWRWYWx1ZTEgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLT5mVmFsdWUsIChD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKXZhbHVlLT51bml0KTsKICAgICB9CkBAIC0yNTc3
LDcgKzI1NzcsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFNp
emUoaW50IHByb3BJZCwgYm9vbCYgYWxsb3dDb21tYSkKICAgICAgICAgZWxzZSBpZiAodmFsdWUt
PnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbHVlLT5pVmFsdWUgPT0gJywn
KQogICAgICAgICAgICAgYWxsb3dDb21tYSA9IGZhbHNlOwogICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGlmICghdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0
KSkKKyAgICAgICAgICAgIGlmICghdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQs
IHN0cmljdCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIHBhcnNl
ZFZhbHVlMiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUtPmZWYWx1ZSwgKENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpdmFsdWUtPnVuaXQpOwogICAgICAgICB9CkBAIC0yNzYz
LDcgKzI3NjMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsUHJvcGVydHkoaW50IHByb3BJ
ZCwgaW50JiBwcm9wSWQxLCBpbnQmIHByb3BJZDIsCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQ
YXJzZXI6OnBhcnNlQW5pbWF0aW9uRGVsYXkoKQogewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1
ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0gICAgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRlRp
bWUsIG1fc3RyaWN0KSkKKyAgICBpZiAodmFsaWRVbml0KHZhbHVlLCBGVGltZSwgc3RyaWN0KCkp
KQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS0+ZlZhbHVl
LCAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyl2YWx1ZS0+dW5pdCk7CiAgICAgcmV0dXJu
IDA7CiB9CkBAIC0yNzc5LDcgKzI3NzksNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJz
ZXI6OnBhcnNlQW5pbWF0aW9uRGlyZWN0aW9uKCkKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1Bh
cnNlcjo6cGFyc2VBbmltYXRpb25EdXJhdGlvbigpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZh
bHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKLSAgICBpZiAodmFsaWRVbml0KHZhbHVlLCBG
VGltZSB8IEZOb25OZWcsIG1fc3RyaWN0KSkKKyAgICBpZiAodmFsaWRVbml0KHZhbHVlLCBGVGlt
ZSB8IEZOb25OZWcsIHN0cmljdCgpKSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUodmFsdWUtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpdmFs
dWUtPnVuaXQpOwogICAgIHJldHVybiAwOwogfQpAQCAtMjc5Nyw3ICsyNzk3LDcgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KCkK
ICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAg
IGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVJbmZpbml0ZSkKICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHZhbHVlLT5pZCk7Ci0gICAgaWYgKHZhbGlk
VW5pdCh2YWx1ZSwgRkludGVnZXIgfCBGTm9uTmVnLCBtX3N0cmljdCkpCisgICAgaWYgKHZhbGlk
VW5pdCh2YWx1ZSwgRkludGVnZXIgfCBGTm9uTmVnLCBzdHJpY3QoKSkpCiAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLT5mVmFsdWUsIChDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGVzKXZhbHVlLT51bml0KTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTI4NDMs
NyArMjg0Myw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybU9yaWdpblNob3J0aGFu
ZChSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTEsIFJlZlB0cjxDCiAgICAgcGFyc2VGaWxsUG9zaXRp
b24odmFsdWUxLCB2YWx1ZTIpOwogCiAgICAgLy8gbm93IGdldCB6Ci0gICAgaWYgKG1fdmFsdWVM
aXN0LT5jdXJyZW50KCkgJiYgdmFsaWRVbml0KG1fdmFsdWVMaXN0LT5jdXJyZW50KCksIEZMZW5n
dGgsIG1fc3RyaWN0KSkKKyAgICBpZiAobV92YWx1ZUxpc3QtPmN1cnJlbnQoKSAmJiB2YWxpZFVu
aXQobV92YWx1ZUxpc3QtPmN1cnJlbnQoKSwgRkxlbmd0aCwgc3RyaWN0KCkpKQogICAgICAgICB2
YWx1ZTMgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkt
PmZWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpbV92YWx1ZUxpc3QtPmN1cnJlbnQoKS0+dW5pdCk7CiAg
ICAgaWYgKHZhbHVlMykKQEAgLTI4NTMsNyArMjg1Myw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJz
ZVRyYW5zZm9ybU9yaWdpblNob3J0aGFuZChSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTEsIFJlZlB0
cjxDCiBib29sIENTU1BhcnNlcjo6cGFyc2VDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUo
Q1NTUGFyc2VyVmFsdWVMaXN0KiYgYXJncywgZG91YmxlJiByZXN1bHQpCiB7CiAgICAgQ1NTUGFy
c2VyVmFsdWUqIHYgPSBhcmdzLT5jdXJyZW50KCk7Ci0gICAgaWYgKCF2YWxpZFVuaXQodiwgRk51
bWJlciwgbV9zdHJpY3QpKQorICAgIGlmICghdmFsaWRVbml0KHYsIEZOdW1iZXIsIHN0cmljdCgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdCA9IHYtPmZWYWx1ZTsKICAgICBp
ZiAocmVzdWx0IDwgMCB8fCByZXN1bHQgPiAxLjApCkBAIC0yODkxLDcgKzI4OTEsNyBAQCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24o
KQogICAgICAgICBib29sIHN0ZXBBdFN0YXJ0ID0gZmFsc2U7CiAKICAgICAgICAgQ1NTUGFyc2Vy
VmFsdWUqIHYgPSBhcmdzLT5jdXJyZW50KCk7Ci0gICAgICAgIGlmICghdmFsaWRVbml0KHYsIEZJ
bnRlZ2VyLCBtX3N0cmljdCkpCisgICAgICAgIGlmICghdmFsaWRVbml0KHYsIEZJbnRlZ2VyLCBz
dHJpY3QoKSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgbnVtU3RlcHMgPSAoaW50
KSBtaW4odi0+ZlZhbHVlLCAoZG91YmxlKUlOVF9NQVgpOwogICAgICAgICBpZiAobnVtU3RlcHMg
PCAxKQpAQCAtMzE0Niw3ICszMTQ2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGFzaGJvYXJk
UmVnaW9ucyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgICAgICBhcmcg
PSBhcmdzLT5uZXh0KCk7CiAgICAgICAgICAgICAgICAgYXJnID0gc2tpcENvbW1hSW5EYXNoYm9h
cmRSZWdpb24oYXJncyk7CiAKLSAgICAgICAgICAgICAgICB2YWxpZCA9IGFyZy0+aWQgPT0gQ1NT
VmFsdWVBdXRvIHx8IHZhbGlkVW5pdChhcmcsIEZMZW5ndGgsIG1fc3RyaWN0KTsKKyAgICAgICAg
ICAgICAgICB2YWxpZCA9IGFyZy0+aWQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbGlkVW5pdChhcmcs
IEZMZW5ndGgsIHN0cmljdCgpKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKQogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKIApAQCAtMzI0OSw3ICszMjQ5LDcgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlU2hhcGUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgaW50IGkgPSAw
OwogICAgIENTU1BhcnNlclZhbHVlKiBhID0gYXJncy0+Y3VycmVudCgpOwogICAgIHdoaWxlIChh
KSB7Ci0gICAgICAgIHZhbGlkID0gYS0+aWQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbGlkVW5pdChh
LCBGTGVuZ3RoLCBtX3N0cmljdCk7CisgICAgICAgIHZhbGlkID0gYS0+aWQgPT0gQ1NTVmFsdWVB
dXRvIHx8IHZhbGlkVW5pdChhLCBGTGVuZ3RoLCBzdHJpY3QoKSk7CiAgICAgICAgIGlmICghdmFs
aWQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBsZW5ndGggPSBhLT5pZCA9PSBDU1NWYWx1ZUF1dG8gPwpAQCAtMzM1Nyw3ICszMzU3LDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udChib29sIGltcG9ydGFudCkKICAgICAvLyA8YWJzb2x1
dGUtc2l6ZT4gfCA8cmVsYXRpdmUtc2l6ZT4gfCA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGlu
aGVyaXQKICAgICBpZiAodmFsdWUtPmlkID49IENTU1ZhbHVlWHhTbWFsbCAmJiB2YWx1ZS0+aWQg
PD0gQ1NTVmFsdWVMYXJnZXIpCiAgICAgICAgIGZvbnQtPnNpemUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZS0+aWQpOwotICAgIGVsc2UgaWYgKHZhbGlkVW5pdCh2
YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgbV9zdHJpY3QpKQorICAgIGVsc2Ug
aWYgKHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgc3RyaWN0
KCkpKQogICAgICAgICBmb250LT5zaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1
ZS0+ZlZhbHVlLCAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcykgdmFsdWUtPnVuaXQpOwog
ICAgIHZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQoKTsKICAgICBpZiAoIWZvbnQtPnNpemUgfHwg
IXZhbHVlKQpAQCAtMzM3MCw3ICszMzcwLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udChi
b29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKHZh
bHVlLT5pZCA9PSBDU1NWYWx1ZU5vcm1hbCkgewogICAgICAgICAgICAgLy8gZGVmYXVsdCB2YWx1
ZSwgbm90aGluZyB0byBkbwotICAgICAgICB9IGVsc2UgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRk51
bWJlciB8IEZMZW5ndGggfCBGUGVyY2VudCB8IEZOb25OZWcsIG1fc3RyaWN0KSkKKyAgICAgICAg
fSBlbHNlIGlmICh2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIgfCBGTGVuZ3RoIHwgRlBlcmNlbnQg
fCBGTm9uTmVnLCBzdHJpY3QoKSkpCiAgICAgICAgICAgICBmb250LT5saW5lSGVpZ2h0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS0+ZlZhbHVlLCAoQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlcykgdmFsdWUtPnVuaXQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC00MDM1LDE1ICs0MDM1LDE1IEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IENTU1BhcnNlcjo6cGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCiAKIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yRnJvbVZhbHVlKENTU1BhcnNlclZhbHVlKiB2YWx1ZSwg
UkdCQTMyJiBjKQogewotICAgIGlmICghbV9zdHJpY3QgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIgJiYKKyAgICBpZiAoIXN0cmljdCgpICYmIHZhbHVlLT51
bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSICYmCiAgICAgICAgIHZhbHVlLT5m
VmFsdWUgPj0gMC4gJiYgdmFsdWUtPmZWYWx1ZSA8IDEwMDAwMDAuKSB7CiAgICAgICAgIFN0cmlu
ZyBzdHIgPSBTdHJpbmc6OmZvcm1hdCgiJTA2ZCIsIChpbnQpKHZhbHVlLT5mVmFsdWUrLjUpKTsK
LSAgICAgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3Ioc3RyLCBjLCBtX3N0cmljdCkpCisg
ICAgICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHN0ciwgYywgc3RyaWN0KCkpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1IgfHwKICAgICAgICAgICAgICAgICB2
YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UIHx8Ci0gICAgICAgICAg
ICAgICAgKCFtX3N0cmljdCAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0RJTUVOU0lPTikpIHsKLSAgICAgICAgaWYgKCFDU1NQYXJzZXI6OnBhcnNlQ29sb3IodmFsdWUt
PnN0cmluZywgYywgbV9zdHJpY3QgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19JREVOVCkpCisgICAgICAgICAgICAgICAgKCFzdHJpY3QoKSAmJiB2YWx1ZS0+dW5pdCA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RJTUVOU0lPTikpIHsKKyAgICAgICAgaWYgKCFDU1NQ
YXJzZXI6OnBhcnNlQ29sb3IodmFsdWUtPnN0cmluZywgYywgbV9wYXJzZU1vZGUgIT0gSFRNTFF1
aXJrc01vZGUgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9
PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gJiYKICAgICAgICAgICAgICAgICB2YWx1ZS0+ZnVu
Y3Rpb24tPmFyZ3MgIT0gMCAmJgpAQCAtNDIzOCw3ICs0MjM4LDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlU2hhZG93KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgLy8g
VGhlIG9ubHkgb3RoZXIgdHlwZSBvZiB2YWx1ZSB0aGF0J3Mgb2sgaXMgYSBjb2xvciB2YWx1ZS4K
ICAgICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VkQ29sb3I7CiAgICAg
ICAgICAgICBib29sIGlzQ29sb3IgPSAoKHZhbC0+aWQgPj0gQ1NTVmFsdWVBcXVhICYmIHZhbC0+
aWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fCB2YWwtPmlkID09IENTU1ZhbHVlTWVudSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWwtPmlkID49IENTU1ZhbHVlV2Via2l0Rm9j
dXNSaW5nQ29sb3IgJiYgdmFsLT5pZCA8PSBDU1NWYWx1ZVdlYmtpdFRleHQgJiYgIW1fc3RyaWN0
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbC0+aWQgPj0gQ1NTVmFsdWVXZWJr
aXRGb2N1c1JpbmdDb2xvciAmJiB2YWwtPmlkIDw9IENTU1ZhbHVlV2Via2l0VGV4dCAmJiAhc3Ry
aWN0KCkpKTsKICAgICAgICAgICAgIGlmIChpc0NvbG9yKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFjb250ZXh0LmFsbG93Q29sb3IpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTQzMDEsNyArNDMwMSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVJlZmxlY3QoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgaWYgKCF2YWwpCiAgICAgICAgIG9mZnNldCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIGlmICghdmFsaWRVbml0KHZhbCwgRkxlbmd0aCB8IEZQZXJjZW50
LCBtX3N0cmljdCkpCisgICAgICAgIGlmICghdmFsaWRVbml0KHZhbCwgRkxlbmd0aCB8IEZQZXJj
ZW50LCBzdHJpY3QoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG9mZnNl
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsLT5mVmFsdWUsIHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM+KHZhbC0+dW5pdCkpOwogICAgIH0KQEAgLTQ0ODIs
NyArNDQ4Miw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlckltYWdlKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50LCBSZWZQdHI8Q1NTVmFsdWU+JiByCiAgICAgICAgIH0gZWxzZSBpZiAo
cHJvcElkID09IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UgJiYgY29udGV4dC5hbGxvd1Ns
YXNoKCkgJiYgdmFsLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2YWwtPmlW
YWx1ZSA9PSAnLycpIHsKICAgICAgICAgICAgIGNvbnRleHQuY29tbWl0U2xhc2goKTsKICAgICAg
ICAgfSBlbHNlIGlmIChjb250ZXh0LmFsbG93V2lkdGgoKSAmJgotICAgICAgICAgICAgKHZhbC0+
aWQgPT0gQ1NTVmFsdWVUaGluIHx8IHZhbC0+aWQgPT0gQ1NTVmFsdWVNZWRpdW0gfHwgdmFsLT5p
ZCA9PSBDU1NWYWx1ZVRoaWNrIHx8IHZhbGlkVW5pdCh2YWwsIEZMZW5ndGgsIG1fc3RyaWN0KSkp
IHsKKyAgICAgICAgICAgICh2YWwtPmlkID09IENTU1ZhbHVlVGhpbiB8fCB2YWwtPmlkID09IENT
U1ZhbHVlTWVkaXVtIHx8IHZhbC0+aWQgPT0gQ1NTVmFsdWVUaGljayB8fCB2YWxpZFVuaXQodmFs
LCBGTGVuZ3RoLCBzdHJpY3QoKSkpKSB7CiAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdFdpZHRo
KHZhbCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5hbGxvd1J1bGUoKSAmJgogICAgICAg
ICAgICAgKHZhbC0+aWQgPT0gQ1NTVmFsdWVTdHJldGNoIHx8IHZhbC0+aWQgPT0gQ1NTVmFsdWVS
b3VuZCB8fCB2YWwtPmlkID09IENTU1ZhbHVlUmVwZWF0KSkgewpAQCAtNDU0Niw3ICs0NTQ2LDcg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQm9yZGVyUmFkaXVzKGludCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogICAgICAgICBpZiAoaSAtIGluZGV4QWZ0ZXJTbGFzaCA+PSA0KQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3Ro
IHwgRlBlcmNlbnQsIG1fc3RyaWN0KSkKKyAgICAgICAgaWYgKCF2YWxpZFVuaXQodmFsdWUsIEZM
ZW5ndGggfCBGUGVyY2VudCwgc3RyaWN0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmFkaXVzID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSh2YWx1ZS0+ZlZhbHVlLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzPih2YWx1ZS0+dW5pdCkpOwpAQCAtNTAyMyw3ICs1MDIzLDcgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVHJhbnNmb3JtT3JpZ2luKGludCBwcm9wSWQsIGludCYgcHJvcElkMSwg
aW50JiBwcm9wSWQyLCBpbnQKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aOiB7Ci0gICAgICAgICAgICBp
ZiAodmFsaWRVbml0KG1fdmFsdWVMaXN0LT5jdXJyZW50KCksIEZMZW5ndGgsIG1fc3RyaWN0KSkK
KyAgICAgICAgICAgIGlmICh2YWxpZFVuaXQobV92YWx1ZUxpc3QtPmN1cnJlbnQoKSwgRkxlbmd0
aCwgc3RyaWN0KCkpKQogICAgICAgICAgICAgdmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKG1fdmFsdWVMaXN0LT5jdXJyZW50KCktPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXMpbV92YWx1ZUxpc3QtPmN1cnJlbnQoKS0+dW5pdCk7CiAgICAgICAgICAgICBpZiAo
dmFsdWUpCiAgICAgICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXgg
OGYzYzZkZDJiN2QyN2VmMmU1ZDQzMmI5MDQ1NDZhODBlNzVjZjJhNy4uZmI0YzFmM2Q3NzE5NjFm
NWFiOTdhZDYwN2FmZDJiNDc1N2Y5NGJjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxp
c3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCisjaW5jbHVkZSAiU3R5bGVCYXNlLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTU2LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgQ1NTUGFyc2VyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENTU1BhcnNlcihi
b29sIHN0cmljdFBhcnNpbmcgPSB0cnVlKTsKKyAgICAgICAgQ1NTUGFyc2VyKENTU1BhcnNlTW9k
ZSBwYXJzZU1vZGUgPSBIVE1MU3RyaWN0TW9kZSk7CiAgICAgICAgIH5DU1NQYXJzZXIoKTsKIAog
ICAgICAgICB2b2lkIHBhcnNlU2hlZXQoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYsIGlu
dCBzdGFydExpbmVOdW1iZXIgPSAwLCBTdHlsZVJ1bGVSYW5nZU1hcCogcnVsZVJhbmdlTWFwID0g
MCk7CkBAIC0yMTQsNyArMjE1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZv
aWQgY2xlYXJQcm9wZXJ0aWVzKCk7CiAKLSAgICAgICAgYm9vbCBtX3N0cmljdDsKKyAgICAgICAg
aW5saW5lIGJvb2wgc3RyaWN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGUgPT0gSFRNTFN0
cmljdE1vZGU7IH0KKworICAgICAgICBDU1NQYXJzZU1vZGUgbV9wYXJzZU1vZGUgOiAyOwogICAg
ICAgICBib29sIG1faW1wb3J0YW50OwogICAgICAgICBpbnQgbV9pZDsKICAgICAgICAgQ1NTU3R5
bGVTaGVldCogbV9zdHlsZVNoZWV0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCAzZDY5
ZTg3YTMwZGE4YjI5N2YzYjJiYzA0OTQ2N2RhZGNmMTgzYmQ4Li45MGQ4NzJhZjcxZDcyYzA2NGE2
NDk5YTNjZWU4YTg0MzY5M2RjYTdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtNjUw
LDcgKzY1MCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6cmVzb2x2ZVZhcmlhYmxlc0ZvckRl
Y2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uCiAKICAgICAgICAgLy8gV2Ugbm93
IGhhdmUgYSBmdWxseSByZXNvbHZlZCBuZXcgdmFsdWUgbGlzdC4gIFdlIHdhbnQgdGhlIHBhcnNl
ciB0byB1c2UgdGhpcyB2YWx1ZSBsaXN0CiAgICAgICAgIC8vIGFuZCBwYXJzZSBvdXIgbmV3IGRl
Y2xhcmF0aW9uLgotICAgICAgICBDU1NQYXJzZXIobV9jaGVja2VyLm1fc3RyaWN0UGFyc2luZyku
cGFyc2VQcm9wZXJ0eVdpdGhSZXNvbHZlZFZhcmlhYmxlcyhjdXJyZW50LmlkKCksIGN1cnJlbnQu
aXNJbXBvcnRhbnQoKSwgbmV3RGVjbCwgJnJlc29sdmVkVmFsdWVMaXN0KTsKKyAgICAgICAgQ1NT
UGFyc2VyKG1fY2hlY2tlci5tX3N0cmljdFBhcnNpbmcgPyBIVE1MU3RyaWN0TW9kZSA6IEhUTUxR
dWlya3NNb2RlKS5wYXJzZVByb3BlcnR5V2l0aFJlc29sdmVkVmFyaWFibGVzKGN1cnJlbnQuaWQo
KSwgY3VycmVudC5pc0ltcG9ydGFudCgpLCBuZXdEZWNsLCAmcmVzb2x2ZWRWYWx1ZUxpc3QpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCA5YmJjYjhiZDczNDMwODZjYmNkOTM1
NDllZGUwMTcwZDYxMmRhMGNiLi5hYTExNjg5Zjc0ZWM4ODJhOWJkY2ZjYzNkMzQ0MmUzNDhlNDcy
ZTZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtMzksNyArMzksNyBAQCBDU1NTdHlsZVNoZWV0
OjpDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBjb25zdCBTdHJpbmcm
IGhyZWYsIGNvbgogICAgICwgbV9kb2N1bWVudChwYXJlbnRTaGVldCA/IHBhcmVudFNoZWV0LT5k
b2N1bWVudCgpIDogMCkKICAgICAsIG1fY2hhcnNldChjaGFyc2V0KQogICAgICwgbV9sb2FkQ29t
cGxldGVkKGZhbHNlKQotICAgICwgbV9zdHJpY3RQYXJzaW5nKCFwYXJlbnRTaGVldCB8fCBwYXJl
bnRTaGVldC0+dXNlU3RyaWN0UGFyc2luZygpKQorICAgICwgbV9wYXJzZU1vZGUoIXBhcmVudFNo
ZWV0IHx8IHBhcmVudFNoZWV0LT5wYXJzZU1vZGUoKSkKICAgICAsIG1faXNVc2VyU3R5bGVTaGVl
dChwYXJlbnRTaGVldCA/IHBhcmVudFNoZWV0LT5pc1VzZXJTdHlsZVNoZWV0KCkgOiBmYWxzZSkK
ICAgICAsIG1faGFzU3ludGFjdGljYWxseVZhbGlkQ1NTSGVhZGVyKHRydWUpCiB7CkBAIC01MCw3
ICs1MCw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9kZSwg
Y29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiCiAgICAgLCBtX2RvY3VtZW50KHBhcmVu
dE5vZGUtPmRvY3VtZW50KCkpCiAgICAgLCBtX2NoYXJzZXQoY2hhcnNldCkKICAgICAsIG1fbG9h
ZENvbXBsZXRlZChmYWxzZSkKLSAgICAsIG1fc3RyaWN0UGFyc2luZyhmYWxzZSkKKyAgICAsIG1f
cGFyc2VNb2RlKEhUTUxRdWlya3NNb2RlKQogICAgICwgbV9pc1VzZXJTdHlsZVNoZWV0KGZhbHNl
KQogICAgICwgbV9oYXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIodHJ1ZSkKIHsKQEAgLTYw
LDcgKzYwLDcgQEAgQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChDU1NSdWxlKiBvd25lclJ1
bGUsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYKICAgICA6IFN0eWxlU2hlZXQob3du
ZXJSdWxlLCBocmVmLCBiYXNlVVJMKQogICAgICwgbV9jaGFyc2V0KGNoYXJzZXQpCiAgICAgLCBt
X2xvYWRDb21wbGV0ZWQoZmFsc2UpCi0gICAgLCBtX3N0cmljdFBhcnNpbmcoIW93bmVyUnVsZSB8
fCBvd25lclJ1bGUtPnVzZVN0cmljdFBhcnNpbmcoKSkKKyAgICAsIG1fcGFyc2VNb2RlKCFvd25l
clJ1bGUgfHwgb3duZXJSdWxlLT5wYXJzZU1vZGUoKSkKICAgICAsIG1faGFzU3ludGFjdGljYWxs
eVZhbGlkQ1NTSGVhZGVyKHRydWUpCiB7CiAgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQg
PSBvd25lclJ1bGUgPyBvd25lclJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSA6IDA7CkBAIC04NCw3
ICs4NCw3IEBAIHVuc2lnbmVkIENTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5n
JiBydWxlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uCiAgICAgICAgIGVjID0gSU5ERVhfU0la
RV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBDU1NQYXJzZXIgcCh1c2VTdHJp
Y3RQYXJzaW5nKCkpOworICAgIENTU1BhcnNlciBwKHBhcnNlTW9kZSgpKTsKICAgICBSZWZQdHI8
Q1NTUnVsZT4gciA9IHAucGFyc2VSdWxlKHRoaXMsIHJ1bGUpOwogCiAgICAgaWYgKCFyKSB7CkBA
IC0xODMsOCArMTgzLDggQEAgYm9vbCBDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBT
dHJpbmcgJnN0cmluZywgYm9vbCBzdHJpY3QpCiAKIGJvb2wgQ1NTU3R5bGVTaGVldDo6cGFyc2VT
dHJpbmdBdExpbmUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RyaWN0LCBpbnQgc3RhcnRM
aW5lTnVtYmVyKQogewotICAgIHNldFN0cmljdFBhcnNpbmcoc3RyaWN0KTsKLSAgICBDU1NQYXJz
ZXIgcChzdHJpY3QpOworICAgIHNldFBhcnNlTW9kZShzdHJpY3QgPyBIVE1MU3RyaWN0TW9kZSA6
IEhUTUxRdWlya3NNb2RlKTsKKyAgICBDU1NQYXJzZXIgcChzdHJpY3QgPyBIVE1MU3RyaWN0TW9k
ZSA6IEhUTUxRdWlya3NNb2RlKTsKICAgICBwLnBhcnNlU2hlZXQodGhpcywgc3RyaW5nLCBzdGFy
dExpbmVOdW1iZXIpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5oIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IDcy
NTUxOGY1NzM1NGM3ZDI5MWRhMzJkYzAwODZhOWJjMTk1NzhjYTQuLjE5ZDhkYWE0MTA2Mzk2ZTBi
ZmQ2N2UxNWM3MTM3YjViYjA1NzA2MzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTk2LDggKzk2LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVy
bCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RI
YXNoU2V0PEtVUkw+Jik7CiAKLSAgICB2b2lkIHNldFN0cmljdFBhcnNpbmcoYm9vbCBiKSB7IG1f
c3RyaWN0UGFyc2luZyA9IGI7IH0KLSAgICBib29sIHVzZVN0cmljdFBhcnNpbmcoKSBjb25zdCB7
IHJldHVybiBtX3N0cmljdFBhcnNpbmc7IH0KKyAgICB2b2lkIHNldFBhcnNlTW9kZShDU1NQYXJz
ZU1vZGUgbW9kZSkgeyBtX3BhcnNlTW9kZSA9IG1vZGU7IH0KKyAgICBDU1NQYXJzZU1vZGUgcGFy
c2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KIAogICAgIHZvaWQgc2V0SXNV
c2VyU3R5bGVTaGVldChib29sIGIpIHsgbV9pc1VzZXJTdHlsZVNoZWV0ID0gYjsgfQogICAgIGJv
b2wgaXNVc2VyU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNVc2VyU3R5bGVTaGVldDsg
fQpAQCAtMTE2LDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPENTU05hbWVzcGFjZT4g
bV9uYW1lc3BhY2VzOwogICAgIFN0cmluZyBtX2NoYXJzZXQ7CiAgICAgYm9vbCBtX2xvYWRDb21w
bGV0ZWQgOiAxOwotICAgIGJvb2wgbV9zdHJpY3RQYXJzaW5nIDogMTsKKyAgICBDU1NQYXJzZU1v
ZGUgbV9wYXJzZU1vZGUgOiAyOwogICAgIGJvb2wgbV9pc1VzZXJTdHlsZVNoZWV0IDogMTsKICAg
ICBib29sIG1faGFzU3ludGFjdGljYWxseVZhbGlkQ1NTSGVhZGVyIDogMTsKIH07CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZXNEZWNsYXJhdGlvbi5jcHAgYi9XZWJDb3JlL2Nz
cy9DU1NWYXJpYWJsZXNEZWNsYXJhdGlvbi5jcHAKaW5kZXggZTQwNzUwYWE5YThkYzJkZDhjMmQw
OTJkMTFmZTExNjJkY2ZlMTY3Zi4uMmU0NDdiNDU1MmIwZDBkZTU2N2U5OTg2ZmYzNGQxMWE5MTRi
ZTc2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVzRGVjbGFyYXRpb24uY3Bw
CisrKyBiL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlc0RlY2xhcmF0aW9uLmNwcApAQCAtODIsNyAr
ODIsNyBAQCBTdHJpbmcgQ1NTVmFyaWFibGVzRGVjbGFyYXRpb246OnJlbW92ZVZhcmlhYmxlKGNv
bnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBFeGNlcAogdm9pZCBDU1NWYXJpYWJsZXNEZWNsYXJh
dGlvbjo6c2V0VmFyaWFibGUoY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFyaWFibGVWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZXhjQ29kZSkKIHsKICAgICAvLyBUcnkg
dG8gcGFyc2UgdGhlIHZhcmlhYmxlIHZhbHVlIGludG8gYSBWYWx1ZSouICBJZiBpdCBmYWlscyB3
ZSB0aHJvdyBhbiBleGNlcHRpb24uCi0gICAgQ1NTUGFyc2VyIHBhcnNlcih1c2VTdHJpY3RQYXJz
aW5nKCkpOworICAgIENTU1BhcnNlciBwYXJzZXIocGFyc2VNb2RlKCkpOwogICAgIGlmICghcGFy
c2VyLnBhcnNlVmFyaWFibGUodGhpcywgdmFyaWFibGVOYW1lLCB2YXJpYWJsZVZhbHVlKSkgLy8g
SWYgdGhlIHBhcnNlIHN1Y2NlZWRzLCBpdCB3aWxsIGNhbGwgYWRkUGFyc2VkVmFyaWFibGUgKG91
ciBpbnRlcm5hbCBtZXRob2QgZm9yIGRvaW5nIHRoZSBhZGQpIHdpdGggdGhlIHBhcnNlZCBWYWx1
ZSouCiAgICAgICAgIGV4Y0NvZGUgPSBTWU5UQVhfRVJSOwogICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAgYi9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCmlu
ZGV4IDgxZjg3MTIyZDgyOTUyMGJhMTgzMDBmYzU4OTM0YTNjZjZhYTk1OTIuLjljMTY4NTJmNmNl
YTEzNDhhZTdmOTFmOTQxNWVmZDVhN2E2ZmNjYzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL01l
ZGlhTGlzdC5jcHAKKysrIGIvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcApAQCAtMTIwLDcgKzEy
MCw3IEBAIHN0YXRpYyBTdHJpbmcgcGFyc2VNZWRpYURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBz
KQogdm9pZCBNZWRpYUxpc3Q6OmRlbGV0ZU1lZGl1bShjb25zdCBTdHJpbmcmIG9sZE1lZGl1bSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPE1lZGlhTGlzdD4gdGVtcE1lZGlhTGlz
dCA9IE1lZGlhTGlzdDo6Y3JlYXRlKCk7Ci0gICAgQ1NTUGFyc2VyIHAodHJ1ZSk7CisgICAgQ1NT
UGFyc2VyIHA7CiAKICAgICBNZWRpYVF1ZXJ5KiBvbGRRdWVyeSA9IDA7CiAgICAgT3duUHRyPE1l
ZGlhUXVlcnk+IGNyZWF0ZWRRdWVyeTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBTdHJpbmcgTWVkaWFM
aXN0OjptZWRpYVRleHQoKSBjb25zdAogdm9pZCBNZWRpYUxpc3Q6OnNldE1lZGlhVGV4dChjb25z
dCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8TWVkaWFM
aXN0PiB0ZW1wTWVkaWFMaXN0ID0gTWVkaWFMaXN0OjpjcmVhdGUoKTsKLSAgICBDU1NQYXJzZXIg
cCh0cnVlKTsKKyAgICBDU1NQYXJzZXIgcDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGxpc3Q7CiAg
ICAgdmFsdWUuc3BsaXQoJywnLCBsaXN0KTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBTdHJpbmcgTWVk
aWFMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogdm9pZCBNZWRpYUxpc3Q6OmFwcGVu
ZE1lZGl1bShjb25zdCBTdHJpbmcmIG5ld01lZGl1bSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7Ci0gICAgQ1NTUGFyc2VyIHAodHJ1ZSk7Cisg
ICAgQ1NTUGFyc2VyIHA7CiAgICAgaWYgKHAucGFyc2VNZWRpYVF1ZXJ5KHRoaXMsIG5ld01lZGl1
bSkpIHsKICAgICAgICAgZWMgPSAwOwogICAgIH0gZWxzZSBpZiAobV9mYWxsYmFjaykgewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9jc3MvU3R5bGVCYXNlLmggYi9XZWJDb3JlL2Nzcy9TdHlsZUJhc2Uu
aAppbmRleCAyOTZjOGZiYzU0ZTlkMDgxODM5ZjUxMGRhZGQ1ZTQ1ZmVlNzljODI0Li4wNzg2OTY2
YmQwOGZjNzhjYjMwMjRkMjFjNTMwZjNjZGYwMjViZDYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nz
cy9TdHlsZUJhc2UuaAorKysgYi9XZWJDb3JlL2Nzcy9TdHlsZUJhc2UuaApAQCAtMzEsNiArMzEs
MTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFN0eWxlU2hlZXQ7CiAgICAgY2xh
c3MgS1VSTDsKIAorICAgIGVudW0gQ1NTUGFyc2VNb2RlIHsKKyAgICAgICAgSFRNTFN0cmljdE1v
ZGUsCisgICAgICAgIEhUTUxRdWlya3NNb2RlLAorICAgICAgICBTVkdTdHJpY3RNb2RlCisgICAg
fTsKICAgICAvLyBCYXNlIGNsYXNzIGZvciBtb3N0IENTUyBET00gb2JqZWN0cy4KIAogICAgIC8v
IEZJWE1FOiBXZSBkb24ndCBuZWVkIHRoZXNlIHRvIGFsbCBzaGFyZSBvbmUgYmFzZSBjbGFzcy4K
QEAgLTY3LDcgKzcyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBjaGVja0xvYWRlZCgpOwogCi0gICAgICAgIGJvb2wgdXNlU3RyaWN0UGFyc2luZygpIGNv
bnN0IHsgcmV0dXJuICFtX3BhcmVudCB8fCBtX3BhcmVudC0+dXNlU3RyaWN0UGFyc2luZygpOyB9
CisgICAgICAgIENTU1BhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiAhbV9wYXJl
bnQgPyBIVE1MU3RyaWN0TW9kZSA6IG1fcGFyZW50LT5wYXJzZU1vZGUoKTsgfQogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9QYXJlbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCAyM2Y5ZjM0YWY5Y2I2Y2Q3MDYyYTBhZWI1YWQ4YmYx
NTYwOTU4MGEyLi44MWQxNzU2MTgxYmEzODgxZGYyN2U2NmFiMTBjMmE2M2Q2NTkzMzQ0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lk
IFdlYktpdENTU0tleWZyYW1lc1J1bGU6OmFwcGVuZChXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIHJ1
bGUpCiAKIHZvaWQgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZShjb25zdCBTdHJp
bmcmIHJ1bGUpCiB7Ci0gICAgQ1NTUGFyc2VyIHAodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBD
U1NQYXJzZXIgcChwYXJzZU1vZGUoKSk7CiAgICAgUmVmUHRyPENTU1J1bGU+IG5ld1J1bGUgPSBw
LnBhcnNlS2V5ZnJhbWVSdWxlKHBhcmVudFN0eWxlU2hlZXQoKSwgcnVsZSk7CiAgICAgaWYgKG5l
d1J1bGUuZ2V0KCkgJiYgbmV3UnVsZS5nZXQoKS0+aXNLZXlmcmFtZVJ1bGUoKSkKICAgICAgICAg
YXBwZW5kKHN0YXRpY19jYXN0PFdlYktpdENTU0tleWZyYW1lUnVsZSo+KG5ld1J1bGUuZ2V0KCkp
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAgYi9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCmluZGV4IDM3MTQ3NjAzM2JhNmZjODVhZWExMTc5Mjdm
MzRmYjllNWVmNTU2NzMuLjg0OTZhNjhlMzlhMmIyMDAxOGEwMDE3ZTY2NWNlZmQ5NjY1OWVkZjEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKKysrIGIvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApAQCAtNjUsNyArNjUsNyBAQCBXZWJLaXRDU1NNYXRy
aXg6On5XZWJLaXRDU1NNYXRyaXgoKQogCiB2b2lkIFdlYktpdENTU01hdHJpeDo6c2V0TWF0cml4
VmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIENT
U1BhcnNlciBwKHVzZVN0cmljdFBhcnNpbmcoKSk7CisgICAgQ1NTUGFyc2VyIHAocGFyc2VNb2Rl
KCkpOwogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVEZWNsYXJh
dGlvbiA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKICAgICBpZiAocC5w
YXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtLCBzdHJpbmcsIHRydWUpKSB7CiAgICAgICAgIC8vIENvbnZlcnQgdG8gVHJhbnNmb3JtT3Bl
cmF0aW9ucy4gVGhpcyBjYW4gZmFpbCBpZiBhIHByb3BlcnR5IApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBkYTdiZjM4
Y2M4NmEwMDc2ODEzZTk0OWU1ZGRiOTEzMGY4YWZjMjQ0Li5mYTRlMjM5YTM3NDQ1MzhhZWZmM2Ni
NzVmMGUwMGJhMWQxYjgxNjU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTU1MSw3ICsxNTUxLDcgQEAgYm9vbCBF
bGVtZW50Ojp3ZWJraXRNYXRjaGVzU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgfQogCiAgICAgYm9vbCBzdHJpY3RQYXJzaW5nID0gIWRvY3Vt
ZW50KCktPmluUXVpcmtzTW9kZSgpOwotICAgIENTU1BhcnNlciBwKHN0cmljdFBhcnNpbmcpOwor
ICAgIENTU1BhcnNlciBwKHN0cmljdFBhcnNpbmcgPyBIVE1MU3RyaWN0TW9kZSA6IEhUTUxRdWly
a3NNb2RlKTsKIAogICAgIENTU1NlbGVjdG9yTGlzdCBzZWxlY3Rvckxpc3Q7CiAgICAgcC5wYXJz
ZVNlbGVjdG9yKHNlbGVjdG9yLCBkb2N1bWVudCgpLCBzZWxlY3Rvckxpc3QpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAwOTA3
ODIwZmY2NTUxOTQ3NmNhNDNkM2Q5M2FkNTVhYjVmMmYzNjFlLi4yZmU3ZWNiZmE1YzNiMzUzYWMy
NTJkOGFlN2YxMmYyZjQ3MDJlYjY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAor
KysgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTU1Nyw3ICsxNTU3LDcgQEAgUGFzc1JlZlB0
cjxFbGVtZW50PiBOb2RlOjpxdWVyeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBF
eGNlcHRpb25Db2RlJgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgYm9vbCBzdHJpY3RQ
YXJzaW5nID0gIWRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpOwotICAgIENTU1BhcnNlciBwKHN0
cmljdFBhcnNpbmcpOworICAgIENTU1BhcnNlciBwKHN0cmljdFBhcnNpbmcgPyBIVE1MU3RyaWN0
TW9kZSA6IEhUTUxRdWlya3NNb2RlKTsKIAogICAgIENTU1NlbGVjdG9yTGlzdCBxdWVyeVNlbGVj
dG9yTGlzdDsKICAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3JzLCBkb2N1bWVudCgpLCBxdWVy
eVNlbGVjdG9yTGlzdCk7CkBAIC0xNjA0LDcgKzE2MDQsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0
PiBOb2RlOjpxdWVyeVNlbGVjdG9yQWxsKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRp
b25DbwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgYm9vbCBzdHJpY3RQYXJzaW5nID0g
IWRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpOwotICAgIENTU1BhcnNlciBwKHN0cmljdFBhcnNp
bmcpOworICAgIENTU1BhcnNlciBwKHN0cmljdFBhcnNpbmcgPyBIVE1MU3RyaWN0TW9kZSA6IEhU
TUxRdWlya3NNb2RlKTsKIAogICAgIENTU1NlbGVjdG9yTGlzdCBxdWVyeVNlbGVjdG9yTGlzdDsK
ICAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3JzLCBkb2N1bWVudCgpLCBxdWVyeVNlbGVjdG9y
TGlzdCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1dlYkNv
cmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDEyNzQ0Y2IwNjBjOWQ5MjBlNzNlMTQzNWEz
NjQ1NGQ0MzhiMDk5NzMuLjQ3ODk1M2Y4MGRmNGU3OGZkZTZlYzcxNGNiNzM1OGUyOWQ5YjhhM2Qg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0xMjgsNiArMTI4LDExIEBAIHZvaWQgU3R5bGVkRWxl
bWVudDo6Y3JlYXRlSW5saW5lU3R5bGVEZWNsKCkKICAgICBtX2lubGluZVN0eWxlRGVjbCA9IENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKICAgICBtX2lubGluZVN0eWxlRGVj
bC0+c2V0UGFyZW50KGRvY3VtZW50KCktPmVsZW1lbnRTaGVldCgpKTsKICAgICBtX2lubGluZVN0
eWxlRGVjbC0+c2V0Tm9kZSh0aGlzKTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGlmIChpc1NWR0Vs
ZW1lbnQoKSkKKyAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNldFBhcnNlTW9kZShTVkdTdHJp
Y3RNb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0U3Ry
aWN0UGFyc2luZyhpc0hUTUxFbGVtZW50KCkgJiYgIWRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgp
KTsKIH0KIApAQCAtMzk5LDcgKzQwNCwxMiBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmNyZWF0ZU1h
cHBlZERlY2woQXR0cmlidXRlKiBhdHRyKQogICAgIGF0dHItPnNldERlY2woZGVjbCk7CiAgICAg
ZGVjbC0+c2V0UGFyZW50KGRvY3VtZW50KCktPmVsZW1lbnRTaGVldCgpKTsKICAgICBkZWNsLT5z
ZXROb2RlKHRoaXMpOwotICAgIGRlY2wtPnNldFN0cmljdFBhcnNpbmcoZmFsc2UpOyAvLyBNYXBw
ZWQgYXR0cmlidXRlcyBhcmUganVzdCBhbHdheXMgcXVpcmt5LgorI2lmIEVOQUJMRShTVkcpCisg
ICAgaWYgKGlzU1ZHRWxlbWVudCgpKQorICAgICAgICBkZWNsLT5zZXRQYXJzZU1vZGUoU1ZHU3Ry
aWN0TW9kZSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgZGVjbC0+c2V0UGFyc2VNb2RlKEhUTUxR
dWlya3NNb2RlKTsKIH0KIAogdW5zaWduZWQgTWFwcGVkQXR0cmlidXRlSGFzaDo6aGFzaChjb25z
dCBNYXBwZWRBdHRyaWJ1dGVLZXkmIGtleSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBiMWQ3YjIzM2QyYjVhOGU2ZjcwNzM5YzYw
M2UxM2UyOGRhMWVlMzM3Li5kZWY1MjY1NmFiYmNlODYwMTI2Yjc1NTEzZGU1MWE0YTYzZTE0NTk0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCkBAIC0xNjUyLDcgKzE2NTIsNyBAQCBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Ojpmb250KCkgY29uc3QKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KGNv
bnN0IFN0cmluZyYgbmV3Rm9udCkKIHsKICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24+IHRlbXBEZWNsID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwot
ICAgIENTU1BhcnNlciBwYXJzZXIoIW1fdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUpOwor
ICAgIENTU1BhcnNlciBwYXJzZXIobV91c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNlTW9kZSA/IEhU
TUxRdWlya3NNb2RlIDogSFRNTFN0cmljdE1vZGUpOwogCiAgICAgU3RyaW5nIGRlY2xhcmF0aW9u
VGV4dCgiZm9udDogIik7CiAgICAgZGVjbGFyYXRpb25UZXh0ICs9IG5ld0ZvbnQ7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGRjMmE0N2E2M2VmMzMzMjBh
ZTgzZTFlMDFjMTg3YjMzM2I4NzU1NTYuLmIxNTgyMTM0ZWJjNzJhZDI2Y2ZlZDg0M2FjYWUyNTdi
NzM2OGU1NWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBA
IC00ODYsNyArNDg2LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpzZXRUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCkKICAgICAgICAgbV9wYWdlU3R5bGVTaGVldC0+cmVtb3ZlKGkpOwogICAg
IG1faW5zcGVjdG9yU3R5bGVzLmNsZWFyKCk7CiAKLSAgICBtX3BhZ2VTdHlsZVNoZWV0LT5wYXJz
ZVN0cmluZyh0ZXh0LCBtX3BhZ2VTdHlsZVNoZWV0LT51c2VTdHJpY3RQYXJzaW5nKCkpOworICAg
IG1fcGFnZVN0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHRleHQsIG1fcGFnZVN0eWxlU2hlZXQtPnBh
cnNlTW9kZSgpID09IEhUTUxTdHJpY3RNb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71843</attachid>
            <date>2010-10-26 00:06:10 -0700</date>
            <delta_ts>2012-03-30 16:12:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46112-20101026091056.patch</filename>
            <type>text/plain</type>
            <size>65564</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3OTI1ZmI4NjU4ZjdkODE5MzcyYjg3MjI3NGU3ODQ1M2FhZGRmYjg4Li42YjdkOGIz
YzM0Mjc1MTU2OTZhNWQxODAyYzU0YjU1NjRkNzhmOTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMTAtMTAtMjUgIFJvYiBCdWlzICA8cndsYnVpc0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29sb3JzIHNlZW0gdG8gYmUgcGFy
c2VkIHVzaW5nIEhUTUwgcXVpcmtzIGluIFNWRyBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjExMgorCisgICAgICAgIFRlc3QgdGhh
dCBwYXJzaW5nIG9mIGNvbG9ycyBpbiBTVkcgaXMgZG9uZSBzdHJpY3Qgc28gdGhhdCBpbnZhbGlk
IGhleGNvbG9yCisgICAgICAgIGxpa2UgZWVlKG1pc3NpbmcgIykgYXJlIG5vdCBhY2NlcHRlZC4g
VGVzdCBmb3Igc3RyaWN0IHBhcnNpbmcgaW4gU1ZHIHN0eWxlc2hlZXRzLAorICAgICAgICBzdHls
ZSBhdHRyaWJ1dGUgYW5kIHByZXNlbnRhdGlvbiBhdHRyaWJ1dGUuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZy1leHBlY3RlZC5jaGVja3N1
bTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9y
LXBhcnNpbmctZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvc3Zn
L2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9zdmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5nMi1leHBlY3Rl
ZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3Ry
aWN0LWNvbG9yLXBhcnNpbmcyLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmcyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNp
bmczLWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvc3Zn
L2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzMtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5n
LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzIu
c3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5nMy5z
dmc6IEFkZGVkLgorCiAyMDEwLTEwLTIzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNzAzNjcuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29s
b3ItcGFyc2luZy1leHBlY3RlZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9z
dmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5nLWV4cGVjdGVkLmNoZWNrc3VtCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjczNjM4NDEyNGEzMDAyZDRmMDg5ZGUzY2IzM2I4YmNmYzg2MzJkMjgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3It
cGFyc2luZy1leHBlY3RlZC5jaGVja3N1bQpAQCAtMCwwICsxIEBACis3Nzg4MDNkZjBhODI0ZWQ4
ZjJjN2RmYTA3YzU2ODMyZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5n
LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL3N0cmlj
dC1jb2xvci1wYXJzaW5nLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTZlMzhjMmJkM2Y4Y2Qx
YWU2NDQ3NzA5ZjMzNmNlNGQzNmY5YjI3CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTM2NAp6
Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkxQiVRbFlicFE9U1o2dnIyWTVPPUQr
Q25mcilCMSgKekdCOHZ5d29kV1J4RHBgSl9QPEI3WC1tX0p0enVJaUlDWERQd1kkKDJhNjVEQndU
WG9pemJgMUFGZXklI0AtO1NgCnpESmtGSztkdGp+UkZ8fVRONE00XnIoRlJCT1N2YUh6ME05fkRP
e0A1O2JiMGs/NyFNdUFGVktibTdoaUQ+ZChKIQp6VitpRkI/bmB6eE53eyV0X3NNbEQlM2dlRSpq
Qis1eTI4PFBNXk19SUUkVHdRWW5PJURKenhLRmQlJSpeT2BnWlAKenpSSiR7dV9nRUdVKz9+O19w
aiVEYCEoPDl1Z1pLPUp6PUlVeDdTQGMyY2xLXis0aDhnST1OQF5AQEV8PiRyQEFECnp0ZT8xVFNI
SjFGJm9PUW1ANWg5VyVaSDJgUisoaUx3TExjU09KVXUpRyRTU1RPeUgpeDwtVzZSUk5yUXZtc3I7
Sgp6KlJBZUU8YmA4WGB4KTB9SEBOQytaKTQ8Xyp2cXtwRHRARXM2LU1wZmpUPzFFWj1ZWGNGVGI/
eCZncTwrWmB5LWIKekVuZjR8ZEY3WDQrWUxYWTQycmpnezM9fT9HSGQ1cW5LaDRScmkkRUl2XzNX
UWwoeGJPXkJaUz5vVjFNVVhyNU9TCnolM1V6SV8pUj8xNWp9P01fRHNAcDQ1I0lwSkVheit2bnhI
bm5PRUBpc09DQT03YmgmMiN+TkV0eG8tQ1FTSn5SUgp6PyVHQE9aZkUzTzM3V1Jfcj1FWHR0Tk5X
cTlfR242djxsQXNpI2tAbGJ3ZjQocjw0RGJwMHtrVG87RyEyJCpSZWwKelU1cyE0bmp8KU5fc1FO
VClzbl5qPH50aiZoYTlfbVMkZX4haSlZSGV2JmcqTXl3PjhwWW5EPiF3fWR8b0dlMyU2CnpKP1p8
YE15MD52WHRVOT5lRVZzKXJZbF4oSmtNcmN4MkxifV9pYnx9VXA8dWMzfG5MREVjLUZDP3ljQSlx
eFYpPgp6Pzx9Vk1LZjhJYGlESD5IUnpfajdfaHUkNDdoNSVFSnZpWFhDdDJtQTxyQjN1e3pCSEYh
eW9yKz44aE9DdClzUTsKeiFefj5DLV8/RSM0JXtgV2xWNFFXVj1fJVM8Q3Bjeys1Zz0zdWVeVjhm
ODB1YWxNb3hfY1kmOEJfV3prJW4zQCpaCnorYXJCTjxNSFdQTytWT0g9UHRrUUgwQGVxb1RHblM8
YjlFS2RkY3hDXntZKjBJPis/Kng5PHtKPTtKR3FWc21ycgp6bnwmVkpleUlKYURaVkstT0t6K0ZJ
bEdtc3BId2FHbGJ5TXl1Rnghb0h+YXRRKWRgbjJ0XlYrJmNZPlp4X1FHfGMKejx9MkBKYj87KUh3
YVlzPElRcHZKelBCT1lyPFo+ejNSQ21qbHNFbkFAKkI7KW0lb0poP0p8bUhgN2MmeV8oIzgjCnpH
a1Y5ZWcodkdYNHhMVClAJjN7RztHMkI4JDR+dH55b3t9KXlmeG18KShpe140NHk4SUFyKntvWnlN
JH4xcSFlQAp6ZW1NR2VjNzFXPCshZjRDTjtUVE8wZkpqQV9XejRKZkJKYmclZTs4fDxKYlI0P0Jp
ZiRWJk09X2FBPEpRYCFIRXcKek8yd2dwMFZaLWxRTmUqdjt5Z3FlRWMlNnNYXkh0KGs1TUl+O2xq
YyhuaXhSWVc7QnpHbUpGak09SFJJJktHZk9HCnpmQmJBRkpXN0MhbEAwWHtMNExfZF5fVUpMPEVE
fjM7QSMofCgxVnI1PDVYcjNMUlhgemcyU3t2WDtAVlZIaWZ+ewp6dlI0cTg8KU54SnUmfHVDUkh6
SytKMUI/PkN9PUo+Z3gwNFpSbnI8NkJDWWF9RU1DSUlyMUkzbjRRMiRlX3opNk0KekBJS3kpV08w
Wj8hOyg0MmtsWXIqI0ZYLUsyYT80VHhIdStFeGgjUj9IZ0FVcDlhKGNFaS1ROyRDbHlIe3hoO1d7
CnpXNVV3TU5FU1AyRFUxZm5YclFvK3JXOGh8KGQ/cnpUQmRMYWoyNSZFamlhXkNYcTYwWE1+dD5w
TWpMT3ktdEIwTQp6UnpQOTJuR2ZuZ2pyTSY7SkE/d0d5PGBAUyhWPkhlKFYrdGNodGNzQXJxUTdU
O0hjZmAoODFgPzBkUmJHYm0oQW8Kej1tMGJzSTJjQ3I9ZDJIISVEfSpKMUdFK1pHU00qRlcqS2Q+
MERKU0paSTtuQzMjZFJDWkxeSEZTd2BDfHBvI3BeCms+NWY2dFcrQT92QF98MlREJGpFTCQwdD5R
dEFgbXBVSHgzdklWQ2chMEI9cUFkO2tDZAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBh
cnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20v
c3RyaWN0LWNvbG9yLXBhcnNpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhMzE3NWFlZGM5
NTZjZTg2ZWIxNzY4YTE4MWQwYmM5OWU4MzgzMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw2IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJTVkdSb290IHtzdmd9IGF0ICgwLDApIHNpemUgMTAweDEwMAorICAgIFJlbmRl
clNWR1BhdGgge3JlY3R9IGF0ICgwLDApIHNpemUgMTAweDEwMCBbZmlsbD17W3R5cGU9U09MSURd
IFtjb2xvcj0jMDA4MDAwXX1dIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD0xMDAuMDBdIFtoZWln
aHQ9MTAwLjAwXQorICAgIFJlbmRlclNWR1BhdGgge3JlY3R9IGF0ICgwLDApIHNpemUgMTAweDEw
MCBbeD0wLjAwXSBbeT0wLjAwXSBbd2lkdGg9MTAwLjAwXSBbaGVpZ2h0PTEwMC4wMF0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL3N0cmljdC1jb2xvci1w
YXJzaW5nMi1leHBlY3RlZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcv
Y3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5nMi1leHBlY3RlZC5jaGVja3N1bQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MzYzODQxMjRhMzAwMmQ0ZjA4OWRlM2NiMzNiOGJjZmM4NjMyZDI4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBh
cnNpbmcyLWV4cGVjdGVkLmNoZWNrc3VtCkBAIC0wLDAgKzEgQEAKKzc3ODgwM2RmMGE4MjRlZDhm
MmM3ZGZhMDdjNTY4MzJlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmcy
LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL3N0cmlj
dC1jb2xvci1wYXJzaW5nMi1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTU2ZTM4YzJiZDNmOGNk
MWFlNjQ0NzcwOWYzMzZjZTRkMzZmOWIyNwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTEzNjQK
emNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMUIlUWxZYnBRPVNaNnZyMlk1Tz1E
K0NuZnIpQjEoCnpHQjh2eXdvZFdSeERwYEpfUDxCN1gtbV9KdHp1SWlJQ1hEUHdZJCgyYTY1REJ3
VFhvaXpiYDFBRmV5JSNALTtTYAp6REprRks7ZHRqflJGfH1UTjRNNF5yKEZSQk9TdmFIejBNOX5E
T3tANTtiYjBrPzchTXVBRlZLYm03aGlEPmQoSiEKelYraUZCP25genhOd3sldF9zTWxEJTNnZUUq
akIrNXkyODxQTV5NfUlFJFR3UVluTyVESnp4S0ZkJSUqXk9gZ1pQCnp6Ukoke3VfZ0VHVSs/fjtf
cGolRGAhKDw5dWdaSz1Kej1JVXg3U0BjMmNsS14rNGg4Z0k9TkBeQEBFfD4kckBBRAp6dGU/MVRT
SEoxRiZvT1FtQDVoOVclWkgyYFIrKGlMd0xMY1NPSlV1KUckU1NUT3lIKXg8LVc2UlJOclF2bXNy
O0oKeipSQWVFPGJgOFhgeCkwfUhATkMrWik0PF8qdnF7cER0QEVzNi1NcGZqVD8xRVo9WVhjRlRi
P3gmZ3E8K1pgeS1iCnpFbmY0fGRGN1g0K1lMWFk0MnJqZ3szPX0/R0hkNXFuS2g0UnJpJEVJdl8z
V1FsKHhiT15CWlM+b1YxTVVYcjVPUwp6JTNVeklfKVI/MTVqfT9NX0RzQHA0NSNJcEpFYXordm54
SG5uT0VAaXNPQ0E9N2JoJjIjfk5FdHhvLUNRU0p+UlIKej8lR0BPWmZFM08zN1dSX3I9RVh0dE5O
V3E5X0duNnY8bEFzaSNrQGxid2Y0KHI8NERicDB7a1RvO0chMiQqUmVsCnpVNXMhNG5qfClOX3NR
TlQpc25eajx+dGomaGE5X21TJGV+IWkpWUhldiZnKk15dz44cFluRD4hd31kfG9HZTMlNgp6Sj9a
fGBNeTA+dlh0VTk+ZUVWcylyWWxeKEprTXJjeDJMYn1faWJ8fVVwPHVjM3xuTERFYy1GQz95Y0Ep
cXhWKT4Kej88fVZNS2Y4SWBpREg+SFJ6X2o3X2h1JDQ3aDUlRUp2aVhYQ3QybUE8ckIzdXt6QkhG
IXlvcis+OGhPQ3Qpc1E7CnohXn4+Qy1fP0UjNCV7YFdsVjRRV1Y9XyVTPENwY3srNWc9M3VlXlY4
ZjgwdWFsTW94X2NZJjhCX1d6ayVuM0AqWgp6K2FyQk48TUhXUE8rVk9IPVB0a1FIMEBlcW9UR25T
PGI5RUtkZGN4Q157WSowST4rPyp4OTx7Sj07SkdxVnNtcnIKem58JlZKZXlJSmFEWlZLLU9LeitG
SWxHbXNwSHdhR2xieU15dUZ4IW9IfmF0USlkYG4ydF5WKyZjWT5aeF9RR3xjCno8fTJASmI/OylI
d2FZczxJUXB2SnpQQk9ZcjxaPnozUkNtamxzRW5BQCpCOyltJW9KaD9KfG1IYDdjJnlfKCM4Iwp6
R2tWOWVnKHZHWDR4TFQpQCYze0c7RzJCOCQ0fnR+eW97fSl5ZnhtfCkoaXteNDR5OElBcip7b1p5
TSR+MXEhZUAKemVtTUdlYzcxVzwrIWY0Q047VFRPMGZKakFfV3o0SmZCSmJnJWU7OHw8SmJSND9C
aWYkViZNPV9hQTxKUWAhSEV3CnpPMndncDBWWi1sUU5lKnY7eWdxZUVjJTZzWF5IdChrNU1Jfjts
amMobml4UllXO0J6R21KRmpNPUhSSSZLR2ZPRwp6ZkJiQUZKVzdDIWxAMFh7TDRMX2ReX1VKTDxF
RH4zO0EjKHwoMVZyNTw1WHIzTFJYYHpnMlN7dlg7QFZWSGlmfnsKenZSNHE4PClOeEp1Jnx1Q1JI
eksrSjFCPz5DfT1KPmd4MDRaUm5yPDZCQ1lhfUVNQ0lJcjFJM240UTIkZV96KTZNCnpASUt5KVdP
MFo/ITsoNDJrbFlyKiNGWC1LMmE/NFR4SHUrRXhoI1I/SGdBVXA5YShjRWktUTskQ2x5SHt4aDtX
ewp6VzVVd01ORVNQMkRVMWZuWHJRbytyVzhofChkP3J6VEJkTGFqMjUmRWppYV5DWHE2MFhNfnQ+
cE1qTE95LXRCME0KelJ6UDkybkdmbmdqck0mO0pBP3dHeTxgQFMoVj5IZShWK3RjaHRjc0FycVE3
VDtIY2ZgKDgxYD8wZFJiR2JtKEFvCno9bTBic0kyY0NyPWQySCElRH0qSjFHRStaR1NNKkZXKktk
PjBESlNKWkk7bkMzI2RSQ1pMXkhGU3dgQ3xwbyNwXgprPjVmNnRXK0E/dkBffDJURCRqRUwkMHQ+
UXRBYG1wVUh4M3ZJVkNnITBCPXFBZDtrQ2QKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL3N0cmljdC1jb2xvci1w
YXJzaW5nMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3Rv
bS9zdHJpY3QtY29sb3ItcGFyc2luZzItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhMzE3NWFl
ZGM5NTZjZTg2ZWIxNzY4YTE4MWQwYmM5OWU4MzgzMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoMCwwKSBzaXplIDEwMHgxMDAKKyAgICBS
ZW5kZXJTVkdQYXRoIHtyZWN0fSBhdCAoMCwwKSBzaXplIDEwMHgxMDAgW2ZpbGw9e1t0eXBlPVNP
TElEXSBbY29sb3I9IzAwODAwMF19XSBbeD0wLjAwXSBbeT0wLjAwXSBbd2lkdGg9MTAwLjAwXSBb
aGVpZ2h0PTEwMC4wMF0KKyAgICBSZW5kZXJTVkdQYXRoIHtyZWN0fSBhdCAoMCwwKSBzaXplIDEw
MHgxMDAgW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTEwMC4wMF0gW2hlaWdodD0xMDAuMDBdCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29s
b3ItcGFyc2luZzMtZXhwZWN0ZWQuY2hlY2tzdW0gYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
c3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzMtZXhwZWN0ZWQuY2hlY2tzdW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzM2Mzg0MTI0YTMwMDJkNGYwODlkZTNjYjMzYjhiY2ZjODYzMmQyOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL3N0cmljdC1jb2xv
ci1wYXJzaW5nMy1leHBlY3RlZC5jaGVja3N1bQpAQCAtMCwwICsxIEBACis3Nzg4MDNkZjBhODI0
ZWQ4ZjJjN2RmYTA3YzU2ODMyZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJz
aW5nMy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9z
dHJpY3QtY29sb3ItcGFyc2luZzMtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1NmUzOGMyYmQz
ZjhjZDFhZTY0NDc3MDlmMzM2Y2U0ZDM2ZjliMjcKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEx
MzY0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTFCJVFsWWJwUT1TWjZ2cjJZ
NU89RCtDbmZyKUIxKAp6R0I4dnl3b2RXUnhEcGBKX1A8QjdYLW1fSnR6dUlpSUNYRFB3WSQoMmE2
NURCd1RYb2l6YmAxQUZleSUjQC07U2AKekRKa0ZLO2R0an5SRnx9VE40TTRecihGUkJPU3ZhSHow
TTl+RE97QDU7YmIwaz83IU11QUZWS2JtN2hpRD5kKEohCnpWK2lGQj9uYHp4Tnd7JXRfc01sRCUz
Z2VFKmpCKzV5Mjg8UE1eTX1JRSRUd1FZbk8lREp6eEtGZCUlKl5PYGdaUAp6elJKJHt1X2dFR1Ur
P347X3BqJURgISg8OXVnWks9Sno9SVV4N1NAYzJjbEteKzRoOGdJPU5AXkBARXw+JHJAQUQKenRl
PzFUU0hKMUYmb09RbUA1aDlXJVpIMmBSKyhpTHdMTGNTT0pVdSlHJFNTVE95SCl4PC1XNlJSTnJR
dm1zcjtKCnoqUkFlRTxiYDhYYHgpMH1IQE5DK1opNDxfKnZxe3BEdEBFczYtTXBmalQ/MUVaPVlY
Y0ZUYj94JmdxPCtaYHktYgp6RW5mNHxkRjdYNCtZTFhZNDJyamd7Mz19P0dIZDVxbktoNFJyaSRF
SXZfM1dRbCh4Yk9eQlpTPm9WMU1VWHI1T1MKeiUzVXpJXylSPzE1an0/TV9Ec0BwNDUjSXBKRWF6
K3ZueEhubk9FQGlzT0NBPTdiaCYyI35ORXR4by1DUVNKflJSCno/JUdAT1pmRTNPMzdXUl9yPUVY
dHROTldxOV9HbjZ2PGxBc2kja0BsYndmNChyPDREYnAwe2tUbztHITIkKlJlbAp6VTVzITRuanwp
Tl9zUU5UKXNuXmo8fnRqJmhhOV9tUyRlfiFpKVlIZXYmZypNeXc+OHBZbkQ+IXd9ZHxvR2UzJTYK
eko/WnxgTXkwPnZYdFU5PmVFVnMpcllsXihKa01yY3gyTGJ9X2lifH1VcDx1YzN8bkxERWMtRkM/
eWNBKXF4Vik+Cno/PH1WTUtmOElgaURIPkhSel9qN19odSQ0N2g1JUVKdmlYWEN0Mm1BPHJCM3V7
ekJIRiF5b3IrPjhoT0N0KXNROwp6IV5+PkMtXz9FIzQle2BXbFY0UVdWPV8lUzxDcGN7KzVnPTN1
ZV5WOGY4MHVhbE1veF9jWSY4Ql9XemslbjNAKloKeithckJOPE1IV1BPK1ZPSD1QdGtRSDBAZXFv
VEduUzxiOUVLZGRjeENee1kqMEk+Kz8qeDk8e0o9O0pHcVZzbXJyCnpufCZWSmV5SUphRFpWSy1P
S3orRklsR21zcEh3YUdsYnlNeXVGeCFvSH5hdFEpZGBuMnReVismY1k+WnhfUUd8Ywp6PH0yQEpi
PzspSHdhWXM8SVFwdkp6UEJPWXI8Wj56M1JDbWpsc0VuQUAqQjspbSVvSmg/SnxtSGA3YyZ5Xygj
OCMKekdrVjllZyh2R1g0eExUKUAmM3tHO0cyQjgkNH50fnlve30peWZ4bXwpKGl7XjQ0eThJQXIq
e29aeU0kfjFxIWVACnplbU1HZWM3MVc8KyFmNENOO1RUTzBmSmpBX1d6NEpmQkpiZyVlOzh8PEpi
UjQ/QmlmJFYmTT1fYUE8SlFgIUhFdwp6TzJ3Z3AwVlotbFFOZSp2O3lncWVFYyU2c1heSHQoazVN
SX47bGpjKG5peFJZVztCekdtSkZqTT1IUkkmS0dmT0cKemZCYkFGSlc3QyFsQDBYe0w0TF9kXl9V
Skw8RUR+MztBIyh8KDFWcjU8NVhyM0xSWGB6ZzJTe3ZYO0BWVkhpZn57Cnp2UjRxODwpTnhKdSZ8
dUNSSHpLK0oxQj8+Q309Sj5neDA0WlJucjw2QkNZYX1FTUNJSXIxSTNuNFEyJGVfeik2TQp6QElL
eSlXTzBaPyE7KDQya2xZciojRlgtSzJhPzRUeEh1K0V4aCNSP0hnQVVwOWEoY0VpLVE7JENseUh7
eGg7V3sKelc1VXdNTkVTUDJEVTFmblhyUW8rclc4aHwoZD9yelRCZExhajI1JkVqaWFeQ1hxNjBY
TX50PnBNakxPeS10QjBNCnpSelA5Mm5HZm5nanJNJjtKQT93R3k8YEBTKFY+SGUoVit0Y2h0Y3NB
cnFRN1Q7SGNmYCg4MWA/MGRSYkdibShBbwp6PW0wYnNJMmNDcj1kMkghJUR9KkoxR0UrWkdTTSpG
VypLZD4wREpTSlpJO25DMyNkUkNaTF5IRlN3YEN8cG8jcF4Kaz41ZjZ0VytBP3ZAX3wyVEQkakVM
JDB0PlF0QWBtcFVIeDN2SVZDZyEwQj1xQWQ7a0NkCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9zdHJpY3QtY29s
b3ItcGFyc2luZzMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9j
dXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmczLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTMx
NzVhZWRjOTU2Y2U4NmViMTc2OGExODFkMGJjOTllODM4MzM4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmcz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgIFJlbmRlclNWR1Jvb3Qge3N2Z30gYXQgKDAsMCkgc2l6ZSAxMDB4MTAwCisg
ICAgUmVuZGVyU1ZHUGF0aCB7cmVjdH0gYXQgKDAsMCkgc2l6ZSAxMDB4MTAwIFtmaWxsPXtbdHlw
ZT1TT0xJRF0gW2NvbG9yPSMwMDgwMDBdfV0gW3g9MC4wMF0gW3k9MC4wMF0gW3dpZHRoPTEwMC4w
MF0gW2hlaWdodD0xMDAuMDBdCisgICAgUmVuZGVyU1ZHUGF0aCB7cmVjdH0gYXQgKDAsMCkgc2l6
ZSAxMDB4MTAwIFt4PTAuMDBdIFt5PTAuMDBdIFt3aWR0aD0xMDAuMDBdIFtoZWlnaHQ9MTAwLjAw
XQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2lu
Zy5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N0cmljdC1jb2xvci1wYXJzaW5nLnN2Zwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NmEyMDg1OWY1YTkyNjU2ZjU2Njc4ODZlZGE2MmI3ZThkMDU4MjFhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2lu
Zy5zdmcKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYt
OCI/PgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgorPHJlY3QgZmls
bD0iZ3JlZW4iIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIi8+Cis8cmVjdCBmaWxsPSJlZWUiIHdp
ZHRoPSIxMDAiIGhlaWdodD0iMTAwIi8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmcyLnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9j
dXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmcyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzIyOGMzZmY2ZmZh
MTRhZjczN2M3NjVkNWEzNjFhNDAwYjI0N2I2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzIuc3ZnCkBAIC0wLDAgKzEsNSBAQAor
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKzxyZWN0IHN0eWxlPSJmaWxsOmdyZWVuIiB3aWR0aD0i
MTAwIiBoZWlnaHQ9IjEwMCIvPgorPHJlY3Qgc3R5bGU9ImZpbGw6ZWVlIiB3aWR0aD0iMTAwIiBo
ZWlnaHQ9IjEwMCIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9t
L3N0cmljdC1jb2xvci1wYXJzaW5nMy5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3N0cmlj
dC1jb2xvci1wYXJzaW5nMy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFkZmFkYjE1MTZjYTYwNDkzZjc1NDJi
MjM5MGE3MjE5NTRmM2RhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0
b20vc3RyaWN0LWNvbG9yLXBhcnNpbmczLnN2ZwpAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyI+Cis8c3R5bGU+CisgICAgcmVjdCB7IGZpbGw6ZWVlOyB9Cis8L3N0eWxlPgor
PHJlY3Qgc3R5bGU9ImZpbGw6Z3JlZW4iIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIi8+Cis8cmVj
dCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU0MWVlMDI3YTlhYjFhY2E0MTA4
OGI3ZjBkYjE0YTdkMzAxMTViNzMuLmQwYjc4YjljYzE4NTM2NjdkZGMyY2ViZGUwMzEwYzJhNTA5
Y2NlYTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMTAtMTAtMjUgIFJvYiBCdWlzICA8cndsYnVpc0BnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q29sb3JzIHNlZW0gdG8gYmUgcGFyc2VkIHVzaW5nIEhUTUwgcXVpcmtzIGluIFNWRyBhdHRyaWJ1
dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjEx
MgorCisgICAgICAgIE1ha2UgQ1NTIHBhcnNpbmcgbW9yZSBmaW5lLWdyYWluZWQgZm9yIFNWRyBi
eSBhZGRpbmcgYSBTVkcgc3RyaWN0IG1vZGUuCisgICAgICAgIFRoaXMgcmVxdWlyZXMgY2hhbmdp
bmcgdGhlIHN0cmljdCBwYXJzaW5nIGJvb2xlYW4gdG8gYW4gZW51bWVyYXRpb24uCisgICAgICAg
IEJlbG93IHRoZSBpbXBvcnRhbnQgY2hhbmdlcyBhcmUgZGVzY3JpYmVkLCB0aGUgcmVzdCBpcyBh
ZGFwdGluZyB0byB0aGUgbmV3CisgICAgICAgIGVudW1lcmF0aW9uIGFuZCBjaGFuZ2VkIEFQSS4K
KworICAgICAgICBUZXN0czogc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZy5zdmcKKyAg
ICAgICAgICAgICAgIHN2Zy9jdXN0b20vc3RyaWN0LWNvbG9yLXBhcnNpbmcyLnN2ZworICAgICAg
ICAgICAgICAgc3ZnL2N1c3RvbS9zdHJpY3QtY29sb3ItcGFyc2luZzMuc3ZnCisKKyAgICAgICAg
KiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAgICAqIGNzcy9DU1NJbXBvcnRSdWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ltcG9ydFJ1bGU6OnNldENTU1N0eWxlU2hlZXQpOgorICAgICAg
ICAqIGNzcy9DU1NNZWRpYVJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTWVkaWFSdWxl
OjppbnNlcnRSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OkNTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjpwYXJzZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRMZW5ndGhQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dCk6CisgICAg
ICAgICogY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0U3RyaWN0UGFyc2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6c2V0UGFyc2VNb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpwYXJzZU1vZGUpOgor
ICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpDU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y2hlY2tGb3JPcnBoYW5lZFVuaXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlU2l6ZVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnBhcnNlQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6cGFyc2VGaWxsUG9zaXRpb25YWSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBh
cnNlRmlsbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlv
bkRlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25EdXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uSXRlcmF0
aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybU9y
aWdpblNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VBbmltYXRpb25UaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlRGFzaGJvYXJkUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yRnJvbVZhbHVlKTogZGlzYWxs
b3cgaW52YWxpZCBoZXhjb2xvciBpbiBTVkdTdHJpY3RNb2RlCisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VSZWZsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQm9yZGVyUmFkaXVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm1PcmlnaW4pOgorICAgICAg
ICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6c3RyaWN0
KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjpyZXNvbHZlVmFyaWFibGVzRm9yRGVjbGFyYXRpb24pOgorICAg
ICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2hlZXQ6OkNTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6
aW5zZXJ0UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpwYXJzZVN0cmlu
Z0F0TGluZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2hlZXQ6OnNldFBhcnNlTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
dHlsZVNoZWV0OjpwYXJzZU1vZGUpOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZXNEZWNsYXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZXNEZWNsYXJhdGlvbjo6c2V0
VmFyaWFibGUpOgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFMaXN0OjpkZWxldGVNZWRpdW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFMaXN0
OjpzZXRNZWRpYVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFMaXN0OjphcHBlbmRNZWRp
dW0pOgorICAgICAgICAqIGNzcy9TdHlsZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QmFzZTo6cGFyc2VNb2RlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NLZXlmcmFtZXNSdWxlOjppbnNlcnRSdWxl
KToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdENTU01hdHJpeDo6c2V0TWF0cml4VmFsdWUpOgorICAgICAgICAqIGRvbS9FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdE1hdGNoZXNTZWxlY3Rvcik6
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cXVlcnlT
ZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpxdWVyeVNlbGVjdG9yQWxsKToKKyAg
ICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRF
bGVtZW50OjpjcmVhdGVJbmxpbmVTdHlsZURlY2wpOiBzZXQgU1ZHU3RyaWN0TW9kZSBmb3IgU1ZH
IGVsZW1lbnRzCisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpjcmVhdGVNYXBwZWRE
ZWNsKTogc2V0IFNWR1N0cmljdE1vZGUgZm9yIFNWRyBlbGVtZW50cworICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxl
U2hlZXQ6OnNldFRleHQpOgorCiAyMDEwLTEwLTIzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNzAz
NjcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkgYi9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkKaW5kZXggYzAxMzlhMjk3MzZhZGYzYjNmMGU2NGUyYzU5NDM4MWE5ZjBkNzgz
NS4uYWUyOGQwZjgyMGVkNWNmNmI1MGQ2NGY5YjQ2NWUxZjMxN2U5NDAxYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpA
QCAtMTExNSw3ICsxMTE1LDcgQEAgc3BlY2lmaWVyOgogICAgICAgICBDU1NQYXJzZXIqIHAgPSBz
dGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgJCQtPm1fbWF0Y2ggPSBDU1NTZWxlY3Rvcjo6SWQ7
Ci0gICAgICAgIGlmICghcC0+bV9zdHJpY3QpCisgICAgICAgIGlmICghcC0+c3RyaWN0KCkpCiAg
ICAgICAgICAgICAkMS5sb3dlcigpOwogICAgICAgICAkJC0+bV92YWx1ZSA9ICQxOwogICAgIH0K
QEAgLTExMjYsNyArMTEyNiw3IEBAIHNwZWNpZmllcjoKICAgICAgICAgICAgIENTU1BhcnNlciog
cCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICAgICAkJCA9IHAt
PmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgICAgICQkLT5tX21hdGNoID0gQ1NT
U2VsZWN0b3I6OklkOwotICAgICAgICAgICAgaWYgKCFwLT5tX3N0cmljdCkKKyAgICAgICAgICAg
IGlmICghcC0+c3RyaWN0KCkpCiAgICAgICAgICAgICAgICAgJDEubG93ZXIoKTsKICAgICAgICAg
ICAgICQkLT5tX3ZhbHVlID0gJDE7CiAgICAgICAgIH0KQEAgLTExNDEsNyArMTE0MSw3IEBAIGNs
YXNzOgogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJz
ZXIpOwogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAg
JCQtPm1fbWF0Y2ggPSBDU1NTZWxlY3Rvcjo6Q2xhc3M7Ci0gICAgICAgIGlmICghcC0+bV9zdHJp
Y3QpCisgICAgICAgIGlmICghcC0+c3RyaWN0KCkpCiAgICAgICAgICAgICAkMi5sb3dlcigpOwog
ICAgICAgICAkJC0+bV92YWx1ZSA9ICQyOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3Nz
L0NTU0ltcG9ydFJ1bGUuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAKaW5kZXgg
ZTAyZDI0NDNkZWVkYTlmZTFjYzBlMmM0NzY0NGZmMTYyODkyMGE2NS4uMDYyZWUyMDk4MzA0Yjgw
MDViM2U2ZjExMmM1M2UzOGFiMDk4Nzg3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTSW1w
b3J0UnVsZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAKQEAgLTYzLDcg
KzYzLDcgQEAgdm9pZCBDU1NJbXBvcnRSdWxlOjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmlu
ZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY28KICAgICBib29sIGNyb3NzT3JpZ2luQ1NT
ID0gZmFsc2U7CiAgICAgYm9vbCB2YWxpZE1JTUVUeXBlID0gZmFsc2U7CiAgICAgQ1NTU3R5bGVT
aGVldCogcGFyZW50ID0gcGFyZW50U3R5bGVTaGVldCgpOwotICAgIGJvb2wgc3RyaWN0ID0gIXBh
cmVudCB8fCBwYXJlbnQtPnVzZVN0cmljdFBhcnNpbmcoKTsKKyAgICBib29sIHN0cmljdCA9ICFw
YXJlbnQgfHwgcGFyZW50LT5wYXJzZU1vZGUoKSA9PSBIVE1MU3RyaWN0TW9kZTsKICAgICBib29s
IGVuZm9yY2VNSU1FVHlwZSA9IHN0cmljdDsKICAgICBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVp
cmtzID0gcGFyZW50ICYmIHBhcmVudC0+ZG9jdW1lbnQoKSAmJiBwYXJlbnQtPmRvY3VtZW50KCkt
PnNldHRpbmdzKCkgJiYgcGFyZW50LT5kb2N1bWVudCgpLT5zZXR0aW5ncygpLT5uZWVkc1NpdGVT
cGVjaWZpY1F1aXJrcygpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUu
Y3BwIGIvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmNwcAppbmRleCBkMWMyMjBiZWRiNmQ5NThj
OTYwZjMzYmE5Y2VkOWY1MDlmNWEzOTZjLi4wMmZhYTVmNThkZWFkMWNiYjYzNDgxZjcyOWNkMzhk
ZWRjNjIyYTcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuY3BwCisrKyBi
L1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdW5zaWduZWQg
Q1NTTWVkaWFSdWxlOjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWduZWQgaW5k
ZXgsIEV4Y2VwdGlvbkMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgQ1NTUGFyc2Vy
IHAodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcChwYXJzZU1vZGUoKSk7CiAg
ICAgUmVmUHRyPENTU1J1bGU+IG5ld1J1bGUgPSBwLnBhcnNlUnVsZShwYXJlbnRTdHlsZVNoZWV0
KCksIHJ1bGUpOwogICAgIGlmICghbmV3UnVsZSkgewogICAgICAgICAvLyBTWU5UQVhfRVJSOiBS
YWlzZWQgaWYgdGhlIHNwZWNpZmllZCBydWxlIGhhcyBhIHN5bnRheCBlcnJvciBhbmQgaXMgdW5w
YXJzYWJsZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uLmNwcCBiL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCA5YjFkZDcxNWI2Y2NhMjA5ZTNkYzI0YzRiOGRhN2QzYjAxMmQ4Mzg4Li45NjhjMDQyNGNlY2Fm
NGJmMTQ1Njg1MDVjM2UwYTlhYjY0MmI0MmRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbigp
CiAgICAgOiBtX25vZGUoMCkKICAgICAsIG1fdmFyaWFibGVEZXBlbmRlbnRWYWx1ZUNvdW50KDAp
Ci0gICAgLCBtX3N0cmljdFBhcnNpbmcoZmFsc2UpCisgICAgLCBtX3BhcnNlTW9kZShIVE1MUXVp
cmtzTW9kZSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2l0ZXJhdG9yQ291bnQoMCkKICNlbmRp
ZgpAQCAtNTEsNyArNTEsNyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50KQogICAgIDogQ1NTU3R5bGVEZWNsYXJh
dGlvbihwYXJlbnQpCiAgICAgLCBtX25vZGUoMCkKICAgICAsIG1fdmFyaWFibGVEZXBlbmRlbnRW
YWx1ZUNvdW50KDApCi0gICAgLCBtX3N0cmljdFBhcnNpbmcoIXBhcmVudCB8fCBwYXJlbnQtPnVz
ZVN0cmljdFBhcnNpbmcoKSkKKyAgICAsIG1fcGFyc2VNb2RlKHBhcmVudCA/IHBhcmVudC0+cGFy
c2VNb2RlKCkgOiBIVE1MU3RyaWN0TW9kZSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2l0ZXJh
dG9yQ291bnQoMCkKICNlbmRpZgpAQCAtNjMsNyArNjMsNyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24oQ1NTUnVsZSogcGFyZW50LCBjb25z
dCBWZQogICAgICwgbV9wcm9wZXJ0aWVzKHByb3BlcnRpZXMpCiAgICAgLCBtX25vZGUoMCkKICAg
ICAsIG1fdmFyaWFibGVEZXBlbmRlbnRWYWx1ZUNvdW50KHZhcmlhYmxlRGVwZW5kZW50VmFsdWVD
b3VudCkKLSAgICAsIG1fc3RyaWN0UGFyc2luZyghcGFyZW50IHx8IHBhcmVudC0+dXNlU3RyaWN0
UGFyc2luZygpKQorICAgICwgbV9wYXJzZU1vZGUocGFyZW50ID8gcGFyZW50LT5wYXJzZU1vZGUo
KSA6IEhUTUxTdHJpY3RNb2RlKQogI2lmbmRlZiBOREVCVUcKICAgICAsIG1faXRlcmF0b3JDb3Vu
dCgwKQogI2VuZGlmCkBAIC03Niw3ICs3Niw3IEBAIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbihDU1NSdWxlKiBwYXJlbnQsIGNvbnN0IENTCiAg
ICAgOiBDU1NTdHlsZURlY2xhcmF0aW9uKHBhcmVudCkKICAgICAsIG1fbm9kZSgwKQogICAgICwg
bV92YXJpYWJsZURlcGVuZGVudFZhbHVlQ291bnQoMCkKLSAgICAsIG1fc3RyaWN0UGFyc2luZygh
cGFyZW50IHx8IHBhcmVudC0+dXNlU3RyaWN0UGFyc2luZygpKQorICAgICwgbV9wYXJzZU1vZGUo
cGFyZW50ID8gcGFyZW50LT5wYXJzZU1vZGUoKSA6IEhUTUxTdHJpY3RNb2RlKQogI2lmbmRlZiBO
REVCVUcKICAgICAsIG1faXRlcmF0b3JDb3VudCgwKQogI2VuZGlmCkBAIC0xMDEsNyArMTAxLDcg
QEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24mIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjpvcGVyYXRvcj0oY29uc3QgQ1NTTXV0YWIKICAgICBBU1NFUlQoIW1faXRlcmF0b3JDb3VudCk7
CiAgICAgLy8gZG9uJ3QgYXR0YWNoIGl0IHRvIHRoZSBzYW1lIG5vZGUsIGp1c3QgbGVhdmUgdGhl
IGN1cnJlbnQgbV9ub2RlIHZhbHVlCiAgICAgbV9wcm9wZXJ0aWVzID0gb3RoZXIubV9wcm9wZXJ0
aWVzOwotICAgIG1fc3RyaWN0UGFyc2luZyA9IG90aGVyLm1fc3RyaWN0UGFyc2luZzsKKyAgICBt
X3BhcnNlTW9kZSA9IG90aGVyLm1fcGFyc2VNb2RlOwogICAgIHJldHVybiAqdGhpczsKIH0KIApA
QCAtNTM1LDcgKzUzNSw3IEBAIGJvb2wgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnNldFBy
b3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlCiAKICAgICAvLyBXaGVu
IHJlcGxhY2luZyBhbiBleGlzdGluZyBwcm9wZXJ0eSB2YWx1ZSwgdGhpcyBtb3ZlcyB0aGUgcHJv
cGVydHkgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4KICAgICAvLyBGaXJlZm94IHByZXNlcnZlcyB0
aGUgcG9zaXRpb24sIGFuZCBNU0lFIG1vdmVzIHRoZSBwcm9wZXJ0eSB0byB0aGUgYmVnaW5uaW5n
LgotICAgIENTU1BhcnNlciBwYXJzZXIodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJz
ZXIgcGFyc2VyKHBhcnNlTW9kZSgpKTsKICAgICBib29sIHN1Y2Nlc3MgPSBwYXJzZXIucGFyc2VW
YWx1ZSh0aGlzLCBwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICBpZiAoIXN1Y2Nl
c3MpIHsKICAgICAgICAgLy8gQ1NTIERPTSByZXF1aXJlcyByYWlzaW5nIFNZTlRBWF9FUlIgaGVy
ZSwgYnV0IHRoaXMgaXMgdG9vIGRhbmdlcm91cyBmb3IgY29tcGF0aWJpbGl0eSwKQEAgLTU5MCw3
ICs1OTAsNyBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpwYXJzZURlY2xhcmF0
aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbgogICAgIEFTU0VSVCghbV9pdGVyYXRv
ckNvdW50KTsKIAogICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwotICAgIENTU1BhcnNlciBwYXJz
ZXIodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKHBhcnNlTW9kZSgp
KTsKICAgICBwYXJzZXIucGFyc2VEZWNsYXJhdGlvbih0aGlzLCBzdHlsZURlY2xhcmF0aW9uKTsK
ICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CkBAIC02MjYsMTAgKzYyNiwxMCBAQCB2b2lk
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpzZXRMZW5ndGhQcm9wZXJ0eShpbnQgcHJvcGVy
dHlJZCwgY29uc3QgU3RyaW5nJgogewogICAgIEFTU0VSVCghbV9pdGVyYXRvckNvdW50KTsKIAot
ICAgIGJvb2wgcGFyc2VNb2RlID0gdXNlU3RyaWN0UGFyc2luZygpOworICAgIENTU1BhcnNlTW9k
ZSB1c2VQYXJzZU1vZGUgPSBwYXJzZU1vZGUoKTsKICAgICBzZXRTdHJpY3RQYXJzaW5nKGZhbHNl
KTsKICAgICBzZXRQcm9wZXJ0eShwcm9wZXJ0eUlkLCB2YWx1ZSwgaW1wb3J0YW50KTsKLSAgICBz
ZXRTdHJpY3RQYXJzaW5nKHBhcnNlTW9kZSk7CisgICAgc2V0UGFyc2VNb2RlKHVzZVBhcnNlTW9k
ZSk7CiB9CiAKIHVuc2lnbmVkIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjp2aXJ0dWFsTGVu
Z3RoKCkgY29uc3QKQEAgLTcxMiw3ICs3MTIsNyBAQCB2b2lkIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZQog
CiAgICAgZWMgPSAwOwogICAgIG1fcHJvcGVydGllcy5jbGVhcigpOwotICAgIENTU1BhcnNlciBw
YXJzZXIodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcGFyc2VyKHBhcnNlTW9k
ZSgpKTsKICAgICBwYXJzZXIucGFyc2VEZWNsYXJhdGlvbih0aGlzLCB0ZXh0KTsKICAgICAvLyBG
SVhNRTogRGV0ZWN0IHN5bnRheCBlcnJvcnMgYW5kIHNldCBlYy4KICAgICBzZXROZWVkc1N0eWxl
UmVjYWxjKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbi5oIGIvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaAppbmRleCBk
NjI5YmNmYTZkODgyNTE0M2Y3OWQ4NzYwOGNkYzgwYTZjMTJjMDlhLi5mODIzOGI3NDA1NTdmYTJi
M2EyZWY0ZDE5MTY2Nzg4OGFjNGE3MjE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uLmgKQEAgLTEzMiw5ICsxMzIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgbWVyZ2Uo
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBib29sIGFyZ092ZXJyaWRlc09uQ29uZmxpY3Qg
PSB0cnVlKTsKIAogICAgIGJvb2wgaGFzVmFyaWFibGVEZXBlbmRlbnRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFyaWFibGVEZXBlbmRlbnRWYWx1ZUNvdW50ID4gMDsgfQotICAgIAotICAgIHZv
aWQgc2V0U3RyaWN0UGFyc2luZyhib29sIGIpIHsgbV9zdHJpY3RQYXJzaW5nID0gYjsgfQotICAg
IGJvb2wgdXNlU3RyaWN0UGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0UGFyc2luZzsg
fQorCisgICAgdm9pZCBzZXRTdHJpY3RQYXJzaW5nKGJvb2wgYikgeyBtX3BhcnNlTW9kZSA9IGIg
PyBIVE1MU3RyaWN0TW9kZSA6IEhUTUxRdWlya3NNb2RlOyB9CisgICAgdm9pZCBzZXRQYXJzZU1v
ZGUoQ1NTUGFyc2VNb2RlIG1vZGUpIHsgbV9wYXJzZU1vZGUgPSBtb2RlOyB9CisgICAgQ1NTUGFy
c2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9CiAKICAgICB2
b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+Jik7CiAKQEAgLTE2
NSw3ICsxNjYsNyBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogbV9ub2RlOwogICAgIHVuc2lnbmVk
IG1fdmFyaWFibGVEZXBlbmRlbnRWYWx1ZUNvdW50IDogMjQ7Ci0gICAgYm9vbCBtX3N0cmljdFBh
cnNpbmcgOiAxOworICAgIENTU1BhcnNlTW9kZSBtX3BhcnNlTW9kZSA6IDI7CiAjaWZuZGVmIE5E
RUJVRwogICAgIHVuc2lnbmVkIG1faXRlcmF0b3JDb3VudCA6IDQ7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CmluZGV4IDI2YzM4NzZlYjNkZWQ5NTM4MGU0NjU3NzZhMWFhMGYwZTVkOTdlMzguLmM0MGY4MzY4
MDU2MmJkMWIyM2E0NzFlM2M3NDkyY2Q4ZTZjOGM2YmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTI4LDgg
KzEyOCw4IEBAIHN0YXRpYyBib29sIGhhc1ByZWZpeChjb25zdCBjaGFyKiBzdHJpbmcsIHVuc2ln
bmVkIGxlbmd0aCwgY29uc3QgY2hhciogcHJlZml4KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Q1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQotICAgIDogbV9zdHJpY3Qo
c3RyaWN0UGFyc2luZykKK0NTU1BhcnNlcjo6Q1NTUGFyc2VyKENTU1BhcnNlTW9kZSBwYXJzZU1v
ZGUpCisgICAgOiBtX3BhcnNlTW9kZShwYXJzZU1vZGUpCiAgICAgLCBtX2ltcG9ydGFudChmYWxz
ZSkKICAgICAsIG1faWQoMCkKICAgICAsIG1fc3R5bGVTaGVldCgwKQpAQCAtMjkyLDcgKzI5Miw3
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBib29sIHN0cmljdCkKICAgICBpZiAocGFyc2VDb2xvcihzdHJpbmcsIGNvbG9y
LCBzdHJpY3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIENTU1BhcnNlciBwYXJzZXIo
dHJ1ZSk7CisgICAgQ1NTUGFyc2VyIHBhcnNlcihIVE1MU3RyaWN0TW9kZSk7CiAgICAgUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkdW1teVN0eWxlRGVjbGFyYXRpb24gPSBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CiAKICAgICAvLyBOb3cgdHJ5IHRvIGNy
ZWF0ZSBhIGNvbG9yIGZyb20gcmdiYSgpIHN5bnRheC4KQEAgLTUzNSw3ICs1MzUsNyBAQCBzdGF0
aWMgaW50IHVuaXRGcm9tU3RyaW5nKENTU1BhcnNlclZhbHVlKiB2YWx1ZSkKIAogdm9pZCBDU1NQ
YXJzZXI6OmNoZWNrRm9yT3JwaGFuZWRVbml0cygpCiB7Ci0gICAgaWYgKG1fc3RyaWN0IHx8IGlu
U2hvcnRoYW5kKCkpCisgICAgaWYgKHN0cmljdCgpIHx8IGluU2hvcnRoYW5kKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgY29kZSBpcyB0byBpbXBsZW1l
bnQgdGhlIFdpbklFIHF1aXJrIHRoYXQgYWxsb3dzIHVuaXQgdHlwZXMgdG8gYmUgc2VwYXJhdGVk
IGZyb20gdGhlaXIgbnVtZXJpYyB2YWx1ZXMKQEAgLTgxMSw3ICs4MTEsNyBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICB9CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nOgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmc6Ci0gICAgICAgIHZhbGlkUHJp
bWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRk5vbk5lZywgbV9zdHJpY3QpOwor
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25O
ZWcsIHN0cmljdCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxp
bmVDb2xvcjogICAgICAgIC8vIDxjb2xvcj4gfCBpbnZlcnQgfCBpbmhlcml0CiAgICAgICAgIC8v
IE91dGxpbmUgY29sb3IgaGFzICJpbnZlcnQiIGFzIGFkZGl0aW9uYWwga2V5d29yZC4KQEAgLTg0
Myw3ICs4NDMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKICAgICAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3Ip
CiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UgaWYgKChp
ZCA+PSBDU1NWYWx1ZUFxdWEgJiYgaWQgPD0gQ1NTVmFsdWVXaW5kb3d0ZXh0KSB8fCBpZCA9PSBD
U1NWYWx1ZU1lbnUgfHwKLSAgICAgICAgICAgICAoaWQgPj0gQ1NTVmFsdWVXZWJraXRGb2N1c1Jp
bmdDb2xvciAmJiBpZCA8IENTU1ZhbHVlV2Via2l0VGV4dCAmJiAhbV9zdHJpY3QpKSB7CisgICAg
ICAgICAgICAgKGlkID49IENTU1ZhbHVlV2Via2l0Rm9jdXNSaW5nQ29sb3IgJiYgaWQgPCBDU1NW
YWx1ZVdlYmtpdFRleHQgJiYgIXN0cmljdCgpKSkgewogICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBw
YXJzZUNvbG9yKCk7CkBAIC04ODIsNyArODgyLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKENTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0ZShtX3N0eWxlU2hlZXQtPmNvbXBsZXRlVVJM
KHVyaSksIGhvdFNwb3QpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKChtX3N0
cmljdCAmJiAhdmFsdWUpIHx8ICh2YWx1ZSAmJiAhKHZhbHVlLT51bml0ID09IENTU1BhcnNlclZh
bHVlOjpPcGVyYXRvciAmJiB2YWx1ZS0+aVZhbHVlID09ICcsJykpKQorICAgICAgICAgICAgaWYg
KChzdHJpY3QoKSAmJiAhdmFsdWUpIHx8ICh2YWx1ZSAmJiAhKHZhbHVlLT51bml0ID09IENTU1Bh
cnNlclZhbHVlOjpPcGVyYXRvciAmJiB2YWx1ZS0+aVZhbHVlID09ICcsJykpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHZhbHVlID0gbV92YWx1ZUxpc3QtPm5l
eHQoKTsgLy8gY29tbWEKICAgICAgICAgfQpAQCAtODkwLDcgKzg5MCw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAg
aWYgKCF2YWx1ZSkgeyAvLyBubyB2YWx1ZSBhZnRlciB1cmwgbGlzdCAoTVNJRSA1IGNvbXBhdGli
aWxpdHkpCiAgICAgICAgICAgICAgICAgaWYgKGxpc3QtPmxlbmd0aCgpICE9IDEpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIW1fc3Ry
aWN0ICYmIHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUhhbmQpIC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5
IDovCisgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJpY3QoKSAmJiB2YWx1ZS0+aWQgPT0gQ1NT
VmFsdWVIYW5kKSAvLyBNU0lFIDUgY29tcGF0aWJpbGl0eSA6LwogICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVBv
aW50ZXIpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlICYmICgodmFsdWUtPmlkID49IENT
U1ZhbHVlQXV0byAmJiB2YWx1ZS0+aWQgPD0gQ1NTVmFsdWVXZWJraXRHcmFiYmluZykgfHwgdmFs
dWUtPmlkID09IENTU1ZhbHVlQ29weSB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVOb25lKSkKICAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIodmFsdWUtPmlkKSk7CkBAIC04OTksNyArODk5LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBpZCA9IHZhbHVlLT5pZDsKLSAgICAgICAgaWYgKCFtX3N0cmlj
dCAmJiB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVIYW5kKSB7IC8vIE1TSUUgNSBjb21wYXRpYmlsaXR5
IDovCisgICAgICAgIGlmICghc3RyaWN0KCkgJiYgdmFsdWUtPmlkID09IENTU1ZhbHVlSGFuZCkg
eyAvLyBNU0lFIDUgY29tcGF0aWJpbGl0eSA6LwogICAgICAgICAgICAgaWQgPSBDU1NWYWx1ZVBv
aW50ZXI7CiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIH0gZWxz
ZSBpZiAoKHZhbHVlLT5pZCA+PSBDU1NWYWx1ZUF1dG8gJiYgdmFsdWUtPmlkIDw9IENTU1ZhbHVl
V2Via2l0R3JhYmJpbmcpIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUNvcHkgfHwgdmFsdWUtPmlk
ID09IENTU1ZhbHVlTm9uZSkKQEAgLTk4Nyw3ICs5ODcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlVGhpbiB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1bSB8fCBpZCA9PSBDU1NWYWx1ZVRoaWNr
KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25O
ZWcsIG1fc3RyaWN0KTsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZh
bHVlLCBGTGVuZ3RoIHwgRk5vbk5lZywgc3RyaWN0KCkpOwogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nOiAgICAgICAvLyBub3JtYWwgfCA8bGVuZ3Ro
PiB8IGluaGVyaXQKQEAgLTk5NSw3ICs5OTUsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1
ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
Tm9ybWFsKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCwg
bV9zdHJpY3QpOworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUs
IEZMZW5ndGgsIHN0cmljdCgpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3Bl
cnR5V29yZEJyZWFrOiAgICAgICAgICAvLyBub3JtYWwgfCBicmVhay1hbGwgfCBicmVhay13b3Jk
ICh0aGlzIGlzIGEgY3VzdG9tIGV4dGVuc2lvbikKQEAgLTEwMTQsNyArMTAxNCw3IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SW5kZW50OiAg
ICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGluaGVyaXQKLSAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50
LCBtX3N0cmljdCkpOworICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0
KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIHN0cmljdCgpKSk7CiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdUb3A6ICAgICAgICAgIC8vLy8gPHBhZGRpbmct
d2lkdGg+IHwgaW5oZXJpdApAQCAtMTAyNSw3ICsxMDI1LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFBhZGRpbmdFbmQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZv
cmU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcjoKLSAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50
IHwgRk5vbk5lZywgbV9zdHJpY3QpKTsKKyAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYm
IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgc3RyaWN0KCkp
KTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5TWF4SGVpZ2h0OiAgICAg
ICAgICAgLy8gPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBub25lIHwgaW5oZXJpdApAQCAtMTA0
NCw3ICsxMDQ0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9v
bCBpbXBvcnRhbnQpCiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUludHJpbnNpYyB8fCBpZCA9
PSBDU1NWYWx1ZU1pbkludHJpbnNpYykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZh
bGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgbV9zdHJpY3QpKTsK
KyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZM
ZW5ndGggfCBGUGVyY2VudCB8IEZOb25OZWcsIHN0cmljdCgpKSk7CiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTaXplOgpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
ICAgIGlmIChpZCA+PSBDU1NWYWx1ZVh4U21hbGwgJiYgaWQgPD0gQ1NTVmFsdWVMYXJnZXIpCiAg
ICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHZhbGlkUHJpbWl0aXZlID0gKHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50
IHwgRk5vbk5lZywgbV9zdHJpY3QpKTsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKHZh
bGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgc3RyaWN0KCkpKTsK
ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0eWxlOiAgICAgICAg
ICAgLy8gbm9ybWFsIHwgaXRhbGljIHwgb2JsaXF1ZSB8IGluaGVyaXQKQEAgLTEwNjgsNyArMTA2
OCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgICAgICBpZiAoaWQgPj0gQ1NTVmFsdWVCYXNlbGluZSAmJiBpZCA8PSBDU1NWYWx1
ZVdlYmtpdEJhc2VsaW5lTWlkZGxlKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFs
aWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KSk7CisgICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBl
cmNlbnQsIHN0cmljdCgpKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0
eUhlaWdodDogICAgICAgICAgICAgICAvLyA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8g
fCBpbmhlcml0CkBAIC0xMDc5LDcgKzEwNzksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1
ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgLy8gIyMjIGhhbmRsZSBtdWx0aWxl
bmd0aCBjYXNlIHdoZXJlIHdlIGFsbG93IHJlbGF0aXZlIHVuaXRzCi0gICAgICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQg
fCBGTm9uTmVnLCBtX3N0cmljdCkpOworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlk
ICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgc3RyaWN0
KCkpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5Qm90dG9tOiAgICAg
ICAgICAgICAgIC8vIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byB8IGluaGVyaXQKQEAg
LTEwOTcsNyArMTA5Nyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNl
bnQsIG1fc3RyaWN0KSk7CisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFs
aWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIHN0cmljdCgpKSk7CiAgICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVpJbmRleDogICAgICAgICAgICAgIC8vIGF1dG8g
fCA8aW50ZWdlcj4gfCBpbmhlcml0CkBAIC0xMTE2LDcgKzExMTYsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRV
bml0KHZhbHVlLCBGTnVtYmVyIHwgRkxlbmd0aCB8IEZQZXJjZW50IHwgRk5vbk5lZywgbV9zdHJp
Y3QpKTsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKCFpZCAmJiB2YWxpZFVuaXQodmFs
dWUsIEZOdW1iZXIgfCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBzdHJpY3QoKSkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudDogICAg
Ly8gWyA8aWRlbnRpZmllcj4gPGludGVnZXI+PyBdKyB8IG5vbmUgfCBpbmhlcml0CiAgICAgICAg
IGlmIChpZCAhPSBDU1NWYWx1ZU5vbmUpCkBAIC0xMjA2LDE0ICsxMjA2LDE0IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czogewogICAgICAgICBpZiAobnVtICE9
IDEgJiYgbnVtICE9IDIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0
KTsKKyAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBG
UGVyY2VudCwgc3RyaWN0KCkpOwogICAgICAgICBpZiAoIXZhbGlkUHJpbWl0aXZlKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBh
cnNlZFZhbHVlMSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUtPmZWYWx1ZSwgKENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpdmFsdWUtPnVuaXQpOwogICAgICAgICBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlZFZhbHVlMjsKICAgICAgICAgaWYgKG51bSA9PSAyKSB7
CiAgICAgICAgICAgICB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5uZXh0KCk7Ci0gICAgICAgICAgICB2
YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0
cmljdCk7CisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxl
bmd0aCB8IEZQZXJjZW50LCBzdHJpY3QoKSk7CiAgICAgICAgICAgICBpZiAoIXZhbGlkUHJpbWl0
aXZlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHBhcnNlZFZh
bHVlMiA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUtPmZWYWx1ZSwgKENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZXMpdmFsdWUtPnVuaXQpOwpAQCAtMTIyOSw3ICsxMjI5LDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1czoKICAgICAgICAgcmV0dXJuIHBh
cnNlQm9yZGVyUmFkaXVzKHByb3BJZCwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5
T3V0bGluZU9mZnNldDoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUs
IEZMZW5ndGggfCBGUGVyY2VudCwgbV9zdHJpY3QpOworICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBzdHJpY3QoKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0U2hhZG93OiAvLyBDU1MyIHByb3BlcnR5
LCBkcm9wcGVkIGluIENTUzIuMSwgYmFjayBpbiBDU1MzLCBzbyB0cmVhdCBhcyBDU1MzCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdzoKQEAgLTEyNDUsNyArMTI0NSw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlUmVmbGVjdChwcm9wSWQsIGltcG9ydGFudCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgotICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciwgbV9zdHJpY3QpOworICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciwgc3RyaWN0KCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246CiAgICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZVN0cmV0Y2ggfHwgaWQgPT0gQ1NTVmFsdWVTdGFydCB8fCBpZCA9PSBD
U1NWYWx1ZUVuZCB8fApAQCAtMTI3MSw3ICsxMjcxLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1p
dGl2ZSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3hGbGV4OgotICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJl
ciwgbV9zdHJpY3QpOworICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwg
Rk51bWJlciwgc3RyaWN0KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94RmxleEdyb3VwOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFs
R3JvdXA6CkBAIC0xMjk5LDcgKzEyOTksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU21h
bGwgfHwgaWQgPT0gQ1NTVmFsdWVMYXJnZSB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1bSkKICAgICAg
ICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCwgbV9z
dHJpY3QpOworICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZM
ZW5ndGggfCBGUGVyY2VudCwgc3RyaWN0KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVO
b25lIHx8IGlkID09IENTU1ZhbHVlU2xpZGUgfHwgaWQgPT0gQ1NTVmFsdWVTY3JvbGwgfHwgaWQg
PT0gQ1NTVmFsdWVBbHRlcm5hdGUpCkBAIC0xMzA5LDEzICsxMzA5LDEzIEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVJbmZpbml0ZSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQo
dmFsdWUsIEZJbnRlZ2VyIHwgRk5vbk5lZywgbV9zdHJpY3QpOworICAgICAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyIHwgRk5vbk5lZywgc3RyaWN0KCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVk
OgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFsdWVTbG93
IHx8IGlkID09IENTU1ZhbHVlRmFzdCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQo
dmFsdWUsIEZUaW1lIHwgRkludGVnZXIgfCBGTm9uTmVnLCBtX3N0cmljdCk7CisgICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRlRpbWUgfCBGSW50ZWdlciB8IEZO
b25OZWcsIHN0cmljdCgpKTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFdDU1MpCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXI6CkBAIC0xMzMwLDEzICsxMzMwLDEzIEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbmZpbml0ZSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0
aXZlID0gdHJ1ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2
YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyIHwgRk5vbk5lZywgbV9zdHJpY3QpOworICAgICAgICAg
ICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyIHwgRk5vbk5lZywg
c3RyaWN0KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVl
ZVNwZWVkOgogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWQgPT0gQ1NTVmFs
dWVTbG93IHx8IGlkID09IENTU1ZhbHVlRmFzdCkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZl
ID0gdHJ1ZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxp
ZFVuaXQodmFsdWUsIEZUaW1lIHwgRkludGVnZXIgfCBGTm9uTmVnLCBtX3N0cmljdCk7CisgICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRlRpbWUgfCBGSW50ZWdl
ciB8IEZOb25OZWcsIHN0cmljdCgpKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWc6IC8vIGF1dG8gfCBub25lIHwgZWxlbWVudApAQCAt
MTM5OCw3ICsxMzk4LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgLy8gQWNjZXB0aW5nIHZhbHVlbGVzcyBudW1iZXJzIGlz
IGEgcXVpcmsgb2YgdGhlIC13ZWJraXQgcHJlZml4ZWQgdmVyc2lvbiBvZiB0aGUgcHJvcGVydHku
Ci0gICAgICAgICAgICBpZiAodmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyIHwgRkxlbmd0aCB8IEZO
b25OZWcsIG1fc3RyaWN0KSkgeworICAgICAgICAgICAgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRk51
bWJlciB8IEZMZW5ndGggfCBGTm9uTmVnLCBzdHJpY3QoKSkpIHsKICAgICAgICAgICAgICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHZhbCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUtPmZW
YWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpdmFsdWUtPnVuaXQpOwogICAgICAg
ICAgICAgICAgIGlmICh2YWwpIHsKICAgICAgICAgICAgICAgICAgICAgYWRkUHJvcGVydHkocHJv
cElkLCB2YWwucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwpAQCAtMTQ5Myw3ICsxNDkzLDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
ICAgICAgICBpZCA9PSBDU1NWYWx1ZU1lZGl1bSB8fCBpZCA9PSBDU1NWYWx1ZVRoaWNrKQogICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB2YWxpZFByaW1pdGl2ZSA9ICFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIgfCBGTGVu
Z3RoIHwgRlBlcmNlbnQsIG1fc3RyaWN0KTsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
IWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciB8IEZMZW5ndGggfCBGUGVyY2VudCwgc3Ry
aWN0KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOiAvLyBu
b25lIHwgYm90aCB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGF1dG8KICAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUJvdGggfHwgaWQgPT0gQ1NTVmFsdWVI
b3Jpem9udGFsIHx8IGlkID09IENTU1ZhbHVlVmVydGljYWwgfHwgaWQgPT0gQ1NTVmFsdWVBdXRv
KQpAQCAtMTUwOSwxMyArMTUwOSwxMyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFs
KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25O
ZWcsIG1fc3RyaWN0KTsKKyAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZh
bHVlLCBGTGVuZ3RoIHwgRk5vbk5lZywgc3RyaWN0KCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uU3BhbjogICAgICAgIC8vIGFsbCB8IDEKICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlQWxsKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0
cnVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5p
dCh2YWx1ZSwgRk51bWJlciB8IEZOb25OZWcsIG1fc3RyaWN0KSAmJiB2YWx1ZS0+ZlZhbHVlID09
IDE7CisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJl
ciB8IEZOb25OZWcsIHN0cmljdCgpKSAmJiB2YWx1ZS0+ZlZhbHVlID09IDE7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aDogICAgICAgICAvLyBh
dXRvIHwgPGxlbmd0aD4KICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0bykKQEAgLTE1NTAs
NyArMTU1MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRG
b250U2l6ZURlbHRhOiAgICAgICAgICAgLy8gPGxlbmd0aD4KLSAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIG1fc3RyaWN0KTsKKyAgICAgICAgdmFsaWRQ
cmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgsIHN0cmljdCgpKTsKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6ICAgICAvLyBub3Jt
YWwgfCBzcGFjZQpAQCAtMjMwMyw3ICsyMzAzLDcgQEAgQ1NTUGFyc2VyOjpTaXplUGFyYW1ldGVy
VHlwZSBDU1NQYXJzZXI6OnBhcnNlU2l6ZVBhcmFtZXRlcihDU1NWYWx1ZUxpc3QqIHBhcnNlZFYK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gTm9uZTsKICAgICBjYXNlIDA6Ci0gICAgICAgIGlm
ICh2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnLCBtX3N0cmljdCkgJiYgKHByZXZQ
YXJhbVR5cGUgPT0gTm9uZSB8fCBwcmV2UGFyYW1UeXBlID09IExlbmd0aCkpIHsKKyAgICAgICAg
aWYgKHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIHN0cmljdCgpKSAmJiAocHJl
dlBhcmFtVHlwZSA9PSBOb25lIHx8IHByZXZQYXJhbVR5cGUgPT0gTGVuZ3RoKSkgewogICAgICAg
ICAgICAgcGFyc2VkVmFsdWVzLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1
ZS0+ZlZhbHVlLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPih2YWx1
ZS0+dW5pdCkpKTsKICAgICAgICAgICAgIHJldHVybiBMZW5ndGg7CiAgICAgICAgIH0KQEAgLTI0
MDMsNyArMjQwMyw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VCYWNr
Z3JvdW5kQ29sb3IoKQogewogICAgIGludCBpZCA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCktPmlk
OwogICAgIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFRleHQgfHwgKGlkID49IENTU1ZhbHVlQXF1
YSAmJiBpZCA8PSBDU1NWYWx1ZVdpbmRvd3RleHQpIHx8IGlkID09IENTU1ZhbHVlTWVudSB8fCBp
ZCA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvciB8fAotICAgICAgICAoaWQgPj0gQ1NTVmFsdWVHcmV5
ICYmIGlkIDwgQ1NTVmFsdWVXZWJraXRUZXh0ICYmICFtX3N0cmljdCkpCisgICAgICAgIChpZCA+
PSBDU1NWYWx1ZUdyZXkgJiYgaWQgPCBDU1NWYWx1ZVdlYmtpdFRleHQgJiYgIXN0cmljdCgpKSkK
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoaWQpOwog
ICAgIHJldHVybiBwYXJzZUNvbG9yKCk7CiB9CkBAIC0yNDU2LDcgKzI0NTYsNyBAQCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFBvc2l0aW9uWFkoYm9vbCYgeEZvdW5k
LCBib29sJiB5Rm91bmQpCiAgICAgICAgICAgICBwZXJjZW50ID0gNTA7CiAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHBlcmNlbnQsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSk7CiAgICAgfQotICAgIGlmICh2YWxpZFVuaXQobV92YWx1ZUxpc3QtPmN1
cnJlbnQoKSwgRlBlcmNlbnQgfCBGTGVuZ3RoLCBtX3N0cmljdCkpCisgICAgaWYgKHZhbGlkVW5p
dChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLCBGUGVyY2VudCB8IEZMZW5ndGgsIHN0cmljdCgpKSkK
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZUxpc3QtPmN1
cnJlbnQoKS0+ZlZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyltX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT51
bml0KTsKIApAQCAtMjU2NCw3ICsyNTY0LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZUZpbGxTaXplKGludCBwcm9wSWQsIGJvb2wmIGFsbG93Q29tbWEpCiAgICAgaWYg
KHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIHBhcnNlZFZhbHVlMSA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTktOT1dOKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgaWYgKCF2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVy
Y2VudCwgbV9zdHJpY3QpKQorICAgICAgICBpZiAoIXZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8
IEZQZXJjZW50LCBzdHJpY3QoKSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcGFy
c2VkVmFsdWUxID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS0+ZlZhbHVlLCAoQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyl2YWx1ZS0+dW5pdCk7CiAgICAgfQpAQCAtMjU3Nyw3
ICsyNTc3LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxTaXpl
KGludCBwcm9wSWQsIGJvb2wmIGFsbG93Q29tbWEpCiAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT51
bml0ID09IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2YWx1ZS0+aVZhbHVlID09ICcsJykK
ICAgICAgICAgICAgIGFsbG93Q29tbWEgPSBmYWxzZTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBpZiAoIXZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBtX3N0cmljdCkp
CisgICAgICAgICAgICBpZiAoIXZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZQZXJjZW50LCBz
dHJpY3QoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBwYXJzZWRW
YWx1ZTIgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLT5mVmFsdWUsIChDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGVzKXZhbHVlLT51bml0KTsKICAgICAgICAgfQpAQCAtMjc2Myw3
ICsyNzYzLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmlsbFByb3BlcnR5KGludCBwcm9wSWQs
IGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZUFuaW1hdGlvbkRlbGF5KCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUg
PSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwotICAgIGlmICh2YWxpZFVuaXQodmFsdWUsIEZUaW1l
LCBtX3N0cmljdCkpCisgICAgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRlRpbWUsIHN0cmljdCgpKSkK
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUtPmZWYWx1ZSwg
KENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpdmFsdWUtPnVuaXQpOwogICAgIHJldHVybiAw
OwogfQpAQCAtMjc3OSw3ICsyNzc5LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2Vy
OjpwYXJzZUFuaW1hdGlvbkRpcmVjdGlvbigpCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJz
ZXI6OnBhcnNlQW5pbWF0aW9uRHVyYXRpb24oKQogewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1
ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0gICAgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRlRp
bWUgfCBGTm9uTmVnLCBtX3N0cmljdCkpCisgICAgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRlRpbWUg
fCBGTm9uTmVnLCBzdHJpY3QoKSkpCiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHZhbHVlLT5mVmFsdWUsIChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKXZhbHVl
LT51bml0KTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTI3OTcsNyArMjc5Nyw3IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25JdGVyYXRpb25Db3VudCgpCiAg
ICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBp
ZiAodmFsdWUtPmlkID09IENTU1ZhbHVlSW5maW5pdGUpCiAgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2YWx1ZS0+aWQpOwotICAgIGlmICh2YWxpZFVu
aXQodmFsdWUsIEZJbnRlZ2VyIHwgRk5vbk5lZywgbV9zdHJpY3QpKQorICAgIGlmICh2YWxpZFVu
aXQodmFsdWUsIEZJbnRlZ2VyIHwgRk5vbk5lZywgc3RyaWN0KCkpKQogICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh2YWx1ZS0+ZlZhbHVlLCAoQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlcyl2YWx1ZS0+dW5pdCk7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yODQzLDcg
KzI4NDMsNyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm1PcmlnaW5TaG9ydGhhbmQo
UmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUxLCBSZWZQdHI8QwogICAgIHBhcnNlRmlsbFBvc2l0aW9u
KHZhbHVlMSwgdmFsdWUyKTsKIAogICAgIC8vIG5vdyBnZXQgegotICAgIGlmIChtX3ZhbHVlTGlz
dC0+Y3VycmVudCgpICYmIHZhbGlkVW5pdChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLCBGTGVuZ3Ro
LCBtX3N0cmljdCkpCisgICAgaWYgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkgJiYgdmFsaWRVbml0
KG1fdmFsdWVMaXN0LT5jdXJyZW50KCksIEZMZW5ndGgsIHN0cmljdCgpKSkKICAgICAgICAgdmFs
dWUzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5m
VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGVzKW1fdmFsdWVMaXN0LT5jdXJyZW50KCktPnVuaXQpOwogICAg
IGlmICh2YWx1ZTMpCkBAIC0yODUzLDcgKzI4NTMsNyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2VU
cmFuc2Zvcm1PcmlnaW5TaG9ydGhhbmQoUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUxLCBSZWZQdHI8
QwogYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENT
U1BhcnNlclZhbHVlTGlzdComIGFyZ3MsIGRvdWJsZSYgcmVzdWx0KQogewogICAgIENTU1BhcnNl
clZhbHVlKiB2ID0gYXJncy0+Y3VycmVudCgpOwotICAgIGlmICghdmFsaWRVbml0KHYsIEZOdW1i
ZXIsIG1fc3RyaWN0KSkKKyAgICBpZiAoIXZhbGlkVW5pdCh2LCBGTnVtYmVyLCBzdHJpY3QoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQgPSB2LT5mVmFsdWU7CiAgICAgaWYg
KHJlc3VsdCA8IDAgfHwgcmVzdWx0ID4gMS4wKQpAQCAtMjg5MSw3ICsyODkxLDcgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkK
ICAgICAgICAgYm9vbCBzdGVwQXRTdGFydCA9IGZhbHNlOwogCiAgICAgICAgIENTU1BhcnNlclZh
bHVlKiB2ID0gYXJncy0+Y3VycmVudCgpOwotICAgICAgICBpZiAoIXZhbGlkVW5pdCh2LCBGSW50
ZWdlciwgbV9zdHJpY3QpKQorICAgICAgICBpZiAoIXZhbGlkVW5pdCh2LCBGSW50ZWdlciwgc3Ry
aWN0KCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIG51bVN0ZXBzID0gKGludCkg
bWluKHYtPmZWYWx1ZSwgKGRvdWJsZSlJTlRfTUFYKTsKICAgICAgICAgaWYgKG51bVN0ZXBzIDwg
MSkKQEAgLTMxNDYsNyArMzE0Niw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURhc2hib2FyZFJl
Z2lvbnMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICAgICAgYXJnID0g
YXJncy0+bmV4dCgpOwogICAgICAgICAgICAgICAgIGFyZyA9IHNraXBDb21tYUluRGFzaGJvYXJk
UmVnaW9uKGFyZ3MpOwogCi0gICAgICAgICAgICAgICAgdmFsaWQgPSBhcmctPmlkID09IENTU1Zh
bHVlQXV0byB8fCB2YWxpZFVuaXQoYXJnLCBGTGVuZ3RoLCBtX3N0cmljdCk7CisgICAgICAgICAg
ICAgICAgdmFsaWQgPSBhcmctPmlkID09IENTU1ZhbHVlQXV0byB8fCB2YWxpZFVuaXQoYXJnLCBG
TGVuZ3RoLCBzdHJpY3QoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWxpZCkKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTMyNDksNyArMzI0OSw3IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVNoYXBlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGludCBpID0gMDsK
ICAgICBDU1NQYXJzZXJWYWx1ZSogYSA9IGFyZ3MtPmN1cnJlbnQoKTsKICAgICB3aGlsZSAoYSkg
ewotICAgICAgICB2YWxpZCA9IGEtPmlkID09IENTU1ZhbHVlQXV0byB8fCB2YWxpZFVuaXQoYSwg
Rkxlbmd0aCwgbV9zdHJpY3QpOworICAgICAgICB2YWxpZCA9IGEtPmlkID09IENTU1ZhbHVlQXV0
byB8fCB2YWxpZFVuaXQoYSwgRkxlbmd0aCwgc3RyaWN0KCkpOwogICAgICAgICBpZiAoIXZhbGlk
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
bGVuZ3RoID0gYS0+aWQgPT0gQ1NTVmFsdWVBdXRvID8KQEAgLTMzNTcsNyArMzM1Nyw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnQoYm9vbCBpbXBvcnRhbnQpCiAgICAgLy8gPGFic29sdXRl
LXNpemU+IHwgPHJlbGF0aXZlLXNpemU+IHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBpbmhl
cml0CiAgICAgaWYgKHZhbHVlLT5pZCA+PSBDU1NWYWx1ZVh4U21hbGwgJiYgdmFsdWUtPmlkIDw9
IENTU1ZhbHVlTGFyZ2VyKQogICAgICAgICBmb250LT5zaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIodmFsdWUtPmlkKTsKLSAgICBlbHNlIGlmICh2YWxpZFVuaXQodmFs
dWUsIEZMZW5ndGggfCBGUGVyY2VudCB8IEZOb25OZWcsIG1fc3RyaWN0KSkKKyAgICBlbHNlIGlm
ICh2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCB8IEZOb25OZWcsIHN0cmljdCgp
KSkKICAgICAgICAgZm9udC0+c2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUt
PmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpIHZhbHVlLT51bml0KTsKICAg
ICB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgaWYgKCFmb250LT5zaXplIHx8ICF2
YWx1ZSkKQEAgLTMzNzAsNyArMzM3MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnQoYm9v
bCBpbXBvcnRhbnQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICh2YWx1
ZS0+aWQgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKICAgICAgICAgICAgIC8vIGRlZmF1bHQgdmFsdWUs
IG5vdGhpbmcgdG8gZG8KLSAgICAgICAgfSBlbHNlIGlmICh2YWxpZFVuaXQodmFsdWUsIEZOdW1i
ZXIgfCBGTGVuZ3RoIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBtX3N0cmljdCkpCisgICAgICAgIH0g
ZWxzZSBpZiAodmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyIHwgRkxlbmd0aCB8IEZQZXJjZW50IHwg
Rk5vbk5lZywgc3RyaWN0KCkpKQogICAgICAgICAgICAgZm9udC0+bGluZUhlaWdodCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXMpIHZhbHVlLT51bml0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNDAzNSwxNSArNDAzNSwxNSBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoQ1NTUGFyc2VyVmFsdWUqIHZhbHVlKQogCiBib29s
IENTU1BhcnNlcjo6cGFyc2VDb2xvckZyb21WYWx1ZShDU1NQYXJzZXJWYWx1ZSogdmFsdWUsIFJH
QkEzMiYgYykKIHsKLSAgICBpZiAoIW1fc3RyaWN0ICYmIHZhbHVlLT51bml0ID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSICYmCisgICAgaWYgKCFzdHJpY3QoKSAmJiB2YWx1ZS0+dW5p
dCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiAmJgogICAgICAgICB2YWx1ZS0+ZlZh
bHVlID49IDAuICYmIHZhbHVlLT5mVmFsdWUgPCAxMDAwMDAwLikgewogICAgICAgICBTdHJpbmcg
c3RyID0gU3RyaW5nOjpmb3JtYXQoIiUwNmQiLCAoaW50KSh2YWx1ZS0+ZlZhbHVlKy41KSk7Ci0g
ICAgICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHN0ciwgYywgbV9zdHJpY3QpKQorICAg
ICAgICBpZiAoIUNTU1BhcnNlcjo6cGFyc2VDb2xvcihzdHIsIGMsIHN0cmljdCgpKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SIHx8CiAgICAgICAgICAgICAgICAgdmFs
dWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCB8fAotICAgICAgICAgICAg
ICAgICghbV9zdHJpY3QgJiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19E
SU1FTlNJT04pKSB7Ci0gICAgICAgIGlmICghQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKHZhbHVlLT5z
dHJpbmcsIGMsIG1fc3RyaWN0ICYmIHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfSURFTlQpKQorICAgICAgICAgICAgICAgICghc3RyaWN0KCkgJiYgdmFsdWUtPnVuaXQgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT04pKSB7CisgICAgICAgIGlmICghQ1NTUGFy
c2VyOjpwYXJzZUNvbG9yKHZhbHVlLT5zdHJpbmcsIGMsIG1fcGFyc2VNb2RlICE9IEhUTUxRdWly
a3NNb2RlICYmIHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0g
Q1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uICYmCiAgICAgICAgICAgICAgICAgdmFsdWUtPmZ1bmN0
aW9uLT5hcmdzICE9IDAgJiYKQEAgLTQyMzgsNyArNDIzOCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVNoYWRvdyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIC8vIFRo
ZSBvbmx5IG90aGVyIHR5cGUgb2YgdmFsdWUgdGhhdCdzIG9rIGlzIGEgY29sb3IgdmFsdWUuCiAg
ICAgICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlZENvbG9yOwogICAgICAg
ICAgICAgYm9vbCBpc0NvbG9yID0gKCh2YWwtPmlkID49IENTU1ZhbHVlQXF1YSAmJiB2YWwtPmlk
IDw9IENTU1ZhbHVlV2luZG93dGV4dCkgfHwgdmFsLT5pZCA9PSBDU1NWYWx1ZU1lbnUgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsLT5pZCA+PSBDU1NWYWx1ZVdlYmtpdEZvY3Vz
UmluZ0NvbG9yICYmIHZhbC0+aWQgPD0gQ1NTVmFsdWVXZWJraXRUZXh0ICYmICFtX3N0cmljdCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWwtPmlkID49IENTU1ZhbHVlV2Via2l0
Rm9jdXNSaW5nQ29sb3IgJiYgdmFsLT5pZCA8PSBDU1NWYWx1ZVdlYmtpdFRleHQgJiYgIXN0cmlj
dCgpKSk7CiAgICAgICAgICAgICBpZiAoaXNDb2xvcikgewogICAgICAgICAgICAgICAgIGlmICgh
Y29udGV4dC5hbGxvd0NvbG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC00MzAxLDcgKzQzMDEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VSZWZsZWN0KGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGlmICghdmFsKQogICAgICAgICBvZmZzZXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogICAg
IGVsc2UgewotICAgICAgICBpZiAoIXZhbGlkVW5pdCh2YWwsIEZMZW5ndGggfCBGUGVyY2VudCwg
bV9zdHJpY3QpKQorICAgICAgICBpZiAoIXZhbGlkVW5pdCh2YWwsIEZMZW5ndGggfCBGUGVyY2Vu
dCwgc3RyaWN0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBvZmZzZXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbC0+ZlZhbHVlLCBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPih2YWwtPnVuaXQpKTsKICAgICB9CkBAIC00NDgyLDcg
KzQ0ODIsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZShpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCwgUmVmUHRyPENTU1ZhbHVlPiYgcgogICAgICAgICB9IGVsc2UgaWYgKHBy
b3BJZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlICYmIGNvbnRleHQuYWxsb3dTbGFz
aCgpICYmIHZhbC0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdmFsLT5pVmFs
dWUgPT0gJy8nKSB7CiAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdFNsYXNoKCk7CiAgICAgICAg
IH0gZWxzZSBpZiAoY29udGV4dC5hbGxvd1dpZHRoKCkgJiYKLSAgICAgICAgICAgICh2YWwtPmlk
ID09IENTU1ZhbHVlVGhpbiB8fCB2YWwtPmlkID09IENTU1ZhbHVlTWVkaXVtIHx8IHZhbC0+aWQg
PT0gQ1NTVmFsdWVUaGljayB8fCB2YWxpZFVuaXQodmFsLCBGTGVuZ3RoLCBtX3N0cmljdCkpKSB7
CisgICAgICAgICAgICAodmFsLT5pZCA9PSBDU1NWYWx1ZVRoaW4gfHwgdmFsLT5pZCA9PSBDU1NW
YWx1ZU1lZGl1bSB8fCB2YWwtPmlkID09IENTU1ZhbHVlVGhpY2sgfHwgdmFsaWRVbml0KHZhbCwg
Rkxlbmd0aCwgc3RyaWN0KCkpKSkgewogICAgICAgICAgICAgY29udGV4dC5jb21taXRXaWR0aCh2
YWwpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQuYWxsb3dSdWxlKCkgJiYKICAgICAgICAg
ICAgICh2YWwtPmlkID09IENTU1ZhbHVlU3RyZXRjaCB8fCB2YWwtPmlkID09IENTU1ZhbHVlUm91
bmQgfHwgdmFsLT5pZCA9PSBDU1NWYWx1ZVJlcGVhdCkpIHsKQEAgLTQ1NDYsNyArNDU0Niw3IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlclJhZGl1cyhpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICAgICAgaWYgKGkgLSBpbmRleEFmdGVyU2xhc2ggPj0gNCkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoIXZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8
IEZQZXJjZW50LCBtX3N0cmljdCkpCisgICAgICAgIGlmICghdmFsaWRVbml0KHZhbHVlLCBGTGVu
Z3RoIHwgRlBlcmNlbnQsIHN0cmljdCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGl1cyA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUodmFsdWUtPmZWYWx1ZSwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlcz4odmFsdWUtPnVuaXQpKTsKQEAgLTUwMjMsNyArNTAyMyw3IEBAIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVRyYW5zZm9ybU9yaWdpbihpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGlu
dCYgcHJvcElkMiwgaW50CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWjogewotICAgICAgICAgICAgaWYg
KHZhbGlkVW5pdChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLCBGTGVuZ3RoLCBtX3N0cmljdCkpCisg
ICAgICAgICAgICBpZiAodmFsaWRVbml0KG1fdmFsdWVMaXN0LT5jdXJyZW50KCksIEZMZW5ndGgs
IHN0cmljdCgpKSkKICAgICAgICAgICAgIHZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5mVmFsdWUsIChDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzKW1fdmFsdWVMaXN0LT5jdXJyZW50KCktPnVuaXQpOwogICAgICAgICAgICAgaWYgKHZh
bHVlKQogICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDhm
M2M2ZGQyYjdkMjdlZjJlNWQ0MzJiOTA0NTQ2YTgwZTc1Y2YyYTcuLmZiNGMxZjNkNzcxOTYxZjVh
Yjk3YWQ2MDdhZmQyYjQ3NTdmOTRiY2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0
LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeS5oIgorI2luY2x1ZGUgIlN0eWxlQmFzZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC01Niw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIENTU1BhcnNlciB7CiAgICAgcHVibGljOgotICAgICAgICBDU1NQYXJzZXIoYm9v
bCBzdHJpY3RQYXJzaW5nID0gdHJ1ZSk7CisgICAgICAgIENTU1BhcnNlcihDU1NQYXJzZU1vZGUg
cGFyc2VNb2RlID0gSFRNTFN0cmljdE1vZGUpOwogICAgICAgICB+Q1NTUGFyc2VyKCk7CiAKICAg
ICAgICAgdm9pZCBwYXJzZVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcmLCBpbnQg
c3RhcnRMaW5lTnVtYmVyID0gMCwgU3R5bGVSdWxlUmFuZ2VNYXAqIHJ1bGVSYW5nZU1hcCA9IDAp
OwpAQCAtMjE0LDcgKzIxNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lk
IGNsZWFyUHJvcGVydGllcygpOwogCi0gICAgICAgIGJvb2wgbV9zdHJpY3Q7CisgICAgICAgIGlu
bGluZSBib29sIHN0cmljdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlID09IEhUTUxTdHJp
Y3RNb2RlOyB9CisKKyAgICAgICAgQ1NTUGFyc2VNb2RlIG1fcGFyc2VNb2RlIDogMjsKICAgICAg
ICAgYm9vbCBtX2ltcG9ydGFudDsKICAgICAgICAgaW50IG1faWQ7CiAgICAgICAgIENTU1N0eWxl
U2hlZXQqIG1fc3R5bGVTaGVldDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggM2Q2OWU4
N2EzMGRhOGIyOTdmM2IyYmMwNDk0NjdkYWRjZjE4M2JkOC4uOTBkODcyYWY3MWQ3MmMwNjRhNjQ5
OWEzY2VlOGE4NDM2OTNkY2E3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTY1MCw3
ICs2NTAsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnJlc29sdmVWYXJpYWJsZXNGb3JEZWNs
YXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbgogCiAgICAgICAgIC8vIFdlIG5vdyBo
YXZlIGEgZnVsbHkgcmVzb2x2ZWQgbmV3IHZhbHVlIGxpc3QuICBXZSB3YW50IHRoZSBwYXJzZXIg
dG8gdXNlIHRoaXMgdmFsdWUgbGlzdAogICAgICAgICAvLyBhbmQgcGFyc2Ugb3VyIG5ldyBkZWNs
YXJhdGlvbi4KLSAgICAgICAgQ1NTUGFyc2VyKG1fY2hlY2tlci5tX3N0cmljdFBhcnNpbmcpLnBh
cnNlUHJvcGVydHlXaXRoUmVzb2x2ZWRWYXJpYWJsZXMoY3VycmVudC5pZCgpLCBjdXJyZW50Lmlz
SW1wb3J0YW50KCksIG5ld0RlY2wsICZyZXNvbHZlZFZhbHVlTGlzdCk7CisgICAgICAgIENTU1Bh
cnNlcihtX2NoZWNrZXIubV9zdHJpY3RQYXJzaW5nID8gSFRNTFN0cmljdE1vZGUgOiBIVE1MUXVp
cmtzTW9kZSkucGFyc2VQcm9wZXJ0eVdpdGhSZXNvbHZlZFZhcmlhYmxlcyhjdXJyZW50LmlkKCks
IGN1cnJlbnQuaXNJbXBvcnRhbnQoKSwgbmV3RGVjbCwgJnJlc29sdmVkVmFsdWVMaXN0KTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggOWJiY2I4YmQ3MzQzMDg2Y2JjZDkzNTQ5
ZWRlMDE3MGQ2MTJkYTBjYi4uZTczOTMxZDVlNjhiZjExYWJiNzdhNjBjZmY3NGJmODgxZDc2MDVm
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgQ1NTU3R5bGVTaGVldDo6
Q1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgY29uc3QgU3RyaW5nJiBo
cmVmLCBjb24KICAgICAsIG1fZG9jdW1lbnQocGFyZW50U2hlZXQgPyBwYXJlbnRTaGVldC0+ZG9j
dW1lbnQoKSA6IDApCiAgICAgLCBtX2NoYXJzZXQoY2hhcnNldCkKICAgICAsIG1fbG9hZENvbXBs
ZXRlZChmYWxzZSkKLSAgICAsIG1fc3RyaWN0UGFyc2luZyghcGFyZW50U2hlZXQgfHwgcGFyZW50
U2hlZXQtPnVzZVN0cmljdFBhcnNpbmcoKSkKKyAgICAsIG1fcGFyc2VNb2RlKHBhcmVudFNoZWV0
ID8gcGFyZW50U2hlZXQtPnBhcnNlTW9kZSgpIDogSFRNTFN0cmljdE1vZGUpCiAgICAgLCBtX2lz
VXNlclN0eWxlU2hlZXQocGFyZW50U2hlZXQgPyBwYXJlbnRTaGVldC0+aXNVc2VyU3R5bGVTaGVl
dCgpIDogZmFsc2UpCiAgICAgLCBtX2hhc1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlcih0cnVl
KQogewpAQCAtNTAsNyArNTAsNyBAQCBDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KE5vZGUq
IHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYgogICAgICwgbV9k
b2N1bWVudChwYXJlbnROb2RlLT5kb2N1bWVudCgpKQogICAgICwgbV9jaGFyc2V0KGNoYXJzZXQp
CiAgICAgLCBtX2xvYWRDb21wbGV0ZWQoZmFsc2UpCi0gICAgLCBtX3N0cmljdFBhcnNpbmcoZmFs
c2UpCisgICAgLCBtX3BhcnNlTW9kZShIVE1MUXVpcmtzTW9kZSkKICAgICAsIG1faXNVc2VyU3R5
bGVTaGVldChmYWxzZSkKICAgICAsIG1faGFzU3ludGFjdGljYWxseVZhbGlkQ1NTSGVhZGVyKHRy
dWUpCiB7CkBAIC02MCw3ICs2MCw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoQ1NT
UnVsZSogb3duZXJSdWxlLCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmCiAgICAgOiBT
dHlsZVNoZWV0KG93bmVyUnVsZSwgaHJlZiwgYmFzZVVSTCkKICAgICAsIG1fY2hhcnNldChjaGFy
c2V0KQogICAgICwgbV9sb2FkQ29tcGxldGVkKGZhbHNlKQotICAgICwgbV9zdHJpY3RQYXJzaW5n
KCFvd25lclJ1bGUgfHwgb3duZXJSdWxlLT51c2VTdHJpY3RQYXJzaW5nKCkpCisgICAgLCBtX3Bh
cnNlTW9kZShvd25lclJ1bGUgPyBvd25lclJ1bGUtPnBhcnNlTW9kZSgpIDogSFRNTFN0cmljdE1v
ZGUpCiAgICAgLCBtX2hhc1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlcih0cnVlKQogewogICAg
IENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0ID0gb3duZXJSdWxlID8gb3duZXJSdWxlLT5wYXJl
bnRTdHlsZVNoZWV0KCkgOiAwOwpAQCAtODQsNyArODQsNyBAQCB1bnNpZ25lZCBDU1NTdHlsZVNo
ZWV0OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2Vw
dGlvbgogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9Ci0gICAgQ1NTUGFyc2VyIHAodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIg
cChwYXJzZU1vZGUoKSk7CiAgICAgUmVmUHRyPENTU1J1bGU+IHIgPSBwLnBhcnNlUnVsZSh0aGlz
LCBydWxlKTsKIAogICAgIGlmICghcikgewpAQCAtMTgzLDggKzE4Myw4IEBAIGJvb2wgQ1NTU3R5
bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nICZzdHJpbmcsIGJvb2wgc3RyaWN0KQog
CiBib29sIENTU1N0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nQXRMaW5lKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBib29sIHN0cmljdCwgaW50IHN0YXJ0TGluZU51bWJlcikKIHsKLSAgICBzZXRTdHJpY3RQ
YXJzaW5nKHN0cmljdCk7Ci0gICAgQ1NTUGFyc2VyIHAoc3RyaWN0KTsKKyAgICBzZXRQYXJzZU1v
ZGUoc3RyaWN0ID8gSFRNTFN0cmljdE1vZGUgOiBIVE1MUXVpcmtzTW9kZSk7CisgICAgQ1NTUGFy
c2VyIHAoc3RyaWN0ID8gSFRNTFN0cmljdE1vZGUgOiBIVE1MUXVpcmtzTW9kZSk7CiAgICAgcC5w
YXJzZVNoZWV0KHRoaXMsIHN0cmluZywgc3RhcnRMaW5lTnVtYmVyKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBiL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCA3MjU1MThmNTczNTRjN2QyOTFkYTMyZGMwMDg2YTli
YzE5NTc4Y2E0Li4xOWQ4ZGFhNDEwNjM5NmUwYmZkNjdlMTVjNzEzN2I1YmIwNTcwNjMyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5oCkBAIC05Niw4ICs5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEtVUkwg
Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBh
ZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpOwogCi0gICAgdm9pZCBz
ZXRTdHJpY3RQYXJzaW5nKGJvb2wgYikgeyBtX3N0cmljdFBhcnNpbmcgPSBiOyB9Ci0gICAgYm9v
bCB1c2VTdHJpY3RQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RQYXJzaW5nOyB9Cisg
ICAgdm9pZCBzZXRQYXJzZU1vZGUoQ1NTUGFyc2VNb2RlIG1vZGUpIHsgbV9wYXJzZU1vZGUgPSBt
b2RlOyB9CisgICAgQ1NTUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
c2VNb2RlOyB9CiAKICAgICB2b2lkIHNldElzVXNlclN0eWxlU2hlZXQoYm9vbCBiKSB7IG1faXNV
c2VyU3R5bGVTaGVldCA9IGI7IH0KICAgICBib29sIGlzVXNlclN0eWxlU2hlZXQoKSBjb25zdCB7
IHJldHVybiBtX2lzVXNlclN0eWxlU2hlZXQ7IH0KQEAgLTExNiw3ICsxMTYsNyBAQCBwcml2YXRl
OgogICAgIE93blB0cjxDU1NOYW1lc3BhY2U+IG1fbmFtZXNwYWNlczsKICAgICBTdHJpbmcgbV9j
aGFyc2V0OwogICAgIGJvb2wgbV9sb2FkQ29tcGxldGVkIDogMTsKLSAgICBib29sIG1fc3RyaWN0
UGFyc2luZyA6IDE7CisgICAgQ1NTUGFyc2VNb2RlIG1fcGFyc2VNb2RlIDogMjsKICAgICBib29s
IG1faXNVc2VyU3R5bGVTaGVldCA6IDE7CiAgICAgYm9vbCBtX2hhc1N5bnRhY3RpY2FsbHlWYWxp
ZENTU0hlYWRlciA6IDE7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVz
RGVjbGFyYXRpb24uY3BwIGIvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVzRGVjbGFyYXRpb24uY3Bw
CmluZGV4IGU0MDc1MGFhOWE4ZGMyZGQ4YzJkMDkyZDExZmUxMTYyZGNmZTE2N2YuLjJlNDQ3YjQ1
NTJiMGQwZGU1NjdlOTk4NmZmMzRkMTFhOTE0YmU3NjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3Nz
L0NTU1ZhcmlhYmxlc0RlY2xhcmF0aW9uLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJs
ZXNEZWNsYXJhdGlvbi5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgU3RyaW5nIENTU1ZhcmlhYmxlc0Rl
Y2xhcmF0aW9uOjpyZW1vdmVWYXJpYWJsZShjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgRXhj
ZXAKIHZvaWQgQ1NTVmFyaWFibGVzRGVjbGFyYXRpb246OnNldFZhcmlhYmxlKGNvbnN0IFN0cmlu
ZyYgdmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlVmFsdWUsIEV4Y2VwdGlvbkNv
ZGUmIGV4Y0NvZGUpCiB7CiAgICAgLy8gVHJ5IHRvIHBhcnNlIHRoZSB2YXJpYWJsZSB2YWx1ZSBp
bnRvIGEgVmFsdWUqLiAgSWYgaXQgZmFpbHMgd2UgdGhyb3cgYW4gZXhjZXB0aW9uLgotICAgIENT
U1BhcnNlciBwYXJzZXIodXNlU3RyaWN0UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcGFyc2Vy
KHBhcnNlTW9kZSgpKTsKICAgICBpZiAoIXBhcnNlci5wYXJzZVZhcmlhYmxlKHRoaXMsIHZhcmlh
YmxlTmFtZSwgdmFyaWFibGVWYWx1ZSkpIC8vIElmIHRoZSBwYXJzZSBzdWNjZWVkcywgaXQgd2ls
bCBjYWxsIGFkZFBhcnNlZFZhcmlhYmxlIChvdXIgaW50ZXJuYWwgbWV0aG9kIGZvciBkb2luZyB0
aGUgYWRkKSB3aXRoIHRoZSBwYXJzZWQgVmFsdWUqLgogICAgICAgICBleGNDb2RlID0gU1lOVEFY
X0VSUjsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwIGIv
V2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcAppbmRleCA4MWY4NzEyMmQ4Mjk1MjBiYTE4MzAwZmM1
ODkzNGEzY2Y2YWE5NTkyLi5mNWNiYmQ4Y2I4MGMwNjgzMjZjNTU1MmM2YTMxMWE3NzI3MTQ1N2M3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCisrKyBiL1dlYkNvcmUvY3Nz
L01lZGlhTGlzdC5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgU3RyaW5nIHBhcnNlTWVk
aWFEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgcykKIHZvaWQgTWVkaWFMaXN0OjpkZWxldGVNZWRp
dW0oY29uc3QgU3RyaW5nJiBvbGRNZWRpdW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJl
ZlB0cjxNZWRpYUxpc3Q+IHRlbXBNZWRpYUxpc3QgPSBNZWRpYUxpc3Q6OmNyZWF0ZSgpOwotICAg
IENTU1BhcnNlciBwKHRydWUpOworICAgIENTU1BhcnNlciBwKEhUTUxTdHJpY3RNb2RlKTsKIAog
ICAgIE1lZGlhUXVlcnkqIG9sZFF1ZXJ5ID0gMDsKICAgICBPd25QdHI8TWVkaWFRdWVyeT4gY3Jl
YXRlZFF1ZXJ5OwpAQCAtMTc0LDcgKzE3NCw3IEBAIFN0cmluZyBNZWRpYUxpc3Q6Om1lZGlhVGV4
dCgpIGNvbnN0CiB2b2lkIE1lZGlhTGlzdDo6c2V0TWVkaWFUZXh0KGNvbnN0IFN0cmluZyYgdmFs
dWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxNZWRpYUxpc3Q+IHRlbXBNZWRp
YUxpc3QgPSBNZWRpYUxpc3Q6OmNyZWF0ZSgpOwotICAgIENTU1BhcnNlciBwKHRydWUpOworICAg
IENTU1BhcnNlciBwKEhUTUxTdHJpY3RNb2RlKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGxpc3Q7
CiAgICAgdmFsdWUuc3BsaXQoJywnLCBsaXN0KTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBTdHJpbmcg
TWVkaWFMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogdm9pZCBNZWRpYUxpc3Q6OmFw
cGVuZE1lZGl1bShjb25zdCBTdHJpbmcmIG5ld01lZGl1bSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7Ci0gICAgQ1NTUGFyc2VyIHAodHJ1ZSk7
CisgICAgQ1NTUGFyc2VyIHAoSFRNTFN0cmljdE1vZGUpOwogICAgIGlmIChwLnBhcnNlTWVkaWFR
dWVyeSh0aGlzLCBuZXdNZWRpdW0pKSB7CiAgICAgICAgIGVjID0gMDsKICAgICB9IGVsc2UgaWYg
KG1fZmFsbGJhY2spIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL1N0eWxlQmFzZS5oIGIvV2Vi
Q29yZS9jc3MvU3R5bGVCYXNlLmgKaW5kZXggMjk2YzhmYmM1NGU5ZDA4MTgzOWY1MTBkYWRkNWU0
NWZlZTc5YzgyNC4uNmFmNWNkZGFiZWZlNmU0ZjViY2Y1YjU2MDdhMzc3YzczY2E4ZmRjOSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9jc3MvU3R5bGVCYXNlLmgKKysrIGIvV2ViQ29yZS9jc3MvU3R5bGVC
YXNlLmgKQEAgLTMxLDYgKzMxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBT
dHlsZVNoZWV0OwogICAgIGNsYXNzIEtVUkw7CiAKKyAgICBlbnVtIENTU1BhcnNlTW9kZSB7Cisg
ICAgICAgIEhUTUxTdHJpY3RNb2RlLAorICAgICAgICBIVE1MUXVpcmtzTW9kZSwKKyAgICAgICAg
U1ZHU3RyaWN0TW9kZQorICAgIH07CiAgICAgLy8gQmFzZSBjbGFzcyBmb3IgbW9zdCBDU1MgRE9N
IG9iamVjdHMuCiAKICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgbmVlZCB0aGVzZSB0byBhbGwgc2hh
cmUgb25lIGJhc2UgY2xhc3MuCkBAIC02Nyw3ICs3Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tMb2FkZWQoKTsKIAotICAgICAgICBib29sIHVz
ZVN0cmljdFBhcnNpbmcoKSBjb25zdCB7IHJldHVybiAhbV9wYXJlbnQgfHwgbV9wYXJlbnQtPnVz
ZVN0cmljdFBhcnNpbmcoKTsgfQorICAgICAgICBDU1NQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJlbnQgPyBtX3BhcmVudC0+cGFyc2VNb2RlKCkgOiBIVE1MU3RyaWN0
TW9kZTsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9QYXJlbnQoKSB7IH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCAyM2Y5ZjM0YWY5Y2I2
Y2Q3MDYyYTBhZWI1YWQ4YmYxNTYwOTU4MGEyLi44MWQxNzU2MTgxYmEzODgxZGYyN2U2NmFiMTBj
MmE2M2Q2NTkzMzQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZXNS
dWxlLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAt
ODcsNyArODcsNyBAQCB2b2lkIFdlYktpdENTU0tleWZyYW1lc1J1bGU6OmFwcGVuZChXZWJLaXRD
U1NLZXlmcmFtZVJ1bGUqIHJ1bGUpCiAKIHZvaWQgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTo6aW5z
ZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUpCiB7Ci0gICAgQ1NTUGFyc2VyIHAodXNlU3RyaWN0
UGFyc2luZygpKTsKKyAgICBDU1NQYXJzZXIgcChwYXJzZU1vZGUoKSk7CiAgICAgUmVmUHRyPENT
U1J1bGU+IG5ld1J1bGUgPSBwLnBhcnNlS2V5ZnJhbWVSdWxlKHBhcmVudFN0eWxlU2hlZXQoKSwg
cnVsZSk7CiAgICAgaWYgKG5ld1J1bGUuZ2V0KCkgJiYgbmV3UnVsZS5nZXQoKS0+aXNLZXlmcmFt
ZVJ1bGUoKSkKICAgICAgICAgYXBwZW5kKHN0YXRpY19jYXN0PFdlYktpdENTU0tleWZyYW1lUnVs
ZSo+KG5ld1J1bGUuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL1dlYktpdENTU01h
dHJpeC5jcHAgYi9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCmluZGV4IDM3MTQ3NjAz
M2JhNmZjODVhZWExMTc5MjdmMzRmYjllNWVmNTU2NzMuLjg0OTZhNjhlMzlhMmIyMDAxOGEwMDE3
ZTY2NWNlZmQ5NjY1OWVkZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJp
eC5jcHAKKysrIGIvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApAQCAtNjUsNyArNjUs
NyBAQCBXZWJLaXRDU1NNYXRyaXg6On5XZWJLaXRDU1NNYXRyaXgoKQogCiB2b2lkIFdlYktpdENT
U01hdHJpeDo6c2V0TWF0cml4VmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIENTU1BhcnNlciBwKHVzZVN0cmljdFBhcnNpbmcoKSk7CisgICAgQ1NT
UGFyc2VyIHAocGFyc2VNb2RlKCkpOwogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbj4gc3R5bGVEZWNsYXJhdGlvbiA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVh
dGUoKTsKICAgICBpZiAocC5wYXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24uZ2V0KCksIENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtLCBzdHJpbmcsIHRydWUpKSB7CiAgICAgICAgIC8vIENvbnZl
cnQgdG8gVHJhbnNmb3JtT3BlcmF0aW9ucy4gVGhpcyBjYW4gZmFpbCBpZiBhIHByb3BlcnR5IApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAppbmRleCBkYTdiZjM4Y2M4NmEwMDc2ODEzZTk0OWU1ZGRiOTEzMGY4YWZjMjQ0Li5mYTRl
MjM5YTM3NDQ1MzhhZWZmM2NiNzVmMGUwMGJhMWQxYjgxNjU5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTU1MSw3
ICsxNTUxLDcgQEAgYm9vbCBFbGVtZW50Ojp3ZWJraXRNYXRjaGVzU2VsZWN0b3IoY29uc3QgU3Ry
aW5nJiBzZWxlY3RvciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfQogCiAgICAgYm9vbCBzdHJp
Y3RQYXJzaW5nID0gIWRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpOwotICAgIENTU1BhcnNlciBw
KHN0cmljdFBhcnNpbmcpOworICAgIENTU1BhcnNlciBwKHN0cmljdFBhcnNpbmcgPyBIVE1MU3Ry
aWN0TW9kZSA6IEhUTUxRdWlya3NNb2RlKTsKIAogICAgIENTU1NlbGVjdG9yTGlzdCBzZWxlY3Rv
ckxpc3Q7CiAgICAgcC5wYXJzZVNlbGVjdG9yKHNlbGVjdG9yLCBkb2N1bWVudCgpLCBzZWxlY3Rv
ckxpc3QpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9O
b2RlLmNwcAppbmRleCAwOTA3ODIwZmY2NTUxOTQ3NmNhNDNkM2Q5M2FkNTVhYjVmMmYzNjFlLi4y
ZmU3ZWNiZmE1YzNiMzUzYWMyNTJkOGFlN2YxMmYyZjQ3MDJlYjY1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTU1Nyw3ICsx
NTU3LDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBOb2RlOjpxdWVyeVNlbGVjdG9yKGNvbnN0IFN0
cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJgogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAgICAgYm9vbCBzdHJpY3RQYXJzaW5nID0gIWRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpOwot
ICAgIENTU1BhcnNlciBwKHN0cmljdFBhcnNpbmcpOworICAgIENTU1BhcnNlciBwKHN0cmljdFBh
cnNpbmcgPyBIVE1MU3RyaWN0TW9kZSA6IEhUTUxRdWlya3NNb2RlKTsKIAogICAgIENTU1NlbGVj
dG9yTGlzdCBxdWVyeVNlbGVjdG9yTGlzdDsKICAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3Jz
LCBkb2N1bWVudCgpLCBxdWVyeVNlbGVjdG9yTGlzdCk7CkBAIC0xNjA0LDcgKzE2MDQsNyBAQCBQ
YXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpxdWVyeVNlbGVjdG9yQWxsKGNvbnN0IFN0cmluZyYg
c2VsZWN0b3JzLCBFeGNlcHRpb25DbwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgYm9v
bCBzdHJpY3RQYXJzaW5nID0gIWRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpOwotICAgIENTU1Bh
cnNlciBwKHN0cmljdFBhcnNpbmcpOworICAgIENTU1BhcnNlciBwKHN0cmljdFBhcnNpbmcgPyBI
VE1MU3RyaWN0TW9kZSA6IEhUTUxRdWlya3NNb2RlKTsKIAogICAgIENTU1NlbGVjdG9yTGlzdCBx
dWVyeVNlbGVjdG9yTGlzdDsKICAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3JzLCBkb2N1bWVu
dCgpLCBxdWVyeVNlbGVjdG9yTGlzdCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TdHlsZWRF
bGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDEyNzQ0Y2Iw
NjBjOWQ5MjBlNzNlMTQzNWEzNjQ1NGQ0MzhiMDk5NzMuLjQ3ODk1M2Y4MGRmNGU3OGZkZTZlYzcx
NGNiNzM1OGUyOWQ5YjhhM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwCisrKyBiL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0xMjgsNiArMTI4LDEx
IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6Y3JlYXRlSW5saW5lU3R5bGVEZWNsKCkKICAgICBtX2lu
bGluZVN0eWxlRGVjbCA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKICAg
ICBtX2lubGluZVN0eWxlRGVjbC0+c2V0UGFyZW50KGRvY3VtZW50KCktPmVsZW1lbnRTaGVldCgp
KTsKICAgICBtX2lubGluZVN0eWxlRGVjbC0+c2V0Tm9kZSh0aGlzKTsKKyNpZiBFTkFCTEUoU1ZH
KQorICAgIGlmIChpc1NWR0VsZW1lbnQoKSkKKyAgICAgICAgbV9pbmxpbmVTdHlsZURlY2wtPnNl
dFBhcnNlTW9kZShTVkdTdHJpY3RNb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKICAgICBtX2lubGlu
ZVN0eWxlRGVjbC0+c2V0U3RyaWN0UGFyc2luZyhpc0hUTUxFbGVtZW50KCkgJiYgIWRvY3VtZW50
KCktPmluUXVpcmtzTW9kZSgpKTsKIH0KIApAQCAtMzk5LDcgKzQwNCwxMiBAQCB2b2lkIFN0eWxl
ZEVsZW1lbnQ6OmNyZWF0ZU1hcHBlZERlY2woQXR0cmlidXRlKiBhdHRyKQogICAgIGF0dHItPnNl
dERlY2woZGVjbCk7CiAgICAgZGVjbC0+c2V0UGFyZW50KGRvY3VtZW50KCktPmVsZW1lbnRTaGVl
dCgpKTsKICAgICBkZWNsLT5zZXROb2RlKHRoaXMpOwotICAgIGRlY2wtPnNldFN0cmljdFBhcnNp
bmcoZmFsc2UpOyAvLyBNYXBwZWQgYXR0cmlidXRlcyBhcmUganVzdCBhbHdheXMgcXVpcmt5Lgor
I2lmIEVOQUJMRShTVkcpCisgICAgaWYgKGlzU1ZHRWxlbWVudCgpKQorICAgICAgICBkZWNsLT5z
ZXRQYXJzZU1vZGUoU1ZHU3RyaWN0TW9kZSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgZGVjbC0+
c2V0UGFyc2VNb2RlKEhUTUxRdWlya3NNb2RlKTsKIH0KIAogdW5zaWduZWQgTWFwcGVkQXR0cmli
dXRlSGFzaDo6aGFzaChjb25zdCBNYXBwZWRBdHRyaWJ1dGVLZXkmIGtleSkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBiMWQ3YjIz
M2QyYjVhOGU2ZjcwNzM5YzYwM2UxM2UyOGRhMWVlMzM3Li5kZWY1MjY1NmFiYmNlODYwMTI2Yjc1
NTEzZGU1MWE0YTYzZTE0NTk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNjUyLDcgKzE2NTIsNyBAQCBTdHJpbmcgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpmb250KCkgY29uc3QKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKIHsKICAgICBSZWZQdHI8Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHRlbXBEZWNsID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmNyZWF0ZSgpOwotICAgIENTU1BhcnNlciBwYXJzZXIoIW1fdXNlc0NTU0NvbXBhdGli
aWxpdHlQYXJzZU1vZGUpOworICAgIENTU1BhcnNlciBwYXJzZXIobV91c2VzQ1NTQ29tcGF0aWJp
bGl0eVBhcnNlTW9kZSA/IEhUTUxRdWlya3NNb2RlIDogSFRNTFN0cmljdE1vZGUpOwogCiAgICAg
U3RyaW5nIGRlY2xhcmF0aW9uVGV4dCgiZm9udDogIik7CiAgICAgZGVjbGFyYXRpb25UZXh0ICs9
IG5ld0ZvbnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4
IGRjMmE0N2E2M2VmMzMzMjBhZTgzZTFlMDFjMTg3YjMzM2I4NzU1NTYuLmIxNTgyMTM0ZWJjNzJh
ZDI2Y2ZlZDg0M2FjYWUyNTdiNzM2OGU1NWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCkBAIC00ODYsNyArNDg2LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICAgICAgbV9wYWdlU3R5bGVTaGVl
dC0+cmVtb3ZlKGkpOwogICAgIG1faW5zcGVjdG9yU3R5bGVzLmNsZWFyKCk7CiAKLSAgICBtX3Bh
Z2VTdHlsZVNoZWV0LT5wYXJzZVN0cmluZyh0ZXh0LCBtX3BhZ2VTdHlsZVNoZWV0LT51c2VTdHJp
Y3RQYXJzaW5nKCkpOworICAgIG1fcGFnZVN0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHRleHQsIG1f
cGFnZVN0eWxlU2hlZXQtPnBhcnNlTW9kZSgpID09IEhUTUxTdHJpY3RNb2RlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134911</attachid>
            <date>2012-03-30 16:13:05 -0700</date>
            <delta_ts>2012-03-30 20:28:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46112-20120330161303.patch</filename>
            <type>text/plain</type>
            <size>28715</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ3MjQ1M2Q3N2NkZjVj
NDZiMzJiOGM3ZDA3ZjZjOGU1N2VlZjcwYi4uYjY5NTY2MTUwOWI1OTM4ZDJmZmUyOGNiOTk1ZmM1
NzgxYjA2OGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTMwICBEaXJr
IFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29sb3JzIHNlZW0gdG8gYmUg
cGFyc2VkIHVzaW5nIEhUTUwgcXVpcmtzIGluIFNWRyBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjExMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgRmluYWxseSBtb3ZlIHRv
IFNWR0F0dHJpYnV0ZU1vZGUgb24gcGFyc2luZyBTVkcgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZXMu
IFNWRyBhdHRyaWJ1dGVzIGFyZQorICAgICAgICBtYWlubHkgcGFyc2VkIGluIHRoZSBzdHJpY3Qg
bW9kZSwgd2hpY2ggYWZmZWN0cyBzdHJpY3QgcGFyc2luZyBvZiBjb2xvcnMgYW5kIG5vIHNwYWNl
cyBiZXR3ZWVuCisgICAgICAgIHZhbHVlcyBhbmQgdW5pdHMuIFVuaXQgbGVzcyB2YWx1ZXMgYXJl
IHN0aWxsIGFsbG93ZWQuCisKKyAgICAgICAgVGVzdHM6IHN2Zy9jc3Mvc3ZnLWF0dHJpYnV0ZS1s
ZW5ndGgtcGFyc2luZy5odG1sCisgICAgICAgICAgICAgICBzdmcvY3NzL3N2Zy1hdHRyaWJ1dGUt
cGFyc2VyLW1vZGUuaHRtbAorCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueTogTm8gcXVpcmtz
IG1vZGUgZm9yIFNWRy4KKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OmluU3RyaWN0TW9kZSk6IFNWR0F0dHJpYnV0ZU1vZGUgYWxzbyBpbXBs
aWVzIHN0cmljdCBwYXJzaW5nLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjppblF1aXJr
c01vZGUpOiBSZW1vdmUgU1ZHQXR0cmlidXRlTW9kZSBmcm9tIHF1aXJrcyBtb2RlLgorICAgICAg
ICAqIGNzcy9DU1NQYXJzZXJNb2RlLmg6CisgICAgICAgIChpc1N0cmljdFBhcnNlck1vZGUpOiBE
aXR0by4KKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZWRFbGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVTdHlsZSk6CisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudFJhcmVEYXRh
OjplbnN1cmVBbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMpOgorICAgICAgICAqIHN2Zy9TVkdG
b250RmFjZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50
OjpTVkdGb250RmFjZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNw
cDogU3dpdGNoIHRvIFNWR0F0dHJpYnV0ZU1vZGUgaWYgd2UgcGFyc2UgYSBTVkcgcHJlc2VudGF0
aW9uIGF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OmdldFBy
ZXNlbnRhdGlvbkF0dHJpYnV0ZSk6CisKIDIwMTItMDMtMjkgIFZzZXZvbG9kIFZsYXNvdiAgPHZz
ZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU25pcHBldHNTY3Jp
cHRNYXBwaW5nIHNob3VsZCBwcm9jZXNzIGV4aXN0aW5nIHNuaXBwZXRzIG9uIGxvYWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueQppbmRleCBmNmUwMjk2Y2YxMGVlNzk3MzE4MzExYjE3NzY3ZWQ0ZTc2
MzNlOTVhLi4yODE5ZTBlYjE0N2Q3MWExODNhNzczNGE0MGNmNDA5ZDllYjcwMjUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHNwZWNpZmllcjoKICAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAg
ICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgICAgICQkLT5zZXRNYXRj
aChDU1NTZWxlY3Rvcjo6SWQpOwotICAgICAgICBpZiAocC0+bV9jc3NQYXJzZXJNb2RlID09IENT
U1F1aXJrc01vZGUgfHwgcC0+bV9jc3NQYXJzZXJNb2RlID09IFNWR0F0dHJpYnV0ZU1vZGUpCisg
ICAgICAgIGlmIChwLT5tX2Nzc1BhcnNlck1vZGUgPT0gQ1NTUXVpcmtzTW9kZSkKICAgICAgICAg
ICAgICQxLmxvd2VyKCk7CiAgICAgICAgICQkLT5zZXRWYWx1ZSgkMSk7CiAgICAgfQpAQCAtMTAz
Nyw3ICsxMDM3LDcgQEAgc3BlY2lmaWVyOgogICAgICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3Rh
dGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgICAgICQkID0gcC0+Y3JlYXRl
RmxvYXRpbmdTZWxlY3RvcigpOwogICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9y
OjpJZCk7Ci0gICAgICAgICAgICBpZiAocC0+bV9jc3NQYXJzZXJNb2RlID09IENTU1F1aXJrc01v
ZGUgfHwgcC0+bV9jc3NQYXJzZXJNb2RlID09IFNWR0F0dHJpYnV0ZU1vZGUpCisgICAgICAgICAg
ICBpZiAocC0+bV9jc3NQYXJzZXJNb2RlID09IENTU1F1aXJrc01vZGUpCiAgICAgICAgICAgICAg
ICAgJDEubG93ZXIoKTsKICAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMSk7CiAgICAgICAgIH0K
QEAgLTEwNTIsNyArMTA1Miw3IEBAIGNsYXNzOgogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0
aW5nU2VsZWN0b3IoKTsKICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpDbGFzcyk7
Ci0gICAgICAgIGlmIChwLT5tX2Nzc1BhcnNlck1vZGUgPT0gQ1NTUXVpcmtzTW9kZSB8fCBwLT5t
X2Nzc1BhcnNlck1vZGUgPT0gU1ZHQXR0cmlidXRlTW9kZSkKKyAgICAgICAgaWYgKHAtPm1fY3Nz
UGFyc2VyTW9kZSA9PSBDU1NRdWlya3NNb2RlKQogICAgICAgICAgICAgJDIubG93ZXIoKTsKICAg
ICAgICAgJCQtPnNldFZhbHVlKCQyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXgg
ZjRkZjhlOWRjNTg5YWFlZmM4YTA0YWU0OGE5ZmVjYmZjOTIyZDBhMS4uNTgyYmY1ZDRjNWQwZjBm
Yzc0YzIzZDkwOWUzM2U2MmM1YjVjZDhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMzUw
LDEzICszNTAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0U3R5bGVTaGVldChDU1NTdHlsZVNo
ZWV0Kik7CiAgICAgdm9pZCBlbnN1cmVDU1NWYWx1ZVBvb2woKTsKIAotICAgIGlubGluZSBib29s
IGluU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3NzUGFyc2VyTW9kZSA9PSBDU1NTdHJp
Y3RNb2RlOyB9Ci0gICAgaW5saW5lIGJvb2wgaW5RdWlya3NNb2RlKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBNb3ZlIFNWR0F0dHJpYnV0ZU1vZGUgdG8gaW5TdHJpY3RNb2RlKCkg
b25jZSBTdHlsZVByb3BlcnR5U2V0IGFuZCBDU1NTdHlsZVNoZWV0Ci0gICAgICAgIC8vIHVzZSBD
U1NQYXJzZXJNb2RlIGluc3RlYWQgb2YgYSBib29sZWFuLgotICAgICAgICByZXR1cm4gbV9jc3NQ
YXJzZXJNb2RlID09IENTU1F1aXJrc01vZGUgfHwgbV9jc3NQYXJzZXJNb2RlID09IFNWR0F0dHJp
YnV0ZU1vZGU7Ci0gICAgfQorICAgIGlubGluZSBib29sIGluU3RyaWN0TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3NzUGFyc2VyTW9kZSA9PSBDU1NTdHJpY3RNb2RlIHx8IG1fY3NzUGFyc2VyTW9k
ZSA9PSBTVkdBdHRyaWJ1dGVNb2RlOyB9CisgICAgaW5saW5lIGJvb2wgaW5RdWlya3NNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9jc3NQYXJzZXJNb2RlID09IENTU1F1aXJrc01vZGU7IH0KIAogICAg
IHZvaWQgcmVjaGVja0F0S2V5d29yZChjb25zdCBVQ2hhciogc3RyLCBpbnQgbGVuKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKaW5kZXggODI2YzAzY2NkMWJlMWUxMDcxN2M4OTVhMzE4
YjQxMzRiNmM2NjljOC4uMDliMDZmZTgyNzRkNjdmNGE2YTdiZWZiNzJkNmMxNGIxZDc5NWZlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oCkBAIC00NCw4ICs0NCw3IEBAIGlubGluZSBD
U1NQYXJzZXJNb2RlIHN0cmljdFRvQ1NTUGFyc2VyTW9kZShib29sIGluU3RyaWN0TW9kZSkKIAog
aW5saW5lIGJvb2wgaXNTdHJpY3RQYXJzZXJNb2RlKENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKIHsKLSAgICAvLyBGSVhNRTogU1ZHIHByZXNuZXRhdGlvbiBhdHRyaWJ1dGUgdmFsdWVzIHNo
b3VsZCBiZSBwYXJzZWQgaW4gc3RyaWN0IG1vZGUgYXMgd2VsbC4KLSAgICByZXR1cm4gY3NzUGFy
c2VyTW9kZSA9PSBDU1NTdHJpY3RNb2RlOworICAgIHJldHVybiBjc3NQYXJzZXJNb2RlID09IENT
U1N0cmljdE1vZGUgfHwgY3NzUGFyc2VyTW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2RlOwogfQogCiAj
ZW5kaWYgLy8gQ1NTUGFyc2VyTW9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAK
aW5kZXggNTc2MWY1MDZlOTAxMDkxNzM2NDZjMWM5MzdjNTEwNzYzYjFhYzI2My4uNmZhODFiY2Zl
ZTFiZGFmMzhmMTlkMmJhMzM2NGM2MmIyYTUzZTM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRF
bGVtZW50LmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6dXBkYXRl
QXR0cmlidXRlU3R5bGUoKQogICAgIGlmIChjYWNoZUhhc2ggJiYgY2FjaGVJdGVyYXRvci0+c2Vj
b25kKSAKICAgICAgICAgc3R5bGUgPSBjYWNoZUl0ZXJhdG9yLT5zZWNvbmQtPnZhbHVlOwogICAg
IGVsc2UgewotICAgICAgICBzdHlsZSA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOworICAg
ICAgICBzdHlsZSA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShpc1NWR0VsZW1lbnQoKSA/IFNW
R0F0dHJpYnV0ZU1vZGUgOiBDU1NRdWlya3NNb2RlKTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9
IGF0dHJpYnV0ZUNvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKICAgICAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRlSXRl
bShpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAppbmRleCA1ZTAzZDcy
ZDcxOWZiZTYxNWE2NmQ3Zjg1NDAwOTNlOWU1YjQ4OWZhLi5hOWQ3YWZiNGIwYWNkYmU5NTM2Njhl
MTdlYzk1MmRkNWU4Zjc4N2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0
YS5oCkBAIC03OSw4ICs3OSw3IEBAIHB1YmxpYzoKICAgICBTdHlsZVByb3BlcnR5U2V0KiBlbnN1
cmVBbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2Fu
aW1hdGVkU01JTFN0eWxlUHJvcGVydGllcykgewotICAgICAgICAgICAgbV9hbmltYXRlZFNNSUxT
dHlsZVByb3BlcnRpZXMgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICAgICAgICAg
IG1fYW5pbWF0ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzLT5zZXRDU1NQYXJzZXJNb2RlKFNWR0F0dHJp
YnV0ZU1vZGUpOworICAgICAgICAgICAgbV9hbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMgPSBT
dHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoU1ZHQXR0cmlidXRlTW9kZSk7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIG1fYW5pbWF0ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzLmdldCgpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKaW5kZXggYzc0YzkxNWMw
MzhjMzhjN2VjZWZkMDU5ZmU5Mzc0YzA1NzYyZDgxYi4uZGQwYjU0MDAxZWIyN2Q4NmM1NGEzYTlj
ZGI3ZmZlNWRjYTM1MjNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVu
dC5jcHAKQEAgLTUyLDggKzUyLDcgQEAgaW5saW5lIFNWR0ZvbnRGYWNlRWxlbWVudDo6U1ZHRm9u
dEZhY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3UKICAgICAsIG1f
Zm9udEZhY2VSdWxlKENTU0ZvbnRGYWNlUnVsZTo6Y3JlYXRlKCkpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoZm9udF9mYWNlVGFnKSk7Ci0gICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHN0
eWxlRGVjbGFyYXRpb24gPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKLSAgICBzdHlsZURl
Y2xhcmF0aW9uLT5zZXRDU1NQYXJzZXJNb2RlKENTU1N0cmljdE1vZGUpOworICAgIFJlZlB0cjxT
dHlsZVByb3BlcnR5U2V0PiBzdHlsZURlY2xhcmF0aW9uID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3Jl
YXRlKENTU1N0cmljdE1vZGUpOwogICAgIG1fZm9udEZhY2VSdWxlLT5zZXREZWNsYXJhdGlvbihz
dHlsZURlY2xhcmF0aW9uLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmNwcAppbmRleCBiYTFjM2ZlMjdiMzNlODJhNzhjNzhkY2MzNjVlYzU4NjRhOWYx
NjI1Li4yZmFkZjYzZDhmZWI0ZGMxMDVkNThiODc3ZDVmNTgxMzIwNTc5YTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC00MjAsOCArNDIwLDcgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFN0cmluZyYgbmEKICAgICBpZiAoIWF0dHIpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3Jl
YXRlKCk7Ci0gICAgc3R5bGUtPnNldENTU1BhcnNlck1vZGUoU1ZHQXR0cmlidXRlTW9kZSk7Cisg
ICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3Jl
YXRlKFNWR0F0dHJpYnV0ZU1vZGUpOwogICAgIGludCBwcm9wZXJ0eUlEID0gU1ZHU3R5bGVkRWxl
bWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKTsKICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgcmV0
dXJuIHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIyZDM3
MzYzMjU2YzhmNDY5MTI2MjFhMGJkODk2Y2Q4OTgzNmJjNjkuLmY1MjE0OTA1OTQ5MjMxOGIyNzBk
MTdjMzFlYjg5MzRjYjlmNjZmMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wMy0zMCAg
RGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIENvbG9ycyBzZWVtIHRv
IGJlIHBhcnNlZCB1c2luZyBIVE1MIHF1aXJrcyBpbiBTVkcgYXR0cmlidXRlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYxMTIKKworICAgICAgICBU
ZXN0IHRoYXQgdmFsdWVzIG9mIFNWRyBwcmVzZW50YXRpb24gYXR0cmlidXRlcyBhcmUgcGFyc2Vk
IGluIHN0cmljdCBtb2RlLiBBdCB0aGUgbW9tZW50CisgICAgICAgIHRoaXMgYWZmZWN0cyBzdHJp
Y3QgY29sb3IgcGFyc2luZyBhbmQgbm8gc3BhY2VzIGJldHdlZW4gdmFsdWVzIGFuZCB1bml0cy4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9h
bmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRlLWNvbG9yLWZpbGwtZnJvbS1ieS5qczoKKyAg
ICAgICAgKiBzdmcvY3NzL3NjcmlwdC10ZXN0cy9zdmctYXR0cmlidXRlLWxlbmd0aC1wYXJzaW5n
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3NzL3NjcmlwdC10ZXN0cy9zdmctYXR0cmlidXRl
LXBhcnNlci1tb2RlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3NzL3N2Zy1hdHRyaWJ1dGUt
bGVuZ3RoLXBhcnNpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3NzL3N2
Zy1hdHRyaWJ1dGUtbGVuZ3RoLXBhcnNpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2Nz
cy9zdmctYXR0cmlidXRlLXBhcnNlci1tb2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3ZnL2Nzcy9zdmctYXR0cmlidXRlLXBhcnNlci1tb2RlLmh0bWw6IEFkZGVkLgorCiAyMDEy
LTAzLTI5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAg
W1F0XSBVbnJldmlld2VkIGdhcmRlbmluZyBhZnRlciByMTEyNTE0LiBGaXggdGhlIGFjY2lkZW50
YWwgcjExMjUzMiBmaXguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9z
Y3JpcHQtdGVzdHMvYW5pbWF0ZS1jb2xvci1maWxsLWZyb20tYnkuanMgYi9MYXlvdXRUZXN0cy9z
dmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvYW5pbWF0ZS1jb2xvci1maWxsLWZyb20tYnkuanMK
aW5kZXggYzRhMDA4MzY1ZDc5MjFiYTUzNDE0YzNjODA5OTU2MzY0NTlmZWIzZC4uODhiZTIwNmI0
ZjAxNzkwZjY3YWFmZDM1YTQ3ZGVkZDc3MDhkMTVjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL2FuaW1hdGUtY29sb3ItZmlsbC1mcm9tLWJ5Lmpz
CisrKyBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9hbmltYXRlLWNv
bG9yLWZpbGwtZnJvbS1ieS5qcwpAQCAtNyw3ICs3LDcgQEAgcmVjdC5zZXRBdHRyaWJ1dGUoImlk
IiwgInJlY3QiKTsKIHJlY3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIxMDBweCIpOwogcmVjdC5z
ZXRBdHRyaWJ1dGUoImhlaWdodCIsICIxMDBweCIpOwogcmVjdC5zZXRBdHRyaWJ1dGUoImZpbGwi
LCAiY3VycmVudENvbG9yIik7Ci1yZWN0LnNldEF0dHJpYnV0ZSgiY29sb3IiLCAiZDAwMDAwIik7
CityZWN0LnNldEF0dHJpYnV0ZSgiY29sb3IiLCAiI2QwMDAwMCIpOwogcmVjdC5zZXRBdHRyaWJ1
dGUoIm9uY2xpY2siLCAiZXhlY3V0ZVRlc3QoKSIpOwogCiB2YXIgYW5pbWF0ZUNvbG9yID0gY3Jl
YXRlU1ZHRWxlbWVudCgiYW5pbWF0ZUNvbG9yIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dmcvY3NzL3NjcmlwdC10ZXN0cy9zdmctYXR0cmlidXRlLWxlbmd0aC1wYXJzaW5nLmpzIGIvTGF5
b3V0VGVzdHMvc3ZnL2Nzcy9zY3JpcHQtdGVzdHMvc3ZnLWF0dHJpYnV0ZS1sZW5ndGgtcGFyc2lu
Zy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMTgyNGJjZjFhOWM5MWJmZWUxY2MyMjljOTU5MDIwZWVmY2YyMGRm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2Nzcy9zY3JpcHQtdGVzdHMvc3Zn
LWF0dHJpYnV0ZS1sZW5ndGgtcGFyc2luZy5qcwpAQCAtMCwwICsxLDI4IEBACitkZXNjcmlwdGlv
bigiVGVzdCBDU1MgPGxlbmd0aD4gcGFyc2luZyBvbiBTVkcgcHJlc2VudGF0aW9uIGF0dHJpYnV0
ZXMuIikKK2NyZWF0ZVNWR1Rlc3RDYXNlKCk7CisKK3ZhciB0ZXh0ID0gY3JlYXRlU1ZHRWxlbWVu
dCgidGV4dCIpOwordGV4dC5zZXRBdHRyaWJ1dGUoImlkIiwgInRleHQiKTsKK3RleHQuc2V0QXR0
cmlidXRlKCJ4IiwgIjIwcHgiKTsKK3RleHQuc2V0QXR0cmlidXRlKCJ5IiwgIjEwMHB4Iik7Cit0
ZXh0LmlubmVySFRNTCA9ICJUZXN0IjsKK3Jvb3RTVkdFbGVtZW50LmFwcGVuZENoaWxkKHRleHQp
OworCisvLyBUZXN0IGluaXRpYWwgdmFsdWUgb2YgZm9udC1sZW5ndGguCitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGV4dCwgbnVs
bCkuZm9udFNpemUiLCAiMTZweCIpOworCisvLyBTZXQgdmFsaWQgZm9udC1zaXplIG9mIDEwMHB4
Cit0ZXh0LnNldEF0dHJpYnV0ZSgiZm9udC1zaXplIiwgIjEwMHB4Iik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGV4dCwgbnVs
bCkuZm9udFNpemUiLCAiMTAwcHgiKTsKKworLy8gU3BhY2UgYmV0d2VlbiB1bml0IGFuZCB2YWx1
ZSAtIGludmFsaWQgYWNjb3JkaW5nIHN0cmljdCBwYXJzaW5nIHJ1bGVzLgordGV4dC5zZXRBdHRy
aWJ1dGUoImZvbnQtc2l6ZSIsICIxMDAgIHB4Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGV4dCwgbnVsbCkuZm9udFNpemUi
LCAiMTZweCIpOworCisvLyBTcGFjZSB3aXRoaW4gdGhlIHZhbHVlIC0gaW52YWxpZCBhY2NvcmRp
bmcgc3RyaWN0IHBhcnNpbmcgcnVsZXMuCit0ZXh0LnNldEF0dHJpYnV0ZSgiZm9udC1zaXplIiwg
IjEwIDBweCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKHRleHQsIG51bGwpLmZvbnRTaXplIiwgIjE2cHgiKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK2NvbXBsZXRlVGVzdCgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3ZnL2Nzcy9zY3JpcHQtdGVzdHMvc3ZnLWF0dHJpYnV0ZS1wYXJzZXItbW9k
ZS5qcyBiL0xheW91dFRlc3RzL3N2Zy9jc3Mvc2NyaXB0LXRlc3RzL3N2Zy1hdHRyaWJ1dGUtcGFy
c2VyLW1vZGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2Y2Q5NjYxYmNiN2ExYmVkODI2MDcxMjJjMmQyZDhi
OGFlNTkwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jc3Mvc2NyaXB0LXRl
c3RzL3N2Zy1hdHRyaWJ1dGUtcGFyc2VyLW1vZGUuanMKQEAgLTAsMCArMSwyMTMgQEAKK2Rlc2Ny
aXB0aW9uKCJUZXN0IHN0cmljdCBjb2xvciBwYXJzaW5nIG9uIFNWRyBwcmVzZW50YXRpb24gYXR0
cmlidXRlcy4iKQorY3JlYXRlU1ZHVGVzdENhc2UoKTsKKwordmFyIHJlY3QgPSBjcmVhdGVTVkdF
bGVtZW50KCJyZWN0Iik7CityZWN0LnNldEF0dHJpYnV0ZSgiaWQiLCAicmVjdCIpOworcmVjdC5z
ZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjEwMHB4Iik7CityZWN0LnNldEF0dHJpYnV0ZSgiaGVpZ2h0
IiwgIjEwMHB4Iik7Cityb290U1ZHRWxlbWVudC5hcHBlbmRDaGlsZChyZWN0KTsKKworCisvLyBU
ZXN0aW5nICdmaWxsJworLy8gVGhlIGRlZmF1bHQgZm9yIGZpbGwgaXMgIzAwMDAwMC4KK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShy
ZWN0LCBudWxsKS5maWxsIiwgIiMwMDAwMDAiKTsKKworLy8gU2V0IHRoZSBmaWxsIGNvbG9yIHRv
IGdyZWVuLgorcmVjdC5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4iKTsKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBu
dWxsKS5maWxsIiwgIiMwMDgwMDAiKTsKKworLy8gU2V0IGZvbGxvd2luZyBjb2xvcnMgc2hvdWxk
IGJlIGludmFsaWQuCityZWN0LnNldEF0dHJpYnV0ZSgiZmlsbCIsICJmMDAiKTsKK3Nob3VsZEJl
TnVsbCgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5m
aWxsIik7CisvLyBSZXNldCB0byBncmVlbi4KK3JlY3Quc2V0QXR0cmlidXRlKCJmaWxsIiwgImdy
ZWVuIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuZmlsbCIsICIjMDA4MDAwIik7CisKK3JlY3Quc2V0QXR0
cmlidXRlKCJmaWxsIiwgImZmMDAiKTsKK3Nob3VsZEJlTnVsbCgiZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5maWxsIik7CisvLyBSZXNldCB0byBncmVl
bi4KK3JlY3Quc2V0QXR0cmlidXRlKCJmaWxsIiwgImdyZWVuIik7CitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCku
ZmlsbCIsICIjMDA4MDAwIik7CisKK3JlY3Quc2V0QXR0cmlidXRlKCJmaWxsIiwgImZmMDAwMCIp
Oworc2hvdWxkQmVOdWxsKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJl
Y3QsIG51bGwpLmZpbGwiKTsKKy8vIFJlc2V0IHRvIGdyZWVuLgorcmVjdC5zZXRBdHRyaWJ1dGUo
ImZpbGwiLCAiZ3JlZW4iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5maWxsIiwgIiMwMDgwMDAiKTsKKwor
cmVjdC5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZmYwMCIpOworc2hvdWxkQmVOdWxsKCJkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLmZpbGwiKTsKKy8vIFJl
c2V0IHRvIGdyZWVuLgorcmVjdC5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4iKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShy
ZWN0LCBudWxsKS5maWxsIiwgIiMwMDgwMDAiKTsKKworcmVjdC5zZXRBdHRyaWJ1dGUoImZpbGwi
LCAiIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuZmlsbCIsICIjMDAwMDAwIik7CisvLyBSZXNldCB0byBn
cmVlbi4KK3JlY3Quc2V0QXR0cmlidXRlKCJmaWxsIiwgImdyZWVuIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVs
bCkuZmlsbCIsICIjMDA4MDAwIik7CisKKworCisvLyBUZXN0aW5nICdzdHJva2UnCisvLyBUaGUg
ZGVmYXVsdCBzdHJva2UgdmFsdWUgc2hvdWxkIGJlICdub25lJy4KK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5z
dHJva2UiLCAibm9uZSIpOworCisvLyBTZXQgdGhlIHN0cm9rZSBjb2xvciB0byBncmVlbi4KK3Jl
Y3Quc2V0QXR0cmlidXRlKCJzdHJva2UiLCAiZ3JlZW4iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5zdHJv
a2UiLCAiIzAwODAwMCIpOworCisvLyBTZXQgZm9sbG93aW5nIGNvbG9ycyBzaG91bGQgYmUgaW52
YWxpZC4KK3JlY3Quc2V0QXR0cmlidXRlKCJzdHJva2UiLCAiZjAwIik7CitzaG91bGRCZU51bGwo
ImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuc3Ryb2tl
Iik7CisvLyBSZXNldCB0byBncmVlbi4KK3JlY3Quc2V0QXR0cmlidXRlKCJzdHJva2UiLCAiZ3Jl
ZW4iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShyZWN0LCBudWxsKS5zdHJva2UiLCAiIzAwODAwMCIpOworCityZWN0LnNldEF0
dHJpYnV0ZSgic3Ryb2tlIiwgImZmMDAiKTsKK3Nob3VsZEJlTnVsbCgiZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5zdHJva2UiKTsKKy8vIFJlc2V0IHRv
IGdyZWVuLgorcmVjdC5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsICJncmVlbiIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3Qs
IG51bGwpLnN0cm9rZSIsICIjMDA4MDAwIik7CisKK3JlY3Quc2V0QXR0cmlidXRlKCJzdHJva2Ui
LCAiZmYwMDAwIik7CitzaG91bGRCZU51bGwoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUocmVjdCwgbnVsbCkuc3Ryb2tlIik7CisvLyBSZXNldCB0byBncmVlbi4KK3JlY3Qu
c2V0QXR0cmlidXRlKCJzdHJva2UiLCAiZ3JlZW4iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5zdHJva2Ui
LCAiIzAwODAwMCIpOworCityZWN0LnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwgImZmMDAiKTsKK3No
b3VsZEJlTnVsbCgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBu
dWxsKS5zdHJva2UiKTsKKy8vIFJlc2V0IHRvIGdyZWVuLgorcmVjdC5zZXRBdHRyaWJ1dGUoInN0
cm9rZSIsICJncmVlbiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLnN0cm9rZSIsICIjMDA4MDAwIik7CisK
K3JlY3Quc2V0QXR0cmlidXRlKCJzdHJva2UiLCAiIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuc3Ryb2tl
IiwgIm5vbmUiKTsKKy8vIFJlc2V0IHRvIGdyZWVuLgorcmVjdC5zZXRBdHRyaWJ1dGUoInN0cm9r
ZSIsICJncmVlbiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLnN0cm9rZSIsICIjMDA4MDAwIik7CisKKwor
Ly8gVGVzdGluZyAnY29sb3InCisvLyBUaGUgZGVmYXVsdCBmb3IgY29sb3IgaXMgcmdiKDAsIDAs
IDApLgorc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKHJlY3QsIG51bGwpLmNvbG9yIiwgInJnYigwLCAwLCAwKSIpOworCisvLyBTZXQg
Y29sb3IgdG8gZ3JlZW4uCityZWN0LnNldEF0dHJpYnV0ZSgiY29sb3IiLCAiZ3JlZW4iKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShyZWN0LCBudWxsKS5jb2xvciIsICJyZ2IoMCwgMTI4LCAwKSIpOworCisvLyBTZXQgZm9sbG93
aW5nIGNvbG9ycyBzaG91bGQgYmUgaW52YWxpZC4KK3JlY3Quc2V0QXR0cmlidXRlKCJjb2xvciIs
ICJmMDAiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5jb2xvciIsICJyZ2IoMCwgMCwgMCkiKTsKKy8vIFJl
c2V0IHRvIGdyZWVuLgorcmVjdC5zZXRBdHRyaWJ1dGUoImNvbG9yIiwgImdyZWVuIik7CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
cmVjdCwgbnVsbCkuY29sb3IiLCAicmdiKDAsIDEyOCwgMCkiKTsKKworcmVjdC5zZXRBdHRyaWJ1
dGUoImNvbG9yIiwgImZmMDAiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5jb2xvciIsICJyZ2IoMCwgMCwg
MCkiKTsKKy8vIFJlc2V0IHRvIGdyZWVuLgorcmVjdC5zZXRBdHRyaWJ1dGUoImNvbG9yIiwgImdy
ZWVuIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuY29sb3IiLCAicmdiKDAsIDEyOCwgMCkiKTsKKworcmVj
dC5zZXRBdHRyaWJ1dGUoImNvbG9yIiwgImZmMDAwMCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLmNvbG9y
IiwgInJnYigwLCAwLCAwKSIpOworLy8gUmVzZXQgdG8gZ3JlZW4uCityZWN0LnNldEF0dHJpYnV0
ZSgiY29sb3IiLCAiZ3JlZW4iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5jb2xvciIsICJyZ2IoMCwgMTI4
LCAwKSIpOworCityZWN0LnNldEF0dHJpYnV0ZSgiY29sb3IiLCAiZmYwMCIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3Qs
IG51bGwpLmNvbG9yIiwgInJnYigwLCAwLCAwKSIpOworLy8gUmVzZXQgdG8gZ3JlZW4uCityZWN0
LnNldEF0dHJpYnV0ZSgiY29sb3IiLCAiZ3JlZW4iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5jb2xvciIs
ICJyZ2IoMCwgMTI4LCAwKSIpOworCityZWN0LnNldEF0dHJpYnV0ZSgiY29sb3IiLCAiIik7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUocmVjdCwgbnVsbCkuY29sb3IiLCAicmdiKDAsIDAsIDApIik7CisvLyBSZXNldCB0byBncmVl
bi4KK3JlY3Quc2V0QXR0cmlidXRlKCJjb2xvciIsICJncmVlbiIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwp
LmNvbG9yIiwgInJnYigwLCAxMjgsIDApIik7CisKKworLy8gVGVzdGluZyAnc3RvcC1jb2xvcicK
Ky8vIFRoZSBkZWZhdWx0IGZvciBzdG9wLWNvbG9yIGlzIHJnYigwLCAwLCAwKS4KK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0
LCBudWxsKS5zdG9wQ29sb3IiLCAicmdiKDAsIDAsIDApIik7CisKKy8vIFNldCBjb2xvciB0byBn
cmVlbi4KK3JlY3Quc2V0QXR0cmlidXRlKCJzdG9wLWNvbG9yIiwgImdyZWVuIik7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVj
dCwgbnVsbCkuc3RvcENvbG9yIiwgInJnYigwLCAxMjgsIDApIik7CisKKy8vIFNldCBmb2xsb3dp
bmcgY29sb3JzIHNob3VsZCBiZSBpbnZhbGlkLgorcmVjdC5zZXRBdHRyaWJ1dGUoInN0b3AtY29s
b3IiLCAiZjAwIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuc3RvcENvbG9yIiwgInJnYigwLCAwLCAwKSIp
OworLy8gUmVzZXQgdG8gZ3JlZW4uCityZWN0LnNldEF0dHJpYnV0ZSgic3RvcC1jb2xvciIsICJn
cmVlbiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLnN0b3BDb2xvciIsICJyZ2IoMCwgMTI4LCAwKSIpOwor
CityZWN0LnNldEF0dHJpYnV0ZSgic3RvcC1jb2xvciIsICJmZjAwIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVs
bCkuc3RvcENvbG9yIiwgInJnYigwLCAwLCAwKSIpOworLy8gUmVzZXQgdG8gZ3JlZW4uCityZWN0
LnNldEF0dHJpYnV0ZSgic3RvcC1jb2xvciIsICJncmVlbiIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLnN0
b3BDb2xvciIsICJyZ2IoMCwgMTI4LCAwKSIpOworCityZWN0LnNldEF0dHJpYnV0ZSgic3RvcC1j
b2xvciIsICJmZjAwMDAiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5zdG9wQ29sb3IiLCAicmdiKDAsIDAs
IDApIik7CisvLyBSZXNldCB0byBncmVlbi4KK3JlY3Quc2V0QXR0cmlidXRlKCJzdG9wLWNvbG9y
IiwgImdyZWVuIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuc3RvcENvbG9yIiwgInJnYigwLCAxMjgsIDAp
Iik7CisKK3JlY3Quc2V0QXR0cmlidXRlKCJzdG9wLWNvbG9yIiwgImZmMDAiKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0
LCBudWxsKS5zdG9wQ29sb3IiLCAicmdiKDAsIDAsIDApIik7CisvLyBSZXNldCB0byBncmVlbi4K
K3JlY3Quc2V0QXR0cmlidXRlKCJzdG9wLWNvbG9yIiwgImdyZWVuIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVs
bCkuc3RvcENvbG9yIiwgInJnYigwLCAxMjgsIDApIik7CisKK3JlY3Quc2V0QXR0cmlidXRlKCJz
dG9wLWNvbG9yIiwgIiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLnN0b3BDb2xvciIsICJyZ2IoMCwgMCwg
MCkiKTsKKy8vIFJlc2V0IHRvIGdyZWVuLgorcmVjdC5zZXRBdHRyaWJ1dGUoInN0b3AtY29sb3Ii
LCAiZ3JlZW4iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5zdG9wQ29sb3IiLCAicmdiKDAsIDEyOCwgMCki
KTsKKworCisvLyBUZXN0aW5nICdmbG9vZC1jb2xvcicKKy8vIFRoZSBkZWZhdWx0IGZvciBmbG9v
ZC1jb2xvciBpcyByZ2IoMCwgMCwgMCkuCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuZmxvb2RDb2xvciIsICJy
Z2IoMCwgMCwgMCkiKTsKKworLy8gU2V0IGNvbG9yIHRvIGdyZWVuLgorcmVjdC5zZXRBdHRyaWJ1
dGUoImZsb29kLWNvbG9yIiwgImdyZWVuIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuZmxvb2RDb2xvciIs
ICJyZ2IoMCwgMTI4LCAwKSIpOworCisvLyBTZXQgZm9sbG93aW5nIGNvbG9ycyBzaG91bGQgYmUg
aW52YWxpZC4KK3JlY3Quc2V0QXR0cmlidXRlKCJmbG9vZC1jb2xvciIsICJmMDAiKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShy
ZWN0LCBudWxsKS5mbG9vZENvbG9yIiwgInJnYigwLCAwLCAwKSIpOworLy8gUmVzZXQgdG8gZ3Jl
ZW4uCityZWN0LnNldEF0dHJpYnV0ZSgiZmxvb2QtY29sb3IiLCAiZ3JlZW4iKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0
LCBudWxsKS5mbG9vZENvbG9yIiwgInJnYigwLCAxMjgsIDApIik7CisKK3JlY3Quc2V0QXR0cmli
dXRlKCJmbG9vZC1jb2xvciIsICJmZjAwIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuZmxvb2RDb2xvciIs
ICJyZ2IoMCwgMCwgMCkiKTsKKy8vIFJlc2V0IHRvIGdyZWVuLgorcmVjdC5zZXRBdHRyaWJ1dGUo
ImZsb29kLWNvbG9yIiwgImdyZWVuIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuZmxvb2RDb2xvciIsICJy
Z2IoMCwgMTI4LCAwKSIpOworCityZWN0LnNldEF0dHJpYnV0ZSgiZmxvb2QtY29sb3IiLCAiZmYw
MDAwIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuZmxvb2RDb2xvciIsICJyZ2IoMCwgMCwgMCkiKTsKKy8v
IFJlc2V0IHRvIGdyZWVuLgorcmVjdC5zZXRBdHRyaWJ1dGUoImZsb29kLWNvbG9yIiwgImdyZWVu
Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUocmVjdCwgbnVsbCkuZmxvb2RDb2xvciIsICJyZ2IoMCwgMTI4LCAwKSIpOworCity
ZWN0LnNldEF0dHJpYnV0ZSgiZmxvb2QtY29sb3IiLCAiZmYwMCIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwp
LmZsb29kQ29sb3IiLCAicmdiKDAsIDAsIDApIik7CisvLyBSZXNldCB0byBncmVlbi4KK3JlY3Qu
c2V0QXR0cmlidXRlKCJmbG9vZC1jb2xvciIsICJncmVlbiIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLmZs
b29kQ29sb3IiLCAicmdiKDAsIDEyOCwgMCkiKTsKKworcmVjdC5zZXRBdHRyaWJ1dGUoImZsb29k
LWNvbG9yIiwgIiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLmZsb29kQ29sb3IiLCAicmdiKDAsIDAsIDAp
Iik7CisvLyBSZXNldCB0byBncmVlbi4KK3JlY3Quc2V0QXR0cmlidXRlKCJmbG9vZC1jb2xvciIs
ICJncmVlbiIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLmZsb29kQ29sb3IiLCAicmdiKDAsIDEyOCwgMCki
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK2NvbXBsZXRlVGVzdCgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2Nzcy9zdmctYXR0cmlidXRlLWxlbmd0aC1wYXJz
aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9jc3Mvc3ZnLWF0dHJpYnV0ZS1sZW5n
dGgtcGFyc2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYzMzU4NjdjZDUxODAzOTlkZWMx
YWEwZTkwNzJlODdmZWVkOTFhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9j
c3Mvc3ZnLWF0dHJpYnV0ZS1sZW5ndGgtcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MyBAQAorVGVzdCBDU1MgcGFyc2luZyBvbiBTVkcgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZXMuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUodGV4dCwgbnVsbCkuZm9udFNpemUgaXMgIjE2cHgiCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGV4dCwgbnVsbCkuZm9udFNpemUg
aXMgIjEwMHB4IgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHRl
eHQsIG51bGwpLmZvbnRTaXplIGlzICIxNnB4IgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKHRleHQsIG51bGwpLmZvbnRTaXplIGlzICIxNnB4IgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N2Zy9jc3Mvc3ZnLWF0dHJpYnV0ZS1sZW5ndGgtcGFyc2luZy5odG1sIGIvTGF5
b3V0VGVzdHMvc3ZnL2Nzcy9zdmctYXR0cmlidXRlLWxlbmd0aC1wYXJzaW5nLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTk4ZjU1NzZhN2E1ZTc2MWJiMTUzMzJiYzk2ZmVhYTVhNmM5N2NlOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jc3Mvc3ZnLWF0dHJpYnV0ZS1sZW5ndGgtcGFyc2lu
Zy5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9zdmcvZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdUZXN0
Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9zdmctYXR0cmlidXRlLWxlbmd0aC1wYXJzaW5nLmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jc3Mvc3ZnLWF0dHJpYnV0
ZS1wYXJzZXItbW9kZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvY3NzL3N2Zy1hdHRy
aWJ1dGUtcGFyc2VyLW1vZGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwZjUxY2QzYzZkODEx
MmE1YTczNmE5MGRlMzg2ZTJkYzRiNjM2MTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdmcvY3NzL3N2Zy1hdHRyaWJ1dGUtcGFyc2VyLW1vZGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNjkgQEAKK1Rlc3Qgc3RyaWN0IGNvbG9yIHBhcnNpbmcgb24gU1ZHIHByZXNlbnRhdGlvbiBh
dHRyaWJ1dGVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLmZpbGwgaXMgIiMwMDAw
MDAiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVs
bCkuZmlsbCBpcyAiIzAwODAwMCIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShyZWN0LCBudWxsKS5maWxsIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5maWxsIGlzICIjMDA4MDAwIgorUEFTUyBk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLmZpbGwgaXMg
bnVsbAorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51
bGwpLmZpbGwgaXMgIiMwMDgwMDAiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUocmVjdCwgbnVsbCkuZmlsbCBpcyBudWxsCitQQVNTIGRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuZmlsbCBpcyAiIzAwODAwMCIKK1BBU1Mg
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5maWxsIGlz
IG51bGwKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBu
dWxsKS5maWxsIGlzICIjMDA4MDAwIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKHJlY3QsIG51bGwpLmZpbGwgaXMgIiMwMDAwMDAiCitQQVNTIGRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuZmlsbCBpcyAiIzAwODAwMCIK
K1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5z
dHJva2UgaXMgIm5vbmUiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUocmVjdCwgbnVsbCkuc3Ryb2tlIGlzICIjMDA4MDAwIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLnN0cm9rZSBpcyBudWxsCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuc3Ryb2tlIGlz
ICIjMDA4MDAwIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJl
Y3QsIG51bGwpLnN0cm9rZSBpcyBudWxsCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuc3Ryb2tlIGlzICIjMDA4MDAwIgorUEFTUyBkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLnN0cm9rZSBpcyBudWxs
CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCku
c3Ryb2tlIGlzICIjMDA4MDAwIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKHJlY3QsIG51bGwpLnN0cm9rZSBpcyBudWxsCitQQVNTIGRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuc3Ryb2tlIGlzICIjMDA4MDAwIgorUEFT
UyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLnN0cm9r
ZSBpcyAibm9uZSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShy
ZWN0LCBudWxsKS5zdHJva2UgaXMgIiMwMDgwMDAiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuY29sb3IgaXMgInJnYigwLCAwLCAwKSIKK1BB
U1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5jb2xv
ciBpcyAicmdiKDAsIDEyOCwgMCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUocmVjdCwgbnVsbCkuY29sb3IgaXMgInJnYigwLCAwLCAwKSIKK1BBU1MgZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5jb2xvciBpcyAicmdi
KDAsIDEyOCwgMCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
cmVjdCwgbnVsbCkuY29sb3IgaXMgInJnYigwLCAwLCAwKSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5jb2xvciBpcyAicmdiKDAsIDEyOCwg
MCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVs
bCkuY29sb3IgaXMgInJnYigwLCAwLCAwKSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5jb2xvciBpcyAicmdiKDAsIDEyOCwgMCkiCitQQVNT
IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuY29sb3Ig
aXMgInJnYigwLCAwLCAwKSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShyZWN0LCBudWxsKS5jb2xvciBpcyAicmdiKDAsIDEyOCwgMCkiCitQQVNTIGRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuY29sb3IgaXMgInJnYigw
LCAwLCAwKSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0
LCBudWxsKS5jb2xvciBpcyAicmdiKDAsIDEyOCwgMCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuc3RvcENvbG9yIGlzICJyZ2IoMCwgMCwg
MCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVs
bCkuc3RvcENvbG9yIGlzICJyZ2IoMCwgMTI4LCAwKSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5zdG9wQ29sb3IgaXMgInJnYigwLCAwLCAw
KSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxs
KS5zdG9wQ29sb3IgaXMgInJnYigwLCAxMjgsIDApIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLnN0b3BDb2xvciBpcyAicmdiKDAsIDAsIDAp
IgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwp
LnN0b3BDb2xvciBpcyAicmdiKDAsIDEyOCwgMCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuc3RvcENvbG9yIGlzICJyZ2IoMCwgMCwgMCki
CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCku
c3RvcENvbG9yIGlzICJyZ2IoMCwgMTI4LCAwKSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5zdG9wQ29sb3IgaXMgInJnYigwLCAwLCAwKSIK
K1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5z
dG9wQ29sb3IgaXMgInJnYigwLCAxMjgsIDApIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLnN0b3BDb2xvciBpcyAicmdiKDAsIDAsIDApIgor
UEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLnN0
b3BDb2xvciBpcyAicmdiKDAsIDEyOCwgMCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuZmxvb2RDb2xvciBpcyAicmdiKDAsIDAsIDApIgor
UEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLmZs
b29kQ29sb3IgaXMgInJnYigwLCAxMjgsIDApIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLmZsb29kQ29sb3IgaXMgInJnYigwLCAwLCAwKSIK
K1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5m
bG9vZENvbG9yIGlzICJyZ2IoMCwgMTI4LCAwKSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5mbG9vZENvbG9yIGlzICJyZ2IoMCwgMCwgMCki
CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCku
Zmxvb2RDb2xvciBpcyAicmdiKDAsIDEyOCwgMCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVsbCkuZmxvb2RDb2xvciBpcyAicmdiKDAsIDAsIDAp
IgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwp
LmZsb29kQ29sb3IgaXMgInJnYigwLCAxMjgsIDApIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKHJlY3QsIG51bGwpLmZsb29kQ29sb3IgaXMgInJnYigwLCAwLCAw
KSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxs
KS5mbG9vZENvbG9yIGlzICJyZ2IoMCwgMTI4LCAwKSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShyZWN0LCBudWxsKS5mbG9vZENvbG9yIGlzICJyZ2IoMCwgMCwg
MCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocmVjdCwgbnVs
bCkuZmxvb2RDb2xvciBpcyAicmdiKDAsIDEyOCwgMCkiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Zn
L2Nzcy9zdmctYXR0cmlidXRlLXBhcnNlci1tb2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvY3Nz
L3N2Zy1hdHRyaWJ1dGUtcGFyc2VyLW1vZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjM1MWU4YjA4YThl
YWViODUzNTZhNWIwMzVkNzQxY2EwYzlhZTU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3ZnL2Nzcy9zdmctYXR0cmlidXRlLXBhcnNlci1tb2RlLmh0bWwKQEAgLTAsMCArMSwxMiBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3N2
Zy9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1Rlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N2Zy1hdHRyaWJ1dGUt
cGFyc2VyLW1vZGUuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="139285"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>