<?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>43847</bug_id>
          
          <creation_ts>2010-08-11 05:56:55 -0700</creation_ts>
          <short_desc>Web Inspector: brush up object proxies, introduce remote object model.</short_desc>
          <delta_ts>2010-08-12 12:51:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>abarth</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>263207</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-11 05:56:55 -0700</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263260</commentid>
    <comment_count>1</comment_count>
      <attachid>64116</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-11 08:11:51 -0700</bug_when>
    <thetext>Created attachment 64116
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263623</commentid>
    <comment_count>2</comment_count>
      <attachid>64116</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-11 23:58:13 -0700</bug_when>
    <thetext>Comment on attachment 64116
[PATCH] Proposed change.

WebCore/inspector/front-end/RemoteObject.js:2
 +   * Copyright (C) 2009 Google Inc. All rights reserved.
2009-&gt;2010

WebCore/inspector/front-end/RemoteObject.js:55
 +      message._type = &quot;error&quot;;
Just pass it as argument to the constructor.

WebCore/inspector/front-end/RemoteObject.js:64
 +  WebInspector.RemoteObject.fromPayload = function(payload)
Maybe fromProtocolMessage or something else more descriptive than just payload?

WebCore/inspector/front-end/RemoteObject.js:68
 +      // FIXME: make sure we only get here with real payloads in the new DebuggerAgent.js.
There is no DebuggerAgent.js, please change the comment.

WebCore/inspector/front-end/RemoteObject.js:117
 +                      result[propertiesPayload[i].name] = propertiesPayload[i].value.description;
It should return WebInspector.RemoteObjects as values. Otherwise rename the method to getPropertyValueDescriptions. r- for this.

WebCore/inspector/front-end/PropertiesSidebarPane.js:61
 +          InjectedScriptAccess.get(-node.id).getPrototypes(node.id, callback);
Please encapsulate getting injected script id by node id into a method.

WebCore/inspector/front-end/InjectedScript.js:543
 +          if (typeof obj.length == &quot;number&quot;)
== -&gt; ===

WebCore/inspector/front-end/InjectedScript.js:412
 +      var description = InjectedScript._describe(object, abbreviate);
This call was wrapped in try/catch, why did you decide to remove it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263736</commentid>
    <comment_count>3</comment_count>
      <attachid>64213</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-12 05:33:28 -0700</bug_when>
    <thetext>Created attachment 64213
[PATCH] Review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263766</commentid>
    <comment_count>4</comment_count>
      <attachid>64213</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-12 06:20:50 -0700</bug_when>
    <thetext>Comment on attachment 64213
[PATCH] Review comments addressed.

WebCore/inspector/front-end/ConsoleView.js:593
 +      },
please revert InjectedScriptAccess.get change as discussed offline

WebCore/inspector/front-end/EventListenersSidebarPane.js:197
 +                  value = WebInspector.RemoveObject.fromNode(value.id);
Please fix this line. r- for that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263768</commentid>
    <comment_count>5</comment_count>
      <attachid>64216</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-12 06:23:11 -0700</bug_when>
    <thetext>Created attachment 64216
[PATCH] Review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263775</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-12 06:32:55 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	D	WebCore/inspector/front-end/ObjectProxy.js
	M	LayoutTests/ChangeLog
	M	LayoutTests/inspector/console-dir-expected.txt
	M	LayoutTests/inspector/console-dir-global.html
	M	LayoutTests/inspector/console-dir.html
	M	LayoutTests/inspector/console-format-collections-expected.txt
	M	LayoutTests/inspector/console-format-expected.txt
	M	WebCore/ChangeLog
	M	WebCore/WebCore.gypi
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/inspector/front-end/AuditRules.js
	M	WebCore/inspector/front-end/ConsoleView.js
	M	WebCore/inspector/front-end/DOMAgent.js
	M	WebCore/inspector/front-end/ElementsPanel.js
	M	WebCore/inspector/front-end/ElementsTreeOutline.js
	M	WebCore/inspector/front-end/EventListenersSidebarPane.js
	M	WebCore/inspector/front-end/InjectedScript.js
	M	WebCore/inspector/front-end/ObjectPropertiesSection.js
	M	WebCore/inspector/front-end/PropertiesSidebarPane.js
	M	WebCore/inspector/front-end/ScopeChainSidebarPane.js
	M	WebCore/inspector/front-end/ScriptsPanel.js
	M	WebCore/inspector/front-end/SourceFrame.js
	M	WebCore/inspector/front-end/WatchExpressionsSidebarPane.js
	M	WebCore/inspector/front-end/WebKit.qrc
	M	WebCore/inspector/front-end/inspector.html
	M	WebCore/inspector/front-end/inspector.js
	M	WebCore/inspector/front-end/utilities.js
Committed r65241</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263778</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-12 06:37:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/65241 might have broken Qt Linux Release minimal, Qt Linux ARMv5 Release, and Qt Linux ARMv7 Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263817</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-12 08:06:08 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	D	WebCore/inspector/front-end/RemoteObject.js
	M	LayoutTests/ChangeLog
	M	LayoutTests/inspector/console-dir-expected.txt
	M	LayoutTests/inspector/console-dir-global.html
	M	LayoutTests/inspector/console-dir.html
	M	LayoutTests/inspector/console-format-collections-expected.txt
	M	LayoutTests/inspector/console-format-expected.txt
	M	WebCore/ChangeLog
	M	WebCore/WebCore.gypi
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/inspector/front-end/AuditRules.js
	M	WebCore/inspector/front-end/ConsoleView.js
	M	WebCore/inspector/front-end/DOMAgent.js
	M	WebCore/inspector/front-end/ElementsPanel.js
	M	WebCore/inspector/front-end/ElementsTreeOutline.js
	M	WebCore/inspector/front-end/EventListenersSidebarPane.js
	M	WebCore/inspector/front-end/InjectedScript.js
	M	WebCore/inspector/front-end/ObjectPropertiesSection.js
	A	WebCore/inspector/front-end/ObjectProxy.js
	M	WebCore/inspector/front-end/PropertiesSidebarPane.js
	M	WebCore/inspector/front-end/ScopeChainSidebarPane.js
	M	WebCore/inspector/front-end/ScriptsPanel.js
	M	WebCore/inspector/front-end/SourceFrame.js
	M	WebCore/inspector/front-end/WatchExpressionsSidebarPane.js
	M	WebCore/inspector/front-end/WebKit.qrc
	M	WebCore/inspector/front-end/inspector.html
	M	WebCore/inspector/front-end/inspector.js
	M	WebCore/inspector/front-end/utilities.js
Committed r65245</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263891</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 11:28:42 -0700</bug_when>
    <thetext>If you wish to land manually, webkit-patch mark-bug-fixed will do all the bug updating logic for you. I tthink most people just use webkit-patch land these days though. Are there webkit-patch land issues you&apos;ve run into?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263918</commentid>
    <comment_count>10</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-12 12:51:22 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; If you wish to land manually, webkit-patch mark-bug-fixed will do all the bug updating logic for you. I tthink most people just use webkit-patch land these days though. Are there webkit-patch land issues you&apos;ve run into?

It is mostly speed. I am using git and &quot;git svn rebase&quot; + &quot;git svn dcommit&quot; just works faster for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263919</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-12 12:51:49 -0700</bug_when>
    <thetext>Landed as r65248</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64116</attachid>
            <date>2010-08-11 08:11:51 -0700</date>
            <delta_ts>2010-08-12 05:33:28 -0700</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>remote_object</filename>
            <type>text/plain</type>
            <size>48948</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NTY2MmNjLi40NGEwYjkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDgt
MTEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYnJ1c2gg
dXAgb2JqZWN0IHByb3hpZXMsIGludHJvZHVjZSByZW1vdGUgb2JqZWN0IG1vZGVsLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM4NDcKKworICAgICAg
ICAqIGluc3BlY3Rvci9jb25zb2xlLWRpci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL2NvbnNvbGUtZGlyLWdsb2JhbC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xl
LWRpci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9u
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWV4cGVj
dGVkLnR4dDoKKwogMjAxMC0wOC0xMCAgTWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jb25zb2xlLWRpci1leHBlY3RlZC50eHQKaW5kZXggNWU5MzEwNy4uNjczZmNj
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXItZXhwZWN0ZWQudHh0
CkBAIC0zLDI0ICszLDI0IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogW29iamVjdCBOb2Rl
TGlzdF0KIENPTlNPTEUgTUVTU0FHRTogbGluZSAxMTogW29iamVjdCBYUGF0aFJlc3VsdF0KIFRl
c3RzIHRoYXQgY29uc29sZSBsb2dnaW5nIGR1bXBzIHByb3BlciBtZXNzYWdlcy4KIAotQXJyYXkK
LT4+PiAwID0gInRlc3QxIgotPj4+IDEgPSAidGVzdDIiCi0+Pj4gbGVuZ3RoID0gMgotPj4+IF9f
cHJvdG9fXyA9IEFycmF5Ci1Ob2RlTGlzdAotPj4+IDAgPSBIVE1MSHRtbEVsZW1lbnQKLT4+PiBj
b25zdHJ1Y3RvciA9IE5vZGVMaXN0Q29uc3RydWN0b3IKLT4+PiBsZW5ndGggPSAxCi0+Pj4gX19w
cm90b19fID0gTm9kZUxpc3RQcm90b3R5cGUKK0FycmF5WzJdCisgICAgMCA9ICJ0ZXN0MSIKKyAg
ICAxID0gInRlc3QyIgorICAgIGxlbmd0aCA9IDIKKyAgICBfX3Byb3RvX18gPSBBcnJheVswXQor
Tm9kZUxpc3RbMV0KKyAgICAwID0gSFRNTEh0bWxFbGVtZW50CisgICAgY29uc3RydWN0b3IgPSBO
b2RlTGlzdENvbnN0cnVjdG9yCisgICAgbGVuZ3RoID0gMQorICAgIF9fcHJvdG9fXyA9IE5vZGVM
aXN0UHJvdG90eXBlCiBYUGF0aFJlc3VsdAotPj4+IGJvb2xlYW5WYWx1ZSA9IEVycm9yOiBUWVBF
X0VSUjogRE9NIFhQYXRoIEV4Y2VwdGlvbiA1MgotPj4+IGNvbnN0cnVjdG9yID0gWFBhdGhSZXN1
bHRDb25zdHJ1Y3RvcgotPj4+IGludmFsaWRJdGVyYXRvclN0YXRlID0gZmFsc2UKLT4+PiBudW1i
ZXJWYWx1ZSA9IEVycm9yOiBUWVBFX0VSUjogRE9NIFhQYXRoIEV4Y2VwdGlvbiA1MgotPj4+IHJl
c3VsdFR5cGUgPSA0Ci0+Pj4gc2luZ2xlTm9kZVZhbHVlID0gRXJyb3I6IFRZUEVfRVJSOiBET00g
WFBhdGggRXhjZXB0aW9uIDUyCi0+Pj4gc25hcHNob3RMZW5ndGggPSBFcnJvcjogVFlQRV9FUlI6
IERPTSBYUGF0aCBFeGNlcHRpb24gNTIKLT4+PiBzdHJpbmdWYWx1ZSA9IEVycm9yOiBUWVBFX0VS
UjogRE9NIFhQYXRoIEV4Y2VwdGlvbiA1MgotPj4+IF9fcHJvdG9fXyA9IFhQYXRoUmVzdWx0UHJv
dG90eXBlCisgICAgYm9vbGVhblZhbHVlID0gRXJyb3I6IFRZUEVfRVJSOiBET00gWFBhdGggRXhj
ZXB0aW9uIDUyCisgICAgY29uc3RydWN0b3IgPSBYUGF0aFJlc3VsdENvbnN0cnVjdG9yCisgICAg
aW52YWxpZEl0ZXJhdG9yU3RhdGUgPSBmYWxzZQorICAgIG51bWJlclZhbHVlID0gRXJyb3I6IFRZ
UEVfRVJSOiBET00gWFBhdGggRXhjZXB0aW9uIDUyCisgICAgcmVzdWx0VHlwZSA9IDQKKyAgICBz
aW5nbGVOb2RlVmFsdWUgPSBFcnJvcjogVFlQRV9FUlI6IERPTSBYUGF0aCBFeGNlcHRpb24gNTIK
KyAgICBzbmFwc2hvdExlbmd0aCA9IEVycm9yOiBUWVBFX0VSUjogRE9NIFhQYXRoIEV4Y2VwdGlv
biA1MgorICAgIHN0cmluZ1ZhbHVlID0gRXJyb3I6IFRZUEVfRVJSOiBET00gWFBhdGggRXhjZXB0
aW9uIDUyCisgICAgX19wcm90b19fID0gWFBhdGhSZXN1bHRQcm90b3R5cGUKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyLWdsb2JhbC5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyLWdsb2JhbC5odG1sCmluZGV4IGU3ZTQ0NzUuLjll
YTBlZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWRpci1nbG9i
YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXItZ2xvYmFsLmh0
bWwKQEAgLTI4LDggKzI4LDggQEAgZnVuY3Rpb24gZnJvbnRlbmRfZXhwYW5kQW5kRHVtcENvbnNv
bGVNZXNzYWdlcyh0ZXN0Q29udHJvbGxlcikKICAgICB7CiAgICAgICAgIGlmIChyZXN1bHQuaXNF
eGNlcHRpb24pCiAgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJFeGNlcHRp
b246IiArIHJlc3VsdC52YWx1ZSk7Ci0gICAgICAgIHZhciBvYmplY3RQcm94eSA9IHJlc3VsdC52
YWx1ZTsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0RGVmYXVsdCgpLmdldFByb3Bl
cnRpZXMob2JqZWN0UHJveHksIGZhbHNlLCB0cnVlLCBnZXRQcm9wZXJ0aWVzQ2FsbGJhY2spOwor
ICAgICAgICB2YXIgb2JqZWN0UHJveHkgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21Q
YXlsb2FkKHJlc3VsdC52YWx1ZSk7CisgICAgICAgIG9iamVjdFByb3h5LmdldFByb3BlcnRpZXMo
ZmFsc2UsIHRydWUsIGdldFByb3BlcnRpZXNDYWxsYmFjayk7CiAgICAgfQogCiAgICAgZnVuY3Rp
b24gZ2V0UHJvcGVydGllc0NhbGxiYWNrKHByb3BlcnRpZXMpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlLWRpci5odG1sCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggOGEw
Yjc3My4uNTNmN2RiZQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIuaHRtbApAQCAtMjAsNyAr
MjAsNyBAQCBmdW5jdGlvbiBleHBhbmRBbmREdW1wQ29uc29sZU1lc3NhZ2VzKG5vTm90aWZ5RG9u
ZSkgewogICAgICAgICAgICAgb3V0cHV0KHJlc3VsdFtpXS50aXRsZSk7CiAgICAgICAgICAgICB2
YXIgcHJvcGVydGllcyA9IHJlc3VsdFtpXS5wcm9wZXJ0aWVzOwogICAgICAgICAgICAgZm9yICh2
YXIgaiA9IDA7IHByb3BlcnRpZXMgJiYgaiA8IHByb3BlcnRpZXMubGVuZ3RoOyArK2opCi0gICAg
ICAgICAgICAgICAgb3V0cHV0KCI+Pj4gIiArIHByb3BlcnRpZXNbal0ubmFtZSArICIgPSAiICsg
cHJvcGVydGllc1tqXS52YWx1ZS5kZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgb3V0cHV0
KCIgICAgIiArIHByb3BlcnRpZXNbal0ubmFtZSArICIgPSAiICsgcHJvcGVydGllc1tqXS52YWx1
ZS5fZGVzY3JpcHRpb24pOwogICAgICAgICB9CiAgICAgICAgIGlmICghbm9Ob3RpZnlEb25lKQog
ICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy1leHBlY3RlZC50eHQKaW5kZXgg
ZTBjNDRlYi4uZWUyNDQ4OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0xNSw1ICsx
NSw1IEBAIFRlc3RzIHRoYXQgY29uc29sZSBuaWNlbHkgZm9ybWF0cyBIVE1MIENvbGxlY3Rpb25z
IGFuZCBOb2RlTGlzdHMuCiA8L3A+LCA8ZGl2IHN0eWxlPSJkaXNwbGF5Om5vbmUiPuKApjwvZGl2
PiwgPGZvcm0gaWQ9ImYiPuKApjwvZm9ybT4sIDxzZWxlY3QgaWQ9InNlbCIgbmFtZT0ic2VsIj7i
gKY8L3NlbGVjdD4sIDxvcHRpb24gdmFsdWU9IjEiPm9uZTwvb3B0aW9uPiwgPG9wdGlvbiB2YWx1
ZT0iMiI+dHdvPC9vcHRpb24+LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IngiIHZhbHVlPSJ4
MSI+LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IngiIHZhbHVlPSJ4MiI+LCA8ZGl2IGlkPSJv
dXRwdXQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlOyAiPjwvZGl2Pl0KIGNvbnNvbGUtZm9ybWF0
LWNvbGxlY3Rpb25zLmh0bWw6MzFbPHNlbGVjdCBpZD0ic2VsIiBuYW1lPSJzZWwiPuKApjwvc2Vs
ZWN0PiwgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDEiPiwgPGlucHV0IHR5
cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDIiPl0KIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rp
b25zLmh0bWw6MzVbPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDEiPiwgPGlu
cHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDIiPl0KLWNvbnNvbGUtZm9ybWF0LWNv
bGxlY3Rpb25zLmh0bWw6NDFbMSwgQXJyYXldCitjb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5o
dG1sOjQxWzEsIEFycmF5WzJdXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y29uc29sZS1mb3JtYXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUtZm9ybWF0LWV4cGVjdGVkLnR4dAppbmRleCAzZWMwM2ZiLi42ZTljMmI2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1leHBlY3RlZC50eHQKQEAgLTM5
LDcgKzM5LDcgQEAgY29uc29sZS1mb3JtYXQuaHRtbDoxM01lc3NhZ2UgZm9ybWF0IGZvciBzdHJp
bmcKIGNvbnNvbGUtZm9ybWF0Lmh0bWw6MTRPYmplY3QgT2JqZWN0CiBjb25zb2xlLWZvcm1hdC5o
dG1sOjIwWyJ0ZXN0IiwgInRlc3QyIiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICJ0ZXN0NCJdCiBj
b25zb2xlLWZvcm1hdC5odG1sOjIxWyJ0ZXN0IiwgInRlc3QyIiwgdW5kZWZpbmVkLCB1bmRlZmlu
ZWQsICJ0ZXN0NCJdCi1jb25zb2xlLWZvcm1hdC5odG1sOjIyQXJyYXkKK2NvbnNvbGUtZm9ybWF0
Lmh0bWw6MjJBcnJheVs1XQogY29uc29sZS1mb3JtYXQuaHRtbDo1Mi9edXJsXChccyooPzooPzoi
KD86W15cXFwiXXwoPzpcXFtcZGEtZl17MSw2fVxzP3xcLikpKiJ8Jyg/OlteXFxcJ118KD86XFxb
XGRhLWZdezEsNn1ccz98XC4pKSonKXwoPzpbISMkJSYqLX5cd118KD86XFxbXGRhLWZdezEsNn1c
cz98XC4pKSopXHMqXCkvaQogY29uc29sZS1mb3JtYXQuaHRtbDo1M1svXnVybFwoXHMqKD86KD86
Iig/OlteXFxcIl18KD86XFxbXGRhLWZdezEsNn1ccz98XC4pKSoifCcoPzpbXlxcXCddfCg/Olxc
W1xkYS1mXXsxLDZ9XHM/fFwuKSkqJyl8KD86WyEjJCUmKi1+XHddfCg/OlxcW1xkYS1mXXsxLDZ9
XHM/fFwuKSkqKVxzKlwpL2ldCiAiL151cmxcKFxzKig/Oig/OiIoPzpbXlxcXCJdfCg/OlxcW1xk
YS1mXXsxLDZ9XHM/fFwuKSkqInwnKD86W15cXFwnXXwoPzpcXFtcZGEtZl17MSw2fVxzP3xcLikp
KicpfCg/OlshIyQlJiotflx3XXwoPzpcXFtcZGEtZl17MSw2fVxzP3xcLikpKilccypcKS9pIgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5
NjQxNTE3Li4zYmI5ZWExIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEwLTA4LTExICBQYXZlbCBGZWxkbWFu
ICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGJydXNoIHVwIG9iamVjdCBwcm94aWVz
LCBpbnRyb2R1Y2UgcmVtb3RlIG9iamVjdCBtb2RlbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzODQ3CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b25zb2xlVmlldy5wcm90b3R5cGUuZG9FdmFsSW5XaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fZm9ybWF0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2Zvcm1hdG5vZGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fZm9ybWF0YXJyYXkpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fZm9ybWF0QXNBcnJheUVudHJ5KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUuX2Zvcm1hdCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9k
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl9j
cmVhdGVUb29sdGlwRm9yTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVu
dExpc3RlbmVyc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
SW5qZWN0ZWRTY3JpcHQuanM6CisgICAgICAgIChpbmplY3RlZFNjcmlwdENvbnN0cnVjdG9yKToK
KyAgICAgICAgKGluamVjdGVkU2NyaXB0Q29uc3RydWN0b3IuKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL09iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk9iamVjdFByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS51cGRhdGVQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0eVRyZWVFbGVt
ZW50LnByb3RvdHlwZS5vbnBvcHVsYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RQ
cm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk9iamVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLmFwcGx5RXhwcmVzc2lvbik6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQcm94eS5qczogUmVtb3ZlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTaWRlYmFyUGFuZS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2lkZWJhclBhbmUucHJvdG90eXBlLnVw
ZGF0ZS5jYWxsYmFjayk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZW1vdGVPYmpl
Y3QuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdElkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdC5mcm9tRXJyb3JNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZW1vdGVPYmplY3QuZnJvbU5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dC5mcm9tUGF5bG9hZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnR5cGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUuZ2V0IG9iamVj
dElkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlLmdldCB0
eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlLmdldCBk
ZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlw
ZS5nZXQgaGFzQ2hpbGRyZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5w
cm90b3R5cGUuZ2V0UHJvcGVydHlWYWx1ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdC5wcm90b3R5cGUuZ2V0T3duUHJvcGVydGllcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5nZXRQcm9wZXJ0aWVzLnJlbW90ZU9iamVjdEJpbmRl
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0UHJvcGVydHkpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NvcGVDaGFpblNpZGViYXJQYW5lLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5TaWRlYmFyUGFuZS5wcm90b3R5cGUudXBkYXRlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLmRvRXZhbEluQ2FsbEZyYW1lKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFu
ZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbi5wcm90
b3R5cGUudXBkYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5sb2cubG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9nKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qczoKKwogMjAxMC0wOC0xMCAgSGF5YXRv
IEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBU
YW11cmEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDEwOGYxNjUuLjIwMzg3NmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00MTEzLDcgKzQxMTMsNiBAQAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0LmpzJywKLSAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdFByb3h5LmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL09iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1BhbmVsRW5hYmxlclZpZXcuanMnLApAQCAtNDEyNCw2ICs0MTIzLDcgQEAKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTZWN0aW9uLmpzJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTaWRlYmFyUGFuZS5qcycsCisgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9SZW1vdGVPYmplY3QuanMnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2UuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VDYXRlZ29yeS5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcycsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCAxNTVhODE2Li4xNjgxZGFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTUxMjY4LDEwICs1MTI2OCw2IEBACiAJCQkJCT4NCiAJCQkJPC9G
aWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQt
ZW5kXE9iamVjdFByb3h5LmpzIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUGFuZWwuanMiDQogCQkJ
CQk+DQogCQkJCTwvRmlsZT4NCkBAIC01MTMxMiw2ICs1MTMwOCwxMCBAQAogCQkJCQk+DQogCQkJ
CTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxSZW1vdGVPYmplY3QuanMiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZp
bGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxSZXNvdXJjZS5q
cyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b25zb2xlVmlldy5qcwppbmRleCA2YTRlMGQzLi5jNmQ2NDMzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC01MTEsNyArNTExLDcgQEAgV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmdW5jdGlvbiBldmFsQ2Fs
bGJhY2socmVzdWx0KQogICAgICAgICB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQudmFs
dWUsIHJlc3VsdC5pc0V4Y2VwdGlvbik7CisgICAgICAgICAgICBjYWxsYmFjayhXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHJlc3VsdC52YWx1ZSksIHJlc3VsdC5pc0V4Y2Vw
dGlvbik7CiAgICAgICAgIH07CiAgICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldERlZmF1
bHQoKS5ldmFsdWF0ZShleHByZXNzaW9uLCBvYmplY3RHcm91cCwgZXZhbENhbGxiYWNrKTsKICAg
ICB9LApAQCAtNTUwLDcgKzU1MCw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgX2Zvcm1hdDogZnVuY3Rpb24ob3V0cHV0LCBmb3JjZU9iamVjdEZvcm1hdCkK
ICAgICB7CiAgICAgICAgIHZhciBpc1Byb3h5ID0gKG91dHB1dCAhPSBudWxsICYmIHR5cGVvZiBv
dXRwdXQgPT09ICJvYmplY3QiKTsKLSAgICAgICAgdmFyIHR5cGUgPSAoZm9yY2VPYmplY3RGb3Jt
YXQgPyAib2JqZWN0IiA6IE9iamVjdC5wcm94eVR5cGUob3V0cHV0KSk7CisgICAgICAgIHZhciB0
eXBlID0gKGZvcmNlT2JqZWN0Rm9ybWF0ID8gIm9iamVjdCIgOiBXZWJJbnNwZWN0b3IuUmVtb3Rl
T2JqZWN0LnR5cGUob3V0cHV0KSk7CiAKICAgICAgICAgdmFyIGZvcm1hdHRlciA9IHRoaXMuX2N1
c3RvbUZvcm1hdHRlcnNbdHlwZV07CiAgICAgICAgIGlmICghZm9ybWF0dGVyIHx8ICFpc1Byb3h5
KSB7CkBAIC01ODksMTIgKzU4OSwxMiBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90
eXBlID0gewogICAgICAgICAgICAgZWxlbS5hcHBlbmRDaGlsZCh0cmVlT3V0bGluZS5lbGVtZW50
KTsKICAgICAgICAgfQogCi0gICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldChvYmplY3Qu
aW5qZWN0ZWRTY3JpcHRJZCkucHVzaE5vZGVUb0Zyb250ZW5kKG9iamVjdCwgcHJpbnROb2RlKTsK
KyAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0RGVmYXVsdCgpLnB1c2hOb2RlVG9Gcm9u
dGVuZChvYmplY3Qub2JqZWN0SWQsIHByaW50Tm9kZSk7CiAgICAgfSwKIAogICAgIF9mb3JtYXRh
cnJheTogZnVuY3Rpb24oYXJyLCBlbGVtKQogICAgIHsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHRB
Y2Nlc3MuZ2V0KGFyci5pbmplY3RlZFNjcmlwdElkKS5nZXRQcm9wZXJ0aWVzKGFyciwgZmFsc2Us
IGZhbHNlLCB0aGlzLl9wcmludEFycmF5LmJpbmQodGhpcywgZWxlbSkpOworICAgICAgICBhcnIu
Z2V0T3duUHJvcGVydGllcyhmYWxzZSwgdGhpcy5fcHJpbnRBcnJheS5iaW5kKHRoaXMsIGVsZW0p
KTsKICAgICB9LAogCiAgICAgX2Zvcm1hdHN0cmluZzogZnVuY3Rpb24ob3V0cHV0LCBlbGVtKQpA
QCAtNjM3LDkgKzYzNyw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7
CiAKICAgICBfZm9ybWF0QXNBcnJheUVudHJ5OiBmdW5jdGlvbihvdXRwdXQpCiAgICAgewotICAg
ICAgICB2YXIgdHlwZSA9IE9iamVjdC5wcm94eVR5cGUob3V0cHV0KTsKICAgICAgICAgLy8gUHJl
dmVudCBpbmZpbml0ZSBleHBhbnNpb24gb2YgY3Jvc3MtcmVmZXJlbmNpbmcgYXJyYXlzLgotICAg
ICAgICByZXR1cm4gdGhpcy5fZm9ybWF0KG91dHB1dCwgdHlwZSA9PT0gImFycmF5Iik7CisgICAg
ICAgIHJldHVybiB0aGlzLl9mb3JtYXQob3V0cHV0LCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
LnR5cGUob3V0cHV0KSA9PT0gImFycmF5Iik7CiAgICAgfQogfQogCkBAIC03MjgsMTIgKzcyNywx
NSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlID0gewogCiAgICAgICAg
IC8vIEZvcm1hdHRpbmcgY29kZSBiZWxvdyBhc3N1bWVzIHRoYXQgcGFyYW1ldGVycyBhcmUgYWxs
IHdyYXBwZXJzIHdoZXJlYXMgZnJvbnRlbmQgY29uc29sZQogICAgICAgICAvLyBBUEkgYWxsb3dz
IHBhc3NpbmcgYXJiaXRyYXJ5IHZhbHVlcyBhcyBtZXNzYWdlcyAoc3RyaW5ncywgbnVtYmVycywg
ZXRjLikuIFdyYXAgdGhlbSBoZXJlLgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFt
ZXRlcnMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBpZiAodHlwZW9mIHBhcmFtZXRlcnNbaV0g
IT09ICJvYmplY3QiICYmIHR5cGVvZiBwYXJhbWV0ZXJzW2ldICE9PSAiZnVuY3Rpb24iKQotICAg
ICAgICAgICAgICAgIHBhcmFtZXRlcnNbaV0gPSBXZWJJbnNwZWN0b3IuT2JqZWN0UHJveHkud3Jh
cFByaW1pdGl2ZVZhbHVlKHBhcmFtZXRlcnNbaV0pOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHBhcmFtZXRlcnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgcGFy
YW1ldGVyc1tpXSA9PT0gIm9iamVjdCIpCisgICAgICAgICAgICAgICAgcGFyYW1ldGVyc1tpXSA9
IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocGFyYW1ldGVyc1tpXSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFyYW1ldGVyc1tpXSA9IFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QuZnJvbVByaW1pdGl2ZVZhbHVlKHBhcmFtZXRlcnNbaV0pOworICAg
ICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUgY2FuIGJlIHN0cmluZyBsb2cgYW5kIHN0cmluZyBl
dmFsIHJlc3VsdC4gV2UgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGVtIGJhc2VkIG9uIG1lc3NhZ2Ug
dHlwZS4KLSAgICAgICAgdmFyIHNob3VsZEZvcm1hdE1lc3NhZ2UgPSBPYmplY3QucHJveHlUeXBl
KHBhcmFtZXRlcnNbMF0pID09PSAic3RyaW5nIiAmJiB0aGlzLnR5cGUgIT09IFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1bHQ7CisgICAgICAgIHZhciBzaG91bGRG
b3JtYXRNZXNzYWdlID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC50eXBlKHBhcmFtZXRlcnNb
MF0pID09PSAic3RyaW5nIiAmJiB0aGlzLnR5cGUgIT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlVHlwZS5SZXN1bHQ7CiAKICAgICAgICAgLy8gTXVsdGlwbGUgcGFyYW1ldGVy
cyB3aXRoIHRoZSBmaXJzdCBiZWluZyBhIGZvcm1hdCBzdHJpbmcuIFNhdmUgdW51c2VkIHN1YnN0
aXR1dGlvbnMuCiAgICAgICAgIGlmIChzaG91bGRGb3JtYXRNZXNzYWdlKSB7CkBAIC0xMDU0LDgg
KzEwNTYsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQgPSBmdW5jdGlvbihy
ZXN1bHQsIGV4Y2VwdGlvbiwgb3JpZ2luYXRpbmdDb21tYQogICAgIHZhciBtZXNzYWdlID0gcmVz
dWx0OwogICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgLy8gRGlzdGluZ3Vpc2ggYmV0d2Vl
biBzdHJpbmdzIGFuZCBlcnJvcnMgKG5vIG5lZWQgdG8gcXVvdGUgbGF0dGVyKS4KLSAgICAgICAg
bWVzc2FnZSA9IFdlYkluc3BlY3Rvci5PYmplY3RQcm94eS53cmFwUHJpbWl0aXZlVmFsdWUocmVz
dWx0KTsKLSAgICAgICAgbWVzc2FnZS50eXBlID0gImVycm9yIjsKKyAgICAgICAgbWVzc2FnZSA9
IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbUVycm9yTWVzc2FnZShyZXN1bHQpOwogICAg
IH0KICAgICB2YXIgbGluZSA9IChleGNlcHRpb24gPyByZXN1bHQubGluZSA6IC0xKTsKICAgICB2
YXIgdXJsID0gKGV4Y2VwdGlvbiA/IHJlc3VsdC5zb3VyY2VVUkwgOiBudWxsKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwppbmRleCBjNDFkMDM4Li41NzQyMmY2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCkBAIC0zMywxMCArMzMsNiBAQCBX
ZWJJbnNwZWN0b3IuRE9NTm9kZSA9IGZ1bmN0aW9uKGRvYywgcGF5bG9hZCkgewogICAgIHRoaXMu
b3duZXJEb2N1bWVudCA9IGRvYzsKIAogICAgIHRoaXMuaWQgPSBwYXlsb2FkLmlkOwotICAgIC8v
IGluamVjdGVkU2NyaXB0SWQgaXMgYSBub2RlIGlzIGZvciBET00gbm9kZXMgd2hpY2ggc2hvdWxk
IGJlIGNvbnZlcnRlZAotICAgIC8vIHRvIGNvcnJlc3BvbmRpbmcgSW5qZWN0ZWRTY3JpcHQgYnkg
dGhlIGluc3BlY3RvciBiYWNrZW5kLiBXZSBpbmRpY2F0ZQotICAgIC8vIHRoaXMgYnkgbWFraW5n
IGluamVjdGVkU2NyaXB0SWQgbmVnYXRpdmUuCi0gICAgdGhpcy5pbmplY3RlZFNjcmlwdElkID0g
LXBheWxvYWQuaWQ7CiAgICAgdGhpcy5ub2RlVHlwZSA9IHBheWxvYWQubm9kZVR5cGU7CiAgICAg
dGhpcy5ub2RlTmFtZSA9IHBheWxvYWQubm9kZU5hbWU7CiAgICAgdGhpcy5sb2NhbE5hbWUgPSBw
YXlsb2FkLmxvY2FsTmFtZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzVHJlZU91dGxpbmUuanMKaW5kZXggODdkODVjMS4uODU1OWY3NiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTQx
Myw4ICs0MTMsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCIlZCDDlyAlZCBwaXhlbHMgKE5hdHVyYWw6ICVkIMOXICVkIHBp
eGVscykiLCBwcm9wZXJ0aWVzLm9mZnNldFdpZHRoLCBwcm9wZXJ0aWVzLm9mZnNldEhlaWdodCwg
cHJvcGVydGllcy5uYXR1cmFsV2lkdGgsIHByb3BlcnRpZXMubmF0dXJhbEhlaWdodCk7CiAgICAg
ICAgIH0KLSAgICAgICAgdmFyIG9iamVjdFByb3h5ID0gbmV3IFdlYkluc3BlY3Rvci5PYmplY3RQ
cm94eShub2RlLmluamVjdGVkU2NyaXB0SWQsIG5vZGUuaWQpOwotICAgICAgICBXZWJJbnNwZWN0
b3IuT2JqZWN0UHJveHkuZ2V0UHJvcGVydGllc0FzeW5jKG9iamVjdFByb3h5LCBbIm5hdHVyYWxI
ZWlnaHQiLCAibmF0dXJhbFdpZHRoIiwgIm9mZnNldEhlaWdodCIsICJvZmZzZXRXaWR0aCJdLCBz
ZXRUb29sdGlwLmJpbmQodGhpcykpOworICAgICAgICBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
LmZyb21Ob2RlKG5vZGUpLmdldFByb3BlcnR5VmFsdWVzKFsibmF0dXJhbEhlaWdodCIsICJuYXR1
cmFsV2lkdGgiLCAib2Zmc2V0SGVpZ2h0IiwgIm9mZnNldFdpZHRoIl0sIHNldFRvb2x0aXAuYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIHVwZGF0ZVNlbGVjdGlvbjogZnVuY3Rpb24oKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJh
clBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRl
YmFyUGFuZS5qcwppbmRleCA2Nzk4ODQ1Li4xOTNjMDYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qcworKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qcwpAQCAt
MTk0LDEwICsxOTQsMTAgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCYXIucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgLy8gSnVzdCBidWlsZCBwcm9wZXJ0aWVzIGluIHBsYWNlIC0gbm8g
bmVlZCB0byByZWFjaCBvdXQgZm9yIGluamVjdGVkIHNjcmlwdC4KICAgICAgICAgICAgIHZhciB2
YWx1ZSA9IHRoaXMuZXZlbnRMaXN0ZW5lcltwcm9wZXJ0eU5hbWVdOwogICAgICAgICAgICAgaWYg
KHZhbHVlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTU5vZGUpCi0gICAgICAgICAgICAgICAg
dmFsdWUgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFByb3h5KHZhbHVlLmluamVjdGVkU2NyaXB0
SWQsIHZhbHVlLmlkLCBbXSwgYXBwcm9wcmlhdGVTZWxlY3RvckZvck5vZGUodmFsdWUpLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IFdlYkluc3BlY3Rvci5SZW1vdmVPYmplY3QuZnJv
bU5vZGUodmFsdWUuaWQpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHZhbHVl
ID0gV2ViSW5zcGVjdG9yLk9iamVjdFByb3h5LndyYXBQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7Ci0g
ICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0
eVByb3h5KHByb3BlcnR5TmFtZSwgdmFsdWUpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IFdl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKKyAgICAg
ICAgICAgIHByb3BlcnRpZXMucHVzaChuZXcgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3Bl
cnR5KHByb3BlcnR5TmFtZSwgdmFsdWUpKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLnVwZGF0
ZVByb3BlcnRpZXMocHJvcGVydGllcyk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9JbmplY3RlZFNjcmlwdC5qcwppbmRleCBiOGJmOWYyLi41ZjQ1YTI5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzCkBAIC01MCwyMSAr
NTAsMjEgQEAgSW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdCwgb2Jq
ZWN0R3JvdXBOYW1lKQogICAgICAgICB2YXIgb2JqZWN0SWQ7CiAgICAgICAgIGlmICh0eXBlb2Yg
b2JqZWN0ID09PSAib2JqZWN0IiB8fCB0eXBlb2Ygb2JqZWN0ID09PSAiZnVuY3Rpb24iIHx8IElu
amVjdGVkU2NyaXB0Ll9pc0hUTUxBbGxDb2xsZWN0aW9uKG9iamVjdCkpIHsKICAgICAgICAgICAg
IHZhciBpZCA9IEluamVjdGVkU2NyaXB0Lmxhc3RCb3VuZE9iamVjdElkKys7Ci0gICAgICAgICAg
ICBvYmplY3RJZCA9ICJvYmplY3QjIiArIGlkOwotICAgICAgICAgICAgSW5qZWN0ZWRTY3JpcHQu
aWRUb1dyYXBwZWRPYmplY3Rbb2JqZWN0SWRdID0gb2JqZWN0OworICAgICAgICAgICAgb2JqZWN0
SWQgPSBpZDsKKyAgICAgICAgICAgIEluamVjdGVkU2NyaXB0LmlkVG9XcmFwcGVkT2JqZWN0W2lk
XSA9IG9iamVjdDsKIAogICAgICAgICAgICAgdmFyIGdyb3VwID0gSW5qZWN0ZWRTY3JpcHQub2Jq
ZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV07CiAgICAgICAgICAgICBpZiAoIWdyb3VwKSB7CiAg
ICAgICAgICAgICAgICAgZ3JvdXAgPSBbXTsKICAgICAgICAgICAgICAgICBJbmplY3RlZFNjcmlw
dC5vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXSA9IGdyb3VwOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZ3JvdXAucHVzaChvYmplY3RJZCk7CisgICAgICAgICAgICBncm91cC5wdXNo
KGlkKTsKKyAgICAgICAgICAgIG9iamVjdElkID0gbmV3IEluamVjdGVkU2NyaXB0LlJlbW90ZU9i
amVjdElkKCJqc29iamVjdCIsIGlkKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHQuY3JlYXRlUHJveHlPYmplY3Qob2JqZWN0LCBvYmplY3RJZCk7CisgICAgICAgIHJl
dHVybiBJbmplY3RlZFNjcmlwdC5jcmVhdGVSZW1vdGVPYmplY3Qob2JqZWN0LCBvYmplY3RJZCk7
CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuY3JlYXRl
UHJveHlPYmplY3QoIlsgRXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpICsgIiBdIik7CisgICAg
ICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5jcmVhdGVSZW1vdGVPYmplY3QoIlsgRXhjZXB0aW9u
OiAiICsgZS50b1N0cmluZygpICsgIiBdIik7CiAgICAgfQotICAgIHJldHVybiBJbmplY3RlZFNj
cmlwdC5jcmVhdGVQcm94eU9iamVjdChvYmplY3QsIG9iamVjdElkKTsKIH07CiAKIEluamVjdGVk
U2NyaXB0LnVud3JhcE9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdElkKSB7CkBAIC0xMTAsOSArMTEw
LDkgQEAgSW5qZWN0ZWRTY3JpcHQuZ2V0UHJvdG90eXBlcyA9IGZ1bmN0aW9uKG5vZGVJZCkKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1JbmplY3RlZFNjcmlwdC5nZXRQcm9wZXJ0aWVzID0gZnVu
Y3Rpb24ob2JqZWN0UHJveHksIGlnbm9yZUhhc093blByb3BlcnR5LCBhYmJyZXZpYXRlKQorSW5q
ZWN0ZWRTY3JpcHQuZ2V0UHJvcGVydGllcyA9IGZ1bmN0aW9uKG9iamVjdElkLCBpZ25vcmVIYXNP
d25Qcm9wZXJ0eSwgYWJicmV2aWF0ZSkKIHsKLSAgICB2YXIgb2JqZWN0ID0gSW5qZWN0ZWRTY3Jp
cHQuX3Jlc29sdmVPYmplY3Qob2JqZWN0UHJveHkpOworICAgIHZhciBvYmplY3QgPSBJbmplY3Rl
ZFNjcmlwdC5fb2JqZWN0Rm9ySWQob2JqZWN0SWQpOwogICAgIGlmICghSW5qZWN0ZWRTY3JpcHQu
X2lzRGVmaW5lZChvYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgdmFyIHByb3Bl
cnRpZXMgPSBbXTsKQEAgLTEyNywyMiArMTI3LDIyIEBAIEluamVjdGVkU2NyaXB0LmdldFByb3Bl
cnRpZXMgPSBmdW5jdGlvbihvYmplY3RQcm94eSwgaWdub3JlSGFzT3duUHJvcGVydHksIGFiYnJl
CiAKICAgICAgICAgdmFyIHByb3BlcnR5ID0ge307CiAgICAgICAgIHByb3BlcnR5Lm5hbWUgPSBw
cm9wZXJ0eU5hbWUgKyAiIjsKLSAgICAgICAgcHJvcGVydHkucGFyZW50T2JqZWN0UHJveHkgPSBv
YmplY3RQcm94eTsKICAgICAgICAgdmFyIGlzR2V0dGVyID0gb2JqZWN0WyJfX2xvb2t1cEdldHRl
cl9fIl0gJiYgb2JqZWN0Ll9fbG9va3VwR2V0dGVyX18ocHJvcGVydHlOYW1lKTsKICAgICAgICAg
aWYgKCFpc0dldHRlcikgewogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICB2YXIg
Y2hpbGRPYmplY3QgPSBvYmplY3RbcHJvcGVydHlOYW1lXTsKLSAgICAgICAgICAgICAgICB2YXIg
Y2hpbGRPYmplY3RQcm94eSA9IG5ldyBJbmplY3RlZFNjcmlwdC5jcmVhdGVQcm94eU9iamVjdChj
aGlsZE9iamVjdCwgb2JqZWN0UHJveHkub2JqZWN0SWQsIGFiYnJldmlhdGUpOwotICAgICAgICAg
ICAgICAgIGNoaWxkT2JqZWN0UHJveHkucGF0aCA9IG9iamVjdFByb3h5LnBhdGggPyBvYmplY3RQ
cm94eS5wYXRoLnNsaWNlKCkgOiBbXTsKLSAgICAgICAgICAgICAgICBjaGlsZE9iamVjdFByb3h5
LnBhdGgucHVzaChwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgIHZhciBwYXRoID0gb2Jq
ZWN0SWQucGF0aCA/IG9iamVjdElkLnBhdGguc2xpY2UoKSA6IFtdOworICAgICAgICAgICAgICAg
IHBhdGgucHVzaChwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgIHZhciBjaGlsZE9iamVj
dElkID0gbmV3IEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdElkKG9iamVjdElkLnR5cGUsIG9i
amVjdElkLnZhbHVlLCBwYXRoKTsKKyAgICAgICAgICAgICAgICB2YXIgY2hpbGRPYmplY3RQcm94
eSA9IG5ldyBJbmplY3RlZFNjcmlwdC5jcmVhdGVSZW1vdGVPYmplY3QoY2hpbGRPYmplY3QsIGNo
aWxkT2JqZWN0SWQsIGFiYnJldmlhdGUpOwogICAgICAgICAgICAgICAgIHByb3BlcnR5LnZhbHVl
ID0gY2hpbGRPYmplY3RQcm94eTsKICAgICAgICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAg
ICAgICAgIHByb3BlcnR5LnZhbHVlID0geyBkZXNjcmlwdGlvbjogZS50b1N0cmluZygpIH07Cisg
ICAgICAgICAgICAgICAgcHJvcGVydHkudmFsdWUgPSBuZXcgSW5qZWN0ZWRTY3JpcHQuY3JlYXRl
UmVtb3RlT2JqZWN0KGUudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgcHJvcGVydHkuaXNF
cnJvciA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogdGhpcyBzaG91bGQgc2hvdyBzb21ldGhpbmcgbGlrZSAiZ2V0dGVyIiAoYnVn
IDE2NzM0KS4KLSAgICAgICAgICAgIHByb3BlcnR5LnZhbHVlID0geyBkZXNjcmlwdGlvbjogIlx1
MjAxNCIgfTsgLy8gZW0gZGFzaAorICAgICAgICAgICAgcHJvcGVydHkudmFsdWUgPSBuZXcgSW5q
ZWN0ZWRTY3JpcHQuY3JlYXRlUmVtb3RlT2JqZWN0KCJcdTIwMTQiKTsgLy8gZW0gZGFzaAogICAg
ICAgICAgICAgcHJvcGVydHkuaXNHZXR0ZXIgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHBy
b3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7CkBAIC0xNTAsOSArMTUwLDkgQEAgSW5qZWN0ZWRTY3Jp
cHQuZ2V0UHJvcGVydGllcyA9IGZ1bmN0aW9uKG9iamVjdFByb3h5LCBpZ25vcmVIYXNPd25Qcm9w
ZXJ0eSwgYWJicmUKICAgICByZXR1cm4gcHJvcGVydGllczsKIH0KIAotSW5qZWN0ZWRTY3JpcHQu
c2V0UHJvcGVydHlWYWx1ZSA9IGZ1bmN0aW9uKG9iamVjdFByb3h5LCBwcm9wZXJ0eU5hbWUsIGV4
cHJlc3Npb24pCitJbmplY3RlZFNjcmlwdC5zZXRQcm9wZXJ0eVZhbHVlID0gZnVuY3Rpb24ob2Jq
ZWN0SWQsIHByb3BlcnR5TmFtZSwgZXhwcmVzc2lvbikKIHsKLSAgICB2YXIgb2JqZWN0ID0gSW5q
ZWN0ZWRTY3JpcHQuX3Jlc29sdmVPYmplY3Qob2JqZWN0UHJveHkpOworICAgIHZhciBvYmplY3Qg
PSBJbmplY3RlZFNjcmlwdC5fb2JqZWN0Rm9ySWQob2JqZWN0SWQpOwogICAgIGlmICghSW5qZWN0
ZWRTY3JpcHQuX2lzRGVmaW5lZChvYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTM0MiwxOCArMzQyLDYgQEAgSW5qZWN0ZWRTY3JpcHQuX2NhbGxGcmFtZUZvcklkID0gZnVuY3Rp
b24oaWQpCiAgICAgcmV0dXJuIGNhbGxGcmFtZTsKIH0KIAotSW5qZWN0ZWRTY3JpcHQuX3Jlc29s
dmVPYmplY3QgPSBmdW5jdGlvbihvYmplY3RQcm94eSkKLXsKLSAgICB2YXIgb2JqZWN0ID0gSW5q
ZWN0ZWRTY3JpcHQuX29iamVjdEZvcklkKG9iamVjdFByb3h5Lm9iamVjdElkKTsKLSAgICB2YXIg
cGF0aCA9IG9iamVjdFByb3h5LnBhdGg7Ci0KLSAgICAvLyBGb2xsb3cgdGhlIHByb3BlcnR5IHBh
dGguCi0gICAgZm9yICh2YXIgaSA9IDA7IEluamVjdGVkU2NyaXB0Ll9pc0RlZmluZWQob2JqZWN0
KSAmJiBwYXRoICYmIGkgPCBwYXRoLmxlbmd0aDsgKytpKQotICAgICAgICBvYmplY3QgPSBvYmpl
Y3RbcGF0aFtpXV07Ci0KLSAgICByZXR1cm4gb2JqZWN0OwotfQotCiBJbmplY3RlZFNjcmlwdC5f
bm9kZUZvcklkID0gZnVuY3Rpb24obm9kZUlkKQogewogICAgIGlmICghbm9kZUlkKQpAQCAtMzY3
LDQ3ICszNTUsNjIgQEAgSW5qZWN0ZWRTY3JpcHQuX29iamVjdEZvcklkID0gZnVuY3Rpb24ob2Jq
ZWN0SWQpCiAgICAgLy8gLSBudW1iZXJzIHBvaW50IHRvIERPTSBOb2RlIHZpYSB0aGUgSW5zcGVj
dG9yRE9NQWdlbnQgbWFwcGluZwogICAgIC8vIC0gc3RyaW5ncyBwb2ludCB0byBjb25zb2xlIG9i
amVjdHMgY2FjaGVkIGluIEluc3BlY3RvckNvbnRyb2xsZXIgZm9yIGxhenkgZXZhbHVhdGlvbiB1
cG9uIHRoZW0KICAgICAvLyAtIG9iamVjdHMgY29udGFpbiBjb21wbGV4IGlkcyBhbmQgYXJlIGN1
cnJlbnRseSB1c2VkIGZvciBzY29wZWQgb2JqZWN0cwotICAgIGlmICh0eXBlb2Ygb2JqZWN0SWQg
PT09ICJudW1iZXIiKQotICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuX25vZGVGb3JJZChv
YmplY3RJZCk7Ci0gICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdElkID09PSAic3RyaW5nIikKLSAg
ICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LnVud3JhcE9iamVjdChvYmplY3RJZCk7Ci0gICAg
ZWxzZSBpZiAodHlwZW9mIG9iamVjdElkID09PSAib2JqZWN0IikgewotICAgICAgICB2YXIgY2Fs
bEZyYW1lID0gSW5qZWN0ZWRTY3JpcHQuX2NhbGxGcmFtZUZvcklkKG9iamVjdElkLmNhbGxGcmFt
ZSk7CisgICAgdmFyIG9iamVjdDsKKyAgICBpZiAob2JqZWN0SWQudHlwZSA9PT0gIm5vZGUiKQor
ICAgICAgICBvYmplY3QgPSBJbmplY3RlZFNjcmlwdC5fbm9kZUZvcklkKG9iamVjdElkLnZhbHVl
KTsKKyAgICBlbHNlIGlmIChvYmplY3RJZC50eXBlID09PSAianNvYmplY3QiKQorICAgICAgICBv
YmplY3QgPSBJbmplY3RlZFNjcmlwdC51bndyYXBPYmplY3Qob2JqZWN0SWQudmFsdWUpOworICAg
IGVsc2UgaWYgKG9iamVjdElkLnR5cGUgPT09ICJzY29wZU9iamVjdCIpIHsKKyAgICAgICAgdmFy
IGNhbGxGcmFtZSA9IEluamVjdGVkU2NyaXB0Ll9jYWxsRnJhbWVGb3JJZChvYmplY3RJZC52YWx1
ZS5jYWxsRnJhbWUpOwogICAgICAgICBpZiAob2JqZWN0SWQudGhpc09iamVjdCkKLSAgICAgICAg
ICAgIHJldHVybiBjYWxsRnJhbWUudGhpc09iamVjdDsKKyAgICAgICAgICAgIG9iamVjdCA9IGNh
bGxGcmFtZS50aGlzT2JqZWN0OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gY2Fs
bEZyYW1lLnNjb3BlQ2hhaW5bb2JqZWN0SWQuY2hhaW5JbmRleF07Ci0gICAgfQotICAgIHJldHVy
biBvYmplY3RJZDsKKyAgICAgICAgICAgIG9iamVjdCA9IGNhbGxGcmFtZS5zY29wZUNoYWluW29i
amVjdElkLnZhbHVlLmNoYWluSW5kZXhdOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gb2Jq
ZWN0SWQ7CisKKyAgICB2YXIgcGF0aCA9IG9iamVjdElkLnBhdGg7CisKKyAgICAvLyBGb2xsb3cg
dGhlIHByb3BlcnR5IHBhdGguCisgICAgZm9yICh2YXIgaSA9IDA7IEluamVjdGVkU2NyaXB0Ll9p
c0RlZmluZWQob2JqZWN0KSAmJiBwYXRoICYmIGkgPCBwYXRoLmxlbmd0aDsgKytpKQorICAgICAg
ICBvYmplY3QgPSBvYmplY3RbcGF0aFtpXV07CisKKyAgICByZXR1cm4gb2JqZWN0OwogfQogCi1J
bmplY3RlZFNjcmlwdC5wdXNoTm9kZVRvRnJvbnRlbmQgPSBmdW5jdGlvbihvYmplY3RQcm94eSkK
K0luamVjdGVkU2NyaXB0LnB1c2hOb2RlVG9Gcm9udGVuZCA9IGZ1bmN0aW9uKG9iamVjdElkKQog
ewotICAgIHZhciBvYmplY3QgPSBJbmplY3RlZFNjcmlwdC5fcmVzb2x2ZU9iamVjdChvYmplY3RQ
cm94eSk7CisgICAgdmFyIG9iamVjdCA9IEluamVjdGVkU2NyaXB0Ll9vYmplY3RGb3JJZChvYmpl
Y3RJZCk7CiAgICAgaWYgKCFvYmplY3QgfHwgSW5qZWN0ZWRTY3JpcHQuX3R5cGUob2JqZWN0KSAh
PT0gIm5vZGUiKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEluamVjdGVkU2Ny
aXB0SG9zdC5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG9iamVjdCwgZmFsc2UsIGZhbHNlKTsKIH0K
IAotLy8gQ2FsbGVkIGZyb20gd2l0aGluIEluc3BlY3RvckNvbnRyb2xsZXIgb24gdGhlICdpbnNw
ZWN0ZWQgcGFnZScgc2lkZS4KLUluamVjdGVkU2NyaXB0LmNyZWF0ZVByb3h5T2JqZWN0ID0gZnVu
Y3Rpb24ob2JqZWN0LCBvYmplY3RJZCwgYWJicmV2aWF0ZSkKKy8vIEZJWE1FOiBSZW1vdGVPYmpl
Y3RJZCBhbmQgUmVtb3RlT2JqZWN0IHN0cnVjdHMgbXVzdCBtYXRjaCB0aGUgV2ViSW5zcGVjdG9y
Liogb25lcy4gU2hvdWxkIHJldXNlIHNhbWUgZmlsZSBpbnN0ZWFkLgorSW5qZWN0ZWRTY3JpcHQu
UmVtb3RlT2JqZWN0SWQgPSBmdW5jdGlvbih0eXBlLCB2YWx1ZSwgcGF0aCkKIHsKLSAgICB2YXIg
cmVzdWx0ID0ge307Ci0gICAgcmVzdWx0LmluamVjdGVkU2NyaXB0SWQgPSBpbmplY3RlZFNjcmlw
dElkOwotICAgIHJlc3VsdC5vYmplY3RJZCA9IG9iamVjdElkOwotICAgIHJlc3VsdC50eXBlID0g
SW5qZWN0ZWRTY3JpcHQuX3R5cGUob2JqZWN0KTsKLSAgICBpZiAocmVzdWx0LnR5cGUgPT09ICJh
cnJheSIpCi0gICAgICAgIHJlc3VsdC5wcm9wZXJ0eUxlbmd0aCA9IG9iamVjdC5sZW5ndGg7Cisg
ICAgdGhpcy5pbmplY3RlZFNjcmlwdElkID0gaW5qZWN0ZWRTY3JpcHRJZDsKKyAgICB0aGlzLnR5
cGUgPSB0eXBlOworICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB0aGlzLnBhdGggPSBwYXRo
IHx8IFtdOworfQogCi0gICAgdmFyIHR5cGUgPSB0eXBlb2Ygb2JqZWN0OwotICAgIAotICAgIHJl
c3VsdC5oYXNDaGlsZHJlbiA9ICh0eXBlID09PSAib2JqZWN0IiAmJiBvYmplY3QgIT09IG51bGwg
JiYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoIHx8ICEhb2JqZWN0
Ll9fcHJvdG9fXykpIHx8IHR5cGUgPT09ICJmdW5jdGlvbiI7Ci0gICAgdHJ5IHsKLSAgICAgICAg
cmVzdWx0LmRlc2NyaXB0aW9uID0gSW5qZWN0ZWRTY3JpcHQuX2Rlc2NyaWJlKG9iamVjdCwgYWJi
cmV2aWF0ZSk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICByZXN1bHQuZXJyb3JUZXh0ID0g
ZS50b1N0cmluZygpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworSW5qZWN0ZWRTY3JpcHQu
UmVtb3RlT2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0SWQsIHR5cGUsIGRlc2NyaXB0aW9uLCBoYXND
aGlsZHJlbikKK3sKKyAgICB0aGlzLm9iamVjdElkID0gb2JqZWN0SWQ7CisgICAgdGhpcy50eXBl
ID0gdHlwZTsKKyAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisgICAgdGhpcy5o
YXNDaGlsZHJlbiA9IGhhc0NoaWxkcmVuOworfQorCisvLyBDYWxsZWQgZnJvbSB3aXRoaW4gSW5z
cGVjdG9yQ29udHJvbGxlciBvbiB0aGUgJ2luc3BlY3RlZCBwYWdlJyBzaWRlLgorSW5qZWN0ZWRT
Y3JpcHQuY3JlYXRlUmVtb3RlT2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0LCBvYmplY3RJZCwgYWJi
cmV2aWF0ZSkKK3sKKyAgICB2YXIgdHlwZSA9IEluamVjdGVkU2NyaXB0Ll90eXBlKG9iamVjdCk7
CisgICAgdmFyIHJhd1R5cGUgPSB0eXBlb2Ygb2JqZWN0OworICAgIHZhciBoYXNDaGlsZHJlbiA9
IChyYXdUeXBlID09PSAib2JqZWN0IiAmJiBvYmplY3QgIT09IG51bGwgJiYgKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoIHx8ICEhb2JqZWN0Ll9fcHJvdG9fXykpIHx8
IHJhd1R5cGUgPT09ICJmdW5jdGlvbiI7CisgICAgdmFyIGRlc2NyaXB0aW9uID0gSW5qZWN0ZWRT
Y3JpcHQuX2Rlc2NyaWJlKG9iamVjdCwgYWJicmV2aWF0ZSk7CisgICAgcmV0dXJuIG5ldyBJbmpl
Y3RlZFNjcmlwdC5SZW1vdGVPYmplY3Qob2JqZWN0SWQsIHR5cGUsIGRlc2NyaXB0aW9uLCBoYXND
aGlsZHJlbik7CiB9CiAKIEluamVjdGVkU2NyaXB0LmV2YWx1YXRlT25TZWxmID0gZnVuY3Rpb24o
ZnVuY0JvZHksIGFyZ3MpCkBAIC00NDIsMTMgKzQ0NSwxNSBAQCBJbmplY3RlZFNjcmlwdC5DYWxs
RnJhbWVQcm94eS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Nv
cGVDaGFpbi5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgdmFyIHNjb3BlVHlwZSA9IGNhbGxG
cmFtZS5zY29wZVR5cGUoaSk7CiAgICAgICAgICAgICB2YXIgc2NvcGVPYmplY3QgPSBzY29wZUNo
YWluW2ldOwotICAgICAgICAgICAgdmFyIHNjb3BlT2JqZWN0UHJveHkgPSBJbmplY3RlZFNjcmlw
dC5jcmVhdGVQcm94eU9iamVjdChzY29wZU9iamVjdCwgeyBjYWxsRnJhbWU6IHRoaXMuaWQsIGNo
YWluSW5kZXg6IGkgfSwgdHJ1ZSk7CisgICAgICAgICAgICB2YXIgc2NvcGVPYmplY3RJZCA9IG5l
dyBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3RJZCgic2NvcGVPYmplY3QiLCB7IGNhbGxGcmFt
ZTogdGhpcy5pZCwgY2hhaW5JbmRleDogaSB9KTsKKyAgICAgICAgICAgIHZhciBzY29wZU9iamVj
dFByb3h5ID0gSW5qZWN0ZWRTY3JpcHQuY3JlYXRlUmVtb3RlT2JqZWN0KHNjb3BlT2JqZWN0LCBz
Y29wZU9iamVjdElkLCB0cnVlKTsKIAogICAgICAgICAgICAgc3dpdGNoKHNjb3BlVHlwZSkgewog
ICAgICAgICAgICAgICAgIGNhc2UgTE9DQUxfU0NPUEU6IHsKICAgICAgICAgICAgICAgICAgICAg
Zm91bmRMb2NhbFNjb3BlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgc2NvcGVPYmplY3RQ
cm94eS5pc0xvY2FsID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgc2NvcGVPYmplY3RQcm94
eS50aGlzT2JqZWN0ID0gSW5qZWN0ZWRTY3JpcHQuY3JlYXRlUHJveHlPYmplY3QoY2FsbEZyYW1l
LnRoaXNPYmplY3QsIHsgY2FsbEZyYW1lOiB0aGlzLmlkLCB0aGlzT2JqZWN0OiB0cnVlIH0sIHRy
dWUpOworICAgICAgICAgICAgICAgICAgICB2YXIgdGhpc09iamVjdElkID0gbmV3IEluamVjdGVk
U2NyaXB0LlJlbW90ZU9iamVjdElkKCJzY29wZU9iamVjdCIsIHsgY2FsbEZyYW1lOiB0aGlzLmlk
LCB0aGlzT2JqZWN0OiB0cnVlIH0pOworICAgICAgICAgICAgICAgICAgICBzY29wZU9iamVjdFBy
b3h5LnRoaXNPYmplY3QgPSBJbmplY3RlZFNjcmlwdC5jcmVhdGVSZW1vdGVPYmplY3QoY2FsbEZy
YW1lLnRoaXNPYmplY3QsIHRoaXNPYmplY3RJZCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIENMT1NVUkVf
U0NPUEU6IHsKQEAgLTUzNCw3ICs1MzksMTAgQEAgSW5qZWN0ZWRTY3JpcHQuX2Rlc2NyaWJlID0g
ZnVuY3Rpb24ob2JqLCBhYmJyZXZpYXRlZCkKICAgICBjYXNlICJvYmplY3QiOgogICAgIGNhc2Ug
Im5vZGUiOgogICAgIGNhc2UgImFycmF5IjoKLSAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
Ll9jbGFzc05hbWUob2JqKTsKKyAgICAgICAgdmFyIGNsYXNzTmFtZSA9IEluamVjdGVkU2NyaXB0
Ll9jbGFzc05hbWUob2JqKTsKKyAgICAgICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoID09ICJudW1i
ZXIiKQorICAgICAgICAgICAgY2xhc3NOYW1lICs9ICJbIiArIG9iai5sZW5ndGggKyAiXSI7Cisg
ICAgICAgIHJldHVybiBjbGFzc05hbWU7CiAgICAgY2FzZSAic3RyaW5nIjoKICAgICAgICAgaWYg
KCFhYmJyZXZpYXRlZCkKICAgICAgICAgICAgIHJldHVybiBvYmo7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UHJvcGVydGllc1NlY3Rpb24uanMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UHJvcGVydGllc1NlY3Rpb24uanMKaW5kZXgg
YTMyZTc5OS4uMzNjOGM5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L09iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qcwpAQCAtNTAsNyArNTAsNyBAQCBXZWJJbnNw
ZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIHNlbGYudXBkYXRlUHJvcGVydGllcyhwcm9wZXJ0aWVz
KTsKICAgICAgICAgfTsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0KHRoaXMub2Jq
ZWN0LmluamVjdGVkU2NyaXB0SWQpLmdldFByb3BlcnRpZXModGhpcy5vYmplY3QsIHRoaXMuaWdu
b3JlSGFzT3duUHJvcGVydHksIHRydWUsIGNhbGxiYWNrKTsKKyAgICAgICAgdGhpcy5vYmplY3Qu
Z2V0UHJvcGVydGllcyh0aGlzLmlnbm9yZUhhc093blByb3BlcnR5LCB0cnVlLCBjYWxsYmFjayk7
CiAgICAgfSwKIAogICAgIHVwZGF0ZVByb3BlcnRpZXM6IGZ1bmN0aW9uKHByb3BlcnRpZXMsIHJv
b3RUcmVlRWxlbWVudENvbnN0cnVjdG9yLCByb290UHJvcGVydHlDb21wYXJlcikKQEAgLTY5LDgg
KzY5LDEwIEBAIFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUucmVtb3ZlQ2hpbGRyZW4o
KTsKIAotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyArK2kp
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgcHJvcGVydGllc1tpXS5wYXJlbnRPYmplY3QgPSB0aGlzLm9iamVjdDsKICAg
ICAgICAgICAgIHRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKG5ldyByb290
VHJlZUVsZW1lbnRDb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzW2ldKSk7CisgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIXRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5lLmNoaWxkcmVuLmxlbmd0aCkgewog
ICAgICAgICAgICAgdmFyIHRpdGxlID0gIjxkaXYgY2xhc3M9XCJpbmZvXCI+IiArIHRoaXMuZW1w
dHlQbGFjZWhvbGRlciArICI8L2Rpdj4iOwpAQCAtMTUyLDcgKzE1NCw3IEBAIFdlYkluc3BlY3Rv
ci5PYmplY3RQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICB0aGlzLmFwcGVuZENoaWxkKG5ldyB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24udHJlZUVsZW1l
bnRDb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzW2ldKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07
Ci0gICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldCh0aGlzLnByb3BlcnR5LnZhbHVlLmlu
amVjdGVkU2NyaXB0SWQpLmdldFByb3BlcnRpZXModGhpcy5wcm9wZXJ0eS52YWx1ZSwgZmFsc2Us
IHRydWUsIGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLnByb3BlcnR5LnZhbHVl
LmdldE93blByb3BlcnRpZXModHJ1ZSwgY2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAog
ICAgIG9uZGJsY2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMTc4LDggKzE4MCw2IEBAIFdlYklu
c3BlY3Rvci5PYmplY3RQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy52YWx1ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAg
ICAgIHRoaXMudmFsdWVFbGVtZW50LmNsYXNzTmFtZSA9ICJ2YWx1ZSI7CiAgICAgICAgIHRoaXMu
dmFsdWVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5wcm9wZXJ0eS52YWx1ZS5kZXNjcmlwdGlv
bjsKLSAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BlcnR5LnZhbHVlLnByb3BlcnR5TGVuZ3Ro
ICE9PSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgIHRoaXMudmFsdWVFbGVtZW50LnRleHRDb250
ZW50ICs9ICIgKCIgKyB0aGlzLnByb3BlcnR5LnZhbHVlLnByb3BlcnR5TGVuZ3RoICsgIikiOwog
ICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5pc0dldHRlcikKICAgICAgICAgICAgIHRoaXMudmFs
dWVFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImRpbW1lZCIpOwogICAgICAgICBpZiAodGhpcy5wcm9w
ZXJ0eS5pc0Vycm9yKQpAQCAtMjYwLDcgKzI2MCw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RQcm9w
ZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0
ZVNpYmxpbmdzKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07Ci0gICAgICAgIEluamVjdGVk
U2NyaXB0QWNjZXNzLmdldCh0aGlzLnByb3BlcnR5LnBhcmVudE9iamVjdFByb3h5LmluamVjdGVk
U2NyaXB0SWQpLnNldFByb3BlcnR5VmFsdWUodGhpcy5wcm9wZXJ0eS5wYXJlbnRPYmplY3RQcm94
eSwgdGhpcy5wcm9wZXJ0eS5uYW1lLCBleHByZXNzaW9uLnRyaW0oKSwgY2FsbGJhY2spOworICAg
ICAgICB0aGlzLnByb3BlcnR5LnBhcmVudE9iamVjdC5zZXRQcm9wZXJ0eVZhbHVlKHRoaXMucHJv
cGVydHkubmFtZSwgZXhwcmVzc2lvbi50cmltKCksIGNhbGxiYWNrKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQcm94eS5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQcm94eS5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZWYxMzljNi4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvT2JqZWN0UHJveHkuanMKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotV2Vi
SW5zcGVjdG9yLk9iamVjdFByb3h5ID0gZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRJZCwgb2JqZWN0
SWQsIHBhdGgsIGRlc2NyaXB0aW9uLCBoYXNDaGlsZHJlbikKLXsKLSAgICB0aGlzLm9iamVjdElk
ID0gb2JqZWN0SWQ7Ci0gICAgdGhpcy5pbmplY3RlZFNjcmlwdElkID0gaW5qZWN0ZWRTY3JpcHRJ
ZDsKLSAgICB0aGlzLnBhdGggPSBwYXRoIHx8IFtdOwotICAgIHRoaXMuZGVzY3JpcHRpb24gPSBk
ZXNjcmlwdGlvbjsKLSAgICB0aGlzLmhhc0NoaWxkcmVuID0gaGFzQ2hpbGRyZW47Ci19Ci0KLVdl
Ykluc3BlY3Rvci5PYmplY3RQcm94eS53cmFwUHJpbWl0aXZlVmFsdWUgPSBmdW5jdGlvbih2YWx1
ZSkKLXsKLSAgICB2YXIgcHJveHkgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFByb3h5KCk7Ci0g
ICAgcHJveHkudHlwZSA9IHR5cGVvZiB2YWx1ZTsKLSAgICBwcm94eS5kZXNjcmlwdGlvbiA9IHZh
bHVlOwotICAgIHJldHVybiBwcm94eTsKLX0KLQotV2ViSW5zcGVjdG9yLk9iamVjdFByb3h5Lmdl
dFByb3BlcnRpZXNBc3luYyA9IGZ1bmN0aW9uKG9iamVjdFByb3h5LCBwcm9wZXJ0aWVzVG9RdWVy
eUZvciwgY2FsbGJhY2spCi17Ci0gICAgZnVuY3Rpb24gY3JlYXRlUHJvcGVydGllc01hcFRoZW5D
YWxsYmFjayhwcm9wZXJ0aWVzUGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIGlmICghcHJvcGVydGll
c1BheWxvYWQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcHJvcGVydGllc1BheWxvYWQubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBp
ZiAocHJvcGVydGllc1RvUXVlcnlGb3IuaW5kZXhPZihwcm9wZXJ0aWVzUGF5bG9hZFtpXS5uYW1l
KSAhPT0gLTEpCi0gICAgICAgICAgICAgICAgcmVzdWx0W3Byb3BlcnRpZXNQYXlsb2FkW2ldLm5h
bWVdID0gcHJvcGVydGllc1BheWxvYWRbaV0udmFsdWUuZGVzY3JpcHRpb247Ci0gICAgICAgIGNh
bGxiYWNrKHJlc3VsdCk7Ci0gICAgfTsKLSAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXQob2Jq
ZWN0UHJveHkuaW5qZWN0ZWRTY3JpcHRJZCkuZ2V0UHJvcGVydGllcyhvYmplY3RQcm94eSwgdHJ1
ZSwgZmFsc2UsIGNyZWF0ZVByb3BlcnRpZXNNYXBUaGVuQ2FsbGJhY2spOwotfQotCi1XZWJJbnNw
ZWN0b3IuT2JqZWN0UHJvcGVydHlQcm94eSA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKQotewotICAg
IHRoaXMubmFtZSA9IG5hbWU7Ci0gICAgdGhpcy52YWx1ZSA9IHZhbHVlOwotfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTaWRlYmFyUGFuZS5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanMKaW5k
ZXggOWRmNjQ0OC4uZDY0ODgxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Byb3BlcnRpZXNTaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5lLmpzCkBAIC01MSwxNCArNTEsMTQgQEAgV2ViSW5z
cGVjdG9yLlByb3BlcnRpZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2
YXIgcGF0aCA9IFtdOwogICAgICAgICAgICAgLy8gR2V0IGFycmF5IG9mIHByb3RvdHlwZSB1c2Vy
LWZyaWVuZGx5IG5hbWVzLgogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm90b3R5
cGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHByb3RvdHlwZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuT2JqZWN0UHJveHkobm9kZS5pbmplY3RlZFNjcmlwdElkLCBub2RlLmlkLCBw
YXRoLnNsaWNlKCkpOworICAgICAgICAgICAgICAgIHZhciBwcm90b3R5cGUgPSBuZXcgV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tTm9kZShub2RlLCBwYXRoLnNsaWNlKCkpOwogICAgICAg
ICAgICAgICAgIHZhciBzZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0aWVz
U2VjdGlvbihwcm90b3R5cGUsIHByb3RvdHlwZXNbaV0sIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UHJvdG90eXBlIikpOwogICAgICAgICAgICAgICAgIHNlbGYuc2VjdGlvbnMucHVzaChzZWN0aW9u
KTsKICAgICAgICAgICAgICAgICBib2R5LmFwcGVuZENoaWxkKHNlY3Rpb24uZWxlbWVudCk7CiAg
ICAgICAgICAgICAgICAgcGF0aC5wdXNoKCJfX3Byb3RvX18iKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0KG5vZGUuaW5qZWN0ZWRT
Y3JpcHRJZCkuZ2V0UHJvdG90eXBlcyhub2RlLmlkLCBjYWxsYmFjayk7CisgICAgICAgIEluamVj
dGVkU2NyaXB0QWNjZXNzLmdldCgtbm9kZS5pZCkuZ2V0UHJvdG90eXBlcyhub2RlLmlkLCBjYWxs
YmFjayk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVtb3RlT2JqZWN0LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90ZU9i
amVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWMzNzZhCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5q
cwpAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RJZCA9IGZ1bmN0aW9u
KGluamVjdGVkU2NyaXB0SWQsIHR5cGUsIHZhbHVlLCBwYXRoKQoreworICAgIHRoaXMuaW5qZWN0
ZWRTY3JpcHRJZCA9IGluamVjdGVkU2NyaXB0SWQ7CisgICAgdGhpcy50eXBlID0gdHlwZTsKKyAg
ICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgdGhpcy5wYXRoID0gcGF0aCB8fCBbXTsKK30KKwor
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdElkLCB0eXBlLCBkZXNj
cmlwdGlvbiwgaGFzQ2hpbGRyZW4pCit7CisgICAgdGhpcy5fb2JqZWN0SWQgPSBvYmplY3RJZDsK
KyAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IGRlc2NyaXB0
aW9uOworICAgIHRoaXMuX2hhc0NoaWxkcmVuID0gaGFzQ2hpbGRyZW47Cit9CisKK1dlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QuZnJvbVByaW1pdGl2ZVZhbHVlID0gZnVuY3Rpb24odmFsdWUpCit7
CisgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KG51bGwsIHR5cGVvZiB2
YWx1ZSwgdmFsdWUpOworfQorCitXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21FcnJvck1l
c3NhZ2UgPSBmdW5jdGlvbih0ZXh0KQoreworICAgIHZhciBtZXNzYWdlID0gbmV3IFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QobnVsbCwgdHlwZW9mIHRleHQsIHRleHQpOworICAgIG1lc3NhZ2Uu
X3R5cGUgPSAiZXJyb3IiOworICAgIHJldHVybiBtZXNzYWdlOworfQorV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC5mcm9tTm9kZSA9IGZ1bmN0aW9uKG5vZGUsIHBhdGgpCit7CisgICAgdmFyIG9i
amVjdElkID0gbmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RJZCgtbm9kZS5pZCwgIm5vZGUi
LCBub2RlLmlkLCBwYXRoKTsKKyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3Qob2JqZWN0SWQsICJub2RlIiwgYXBwcm9wcmlhdGVTZWxlY3RvckZvck5vZGUobm9kZSksIHRy
dWUpOworfQorCitXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkID0gZnVuY3Rp
b24ocGF5bG9hZCkKK3sKKyAgICBpZiAodHlwZW9mIHBheWxvYWQgPT09ICJvYmplY3QiKQorICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QocGF5bG9hZC5vYmplY3RJ
ZCwgcGF5bG9hZC50eXBlLCBwYXlsb2FkLmRlc2NyaXB0aW9uLCBwYXlsb2FkLmhhc0NoaWxkcmVu
KTsKKyAgICAvLyBGSVhNRTogbWFrZSBzdXJlIHdlIG9ubHkgZ2V0IGhlcmUgd2l0aCByZWFsIHBh
eWxvYWRzIGluIHRoZSBuZXcgRGVidWdnZXJBZ2VudC5qcy4KKyAgICByZXR1cm4gcGF5bG9hZDsK
K30KKworV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC50eXBlID0gZnVuY3Rpb24ocmVtb3RlT2Jq
ZWN0KQoreworICAgIGlmIChyZW1vdGVPYmplY3QgPT09IG51bGwpCisgICAgICAgIHJldHVybiAi
bnVsbCI7CisKKyAgICB2YXIgdHlwZSA9IHR5cGVvZiByZW1vdGVPYmplY3Q7CisgICAgaWYgKHR5
cGUgIT09ICJvYmplY3QiICYmIHR5cGUgIT09ICJmdW5jdGlvbiIpCisgICAgICAgIHJldHVybiB0
eXBlOworCisgICAgcmV0dXJuIHJlbW90ZU9iamVjdC50eXBlOworfQorCitXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0LnByb3RvdHlwZSA9IHsKKyAgICBnZXQgb2JqZWN0SWQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX29iamVjdElkOworICAgIH0sCisKKyAgICBnZXQgdHlwZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKKyAgICB9LAorCisgICAgZ2V0IGRlc2Ny
aXB0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9kZXNjcmlwdGlvbjsKKyAgICB9
LAorCisgICAgZ2V0IGhhc0NoaWxkcmVuKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9o
YXNDaGlsZHJlbjsKKyAgICB9LAorCisgICAgZ2V0UHJvcGVydHlWYWx1ZXM6IGZ1bmN0aW9uKHBy
b3BlcnRpZXNUb1F1ZXJ5Rm9yLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGNy
ZWF0ZVByb3BlcnRpZXNNYXBUaGVuQ2FsbGJhY2socHJvcGVydGllc1BheWxvYWQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICghcHJvcGVydGllc1BheWxvYWQpIHsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjaygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSB7fTsKKyAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcHJvcGVydGllc1BheWxvYWQubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAg
aWYgKHByb3BlcnRpZXNUb1F1ZXJ5Rm9yLmluZGV4T2YocHJvcGVydGllc1BheWxvYWRbaV0ubmFt
ZSkgIT09IC0xKQorICAgICAgICAgICAgICAgICAgICByZXN1bHRbcHJvcGVydGllc1BheWxvYWRb
aV0ubmFtZV0gPSBwcm9wZXJ0aWVzUGF5bG9hZFtpXS52YWx1ZS5kZXNjcmlwdGlvbjsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5nZXRQcm9w
ZXJ0aWVzKHRydWUsIGZhbHNlLCBjcmVhdGVQcm9wZXJ0aWVzTWFwVGhlbkNhbGxiYWNrKTsKKyAg
ICB9LAorCisgICAgZ2V0T3duUHJvcGVydGllczogZnVuY3Rpb24oYWJicmV2aWF0ZSwgY2FsbGJh
Y2spCisgICAgeworICAgICAgICB0aGlzLmdldFByb3BlcnRpZXMoZmFsc2UsIGFiYnJldmlhdGUs
IGNhbGxiYWNrKTsKKyAgICB9LAorCisgICAgZ2V0UHJvcGVydGllczogZnVuY3Rpb24oaWdub3Jl
SGFzT3duUHJvcGVydHksIGFiYnJldmlhdGUsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYg
KCF0aGlzLl9vYmplY3RJZCkgeworICAgICAgICAgICAgY2FsbGJhY2soW10pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIHJlbW90ZU9iamVjdEJpbmRl
cihwcm9wZXJ0aWVzKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHByb3BlcnRpZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgcHJvcGVydGllc1tpXS52
YWx1ZSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocHJvcGVydGllc1tp
XS52YWx1ZSk7CisgICAgICAgICAgICBjYWxsYmFjayhwcm9wZXJ0aWVzKTsKKyAgICAgICAgfQor
ICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXQodGhpcy5fb2JqZWN0SWQuaW5qZWN0ZWRT
Y3JpcHRJZCkuZ2V0UHJvcGVydGllcyh0aGlzLl9vYmplY3RJZCwgaWdub3JlSGFzT3duUHJvcGVy
dHksIGFiYnJldmlhdGUsIHJlbW90ZU9iamVjdEJpbmRlcik7CisgICAgfSwKKworICAgIHNldFBy
b3BlcnR5VmFsdWU6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlLCBjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIGlmICghdGhpcy5fb2JqZWN0SWQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBJbmplY3RlZFNjcmlwdEFj
Y2Vzcy5nZXQodGhpcy5fb2JqZWN0SWQuaW5qZWN0ZWRTY3JpcHRJZCkuc2V0UHJvcGVydHlWYWx1
ZSh0aGlzLl9vYmplY3RJZCwgbmFtZSwgdmFsdWUsIGNhbGxiYWNrKTsKKyAgICB9Cit9CisKK1dl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eSA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKQor
eworICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njb3BlQ2hhaW5TaWRlYmFyUGFu
ZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY29wZUNoYWluU2lkZWJhclBhbmUu
anMKaW5kZXggZmRmY2QzOC4uODQyMWVmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Njb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NvcGVDaGFpblNpZGViYXJQYW5lLmpzCkBAIC02MCw3ICs2MCw3IEBAIFdl
Ykluc3BlY3Rvci5TY29wZUNoYWluU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIGVtcHR5UGxhY2Vob2xkZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIFZhcmlh
YmxlcyIpOwogICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gbnVsbDsKICAgICAgICAgICAgICAg
ICBpZiAoc2NvcGVPYmplY3RQcm94eS50aGlzT2JqZWN0KQotICAgICAgICAgICAgICAgICAgICBl
eHRyYVByb3BlcnRpZXMgPSBbIG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydHlQcm94eSgi
dGhpcyIsIHNjb3BlT2JqZWN0UHJveHkudGhpc09iamVjdCkgXTsKKyAgICAgICAgICAgICAgICAg
ICAgZXh0cmFQcm9wZXJ0aWVzID0gWyBuZXcgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3Bl
cnR5KCJ0aGlzIiwgc2NvcGVPYmplY3RQcm94eS50aGlzT2JqZWN0KSBdOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChzY29wZU9iamVjdFByb3h5LmlzQ2xvc3VyZSkgewogICAgICAgICAgICAgICAg
IHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbG9zdXJlIik7CiAgICAgICAgICAgICAg
ICAgZW1wdHlQbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gVmFyaWFibGVz
Iik7CkBAIC03Nyw3ICs3Nyw3IEBAIFdlYkluc3BlY3Rvci5TY29wZUNoYWluU2lkZWJhclBhbmUu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCF0aXRsZSB8fCB0aXRsZSA9PT0gc3VidGl0
bGUpCiAgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBudWxsOwogCi0gICAgICAgICAgICB2YXIg
c2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rpb24oc2NvcGVP
YmplY3RQcm94eSwgdGl0bGUsIHN1YnRpdGxlLCBlbXB0eVBsYWNlaG9sZGVyLCB0cnVlLCBleHRy
YVByb3BlcnRpZXMsIFdlYkluc3BlY3Rvci5TY29wZVZhcmlhYmxlVHJlZUVsZW1lbnQpOworICAg
ICAgICAgICAgdmFyIHNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnRpZXNT
ZWN0aW9uKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQoc2NvcGVPYmplY3RQ
cm94eSksIHRpdGxlLCBzdWJ0aXRsZSwgZW1wdHlQbGFjZWhvbGRlciwgdHJ1ZSwgZXh0cmFQcm9w
ZXJ0aWVzLCBXZWJJbnNwZWN0b3IuU2NvcGVWYXJpYWJsZVRyZWVFbGVtZW50KTsKICAgICAgICAg
ICAgIHNlY3Rpb24uZWRpdEluU2VsZWN0ZWRDYWxsRnJhbWVXaGVuUGF1c2VkID0gdHJ1ZTsKICAg
ICAgICAgICAgIHNlY3Rpb24ucGFuZSA9IHRoaXM7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDQ0YzFkYmEuLjUwNzc2MWUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtNDAxLDcgKzQwMSw3IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBmdW5jdGlv
biBldmFsQ2FsbGJhY2socmVzdWx0KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAocmVzdWx0
KQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC52YWx1ZSwgcmVzdWx0LmlzRXhjZXB0
aW9uKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
LmZyb21QYXlsb2FkKHJlc3VsdC52YWx1ZSksIHJlc3VsdC5pc0V4Y2VwdGlvbik7CiAgICAgICAg
IH0KICAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0KGNhbGxGcmFtZS5pbmplY3RlZFNj
cmlwdElkKS5ldmFsdWF0ZUluQ2FsbEZyYW1lKGNhbGxGcmFtZS5pZCwgY29kZSwgb2JqZWN0R3Jv
dXAsIGV2YWxDYWxsYmFjayk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9XYXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzCmluZGV4IGI1MzBh
YjYuLjcyNDJiNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XYXRj
aEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5qcwpAQCAtOTQsMTMgKzk0LDEzIEBAIFdl
Ykluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgICAgICAgICAvLyBFeGNl
cHRpb24gcmVzdWx0cyBhcmUgbm90IHdyYXBwZXJzLCBidXQgdGV4dCBtZXNzYWdlcy4KLSAgICAg
ICAgICAgICAgICByZXN1bHQgPSBXZWJJbnNwZWN0b3IuT2JqZWN0UHJveHkud3JhcFByaW1pdGl2
ZVZhbHVlKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAocmVzdWx0LnR5cGUgPT09ICJzdHJpbmciKSB7CiAgICAgICAgICAgICAgICAgLy8gRXZh
bHVhdGlvbiByZXN1bHQgaXMgaW50ZW50aW9uYWxseSBub3QgYWJicmV2aWF0ZWQuIEhvd2V2ZXIs
IHdlJ2QgbGlrZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIG51bGwgYW5kICJudWxsIgogICAgICAg
ICAgICAgICAgIHJlc3VsdC5kZXNjcmlwdGlvbiA9ICJcIiIgKyByZXN1bHQuZGVzY3JpcHRpb24g
KyAiXCIiOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBuZXcg
V2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnR5UHJveHkoZXhwcmVzc2lvbiwgcmVzdWx0KTsKKyAg
ICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0UHJv
cGVydHkoZXhwcmVzc2lvbiwgcmVzdWx0KTsKICAgICAgICAgICAgIHByb3BlcnR5LndhdGNoSW5k
ZXggPSB3YXRjaEluZGV4OwogICAgICAgICAgICAgcHJvcGVydHkuaXNFeGNlcHRpb24gPSBleGNl
cHRpb247CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQu
cXJjIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggYTU0OTM2
Yy4uZmViY2FkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktp
dC5xcmMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTUy
LDcgKzUyLDYgQEAKICAgICA8ZmlsZT5NZXRyaWNzU2lkZWJhclBhbmUuanM8L2ZpbGU+CiAgICAg
PGZpbGU+T2JqZWN0LmpzPC9maWxlPgogICAgIDxmaWxlPk9iamVjdFByb3BlcnRpZXNTZWN0aW9u
LmpzPC9maWxlPgotICAgIDxmaWxlPk9iamVjdFByb3h5LmpzPC9maWxlPgogICAgIDxmaWxlPlBh
bmVsLmpzPC9maWxlPgogICAgIDxmaWxlPlBhbmVsRW5hYmxlclZpZXcuanM8L2ZpbGU+CiAgICAg
PGZpbGU+UGxhY2FyZC5qczwvZmlsZT4KQEAgLTYyLDYgKzYxLDcgQEAKICAgICA8ZmlsZT5Qcm9m
aWxlVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5Qcm9wZXJ0aWVzU2VjdGlvbi5qczwvZmlsZT4K
ICAgICA8ZmlsZT5Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanM8L2ZpbGU+CisgICAgPGZpbGU+UmVt
b3RlT2JqZWN0LmpzPC9maWxlPgogICAgIDxmaWxlPlJlc291cmNlLmpzPC9maWxlPgogICAgIDxm
aWxlPlJlc291cmNlQ2F0ZWdvcnkuanM8L2ZpbGU+CiAgICAgPGZpbGU+UmVzb3VyY2VzUGFuZWwu
anM8L2ZpbGU+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWwgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5k
ZXggNDhlOTViYi4uMTRlMmNkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuaHRtbApAQCAtNzMsNyArNzMsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNpZGViYXJUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2VjdGlvbi5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJvcGVydGllc1Nl
Y3Rpb24uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9Ik9iamVjdFByb3h5LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJSZW1vdGVPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik9iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJCcmVha3BvaW50
c1NpZGViYXJQYW5lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJDYWxsU3RhY2tTaWRlYmFyUGFuZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA0ZThlNjMzLi42ODE2ZDIzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTE0NjcsMTIgKzE0Njcs
NiBAQCBXZWJJbnNwZWN0b3IubG9nID0gZnVuY3Rpb24obWVzc2FnZSwgbWVzc2FnZUxldmVsKQog
ICAgIC8vIHJlbWVtYmVyICd0aGlzJyBmb3Igc2V0SW50ZXJ2YWwoKSBjYWxsYmFjawogICAgIHZh
ciBzZWxmID0gdGhpczsKIAotICAgIC8vIHJldHVybiBpbmRpY2F0aW9uIGlmIHdlIGNhbiBhY3R1
YWxseSBsb2cgYSBtZXNzYWdlCi0gICAgZnVuY3Rpb24gaXNMb2dBdmFpbGFibGUoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSAmJiBXZWJJbnNwZWN0
b3IuT2JqZWN0UHJveHkgJiYgc2VsZi5jb25zb2xlOwotICAgIH0KLQogICAgIC8vIGZsdXNoIHRo
ZSBxdWV1ZSBvZiBwZW5kaW5nIG1lc3NhZ2VzCiAgICAgZnVuY3Rpb24gZmx1c2hRdWV1ZSgpCiAg
ICAgewpAQCAtMTUxMCw3ICsxNTA0LDcgQEAgV2ViSW5zcGVjdG9yLmxvZyA9IGZ1bmN0aW9uKG1l
c3NhZ2UsIG1lc3NhZ2VMZXZlbCkKICAgICAgICAgV2ViSW5zcGVjdG9yLmxvZy5yZXBlYXRDb3Vu
dCA9IHJlcGVhdENvdW50OwogCiAgICAgICAgIC8vIENvbnNvbGVNZXNzYWdlIGV4cGVjdHMgYSBw
cm94eSBvYmplY3QKLSAgICAgICAgbWVzc2FnZSA9IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJv
eHkobnVsbCwgbnVsbCwgW10sIG1lc3NhZ2UsIGZhbHNlKTsKKyAgICAgICAgbWVzc2FnZSA9IG5l
dyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QcmltaXRpdmVWYWx1ZShtZXNzYWdlKTsK
IAogICAgICAgICAvLyBwb3N0IHRoZSBtZXNzYWdlCiAgICAgICAgIHZhciBtc2cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL3V0aWxpdGllcy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGls
aXRpZXMuanMKaW5kZXggZGQzZTc2MS4uNjZjZjI4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvdXRpbGl0aWVzLmpzCkBAIC0yNiwxOCArMjYsNiBAQAogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1PYmplY3QucHJveHlUeXBlID0gZnVuY3Rpb24ob2JqZWN0UHJveHkpCi17Ci0gICAgaWYgKG9i
amVjdFByb3h5ID09PSBudWxsKQotICAgICAgICByZXR1cm4gIm51bGwiOwotCi0gICAgdmFyIHR5
cGUgPSB0eXBlb2Ygb2JqZWN0UHJveHk7Ci0gICAgaWYgKHR5cGUgIT09ICJvYmplY3QiICYmIHR5
cGUgIT09ICJmdW5jdGlvbiIpCi0gICAgICAgIHJldHVybiB0eXBlOwotCi0gICAgcmV0dXJuIG9i
amVjdFByb3h5LnR5cGU7Ci19Ci0KIE9iamVjdC5wcm9wZXJ0aWVzID0gZnVuY3Rpb24ob2JqKQog
ewogICAgIHZhciBwcm9wZXJ0aWVzID0gW107CkBAIC04NDcsNyArODM1LDcgQEAgU3RyaW5nLnRv
a2VuaXplRm9ybWF0U3RyaW5nID0gZnVuY3Rpb24oZm9ybWF0KQogU3RyaW5nLnN0YW5kYXJkRm9y
bWF0dGVycyA9IHsKICAgICBkOiBmdW5jdGlvbihzdWJzdGl0dXRpb24pCiAgICAgewotICAgICAg
ICBpZiAodHlwZW9mIHN1YnN0aXR1dGlvbiA9PSAib2JqZWN0IiAmJiBPYmplY3QucHJveHlUeXBl
KHN1YnN0aXR1dGlvbikgPT09ICJudW1iZXIiKQorICAgICAgICBpZiAodHlwZW9mIHN1YnN0aXR1
dGlvbiA9PSAib2JqZWN0IiAmJiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnR5cGUoc3Vic3Rp
dHV0aW9uKSA9PT0gIm51bWJlciIpCiAgICAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0
dXRpb24uZGVzY3JpcHRpb247CiAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHBhcnNlSW50KHN1YnN0
aXR1dGlvbik7CiAgICAgICAgIHJldHVybiAhaXNOYU4oc3Vic3RpdHV0aW9uKSA/IHN1YnN0aXR1
dGlvbiA6IDA7CkBAIC04NTUsNyArODQzLDcgQEAgU3RyaW5nLnN0YW5kYXJkRm9ybWF0dGVycyA9
IHsKIAogICAgIGY6IGZ1bmN0aW9uKHN1YnN0aXR1dGlvbiwgdG9rZW4pCiAgICAgewotICAgICAg
ICBpZiAodHlwZW9mIHN1YnN0aXR1dGlvbiA9PSAib2JqZWN0IiAmJiBPYmplY3QucHJveHlUeXBl
KHN1YnN0aXR1dGlvbikgPT09ICJudW1iZXIiKQorICAgICAgICBpZiAodHlwZW9mIHN1YnN0aXR1
dGlvbiA9PSAib2JqZWN0IiAmJiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnR5cGUoc3Vic3Rp
dHV0aW9uKSA9PT0gIm51bWJlciIpCiAgICAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0
dXRpb24uZGVzY3JpcHRpb247CiAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHBhcnNlRmxvYXQoc3Vi
c3RpdHV0aW9uKTsKICAgICAgICAgaWYgKHN1YnN0aXR1dGlvbiAmJiB0b2tlbi5wcmVjaXNpb24g
PiAtMSkKQEAgLTg2NSw3ICs4NTMsNyBAQCBTdHJpbmcuc3RhbmRhcmRGb3JtYXR0ZXJzID0gewog
CiAgICAgczogZnVuY3Rpb24oc3Vic3RpdHV0aW9uKQogICAgIHsKLSAgICAgICAgaWYgKHR5cGVv
ZiBzdWJzdGl0dXRpb24gPT0gIm9iamVjdCIgJiYgT2JqZWN0LnByb3h5VHlwZShzdWJzdGl0dXRp
b24pICE9PSAibnVsbCIpCisgICAgICAgIGlmICh0eXBlb2Ygc3Vic3RpdHV0aW9uID09ICJvYmpl
Y3QiICYmIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QudHlwZShzdWJzdGl0dXRpb24pICE9PSAi
bnVsbCIpCiAgICAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24uZGVzY3JpcHRp
b247CiAgICAgICAgIHJldHVybiBzdWJzdGl0dXRpb247CiAgICAgfSwK
</data>
<flag name="review"
          id="52608"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64213</attachid>
            <date>2010-08-12 05:33:28 -0700</date>
            <delta_ts>2010-08-12 06:23:11 -0700</delta_ts>
            <desc>[PATCH] Review comments addressed.</desc>
            <filename>comments_addressed</filename>
            <type>text/plain</type>
            <size>59916</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMzU0YzJkLi4wOTQyNmU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDgt
MTIgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYnJ1c2gg
dXAgb2JqZWN0IHByb3hpZXMsIGludHJvZHVjZSByZW1vdGUgb2JqZWN0IG1vZGVsLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM4NDcKKworICAgICAg
ICAqIGluc3BlY3Rvci9jb25zb2xlLWRpci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL2NvbnNvbGUtZGlyLWdsb2JhbC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xl
LWRpci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9u
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWV4cGVj
dGVkLnR4dDoKKworMjAxMC0wOC0xMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBicnVzaCB1cCBvYmplY3QgcHJveGllcywgaW50cm9kdWNlIHJlbW90ZSBv
YmplY3QgbW9kZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00Mzg0NworCisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUtZGlyLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS1kaXItZ2xvYmFsLmh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL2NvbnNvbGUtZGlyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNv
bGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Y29uc29sZS1mb3JtYXQtZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA4LTEyICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4g
Um9iaW5zb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyLWV4cGVjdGVk
LnR4dAppbmRleCA1ZTkzMTA3Li42NzNmY2MyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS1kaXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jb25zb2xlLWRpci1leHBlY3RlZC50eHQKQEAgLTMsMjQgKzMsMjQgQEAgQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDEwOiBbb2JqZWN0IE5vZGVMaXN0XQogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEx
OiBbb2JqZWN0IFhQYXRoUmVzdWx0XQogVGVzdHMgdGhhdCBjb25zb2xlIGxvZ2dpbmcgZHVtcHMg
cHJvcGVyIG1lc3NhZ2VzLgogCi1BcnJheQotPj4+IDAgPSAidGVzdDEiCi0+Pj4gMSA9ICJ0ZXN0
MiIKLT4+PiBsZW5ndGggPSAyCi0+Pj4gX19wcm90b19fID0gQXJyYXkKLU5vZGVMaXN0Ci0+Pj4g
MCA9IEhUTUxIdG1sRWxlbWVudAotPj4+IGNvbnN0cnVjdG9yID0gTm9kZUxpc3RDb25zdHJ1Y3Rv
cgotPj4+IGxlbmd0aCA9IDEKLT4+PiBfX3Byb3RvX18gPSBOb2RlTGlzdFByb3RvdHlwZQorQXJy
YXlbMl0KKyAgICAwID0gInRlc3QxIgorICAgIDEgPSAidGVzdDIiCisgICAgbGVuZ3RoID0gMgor
ICAgIF9fcHJvdG9fXyA9IEFycmF5WzBdCitOb2RlTGlzdFsxXQorICAgIDAgPSBIVE1MSHRtbEVs
ZW1lbnQKKyAgICBjb25zdHJ1Y3RvciA9IE5vZGVMaXN0Q29uc3RydWN0b3IKKyAgICBsZW5ndGgg
PSAxCisgICAgX19wcm90b19fID0gTm9kZUxpc3RQcm90b3R5cGUKIFhQYXRoUmVzdWx0Ci0+Pj4g
Ym9vbGVhblZhbHVlID0gRXJyb3I6IFRZUEVfRVJSOiBET00gWFBhdGggRXhjZXB0aW9uIDUyCi0+
Pj4gY29uc3RydWN0b3IgPSBYUGF0aFJlc3VsdENvbnN0cnVjdG9yCi0+Pj4gaW52YWxpZEl0ZXJh
dG9yU3RhdGUgPSBmYWxzZQotPj4+IG51bWJlclZhbHVlID0gRXJyb3I6IFRZUEVfRVJSOiBET00g
WFBhdGggRXhjZXB0aW9uIDUyCi0+Pj4gcmVzdWx0VHlwZSA9IDQKLT4+PiBzaW5nbGVOb2RlVmFs
dWUgPSBFcnJvcjogVFlQRV9FUlI6IERPTSBYUGF0aCBFeGNlcHRpb24gNTIKLT4+PiBzbmFwc2hv
dExlbmd0aCA9IEVycm9yOiBUWVBFX0VSUjogRE9NIFhQYXRoIEV4Y2VwdGlvbiA1MgotPj4+IHN0
cmluZ1ZhbHVlID0gRXJyb3I6IFRZUEVfRVJSOiBET00gWFBhdGggRXhjZXB0aW9uIDUyCi0+Pj4g
X19wcm90b19fID0gWFBhdGhSZXN1bHRQcm90b3R5cGUKKyAgICBib29sZWFuVmFsdWUgPSBFcnJv
cjogVFlQRV9FUlI6IERPTSBYUGF0aCBFeGNlcHRpb24gNTIKKyAgICBjb25zdHJ1Y3RvciA9IFhQ
YXRoUmVzdWx0Q29uc3RydWN0b3IKKyAgICBpbnZhbGlkSXRlcmF0b3JTdGF0ZSA9IGZhbHNlCisg
ICAgbnVtYmVyVmFsdWUgPSBFcnJvcjogVFlQRV9FUlI6IERPTSBYUGF0aCBFeGNlcHRpb24gNTIK
KyAgICByZXN1bHRUeXBlID0gNAorICAgIHNpbmdsZU5vZGVWYWx1ZSA9IEVycm9yOiBUWVBFX0VS
UjogRE9NIFhQYXRoIEV4Y2VwdGlvbiA1MgorICAgIHNuYXBzaG90TGVuZ3RoID0gRXJyb3I6IFRZ
UEVfRVJSOiBET00gWFBhdGggRXhjZXB0aW9uIDUyCisgICAgc3RyaW5nVmFsdWUgPSBFcnJvcjog
VFlQRV9FUlI6IERPTSBYUGF0aCBFeGNlcHRpb24gNTIKKyAgICBfX3Byb3RvX18gPSBYUGF0aFJl
c3VsdFByb3RvdHlwZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS1kaXItZ2xvYmFsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXItZ2xv
YmFsLmh0bWwKaW5kZXggZTdlNDQ3NS4uOTNlZjZjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUtZGlyLWdsb2JhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLWRpci1nbG9iYWwuaHRtbApAQCAtMjYsMTAgKzI2LDEwIEBAIGZ1bmN0aW9u
IGZyb250ZW5kX2V4cGFuZEFuZER1bXBDb25zb2xlTWVzc2FnZXModGVzdENvbnRyb2xsZXIpCiAK
ICAgICBmdW5jdGlvbiBldmFsQ2FsbGJhY2socmVzdWx0KQogICAgIHsKLSAgICAgICAgaWYgKHJl
c3VsdC5pc0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
IkV4Y2VwdGlvbjoiICsgcmVzdWx0LnZhbHVlKTsKLSAgICAgICAgdmFyIG9iamVjdFByb3h5ID0g
cmVzdWx0LnZhbHVlOwotICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXREZWZhdWx0KCku
Z2V0UHJvcGVydGllcyhvYmplY3RQcm94eSwgZmFsc2UsIHRydWUsIGdldFByb3BlcnRpZXNDYWxs
YmFjayk7CisgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PT0gImVycm9yIikKKyAgICAgICAgICAg
IHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoIkV4Y2VwdGlvbjoiICsgcmVzdWx0KTsKKyAgICAg
ICAgdmFyIG9iamVjdFByb3h5ID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9h
ZChyZXN1bHQpOworICAgICAgICBvYmplY3RQcm94eS5nZXRQcm9wZXJ0aWVzKGZhbHNlLCB0cnVl
LCBnZXRQcm9wZXJ0aWVzQ2FsbGJhY2spOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGdldFByb3Bl
cnRpZXNDYWxsYmFjayhwcm9wZXJ0aWVzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NvbnNvbGUtZGlyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIu
aHRtbAppbmRleCA4YTBiNzczLi41M2Y3ZGJlIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS1kaXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS1kaXIuaHRtbApAQCAtMjAsNyArMjAsNyBAQCBmdW5jdGlvbiBleHBhbmRBbmREdW1wQ29uc29s
ZU1lc3NhZ2VzKG5vTm90aWZ5RG9uZSkgewogICAgICAgICAgICAgb3V0cHV0KHJlc3VsdFtpXS50
aXRsZSk7CiAgICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IHJlc3VsdFtpXS5wcm9wZXJ0aWVz
OwogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IHByb3BlcnRpZXMgJiYgaiA8IHByb3BlcnRp
ZXMubGVuZ3RoOyArK2opCi0gICAgICAgICAgICAgICAgb3V0cHV0KCI+Pj4gIiArIHByb3BlcnRp
ZXNbal0ubmFtZSArICIgPSAiICsgcHJvcGVydGllc1tqXS52YWx1ZS5kZXNjcmlwdGlvbik7Cisg
ICAgICAgICAgICAgICAgb3V0cHV0KCIgICAgIiArIHByb3BlcnRpZXNbal0ubmFtZSArICIgPSAi
ICsgcHJvcGVydGllc1tqXS52YWx1ZS5fZGVzY3JpcHRpb24pOwogICAgICAgICB9CiAgICAgICAg
IGlmICghbm9Ob3RpZnlEb25lKQogICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9u
cy1leHBlY3RlZC50eHQKaW5kZXggZTBjNDRlYi4uZWUyNDQ4OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMtZXhw
ZWN0ZWQudHh0CkBAIC0xNSw1ICsxNSw1IEBAIFRlc3RzIHRoYXQgY29uc29sZSBuaWNlbHkgZm9y
bWF0cyBIVE1MIENvbGxlY3Rpb25zIGFuZCBOb2RlTGlzdHMuCiA8L3A+LCA8ZGl2IHN0eWxlPSJk
aXNwbGF5Om5vbmUiPuKApjwvZGl2PiwgPGZvcm0gaWQ9ImYiPuKApjwvZm9ybT4sIDxzZWxlY3Qg
aWQ9InNlbCIgbmFtZT0ic2VsIj7igKY8L3NlbGVjdD4sIDxvcHRpb24gdmFsdWU9IjEiPm9uZTwv
b3B0aW9uPiwgPG9wdGlvbiB2YWx1ZT0iMiI+dHdvPC9vcHRpb24+LCA8aW5wdXQgdHlwZT0icmFk
aW8iIG5hbWU9IngiIHZhbHVlPSJ4MSI+LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IngiIHZh
bHVlPSJ4MiI+LCA8ZGl2IGlkPSJvdXRwdXQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlOyAiPjwv
ZGl2Pl0KIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MzFbPHNlbGVjdCBpZD0ic2Vs
IiBuYW1lPSJzZWwiPuKApjwvc2VsZWN0PiwgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2
YWx1ZT0ieDEiPiwgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDIiPl0KIGNv
bnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MzVbPGlucHV0IHR5cGU9InJhZGlvIiBuYW1l
PSJ4IiB2YWx1ZT0ieDEiPiwgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDIi
Pl0KLWNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6NDFbMSwgQXJyYXldCitjb25zb2xl
LWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjQxWzEsIEFycmF5WzJdXQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWV4cGVjdGVkLnR4dAppbmRleCAzZWMwM2Zi
Li42ZTljMmI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3Jt
YXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1h
dC1leHBlY3RlZC50eHQKQEAgLTM5LDcgKzM5LDcgQEAgY29uc29sZS1mb3JtYXQuaHRtbDoxM01l
c3NhZ2UgZm9ybWF0IGZvciBzdHJpbmcKIGNvbnNvbGUtZm9ybWF0Lmh0bWw6MTRPYmplY3QgT2Jq
ZWN0CiBjb25zb2xlLWZvcm1hdC5odG1sOjIwWyJ0ZXN0IiwgInRlc3QyIiwgdW5kZWZpbmVkLCB1
bmRlZmluZWQsICJ0ZXN0NCJdCiBjb25zb2xlLWZvcm1hdC5odG1sOjIxWyJ0ZXN0IiwgInRlc3Qy
IiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICJ0ZXN0NCJdCi1jb25zb2xlLWZvcm1hdC5odG1sOjIy
QXJyYXkKK2NvbnNvbGUtZm9ybWF0Lmh0bWw6MjJBcnJheVs1XQogY29uc29sZS1mb3JtYXQuaHRt
bDo1Mi9edXJsXChccyooPzooPzoiKD86W15cXFwiXXwoPzpcXFtcZGEtZl17MSw2fVxzP3xcLikp
KiJ8Jyg/OlteXFxcJ118KD86XFxbXGRhLWZdezEsNn1ccz98XC4pKSonKXwoPzpbISMkJSYqLX5c
d118KD86XFxbXGRhLWZdezEsNn1ccz98XC4pKSopXHMqXCkvaQogY29uc29sZS1mb3JtYXQuaHRt
bDo1M1svXnVybFwoXHMqKD86KD86Iig/OlteXFxcIl18KD86XFxbXGRhLWZdezEsNn1ccz98XC4p
KSoifCcoPzpbXlxcXCddfCg/OlxcW1xkYS1mXXsxLDZ9XHM/fFwuKSkqJyl8KD86WyEjJCUmKi1+
XHddfCg/OlxcW1xkYS1mXXsxLDZ9XHM/fFwuKSkqKVxzKlwpL2ldCiAiL151cmxcKFxzKig/Oig/
OiIoPzpbXlxcXCJdfCg/OlxcW1xkYS1mXXsxLDZ9XHM/fFwuKSkqInwnKD86W15cXFwnXXwoPzpc
XFtcZGEtZl17MSw2fVxzP3xcLikpKicpfCg/OlshIyQlJiotflx3XXwoPzpcXFtcZGEtZl17MSw2
fVxzP3xcLikpKilccypcKS9pIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAwYzEzZmEyLi5jNTM3NmNlIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAx
MC0wOC0xMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBi
cnVzaCB1cCBvYmplY3QgcHJveGllcywgaW50cm9kdWNlIHJlbW90ZSBvYmplY3QgbW9kZWwuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mzg0NworCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNzc0luSGVhZFJ1bGUucHJvdG90eXBlLmRv
UnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlN0eWxlc1NjcmlwdHNPcmRl
clJ1bGUucHJvdG90eXBlLmRvUnVuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZS5kb0V2YWxJbldpbmRvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJv
dG90eXBlLl9lbnRlcktleVByZXNzZWQucHJpbnRSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fZW50ZXJLZXlQcmVzc2VkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2Zvcm1hdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLl9mb3JtYXRub2RlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2Zvcm1hdGFycmF5KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2Zvcm1hdEFzQXJyYXlFbnRyeSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLl9mb3JtYXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRPTU5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3Rv
dHlwZS5fY3JlYXRlVG9vbHRpcEZvck5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qczoKKyAgICAgICAgKGluamVjdGVk
U2NyaXB0Q29uc3RydWN0b3IpOgorICAgICAgICAoaW5qZWN0ZWRTY3JpcHRDb25zdHJ1Y3Rvci4p
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UHJvcGVydGllc1NlY3Rpb24u
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rpb24ucHJvdG90
eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rp
b24ucHJvdG90eXBlLnVwZGF0ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9i
amVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLm9ucG9wdWxhdGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5
cGUuYXBwbHlFeHByZXNzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL09iamVj
dFByb3h5LmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVy
dGllc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTaWRl
YmFyUGFuZS5wcm90b3R5cGUudXBkYXRlLmNhbGxiYWNrKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0SWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QcmltaXRpdmVWYWx1ZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21FcnJvck1lc3NhZ2UpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tTm9kZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3QudHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
LnByb3RvdHlwZS5nZXQgb2JqZWN0SWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9i
amVjdC5wcm90b3R5cGUuZ2V0IHR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9i
amVjdC5wcm90b3R5cGUuZ2V0IGRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZW1vdGVPYmplY3QucHJvdG90eXBlLmdldCBoYXNDaGlsZHJlbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5pc0Vycm9yKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlLmdldFByb3BlcnR5VmFsdWVEZXNjcmlwdGlvbnMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUuZ2V0T3duUHJv
cGVydGllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5n
ZXRQcm9wZXJ0aWVzLnJlbW90ZU9iamVjdEJpbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0UHJvcGVydHkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2Nv
cGVDaGFpblNpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5T
aWRlYmFyUGFuZS5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
cHJvdG90eXBlLmV2YWx1YXRlSW5TZWxlY3RlZENhbGxGcmFtZS51cGRhdGluZ0NhbGxiYWNrV3Jh
cHBlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5ldmFs
dWF0ZUluU2VsZWN0ZWRDYWxsRnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQ
YW5lbC5wcm90b3R5cGUuZG9FdmFsSW5DYWxsRnJhbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU291cmNlRnJhbWUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWUucHJvdG90eXBlLl9zaG93UG9wdXAuZXZhbHVhdGVDYWxsYmFjayk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9zaG93UG9wdXApOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fZXZhbFNlbGVjdGlvbkluQ2FsbEZyYW1l
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFy
UGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbi5w
cm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25U
cmVlRWxlbWVudC5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5sb2cubG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
bG9nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qczoKKyAgICAg
ICAgKCk6CisKKzIwMTAtMDgtMTEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogYnJ1c2ggdXAgb2JqZWN0IHByb3hpZXMsIGludHJvZHVjZSByZW1vdGUgb2Jq
ZWN0IG1vZGVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDM4NDcKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNv
bGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5k
b0V2YWxJbldpbmRvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90
eXBlLl9mb3JtYXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZS5fZm9ybWF0bm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90
eXBlLl9mb3JtYXRhcnJheSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJv
dG90eXBlLl9mb3JtYXRBc0FycmF5RW50cnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlLnByb3RvdHlwZS5fZm9ybWF0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25z
b2xlQ29tbWFuZFJlc3VsdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2Vu
dC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NyZWF0ZVRvb2x0aXBGb3JOb2RlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUu
anM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qczoKKyAg
ICAgICAgKGluamVjdGVkU2NyaXB0Q29uc3RydWN0b3IpOgorICAgICAgICAoaW5qZWN0ZWRTY3Jp
cHRDb25zdHJ1Y3Rvci4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UHJv
cGVydGllc1NlY3Rpb24uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGll
c1NlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0
UHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZVByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLm9ucG9wdWxh
dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJv
dG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydHlUcmVl
RWxlbWVudC5wcm90b3R5cGUuYXBwbHlFeHByZXNzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL09iamVjdFByb3h5LmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlByb3BlcnRpZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUudXBkYXRlLmNhbGxiYWNrKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5qczogQWRkZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0SWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21Qcmlt
aXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21FcnJv
ck1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tTm9kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QudHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5nZXQgb2JqZWN0SWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUuZ2V0IHR5cGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUuZ2V0IGRlc2NyaXB0aW9uKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlLmdldCBoYXNDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5nZXRQcm9wZXJ0eVZh
bHVlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5nZXRP
d25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90
eXBlLmdldFByb3BlcnRpZXMucmVtb3RlT2JqZWN0QmluZGVyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY29wZUNoYWluU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NvcGVD
aGFpblNpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQ
YW5lbC5wcm90b3R5cGUuZG9FdmFsSW5DYWxsRnJhbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTZWN0aW9uLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvZy5sb2dNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5sb2cpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
dXRpbGl0aWVzLmpzOgorCiAyMDEwLTA4LTEyICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhMmZh
ZjUzLi5iMjRkYTc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDExMSw3ICs0MTExLDYgQEAKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL09iamVjdC5qcycsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9PYmplY3RQcm94eS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9P
YmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9QYW5lbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbEVu
YWJsZXJWaWV3LmpzJywKQEAgLTQxMjIsNiArNDEyMSw3IEBACiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9Qcm9wZXJ0aWVzU2VjdGlvbi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVtb3RlT2JqZWN0LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlQ2F0ZWdvcnkuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0F1ZGl0UnVsZXMuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5q
cwppbmRleCA4NTE5Y2YyLi5lMjhhMzY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQXVkaXRSdWxlcy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
QXVkaXRSdWxlcy5qcwpAQCAtNzI0LDkgKzcyNCw5IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVz
LkNzc0luSGVhZFJ1bGUgPSBmdW5jdGlvbigpCiBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Dc3NJ
bkhlYWRSdWxlLnByb3RvdHlwZSA9IHsKICAgICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCBy
ZXN1bHQsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gZXZhbENhbGxiYWNrKGV2
YWxSZXN1bHQsIGlzRXhjZXB0aW9uKQorICAgICAgICBmdW5jdGlvbiBldmFsQ2FsbGJhY2soZXZh
bFJlc3VsdCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGlzRXhjZXB0aW9uIHx8ICFldmFs
UmVzdWx0KQorICAgICAgICAgICAgaWYgKCFldmFsUmVzdWx0KQogICAgICAgICAgICAgICAgIHJl
dHVybiBjYWxsYmFjayhudWxsKTsKIAogICAgICAgICAgICAgdmFyIHN1bW1hcnkgPSByZXN1bHQu
YWRkQ2hpbGQoIiIpOwpAQCAtODAwLDkgKzgwMCw5IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVz
LlN0eWxlc1NjcmlwdHNPcmRlclJ1bGUgPSBmdW5jdGlvbigpCiBXZWJJbnNwZWN0b3IuQXVkaXRS
dWxlcy5TdHlsZXNTY3JpcHRzT3JkZXJSdWxlLnByb3RvdHlwZSA9IHsKICAgICBkb1J1bjogZnVu
Y3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgZnVuY3Rp
b24gZXZhbENhbGxiYWNrKHJlc3VsdFZhbHVlLCBpc0V4Y2VwdGlvbikKKyAgICAgICAgZnVuY3Rp
b24gZXZhbENhbGxiYWNrKHJlc3VsdFZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
aXNFeGNlcHRpb24gfHwgIXJlc3VsdFZhbHVlKQorICAgICAgICAgICAgaWYgKCFyZXN1bHRWYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7CiAKICAgICAgICAgICAg
IHZhciBsYXRlQ3NzVXJscyA9IHJlc3VsdFZhbHVlWzBdOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnNvbGVWaWV3LmpzCmluZGV4IDZhNGUwZDMuLmYyNTdmMjQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKQEAgLTUxMSw3ICs1MTEsNyBAQCBX
ZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9u
IGV2YWxDYWxsYmFjayhyZXN1bHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJl
c3VsdC52YWx1ZSwgcmVzdWx0LmlzRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0KSk7CiAgICAgICAgIH07
CiAgICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldERlZmF1bHQoKS5ldmFsdWF0ZShleHBy
ZXNzaW9uLCBvYmplY3RHcm91cCwgZXZhbENhbGxiYWNrKTsKICAgICB9LApAQCAtNTM0LDcgKzUz
NCw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuYWRkTWVzc2FnZShjb21tYW5kTWVzc2FnZSk7CiAKICAgICAgICAgdmFyIHNlbGYgPSB0aGlz
OwotICAgICAgICBmdW5jdGlvbiBwcmludFJlc3VsdChyZXN1bHQsIGV4Y2VwdGlvbikKKyAgICAg
ICAgZnVuY3Rpb24gcHJpbnRSZXN1bHQocmVzdWx0KQogICAgICAgICB7CiAgICAgICAgICAgICBz
ZWxmLnByb21wdC5oaXN0b3J5LnB1c2goc3RyKTsKICAgICAgICAgICAgIHNlbGYucHJvbXB0Lmhp
c3RvcnlPZmZzZXQgPSAwOwpAQCAtNTQyLDcgKzU0Miw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xl
Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlv
blNldHRpbmdzLmNvbnNvbGVIaXN0b3J5ID0gc2VsZi5wcm9tcHQuaGlzdG9yeS5zbGljZSgtMzAp
OwogCi0gICAgICAgICAgICBzZWxmLmFkZE1lc3NhZ2UobmV3IFdlYkluc3BlY3Rvci5Db25zb2xl
Q29tbWFuZFJlc3VsdChyZXN1bHQsIGV4Y2VwdGlvbiwgY29tbWFuZE1lc3NhZ2UpKTsKKyAgICAg
ICAgICAgIHNlbGYuYWRkTWVzc2FnZShuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVz
dWx0KHJlc3VsdCwgY29tbWFuZE1lc3NhZ2UpKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLmV2
YWxJbkluc3BlY3RlZFdpbmRvdyhzdHIsICJjb25zb2xlIiwgcHJpbnRSZXN1bHQpOwogICAgIH0s
CkBAIC01NTAsNyArNTUwLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICBfZm9ybWF0OiBmdW5jdGlvbihvdXRwdXQsIGZvcmNlT2JqZWN0Rm9ybWF0KQogICAg
IHsKICAgICAgICAgdmFyIGlzUHJveHkgPSAob3V0cHV0ICE9IG51bGwgJiYgdHlwZW9mIG91dHB1
dCA9PT0gIm9iamVjdCIpOwotICAgICAgICB2YXIgdHlwZSA9IChmb3JjZU9iamVjdEZvcm1hdCA/
ICJvYmplY3QiIDogT2JqZWN0LnByb3h5VHlwZShvdXRwdXQpKTsKKyAgICAgICAgdmFyIHR5cGUg
PSAoZm9yY2VPYmplY3RGb3JtYXQgPyAib2JqZWN0IiA6IFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QudHlwZShvdXRwdXQpKTsKIAogICAgICAgICB2YXIgZm9ybWF0dGVyID0gdGhpcy5fY3VzdG9t
Rm9ybWF0dGVyc1t0eXBlXTsKICAgICAgICAgaWYgKCFmb3JtYXR0ZXIgfHwgIWlzUHJveHkpIHsK
QEAgLTU4OSwxMiArNTg5LDEyIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBlbGVtLmFwcGVuZENoaWxkKHRyZWVPdXRsaW5lLmVsZW1lbnQpOwog
ICAgICAgICB9CiAKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0KG9iamVjdC5pbmpl
Y3RlZFNjcmlwdElkKS5wdXNoTm9kZVRvRnJvbnRlbmQob2JqZWN0LCBwcmludE5vZGUpOworICAg
ICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXREZWZhdWx0KCkucHVzaE5vZGVUb0Zyb250ZW5k
KG9iamVjdC5vYmplY3RJZCwgcHJpbnROb2RlKTsKICAgICB9LAogCiAgICAgX2Zvcm1hdGFycmF5
OiBmdW5jdGlvbihhcnIsIGVsZW0pCiAgICAgewotICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vz
cy5nZXQoYXJyLmluamVjdGVkU2NyaXB0SWQpLmdldFByb3BlcnRpZXMoYXJyLCBmYWxzZSwgZmFs
c2UsIHRoaXMuX3ByaW50QXJyYXkuYmluZCh0aGlzLCBlbGVtKSk7CisgICAgICAgIGFyci5nZXRP
d25Qcm9wZXJ0aWVzKGZhbHNlLCB0aGlzLl9wcmludEFycmF5LmJpbmQodGhpcywgZWxlbSkpOwog
ICAgIH0sCiAKICAgICBfZm9ybWF0c3RyaW5nOiBmdW5jdGlvbihvdXRwdXQsIGVsZW0pCkBAIC02
MzcsOSArNjM3LDggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKIAog
ICAgIF9mb3JtYXRBc0FycmF5RW50cnk6IGZ1bmN0aW9uKG91dHB1dCkKICAgICB7Ci0gICAgICAg
IHZhciB0eXBlID0gT2JqZWN0LnByb3h5VHlwZShvdXRwdXQpOwogICAgICAgICAvLyBQcmV2ZW50
IGluZmluaXRlIGV4cGFuc2lvbiBvZiBjcm9zcy1yZWZlcmVuY2luZyBhcnJheXMuCi0gICAgICAg
IHJldHVybiB0aGlzLl9mb3JtYXQob3V0cHV0LCB0eXBlID09PSAiYXJyYXkiKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2Zvcm1hdChvdXRwdXQsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QudHlw
ZShvdXRwdXQpID09PSAiYXJyYXkiKTsKICAgICB9CiB9CiAKQEAgLTcyOCwxMiArNzI3LDE1IEBA
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8g
Rm9ybWF0dGluZyBjb2RlIGJlbG93IGFzc3VtZXMgdGhhdCBwYXJhbWV0ZXJzIGFyZSBhbGwgd3Jh
cHBlcnMgd2hlcmVhcyBmcm9udGVuZCBjb25zb2xlCiAgICAgICAgIC8vIEFQSSBhbGxvd3MgcGFz
c2luZyBhcmJpdHJhcnkgdmFsdWVzIGFzIG1lc3NhZ2VzIChzdHJpbmdzLCBudW1iZXJzLCBldGMu
KS4gV3JhcCB0aGVtIGhlcmUuCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1ldGVy
cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW1ldGVyc1tpXSAhPT0g
Im9iamVjdCIgJiYgdHlwZW9mIHBhcmFtZXRlcnNbaV0gIT09ICJmdW5jdGlvbiIpCi0gICAgICAg
ICAgICAgICAgcGFyYW1ldGVyc1tpXSA9IFdlYkluc3BlY3Rvci5PYmplY3RQcm94eS53cmFwUHJp
bWl0aXZlVmFsdWUocGFyYW1ldGVyc1tpXSk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cGFyYW1ldGVycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbWV0
ZXJzW2ldID09PSAib2JqZWN0IikKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzW2ldID0gV2Vi
SW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwYXJhbWV0ZXJzW2ldKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzW2ldID0gV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUocGFyYW1ldGVyc1tpXSk7CisgICAgICAg
IH0KIAogICAgICAgICAvLyBUaGVyZSBjYW4gYmUgc3RyaW5nIGxvZyBhbmQgc3RyaW5nIGV2YWwg
cmVzdWx0LiBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZW0gYmFzZWQgb24gbWVzc2FnZSB0eXBl
LgotICAgICAgICB2YXIgc2hvdWxkRm9ybWF0TWVzc2FnZSA9IE9iamVjdC5wcm94eVR5cGUocGFy
YW1ldGVyc1swXSkgPT09ICJzdHJpbmciICYmIHRoaXMudHlwZSAhPT0gV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlJlc3VsdDsKKyAgICAgICAgdmFyIHNob3VsZEZvcm1h
dE1lc3NhZ2UgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnR5cGUocGFyYW1ldGVyc1swXSkg
PT09ICJzdHJpbmciICYmIHRoaXMudHlwZSAhPT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
Lk1lc3NhZ2VUeXBlLlJlc3VsdDsKIAogICAgICAgICAvLyBNdWx0aXBsZSBwYXJhbWV0ZXJzIHdp
dGggdGhlIGZpcnN0IGJlaW5nIGEgZm9ybWF0IHN0cmluZy4gU2F2ZSB1bnVzZWQgc3Vic3RpdHV0
aW9ucy4KICAgICAgICAgaWYgKHNob3VsZEZvcm1hdE1lc3NhZ2UpIHsKQEAgLTEwNDgsMjEgKzEw
NTAsMTEgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kLnByb3RvdHlwZSA9IHsKICAgICB9
CiB9CiAKLVdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdCA9IGZ1bmN0aW9uKHJlc3Vs
dCwgZXhjZXB0aW9uLCBvcmlnaW5hdGluZ0NvbW1hbmQpCitXZWJJbnNwZWN0b3IuQ29uc29sZUNv
bW1hbmRSZXN1bHQgPSBmdW5jdGlvbihyZXN1bHQsIG9yaWdpbmF0aW5nQ29tbWFuZCkKIHsKLSAg
ICB2YXIgbGV2ZWwgPSAoZXhjZXB0aW9uID8gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VMZXZlbC5FcnJvciA6IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2
ZWwuTG9nKTsKLSAgICB2YXIgbWVzc2FnZSA9IHJlc3VsdDsKLSAgICBpZiAoZXhjZXB0aW9uKSB7
Ci0gICAgICAgIC8vIERpc3Rpbmd1aXNoIGJldHdlZW4gc3RyaW5ncyBhbmQgZXJyb3JzIChubyBu
ZWVkIHRvIHF1b3RlIGxhdHRlcikuCi0gICAgICAgIG1lc3NhZ2UgPSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0UHJveHkud3JhcFByaW1pdGl2ZVZhbHVlKHJlc3VsdCk7Ci0gICAgICAgIG1lc3NhZ2UudHlw
ZSA9ICJlcnJvciI7Ci0gICAgfQotICAgIHZhciBsaW5lID0gKGV4Y2VwdGlvbiA/IHJlc3VsdC5s
aW5lIDogLTEpOwotICAgIHZhciB1cmwgPSAoZXhjZXB0aW9uID8gcmVzdWx0LnNvdXJjZVVSTCA6
IG51bGwpOwotCisgICAgdmFyIGxldmVsID0gKHJlc3VsdC5pc0Vycm9yKCkgPyBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yIDogV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2cpOwogICAgIHRoaXMub3JpZ2luYXRpbmdDb21tYW5k
ID0gb3JpZ2luYXRpbmdDb21tYW5kOwotCi0gICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlMs
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1bHQsIGxldmVsLCBs
aW5lLCB1cmwsIG51bGwsIDEsIG51bGwsIFttZXNzYWdlXSk7CisgICAgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VTb3VyY2UuSlMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1
bHQsIGxldmVsLCAtMSwgbnVsbCwgbnVsbCwgMSwgbnVsbCwgW3Jlc3VsdF0pOwogfQogCiBXZWJJ
bnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IGM0MWQwMzguLjU3NDIyZjYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTMzLDEwICszMyw2IEBAIFdlYklu
c3BlY3Rvci5ET01Ob2RlID0gZnVuY3Rpb24oZG9jLCBwYXlsb2FkKSB7CiAgICAgdGhpcy5vd25l
ckRvY3VtZW50ID0gZG9jOwogCiAgICAgdGhpcy5pZCA9IHBheWxvYWQuaWQ7Ci0gICAgLy8gaW5q
ZWN0ZWRTY3JpcHRJZCBpcyBhIG5vZGUgaXMgZm9yIERPTSBub2RlcyB3aGljaCBzaG91bGQgYmUg
Y29udmVydGVkCi0gICAgLy8gdG8gY29ycmVzcG9uZGluZyBJbmplY3RlZFNjcmlwdCBieSB0aGUg
aW5zcGVjdG9yIGJhY2tlbmQuIFdlIGluZGljYXRlCi0gICAgLy8gdGhpcyBieSBtYWtpbmcgaW5q
ZWN0ZWRTY3JpcHRJZCBuZWdhdGl2ZS4KLSAgICB0aGlzLmluamVjdGVkU2NyaXB0SWQgPSAtcGF5
bG9hZC5pZDsKICAgICB0aGlzLm5vZGVUeXBlID0gcGF5bG9hZC5ub2RlVHlwZTsKICAgICB0aGlz
Lm5vZGVOYW1lID0gcGF5bG9hZC5ub2RlTmFtZTsKICAgICB0aGlzLmxvY2FsTmFtZSA9IHBheWxv
YWQubG9jYWxOYW1lOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzVHJlZU91dGxpbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNUcmVlT3V0bGluZS5qcwppbmRleCA4N2Q4NWMxLi40NTUyZmEwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpAQCAtNDEzLDgg
KzQxMyw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIiVkIMOXICVkIHBpeGVscyAoTmF0dXJhbDogJWQgw5cgJWQgcGl4ZWxz
KSIsIHByb3BlcnRpZXMub2Zmc2V0V2lkdGgsIHByb3BlcnRpZXMub2Zmc2V0SGVpZ2h0LCBwcm9w
ZXJ0aWVzLm5hdHVyYWxXaWR0aCwgcHJvcGVydGllcy5uYXR1cmFsSGVpZ2h0KTsKICAgICAgICAg
fQotICAgICAgICB2YXIgb2JqZWN0UHJveHkgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFByb3h5
KG5vZGUuaW5qZWN0ZWRTY3JpcHRJZCwgbm9kZS5pZCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5P
YmplY3RQcm94eS5nZXRQcm9wZXJ0aWVzQXN5bmMob2JqZWN0UHJveHksIFsibmF0dXJhbEhlaWdo
dCIsICJuYXR1cmFsV2lkdGgiLCAib2Zmc2V0SGVpZ2h0IiwgIm9mZnNldFdpZHRoIl0sIHNldFRv
b2x0aXAuYmluZCh0aGlzKSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJv
bU5vZGUobm9kZSkuZ2V0UHJvcGVydHlWYWx1ZURlc2NyaXB0aW9ucyhbIm5hdHVyYWxIZWlnaHQi
LCAibmF0dXJhbFdpZHRoIiwgIm9mZnNldEhlaWdodCIsICJvZmZzZXRXaWR0aCJdLCBzZXRUb29s
dGlwLmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICB1cGRhdGVTZWxlY3Rpb246IGZ1bmN0aW9u
KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3RlbmVy
c1NpZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVu
ZXJzU2lkZWJhclBhbmUuanMKaW5kZXggNjc5ODg0NS4uMTkzYzA2MiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUu
anMKQEAgLTE5NCwxMCArMTk0LDEwIEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyQmFyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIC8vIEp1c3QgYnVpbGQgcHJvcGVydGllcyBpbiBwbGFj
ZSAtIG5vIG5lZWQgdG8gcmVhY2ggb3V0IGZvciBpbmplY3RlZCBzY3JpcHQuCiAgICAgICAgICAg
ICB2YXIgdmFsdWUgPSB0aGlzLmV2ZW50TGlzdGVuZXJbcHJvcGVydHlOYW1lXTsKICAgICAgICAg
ICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01Ob2RlKQotICAgICAgICAg
ICAgICAgIHZhbHVlID0gbmV3IFdlYkluc3BlY3Rvci5PYmplY3RQcm94eSh2YWx1ZS5pbmplY3Rl
ZFNjcmlwdElkLCB2YWx1ZS5pZCwgW10sIGFwcHJvcHJpYXRlU2VsZWN0b3JGb3JOb2RlKHZhbHVl
KSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBXZWJJbnNwZWN0b3IuUmVtb3ZlT2Jq
ZWN0LmZyb21Ob2RlKHZhbHVlLmlkKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICB2YWx1ZSA9IFdlYkluc3BlY3Rvci5PYmplY3RQcm94eS53cmFwUHJpbWl0aXZlVmFsdWUodmFs
dWUpOwotICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0
UHJvcGVydHlQcm94eShwcm9wZXJ0eU5hbWUsIHZhbHVlKSk7CisgICAgICAgICAgICAgICAgdmFs
dWUgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QcmltaXRpdmVWYWx1ZSh2YWx1ZSk7
CisgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3RQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHZhbHVlKSk7CiAgICAgICAgIH0KICAgICAgICAgdGhp
cy51cGRhdGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpOwogICAgIH0sCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMKaW5kZXggYjhiZjlmMi4uZjNlM2FlOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0Lmpz
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcwpAQCAt
NTAsMjEgKzUwLDIxIEBAIEluamVjdGVkU2NyaXB0LndyYXBPYmplY3QgPSBmdW5jdGlvbihvYmpl
Y3QsIG9iamVjdEdyb3VwTmFtZSkKICAgICAgICAgdmFyIG9iamVjdElkOwogICAgICAgICBpZiAo
dHlwZW9mIG9iamVjdCA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIG9iamVjdCA9PT0gImZ1bmN0aW9u
IiB8fCBJbmplY3RlZFNjcmlwdC5faXNIVE1MQWxsQ29sbGVjdGlvbihvYmplY3QpKSB7CiAgICAg
ICAgICAgICB2YXIgaWQgPSBJbmplY3RlZFNjcmlwdC5sYXN0Qm91bmRPYmplY3RJZCsrOwotICAg
ICAgICAgICAgb2JqZWN0SWQgPSAib2JqZWN0IyIgKyBpZDsKLSAgICAgICAgICAgIEluamVjdGVk
U2NyaXB0LmlkVG9XcmFwcGVkT2JqZWN0W29iamVjdElkXSA9IG9iamVjdDsKKyAgICAgICAgICAg
IG9iamVjdElkID0gaWQ7CisgICAgICAgICAgICBJbmplY3RlZFNjcmlwdC5pZFRvV3JhcHBlZE9i
amVjdFtpZF0gPSBvYmplY3Q7CiAKICAgICAgICAgICAgIHZhciBncm91cCA9IEluamVjdGVkU2Ny
aXB0Lm9iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwogICAgICAgICAgICAgaWYgKCFncm91
cCkgewogICAgICAgICAgICAgICAgIGdyb3VwID0gW107CiAgICAgICAgICAgICAgICAgSW5qZWN0
ZWRTY3JpcHQub2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFtZV0gPSBncm91cDsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGdyb3VwLnB1c2gob2JqZWN0SWQpOworICAgICAgICAgICAgZ3Jv
dXAucHVzaChpZCk7CisgICAgICAgICAgICBvYmplY3RJZCA9IG5ldyBJbmplY3RlZFNjcmlwdC5S
ZW1vdGVPYmplY3RJZCgianNvYmplY3QiLCBpZCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0LmNyZWF0ZVByb3h5T2JqZWN0KG9iamVjdCwgb2JqZWN0SWQpOworICAg
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0LmZyb21PYmplY3Qob2JqZWN0
LCBvYmplY3RJZCk7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICByZXR1cm4gSW5qZWN0ZWRT
Y3JpcHQuY3JlYXRlUHJveHlPYmplY3QoIlsgRXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpICsg
IiBdIik7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QuZnJvbU9i
amVjdCgiWyBFeGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkgKyAiIF0iKTsKICAgICB9Ci0gICAg
cmV0dXJuIEluamVjdGVkU2NyaXB0LmNyZWF0ZVByb3h5T2JqZWN0KG9iamVjdCwgb2JqZWN0SWQp
OwogfTsKIAogSW5qZWN0ZWRTY3JpcHQudW53cmFwT2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0SWQp
IHsKQEAgLTExMCw5ICsxMTAsOSBAQCBJbmplY3RlZFNjcmlwdC5nZXRQcm90b3R5cGVzID0gZnVu
Y3Rpb24obm9kZUlkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUluamVjdGVkU2NyaXB0Lmdl
dFByb3BlcnRpZXMgPSBmdW5jdGlvbihvYmplY3RQcm94eSwgaWdub3JlSGFzT3duUHJvcGVydHks
IGFiYnJldmlhdGUpCitJbmplY3RlZFNjcmlwdC5nZXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24ob2Jq
ZWN0SWQsIGlnbm9yZUhhc093blByb3BlcnR5LCBhYmJyZXZpYXRlKQogewotICAgIHZhciBvYmpl
Y3QgPSBJbmplY3RlZFNjcmlwdC5fcmVzb2x2ZU9iamVjdChvYmplY3RQcm94eSk7CisgICAgdmFy
IG9iamVjdCA9IEluamVjdGVkU2NyaXB0Ll9vYmplY3RGb3JJZChvYmplY3RJZCk7CiAgICAgaWYg
KCFJbmplY3RlZFNjcmlwdC5faXNEZWZpbmVkKG9iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB2YXIgcHJvcGVydGllcyA9IFtdOwpAQCAtMTI3LDIyICsxMjcsMjEgQEAgSW5qZWN0
ZWRTY3JpcHQuZ2V0UHJvcGVydGllcyA9IGZ1bmN0aW9uKG9iamVjdFByb3h5LCBpZ25vcmVIYXNP
d25Qcm9wZXJ0eSwgYWJicmUKIAogICAgICAgICB2YXIgcHJvcGVydHkgPSB7fTsKICAgICAgICAg
cHJvcGVydHkubmFtZSA9IHByb3BlcnR5TmFtZSArICIiOwotICAgICAgICBwcm9wZXJ0eS5wYXJl
bnRPYmplY3RQcm94eSA9IG9iamVjdFByb3h5OwogICAgICAgICB2YXIgaXNHZXR0ZXIgPSBvYmpl
Y3RbIl9fbG9va3VwR2V0dGVyX18iXSAmJiBvYmplY3QuX19sb29rdXBHZXR0ZXJfXyhwcm9wZXJ0
eU5hbWUpOwogICAgICAgICBpZiAoIWlzR2V0dGVyKSB7CiAgICAgICAgICAgICB0cnkgewogICAg
ICAgICAgICAgICAgIHZhciBjaGlsZE9iamVjdCA9IG9iamVjdFtwcm9wZXJ0eU5hbWVdOwotICAg
ICAgICAgICAgICAgIHZhciBjaGlsZE9iamVjdFByb3h5ID0gbmV3IEluamVjdGVkU2NyaXB0LmNy
ZWF0ZVByb3h5T2JqZWN0KGNoaWxkT2JqZWN0LCBvYmplY3RQcm94eS5vYmplY3RJZCwgYWJicmV2
aWF0ZSk7Ci0gICAgICAgICAgICAgICAgY2hpbGRPYmplY3RQcm94eS5wYXRoID0gb2JqZWN0UHJv
eHkucGF0aCA/IG9iamVjdFByb3h5LnBhdGguc2xpY2UoKSA6IFtdOwotICAgICAgICAgICAgICAg
IGNoaWxkT2JqZWN0UHJveHkucGF0aC5wdXNoKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAg
ICAgdmFyIHBhdGggPSBvYmplY3RJZC5wYXRoID8gb2JqZWN0SWQucGF0aC5zbGljZSgpIDogW107
CisgICAgICAgICAgICAgICAgcGF0aC5wdXNoKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAg
ICAgdmFyIGNoaWxkT2JqZWN0SWQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0SWQo
b2JqZWN0SWQudHlwZSwgb2JqZWN0SWQudmFsdWUsIHBhdGgpOworICAgICAgICAgICAgICAgIHZh
ciBjaGlsZE9iamVjdFByb3h5ID0gbmV3IEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdC5mcm9t
T2JqZWN0KGNoaWxkT2JqZWN0LCBjaGlsZE9iamVjdElkLCBhYmJyZXZpYXRlKTsKICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eS52YWx1ZSA9IGNoaWxkT2JqZWN0UHJveHk7CiAgICAgICAgICAgICB9
IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eS52YWx1ZSA9IHsgZGVzY3JpcHRp
b246IGUudG9TdHJpbmcoKSB9OwotICAgICAgICAgICAgICAgIHByb3BlcnR5LmlzRXJyb3IgPSB0
cnVlOworICAgICAgICAgICAgICAgIHByb3BlcnR5LnZhbHVlID0gbmV3IEluamVjdGVkU2NyaXB0
LlJlbW90ZU9iamVjdC5mcm9tRXhjZXB0aW9uKGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHNob3cgc29tZXRoaW5n
IGxpa2UgImdldHRlciIgKGJ1ZyAxNjczNCkuCi0gICAgICAgICAgICBwcm9wZXJ0eS52YWx1ZSA9
IHsgZGVzY3JpcHRpb246ICJcdTIwMTQiIH07IC8vIGVtIGRhc2gKKyAgICAgICAgICAgIHByb3Bl
cnR5LnZhbHVlID0gbmV3IEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdC5mcm9tT2JqZWN0KCJc
dTIwMTQiKTsgLy8gZW0gZGFzaAogICAgICAgICAgICAgcHJvcGVydHkuaXNHZXR0ZXIgPSB0cnVl
OwogICAgICAgICB9CiAgICAgICAgIHByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7CkBAIC0xNTAs
OSArMTQ5LDkgQEAgSW5qZWN0ZWRTY3JpcHQuZ2V0UHJvcGVydGllcyA9IGZ1bmN0aW9uKG9iamVj
dFByb3h5LCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYWJicmUKICAgICByZXR1cm4gcHJvcGVydGll
czsKIH0KIAotSW5qZWN0ZWRTY3JpcHQuc2V0UHJvcGVydHlWYWx1ZSA9IGZ1bmN0aW9uKG9iamVj
dFByb3h5LCBwcm9wZXJ0eU5hbWUsIGV4cHJlc3Npb24pCitJbmplY3RlZFNjcmlwdC5zZXRQcm9w
ZXJ0eVZhbHVlID0gZnVuY3Rpb24ob2JqZWN0SWQsIHByb3BlcnR5TmFtZSwgZXhwcmVzc2lvbikK
IHsKLSAgICB2YXIgb2JqZWN0ID0gSW5qZWN0ZWRTY3JpcHQuX3Jlc29sdmVPYmplY3Qob2JqZWN0
UHJveHkpOworICAgIHZhciBvYmplY3QgPSBJbmplY3RlZFNjcmlwdC5fb2JqZWN0Rm9ySWQob2Jq
ZWN0SWQpOwogICAgIGlmICghSW5qZWN0ZWRTY3JpcHQuX2lzRGVmaW5lZChvYmplY3QpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI1OCwyMCArMjU3LDExIEBAIEluamVjdGVkU2NyaXB0
LmV2YWx1YXRlID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXApCiAKIEluamVjdGVk
U2NyaXB0Ll9ldmFsdWF0ZUFuZFdyYXAgPSBmdW5jdGlvbihldmFsRnVuY3Rpb24sIG9iamVjdCwg
ZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGRvbnRVc2VDb21tYW5kTGluZUFQSSkKIHsKLSAgICB2
YXIgcmVzdWx0ID0ge307CiAgICAgdHJ5IHsKLSAgICAgICAgcmVzdWx0LnZhbHVlID0gSW5qZWN0
ZWRTY3JpcHQud3JhcE9iamVjdChJbmplY3RlZFNjcmlwdC5fZXZhbHVhdGVPbihldmFsRnVuY3Rp
b24sIG9iamVjdCwgZXhwcmVzc2lvbiwgZG9udFVzZUNvbW1hbmRMaW5lQVBJKSwgb2JqZWN0R3Jv
dXApOwotCi0gICAgICAgIC8vIEhhbmRsZSBlcnJvciB0aGF0IG1pZ2h0IGhhdmUgaGFwcGVuZWQg
d2hpbGUgZGVzY3JpYmluZyByZXN1bHQuCi0gICAgICAgIGlmIChyZXN1bHQudmFsdWUuZXJyb3JU
ZXh0KSB7Ci0gICAgICAgICAgICByZXN1bHQudmFsdWUgPSByZXN1bHQudmFsdWUuZXJyb3JUZXh0
OwotICAgICAgICAgICAgcmVzdWx0LmlzRXhjZXB0aW9uID0gdHJ1ZTsKLSAgICAgICAgfQorICAg
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChJbmplY3RlZFNjcmlwdC5fZXZh
bHVhdGVPbihldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgZG9udFVzZUNvbW1hbmRM
aW5lQVBJKSwgb2JqZWN0R3JvdXApOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgcmVzdWx0
LnZhbHVlID0gZS50b1N0cmluZygpOwotICAgICAgICByZXN1bHQuaXNFeGNlcHRpb24gPSB0cnVl
OworICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0LmZyb21FeGNlcHRp
b24oZSk7CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEluamVjdGVkU2NyaXB0Ll9l
dmFsdWF0ZU9uID0gZnVuY3Rpb24oZXZhbEZ1bmN0aW9uLCBvYmplY3QsIGV4cHJlc3Npb24sIGRv
bnRVc2VDb21tYW5kTGluZUFQSSkKQEAgLTM0MiwxOCArMzMyLDYgQEAgSW5qZWN0ZWRTY3JpcHQu
X2NhbGxGcmFtZUZvcklkID0gZnVuY3Rpb24oaWQpCiAgICAgcmV0dXJuIGNhbGxGcmFtZTsKIH0K
IAotSW5qZWN0ZWRTY3JpcHQuX3Jlc29sdmVPYmplY3QgPSBmdW5jdGlvbihvYmplY3RQcm94eSkK
LXsKLSAgICB2YXIgb2JqZWN0ID0gSW5qZWN0ZWRTY3JpcHQuX29iamVjdEZvcklkKG9iamVjdFBy
b3h5Lm9iamVjdElkKTsKLSAgICB2YXIgcGF0aCA9IG9iamVjdFByb3h5LnBhdGg7Ci0KLSAgICAv
LyBGb2xsb3cgdGhlIHByb3BlcnR5IHBhdGguCi0gICAgZm9yICh2YXIgaSA9IDA7IEluamVjdGVk
U2NyaXB0Ll9pc0RlZmluZWQob2JqZWN0KSAmJiBwYXRoICYmIGkgPCBwYXRoLmxlbmd0aDsgKytp
KQotICAgICAgICBvYmplY3QgPSBvYmplY3RbcGF0aFtpXV07Ci0KLSAgICByZXR1cm4gb2JqZWN0
OwotfQotCiBJbmplY3RlZFNjcmlwdC5fbm9kZUZvcklkID0gZnVuY3Rpb24obm9kZUlkKQogewog
ICAgIGlmICghbm9kZUlkKQpAQCAtMzY3LDQ3ICszNDUsNzEgQEAgSW5qZWN0ZWRTY3JpcHQuX29i
amVjdEZvcklkID0gZnVuY3Rpb24ob2JqZWN0SWQpCiAgICAgLy8gLSBudW1iZXJzIHBvaW50IHRv
IERPTSBOb2RlIHZpYSB0aGUgSW5zcGVjdG9yRE9NQWdlbnQgbWFwcGluZwogICAgIC8vIC0gc3Ry
aW5ncyBwb2ludCB0byBjb25zb2xlIG9iamVjdHMgY2FjaGVkIGluIEluc3BlY3RvckNvbnRyb2xs
ZXIgZm9yIGxhenkgZXZhbHVhdGlvbiB1cG9uIHRoZW0KICAgICAvLyAtIG9iamVjdHMgY29udGFp
biBjb21wbGV4IGlkcyBhbmQgYXJlIGN1cnJlbnRseSB1c2VkIGZvciBzY29wZWQgb2JqZWN0cwot
ICAgIGlmICh0eXBlb2Ygb2JqZWN0SWQgPT09ICJudW1iZXIiKQotICAgICAgICByZXR1cm4gSW5q
ZWN0ZWRTY3JpcHQuX25vZGVGb3JJZChvYmplY3RJZCk7Ci0gICAgZWxzZSBpZiAodHlwZW9mIG9i
amVjdElkID09PSAic3RyaW5nIikKLSAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LnVud3Jh
cE9iamVjdChvYmplY3RJZCk7Ci0gICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdElkID09PSAib2Jq
ZWN0IikgewotICAgICAgICB2YXIgY2FsbEZyYW1lID0gSW5qZWN0ZWRTY3JpcHQuX2NhbGxGcmFt
ZUZvcklkKG9iamVjdElkLmNhbGxGcmFtZSk7CisgICAgdmFyIG9iamVjdDsKKyAgICBpZiAob2Jq
ZWN0SWQudHlwZSA9PT0gIm5vZGUiKQorICAgICAgICBvYmplY3QgPSBJbmplY3RlZFNjcmlwdC5f
bm9kZUZvcklkKG9iamVjdElkLnZhbHVlKTsKKyAgICBlbHNlIGlmIChvYmplY3RJZC50eXBlID09
PSAianNvYmplY3QiKQorICAgICAgICBvYmplY3QgPSBJbmplY3RlZFNjcmlwdC51bndyYXBPYmpl
Y3Qob2JqZWN0SWQudmFsdWUpOworICAgIGVsc2UgaWYgKG9iamVjdElkLnR5cGUgPT09ICJzY29w
ZU9iamVjdCIpIHsKKyAgICAgICAgdmFyIGNhbGxGcmFtZSA9IEluamVjdGVkU2NyaXB0Ll9jYWxs
RnJhbWVGb3JJZChvYmplY3RJZC52YWx1ZS5jYWxsRnJhbWUpOwogICAgICAgICBpZiAob2JqZWN0
SWQudGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiBjYWxsRnJhbWUudGhpc09iamVjdDsK
KyAgICAgICAgICAgIG9iamVjdCA9IGNhbGxGcmFtZS50aGlzT2JqZWN0OwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByZXR1cm4gY2FsbEZyYW1lLnNjb3BlQ2hhaW5bb2JqZWN0SWQuY2hhaW5J
bmRleF07Ci0gICAgfQotICAgIHJldHVybiBvYmplY3RJZDsKKyAgICAgICAgICAgIG9iamVjdCA9
IGNhbGxGcmFtZS5zY29wZUNoYWluW29iamVjdElkLnZhbHVlLmNoYWluSW5kZXhdOworICAgIH0g
ZWxzZQorICAgICAgICByZXR1cm4gb2JqZWN0SWQ7CisKKyAgICB2YXIgcGF0aCA9IG9iamVjdElk
LnBhdGg7CisKKyAgICAvLyBGb2xsb3cgdGhlIHByb3BlcnR5IHBhdGguCisgICAgZm9yICh2YXIg
aSA9IDA7IEluamVjdGVkU2NyaXB0Ll9pc0RlZmluZWQob2JqZWN0KSAmJiBwYXRoICYmIGkgPCBw
YXRoLmxlbmd0aDsgKytpKQorICAgICAgICBvYmplY3QgPSBvYmplY3RbcGF0aFtpXV07CisKKyAg
ICByZXR1cm4gb2JqZWN0OwogfQogCi1JbmplY3RlZFNjcmlwdC5wdXNoTm9kZVRvRnJvbnRlbmQg
PSBmdW5jdGlvbihvYmplY3RQcm94eSkKK0luamVjdGVkU2NyaXB0LnB1c2hOb2RlVG9Gcm9udGVu
ZCA9IGZ1bmN0aW9uKG9iamVjdElkKQogewotICAgIHZhciBvYmplY3QgPSBJbmplY3RlZFNjcmlw
dC5fcmVzb2x2ZU9iamVjdChvYmplY3RQcm94eSk7CisgICAgdmFyIG9iamVjdCA9IEluamVjdGVk
U2NyaXB0Ll9vYmplY3RGb3JJZChvYmplY3RJZCk7CiAgICAgaWYgKCFvYmplY3QgfHwgSW5qZWN0
ZWRTY3JpcHQuX3R5cGUob2JqZWN0KSAhPT0gIm5vZGUiKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG9i
amVjdCwgZmFsc2UsIGZhbHNlKTsKIH0KIAotLy8gQ2FsbGVkIGZyb20gd2l0aGluIEluc3BlY3Rv
ckNvbnRyb2xsZXIgb24gdGhlICdpbnNwZWN0ZWQgcGFnZScgc2lkZS4KLUluamVjdGVkU2NyaXB0
LmNyZWF0ZVByb3h5T2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0LCBvYmplY3RJZCwgYWJicmV2aWF0
ZSkKKy8vIEZJWE1FOiBSZW1vdGVPYmplY3RJZCBhbmQgUmVtb3RlT2JqZWN0IHN0cnVjdHMgbXVz
dCBtYXRjaCB0aGUgV2ViSW5zcGVjdG9yLiogb25lcy4gU2hvdWxkIHJldXNlIHNhbWUgZmlsZSBp
bnN0ZWFkLgorSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0SWQgPSBmdW5jdGlvbih0eXBlLCB2
YWx1ZSwgcGF0aCkKIHsKLSAgICB2YXIgcmVzdWx0ID0ge307Ci0gICAgcmVzdWx0LmluamVjdGVk
U2NyaXB0SWQgPSBpbmplY3RlZFNjcmlwdElkOwotICAgIHJlc3VsdC5vYmplY3RJZCA9IG9iamVj
dElkOwotICAgIHJlc3VsdC50eXBlID0gSW5qZWN0ZWRTY3JpcHQuX3R5cGUob2JqZWN0KTsKLSAg
ICBpZiAocmVzdWx0LnR5cGUgPT09ICJhcnJheSIpCi0gICAgICAgIHJlc3VsdC5wcm9wZXJ0eUxl
bmd0aCA9IG9iamVjdC5sZW5ndGg7CisgICAgdGhpcy5pbmplY3RlZFNjcmlwdElkID0gaW5qZWN0
ZWRTY3JpcHRJZDsKKyAgICB0aGlzLnR5cGUgPSB0eXBlOworICAgIHRoaXMudmFsdWUgPSB2YWx1
ZTsKKyAgICB0aGlzLnBhdGggPSBwYXRoIHx8IFtdOworfQogCi0gICAgdmFyIHR5cGUgPSB0eXBl
b2Ygb2JqZWN0OwotICAgIAotICAgIHJlc3VsdC5oYXNDaGlsZHJlbiA9ICh0eXBlID09PSAib2Jq
ZWN0IiAmJiBvYmplY3QgIT09IG51bGwgJiYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCkubGVuZ3RoIHx8ICEhb2JqZWN0Ll9fcHJvdG9fXykpIHx8IHR5cGUgPT09ICJmdW5jdGlv
biI7CitJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QgPSBmdW5jdGlvbihvYmplY3RJZCwgdHlw
ZSwgZGVzY3JpcHRpb24sIGhhc0NoaWxkcmVuKQoreworICAgIHRoaXMub2JqZWN0SWQgPSBvYmpl
Y3RJZDsKKyAgICB0aGlzLnR5cGUgPSB0eXBlOworICAgIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNj
cmlwdGlvbjsKKyAgICB0aGlzLmhhc0NoaWxkcmVuID0gaGFzQ2hpbGRyZW47Cit9CisKK0luamVj
dGVkU2NyaXB0LlJlbW90ZU9iamVjdC5mcm9tRXhjZXB0aW9uID0gZnVuY3Rpb24oZSkKK3sKKyAg
ICByZXR1cm4gbmV3IEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdChudWxsLCAiZXJyb3IiLCBl
LnRvU3RyaW5nKCkpOworfQorCitJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QuZnJvbU9iamVj
dCA9IGZ1bmN0aW9uKG9iamVjdCwgb2JqZWN0SWQsIGFiYnJldmlhdGUpCit7CisgICAgdmFyIHR5
cGUgPSBJbmplY3RlZFNjcmlwdC5fdHlwZShvYmplY3QpOworICAgIHZhciByYXdUeXBlID0gdHlw
ZW9mIG9iamVjdDsKKyAgICB2YXIgaGFzQ2hpbGRyZW4gPSAocmF3VHlwZSA9PT0gIm9iamVjdCIg
JiYgb2JqZWN0ICE9PSBudWxsICYmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qp
Lmxlbmd0aCB8fCAhIW9iamVjdC5fX3Byb3RvX18pKSB8fCByYXdUeXBlID09PSAiZnVuY3Rpb24i
OworICAgIHZhciBkZXNjcmlwdGlvbiA9ICIiOwogICAgIHRyeSB7Ci0gICAgICAgIHJlc3VsdC5k
ZXNjcmlwdGlvbiA9IEluamVjdGVkU2NyaXB0Ll9kZXNjcmliZShvYmplY3QsIGFiYnJldmlhdGUp
OworICAgICAgICB2YXIgZGVzY3JpcHRpb24gPSBJbmplY3RlZFNjcmlwdC5fZGVzY3JpYmUob2Jq
ZWN0LCBhYmJyZXZpYXRlKTsKKyAgICAgICAgcmV0dXJuIG5ldyBJbmplY3RlZFNjcmlwdC5SZW1v
dGVPYmplY3Qob2JqZWN0SWQsIHR5cGUsIGRlc2NyaXB0aW9uLCBoYXNDaGlsZHJlbik7CiAgICAg
fSBjYXRjaCAoZSkgewotICAgICAgICByZXN1bHQuZXJyb3JUZXh0ID0gZS50b1N0cmluZygpOwor
ICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0LmZyb21FeGNlcHRpb24o
ZSk7CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEluamVjdGVkU2NyaXB0LmV2YWx1
YXRlT25TZWxmID0gZnVuY3Rpb24oZnVuY0JvZHksIGFyZ3MpCkBAIC00NDIsMTMgKzQ0NCwxNSBA
QCBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgc2NvcGVDaGFpbi5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAg
dmFyIHNjb3BlVHlwZSA9IGNhbGxGcmFtZS5zY29wZVR5cGUoaSk7CiAgICAgICAgICAgICB2YXIg
c2NvcGVPYmplY3QgPSBzY29wZUNoYWluW2ldOwotICAgICAgICAgICAgdmFyIHNjb3BlT2JqZWN0
UHJveHkgPSBJbmplY3RlZFNjcmlwdC5jcmVhdGVQcm94eU9iamVjdChzY29wZU9iamVjdCwgeyBj
YWxsRnJhbWU6IHRoaXMuaWQsIGNoYWluSW5kZXg6IGkgfSwgdHJ1ZSk7CisgICAgICAgICAgICB2
YXIgc2NvcGVPYmplY3RJZCA9IG5ldyBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3RJZCgic2Nv
cGVPYmplY3QiLCB7IGNhbGxGcmFtZTogdGhpcy5pZCwgY2hhaW5JbmRleDogaSB9KTsKKyAgICAg
ICAgICAgIHZhciBzY29wZU9iamVjdFByb3h5ID0gSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0
LmZyb21PYmplY3Qoc2NvcGVPYmplY3QsIHNjb3BlT2JqZWN0SWQsIHRydWUpOwogCiAgICAgICAg
ICAgICBzd2l0Y2goc2NvcGVUeXBlKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBMT0NBTF9TQ09Q
RTogewogICAgICAgICAgICAgICAgICAgICBmb3VuZExvY2FsU2NvcGUgPSB0cnVlOwogICAgICAg
ICAgICAgICAgICAgICBzY29wZU9iamVjdFByb3h5LmlzTG9jYWwgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICBzY29wZU9iamVjdFByb3h5LnRoaXNPYmplY3QgPSBJbmplY3RlZFNjcmlwdC5j
cmVhdGVQcm94eU9iamVjdChjYWxsRnJhbWUudGhpc09iamVjdCwgeyBjYWxsRnJhbWU6IHRoaXMu
aWQsIHRoaXNPYmplY3Q6IHRydWUgfSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHZhciB0
aGlzT2JqZWN0SWQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0SWQoInNjb3BlT2Jq
ZWN0IiwgeyBjYWxsRnJhbWU6IHRoaXMuaWQsIHRoaXNPYmplY3Q6IHRydWUgfSk7CisgICAgICAg
ICAgICAgICAgICAgIHNjb3BlT2JqZWN0UHJveHkudGhpc09iamVjdCA9IEluamVjdGVkU2NyaXB0
LlJlbW90ZU9iamVjdC5mcm9tT2JqZWN0KGNhbGxGcmFtZS50aGlzT2JqZWN0LCB0aGlzT2JqZWN0
SWQsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgY2FzZSBDTE9TVVJFX1NDT1BFOiB7CkBAIC01MzQsNyArNTM4LDEw
IEBAIEluamVjdGVkU2NyaXB0Ll9kZXNjcmliZSA9IGZ1bmN0aW9uKG9iaiwgYWJicmV2aWF0ZWQp
CiAgICAgY2FzZSAib2JqZWN0IjoKICAgICBjYXNlICJub2RlIjoKICAgICBjYXNlICJhcnJheSI6
Ci0gICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5fY2xhc3NOYW1lKG9iaik7CisgICAgICAg
IHZhciBjbGFzc05hbWUgPSBJbmplY3RlZFNjcmlwdC5fY2xhc3NOYW1lKG9iaik7CisgICAgICAg
IGlmICh0eXBlb2Ygb2JqLmxlbmd0aCA9PT0gIm51bWJlciIpCisgICAgICAgICAgICBjbGFzc05h
bWUgKz0gIlsiICsgb2JqLmxlbmd0aCArICJdIjsKKyAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTsK
ICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICBpZiAoIWFiYnJldmlhdGVkKQogICAgICAgICAg
ICAgcmV0dXJuIG9iajsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9P
YmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9P
YmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qcwppbmRleCBhMzJlNzk5Li5hYWI5NTQ2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UHJvcGVydGllc1NlY3Rpb24u
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdFByb3BlcnRpZXNTZWN0
aW9uLmpzCkBAIC01MCw3ICs1MCw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0aWVzU2Vj
dGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
c2VsZi51cGRhdGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpOwogICAgICAgICB9OwotICAgICAgICBJ
bmplY3RlZFNjcmlwdEFjY2Vzcy5nZXQodGhpcy5vYmplY3QuaW5qZWN0ZWRTY3JpcHRJZCkuZ2V0
UHJvcGVydGllcyh0aGlzLm9iamVjdCwgdGhpcy5pZ25vcmVIYXNPd25Qcm9wZXJ0eSwgdHJ1ZSwg
Y2FsbGJhY2spOworICAgICAgICB0aGlzLm9iamVjdC5nZXRQcm9wZXJ0aWVzKHRoaXMuaWdub3Jl
SGFzT3duUHJvcGVydHksIHRydWUsIGNhbGxiYWNrKTsKICAgICB9LAogCiAgICAgdXBkYXRlUHJv
cGVydGllczogZnVuY3Rpb24ocHJvcGVydGllcywgcm9vdFRyZWVFbGVtZW50Q29uc3RydWN0b3Is
IHJvb3RQcm9wZXJ0eUNvbXBhcmVyKQpAQCAtNjksOCArNjksMTAgQEAgV2ViSW5zcGVjdG9yLk9i
amVjdFByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLnByb3Bl
cnRpZXNUcmVlT3V0bGluZS5yZW1vdmVDaGlsZHJlbigpOwogCi0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7ICsraSkKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBwcm9wZXJ0aWVzW2ld
LnBhcmVudE9iamVjdCA9IHRoaXMub2JqZWN0OwogICAgICAgICAgICAgdGhpcy5wcm9wZXJ0aWVz
VHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQobmV3IHJvb3RUcmVlRWxlbWVudENvbnN0cnVjdG9yKHBy
b3BlcnRpZXNbaV0pKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICghdGhpcy5wcm9wZXJ0aWVz
VHJlZU91dGxpbmUuY2hpbGRyZW4ubGVuZ3RoKSB7CiAgICAgICAgICAgICB2YXIgdGl0bGUgPSAi
PGRpdiBjbGFzcz1cImluZm9cIj4iICsgdGhpcy5lbXB0eVBsYWNlaG9sZGVyICsgIjwvZGl2PiI7
CkBAIC0xNTIsNyArMTU0LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnR5VHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IHRo
aXMudHJlZU91dGxpbmUuc2VjdGlvbi50cmVlRWxlbWVudENvbnN0cnVjdG9yKHByb3BlcnRpZXNb
aV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHRB
Y2Nlc3MuZ2V0KHRoaXMucHJvcGVydHkudmFsdWUuaW5qZWN0ZWRTY3JpcHRJZCkuZ2V0UHJvcGVy
dGllcyh0aGlzLnByb3BlcnR5LnZhbHVlLCBmYWxzZSwgdHJ1ZSwgY2FsbGJhY2suYmluZCh0aGlz
KSk7CisgICAgICAgIHRoaXMucHJvcGVydHkudmFsdWUuZ2V0T3duUHJvcGVydGllcyh0cnVlLCBj
YWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgb25kYmxjbGljazogZnVuY3Rpb24o
ZXZlbnQpCkBAIC0xNzgsMTEgKzE4MCw5IEBAIFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy52YWx1ZUVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIHRoaXMudmFsdWVFbGVtZW50LmNs
YXNzTmFtZSA9ICJ2YWx1ZSI7CiAgICAgICAgIHRoaXMudmFsdWVFbGVtZW50LnRleHRDb250ZW50
ID0gdGhpcy5wcm9wZXJ0eS52YWx1ZS5kZXNjcmlwdGlvbjsKLSAgICAgICAgaWYgKHR5cGVvZiB0
aGlzLnByb3BlcnR5LnZhbHVlLnByb3BlcnR5TGVuZ3RoICE9PSAidW5kZWZpbmVkIikKLSAgICAg
ICAgICAgIHRoaXMudmFsdWVFbGVtZW50LnRleHRDb250ZW50ICs9ICIgKCIgKyB0aGlzLnByb3Bl
cnR5LnZhbHVlLnByb3BlcnR5TGVuZ3RoICsgIikiOwogICAgICAgICBpZiAodGhpcy5wcm9wZXJ0
eS5pc0dldHRlcikKICAgICAgICAgICAgIHRoaXMudmFsdWVFbGVtZW50LmFkZFN0eWxlQ2xhc3Mo
ImRpbW1lZCIpOwotICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5pc0Vycm9yKQorICAgICAgICBp
ZiAodGhpcy5wcm9wZXJ0eS52YWx1ZS5pc0Vycm9yKCkpCiAgICAgICAgICAgICB0aGlzLnZhbHVl
RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJlcnJvciIpOwogCiAgICAgICAgIHRoaXMubGlzdEl0ZW1F
bGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CkBAIC0yNjAsNyArMjYwLDcgQEAgV2ViSW5zcGVjdG9y
Lk9iamVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
IHNlbGYudXBkYXRlU2libGluZ3MoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAgICAg
ICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0KHRoaXMucHJvcGVydHkucGFyZW50T2JqZWN0UHJv
eHkuaW5qZWN0ZWRTY3JpcHRJZCkuc2V0UHJvcGVydHlWYWx1ZSh0aGlzLnByb3BlcnR5LnBhcmVu
dE9iamVjdFByb3h5LCB0aGlzLnByb3BlcnR5Lm5hbWUsIGV4cHJlc3Npb24udHJpbSgpLCBjYWxs
YmFjayk7CisgICAgICAgIHRoaXMucHJvcGVydHkucGFyZW50T2JqZWN0LnNldFByb3BlcnR5VmFs
dWUodGhpcy5wcm9wZXJ0eS5uYW1lLCBleHByZXNzaW9uLnRyaW0oKSwgY2FsbGJhY2spOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdFBy
b3h5LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdFByb3h5LmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjEzOWM2Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQcm94eS5qcworKysgL2Rldi9udWxsCkBAIC0xLDcw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1XZWJJbnNwZWN0b3IuT2JqZWN0UHJveHkgPSBmdW5jdGlvbihpbmplY3RlZFNjcmlw
dElkLCBvYmplY3RJZCwgcGF0aCwgZGVzY3JpcHRpb24sIGhhc0NoaWxkcmVuKQotewotICAgIHRo
aXMub2JqZWN0SWQgPSBvYmplY3RJZDsKLSAgICB0aGlzLmluamVjdGVkU2NyaXB0SWQgPSBpbmpl
Y3RlZFNjcmlwdElkOwotICAgIHRoaXMucGF0aCA9IHBhdGggfHwgW107Ci0gICAgdGhpcy5kZXNj
cmlwdGlvbiA9IGRlc2NyaXB0aW9uOwotICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBoYXNDaGlsZHJl
bjsKLX0KLQotV2ViSW5zcGVjdG9yLk9iamVjdFByb3h5LndyYXBQcmltaXRpdmVWYWx1ZSA9IGZ1
bmN0aW9uKHZhbHVlKQotewotICAgIHZhciBwcm94eSA9IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0
UHJveHkoKTsKLSAgICBwcm94eS50eXBlID0gdHlwZW9mIHZhbHVlOwotICAgIHByb3h5LmRlc2Ny
aXB0aW9uID0gdmFsdWU7Ci0gICAgcmV0dXJuIHByb3h5OwotfQotCi1XZWJJbnNwZWN0b3IuT2Jq
ZWN0UHJveHkuZ2V0UHJvcGVydGllc0FzeW5jID0gZnVuY3Rpb24ob2JqZWN0UHJveHksIHByb3Bl
cnRpZXNUb1F1ZXJ5Rm9yLCBjYWxsYmFjaykKLXsKLSAgICBmdW5jdGlvbiBjcmVhdGVQcm9wZXJ0
aWVzTWFwVGhlbkNhbGxiYWNrKHByb3BlcnRpZXNQYXlsb2FkKQotICAgIHsKLSAgICAgICAgaWYg
KCFwcm9wZXJ0aWVzUGF5bG9hZCkgewotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzUGF5bG9hZC5sZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgIGlmIChwcm9wZXJ0aWVzVG9RdWVyeUZvci5pbmRleE9mKHByb3BlcnRpZXNQYXls
b2FkW2ldLm5hbWUpICE9PSAtMSkKLSAgICAgICAgICAgICAgICByZXN1bHRbcHJvcGVydGllc1Bh
eWxvYWRbaV0ubmFtZV0gPSBwcm9wZXJ0aWVzUGF5bG9hZFtpXS52YWx1ZS5kZXNjcmlwdGlvbjsK
LSAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICB9OwotICAgIEluamVjdGVkU2NyaXB0QWNj
ZXNzLmdldChvYmplY3RQcm94eS5pbmplY3RlZFNjcmlwdElkKS5nZXRQcm9wZXJ0aWVzKG9iamVj
dFByb3h5LCB0cnVlLCBmYWxzZSwgY3JlYXRlUHJvcGVydGllc01hcFRoZW5DYWxsYmFjayk7Ci19
Ci0KLVdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0eVByb3h5ID0gZnVuY3Rpb24obmFtZSwgdmFs
dWUpCi17Ci0gICAgdGhpcy5uYW1lID0gbmFtZTsKLSAgICB0aGlzLnZhbHVlID0gdmFsdWU7Ci19
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1NpZGVi
YXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTaWRlYmFy
UGFuZS5qcwppbmRleCA5ZGY2NDQ4Li5kNjQ4ODFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanMKQEAgLTUxLDE0ICs1MSwx
NCBAQCBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHZhciBwYXRoID0gW107CiAgICAgICAgICAgICAvLyBHZXQgYXJyYXkgb2YgcHJv
dG90eXBlIHVzZXItZnJpZW5kbHkgbmFtZXMuCiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHByb3RvdHlwZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgcHJvdG90
eXBlID0gbmV3IFdlYkluc3BlY3Rvci5PYmplY3RQcm94eShub2RlLmluamVjdGVkU2NyaXB0SWQs
IG5vZGUuaWQsIHBhdGguc2xpY2UoKSk7CisgICAgICAgICAgICAgICAgdmFyIHByb3RvdHlwZSA9
IG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21Ob2RlKG5vZGUsIHBhdGguc2xpY2Uo
KSk7CiAgICAgICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVj
dFByb3BlcnRpZXNTZWN0aW9uKHByb3RvdHlwZSwgcHJvdG90eXBlc1tpXSwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJQcm90b3R5cGUiKSk7CiAgICAgICAgICAgICAgICAgc2VsZi5zZWN0aW9ucy5w
dXNoKHNlY3Rpb24pOwogICAgICAgICAgICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoc2VjdGlvbi5l
bGVtZW50KTsKICAgICAgICAgICAgICAgICBwYXRoLnB1c2goIl9fcHJvdG9fXyIpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9OwotICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXQobm9k
ZS5pbmplY3RlZFNjcmlwdElkKS5nZXRQcm90b3R5cGVzKG5vZGUuaWQsIGNhbGxiYWNrKTsKKyAg
ICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0KC1ub2RlLmlkKS5nZXRQcm90b3R5cGVzKG5v
ZGUuaWQsIGNhbGxiYWNrKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZW1vdGVPYmplY3QuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVtb3RlT2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZi
MjE2NzcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVt
b3RlT2JqZWN0LmpzCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdElk
ID0gZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRJZCwgdHlwZSwgdmFsdWUsIHBhdGgpCit7CisgICAg
dGhpcy5pbmplY3RlZFNjcmlwdElkID0gaW5qZWN0ZWRTY3JpcHRJZDsKKyAgICB0aGlzLnR5cGUg
PSB0eXBlOworICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB0aGlzLnBhdGggPSBwYXRoIHx8
IFtdOworfQorCitXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0SWQs
IHR5cGUsIGRlc2NyaXB0aW9uLCBoYXNDaGlsZHJlbikKK3sKKyAgICB0aGlzLl9vYmplY3RJZCA9
IG9iamVjdElkOworICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgIHRoaXMuX2Rlc2NyaXB0aW9u
ID0gZGVzY3JpcHRpb247CisgICAgdGhpcy5faGFzQ2hpbGRyZW4gPSBoYXNDaGlsZHJlbjsKK30K
KworV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUgPSBmdW5jdGlv
bih2YWx1ZSkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QobnVs
bCwgdHlwZW9mIHZhbHVlLCB2YWx1ZSk7Cit9CisKK1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qu
ZnJvbU5vZGUgPSBmdW5jdGlvbihub2RlLCBwYXRoKQoreworICAgIHZhciBvYmplY3RJZCA9IG5l
dyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0SWQoLW5vZGUuaWQsICJub2RlIiwgbm9kZS5pZCwg
cGF0aCk7CisgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KG9iamVjdElk
LCAibm9kZSIsIGFwcHJvcHJpYXRlU2VsZWN0b3JGb3JOb2RlKG5vZGUpLCB0cnVlKTsKK30KKwor
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZCA9IGZ1bmN0aW9uKHBheWxvYWQp
Cit7CisgICAgaWYgKHR5cGVvZiBwYXlsb2FkID09PSAib2JqZWN0IikKKyAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KHBheWxvYWQub2JqZWN0SWQsIHBheWxvYWQu
dHlwZSwgcGF5bG9hZC5kZXNjcmlwdGlvbiwgcGF5bG9hZC5oYXNDaGlsZHJlbik7CisgICAgLy8g
RklYTUU6IG1ha2Ugc3VyZSB3ZSBvbmx5IGdldCBoZXJlIHdpdGggcmVhbCBwYXlsb2FkcyBpbiB0
aGUgbmV3IERlYnVnZ2VyQWdlbnQuanMuCisgICAgcmV0dXJuIHBheWxvYWQ7Cit9CisKK1dlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QudHlwZSA9IGZ1bmN0aW9uKHJlbW90ZU9iamVjdCkKK3sKKyAg
ICBpZiAocmVtb3RlT2JqZWN0ID09PSBudWxsKQorICAgICAgICByZXR1cm4gIm51bGwiOworCisg
ICAgdmFyIHR5cGUgPSB0eXBlb2YgcmVtb3RlT2JqZWN0OworICAgIGlmICh0eXBlICE9PSAib2Jq
ZWN0IiAmJiB0eXBlICE9PSAiZnVuY3Rpb24iKQorICAgICAgICByZXR1cm4gdHlwZTsKKworICAg
IHJldHVybiByZW1vdGVPYmplY3QudHlwZTsKK30KKworV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dC5wcm90b3R5cGUgPSB7CisgICAgZ2V0IG9iamVjdElkKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9vYmplY3RJZDsKKyAgICB9LAorCisgICAgZ2V0IHR5cGUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3R5cGU7CisgICAgfSwKKworICAgIGdldCBkZXNjcmlwdGlvbigpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZGVzY3JpcHRpb247CisgICAgfSwKKworICAgIGdl
dCBoYXNDaGlsZHJlbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faGFzQ2hpbGRyZW47
CisgICAgfSwKKworICAgIGlzRXJyb3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl90eXBlID09PSAiZXJyb3IiOworICAgIH0sCisKKyAgICBnZXRQcm9wZXJ0eVZhbHVl
RGVzY3JpcHRpb25zOiBmdW5jdGlvbihwcm9wZXJ0aWVzVG9RdWVyeUZvciwgY2FsbGJhY2spCisg
ICAgeworICAgICAgICBmdW5jdGlvbiBjcmVhdGVQcm9wZXJ0aWVzTWFwVGhlbkNhbGxiYWNrKHBy
b3BlcnRpZXNQYXlsb2FkKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXByb3BlcnRpZXNQ
YXlsb2FkKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICB2YXIgcmVzdWx0ID0ge307
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BlcnRpZXNQYXlsb2FkLmxlbmd0
aDsgKytpKQorICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzVG9RdWVyeUZvci5pbmRleE9m
KHByb3BlcnRpZXNQYXlsb2FkW2ldLm5hbWUpICE9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0W3Byb3BlcnRpZXNQYXlsb2FkW2ldLm5hbWVdID0gcHJvcGVydGllc1BheWxvYWRbaV0u
dmFsdWUuZGVzY3JpcHRpb247CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAg
ICB9CisgICAgICAgIHRoaXMuZ2V0UHJvcGVydGllcyh0cnVlLCBmYWxzZSwgY3JlYXRlUHJvcGVy
dGllc01hcFRoZW5DYWxsYmFjayk7CisgICAgfSwKKworICAgIGdldE93blByb3BlcnRpZXM6IGZ1
bmN0aW9uKGFiYnJldmlhdGUsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5nZXRQcm9w
ZXJ0aWVzKGZhbHNlLCBhYmJyZXZpYXRlLCBjYWxsYmFjayk7CisgICAgfSwKKworICAgIGdldFBy
b3BlcnRpZXM6IGZ1bmN0aW9uKGlnbm9yZUhhc093blByb3BlcnR5LCBhYmJyZXZpYXRlLCBjYWxs
YmFjaykKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fb2JqZWN0SWQpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrKFtdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBm
dW5jdGlvbiByZW1vdGVPYmplY3RCaW5kZXIocHJvcGVydGllcykKKyAgICAgICAgeworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IHByb3BlcnRpZXMgJiYgaSA8IHByb3BlcnRpZXMubGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICAgICAgcHJvcGVydGllc1tpXS52YWx1ZSA9IFdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocHJvcGVydGllc1tpXS52YWx1ZSk7CisgICAgICAg
ICAgICBjYWxsYmFjayhwcm9wZXJ0aWVzKTsKKyAgICAgICAgfQorICAgICAgICBJbmplY3RlZFNj
cmlwdEFjY2Vzcy5nZXQodGhpcy5fb2JqZWN0SWQuaW5qZWN0ZWRTY3JpcHRJZCkuZ2V0UHJvcGVy
dGllcyh0aGlzLl9vYmplY3RJZCwgaWdub3JlSGFzT3duUHJvcGVydHksIGFiYnJldmlhdGUsIHJl
bW90ZU9iamVjdEJpbmRlcik7CisgICAgfSwKKworICAgIHNldFByb3BlcnR5VmFsdWU6IGZ1bmN0
aW9uKG5hbWUsIHZhbHVlLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fb2Jq
ZWN0SWQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXQodGhpcy5fb2Jq
ZWN0SWQuaW5qZWN0ZWRTY3JpcHRJZCkuc2V0UHJvcGVydHlWYWx1ZSh0aGlzLl9vYmplY3RJZCwg
bmFtZSwgdmFsdWUsIGNhbGxiYWNrKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5SZW1vdGVP
YmplY3RQcm9wZXJ0eSA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKQoreworICAgIHRoaXMubmFtZSA9
IG5hbWU7CisgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Njb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY29wZUNoYWluU2lkZWJhclBhbmUuanMKaW5kZXggZmRmY2QzOC4u
ZDMxOTBhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njb3BlQ2hh
aW5TaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NvcGVD
aGFpblNpZGViYXJQYW5lLmpzCkBAIC02MCw3ICs2MCw3IEBAIFdlYkluc3BlY3Rvci5TY29wZUNo
YWluU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGVtcHR5UGxhY2Vo
b2xkZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIFZhcmlhYmxlcyIpOwogICAgICAgICAg
ICAgICAgIHN1YnRpdGxlID0gbnVsbDsKICAgICAgICAgICAgICAgICBpZiAoc2NvcGVPYmplY3RQ
cm94eS50aGlzT2JqZWN0KQotICAgICAgICAgICAgICAgICAgICBleHRyYVByb3BlcnRpZXMgPSBb
IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydHlQcm94eSgidGhpcyIsIHNjb3BlT2JqZWN0
UHJveHkudGhpc09iamVjdCkgXTsKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFQcm9wZXJ0aWVz
ID0gWyBuZXcgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5KCJ0aGlzIiwgV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChzY29wZU9iamVjdFByb3h5LnRoaXNPYmpl
Y3QpKSBdOwogICAgICAgICAgICAgfSBlbHNlIGlmIChzY29wZU9iamVjdFByb3h5LmlzQ2xvc3Vy
ZSkgewogICAgICAgICAgICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbG9z
dXJlIik7CiAgICAgICAgICAgICAgICAgZW1wdHlQbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTm8gVmFyaWFibGVzIik7CkBAIC03Nyw3ICs3Nyw3IEBAIFdlYkluc3BlY3Rvci5T
Y29wZUNoYWluU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCF0aXRs
ZSB8fCB0aXRsZSA9PT0gc3VidGl0bGUpCiAgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBudWxs
OwogCi0gICAgICAgICAgICB2YXIgc2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJv
cGVydGllc1NlY3Rpb24oc2NvcGVPYmplY3RQcm94eSwgdGl0bGUsIHN1YnRpdGxlLCBlbXB0eVBs
YWNlaG9sZGVyLCB0cnVlLCBleHRyYVByb3BlcnRpZXMsIFdlYkluc3BlY3Rvci5TY29wZVZhcmlh
YmxlVHJlZUVsZW1lbnQpOworICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBuZXcgV2ViSW5zcGVj
dG9yLk9iamVjdFByb3BlcnRpZXNTZWN0aW9uKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJv
bVBheWxvYWQoc2NvcGVPYmplY3RQcm94eSksIHRpdGxlLCBzdWJ0aXRsZSwgZW1wdHlQbGFjZWhv
bGRlciwgdHJ1ZSwgZXh0cmFQcm9wZXJ0aWVzLCBXZWJJbnNwZWN0b3IuU2NvcGVWYXJpYWJsZVRy
ZWVFbGVtZW50KTsKICAgICAgICAgICAgIHNlY3Rpb24uZWRpdEluU2VsZWN0ZWRDYWxsRnJhbWVX
aGVuUGF1c2VkID0gdHJ1ZTsKICAgICAgICAgICAgIHNlY3Rpb24ucGFuZSA9IHRoaXM7CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDQ0YzFkYmEu
LjE2ZTYwY2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRz
UGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5q
cwpAQCAtMzg3LDkgKzM4Nyw5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdXBkYXRlSW50ZXJmYWNlID0gdHJ1ZTsKIAogICAgICAgICB2YXIg
c2VsZiA9IHRoaXM7Ci0gICAgICAgIGZ1bmN0aW9uIHVwZGF0aW5nQ2FsbGJhY2tXcmFwcGVyKHJl
c3VsdCwgZXhjZXB0aW9uKQorICAgICAgICBmdW5jdGlvbiB1cGRhdGluZ0NhbGxiYWNrV3JhcHBl
cihyZXN1bHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCwgZXhjZXB0
aW9uKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CiAgICAgICAgICAgICBpZiAodXBk
YXRlSW50ZXJmYWNlKQogICAgICAgICAgICAgICAgIHNlbGYuc2lkZWJhclBhbmVzLnNjb3BlY2hh
aW4udXBkYXRlKHNlbGVjdGVkQ2FsbEZyYW1lKTsKICAgICAgICAgfQpAQCAtNDAxLDcgKzQwMSw3
IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBmdW5j
dGlvbiBldmFsQ2FsbGJhY2socmVzdWx0KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAocmVz
dWx0KQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC52YWx1ZSwgcmVzdWx0LmlzRXhj
ZXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhXZWJJbnNwZWN0b3IuUmVtb3RlT2Jq
ZWN0LmZyb21QYXlsb2FkKHJlc3VsdCkpOwogICAgICAgICB9CiAgICAgICAgIEluamVjdGVkU2Ny
aXB0QWNjZXNzLmdldChjYWxsRnJhbWUuaW5qZWN0ZWRTY3JpcHRJZCkuZXZhbHVhdGVJbkNhbGxG
cmFtZShjYWxsRnJhbWUuaWQsIGNvZGUsIG9iamVjdEdyb3VwLCBldmFsQ2FsbGJhY2spOwogICAg
IH0sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKaW5kZXggNzNj
M2UyYS4uMDFhOGVjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nv
dXJjZUZyYW1lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFt
ZS5qcwpAQCAtNjI1LDkgKzYyNSw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBwb3B1cENvbnRlbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlbW92ZSIsIGtpbGxIaWRlUG9wdXBUaW1lci5iaW5kKHRoaXMpLCB0cnVlKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlQ2FsbGJhY2socmVzdWx0LCBleGNlcHRp
b24pCisgICAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlQ2FsbGJhY2socmVzdWx0KQogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0Vy
cm9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKCFXZWJJbnNw
ZWN0b3IucGFuZWxzLnNjcmlwdHMucGF1c2VkKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTY5OSwxMSArNjk5LDExIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFyIGV4cHJlc3Npb24gPSBzZWxlY3Rp
b24uZ2V0UmFuZ2VBdCgwKS50b1N0cmluZygpLnRyaW0oKTsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LnBhbmVscy5zY3JpcHRzLmV2YWx1YXRlSW5TZWxlY3RlZENhbGxGcmFtZShleHByZXNzaW9uLCBm
YWxzZSwgImNvbnNvbGUiLCBmdW5jdGlvbihyZXN1bHQsIGV4Y2VwdGlvbikgeworICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuZXZhbHVhdGVJblNlbGVjdGVkQ2FsbEZyYW1lKGV4
cHJlc3Npb24sIGZhbHNlLCAiY29uc29sZSIsIGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLnNob3dDb25zb2xlKCk7CiAgICAgICAgICAgICB2YXIgY29tbWFuZE1l
c3NhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kKGV4cHJlc3Npb24pOwogICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkTWVzc2FnZShjb21tYW5kTWVzc2FnZSk7
Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRNZXNzYWdlKG5ldyBXZWJJbnNw
ZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQocmVzdWx0LCBleGNlcHRpb24sIGNvbW1hbmRNZXNz
YWdlKSk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRNZXNzYWdlKG5ldyBX
ZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQocmVzdWx0LCBjb21tYW5kTWVzc2FnZSkp
OwogICAgICAgICB9KTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5qcwppbmRleCBiNTMwYWI2
Li4yOGRhZDIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hF
eHByZXNzaW9uc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XYXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMKQEAgLTkwLDI0ICs5MCwxMCBAQCBXZWJJ
bnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NlY3Rpb24uTmV3V2F0Y2hFeHByZXNzaW9uID0gIlx4
QTAiOwogV2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTZWN0aW9uLnByb3RvdHlwZSA9IHsK
ICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGFwcGVuZFJl
c3VsdChleHByZXNzaW9uLCB3YXRjaEluZGV4LCByZXN1bHQsIGV4Y2VwdGlvbikKKyAgICAgICAg
ZnVuY3Rpb24gYXBwZW5kUmVzdWx0KGV4cHJlc3Npb24sIHdhdGNoSW5kZXgsIHJlc3VsdCkKICAg
ICAgICAgewotICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgIC8v
IEV4Y2VwdGlvbiByZXN1bHRzIGFyZSBub3Qgd3JhcHBlcnMsIGJ1dCB0ZXh0IG1lc3NhZ2VzLgot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IFdlYkluc3BlY3Rvci5PYmplY3RQcm94eS53cmFwUHJp
bWl0aXZlVmFsdWUocmVzdWx0KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LnR5cGUg
PT09ICJzdHJpbmciKSB7Ci0gICAgICAgICAgICAgICAgLy8gRXZhbHVhdGlvbiByZXN1bHQgaXMg
aW50ZW50aW9uYWxseSBub3QgYWJicmV2aWF0ZWQuIEhvd2V2ZXIsIHdlJ2QgbGlrZSB0byBkaXN0
aW5ndWlzaCBiZXR3ZWVuIG51bGwgYW5kICJudWxsIgotICAgICAgICAgICAgICAgIHJlc3VsdC5k
ZXNjcmlwdGlvbiA9ICJcIiIgKyByZXN1bHQuZGVzY3JpcHRpb24gKyAiXCIiOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVj
dFByb3BlcnR5UHJveHkoZXhwcmVzc2lvbiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHZhciBwcm9w
ZXJ0eSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0UHJvcGVydHkoZXhwcmVzc2lvbiwg
cmVzdWx0KTsKICAgICAgICAgICAgIHByb3BlcnR5LndhdGNoSW5kZXggPSB3YXRjaEluZGV4Owot
ICAgICAgICAgICAgcHJvcGVydHkuaXNFeGNlcHRpb24gPSBleGNlcHRpb247Ci0KLSAgICAgICAg
ICAgIC8vIEZvciBuZXdseSBhZGRlZCwgZW1wdHkgZXhwcmVzc2lvbnMsIHNldCBkZXNjcmlwdGlv
biB0byAiIiwKLSAgICAgICAgICAgIC8vIHNpbmNlIG90aGVyd2lzZSB5b3UgZ2V0IERPTVdpbmRv
dwotICAgICAgICAgICAgaWYgKHByb3BlcnR5Lm5hbWUgPT09IFdlYkluc3BlY3Rvci5XYXRjaEV4
cHJlc3Npb25zU2VjdGlvbi5OZXdXYXRjaEV4cHJlc3Npb24pIAotICAgICAgICAgICAgICAgIHBy
b3BlcnR5LnZhbHVlLmRlc2NyaXB0aW9uID0gIiI7CiAKICAgICAgICAgICAgIC8vIFRvIGNsYXJp
Znkgd2hhdCdzIGdvaW5nIG9uIGhlcmU6IAogICAgICAgICAgICAgLy8gSW4gdGhlIG91dGVyIGZ1
bmN0aW9uLCB3ZSBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBwcm9wZXJ0aWVzCkBAIC0yMjIsNyAr
MjA4LDcgQEAgV2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvblRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0eVRyZWVFbGVt
ZW50LnByb3RvdHlwZS51cGRhdGUuY2FsbCh0aGlzKTsKIAotICAgICAgICBpZiAodGhpcy5wcm9w
ZXJ0eS5pc0V4Y2VwdGlvbikKKyAgICAgICAgaWYgKHRoaXMucHJvcGVydHkudmFsdWUuaXNFcnJv
cigpKQogICAgICAgICAgICAgdGhpcy52YWx1ZUVsZW1lbnQuYWRkU3R5bGVDbGFzcygid2F0Y2gt
ZXhwcmVzc2lvbnMtZXJyb3ItbGV2ZWwiKTsKIAogICAgICAgICB2YXIgZGVsZXRlQnV0dG9uID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmMKaW5kZXggYTU0OTM2Yy4uZmViY2FkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1dlYktpdC5xcmMKQEAgLTUyLDcgKzUyLDYgQEAKICAgICA8ZmlsZT5NZXRyaWNzU2lk
ZWJhclBhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+T2JqZWN0LmpzPC9maWxlPgogICAgIDxmaWxl
Pk9iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzPC9maWxlPgotICAgIDxmaWxlPk9iamVjdFByb3h5
LmpzPC9maWxlPgogICAgIDxmaWxlPlBhbmVsLmpzPC9maWxlPgogICAgIDxmaWxlPlBhbmVsRW5h
YmxlclZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+UGxhY2FyZC5qczwvZmlsZT4KQEAgLTYyLDYg
KzYxLDcgQEAKICAgICA8ZmlsZT5Qcm9maWxlVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5Qcm9w
ZXJ0aWVzU2VjdGlvbi5qczwvZmlsZT4KICAgICA8ZmlsZT5Qcm9wZXJ0aWVzU2lkZWJhclBhbmUu
anM8L2ZpbGU+CisgICAgPGZpbGU+UmVtb3RlT2JqZWN0LmpzPC9maWxlPgogICAgIDxmaWxlPlJl
c291cmNlLmpzPC9maWxlPgogICAgIDxmaWxlPlJlc291cmNlQ2F0ZWdvcnkuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+UmVzb3VyY2VzUGFuZWwuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggNDhlOTViYi4uMTRlMmNkYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtNzMsNyArNzMsNyBAQCBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNpZGViYXJUcmVl
RWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iU2VjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iUHJvcGVydGllc1NlY3Rpb24uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik9iamVjdFByb3h5LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZW1vdGVPYmplY3QuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik9iamVjdFBy
b3BlcnRpZXNTZWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJCcmVha3BvaW50c1NpZGViYXJQYW5lLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDYWxsU3RhY2tTaWRlYmFyUGFuZS5q
cyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRl
eCA0ZThlNjMzLi42ODE2ZDIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMKQEAgLTE0NjcsMTIgKzE0NjcsNiBAQCBXZWJJbnNwZWN0b3IubG9nID0gZnVuY3Rpb24o
bWVzc2FnZSwgbWVzc2FnZUxldmVsKQogICAgIC8vIHJlbWVtYmVyICd0aGlzJyBmb3Igc2V0SW50
ZXJ2YWwoKSBjYWxsYmFjawogICAgIHZhciBzZWxmID0gdGhpczsKIAotICAgIC8vIHJldHVybiBp
bmRpY2F0aW9uIGlmIHdlIGNhbiBhY3R1YWxseSBsb2cgYSBtZXNzYWdlCi0gICAgZnVuY3Rpb24g
aXNMb2dBdmFpbGFibGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZSAmJiBXZWJJbnNwZWN0b3IuT2JqZWN0UHJveHkgJiYgc2VsZi5jb25zb2xlOwot
ICAgIH0KLQogICAgIC8vIGZsdXNoIHRoZSBxdWV1ZSBvZiBwZW5kaW5nIG1lc3NhZ2VzCiAgICAg
ZnVuY3Rpb24gZmx1c2hRdWV1ZSgpCiAgICAgewpAQCAtMTUxMCw3ICsxNTA0LDcgQEAgV2ViSW5z
cGVjdG9yLmxvZyA9IGZ1bmN0aW9uKG1lc3NhZ2UsIG1lc3NhZ2VMZXZlbCkKICAgICAgICAgV2Vi
SW5zcGVjdG9yLmxvZy5yZXBlYXRDb3VudCA9IHJlcGVhdENvdW50OwogCiAgICAgICAgIC8vIENv
bnNvbGVNZXNzYWdlIGV4cGVjdHMgYSBwcm94eSBvYmplY3QKLSAgICAgICAgbWVzc2FnZSA9IG5l
dyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJveHkobnVsbCwgbnVsbCwgW10sIG1lc3NhZ2UsIGZhbHNl
KTsKKyAgICAgICAgbWVzc2FnZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21Q
cmltaXRpdmVWYWx1ZShtZXNzYWdlKTsKIAogICAgICAgICAvLyBwb3N0IHRoZSBtZXNzYWdlCiAg
ICAgICAgIHZhciBtc2cgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKaW5kZXggZGQzZTc2MS4uNjZjZjI4NCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCkBAIC0yNiwxOCArMjYs
NiBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1PYmplY3QucHJveHlUeXBlID0gZnVuY3Rpb24ob2Jq
ZWN0UHJveHkpCi17Ci0gICAgaWYgKG9iamVjdFByb3h5ID09PSBudWxsKQotICAgICAgICByZXR1
cm4gIm51bGwiOwotCi0gICAgdmFyIHR5cGUgPSB0eXBlb2Ygb2JqZWN0UHJveHk7Ci0gICAgaWYg
KHR5cGUgIT09ICJvYmplY3QiICYmIHR5cGUgIT09ICJmdW5jdGlvbiIpCi0gICAgICAgIHJldHVy
biB0eXBlOwotCi0gICAgcmV0dXJuIG9iamVjdFByb3h5LnR5cGU7Ci19Ci0KIE9iamVjdC5wcm9w
ZXJ0aWVzID0gZnVuY3Rpb24ob2JqKQogewogICAgIHZhciBwcm9wZXJ0aWVzID0gW107CkBAIC04
NDcsNyArODM1LDcgQEAgU3RyaW5nLnRva2VuaXplRm9ybWF0U3RyaW5nID0gZnVuY3Rpb24oZm9y
bWF0KQogU3RyaW5nLnN0YW5kYXJkRm9ybWF0dGVycyA9IHsKICAgICBkOiBmdW5jdGlvbihzdWJz
dGl0dXRpb24pCiAgICAgewotICAgICAgICBpZiAodHlwZW9mIHN1YnN0aXR1dGlvbiA9PSAib2Jq
ZWN0IiAmJiBPYmplY3QucHJveHlUeXBlKHN1YnN0aXR1dGlvbikgPT09ICJudW1iZXIiKQorICAg
ICAgICBpZiAodHlwZW9mIHN1YnN0aXR1dGlvbiA9PSAib2JqZWN0IiAmJiBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0LnR5cGUoc3Vic3RpdHV0aW9uKSA9PT0gIm51bWJlciIpCiAgICAgICAgICAg
ICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24uZGVzY3JpcHRpb247CiAgICAgICAgIHN1YnN0
aXR1dGlvbiA9IHBhcnNlSW50KHN1YnN0aXR1dGlvbik7CiAgICAgICAgIHJldHVybiAhaXNOYU4o
c3Vic3RpdHV0aW9uKSA/IHN1YnN0aXR1dGlvbiA6IDA7CkBAIC04NTUsNyArODQzLDcgQEAgU3Ry
aW5nLnN0YW5kYXJkRm9ybWF0dGVycyA9IHsKIAogICAgIGY6IGZ1bmN0aW9uKHN1YnN0aXR1dGlv
biwgdG9rZW4pCiAgICAgewotICAgICAgICBpZiAodHlwZW9mIHN1YnN0aXR1dGlvbiA9PSAib2Jq
ZWN0IiAmJiBPYmplY3QucHJveHlUeXBlKHN1YnN0aXR1dGlvbikgPT09ICJudW1iZXIiKQorICAg
ICAgICBpZiAodHlwZW9mIHN1YnN0aXR1dGlvbiA9PSAib2JqZWN0IiAmJiBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0LnR5cGUoc3Vic3RpdHV0aW9uKSA9PT0gIm51bWJlciIpCiAgICAgICAgICAg
ICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24uZGVzY3JpcHRpb247CiAgICAgICAgIHN1YnN0
aXR1dGlvbiA9IHBhcnNlRmxvYXQoc3Vic3RpdHV0aW9uKTsKICAgICAgICAgaWYgKHN1YnN0aXR1
dGlvbiAmJiB0b2tlbi5wcmVjaXNpb24gPiAtMSkKQEAgLTg2NSw3ICs4NTMsNyBAQCBTdHJpbmcu
c3RhbmRhcmRGb3JtYXR0ZXJzID0gewogCiAgICAgczogZnVuY3Rpb24oc3Vic3RpdHV0aW9uKQog
ICAgIHsKLSAgICAgICAgaWYgKHR5cGVvZiBzdWJzdGl0dXRpb24gPT0gIm9iamVjdCIgJiYgT2Jq
ZWN0LnByb3h5VHlwZShzdWJzdGl0dXRpb24pICE9PSAibnVsbCIpCisgICAgICAgIGlmICh0eXBl
b2Ygc3Vic3RpdHV0aW9uID09ICJvYmplY3QiICYmIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qu
dHlwZShzdWJzdGl0dXRpb24pICE9PSAibnVsbCIpCiAgICAgICAgICAgICBzdWJzdGl0dXRpb24g
PSBzdWJzdGl0dXRpb24uZGVzY3JpcHRpb247CiAgICAgICAgIHJldHVybiBzdWJzdGl0dXRpb247
CiAgICAgfSwK
</data>
<flag name="review"
          id="52729"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64216</attachid>
            <date>2010-08-12 06:23:11 -0700</date>
            <delta_ts>2010-08-12 06:24:44 -0700</delta_ts>
            <desc>[PATCH] Review comments addressed.</desc>
            <filename>comments_addressed</filename>
            <type>text/plain</type>
            <size>61191</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMzU0YzJkLi4wOTQyNmU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDgt
MTIgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYnJ1c2gg
dXAgb2JqZWN0IHByb3hpZXMsIGludHJvZHVjZSByZW1vdGUgb2JqZWN0IG1vZGVsLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM4NDcKKworICAgICAg
ICAqIGluc3BlY3Rvci9jb25zb2xlLWRpci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL2NvbnNvbGUtZGlyLWdsb2JhbC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xl
LWRpci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9u
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWV4cGVj
dGVkLnR4dDoKKworMjAxMC0wOC0xMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBicnVzaCB1cCBvYmplY3QgcHJveGllcywgaW50cm9kdWNlIHJlbW90ZSBv
YmplY3QgbW9kZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00Mzg0NworCisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUtZGlyLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS1kaXItZ2xvYmFsLmh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL2NvbnNvbGUtZGlyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNv
bGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
Y29uc29sZS1mb3JtYXQtZXhwZWN0ZWQudHh0OgorCiAyMDEwLTA4LTEyICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4g
Um9iaW5zb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyLWV4cGVjdGVk
LnR4dAppbmRleCA1ZTkzMTA3Li42NzNmY2MyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS1kaXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jb25zb2xlLWRpci1leHBlY3RlZC50eHQKQEAgLTMsMjQgKzMsMjQgQEAgQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDEwOiBbb2JqZWN0IE5vZGVMaXN0XQogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEx
OiBbb2JqZWN0IFhQYXRoUmVzdWx0XQogVGVzdHMgdGhhdCBjb25zb2xlIGxvZ2dpbmcgZHVtcHMg
cHJvcGVyIG1lc3NhZ2VzLgogCi1BcnJheQotPj4+IDAgPSAidGVzdDEiCi0+Pj4gMSA9ICJ0ZXN0
MiIKLT4+PiBsZW5ndGggPSAyCi0+Pj4gX19wcm90b19fID0gQXJyYXkKLU5vZGVMaXN0Ci0+Pj4g
MCA9IEhUTUxIdG1sRWxlbWVudAotPj4+IGNvbnN0cnVjdG9yID0gTm9kZUxpc3RDb25zdHJ1Y3Rv
cgotPj4+IGxlbmd0aCA9IDEKLT4+PiBfX3Byb3RvX18gPSBOb2RlTGlzdFByb3RvdHlwZQorQXJy
YXlbMl0KKyAgICAwID0gInRlc3QxIgorICAgIDEgPSAidGVzdDIiCisgICAgbGVuZ3RoID0gMgor
ICAgIF9fcHJvdG9fXyA9IEFycmF5WzBdCitOb2RlTGlzdFsxXQorICAgIDAgPSBIVE1MSHRtbEVs
ZW1lbnQKKyAgICBjb25zdHJ1Y3RvciA9IE5vZGVMaXN0Q29uc3RydWN0b3IKKyAgICBsZW5ndGgg
PSAxCisgICAgX19wcm90b19fID0gTm9kZUxpc3RQcm90b3R5cGUKIFhQYXRoUmVzdWx0Ci0+Pj4g
Ym9vbGVhblZhbHVlID0gRXJyb3I6IFRZUEVfRVJSOiBET00gWFBhdGggRXhjZXB0aW9uIDUyCi0+
Pj4gY29uc3RydWN0b3IgPSBYUGF0aFJlc3VsdENvbnN0cnVjdG9yCi0+Pj4gaW52YWxpZEl0ZXJh
dG9yU3RhdGUgPSBmYWxzZQotPj4+IG51bWJlclZhbHVlID0gRXJyb3I6IFRZUEVfRVJSOiBET00g
WFBhdGggRXhjZXB0aW9uIDUyCi0+Pj4gcmVzdWx0VHlwZSA9IDQKLT4+PiBzaW5nbGVOb2RlVmFs
dWUgPSBFcnJvcjogVFlQRV9FUlI6IERPTSBYUGF0aCBFeGNlcHRpb24gNTIKLT4+PiBzbmFwc2hv
dExlbmd0aCA9IEVycm9yOiBUWVBFX0VSUjogRE9NIFhQYXRoIEV4Y2VwdGlvbiA1MgotPj4+IHN0
cmluZ1ZhbHVlID0gRXJyb3I6IFRZUEVfRVJSOiBET00gWFBhdGggRXhjZXB0aW9uIDUyCi0+Pj4g
X19wcm90b19fID0gWFBhdGhSZXN1bHRQcm90b3R5cGUKKyAgICBib29sZWFuVmFsdWUgPSBFcnJv
cjogVFlQRV9FUlI6IERPTSBYUGF0aCBFeGNlcHRpb24gNTIKKyAgICBjb25zdHJ1Y3RvciA9IFhQ
YXRoUmVzdWx0Q29uc3RydWN0b3IKKyAgICBpbnZhbGlkSXRlcmF0b3JTdGF0ZSA9IGZhbHNlCisg
ICAgbnVtYmVyVmFsdWUgPSBFcnJvcjogVFlQRV9FUlI6IERPTSBYUGF0aCBFeGNlcHRpb24gNTIK
KyAgICByZXN1bHRUeXBlID0gNAorICAgIHNpbmdsZU5vZGVWYWx1ZSA9IEVycm9yOiBUWVBFX0VS
UjogRE9NIFhQYXRoIEV4Y2VwdGlvbiA1MgorICAgIHNuYXBzaG90TGVuZ3RoID0gRXJyb3I6IFRZ
UEVfRVJSOiBET00gWFBhdGggRXhjZXB0aW9uIDUyCisgICAgc3RyaW5nVmFsdWUgPSBFcnJvcjog
VFlQRV9FUlI6IERPTSBYUGF0aCBFeGNlcHRpb24gNTIKKyAgICBfX3Byb3RvX18gPSBYUGF0aFJl
c3VsdFByb3RvdHlwZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS1kaXItZ2xvYmFsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXItZ2xv
YmFsLmh0bWwKaW5kZXggZTdlNDQ3NS4uOTNlZjZjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUtZGlyLWdsb2JhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLWRpci1nbG9iYWwuaHRtbApAQCAtMjYsMTAgKzI2LDEwIEBAIGZ1bmN0aW9u
IGZyb250ZW5kX2V4cGFuZEFuZER1bXBDb25zb2xlTWVzc2FnZXModGVzdENvbnRyb2xsZXIpCiAK
ICAgICBmdW5jdGlvbiBldmFsQ2FsbGJhY2socmVzdWx0KQogICAgIHsKLSAgICAgICAgaWYgKHJl
c3VsdC5pc0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
IkV4Y2VwdGlvbjoiICsgcmVzdWx0LnZhbHVlKTsKLSAgICAgICAgdmFyIG9iamVjdFByb3h5ID0g
cmVzdWx0LnZhbHVlOwotICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXREZWZhdWx0KCku
Z2V0UHJvcGVydGllcyhvYmplY3RQcm94eSwgZmFsc2UsIHRydWUsIGdldFByb3BlcnRpZXNDYWxs
YmFjayk7CisgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PT0gImVycm9yIikKKyAgICAgICAgICAg
IHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoIkV4Y2VwdGlvbjoiICsgcmVzdWx0KTsKKyAgICAg
ICAgdmFyIG9iamVjdFByb3h5ID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9h
ZChyZXN1bHQpOworICAgICAgICBvYmplY3RQcm94eS5nZXRQcm9wZXJ0aWVzKGZhbHNlLCB0cnVl
LCBnZXRQcm9wZXJ0aWVzQ2FsbGJhY2spOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGdldFByb3Bl
cnRpZXNDYWxsYmFjayhwcm9wZXJ0aWVzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NvbnNvbGUtZGlyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIu
aHRtbAppbmRleCA4YTBiNzczLi41M2Y3ZGJlIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY29uc29sZS1kaXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS1kaXIuaHRtbApAQCAtMjAsNyArMjAsNyBAQCBmdW5jdGlvbiBleHBhbmRBbmREdW1wQ29uc29s
ZU1lc3NhZ2VzKG5vTm90aWZ5RG9uZSkgewogICAgICAgICAgICAgb3V0cHV0KHJlc3VsdFtpXS50
aXRsZSk7CiAgICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IHJlc3VsdFtpXS5wcm9wZXJ0aWVz
OwogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IHByb3BlcnRpZXMgJiYgaiA8IHByb3BlcnRp
ZXMubGVuZ3RoOyArK2opCi0gICAgICAgICAgICAgICAgb3V0cHV0KCI+Pj4gIiArIHByb3BlcnRp
ZXNbal0ubmFtZSArICIgPSAiICsgcHJvcGVydGllc1tqXS52YWx1ZS5kZXNjcmlwdGlvbik7Cisg
ICAgICAgICAgICAgICAgb3V0cHV0KCIgICAgIiArIHByb3BlcnRpZXNbal0ubmFtZSArICIgPSAi
ICsgcHJvcGVydGllc1tqXS52YWx1ZS5fZGVzY3JpcHRpb24pOwogICAgICAgICB9CiAgICAgICAg
IGlmICghbm9Ob3RpZnlEb25lKQogICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9u
cy1leHBlY3RlZC50eHQKaW5kZXggZTBjNDRlYi4uZWUyNDQ4OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMtZXhw
ZWN0ZWQudHh0CkBAIC0xNSw1ICsxNSw1IEBAIFRlc3RzIHRoYXQgY29uc29sZSBuaWNlbHkgZm9y
bWF0cyBIVE1MIENvbGxlY3Rpb25zIGFuZCBOb2RlTGlzdHMuCiA8L3A+LCA8ZGl2IHN0eWxlPSJk
aXNwbGF5Om5vbmUiPuKApjwvZGl2PiwgPGZvcm0gaWQ9ImYiPuKApjwvZm9ybT4sIDxzZWxlY3Qg
aWQ9InNlbCIgbmFtZT0ic2VsIj7igKY8L3NlbGVjdD4sIDxvcHRpb24gdmFsdWU9IjEiPm9uZTwv
b3B0aW9uPiwgPG9wdGlvbiB2YWx1ZT0iMiI+dHdvPC9vcHRpb24+LCA8aW5wdXQgdHlwZT0icmFk
aW8iIG5hbWU9IngiIHZhbHVlPSJ4MSI+LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IngiIHZh
bHVlPSJ4MiI+LCA8ZGl2IGlkPSJvdXRwdXQiIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlOyAiPjwv
ZGl2Pl0KIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MzFbPHNlbGVjdCBpZD0ic2Vs
IiBuYW1lPSJzZWwiPuKApjwvc2VsZWN0PiwgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2
YWx1ZT0ieDEiPiwgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDIiPl0KIGNv
bnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MzVbPGlucHV0IHR5cGU9InJhZGlvIiBuYW1l
PSJ4IiB2YWx1ZT0ieDEiPiwgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDIi
Pl0KLWNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6NDFbMSwgQXJyYXldCitjb25zb2xl
LWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjQxWzEsIEFycmF5WzJdXQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWV4cGVjdGVkLnR4dAppbmRleCAzZWMwM2Zi
Li42ZTljMmI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3Jt
YXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1h
dC1leHBlY3RlZC50eHQKQEAgLTM5LDcgKzM5LDcgQEAgY29uc29sZS1mb3JtYXQuaHRtbDoxM01l
c3NhZ2UgZm9ybWF0IGZvciBzdHJpbmcKIGNvbnNvbGUtZm9ybWF0Lmh0bWw6MTRPYmplY3QgT2Jq
ZWN0CiBjb25zb2xlLWZvcm1hdC5odG1sOjIwWyJ0ZXN0IiwgInRlc3QyIiwgdW5kZWZpbmVkLCB1
bmRlZmluZWQsICJ0ZXN0NCJdCiBjb25zb2xlLWZvcm1hdC5odG1sOjIxWyJ0ZXN0IiwgInRlc3Qy
IiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICJ0ZXN0NCJdCi1jb25zb2xlLWZvcm1hdC5odG1sOjIy
QXJyYXkKK2NvbnNvbGUtZm9ybWF0Lmh0bWw6MjJBcnJheVs1XQogY29uc29sZS1mb3JtYXQuaHRt
bDo1Mi9edXJsXChccyooPzooPzoiKD86W15cXFwiXXwoPzpcXFtcZGEtZl17MSw2fVxzP3xcLikp
KiJ8Jyg/OlteXFxcJ118KD86XFxbXGRhLWZdezEsNn1ccz98XC4pKSonKXwoPzpbISMkJSYqLX5c
d118KD86XFxbXGRhLWZdezEsNn1ccz98XC4pKSopXHMqXCkvaQogY29uc29sZS1mb3JtYXQuaHRt
bDo1M1svXnVybFwoXHMqKD86KD86Iig/OlteXFxcIl18KD86XFxbXGRhLWZdezEsNn1ccz98XC4p
KSoifCcoPzpbXlxcXCddfCg/OlxcW1xkYS1mXXsxLDZ9XHM/fFwuKSkqJyl8KD86WyEjJCUmKi1+
XHddfCg/OlxcW1xkYS1mXXsxLDZ9XHM/fFwuKSkqKVxzKlwpL2ldCiAiL151cmxcKFxzKig/Oig/
OiIoPzpbXlxcXCJdfCg/OlxcW1xkYS1mXXsxLDZ9XHM/fFwuKSkqInwnKD86W15cXFwnXXwoPzpc
XFtcZGEtZl17MSw2fVxzP3xcLikpKicpfCg/OlshIyQlJiotflx3XXwoPzpcXFtcZGEtZl17MSw2
fVxzP3xcLikpKilccypcKS9pIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAwYzEzZmEyLi5jNTM3NmNlIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAx
MC0wOC0xMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBi
cnVzaCB1cCBvYmplY3QgcHJveGllcywgaW50cm9kdWNlIHJlbW90ZSBvYmplY3QgbW9kZWwuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mzg0NworCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNzc0luSGVhZFJ1bGUucHJvdG90eXBlLmRv
UnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlN0eWxlc1NjcmlwdHNPcmRl
clJ1bGUucHJvdG90eXBlLmRvUnVuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZS5kb0V2YWxJbldpbmRvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJv
dG90eXBlLl9lbnRlcktleVByZXNzZWQucHJpbnRSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fZW50ZXJLZXlQcmVzc2VkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2Zvcm1hdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLl9mb3JtYXRub2RlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2Zvcm1hdGFycmF5KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2Zvcm1hdEFzQXJyYXlFbnRyeSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLl9mb3JtYXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRPTU5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3Rv
dHlwZS5fY3JlYXRlVG9vbHRpcEZvck5vZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qczoKKyAgICAgICAgKGluamVjdGVk
U2NyaXB0Q29uc3RydWN0b3IpOgorICAgICAgICAoaW5qZWN0ZWRTY3JpcHRDb25zdHJ1Y3Rvci4p
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UHJvcGVydGllc1NlY3Rpb24u
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rpb24ucHJvdG90
eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rp
b24ucHJvdG90eXBlLnVwZGF0ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9i
amVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLm9ucG9wdWxhdGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5
cGUuYXBwbHlFeHByZXNzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL09iamVj
dFByb3h5LmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVy
dGllc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTaWRl
YmFyUGFuZS5wcm90b3R5cGUudXBkYXRlLmNhbGxiYWNrKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0SWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QcmltaXRpdmVWYWx1ZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21FcnJvck1lc3NhZ2UpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tTm9kZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3QudHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
LnByb3RvdHlwZS5nZXQgb2JqZWN0SWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9i
amVjdC5wcm90b3R5cGUuZ2V0IHR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9i
amVjdC5wcm90b3R5cGUuZ2V0IGRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZW1vdGVPYmplY3QucHJvdG90eXBlLmdldCBoYXNDaGlsZHJlbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5pc0Vycm9yKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlLmdldFByb3BlcnR5VmFsdWVEZXNjcmlwdGlvbnMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUuZ2V0T3duUHJv
cGVydGllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5n
ZXRQcm9wZXJ0aWVzLnJlbW90ZU9iamVjdEJpbmRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0UHJvcGVydHkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2Nv
cGVDaGFpblNpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5T
aWRlYmFyUGFuZS5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
cHJvdG90eXBlLmV2YWx1YXRlSW5TZWxlY3RlZENhbGxGcmFtZS51cGRhdGluZ0NhbGxiYWNrV3Jh
cHBlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5ldmFs
dWF0ZUluU2VsZWN0ZWRDYWxsRnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQ
YW5lbC5wcm90b3R5cGUuZG9FdmFsSW5DYWxsRnJhbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU291cmNlRnJhbWUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWUucHJvdG90eXBlLl9zaG93UG9wdXAuZXZhbHVhdGVDYWxsYmFjayk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9zaG93UG9wdXApOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fZXZhbFNlbGVjdGlvbkluQ2FsbEZyYW1l
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFy
UGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbi5w
cm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25U
cmVlRWxlbWVudC5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5sb2cubG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
bG9nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qczoKKyAgICAg
ICAgKCk6CisKKzIwMTAtMDgtMTEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogYnJ1c2ggdXAgb2JqZWN0IHByb3hpZXMsIGludHJvZHVjZSByZW1vdGUgb2Jq
ZWN0IG1vZGVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDM4NDcKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNv
bGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5k
b0V2YWxJbldpbmRvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90
eXBlLl9mb3JtYXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZS5fZm9ybWF0bm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90
eXBlLl9mb3JtYXRhcnJheSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJv
dG90eXBlLl9mb3JtYXRBc0FycmF5RW50cnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlLnByb3RvdHlwZS5fZm9ybWF0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25z
b2xlQ29tbWFuZFJlc3VsdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2Vu
dC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NyZWF0ZVRvb2x0aXBGb3JOb2RlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUu
anM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qczoKKyAg
ICAgICAgKGluamVjdGVkU2NyaXB0Q29uc3RydWN0b3IpOgorICAgICAgICAoaW5qZWN0ZWRTY3Jp
cHRDb25zdHJ1Y3Rvci4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UHJv
cGVydGllc1NlY3Rpb24uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGll
c1NlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0
UHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZVByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLm9ucG9wdWxh
dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJv
dG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydHlUcmVl
RWxlbWVudC5wcm90b3R5cGUuYXBwbHlFeHByZXNzaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL09iamVjdFByb3h5LmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlByb3BlcnRpZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUudXBkYXRlLmNhbGxiYWNrKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1JlbW90ZU9iamVjdC5qczogQWRkZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0SWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21Qcmlt
aXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21FcnJv
ck1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tTm9kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QudHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5nZXQgb2JqZWN0SWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUuZ2V0IHR5cGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUuZ2V0IGRlc2NyaXB0aW9uKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlLmdldCBoYXNDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5nZXRQcm9wZXJ0eVZh
bHVlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5nZXRP
d25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90
eXBlLmdldFByb3BlcnRpZXMucmVtb3RlT2JqZWN0QmluZGVyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY29wZUNoYWluU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NvcGVD
aGFpblNpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQ
YW5lbC5wcm90b3R5cGUuZG9FdmFsSW5DYWxsRnJhbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTZWN0aW9uLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxvZy5sb2dNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5sb2cpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
dXRpbGl0aWVzLmpzOgorCiAyMDEwLTA4LTEyICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhMmZh
ZjUzLi5iMjRkYTc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDExMSw3ICs0MTExLDYgQEAKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL09iamVjdC5qcycsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9PYmplY3RQcm94eS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9P
YmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9QYW5lbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbEVu
YWJsZXJWaWV3LmpzJywKQEAgLTQxMjIsNiArNDEyMSw3IEBACiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9Qcm9wZXJ0aWVzU2VjdGlvbi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9Qcm9wZXJ0aWVzU2lkZWJhclBhbmUuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVtb3RlT2JqZWN0LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlQ2F0ZWdvcnkuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXgg
NDYzZjVkOS4uZjk1ZDJjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC01MTI2MCwxMCArNTEyNjAsNiBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUN
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxPYmplY3RQcm94eS5q
cyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFBhbmVsLmpzIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+
DQpAQCAtNTEzMDQsNiArNTEzMDAsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxG
aWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUmVtb3RlT2Jq
ZWN0LmpzIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcUmVzb3VyY2UuanMiDQogCQkJCQk+DQogCQkJ
CTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRS
dWxlcy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzCmluZGV4
IDg1MTljZjIuLmUyOGEzNjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9BdWRpdFJ1bGVzLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1
bGVzLmpzCkBAIC03MjQsOSArNzI0LDkgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ3NzSW5I
ZWFkUnVsZSA9IGZ1bmN0aW9uKCkKIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNzc0luSGVhZFJ1
bGUucHJvdG90eXBlID0gewogICAgIGRvUnVuOiBmdW5jdGlvbihyZXNvdXJjZXMsIHJlc3VsdCwg
Y2FsbGJhY2spCiAgICAgewotICAgICAgICBmdW5jdGlvbiBldmFsQ2FsbGJhY2soZXZhbFJlc3Vs
dCwgaXNFeGNlcHRpb24pCisgICAgICAgIGZ1bmN0aW9uIGV2YWxDYWxsYmFjayhldmFsUmVzdWx0
KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNFeGNlcHRpb24gfHwgIWV2YWxSZXN1bHQp
CisgICAgICAgICAgICBpZiAoIWV2YWxSZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKG51bGwpOwogCiAgICAgICAgICAgICB2YXIgc3VtbWFyeSA9IHJlc3VsdC5hZGRDaGls
ZCgiIik7CkBAIC04MDAsOSArODAwLDkgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuU3R5bGVz
U2NyaXB0c09yZGVyUnVsZSA9IGZ1bmN0aW9uKCkKIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlN0
eWxlc1NjcmlwdHNPcmRlclJ1bGUucHJvdG90eXBlID0gewogICAgIGRvUnVuOiBmdW5jdGlvbihy
ZXNvdXJjZXMsIHJlc3VsdCwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBmdW5jdGlvbiBldmFs
Q2FsbGJhY2socmVzdWx0VmFsdWUsIGlzRXhjZXB0aW9uKQorICAgICAgICBmdW5jdGlvbiBldmFs
Q2FsbGJhY2socmVzdWx0VmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc0V4Y2Vw
dGlvbiB8fCAhcmVzdWx0VmFsdWUpCisgICAgICAgICAgICBpZiAoIXJlc3VsdFZhbHVlKQogICAg
ICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTsKIAogICAgICAgICAgICAgdmFyIGxh
dGVDc3NVcmxzID0gcmVzdWx0VmFsdWVbMF07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29uc29sZVZpZXcuanMKaW5kZXggNmE0ZTBkMy4uY2E0ZmUwNCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwpAQCAtNTExLDcgKzUxMSw3IEBAIFdlYkluc3Bl
Y3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gZXZhbENh
bGxiYWNrKHJlc3VsdCkKICAgICAgICAgewotICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0LnZh
bHVlLCByZXN1bHQuaXNFeGNlcHRpb24pOworICAgICAgICAgICAgY2FsbGJhY2soV2ViSW5zcGVj
dG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChyZXN1bHQpKTsKICAgICAgICAgfTsKICAgICAg
ICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0RGVmYXVsdCgpLmV2YWx1YXRlKGV4cHJlc3Npb24s
IG9iamVjdEdyb3VwLCBldmFsQ2FsbGJhY2spOwogICAgIH0sCkBAIC01MzQsNyArNTM0LDcgQEAg
V2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5hZGRN
ZXNzYWdlKGNvbW1hbmRNZXNzYWdlKTsKIAogICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAg
ICAgIGZ1bmN0aW9uIHByaW50UmVzdWx0KHJlc3VsdCwgZXhjZXB0aW9uKQorICAgICAgICBmdW5j
dGlvbiBwcmludFJlc3VsdChyZXN1bHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNlbGYucHJv
bXB0Lmhpc3RvcnkucHVzaChzdHIpOwogICAgICAgICAgICAgc2VsZi5wcm9tcHQuaGlzdG9yeU9m
ZnNldCA9IDA7CkBAIC01NDIsNyArNTQyLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGlu
Z3MuY29uc29sZUhpc3RvcnkgPSBzZWxmLnByb21wdC5oaXN0b3J5LnNsaWNlKC0zMCk7CiAKLSAg
ICAgICAgICAgIHNlbGYuYWRkTWVzc2FnZShuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5k
UmVzdWx0KHJlc3VsdCwgZXhjZXB0aW9uLCBjb21tYW5kTWVzc2FnZSkpOworICAgICAgICAgICAg
c2VsZi5hZGRNZXNzYWdlKG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQocmVz
dWx0LCBjb21tYW5kTWVzc2FnZSkpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMuZXZhbEluSW5z
cGVjdGVkV2luZG93KHN0ciwgImNvbnNvbGUiLCBwcmludFJlc3VsdCk7CiAgICAgfSwKQEAgLTU1
MCw3ICs1NTAsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAg
IF9mb3JtYXQ6IGZ1bmN0aW9uKG91dHB1dCwgZm9yY2VPYmplY3RGb3JtYXQpCiAgICAgewogICAg
ICAgICB2YXIgaXNQcm94eSA9IChvdXRwdXQgIT0gbnVsbCAmJiB0eXBlb2Ygb3V0cHV0ID09PSAi
b2JqZWN0Iik7Ci0gICAgICAgIHZhciB0eXBlID0gKGZvcmNlT2JqZWN0Rm9ybWF0ID8gIm9iamVj
dCIgOiBPYmplY3QucHJveHlUeXBlKG91dHB1dCkpOworICAgICAgICB2YXIgdHlwZSA9IChmb3Jj
ZU9iamVjdEZvcm1hdCA/ICJvYmplY3QiIDogV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC50eXBl
KG91dHB1dCkpOwogCiAgICAgICAgIHZhciBmb3JtYXR0ZXIgPSB0aGlzLl9jdXN0b21Gb3JtYXR0
ZXJzW3R5cGVdOwogICAgICAgICBpZiAoIWZvcm1hdHRlciB8fCAhaXNQcm94eSkgewpAQCAtNTg5
LDEyICs1ODksMTIgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIGVsZW0uYXBwZW5kQ2hpbGQodHJlZU91dGxpbmUuZWxlbWVudCk7CiAgICAgICAg
IH0KIAotICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXQob2JqZWN0LmluamVjdGVkU2Ny
aXB0SWQpLnB1c2hOb2RlVG9Gcm9udGVuZChvYmplY3QsIHByaW50Tm9kZSk7CisgICAgICAgIElu
amVjdGVkU2NyaXB0QWNjZXNzLmdldChvYmplY3Qub2JqZWN0SWQuaW5qZWN0ZWRTY3JpcHRJZCku
cHVzaE5vZGVUb0Zyb250ZW5kKG9iamVjdC5vYmplY3RJZCwgcHJpbnROb2RlKTsKICAgICB9LAog
CiAgICAgX2Zvcm1hdGFycmF5OiBmdW5jdGlvbihhcnIsIGVsZW0pCiAgICAgewotICAgICAgICBJ
bmplY3RlZFNjcmlwdEFjY2Vzcy5nZXQoYXJyLmluamVjdGVkU2NyaXB0SWQpLmdldFByb3BlcnRp
ZXMoYXJyLCBmYWxzZSwgZmFsc2UsIHRoaXMuX3ByaW50QXJyYXkuYmluZCh0aGlzLCBlbGVtKSk7
CisgICAgICAgIGFyci5nZXRPd25Qcm9wZXJ0aWVzKGZhbHNlLCB0aGlzLl9wcmludEFycmF5LmJp
bmQodGhpcywgZWxlbSkpOwogICAgIH0sCiAKICAgICBfZm9ybWF0c3RyaW5nOiBmdW5jdGlvbihv
dXRwdXQsIGVsZW0pCkBAIC02MzcsOSArNjM3LDggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3
LnByb3RvdHlwZSA9IHsKIAogICAgIF9mb3JtYXRBc0FycmF5RW50cnk6IGZ1bmN0aW9uKG91dHB1
dCkKICAgICB7Ci0gICAgICAgIHZhciB0eXBlID0gT2JqZWN0LnByb3h5VHlwZShvdXRwdXQpOwog
ICAgICAgICAvLyBQcmV2ZW50IGluZmluaXRlIGV4cGFuc2lvbiBvZiBjcm9zcy1yZWZlcmVuY2lu
ZyBhcnJheXMuCi0gICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXQob3V0cHV0LCB0eXBlID09PSAi
YXJyYXkiKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdChvdXRwdXQsIFdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3QudHlwZShvdXRwdXQpID09PSAiYXJyYXkiKTsKICAgICB9CiB9CiAKQEAg
LTcyOCwxMiArNzI3LDE1IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgLy8gRm9ybWF0dGluZyBjb2RlIGJlbG93IGFzc3VtZXMgdGhhdCBwYXJh
bWV0ZXJzIGFyZSBhbGwgd3JhcHBlcnMgd2hlcmVhcyBmcm9udGVuZCBjb25zb2xlCiAgICAgICAg
IC8vIEFQSSBhbGxvd3MgcGFzc2luZyBhcmJpdHJhcnkgdmFsdWVzIGFzIG1lc3NhZ2VzIChzdHJp
bmdzLCBudW1iZXJzLCBldGMuKS4gV3JhcCB0aGVtIGhlcmUuCi0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGlmICh0eXBlb2Yg
cGFyYW1ldGVyc1tpXSAhPT0gIm9iamVjdCIgJiYgdHlwZW9mIHBhcmFtZXRlcnNbaV0gIT09ICJm
dW5jdGlvbiIpCi0gICAgICAgICAgICAgICAgcGFyYW1ldGVyc1tpXSA9IFdlYkluc3BlY3Rvci5P
YmplY3RQcm94eS53cmFwUHJpbWl0aXZlVmFsdWUocGFyYW1ldGVyc1tpXSk7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
aWYgKHR5cGVvZiBwYXJhbWV0ZXJzW2ldID09PSAib2JqZWN0IikKKyAgICAgICAgICAgICAgICBw
YXJhbWV0ZXJzW2ldID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwYXJh
bWV0ZXJzW2ldKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJz
W2ldID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUocGFyYW1l
dGVyc1tpXSk7CisgICAgICAgIH0KIAogICAgICAgICAvLyBUaGVyZSBjYW4gYmUgc3RyaW5nIGxv
ZyBhbmQgc3RyaW5nIGV2YWwgcmVzdWx0LiBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZW0gYmFz
ZWQgb24gbWVzc2FnZSB0eXBlLgotICAgICAgICB2YXIgc2hvdWxkRm9ybWF0TWVzc2FnZSA9IE9i
amVjdC5wcm94eVR5cGUocGFyYW1ldGVyc1swXSkgPT09ICJzdHJpbmciICYmIHRoaXMudHlwZSAh
PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlJlc3VsdDsKKyAgICAg
ICAgdmFyIHNob3VsZEZvcm1hdE1lc3NhZ2UgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnR5
cGUocGFyYW1ldGVyc1swXSkgPT09ICJzdHJpbmciICYmIHRoaXMudHlwZSAhPT0gV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlJlc3VsdDsKIAogICAgICAgICAvLyBNdWx0
aXBsZSBwYXJhbWV0ZXJzIHdpdGggdGhlIGZpcnN0IGJlaW5nIGEgZm9ybWF0IHN0cmluZy4gU2F2
ZSB1bnVzZWQgc3Vic3RpdHV0aW9ucy4KICAgICAgICAgaWYgKHNob3VsZEZvcm1hdE1lc3NhZ2Up
IHsKQEAgLTEwNDgsMjEgKzEwNTAsMTEgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kLnBy
b3RvdHlwZSA9IHsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3Vs
dCA9IGZ1bmN0aW9uKHJlc3VsdCwgZXhjZXB0aW9uLCBvcmlnaW5hdGluZ0NvbW1hbmQpCitXZWJJ
bnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQgPSBmdW5jdGlvbihyZXN1bHQsIG9yaWdpbmF0
aW5nQ29tbWFuZCkKIHsKLSAgICB2YXIgbGV2ZWwgPSAoZXhjZXB0aW9uID8gV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvciA6IFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nKTsKLSAgICB2YXIgbWVzc2FnZSA9IHJlc3VsdDsKLSAg
ICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIC8vIERpc3Rpbmd1aXNoIGJldHdlZW4gc3RyaW5n
cyBhbmQgZXJyb3JzIChubyBuZWVkIHRvIHF1b3RlIGxhdHRlcikuCi0gICAgICAgIG1lc3NhZ2Ug
PSBXZWJJbnNwZWN0b3IuT2JqZWN0UHJveHkud3JhcFByaW1pdGl2ZVZhbHVlKHJlc3VsdCk7Ci0g
ICAgICAgIG1lc3NhZ2UudHlwZSA9ICJlcnJvciI7Ci0gICAgfQotICAgIHZhciBsaW5lID0gKGV4
Y2VwdGlvbiA/IHJlc3VsdC5saW5lIDogLTEpOwotICAgIHZhciB1cmwgPSAoZXhjZXB0aW9uID8g
cmVzdWx0LnNvdXJjZVVSTCA6IG51bGwpOwotCisgICAgdmFyIGxldmVsID0gKHJlc3VsdC5pc0Vy
cm9yKCkgPyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yIDog
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2cpOwogICAgIHRoaXMu
b3JpZ2luYXRpbmdDb21tYW5kID0gb3JpZ2luYXRpbmdDb21tYW5kOwotCi0gICAgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
Lk1lc3NhZ2VTb3VyY2UuSlMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlw
ZS5SZXN1bHQsIGxldmVsLCBsaW5lLCB1cmwsIG51bGwsIDEsIG51bGwsIFttZXNzYWdlXSk7Cisg
ICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2Fn
ZS5NZXNzYWdlVHlwZS5SZXN1bHQsIGxldmVsLCAtMSwgbnVsbCwgbnVsbCwgMSwgbnVsbCwgW3Jl
c3VsdF0pOwogfQogCiBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQucHJvdG90eXBl
ID0gewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50Lmpz
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IGM0MWQwMzgu
LjU3NDIyZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2Vu
dC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTMz
LDEwICszMyw2IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlID0gZnVuY3Rpb24oZG9jLCBwYXlsb2Fk
KSB7CiAgICAgdGhpcy5vd25lckRvY3VtZW50ID0gZG9jOwogCiAgICAgdGhpcy5pZCA9IHBheWxv
YWQuaWQ7Ci0gICAgLy8gaW5qZWN0ZWRTY3JpcHRJZCBpcyBhIG5vZGUgaXMgZm9yIERPTSBub2Rl
cyB3aGljaCBzaG91bGQgYmUgY29udmVydGVkCi0gICAgLy8gdG8gY29ycmVzcG9uZGluZyBJbmpl
Y3RlZFNjcmlwdCBieSB0aGUgaW5zcGVjdG9yIGJhY2tlbmQuIFdlIGluZGljYXRlCi0gICAgLy8g
dGhpcyBieSBtYWtpbmcgaW5qZWN0ZWRTY3JpcHRJZCBuZWdhdGl2ZS4KLSAgICB0aGlzLmluamVj
dGVkU2NyaXB0SWQgPSAtcGF5bG9hZC5pZDsKICAgICB0aGlzLm5vZGVUeXBlID0gcGF5bG9hZC5u
b2RlVHlwZTsKICAgICB0aGlzLm5vZGVOYW1lID0gcGF5bG9hZC5ub2RlTmFtZTsKICAgICB0aGlz
LmxvY2FsTmFtZSA9IHBheWxvYWQubG9jYWxOYW1lOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCA2NzEzZGRjLi4wMjk2NzM3IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwpAQCAtMjU1LDcgKzI1NSw3
IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fbWF0Y2hlc0NvdW50VXBkYXRlVGltZW91dCA9IG51bGw7CiAgICAgICAgIHRoaXMuX3NlYXJj
aFF1ZXJ5ID0gcXVlcnk7CiAKLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5wZXJmb3JtU2VhcmNo
KHdoaXRlc3BhY2VUcmltbWVkUXVlcnkpOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnBlcmZv
cm1TZWFyY2god2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgZmFsc2UpOwogICAgIH0sCiAKICAgICBz
ZWFyY2hpbmdGb3JOb2RlV2FzRW5hYmxlZDogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCA4N2Q4NWMxLi40
NTUyZmEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNU
cmVlT3V0bGluZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNU
cmVlT3V0bGluZS5qcwpAQCAtNDEzLDggKzQxMyw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1Ry
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICB0aGlzLnRvb2x0aXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIMOXICVkIHBpeGVscyAo
TmF0dXJhbDogJWQgw5cgJWQgcGl4ZWxzKSIsIHByb3BlcnRpZXMub2Zmc2V0V2lkdGgsIHByb3Bl
cnRpZXMub2Zmc2V0SGVpZ2h0LCBwcm9wZXJ0aWVzLm5hdHVyYWxXaWR0aCwgcHJvcGVydGllcy5u
YXR1cmFsSGVpZ2h0KTsKICAgICAgICAgfQotICAgICAgICB2YXIgb2JqZWN0UHJveHkgPSBuZXcg
V2ViSW5zcGVjdG9yLk9iamVjdFByb3h5KG5vZGUuaW5qZWN0ZWRTY3JpcHRJZCwgbm9kZS5pZCk7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5PYmplY3RQcm94eS5nZXRQcm9wZXJ0aWVzQXN5bmMob2Jq
ZWN0UHJveHksIFsibmF0dXJhbEhlaWdodCIsICJuYXR1cmFsV2lkdGgiLCAib2Zmc2V0SGVpZ2h0
IiwgIm9mZnNldFdpZHRoIl0sIHNldFRvb2x0aXAuYmluZCh0aGlzKSk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbU5vZGUobm9kZSkuZ2V0UHJvcGVydHlWYWx1ZURlc2Ny
aXB0aW9ucyhbIm5hdHVyYWxIZWlnaHQiLCAibmF0dXJhbFdpZHRoIiwgIm9mZnNldEhlaWdodCIs
ICJvZmZzZXRXaWR0aCJdLCBzZXRUb29sdGlwLmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICB1
cGRhdGVTZWxlY3Rpb246IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKaW5kZXggNjc5ODg0NS4u
YTA4YzQ2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlz
dGVuZXJzU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2
ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKQEAgLTE5NCwxMCArMTk0LDEwIEBAIFdlYkluc3Bl
Y3Rvci5FdmVudExpc3RlbmVyQmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIC8vIEp1c3Qg
YnVpbGQgcHJvcGVydGllcyBpbiBwbGFjZSAtIG5vIG5lZWQgdG8gcmVhY2ggb3V0IGZvciBpbmpl
Y3RlZCBzY3JpcHQuCiAgICAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLmV2ZW50TGlzdGVuZXJb
cHJvcGVydHlOYW1lXTsKICAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5ET01Ob2RlKQotICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IFdlYkluc3BlY3Rvci5P
YmplY3RQcm94eSh2YWx1ZS5pbmplY3RlZFNjcmlwdElkLCB2YWx1ZS5pZCwgW10sIGFwcHJvcHJp
YXRlU2VsZWN0b3JGb3JOb2RlKHZhbHVlKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdmFsdWUg
PSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21Ob2RlKHZhbHVlKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IFdlYkluc3BlY3Rvci5PYmplY3RQcm94eS53
cmFwUHJpbWl0aXZlVmFsdWUodmFsdWUpOwotICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKG5l
dyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydHlQcm94eShwcm9wZXJ0eU5hbWUsIHZhbHVlKSk7
CisgICAgICAgICAgICAgICAgdmFsdWUgPSBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21Q
cmltaXRpdmVWYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2gobmV3IFdl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHZhbHVlKSk7CiAg
ICAgICAgIH0KICAgICAgICAgdGhpcy51cGRhdGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpOwogICAg
IH0sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3Jp
cHQuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMKaW5k
ZXggYjhiZjlmMi4uZjNlM2FlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0luamVjdGVkU2NyaXB0LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9J
bmplY3RlZFNjcmlwdC5qcwpAQCAtNTAsMjEgKzUwLDIxIEBAIEluamVjdGVkU2NyaXB0LndyYXBP
YmplY3QgPSBmdW5jdGlvbihvYmplY3QsIG9iamVjdEdyb3VwTmFtZSkKICAgICAgICAgdmFyIG9i
amVjdElkOwogICAgICAgICBpZiAodHlwZW9mIG9iamVjdCA9PT0gIm9iamVjdCIgfHwgdHlwZW9m
IG9iamVjdCA9PT0gImZ1bmN0aW9uIiB8fCBJbmplY3RlZFNjcmlwdC5faXNIVE1MQWxsQ29sbGVj
dGlvbihvYmplY3QpKSB7CiAgICAgICAgICAgICB2YXIgaWQgPSBJbmplY3RlZFNjcmlwdC5sYXN0
Qm91bmRPYmplY3RJZCsrOwotICAgICAgICAgICAgb2JqZWN0SWQgPSAib2JqZWN0IyIgKyBpZDsK
LSAgICAgICAgICAgIEluamVjdGVkU2NyaXB0LmlkVG9XcmFwcGVkT2JqZWN0W29iamVjdElkXSA9
IG9iamVjdDsKKyAgICAgICAgICAgIG9iamVjdElkID0gaWQ7CisgICAgICAgICAgICBJbmplY3Rl
ZFNjcmlwdC5pZFRvV3JhcHBlZE9iamVjdFtpZF0gPSBvYmplY3Q7CiAKICAgICAgICAgICAgIHZh
ciBncm91cCA9IEluamVjdGVkU2NyaXB0Lm9iamVjdEdyb3Vwc1tvYmplY3RHcm91cE5hbWVdOwog
ICAgICAgICAgICAgaWYgKCFncm91cCkgewogICAgICAgICAgICAgICAgIGdyb3VwID0gW107CiAg
ICAgICAgICAgICAgICAgSW5qZWN0ZWRTY3JpcHQub2JqZWN0R3JvdXBzW29iamVjdEdyb3VwTmFt
ZV0gPSBncm91cDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdyb3VwLnB1c2gob2JqZWN0
SWQpOworICAgICAgICAgICAgZ3JvdXAucHVzaChpZCk7CisgICAgICAgICAgICBvYmplY3RJZCA9
IG5ldyBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3RJZCgianNvYmplY3QiLCBpZCk7CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LmNyZWF0ZVByb3h5T2JqZWN0KG9i
amVjdCwgb2JqZWN0SWQpOworICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2Jq
ZWN0LmZyb21PYmplY3Qob2JqZWN0LCBvYmplY3RJZCk7CiAgICAgfSBjYXRjaCAoZSkgewotICAg
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuY3JlYXRlUHJveHlPYmplY3QoIlsgRXhjZXB0aW9u
OiAiICsgZS50b1N0cmluZygpICsgIiBdIik7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlw
dC5SZW1vdGVPYmplY3QuZnJvbU9iamVjdCgiWyBFeGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkg
KyAiIF0iKTsKICAgICB9Ci0gICAgcmV0dXJuIEluamVjdGVkU2NyaXB0LmNyZWF0ZVByb3h5T2Jq
ZWN0KG9iamVjdCwgb2JqZWN0SWQpOwogfTsKIAogSW5qZWN0ZWRTY3JpcHQudW53cmFwT2JqZWN0
ID0gZnVuY3Rpb24ob2JqZWN0SWQpIHsKQEAgLTExMCw5ICsxMTAsOSBAQCBJbmplY3RlZFNjcmlw
dC5nZXRQcm90b3R5cGVzID0gZnVuY3Rpb24obm9kZUlkKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLUluamVjdGVkU2NyaXB0LmdldFByb3BlcnRpZXMgPSBmdW5jdGlvbihvYmplY3RQcm94eSwg
aWdub3JlSGFzT3duUHJvcGVydHksIGFiYnJldmlhdGUpCitJbmplY3RlZFNjcmlwdC5nZXRQcm9w
ZXJ0aWVzID0gZnVuY3Rpb24ob2JqZWN0SWQsIGlnbm9yZUhhc093blByb3BlcnR5LCBhYmJyZXZp
YXRlKQogewotICAgIHZhciBvYmplY3QgPSBJbmplY3RlZFNjcmlwdC5fcmVzb2x2ZU9iamVjdChv
YmplY3RQcm94eSk7CisgICAgdmFyIG9iamVjdCA9IEluamVjdGVkU2NyaXB0Ll9vYmplY3RGb3JJ
ZChvYmplY3RJZCk7CiAgICAgaWYgKCFJbmplY3RlZFNjcmlwdC5faXNEZWZpbmVkKG9iamVjdCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB2YXIgcHJvcGVydGllcyA9IFtdOwpAQCAtMTI3
LDIyICsxMjcsMjEgQEAgSW5qZWN0ZWRTY3JpcHQuZ2V0UHJvcGVydGllcyA9IGZ1bmN0aW9uKG9i
amVjdFByb3h5LCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYWJicmUKIAogICAgICAgICB2YXIgcHJv
cGVydHkgPSB7fTsKICAgICAgICAgcHJvcGVydHkubmFtZSA9IHByb3BlcnR5TmFtZSArICIiOwot
ICAgICAgICBwcm9wZXJ0eS5wYXJlbnRPYmplY3RQcm94eSA9IG9iamVjdFByb3h5OwogICAgICAg
ICB2YXIgaXNHZXR0ZXIgPSBvYmplY3RbIl9fbG9va3VwR2V0dGVyX18iXSAmJiBvYmplY3QuX19s
b29rdXBHZXR0ZXJfXyhwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAoIWlzR2V0dGVyKSB7CiAg
ICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIHZhciBjaGlsZE9iamVjdCA9IG9iamVj
dFtwcm9wZXJ0eU5hbWVdOwotICAgICAgICAgICAgICAgIHZhciBjaGlsZE9iamVjdFByb3h5ID0g
bmV3IEluamVjdGVkU2NyaXB0LmNyZWF0ZVByb3h5T2JqZWN0KGNoaWxkT2JqZWN0LCBvYmplY3RQ
cm94eS5vYmplY3RJZCwgYWJicmV2aWF0ZSk7Ci0gICAgICAgICAgICAgICAgY2hpbGRPYmplY3RQ
cm94eS5wYXRoID0gb2JqZWN0UHJveHkucGF0aCA/IG9iamVjdFByb3h5LnBhdGguc2xpY2UoKSA6
IFtdOwotICAgICAgICAgICAgICAgIGNoaWxkT2JqZWN0UHJveHkucGF0aC5wdXNoKHByb3BlcnR5
TmFtZSk7CisgICAgICAgICAgICAgICAgdmFyIHBhdGggPSBvYmplY3RJZC5wYXRoID8gb2JqZWN0
SWQucGF0aC5zbGljZSgpIDogW107CisgICAgICAgICAgICAgICAgcGF0aC5wdXNoKHByb3BlcnR5
TmFtZSk7CisgICAgICAgICAgICAgICAgdmFyIGNoaWxkT2JqZWN0SWQgPSBuZXcgSW5qZWN0ZWRT
Y3JpcHQuUmVtb3RlT2JqZWN0SWQob2JqZWN0SWQudHlwZSwgb2JqZWN0SWQudmFsdWUsIHBhdGgp
OworICAgICAgICAgICAgICAgIHZhciBjaGlsZE9iamVjdFByb3h5ID0gbmV3IEluamVjdGVkU2Ny
aXB0LlJlbW90ZU9iamVjdC5mcm9tT2JqZWN0KGNoaWxkT2JqZWN0LCBjaGlsZE9iamVjdElkLCBh
YmJyZXZpYXRlKTsKICAgICAgICAgICAgICAgICBwcm9wZXJ0eS52YWx1ZSA9IGNoaWxkT2JqZWN0
UHJveHk7CiAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0
eS52YWx1ZSA9IHsgZGVzY3JpcHRpb246IGUudG9TdHJpbmcoKSB9OwotICAgICAgICAgICAgICAg
IHByb3BlcnR5LmlzRXJyb3IgPSB0cnVlOworICAgICAgICAgICAgICAgIHByb3BlcnR5LnZhbHVl
ID0gbmV3IEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdC5mcm9tRXhjZXB0aW9uKGUpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMg
c2hvdWxkIHNob3cgc29tZXRoaW5nIGxpa2UgImdldHRlciIgKGJ1ZyAxNjczNCkuCi0gICAgICAg
ICAgICBwcm9wZXJ0eS52YWx1ZSA9IHsgZGVzY3JpcHRpb246ICJcdTIwMTQiIH07IC8vIGVtIGRh
c2gKKyAgICAgICAgICAgIHByb3BlcnR5LnZhbHVlID0gbmV3IEluamVjdGVkU2NyaXB0LlJlbW90
ZU9iamVjdC5mcm9tT2JqZWN0KCJcdTIwMTQiKTsgLy8gZW0gZGFzaAogICAgICAgICAgICAgcHJv
cGVydHkuaXNHZXR0ZXIgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHByb3BlcnRpZXMucHVz
aChwcm9wZXJ0eSk7CkBAIC0xNTAsOSArMTQ5LDkgQEAgSW5qZWN0ZWRTY3JpcHQuZ2V0UHJvcGVy
dGllcyA9IGZ1bmN0aW9uKG9iamVjdFByb3h5LCBpZ25vcmVIYXNPd25Qcm9wZXJ0eSwgYWJicmUK
ICAgICByZXR1cm4gcHJvcGVydGllczsKIH0KIAotSW5qZWN0ZWRTY3JpcHQuc2V0UHJvcGVydHlW
YWx1ZSA9IGZ1bmN0aW9uKG9iamVjdFByb3h5LCBwcm9wZXJ0eU5hbWUsIGV4cHJlc3Npb24pCitJ
bmplY3RlZFNjcmlwdC5zZXRQcm9wZXJ0eVZhbHVlID0gZnVuY3Rpb24ob2JqZWN0SWQsIHByb3Bl
cnR5TmFtZSwgZXhwcmVzc2lvbikKIHsKLSAgICB2YXIgb2JqZWN0ID0gSW5qZWN0ZWRTY3JpcHQu
X3Jlc29sdmVPYmplY3Qob2JqZWN0UHJveHkpOworICAgIHZhciBvYmplY3QgPSBJbmplY3RlZFNj
cmlwdC5fb2JqZWN0Rm9ySWQob2JqZWN0SWQpOwogICAgIGlmICghSW5qZWN0ZWRTY3JpcHQuX2lz
RGVmaW5lZChvYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI1OCwyMCArMjU3
LDExIEBAIEluamVjdGVkU2NyaXB0LmV2YWx1YXRlID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwgb2Jq
ZWN0R3JvdXApCiAKIEluamVjdGVkU2NyaXB0Ll9ldmFsdWF0ZUFuZFdyYXAgPSBmdW5jdGlvbihl
dmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGRvbnRVc2VDb21t
YW5kTGluZUFQSSkKIHsKLSAgICB2YXIgcmVzdWx0ID0ge307CiAgICAgdHJ5IHsKLSAgICAgICAg
cmVzdWx0LnZhbHVlID0gSW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChJbmplY3RlZFNjcmlwdC5f
ZXZhbHVhdGVPbihldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVzc2lvbiwgZG9udFVzZUNvbW1h
bmRMaW5lQVBJKSwgb2JqZWN0R3JvdXApOwotCi0gICAgICAgIC8vIEhhbmRsZSBlcnJvciB0aGF0
IG1pZ2h0IGhhdmUgaGFwcGVuZWQgd2hpbGUgZGVzY3JpYmluZyByZXN1bHQuCi0gICAgICAgIGlm
IChyZXN1bHQudmFsdWUuZXJyb3JUZXh0KSB7Ci0gICAgICAgICAgICByZXN1bHQudmFsdWUgPSBy
ZXN1bHQudmFsdWUuZXJyb3JUZXh0OwotICAgICAgICAgICAgcmVzdWx0LmlzRXhjZXB0aW9uID0g
dHJ1ZTsKLSAgICAgICAgfQorICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQud3JhcE9iamVj
dChJbmplY3RlZFNjcmlwdC5fZXZhbHVhdGVPbihldmFsRnVuY3Rpb24sIG9iamVjdCwgZXhwcmVz
c2lvbiwgZG9udFVzZUNvbW1hbmRMaW5lQVBJKSwgb2JqZWN0R3JvdXApOwogICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgcmVzdWx0LnZhbHVlID0gZS50b1N0cmluZygpOwotICAgICAgICByZXN1
bHQuaXNFeGNlcHRpb24gPSB0cnVlOworICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUmVt
b3RlT2JqZWN0LmZyb21FeGNlcHRpb24oZSk7CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIEluamVjdGVkU2NyaXB0Ll9ldmFsdWF0ZU9uID0gZnVuY3Rpb24oZXZhbEZ1bmN0aW9uLCBv
YmplY3QsIGV4cHJlc3Npb24sIGRvbnRVc2VDb21tYW5kTGluZUFQSSkKQEAgLTM0MiwxOCArMzMy
LDYgQEAgSW5qZWN0ZWRTY3JpcHQuX2NhbGxGcmFtZUZvcklkID0gZnVuY3Rpb24oaWQpCiAgICAg
cmV0dXJuIGNhbGxGcmFtZTsKIH0KIAotSW5qZWN0ZWRTY3JpcHQuX3Jlc29sdmVPYmplY3QgPSBm
dW5jdGlvbihvYmplY3RQcm94eSkKLXsKLSAgICB2YXIgb2JqZWN0ID0gSW5qZWN0ZWRTY3JpcHQu
X29iamVjdEZvcklkKG9iamVjdFByb3h5Lm9iamVjdElkKTsKLSAgICB2YXIgcGF0aCA9IG9iamVj
dFByb3h5LnBhdGg7Ci0KLSAgICAvLyBGb2xsb3cgdGhlIHByb3BlcnR5IHBhdGguCi0gICAgZm9y
ICh2YXIgaSA9IDA7IEluamVjdGVkU2NyaXB0Ll9pc0RlZmluZWQob2JqZWN0KSAmJiBwYXRoICYm
IGkgPCBwYXRoLmxlbmd0aDsgKytpKQotICAgICAgICBvYmplY3QgPSBvYmplY3RbcGF0aFtpXV07
Ci0KLSAgICByZXR1cm4gb2JqZWN0OwotfQotCiBJbmplY3RlZFNjcmlwdC5fbm9kZUZvcklkID0g
ZnVuY3Rpb24obm9kZUlkKQogewogICAgIGlmICghbm9kZUlkKQpAQCAtMzY3LDQ3ICszNDUsNzEg
QEAgSW5qZWN0ZWRTY3JpcHQuX29iamVjdEZvcklkID0gZnVuY3Rpb24ob2JqZWN0SWQpCiAgICAg
Ly8gLSBudW1iZXJzIHBvaW50IHRvIERPTSBOb2RlIHZpYSB0aGUgSW5zcGVjdG9yRE9NQWdlbnQg
bWFwcGluZwogICAgIC8vIC0gc3RyaW5ncyBwb2ludCB0byBjb25zb2xlIG9iamVjdHMgY2FjaGVk
IGluIEluc3BlY3RvckNvbnRyb2xsZXIgZm9yIGxhenkgZXZhbHVhdGlvbiB1cG9uIHRoZW0KICAg
ICAvLyAtIG9iamVjdHMgY29udGFpbiBjb21wbGV4IGlkcyBhbmQgYXJlIGN1cnJlbnRseSB1c2Vk
IGZvciBzY29wZWQgb2JqZWN0cwotICAgIGlmICh0eXBlb2Ygb2JqZWN0SWQgPT09ICJudW1iZXIi
KQotICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuX25vZGVGb3JJZChvYmplY3RJZCk7Ci0g
ICAgZWxzZSBpZiAodHlwZW9mIG9iamVjdElkID09PSAic3RyaW5nIikKLSAgICAgICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0LnVud3JhcE9iamVjdChvYmplY3RJZCk7Ci0gICAgZWxzZSBpZiAodHlw
ZW9mIG9iamVjdElkID09PSAib2JqZWN0IikgewotICAgICAgICB2YXIgY2FsbEZyYW1lID0gSW5q
ZWN0ZWRTY3JpcHQuX2NhbGxGcmFtZUZvcklkKG9iamVjdElkLmNhbGxGcmFtZSk7CisgICAgdmFy
IG9iamVjdDsKKyAgICBpZiAob2JqZWN0SWQudHlwZSA9PT0gIm5vZGUiKQorICAgICAgICBvYmpl
Y3QgPSBJbmplY3RlZFNjcmlwdC5fbm9kZUZvcklkKG9iamVjdElkLnZhbHVlKTsKKyAgICBlbHNl
IGlmIChvYmplY3RJZC50eXBlID09PSAianNvYmplY3QiKQorICAgICAgICBvYmplY3QgPSBJbmpl
Y3RlZFNjcmlwdC51bndyYXBPYmplY3Qob2JqZWN0SWQudmFsdWUpOworICAgIGVsc2UgaWYgKG9i
amVjdElkLnR5cGUgPT09ICJzY29wZU9iamVjdCIpIHsKKyAgICAgICAgdmFyIGNhbGxGcmFtZSA9
IEluamVjdGVkU2NyaXB0Ll9jYWxsRnJhbWVGb3JJZChvYmplY3RJZC52YWx1ZS5jYWxsRnJhbWUp
OwogICAgICAgICBpZiAob2JqZWN0SWQudGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiBj
YWxsRnJhbWUudGhpc09iamVjdDsKKyAgICAgICAgICAgIG9iamVjdCA9IGNhbGxGcmFtZS50aGlz
T2JqZWN0OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gY2FsbEZyYW1lLnNjb3Bl
Q2hhaW5bb2JqZWN0SWQuY2hhaW5JbmRleF07Ci0gICAgfQotICAgIHJldHVybiBvYmplY3RJZDsK
KyAgICAgICAgICAgIG9iamVjdCA9IGNhbGxGcmFtZS5zY29wZUNoYWluW29iamVjdElkLnZhbHVl
LmNoYWluSW5kZXhdOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gb2JqZWN0SWQ7CisKKyAg
ICB2YXIgcGF0aCA9IG9iamVjdElkLnBhdGg7CisKKyAgICAvLyBGb2xsb3cgdGhlIHByb3BlcnR5
IHBhdGguCisgICAgZm9yICh2YXIgaSA9IDA7IEluamVjdGVkU2NyaXB0Ll9pc0RlZmluZWQob2Jq
ZWN0KSAmJiBwYXRoICYmIGkgPCBwYXRoLmxlbmd0aDsgKytpKQorICAgICAgICBvYmplY3QgPSBv
YmplY3RbcGF0aFtpXV07CisKKyAgICByZXR1cm4gb2JqZWN0OwogfQogCi1JbmplY3RlZFNjcmlw
dC5wdXNoTm9kZVRvRnJvbnRlbmQgPSBmdW5jdGlvbihvYmplY3RQcm94eSkKK0luamVjdGVkU2Ny
aXB0LnB1c2hOb2RlVG9Gcm9udGVuZCA9IGZ1bmN0aW9uKG9iamVjdElkKQogewotICAgIHZhciBv
YmplY3QgPSBJbmplY3RlZFNjcmlwdC5fcmVzb2x2ZU9iamVjdChvYmplY3RQcm94eSk7CisgICAg
dmFyIG9iamVjdCA9IEluamVjdGVkU2NyaXB0Ll9vYmplY3RGb3JJZChvYmplY3RJZCk7CiAgICAg
aWYgKCFvYmplY3QgfHwgSW5qZWN0ZWRTY3JpcHQuX3R5cGUob2JqZWN0KSAhPT0gIm5vZGUiKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5wdXNo
Tm9kZVBhdGhUb0Zyb250ZW5kKG9iamVjdCwgZmFsc2UsIGZhbHNlKTsKIH0KIAotLy8gQ2FsbGVk
IGZyb20gd2l0aGluIEluc3BlY3RvckNvbnRyb2xsZXIgb24gdGhlICdpbnNwZWN0ZWQgcGFnZScg
c2lkZS4KLUluamVjdGVkU2NyaXB0LmNyZWF0ZVByb3h5T2JqZWN0ID0gZnVuY3Rpb24ob2JqZWN0
LCBvYmplY3RJZCwgYWJicmV2aWF0ZSkKKy8vIEZJWE1FOiBSZW1vdGVPYmplY3RJZCBhbmQgUmVt
b3RlT2JqZWN0IHN0cnVjdHMgbXVzdCBtYXRjaCB0aGUgV2ViSW5zcGVjdG9yLiogb25lcy4gU2hv
dWxkIHJldXNlIHNhbWUgZmlsZSBpbnN0ZWFkLgorSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0
SWQgPSBmdW5jdGlvbih0eXBlLCB2YWx1ZSwgcGF0aCkKIHsKLSAgICB2YXIgcmVzdWx0ID0ge307
Ci0gICAgcmVzdWx0LmluamVjdGVkU2NyaXB0SWQgPSBpbmplY3RlZFNjcmlwdElkOwotICAgIHJl
c3VsdC5vYmplY3RJZCA9IG9iamVjdElkOwotICAgIHJlc3VsdC50eXBlID0gSW5qZWN0ZWRTY3Jp
cHQuX3R5cGUob2JqZWN0KTsKLSAgICBpZiAocmVzdWx0LnR5cGUgPT09ICJhcnJheSIpCi0gICAg
ICAgIHJlc3VsdC5wcm9wZXJ0eUxlbmd0aCA9IG9iamVjdC5sZW5ndGg7CisgICAgdGhpcy5pbmpl
Y3RlZFNjcmlwdElkID0gaW5qZWN0ZWRTY3JpcHRJZDsKKyAgICB0aGlzLnR5cGUgPSB0eXBlOwor
ICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB0aGlzLnBhdGggPSBwYXRoIHx8IFtdOworfQog
Ci0gICAgdmFyIHR5cGUgPSB0eXBlb2Ygb2JqZWN0OwotICAgIAotICAgIHJlc3VsdC5oYXNDaGls
ZHJlbiA9ICh0eXBlID09PSAib2JqZWN0IiAmJiBvYmplY3QgIT09IG51bGwgJiYgKE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkubGVuZ3RoIHx8ICEhb2JqZWN0Ll9fcHJvdG9fXykp
IHx8IHR5cGUgPT09ICJmdW5jdGlvbiI7CitJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QgPSBm
dW5jdGlvbihvYmplY3RJZCwgdHlwZSwgZGVzY3JpcHRpb24sIGhhc0NoaWxkcmVuKQoreworICAg
IHRoaXMub2JqZWN0SWQgPSBvYmplY3RJZDsKKyAgICB0aGlzLnR5cGUgPSB0eXBlOworICAgIHRo
aXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKKyAgICB0aGlzLmhhc0NoaWxkcmVuID0gaGFz
Q2hpbGRyZW47Cit9CisKK0luamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdC5mcm9tRXhjZXB0aW9u
ID0gZnVuY3Rpb24oZSkKK3sKKyAgICByZXR1cm4gbmV3IEluamVjdGVkU2NyaXB0LlJlbW90ZU9i
amVjdChudWxsLCAiZXJyb3IiLCBlLnRvU3RyaW5nKCkpOworfQorCitJbmplY3RlZFNjcmlwdC5S
ZW1vdGVPYmplY3QuZnJvbU9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdCwgb2JqZWN0SWQsIGFiYnJl
dmlhdGUpCit7CisgICAgdmFyIHR5cGUgPSBJbmplY3RlZFNjcmlwdC5fdHlwZShvYmplY3QpOwor
ICAgIHZhciByYXdUeXBlID0gdHlwZW9mIG9iamVjdDsKKyAgICB2YXIgaGFzQ2hpbGRyZW4gPSAo
cmF3VHlwZSA9PT0gIm9iamVjdCIgJiYgb2JqZWN0ICE9PSBudWxsICYmIChPYmplY3QuZ2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QpLmxlbmd0aCB8fCAhIW9iamVjdC5fX3Byb3RvX18pKSB8fCBy
YXdUeXBlID09PSAiZnVuY3Rpb24iOworICAgIHZhciBkZXNjcmlwdGlvbiA9ICIiOwogICAgIHRy
eSB7Ci0gICAgICAgIHJlc3VsdC5kZXNjcmlwdGlvbiA9IEluamVjdGVkU2NyaXB0Ll9kZXNjcmli
ZShvYmplY3QsIGFiYnJldmlhdGUpOworICAgICAgICB2YXIgZGVzY3JpcHRpb24gPSBJbmplY3Rl
ZFNjcmlwdC5fZGVzY3JpYmUob2JqZWN0LCBhYmJyZXZpYXRlKTsKKyAgICAgICAgcmV0dXJuIG5l
dyBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3Qob2JqZWN0SWQsIHR5cGUsIGRlc2NyaXB0aW9u
LCBoYXNDaGlsZHJlbik7CiAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICByZXN1bHQuZXJyb3JU
ZXh0ID0gZS50b1N0cmluZygpOworICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQuUmVtb3Rl
T2JqZWN0LmZyb21FeGNlcHRpb24oZSk7CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IEluamVjdGVkU2NyaXB0LmV2YWx1YXRlT25TZWxmID0gZnVuY3Rpb24oZnVuY0JvZHksIGFyZ3Mp
CkBAIC00NDIsMTMgKzQ0NCwxNSBAQCBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NvcGVDaGFpbi5sZW5ndGg7
IGkrKykgewogICAgICAgICAgICAgdmFyIHNjb3BlVHlwZSA9IGNhbGxGcmFtZS5zY29wZVR5cGUo
aSk7CiAgICAgICAgICAgICB2YXIgc2NvcGVPYmplY3QgPSBzY29wZUNoYWluW2ldOwotICAgICAg
ICAgICAgdmFyIHNjb3BlT2JqZWN0UHJveHkgPSBJbmplY3RlZFNjcmlwdC5jcmVhdGVQcm94eU9i
amVjdChzY29wZU9iamVjdCwgeyBjYWxsRnJhbWU6IHRoaXMuaWQsIGNoYWluSW5kZXg6IGkgfSwg
dHJ1ZSk7CisgICAgICAgICAgICB2YXIgc2NvcGVPYmplY3RJZCA9IG5ldyBJbmplY3RlZFNjcmlw
dC5SZW1vdGVPYmplY3RJZCgic2NvcGVPYmplY3QiLCB7IGNhbGxGcmFtZTogdGhpcy5pZCwgY2hh
aW5JbmRleDogaSB9KTsKKyAgICAgICAgICAgIHZhciBzY29wZU9iamVjdFByb3h5ID0gSW5qZWN0
ZWRTY3JpcHQuUmVtb3RlT2JqZWN0LmZyb21PYmplY3Qoc2NvcGVPYmplY3QsIHNjb3BlT2JqZWN0
SWQsIHRydWUpOwogCiAgICAgICAgICAgICBzd2l0Y2goc2NvcGVUeXBlKSB7CiAgICAgICAgICAg
ICAgICAgY2FzZSBMT0NBTF9TQ09QRTogewogICAgICAgICAgICAgICAgICAgICBmb3VuZExvY2Fs
U2NvcGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBzY29wZU9iamVjdFByb3h5LmlzTG9j
YWwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBzY29wZU9iamVjdFByb3h5LnRoaXNPYmpl
Y3QgPSBJbmplY3RlZFNjcmlwdC5jcmVhdGVQcm94eU9iamVjdChjYWxsRnJhbWUudGhpc09iamVj
dCwgeyBjYWxsRnJhbWU6IHRoaXMuaWQsIHRoaXNPYmplY3Q6IHRydWUgfSwgdHJ1ZSk7CisgICAg
ICAgICAgICAgICAgICAgIHZhciB0aGlzT2JqZWN0SWQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQuUmVt
b3RlT2JqZWN0SWQoInNjb3BlT2JqZWN0IiwgeyBjYWxsRnJhbWU6IHRoaXMuaWQsIHRoaXNPYmpl
Y3Q6IHRydWUgfSk7CisgICAgICAgICAgICAgICAgICAgIHNjb3BlT2JqZWN0UHJveHkudGhpc09i
amVjdCA9IEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdC5mcm9tT2JqZWN0KGNhbGxGcmFtZS50
aGlzT2JqZWN0LCB0aGlzT2JqZWN0SWQsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBDTE9TVVJFX1NDT1BF
OiB7CkBAIC01MzQsNyArNTM4LDEwIEBAIEluamVjdGVkU2NyaXB0Ll9kZXNjcmliZSA9IGZ1bmN0
aW9uKG9iaiwgYWJicmV2aWF0ZWQpCiAgICAgY2FzZSAib2JqZWN0IjoKICAgICBjYXNlICJub2Rl
IjoKICAgICBjYXNlICJhcnJheSI6Ci0gICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5fY2xh
c3NOYW1lKG9iaik7CisgICAgICAgIHZhciBjbGFzc05hbWUgPSBJbmplY3RlZFNjcmlwdC5fY2xh
c3NOYW1lKG9iaik7CisgICAgICAgIGlmICh0eXBlb2Ygb2JqLmxlbmd0aCA9PT0gIm51bWJlciIp
CisgICAgICAgICAgICBjbGFzc05hbWUgKz0gIlsiICsgb2JqLmxlbmd0aCArICJdIjsKKyAgICAg
ICAgcmV0dXJuIGNsYXNzTmFtZTsKICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICBpZiAoIWFi
YnJldmlhdGVkKQogICAgICAgICAgICAgcmV0dXJuIG9iajsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5qcwppbmRleCBhMzJl
Nzk5Li5hYWI5NTQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2Jq
ZWN0UHJvcGVydGllc1NlY3Rpb24uanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L09iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzCkBAIC01MCw3ICs1MCw3IEBAIFdlYkluc3BlY3Rv
ci5PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgc2VsZi51cGRhdGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpOwog
ICAgICAgICB9OwotICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXQodGhpcy5vYmplY3Qu
aW5qZWN0ZWRTY3JpcHRJZCkuZ2V0UHJvcGVydGllcyh0aGlzLm9iamVjdCwgdGhpcy5pZ25vcmVI
YXNPd25Qcm9wZXJ0eSwgdHJ1ZSwgY2FsbGJhY2spOworICAgICAgICB0aGlzLm9iamVjdC5nZXRQ
cm9wZXJ0aWVzKHRoaXMuaWdub3JlSGFzT3duUHJvcGVydHksIHRydWUsIGNhbGxiYWNrKTsKICAg
ICB9LAogCiAgICAgdXBkYXRlUHJvcGVydGllczogZnVuY3Rpb24ocHJvcGVydGllcywgcm9vdFRy
ZWVFbGVtZW50Q29uc3RydWN0b3IsIHJvb3RQcm9wZXJ0eUNvbXBhcmVyKQpAQCAtNjksOCArNjks
MTAgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZS5yZW1vdmVDaGlsZHJlbigpOwog
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICBwcm9wZXJ0aWVzW2ldLnBhcmVudE9iamVjdCA9IHRoaXMub2JqZWN0OwogICAgICAg
ICAgICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQobmV3IHJvb3RUcmVl
RWxlbWVudENvbnN0cnVjdG9yKHByb3BlcnRpZXNbaV0pKTsKKyAgICAgICAgfQogCiAgICAgICAg
IGlmICghdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuY2hpbGRyZW4ubGVuZ3RoKSB7CiAgICAg
ICAgICAgICB2YXIgdGl0bGUgPSAiPGRpdiBjbGFzcz1cImluZm9cIj4iICsgdGhpcy5lbXB0eVBs
YWNlaG9sZGVyICsgIjwvZGl2PiI7CkBAIC0xNTIsNyArMTU0LDcgQEAgV2ViSW5zcGVjdG9yLk9i
amVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRo
aXMuYXBwZW5kQ2hpbGQobmV3IHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi50cmVlRWxlbWVudENv
bnN0cnVjdG9yKHByb3BlcnRpZXNbaV0pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfTsKLSAg
ICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0KHRoaXMucHJvcGVydHkudmFsdWUuaW5qZWN0
ZWRTY3JpcHRJZCkuZ2V0UHJvcGVydGllcyh0aGlzLnByb3BlcnR5LnZhbHVlLCBmYWxzZSwgdHJ1
ZSwgY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMucHJvcGVydHkudmFsdWUuZ2V0
T3duUHJvcGVydGllcyh0cnVlLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAg
b25kYmxjbGljazogZnVuY3Rpb24oZXZlbnQpCkBAIC0xNzgsMTEgKzE4MCw5IEBAIFdlYkluc3Bl
Y3Rvci5PYmplY3RQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy52YWx1ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAg
IHRoaXMudmFsdWVFbGVtZW50LmNsYXNzTmFtZSA9ICJ2YWx1ZSI7CiAgICAgICAgIHRoaXMudmFs
dWVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5wcm9wZXJ0eS52YWx1ZS5kZXNjcmlwdGlvbjsK
LSAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BlcnR5LnZhbHVlLnByb3BlcnR5TGVuZ3RoICE9
PSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgIHRoaXMudmFsdWVFbGVtZW50LnRleHRDb250ZW50
ICs9ICIgKCIgKyB0aGlzLnByb3BlcnR5LnZhbHVlLnByb3BlcnR5TGVuZ3RoICsgIikiOwogICAg
ICAgICBpZiAodGhpcy5wcm9wZXJ0eS5pc0dldHRlcikKICAgICAgICAgICAgIHRoaXMudmFsdWVF
bGVtZW50LmFkZFN0eWxlQ2xhc3MoImRpbW1lZCIpOwotICAgICAgICBpZiAodGhpcy5wcm9wZXJ0
eS5pc0Vycm9yKQorICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS52YWx1ZS5pc0Vycm9yKCkpCiAg
ICAgICAgICAgICB0aGlzLnZhbHVlRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJlcnJvciIpOwogCiAg
ICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CkBAIC0yNjAsNyAr
MjYwLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlU2libGluZ3MoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfTsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0KHRoaXMucHJv
cGVydHkucGFyZW50T2JqZWN0UHJveHkuaW5qZWN0ZWRTY3JpcHRJZCkuc2V0UHJvcGVydHlWYWx1
ZSh0aGlzLnByb3BlcnR5LnBhcmVudE9iamVjdFByb3h5LCB0aGlzLnByb3BlcnR5Lm5hbWUsIGV4
cHJlc3Npb24udHJpbSgpLCBjYWxsYmFjayk7CisgICAgICAgIHRoaXMucHJvcGVydHkucGFyZW50
T2JqZWN0LnNldFByb3BlcnR5VmFsdWUodGhpcy5wcm9wZXJ0eS5uYW1lLCBleHByZXNzaW9uLnRy
aW0oKSwgY2FsbGJhY2spOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL09iamVjdFByb3h5LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L09iamVjdFByb3h5LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjEzOWM2Li4w
MDAwMDAwCi0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQcm94eS5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XZWJJbnNwZWN0b3IuT2JqZWN0UHJveHkgPSBm
dW5jdGlvbihpbmplY3RlZFNjcmlwdElkLCBvYmplY3RJZCwgcGF0aCwgZGVzY3JpcHRpb24sIGhh
c0NoaWxkcmVuKQotewotICAgIHRoaXMub2JqZWN0SWQgPSBvYmplY3RJZDsKLSAgICB0aGlzLmlu
amVjdGVkU2NyaXB0SWQgPSBpbmplY3RlZFNjcmlwdElkOwotICAgIHRoaXMucGF0aCA9IHBhdGgg
fHwgW107Ci0gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOwotICAgIHRoaXMuaGFz
Q2hpbGRyZW4gPSBoYXNDaGlsZHJlbjsKLX0KLQotV2ViSW5zcGVjdG9yLk9iamVjdFByb3h5Lndy
YXBQcmltaXRpdmVWYWx1ZSA9IGZ1bmN0aW9uKHZhbHVlKQotewotICAgIHZhciBwcm94eSA9IG5l
dyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJveHkoKTsKLSAgICBwcm94eS50eXBlID0gdHlwZW9mIHZh
bHVlOwotICAgIHByb3h5LmRlc2NyaXB0aW9uID0gdmFsdWU7Ci0gICAgcmV0dXJuIHByb3h5Owot
fQotCi1XZWJJbnNwZWN0b3IuT2JqZWN0UHJveHkuZ2V0UHJvcGVydGllc0FzeW5jID0gZnVuY3Rp
b24ob2JqZWN0UHJveHksIHByb3BlcnRpZXNUb1F1ZXJ5Rm9yLCBjYWxsYmFjaykKLXsKLSAgICBm
dW5jdGlvbiBjcmVhdGVQcm9wZXJ0aWVzTWFwVGhlbkNhbGxiYWNrKHByb3BlcnRpZXNQYXlsb2Fk
KQotICAgIHsKLSAgICAgICAgaWYgKCFwcm9wZXJ0aWVzUGF5bG9hZCkgewotICAgICAgICAgICAg
Y2FsbGJhY2soKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZh
ciByZXN1bHQgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzUGF5
bG9hZC5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzVG9RdWVyeUZvci5p
bmRleE9mKHByb3BlcnRpZXNQYXlsb2FkW2ldLm5hbWUpICE9PSAtMSkKLSAgICAgICAgICAgICAg
ICByZXN1bHRbcHJvcGVydGllc1BheWxvYWRbaV0ubmFtZV0gPSBwcm9wZXJ0aWVzUGF5bG9hZFtp
XS52YWx1ZS5kZXNjcmlwdGlvbjsKLSAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICB9Owot
ICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldChvYmplY3RQcm94eS5pbmplY3RlZFNjcmlwdElk
KS5nZXRQcm9wZXJ0aWVzKG9iamVjdFByb3h5LCB0cnVlLCBmYWxzZSwgY3JlYXRlUHJvcGVydGll
c01hcFRoZW5DYWxsYmFjayk7Ci19Ci0KLVdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0eVByb3h5
ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpCi17Ci0gICAgdGhpcy5uYW1lID0gbmFtZTsKLSAgICB0
aGlzLnZhbHVlID0gdmFsdWU7Ci19CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Byb3BlcnRpZXNTaWRlYmFyUGFuZS5qcwppbmRleCA5ZGY2NDQ4Li5kNjQ4ODFjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1NpZGViYXJQYW5l
LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0aWVzU2lkZWJhclBh
bmUuanMKQEAgLTUxLDE0ICs1MSwxNCBAQCBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NpZGViYXJQ
YW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBwYXRoID0gW107CiAgICAgICAgICAg
ICAvLyBHZXQgYXJyYXkgb2YgcHJvdG90eXBlIHVzZXItZnJpZW5kbHkgbmFtZXMuCiAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3RvdHlwZXMubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgcHJvdG90eXBlID0gbmV3IFdlYkluc3BlY3Rvci5PYmplY3RQcm94eShu
b2RlLmluamVjdGVkU2NyaXB0SWQsIG5vZGUuaWQsIHBhdGguc2xpY2UoKSk7CisgICAgICAgICAg
ICAgICAgdmFyIHByb3RvdHlwZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21O
b2RlKG5vZGUsIHBhdGguc2xpY2UoKSk7CiAgICAgICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBu
ZXcgV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnRpZXNTZWN0aW9uKHByb3RvdHlwZSwgcHJvdG90
eXBlc1tpXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm90b3R5cGUiKSk7CiAgICAgICAgICAg
ICAgICAgc2VsZi5zZWN0aW9ucy5wdXNoKHNlY3Rpb24pOwogICAgICAgICAgICAgICAgIGJvZHku
YXBwZW5kQ2hpbGQoc2VjdGlvbi5lbGVtZW50KTsKICAgICAgICAgICAgICAgICBwYXRoLnB1c2go
Il9fcHJvdG9fXyIpOwogICAgICAgICAgICAgfQogICAgICAgICB9OwotICAgICAgICBJbmplY3Rl
ZFNjcmlwdEFjY2Vzcy5nZXQobm9kZS5pbmplY3RlZFNjcmlwdElkKS5nZXRQcm90b3R5cGVzKG5v
ZGUuaWQsIGNhbGxiYWNrKTsKKyAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0KC1ub2Rl
LmlkKS5nZXRQcm90b3R5cGVzKG5vZGUuaWQsIGNhbGxiYWNrKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZW1vdGVPYmplY3QuanMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVtb3RlT2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjZiMjE2NzcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUmVtb3RlT2JqZWN0LmpzCkBAIC0wLDAgKzEsMTU2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdElkID0gZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRJZCwgdHlwZSwg
dmFsdWUsIHBhdGgpCit7CisgICAgdGhpcy5pbmplY3RlZFNjcmlwdElkID0gaW5qZWN0ZWRTY3Jp
cHRJZDsKKyAgICB0aGlzLnR5cGUgPSB0eXBlOworICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAg
ICB0aGlzLnBhdGggPSBwYXRoIHx8IFtdOworfQorCitXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
ID0gZnVuY3Rpb24ob2JqZWN0SWQsIHR5cGUsIGRlc2NyaXB0aW9uLCBoYXNDaGlsZHJlbikKK3sK
KyAgICB0aGlzLl9vYmplY3RJZCA9IG9iamVjdElkOworICAgIHRoaXMuX3R5cGUgPSB0eXBlOwor
ICAgIHRoaXMuX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisgICAgdGhpcy5faGFzQ2hpbGRy
ZW4gPSBoYXNDaGlsZHJlbjsKK30KKworV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUHJp
bWl0aXZlVmFsdWUgPSBmdW5jdGlvbih2YWx1ZSkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QobnVsbCwgdHlwZW9mIHZhbHVlLCB2YWx1ZSk7Cit9CisKK1dlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbU5vZGUgPSBmdW5jdGlvbihub2RlLCBwYXRoKQorewor
ICAgIHZhciBvYmplY3RJZCA9IG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0SWQoLW5vZGUu
aWQsICJub2RlIiwgbm9kZS5pZCwgcGF0aCk7CisgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
UmVtb3RlT2JqZWN0KG9iamVjdElkLCAibm9kZSIsIGFwcHJvcHJpYXRlU2VsZWN0b3JGb3JOb2Rl
KG5vZGUpLCB0cnVlKTsKK30KKworV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9h
ZCA9IGZ1bmN0aW9uKHBheWxvYWQpCit7CisgICAgaWYgKHR5cGVvZiBwYXlsb2FkID09PSAib2Jq
ZWN0IikKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KHBheWxv
YWQub2JqZWN0SWQsIHBheWxvYWQudHlwZSwgcGF5bG9hZC5kZXNjcmlwdGlvbiwgcGF5bG9hZC5o
YXNDaGlsZHJlbik7CisgICAgLy8gRklYTUU6IG1ha2Ugc3VyZSB3ZSBvbmx5IGdldCBoZXJlIHdp
dGggcmVhbCBwYXlsb2FkcyBpbiB0aGUgbmV3IERlYnVnZ2VyQWdlbnQuanMuCisgICAgcmV0dXJu
IHBheWxvYWQ7Cit9CisKK1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QudHlwZSA9IGZ1bmN0aW9u
KHJlbW90ZU9iamVjdCkKK3sKKyAgICBpZiAocmVtb3RlT2JqZWN0ID09PSBudWxsKQorICAgICAg
ICByZXR1cm4gIm51bGwiOworCisgICAgdmFyIHR5cGUgPSB0eXBlb2YgcmVtb3RlT2JqZWN0Owor
ICAgIGlmICh0eXBlICE9PSAib2JqZWN0IiAmJiB0eXBlICE9PSAiZnVuY3Rpb24iKQorICAgICAg
ICByZXR1cm4gdHlwZTsKKworICAgIHJldHVybiByZW1vdGVPYmplY3QudHlwZTsKK30KKworV2Vi
SW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUgPSB7CisgICAgZ2V0IG9iamVjdElkKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RJZDsKKyAgICB9LAorCisgICAgZ2V0
IHR5cGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7CisgICAgfSwKKworICAg
IGdldCBkZXNjcmlwdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZGVzY3JpcHRp
b247CisgICAgfSwKKworICAgIGdldCBoYXNDaGlsZHJlbigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5faGFzQ2hpbGRyZW47CisgICAgfSwKKworICAgIGlzRXJyb3I6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90eXBlID09PSAiZXJyb3IiOworICAgIH0sCisK
KyAgICBnZXRQcm9wZXJ0eVZhbHVlRGVzY3JpcHRpb25zOiBmdW5jdGlvbihwcm9wZXJ0aWVzVG9R
dWVyeUZvciwgY2FsbGJhY2spCisgICAgeworICAgICAgICBmdW5jdGlvbiBjcmVhdGVQcm9wZXJ0
aWVzTWFwVGhlbkNhbGxiYWNrKHByb3BlcnRpZXNQYXlsb2FkKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIXByb3BlcnRpZXNQYXlsb2FkKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2so
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgCisgICAgICAg
ICAgICB2YXIgcmVzdWx0ID0ge307CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBy
b3BlcnRpZXNQYXlsb2FkLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0
aWVzVG9RdWVyeUZvci5pbmRleE9mKHByb3BlcnRpZXNQYXlsb2FkW2ldLm5hbWUpICE9PSAtMSkK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3Byb3BlcnRpZXNQYXlsb2FkW2ldLm5hbWVdID0g
cHJvcGVydGllc1BheWxvYWRbaV0udmFsdWUuZGVzY3JpcHRpb247CisgICAgICAgICAgICBjYWxs
YmFjayhyZXN1bHQpOworICAgICAgICB9CisgICAgICAgIHRoaXMuZ2V0UHJvcGVydGllcyh0cnVl
LCBmYWxzZSwgY3JlYXRlUHJvcGVydGllc01hcFRoZW5DYWxsYmFjayk7CisgICAgfSwKKworICAg
IGdldE93blByb3BlcnRpZXM6IGZ1bmN0aW9uKGFiYnJldmlhdGUsIGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgdGhpcy5nZXRQcm9wZXJ0aWVzKGZhbHNlLCBhYmJyZXZpYXRlLCBjYWxsYmFjayk7
CisgICAgfSwKKworICAgIGdldFByb3BlcnRpZXM6IGZ1bmN0aW9uKGlnbm9yZUhhc093blByb3Bl
cnR5LCBhYmJyZXZpYXRlLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fb2Jq
ZWN0SWQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFtdKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiByZW1vdGVPYmplY3RCaW5kZXIocHJvcGVydGll
cykKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IHByb3BlcnRpZXMgJiYg
aSA8IHByb3BlcnRpZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgcHJvcGVydGllc1tp
XS52YWx1ZSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocHJvcGVydGll
c1tpXS52YWx1ZSk7CisgICAgICAgICAgICBjYWxsYmFjayhwcm9wZXJ0aWVzKTsKKyAgICAgICAg
fQorICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXQodGhpcy5fb2JqZWN0SWQuaW5qZWN0
ZWRTY3JpcHRJZCkuZ2V0UHJvcGVydGllcyh0aGlzLl9vYmplY3RJZCwgaWdub3JlSGFzT3duUHJv
cGVydHksIGFiYnJldmlhdGUsIHJlbW90ZU9iamVjdEJpbmRlcik7CisgICAgfSwKKworICAgIHNl
dFByb3BlcnR5VmFsdWU6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlLCBjYWxsYmFjaykKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5fb2JqZWN0SWQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNl
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBJbmplY3RlZFNjcmlw
dEFjY2Vzcy5nZXQodGhpcy5fb2JqZWN0SWQuaW5qZWN0ZWRTY3JpcHRJZCkuc2V0UHJvcGVydHlW
YWx1ZSh0aGlzLl9vYmplY3RJZCwgbmFtZSwgdmFsdWUsIGNhbGxiYWNrKTsKKyAgICB9Cit9CisK
K1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eSA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVl
KQoreworICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njb3BlQ2hhaW5TaWRlYmFy
UGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY29wZUNoYWluU2lkZWJhclBh
bmUuanMKaW5kZXggZmRmY2QzOC4uZDMxOTBhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Njb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NvcGVDaGFpblNpZGViYXJQYW5lLmpzCkBAIC02MCw3ICs2MCw3IEBA
IFdlYkluc3BlY3Rvci5TY29wZUNoYWluU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgIGVtcHR5UGxhY2Vob2xkZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIFZh
cmlhYmxlcyIpOwogICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gbnVsbDsKICAgICAgICAgICAg
ICAgICBpZiAoc2NvcGVPYmplY3RQcm94eS50aGlzT2JqZWN0KQotICAgICAgICAgICAgICAgICAg
ICBleHRyYVByb3BlcnRpZXMgPSBbIG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydHlQcm94
eSgidGhpcyIsIHNjb3BlT2JqZWN0UHJveHkudGhpc09iamVjdCkgXTsKKyAgICAgICAgICAgICAg
ICAgICAgZXh0cmFQcm9wZXJ0aWVzID0gWyBuZXcgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFBy
b3BlcnR5KCJ0aGlzIiwgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChzY29w
ZU9iamVjdFByb3h5LnRoaXNPYmplY3QpKSBdOwogICAgICAgICAgICAgfSBlbHNlIGlmIChzY29w
ZU9iamVjdFByb3h5LmlzQ2xvc3VyZSkgewogICAgICAgICAgICAgICAgIHRpdGxlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDbG9zdXJlIik7CiAgICAgICAgICAgICAgICAgZW1wdHlQbGFjZWhv
bGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gVmFyaWFibGVzIik7CkBAIC03Nyw3ICs3
Nyw3IEBAIFdlYkluc3BlY3Rvci5TY29wZUNoYWluU2lkZWJhclBhbmUucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgaWYgKCF0aXRsZSB8fCB0aXRsZSA9PT0gc3VidGl0bGUpCiAgICAgICAgICAg
ICAgICAgc3VidGl0bGUgPSBudWxsOwogCi0gICAgICAgICAgICB2YXIgc2VjdGlvbiA9IG5ldyBX
ZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rpb24oc2NvcGVPYmplY3RQcm94eSwgdGl0
bGUsIHN1YnRpdGxlLCBlbXB0eVBsYWNlaG9sZGVyLCB0cnVlLCBleHRyYVByb3BlcnRpZXMsIFdl
Ykluc3BlY3Rvci5TY29wZVZhcmlhYmxlVHJlZUVsZW1lbnQpOworICAgICAgICAgICAgdmFyIHNl
Y3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnRpZXNTZWN0aW9uKFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQoc2NvcGVPYmplY3RQcm94eSksIHRpdGxlLCBz
dWJ0aXRsZSwgZW1wdHlQbGFjZWhvbGRlciwgdHJ1ZSwgZXh0cmFQcm9wZXJ0aWVzLCBXZWJJbnNw
ZWN0b3IuU2NvcGVWYXJpYWJsZVRyZWVFbGVtZW50KTsKICAgICAgICAgICAgIHNlY3Rpb24uZWRp
dEluU2VsZWN0ZWRDYWxsRnJhbWVXaGVuUGF1c2VkID0gdHJ1ZTsKICAgICAgICAgICAgIHNlY3Rp
b24ucGFuZSA9IHRoaXM7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1Bh
bmVsLmpzCmluZGV4IDQ0YzFkYmEuLjE2ZTYwY2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMzg3LDkgKzM4Nyw5IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdXBkYXRlSW50ZXJmYWNlID0g
dHJ1ZTsKIAogICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIGZ1bmN0aW9uIHVwZGF0
aW5nQ2FsbGJhY2tXcmFwcGVyKHJlc3VsdCwgZXhjZXB0aW9uKQorICAgICAgICBmdW5jdGlvbiB1
cGRhdGluZ0NhbGxiYWNrV3JhcHBlcihyZXN1bHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKHJlc3VsdCwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
CiAgICAgICAgICAgICBpZiAodXBkYXRlSW50ZXJmYWNlKQogICAgICAgICAgICAgICAgIHNlbGYu
c2lkZWJhclBhbmVzLnNjb3BlY2hhaW4udXBkYXRlKHNlbGVjdGVkQ2FsbEZyYW1lKTsKICAgICAg
ICAgfQpAQCAtNDAxLDcgKzQwMSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICBmdW5jdGlvbiBldmFsQ2FsbGJhY2socmVzdWx0KQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3Vs
dC52YWx1ZSwgcmVzdWx0LmlzRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHJlc3VsdCkpOwogICAgICAgICB9
CiAgICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldChjYWxsRnJhbWUuaW5qZWN0ZWRTY3Jp
cHRJZCkuZXZhbHVhdGVJbkNhbGxGcmFtZShjYWxsRnJhbWUuaWQsIGNvZGUsIG9iamVjdEdyb3Vw
LCBldmFsQ2FsbGJhY2spOwogICAgIH0sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU291cmNlRnJhbWUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291
cmNlRnJhbWUuanMKaW5kZXggNzNjM2UyYS4uMDFhOGVjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwpAQCAtNjI1LDkgKzYyNSw5IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBwb3B1cENvbnRlbnRFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIGtpbGxIaWRlUG9wdXBUaW1lci5iaW5k
KHRoaXMpLCB0cnVlKTsKICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlQ2Fs
bGJhY2socmVzdWx0LCBleGNlcHRpb24pCisgICAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlQ2FsbGJh
Y2socmVzdWx0KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAg
ICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMucGF1c2VkKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTY5OSwxMSArNjk5LDExIEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFy
IGV4cHJlc3Npb24gPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS50b1N0cmluZygpLnRyaW0oKTsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLmV2YWx1YXRlSW5TZWxlY3RlZENh
bGxGcmFtZShleHByZXNzaW9uLCBmYWxzZSwgImNvbnNvbGUiLCBmdW5jdGlvbihyZXN1bHQsIGV4
Y2VwdGlvbikgeworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuZXZhbHVhdGVJ
blNlbGVjdGVkQ2FsbEZyYW1lKGV4cHJlc3Npb24sIGZhbHNlLCAiY29uc29sZSIsIGZ1bmN0aW9u
KHJlc3VsdCkgewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dDb25zb2xlKCk7CiAgICAg
ICAgICAgICB2YXIgY29tbWFuZE1lc3NhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21t
YW5kKGV4cHJlc3Npb24pOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkTWVz
c2FnZShjb21tYW5kTWVzc2FnZSk7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5h
ZGRNZXNzYWdlKG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQocmVzdWx0LCBl
eGNlcHRpb24sIGNvbW1hbmRNZXNzYWdlKSk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY29u
c29sZS5hZGRNZXNzYWdlKG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQocmVz
dWx0LCBjb21tYW5kTWVzc2FnZSkpOwogICAgICAgICB9KTsKICAgICB9LAogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5l
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFy
UGFuZS5qcwppbmRleCBiNTMwYWI2Li4yOGRhZDIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XYXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMKQEAg
LTkwLDI0ICs5MCwxMCBAQCBXZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NlY3Rpb24uTmV3
V2F0Y2hFeHByZXNzaW9uID0gIlx4QTAiOwogV2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNT
ZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIGZ1bmN0aW9uIGFwcGVuZFJlc3VsdChleHByZXNzaW9uLCB3YXRjaEluZGV4LCByZXN1bHQs
IGV4Y2VwdGlvbikKKyAgICAgICAgZnVuY3Rpb24gYXBwZW5kUmVzdWx0KGV4cHJlc3Npb24sIHdh
dGNoSW5kZXgsIHJlc3VsdCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikg
ewotICAgICAgICAgICAgICAgIC8vIEV4Y2VwdGlvbiByZXN1bHRzIGFyZSBub3Qgd3JhcHBlcnMs
IGJ1dCB0ZXh0IG1lc3NhZ2VzLgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFdlYkluc3BlY3Rv
ci5PYmplY3RQcm94eS53cmFwUHJpbWl0aXZlVmFsdWUocmVzdWx0KTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAocmVzdWx0LnR5cGUgPT09ICJzdHJpbmciKSB7Ci0gICAgICAgICAgICAgICAgLy8g
RXZhbHVhdGlvbiByZXN1bHQgaXMgaW50ZW50aW9uYWxseSBub3QgYWJicmV2aWF0ZWQuIEhvd2V2
ZXIsIHdlJ2QgbGlrZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIG51bGwgYW5kICJudWxsIgotICAg
ICAgICAgICAgICAgIHJlc3VsdC5kZXNjcmlwdGlvbiA9ICJcIiIgKyByZXN1bHQuZGVzY3JpcHRp
b24gKyAiXCIiOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBu
ZXcgV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnR5UHJveHkoZXhwcmVzc2lvbiwgcmVzdWx0KTsK
KyAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
UHJvcGVydHkoZXhwcmVzc2lvbiwgcmVzdWx0KTsKICAgICAgICAgICAgIHByb3BlcnR5LndhdGNo
SW5kZXggPSB3YXRjaEluZGV4OwotICAgICAgICAgICAgcHJvcGVydHkuaXNFeGNlcHRpb24gPSBl
eGNlcHRpb247Ci0KLSAgICAgICAgICAgIC8vIEZvciBuZXdseSBhZGRlZCwgZW1wdHkgZXhwcmVz
c2lvbnMsIHNldCBkZXNjcmlwdGlvbiB0byAiIiwKLSAgICAgICAgICAgIC8vIHNpbmNlIG90aGVy
d2lzZSB5b3UgZ2V0IERPTVdpbmRvdwotICAgICAgICAgICAgaWYgKHByb3BlcnR5Lm5hbWUgPT09
IFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbi5OZXdXYXRjaEV4cHJlc3Npb24p
IAotICAgICAgICAgICAgICAgIHByb3BlcnR5LnZhbHVlLmRlc2NyaXB0aW9uID0gIiI7CiAKICAg
ICAgICAgICAgIC8vIFRvIGNsYXJpZnkgd2hhdCdzIGdvaW5nIG9uIGhlcmU6IAogICAgICAgICAg
ICAgLy8gSW4gdGhlIG91dGVyIGZ1bmN0aW9uLCB3ZSBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBw
cm9wZXJ0aWVzCkBAIC0yMjIsNyArMjA4LDcgQEAgV2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lv
blRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5P
YmplY3RQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGUuY2FsbCh0aGlzKTsKIAot
ICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5pc0V4Y2VwdGlvbikKKyAgICAgICAgaWYgKHRoaXMu
cHJvcGVydHkudmFsdWUuaXNFcnJvcigpKQogICAgICAgICAgICAgdGhpcy52YWx1ZUVsZW1lbnQu
YWRkU3R5bGVDbGFzcygid2F0Y2gtZXhwcmVzc2lvbnMtZXJyb3ItbGV2ZWwiKTsKIAogICAgICAg
ICB2YXIgZGVsZXRlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggYTU0OTM2Yy4uZmViY2FkNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTUyLDcgKzUyLDYgQEAK
ICAgICA8ZmlsZT5NZXRyaWNzU2lkZWJhclBhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+T2JqZWN0
LmpzPC9maWxlPgogICAgIDxmaWxlPk9iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzPC9maWxlPgot
ICAgIDxmaWxlPk9iamVjdFByb3h5LmpzPC9maWxlPgogICAgIDxmaWxlPlBhbmVsLmpzPC9maWxl
PgogICAgIDxmaWxlPlBhbmVsRW5hYmxlclZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+UGxhY2Fy
ZC5qczwvZmlsZT4KQEAgLTYyLDYgKzYxLDcgQEAKICAgICA8ZmlsZT5Qcm9maWxlVmlldy5qczwv
ZmlsZT4KICAgICA8ZmlsZT5Qcm9wZXJ0aWVzU2VjdGlvbi5qczwvZmlsZT4KICAgICA8ZmlsZT5Q
cm9wZXJ0aWVzU2lkZWJhclBhbmUuanM8L2ZpbGU+CisgICAgPGZpbGU+UmVtb3RlT2JqZWN0Lmpz
PC9maWxlPgogICAgIDxmaWxlPlJlc291cmNlLmpzPC9maWxlPgogICAgIDxmaWxlPlJlc291cmNl
Q2F0ZWdvcnkuanM8L2ZpbGU+CiAgICAgPGZpbGU+UmVzb3VyY2VzUGFuZWwuanM8L2ZpbGU+CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggNDhlOTViYi4u
MTRlMmNkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApA
QCAtNzMsNyArNzMsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IlNpZGViYXJUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2VjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJvcGVydGllc1NlY3Rpb24uanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik9iamVjdFBy
b3h5LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJSZW1vdGVPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9Ik9iamVjdFByb3BlcnRpZXNTZWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJCcmVha3BvaW50c1NpZGViYXJQYW5l
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJD
YWxsU3RhY2tTaWRlYmFyUGFuZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcwppbmRleCA0ZThlNjMzLi42ODE2ZDIzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTE0NjcsMTIgKzE0NjcsNiBAQCBXZWJJbnNw
ZWN0b3IubG9nID0gZnVuY3Rpb24obWVzc2FnZSwgbWVzc2FnZUxldmVsKQogICAgIC8vIHJlbWVt
YmVyICd0aGlzJyBmb3Igc2V0SW50ZXJ2YWwoKSBjYWxsYmFjawogICAgIHZhciBzZWxmID0gdGhp
czsKIAotICAgIC8vIHJldHVybiBpbmRpY2F0aW9uIGlmIHdlIGNhbiBhY3R1YWxseSBsb2cgYSBt
ZXNzYWdlCi0gICAgZnVuY3Rpb24gaXNMb2dBdmFpbGFibGUoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZSAmJiBXZWJJbnNwZWN0b3IuT2JqZWN0UHJv
eHkgJiYgc2VsZi5jb25zb2xlOwotICAgIH0KLQogICAgIC8vIGZsdXNoIHRoZSBxdWV1ZSBvZiBw
ZW5kaW5nIG1lc3NhZ2VzCiAgICAgZnVuY3Rpb24gZmx1c2hRdWV1ZSgpCiAgICAgewpAQCAtMTUx
MCw3ICsxNTA0LDcgQEAgV2ViSW5zcGVjdG9yLmxvZyA9IGZ1bmN0aW9uKG1lc3NhZ2UsIG1lc3Nh
Z2VMZXZlbCkKICAgICAgICAgV2ViSW5zcGVjdG9yLmxvZy5yZXBlYXRDb3VudCA9IHJlcGVhdENv
dW50OwogCiAgICAgICAgIC8vIENvbnNvbGVNZXNzYWdlIGV4cGVjdHMgYSBwcm94eSBvYmplY3QK
LSAgICAgICAgbWVzc2FnZSA9IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0UHJveHkobnVsbCwgbnVs
bCwgW10sIG1lc3NhZ2UsIGZhbHNlKTsKKyAgICAgICAgbWVzc2FnZSA9IG5ldyBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LmZyb21QcmltaXRpdmVWYWx1ZShtZXNzYWdlKTsKIAogICAgICAgICAv
LyBwb3N0IHRoZSBtZXNzYWdlCiAgICAgICAgIHZhciBtc2cgPSBuZXcgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlKApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0
aWxpdGllcy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKaW5k
ZXggZGQzZTc2MS4uNjZjZjI4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL3V0aWxpdGllcy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0
aWVzLmpzCkBAIC0yNiwxOCArMjYsNiBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1PYmplY3QucHJv
eHlUeXBlID0gZnVuY3Rpb24ob2JqZWN0UHJveHkpCi17Ci0gICAgaWYgKG9iamVjdFByb3h5ID09
PSBudWxsKQotICAgICAgICByZXR1cm4gIm51bGwiOwotCi0gICAgdmFyIHR5cGUgPSB0eXBlb2Yg
b2JqZWN0UHJveHk7Ci0gICAgaWYgKHR5cGUgIT09ICJvYmplY3QiICYmIHR5cGUgIT09ICJmdW5j
dGlvbiIpCi0gICAgICAgIHJldHVybiB0eXBlOwotCi0gICAgcmV0dXJuIG9iamVjdFByb3h5LnR5
cGU7Ci19Ci0KIE9iamVjdC5wcm9wZXJ0aWVzID0gZnVuY3Rpb24ob2JqKQogewogICAgIHZhciBw
cm9wZXJ0aWVzID0gW107CkBAIC04NDcsNyArODM1LDcgQEAgU3RyaW5nLnRva2VuaXplRm9ybWF0
U3RyaW5nID0gZnVuY3Rpb24oZm9ybWF0KQogU3RyaW5nLnN0YW5kYXJkRm9ybWF0dGVycyA9IHsK
ICAgICBkOiBmdW5jdGlvbihzdWJzdGl0dXRpb24pCiAgICAgewotICAgICAgICBpZiAodHlwZW9m
IHN1YnN0aXR1dGlvbiA9PSAib2JqZWN0IiAmJiBPYmplY3QucHJveHlUeXBlKHN1YnN0aXR1dGlv
bikgPT09ICJudW1iZXIiKQorICAgICAgICBpZiAodHlwZW9mIHN1YnN0aXR1dGlvbiA9PSAib2Jq
ZWN0IiAmJiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnR5cGUoc3Vic3RpdHV0aW9uKSA9PT0g
Im51bWJlciIpCiAgICAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24uZGVzY3Jp
cHRpb247CiAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHBhcnNlSW50KHN1YnN0aXR1dGlvbik7CiAg
ICAgICAgIHJldHVybiAhaXNOYU4oc3Vic3RpdHV0aW9uKSA/IHN1YnN0aXR1dGlvbiA6IDA7CkBA
IC04NTUsNyArODQzLDcgQEAgU3RyaW5nLnN0YW5kYXJkRm9ybWF0dGVycyA9IHsKIAogICAgIGY6
IGZ1bmN0aW9uKHN1YnN0aXR1dGlvbiwgdG9rZW4pCiAgICAgewotICAgICAgICBpZiAodHlwZW9m
IHN1YnN0aXR1dGlvbiA9PSAib2JqZWN0IiAmJiBPYmplY3QucHJveHlUeXBlKHN1YnN0aXR1dGlv
bikgPT09ICJudW1iZXIiKQorICAgICAgICBpZiAodHlwZW9mIHN1YnN0aXR1dGlvbiA9PSAib2Jq
ZWN0IiAmJiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnR5cGUoc3Vic3RpdHV0aW9uKSA9PT0g
Im51bWJlciIpCiAgICAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24uZGVzY3Jp
cHRpb247CiAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHBhcnNlRmxvYXQoc3Vic3RpdHV0aW9uKTsK
ICAgICAgICAgaWYgKHN1YnN0aXR1dGlvbiAmJiB0b2tlbi5wcmVjaXNpb24gPiAtMSkKQEAgLTg2
NSw3ICs4NTMsNyBAQCBTdHJpbmcuc3RhbmRhcmRGb3JtYXR0ZXJzID0gewogCiAgICAgczogZnVu
Y3Rpb24oc3Vic3RpdHV0aW9uKQogICAgIHsKLSAgICAgICAgaWYgKHR5cGVvZiBzdWJzdGl0dXRp
b24gPT0gIm9iamVjdCIgJiYgT2JqZWN0LnByb3h5VHlwZShzdWJzdGl0dXRpb24pICE9PSAibnVs
bCIpCisgICAgICAgIGlmICh0eXBlb2Ygc3Vic3RpdHV0aW9uID09ICJvYmplY3QiICYmIFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QudHlwZShzdWJzdGl0dXRpb24pICE9PSAibnVsbCIpCiAgICAg
ICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24uZGVzY3JpcHRpb247CiAgICAgICAg
IHJldHVybiBzdWJzdGl0dXRpb247CiAgICAgfSwK
</data>
<flag name="review"
          id="52734"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>