<?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>236533</bug_id>
          
          <creation_ts>2022-02-11 17:00:25 -0800</creation_ts>
          <short_desc>Web Inspector: merge WI.OverlayManager into WI.DOMNode</short_desc>
          <delta_ts>2022-02-24 09:24:40 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=237141</see_also>
          <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="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>jbedard</cc>
    
    <cc>pangle</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1840622</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-11 17:00:25 -0800</bug_when>
    <thetext>There&apos;s really nothing substantial about `WI.OverlayManager` that requires it to exist. All of the methods, members, etc. can be moved to `WI.DOMNode`, resulting in clearer calling code (since callers currently have to provide a `WI.DOMNode` to `WI.OverlayManager` methods) and fewer collections (e.g. it&apos;s no longer necessary to have a &quot;list of nodes showing a grid overlay&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840623</commentid>
    <comment_count>1</comment_count>
      <attachid>451759</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-11 17:02:42 -0800</bug_when>
    <thetext>Created attachment 451759
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843735</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-18 17:01:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/89173059&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844416</commentid>
    <comment_count>3</comment_count>
      <attachid>452787</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-21 15:28:09 -0800</bug_when>
    <thetext>Created attachment 452787
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844719</commentid>
    <comment_count>4</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2022-02-22 08:21:08 -0800</bug_when>
    <thetext>3 failures in https://ews-build.webkit.org/#/builders/70/builds/973 are known, stopped the build before retries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845435</commentid>
    <comment_count>5</comment_count>
      <attachid>452787</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-02-23 17:01:54 -0800</bug_when>
    <thetext>Comment on attachment 452787
[fast-cq] Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Controllers/GridOverlayConfigurationDiagnosticEventRecorder.js:35
&gt; +        this._nodesShowingGridLayoutOverlay = new Set;

Is there a way we can do this by just keeping a balanced count instead of keeping the nodes around, or do the events that are fired not guarantee any sort of balanced calls? If not, can we add a listener for node removal (or maybe just a new event called from WI.DOMManager.prototype.willDestroyDOMNode) to also remove it from this set?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845464</commentid>
    <comment_count>6</comment_count>
      <attachid>452787</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-23 17:43:41 -0800</bug_when>
    <thetext>Comment on attachment 452787
[fast-cq] Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/GridOverlayConfigurationDiagnosticEventRecorder.js:35
&gt;&gt; +        this._nodesShowingGridLayoutOverlay = new Set;
&gt; 
&gt; Is there a way we can do this by just keeping a balanced count instead of keeping the nodes around, or do the events that are fired not guarantee any sort of balanced calls? If not, can we add a listener for node removal (or maybe just a new event called from WI.DOMManager.prototype.willDestroyDOMNode) to also remove it from this set?

Maybe?  I believe there is some complexity in that when the `layoutContextType` changes the overlay is automatically hidden in the backend, but the frontend should dispatch `WI.DOMNode.Event.LayoutOverlayHidden` just in case.

I&apos;ve actually been wanting to introduce a `IterableWeakSet` (of my creation) so maybe this is a good &quot;excuse&quot; :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845617</commentid>
    <comment_count>7</comment_count>
      <attachid>452787</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-24 08:40:24 -0800</bug_when>
    <thetext>Comment on attachment 452787
[fast-cq] Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/GridOverlayConfigurationDiagnosticEventRecorder.js:35
&gt;&gt;&gt; +        this._nodesShowingGridLayoutOverlay = new Set;
&gt;&gt; 
&gt;&gt; Is there a way we can do this by just keeping a balanced count instead of keeping the nodes around, or do the events that are fired not guarantee any sort of balanced calls? If not, can we add a listener for node removal (or maybe just a new event called from WI.DOMManager.prototype.willDestroyDOMNode) to also remove it from this set?
&gt; 
&gt; Maybe?  I believe there is some complexity in that when the `layoutContextType` changes the overlay is automatically hidden in the backend, but the frontend should dispatch `WI.DOMNode.Event.LayoutOverlayHidden` just in case.
&gt; 
&gt; I&apos;ve actually been wanting to introduce a `IterableWeakSet` (of my creation) so maybe this is a good &quot;excuse&quot; :)

It&apos;s also worth mentioning that the old code used `WI.OverlayManager.prototype.hasVisibleGridOverlays`, which consulted the private `_overlayForNodeMap` (which was a `Map`), so there should be no difference in what is kept alive before vs after this change.

I&apos;m currently working on writing some tests for the `IterableWeakSet` I&apos;ve created, but it&apos;s difficult due to the fact that there&apos;s no way for us to ensure that a given object is GCd, and therefore the any tests for any `Weak*` would be potentially flaky.

Based on my first comment, I&apos;m gonna land this and try to get `IterableWeakSet` working separately instead of delaying this change (not to mention `IterableWeakSet` is kinda only tangentially related to this change, so adding it as part of this could be seen as odd).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845619</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-24 08:44:06 -0800</bug_when>
    <thetext>Committed r290435 (247738@main): &lt;https://commits.webkit.org/247738@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452787.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451759</attachid>
            <date>2022-02-11 17:02:42 -0800</date>
            <delta_ts>2022-02-21 15:28:07 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-236533-20220211180241.patch</filename>
            <type>text/plain</type>
            <size>53617</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDg3NDI2MDFkZDdhZGM0MDA4NmI0YjEyZmIyMmNk
NmJjMzNhNTk0N2YuLjNkNTVjYmZiMTExMDcxN2RlOTJiZjIzNWEwNjIxZWUxYTk5YjQ0ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIyLTAyLTExICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBt
ZXJnZSBXSS5PdmVybGF5TWFuYWdlciBpbnRvIFdJLkRPTU5vZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjUzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlJ3MgcmVhbGx5IG5vdGhpbmcgc3Vi
c3RhbnRpYWwgYWJvdXQgYFdJLk92ZXJsYXlNYW5hZ2VyYCB0aGF0IHJlcXVpcmVzIGl0IHRvIGV4
aXN0LiBBbGwKKyAgICAgICAgb2YgdGhlIG1ldGhvZHMsIG1lbWJlcnMsIGV0Yy4gY2FuIGJlIG1v
dmVkIHRvIGBXSS5ET01Ob2RlYCwgcmVzdWx0aW5nIGluIGNsZWFyZXIgY2FsbGluZworICAgICAg
ICBjb2RlIChzaW5jZSBjYWxsZXJzIGN1cnJlbnRseSBoYXZlIHRvIHByb3ZpZGUgYSBgV0kuRE9N
Tm9kZWAgdG8gYFdJLk92ZXJsYXlNYW5hZ2VyYCBtZXRob2RzKQorICAgICAgICBhbmQgZmV3ZXIg
Y29sbGVjdGlvbnMgKGUuZy4gaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIGhhdmUgYSAibGlz
dCBvZiBub2RlcyBzaG93aW5nIGEgZ3JpZAorICAgICAgICBvdmVybGF5IikuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL092ZXJsYXlNYW5hZ2VyLmpzOiBSZW1vdmVkLgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV0kubG9hZGVkKToKKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanM6CisgICAgICAgIChXSS5ET01Ob2RlKToKKyAgICAg
ICAgKFdJLkRPTU5vZGUucmVzZXREZWZhdWx0TGF5b3V0T3ZlcmxheUNvbmZpZ3VyYXRpb24pOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkRPTU5vZGUucHJvdG90eXBlLmdldCBsYXlvdXRPdmVybGF5U2hv
d2luZyk6IG1vdmVkIGZyb20gYFdJLk92ZXJsYXlNYW5hZ2VyLnByb3R5dHBlLmhhc1Zpc2libGVP
dmVybGF5YC4KKyAgICAgICAgKFdJLkRPTU5vZGUucHJvdG90eXBlLnNldCBsYXlvdXRDb250ZXh0
VHlwZSk6CisgICAgICAgIChXSS5ET01Ob2RlLnByb3RvdHlwZS5zaG93TGF5b3V0T3ZlcmxheSk6
IG1vdmVkIGZyb20gYFdJLk92ZXJsYXlNYW5hZ2VyLnByb3R5dHBlLnNob3dPdmVybGF5YC4KKyAg
ICAgICAgKFdJLkRPTU5vZGUucHJvdG90eXBlLmhpZGVMYXlvdXRPdmVybGF5KTogbW92ZWQgZnJv
bSBgV0kuT3ZlcmxheU1hbmFnZXIucHJvdHl0cGUuaGlkZU92ZXJsYXlgLgorICAgICAgICAoV0ku
RE9NTm9kZS5wcm90b3R5cGUuZ2V0IGxheW91dE92ZXJsYXlDb2xvcik6IG1vdmVkIGZyb20gYFdJ
Lk92ZXJsYXlNYW5hZ2VyLnByb3R5dHBlLmdldENvbG9yRm9yTm9kZWAuCisgICAgICAgIChXSS5E
T01Ob2RlLnByb3RvdHlwZS5zZXQgbGF5b3V0T3ZlcmxheUNvbG9yKTogbW92ZWQgZnJvbSBgV0ku
T3ZlcmxheU1hbmFnZXIucHJvdHl0cGUuc2V0Q29sb3JGb3JOb2RlYC4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRPTU1h
bmFnZXIucHJvdG90eXBlLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UpOgorICAgICAgICBSZXNldCB0
aGUgaW5kZXggb2YgdGhlIG5leHQgZGVmYXVsdCBjb2xvciB0byB1c2UgZm9yIHRoZSBuZXh0IGdy
aWQvZmxleCBET00gbm9kZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTR3Jp
ZFNlY3Rpb24uanM6CisgICAgICAgIChXSS5DU1NHcmlkU2VjdGlvbi5wcm90b3R5cGUuYXR0YWNo
ZWQpOgorICAgICAgICAoV0kuQ1NTR3JpZFNlY3Rpb24ucHJvdG90eXBlLmRldGFjaGVkKToKKyAg
ICAgICAgKFdJLkNTU0dyaWRTZWN0aW9uLnByb3RvdHlwZS5faGFuZGxlVG9nZ2xlQWxsQ2hlY2ti
b3hDaGFuZ2VkKToKKyAgICAgICAgKFdJLkNTU0dyaWRTZWN0aW9uLnByb3RvdHlwZS5sYXlvdXQp
OgorICAgICAgICAoV0kuQ1NTR3JpZFNlY3Rpb24ucHJvdG90eXBlLl9oYW5kbGVHcmlkT3Zlcmxh
eVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXSS5DU1NHcmlkU2VjdGlvbi5wcm90b3R5cGUuX3Vw
ZGF0ZVRvZ2dsZUFsbENoZWNrYm94KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RP
TVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLm9u
YXR0YWNoKToKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRldGFjaCk6
CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX2xheW91dEJhZGdlQ2xpY2tl
ZCk6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZUxheW91dEJh
ZGdlU3RhdHVzKToKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5faGFuZGxl
TGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0dyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLmpz
OgorICAgICAgICAoV0kuR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVj
b3JkZXIpOgorICAgICAgICAoV0kuR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2
ZW50UmVjb3JkZXIucHJvdG90eXBlLnNldHVwKToKKyAgICAgICAgKFdJLkdyaWRPdmVybGF5Q29u
ZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLnByb3RvdHlwZS50ZWFyZG93bik6Cisg
ICAgICAgIChXSS5HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRl
ci5wcm90b3R5cGUuX2hhbmRsZUdyaWRPdmVybGF5U2hvd24pOgorICAgICAgICAoV0kuR3JpZE92
ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIucHJvdG90eXBlLl9oYW5k
bGVHcmlkT3ZlcmxheUhpZGRlbik6CisgICAgICAgIChXSS5HcmlkT3ZlcmxheUNvbmZpZ3VyYXRp
b25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5wcm90b3R5cGUuX3NhbXBsZUN1cnJlbnRPdmVybGF5
Q29uZmlndXJhdGlvbik6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Hcmlk
T3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzOgorICAgICAgICAoV0kuR3JpZE92ZXJs
YXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlcik6CisgICAgICAgIChXSS5HcmlkT3ZlcmxheURpYWdu
b3N0aWNFdmVudFJlY29yZGVyLnByb3RvdHlwZS5zZXR1cCk6CisgICAgICAgIChXSS5HcmlkT3Zl
cmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLnByb3RvdHlwZS50ZWFyZG93bik6CisgICAgICAg
IChXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLnByb3RvdHlwZS5faGFuZGxl
R3JpZE92ZXJsYXlTaG93bik6CisgICAgICAgIEFkb3B0IHRoZSBhYm92ZSBjaGFuZ2VzOgorICAg
ICAgICAgLSBSZXBsYWNlIGBXSS5PdmVybGF5TWFuYWdlci5FdmVudC4qYCB3aXRoIGBXSS5ET01O
b2RlLkV2ZW50LipgIChhbmQgYGV2ZW50LmRhdGEuZG9tTm9kZWAKKyAgICAgICAgICAgd2l0aCBg
ZXZlbnQudGFyZ2V0YCkuCisgICAgICAgICAtIFJlcGxhY2UgYFdJLm92ZXJsYXlNYW5hZ2VyLioo
ZG9tTm9kZVssIC4uLl0pYCB3aXRoIGBkb21Ob2RlLiooWy4uLl0pYC4KKyAgICAgICAgIC0gRGly
ZWN0bHkgcXVlcnkgYFdJLnNldHRpbmdzLmdyaWRPdmVybGF5Ki52YWx1ZWAgaW5zdGVhZCBvZiBn
ZXR0aW5nIHRoZW0gZnJvbSB0aGUgYGRhdGFgCisgICAgICAgICAgIGluIGBXSS5ET01Ob2RlLkV2
ZW50LkxheW91dE92ZXJsYXlTaG93bmAgKGZvcm1lcmx5IGBXSS5PdmVybGF5TWFuYWdlci5FdmVu
dC5PdmVybGF5U2hvd25gKS4KKwogMjAyMi0wMi0xMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU291cmNlczogZG91YmxlIGNsaWNr
aW5nIGEgYnJlYWtwb2ludCBpY29uIHNob3VsZCBzaG93IHRoZSBlZGl0IHBvcG92ZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCA0
Y2M3YTNhN2Q4Yjc2MWYwYjA0OWNkN2Q0YmUxMjBiYWFkZDQ3NThjLi44OWQ4NTJjOTYwMDgyYmE3
NTkyYzY1MDA4Mzg5OTU4MjM3MjAxNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC0xMjcsNyArMTI3LDYgQEAgV0kubG9hZGVk
ID0gZnVuY3Rpb24oKQogICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIgPSBuZXcgV0kuRE9N
RGVidWdnZXJNYW5hZ2VyLAogICAgICAgICBXSS5jYW52YXNNYW5hZ2VyID0gbmV3IFdJLkNhbnZh
c01hbmFnZXIsCiAgICAgICAgIFdJLmFuaW1hdGlvbk1hbmFnZXIgPSBuZXcgV0kuQW5pbWF0aW9u
TWFuYWdlciwKLSAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIgPSBuZXcgV0kuT3ZlcmxheU1hbmFn
ZXIsCiAgICAgXTsKIAogICAgIC8vIFJlZ2lzdGVyIGZvciBldmVudHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2Vy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9N
TWFuYWdlci5qcwppbmRleCA4MDA5Y2U4MWNlOGIxZDI3NzczMWM4NzNjYjMzZGYxNTU5NGQ4MmRj
Li5iZGY5Zjg0MWVhOTc4YjRhZmM4YzlhMjcxMjg3MDEwN2FmZDRhZTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2Vy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0RPTU1hbmFnZXIuanMKQEAgLTg1OSw2ICs4NTksOCBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3Mg
RE9NTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0
ZWROb2RlSXNBbGxvd2VkID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLmVuc3VyZURvY3VtZW50KCk7
CisKKyAgICAgICAgV0kuRE9NTm9kZS5yZXNldERlZmF1bHRMYXlvdXRPdmVybGF5Q29uZmlndXJh
dGlvbigpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0dyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0
aWNFdmVudFJlY29yZGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3Jk
ZXIuanMKaW5kZXggMTZhOWQ4NzUxZWUxY2I0NWRkYjhjYjA4ODEzYTY3NzdhNWM4ZjVkZi4uMTU2
MzgyNDE2MmVhMGNkZWU4YWJjNDJkZTBiZmU2NmNlZWMyZjJhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlDb25m
aWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlDb25maWd1cmF0aW9u
RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuanMKQEAgLTMyLDcgKzMyLDcgQEAgV0kuR3JpZE92ZXJs
YXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIgPSBjbGFzcyBHcmlkT3Zlcmxh
eUNvbmZpZ3VyYXQKICAgICAgICAgdGhpcy5faW5zcGVjdG9ySGFzRm9jdXMgPSB0cnVlOwogICAg
ICAgICB0aGlzLl9sYXN0VXNlckludGVyYWN0aW9uVGltZXN0YW1wID0gdW5kZWZpbmVkOwogICAg
ICAgICB0aGlzLl9ldmVudFNhbXBsaW5nVGltZXJJZGVudGlmaWVyID0gdW5kZWZpbmVkOwotICAg
ICAgICB0aGlzLl9vdmVybGF5T3B0aW9ucyA9IHt9OworICAgICAgICB0aGlzLl9ub2Rlc1Nob3dp
bmdHcmlkTGF5b3V0T3ZlcmxheSA9IG5ldyBTZXQ7CiAgICAgfQogCiAgICAgLy8gU3RhdGljCkBA
IC01MSw4ICs1MSw4IEBAIFdJLkdyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVu
dFJlY29yZGVyID0gY2xhc3MgR3JpZE92ZXJsYXlDb25maWd1cmF0CiAgICAgICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLCBvcHRpb25zKTsKLSAgICAgICAg
V0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVu
dC5PdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U2hvd24sIHRoaXMpOwotICAg
ICAgICBXSS5vdmVybGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2Vy
LkV2ZW50Lk92ZXJsYXlIaWRkZW4sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5SGlkZGVuLCB0aGlz
KTsKKyAgICAgICAgV0kuRE9NTm9kZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQu
TGF5b3V0T3ZlcmxheVNob3duLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVNob3duLCB0aGlzKTsK
KyAgICAgICAgV0kuRE9NTm9kZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuTGF5
b3V0T3ZlcmxheUhpZGRlbiwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMpOwog
ICAgIH0KIAogICAgIHRlYXJkb3duKCkKQEAgLTY0LDM0ICs2NCwzMSBAQCBXSS5HcmlkT3Zlcmxh
eUNvbmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlciA9IGNsYXNzIEdyaWRPdmVybGF5
Q29uZmlndXJhdAogICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRo
aXMsIG9wdGlvbnMpOwogICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93
biIsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
bW91c2Vkb3duIiwgdGhpcywgb3B0aW9ucyk7Ci0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJl
bW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheVNob3duLCB0
aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVNob3duLCB0aGlzKTsKLSAgICAgICAgV0kub3ZlcmxheU1h
bmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5
SGlkZGVuLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheUhpZGRlbiwgdGhpcyk7CisgICAgICAgIFdJ
LkRPTU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkxheW91dE92ZXJs
YXlTaG93biwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlTaG93biwgdGhpcyk7CisgICAgICAgIFdJ
LkRPTU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkxheW91dE92ZXJs
YXlIaWRkZW4sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5SGlkZGVuLCB0aGlzKTsKIAogICAgICAg
ICB0aGlzLl9zdG9wRXZlbnRTYW1wbGluZ1RpbWVySWZOZWVkZWQoKTsKICAgICB9CiAKICAgICBf
aGFuZGxlR3JpZE92ZXJsYXlTaG93bihldmVudCkKICAgICB7Ci0gICAgICAgIGlmIChldmVudC5k
YXRhLmRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUgIT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4
dFR5cGUuR3JpZCkKKyAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5sYXlvdXRDb250ZXh0VHlwZSAh
PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIHRoaXMuX292ZXJsYXlPcHRpb25zLnNob3dUcmFja1NpemVzID0gZXZlbnQu
ZGF0YS5zaG93VHJhY2tTaXplczsKLSAgICAgICAgdGhpcy5fb3ZlcmxheU9wdGlvbnMuc2hvd0xp
bmVOdW1iZXJzID0gZXZlbnQuZGF0YS5zaG93TGluZU51bWJlcnM7Ci0gICAgICAgIHRoaXMuX292
ZXJsYXlPcHRpb25zLnNob3dMaW5lTmFtZXMgPSBldmVudC5kYXRhLnNob3dMaW5lTmFtZXM7Ci0g
ICAgICAgIHRoaXMuX292ZXJsYXlPcHRpb25zLnNob3dBcmVhTmFtZXMgPSBldmVudC5kYXRhLnNo
b3dBcmVhTmFtZXM7Ci0gICAgICAgIHRoaXMuX292ZXJsYXlPcHRpb25zLnNob3dFeHRlbmRlZEdy
aWRMaW5lcyA9IGV2ZW50LmRhdGEuc2hvd0V4dGVuZGVkR3JpZExpbmVzOworICAgICAgICB0aGlz
Ll9ub2Rlc1Nob3dpbmdHcmlkTGF5b3V0T3ZlcmxheS5hZGQoZXZlbnQudGFyZ2V0KTsKIAogICAg
ICAgICBpZiAoIXRoaXMuX2V2ZW50U2FtcGxpbmdUaW1lcklkZW50aWZpZXIpCiAgICAgICAgICAg
ICB0aGlzLl9zdGFydEV2ZW50U2FtcGxpbmdUaW1lcigpOwogICAgIH0KIAotICAgIF9oYW5kbGVH
cmlkT3ZlcmxheUhpZGRlbigpCisgICAgX2hhbmRsZUdyaWRPdmVybGF5SGlkZGVuKGV2ZW50KQog
ICAgIHsKLSAgICAgICAgaWYgKFdJLm92ZXJsYXlNYW5hZ2VyLmhhc1Zpc2libGVHcmlkT3Zlcmxh
eXMoKSkKKyAgICAgICAgdGhpcy5fbm9kZXNTaG93aW5nR3JpZExheW91dE92ZXJsYXkuZGVsZXRl
KGV2ZW50LnRhcmdldCk7CisKKyAgICAgICAgaWYgKHRoaXMuX25vZGVzU2hvd2luZ0dyaWRMYXlv
dXRPdmVybGF5LnNpemUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc3Rv
cEV2ZW50U2FtcGxpbmdUaW1lcklmTmVlZGVkKCk7Ci0gICAgICAgIHRoaXMuX292ZXJsYXlPcHRp
b25zID0ge307CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC0xNTAsNyArMTQ3LDExIEBAIFdJ
LkdyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyID0gY2xhc3Mg
R3JpZE92ZXJsYXlDb25maWd1cmF0CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbGV0
IGludGVydmFsID0gV0kuR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVj
b3JkZXIuZXZlbnRTYW1wbGluZ0ludGVydmFsIC8gMTAwMDsKLSAgICAgICAgbGV0IHtzaG93VHJh
Y2tTaXplcywgc2hvd0xpbmVOdW1iZXJzLCBzaG93TGluZU5hbWVzLCBzaG93QXJlYU5hbWVzLCBz
aG93RXh0ZW5kZWRHcmlkTGluZXN9ID0gdGhpcy5fb3ZlcmxheU9wdGlvbnM7CisgICAgICAgIGxl
dCBzaG93TGluZU5hbWVzID0gV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93TGluZU5hbWVzLnZh
bHVlOworICAgICAgICBsZXQgc2hvd0xpbmVOdW1iZXJzID0gV0kuc2V0dGluZ3MuZ3JpZE92ZXJs
YXlTaG93TGluZU51bWJlcnMudmFsdWU7CisgICAgICAgIGxldCBzaG93RXh0ZW5kZWRHcmlkTGlu
ZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dFeHRlbmRlZEdyaWRMaW5lcy52YWx1ZTsK
KyAgICAgICAgbGV0IHNob3dUcmFja1NpemVzID0gV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93
VHJhY2tTaXplcy52YWx1ZTsKKyAgICAgICAgbGV0IHNob3dBcmVhTmFtZXMgPSBXSS5zZXR0aW5n
cy5ncmlkT3ZlcmxheVNob3dBcmVhTmFtZXMudmFsdWU7CiAKICAgICAgICAgLy8gRW5jb2RlIHRo
ZSBjb25maWd1cmF0aW9uIG9mIG92ZXJsYXkgb3B0aW9ucyBhcyBhIHN1bSBvZiBpbmNyZWFzaW5n
IHBvd2VycyBvZiAxMCBmb3IgZWFjaCBvdmVybGF5IG9wdGlvbiB0aGF0IGlzIGVuYWJsZWQgKHpl
cm8gaWYgZGlzYWJsZWQpLCBjb252ZXJ0IHRvIHN0cmluZyBhbmQgcGFkIHdpdGggemVybyBpZiBu
ZWNlc3NhcnkuCiAgICAgICAgIC8vIEZvciBleGFtcGxlLCAiMDExMDAiID0gc2hvd1RyYWNrU2l6
ZXM6IGZhbHNlLCBzaG93TGluZU51bWJlcnM6IHRydWUsIHNob3dMaW5lTmFtZXM6IHRydWUsIHNo
b3dBcmVhTmFtZXM6IGZhbHNlLCBzaG93RXh0ZW5kZWRHcmlkTGluZXM6IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3Jp
ZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0dyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVj
b3JkZXIuanMKaW5kZXggZmZmOTU5NDViODA1MjQ4YTg1NDY4ODhlMGU3M2Q0ZGQ4ZmMwZDllMC4u
MWVhNmQ0MTUzYTI0OTM2NzhhYzBlOWU5YmFhZWJjNzg3YTY0MzJiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlE
aWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVy
LmpzCkBAIC0yOCwzOCArMjgsMzggQEAgV0kuR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNv
cmRlciA9IGNsYXNzIEdyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIKICAgICBjb25z
dHJ1Y3Rvcihjb250cm9sbGVyKQogICAgIHsKICAgICAgICAgc3VwZXIoIkdyaWRPdmVybGF5Iiwg
Y29udHJvbGxlcik7Ci0KLSAgICAgICAgdGhpcy5faW5pdGlhdG9ycyA9IE9iamVjdC52YWx1ZXMo
V0kuR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5Jbml0aWF0b3IpOwogICAgIH0K
IAogICAgIC8vIFByb3RlY3RlZAogCiAgICAgc2V0dXAoKQogICAgIHsKLSAgICAgICAgV0kub3Zl
cmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVy
bGF5U2hvd24sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U2hvd24sIHRoaXMpOworICAgICAgICBX
SS5ET01Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRPdmVybGF5
U2hvd24sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U2hvd24sIHRoaXMpOwogICAgIH0KIAogICAg
IHRlYXJkb3duKCkKICAgICB7Ci0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheVNob3duLCB0aGlzLl9oYW5k
bGVHcmlkT3ZlcmxheVNob3duLCB0aGlzKTsKKyAgICAgICAgV0kuRE9NTm9kZS5yZW1vdmVFdmVu
dExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0T3ZlcmxheVNob3duLCB0aGlzLl9oYW5k
bGVHcmlkT3ZlcmxheVNob3duLCB0aGlzKTsKICAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKICAg
ICBfaGFuZGxlR3JpZE92ZXJsYXlTaG93bihldmVudCkKICAgICB7Ci0gICAgICAgIGlmIChldmVu
dC5kYXRhLmRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUgIT09IFdJLkRPTU5vZGUuTGF5b3V0Q29u
dGV4dFR5cGUuR3JpZCkKKyAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5sYXlvdXRDb250ZXh0VHlw
ZSAhPT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGxldCBpbml0aWF0b3IgPSBldmVudC5kYXRhLmluaXRpYXRvcjsKLSAg
ICAgICAgaWYgKCFpbml0aWF0b3IgfHwgIXRoaXMuX2luaXRpYXRvcnMuaW5jbHVkZXMoaW5pdGlh
dG9yKSkKKyAgICAgICAgbGV0IHtpbml0aWF0b3J9ID0gZXZlbnQuZGF0YTsKKyAgICAgICAgaWYg
KCFpbml0aWF0b3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbGV0IHNob3dUcmFj
a1NpemVzID0gZXZlbnQuZGF0YS5zaG93VHJhY2tTaXplcyA/IDEgOiAwOwotICAgICAgICBsZXQg
c2hvd0xpbmVOdW1iZXJzID0gZXZlbnQuZGF0YS5zaG93TGluZU51bWJlcnMgPyAxIDogMDsKLSAg
ICAgICAgbGV0IHNob3dMaW5lTmFtZXMgPSBldmVudC5kYXRhLnNob3dMaW5lTmFtZXMgPyAxIDog
MDsKLSAgICAgICAgbGV0IHNob3dBcmVhTmFtZXMgPSBldmVudC5kYXRhLnNob3dBcmVhTmFtZXMg
PyAxIDogMDsKLSAgICAgICAgbGV0IHNob3dFeHRlbmRlZEdyaWRMaW5lcyA9IGV2ZW50LmRhdGEu
c2hvd0V4dGVuZGVkR3JpZExpbmVzID8gMSA6IDA7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KE9i
amVjdC52YWx1ZXMoV0kuR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5Jbml0aWF0
b3IpLmluY2x1ZGVzKGluaXRpYXRvciksIGluaXRpYXRvcik7CisKKyAgICAgICAgbGV0IHNob3dU
cmFja1NpemVzID0gV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93VHJhY2tTaXplcy52YWx1ZSA/
IDEgOiAwOworICAgICAgICBsZXQgc2hvd0xpbmVOdW1iZXJzID0gV0kuc2V0dGluZ3MuZ3JpZE92
ZXJsYXlTaG93TGluZU51bWJlcnMudmFsdWUgPyAxIDogMDsKKyAgICAgICAgbGV0IHNob3dMaW5l
TmFtZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dMaW5lTmFtZXMudmFsdWUgPyAxIDog
MDsKKyAgICAgICAgbGV0IHNob3dBcmVhTmFtZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNo
b3dBcmVhTmFtZXMudmFsdWUgPyAxIDogMDsKKyAgICAgICAgbGV0IHNob3dFeHRlbmRlZEdyaWRM
aW5lcyA9IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0V4dGVuZGVkR3JpZExpbmVzLnZhbHVl
ID8gMSA6IDA7CiAKICAgICAgICAgdGhpcy5sb2dEaWFnbm9zdGljRXZlbnQodGhpcy5uYW1lLCB7
aW5pdGlhdG9yLCBzaG93VHJhY2tTaXplcywgc2hvd0xpbmVOdW1iZXJzLCBzaG93TGluZU5hbWVz
LCBzaG93QXJlYU5hbWVzLCBzaG93RXh0ZW5kZWRHcmlkTGluZXN9KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9PdmVy
bGF5TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL092ZXJsYXlNYW5hZ2VyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
NzhlMWZhNzFiMGRhMTRiMDk3YjcwZGE2M2E1MTEyNDY5ODI5MjVlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL092ZXJsYXlNYW5hZ2VyLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsMjM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XSS5PdmVybGF5TWFuYWdlciA9IGNsYXNzIE92
ZXJsYXlNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0Ci17Ci0gICAgY29uc3RydWN0b3IoKQotICAg
IHsKLSAgICAgICAgc3VwZXIoKTsKLQotICAgICAgICB0aGlzLl9vdmVybGF5Rm9yTm9kZU1hcCA9
IG5ldyBNYXA7Ci0gICAgICAgIHRoaXMuX25leHREZWZhdWx0R3JpZENvbG9ySW5kZXggPSAwOwot
ICAgICAgICB0aGlzLl9uZXh0RGVmYXVsdEZsZXhDb2xvckluZGV4ID0gMDsKLSAgICAgICAgdGhp
cy5fY29sb3JGb3JOb2RlTWFwID0gbmV3IFdlYWtNYXA7Ci0gICAgICAgIHRoaXMuX2NvbG9yU2V0
dGluZ0Zvck5vZGVNYXAgPSBuZXcgV2Vha01hcDsKLQotICAgICAgICBXSS5zZXR0aW5ncy5ncmlk
T3ZlcmxheVNob3dFeHRlbmRlZEdyaWRMaW5lcy5hZGRFdmVudExpc3RlbmVyKFdJLlNldHRpbmcu
RXZlbnQuQ2hhbmdlZCwgdGhpcy5faGFuZGxlR3JpZFNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKLSAg
ICAgICAgV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93TGluZU5hbWVzLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9oYW5kbGVHcmlkU2V0dGluZ0NoYW5n
ZWQsIHRoaXMpOwotICAgICAgICBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dMaW5lTnVtYmVy
cy5hZGRFdmVudExpc3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5faGFuZGxl
R3JpZFNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKLSAgICAgICAgV0kuc2V0dGluZ3MuZ3JpZE92ZXJs
YXlTaG93VHJhY2tTaXplcy5hZGRFdmVudExpc3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdl
ZCwgdGhpcy5faGFuZGxlR3JpZFNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKLSAgICAgICAgV0kuc2V0
dGluZ3MuZ3JpZE92ZXJsYXlTaG93QXJlYU5hbWVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGlu
Zy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9oYW5kbGVHcmlkU2V0dGluZ0NoYW5nZWQsIHRoaXMpOwot
ICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNv
dXJjZURpZENoYW5nZSwgdGhpcy5faGFuZGxlTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsK
LSAgICB9Ci0KLSAgICAvLyBQdWJsaWMKLQotICAgIHNob3dPdmVybGF5KGRvbU5vZGUsIHtjb2xv
ciwgaW5pdGlhdG9yfSA9IHt9KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWRvbU5v
ZGUuZGVzdHJveWVkLCBkb21Ob2RlKTsKLSAgICAgICAgaWYgKGRvbU5vZGUuZGVzdHJveWVkKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUgaW5z
dGFuY2VvZiBXSS5ET01Ob2RlLCBkb21Ob2RlKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWNv
bG9yIHx8IGNvbG9yIGluc3RhbmNlb2YgV0kuQ29sb3IsIGNvbG9yKTsKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQoT2JqZWN0LnZhbHVlcyhXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlKS5pbmNs
dWRlcyhkb21Ob2RlLmxheW91dENvbnRleHRUeXBlKSwgZG9tTm9kZSk7Ci0KLSAgICAgICAgY29s
b3IgfHw9IHRoaXMuZ2V0Q29sb3JGb3JOb2RlKGRvbU5vZGUpOwotICAgICAgICBsZXQgdGFyZ2V0
ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7Ci0gICAgICAgIGxldCBjb21tYW5kQXJndW1lbnRz
ID0ge25vZGVJZDogZG9tTm9kZS5pZH07Ci0KLSAgICAgICAgc3dpdGNoIChkb21Ob2RlLmxheW91
dENvbnRleHRUeXBlKSB7Ci0gICAgICAgIGNhc2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlw
ZS5HcmlkOgotICAgICAgICAgICAgY29tbWFuZEFyZ3VtZW50cy5ncmlkQ29sb3IgPSBjb2xvci50
b1Byb3RvY29sKCk7Ci0gICAgICAgICAgICBjb21tYW5kQXJndW1lbnRzLnNob3dMaW5lTmFtZXMg
PSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dMaW5lTmFtZXMudmFsdWU7Ci0gICAgICAgICAg
ICBjb21tYW5kQXJndW1lbnRzLnNob3dMaW5lTnVtYmVycyA9IFdJLnNldHRpbmdzLmdyaWRPdmVy
bGF5U2hvd0xpbmVOdW1iZXJzLnZhbHVlOwotICAgICAgICAgICAgY29tbWFuZEFyZ3VtZW50cy5z
aG93RXh0ZW5kZWRHcmlkTGluZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dFeHRlbmRl
ZEdyaWRMaW5lcy52YWx1ZTsKLSAgICAgICAgICAgIGNvbW1hbmRBcmd1bWVudHMuc2hvd1RyYWNr
U2l6ZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dUcmFja1NpemVzLnZhbHVlOwotICAg
ICAgICAgICAgY29tbWFuZEFyZ3VtZW50cy5zaG93QXJlYU5hbWVzID0gV0kuc2V0dGluZ3MuZ3Jp
ZE92ZXJsYXlTaG93QXJlYU5hbWVzLnZhbHVlOwotICAgICAgICAgICAgdGFyZ2V0LkRPTUFnZW50
LnNob3dHcmlkT3ZlcmxheS5pbnZva2UoY29tbWFuZEFyZ3VtZW50cyk7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlIFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuRmxleDoK
LSAgICAgICAgICAgIGNvbW1hbmRBcmd1bWVudHMuZmxleENvbG9yID0gY29sb3IudG9Qcm90b2Nv
bCgpOwotICAgICAgICAgICAgdGFyZ2V0LkRPTUFnZW50LnNob3dGbGV4T3ZlcmxheS5pbnZva2Uo
Y29tbWFuZEFyZ3VtZW50cyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAg
ICAgIGxldCBvdmVybGF5ID0ge2RvbU5vZGUsIC4uLmNvbW1hbmRBcmd1bWVudHMsIGluaXRpYXRv
cn07Ci0KLSAgICAgICAgLy8gVGhlIG1ldGhvZCB0byBzaG93IHRoZSBvdmVybGF5IHdpbGwgYmUg
Y2FsbGVkIHJlcGVhdGVkbHkgd2hpbGUgdXBkYXRpbmcgdGhlIGdyaWQgb3ZlcmxheSBjb2xvci4g
QXZvaWQgYWRkaW5nIGR1cGxpY2F0ZSBldmVudCBsaXN0ZW5lcnMKLSAgICAgICAgaWYgKCF0aGlz
Ll9vdmVybGF5Rm9yTm9kZU1hcC5oYXMoZG9tTm9kZSkpCi0gICAgICAgICAgICBkb21Ob2RlLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQs
IHRoaXMuX2hhbmRsZUxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcyk7Ci0KLSAgICAgICAg
dGhpcy5fb3ZlcmxheUZvck5vZGVNYXAuc2V0KGRvbU5vZGUsIG92ZXJsYXkpOwotCi0gICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92
ZXJsYXlTaG93biwgb3ZlcmxheSk7Ci0gICAgfQotCi0gICAgaGlkZU92ZXJsYXkoZG9tTm9kZSkK
LSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGUgaW5zdGFuY2VvZiBXSS5ET01O
b2RlLCBkb21Ob2RlKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWRvbU5vZGUuZGVzdHJveWVk
LCBkb21Ob2RlKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoT2JqZWN0LnZhbHVlcyhXSS5ET01O
b2RlLkxheW91dENvbnRleHRUeXBlKS5pbmNsdWRlcyhkb21Ob2RlLmxheW91dENvbnRleHRUeXBl
KSwgZG9tTm9kZSk7Ci0gICAgICAgIGlmIChkb21Ob2RlLmRlc3Ryb3llZCkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBsZXQgb3ZlcmxheSA9IHRoaXMuX292ZXJsYXlGb3JOb2RlTWFw
LnRha2UoZG9tTm9kZSk7Ci0gICAgICAgIGlmICghb3ZlcmxheSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7Ci0KLSAg
ICAgICAgc3dpdGNoIChkb21Ob2RlLmxheW91dENvbnRleHRUeXBlKSB7Ci0gICAgICAgIGNhc2Ug
V0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkOgotICAgICAgICAgICAgdGFyZ2V0LkRP
TUFnZW50LmhpZGVHcmlkT3ZlcmxheShkb21Ob2RlLmlkKTsKLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIGNhc2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5GbGV4OgotICAgICAg
ICAgICAgdGFyZ2V0LkRPTUFnZW50LmhpZGVGbGV4T3ZlcmxheShkb21Ob2RlLmlkKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgZG9tTm9kZS5yZW1vdmVFdmVudExp
c3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzLl9o
YW5kbGVMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQsIHRoaXMpOwotICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5SGlkZGVu
LCBvdmVybGF5KTsKLSAgICB9Ci0KLSAgICBoYXNWaXNpYmxlR3JpZE92ZXJsYXlzKCkKLSAgICB7
Ci0gICAgICAgIGZvciAobGV0IGRvbU5vZGUgb2YgdGhpcy5fb3ZlcmxheUZvck5vZGVNYXAua2V5
cygpKSB7Ci0gICAgICAgICAgICBpZiAoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSA9PT0gV0ku
RE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKQotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBoYXNW
aXNpYmxlT3ZlcmxheShkb21Ob2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJs
YXlGb3JOb2RlTWFwLmhhcyhkb21Ob2RlKTsKLSAgICB9Ci0KLSAgICB0b2dnbGVPdmVybGF5KGRv
bU5vZGUsIG9wdGlvbnMpCi0gICAgewotICAgICAgICBpZiAodGhpcy5oYXNWaXNpYmxlT3Zlcmxh
eShkb21Ob2RlKSkKLSAgICAgICAgICAgIHRoaXMuaGlkZU92ZXJsYXkoZG9tTm9kZSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoZG9tTm9kZSwgb3B0aW9ucyk7
Ci0gICAgfQotCi0gICAgZ2V0Q29sb3JGb3JOb2RlKGRvbU5vZGUpCi0gICAgewotICAgICAgICBs
ZXQgY29sb3IgPSB0aGlzLl9jb2xvckZvck5vZGVNYXAuZ2V0KGRvbU5vZGUpOwotICAgICAgICBp
ZiAoY29sb3IpCi0gICAgICAgICAgICByZXR1cm4gY29sb3I7Ci0KLSAgICAgICAgbGV0IGNvbG9y
U2V0dGluZyA9IHRoaXMuX2NvbG9yU2V0dGluZ0Zvck5vZGVNYXAuZ2V0KGRvbU5vZGUpOwotICAg
ICAgICBpZiAoIWNvbG9yU2V0dGluZykgewotICAgICAgICAgICAgbGV0IG5leHRDb2xvckluZGV4
OwotICAgICAgICAgICAgc3dpdGNoIChkb21Ob2RlLmxheW91dENvbnRleHRUeXBlKSB7Ci0gICAg
ICAgICAgICBjYXNlIFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZDoKLSAgICAgICAg
ICAgICAgICBuZXh0Q29sb3JJbmRleCA9IHRoaXMuX25leHREZWZhdWx0R3JpZENvbG9ySW5kZXg7
Ci0gICAgICAgICAgICAgICAgdGhpcy5fbmV4dERlZmF1bHRHcmlkQ29sb3JJbmRleCA9IChuZXh0
Q29sb3JJbmRleCArIDEpICUgV0kuT3ZlcmxheU1hbmFnZXIuX2RlZmF1bHRIU0xDb2xvcnMubGVu
Z3RoOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlIFdJLkRPTU5v
ZGUuTGF5b3V0Q29udGV4dFR5cGUuRmxleDoKLSAgICAgICAgICAgICAgICBuZXh0Q29sb3JJbmRl
eCA9IHRoaXMuX25leHREZWZhdWx0RmxleENvbG9ySW5kZXg7Ci0gICAgICAgICAgICAgICAgdGhp
cy5fbmV4dERlZmF1bHRGbGV4Q29sb3JJbmRleCA9IChuZXh0Q29sb3JJbmRleCArIDEpICUgV0ku
T3ZlcmxheU1hbmFnZXIuX2RlZmF1bHRIU0xDb2xvcnMubGVuZ3RoOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGV0IGRlZmF1bHRDb2xvciA9IFdJ
Lk92ZXJsYXlNYW5hZ2VyLl9kZWZhdWx0SFNMQ29sb3JzW25leHRDb2xvckluZGV4XTsKLQotICAg
ICAgICAgICAgbGV0IHVybCA9IGRvbU5vZGUub3duZXJEb2N1bWVudC5kb2N1bWVudFVSTCB8fCBX
SS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUudXJsOwotICAgICAgICAgICAgY29sb3JTZXR0aW5n
ID0gbmV3IFdJLlNldHRpbmcoYG92ZXJsYXktY29sb3ItJHt1cmwuaGFzaH0tJHtkb21Ob2RlLnBh
dGgoKS5oYXNofWAsIGRlZmF1bHRDb2xvcik7Ci0gICAgICAgICAgICB0aGlzLl9jb2xvclNldHRp
bmdGb3JOb2RlTWFwLnNldChkb21Ob2RlLCBjb2xvclNldHRpbmcpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgY29sb3IgPSBuZXcgV0kuQ29sb3IoV0kuQ29sb3IuRm9ybWF0LkhTTCwgY29sb3JTZXR0
aW5nLnZhbHVlKTsKLSAgICAgICAgdGhpcy5fY29sb3JGb3JOb2RlTWFwLnNldChkb21Ob2RlLCBj
b2xvcik7Ci0KLSAgICAgICAgcmV0dXJuIGNvbG9yOwotICAgIH0KLQotICAgIHNldENvbG9yRm9y
Tm9kZShkb21Ob2RlLCBjb2xvcikKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5v
ZGUgaW5zdGFuY2VvZiBXSS5ET01Ob2RlLCBkb21Ob2RlKTsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoY29sb3IgaW5zdGFuY2VvZiBXSS5Db2xvciwgY29sb3IpOwotCi0gICAgICAgIGxldCBjb2xv
clNldHRpbmcgPSB0aGlzLl9jb2xvclNldHRpbmdGb3JOb2RlTWFwLmdldChkb21Ob2RlKTsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQoY29sb3JTZXR0aW5nLCAiVGhlcmUgc2hvdWxkIGFscmVhZHkg
YmUgYSBzZXR0aW5nIGNyZWF0ZWQgZm9ybSBhIHByZXZpb3VzIGNhbGwgdG8gZ2V0Q29sb3JGb3JO
b2RlKCkiKTsKLSAgICAgICAgY29sb3JTZXR0aW5nLnZhbHVlID0gY29sb3IuaHNsOwotCi0gICAg
ICAgIHRoaXMuX2NvbG9yRm9yTm9kZU1hcC5zZXQoZG9tTm9kZSwgY29sb3IpOwotICAgIH0KLQot
ICAgIC8vIFByaXZhdGUKLQotICAgIF9oYW5kbGVMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQoZXZl
bnQpCi0gICAgewotICAgICAgICBsZXQgZG9tTm9kZSA9IGV2ZW50LnRhcmdldDsKLQotICAgICAg
ICBkb21Ob2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRDb250
ZXh0VHlwZUNoYW5nZWQsIHRoaXMuX2hhbmRsZUxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhp
cyk7Ci0KLSAgICAgICAgLy8gV2hlbiB0aGUgY29udGV4dCB0eXBlIGNoYW5nZXMsIHRoZSBvdmVy
bGF5IGlzIGF1dG9tYXRpY2FsbHkgaGlkZGVuIG9uIHRoZSBiYWNrZW5kIChldmVuIGlmIGl0IGNo
YW5nZXMgZnJvbSBHcmlkIHRvIEZsZXgsIG9yIHZpY2UtdmVyc2EpLgotICAgICAgICAvLyBIZXJl
LCB3ZSBvbmx5IHVwZGF0ZSB0aGUgbWFwIGFuZCBub3RpZnkgbGlzdGVuZXJzLgotICAgICAgICBs
ZXQgb3ZlcmxheSA9IHRoaXMuX292ZXJsYXlGb3JOb2RlTWFwLnRha2UoZG9tTm9kZSk7Ci0gICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50
Lk92ZXJsYXlIaWRkZW4sIG92ZXJsYXkpOwotICAgIH0KLQotICAgIF9oYW5kbGVHcmlkU2V0dGlu
Z0NoYW5nZWQoZXZlbnQpCi0gICAgewotICAgICAgICBmb3IgKGxldCBbZG9tTm9kZSwgb3Zlcmxh
eV0gb2YgdGhpcy5fb3ZlcmxheUZvck5vZGVNYXApIHsKLSAgICAgICAgICAgIGlmIChkb21Ob2Rl
LmxheW91dENvbnRleHRUeXBlID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQp
Ci0gICAgICAgICAgICAgICAgdGhpcy5zaG93T3ZlcmxheShkb21Ob2RlLCB7Y29sb3I6IG92ZXJs
YXkuY29sb3IsIGluaXRpYXRvcjogb3ZlcmxheS5pbml0aWF0b3J9KTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIF9oYW5kbGVNYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCi0gICAgewotICAg
ICAgICAvLyBDb25zaWRlciB0aGUgZm9sbG93aW5nIHNjZW5hcmlvOgotICAgICAgICAvLyAxLiBD
bGljayBvbiB0aGUgYmFkZ2Ugb2YgYW4gZWxlbWVudCB3aXRoIGBkaXNwbGF5OiBncmlkYC4gVGhl
IDFzdCBvdmVybGF5IGNvbG9yIGlzIHVzZWQuCi0gICAgICAgIC8vIDIuIFJlbG9hZCB0aGUgd2Vi
cGFnZS4KLSAgICAgICAgLy8gMy4gQ2xpY2sgb24gdGhlIGJhZGdlIG9mIHRoZSBzYW1lIGVsZW1l
bnQuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFdlIHNob3VsZCBzZWUgdGhlIHNhbWUgMXN0IGRl
ZmF1bHQgb3ZlcmxheSBjb2xvci4gSWYgd2UgZG9uJ3QgcmVzZXQgX25leHREZWZhdWx0R3JpZENv
bG9ySW5kZXgsCi0gICAgICAgIC8vIHRoZSAybmQgZGVmYXVsdCBjb2xvciB3b3VsZCBiZSB1c2Vk
IGluc3RlYWQuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIGBkb21Ob2RlLmlkYCBpcyBkaWZmZXJl
bnQgZm9yIHRoZSBzYW1lIERPTSBlbGVtZW50IGFmdGVyIHBhZ2UgcmVsb2FkLgotICAgICAgICB0
aGlzLl9uZXh0RGVmYXVsdEdyaWRDb2xvckluZGV4ID0gMDsKLSAgICAgICAgdGhpcy5fbmV4dERl
ZmF1bHRGbGV4Q29sb3JJbmRleCA9IDA7Ci0gICAgfQotfTsKLQotV0kuT3ZlcmxheU1hbmFnZXIu
X2RlZmF1bHRIU0xDb2xvcnMgPSBbCi0gICAgWzMyOSwgOTEsIDcwXSwKLSAgICBbMjA3LCA5Niwg
NjldLAotICAgIFs5MiwgOTAsIDY0XSwKLSAgICBbMjkxLCA3MywgNjhdLAotICAgIFs0MCwgOTcs
IDU3XSwKLV07Ci0KLVdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50ID0gewotICAgIE92ZXJsYXlTaG93
bjogIm92ZXJsYXktbWFuYWdlci1vdmVybGF5LXNob3duIiwKLSAgICBPdmVybGF5SGlkZGVuOiAi
b3ZlcmxheS1tYW5hZ2VyLW92ZXJsYXktaGlkZGVuIiwKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggODJhYzY5MzkwOTk5ZTQ0N2VkZmY5
OTRlNWUxNTIzMjM4NjFhN2NiMS4uNjE2YjdhMjNmODVjODE3ZGY5OTcyZmQ4YWE0Nzk2ZTVlMzcx
ZWFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFp
bi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRt
bApAQCAtOTMxLDcgKzkzMSw2IEBACiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0xheWVy
VHJlZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9N
ZW1vcnlNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMv
TmV0d29ya01hbmFnZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVy
cy9PdmVybGF5TWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL0NTU1F1ZXJ5Q29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5q
cwppbmRleCAxOWZiMDIyYzA2ZTdiY2ZlMmM2ZWM5MzRlYzA4NzJkNDlhNzE4ZDFhLi5lYjk3NGI4
NmIzYmVjMTRhZjNkZmY0MmU2NjUxNGU4NWNiYTBmMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcwpAQCAtNTMsNiAr
NTMsOCBAQCBXSS5ET01Ob2RlID0gY2xhc3MgRE9NTm9kZSBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICB0aGlzLl9jb21wdXRlZFJvbGUgPSBudWxsOwogICAgICAgICB0aGlzLl9jb250ZW50U2Vj
dXJpdHlQb2xpY3lIYXNoID0gcGF5bG9hZC5jb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoOwogICAg
ICAgICB0aGlzLl9sYXlvdXRDb250ZXh0VHlwZSA9IG51bGw7CisgICAgICAgIHRoaXMuX2xheW91
dE92ZXJsYXlTaG93aW5nID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2xheW91dE92ZXJsYXlDb2xv
clNldHRpbmcgPSBudWxsOwogCiAgICAgICAgIGlmICh0aGlzLl9ub2RlVHlwZSA9PT0gTm9kZS5E
T0NVTUVOVF9OT0RFKQogICAgICAgICAgICAgdGhpcy5vd25lckRvY3VtZW50ID0gdGhpczsKQEAg
LTE2MSw2ICsxNjMsMTMgQEAgV0kuRE9NTm9kZSA9IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXSS5P
YmplY3QKIAogICAgIC8vIFN0YXRpYwogCisgICAgc3RhdGljIHJlc2V0RGVmYXVsdExheW91dE92
ZXJsYXlDb25maWd1cmF0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBjb25maWd1cmF0aW9uID0g
V0kuRE9NTm9kZS5fZGVmYXVsdExheW91dE92ZXJsYXlDb25maWd1cmF0aW9uOworICAgICAgICBj
b25maWd1cmF0aW9uLm5leHRGbGV4Q29sb3JJbmRleCA9IDA7CisgICAgICAgIGNvbmZpZ3VyYXRp
b24ubmV4dEdyaWRDb2xvckluZGV4ID0gMDsKKyAgICB9CisKICAgICBzdGF0aWMgZ2V0RnVsbHNj
cmVlbkRPTUV2ZW50cyhkb21FdmVudHMpCiAgICAgewogICAgICAgICByZXR1cm4gZG9tRXZlbnRz
LnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IHsKQEAgLTE5OSw2ICsyMDgsNyBAQCBX
SS5ET01Ob2RlID0gY2xhc3MgRE9NTm9kZSBleHRlbmRzIFdJLk9iamVjdAogICAgIGdldCBjaGls
ZHJlbigpIHsgcmV0dXJuIHRoaXMuX2NoaWxkcmVuOyB9CiAgICAgZ2V0IGRvbUV2ZW50cygpIHsg
cmV0dXJuIHRoaXMuX2RvbUV2ZW50czsgfQogICAgIGdldCBwb3dlckVmZmljaWVudFBsYXliYWNr
UmFuZ2VzKCkgeyByZXR1cm4gdGhpcy5fcG93ZXJFZmZpY2llbnRQbGF5YmFja1JhbmdlczsgfQor
ICAgIGdldCBsYXlvdXRPdmVybGF5U2hvd2luZygpIHsgcmV0dXJuIHRoaXMuX2xheW91dE92ZXJs
YXlTaG93aW5nOyB9CiAKICAgICBnZXQgYXR0YWNoZWQoKQogICAgIHsKQEAgLTI1Nyw4ICsyNjcs
MjYgQEAgV0kuRE9NTm9kZSA9IGNsYXNzIERPTU5vZGUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgaWYgKGxheW91dENvbnRleHRUeXBlID09PSB0aGlzLl9sYXlvdXRDb250ZXh0VHlwZSkKICAg
ICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBsZXQgb2xkTGF5b3V0Q29udGV4dFR5cGUgPSB0
aGlzLl9sYXlvdXRDb250ZXh0VHlwZTsKICAgICAgICAgdGhpcy5fbGF5b3V0Q29udGV4dFR5cGUg
PSBsYXlvdXRDb250ZXh0VHlwZTsKKwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5ET01Ob2RlLkV2ZW50LkxheW91dENvbnRleHRUeXBlQ2hhbmdlZCk7CisKKyAgICAg
ICAgaWYgKCF0aGlzLl9sYXlvdXRPdmVybGF5U2hvd2luZykKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAvLyBUaGUgb3ZlcmxheSBpcyBhdXRvbWF0aWNhbGx5IGhpZGRlbiBvbiB0aGUg
YmFja2VuZCB3aGVuIHRoZSBjb250ZXh0IHR5cGUgY2hhbmdlcy4KKyAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRPdmVybGF5SGlkZGVu
KTsKKworICAgICAgICBzd2l0Y2ggKG9sZExheW91dENvbnRleHRUeXBlKSB7CisgICAgICAgIGNh
c2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkOgorICAgICAgICAgICAgV0kuc2V0
dGluZ3MuZ3JpZE92ZXJsYXlTaG93RXh0ZW5kZWRHcmlkTGluZXMucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX2hhbmRsZUdyaWRMYXlvdXRPdmVybGF5
U2V0dGluZ0NoYW5nZWQsIHRoaXMpOworICAgICAgICAgICAgV0kuc2V0dGluZ3MuZ3JpZE92ZXJs
YXlTaG93TGluZU5hbWVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFu
Z2VkLCB0aGlzLl9oYW5kbGVHcmlkTGF5b3V0T3ZlcmxheVNldHRpbmdDaGFuZ2VkLCB0aGlzKTsK
KyAgICAgICAgICAgIFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0xpbmVOdW1iZXJzLnJlbW92
ZUV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9oYW5kbGVHcmlk
TGF5b3V0T3ZlcmxheVNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLnNldHRp
bmdzLmdyaWRPdmVybGF5U2hvd1RyYWNrU2l6ZXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5TZXR0
aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX2hhbmRsZUdyaWRMYXlvdXRPdmVybGF5U2V0dGluZ0No
YW5nZWQsIHRoaXMpOworICAgICAgICAgICAgV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93QXJl
YU5hbWVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlz
Ll9oYW5kbGVHcmlkTGF5b3V0T3ZlcmxheVNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogCiAgICAgbWFya0Rlc3Ryb3llZCgpCkBAIC01
NzQsNiArNjAyLDEwNSBAQCBXSS5ET01Ob2RlID0gY2xhc3MgRE9NTm9kZSBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICB0YXJnZXQuRE9NQWdlbnQuaGlnaGxpZ2h0Tm9kZShXSS5ET01NYW5hZ2Vy
LmJ1aWxkSGlnaGxpZ2h0Q29uZmlnKG1vZGUpLCB0aGlzLmlkKTsKICAgICB9CiAKKyAgICBzaG93
TGF5b3V0T3ZlcmxheSh7Y29sb3IsIGluaXRpYXRvcn0gPSB7fSkKKyAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCF0aGlzLl9kZXN0cm95ZWQsIHRoaXMpOworICAgICAgICBpZiAodGhpcy5f
ZGVzdHJveWVkKQorICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJFUlJPUjogbm9k
ZSBpcyBkZXN0cm95ZWQiKTsKKworICAgICAgICBjb25zb2xlLmFzc2VydChPYmplY3QudmFsdWVz
KFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUpLmluY2x1ZGVzKHRoaXMuX2xheW91dENvbnRl
eHRUeXBlKSwgdGhpcyk7CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbG9yIHx8IGNvbG9y
IGluc3RhbmNlb2YgV0kuQ29sb3IsIGNvbG9yKTsKKyAgICAgICAgY29sb3IgfHw9IHRoaXMubGF5
b3V0T3ZlcmxheUNvbG9yOworCisgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5U
YXJnZXQoKTsKKyAgICAgICAgbGV0IGFnZW50Q29tbWFuZEZ1bmN0aW9uID0gbnVsbDsKKyAgICAg
ICAgbGV0IGFnZW50Q29tbWFuZEFyZ3VtZW50cyA9IHtub2RlSWQ6IHRoaXMuaWR9OworCisgICAg
ICAgIHN3aXRjaCAodGhpcy5fbGF5b3V0Q29udGV4dFR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5E
T01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQ6CisgICAgICAgICAgICBhZ2VudENvbW1hbmRB
cmd1bWVudHMuZ3JpZENvbG9yID0gY29sb3IudG9Qcm90b2NvbCgpOworICAgICAgICAgICAgYWdl
bnRDb21tYW5kQXJndW1lbnRzLnNob3dMaW5lTmFtZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3Zlcmxh
eVNob3dMaW5lTmFtZXMudmFsdWU7CisgICAgICAgICAgICBhZ2VudENvbW1hbmRBcmd1bWVudHMu
c2hvd0xpbmVOdW1iZXJzID0gV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93TGluZU51bWJlcnMu
dmFsdWU7CisgICAgICAgICAgICBhZ2VudENvbW1hbmRBcmd1bWVudHMuc2hvd0V4dGVuZGVkR3Jp
ZExpbmVzID0gV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93RXh0ZW5kZWRHcmlkTGluZXMudmFs
dWU7CisgICAgICAgICAgICBhZ2VudENvbW1hbmRBcmd1bWVudHMuc2hvd1RyYWNrU2l6ZXMgPSBX
SS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dUcmFja1NpemVzLnZhbHVlOworICAgICAgICAgICAg
YWdlbnRDb21tYW5kQXJndW1lbnRzLnNob3dBcmVhTmFtZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3Zl
cmxheVNob3dBcmVhTmFtZXMudmFsdWU7CisgICAgICAgICAgICBhZ2VudENvbW1hbmRGdW5jdGlv
biA9IHRhcmdldC5ET01BZ2VudC5zaG93R3JpZE92ZXJsYXk7CisKKyAgICAgICAgICAgIGlmICgh
dGhpcy5fbGF5b3V0T3ZlcmxheVNob3dpbmcpIHsKKyAgICAgICAgICAgICAgICBXSS5zZXR0aW5n
cy5ncmlkT3ZlcmxheVNob3dFeHRlbmRlZEdyaWRMaW5lcy5hZGRFdmVudExpc3RlbmVyKFdJLlNl
dHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5faGFuZGxlR3JpZExheW91dE92ZXJsYXlTZXR0aW5n
Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgICAgICAgICAgV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlT
aG93TGluZU5hbWVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0
aGlzLl9oYW5kbGVHcmlkTGF5b3V0T3ZlcmxheVNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKyAgICAg
ICAgICAgICAgICBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dMaW5lTnVtYmVycy5hZGRFdmVu
dExpc3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5faGFuZGxlR3JpZExheW91
dE92ZXJsYXlTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgICAgICAgICAgV0kuc2V0dGlu
Z3MuZ3JpZE92ZXJsYXlTaG93VHJhY2tTaXplcy5hZGRFdmVudExpc3RlbmVyKFdJLlNldHRpbmcu
RXZlbnQuQ2hhbmdlZCwgdGhpcy5faGFuZGxlR3JpZExheW91dE92ZXJsYXlTZXR0aW5nQ2hhbmdl
ZCwgdGhpcyk7CisgICAgICAgICAgICAgICAgV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93QXJl
YU5hbWVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9o
YW5kbGVHcmlkTGF5b3V0T3ZlcmxheVNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuRE9NTm9kZS5MYXlvdXRD
b250ZXh0VHlwZS5GbGV4OgorICAgICAgICAgICAgYWdlbnRDb21tYW5kQXJndW1lbnRzLmZsZXhD
b2xvciA9IGNvbG9yLnRvUHJvdG9jb2woKTsKKyAgICAgICAgICAgIGFnZW50Q29tbWFuZEZ1bmN0
aW9uID0gdGFyZ2V0LkRPTUFnZW50LnNob3dGbGV4T3ZlcmxheTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fbGF5b3V0T3ZlcmxheVNob3dpbmcgPSB0cnVl
OworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU5vZGUuRXZl
bnQuTGF5b3V0T3ZlcmxheVNob3duLCB7aW5pdGlhdG9yfSk7CisKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoYWdlbnRDb21tYW5kRnVuY3Rpb24pOworICAgICAgICByZXR1cm4gYWdlbnRDb21tYW5k
RnVuY3Rpb24uaW52b2tlKGFnZW50Q29tbWFuZEFyZ3VtZW50cyk7CisgICAgfQorCisgICAgaGlk
ZUxheW91dE92ZXJsYXkoKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2Rl
c3Ryb3llZCwgdGhpcyk7CisgICAgICAgIGlmICh0aGlzLl9kZXN0cm95ZWQpCisgICAgICAgICAg
ICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIkVSUk9SOiBub2RlIGlzIGRlc3Ryb3llZCIpOworCisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KE9iamVjdC52YWx1ZXMoV0kuRE9NTm9kZS5MYXlvdXRDb250
ZXh0VHlwZSkuaW5jbHVkZXModGhpcy5fbGF5b3V0Q29udGV4dFR5cGUpLCB0aGlzKTsKKworICAg
ICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CisgICAgICAgIGxldCBh
Z2VudENvbW1hbmRGdW5jdGlvbjsKKyAgICAgICAgbGV0IGFnZW50Q29tbWFuZEFyZ3VtZW50cyA9
IHtub2RlSWQ6IHRoaXMuaWR9OworCisgICAgICAgIHN3aXRjaCAodGhpcy5fbGF5b3V0Q29udGV4
dFR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQ6
CisgICAgICAgICAgICBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dFeHRlbmRlZEdyaWRMaW5l
cy5yZW1vdmVFdmVudExpc3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5faGFu
ZGxlR3JpZExheW91dE92ZXJsYXlTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgICAgICBX
SS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dMaW5lTmFtZXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
SS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX2hhbmRsZUdyaWRMYXlvdXRPdmVybGF5U2V0
dGluZ0NoYW5nZWQsIHRoaXMpOworICAgICAgICAgICAgV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlT
aG93TGluZU51bWJlcnMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5n
ZWQsIHRoaXMuX2hhbmRsZUdyaWRMYXlvdXRPdmVybGF5U2V0dGluZ0NoYW5nZWQsIHRoaXMpOwor
ICAgICAgICAgICAgV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93VHJhY2tTaXplcy5yZW1vdmVF
dmVudExpc3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5faGFuZGxlR3JpZExh
eW91dE92ZXJsYXlTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgICAgICBXSS5zZXR0aW5n
cy5ncmlkT3ZlcmxheVNob3dBcmVhTmFtZXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5n
LkV2ZW50LkNoYW5nZWQsIHRoaXMuX2hhbmRsZUdyaWRMYXlvdXRPdmVybGF5U2V0dGluZ0NoYW5n
ZWQsIHRoaXMpOworCisgICAgICAgICAgICBhZ2VudENvbW1hbmRGdW5jdGlvbiA9IHRhcmdldC5E
T01BZ2VudC5oaWRlR3JpZE92ZXJsYXk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuRmxleDoKKyAgICAgICAgICAgIGFnZW50
Q29tbWFuZEZ1bmN0aW9uID0gdGFyZ2V0LkRPTUFnZW50LmhpZGVGbGV4T3ZlcmxheTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5f
bGF5b3V0T3ZlcmxheVNob3dpbmcsIHRoaXMpOworICAgICAgICB0aGlzLl9sYXlvdXRPdmVybGF5
U2hvd2luZyA9IGZhbHNlOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0T3ZlcmxheUhpZGRlbik7CisKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoYWdlbnRDb21tYW5kRnVuY3Rpb24pOworICAgICAgICByZXR1cm4gYWdlbnRDb21t
YW5kRnVuY3Rpb24uaW52b2tlKGFnZW50Q29tbWFuZEFyZ3VtZW50cyk7CisgICAgfQorCisgICAg
Z2V0IGxheW91dE92ZXJsYXlDb2xvcigpCisgICAgeworICAgICAgICB0aGlzLl9jcmVhdGVMYXlv
dXRPdmVybGF5Q29sb3JTZXR0aW5nSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXSS5D
b2xvcihXSS5Db2xvci5Gb3JtYXQuSFNMLCB0aGlzLl9sYXlvdXRPdmVybGF5Q29sb3JTZXR0aW5n
LnZhbHVlKTsKKyAgICB9CisKKyAgICBzZXQgbGF5b3V0T3ZlcmxheUNvbG9yKGNvbG9yKQorICAg
IHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY29sb3IgaW5zdGFuY2VvZiBXSS5Db2xvciwgY29s
b3IpOworCisgICAgICAgIHRoaXMuX2NyZWF0ZUxheW91dE92ZXJsYXlDb2xvclNldHRpbmdJZk5l
ZWRlZCgpOworICAgICAgICB0aGlzLl9sYXlvdXRPdmVybGF5Q29sb3JTZXR0aW5nLnZhbHVlID0g
Y29sb3IuaHNsOworICAgIH0KKwogICAgIHNjcm9sbEludG9WaWV3KCkKICAgICB7CiAgICAgICAg
IFdJLlJlbW90ZU9iamVjdC5yZXNvbHZlTm9kZSh0aGlzKS50aGVuKChvYmplY3QpID0+IHsKQEAg
LTExMDYsNiArMTIzMyw0OSBAQCBXSS5ET01Ob2RlID0gY2xhc3MgRE9NTm9kZSBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICAgICAgcmV0dXJuIGAke3NlbGVjdG9yfS4keyhzaG91bGRFc2NhcGUg
PyBDU1MuZXNjYXBlKGNsYXNzTmFtZSkgOiBjbGFzc05hbWUpfWA7CiAgICAgICAgIH0sICIiKTsK
ICAgICB9CisKKyAgICBfY3JlYXRlTGF5b3V0T3ZlcmxheUNvbG9yU2V0dGluZ0lmTmVlZGVkKCkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLl9sYXlvdXRPdmVybGF5Q29sb3JTZXR0aW5nKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBkZWZhdWx0Q29uZmlndXJhdGlvbiA9IFdJ
LkRPTU5vZGUuX2RlZmF1bHRMYXlvdXRPdmVybGF5Q29uZmlndXJhdGlvbjsKKworICAgICAgICBs
ZXQgdXJsID0gdGhpcy5vd25lckRvY3VtZW50LmRvY3VtZW50VVJMIHx8IFdJLm5ldHdvcmtNYW5h
Z2VyLm1haW5GcmFtZS51cmw7CisKKyAgICAgICAgbGV0IG5leHRDb2xvckluZGV4OworICAgICAg
ICBzd2l0Y2ggKHRoaXMuX2xheW91dENvbnRleHRUeXBlKSB7CisgICAgICAgIGNhc2UgV0kuRE9N
Tm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkOgorICAgICAgICAgICAgbmV4dENvbG9ySW5kZXgg
PSBkZWZhdWx0Q29uZmlndXJhdGlvbi5uZXh0R3JpZENvbG9ySW5kZXg7CisgICAgICAgICAgICBk
ZWZhdWx0Q29uZmlndXJhdGlvbi5uZXh0R3JpZENvbG9ySW5kZXggPSAobmV4dENvbG9ySW5kZXgg
KyAxKSAlIGRlZmF1bHRDb25maWd1cmF0aW9uLmNvbG9ycy5sZW5ndGg7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuRmxleDoK
KyAgICAgICAgICAgIG5leHRDb2xvckluZGV4ID0gZGVmYXVsdENvbmZpZ3VyYXRpb24ubmV4dEZs
ZXhDb2xvckluZGV4OworICAgICAgICAgICAgZGVmYXVsdENvbmZpZ3VyYXRpb24ubmV4dEZsZXhD
b2xvckluZGV4ID0gKG5leHRDb2xvckluZGV4ICsgMSkgJSBkZWZhdWx0Q29uZmlndXJhdGlvbi5j
b2xvcnMubGVuZ3RoOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLl9sYXlvdXRPdmVybGF5Q29sb3JTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoYG92ZXJsYXkt
Y29sb3ItJHt1cmwuaGFzaH0tJHt0aGlzLnBhdGgoKS5oYXNofWAsIGRlZmF1bHRDb25maWd1cmF0
aW9uLmNvbG9yc1tuZXh0Q29sb3JJbmRleF0pOworICAgIH0KKworICAgIF9oYW5kbGVHcmlkTGF5
b3V0T3ZlcmxheVNldHRpbmdDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
X2xheW91dE92ZXJsYXlTaG93aW5nKQorICAgICAgICAgICAgdGhpcy5zaG93TGF5b3V0T3Zlcmxh
eSgpOworICAgIH0KK307CisKK1dJLkRPTU5vZGUuX2RlZmF1bHRMYXlvdXRPdmVybGF5Q29uZmln
dXJhdGlvbiA9IHsKKyAgICBjb2xvcnM6IFsKKyAgICAgICAgWzMyOSwgOTEsIDcwXSwKKyAgICAg
ICAgWzIwNywgOTYsIDY5XSwKKyAgICAgICAgWzkyLCA5MCwgNjRdLAorICAgICAgICBbMjkxLCA3
MywgNjhdLAorICAgICAgICBbNDAsIDk3LCA1N10sCisgICAgXSwKKyAgICBuZXh0RmxleENvbG9y
SW5kZXg6IDAsCisgICAgbmV4dEdyaWRDb2xvckluZGV4OiAwLAogfTsKIAogV0kuRE9NTm9kZS5F
dmVudCA9IHsKQEAgLTExMTYsNiArMTI4Niw4IEBAIFdJLkRPTU5vZGUuRXZlbnQgPSB7CiAgICAg
RGlkRmlyZUV2ZW50OiAiZG9tLW5vZGUtZGlkLWZpcmUtZXZlbnQiLAogICAgIFBvd2VyRWZmaWNp
ZW50UGxheWJhY2tTdGF0ZUNoYW5nZWQ6ICJkb20tbm9kZS1wb3dlci1lZmZpY2llbnQtcGxheWJh
Y2stc3RhdGUtY2hhbmdlZCIsCiAgICAgTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkOiAiZG9tLW5v
ZGUtbGF5b3V0LWNvbnRleHQtdHlwZS1jaGFuZ2VkIiwKKyAgICBMYXlvdXRPdmVybGF5U2hvd246
ICJkb20tbm9kZS1sYXlvdXQtb3ZlcmxheS1zaG93biIsCisgICAgTGF5b3V0T3ZlcmxheUhpZGRl
bjogImRvbS1ub2RlLWxheW91dC1vdmVybGF5LWhpZGRlbiIsCiB9OwogCiBXSS5ET01Ob2RlLlBz
ZXVkb0VsZW1lbnRUeXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ1NTR3JpZFNlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NHcmlkU2VjdGlvbi5qcwppbmRleCA2NGM2ZThmODZm
MDdlMGQyODM0MWVhNzg3MTBmYzEzNDQ5MGQxMzg0Li43M2Q4MzM1YTNhNGJmZTE5ODNiYzQzN2Fm
NDE3MmExNTVkNWYwN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9DU1NHcmlkU2VjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NHcmlkU2VjdGlvbi5qcwpAQCAtNTMsMTQgKzUzLDE0
IEBAIFdJLkNTU0dyaWRTZWN0aW9uID0gY2xhc3MgQ1NTR3JpZFNlY3Rpb24gZXh0ZW5kcyBXSS5W
aWV3CiAgICAgewogICAgICAgICBzdXBlci5hdHRhY2hlZCgpOwogCi0gICAgICAgIFdJLm92ZXJs
YXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3Zlcmxh
eVNob3duLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVN0YXRlQ2hhbmdlZCwgdGhpcyk7Ci0gICAg
ICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIu
RXZlbnQuT3ZlcmxheUhpZGRlbiwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlTdGF0ZUNoYW5nZWQs
IHRoaXMpOworICAgICAgICBXSS5ET01Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5F
dmVudC5MYXlvdXRPdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U3RhdGVDaGFu
Z2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRE9NTm9kZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5v
ZGUuRXZlbnQuTGF5b3V0T3ZlcmxheUhpZGRlbiwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlTdGF0
ZUNoYW5nZWQsIHRoaXMpOwogICAgIH0KIAogICAgIGRldGFjaGVkKCkKICAgICB7Ci0gICAgICAg
IFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIu
RXZlbnQuT3ZlcmxheVNob3duLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVN0YXRlQ2hhbmdlZCwg
dGhpcyk7Ci0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0ku
T3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheUhpZGRlbiwgdGhpcy5faGFuZGxlR3JpZE92ZXJs
YXlTdGF0ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5ET01Ob2RlLnJlbW92ZUV2ZW50TGlz
dGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRPdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdy
aWRPdmVybGF5U3RhdGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRE9NTm9kZS5yZW1vdmVF
dmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0T3ZlcmxheUhpZGRlbiwgdGhpcy5f
aGFuZGxlR3JpZE92ZXJsYXlTdGF0ZUNoYW5nZWQsIHRoaXMpOwogCiAgICAgICAgIHN1cGVyLmRl
dGFjaGVkKCk7CiAgICAgfQpAQCAtOTksOSArOTksOSBAQCBXSS5DU1NHcmlkU2VjdGlvbiA9IGNs
YXNzIENTU0dyaWRTZWN0aW9uIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0aGlzLl9zdXBwcmVz
c1VwZGF0ZVRvZ2dsZUFsbENoZWNrYm94ID0gdHJ1ZTsKICAgICAgICAgZm9yIChsZXQgZG9tTm9k
ZSBvZiB0aGlzLl9ncmlkTm9kZVNldCkgewogICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZCkKLSAg
ICAgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5zaG93T3ZlcmxheShkb21Ob2RlLCB7aW5p
dGlhdG9yOiBXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLkluaXRpYXRvci5Q
YW5lbH0pOworICAgICAgICAgICAgICAgIGRvbU5vZGUuc2hvd0xheW91dE92ZXJsYXkoe2luaXRp
YXRvcjogV0kuR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5Jbml0aWF0b3IuUGFu
ZWx9KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdl
ci5oaWRlT3ZlcmxheShkb21Ob2RlKTsKKyAgICAgICAgICAgICAgICBkb21Ob2RlLmhpZGVMYXlv
dXRPdmVybGF5KCk7CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5fc3VwcHJlc3NVcGRhdGVUb2dn
bGVBbGxDaGVja2JveCA9IGZhbHNlOwogICAgIH0KQEAgLTEyMCw3ICsxMjAsNyBAQCBXSS5DU1NH
cmlkU2VjdGlvbiA9IGNsYXNzIENTU0dyaWRTZWN0aW9uIGV4dGVuZHMgV0kuVmlldwogICAgICAg
ICAgICAgbGV0IGxhYmVsRWxlbWVudCA9IGl0ZW1Db250YWluZXJFbGVtZW50LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIikpOwogICAgICAgICAgICAgbGV0IGNoZWNr
Ym94RWxlbWVudCA9IGxhYmVsRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIpKTsKICAgICAgICAgICAgIGNoZWNrYm94RWxlbWVudC50eXBlID0gImNoZWNr
Ym94IjsKLSAgICAgICAgICAgIGNoZWNrYm94RWxlbWVudC5jaGVja2VkID0gV0kub3ZlcmxheU1h
bmFnZXIuaGFzVmlzaWJsZU92ZXJsYXkoZG9tTm9kZSk7CisgICAgICAgICAgICBjaGVja2JveEVs
ZW1lbnQuY2hlY2tlZCA9IGRvbU5vZGUubGF5b3V0T3ZlcmxheVNob3dpbmc7CiAKICAgICAgICAg
ICAgIGNvbnN0IG5vZGVEaXNwbGF5TmFtZSA9IGxhYmVsRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIikpOwogICAgICAgICAgICAgbm9kZURpc3BsYXlOYW1l
LmNsYXNzTGlzdC5hZGQoIm5vZGUtZGlzcGxheS1uYW1lIik7CkBAIC0xMzAsMjkgKzEzMCwyNSBA
QCBXSS5DU1NHcmlkU2VjdGlvbiA9IGNsYXNzIENTU0dyaWRTZWN0aW9uIGV4dGVuZHMgV0kuVmll
dwogCiAgICAgICAgICAgICBjaGVja2JveEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdl
IiwgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgaWYgKGNoZWNrYm94RWxlbWVudC5jaGVj
a2VkKQotICAgICAgICAgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5zaG93T3ZlcmxheShk
b21Ob2RlLCB7Y29sb3I6IHN3YXRjaC52YWx1ZSwgaW5pdGlhdG9yOiBXSS5HcmlkT3ZlcmxheURp
YWdub3N0aWNFdmVudFJlY29yZGVyLkluaXRpYXRvci5QYW5lbH0pOworICAgICAgICAgICAgICAg
ICAgICBkb21Ob2RlLnNob3dMYXlvdXRPdmVybGF5KHtjb2xvcjogc3dhdGNoLnZhbHVlLCBpbml0
aWF0b3I6IFdJLkdyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuSW5pdGlhdG9yLlBh
bmVsfSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBXSS5vdmVy
bGF5TWFuYWdlci5oaWRlT3ZlcmxheShkb21Ob2RlKTsKKyAgICAgICAgICAgICAgICAgICAgZG9t
Tm9kZS5oaWRlTGF5b3V0T3ZlcmxheSgpOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAg
IGxldCBncmlkQ29sb3IgPSBXSS5vdmVybGF5TWFuYWdlci5nZXRDb2xvckZvck5vZGUoZG9tTm9k
ZSk7CisgICAgICAgICAgICBsZXQgZ3JpZENvbG9yID0gZG9tTm9kZS5sYXlvdXRPdmVybGF5Q29s
b3I7CiAgICAgICAgICAgICBsZXQgc3dhdGNoID0gbmV3IFdJLklubGluZVN3YXRjaChXSS5Jbmxp
bmVTd2F0Y2guVHlwZS5Db2xvciwgZ3JpZENvbG9yKTsKICAgICAgICAgICAgIHN3YXRjaC5zaGlm
dENsaWNrQ29sb3JFbmFibGVkID0gZmFsc2U7CiAgICAgICAgICAgICBpdGVtQ29udGFpbmVyRWxl
bWVudC5hcHBlbmQoc3dhdGNoLmVsZW1lbnQpOwogCiAgICAgICAgICAgICBzd2F0Y2guYWRkRXZl
bnRMaXN0ZW5lcihXSS5JbmxpbmVTd2F0Y2guRXZlbnQuVmFsdWVDaGFuZ2VkLCAoZXZlbnQpID0+
IHsKICAgICAgICAgICAgICAgICBpZiAoY2hlY2tib3hFbGVtZW50LmNoZWNrZWQpCi0gICAgICAg
ICAgICAgICAgICAgIC8vIFdoaWxlIGNoYW5naW5nIHRoZSBvdmVybGF5IGNvbG9yLCBXSS5PdmVy
bGF5TWFuYWdlci5FdmVudC5HcmlkT3ZlcmxheVNob3duIGlzIGRpc3BhdGNoZWQgd2l0aCBoaWdo
IGZyZXF1ZW5jeS4KKyAgICAgICAgICAgICAgICAgICAgLy8gV2hpbGUgY2hhbmdpbmcgdGhlIG92
ZXJsYXkgY29sb3IsIFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0T3ZlcmxheVNob3duIGlzIGRpc3Bh
dGNoZWQgd2l0aCBoaWdoIGZyZXF1ZW5jeS4KICAgICAgICAgICAgICAgICAgICAgLy8gQW4gaW5p
dGlhdG9yIGlzIG5vdCBwcm92aWRlZCBzbyBhcyBub3QgdG8gc2tldyB1c2FnZSBjb3VudCBvZiBv
dmVybGF5IG9wdGlvbnMgd2hlbiBsb2dnaW5nIGRpYWdub3N0aWNzIGluIFdJLkdyaWRPdmVybGF5
RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuCi0gICAgICAgICAgICAgICAgICAgIFdJLm92ZXJsYXlN
YW5hZ2VyLnNob3dPdmVybGF5KGRvbU5vZGUsIHtjb2xvcjogZXZlbnQuZGF0YS52YWx1ZX0pOwor
ICAgICAgICAgICAgICAgICAgICBkb21Ob2RlLnNob3dMYXlvdXRPdmVybGF5KHtjb2xvcjogZXZl
bnQuZGF0YS52YWx1ZX0pOwogICAgICAgICAgICAgfSwgc3dhdGNoKTsKIAogICAgICAgICAgICAg
c3dhdGNoLmFkZEV2ZW50TGlzdGVuZXIoV0kuSW5saW5lU3dhdGNoLkV2ZW50LkRlYWN0aXZhdGVk
LCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09
PSBncmlkQ29sb3IpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
ICAgIGdyaWRDb2xvciA9IGV2ZW50LnRhcmdldC52YWx1ZTsKLSAgICAgICAgICAgICAgICBXSS5v
dmVybGF5TWFuYWdlci5zZXRDb2xvckZvck5vZGUoZG9tTm9kZSwgZ3JpZENvbG9yKTsKKyAgICAg
ICAgICAgICAgICBkb21Ob2RlLmxheW91dE92ZXJsYXlDb2xvciA9IGV2ZW50LnRhcmdldC52YWx1
ZTsKICAgICAgICAgICAgIH0sIHN3YXRjaCk7CiAKICAgICAgICAgICAgIGxldCBidXR0b25FbGVt
ZW50ID0gaXRlbUNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoV0kuY3JlYXRlR29Ub0Fycm93
QnV0dG9uKCkpOwpAQCAtMTY3LDE0ICsxNjMsMTQgQEAgV0kuQ1NTR3JpZFNlY3Rpb24gPSBjbGFz
cyBDU1NHcmlkU2VjdGlvbiBleHRlbmRzIFdJLlZpZXcKIAogICAgIF9oYW5kbGVHcmlkT3Zlcmxh
eVN0YXRlQ2hhbmdlZChldmVudCkKICAgICB7Ci0gICAgICAgIGlmIChldmVudC5kYXRhLmRvbU5v
ZGUubGF5b3V0Q29udGV4dFR5cGUgIT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3Jp
ZCkKKyAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5sYXlvdXRDb250ZXh0VHlwZSAhPT0gV0kuRE9N
Tm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGxldCBjaGVja2JveEVsZW1lbnQgPSB0aGlzLl9jaGVja2JveEVsZW1lbnRCeU5vZGVNYXAu
Z2V0KGV2ZW50LmRhdGEuZG9tTm9kZSk7CisgICAgICAgIGxldCBjaGVja2JveEVsZW1lbnQgPSB0
aGlzLl9jaGVja2JveEVsZW1lbnRCeU5vZGVNYXAuZ2V0KGV2ZW50LnRhcmdldCk7CiAgICAgICAg
IGlmICghY2hlY2tib3hFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGNo
ZWNrYm94RWxlbWVudC5jaGVja2VkID0gZXZlbnQudHlwZSA9PT0gV0kuT3ZlcmxheU1hbmFnZXIu
RXZlbnQuT3ZlcmxheVNob3duOworICAgICAgICBjaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9IGV2
ZW50LnRhcmdldC5sYXlvdXRPdmVybGF5U2hvd2luZzsKICAgICAgICAgdGhpcy5fdXBkYXRlVG9n
Z2xlQWxsQ2hlY2tib3goKTsKICAgICB9CiAKQEAgLTE4Niw3ICsxODIsNyBAQCBXSS5DU1NHcmlk
U2VjdGlvbiA9IGNsYXNzIENTU0dyaWRTZWN0aW9uIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBs
ZXQgaGFzVmlzaWJsZSA9IGZhbHNlOwogICAgICAgICBsZXQgaGFzSGlkZGVuID0gZmFsc2U7CiAg
ICAgICAgIGZvciAobGV0IGRvbU5vZGUgb2YgdGhpcy5fZ3JpZE5vZGVTZXQpIHsKLSAgICAgICAg
ICAgIGxldCBpc1Zpc2libGUgPSBXSS5vdmVybGF5TWFuYWdlci5oYXNWaXNpYmxlT3ZlcmxheShk
b21Ob2RlKTsKKyAgICAgICAgICAgIGxldCBpc1Zpc2libGUgPSBkb21Ob2RlLmxheW91dE92ZXJs
YXlTaG93aW5nOwogICAgICAgICAgICAgaWYgKGlzVmlzaWJsZSkKICAgICAgICAgICAgICAgICBo
YXNWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMK
aW5kZXggMWI1YjdlMjNiMjQ5OTdmNGVmNjQxY2UwNjkyMmZmZDk5ZTFiNzczYy4uMTc0ZWZlNjRl
MDg0OTcwMTk0NGEyNDhiNTI2NmMzZTM5OTdmN2NhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMK
QEAgLTQ0NSw4ICs0NDUsOCBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVt
ZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LmxheW91dENvbnRleHRUeXBlKSB7Ci0gICAgICAgICAgICBXSS5v
dmVybGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92
ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOwotICAgICAg
ICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdl
ci5FdmVudC5PdmVybGF5SGlkZGVuLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cywgdGhp
cyk7CisgICAgICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIo
V0kuRE9NTm9kZS5FdmVudC5MYXlvdXRPdmVybGF5U2hvd24sIHRoaXMuX3VwZGF0ZUxheW91dEJh
ZGdlU3RhdHVzLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRk
RXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkxheW91dE92ZXJsYXlIaWRkZW4sIHRoaXMu
X3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKICAgICAgICAgfQogICAgICAgICB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlv
dXRDb250ZXh0VHlwZUNoYW5nZWQsIHRoaXMuX2hhbmRsZUxheW91dENvbnRleHRUeXBlQ2hhbmdl
ZCwgdGhpcyk7CiAKQEAgLTQ1Niw4ICs0NTYsOCBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNsYXNz
IERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAgICBvbmRldGFjaCgpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5sYXlvdXRDb250ZXh0VHlw
ZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkKSB7Ci0gICAgICAgICAgICBX
SS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2
ZW50Lk92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOwot
ICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVy
bGF5TWFuYWdlci5FdmVudC5PdmVybGF5SGlkZGVuLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0
YXR1cywgdGhpcyk7CisgICAgICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2
ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRPdmVybGF5U2hvd24sIHRoaXMuX3Vw
ZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMucmVwcmVzZW50
ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkxheW91dE92ZXJs
YXlIaWRkZW4sIHRoaXMuX3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKICAgICAgICAg
fQogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0ku
RE9NTm9kZS5FdmVudC5MYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQsIHRoaXMuX2hhbmRsZUxheW91
dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcyk7CiAgICAgfQpAQCAtMjA1Nyw5ICsyMDU3LDEzIEBA
IFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVl
RWxlbWVudAogICAgICAgICAvLyBEb24ndCBleHBhbmQgb3IgY29sbGFwc2UgYSB0cmVlIGVsZW1l
bnQgd2hlbiBjbGlja2luZyBvbiB0aGUgZ3JpZCBiYWRnZS4KICAgICAgICAgZXZlbnQuc3RvcCgp
OwogCi0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnRvZ2dsZU92ZXJsYXkodGhpcy5yZXByZXNl
bnRlZE9iamVjdCwgewotICAgICAgICAgICAgaW5pdGlhdG9yOiB0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0LmxheW91dENvbnRleHRUeXBlID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdy
aWQgPyBXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLkluaXRpYXRvci5CYWRn
ZSA6IG51bGwsCi0gICAgICAgIH0pOworICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVj
dC5sYXlvdXRPdmVybGF5U2hvd2luZykKKyAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QuaGlkZUxheW91dE92ZXJsYXkoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LnNob3dMYXlvdXRPdmVybGF5KHsKKyAgICAgICAgICAgICAgICBp
bml0aWF0b3I6IHRoaXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJ
LkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZCA/IFdJLkdyaWRPdmVybGF5RGlhZ25vc3Rp
Y0V2ZW50UmVjb3JkZXIuSW5pdGlhdG9yLkJhZGdlIDogbnVsbCwKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgX2xheW91dEJhZGdlRG91YmxlQ2xpY2tlZChldmVudCkK
QEAgLTIwNzIsMTEgKzIwNzYsMTEgQEAgV0kuRE9NVHJlZUVsZW1lbnQgPSBjbGFzcyBET01UcmVl
RWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAgICAgIGlmICghdGhpcy5fbGF5b3V0
QmFkZ2VFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBoYXNWaXNp
YmxlT3ZlcmxheSA9IFdJLm92ZXJsYXlNYW5hZ2VyLmhhc1Zpc2libGVPdmVybGF5KHRoaXMucmVw
cmVzZW50ZWRPYmplY3QpOworICAgICAgICBsZXQgaGFzVmlzaWJsZU92ZXJsYXkgPSB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0LmxheW91dE92ZXJsYXlTaG93aW5nOwogICAgICAgICB0aGlzLl9sYXlv
dXRCYWRnZUVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZhdGVkIiwgaGFzVmlzaWJsZU92
ZXJsYXkpOwogCiAgICAgICAgIGlmIChoYXNWaXNpYmxlT3ZlcmxheSkgewotICAgICAgICAgICAg
bGV0IGNvbG9yID0gV0kub3ZlcmxheU1hbmFnZXIuZ2V0Q29sb3JGb3JOb2RlKHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QpOworICAgICAgICAgICAgbGV0IGNvbG9yID0gdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5sYXlvdXRPdmVybGF5Q29sb3I7CiAgICAgICAgICAgICBsZXQgaHVlID0gY29sb3IuaHNs
WzBdOwogICAgICAgICAgICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50LnN0eWxlLmJvcmRlckNv
bG9yID0gY29sb3IudG9TdHJpbmcoKTsKICAgICAgICAgICAgIHRoaXMuX2xheW91dEJhZGdlRWxl
bWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBgaHNsKCR7aHVlfSwgOTAlLCA5NSUpYDsKQEAg
LTIwODgsMTIgKzIwOTIsMTIgQEAgV0kuRE9NVHJlZUVsZW1lbnQgPSBjbGFzcyBET01UcmVlRWxl
bWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAgX2hhbmRsZUxheW91dENvbnRleHRUeXBl
Q2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIGxldCBkb21Ob2RlID0gZXZlbnQudGFyZ2V0
OwotICAgICAgICBpZiAoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSkgewotICAgICAgICAgICAg
V0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVu
dC5PdmVybGF5U2hvd24sIHRoaXMuX3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKLSAg
ICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1h
bmFnZXIuRXZlbnQuT3ZlcmxheUhpZGRlbiwgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMs
IHRoaXMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24s
IHRoaXMuX3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLm92
ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQu
T3ZlcmxheUhpZGRlbiwgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOworICAg
ICAgICBpZiAoZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSAmJiAhdGhpcy5fbGF5b3V0QmFkZ2VF
bGVtZW50KSB7CisgICAgICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlz
dGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRPdmVybGF5U2hvd24sIHRoaXMuX3VwZGF0ZUxh
eW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkxheW91dE92ZXJsYXlIaWRkZW4s
IHRoaXMuX3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKKyAgICAgICAgfSBlbHNlIGlm
ICghZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSAmJiB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQp
IHsKKyAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5ET01Ob2RlLkV2ZW50LkxheW91dE92ZXJsYXlTaG93biwgdGhpcy5fdXBkYXRlTGF5b3V0
QmFkZ2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5y
ZW1vdmVFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0T3ZlcmxheUhpZGRlbiwg
dGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOwogICAgICAgICB9CiAKICAgICAg
ICAgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2UoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMDk5ZDgwMDFkNDE2NWM3OWI1
NGMwYmRmYTEwY2RjZDA5MjdmNWI4Li4zOWQyNzQ5OTUzYjlkNjNjY2E5NWEwNzFhZjM1MjEzOTgw
NGNjYzBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDItMTEgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1lcmdlIFdJLk92
ZXJsYXlNYW5hZ2VyIGludG8gV0kuRE9NTm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL3Nob3dGbGV4T3ZlcmxheS5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9kb20vc2hvd0dyaWRPdmVybGF5Lmh0bWw6CisgICAgICAg
IFJlcGxhY2UgZGlyZWN0IGBET01BZ2VudGAgY2FsbHMgd2l0aCBlcXVpdmFsZW50IGBXSS5ET01O
b2RlYCBtZXRob2RzLgorCiAyMDIyLTAyLTExICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFttb2RlbF0gcmV3cml0ZSBodHRwL3Rlc3RzL21vZGVsL21vZGVs
LWRvY3VtZW50Lmh0bWwgdXNpbmcgdGVzdGhhcm5lc3MuanMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vc2hvd0ZsZXhPdmVybGF5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL3Nob3dGbGV4T3ZlcmxheS5odG1sCmluZGV4IDNiYjI2YmI4ZjA3NmQ0ODRlOGY4
OGE5ODQxYTI2ZDdmNWNiOWVjZDIuLmMzOTFmMGU4N2MzZTZlODljZGIyYjgxNTdmNTcyNDdhNTY4
ZDI4MmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2hvd0ZsZXhPdmVy
bGF5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zaG93RmxleE92ZXJsYXku
aHRtbApAQCAtNDYsMTcgKzQ2LDE3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbGV0
IGNvbnRhaW5lciA9IGF3YWl0IGdldEZsZXhDb250YWluZXJOb2RlKCk7CiAKICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJSZXF1ZXN0aW5nIHRvIHNob3cgZmxleCBvdmVybGF5IGZvciBm
aXJzdCAuZmxleC1jb250YWluZXIiKTsKLSAgICAgICAgICAgIGF3YWl0IERPTUFnZW50LnNob3dG
bGV4T3ZlcmxheShjb250YWluZXIuaWQsIFdJLkNvbG9yLmZyb21TdHJpbmcoIm1hZ2VudGEiKS50
b1Byb3RvY29sKCkpOworICAgICAgICAgICAgYXdhaXQgY29udGFpbmVyLnNob3dMYXlvdXRPdmVy
bGF5KHtjb2xvcjogV0kuQ29sb3IuZnJvbVN0cmluZygibWFnZW50YSIpfSk7CiAgICAgICAgICAg
ICBhd2FpdCBjaGVja0ZsZXhPdmVybGF5Q291bnQoMSk7CiAKICAgICAgICAgICAgIC8vIE5vIGVy
cm9yIHNob3VsZCBvY2N1ciBpZiBzaG93aW5nIGZsZXggb3ZlcmxheSBmb3IgYSBub2RlIHRoYXQg
YWxyZWFkeSBoYXMgb25lLgogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlcXVlc3Rp
bmcgdG8gc2hvdyBhIGRpZmZlcmVudCBmbGV4IG92ZXJsYXkgZm9yIGZpcnN0IC5mbGV4LWNvbnRh
aW5lciIpOwotICAgICAgICAgICAgYXdhaXQgRE9NQWdlbnQuc2hvd0ZsZXhPdmVybGF5KGNvbnRh
aW5lci5pZCwgV0kuQ29sb3IuZnJvbVN0cmluZygiZ3JlZW4iKS50b1Byb3RvY29sKCkpOworICAg
ICAgICAgICAgYXdhaXQgY29udGFpbmVyLnNob3dMYXlvdXRPdmVybGF5KHtjb2xvcjogV0kuQ29s
b3IuZnJvbVN0cmluZygiZ3JlZW4iKX0pOwogICAgICAgICAgICAgYXdhaXQgY2hlY2tGbGV4T3Zl
cmxheUNvdW50KDEpOwogCiAgICAgICAgICAgICAvLyBObyBlcnJvciBzaG91bGQgb2NjdXIgd2hl
biBoaWRpbmcgdGhlIGZsZXggb3ZlcmxheS4KICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJSZXF1ZXN0aW5nIHRvIGhpZGUgZmxleCBvdmVybGF5Iik7Ci0gICAgICAgICAgICBhd2FpdCBE
T01BZ2VudC5oaWRlRmxleE92ZXJsYXkoY29udGFpbmVyLmlkKTsKKyAgICAgICAgICAgIGF3YWl0
IGNvbnRhaW5lci5oaWRlTGF5b3V0T3ZlcmxheSgpOwogICAgICAgICAgICAgYXdhaXQgY2hlY2tG
bGV4T3ZlcmxheUNvdW50KDApOwogICAgICAgICB9CiAgICAgfSk7CkBAIC02OSwyMSArNjksMjEg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBsZXQgW2ZpcnN0LCBzZWNvbmRdID0gYXdh
aXQgZ2V0QWxsRmxleENvbnRhaW5lck5vZGVzKCk7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJSZXF1ZXN0aW5nIHRvIHNob3cgZmlyc3QgZmxleCBvdmVybGF5Iik7Ci0gICAgICAg
ICAgICBhd2FpdCBET01BZ2VudC5zaG93RmxleE92ZXJsYXkoZmlyc3QuaWQsIFdJLkNvbG9yLmZy
b21TdHJpbmcoIm1hZ2VudGEiKS50b1Byb3RvY29sKCkpOworICAgICAgICAgICAgYXdhaXQgZmly
c3Quc2hvd0xheW91dE92ZXJsYXkoe2NvbG9yOiBXSS5Db2xvci5mcm9tU3RyaW5nKCJtYWdlbnRh
Iil9KTsKICAgICAgICAgICAgIGF3YWl0IGNoZWNrRmxleE92ZXJsYXlDb3VudCgxKTsKIAogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlcXVlc3RpbmcgdG8gc2hvdyBzZWNvbmQgZmxl
eCBvdmVybGF5Iik7Ci0gICAgICAgICAgICBhd2FpdCBET01BZ2VudC5zaG93RmxleE92ZXJsYXko
c2Vjb25kLmlkLCBXSS5Db2xvci5mcm9tU3RyaW5nKCJncmVlbiIpLnRvUHJvdG9jb2woKSk7Cisg
ICAgICAgICAgICBhd2FpdCBzZWNvbmQuc2hvd0xheW91dE92ZXJsYXkoe2NvbG9yOiBXSS5Db2xv
ci5mcm9tU3RyaW5nKCJncmVlbiIpfSk7CiAgICAgICAgICAgICBhd2FpdCBjaGVja0ZsZXhPdmVy
bGF5Q291bnQoMik7CiAKICAgICAgICAgICAgIC8vIE5vIGVycm9yIHNob3VsZCBvY2N1ciB3aGVu
IGhpZGluZyB0aGUgZmlyc3QgZmxleCBvdmVybGF5LgogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIlJlcXVlc3RpbmcgdG8gaGlkZSBmaXJzdCBmbGV4IG92ZXJsYXkiKTsKLSAgICAgICAg
ICAgIGF3YWl0IERPTUFnZW50LmhpZGVGbGV4T3ZlcmxheShmaXJzdC5pZCk7CisgICAgICAgICAg
ICBhd2FpdCBmaXJzdC5oaWRlTGF5b3V0T3ZlcmxheSgpOwogICAgICAgICAgICAgYXdhaXQgY2hl
Y2tGbGV4T3ZlcmxheUNvdW50KDEpOwogCiAgICAgICAgICAgICAvLyBObyBlcnJvciBzaG91bGQg
b2NjdXIgd2hlbiBoaWRpbmcgdGhlIHNlY29uZCBmbGV4IG92ZXJsYXkuCiAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiUmVxdWVzdGluZyB0byBoaWRlIHNlY29uZCBmbGV4IG92ZXJsYXki
KTsKLSAgICAgICAgICAgIGF3YWl0IERPTUFnZW50LmhpZGVGbGV4T3ZlcmxheShzZWNvbmQuaWQp
OworICAgICAgICAgICAgYXdhaXQgc2Vjb25kLmhpZGVMYXlvdXRPdmVybGF5KCk7CiAgICAgICAg
ICAgICBhd2FpdCBjaGVja0ZsZXhPdmVybGF5Q291bnQoMCk7CiAgICAgICAgIH0KICAgICB9KTsK
QEAgLTk2LDExICs5NiwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIGxldCBbZmly
c3QsIHNlY29uZF0gPSBhd2FpdCBnZXRBbGxGbGV4Q29udGFpbmVyTm9kZXMoKTsKIAogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlcXVlc3RpbmcgdG8gc2hvdyBmaXJzdCBmbGV4IG92
ZXJsYXkiKTsKLSAgICAgICAgICAgIGF3YWl0IERPTUFnZW50LnNob3dGbGV4T3ZlcmxheShmaXJz
dC5pZCwgV0kuQ29sb3IuZnJvbVN0cmluZygibWFnZW50YSIpLnRvUHJvdG9jb2woKSk7CisgICAg
ICAgICAgICBhd2FpdCBmaXJzdC5zaG93TGF5b3V0T3ZlcmxheSh7Y29sb3I6IFdJLkNvbG9yLmZy
b21TdHJpbmcoIm1hZ2VudGEiKX0pOwogICAgICAgICAgICAgYXdhaXQgY2hlY2tGbGV4T3Zlcmxh
eUNvdW50KDEpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVxdWVzdGluZyB0
byBzaG93IHNlY29uZCBmbGV4IG92ZXJsYXkiKTsKLSAgICAgICAgICAgIGF3YWl0IERPTUFnZW50
LnNob3dGbGV4T3ZlcmxheShzZWNvbmQuaWQsIFdJLkNvbG9yLmZyb21TdHJpbmcoImdyZWVuIiku
dG9Qcm90b2NvbCgpKTsKKyAgICAgICAgICAgIGF3YWl0IHNlY29uZC5zaG93TGF5b3V0T3Zlcmxh
eSh7Y29sb3I6IFdJLkNvbG9yLmZyb21TdHJpbmcoImdyZWVuIil9KTsKICAgICAgICAgICAgIGF3
YWl0IGNoZWNrRmxleE92ZXJsYXlDb3VudCgyKTsKIAogICAgICAgICAgICAgLy8gTm8gZXJyb3Ig
c2hvdWxkIG9jY3VyIHdoZW4gaGlkaW5nIGFsbCBmbGV4IG92ZXJsYXlzLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zaG93R3JpZE92ZXJsYXkuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vc2hvd0dyaWRPdmVybGF5Lmh0bWwKaW5kZXggMDJlM2QwNjc0M2Uz
YzA5ZjQwMzE4NmNjNGEzZTgwODJlZDNmZjhkOS4uYTA1N2Q3MTA2OWMzNzgwNGVmMDM5NGM5ZWI2
YjIzMTMyNDk2ZmJhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zaG93
R3JpZE92ZXJsYXkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3Nob3dHcmlk
T3ZlcmxheS5odG1sCkBAIC00NiwxNyArNDYsMTcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICBsZXQgY29udGFpbmVyID0gYXdhaXQgZ2V0R3JpZENvbnRhaW5lck5vZGUoKTsKIAogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlcXVlc3RpbmcgdG8gc2hvdyBncmlkIG92ZXJs
YXkgZm9yIGZpcnN0IC5ncmlkLWNvbnRhaW5lciIpOwotICAgICAgICAgICAgYXdhaXQgRE9NQWdl
bnQuc2hvd0dyaWRPdmVybGF5KGNvbnRhaW5lci5pZCwgV0kuQ29sb3IuZnJvbVN0cmluZygibWFn
ZW50YSIpLnRvUHJvdG9jb2woKSk7CisgICAgICAgICAgICBhd2FpdCBjb250YWluZXIuc2hvd0xh
eW91dE92ZXJsYXkoe2NvbG9yOiBXSS5Db2xvci5mcm9tU3RyaW5nKCJtYWdlbnRhIil9KTsKICAg
ICAgICAgICAgIGF3YWl0IGNoZWNrR3JpZE92ZXJsYXlDb3VudCgxKTsKIAogICAgICAgICAgICAg
Ly8gTm8gZXJyb3Igc2hvdWxkIG9jY3VyIGlmIHNob3dpbmcgZ3JpZCBvdmVybGF5IGZvciBhIG5v
ZGUgdGhhdCBhbHJlYWR5IGhhcyBvbmUuCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
UmVxdWVzdGluZyB0byBzaG93IGEgZGlmZmVyZW50IGdyaWQgb3ZlcmxheSBmb3IgZmlyc3QgLmdy
aWQtY29udGFpbmVyIik7Ci0gICAgICAgICAgICBhd2FpdCBET01BZ2VudC5zaG93R3JpZE92ZXJs
YXkoY29udGFpbmVyLmlkLCBXSS5Db2xvci5mcm9tU3RyaW5nKCJncmVlbiIpLnRvUHJvdG9jb2wo
KSk7CisgICAgICAgICAgICBhd2FpdCBjb250YWluZXIuc2hvd0xheW91dE92ZXJsYXkoe2NvbG9y
OiBXSS5Db2xvci5mcm9tU3RyaW5nKCJncmVlbiIpfSk7CiAgICAgICAgICAgICBhd2FpdCBjaGVj
a0dyaWRPdmVybGF5Q291bnQoMSk7CiAKICAgICAgICAgICAgIC8vIE5vIGVycm9yIHNob3VsZCBv
Y2N1ciB3aGVuIGhpZGluZyB0aGUgZ3JpZCBvdmVybGF5LgogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIlJlcXVlc3RpbmcgdG8gaGlkZSBncmlkIG92ZXJsYXkiKTsKLSAgICAgICAgICAg
IGF3YWl0IERPTUFnZW50LmhpZGVHcmlkT3ZlcmxheShjb250YWluZXIuaWQpOworICAgICAgICAg
ICAgYXdhaXQgY29udGFpbmVyLmhpZGVMYXlvdXRPdmVybGF5KCk7CiAgICAgICAgICAgICBhd2Fp
dCBjaGVja0dyaWRPdmVybGF5Q291bnQoMCk7CiAgICAgICAgIH0KICAgICB9KTsKQEAgLTY5LDIx
ICs2OSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIGxldCBbZmlyc3QsIHNlY29u
ZF0gPSBhd2FpdCBnZXRBbGxHcmlkQ29udGFpbmVyTm9kZXMoKTsKIAogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIlJlcXVlc3RpbmcgdG8gc2hvdyBmaXJzdCBncmlkIG92ZXJsYXkiKTsK
LSAgICAgICAgICAgIGF3YWl0IERPTUFnZW50LnNob3dHcmlkT3ZlcmxheShmaXJzdC5pZCwgV0ku
Q29sb3IuZnJvbVN0cmluZygibWFnZW50YSIpLnRvUHJvdG9jb2woKSk7CisgICAgICAgICAgICBh
d2FpdCBmaXJzdC5zaG93TGF5b3V0T3ZlcmxheSh7Y29sb3I6IFdJLkNvbG9yLmZyb21TdHJpbmco
Im1hZ2VudGEiKX0pOwogICAgICAgICAgICAgYXdhaXQgY2hlY2tHcmlkT3ZlcmxheUNvdW50KDEp
OwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVxdWVzdGluZyB0byBzaG93IHNl
Y29uZCBncmlkIG92ZXJsYXkiKTsKLSAgICAgICAgICAgIGF3YWl0IERPTUFnZW50LnNob3dHcmlk
T3ZlcmxheShzZWNvbmQuaWQsIFdJLkNvbG9yLmZyb21TdHJpbmcoImdyZWVuIikudG9Qcm90b2Nv
bCgpKTsKKyAgICAgICAgICAgIGF3YWl0IHNlY29uZC5zaG93TGF5b3V0T3ZlcmxheSh7Y29sb3I6
IFdJLkNvbG9yLmZyb21TdHJpbmcoImdyZWVuIil9KTsKICAgICAgICAgICAgIGF3YWl0IGNoZWNr
R3JpZE92ZXJsYXlDb3VudCgyKTsKIAogICAgICAgICAgICAgLy8gTm8gZXJyb3Igc2hvdWxkIG9j
Y3VyIHdoZW4gaGlkaW5nIHRoZSBncmlkIG92ZXJsYXkuCiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiUmVxdWVzdGluZyB0byBoaWRlIGZpcnN0IGdyaWQgb3ZlcmxheSIpOwotICAgICAg
ICAgICAgYXdhaXQgRE9NQWdlbnQuaGlkZUdyaWRPdmVybGF5KGZpcnN0LmlkKTsKKyAgICAgICAg
ICAgIGF3YWl0IGZpcnN0LmhpZGVMYXlvdXRPdmVybGF5KCk7CiAgICAgICAgICAgICBhd2FpdCBj
aGVja0dyaWRPdmVybGF5Q291bnQoMSk7CiAKICAgICAgICAgICAgIC8vIE5vIGVycm9yIHNob3Vs
ZCBvY2N1ciB3aGVuIGhpZGluZyB0aGUgZ3JpZCBvdmVybGF5LgogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIlJlcXVlc3RpbmcgdG8gaGlkZSBzZWNvbmQgZ3JpZCBvdmVybGF5Iik7Ci0g
ICAgICAgICAgICBhd2FpdCBET01BZ2VudC5oaWRlR3JpZE92ZXJsYXkoc2Vjb25kLmlkKTsKKyAg
ICAgICAgICAgIGF3YWl0IHNlY29uZC5oaWRlTGF5b3V0T3ZlcmxheSgpOwogICAgICAgICAgICAg
YXdhaXQgY2hlY2tHcmlkT3ZlcmxheUNvdW50KDApOwogICAgICAgICB9CiAgICAgfSk7CkBAIC05
NiwxMSArOTYsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBsZXQgW2ZpcnN0LCBz
ZWNvbmRdID0gYXdhaXQgZ2V0QWxsR3JpZENvbnRhaW5lck5vZGVzKCk7CiAKICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJSZXF1ZXN0aW5nIHRvIHNob3cgZ3JpZCBvdmVybGF5Iik7Ci0g
ICAgICAgICAgICBhd2FpdCBET01BZ2VudC5zaG93R3JpZE92ZXJsYXkoZmlyc3QuaWQsIFdJLkNv
bG9yLmZyb21TdHJpbmcoIm1hZ2VudGEiKS50b1Byb3RvY29sKCkpOworICAgICAgICAgICAgYXdh
aXQgZmlyc3Quc2hvd0xheW91dE92ZXJsYXkoe2NvbG9yOiBXSS5Db2xvci5mcm9tU3RyaW5nKCJt
YWdlbnRhIil9KTsKICAgICAgICAgICAgIGF3YWl0IGNoZWNrR3JpZE92ZXJsYXlDb3VudCgxKTsK
IAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlcXVlc3RpbmcgdG8gc2hvdyBhIGRp
ZmZlcmVudCBncmlkIG92ZXJsYXkiKTsKLSAgICAgICAgICAgIGF3YWl0IERPTUFnZW50LnNob3dH
cmlkT3ZlcmxheShzZWNvbmQuaWQsIFdJLkNvbG9yLmZyb21TdHJpbmcoImdyZWVuIikudG9Qcm90
b2NvbCgpKTsKKyAgICAgICAgICAgIGF3YWl0IHNlY29uZC5zaG93TGF5b3V0T3ZlcmxheSh7Y29s
b3I6IFdJLkNvbG9yLmZyb21TdHJpbmcoImdyZWVuIil9KTsKICAgICAgICAgICAgIGF3YWl0IGNo
ZWNrR3JpZE92ZXJsYXlDb3VudCgyKTsKIAogICAgICAgICAgICAgLy8gTm8gZXJyb3Igc2hvdWxk
IG9jY3VyIHdoZW4gaGlkaW5nIHRoZSBncmlkIG92ZXJsYXkuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452787</attachid>
            <date>2022-02-21 15:28:09 -0800</date>
            <delta_ts>2022-02-24 08:44:07 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-236533-20220221162808.patch</filename>
            <type>text/plain</type>
            <size>52676</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDNlNDVhOWQ0ODZlNTQzZGJkZjE0NmVjOWY3MWMy
MDZhNWIzMWE3OTMuLjdjN2MyYmJhNjRmYWI0Y2E0YWRkODdhNjI2YjIwY2NlNGNkYmVmYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIyLTAyLTIxICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBt
ZXJnZSBXSS5PdmVybGF5TWFuYWdlciBpbnRvIFdJLkRPTU5vZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjUzMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlJ3MgcmVhbGx5IG5vdGhpbmcgc3Vi
c3RhbnRpYWwgYWJvdXQgYFdJLk92ZXJsYXlNYW5hZ2VyYCB0aGF0IHJlcXVpcmVzIGl0IHRvIGV4
aXN0LiBBbGwKKyAgICAgICAgb2YgdGhlIG1ldGhvZHMsIG1lbWJlcnMsIGV0Yy4gY2FuIGJlIG1v
dmVkIHRvIGBXSS5ET01Ob2RlYCwgcmVzdWx0aW5nIGluIGNsZWFyZXIgY2FsbGluZworICAgICAg
ICBjb2RlIChzaW5jZSBjYWxsZXJzIGN1cnJlbnRseSBoYXZlIHRvIHByb3ZpZGUgYSBgV0kuRE9N
Tm9kZWAgdG8gYFdJLk92ZXJsYXlNYW5hZ2VyYCBtZXRob2RzKQorICAgICAgICBhbmQgZmV3ZXIg
Y29sbGVjdGlvbnMgKGUuZy4gaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIGhhdmUgYSAibGlz
dCBvZiBub2RlcyBzaG93aW5nIGEgZ3JpZAorICAgICAgICBvdmVybGF5IikuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL092ZXJsYXlNYW5hZ2VyLmpzOiBSZW1vdmVkLgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV0kubG9hZGVkKToKKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanM6CisgICAgICAgIChXSS5ET01Ob2RlKToKKyAgICAg
ICAgKFdJLkRPTU5vZGUucmVzZXREZWZhdWx0TGF5b3V0T3ZlcmxheUNvbmZpZ3VyYXRpb24pOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkRPTU5vZGUucHJvdG90eXBlLmdldCBsYXlvdXRPdmVybGF5U2hv
d2luZyk6IG1vdmVkIGZyb20gYFdJLk92ZXJsYXlNYW5hZ2VyLnByb3R5dHBlLmhhc1Zpc2libGVP
dmVybGF5YC4KKyAgICAgICAgKFdJLkRPTU5vZGUucHJvdG90eXBlLnNldCBsYXlvdXRDb250ZXh0
VHlwZSk6CisgICAgICAgIChXSS5ET01Ob2RlLnByb3RvdHlwZS5zaG93TGF5b3V0T3ZlcmxheSk6
IG1vdmVkIGZyb20gYFdJLk92ZXJsYXlNYW5hZ2VyLnByb3R5dHBlLnNob3dPdmVybGF5YC4KKyAg
ICAgICAgKFdJLkRPTU5vZGUucHJvdG90eXBlLmhpZGVMYXlvdXRPdmVybGF5KTogbW92ZWQgZnJv
bSBgV0kuT3ZlcmxheU1hbmFnZXIucHJvdHl0cGUuaGlkZU92ZXJsYXlgLgorICAgICAgICAoV0ku
RE9NTm9kZS5wcm90b3R5cGUuZ2V0IGxheW91dE92ZXJsYXlDb2xvcik6IG1vdmVkIGZyb20gYFdJ
Lk92ZXJsYXlNYW5hZ2VyLnByb3R5dHBlLmdldENvbG9yRm9yTm9kZWAuCisgICAgICAgIChXSS5E
T01Ob2RlLnByb3RvdHlwZS5zZXQgbGF5b3V0T3ZlcmxheUNvbG9yKTogbW92ZWQgZnJvbSBgV0ku
T3ZlcmxheU1hbmFnZXIucHJvdHl0cGUuc2V0Q29sb3JGb3JOb2RlYC4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRPTU1h
bmFnZXIucHJvdG90eXBlLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UpOgorICAgICAgICBSZXNldCB0
aGUgaW5kZXggb2YgdGhlIG5leHQgZGVmYXVsdCBjb2xvciB0byB1c2UgZm9yIHRoZSBuZXh0IGdy
aWQvZmxleCBET00gbm9kZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRh
Y2gpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZGV0YWNoKToKKyAg
ICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5fbGF5b3V0QmFkZ2VDbGlja2VkKToK
KyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRlTGF5b3V0QmFkZ2VT
dGF0dXMpOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl9oYW5kbGVMYXlv
dXRDb250ZXh0VHlwZUNoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTm9k
ZU92ZXJsYXlMaXN0U2VjdGlvbi5qczoKKyAgICAgICAgKFdJLk5vZGVPdmVybGF5TGlzdFNlY3Rp
b24ucHJvdG90eXBlLmF0dGFjaGVkKToKKyAgICAgICAgKFdJLk5vZGVPdmVybGF5TGlzdFNlY3Rp
b24ucHJvdG90eXBlLmRldGFjaGVkKToKKyAgICAgICAgKFdJLk5vZGVPdmVybGF5TGlzdFNlY3Rp
b24ucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChXSS5Ob2RlT3ZlcmxheUxpc3RTZWN0aW9u
LnByb3RvdHlwZS5faGFuZGxlT3ZlcmxheVN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXSS5Ob2Rl
T3ZlcmxheUxpc3RTZWN0aW9uLnByb3RvdHlwZS5faGFuZGxlVG9nZ2xlQWxsQ2hlY2tib3hDaGFu
Z2VkKToKKyAgICAgICAgKFdJLk5vZGVPdmVybGF5TGlzdFNlY3Rpb24ucHJvdG90eXBlLl91cGRh
dGVUb2dnbGVBbGxDaGVja2JveCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qczoKKyAg
ICAgICAgKFdJLkdyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVy
KToKKyAgICAgICAgKFdJLkdyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJl
Y29yZGVyLnByb3RvdHlwZS5zZXR1cCk6CisgICAgICAgIChXSS5HcmlkT3ZlcmxheUNvbmZpZ3Vy
YXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5wcm90b3R5cGUudGVhcmRvd24pOgorICAgICAg
ICAoV0kuR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIucHJv
dG90eXBlLl9oYW5kbGVHcmlkT3ZlcmxheVNob3duKToKKyAgICAgICAgKFdJLkdyaWRPdmVybGF5
Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLnByb3RvdHlwZS5faGFuZGxlR3Jp
ZE92ZXJsYXlIaWRkZW4pOgorICAgICAgICAoV0kuR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlh
Z25vc3RpY0V2ZW50UmVjb3JkZXIucHJvdG90eXBlLl9zYW1wbGVDdXJyZW50T3ZlcmxheUNvbmZp
Z3VyYXRpb24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJs
YXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qczoKKyAgICAgICAgKFdJLkdyaWRPdmVybGF5RGlh
Z25vc3RpY0V2ZW50UmVjb3JkZXIpOgorICAgICAgICAoV0kuR3JpZE92ZXJsYXlEaWFnbm9zdGlj
RXZlbnRSZWNvcmRlci5wcm90b3R5cGUuc2V0dXApOgorICAgICAgICAoV0kuR3JpZE92ZXJsYXlE
aWFnbm9zdGljRXZlbnRSZWNvcmRlci5wcm90b3R5cGUudGVhcmRvd24pOgorICAgICAgICAoV0ku
R3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlci5wcm90b3R5cGUuX2hhbmRsZUdyaWRP
dmVybGF5U2hvd24pOgorICAgICAgICBBZG9wdCB0aGUgYWJvdmUgY2hhbmdlczoKKyAgICAgICAg
IC0gUmVwbGFjZSBgV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuKmAgd2l0aCBgV0kuRE9NTm9kZS5F
dmVudC4qYCAoYW5kIGBldmVudC5kYXRhLmRvbU5vZGVgCisgICAgICAgICAgIHdpdGggYGV2ZW50
LnRhcmdldGApLgorICAgICAgICAgLSBSZXBsYWNlIGBXSS5vdmVybGF5TWFuYWdlci4qKGRvbU5v
ZGVbLCAuLi5dKWAgd2l0aCBgZG9tTm9kZS4qKFsuLi5dKWAuCisgICAgICAgICAtIERpcmVjdGx5
IHF1ZXJ5IGBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheSoudmFsdWVgIGluc3RlYWQgb2YgZ2V0dGlu
ZyB0aGVtIGZyb20gdGhlIGBkYXRhYAorICAgICAgICAgICBpbiBgV0kuRE9NTm9kZS5FdmVudC5M
YXlvdXRPdmVybGF5U2hvd25gIChmb3JtZXJseSBgV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3Zl
cmxheVNob3duYCkuCisKIDIwMjItMDItMTggIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjkwMTQ5LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDRjYzdh
M2E3ZDhiNzYxZjBiMDQ5Y2Q3ZDRiZTEyMGJhYWRkNDc1OGMuLjg5ZDg1MmM5NjAwODJiYTc1OTJj
NjUwMDgzODk5NTgyMzcyMDE3MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTEyNyw3ICsxMjcsNiBAQCBXSS5sb2FkZWQgPSBm
dW5jdGlvbigpCiAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlciA9IG5ldyBXSS5ET01EZWJ1
Z2dlck1hbmFnZXIsCiAgICAgICAgIFdJLmNhbnZhc01hbmFnZXIgPSBuZXcgV0kuQ2FudmFzTWFu
YWdlciwKICAgICAgICAgV0kuYW5pbWF0aW9uTWFuYWdlciA9IG5ldyBXSS5BbmltYXRpb25NYW5h
Z2VyLAotICAgICAgICBXSS5vdmVybGF5TWFuYWdlciA9IG5ldyBXSS5PdmVybGF5TWFuYWdlciwK
ICAgICBdOwogCiAgICAgLy8gUmVnaXN0ZXIgZm9yIGV2ZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5h
Z2VyLmpzCmluZGV4IDgwMDljZTgxY2U4YjFkMjc3NzMxYzg3M2NiMzNkZjE1NTk0ZDgyZGMuLmJk
ZjlmODQxZWE5NzhiNGFmYzhjOWEyNzEyODcwMTA3YWZkNGFlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9N
TWFuYWdlci5qcwpAQCAtODU5LDYgKzg1OSw4IEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01N
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3RlZE5v
ZGVJc0FsbG93ZWQgPSB0cnVlOwogCiAgICAgICAgIHRoaXMuZW5zdXJlRG9jdW1lbnQoKTsKKwor
ICAgICAgICBXSS5ET01Ob2RlLnJlc2V0RGVmYXVsdExheW91dE92ZXJsYXlDb25maWd1cmF0aW9u
KCk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2
ZW50UmVjb3JkZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5q
cwppbmRleCAxNmE5ZDg3NTFlZTFjYjQ1ZGRiOGNiMDg4MTNhNjc3N2E1YzhmNWRmLi4xNTYzODI0
MTYyZWEwY2RlZThhYmM0MmRlMGJmZTY2Y2VlYzJmMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9HcmlkT3ZlcmxheUNvbmZpZ3Vy
YXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFn
bm9zdGljRXZlbnRSZWNvcmRlci5qcwpAQCAtMzIsNyArMzIsNyBAQCBXSS5HcmlkT3ZlcmxheUNv
bmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlciA9IGNsYXNzIEdyaWRPdmVybGF5Q29u
ZmlndXJhdAogICAgICAgICB0aGlzLl9pbnNwZWN0b3JIYXNGb2N1cyA9IHRydWU7CiAgICAgICAg
IHRoaXMuX2xhc3RVc2VySW50ZXJhY3Rpb25UaW1lc3RhbXAgPSB1bmRlZmluZWQ7CiAgICAgICAg
IHRoaXMuX2V2ZW50U2FtcGxpbmdUaW1lcklkZW50aWZpZXIgPSB1bmRlZmluZWQ7Ci0gICAgICAg
IHRoaXMuX292ZXJsYXlPcHRpb25zID0ge307CisgICAgICAgIHRoaXMuX25vZGVzU2hvd2luZ0dy
aWRMYXlvdXRPdmVybGF5ID0gbmV3IFNldDsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKQEAgLTUx
LDggKzUxLDggQEAgV0kuR3JpZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVj
b3JkZXIgPSBjbGFzcyBHcmlkT3ZlcmxheUNvbmZpZ3VyYXQKICAgICAgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMsIG9wdGlvbnMpOwotICAgICAgICBXSS5v
dmVybGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92
ZXJsYXlTaG93biwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlTaG93biwgdGhpcyk7Ci0gICAgICAg
IFdJLm92ZXJsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZl
bnQuT3ZlcmxheUhpZGRlbiwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMpOwor
ICAgICAgICBXSS5ET01Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlv
dXRPdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5U2hvd24sIHRoaXMpOworICAg
ICAgICBXSS5ET01Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRP
dmVybGF5SGlkZGVuLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheUhpZGRlbiwgdGhpcyk7CiAgICAg
fQogCiAgICAgdGVhcmRvd24oKQpAQCAtNjQsMzQgKzY0LDMxIEBAIFdJLkdyaWRPdmVybGF5Q29u
ZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyID0gY2xhc3MgR3JpZE92ZXJsYXlDb25m
aWd1cmF0CiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcywg
b3B0aW9ucyk7CiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwg
dGhpcywgb3B0aW9ucyk7CiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCB0aGlzLCBvcHRpb25zKTsKLSAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMu
X2hhbmRsZUdyaWRPdmVybGF5U2hvd24sIHRoaXMpOwotICAgICAgICBXSS5vdmVybGF5TWFuYWdl
ci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlIaWRk
ZW4sIHRoaXMuX2hhbmRsZUdyaWRPdmVybGF5SGlkZGVuLCB0aGlzKTsKKyAgICAgICAgV0kuRE9N
Tm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0T3ZlcmxheVNo
b3duLCB0aGlzLl9oYW5kbGVHcmlkT3ZlcmxheVNob3duLCB0aGlzKTsKKyAgICAgICAgV0kuRE9N
Tm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0T3ZlcmxheUhp
ZGRlbiwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlIaWRkZW4sIHRoaXMpOwogCiAgICAgICAgIHRo
aXMuX3N0b3BFdmVudFNhbXBsaW5nVGltZXJJZk5lZWRlZCgpOwogICAgIH0KIAogICAgIF9oYW5k
bGVHcmlkT3ZlcmxheVNob3duKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKGV2ZW50LmRhdGEu
ZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSAhPT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlw
ZS5HcmlkKQorICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmxheW91dENvbnRleHRUeXBlICE9PSBX
SS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgdGhpcy5fb3ZlcmxheU9wdGlvbnMuc2hvd1RyYWNrU2l6ZXMgPSBldmVudC5kYXRh
LnNob3dUcmFja1NpemVzOwotICAgICAgICB0aGlzLl9vdmVybGF5T3B0aW9ucy5zaG93TGluZU51
bWJlcnMgPSBldmVudC5kYXRhLnNob3dMaW5lTnVtYmVyczsKLSAgICAgICAgdGhpcy5fb3Zlcmxh
eU9wdGlvbnMuc2hvd0xpbmVOYW1lcyA9IGV2ZW50LmRhdGEuc2hvd0xpbmVOYW1lczsKLSAgICAg
ICAgdGhpcy5fb3ZlcmxheU9wdGlvbnMuc2hvd0FyZWFOYW1lcyA9IGV2ZW50LmRhdGEuc2hvd0Fy
ZWFOYW1lczsKLSAgICAgICAgdGhpcy5fb3ZlcmxheU9wdGlvbnMuc2hvd0V4dGVuZGVkR3JpZExp
bmVzID0gZXZlbnQuZGF0YS5zaG93RXh0ZW5kZWRHcmlkTGluZXM7CisgICAgICAgIHRoaXMuX25v
ZGVzU2hvd2luZ0dyaWRMYXlvdXRPdmVybGF5LmFkZChldmVudC50YXJnZXQpOwogCiAgICAgICAg
IGlmICghdGhpcy5fZXZlbnRTYW1wbGluZ1RpbWVySWRlbnRpZmllcikKICAgICAgICAgICAgIHRo
aXMuX3N0YXJ0RXZlbnRTYW1wbGluZ1RpbWVyKCk7CiAgICAgfQogCi0gICAgX2hhbmRsZUdyaWRP
dmVybGF5SGlkZGVuKCkKKyAgICBfaGFuZGxlR3JpZE92ZXJsYXlIaWRkZW4oZXZlbnQpCiAgICAg
ewotICAgICAgICBpZiAoV0kub3ZlcmxheU1hbmFnZXIuaGFzVmlzaWJsZUdyaWRPdmVybGF5cygp
KQorICAgICAgICB0aGlzLl9ub2Rlc1Nob3dpbmdHcmlkTGF5b3V0T3ZlcmxheS5kZWxldGUoZXZl
bnQudGFyZ2V0KTsKKworICAgICAgICBpZiAodGhpcy5fbm9kZXNTaG93aW5nR3JpZExheW91dE92
ZXJsYXkuc2l6ZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zdG9wRXZl
bnRTYW1wbGluZ1RpbWVySWZOZWVkZWQoKTsKLSAgICAgICAgdGhpcy5fb3ZlcmxheU9wdGlvbnMg
PSB7fTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTE1MCw3ICsxNDcsMTEgQEAgV0kuR3Jp
ZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIgPSBjbGFzcyBHcmlk
T3ZlcmxheUNvbmZpZ3VyYXQKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBsZXQgaW50
ZXJ2YWwgPSBXSS5HcmlkT3ZlcmxheUNvbmZpZ3VyYXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRl
ci5ldmVudFNhbXBsaW5nSW50ZXJ2YWwgLyAxMDAwOwotICAgICAgICBsZXQge3Nob3dUcmFja1Np
emVzLCBzaG93TGluZU51bWJlcnMsIHNob3dMaW5lTmFtZXMsIHNob3dBcmVhTmFtZXMsIHNob3dF
eHRlbmRlZEdyaWRMaW5lc30gPSB0aGlzLl9vdmVybGF5T3B0aW9uczsKKyAgICAgICAgbGV0IHNo
b3dMaW5lTmFtZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dMaW5lTmFtZXMudmFsdWU7
CisgICAgICAgIGxldCBzaG93TGluZU51bWJlcnMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNo
b3dMaW5lTnVtYmVycy52YWx1ZTsKKyAgICAgICAgbGV0IHNob3dFeHRlbmRlZEdyaWRMaW5lcyA9
IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0V4dGVuZGVkR3JpZExpbmVzLnZhbHVlOworICAg
ICAgICBsZXQgc2hvd1RyYWNrU2l6ZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dUcmFj
a1NpemVzLnZhbHVlOworICAgICAgICBsZXQgc2hvd0FyZWFOYW1lcyA9IFdJLnNldHRpbmdzLmdy
aWRPdmVybGF5U2hvd0FyZWFOYW1lcy52YWx1ZTsKIAogICAgICAgICAvLyBFbmNvZGUgdGhlIGNv
bmZpZ3VyYXRpb24gb2Ygb3ZlcmxheSBvcHRpb25zIGFzIGEgc3VtIG9mIGluY3JlYXNpbmcgcG93
ZXJzIG9mIDEwIGZvciBlYWNoIG92ZXJsYXkgb3B0aW9uIHRoYXQgaXMgZW5hYmxlZCAoemVybyBp
ZiBkaXNhYmxlZCksIGNvbnZlcnQgdG8gc3RyaW5nIGFuZCBwYWQgd2l0aCB6ZXJvIGlmIG5lY2Vz
c2FyeS4KICAgICAgICAgLy8gRm9yIGV4YW1wbGUsICIwMTEwMCIgPSBzaG93VHJhY2tTaXplczog
ZmFsc2UsIHNob3dMaW5lTnVtYmVyczogdHJ1ZSwgc2hvd0xpbmVOYW1lczogdHJ1ZSwgc2hvd0Fy
ZWFOYW1lczogZmFsc2UsIHNob3dFeHRlbmRlZEdyaWRMaW5lczogZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9HcmlkT3Zl
cmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRl
ci5qcwppbmRleCBmZmY5NTk0NWI4MDUyNDhhODU0Njg4OGUwZTczZDRkZDhmYzBkOWUwLi4xZWE2
ZDQxNTNhMjQ5MzY3OGFjMGU5ZTliYWFlYmM3ODdhNjQzMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9HcmlkT3ZlcmxheURpYWdu
b3N0aWNFdmVudFJlY29yZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0dyaWRPdmVybGF5RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuanMK
QEAgLTI4LDM4ICsyOCwzOCBAQCBXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVy
ID0gY2xhc3MgR3JpZE92ZXJsYXlEaWFnbm9zdGljRXZlbnRSZWNvcmRlcgogICAgIGNvbnN0cnVj
dG9yKGNvbnRyb2xsZXIpCiAgICAgewogICAgICAgICBzdXBlcigiR3JpZE92ZXJsYXkiLCBjb250
cm9sbGVyKTsKLQotICAgICAgICB0aGlzLl9pbml0aWF0b3JzID0gT2JqZWN0LnZhbHVlcyhXSS5H
cmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLkluaXRpYXRvcik7CiAgICAgfQogCiAg
ICAgLy8gUHJvdGVjdGVkCiAKICAgICBzZXR1cCgpCiAgICAgewotICAgICAgICBXSS5vdmVybGF5
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlT
aG93biwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlTaG93biwgdGhpcyk7CisgICAgICAgIFdJLkRP
TU5vZGUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkxheW91dE92ZXJsYXlTaG93
biwgdGhpcy5faGFuZGxlR3JpZE92ZXJsYXlTaG93biwgdGhpcyk7CiAgICAgfQogCiAgICAgdGVh
cmRvd24oKQogICAgIHsKLSAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0
ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdy
aWRPdmVybGF5U2hvd24sIHRoaXMpOworICAgICAgICBXSS5ET01Ob2RlLnJlbW92ZUV2ZW50TGlz
dGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRPdmVybGF5U2hvd24sIHRoaXMuX2hhbmRsZUdy
aWRPdmVybGF5U2hvd24sIHRoaXMpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAogICAgIF9o
YW5kbGVHcmlkT3ZlcmxheVNob3duKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKGV2ZW50LmRh
dGEuZG9tTm9kZS5sYXlvdXRDb250ZXh0VHlwZSAhPT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0
VHlwZS5HcmlkKQorICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmxheW91dENvbnRleHRUeXBlICE9
PSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgbGV0IGluaXRpYXRvciA9IGV2ZW50LmRhdGEuaW5pdGlhdG9yOwotICAgICAg
ICBpZiAoIWluaXRpYXRvciB8fCAhdGhpcy5faW5pdGlhdG9ycy5pbmNsdWRlcyhpbml0aWF0b3Ip
KQorICAgICAgICBsZXQge2luaXRpYXRvcn0gPSBldmVudC5kYXRhOworICAgICAgICBpZiAoIWlu
aXRpYXRvcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgc2hvd1RyYWNrU2l6
ZXMgPSBldmVudC5kYXRhLnNob3dUcmFja1NpemVzID8gMSA6IDA7Ci0gICAgICAgIGxldCBzaG93
TGluZU51bWJlcnMgPSBldmVudC5kYXRhLnNob3dMaW5lTnVtYmVycyA/IDEgOiAwOwotICAgICAg
ICBsZXQgc2hvd0xpbmVOYW1lcyA9IGV2ZW50LmRhdGEuc2hvd0xpbmVOYW1lcyA/IDEgOiAwOwot
ICAgICAgICBsZXQgc2hvd0FyZWFOYW1lcyA9IGV2ZW50LmRhdGEuc2hvd0FyZWFOYW1lcyA/IDEg
OiAwOwotICAgICAgICBsZXQgc2hvd0V4dGVuZGVkR3JpZExpbmVzID0gZXZlbnQuZGF0YS5zaG93
RXh0ZW5kZWRHcmlkTGluZXMgPyAxIDogMDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoT2JqZWN0
LnZhbHVlcyhXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLkluaXRpYXRvciku
aW5jbHVkZXMoaW5pdGlhdG9yKSwgaW5pdGlhdG9yKTsKKworICAgICAgICBsZXQgc2hvd1RyYWNr
U2l6ZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dUcmFja1NpemVzLnZhbHVlID8gMSA6
IDA7CisgICAgICAgIGxldCBzaG93TGluZU51bWJlcnMgPSBXSS5zZXR0aW5ncy5ncmlkT3Zlcmxh
eVNob3dMaW5lTnVtYmVycy52YWx1ZSA/IDEgOiAwOworICAgICAgICBsZXQgc2hvd0xpbmVOYW1l
cyA9IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0xpbmVOYW1lcy52YWx1ZSA/IDEgOiAwOwor
ICAgICAgICBsZXQgc2hvd0FyZWFOYW1lcyA9IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0Fy
ZWFOYW1lcy52YWx1ZSA/IDEgOiAwOworICAgICAgICBsZXQgc2hvd0V4dGVuZGVkR3JpZExpbmVz
ID0gV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93RXh0ZW5kZWRHcmlkTGluZXMudmFsdWUgPyAx
IDogMDsKIAogICAgICAgICB0aGlzLmxvZ0RpYWdub3N0aWNFdmVudCh0aGlzLm5hbWUsIHtpbml0
aWF0b3IsIHNob3dUcmFja1NpemVzLCBzaG93TGluZU51bWJlcnMsIHNob3dMaW5lTmFtZXMsIHNo
b3dBcmVhTmFtZXMsIHNob3dFeHRlbmRlZEdyaWRMaW5lc30pOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL092ZXJsYXlN
YW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvT3ZlcmxheU1hbmFnZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3OGUx
ZmE3MWIwZGExNGIwOTdiNzBkYTYzYTUxMTI0Njk4MjkyNWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvT3ZlcmxheU1hbmFnZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSwy
MzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdJLk92ZXJsYXlNYW5hZ2VyID0gY2xhc3MgT3Zlcmxh
eU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKLXsKLSAgICBjb25zdHJ1Y3RvcigpCi0gICAgewot
ICAgICAgICBzdXBlcigpOwotCi0gICAgICAgIHRoaXMuX292ZXJsYXlGb3JOb2RlTWFwID0gbmV3
IE1hcDsKLSAgICAgICAgdGhpcy5fbmV4dERlZmF1bHRHcmlkQ29sb3JJbmRleCA9IDA7Ci0gICAg
ICAgIHRoaXMuX25leHREZWZhdWx0RmxleENvbG9ySW5kZXggPSAwOwotICAgICAgICB0aGlzLl9j
b2xvckZvck5vZGVNYXAgPSBuZXcgV2Vha01hcDsKLSAgICAgICAgdGhpcy5fY29sb3JTZXR0aW5n
Rm9yTm9kZU1hcCA9IG5ldyBXZWFrTWFwOwotCi0gICAgICAgIFdJLnNldHRpbmdzLmdyaWRPdmVy
bGF5U2hvd0V4dGVuZGVkR3JpZExpbmVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVu
dC5DaGFuZ2VkLCB0aGlzLl9oYW5kbGVHcmlkU2V0dGluZ0NoYW5nZWQsIHRoaXMpOwotICAgICAg
ICBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dMaW5lTmFtZXMuYWRkRXZlbnRMaXN0ZW5lcihX
SS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX2hhbmRsZUdyaWRTZXR0aW5nQ2hhbmdlZCwg
dGhpcyk7Ci0gICAgICAgIFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0xpbmVOdW1iZXJzLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9oYW5kbGVHcmlk
U2V0dGluZ0NoYW5nZWQsIHRoaXMpOwotICAgICAgICBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNo
b3dUcmFja1NpemVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0
aGlzLl9oYW5kbGVHcmlkU2V0dGluZ0NoYW5nZWQsIHRoaXMpOwotICAgICAgICBXSS5zZXR0aW5n
cy5ncmlkT3ZlcmxheVNob3dBcmVhTmFtZXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2
ZW50LkNoYW5nZWQsIHRoaXMuX2hhbmRsZUdyaWRTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7Ci0gICAg
ICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNl
RGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVNYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwotICAg
IH0KLQotICAgIC8vIFB1YmxpYwotCi0gICAgc2hvd092ZXJsYXkoZG9tTm9kZSwge2NvbG9yLCBp
bml0aWF0b3J9ID0ge30pCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghZG9tTm9kZS5k
ZXN0cm95ZWQsIGRvbU5vZGUpOwotICAgICAgICBpZiAoZG9tTm9kZS5kZXN0cm95ZWQpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tTm9kZSBpbnN0YW5j
ZW9mIFdJLkRPTU5vZGUsIGRvbU5vZGUpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghY29sb3Ig
fHwgY29sb3IgaW5zdGFuY2VvZiBXSS5Db2xvciwgY29sb3IpOwotICAgICAgICBjb25zb2xlLmFz
c2VydChPYmplY3QudmFsdWVzKFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUpLmluY2x1ZGVz
KGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUpLCBkb21Ob2RlKTsKLQotICAgICAgICBjb2xvciB8
fD0gdGhpcy5nZXRDb2xvckZvck5vZGUoZG9tTm9kZSk7Ci0gICAgICAgIGxldCB0YXJnZXQgPSBX
SS5hc3N1bWluZ01haW5UYXJnZXQoKTsKLSAgICAgICAgbGV0IGNvbW1hbmRBcmd1bWVudHMgPSB7
bm9kZUlkOiBkb21Ob2RlLmlkfTsKLQotICAgICAgICBzd2l0Y2ggKGRvbU5vZGUubGF5b3V0Q29u
dGV4dFR5cGUpIHsKLSAgICAgICAgY2FzZSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdy
aWQ6Ci0gICAgICAgICAgICBjb21tYW5kQXJndW1lbnRzLmdyaWRDb2xvciA9IGNvbG9yLnRvUHJv
dG9jb2woKTsKLSAgICAgICAgICAgIGNvbW1hbmRBcmd1bWVudHMuc2hvd0xpbmVOYW1lcyA9IFdJ
LnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0xpbmVOYW1lcy52YWx1ZTsKLSAgICAgICAgICAgIGNv
bW1hbmRBcmd1bWVudHMuc2hvd0xpbmVOdW1iZXJzID0gV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlT
aG93TGluZU51bWJlcnMudmFsdWU7Ci0gICAgICAgICAgICBjb21tYW5kQXJndW1lbnRzLnNob3dF
eHRlbmRlZEdyaWRMaW5lcyA9IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0V4dGVuZGVkR3Jp
ZExpbmVzLnZhbHVlOwotICAgICAgICAgICAgY29tbWFuZEFyZ3VtZW50cy5zaG93VHJhY2tTaXpl
cyA9IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd1RyYWNrU2l6ZXMudmFsdWU7Ci0gICAgICAg
ICAgICBjb21tYW5kQXJndW1lbnRzLnNob3dBcmVhTmFtZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3Zl
cmxheVNob3dBcmVhTmFtZXMudmFsdWU7Ci0gICAgICAgICAgICB0YXJnZXQuRE9NQWdlbnQuc2hv
d0dyaWRPdmVybGF5Lmludm9rZShjb21tYW5kQXJndW1lbnRzKTsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5GbGV4OgotICAg
ICAgICAgICAgY29tbWFuZEFyZ3VtZW50cy5mbGV4Q29sb3IgPSBjb2xvci50b1Byb3RvY29sKCk7
Ci0gICAgICAgICAgICB0YXJnZXQuRE9NQWdlbnQuc2hvd0ZsZXhPdmVybGF5Lmludm9rZShjb21t
YW5kQXJndW1lbnRzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAg
bGV0IG92ZXJsYXkgPSB7ZG9tTm9kZSwgLi4uY29tbWFuZEFyZ3VtZW50cywgaW5pdGlhdG9yfTsK
LQotICAgICAgICAvLyBUaGUgbWV0aG9kIHRvIHNob3cgdGhlIG92ZXJsYXkgd2lsbCBiZSBjYWxs
ZWQgcmVwZWF0ZWRseSB3aGlsZSB1cGRhdGluZyB0aGUgZ3JpZCBvdmVybGF5IGNvbG9yLiBBdm9p
ZCBhZGRpbmcgZHVwbGljYXRlIGV2ZW50IGxpc3RlbmVycwotICAgICAgICBpZiAoIXRoaXMuX292
ZXJsYXlGb3JOb2RlTWFwLmhhcyhkb21Ob2RlKSkKLSAgICAgICAgICAgIGRvbU5vZGUuYWRkRXZl
bnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhp
cy5faGFuZGxlTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzKTsKLQotICAgICAgICB0aGlz
Ll9vdmVybGF5Rm9yTm9kZU1hcC5zZXQoZG9tTm9kZSwgb3ZlcmxheSk7Ci0KLSAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3Zlcmxh
eVNob3duLCBvdmVybGF5KTsKLSAgICB9Ci0KLSAgICBoaWRlT3ZlcmxheShkb21Ob2RlKQotICAg
IHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tTm9kZSBpbnN0YW5jZW9mIFdJLkRPTU5vZGUs
IGRvbU5vZGUpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghZG9tTm9kZS5kZXN0cm95ZWQsIGRv
bU5vZGUpOwotICAgICAgICBjb25zb2xlLmFzc2VydChPYmplY3QudmFsdWVzKFdJLkRPTU5vZGUu
TGF5b3V0Q29udGV4dFR5cGUpLmluY2x1ZGVzKGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUpLCBk
b21Ob2RlKTsKLSAgICAgICAgaWYgKGRvbU5vZGUuZGVzdHJveWVkKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGxldCBvdmVybGF5ID0gdGhpcy5fb3ZlcmxheUZvck5vZGVNYXAudGFr
ZShkb21Ob2RlKTsKLSAgICAgICAgaWYgKCFvdmVybGF5KQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKLQotICAgICAg
ICBzd2l0Y2ggKGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUpIHsKLSAgICAgICAgY2FzZSBXSS5E
T01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQ6Ci0gICAgICAgICAgICB0YXJnZXQuRE9NQWdl
bnQuaGlkZUdyaWRPdmVybGF5KGRvbU5vZGUuaWQpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBXSS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkZsZXg6Ci0gICAgICAgICAg
ICB0YXJnZXQuRE9NQWdlbnQuaGlkZUZsZXhPdmVybGF5KGRvbU5vZGUuaWQpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBkb21Ob2RlLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQsIHRoaXMuX2hhbmRs
ZUxheW91dENvbnRleHRUeXBlQ2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlIaWRkZW4sIG92
ZXJsYXkpOwotICAgIH0KLQotICAgIGhhc1Zpc2libGVHcmlkT3ZlcmxheXMoKQotICAgIHsKLSAg
ICAgICAgZm9yIChsZXQgZG9tTm9kZSBvZiB0aGlzLl9vdmVybGF5Rm9yTm9kZU1hcC5rZXlzKCkp
IHsKLSAgICAgICAgICAgIGlmIChkb21Ob2RlLmxheW91dENvbnRleHRUeXBlID09PSBXSS5ET01O
b2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGhhc1Zpc2li
bGVPdmVybGF5KGRvbU5vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheUZv
ck5vZGVNYXAuaGFzKGRvbU5vZGUpOwotICAgIH0KLQotICAgIHRvZ2dsZU92ZXJsYXkoZG9tTm9k
ZSwgb3B0aW9ucykKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmhhc1Zpc2libGVPdmVybGF5KGRv
bU5vZGUpKQotICAgICAgICAgICAgdGhpcy5oaWRlT3ZlcmxheShkb21Ob2RlKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgdGhpcy5zaG93T3ZlcmxheShkb21Ob2RlLCBvcHRpb25zKTsKLSAg
ICB9Ci0KLSAgICBnZXRDb2xvckZvck5vZGUoZG9tTm9kZSkKLSAgICB7Ci0gICAgICAgIGxldCBj
b2xvciA9IHRoaXMuX2NvbG9yRm9yTm9kZU1hcC5nZXQoZG9tTm9kZSk7Ci0gICAgICAgIGlmIChj
b2xvcikKLSAgICAgICAgICAgIHJldHVybiBjb2xvcjsKLQotICAgICAgICBsZXQgY29sb3JTZXR0
aW5nID0gdGhpcy5fY29sb3JTZXR0aW5nRm9yTm9kZU1hcC5nZXQoZG9tTm9kZSk7Ci0gICAgICAg
IGlmICghY29sb3JTZXR0aW5nKSB7Ci0gICAgICAgICAgICBsZXQgbmV4dENvbG9ySW5kZXg7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGRvbU5vZGUubGF5b3V0Q29udGV4dFR5cGUpIHsKLSAgICAgICAg
ICAgIGNhc2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkOgotICAgICAgICAgICAg
ICAgIG5leHRDb2xvckluZGV4ID0gdGhpcy5fbmV4dERlZmF1bHRHcmlkQ29sb3JJbmRleDsKLSAg
ICAgICAgICAgICAgICB0aGlzLl9uZXh0RGVmYXVsdEdyaWRDb2xvckluZGV4ID0gKG5leHRDb2xv
ckluZGV4ICsgMSkgJSBXSS5PdmVybGF5TWFuYWdlci5fZGVmYXVsdEhTTENvbG9ycy5sZW5ndGg7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgV0kuRE9NTm9kZS5M
YXlvdXRDb250ZXh0VHlwZS5GbGV4OgotICAgICAgICAgICAgICAgIG5leHRDb2xvckluZGV4ID0g
dGhpcy5fbmV4dERlZmF1bHRGbGV4Q29sb3JJbmRleDsKLSAgICAgICAgICAgICAgICB0aGlzLl9u
ZXh0RGVmYXVsdEZsZXhDb2xvckluZGV4ID0gKG5leHRDb2xvckluZGV4ICsgMSkgJSBXSS5PdmVy
bGF5TWFuYWdlci5fZGVmYXVsdEhTTENvbG9ycy5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBsZXQgZGVmYXVsdENvbG9yID0gV0kuT3Zl
cmxheU1hbmFnZXIuX2RlZmF1bHRIU0xDb2xvcnNbbmV4dENvbG9ySW5kZXhdOwotCi0gICAgICAg
ICAgICBsZXQgdXJsID0gZG9tTm9kZS5vd25lckRvY3VtZW50LmRvY3VtZW50VVJMIHx8IFdJLm5l
dHdvcmtNYW5hZ2VyLm1haW5GcmFtZS51cmw7Ci0gICAgICAgICAgICBjb2xvclNldHRpbmcgPSBu
ZXcgV0kuU2V0dGluZyhgb3ZlcmxheS1jb2xvci0ke3VybC5oYXNofS0ke2RvbU5vZGUucGF0aCgp
Lmhhc2h9YCwgZGVmYXVsdENvbG9yKTsKLSAgICAgICAgICAgIHRoaXMuX2NvbG9yU2V0dGluZ0Zv
ck5vZGVNYXAuc2V0KGRvbU5vZGUsIGNvbG9yU2V0dGluZyk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjb2xvciA9IG5ldyBXSS5Db2xvcihXSS5Db2xvci5Gb3JtYXQuSFNMLCBjb2xvclNldHRpbmcu
dmFsdWUpOwotICAgICAgICB0aGlzLl9jb2xvckZvck5vZGVNYXAuc2V0KGRvbU5vZGUsIGNvbG9y
KTsKLQotICAgICAgICByZXR1cm4gY29sb3I7Ci0gICAgfQotCi0gICAgc2V0Q29sb3JGb3JOb2Rl
KGRvbU5vZGUsIGNvbG9yKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tTm9kZSBp
bnN0YW5jZW9mIFdJLkRPTU5vZGUsIGRvbU5vZGUpOwotICAgICAgICBjb25zb2xlLmFzc2VydChj
b2xvciBpbnN0YW5jZW9mIFdJLkNvbG9yLCBjb2xvcik7Ci0KLSAgICAgICAgbGV0IGNvbG9yU2V0
dGluZyA9IHRoaXMuX2NvbG9yU2V0dGluZ0Zvck5vZGVNYXAuZ2V0KGRvbU5vZGUpOwotICAgICAg
ICBjb25zb2xlLmFzc2VydChjb2xvclNldHRpbmcsICJUaGVyZSBzaG91bGQgYWxyZWFkeSBiZSBh
IHNldHRpbmcgY3JlYXRlZCBmb3JtIGEgcHJldmlvdXMgY2FsbCB0byBnZXRDb2xvckZvck5vZGUo
KSIpOwotICAgICAgICBjb2xvclNldHRpbmcudmFsdWUgPSBjb2xvci5oc2w7Ci0KLSAgICAgICAg
dGhpcy5fY29sb3JGb3JOb2RlTWFwLnNldChkb21Ob2RlLCBjb2xvcik7Ci0gICAgfQotCi0gICAg
Ly8gUHJpdmF0ZQotCi0gICAgX2hhbmRsZUxheW91dENvbnRleHRUeXBlQ2hhbmdlZChldmVudCkK
LSAgICB7Ci0gICAgICAgIGxldCBkb21Ob2RlID0gZXZlbnQudGFyZ2V0OwotCi0gICAgICAgIGRv
bU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkxheW91dENvbnRleHRU
eXBlQ2hhbmdlZCwgdGhpcy5faGFuZGxlTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzKTsK
LQotICAgICAgICAvLyBXaGVuIHRoZSBjb250ZXh0IHR5cGUgY2hhbmdlcywgdGhlIG92ZXJsYXkg
aXMgYXV0b21hdGljYWxseSBoaWRkZW4gb24gdGhlIGJhY2tlbmQgKGV2ZW4gaWYgaXQgY2hhbmdl
cyBmcm9tIEdyaWQgdG8gRmxleCwgb3IgdmljZS12ZXJzYSkuCi0gICAgICAgIC8vIEhlcmUsIHdl
IG9ubHkgdXBkYXRlIHRoZSBtYXAgYW5kIG5vdGlmeSBsaXN0ZW5lcnMuCi0gICAgICAgIGxldCBv
dmVybGF5ID0gdGhpcy5fb3ZlcmxheUZvck5vZGVNYXAudGFrZShkb21Ob2RlKTsKLSAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3Zl
cmxheUhpZGRlbiwgb3ZlcmxheSk7Ci0gICAgfQotCi0gICAgX2hhbmRsZUdyaWRTZXR0aW5nQ2hh
bmdlZChldmVudCkKLSAgICB7Ci0gICAgICAgIGZvciAobGV0IFtkb21Ob2RlLCBvdmVybGF5XSBv
ZiB0aGlzLl9vdmVybGF5Rm9yTm9kZU1hcCkgewotICAgICAgICAgICAgaWYgKGRvbU5vZGUubGF5
b3V0Q29udGV4dFR5cGUgPT09IFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZCkKLSAg
ICAgICAgICAgICAgICB0aGlzLnNob3dPdmVybGF5KGRvbU5vZGUsIHtjb2xvcjogb3ZlcmxheS5j
b2xvciwgaW5pdGlhdG9yOiBvdmVybGF5LmluaXRpYXRvcn0pOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgX2hhbmRsZU1haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKLSAgICB7Ci0gICAgICAg
IC8vIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc2NlbmFyaW86Ci0gICAgICAgIC8vIDEuIENsaWNr
IG9uIHRoZSBiYWRnZSBvZiBhbiBlbGVtZW50IHdpdGggYGRpc3BsYXk6IGdyaWRgLiBUaGUgMXN0
IG92ZXJsYXkgY29sb3IgaXMgdXNlZC4KLSAgICAgICAgLy8gMi4gUmVsb2FkIHRoZSB3ZWJwYWdl
LgotICAgICAgICAvLyAzLiBDbGljayBvbiB0aGUgYmFkZ2Ugb2YgdGhlIHNhbWUgZWxlbWVudC4K
LSAgICAgICAgLy8KLSAgICAgICAgLy8gV2Ugc2hvdWxkIHNlZSB0aGUgc2FtZSAxc3QgZGVmYXVs
dCBvdmVybGF5IGNvbG9yLiBJZiB3ZSBkb24ndCByZXNldCBfbmV4dERlZmF1bHRHcmlkQ29sb3JJ
bmRleCwKLSAgICAgICAgLy8gdGhlIDJuZCBkZWZhdWx0IGNvbG9yIHdvdWxkIGJlIHVzZWQgaW5z
dGVhZC4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gYGRvbU5vZGUuaWRgIGlzIGRpZmZlcmVudCBm
b3IgdGhlIHNhbWUgRE9NIGVsZW1lbnQgYWZ0ZXIgcGFnZSByZWxvYWQuCi0gICAgICAgIHRoaXMu
X25leHREZWZhdWx0R3JpZENvbG9ySW5kZXggPSAwOwotICAgICAgICB0aGlzLl9uZXh0RGVmYXVs
dEZsZXhDb2xvckluZGV4ID0gMDsKLSAgICB9Ci19OwotCi1XSS5PdmVybGF5TWFuYWdlci5fZGVm
YXVsdEhTTENvbG9ycyA9IFsKLSAgICBbMzI5LCA5MSwgNzBdLAotICAgIFsyMDcsIDk2LCA2OV0s
Ci0gICAgWzkyLCA5MCwgNjRdLAotICAgIFsyOTEsIDczLCA2OF0sCi0gICAgWzQwLCA5NywgNTdd
LAotXTsKLQotV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQgPSB7Ci0gICAgT3ZlcmxheVNob3duOiAi
b3ZlcmxheS1tYW5hZ2VyLW92ZXJsYXktc2hvd24iLAotICAgIE92ZXJsYXlIaWRkZW46ICJvdmVy
bGF5LW1hbmFnZXItb3ZlcmxheS1oaWRkZW4iLAotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBmMGQyYjk4OWU0NzZiM2NmZjE0MzA1MDFm
MGM3MTczMzIyM2NiZTkwLi5lNDA4ZDJkNjQwYjA2YTkyODAyOWQ0ZmJlZDgyOTc3OTMzZDZkMmRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBA
IC05MzQsNyArOTM0LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvTGF5ZXJUcmVl
TWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL01lbW9y
eU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9OZXR3
b3JrTWFuYWdlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL092
ZXJsYXlNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMv
Q1NTUXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJv
bGxlcnMvUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJDb250cm9sbGVycy9SdW50aW1lTWFuYWdlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzCmlu
ZGV4IDE5ZmIwMjJjMDZlN2JjZmUyYzZlYzkzNGVjMDg3MmQ0OWE3MThkMWEuLmViOTc0Yjg2YjNi
ZWMxNGFmM2RmZjQyZTY2NTE0ZTg1Y2JhMGYwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzCkBAIC01Myw2ICs1Myw4
IEBAIFdJLkRPTU5vZGUgPSBjbGFzcyBET01Ob2RlIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IHRoaXMuX2NvbXB1dGVkUm9sZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRTZWN1cml0
eVBvbGljeUhhc2ggPSBwYXlsb2FkLmNvbnRlbnRTZWN1cml0eVBvbGljeUhhc2g7CiAgICAgICAg
IHRoaXMuX2xheW91dENvbnRleHRUeXBlID0gbnVsbDsKKyAgICAgICAgdGhpcy5fbGF5b3V0T3Zl
cmxheVNob3dpbmcgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fbGF5b3V0T3ZlcmxheUNvbG9yU2V0
dGluZyA9IG51bGw7CiAKICAgICAgICAgaWYgKHRoaXMuX25vZGVUeXBlID09PSBOb2RlLkRPQ1VN
RU5UX05PREUpCiAgICAgICAgICAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSB0aGlzOwpAQCAtMTYx
LDYgKzE2MywxMyBAQCBXSS5ET01Ob2RlID0gY2xhc3MgRE9NTm9kZSBleHRlbmRzIFdJLk9iamVj
dAogCiAgICAgLy8gU3RhdGljCiAKKyAgICBzdGF0aWMgcmVzZXREZWZhdWx0TGF5b3V0T3Zlcmxh
eUNvbmZpZ3VyYXRpb24oKQorICAgIHsKKyAgICAgICAgbGV0IGNvbmZpZ3VyYXRpb24gPSBXSS5E
T01Ob2RlLl9kZWZhdWx0TGF5b3V0T3ZlcmxheUNvbmZpZ3VyYXRpb247CisgICAgICAgIGNvbmZp
Z3VyYXRpb24ubmV4dEZsZXhDb2xvckluZGV4ID0gMDsKKyAgICAgICAgY29uZmlndXJhdGlvbi5u
ZXh0R3JpZENvbG9ySW5kZXggPSAwOworICAgIH0KKwogICAgIHN0YXRpYyBnZXRGdWxsc2NyZWVu
RE9NRXZlbnRzKGRvbUV2ZW50cykKICAgICB7CiAgICAgICAgIHJldHVybiBkb21FdmVudHMucmVk
dWNlKChhY2N1bXVsYXRvciwgY3VycmVudCkgPT4gewpAQCAtMTk5LDYgKzIwOCw3IEBAIFdJLkRP
TU5vZGUgPSBjbGFzcyBET01Ob2RlIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgZ2V0IGNoaWxkcmVu
KCkgeyByZXR1cm4gdGhpcy5fY2hpbGRyZW47IH0KICAgICBnZXQgZG9tRXZlbnRzKCkgeyByZXR1
cm4gdGhpcy5fZG9tRXZlbnRzOyB9CiAgICAgZ2V0IHBvd2VyRWZmaWNpZW50UGxheWJhY2tSYW5n
ZXMoKSB7IHJldHVybiB0aGlzLl9wb3dlckVmZmljaWVudFBsYXliYWNrUmFuZ2VzOyB9CisgICAg
Z2V0IGxheW91dE92ZXJsYXlTaG93aW5nKCkgeyByZXR1cm4gdGhpcy5fbGF5b3V0T3ZlcmxheVNo
b3dpbmc7IH0KIAogICAgIGdldCBhdHRhY2hlZCgpCiAgICAgewpAQCAtMjU3LDggKzI2NywyNiBA
QCBXSS5ET01Ob2RlID0gY2xhc3MgRE9NTm9kZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBp
ZiAobGF5b3V0Q29udGV4dFR5cGUgPT09IHRoaXMuX2xheW91dENvbnRleHRUeXBlKQogICAgICAg
ICAgICAgcmV0dXJuOwogCisgICAgICAgIGxldCBvbGRMYXlvdXRDb250ZXh0VHlwZSA9IHRoaXMu
X2xheW91dENvbnRleHRUeXBlOwogICAgICAgICB0aGlzLl9sYXlvdXRDb250ZXh0VHlwZSA9IGxh
eW91dENvbnRleHRUeXBlOworCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2VkKTsKKworICAgICAgICBp
ZiAoIXRoaXMuX2xheW91dE92ZXJsYXlTaG93aW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIC8vIFRoZSBvdmVybGF5IGlzIGF1dG9tYXRpY2FsbHkgaGlkZGVuIG9uIHRoZSBiYWNr
ZW5kIHdoZW4gdGhlIGNvbnRleHQgdHlwZSBjaGFuZ2VzLgorICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXSS5ET01Ob2RlLkV2ZW50LkxheW91dE92ZXJsYXlIaWRkZW4pOwor
CisgICAgICAgIHN3aXRjaCAob2xkTGF5b3V0Q29udGV4dFR5cGUpIHsKKyAgICAgICAgY2FzZSBX
SS5ET01Ob2RlLkxheW91dENvbnRleHRUeXBlLkdyaWQ6CisgICAgICAgICAgICBXSS5zZXR0aW5n
cy5ncmlkT3ZlcmxheVNob3dFeHRlbmRlZEdyaWRMaW5lcy5yZW1vdmVFdmVudExpc3RlbmVyKFdJ
LlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5faGFuZGxlR3JpZExheW91dE92ZXJsYXlTZXR0
aW5nQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgICAgICBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNo
b3dMaW5lTmFtZXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQs
IHRoaXMuX2hhbmRsZUdyaWRMYXlvdXRPdmVybGF5U2V0dGluZ0NoYW5nZWQsIHRoaXMpOworICAg
ICAgICAgICAgV0kuc2V0dGluZ3MuZ3JpZE92ZXJsYXlTaG93TGluZU51bWJlcnMucmVtb3ZlRXZl
bnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX2hhbmRsZUdyaWRMYXlv
dXRPdmVybGF5U2V0dGluZ0NoYW5nZWQsIHRoaXMpOworICAgICAgICAgICAgV0kuc2V0dGluZ3Mu
Z3JpZE92ZXJsYXlTaG93VHJhY2tTaXplcy5yZW1vdmVFdmVudExpc3RlbmVyKFdJLlNldHRpbmcu
RXZlbnQuQ2hhbmdlZCwgdGhpcy5faGFuZGxlR3JpZExheW91dE92ZXJsYXlTZXR0aW5nQ2hhbmdl
ZCwgdGhpcyk7CisgICAgICAgICAgICBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dBcmVhTmFt
ZXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX2hh
bmRsZUdyaWRMYXlvdXRPdmVybGF5U2V0dGluZ0NoYW5nZWQsIHRoaXMpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICB9CiAKICAgICBtYXJrRGVzdHJveWVkKCkKQEAgLTU3NCw2
ICs2MDIsMTA1IEBAIFdJLkRPTU5vZGUgPSBjbGFzcyBET01Ob2RlIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgIHRhcmdldC5ET01BZ2VudC5oaWdobGlnaHROb2RlKFdJLkRPTU1hbmFnZXIuYnVp
bGRIaWdobGlnaHRDb25maWcobW9kZSksIHRoaXMuaWQpOwogICAgIH0KIAorICAgIHNob3dMYXlv
dXRPdmVybGF5KHtjb2xvciwgaW5pdGlhdG9yfSA9IHt9KQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoIXRoaXMuX2Rlc3Ryb3llZCwgdGhpcyk7CisgICAgICAgIGlmICh0aGlzLl9kZXN0
cm95ZWQpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIkVSUk9SOiBub2RlIGlz
IGRlc3Ryb3llZCIpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KE9iamVjdC52YWx1ZXMoV0ku
RE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZSkuaW5jbHVkZXModGhpcy5fbGF5b3V0Q29udGV4dFR5
cGUpLCB0aGlzKTsKKworICAgICAgICBjb25zb2xlLmFzc2VydCghY29sb3IgfHwgY29sb3IgaW5z
dGFuY2VvZiBXSS5Db2xvciwgY29sb3IpOworICAgICAgICBjb2xvciB8fD0gdGhpcy5sYXlvdXRP
dmVybGF5Q29sb3I7CisKKyAgICAgICAgbGV0IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdl
dCgpOworICAgICAgICBsZXQgYWdlbnRDb21tYW5kRnVuY3Rpb24gPSBudWxsOworICAgICAgICBs
ZXQgYWdlbnRDb21tYW5kQXJndW1lbnRzID0ge25vZGVJZDogdGhpcy5pZH07CisKKyAgICAgICAg
c3dpdGNoICh0aGlzLl9sYXlvdXRDb250ZXh0VHlwZSkgeworICAgICAgICBjYXNlIFdJLkRPTU5v
ZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZDoKKyAgICAgICAgICAgIGFnZW50Q29tbWFuZEFyZ3Vt
ZW50cy5ncmlkQ29sb3IgPSBjb2xvci50b1Byb3RvY29sKCk7CisgICAgICAgICAgICBhZ2VudENv
bW1hbmRBcmd1bWVudHMuc2hvd0xpbmVOYW1lcyA9IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hv
d0xpbmVOYW1lcy52YWx1ZTsKKyAgICAgICAgICAgIGFnZW50Q29tbWFuZEFyZ3VtZW50cy5zaG93
TGluZU51bWJlcnMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dMaW5lTnVtYmVycy52YWx1
ZTsKKyAgICAgICAgICAgIGFnZW50Q29tbWFuZEFyZ3VtZW50cy5zaG93RXh0ZW5kZWRHcmlkTGlu
ZXMgPSBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dFeHRlbmRlZEdyaWRMaW5lcy52YWx1ZTsK
KyAgICAgICAgICAgIGFnZW50Q29tbWFuZEFyZ3VtZW50cy5zaG93VHJhY2tTaXplcyA9IFdJLnNl
dHRpbmdzLmdyaWRPdmVybGF5U2hvd1RyYWNrU2l6ZXMudmFsdWU7CisgICAgICAgICAgICBhZ2Vu
dENvbW1hbmRBcmd1bWVudHMuc2hvd0FyZWFOYW1lcyA9IFdJLnNldHRpbmdzLmdyaWRPdmVybGF5
U2hvd0FyZWFOYW1lcy52YWx1ZTsKKyAgICAgICAgICAgIGFnZW50Q29tbWFuZEZ1bmN0aW9uID0g
dGFyZ2V0LkRPTUFnZW50LnNob3dHcmlkT3ZlcmxheTsKKworICAgICAgICAgICAgaWYgKCF0aGlz
Ll9sYXlvdXRPdmVybGF5U2hvd2luZykgeworICAgICAgICAgICAgICAgIFdJLnNldHRpbmdzLmdy
aWRPdmVybGF5U2hvd0V4dGVuZGVkR3JpZExpbmVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGlu
Zy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9oYW5kbGVHcmlkTGF5b3V0T3ZlcmxheVNldHRpbmdDaGFu
Z2VkLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dM
aW5lTmFtZXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMu
X2hhbmRsZUdyaWRMYXlvdXRPdmVybGF5U2V0dGluZ0NoYW5nZWQsIHRoaXMpOworICAgICAgICAg
ICAgICAgIFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0xpbmVOdW1iZXJzLmFkZEV2ZW50TGlz
dGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9oYW5kbGVHcmlkTGF5b3V0T3Zl
cmxheVNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBXSS5zZXR0aW5ncy5n
cmlkT3ZlcmxheVNob3dUcmFja1NpemVzLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVu
dC5DaGFuZ2VkLCB0aGlzLl9oYW5kbGVHcmlkTGF5b3V0T3ZlcmxheVNldHRpbmdDaGFuZ2VkLCB0
aGlzKTsKKyAgICAgICAgICAgICAgICBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dBcmVhTmFt
ZXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX2hhbmRs
ZUdyaWRMYXlvdXRPdmVybGF5U2V0dGluZ0NoYW5nZWQsIHRoaXMpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5ET01Ob2RlLkxheW91dENvbnRl
eHRUeXBlLkZsZXg6CisgICAgICAgICAgICBhZ2VudENvbW1hbmRBcmd1bWVudHMuZmxleENvbG9y
ID0gY29sb3IudG9Qcm90b2NvbCgpOworICAgICAgICAgICAgYWdlbnRDb21tYW5kRnVuY3Rpb24g
PSB0YXJnZXQuRE9NQWdlbnQuc2hvd0ZsZXhPdmVybGF5OworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgICAgICB0aGlzLl9sYXlvdXRPdmVybGF5U2hvd2luZyA9IHRydWU7CisK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTm9kZS5FdmVudC5M
YXlvdXRPdmVybGF5U2hvd24sIHtpbml0aWF0b3J9KTsKKworICAgICAgICBjb25zb2xlLmFzc2Vy
dChhZ2VudENvbW1hbmRGdW5jdGlvbik7CisgICAgICAgIHJldHVybiBhZ2VudENvbW1hbmRGdW5j
dGlvbi5pbnZva2UoYWdlbnRDb21tYW5kQXJndW1lbnRzKTsKKyAgICB9CisKKyAgICBoaWRlTGF5
b3V0T3ZlcmxheSgpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZGVzdHJv
eWVkLCB0aGlzKTsKKyAgICAgICAgaWYgKHRoaXMuX2Rlc3Ryb3llZCkKKyAgICAgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdCgiRVJST1I6IG5vZGUgaXMgZGVzdHJveWVkIik7CisKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoT2JqZWN0LnZhbHVlcyhXSS5ET01Ob2RlLkxheW91dENvbnRleHRU
eXBlKS5pbmNsdWRlcyh0aGlzLl9sYXlvdXRDb250ZXh0VHlwZSksIHRoaXMpOworCisgICAgICAg
IGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKKyAgICAgICAgbGV0IGFnZW50
Q29tbWFuZEZ1bmN0aW9uOworICAgICAgICBsZXQgYWdlbnRDb21tYW5kQXJndW1lbnRzID0ge25v
ZGVJZDogdGhpcy5pZH07CisKKyAgICAgICAgc3dpdGNoICh0aGlzLl9sYXlvdXRDb250ZXh0VHlw
ZSkgeworICAgICAgICBjYXNlIFdJLkRPTU5vZGUuTGF5b3V0Q29udGV4dFR5cGUuR3JpZDoKKyAg
ICAgICAgICAgIFdJLnNldHRpbmdzLmdyaWRPdmVybGF5U2hvd0V4dGVuZGVkR3JpZExpbmVzLnJl
bW92ZUV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9oYW5kbGVH
cmlkTGF5b3V0T3ZlcmxheVNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLnNl
dHRpbmdzLmdyaWRPdmVybGF5U2hvd0xpbmVOYW1lcy5yZW1vdmVFdmVudExpc3RlbmVyKFdJLlNl
dHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5faGFuZGxlR3JpZExheW91dE92ZXJsYXlTZXR0aW5n
Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgICAgICBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dM
aW5lTnVtYmVycy5yZW1vdmVFdmVudExpc3RlbmVyKFdJLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwg
dGhpcy5faGFuZGxlR3JpZExheW91dE92ZXJsYXlTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CisgICAg
ICAgICAgICBXSS5zZXR0aW5ncy5ncmlkT3ZlcmxheVNob3dUcmFja1NpemVzLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9oYW5kbGVHcmlkTGF5b3V0
T3ZlcmxheVNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLnNldHRpbmdzLmdy
aWRPdmVybGF5U2hvd0FyZWFOYW1lcy5yZW1vdmVFdmVudExpc3RlbmVyKFdJLlNldHRpbmcuRXZl
bnQuQ2hhbmdlZCwgdGhpcy5faGFuZGxlR3JpZExheW91dE92ZXJsYXlTZXR0aW5nQ2hhbmdlZCwg
dGhpcyk7CisKKyAgICAgICAgICAgIGFnZW50Q29tbWFuZEZ1bmN0aW9uID0gdGFyZ2V0LkRPTUFn
ZW50LmhpZGVHcmlkT3ZlcmxheTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
V0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5GbGV4OgorICAgICAgICAgICAgYWdlbnRDb21t
YW5kRnVuY3Rpb24gPSB0YXJnZXQuRE9NQWdlbnQuaGlkZUZsZXhPdmVybGF5OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9sYXlv
dXRPdmVybGF5U2hvd2luZywgdGhpcyk7CisgICAgICAgIHRoaXMuX2xheW91dE92ZXJsYXlTaG93
aW5nID0gZmFsc2U7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
RE9NTm9kZS5FdmVudC5MYXlvdXRPdmVybGF5SGlkZGVuKTsKKworICAgICAgICBjb25zb2xlLmFz
c2VydChhZ2VudENvbW1hbmRGdW5jdGlvbik7CisgICAgICAgIHJldHVybiBhZ2VudENvbW1hbmRG
dW5jdGlvbi5pbnZva2UoYWdlbnRDb21tYW5kQXJndW1lbnRzKTsKKyAgICB9CisKKyAgICBnZXQg
bGF5b3V0T3ZlcmxheUNvbG9yKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NyZWF0ZUxheW91dE92
ZXJsYXlDb2xvclNldHRpbmdJZk5lZWRlZCgpOworICAgICAgICByZXR1cm4gbmV3IFdJLkNvbG9y
KFdJLkNvbG9yLkZvcm1hdC5IU0wsIHRoaXMuX2xheW91dE92ZXJsYXlDb2xvclNldHRpbmcudmFs
dWUpOworICAgIH0KKworICAgIHNldCBsYXlvdXRPdmVybGF5Q29sb3IoY29sb3IpCisgICAgewor
ICAgICAgICBjb25zb2xlLmFzc2VydChjb2xvciBpbnN0YW5jZW9mIFdJLkNvbG9yLCBjb2xvcik7
CisKKyAgICAgICAgdGhpcy5fY3JlYXRlTGF5b3V0T3ZlcmxheUNvbG9yU2V0dGluZ0lmTmVlZGVk
KCk7CisgICAgICAgIHRoaXMuX2xheW91dE92ZXJsYXlDb2xvclNldHRpbmcudmFsdWUgPSBjb2xv
ci5oc2w7CisgICAgfQorCiAgICAgc2Nyb2xsSW50b1ZpZXcoKQogICAgIHsKICAgICAgICAgV0ku
UmVtb3RlT2JqZWN0LnJlc29sdmVOb2RlKHRoaXMpLnRoZW4oKG9iamVjdCkgPT4gewpAQCAtMTEw
Niw2ICsxMjMzLDQ5IEBAIFdJLkRPTU5vZGUgPSBjbGFzcyBET01Ob2RlIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgICAgICByZXR1cm4gYCR7c2VsZWN0b3J9LiR7KHNob3VsZEVzY2FwZSA/IENT
Uy5lc2NhcGUoY2xhc3NOYW1lKSA6IGNsYXNzTmFtZSl9YDsKICAgICAgICAgfSwgIiIpOwogICAg
IH0KKworICAgIF9jcmVhdGVMYXlvdXRPdmVybGF5Q29sb3JTZXR0aW5nSWZOZWVkZWQoKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX2xheW91dE92ZXJsYXlDb2xvclNldHRpbmcpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IGRlZmF1bHRDb25maWd1cmF0aW9uID0gV0kuRE9N
Tm9kZS5fZGVmYXVsdExheW91dE92ZXJsYXlDb25maWd1cmF0aW9uOworCisgICAgICAgIGxldCB1
cmwgPSB0aGlzLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRVUkwgfHwgV0kubmV0d29ya01hbmFnZXIu
bWFpbkZyYW1lLnVybDsKKworICAgICAgICBsZXQgbmV4dENvbG9ySW5kZXg7CisgICAgICAgIHN3
aXRjaCAodGhpcy5fbGF5b3V0Q29udGV4dFR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5ET01Ob2Rl
LkxheW91dENvbnRleHRUeXBlLkdyaWQ6CisgICAgICAgICAgICBuZXh0Q29sb3JJbmRleCA9IGRl
ZmF1bHRDb25maWd1cmF0aW9uLm5leHRHcmlkQ29sb3JJbmRleDsKKyAgICAgICAgICAgIGRlZmF1
bHRDb25maWd1cmF0aW9uLm5leHRHcmlkQ29sb3JJbmRleCA9IChuZXh0Q29sb3JJbmRleCArIDEp
ICUgZGVmYXVsdENvbmZpZ3VyYXRpb24uY29sb3JzLmxlbmd0aDsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5GbGV4OgorICAg
ICAgICAgICAgbmV4dENvbG9ySW5kZXggPSBkZWZhdWx0Q29uZmlndXJhdGlvbi5uZXh0RmxleENv
bG9ySW5kZXg7CisgICAgICAgICAgICBkZWZhdWx0Q29uZmlndXJhdGlvbi5uZXh0RmxleENvbG9y
SW5kZXggPSAobmV4dENvbG9ySW5kZXggKyAxKSAlIGRlZmF1bHRDb25maWd1cmF0aW9uLmNvbG9y
cy5sZW5ndGg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMu
X2xheW91dE92ZXJsYXlDb2xvclNldHRpbmcgPSBuZXcgV0kuU2V0dGluZyhgb3ZlcmxheS1jb2xv
ci0ke3VybC5oYXNofS0ke3RoaXMucGF0aCgpLmhhc2h9YCwgZGVmYXVsdENvbmZpZ3VyYXRpb24u
Y29sb3JzW25leHRDb2xvckluZGV4XSk7CisgICAgfQorCisgICAgX2hhbmRsZUdyaWRMYXlvdXRP
dmVybGF5U2V0dGluZ0NoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fbGF5
b3V0T3ZlcmxheVNob3dpbmcpCisgICAgICAgICAgICB0aGlzLnNob3dMYXlvdXRPdmVybGF5KCk7
CisgICAgfQorfTsKKworV0kuRE9NTm9kZS5fZGVmYXVsdExheW91dE92ZXJsYXlDb25maWd1cmF0
aW9uID0geworICAgIGNvbG9yczogWworICAgICAgICBbMzI5LCA5MSwgNzBdLAorICAgICAgICBb
MjA3LCA5NiwgNjldLAorICAgICAgICBbOTIsIDkwLCA2NF0sCisgICAgICAgIFsyOTEsIDczLCA2
OF0sCisgICAgICAgIFs0MCwgOTcsIDU3XSwKKyAgICBdLAorICAgIG5leHRGbGV4Q29sb3JJbmRl
eDogMCwKKyAgICBuZXh0R3JpZENvbG9ySW5kZXg6IDAsCiB9OwogCiBXSS5ET01Ob2RlLkV2ZW50
ID0gewpAQCAtMTExNiw2ICsxMjg2LDggQEAgV0kuRE9NTm9kZS5FdmVudCA9IHsKICAgICBEaWRG
aXJlRXZlbnQ6ICJkb20tbm9kZS1kaWQtZmlyZS1ldmVudCIsCiAgICAgUG93ZXJFZmZpY2llbnRQ
bGF5YmFja1N0YXRlQ2hhbmdlZDogImRvbS1ub2RlLXBvd2VyLWVmZmljaWVudC1wbGF5YmFjay1z
dGF0ZS1jaGFuZ2VkIiwKICAgICBMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQ6ICJkb20tbm9kZS1s
YXlvdXQtY29udGV4dC10eXBlLWNoYW5nZWQiLAorICAgIExheW91dE92ZXJsYXlTaG93bjogImRv
bS1ub2RlLWxheW91dC1vdmVybGF5LXNob3duIiwKKyAgICBMYXlvdXRPdmVybGF5SGlkZGVuOiAi
ZG9tLW5vZGUtbGF5b3V0LW92ZXJsYXktaGlkZGVuIiwKIH07CiAKIFdJLkRPTU5vZGUuUHNldWRv
RWxlbWVudFR5cGUgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCmluZGV4IGVhZjE3YzQ0YzAzZjNi
YTY1OGNjYmQ1YmExYjVhNWVkODJhNGMzYzIuLjg3ZjQ4ZWE0MzQyNDI3YmE4MWFiMGJlMzUzYzhl
MjRiMjJhZmE1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCkBAIC00NDUsOCArNDQ1LDggQEAg
V0kuRE9NVHJlZUVsZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVF
bGVtZW50CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5s
YXlvdXRDb250ZXh0VHlwZSkgewotICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMuX3Vw
ZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheUhpZGRl
biwgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOworICAgICAgICAgICAgdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuTGF5
b3V0T3ZlcmxheVNob3duLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7Cisg
ICAgICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9N
Tm9kZS5FdmVudC5MYXlvdXRPdmVybGF5SGlkZGVuLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0
YXR1cywgdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5h
ZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0Q29udGV4dFR5cGVDaGFuZ2Vk
LCB0aGlzLl9oYW5kbGVMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQsIHRoaXMpOwogCkBAIC00NTYs
OCArNDU2LDggQEAgV0kuRE9NVHJlZUVsZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRl
bmRzIFdJLlRyZWVFbGVtZW50CiAgICAgb25kZXRhY2goKQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0Q29udGV4dFR5cGUgPT09IFdJLkRPTU5vZGUuTGF5
b3V0Q29udGV4dFR5cGUuR3JpZCkgewotICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIucmVt
b3ZlRXZlbnRMaXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24sIHRo
aXMuX3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLm92ZXJs
YXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3Zl
cmxheUhpZGRlbiwgdGhpcy5fdXBkYXRlTGF5b3V0QmFkZ2VTdGF0dXMsIHRoaXMpOworICAgICAg
ICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRPTU5v
ZGUuRXZlbnQuTGF5b3V0T3ZlcmxheVNob3duLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0YXR1
cywgdGhpcyk7CisgICAgICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2ZW50
TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRPdmVybGF5SGlkZGVuLCB0aGlzLl91cGRh
dGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZlbnQuTGF5b3V0
Q29udGV4dFR5cGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQs
IHRoaXMpOwogICAgIH0KQEAgLTIwNTQsOSArMjA1NCwxMyBAQCBXSS5ET01UcmVlRWxlbWVudCA9
IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAgICAgICAgLy8g
RG9uJ3QgZXhwYW5kIG9yIGNvbGxhcHNlIGEgdHJlZSBlbGVtZW50IHdoZW4gY2xpY2tpbmcgb24g
dGhlIGdyaWQgYmFkZ2UuCiAgICAgICAgIGV2ZW50LnN0b3AoKTsKIAotICAgICAgICBXSS5vdmVy
bGF5TWFuYWdlci50b2dnbGVPdmVybGF5KHRoaXMucmVwcmVzZW50ZWRPYmplY3QsIHsKLSAgICAg
ICAgICAgIGluaXRpYXRvcjogdGhpcy5yZXByZXNlbnRlZE9iamVjdC5sYXlvdXRDb250ZXh0VHlw
ZSA9PT0gV0kuRE9NTm9kZS5MYXlvdXRDb250ZXh0VHlwZS5HcmlkID8gV0kuR3JpZE92ZXJsYXlE
aWFnbm9zdGljRXZlbnRSZWNvcmRlci5Jbml0aWF0b3IuQmFkZ2UgOiBudWxsLAotICAgICAgICB9
KTsKKyAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0T3ZlcmxheVNob3dp
bmcpCisgICAgICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmhpZGVMYXlvdXRPdmVybGF5
KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5z
aG93TGF5b3V0T3ZlcmxheSh7CisgICAgICAgICAgICAgICAgaW5pdGlhdG9yOiB0aGlzLnJlcHJl
c2VudGVkT2JqZWN0LmxheW91dENvbnRleHRUeXBlID09PSBXSS5ET01Ob2RlLkxheW91dENvbnRl
eHRUeXBlLkdyaWQgPyBXSS5HcmlkT3ZlcmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyLkluaXRp
YXRvci5CYWRnZSA6IG51bGwsCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIF9sYXlvdXRCYWRnZURvdWJsZUNsaWNrZWQoZXZlbnQpCkBAIC0yMDY5LDExICsyMDczLDEx
IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5U
cmVlRWxlbWVudAogICAgICAgICBpZiAoIXRoaXMuX2xheW91dEJhZGdlRWxlbWVudCkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBsZXQgaGFzVmlzaWJsZU92ZXJsYXkgPSBXSS5vdmVy
bGF5TWFuYWdlci5oYXNWaXNpYmxlT3ZlcmxheSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKKyAg
ICAgICAgbGV0IGhhc1Zpc2libGVPdmVybGF5ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5sYXlv
dXRPdmVybGF5U2hvd2luZzsKICAgICAgICAgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50LmNsYXNz
TGlzdC50b2dnbGUoImFjdGl2YXRlZCIsIGhhc1Zpc2libGVPdmVybGF5KTsKIAogICAgICAgICBp
ZiAoaGFzVmlzaWJsZU92ZXJsYXkpIHsKLSAgICAgICAgICAgIGxldCBjb2xvciA9IFdJLm92ZXJs
YXlNYW5hZ2VyLmdldENvbG9yRm9yTm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAg
ICAgICAgIGxldCBjb2xvciA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QubGF5b3V0T3ZlcmxheUNv
bG9yOwogICAgICAgICAgICAgbGV0IGh1ZSA9IGNvbG9yLmhzbFswXTsKICAgICAgICAgICAgIHRo
aXMuX2xheW91dEJhZGdlRWxlbWVudC5zdHlsZS5ib3JkZXJDb2xvciA9IGNvbG9yLnRvU3RyaW5n
KCk7CiAgICAgICAgICAgICB0aGlzLl9sYXlvdXRCYWRnZUVsZW1lbnQuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yID0gYGhzbCgke2h1ZX0sIDkwJSwgOTUlKWA7CkBAIC0yMDg1LDEyICsyMDg5LDEyIEBA
IFdJLkRPTVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVl
RWxlbWVudAogICAgIF9oYW5kbGVMYXlvdXRDb250ZXh0VHlwZUNoYW5nZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICBsZXQgZG9tTm9kZSA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgaWYgKGRvbU5v
ZGUubGF5b3V0Q29udGV4dFR5cGUpIHsKLSAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheVNob3duLCB0aGlz
Ll91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cywgdGhpcyk7Ci0gICAgICAgICAgICBXSS5vdmVybGF5
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlI
aWRkZW4sIHRoaXMuX3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIo
V0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheVNob3duLCB0aGlzLl91cGRhdGVMYXlvdXRC
YWRnZVN0YXR1cywgdGhpcyk7Ci0gICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVF
dmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlIaWRkZW4sIHRoaXMu
X3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsKKyAgICAgICAgaWYgKGRvbU5vZGUubGF5
b3V0Q29udGV4dFR5cGUgJiYgIXRoaXMuX2xheW91dEJhZGdlRWxlbWVudCkgeworICAgICAgICAg
ICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU5vZGUuRXZl
bnQuTGF5b3V0T3ZlcmxheVNob3duLCB0aGlzLl91cGRhdGVMYXlvdXRCYWRnZVN0YXR1cywgdGhp
cyk7CisgICAgICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIo
V0kuRE9NTm9kZS5FdmVudC5MYXlvdXRPdmVybGF5SGlkZGVuLCB0aGlzLl91cGRhdGVMYXlvdXRC
YWRnZVN0YXR1cywgdGhpcyk7CisgICAgICAgIH0gZWxzZSBpZiAoIWRvbU5vZGUubGF5b3V0Q29u
dGV4dFR5cGUgJiYgdGhpcy5fbGF5b3V0QmFkZ2VFbGVtZW50KSB7CisgICAgICAgICAgICB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5M
YXlvdXRPdmVybGF5U2hvd24sIHRoaXMuX3VwZGF0ZUxheW91dEJhZGdlU3RhdHVzLCB0aGlzKTsK
KyAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
SS5ET01Ob2RlLkV2ZW50LkxheW91dE92ZXJsYXlIaWRkZW4sIHRoaXMuX3VwZGF0ZUxheW91dEJh
ZGdlU3RhdHVzLCB0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUxheW91
dEJhZGdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Ob2RlT3ZlcmxheUxpc3RTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTm9kZU92ZXJsYXlMaXN0U2VjdGlvbi5qcwppbmRleCBiODJi
NjhlNjQzZDEwOTA2M2JkNjZjNjViOGM3NmE1MjY0MjQ3Y2VlLi5lNzc4ZjdiYTgzZmIzNDM5OWYw
NjU2YjIxODEyMWFkMDljY2IyYWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Ob2RlT3ZlcmxheUxpc3RTZWN0aW9uLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05vZGVPdmVybGF5TGlzdFNlY3Rp
b24uanMKQEAgLTU2LDE0ICs1NiwxNCBAQCBXSS5Ob2RlT3ZlcmxheUxpc3RTZWN0aW9uID0gY2xh
c3MgTm9kZU92ZXJsYXlMaXN0U2VjdGlvbiBleHRlbmRzIFdJLlZpZXcKICAgICB7CiAgICAgICAg
IHN1cGVyLmF0dGFjaGVkKCk7CiAKLSAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5PdmVybGF5TWFuYWdlci5FdmVudC5PdmVybGF5U2hvd24sIHRoaXMuX2hhbmRs
ZU92ZXJsYXlTdGF0ZUNoYW5nZWQsIHRoaXMpOwotICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlIaWRkZW4sIHRo
aXMuX2hhbmRsZU92ZXJsYXlTdGF0ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5ET01Ob2Rl
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRPdmVybGF5U2hvd24sIHRo
aXMuX2hhbmRsZU92ZXJsYXlTdGF0ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5ET01Ob2Rl
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZS5FdmVudC5MYXlvdXRPdmVybGF5SGlkZGVuLCB0
aGlzLl9oYW5kbGVPdmVybGF5U3RhdGVDaGFuZ2VkLCB0aGlzKTsKICAgICB9CiAKICAgICBkZXRh
Y2hlZCgpCiAgICAgewotICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5yZW1vdmVFdmVudExpc3Rl
bmVyKFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93biwgdGhpcy5faGFuZGxlT3Zl
cmxheVN0YXRlQ2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnJlbW92
ZUV2ZW50TGlzdGVuZXIoV0kuT3ZlcmxheU1hbmFnZXIuRXZlbnQuT3ZlcmxheUhpZGRlbiwgdGhp
cy5faGFuZGxlT3ZlcmxheVN0YXRlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkRPTU5vZGUu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkxheW91dE92ZXJsYXlTaG93biwg
dGhpcy5faGFuZGxlT3ZlcmxheVN0YXRlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkRPTU5v
ZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5ET01Ob2RlLkV2ZW50LkxheW91dE92ZXJsYXlIaWRk
ZW4sIHRoaXMuX2hhbmRsZU92ZXJsYXlTdGF0ZUNoYW5nZWQsIHRoaXMpOwogCiAgICAgICAgIHN1
cGVyLmRldGFjaGVkKCk7CiAgICAgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIFdJLk5vZGVPdmVybGF5
TGlzdFNlY3Rpb24gPSBjbGFzcyBOb2RlT3ZlcmxheUxpc3RTZWN0aW9uIGV4dGVuZHMgV0kuVmll
dwogICAgICAgICAgICAgbGV0IGNoZWNrYm94RWxlbWVudCA9IGxhYmVsRWxlbWVudC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKTsKICAgICAgICAgICAgIGxhYmVs
RWxlbWVudC5pbnNlcnRCZWZvcmUoY2hlY2tib3hFbGVtZW50LCBub2RlRGlzcGxheU5hbWUpOwog
ICAgICAgICAgICAgY2hlY2tib3hFbGVtZW50LnR5cGUgPSAiY2hlY2tib3giOwotICAgICAgICAg
ICAgY2hlY2tib3hFbGVtZW50LmNoZWNrZWQgPSBXSS5vdmVybGF5TWFuYWdlci5oYXNWaXNpYmxl
T3ZlcmxheShkb21Ob2RlKTsKKyAgICAgICAgICAgIGNoZWNrYm94RWxlbWVudC5jaGVja2VkID0g
ZG9tTm9kZS5sYXlvdXRPdmVybGF5U2hvd2luZzsKIAogICAgICAgICAgICAgdGhpcy5fY2hlY2ti
b3hFbGVtZW50QnlOb2RlTWFwLnNldChkb21Ob2RlLCBjaGVja2JveEVsZW1lbnQpOwogCkBAIC0x
MTcsMjcgKzExNywyMiBAQCBXSS5Ob2RlT3ZlcmxheUxpc3RTZWN0aW9uID0gY2xhc3MgTm9kZU92
ZXJsYXlMaXN0U2VjdGlvbiBleHRlbmRzIFdJLlZpZXcKIAogICAgICAgICAgICAgY2hlY2tib3hF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIChldmVudCkgPT4gewogICAgICAgICAg
ICAgICAgIGlmIChjaGVja2JveEVsZW1lbnQuY2hlY2tlZCkKLSAgICAgICAgICAgICAgICAgICAg
V0kub3ZlcmxheU1hbmFnZXIuc2hvd092ZXJsYXkoZG9tTm9kZSwge2NvbG9yOiBzd2F0Y2g/LnZh
bHVlLCBpbml0aWF0b3J9KTsKKyAgICAgICAgICAgICAgICAgICAgZG9tTm9kZS5zaG93TGF5b3V0
T3ZlcmxheSh7Y29sb3I6IHN3YXRjaD8udmFsdWUsIGluaXRpYXRvcn0pOwogICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgV0kub3ZlcmxheU1hbmFnZXIuaGlkZU92ZXJs
YXkoZG9tTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGRvbU5vZGUuaGlkZUxheW91dE92ZXJs
YXkoKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBsZXQgY29sb3IgPSBXSS5vdmVy
bGF5TWFuYWdlci5nZXRDb2xvckZvck5vZGUoZG9tTm9kZSk7Ci0gICAgICAgICAgICBsZXQgc3dh
dGNoID0gbmV3IFdJLklubGluZVN3YXRjaChXSS5JbmxpbmVTd2F0Y2guVHlwZS5Db2xvciwgY29s
b3IpOworICAgICAgICAgICAgbGV0IHN3YXRjaCA9IG5ldyBXSS5JbmxpbmVTd2F0Y2goV0kuSW5s
aW5lU3dhdGNoLlR5cGUuQ29sb3IsIGRvbU5vZGUubGF5b3V0T3ZlcmxheUNvbG9yKTsKICAgICAg
ICAgICAgIHN3YXRjaC5zaGlmdENsaWNrQ29sb3JFbmFibGVkID0gZmFsc2U7CiAgICAgICAgICAg
ICBpdGVtQ29udGFpbmVyRWxlbWVudC5hcHBlbmQoc3dhdGNoLmVsZW1lbnQpOwogCiAgICAgICAg
ICAgICBzd2F0Y2guYWRkRXZlbnRMaXN0ZW5lcihXSS5JbmxpbmVTd2F0Y2guRXZlbnQuVmFsdWVD
aGFuZ2VkLCAoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICBpZiAoY2hlY2tib3hFbGVtZW50
Py5jaGVja2VkKQotICAgICAgICAgICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5zaG93T3Zl
cmxheShkb21Ob2RlLCB7Y29sb3I6IGV2ZW50LmRhdGEudmFsdWV9KTsKKyAgICAgICAgICAgICAg
ICAgICAgZG9tTm9kZS5zaG93TGF5b3V0T3ZlcmxheSh7Y29sb3I6IGV2ZW50LmRhdGEudmFsdWV9
KTsKICAgICAgICAgICAgIH0sIHN3YXRjaCk7CiAKICAgICAgICAgICAgIHN3YXRjaC5hZGRFdmVu
dExpc3RlbmVyKFdJLklubGluZVN3YXRjaC5FdmVudC5EZWFjdGl2YXRlZCwgKGV2ZW50KSA9PiB7
Ci0gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gY29sb3IpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGNvbG9yID0gZXZlbnQu
dGFyZ2V0LnZhbHVlOwotICAgICAgICAgICAgICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnNldENvbG9y
Rm9yTm9kZShkb21Ob2RlLCBjb2xvcik7CisgICAgICAgICAgICAgICAgZG9tTm9kZS5sYXlvdXRP
dmVybGF5Q29sb3IgPSBldmVudC50YXJnZXQudmFsdWU7CiAgICAgICAgICAgICB9LCBzd2F0Y2gp
OwogCiAgICAgICAgICAgICBsZXQgYnV0dG9uRWxlbWVudCA9IGl0ZW1Db250YWluZXJFbGVtZW50
LmFwcGVuZENoaWxkKFdJLmNyZWF0ZUdvVG9BcnJvd0J1dHRvbigpKTsKQEAgLTE1MiwxMSArMTQ3
LDExIEBAIFdJLk5vZGVPdmVybGF5TGlzdFNlY3Rpb24gPSBjbGFzcyBOb2RlT3ZlcmxheUxpc3RT
ZWN0aW9uIGV4dGVuZHMgV0kuVmlldwogCiAgICAgX2hhbmRsZU92ZXJsYXlTdGF0ZUNoYW5nZWQo
ZXZlbnQpCiAgICAgewotICAgICAgICBsZXQgY2hlY2tib3hFbGVtZW50ID0gdGhpcy5fY2hlY2ti
b3hFbGVtZW50QnlOb2RlTWFwLmdldChldmVudC5kYXRhLmRvbU5vZGUpOworICAgICAgICBsZXQg
Y2hlY2tib3hFbGVtZW50ID0gdGhpcy5fY2hlY2tib3hFbGVtZW50QnlOb2RlTWFwLmdldChldmVu
dC50YXJnZXQpOwogICAgICAgICBpZiAoIWNoZWNrYm94RWxlbWVudCkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBjaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9IGV2ZW50LnR5cGUgPT09
IFdJLk92ZXJsYXlNYW5hZ2VyLkV2ZW50Lk92ZXJsYXlTaG93bjsKKyAgICAgICAgY2hlY2tib3hF
bGVtZW50LmNoZWNrZWQgPSBldmVudC50YXJnZXQubGF5b3V0T3ZlcmxheVNob3dpbmc7CiAgICAg
ICAgIHRoaXMuX3VwZGF0ZVRvZ2dsZUFsbENoZWNrYm94KCk7CiAgICAgfQogCkBAIC0xNjcsOSAr
MTYyLDkgQEAgV0kuTm9kZU92ZXJsYXlMaXN0U2VjdGlvbiA9IGNsYXNzIE5vZGVPdmVybGF5TGlz
dFNlY3Rpb24gZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAgICAgZm9yIChsZXQgZG9tTm9kZSBvZiB0
aGlzLl9ub2RlU2V0KSB7CiAgICAgICAgICAgICBpZiAoaXNDaGVja2VkKQotICAgICAgICAgICAg
ICAgIFdJLm92ZXJsYXlNYW5hZ2VyLnNob3dPdmVybGF5KGRvbU5vZGUpOworICAgICAgICAgICAg
ICAgIGRvbU5vZGUuc2hvd0xheW91dE92ZXJsYXkoKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBXSS5vdmVybGF5TWFuYWdlci5oaWRlT3ZlcmxheShkb21Ob2RlKTsKKyAgICAg
ICAgICAgICAgICBkb21Ob2RlLmhpZGVMYXlvdXRPdmVybGF5KCk7CiAgICAgICAgIH0KIAogICAg
ICAgICB0aGlzLl9zdXBwcmVzc1VwZGF0ZVRvZ2dsZUFsbENoZWNrYm94ID0gZmFsc2U7CkBAIC0x
ODMsOCArMTc4LDcgQEAgV0kuTm9kZU92ZXJsYXlMaXN0U2VjdGlvbiA9IGNsYXNzIE5vZGVPdmVy
bGF5TGlzdFNlY3Rpb24gZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGxldCBoYXNWaXNpYmxlID0g
ZmFsc2U7CiAgICAgICAgIGxldCBoYXNIaWRkZW4gPSBmYWxzZTsKICAgICAgICAgZm9yIChsZXQg
ZG9tTm9kZSBvZiB0aGlzLl9ub2RlU2V0KSB7Ci0gICAgICAgICAgICBsZXQgaXNWaXNpYmxlID0g
V0kub3ZlcmxheU1hbmFnZXIuaGFzVmlzaWJsZU92ZXJsYXkoZG9tTm9kZSk7Ci0gICAgICAgICAg
ICBpZiAoaXNWaXNpYmxlKQorICAgICAgICAgICAgaWYgKGRvbU5vZGUubGF5b3V0T3ZlcmxheVNo
b3dpbmcpCiAgICAgICAgICAgICAgICAgaGFzVmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgaGFzSGlkZGVuID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmODY4MzBlNzVm
ZTI2NzRlZDVkZWZjYTU5YWU0ZmJhYjNjMzRhMjdjLi4xNGE4MGJhZjNhZjY4MDUxNmEyNTlmNDAw
NjIxNWFlZDk5MzJhYTAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDItMjEgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1l
cmdlIFdJLk92ZXJsYXlNYW5hZ2VyIGludG8gV0kuRE9NTm9kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTMzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL3Nob3dGbGV4T3Zl
cmxheS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kb20vc2hvd0dyaWRPdmVybGF5Lmh0bWw6
CisgICAgICAgIFJlcGxhY2UgZGlyZWN0IGBET01BZ2VudGAgY2FsbHMgd2l0aCBlcXVpdmFsZW50
IGBXSS5ET01Ob2RlYCBtZXRob2RzLgorCiAyMDIyLTAyLTIxICBSb2IgQnVpcyAgPHJidWlzQGln
YWxpYS5jb20+CiAKICAgICAgICAgTnVsbCBjaGVjayBwYXJlbnQgbm9kZSBpbiBvdXRkZW50UGFy
YWdyYXBoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3Nob3dGbGV4T3Zl
cmxheS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9zaG93RmxleE92ZXJsYXkuaHRt
bAppbmRleCAzYmIyNmJiOGYwNzZkNDg0ZThmODhhOTg0MWEyNmQ3ZjVjYjllY2QyLi5jMzkxZjBl
ODdjM2U2ZTg5Y2RiMmI4MTU3ZjU3MjQ3YTU2OGQyODJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tL3Nob3dGbGV4T3ZlcmxheS5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kb20vc2hvd0ZsZXhPdmVybGF5Lmh0bWwKQEAgLTQ2LDE3ICs0NiwxNyBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgICAgIGxldCBjb250YWluZXIgPSBhd2FpdCBnZXRGbGV4Q29u
dGFpbmVyTm9kZSgpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVxdWVzdGlu
ZyB0byBzaG93IGZsZXggb3ZlcmxheSBmb3IgZmlyc3QgLmZsZXgtY29udGFpbmVyIik7Ci0gICAg
ICAgICAgICBhd2FpdCBET01BZ2VudC5zaG93RmxleE92ZXJsYXkoY29udGFpbmVyLmlkLCBXSS5D
b2xvci5mcm9tU3RyaW5nKCJtYWdlbnRhIikudG9Qcm90b2NvbCgpKTsKKyAgICAgICAgICAgIGF3
YWl0IGNvbnRhaW5lci5zaG93TGF5b3V0T3ZlcmxheSh7Y29sb3I6IFdJLkNvbG9yLmZyb21TdHJp
bmcoIm1hZ2VudGEiKX0pOwogICAgICAgICAgICAgYXdhaXQgY2hlY2tGbGV4T3ZlcmxheUNvdW50
KDEpOwogCiAgICAgICAgICAgICAvLyBObyBlcnJvciBzaG91bGQgb2NjdXIgaWYgc2hvd2luZyBm
bGV4IG92ZXJsYXkgZm9yIGEgbm9kZSB0aGF0IGFscmVhZHkgaGFzIG9uZS4KICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJSZXF1ZXN0aW5nIHRvIHNob3cgYSBkaWZmZXJlbnQgZmxleCBv
dmVybGF5IGZvciBmaXJzdCAuZmxleC1jb250YWluZXIiKTsKLSAgICAgICAgICAgIGF3YWl0IERP
TUFnZW50LnNob3dGbGV4T3ZlcmxheShjb250YWluZXIuaWQsIFdJLkNvbG9yLmZyb21TdHJpbmco
ImdyZWVuIikudG9Qcm90b2NvbCgpKTsKKyAgICAgICAgICAgIGF3YWl0IGNvbnRhaW5lci5zaG93
TGF5b3V0T3ZlcmxheSh7Y29sb3I6IFdJLkNvbG9yLmZyb21TdHJpbmcoImdyZWVuIil9KTsKICAg
ICAgICAgICAgIGF3YWl0IGNoZWNrRmxleE92ZXJsYXlDb3VudCgxKTsKIAogICAgICAgICAgICAg
Ly8gTm8gZXJyb3Igc2hvdWxkIG9jY3VyIHdoZW4gaGlkaW5nIHRoZSBmbGV4IG92ZXJsYXkuCiAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVxdWVzdGluZyB0byBoaWRlIGZsZXggb3Zl
cmxheSIpOwotICAgICAgICAgICAgYXdhaXQgRE9NQWdlbnQuaGlkZUZsZXhPdmVybGF5KGNvbnRh
aW5lci5pZCk7CisgICAgICAgICAgICBhd2FpdCBjb250YWluZXIuaGlkZUxheW91dE92ZXJsYXko
KTsKICAgICAgICAgICAgIGF3YWl0IGNoZWNrRmxleE92ZXJsYXlDb3VudCgwKTsKICAgICAgICAg
fQogICAgIH0pOwpAQCAtNjksMjEgKzY5LDIxIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAg
ICAgbGV0IFtmaXJzdCwgc2Vjb25kXSA9IGF3YWl0IGdldEFsbEZsZXhDb250YWluZXJOb2Rlcygp
OwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVxdWVzdGluZyB0byBzaG93IGZp
cnN0IGZsZXggb3ZlcmxheSIpOwotICAgICAgICAgICAgYXdhaXQgRE9NQWdlbnQuc2hvd0ZsZXhP
dmVybGF5KGZpcnN0LmlkLCBXSS5Db2xvci5mcm9tU3RyaW5nKCJtYWdlbnRhIikudG9Qcm90b2Nv
bCgpKTsKKyAgICAgICAgICAgIGF3YWl0IGZpcnN0LnNob3dMYXlvdXRPdmVybGF5KHtjb2xvcjog
V0kuQ29sb3IuZnJvbVN0cmluZygibWFnZW50YSIpfSk7CiAgICAgICAgICAgICBhd2FpdCBjaGVj
a0ZsZXhPdmVybGF5Q291bnQoMSk7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJS
ZXF1ZXN0aW5nIHRvIHNob3cgc2Vjb25kIGZsZXggb3ZlcmxheSIpOwotICAgICAgICAgICAgYXdh
aXQgRE9NQWdlbnQuc2hvd0ZsZXhPdmVybGF5KHNlY29uZC5pZCwgV0kuQ29sb3IuZnJvbVN0cmlu
ZygiZ3JlZW4iKS50b1Byb3RvY29sKCkpOworICAgICAgICAgICAgYXdhaXQgc2Vjb25kLnNob3dM
YXlvdXRPdmVybGF5KHtjb2xvcjogV0kuQ29sb3IuZnJvbVN0cmluZygiZ3JlZW4iKX0pOwogICAg
ICAgICAgICAgYXdhaXQgY2hlY2tGbGV4T3ZlcmxheUNvdW50KDIpOwogCiAgICAgICAgICAgICAv
LyBObyBlcnJvciBzaG91bGQgb2NjdXIgd2hlbiBoaWRpbmcgdGhlIGZpcnN0IGZsZXggb3Zlcmxh
eS4KICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZXF1ZXN0aW5nIHRvIGhpZGUgZmly
c3QgZmxleCBvdmVybGF5Iik7Ci0gICAgICAgICAgICBhd2FpdCBET01BZ2VudC5oaWRlRmxleE92
ZXJsYXkoZmlyc3QuaWQpOworICAgICAgICAgICAgYXdhaXQgZmlyc3QuaGlkZUxheW91dE92ZXJs
YXkoKTsKICAgICAgICAgICAgIGF3YWl0IGNoZWNrRmxleE92ZXJsYXlDb3VudCgxKTsKIAogICAg
ICAgICAgICAgLy8gTm8gZXJyb3Igc2hvdWxkIG9jY3VyIHdoZW4gaGlkaW5nIHRoZSBzZWNvbmQg
ZmxleCBvdmVybGF5LgogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlcXVlc3Rpbmcg
dG8gaGlkZSBzZWNvbmQgZmxleCBvdmVybGF5Iik7Ci0gICAgICAgICAgICBhd2FpdCBET01BZ2Vu
dC5oaWRlRmxleE92ZXJsYXkoc2Vjb25kLmlkKTsKKyAgICAgICAgICAgIGF3YWl0IHNlY29uZC5o
aWRlTGF5b3V0T3ZlcmxheSgpOwogICAgICAgICAgICAgYXdhaXQgY2hlY2tGbGV4T3ZlcmxheUNv
dW50KDApOwogICAgICAgICB9CiAgICAgfSk7CkBAIC05NiwxMSArOTYsMTEgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgICAgICBsZXQgW2ZpcnN0LCBzZWNvbmRdID0gYXdhaXQgZ2V0QWxsRmxl
eENvbnRhaW5lck5vZGVzKCk7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZXF1
ZXN0aW5nIHRvIHNob3cgZmlyc3QgZmxleCBvdmVybGF5Iik7Ci0gICAgICAgICAgICBhd2FpdCBE
T01BZ2VudC5zaG93RmxleE92ZXJsYXkoZmlyc3QuaWQsIFdJLkNvbG9yLmZyb21TdHJpbmcoIm1h
Z2VudGEiKS50b1Byb3RvY29sKCkpOworICAgICAgICAgICAgYXdhaXQgZmlyc3Quc2hvd0xheW91
dE92ZXJsYXkoe2NvbG9yOiBXSS5Db2xvci5mcm9tU3RyaW5nKCJtYWdlbnRhIil9KTsKICAgICAg
ICAgICAgIGF3YWl0IGNoZWNrRmxleE92ZXJsYXlDb3VudCgxKTsKIAogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIlJlcXVlc3RpbmcgdG8gc2hvdyBzZWNvbmQgZmxleCBvdmVybGF5Iik7
Ci0gICAgICAgICAgICBhd2FpdCBET01BZ2VudC5zaG93RmxleE92ZXJsYXkoc2Vjb25kLmlkLCBX
SS5Db2xvci5mcm9tU3RyaW5nKCJncmVlbiIpLnRvUHJvdG9jb2woKSk7CisgICAgICAgICAgICBh
d2FpdCBzZWNvbmQuc2hvd0xheW91dE92ZXJsYXkoe2NvbG9yOiBXSS5Db2xvci5mcm9tU3RyaW5n
KCJncmVlbiIpfSk7CiAgICAgICAgICAgICBhd2FpdCBjaGVja0ZsZXhPdmVybGF5Q291bnQoMik7
CiAKICAgICAgICAgICAgIC8vIE5vIGVycm9yIHNob3VsZCBvY2N1ciB3aGVuIGhpZGluZyBhbGwg
ZmxleCBvdmVybGF5cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2hv
d0dyaWRPdmVybGF5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL3Nob3dHcmlkT3Zl
cmxheS5odG1sCmluZGV4IDAyZTNkMDY3NDNlM2MwOWY0MDMxODZjYzRhM2U4MDgyZWQzZmY4ZDku
LmEwNTdkNzEwNjljMzc4MDRlZjAzOTRjOWViNmIyMzEzMjQ5NmZiYTEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kb20vc2hvd0dyaWRPdmVybGF5Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS9zaG93R3JpZE92ZXJsYXkuaHRtbApAQCAtNDYsMTcgKzQ2LDE3
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbGV0IGNvbnRhaW5lciA9IGF3YWl0IGdl
dEdyaWRDb250YWluZXJOb2RlKCk7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJS
ZXF1ZXN0aW5nIHRvIHNob3cgZ3JpZCBvdmVybGF5IGZvciBmaXJzdCAuZ3JpZC1jb250YWluZXIi
KTsKLSAgICAgICAgICAgIGF3YWl0IERPTUFnZW50LnNob3dHcmlkT3ZlcmxheShjb250YWluZXIu
aWQsIFdJLkNvbG9yLmZyb21TdHJpbmcoIm1hZ2VudGEiKS50b1Byb3RvY29sKCkpOworICAgICAg
ICAgICAgYXdhaXQgY29udGFpbmVyLnNob3dMYXlvdXRPdmVybGF5KHtjb2xvcjogV0kuQ29sb3Iu
ZnJvbVN0cmluZygibWFnZW50YSIpfSk7CiAgICAgICAgICAgICBhd2FpdCBjaGVja0dyaWRPdmVy
bGF5Q291bnQoMSk7CiAKICAgICAgICAgICAgIC8vIE5vIGVycm9yIHNob3VsZCBvY2N1ciBpZiBz
aG93aW5nIGdyaWQgb3ZlcmxheSBmb3IgYSBub2RlIHRoYXQgYWxyZWFkeSBoYXMgb25lLgogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlcXVlc3RpbmcgdG8gc2hvdyBhIGRpZmZlcmVu
dCBncmlkIG92ZXJsYXkgZm9yIGZpcnN0IC5ncmlkLWNvbnRhaW5lciIpOwotICAgICAgICAgICAg
YXdhaXQgRE9NQWdlbnQuc2hvd0dyaWRPdmVybGF5KGNvbnRhaW5lci5pZCwgV0kuQ29sb3IuZnJv
bVN0cmluZygiZ3JlZW4iKS50b1Byb3RvY29sKCkpOworICAgICAgICAgICAgYXdhaXQgY29udGFp
bmVyLnNob3dMYXlvdXRPdmVybGF5KHtjb2xvcjogV0kuQ29sb3IuZnJvbVN0cmluZygiZ3JlZW4i
KX0pOwogICAgICAgICAgICAgYXdhaXQgY2hlY2tHcmlkT3ZlcmxheUNvdW50KDEpOwogCiAgICAg
ICAgICAgICAvLyBObyBlcnJvciBzaG91bGQgb2NjdXIgd2hlbiBoaWRpbmcgdGhlIGdyaWQgb3Zl
cmxheS4KICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZXF1ZXN0aW5nIHRvIGhpZGUg
Z3JpZCBvdmVybGF5Iik7Ci0gICAgICAgICAgICBhd2FpdCBET01BZ2VudC5oaWRlR3JpZE92ZXJs
YXkoY29udGFpbmVyLmlkKTsKKyAgICAgICAgICAgIGF3YWl0IGNvbnRhaW5lci5oaWRlTGF5b3V0
T3ZlcmxheSgpOwogICAgICAgICAgICAgYXdhaXQgY2hlY2tHcmlkT3ZlcmxheUNvdW50KDApOwog
ICAgICAgICB9CiAgICAgfSk7CkBAIC02OSwyMSArNjksMjEgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgICAgICBsZXQgW2ZpcnN0LCBzZWNvbmRdID0gYXdhaXQgZ2V0QWxsR3JpZENvbnRhaW5l
ck5vZGVzKCk7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZXF1ZXN0aW5nIHRv
IHNob3cgZmlyc3QgZ3JpZCBvdmVybGF5Iik7Ci0gICAgICAgICAgICBhd2FpdCBET01BZ2VudC5z
aG93R3JpZE92ZXJsYXkoZmlyc3QuaWQsIFdJLkNvbG9yLmZyb21TdHJpbmcoIm1hZ2VudGEiKS50
b1Byb3RvY29sKCkpOworICAgICAgICAgICAgYXdhaXQgZmlyc3Quc2hvd0xheW91dE92ZXJsYXko
e2NvbG9yOiBXSS5Db2xvci5mcm9tU3RyaW5nKCJtYWdlbnRhIil9KTsKICAgICAgICAgICAgIGF3
YWl0IGNoZWNrR3JpZE92ZXJsYXlDb3VudCgxKTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIlJlcXVlc3RpbmcgdG8gc2hvdyBzZWNvbmQgZ3JpZCBvdmVybGF5Iik7Ci0gICAgICAg
ICAgICBhd2FpdCBET01BZ2VudC5zaG93R3JpZE92ZXJsYXkoc2Vjb25kLmlkLCBXSS5Db2xvci5m
cm9tU3RyaW5nKCJncmVlbiIpLnRvUHJvdG9jb2woKSk7CisgICAgICAgICAgICBhd2FpdCBzZWNv
bmQuc2hvd0xheW91dE92ZXJsYXkoe2NvbG9yOiBXSS5Db2xvci5mcm9tU3RyaW5nKCJncmVlbiIp
fSk7CiAgICAgICAgICAgICBhd2FpdCBjaGVja0dyaWRPdmVybGF5Q291bnQoMik7CiAKICAgICAg
ICAgICAgIC8vIE5vIGVycm9yIHNob3VsZCBvY2N1ciB3aGVuIGhpZGluZyB0aGUgZ3JpZCBvdmVy
bGF5LgogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlcXVlc3RpbmcgdG8gaGlkZSBm
aXJzdCBncmlkIG92ZXJsYXkiKTsKLSAgICAgICAgICAgIGF3YWl0IERPTUFnZW50LmhpZGVHcmlk
T3ZlcmxheShmaXJzdC5pZCk7CisgICAgICAgICAgICBhd2FpdCBmaXJzdC5oaWRlTGF5b3V0T3Zl
cmxheSgpOwogICAgICAgICAgICAgYXdhaXQgY2hlY2tHcmlkT3ZlcmxheUNvdW50KDEpOwogCiAg
ICAgICAgICAgICAvLyBObyBlcnJvciBzaG91bGQgb2NjdXIgd2hlbiBoaWRpbmcgdGhlIGdyaWQg
b3ZlcmxheS4KICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZXF1ZXN0aW5nIHRvIGhp
ZGUgc2Vjb25kIGdyaWQgb3ZlcmxheSIpOwotICAgICAgICAgICAgYXdhaXQgRE9NQWdlbnQuaGlk
ZUdyaWRPdmVybGF5KHNlY29uZC5pZCk7CisgICAgICAgICAgICBhd2FpdCBzZWNvbmQuaGlkZUxh
eW91dE92ZXJsYXkoKTsKICAgICAgICAgICAgIGF3YWl0IGNoZWNrR3JpZE92ZXJsYXlDb3VudCgw
KTsKICAgICAgICAgfQogICAgIH0pOwpAQCAtOTYsMTEgKzk2LDExIEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICAgICAgbGV0IFtmaXJzdCwgc2Vjb25kXSA9IGF3YWl0IGdldEFsbEdyaWRDb250
YWluZXJOb2RlcygpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVxdWVzdGlu
ZyB0byBzaG93IGdyaWQgb3ZlcmxheSIpOwotICAgICAgICAgICAgYXdhaXQgRE9NQWdlbnQuc2hv
d0dyaWRPdmVybGF5KGZpcnN0LmlkLCBXSS5Db2xvci5mcm9tU3RyaW5nKCJtYWdlbnRhIikudG9Q
cm90b2NvbCgpKTsKKyAgICAgICAgICAgIGF3YWl0IGZpcnN0LnNob3dMYXlvdXRPdmVybGF5KHtj
b2xvcjogV0kuQ29sb3IuZnJvbVN0cmluZygibWFnZW50YSIpfSk7CiAgICAgICAgICAgICBhd2Fp
dCBjaGVja0dyaWRPdmVybGF5Q291bnQoMSk7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJSZXF1ZXN0aW5nIHRvIHNob3cgYSBkaWZmZXJlbnQgZ3JpZCBvdmVybGF5Iik7Ci0gICAg
ICAgICAgICBhd2FpdCBET01BZ2VudC5zaG93R3JpZE92ZXJsYXkoc2Vjb25kLmlkLCBXSS5Db2xv
ci5mcm9tU3RyaW5nKCJncmVlbiIpLnRvUHJvdG9jb2woKSk7CisgICAgICAgICAgICBhd2FpdCBz
ZWNvbmQuc2hvd0xheW91dE92ZXJsYXkoe2NvbG9yOiBXSS5Db2xvci5mcm9tU3RyaW5nKCJncmVl
biIpfSk7CiAgICAgICAgICAgICBhd2FpdCBjaGVja0dyaWRPdmVybGF5Q291bnQoMik7CiAKICAg
ICAgICAgICAgIC8vIE5vIGVycm9yIHNob3VsZCBvY2N1ciB3aGVuIGhpZGluZyB0aGUgZ3JpZCBv
dmVybGF5Lgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>