<?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>221243</bug_id>
          
          <creation_ts>2021-02-01 20:28:32 -0800</creation_ts>
          <short_desc>Avoid creating JS wrapper on a removed node when the subtree is not observable</short_desc>
          <delta_ts>2021-02-04 16:10:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1724516</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-01 20:28:32 -0800</bug_when>
    <thetext>We should avoid force creating JS wrappers for the root node of a removed subtree
when the subtree is not otherwise observable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724517</commentid>
    <comment_count>1</comment_count>
      <attachid>418955</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-01 20:29:48 -0800</bug_when>
    <thetext>Created attachment 418955
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724518</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-01 20:30:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/73719386&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725030</commentid>
    <comment_count>3</comment_count>
      <attachid>419109</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-02 22:18:46 -0800</bug_when>
    <thetext>Created attachment 419109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725371</commentid>
    <comment_count>4</comment_count>
      <attachid>419109</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-02-03 15:25:09 -0800</bug_when>
    <thetext>Comment on attachment 419109
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        it has a significant runtime and memory cost - the latter is because we never collect the JS wrappers of
&gt; +        DOM nodes once they&apos;re created.

Surely it&apos;s not *never*?

&gt; Source/WebCore/ChangeLog:21
&gt; +        won&apos;t be observable by scripts in the future. The current heuristics is to check if the removed node

heuristic

&gt; Source/WebCore/ChangeLog:24
&gt; +        into existence, which increments the reference counnt. The two notable exceptions are StaticRange and

count

I think the explanation for why this approach is sufficient need not be tied to any statement about JS wrappers. The explanation is simply that &quot;if there is no reference count, then there is no external reference&quot; -- because those are the rules of reference counting.

&gt; Source/WebCore/ChangeLog:39
&gt; +        condition is refCount() &gt; 2 because this function collects the list of child nodes to be removed in
&gt; +        Vector&lt;Ref&lt;Node&gt;&gt; and the removeBetween loop itself stores it again in a RefPtr, the latter of which is

The refCount() &gt; 2 comment probably belongs inside the function. That&apos;s a little subtle.

&gt; Source/WebCore/dom/ContainerNode.cpp:116
&gt; +    bool hasChildListChanged = false;
&gt;      while (RefPtr&lt;Node&gt; child = m_firstChild) {
&gt; +        if (i &gt;= children.size() || children[i++].ptr() != child)
&gt; +            hasChildListChanged = true;

I don&apos;t understand why we care if children have changed.

If a child has been removed, that is not an external reference to this subtree.

If a child has been added, that is not an external reference to this subtree unless the child has an external reference, which the refcount check will cover.

If a child has been moved, that is just a removal followed by an addition, so it is covered by the logic above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725373</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-02-03 15:26:24 -0800</bug_when>
    <thetext>(If we do have some reason to care about children changing, then we need to think a little bit about the ABA case where children change, and then change back. Our hasChildListChanged would not be able to detect that case.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725468</commentid>
    <comment_count>6</comment_count>
      <attachid>419109</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-02-03 20:29:16 -0800</bug_when>
    <thetext>Comment on attachment 419109
Patch

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

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:116
&gt;&gt; +            hasChildListChanged = true;
&gt; 
&gt; I don&apos;t understand why we care if children have changed.
&gt; 
&gt; If a child has been removed, that is not an external reference to this subtree.
&gt; 
&gt; If a child has been added, that is not an external reference to this subtree unless the child has an external reference, which the refcount check will cover.
&gt; 
&gt; If a child has been moved, that is just a removal followed by an addition, so it is covered by the logic above.

I guess the issue here is that, if an event fired above, and then added a node to the subtree, we don&apos;t know what refCount check to do. Nodes in the children set should be checked for &gt; 2, and other nodes should be checked for &gt; 1, and we don&apos;t have an obvious way to tell the difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725470</commentid>
    <comment_count>7</comment_count>
      <attachid>419109</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-02-03 20:34:44 -0800</bug_when>
    <thetext>Comment on attachment 419109
Patch

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

r=me

&gt;&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:116
&gt;&gt;&gt; +            hasChildListChanged = true;
&gt;&gt; 
&gt;&gt; I don&apos;t understand why we care if children have changed.
&gt;&gt; 
&gt;&gt; If a child has been removed, that is not an external reference to this subtree.
&gt;&gt; 
&gt;&gt; If a child has been added, that is not an external reference to this subtree unless the child has an external reference, which the refcount check will cover.
&gt;&gt; 
&gt;&gt; If a child has been moved, that is just a removal followed by an addition, so it is covered by the logic above.
&gt; 
&gt; I guess the issue here is that, if an event fired above, and then added a node to the subtree, we don&apos;t know what refCount check to do. Nodes in the children set should be checked for &gt; 2, and other nodes should be checked for &gt; 1, and we don&apos;t have an obvious way to tell the difference.

^ I guess this is worth a comment next to hasChildListChanged; but I can&apos;t think of an obviously better alternative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725477</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-03 21:11:38 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #7)
&gt; Comment on attachment 419109 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=419109&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:116
&gt; &gt;&gt;&gt; +            hasChildListChanged = true;
&gt; &gt;&gt; 
&gt; &gt;&gt; I don&apos;t understand why we care if children have changed.
&gt; &gt;&gt; 
&gt; &gt;&gt; If a child has been removed, that is not an external reference to this subtree.
&gt; &gt;&gt; 
&gt; &gt;&gt; If a child has been added, that is not an external reference to this subtree unless the child has an external reference, which the refcount check will cover.
&gt; &gt;&gt; 
&gt; &gt;&gt; If a child has been moved, that is just a removal followed by an addition, so it is covered by the logic above.
&gt; &gt; 
&gt; &gt; I guess the issue here is that, if an event fired above, and then added a node to the subtree, we don&apos;t know what refCount check to do. Nodes in the children set should be checked for &gt; 2, and other nodes should be checked for &gt; 1, and we don&apos;t have an obvious way to tell the difference.
&gt; 
&gt; ^ I guess this is worth a comment next to hasChildListChanged; but I can&apos;t
&gt; think of an obviously better alternative.

Turns out that we don&apos;t actually need this check after all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725478</commentid>
    <comment_count>9</comment_count>
      <attachid>419226</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-03 21:11:45 -0800</bug_when>
    <thetext>Created attachment 419226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725485</commentid>
    <comment_count>10</comment_count>
      <attachid>419228</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-03 21:35:15 -0800</bug_when>
    <thetext>Created attachment 419228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725693</commentid>
    <comment_count>11</comment_count>
      <attachid>419228</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-02-04 10:30:29 -0800</bug_when>
    <thetext>Comment on attachment 419228
Patch

So much better! :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725821</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-04 14:52:41 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #11)
&gt; Comment on attachment 419228 [details]
&gt; Patch
&gt; 
&gt; So much better! :P

Indeed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725825</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-04 15:14:10 -0800</bug_when>
    <thetext>commit-queue failed to commit attachment 419228 to WebKit repository. To retry, please set cq+ flag again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725856</commentid>
    <comment_count>14</comment_count>
      <attachid>419228</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-04 16:10:32 -0800</bug_when>
    <thetext>Comment on attachment 419228
Patch

Clearing flags on attachment: 419228

Committed r272394: &lt;https://trac.webkit.org/changeset/272394&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725857</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-04 16:10:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418955</attachid>
            <date>2021-02-01 20:29:48 -0800</date>
            <delta_ts>2021-02-02 22:18:44 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wip221243.patch</filename>
            <type>text/plain</type>
            <size>13368</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBiOWNiZjY5NzBlZmIuLjhmYWM0
YTMwODI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMTA5LDkgKzEw
OSwxNSBAQCBBTFdBWVNfSU5MSU5FIE5vZGVWZWN0b3IgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxs
Q2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaQogCiAgICAgZG9jdW1lbnQoKS5ub2RlQ2hp
bGRyZW5XaWxsQmVSZW1vdmVkKCp0aGlzKTsKIAorICAgIHNpemVfdCBpID0gMDsKKyAgICBib29s
IGhhc0NoaWxkTGlzdENoYW5nZWQgPSBmYWxzZTsKICAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IGNo
aWxkID0gbV9maXJzdENoaWxkKSB7CisgICAgICAgIGlmIChpID49IGNoaWxkcmVuLnNpemUoKSB8
fCBjaGlsZHJlbltpKytdLnB0cigpICE9IGNoaWxkKQorICAgICAgICAgICAgaGFzQ2hpbGRMaXN0
Q2hhbmdlZCA9IHRydWU7CiAgICAgICAgIHJlbW92ZUJldHdlZW4obnVsbHB0ciwgY2hpbGQtPm5l
eHRTaWJsaW5nKCksICpjaGlsZCk7Ci0gICAgICAgIG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoKnRo
aXMsICpjaGlsZCk7CisgICAgICAgIGF1dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlD
aGlsZE5vZGVSZW1vdmVkKCp0aGlzLCAqY2hpbGQpOworICAgICAgICBpZiAoc291cmNlID09IENo
aWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSAmJiAoc3VidHJlZU9ic2VydmFiaWxpdHkgPT0gUmVtb3Zl
ZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0ciB8fCBoYXNDaGls
ZExpc3RDaGFuZ2VkIHx8IGNoaWxkLT5yZWZDb3VudCgpID4gMikpCisgICAgICAgICAgICB3aWxs
Q3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoY2hpbGQuZ2V0KCkpOwogICAgIH0K
IAogICAgIGlmIChkZWZlckNoaWxkcmVuQ2hhbmdlZCA9PSBEZWZlckNoaWxkcmVuQ2hhbmdlZDo6
Tm8pCkBAIC0xNDksNiArMTU1LDcgQEAgQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6
OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW0KICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgQ2hpbGRDaGFuZ2UgY2hhbmdlOworICAgIFJlbW92ZWRTdWJ0
cmVlT2JzZXJ2YWJpbGl0eSBzdWJ0cmVlT2JzZXJ2YWJpbGl0eTsKICAgICB7CiAgICAgICAgIFdp
ZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdldEhpZXJhcmNo
eVVwZGF0ZXM7CiAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNj
cmlwdERpc2FsbG93ZWRTY29wZTsKQEAgLTE2NCw3ICsxNzEsNyBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9kZSYgY2hp
bGRUb1JlbQogICAgICAgICBSZWZQdHI8Tm9kZT4gcHJldmlvdXNTaWJsaW5nID0gY2hpbGRUb1Jl
bW92ZS5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgUmVmUHRyPE5vZGU+IG5leHRTaWJsaW5n
ID0gY2hpbGRUb1JlbW92ZS5uZXh0U2libGluZygpOwogICAgICAgICByZW1vdmVCZXR3ZWVuKHBy
ZXZpb3VzU2libGluZy5nZXQoKSwgbmV4dFNpYmxpbmcuZ2V0KCksIGNoaWxkVG9SZW1vdmUpOwot
ICAgICAgICBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKCp0aGlzLCBjaGlsZFRvUmVtb3ZlKTsKKyAg
ICAgICAgc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKCp0aGlz
LCBjaGlsZFRvUmVtb3ZlKTsKIAogICAgICAgICBjaGFuZ2UudHlwZSA9IGlzPEVsZW1lbnQ+KGNo
aWxkVG9SZW1vdmUpID8KICAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50UmVt
b3ZlZCA6CkBAIC0xNzYsNiArMTgzLDkgQEAgQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5v
ZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW0KICAgICAg
ICAgY2hhbmdlLnNvdXJjZSA9IHNvdXJjZTsKICAgICB9CiAKKyAgICBpZiAoc291cmNlID09IENo
aWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSAmJiAoc3VidHJlZU9ic2VydmFiaWxpdHkgPT0gUmVtb3Zl
ZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0ciB8fCBjaGlsZFRv
UmVtb3ZlLnJlZkNvdW50KCkgPiAxKSkKKyAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFu
ZWRUcmVlQnlSZW1vdmFsKCZjaGlsZFRvUmVtb3ZlKTsKKwogICAgIC8vIEZJWE1FOiBNb3ZlIGNo
aWxkcmVuQ2hhbmdlZCBpbnRvIFNjcmlwdERpc2FsbG93ZWRTY29wZSBibG9jay4KICAgICBjaGls
ZHJlbkNoYW5nZWQoY2hhbmdlKTsKIApAQCAtMjI0LDE4ICsyMzQsMjYgQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgdm9pZCBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oQ29u
dGFpbmVyTm9kZSYKICAgICAgICAgZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50cyhjaGlsZCk7
CiB9CiAKLXN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBjb2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVG
cm9tT2xkUGFyZW50KE5vZGUmIG5vZGUsIE5vZGVWZWN0b3ImIG5vZGVzKQorRXhjZXB0aW9uT3I8
dm9pZD4gQ29udGFpbmVyTm9kZTo6cmVtb3ZlU2VsZk9yQ2hpbGROb2Rlc0Zvckluc2VydGlvbihO
b2RlJiBjaGlsZCwgTm9kZVZlY3RvciYgbm9kZXNGb3JJbnNlcnRpb24pCiB7Ci0gICAgaWYgKCFp
czxEb2N1bWVudEZyYWdtZW50Pihub2RlKSkgewotICAgICAgICBub2Rlcy5hcHBlbmQobm9kZSk7
Ci0gICAgICAgIGF1dG8qIG9sZFBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOworICAgIGlmICgh
aXM8RG9jdW1lbnRGcmFnbWVudD4oY2hpbGQpKSB7CisgICAgICAgIG5vZGVzRm9ySW5zZXJ0aW9u
LmFwcGVuZChjaGlsZCk7CisgICAgICAgIGF1dG8gb2xkUGFyZW50ID0gbWFrZVJlZlB0cihjaGls
ZC5wYXJlbnROb2RlKCkpOwogICAgICAgICBpZiAoIW9sZFBhcmVudCkKICAgICAgICAgICAgIHJl
dHVybiB7IH07Ci0gICAgICAgIHJldHVybiBvbGRQYXJlbnQtPnJlbW92ZUNoaWxkKG5vZGUpOwor
ICAgICAgICByZXR1cm4gb2xkUGFyZW50LT5yZW1vdmVDaGlsZChjaGlsZCk7CiAgICAgfQogCi0g
ICAgbm9kZXMgPSBjb2xsZWN0Q2hpbGROb2Rlcyhub2RlKTsKLSAgICBkb3duY2FzdDxEb2N1bWVu
dEZyYWdtZW50Pihub2RlKS5yZW1vdmVDaGlsZHJlbigpOworICAgIGF1dG8mIGZyYWdtZW50ID0g
ZG93bmNhc3Q8RG9jdW1lbnRGcmFnbWVudD4oY2hpbGQpOworICAgIGlmICghZnJhZ21lbnQuaGFz
Q2hpbGROb2RlcygpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byByZW1vdmVkQ2hp
bGROb2RlcyA9IGZyYWdtZW50LnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbihD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpBUEkpOworICAgIG5vZGVzRm9ySW5z
ZXJ0aW9uLnN3YXAocmVtb3ZlZENoaWxkTm9kZXMpOworCisgICAgZnJhZ21lbnQucmVidWlsZFNW
R0V4dGVuc2lvbnNFbGVtZW50c0lmTmVjZXNzYXJ5KCk7CisgICAgZnJhZ21lbnQuZGlzcGF0Y2hT
dWJ0cmVlTW9kaWZpZWRFdmVudCgpOworCiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMzkzLDEz
ICs0MTEsMTMgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3Jl
KE5vZGUmIG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCkKICAgICBSZWY8Tm9kZT4gbmV4dCgqcmVm
Q2hpbGQpOwogCiAgICAgTm9kZVZlY3RvciB0YXJnZXRzOwotICAgIGF1dG8gcmVtb3ZlUmVzdWx0
ID0gY29sbGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudChuZXdDaGlsZCwgdGFyZ2V0
cyk7CisgICAgYXV0byByZW1vdmVSZXN1bHQgPSByZW1vdmVTZWxmT3JDaGlsZE5vZGVzRm9ySW5z
ZXJ0aW9uKG5ld0NoaWxkLCB0YXJnZXRzKTsKICAgICBpZiAocmVtb3ZlUmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gcmVtb3ZlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsK
ICAgICBpZiAodGFyZ2V0cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAv
LyBXZSBuZWVkIHRoaXMgZXh0cmEgY2hlY2sgYmVjYXVzZSBjb2xsZWN0Q2hpbGRyZW5BbmRSZW1v
dmVGcm9tT2xkUGFyZW50KCkgY2FuIGZpcmUgbXV0YXRpb24gZXZlbnRzLgorICAgIC8vIFdlIG5l
ZWQgdGhpcyBleHRyYSBjaGVjayBiZWNhdXNlIHJlbW92ZVNlbGZPckNoaWxkTm9kZXNGb3JJbnNl
cnRpb24oKSBjYW4gZmlyZSBtdXRhdGlvbiBldmVudHMuCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6
IHRhcmdldHMpIHsKICAgICAgICAgYXV0byBjaGVja0FjY2VwdFJlc3VsdCA9IGNoZWNrQWNjZXB0
Q2hpbGRHdWFyYW50ZWVkTm9kZVR5cGVzKCp0aGlzLCBjaGlsZCk7CiAgICAgICAgIGlmIChjaGVj
a0FjY2VwdFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTUwOCwxMiArNTI2LDEyIEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChOb2RlJiBuZXdDaGlsZCwg
Tm9kZSYgb2xkQ2hpbGQpCiAgICAgTm9kZVZlY3RvciB0YXJnZXRzOwogICAgIHsKICAgICAgICAg
Q2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbigqdGhpcyk7Ci0gICAgICAgIGF1dG8gY29s
bGVjdFJlc3VsdCA9IGNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQobmV3Q2hp
bGQsIHRhcmdldHMpOworICAgICAgICBhdXRvIGNvbGxlY3RSZXN1bHQgPSByZW1vdmVTZWxmT3JD
aGlsZE5vZGVzRm9ySW5zZXJ0aW9uKG5ld0NoaWxkLCB0YXJnZXRzKTsKICAgICAgICAgaWYgKGNv
bGxlY3RSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gY29sbGVjdFJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgfQogCi0gICAgLy8gRG8gdGhpcyBvbmUgbW9y
ZSB0aW1lIGJlY2F1c2UgY29sbGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudCgpIGZp
cmVzIGEgTXV0YXRpb25FdmVudC4KKyAgICAvLyBEbyB0aGlzIG9uZSBtb3JlIHRpbWUgYmVjYXVz
ZSByZW1vdmVTZWxmT3JDaGlsZE5vZGVzRm9ySW5zZXJ0aW9uKCkgZmlyZXMgYSBNdXRhdGlvbkV2
ZW50LgogICAgIGZvciAoYXV0byYgY2hpbGQgOiB0YXJnZXRzKSB7CiAgICAgICAgIHZhbGlkaXR5
UmVzdWx0ID0gY2hlY2tQcmVSZXBsYWNlbWVudFZhbGlkaXR5KCp0aGlzLCBjaGlsZCwgb2xkQ2hp
bGQsIFNob3VsZFZhbGlkYXRlQ2hpbGRQYXJlbnQ6Ok5vKTsKICAgICAgICAgaWYgKHZhbGlkaXR5
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtNzA3LDE0ICs3MjUsMTQgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRp
dHlDaGVjayhOb2QKICAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
CiAKICAgICBOb2RlVmVjdG9yIHRhcmdldHM7Ci0gICAgYXV0byByZW1vdmVSZXN1bHQgPSBjb2xs
ZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KG5ld0NoaWxkLCB0YXJnZXRzKTsKKyAg
ICBhdXRvIHJlbW92ZVJlc3VsdCA9IHJlbW92ZVNlbGZPckNoaWxkTm9kZXNGb3JJbnNlcnRpb24o
bmV3Q2hpbGQsIHRhcmdldHMpOwogICAgIGlmIChyZW1vdmVSZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiByZW1vdmVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAgICAg
aWYgKHRhcmdldHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgLy8gV2Ug
bmVlZCB0aGlzIGV4dHJhIGNoZWNrIGJlY2F1c2UgY29sbGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJv
bU9sZFBhcmVudCgpIGNhbiBmaXJlIG11dGF0aW9uIGV2ZW50cy4KKyAgICAvLyBXZSBuZWVkIHRo
aXMgZXh0cmEgY2hlY2sgYmVjYXVzZSByZW1vdmVTZWxmT3JDaGlsZE5vZGVzRm9ySW5zZXJ0aW9u
KCkgY2FuIGZpcmUgbXV0YXRpb24gZXZlbnRzLgogICAgIGZvciAoYXV0byYgY2hpbGQgOiB0YXJn
ZXRzKSB7CiAgICAgICAgIGF1dG8gbm9kZVR5cGVSZXN1bHQgPSBjaGVja0FjY2VwdENoaWxkR3Vh
cmFudGVlZE5vZGVUeXBlcygqdGhpcywgY2hpbGQpOwogICAgICAgICBpZiAobm9kZVR5cGVSZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC04NTcsMTAgKzg3NSw2IEBAIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoQ2hpbGRSZW1vdmFsRXZlbnRzKFJlZjxOb2RlPiYgY2hpbGQpCiAgICAgaWYgKGNoaWxkLT5p
c0luU2hhZG93VHJlZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogVGhpcyBk
b2Vzbid0IGJlbG9uZyBpbiBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cy4KLSAgICAvLyBGSVhN
RTogTm9kZXMgcmVtb3ZlZCBmcm9tIGEgc2hhZG93IHRyZWUgc2hvdWxkIGFsc28gYmUga2VwdCBh
bGl2ZS4KLSAgICB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoY2hpbGQu
cHRyKCkpOwotCiAgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudCA9IGNoaWxkLT5kb2N1bWVudCgp
OwogCiAgICAgLy8gZGlzcGF0Y2ggcHJlLXJlbW92YWwgbXV0YXRpb24gZXZlbnRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCAwZWE2MDYxNzY5NjkuLjk5NzM0NWM1MGE1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0xNTAsNiArMTUwLDcgQEAgcHJpdmF0ZToK
ICAgICBlbnVtIGNsYXNzIERlZmVyQ2hpbGRyZW5DaGFuZ2VkIHsgWWVzLCBObyB9OwogICAgIE5v
ZGVWZWN0b3IgcmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaWxkQ2hhbmdl
OjpTb3VyY2UsIERlZmVyQ2hpbGRyZW5DaGFuZ2VkID0gRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Ok5v
KTsKICAgICBib29sIHJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmLCBDaGlsZENo
YW5nZTo6U291cmNlKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmVTZWxmT3JDaGlsZE5v
ZGVzRm9ySW5zZXJ0aW9uKE5vZGUmLCBOb2RlVmVjdG9yJik7CiAKICAgICB2b2lkIHJlbW92ZUJl
dHdlZW4oTm9kZSogcHJldmlvdXNDaGlsZCwgTm9kZSogbmV4dENoaWxkLCBOb2RlJiBvbGRDaGls
ZCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kQ2hpbGRXaXRob3V0UHJlSW5zZXJ0aW9u
VmFsaWRpdHlDaGVjayhOb2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGVBbGdvcml0aG1zLmNwcAppbmRleCAyYWYyNzYxODc3NTcuLjM2OTk5N2UwYjBhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCkBAIC0xMDcs
NDkgKzEwNyw2NiBAQCBOb2RlVmVjdG9yIG5vdGlmeUNoaWxkTm9kZUluc2VydGVkKENvbnRhaW5l
ck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlLCBOb2RlJiBubwogICAgIHJldHVybiBwb3N0SW5z
ZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0czsKIH0KIAotc3RhdGljIHZvaWQgbm90aWZ5Tm9kZVJl
bW92ZWRGcm9tRG9jdW1lbnQoQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwg
VHJlZVNjb3BlQ2hhbmdlIHRyZWVTY29wZUNoYW5nZSwgTm9kZSYgbm9kZSkKK2lubGluZSBSZW1v
dmVkU3VidHJlZU9ic2VydmFiaWxpdHkgb2JzZXJ2YWJpbGl0eU9mUmVtb3ZlZE5vZGUoTm9kZSYg
bm9kZSkKK3sKKyAgICBib29sIGlzUm9vdE9mUmVtb3ZlZFRyZWUgPSAhbm9kZS5wYXJlbnROb2Rl
KCk7CisgICAgcmV0dXJuIG5vZGUucmVmQ291bnQoKSA+IDEgJiYgIWlzUm9vdE9mUmVtb3ZlZFRy
ZWUgPyBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHk6Ok1heWJlT2JzZXJ2YWJsZUJ5UmVmUHRy
IDogUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpOb3RPYnNlcnZhYmxlOworfQorCitpbmxp
bmUgdm9pZCB1cGRhdGVPYnNlcnZhYmlsaXR5KFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eSYg
Y3VycmVudE9ic2VydmFiaWxpdHksIFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eSBuZXdTdGF0
dXMpCit7CisgICAgaWYgKG5ld1N0YXR1cyA9PSBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHk6
Ok1heWJlT2JzZXJ2YWJsZUJ5UmVmUHRyKQorICAgICAgICBjdXJyZW50T2JzZXJ2YWJpbGl0eSA9
IG5ld1N0YXR1czsKK30KKworc3RhdGljIFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eSBub3Rp
ZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92
ZWRUcmVlLCBUcmVlU2NvcGVDaGFuZ2UgdHJlZVNjb3BlQ2hhbmdlLCBOb2RlJiBub2RlKQogewog
ICAgIEFTU0VSVChvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLmlzQ29ubmVjdGVkKCkpOwogICAgIEFT
U0VSVChub2RlLmlzQ29ubmVjdGVkKCkpOwogICAgIG5vZGUucmVtb3ZlZEZyb21BbmNlc3RvcihO
b2RlOjpSZW1vdmFsVHlwZSB7IC8qIGRpc2Nvbm5lY3RlZEZyb21Eb2N1bWVudCAqLyB0cnVlLCB0
cmVlU2NvcGVDaGFuZ2UgPT0gVHJlZVNjb3BlQ2hhbmdlOjpDaGFuZ2VkIH0sIG9sZFBhcmVudE9m
UmVtb3ZlZFRyZWUpOwogCisgICAgYXV0byBvYnNlcnZhYmlsaXR5ID0gb2JzZXJ2YWJpbGl0eU9m
UmVtb3ZlZE5vZGUobm9kZSk7CiAgICAgaWYgKCFpczxDb250YWluZXJOb2RlPihub2RlKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gb2JzZXJ2YWJpbGl0eTsKIAogICAgIGZvciAo
UmVmUHRyPE5vZGU+IGNoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4obm9kZSkuZmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlLmlzQ29ubmVjdGVk
KCkgJiYgY2hpbGQtPnBhcmVudE5vZGUoKSA9PSAmbm9kZSk7Ci0gICAgICAgIG5vdGlmeU5vZGVS
ZW1vdmVkRnJvbURvY3VtZW50KG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIHRyZWVTY29wZUNoYW5n
ZSwgKmNoaWxkLmdldCgpKTsKKyAgICAgICAgdXBkYXRlT2JzZXJ2YWJpbGl0eShvYnNlcnZhYmls
aXR5LCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChvbGRQYXJlbnRPZlJlbW92ZWRUcmVl
LCB0cmVlU2NvcGVDaGFuZ2UsICpjaGlsZC5nZXQoKSkpOwogICAgIH0KIAogICAgIGlmICghaXM8
RWxlbWVudD4obm9kZSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG9ic2VydmFi
aWxpdHk7CiAKICAgICBpZiAoUmVmUHRyPFNoYWRvd1Jvb3Q+IHJvb3QgPSBkb3duY2FzdDxFbGVt
ZW50Pihub2RlKS5zaGFkb3dSb290KCkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighbm9kZS5pc0Nvbm5lY3RlZCgpICYmIHJvb3QtPmhvc3QoKSA9
PSAmbm9kZSk7Ci0gICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KG9sZFBhcmVu
dE9mUmVtb3ZlZFRyZWUsIFRyZWVTY29wZUNoYW5nZTo6RGlkTm90Q2hhbmdlLCAqcm9vdC5nZXQo
KSk7CisgICAgICAgIHVwZGF0ZU9ic2VydmFiaWxpdHkob2JzZXJ2YWJpbGl0eSwgbm90aWZ5Tm9k
ZVJlbW92ZWRGcm9tRG9jdW1lbnQob2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgVHJlZVNjb3BlQ2hh
bmdlOjpEaWROb3RDaGFuZ2UsICpyb290LmdldCgpKSk7CiAgICAgfQorICAgIHJldHVybiBvYnNl
cnZhYmlsaXR5OwogfQogCi1zdGF0aWMgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKENv
bnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIFRyZWVTY29wZUNoYW5nZSB0cmVl
U2NvcGVDaGFuZ2UsIE5vZGUmIG5vZGUpCitzdGF0aWMgUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmls
aXR5IG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZS
ZW1vdmVkVHJlZSwgVHJlZVNjb3BlQ2hhbmdlIHRyZWVTY29wZUNoYW5nZSwgTm9kZSYgbm9kZSkK
IHsKICAgICBBU1NFUlQoIW9sZFBhcmVudE9mUmVtb3ZlZFRyZWUuaXNDb25uZWN0ZWQoKSk7CiAK
ICAgICBub2RlLnJlbW92ZWRGcm9tQW5jZXN0b3IoTm9kZTo6UmVtb3ZhbFR5cGUgeyAvKiBkaXNj
b25uZWN0ZWRGcm9tRG9jdW1lbnQgKi8gZmFsc2UsIHRyZWVTY29wZUNoYW5nZSA9PSBUcmVlU2Nv
cGVDaGFuZ2U6OkNoYW5nZWQgfSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7CiAKKyAgICBhdXRv
IG9ic2VydmFiaWxpdHkgPSBvYnNlcnZhYmlsaXR5T2ZSZW1vdmVkTm9kZShub2RlKTsKICAgICBp
ZiAoIWlzPENvbnRhaW5lck5vZGU+KG5vZGUpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBvYnNlcnZhYmlsaXR5OwogCiAgICAgZm9yIChSZWZQdHI8Tm9kZT4gY2hpbGQgPSBkb3du
Y2FzdDxDb250YWluZXJOb2RlPihub2RlKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpKQotICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKG9s
ZFBhcmVudE9mUmVtb3ZlZFRyZWUsIHRyZWVTY29wZUNoYW5nZSwgKmNoaWxkKTsKKyAgICAgICAg
dXBkYXRlT2JzZXJ2YWJpbGl0eShvYnNlcnZhYmlsaXR5LCBub3RpZnlOb2RlUmVtb3ZlZEZyb21U
cmVlKG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIHRyZWVTY29wZUNoYW5nZSwgKmNoaWxkKSk7CiAK
ICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBvYnNlcnZhYmlsaXR5OwogCiAgICAgaWYgKFJlZlB0cjxTaGFkb3dSb290PiByb290ID0g
ZG93bmNhc3Q8RWxlbWVudD4obm9kZSkuc2hhZG93Um9vdCgpKQotICAgICAgICBub3RpZnlOb2Rl
UmVtb3ZlZEZyb21UcmVlKG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIFRyZWVTY29wZUNoYW5nZTo6
RGlkTm90Q2hhbmdlLCAqcm9vdCk7CisgICAgICAgIHVwZGF0ZU9ic2VydmFiaWxpdHkob2JzZXJ2
YWJpbGl0eSwgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShvbGRQYXJlbnRPZlJlbW92ZWRUcmVl
LCBUcmVlU2NvcGVDaGFuZ2U6OkRpZE5vdENoYW5nZSwgKnJvb3QpKTsKKworICAgIHJldHVybiBv
YnNlcnZhYmlsaXR5OwogfQogCi12b2lkIG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoQ29udGFpbmVy
Tm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgTm9kZSYgY2hpbGQpCitSZW1vdmVkU3VidHJl
ZU9ic2VydmFiaWxpdHkgbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZChDb250YWluZXJOb2RlJiBvbGRQ
YXJlbnRPZlJlbW92ZWRUcmVlLCBOb2RlJiBjaGlsZCkKIHsKICAgICAvLyBBc3NlcnQgdGhhdCB0
aGUgY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24gaGFzIGFuIGluc3RhbmNlIG9mIFNjcmlwdERpc2Fs
bG93ZWRTY29wZS4KICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpIHx8IFNjcmlwdERpc2FsbG93
ZWRTY29wZTo6SW5NYWluVGhyZWFkOjpoYXNEaXNhbGxvd2VkU2NvcGUoKSk7CkBAIC0xNTgsOSAr
MTc1LDggQEAgdm9pZCBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKENvbnRhaW5lck5vZGUmIG9sZFBh
cmVudE9mUmVtb3ZlZFRyZWUsIE5vZGUmIGNoaWxkKQogICAgIC8vIFRyZWUgc2NvcGUgaGFzIGNo
YW5nZWQgaWYgdGhlIGNvbnRhaW5lciBub2RlIGZyb20gd2hpY2ggIm5vZGUiIGlzIHJlbW92ZWQg
aXMgaW4gYSBkb2N1bWVudCBvciBhIHNoYWRvdyByb290LgogICAgIGF1dG8gdHJlZVNjb3BlQ2hh
bmdlID0gb2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5pc0luVHJlZVNjb3BlKCkgPyBUcmVlU2NvcGVD
aGFuZ2U6OkNoYW5nZWQgOiBUcmVlU2NvcGVDaGFuZ2U6OkRpZE5vdENoYW5nZTsKICAgICBpZiAo
Y2hpbGQuaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1l
bnQob2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgdHJlZVNjb3BlQ2hhbmdlLCBjaGlsZCk7Ci0gICAg
ZWxzZQotICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKG9sZFBhcmVudE9mUmVtb3Zl
ZFRyZWUsIHRyZWVTY29wZUNoYW5nZSwgY2hpbGQpOworICAgICAgICByZXR1cm4gbm90aWZ5Tm9k
ZVJlbW92ZWRGcm9tRG9jdW1lbnQob2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgdHJlZVNjb3BlQ2hh
bmdlLCBjaGlsZCk7CisgICAgcmV0dXJuIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUob2xkUGFy
ZW50T2ZSZW1vdmVkVHJlZSwgdHJlZVNjb3BlQ2hhbmdlLCBjaGlsZCk7CiB9CiAKIHZvaWQgYWRk
Q2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShOb2RlKiYgaGVhZCwgTm9kZSomIHRhaWwsIENvbnRh
aW5lck5vZGUmIGNvbnRhaW5lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmgKaW5kZXggNDljOTc1ODUyMGVmLi5mODJkNmY1MTBhOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC02Miw3ICs2MiwxMSBA
QCBwdWJsaWM6CiAjZW5kaWYgLy8gbm90IEFTU0VSVF9FTkFCTEVECiAKIE5vZGVWZWN0b3Igbm90
aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQoQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUs
IE5vZGUmKTsKLXZvaWQgbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZChDb250YWluZXJOb2RlJiBvbGRQ
YXJlbnRPZlJlbW92ZWRUcmVlLCBOb2RlJik7CitlbnVtIGNsYXNzIFJlbW92ZWRTdWJ0cmVlT2Jz
ZXJ2YWJpbGl0eSB7CisgICAgTm90T2JzZXJ2YWJsZSwKKyAgICBNYXliZU9ic2VydmFibGVCeVJl
ZlB0ciwKK307CitSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgbm90aWZ5Q2hpbGROb2RlUmVt
b3ZlZChDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBOb2RlJik7CiB2b2lk
IHJlbW92ZURldGFjaGVkQ2hpbGRyZW5JbkNvbnRhaW5lcihDb250YWluZXJOb2RlJik7CiAKIGVu
dW0gU3ViZnJhbWVEaXNjb25uZWN0UG9saWN5IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419109</attachid>
            <date>2021-02-02 22:18:46 -0800</date>
            <delta_ts>2021-02-03 21:11:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221243-20210202221846.patch</filename>
            <type>text/plain</type>
            <size>18481</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODIxZTMxMmFkNTQwOTIy
MzcxYmI3Mjg0ZTAyYzIzZjc3Y2RhNDAyNy4uMDYxZWQ3NWJmYWU4M2QyNjg5YzAyNmQzZGFhMDA5
MTYzYTIxOGRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTAyLTAyICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEF2b2lkIGNyZWF0aW5nIEpT
IHdyYXBwZXIgb24gYSByZW1vdmVkIG5vZGUgd2hlbiB0aGUgc3VidHJlZSBpcyBub3Qgb2JzZXJ2
YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
MjQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzcxOTM4Nj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmlvciB0byB0aGlzIHBhdGNoLCBXZWJL
aXQgZm9yY2VkIHRoZSBjcmVhdGlvbiB0aGUgSlMgd3JhcHBlciBvbiB0aGUgcm9vdCBET00gbm9k
ZSBvZiBhIHJlbW92ZWQgc3VidHJlZQorICAgICAgICB0byBhdm9pZCBzY3JpcHQgb2JzZXJ2YWJs
ZSBkZWxldGlvbiBvZiBub2Rlcy4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBET00gbm9kZXMg
YXJlIHJlZmVyZW5jZSBjb3VudGVkCisgICAgICAgIGluIHRoZSBDKysgc2lkZSwgYW5kIHdoaWxl
IGEgRE9NIG5vZGUga2VlcHMgaXRzIGNoaWxkIG5vZGVzIGFsaXZlLCBpdCB3b24ndCBrZWVwIGl0
cyBwYXJlbnQgbm9kZSBhbGl2ZQorICAgICAgICB0byBhdm9pZCByZWZlcmVuY2UgY3ljbGVzIChs
ZWFrcykuIElmIHdlIGRpZG4ndCBmb3JjZSB0aGUgY3JlYXRpb24gb2YgdGhlIEpTIHdyYXBwZXIg
YW5kIHRoZSByb290IG5vZGUKKyAgICAgICAgb2YgdGhlIHJlbW92ZWQgc3VidHJlZSBkaWRuJ3Qg
aGF2ZSBhbnkgZXh0ZXJuYWwgcmVmZXJlbmNlIHRvIGl0IGluIEMrKyBzaWRlLCB3ZSB3b3VsZCBo
YXBwaWx5IGRlbGV0ZSBpdAorICAgICAgICBhbmQgYWxsIGl0cyBkZXNjZW5kYW50IG5vZGVzIGFi
b3ZlIGFueSBzdWJ0cmVlIHdpdGggYSBKUyB3cmFwcGVyIG9yIGFuIGV4dGVybmFsIEMrKyByZWZl
cmVuY2UuCisKKyAgICAgICAgV2hpbGUgdGhpcyB0dXJuZWQgb3V0IHRvIGJlIGFuIGVmZmVjdGl2
ZSBzdHJhdGVneSBmb3IgaW1wbGVtZW50aW5nIERPTSBub2RlcycgR0Mgc2VtYW50aWNzIGNvcnJl
Y3RseSwKKyAgICAgICAgaXQgaGFzIGEgc2lnbmlmaWNhbnQgcnVudGltZSBhbmQgbWVtb3J5IGNv
c3QgLSB0aGUgbGF0dGVyIGlzIGJlY2F1c2Ugd2UgbmV2ZXIgY29sbGVjdCB0aGUgSlMgd3JhcHBl
cnMgb2YKKyAgICAgICAgRE9NIG5vZGVzIG9uY2UgdGhleSdyZSBjcmVhdGVkLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBvcHRpbWl6YXRpb24gdG8gYXZvaWQgY3JlYXRp
bmcgdGhlc2UgSlMgd3JhcHBlcnMgd2hlbiB0aGUgcmVtb3ZlZCBzdWJ0cmVlCisgICAgICAgIHdv
bid0IGJlIG9ic2VydmFibGUgYnkgc2NyaXB0cyBpbiB0aGUgZnV0dXJlLiBUaGUgY3VycmVudCBo
ZXVyaXN0aWNzIGlzIHRvIGNoZWNrIGlmIHRoZSByZW1vdmVkIG5vZGUKKyAgICAgICAgaGFzIGFu
eSBleHRlcm5hbCByZWZlcmVuY2UgdG8gaXQgKGkuZS4gcmVmQ291bnQoKSA+IDAgZXhjbHVkaW5n
IGFueSByZWZlcmVuY2UgY291bnRpbmcgdGhhdCBoYXBwZW5zIHdpdGhpbgorICAgICAgICBvdXIg
YWxnb3JpdGhtKS4gVGhpcyBpcyBzdWZmaWNpZW50IGJlY2F1c2UgbW9zdCBlbGVtZW50cyBhcmUg
b25seSBvYnNlcnZhYmxlIG9uY2UgaXRzIEpTIHdyYXBwZXIgY29tZXMKKyAgICAgICAgaW50byBl
eGlzdGVuY2UsIHdoaWNoIGluY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VubnQuIFRoZSB0d28g
bm90YWJsZSBleGNlcHRpb25zIGFyZSBTdGF0aWNSYW5nZSBhbmQKKyAgICAgICAgTXV0YXRpb25S
ZWNvcmQgYnV0IHRoZXkgYm90aCB1c2UgUmVmUHRyIHRvIHJldGFpbiB0aGUgcmVsZXZhbnQgRE9N
IG5vZGVzLiBUaGlzIGlzIH4yLjUlIHByb2dyZXNzaW9uIG9uCisgICAgICAgIFNwZWVkb21ldGVy
LTIuMCBvbiBNYWNCb29rQWlyNywyLgorCisgICAgICAgIFRvIGRvIHRoaXMsIHdlIHRha2UgYWR2
YW50YWdlIG9mIHRoZSBmYWN0IG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQgYWxyZWFkeSB0cmF2ZXJz
ZXMgZWFjaCByZW1vdmVkIHN1YnRyZWUsCisgICAgICAgIGFuZCBjaGVjayBpZiBhbnkgb2YgdGhl
bSBoYXMgYSByZWZlcmVuY2UgY291bnQgZ3JlYXRlciB0aGFuIDEgKGdyZWF0ZXIgdGhhbiAxIGJl
Y2F1c2Ugbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZAorICAgICAgICBpdHNlbGYgaW5jcmVtZW50cyBu
b2RlJ3MgcmVmZXJlbmNlIGNvdW50IGJlZm9yZSBjYWxsaW5nIGl0c2VsZiBvbiBjaGlsZCBub2Rl
cykuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIGV4aXN0aW5nIHRlc3RzIHN1Y2ggYXMg
ZmFzdC9kb20vZ2MtMy5odG1sIGNvdmVycyBpdC4KKworICAgICAgICAqIGRvbS9Db250YWluZXJO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxk
cmVuV2l0aFNjcmlwdEFzc2VydGlvbik6IENhbGwgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRU
cmVlQnlSZW1vdmFsCisgICAgICAgIGlmIHRoZSByZW1vdmVkIHN1YnRyZWUgY29udGFpbnMgYW4g
b2JzZXJ2YWJsZSBub2RlLCB0aGUgY2hpbGQgbm9kZXMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHdlIGVu
dGVyZWQgdGhpcworICAgICAgICBmdW5jdGlvbiBkdWUgdG8gbXV0YXRpb24gZXZlbnRzIGZpcmVk
LCBvciB0aGUgcmVtb3ZlZCBub2RlIGl0c2VsZiBoYXMgYW4gZXh0ZXJuYWwgcmVmZXJlbmNlIHRv
IGl0LiBUaGUgbGFzdAorICAgICAgICBjb25kaXRpb24gaXMgcmVmQ291bnQoKSA+IDIgYmVjYXVz
ZSB0aGlzIGZ1bmN0aW9uIGNvbGxlY3RzIHRoZSBsaXN0IG9mIGNoaWxkIG5vZGVzIHRvIGJlIHJl
bW92ZWQgaW4KKyAgICAgICAgVmVjdG9yPFJlZjxOb2RlPj4gYW5kIHRoZSByZW1vdmVCZXR3ZWVu
IGxvb3AgaXRzZWxmIHN0b3JlcyBpdCBhZ2FpbiBpbiBhIFJlZlB0ciwgdGhlIGxhdHRlciBvZiB3
aGljaCBpcworICAgICAgICBuZWNlc3NhcnkgaW4gdGhlIGNhc2Ugb2YgYWZvcmVtZW50aW9uZWQg
bXV0YXRpb24gZXZlbnRzLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3Zl
Tm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnJlbW92ZVNlbGZPckNoaWxkTm9kZXNGb3JJbnNlcnRpb24pOiBSZW5hbWVkIGZy
b20gY29sbGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudC4KKyAgICAgICAgQXZvaWQg
Y29sbGVjdGluZyB0aGUgcmVtb3ZlZCBub2RlcyBpbiB0aGlzIGZ1bmN0aW9uIGluIGFkZGlpdG9u
IHRvIHJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbgorICAgICAgICBzbyB0aGF0
IHJlZkNvdW50KCkgaW4gcmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uIHN0YXlz
IDIgdW5sZXNzIHRoZXJlIGlzIGFuIGV4dGVybmFsIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250
YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9k
ZTo6YXBwZW5kQ2hpbGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayk6CisgICAgICAg
IChXZWJDb3JlOjpkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyk6IERvbid0IGNhbGwgd2lsbENy
ZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsIGhlcmUuCisgICAgICAgICogZG9tL0Nv
bnRhaW5lck5vZGUuaDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6b2JzZXJ2YWJpbGl0eU9mUmVtb3ZlZE5vZGUpOiBBZGRlZC4g
Q2hlY2tzIHRoZSBvYnNlcnZhYmlsaXR5IG9mIGEgbm9kZSBleGNsdWRpbmcgdGhlIHJvb3Qgbm9k
ZSBvZgorICAgICAgICB0aGUgcmVtb3ZlZCBzdWJ0cmVlIHNpbmNlIGl0IG5lZWRzIGEgc3BlY2lh
bCBjYXNlIGluIHJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbi4KKyAgICAgICAg
QXMgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQgYW5kIG5vdGlmeU5vZGVSZW1vdmVkRnJv
bVRyZWUgcmVmJ3MgZWFjaCBjaGlsZCBub2RlIGJlZm9yZSByZWN1cnNpbmcgb24gaXRzZWxmLAor
ICAgICAgICB3ZSBjaGVjayByZWZDb3VudCgpID4gMSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
dXBkYXRlT2JzZXJ2YWJpbGl0eSk6IEFkZGVkLiBBIGhlbHBlciBmdW5jdGlvbiB0byB1cGRhdGUg
UmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5LgorICAgICAgICAoV2ViQ29yZTo6bm90aWZ5Tm9k
ZVJlbW92ZWRGcm9tRG9jdW1lbnQpOiBOb3cgcmV0dXJucyBSZW1vdmVkU3VidHJlZU9ic2VydmFi
aWxpdHksCisgICAgICAgIChXZWJDb3JlOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpub3RpZnlDaGlsZE5vZGVSZW1vdmVkKTogRGl0dG8uCisg
ICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmg6CisKIDIwMjEtMDEtMzAgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RhdGljUmFuZ2Ugc2hv
dWxkIGtlZXAgaXRzIHN0YXJ0IGFuZCBlbmQgY29udGFpbmVycyBhbGl2ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGI5Y2JmNjk3MGVmYjBmZDgzNDA4ZWMyMGU1NGRkNmU5
N2U1OTI1NGIuLjhmYWM0YTMwODI0ZjI0NzgxNmRhMzUxZGQ5ZmViYTY4MWNiN2IyNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTEwOSw5ICsxMDksMTUgQEAgQUxXQVlT
X0lOTElORSBOb2RlVmVjdG9yIENvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNj
cmlwdEFzc2VydGlvbihDaGkKIAogICAgIGRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVt
b3ZlZCgqdGhpcyk7CiAKKyAgICBzaXplX3QgaSA9IDA7CisgICAgYm9vbCBoYXNDaGlsZExpc3RD
aGFuZ2VkID0gZmFsc2U7CiAgICAgd2hpbGUgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IG1fZmlyc3RD
aGlsZCkgeworICAgICAgICBpZiAoaSA+PSBjaGlsZHJlbi5zaXplKCkgfHwgY2hpbGRyZW5baSsr
XS5wdHIoKSAhPSBjaGlsZCkKKyAgICAgICAgICAgIGhhc0NoaWxkTGlzdENoYW5nZWQgPSB0cnVl
OwogICAgICAgICByZW1vdmVCZXR3ZWVuKG51bGxwdHIsIGNoaWxkLT5uZXh0U2libGluZygpLCAq
Y2hpbGQpOwotICAgICAgICBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKCp0aGlzLCAqY2hpbGQpOwor
ICAgICAgICBhdXRvIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID0gbm90aWZ5Q2hpbGROb2RlUmVtb3Zl
ZCgqdGhpcywgKmNoaWxkKTsKKyAgICAgICAgaWYgKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291
cmNlOjpBUEkgJiYgKHN1YnRyZWVPYnNlcnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2
YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIgfHwgaGFzQ2hpbGRMaXN0Q2hhbmdlZCB8
fCBjaGlsZC0+cmVmQ291bnQoKSA+IDIpKQorICAgICAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5
T3JwaGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAoZGVm
ZXJDaGlsZHJlbkNoYW5nZWQgPT0gRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Ok5vKQpAQCAtMTQ5LDYg
KzE1NSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVOb2RlV2l0
aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIENoaWxkQ2hhbmdlIGNoYW5nZTsKKyAgICBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxp
dHkgc3VidHJlZU9ic2VydmFiaWxpdHk7CiAgICAgewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlV
cGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAg
ICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2Vk
U2NvcGU7CkBAIC0xNjQsNyArMTcxLDcgQEAgQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5v
ZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW0KICAgICAg
ICAgUmVmUHRyPE5vZGU+IHByZXZpb3VzU2libGluZyA9IGNoaWxkVG9SZW1vdmUucHJldmlvdXNT
aWJsaW5nKCk7CiAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXh0U2libGluZyA9IGNoaWxkVG9SZW1v
dmUubmV4dFNpYmxpbmcoKTsKICAgICAgICAgcmVtb3ZlQmV0d2VlbihwcmV2aW91c1NpYmxpbmcu
Z2V0KCksIG5leHRTaWJsaW5nLmdldCgpLCBjaGlsZFRvUmVtb3ZlKTsKLSAgICAgICAgbm90aWZ5
Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgY2hpbGRUb1JlbW92ZSk7CisgICAgICAgIHN1YnRyZWVP
YnNlcnZhYmlsaXR5ID0gbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgY2hpbGRUb1JlbW92
ZSk7CiAKICAgICAgICAgY2hhbmdlLnR5cGUgPSBpczxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSA/
CiAgICAgICAgICAgICBDaGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQgOgpAQCAtMTc2
LDYgKzE4Myw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVOb2Rl
V2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtCiAgICAgICAgIGNoYW5nZS5zb3Vy
Y2UgPSBzb3VyY2U7CiAgICAgfQogCisgICAgaWYgKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291
cmNlOjpBUEkgJiYgKHN1YnRyZWVPYnNlcnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2
YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIgfHwgY2hpbGRUb1JlbW92ZS5yZWZDb3Vu
dCgpID4gMSkpCisgICAgICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3Zh
bCgmY2hpbGRUb1JlbW92ZSk7CisKICAgICAvLyBGSVhNRTogTW92ZSBjaGlsZHJlbkNoYW5nZWQg
aW50byBTY3JpcHREaXNhbGxvd2VkU2NvcGUgYmxvY2suCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGNo
YW5nZSk7CiAKQEAgLTIyNCwxOCArMjM0LDI2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQg
ZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5lck5vZGUmCiAg
ICAgICAgIGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVudHMoY2hpbGQpOwogfQogCi1zdGF0aWMg
RXhjZXB0aW9uT3I8dm9pZD4gY29sbGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudChO
b2RlJiBub2RlLCBOb2RlVmVjdG9yJiBub2RlcykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5l
ck5vZGU6OnJlbW92ZVNlbGZPckNoaWxkTm9kZXNGb3JJbnNlcnRpb24oTm9kZSYgY2hpbGQsIE5v
ZGVWZWN0b3ImIG5vZGVzRm9ySW5zZXJ0aW9uKQogewotICAgIGlmICghaXM8RG9jdW1lbnRGcmFn
bWVudD4obm9kZSkpIHsKLSAgICAgICAgbm9kZXMuYXBwZW5kKG5vZGUpOwotICAgICAgICBhdXRv
KiBvbGRQYXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKTsKKyAgICBpZiAoIWlzPERvY3VtZW50RnJh
Z21lbnQ+KGNoaWxkKSkgeworICAgICAgICBub2Rlc0Zvckluc2VydGlvbi5hcHBlbmQoY2hpbGQp
OworICAgICAgICBhdXRvIG9sZFBhcmVudCA9IG1ha2VSZWZQdHIoY2hpbGQucGFyZW50Tm9kZSgp
KTsKICAgICAgICAgaWYgKCFvbGRQYXJlbnQpCiAgICAgICAgICAgICByZXR1cm4geyB9OwotICAg
ICAgICByZXR1cm4gb2xkUGFyZW50LT5yZW1vdmVDaGlsZChub2RlKTsKKyAgICAgICAgcmV0dXJu
IG9sZFBhcmVudC0+cmVtb3ZlQ2hpbGQoY2hpbGQpOwogICAgIH0KIAotICAgIG5vZGVzID0gY29s
bGVjdENoaWxkTm9kZXMobm9kZSk7Ci0gICAgZG93bmNhc3Q8RG9jdW1lbnRGcmFnbWVudD4obm9k
ZSkucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICBhdXRvJiBmcmFnbWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50RnJhZ21lbnQ+KGNoaWxkKTsKKyAgICBpZiAoIWZyYWdtZW50Lmhhc0NoaWxkTm9kZXMoKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gcmVtb3ZlZENoaWxkTm9kZXMgPSBmcmFn
bWVudC5yZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ29udGFpbmVyTm9kZTo6
Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJKTsKKyAgICBub2Rlc0Zvckluc2VydGlvbi5zd2FwKHJl
bW92ZWRDaGlsZE5vZGVzKTsKKworICAgIGZyYWdtZW50LnJlYnVpbGRTVkdFeHRlbnNpb25zRWxl
bWVudHNJZk5lY2Vzc2FyeSgpOworICAgIGZyYWdtZW50LmRpc3BhdGNoU3VidHJlZU1vZGlmaWVk
RXZlbnQoKTsKKwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTM5MywxMyArNDExLDEzIEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShOb2RlJiBuZXdDaGls
ZCwgTm9kZSogcmVmQ2hpbGQpCiAgICAgUmVmPE5vZGU+IG5leHQoKnJlZkNoaWxkKTsKIAogICAg
IE5vZGVWZWN0b3IgdGFyZ2V0czsKLSAgICBhdXRvIHJlbW92ZVJlc3VsdCA9IGNvbGxlY3RDaGls
ZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQobmV3Q2hpbGQsIHRhcmdldHMpOworICAgIGF1dG8g
cmVtb3ZlUmVzdWx0ID0gcmVtb3ZlU2VsZk9yQ2hpbGROb2Rlc0Zvckluc2VydGlvbihuZXdDaGls
ZCwgdGFyZ2V0cyk7CiAgICAgaWYgKHJlbW92ZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIHJlbW92ZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgaWYgKHRhcmdl
dHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgLy8gV2UgbmVlZCB0aGlz
IGV4dHJhIGNoZWNrIGJlY2F1c2UgY29sbGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVu
dCgpIGNhbiBmaXJlIG11dGF0aW9uIGV2ZW50cy4KKyAgICAvLyBXZSBuZWVkIHRoaXMgZXh0cmEg
Y2hlY2sgYmVjYXVzZSByZW1vdmVTZWxmT3JDaGlsZE5vZGVzRm9ySW5zZXJ0aW9uKCkgY2FuIGZp
cmUgbXV0YXRpb24gZXZlbnRzLgogICAgIGZvciAoYXV0byYgY2hpbGQgOiB0YXJnZXRzKSB7CiAg
ICAgICAgIGF1dG8gY2hlY2tBY2NlcHRSZXN1bHQgPSBjaGVja0FjY2VwdENoaWxkR3VhcmFudGVl
ZE5vZGVUeXBlcygqdGhpcywgY2hpbGQpOwogICAgICAgICBpZiAoY2hlY2tBY2NlcHRSZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCkBAIC01MDgsMTIgKzUyNiwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBD
b250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoTm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG9sZENoaWxk
KQogICAgIE5vZGVWZWN0b3IgdGFyZ2V0czsKICAgICB7CiAgICAgICAgIENoaWxkTGlzdE11dGF0
aW9uU2NvcGUgbXV0YXRpb24oKnRoaXMpOwotICAgICAgICBhdXRvIGNvbGxlY3RSZXN1bHQgPSBj
b2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KG5ld0NoaWxkLCB0YXJnZXRzKTsK
KyAgICAgICAgYXV0byBjb2xsZWN0UmVzdWx0ID0gcmVtb3ZlU2VsZk9yQ2hpbGROb2Rlc0Zvcklu
c2VydGlvbihuZXdDaGlsZCwgdGFyZ2V0cyk7CiAgICAgICAgIGlmIChjb2xsZWN0UmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpOwogICAgIH0KIAotICAgIC8vIERvIHRoaXMgb25lIG1vcmUgdGltZSBiZWNhdXNl
IGNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQoKSBmaXJlcyBhIE11dGF0aW9u
RXZlbnQuCisgICAgLy8gRG8gdGhpcyBvbmUgbW9yZSB0aW1lIGJlY2F1c2UgcmVtb3ZlU2VsZk9y
Q2hpbGROb2Rlc0Zvckluc2VydGlvbigpIGZpcmVzIGEgTXV0YXRpb25FdmVudC4KICAgICBmb3Ig
KGF1dG8mIGNoaWxkIDogdGFyZ2V0cykgewogICAgICAgICB2YWxpZGl0eVJlc3VsdCA9IGNoZWNr
UHJlUmVwbGFjZW1lbnRWYWxpZGl0eSgqdGhpcywgY2hpbGQsIG9sZENoaWxkLCBTaG91bGRWYWxp
ZGF0ZUNoaWxkUGFyZW50OjpObyk7CiAgICAgICAgIGlmICh2YWxpZGl0eVJlc3VsdC5oYXNFeGNl
cHRpb24oKSkKQEAgLTcwNywxNCArNzI1LDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5l
ck5vZGU6OmFwcGVuZENoaWxkV2l0aG91dFByZUluc2VydGlvblZhbGlkaXR5Q2hlY2soTm9kCiAg
ICAgUmVmPENvbnRhaW5lck5vZGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgTm9kZVZl
Y3RvciB0YXJnZXRzOwotICAgIGF1dG8gcmVtb3ZlUmVzdWx0ID0gY29sbGVjdENoaWxkcmVuQW5k
UmVtb3ZlRnJvbU9sZFBhcmVudChuZXdDaGlsZCwgdGFyZ2V0cyk7CisgICAgYXV0byByZW1vdmVS
ZXN1bHQgPSByZW1vdmVTZWxmT3JDaGlsZE5vZGVzRm9ySW5zZXJ0aW9uKG5ld0NoaWxkLCB0YXJn
ZXRzKTsKICAgICBpZiAocmVtb3ZlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gcmVtb3ZlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIAogICAgIGlmICh0YXJnZXRzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIC8vIFdlIG5lZWQgdGhpcyBleHRy
YSBjaGVjayBiZWNhdXNlIGNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQoKSBj
YW4gZmlyZSBtdXRhdGlvbiBldmVudHMuCisgICAgLy8gV2UgbmVlZCB0aGlzIGV4dHJhIGNoZWNr
IGJlY2F1c2UgcmVtb3ZlU2VsZk9yQ2hpbGROb2Rlc0Zvckluc2VydGlvbigpIGNhbiBmaXJlIG11
dGF0aW9uIGV2ZW50cy4KICAgICBmb3IgKGF1dG8mIGNoaWxkIDogdGFyZ2V0cykgewogICAgICAg
ICBhdXRvIG5vZGVUeXBlUmVzdWx0ID0gY2hlY2tBY2NlcHRDaGlsZEd1YXJhbnRlZWROb2RlVHlw
ZXMoKnRoaXMsIGNoaWxkKTsKICAgICAgICAgaWYgKG5vZGVUeXBlUmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQpAQCAtODU3LDEwICs4NzUsNiBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkUmVtb3Zh
bEV2ZW50cyhSZWY8Tm9kZT4mIGNoaWxkKQogICAgIGlmIChjaGlsZC0+aXNJblNoYWRvd1RyZWUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBiZWxvbmcg
aW4gZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMuCi0gICAgLy8gRklYTUU6IE5vZGVzIHJlbW92
ZWQgZnJvbSBhIHNoYWRvdyB0cmVlIHNob3VsZCBhbHNvIGJlIGtlcHQgYWxpdmUuCi0gICAgd2ls
bENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkLnB0cigpKTsKLQogICAg
IFJlZjxEb2N1bWVudD4gZG9jdW1lbnQgPSBjaGlsZC0+ZG9jdW1lbnQoKTsKIAogICAgIC8vIGRp
c3BhdGNoIHByZS1yZW1vdmFsIG11dGF0aW9uIGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmgKaW5kZXggMGVhNjA2MTc2OTY5NGY2NTlmZDYxZjUzNmVhOTNiMWY2M2NkMGJkMi4uOTk3
MzQ1YzUwYTVkZTg4ZjVhOGU2YWUzN2ZiMjlmNjU4ZTkxY2ExZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5oCkBAIC0xNTAsNiArMTUwLDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNz
IERlZmVyQ2hpbGRyZW5DaGFuZ2VkIHsgWWVzLCBObyB9OwogICAgIE5vZGVWZWN0b3IgcmVtb3Zl
QWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaWxkQ2hhbmdlOjpTb3VyY2UsIERlZmVy
Q2hpbGRyZW5DaGFuZ2VkID0gRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Ok5vKTsKICAgICBib29sIHJl
bW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmLCBDaGlsZENoYW5nZTo6U291cmNlKTsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmVTZWxmT3JDaGlsZE5vZGVzRm9ySW5zZXJ0aW9u
KE5vZGUmLCBOb2RlVmVjdG9yJik7CiAKICAgICB2b2lkIHJlbW92ZUJldHdlZW4oTm9kZSogcHJl
dmlvdXNDaGlsZCwgTm9kZSogbmV4dENoaWxkLCBOb2RlJiBvbGRDaGlsZCk7CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gYXBwZW5kQ2hpbGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayhO
b2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29y
aXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNw
cAppbmRleCAyYWYyNzYxODc3NTdlODgyODgzMDU1YzkwNGU2ZTg3MzM0Y2Q0ZDIzLi4zNjk5OTdl
MGIwYWY1YjNjNzk0NDE4YTRmOTgzNWQyNWJiNmE2ZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKQEAgLTEwNyw0OSArMTA3LDY2IEBAIE5v
ZGVWZWN0b3Igbm90aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQoQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJ
bnNlcnRlZFRyZWUsIE5vZGUmIG5vCiAgICAgcmV0dXJuIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRp
b25UYXJnZXRzOwogfQogCi1zdGF0aWMgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVu
dChDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBUcmVlU2NvcGVDaGFuZ2Ug
dHJlZVNjb3BlQ2hhbmdlLCBOb2RlJiBub2RlKQoraW5saW5lIFJlbW92ZWRTdWJ0cmVlT2JzZXJ2
YWJpbGl0eSBvYnNlcnZhYmlsaXR5T2ZSZW1vdmVkTm9kZShOb2RlJiBub2RlKQoreworICAgIGJv
b2wgaXNSb290T2ZSZW1vdmVkVHJlZSA9ICFub2RlLnBhcmVudE5vZGUoKTsKKyAgICByZXR1cm4g
bm9kZS5yZWZDb3VudCgpID4gMSAmJiAhaXNSb290T2ZSZW1vdmVkVHJlZSA/IFJlbW92ZWRTdWJ0
cmVlT2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIgOiBSZW1vdmVkU3VidHJl
ZU9ic2VydmFiaWxpdHk6Ok5vdE9ic2VydmFibGU7Cit9CisKK2lubGluZSB2b2lkIHVwZGF0ZU9i
c2VydmFiaWxpdHkoUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5JiBjdXJyZW50T2JzZXJ2YWJp
bGl0eSwgUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5IG5ld1N0YXR1cykKK3sKKyAgICBpZiAo
bmV3U3RhdHVzID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxl
QnlSZWZQdHIpCisgICAgICAgIGN1cnJlbnRPYnNlcnZhYmlsaXR5ID0gbmV3U3RhdHVzOworfQor
CitzdGF0aWMgUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5IG5vdGlmeU5vZGVSZW1vdmVkRnJv
bURvY3VtZW50KENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIFRyZWVTY29w
ZUNoYW5nZSB0cmVlU2NvcGVDaGFuZ2UsIE5vZGUmIG5vZGUpCiB7CiAgICAgQVNTRVJUKG9sZFBh
cmVudE9mUmVtb3ZlZFRyZWUuaXNDb25uZWN0ZWQoKSk7CiAgICAgQVNTRVJUKG5vZGUuaXNDb25u
ZWN0ZWQoKSk7CiAgICAgbm9kZS5yZW1vdmVkRnJvbUFuY2VzdG9yKE5vZGU6OlJlbW92YWxUeXBl
IHsgLyogZGlzY29ubmVjdGVkRnJvbURvY3VtZW50ICovIHRydWUsIHRyZWVTY29wZUNoYW5nZSA9
PSBUcmVlU2NvcGVDaGFuZ2U6OkNoYW5nZWQgfSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7CiAK
KyAgICBhdXRvIG9ic2VydmFiaWxpdHkgPSBvYnNlcnZhYmlsaXR5T2ZSZW1vdmVkTm9kZShub2Rl
KTsKICAgICBpZiAoIWlzPENvbnRhaW5lck5vZGU+KG5vZGUpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBvYnNlcnZhYmlsaXR5OwogCiAgICAgZm9yIChSZWZQdHI8Tm9kZT4gY2hp
bGQgPSBkb3duY2FzdDxDb250YWluZXJOb2RlPihub2RlKS5maXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5vZGUuaXNDb25uZWN0ZWQoKSAmJiBjaGlsZC0+cGFy
ZW50Tm9kZSgpID09ICZub2RlKTsKLSAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1l
bnQob2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgdHJlZVNjb3BlQ2hhbmdlLCAqY2hpbGQuZ2V0KCkp
OworICAgICAgICB1cGRhdGVPYnNlcnZhYmlsaXR5KG9ic2VydmFiaWxpdHksIG5vdGlmeU5vZGVS
ZW1vdmVkRnJvbURvY3VtZW50KG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIHRyZWVTY29wZUNoYW5n
ZSwgKmNoaWxkLmdldCgpKSk7CiAgICAgfQogCiAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gb2JzZXJ2YWJpbGl0eTsKIAogICAgIGlm
IChSZWZQdHI8U2hhZG93Um9vdD4gcm9vdCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLnNoYWRv
d1Jvb3QoKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKCFub2RlLmlzQ29ubmVjdGVkKCkgJiYgcm9vdC0+aG9zdCgpID09ICZub2RlKTsKLSAgICAg
ICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQob2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwg
VHJlZVNjb3BlQ2hhbmdlOjpEaWROb3RDaGFuZ2UsICpyb290LmdldCgpKTsKKyAgICAgICAgdXBk
YXRlT2JzZXJ2YWJpbGl0eShvYnNlcnZhYmlsaXR5LCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1
bWVudChvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBUcmVlU2NvcGVDaGFuZ2U6OkRpZE5vdENoYW5n
ZSwgKnJvb3QuZ2V0KCkpKTsKICAgICB9CisgICAgcmV0dXJuIG9ic2VydmFiaWxpdHk7CiB9CiAK
LXN0YXRpYyB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSYgb2xk
UGFyZW50T2ZSZW1vdmVkVHJlZSwgVHJlZVNjb3BlQ2hhbmdlIHRyZWVTY29wZUNoYW5nZSwgTm9k
ZSYgbm9kZSkKK3N0YXRpYyBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgbm90aWZ5Tm9kZVJl
bW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBUcmVl
U2NvcGVDaGFuZ2UgdHJlZVNjb3BlQ2hhbmdlLCBOb2RlJiBub2RlKQogewogICAgIEFTU0VSVCgh
b2xkUGFyZW50T2ZSZW1vdmVkVHJlZS5pc0Nvbm5lY3RlZCgpKTsKIAogICAgIG5vZGUucmVtb3Zl
ZEZyb21BbmNlc3RvcihOb2RlOjpSZW1vdmFsVHlwZSB7IC8qIGRpc2Nvbm5lY3RlZEZyb21Eb2N1
bWVudCAqLyBmYWxzZSwgdHJlZVNjb3BlQ2hhbmdlID09IFRyZWVTY29wZUNoYW5nZTo6Q2hhbmdl
ZCB9LCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKIAorICAgIGF1dG8gb2JzZXJ2YWJpbGl0eSA9
IG9ic2VydmFiaWxpdHlPZlJlbW92ZWROb2RlKG5vZGUpOwogICAgIGlmICghaXM8Q29udGFpbmVy
Tm9kZT4obm9kZSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG9ic2VydmFiaWxp
dHk7CiAKICAgICBmb3IgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IGRvd25jYXN0PENvbnRhaW5lck5v
ZGU+KG5vZGUpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCkpCi0gICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUob2xkUGFyZW50T2ZSZW1vdmVk
VHJlZSwgdHJlZVNjb3BlQ2hhbmdlLCAqY2hpbGQpOworICAgICAgICB1cGRhdGVPYnNlcnZhYmls
aXR5KG9ic2VydmFiaWxpdHksIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUob2xkUGFyZW50T2ZS
ZW1vdmVkVHJlZSwgdHJlZVNjb3BlQ2hhbmdlLCAqY2hpbGQpKTsKIAogICAgIGlmICghaXM8RWxl
bWVudD4obm9kZSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG9ic2VydmFiaWxp
dHk7CiAKICAgICBpZiAoUmVmUHRyPFNoYWRvd1Jvb3Q+IHJvb3QgPSBkb3duY2FzdDxFbGVtZW50
Pihub2RlKS5zaGFkb3dSb290KCkpCi0gICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUo
b2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgVHJlZVNjb3BlQ2hhbmdlOjpEaWROb3RDaGFuZ2UsICpy
b290KTsKKyAgICAgICAgdXBkYXRlT2JzZXJ2YWJpbGl0eShvYnNlcnZhYmlsaXR5LCBub3RpZnlO
b2RlUmVtb3ZlZEZyb21UcmVlKG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIFRyZWVTY29wZUNoYW5n
ZTo6RGlkTm90Q2hhbmdlLCAqcm9vdCkpOworCisgICAgcmV0dXJuIG9ic2VydmFiaWxpdHk7CiB9
CiAKLXZvaWQgbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZChDb250YWluZXJOb2RlJiBvbGRQYXJlbnRP
ZlJlbW92ZWRUcmVlLCBOb2RlJiBjaGlsZCkKK1JlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eSBu
b3RpZnlDaGlsZE5vZGVSZW1vdmVkKENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRy
ZWUsIE5vZGUmIGNoaWxkKQogewogICAgIC8vIEFzc2VydCB0aGF0IHRoZSBjYWxsZXIgb2YgdGhp
cyBmdW5jdGlvbiBoYXMgYW4gaW5zdGFuY2Ugb2YgU2NyaXB0RGlzYWxsb3dlZFNjb3BlLgogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkgfHwgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5U
aHJlYWQ6Omhhc0Rpc2FsbG93ZWRTY29wZSgpKTsKQEAgLTE1OCw5ICsxNzUsOCBAQCB2b2lkIG5v
dGlmeUNoaWxkTm9kZVJlbW92ZWQoQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJl
ZSwgTm9kZSYgY2hpbGQpCiAgICAgLy8gVHJlZSBzY29wZSBoYXMgY2hhbmdlZCBpZiB0aGUgY29u
dGFpbmVyIG5vZGUgZnJvbSB3aGljaCAibm9kZSIgaXMgcmVtb3ZlZCBpcyBpbiBhIGRvY3VtZW50
IG9yIGEgc2hhZG93IHJvb3QuCiAgICAgYXV0byB0cmVlU2NvcGVDaGFuZ2UgPSBvbGRQYXJlbnRP
ZlJlbW92ZWRUcmVlLmlzSW5UcmVlU2NvcGUoKSA/IFRyZWVTY29wZUNoYW5nZTo6Q2hhbmdlZCA6
IFRyZWVTY29wZUNoYW5nZTo6RGlkTm90Q2hhbmdlOwogICAgIGlmIChjaGlsZC5pc0Nvbm5lY3Rl
ZCgpKQotICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChvbGRQYXJlbnRPZlJl
bW92ZWRUcmVlLCB0cmVlU2NvcGVDaGFuZ2UsIGNoaWxkKTsKLSAgICBlbHNlCi0gICAgICAgIG5v
dGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUob2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgdHJlZVNjb3Bl
Q2hhbmdlLCBjaGlsZCk7CisgICAgICAgIHJldHVybiBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1
bWVudChvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCB0cmVlU2NvcGVDaGFuZ2UsIGNoaWxkKTsKKyAg
ICByZXR1cm4gbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShvbGRQYXJlbnRPZlJlbW92ZWRUcmVl
LCB0cmVlU2NvcGVDaGFuZ2UsIGNoaWxkKTsKIH0KIAogdm9pZCBhZGRDaGlsZE5vZGVzVG9EZWxl
dGlvblF1ZXVlKE5vZGUqJiBoZWFkLCBOb2RlKiYgdGFpbCwgQ29udGFpbmVyTm9kZSYgY29udGFp
bmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0
aG1zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAppbmRl
eCA0OWM5NzU4NTIwZWY0NThkYTliMjk1NTlmNzdjMGJlZWNjZDRhOWRiLi5mODJkNmY1MTBhOGE4
OTYwODFmYjc0NDU3NmY2YzM3ZmNiZTQ1OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuaApAQCAtNjIsNyArNjIsMTEgQEAgcHVibGljOgogI2VuZGlm
IC8vIG5vdCBBU1NFUlRfRU5BQkxFRAogCiBOb2RlVmVjdG9yIG5vdGlmeUNoaWxkTm9kZUluc2Vy
dGVkKENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlLCBOb2RlJik7Ci12b2lkIG5v
dGlmeUNoaWxkTm9kZVJlbW92ZWQoQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJl
ZSwgTm9kZSYpOworZW51bSBjbGFzcyBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgeworICAg
IE5vdE9ic2VydmFibGUsCisgICAgTWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIsCit9OworUmVtb3Zl
ZFN1YnRyZWVPYnNlcnZhYmlsaXR5IG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoQ29udGFpbmVyTm9k
ZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgTm9kZSYpOwogdm9pZCByZW1vdmVEZXRhY2hlZENo
aWxkcmVuSW5Db250YWluZXIoQ29udGFpbmVyTm9kZSYpOwogCiBlbnVtIFN1YmZyYW1lRGlzY29u
bmVjdFBvbGljeSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419226</attachid>
            <date>2021-02-03 21:11:45 -0800</date>
            <delta_ts>2021-02-03 21:35:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221243-20210203211144.patch</filename>
            <type>text/plain</type>
            <size>17794</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODIxZTMxMmFkNTQwOTIy
MzcxYmI3Mjg0ZTAyYzIzZjc3Y2RhNDAyNy4uMmVhYjY3NzlhOTcxN2JkNThhMmEwY2I5MDM4OGZh
YTVmZGFhN2VkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIxLTAyLTAyICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEF2b2lkIGNyZWF0aW5nIEpT
IHdyYXBwZXIgb24gYSByZW1vdmVkIG5vZGUgd2hlbiB0aGUgc3VidHJlZSBpcyBub3Qgb2JzZXJ2
YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
MjQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzcxOTM4Nj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmlvciB0byB0aGlzIHBhdGNoLCBXZWJL
aXQgZm9yY2VkIHRoZSBjcmVhdGlvbiB0aGUgSlMgd3JhcHBlciBvbiB0aGUgcm9vdCBET00gbm9k
ZSBvZiBhIHJlbW92ZWQgc3VidHJlZQorICAgICAgICB0byBhdm9pZCBzY3JpcHQgb2JzZXJ2YWJs
ZSBkZWxldGlvbiBvZiBub2Rlcy4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBET00gbm9kZXMg
YXJlIHJlZmVyZW5jZSBjb3VudGVkCisgICAgICAgIGluIHRoZSBDKysgc2lkZSwgYW5kIHdoaWxl
IGEgRE9NIG5vZGUga2VlcHMgaXRzIGNoaWxkIG5vZGVzIGFsaXZlLCBpdCB3b24ndCBrZWVwIGl0
cyBwYXJlbnQgbm9kZSBhbGl2ZQorICAgICAgICB0byBhdm9pZCByZWZlcmVuY2UgY3ljbGVzIChs
ZWFrcykuIElmIHdlIGRpZG4ndCBmb3JjZSB0aGUgY3JlYXRpb24gb2YgdGhlIEpTIHdyYXBwZXIg
YW5kIHRoZSByb290IG5vZGUKKyAgICAgICAgb2YgdGhlIHJlbW92ZWQgc3VidHJlZSBkaWRuJ3Qg
aGF2ZSBhbnkgZXh0ZXJuYWwgcmVmZXJlbmNlIHRvIGl0IGluIEMrKyBzaWRlLCB3ZSB3b3VsZCBo
YXBwaWx5IGRlbGV0ZSBpdAorICAgICAgICBhbmQgYWxsIGl0cyBkZXNjZW5kYW50IG5vZGVzIGFi
b3ZlIGFueSBzdWJ0cmVlIHdpdGggYSBKUyB3cmFwcGVyIG9yIGFuIGV4dGVybmFsIEMrKyByZWZl
cmVuY2UuCisKKyAgICAgICAgV2hpbGUgdGhpcyB0dXJuZWQgb3V0IHRvIGJlIGFuIGVmZmVjdGl2
ZSBzdHJhdGVneSBmb3IgaW1wbGVtZW50aW5nIERPTSBub2RlcycgR0Mgc2VtYW50aWNzIGNvcnJl
Y3RseSwKKyAgICAgICAgaXQgaGFzIGEgc2lnbmlmaWNhbnQgcnVudGltZSBhbmQgbWVtb3J5IGNv
c3QgLSB0aGUgbGF0dGVyIGlzIGJlY2F1c2Ugd2UgZG9uJ3QgY29sbGVjdCB0aGUgSlMgd3JhcHBl
cnMKKyAgICAgICAgb2YgRE9NIG5vZGVzIG9uY2UgdGhleSdyZSBjcmVhdGVkIHVudGlsIHRoZXkn
cmUgcmVhZHkgdG8gYmUgZGVzdHJ1Y3RlZC4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgYSBuZXcgb3B0aW1pemF0aW9uIHRvIGF2b2lkIGNyZWF0aW5nIHRoZXNlIEpTIHdyYXBwZXJz
IHdoZW4gdGhlIHJlbW92ZWQgc3VidHJlZQorICAgICAgICB3b24ndCBiZSBvYnNlcnZhYmxlIGJ5
IHNjcmlwdHMgaW4gdGhlIGZ1dHVyZS4gVGhlIGN1cnJlbnQgaGV1cmlzdGljIGlzIHRvIGNoZWNr
IGlmIHRoZSByZW1vdmVkIG5vZGUKKyAgICAgICAgaGFzIGFueSBleHRlcm5hbCByZWZlcmVuY2Ug
dG8gaXQgKGkuZS4gcmVmQ291bnQoKSA+IDAgZXhjbHVkaW5nIGFueSByZWZlcmVuY2UgY291bnRp
bmcgdGhhdCBoYXBwZW5zIHdpdGhpbgorICAgICAgICBvdXIgYWxnb3JpdGhtKS4gVGhpcyBpcyBz
dWZmaWNpZW50IGJlY2F1c2UgYSBnaXZlbiBub2RlIHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZSBh
dCBhIGxhdGVyIHRpbWUgdW5sZXNzCisgICAgICAgIGl0IGhhcyBhbiBleHRlcm5hbCByZWZlcmVu
Y2UgdG8gaXQuIFRoaXMgaXMgfjAuNSUgcHJvZ3Jlc3Npb24gb24gU3BlZWRvbWV0ZXItMi4wIG9u
IE1hY0Jvb2tBaXI3LDIuCisKKyAgICAgICAgVG8gZG8gdGhpcywgd2UgdGFrZSBhZHZhbnRhZ2Ug
b2YgdGhlIGZhY3Qgbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCBhbHJlYWR5IHRyYXZlcnNlcyBlYWNo
IHJlbW92ZWQgc3VidHJlZSwKKyAgICAgICAgYW5kIGNoZWNrIGlmIGFueSBvZiB0aGVtIGhhcyBh
IHJlZmVyZW5jZSBjb3VudCBncmVhdGVyIHRoYW4gMSAoZ3JlYXRlciB0aGFuIDEgYmVjYXVzZSBu
b3RpZnlDaGlsZE5vZGVSZW1vdmVkCisgICAgICAgIGl0c2VsZiBpbmNyZW1lbnRzIG5vZGUncyBy
ZWZlcmVuY2UgY291bnQgYmVmb3JlIGNhbGxpbmcgaXRzZWxmIG9uIGNoaWxkIG5vZGVzKS4gTm90
ZSB0aGF0IHdlIGV4Y2x1ZGUgdGhlCisgICAgICAgIHJvb3Qgbm9kZSBvZiB0aGUgcmVtb3ZlZCBz
dWJ0cmVlIGFzIHRoZXNlIEpTIHdyYXBwZXIgY3JlYXRpb24gaXMgb25seSBuZWVkZWQgdG8ga2Vl
cCB0aGUgcm9vdCBub2RlIGFsaXZlLgorICAgICAgICBJZiB0aGUgcm9vdCBub2RlIGlzIGFscmVh
ZHkga2VwdCBhbGl2ZSBieSBzb21lIGV4dGVybmFsIHJlZmVyZW5jZSB0byBpdCwgdGhlcmUgaXMg
bm8gbmVlZCB0byBrZWVwIGl0IGFsaXZlCisgICAgICAgIGFnYWluIGJ5IGNyZWF0aW5nIGEgSlMg
d3JhcHBlciBvbiBpdC4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgZXhpc3RpbmcgdGVz
dHMgc3VjaCBhcyBmYXN0L2RvbS9nYy0zLmh0bWwgY292ZXJzIGl0LgorCisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVt
b3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKTogQ2FsbCB3aWxsQ3JlYXRlUG9zc2li
bHlPcnBoYW5lZFRyZWVCeVJlbW92YWwKKyAgICAgICAgaWYgdGhlIHJlbW92ZWQgc3VidHJlZSBj
b250YWlucyBhbiBvYnNlcnZhYmxlIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpyZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlU2VsZk9yQ2hpbGROb2Rlc0Zvckluc2VydGlvbik6
IFJlbmFtZWQgZnJvbSBjb2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50LgorICAg
ICAgICBBdm9pZCBjb2xsZWN0aW5nIHRoZSByZW1vdmVkIG5vZGVzIGluIHRoaXMgZnVuY3Rpb24g
aW4gYWRkaXRpb24gdG8gcmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjphcHBlbmRDaGlsZFdpdGhvdXRQcmVJbnNlcnRpb25WYWxpZGl0eUNoZWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKTogRG9uJ3Qg
Y2FsbCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwgaGVyZS4KKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxn
b3JpdGhtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvYnNlcnZhYmlsaXR5T2ZSZW1vdmVkTm9k
ZSk6IEFkZGVkLiBDaGVja3MgdGhlIG9ic2VydmFiaWxpdHkgb2YgYSBub2RlIGV4Y2x1ZGluZyB0
aGUgcm9vdCBub2RlIG9mCisgICAgICAgIHRoZSByZW1vdmVkIHN1YnRyZWUgc2luY2UgaXQgbmVl
ZHMgYSBzcGVjaWFsIGNhc2UgaW4gcmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9u
LgorICAgICAgICBBcyBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCBhbmQgbm90aWZ5Tm9k
ZVJlbW92ZWRGcm9tVHJlZSByZWYncyBlYWNoIGNoaWxkIG5vZGUgYmVmb3JlIHJlY3Vyc2luZyBv
biBpdHNlbGYsCisgICAgICAgIHdlIGNoZWNrIHJlZkNvdW50KCkgPiAxIGhlcmUuCisgICAgICAg
IChXZWJDb3JlOjp1cGRhdGVPYnNlcnZhYmlsaXR5KTogQWRkZWQuIEEgaGVscGVyIGZ1bmN0aW9u
IHRvIHVwZGF0ZSBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkuCisgICAgICAgIChXZWJDb3Jl
Ojpub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCk6IE5vdyByZXR1cm5zIFJlbW92ZWRTdWJ0
cmVlT2JzZXJ2YWJpbGl0eSwKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeU5vZGVSZW1vdmVkRnJv
bVRyZWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNoaWxkTm9kZVJlbW92ZWQp
OiBEaXR0by4KKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaDoKKwogMjAy
MS0wMS0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBTdGF0
aWNSYW5nZSBzaG91bGQga2VlcCBpdHMgc3RhcnQgYW5kIGVuZCBjb250YWluZXJzIGFsaXZlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggYjljYmY2OTcwZWZiMGZkODM0MDhl
YzIwZTU0ZGQ2ZTk3ZTU5MjU0Yi4uOTI2ZWZlOGE5NDVkZjQ5NjYyNzljOGVmNWRhZDZmMGUxMzk5
NmM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMTExLDcgKzExMSw5
IEBAIEFMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGls
ZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpCiAKICAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IGNo
aWxkID0gbV9maXJzdENoaWxkKSB7CiAgICAgICAgIHJlbW92ZUJldHdlZW4obnVsbHB0ciwgY2hp
bGQtPm5leHRTaWJsaW5nKCksICpjaGlsZCk7Ci0gICAgICAgIG5vdGlmeUNoaWxkTm9kZVJlbW92
ZWQoKnRoaXMsICpjaGlsZCk7CisgICAgICAgIGF1dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBu
b3RpZnlDaGlsZE5vZGVSZW1vdmVkKCp0aGlzLCAqY2hpbGQpOworICAgICAgICBpZiAoc291cmNl
ID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSAmJiAoc3VidHJlZU9ic2VydmFiaWxpdHkgPT0g
UmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0cikpCisg
ICAgICAgICAgICB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoY2hpbGQu
Z2V0KCkpOwogICAgIH0KIAogICAgIGlmIChkZWZlckNoaWxkcmVuQ2hhbmdlZCA9PSBEZWZlckNo
aWxkcmVuQ2hhbmdlZDo6Tm8pCkBAIC0xNDksNiArMTUxLDcgQEAgQUxXQVlTX0lOTElORSBib29s
IENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxk
VG9SZW0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ2hpbGRDaGFuZ2UgY2hhbmdlOwor
ICAgIFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eSBzdWJ0cmVlT2JzZXJ2YWJpbGl0eTsKICAg
ICB7CiAgICAgICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVu
ZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXM7CiAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6
SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKQEAgLTE2NCw3ICsxNjcsNyBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3Nl
cnRpb24oTm9kZSYgY2hpbGRUb1JlbQogICAgICAgICBSZWZQdHI8Tm9kZT4gcHJldmlvdXNTaWJs
aW5nID0gY2hpbGRUb1JlbW92ZS5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgUmVmUHRyPE5v
ZGU+IG5leHRTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5uZXh0U2libGluZygpOwogICAgICAgICBy
ZW1vdmVCZXR3ZWVuKHByZXZpb3VzU2libGluZy5nZXQoKSwgbmV4dFNpYmxpbmcuZ2V0KCksIGNo
aWxkVG9SZW1vdmUpOwotICAgICAgICBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKCp0aGlzLCBjaGls
ZFRvUmVtb3ZlKTsKKyAgICAgICAgc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5v
ZGVSZW1vdmVkKCp0aGlzLCBjaGlsZFRvUmVtb3ZlKTsKIAogICAgICAgICBjaGFuZ2UudHlwZSA9
IGlzPEVsZW1lbnQ+KGNoaWxkVG9SZW1vdmUpID8KICAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpU
eXBlOjpFbGVtZW50UmVtb3ZlZCA6CkBAIC0xNzYsNiArMTc5LDkgQEAgQUxXQVlTX0lOTElORSBi
b29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNo
aWxkVG9SZW0KICAgICAgICAgY2hhbmdlLnNvdXJjZSA9IHNvdXJjZTsKICAgICB9CiAKKyAgICBp
ZiAoc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSAmJiAoc3VidHJlZU9ic2VydmFi
aWxpdHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJl
ZlB0cikpCisgICAgICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbCgm
Y2hpbGRUb1JlbW92ZSk7CisKICAgICAvLyBGSVhNRTogTW92ZSBjaGlsZHJlbkNoYW5nZWQgaW50
byBTY3JpcHREaXNhbGxvd2VkU2NvcGUgYmxvY2suCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGNoYW5n
ZSk7CiAKQEAgLTIyNCwxOCArMjMwLDI2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZXhl
Y3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5lck5vZGUmCiAgICAg
ICAgIGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVudHMoY2hpbGQpOwogfQogCi1zdGF0aWMgRXhj
ZXB0aW9uT3I8dm9pZD4gY29sbGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudChOb2Rl
JiBub2RlLCBOb2RlVmVjdG9yJiBub2RlcykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5v
ZGU6OnJlbW92ZVNlbGZPckNoaWxkTm9kZXNGb3JJbnNlcnRpb24oTm9kZSYgY2hpbGQsIE5vZGVW
ZWN0b3ImIG5vZGVzRm9ySW5zZXJ0aW9uKQogewotICAgIGlmICghaXM8RG9jdW1lbnRGcmFnbWVu
dD4obm9kZSkpIHsKLSAgICAgICAgbm9kZXMuYXBwZW5kKG5vZGUpOwotICAgICAgICBhdXRvKiBv
bGRQYXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKTsKKyAgICBpZiAoIWlzPERvY3VtZW50RnJhZ21l
bnQ+KGNoaWxkKSkgeworICAgICAgICBub2Rlc0Zvckluc2VydGlvbi5hcHBlbmQoY2hpbGQpOwor
ICAgICAgICBhdXRvIG9sZFBhcmVudCA9IG1ha2VSZWZQdHIoY2hpbGQucGFyZW50Tm9kZSgpKTsK
ICAgICAgICAgaWYgKCFvbGRQYXJlbnQpCiAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAg
ICByZXR1cm4gb2xkUGFyZW50LT5yZW1vdmVDaGlsZChub2RlKTsKKyAgICAgICAgcmV0dXJuIG9s
ZFBhcmVudC0+cmVtb3ZlQ2hpbGQoY2hpbGQpOwogICAgIH0KIAotICAgIG5vZGVzID0gY29sbGVj
dENoaWxkTm9kZXMobm9kZSk7Ci0gICAgZG93bmNhc3Q8RG9jdW1lbnRGcmFnbWVudD4obm9kZSku
cmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICBhdXRvJiBmcmFnbWVudCA9IGRvd25jYXN0PERvY3VtZW50
RnJhZ21lbnQ+KGNoaWxkKTsKKyAgICBpZiAoIWZyYWdtZW50Lmhhc0NoaWxkTm9kZXMoKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gcmVtb3ZlZENoaWxkTm9kZXMgPSBmcmFnbWVu
dC5yZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2U6OlNvdXJjZTo6QVBJKTsKKyAgICBub2Rlc0Zvckluc2VydGlvbi5zd2FwKHJlbW92
ZWRDaGlsZE5vZGVzKTsKKworICAgIGZyYWdtZW50LnJlYnVpbGRTVkdFeHRlbnNpb25zRWxlbWVu
dHNJZk5lY2Vzc2FyeSgpOworICAgIGZyYWdtZW50LmRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZl
bnQoKTsKKwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTM5MywxMyArNDA3LDEzIEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShOb2RlJiBuZXdDaGlsZCwg
Tm9kZSogcmVmQ2hpbGQpCiAgICAgUmVmPE5vZGU+IG5leHQoKnJlZkNoaWxkKTsKIAogICAgIE5v
ZGVWZWN0b3IgdGFyZ2V0czsKLSAgICBhdXRvIHJlbW92ZVJlc3VsdCA9IGNvbGxlY3RDaGlsZHJl
bkFuZFJlbW92ZUZyb21PbGRQYXJlbnQobmV3Q2hpbGQsIHRhcmdldHMpOworICAgIGF1dG8gcmVt
b3ZlUmVzdWx0ID0gcmVtb3ZlU2VsZk9yQ2hpbGROb2Rlc0Zvckluc2VydGlvbihuZXdDaGlsZCwg
dGFyZ2V0cyk7CiAgICAgaWYgKHJlbW92ZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIHJlbW92ZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgaWYgKHRhcmdldHMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgLy8gV2UgbmVlZCB0aGlzIGV4
dHJhIGNoZWNrIGJlY2F1c2UgY29sbGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudCgp
IGNhbiBmaXJlIG11dGF0aW9uIGV2ZW50cy4KKyAgICAvLyBXZSBuZWVkIHRoaXMgZXh0cmEgY2hl
Y2sgYmVjYXVzZSByZW1vdmVTZWxmT3JDaGlsZE5vZGVzRm9ySW5zZXJ0aW9uKCkgY2FuIGZpcmUg
bXV0YXRpb24gZXZlbnRzLgogICAgIGZvciAoYXV0byYgY2hpbGQgOiB0YXJnZXRzKSB7CiAgICAg
ICAgIGF1dG8gY2hlY2tBY2NlcHRSZXN1bHQgPSBjaGVja0FjY2VwdENoaWxkR3VhcmFudGVlZE5v
ZGVUeXBlcygqdGhpcywgY2hpbGQpOwogICAgICAgICBpZiAoY2hlY2tBY2NlcHRSZXN1bHQuaGFz
RXhjZXB0aW9uKCkpCkBAIC01MDgsMTIgKzUyMiwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250
YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoTm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG9sZENoaWxkKQog
ICAgIE5vZGVWZWN0b3IgdGFyZ2V0czsKICAgICB7CiAgICAgICAgIENoaWxkTGlzdE11dGF0aW9u
U2NvcGUgbXV0YXRpb24oKnRoaXMpOwotICAgICAgICBhdXRvIGNvbGxlY3RSZXN1bHQgPSBjb2xs
ZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KG5ld0NoaWxkLCB0YXJnZXRzKTsKKyAg
ICAgICAgYXV0byBjb2xsZWN0UmVzdWx0ID0gcmVtb3ZlU2VsZk9yQ2hpbGROb2Rlc0Zvckluc2Vy
dGlvbihuZXdDaGlsZCwgdGFyZ2V0cyk7CiAgICAgICAgIGlmIChjb2xsZWN0UmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpOwogICAgIH0KIAotICAgIC8vIERvIHRoaXMgb25lIG1vcmUgdGltZSBiZWNhdXNlIGNv
bGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQoKSBmaXJlcyBhIE11dGF0aW9uRXZl
bnQuCisgICAgLy8gRG8gdGhpcyBvbmUgbW9yZSB0aW1lIGJlY2F1c2UgcmVtb3ZlU2VsZk9yQ2hp
bGROb2Rlc0Zvckluc2VydGlvbigpIGZpcmVzIGEgTXV0YXRpb25FdmVudC4KICAgICBmb3IgKGF1
dG8mIGNoaWxkIDogdGFyZ2V0cykgewogICAgICAgICB2YWxpZGl0eVJlc3VsdCA9IGNoZWNrUHJl
UmVwbGFjZW1lbnRWYWxpZGl0eSgqdGhpcywgY2hpbGQsIG9sZENoaWxkLCBTaG91bGRWYWxpZGF0
ZUNoaWxkUGFyZW50OjpObyk7CiAgICAgICAgIGlmICh2YWxpZGl0eVJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKQEAgLTcwNywxNCArNzIxLDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5v
ZGU6OmFwcGVuZENoaWxkV2l0aG91dFByZUluc2VydGlvblZhbGlkaXR5Q2hlY2soTm9kCiAgICAg
UmVmPENvbnRhaW5lck5vZGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgTm9kZVZlY3Rv
ciB0YXJnZXRzOwotICAgIGF1dG8gcmVtb3ZlUmVzdWx0ID0gY29sbGVjdENoaWxkcmVuQW5kUmVt
b3ZlRnJvbU9sZFBhcmVudChuZXdDaGlsZCwgdGFyZ2V0cyk7CisgICAgYXV0byByZW1vdmVSZXN1
bHQgPSByZW1vdmVTZWxmT3JDaGlsZE5vZGVzRm9ySW5zZXJ0aW9uKG5ld0NoaWxkLCB0YXJnZXRz
KTsKICAgICBpZiAocmVtb3ZlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
cmVtb3ZlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIAogICAgIGlmICh0YXJnZXRzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIC8vIFdlIG5lZWQgdGhpcyBleHRyYSBj
aGVjayBiZWNhdXNlIGNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQoKSBjYW4g
ZmlyZSBtdXRhdGlvbiBldmVudHMuCisgICAgLy8gV2UgbmVlZCB0aGlzIGV4dHJhIGNoZWNrIGJl
Y2F1c2UgcmVtb3ZlU2VsZk9yQ2hpbGROb2Rlc0Zvckluc2VydGlvbigpIGNhbiBmaXJlIG11dGF0
aW9uIGV2ZW50cy4KICAgICBmb3IgKGF1dG8mIGNoaWxkIDogdGFyZ2V0cykgewogICAgICAgICBh
dXRvIG5vZGVUeXBlUmVzdWx0ID0gY2hlY2tBY2NlcHRDaGlsZEd1YXJhbnRlZWROb2RlVHlwZXMo
KnRoaXMsIGNoaWxkKTsKICAgICAgICAgaWYgKG5vZGVUeXBlUmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQpAQCAtODU3LDEwICs4NzEsNiBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2
ZW50cyhSZWY8Tm9kZT4mIGNoaWxkKQogICAgIGlmIChjaGlsZC0+aXNJblNoYWRvd1RyZWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBiZWxvbmcgaW4g
ZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMuCi0gICAgLy8gRklYTUU6IE5vZGVzIHJlbW92ZWQg
ZnJvbSBhIHNoYWRvdyB0cmVlIHNob3VsZCBhbHNvIGJlIGtlcHQgYWxpdmUuCi0gICAgd2lsbENy
ZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkLnB0cigpKTsKLQogICAgIFJl
ZjxEb2N1bWVudD4gZG9jdW1lbnQgPSBjaGlsZC0+ZG9jdW1lbnQoKTsKIAogICAgIC8vIGRpc3Bh
dGNoIHByZS1yZW1vdmFsIG11dGF0aW9uIGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmgKaW5kZXggMGVhNjA2MTc2OTY5NGY2NTlmZDYxZjUzNmVhOTNiMWY2M2NkMGJkMi4uOTk3MzQ1
YzUwYTVkZTg4ZjVhOGU2YWUzN2ZiMjlmNjU4ZTkxY2ExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5oCkBAIC0xNTAsNiArMTUwLDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIERl
ZmVyQ2hpbGRyZW5DaGFuZ2VkIHsgWWVzLCBObyB9OwogICAgIE5vZGVWZWN0b3IgcmVtb3ZlQWxs
Q2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaWxkQ2hhbmdlOjpTb3VyY2UsIERlZmVyQ2hp
bGRyZW5DaGFuZ2VkID0gRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Ok5vKTsKICAgICBib29sIHJlbW92
ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmLCBDaGlsZENoYW5nZTo6U291cmNlKTsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmVTZWxmT3JDaGlsZE5vZGVzRm9ySW5zZXJ0aW9uKE5v
ZGUmLCBOb2RlVmVjdG9yJik7CiAKICAgICB2b2lkIHJlbW92ZUJldHdlZW4oTm9kZSogcHJldmlv
dXNDaGlsZCwgTm9kZSogbmV4dENoaWxkLCBOb2RlJiBvbGRDaGlsZCk7CiAgICAgRXhjZXB0aW9u
T3I8dm9pZD4gYXBwZW5kQ2hpbGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayhOb2Rl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcApp
bmRleCAyYWYyNzYxODc3NTdlODgyODgzMDU1YzkwNGU2ZTg3MzM0Y2Q0ZDIzLi4zNjk5OTdlMGIw
YWY1YjNjNzk0NDE4YTRmOTgzNWQyNWJiNmE2ZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKQEAgLTEwNyw0OSArMTA3LDY2IEBAIE5vZGVW
ZWN0b3Igbm90aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQoQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNl
cnRlZFRyZWUsIE5vZGUmIG5vCiAgICAgcmV0dXJuIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25U
YXJnZXRzOwogfQogCi1zdGF0aWMgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChD
b250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBUcmVlU2NvcGVDaGFuZ2UgdHJl
ZVNjb3BlQ2hhbmdlLCBOb2RlJiBub2RlKQoraW5saW5lIFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJp
bGl0eSBvYnNlcnZhYmlsaXR5T2ZSZW1vdmVkTm9kZShOb2RlJiBub2RlKQoreworICAgIGJvb2wg
aXNSb290T2ZSZW1vdmVkVHJlZSA9ICFub2RlLnBhcmVudE5vZGUoKTsKKyAgICByZXR1cm4gbm9k
ZS5yZWZDb3VudCgpID4gMSAmJiAhaXNSb290T2ZSZW1vdmVkVHJlZSA/IFJlbW92ZWRTdWJ0cmVl
T2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIgOiBSZW1vdmVkU3VidHJlZU9i
c2VydmFiaWxpdHk6Ok5vdE9ic2VydmFibGU7Cit9CisKK2lubGluZSB2b2lkIHVwZGF0ZU9ic2Vy
dmFiaWxpdHkoUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5JiBjdXJyZW50T2JzZXJ2YWJpbGl0
eSwgUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5IG5ld1N0YXR1cykKK3sKKyAgICBpZiAobmV3
U3RhdHVzID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxlQnlS
ZWZQdHIpCisgICAgICAgIGN1cnJlbnRPYnNlcnZhYmlsaXR5ID0gbmV3U3RhdHVzOworfQorCitz
dGF0aWMgUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5IG5vdGlmeU5vZGVSZW1vdmVkRnJvbURv
Y3VtZW50KENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIFRyZWVTY29wZUNo
YW5nZSB0cmVlU2NvcGVDaGFuZ2UsIE5vZGUmIG5vZGUpCiB7CiAgICAgQVNTRVJUKG9sZFBhcmVu
dE9mUmVtb3ZlZFRyZWUuaXNDb25uZWN0ZWQoKSk7CiAgICAgQVNTRVJUKG5vZGUuaXNDb25uZWN0
ZWQoKSk7CiAgICAgbm9kZS5yZW1vdmVkRnJvbUFuY2VzdG9yKE5vZGU6OlJlbW92YWxUeXBlIHsg
LyogZGlzY29ubmVjdGVkRnJvbURvY3VtZW50ICovIHRydWUsIHRyZWVTY29wZUNoYW5nZSA9PSBU
cmVlU2NvcGVDaGFuZ2U6OkNoYW5nZWQgfSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7CiAKKyAg
ICBhdXRvIG9ic2VydmFiaWxpdHkgPSBvYnNlcnZhYmlsaXR5T2ZSZW1vdmVkTm9kZShub2RlKTsK
ICAgICBpZiAoIWlzPENvbnRhaW5lck5vZGU+KG5vZGUpKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBvYnNlcnZhYmlsaXR5OwogCiAgICAgZm9yIChSZWZQdHI8Tm9kZT4gY2hpbGQg
PSBkb3duY2FzdDxDb250YWluZXJOb2RlPihub2RlKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oIW5vZGUuaXNDb25uZWN0ZWQoKSAmJiBjaGlsZC0+cGFyZW50
Tm9kZSgpID09ICZub2RlKTsKLSAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQo
b2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgdHJlZVNjb3BlQ2hhbmdlLCAqY2hpbGQuZ2V0KCkpOwor
ICAgICAgICB1cGRhdGVPYnNlcnZhYmlsaXR5KG9ic2VydmFiaWxpdHksIG5vdGlmeU5vZGVSZW1v
dmVkRnJvbURvY3VtZW50KG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIHRyZWVTY29wZUNoYW5nZSwg
KmNoaWxkLmdldCgpKSk7CiAgICAgfQogCiAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gb2JzZXJ2YWJpbGl0eTsKIAogICAgIGlmIChS
ZWZQdHI8U2hhZG93Um9vdD4gcm9vdCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpLnNoYWRvd1Jv
b3QoKSkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFub2RlLmlzQ29ubmVjdGVkKCkgJiYgcm9vdC0+aG9zdCgpID09ICZub2RlKTsKLSAgICAgICAg
bm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQob2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgVHJl
ZVNjb3BlQ2hhbmdlOjpEaWROb3RDaGFuZ2UsICpyb290LmdldCgpKTsKKyAgICAgICAgdXBkYXRl
T2JzZXJ2YWJpbGl0eShvYnNlcnZhYmlsaXR5LCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVu
dChvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBUcmVlU2NvcGVDaGFuZ2U6OkRpZE5vdENoYW5nZSwg
KnJvb3QuZ2V0KCkpKTsKICAgICB9CisgICAgcmV0dXJuIG9ic2VydmFiaWxpdHk7CiB9CiAKLXN0
YXRpYyB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSYgb2xkUGFy
ZW50T2ZSZW1vdmVkVHJlZSwgVHJlZVNjb3BlQ2hhbmdlIHRyZWVTY29wZUNoYW5nZSwgTm9kZSYg
bm9kZSkKK3N0YXRpYyBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgbm90aWZ5Tm9kZVJlbW92
ZWRGcm9tVHJlZShDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBUcmVlU2Nv
cGVDaGFuZ2UgdHJlZVNjb3BlQ2hhbmdlLCBOb2RlJiBub2RlKQogewogICAgIEFTU0VSVCghb2xk
UGFyZW50T2ZSZW1vdmVkVHJlZS5pc0Nvbm5lY3RlZCgpKTsKIAogICAgIG5vZGUucmVtb3ZlZEZy
b21BbmNlc3RvcihOb2RlOjpSZW1vdmFsVHlwZSB7IC8qIGRpc2Nvbm5lY3RlZEZyb21Eb2N1bWVu
dCAqLyBmYWxzZSwgdHJlZVNjb3BlQ2hhbmdlID09IFRyZWVTY29wZUNoYW5nZTo6Q2hhbmdlZCB9
LCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKIAorICAgIGF1dG8gb2JzZXJ2YWJpbGl0eSA9IG9i
c2VydmFiaWxpdHlPZlJlbW92ZWROb2RlKG5vZGUpOwogICAgIGlmICghaXM8Q29udGFpbmVyTm9k
ZT4obm9kZSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG9ic2VydmFiaWxpdHk7
CiAKICAgICBmb3IgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IGRvd25jYXN0PENvbnRhaW5lck5vZGU+
KG5vZGUpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkp
Ci0gICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUob2xkUGFyZW50T2ZSZW1vdmVkVHJl
ZSwgdHJlZVNjb3BlQ2hhbmdlLCAqY2hpbGQpOworICAgICAgICB1cGRhdGVPYnNlcnZhYmlsaXR5
KG9ic2VydmFiaWxpdHksIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUob2xkUGFyZW50T2ZSZW1v
dmVkVHJlZSwgdHJlZVNjb3BlQ2hhbmdlLCAqY2hpbGQpKTsKIAogICAgIGlmICghaXM8RWxlbWVu
dD4obm9kZSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG9ic2VydmFiaWxpdHk7
CiAKICAgICBpZiAoUmVmUHRyPFNoYWRvd1Jvb3Q+IHJvb3QgPSBkb3duY2FzdDxFbGVtZW50Pihu
b2RlKS5zaGFkb3dSb290KCkpCi0gICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUob2xk
UGFyZW50T2ZSZW1vdmVkVHJlZSwgVHJlZVNjb3BlQ2hhbmdlOjpEaWROb3RDaGFuZ2UsICpyb290
KTsKKyAgICAgICAgdXBkYXRlT2JzZXJ2YWJpbGl0eShvYnNlcnZhYmlsaXR5LCBub3RpZnlOb2Rl
UmVtb3ZlZEZyb21UcmVlKG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIFRyZWVTY29wZUNoYW5nZTo6
RGlkTm90Q2hhbmdlLCAqcm9vdCkpOworCisgICAgcmV0dXJuIG9ic2VydmFiaWxpdHk7CiB9CiAK
LXZvaWQgbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZChDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJl
bW92ZWRUcmVlLCBOb2RlJiBjaGlsZCkKK1JlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eSBub3Rp
ZnlDaGlsZE5vZGVSZW1vdmVkKENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUs
IE5vZGUmIGNoaWxkKQogewogICAgIC8vIEFzc2VydCB0aGF0IHRoZSBjYWxsZXIgb2YgdGhpcyBm
dW5jdGlvbiBoYXMgYW4gaW5zdGFuY2Ugb2YgU2NyaXB0RGlzYWxsb3dlZFNjb3BlLgogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkgfHwgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJl
YWQ6Omhhc0Rpc2FsbG93ZWRTY29wZSgpKTsKQEAgLTE1OCw5ICsxNzUsOCBAQCB2b2lkIG5vdGlm
eUNoaWxkTm9kZVJlbW92ZWQoQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwg
Tm9kZSYgY2hpbGQpCiAgICAgLy8gVHJlZSBzY29wZSBoYXMgY2hhbmdlZCBpZiB0aGUgY29udGFp
bmVyIG5vZGUgZnJvbSB3aGljaCAibm9kZSIgaXMgcmVtb3ZlZCBpcyBpbiBhIGRvY3VtZW50IG9y
IGEgc2hhZG93IHJvb3QuCiAgICAgYXV0byB0cmVlU2NvcGVDaGFuZ2UgPSBvbGRQYXJlbnRPZlJl
bW92ZWRUcmVlLmlzSW5UcmVlU2NvcGUoKSA/IFRyZWVTY29wZUNoYW5nZTo6Q2hhbmdlZCA6IFRy
ZWVTY29wZUNoYW5nZTo6RGlkTm90Q2hhbmdlOwogICAgIGlmIChjaGlsZC5pc0Nvbm5lY3RlZCgp
KQotICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChvbGRQYXJlbnRPZlJlbW92
ZWRUcmVlLCB0cmVlU2NvcGVDaGFuZ2UsIGNoaWxkKTsKLSAgICBlbHNlCi0gICAgICAgIG5vdGlm
eU5vZGVSZW1vdmVkRnJvbVRyZWUob2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgdHJlZVNjb3BlQ2hh
bmdlLCBjaGlsZCk7CisgICAgICAgIHJldHVybiBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVu
dChvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCB0cmVlU2NvcGVDaGFuZ2UsIGNoaWxkKTsKKyAgICBy
ZXR1cm4gbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCB0
cmVlU2NvcGVDaGFuZ2UsIGNoaWxkKTsKIH0KIAogdm9pZCBhZGRDaGlsZE5vZGVzVG9EZWxldGlv
blF1ZXVlKE5vZGUqJiBoZWFkLCBOb2RlKiYgdGFpbCwgQ29udGFpbmVyTm9kZSYgY29udGFpbmVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAppbmRleCA0
OWM5NzU4NTIwZWY0NThkYTliMjk1NTlmNzdjMGJlZWNjZDRhOWRiLi5mODJkNmY1MTBhOGE4OTYw
ODFmYjc0NDU3NmY2YzM3ZmNiZTQ1OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZUFsZ29yaXRobXMuaApAQCAtNjIsNyArNjIsMTEgQEAgcHVibGljOgogI2VuZGlmIC8v
IG5vdCBBU1NFUlRfRU5BQkxFRAogCiBOb2RlVmVjdG9yIG5vdGlmeUNoaWxkTm9kZUluc2VydGVk
KENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlLCBOb2RlJik7Ci12b2lkIG5vdGlm
eUNoaWxkTm9kZVJlbW92ZWQoQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwg
Tm9kZSYpOworZW51bSBjbGFzcyBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgeworICAgIE5v
dE9ic2VydmFibGUsCisgICAgTWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIsCit9OworUmVtb3ZlZFN1
YnRyZWVPYnNlcnZhYmlsaXR5IG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoQ29udGFpbmVyTm9kZSYg
b2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgTm9kZSYpOwogdm9pZCByZW1vdmVEZXRhY2hlZENoaWxk
cmVuSW5Db250YWluZXIoQ29udGFpbmVyTm9kZSYpOwogCiBlbnVtIFN1YmZyYW1lRGlzY29ubmVj
dFBvbGljeSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419228</attachid>
            <date>2021-02-03 21:35:15 -0800</date>
            <delta_ts>2021-02-04 16:10:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221243-20210203213514.patch</filename>
            <type>text/plain</type>
            <size>17790</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODIxZTMxMmFkNTQwOTIy
MzcxYmI3Mjg0ZTAyYzIzZjc3Y2RhNDAyNy4uMmVhYjY3NzlhOTcxN2JkNThhMmEwY2I5MDM4OGZh
YTVmZGFhN2VkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIxLTAyLTAyICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEF2b2lkIGNyZWF0aW5nIEpT
IHdyYXBwZXIgb24gYSByZW1vdmVkIG5vZGUgd2hlbiB0aGUgc3VidHJlZSBpcyBub3Qgb2JzZXJ2
YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
MjQzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzcxOTM4Nj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmlvciB0byB0aGlzIHBhdGNoLCBXZWJL
aXQgZm9yY2VkIHRoZSBjcmVhdGlvbiB0aGUgSlMgd3JhcHBlciBvbiB0aGUgcm9vdCBET00gbm9k
ZSBvZiBhIHJlbW92ZWQgc3VidHJlZQorICAgICAgICB0byBhdm9pZCBzY3JpcHQgb2JzZXJ2YWJs
ZSBkZWxldGlvbiBvZiBub2Rlcy4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBET00gbm9kZXMg
YXJlIHJlZmVyZW5jZSBjb3VudGVkCisgICAgICAgIGluIHRoZSBDKysgc2lkZSwgYW5kIHdoaWxl
IGEgRE9NIG5vZGUga2VlcHMgaXRzIGNoaWxkIG5vZGVzIGFsaXZlLCBpdCB3b24ndCBrZWVwIGl0
cyBwYXJlbnQgbm9kZSBhbGl2ZQorICAgICAgICB0byBhdm9pZCByZWZlcmVuY2UgY3ljbGVzIChs
ZWFrcykuIElmIHdlIGRpZG4ndCBmb3JjZSB0aGUgY3JlYXRpb24gb2YgdGhlIEpTIHdyYXBwZXIg
YW5kIHRoZSByb290IG5vZGUKKyAgICAgICAgb2YgdGhlIHJlbW92ZWQgc3VidHJlZSBkaWRuJ3Qg
aGF2ZSBhbnkgZXh0ZXJuYWwgcmVmZXJlbmNlIHRvIGl0IGluIEMrKyBzaWRlLCB3ZSB3b3VsZCBo
YXBwaWx5IGRlbGV0ZSBpdAorICAgICAgICBhbmQgYWxsIGl0cyBkZXNjZW5kYW50IG5vZGVzIGFi
b3ZlIGFueSBzdWJ0cmVlIHdpdGggYSBKUyB3cmFwcGVyIG9yIGFuIGV4dGVybmFsIEMrKyByZWZl
cmVuY2UuCisKKyAgICAgICAgV2hpbGUgdGhpcyB0dXJuZWQgb3V0IHRvIGJlIGFuIGVmZmVjdGl2
ZSBzdHJhdGVneSBmb3IgaW1wbGVtZW50aW5nIERPTSBub2RlcycgR0Mgc2VtYW50aWNzIGNvcnJl
Y3RseSwKKyAgICAgICAgaXQgaGFzIGEgc2lnbmlmaWNhbnQgcnVudGltZSBhbmQgbWVtb3J5IGNv
c3QgLSB0aGUgbGF0dGVyIGlzIGJlY2F1c2Ugd2UgZG9uJ3QgY29sbGVjdCB0aGUgSlMgd3JhcHBl
cnMKKyAgICAgICAgb2YgRE9NIG5vZGVzIG9uY2UgdGhleSdyZSBjcmVhdGVkIHVudGlsIHRoZXkn
cmUgcmVhZHkgdG8gYmUgZGVzdHJ1Y3RlZC4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgYSBuZXcgb3B0aW1pemF0aW9uIHRvIGF2b2lkIGNyZWF0aW5nIHRoZXNlIEpTIHdyYXBwZXJz
IHdoZW4gdGhlIHJlbW92ZWQgc3VidHJlZQorICAgICAgICB3b24ndCBiZSBvYnNlcnZhYmxlIGJ5
IHNjcmlwdHMgaW4gdGhlIGZ1dHVyZS4gVGhlIGN1cnJlbnQgaGV1cmlzdGljIGlzIHRvIGNoZWNr
IGlmIHRoZSByZW1vdmVkIG5vZGUKKyAgICAgICAgaGFzIGFueSBleHRlcm5hbCByZWZlcmVuY2Ug
dG8gaXQgKGkuZS4gcmVmQ291bnQoKSA+IDAgZXhjbHVkaW5nIGFueSByZWZlcmVuY2UgY291bnRp
bmcgdGhhdCBoYXBwZW5zIHdpdGhpbgorICAgICAgICBvdXIgYWxnb3JpdGhtKS4gVGhpcyBpcyBz
dWZmaWNpZW50IGJlY2F1c2UgYSBnaXZlbiBub2RlIHNob3VsZCBub3QgYmUgb2JzZXJ2YWJsZSBh
dCBhIGxhdGVyIHRpbWUgdW5sZXNzCisgICAgICAgIGl0IGhhcyBhbiBleHRlcm5hbCByZWZlcmVu
Y2UgdG8gaXQuIFRoaXMgaXMgfjAuNSUgcHJvZ3Jlc3Npb24gb24gU3BlZWRvbWV0ZXItMi4wIG9u
IE1hY0Jvb2tBaXI3LDIuCisKKyAgICAgICAgVG8gZG8gdGhpcywgd2UgdGFrZSBhZHZhbnRhZ2Ug
b2YgdGhlIGZhY3Qgbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCBhbHJlYWR5IHRyYXZlcnNlcyBlYWNo
IHJlbW92ZWQgc3VidHJlZSwKKyAgICAgICAgYW5kIGNoZWNrIGlmIGFueSBvZiB0aGVtIGhhcyBh
IHJlZmVyZW5jZSBjb3VudCBncmVhdGVyIHRoYW4gMSAoZ3JlYXRlciB0aGFuIDEgYmVjYXVzZSBu
b3RpZnlDaGlsZE5vZGVSZW1vdmVkCisgICAgICAgIGl0c2VsZiBpbmNyZW1lbnRzIG5vZGUncyBy
ZWZlcmVuY2UgY291bnQgYmVmb3JlIGNhbGxpbmcgaXRzZWxmIG9uIGNoaWxkIG5vZGVzKS4gTm90
ZSB0aGF0IHdlIGV4Y2x1ZGUgdGhlCisgICAgICAgIHJvb3Qgbm9kZSBvZiB0aGUgcmVtb3ZlZCBz
dWJ0cmVlIGFzIHRoZXNlIEpTIHdyYXBwZXIgY3JlYXRpb24gaXMgb25seSBuZWVkZWQgdG8ga2Vl
cCB0aGUgcm9vdCBub2RlIGFsaXZlLgorICAgICAgICBJZiB0aGUgcm9vdCBub2RlIGlzIGFscmVh
ZHkga2VwdCBhbGl2ZSBieSBzb21lIGV4dGVybmFsIHJlZmVyZW5jZSB0byBpdCwgdGhlcmUgaXMg
bm8gbmVlZCB0byBrZWVwIGl0IGFsaXZlCisgICAgICAgIGFnYWluIGJ5IGNyZWF0aW5nIGEgSlMg
d3JhcHBlciBvbiBpdC4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgZXhpc3RpbmcgdGVz
dHMgc3VjaCBhcyBmYXN0L2RvbS9nYy0zLmh0bWwgY292ZXJzIGl0LgorCisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVt
b3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKTogQ2FsbCB3aWxsQ3JlYXRlUG9zc2li
bHlPcnBoYW5lZFRyZWVCeVJlbW92YWwKKyAgICAgICAgaWYgdGhlIHJlbW92ZWQgc3VidHJlZSBj
b250YWlucyBhbiBvYnNlcnZhYmxlIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpyZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlU2VsZk9yQ2hpbGROb2Rlc0Zvckluc2VydGlvbik6
IFJlbmFtZWQgZnJvbSBjb2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50LgorICAg
ICAgICBBdm9pZCBjb2xsZWN0aW5nIHRoZSByZW1vdmVkIG5vZGVzIGluIHRoaXMgZnVuY3Rpb24g
aW4gYWRkaXRpb24gdG8gcmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250YWluZXJOb2RlOjphcHBlbmRDaGlsZFdpdGhvdXRQcmVJbnNlcnRpb25WYWxpZGl0eUNoZWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKTogRG9uJ3Qg
Y2FsbCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwgaGVyZS4KKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxn
b3JpdGhtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvYnNlcnZhYmlsaXR5T2ZSZW1vdmVkTm9k
ZSk6IEFkZGVkLiBDaGVja3MgdGhlIG9ic2VydmFiaWxpdHkgb2YgYSBub2RlIGV4Y2x1ZGluZyB0
aGUgcm9vdCBub2RlIG9mCisgICAgICAgIHRoZSByZW1vdmVkIHN1YnRyZWUgc2luY2UgaXQgbmVl
ZHMgYSBzcGVjaWFsIGNhc2UgaW4gcmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9u
LgorICAgICAgICBBcyBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCBhbmQgbm90aWZ5Tm9k
ZVJlbW92ZWRGcm9tVHJlZSByZWYncyBlYWNoIGNoaWxkIG5vZGUgYmVmb3JlIHJlY3Vyc2luZyBv
biBpdHNlbGYsCisgICAgICAgIHdlIGNoZWNrIHJlZkNvdW50KCkgPiAxIGhlcmUuCisgICAgICAg
IChXZWJDb3JlOjp1cGRhdGVPYnNlcnZhYmlsaXR5KTogQWRkZWQuIEEgaGVscGVyIGZ1bmN0aW9u
IHRvIHVwZGF0ZSBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkuCisgICAgICAgIChXZWJDb3Jl
Ojpub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCk6IE5vdyByZXR1cm5zIFJlbW92ZWRTdWJ0
cmVlT2JzZXJ2YWJpbGl0eSwKKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeU5vZGVSZW1vdmVkRnJv
bVRyZWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmeUNoaWxkTm9kZVJlbW92ZWQp
OiBEaXR0by4KKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaDoKKwogMjAy
MS0wMS0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBTdGF0
aWNSYW5nZSBzaG91bGQga2VlcCBpdHMgc3RhcnQgYW5kIGVuZCBjb250YWluZXJzIGFsaXZlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggYjljYmY2OTcwZWZiMGZkODM0MDhl
YzIwZTU0ZGQ2ZTk3ZTU5MjU0Yi4uZTgyMGRhNjgxZDdmMjY0YWI2MTVjMDAzMzczNjE2OTZiNDhm
ZTY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMTExLDcgKzExMSw5
IEBAIEFMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGls
ZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpCiAKICAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IGNo
aWxkID0gbV9maXJzdENoaWxkKSB7CiAgICAgICAgIHJlbW92ZUJldHdlZW4obnVsbHB0ciwgY2hp
bGQtPm5leHRTaWJsaW5nKCksICpjaGlsZCk7Ci0gICAgICAgIG5vdGlmeUNoaWxkTm9kZVJlbW92
ZWQoKnRoaXMsICpjaGlsZCk7CisgICAgICAgIGF1dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBu
b3RpZnlDaGlsZE5vZGVSZW1vdmVkKCp0aGlzLCAqY2hpbGQpOworICAgICAgICBpZiAoc291cmNl
ID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSAmJiBzdWJ0cmVlT2JzZXJ2YWJpbGl0eSA9PSBS
ZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHk6Ok1heWJlT2JzZXJ2YWJsZUJ5UmVmUHRyKQorICAg
ICAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkLmdl
dCgpKTsKICAgICB9CiAKICAgICBpZiAoZGVmZXJDaGlsZHJlbkNoYW5nZWQgPT0gRGVmZXJDaGls
ZHJlbkNoYW5nZWQ6Ok5vKQpAQCAtMTQ5LDYgKzE1MSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBD
b250YWluZXJOb2RlOjpyZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRv
UmVtCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIENoaWxkQ2hhbmdlIGNoYW5nZTsKKyAg
ICBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgc3VidHJlZU9ic2VydmFiaWxpdHk7CiAgICAg
ewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRX
aWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6Oklu
TWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CkBAIC0xNjQsNyArMTY3LDcgQEAgQUxX
QVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0
aW9uKE5vZGUmIGNoaWxkVG9SZW0KICAgICAgICAgUmVmUHRyPE5vZGU+IHByZXZpb3VzU2libGlu
ZyA9IGNoaWxkVG9SZW1vdmUucHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgIFJlZlB0cjxOb2Rl
PiBuZXh0U2libGluZyA9IGNoaWxkVG9SZW1vdmUubmV4dFNpYmxpbmcoKTsKICAgICAgICAgcmVt
b3ZlQmV0d2VlbihwcmV2aW91c1NpYmxpbmcuZ2V0KCksIG5leHRTaWJsaW5nLmdldCgpLCBjaGls
ZFRvUmVtb3ZlKTsKLSAgICAgICAgbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgY2hpbGRU
b1JlbW92ZSk7CisgICAgICAgIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID0gbm90aWZ5Q2hpbGROb2Rl
UmVtb3ZlZCgqdGhpcywgY2hpbGRUb1JlbW92ZSk7CiAKICAgICAgICAgY2hhbmdlLnR5cGUgPSBp
czxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSA/CiAgICAgICAgICAgICBDaGlsZENoYW5nZTo6VHlw
ZTo6RWxlbWVudFJlbW92ZWQgOgpAQCAtMTc2LDYgKzE3OSw5IEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBDb250YWluZXJOb2RlOjpyZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGls
ZFRvUmVtCiAgICAgICAgIGNoYW5nZS5zb3VyY2UgPSBzb3VyY2U7CiAgICAgfQogCisgICAgaWYg
KHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpBUEkgJiYgc3VidHJlZU9ic2VydmFiaWxp
dHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0
cikKKyAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKCZjaGls
ZFRvUmVtb3ZlKTsKKwogICAgIC8vIEZJWE1FOiBNb3ZlIGNoaWxkcmVuQ2hhbmdlZCBpbnRvIFNj
cmlwdERpc2FsbG93ZWRTY29wZSBibG9jay4KICAgICBjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsK
IApAQCAtMjI0LDE4ICsyMzAsMjYgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRl
Tm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oQ29udGFpbmVyTm9kZSYKICAgICAgICAg
ZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50cyhjaGlsZCk7CiB9CiAKLXN0YXRpYyBFeGNlcHRp
b25Pcjx2b2lkPiBjb2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KE5vZGUmIG5v
ZGUsIE5vZGVWZWN0b3ImIG5vZGVzKQorRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6
cmVtb3ZlU2VsZk9yQ2hpbGROb2Rlc0Zvckluc2VydGlvbihOb2RlJiBjaGlsZCwgTm9kZVZlY3Rv
ciYgbm9kZXNGb3JJbnNlcnRpb24pCiB7Ci0gICAgaWYgKCFpczxEb2N1bWVudEZyYWdtZW50Pihu
b2RlKSkgewotICAgICAgICBub2Rlcy5hcHBlbmQobm9kZSk7Ci0gICAgICAgIGF1dG8qIG9sZFBh
cmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOworICAgIGlmICghaXM8RG9jdW1lbnRGcmFnbWVudD4o
Y2hpbGQpKSB7CisgICAgICAgIG5vZGVzRm9ySW5zZXJ0aW9uLmFwcGVuZChjaGlsZCk7CisgICAg
ICAgIGF1dG8gb2xkUGFyZW50ID0gbWFrZVJlZlB0cihjaGlsZC5wYXJlbnROb2RlKCkpOwogICAg
ICAgICBpZiAoIW9sZFBhcmVudCkKICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIHJl
dHVybiBvbGRQYXJlbnQtPnJlbW92ZUNoaWxkKG5vZGUpOworICAgICAgICByZXR1cm4gb2xkUGFy
ZW50LT5yZW1vdmVDaGlsZChjaGlsZCk7CiAgICAgfQogCi0gICAgbm9kZXMgPSBjb2xsZWN0Q2hp
bGROb2Rlcyhub2RlKTsKLSAgICBkb3duY2FzdDxEb2N1bWVudEZyYWdtZW50Pihub2RlKS5yZW1v
dmVDaGlsZHJlbigpOworICAgIGF1dG8mIGZyYWdtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnRGcmFn
bWVudD4oY2hpbGQpOworICAgIGlmICghZnJhZ21lbnQuaGFzQ2hpbGROb2RlcygpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgYXV0byByZW1vdmVkQ2hpbGROb2RlcyA9IGZyYWdtZW50LnJl
bW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbihDb250YWluZXJOb2RlOjpDaGlsZENo
YW5nZTo6U291cmNlOjpBUEkpOworICAgIG5vZGVzRm9ySW5zZXJ0aW9uLnN3YXAocmVtb3ZlZENo
aWxkTm9kZXMpOworCisgICAgZnJhZ21lbnQucmVidWlsZFNWR0V4dGVuc2lvbnNFbGVtZW50c0lm
TmVjZXNzYXJ5KCk7CisgICAgZnJhZ21lbnQuZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgp
OworCiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtMzkzLDEzICs0MDcsMTMgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKE5vZGUmIG5ld0NoaWxkLCBOb2Rl
KiByZWZDaGlsZCkKICAgICBSZWY8Tm9kZT4gbmV4dCgqcmVmQ2hpbGQpOwogCiAgICAgTm9kZVZl
Y3RvciB0YXJnZXRzOwotICAgIGF1dG8gcmVtb3ZlUmVzdWx0ID0gY29sbGVjdENoaWxkcmVuQW5k
UmVtb3ZlRnJvbU9sZFBhcmVudChuZXdDaGlsZCwgdGFyZ2V0cyk7CisgICAgYXV0byByZW1vdmVS
ZXN1bHQgPSByZW1vdmVTZWxmT3JDaGlsZE5vZGVzRm9ySW5zZXJ0aW9uKG5ld0NoaWxkLCB0YXJn
ZXRzKTsKICAgICBpZiAocmVtb3ZlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gcmVtb3ZlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICBpZiAodGFyZ2V0cy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAvLyBXZSBuZWVkIHRoaXMgZXh0cmEg
Y2hlY2sgYmVjYXVzZSBjb2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KCkgY2Fu
IGZpcmUgbXV0YXRpb24gZXZlbnRzLgorICAgIC8vIFdlIG5lZWQgdGhpcyBleHRyYSBjaGVjayBi
ZWNhdXNlIHJlbW92ZVNlbGZPckNoaWxkTm9kZXNGb3JJbnNlcnRpb24oKSBjYW4gZmlyZSBtdXRh
dGlvbiBldmVudHMuCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IHRhcmdldHMpIHsKICAgICAgICAg
YXV0byBjaGVja0FjY2VwdFJlc3VsdCA9IGNoZWNrQWNjZXB0Q2hpbGRHdWFyYW50ZWVkTm9kZVR5
cGVzKCp0aGlzLCBjaGlsZCk7CiAgICAgICAgIGlmIChjaGVja0FjY2VwdFJlc3VsdC5oYXNFeGNl
cHRpb24oKSkKQEAgLTUwOCwxMiArNTIyLDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5l
ck5vZGU6OnJlcGxhY2VDaGlsZChOb2RlJiBuZXdDaGlsZCwgTm9kZSYgb2xkQ2hpbGQpCiAgICAg
Tm9kZVZlY3RvciB0YXJnZXRzOwogICAgIHsKICAgICAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29w
ZSBtdXRhdGlvbigqdGhpcyk7Ci0gICAgICAgIGF1dG8gY29sbGVjdFJlc3VsdCA9IGNvbGxlY3RD
aGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQobmV3Q2hpbGQsIHRhcmdldHMpOworICAgICAg
ICBhdXRvIGNvbGxlY3RSZXN1bHQgPSByZW1vdmVTZWxmT3JDaGlsZE5vZGVzRm9ySW5zZXJ0aW9u
KG5ld0NoaWxkLCB0YXJnZXRzKTsKICAgICAgICAgaWYgKGNvbGxlY3RSZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlc3VsdC5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAgICAgfQogCi0gICAgLy8gRG8gdGhpcyBvbmUgbW9yZSB0aW1lIGJlY2F1c2UgY29sbGVj
dENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudCgpIGZpcmVzIGEgTXV0YXRpb25FdmVudC4K
KyAgICAvLyBEbyB0aGlzIG9uZSBtb3JlIHRpbWUgYmVjYXVzZSByZW1vdmVTZWxmT3JDaGlsZE5v
ZGVzRm9ySW5zZXJ0aW9uKCkgZmlyZXMgYSBNdXRhdGlvbkV2ZW50LgogICAgIGZvciAoYXV0byYg
Y2hpbGQgOiB0YXJnZXRzKSB7CiAgICAgICAgIHZhbGlkaXR5UmVzdWx0ID0gY2hlY2tQcmVSZXBs
YWNlbWVudFZhbGlkaXR5KCp0aGlzLCBjaGlsZCwgb2xkQ2hpbGQsIFNob3VsZFZhbGlkYXRlQ2hp
bGRQYXJlbnQ6Ok5vKTsKICAgICAgICAgaWYgKHZhbGlkaXR5UmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQpAQCAtNzA3LDE0ICs3MjEsMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6
YXBwZW5kQ2hpbGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayhOb2QKICAgICBSZWY8
Q29udGFpbmVyTm9kZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBOb2RlVmVjdG9yIHRh
cmdldHM7Ci0gICAgYXV0byByZW1vdmVSZXN1bHQgPSBjb2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVG
cm9tT2xkUGFyZW50KG5ld0NoaWxkLCB0YXJnZXRzKTsKKyAgICBhdXRvIHJlbW92ZVJlc3VsdCA9
IHJlbW92ZVNlbGZPckNoaWxkTm9kZXNGb3JJbnNlcnRpb24obmV3Q2hpbGQsIHRhcmdldHMpOwog
ICAgIGlmIChyZW1vdmVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiByZW1v
dmVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAgICAgaWYgKHRhcmdldHMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgLy8gV2UgbmVlZCB0aGlzIGV4dHJhIGNoZWNr
IGJlY2F1c2UgY29sbGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudCgpIGNhbiBmaXJl
IG11dGF0aW9uIGV2ZW50cy4KKyAgICAvLyBXZSBuZWVkIHRoaXMgZXh0cmEgY2hlY2sgYmVjYXVz
ZSByZW1vdmVTZWxmT3JDaGlsZE5vZGVzRm9ySW5zZXJ0aW9uKCkgY2FuIGZpcmUgbXV0YXRpb24g
ZXZlbnRzLgogICAgIGZvciAoYXV0byYgY2hpbGQgOiB0YXJnZXRzKSB7CiAgICAgICAgIGF1dG8g
bm9kZVR5cGVSZXN1bHQgPSBjaGVja0FjY2VwdENoaWxkR3VhcmFudGVlZE5vZGVUeXBlcygqdGhp
cywgY2hpbGQpOwogICAgICAgICBpZiAobm9kZVR5cGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBA
IC04NTcsMTAgKzg3MSw2IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRz
KFJlZjxOb2RlPiYgY2hpbGQpCiAgICAgaWYgKGNoaWxkLT5pc0luU2hhZG93VHJlZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGJlbG9uZyBpbiBkaXNw
YXRjaENoaWxkUmVtb3ZhbEV2ZW50cy4KLSAgICAvLyBGSVhNRTogTm9kZXMgcmVtb3ZlZCBmcm9t
IGEgc2hhZG93IHRyZWUgc2hvdWxkIGFsc28gYmUga2VwdCBhbGl2ZS4KLSAgICB3aWxsQ3JlYXRl
UG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoY2hpbGQucHRyKCkpOwotCiAgICAgUmVmPERv
Y3VtZW50PiBkb2N1bWVudCA9IGNoaWxkLT5kb2N1bWVudCgpOwogCiAgICAgLy8gZGlzcGF0Y2gg
cHJlLXJlbW92YWwgbXV0YXRpb24gZXZlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApp
bmRleCAwZWE2MDYxNzY5Njk0ZjY1OWZkNjFmNTM2ZWE5M2IxZjYzY2QwYmQyLi45OTczNDVjNTBh
NWRlODhmNWE4ZTZhZTM3ZmIyOWY2NThlOTFjYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmgKQEAgLTE1MCw2ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRGVmZXJD
aGlsZHJlbkNoYW5nZWQgeyBZZXMsIE5vIH07CiAgICAgTm9kZVZlY3RvciByZW1vdmVBbGxDaGls
ZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFuZ2U6OlNvdXJjZSwgRGVmZXJDaGlsZHJl
bkNoYW5nZWQgPSBEZWZlckNoaWxkcmVuQ2hhbmdlZDo6Tm8pOwogICAgIGJvb2wgcmVtb3ZlTm9k
ZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9kZSYsIENoaWxkQ2hhbmdlOjpTb3VyY2UpOworICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZVNlbGZPckNoaWxkTm9kZXNGb3JJbnNlcnRpb24oTm9kZSYs
IE5vZGVWZWN0b3ImKTsKIAogICAgIHZvaWQgcmVtb3ZlQmV0d2VlbihOb2RlKiBwcmV2aW91c0No
aWxkLCBOb2RlKiBuZXh0Q2hpbGQsIE5vZGUmIG9sZENoaWxkKTsKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiBhcHBlbmRDaGlsZFdpdGhvdXRQcmVJbnNlcnRpb25WYWxpZGl0eUNoZWNrKE5vZGUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCmluZGV4
IDJhZjI3NjE4Nzc1N2U4ODI4ODMwNTVjOTA0ZTZlODczMzRjZDRkMjMuLjM2OTk5N2UwYjBhZjVi
M2M3OTQ0MThhNGY5ODM1ZDI1YmI2YTZlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcApAQCAtMTA3LDQ5ICsxMDcsNjYgQEAgTm9kZVZlY3Rv
ciBub3RpZnlDaGlsZE5vZGVJbnNlcnRlZChDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVk
VHJlZSwgTm9kZSYgbm8KICAgICByZXR1cm4gcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdl
dHM7CiB9CiAKLXN0YXRpYyB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KENvbnRh
aW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIFRyZWVTY29wZUNoYW5nZSB0cmVlU2Nv
cGVDaGFuZ2UsIE5vZGUmIG5vZGUpCitpbmxpbmUgUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5
IG9ic2VydmFiaWxpdHlPZlJlbW92ZWROb2RlKE5vZGUmIG5vZGUpCit7CisgICAgYm9vbCBpc1Jv
b3RPZlJlbW92ZWRUcmVlID0gIW5vZGUucGFyZW50Tm9kZSgpOworICAgIHJldHVybiBub2RlLnJl
ZkNvdW50KCkgPiAxICYmICFpc1Jvb3RPZlJlbW92ZWRUcmVlID8gUmVtb3ZlZFN1YnRyZWVPYnNl
cnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0ciA6IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2
YWJpbGl0eTo6Tm90T2JzZXJ2YWJsZTsKK30KKworaW5saW5lIHZvaWQgdXBkYXRlT2JzZXJ2YWJp
bGl0eShSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkmIGN1cnJlbnRPYnNlcnZhYmlsaXR5LCBS
ZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgbmV3U3RhdHVzKQoreworICAgIGlmIChuZXdTdGF0
dXMgPT0gUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0
cikKKyAgICAgICAgY3VycmVudE9ic2VydmFiaWxpdHkgPSBuZXdTdGF0dXM7Cit9CisKK3N0YXRp
YyBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1l
bnQoQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgVHJlZVNjb3BlQ2hhbmdl
IHRyZWVTY29wZUNoYW5nZSwgTm9kZSYgbm9kZSkKIHsKICAgICBBU1NFUlQob2xkUGFyZW50T2ZS
ZW1vdmVkVHJlZS5pc0Nvbm5lY3RlZCgpKTsKICAgICBBU1NFUlQobm9kZS5pc0Nvbm5lY3RlZCgp
KTsKICAgICBub2RlLnJlbW92ZWRGcm9tQW5jZXN0b3IoTm9kZTo6UmVtb3ZhbFR5cGUgeyAvKiBk
aXNjb25uZWN0ZWRGcm9tRG9jdW1lbnQgKi8gdHJ1ZSwgdHJlZVNjb3BlQ2hhbmdlID09IFRyZWVT
Y29wZUNoYW5nZTo6Q2hhbmdlZCB9LCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKIAorICAgIGF1
dG8gb2JzZXJ2YWJpbGl0eSA9IG9ic2VydmFiaWxpdHlPZlJlbW92ZWROb2RlKG5vZGUpOwogICAg
IGlmICghaXM8Q29udGFpbmVyTm9kZT4obm9kZSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIG9ic2VydmFiaWxpdHk7CiAKICAgICBmb3IgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IGRv
d25jYXN0PENvbnRhaW5lck5vZGU+KG5vZGUpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTighbm9kZS5pc0Nvbm5lY3RlZCgpICYmIGNoaWxkLT5wYXJlbnROb2Rl
KCkgPT0gJm5vZGUpOwotICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChvbGRQ
YXJlbnRPZlJlbW92ZWRUcmVlLCB0cmVlU2NvcGVDaGFuZ2UsICpjaGlsZC5nZXQoKSk7CisgICAg
ICAgIHVwZGF0ZU9ic2VydmFiaWxpdHkob2JzZXJ2YWJpbGl0eSwgbm90aWZ5Tm9kZVJlbW92ZWRG
cm9tRG9jdW1lbnQob2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgdHJlZVNjb3BlQ2hhbmdlLCAqY2hp
bGQuZ2V0KCkpKTsKICAgICB9CiAKICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBvYnNlcnZhYmlsaXR5OwogCiAgICAgaWYgKFJlZlB0
cjxTaGFkb3dSb290PiByb290ID0gZG93bmNhc3Q8RWxlbWVudD4obm9kZSkuc2hhZG93Um9vdCgp
KSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5v
ZGUuaXNDb25uZWN0ZWQoKSAmJiByb290LT5ob3N0KCkgPT0gJm5vZGUpOwotICAgICAgICBub3Rp
ZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBUcmVlU2Nv
cGVDaGFuZ2U6OkRpZE5vdENoYW5nZSwgKnJvb3QuZ2V0KCkpOworICAgICAgICB1cGRhdGVPYnNl
cnZhYmlsaXR5KG9ic2VydmFiaWxpdHksIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KG9s
ZFBhcmVudE9mUmVtb3ZlZFRyZWUsIFRyZWVTY29wZUNoYW5nZTo6RGlkTm90Q2hhbmdlLCAqcm9v
dC5nZXQoKSkpOwogICAgIH0KKyAgICByZXR1cm4gb2JzZXJ2YWJpbGl0eTsKIH0KIAotc3RhdGlj
IHZvaWQgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlJiBvbGRQYXJlbnRP
ZlJlbW92ZWRUcmVlLCBUcmVlU2NvcGVDaGFuZ2UgdHJlZVNjb3BlQ2hhbmdlLCBOb2RlJiBub2Rl
KQorc3RhdGljIFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eSBub3RpZnlOb2RlUmVtb3ZlZEZy
b21UcmVlKENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIFRyZWVTY29wZUNo
YW5nZSB0cmVlU2NvcGVDaGFuZ2UsIE5vZGUmIG5vZGUpCiB7CiAgICAgQVNTRVJUKCFvbGRQYXJl
bnRPZlJlbW92ZWRUcmVlLmlzQ29ubmVjdGVkKCkpOwogCiAgICAgbm9kZS5yZW1vdmVkRnJvbUFu
Y2VzdG9yKE5vZGU6OlJlbW92YWxUeXBlIHsgLyogZGlzY29ubmVjdGVkRnJvbURvY3VtZW50ICov
IGZhbHNlLCB0cmVlU2NvcGVDaGFuZ2UgPT0gVHJlZVNjb3BlQ2hhbmdlOjpDaGFuZ2VkIH0sIG9s
ZFBhcmVudE9mUmVtb3ZlZFRyZWUpOwogCisgICAgYXV0byBvYnNlcnZhYmlsaXR5ID0gb2JzZXJ2
YWJpbGl0eU9mUmVtb3ZlZE5vZGUobm9kZSk7CiAgICAgaWYgKCFpczxDb250YWluZXJOb2RlPihu
b2RlKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gb2JzZXJ2YWJpbGl0eTsKIAog
ICAgIGZvciAoUmVmUHRyPE5vZGU+IGNoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyTm9kZT4obm9k
ZSkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKLSAg
ICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCB0
cmVlU2NvcGVDaGFuZ2UsICpjaGlsZCk7CisgICAgICAgIHVwZGF0ZU9ic2VydmFiaWxpdHkob2Jz
ZXJ2YWJpbGl0eSwgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShvbGRQYXJlbnRPZlJlbW92ZWRU
cmVlLCB0cmVlU2NvcGVDaGFuZ2UsICpjaGlsZCkpOwogCiAgICAgaWYgKCFpczxFbGVtZW50Pihu
b2RlKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gb2JzZXJ2YWJpbGl0eTsKIAog
ICAgIGlmIChSZWZQdHI8U2hhZG93Um9vdD4gcm9vdCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUp
LnNoYWRvd1Jvb3QoKSkKLSAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShvbGRQYXJl
bnRPZlJlbW92ZWRUcmVlLCBUcmVlU2NvcGVDaGFuZ2U6OkRpZE5vdENoYW5nZSwgKnJvb3QpOwor
ICAgICAgICB1cGRhdGVPYnNlcnZhYmlsaXR5KG9ic2VydmFiaWxpdHksIG5vdGlmeU5vZGVSZW1v
dmVkRnJvbVRyZWUob2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgVHJlZVNjb3BlQ2hhbmdlOjpEaWRO
b3RDaGFuZ2UsICpyb290KSk7CisKKyAgICByZXR1cm4gb2JzZXJ2YWJpbGl0eTsKIH0KIAotdm9p
ZCBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3Zl
ZFRyZWUsIE5vZGUmIGNoaWxkKQorUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5IG5vdGlmeUNo
aWxkTm9kZVJlbW92ZWQoQ29udGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgTm9k
ZSYgY2hpbGQpCiB7CiAgICAgLy8gQXNzZXJ0IHRoYXQgdGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0
aW9uIGhhcyBhbiBpbnN0YW5jZSBvZiBTY3JpcHREaXNhbGxvd2VkU2NvcGUuCiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSB8fCBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6
aGFzRGlzYWxsb3dlZFNjb3BlKCkpOwpAQCAtMTU4LDkgKzE3NSw4IEBAIHZvaWQgbm90aWZ5Q2hp
bGROb2RlUmVtb3ZlZChDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBOb2Rl
JiBjaGlsZCkKICAgICAvLyBUcmVlIHNjb3BlIGhhcyBjaGFuZ2VkIGlmIHRoZSBjb250YWluZXIg
bm9kZSBmcm9tIHdoaWNoICJub2RlIiBpcyByZW1vdmVkIGlzIGluIGEgZG9jdW1lbnQgb3IgYSBz
aGFkb3cgcm9vdC4KICAgICBhdXRvIHRyZWVTY29wZUNoYW5nZSA9IG9sZFBhcmVudE9mUmVtb3Zl
ZFRyZWUuaXNJblRyZWVTY29wZSgpID8gVHJlZVNjb3BlQ2hhbmdlOjpDaGFuZ2VkIDogVHJlZVNj
b3BlQ2hhbmdlOjpEaWROb3RDaGFuZ2U7CiAgICAgaWYgKGNoaWxkLmlzQ29ubmVjdGVkKCkpCi0g
ICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KG9sZFBhcmVudE9mUmVtb3ZlZFRy
ZWUsIHRyZWVTY29wZUNoYW5nZSwgY2hpbGQpOwotICAgIGVsc2UKLSAgICAgICAgbm90aWZ5Tm9k
ZVJlbW92ZWRGcm9tVHJlZShvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCB0cmVlU2NvcGVDaGFuZ2Us
IGNoaWxkKTsKKyAgICAgICAgcmV0dXJuIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KG9s
ZFBhcmVudE9mUmVtb3ZlZFRyZWUsIHRyZWVTY29wZUNoYW5nZSwgY2hpbGQpOworICAgIHJldHVy
biBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUsIHRyZWVT
Y29wZUNoYW5nZSwgY2hpbGQpOwogfQogCiB2b2lkIGFkZENoaWxkTm9kZXNUb0RlbGV0aW9uUXVl
dWUoTm9kZSomIGhlYWQsIE5vZGUqJiB0YWlsLCBDb250YWluZXJOb2RlJiBjb250YWluZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCmluZGV4IDQ5Yzk3
NTg1MjBlZjQ1OGRhOWIyOTU1OWY3N2MwYmVlY2NkNGE5ZGIuLmY4MmQ2ZjUxMGE4YTg5NjA4MWZi
NzQ0NTc2ZjZjMzdmY2JlNDU5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlQWxnb3JpdGhtcy5oCkBAIC02Miw3ICs2MiwxMSBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gbm90
IEFTU0VSVF9FTkFCTEVECiAKIE5vZGVWZWN0b3Igbm90aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQoQ29u
dGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUsIE5vZGUmKTsKLXZvaWQgbm90aWZ5Q2hp
bGROb2RlUmVtb3ZlZChDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBOb2Rl
Jik7CitlbnVtIGNsYXNzIFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eSB7CisgICAgTm90T2Jz
ZXJ2YWJsZSwKKyAgICBNYXliZU9ic2VydmFibGVCeVJlZlB0ciwKK307CitSZW1vdmVkU3VidHJl
ZU9ic2VydmFiaWxpdHkgbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZChDb250YWluZXJOb2RlJiBvbGRQ
YXJlbnRPZlJlbW92ZWRUcmVlLCBOb2RlJik7CiB2b2lkIHJlbW92ZURldGFjaGVkQ2hpbGRyZW5J
bkNvbnRhaW5lcihDb250YWluZXJOb2RlJik7CiAKIGVudW0gU3ViZnJhbWVEaXNjb25uZWN0UG9s
aWN5IHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>