<?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>48206</bug_id>
          
          <creation_ts>2010-10-24 08:31:59 -0700</creation_ts>
          <short_desc>Web Inspector: add support for errors, warnings and search to the storage panel.</short_desc>
          <delta_ts>2020-02-09 15:00:54 -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 (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>48207</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>298581</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-24 08:31:59 -0700</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298582</commentid>
    <comment_count>1</comment_count>
      <attachid>71682</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-24 08:35:23 -0700</bug_when>
    <thetext>Created attachment 71682
[PATCH] Proposed change.

Drive-by factor out of resource tree model in the resource manager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298586</commentid>
    <comment_count>2</comment_count>
      <attachid>71683</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-24 08:45:04 -0700</bug_when>
    <thetext>Created attachment 71683
[PATCH] Proposed change (with proper changelog).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298621</commentid>
    <comment_count>3</comment_count>
      <attachid>71683</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2010-10-24 10:39:18 -0700</bug_when>
    <thetext>Comment on attachment 71683
[PATCH] Proposed change (with proper changelog).

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

&gt; WebCore/inspector/front-end/Resource.js:552
&gt; +    set searchMatches(x)

I think it is odd to have this on Resource. What search? Resource does not deal with searching, panels do.

&gt; WebCore/inspector/front-end/ResourceManager.js:351
&gt; +                view.clearMessages();

Do we need this now that there is an &quot;errors-warnings-updated&quot; event?

&gt; WebCore/inspector/front-end/ResourceManager.js:424
&gt; +        WebInspector.panels.storage.addOrUpdateFrame(parentFrameId, frameId, displayName);

Why is this still using the storage panel? Shouldn&apos;t this be self-contained and storage/resources panel be using the ResourceManager?

&gt; WebCore/inspector/front-end/ResourceManager.js:507
&gt; +            resourceForURL.push(resource);

When can there be multiple resources for a URL? Different frames?

&gt; WebCore/inspector/front-end/ResourceManager.js:530
&gt; +        return this._resourcesByURL[url];

This can return an array, so is it really &quot;resourceForURL&quot;? Should this take another param (frameId?) to guarentee just one resource is returned?

&gt; WebCore/inspector/front-end/StoragePanel.js:260
&gt; +        this.showResource(WebInspector.resourceManager.resourceForURL(url), line);

Can&apos;t this fail if the resource is an array?

&gt; WebCore/inspector/front-end/StoragePanel.js:273
&gt; +        this._forAllResourceTreeElements(callback);

TreeOutline has findTreeElement you could use, which takes a representedObject to find a TreeElement with the same representedObject. That would be faster than a function call for all resources in the tree.

&gt; WebCore/inspector/front-end/StoragePanel.js:276
&gt; +            var view = WebInspector.ResourceManager.resourceViewForResource(resource);

I didn&apos;t expect ResourceManager to know about views. But I guess it is needed for Resources and Scripts to share logic? Maybe that can change when we remove Scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298628</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-24 11:30:11 -0700</bug_when>
    <thetext>Thanks for the review.

&gt; &gt; WebCore/inspector/front-end/Resource.js:552
&gt; &gt; +    set searchMatches(x)
&gt; 
&gt; I think it is odd to have this on Resource. What search? Resource does not deal with searching, panels do.
&gt; 

I think I can remove this one. Was just doing it for speed: there is no way to look up tree item by view fast:
- search results come in terms of views
- views point to resources
- tree items point to resources

so it was non-trivial to go view -&gt; tree item (there is no map from resources to tree items in storage panel, i didn&apos;t want to use treeitem&apos;s represented object). I&apos;ll use it now though.

&gt; &gt; WebCore/inspector/front-end/ResourceManager.js:351
&gt; &gt; +                view.clearMessages();
&gt; 
&gt; Do we need this now that there is an &quot;errors-warnings-updated&quot; event?

True, will use it.

&gt; &gt; WebCore/inspector/front-end/ResourceManager.js:424
&gt; &gt; +        WebInspector.panels.storage.addOrUpdateFrame(parentFrameId, frameId, displayName);
&gt; 
&gt; Why is this still using the storage panel? Shouldn&apos;t this be self-contained and storage/resources panel be using the ResourceManager?
&gt;

ResourceManager has resource tree model that is maintaining the frame / resource hierarchy. Storage view is supposed to listen to that model. However, so far, storage view is the only listener, so I am getting away with direct calls and this unhealthy dependency. Change was already big, will do it later.
 
&gt; &gt; WebCore/inspector/front-end/ResourceManager.js:507
&gt; &gt; +            resourceForURL.push(resource);
&gt; 
&gt; When can there be multiple resources for a URL? Different frames?
&gt; 

Yes.

&gt; &gt; WebCore/inspector/front-end/ResourceManager.js:530
&gt; &gt; +        return this._resourcesByURL[url];
&gt; 
&gt; This can return an array, so is it really &quot;resourceForURL&quot;? Should this take another param (frameId?) to guarentee just one resource is returned?
&gt; 

Good catch. This is actually a bug. Talking about frameId, yes, we should pass it here. Unfortunately, the client of the call (console) does not have it yet, so we should push frameId along with the console message. I&apos;ll file a bug on it once I land this.

&gt; &gt; WebCore/inspector/front-end/StoragePanel.js:260
&gt; &gt; +        this.showResource(WebInspector.resourceManager.resourceForURL(url), line);
&gt; 
&gt; Can&apos;t this fail if the resource is an array?
&gt; 

Yes, you caught a bug above.

&gt; &gt; WebCore/inspector/front-end/StoragePanel.js:273
&gt; &gt; +        this._forAllResourceTreeElements(callback);
&gt; 
&gt; TreeOutline has findTreeElement you could use, which takes a representedObject to find a TreeElement with the same representedObject. That would be faster than a function call for all resources in the tree.
&gt;

As I mentioned above, I did not want to use it initially, but I will now.
 
&gt; &gt; WebCore/inspector/front-end/StoragePanel.js:276
&gt; &gt; +            var view = WebInspector.ResourceManager.resourceViewForResource(resource);
&gt; 
&gt; I didn&apos;t expect ResourceManager to know about views. But I guess it is needed for Resources and Scripts to share logic? Maybe that can change when we remove Scripts.

Exactly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298764</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-25 02:38:02 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/front-end/ConsoleView.js
	M	WebCore/inspector/front-end/Resource.js
	M	WebCore/inspector/front-end/ResourceManager.js
	M	WebCore/inspector/front-end/Settings.js
	M	WebCore/inspector/front-end/StoragePanel.js
	M	WebCore/inspector/front-end/inspector.css
	M	WebCore/inspector/front-end/inspector.js
Committed r70445</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71682</attachid>
            <date>2010-10-24 08:35:23 -0700</date>
            <delta_ts>2010-10-24 08:45:04 -0700</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>storage_messages</filename>
            <type>text/plain</type>
            <size>30201</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwppbmRleCBjNTQ3YzBk
Li4xMDYyNTA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29s
ZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3Lmpz
CkBAIC0yMzAsNiArMjMwLDggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMpCiAg
ICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLmFkZE1lc3Nh
Z2VUb1Jlc291cmNlKG1zZy5yZXNvdXJjZSwgbXNnKTsKICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2VyKQorICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5yZXNvdXJjZU1hbmFnZXIuYWRkQ29uc29sZU1lc3NhZ2UobXNnKTsKIAogICAg
ICAgICAgICAgdGhpcy5jb21tYW5kU2luY2VQcmV2aW91c01lc3NhZ2UgPSBmYWxzZTsKICAgICAg
ICAgICAgIHRoaXMucHJldmlvdXNNZXNzYWdlID0gbXNnOwpAQCAtMzAzLDYgKzMwNSw4IEBAIFdl
Ykluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnJlc291cmNlcy5jbGVhck1lc3NhZ2VzKCk7CisgICAgICAgIGlmIChXZWJJbnNwZWN0
b3IucmVzb3VyY2VNYW5hZ2VyKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlTWFu
YWdlci5jbGVhckNvbnNvbGVNZXNzYWdlcygpOwogCiAgICAgICAgIHRoaXMubWVzc2FnZXMgPSBb
XTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpz
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCmluZGV4IGFjYzEyYTMu
LjAzOTk0NWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTUz
MCw2ICs1MzAsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgIHNl
dCBlcnJvcnMoeCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Vycm9ycyA9IHg7CisgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJlcnJvcnMtd2FybmluZ3MtdXBkYXRlZCIpOwog
ICAgIH0sCiAKICAgICBnZXQgd2FybmluZ3MoKQpAQCAtNTQwLDYgKzU0MSwyNSBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgIHNldCB3YXJuaW5ncyh4KQogICAgIHsK
ICAgICAgICAgdGhpcy5fd2FybmluZ3MgPSB4OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycygiZXJyb3JzLXdhcm5pbmdzLXVwZGF0ZWQiKTsKKyAgICB9LAorCisgICAgZ2V0
IHNlYXJjaE1hdGNoZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaE1hdGNo
ZXMgfHwgMDsKKyAgICB9LAorCisgICAgc2V0IHNlYXJjaE1hdGNoZXMoeCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX3NlYXJjaE1hdGNoZXMgPSB4OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycygic2VhcmNoLW1hdGNoZXMtdXBkYXRlZCIpOworICAgIH0sCisKKyAgICBjbGVh
ckVycm9yc0FuZFdhcm5pbmdzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl93YXJu
aW5ncyA9IDA7CisgICAgICAgIHRoaXMuX2Vycm9ycyA9IDA7CisgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKCJlcnJvcnMtd2FybmluZ3MtdXBkYXRlZCIpOwogICAgIH0sCiAK
ICAgICBfbWltZVR5cGVJc0NvbnNpc3RlbnRXaXRoVHlwZTogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlTWFuYWdlci5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZU1hbmFnZXIuanMKaW5kZXggMmQ4ZGRhMS4u
NzE2YjgyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
TWFuYWdlci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VNYW5h
Z2VyLmpzCkBAIC00OCw4ICs0OCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIgPSBm
dW5jdGlvbigpCiAgICAgICAgICJkaWRDbG9zZVdlYlNvY2tldCIpOwogCiAgICAgdGhpcy5fcmVz
b3VyY2VzQnlJZCA9IHt9OwotICAgIHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZCA9IHt9OwotICAg
IHRoaXMuX2xhc3RDYWNoZWRJZCA9IDA7CisgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwgPSBu
ZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsKCk7CiAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5jYWNoZWRSZXNvdXJjZXModGhpcy5fcHJvY2Vzc0NhY2hlZFJlc291cmNlcy5iaW5kKHRoaXMp
KTsKIH0KIApAQCAtNjMsOCArNjIsMTAgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5w
cm90b3R5cGUgPSB7CiAgICAgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0OiBmdW5jdGlvbihp
ZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgaXNNYWluUmVzb3VyY2UpCiAgICAgewogICAgICAgICB2
YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJjZShpZGVudGlmaWVyLCB1cmwsIGxvYWRl
cik7Ci0gICAgICAgIGlmIChpc01haW5SZXNvdXJjZSkKKyAgICAgICAgaWYgKGlzTWFpblJlc291
cmNlKSB7CiAgICAgICAgICAgICByZXNvdXJjZS5pc01haW5SZXNvdXJjZSA9IHRydWU7CisgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IubWFpblJlc291cmNlID0gcmVzb3VyY2U7CisgICAgICAgIH0K
IAogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuYWRkUmVzb3VyY2UocmVzb3Vy
Y2UpOwogICAgIH0sCkBAIC03MiwxNSArNzMsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICBfY3JlYXRlUmVzb3VyY2U6IGZ1bmN0aW9uKGlkZW50aWZp
ZXIsIHVybCwgbG9hZGVyKQogICAgIHsKICAgICAgICAgdmFyIHJlc291cmNlID0gbmV3IFdlYklu
c3BlY3Rvci5SZXNvdXJjZShpZGVudGlmaWVyLCB1cmwpOwotICAgICAgICB0aGlzLl9yZXNvdXJj
ZXNCeUlkW2lkZW50aWZpZXJdID0gcmVzb3VyY2U7Ci0KICAgICAgICAgcmVzb3VyY2UubG9hZGVy
ID0gbG9hZGVyOwotICAgICAgICB2YXIgcmVzb3VyY2VzRm9yRnJhbWUgPSB0aGlzLl9yZXNvdXJj
ZXNCeUZyYW1lSWRbbG9hZGVyLmZyYW1lSWRdOwotICAgICAgICBpZiAoIXJlc291cmNlc0ZvckZy
YW1lKSB7Ci0gICAgICAgICAgICByZXNvdXJjZXNGb3JGcmFtZSA9IFtdOwotICAgICAgICAgICAg
dGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2xvYWRlci5mcmFtZUlkXSA9IHJlc291cmNlc0ZvckZy
YW1lOwotICAgICAgICB9Ci0gICAgICAgIHJlc291cmNlc0ZvckZyYW1lLnB1c2gocmVzb3VyY2Up
OworCisgICAgICAgIHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl0gPSByZXNvdXJjZTsK
ICAgICAgICAgcmV0dXJuIHJlc291cmNlOwogICAgIH0sCiAKQEAgLTExMiwxMiArMTA3LDggQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAKICAgICBfYXBwZW5k
UmVkaXJlY3Q6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHJlZGlyZWN0VVJMKQogICAgIHsKLSAgICAg
ICAgLy8gV2UgYWx3YXlzIHN0b3JlIGxhc3QgcmVkaXJlY3QgYnkgdGhlIG9yaWdpbmFsIGlkIGtl
eS4gUmVzdCBvZiB0aGUgcmVkaXJlY3RzIGFyZSByZWZlcmVuY2VkIGZyb20gd2l0aGluIHRoZSBs
YXN0IG9uZS4KLQogICAgICAgICB2YXIgb3JpZ2luYWxSZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNl
c0J5SWRbaWRlbnRpZmllcl07Ci0gICAgICAgIHZhciByZWRpcmVjdElkZW50aWZpZXIgPSBvcmln
aW5hbFJlc291cmNlLmlkZW50aWZpZXIgKyAiOiIgKyAob3JpZ2luYWxSZXNvdXJjZS5yZWRpcmVj
dHMgPyBvcmlnaW5hbFJlc291cmNlLnJlZGlyZWN0cy5sZW5ndGggOiAwKTsKLSAgICAgICAgb3Jp
Z2luYWxSZXNvdXJjZS5pZGVudGlmaWVyID0gcmVkaXJlY3RJZGVudGlmaWVyOwotICAgICAgICB0
aGlzLl9yZXNvdXJjZXNCeUlkW3JlZGlyZWN0SWRlbnRpZmllcl0gPSBvcmlnaW5hbFJlc291cmNl
OworICAgICAgICBvcmlnaW5hbFJlc291cmNlLmlkZW50aWZpZXIgPSBudWxsOwogCiAgICAgICAg
IHZhciBuZXdSZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKGlkZW50aWZpZXIsIHJlZGly
ZWN0VVJMLCBvcmlnaW5hbFJlc291cmNlLmxvYWRlcik7CiAgICAgICAgIG5ld1Jlc291cmNlLnJl
ZGlyZWN0cyA9IG9yaWdpbmFsUmVzb3VyY2UucmVkaXJlY3RzIHx8IFtdOwpAQCAtMTQ2LDcgKzEz
Nyw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAg
ICByZXNvdXJjZS5yZXNwb25zZVJlY2VpdmVkVGltZSA9IHRpbWU7CiAKICAgICAgICAgV2ViSW5z
cGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJlc2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAg
IHRoaXMuX2FkZFJlc291cmNlVG9TdG9yYWdlRnJhbWUocmVzb3VyY2UubG9hZGVyLmZyYW1lSWQs
IHJlc291cmNlKTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuYWRkUmVzb3VyY2VU
b0ZyYW1lKHJlc291cmNlLmxvYWRlci5mcmFtZUlkLCByZXNvdXJjZSk7CiAgICAgfSwKIAogICAg
IF91cGRhdGVSZXNvdXJjZVdpdGhSZXNwb25zZTogZnVuY3Rpb24ocmVzb3VyY2UsIHJlc3BvbnNl
KQpAQCAtMTk1LDYgKzE4Niw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucHJvdG90
eXBlID0gewogICAgICAgICByZXNvdXJjZS5lbmRUaW1lID0gZmluaXNoVGltZTsKIAogICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsK
KyAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07CiAgICAgfSwK
IAogICAgIGRpZEZhaWxMb2FkaW5nOiBmdW5jdGlvbihpZGVudGlmaWVyLCB0aW1lLCBsb2NhbGl6
ZWREZXNjcmlwdGlvbikKQEAgLTIwNywxOCArMTk5LDE4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICByZXNvdXJjZS5lbmRUaW1lID0gdGltZTsK
IAogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJl
c291cmNlKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07
CiAgICAgfSwKIAogICAgIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZTogZnVuY3Rpb24o
dGltZSwgY2FjaGVkUmVzb3VyY2UpCiAgICAgewotICAgICAgICB2YXIgaWRlbnRpZmllciA9ICJj
YWNoZWQ6IiArIHRoaXMuX2xhc3RDYWNoZWRJZCsrOwotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0
aGlzLl9jcmVhdGVSZXNvdXJjZShpZGVudGlmaWVyLCBjYWNoZWRSZXNvdXJjZS51cmwsIGNhY2hl
ZFJlc291cmNlLmxvYWRlcik7CisgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJl
c291cmNlKG51bGwsIGNhY2hlZFJlc291cmNlLnVybCwgY2FjaGVkUmVzb3VyY2UubG9hZGVyKTsK
ICAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2Us
IGNhY2hlZFJlc291cmNlKTsKICAgICAgICAgcmVzb3VyY2UuY2FjaGVkID0gdHJ1ZTsKICAgICAg
ICAgcmVzb3VyY2Uuc3RhcnRUaW1lID0gcmVzb3VyY2UucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSBy
ZXNvdXJjZS5lbmRUaW1lID0gdGltZTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsuYWRkUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LnN0b3JhZ2UuYWRkUmVzb3VyY2VUb0ZyYW1lKHJlc291cmNlLmxvYWRlci5mcmFtZUlkLCByZXNv
dXJjZSk7CisgICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmFkZFJlc291cmNlVG9GcmFt
ZShyZXNvdXJjZS5sb2FkZXIuZnJhbWVJZCwgcmVzb3VyY2UpOwogICAgIH0sCiAKICAgICBfdXBk
YXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlLCBjYWNoZWRS
ZXNvdXJjZSkKQEAgLTI0Miw0OCArMjM0LDEyIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFn
ZXIucHJvdG90eXBlID0gewogCiAgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBmdW5jdGlvbihw
YXJlbnRGcmFtZUlkLCBsb2FkZXIpCiAgICAgewotICAgICAgICB0aGlzLl9jbGVhclJlc291cmNl
cyhsb2FkZXIuZnJhbWVJZCwgbG9hZGVyLmxvYWRlcklkKTsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5zdG9yYWdlLnJlbW92ZVJlc291cmNlc0Zyb21GcmFtZShsb2FkZXIuZnJhbWVJZCk7
Ci0KLSAgICAgICAgdmFyIHRtcFJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZShu
dWxsLCBsb2FkZXIudXJsKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zdG9yYWdlLmFk
ZE9yVXBkYXRlRnJhbWUocGFyZW50RnJhbWVJZCwgbG9hZGVyLmZyYW1lSWQsIHRtcFJlc291cmNl
LmRpc3BsYXlOYW1lKTsKLQotICAgICAgICB2YXIgcmVzb3VyY2VzRm9yRnJhbWUgPSB0aGlzLl9y
ZXNvdXJjZXNCeUZyYW1lSWRbbG9hZGVyLmZyYW1lSWRdOwotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJlc291cmNlc0ZvckZyYW1lLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5f
YWRkUmVzb3VyY2VUb1N0b3JhZ2VGcmFtZShsb2FkZXIuZnJhbWVJZCwgcmVzb3VyY2VzRm9yRnJh
bWVbaV0pOwotICAgIH0sCi0KLSAgICBfYWRkUmVzb3VyY2VUb1N0b3JhZ2VGcmFtZTogZnVuY3Rp
b24oZnJhbWVJZCwgcmVzb3VyY2UpCi0gICAgewotICAgICAgICAvLyBEbyBub3Qgc2hvdyByZWRp
cmVjdHMgaW4gcmVzb3VyY2UgYnJvd3Nlci4KLSAgICAgICAgaWYgKHJlc291cmNlLnN0YXR1c0Nv
ZGUgPCAzMDAgfHwgcmVzb3VyY2Uuc3RhdHVzQ29kZSA+IDMwMykKLSAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5wYW5lbHMuc3RvcmFnZS5hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWVJZCwgcmVzb3Vy
Y2UpOworICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5kaWRDb21taXRMb2FkRm9yRnJh
bWUocGFyZW50RnJhbWVJZCwgbG9hZGVyKTsKICAgICB9LAogCiAgICAgZnJhbWVEZXRhY2hlZEZy
b21QYXJlbnQ6IGZ1bmN0aW9uKGZyYW1lSWQpCiAgICAgewotICAgICAgICB0aGlzLl9jbGVhclJl
c291cmNlcyhmcmFtZUlkLCAwKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zdG9yYWdl
LnJlbW92ZUZyYW1lKGZyYW1lSWQpOwotICAgIH0sCi0KLSAgICBfY2xlYXJSZXNvdXJjZXM6IGZ1
bmN0aW9uKGZyYW1lSWQsIGxvYWRlclRvUHJlc2VydmVJZCkKLSAgICB7Ci0gICAgICAgIHZhciBy
ZXNvdXJjZXNGb3JGcmFtZSA9IHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZUlkXTsKLSAg
ICAgICAgaWYgKCFyZXNvdXJjZXNGb3JGcmFtZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB2YXIgcHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWUgPSBbXTsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCByZXNvdXJjZXNGb3JGcmFtZS5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgdmFyIHJlc291cmNlID0gcmVzb3VyY2VzRm9yRnJhbWVbaV07Ci0gICAgICAgICAgICBpZiAo
cmVzb3VyY2UubG9hZGVyLmxvYWRlcklkID09PSBsb2FkZXJUb1ByZXNlcnZlSWQpIHsKLSAgICAg
ICAgICAgICAgICBwcmVzZXJ2ZWRSZXNvdXJjZXNGb3JGcmFtZS5wdXNoKHJlc291cmNlKTsKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlbGV0
ZSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkXTsKLSAgICAgICAgfQotICAgICAgICBkZWxldGUgdGhp
cy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lSWRdOwotICAgICAgICBpZiAocHJlc2VydmVkUmVz
b3VyY2VzRm9yRnJhbWUubGVuZ3RoKQotICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlGcmFt
ZUlkW2ZyYW1lSWRdID0gcHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWU7CisgICAgICAgIHRoaXMu
X3Jlc291cmNlVHJlZU1vZGVsLmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KGZyYW1lSWQpOwogICAg
IH0sCiAKICAgICBkaWRDcmVhdGVXZWJTb2NrZXQ6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHJlcXVl
c3RVUkwpCkBAIC0zNDMsOCArMjk5LDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5w
cm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgZnJhbWVSZXNvdXJjZSA9IHRoaXMuX2Ny
ZWF0ZVJlc291cmNlKG51bGwsIGZyYW1lUGF5bG9hZC5yZXNvdXJjZS51cmwsIGZyYW1lUGF5bG9h
ZC5yZXNvdXJjZS5sb2FkZXIpOwogICAgICAgICBmcmFtZVJlc291cmNlLnR5cGUgPSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZVsiRG9jdW1lbnQiXTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBh
bmVscy5zdG9yYWdlLmFkZE9yVXBkYXRlRnJhbWUocGFyZW50RnJhbWVJZCwgZnJhbWVQYXlsb2Fk
LmlkLCBmcmFtZVJlc291cmNlLmRpc3BsYXlOYW1lKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBh
bmVscy5zdG9yYWdlLmFkZFJlc291cmNlVG9GcmFtZShmcmFtZVBheWxvYWQuaWQsIGZyYW1lUmVz
b3VyY2UpOworICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRPclVwZGF0ZUZyYW1l
KHBhcmVudEZyYW1lSWQsIGZyYW1lUGF5bG9hZC5pZCwgZnJhbWVSZXNvdXJjZS5kaXNwbGF5TmFt
ZSk7CisgICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmFkZFJlc291cmNlVG9GcmFtZShm
cmFtZVBheWxvYWQuaWQsIGZyYW1lUmVzb3VyY2UpOwogCiAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBmcmFtZVBheWxvYWQuY2hpbGRyZW4gJiYgaSA8IGZyYW1lUGF5bG9hZC5jaGlsZHJlbi5sZW5n
dGg7ICsraSkKICAgICAgICAgICAgIHRoaXMuX2FkZEZyYW1lc1JlY3Vyc2l2ZWx5KGZyYW1lUGF5
bG9hZC5pZCwgZnJhbWVQYXlsb2FkLmNoaWxkcmVuW2ldKTsKQEAgLTM1Niw4ICszMTIsNDUgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2
YXIgY2FjaGVkUmVzb3VyY2UgPSBmcmFtZVBheWxvYWQuc3VicmVzb3VyY2VzW2ldOwogICAgICAg
ICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fY3JlYXRlUmVzb3VyY2UobnVsbCwgY2FjaGVkUmVz
b3VyY2UudXJsLCBjYWNoZWRSZXNvdXJjZS5sb2FkZXIpOwogICAgICAgICAgICAgdGhpcy5fdXBk
YXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2UsIGNhY2hlZFJlc291cmNlKTsK
LSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc3RvcmFnZS5hZGRSZXNvdXJjZVRvRnJh
bWUoZnJhbWVQYXlsb2FkLmlkLCByZXNvdXJjZSk7CisgICAgICAgICAgICB0aGlzLl9yZXNvdXJj
ZVRyZWVNb2RlbC5hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWVQYXlsb2FkLmlkLCByZXNvdXJjZSk7
CiAgICAgICAgIH0KKyAgICB9LAorCisgICAgcmVzb3VyY2VGb3JVUkw6IGZ1bmN0aW9uKHVybCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5yZXNvdXJjZUZv
clVSTCh1cmwpOworICAgIH0sCisKKyAgICBhZGRDb25zb2xlTWVzc2FnZTogZnVuY3Rpb24obXNn
KQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwu
cmVzb3VyY2VGb3JVUkwobXNnLnVybCk7CisgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgc3dpdGNoIChtc2cubGV2ZWwpIHsKKyAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmc6CisgICAg
ICAgICAgICByZXNvdXJjZS53YXJuaW5ncyArPSBtc2cucmVwZWF0RGVsdGE7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZUxldmVsLkVycm9yOgorICAgICAgICAgICAgcmVzb3VyY2UuZXJyb3JzICs9IG1zZy5yZXBlYXRE
ZWx0YTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHZpZXcg
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlVmlld0ZvclJlc291cmNlKHJl
c291cmNlKTsKKyAgICAgICAgaWYgKHZpZXcuYWRkTWVzc2FnZSkKKyAgICAgICAgICAgIHZpZXcu
YWRkTWVzc2FnZShtc2cpOworICAgIH0sCisKKyAgICBjbGVhckNvbnNvbGVNZXNzYWdlczogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2socmVzb3VyY2UpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJlc291cmNlLmNsZWFyRXJyb3JzQW5kV2FybmluZ3MoKTsKKyAg
ICAgICAgICAgIHZhciB2aWV3ID0gcmVzb3VyY2UuX3Jlc291cmNlc1ZpZXc7CisgICAgICAgICAg
ICBpZiAodmlldyAmJiB2aWV3LmNsZWFyTWVzc2FnZXMpCisgICAgICAgICAgICAgICAgdmlldy5j
bGVhck1lc3NhZ2VzKCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9k
ZWwuZm9yQWxsUmVzb3VyY2VzKGNhbGxiYWNrKTsKICAgICB9CiB9CiAKQEAgLTQxNywzICs0MTAs
MTQxIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIuZ2V0Q29udGVudHMgPSBmdW5jdGlv
bihyZXNvdXJjZSwgY2FsbGJhY2spCiAgICAgZWxzZQogICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LmdldFJlc291cmNlQ29udGVudChyZXNvdXJjZS5pZGVudGlmaWVyLCBmYWxzZSwgY2FsbGJhY2sp
OwogfQorCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwgPSBmdW5jdGlvbigpCit7Cisg
ICAgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkID0ge307CisgICAgdGhpcy5fc3ViZnJhbWVzID0g
e307CisgICAgdGhpcy5fcmVzb3VyY2VzQnlVUkwgPSB7fTsKK30KKworV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9IHsKKyAgICBhZGRPclVwZGF0ZUZyYW1lOiBmdW5j
dGlvbihwYXJlbnRGcmFtZUlkLCBmcmFtZUlkLCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgICAg
IFdlYkluc3BlY3Rvci5wYW5lbHMuc3RvcmFnZS5hZGRPclVwZGF0ZUZyYW1lKHBhcmVudEZyYW1l
SWQsIGZyYW1lSWQsIGRpc3BsYXlOYW1lKTsKKyAgICAgICAgdmFyIHN1YmZyYW1lcyA9IHRoaXMu
X3N1YmZyYW1lc1twYXJlbnRGcmFtZUlkXTsKKyAgICAgICAgaWYgKCFzdWJmcmFtZXMpIHsKKyAg
ICAgICAgICAgIHN1YmZyYW1lcyA9IHt9OworICAgICAgICAgICAgdGhpcy5fc3ViZnJhbWVzW3Bh
cmVudEZyYW1lSWQgfHwgMF0gPSBzdWJmcmFtZXM7CisgICAgICAgIH0KKyAgICAgICAgc3ViZnJh
bWVzW2ZyYW1lSWRdID0gdHJ1ZTsKKyAgICB9LAorCisgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1l
OiBmdW5jdGlvbihwYXJlbnRGcmFtZUlkLCBsb2FkZXIpCisgICAgeworICAgICAgICB0aGlzLl9j
bGVhckNoaWxkRnJhbWVzQW5kUmVzb3VyY2VzKGxvYWRlci5mcmFtZUlkLCBsb2FkZXIubG9hZGVy
SWQpOworCisgICAgICAgIHZhciB0bXBSZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UobnVsbCwgbG9hZGVyLnVybCk7CisgICAgICAgIHRoaXMuYWRkT3JVcGRhdGVGcmFtZShwYXJl
bnRGcmFtZUlkLCBsb2FkZXIuZnJhbWVJZCwgdG1wUmVzb3VyY2UuZGlzcGxheU5hbWUpOworCisg
ICAgICAgIHZhciByZXNvdXJjZXNGb3JGcmFtZSA9IHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFts
b2FkZXIuZnJhbWVJZF07CisgICAgICAgIGZvciAodmFyIGkgPSAwOyByZXNvdXJjZXNGb3JGcmFt
ZSAmJiBpIDwgcmVzb3VyY2VzRm9yRnJhbWUubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IucGFuZWxzLnN0b3JhZ2UuYWRkUmVzb3VyY2VUb0ZyYW1lKGxvYWRlci5mcmFtZUlk
LCByZXNvdXJjZXNGb3JGcmFtZVtpXSk7CisgICAgfSwKKworICAgIGZyYW1lRGV0YWNoZWRGcm9t
UGFyZW50OiBmdW5jdGlvbihmcmFtZUlkKQorICAgIHsKKyAgICAgICAgdGhpcy5fY2xlYXJDaGls
ZEZyYW1lc0FuZFJlc291cmNlcyhmcmFtZUlkLCAwKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBh
bmVscy5zdG9yYWdlLnJlbW92ZUZyYW1lKGZyYW1lSWQpOworICAgIH0sCisKKyAgICBfY2xlYXJD
aGlsZEZyYW1lc0FuZFJlc291cmNlczogZnVuY3Rpb24oZnJhbWVJZCwgbG9hZGVySWQpCisgICAg
eworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnN0b3JhZ2UucmVtb3ZlUmVzb3VyY2VzRnJv
bUZyYW1lKGZyYW1lSWQpOworCisgICAgICAgIHRoaXMuX2NsZWFyUmVzb3VyY2VzKGZyYW1lSWQs
IGxvYWRlcklkKTsKKyAgICAgICAgdmFyIHN1YmZyYW1lcyA9IHRoaXMuX3N1YmZyYW1lc1tmcmFt
ZUlkXTsKKyAgICAgICAgaWYgKCFzdWJmcmFtZXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgZm9yICh2YXIgY2hpbGRGcmFtZUlkIGluIHN1YmZyYW1lcykgeworICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLnBhbmVscy5zdG9yYWdlLnJlbW92ZUZyYW1lKGNoaWxkRnJhbWVJZCk7Cisg
ICAgICAgICAgICB0aGlzLl9jbGVhckNoaWxkRnJhbWVzQW5kUmVzb3VyY2VzKGNoaWxkRnJhbWVJ
ZCwgbG9hZGVySWQpOworICAgICAgICB9CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zdWJmcmFtZXNb
ZnJhbWVJZF07CisgICAgfSwKKworICAgIGFkZFJlc291cmNlVG9GcmFtZTogZnVuY3Rpb24oZnJh
bWVJZCwgcmVzb3VyY2UpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2VzRm9yRnJhbWUgPSB0
aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF07CisgICAgICAgIGlmICghcmVzb3VyY2Vz
Rm9yRnJhbWUpIHsKKyAgICAgICAgICAgIHJlc291cmNlc0ZvckZyYW1lID0gW107CisgICAgICAg
ICAgICB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF0gPSByZXNvdXJjZXNGb3JGcmFt
ZTsKKyAgICAgICAgfQorICAgICAgICByZXNvdXJjZXNGb3JGcmFtZS5wdXNoKHJlc291cmNlKTsK
KyAgICAgICAgdGhpcy5fYmluZFJlc291cmNlVVJMKHJlc291cmNlKTsKKworICAgICAgICBXZWJJ
bnNwZWN0b3IucGFuZWxzLnN0b3JhZ2UuYWRkUmVzb3VyY2VUb0ZyYW1lKGZyYW1lSWQsIHJlc291
cmNlKTsKKyAgICB9LAorCisgICAgX2NsZWFyUmVzb3VyY2VzOiBmdW5jdGlvbihmcmFtZUlkLCBs
b2FkZXJUb1ByZXNlcnZlSWQpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2VzRm9yRnJhbWUg
PSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJhbWVJZF07CisgICAgICAgIGlmICghcmVzb3Vy
Y2VzRm9yRnJhbWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHByZXNlcnZl
ZFJlc291cmNlc0ZvckZyYW1lID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVz
b3VyY2VzRm9yRnJhbWUubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZSA9
IHJlc291cmNlc0ZvckZyYW1lW2ldOworICAgICAgICAgICAgaWYgKHJlc291cmNlLmxvYWRlci5s
b2FkZXJJZCA9PT0gbG9hZGVyVG9QcmVzZXJ2ZUlkKSB7CisgICAgICAgICAgICAgICAgcHJlc2Vy
dmVkUmVzb3VyY2VzRm9yRnJhbWUucHVzaChyZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl91bmJpbmRSZXNvdXJjZVVS
TChyZXNvdXJjZSk7CisgICAgICAgIH0KKworICAgICAgICBkZWxldGUgdGhpcy5fcmVzb3VyY2Vz
QnlGcmFtZUlkW2ZyYW1lSWRdOworICAgICAgICBpZiAocHJlc2VydmVkUmVzb3VyY2VzRm9yRnJh
bWUubGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lSWRd
ID0gcHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWU7CisgICAgfSwKKworICAgIF9iaW5kUmVzb3Vy
Y2VVUkw6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlRm9y
VVJMID0gdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJsXTsKKyAgICAgICAgaWYgKCFy
ZXNvdXJjZUZvclVSTCkKKyAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNl
LnVybF0gPSByZXNvdXJjZTsKKyAgICAgICAgZWxzZSBpZiAocmVzb3VyY2VGb3JVUkwgaW5zdGFu
Y2VvZiBBcnJheSkKKyAgICAgICAgICAgIHJlc291cmNlRm9yVVJMLnB1c2gocmVzb3VyY2UpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51
cmxdID0gWyByZXNvdXJjZUZvclVSTCBdOworICAgIH0sCisKKyAgICBfdW5iaW5kUmVzb3VyY2VV
Ukw6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlRm9yVVJM
ID0gdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJsXTsKKyAgICAgICAgaWYgKCFyZXNv
dXJjZUZvclVSTCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAocmVzb3VyY2VG
b3JVUkwgaW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAgcmVzb3VyY2VGb3JVUkwucmVt
b3ZlKHJlc291cmNlLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChyZXNvdXJjZUZvclVSTC5sZW5n
dGggPT09IDEpCisgICAgICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2Uu
dXJsXSA9IHJlc291cmNlRm9yVVJMWzBdOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF07Cisg
ICAgfSwKKworICAgIHJlc291cmNlRm9yVVJMOiBmdW5jdGlvbih1cmwpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fcmVzb3VyY2VzQnlVUkxbdXJsXTsKKyAgICB9LAorCisgICAgZm9yQWxs
UmVzb3VyY2VzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuX2NhbGxG
b3JGcmFtZVJlc291cmNlcygwLCBjYWxsYmFjayk7CisgICAgfSwKKworICAgIF9jYWxsRm9yRnJh
bWVSZXNvdXJjZXM6IGZ1bmN0aW9uKGZyYW1lSWQsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAg
dmFyIHJlc291cmNlcyA9IHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtmcmFtZUlkXTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IHJlc291cmNlcyAmJiBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytp
KQorICAgICAgICAgICAgY2FsbGJhY2socmVzb3VyY2VzW2ldKTsKKyAgICAgICAgCisgICAgICAg
IHZhciBmcmFtZXMgPSB0aGlzLl9zdWJmcmFtZXNbZnJhbWVJZF07CisgICAgICAgIGlmIChmcmFt
ZXMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGlkIGluIGZyYW1lcykKKyAgICAgICAgICAgICAg
ICB0aGlzLl9jYWxsRm9yRnJhbWVSZXNvdXJjZXMoaWQsIGNhbGxiYWNrKTsKKyAgICAgICAgfQor
ICAgIH0KK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9yYWdl
UGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3RvcmFnZVBhbmVsLmpzCmlu
ZGV4IDBkODAwODIuLjk0ZjY1NjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TdG9yYWdlUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0
b3JhZ2VQYW5lbC5qcwpAQCAtMzMsOSArMzMsMTAgQEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5l
bCA9IGZ1bmN0aW9uKGRhdGFiYXNlKQogCiAgICAgdGhpcy5jcmVhdGVTaWRlYmFyKCk7CiAgICAg
dGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJvdXRsaW5lLWRpc2Nsb3N1cmUgZmls
dGVyLWFsbCBjaGlsZHJlbiBzbWFsbCIpOworICAgIHRoaXMuc2lkZWJhclRyZWVFbGVtZW50LnJl
bW92ZVN0eWxlQ2xhc3MoInNpZGViYXItdHJlZSIpOwogCiAgICAgaWYgKFByZWZlcmVuY2VzLm5l
dHdvcmtQYW5lbEVuYWJsZWQpIHsKLSAgICAgICAgdGhpcy5yZXNvdXJjZXNMaXN0VHJlZUVsZW1l
bnQgPSBuZXcgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50KHRoaXMsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2VzIiksICJmcmFtZS1zdG9yYWdlLXRyZWUtaXRl
bSIpOworICAgICAgICB0aGlzLnJlc291cmNlc0xpc3RUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNw
ZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVsZW1lbnQodGhpcywgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJGcmFtZXMiKSwgImZyYW1lLXN0b3JhZ2UtdHJlZS1pdGVtIik7CiAgICAgICAgIHRoaXMu
c2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQodGhpcy5yZXNvdXJjZXNMaXN0VHJlZUVsZW1lbnQpOwog
ICAgICAgICB0aGlzLnJlc291cmNlc0xpc3RUcmVlRWxlbWVudC5leHBhbmQoKTsKICAgICAgICAg
dGhpcy5fdHJlZUVsZW1lbnRGb3JGcmFtZUlkID0ge307CkBAIC03Niw3ICs3Nyw3IEBAIFdlYklu
c3BlY3Rvci5TdG9yYWdlUGFuZWwgPSBmdW5jdGlvbihkYXRhYmFzZSkKIFdlYkluc3BlY3Rvci5T
dG9yYWdlUGFuZWwucHJvdG90eXBlID0gewogICAgIGdldCB0b29sYmFySXRlbUxhYmVsKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3JhZ2UiKTsKKyAg
ICAgICAgcmV0dXJuIFByZWZlcmVuY2VzLm5ldHdvcmtQYW5lbEVuYWJsZWQgPyBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJlc291cmNlcyIpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9yYWdl
Iik7CiAgICAgfSwKIAogICAgIGdldCBzdGF0dXNCYXJJdGVtcygpCkBAIC0xMTQsNyArMTE1LDcg
QEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
c3RvcmFnZVZpZXdzLnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgdGhpcy5zdG9yYWdlVmll
d1N0YXR1c0Jhckl0ZW1zQ29udGFpbmVyLnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgIAorCiAg
ICAgICAgIGlmICh0aGlzLnNpZGViYXJUcmVlLnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAgICAgICAg
ICAgICB0aGlzLnNpZGViYXJUcmVlLnNlbGVjdGVkVHJlZUVsZW1lbnQuZGVzZWxlY3QoKTsKICAg
ICB9LApAQCAtMTU3LDEzICsxNTgsOSBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdmFyIGZyYW1lVHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVu
dEZvckZyYW1lSWRbZnJhbWVJZF07CiAgICAgICAgIGlmICghZnJhbWVUcmVlRWxlbWVudCkKICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgY2hpbGRyZW4gPSBmcmFtZVRyZWVFbGVt
ZW50LmNoaWxkcmVuLnNsaWNlKCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRy
ZW4ubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLnJlbW92ZUZyYW1lKGNoaWxkcmVuW2ld
Ll9mcmFtZUlkKTsKLQogICAgICAgICBkZWxldGUgdGhpcy5fdHJlZUVsZW1lbnRGb3JGcmFtZUlk
W2ZyYW1lSWRdOwotICAgICAgICBmcmFtZVRyZWVFbGVtZW50LnBhcmVudC5yZW1vdmVDaGlsZChm
cmFtZVRyZWVFbGVtZW50KTsKKyAgICAgICAgaWYgKGZyYW1lVHJlZUVsZW1lbnQucGFyZW50KQor
ICAgICAgICAgICAgZnJhbWVUcmVlRWxlbWVudC5wYXJlbnQucmVtb3ZlQ2hpbGQoZnJhbWVUcmVl
RWxlbWVudCk7CiAgICAgfSwKIAogICAgIGFkZFJlc291cmNlVG9GcmFtZTogZnVuY3Rpb24oZnJh
bWVJZCwgcmVzb3VyY2UpCkBAIC0yNTMsNyArMjUwLDQwIEBAIFdlYkluc3BlY3Rvci5TdG9yYWdl
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIHNob3dSZXNvdXJj
ZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgY2FuU2hvd1NvdXJjZUxpbmU6IGZ1bmN0aW9uKHVy
bCwgbGluZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhIVdlYkluc3BlY3Rvci5yZXNvdXJjZU1h
bmFnZXIucmVzb3VyY2VGb3JVUkwodXJsKTsKKyAgICB9LAorCisgICAgc2hvd1NvdXJjZUxpbmU6
IGZ1bmN0aW9uKHVybCwgbGluZSkKKyAgICB7CisgICAgICAgIHRoaXMuc2hvd1Jlc291cmNlKFdl
Ykluc3BlY3Rvci5yZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwodXJsKSwgbGluZSk7Cisg
ICAgfSwKKworICAgIHNob3dSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UsIGxpbmUpCisgICAg
eworICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXNvdXJjZVRyZWVFbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAocmVzb3VyY2UgPT09IHJlc291cmNlVHJlZUVsZW1lbnQuX3Jl
c291cmNlKSB7CisgICAgICAgICAgICAgICAgcmVzb3VyY2VUcmVlRWxlbWVudC5yZXZlYWwoKTsK
KyAgICAgICAgICAgICAgICByZXNvdXJjZVRyZWVFbGVtZW50LnNlbGVjdCgpOworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRo
aXMuX2ZvckFsbFJlc291cmNlVHJlZUVsZW1lbnRzKGNhbGxiYWNrKTsKKworICAgICAgICBpZiAo
bGluZSkgeworICAgICAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5h
Z2VyLnJlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgICAgIHZpZXcu
c2VsZWN0Q29udGVudFRhYih0cnVlKTsKKyAgICAgICAgICAgIGlmICh2aWV3LnJldmVhbExpbmUp
CisgICAgICAgICAgICAgICAgdmlldy5yZXZlYWxMaW5lKGxpbmUpOworICAgICAgICAgICAgaWYg
KHZpZXcuaGlnaGxpZ2h0TGluZSkKKyAgICAgICAgICAgICAgICB2aWV3LmhpZ2hsaWdodExpbmUo
bGluZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIF9z
aG93UmVzb3VyY2VWaWV3OiBmdW5jdGlvbihyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIHZhciB2
aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJj
ZShyZXNvdXJjZSk7CiAgICAgICAgIHZpZXcuaGVhZGVyc1Zpc2libGUgPSBmYWxzZTsKQEAgLTUw
Myw2ICs1MzMsNzMgQEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuc3RvcmFnZVZpZXdzLnN0eWxlLmxlZnQgPSB3aWR0aCArICJweCI7CiAgICAg
ICAgIHRoaXMuc3RvcmFnZVZpZXdTdGF0dXNCYXJJdGVtc0NvbnRhaW5lci5zdHlsZS5sZWZ0ID0g
d2lkdGggKyAicHgiOwogICAgICAgICB0aGlzLnJlc2l6ZSgpOworICAgIH0sCisKKyAgICBnZXQg
c2VhcmNoYWJsZVZpZXdzKCkKKyAgICB7CisgICAgICAgIHZhciB2aWV3cyA9IFtdOworCisgICAg
ICAgIGlmICghUHJlZmVyZW5jZXMubmV0d29ya1BhbmVsRW5hYmxlZCkKKyAgICAgICAgICAgIHJl
dHVybiB2aWV3czsKKworICAgICAgICBjb25zdCB2aXNpYmxlVmlldyA9IHRoaXMudmlzaWJsZVZp
ZXc7CisgICAgICAgIGlmICh2aXNpYmxlVmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVZpZXcgJiYgdmlzaWJsZVZpZXcucGVyZm9ybVNlYXJjaCkKKyAgICAgICAgICAgIHZpZXdz
LnB1c2godmlzaWJsZVZpZXcpOworCisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc291cmNl
VHJlZUVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IHJlc291
cmNlVHJlZUVsZW1lbnQuX3Jlc291cmNlOworICAgICAgICAgICAgdmFyIHJlc291cmNlVmlldyA9
IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UocmVz
b3VyY2UpOworICAgICAgICAgICAgaWYgKHJlc291cmNlVmlldy5wZXJmb3JtU2VhcmNoICYmIHJl
c291cmNlVmlldyAhPT0gdmlzaWJsZVZpZXcpCisgICAgICAgICAgICAgICAgdmlld3MucHVzaChy
ZXNvdXJjZVZpZXcpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX2ZvckFsbFJlc291cmNlVHJl
ZUVsZW1lbnRzKGNhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuIHZpZXdzOworICAgIH0sCisKKyAg
ICBfZm9yQWxsUmVzb3VyY2VUcmVlRWxlbWVudHM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgdmFyIHN0b3AgPSBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgdHJlZUVsZW1lbnQg
PSB0aGlzLnJlc291cmNlc0xpc3RUcmVlRWxlbWVudDsgIXN0b3AgJiYgdHJlZUVsZW1lbnQ7IHRy
ZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2UsIHRo
aXMucmVzb3VyY2VzTGlzdFRyZWVFbGVtZW50LCB0cnVlKSkgeworICAgICAgICAgICAgaWYgKHRy
ZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVu
dCkKKyAgICAgICAgICAgICAgICBzdG9wID0gY2FsbGJhY2sodHJlZUVsZW1lbnQpOworICAgICAg
ICB9CisgICAgfSwKKworICAgIHNlYXJjaE1hdGNoRm91bmQ6IGZ1bmN0aW9uKHZpZXcsIG1hdGNo
ZXMpCisgICAgeworICAgICAgICBpZiAodmlldy5yZXNvdXJjZSkKKyAgICAgICAgICAgIHZpZXcu
cmVzb3VyY2Uuc2VhcmNoTWF0Y2hlcyA9IG1hdGNoZXM7CisgICAgfSwKKworICAgIHNlYXJjaENh
bmNlbGVkOiBmdW5jdGlvbihzdGFydGluZ05ld1NlYXJjaCkKKyAgICB7CisgICAgICAgIFdlYklu
c3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuc2VhcmNoQ2FuY2VsZWQuY2FsbCh0aGlzLCBzdGFydGlu
Z05ld1NlYXJjaCk7CisKKyAgICAgICAgaWYgKHN0YXJ0aW5nTmV3U2VhcmNoKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc291cmNlVHJlZUVsZW1l
bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc291cmNlVHJlZUVsZW1lbnQuX2Vycm9yc1dh
cm5pbmdzVXBkYXRlZCgpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX2ZvckFsbFJlc291cmNl
VHJlZUVsZW1lbnRzKGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgcGVyZm9ybVNlYXJjaDogZnVu
Y3Rpb24ocXVlcnkpCisgICAgeworICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXNvdXJjZVRy
ZWVFbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICByZXNvdXJjZVRyZWVFbGVtZW50Ll9y
ZXNldEJ1YmJsZSgpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX2ZvckFsbFJlc291cmNlVHJl
ZUVsZW1lbnRzKGNhbGxiYWNrKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlw
ZS5wZXJmb3JtU2VhcmNoLmNhbGwodGhpcywgcXVlcnkpOworICAgIH0sCisKKyAgICBzaG93Vmll
dzogZnVuY3Rpb24odmlldykKKyAgICB7CisgICAgICAgIGlmICh2aWV3KQorICAgICAgICAgICAg
dGhpcy5zaG93UmVzb3VyY2Uodmlldy5yZXNvdXJjZSk7CiAgICAgfQogfQogCkBAIC01MjYsOSAr
NjIzLDkgQEAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLmltYWdlRWxlbWVudC5jbGFzc05hbWUgPSAiaWNvbiI7CiAgICAgICAg
IHRoaXMubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaW1hZ2VFbGVtZW50KTsKIAot
ICAgICAgICB0aGlzLnRpdGxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsKKyAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQuY2xhc3NOYW1lID0gImJhc2Utc3RvcmFn
ZS10cmVlLWVsZW1lbnQtdGl0bGUiOwogICAgICAgICB0aGlzLnRpdGxlRWxlbWVudC50ZXh0Q29u
dGVudCA9IHRoaXMuX3RpdGxlVGV4dDsKLSAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQuY2xhc3NO
YW1lID0gInN0b3JhZ2UtYmFzZS10cmVlLWVsZW1lbnQtdGl0bGUiOwogICAgICAgICB0aGlzLmxp
c3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnRpdGxlRWxlbWVudCk7CiAKICAgICAgICAg
dmFyIHNlbGVjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAg
LTU0Niw2ICs2NDMsMTYgQEAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhpcy5fdGl0bGVUZXh0ID0gdGl0bGVUZXh0Owog
ICAgICAgICB0aGlzLnRpdGxlRWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMuX3RpdGxlVGV4dDsK
KyAgICB9LAorCisgICAgaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZTogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgLy8gT3ZlcnJpZGUgaXQgc2luY2Ugd2UgdXNlIG1hcmdpbi1sZWZ0
IGluIHBsYWNlIG9mIHRyZWVvdXRsaW5lJ3MgdGV4dC1pbmRlbnQuCisgICAgICAgIC8vIEhlbmNl
IHdlIG5lZWQgdG8gdGFrZSBwYWRkaW5nIGludG8gY29uc2lkZXJhdGlvbi4gVGhpcyBhbGwgaXMg
bmVlZGVkIGZvciBsZWFkaW5nCisgICAgICAgIC8vIGljb25zIGluIHRoZSB0cmVlLgorICAgICAg
ICBjb25zdCBwYWRkaW5nTGVmdCA9IDE0OworICAgICAgICB2YXIgbGVmdCA9IHRoaXMubGlzdEl0
ZW1FbGVtZW50LnRvdGFsT2Zmc2V0TGVmdCArIHBhZGRpbmdMZWZ0OworICAgICAgICByZXR1cm4g
ZXZlbnQucGFnZVggPj0gbGVmdCAmJiBldmVudC5wYWdlWCA8PSBsZWZ0ICsgdGhpcy5hcnJvd1Rv
Z2dsZVdpZHRoICYmIHRoaXMuaGFzQ2hpbGRyZW47CiAgICAgfQogfQogCkBAIC01OTUsMTIgKzcw
MiwyMCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24o
c3RvcmFnZVBhbmVsLCByZXNvdXJjZSkKIHsKICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VU
cmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0b3JhZ2VQYW5lbCwgcmVzb3VyY2UuZGlzcGxheU5hbWUs
ICJyZXNvdXJjZS1zaWRlYmFyLXRyZWUtaXRlbSByZXNvdXJjZXMtY2F0ZWdvcnktIiArIHJlc291
cmNlLmNhdGVnb3J5Lm5hbWUpOwogICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7CisgICAg
dGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3JzLXdhcm5pbmdzLXVwZGF0ZWQi
LCB0aGlzLl9lcnJvcnNXYXJuaW5nc1VwZGF0ZWQsIHRoaXMpOworICAgIHRoaXMuX3Jlc291cmNl
LmFkZEV2ZW50TGlzdGVuZXIoInNlYXJjaC1tYXRjaGVzLXVwZGF0ZWQiLCB0aGlzLl9zZWFyY2hN
YXRjaGVzVXBkYXRlZCwgdGhpcyk7CisgICAgdGhpcy50b29sdGlwID0gcmVzb3VyY2UudXJsOwog
fQogCiBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICBvbnNlbGVjdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fc3RvcmFnZVBh
bmVsLnNob3dSZXNvdXJjZSh0aGlzLl9yZXNvdXJjZSk7CisgICAgICAgIHRoaXMuX3N0b3JhZ2VQ
YW5lbC5fc2hvd1Jlc291cmNlVmlldyh0aGlzLl9yZXNvdXJjZSk7CisgICAgfSwKKworICAgIG9u
ZGJsY2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5vcGVuSW5JbnNwZWN0ZWRXaW5kb3codGhpcy5fcmVzb3VyY2UudXJsKTsKICAgICB9LAogCiAg
ICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKQEAgLTYxNyw2ICs3MzIsNzggQEAgV2ViSW5zcGVjdG9y
LkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpY29u
RWxlbWVudC5hcHBlbmRDaGlsZChwcmV2aWV3SW1hZ2UpOwogICAgICAgICAgICAgdGhpcy5saXN0
SXRlbUVsZW1lbnQucmVwbGFjZUNoaWxkKGljb25FbGVtZW50LCB0aGlzLmltYWdlRWxlbWVudCk7
CiAgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zdGF0dXNFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX3N0YXR1c0VsZW1lbnQuY2xhc3NOYW1l
ID0gInN0YXR1cyI7CisgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50Lmluc2VydEJlZm9yZSh0
aGlzLl9zdGF0dXNFbGVtZW50LCB0aGlzLnRpdGxlRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5s
aXN0SXRlbUVsZW1lbnQuZHJhZ2dhYmxlID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5saXN0SXRlbUVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgdGhpcy5fb25kcmFnc3RhcnQuYmlu
ZCh0aGlzKSwgZmFsc2UpOworICAgIH0sCisKKyAgICBfb25kcmFnc3RhcnQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoInRleHQvcGxh
aW4iLCB0aGlzLl9yZXNvdXJjZS51cmwpOworICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0
RGF0YSgidGV4dC91cmktbGlzdCIsIHRoaXMuX3Jlc291cmNlLnVybCArICJcclxuIik7CisgICAg
ICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gImNvcHkiOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgX3NldEJ1YmJsZVRleHQ6IGZ1bmN0aW9uKHgpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuX2J1YmJsZUVsZW1lbnQpIHsKKyAgICAgICAgICAgIHRo
aXMuX2J1YmJsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgICAgIHRoaXMuX2J1YmJsZUVsZW1lbnQuY2xhc3NOYW1lID0gImJ1YmJsZSI7CisgICAgICAg
ICAgICB0aGlzLl9zdGF0dXNFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2J1YmJsZUVsZW1lbnQp
OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fYnViYmxlRWxlbWVudC50ZXh0Q29udGVudCA9
IHg7CisgICAgfSwKKworICAgIF9yZXNldEJ1YmJsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMuX2J1YmJsZUVsZW1lbnQpIHsKKyAgICAgICAgICAgIHRoaXMuX2J1YmJsZUVs
ZW1lbnQudGV4dENvbnRlbnQgPSAiIjsKKyAgICAgICAgICAgIHRoaXMuX2J1YmJsZUVsZW1lbnQu
cmVtb3ZlU3R5bGVDbGFzcygic2VhcmNoLW1hdGNoZXMiKTsKKyAgICAgICAgICAgIHRoaXMuX2J1
YmJsZUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygid2FybmluZyIpOworICAgICAgICAgICAgdGhp
cy5fYnViYmxlRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJlcnJvciIpOworICAgICAgICB9Cisg
ICAgfSwKKworICAgIF9zZWFyY2hNYXRjaGVzVXBkYXRlZDogZnVuY3Rpb24obWF0Y2hlcykKKyAg
ICB7CisgICAgICAgIHRoaXMuX3Jlc2V0QnViYmxlKCk7CisKKyAgICAgICAgaWYgKCF0aGlzLl9y
ZXNvdXJjZS5zZWFyY2hNYXRjaGVzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuX3NldEJ1YmJsZVRleHQodGhpcy5fcmVzb3VyY2Uuc2VhcmNoTWF0Y2hlcyk7CisgICAgICAg
IHRoaXMuX2J1YmJsZUVsZW1lbnQuYWRkU3R5bGVDbGFzcygic2VhcmNoLW1hdGNoZXMiKTsKKwor
ICAgICAgICAvLyBFeHBhbmQsIGRvIG5vdCBzY3JvbGwgaW50byB2aWV3LgorICAgICAgICB2YXIg
Y3VycmVudEFuY2VzdG9yID0gdGhpcy5wYXJlbnQ7CisgICAgICAgIHdoaWxlIChjdXJyZW50QW5j
ZXN0b3IgJiYgIWN1cnJlbnRBbmNlc3Rvci5yb290KSB7CisgICAgICAgICAgICBpZiAoIWN1cnJl
bnRBbmNlc3Rvci5leHBhbmRlZCkKKyAgICAgICAgICAgICAgICBjdXJyZW50QW5jZXN0b3IuZXhw
YW5kKCk7CisgICAgICAgICAgICBjdXJyZW50QW5jZXN0b3IgPSBjdXJyZW50QW5jZXN0b3IucGFy
ZW50OworICAgICAgICB9CisgICAgfSwKKworICAgIF9lcnJvcnNXYXJuaW5nc1VwZGF0ZWQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zdG9yYWdlUGFuZWwuY3VycmVudFF1
ZXJ5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3Jlc2V0QnViYmxlKCk7
CisKKyAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlLndhcm5pbmdzIHx8IHRoaXMuX3Jlc291cmNl
LmVycm9ycykKKyAgICAgICAgICAgIHRoaXMuX3NldEJ1YmJsZVRleHQodGhpcy5fcmVzb3VyY2Uu
d2FybmluZ3MgKyB0aGlzLl9yZXNvdXJjZS5lcnJvcnMpOworCisgICAgICAgIGlmICh0aGlzLl9y
ZXNvdXJjZS53YXJuaW5ncykKKyAgICAgICAgICAgIHRoaXMuX2J1YmJsZUVsZW1lbnQuYWRkU3R5
bGVDbGFzcygid2FybmluZyIpOworCisgICAgICAgIGlmICh0aGlzLl9yZXNvdXJjZS5lcnJvcnMp
CisgICAgICAgICAgICB0aGlzLl9idWJibGVFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImVycm9yIik7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmNzcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmlu
ZGV4IGRiMjlhNmEuLjEwMzFiMGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzCkBAIC0xOTIwLDIyICsxOTIwLDI0IEBAIGJvZHkuaW5hY3RpdmUgLnNpZGViYXIg
ewogLnN0b3JhZ2UucGFuZWwgLnNpZGViYXIgewogICAgIGJvcmRlci1sZWZ0OiByZ2IoMjMyLCAy
MzIsIDIzMik7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgb3ZlcmZs
b3cteDogYXV0bzsKLX0KLQotLnN0b3JhZ2UucGFuZWwgLnNpZGViYXIub3V0bGluZS1kaXNjbG9z
dXJlID4gb2wgewotICAgIG1hcmdpbi1sZWZ0OiAtMTJweDsKLSAgICBwYWRkaW5nLXJpZ2h0OiAw
cHggIWltcG9ydGFudDsKKyAgICBwYWRkaW5nLWxlZnQ6IDBweDsKIH0KIAogLnN0b3JhZ2UucGFu
ZWwgLm91dGxpbmUtZGlzY2xvc3VyZSBsaSB7CisgICAgaGVpZ2h0OiAxN3B4OwogICAgIHdoaXRl
LXNwYWNlOiBub3dyYXA7CisgICAgdGV4dC1pbmRlbnQ6IDA7CisgICAgbWFyZ2luLWxlZnQ6IC0y
cHg7Cit9CisKKy5zdG9yYWdlLnBhbmVsIC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkucGFyZW50IHsK
KyAgICB0ZXh0LWluZGVudDogMDsKKyAgICBtYXJnaW4tbGVmdDogLTEycHg7CiB9CiAKIC5zdG9y
YWdlLnBhbmVsIC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkgLnNlbGVjdGlvbiB7CiAgICAgaGVpZ2h0
OiAxN3B4OwotICAgIG1hcmdpbi1sZWZ0OiAtMTAwcHg7Ci0gICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgIG1hcmdpbi10b3A6IC0xM3B4OwogfQogCiAuc3RvcmFnZS5wYW5lbCAuc2lkZWJh
ci1yZXNpemVyLXZlcnRpY2FsIHsKQEAgLTE5NDQsMjUgKzE5NDYsMzEgQEAgYm9keS5pbmFjdGl2
ZSAuc2lkZWJhciB7CiAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgZ3JheTsKIH0KIAotLnN0
b3JhZ2UtYmFzZS10cmVlLWVsZW1lbnQtdGl0bGUgewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
LSAgICBib3R0b206IDRweDsKLSAgICBsZWZ0OiAzcHg7Cisuc3RvcmFnZS5wYW5lbCAub3V0bGlu
ZS1kaXNjbG9zdXJlIC5pY29uIHsKKyAgICB3aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7
CisgICAgZmxvYXQ6IGxlZnQ7CiB9CiAKLS5zdG9yYWdlLnBhbmVsIC5vdXRsaW5lLWRpc2Nsb3N1
cmUgb2wgewotICAgIC13ZWJraXQtcGFkZGluZy1zdGFydDogMTRweDsKKy5zdG9yYWdlLnBhbmVs
IC5iYXNlLXN0b3JhZ2UtdHJlZS1lbGVtZW50LXRpdGxlIHsKKyAgICBvdmVyZmxvdzogaGlkZGVu
OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsK
KyAgICBwYWRkaW5nLWxlZnQ6IDJweDsKKyAgICB0b3A6IDFweDsKIH0KIAotLnN0b3JhZ2UucGFu
ZWwgLm91dGxpbmUtZGlzY2xvc3VyZSBsaS5zZWxlY3RlZCB7Ci0gICAgY29sb3I6IHdoaXRlOwot
ICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworLnN0b3JhZ2UucGFuZWwgLnN0YXR1
cyB7CisgICAgZmxvYXQ6IHJpZ2h0OworICAgIGhlaWdodDogMTZweDsKKyAgICBtYXJnaW4tdG9w
OiAxcHg7CisgICAgbWFyZ2luLWxlZnQ6IDRweDsKKyAgICBsaW5lLWhlaWdodDogMWVtOwogfQog
Ci0uc3RvcmFnZS5wYW5lbCAub3V0bGluZS1kaXNjbG9zdXJlIC5pY29uIHsKLSAgICB3aWR0aDog
MTZweDsKLSAgICBoZWlnaHQ6IDE2cHg7Ci0gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworLnN0
b3JhZ2UucGFuZWwgbGkgLnN0YXR1cyAuYnViYmxlIHsKKyAgICBoZWlnaHQ6IDEzcHg7CisgICAg
cGFkZGluZy10b3A6IDA7CiB9CiAKIC5zdG9yYWdlLXZpZXcgewpAQCAtMzIwMyw3ICszMjExLDcg
QEAgYm9keS5pbmFjdGl2ZSAuc2lkZWJhci10cmVlLWl0ZW0gLmRpc2Nsb3N1cmUtYnV0dG9uOmFj
dGl2ZSB7CiAgICAgbWFyZ2luLXJpZ2h0OiAzcHg7CiB9CiAKLS5zaWRlYmFyLXRyZWUtaXRlbSAu
c3RhdHVzIHsKK2xpIC5zdGF0dXMgewogICAgIGZsb2F0OiByaWdodDsKICAgICBoZWlnaHQ6IDE2
cHg7CiAgICAgbWFyZ2luLXRvcDogOXB4OwpAQCAtMzIxMSwxMSArMzIxOSwxMSBAQCBib2R5Lmlu
YWN0aXZlIC5zaWRlYmFyLXRyZWUtaXRlbSAuZGlzY2xvc3VyZS1idXR0b246YWN0aXZlIHsKICAg
ICBsaW5lLWhlaWdodDogMWVtOwogfQogCi0uc2lkZWJhci10cmVlLWl0ZW0gLnN0YXR1czplbXB0
eSB7CitsaSAuc3RhdHVzOmVtcHR5IHsKICAgICBkaXNwbGF5OiBub25lOwogfQogCi0uc2lkZWJh
ci10cmVlLWl0ZW0gLnN0YXR1cyAuYnViYmxlIHsKK2xpIC5zdGF0dXMgLmJ1YmJsZSB7CiAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgIGhlaWdodDogMTRweDsKICAgICBtaW4td2lkdGg6
IDE2cHg7CkBAIC0zMjM0LDIwICszMjQyLDIwIEBAIGJvZHkuaW5hY3RpdmUgLnNpZGViYXItdHJl
ZS1pdGVtIC5kaXNjbG9zdXJlLWJ1dHRvbjphY3RpdmUgewogICAgIC13ZWJraXQtYm9yZGVyLXJh
ZGl1czogN3B4OwogfQogCi0uc2lkZWJhci10cmVlLWl0ZW0gLnN0YXR1cyAuYnViYmxlOmVtcHR5
IHsKK2xpIC5zdGF0dXMgLmJ1YmJsZTplbXB0eSB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KIAot
LnNpZGViYXItdHJlZS1pdGVtLnNlbGVjdGVkIC5zdGF0dXMgLmJ1YmJsZSB7CitsaS5zZWxlY3Rl
ZCAuc3RhdHVzIC5idWJibGUgewogICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRh
bnQ7CiAgICAgY29sb3I6IHJnYigxMzIsIDE1NCwgMTkwKSAhaW1wb3J0YW50OwogfQogCi06Zm9j
dXMgLnNpZGViYXItdHJlZS1pdGVtLnNlbGVjdGVkIC5zdGF0dXMgLmJ1YmJsZSB7Cis6Zm9jdXMg
bGkuc2VsZWN0ZWQgLnN0YXR1cyAuYnViYmxlIHsKICAgICBjb2xvcjogcmdiKDM2LCA5OCwgMTcy
KSAhaW1wb3J0YW50OwogfQogCi1ib2R5LmluYWN0aXZlIC5zaWRlYmFyLXRyZWUtaXRlbS5zZWxl
Y3RlZCAuc3RhdHVzIC5idWJibGUgeworYm9keS5pbmFjdGl2ZSBsaS5zZWxlY3RlZCAuc3RhdHVz
IC5idWJibGUgewogICAgIGNvbG9yOiByZ2IoMTU5LCAxNTksIDE1OSkgIWltcG9ydGFudDsKIH0K
IApAQCAtMzQ2OCwxNSArMzQ3NiwxNSBAQCBib2R5LmluYWN0aXZlIC5zaWRlYmFyLXRyZWUtaXRl
bS5zZWxlY3RlZCB7CiAgICAgcGFkZGluZy1sZWZ0OiAxM3B4ICFpbXBvcnRhbnQ7CiB9CiAKLS5z
aWRlYmFyLXRyZWUtaXRlbS5zZWxlY3RlZCAuYnViYmxlLnNlYXJjaC1tYXRjaGVzIHsKK2xpLnNl
bGVjdGVkIC5idWJibGUuc2VhcmNoLW1hdGNoZXMgewogICAgIGJhY2tncm91bmQtaW1hZ2U6IHVy
bChJbWFnZXMvc2VhcmNoU21hbGxCbHVlLnBuZyk7CiB9CiAKLTpmb2N1cyAuc2lkZWJhci10cmVl
LWl0ZW0uc2VsZWN0ZWQgLmJ1YmJsZS5zZWFyY2gtbWF0Y2hlcyB7Cis6Zm9jdXMgbGkuc2VsZWN0
ZWQgLmJ1YmJsZS5zZWFyY2gtbWF0Y2hlcyB7CiAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKElt
YWdlcy9zZWFyY2hTbWFsbEJyaWdodEJsdWUucG5nKTsKIH0KIAotYm9keS5pbmFjdGl2ZSAuc2lk
ZWJhci10cmVlLWl0ZW0uc2VsZWN0ZWQgLmJ1YmJsZS5zZWFyY2gtbWF0Y2hlcyB7Citib2R5Lmlu
YWN0aXZlIGxpLnNlbGVjdGVkIC5idWJibGUuc2VhcmNoLW1hdGNoZXMgewogICAgIGJhY2tncm91
bmQtaW1hZ2U6IHVybChJbWFnZXMvc2VhcmNoU21hbGxHcmF5LnBuZyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71683</attachid>
            <date>2010-10-24 08:45:04 -0700</date>
            <delta_ts>2020-02-09 15:00:54 -0800</delta_ts>
            <desc>[PATCH] Proposed change (with proper changelog).</desc>
            <filename>storage_messages_1</filename>
            <type>text/plain</type>
            <size>35931</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmIxNGE4My4uZjY1MzkwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NiBAQAorMjAxMC0xMC0yNCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgc3VwcG9ydCBmb3IgZXJyb3Jz
LCB3YXJuaW5ncyBhbmQgc2VhcmNoIHRvIHRoZSBzdG9yYWdlIHBhbmVsLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgyMDYKKworICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcucHJvdG90eXBlLmFkZE1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnNvbGVWaWV3LnByb3RvdHlwZS5jbGVhck1lc3NhZ2VzKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
LnByb3RvdHlwZS5zZXQgZXJyb3JzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5w
cm90b3R5cGUuc2V0IHdhcm5pbmdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5w
cm90b3R5cGUuZ2V0IHNlYXJjaE1hdGNoZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlLnByb3RvdHlwZS5zZXQgc2VhcmNoTWF0Y2hlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlLmNsZWFyRXJyb3JzQW5kV2FybmluZ3MpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlTWFuYWdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5h
Z2VyLnByb3RvdHlwZS5pZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5wcm90b3R5cGUuX2NyZWF0ZVJlc291cmNlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlLl9hcHBlbmRSZWRp
cmVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5k
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdl
ci5wcm90b3R5cGUuZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5kaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5kaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5wcm90b3R5cGUu
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZU1h
bmFnZXIucHJvdG90eXBlLmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlLl9hZGRGcmFtZXNSZWN1cnNpdmVseSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5yZXNvdXJj
ZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlw
ZS5hZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5h
Z2VyLnByb3RvdHlwZS5jbGVhckNvbnNvbGVNZXNzYWdlcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZU1vZGVsLnByb3RvdHlwZS5hZGRPclVwZGF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90b3R5cGUuZnJhbWVEZXRh
Y2hlZEZyb21QYXJlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVs
LnByb3RvdHlwZS5fY2xlYXJDaGlsZEZyYW1lc0FuZFJlc291cmNlcyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLmFkZFJlc291cmNlVG9GcmFtZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLl9jbGVh
clJlc291cmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJv
dG90eXBlLl9iaW5kUmVzb3VyY2VVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZU1vZGVsLnByb3RvdHlwZS5fdW5iaW5kUmVzb3VyY2VVUkwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5yZXNvdXJjZUZvclVSTCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlLmZvckFsbFJlc291
cmNlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBl
Ll9jYWxsRm9yRnJhbWVSZXNvdXJjZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U3RvcmFnZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlwZS5nZXQgdG9vbGJhckl0
ZW1MYWJlbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlwZS5y
ZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlwZS5yZW1v
dmVGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlwZS5j
YW5TaG93U291cmNlTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnBy
b3RvdHlwZS5zaG93U291cmNlTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVBh
bmVsLnByb3RvdHlwZS5zaG93UmVzb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3Jh
Z2VQYW5lbC5wcm90b3R5cGUuX3Nob3dSZXNvdXJjZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUudXBkYXRlTWFpblZpZXdXaWR0aCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlwZS5nZXQgc2VhcmNoYWJsZVZpZXdz
LmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlUGFuZWwucHJvdG90eXBl
LmdldCBzZWFyY2hhYmxlVmlld3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5l
bC5wcm90b3R5cGUuX2ZvckFsbFJlc291cmNlVHJlZUVsZW1lbnRzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TdG9yYWdlUGFuZWwucHJvdG90eXBlLnNlYXJjaE1hdGNoRm91bmQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUuc2VhcmNoQ2FuY2VsZWQuY2Fs
bGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUuc2Vh
cmNoQ2FuY2VsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5
cGUucGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnBy
b3RvdHlwZS5zaG93Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVl
RWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJhc2VT
dG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLnNldCB0aXRsZVRleHQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLmlzRXZlbnRXaXRoaW5E
aXNjbG9zdXJlVHJpYW5nbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VU
cmVlRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVt
ZW50LnByb3RvdHlwZS5vbnNlbGVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNv
dXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRibGNsaWNrKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GcmFtZVJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0YWNoKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9vbmRy
YWdzdGFydCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZVRyZWVFbGVtZW50
LnByb3RvdHlwZS5fc2V0QnViYmxlVGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVS
ZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fcmVzZXRCdWJibGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUuX3NlYXJjaE1hdGNo
ZXNVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlVHJlZUVsZW1l
bnQucHJvdG90eXBlLl9lcnJvcnNXYXJuaW5nc1VwZGF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5zdG9yYWdlLnBhbmVsIC5zaWRl
YmFyKToKKyAgICAgICAgKC5zdG9yYWdlLnBhbmVsIC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkpOgor
ICAgICAgICAoLnN0b3JhZ2UucGFuZWwgLm91dGxpbmUtZGlzY2xvc3VyZSBsaS5wYXJlbnQpOgor
ICAgICAgICAoLnN0b3JhZ2UucGFuZWwgLm91dGxpbmUtZGlzY2xvc3VyZSBsaSAuc2VsZWN0aW9u
KToKKyAgICAgICAgKC5zdG9yYWdlLnBhbmVsIC5vdXRsaW5lLWRpc2Nsb3N1cmUgLmljb24pOgor
ICAgICAgICAoLnN0b3JhZ2UucGFuZWwgLmJhc2Utc3RvcmFnZS10cmVlLWVsZW1lbnQtdGl0bGUp
OgorICAgICAgICAoLnN0b3JhZ2UucGFuZWwgLnN0YXR1cyk6CisgICAgICAgICguc3RvcmFnZS5w
YW5lbCBsaSAuc3RhdHVzIC5idWJibGUpOgorICAgICAgICAobGkgLnN0YXR1cyk6CisgICAgICAg
IChsaSAuc3RhdHVzOmVtcHR5KToKKyAgICAgICAgKGxpIC5zdGF0dXMgLmJ1YmJsZSk6CisgICAg
ICAgIChsaSAuc3RhdHVzIC5idWJibGU6ZW1wdHkpOgorICAgICAgICAobGkuc2VsZWN0ZWQgLnN0
YXR1cyAuYnViYmxlKToKKyAgICAgICAgKDpmb2N1cyBsaS5zZWxlY3RlZCAuc3RhdHVzIC5idWJi
bGUpOgorICAgICAgICAoYm9keS5pbmFjdGl2ZSBsaS5zZWxlY3RlZCAuc3RhdHVzIC5idWJibGUp
OgorICAgICAgICAobGkuc2VsZWN0ZWQgLmJ1YmJsZS5zZWFyY2gtbWF0Y2hlcyk6CisgICAgICAg
ICg6Zm9jdXMgbGkuc2VsZWN0ZWQgLmJ1YmJsZS5zZWFyY2gtbWF0Y2hlcyk6CisgICAgICAgIChi
b2R5LmluYWN0aXZlIGxpLnNlbGVjdGVkIC5idWJibGUuc2VhcmNoLW1hdGNoZXMpOgorCiAyMDEw
LTEwLTI0ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db25zb2xlVmlldy5qcwppbmRleCBjNTQ3YzBkLi4xMDYyNTA3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC0yMzAsNiArMjMwLDggQEAgV2ViSW5z
cGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBpZiAoV2Vi
SW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMpCiAgICAgICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5wYW5lbHMucmVzb3VyY2VzLmFkZE1lc3NhZ2VUb1Jlc291cmNlKG1zZy5yZXNvdXJjZSwg
bXNnKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VNYW5hZ2VyKQorICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZU1hbmFnZXIu
YWRkQ29uc29sZU1lc3NhZ2UobXNnKTsKIAogICAgICAgICAgICAgdGhpcy5jb21tYW5kU2luY2VQ
cmV2aW91c01lc3NhZ2UgPSBmYWxzZTsKICAgICAgICAgICAgIHRoaXMucHJldmlvdXNNZXNzYWdl
ID0gbXNnOwpAQCAtMzAzLDYgKzMwNSw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90
b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJj
ZXMpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5jbGVhck1lc3Nh
Z2VzKCk7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucmVzb3VyY2VNYW5hZ2VyKQorICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlTWFuYWdlci5jbGVhckNvbnNvbGVNZXNzYWdlcygp
OwogCiAgICAgICAgIHRoaXMubWVzc2FnZXMgPSBbXTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlLmpzCmluZGV4IGFjYzEyYTMuLjAzOTk0NWUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2UuanMKQEAgLTUzMCw2ICs1MzAsNyBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UucHJvdG90eXBlID0gewogICAgIHNldCBlcnJvcnMoeCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2Vycm9ycyA9IHg7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KCJlcnJvcnMtd2FybmluZ3MtdXBkYXRlZCIpOwogICAgIH0sCiAKICAgICBnZXQgd2FybmluZ3Mo
KQpAQCAtNTQwLDYgKzU0MSwyNSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0g
ewogICAgIHNldCB3YXJuaW5ncyh4KQogICAgIHsKICAgICAgICAgdGhpcy5fd2FybmluZ3MgPSB4
OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygiZXJyb3JzLXdhcm5pbmdz
LXVwZGF0ZWQiKTsKKyAgICB9LAorCisgICAgZ2V0IHNlYXJjaE1hdGNoZXMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaE1hdGNoZXMgfHwgMDsKKyAgICB9LAorCisgICAgc2V0
IHNlYXJjaE1hdGNoZXMoeCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NlYXJjaE1hdGNoZXMgPSB4
OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygic2VhcmNoLW1hdGNoZXMt
dXBkYXRlZCIpOworICAgIH0sCisKKyAgICBjbGVhckVycm9yc0FuZFdhcm5pbmdzOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB0aGlzLl93YXJuaW5ncyA9IDA7CisgICAgICAgIHRoaXMuX2Vy
cm9ycyA9IDA7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJlcnJvcnMt
d2FybmluZ3MtdXBkYXRlZCIpOwogICAgIH0sCiAKICAgICBfbWltZVR5cGVJc0NvbnNpc3RlbnRX
aXRoVHlwZTogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlTWFuYWdlci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZU1hbmFnZXIuanMKaW5kZXggMmQ4ZGRhMS4uNzE2YjgyNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlTWFuYWdlci5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VNYW5hZ2VyLmpzCkBAIC00OCw4ICs0OCw3IEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIgPSBmdW5jdGlvbigpCiAgICAgICAgICJkaWRDbG9z
ZVdlYlNvY2tldCIpOwogCiAgICAgdGhpcy5fcmVzb3VyY2VzQnlJZCA9IHt9OwotICAgIHRoaXMu
X3Jlc291cmNlc0J5RnJhbWVJZCA9IHt9OwotICAgIHRoaXMuX2xhc3RDYWNoZWRJZCA9IDA7Cisg
ICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZU1vZGVsKCk7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5jYWNoZWRSZXNvdXJjZXModGhpcy5fcHJv
Y2Vzc0NhY2hlZFJlc291cmNlcy5iaW5kKHRoaXMpKTsKIH0KIApAQCAtNjMsOCArNjIsMTAgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgaWRlbnRpZmll
ckZvckluaXRpYWxSZXF1ZXN0OiBmdW5jdGlvbihpZGVudGlmaWVyLCB1cmwsIGxvYWRlciwgaXNN
YWluUmVzb3VyY2UpCiAgICAgewogICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVS
ZXNvdXJjZShpZGVudGlmaWVyLCB1cmwsIGxvYWRlcik7Ci0gICAgICAgIGlmIChpc01haW5SZXNv
dXJjZSkKKyAgICAgICAgaWYgKGlzTWFpblJlc291cmNlKSB7CiAgICAgICAgICAgICByZXNvdXJj
ZS5pc01haW5SZXNvdXJjZSA9IHRydWU7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IubWFpblJl
c291cmNlID0gcmVzb3VyY2U7CisgICAgICAgIH0KIAogICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmsuYWRkUmVzb3VyY2UocmVzb3VyY2UpOwogICAgIH0sCkBAIC03MiwxNSArNzMs
OSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICBfY3Jl
YXRlUmVzb3VyY2U6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHVybCwgbG9hZGVyKQogICAgIHsKICAg
ICAgICAgdmFyIHJlc291cmNlID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZShpZGVudGlmaWVy
LCB1cmwpOwotICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkZW50aWZpZXJdID0gcmVzb3Vy
Y2U7Ci0KICAgICAgICAgcmVzb3VyY2UubG9hZGVyID0gbG9hZGVyOwotICAgICAgICB2YXIgcmVz
b3VyY2VzRm9yRnJhbWUgPSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbbG9hZGVyLmZyYW1lSWRd
OwotICAgICAgICBpZiAoIXJlc291cmNlc0ZvckZyYW1lKSB7Ci0gICAgICAgICAgICByZXNvdXJj
ZXNGb3JGcmFtZSA9IFtdOwotICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2xv
YWRlci5mcmFtZUlkXSA9IHJlc291cmNlc0ZvckZyYW1lOwotICAgICAgICB9Ci0gICAgICAgIHJl
c291cmNlc0ZvckZyYW1lLnB1c2gocmVzb3VyY2UpOworCisgICAgICAgIHRoaXMuX3Jlc291cmNl
c0J5SWRbaWRlbnRpZmllcl0gPSByZXNvdXJjZTsKICAgICAgICAgcmV0dXJuIHJlc291cmNlOwog
ICAgIH0sCiAKQEAgLTExMiwxMiArMTA3LDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdl
ci5wcm90b3R5cGUgPSB7CiAKICAgICBfYXBwZW5kUmVkaXJlY3Q6IGZ1bmN0aW9uKGlkZW50aWZp
ZXIsIHJlZGlyZWN0VVJMKQogICAgIHsKLSAgICAgICAgLy8gV2UgYWx3YXlzIHN0b3JlIGxhc3Qg
cmVkaXJlY3QgYnkgdGhlIG9yaWdpbmFsIGlkIGtleS4gUmVzdCBvZiB0aGUgcmVkaXJlY3RzIGFy
ZSByZWZlcmVuY2VkIGZyb20gd2l0aGluIHRoZSBsYXN0IG9uZS4KLQogICAgICAgICB2YXIgb3Jp
Z2luYWxSZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07Ci0gICAgICAg
IHZhciByZWRpcmVjdElkZW50aWZpZXIgPSBvcmlnaW5hbFJlc291cmNlLmlkZW50aWZpZXIgKyAi
OiIgKyAob3JpZ2luYWxSZXNvdXJjZS5yZWRpcmVjdHMgPyBvcmlnaW5hbFJlc291cmNlLnJlZGly
ZWN0cy5sZW5ndGggOiAwKTsKLSAgICAgICAgb3JpZ2luYWxSZXNvdXJjZS5pZGVudGlmaWVyID0g
cmVkaXJlY3RJZGVudGlmaWVyOwotICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeUlkW3JlZGlyZWN0
SWRlbnRpZmllcl0gPSBvcmlnaW5hbFJlc291cmNlOworICAgICAgICBvcmlnaW5hbFJlc291cmNl
LmlkZW50aWZpZXIgPSBudWxsOwogCiAgICAgICAgIHZhciBuZXdSZXNvdXJjZSA9IHRoaXMuX2Ny
ZWF0ZVJlc291cmNlKGlkZW50aWZpZXIsIHJlZGlyZWN0VVJMLCBvcmlnaW5hbFJlc291cmNlLmxv
YWRlcik7CiAgICAgICAgIG5ld1Jlc291cmNlLnJlZGlyZWN0cyA9IG9yaWdpbmFsUmVzb3VyY2Uu
cmVkaXJlY3RzIHx8IFtdOwpAQCAtMTQ2LDcgKzEzNyw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICByZXNvdXJjZS5yZXNwb25zZVJlY2VpdmVk
VGltZSA9IHRpbWU7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlZnJl
c2hSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIHRoaXMuX2FkZFJlc291cmNlVG9TdG9yYWdl
RnJhbWUocmVzb3VyY2UubG9hZGVyLmZyYW1lSWQsIHJlc291cmNlKTsKKyAgICAgICAgdGhpcy5f
cmVzb3VyY2VUcmVlTW9kZWwuYWRkUmVzb3VyY2VUb0ZyYW1lKHJlc291cmNlLmxvYWRlci5mcmFt
ZUlkLCByZXNvdXJjZSk7CiAgICAgfSwKIAogICAgIF91cGRhdGVSZXNvdXJjZVdpdGhSZXNwb25z
ZTogZnVuY3Rpb24ocmVzb3VyY2UsIHJlc3BvbnNlKQpAQCAtMTk1LDYgKzE4Niw3IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICByZXNvdXJjZS5l
bmRUaW1lID0gZmluaXNoVGltZTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdv
cmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc291
cmNlc0J5SWRbaWRlbnRpZmllcl07CiAgICAgfSwKIAogICAgIGRpZEZhaWxMb2FkaW5nOiBmdW5j
dGlvbihpZGVudGlmaWVyLCB0aW1lLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKQEAgLTIwNywxOCAr
MTk5LDE4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlID0gewogICAg
ICAgICByZXNvdXJjZS5lbmRUaW1lID0gdGltZTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLm5ldHdvcmsucmVmcmVzaFJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgZGVsZXRlIHRo
aXMuX3Jlc291cmNlc0J5SWRbaWRlbnRpZmllcl07CiAgICAgfSwKIAogICAgIGRpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZTogZnVuY3Rpb24odGltZSwgY2FjaGVkUmVzb3VyY2UpCiAgICAg
ewotICAgICAgICB2YXIgaWRlbnRpZmllciA9ICJjYWNoZWQ6IiArIHRoaXMuX2xhc3RDYWNoZWRJ
ZCsrOwotICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9jcmVhdGVSZXNvdXJjZShpZGVudGlm
aWVyLCBjYWNoZWRSZXNvdXJjZS51cmwsIGNhY2hlZFJlc291cmNlLmxvYWRlcik7CisgICAgICAg
IHZhciByZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKG51bGwsIGNhY2hlZFJlc291cmNl
LnVybCwgY2FjaGVkUmVzb3VyY2UubG9hZGVyKTsKICAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3Vy
Y2VXaXRoQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2UsIGNhY2hlZFJlc291cmNlKTsKICAgICAgICAg
cmVzb3VyY2UuY2FjaGVkID0gdHJ1ZTsKICAgICAgICAgcmVzb3VyY2Uuc3RhcnRUaW1lID0gcmVz
b3VyY2UucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSByZXNvdXJjZS5lbmRUaW1lID0gdGltZTsKIAog
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLm5ldHdvcmsuYWRkUmVzb3VyY2UocmVzb3VyY2Up
OwotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnN0b3JhZ2UuYWRkUmVzb3VyY2VUb0ZyYW1l
KHJlc291cmNlLmxvYWRlci5mcmFtZUlkLCByZXNvdXJjZSk7CisgICAgICAgIHRoaXMuX3Jlc291
cmNlVHJlZU1vZGVsLmFkZFJlc291cmNlVG9GcmFtZShyZXNvdXJjZS5sb2FkZXIuZnJhbWVJZCwg
cmVzb3VyY2UpOwogICAgIH0sCiAKICAgICBfdXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3Vy
Y2U6IGZ1bmN0aW9uKHJlc291cmNlLCBjYWNoZWRSZXNvdXJjZSkKQEAgLTI0Miw0OCArMjM0LDEy
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlID0gewogCiAgICAgZGlk
Q29tbWl0TG9hZEZvckZyYW1lOiBmdW5jdGlvbihwYXJlbnRGcmFtZUlkLCBsb2FkZXIpCiAgICAg
ewotICAgICAgICB0aGlzLl9jbGVhclJlc291cmNlcyhsb2FkZXIuZnJhbWVJZCwgbG9hZGVyLmxv
YWRlcklkKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zdG9yYWdlLnJlbW92ZVJlc291
cmNlc0Zyb21GcmFtZShsb2FkZXIuZnJhbWVJZCk7Ci0KLSAgICAgICAgdmFyIHRtcFJlc291cmNl
ID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZShudWxsLCBsb2FkZXIudXJsKTsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLnBhbmVscy5zdG9yYWdlLmFkZE9yVXBkYXRlRnJhbWUocGFyZW50RnJhbWVJ
ZCwgbG9hZGVyLmZyYW1lSWQsIHRtcFJlc291cmNlLmRpc3BsYXlOYW1lKTsKLQotICAgICAgICB2
YXIgcmVzb3VyY2VzRm9yRnJhbWUgPSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbbG9hZGVyLmZy
YW1lSWRdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlc0ZvckZyYW1lLmxl
bmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5fYWRkUmVzb3VyY2VUb1N0b3JhZ2VGcmFtZShs
b2FkZXIuZnJhbWVJZCwgcmVzb3VyY2VzRm9yRnJhbWVbaV0pOwotICAgIH0sCi0KLSAgICBfYWRk
UmVzb3VyY2VUb1N0b3JhZ2VGcmFtZTogZnVuY3Rpb24oZnJhbWVJZCwgcmVzb3VyY2UpCi0gICAg
ewotICAgICAgICAvLyBEbyBub3Qgc2hvdyByZWRpcmVjdHMgaW4gcmVzb3VyY2UgYnJvd3Nlci4K
LSAgICAgICAgaWYgKHJlc291cmNlLnN0YXR1c0NvZGUgPCAzMDAgfHwgcmVzb3VyY2Uuc3RhdHVz
Q29kZSA+IDMwMykKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc3RvcmFnZS5hZGRS
ZXNvdXJjZVRvRnJhbWUoZnJhbWVJZCwgcmVzb3VyY2UpOworICAgICAgICB0aGlzLl9yZXNvdXJj
ZVRyZWVNb2RlbC5kaWRDb21taXRMb2FkRm9yRnJhbWUocGFyZW50RnJhbWVJZCwgbG9hZGVyKTsK
ICAgICB9LAogCiAgICAgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQ6IGZ1bmN0aW9uKGZyYW1lSWQp
CiAgICAgewotICAgICAgICB0aGlzLl9jbGVhclJlc291cmNlcyhmcmFtZUlkLCAwKTsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zdG9yYWdlLnJlbW92ZUZyYW1lKGZyYW1lSWQpOwotICAg
IH0sCi0KLSAgICBfY2xlYXJSZXNvdXJjZXM6IGZ1bmN0aW9uKGZyYW1lSWQsIGxvYWRlclRvUHJl
c2VydmVJZCkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZXNGb3JGcmFtZSA9IHRoaXMuX3Jl
c291cmNlc0J5RnJhbWVJZFtmcmFtZUlkXTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZXNGb3JGcmFt
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgcHJlc2VydmVkUmVzb3VyY2Vz
Rm9yRnJhbWUgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZXNGb3JG
cmFtZS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gcmVzb3VyY2Vz
Rm9yRnJhbWVbaV07Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UubG9hZGVyLmxvYWRlcklkID09
PSBsb2FkZXJUb1ByZXNlcnZlSWQpIHsKLSAgICAgICAgICAgICAgICBwcmVzZXJ2ZWRSZXNvdXJj
ZXNGb3JGcmFtZS5wdXNoKHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNvdXJjZXNCeUlkW2lkXTsK
LSAgICAgICAgfQotICAgICAgICBkZWxldGUgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1l
SWRdOwotICAgICAgICBpZiAocHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWUubGVuZ3RoKQotICAg
ICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lSWRdID0gcHJlc2VydmVkUmVz
b3VyY2VzRm9yRnJhbWU7CisgICAgICAgIHRoaXMuX3Jlc291cmNlVHJlZU1vZGVsLmZyYW1lRGV0
YWNoZWRGcm9tUGFyZW50KGZyYW1lSWQpOwogICAgIH0sCiAKICAgICBkaWRDcmVhdGVXZWJTb2Nr
ZXQ6IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHJlcXVlc3RVUkwpCkBAIC0zNDMsOCArMjk5LDggQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAg
ICB2YXIgZnJhbWVSZXNvdXJjZSA9IHRoaXMuX2NyZWF0ZVJlc291cmNlKG51bGwsIGZyYW1lUGF5
bG9hZC5yZXNvdXJjZS51cmwsIGZyYW1lUGF5bG9hZC5yZXNvdXJjZS5sb2FkZXIpOwogICAgICAg
ICBmcmFtZVJlc291cmNlLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZVsiRG9jdW1l
bnQiXTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zdG9yYWdlLmFkZE9yVXBkYXRlRnJh
bWUocGFyZW50RnJhbWVJZCwgZnJhbWVQYXlsb2FkLmlkLCBmcmFtZVJlc291cmNlLmRpc3BsYXlO
YW1lKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zdG9yYWdlLmFkZFJlc291cmNlVG9G
cmFtZShmcmFtZVBheWxvYWQuaWQsIGZyYW1lUmVzb3VyY2UpOworICAgICAgICB0aGlzLl9yZXNv
dXJjZVRyZWVNb2RlbC5hZGRPclVwZGF0ZUZyYW1lKHBhcmVudEZyYW1lSWQsIGZyYW1lUGF5bG9h
ZC5pZCwgZnJhbWVSZXNvdXJjZS5kaXNwbGF5TmFtZSk7CisgICAgICAgIHRoaXMuX3Jlc291cmNl
VHJlZU1vZGVsLmFkZFJlc291cmNlVG9GcmFtZShmcmFtZVBheWxvYWQuaWQsIGZyYW1lUmVzb3Vy
Y2UpOwogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBmcmFtZVBheWxvYWQuY2hpbGRyZW4gJiYg
aSA8IGZyYW1lUGF5bG9hZC5jaGlsZHJlbi5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIHRoaXMu
X2FkZEZyYW1lc1JlY3Vyc2l2ZWx5KGZyYW1lUGF5bG9hZC5pZCwgZnJhbWVQYXlsb2FkLmNoaWxk
cmVuW2ldKTsKQEAgLTM1Niw4ICszMTIsNDUgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlTWFuYWdl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgY2FjaGVkUmVzb3VyY2UgPSBmcmFtZVBh
eWxvYWQuc3VicmVzb3VyY2VzW2ldOwogICAgICAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5f
Y3JlYXRlUmVzb3VyY2UobnVsbCwgY2FjaGVkUmVzb3VyY2UudXJsLCBjYWNoZWRSZXNvdXJjZS5s
b2FkZXIpOwogICAgICAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VXaXRoQ2FjaGVkUmVzb3Vy
Y2UocmVzb3VyY2UsIGNhY2hlZFJlc291cmNlKTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMuc3RvcmFnZS5hZGRSZXNvdXJjZVRvRnJhbWUoZnJhbWVQYXlsb2FkLmlkLCByZXNvdXJj
ZSk7CisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZVRyZWVNb2RlbC5hZGRSZXNvdXJjZVRvRnJh
bWUoZnJhbWVQYXlsb2FkLmlkLCByZXNvdXJjZSk7CiAgICAgICAgIH0KKyAgICB9LAorCisgICAg
cmVzb3VyY2VGb3JVUkw6IGZ1bmN0aW9uKHVybCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9yZXNvdXJjZVRyZWVNb2RlbC5yZXNvdXJjZUZvclVSTCh1cmwpOworICAgIH0sCisKKyAgICBh
ZGRDb25zb2xlTWVzc2FnZTogZnVuY3Rpb24obXNnKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291
cmNlID0gdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwucmVzb3VyY2VGb3JVUkwobXNnLnVybCk7Cisg
ICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc3dp
dGNoIChtc2cubGV2ZWwpIHsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZUxldmVsLldhcm5pbmc6CisgICAgICAgICAgICByZXNvdXJjZS53YXJuaW5ncyAr
PSBtc2cucmVwZWF0RGVsdGE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yOgorICAgICAgICAgICAg
cmVzb3VyY2UuZXJyb3JzICs9IG1zZy5yZXBlYXREZWx0YTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5h
Z2VyLnJlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKKyAgICAgICAgaWYgKHZpZXcu
YWRkTWVzc2FnZSkKKyAgICAgICAgICAgIHZpZXcuYWRkTWVzc2FnZShtc2cpOworICAgIH0sCisK
KyAgICBjbGVhckNvbnNvbGVNZXNzYWdlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZnVu
Y3Rpb24gY2FsbGJhY2socmVzb3VyY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc291cmNl
LmNsZWFyRXJyb3JzQW5kV2FybmluZ3MoKTsKKyAgICAgICAgICAgIHZhciB2aWV3ID0gcmVzb3Vy
Y2UuX3Jlc291cmNlc1ZpZXc7CisgICAgICAgICAgICBpZiAodmlldyAmJiB2aWV3LmNsZWFyTWVz
c2FnZXMpCisgICAgICAgICAgICAgICAgdmlldy5jbGVhck1lc3NhZ2VzKCk7CisgICAgICAgIH0K
KyAgICAgICAgdGhpcy5fcmVzb3VyY2VUcmVlTW9kZWwuZm9yQWxsUmVzb3VyY2VzKGNhbGxiYWNr
KTsKICAgICB9CiB9CiAKQEAgLTQxNywzICs0MTAsMTQxIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZU1hbmFnZXIuZ2V0Q29udGVudHMgPSBmdW5jdGlvbihyZXNvdXJjZSwgY2FsbGJhY2spCiAgICAg
ZWxzZQogICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFJlc291cmNlQ29udGVudChyZXNvdXJj
ZS5pZGVudGlmaWVyLCBmYWxzZSwgY2FsbGJhY2spOwogfQorCitXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlTW9kZWwgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlk
ID0ge307CisgICAgdGhpcy5fc3ViZnJhbWVzID0ge307CisgICAgdGhpcy5fcmVzb3VyY2VzQnlV
UkwgPSB7fTsKK30KKworV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9
IHsKKyAgICBhZGRPclVwZGF0ZUZyYW1lOiBmdW5jdGlvbihwYXJlbnRGcmFtZUlkLCBmcmFtZUlk
LCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc3RvcmFn
ZS5hZGRPclVwZGF0ZUZyYW1lKHBhcmVudEZyYW1lSWQsIGZyYW1lSWQsIGRpc3BsYXlOYW1lKTsK
KyAgICAgICAgdmFyIHN1YmZyYW1lcyA9IHRoaXMuX3N1YmZyYW1lc1twYXJlbnRGcmFtZUlkXTsK
KyAgICAgICAgaWYgKCFzdWJmcmFtZXMpIHsKKyAgICAgICAgICAgIHN1YmZyYW1lcyA9IHt9Owor
ICAgICAgICAgICAgdGhpcy5fc3ViZnJhbWVzW3BhcmVudEZyYW1lSWQgfHwgMF0gPSBzdWJmcmFt
ZXM7CisgICAgICAgIH0KKyAgICAgICAgc3ViZnJhbWVzW2ZyYW1lSWRdID0gdHJ1ZTsKKyAgICB9
LAorCisgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBmdW5jdGlvbihwYXJlbnRGcmFtZUlkLCBs
b2FkZXIpCisgICAgeworICAgICAgICB0aGlzLl9jbGVhckNoaWxkRnJhbWVzQW5kUmVzb3VyY2Vz
KGxvYWRlci5mcmFtZUlkLCBsb2FkZXIubG9hZGVySWQpOworCisgICAgICAgIHZhciB0bXBSZXNv
dXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UobnVsbCwgbG9hZGVyLnVybCk7CisgICAg
ICAgIHRoaXMuYWRkT3JVcGRhdGVGcmFtZShwYXJlbnRGcmFtZUlkLCBsb2FkZXIuZnJhbWVJZCwg
dG1wUmVzb3VyY2UuZGlzcGxheU5hbWUpOworCisgICAgICAgIHZhciByZXNvdXJjZXNGb3JGcmFt
ZSA9IHRoaXMuX3Jlc291cmNlc0J5RnJhbWVJZFtsb2FkZXIuZnJhbWVJZF07CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyByZXNvdXJjZXNGb3JGcmFtZSAmJiBpIDwgcmVzb3VyY2VzRm9yRnJhbWUu
bGVuZ3RoOyArK2kpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnN0b3JhZ2UuYWRk
UmVzb3VyY2VUb0ZyYW1lKGxvYWRlci5mcmFtZUlkLCByZXNvdXJjZXNGb3JGcmFtZVtpXSk7Cisg
ICAgfSwKKworICAgIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50OiBmdW5jdGlvbihmcmFtZUlkKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fY2xlYXJDaGlsZEZyYW1lc0FuZFJlc291cmNlcyhmcmFtZUlk
LCAwKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zdG9yYWdlLnJlbW92ZUZyYW1lKGZy
YW1lSWQpOworICAgIH0sCisKKyAgICBfY2xlYXJDaGlsZEZyYW1lc0FuZFJlc291cmNlczogZnVu
Y3Rpb24oZnJhbWVJZCwgbG9hZGVySWQpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLnN0b3JhZ2UucmVtb3ZlUmVzb3VyY2VzRnJvbUZyYW1lKGZyYW1lSWQpOworCisgICAgICAg
IHRoaXMuX2NsZWFyUmVzb3VyY2VzKGZyYW1lSWQsIGxvYWRlcklkKTsKKyAgICAgICAgdmFyIHN1
YmZyYW1lcyA9IHRoaXMuX3N1YmZyYW1lc1tmcmFtZUlkXTsKKyAgICAgICAgaWYgKCFzdWJmcmFt
ZXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yICh2YXIgY2hpbGRGcmFtZUlk
IGluIHN1YmZyYW1lcykgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zdG9yYWdl
LnJlbW92ZUZyYW1lKGNoaWxkRnJhbWVJZCk7CisgICAgICAgICAgICB0aGlzLl9jbGVhckNoaWxk
RnJhbWVzQW5kUmVzb3VyY2VzKGNoaWxkRnJhbWVJZCwgbG9hZGVySWQpOworICAgICAgICB9Cisg
ICAgICAgIGRlbGV0ZSB0aGlzLl9zdWJmcmFtZXNbZnJhbWVJZF07CisgICAgfSwKKworICAgIGFk
ZFJlc291cmNlVG9GcmFtZTogZnVuY3Rpb24oZnJhbWVJZCwgcmVzb3VyY2UpCisgICAgeworICAg
ICAgICB2YXIgcmVzb3VyY2VzRm9yRnJhbWUgPSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRbZnJh
bWVJZF07CisgICAgICAgIGlmICghcmVzb3VyY2VzRm9yRnJhbWUpIHsKKyAgICAgICAgICAgIHJl
c291cmNlc0ZvckZyYW1lID0gW107CisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZXNCeUZyYW1l
SWRbZnJhbWVJZF0gPSByZXNvdXJjZXNGb3JGcmFtZTsKKyAgICAgICAgfQorICAgICAgICByZXNv
dXJjZXNGb3JGcmFtZS5wdXNoKHJlc291cmNlKTsKKyAgICAgICAgdGhpcy5fYmluZFJlc291cmNl
VVJMKHJlc291cmNlKTsKKworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnN0b3JhZ2UuYWRk
UmVzb3VyY2VUb0ZyYW1lKGZyYW1lSWQsIHJlc291cmNlKTsKKyAgICB9LAorCisgICAgX2NsZWFy
UmVzb3VyY2VzOiBmdW5jdGlvbihmcmFtZUlkLCBsb2FkZXJUb1ByZXNlcnZlSWQpCisgICAgewor
ICAgICAgICB2YXIgcmVzb3VyY2VzRm9yRnJhbWUgPSB0aGlzLl9yZXNvdXJjZXNCeUZyYW1lSWRb
ZnJhbWVJZF07CisgICAgICAgIGlmICghcmVzb3VyY2VzRm9yRnJhbWUpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdmFyIHByZXNlcnZlZFJlc291cmNlc0ZvckZyYW1lID0gW107Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2VzRm9yRnJhbWUubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IHJlc291cmNlc0ZvckZyYW1lW2ldOworICAg
ICAgICAgICAgaWYgKHJlc291cmNlLmxvYWRlci5sb2FkZXJJZCA9PT0gbG9hZGVyVG9QcmVzZXJ2
ZUlkKSB7CisgICAgICAgICAgICAgICAgcHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWUucHVzaChy
ZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICB0aGlzLl91bmJpbmRSZXNvdXJjZVVSTChyZXNvdXJjZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBkZWxldGUgdGhpcy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lSWRdOworICAgICAg
ICBpZiAocHJlc2VydmVkUmVzb3VyY2VzRm9yRnJhbWUubGVuZ3RoKQorICAgICAgICAgICAgdGhp
cy5fcmVzb3VyY2VzQnlGcmFtZUlkW2ZyYW1lSWRdID0gcHJlc2VydmVkUmVzb3VyY2VzRm9yRnJh
bWU7CisgICAgfSwKKworICAgIF9iaW5kUmVzb3VyY2VVUkw6IGZ1bmN0aW9uKHJlc291cmNlKQor
ICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlRm9yVVJMID0gdGhpcy5fcmVzb3VyY2VzQnlVUkxb
cmVzb3VyY2UudXJsXTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZUZvclVSTCkKKyAgICAgICAgICAg
IHRoaXMuX3Jlc291cmNlc0J5VVJMW3Jlc291cmNlLnVybF0gPSByZXNvdXJjZTsKKyAgICAgICAg
ZWxzZSBpZiAocmVzb3VyY2VGb3JVUkwgaW5zdGFuY2VvZiBBcnJheSkKKyAgICAgICAgICAgIHJl
c291cmNlRm9yVVJMLnB1c2gocmVzb3VyY2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0
aGlzLl9yZXNvdXJjZXNCeVVSTFtyZXNvdXJjZS51cmxdID0gWyByZXNvdXJjZUZvclVSTCBdOwor
ICAgIH0sCisKKyAgICBfdW5iaW5kUmVzb3VyY2VVUkw6IGZ1bmN0aW9uKHJlc291cmNlKQorICAg
IHsKKyAgICAgICAgdmFyIHJlc291cmNlRm9yVVJMID0gdGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVz
b3VyY2UudXJsXTsKKyAgICAgICAgaWYgKCFyZXNvdXJjZUZvclVSTCkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBpZiAocmVzb3VyY2VGb3JVUkwgaW5zdGFuY2VvZiBBcnJheSkgewor
ICAgICAgICAgICAgcmVzb3VyY2VGb3JVUkwucmVtb3ZlKHJlc291cmNlLCB0cnVlKTsKKyAgICAg
ICAgICAgIGlmIChyZXNvdXJjZUZvclVSTC5sZW5ndGggPT09IDEpCisgICAgICAgICAgICAgICAg
dGhpcy5fcmVzb3VyY2VzQnlVUkxbcmVzb3VyY2UudXJsXSA9IHJlc291cmNlRm9yVVJMWzBdOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGVsZXRlIHRoaXMuX3Jl
c291cmNlc0J5VVJMW3Jlc291cmNlLnVybF07CisgICAgfSwKKworICAgIHJlc291cmNlRm9yVVJM
OiBmdW5jdGlvbih1cmwpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VzQnlV
UkxbdXJsXTsKKyAgICB9LAorCisgICAgZm9yQWxsUmVzb3VyY2VzOiBmdW5jdGlvbihjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIHRoaXMuX2NhbGxGb3JGcmFtZVJlc291cmNlcygwLCBjYWxsYmFj
ayk7CisgICAgfSwKKworICAgIF9jYWxsRm9yRnJhbWVSZXNvdXJjZXM6IGZ1bmN0aW9uKGZyYW1l
SWQsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHJlc291cmNlcyA9IHRoaXMuX3Jlc291
cmNlc0J5RnJhbWVJZFtmcmFtZUlkXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IHJlc291cmNl
cyAmJiBpIDwgcmVzb3VyY2VzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgY2FsbGJhY2socmVz
b3VyY2VzW2ldKTsKKyAgICAgICAgCisgICAgICAgIHZhciBmcmFtZXMgPSB0aGlzLl9zdWJmcmFt
ZXNbZnJhbWVJZF07CisgICAgICAgIGlmIChmcmFtZXMpIHsKKyAgICAgICAgICAgIGZvciAodmFy
IGlkIGluIGZyYW1lcykKKyAgICAgICAgICAgICAgICB0aGlzLl9jYWxsRm9yRnJhbWVSZXNvdXJj
ZXMoaWQsIGNhbGxiYWNrKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9yYWdlUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU3RvcmFnZVBhbmVsLmpzCmluZGV4IDBkODAwODIuLjk0ZjY1NjIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9yYWdlUGFuZWwuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0b3JhZ2VQYW5lbC5qcwpAQCAtMzMsOSArMzMs
MTAgQEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbCA9IGZ1bmN0aW9uKGRhdGFiYXNlKQogCiAg
ICAgdGhpcy5jcmVhdGVTaWRlYmFyKCk7CiAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJvdXRsaW5lLWRpc2Nsb3N1cmUgZmlsdGVyLWFsbCBjaGlsZHJlbiBzbWFsbCIpOwor
ICAgIHRoaXMuc2lkZWJhclRyZWVFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInNpZGViYXItdHJl
ZSIpOwogCiAgICAgaWYgKFByZWZlcmVuY2VzLm5ldHdvcmtQYW5lbEVuYWJsZWQpIHsKLSAgICAg
ICAgdGhpcy5yZXNvdXJjZXNMaXN0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlN0b3Jh
Z2VDYXRlZ29yeVRyZWVFbGVtZW50KHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3Vy
Y2VzIiksICJmcmFtZS1zdG9yYWdlLXRyZWUtaXRlbSIpOworICAgICAgICB0aGlzLnJlc291cmNl
c0xpc3RUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVs
ZW1lbnQodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGcmFtZXMiKSwgImZyYW1lLXN0b3Jh
Z2UtdHJlZS1pdGVtIik7CiAgICAgICAgIHRoaXMuc2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQodGhp
cy5yZXNvdXJjZXNMaXN0VHJlZUVsZW1lbnQpOwogICAgICAgICB0aGlzLnJlc291cmNlc0xpc3RU
cmVlRWxlbWVudC5leHBhbmQoKTsKICAgICAgICAgdGhpcy5fdHJlZUVsZW1lbnRGb3JGcmFtZUlk
ID0ge307CkBAIC03Niw3ICs3Nyw3IEBAIFdlYkluc3BlY3Rvci5TdG9yYWdlUGFuZWwgPSBmdW5j
dGlvbihkYXRhYmFzZSkKIFdlYkluc3BlY3Rvci5TdG9yYWdlUGFuZWwucHJvdG90eXBlID0gewog
ICAgIGdldCB0b29sYmFySXRlbUxhYmVsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlN0b3JhZ2UiKTsKKyAgICAgICAgcmV0dXJuIFByZWZlcmVuY2VzLm5l
dHdvcmtQYW5lbEVuYWJsZWQgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlcyIpIDog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9yYWdlIik7CiAgICAgfSwKIAogICAgIGdldCBzdGF0
dXNCYXJJdGVtcygpCkBAIC0xMTQsNyArMTE1LDcgQEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc3RvcmFnZVZpZXdzLnJlbW92ZUNoaWxkcmVu
KCk7CiAKICAgICAgICAgdGhpcy5zdG9yYWdlVmlld1N0YXR1c0Jhckl0ZW1zQ29udGFpbmVyLnJl
bW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICh0aGlzLnNpZGViYXJUcmVl
LnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICB0aGlzLnNpZGViYXJUcmVlLnNlbGVj
dGVkVHJlZUVsZW1lbnQuZGVzZWxlY3QoKTsKICAgICB9LApAQCAtMTU3LDEzICsxNTgsOSBAQCBX
ZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGZyYW1l
VHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEZvckZyYW1lSWRbZnJhbWVJZF07CiAgICAg
ICAgIGlmICghZnJhbWVUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICB2YXIgY2hpbGRyZW4gPSBmcmFtZVRyZWVFbGVtZW50LmNoaWxkcmVuLnNsaWNlKCk7Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpCi0gICAgICAgICAg
ICB0aGlzLnJlbW92ZUZyYW1lKGNoaWxkcmVuW2ldLl9mcmFtZUlkKTsKLQogICAgICAgICBkZWxl
dGUgdGhpcy5fdHJlZUVsZW1lbnRGb3JGcmFtZUlkW2ZyYW1lSWRdOwotICAgICAgICBmcmFtZVRy
ZWVFbGVtZW50LnBhcmVudC5yZW1vdmVDaGlsZChmcmFtZVRyZWVFbGVtZW50KTsKKyAgICAgICAg
aWYgKGZyYW1lVHJlZUVsZW1lbnQucGFyZW50KQorICAgICAgICAgICAgZnJhbWVUcmVlRWxlbWVu
dC5wYXJlbnQucmVtb3ZlQ2hpbGQoZnJhbWVUcmVlRWxlbWVudCk7CiAgICAgfSwKIAogICAgIGFk
ZFJlc291cmNlVG9GcmFtZTogZnVuY3Rpb24oZnJhbWVJZCwgcmVzb3VyY2UpCkBAIC0yNTMsNyAr
MjUwLDQwIEBAIFdlYkluc3BlY3Rvci5TdG9yYWdlUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAgICAgfSwKIAotICAgIHNob3dSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAg
Y2FuU2hvd1NvdXJjZUxpbmU6IGZ1bmN0aW9uKHVybCwgbGluZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiAhIVdlYkluc3BlY3Rvci5yZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VGb3JVUkwodXJsKTsK
KyAgICB9LAorCisgICAgc2hvd1NvdXJjZUxpbmU6IGZ1bmN0aW9uKHVybCwgbGluZSkKKyAgICB7
CisgICAgICAgIHRoaXMuc2hvd1Jlc291cmNlKFdlYkluc3BlY3Rvci5yZXNvdXJjZU1hbmFnZXIu
cmVzb3VyY2VGb3JVUkwodXJsKSwgbGluZSk7CisgICAgfSwKKworICAgIHNob3dSZXNvdXJjZTog
ZnVuY3Rpb24ocmVzb3VyY2UsIGxpbmUpCisgICAgeworICAgICAgICBmdW5jdGlvbiBjYWxsYmFj
ayhyZXNvdXJjZVRyZWVFbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocmVzb3Vy
Y2UgPT09IHJlc291cmNlVHJlZUVsZW1lbnQuX3Jlc291cmNlKSB7CisgICAgICAgICAgICAgICAg
cmVzb3VyY2VUcmVlRWxlbWVudC5yZXZlYWwoKTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZVRy
ZWVFbGVtZW50LnNlbGVjdCgpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRoaXMuX2ZvckFsbFJlc291cmNlVHJlZUVsZW1l
bnRzKGNhbGxiYWNrKTsKKworICAgICAgICBpZiAobGluZSkgeworICAgICAgICAgICAgdmFyIHZp
ZXcgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlVmlld0ZvclJlc291cmNl
KHJlc291cmNlKTsKKyAgICAgICAgICAgIHZpZXcuc2VsZWN0Q29udGVudFRhYih0cnVlKTsKKyAg
ICAgICAgICAgIGlmICh2aWV3LnJldmVhbExpbmUpCisgICAgICAgICAgICAgICAgdmlldy5yZXZl
YWxMaW5lKGxpbmUpOworICAgICAgICAgICAgaWYgKHZpZXcuaGlnaGxpZ2h0TGluZSkKKyAgICAg
ICAgICAgICAgICB2aWV3LmhpZ2hsaWdodExpbmUobGluZSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIF9zaG93UmVzb3VyY2VWaWV3OiBmdW5jdGlvbihy
ZXNvdXJjZSkKICAgICB7CiAgICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNl
TWFuYWdlci5yZXNvdXJjZVZpZXdGb3JSZXNvdXJjZShyZXNvdXJjZSk7CiAgICAgICAgIHZpZXcu
aGVhZGVyc1Zpc2libGUgPSBmYWxzZTsKQEAgLTUwMyw2ICs1MzMsNzMgQEAgV2ViSW5zcGVjdG9y
LlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc3RvcmFnZVZpZXdzLnN0
eWxlLmxlZnQgPSB3aWR0aCArICJweCI7CiAgICAgICAgIHRoaXMuc3RvcmFnZVZpZXdTdGF0dXNC
YXJJdGVtc0NvbnRhaW5lci5zdHlsZS5sZWZ0ID0gd2lkdGggKyAicHgiOwogICAgICAgICB0aGlz
LnJlc2l6ZSgpOworICAgIH0sCisKKyAgICBnZXQgc2VhcmNoYWJsZVZpZXdzKCkKKyAgICB7Cisg
ICAgICAgIHZhciB2aWV3cyA9IFtdOworCisgICAgICAgIGlmICghUHJlZmVyZW5jZXMubmV0d29y
a1BhbmVsRW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybiB2aWV3czsKKworICAgICAgICBjb25z
dCB2aXNpYmxlVmlldyA9IHRoaXMudmlzaWJsZVZpZXc7CisgICAgICAgIGlmICh2aXNpYmxlVmll
dyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcgJiYgdmlzaWJsZVZpZXcucGVy
Zm9ybVNlYXJjaCkKKyAgICAgICAgICAgIHZpZXdzLnB1c2godmlzaWJsZVZpZXcpOworCisgICAg
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc291cmNlVHJlZUVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciByZXNvdXJjZSA9IHJlc291cmNlVHJlZUVsZW1lbnQuX3Jlc291cmNlOwor
ICAgICAgICAgICAgdmFyIHJlc291cmNlVmlldyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZU1hbmFn
ZXIucmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UocmVzb3VyY2UpOworICAgICAgICAgICAgaWYgKHJl
c291cmNlVmlldy5wZXJmb3JtU2VhcmNoICYmIHJlc291cmNlVmlldyAhPT0gdmlzaWJsZVZpZXcp
CisgICAgICAgICAgICAgICAgdmlld3MucHVzaChyZXNvdXJjZVZpZXcpOworICAgICAgICB9Cisg
ICAgICAgIHRoaXMuX2ZvckFsbFJlc291cmNlVHJlZUVsZW1lbnRzKGNhbGxiYWNrKTsKKyAgICAg
ICAgcmV0dXJuIHZpZXdzOworICAgIH0sCisKKyAgICBfZm9yQWxsUmVzb3VyY2VUcmVlRWxlbWVu
dHM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHN0b3AgPSBmYWxzZTsK
KyAgICAgICAgZm9yICh2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLnJlc291cmNlc0xpc3RUcmVlRWxl
bWVudDsgIXN0b3AgJiYgdHJlZUVsZW1lbnQ7IHRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQudHJh
dmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2UsIHRoaXMucmVzb3VyY2VzTGlzdFRyZWVFbGVtZW50
LCB0cnVlKSkgeworICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudCkKKyAgICAgICAgICAgICAgICBzdG9wID0g
Y2FsbGJhY2sodHJlZUVsZW1lbnQpOworICAgICAgICB9CisgICAgfSwKKworICAgIHNlYXJjaE1h
dGNoRm91bmQ6IGZ1bmN0aW9uKHZpZXcsIG1hdGNoZXMpCisgICAgeworICAgICAgICBpZiAodmll
dy5yZXNvdXJjZSkKKyAgICAgICAgICAgIHZpZXcucmVzb3VyY2Uuc2VhcmNoTWF0Y2hlcyA9IG1h
dGNoZXM7CisgICAgfSwKKworICAgIHNlYXJjaENhbmNlbGVkOiBmdW5jdGlvbihzdGFydGluZ05l
d1NlYXJjaCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuc2Vh
cmNoQ2FuY2VsZWQuY2FsbCh0aGlzLCBzdGFydGluZ05ld1NlYXJjaCk7CisKKyAgICAgICAgaWYg
KHN0YXJ0aW5nTmV3U2VhcmNoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZ1bmN0
aW9uIGNhbGxiYWNrKHJlc291cmNlVHJlZUVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJlc291cmNlVHJlZUVsZW1lbnQuX2Vycm9yc1dhcm5pbmdzVXBkYXRlZCgpOworICAgICAgICB9
CisgICAgICAgIHRoaXMuX2ZvckFsbFJlc291cmNlVHJlZUVsZW1lbnRzKGNhbGxiYWNrKTsKKyAg
ICB9LAorCisgICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24ocXVlcnkpCisgICAgeworICAgICAg
ICBmdW5jdGlvbiBjYWxsYmFjayhyZXNvdXJjZVRyZWVFbGVtZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICByZXNvdXJjZVRyZWVFbGVtZW50Ll9yZXNldEJ1YmJsZSgpOworICAgICAgICB9Cisg
ICAgICAgIHRoaXMuX2ZvckFsbFJlc291cmNlVHJlZUVsZW1lbnRzKGNhbGxiYWNrKTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZS5wZXJmb3JtU2VhcmNoLmNhbGwodGhpcywg
cXVlcnkpOworICAgIH0sCisKKyAgICBzaG93VmlldzogZnVuY3Rpb24odmlldykKKyAgICB7Cisg
ICAgICAgIGlmICh2aWV3KQorICAgICAgICAgICAgdGhpcy5zaG93UmVzb3VyY2Uodmlldy5yZXNv
dXJjZSk7CiAgICAgfQogfQogCkBAIC01MjYsOSArNjIzLDkgQEAgV2ViSW5zcGVjdG9yLkJhc2VT
dG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmltYWdlRWxlbWVu
dC5jbGFzc05hbWUgPSAiaWNvbiI7CiAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuaW1hZ2VFbGVtZW50KTsKIAotICAgICAgICB0aGlzLnRpdGxlRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgdGhpcy50aXRsZUVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy50aXRsZUVs
ZW1lbnQuY2xhc3NOYW1lID0gImJhc2Utc3RvcmFnZS10cmVlLWVsZW1lbnQtdGl0bGUiOwogICAg
ICAgICB0aGlzLnRpdGxlRWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMuX3RpdGxlVGV4dDsKLSAg
ICAgICAgdGhpcy50aXRsZUVsZW1lbnQuY2xhc3NOYW1lID0gInN0b3JhZ2UtYmFzZS10cmVlLWVs
ZW1lbnQtdGl0bGUiOwogICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLnRpdGxlRWxlbWVudCk7CiAKICAgICAgICAgdmFyIHNlbGVjdGlvbkVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAgLTU0Niw2ICs2NDMsMTYgQEAgV2ViSW5zcGVj
dG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAg
dGhpcy5fdGl0bGVUZXh0ID0gdGl0bGVUZXh0OwogICAgICAgICB0aGlzLnRpdGxlRWxlbWVudC50
ZXh0Q29udGVudCA9IHRoaXMuX3RpdGxlVGV4dDsKKyAgICB9LAorCisgICAgaXNFdmVudFdpdGhp
bkRpc2Nsb3N1cmVUcmlhbmdsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gT3ZlcnJp
ZGUgaXQgc2luY2Ugd2UgdXNlIG1hcmdpbi1sZWZ0IGluIHBsYWNlIG9mIHRyZWVvdXRsaW5lJ3Mg
dGV4dC1pbmRlbnQuCisgICAgICAgIC8vIEhlbmNlIHdlIG5lZWQgdG8gdGFrZSBwYWRkaW5nIGlu
dG8gY29uc2lkZXJhdGlvbi4gVGhpcyBhbGwgaXMgbmVlZGVkIGZvciBsZWFkaW5nCisgICAgICAg
IC8vIGljb25zIGluIHRoZSB0cmVlLgorICAgICAgICBjb25zdCBwYWRkaW5nTGVmdCA9IDE0Owor
ICAgICAgICB2YXIgbGVmdCA9IHRoaXMubGlzdEl0ZW1FbGVtZW50LnRvdGFsT2Zmc2V0TGVmdCAr
IHBhZGRpbmdMZWZ0OworICAgICAgICByZXR1cm4gZXZlbnQucGFnZVggPj0gbGVmdCAmJiBldmVu
dC5wYWdlWCA8PSBsZWZ0ICsgdGhpcy5hcnJvd1RvZ2dsZVdpZHRoICYmIHRoaXMuaGFzQ2hpbGRy
ZW47CiAgICAgfQogfQogCkBAIC01OTUsMTIgKzcwMiwyMCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVS
ZXNvdXJjZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCByZXNvdXJjZSkKIHsK
ICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0b3Jh
Z2VQYW5lbCwgcmVzb3VyY2UuZGlzcGxheU5hbWUsICJyZXNvdXJjZS1zaWRlYmFyLXRyZWUtaXRl
bSByZXNvdXJjZXMtY2F0ZWdvcnktIiArIHJlc291cmNlLmNhdGVnb3J5Lm5hbWUpOwogICAgIHRo
aXMuX3Jlc291cmNlID0gcmVzb3VyY2U7CisgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0
ZW5lcigiZXJyb3JzLXdhcm5pbmdzLXVwZGF0ZWQiLCB0aGlzLl9lcnJvcnNXYXJuaW5nc1VwZGF0
ZWQsIHRoaXMpOworICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoInNlYXJjaC1t
YXRjaGVzLXVwZGF0ZWQiLCB0aGlzLl9zZWFyY2hNYXRjaGVzVXBkYXRlZCwgdGhpcyk7CisgICAg
dGhpcy50b29sdGlwID0gcmVzb3VyY2UudXJsOwogfQogCiBXZWJJbnNwZWN0b3IuRnJhbWVSZXNv
dXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBvbnNlbGVjdDogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgdGhpcy5fc3RvcmFnZVBhbmVsLnNob3dSZXNvdXJjZSh0aGlzLl9yZXNv
dXJjZSk7CisgICAgICAgIHRoaXMuX3N0b3JhZ2VQYW5lbC5fc2hvd1Jlc291cmNlVmlldyh0aGlz
Ll9yZXNvdXJjZSk7CisgICAgfSwKKworICAgIG9uZGJsY2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5vcGVuSW5JbnNwZWN0ZWRXaW5kb3codGhp
cy5fcmVzb3VyY2UudXJsKTsKICAgICB9LAogCiAgICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKQEAg
LTYxNyw2ICs3MzIsNzggQEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpY29uRWxlbWVudC5hcHBlbmRDaGlsZChwcmV2aWV3
SW1hZ2UpOwogICAgICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQucmVwbGFjZUNoaWxkKGlj
b25FbGVtZW50LCB0aGlzLmltYWdlRWxlbWVudCk7CiAgICAgICAgIH0KKworICAgICAgICB0aGlz
Ll9zdGF0dXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IHRoaXMuX3N0YXR1c0VsZW1lbnQuY2xhc3NOYW1lID0gInN0YXR1cyI7CisgICAgICAgIHRoaXMu
bGlzdEl0ZW1FbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9zdGF0dXNFbGVtZW50LCB0aGlzLnRp
dGxlRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuZHJhZ2dhYmxlID0g
dHJ1ZTsKKyAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJh
Z3N0YXJ0IiwgdGhpcy5fb25kcmFnc3RhcnQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIH0sCisK
KyAgICBfb25kcmFnc3RhcnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgZXZlbnQu
ZGF0YVRyYW5zZmVyLnNldERhdGEoInRleHQvcGxhaW4iLCB0aGlzLl9yZXNvdXJjZS51cmwpOwor
ICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgidGV4dC91cmktbGlzdCIsIHRoaXMu
X3Jlc291cmNlLnVybCArICJcclxuIik7CisgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZl
Y3RBbGxvd2VkID0gImNvcHkiOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAg
X3NldEJ1YmJsZVRleHQ6IGZ1bmN0aW9uKHgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2J1
YmJsZUVsZW1lbnQpIHsKKyAgICAgICAgICAgIHRoaXMuX2J1YmJsZUVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHRoaXMuX2J1YmJsZUVsZW1lbnQu
Y2xhc3NOYW1lID0gImJ1YmJsZSI7CisgICAgICAgICAgICB0aGlzLl9zdGF0dXNFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2J1YmJsZUVsZW1lbnQpOworICAgICAgICB9CisKKyAgICAgICAgdGhp
cy5fYnViYmxlRWxlbWVudC50ZXh0Q29udGVudCA9IHg7CisgICAgfSwKKworICAgIF9yZXNldEJ1
YmJsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2J1YmJsZUVsZW1lbnQp
IHsKKyAgICAgICAgICAgIHRoaXMuX2J1YmJsZUVsZW1lbnQudGV4dENvbnRlbnQgPSAiIjsKKyAg
ICAgICAgICAgIHRoaXMuX2J1YmJsZUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygic2VhcmNoLW1h
dGNoZXMiKTsKKyAgICAgICAgICAgIHRoaXMuX2J1YmJsZUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFz
cygid2FybmluZyIpOworICAgICAgICAgICAgdGhpcy5fYnViYmxlRWxlbWVudC5yZW1vdmVTdHls
ZUNsYXNzKCJlcnJvciIpOworICAgICAgICB9CisgICAgfSwKKworICAgIF9zZWFyY2hNYXRjaGVz
VXBkYXRlZDogZnVuY3Rpb24obWF0Y2hlcykKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc2V0QnVi
YmxlKCk7CisKKyAgICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZS5zZWFyY2hNYXRjaGVzKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3NldEJ1YmJsZVRleHQodGhpcy5fcmVz
b3VyY2Uuc2VhcmNoTWF0Y2hlcyk7CisgICAgICAgIHRoaXMuX2J1YmJsZUVsZW1lbnQuYWRkU3R5
bGVDbGFzcygic2VhcmNoLW1hdGNoZXMiKTsKKworICAgICAgICAvLyBFeHBhbmQsIGRvIG5vdCBz
Y3JvbGwgaW50byB2aWV3LgorICAgICAgICB2YXIgY3VycmVudEFuY2VzdG9yID0gdGhpcy5wYXJl
bnQ7CisgICAgICAgIHdoaWxlIChjdXJyZW50QW5jZXN0b3IgJiYgIWN1cnJlbnRBbmNlc3Rvci5y
b290KSB7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRBbmNlc3Rvci5leHBhbmRlZCkKKyAgICAg
ICAgICAgICAgICBjdXJyZW50QW5jZXN0b3IuZXhwYW5kKCk7CisgICAgICAgICAgICBjdXJyZW50
QW5jZXN0b3IgPSBjdXJyZW50QW5jZXN0b3IucGFyZW50OworICAgICAgICB9CisgICAgfSwKKwor
ICAgIF9lcnJvcnNXYXJuaW5nc1VwZGF0ZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlm
ICh0aGlzLl9zdG9yYWdlUGFuZWwuY3VycmVudFF1ZXJ5KQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRoaXMuX3Jlc2V0QnViYmxlKCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3Jlc291
cmNlLndhcm5pbmdzIHx8IHRoaXMuX3Jlc291cmNlLmVycm9ycykKKyAgICAgICAgICAgIHRoaXMu
X3NldEJ1YmJsZVRleHQodGhpcy5fcmVzb3VyY2Uud2FybmluZ3MgKyB0aGlzLl9yZXNvdXJjZS5l
cnJvcnMpOworCisgICAgICAgIGlmICh0aGlzLl9yZXNvdXJjZS53YXJuaW5ncykKKyAgICAgICAg
ICAgIHRoaXMuX2J1YmJsZUVsZW1lbnQuYWRkU3R5bGVDbGFzcygid2FybmluZyIpOworCisgICAg
ICAgIGlmICh0aGlzLl9yZXNvdXJjZS5lcnJvcnMpCisgICAgICAgICAgICB0aGlzLl9idWJibGVF
bGVtZW50LmFkZFN0eWxlQ2xhc3MoImVycm9yIik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IGRiMjlhNmEuLjEwMzFiMGUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCkBAIC0xOTIwLDIyICsxOTIw
LDI0IEBAIGJvZHkuaW5hY3RpdmUgLnNpZGViYXIgewogLnN0b3JhZ2UucGFuZWwgLnNpZGViYXIg
ewogICAgIGJvcmRlci1sZWZ0OiByZ2IoMjMyLCAyMzIsIDIzMik7CiAgICAgYmFja2dyb3VuZC1j
b2xvcjogdHJhbnNwYXJlbnQ7Ci0gICAgb3ZlcmZsb3cteDogYXV0bzsKLX0KLQotLnN0b3JhZ2Uu
cGFuZWwgLnNpZGViYXIub3V0bGluZS1kaXNjbG9zdXJlID4gb2wgewotICAgIG1hcmdpbi1sZWZ0
OiAtMTJweDsKLSAgICBwYWRkaW5nLXJpZ2h0OiAwcHggIWltcG9ydGFudDsKKyAgICBwYWRkaW5n
LWxlZnQ6IDBweDsKIH0KIAogLnN0b3JhZ2UucGFuZWwgLm91dGxpbmUtZGlzY2xvc3VyZSBsaSB7
CisgICAgaGVpZ2h0OiAxN3B4OwogICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgICAgdGV4dC1p
bmRlbnQ6IDA7CisgICAgbWFyZ2luLWxlZnQ6IC0ycHg7Cit9CisKKy5zdG9yYWdlLnBhbmVsIC5v
dXRsaW5lLWRpc2Nsb3N1cmUgbGkucGFyZW50IHsKKyAgICB0ZXh0LWluZGVudDogMDsKKyAgICBt
YXJnaW4tbGVmdDogLTEycHg7CiB9CiAKIC5zdG9yYWdlLnBhbmVsIC5vdXRsaW5lLWRpc2Nsb3N1
cmUgbGkgLnNlbGVjdGlvbiB7CiAgICAgaGVpZ2h0OiAxN3B4OwotICAgIG1hcmdpbi1sZWZ0OiAt
MTAwcHg7Ci0gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIG1hcmdpbi10b3A6IC0xM3B4
OwogfQogCiAuc3RvcmFnZS5wYW5lbCAuc2lkZWJhci1yZXNpemVyLXZlcnRpY2FsIHsKQEAgLTE5
NDQsMjUgKzE5NDYsMzEgQEAgYm9keS5pbmFjdGl2ZSAuc2lkZWJhciB7CiAgICAgYm9yZGVyLXJp
Z2h0OiAxcHggc29saWQgZ3JheTsKIH0KIAotLnN0b3JhZ2UtYmFzZS10cmVlLWVsZW1lbnQtdGl0
bGUgewotICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBib3R0b206IDRweDsKLSAgICBsZWZ0
OiAzcHg7Cisuc3RvcmFnZS5wYW5lbCAub3V0bGluZS1kaXNjbG9zdXJlIC5pY29uIHsKKyAgICB3
aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgZmxvYXQ6IGxlZnQ7CiB9CiAKLS5z
dG9yYWdlLnBhbmVsIC5vdXRsaW5lLWRpc2Nsb3N1cmUgb2wgewotICAgIC13ZWJraXQtcGFkZGlu
Zy1zdGFydDogMTRweDsKKy5zdG9yYWdlLnBhbmVsIC5iYXNlLXN0b3JhZ2UtdHJlZS1lbGVtZW50
LXRpdGxlIHsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
KyAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKKyAgICBwYWRkaW5nLWxlZnQ6IDJweDsKKyAg
ICB0b3A6IDFweDsKIH0KIAotLnN0b3JhZ2UucGFuZWwgLm91dGxpbmUtZGlzY2xvc3VyZSBsaS5z
ZWxlY3RlZCB7Ci0gICAgY29sb3I6IHdoaXRlOwotICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5z
cGFyZW50OworLnN0b3JhZ2UucGFuZWwgLnN0YXR1cyB7CisgICAgZmxvYXQ6IHJpZ2h0OworICAg
IGhlaWdodDogMTZweDsKKyAgICBtYXJnaW4tdG9wOiAxcHg7CisgICAgbWFyZ2luLWxlZnQ6IDRw
eDsKKyAgICBsaW5lLWhlaWdodDogMWVtOwogfQogCi0uc3RvcmFnZS5wYW5lbCAub3V0bGluZS1k
aXNjbG9zdXJlIC5pY29uIHsKLSAgICB3aWR0aDogMTZweDsKLSAgICBoZWlnaHQ6IDE2cHg7Ci0g
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworLnN0b3JhZ2UucGFuZWwgbGkgLnN0YXR1cyAuYnVi
YmxlIHsKKyAgICBoZWlnaHQ6IDEzcHg7CisgICAgcGFkZGluZy10b3A6IDA7CiB9CiAKIC5zdG9y
YWdlLXZpZXcgewpAQCAtMzIwMyw3ICszMjExLDcgQEAgYm9keS5pbmFjdGl2ZSAuc2lkZWJhci10
cmVlLWl0ZW0gLmRpc2Nsb3N1cmUtYnV0dG9uOmFjdGl2ZSB7CiAgICAgbWFyZ2luLXJpZ2h0OiAz
cHg7CiB9CiAKLS5zaWRlYmFyLXRyZWUtaXRlbSAuc3RhdHVzIHsKK2xpIC5zdGF0dXMgewogICAg
IGZsb2F0OiByaWdodDsKICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgbWFyZ2luLXRvcDogOXB4OwpA
QCAtMzIxMSwxMSArMzIxOSwxMSBAQCBib2R5LmluYWN0aXZlIC5zaWRlYmFyLXRyZWUtaXRlbSAu
ZGlzY2xvc3VyZS1idXR0b246YWN0aXZlIHsKICAgICBsaW5lLWhlaWdodDogMWVtOwogfQogCi0u
c2lkZWJhci10cmVlLWl0ZW0gLnN0YXR1czplbXB0eSB7CitsaSAuc3RhdHVzOmVtcHR5IHsKICAg
ICBkaXNwbGF5OiBub25lOwogfQogCi0uc2lkZWJhci10cmVlLWl0ZW0gLnN0YXR1cyAuYnViYmxl
IHsKK2xpIC5zdGF0dXMgLmJ1YmJsZSB7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAg
IGhlaWdodDogMTRweDsKICAgICBtaW4td2lkdGg6IDE2cHg7CkBAIC0zMjM0LDIwICszMjQyLDIw
IEBAIGJvZHkuaW5hY3RpdmUgLnNpZGViYXItdHJlZS1pdGVtIC5kaXNjbG9zdXJlLWJ1dHRvbjph
Y3RpdmUgewogICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogN3B4OwogfQogCi0uc2lkZWJhci10
cmVlLWl0ZW0gLnN0YXR1cyAuYnViYmxlOmVtcHR5IHsKK2xpIC5zdGF0dXMgLmJ1YmJsZTplbXB0
eSB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KIAotLnNpZGViYXItdHJlZS1pdGVtLnNlbGVjdGVk
IC5zdGF0dXMgLmJ1YmJsZSB7CitsaS5zZWxlY3RlZCAuc3RhdHVzIC5idWJibGUgewogICAgIGJh
Y2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgICAgY29sb3I6IHJnYigxMzIsIDE1
NCwgMTkwKSAhaW1wb3J0YW50OwogfQogCi06Zm9jdXMgLnNpZGViYXItdHJlZS1pdGVtLnNlbGVj
dGVkIC5zdGF0dXMgLmJ1YmJsZSB7Cis6Zm9jdXMgbGkuc2VsZWN0ZWQgLnN0YXR1cyAuYnViYmxl
IHsKICAgICBjb2xvcjogcmdiKDM2LCA5OCwgMTcyKSAhaW1wb3J0YW50OwogfQogCi1ib2R5Lmlu
YWN0aXZlIC5zaWRlYmFyLXRyZWUtaXRlbS5zZWxlY3RlZCAuc3RhdHVzIC5idWJibGUgeworYm9k
eS5pbmFjdGl2ZSBsaS5zZWxlY3RlZCAuc3RhdHVzIC5idWJibGUgewogICAgIGNvbG9yOiByZ2Io
MTU5LCAxNTksIDE1OSkgIWltcG9ydGFudDsKIH0KIApAQCAtMzQ2OCwxNSArMzQ3NiwxNSBAQCBi
b2R5LmluYWN0aXZlIC5zaWRlYmFyLXRyZWUtaXRlbS5zZWxlY3RlZCB7CiAgICAgcGFkZGluZy1s
ZWZ0OiAxM3B4ICFpbXBvcnRhbnQ7CiB9CiAKLS5zaWRlYmFyLXRyZWUtaXRlbS5zZWxlY3RlZCAu
YnViYmxlLnNlYXJjaC1tYXRjaGVzIHsKK2xpLnNlbGVjdGVkIC5idWJibGUuc2VhcmNoLW1hdGNo
ZXMgewogICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChJbWFnZXMvc2VhcmNoU21hbGxCbHVlLnBu
Zyk7CiB9CiAKLTpmb2N1cyAuc2lkZWJhci10cmVlLWl0ZW0uc2VsZWN0ZWQgLmJ1YmJsZS5zZWFy
Y2gtbWF0Y2hlcyB7Cis6Zm9jdXMgbGkuc2VsZWN0ZWQgLmJ1YmJsZS5zZWFyY2gtbWF0Y2hlcyB7
CiAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKEltYWdlcy9zZWFyY2hTbWFsbEJyaWdodEJsdWUu
cG5nKTsKIH0KIAotYm9keS5pbmFjdGl2ZSAuc2lkZWJhci10cmVlLWl0ZW0uc2VsZWN0ZWQgLmJ1
YmJsZS5zZWFyY2gtbWF0Y2hlcyB7Citib2R5LmluYWN0aXZlIGxpLnNlbGVjdGVkIC5idWJibGUu
c2VhcmNoLW1hdGNoZXMgewogICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChJbWFnZXMvc2VhcmNo
U21hbGxHcmF5LnBuZyk7CiB9CiAK
</data>
<flag name="review"
          id="61791"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>