<?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>30836</bug_id>
          
          <creation_ts>2009-10-27 14:52:44 -0700</creation_ts>
          <short_desc>Creating a link when selecting multiple nodes creates multiple links</short_desc>
          <delta_ts>2010-08-25 14:15:47 -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>HTML Editing</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>http://www.mozilla.org/editor/midasdemo/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>GoogleBug</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Marcos Almeida">marcosalmeida</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>enrica</cc>
    
    <cc>jparent</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>158381</commentid>
    <comment_count>0</comment_count>
    <who name="Marcos Almeida">marcosalmeida</who>
    <bug_when>2009-10-27 14:52:44 -0700</bug_when>
    <thetext>1. Go to http://www.mozilla.org/editor/midasdemo/
2. type &quot;abc&quot;
3. select &quot;b&quot; and press the italic button on the second toolbar
4. press ctrl-a to select all
5. press the create link button (the globe icon with a chain link, on the first toolbar)
6. type abc in the dialog that pops up and press ok
7. click the &quot;view html source&quot; checkbox at the bottom to see the generated html

Expected:
&lt;a href=&quot;abc&quot;&gt;a&lt;i&gt;b&lt;/i&gt;c&lt;/a&gt;

Actual:
&lt;a href=&quot;abc&quot;&gt;a&lt;/a&gt;&lt;i&gt;&lt;a href=&quot;abc&quot;&gt;b&lt;/a&gt;&lt;/i&gt;&lt;a href=&quot;abc&quot;&gt;c&lt;/a&gt;


This affects Google properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158407</commentid>
    <comment_count>1</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2009-10-27 16:30:16 -0700</bug_when>
    <thetext>Standalone demo: http://www.plexode.com/cgi-bin/eval3.py#ht=%3Cdiv%20id%3D&apos;foo&apos;%20contentEditable%3Efoo%3Cb%3Ebar%3C%2Fb%3Ebaz%3C%2Fdiv%3E&amp;ohh=1&amp;ohj=1&amp;jt=gebi(&apos;foo&apos;).focus()%3B%0Adocument.execCommand(%22SelectAll%22)%3B%0Adocument.execCommand(%22createLink%22%2C%20false%2C%20%22http%3A%2F%2Fwww.google.com%22)%3B%0A%0A%2F%2F%20Should%20have%20only%20one%20anchor%20tag%0Aif%20(foo.getElementsByTagName(&apos;A&apos;).length%20%3D%3D%201)%20%7B%0A%20%20alert(%22PASS%22)%3B%0A%7D%20else%20%7B%0A%20%20alert(%22FAIL%22)%3B%0A%7D&amp;ojh=1&amp;ojj=1&amp;ms=100&amp;oth=0&amp;otj=0&amp;cex=1, will alert PASS if one link is created, FAIL otherwise</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268966</commentid>
    <comment_count>2</comment_count>
      <attachid>65356</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-24 18:55:11 -0700</bug_when>
    <thetext>Created attachment 65356
initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269430</commentid>
    <comment_count>3</comment_count>
      <attachid>65356</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-08-25 12:12:28 -0700</bug_when>
    <thetext>Comment on attachment 65356
initial patch

&gt; Index: WebCore/editing/ApplyStyleCommand.cpp
&gt; +    bool operator==(const StyleChange&amp; other)
&gt; +    {
&gt; +        return m_cssStyle == other.m_cssStyle

I am worried that this will regress someday when someone adds a new member, but I don&apos;t have a good suggestion on how to avoid this.

&gt; -            while (sibling &amp;&amp; sibling != pastEndNode &amp;&amp; (!sibling-&gt;isElementNode() || sibling-&gt;hasTagName(brTag)) &amp;&amp; !isBlock(sibling)) {
&gt; +            StyleChange startChange(style, Position(node, 0));
&gt; +            while (sibling &amp;&amp; sibling != pastEndNode &amp;&amp; !sibling-&gt;contains(pastEndNode)) {
&gt; +                if (isBlock(sibling) &amp;&amp; !sibling-&gt;hasTagName(brTag))
&gt; +                    break;
&gt; +                if (StyleChange(style, Position(sibling, 0)) != startChange)
&gt; +                    break;

Was there a reason to move conditions into separate if statements?  Seems like these could be merged with the while condition.

&gt; +        RefPtr&lt;StyledElement&gt; styledElement;
&gt; +        if (current-&gt;isStyledElement() &amp;&amp; m_styledInlineElement &amp;&amp; current-&gt;hasTagName(m_styledInlineElement-&gt;tagQName()))
&gt; +            styledElement = static_cast&lt;StyledElement*&gt;(current);

Does |styledElement| need to be a RefPtr?


&gt; Index: WebCore/editing/ApplyStyleCommand.h
&gt; -    void addInlineStyleIfNeeded(CSSMutableStyleDeclaration*, Node* start, Node* end);
&gt; +    void addInlineStyleIfNeeded(CSSMutableStyleDeclaration*, Node* start, Node* end, bool shouldAddStyledElement = true);

Can we use an enum instead of a bool?


Can you also add a test for anchors with inline styles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269477</commentid>
    <comment_count>4</comment_count>
      <attachid>65469</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-25 13:33:28 -0700</bug_when>
    <thetext>Created attachment 65469
fixed per Tony&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269478</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-25 13:34:45 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 65356 [details])
&gt; &gt; Index: WebCore/editing/ApplyStyleCommand.cpp
&gt; &gt; +    bool operator==(const StyleChange&amp; other)
&gt; &gt; +    {
&gt; &gt; +        return m_cssStyle == other.m_cssStyle
&gt; 
&gt; I am worried that this will regress someday when someone adds a new member, but I don&apos;t have a good suggestion on how to avoid this.

I know.  I spent some time thinking about it but couldn&apos;t come up with a better way either.

&gt; &gt; -            while (sibling &amp;&amp; sibling != pastEndNode &amp;&amp; (!sibling-&gt;isElementNode() || sibling-&gt;hasTagName(brTag)) &amp;&amp; !isBlock(sibling)) {
&gt; &gt; +            StyleChange startChange(style, Position(node, 0));
&gt; &gt; +            while (sibling &amp;&amp; sibling != pastEndNode &amp;&amp; !sibling-&gt;contains(pastEndNode)) {
&gt; &gt; +                if (isBlock(sibling) &amp;&amp; !sibling-&gt;hasTagName(brTag))
&gt; &gt; +                    break;
&gt; &gt; +                if (StyleChange(style, Position(sibling, 0)) != startChange)
&gt; &gt; +                    break;
&gt; 
&gt; Was there a reason to move conditions into separate if statements?  Seems like these could be merged with the while condition.

Merged.

&gt; &gt; +        RefPtr&lt;StyledElement&gt; styledElement;
&gt; &gt; +        if (current-&gt;isStyledElement() &amp;&amp; m_styledInlineElement &amp;&amp; current-&gt;hasTagName(m_styledInlineElement-&gt;tagQName()))
&gt; &gt; +            styledElement = static_cast&lt;StyledElement*&gt;(current);
&gt; 
&gt; Does |styledElement| need to be a RefPtr?

Yes, because extractInlineStyleToPushDown may remove &quot;current&quot; in which case it may be destroyed if we didn&apos;t kept a pointer.

&gt; &gt; Index: WebCore/editing/ApplyStyleCommand.h
&gt; &gt; -    void addInlineStyleIfNeeded(CSSMutableStyleDeclaration*, Node* start, Node* end);
&gt; &gt; +    void addInlineStyleIfNeeded(CSSMutableStyleDeclaration*, Node* start, Node* end, bool shouldAddStyledElement = true);
&gt; 
&gt; Can we use an enum instead of a bool?

Fixed.

&gt; Can you also add a test for anchors with inline styles.

Good thing we talked about this.  There were a couple of bugs revealed by new test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269496</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-25 14:15:47 -0700</bug_when>
    <thetext>Committed r66040: &lt;http://trac.webkit.org/changeset/66040&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65356</attachid>
            <date>2010-08-24 18:55:11 -0700</date>
            <delta_ts>2010-08-25 13:33:25 -0700</delta_ts>
            <desc>initial patch</desc>
            <filename>bug-30836-20100824185510.patch</filename>
            <type>text/plain</type>
            <size>32514</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTk2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTAtMDgtMjQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Jl
YXRpbmcgYSBsaW5rIHdoZW4gc2VsZWN0aW5nIG11bHRpcGxlIG5vZGVzIGNyZWF0ZXMgbXVsdGlw
bGUgbGlua3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMwODM2CisKKyAgICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2VkIGJ5IGFwcGx5SW5saW5lU3R5bGVU
b1JhbmdlIGNhbGxpbmcgYWRkSW5saW5lU3R5bGVJZk5lZWRlZAorICAgICAgICBvbiBlYWNoIGlu
bGluZSBlbGVtZW50LiBNb2RpZmllZCBhcHBseUlubGluZVN0eWxlVG9SYW5nZSB0byBjYWxsIGFk
ZElubGluZVN0eWxlSWZOZWVkZWQKKyAgICAgICAgb25jZSBmb3IgYWxsIGlubGluZSBlbGVtZW50
cyB3aXRoIHRoZSBzYW1lIHN0eWxlIGRpZmZlcmVuY2UuCisKKyAgICAgICAgQmVjYXVzZSB0aGlz
IGltcGxpZXMgdGhhdCBhbmNob3IgZWxlbWVudCBtYXkgd3JhcCBvdGhlciBpbmxpbmUgZWxlbWVu
dHMgd2hlbiBhZGRlZCwKKyAgICAgICAgbW9kaWZpZWQgcHVzaERvd25JbmxpbmVTdHlsZUFyb3Vu
ZE5vZGUgdG8gcHVzaCBkb3duIHN0eWxlZCBlbGVtZW50cy4KKworICAgICAgICBSZW1vdmVkIHB1
c2hQYXJ0aWFsbHlTZWxlY3RlZEFuY2hvckVsZW1lbnRzRG93biBmcm9tIENvbXBvc2l0ZUVkaXRD
b21tYW5kIHNpbmNlCisgICAgICAgIEFwcGx5U3R5bGVDb21tYW5kIG5vdyBjb3JyZWN0bHkgcHVz
aGVzIGRvd24gYW5jaG9ycyBhdCB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2YgdGhlIHNlbGVjdGlv
bi4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS1saW5rLmh0bWwK
KworICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVDaGFuZ2U6Om9wZXJhdG9yPT0pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQ2hhbmdlOjpvcGVyYXRvciE9KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvUmFuZ2UpOiBXcmFwcyBpbmxpbmUgZWxl
bWVudHMgd2l0aAorICAgICAgICB0aGUgc2FtZSBzdHlsZSBkaWZmZXJlbmNlIGJ5IG9uZSBlbGVt
ZW50IGluc3RlYWQgb2Ygd3JhcHBpbmcgZWFjaCBlbGVtZW50IHNlcGFyYXRlbHkuCisgICAgICAg
IChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6ZXh0cmFjdElubGluZVN0eWxlVG9QdXNoRG93
bik6IEV4dHJhY3RzIHN0eWxlZCBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHls
ZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGVUb1B1c2hEb3duKTogQXZvaWRzIGFkZGluZyBzdHls
ZWQgZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93
bklubGluZVN0eWxlQXJvdW5kTm9kZSk6IFB1c2hlcyBkb3duIHN0eWxlZCBlbGVtZW50LgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnN1cnJvdW5kTm9kZVJhbmdlV2l0aEVs
ZW1lbnQpOiBObyBsb25nZXIgY2hlY2tzIGlubGluZS1uZXNzLgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlTdHlsZUNvbW1hbmQ6OmFkZElubGluZVN0eWxlSWZOZWVkZWQpOiBBZGRzIHN0eWxlIGV2
ZW4gd2hlbiBtX3JlbW92ZU9ubHkuCisgICAgICAgIENhbGxlcnMgc2hvdWxkIHNldCBzaG91bGRB
ZGRTdHlsZWRFbGVtZW50ID0gZmFsc2UgdG8gYXZvaWQgYWRkaW5nIHN0eWxlZCBlbGVtZW50Lgor
ICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDogUmVtb3ZlZCBwdXNoUGFydGlhbGx5U2VsZWN0ZWRB
bmNob3JFbGVtZW50c0Rvd24uCisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5oOiBSZW1vdmVkIHB1c2hQYXJ0aWFsbHlTZWxlY3RlZEFuY2hvckVsZW1lbnRzRG93bi4KKyAg
ICAgICAgKiBlZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyZWF0ZUxpbmtDb21tYW5kOjpkb0FwcGx5KTogdXNlZCB0byBjYWxsIHB1c2hQYXJ0aWFsbHlT
ZWxlY3RlZEFuY2hvckVsZW1lbnRzRG93bi4KKyAgICAgICAgKiBlZGl0aW5nL1VubGlua0NvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5saW5rQ29tbWFuZDo6ZG9BcHBseSk6IFVzZWQg
dG8gY2FsbCBwdXNoUGFydGlhbGx5U2VsZWN0ZWRBbmNob3JFbGVtZW50c0Rvd24uCisKIDIwMTAt
MDgtMjMgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA2NTkwNSkKKysrIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0
eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDIzIEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgZm9udEZhY2UoKSB7IHJldHVybiBtX2FwcGx5Rm9udEZhY2U7IH0KICAgICBT
dHJpbmcgZm9udFNpemUoKSB7IHJldHVybiBtX2FwcGx5Rm9udFNpemU7IH0KIAorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTdHlsZUNoYW5nZSYgb3RoZXIpCisgICAgeworICAgICAgICByZXR1
cm4gbV9jc3NTdHlsZSA9PSBvdGhlci5tX2Nzc1N0eWxlCisgICAgICAgICAgICAmJiBtX2FwcGx5
Qm9sZCA9PSBvdGhlci5tX2FwcGx5Qm9sZAorICAgICAgICAgICAgJiYgbV9hcHBseUl0YWxpYyA9
PSBvdGhlci5tX2FwcGx5SXRhbGljCisgICAgICAgICAgICAmJiBtX2FwcGx5VW5kZXJsaW5lID09
IG90aGVyLm1fYXBwbHlVbmRlcmxpbmUKKyAgICAgICAgICAgICYmIG1fYXBwbHlMaW5lVGhyb3Vn
aCA9PSBvdGhlci5tX2FwcGx5TGluZVRocm91Z2gKKyAgICAgICAgICAgICYmIG1fYXBwbHlTdWJz
Y3JpcHQgPT0gb3RoZXIubV9hcHBseVN1YnNjcmlwdAorICAgICAgICAgICAgJiYgbV9hcHBseVN1
cGVyc2NyaXB0ID09IG90aGVyLm1fYXBwbHlTdXBlcnNjcmlwdAorICAgICAgICAgICAgJiYgbV9h
cHBseUZvbnRDb2xvciA9PSBvdGhlci5tX2FwcGx5Rm9udENvbG9yCisgICAgICAgICAgICAmJiBt
X2FwcGx5Rm9udEZhY2UgPT0gb3RoZXIubV9hcHBseUZvbnRGYWNlCisgICAgICAgICAgICAmJiBt
X2FwcGx5Rm9udFNpemUgPT0gb3RoZXIubV9hcHBseUZvbnRTaXplOworICAgIH0KKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgU3R5bGVDaGFuZ2UmIG90aGVyKQorICAgIHsKKyAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KIHByaXZhdGU6CiAgICAgdm9pZCBpbml0KFBh
c3NSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4sIGNvbnN0IFBvc2l0aW9uJik7CiAgICAgdm9p
ZCByZWNvbmNpbGVUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMoQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24qKTsKQEAgLTExMDMsMTQgKzExMjAsMTkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6
YXBwbHlJbmxpbmVTdHlsZQogICAgICAgICAgICAgTm9kZSogcnVuU3RhcnQgPSBub2RlOwogICAg
ICAgICAgICAgLy8gRmluZCB0aGUgZW5kIG9mIHRoZSBydW4uCiAgICAgICAgICAgICBOb2RlKiBz
aWJsaW5nID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIHdoaWxlIChzaWJsaW5n
ICYmIHNpYmxpbmcgIT0gcGFzdEVuZE5vZGUgJiYgKCFzaWJsaW5nLT5pc0VsZW1lbnROb2RlKCkg
fHwgc2libGluZy0+aGFzVGFnTmFtZShiclRhZykpICYmICFpc0Jsb2NrKHNpYmxpbmcpKSB7Cisg
ICAgICAgICAgICBTdHlsZUNoYW5nZSBzdGFydENoYW5nZShzdHlsZSwgUG9zaXRpb24obm9kZSwg
MCkpOworICAgICAgICAgICAgd2hpbGUgKHNpYmxpbmcgJiYgc2libGluZyAhPSBwYXN0RW5kTm9k
ZSAmJiAhc2libGluZy0+Y29udGFpbnMocGFzdEVuZE5vZGUpKSB7CisgICAgICAgICAgICAgICAg
aWYgKGlzQmxvY2soc2libGluZykgJiYgIXNpYmxpbmctPmhhc1RhZ05hbWUoYnJUYWcpKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoU3R5bGVDaGFuZ2Uo
c3R5bGUsIFBvc2l0aW9uKHNpYmxpbmcsIDApKSAhPSBzdGFydENoYW5nZSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbm9kZSA9IHNpYmxpbmc7CiAgICAgICAg
ICAgICAgICAgc2libGluZyA9IG5vZGUtPm5leHRTaWJsaW5nKCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAvLyBSZWNvbXB1dGUgbmV4dCwgc2luY2Ugbm9kZSBoYXMgY2hhbmdlZC4KLSAg
ICAgICAgICAgIG5leHQgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCk7CisgICAgICAgICAgICBu
ZXh0ID0gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZygpOwogICAgICAgICAgICAgLy8gQXBwbHkg
dGhlIHN0eWxlIHRvIHRoZSBydW4uCi0gICAgICAgICAgICBhZGRJbmxpbmVTdHlsZUlmTmVlZGVk
KHN0eWxlLCBydW5TdGFydCwgbm9kZSk7CisgICAgICAgICAgICBhZGRJbmxpbmVTdHlsZUlmTmVl
ZGVkKHN0eWxlLCBydW5TdGFydCwgbm9kZSwgIW1fcmVtb3ZlT25seSk7CiAgICAgICAgIH0KICAg
ICB9CiB9CkBAIC0xMzQ0LDcgKzEzNjYsNyBAQCBIVE1MRWxlbWVudCogQXBwbHlTdHlsZUNvbW1h
bmQ6OmhpZ2hlc3RBCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbj4gQXBwbHlTdHlsZUNvbW1hbmQ6OmV4dHJhY3RJbmxpbmVTdHls
ZVRvUHVzaERvd24oTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPGludD4mIHByb3BlcnRpZXMpCitQ
YXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBBcHBseVN0eWxlQ29tbWFuZDo6
ZXh0cmFjdElubGluZVN0eWxlVG9QdXNoRG93bihOb2RlKiBub2RlLCBib29sIGlzU3R5bGVkRWxl
bWVudCwgY29uc3QgVmVjdG9yPGludD4mIHByb3BlcnRpZXMpCiB7CiAgICAgQVNTRVJUKG5vZGUp
OwogICAgIEFTU0VSVChub2RlLT5pc0VsZW1lbnROb2RlKCkpOwpAQCAtMTM1MywxMyArMTM3NSwx
NyBAQCBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBBCiAgICAgaWYgKCFu
b2RlLT5pc0hUTUxFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSFRNTEVsZW1l
bnQgKmVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCAqPihub2RlKTsKKyAgICBIVE1M
RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obm9kZSk7CiAgICAg
UmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IGVsZW1lbnQtPmlubGlu
ZVN0eWxlRGVjbCgpOworICAgIGlmIChpc1N0eWxlZEVsZW1lbnQpIHsKKyAgICAgICAgcmVtb3Zl
Tm9kZVByZXNlcnZpbmdDaGlsZHJlbihlbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIHN0eWxlLnJl
bGVhc2UoKTsKKyAgICB9CisKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIHN0eWxlID0gc3R5bGUtPmNvcHlQcm9wZXJ0aWVzSW5TZXQocHJvcGVydGllcy5kYXRhKCks
IHByb3BlcnRpZXMuc2l6ZSgpKTsKLQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVy
dGllcy5zaXplKCk7IGkrKykgewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHByb3BlcnR5ID0g
c3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1tpXSk7CiAgICAgICAgIGlmIChw
cm9wZXJ0eSkKQEAgLTE0MDgsNyArMTQzNCw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFw
cGx5SW5saW5lU3R5bGUKIAogICAgICAgICAgICAgICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+LCB1bmRlcmxpbmUsIChDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVVuZGVybGluZSkpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiwgbGluZVRocm91Z2gsIChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NW
YWx1ZUxpbmVUaHJvdWdoKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgCisKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh0ZXh0RGVjb3JhdGlvbk9mU3R5bGVBcHBsaWVkLT5oYXNWYWx1
ZSh1bmRlcmxpbmUuZ2V0KCkpICYmICF0ZXh0RGVjb3JhdGlvbk9mSW5saW5lU3R5bGUtPmhhc1Zh
bHVlKHVuZGVybGluZS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dERl
Y29yYXRpb25PZklubGluZVN0eWxlLT5hcHBlbmQodW5kZXJsaW5lLmdldCgpKTsKIApAQCAtMTQy
OSw3ICsxNDU1LDEwIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGUK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IGFkZElubGluZVN0eWxlSWZOZWVkZWQg
bWF5IG92ZXJyaWRlIHRoZSBzdHlsZSBvZiBub2RlCi0gICAgYWRkSW5saW5lU3R5bGVJZk5lZWRl
ZChzdHlsZSwgbm9kZSwgbm9kZSk7CisgICAgLy8gV2UgY2FuJ3Qgd3JhcCBub2RlIHdpdGggdGhl
IHN0eWxlZCBlbGVtZW50IGhlcmUgYmVjYXVzZSBuZXcgc3R5bGVkIGVsZW1lbnQgd2lsbCBuZXZl
ciBiZSByZW1vdmVkIGlmIHdlIGRpZC4KKyAgICAvLyBJZiB3ZSBtb2RpZmllZCB0aGUgY2hpbGQg
cG9pbnRlciBpbiBwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZSB0byBwb2ludCB0byBuZXcg
c3R5bGUgZWxlbWVudAorICAgIC8vIHRoZW4gd2UgZmFsbCBpbnRvIGFuIGluZmluaXRlIGxvb3Ag
d2hlcmUgd2Uga2VlcCByZW1vdmluZyBhbmQgYWRkaW5nIHN0eWxlZCBlbGVtZW50IHdyYXBwaW5n
IG5vZGUuCisgICAgYWRkSW5saW5lU3R5bGVJZk5lZWRlZChzdHlsZSwgbm9kZSwgbm9kZSwgZmFs
c2UpOwogfQogCiB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0eWxlQXJv
dW5kTm9kZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIE5vZGUqIHRhcmdldE5v
ZGUpCkBAIC0xNDUwLDIxICsxNDc5LDM2IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hE
b3duSW5saW5lU3QKICAgICAgICAgQVNTRVJUKGN1cnJlbnQtPmlzSFRNTEVsZW1lbnQoKSk7CiAg
ICAgICAgIEFTU0VSVChjdXJyZW50LT5jb250YWlucyh0YXJnZXROb2RlKSk7CiAgICAgICAgIE5v
ZGUqIGNoaWxkID0gY3VycmVudC0+Zmlyc3RDaGlsZCgpOwotICAgICAgICBSZWZQdHI8Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlVG9QdXNoRG93biA9IGV4dHJhY3RJbmxpbmVTdHls
ZVRvUHVzaERvd24oY3VycmVudCwgcHJvcGVydGllcyk7CisgICAgICAgIE5vZGUqIGxhc3RDaGls
ZCA9IGN1cnJlbnQtPmxhc3RDaGlsZCgpOworICAgICAgICBSZWZQdHI8U3R5bGVkRWxlbWVudD4g
c3R5bGVkRWxlbWVudDsKKyAgICAgICAgaWYgKGN1cnJlbnQtPmlzU3R5bGVkRWxlbWVudCgpICYm
IG1fc3R5bGVkSW5saW5lRWxlbWVudCAmJiBjdXJyZW50LT5oYXNUYWdOYW1lKG1fc3R5bGVkSW5s
aW5lRWxlbWVudC0+dGFnUU5hbWUoKSkpCisgICAgICAgICAgICBzdHlsZWRFbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGN1cnJlbnQpOworICAgICAgICBSZWZQdHI8Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlVG9QdXNoRG93biA9IGV4dHJhY3RJbmxpbmVTdHls
ZVRvUHVzaERvd24oY3VycmVudCwgc3R5bGVkRWxlbWVudCwgcHJvcGVydGllcyk7CiAKICAgICAg
ICAgLy8gVGhlIGlubmVyIGxvb3Agd2lsbCBnbyB0aHJvdWdoIGNoaWxkcmVuIG9uIGVhY2ggbGV2
ZWwKICAgICAgICAgd2hpbGUgKGNoaWxkKSB7CiAgICAgICAgICAgICBOb2RlKiBuZXh0Q2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKIAogICAgICAgICAgICAgLy8gQXBwbHkgdGV4dCBkZWNv
cmF0aW9uIHRvIGFsbCBub2RlcyBjb250YWluaW5nIHRhcmdldE5vZGUgYW5kIHRoZWlyIHNpYmxp
bmdzIGJ1dCBOT1QgdG8gdGFyZ2V0Tm9kZQotICAgICAgICAgICAgaWYgKGNoaWxkICE9IHRhcmdl
dE5vZGUpCi0gICAgICAgICAgICAgICAgYXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24oY2hpbGQs
IHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7CisgICAgICAgICAgICBpZiAoY2hpbGQgIT0gdGFyZ2V0
Tm9kZSkgeworICAgICAgICAgICAgICAgIGlmIChzdHlsZWRFbGVtZW50KSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIElmIGNoaWxkIGhhcyBjaGlsZHJlbiwgd3JhcCBjaGlsZHJlbiBvZiBjaGls
ZCBieSBhIGNsb25lIG9mIHRoZSBzdHlsZWQgZWxlbWVudCB0byBhdm9pZCBpbmZpbml0ZSBsb29w
LgorICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHdyYXAgdGhlIGNoaWxkIGJ5IHRo
ZSBzdHlsZWQgZWxlbWVudCwgYW5kIHdlIHdvbid0IGZhbGwgaW50byBhbiBpbmZpbml0ZSBsb29w
LgorICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPmZpcnN0Q2hpbGQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQoY2hpbGQtPmZpcnN0
Q2hpbGQoKSwgY2hpbGQtPmxhc3RDaGlsZCgpLCBzdHlsZWRFbGVtZW50LT5jbG9uZUVsZW1lbnRX
aXRob3V0Q2hpbGRyZW4oKSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQoY2hpbGQsIGNoaWxkLCBz
dHlsZWRFbGVtZW50LT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKSk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hE
b3duKGNoaWxkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAvLyBXZSBmb3VuZCB0aGUgbmV4dCBub2RlIGZvciB0aGUgb3V0ZXIgbG9vcCAoY29u
dGFpbnMgdGFyZ2V0Tm9kZSkKICAgICAgICAgICAgIC8vIFdoZW4gcmVhY2hlZCB0YXJnZXROb2Rl
LCBzdG9wIHRoZSBvdXRlciBsb29wIHVwb24gdGhlIGNvbXBsZXRpb24gb2YgdGhlIGN1cnJlbnQg
aW5uZXIgbG9vcAogICAgICAgICAgICAgaWYgKGNoaWxkID09IHRhcmdldE5vZGUgfHwgY2hpbGQt
PmNvbnRhaW5zKHRhcmdldE5vZGUpKQogICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjaGlsZDsK
IAorICAgICAgICAgICAgaWYgKGNoaWxkID09IGxhc3RDaGlsZCB8fCBjaGlsZC0+Y29udGFpbnMo
bGFzdENoaWxkKSkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNoaWxkID0g
bmV4dENoaWxkOwogICAgICAgICB9CiAgICAgfQpAQCAtMTczNywxMSArMTc4MSw5IEBAIHZvaWQg
QXBwbHlTdHlsZUNvbW1hbmQ6OnN1cnJvdW5kTm9kZVJhbmcKICAgICAKICAgICBOb2RlKiBub2Rl
ID0gc3RhcnROb2RlOwogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIE5vZGUqIG5leHQgPSBub2Rl
LT50cmF2ZXJzZU5leHROb2RlKCk7Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZE5vZGVDb3VudCgp
ID09IDAgJiYgbm9kZS0+cmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5pc0lubGluZSgp
KSB7Ci0gICAgICAgICAgICByZW1vdmVOb2RlKG5vZGUpOwotICAgICAgICAgICAgYXBwZW5kTm9k
ZShub2RlLCBlbGVtZW50KTsKLSAgICAgICAgfQorICAgICAgICBOb2RlKiBuZXh0ID0gbm9kZS0+
bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgcmVtb3ZlTm9kZShub2RlKTsKKyAgICAgICAgYXBwZW5k
Tm9kZShub2RlLCBlbGVtZW50KTsKICAgICAgICAgaWYgKG5vZGUgPT0gZW5kTm9kZSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBub2RlID0gbmV4dDsKQEAgLTE3NzksMTEgKzE4MjEsOCBA
QCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphZGRCbG9ja1N0eWxlKGNvCiAgICAgc2V0Tm9kZUF0
dHJpYnV0ZShibG9jaywgc3R5bGVBdHRyLCBjc3NUZXh0KTsKIH0KIAotdm9pZCBBcHBseVN0eWxl
Q29tbWFuZDo6YWRkSW5saW5lU3R5bGVJZk5lZWRlZChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biAqc3R5bGUsIE5vZGUgKnN0YXJ0Tm9kZSwgTm9kZSAqZW5kTm9kZSkKK3ZvaWQgQXBwbHlTdHls
ZUNvbW1hbmQ6OmFkZElubGluZVN0eWxlSWZOZWVkZWQoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24gKnN0eWxlLCBOb2RlICpzdGFydE5vZGUsIE5vZGUgKmVuZE5vZGUsIGJvb2wgc2hvdWxkQWRk
U3R5bGVkRWxlbWVudCkKIHsKLSAgICBpZiAobV9yZW1vdmVPbmx5KQotICAgICAgICByZXR1cm47
Ci0KICAgICBTdHlsZUNoYW5nZSBzdHlsZUNoYW5nZShzdHlsZSwgUG9zaXRpb24oc3RhcnROb2Rl
LCAwKSk7CiAKICAgICAvLyBGb250IHRhZ3MgbmVlZCB0byBnbyBvdXRzaWRlIG9mIENTUyBzbyB0
aGF0IENTUyBmb250IHNpemVzIG92ZXJyaWRlIGxlYWdjeSBmb250IHNpemVzLgpAQCAtMTgyMyw3
ICsxODYyLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YWRkSW5saW5lU3R5bGVJZgogICAg
IGVsc2UgaWYgKHN0eWxlQ2hhbmdlLmFwcGx5U3VwZXJzY3JpcHQoKSkKICAgICAgICAgc3Vycm91
bmROb2RlUmFuZ2VXaXRoRWxlbWVudChzdGFydE5vZGUsIGVuZE5vZGUsIGNyZWF0ZUhUTUxFbGVt
ZW50KGRvY3VtZW50KCksIHN1cFRhZykpOwogCi0gICAgaWYgKG1fc3R5bGVkSW5saW5lRWxlbWVu
dCkKKyAgICBpZiAobV9zdHlsZWRJbmxpbmVFbGVtZW50ICYmIHNob3VsZEFkZFN0eWxlZEVsZW1l
bnQpCiAgICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQoc3RhcnROb2RlLCBlbmRO
b2RlLCBtX3N0eWxlZElubGluZUVsZW1lbnQtPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigp
KTsKIH0KIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHJldmlzaW9uIDY1
OTA1KQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHJlbW92ZUhUTUxCaWRpRW1i
ZWRkaW5nU3R5bGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBIVE1MRWxlbWVudCosIElu
bGluZVN0eWxlUmVtb3ZhbE1vZGUgPSBSZW1vdmVBdHRyaWJ1dGVzQW5kRWxlbWVudHMpOwogICAg
IGJvb2wgcmVtb3ZlQ1NTU3R5bGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBIVE1MRWxl
bWVudCosIElubGluZVN0eWxlUmVtb3ZhbE1vZGUgPSBSZW1vdmVBdHRyaWJ1dGVzQW5kRWxlbWVu
dHMpOwogICAgIEhUTUxFbGVtZW50KiBoaWdoZXN0QW5jZXN0b3JXaXRoQ29uZmxpY3RpbmdJbmxp
bmVTdHlsZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIE5vZGUqKTsKLSAgICBQYXNzUmVm
UHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBleHRyYWN0SW5saW5lU3R5bGVUb1B1c2hE
b3duKE5vZGUqLCBjb25zdCBWZWN0b3I8aW50PiYpOworICAgIFBhc3NSZWZQdHI8Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24+IGV4dHJhY3RJbmxpbmVTdHlsZVRvUHVzaERvd24oTm9kZSosIGJv
b2wgaXNTdHlsZWRFbGVtZW50LCBjb25zdCBWZWN0b3I8aW50PiYpOwogICAgIHZvaWQgYXBwbHlJ
bmxpbmVTdHlsZVRvUHVzaERvd24oTm9kZSosIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uICpz
dHlsZSk7CiAgICAgdm9pZCBwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZShDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbiosIE5vZGUqKTsKICAgICB2b2lkIHJlbW92ZUlubGluZVN0eWxlKFBh
c3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+LCBjb25zdCBQb3NpdGlvbiYgc3Rh
cnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgYXBwbHlJbmxpbmVTdHlsZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiopOwogICAg
IHZvaWQgYXBwbHlJbmxpbmVTdHlsZVRvUmFuZ2UoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24q
LCBjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwogICAgIHZvaWQg
YWRkQmxvY2tTdHlsZShjb25zdCBTdHlsZUNoYW5nZSYsIEhUTUxFbGVtZW50Kik7Ci0gICAgdm9p
ZCBhZGRJbmxpbmVTdHlsZUlmTmVlZGVkKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgTm9k
ZSogc3RhcnQsIE5vZGUqIGVuZCk7CisgICAgdm9pZCBhZGRJbmxpbmVTdHlsZUlmTmVlZGVkKENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgTm9kZSogc3RhcnQsIE5vZGUqIGVuZCwgYm9vbCBz
aG91bGRBZGRTdHlsZWRFbGVtZW50ID0gdHJ1ZSk7CiAgICAgdm9pZCBzcGxpdFRleHRBdFN0YXJ0
KGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCk7CiAgICAgdm9pZCBz
cGxpdFRleHRBdEVuZChjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQp
OwogICAgIHZvaWQgc3BsaXRUZXh0RWxlbWVudEF0U3RhcnQoY29uc3QgUG9zaXRpb24mIHN0YXJ0
LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcAkocmV2aXNpb24gNjU5MDUpCisrKyBXZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzAsMzAgKzczMCw2IEBAIHZv
aWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnB1c2hBbmNob3JFbGUKICAgICAgICAgcmVtb3ZlTm9k
ZVByZXNlcnZpbmdDaGlsZHJlbihhbmNob3JOb2RlKTsKIH0KIAotLy8gV2UgbXVzdCBwdXNoIHBh
cnRpYWxseSBzZWxlY3RlZCBhbmNob3JzIGRvd24gYmVmb3JlIGNyZWF0aW5nIG9yIHJlbW92aW5n
Ci0vLyBsaW5rcyBmcm9tIGEgc2VsZWN0aW9uIHRvIGNyZWF0ZSBmdWxseSBzZWxlY3RlZCBjaHVu
a3MgdGhhdCBjYW4gYmUgcmVtb3ZlZC4KLS8vIEFwcGx5U3R5bGVDb21tYW5kIGRvZXNuJ3QgZG8g
dGhpcyBmb3IgdXMgYmVjYXVzZSBzdHlsZXMgY2FuIGJlIG5lc3RlZC4KLS8vIEFuY2hvcnMgY2Fu
bm90IGJlIG5lc3RlZC4KLXZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnB1c2hQYXJ0aWFsbHlT
ZWxlY3RlZEFuY2hvckVsZW1lbnRzRG93bigpCi17Ci0gICAgVmlzaWJsZVNlbGVjdGlvbiBvcmln
aW5hbFNlbGVjdGlvbiA9IGVuZGluZ1NlbGVjdGlvbigpOwotICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlU3RhcnQob3JpZ2luYWxTZWxlY3Rpb24uc3RhcnQoKSk7Ci0gICAgVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVFbmQob3JpZ2luYWxTZWxlY3Rpb24uZW5kKCkpOwotICAgIAotICAgIE5vZGUq
IHN0YXJ0QW5jaG9yID0gZW5jbG9zaW5nQW5jaG9yRWxlbWVudChvcmlnaW5hbFNlbGVjdGlvbi5z
dGFydCgpKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZlN0YXJ0QW5jaG9yKFBvc2l0aW9u
KHN0YXJ0QW5jaG9yLCAwKSk7Ci0gICAgaWYgKHN0YXJ0QW5jaG9yICYmIHN0YXJ0T2ZTdGFydEFu
Y2hvciAhPSB2aXNpYmxlU3RhcnQpCi0gICAgICAgIHB1c2hBbmNob3JFbGVtZW50RG93bihzdGFy
dEFuY2hvcik7Ci0KLSAgICBOb2RlKiBlbmRBbmNob3IgPSBlbmNsb3NpbmdBbmNob3JFbGVtZW50
KG9yaWdpbmFsU2VsZWN0aW9uLmVuZCgpKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kT2ZFbmRB
bmNob3IoUG9zaXRpb24oZW5kQW5jaG9yLCAwKSk7Ci0gICAgaWYgKGVuZEFuY2hvciAmJiBlbmRP
ZkVuZEFuY2hvciAhPSB2aXNpYmxlRW5kKQotICAgICAgICBwdXNoQW5jaG9yRWxlbWVudERvd24o
ZW5kQW5jaG9yKTsKLQotICAgIEFTU0VSVChvcmlnaW5hbFNlbGVjdGlvbi5zdGFydCgpLm5vZGUo
KS0+aW5Eb2N1bWVudCgpICYmIG9yaWdpbmFsU2VsZWN0aW9uLmVuZCgpLm5vZGUoKS0+aW5Eb2N1
bWVudCgpKTsKLSAgICBzZXRFbmRpbmdTZWxlY3Rpb24ob3JpZ2luYWxTZWxlY3Rpb24pOwotfQot
CiAvLyBDbG9uZSB0aGUgcGFyYWdyYXBoIGJldHdlZW4gc3RhcnQgYW5kIGVuZCB1bmRlciBibG9j
a0VsZW1lbnQsCiAvLyBwcmVzZXJ2aW5nIHRoZSBoaWVyYXJjaHkgdXAgdG8gb3V0ZXJOb2RlLiAK
IApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJKHJldmlzaW9uIDY1
OTA1KQorKysgV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk5LDcgKzk5LDYgQEAgcHJvdGVjdGVkOgogICAgIFBhc3NSZWZQdHI8Tm9kZT4g
bW92ZVBhcmFncmFwaENvbnRlbnRzVG9OZXdCbG9ja0lmTmVjZXNzYXJ5KGNvbnN0IFBvc2l0aW9u
Jik7CiAgICAgCiAgICAgdm9pZCBwdXNoQW5jaG9yRWxlbWVudERvd24oTm9kZSopOwotICAgIHZv
aWQgcHVzaFBhcnRpYWxseVNlbGVjdGVkQW5jaG9yRWxlbWVudHNEb3duKCk7CiAgICAgCiAgICAg
dm9pZCBtb3ZlUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24g
PSBmYWxzZSwgYm9vbCBwcmVzZXJ2ZVN0eWxlID0gdHJ1ZSk7CiAgICAgdm9pZCBtb3ZlUGFyYWdy
YXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25z
dCBWaXNpYmxlUG9zaXRpb24mLCBib29sIHByZXNlcnZlU2VsZWN0aW9uID0gZmFsc2UsIGJvb2wg
cHJlc2VydmVTdHlsZSA9IHRydWUpOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0NyZWF0ZUxpbmtD
b21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQ3JlYXRlTGlua0NvbW1h
bmQuY3BwCShyZXZpc2lvbiA2NTkwNSkKKysrIFdlYkNvcmUvZWRpdGluZy9DcmVhdGVMaW5rQ29t
bWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEwICs0Niw5IEBAIHZvaWQgQ3JlYXRlTGlu
a0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIFJlZlB0cjxIVE1MQW5jaG9yRWxlbWVudD4gYW5jaG9y
RWxlbWVudCA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgYW5j
aG9yRWxlbWVudC0+c2V0SHJlZihtX3VybCk7CiAgICAgCi0gICAgaWYgKGVuZGluZ1NlbGVjdGlv
bigpLmlzUmFuZ2UoKSkgewotICAgICAgICBwdXNoUGFydGlhbGx5U2VsZWN0ZWRBbmNob3JFbGVt
ZW50c0Rvd24oKTsKKyAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkuaXNSYW5nZSgpKQogICAgICAg
ICBhcHBseVN0eWxlZEVsZW1lbnQoYW5jaG9yRWxlbWVudC5nZXQoKSk7Ci0gICAgfSBlbHNlIHsK
KyAgICBlbHNlIHsKICAgICAgICAgaW5zZXJ0Tm9kZUF0KGFuY2hvckVsZW1lbnQuZ2V0KCksIGVu
ZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOwogICAgICAgICBSZWZQdHI8VGV4dD4gdGV4dE5vZGUg
PSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgbV91cmwpOwogICAgICAgICBhcHBlbmROb2RlKHRl
eHROb2RlLmdldCgpLCBhbmNob3JFbGVtZW50LmdldCgpKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGlu
Zy9VbmxpbmtDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvVW5saW5r
Q29tbWFuZC5jcHAJKHJldmlzaW9uIDY1OTA1KQorKysgV2ViQ29yZS9lZGl0aW5nL1VubGlua0Nv
bW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw2IEBAIHZvaWQgVW5saW5rQ29t
bWFuZDo6ZG9BcHBseSgpCiAgICAgLy8gRklYTUU6IElmIGEgY2FyZXQgaXMgaW5zaWRlIGEgbGlu
aywgd2Ugc2hvdWxkIHJlbW92ZSBpdCwgYnV0IGN1cnJlbnRseSB3ZSBkb24ndC4KICAgICBpZiAo
IWVuZGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAK
LSAgICBwdXNoUGFydGlhbGx5U2VsZWN0ZWRBbmNob3JFbGVtZW50c0Rvd24oKTsKIAogICAgIHJl
bW92ZVN0eWxlZEVsZW1lbnQoSFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKSk7
CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTk2MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEwLTA4LTI0ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENyZWF0aW5nIGEgbGluayB3aGVuIHNlbGVjdGluZyBtdWx0aXBsZSBub2Rl
cyBjcmVhdGVzIG11bHRpcGxlIGxpbmtzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMDgzNgorCisgICAgICAgIEFkZGVkIGEgdGVzdCB0byBlbnN1cmUg
V2ViS2l0IGNyZWF0ZXMgc2luZ2xlIGFuY2hvciBlbGVtZW50IG9uIGV4ZWNDb21tYW5kKCdjcmVh
dGVMaW5rJykgaWYgcG9zc2libGUuCisgICAgICAgIEFsc28gcmViYXNlbGluZWQgc2V2ZXJhbCB0
ZXN0cyB0byBtYXRjaCBuZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21t
YW5kL2NyZWF0ZUxpbmstZXhwZWN0ZWQudHh0OiBNZXJnZWQgc29tZSBhbmNob3IgZWxlbWVudHMu
CisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9zY3JpcHQtdGVzdHMvdG9nZ2xlLWxpbmsu
anM6IEFkZGVkLgorICAgICAgICAodGVzdFNpbmdsZVRvZ2dsZSk6CisgICAgICAgIChzZWxlY3RB
bGwpOgorICAgICAgICAoc2VsZWN0Rmlyc3RUd29Xb3Jkcyk6CisgICAgICAgIChzZWxlY3RMYXN0
V29yZCk6CisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9zY3JpcHQtdGVzdHMvdG9nZ2xl
LXN0eWxlLTMuanM6IGkgZWxlbWVudHMgYXJlIG1lcmdlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4
ZWNDb21tYW5kL3RvZ2dsZS1zdHlsZS0zLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICog
ZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtbGluay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvdG9nZ2xlLWxpbmsuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9leGVjQ29tbWFuZC91bmxpbmstZXhwZWN0ZWQudHh0OiBNZXJnZWQgc29t
ZSBhbmNob3IgZWxlbWVudHMuCisKIDIwMTAtMDgtMjQgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvY3JlYXRlTGluay1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9jcmVhdGVMaW5rLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gNjU5MDUpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21t
YW5kL2NyZWF0ZUxpbmstZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw3
IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmcKIEVESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hv
dWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAg
b2YgI3RleHQgPiBBID4gRElWID4gTEkgPiBPTCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
IDEwIG9mICN0ZXh0ID4gQSA+IERJViA+IExJID4gT0wgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpG
QUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5n
ZSBmcm9tIDQgb2YgI3RleHQgPiBBID4gRElWID4gTEkgPiBPTCA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDE0IG9mICN0ZXh0ID4gQSA+IERJViA+IExJID4gT0wgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IEEgPiBESVYgPiBM
SSA+IE9MID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTAgb2YgI3RleHQgPiBBID4gRElW
ID4gTEkgPiBPTCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9u
QWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENo
YW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkRW5kRWRpdGluZ0luRE9N
UmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IExJID4gT0wgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAzIG9mIERJViA+IExJID4gT0wgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudApAQCAt
NTksNCArNTgsNCBAQCBpbm5lckhUTUwgb2YgZWRpdGFibGUgcmVnaW9ucyBhZnRlciB0aGUgCiA8
YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIj5UaGlzIHBhcmFncmFwaCBzdGFydHMgdW5s
aW5rZWQuIFRoZSBlbnRpcmUgcGFyYWdyYXBoIHNob3VsZCBlbmQgdXAgYmVpbmcgYSBsaW5rIHRv
IGdvb2dsZS5jb20uPC9hPgogPGEgaHJlZj0iaHR0cDovL3d3dy5hcHBsZS5jb20vIj5UaGlzPC9h
PjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPiBwYXJhZ3JhcGg8L2E+PGEgaHJlZj0i
aHR0cDovL3d3dy5hcHBsZS5jb20vIj4gc3RhcnRzIG91dCBhcyBhIGxpbmsgdG8gYXBwbGUuY29t
LiBUaGUgc2Vjb25kIHdvcmQgaW4gdGhlIHBhcmFncmFwaCBzaG91bGQgZW5kIHVwIGJlaW5nIGEg
bGluayB0byBnb29nbGUuY29tLjwvYT4KIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBwbGUuY29tLyI+
VGhpczwvYT48YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIj4gcGFyYWdyYXBoPC9hPjxh
IGhyZWY9Imh0dHA6Ly93d3cuYXBwbGUuY29tLyI+IHN0YXJ0cyBvdXQgYXMgYSBsaW5rIHRvIGFw
cGxlLmNvbS4gVGhlIHNlY29uZCB3b3JkIGluIHRoZSBwYXJhZ3JhcGggc2hvdWxkIGVuZCB1cCBi
ZWluZyBhIGxpbmsgdG8gZ29vZ2xlLmNvbS48L2E+Ci08cD48YSBocmVmPSJodHRwOi8vd3d3Lmdv
b2dsZS5jb20vIj5UaGlzIDwvYT48aT48YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIj5l
ZGl0YWJsZSByZWdpb248L2E+PC9pPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPiBj
b250YWlucyBsaXN0cywgdGFibGVzLCBzdHlsZWQgdGV4dCwgYW5kIGltYWdlcy4gVGhlIGVudGly
ZSByZWdpb24gc2hvdWxkIGVuZCB1cCBiZWluZyBhIGxpbmsgdG8gZ29vZ2xlLmNvbS48L2E+PC9w
PiA8dWw+IDxsaT48YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIj5JdGVtIDE8L2E+PC9s
aT4gPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPkl0ZW0gMjwvYT48L2xpPiA8
L3VsPiA8dGFibGUgYm9yZGVyPSIxIj48dGJvZHk+PHRyPjx0ZD48YSBocmVmPSJodHRwOi8vd3d3
Lmdvb2dsZS5jb20vIj4xPC9hPjwvdGQ+PHRkPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNv
bS8iPjI8L2E+PC90ZD48dGQ+PGEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyI+MzwvYT48
L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPiA8YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20v
Ij48YnI+IFRoaXMgPC9hPjxiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPmxpbmU8
L2E+PC9iPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPiBjb250YWlucyA8aW1nIHNy
Yz0iLi4vcmVzb3VyY2VzL2FiZS5wbmciPiBhbiBpbWFnZS4gPC9hPgorPHA+PGEgaHJlZj0iaHR0
cDovL3d3dy5nb29nbGUuY29tLyI+VGhpcyA8aT5lZGl0YWJsZSByZWdpb248L2k+IGNvbnRhaW5z
IGxpc3RzLCB0YWJsZXMsIHN0eWxlZCB0ZXh0LCBhbmQgaW1hZ2VzLiBUaGUgZW50aXJlIHJlZ2lv
biBzaG91bGQgZW5kIHVwIGJlaW5nIGEgbGluayB0byBnb29nbGUuY29tLjwvYT48L3A+IDx1bD4g
PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPkl0ZW0gMTwvYT48L2xpPiA8bGk+
PGEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyI+SXRlbSAyPC9hPjwvbGk+IDwvdWw+IDx0
YWJsZSBib3JkZXI9IjEiPjx0Ym9keT48dHI+PHRkPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xl
LmNvbS8iPjE8L2E+PC90ZD48dGQ+PGEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyI+Mjwv
YT48L3RkPjx0ZD48YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIj4zPC9hPjwvdGQ+PC90
cj48L3Rib2R5PjwvdGFibGU+IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPjxicj4g
VGhpcyA8Yj5saW5lPC9iPiBjb250YWlucyA8aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FiZS5wbmci
PiBhbiBpbWFnZS4gPC9hPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC90
b2dnbGUtbGluay1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC90b2dnbGUtbGluay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS1saW5rLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBAQAorVGVzdCB0byBtYWtlIHN1cmUgd2UgcmVtb3Zl
IHNwYW4gdGFncyB3aXRoIG5vIGF0dHJpYnV0ZXMgaWYgd2UgcmVtb3ZlZCB0aGUgbGFzdCBhdHRy
aWJ1dGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG9uZSBjcmVhdGVM
aW5rIChodHRwOi8vd2Via2l0Lm9yZy8pIGNvbW1hbmQgY29udmVydGVkIGhlbGxvIDxiPndvcmxk
PC9iPiB0byA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPmhlbGxvIDxiPndvcmxkPC9iPjwv
YT4KK1BBU1Mgb25lIGNyZWF0ZUxpbmsgKGh0dHA6Ly93ZWJraXQub3JnLykgY29tbWFuZCBjb252
ZXJ0ZWQgPHU+aGVsbG8gd29ybGQ8L3U+IHRvIDx1PjxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3Jn
LyI+aGVsbG8gd29ybGQ8L2E+PC91PgorUEFTUyBvbmUgY3JlYXRlTGluayAoaHR0cDovL3dlYmtp
dC5vcmcvKSBjb21tYW5kIGNvbnZlcnRlZCBoZWxsbyA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJr
aXQub3JnLyI+d29ybGQ8L2E+IHRvIDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+aGVsbG8g
d29ybGQ8L2E+CitQQVNTIG9uZSBjcmVhdGVMaW5rIChodHRwOi8vd2Via2l0Lm9yZy8pIGNvbW1h
bmQgY29udmVydGVkIGhlbGxvIDxiPndvcmxkPC9iPiBXZWJLaXQgdG8gPGEgaHJlZj0iaHR0cDov
L3dlYmtpdC5vcmcvIj5oZWxsbyA8Yj53b3JsZDwvYj48L2E+IFdlYktpdAorUEFTUyBvbmUgY3Jl
YXRlTGluayAoaHR0cDovL3dlYmtpdC5vcmcvKSBjb21tYW5kIGNvbnZlcnRlZCA8YSBocmVmPSJo
dHRwOi8vdHJhYy53ZWJraXQub3JnLyI+aGVsbG8gPGI+d29ybGQ8L2I+PC9hPiBXZWJLaXQgdG8g
PGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbyA8Yj53b3JsZDwvYj48L2E+IFdlYktp
dAorUEFTUyBvbmUgY3JlYXRlTGluayAoaHR0cDovL3dlYmtpdC5vcmcvKSBjb21tYW5kIGNvbnZl
cnRlZCBoZWxsbyA8YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnLyI+PGI+d29ybGQ8L2I+
IFdlYktpdDwvYT4gdG8gPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbyA8Yj53b3Js
ZDwvYj48L2E+PGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8iPiBXZWJLaXQ8L2E+CitQ
QVNTIG9uZSBjcmVhdGVMaW5rIChodHRwOi8vd2Via2l0Lm9yZy8pIGNvbW1hbmQgY29udmVydGVk
IGhlbGxvIDxiPndvcmxkPC9iPiBXZWJLaXQgdG8gaGVsbG8gPGI+d29ybGQ8L2I+IDxhIGhyZWY9
Imh0dHA6Ly93ZWJraXQub3JnLyI+V2ViS2l0PC9hPgorUEFTUyBvbmUgY3JlYXRlTGluayAoaHR0
cDovL3dlYmtpdC5vcmcvKSBjb21tYW5kIGNvbnZlcnRlZCA8dT5oZWxsbyA8Yj53b3JsZDwvYj4g
V2ViS2l0PC91PiB0byA8dT5oZWxsbyA8Yj53b3JsZDwvYj4gPGEgaHJlZj0iaHR0cDovL3dlYmtp
dC5vcmcvIj5XZWJLaXQ8L2E+PC91PgorUEFTUyBvbmUgY3JlYXRlTGluayAoaHR0cDovL3dlYmtp
dC5vcmcvKSBjb21tYW5kIGNvbnZlcnRlZCA8YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3Jn
LyI+PGRpdj5oZWxsbzwvZGl2PjxkaXY+d29ybGQ8L2Rpdj48L2E+IHRvIDxkaXY+PGEgaHJlZj0i
aHR0cDovL3RyYWMud2Via2l0Lm9yZy8iPmhlbGxvPC9hPjwvZGl2PjxkaXY+PGEgaHJlZj0iaHR0
cDovL3dlYmtpdC5vcmcvIj53b3JsZDwvYT48L2Rpdj4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kL3RvZ2dsZS1saW5rLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC90b2dnbGUtbGluay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtbGluay5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy90b2dnbGUtbGluay5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvdG9nZ2xlLXN0eWxlLTMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvdG9nZ2xlLXN0eWxlLTMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA2NTkwNSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvdG9nZ2xlLXN0
eWxlLTMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIFBBU1Mgb25lIGJvbGQgY29tbWFu
ZCBjb252ZXJ0ZWQgaGVsbG88YiBpZD0idGVzdCI+d29ybGQ8L2I+IHRvIDxiPmhlbGxvPC9iPjxi
IGlkPSJ0ZXN0Ij53b3JsZDwvYj4KIFBBU1Mgb25lIGJvbGQgY29tbWFuZCBjb252ZXJ0ZWQgaGVs
bG88Yj48aT53b3JsZDwvaT48L2I+IHRvIDxiPmhlbGxvPGk+d29ybGQ8L2k+PC9iPgotUEFTUyBv
bmUgaXRhbGljIGNvbW1hbmQgY29udmVydGVkIGhlbGxvIDxpPndvcmxkPC9pPiA8Yj53ZWJraXQ8
L2I+IHRvIDxpPmhlbGxvIHdvcmxkIDwvaT48Yj48aT53ZWJraXQ8L2k+PC9iPgorUEFTUyBvbmUg
aXRhbGljIGNvbW1hbmQgY29udmVydGVkIGhlbGxvIDxpPndvcmxkPC9pPiA8Yj53ZWJraXQ8L2I+
IHRvIDxpPmhlbGxvIHdvcmxkIDxiPndlYmtpdDwvYj48L2k+CiBQQVNTIG9uZSBpdGFsaWMgY29t
bWFuZCBjb252ZXJ0ZWQgaGVsbG8gPGk+d29ybGQ8L2k+IHdlYmtpdCB0byA8aT5oZWxsbyB3b3Js
ZCB3ZWJraXQ8L2k+CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvdW5saW5rLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3VubGluay1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDY1OTA1KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC91
bmxpbmstZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw3IEBAIEVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmcKIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNh
dGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
LUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQg
PiBESVYgPiBMSSA+IE9MID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNyBvZiAjdGV4dCA+
IERJViA+IExJID4gT0wgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVj
dGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxF
R0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQg
PiBBID4gRElWID4gTEkgPiBPTCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEwIG9mICN0
ZXh0ID4gQSA+IERJViA+IExJID4gT0wgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJh
bmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+IExJID4gT0wgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byA3IG9mICN0ZXh0ID4gRElWID4gTEkgPiBPTCA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBE
RUxFR0FURTogc2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+
IExJID4gT0wgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mIERJViA+IExJID4gT0wg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudApAQCAtNjYsNCArNjUsNCBAQCBUaGUgaW5uZXJIVE1M
IG9mIGVkaXRhYmxlIHJlZ2lvbnMgYWZ0ZXIgCiBUaGlzIHBhcmFncmFwaCBzaG91bGQgc2hvdWxk
IGVuZCB1cCB1bmxpbmtlZC4KIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBwbGUuY29tLyI+VGhlPC9h
PiBzZWNvbmQ8YSBocmVmPSJodHRwOi8vd3d3LmFwcGxlLmNvbS8iPiB3b3JkIGluIHRoaXMgcGFy
YWdyYXBoIHNob3VsZCBlbmQgdXAgYmVpbmcgdW5saW5rZWQsIGV2ZXJ5dGhpbmcgZWxzZSBzaG91
bGQgYmUgYSBsaW5rLjwvYT4KIFRoaXMgcGFyYWdyYXBoIHN0YXJ0cyB3aXRoIDxpPjxhIGhyZWY9
Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbSI+YTwvYT48L2k+PHNwYW4gaWQ9InRlc3Qzc3RhcnQiPiBs
aW5rPC9zcGFuPiBpbiB0aGUgbWlkZGxlLiBPbmx5IHRoZSAnYScgaW4gdGhlIHByZXZpb3VzIHNl
bnRlbmNlIHNob3VsZCBiZSBsaW5rZWQgYWZ0ZXIgdGhlIHRlc3QuCi08cD5UaGlzIDxpPmVkaXRh
YmxlIHJlZ2lvbjwvaT4gY29udGFpbnMgbGlzdHMsIHRhYmxlcywgc3R5bGVkIHRleHQsIGFuZCBp
bWFnZXMuIEV2ZXJ5dGhpbmcgaW4gdGhpcyByZWdpb24gdGhhdCBpcyBub3Qgc2VsZWN0ZWQgc2hv
dWxkIGJlIGEgbGluaywgbm90aGluZyB0aGF0IGlzIHNlbGVjdGVkIHNob3VsZCBiZSBhIGxpbmsu
PC9wPiA8dWw+IDxsaT5JdGVtIDE8L2xpPiA8bGk+SXRlbSAyPC9saT4gPC91bD4gPHRhYmxlIGJv
cmRlcj0iMSI+PHRib2R5Pjx0cj48dGQ+MTwvdGQ+PHRkPjI8L3RkPjx0ZD48c3BhbiBpZD0idGVz
dDRlbmQiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPjM8L2E+PC9zcGFuPjwvdGQ+
PC90cj48L3Rib2R5PjwvdGFibGU+IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPjxi
cj4gVGhpcyA8L2E+PGI+PGEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyI+bGluZTwvYT48
L2I+PGEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyI+IGNvbnRhaW5zIDxpbWcgc3JjPSIu
Li9yZXNvdXJjZXMvYWJlLnBuZyI+IGFuIGltYWdlLiA8L2E+Cis8cD5UaGlzIDxpPmVkaXRhYmxl
IHJlZ2lvbjwvaT4gY29udGFpbnMgbGlzdHMsIHRhYmxlcywgc3R5bGVkIHRleHQsIGFuZCBpbWFn
ZXMuIEV2ZXJ5dGhpbmcgaW4gdGhpcyByZWdpb24gdGhhdCBpcyBub3Qgc2VsZWN0ZWQgc2hvdWxk
IGJlIGEgbGluaywgbm90aGluZyB0aGF0IGlzIHNlbGVjdGVkIHNob3VsZCBiZSBhIGxpbmsuPC9w
PiA8dWw+IDxsaT5JdGVtIDE8L2xpPiA8bGk+SXRlbSAyPC9saT4gPC91bD4gPHRhYmxlIGJvcmRl
cj0iMSI+PHRib2R5Pjx0cj48dGQ+MTwvdGQ+PHRkPjI8L3RkPjx0ZD48c3BhbiBpZD0idGVzdDRl
bmQiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPjM8L2E+PC9zcGFuPjwvdGQ+PC90
cj48L3Rib2R5PjwvdGFibGU+IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPjxicj4g
VGhpcyA8Yj5saW5lPC9iPiBjb250YWlucyA8aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FiZS5wbmci
PiBhbiBpbWFnZS4gPC9hPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9z
Y3JpcHQtdGVzdHMvdG9nZ2xlLWxpbmsuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC9zY3JpcHQtdGVzdHMvdG9nZ2xlLWxpbmsuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy90b2dnbGUt
bGluay5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorZGVzY3JpcHRpb24oIlRlc3Qg
dG8gbWFrZSBzdXJlIHdlIHJlbW92ZSBzcGFuIHRhZ3Mgd2l0aCBubyBhdHRyaWJ1dGVzIGlmIHdl
IHJlbW92ZWQgdGhlIGxhc3QgYXR0cmlidXRlLiIpCisKK3ZhciB0ZXN0Q29udGFpbmVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cit0ZXN0Q29udGFpbmVyLmNvbnRlbnRFZGl0YWJs
ZSA9IHRydWU7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlc3RDb250YWluZXIpOworCitm
dW5jdGlvbiB0ZXN0U2luZ2xlVG9nZ2xlKHRvZ2dsZUNvbW1hbmQsIGluaXRpYWxDb250ZW50cywg
c2VsZWN0b3IsIGV4cGVjdGVkQ29udGVudHMpCit7CisgICAgdGVzdENvbnRhaW5lci5pbm5lckhU
TUwgPSBpbml0aWFsQ29udGVudHM7CisgICAgc2VsZWN0b3IodGVzdENvbnRhaW5lcik7CisgICAg
ZG9jdW1lbnQuZXhlY0NvbW1hbmQodG9nZ2xlQ29tbWFuZCwgZmFsc2UsICdodHRwOi8vd2Via2l0
Lm9yZy8nKTsKKyAgICBpZiAodGVzdENvbnRhaW5lci5pbm5lckhUTUwgPT09IGV4cGVjdGVkQ29u
dGVudHMpCisgICAgICAgIHRlc3RQYXNzZWQoIm9uZSAiICsgdG9nZ2xlQ29tbWFuZCArICIgKGh0
dHA6Ly93ZWJraXQub3JnLykgY29tbWFuZCBjb252ZXJ0ZWQgIiArIGluaXRpYWxDb250ZW50cyAr
ICIgdG8gIiArIGV4cGVjdGVkQ29udGVudHMpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxl
ZCgib25lICIgKyB0b2dnbGVDb21tYW5kICsgIiAoaHR0cDovL3dlYmtpdC5vcmcvKSBjb21tYW5k
IGNvbnZlcnRlZCAiICsgaW5pdGlhbENvbnRlbnRzICsgIiB0byAiICsgdGVzdENvbnRhaW5lci5p
bm5lckhUTUwgKyAiLCBleHBlY3RlZCAiICsgZXhwZWN0ZWRDb250ZW50cyk7Cit9CisKK2Z1bmN0
aW9uIHNlbGVjdEFsbChjb250YWluZXIpIHsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2Vs
ZWN0QWxsQ2hpbGRyZW4oY29udGFpbmVyKTsKK30KKworZnVuY3Rpb24gc2VsZWN0Rmlyc3RUd29X
b3Jkcyhjb250YWluZXIpIHsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24o
Y29udGFpbmVyLCAwKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkubW9kaWZ5KCdleHRlbmQn
LCAnZm9yd2FyZCcsICd3b3JkJyk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLm1vZGlmeSgn
ZXh0ZW5kJywgJ2ZvcndhcmQnLCAnd29yZCcpOworfQorCitmdW5jdGlvbiBzZWxlY3RMYXN0V29y
ZChjb250YWluZXIpIHsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oY29u
dGFpbmVyLCBjb250YWluZXIuY2hpbGROb2Rlcy5sZW5ndGgpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5tb2RpZnkoJ2V4dGVuZCcsICdiYWNrd2FyZCcsICd3b3JkJyk7Cit9CisKK3Rlc3RT
aW5nbGVUb2dnbGUoImNyZWF0ZUxpbmsiLCAnaGVsbG8gPGI+d29ybGQ8L2I+Jywgc2VsZWN0QWxs
LCAnPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbyA8Yj53b3JsZDwvYj48L2E+Jyk7
Cit0ZXN0U2luZ2xlVG9nZ2xlKCJjcmVhdGVMaW5rIiwgJzx1PmhlbGxvIHdvcmxkPC91PicsIHNl
bGVjdEFsbCwgJzx1PjxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+aGVsbG8gd29ybGQ8L2E+
PC91PicpOwordGVzdFNpbmdsZVRvZ2dsZSgiY3JlYXRlTGluayIsICdoZWxsbyA8YSBocmVmPSJo
dHRwOi8vYnVncy53ZWJraXQub3JnLyI+d29ybGQ8L2E+Jywgc2VsZWN0QWxsLCAnPGEgaHJlZj0i
aHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbyB3b3JsZDwvYT4nKTsKK3Rlc3RTaW5nbGVUb2dnbGUo
ImNyZWF0ZUxpbmsiLCAnaGVsbG8gPGI+d29ybGQ8L2I+IFdlYktpdCcsIHNlbGVjdEZpcnN0VHdv
V29yZHMsICc8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPmhlbGxvIDxiPndvcmxkPC9iPjwv
YT4gV2ViS2l0Jyk7Cit0ZXN0U2luZ2xlVG9nZ2xlKCJjcmVhdGVMaW5rIiwgJzxhIGhyZWY9Imh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvIj5oZWxsbyA8Yj53b3JsZDwvYj48L2E+IFdlYktpdCcsIHNl
bGVjdEZpcnN0VHdvV29yZHMsICc8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPmhlbGxvIDxi
PndvcmxkPC9iPjwvYT4gV2ViS2l0Jyk7Cit0ZXN0U2luZ2xlVG9nZ2xlKCJjcmVhdGVMaW5rIiwg
J2hlbGxvIDxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIj48Yj53b3JsZDwvYj4gV2Vi
S2l0PC9hPicsIHNlbGVjdEZpcnN0VHdvV29yZHMsICc8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9y
Zy8iPmhlbGxvIDxiPndvcmxkPC9iPjwvYT48YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3Jn
LyI+IFdlYktpdDwvYT4nKTsKK3Rlc3RTaW5nbGVUb2dnbGUoImNyZWF0ZUxpbmsiLCAnaGVsbG8g
PGI+d29ybGQ8L2I+IFdlYktpdCcsIHNlbGVjdExhc3RXb3JkLCAnaGVsbG8gPGI+d29ybGQ8L2I+
IDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+V2ViS2l0PC9hPicpOwordGVzdFNpbmdsZVRv
Z2dsZSgiY3JlYXRlTGluayIsICc8dT5oZWxsbyA8Yj53b3JsZDwvYj4gV2ViS2l0PC91PicsIHNl
bGVjdExhc3RXb3JkLCAnPHU+aGVsbG8gPGI+d29ybGQ8L2I+IDxhIGhyZWY9Imh0dHA6Ly93ZWJr
aXQub3JnLyI+V2ViS2l0PC9hPjwvdT4nKTsKK3Rlc3RTaW5nbGVUb2dnbGUoImNyZWF0ZUxpbmsi
LCAnPGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8iPjxkaXY+aGVsbG88L2Rpdj48ZGl2
PndvcmxkPC9kaXY+PC9hPicsIHNlbGVjdExhc3RXb3JkLCAnPGRpdj48YSBocmVmPSJodHRwOi8v
dHJhYy53ZWJraXQub3JnLyI+aGVsbG88L2E+PC9kaXY+PGRpdj48YSBocmVmPSJodHRwOi8vd2Vi
a2l0Lm9yZy8iPndvcmxkPC9hPjwvZGl2PicpOworCitkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxk
KHRlc3RDb250YWluZXIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvc2NyaXB0LXRlc3RzL3RvZ2dsZS1zdHls
ZS0zLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvc2Ny
aXB0LXRlc3RzL3RvZ2dsZS1zdHlsZS0zLmpzCShyZXZpc2lvbiA2NTkwNSkKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvc2NyaXB0LXRlc3RzL3RvZ2dsZS1zdHlsZS0zLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw3IEBAIGZ1bmN0aW9uIHRlc3RTaW5nbGVUb2dnbGUo
dG9nZ2xlQ29tbWFuZCwKIAogdGVzdFNpbmdsZVRvZ2dsZSgiYm9sZCIsICdoZWxsbzxiIGlkPSJ0
ZXN0Ij53b3JsZDwvYj4nLCAnPGI+aGVsbG88L2I+PGIgaWQ9InRlc3QiPndvcmxkPC9iPicpOwog
dGVzdFNpbmdsZVRvZ2dsZSgiYm9sZCIsICdoZWxsbzxiPjxpPndvcmxkPC9pPjwvYj4nLCAnPGI+
aGVsbG88aT53b3JsZDwvaT48L2I+Jyk7Ci10ZXN0U2luZ2xlVG9nZ2xlKCJpdGFsaWMiLCAnaGVs
bG8gPGk+d29ybGQ8L2k+IDxiPndlYmtpdDwvYj4nLCAnPGk+aGVsbG8gd29ybGQgPC9pPjxiPjxp
PndlYmtpdDwvaT48L2I+Jyk7Cit0ZXN0U2luZ2xlVG9nZ2xlKCJpdGFsaWMiLCAnaGVsbG8gPGk+
d29ybGQ8L2k+IDxiPndlYmtpdDwvYj4nLCAnPGk+aGVsbG8gd29ybGQgPGI+d2Via2l0PC9iPjwv
aT4nKTsKIHRlc3RTaW5nbGVUb2dnbGUoIml0YWxpYyIsICdoZWxsbyA8aT53b3JsZDwvaT4gd2Vi
a2l0JywgJzxpPmhlbGxvIHdvcmxkIHdlYmtpdDwvaT4nKTsKIAogZG9jdW1lbnQuYm9keS5yZW1v
dmVDaGlsZCh0ZXN0Q29udGFpbmVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65469</attachid>
            <date>2010-08-25 13:33:28 -0700</date>
            <delta_ts>2010-08-25 13:44:05 -0700</delta_ts>
            <desc>fixed per Tony&apos;s comment</desc>
            <filename>bug-30836-20100825133327.patch</filename>
            <type>text/plain</type>
            <size>35581</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjAxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTAtMDgtMjQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3Jl
YXRpbmcgYSBsaW5rIHdoZW4gc2VsZWN0aW5nIG11bHRpcGxlIG5vZGVzIGNyZWF0ZXMgbXVsdGlw
bGUgbGlua3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMwODM2CisKKyAgICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2VkIGJ5IGFwcGx5SW5saW5lU3R5bGVU
b1JhbmdlIGNhbGxpbmcgYWRkSW5saW5lU3R5bGVJZk5lZWRlZAorICAgICAgICBvbiBlYWNoIGlu
bGluZSBlbGVtZW50LiBNb2RpZmllZCBhcHBseUlubGluZVN0eWxlVG9SYW5nZSB0byBjYWxsIGFk
ZElubGluZVN0eWxlSWZOZWVkZWQKKyAgICAgICAgb25jZSBmb3IgYWxsIGlubGluZSBlbGVtZW50
cyB3aXRoIHRoZSBzYW1lIHN0eWxlIGRpZmZlcmVuY2UuCisKKyAgICAgICAgQmVjYXVzZSB0aGlz
IGltcGxpZXMgdGhhdCBhbmNob3IgZWxlbWVudCBtYXkgd3JhcCBvdGhlciBpbmxpbmUgZWxlbWVu
dHMgd2hlbiBhZGRlZCwKKyAgICAgICAgbW9kaWZpZWQgcHVzaERvd25JbmxpbmVTdHlsZUFyb3Vu
ZE5vZGUgdG8gcHVzaCBkb3duIHN0eWxlZCBlbGVtZW50cy4KKworICAgICAgICBSZW1vdmVkIHB1
c2hQYXJ0aWFsbHlTZWxlY3RlZEFuY2hvckVsZW1lbnRzRG93biBmcm9tIENvbXBvc2l0ZUVkaXRD
b21tYW5kIHNpbmNlCisgICAgICAgIEFwcGx5U3R5bGVDb21tYW5kIG5vdyBjb3JyZWN0bHkgcHVz
aGVzIGRvd24gYW5jaG9ycyBhdCB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2YgdGhlIHNlbGVjdGlv
bi4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS1saW5rLmh0bWwK
KworICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVDaGFuZ2U6Om9wZXJhdG9yPT0pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQ2hhbmdlOjpvcGVyYXRvciE9KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvUmFuZ2UpOiBXcmFwcyBpbmxpbmUgZWxl
bWVudHMgd2l0aAorICAgICAgICB0aGUgc2FtZSBzdHlsZSBkaWZmZXJlbmNlIGJ5IG9uZSBlbGVt
ZW50IGluc3RlYWQgb2Ygd3JhcHBpbmcgZWFjaCBlbGVtZW50IHNlcGFyYXRlbHkuCisgICAgICAg
IChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6ZXh0cmFjdElubGluZVN0eWxlVG9QdXNoRG93
bik6IEV4dHJhY3RzIHN0eWxlZCBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHls
ZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGVUb1B1c2hEb3duKTogQXZvaWRzIGFkZGluZyBzdHls
ZWQgZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93
bklubGluZVN0eWxlQXJvdW5kTm9kZSk6IFB1c2hlcyBkb3duIHN0eWxlZCBlbGVtZW50LgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnN1cnJvdW5kTm9kZVJhbmdlV2l0aEVs
ZW1lbnQpOiBObyBsb25nZXIgY2hlY2tzIGlubGluZS1uZXNzLgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlTdHlsZUNvbW1hbmQ6OmFkZElubGluZVN0eWxlSWZOZWVkZWQpOiBBZGRzIHN0eWxlIGV2
ZW4gd2hlbiBtX3JlbW92ZU9ubHkuCisgICAgICAgIENhbGxlcnMgc2hvdWxkIHNldCBhZGRTdHls
ZWRFbGVtZW50ID0gRG9Ob3RBZGRTdHlsZWRFbGVtZW50IHRvIGF2b2lkIGFkZGluZyBzdHlsZWQg
ZWxlbWVudC4KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmg6CisgICAgICAg
ICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6IFJlbW92ZWQgcHVzaFBhcnRpYWxs
eVNlbGVjdGVkQW5jaG9yRWxlbWVudHNEb3duLgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuaDogUmVtb3ZlZCBwdXNoUGFydGlhbGx5U2VsZWN0ZWRBbmNob3JFbGVtZW50
c0Rvd24uCisgICAgICAgICogZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcmVhdGVMaW5rQ29tbWFuZDo6ZG9BcHBseSk6IHVzZWQgdG8gY2FsbCBwdXNo
UGFydGlhbGx5U2VsZWN0ZWRBbmNob3JFbGVtZW50c0Rvd24uCisgICAgICAgICogZWRpdGluZy9V
bmxpbmtDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVubGlua0NvbW1hbmQ6OmRvQXBw
bHkpOiBVc2VkIHRvIGNhbGwgcHVzaFBhcnRpYWxseVNlbGVjdGVkQW5jaG9yRWxlbWVudHNEb3du
LgorCiAyMDEwLTA4LTI1ICBEYXdpdCBBbGVtYXllaHUgIDxhZGF3aXRAa2RlLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRheWF0LgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQXBwbHlT
dHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA2NjAxOCkKKysrIFdlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDIzIEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgZm9udEZhY2UoKSB7IHJldHVybiBtX2FwcGx5Rm9udEZhY2U7IH0KICAg
ICBTdHJpbmcgZm9udFNpemUoKSB7IHJldHVybiBtX2FwcGx5Rm9udFNpemU7IH0KIAorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUNoYW5nZSYgb3RoZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9jc3NTdHlsZSA9PSBvdGhlci5tX2Nzc1N0eWxlCisgICAgICAgICAgICAmJiBtX2Fw
cGx5Qm9sZCA9PSBvdGhlci5tX2FwcGx5Qm9sZAorICAgICAgICAgICAgJiYgbV9hcHBseUl0YWxp
YyA9PSBvdGhlci5tX2FwcGx5SXRhbGljCisgICAgICAgICAgICAmJiBtX2FwcGx5VW5kZXJsaW5l
ID09IG90aGVyLm1fYXBwbHlVbmRlcmxpbmUKKyAgICAgICAgICAgICYmIG1fYXBwbHlMaW5lVGhy
b3VnaCA9PSBvdGhlci5tX2FwcGx5TGluZVRocm91Z2gKKyAgICAgICAgICAgICYmIG1fYXBwbHlT
dWJzY3JpcHQgPT0gb3RoZXIubV9hcHBseVN1YnNjcmlwdAorICAgICAgICAgICAgJiYgbV9hcHBs
eVN1cGVyc2NyaXB0ID09IG90aGVyLm1fYXBwbHlTdXBlcnNjcmlwdAorICAgICAgICAgICAgJiYg
bV9hcHBseUZvbnRDb2xvciA9PSBvdGhlci5tX2FwcGx5Rm9udENvbG9yCisgICAgICAgICAgICAm
JiBtX2FwcGx5Rm9udEZhY2UgPT0gb3RoZXIubV9hcHBseUZvbnRGYWNlCisgICAgICAgICAgICAm
JiBtX2FwcGx5Rm9udFNpemUgPT0gb3RoZXIubV9hcHBseUZvbnRTaXplOworICAgIH0KKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVDaGFuZ2UmIG90aGVyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KIHByaXZhdGU6CiAgICAgdm9pZCBpbml0
KFBhc3NSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4sIGNvbnN0IFBvc2l0aW9uJik7CiAgICAg
dm9pZCByZWNvbmNpbGVUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMoQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24qKTsKQEAgLTExMDMsMTQgKzExMjAsMTcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFu
ZDo6YXBwbHlJbmxpbmVTdHlsZQogICAgICAgICAgICAgTm9kZSogcnVuU3RhcnQgPSBub2RlOwog
ICAgICAgICAgICAgLy8gRmluZCB0aGUgZW5kIG9mIHRoZSBydW4uCiAgICAgICAgICAgICBOb2Rl
KiBzaWJsaW5nID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIHdoaWxlIChzaWJs
aW5nICYmIHNpYmxpbmcgIT0gcGFzdEVuZE5vZGUgJiYgKCFzaWJsaW5nLT5pc0VsZW1lbnROb2Rl
KCkgfHwgc2libGluZy0+aGFzVGFnTmFtZShiclRhZykpICYmICFpc0Jsb2NrKHNpYmxpbmcpKSB7
CisgICAgICAgICAgICBTdHlsZUNoYW5nZSBzdGFydENoYW5nZShzdHlsZSwgUG9zaXRpb24obm9k
ZSwgMCkpOworICAgICAgICAgICAgd2hpbGUgKHNpYmxpbmcgJiYgc2libGluZyAhPSBwYXN0RW5k
Tm9kZSAmJiAhc2libGluZy0+Y29udGFpbnMocGFzdEVuZE5vZGUpCisgICAgICAgICAgICAgICAg
ICAgJiYgKCFpc0Jsb2NrKHNpYmxpbmcpIHx8IHNpYmxpbmctPmhhc1RhZ05hbWUoYnJUYWcpKQor
ICAgICAgICAgICAgICAgICAgICYmIFN0eWxlQ2hhbmdlKHN0eWxlLCBQb3NpdGlvbihzaWJsaW5n
LCAwKSkgPT0gc3RhcnRDaGFuZ2UpIHsKICAgICAgICAgICAgICAgICBub2RlID0gc2libGluZzsK
ICAgICAgICAgICAgICAgICBzaWJsaW5nID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIC8vIFJlY29tcHV0ZSBuZXh0LCBzaW5jZSBub2RlIGhhcyBjaGFu
Z2VkLgotICAgICAgICAgICAgbmV4dCA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKTsKKyAgICAg
ICAgICAgIG5leHQgPSBub2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKCk7CiAgICAgICAgICAgICAv
LyBBcHBseSB0aGUgc3R5bGUgdG8gdGhlIHJ1bi4KLSAgICAgICAgICAgIGFkZElubGluZVN0eWxl
SWZOZWVkZWQoc3R5bGUsIHJ1blN0YXJ0LCBub2RlKTsKKyAgICAgICAgICAgIGFkZElubGluZVN0
eWxlSWZOZWVkZWQoc3R5bGUsIHJ1blN0YXJ0LCBub2RlLCBtX3JlbW92ZU9ubHkgPyBEb05vdEFk
ZFN0eWxlZEVsZW1lbnQgOiBBZGRTdHlsZWRFbGVtZW50KTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTEzNDQsNyArMTM2NCw3IEBAIEhUTUxFbGVtZW50KiBBcHBseVN0eWxlQ29tbWFuZDo6aGln
aGVzdEEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiBBcHBseVN0eWxlQ29tbWFuZDo6ZXh0cmFjdElubGluZVN0eWxlVG9QdXNo
RG93bihOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8aW50PiYgcHJvcGVydGllcykKK1Bhc3NSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IEFwcGx5U3R5bGVDb21tYW5kOjpleHRyYWN0
SW5saW5lU3R5bGVUb1B1c2hEb3duKE5vZGUqIG5vZGUsIGJvb2wgaXNTdHlsZWRFbGVtZW50LCBj
b25zdCBWZWN0b3I8aW50PiYgcHJvcGVydGllcykKIHsKICAgICBBU1NFUlQobm9kZSk7CiAgICAg
QVNTRVJUKG5vZGUtPmlzRWxlbWVudE5vZGUoKSk7CkBAIC0xMzUzLDEzICsxMzczLDE3IEBAIFBh
c3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IEEKICAgICBpZiAoIW5vZGUtPmlz
SFRNTEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBIVE1MRWxlbWVudCAqZWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50ICo+KG5vZGUpOworICAgIEhUTUxFbGVtZW50
KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihub2RlKTsKICAgICBSZWZQdHI8
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gZWxlbWVudC0+aW5saW5lU3R5bGVE
ZWNsKCk7CisgICAgaWYgKGlzU3R5bGVkRWxlbWVudCkgeworICAgICAgICByZW1vdmVOb2RlUHJl
c2VydmluZ0NoaWxkcmVuKGVsZW1lbnQpOworICAgICAgICByZXR1cm4gc3R5bGUucmVsZWFzZSgp
OworICAgIH0KKwogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgc3R5
bGUgPSBzdHlsZS0+Y29weVByb3BlcnRpZXNJblNldChwcm9wZXJ0aWVzLmRhdGEoKSwgcHJvcGVy
dGllcy5zaXplKCkpOwotCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLnNp
emUoKTsgaSsrKSB7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gcHJvcGVydHkgPSBzdHlsZS0+
Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVzW2ldKTsKICAgICAgICAgaWYgKHByb3BlcnR5
KQpAQCAtMTQyOSw3ICsxNDUzLDEwIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5s
aW5lU3R5bGUKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IGFkZElubGluZVN0eWxl
SWZOZWVkZWQgbWF5IG92ZXJyaWRlIHRoZSBzdHlsZSBvZiBub2RlCi0gICAgYWRkSW5saW5lU3R5
bGVJZk5lZWRlZChzdHlsZSwgbm9kZSwgbm9kZSk7CisgICAgLy8gV2UgY2FuJ3Qgd3JhcCBub2Rl
IHdpdGggdGhlIHN0eWxlZCBlbGVtZW50IGhlcmUgYmVjYXVzZSBuZXcgc3R5bGVkIGVsZW1lbnQg
d2lsbCBuZXZlciBiZSByZW1vdmVkIGlmIHdlIGRpZC4KKyAgICAvLyBJZiB3ZSBtb2RpZmllZCB0
aGUgY2hpbGQgcG9pbnRlciBpbiBwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZSB0byBwb2lu
dCB0byBuZXcgc3R5bGUgZWxlbWVudAorICAgIC8vIHRoZW4gd2UgZmFsbCBpbnRvIGFuIGluZmlu
aXRlIGxvb3Agd2hlcmUgd2Uga2VlcCByZW1vdmluZyBhbmQgYWRkaW5nIHN0eWxlZCBlbGVtZW50
IHdyYXBwaW5nIG5vZGUuCisgICAgYWRkSW5saW5lU3R5bGVJZk5lZWRlZChzdHlsZSwgbm9kZSwg
bm9kZSwgRG9Ob3RBZGRTdHlsZWRFbGVtZW50KTsKIH0KIAogdm9pZCBBcHBseVN0eWxlQ29tbWFu
ZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qIHN0eWxlLCBOb2RlKiB0YXJnZXROb2RlKQpAQCAtMTQ1MCwyMSArMTQ3Nyw0MiBAQCB2b2lk
IEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0CiAgICAgICAgIEFTU0VSVChjdXJy
ZW50LT5pc0hUTUxFbGVtZW50KCkpOwogICAgICAgICBBU1NFUlQoY3VycmVudC0+Y29udGFpbnMo
dGFyZ2V0Tm9kZSkpOwogICAgICAgICBOb2RlKiBjaGlsZCA9IGN1cnJlbnQtPmZpcnN0Q2hpbGQo
KTsKLSAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZVRvUHVz
aERvd24gPSBleHRyYWN0SW5saW5lU3R5bGVUb1B1c2hEb3duKGN1cnJlbnQsIHByb3BlcnRpZXMp
OworICAgICAgICBOb2RlKiBsYXN0Q2hpbGQgPSBjdXJyZW50LT5sYXN0Q2hpbGQoKTsKKyAgICAg
ICAgUmVmUHRyPFN0eWxlZEVsZW1lbnQ+IHN0eWxlZEVsZW1lbnQ7CisgICAgICAgIGlmIChjdXJy
ZW50LT5pc1N0eWxlZEVsZW1lbnQoKSAmJiBtX3N0eWxlZElubGluZUVsZW1lbnQgJiYgY3VycmVu
dC0+aGFzVGFnTmFtZShtX3N0eWxlZElubGluZUVsZW1lbnQtPnRhZ1FOYW1lKCkpKQorICAgICAg
ICAgICAgc3R5bGVkRWxlbWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihjdXJyZW50
KTsKKyAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZVRvUHVz
aERvd24gPSBleHRyYWN0SW5saW5lU3R5bGVUb1B1c2hEb3duKGN1cnJlbnQsIHN0eWxlZEVsZW1l
bnQsIHByb3BlcnRpZXMpOwogCiAgICAgICAgIC8vIFRoZSBpbm5lciBsb29wIHdpbGwgZ28gdGhy
b3VnaCBjaGlsZHJlbiBvbiBlYWNoIGxldmVsCisgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQg
YWdncmVnYXRlIGlubGluZSBjaGlsZCBlbGVtZW50cyB0b2dldGhlciBzbyB0aGF0IHdlIGRvbid0
IHdyYXAgZWFjaCBjaGlsZCBzZXBhcmF0ZWx5LgogICAgICAgICB3aGlsZSAoY2hpbGQpIHsKICAg
ICAgICAgICAgIE5vZGUqIG5leHRDaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogCisgICAg
ICAgICAgICBpZiAoY2hpbGQgIT0gdGFyZ2V0Tm9kZSAmJiBzdHlsZWRFbGVtZW50KSB7CisgICAg
ICAgICAgICAgICAgLy8gSWYgY2hpbGQgaGFzIGNoaWxkcmVuLCB3cmFwIGNoaWxkcmVuIG9mIGNo
aWxkIGJ5IGEgY2xvbmUgb2YgdGhlIHN0eWxlZCBlbGVtZW50IHRvIGF2b2lkIGluZmluaXRlIGxv
b3AuCisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB3cmFwIHRoZSBjaGlsZCBieSB0aGUg
c3R5bGVkIGVsZW1lbnQsIGFuZCB3ZSB3b24ndCBmYWxsIGludG8gYW4gaW5maW5pdGUgbG9vcC4K
KyAgICAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gd3JhcHBlciA9IHN0eWxlZEVsZW1lbnQt
PmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOworICAgICAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgICAgICAgICAgICAgIHdyYXBwZXItPnJlbW92ZUF0dHJpYnV0ZShz
dHlsZUF0dHIsIGVjKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAg
ICAgICBpZiAoY2hpbGQtPmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgICAgICAgICAgICAgc3Vycm91
bmROb2RlUmFuZ2VXaXRoRWxlbWVudChjaGlsZC0+Zmlyc3RDaGlsZCgpLCBjaGlsZC0+bGFzdENo
aWxkKCksIHdyYXBwZXIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgc3Vycm91bmROb2RlUmFuZ2VXaXRoRWxlbWVudChjaGlsZCwgY2hpbGQsIHdyYXBwZXIpOwor
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBBcHBseSB0ZXh0IGRlY29yYXRpb24gdG8g
YWxsIG5vZGVzIGNvbnRhaW5pbmcgdGFyZ2V0Tm9kZSBhbmQgdGhlaXIgc2libGluZ3MgYnV0IE5P
VCB0byB0YXJnZXROb2RlCi0gICAgICAgICAgICBpZiAoY2hpbGQgIT0gdGFyZ2V0Tm9kZSkKKyAg
ICAgICAgICAgIC8vIEJ1dCBpZiB3ZSd2ZSByZW1vdmVkIHN0eWxlZEVsZW1lbnQgdGhlbiBnbyBh
aGVhZCBhbmQgYWx3YXlzIGFwcGx5IHRoZSBzdHlsZS4KKyAgICAgICAgICAgIGlmIChjaGlsZCAh
PSB0YXJnZXROb2RlIHx8IHN0eWxlZEVsZW1lbnQpCiAgICAgICAgICAgICAgICAgYXBwbHlJbmxp
bmVTdHlsZVRvUHVzaERvd24oY2hpbGQsIHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7Ci0KKyAgICAg
ICAgICAgIAogICAgICAgICAgICAgLy8gV2UgZm91bmQgdGhlIG5leHQgbm9kZSBmb3IgdGhlIG91
dGVyIGxvb3AgKGNvbnRhaW5zIHRhcmdldE5vZGUpCiAgICAgICAgICAgICAvLyBXaGVuIHJlYWNo
ZWQgdGFyZ2V0Tm9kZSwgc3RvcCB0aGUgb3V0ZXIgbG9vcCB1cG9uIHRoZSBjb21wbGV0aW9uIG9m
IHRoZSBjdXJyZW50IGlubmVyIGxvb3AKICAgICAgICAgICAgIGlmIChjaGlsZCA9PSB0YXJnZXRO
b2RlIHx8IGNoaWxkLT5jb250YWlucyh0YXJnZXROb2RlKSkKICAgICAgICAgICAgICAgICBjdXJy
ZW50ID0gY2hpbGQ7CiAKKyAgICAgICAgICAgIGlmIChjaGlsZCA9PSBsYXN0Q2hpbGQgfHwgY2hp
bGQtPmNvbnRhaW5zKGxhc3RDaGlsZCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjaGlsZCA9IG5leHRDaGlsZDsKICAgICAgICAgfQogICAgIH0KQEAgLTE3MzcsMTEgKzE3
ODUsOSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpzdXJyb3VuZE5vZGVSYW5nCiAgICAgCiAg
ICAgTm9kZSogbm9kZSA9IHN0YXJ0Tm9kZTsKICAgICB3aGlsZSAoMSkgewotICAgICAgICBOb2Rl
KiBuZXh0ID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOwotICAgICAgICBpZiAobm9kZS0+Y2hp
bGROb2RlQ291bnQoKSA9PSAwICYmIG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIo
KS0+aXNJbmxpbmUoKSkgewotICAgICAgICAgICAgcmVtb3ZlTm9kZShub2RlKTsKLSAgICAgICAg
ICAgIGFwcGVuZE5vZGUobm9kZSwgZWxlbWVudCk7Ci0gICAgICAgIH0KKyAgICAgICAgTm9kZSog
bmV4dCA9IG5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgICAgIHJlbW92ZU5vZGUobm9kZSk7Cisg
ICAgICAgIGFwcGVuZE5vZGUobm9kZSwgZWxlbWVudCk7CiAgICAgICAgIGlmIChub2RlID09IGVu
ZE5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgbm9kZSA9IG5leHQ7CkBAIC0xNzc5
LDExICsxODI1LDggQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YWRkQmxvY2tTdHlsZShjbwog
ICAgIHNldE5vZGVBdHRyaWJ1dGUoYmxvY2ssIHN0eWxlQXR0ciwgY3NzVGV4dCk7CiB9CiAKLXZv
aWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFkZElubGluZVN0eWxlSWZOZWVkZWQoQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24gKnN0eWxlLCBOb2RlICpzdGFydE5vZGUsIE5vZGUgKmVuZE5vZGUpCit2
b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphZGRJbmxpbmVTdHlsZUlmTmVlZGVkKENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uICpzdHlsZSwgTm9kZSAqc3RhcnROb2RlLCBOb2RlICplbmROb2RlLCBF
QWRkU3R5bGVkRWxlbWVudCBhZGRTdHlsZWRFbGVtZW50KQogewotICAgIGlmIChtX3JlbW92ZU9u
bHkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFN0eWxlQ2hhbmdlIHN0eWxlQ2hhbmdlKHN0eWxl
LCBQb3NpdGlvbihzdGFydE5vZGUsIDApKTsKIAogICAgIC8vIEZvbnQgdGFncyBuZWVkIHRvIGdv
IG91dHNpZGUgb2YgQ1NTIHNvIHRoYXQgQ1NTIGZvbnQgc2l6ZXMgb3ZlcnJpZGUgbGVhZ2N5IGZv
bnQgc2l6ZXMuCkBAIC0xODIzLDcgKzE4NjYsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjph
ZGRJbmxpbmVTdHlsZUlmCiAgICAgZWxzZSBpZiAoc3R5bGVDaGFuZ2UuYXBwbHlTdXBlcnNjcmlw
dCgpKQogICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0Tm9kZSwgZW5k
Tm9kZSwgY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQoKSwgc3VwVGFnKSk7CiAKLSAgICBpZiAo
bV9zdHlsZWRJbmxpbmVFbGVtZW50KQorICAgIGlmIChtX3N0eWxlZElubGluZUVsZW1lbnQgJiYg
YWRkU3R5bGVkRWxlbWVudCA9PSBBZGRTdHlsZWRFbGVtZW50KQogICAgICAgICBzdXJyb3VuZE5v
ZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0Tm9kZSwgZW5kTm9kZSwgbV9zdHlsZWRJbmxpbmVFbGVt
ZW50LT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5oCShyZXZpc2lvbiA2NjAxOCkKKysrIFdlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGNs
YXNzIEFwcGx5U3R5bGVDb21tYW5kIDogcHVibGljIENvbXBvc2kKIHB1YmxpYzoKICAgICBlbnVt
IEVQcm9wZXJ0eUxldmVsIHsgUHJvcGVydHlEZWZhdWx0LCBGb3JjZUJsb2NrUHJvcGVydGllcyB9
OwogICAgIGVudW0gSW5saW5lU3R5bGVSZW1vdmFsTW9kZSB7IFJlbW92ZUF0dHJpYnV0ZXNBbmRF
bGVtZW50cywgUmVtb3ZlTm9uZSB9OworICAgIGVudW0gRUFkZFN0eWxlZEVsZW1lbnQgeyBBZGRT
dHlsZWRFbGVtZW50LCBEb05vdEFkZFN0eWxlZEVsZW1lbnQgfTsKIAogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEFwcGx5U3R5bGVDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDU1NT
dHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRWRpdEFjdGlvbiBhY3Rpb24gPSBFZGl0QWN0aW9uQ2hh
bmdlQXR0cmlidXRlcywgRVByb3BlcnR5TGV2ZWwgbGV2ZWwgPSBQcm9wZXJ0eURlZmF1bHQpCiAg
ICAgewpAQCAtNzksNyArODAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVtb3ZlSFRNTEJpZGlF
bWJlZGRpbmdTdHlsZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIEhUTUxFbGVtZW50Kiwg
SW5saW5lU3R5bGVSZW1vdmFsTW9kZSA9IFJlbW92ZUF0dHJpYnV0ZXNBbmRFbGVtZW50cyk7CiAg
ICAgYm9vbCByZW1vdmVDU1NTdHlsZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIEhUTUxF
bGVtZW50KiwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSA9IFJlbW92ZUF0dHJpYnV0ZXNBbmRFbGVt
ZW50cyk7CiAgICAgSFRNTEVsZW1lbnQqIGhpZ2hlc3RBbmNlc3RvcldpdGhDb25mbGljdGluZ0lu
bGluZVN0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgTm9kZSopOwotICAgIFBhc3NS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGV4dHJhY3RJbmxpbmVTdHlsZVRvUHVz
aERvd24oTm9kZSosIGNvbnN0IFZlY3RvcjxpbnQ+Jik7CisgICAgUGFzc1JlZlB0cjxDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbj4gZXh0cmFjdElubGluZVN0eWxlVG9QdXNoRG93bihOb2RlKiwg
Ym9vbCBpc1N0eWxlZEVsZW1lbnQsIGNvbnN0IFZlY3RvcjxpbnQ+Jik7CiAgICAgdm9pZCBhcHBs
eUlubGluZVN0eWxlVG9QdXNoRG93bihOb2RlKiwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24g
KnN0eWxlKTsKICAgICB2b2lkIHB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uKiwgTm9kZSopOwogICAgIHZvaWQgcmVtb3ZlSW5saW5lU3R5bGUo
UGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4sIGNvbnN0IFBvc2l0aW9uJiBz
dGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCk7CkBAIC05Miw3ICs5Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBhcHBseUlubGluZVN0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKik7CiAg
ICAgdm9pZCBhcHBseUlubGluZVN0eWxlVG9SYW5nZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biosIGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCk7CiAgICAgdm9p
ZCBhZGRCbG9ja1N0eWxlKGNvbnN0IFN0eWxlQ2hhbmdlJiwgSFRNTEVsZW1lbnQqKTsKLSAgICB2
b2lkIGFkZElubGluZVN0eWxlSWZOZWVkZWQoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBO
b2RlKiBzdGFydCwgTm9kZSogZW5kKTsKKyAgICB2b2lkIGFkZElubGluZVN0eWxlSWZOZWVkZWQo
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBOb2RlKiBzdGFydCwgTm9kZSogZW5kLCBFQWRk
U3R5bGVkRWxlbWVudCBhZGRTdHlsZWRFbGVtZW50ID0gQWRkU3R5bGVkRWxlbWVudCk7CiAgICAg
dm9pZCBzcGxpdFRleHRBdFN0YXJ0KGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRp
b24mIGVuZCk7CiAgICAgdm9pZCBzcGxpdFRleHRBdEVuZChjb25zdCBQb3NpdGlvbiYgc3RhcnQs
IGNvbnN0IFBvc2l0aW9uJiBlbmQpOwogICAgIHZvaWQgc3BsaXRUZXh0RWxlbWVudEF0U3RhcnQo
Y29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKSW5kZXg6IFdlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gNjYwMTgpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MzAsMzAgKzczMCw2IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnB1c2hBbmNob3JF
bGUKICAgICAgICAgcmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbihhbmNob3JOb2RlKTsKIH0K
IAotLy8gV2UgbXVzdCBwdXNoIHBhcnRpYWxseSBzZWxlY3RlZCBhbmNob3JzIGRvd24gYmVmb3Jl
IGNyZWF0aW5nIG9yIHJlbW92aW5nCi0vLyBsaW5rcyBmcm9tIGEgc2VsZWN0aW9uIHRvIGNyZWF0
ZSBmdWxseSBzZWxlY3RlZCBjaHVua3MgdGhhdCBjYW4gYmUgcmVtb3ZlZC4KLS8vIEFwcGx5U3R5
bGVDb21tYW5kIGRvZXNuJ3QgZG8gdGhpcyBmb3IgdXMgYmVjYXVzZSBzdHlsZXMgY2FuIGJlIG5l
c3RlZC4KLS8vIEFuY2hvcnMgY2Fubm90IGJlIG5lc3RlZC4KLXZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OnB1c2hQYXJ0aWFsbHlTZWxlY3RlZEFuY2hvckVsZW1lbnRzRG93bigpCi17Ci0gICAg
VmlzaWJsZVNlbGVjdGlvbiBvcmlnaW5hbFNlbGVjdGlvbiA9IGVuZGluZ1NlbGVjdGlvbigpOwot
ICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlU3RhcnQob3JpZ2luYWxTZWxlY3Rpb24uc3RhcnQo
KSk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQob3JpZ2luYWxTZWxlY3Rpb24uZW5k
KCkpOwotICAgIAotICAgIE5vZGUqIHN0YXJ0QW5jaG9yID0gZW5jbG9zaW5nQW5jaG9yRWxlbWVu
dChvcmlnaW5hbFNlbGVjdGlvbi5zdGFydCgpKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRP
ZlN0YXJ0QW5jaG9yKFBvc2l0aW9uKHN0YXJ0QW5jaG9yLCAwKSk7Ci0gICAgaWYgKHN0YXJ0QW5j
aG9yICYmIHN0YXJ0T2ZTdGFydEFuY2hvciAhPSB2aXNpYmxlU3RhcnQpCi0gICAgICAgIHB1c2hB
bmNob3JFbGVtZW50RG93bihzdGFydEFuY2hvcik7Ci0KLSAgICBOb2RlKiBlbmRBbmNob3IgPSBl
bmNsb3NpbmdBbmNob3JFbGVtZW50KG9yaWdpbmFsU2VsZWN0aW9uLmVuZCgpKTsKLSAgICBWaXNp
YmxlUG9zaXRpb24gZW5kT2ZFbmRBbmNob3IoUG9zaXRpb24oZW5kQW5jaG9yLCAwKSk7Ci0gICAg
aWYgKGVuZEFuY2hvciAmJiBlbmRPZkVuZEFuY2hvciAhPSB2aXNpYmxlRW5kKQotICAgICAgICBw
dXNoQW5jaG9yRWxlbWVudERvd24oZW5kQW5jaG9yKTsKLQotICAgIEFTU0VSVChvcmlnaW5hbFNl
bGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+aW5Eb2N1bWVudCgpICYmIG9yaWdpbmFsU2VsZWN0aW9u
LmVuZCgpLm5vZGUoKS0+aW5Eb2N1bWVudCgpKTsKLSAgICBzZXRFbmRpbmdTZWxlY3Rpb24ob3Jp
Z2luYWxTZWxlY3Rpb24pOwotfQotCiAvLyBDbG9uZSB0aGUgcGFyYWdyYXBoIGJldHdlZW4gc3Rh
cnQgYW5kIGVuZCB1bmRlciBibG9ja0VsZW1lbnQsCiAvLyBwcmVzZXJ2aW5nIHRoZSBoaWVyYXJj
aHkgdXAgdG8gb3V0ZXJOb2RlLiAKIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmgJKHJldmlzaW9uIDY2MDE4KQorKysgV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDYgQEAgcHJvdGVjdGVkOgog
ICAgIFBhc3NSZWZQdHI8Tm9kZT4gbW92ZVBhcmFncmFwaENvbnRlbnRzVG9OZXdCbG9ja0lmTmVj
ZXNzYXJ5KGNvbnN0IFBvc2l0aW9uJik7CiAgICAgCiAgICAgdm9pZCBwdXNoQW5jaG9yRWxlbWVu
dERvd24oTm9kZSopOwotICAgIHZvaWQgcHVzaFBhcnRpYWxseVNlbGVjdGVkQW5jaG9yRWxlbWVu
dHNEb3duKCk7CiAgICAgCiAgICAgdm9pZCBtb3ZlUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGJv
b2wgcHJlc2VydmVTZWxlY3Rpb24gPSBmYWxzZSwgYm9vbCBwcmVzZXJ2ZVN0eWxlID0gdHJ1ZSk7
CiAgICAgdm9pZCBtb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBW
aXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIHByZXNlcnZlU2Vs
ZWN0aW9uID0gZmFsc2UsIGJvb2wgcHJlc2VydmVTdHlsZSA9IHRydWUpOwpJbmRleDogV2ViQ29y
ZS9lZGl0aW5nL0NyZWF0ZUxpbmtDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Vk
aXRpbmcvQ3JlYXRlTGlua0NvbW1hbmQuY3BwCShyZXZpc2lvbiA2NjAxOCkKKysrIFdlYkNvcmUv
ZWRpdGluZy9DcmVhdGVMaW5rQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEwICs0
Niw5IEBAIHZvaWQgQ3JlYXRlTGlua0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIFJlZlB0cjxIVE1M
QW5jaG9yRWxlbWVudD4gYW5jaG9yRWxlbWVudCA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQoKSk7CiAgICAgYW5jaG9yRWxlbWVudC0+c2V0SHJlZihtX3VybCk7CiAgICAgCi0g
ICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSkgewotICAgICAgICBwdXNoUGFydGlh
bGx5U2VsZWN0ZWRBbmNob3JFbGVtZW50c0Rvd24oKTsKKyAgICBpZiAoZW5kaW5nU2VsZWN0aW9u
KCkuaXNSYW5nZSgpKQogICAgICAgICBhcHBseVN0eWxlZEVsZW1lbnQoYW5jaG9yRWxlbWVudC5n
ZXQoKSk7Ci0gICAgfSBlbHNlIHsKKyAgICBlbHNlIHsKICAgICAgICAgaW5zZXJ0Tm9kZUF0KGFu
Y2hvckVsZW1lbnQuZ2V0KCksIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOwogICAgICAgICBS
ZWZQdHI8VGV4dD4gdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgbV91cmwpOwog
ICAgICAgICBhcHBlbmROb2RlKHRleHROb2RlLmdldCgpLCBhbmNob3JFbGVtZW50LmdldCgpKTsK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9VbmxpbmtDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvVW5saW5rQ29tbWFuZC5jcHAJKHJldmlzaW9uIDY2MDE4KQorKysgV2Vi
Q29yZS9lZGl0aW5nL1VubGlua0NvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0
MCw2IEBAIHZvaWQgVW5saW5rQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgLy8gRklYTUU6IElmIGEg
Y2FyZXQgaXMgaW5zaWRlIGEgbGluaywgd2Ugc2hvdWxkIHJlbW92ZSBpdCwgYnV0IGN1cnJlbnRs
eSB3ZSBkb24ndC4KICAgICBpZiAoIWVuZGluZ1NlbGVjdGlvbigpLmlzUmFuZ2UoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAKLSAgICBwdXNoUGFydGlhbGx5U2VsZWN0ZWRBbmNob3JFbGVt
ZW50c0Rvd24oKTsKIAogICAgIHJlbW92ZVN0eWxlZEVsZW1lbnQoSFRNTEFuY2hvckVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCgpKSk7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NjAxOCkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEw
LTA4LTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0aW5nIGEgbGluayB3aGVuIHNl
bGVjdGluZyBtdWx0aXBsZSBub2RlcyBjcmVhdGVzIG11bHRpcGxlIGxpbmtzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDgzNgorCisgICAgICAgIEFk
ZGVkIGEgdGVzdCB0byBlbnN1cmUgV2ViS2l0IGNyZWF0ZXMgc2luZ2xlIGFuY2hvciBlbGVtZW50
IG9uIGV4ZWNDb21tYW5kKCdjcmVhdGVMaW5rJykgaWYgcG9zc2libGUuCisgICAgICAgIEFsc28g
cmViYXNlbGluZWQgc2V2ZXJhbCB0ZXN0cyB0byBtYXRjaCBuZXcgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2NyZWF0ZUxpbmstZXhwZWN0ZWQudHh0OiBNZXJnZWQg
c29tZSBhbmNob3IgZWxlbWVudHMuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9zY3Jp
cHQtdGVzdHMvdG9nZ2xlLWxpbmsuanM6IEFkZGVkLgorICAgICAgICAodGVzdFNpbmdsZVRvZ2ds
ZSk6CisgICAgICAgIChzZWxlY3RBbGwpOgorICAgICAgICAoc2VsZWN0Rmlyc3RUd29Xb3Jkcyk6
CisgICAgICAgIChzZWxlY3RMYXN0V29yZCk6CisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFu
ZC9zY3JpcHQtdGVzdHMvdG9nZ2xlLXN0eWxlLTMuanM6IGkgZWxlbWVudHMgYXJlIG1lcmdlZC4K
KyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS1zdHlsZS0zLWV4cGVjdGVkLnR4
dDogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtbGluay1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvdG9nZ2xlLWxp
bmsuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC91bmxpbmstZXhw
ZWN0ZWQudHh0OiBNZXJnZWQgc29tZSBhbmNob3IgZWxlbWVudHMuCisKIDIwMTAtMDgtMjUgIFBh
dmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvY3JlYXRlTGluay1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC9jcmVhdGVMaW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjYwMTgp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2NyZWF0ZUxpbmstZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw3IEBAIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRCZWdpbkVkaXRpbmcKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBBID4gRElWID4gTEkg
PiBPTCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEwIG9mICN0ZXh0ID4gQSA+IERJViA+
IExJID4gT0wgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFm
ZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTog
c2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDQgb2YgI3RleHQgPiBBID4g
RElWID4gTEkgPiBPTCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDE0IG9mICN0ZXh0ID4g
QSA+IERJViA+IExJID4gT0wgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gMCBvZiAjdGV4dCA+IEEgPiBESVYgPiBMSSA+IE9MID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMTAgb2YgI3RleHQgPiBBID4gRElWID4gTEkgPiBPTCA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxs
U2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElO
RyBERUxFR0FURTogc2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJ
ViA+IExJID4gT0wgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mIERJViA+IExJID4g
T0wgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudApAQCAtNTksNCArNTgsNCBAQCBpbm5lckhUTUwg
b2YgZWRpdGFibGUgcmVnaW9ucyBhZnRlciB0aGUgCiA8YSBocmVmPSJodHRwOi8vd3d3Lmdvb2ds
ZS5jb20vIj5UaGlzIHBhcmFncmFwaCBzdGFydHMgdW5saW5rZWQuIFRoZSBlbnRpcmUgcGFyYWdy
YXBoIHNob3VsZCBlbmQgdXAgYmVpbmcgYSBsaW5rIHRvIGdvb2dsZS5jb20uPC9hPgogPGEgaHJl
Zj0iaHR0cDovL3d3dy5hcHBsZS5jb20vIj5UaGlzPC9hPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29v
Z2xlLmNvbS8iPiBwYXJhZ3JhcGg8L2E+PGEgaHJlZj0iaHR0cDovL3d3dy5hcHBsZS5jb20vIj4g
c3RhcnRzIG91dCBhcyBhIGxpbmsgdG8gYXBwbGUuY29tLiBUaGUgc2Vjb25kIHdvcmQgaW4gdGhl
IHBhcmFncmFwaCBzaG91bGQgZW5kIHVwIGJlaW5nIGEgbGluayB0byBnb29nbGUuY29tLjwvYT4K
IDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBwbGUuY29tLyI+VGhpczwvYT48YSBocmVmPSJodHRwOi8v
d3d3Lmdvb2dsZS5jb20vIj4gcGFyYWdyYXBoPC9hPjxhIGhyZWY9Imh0dHA6Ly93d3cuYXBwbGUu
Y29tLyI+IHN0YXJ0cyBvdXQgYXMgYSBsaW5rIHRvIGFwcGxlLmNvbS4gVGhlIHNlY29uZCB3b3Jk
IGluIHRoZSBwYXJhZ3JhcGggc2hvdWxkIGVuZCB1cCBiZWluZyBhIGxpbmsgdG8gZ29vZ2xlLmNv
bS48L2E+Ci08cD48YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIj5UaGlzIDwvYT48aT48
YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIj5lZGl0YWJsZSByZWdpb248L2E+PC9pPjxh
IGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPiBjb250YWlucyBsaXN0cywgdGFibGVzLCBz
dHlsZWQgdGV4dCwgYW5kIGltYWdlcy4gVGhlIGVudGlyZSByZWdpb24gc2hvdWxkIGVuZCB1cCBi
ZWluZyBhIGxpbmsgdG8gZ29vZ2xlLmNvbS48L2E+PC9wPiA8dWw+IDxsaT48YSBocmVmPSJodHRw
Oi8vd3d3Lmdvb2dsZS5jb20vIj5JdGVtIDE8L2E+PC9saT4gPGxpPjxhIGhyZWY9Imh0dHA6Ly93
d3cuZ29vZ2xlLmNvbS8iPkl0ZW0gMjwvYT48L2xpPiA8L3VsPiA8dGFibGUgYm9yZGVyPSIxIj48
dGJvZHk+PHRyPjx0ZD48YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIj4xPC9hPjwvdGQ+
PHRkPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPjI8L2E+PC90ZD48dGQ+PGEgaHJl
Zj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyI+MzwvYT48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxl
PiA8YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIj48YnI+IFRoaXMgPC9hPjxiPjxhIGhy
ZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPmxpbmU8L2E+PC9iPjxhIGhyZWY9Imh0dHA6Ly93
d3cuZ29vZ2xlLmNvbS8iPiBjb250YWlucyA8aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FiZS5wbmci
PiBhbiBpbWFnZS4gPC9hPgorPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyI+VGhp
cyA8aT5lZGl0YWJsZSByZWdpb248L2k+IGNvbnRhaW5zIGxpc3RzLCB0YWJsZXMsIHN0eWxlZCB0
ZXh0LCBhbmQgaW1hZ2VzLiBUaGUgZW50aXJlIHJlZ2lvbiBzaG91bGQgZW5kIHVwIGJlaW5nIGEg
bGluayB0byBnb29nbGUuY29tLjwvYT48L3A+IDx1bD4gPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cu
Z29vZ2xlLmNvbS8iPkl0ZW0gMTwvYT48L2xpPiA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nb29n
bGUuY29tLyI+SXRlbSAyPC9hPjwvbGk+IDwvdWw+IDx0YWJsZSBib3JkZXI9IjEiPjx0Ym9keT48
dHI+PHRkPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPjE8L2E+PC90ZD48dGQ+PGEg
aHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyI+MjwvYT48L3RkPjx0ZD48YSBocmVmPSJodHRw
Oi8vd3d3Lmdvb2dsZS5jb20vIj4zPC9hPjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+IDxhIGhy
ZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iPjxicj4gVGhpcyA8Yj5saW5lPC9iPiBjb250YWlu
cyA8aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FiZS5wbmciPiBhbiBpbWFnZS4gPC9hPgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtbGluay1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtbGlu
ay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL3RvZ2dsZS1saW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MyBAQAorVGVzdCB0byBtYWtlIHN1cmUgd2UgcmVtb3ZlIHNwYW4gdGFncyB3aXRoIG5vIGF0dHJp
YnV0ZXMgaWYgd2UgcmVtb3ZlZCB0aGUgbGFzdCBhdHRyaWJ1dGUuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHNlbGVjdCBhbGwgb2YgImhlbGxvIDxiPndvcmxkPC9iPiIg
YW5kIGNyZWF0ZUxpbmsgKGh0dHA6Ly93ZWJraXQub3JnLykgeWllbGRzICI8YSBocmVmPSJodHRw
Oi8vd2Via2l0Lm9yZy8iPmhlbGxvIDxiPndvcmxkPC9iPjwvYT4iCitQQVNTIHNlbGVjdCBhbGwg
b2YgIjx1PmhlbGxvIHdvcmxkPC91PiIgYW5kIGNyZWF0ZUxpbmsgKGh0dHA6Ly93ZWJraXQub3Jn
LykgeWllbGRzICI8dT48YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPmhlbGxvIHdvcmxkPC9h
PjwvdT4iCitQQVNTIHNlbGVjdCBhbGwgb2YgImhlbGxvIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndl
YmtpdC5vcmcvIj53b3JsZDwvYT4iIGFuZCBjcmVhdGVMaW5rIChodHRwOi8vd2Via2l0Lm9yZy8p
IHlpZWxkcyAiPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbyB3b3JsZDwvYT4iCitQ
QVNTIHNlbGVjdCBhbGwgb2YgImhlbGxvIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5vcmcv
IiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQiPndvcmxkPC9hPiIgYW5kIGNyZWF0ZUxpbmsgKGh0
dHA6Ly93ZWJraXQub3JnLykgeWllbGRzICI8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPmhl
bGxvIDxiPndvcmxkPC9iPjwvYT4iCitQQVNTIHNlbGVjdCBmaXJzdCB0d28gd29yZHMgb2YgImhl
bGxvIDxiPndvcmxkPC9iPiBXZWJLaXQiIGFuZCBjcmVhdGVMaW5rIChodHRwOi8vd2Via2l0Lm9y
Zy8pIHlpZWxkcyAiPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbyA8Yj53b3JsZDwv
Yj48L2E+IFdlYktpdCIKK1BBU1Mgc2VsZWN0IGZpcnN0IHR3byB3b3JkcyBvZiAiPGEgaHJlZj0i
aHR0cDovL3RyYWMud2Via2l0Lm9yZy8iPmhlbGxvIDxiPndvcmxkPC9iPjwvYT4gV2ViS2l0IiBh
bmQgY3JlYXRlTGluayAoaHR0cDovL3dlYmtpdC5vcmcvKSB5aWVsZHMgIjxhIGhyZWY9Imh0dHA6
Ly93ZWJraXQub3JnLyI+aGVsbG8gPGI+d29ybGQ8L2I+PC9hPiBXZWJLaXQiCitQQVNTIHNlbGVj
dCBmaXJzdCB0d28gd29yZHMgb2YgIjxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIiBz
dHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+aGVsbG8gd29ybGQ8L2E+IFdlYktpdCIgYW5kIGNy
ZWF0ZUxpbmsgKGh0dHA6Ly93ZWJraXQub3JnLykgeWllbGRzICI8aT48YSBocmVmPSJodHRwOi8v
d2Via2l0Lm9yZy8iPmhlbGxvIHdvcmxkPC9hPjwvaT4gV2ViS2l0IgorUEFTUyBzZWxlY3QgZmly
c3QgdHdvIHdvcmRzIG9mICJoZWxsbyA8YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnLyI+
PGI+d29ybGQ8L2I+IFdlYktpdDwvYT4iIGFuZCBjcmVhdGVMaW5rIChodHRwOi8vd2Via2l0Lm9y
Zy8pIHlpZWxkcyAiPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbyA8Yj53b3JsZDwv
Yj48L2E+PGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8iPiBXZWJLaXQ8L2E+IgorUEFT
UyBzZWxlY3QgZmlyc3QgdHdvIHdvcmRzIG9mICJoZWxsbyA8YSBocmVmPSJodHRwOi8vdHJhYy53
ZWJraXQub3JnLyIgc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPjxiPndvcmxkPC9iPiBXZWJL
aXQ8L2E+IiBhbmQgY3JlYXRlTGluayAoaHR0cDovL3dlYmtpdC5vcmcvKSB5aWVsZHMgIjxhIGhy
ZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+aGVsbG8gPGIgc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxp
YzsgIj53b3JsZDwvYj48L2E+PGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8iPjxpPiBX
ZWJLaXQ8L2k+PC9hPiIKK1BBU1Mgc2VsZWN0IGxhc3Qgd29yZCBvZiAiaGVsbG8gPGI+d29ybGQ8
L2I+IFdlYktpdCIgYW5kIGNyZWF0ZUxpbmsgKGh0dHA6Ly93ZWJraXQub3JnLykgeWllbGRzICJo
ZWxsbyA8Yj53b3JsZDwvYj4gPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5XZWJLaXQ8L2E+
IgorUEFTUyBzZWxlY3QgbGFzdCB3b3JkIG9mICI8dT5oZWxsbyA8Yj53b3JsZDwvYj4gV2ViS2l0
PC91PiIgYW5kIGNyZWF0ZUxpbmsgKGh0dHA6Ly93ZWJraXQub3JnLykgeWllbGRzICI8dT5oZWxs
byA8Yj53b3JsZDwvYj4gPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5XZWJLaXQ8L2E+PC91
PiIKK1BBU1Mgc2VsZWN0IGxhc3Qgd29yZCBvZiAiPGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0
Lm9yZy8iPjxkaXY+aGVsbG88L2Rpdj48ZGl2PndvcmxkPC9kaXY+PC9hPiIgYW5kIGNyZWF0ZUxp
bmsgKGh0dHA6Ly93ZWJraXQub3JnLykgeWllbGRzICI8ZGl2PjxhIGhyZWY9Imh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvIj5oZWxsbzwvYT48L2Rpdj48ZGl2PjxhIGhyZWY9Imh0dHA6Ly93ZWJraXQu
b3JnLyI+d29ybGQ8L2E+PC9kaXY+IgorUEFTUyBzZWxlY3QgbGFzdCB3b3JkIG9mICI8YSBocmVm
PSJodHRwOi8vdHJhYy53ZWJraXQub3JnLyIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+PGRp
dj5oZWxsbzwvZGl2PjxkaXY+d29ybGQ8L2Rpdj48L2E+IiBhbmQgY3JlYXRlTGluayAoaHR0cDov
L3dlYmtpdC5vcmcvKSB5aWVsZHMgIjxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyAiPjxh
IGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIj5oZWxsbzwvYT48L2Rpdj48ZGl2IHN0eWxl
PSJmb250LXdlaWdodDogYm9sZDsgIj48YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPndvcmxk
PC9hPjwvZGl2PiIKK1BBU1Mgc2VsZWN0IGxhc3Qgd29yZCBvZiAiPGEgaHJlZj0iaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy8iIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjxkaXYgc3R5bGU9ImZv
bnQtd2VpZ2h0OiBub3JtYWw7Ij5oZWxsbzwvZGl2PjxkaXY+d29ybGQ8L2Rpdj48L2E+IiBhbmQg
Y3JlYXRlTGluayAoaHR0cDovL3dlYmtpdC5vcmcvKSB5aWVsZHMgIjxkaXYgc3R5bGU9ImZvbnQt
d2VpZ2h0OiBub3JtYWw7ICI+PGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8iPmhlbGxv
PC9hPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyAiPjxhIGhyZWY9Imh0dHA6
Ly93ZWJraXQub3JnLyI+d29ybGQ8L2E+PC9kaXY+IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvdG9nZ2xlLWxpbmsuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS1saW5rLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS1saW5rLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3RvZ2dsZS1saW5rLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC90b2dnbGUtc3R5bGUtMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtc3R5bGUtMy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDY2MDE4KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtc3R5
bGUtMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBAIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogUEFTUyBvbmUgYm9sZCBjb21tYW5k
IGNvbnZlcnRlZCBoZWxsbzxiIGlkPSJ0ZXN0Ij53b3JsZDwvYj4gdG8gPGI+aGVsbG88L2I+PGIg
aWQ9InRlc3QiPndvcmxkPC9iPgogUEFTUyBvbmUgYm9sZCBjb21tYW5kIGNvbnZlcnRlZCBoZWxs
bzxiPjxpPndvcmxkPC9pPjwvYj4gdG8gPGI+aGVsbG88aT53b3JsZDwvaT48L2I+Ci1QQVNTIG9u
ZSBpdGFsaWMgY29tbWFuZCBjb252ZXJ0ZWQgaGVsbG8gPGk+d29ybGQ8L2k+IDxiPndlYmtpdDwv
Yj4gdG8gPGk+aGVsbG8gd29ybGQgPC9pPjxiPjxpPndlYmtpdDwvaT48L2I+CitQQVNTIG9uZSBp
dGFsaWMgY29tbWFuZCBjb252ZXJ0ZWQgaGVsbG8gPGk+d29ybGQ8L2k+IDxiPndlYmtpdDwvYj4g
dG8gPGk+aGVsbG8gd29ybGQgPGI+d2Via2l0PC9iPjwvaT4KIFBBU1Mgb25lIGl0YWxpYyBjb21t
YW5kIGNvbnZlcnRlZCBoZWxsbyA8aT53b3JsZDwvaT4gd2Via2l0IHRvIDxpPmhlbGxvIHdvcmxk
IHdlYmtpdDwvaT4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC91bmxpbmstZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvdW5saW5rLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNjYwMTgpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3Vu
bGluay1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzLDggKzEzLDcgQEAgRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZwogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgot
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VT
ZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+
IERJViA+IExJID4gT0wgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA3IG9mICN0ZXh0ID4g
RElWID4gTEkgPiBPTCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+
IEEgPiBESVYgPiBMSSA+IE9MID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTAgb2YgI3Rl
eHQgPiBBID4gRElWID4gTEkgPiBPTCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gTEkgPiBPTCA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDcgb2YgI3RleHQgPiBESVYgPiBMSSA+IE9MID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxl
Y3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4g
TEkgPiBPTCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgRElWID4gTEkgPiBPTCA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CkBAIC02Niw0ICs2NSw0IEBAIFRoZSBpbm5lckhUTUwg
b2YgZWRpdGFibGUgcmVnaW9ucyBhZnRlciAKIFRoaXMgcGFyYWdyYXBoIHNob3VsZCBzaG91bGQg
ZW5kIHVwIHVubGlua2VkLgogPGEgaHJlZj0iaHR0cDovL3d3dy5hcHBsZS5jb20vIj5UaGU8L2E+
IHNlY29uZDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBwbGUuY29tLyI+IHdvcmQgaW4gdGhpcyBwYXJh
Z3JhcGggc2hvdWxkIGVuZCB1cCBiZWluZyB1bmxpbmtlZCwgZXZlcnl0aGluZyBlbHNlIHNob3Vs
ZCBiZSBhIGxpbmsuPC9hPgogVGhpcyBwYXJhZ3JhcGggc3RhcnRzIHdpdGggPGk+PGEgaHJlZj0i
aHR0cDovL3d3dy5nb29nbGUuY29tIj5hPC9hPjwvaT48c3BhbiBpZD0idGVzdDNzdGFydCI+IGxp
bms8L3NwYW4+IGluIHRoZSBtaWRkbGUuIE9ubHkgdGhlICdhJyBpbiB0aGUgcHJldmlvdXMgc2Vu
dGVuY2Ugc2hvdWxkIGJlIGxpbmtlZCBhZnRlciB0aGUgdGVzdC4KLTxwPlRoaXMgPGk+ZWRpdGFi
bGUgcmVnaW9uPC9pPiBjb250YWlucyBsaXN0cywgdGFibGVzLCBzdHlsZWQgdGV4dCwgYW5kIGlt
YWdlcy4gRXZlcnl0aGluZyBpbiB0aGlzIHJlZ2lvbiB0aGF0IGlzIG5vdCBzZWxlY3RlZCBzaG91
bGQgYmUgYSBsaW5rLCBub3RoaW5nIHRoYXQgaXMgc2VsZWN0ZWQgc2hvdWxkIGJlIGEgbGluay48
L3A+IDx1bD4gPGxpPkl0ZW0gMTwvbGk+IDxsaT5JdGVtIDI8L2xpPiA8L3VsPiA8dGFibGUgYm9y
ZGVyPSIxIj48dGJvZHk+PHRyPjx0ZD4xPC90ZD48dGQ+MjwvdGQ+PHRkPjxzcGFuIGlkPSJ0ZXN0
NGVuZCI+PGEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyI+MzwvYT48L3NwYW4+PC90ZD48
L3RyPjwvdGJvZHk+PC90YWJsZT4gPGEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyI+PGJy
PiBUaGlzIDwvYT48Yj48YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIj5saW5lPC9hPjwv
Yj48YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIj4gY29udGFpbnMgPGltZyBzcmM9Ii4u
L3Jlc291cmNlcy9hYmUucG5nIj4gYW4gaW1hZ2UuIDwvYT4KKzxwPlRoaXMgPGk+ZWRpdGFibGUg
cmVnaW9uPC9pPiBjb250YWlucyBsaXN0cywgdGFibGVzLCBzdHlsZWQgdGV4dCwgYW5kIGltYWdl
cy4gRXZlcnl0aGluZyBpbiB0aGlzIHJlZ2lvbiB0aGF0IGlzIG5vdCBzZWxlY3RlZCBzaG91bGQg
YmUgYSBsaW5rLCBub3RoaW5nIHRoYXQgaXMgc2VsZWN0ZWQgc2hvdWxkIGJlIGEgbGluay48L3A+
IDx1bD4gPGxpPkl0ZW0gMTwvbGk+IDxsaT5JdGVtIDI8L2xpPiA8L3VsPiA8dGFibGUgYm9yZGVy
PSIxIj48dGJvZHk+PHRyPjx0ZD4xPC90ZD48dGQ+MjwvdGQ+PHRkPjxzcGFuIGlkPSJ0ZXN0NGVu
ZCI+PGEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyI+MzwvYT48L3NwYW4+PC90ZD48L3Ry
PjwvdGJvZHk+PC90YWJsZT4gPGEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyI+PGJyPiBU
aGlzIDxiPmxpbmU8L2I+IGNvbnRhaW5zIDxpbWcgc3JjPSIuLi9yZXNvdXJjZXMvYWJlLnBuZyI+
IGFuIGltYWdlLiA8L2E+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3Nj
cmlwdC10ZXN0cy90b2dnbGUtbGluay5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy90b2dnbGUtbGluay5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvc2NyaXB0LXRlc3RzL3RvZ2dsZS1s
aW5rLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACitkZXNjcmlwdGlvbigiVGVzdCB0
byBtYWtlIHN1cmUgd2UgcmVtb3ZlIHNwYW4gdGFncyB3aXRoIG5vIGF0dHJpYnV0ZXMgaWYgd2Ug
cmVtb3ZlZCB0aGUgbGFzdCBhdHRyaWJ1dGUuIikKKwordmFyIHRlc3RDb250YWluZXIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK3Rlc3RDb250YWluZXIuY29udGVudEVkaXRhYmxl
ID0gdHJ1ZTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVzdENvbnRhaW5lcik7CisKK2Z1
bmN0aW9uIHRlc3RTaW5nbGVUb2dnbGUodG9nZ2xlQ29tbWFuZCwgaW5pdGlhbENvbnRlbnRzLCBz
ZWxlY3RvciwgZXhwZWN0ZWRDb250ZW50cykKK3sKKyAgICB0ZXN0Q29udGFpbmVyLmlubmVySFRN
TCA9IGluaXRpYWxDb250ZW50czsKKyAgICB2YXIgc2VsZWN0ZWQgPSBzZWxlY3Rvcih0ZXN0Q29u
dGFpbmVyKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCh0b2dnbGVDb21tYW5kLCBmYWxzZSwg
J2h0dHA6Ly93ZWJraXQub3JnLycpOworICAgIGFjdGlvbiA9ICdzZWxlY3QgJyArIHNlbGVjdGVk
ICsgJyBvZiAiJyArIGluaXRpYWxDb250ZW50cyArICciIGFuZCAnICsgdG9nZ2xlQ29tbWFuZCAr
ICcgKGh0dHA6Ly93ZWJraXQub3JnLykgeWllbGRzICInICsgdGVzdENvbnRhaW5lci5pbm5lckhU
TUwgKyAnIic7CisgICAgaWYgKHRlc3RDb250YWluZXIuaW5uZXJIVE1MID09PSBleHBlY3RlZENv
bnRlbnRzKQorICAgICAgICB0ZXN0UGFzc2VkKGFjdGlvbik7CisgICAgZWxzZQorICAgICAgICB0
ZXN0RmFpbGVkKGFjdGlvbiArICcsIGV4cGVjdGVkICInICsgZXhwZWN0ZWRDb250ZW50cyArICci
Jyk7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdEFsbChjb250YWluZXIpIHsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuc2VsZWN0QWxsQ2hpbGRyZW4oY29udGFpbmVyKTsKKyAgICByZXR1cm4gJ2Fs
bCc7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdEZpcnN0VHdvV29yZHMoY29udGFpbmVyKSB7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGNvbnRhaW5lciwgMCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLm1vZGlmeSgnZXh0ZW5kJywgJ2ZvcndhcmQnLCAnd29yZCcpOwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ2V4dGVuZCcsICdmb3J3YXJkJywgJ3dv
cmQnKTsKKyAgICByZXR1cm4gJ2ZpcnN0IHR3byB3b3Jkcyc7Cit9CisKK2Z1bmN0aW9uIHNlbGVj
dExhc3RXb3JkKGNvbnRhaW5lcikgeworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3Np
dGlvbihjb250YWluZXIsIGNvbnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0aCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLm1vZGlmeSgnZXh0ZW5kJywgJ2JhY2t3YXJkJywgJ3dvcmQnKTsKKyAg
ICByZXR1cm4gJ2xhc3Qgd29yZCc7Cit9CisKK3Rlc3RTaW5nbGVUb2dnbGUoImNyZWF0ZUxpbmsi
LCAnaGVsbG8gPGI+d29ybGQ8L2I+Jywgc2VsZWN0QWxsLCAnPGEgaHJlZj0iaHR0cDovL3dlYmtp
dC5vcmcvIj5oZWxsbyA8Yj53b3JsZDwvYj48L2E+Jyk7Cit0ZXN0U2luZ2xlVG9nZ2xlKCJjcmVh
dGVMaW5rIiwgJzx1PmhlbGxvIHdvcmxkPC91PicsIHNlbGVjdEFsbCwgJzx1PjxhIGhyZWY9Imh0
dHA6Ly93ZWJraXQub3JnLyI+aGVsbG8gd29ybGQ8L2E+PC91PicpOwordGVzdFNpbmdsZVRvZ2ds
ZSgiY3JlYXRlTGluayIsICdoZWxsbyA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3JnLyI+
d29ybGQ8L2E+Jywgc2VsZWN0QWxsLCAnPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5oZWxs
byB3b3JsZDwvYT4nKTsKK3Rlc3RTaW5nbGVUb2dnbGUoImNyZWF0ZUxpbmsiLCAnaGVsbG8gPGEg
aHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy8iIHN0eWxlPSJmb250LXdlaWdodDogYm9sZCI+
d29ybGQ8L2E+Jywgc2VsZWN0QWxsLCAnPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5oZWxs
byA8Yj53b3JsZDwvYj48L2E+Jyk7Cit0ZXN0U2luZ2xlVG9nZ2xlKCJjcmVhdGVMaW5rIiwgJ2hl
bGxvIDxiPndvcmxkPC9iPiBXZWJLaXQnLCBzZWxlY3RGaXJzdFR3b1dvcmRzLCAnPGEgaHJlZj0i
aHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbyA8Yj53b3JsZDwvYj48L2E+IFdlYktpdCcpOwordGVz
dFNpbmdsZVRvZ2dsZSgiY3JlYXRlTGluayIsICc8YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQu
b3JnLyI+aGVsbG8gPGI+d29ybGQ8L2I+PC9hPiBXZWJLaXQnLCBzZWxlY3RGaXJzdFR3b1dvcmRz
LCAnPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbyA8Yj53b3JsZDwvYj48L2E+IFdl
YktpdCcpOwordGVzdFNpbmdsZVRvZ2dsZSgiY3JlYXRlTGluayIsICc8YSBocmVmPSJodHRwOi8v
dHJhYy53ZWJraXQub3JnLyIgc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPmhlbGxvIHdvcmxk
PC9hPiBXZWJLaXQnLCBzZWxlY3RGaXJzdFR3b1dvcmRzLCAnPGk+PGEgaHJlZj0iaHR0cDovL3dl
YmtpdC5vcmcvIj5oZWxsbyB3b3JsZDwvYT48L2k+IFdlYktpdCcpOwordGVzdFNpbmdsZVRvZ2ds
ZSgiY3JlYXRlTGluayIsICdoZWxsbyA8YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnLyI+
PGI+d29ybGQ8L2I+IFdlYktpdDwvYT4nLCBzZWxlY3RGaXJzdFR3b1dvcmRzLCAnPGEgaHJlZj0i
aHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbyA8Yj53b3JsZDwvYj48L2E+PGEgaHJlZj0iaHR0cDov
L3RyYWMud2Via2l0Lm9yZy8iPiBXZWJLaXQ8L2E+Jyk7Cit0ZXN0U2luZ2xlVG9nZ2xlKCJjcmVh
dGVMaW5rIiwgJ2hlbGxvIDxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIiBzdHlsZT0i
Zm9udC1zdHlsZTogaXRhbGljOyI+PGI+d29ybGQ8L2I+IFdlYktpdDwvYT4nLCBzZWxlY3RGaXJz
dFR3b1dvcmRzLCAnPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbyA8YiBzdHlsZT0i
Zm9udC1zdHlsZTogaXRhbGljOyAiPndvcmxkPC9iPjwvYT48YSBocmVmPSJodHRwOi8vdHJhYy53
ZWJraXQub3JnLyI+PGk+IFdlYktpdDwvaT48L2E+Jyk7Cit0ZXN0U2luZ2xlVG9nZ2xlKCJjcmVh
dGVMaW5rIiwgJ2hlbGxvIDxiPndvcmxkPC9iPiBXZWJLaXQnLCBzZWxlY3RMYXN0V29yZCwgJ2hl
bGxvIDxiPndvcmxkPC9iPiA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPldlYktpdDwvYT4n
KTsKK3Rlc3RTaW5nbGVUb2dnbGUoImNyZWF0ZUxpbmsiLCAnPHU+aGVsbG8gPGI+d29ybGQ8L2I+
IFdlYktpdDwvdT4nLCBzZWxlY3RMYXN0V29yZCwgJzx1PmhlbGxvIDxiPndvcmxkPC9iPiA8YSBo
cmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPldlYktpdDwvYT48L3U+Jyk7Cit0ZXN0U2luZ2xlVG9n
Z2xlKCJjcmVhdGVMaW5rIiwgJzxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIj48ZGl2
PmhlbGxvPC9kaXY+PGRpdj53b3JsZDwvZGl2PjwvYT4nLCBzZWxlY3RMYXN0V29yZCwgJzxkaXY+
PGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8iPmhlbGxvPC9hPjwvZGl2PjxkaXY+PGEg
aHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj53b3JsZDwvYT48L2Rpdj4nKTsKK3Rlc3RTaW5nbGVU
b2dnbGUoImNyZWF0ZUxpbmsiLCAnPGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8iIHN0
eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjxkaXY+aGVsbG88L2Rpdj48ZGl2PndvcmxkPC9kaXY+
PC9hPicsIHNlbGVjdExhc3RXb3JkLCAnPGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7ICI+
PGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8iPmhlbGxvPC9hPjwvZGl2PjxkaXYgc3R5
bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyAiPjxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+d29y
bGQ8L2E+PC9kaXY+Jyk7Cit0ZXN0U2luZ2xlVG9nZ2xlKCJjcmVhdGVMaW5rIiwgJzxhIGhyZWY9
Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48ZGl2
IHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsOyI+aGVsbG88L2Rpdj48ZGl2PndvcmxkPC9kaXY+
PC9hPicsIHNlbGVjdExhc3RXb3JkLCAnPGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsg
Ij48YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnLyI+aGVsbG88L2E+PC9kaXY+PGRpdiBz
dHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7ICI+PGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj53
b3JsZDwvYT48L2Rpdj4nKTsKKworZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZXN0Q29udGFp
bmVyKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy90b2dnbGUtc3R5bGUtMy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy90
b2dnbGUtc3R5bGUtMy5qcwkocmV2aXNpb24gNjYwMTgpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy90b2dnbGUtc3R5bGUtMy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMTgsNyArMTgsNyBAQCBmdW5jdGlvbiB0ZXN0U2luZ2xlVG9nZ2xlKHRvZ2dsZUNvbW1h
bmQsCiAKIHRlc3RTaW5nbGVUb2dnbGUoImJvbGQiLCAnaGVsbG88YiBpZD0idGVzdCI+d29ybGQ8
L2I+JywgJzxiPmhlbGxvPC9iPjxiIGlkPSJ0ZXN0Ij53b3JsZDwvYj4nKTsKIHRlc3RTaW5nbGVU
b2dnbGUoImJvbGQiLCAnaGVsbG88Yj48aT53b3JsZDwvaT48L2I+JywgJzxiPmhlbGxvPGk+d29y
bGQ8L2k+PC9iPicpOwotdGVzdFNpbmdsZVRvZ2dsZSgiaXRhbGljIiwgJ2hlbGxvIDxpPndvcmxk
PC9pPiA8Yj53ZWJraXQ8L2I+JywgJzxpPmhlbGxvIHdvcmxkIDwvaT48Yj48aT53ZWJraXQ8L2k+
PC9iPicpOwordGVzdFNpbmdsZVRvZ2dsZSgiaXRhbGljIiwgJ2hlbGxvIDxpPndvcmxkPC9pPiA8
Yj53ZWJraXQ8L2I+JywgJzxpPmhlbGxvIHdvcmxkIDxiPndlYmtpdDwvYj48L2k+Jyk7CiB0ZXN0
U2luZ2xlVG9nZ2xlKCJpdGFsaWMiLCAnaGVsbG8gPGk+d29ybGQ8L2k+IHdlYmtpdCcsICc8aT5o
ZWxsbyB3b3JsZCB3ZWJraXQ8L2k+Jyk7CiAKIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVz
dENvbnRhaW5lcik7Cg==
</data>
<flag name="review"
          id="54256"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>