<?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>143111</bug_id>
          
          <creation_ts>2015-03-26 12:13:18 -0700</creation_ts>
          <short_desc>Web Inspector: Convert TreeElement classes to ES6</short_desc>
          <delta_ts>2015-04-21 20:31:19 -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</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>142891</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1080374</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 12:13:18 -0700</bug_when>
    <thetext>Convert TreeOutline and TreeElement to ES6 classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080375</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-26 12:13:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/20313226&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080377</commentid>
    <comment_count>2</comment_count>
      <attachid>249506</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 12:16:18 -0700</bug_when>
    <thetext>Created attachment 249506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080378</commentid>
    <comment_count>3</comment_count>
      <attachid>249507</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 12:17:08 -0700</bug_when>
    <thetext>Created attachment 249507
Patch (Ignore Space)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080385</commentid>
    <comment_count>4</comment_count>
      <attachid>249510</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 13:10:54 -0700</bug_when>
    <thetext>Created attachment 249510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080415</commentid>
    <comment_count>5</comment_count>
      <attachid>249507</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-26 15:06:01 -0700</bug_when>
    <thetext>Comment on attachment 249507
Patch (Ignore Space)

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

r=me. but there is at least one issue here worth testing.

&gt; Source/WebInspectorUI/UserInterface/Views/ApplicationCacheFrameTreeElement.js:58
&gt; +WebInspector.ApplicationCacheFrameTreeElement.StyleClassName = &quot;application-cache-frame&quot;;

Nit: inline!

&gt; Source/WebInspectorUI/UserInterface/Views/ApplicationCacheManifestTreeElement.js:71
&gt; +WebInspector.ApplicationCacheManifestTreeElement.StyleClassName = &quot;application-cache-manifest&quot;;

Nit: inline!

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:222
&gt; -                console.error(e);
&gt; +                console.error(e, e.stack);

The thing about including stack, is that we shouldn&apos;t need to do it once we improve our console.error output. But fine for now.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:287
&gt; +    superExpandRecursively()
&gt; +    {
&gt; +        // FIXME: This is a hack to allow using super in a callback.
&gt; +        super.expandRecursively(Number.MAX_VALUE);
&gt; +    }

Sounds like you already came up with a better solution on IRC.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:1364
&gt; +WebInspector.DOMTreeElement.ForbiddenClosingTagElements = [
&gt; +    &quot;area&quot;, &quot;base&quot;, &quot;basefont&quot;, &quot;br&quot;, &quot;canvas&quot;, &quot;col&quot;, &quot;command&quot;, &quot;embed&quot;, &quot;frame&quot;,
&gt; +    &quot;hr&quot;, &quot;img&quot;, &quot;input&quot;, &quot;isindex&quot;, &quot;keygen&quot;, &quot;link&quot;, &quot;meta&quot;, &quot;param&quot;, &quot;source&quot;
&gt; +].keySet();

Looking at:
https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element

For &quot;No end tag&quot; includes:

    &quot;wbr&quot;, &quot;track&quot;, and &quot;menuitem&quot;?

Which may be worth adding.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js:1369
&gt; +WebInspector.DOMTreeElement.EditTagBlacklist = [
&gt; +    &quot;html&quot;, &quot;head&quot;, &quot;body&quot;
&gt; +].keySet();

keySet could just become new Set(...) now that we consume a list properly:

    WebInspector.DOMTreeElement.EditTagBlacklist = new Set([&quot;html&quot;, &quot;head&quot;, &quot;body&quot;]);

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:242
&gt; +
&gt; +
&gt; +    populateContextMenu(contextMenu, event, treeElement)

Nit: Extra newline.

&gt; Source/WebInspectorUI/UserInterface/Views/ObjectTreeSetIndexTreeElement.js:33
&gt;          console.assert(object instanceof WebInspector.RemoteObject);
&gt;  
&gt; -    this._object = object;
&gt; -
&gt;          // Treat the same as an array-index just with different strings and widths.
&gt; -    WebInspector.ObjectTreeBaseTreeElement.call(this, this._object, propertyPath);
&gt; +        super(this._object, propertyPath);

BUG! This is using &quot;this._object&quot; which will be both a TDZ and a bug since &quot;this._object&quot; is undefined at this point.

Also, I&apos;ve been moving the super calls above the console.assert calls. Making super as early as possible to avoid potential TDZs.

So my preference would be:

    super(object, propertyPath);

    console.assert(object instanceof WebInspector.RemoteObject);

    this._object = object;

&gt; Source/WebInspectorUI/UserInterface/Views/TreeOutline.js:732
&gt; +            this._listItemNode.addEventListener(&quot;mousedown&quot;, WebInspector.TreeElement.treeElementMouseDown, false);
&gt; +            this._listItemNode.addEventListener(&quot;click&quot;, WebInspector.TreeElement.treeElementToggled, false);
&gt; +            this._listItemNode.addEventListener(&quot;dblclick&quot;, WebInspector.TreeElement.treeElementDoubleClicked, false);

Style: remove the falses?

&gt; Source/WebInspectorUI/UserInterface/Views/TypePropertiesSection.js:-84
&gt; -WebInspector.TypePropertiesSection.PropertyComparator = function(propertyA, propertyB)

I think there are still uses of this function, so I&apos;d expect this to either be made static or perhaps we should just switch users over to ObjectTreeView version and make that hand this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080492</commentid>
    <comment_count>6</comment_count>
      <attachid>249510</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 16:40:31 -0700</bug_when>
    <thetext>Comment on attachment 249510
Patch

https://trac.webkit.org/r182042</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249506</attachid>
            <date>2015-03-26 12:16:18 -0700</date>
            <delta_ts>2015-03-26 13:10:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143111-20150326121540.patch</filename>
            <type>text/plain</type>
            <size>289596</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
NWY0ZDE0N2FiZTZkMzJhNjkyZjQ0ZmM4YWM3NTQxNWVmNTE3MTIzLi4zYjU0YWJmZGVhODYwYzgx
OGQwM2NkMmQzYTEyNDliYmM0MjZmMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1OCBAQAogMjAxNS0wMy0yNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBUcmVlRWxlbWVudCBjbGFzc2Vz
IHRvIEVTNgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQzMTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50Lmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
VHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50
VHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DYWxsRnJhbWVU
cmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93
VHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9y
YWdlVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01TdG9y
YWdlVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVl
RWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5l
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VIb3N0VHJlZUVsZW1l
bnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxlVHJlZUVs
ZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRyZWVFbGVt
ZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRm9sZGVyVHJlZUVsZW1lbnQu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Gb2xkZXJpemVkVHJlZUVsZW1lbnQu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRyZWVFbGVtZW50LmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0
U3RvcmVJbmRleFRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
SW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLmpzOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTG9nVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudC5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuanM6
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxl
bWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVQcm9wZXJ0
eVRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJl
ZVNldEluZGV4VHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9P
YmplY3RUcmVlVmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2ZpbGVO
b2RlVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Qcm9wZXJ0
aWVzU2VjdGlvbi5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVHJl
ZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUcmVlRWxl
bWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFJlc3VsdFRyZWVF
bGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRpbWVs
aW5lVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VD
b2RlVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VN
YXBSZXNvdXJjZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
U3RvcmFnZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVEYXRhR3JpZC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
UmVjb3JkVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UcmVl
RWxlbWVudFN0YXR1c0J1dHRvbi5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Ry
ZWVPdXRsaW5lLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmVE
YXRhR3JpZFN5bmNocm9uaXplci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1R5
cGVQcm9wZXJ0aWVzU2VjdGlvbi5qczoKKyAgICAgICAgQ29udmVydGVkIHRvIEVTNiBjbGFzc2Vz
IHdoZXJlIHBvc3NpYmxlLgorCisyMDE1LTAzLTI2ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5
QGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb252ZXJ0IHNpZGViYXIgY2xh
c3NlcyB0byBFUzYKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MzEwOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZVRy
ZWVFbGVtZW50LmpzCmluZGV4IDdhYmM1NGY5ZDYwN2YwYjQwZTRlYzNhODM1Yjg5OGFlMzNiM2Iy
MjkuLjc5MzY5NjIyNjUzMTQ5NDBlNTU0NDM2YzQxNDllYTMyOTBmZTQxYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2Fj
aGVGcmFtZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMyAr
MjMsMjAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXBy
ZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxl
bWVudCA9IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFt
ZSk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1l
LCAiIiwgIiIsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7CisgICAgY29uc3RydWN0b3IocmVw
cmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUpOwog
Ci0gICAgdGhpcy5zbWFsbCA9IHRydWU7CisgICAgICAgIHN1cGVyKFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSwgIiIsICIiLCByZXBy
ZXNlbnRlZE9iamVjdCwgZmFsc2UpOwogCi0gICAgdGhpcy51cGRhdGVUaXRsZXMoKTsKLX07Cisg
ICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwogCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNo
ZUZyYW1lVHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUgPSAiYXBwbGljYXRpb24tY2FjaGUtZnJh
bWUiOwotCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNo
ZUZyYW1lVHJlZUVsZW1lbnQsCisgICAgICAgIHRoaXMudXBkYXRlVGl0bGVzKCk7CisgICAgfQog
Ci0gICAgdXBkYXRlVGl0bGVzOiBmdW5jdGlvbigpCisgICAgdXBkYXRlVGl0bGVzKCkKICAgICB7
CiAgICAgICAgIHZhciB1cmwgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmZyYW1lLnVybDsKICAg
ICAgICAgdmFyIHBhcnNlZFVSTCA9IHBhcnNlVVJMKHVybCk7CkBAIC01OCw0ICs1NSw0IEBAIFdl
Ykluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVt
ZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50
LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVu
dC5TdHlsZUNsYXNzTmFtZSA9ICJhcHBsaWNhdGlvbi1jYWNoZS1mcmFtZSI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNh
Y2hlTWFuaWZlc3RUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LmpzCmluZGV4
IDlmODkzZGU3OGI4N2YxMmM2YzYyZGM3MjBkOWNhMjAzZWNlZGY3NjYuLjY3OTdlMzRlNThlNDVm
M2VhMzZmYjNiNGU3ZjE1YmRkNGIzMjc5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVt
ZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Fw
cGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxNyArMjMsMTQgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9i
amVjdCkKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudCA9
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVz
dCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NO
YW1lLCAiIiwgcmVwcmVzZW50ZWRPYmplY3QpOwotfTsKLQotV2ViSW5zcGVjdG9yLkFwcGxpY2F0
aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lID0gImFwcGxpY2F0aW9u
LWNhY2hlLW1hbmlmZXN0IjsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdCk7CiAKLVdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVu
dCwKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRy
ZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCAiIiwgcmVwcmVzZW50ZWRPYmplY3QpOworICAgIH0K
IAogICAgIC8vIFB1YmxpYwogCkBAIC00Myw3ICs0MCw3IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLl9nZW5lcmF0ZVRpdGxlcygpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHNlY29uZGFyeU5hbWUoKQogICAgIHsKQEAgLTUxLDE0ICs0
OCwxNCBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZ2VuZXJhdGVUaXRsZXMoKTsKIAogICAg
ICAgICByZXR1cm4gdGhpcy5fc2Vjb25kYXJ5TmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBjYXRlZ29yeU5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQXBwbGljYXRpb24gQ2FjaGUiKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9nZW5lcmF0
ZVRpdGxlczogZnVuY3Rpb24oKQorICAgIF9nZW5lcmF0ZVRpdGxlcygpCiAgICAgewogICAgICAg
ICB2YXIgcGFyc2VkVVJMID0gcGFyc2VVUkwodGhpcy5yZXByZXNlbnRlZE9iamVjdC5tYW5pZmVz
dFVSTCk7CiAKQEAgLTcxLDQgKzY4LDQgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVN
YW5pZmVzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0
b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lID0g
ImFwcGxpY2F0aW9uLWNhY2hlLW1hbmlmZXN0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxl
bWVudC5qcwppbmRleCBhMDlhYzA4NzVhNGE2Y2M5NWQyN2JiYTQ5ZTBlZTJkMjBhM2Y0MzRiLi4w
ODY2ZTNmMjVjMmEyMjdhZjU2MTQ1MWExNTZlNjBmMzcxNzg0Mzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1l
bnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJl
YWtwb2ludFRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEwMCArMjMsODcgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24oYnJlYWtwb2ludCwgY2xhc3NOYW1lLCB0aXRsZSkKK1dlYklu
c3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1l
bnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29s
ZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CcmVha3BvaW50KTsK
LQotICAgIGlmICghY2xhc3NOYW1lKQotICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludFRyZWVFbGVtZW50LkdlbmVyaWNMaW5lSWNvblN0eWxlQ2xhc3NOYW1lOwotCi0g
ICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFtXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBjbGFzc05hbWVdLCB0aXRs
ZSwgbnVsbCwgYnJlYWtwb2ludCwgZmFsc2UpOwotCi0gICAgdGhpcy5fYnJlYWtwb2ludCA9IGJy
ZWFrcG9pbnQ7CisgICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwgY2xhc3NOYW1lLCB0aXRsZSkK
KyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludCk7CiAKLSAgICB0aGlzLl9saXN0ZW5lcnMgPSBuZXcgV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJTZXQodGhpcywgIkJyZWFrcG9pbnRUcmVlRWxlbWVudCBsaXN0
ZW5lcnMiKTsKLSAgICBpZiAoIXRpdGxlKQotICAgICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0
ZXIoYnJlYWtwb2ludCwgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRD
aGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZSk7Ci0gICAgdGhpcy5fbGlz
dGVuZXJzLnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50
LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7Ci0gICAgdGhpcy5f
bGlzdGVuZXJzLnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2
ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzKTsKLSAgICB0aGlz
Ll9saXN0ZW5lcnMucmVnaXN0ZXIoYnJlYWtwb2ludCwgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQu
RXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzKTsKLSAgICB0
aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlciwgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWREaWRDaGFu
Z2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7CisgICAgICAgIGlmICghY2xhc3NOYW1lKQorICAgICAg
ICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5HZW5l
cmljTGluZUljb25TdHlsZUNsYXNzTmFtZTsKIAotICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rl
cihXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLCBXZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyLkV2
ZW50LlByb2JlU2V0QWRkZWQsIHRoaXMuX3Byb2JlU2V0QWRkZWQpOwotICAgIHRoaXMuX2xpc3Rl
bmVycy5yZWdpc3RlcihXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLCBXZWJJbnNwZWN0b3IuUHJv
YmVNYW5hZ2VyLkV2ZW50LlByb2JlU2V0UmVtb3ZlZCwgdGhpcy5fcHJvYmVTZXRSZW1vdmVkKTsK
KyAgICAgICAgc3VwZXIoWyJicmVha3BvaW50IiwgY2xhc3NOYW1lXSwgdGl0bGUsIG51bGwsIGJy
ZWFrcG9pbnQsIGZhbHNlKTsKIAotICAgIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwotICAgIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudC5j
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdl
RWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rlcih0aGlz
Ll9zdGF0dXNJbWFnZUVsZW1lbnQsICJtb3VzZWRvd24iLCB0aGlzLl9zdGF0dXNJbWFnZUVsZW1l
bnRNb3VzZURvd24pOwotICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rlcih0aGlzLl9zdGF0dXNJ
bWFnZUVsZW1lbnQsICJjbGljayIsIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwor
ICAgICAgICB0aGlzLl9icmVha3BvaW50ID0gYnJlYWtwb2ludDsKIAotICAgIGlmICghdGl0bGUp
Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlcygpOwotICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygp
OworICAgICAgICB0aGlzLl9saXN0ZW5lcnMgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVu
ZXJTZXQodGhpcywgIkJyZWFrcG9pbnRUcmVlRWxlbWVudCBsaXN0ZW5lcnMiKTsKKyAgICAgICAg
aWYgKCF0aXRsZSkKKyAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3RlcihicmVha3Bv
aW50LCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5Mb2NhdGlvbkRpZENoYW5nZSwgdGhp
cy5fYnJlYWtwb2ludExvY2F0aW9uRGlkQ2hhbmdlKTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJz
LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkRpc2Fi
bGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7CisgICAgICAgIHRoaXMuX2xp
c3RlbmVycy5yZWdpc3RlcihicmVha3BvaW50LCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVu
dC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7CisgICAgICAgIHRo
aXMuX2xpc3RlbmVycy5yZWdpc3RlcihicmVha3BvaW50LCBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVTdGF0dXMpOworICAg
ICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdl
ciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWRE
aWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7CiAKLSAgICB0aGlzLnN0YXR1cyA9IHRoaXMu
X3N0YXR1c0ltYWdlRWxlbWVudDsKLSAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICAgICAgdGhp
cy5fbGlzdGVuZXJzLnJlZ2lzdGVyKFdlYkluc3BlY3Rvci5wcm9iZU1hbmFnZXIsIFdlYkluc3Bl
Y3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRBZGRlZCwgdGhpcy5fcHJvYmVTZXRBZGRl
ZCk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3RlcihXZWJJbnNwZWN0b3IucHJvYmVN
YW5hZ2VyLCBXZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyLkV2ZW50LlByb2JlU2V0UmVtb3ZlZCwg
dGhpcy5fcHJvYmVTZXRSZW1vdmVkKTsKIAotICAgIHRoaXMuX2ljb25BbmltYXRpb25MYXllckVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgdGhpcy5pY29uRWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pY29uQW5pbWF0aW9uTGF5ZXJFbGVtZW50KTsKLX07Ci0K
LVdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuR2VuZXJpY0xpbmVJY29uU3R5bGVD
bGFzc05hbWUgPSAiYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiI7Ci1XZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lID0gImJyZWFrcG9pbnQiOwotV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUVsZW1lbnRTdHlsZUNs
YXNzTmFtZSA9ICJzdGF0dXMtaW1hZ2UiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxl
bWVudC5TdGF0dXNJbWFnZVJlc29sdmVkU3R5bGVDbGFzc05hbWUgPSAicmVzb2x2ZWQiOwotV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUF1dG9Db250aW51ZVN0
eWxlQ2xhc3NOYW1lID0gImF1dG8tY29udGludWUiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRU
cmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2FibGVkU3R5bGVDbGFzc05hbWUgPSAiZGlzYWJsZWQi
OwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Gb3JtYXR0ZWRMb2NhdGlvblN0
eWxlQ2xhc3NOYW1lID0gImZvcm1hdHRlZC1sb2NhdGlvbiI7Ci1XZWJJbnNwZWN0b3IuQnJlYWtw
b2ludFRyZWVFbGVtZW50LlByb2JlRGF0YVVwZGF0ZWRTdHlsZUNsYXNzTmFtZSA9ICJkYXRhLXVw
ZGF0ZWQiOworICAgICAgICB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50LmNsYXNz
TmFtZSA9IFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VFbGVt
ZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rlcih0aGlz
Ll9zdGF0dXNJbWFnZUVsZW1lbnQsICJtb3VzZWRvd24iLCB0aGlzLl9zdGF0dXNJbWFnZUVsZW1l
bnRNb3VzZURvd24pOworICAgICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIodGhpcy5fc3Rh
dHVzSW1hZ2VFbGVtZW50LCAiY2xpY2siLCB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2Vk
KTsKIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRhdGVk
QW5pbWF0aW9uRHVyYXRpb24gPSA0MDA7IC8vIG1pbGxpc2Vjb25kcworICAgICAgICBpZiAoIXRp
dGxlKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGVzKCk7CisgICAgICAgIHRoaXMuX3Vw
ZGF0ZVN0YXR1cygpOwogCisgICAgICAgIHRoaXMuc3RhdHVzID0gdGhpcy5fc3RhdHVzSW1hZ2VF
bGVtZW50OworICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKIAotV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQsCisgICAgICAgIHRoaXMuX2ljb25BbmltYXRpb25M
YXllckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRo
aXMuaWNvbkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faWNvbkFuaW1hdGlvbkxheWVyRWxlbWVu
dCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgYnJlYWtwb2ludCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludDsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBmaWx0ZXJhYmxlRGF0YSgpCiAgICAgewogICAgICAgICByZXR1cm4ge3RleHQ6IHRoaXMu
YnJlYWtwb2ludC51cmx9OwotICAgIH0sCisgICAgfQogCi0gICAgb25kZWxldGU6IGZ1bmN0aW9u
KCkKKyAgICBvbmRlbGV0ZSgpCiAgICAgewogICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50UmVtb3ZhYmxlKHRoaXMuX2JyZWFrcG9pbnQpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1h
bmFnZXIucmVtb3ZlQnJlYWtwb2ludCh0aGlzLl9icmVha3BvaW50KTsKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmVudGVyOiBmdW5jdGlvbigpCisgICAgb25l
bnRlcigpCiAgICAgewogICAgICAgICB0aGlzLl9icmVha3BvaW50LmN5Y2xlVG9OZXh0TW9kZSgp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uc3BhY2U6IGZ1
bmN0aW9uKCkKKyAgICBvbnNwYWNlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQu
Y3ljbGVUb05leHRNb2RlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQog
Ci0gICAgb25jb250ZXh0bWVudTogZnVuY3Rpb24oZXZlbnQpCisgICAgb25jb250ZXh0bWVudShl
dmVudCkKICAgICB7CiAgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3Iu
Q29udGV4dE1lbnUoZXZlbnQpOwogICAgICAgICB0aGlzLl9icmVha3BvaW50LmFwcGVuZENvbnRl
eHRNZW51SXRlbXMoY29udGV4dE1lbnUsIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudCk7CiAgICAg
ICAgIGNvbnRleHRNZW51LnNob3coKTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uYXR0YWNoOiBm
dW5jdGlvbigpCisgICAgb25hdHRhY2goKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkdl
bmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKIApAQCAtMTI1
LDkgKzExMiw5IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICBmb3IgKHZhciBwcm9iZVNldCBvZiBXZWJJbnNwZWN0b3IucHJvYmVNYW5h
Z2VyLnByb2JlU2V0cykKICAgICAgICAgICAgIGlmIChwcm9iZVNldC5icmVha3BvaW50ID09PSB0
aGlzLl9icmVha3BvaW50KQogICAgICAgICAgICAgICAgIHRoaXMuX2FkZFByb2JlU2V0KHByb2Jl
U2V0KTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uZGV0YWNoOiBmdW5jdGlvbigpCisgICAgb25k
ZXRhY2goKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5w
cm90b3R5cGUub25kZXRhY2guY2FsbCh0aGlzKTsKIApAQCAtMTM1LDE3ICsxMjIsMTcgQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
aWYgKHRoaXMuX3Byb2JlU2V0KQogICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvYmVTZXQodGhp
cy5fcHJvYmVTZXQpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlU3RhdHVzSW1hZ2U6IGZ1
bmN0aW9uKCkKKyAgICByZW1vdmVTdGF0dXNJbWFnZSgpCiAgICAgewogICAgICAgICB0aGlzLl9z
dGF0dXNJbWFnZUVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgIHRoaXMuX3N0YXR1c0ltYWdlRWxl
bWVudCA9IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBk
YXRlVGl0bGVzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVRpdGxlcygpCiAgICAgewogICAgICAg
ICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5fYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9j
YXRpb247CiAKQEAgLTE2Niw5ICsxNTMsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5t
YWluVGl0bGUgKyAiIFx1MjAxNCAiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJvcmlnaW5hbGx5
ICVzIikuZm9ybWF0KHNvdXJjZUNvZGVMb2NhdGlvbi5vcmlnaW5hbExvY2F0aW9uU3RyaW5nKCkp
OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU3RhdHVzOiBmdW5jdGlv
bigpCisgICAgX3VwZGF0ZVN0YXR1cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3N0YXR1
c0ltYWdlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4Nyw5ICsxNzQsOSBAQCBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5C
cmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFn
ZVJlc29sdmVkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2FkZFByb2Jl
U2V0OiBmdW5jdGlvbihwcm9iZVNldCkKKyAgICBfYWRkUHJvYmVTZXQocHJvYmVTZXQpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5Qcm9iZVNldCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0LmJyZWFrcG9pbnQg
PT09IHRoaXMuX2JyZWFrcG9pbnQpOwpAQCAtMTk4LDkgKzE4NSw5IEBAIFdlYkluc3BlY3Rvci5C
cmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wcm9iZVNl
dCA9IHByb2JlU2V0OwogICAgICAgICBwcm9iZVNldC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Qcm9iZVNldC5FdmVudC5TYW1wbGVzQ2xlYXJlZCwgdGhpcy5fc2FtcGxlc0NsZWFyZWQs
IHRoaXMpOwogICAgICAgICBwcm9iZVNldC5kYXRhVGFibGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUHJvYmVTZXREYXRhVGFibGUuRXZlbnQuRnJhbWVJbnNlcnRlZCwgdGhpcy5fZGF0
YVVwZGF0ZWQsIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbW92ZVByb2JlU2V0OiBm
dW5jdGlvbihwcm9iZVNldCkKKyAgICBfcmVtb3ZlUHJvYmVTZXQocHJvYmVTZXQpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Q
cm9iZVNldCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0ID09PSB0aGlzLl9wcm9i
ZVNldCk7CkBAIC0yMDgsMzIgKzE5NSwzMiBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgcHJvYmVTZXQucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuUHJvYmVTZXQuRXZlbnQuU2FtcGxlc0NsZWFyZWQsIHRoaXMuX3NhbXBs
ZXNDbGVhcmVkLCB0aGlzKTsKICAgICAgICAgcHJvYmVTZXQuZGF0YVRhYmxlLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YVRhYmxlLkV2ZW50LkZyYW1lSW5zZXJ0
ZWQsIHRoaXMuX2RhdGFVcGRhdGVkLCB0aGlzKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX3Byb2Jl
U2V0OwotICAgIH0sCisgICAgfQogCi0gICAgX3Byb2JlU2V0QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9wcm9iZVNldEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHByb2JlU2V0
ID0gZXZlbnQuZGF0YS5wcm9iZVNldDsKICAgICAgICAgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQg
PT09IHRoaXMuX2JyZWFrcG9pbnQpCiAgICAgICAgICAgICB0aGlzLl9hZGRQcm9iZVNldChwcm9i
ZVNldCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcHJvYmVTZXRSZW1vdmVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfcHJvYmVTZXRSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHBy
b2JlU2V0ID0gZXZlbnQuZGF0YS5wcm9iZVNldDsKICAgICAgICAgaWYgKHByb2JlU2V0LmJyZWFr
cG9pbnQgPT09IHRoaXMuX2JyZWFrcG9pbnQpCiAgICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9i
ZVNldChwcm9iZVNldCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2FtcGxlc0NsZWFyZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9zYW1wbGVzQ2xlYXJlZChldmVudCkKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb2JlU2V0KTsKIAogICAgICAgICB2YXIgb2xkVGFibGUg
PSBldmVudC5kYXRhLm9sZFRhYmxlOwogICAgICAgICBvbGRUYWJsZS5yZW1vdmVFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5FdmVudC5GcmFtZUluc2VydGVkLCB0
aGlzLl9kYXRhVXBkYXRlZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuX3Byb2JlU2V0LmRhdGFUYWJs
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5FdmVudC5G
cmFtZUluc2VydGVkLCB0aGlzLl9kYXRhVXBkYXRlZCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZGF0YVVwZGF0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZGF0YVVwZGF0ZWQoKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUpKSB7
CiAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fcmVtb3ZlSWNvbkFuaW1hdGlvblRpbWVv
dXRJZGVudGlmaWVyKTsKQEAgLTI0OCwxMCArMjM1LDEwIEBAIFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZW1vdmVJY29uQW5p
bWF0aW9uVGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB9
LmJpbmQodGhpcyksIFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuUHJvYmVEYXRh
VXBkYXRlZEFuaW1hdGlvbkR1cmF0aW9uKTsKLSAgICB9LAorICAgIH0KIAogCi0gICAgX2JyZWFr
cG9pbnRMb2NhdGlvbkRpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2JyZWFrcG9pbnRM
b2NhdGlvbkRpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2
ZW50LnRhcmdldCA9PT0gdGhpcy5fYnJlYWtwb2ludCk7CiAKQEAgLTI2MCwxOCArMjQ3LDI2IEBA
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlcygpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bjogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAg
IC8vIFRvIHByZXZlbnQgdGhlIHRyZWUgZWxlbWVudCBmcm9tIHNlbGVjdGluZy4KICAgICAgICAg
ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RhdHVzSW1h
Z2VFbGVtZW50Q2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3N0YXR1c0ltYWdlRWxlbWVu
dENsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9icmVha3BvaW50LmN5Y2xlVG9O
ZXh0TW9kZSgpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1l
bnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQu
cHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5HZW5lcmljTGlu
ZUljb25TdHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIjsKK1dl
Ykluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VFbGVtZW50U3R5bGVD
bGFzc05hbWUgPSAic3RhdHVzLWltYWdlIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVs
ZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lID0gInJlc29sdmVkIjsKK1dl
Ykluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VBdXRvQ29udGludWVT
dHlsZUNsYXNzTmFtZSA9ICJhdXRvLWNvbnRpbnVlIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50
VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VEaXNhYmxlZFN0eWxlQ2xhc3NOYW1lID0gImRpc2FibGVk
IjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuRm9ybWF0dGVkTG9jYXRpb25T
dHlsZUNsYXNzTmFtZSA9ICJmb3JtYXR0ZWQtbG9jYXRpb24iOworV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUgPSAiZGF0YS11
cGRhdGVkIjsKKworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFV
cGRhdGVkQW5pbWF0aW9uRHVyYXRpb24gPSA0MDA7IC8vIG1pbGxpc2Vjb25kcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJl
ZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
YWxsRnJhbWVUcmVlRWxlbWVudC5qcwppbmRleCAxZmIwMzI5YzlhYWM3OGE2ZGNjNDFkZDYxMDAy
YjZiMmJmYzdjYTY5Li5jNDlhMjEyZjEzYTlkMjhiYmFjYzIyOGM2NTNhNGM3OTRhZTM5YzBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYWxs
RnJhbWVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNTUgKzIzLDUwIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNhbGxG
cmFtZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oY2FsbEZyYW1lKQorV2ViSW5zcGVjdG9yLkNhbGxG
cmFtZVRyZWVFbGVtZW50ID0gY2xhc3MgQ2FsbEZyYW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQoY2FsbEZy
YW1lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNhbGxGcmFtZSk7CisgICAgY29uc3RydWN0b3Io
Y2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY2FsbEZyYW1lIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkNhbGxGcmFtZSk7CiAKLSAgICB2YXIgY2xhc3NOYW1lID0gV2Vi
SW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1l
OwotICAgIGlmIChjYWxsRnJhbWUubmF0aXZlQ29kZSkKLSAgICAgICAgY2xhc3NOYW1lID0gV2Vi
SW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50Lk5hdGl2ZUljb25TdHlsZUNsYXNzTmFtZTsK
KyAgICAgICAgdmFyIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVu
dC5GdW5jdGlvbkljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgaWYgKGNhbGxGcmFtZS5uYXRp
dmVDb2RlKQorICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRy
ZWVFbGVtZW50Lk5hdGl2ZUljb25TdHlsZUNsYXNzTmFtZTsKIAotICAgIC8vIFRoaXMgaXMgbW9y
ZSB0aGFuIGxpa2VseSBhbiBldmVudCBsaXN0ZW5lciBmdW5jdGlvbiB3aXRoIGFuICJvbiIgcHJl
Zml4IGFuZCBpdCBpcwotICAgIC8vIGFzIGxvbmcgb3IgbG9uZ2VyIHRoYW4gdGhlIHNob3J0ZXN0
IGV2ZW50IGxpc3RlbmVyIG5hbWUgLS0gIm9uY3V0Ii4KLSAgICBpZiAoY2FsbEZyYW1lLmZ1bmN0
aW9uTmFtZSAmJiBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lLnN0YXJ0c1dpdGgoIm9uIikgJiYgY2Fs
bEZyYW1lLmZ1bmN0aW9uTmFtZS5sZW5ndGggPj0gNSkKLSAgICAgICAgY2xhc3NOYW1lID0gV2Vi
SW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFz
c05hbWU7CisgICAgICAgIC8vIFRoaXMgaXMgbW9yZSB0aGFuIGxpa2VseSBhbiBldmVudCBsaXN0
ZW5lciBmdW5jdGlvbiB3aXRoIGFuICJvbiIgcHJlZml4IGFuZCBpdCBpcworICAgICAgICAvLyBh
cyBsb25nIG9yIGxvbmdlciB0aGFuIHRoZSBzaG9ydGVzdCBldmVudCBsaXN0ZW5lciBuYW1lIC0t
ICJvbmN1dCIuCisgICAgICAgIGlmIChjYWxsRnJhbWUuZnVuY3Rpb25OYW1lICYmIGNhbGxGcmFt
ZS5mdW5jdGlvbk5hbWUuc3RhcnRzV2l0aCgib24iKSAmJiBjYWxsRnJhbWUuZnVuY3Rpb25OYW1l
Lmxlbmd0aCA+PSA1KQorICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxG
cmFtZVRyZWVFbGVtZW50LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFzc05hbWU7CiAKLSAgICB2
YXIgdGl0bGUgPSBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lIHx8IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiKGFub255bW91cyBmdW5jdGlvbikiKTsKKyAgICAgICAgdmFyIHRpdGxlID0gY2FsbEZyYW1l
LmZ1bmN0aW9uTmFtZSB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rp
b24pIik7CiAKLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywg
Y2xhc3NOYW1lLCB0aXRsZSwgbnVsbCwgY2FsbEZyYW1lLCBmYWxzZSk7CisgICAgICAgIHN1cGVy
KGNsYXNzTmFtZSwgdGl0bGUsIG51bGwsIGNhbGxGcmFtZSwgZmFsc2UpOwogCi0gICAgaWYgKCFj
YWxsRnJhbWUubmF0aXZlQ29kZSAmJiBjYWxsRnJhbWUuc291cmNlQ29kZUxvY2F0aW9uKSB7Ci0g
ICAgICAgIHZhciBkaXNwbGF5U2NyaXB0VVJMID0gY2FsbEZyYW1lLnNvdXJjZUNvZGVMb2NhdGlv
bi5kaXNwbGF5U291cmNlQ29kZS51cmw7Ci0gICAgICAgIGlmIChkaXNwbGF5U2NyaXB0VVJMKSB7
Ci0gICAgICAgICAgICB0aGlzLnN1YnRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOwotICAgICAgICAgICAgY2FsbEZyYW1lLnNvdXJjZUNvZGVMb2NhdGlvbi5wb3B1bGF0ZUxp
dmVEaXNwbGF5TG9jYXRpb25TdHJpbmcodGhpcy5zdWJ0aXRsZSwgInRleHRDb250ZW50Iik7Ci0g
ICAgICAgICAgICAvLyBTZXQgdGhlIHRvb2x0aXAgb24gdGhlIGVudGlyZSB0cmVlIGVsZW1lbnQg
aW4gb25hdHRhY2gsIG9uY2UgdGhlIGVsZW1lbnQgaXMgY3JlYXRlZC4KLSAgICAgICAgICAgIHRo
aXMudG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFjYWxsRnJh
bWUubmF0aXZlQ29kZSAmJiBjYWxsRnJhbWUuc291cmNlQ29kZUxvY2F0aW9uKSB7CisgICAgICAg
ICAgICB2YXIgZGlzcGxheVNjcmlwdFVSTCA9IGNhbGxGcmFtZS5zb3VyY2VDb2RlTG9jYXRpb24u
ZGlzcGxheVNvdXJjZUNvZGUudXJsOworICAgICAgICAgICAgaWYgKGRpc3BsYXlTY3JpcHRVUkwp
IHsKKyAgICAgICAgICAgICAgICB0aGlzLnN1YnRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic3BhbiIpOworICAgICAgICAgICAgICAgIGNhbGxGcmFtZS5zb3VyY2VDb2RlTG9jYXRpb24u
cG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uU3RyaW5nKHRoaXMuc3VidGl0bGUsICJ0ZXh0Q29u
dGVudCIpOworICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgdG9vbHRpcCBvbiB0aGUgZW50aXJl
IHRyZWUgZWxlbWVudCBpbiBvbmF0dGFjaCwgb25jZSB0aGUgZWxlbWVudCBpcyBjcmVhdGVkLgor
ICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KIAotICAgIHRoaXMuX2NhbGxGcmFtZSA9IGNh
bGxGcmFtZTsKLQotICAgIHRoaXMuc21hbGwgPSB0cnVlOwotfTsKKyAgICAgICAgdGhpcy5fY2Fs
bEZyYW1lID0gY2FsbEZyYW1lOwogCi1XZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQu
RnVuY3Rpb25JY29uU3R5bGVDbGFzc05hbWUgPSAiZnVuY3Rpb24taWNvbiI7Ci1XZWJJbnNwZWN0
b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRXZlbnRMaXN0ZW5lckljb25TdHlsZUNsYXNzTmFtZSA9
ICJldmVudC1saXN0ZW5lci1pY29uIjsKLVdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVu
dC5OYXRpdmVJY29uU3R5bGVDbGFzc05hbWUgPSAibmF0aXZlLWljb24iOwotCi1XZWJJbnNwZWN0
b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQsCisgICAgICAgIHRoaXMuc21hbGwgPSB0
cnVlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGNhbGxGcmFtZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fY2FsbEZyYW1lOwotICAgIH0sCisgICAgfQogCiAgICAg
Ly8gUHJvdGVjdGVkCiAKLSAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIG9uYXR0YWNoKCkK
ICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBl
Lm9uYXR0YWNoLmNhbGwodGhpcyk7CiAKQEAgLTg0LDQgKzc5LDYgQEAgV2ViSW5zcGVjdG9yLkNh
bGxGcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0
b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRy
ZWVFbGVtZW50LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1lID0gImZ1bmN0aW9uLWljb24iOwor
V2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVD
bGFzc05hbWUgPSAiZXZlbnQtbGlzdGVuZXItaWNvbiI7CitXZWJJbnNwZWN0b3IuQ2FsbEZyYW1l
VHJlZUVsZW1lbnQuTmF0aXZlSWNvblN0eWxlQ2xhc3NOYW1lID0gIm5hdGl2ZS1pY29uIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRl
bnRGbG93VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzCmluZGV4IDI0NjlkYmNjYTkxMjYzY2Q1
NTQyZGI0NmNjZDUyNWU3YjNiMzY1OTUuLjdlMjhhNjNjOGU5ODc2NDA3Yzg2ZGEyMDE2ODQwZDc4
YTY1ZTI4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRGbG93VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qcwpAQCAtMSw0
ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsMTggKzI4
LDE2IEBACiAgKiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29udGVudEZsb3dU
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkNv
bnRlbnRGbG93VHJlZUVsZW1lbnQgPSBjbGFzcyBDb250ZW50Rmxvd1RyZWVFbGVtZW50IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0
KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KTsK
LSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgW1dlYkluc3Bl
Y3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3Iu
Q29udGVudEZsb3dUcmVlRWxlbWVudC5Db250ZW50Rmxvd0ljb25TdHlsZUNsYXNzTmFtZV0sIHJl
cHJlc2VudGVkT2JqZWN0Lm5hbWUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7Cisg
ICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBjb25zb2xl
LmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50
Rmxvdyk7CiAKLSAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db250
ZW50Rmxvd1RyZWVFbGVtZW50LkNvbnRlbnRGbG93SWNvblN0eWxlQ2xhc3NOYW1lID0gImNvbnRl
bnQtZmxvdy1pY29uIjsKKyAgICAgICAgc3VwZXIoW1dlYkluc3BlY3Rvci5Db250ZW50Rmxvd1Ry
ZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxl
bWVudC5Db250ZW50Rmxvd0ljb25TdHlsZUNsYXNzTmFtZV0sIHJlcHJlc2VudGVkT2JqZWN0Lm5h
bWUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7CiAKLVdlYkluc3BlY3Rvci5Db250
ZW50Rmxvd1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQKKyAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7
CisgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBl
OworV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQuQ29udGVudEZsb3dJY29uU3R5
bGVDbGFzc05hbWUgPSAiY29udGVudC1mbG93LWljb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZVRyZWVFbGVtZW50
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3Rv
cmFnZVRyZWVFbGVtZW50LmpzCmluZGV4IDI0OWIyOGNhNmFlMDZhNWM4YjE5YjgwMzhmZWVlOWQ1
ZDg1YWZmZjQuLmUxZjE2N2YyZTJiY2FmZGUzMmE5OTU4MzEyY2JmZjY4N2FjYmJiZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0
b3JhZ2VUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI0ICsyMywyMSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5D
b29raWVTdG9yYWdlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dl
Ykluc3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQgPSBjbGFzcyBDb29raWVTdG9yYWdl
VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50CiB7Ci0g
ICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQ29va2llU3RvcmFnZU9iamVjdCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVF
bGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5D
b29raWVJY29uU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvckhvc3Qo
cmVwcmVzZW50ZWRPYmplY3QuaG9zdCksIHJlcHJlc2VudGVkT2JqZWN0KTsKLX07Ci0KLVdlYklu
c3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQuQ29va2llSWNvblN0eWxlQ2xhc3NOYW1l
ID0gImNvb2tpZS1pY29uIjsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QpOwogCi1XZWJJbnNwZWN0b3IuQ29va2ll
U3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudCwKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVj
dG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5Db29raWVJY29uU3R5bGVDbGFzc05hbWUsIFdl
Ykluc3BlY3Rvci5kaXNwbGF5TmFtZUZvckhvc3QocmVwcmVzZW50ZWRPYmplY3QuaG9zdCksIHJl
cHJlc2VudGVkT2JqZWN0KTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYW1l
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2F0ZWdvcnlOYW1lKCkKICAgICB7CkBAIC00OCw0ICs0
NSw0IEBAIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90
eXBlOworV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5Db29raWVJY29uU3R5
bGVDbGFzc05hbWUgPSAiY29va2llLWljb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NU3RvcmFnZVRyZWVFbGVtZW50LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NU3RvcmFnZVRyZWVFbGVt
ZW50LmpzCmluZGV4IDNiM2U2MGM3OTFlZjJiNDlhY2JjOWZmYTc4MmRkZDA4OTNlYWUzNjkuLmJi
MmZlMzZlODRlYTRmYjkwZDk0Nzk1ZDk2NDdmOTkwMTc0YWEzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVN0b3JhZ2VUcmVlRWxlbWVu
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01T
dG9yYWdlVHJlZUVsZW1lbnQuanMKQEAgLTIzLDMwICsyMywyNiBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVs
ZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5ET01TdG9y
YWdlVHJlZUVsZW1lbnQgPSBjbGFzcyBET01TdG9yYWdlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCk7Ci0K
LSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QuaXNMb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgdmFy
IGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQuTG9jYWxTdG9y
YWdlSWNvblN0eWxlQ2xhc3NOYW1lOwotICAgIGVsc2UKLSAgICAgICAgdmFyIGNsYXNzTmFtZSA9
IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQuU2Vzc2lvblN0b3JhZ2VJY29uU3R5
bGVDbGFzc05hbWU7Ci0KLSAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwo
dGhpcywgY2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JIb3N0KHJlcHJlc2Vu
dGVkT2JqZWN0Lmhvc3QpLCByZXByZXNlbnRlZE9iamVjdCk7Ci19OworICAgIGNvbnN0cnVjdG9y
KHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCk7CiAK
LVdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQuTG9jYWxTdG9yYWdlSWNvblN0eWxl
Q2xhc3NOYW1lID0gImxvY2FsLXN0b3JhZ2UtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZVRyZWVFbGVtZW50LlNlc3Npb25TdG9yYWdlSWNvblN0eWxlQ2xhc3NOYW1lID0gInNlc3Npb24t
c3RvcmFnZS1pY29uIjsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0LmlzTG9jYWxTdG9y
YWdlKCkpCisgICAgICAgICAgICB2YXIgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2VUcmVlRWxlbWVudC5Mb2NhbFN0b3JhZ2VJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRy
ZWVFbGVtZW50LlNlc3Npb25TdG9yYWdlSWNvblN0eWxlQ2xhc3NOYW1lOwogCi1XZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VUcmVlRWxlbWVudCwKKyAgICAgICAgc3VwZXIoY2xhc3NO
YW1lLCBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JIb3N0KHJlcHJlc2VudGVkT2JqZWN0Lmhv
c3QpLCByZXByZXNlbnRlZE9iamVjdCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgbmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1l
Rm9ySG9zdCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmhvc3QpOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGNhdGVnb3J5TmFtZSgpCiAgICAgewpAQCAtNTYsNCArNTIsNSBAQCBXZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5ET01T
dG9yYWdlVHJlZUVsZW1lbnQuTG9jYWxTdG9yYWdlSWNvblN0eWxlQ2xhc3NOYW1lID0gImxvY2Fs
LXN0b3JhZ2UtaWNvbiI7CitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LlNlc3Np
b25TdG9yYWdlSWNvblN0eWxlQ2xhc3NOYW1lID0gInNlc3Npb24tc3RvcmFnZS1pY29uIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZUVsZW1lbnQuanMKaW5kZXggODA2YjIwM2VkYjAzZjI4NzEzMTgyOWVjOThiMzE1OGVi
MTE1ZmJhMS4uYWI4YmViZTRkMzczMGZhMWMwOTUzYjE5ODAwYjJlNzVjZTQyYTE5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVs
ZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3ZWJraXRAbWF0dGxp
bGVrLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jhcm8KICAqCkBAIC0y
OCw0NiArMjgsMjcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVF
bGVtZW50ID0gZnVuY3Rpb24obm9kZSwgZWxlbWVudENsb3NlVGFnKQorV2ViSW5zcGVjdG9yLkRP
TVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
VHJlZUVsZW1lbnQKIHsKLSAgICB0aGlzLl9lbGVtZW50Q2xvc2VUYWcgPSBlbGVtZW50Q2xvc2VU
YWc7Ci0gICAgdmFyIGhhc0NoaWxkcmVuT3ZlcnJpZGUgPSAhZWxlbWVudENsb3NlVGFnICYmIG5v
ZGUuaGFzQ2hpbGROb2RlcygpICYmICF0aGlzLl9zaG93SW5saW5lVGV4dChub2RlKTsKLQotICAg
IC8vIFRoZSB0aXRsZSB3aWxsIGJlIHVwZGF0ZWQgaW4gb25hdHRhY2guCi0gICAgVHJlZUVsZW1l
bnQuY2FsbCh0aGlzLCAiIiwgbm9kZSwgaGFzQ2hpbGRyZW5PdmVycmlkZSk7Ci0KLSAgICBpZiAo
dGhpcy5yZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSgpID09PSBOb2RlLkVMRU1FTlRfTk9ERSAm
JiAhZWxlbWVudENsb3NlVGFnKQotICAgICAgICB0aGlzLl9jYW5BZGRBdHRyaWJ1dGVzID0gdHJ1
ZTsKLSAgICB0aGlzLl9zZWFyY2hRdWVyeSA9IG51bGw7Ci0gICAgdGhpcy5fZXhwYW5kZWRDaGls
ZHJlbkxpbWl0ID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkluaXRpYWxDaGlsZHJlbkxp
bWl0OwotfTsKLQotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkluaXRpYWxDaGlsZHJlbkxp
bWl0ID0gNTAwOwotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50Lk1heGltdW1JbmxpbmVUZXh0
Q2hpbGRMZW5ndGggPSA4MDsKLQotLy8gQSB1bmlvbiBvZiBIVE1MNCBhbmQgSFRNTDUtRHJhZnQg
ZWxlbWVudHMgdGhhdCBleHBsaWNpdGx5Ci0vLyBvciBpbXBsaWNpdGx5IChmb3IgSFRNTDUpIGZv
cmJpZCB0aGUgY2xvc2luZyB0YWcuCi0vLyBGSVhNRTogUmV2aXNlIG9uY2UgSFRNTDUgRmluYWwg
aXMgcHVibGlzaGVkLgotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkZvcmJpZGRlbkNsb3Np
bmdUYWdFbGVtZW50cyA9IFsKLSAgICAiYXJlYSIsICJiYXNlIiwgImJhc2Vmb250IiwgImJyIiwg
ImNhbnZhcyIsICJjb2wiLCAiY29tbWFuZCIsICJlbWJlZCIsICJmcmFtZSIsCi0gICAgImhyIiwg
ImltZyIsICJpbnB1dCIsICJpc2luZGV4IiwgImtleWdlbiIsICJsaW5rIiwgIm1ldGEiLCAicGFy
YW0iLCAic291cmNlIgotXS5rZXlTZXQoKTsKKyAgICBjb25zdHJ1Y3Rvcihub2RlLCBlbGVtZW50
Q2xvc2VUYWcpCisgICAgeworICAgICAgICBzdXBlcigiIiwgbm9kZSk7CiAKLS8vIFRoZXNlIHRh
Z3Mgd2UgZG8gbm90IGFsbG93IGVkaXRpbmcgdGhlaXIgdGFnIG5hbWUuCi1XZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnQuRWRpdFRhZ0JsYWNrbGlzdCA9IFsKLSAgICAiaHRtbCIsICJoZWFkIiwg
ImJvZHkiCi1dLmtleVNldCgpOworICAgICAgICB0aGlzLl9lbGVtZW50Q2xvc2VUYWcgPSBlbGVt
ZW50Q2xvc2VUYWc7CisgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSAhZWxlbWVudENsb3NlVGFn
ICYmIG5vZGUuaGFzQ2hpbGROb2RlcygpICYmICF0aGlzLl9zaG93SW5saW5lVGV4dChub2RlKTsK
IAotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LlNlYXJjaEhpZ2hsaWdodFN0eWxlQ2xhc3NO
YW1lID0gInNlYXJjaC1oaWdobGlnaHQiOwotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkJv
dW5jeUhpZ2hsaWdodFN0eWxlQ2xhc3NOYW1lID0gImJvdW5jeS1oaWdobGlnaHQiOworICAgICAg
ICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSgpID09PSBOb2RlLkVMRU1FTlRf
Tk9ERSAmJiAhZWxlbWVudENsb3NlVGFnKQorICAgICAgICAgICAgdGhpcy5fY2FuQWRkQXR0cmli
dXRlcyA9IHRydWU7CisgICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gbnVsbDsKKyAgICAgICAg
dGhpcy5fZXhwYW5kZWRDaGlsZHJlbkxpbWl0ID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50
LkluaXRpYWxDaGlsZHJlbkxpbWl0OworICAgIH0KIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKLSAgICBpc0Nsb3NlVGFnOiBmdW5jdGlvbigpCisgICAgaXNDbG9z
ZVRhZygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudENsb3NlVGFnOwotICAg
IH0sCisgICAgfQogCi0gICAgaGlnaGxpZ2h0U2VhcmNoUmVzdWx0czogZnVuY3Rpb24oc2VhcmNo
UXVlcnkpCisgICAgaGlnaGxpZ2h0U2VhcmNoUmVzdWx0cyhzZWFyY2hRdWVyeSkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9zZWFyY2hRdWVyeSAhPT0gc2VhcmNoUXVlcnkpIHsKICAgICAgICAg
ICAgIHRoaXMuX3VwZGF0ZVNlYXJjaEhpZ2hsaWdodChmYWxzZSk7CkBAIC03NywxNSArNTgsMTUg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fc2VhcmNoUXVlcnkgPSBzZWFyY2hRdWVyeTsKICAgICAgICAgdGhpcy5fc2VhcmNoSGlnaGxp
Z2h0c1Zpc2libGUgPSB0cnVlOwogICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKHRydWUpOwotICAg
IH0sCisgICAgfQogCi0gICAgaGlkZVNlYXJjaEhpZ2hsaWdodHM6IGZ1bmN0aW9uKCkKKyAgICBo
aWRlU2VhcmNoSGlnaGxpZ2h0cygpCiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5fc2VhcmNo
SGlnaGxpZ2h0c1Zpc2libGU7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNlYXJjaEhpZ2hsaWdodChm
YWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBlbXBoYXNpemVTZWFyY2hIaWdobGlnaHQ6IGZ1
bmN0aW9uKCkKKyAgICBlbXBoYXNpemVTZWFyY2hIaWdobGlnaHQoKQogICAgIHsKICAgICAgICAg
dmFyIGhpZ2hsaWdodEVsZW1lbnQgPSB0aGlzLnRpdGxlLnF1ZXJ5U2VsZWN0b3IoIi4iICsgV2Vi
SW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LlNlYXJjaEhpZ2hsaWdodFN0eWxlQ2xhc3NOYW1lKTsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoaGlnaGxpZ2h0RWxlbWVudCk7CkBAIC0xMTYsOSArOTcs
OSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9
CiAKICAgICAgICAgdGhpcy5fYm91bmN5SGlnaGxpZ2h0RWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZC5iaW5kKHRoaXMpKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF91cGRhdGVTZWFyY2hIaWdobGlnaHQ6IGZ1bmN0aW9uKHNob3cpCisg
ICAgX3VwZGF0ZVNlYXJjaEhpZ2hsaWdodChzaG93KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9oaWdobGlnaHRSZXN1bHQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTIsMTIgKzEzMywx
MiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAg
IGZvciAodmFyIGkgPSAwLCBzaXplID0gdGhpcy5faGlnaGxpZ2h0UmVzdWx0Lmxlbmd0aDsgaSA8
IHNpemU7ICsraSkKICAgICAgICAgICAgIHVwZGF0ZXIodGhpcy5faGlnaGxpZ2h0UmVzdWx0W2ld
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBob3ZlcmVkKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9ob3ZlcmVkOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGhvdmVyZWQoeCkK
ICAgICB7CkBAIC0xNzQsMTIgKzE1NSwxMiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoImhvdmVyZWQiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGV4cGFuZGVkQ2hpbGRyZW5MaW1pdCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fZXhwYW5kZWRDaGlsZHJlbkxpbWl0OwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IGV4cGFuZGVkQ2hpbGRyZW5MaW1pdCh4KQogICAgIHsKQEAgLTE4OSw3ICsxNzAsNyBA
QCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9leHBhbmRlZENoaWxkcmVuTGltaXQgPSB4OwogICAgICAgICBpZiAodGhpcy50cmVlT3V0bGlu
ZSAmJiAhdGhpcy5fdXBkYXRlQ2hpbGRyZW5JblByb2dyZXNzKQogICAgICAgICAgICAgdGhpcy5f
dXBkYXRlQ2hpbGRyZW4odHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZXhwYW5kZWRD
aGlsZENvdW50KCkKICAgICB7CkBAIC0xOTksOSArMTgwLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGNvdW50ICYmIHRoaXMuY2hpbGRy
ZW5bY291bnQgLSAxXS5leHBhbmRBbGxCdXR0b24pCiAgICAgICAgICAgICBjb3VudC0tOwogICAg
ICAgICByZXR1cm4gY291bnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93Q2hpbGQ6IGZ1bmN0
aW9uKGluZGV4KQorICAgIHNob3dDaGlsZChpbmRleCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCF0aGlzLl9lbGVtZW50Q2xvc2VUYWcpOwogICAgICAgICBpZiAodGhpcy5fZWxlbWVu
dENsb3NlVGFnKQpAQCAtMjE0LDkgKzE5NSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gV2hldGhlciBpbmRleC10aCBjaGlsZCBpcyB2
aXNpYmxlIGluIHRoZSBjaGlsZHJlbiB0cmVlCiAgICAgICAgIHJldHVybiB0aGlzLmV4cGFuZGVk
Q2hpbGRDb3VudCA+IGluZGV4OwotICAgIH0sCisgICAgfQogCi0gICAgX2NyZWF0ZVRvb2x0aXBG
b3JOb2RlOiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZVRvb2x0aXBGb3JOb2RlKCkKICAgICB7CiAg
ICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYgKCFu
b2RlLm5vZGVOYW1lKCkgfHwgbm9kZS5ub2RlTmFtZSgpLnRvTG93ZXJDYXNlKCkgIT09ICJpbWci
KQpAQCAtMjM4LDcgKzIxOSw3IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICB0aGlzLnRv
b2x0aXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIFx4ZDcgJWQgcGl4ZWxzIChOYXR1cmFs
OiAlZCBceGQ3ICVkIHBpeGVscykiKS5mb3JtYXQob2Zmc2V0V2lkdGgsIG9mZnNldEhlaWdodCwg
bmF0dXJhbFdpZHRoLCBuYXR1cmFsSGVpZ2h0KTsKICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpOworICAgICAgICAgICAgICAgIGNvbnNv
bGUuZXJyb3IoZSwgZS5zdGFjayk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjU2
LDkgKzIzNyw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBvYmplY3QucmVsZWFzZSgpOwogICAgICAgICB9CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUobm9kZSwgIiIsIHJlc29sdmVkTm9kZS5iaW5k
KHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZVNlbGVjdGlvbjogZnVuY3Rpb24o
KQorICAgIHVwZGF0ZVNlbGVjdGlvbigpCiAgICAgewogICAgICAgICB2YXIgbGlzdEl0ZW1FbGVt
ZW50ID0gdGhpcy5saXN0SXRlbUVsZW1lbnQ7CiAgICAgICAgIGlmICghbGlzdEl0ZW1FbGVtZW50
KQpAQCAtMjc3LDkgKzI1OCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLnNlbGVjdGlvbkVsZW1lbnQuc3R5bGUu
aGVpZ2h0ID0gbGlzdEl0ZW1FbGVtZW50Lm9mZnNldEhlaWdodCArICJweCI7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIG9uYXR0YWNoKCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9ob3ZlcmVkKSB7CiAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVj
dGlvbigpOwpAQCAtMjg5LDUxICsyNzAsNTcgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwogICAgICAgICB0aGlz
Lmxpc3RJdGVtRWxlbWVudC5kcmFnZ2FibGUgPSB0cnVlOwogICAgICAgICB0aGlzLmxpc3RJdGVt
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCB0aGlzKTsKLSAgICB9LAorICAg
IH0KIAotICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRlKCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCB8fCB0aGlzLl9zaG93SW5saW5lVGV4
dCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KSB8fCB0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbigpOwotICAgIH0s
CisgICAgfQogCi0gICAgZXhwYW5kUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKCkKKyAgICBzdXBlckV4
cGFuZFJlY3Vyc2l2ZWx5KCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgaGFj
ayB0byBhbGxvdyB1c2luZyBzdXBlciBpbiBhIGNhbGxiYWNrLgorICAgICAgICBzdXBlci5leHBh
bmRSZWN1cnNpdmVseShOdW1iZXIuTUFYX1ZBTFVFKTsKKyAgICB9CisKKyAgICBleHBhbmRSZWN1
cnNpdmVseSgpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjaygpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIFRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1cnNpdmVseS5jYWxs
KHRoaXMsIE51bWJlci5NQVhfVkFMVUUpOworICAgICAgICAgICAgdGhpcy5zdXBlckV4cGFuZFJl
Y3Vyc2l2ZWx5KCk7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0
LmdldFN1YnRyZWUoLTEsIGNhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0g
ICAgdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uKGZ1bGxSZWZyZXNoKQorICAgIHVwZGF0ZUNoaWxk
cmVuKGZ1bGxSZWZyZXNoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRDbG9zZVRh
ZykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5n
ZXRDaGlsZE5vZGVzKHRoaXMuX3VwZGF0ZUNoaWxkcmVuLmJpbmQodGhpcywgZnVsbFJlZnJlc2gp
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGluc2VydENoaWxkRWxlbWVudDogZnVuY3Rpb24oY2hp
bGQsIGluZGV4LCBjbG9zaW5nVGFnKQorICAgIGluc2VydENoaWxkRWxlbWVudChjaGlsZCwgaW5k
ZXgsIGNsb3NpbmdUYWcpCiAgICAgewogICAgICAgICB2YXIgbmV3RWxlbWVudCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQoY2hpbGQsIGNsb3NpbmdUYWcpOwogICAgICAgICBuZXdF
bGVtZW50LnNlbGVjdGFibGUgPSB0aGlzLnRyZWVPdXRsaW5lLl9zZWxlY3RFbmFibGVkOwogICAg
ICAgICB0aGlzLmluc2VydENoaWxkKG5ld0VsZW1lbnQsIGluZGV4KTsKICAgICAgICAgcmV0dXJu
IG5ld0VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtb3ZlQ2hpbGQ6IGZ1bmN0aW9uKGNo
aWxkLCB0YXJnZXRJbmRleCkKKyAgICBtb3ZlQ2hpbGQoY2hpbGQsIHRhcmdldEluZGV4KQogICAg
IHsKICAgICAgICAgdmFyIHdhc1NlbGVjdGVkID0gY2hpbGQuc2VsZWN0ZWQ7CiAgICAgICAgIHRo
aXMucmVtb3ZlQ2hpbGQoY2hpbGQpOwogICAgICAgICB0aGlzLmluc2VydENoaWxkKGNoaWxkLCB0
YXJnZXRJbmRleCk7CiAgICAgICAgIGlmICh3YXNTZWxlY3RlZCkKICAgICAgICAgICAgIGNoaWxk
LnNlbGVjdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUNoaWxkcmVuOiBmdW5jdGlv
bihmdWxsUmVmcmVzaCkKKyAgICBfdXBkYXRlQ2hpbGRyZW4oZnVsbFJlZnJlc2gpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5fdXBkYXRlQ2hpbGRyZW5JblByb2dyZXNzIHx8ICF0aGlzLnRyZWVP
dXRsaW5lLl92aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDIxLDI1ICs0MDgsMjUg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
CiAgICAgICAgIGRlbGV0ZSB0aGlzLl91cGRhdGVDaGlsZHJlbkluUHJvZ3Jlc3M7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBhZGp1c3RDb2xsYXBzZWRSYW5nZTogZnVuY3Rpb24oKQorICAgIGFkanVz
dENvbGxhcHNlZFJhbmdlKCkKICAgICB7CiAgICAgICAgIC8vIEVuc3VyZSBwcmVjb25kaXRpb246
IG9ubHkgdGhlIHRyZWUgZWxlbWVudHMgZm9yIG5vZGUgY2hpbGRyZW4gYXJlIGZvdW5kIGluIHRo
ZSB0cmVlCiAgICAgICAgIC8vIChub3QgdGhlIEV4cGFuZCBBbGwgYnV0dG9uIG9yIHRoZSBjbG9z
aW5nIHRhZykuCiAgICAgICAgIGlmICh0aGlzLmV4cGFuZEFsbEJ1dHRvbkVsZW1lbnQgJiYgdGhp
cy5leHBhbmRBbGxCdXR0b25FbGVtZW50Ll9fdHJlZUVsZW1lbnQucGFyZW50KQogICAgICAgICAg
ICAgdGhpcy5yZW1vdmVDaGlsZCh0aGlzLmV4cGFuZEFsbEJ1dHRvbkVsZW1lbnQuX190cmVlRWxl
bWVudCk7CiAKLSAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7Cisg
ICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYgKCFu
b2RlLmNoaWxkcmVuKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb25zdCBjaGlsZE5v
ZGVDb3VudCA9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOworICAgICAgICB2YXIgY2hpbGROb2RlQ291
bnQgPSBub2RlLmNoaWxkcmVuLmxlbmd0aDsKIAogICAgICAgICAvLyBJbiBjYXNlIHNvbWUgbm9k
ZXMgZnJvbSB0aGUgZXhwYW5kZWQgcmFuZ2Ugd2VyZSByZW1vdmVkLCBwdWxsIHNvbWUgbm9kZXMg
ZnJvbSB0aGUgY29sbGFwc2VkIHJhbmdlIGludG8gdGhlIGV4cGFuZGVkIHJhbmdlIGF0IHRoZSBi
b3R0b20uCiAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLmV4cGFuZGVkQ2hpbGRDb3VudCwgbGlt
aXQgPSBNYXRoLm1pbih0aGlzLmV4cGFuZGVkQ2hpbGRyZW5MaW1pdCwgY2hpbGROb2RlQ291bnQp
OyBpIDwgbGltaXQ7ICsraSkKICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGRFbGVtZW50KG5v
ZGUuY2hpbGRyZW5baV0sIGkpOwogCi0gICAgICAgIGNvbnN0IGV4cGFuZGVkQ2hpbGRDb3VudCA9
IHRoaXMuZXhwYW5kZWRDaGlsZENvdW50OworICAgICAgICB2YXIgZXhwYW5kZWRDaGlsZENvdW50
ID0gdGhpcy5leHBhbmRlZENoaWxkQ291bnQ7CiAgICAgICAgIGlmIChjaGlsZE5vZGVDb3VudCA+
IHRoaXMuZXhwYW5kZWRDaGlsZENvdW50KSB7CiAgICAgICAgICAgICB2YXIgdGFyZ2V0QnV0dG9u
SW5kZXggPSBleHBhbmRlZENoaWxkQ291bnQ7CiAgICAgICAgICAgICBpZiAoIXRoaXMuZXhwYW5k
QWxsQnV0dG9uRWxlbWVudCkgewpAQCAtNDQ3LDcgKzQzNCw3IEBAIFdlYkluc3BlY3Rvci5ET01U
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgYnV0dG9uLmNsYXNzTmFt
ZSA9ICJzaG93LWFsbC1ub2RlcyI7CiAgICAgICAgICAgICAgICAgYnV0dG9uLnZhbHVlID0gIiI7
CiAKLSAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IG5ldyBUcmVlRWxlbWVudChidXR0b24sIG51
bGwsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
VHJlZUVsZW1lbnQoYnV0dG9uLCBudWxsLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgaXRlbS5z
ZWxlY3RhYmxlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgaXRlbS5leHBhbmRBbGxCdXR0b24g
PSB0cnVlOwogCkBAIC00NjEsMzIgKzQ0OCwzMiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5leHBhbmRBbGxCdXR0b25FbGVtZW50
LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IEFsbCBOb2RlcyAoJWQg
TW9yZSkiKS5mb3JtYXQoY2hpbGROb2RlQ291bnQgLSBleHBhbmRlZENoaWxkQ291bnQpOwogICAg
ICAgICB9IGVsc2UgaWYgKHRoaXMuZXhwYW5kQWxsQnV0dG9uRWxlbWVudCkKICAgICAgICAgICAg
IGRlbGV0ZSB0aGlzLmV4cGFuZEFsbEJ1dHRvbkVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBoYW5kbGVMb2FkQWxsQ2hpbGRyZW46IGZ1bmN0aW9uKCkKKyAgICBoYW5kbGVMb2FkQWxsQ2hp
bGRyZW4oKQogICAgIHsKICAgICAgICAgdGhpcy5leHBhbmRlZENoaWxkcmVuTGltaXQgPSBNYXRo
Lm1heCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNoaWxkTm9kZUNvdW50LCB0aGlzLmV4cGFuZGVk
Q2hpbGRyZW5MaW1pdCArIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5Jbml0aWFsQ2hpbGRy
ZW5MaW1pdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmV4cGFuZDogZnVuY3Rpb24oKQorICAg
IG9uZXhwYW5kKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwogICAgICAg
ICB0aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0g
ICAgb25jb2xsYXBzZTogZnVuY3Rpb24oKQorICAgIG9uY29sbGFwc2UoKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7CiAgICAgICAgIHRoaXMudHJlZU91dGxpbmUudXBkYXRl
U2VsZWN0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbnJldmVhbDogZnVuY3Rpb24oKQor
ICAgIG9ucmV2ZWFsKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmxpc3RJdGVtRWxlbWVudCkg
ewogICAgICAgICAgICAgdmFyIHRhZ1NwYW5zID0gdGhpcy5saXN0SXRlbUVsZW1lbnQuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgiaHRtbC10YWctbmFtZSIpOwpAQCAtNDk1LDkgKzQ4Miw5IEBAIFdl
Ykluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5l
ZWRlZChmYWxzZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIG9uc2VsZWN0OiBm
dW5jdGlvbih0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCisgICAgb25zZWxlY3QodHJlZUVs
ZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQogICAgIHsKICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5z
dXBwcmVzc1JldmVhbEFuZFNlbGVjdCA9IHRydWU7CiAgICAgICAgIHRoaXMudHJlZU91dGxpbmUu
c2VsZWN0RE9NTm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCBzZWxlY3RlZEJ5VXNlcik7CkBA
IC01MDUsMTQgKzQ5MiwxNCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZ2hsaWdodERP
TU5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdC5pZCk7CiAgICAgICAgIHRoaXMudXBkYXRlU2Vs
ZWN0aW9uKCk7CiAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc3VwcHJlc3NSZXZlYWxBbmRTZWxl
Y3QgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uZGVzZWxlY3Q6IGZ1bmN0aW9uKHRy
ZWVFbGVtZW50KQorICAgIG9uZGVzZWxlY3QodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICB0
aGlzLnRyZWVPdXRsaW5lLnNlbGVjdERPTU5vZGUobnVsbCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBvbmRlbGV0ZTogZnVuY3Rpb24oKQorICAgIG9uZGVsZXRlKCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC01MjMsOSArNTEwLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5yZW1vdmUo
KTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmVudGVyOiBm
dW5jdGlvbigpCisgICAgb25lbnRlcigpCiAgICAgewogICAgICAgICAvLyBPbiBFbnRlciBvciBS
ZXR1cm4gc3RhcnQgZWRpdGluZyB0aGUgZmlyc3QgYXR0cmlidXRlCiAgICAgICAgIC8vIG9yIGNy
ZWF0ZSBhIG5ldyBhdHRyaWJ1dGUgb24gdGhlIHNlbGVjdGVkIGVsZW1lbnQuCkBAIC01MzYsMTEg
KzUyMywxMSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAg
ICAgICAgIC8vIHByZXZlbnQgYSBuZXdsaW5lIGZyb20gYmVpbmcgaW1tZWRpYXRlbHkgaW5zZXJ0
ZWQKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWxlY3RPbk1v
dXNlRG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgc2VsZWN0T25Nb3VzZURvd24oZXZlbnQpCiAg
ICAgewotICAgICAgICBUcmVlRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0T25Nb3VzZURvd24uY2Fs
bCh0aGlzLCBldmVudCk7CisgICAgICAgIHN1cGVyLnNlbGVjdE9uTW91c2VEb3duKGV2ZW50KTsK
IAogICAgICAgICBpZiAodGhpcy5fZWRpdGluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU0
OCw5ICs1MzUsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICAvLyBQcmV2ZW50IHNlbGVjdGluZyB0aGUgbmVhcmVzdCB3b3JkIG9uIGRvdWJsZSBj
bGljay4KICAgICAgICAgaWYgKGV2ZW50LmRldGFpbCA+PSAyKQogICAgICAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uZGJsY2xpY2s6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIG9uZGJsY2xpY2soZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fZWRpdGluZyB8fCB0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC01NjAsOSArNTQ3LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5oYXNDaGlsZHJlbiAmJiAhdGhpcy5leHBhbmRlZCkK
ICAgICAgICAgICAgIHRoaXMuZXhwYW5kKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaW5zZXJ0
SW5MYXN0QXR0cmlidXRlUG9zaXRpb246IGZ1bmN0aW9uKHRhZywgbm9kZSkKKyAgICBfaW5zZXJ0
SW5MYXN0QXR0cmlidXRlUG9zaXRpb24odGFnLCBub2RlKQogICAgIHsKICAgICAgICAgaWYgKHRh
Zy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJodG1sLWF0dHJpYnV0ZSIpLmxlbmd0aCA+IDApCiAg
ICAgICAgICAgICB0YWcuaW5zZXJ0QmVmb3JlKG5vZGUsIHRhZy5sYXN0Q2hpbGQpOwpAQCAtNTc1
LDkgKzU2Miw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3N0YXJ0RWRpdGluZ1RhcmdldDogZnVuY3Rpb24oZXZlbnRUYXJnZXQpCisgICAg
X3N0YXJ0RWRpdGluZ1RhcmdldChldmVudFRhcmdldCkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
LnRyZWVPdXRsaW5lLnNlbGVjdGVkRE9NTm9kZSgpICE9PSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjA1LDkgKzU5Miw5IEBAIFdlYkluc3Bl
Y3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhp
cy5fYWRkTmV3QXR0cmlidXRlKCk7CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3BvcHVsYXRlVGFnQ29udGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRNZW51
LCBldmVudCkKKyAgICBfcG9wdWxhdGVUYWdDb250ZXh0TWVudShjb250ZXh0TWVudSwgZXZlbnQp
CiAgICAgewogICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAg
ICAgIGlmICghbm9kZS5pc0luU2hhZG93VHJlZSgpKSB7CkBAIC02MjksOSArNjE2LDkgQEAgV2Vi
SW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9w
b3B1bGF0ZU5vZGVDb250ZXh0TWVudShjb250ZXh0TWVudSk7CiAgICAgICAgIHRoaXMudHJlZU91
dGxpbmUuX3BvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIHRoaXMucmVwcmVzZW50ZWRP
YmplY3QpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BvcHVsYXRlRm9yY2VkUHNldWRvU3RhdGVJ
dGVtczogZnVuY3Rpb24oc3ViTWVudSkKKyAgICBfcG9wdWxhdGVGb3JjZWRQc2V1ZG9TdGF0ZUl0
ZW1zKHN1Yk1lbnUpCiAgICAgewogICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRP
YmplY3Q7CiAgICAgICAgIHZhciBlbmFibGVkUHNldWRvQ2xhc3NlcyA9IG5vZGUuZW5hYmxlZFBz
ZXVkb0NsYXNzZXM7CkBAIC02NDMsMTggKzYzMCwxOCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIG5vZGUuc2V0UHNldWRvQ2xhc3NF
bmFibGVkKHBzZXVkb0NsYXNzLCAhZW5hYmxlZCk7CiAgICAgICAgICAgICB9LCBlbmFibGVkLCBm
YWxzZSk7CiAgICAgICAgIH0pOwotICAgIH0sCisgICAgfQogCi0gICAgX3BvcHVsYXRlVGV4dENv
bnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSwgdGV4dE5vZGUpCisgICAgX3BvcHVsYXRl
VGV4dENvbnRleHRNZW51KGNvbnRleHRNZW51LCB0ZXh0Tm9kZSkKICAgICB7CiAgICAgICAgIHZh
ciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYgKCFub2RlLmlzSW5T
aGFkb3dUcmVlKCkpCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRWRpdCBUZXh0IiksIHRoaXMuX3N0YXJ0RWRpdGluZ1RleHROb2RlLmJp
bmQodGhpcywgdGV4dE5vZGUpKTsKIAogICAgICAgICB0aGlzLl9wb3B1bGF0ZU5vZGVDb250ZXh0
TWVudShjb250ZXh0TWVudSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVOb2RlQ29u
dGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRNZW51KQorICAgIF9wb3B1bGF0ZU5vZGVDb250ZXh0
TWVudShjb250ZXh0TWVudSkKICAgICB7CiAgICAgICAgIC8vIEFkZCBmcmVlLWZvcm0gbm9kZS1y
ZWxhdGVkIGFjdGlvbnMuCiAgICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVj
dDsKQEAgLTY2Myw5ICs2NTAsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29weSBhcyBIVE1MIiksIHRoaXMuX2NvcHlIVE1MLmJpbmQodGhpcykpOwogICAgICAg
ICBpZiAoIW5vZGUuaXNJblNoYWRvd1RyZWUoKSkKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgTm9kZSIpLCB0aGlzLnJlbW92
ZS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdGFydEVkaXRpbmc6IGZ1bmN0
aW9uKCkKKyAgICBfc3RhcnRFZGl0aW5nKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnRyZWVP
dXRsaW5lLnNlbGVjdGVkRE9NTm9kZSgpICE9PSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0KQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjg5LDkgKzY3Niw5IEBAIFdlYkluc3BlY3Rvci5E
T01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X3N0YXJ0RWRpdGluZ1RleHROb2RlKHRleHROb2RlKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2FkZE5ld0F0dHJpYnV0ZTogZnVu
Y3Rpb24oKQorICAgIF9hZGROZXdBdHRyaWJ1dGUoKQogICAgIHsKICAgICAgICAgLy8gQ2Fubm90
IGp1c3QgY29udmVydCB0aGUgdGV4dHVhbCBodG1sIGludG8gYW4gZWxlbWVudCB3aXRob3V0CiAg
ICAgICAgIC8vIGEgcGFyZW50IG5vZGUuIFVzZSBhIHRlbXBvcmFyeSBzcGFuIGNvbnRhaW5lciBm
b3IgdGhlIEhUTUwuCkBAIC03MDQsOSArNjkxLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHRhZyA9IHRoaXMubGlzdEl0ZW1FbGVtZW50
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImh0bWwtdGFnIilbMF07CiAgICAgICAgIHRoaXMuX2lu
c2VydEluTGFzdEF0dHJpYnV0ZVBvc2l0aW9uKHRhZywgYXR0cik7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zdGFydEVkaXRpbmdBdHRyaWJ1dGUoYXR0ciwgYXR0cik7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfdHJpZ2dlckVkaXRBdHRyaWJ1dGU6IGZ1bmN0aW9uKGF0dHJpYnV0ZU5hbWUpCisgICAg
X3RyaWdnZXJFZGl0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpCiAgICAgewogICAgICAgICB2YXIg
YXR0cmlidXRlRWxlbWVudHMgPSB0aGlzLmxpc3RJdGVtRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKCJodG1sLWF0dHJpYnV0ZS1uYW1lIik7CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBs
ZW4gPSBhdHRyaWJ1dGVFbGVtZW50cy5sZW5ndGg7IGkgPCBsZW47ICsraSkgewpAQCAtNzIwLDkg
KzcwNyw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfc3RhcnRFZGl0aW5nQXR0cmlidXRlOiBmdW5jdGlvbihhdHRyaWJ1dGUsIGVsZW1lbnRG
b3JTZWxlY3Rpb24pCisgICAgX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZShhdHRyaWJ1dGUsIGVsZW1l
bnRGb3JTZWxlY3Rpb24pCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmlzQmVpbmdF
ZGl0ZWQoYXR0cmlidXRlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzU2LDkgKzc0
Myw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGVsZW1lbnRGb3JTZWxlY3Rp
b24sIDAsIGVsZW1lbnRGb3JTZWxlY3Rpb24sIDEpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3N0YXJ0RWRpdGluZ1RleHROb2RlOiBmdW5jdGlvbih0ZXh0
Tm9kZSkKKyAgICBfc3RhcnRFZGl0aW5nVGV4dE5vZGUodGV4dE5vZGUpCiAgICAgewogICAgICAg
ICBpZiAoV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQodGV4dE5vZGUpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC03NjksOSArNzU2LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VB
bmRFeHRlbnQodGV4dE5vZGUsIDAsIHRleHROb2RlLCAxKTsKIAogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdGFydEVkaXRpbmdUYWdOYW1lOiBmdW5jdGlvbih0
YWdOYW1lRWxlbWVudCkKKyAgICBfc3RhcnRFZGl0aW5nVGFnTmFtZSh0YWdOYW1lRWxlbWVudCkK
ICAgICB7CiAgICAgICAgIGlmICghdGFnTmFtZUVsZW1lbnQpIHsKICAgICAgICAgICAgIHRhZ05h
bWVFbGVtZW50ID0gdGhpcy5saXN0SXRlbUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgi
aHRtbC10YWctbmFtZSIpWzBdOwpAQCAtODEyLDkgKzc5OSw5IEBAIFdlYkluc3BlY3Rvci5ET01U
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2VkaXRpbmcgPSBXZWJJbnNw
ZWN0b3Iuc3RhcnRFZGl0aW5nKHRhZ05hbWVFbGVtZW50LCBjb25maWcpOwogICAgICAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudCh0YWdOYW1lRWxlbWVudCwgMCwgdGFn
TmFtZUVsZW1lbnQsIDEpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9zdGFydEVkaXRpbmdBc0hUTUw6IGZ1bmN0aW9uKGNvbW1pdENhbGxiYWNrLCBlcnJvciwg
aW5pdGlhbFZhbHVlKQorICAgIF9zdGFydEVkaXRpbmdBc0hUTUwoY29tbWl0Q2FsbGJhY2ssIGVy
cm9yLCBpbml0aWFsVmFsdWUpCiAgICAgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC04NjgsOSArODU1LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGNvbmZpZyA9IG5ldyBXZWJJbnNwZWN0b3IuRWRp
dGluZ0NvbmZpZyhjb21taXQuYmluZCh0aGlzKSwgZGlzcG9zZS5iaW5kKHRoaXMpKTsKICAgICAg
ICAgY29uZmlnLnNldE11bHRpbGluZSh0cnVlKTsKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IFdl
Ykluc3BlY3Rvci5zdGFydEVkaXRpbmcodGhpcy5faHRtbEVkaXRFbGVtZW50LCBjb25maWcpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2F0dHJpYnV0ZUVkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9u
KGVsZW1lbnQsIG5ld1RleHQsIG9sZFRleHQsIGF0dHJpYnV0ZU5hbWUsIG1vdmVEaXJlY3Rpb24p
CisgICAgX2F0dHJpYnV0ZUVkaXRpbmdDb21taXR0ZWQoZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4
dCwgYXR0cmlidXRlTmFtZSwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIHRoaXMuX2Vk
aXRpbmcgPSBmYWxzZTsKIApAQCAtOTI1LDkgKzkxMiw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBuZXdUZXh0LCBtb3ZlVG9OZXh0
QXR0cmlidXRlSWZOZWVkZWQuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGFn
TmFtZUVkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQsIG9sZFRleHQs
IHRhZ05hbWUsIG1vdmVEaXJlY3Rpb24pCisgICAgX3RhZ05hbWVFZGl0aW5nQ29tbWl0dGVkKGVs
ZW1lbnQsIG5ld1RleHQsIG9sZFRleHQsIHRhZ05hbWUsIG1vdmVEaXJlY3Rpb24pCiAgICAgewog
ICAgICAgICB0aGlzLl9lZGl0aW5nID0gZmFsc2U7CiAgICAgICAgIHZhciBzZWxmID0gdGhpczsK
QEAgLTk4Niw5ICs5NzMsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5zZXROb2Rl
TmFtZShuZXdUZXh0LCBjaGFuZ2VUYWdOYW1lQ2FsbGJhY2spOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3RleHROb2RlRWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3VGV4dCkK
KyAgICBfdGV4dE5vZGVFZGl0aW5nQ29tbWl0dGVkKGVsZW1lbnQsIG5ld1RleHQpCiAgICAgewog
ICAgICAgICB0aGlzLl9lZGl0aW5nID0gZmFsc2U7CiAKQEAgLTEwMDEsMTcgKzk4OCwxNyBAQCBX
ZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGV4
dE5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwogCiAgICAgICAgIHRleHROb2RlLnNldE5v
ZGVWYWx1ZShuZXdUZXh0LCB0aGlzLnVwZGF0ZVRpdGxlLmJpbmQodGhpcykpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHQp
CisgICAgX2VkaXRpbmdDYW5jZWxsZWQoZWxlbWVudCwgY29udGV4dCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2VkaXRpbmcgPSBmYWxzZTsKIAogICAgICAgICAvLyBOZWVkIHRvIHJlc3RvcmUgYXR0
cmlidXRlcyBzdHJ1Y3R1cmUuCiAgICAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9kaXN0aW5jdENsb3NpbmdUYWdFbGVtZW50OiBmdW5jdGlvbigpCisgICAg
X2Rpc3RpbmN0Q2xvc2luZ1RhZ0VsZW1lbnQoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IElt
cHJvdmUgdGhlIFRyZWUgRWxlbWVudCAvIE91dGxpbmUgQWJzdHJhY3Rpb24gdG8gcHJldmVudCBj
cmF3bGluZyB0aGUgRE9NCiAKQEAgLTEwMjcsOSArMTAxNCw5IEBAIFdlYkluc3BlY3Rvci5ET01U
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIG51bGwgaW4gdGhlIGNhc2Ugd2hl
cmUgdGhlcmUgaXNuJ3QgYSBjbG9zaW5nIHRhZy4KICAgICAgICAgdmFyIHRhZ3MgPSB0aGlzLmxp
c3RJdGVtRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJodG1sLXRhZyIpOwogICAgICAg
ICByZXR1cm4gKHRhZ3MubGVuZ3RoID09PSAxID8gbnVsbCA6IHRhZ3NbdGFncy5sZW5ndGggLSAx
XSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVUaXRsZTogZnVuY3Rpb24ob25seVNlYXJj
aFF1ZXJ5Q2hhbmdlZCkKKyAgICB1cGRhdGVUaXRsZShvbmx5U2VhcmNoUXVlcnlDaGFuZ2VkKQog
ICAgIHsKICAgICAgICAgLy8gSWYgd2UgYXJlIGVkaXRpbmcsIHJldHVybiBlYXJseSB0byBwcmV2
ZW50IGNhbmNlbGluZyB0aGUgZWRpdC4KICAgICAgICAgLy8gQWZ0ZXIgZWRpdGluZyBpcyBjb21t
aXR0ZWQgdXBkYXRlVGl0bGUgd2lsbCBiZSBjYWxsZWQuCkBAIC0xMDQ4LDkgKzEwMzUsOSBAQCBX
ZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUg
dGhpcy5zZWxlY3Rpb25FbGVtZW50OwogICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwog
ICAgICAgICB0aGlzLl9oaWdobGlnaHRTZWFyY2hSZXN1bHRzKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfYnVpbGRBdHRyaWJ1dGVET006IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQsIG5hbWUsIHZh
bHVlLCBub2RlKQorICAgIF9idWlsZEF0dHJpYnV0ZURPTShwYXJlbnRFbGVtZW50LCBuYW1lLCB2
YWx1ZSwgbm9kZSkKICAgICB7CiAgICAgICAgIHZhciBoYXNUZXh0ID0gKHZhbHVlLmxlbmd0aCA+
IDApOwogICAgICAgICB2YXIgYXR0clNwYW5FbGVtZW50ID0gcGFyZW50RWxlbWVudC5jcmVhdGVD
aGlsZCgic3BhbiIsICJodG1sLWF0dHJpYnV0ZSIpOwpAQCAtMTA4Nyw5ICsxMDc0LDkgQEAgV2Vi
SW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoaGFz
VGV4dCkKICAgICAgICAgICAgIGF0dHJTcGFuRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgiXCIiKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnVpbGRUYWdET006
IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQsIHRhZ05hbWUsIGlzQ2xvc2luZ1RhZywgaXNEaXN0aW5j
dFRyZWVFbGVtZW50KQorICAgIF9idWlsZFRhZ0RPTShwYXJlbnRFbGVtZW50LCB0YWdOYW1lLCBp
c0Nsb3NpbmdUYWcsIGlzRGlzdGluY3RUcmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIHZhciBu
b2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgdmFyIGNsYXNzZXMgPSBbICJo
dG1sLXRhZyIgXTsKQEAgLTExMTEsMTMgKzEwOTgsMjAgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgICAgICB0YWdFbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI+IikpOwogICAgICAgICBwYXJlbnRFbGVt
ZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJcdTIwMEIiKSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfbm9kZVRpdGxlSW5mbzogZnVuY3Rpb24oKQorICAgIF9ub2RlVGl0
bGVJbmZvKCkKICAgICB7CiAgICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVj
dDsKICAgICAgICAgdmFyIGluZm8gPSB7dGl0bGVET006IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKSwgaGFzQ2hpbGRyZW46IHRoaXMuaGFzQ2hpbGRyZW59OwogCisgICAgICAgIGZ1
bmN0aW9uIHRyaW1lZE5vZGVWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRyaW0g
ZW1wdHkgbGluZXMgZnJvbSB0aGUgYmVnaW5uaW5nIGFuZCBleHRyYSBzcGFjZSBhdCB0aGUgZW5k
IHNpbmNlIG1vc3Qgc3R5bGUgYW5kIHNjcmlwdCB0YWdzIGJlZ2luIHdpdGggYSBuZXdsaW5lCisg
ICAgICAgICAgICAvLyBhbmQgZW5kIHdpdGggYSBuZXdsaW5lIGFuZCBpbmRlbnRhdGlvbiBmb3Ig
dGhlIGVuZCB0YWcuCisgICAgICAgICAgICByZXR1cm4gbm9kZS5ub2RlVmFsdWUoKS5yZXBsYWNl
KC9eW1xuXHJdKi8sICIiKS5yZXBsYWNlKC9ccyokLywgIiIpOworICAgICAgICB9CisKICAgICAg
ICAgc3dpdGNoIChub2RlLm5vZGVUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NV
TUVOVF9GUkFHTUVOVF9OT0RFOgogICAgICAgICAgICAgICAgIHZhciBmcmFnbWVudEVsZW1lbnQg
PSBpbmZvLnRpdGxlRE9NLmNyZWF0ZUNoaWxkKCJzcGFuIiwgIndlYmtpdC1odG1sLWZyYWdtZW50
Iik7CkBAIC0xMTc3LDEzICsxMTcxLDYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBO
b2RlLlRFWFRfTk9ERToKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiB0cmltZWROb2RlVmFsdWUo
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gVHJpbSBlbXB0eSBs
aW5lcyBmcm9tIHRoZSBiZWdpbm5pbmcgYW5kIGV4dHJhIHNwYWNlIGF0IHRoZSBlbmQgc2luY2Ug
bW9zdCBzdHlsZSBhbmQgc2NyaXB0IHRhZ3MgYmVnaW4gd2l0aCBhIG5ld2xpbmUKLSAgICAgICAg
ICAgICAgICAgICAgLy8gYW5kIGVuZCB3aXRoIGEgbmV3bGluZSBhbmQgaW5kZW50YXRpb24gZm9y
IHRoZSBlbmQgdGFnLgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5ub2RlVmFsdWUo
KS5yZXBsYWNlKC9eW1xuXHJdKi8sICIiKS5yZXBsYWNlKC9ccyokLywgIiIpOwotICAgICAgICAg
ICAgICAgIH0KLQogICAgICAgICAgICAgICAgIGlmIChub2RlLnBhcmVudE5vZGUgJiYgbm9kZS5w
YXJlbnROb2RlLm5vZGVOYW1lKCkudG9Mb3dlckNhc2UoKSA9PT0gInNjcmlwdCIpIHsKICAgICAg
ICAgICAgICAgICAgICAgdmFyIG5ld05vZGUgPSBpbmZvLnRpdGxlRE9NLmNyZWF0ZUNoaWxkKCJz
cGFuIiwgImh0bWwtdGV4dC1ub2RlIGxhcmdlIik7CiAgICAgICAgICAgICAgICAgICAgIG5ld05v
ZGUuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLnN5bnRheEhpZ2hsaWdodFN0cmluZ0FzRG9jdW1l
bnRGcmFnbWVudCh0cmltZWROb2RlVmFsdWUoKSwgInRleHQvamF2YXNjcmlwdCIpKTsKQEAgLTEy
MzcsOSArMTIyNCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gaW5mbzsKLSAgICB9LAorICAgIH0KIAotICAg
IF9zaW5nbGVUZXh0Q2hpbGQ6IGZ1bmN0aW9uKG5vZGUpCisgICAgX3NpbmdsZVRleHRDaGlsZChu
b2RlKQogICAgIHsKICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7
CkBAIC0xMjUzLDkgKzEyNDAsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogCiAgICAgICAgIHZhciBzaWJsaW5nID0gZmlyc3RDaGlsZC5uZXh0U2libGluZzsK
ICAgICAgICAgcmV0dXJuIHNpYmxpbmcgPyBudWxsIDogZmlyc3RDaGlsZDsKLSAgICB9LAorICAg
IH0KIAotICAgIF9zaG93SW5saW5lVGV4dDogZnVuY3Rpb24obm9kZSkKKyAgICBfc2hvd0lubGlu
ZVRleHQobm9kZSkKICAgICB7CiAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlKCkgPT09IE5vZGUu
RUxFTUVOVF9OT0RFKSB7CiAgICAgICAgICAgICB2YXIgdGV4dENoaWxkID0gdGhpcy5fc2luZ2xl
VGV4dENoaWxkKG5vZGUpOwpAQCAtMTI2Myw5ICsxMjUwLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1v
dmU6IGZ1bmN0aW9uKCkKKyAgICByZW1vdmUoKQogICAgIHsKICAgICAgICAgdmFyIHBhcmVudEVs
ZW1lbnQgPSB0aGlzLnBhcmVudDsKICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50KQpAQCAtMTI4
NSw5ICsxMjcyLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgfQogCiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlTm9kZShy
ZW1vdmVOb2RlQ2FsbGJhY2spOwotICAgIH0sCisgICAgfQogCi0gICAgX2VkaXRBc0hUTUw6IGZ1
bmN0aW9uKCkKKyAgICBfZWRpdEFzSFRNTCgpCiAgICAgewogICAgICAgICB2YXIgdHJlZU91dGxp
bmUgPSB0aGlzLnRyZWVPdXRsaW5lOwogICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50
ZWRPYmplY3Q7CkBAIC0xMzIyLDE0ICsxMzA5LDE0IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBub2RlLmdldE91dGVySFRN
TCh0aGlzLl9zdGFydEVkaXRpbmdBc0hUTUwuYmluZCh0aGlzLCBjb21taXRDaGFuZ2UpKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9jb3B5SFRNTDogZnVuY3Rpb24oKQorICAgIF9jb3B5SFRNTCgp
CiAgICAgewogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvcHlOb2RlKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfaGlnaGxpZ2h0U2VhcmNoUmVzdWx0czogZnVuY3Rpb24oKQorICAg
IF9oaWdobGlnaHRTZWFyY2hSZXN1bHRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy50aXRs
ZSB8fCAhdGhpcy5fc2VhcmNoUXVlcnkgfHwgIXRoaXMuX3NlYXJjaEhpZ2hsaWdodHNWaXNpYmxl
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM1NiwxMyArMTM0MywzMCBAQCBXZWJJbnNwZWN0
b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2hpZ2hsaWdo
dFJlc3VsdCA9IFtdOwogICAgICAgICBXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0UmFuZ2VzV2l0aFN0
eWxlQ2xhc3ModGhpcy50aXRsZSwgbWF0Y2hSYW5nZXMsIFdlYkluc3BlY3Rvci5ET01UcmVlRWxl
bWVudC5TZWFyY2hIaWdobGlnaHRTdHlsZUNsYXNzTmFtZSwgdGhpcy5faGlnaGxpZ2h0UmVzdWx0
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAg
ICBoYW5kbGVFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC50eXBlID09PSAi
ZHJhZ3N0YXJ0IiAmJiB0aGlzLl9lZGl0aW5nKQogICAgICAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFRyZWVFbGVtZW50LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5ET01U
cmVlRWxlbWVudC5Jbml0aWFsQ2hpbGRyZW5MaW1pdCA9IDUwMDsKK1dlYkluc3BlY3Rvci5ET01U
cmVlRWxlbWVudC5NYXhpbXVtSW5saW5lVGV4dENoaWxkTGVuZ3RoID0gODA7CisKKy8vIEEgdW5p
b24gb2YgSFRNTDQgYW5kIEhUTUw1LURyYWZ0IGVsZW1lbnRzIHRoYXQgZXhwbGljaXRseQorLy8g
b3IgaW1wbGljaXRseSAoZm9yIEhUTUw1KSBmb3JiaWQgdGhlIGNsb3NpbmcgdGFnLgorLy8gRklY
TUU6IFJldmlzZSBvbmNlIEhUTUw1IEZpbmFsIGlzIHB1Ymxpc2hlZC4KK1dlYkluc3BlY3Rvci5E
T01UcmVlRWxlbWVudC5Gb3JiaWRkZW5DbG9zaW5nVGFnRWxlbWVudHMgPSBbCisgICAgImFyZWEi
LCAiYmFzZSIsICJiYXNlZm9udCIsICJiciIsICJjYW52YXMiLCAiY29sIiwgImNvbW1hbmQiLCAi
ZW1iZWQiLCAiZnJhbWUiLAorICAgICJociIsICJpbWciLCAiaW5wdXQiLCAiaXNpbmRleCIsICJr
ZXlnZW4iLCAibGluayIsICJtZXRhIiwgInBhcmFtIiwgInNvdXJjZSIKK10ua2V5U2V0KCk7CisK
Ky8vIFRoZXNlIHRhZ3Mgd2UgZG8gbm90IGFsbG93IGVkaXRpbmcgdGhlaXIgdGFnIG5hbWUuCitX
ZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQuRWRpdFRhZ0JsYWNrbGlzdCA9IFsKKyAgICAiaHRt
bCIsICJoZWFkIiwgImJvZHkiCitdLmtleVNldCgpOworCitXZWJJbnNwZWN0b3IuRE9NVHJlZUVs
ZW1lbnQuU2VhcmNoSGlnaGxpZ2h0U3R5bGVDbGFzc05hbWUgPSAic2VhcmNoLWhpZ2hsaWdodCI7
CitXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQuQm91bmN5SGlnaGxpZ2h0U3R5bGVDbGFzc05h
bWUgPSAiYm91bmN5LWhpZ2hsaWdodCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCmluZGV4IDg4NWY3
ODRlMzdkZmE0NTc0YjkyYjgwYjRiOTA4MjE5YjU4NjQ4ODMuLmRlODhmYTBjZmI0OTEwM2I5YWVk
ODVlMTM2Y2MyZDhhMTU4OWFlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzLCAy
MDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgSm9zZXBoIFBlY29yYXJvCiAgKgpAQCAtMjgsNjcgKzI4LDYwIEBACiAgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZSA9IGZ1bmN0aW9uKG9taXRSb290RE9N
Tm9kZSwgc2VsZWN0RW5hYmxlZCwgc2hvd0luRWxlbWVudHNQYW5lbEVuYWJsZWQpCitXZWJJbnNw
ZWN0b3IuRE9NVHJlZU91dGxpbmUgPSBjbGFzcyBET01UcmVlT3V0bGluZSBleHRlbmRzIFdlYklu
c3BlY3Rvci5UcmVlT3V0bGluZQogewotICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoIm9sIik7Ci0gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
ZG93biIsIHRoaXMuX29ubW91c2Vkb3duLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fb25tb3VzZW1vdmUuYmlu
ZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZW91dCIsIHRoaXMuX29ubW91c2VvdXQuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCB0aGlzLl9vbmRyYWdzdGFydC5iaW5k
KHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdv
dmVyIiwgdGhpcy5fb25kcmFnb3Zlci5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5lbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdsZWF2ZSIsIHRoaXMuX29uZHJhZ2xlYXZlLmJpbmQo
dGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIs
IHRoaXMuX29uZHJvcC5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImRyYWdlbmQiLCB0aGlzLl9vbmRyYWdlbmQuYmluZCh0aGlzKSwgZmFsc2Up
OwotCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRPTVRyZWVP
dXRsaW5lLlN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuU3ludGF4SGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICBUcmVl
T3V0bGluZS5jYWxsKHRoaXMsIHRoaXMuZWxlbWVudCk7CisgICAgY29uc3RydWN0b3Iob21pdFJv
b3RET01Ob2RlLCBzZWxlY3RFbmFibGVkLCBzaG93SW5FbGVtZW50c1BhbmVsRW5hYmxlZCkKKyAg
ICB7CisgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsK
IAotICAgIHRoaXMuX2luY2x1ZGVSb290RE9NTm9kZSA9ICFvbWl0Um9vdERPTU5vZGU7Ci0gICAg
dGhpcy5fc2VsZWN0RW5hYmxlZCA9IHNlbGVjdEVuYWJsZWQ7Ci0gICAgdGhpcy5fc2hvd0luRWxl
bWVudHNQYW5lbEVuYWJsZWQgPSBzaG93SW5FbGVtZW50c1BhbmVsRW5hYmxlZDsKLSAgICB0aGlz
Ll9yb290RE9NTm9kZSA9IG51bGw7Ci0gICAgdGhpcy5fc2VsZWN0ZWRET01Ob2RlID0gbnVsbDsK
LSAgICB0aGlzLl9ldmVudFN1cHBvcnQgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdCgpOwotICAg
IHRoaXMuX2VkaXRpbmcgPSBmYWxzZTsKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKLSAgICB0
aGlzLl92aXNpYmxlID0gZmFsc2U7CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2Vkb3duIiwgdGhpcy5fb25tb3VzZWRvd24uYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAg
ICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX29ubW91c2Vtb3Zl
LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZW91dCIsIHRoaXMuX29ubW91c2VvdXQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICBl
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsIHRoaXMuX29uZHJhZ3N0YXJ0LmJp
bmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFn
b3ZlciIsIHRoaXMuX29uZHJhZ292ZXIuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICBlbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdsZWF2ZSIsIHRoaXMuX29uZHJhZ2xlYXZlLmJpbmQo
dGhpcyksIGZhbHNlKTsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkcm9wIiwg
dGhpcy5fb25kcm9wLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJkcmFnZW5kIiwgdGhpcy5fb25kcmFnZW5kLmJpbmQodGhpcyksIGZhbHNlKTsK
IAotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMu
X2NvbnRleHRNZW51RXZlbnRGaXJlZC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICAgICAgZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJkb20tdHJlZS1vdXRsaW5lIik7CisgICAgICAgIGVsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuU3ludGF4SGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSk7
CiAKLSAgICB0aGlzLl9oaWRlRWxlbWVudEtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgIkgiLCB0aGlzLl9oaWRlRWxlbWVudC5iaW5kKHRo
aXMpLCB0aGlzLmVsZW1lbnQpOwotICAgIHRoaXMuX2hpZGVFbGVtZW50S2V5Ym9hcmRTaG9ydGN1
dC5pbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0ID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2luY2x1
ZGVSb290RE9NTm9kZSA9ICFvbWl0Um9vdERPTU5vZGU7CisgICAgICAgIHRoaXMuX3NlbGVjdEVu
YWJsZWQgPSBzZWxlY3RFbmFibGVkOworICAgICAgICB0aGlzLl9zaG93SW5FbGVtZW50c1BhbmVs
RW5hYmxlZCA9IHNob3dJbkVsZW1lbnRzUGFuZWxFbmFibGVkOworICAgICAgICB0aGlzLl9yb290
RE9NTm9kZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3NlbGVjdGVkRE9NTm9kZSA9IG51bGw7Cisg
ICAgICAgIHRoaXMuX2V2ZW50U3VwcG9ydCA9IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0KCk7Cisg
ICAgICAgIHRoaXMuX2VkaXRpbmcgPSBmYWxzZTsKIAotICAgIFdlYkluc3BlY3Rvci5zaG93U2hh
ZG93RE9NU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50
LkNoYW5nZWQsIHRoaXMuX3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7Ci19Owor
ICAgICAgICB0aGlzLl92aXNpYmxlID0gZmFsc2U7CiAKLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2Vi
SW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5z
cGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVj
dG9yLkRPTVRyZWVPdXRsaW5lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImNvbnRleHRtZW51IiwgdGhpcy5fY29udGV4dE1lbnVFdmVudEZpcmVkLmJpbmQodGhpcyks
IHRydWUpOwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUuU3R5bGVDbGFzc05hbWUgPSAi
ZG9tLXRyZWUtb3V0bGluZSI7CisgICAgICAgIHRoaXMuX2hpZGVFbGVtZW50S2V5Ym9hcmRTaG9y
dGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCAiSCIsIHRoaXMu
X2hpZGVFbGVtZW50LmJpbmQodGhpcyksIHRoaXMuZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2hp
ZGVFbGVtZW50S2V5Ym9hcmRTaG9ydGN1dC5pbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0ID0gZmFs
c2U7CiAKLVdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5FdmVudCA9IHsKLSAgICBTZWxlY3Rl
ZE5vZGVDaGFuZ2VkOiAiZG9tLXRyZWUtb3V0bGluZS1zZWxlY3RlZC1ub2RlLWNoYW5nZWQiCi19
OworICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1NoYWRvd0RPTVNldHRpbmcuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93U2hhZG93
RE9NU2V0dGluZ0NoYW5nZWQsIHRoaXMpOworICAgIH0KIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVP
dXRsaW5lLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTVRy
ZWVPdXRsaW5lLAorICAgIC8vIFB1YmxpYwogCi0gICAgd2lyZVRvRG9tQWdlbnQ6IGZ1bmN0aW9u
KCkKKyAgICB3aXJlVG9Eb21BZ2VudCgpCiAgICAgewogICAgICAgICB0aGlzLl9lbGVtZW50c1Ry
ZWVVcGRhdGVyID0gbmV3IFdlYkluc3BlY3Rvci5ET01UcmVlVXBkYXRlcih0aGlzKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGNsb3NlOiBmdW5jdGlvbigpCisgICAgY2xvc2UoKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX2VsZW1lbnRzVHJlZVVwZGF0ZXIpIHsKICAgICAgICAgICAgIHRoaXMu
X2VsZW1lbnRzVHJlZVVwZGF0ZXIuY2xvc2UoKTsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRz
VHJlZVVwZGF0ZXIgPSBudWxsOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXRW
aXNpYmxlOiBmdW5jdGlvbih2aXNpYmxlLCBvbWl0Rm9jdXMpCisgICAgc2V0VmlzaWJsZSh2aXNp
YmxlLCBvbWl0Rm9jdXMpCiAgICAgewogICAgICAgICB0aGlzLl92aXNpYmxlID0gdmlzaWJsZTsK
ICAgICAgICAgaWYgKCF0aGlzLl92aXNpYmxlKQpAQCAtOTcsMjIgKzkwLDIyIEBAIFdlYkluc3Bl
Y3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZU1v
ZGlmaWVkTm9kZXMoKTsKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRE9NTm9kZSkKICAgICAg
ICAgICAgIHRoaXMuX3JldmVhbEFuZFNlbGVjdE5vZGUodGhpcy5fc2VsZWN0ZWRET01Ob2RlLCBv
bWl0Rm9jdXMpOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkRXZlbnRMaXN0ZW5lcjogZnVuY3Rp
b24oZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKKyAgICBhZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCiAgICAgewogICAgICAgICB0aGlzLl9l
dmVudFN1cHBvcnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2Jq
ZWN0KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9u
KGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCisgICAgcmVtb3ZlRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KQogICAgIHsKICAgICAgICAgdGhpcy5f
ZXZlbnRTdXBwb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhp
c09iamVjdCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcm9vdERPTU5vZGUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3RET01Ob2RlOwotICAgIH0sCisgICAgfQogCiAgICAg
c2V0IHJvb3RET01Ob2RlKHgpCiAgICAgewpAQCAtMTI0LDE5ICsxMTcsMTkgQEAgV2ViSW5zcGVj
dG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faXNYTUxNaW1l
VHlwZSA9IHggJiYgeC5pc1hNTE5vZGUoKTsKIAogICAgICAgICB0aGlzLnVwZGF0ZSgpOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGlzWE1MTWltZVR5cGUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2lzWE1MTWltZVR5cGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWxlY3RlZERP
TU5vZGU6IGZ1bmN0aW9uKCkKKyAgICBzZWxlY3RlZERPTU5vZGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3NlbGVjdGVkRE9NTm9kZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlbGVj
dERPTU5vZGU6IGZ1bmN0aW9uKG5vZGUsIGZvY3VzKQorICAgIHNlbGVjdERPTU5vZGUobm9kZSwg
Zm9jdXMpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRET01Ob2RlID09PSBub2Rl
KSB7CiAgICAgICAgICAgICB0aGlzLl9yZXZlYWxBbmRTZWxlY3ROb2RlKG5vZGUsICFmb2N1cyk7
CkBAIC0xNTMsMTQgKzE0NiwxNCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90
eXBlID0gewogICAgICAgICAvLyBOb3RlIHRoYXQgX3JldmVhbEFuZFNlbGVjdE5vZGUgd2lsbCBu
b3QgZG8gYW55dGhpbmcgZm9yIGEgbnVsbCBub2RlLgogICAgICAgICBpZiAoIW5vZGUgfHwgdGhp
cy5fc2VsZWN0ZWRET01Ob2RlID09PSBub2RlKQogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRO
b2RlQ2hhbmdlZCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVkaXRpbmcoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRpbmc7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRh
dGU6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGUoKQogICAgIHsKICAgICAgICAgdmFyIHNlbGVjdGVk
Tm9kZSA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA/IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVu
dC5yZXByZXNlbnRlZE9iamVjdCA6IG51bGw7CiAKQEAgLTE4NywyMiArMTgwLDIyIEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHNlbGVj
dGVkTm9kZSkKICAgICAgICAgICAgIHRoaXMuX3JldmVhbEFuZFNlbGVjdE5vZGUoc2VsZWN0ZWRO
b2RlLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZVNlbGVjdGlvbjogZnVuY3Rp
b24oKQorICAgIHVwZGF0ZVNlbGVjdGlvbigpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuc2Vs
ZWN0ZWRUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdmFyIGVsZW1l
bnQgPSB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7CiAgICAgICAgIGVsZW1l
bnQudXBkYXRlU2VsZWN0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2VsZWN0ZWROb2Rl
Q2hhbmdlZDogZnVuY3Rpb24oKQorICAgIF9zZWxlY3RlZE5vZGVDaGFuZ2VkKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2V2ZW50U3VwcG9ydC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkRPTVRyZWVPdXRsaW5lLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQpOwotICAgIH0s
CisgICAgfQogCi0gICAgZmluZFRyZWVFbGVtZW50OiBmdW5jdGlvbihub2RlKQorICAgIGZpbmRU
cmVlRWxlbWVudChub2RlKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gaXNBbmNlc3Rvck5vZGUo
YW5jZXN0b3IsIG5vZGUpCiAgICAgICAgIHsKQEAgLTIxNCwxNiArMjA3LDE2IEBAIFdlYkluc3Bl
Y3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gbm9k
ZS5wYXJlbnROb2RlOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gVHJl
ZU91dGxpbmUucHJvdG90eXBlLmZpbmRUcmVlRWxlbWVudC5jYWxsKHRoaXMsIG5vZGUsIGlzQW5j
ZXN0b3JOb2RlLCBwYXJlbnROb2RlKTsKKyAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gc3VwZXIu
ZmluZFRyZWVFbGVtZW50KG5vZGUsIGlzQW5jZXN0b3JOb2RlLCBwYXJlbnROb2RlKTsKICAgICAg
ICAgaWYgKCF0cmVlRWxlbWVudCAmJiBub2RlLm5vZGVUeXBlKCkgPT09IE5vZGUuVEVYVF9OT0RF
KSB7CiAgICAgICAgICAgICAvLyBUaGUgdGV4dCBub2RlIG1pZ2h0IGhhdmUgYmVlbiBpbmxpbmVk
IGlmIGl0IHdhcyBzaG9ydCwgc28gdHJ5IHRvIGZpbmQgdGhlIHBhcmVudCBlbGVtZW50LgotICAg
ICAgICAgICAgdHJlZUVsZW1lbnQgPSBUcmVlT3V0bGluZS5wcm90b3R5cGUuZmluZFRyZWVFbGVt
ZW50LmNhbGwodGhpcywgbm9kZS5wYXJlbnROb2RlLCBpc0FuY2VzdG9yTm9kZSwgcGFyZW50Tm9k
ZSk7CisgICAgICAgICAgICB0cmVlRWxlbWVudCA9IHN1cGVyLmZpbmRUcmVlRWxlbWVudChub2Rl
LnBhcmVudE5vZGUsIGlzQW5jZXN0b3JOb2RlLCBwYXJlbnROb2RlKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiB0cmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0ZVRy
ZWVFbGVtZW50Rm9yOiBmdW5jdGlvbihub2RlKQorICAgIGNyZWF0ZVRyZWVFbGVtZW50Rm9yKG5v
ZGUpCiAgICAgewogICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLmZpbmRUcmVlRWxlbWVu
dChub2RlKTsKICAgICAgICAgaWYgKHRyZWVFbGVtZW50KQpAQCAtMjM2LDE2ICsyMjksNTAgQEAg
V2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJl
dHVybiB0cmVlRWxlbWVudC5jaGlsZHJlbltub2RlLmluZGV4XTsKIAogICAgICAgICByZXR1cm4g
bnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzdXBwcmVzc1JldmVhbEFuZFNlbGVjdCh4
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3N1cHByZXNzUmV2ZWFsQW5kU2VsZWN0ID09PSB4
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9zdXBwcmVzc1JldmVhbEFuZFNl
bGVjdCA9IHg7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmV2ZWFsQW5kU2VsZWN0Tm9kZTogZnVu
Y3Rpb24obm9kZSwgb21pdEZvY3VzKQorCisgICAgcG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0
TWVudSwgZXZlbnQsIHRyZWVFbGVtZW50KQorICAgIHsKKyAgICAgICAgdmFyIHRhZyA9IGV2ZW50
LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJodG1sLXRhZyIpOworICAgICAg
ICB2YXIgdGV4dE5vZGUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFz
cygiaHRtbC10ZXh0LW5vZGUiKTsKKyAgICAgICAgdmFyIGNvbW1lbnROb2RlID0gZXZlbnQudGFy
Z2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoImh0bWwtY29tbWVudCIpOworCisgICAg
ICAgIHZhciBwb3B1bGF0ZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKHRhZyAmJiB0cmVlRWxlbWVu
dC5fcG9wdWxhdGVUYWdDb250ZXh0TWVudSkgeworICAgICAgICAgICAgaWYgKHBvcHVsYXRlZCkK
KyAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAg
ICAgIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVu
dCk7CisgICAgICAgICAgICBwb3B1bGF0ZWQgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKHRl
eHROb2RlICYmIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZVRleHRDb250ZXh0TWVudSkgeworICAgICAg
ICAgICAgaWYgKHBvcHVsYXRlZCkKKyAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRT
ZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZVRleHRDb250ZXh0
TWVudShjb250ZXh0TWVudSwgdGV4dE5vZGUpOworICAgICAgICAgICAgcG9wdWxhdGVkID0gdHJ1
ZTsKKyAgICAgICAgfSBlbHNlIGlmIChjb21tZW50Tm9kZSAmJiB0cmVlRWxlbWVudC5fcG9wdWxh
dGVOb2RlQ29udGV4dE1lbnUpIHsKKyAgICAgICAgICAgIGlmIChwb3B1bGF0ZWQpCisgICAgICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICB0cmVl
RWxlbWVudC5fcG9wdWxhdGVOb2RlQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIHRleHROb2RlKTsK
KyAgICAgICAgICAgIHBvcHVsYXRlZCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gcG9wdWxhdGVkOworICAgIH0KKworICAgIGFkanVzdENvbGxhcHNlZFJhbmdlKCkKKyAgICB7
CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX3JldmVhbEFuZFNlbGVjdE5vZGUobm9k
ZSwgb21pdEZvY3VzKQogICAgIHsKICAgICAgICAgaWYgKCFub2RlIHx8IHRoaXMuX3N1cHByZXNz
UmV2ZWFsQW5kU2VsZWN0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjU1LDkgKzI4Miw5IEBA
IFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgdHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KG9taXRGb2N1cyk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRGcm9tRXZlbnQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF90cmVlRWxlbWVudEZyb21FdmVudChldmVudCkKICAgICB7CiAgICAgICAgIHZh
ciBzY3JvbGxDb250YWluZXIgPSB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudDsKIApAQCAtMjgx
LDkgKzMwOCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBlbGVtZW50ID0gdGhpcy50cmVlRWxlbWVudEZyb21Qb2ludCh4LCB5ICsgMik7
CiAKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfb25tb3Vz
ZWRvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vbm1vdXNlZG93bihldmVudCkKICAgICB7CiAg
ICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOwog
ICAgICAgICBpZiAoIWVsZW1lbnQgfHwgZWxlbWVudC5pc0V2ZW50V2l0aGluRGlzY2xvc3VyZVRy
aWFuZ2xlKGV2ZW50KSkgewpAQCAtMjkyLDkgKzMxOSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVl
T3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBlbGVtZW50LnNlbGVj
dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX29ubW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkK
KyAgICBfb25tb3VzZW1vdmUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZWxlbWVudCA9IHRo
aXMuX3RyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGVsZW1lbnQgJiYg
dGhpcy5fcHJldmlvdXNIb3ZlcmVkRWxlbWVudCA9PT0gZWxlbWVudCkKQEAgLTMxNSw5ICszNDIs
OSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICB9
CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZ2hsaWdodERPTU5vZGUo
ZWxlbWVudCA/IGVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QuaWQgOiAwKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9vbm1vdXNlb3V0OiBmdW5jdGlvbihldmVudCkKKyAgICBfb25tb3VzZW91dChl
dmVudCkKICAgICB7CiAgICAgICAgIHZhciBub2RlVW5kZXJNb3VzZSA9IGRvY3VtZW50LmVsZW1l
bnRGcm9tUG9pbnQoZXZlbnQucGFnZVgsIGV2ZW50LnBhZ2VZKTsKICAgICAgICAgaWYgKG5vZGVV
bmRlck1vdXNlICYmIG5vZGVVbmRlck1vdXNlLmlzRGVzY2VuZGFudCh0aGlzLmVsZW1lbnQpKQpA
QCAtMzI5LDkgKzM1Niw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlk
ZURPTU5vZGVIaWdobGlnaHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9vbmRyYWdzdGFydDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX29uZHJhZ3N0YXJ0KGV2ZW50KQogICAgIHsKICAgICAgICAg
dmFyIHRyZWVFbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOwogICAg
ICAgICBpZiAoIXRyZWVFbGVtZW50KQpAQCAtMzUwLDkgKzM3Nyw5IEBAIFdlYkluc3BlY3Rvci5E
T01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVl
TWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0sCisgICAgfQogCi0gICAgX29uZHJhZ292ZXI6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9v
bmRyYWdvdmVyKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9ub2RlQmVpbmdEcmFn
Z2VkKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzc0LDE2ICs0MDEsMTYgQEAgV2Vi
SW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAi
bW92ZSI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9vbmRy
YWdsZWF2ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX29uZHJhZ2xlYXZlKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5fY2xlYXJEcmFnT3ZlclRyZWVFbGVtZW50TWFya2VyKCk7CiAgICAgICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9pc1ZhbGlkRHJhZ1NvdXJjZU9yVGFyZ2V0OiBmdW5jdGlvbih0cmVlRWxl
bWVudCkKKyAgICBfaXNWYWxpZERyYWdTb3VyY2VPclRhcmdldCh0cmVlRWxlbWVudCkKICAgICB7
CiAgICAgICAgIGlmICghdHJlZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0zOTYsMTEgKzQyMywyMyBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0sCisgICAgfQogCi0gICAgX29uZHJvcDogZnVuY3Rpb24oZXZlbnQpCisgICAgX29uZHJv
cChldmVudCkKICAgICB7CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisKKyAgICAg
ICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIG5ld05vZGVJZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
dGhpcy5fdXBkYXRlTW9kaWZpZWROb2RlcygpOworICAgICAgICAgICAgdmFyIG5ld05vZGUgPSBX
ZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIubm9kZUZvcklkKG5ld05vZGVJZCk7CisgICAgICAg
ICAgICBpZiAobmV3Tm9kZSkKKyAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdERPTU5vZGUobmV3
Tm9kZSwgdHJ1ZSk7CisgICAgICAgIH0KKwogICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlz
Ll90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7CiAgICAgICAgIGlmICh0aGlzLl9ub2RlQmVp
bmdEcmFnZ2VkICYmIHRyZWVFbGVtZW50KSB7CiAgICAgICAgICAgICB2YXIgcGFyZW50Tm9kZTsK
QEAgLTQxNSwzOSArNDU0LDI5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAgICAgYW5jaG9yTm9kZSA9IGRyYWdUYXJnZXROb2RlOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgbmV3Tm9k
ZUlkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZp
ZWROb2RlcygpOwotICAgICAgICAgICAgICAgIHZhciBuZXdOb2RlID0gV2ViSW5zcGVjdG9yLmRv
bVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChuZXdOb2RlSWQpOwotICAgICAgICAgICAgICAgIGlmIChu
ZXdOb2RlKQotICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdERPTU5vZGUobmV3Tm9kZSwg
dHJ1ZSk7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICB0aGlzLl9ub2RlQmVpbmdEcmFnZ2Vk
Lm1vdmVUbyhwYXJlbnROb2RlLCBhbmNob3JOb2RlLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9ub2RlQmVpbmdEcmFnZ2VkOwotICAgIH0s
CisgICAgfQogCi0gICAgX29uZHJhZ2VuZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX29uZHJhZ2Vu
ZChldmVudCkKICAgICB7CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAg
IHRoaXMuX2NsZWFyRHJhZ092ZXJUcmVlRWxlbWVudE1hcmtlcigpOwogICAgICAgICBkZWxldGUg
dGhpcy5fbm9kZUJlaW5nRHJhZ2dlZDsKLSAgICB9LAorICAgIH0KIAotICAgIF9jbGVhckRyYWdP
dmVyVHJlZUVsZW1lbnRNYXJrZXI6IGZ1bmN0aW9uKCkKKyAgICBfY2xlYXJEcmFnT3ZlclRyZWVF
bGVtZW50TWFya2VyKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kcmFnT3ZlclRyZWVFbGVt
ZW50KSB7CiAgICAgICAgICAgICB0aGlzLl9kcmFnT3ZlclRyZWVFbGVtZW50LnVwZGF0ZVNlbGVj
dGlvbigpOwogICAgICAgICAgICAgdGhpcy5fZHJhZ092ZXJUcmVlRWxlbWVudC5saXN0SXRlbUVs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZWxlbWVudHMtZHJhZy1vdmVyIik7CiAgICAgICAgICAg
ICBkZWxldGUgdGhpcy5fZHJhZ092ZXJUcmVlRWxlbWVudDsKICAgICAgICAgfQotICAgIH0sCisg
ICAgfQogCi0gICAgX2NvbnRleHRNZW51RXZlbnRGaXJlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2NvbnRleHRNZW51RXZlbnRGaXJlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciB0cmVlRWxl
bWVudCA9IHRoaXMuX3RyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKCF0
cmVlRWxlbWVudCkKQEAgLTQ1Niw0NiArNDg1LDE1IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0
bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwogICAgICAgICB0aGlzLnBvcHVsYXRlQ29udGV4dE1l
bnUoY29udGV4dE1lbnUsIGV2ZW50LCB0cmVlRWxlbWVudCk7CiAgICAgICAgIGNvbnRleHRNZW51
LnNob3coKTsKLSAgICB9LAotCi0gICAgcG9wdWxhdGVDb250ZXh0TWVudTogZnVuY3Rpb24oY29u
dGV4dE1lbnUsIGV2ZW50LCB0cmVlRWxlbWVudCkKLSAgICB7Ci0gICAgICAgIHZhciB0YWcgPSBl
dmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygiaHRtbC10YWciKTsKLSAg
ICAgICAgdmFyIHRleHROb2RlID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRo
Q2xhc3MoImh0bWwtdGV4dC1ub2RlIik7Ci0gICAgICAgIHZhciBjb21tZW50Tm9kZSA9IGV2ZW50
LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJodG1sLWNvbW1lbnQiKTsKLQot
ICAgICAgICB2YXIgcG9wdWxhdGVkID0gZmFsc2U7Ci0gICAgICAgIGlmICh0YWcgJiYgdHJlZUVs
ZW1lbnQuX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUpIHsKLSAgICAgICAgICAgIGlmIChwb3B1bGF0
ZWQpCi0gICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7Ci0gICAg
ICAgICAgICB0cmVlRWxlbWVudC5fcG9wdWxhdGVUYWdDb250ZXh0TWVudShjb250ZXh0TWVudSwg
ZXZlbnQpOwotICAgICAgICAgICAgcG9wdWxhdGVkID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlm
ICh0ZXh0Tm9kZSAmJiB0cmVlRWxlbWVudC5fcG9wdWxhdGVUZXh0Q29udGV4dE1lbnUpIHsKLSAg
ICAgICAgICAgIGlmIChwb3B1bGF0ZWQpCi0gICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kU2VwYXJhdG9yKCk7Ci0gICAgICAgICAgICB0cmVlRWxlbWVudC5fcG9wdWxhdGVUZXh0Q29u
dGV4dE1lbnUoY29udGV4dE1lbnUsIHRleHROb2RlKTsKLSAgICAgICAgICAgIHBvcHVsYXRlZCA9
IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29tbWVudE5vZGUgJiYgdHJlZUVsZW1lbnQuX3Bv
cHVsYXRlTm9kZUNvbnRleHRNZW51KSB7Ci0gICAgICAgICAgICBpZiAocG9wdWxhdGVkKQotICAg
ICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAg
dHJlZUVsZW1lbnQuX3BvcHVsYXRlTm9kZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCB0ZXh0Tm9k
ZSk7Ci0gICAgICAgICAgICBwb3B1bGF0ZWQgPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAg
cmV0dXJuIHBvcHVsYXRlZDsKLSAgICB9LAotCi0gICAgYWRqdXN0Q29sbGFwc2VkUmFuZ2U6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlTW9kaWZpZWROb2Rl
czogZnVuY3Rpb24oKQorICAgIF91cGRhdGVNb2RpZmllZE5vZGVzKCkKICAgICB7CiAgICAgICAg
IGlmICh0aGlzLl9lbGVtZW50c1RyZWVVcGRhdGVyKQogICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dHNUcmVlVXBkYXRlci5fdXBkYXRlTW9kaWZpZWROb2RlcygpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3BvcHVsYXRlQ29udGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRNZW51LCBkb21Ob2RlKQor
ICAgIF9wb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCBkb21Ob2RlKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9zaG93SW5FbGVtZW50c1BhbmVsRW5hYmxlZCkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTUwNyw5ICs1MDUsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwog
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmV2
ZWFsIGluIERPTSBUcmVlIiksIHJldmVhbEVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Nob3dT
aGFkb3dET01TZXR0aW5nQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBub2RlVG9T
ZWxlY3QgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQgPyB0aGlzLnNlbGVjdGVkVHJlZUVsZW1l
bnQucmVwcmVzZW50ZWRPYmplY3QgOiBudWxsOwogICAgICAgICB3aGlsZSAobm9kZVRvU2VsZWN0
KSB7CkBAIC01MjQsOSArNTIyLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBpZiAobm9kZVRvU2VsZWN0KQogICAgICAgICAgICAgdGhpcy5z
ZWxlY3RET01Ob2RlKG5vZGVUb1NlbGVjdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGlkZUVs
ZW1lbnQ6IGZ1bmN0aW9uKGV2ZW50LCBrZXlib2FyZFNob3J0Y3V0KQorICAgIF9oaWRlRWxlbWVu
dChldmVudCwga2V5Ym9hcmRTaG9ydGN1dCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5zZWxl
Y3RlZFRyZWVFbGVtZW50IHx8IFdlYkluc3BlY3Rvci5pc0VkaXRpbmdBbnlGaWVsZCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNTc3LDQgKzU3NSw2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVl
T3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVP
dXRsaW5lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBUcmVlT3V0bGluZS5wcm90b3R5cGU7CitXZWJJ
bnNwZWN0b3IuRE9NVHJlZU91dGxpbmUuRXZlbnQgPSB7CisgICAgU2VsZWN0ZWROb2RlQ2hhbmdl
ZDogImRvbS10cmVlLW91dGxpbmUtc2VsZWN0ZWQtbm9kZS1jaGFuZ2VkIgorfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlSG9z
dFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQuanMKaW5kZXggNWE1MmQyMDEzYTY4ODBhMTA5Yzlj
MzYyY2U4MDg0ODdjYzY0YTBlOS4uODViYzcwZGJjYTA5MTg4ODZmNjI3YWMzMzNmYjdhZWU4MzNh
YjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI5ICsy
MywyNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5EYXRhYmFzZUhvc3RUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKGhvc3QpCitXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQgPSBjbGFzcyBEYXRhYmFzZUhvc3RUcmVlRWxl
bWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkZvbGRl
clRyZWVFbGVtZW50LkZvbGRlckljb25TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLmRpc3Bs
YXlOYW1lRm9ySG9zdChob3N0KSwgbnVsbCk7Ci0KLSAgICB0aGlzLl9ob3N0ID0gaG9zdDsKKyAg
ICBjb25zdHJ1Y3Rvcihob3N0KQorICAgIHsKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLkZv
bGRlclRyZWVFbGVtZW50LkZvbGRlckljb25TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLmRp
c3BsYXlOYW1lRm9ySG9zdChob3N0KSwgbnVsbCk7CiAKLSAgICB0aGlzLmhhc0NoaWxkcmVuID0g
dHJ1ZTsKLX07CisgICAgICAgIHRoaXMuX2hvc3QgPSBob3N0OwogCi1XZWJJbnNwZWN0b3IuRGF0
YWJhc2VIb3N0VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQsCisgICAgICAgIHRoaXMuaGFzQ2hpbGRy
ZW4gPSB0cnVlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hbWUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvckhvc3QodGhpcy5f
aG9zdCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2F0ZWdvcnlOYW1lKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRhdGFiYXNlcyIpOwogICAgIH0K
IH07Ci0KLVdlYkluc3BlY3Rvci5EYXRhYmFzZUhvc3RUcmVlRWxlbWVudC5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFz
ZVRhYmxlVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQuanMKaW5kZXggYjRhNWQ0Njk2NzlkMjYy
NjM3Y2I4MzcxOTYxYjczZThlMjRlN2ZlMC4uYTUyYmUzNTQ4ZGQ1MWI0Mzk0OWY5ZGNjNTc3NjRk
MGEyZWViMTdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVGFibGVUcmVlRWxlbWVudC5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsMTkgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJl
c2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVUcmVlRWxlbWVudCA9IGNs
YXNzIERhdGFiYXNlVGFibGVUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFs
VHJlZUVsZW1lbnQKIHsKLSAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlT2JqZWN0KTsKKyAgICBjb25zdHJ1Y3Rv
cihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3Qp
OwogCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFdlYklu
c3BlY3Rvci5EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQuRGF0YWJhc2VUYWJsZUljb25TdHlsZUNs
YXNzTmFtZSwgcmVwcmVzZW50ZWRPYmplY3QubmFtZSwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3Qs
IGZhbHNlKTsKKyAgICAgICAgc3VwZXIoImRhdGFiYXNlLXRhYmxlLWljb24iLCByZXByZXNlbnRl
ZE9iamVjdC5uYW1lLCBudWxsLCByZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOwogCi0gICAgdGhp
cy5zbWFsbCA9IHRydWU7CisgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOworICAgIH0KIH07Ci0K
LVdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQuRGF0YWJhc2VUYWJsZUljb25T
dHlsZUNsYXNzTmFtZSA9ICJkYXRhYmFzZS10YWJsZS1pY29uIjsKLQotV2ViSW5zcGVjdG9yLkRh
dGFiYXNlVGFibGVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQKLX07Ci0KLVdlYkluc3BlY3Rvci5E
YXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUcmVlRWxlbWVudC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVHJlZUVsZW1l
bnQuanMKaW5kZXggY2I0Nzk5ZTllY2ZjNWQ1MjAxN2ZjZTgzMThmYWNkZDljZjM4OWY1Ni4uYmFj
Yzk0MmU1YTc1MmY5NWI1YmQzOGZlZTY3ZTU1MGE3ZTIzMWI5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUcmVlRWxlbWVudC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFz
ZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMywzMyArMjMsMzAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUcmVlRWxlbWVudCA9IGZ1
bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkRhdGFiYXNlVHJlZUVsZW1l
bnQgPSBjbGFzcyBEYXRhYmFzZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVy
YWxUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0KTsKLQotICAgIFdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUcmVl
RWxlbWVudC5EYXRhYmFzZUljb25TdHlsZUNsYXNzTmFtZSwgcmVwcmVzZW50ZWRPYmplY3QubmFt
ZSwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3QsIHRydWUpOwotCi0gICAgdGhpcy5zbWFsbCA9IHRy
dWU7Ci0gICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZhbHNlOworICAgIGNvbnN0cnVjdG9yKHJlcHJl
c2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QpOwogCi0gICAgLy8g
U2luY2Ugd2UgYXJlIGluaXRpYWxseSB0ZWxsaW5nIHRoZSB0cmVlIGVsZW1lbnQgd2UgZG9uJ3Qg
aGF2ZSBhbnkgY2hpbGRyZW4sIG1ha2Ugc3VyZSB0aGF0IHdlIHRyeSB0byBwb3B1bGF0ZQotICAg
IC8vIHRoZSB0cmVlIGVsZW1lbnQgKHdoaWNoIHdpbGwgZ2V0IGEgbGlzdCBvZiB0YWJsZXMpIHdo
ZW4gdGhlIGVsZW1lbnQgaXMgY3JlYXRlZC4KLSAgICB0aGlzLm9ucG9wdWxhdGUoKTsKLX07Cisg
ICAgICAgIHN1cGVyKCJkYXRhYmFzZS1pY29uIiwgcmVwcmVzZW50ZWRPYmplY3QubmFtZSwgbnVs
bCwgcmVwcmVzZW50ZWRPYmplY3QsIHRydWUpOwogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUcmVl
RWxlbWVudC5EYXRhYmFzZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkYXRhYmFzZS1pY29uIjsKKyAg
ICAgICAgdGhpcy5zbWFsbCA9IHRydWU7CisgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxz
ZTsKIAotV2ViSW5zcGVjdG9yLkRhdGFiYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUcmVlRWxlbWVudCwKKyAgICAgICAg
Ly8gU2luY2Ugd2UgYXJlIGluaXRpYWxseSB0ZWxsaW5nIHRoZSB0cmVlIGVsZW1lbnQgd2UgZG9u
J3QgaGF2ZSBhbnkgY2hpbGRyZW4sIG1ha2Ugc3VyZSB0aGF0IHdlIHRyeSB0byBwb3B1bGF0ZQor
ICAgICAgICAvLyB0aGUgdHJlZSBlbGVtZW50ICh3aGljaCB3aWxsIGdldCBhIGxpc3Qgb2YgdGFi
bGVzKSB3aGVuIHRoZSBlbGVtZW50IGlzIGNyZWF0ZWQuCisgICAgICAgIHRoaXMub25wb3B1bGF0
ZSgpOworICAgIH0KIAogICAgIC8vIE92ZXJyaWRlcyBmcm9tIFRyZWVFbGVtZW50IChQcml2YXRl
KQogCi0gICAgb25jb2xsYXBzZTogZnVuY3Rpb24oKQorICAgIG9uY29sbGFwc2UoKQogICAgIHsK
ICAgICAgICAgdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB0cnVlOwotICAgIH0sCisgICAg
fQogCi0gICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQorICAgIG9ucG9wdWxhdGUoKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoICYmICF0aGlzLnNob3VsZFJlZnJlc2hD
aGlsZHJlbikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTcxLDUgKzY4LDMgQEAgV2ViSW5zcGVj
dG9yLkRhdGFiYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnJlcHJl
c2VudGVkT2JqZWN0LmdldFRhYmxlTmFtZXModGFibGVOYW1lc0NhbGxiYWNrLmJpbmQodGhpcykp
OwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50LnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Zv
bGRlclRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRm9sZGVyVHJlZUVsZW1lbnQuanMKaW5kZXggOGNhZThiN2QwMDFjMzNkMTYzN2QyOWM3
ZGI3MDZiNTRiZmY2OGU4Mi4uMmEwODgzNWFkZjk0NjZhMGY0MTE3YWI0YTNiMzU2ZGI4ZWI1OGY1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Rm9sZGVyVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRm9sZGVyVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI5ICsyMywyNiBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Gb2xkZXJU
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKHRpdGxlLCBzdWJ0aXRsZSwgYWRkaXRpb25hbENsYXNzTmFt
ZXMsIHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50ID0g
Y2xhc3MgRm9sZGVyVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVF
bGVtZW50CiB7Ci0gICAgdmFyIGNsYXNzTmFtZXM7Ci0gICAgaWYgKCFhZGRpdGlvbmFsQ2xhc3NO
YW1lcykKLSAgICAgICAgY2xhc3NOYW1lcyA9IFtdOwotICAgIGVsc2UgaWYgKGFkZGl0aW9uYWxD
bGFzc05hbWVzLmNvbnN0cnVjdG9yID09PSBBcnJheSkKLSAgICAgICAgY2xhc3NOYW1lcyA9IGFk
ZGl0aW9uYWxDbGFzc05hbWVzOwotICAgIGVsc2UgaWYgKHR5cGVvZiBhZGRpdGlvbmFsQ2xhc3NO
YW1lcyA9PT0gInN0cmluZyIpCi0gICAgICAgIGNsYXNzTmFtZXMgPSBbYWRkaXRpb25hbENsYXNz
TmFtZXNdOworICAgIGNvbnN0cnVjdG9yKHRpdGxlLCBzdWJ0aXRsZSwgYWRkaXRpb25hbENsYXNz
TmFtZXMsIHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgdmFyIGNsYXNzTmFtZXM7
CisgICAgICAgIGlmICghYWRkaXRpb25hbENsYXNzTmFtZXMpCisgICAgICAgICAgICBjbGFzc05h
bWVzID0gW107CisgICAgICAgIGVsc2UgaWYgKGFkZGl0aW9uYWxDbGFzc05hbWVzLmNvbnN0cnVj
dG9yID09PSBBcnJheSkKKyAgICAgICAgICAgIGNsYXNzTmFtZXMgPSBhZGRpdGlvbmFsQ2xhc3NO
YW1lczsKKyAgICAgICAgZWxzZSBpZiAodHlwZW9mIGFkZGl0aW9uYWxDbGFzc05hbWVzID09PSAi
c3RyaW5nIikKKyAgICAgICAgICAgIGNsYXNzTmFtZXMgPSBbYWRkaXRpb25hbENsYXNzTmFtZXNd
OwogCi0gICAgY2xhc3NOYW1lcy51bnNoaWZ0KFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVu
dC5Gb2xkZXJJY29uU3R5bGVDbGFzc05hbWUpOworICAgICAgICBjbGFzc05hbWVzLnVuc2hpZnQo
V2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50LkZvbGRlckljb25TdHlsZUNsYXNzTmFtZSk7
CiAKLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgY2xhc3NO
YW1lcywgdGl0bGUsIHN1YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCwgdHJ1ZSk7CisgICAgICAg
IHN1cGVyKGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIHRy
dWUpOwogCi0gICAgdGhpcy5zbWFsbCA9IHRydWU7Ci19OwotCi1XZWJJbnNwZWN0b3IuRm9sZGVy
VHJlZUVsZW1lbnQuRm9sZGVySWNvblN0eWxlQ2xhc3NOYW1lID0gImZvbGRlci1pY29uIjsKLQot
V2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50CisgICAgICAgIHRoaXMuc21hbGwg
PSB0cnVlOworICAgIH0KIAogICAgIC8vIE5vIE1ldGhvZHMgb3IgUHJvcGVydGllcwogfTsKIAot
V2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Gb2xk
ZXJUcmVlRWxlbWVudC5Gb2xkZXJJY29uU3R5bGVDbGFzc05hbWUgPSAiZm9sZGVyLWljb24iOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRm9s
ZGVyaXplZFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRm9sZGVyaXplZFRyZWVFbGVtZW50LmpzCmluZGV4IDRmZjAxMDcyNWZmMTgxNjM5
YmM3Njc0ZGZhODc1OWZmMjU0N2JjMjIuLjFmOGM0Y2I1NWZiOWE5NjAwMmFmYzUyMjkxNmNiMDBm
MzE5YTMwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0ZvbGRlcml6ZWRUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb2xkZXJpemVkVHJlZUVsZW1lbnQuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDEgKzIz
LDM0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKGNsYXNzTmFtZXMsIHRpdGxl
LCBzdWJ0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKQorV2ViSW5zcGVjdG9y
LkZvbGRlcml6ZWRUcmVlRWxlbWVudCA9IGNsYXNzIEZvbGRlcml6ZWRUcmVlRWxlbWVudCBleHRl
bmRzIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
R2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxl
LCByZXByZXNlbnRlZE9iamVjdCwgaGFzQ2hpbGRyZW4pOwotCi0gICAgdGhpcy5zaG91bGRSZWZy
ZXNoQ2hpbGRyZW4gPSB0cnVlOwotCi0gICAgdGhpcy5fZm9sZGVyU2V0dGluZ3NLZXkgPSAiIjsK
LSAgICB0aGlzLl9mb2xkZXJUeXBlTWFwID0gbmV3IE1hcDsKLSAgICB0aGlzLl9mb2xkZXJpemVT
ZXR0aW5nc01hcCA9IG5ldyBNYXA7Ci0gICAgdGhpcy5fZ3JvdXBlZEludG9Gb2xkZXJzID0gZmFs
c2U7Ci0gICAgdGhpcy5fY2xlYXJOZXdDaGlsZFF1ZXVlKCk7Ci19OworICAgIGNvbnN0cnVjdG9y
KGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxk
cmVuKQorICAgIHsKKyAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCBy
ZXByZXNlbnRlZE9iamVjdCwgaGFzQ2hpbGRyZW4pOwogCi1XZWJJbnNwZWN0b3IuRm9sZGVyaXpl
ZFRyZWVFbGVtZW50Lk1lZGl1bUNoaWxkQ291bnRUaHJlc2hvbGQgPSA1OwotV2ViSW5zcGVjdG9y
LkZvbGRlcml6ZWRUcmVlRWxlbWVudC5MYXJnZUNoaWxkQ291bnRUaHJlc2hvbGQgPSAxNTsKLVdl
Ykluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQuTnVtYmVyT2ZNZWRpdW1DYXRlZ29yaWVz
VGhyZXNob2xkID0gMjsKLVdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQuTmV3Q2hp
bGRRdWV1ZVVwZGF0ZUludGVydmFsID0gNTAwOworICAgICAgICB0aGlzLnNob3VsZFJlZnJlc2hD
aGlsZHJlbiA9IHRydWU7CiAKLVdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVF
bGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5w
cm90b3R5cGUsCisgICAgICAgIHRoaXMuX2ZvbGRlclNldHRpbmdzS2V5ID0gIiI7CisgICAgICAg
IHRoaXMuX2ZvbGRlclR5cGVNYXAgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9mb2xkZXJpemVT
ZXR0aW5nc01hcCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX2dyb3VwZWRJbnRvRm9sZGVycyA9
IGZhbHNlOworICAgICAgICB0aGlzLl9jbGVhck5ld0NoaWxkUXVldWUoKTsKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAogICAgIGdldCBncm91cGVkSW50b0ZvbGRlcnMoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2dyb3VwZWRJbnRvRm9sZGVyczsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCBmb2xkZXJTZXR0aW5nc0tleSh4KQogICAgIHsKICAgICAgICAgdGhpcy5fZm9sZGVyU2V0
dGluZ3NLZXkgPSB4OwotICAgIH0sCisgICAgfQogCi0gICAgcmVnaXN0ZXJGb2xkZXJpemVTZXR0
aW5nczogZnVuY3Rpb24odHlwZSwgZm9sZGVyRGlzcGxheU5hbWUsIHZhbGlkYXRlUmVwcmVzZW50
ZWRPYmplY3RDYWxsYmFjaywgY291bnRDaGlsZHJlbkNhbGxiYWNrLCB0cmVlRWxlbWVudENvbnN0
cnVjdG9yKQorICAgIHJlZ2lzdGVyRm9sZGVyaXplU2V0dGluZ3ModHlwZSwgZm9sZGVyRGlzcGxh
eU5hbWUsIHZhbGlkYXRlUmVwcmVzZW50ZWRPYmplY3RDYWxsYmFjaywgY291bnRDaGlsZHJlbkNh
bGxiYWNrLCB0cmVlRWxlbWVudENvbnN0cnVjdG9yKQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQodHlwZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZvbGRlckRpc3BsYXlOYW1lKTsK
QEAgLTc0LDEzICs2NywxMyBAQCBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfTsKIAogICAgICAgICB0aGlzLl9mb2xkZXJpemVTZXR0aW5n
c01hcC5zZXQodHlwZSwgc2V0dGluZ3MpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gT3ZlcnJp
ZGVzIGZyb20gVHJlZUVsZW1lbnQgKFByaXZhdGUpLgogCi0gICAgcmVtb3ZlQ2hpbGRyZW46IGZ1
bmN0aW9uKCkKKyAgICByZW1vdmVDaGlsZHJlbigpCiAgICAgewotICAgICAgICBUcmVlRWxlbWVu
dC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4uY2FsbCh0aGlzKTsKKyAgICAgICAgc3VwZXIucmVt
b3ZlQ2hpbGRyZW4oKTsKIAogICAgICAgICB0aGlzLl9jbGVhck5ld0NoaWxkUXVldWUoKTsKIApA
QCAtOTAsMTEgKzgzLDExIEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9mb2xkZXJUeXBlTWFwLmNsZWFyKCk7CiAKICAgICAg
ICAgdGhpcy5fZ3JvdXBlZEludG9Gb2xkZXJzID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcm90ZWN0ZWQKIAotICAgIGFkZENoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0
aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIGFkZENoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3Qo
cmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAgICB2YXIgc2V0dGluZ3MgPSB0aGlzLl9z
ZXR0aW5nc0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoc2V0dGluZ3MpOwpAQCAtMTA4LDE4ICsxMDEsMTggQEAgV2ViSW5zcGVj
dG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjaGls
ZFRyZWVFbGVtZW50ID0gbmV3IHNldHRpbmdzLnRyZWVFbGVtZW50Q29uc3RydWN0b3IocmVwcmVz
ZW50ZWRPYmplY3QpOwogCiAgICAgICAgIHRoaXMuX2FkZFRyZWVFbGVtZW50KGNoaWxkVHJlZUVs
ZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkUmVwcmVzZW50ZWRPYmplY3RUb05ld0No
aWxkUXVldWU6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIGFkZFJlcHJlc2VudGVk
T2JqZWN0VG9OZXdDaGlsZFF1ZXVlKHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAg
Ly8gVGhpcyBxdWV1ZSByZWR1Y2VzIGZsYXNoaW5nIGFzIHJlc291cmNlcyBsb2FkIGFuZCBjaGFu
Z2UgZm9sZGVycyB3aGVuIHRoZWlyIHR5cGUgYmVjb21lcyBrbm93bi4KIAogICAgICAgICB0aGlz
Ll9uZXdDaGlsZFF1ZXVlLnB1c2gocmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAgICBpZiAoIXRo
aXMuX25ld0NoaWxkUXVldWVUaW1lb3V0SWRlbnRpZmllcikKICAgICAgICAgICAgIHRoaXMuX25l
d0NoaWxkUXVldWVUaW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQodGhpcy5fcG9wdWxhdGVG
cm9tTmV3Q2hpbGRRdWV1ZS5iaW5kKHRoaXMpLCBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVF
bGVtZW50Lk5ld0NoaWxkUXVldWVVcGRhdGVJbnRlcnZhbCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICByZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9i
amVjdCkKKyAgICByZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2Jq
ZWN0KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVtb3ZlUmVwcmVzZW50ZWRPYmplY3RGcm9tTmV3
Q2hpbGRRdWV1ZShyZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIHRoaXMudXBkYXRlUGFyZW50
U3RhdHVzKCk7CkBAIC0xMzcsMTQgKzEzMCwxNCBAQCBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0
aGlzLl9yZW1vdmVUcmVlRWxlbWVudChjaGlsZFRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0K
IAotICAgIGNvbXBhcmVDaGlsZFRyZWVFbGVtZW50czogZnVuY3Rpb24oYSwgYikKKyAgICBjb21w
YXJlQ2hpbGRUcmVlRWxlbWVudHMoYSwgYikKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9j
b21wYXJlVHJlZUVsZW1lbnRzQnlNYWluVGl0bGUoYSwgYik7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICB1cGRhdGVQYXJlbnRTdGF0dXM6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVQYXJlbnRTdGF0dXMo
KQogICAgIHsKICAgICAgICAgdmFyIGhhc0NoaWxkcmVuID0gZmFsc2U7CiAgICAgICAgIGZvciAo
dmFyIHNldHRpbmdzIG9mIHRoaXMuX2ZvbGRlcml6ZVNldHRpbmdzTWFwLnZhbHVlcygpKSB7CkBA
IC0xNTcsMjYgKzE1MCwyNiBAQCBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IGhhc0NoaWxkcmVuOwogICAg
ICAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4pCiAgICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxk
cmVuKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwcmVwYXJlVG9Qb3B1bGF0ZTogZnVuY3Rpb24o
KQorICAgIHByZXBhcmVUb1BvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZ3Jv
dXBlZEludG9Gb2xkZXJzICYmIHRoaXMuX3Nob3VsZEdyb3VwSW50b0ZvbGRlcnMoKSkKICAgICAg
ICAgICAgIHRoaXMuX2dyb3VwZWRJbnRvRm9sZGVycyA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcml2YXRlCiAKLSAgICBfY2xlYXJOZXdDaGlsZFF1ZXVlOiBmdW5jdGlvbigpCisg
ICAgX2NsZWFyTmV3Q2hpbGRRdWV1ZSgpCiAgICAgewogICAgICAgICB0aGlzLl9uZXdDaGlsZFF1
ZXVlID0gW107CiAgICAgICAgIGlmICh0aGlzLl9uZXdDaGlsZFF1ZXVlVGltZW91dElkZW50aWZp
ZXIpIHsKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9uZXdDaGlsZFF1ZXVlVGltZW91
dElkZW50aWZpZXIpOwogICAgICAgICAgICAgdGhpcy5fbmV3Q2hpbGRRdWV1ZVRpbWVvdXRJZGVu
dGlmaWVyID0gbnVsbDsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3BvcHVsYXRl
RnJvbU5ld0NoaWxkUXVldWU6IGZ1bmN0aW9uKCkKKyAgICBfcG9wdWxhdGVGcm9tTmV3Q2hpbGRR
dWV1ZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuY2hpbGRyZW4ubGVuZ3RoKSB7CiAgICAg
ICAgICAgICB0aGlzLnVwZGF0ZVBhcmVudFN0YXR1cygpOwpAQCAtMTkwLDE0ICsxODMsMTQgQEAg
V2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLmFkZENoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3QodGhpcy5fbmV3Q2hpbGRRdWV1
ZVtpXSk7CiAKICAgICAgICAgdGhpcy5fY2xlYXJOZXdDaGlsZFF1ZXVlKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfcmVtb3ZlUmVwcmVzZW50ZWRPYmplY3RGcm9tTmV3Q2hpbGRRdWV1ZTogZnVu
Y3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgX3JlbW92ZVJlcHJlc2VudGVkT2JqZWN0RnJv
bU5ld0NoaWxkUXVldWUocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAgICB0aGlzLl9u
ZXdDaGlsZFF1ZXVlLnJlbW92ZShyZXByZXNlbnRlZE9iamVjdCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfYWRkVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKGNoaWxkVHJlZUVsZW1lbnQpCisgICAgX2Fk
ZFRyZWVFbGVtZW50KGNoaWxkVHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChjaGlsZFRyZWVFbGVtZW50KTsKICAgICAgICAgaWYgKCFjaGlsZFRyZWVFbGVtZW50KQpA
QCAtMjE1LDI3ICsyMDgsMjcgQEAgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHdhc1NlbGVjdGVkKQogICAgICAgICAgICAgY2hp
bGRUcmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QodHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2NvbXBhcmVUcmVlRWxlbWVudHNCeU1haW5UaXRsZTogZnVu
Y3Rpb24oYSwgYikKKyAgICBfY29tcGFyZVRyZWVFbGVtZW50c0J5TWFpblRpdGxlKGEsIGIpCiAg
ICAgewogICAgICAgICByZXR1cm4gYS5tYWluVGl0bGUubG9jYWxlQ29tcGFyZShiLm1haW5UaXRs
ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaW5zZXJ0Rm9sZGVyVHJlZUVsZW1lbnQ6IGZ1bmN0
aW9uKGZvbGRlclRyZWVFbGVtZW50KQorICAgIF9pbnNlcnRGb2xkZXJUcmVlRWxlbWVudChmb2xk
ZXJUcmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2dyb3Vw
ZWRJbnRvRm9sZGVycyk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFmb2xkZXJUcmVlRWxlbWVu
dC5wYXJlbnQpOwogICAgICAgICB0aGlzLmluc2VydENoaWxkKGZvbGRlclRyZWVFbGVtZW50LCBp
bnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oZm9sZGVyVHJlZUVs
ZW1lbnQsIHRoaXMuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVUcmVlRWxlbWVudHNCeU1haW5UaXRs
ZSkpOwotICAgIH0sCisgICAgfQogCi0gICAgX2luc2VydENoaWxkVHJlZUVsZW1lbnQ6IGZ1bmN0
aW9uKHBhcmVudFRyZWVFbGVtZW50LCBjaGlsZFRyZWVFbGVtZW50KQorICAgIF9pbnNlcnRDaGls
ZFRyZWVFbGVtZW50KHBhcmVudFRyZWVFbGVtZW50LCBjaGlsZFRyZWVFbGVtZW50KQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoIWNoaWxkVHJlZUVsZW1lbnQucGFyZW50KTsKICAgICAg
ICAgcGFyZW50VHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQoY2hpbGRUcmVlRWxlbWVudCwgaW5zZXJ0
aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGNoaWxkVHJlZUVsZW1lbnQs
IHBhcmVudFRyZWVFbGVtZW50LmNoaWxkcmVuLCB0aGlzLmNvbXBhcmVDaGlsZFRyZWVFbGVtZW50
cy5iaW5kKHRoaXMpKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVtb3ZlVHJlZUVsZW1lbnQ6
IGZ1bmN0aW9uKGNoaWxkVHJlZUVsZW1lbnQsIHN1cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NT
ZWxlY3RTaWJsaW5nKQorICAgIF9yZW1vdmVUcmVlRWxlbWVudChjaGlsZFRyZWVFbGVtZW50LCBz
dXBwcmVzc09uRGVzZWxlY3QsIHN1cHByZXNzU2VsZWN0U2libGluZykKICAgICB7CiAgICAgICAg
IHZhciBvbGRQYXJlbnQgPSBjaGlsZFRyZWVFbGVtZW50LnBhcmVudDsKICAgICAgICAgaWYgKCFv
bGRQYXJlbnQpCkBAIC0yNTMsOSArMjQ2LDkgQEAgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFJlbW92ZSB0aGUgb2xkIHBhcmVudCBm
b2xkZXIgaWYgaXQgaXMgbm93IGVtcHR5LgogICAgICAgICBpZiAoIW9sZFBhcmVudC5jaGlsZHJl
bi5sZW5ndGgpCiAgICAgICAgICAgICBvbGRQYXJlbnQucGFyZW50LnJlbW92ZUNoaWxkKG9sZFBh
cmVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGFyZW50VHJlZUVsZW1lbnRGb3JSZXByZXNl
bnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgX3BhcmVudFRyZWVF
bGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX2dyb3VwZWRJbnRvRm9sZGVycykKICAgICAgICAgICAgIHJldHVybiB0
aGlzOwpAQCAtMjg2LDI0ICsyNzksMjQgQEAgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvbGRlciA9IGNyZWF0ZUZvbGRlclRyZWVFbGVt
ZW50LmNhbGwodGhpcywgc2V0dGluZ3MudHlwZSwgc2V0dGluZ3MuZm9sZGVyRGlzcGxheU5hbWUp
OwogICAgICAgICB0aGlzLl9mb2xkZXJUeXBlTWFwLnNldChzZXR0aW5ncy50eXBlLCBmb2xkZXIp
OwogICAgICAgICByZXR1cm4gZm9sZGVyOwotICAgIH0sCisgICAgfQogCi0gICAgX2ZvbGRlclRy
ZWVFbGVtZW50RXhwYW5kZWRTdGF0ZUNoYW5nZTogZnVuY3Rpb24oZm9sZGVyVHJlZUVsZW1lbnQp
CisgICAgX2ZvbGRlclRyZWVFbGVtZW50RXhwYW5kZWRTdGF0ZUNoYW5nZShmb2xkZXJUcmVlRWxl
bWVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZvbGRlclRyZWVFbGVtZW50Ll9f
ZXhwYW5kZWRTZXR0aW5nKTsKICAgICAgICAgZm9sZGVyVHJlZUVsZW1lbnQuX19leHBhbmRlZFNl
dHRpbmcudmFsdWUgPSBmb2xkZXJUcmVlRWxlbWVudC5leHBhbmRlZDsKLSAgICB9LAorICAgIH0K
IAotICAgIF9zZXR0aW5nc0ZvclJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRl
ZE9iamVjdCkKKyAgICBfc2V0dGluZ3NGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9i
amVjdCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIHNldHRpbmdzIG9mIHRoaXMuX2ZvbGRlcml6
ZVNldHRpbmdzTWFwLnZhbHVlcygpKSB7CiAgICAgICAgICAgICBpZiAoc2V0dGluZ3MudmFsaWRh
dGVSZXByZXNlbnRlZE9iamVjdENhbGxiYWNrKHJlcHJlc2VudGVkT2JqZWN0KSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gc2V0dGluZ3M7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG51bGw7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvdWxkR3JvdXBJbnRvRm9sZGVyczogZnVuY3Rpb24o
KQorICAgIF9zaG91bGRHcm91cEludG9Gb2xkZXJzKCkKICAgICB7CiAgICAgICAgIC8vIEFscmVh
ZHkgZ3JvdXBlZCBpbnRvIGZvbGRlcnMsIGtlZXAgaXQgdGhhdCB3YXkuCiAgICAgICAgIGlmICh0
aGlzLl9ncm91cGVkSW50b0ZvbGRlcnMpCkBAIC0zNTgsMyArMzUxLDggQEAgV2ViSW5zcGVjdG9y
LkZvbGRlcml6ZWRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50Lk1lZGl1
bUNoaWxkQ291bnRUaHJlc2hvbGQgPSA1OworV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxl
bWVudC5MYXJnZUNoaWxkQ291bnRUaHJlc2hvbGQgPSAxNTsKK1dlYkluc3BlY3Rvci5Gb2xkZXJp
emVkVHJlZUVsZW1lbnQuTnVtYmVyT2ZNZWRpdW1DYXRlZ29yaWVzVGhyZXNob2xkID0gMjsKK1dl
Ykluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQuTmV3Q2hpbGRRdWV1ZVVwZGF0ZUludGVy
dmFsID0gNTAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMKaW5kZXggNmI5OTkzNzIzYzNlNGMw
YTgzYjI2OWY4ODc0NTA4ZjU1YzExZmUwNS4uYWUyYmE3OTc2OGQzYWI4YTNlN2NiYWFiZjg5ZWEx
ZTBmMzI3NzU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMDEgKzIzLDk5IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
LkZyYW1lVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihmcmFtZSwgcmVwcmVzZW50ZWRPYmplY3QpCitX
ZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudCA9IGNsYXNzIEZyYW1lVHJlZUVsZW1lbnQgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNz
ZXJ0KGZyYW1lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKTsKKyAgICBjb25zdHJ1Y3Rv
cihmcmFtZSwgcmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2Vy
dChmcmFtZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSk7CiAKLSAgICBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIGZyYW1lLm1haW5SZXNvdXJjZSwgcmVw
cmVzZW50ZWRPYmplY3QgfHwgZnJhbWUpOworICAgICAgICBzdXBlcihmcmFtZS5tYWluUmVzb3Vy
Y2UsIHJlcHJlc2VudGVkT2JqZWN0IHx8IGZyYW1lKTsKIAotICAgIHRoaXMuX2ZyYW1lID0gZnJh
bWU7CisgICAgICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7CiAKLSAgICB0aGlzLl91cGRhdGVFeHBh
bmRlZFNldHRpbmcoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlRXhwYW5kZWRTZXR0aW5nKCk7CiAK
LSAgICBmcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWlu
UmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7Ci0g
ICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3Vy
Y2VXYXNBZGRlZCwgdGhpcy5fcmVzb3VyY2VXYXNBZGRlZCwgdGhpcyk7Ci0gICAgZnJhbWUuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNSZW1vdmVk
LCB0aGlzLl9yZXNvdXJjZVdhc1JlbW92ZWQsIHRoaXMpOwotICAgIGZyYW1lLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNBZGRlZCwgdGhpcy5f
Y2hpbGRGcmFtZVdhc0FkZGVkLCB0aGlzKTsKLSAgICBmcmFtZS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhpcy5fY2hpbGRG
cmFtZVdhc1JlbW92ZWQsIHRoaXMpOworICAgICAgICBmcmFtZS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5S
ZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIGZyYW1lLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzQWRkZWQsIHRoaXMuX3Jlc291cmNl
V2FzQWRkZWQsIHRoaXMpOworICAgICAgICBmcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc1JlbW92ZWQsIHRoaXMuX3Jlc291cmNlV2FzUmVt
b3ZlZCwgdGhpcyk7CisgICAgICAgIGZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNBZGRlZCwgdGhpcy5fY2hpbGRGcmFtZVdhc0FkZGVk
LCB0aGlzKTsKKyAgICAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJh
bWUuRXZlbnQuQ2hpbGRGcmFtZVdhc1JlbW92ZWQsIHRoaXMuX2NoaWxkRnJhbWVXYXNSZW1vdmVk
LCB0aGlzKTsKIAotICAgIGZyYW1lLmRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc0FkZGVkLCB0aGlzLl9jaGlsZENvbnRlbnRG
bG93V2FzQWRkZWQsIHRoaXMpOwotICAgIGZyYW1lLmRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc1JlbW92ZWQsIHRoaXMuX2No
aWxkQ29udGVudEZsb3dXYXNSZW1vdmVkLCB0aGlzKTsKLSAgICBmcmFtZS5kb21UcmVlLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuUm9vdERPTU5vZGVJbnZhbGlk
YXRlZCwgdGhpcy5fcm9vdERPTU5vZGVJbnZhbGlkYXRlZCwgdGhpcyk7CisgICAgICAgIGZyYW1l
LmRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Db250
ZW50Rmxvd1dhc0FkZGVkLCB0aGlzLl9jaGlsZENvbnRlbnRGbG93V2FzQWRkZWQsIHRoaXMpOwor
ICAgICAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRy
ZWUuRXZlbnQuQ29udGVudEZsb3dXYXNSZW1vdmVkLCB0aGlzLl9jaGlsZENvbnRlbnRGbG93V2Fz
UmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIGZyYW1lLmRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Sb290RE9NTm9kZUludmFsaWRhdGVkLCB0aGlzLl9y
b290RE9NTm9kZUludmFsaWRhdGVkLCB0aGlzKTsKIAotICAgIGlmICh0aGlzLl9mcmFtZS5pc01h
aW5GcmFtZSgpKQotICAgICAgICB0aGlzLl9kb3dubG9hZGluZ1BhZ2UgPSBmYWxzZTsKKyAgICAg
ICAgaWYgKHRoaXMuX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCisgICAgICAgICAgICB0aGlzLl9kb3du
bG9hZGluZ1BhZ2UgPSBmYWxzZTsKIAotICAgIHRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuID0g
dHJ1ZTsKLSAgICB0aGlzLmZvbGRlclNldHRpbmdzS2V5ID0gdGhpcy5fZnJhbWUudXJsLmhhc2g7
Ci0KLSAgICB0aGlzLnJlZ2lzdGVyRm9sZGVyaXplU2V0dGluZ3MoImZyYW1lcyIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRnJhbWVzIiksCi0gICAgICAgIGZ1bmN0aW9uKHJlcHJlc2VudGVkT2Jq
ZWN0KSB7IHJldHVybiByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5G
cmFtZTsgfSwKLSAgICAgICAgZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLmZyYW1lLmNoaWxkRnJh
bWVzLmxlbmd0aDsgfS5iaW5kKHRoaXMpLAotICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWVUcmVl
RWxlbWVudAotICAgICk7Ci0KLSAgICB0aGlzLnJlZ2lzdGVyRm9sZGVyaXplU2V0dGluZ3MoImZs
b3dzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGbG93cyIpLAotICAgICAgICBmdW5jdGlvbihy
ZXByZXNlbnRlZE9iamVjdCkgeyByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuQ29udGVudEZsb3c7IH0sCi0gICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4g
dGhpcy5mcmFtZS5kb21UcmVlLmZsb3dzQ291bnQ7IH0uYmluZCh0aGlzKSwKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQKLSAgICApOwotCi0gICAgZnVuY3Rpb24g
bWFrZVZhbGlkYXRlQ2FsbGJhY2socmVzb3VyY2VUeXBlKSB7Ci0gICAgICAgIHJldHVybiBmdW5j
dGlvbihyZXByZXNlbnRlZE9iamVjdCkgewotICAgICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlICYmIHJlcHJlc2VudGVkT2Jq
ZWN0LnR5cGUgPT09IHJlc291cmNlVHlwZTsKLSAgICAgICAgfTsKLSAgICB9CisgICAgICAgIHRo
aXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5mb2xkZXJTZXR0
aW5nc0tleSA9IHRoaXMuX2ZyYW1lLnVybC5oYXNoOwogCi0gICAgZnVuY3Rpb24gbWFrZUNoaWxk
Q291bnRDYWxsYmFjayhmcmFtZSwgcmVzb3VyY2VUeXBlKSB7Ci0gICAgICAgIHJldHVybiBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5yZXNvdXJjZXNXaXRoVHlwZShyZXNv
dXJjZVR5cGUpLmxlbmd0aDsKLSAgICAgICAgfTsKLSAgICB9CisgICAgICAgIHRoaXMucmVnaXN0
ZXJGb2xkZXJpemVTZXR0aW5ncygiZnJhbWVzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGcmFt
ZXMiKSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KSB7IHJldHVybiBy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZTsgfSwKKyAgICAg
ICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGg7
IH0uYmluZCh0aGlzKSwKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50
CisgICAgICAgICk7CiAKLSAgICBmb3IgKHZhciBrZXkgaW4gV2ViSW5zcGVjdG9yLlJlc291cmNl
LlR5cGUpIHsKLSAgICAgICAgdmFyIHZhbHVlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGVb
a2V5XTsKLSAgICAgICAgdmFyIGZvbGRlck5hbWUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuZGlz
cGxheU5hbWVGb3JUeXBlKHZhbHVlLCB0cnVlKTsKLSAgICAgICAgdGhpcy5yZWdpc3RlckZvbGRl
cml6ZVNldHRpbmdzKGtleSwgZm9sZGVyTmFtZSwKLSAgICAgICAgICAgIG1ha2VWYWxpZGF0ZUNh
bGxiYWNrKHZhbHVlKSwKLSAgICAgICAgICAgIG1ha2VDaGlsZENvdW50Q2FsbGJhY2sodGhpcy5m
cmFtZSwgdmFsdWUpLAotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1l
bnQKKyAgICAgICAgdGhpcy5yZWdpc3RlckZvbGRlcml6ZVNldHRpbmdzKCJmbG93cyIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRmxvd3MiKSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKHJlcHJlc2Vu
dGVkT2JqZWN0KSB7IHJldHVybiByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5Db250ZW50RmxvdzsgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhp
cy5mcmFtZS5kb21UcmVlLmZsb3dzQ291bnQ7IH0uYmluZCh0aGlzKSwKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50CiAgICAgICAgICk7Ci0gICAgfQogCi0g
ICAgdGhpcy51cGRhdGVQYXJlbnRTdGF0dXMoKTsKLX07CisgICAgICAgIGZ1bmN0aW9uIG1ha2VW
YWxpZGF0ZUNhbGxiYWNrKHJlc291cmNlVHlwZSkgeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uKHJlcHJlc2VudGVkT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlICYmIHJlcHJlc2VudGVk
T2JqZWN0LnR5cGUgPT09IHJlc291cmNlVHlwZTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0K
IAotV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgZnVuY3Rp
b24gbWFrZUNoaWxkQ291bnRDYWxsYmFjayhmcmFtZSwgcmVzb3VyY2VUeXBlKSB7CisgICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lLnJl
c291cmNlc1dpdGhUeXBlKHJlc291cmNlVHlwZSkubGVuZ3RoOworICAgICAgICAgICAgfTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGtleSBpbiBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
VHlwZSkgeworICAgICAgICAgICAgdmFyIHZhbHVlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5
cGVba2V5XTsKKyAgICAgICAgICAgIHZhciBmb2xkZXJOYW1lID0gV2ViSW5zcGVjdG9yLlJlc291
cmNlLmRpc3BsYXlOYW1lRm9yVHlwZSh2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICB0aGlzLnJl
Z2lzdGVyRm9sZGVyaXplU2V0dGluZ3Moa2V5LCBmb2xkZXJOYW1lLAorICAgICAgICAgICAgICAg
IG1ha2VWYWxpZGF0ZUNhbGxiYWNrKHZhbHVlKSwKKyAgICAgICAgICAgICAgICBtYWtlQ2hpbGRD
b3VudENhbGxiYWNrKHRoaXMuZnJhbWUsIHZhbHVlKSwKKyAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudAorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHRoaXMudXBkYXRlUGFyZW50U3RhdHVzKCk7CisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgZnJhbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZyYW1lOwot
ICAgIH0sCisgICAgfQogCi0gICAgZGVzY2VuZGFudFJlc291cmNlVHJlZUVsZW1lbnRUeXBlRGlk
Q2hhbmdlOiBmdW5jdGlvbihyZXNvdXJjZVRyZWVFbGVtZW50LCBvbGRUeXBlKQorICAgIGRlc2Nl
bmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50VHlwZURpZENoYW5nZShyZXNvdXJjZVRyZWVFbGVtZW50
LCBvbGRUeXBlKQogICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGJ5IGRlc2NlbmRhbnQgUmVzb3Vy
Y2VUcmVlRWxlbWVudHMuCiAKICAgICAgICAgLy8gQWRkIHRoZSB0cmVlIGVsZW1lbnQgYWdhaW4s
IHdoaWNoIHdpbGwgbW92ZSBpdCB0byB0aGUgbmV3IGxvY2F0aW9uCiAgICAgICAgIC8vIGJhc2Vk
IG9uIHNvcnRpbmcgYW5kIHBvc3NpYmxlIGZvbGRlciBjaGFuZ2VzLgogICAgICAgICB0aGlzLl9h
ZGRUcmVlRWxlbWVudChyZXNvdXJjZVRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAg
IGRlc2NlbmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50TWFpblRpdGxlRGlkQ2hhbmdlOiBmdW5jdGlv
bihyZXNvdXJjZVRyZWVFbGVtZW50LCBvbGRNYWluVGl0bGUpCisgICAgZGVzY2VuZGFudFJlc291
cmNlVHJlZUVsZW1lbnRNYWluVGl0bGVEaWRDaGFuZ2UocmVzb3VyY2VUcmVlRWxlbWVudCwgb2xk
TWFpblRpdGxlKQogICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGJ5IGRlc2NlbmRhbnQgUmVzb3Vy
Y2VUcmVlRWxlbWVudHMuCiAKICAgICAgICAgLy8gQWRkIHRoZSB0cmVlIGVsZW1lbnQgYWdhaW4s
IHdoaWNoIHdpbGwgbW92ZSBpdCB0byB0aGUgbmV3IGxvY2F0aW9uCiAgICAgICAgIC8vIGJhc2Vk
IG9uIHNvcnRpbmcgYW5kIHBvc3NpYmxlIGZvbGRlciBjaGFuZ2VzLgogICAgICAgICB0aGlzLl9h
ZGRUcmVlRWxlbWVudChyZXNvdXJjZVRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAogICAg
IC8vIE92ZXJyaWRlcyBmcm9tIFNvdXJjZUNvZGVUcmVlRWxlbWVudC4KIAotICAgIHVwZGF0ZVNv
dXJjZU1hcFJlc291cmNlczogZnVuY3Rpb24oKQorICAgIHVwZGF0ZVNvdXJjZU1hcFJlc291cmNl
cygpCiAgICAgewogICAgICAgICAvLyBGcmFtZXMgaGFuZGxlIHRoZWlyIG93biBTb3VyY2VNYXBS
ZXNvdXJjZXMuCiAKQEAgLTEzMSw5ICsxMjksOSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMucmVzb3VyY2UgJiYgdGhpcy5y
ZXNvdXJjZS5zb3VyY2VNYXBzLmxlbmd0aCkKICAgICAgICAgICAgIHRoaXMuc2hvdWxkUmVmcmVz
aENoaWxkcmVuID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uYXR0YWNoOiBmdW5jdGlv
bigpCisgICAgb25hdHRhY2goKQogICAgIHsKICAgICAgICAgLy8gSW1tZWRpYXRlIHN1cGVyY2xh
c3NlcyBhcmUgc2tpcHBlZCwgc2luY2UgRnJhbWVzIGhhbmRsZSB0aGVpciBvd24gU291cmNlTWFw
UmVzb3VyY2VzLgogICAgICAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3Rv
dHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOwpAQCAtMTQyLDkgKzE0MCw5IEBAIFdlYkluc3BlY3Rv
ci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5ub3RpZmljYXRpb25zLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5vdGlmaWNhdGlv
bi5QYWdlQXJjaGl2ZVN0YXJ0ZWQsIHRoaXMuX3BhZ2VBcmNoaXZlU3RhcnRlZCwgdGhpcyk7CiAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3Iubm90aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5Ob3RpZmljYXRpb24uUGFnZUFyY2hpdmVFbmRlZCwgdGhpcy5fcGFnZUFyY2hp
dmVFbmRlZCwgdGhpcyk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIG9uZGV0YWNo
OiBmdW5jdGlvbigpCisgICAgb25kZXRhY2goKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZGV0YWNoLmNhbGwodGhpcyk7CiAKQEAg
LTE1MiwxMSArMTUwLDExIEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5ub3RpZmljYXRpb25zLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5vdGlmaWNhdGlvbi5QYWdlQXJjaGl2ZVN0YXJ0ZWQsIHRo
aXMuX3BhZ2VBcmNoaXZlU3RhcnRlZCwgdGhpcyk7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
bm90aWZpY2F0aW9ucy5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ob3RpZmljYXRp
b24uUGFnZUFyY2hpdmVFbmRlZCwgdGhpcy5fcGFnZUFyY2hpdmVFbmRlZCwgdGhpcyk7CiAgICAg
ICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8vIE92ZXJyaWRlcyBmcm9tIEZvbGRlcml6ZWRU
cmVlRWxlbWVudCAoUHJvdGVjdGVkKS4KIAotICAgIGNvbXBhcmVDaGlsZFRyZWVFbGVtZW50czog
ZnVuY3Rpb24oYSwgYikKKyAgICBjb21wYXJlQ2hpbGRUcmVlRWxlbWVudHMoYSwgYikKICAgICB7
CiAgICAgICAgIGlmIChhID09PSBiKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNjksMTcg
KzE2NywxNyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgaWYgKCFhSXNSZXNvdXJjZSAmJiAhYklzUmVzb3VyY2UpIHsKICAgICAgICAgICAg
IC8vIFdoZW4gYm90aCBjb21wb25lbnRzIGFyZSBub3QgcmVzb3VyY2VzIHRoZW4gZGVmYXVsdCB0
byBiYXNlIGNsYXNzIGNvbXBhcmlzb24uCi0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlLmNvbXBhcmVDaGlsZFRyZWVFbGVtZW50cy5j
YWxsKHRoaXMsIGEsIGIpOworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmNvbXBhcmVDaGlsZFRy
ZWVFbGVtZW50cyhhLCBiKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vbi1yZXNvdXJjZXMg
c2hvdWxkIGFwcGVhciBiZWZvcmUgdGhlIHJlc291cmNlcy4KICAgICAgICAgLy8gRklYTUU6IFRo
ZXJlIHNob3VsZCBiZSBhIGJldHRlciB3YXkgdG8gZ3JvdXAgdGhlIGVsZW1lbnRzIGJ5IHRoZWly
IHR5cGUuCiAgICAgICAgIHJldHVybiBhSXNSZXNvdXJjZSA/IDEgOiAtMTsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIENhbGxlZCBmcm9tIFJlc291cmNlVHJlZUVsZW1lbnQuCiAKLSAgICB1cGRh
dGVTdGF0dXNGb3JNYWluRnJhbWU6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVTdGF0dXNGb3JNYWlu
RnJhbWUoKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gbG9hZGVkSW1hZ2VzKCkKICAgICAgICAg
ewpAQCAtMjIxLDExICsyMTksMTEgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogICAgICAgICAgICAgICAgIGxvYWRlZEltYWdlcy5jYWxsKHRoaXMpOwogICAg
ICAgICAgICAgfS5iaW5kKHRoaXMpKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAg
Ly8gT3ZlcnJpZGVzIGZyb20gVHJlZUVsZW1lbnQgKFByaXZhdGUpLgogCi0gICAgb25wb3B1bGF0
ZTogZnVuY3Rpb24oKQorICAgIG9ucG9wdWxhdGUoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMu
Y2hpbGRyZW4ubGVuZ3RoICYmICF0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbikKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTI1MiwzNCArMjUwLDM0IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgZm9yICh2YXIgZmxvd0tleSBpbiBmbG93TWFw
KQogICAgICAgICAgICAgdGhpcy5hZGRDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KGZsb3dNYXBb
Zmxvd0tleV0pOwogCi0gICAgfSwKKyAgICB9CiAKLSAgICBvbmV4cGFuZDogZnVuY3Rpb24oKQor
ICAgIG9uZXhwYW5kKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2V4cGFuZGVkU2V0dGluZy52YWx1
ZSA9IHRydWU7CiAgICAgICAgIHRoaXMuX2ZyYW1lLmRvbVRyZWUucmVxdWVzdENvbnRlbnRGbG93
TGlzdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgb25jb2xsYXBzZTogZnVuY3Rpb24oKQorICAg
IG9uY29sbGFwc2UoKQogICAgIHsKICAgICAgICAgLy8gT25seSBzdG9yZSB0aGUgc2V0dGluZyBp
ZiB3ZSBoYXZlIGNoaWxkcmVuLCBzaW5jZSBzZXR0aW5nIGhhc0NoaWxkcmVuIHRvIGZhbHNlIHdp
bGwgY2F1c2UgYSBjb2xsYXBzZSwKICAgICAgICAgLy8gYW5kIHdlIG9ubHkgY2FyZSBhYm91dCB1
c2VyIHRyaWdnZXJlZCBjb2xsYXBzZXMuCiAgICAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuKQog
ICAgICAgICAgICAgdGhpcy5fZXhwYW5kZWRTZXR0aW5nLnZhbHVlID0gZmFsc2U7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBkYXRlRXhwYW5kZWRTZXR0aW5nOiBm
dW5jdGlvbigpCisgICAgX3VwZGF0ZUV4cGFuZGVkU2V0dGluZygpCiAgICAgewogICAgICAgICB0
aGlzLl9leHBhbmRlZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImZyYW1lLWV4
cGFuZGVkLSIgKyB0aGlzLl9mcmFtZS51cmwuaGFzaCwgdGhpcy5fZnJhbWUuaXNNYWluRnJhbWUo
KSA/IHRydWUgOiBmYWxzZSk7CiAgICAgICAgIGlmICh0aGlzLl9leHBhbmRlZFNldHRpbmcudmFs
dWUpCiAgICAgICAgICAgICB0aGlzLmV4cGFuZCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICB0aGlzLmNvbGxhcHNlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWFpblJlc291cmNlRGlk
Q2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50
KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2UodGhpcy5fZnJhbWUubWFpblJl
c291cmNlKTsKIApAQCAtMjk0LDU2ICsyOTIsNTYgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdXBkYXRlRG93bmxvYWRCdXR0
b24oKTsKIAogICAgICAgICB0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfcmVzb3VyY2VXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X3Jlc291cmNlV2FzQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmFkZFJlcHJlc2Vu
dGVkT2JqZWN0VG9OZXdDaGlsZFF1ZXVlKGV2ZW50LmRhdGEucmVzb3VyY2UpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3Jlc291cmNlV2FzUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jl
c291cmNlV2FzUmVtb3ZlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRG
b3JSZXByZXNlbnRlZE9iamVjdChldmVudC5kYXRhLnJlc291cmNlKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9jaGlsZEZyYW1lV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jaGlsZEZy
YW1lV2FzQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmFkZFJlcHJlc2VudGVkT2Jq
ZWN0VG9OZXdDaGlsZFF1ZXVlKGV2ZW50LmRhdGEuY2hpbGRGcmFtZSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfY2hpbGRGcmFtZVdhc1JlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jaGls
ZEZyYW1lV2FzUmVtb3ZlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRG
b3JSZXByZXNlbnRlZE9iamVjdChldmVudC5kYXRhLmNoaWxkRnJhbWUpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2NoaWxkQ29udGVudEZsb3dXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2NoaWxkQ29udGVudEZsb3dXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuYWRk
UmVwcmVzZW50ZWRPYmplY3RUb05ld0NoaWxkUXVldWUoZXZlbnQuZGF0YS5mbG93KTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9jaGlsZENvbnRlbnRGbG93V2FzUmVtb3ZlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2NoaWxkQ29udGVudEZsb3dXYXNSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdGhpcy5yZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KGV2ZW50LmRhdGEuZmxvdyk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcm9vdERPTU5vZGVJbnZhbGlkYXRlZDogZnVuY3Rpb24o
KQorICAgIF9yb290RE9NTm9kZUludmFsaWRhdGVkKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
LmV4cGFuZGVkKQogICAgICAgICAgICAgdGhpcy5fZnJhbWUuZG9tVHJlZS5yZXF1ZXN0Q29udGVu
dEZsb3dMaXN0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVsb2FkUGFnZUNsaWNrZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9yZWxvYWRQYWdlQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAg
ICAgIC8vIElnbm9yZSBjYWNoZSB3aGVuIHRoZSBzaGlmdCBrZXkgaXMgcHJlc3NlZC4KICAgICAg
ICAgUGFnZUFnZW50LnJlbG9hZChldmVudC5kYXRhLnNoaWZ0S2V5KTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9kb3dubG9hZEJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kb3du
bG9hZEJ1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuYXJj
aGl2ZU1haW5GcmFtZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZURvd25sb2FkQnV0
dG9uOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZURvd25sb2FkQnV0dG9uKCkKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2ZyYW1lLmlzTWFpbkZyYW1lKCkpOwogICAgICAgICBp
ZiAoIXRoaXMuX2Rvd25sb2FkQnV0dG9uKQpAQCAtMzYwLDE1ICszNTgsMTUgQEAgV2ViSW5zcGVj
dG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
dGhpcy5fZG93bmxvYWRCdXR0b24uZW5hYmxlZCA9IFdlYkluc3BlY3Rvci5jYW5BcmNoaXZlTWFp
bkZyYW1lKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGFnZUFyY2hpdmVTdGFydGVkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfcGFnZUFyY2hpdmVTdGFydGVkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdGhpcy5fZG93bmxvYWRpbmdQYWdlID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fdXBkYXRlRG93
bmxvYWRCdXR0b24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wYWdlQXJjaGl2ZUVuZGVkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfcGFnZUFyY2hpdmVFbmRlZChldmVudCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2Rvd25sb2FkaW5nUGFnZSA9IGZhbHNlOwogICAgICAgICB0aGlzLl91cGRhdGVE
b3dubG9hZEJ1dHRvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvR2VuZXJhbFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRyZWVFbGVtZW50LmpzCmluZGV4IDAzMjBm
MTRiMjBjZDM1NmUwODNiYjA1NGE2MjdjNTYwZGZmZDExNzUuLjM5NDU3N2VjY2FlNTQ0ZTBjYjVm
YTQyYzg3NzNhMWI2M2MyMmM1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVHJlZUVsZW1lbnQuanMKQEAg
LTIzLDczICsyMyw1NiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihjbGFzc05hbWVz
LCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKK1dlYklu
c3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQgPSBjbGFzcyBHZW5lcmFsVHJlZUVsZW1lbnQgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQKIHsKLSAgICBUcmVlRWxlbWVudC5jYWxsKHRo
aXMsICIiLCByZXByZXNlbnRlZE9iamVjdCwgaGFzQ2hpbGRyZW4pOwotCi0gICAgdGhpcy5jbGFz
c05hbWVzID0gY2xhc3NOYW1lczsKLQotICAgIHRoaXMuX3Rvb2x0aXBIYW5kbGVkU2VwYXJhdGVs
eSA9IGZhbHNlOwotICAgIHRoaXMuX21haW5UaXRsZSA9IHRpdGxlIHx8ICIiOwotICAgIHRoaXMu
X3N1YnRpdGxlID0gc3VidGl0bGUgfHwgIiI7Ci0gICAgdGhpcy5fc3RhdHVzID0gIiI7Ci19Owor
ICAgIGNvbnN0cnVjdG9yKGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgcmVwcmVzZW50ZWRP
YmplY3QsIGhhc0NoaWxkcmVuKQorICAgIHsKKyAgICAgICAgc3VwZXIoIiIsIHJlcHJlc2VudGVk
T2JqZWN0LCBoYXNDaGlsZHJlbik7CiAKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQu
U3R5bGVDbGFzc05hbWUgPSAiaXRlbSI7Ci1XZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50
LkRpc2Nsb3N1cmVCdXR0b25TdHlsZUNsYXNzTmFtZSA9ICJkaXNjbG9zdXJlLWJ1dHRvbiI7Ci1X
ZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Lkljb25FbGVtZW50U3R5bGVDbGFzc05hbWUg
PSAiaWNvbiI7Ci1XZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlN0YXR1c0VsZW1lbnRT
dHlsZUNsYXNzTmFtZSA9ICJzdGF0dXMiOwotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5UaXRsZXNFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidGl0bGVzIjsKLVdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnQuTWFpblRpdGxlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInRpdGxl
IjsKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuU3VidGl0bGVFbGVtZW50U3R5bGVD
bGFzc05hbWUgPSAic3VidGl0bGUiOwotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5O
b1N1YnRpdGxlU3R5bGVDbGFzc05hbWUgPSAibm8tc3VidGl0bGUiOwotV2ViSW5zcGVjdG9yLkdl
bmVyYWxUcmVlRWxlbWVudC5TbWFsbFN0eWxlQ2xhc3NOYW1lID0gInNtYWxsIjsKLVdlYkluc3Bl
Y3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuVHdvTGluZVN0eWxlQ2xhc3NOYW1lID0gInR3by1saW5l
IjsKKyAgICAgICAgdGhpcy5jbGFzc05hbWVzID0gY2xhc3NOYW1lczsKIAotV2ViSW5zcGVjdG9y
LkdlbmVyYWxUcmVlRWxlbWVudC5FdmVudCA9IHsKLSAgICBNYWluVGl0bGVEaWRDaGFuZ2U6ICJn
ZW5lcmFsLXRyZWUtZWxlbWVudC1tYWluLXRpdGxlLWRpZC1jaGFuZ2UiCi19OwotCi1XZWJJbnNw
ZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFRyZWVFbGVt
ZW50LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fdG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0g
ZmFsc2U7CisgICAgICAgIHRoaXMuX21haW5UaXRsZSA9IHRpdGxlIHx8ICIiOworICAgICAgICB0
aGlzLl9zdWJ0aXRsZSA9IHN1YnRpdGxlIHx8ICIiOworICAgICAgICB0aGlzLl9zdGF0dXMgPSAi
IjsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9saXN0SXRlbU5vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgaWNvbkVsZW1lbnQoKQogICAgIHsKICAgICAgICAgdGhpcy5fY3JlYXRlRWxlbWVudHNJZk5l
ZWRlZCgpOwogICAgICAgICByZXR1cm4gdGhpcy5faWNvbkVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgdGl0bGVzRWxlbWVudCgpCiAgICAgewogICAgICAgICB0aGlzLl9jcmVhdGVF
bGVtZW50c0lmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybiB0aGlzLl90aXRsZXNFbGVtZW50Owot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1haW5UaXRsZUVsZW1lbnQoKQogICAgIHsKICAgICAg
ICAgdGhpcy5fY3JlYXRlRWxlbWVudHNJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gdGhpcy5f
bWFpblRpdGxlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdWJ0aXRsZUVsZW1l
bnQoKQogICAgIHsKICAgICAgICAgdGhpcy5fY3JlYXRlRWxlbWVudHNJZk5lZWRlZCgpOwogICAg
ICAgICB0aGlzLl9jcmVhdGVTdWJ0aXRsZUVsZW1lbnRJZk5lZWRlZCgpOwogICAgICAgICByZXR1
cm4gdGhpcy5fc3VidGl0bGVFbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNsYXNz
TmFtZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZXM7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBzZXQgY2xhc3NOYW1lcyh4KQogICAgIHsKQEAgLTEwNyw5ICs5MCw5IEBA
IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jbGFzc05hbWVzLmxlbmd0aDsgKytpKQogICAg
ICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKHRoaXMuX2NsYXNz
TmFtZXNbaV0pOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRDbGFzc05hbWU6
IGZ1bmN0aW9uKGNsYXNzTmFtZSkKKyAgICBhZGRDbGFzc05hbWUoY2xhc3NOYW1lKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX2NsYXNzTmFtZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTExOCw5ICsxMDEsOSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2Rl
KQogICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1l
KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUNsYXNzTmFtZTogZnVuY3Rpb24oY2xhc3NO
YW1lKQorICAgIHJlbW92ZUNsYXNzTmFtZShjbGFzc05hbWUpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX2NsYXNzTmFtZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTEyOSwxMiArMTEyLDEyIEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUpCiAgICAgICAg
ICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHNtYWxsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9zbWFsbDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzbWFsbCh4KQogICAgIHsKQEAgLTE0
NiwxMiArMTI5LDEyIEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9k
ZS5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuU21hbGxT
dHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0d29M
aW5lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90d29MaW5lOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IHR3b0xpbmUoeCkKICAgICB7CkBAIC0xNjMsMTIgKzE0NiwxMiBAQCBXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZShX
ZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlR3b0xpbmVTdHlsZUNsYXNzTmFtZSk7CiAg
ICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIGdldCBtYWluVGl0bGUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX21haW5UaXRsZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBt
YWluVGl0bGUoeCkKICAgICB7CkBAIC0xNzYsMjQgKzE1OSwyNCBAQCBXZWJJbnNwZWN0b3IuR2Vu
ZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGVF
bGVtZW50cygpOwogICAgICAgICB0aGlzLmRpZENoYW5nZSgpOwogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LkV2ZW50
Lk1haW5UaXRsZURpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VidGl0bGUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N1YnRpdGxlOwotICAgIH0sCisgICAgfQog
CiAgICAgc2V0IHN1YnRpdGxlKHgpCiAgICAgewogICAgICAgICB0aGlzLl9zdWJ0aXRsZSA9IHgg
fHwgIiI7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlRWxlbWVudHMoKTsKICAgICAgICAgdGhp
cy5kaWRDaGFuZ2UoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdGF0dXMoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1czsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBz
dGF0dXMoeCkKICAgICB7CkBAIC0yMDcsMzYgKzE5MCwzNiBAQCBXZWJJbnNwZWN0b3IuR2VuZXJh
bFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9zdGF0dXMgPSB4IHx8
ICIiOwogICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXNFbGVtZW50KCk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgZmlsdGVyYWJsZURhdGEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHt0ZXh0
OiBbdGhpcy5tYWluVGl0bGUsIHRoaXMuc3VidGl0bGVdfTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCB0b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3Rvb2x0aXBIYW5kbGVkU2VwYXJhdGVseTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB0
b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkoeCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Rvb2x0aXBI
YW5kbGVkU2VwYXJhdGVseSA9IHggfHwgZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBP
dmVycmlkZXMgZnJvbSBUcmVlRWxlbWVudCAoUHJpdmF0ZSkKIAotICAgIGlzRXZlbnRXaXRoaW5E
aXNjbG9zdXJlVHJpYW5nbGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGlzRXZlbnRXaXRoaW5EaXNj
bG9zdXJlVHJpYW5nbGUoZXZlbnQpCiAgICAgewogICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0
ID09PSB0aGlzLl9kaXNjbG9zdXJlQnV0dG9uOwotICAgIH0sCisgICAgfQogCi0gICAgb25hdHRh
Y2g6IGZ1bmN0aW9uKCkKKyAgICBvbmF0dGFjaCgpCiAgICAgewogICAgICAgICB0aGlzLl9jcmVh
dGVFbGVtZW50c0lmTmVlZGVkKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlRWxlbWVudHMo
KTsKIAotICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuR2VuZXJhbFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fbGlz
dEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoIml0ZW0iKTsKIAogICAgICAgICBpZiAodGhpcy5fY2xh
c3NOYW1lcykgewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jbGFzc05h
bWVzLmxlbmd0aDsgKytpKQpAQCAtMjY0LDI1ICsyNDcsMjUgQEAgV2ViSW5zcGVjdG9yLkdlbmVy
YWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl91
cGRhdGVTdGF0dXNFbGVtZW50KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmRldGFjaDogZnVu
Y3Rpb24oKQorICAgIG9uZGV0YWNoKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9ib3VuZENv
bnRleHRNZW51RXZlbnRIYW5kbGVyKSB7CiAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9ib3VuZENvbnRleHRNZW51
RXZlbnRIYW5kbGVyLCB0cnVlKTsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9ib3VuZENvbnRl
eHRNZW51RXZlbnRIYW5kbGVyOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbnJl
dmVhbDogZnVuY3Rpb24oKQorICAgIG9ucmV2ZWFsKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9saXN0SXRlbU5vZGUpCiAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuc2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZChmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQK
IAotICAgIGNhbGxGaXJzdEFuY2VzdG9yRnVuY3Rpb246IGZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwg
YXJncykKKyAgICBjYWxsRmlyc3RBbmNlc3RvckZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwgYXJncykK
ICAgICB7CiAgICAgICAgIC8vIENhbGwgdGhlIGZpcnN0IGFuY2VzdG9yIHRoYXQgaW1wbGVtZW50
cyBhIGZ1bmN0aW9uIG5hbWVkIGZ1bmN0aW9uTmFtZSAoaWYgYW55KS4KICAgICAgICAgdmFyIGN1
cnJlbnROb2RlID0gdGhpcy5wYXJlbnQ7CkBAIC0yOTQsMTEgKzI3NywxMSBAQCBXZWJJbnNwZWN0
b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgY3VycmVu
dE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnQ7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIFByaXZhdGUKIAotICAgIF9jcmVhdGVFbGVtZW50c0lmTmVlZGVkOiBmdW5jdGlvbigp
CisgICAgX2NyZWF0ZUVsZW1lbnRzSWZOZWVkZWQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMu
X2NyZWF0ZWRFbGVtZW50cykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMyMSw5ICszMDQsOSBA
QCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fdGl0bGVzRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9tYWluVGl0bGVFbGVtZW50KTsK
IAogICAgICAgICB0aGlzLl9jcmVhdGVkRWxlbWVudHMgPSB0cnVlOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2NyZWF0ZVN1YnRpdGxlRWxlbWVudElmTmVlZGVkOiBmdW5jdGlvbigpCisgICAgX2Ny
ZWF0ZVN1YnRpdGxlRWxlbWVudElmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9z
dWJ0aXRsZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMzEsOSArMzE0LDkgQEAg
V2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX3N1YnRpdGxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAg
ICAgICAgdGhpcy5fc3VidGl0bGVFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5HZW5l
cmFsVHJlZUVsZW1lbnQuU3VidGl0bGVFbGVtZW50U3R5bGVDbGFzc05hbWU7CiAgICAgICAgIHRo
aXMuX3RpdGxlc0VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc3VidGl0bGVFbGVtZW50KTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF91cGRhdGVUaXRsZUVsZW1lbnRzOiBmdW5jdGlvbigpCisgICAg
X3VwZGF0ZVRpdGxlRWxlbWVudHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jcmVhdGVk
RWxlbWVudHMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNzcsOSArMzYwLDkgQEAgV2ViSW5z
cGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLnRpdGxlID0gc3VidGl0bGVUZXh0
OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU3RhdHVzRWxlbWVudDog
ZnVuY3Rpb24oKQorICAgIF91cGRhdGVTdGF0dXNFbGVtZW50KCkKICAgICB7CiAgICAgICAgIGlm
ICghdGhpcy5fc3RhdHVzRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5NCwzICsz
NzcsMTcgQEAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLl9zdGF0dXNFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fc3RhdHVz
OwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuRGlzY2xvc3Vy
ZUJ1dHRvblN0eWxlQ2xhc3NOYW1lID0gImRpc2Nsb3N1cmUtYnV0dG9uIjsKK1dlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQuSWNvbkVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsK
K1dlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuU3RhdHVzRWxlbWVudFN0eWxlQ2xhc3NO
YW1lID0gInN0YXR1cyI7CitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlRpdGxlc0Vs
ZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJ0aXRsZXMiOworV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVl
RWxlbWVudC5NYWluVGl0bGVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidGl0bGUiOworV2ViSW5z
cGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5TdWJ0aXRsZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9
ICJzdWJ0aXRsZSI7CitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Lk5vU3VidGl0bGVT
dHlsZUNsYXNzTmFtZSA9ICJuby1zdWJ0aXRsZSI7CitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVF
bGVtZW50LlNtYWxsU3R5bGVDbGFzc05hbWUgPSAic21hbGwiOworV2ViSW5zcGVjdG9yLkdlbmVy
YWxUcmVlRWxlbWVudC5Ud29MaW5lU3R5bGVDbGFzc05hbWUgPSAidHdvLWxpbmUiOworCitXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LkV2ZW50ID0geworICAgIE1haW5UaXRsZURpZENo
YW5nZTogImdlbmVyYWwtdHJlZS1lbGVtZW50LW1haW4tdGl0bGUtZGlkLWNoYW5nZSIKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRl
eGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQuanMKaW5kZXgg
ZDY0MjQzMGVjMDQxODU2ZjZhYzFlYjlmNzEzM2RmODFjODExNGFmNi4uMGIyMDViZjQwN2ViMDhl
YmNiOWZhMmZkZmZiMWNhYzAzNTc0YjJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWRE
YXRhYmFzZUhvc3RUcmVlRWxlbWVudC5qcwpAQCAtMjMsMjUgKzIzLDIzIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRh
YmFzZUhvc3RUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKGhvc3QpCitXZWJJbnNwZWN0b3IuSW5kZXhl
ZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50ID0gY2xhc3MgSW5kZXhlZERhdGFiYXNlSG9zdFRyZWVF
bGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudAogewotICAgIFdl
Ykluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuRm9s
ZGVyVHJlZUVsZW1lbnQuRm9sZGVySWNvblN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuZGlz
cGxheU5hbWVGb3JIb3N0KGhvc3QpLCBudWxsKTsKLQotICAgIHRoaXMuX2hvc3QgPSBob3N0Owor
ICAgIGNvbnN0cnVjdG9yKGhvc3QpCisgICAgeworICAgICAgICBzdXBlcihXZWJJbnNwZWN0b3Iu
Rm9sZGVyVHJlZUVsZW1lbnQuRm9sZGVySWNvblN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3Iu
ZGlzcGxheU5hbWVGb3JIb3N0KGhvc3QpLCBudWxsKTsKIAotICAgIHRoaXMuaGFzQ2hpbGRyZW4g
PSB0cnVlOwotfTsKKyAgICAgICAgdGhpcy5faG9zdCA9IGhvc3Q7CiAKLVdlYkluc3BlY3Rvci5J
bmRleGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50LAotICAgIF9f
cHJvdG9fXzogV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUsCisgICAg
ICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0cnVlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAg
ICAgZ2V0IG5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kaXNwbGF5
TmFtZUZvckhvc3QodGhpcy5faG9zdCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2F0ZWdv
cnlOYW1lKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0
YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQuanMKaW5kZXggZWViZDFjYTBkZTY1NDg4
ODE1ODMxN2I0YmY3OTcxNjg1MDkzODdhMy4uY2E4MTI5MTQ5MmZlYmVmN2MyZjgzN2VkZGVjNzRk
ZTc1NzhjMGY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleFRyZWVFbGVtZW50LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRh
YmFzZU9iamVjdFN0b3JlSW5kZXhUcmVlRWxlbWVudC5qcwpAQCAtMjMsMjIgKzIzLDE4IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLklu
ZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXhUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKG9iamVj
dFN0b3JlSW5kZXgpCitXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRl
eFRyZWVFbGVtZW50ID0gY2xhc3MgSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleFRyZWVF
bGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAogewotICAgIGNv
bnNvbGUuYXNzZXJ0KG9iamVjdFN0b3JlSW5kZXggaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleCk7Ci0KLSAgICB0aGlzLl9vYmplY3RTdG9yZUlu
ZGV4ID0gb2JqZWN0U3RvcmVJbmRleDsKKyAgICBjb25zdHJ1Y3RvcihvYmplY3RTdG9yZUluZGV4
KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQob2JqZWN0U3RvcmVJbmRleCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4KTsKIAotICAg
IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5JY29uU3R5bGVDbGFzc05hbWUs
IG9iamVjdFN0b3JlSW5kZXgubmFtZSwgbnVsbCwgb2JqZWN0U3RvcmVJbmRleCwgZmFsc2UpOwor
ICAgICAgICBzdXBlcigiZGF0YWJhc2UtdGFibGUtaWNvbiIsIG9iamVjdFN0b3JlSW5kZXgubmFt
ZSwgbnVsbCwgb2JqZWN0U3RvcmVJbmRleCwgZmFsc2UpOwogCi0gICAgdGhpcy5zbWFsbCA9IHRy
dWU7Ci19OworICAgICAgICB0aGlzLl9vYmplY3RTdG9yZUluZGV4ID0gb2JqZWN0U3RvcmVJbmRl
eDsKIAotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXhUcmVlRWxl
bWVudC5JY29uU3R5bGVDbGFzc05hbWUgPSAiZGF0YWJhc2UtdGFibGUtaWNvbiI7Ci0KLVdlYklu
c3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2Jq
ZWN0U3RvcmVJbmRleFRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkdl
bmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZVRyZWVFbGVt
ZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhl
ZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5qcwppbmRleCA4ZjljN2MxMDVjM2QzNDll
ZTY0YTg3OGJlODhlNDVkOTcxOGE2OTJlLi43OTliOWJmMTVmNjQ5YTk3MzcwZjMzOWJmYTdiZTBh
MmQzNDg5Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZVRyZWVFbGVtZW50LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZU9i
amVjdFN0b3JlVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzggKzIzLDM0IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9i
amVjdFN0b3JlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihvYmplY3RTdG9yZSkKK1dlYkluc3BlY3Rv
ci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZVRyZWVFbGVtZW50ID0gY2xhc3MgSW5kZXhlZERh
dGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFs
VHJlZUVsZW1lbnQKIHsKLSAgICBjb25zb2xlLmFzc2VydChvYmplY3RTdG9yZSBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZSk7Ci0KLSAgICB0aGlzLl9v
YmplY3RTdG9yZSA9IG9iamVjdFN0b3JlOwotCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVl
RWxlbWVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9y
ZVRyZWVFbGVtZW50Lkljb25TdHlsZUNsYXNzTmFtZSwgb2JqZWN0U3RvcmUubmFtZSwgbnVsbCwg
b2JqZWN0U3RvcmUsICEhdGhpcy5fb2JqZWN0U3RvcmUuaW5kZXhlcy5sZW5ndGgpOworICAgIGNv
bnN0cnVjdG9yKG9iamVjdFN0b3JlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQob2Jq
ZWN0U3RvcmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3Rv
cmUpOwogCi0gICAgdGhpcy5zbWFsbCA9IHRydWU7Ci19OworICAgICAgICBzdXBlcihXZWJJbnNw
ZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5JY29uU3R5bGVDbGFz
c05hbWUsIG9iamVjdFN0b3JlLm5hbWUsIG51bGwsIG9iamVjdFN0b3JlLCAhIXRoaXMuX29iamVj
dFN0b3JlLmluZGV4ZXMubGVuZ3RoKTsKIAotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9i
amVjdFN0b3JlVHJlZUVsZW1lbnQuSWNvblN0eWxlQ2xhc3NOYW1lID0gImRhdGFiYXNlLXRhYmxl
LWljb24iOworICAgICAgICB0aGlzLl9vYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlOwogCi1XZWJJ
bnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RT
dG9yZVRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVl
RWxlbWVudC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOworICAgIH0KIAog
ICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG9iamVjdFN0b3JlKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9vYmplY3RTdG9yZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIE92ZXJyaWRl
cyBmcm9tIFRyZWVFbGVtZW50IChQcm90ZWN0ZWQpCiAKLSAgICBvbmNvbGxhcHNlOiBmdW5jdGlv
bigpCisgICAgb25jb2xsYXBzZSgpCiAgICAgewogICAgICAgICB0aGlzLnNob3VsZFJlZnJlc2hD
aGlsZHJlbiA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbnBvcHVsYXRlOiBmdW5jdGlv
bigpCisgICAgb25wb3B1bGF0ZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5s
ZW5ndGggJiYgIXRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuKQogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
SW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VUcmVlRWxlbWVudC5qcwppbmRleCAwZjdi
MjY3MTQwYTZlODBlNjYyMTkxMjg4MDkzMDNkYzFlNmEzNDk3Li5hOTU4YzkzN2JjZTlmZTA0NmQ4
OGVkMjZiMDU0MTE0MmJiZTZhZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VUcmVlRWxlbWVudC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VU
cmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywzNyArMjMsMzQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQg
PSBmdW5jdGlvbihpbmRleGVkRGF0YWJhc2UpCitXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNl
VHJlZUVsZW1lbnQgPSBjbGFzcyBJbmRleGVkRGF0YWJhc2VUcmVlRWxlbWVudCBleHRlbmRzIFdl
Ykluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQKIHsKLSAgICBjb25zb2xlLmFzc2VydChpbmRl
eGVkRGF0YWJhc2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlKTsKLQot
ICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZSA9IGluZGV4ZWREYXRhYmFzZTsKLQotICAgIFdlYklu
c3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuSW5kZXhl
ZERhdGFiYXNlVHJlZUVsZW1lbnQuSWNvblN0eWxlQ2xhc3NOYW1lLCBpbmRleGVkRGF0YWJhc2Uu
bmFtZSwgbnVsbCwgaW5kZXhlZERhdGFiYXNlLCAhIXRoaXMuX2luZGV4ZWREYXRhYmFzZS5vYmpl
Y3RTdG9yZXMubGVuZ3RoKTsKKyAgICBjb25zdHJ1Y3RvcihpbmRleGVkRGF0YWJhc2UpCisgICAg
eworICAgICAgICBjb25zb2xlLmFzc2VydChpbmRleGVkRGF0YWJhc2UgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlKTsKIAotICAgIHRoaXMuc21hbGwgPSB0cnVlOwotfTsK
KyAgICAgICAgdGhpcy5faW5kZXhlZERhdGFiYXNlID0gaW5kZXhlZERhdGFiYXNlOwogCi1XZWJJ
bnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQuSWNvblN0eWxlQ2xhc3NOYW1lID0g
ImRhdGFiYXNlLWljb24iOworICAgICAgICBzdXBlcigiZGF0YWJhc2UtaWNvbiIsIGluZGV4ZWRE
YXRhYmFzZS5uYW1lLCBudWxsLCBpbmRleGVkRGF0YWJhc2UsICEhdGhpcy5faW5kZXhlZERhdGFi
YXNlLm9iamVjdFN0b3Jlcy5sZW5ndGgpOwogCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNl
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQsCisgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGluZGV4ZWREYXRhYmFzZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5faW5kZXhlZERhdGFiYXNlOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gT3ZlcnJpZGVzIGZyb20gVHJlZUVsZW1lbnQgKFByb3RlY3RlZCkKIAotICAgIG9u
Y29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICBvbmNvbGxhcHNlKCkKICAgICB7CiAgICAgICAgIHRo
aXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIG9u
cG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLmNoaWxkcmVuLmxlbmd0aCAmJiAhdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4pCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC02Niw1ICs2MywzIEBAIFdlYkluc3BlY3Rvci5JbmRleGVk
RGF0YWJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmFwcGVu
ZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxl
bWVudChvYmplY3RTdG9yZSkpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0
YWJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVy
YWxUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lDb25zb2xlTWVzc2Fn
ZUltcGwuanMKaW5kZXggODc2MDRiNWUyODdlODdkYjM0YTc5MzM3ZjI0NWZkZmEyNTFmMzliMC4u
MzRjMmVhZWI0OTZlYzhjZDA2MWMzNWRjOTEwNzMyN2E3ODc3ZDE5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3Nh
Z2VJbXBsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0xlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5qcwpAQCAtMTM5LDEwICsxMzksMTAgQEAgV2ViSW5z
cGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlm
ICh0aGlzLl9zaG91bGREdW1wU3RhY2tUcmFjZSgpKSB7CiAgICAgICAgICAgICB2YXIgb2wgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwogICAgICAgICAgICAgb2wuY2xhc3NOYW1lID0g
Im91dGxpbmUtZGlzY2xvc3VyZSI7Ci0gICAgICAgICAgICB2YXIgdHJlZU91dGxpbmUgPSBuZXcg
VHJlZU91dGxpbmUob2wpOworICAgICAgICAgICAgdmFyIHRyZWVPdXRsaW5lID0gbmV3IFdlYklu
c3BlY3Rvci5UcmVlT3V0bGluZShvbCk7CiAKICAgICAgICAgICAgIHZhciBjb250ZW50ID0gdGhp
cy5fZm9ybWF0dGVkTWVzc2FnZTsKLSAgICAgICAgICAgIHZhciByb290ID0gbmV3IFRyZWVFbGVt
ZW50KGNvbnRlbnQsIG51bGwsIHRydWUpOworICAgICAgICAgICAgdmFyIHJvb3QgPSBuZXcgV2Vi
SW5zcGVjdG9yLlRyZWVFbGVtZW50KGNvbnRlbnQsIG51bGwsIHRydWUpOwogICAgICAgICAgICAg
Y29udGVudC50cmVlRWxlbWVudEZvclRlc3QgPSByb290OwogICAgICAgICAgICAgdHJlZU91dGxp
bmUuYXBwZW5kQ2hpbGQocm9vdCk7CiAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09PSBXZWJJ
bnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVHJhY2UpCkBAIC02MjAs
NyArNjIwLDcgQEAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZCh1cmxFbGVtZW50KTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gbmV3IFRyZWVF
bGVtZW50KGNvbnRlbnQpOworICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gbmV3IFdlYklu
c3BlY3Rvci5UcmVlRWxlbWVudChjb250ZW50KTsKICAgICAgICAgICAgIHBhcmVudFRyZWVFbGVt
ZW50LmFwcGVuZENoaWxkKHRyZWVFbGVtZW50KTsKICAgICAgICAgfQogICAgIH0sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dUcmVlRWxl
bWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ1Ry
ZWVFbGVtZW50LmpzCmluZGV4IGE3M2QwZGI4YmI4MWJjNmMxYzk3NjQwYTU2ZDhjYzA5ZmU5NDU5
YjMuLjdmZmQ4ZGJkMzMwOTU1MTIxZjNkMjY1OThmODQ0MzNkZDk4YjEzYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ1RyZWVFbGVtZW50
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ1Ry
ZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywyMSArMjMsMTggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTG9nVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihy
ZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5Mb2dUcmVlRWxlbWVudCA9IGNsYXNzIExv
Z1RyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAogewot
ICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkxvZ09iamVjdCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNh
bGwodGhpcywgV2ViSW5zcGVjdG9yLkxvZ1RyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUiKSwgcmVwcmVzZW50ZWRPYmplY3Quc3RhcnREYXRl
LnRvTG9jYWxlVGltZVN0cmluZygpLCByZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOwotCi0gICAg
dGhpcy5fbG9nT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3Q7CisgICAgY29uc3RydWN0b3IocmVw
cmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Mb2dPYmplY3QpOwogCi0gICAgdGhpcy5z
bWFsbCA9IHRydWU7Ci19OworICAgICAgICBzdXBlcigibG9nLWljb24iLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkNvbnNvbGUiKSwgcmVwcmVzZW50ZWRPYmplY3Quc3RhcnREYXRlLnRvTG9jYWxl
VGltZVN0cmluZygpLCByZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOwogCi1XZWJJbnNwZWN0b3Iu
TG9nVHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUgPSAibG9nLWljb24iOworICAgICAgICB0aGlz
Ll9sb2dPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdDsKIAotV2ViSW5zcGVjdG9yLkxvZ1RyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkxvZ1Ry
ZWVFbGVtZW50LAorICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIApAQCAtNDYsNSArNDMsMyBAQCBXZWJJbnNwZWN0b3IuTG9nVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fbG9nT2JqZWN0OwogICAgIH0KIH07Ci0K
LVdlYkluc3BlY3Rvci5Mb2dUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVs
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5qcwppbmRleCA1NGY1YzY1MjA5YjAzZGZhZTQ4ZmMyZWMwYmQ4ZmVlZWVl
MmU5MWVjLi5hYjBlZTVjMjA5ODg1MTI0NGZjZGE1NDk4ZGJkMDc2YWE0ZTI5ZmY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9u
U2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKQEAgLTE1Nyw3ICsxNTcsNyBAQCBXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIE5hdmlnYXRpb25TaWRlYmFy
UGFuZWwgZXh0ZW5kcyBXZWJJbgogICAgICAgICAgICAgY29udGVudFRyZWVPdXRsaW5lRWxlbWVu
dC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkNvbnRl
bnRUcmVlT3V0bGluZUVsZW1lbnRIaWRkZW5TdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIHRoaXMu
Y29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGVudFRyZWVPdXRsaW5lRWxlbWVudCk7CiAK
LSAgICAgICAgdmFyIGNvbnRlbnRUcmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZShjb250ZW50
VHJlZU91dGxpbmVFbGVtZW50KTsKKyAgICAgICAgdmFyIGNvbnRlbnRUcmVlT3V0bGluZSA9IG5l
dyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUoY29udGVudFRyZWVPdXRsaW5lRWxlbWVudCk7CiAg
ICAgICAgIGNvbnRlbnRUcmVlT3V0bGluZS5hbGxvd3NSZXBlYXRTZWxlY3Rpb24gPSB0cnVlOwog
CiAgICAgICAgIGlmICghc3VwcHJlc3NGaWx0ZXJpbmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVBcnJheUluZGV4VHJl
ZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9P
YmplY3RUcmVlQXJyYXlJbmRleFRyZWVFbGVtZW50LmpzCmluZGV4IDJlOWVmZmY1ZTllMWI3NDkw
N2MzZTY4NmI5ZmJlOGU2YmI1OTQ5ZWEuLjY4OTVkYzc0MGUwNGI0N2M3NTFiNDRhMTQ0OWNiZTcy
MDliZjM0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL09iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVl
RWxlbWVudC5qcwpAQCAtMjMsMjMgKzIzLDIxIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVBcnJheUluZGV4VHJlZUVs
ZW1lbnQgPSBmdW5jdGlvbihwcm9wZXJ0eSwgcHJvcGVydHlQYXRoKQorV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVlQXJyYXlJbmRl
eFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1l
bnQKIHsKLSAgICBjb25zb2xlLmFzc2VydChwcm9wZXJ0eS5pc0luZGV4UHJvcGVydHkoKSwgIkFy
cmF5SW5kZXhUcmVlRWxlbWVudCBleHBlY3RzIG51bWVyaWMgcHJvcGVydHkgbmFtZXMiKTsKLQot
ICAgIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmNhbGwodGhpcywgcHJv
cGVydHksIHByb3BlcnR5UGF0aCwgcHJvcGVydHkpOworICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5
LCBwcm9wZXJ0eVBhdGgpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChwcm9wZXJ0eS5p
c0luZGV4UHJvcGVydHkoKSwgIk9iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQgZXhwZWN0
cyBudW1lcmljIHByb3BlcnR5IG5hbWVzIik7CiAKLSAgICB0aGlzLm1haW5UaXRsZSA9IHRoaXMu
X3RpdGxlRnJhZ21lbnQoKTsKLSAgICB0aGlzLmFkZENsYXNzTmFtZSgib2JqZWN0LXRyZWUtcHJv
cGVydHkiKTsKLSAgICB0aGlzLmFkZENsYXNzTmFtZSgib2JqZWN0LXRyZWUtYXJyYXktaW5kZXgi
KTsKKyAgICAgICAgc3VwZXIocHJvcGVydHksIHByb3BlcnR5UGF0aCwgcHJvcGVydHkpOwogCi0g
ICAgaWYgKCF0aGlzLnByb3BlcnR5Lmhhc1ZhbHVlKCkpCi0gICAgICAgIHRoaXMuYWRkQ2xhc3NO
YW1lKCJhY2Nlc3NvciIpOwotfTsKKyAgICAgICAgdGhpcy5tYWluVGl0bGUgPSB0aGlzLl90aXRs
ZUZyYWdtZW50KCk7CisgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJvYmplY3QtdHJlZS1wcm9w
ZXJ0eSIpOworICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgib2JqZWN0LXRyZWUtYXJyYXktaW5k
ZXgiKTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUFycmF5
SW5kZXhUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3RUcmVl
QmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgaWYgKCF0aGlzLnByb3BlcnR5Lmhh
c1ZhbHVlKCkpCisgICAgICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgiYWNjZXNzb3IiKTsKKyAg
ICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIApAQCAtNDgsNyArNDYsNyBAQCBXZWJJbnNwZWN0b3Iu
T2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMubWFpblRpdGxlID0gdGhpcy5fdGl0bGVGcmFnbWVudCgpOwogCiAgICAgICAgIHRoaXMucmVt
b3ZlQ2xhc3NOYW1lKCJhY2Nlc3NvciIpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5qcwppbmRleCBmNDBl
YmY5N2Y3NWExZmRiMDA3MjJhMmRmN2UyZjNiNzM3MDU5NmI4Li41NWE0ZmJlZDRhZjExMmRkMjhk
ZGQwZTQ4YmU1Yzk5M2U0YmJjYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJl
ZUVsZW1lbnQuanMKQEAgLTIzLDQ1ICsyMyw0MyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50
ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QsIHByb3BlcnR5UGF0aCwgcHJvcGVydHkpCitX
ZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudCA9IGNsYXNzIE9iamVjdFRyZWVC
YXNlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7
Ci0gICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QpOwotICAgIGNvbnNvbGUuYXNz
ZXJ0KHByb3BlcnR5UGF0aCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgpOwot
ICAgIGNvbnNvbGUuYXNzZXJ0KCFwcm9wZXJ0eSB8fCBwcm9wZXJ0eSBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5Qcm9wZXJ0eURlc2NyaXB0b3IpOwotCi0gICAgdGhpcy5fcHJvcGVydHkgPSBwcm9w
ZXJ0eTsKLSAgICB0aGlzLl9wcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGg7CisgICAgY29uc3Ry
dWN0b3IocmVwcmVzZW50ZWRPYmplY3QsIHByb3BlcnR5UGF0aCwgcHJvcGVydHkpCisgICAgewor
ICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHByb3BlcnR5UGF0aCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBh
dGgpOworICAgICAgICBjb25zb2xlLmFzc2VydCghcHJvcGVydHkgfHwgcHJvcGVydHkgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yKTsKIAotICAgIFdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBudWxsLCBudWxsLCBudWxsLCByZXByZXNl
bnRlZE9iamVjdCwgZmFsc2UpOworICAgICAgICBzdXBlcihudWxsLCBudWxsLCBudWxsLCByZXBy
ZXNlbnRlZE9iamVjdCwgZmFsc2UpOwogCi0gICAgdGhpcy5zbWFsbCA9IHRydWU7Ci0gICAgdGhp
cy50b2dnbGVPbkNsaWNrID0gdHJ1ZTsKLSAgICB0aGlzLnNlbGVjdGFibGUgPSBmYWxzZTsKLSAg
ICB0aGlzLnRvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IHRydWU7Ci19OworICAgICAgICB0aGlz
Ll9wcm9wZXJ0eSA9IHByb3BlcnR5OworICAgICAgICB0aGlzLl9wcm9wZXJ0eVBhdGggPSBwcm9w
ZXJ0eVBhdGg7CiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJl
ZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50
LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7CisgICAgICAgIHRoaXMudG9n
Z2xlT25DbGljayA9IHRydWU7CisgICAgICAgIHRoaXMuc2VsZWN0YWJsZSA9IGZhbHNlOworICAg
ICAgICB0aGlzLnRvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IHRydWU7CisgICAgfQogCiAgICAg
Ly8gUHVibGljCiAKICAgICBnZXQgcHJvcGVydHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3Byb3BlcnR5OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHByb3BlcnR5UGF0aCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHlQYXRoOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBvbmNvbnRleHRtZW51KGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5fY29udGV4dE1lbnVIYW5kbGVyKGV2ZW50KTsKLSAgICB9LAorICAgIH0KIAog
ICAgIHJlc29sdmVkVmFsdWUoKQogICAgIHsKQEAgLTcxLDcgKzY5LDcgQEAgV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhp
cy5fcHJvcGVydHkuaGFzVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0
eS52YWx1ZTsKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICByZXNv
bHZlZFZhbHVlUHJvcGVydHlQYXRoKCkKICAgICB7CkBAIC04MSwxOSArNzksMTkgQEAgV2ViSW5z
cGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAodGhpcy5fcHJvcGVydHkuaGFzVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9w
cm9wZXJ0eVBhdGguYXBwZW5kUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuX3Byb3BlcnR5LnZhbHVl
LCB0aGlzLl9wcm9wZXJ0eSwgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5UeXBlLlZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICB0aGlzUHJvcGVydHlQ
YXRoKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb3BlcnR5KTsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5UGF0aC5hcHBlbmRQcm9wZXJ0eURlc2NyaXB0b3Io
bnVsbCwgdGhpcy5fcHJvcGVydHksIHRoaXMucHJvcGVydHlQYXRoVHlwZSgpKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGhhZEVycm9yKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRo
aXMuX3Byb3BlcnR5KTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5Lndhc1Rocm93biB8
fCB0aGlzLl9nZXR0ZXJIYWRFcnJvcjsKLSAgICB9LAorICAgIH0KIAogICAgIHByb3BlcnR5UGF0
aFR5cGUoKQogICAgIHsKQEAgLTEwNSw3ICsxMDMsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJl
ZUJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9wcm9wZXJ0
eS5oYXNTZXR0ZXIoKSkKICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUHJvcGVydHlQ
YXRoLlR5cGUuU2V0dGVyOwogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0
aC5UeXBlLlZhbHVlOwotICAgIH0sCisgICAgfQogCiAgICAgcHJvcGVydHlQYXRoU3RyaW5nKHBy
b3BlcnR5UGF0aCkKICAgICB7CkBAIC0xMTMsNyArMTExLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiVW5hYmxlIHRvIGRldGVybWluZSBwYXRoIHRvIHByb3BlcnR5
IGZyb20gcm9vdCIpOwogCiAgICAgICAgIHJldHVybiBwcm9wZXJ0eVBhdGguZGlzcGxheVBhdGgo
dGhpcy5wcm9wZXJ0eVBhdGhUeXBlKCkpOwotICAgIH0sCisgICAgfQogCiAgICAgY3JlYXRlSW50
ZXJhY3RpdmVHZXR0ZXJFbGVtZW50KCkKICAgICB7CkBAIC0xMzQsNyArMTMyLDcgQEAgV2ViSW5z
cGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9
LmJpbmQodGhpcykpOwogCiAgICAgICAgIHJldHVybiBnZXR0ZXJFbGVtZW50OwotICAgIH0sCisg
ICAgfQogCiAgICAgY3JlYXRlUmVhZE9ubHlJY29uRWxlbWVudCgpCiAgICAgewpAQCAtMTQyLDcg
KzE0MCw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmVhZE9ubHlFbGVtZW50LmNsYXNzTmFtZSA9ICJyZWFkLW9ubHkiOwog
ICAgICAgICByZWFkT25seUVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
YWQgb25seSIpOwogICAgICAgICByZXR1cm4gcmVhZE9ubHlFbGVtZW50OwotICAgIH0sCisgICAg
fQogCiAgICAgLy8gUHJpdmF0ZQogCkBAIC0xNjAsNyArMTU4LDcgQEAgV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLnF1aWNrQ29uc29sZS5wcm9tcHQucHVzaEhpc3RvcnlJdGVtKHRleHQpOwogCiAgICAg
ICAgIFdlYkluc3BlY3Rvci5jb25zb2xlTG9nVmlld0NvbnRyb2xsZXIuYXBwZW5kSW1tZWRpYXRl
RXhlY3V0aW9uV2l0aFJlc3VsdCh0ZXh0LCByZXNvbHZlZFZhbHVlKTsKLSAgICB9LAorICAgIH0K
IAogICAgIF9jb250ZXh0TWVudUhhbmRsZXIoZXZlbnQpCiAgICAgewpAQCAtMTg0LDcgKzE4Miw3
IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
IAogICAgICAgICBpZiAoIWNvbnRleHRNZW51LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRl
eHRNZW51LnNob3coKTsKLSAgICB9LAorICAgIH0KIAogICAgIF9hcHBlbmRNZW51c0l0ZW1zRm9y
T2JqZWN0KGNvbnRleHRNZW51LCByZXNvbHZlZFZhbHVlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVNYXBFbnRy
eVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQuanMKaW5kZXggZmI5MmQ4ZjMzZGY3YzIx
N2I2MmI5ZDM3YjU1NmU4YTM3Mzg5NDVhNS4uZDZiYTQ3ZTczOWI5YmNjNjZjZWQ1MmJkYTE4Yzhh
NDkzYTVhYjhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVs
ZW1lbnQuanMKQEAgLTIzLDQyICsyMyw0MCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVu
dCA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHlQYXRoKQorV2ViSW5zcGVjdG9yLk9iamVjdFRy
ZWVNYXBFbnRyeVRyZWVFbGVtZW50ID0gY2xhc3MgT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1l
bnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudAogewotICAg
IGNvbnNvbGUuYXNzZXJ0KG9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QpOwotCi0gICAgdGhpcy5fb2JqZWN0ID0gb2JqZWN0OworICAgIGNvbnN0cnVjdG9yKG9iamVj
dCwgcHJvcGVydHlQYXRoKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQob2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk7CiAKLSAgICAvLyBUcmVhdCB0aGUg
c2FtZSBhcyBhbiBhcnJheS1pbmRleCBqdXN0IHdpdGggZGlmZmVyZW50IHN0cmluZ3MgYW5kIHdp
ZHRocy4KLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5jYWxsKHRo
aXMsIHRoaXMuX29iamVjdCwgcHJvcGVydHlQYXRoKTsKKyAgICAgICAgLy8gVHJlYXQgdGhlIHNh
bWUgYXMgYW4gYXJyYXktaW5kZXgganVzdCB3aXRoIGRpZmZlcmVudCBzdHJpbmdzIGFuZCB3aWR0
aHMuCisgICAgICAgIHN1cGVyKHRoaXMuX29iamVjdCwgcHJvcGVydHlQYXRoKTsKIAotICAgIHRo
aXMubWFpblRpdGxlID0gdGhpcy5fdGl0bGVGcmFnbWVudCgpOwotICAgIHRoaXMuYWRkQ2xhc3NO
YW1lKCJvYmplY3QtdHJlZS1hcnJheS1pbmRleCIpOwotICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJv
YmplY3QtdHJlZS1tYXAtZW50cnkiKTsKLX07CisgICAgICAgIHRoaXMuX29iamVjdCA9IG9iamVj
dDsKIAotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRy
ZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJl
ZUVsZW1lbnQucHJvdG90eXBlLAorICAgICAgICB0aGlzLm1haW5UaXRsZSA9IHRoaXMuX3RpdGxl
RnJhZ21lbnQoKTsKKyAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoIm9iamVjdC10cmVlLWFycmF5
LWluZGV4Iik7CisgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJvYmplY3QtdHJlZS1tYXAtZW50
cnkiKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBvYmplY3QoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFBy
b3RlY3RlZAogCiAgICAgcmVzb2x2ZWRWYWx1ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fb2JqZWN0OwotICAgIH0sCisgICAgfQogCiAgICAgcHJvcGVydHlQYXRoVHlwZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5UeXBlLlZhbHVlOwot
ICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCkBAIC04MywyMyArODEsMjEgQEAgV2Vi
SW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICB9CiB9OwogCi0KLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwS2V5VHJlZUVsZW1lbnQgPSBm
dW5jdGlvbihvYmplY3QsIHByb3BlcnR5UGF0aCkKK1dlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFw
S2V5VHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVlTWFwS2V5VHJlZUVsZW1lbnQgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBvYmplY3Qs
IHByb3BlcnR5UGF0aCk7Ci0gICAgdGhpcy5hZGRDbGFzc05hbWUoImtleSIpOwotfTsKLQotV2Vi
SW5zcGVjdG9yLk9iamVjdFRyZWVNYXBLZXlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwS2V5VHJlZUVsZW1lbnQsCi0g
ICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQu
cHJvdG90eXBlLAorICAgIGNvbnN0cnVjdG9yKG9iamVjdCwgcHJvcGVydHlQYXRoKQorICAgIHsK
KyAgICAgICAgc3VwZXIob2JqZWN0LCBwcm9wZXJ0eVBhdGgpOwogCisgICAgICAgIHRoaXMuYWRk
Q2xhc3NOYW1lKCJrZXkiKTsKKyAgICB9CisgICAgCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBk
aXNwbGF5UHJvcGVydHlOYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoImtleSIpOwotICAgIH0sCisgICAgfQogCiAgICAgcmVzb2x2ZWRWYWx1ZVByb3Bl
cnR5UGF0aCgpCiAgICAgewpAQCAtMTA3LDI0ICsxMDMsMjMgQEAgV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVNYXBLZXlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotCi1XZWJJ
bnNwZWN0b3IuT2JqZWN0VHJlZU1hcFZhbHVlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihvYmplY3Qs
IHByb3BlcnR5UGF0aCwga2V5KQorV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBWYWx1ZVRyZWVF
bGVtZW50ID0gY2xhc3MgT2JqZWN0VHJlZU1hcFZhbHVlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQKIHsKLSAgICB0aGlzLl9rZXkg
PSBrZXk7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LmNh
bGwodGhpcywgb2JqZWN0LCBwcm9wZXJ0eVBhdGgpOwotICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJ2
YWx1ZSIpOwotfTsKKyAgICBjb25zdHJ1Y3RvcihvYmplY3QsIHByb3BlcnR5UGF0aCwga2V5KQor
ICAgIHsKKyAgICAgICAgc3VwZXIob2JqZWN0LCBwcm9wZXJ0eVBhdGgpOwogCi1XZWJJbnNwZWN0
b3IuT2JqZWN0VHJlZU1hcFZhbHVlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcFZhbHVlVHJlZUVsZW1lbnQsCi0gICAg
X19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQucHJv
dG90eXBlLAorICAgICAgICB0aGlzLl9rZXkgPSBrZXk7CiAKKyAgICAgICAgdGhpcy5hZGRDbGFz
c05hbWUoInZhbHVlIik7CisgICAgfQorICAgIAogICAgIC8vIFByb3RlY3RlZAogCiAgICAgZGlz
cGxheVByb3BlcnR5TmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJ2YWx1ZSIpOwotICAgIH0sCisgICAgfQogCiAgICAgcmVzb2x2ZWRWYWx1ZVByb3Bl
cnR5UGF0aCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlUHJvcGVydHlUcmVl
RWxlbWVudC5qcwppbmRleCAzNTE2YjZjYzBjZmM3ZTE1ZDFhMzIxMTk2MTMzNWJmYjMxZjViZWRh
Li44Yzc2MmJkNTIyMzBiMGUzODM4MGM1ZGIyM2ZlMjNkZTY2MzcyMjhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlUHJvcGVy
dHlUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5qcwpAQCAtMjMsNTQgKzIzLDUy
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocHJvcGVydHksIHBy
b3BlcnR5UGF0aCwgbW9kZSwgcHJvdG90eXBlTmFtZSkKK1dlYkluc3BlY3Rvci5PYmplY3RUcmVl
UHJvcGVydHlUcmVlRWxlbWVudCA9IGNsYXNzIE9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQKIHsKLSAgICB0
aGlzLl9tb2RlID0gbW9kZSB8fCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuTW9kZS5Qcm9w
ZXJ0aWVzOwotICAgIHRoaXMuX3Byb3RvdHlwZU5hbWUgPSBwcm90b3R5cGVOYW1lOwotCi0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBwcm9wZXJ0
eSwgcHJvcGVydHlQYXRoLCBwcm9wZXJ0eSk7CisgICAgY29uc3RydWN0b3IocHJvcGVydHksIHBy
b3BlcnR5UGF0aCwgbW9kZSwgcHJvdG90eXBlTmFtZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHBy
b3BlcnR5LCBwcm9wZXJ0eVBhdGgsIHByb3BlcnR5KTsKIAotICAgIHRoaXMubWFpblRpdGxlID0g
dGhpcy5fdGl0bGVGcmFnbWVudCgpOwotICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJvYmplY3QtdHJl
ZS1wcm9wZXJ0eSIpOworICAgICAgICB0aGlzLl9tb2RlID0gbW9kZSB8fCBXZWJJbnNwZWN0b3Iu
T2JqZWN0VHJlZVZpZXcuTW9kZS5Qcm9wZXJ0aWVzOworICAgICAgICB0aGlzLl9wcm90b3R5cGVO
YW1lID0gcHJvdG90eXBlTmFtZTsKIAotICAgIGlmICh0aGlzLnByb3BlcnR5Lmhhc1ZhbHVlKCkp
IHsKLSAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUodGhpcy5wcm9wZXJ0eS52YWx1ZS50eXBlKTsK
LSAgICAgICAgaWYgKHRoaXMucHJvcGVydHkudmFsdWUuc3VidHlwZSkKLSAgICAgICAgICAgIHRo
aXMuYWRkQ2xhc3NOYW1lKHRoaXMucHJvcGVydHkudmFsdWUuc3VidHlwZSk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJhY2Nlc3NvciIpOworICAgICAgICB0aGlzLm1h
aW5UaXRsZSA9IHRoaXMuX3RpdGxlRnJhZ21lbnQoKTsKKyAgICAgICAgdGhpcy5hZGRDbGFzc05h
bWUoIm9iamVjdC10cmVlLXByb3BlcnR5Iik7CiAKLSAgICBpZiAodGhpcy5wcm9wZXJ0eS53YXNU
aHJvd24pCi0gICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJoYWQtZXJyb3IiKTsKLSAgICBpZiAo
dGhpcy5wcm9wZXJ0eS5uYW1lID09PSAiX19wcm90b19fIikKLSAgICAgICAgdGhpcy5hZGRDbGFz
c05hbWUoInByb3RvdHlwZS1wcm9wZXJ0eSIpOworICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5o
YXNWYWx1ZSgpKSB7CisgICAgICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSh0aGlzLnByb3BlcnR5
LnZhbHVlLnR5cGUpOworICAgICAgICAgICAgaWYgKHRoaXMucHJvcGVydHkudmFsdWUuc3VidHlw
ZSkKKyAgICAgICAgICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSh0aGlzLnByb3BlcnR5LnZhbHVl
LnN1YnR5cGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1l
KCJhY2Nlc3NvciIpOwogCi0gICAgdGhpcy5fdXBkYXRlVG9vbHRpcHMoKTsKLSAgICB0aGlzLl91
cGRhdGVIYXNDaGlsZHJlbigpOwotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0
eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgICAgICBpZiAodGhp
cy5wcm9wZXJ0eS53YXNUaHJvd24pCisgICAgICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgiaGFk
LWVycm9yIik7CisgICAgICAgIGlmICh0aGlzLnByb3BlcnR5Lm5hbWUgPT09ICJfX3Byb3RvX18i
KQorICAgICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoInByb3RvdHlwZS1wcm9wZXJ0eSIpOwog
CisgICAgICAgIHRoaXMuX3VwZGF0ZVRvb2x0aXBzKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUhh
c0NoaWxkcmVuKCk7CisgICAgfQorICAgIAogICAgIC8vIFByb3RlY3RlZAogCiAgICAgb25wb3B1
bGF0ZSgpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVDaGlsZHJlbigpOwotICAgIH0sCisg
ICAgfQogCiAgICAgb25leHBhbmQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3ByZXZpZXdW
aWV3KQogICAgICAgICAgICAgdGhpcy5fcHJldmlld1ZpZXcuc2hvd1RpdGxlKCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBvbmNvbGxhcHNlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9wcmV2
aWV3VmlldykKICAgICAgICAgICAgIHRoaXMuX3ByZXZpZXdWaWV3LnNob3dQcmV2aWV3KCk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBpbnZva2VkR2V0dGVyKCkKICAgICB7CkBAIC04NSw3ICs4Myw3
IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2xhc3NOYW1lKCJhY2Nlc3NvciIpOwogCiAgICAgICAg
IHRoaXMuX3VwZGF0ZUhhc0NoaWxkcmVuKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2
YXRlCiAKQEAgLTk5LDcgKzk3LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSAh
d2FzVGhyb3duICYmIHZhbHVlSGFzQ2hpbGRyZW47CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHRoaXMuaGFzQ2hpbGRyZW4gPSAhd2FzVGhyb3duICYmIHZhbHVlSGFzQ2hpbGRyZW4gJiYgKHRo
aXMucHJvcGVydHkubmFtZSA9PT0gIl9fcHJvdG9fXyIgfHwgdGhpcy5fYWx3YXlzRGlzcGxheUFz
UHJvcGVydHkoKSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfdXBkYXRlVG9vbHRpcHMoKQogICAg
IHsKQEAgLTExMyw3ICsxMTEsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgYXR0cmlidXRlcy5wdXNoKCJ3cml0
YWJsZSIpOwogCiAgICAgICAgIHRoaXMuaWNvbkVsZW1lbnQudGl0bGUgPSBhdHRyaWJ1dGVzLmpv
aW4oIiAiKTsKLSAgICB9LAorICAgIH0KIAogICAgIF90aXRsZUZyYWdtZW50KCkKICAgICB7CkBA
IC0xMjQsNyArMTIyLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUaXRsZVBy
b3BlcnR5U3R5bGUoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Ny
ZWF0ZVRpdGxlQVBJU3R5bGUoKTsKLSAgICB9LAorICAgIH0KIAogICAgIF9jcmVhdGVUaXRsZVBy
b3RvdHlwZSgpCiAgICAgewpAQCAtMTM2LDcgKzEzNCw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RU
cmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIG5hbWVFbGVtZW50
LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyBQcm90b3R5cGUiKS5mb3Jt
YXQodGhpcy5fc2FuaXRpemVkUHJvdG90eXBlU3RyaW5nKHRoaXMucHJvcGVydHkudmFsdWUpKTsK
ICAgICAgICAgbmFtZUVsZW1lbnQudGl0bGUgPSB0aGlzLnByb3BlcnR5UGF0aFN0cmluZyh0aGlz
LnRoaXNQcm9wZXJ0eVBhdGgoKSk7CiAgICAgICAgIHJldHVybiBuYW1lRWxlbWVudDsKLSAgICB9
LAorICAgIH0KIAogICAgIF9jcmVhdGVUaXRsZVByb3BlcnR5U3R5bGUoKQogICAgIHsKQEAgLTE4
NCw3ICsxODIsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobmFtZUVsZW1lbnQp
OwogICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQodmFsdWVPckdldHRlckVsZW1lbnQpOwog
ICAgICAgICByZXR1cm4gY29udGFpbmVyOwotICAgIH0sCisgICAgfQogCiAgICAgX2NyZWF0ZVRp
dGxlQVBJU3R5bGUoKQogICAgIHsKQEAgLTIyMCw3ICsyMTgsNyBAQCBXZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIGNvbnRhaW5lcjsKLSAgICB9LAorICAgIH0KIAogICAgIF9hbHdheXNEaXNw
bGF5QXNQcm9wZXJ0eSgpCiAgICAgewpAQCAtMjM3LDEyICsyMzUsMTIgQEAgV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIF9mdW5jdGlvblByb3BlcnR5U3RyaW5nKCkKICAgICB7CiAgICAgICAgIHJldHVybiAiZnVu
Y3Rpb24iICsgdGhpcy5fZnVuY3Rpb25QYXJhbWV0ZXJTdHJpbmcoKTsKLSAgICB9LAorICAgIH0K
IAogICAgIF9mdW5jdGlvblBhcmFtZXRlclN0cmluZygpCiAgICAgewpAQCAtMjgzLDcgKzI4MSw3
IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgdmFyIG1hdGNoID0gcmVzb2x2ZWRWYWx1ZS5kZXNjcmlwdGlvbi5tYXRj
aCgvXmZ1bmN0aW9uLio/KFwoW14pXSs/XCkpLyk7CiAgICAgICAgIHJldHVybiBtYXRjaCA/IG1h
dGNoWzFdIDogIigpIjsKLSAgICB9LAorICAgIH0KIAogICAgIF9zYW5pdGl6ZWRQcm90b3R5cGVT
dHJpbmcodmFsdWUpCiAgICAgewpAQCAtMjk2LDcgKzI5NCw3IEBAIFdlYkluc3BlY3Rvci5PYmpl
Y3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1
cm4gIlJlZ0V4cCI7CiAKICAgICAgICAgcmV0dXJuIHZhbHVlLmRlc2NyaXB0aW9uLnJlcGxhY2Uo
L1Byb3RvdHlwZSQvLCAiIik7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfdXBkYXRlQ2hpbGRyZW4o
KQogICAgIHsKQEAgLTMxMCwyMCArMzA4LDIwIEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJv
cGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXNvbHZlZFZhbHVl
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModGhpcy5fdXBkYXRlQ2hpbGRyZW5JbnRlcm5hbC5i
aW5kKHRoaXMsIHRoaXMuX3VwZGF0ZVByb3BlcnRpZXMsIFdlYkluc3BlY3Rvci5PYmplY3RUcmVl
Vmlldy5Nb2RlLkFQSSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXNvbHZlZFZhbHVl
LmdldERpc3BsYXlhYmxlUHJvcGVydHlEZXNjcmlwdG9ycyh0aGlzLl91cGRhdGVDaGlsZHJlbklu
dGVybmFsLmJpbmQodGhpcywgdGhpcy5fdXBkYXRlUHJvcGVydGllcywgdGhpcy5fbW9kZSkpOwot
ICAgIH0sCisgICAgfQogCiAgICAgX3VwZGF0ZUNoaWxkcmVuSW50ZXJuYWwoaGFuZGxlciwgbW9k
ZSwgbGlzdCkKICAgICB7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgICAg
ICBpZiAoIWxpc3QpIHsKLSAgICAgICAgICAgIHZhciBlcnJvck1lc3NhZ2VFbGVtZW50ID0gV2Vi
SW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LmVtcHR5TWVzc2FnZUVsZW1lbnQoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDb3VsZCBub3QgZmV0Y2ggcHJvcGVydGllcy4gT2JqZWN0IG1heSBubyBsb25n
ZXIgZXhpc3QuIikpOwotICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChuZXcgVHJlZUVsZW1l
bnQoZXJyb3JNZXNzYWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKKyAgICAgICAgICAgIHZhciBl
cnJvck1lc3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LmNyZWF0ZUVt
cHR5TWVzc2FnZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb3VsZCBub3QgZmV0Y2gg
cHJvcGVydGllcy4gT2JqZWN0IG1heSBubyBsb25nZXIgZXhpc3QuIikpOworICAgICAgICAgICAg
dGhpcy5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50KGVycm9yTWVzc2Fn
ZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAogICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgbGlzdCwgdGhpcy5yZXNvbHZlZFZhbHVlUHJv
cGVydHlQYXRoKCksIG1vZGUpOwotICAgIH0sCisgICAgfQogCiAgICAgX3VwZGF0ZUVudHJpZXMo
ZW50cmllcywgcHJvcGVydHlQYXRoLCBtb2RlKQogICAgIHsKQEAgLTMzNiw4ICszMzQsOCBAQCBX
ZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCF0aGlzLmNoaWxkcmVuLmxlbmd0aCkgewotICAgICAg
ICAgICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZp
ZXcuZW1wdHlNZXNzYWdlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIEVudHJpZXMu
IikpOwotICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChuZXcgVHJlZUVsZW1lbnQoZW1wdHlN
ZXNzYWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKKyAgICAgICAgICAgIHZhciBlbXB0eU1lc3Nh
Z2VFbGVtZW50ID0gV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LmNyZWF0ZUVtcHR5TWVzc2Fn
ZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBFbnRyaWVzLiIpKTsKKyAgICAgICAg
ICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudChlbXB0eU1l
c3NhZ2VFbGVtZW50LCBudWxsLCBmYWxzZSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gU2hv
dyB0aGUgcHJvdG90eXBlIHNvIHVzZXJzIGNhbiBzZWUgdGhlIEFQSS4KQEAgLTM0NiwxMSArMzQ0
LDExIEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBpZiAocHJvcGVydHlEZXNjcmlwdG9yKQogICAgICAgICAgICAg
ICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlU
cmVlRWxlbWVudChwcm9wZXJ0eURlc2NyaXB0b3IsIHByb3BlcnR5UGF0aCwgbW9kZSkpOwogICAg
ICAgICB9LmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCiAgICAgX3VwZGF0ZVByb3BlcnRp
ZXMocHJvcGVydGllcywgcHJvcGVydHlQYXRoLCBtb2RlKQogICAgIHsKLSAgICAgICAgcHJvcGVy
dGllcy5zb3J0KFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5Db21wYXJlUHJvcGVydHlEZXNj
cmlwdG9ycyk7CisgICAgICAgIHByb3BlcnRpZXMuc29ydChXZWJJbnNwZWN0b3IuT2JqZWN0VHJl
ZVZpZXcuY29tcGFyZVByb3BlcnR5RGVzY3JpcHRvcnMpOwogCiAgICAgICAgIHZhciByZXNvbHZl
ZFZhbHVlID0gdGhpcy5yZXNvbHZlZFZhbHVlKCk7CiAgICAgICAgIHZhciBpc0FycmF5ID0gcmVz
b2x2ZWRWYWx1ZS5pc0FycmF5KCk7CkBAIC0zODAsOCArMzc4LDggQEAgV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghdGhpcy5jaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciBlbXB0
eU1lc3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LmVtcHR5TWVzc2Fn
ZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBQcm9wZXJ0aWVzLiIpKTsKLSAgICAg
ICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFRyZWVFbGVtZW50KGVtcHR5TWVzc2FnZUVsZW1l
bnQsIG51bGwsIGZhbHNlKSk7CisgICAgICAgICAgICB2YXIgZW1wdHlNZXNzYWdlRWxlbWVudCA9
IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5jcmVhdGVFbXB0eU1lc3NhZ2VFbGVtZW50KFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiTm8gUHJvcGVydGllcy4iKSk7CisgICAgICAgICAgICB0aGlz
LmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoZW1wdHlNZXNzYWdlRWxl
bWVudCwgbnVsbCwgZmFsc2UpKTsKICAgICAgICAgfQogICAgIH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlU2V0SW5k
ZXhUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL09iamVjdFRyZWVTZXRJbmRleFRyZWVFbGVtZW50LmpzCmluZGV4IDc4NWRhNjA5ZDk2MmY1
ZWRkY2I0NmFjMWJlMWJjZThjNWUyMTM0Y2EuLjQzMzM0MTJiNjFmNDlhOTZmMGFiYzEwZjJhN2Yw
NDM0YTdlNDA3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL09iamVjdFRyZWVTZXRJbmRleFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVTZXRJbmRleFRyZWVF
bGVtZW50LmpzCkBAIC0yMyw0MSArMjMsMzkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVNldEluZGV4VHJlZUVsZW1l
bnQgPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5UGF0aCkKK1dlYkluc3BlY3Rvci5PYmplY3RU
cmVlU2V0SW5kZXhUcmVlRWxlbWVudCA9IGNsYXNzIE9iamVjdFRyZWVTZXRJbmRleFRyZWVFbGVt
ZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQKIHsKLSAg
ICBjb25zb2xlLmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2Jq
ZWN0KTsKLQotICAgIHRoaXMuX29iamVjdCA9IG9iamVjdDsKKyAgICBjb25zdHJ1Y3RvcihvYmpl
Y3QsIHByb3BlcnR5UGF0aCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpOwogCi0gICAgLy8gVHJlYXQgdGhl
IHNhbWUgYXMgYW4gYXJyYXktaW5kZXgganVzdCB3aXRoIGRpZmZlcmVudCBzdHJpbmdzIGFuZCB3
aWR0aHMuCi0gICAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuY2FsbCh0
aGlzLCB0aGlzLl9vYmplY3QsIHByb3BlcnR5UGF0aCk7CisgICAgICAgIC8vIFRyZWF0IHRoZSBz
YW1lIGFzIGFuIGFycmF5LWluZGV4IGp1c3Qgd2l0aCBkaWZmZXJlbnQgc3RyaW5ncyBhbmQgd2lk
dGhzLgorICAgICAgICBzdXBlcih0aGlzLl9vYmplY3QsIHByb3BlcnR5UGF0aCk7CiAKLSAgICB0
aGlzLm1haW5UaXRsZSA9IHRoaXMuX3RpdGxlRnJhZ21lbnQoKTsKLSAgICB0aGlzLmFkZENsYXNz
TmFtZSgib2JqZWN0LXRyZWUtYXJyYXktaW5kZXgiKTsKLX07CisgICAgICAgIHRoaXMuX29iamVj
dCA9IG9iamVjdDsKIAotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVTZXRJbmRleFRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVT
ZXRJbmRleFRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdFRy
ZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgICAgICB0aGlzLm1haW5UaXRsZSA9IHRo
aXMuX3RpdGxlRnJhZ21lbnQoKTsKKyAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoIm9iamVjdC10
cmVlLWFycmF5LWluZGV4Iik7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgb2Jq
ZWN0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3Q7Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIHJlc29sdmVkVmFsdWUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX29iamVjdDsKLSAgICB9LAorICAgIH0KIAogICAgIHJlc29sdmVkVmFs
dWVQcm9wZXJ0eVBhdGgoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydHlQYXRo
LmFwcGVuZFNldEluZGV4KHRoaXMuX29iamVjdCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQ
cml2YXRlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanMKaW5kZXggMGQ1NTNkMDViZjc0OTRjZWRmNDkx
ZWE3NWM0NjA3NjBhMjkzY2FhMi4uYjNiNjEzYWExYzc3ZTJjYzliZTJhN2U5YTBjYThmNjUxZDJi
ZmVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvT2JqZWN0VHJlZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanMKQEAgLTY0LDcgKzY0LDcgQEAgV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVWaWV3ID0gZnVuY3Rpb24ob2JqZWN0LCBtb2RlLCBwcm9wZXJ0eVBhdGgs
IGZvcmNlRXhwYW5kaW4KIAogICAgIHRoaXMuX291dGxpbmVFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgib2wiKTsKICAgICB0aGlzLl9vdXRsaW5lRWxlbWVudC5jbGFzc05hbWUgPSAi
b2JqZWN0LXRyZWUtb3V0bGluZSI7Ci0gICAgdGhpcy5fb3V0bGluZSA9IG5ldyBUcmVlT3V0bGlu
ZSh0aGlzLl9vdXRsaW5lRWxlbWVudCk7CisgICAgdGhpcy5fb3V0bGluZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuVHJlZU91dGxpbmUodGhpcy5fb3V0bGluZUVsZW1lbnQpOwogICAgIHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fb3V0bGluZUVsZW1lbnQpOwogCiAgICAgLy8gRklYTUU6IFN1
cHBvcnQgZWRpdGFibGUgT2JqZWN0VHJlZXMuCkBAIC0yMzMsNyArMjMzLDcgQEAgV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIWxpc3QpIHsK
ICAgICAgICAgICAgIHZhciBlcnJvck1lc3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVWaWV3LmVtcHR5TWVzc2FnZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb3Vs
ZCBub3QgZmV0Y2ggcHJvcGVydGllcy4gT2JqZWN0IG1heSBubyBsb25nZXIgZXhpc3QuIikpOwot
ICAgICAgICAgICAgdGhpcy5fb3V0bGluZS5hcHBlbmRDaGlsZChuZXcgVHJlZUVsZW1lbnQoZXJy
b3JNZXNzYWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKKyAgICAgICAgICAgIHRoaXMuX291dGxp
bmUuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudChlcnJvck1lc3NhZ2VF
bGVtZW50LCBudWxsLCBmYWxzZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTI1Miw3ICsyNTIsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgICAgIGlmICghdGhpcy5fb3V0bGluZS5jaGlsZHJlbi5sZW5ndGgpIHsKICAg
ICAgICAgICAgIHZhciBlbXB0eU1lc3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVjdG9yLk9iamVjdFRy
ZWVWaWV3LmVtcHR5TWVzc2FnZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBFbnRy
aWVzLiIpKTsKLSAgICAgICAgICAgIHRoaXMuX291dGxpbmUuYXBwZW5kQ2hpbGQobmV3IFRyZWVF
bGVtZW50KGVtcHR5TWVzc2FnZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CisgICAgICAgICAgICB0
aGlzLl9vdXRsaW5lLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoZW1w
dHlNZXNzYWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IFNob3cgdGhlIHByb3RvdHlwZSBzbyB1c2VycyBjYW4gc2VlIHRoZSBBUEkuCkBAIC0yODQsNyAr
Mjg0LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBpZiAoIXRoaXMuX291dGxpbmUuY2hpbGRyZW4ubGVuZ3RoKSB7CiAgICAgICAgICAgICB2
YXIgZW1wdHlNZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5lbXB0
eU1lc3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gUHJvcGVydGllcy4iKSk7
Ci0gICAgICAgICAgICB0aGlzLl9vdXRsaW5lLmFwcGVuZENoaWxkKG5ldyBUcmVlRWxlbWVudChl
bXB0eU1lc3NhZ2VFbGVtZW50LCBudWxsLCBmYWxzZSkpOworICAgICAgICAgICAgdGhpcy5fb3V0
bGluZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50KGVtcHR5TWVzc2Fn
ZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CiAgICAgICAgIH0KICAgICB9LAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9maWxlTm9kZVRy
ZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
UHJvZmlsZU5vZGVUcmVlRWxlbWVudC5qcwppbmRleCAxMWFiMjQ5YTI3NmJjODAyOGY0NTAxZmFi
OGRhM2JiNmRlNjRiNmI0Li4yMmJiZjk0OWVhYWMyNGE5M2VkYTA3ZjliZDg5ZjA3ZGIzYjQ5ZTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Q
cm9maWxlTm9kZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Byb2ZpbGVOb2RlVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMTA1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsODcgKzIzLDg1IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
LlByb2ZpbGVOb2RlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihwcm9maWxlTm9kZSwgZGVsZWdhdGUp
CitXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVUcmVlRWxlbWVudCA9IGNsYXNzIFByb2ZpbGVOb2Rl
VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7Ci0g
ICAgY29uc29sZS5hc3NlcnQocHJvZmlsZU5vZGUpOworICAgIGNvbnN0cnVjdG9yKHByb2ZpbGVO
b2RlLCBkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2ZpbGVOb2Rl
KTsKKworICAgICAgICB2YXIgdGl0bGUgPSBwcm9maWxlTm9kZS5mdW5jdGlvbk5hbWU7CisgICAg
ICAgIHZhciBzdWJ0aXRsZSA9ICIiOworCisgICAgICAgIGlmICghdGl0bGUpIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAocHJvZmlsZU5vZGUudHlwZSkgeworICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuUHJvZmlsZU5vZGUuVHlwZS5GdW5jdGlvbjoKKyAgICAgICAgICAgICAgICB0aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGFub255bW91cyBmdW5jdGlvbikiKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2Rl
LlR5cGUuUHJvZ3JhbToKKyAgICAgICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiKHByb2dyYW0pIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIo
YW5vbnltb3VzIGZ1bmN0aW9uKSIpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVu
a25vd24gUHJvZmlsZU5vZGUgdHlwZTogIiArIHByb2ZpbGVOb2RlLnR5cGUpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CiAKLSAgICB0aGlzLl9wcm9maWxlTm9kZSA9IHByb2ZpbGVOb2RlOwot
ICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKKyAgICAgICAgdmFyIHNvdXJj
ZUNvZGVMb2NhdGlvbiA9IHByb2ZpbGVOb2RlLnNvdXJjZUNvZGVMb2NhdGlvbjsKKyAgICAgICAg
aWYgKHNvdXJjZUNvZGVMb2NhdGlvbikgeworICAgICAgICAgICAgc3VidGl0bGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24u
cG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uU3RyaW5nKHN1YnRpdGxlLCAidGV4dENvbnRlbnQi
KTsKKyAgICAgICAgfQogCi0gICAgdmFyIHRpdGxlID0gcHJvZmlsZU5vZGUuZnVuY3Rpb25OYW1l
OwotICAgIHZhciBzdWJ0aXRsZSA9ICIiOworICAgICAgICB2YXIgY2xhc3NOYW1lOwogCi0gICAg
aWYgKCF0aXRsZSkgewogICAgICAgICBzd2l0Y2ggKHByb2ZpbGVOb2RlLnR5cGUpIHsKICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZS5GdW5jdGlvbjoKLSAgICAgICAg
ICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoYW5vbnltb3VzIGZ1bmN0aW9uKSIp
OworICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVt
ZW50LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgaWYgKCFzb3VyY2VD
b2RlTG9jYXRpb24pCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNh
bGxGcmFtZVRyZWVFbGVtZW50Lk5hdGl2ZUljb25TdHlsZUNsYXNzTmFtZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlLlByb2dy
YW06Ci0gICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHByb2dyYW0p
Iik7CisgICAgICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRU
cmVlRWxlbWVudC5FdmFsdWF0ZWRSZWNvcmRJY29uU3R5bGVDbGFzczsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdGl0bGUgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIik7Ci0gICAgICAgICAgICBjb25zb2xlLmVy
cm9yKCJVbmtub3duIFByb2ZpbGVOb2RlIHR5cGU6ICIgKyBwcm9maWxlTm9kZS50eXBlKTsKICAg
ICAgICAgfQotICAgIH0KIAotICAgIHZhciBzb3VyY2VDb2RlTG9jYXRpb24gPSB0aGlzLl9wcm9m
aWxlTm9kZS5zb3VyY2VDb2RlTG9jYXRpb247Ci0gICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlvbikg
ewotICAgICAgICBzdWJ0aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAg
ICAgICAgc291cmNlQ29kZUxvY2F0aW9uLnBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlvblN0cmlu
ZyhzdWJ0aXRsZSwgInRleHRDb250ZW50Iik7Ci0gICAgfQotCi0gICAgdmFyIGNsYXNzTmFtZTsK
LQotICAgIHN3aXRjaCAodGhpcy5fcHJvZmlsZU5vZGUudHlwZSkgewotICAgIGNhc2UgV2ViSW5z
cGVjdG9yLlByb2ZpbGVOb2RlLlR5cGUuRnVuY3Rpb246Ci0gICAgICAgIGNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVudC5GdW5jdGlvbkljb25TdHlsZUNsYXNzTmFt
ZTsKLSAgICAgICAgaWYgKCFzb3VyY2VDb2RlTG9jYXRpb24pCi0gICAgICAgICAgICBjbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuTmF0aXZlSWNvblN0eWxlQ2xh
c3NOYW1lOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9k
ZS5UeXBlLlByb2dyYW06Ci0gICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZFRyZWVFbGVtZW50LkV2YWx1YXRlZFJlY29yZEljb25TdHlsZUNsYXNzOwotICAgICAg
ICBicmVhazsKLSAgICB9CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNsYXNzTmFtZSk7CiAKLSAg
ICBjb25zb2xlLmFzc2VydChjbGFzc05hbWUpOworICAgICAgICAvLyBUaGlzIGlzIG1vcmUgdGhh
biBsaWtlbHkgYW4gZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb24gd2l0aCBhbiAib24iIHByZWZpeCBh
bmQgaXQgaXMKKyAgICAgICAgLy8gYXMgbG9uZyBvciBsb25nZXIgdGhhbiB0aGUgc2hvcnRlc3Qg
ZXZlbnQgbGlzdGVuZXIgbmFtZSAtLSAib25jdXQiLgorICAgICAgICBpZiAocHJvZmlsZU5vZGUu
ZnVuY3Rpb25OYW1lICYmIHByb2ZpbGVOb2RlLmZ1bmN0aW9uTmFtZS5zdGFydHNXaXRoKCJvbiIp
ICYmIHByb2ZpbGVOb2RlLmZ1bmN0aW9uTmFtZS5sZW5ndGggPj0gNSkKKyAgICAgICAgICAgIGNs
YXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVudC5FdmVudExpc3RlbmVy
SWNvblN0eWxlQ2xhc3NOYW1lOwogCi0gICAgLy8gVGhpcyBpcyBtb3JlIHRoYW4gbGlrZWx5IGFu
IGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9uIHdpdGggYW4gIm9uIiBwcmVmaXggYW5kIGl0IGlzCi0g
ICAgLy8gYXMgbG9uZyBvciBsb25nZXIgdGhhbiB0aGUgc2hvcnRlc3QgZXZlbnQgbGlzdGVuZXIg
bmFtZSAtLSAib25jdXQiLgotICAgIGlmIChwcm9maWxlTm9kZS5mdW5jdGlvbk5hbWUgJiYgcHJv
ZmlsZU5vZGUuZnVuY3Rpb25OYW1lLnN0YXJ0c1dpdGgoIm9uIikgJiYgcHJvZmlsZU5vZGUuZnVu
Y3Rpb25OYW1lLmxlbmd0aCA+PSA1KQotICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3Iu
Q2FsbEZyYW1lVHJlZUVsZW1lbnQuRXZlbnRMaXN0ZW5lckljb25TdHlsZUNsYXNzTmFtZTsKKyAg
ICAgICAgdmFyIGhhc0NoaWxkcmVuID0gISFwcm9maWxlTm9kZS5jaGlsZE5vZGVzLmxlbmd0aDsK
IAotICAgIHZhciBoYXNDaGlsZHJlbiA9ICEhcHJvZmlsZU5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7
CisgICAgICAgIHN1cGVyKFtjbGFzc05hbWVdLCB0aXRsZSwgc3VidGl0bGUsIHByb2ZpbGVOb2Rl
LCBoYXNDaGlsZHJlbik7CiAKLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNh
bGwodGhpcywgW2NsYXNzTmFtZV0sIHRpdGxlLCBzdWJ0aXRsZSwgcHJvZmlsZU5vZGUsIGhhc0No
aWxkcmVuKTsKKyAgICAgICAgdGhpcy5fcHJvZmlsZU5vZGUgPSBwcm9maWxlTm9kZTsKKyAgICAg
ICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOwogCi0gICAgdGhpcy5zbWFsbCA9
IHRydWU7Ci0gICAgdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB0cnVlOworICAgICAgICB0
aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB0
cnVlOwogCi0gICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlvbikKLSAgICAgICAgdGhpcy50b29sdGlw
SGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwotfTsKLQotV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2Rl
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
UHJvZmlsZU5vZGVUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5HZW5l
cmFsVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgICAgICBpZiAoc291cmNlQ29kZUxvY2F0aW9u
KQorICAgICAgICAgICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOworICAg
IH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHByb2ZpbGVOb2RlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9wcm9maWxlTm9kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBm
aWx0ZXJhYmxlRGF0YSgpCiAgICAgewogICAgICAgICB2YXIgdXJsID0gdGhpcy5fcHJvZmlsZU5v
ZGUuc291cmNlQ29kZUxvY2F0aW9uID8gdGhpcy5fcHJvZmlsZU5vZGUuc291cmNlQ29kZUxvY2F0
aW9uLnNvdXJjZUNvZGUudXJsIDogIiI7CiAgICAgICAgIHJldHVybiB7dGV4dDogW3RoaXMubWFp
blRpdGxlLCB1cmwgfHwgIiJdfTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAog
Ci0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICBvbmF0dGFjaCgpCiAgICAgewogICAgICAg
ICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxs
KHRoaXMpOwogCkBAIC0xMTQsOSArMTEyLDkgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlVHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciB0b29sdGlwUHJlZml4ID0gdGhp
cy5tYWluVGl0bGUgKyAiXG4iOwogICAgICAgICB0aGlzLl9wcm9maWxlTm9kZS5zb3VyY2VDb2Rl
TG9jYXRpb24ucG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uVG9vbHRpcCh0aGlzLmVsZW1lbnQs
IHRvb2x0aXBQcmVmaXgpOwotICAgIH0sCisgICAgfQogCi0gICAgb25wb3B1bGF0ZTogZnVuY3Rp
b24oKQorICAgIG9ucG9wdWxhdGUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxk
cmVuIHx8ICF0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbikKICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1By
b3BlcnRpZXNTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUHJvcGVydGllc1NlY3Rpb24uanMKaW5kZXggNTcxNDcyYjE0ZmY5NmQ5NjlmMDhhYzgy
NDhiOTg3MmJmNTI5NTZjNC4uMzQ3N2NjNWVhNWQwNTNkNWUwN2ZiMDFiMDliZmIzMzBhODRhNGY0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
UHJvcGVydGllc1NlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUHJvcGVydGllc1NlY3Rpb24uanMKQEAgLTI4LDcgKzI4LDcgQEAgV2ViSW5z
cGVjdG9yLlByb3BlcnRpZXNTZWN0aW9uID0gZnVuY3Rpb24odGl0bGUsIHN1YnRpdGxlKQogICAg
IHRoaXMucHJvcGVydGllc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwog
ICAgIHRoaXMucHJvcGVydGllc0VsZW1lbnQuY2xhc3NOYW1lID0gInByb3BlcnRpZXMgcHJvcGVy
dGllcy10cmVlIjsKICAgICB0aGlzLnByb3BlcnRpZXNFbGVtZW50LnRhYkluZGV4ID0gMDsKLSAg
ICB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZSh0aGlzLnByb3Bl
cnRpZXNFbGVtZW50KTsKKyAgICB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuVHJlZU91dGxpbmUodGhpcy5wcm9wZXJ0aWVzRWxlbWVudCk7CiAgICAgdGhpcy5w
cm9wZXJ0aWVzVHJlZU91dGxpbmUuc2VjdGlvbiA9IHRoaXM7CiAKICAgICBXZWJJbnNwZWN0b3Iu
U2VjdGlvbi5jYWxsKHRoaXMsIHRpdGxlLCBzdWJ0aXRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRyZWVFbGVtZW50Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUcmVl
RWxlbWVudC5qcwppbmRleCBiODA5OGE5NTgxMTBlZjMxYjIwNjkzNmY2ZTQxN2I4ZTZmY2EzZjM3
Li5lODg4ZTgxYjY4Y2EyY2Y4NjAwNzRhNGQyOTYzNTBkYTA0NzYwZmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRyZWVFbGVt
ZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jl
c291cmNlVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDgxICsyMyw3NyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50
ID0gZnVuY3Rpb24ocmVzb3VyY2UsIHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZUVsZW1lbnQgPSBjbGFzcyBSZXNvdXJjZVRyZWVFbGVtZW50IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGVUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJl
c291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKTsKLQotICAgIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCByZXNvdXJjZSwgW1dlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlRWxlbWVudC5SZXNvdXJjZUljb25TdHlsZUNsYXNzTmFtZSwgcmVzb3VyY2UudHlw
ZV0sICIiLCAiIiwgcmVwcmVzZW50ZWRPYmplY3QgfHwgcmVzb3VyY2UsIGZhbHNlKTsKKyAgICBj
b25zdHJ1Y3RvcihyZXNvdXJjZSwgcmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSk7
CiAKLSAgICB0aGlzLl91cGRhdGVSZXNvdXJjZShyZXNvdXJjZSk7Ci19OworICAgICAgICBzdXBl
cihyZXNvdXJjZSwgWyJyZXNvdXJjZSIsIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50
LlJlc291cmNlSWNvblN0eWxlQ2xhc3NOYW1lLCByZXNvdXJjZS50eXBlXSwgIiIsICIiLCByZXBy
ZXNlbnRlZE9iamVjdCB8fCByZXNvdXJjZSwgZmFsc2UpOwogCi1XZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSA9ICJyZXNvdXJjZSI7Ci1XZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlRWxlbWVudC5SZXNvdXJjZUljb25TdHlsZUNsYXNzTmFtZSA9ICJyZXNvdXJj
ZS1pY29uIjsKLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LkZhaWxlZFN0eWxlQ2xh
c3NOYW1lID0gImZhaWxlZCI7CisgICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlKHJlc291cmNl
KTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LmNvbXBhcmVSZXNv
dXJjZVRyZWVFbGVtZW50cyA9IGZ1bmN0aW9uKGEsIGIpCi17Ci0gICAgLy8gQ29tcGFyZSBieSB0
eXBlIGZpcnN0IHRvIGtlZXAgcmVzb3VyY2VzIGdyb3VwZWQgYnkgdHlwZSB3aGVuIG5vdCBzb3J0
ZWQgaW50byBmb2xkZXJzLgotICAgIHZhciBjb21wYXJpc29uUmVzdWx0ID0gYS5yZXNvdXJjZS50
eXBlLmxvY2FsZUNvbXBhcmUoYi5yZXNvdXJjZS50eXBlKTsKLSAgICBpZiAoY29tcGFyaXNvblJl
c3VsdCAhPT0gMCkKLSAgICAgICAgcmV0dXJuIGNvbXBhcmlzb25SZXN1bHQ7Ci0KLSAgICAvLyBD
b21wYXJlIGFzeW5jIHJlc291cmNlIHR5cGVzIGJ5IHRoZWlyIGZpcnN0IHRpbWVzdGFtcCBzbyB0
aGV5IGFyZSBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyLgotICAgIGlmIChhLnJlc291cmNlLnR5cGUg
PT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlhIUiB8fCBhLnJlc291cmNlLnR5cGUgPT09
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLldlYlNvY2tldCkKLSAgICAgICAgcmV0dXJuIGEu
cmVzb3VyY2UuZmlyc3RUaW1lc3RhbXAgLSBiLnJlc291cmNlLmZpcnN0VGltZXN0YW1wIHx8IDA7
Ci0KLSAgICAvLyBDb21wYXJlIGJ5IHN1YnRpdGxlIHdoZW4gdGhlIHR5cGVzIGFyZSB0aGUgc2Ft
ZS4gVGhlIHN1YnRpdGxlIGlzIHVzZWQgdG8gc2hvdyB0aGUKLSAgICAvLyBkb21haW4gb2YgdGhl
IHJlc291cmNlLiBUaGlzIGNhdXNlcyByZXNvdXJjZXMgdG8gZ3JvdXAgYnkgZG9tYWluLiBJZiB0
aGUgcmVzb3VyY2UKLSAgICAvLyBpcyBvbiB0aGUgc2FtZSBkb21haW4gYXMgdGhlIGZyYW1lIGl0
IHdpbGwgaGF2ZSBhbiBlbXB0eSBzdWJ0aXRsZS4gVGhpcyBpcyBnb29kCi0gICAgLy8gYmVjYXVz
ZSBlbXB0eSBzdHJpbmcgc29ydHMgZmlyc3QsIHNvIHRob3NlIHdpbGwgYXBwZWFyIGJlZm9yZSBl
eHRlcm5hbCByZXNvdXJjZXMuCi0gICAgY29tcGFyaXNvblJlc3VsdCA9IGEuc3VidGl0bGUubG9j
YWxlQ29tcGFyZShiLnN1YnRpdGxlKTsKLSAgICBpZiAoY29tcGFyaXNvblJlc3VsdCAhPT0gMCkK
LSAgICAgICAgcmV0dXJuIGNvbXBhcmlzb25SZXN1bHQ7Ci0KLSAgICAvLyBDb21wYXJlIGJ5IHRp
dGxlIHdoZW4gdGhlIHN1YnRpdGxlcyBhcmUgdGhlIHNhbWUuCi0gICAgcmV0dXJuIGEubWFpblRp
dGxlLmxvY2FsZUNvbXBhcmUoYi5tYWluVGl0bGUpOwotfTsKKyAgICAvLyBTdGF0aWMKIAotV2Vi
SW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuY29tcGFyZUZvbGRlckFuZFJlc291cmNlVHJl
ZUVsZW1lbnRzID0gZnVuY3Rpb24oYSwgYikKLXsKLSAgICB2YXIgYUlzRm9sZGVyID0gYSBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudDsKLSAgICB2YXIgYklzRm9sZGVy
ID0gYiBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudDsKLQotICAgIGlm
IChhSXNGb2xkZXIgJiYgIWJJc0ZvbGRlcikKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmICgh
YUlzRm9sZGVyICYmIGJJc0ZvbGRlcikKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgaWYgKGFJc0Zv
bGRlciAmJiBiSXNGb2xkZXIpCisgICAgc3RhdGljIGNvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50
cyhhLCBiKQorICAgIHsKKyAgICAgICAgLy8gQ29tcGFyZSBieSB0eXBlIGZpcnN0IHRvIGtlZXAg
cmVzb3VyY2VzIGdyb3VwZWQgYnkgdHlwZSB3aGVuIG5vdCBzb3J0ZWQgaW50byBmb2xkZXJzLgor
ICAgICAgICB2YXIgY29tcGFyaXNvblJlc3VsdCA9IGEucmVzb3VyY2UudHlwZS5sb2NhbGVDb21w
YXJlKGIucmVzb3VyY2UudHlwZSk7CisgICAgICAgIGlmIChjb21wYXJpc29uUmVzdWx0ICE9PSAw
KQorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmlzb25SZXN1bHQ7CisKKyAgICAgICAgLy8gQ29t
cGFyZSBhc3luYyByZXNvdXJjZSB0eXBlcyBieSB0aGVpciBmaXJzdCB0aW1lc3RhbXAgc28gdGhl
eSBhcmUgaW4gY2hyb25vbG9naWNhbCBvcmRlci4KKyAgICAgICAgaWYgKGEucmVzb3VyY2UudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuWEhSIHx8IGEucmVzb3VyY2UudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuV2ViU29ja2V0KQorICAgICAgICAgICAgcmV0
dXJuIGEucmVzb3VyY2UuZmlyc3RUaW1lc3RhbXAgLSBiLnJlc291cmNlLmZpcnN0VGltZXN0YW1w
IHx8IDA7CisKKyAgICAgICAgLy8gQ29tcGFyZSBieSBzdWJ0aXRsZSB3aGVuIHRoZSB0eXBlcyBh
cmUgdGhlIHNhbWUuIFRoZSBzdWJ0aXRsZSBpcyB1c2VkIHRvIHNob3cgdGhlCisgICAgICAgIC8v
IGRvbWFpbiBvZiB0aGUgcmVzb3VyY2UuIFRoaXMgY2F1c2VzIHJlc291cmNlcyB0byBncm91cCBi
eSBkb21haW4uIElmIHRoZSByZXNvdXJjZQorICAgICAgICAvLyBpcyBvbiB0aGUgc2FtZSBkb21h
aW4gYXMgdGhlIGZyYW1lIGl0IHdpbGwgaGF2ZSBhbiBlbXB0eSBzdWJ0aXRsZS4gVGhpcyBpcyBn
b29kCisgICAgICAgIC8vIGJlY2F1c2UgZW1wdHkgc3RyaW5nIHNvcnRzIGZpcnN0LCBzbyB0aG9z
ZSB3aWxsIGFwcGVhciBiZWZvcmUgZXh0ZXJuYWwgcmVzb3VyY2VzLgorICAgICAgICBjb21wYXJp
c29uUmVzdWx0ID0gYS5zdWJ0aXRsZS5sb2NhbGVDb21wYXJlKGIuc3VidGl0bGUpOworICAgICAg
ICBpZiAoY29tcGFyaXNvblJlc3VsdCAhPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJp
c29uUmVzdWx0OworCisgICAgICAgIC8vIENvbXBhcmUgYnkgdGl0bGUgd2hlbiB0aGUgc3VidGl0
bGVzIGFyZSB0aGUgc2FtZS4KICAgICAgICAgcmV0dXJuIGEubWFpblRpdGxlLmxvY2FsZUNvbXBh
cmUoYi5tYWluVGl0bGUpOworICAgIH0KIAotICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlRWxlbWVudC5jb21wYXJlUmVzb3VyY2VUcmVlRWxlbWVudHMoYSwgYik7Ci19OworICAg
IHN0YXRpYyBjb21wYXJlRm9sZGVyQW5kUmVzb3VyY2VUcmVlRWxlbWVudHMoYSwgYikKKyAgICB7
CisgICAgICAgIHZhciBhSXNGb2xkZXIgPSBhIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZvbGRl
clRyZWVFbGVtZW50OworICAgICAgICB2YXIgYklzRm9sZGVyID0gYiBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudDsKIAotV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJl
ZUVsZW1lbnQucHJvdG90eXBlLAorICAgICAgICBpZiAoYUlzRm9sZGVyICYmICFiSXNGb2xkZXIp
CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmICghYUlzRm9sZGVyICYmIGJJc0Zv
bGRlcikKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBpZiAoYUlzRm9sZGVyICYmIGJJ
c0ZvbGRlcikKKyAgICAgICAgICAgIHJldHVybiBhLm1haW5UaXRsZS5sb2NhbGVDb21wYXJlKGIu
bWFpblRpdGxlKTsKKworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVs
ZW1lbnQuY29tcGFyZVJlc291cmNlVHJlZUVsZW1lbnRzKGEsIGIpOworICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IHJlc291cmNlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9yZXNvdXJjZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmaWx0ZXJhYmxlRGF0YSgpCiAg
ICAgewogICAgICAgICByZXR1cm4ge3RleHQ6IHRoaXMuX3Jlc291cmNlLnVybH07Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBvbmRibGNsaWNrOiBmdW5jdGlvbigpCisgICAgb25kYmxjbGljaygpCiAg
ICAgewogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Qub3BlbkluTmV3VGFiKHRoaXMuX3Jl
c291cmNlLnVybCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQgKFVzZWQgYnkg
RnJhbWVUcmVlRWxlbWVudCkKIAotICAgIF91cGRhdGVSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3Vy
Y2UpCisgICAgX3VwZGF0ZVJlc291cmNlKHJlc291cmNlKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQocmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UpOwogCkBA
IC0xMjUsMTEgKzEyMSwxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlcygpOwogICAgICAgICB0aGlzLl91
cGRhdGVTdGF0dXMoKTsKICAgICAgICAgdGhpcy5fdXBkYXRlVG9vbFRpcCgpOwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBfdXBkYXRlVGl0bGVzOiBmdW5jdGlvbigp
CisgICAgX3VwZGF0ZVRpdGxlcygpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUgPSB0aGlzLl9y
ZXNvdXJjZS5wYXJlbnRGcmFtZTsKICAgICAgICAgdmFyIGlzTWFpblJlc291cmNlID0gdGhpcy5f
cmVzb3VyY2UuaXNNYWluUmVzb3VyY2UoKTsKQEAgLTE1MiwxMSArMTQ4LDExIEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAob2xk
TWFpblRpdGxlICE9PSB0aGlzLm1haW5UaXRsZSkKICAgICAgICAgICAgIHRoaXMuY2FsbEZpcnN0
QW5jZXN0b3JGdW5jdGlvbigiZGVzY2VuZGFudFJlc291cmNlVHJlZUVsZW1lbnRNYWluVGl0bGVE
aWRDaGFuZ2UiLCBbdGhpcywgb2xkTWFpblRpdGxlXSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcml2YXRlCiAKLSAgICBfdXBkYXRlU3RhdHVzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVN0
YXR1cygpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UuZmFpbGVkKQogICAgICAg
ICAgICAgdGhpcy5hZGRDbGFzc05hbWUoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQu
RmFpbGVkU3R5bGVDbGFzc05hbWUpOwpAQCAtMTc0LDIwICsxNzAsMjAgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIHNwaW5u
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXI7CiAgICAg
ICAgICAgICB0aGlzLnN0YXR1cyA9IHNwaW5uZXIuZWxlbWVudDsKICAgICAgICAgfQotICAgIH0s
CisgICAgfQogCi0gICAgX3VwZGF0ZVRvb2xUaXA6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlVG9v
bFRpcCgpCiAgICAgewogICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLl9yZXNvdXJjZS51cmw7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXJsRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfdXJsRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGVz
KCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRvb2xUaXAoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF90eXBlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfdHlwZURpZENoYW5nZShldmVu
dCkKICAgICB7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2xhc3NOYW1lKGV2ZW50LmRhdGEub2xkVHlw
ZSk7CiAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKHRoaXMuX3Jlc291cmNlLnR5cGUpOwpAQCAt
MTk1LDMgKzE5MSw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5jYWxsRmlyc3RBbmNlc3RvckZ1bmN0aW9uKCJkZXNjZW5kYW50
UmVzb3VyY2VUcmVlRWxlbWVudFR5cGVEaWRDaGFuZ2UiLCBbdGhpcywgZXZlbnQuZGF0YS5vbGRU
eXBlXSk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuUmVz
b3VyY2VJY29uU3R5bGVDbGFzc05hbWUgPSAicmVzb3VyY2UtaWNvbiI7CitXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlRWxlbWVudC5GYWlsZWRTdHlsZUNsYXNzTmFtZSA9ICJmYWlsZWQiOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0
VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TY3JpcHRUcmVlRWxlbWVudC5qcwppbmRleCA5MjBjZmEyMGRlYjNlZWY3MDMwNTQwNDVjYmI0
MjE0NjE0MGYzYTljLi5iODNkMjYwMzYyZjEzNjA4NWZmYjc5MzJhYjNmNGFkYzVjOTgwNGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3Jp
cHRUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TY3JpcHRUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzQgKzIzLDMwIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVF
bGVtZW50ID0gZnVuY3Rpb24oc2NyaXB0KQorV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50
ID0gY2xhc3MgU2NyaXB0VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQoc2NyaXB0IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlNjcmlwdCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRyZWVFbGVt
ZW50LmNhbGwodGhpcywgc2NyaXB0LCBXZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQuU3R5
bGVDbGFzc05hbWUsIG51bGwsIG51bGwsIHNjcmlwdCwgZmFsc2UpOworICAgIGNvbnN0cnVjdG9y
KHNjcmlwdCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNjcmlwdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5TY3JpcHQpOwogCi0gICAgdGhpcy5tYWluVGl0bGUgPSBzY3JpcHQuZGlz
cGxheU5hbWU7CisgICAgICAgIHN1cGVyKHNjcmlwdCwgInNjcmlwdCIsIG51bGwsIG51bGwsIHNj
cmlwdCwgZmFsc2UpOwogCi0gICAgaWYgKHNjcmlwdC51cmwpIHsKLSAgICAgICAgLy8gU2hvdyB0
aGUgaG9zdCBhcyB0aGUgc3VidGl0bGUgaWYgaXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIG1haW4g
dGl0bGUuCi0gICAgICAgIHZhciBzdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZv
ckhvc3Qoc2NyaXB0LnVybENvbXBvbmVudHMuaG9zdCk7Ci0gICAgICAgIHRoaXMuc3VidGl0bGUg
PSB0aGlzLm1haW5UaXRsZSAhPT0gc3VidGl0bGUgPyBzdWJ0aXRsZSA6IG51bGw7CisgICAgICAg
IHRoaXMubWFpblRpdGxlID0gc2NyaXB0LmRpc3BsYXlOYW1lOwogCi0gICAgICAgIHRoaXMudG9v
bHRpcCA9IHNjcmlwdC51cmw7CisgICAgICAgIGlmIChzY3JpcHQudXJsKSB7CisgICAgICAgICAg
ICAvLyBTaG93IHRoZSBob3N0IGFzIHRoZSBzdWJ0aXRsZSBpZiBpdCBpcyBkaWZmZXJlbnQgZnJv
bSB0aGUgbWFpbiB0aXRsZS4KKyAgICAgICAgICAgIHZhciBzdWJ0aXRsZSA9IFdlYkluc3BlY3Rv
ci5kaXNwbGF5TmFtZUZvckhvc3Qoc2NyaXB0LnVybENvbXBvbmVudHMuaG9zdCk7CisgICAgICAg
ICAgICB0aGlzLnN1YnRpdGxlID0gdGhpcy5tYWluVGl0bGUgIT09IHN1YnRpdGxlID8gc3VidGl0
bGUgOiBudWxsOwogCi0gICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVFbGVtZW50LlJlc291cmNlSWNvblN0eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAgdGhp
cy5hZGRDbGFzc05hbWUoV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0KTsKLSAgICB9
IGVsc2UKLSAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVF
bGVtZW50LkFub255bW91c1NjcmlwdEljb25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0
aGlzLnRvb2x0aXAgPSBzY3JpcHQudXJsOwogCi0gICAgdGhpcy5fc2NyaXB0ID0gc2NyaXB0Owot
fTsKKyAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVFbGVtZW50LlJlc291cmNlSWNvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRoaXMu
YWRkQ2xhc3NOYW1lKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoV2ViSW5zcGVjdG9yLlNjcmlw
dFRyZWVFbGVtZW50LkFub255bW91c1NjcmlwdEljb25TdHlsZUNsYXNzTmFtZSk7CiAKLVdlYklu
c3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudC5Bbm9ueW1vdXNTY3JpcHRJY29uU3R5bGVDbGFzc05h
bWUgPSAiYW5vbnltb3VzLXNjcmlwdC1pY29uIjsKLVdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxl
bWVudC5TdHlsZUNsYXNzTmFtZSA9ICJzY3JpcHQiOwotCi1XZWJJbnNwZWN0b3IuU2NyaXB0VHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2Ny
aXB0VHJlZUVsZW1lbnQsCisgICAgICAgIHRoaXMuX3NjcmlwdCA9IHNjcmlwdDsKKyAgICB9CiAK
ICAgICAvLyBQdWJsaWMKIApAQCAtNjAsNCArNTYsNCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5TY3JpcHRU
cmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
cmVlRWxlbWVudC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQuQW5v
bnltb3VzU2NyaXB0SWNvblN0eWxlQ2xhc3NOYW1lID0gImFub255bW91cy1zY3JpcHQtaWNvbiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
ZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NlYXJjaFJlc3VsdFRyZWVFbGVtZW50LmpzCmluZGV4IDY3YTM4ZTVjNTA0
YmNjMDUxYjA2MDM1YjE0N2Y0MGJmZGRmNTI2MTUuLjE0NGVmMjg1ZmE1NDNmZGE2YjUxNDA4OWIz
Yzc4MWJjY2JjMTVkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NlYXJjaFJlc3VsdFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFJlc3VsdFRyZWVFbGVtZW50Lmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMyw2NyArMjMsNjYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXBy
ZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudCA9IGNs
YXNzIFNlYXJjaFJlc3VsdFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxU
cmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0IHx8IHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVTZWFyY2hNYXRjaE9iamVjdCk7
CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBjb25z
b2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01T
ZWFyY2hNYXRjaE9iamVjdCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmplY3QpOwogCi0gICAgdmFyIHRpdGxlID0gV2Vi
SW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LnRydW5jYXRlQW5kSGlnaGxpZ2h0VGl0
bGUocmVwcmVzZW50ZWRPYmplY3QudGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LnNlYXJjaFRlcm0s
IHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVUZXh0UmFuZ2UpOworICAgICAgICB2YXIgdGl0
bGUgPSBXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQudHJ1bmNhdGVBbmRIaWdo
bGlnaHRUaXRsZShyZXByZXNlbnRlZE9iamVjdC50aXRsZSwgcmVwcmVzZW50ZWRPYmplY3Quc2Vh
cmNoVGVybSwgcmVwcmVzZW50ZWRPYmplY3Quc291cmNlQ29kZVRleHRSYW5nZSk7CiAKLSAgICBX
ZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmpl
Y3QuY2xhc3NOYW1lLCB0aXRsZSwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKLSAg
ICB0aGlzLnNtYWxsID0gdHJ1ZTsKLX07CisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0
LmNsYXNzTmFtZSwgdGl0bGUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7CiAKLVdl
Ykluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5DaGFyYWN0ZXJzVG9TaG93QmVmb3Jl
U2VhcmNoTWF0Y2ggPSAxNTsKLVdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5D
aGFyYWN0ZXJzVG9TaG93QWZ0ZXJTZWFyY2hNYXRjaCA9IDUwOwotV2ViSW5zcGVjdG9yLlNlYXJj
aFJlc3VsdFRyZWVFbGVtZW50LkhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWUgPSAiaGlnaGxpZ2h0
ZWQiOworICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5T
ZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudCwKKyAgICAvLyBTdGF0aWMKIAotICAg
IC8vIFB1YmxpYwotCi0gICAgZ2V0IGZpbHRlcmFibGVEYXRhKCkKKyAgICBzdGF0aWMgdHJ1bmNh
dGVBbmRIaWdobGlnaHRUaXRsZSh0aXRsZSwgc2VhcmNoVGVybSwgc291cmNlQ29kZVRleHRSYW5n
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB7dGV4dDogdGhpcy5yZXByZXNlbnRlZE9iamVjdC50
aXRsZX07Ci0gICAgfQotfTsKKyAgICAgICAgLy8gVXNlIHRoZSBvcmlnaW5hbCBsb2NhdGlvbiwg
c2luY2UgdGhvc2UgbGluZS9jb2x1bW4gb2Zmc2V0cyBtYXRjaCB0aGUgbGluZSB0ZXh0IGluIHRp
dGxlLgorICAgICAgICB2YXIgdGV4dFJhbmdlID0gc291cmNlQ29kZVRleHRSYW5nZS50ZXh0UmFu
Z2U7CiAKLVdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGU7CisgICAg
ICAgIHZhciBzZWFyY2hUZXJtSW5kZXggPSB0ZXh0UmFuZ2Uuc3RhcnRDb2x1bW47CiAKLVdlYklu
c3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC50cnVuY2F0ZUFuZEhpZ2hsaWdodFRpdGxl
ID0gZnVuY3Rpb24odGl0bGUsIHNlYXJjaFRlcm0sIHNvdXJjZUNvZGVUZXh0UmFuZ2UpCi17Ci0g
ICAgLy8gVXNlIHRoZSBvcmlnaW5hbCBsb2NhdGlvbiwgc2luY2UgdGhvc2UgbGluZS9jb2x1bW4g
b2Zmc2V0cyBtYXRjaCB0aGUgbGluZSB0ZXh0IGluIHRpdGxlLgotICAgIHZhciB0ZXh0UmFuZ2Ug
PSBzb3VyY2VDb2RlVGV4dFJhbmdlLnRleHRSYW5nZTsKKyAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgaGF2ZSBvbmUgbGluZSB0ZXh0IHJhbmdlcywgc28gbWFrZSBzdXJlIHRoYXQgaXMgdGhlIGNh
c2UuCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRleHRSYW5nZS5zdGFydExpbmUgPT09IHRleHRS
YW5nZS5lbmRMaW5lKTsKIAotICAgIHZhciBzZWFyY2hUZXJtSW5kZXggPSB0ZXh0UmFuZ2Uuc3Rh
cnRDb2x1bW47CisgICAgICAgIC8vIFNob3cgc29tZSBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgbWF0
Y2hpbmcgdGV4dCAoaWYgdGhlcmUgYXJlIGVub3VnaCkgZm9yIGNvbnRleHQuIFRyZWVPdXRsaW5l
IHRha2VzIGNhcmUgb2YgdGhlIHRydW5jYXRpbmcKKyAgICAgICAgLy8gYXQgdGhlIGVuZCBvZiB0
aGUgc3RyaW5nLgorICAgICAgICB2YXIgbW9kaWZpZWRUaXRsZSA9IG51bGw7CisgICAgICAgIGlm
IChzZWFyY2hUZXJtSW5kZXggPiBXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQu
Q2hhcmFjdGVyc1RvU2hvd0JlZm9yZVNlYXJjaE1hdGNoKSB7CisgICAgICAgICAgICBtb2RpZmll
ZFRpdGxlID0gIlx1MjAyNiIgKyB0aXRsZS5zdWJzdHJpbmcoc2VhcmNoVGVybUluZGV4IC0gV2Vi
SW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LkNoYXJhY3RlcnNUb1Nob3dCZWZvcmVT
ZWFyY2hNYXRjaCk7CisgICAgICAgICAgICBzZWFyY2hUZXJtSW5kZXggPSBXZWJJbnNwZWN0b3Iu
U2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuQ2hhcmFjdGVyc1RvU2hvd0JlZm9yZVNlYXJjaE1hdGNo
ICsgMTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtb2RpZmllZFRpdGxlID0gdGl0bGU7
CiAKLSAgICAvLyBXZSBzaG91bGQgb25seSBoYXZlIG9uZSBsaW5lIHRleHQgcmFuZ2VzLCBzbyBt
YWtlIHN1cmUgdGhhdCBpcyB0aGUgY2FzZS4KLSAgICBjb25zb2xlLmFzc2VydCh0ZXh0UmFuZ2Uu
c3RhcnRMaW5lID09PSB0ZXh0UmFuZ2UuZW5kTGluZSk7CisgICAgICAgIC8vIFRydW5jYXRlIHRo
ZSB0YWlsIG9mIHRoZSB0aXRsZSBzbyB0aGUgdG9vbHRpcCBpc24ndCBzbyBsYXJnZS4KKyAgICAg
ICAgbW9kaWZpZWRUaXRsZSA9IG1vZGlmaWVkVGl0bGUudHJpbUVuZChzZWFyY2hUZXJtSW5kZXgg
KyBzZWFyY2hUZXJtLmxlbmd0aCArIFdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVu
dC5DaGFyYWN0ZXJzVG9TaG93QWZ0ZXJTZWFyY2hNYXRjaCk7CiAKLSAgICAvLyBTaG93IHNvbWUg
Y2hhcmFjdGVycyBiZWZvcmUgdGhlIG1hdGNoaW5nIHRleHQgKGlmIHRoZXJlIGFyZSBlbm91Z2gp
IGZvciBjb250ZXh0LiBUcmVlT3V0bGluZSB0YWtlcyBjYXJlIG9mIHRoZSB0cnVuY2F0aW5nCi0g
ICAgLy8gYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLgotICAgIHZhciBtb2RpZmllZFRpdGxlID0g
bnVsbDsKLSAgICBpZiAoc2VhcmNoVGVybUluZGV4ID4gV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3Vs
dFRyZWVFbGVtZW50LkNoYXJhY3RlcnNUb1Nob3dCZWZvcmVTZWFyY2hNYXRjaCkgewotICAgICAg
ICBtb2RpZmllZFRpdGxlID0gIlx1MjAyNiIgKyB0aXRsZS5zdWJzdHJpbmcoc2VhcmNoVGVybUlu
ZGV4IC0gV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LkNoYXJhY3RlcnNUb1No
b3dCZWZvcmVTZWFyY2hNYXRjaCk7Ci0gICAgICAgIHNlYXJjaFRlcm1JbmRleCA9IFdlYkluc3Bl
Y3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5DaGFyYWN0ZXJzVG9TaG93QmVmb3JlU2VhcmNo
TWF0Y2ggKyAxOwotICAgIH0gZWxzZQotICAgICAgICBtb2RpZmllZFRpdGxlID0gdGl0bGU7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1vZGlmaWVkVGl0bGUuc3Vic3RyaW5nKHNlYXJjaFRlcm1J
bmRleCwgc2VhcmNoVGVybUluZGV4ICsgc2VhcmNoVGVybS5sZW5ndGgpLnRvTG93ZXJDYXNlKCkg
PT09IHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSk7CiAKLSAgICAvLyBUcnVuY2F0ZSB0aGUgdGFp
bCBvZiB0aGUgdGl0bGUgc28gdGhlIHRvb2x0aXAgaXNuJ3Qgc28gbGFyZ2UuCi0gICAgbW9kaWZp
ZWRUaXRsZSA9IG1vZGlmaWVkVGl0bGUudHJpbUVuZChzZWFyY2hUZXJtSW5kZXggKyBzZWFyY2hU
ZXJtLmxlbmd0aCArIFdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5DaGFyYWN0
ZXJzVG9TaG93QWZ0ZXJTZWFyY2hNYXRjaCk7CisgICAgICAgIHZhciBoaWdobGlnaHRlZFRpdGxl
ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogCi0gICAgY29uc29sZS5hc3Nl
cnQobW9kaWZpZWRUaXRsZS5zdWJzdHJpbmcoc2VhcmNoVGVybUluZGV4LCBzZWFyY2hUZXJtSW5k
ZXggKyBzZWFyY2hUZXJtLmxlbmd0aCkudG9Mb3dlckNhc2UoKSA9PT0gc2VhcmNoVGVybS50b0xv
d2VyQ2FzZSgpKTsKKyAgICAgICAgaGlnaGxpZ2h0ZWRUaXRsZS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShtb2RpZmllZFRpdGxlLnN1YnN0cmluZygwLCBzZWFyY2hUZXJtSW5k
ZXgpKSk7CiAKLSAgICB2YXIgaGlnaGxpZ2h0ZWRUaXRsZSA9IGRvY3VtZW50LmNyZWF0ZURvY3Vt
ZW50RnJhZ21lbnQoKTsKKyAgICAgICAgdmFyIGhpZ2hsaWdodFNwYW4gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIGhpZ2hsaWdodFNwYW4uY2xhc3NOYW1lID0gImhp
Z2hsaWdodGVkIjsKKyAgICAgICAgaGlnaGxpZ2h0U3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShtb2RpZmllZFRpdGxlLnN1YnN0cmluZyhzZWFyY2hUZXJtSW5kZXgsIHNl
YXJjaFRlcm1JbmRleCArIHNlYXJjaFRlcm0ubGVuZ3RoKSkpOworICAgICAgICBoaWdobGlnaHRl
ZFRpdGxlLmFwcGVuZENoaWxkKGhpZ2hsaWdodFNwYW4pOwogCi0gICAgaGlnaGxpZ2h0ZWRUaXRs
ZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtb2RpZmllZFRpdGxlLnN1YnN0
cmluZygwLCBzZWFyY2hUZXJtSW5kZXgpKSk7CisgICAgICAgIGhpZ2hsaWdodGVkVGl0bGUuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobW9kaWZpZWRUaXRsZS5zdWJzdHJpbmco
c2VhcmNoVGVybUluZGV4ICsgc2VhcmNoVGVybS5sZW5ndGgpKSk7CiAKLSAgICB2YXIgaGlnaGxp
Z2h0U3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICBoaWdobGlnaHRT
cGFuLmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5IaWdo
bGlnaHRlZFN0eWxlQ2xhc3NOYW1lOwotICAgIGhpZ2hsaWdodFNwYW4uYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUobW9kaWZpZWRUaXRsZS5zdWJzdHJpbmcoc2VhcmNoVGVybUlu
ZGV4LCBzZWFyY2hUZXJtSW5kZXggKyBzZWFyY2hUZXJtLmxlbmd0aCkpKTsKLSAgICBoaWdobGln
aHRlZFRpdGxlLmFwcGVuZENoaWxkKGhpZ2hsaWdodFNwYW4pOworICAgICAgICByZXR1cm4gaGln
aGxpZ2h0ZWRUaXRsZTsKKyAgICB9CiAKLSAgICBoaWdobGlnaHRlZFRpdGxlLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1vZGlmaWVkVGl0bGUuc3Vic3RyaW5nKHNlYXJjaFRl
cm1JbmRleCArIHNlYXJjaFRlcm0ubGVuZ3RoKSkpOworICAgIC8vIFB1YmxpYwogCi0gICAgcmV0
dXJuIGhpZ2hsaWdodGVkVGl0bGU7CisgICAgZ2V0IGZpbHRlcmFibGVEYXRhKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB7dGV4dDogdGhpcy5yZXByZXNlbnRlZE9iamVjdC50aXRsZX07CisgICAg
fQogfTsKKworV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LkNoYXJhY3RlcnNU
b1Nob3dCZWZvcmVTZWFyY2hNYXRjaCA9IDE1OworV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRy
ZWVFbGVtZW50LkNoYXJhY3RlcnNUb1Nob3dBZnRlclNlYXJjaE1hdGNoID0gNTA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2Rl
VGltZWxpbmVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRyZWVFbGVtZW50LmpzCmluZGV4IDBjNjM1NTYz
MDYyYWJiNWVmODBjOTE5OTI4YTJiMzM2YzZlZjczNGQuLjFkMzU4MGFkMzZiNDgyMjliZjc5MDg3
ZTkzZDBkZTVjMmIxYmMxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRyZWVFbGVtZW50LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGlu
ZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMywyNCArMjMsMjUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lVHJlZUVs
ZW1lbnQgPSBmdW5jdGlvbihzb3VyY2VDb2RlVGltZWxpbmUsIHN1YnRpdGxlTmFtZVN0eWxlLCBp
bmNsdWRlVGltZXJJZGVudGlmaWVySW5NYWluVGl0bGUpCitXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVRpbWVsaW5lVHJlZUVsZW1lbnQgPSBjbGFzcyBTb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVu
dCBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50CiB7Ci0gICAg
Y29uc29sZS5hc3NlcnQoc291cmNlQ29kZVRpbWVsaW5lKTsKLQotICAgIHRoaXMuX3NvdXJjZUNv
ZGVUaW1lbGluZSA9IHNvdXJjZUNvZGVUaW1lbGluZTsKKyAgICBjb25zdHJ1Y3Rvcihzb3VyY2VD
b2RlVGltZWxpbmUsIHN1YnRpdGxlTmFtZVN0eWxlLCBpbmNsdWRlVGltZXJJZGVudGlmaWVySW5N
YWluVGl0bGUpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChzb3VyY2VDb2RlVGltZWxp
bmUpOwogCi0gICAgc3VidGl0bGVOYW1lU3R5bGUgPSBzdWJ0aXRsZU5hbWVTdHlsZSB8fCBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLk5hbWVTdHlsZS5Ob25lOworICAgICAgICBzdWJ0
aXRsZU5hbWVTdHlsZSA9IHN1YnRpdGxlTmFtZVN0eWxlIHx8IFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlTG9jYXRpb24uTmFtZVN0eWxlLk5vbmU7CiAKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHNvdXJjZUNvZGVUaW1lbGluZS5yZWNvcmRzWzBd
LCBzdWJ0aXRsZU5hbWVTdHlsZSwgaW5jbHVkZVRpbWVySWRlbnRpZmllckluTWFpblRpdGxlLCBz
b3VyY2VDb2RlVGltZWxpbmUuc291cmNlQ29kZUxvY2F0aW9uLCBzb3VyY2VDb2RlVGltZWxpbmUp
OwotfTsKKyAgICAgICAgc3VwZXIoc291cmNlQ29kZVRpbWVsaW5lLnJlY29yZHNbMF0sIHN1YnRp
dGxlTmFtZVN0eWxlLCBpbmNsdWRlVGltZXJJZGVudGlmaWVySW5NYWluVGl0bGUsIHNvdXJjZUNv
ZGVUaW1lbGluZS5zb3VyY2VDb2RlTG9jYXRpb24sIHNvdXJjZUNvZGVUaW1lbGluZSk7CiAKLVdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVu
dCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50
LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZVRpbWVsaW5lID0gc291cmNlQ29k
ZVRpbWVsaW5lOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgcmVjb3JkOiB1bmRlZmlu
ZWQsCisgICAgZ2V0IHJlY29yZCgpCisgICAgeworICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwor
ICAgIH0KIAogICAgIGdldCBzb3VyY2VDb2RlVGltZWxpbmUoKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUcmVl
RWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nv
dXJjZUNvZGVUcmVlRWxlbWVudC5qcwppbmRleCA4NzAzZDdiMzkzNzA1NTQ0MzJmZDMzNjdkYjE1
M2NjMTIyYWJkYWE1Li4zNTczNDUwZGU3MzkyMzRmOWNjYmVkYzM5OWQ5ZmJlMDJhYWFiYjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3Vy
Y2VDb2RlVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU291cmNlQ29kZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyNCArMjMsMjIgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc291cmNlQ29kZSwgY2xhc3NOYW1lcywgdGl0
bGUsIHN1YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCwgaGFzQ2hpbGRyZW4pCitXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRyZWVFbGVtZW50ID0gY2xhc3MgU291cmNlQ29kZVRyZWVFbGVtZW50IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUu
YXNzZXJ0KHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZSk7Cisg
ICAgY29uc3RydWN0b3Ioc291cmNlQ29kZSwgY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCBy
ZXByZXNlbnRlZE9iamVjdCwgaGFzQ2hpbGRyZW4pCisgICAgeworICAgICAgICBjb25zb2xlLmFz
c2VydChzb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUpOwogCi0g
ICAgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5jYWxsKHRoaXMsIGNsYXNzTmFt
ZXMsIHRpdGxlLCBzdWJ0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QgfHwgc291cmNlQ29kZSwgaGFz
Q2hpbGRyZW4pOworICAgICAgICBzdXBlcihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJl
cHJlc2VudGVkT2JqZWN0IHx8IHNvdXJjZUNvZGUsIGhhc0NoaWxkcmVuKTsKIAotICAgIHRoaXMu
c21hbGwgPSB0cnVlOworICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKIAotICAgIHRoaXMuX3Vw
ZGF0ZVNvdXJjZUNvZGUoc291cmNlQ29kZSk7Ci19OwotCi1XZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Gb2xk
ZXJpemVkVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgICAgICB0aGlzLl91cGRhdGVTb3VyY2VD
b2RlKHNvdXJjZUNvZGUpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgdXBkYXRlU291
cmNlTWFwUmVzb3VyY2VzOiBmdW5jdGlvbigpCisgICAgdXBkYXRlU291cmNlTWFwUmVzb3VyY2Vz
KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy50cmVlT3V0bGluZSB8fCAhdGhpcy50cmVlT3V0
bGluZS5pbmNsdWRlU291cmNlTWFwUmVzb3VyY2VDaGlsZHJlbikKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTUwLDE4ICs0OCwxOCBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4pCiAgICAgICAg
ICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBPdmVy
cmlkZXMgZnJvbSBUcmVlRWxlbWVudAogCi0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICBv
bmF0dGFjaCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50
LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMudXBkYXRlU291
cmNlTWFwUmVzb3VyY2VzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbnBvcHVsYXRlOiBmdW5j
dGlvbigpCisgICAgb25wb3B1bGF0ZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMudHJlZU91
dGxpbmUgfHwgIXRoaXMudHJlZU91dGxpbmUuaW5jbHVkZVNvdXJjZU1hcFJlc291cmNlQ2hpbGRy
ZW4pCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAsMTEgKzEyOCwxMSBAQCBXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBmaW5k
QW5kQ29tYmluZUZvbGRlckNoYWlucyh0aGlzLmNoaWxkcmVuW2ldLCBudWxsKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgY3JlYXRlRm9sZGVyc0FzTmVlZGVkRm9y
U3VicGF0aDogZnVuY3Rpb24oc3VicGF0aCkKKyAgICBjcmVhdGVGb2xkZXJzQXNOZWVkZWRGb3JT
dWJwYXRoKHN1YnBhdGgpCiAgICAgewogICAgICAgICBpZiAoIXN1YnBhdGgpCiAgICAgICAgICAg
ICByZXR1cm4gdGhpczsKQEAgLTE2OSw5ICsxNjcsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBj
dXJyZW50Rm9sZGVyVHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkZXNjZW5kYW50
UmVzb3VyY2VUcmVlRWxlbWVudFR5cGVEaWRDaGFuZ2U6IGZ1bmN0aW9uKGNoaWxkVHJlZUVsZW1l
bnQsIG9sZFR5cGUpCisgICAgZGVzY2VuZGFudFJlc291cmNlVHJlZUVsZW1lbnRUeXBlRGlkQ2hh
bmdlKGNoaWxkVHJlZUVsZW1lbnQsIG9sZFR5cGUpCiAgICAgewogICAgICAgICAvLyBDYWxsZWQg
YnkgZGVzY2VuZGFudCBTb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50cy4KIApAQCAtMTg1LDEx
ICsxODMsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgaWYgKHdhc1NlbGVjdGVkKQogICAgICAgICAgICAgY2hpbGRUcmVlRWxl
bWVudC5yZXZlYWxBbmRTZWxlY3QodHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpOwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJvdGVjdGVkIChSZXNvdXJjZVRyZWVFbGVtZW50IGNhbGxzIHRoaXMg
d2hlbiBpdHMgUmVzb3VyY2UgY2hhbmdlcyBkeW5hbWljYWxseSBmb3IgRnJhbWVzKQogCi0gICAg
X3VwZGF0ZVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHNvdXJjZUNvZGUpCisgICAgX3VwZGF0ZVNvdXJj
ZUNvZGUoc291cmNlQ29kZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNv
ZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZU1hcFJlc291cmNl
VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50LmpzCmluZGV4IDVkMWI0ODQ0NjdiZTJiMWYw
MWRlY2Y3NzQxNzkzYThiMjE1OWM2MDMuLjA4NzIyYTJmMDUzMjU0MGVkNDEwZmY2YjY4Mjk5MjM0
YTExMjg2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVu
dC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsMjUgKzIzLDIyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQgPSBmdW5j
dGlvbihzb3VyY2VNYXBSZXNvdXJjZSwgcmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3Iu
U291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudCA9IGNsYXNzIFNvdXJjZU1hcFJlc291cmNlVHJl
ZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudAogewotICAg
IGNvbnNvbGUuYXNzZXJ0KHNvdXJjZU1hcFJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlNvdXJjZU1hcFJlc291cmNlKTsKLQotICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVt
ZW50LmNhbGwodGhpcywgc291cmNlTWFwUmVzb3VyY2UpOwotCi0gICAgY29uc29sZS5hc3NlcnQo
dGhpcy5yZXNvdXJjZSA9PT0gc291cmNlTWFwUmVzb3VyY2UpOworICAgIGNvbnN0cnVjdG9yKHNv
dXJjZU1hcFJlc291cmNlLCByZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHNvdXJjZU1hcFJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJj
ZU1hcFJlc291cmNlKTsKIAotICAgIHRoaXMuYWRkQ2xhc3NOYW1lKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lKTsKLX07CisgICAgICAgIHN1
cGVyKHNvdXJjZU1hcFJlc291cmNlKTsKIAotV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNl
VHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUgPSAic291cmNlLW1hcC1yZXNvdXJjZSI7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMucmVzb3VyY2UgPT09IHNvdXJjZU1hcFJlc291cmNlKTsK
IAotV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2VUcmVlRWxl
bWVudCwKKyAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoInNvdXJjZS1tYXAtcmVzb3VyY2UiKTsK
KyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIF91cGRhdGVUaXRsZXM6IGZ1bmN0aW9u
KCkKKyAgICBfdXBkYXRlVGl0bGVzKCkKICAgICB7CiAgICAgICAgIHZhciBvbGRNYWluVGl0bGUg
PSB0aGlzLm1haW5UaXRsZTsKICAgICAgICAgdGhpcy5tYWluVGl0bGUgPSB0aGlzLnJlc291cmNl
LmRpc3BsYXlOYW1lOwpAQCAtNTYsNSArNTMsMyBAQCBXZWJJbnNwZWN0b3IuU291cmNlTWFwUmVz
b3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmNhbGxGaXJz
dEFuY2VzdG9yRnVuY3Rpb24oImRlc2NlbmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50TWFpblRpdGxl
RGlkQ2hhbmdlIiwgW3RoaXMsIG9sZE1haW5UaXRsZV0pOwogICAgIH0KIH07Ci0KLVdlYkluc3Bl
Y3Rvci5Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVHJlZUVsZW1l
bnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdl
VHJlZUVsZW1lbnQuanMKaW5kZXggZGM3MmU4YjNmMjM1N2ZhNTgyZTliNjhjOGRkYTg1ZmNjMWYw
MzQxOS4uNjI4NmE3YTg1YzZjOWU1MzNkNjc1OGQ2NTVmNjhkMzM0YTQ2NWM1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRyZWVF
bGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1N0b3JhZ2VUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjMgKzIzLDIyIEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVu
dCA9IGZ1bmN0aW9uKGNsYXNzTmFtZXMsIHRpdGxlLCByZXByZXNlbnRlZE9iamVjdCkKK1dlYklu
c3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQgPSBjbGFzcyBTdG9yYWdlVHJlZUVsZW1lbnQgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgV2ViSW5zcGVjdG9y
LkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIGNsYXNzTmFtZXMsIHRpdGxlLCBudWxsLCBy
ZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOwotCi0gICAgdGhpcy5zbWFsbCA9IHRydWU7Ci0gICAg
dGhpcy5mbGF0dGVuZWQgPSBmYWxzZTsKLX07CisgICAgY29uc3RydWN0b3IoY2xhc3NOYW1lcywg
dGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgc3VwZXIoY2xhc3NOYW1l
cywgdGl0bGUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7CiAKLVdlYkluc3BlY3Rv
ci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LAorICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5mbGF0dGVuZWQgPSBmYWxzZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBmbGF0dGVuZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZsYXR0
ZW5lZDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBmbGF0dGVuZWQoZmxhdHRlbmVkKQogICAg
IHsKQEAgLTU3LDExICs1NiwxMSBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5tYWluVGl0bGUgPSB0aGlzLmNhdGVnb3J5TmFtZTsK
ICAgICAgICAgdGhpcy5zdWJ0aXRsZSA9IHRoaXMubmFtZTsKICAgICAgICAgdGhpcy5fdXBkYXRl
Q2hpbGRyZW5UaXRsZXMoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAg
IF91cGRhdGVDaGlsZHJlblRpdGxlczogZnVuY3Rpb24oKQorICAgIF91cGRhdGVDaGlsZHJlblRp
dGxlcygpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4u
bGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5jaGlsZHJlbltpXS51
cGRhdGVUaXRsZXMgPT09ICJmdW5jdGlvbiIpCkBAIC02OSw1ICs2OCwzIEBAIFdlYkluc3BlY3Rv
ci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfQogfTsK
LQotV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlk
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVE
YXRhR3JpZC5qcwppbmRleCA3NGNhM2Q1N2JhMzMyZTQ0ZGZiMzdhYTlmZGRlOTkyMWM3ZmU2NTE3
Li5iNTU5YjhmZWRhZWQ4ZDE1OGEyYWE5ZDAxMDRkYzVjOTBmMmJiYjljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlk
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lRGF0YUdyaWQuanMKQEAgLTQ2MSw3ICs0NjEsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVE
YXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5fcG9wb3ZlckNhbGxTdGFj
a1RyZWVPdXRsaW5lKSB7CiAgICAgICAgICAgICB2YXIgY29udGVudEVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJvbCIpOwogICAgICAgICAgICAgY29udGVudEVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgidGltZWxpbmUtZGF0YS1ncmlkLXRyZWUtb3V0bGluZSIpOwotICAgICAgICAgICAg
dGhpcy5fcG9wb3ZlckNhbGxTdGFja1RyZWVPdXRsaW5lID0gbmV3IFRyZWVPdXRsaW5lKGNvbnRl
bnRFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJDYWxsU3RhY2tUcmVlT3V0bGlu
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUoY29udGVudEVsZW1lbnQpOwogICAgICAg
ICAgICAgdGhpcy5fcG9wb3ZlckNhbGxTdGFja1RyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5f
cG9wb3ZlckNhbGxTdGFja1RyZWVFbGVtZW50U2VsZWN0ZWQuYmluZCh0aGlzKTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICB0aGlzLl9wb3BvdmVyQ2FsbFN0YWNrVHJlZU91dGxpbmUucmVt
b3ZlQ2hpbGRyZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50Lmpz
CmluZGV4IDA3ZDZmZTkzMzc1NmU0NDkyMmM3NGFiYThkNmY2NWMxMWUwZThlYmYuLjk4NWVhZmNl
NjAzMjZmNDZjYmI0N2ZmMzljODI3MzIyMTBiNWU2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxp
bmVSZWNvcmRUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMzAgKzIzLDExOSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24odGltZWxpbmVSZWNvcmQsIHN1YnRpdGxlTmFtZVN0eWxlLCBp
bmNsdWRlVGltZXJJZGVudGlmaWVySW5NYWluVGl0bGUsIHNvdXJjZUNvZGVMb2NhdGlvbiwgcmVw
cmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudCA9
IGNsYXNzIFRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2Vu
ZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQodGltZWxpbmVSZWNvcmQpOwot
Ci0gICAgdGhpcy5fcmVjb3JkID0gdGltZWxpbmVSZWNvcmQ7Ci0gICAgdGhpcy5fc291cmNlQ29k
ZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uIHx8IHRpbWVsaW5lUmVjb3JkLnNvdXJjZUNv
ZGVMb2NhdGlvbiB8fCBudWxsOworICAgIGNvbnN0cnVjdG9yKHRpbWVsaW5lUmVjb3JkLCBzdWJ0
aXRsZU5hbWVTdHlsZSwgaW5jbHVkZVRpbWVySWRlbnRpZmllckluTWFpblRpdGxlLCBzb3VyY2VD
b2RlTG9jYXRpb24sIHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodGltZWxpbmVSZWNvcmQpOwogCi0gICAgdmFyIHRpdGxlID0gIiI7Ci0gICAgdmFyIHN1
YnRpdGxlID0gIiI7CisgICAgICAgIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVMb2Nh
dGlvbiB8fCB0aW1lbGluZVJlY29yZC5zb3VyY2VDb2RlTG9jYXRpb24gfHwgbnVsbDsKIAotICAg
IGlmICh0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24pIHsKLSAgICAgICAgc3VidGl0bGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHZhciB0aXRsZSA9ICIiOworICAg
ICAgICB2YXIgc3VidGl0bGUgPSAiIjsKIAotICAgICAgICBpZiAoc3VidGl0bGVOYW1lU3R5bGUg
IT09IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uTmFtZVN0eWxlLk5vbmUpCi0gICAg
ICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24ucG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0
aW9uU3RyaW5nKHN1YnRpdGxlLCAidGV4dENvbnRlbnQiLCBudWxsLCBzdWJ0aXRsZU5hbWVTdHls
ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5w
b3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25TdHJpbmcoc3VidGl0bGUsICJ0ZXh0Q29udGVudCIs
IG51bGwsIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uTmFtZVN0eWxlLk5vbmUsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygibGluZSAiKSk7Ci0gICAgfQorICAgICAgICBpZiAoc291cmNl
Q29kZUxvY2F0aW9uKSB7CisgICAgICAgICAgICBzdWJ0aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKIAotICAgIHZhciBpY29uU3R5bGVDbGFzcyA9IG51bGw7CisgICAgICAg
ICAgICBpZiAoc3VidGl0bGVOYW1lU3R5bGUgIT09IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9j
YXRpb24uTmFtZVN0eWxlLk5vbmUpCisgICAgICAgICAgICAgICAgc291cmNlQ29kZUxvY2F0aW9u
LnBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlvblN0cmluZyhzdWJ0aXRsZSwgInRleHRDb250ZW50
IiwgbnVsbCwgc3VidGl0bGVOYW1lU3R5bGUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHNvdXJjZUNvZGVMb2NhdGlvbi5wb3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25TdHJp
bmcoc3VidGl0bGUsICJ0ZXh0Q29udGVudCIsIG51bGwsIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
TG9jYXRpb24uTmFtZVN0eWxlLk5vbmUsIFdlYkluc3BlY3Rvci5VSVN0cmluZygibGluZSAiKSk7
CisgICAgICAgIH0KIAotICAgIHN3aXRjaCAodGltZWxpbmVSZWNvcmQudHlwZSkgewotICAgIGNh
c2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0OgotICAgICAgICB0aXRs
ZSA9IFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5kaXNwbGF5TmFtZUZvckV2ZW50
VHlwZSh0aW1lbGluZVJlY29yZC5ldmVudFR5cGUpOworICAgICAgICB2YXIgaWNvblN0eWxlQ2xh
c3MgPSBudWxsOworCisgICAgICAgIHN3aXRjaCAodGltZWxpbmVSZWNvcmQudHlwZSkgeworICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dDoKKyAgICAg
ICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLmRpc3BsYXlO
YW1lRm9yRXZlbnRUeXBlKHRpbWVsaW5lUmVjb3JkLmV2ZW50VHlwZSk7CisKKyAgICAgICAgICAg
IHN3aXRjaCAodGltZWxpbmVSZWNvcmQuZXZlbnRUeXBlKSB7CisgICAgICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuSW52YWxpZGF0ZVN0eWxl
czoKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2
ZW50VHlwZS5SZWNhbGN1bGF0ZVN0eWxlczoKKyAgICAgICAgICAgICAgICBpY29uU3R5bGVDbGFz
cyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlN0eWxlUmVjb3JkSWNv
blN0eWxlQ2xhc3M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuSW52YWxpZGF0ZUxheW91
dDoKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2
ZW50VHlwZS5Gb3JjZWRMYXlvdXQ6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuTGF5b3V0OgorICAgICAgICAgICAgICAgIGljb25T
dHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuTGF5b3V0
UmVjb3JkSWNvblN0eWxlQ2xhc3M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuUGFpbnQ6
CisgICAgICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3MgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRUcmVlRWxlbWVudC5QYWludFJlY29yZEljb25TdHlsZUNsYXNzOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBjb25zb2xl
LmVycm9yKCJVbmtub3duIExheW91dFRpbWVsaW5lUmVjb3JkIGV2ZW50VHlwZTogIiArIHRpbWVs
aW5lUmVjb3JkLmV2ZW50VHlwZSwgdGltZWxpbmVSZWNvcmQpOworICAgICAgICAgICAgfQogCi0g
ICAgICAgIHN3aXRjaCAodGltZWxpbmVSZWNvcmQuZXZlbnRUeXBlKSB7Ci0gICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5JbnZhbGlkYXRlU3R5
bGVzOgotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVu
dFR5cGUuUmVjYWxjdWxhdGVTdHlsZXM6Ci0gICAgICAgICAgICBpY29uU3R5bGVDbGFzcyA9IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlN0eWxlUmVjb3JkSWNvblN0eWxl
Q2xhc3M7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5
b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkludmFsaWRhdGVMYXlvdXQ6Ci0gICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5Gb3JjZWRMYXlv
dXQ6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50
VHlwZS5MYXlvdXQ6Ci0gICAgICAgICAgICBpY29uU3R5bGVDbGFzcyA9IFdlYkluc3BlY3Rvci5U
aW1lbGluZVJlY29yZFRyZWVFbGVtZW50LkxheW91dFJlY29yZEljb25TdHlsZUNsYXNzOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5l
UmVjb3JkLkV2ZW50VHlwZS5QYWludDoKLSAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuUGFpbnRSZWNvcmRJY29uU3R5bGVD
bGFzczsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
Y29uc29sZS5lcnJvcigiVW5rbm93biBMYXlvdXRUaW1lbGluZVJlY29yZCBldmVudFR5cGU6ICIg
KyB0aW1lbGluZVJlY29yZC5ldmVudFR5cGUsIHRpbWVsaW5lUmVjb3JkKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQu
VHlwZS5TY3JpcHQ6Ci0gICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5l
UmVjb3JkLkV2ZW50VHlwZS5kaXNwbGF5TmFtZSh0aW1lbGluZVJlY29yZC5ldmVudFR5cGUsIHRp
bWVsaW5lUmVjb3JkLmRldGFpbHMsIGluY2x1ZGVUaW1lcklkZW50aWZpZXJJbk1haW5UaXRsZSk7
CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0Ogor
ICAgICAgICAgICAgdGl0bGUgPSBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZl
bnRUeXBlLmRpc3BsYXlOYW1lKHRpbWVsaW5lUmVjb3JkLmV2ZW50VHlwZSwgdGltZWxpbmVSZWNv
cmQuZGV0YWlscywgaW5jbHVkZVRpbWVySWRlbnRpZmllckluTWFpblRpdGxlKTsKKworICAgICAg
ICAgICAgc3dpdGNoICh0aW1lbGluZVJlY29yZC5ldmVudFR5cGUpIHsKKyAgICAgICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5TY3JpcHRFdmFs
dWF0ZWQ6CisgICAgICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3MgPSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5FdmFsdWF0ZWRSZWNvcmRJY29uU3R5bGVDbGFzczsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5FdmVudERpc3BhdGNoZWQ6CisgICAgICAgICAgICAg
ICAgaWNvblN0eWxlQ2xhc3MgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVu
dC5FdmVudFJlY29yZEljb25TdHlsZUNsYXNzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBl
LlByb2JlU2FtcGxlUmVjb3JkZWQ6CisgICAgICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3MgPSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5Qcm9iZVJlY29yZEljb25TdHls
ZUNsYXNzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkNvbnNvbGVQcm9maWxlUmVjb3Jk
ZWQ6CisgICAgICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3MgPSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRUcmVlRWxlbWVudC5Db25zb2xlUHJvZmlsZUljb25TdHlsZUNsYXNzOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0VGlt
ZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlRpbWVyRmlyZWQ6CisgICAgICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuVGltZXJJbnN0YWxsZWQ6Cisg
ICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5
cGUuVGltZXJSZW1vdmVkOgorICAgICAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuVGltZXJSZWNvcmRJY29uU3R5bGVDbGFz
czsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5BbmltYXRpb25GcmFtZUZpcmVkOgorICAg
ICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBl
LkFuaW1hdGlvbkZyYW1lUmVxdWVzdGVkOgorICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
U2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkFuaW1hdGlvbkZyYW1lQ2FuY2VsZWQ6Cisg
ICAgICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3MgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRUcmVlRWxlbWVudC5BbmltYXRpb25SZWNvcmRJY29uU3R5bGVDbGFzczsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgY29uc29s
ZS5lcnJvcigiVW5rbm93biBTY3JpcHRUaW1lbGluZVJlY29yZCBldmVudFR5cGU6ICIgKyB0aW1l
bGluZVJlY29yZC5ldmVudFR5cGUsIHRpbWVsaW5lUmVjb3JkKTsKKyAgICAgICAgICAgIH0KIAot
ICAgICAgICBzd2l0Y2ggKHRpbWVsaW5lUmVjb3JkLmV2ZW50VHlwZSkgewotICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuU2NyaXB0RXZhbHVh
dGVkOgotICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3MgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRUcmVlRWxlbWVudC5FdmFsdWF0ZWRSZWNvcmRJY29uU3R5bGVDbGFzczsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29y
ZC5FdmVudFR5cGUuRXZlbnREaXNwYXRjaGVkOgotICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3Mg
PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5FdmVudFJlY29yZEljb25T
dHlsZUNsYXNzOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5Qcm9iZVNhbXBsZVJlY29yZGVkOgotICAg
ICAgICAgICAgaWNvblN0eWxlQ2xhc3MgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVl
RWxlbWVudC5Qcm9iZVJlY29yZEljb25TdHlsZUNsYXNzOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5D
b25zb2xlUHJvZmlsZVJlY29yZGVkOgotICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3MgPSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5Db25zb2xlUHJvZmlsZUljb25TdHls
ZUNsYXNzOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNj
cmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5UaW1lckZpcmVkOgotICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuVGltZXJJbnN0YWxsZWQ6
Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlw
ZS5UaW1lclJlbW92ZWQ6Ci0gICAgICAgICAgICBpY29uU3R5bGVDbGFzcyA9IFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlRpbWVyUmVjb3JkSWNvblN0eWxlQ2xhc3M7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxp
bmVSZWNvcmQuRXZlbnRUeXBlLkFuaW1hdGlvbkZyYW1lRmlyZWQ6Ci0gICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5BbmltYXRpb25GcmFtZVJl
cXVlc3RlZDoKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQu
RXZlbnRUeXBlLkFuaW1hdGlvbkZyYW1lQ2FuY2VsZWQ6Ci0gICAgICAgICAgICBpY29uU3R5bGVD
bGFzcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LkFuaW1hdGlvblJl
Y29yZEljb25TdHlsZUNsYXNzOworCisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkLlR5cGUuUnVuTG9vcDoKKyAgICAgICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJSdW5sb29wIEV4ZWN1dGVkIik7CisgICAgICAgICAgICBpY29uU3R5bGVDbGFzcyA9
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlJ1bkxvb3BSZWNvcmRJY29u
U3R5bGVDbGFzczsKICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIFNjcmlwdFRpbWVsaW5lUmVjb3JkIGV2ZW50
VHlwZTogIiArIHRpbWVsaW5lUmVjb3JkLmV2ZW50VHlwZSwgdGltZWxpbmVSZWNvcmQpOworICAg
ICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBUaW1lbGluZVJlY29yZCB0eXBlOiAiICsg
dGltZWxpbmVSZWNvcmQudHlwZSwgdGltZWxpbmVSZWNvcmQpOwogICAgICAgICB9CiAKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlJ1
bkxvb3A6Ci0gICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSdW5sb29wIEV4
ZWN1dGVkIik7Ci0gICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkVHJlZUVsZW1lbnQuUnVuTG9vcFJlY29yZEljb25TdHlsZUNsYXNzOwotICAgICAgICBi
cmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gVGlt
ZWxpbmVSZWNvcmQgdHlwZTogIiArIHRpbWVsaW5lUmVjb3JkLnR5cGUsIHRpbWVsaW5lUmVjb3Jk
KTsKLSAgICB9CisgICAgICAgIHN1cGVyKFtpY29uU3R5bGVDbGFzc10sIHRpdGxlLCBzdWJ0aXRs
ZSwgcmVwcmVzZW50ZWRPYmplY3QgfHwgdGltZWxpbmVSZWNvcmQsIGZhbHNlKTsKIAotICAgIFdl
Ykluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBbaWNvblN0eWxlQ2xhc3Nd
LCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0IHx8IHRpbWVsaW5lUmVjb3JkLCBm
YWxzZSk7CisgICAgICAgIHRoaXMuX3JlY29yZCA9IHRpbWVsaW5lUmVjb3JkOworICAgICAgICB0
aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlTG9jYXRpb247CiAKLSAgICB0aGlz
LnNtYWxsID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7CiAKLSAgICBpZiAodGhp
cy5fc291cmNlQ29kZUxvY2F0aW9uKQotICAgICAgICB0aGlzLnRvb2x0aXBIYW5kbGVkU2VwYXJh
dGVseSA9IHRydWU7Ci19OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVu
dC5TdHlsZVJlY29yZEljb25TdHlsZUNsYXNzID0gInN0eWxlLXJlY29yZCI7Ci1XZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5MYXlvdXRSZWNvcmRJY29uU3R5bGVDbGFzcyA9
ICJsYXlvdXQtcmVjb3JkIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50
LlBhaW50UmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAicGFpbnQtcmVjb3JkIjsKLVdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlJ1bkxvb3BSZWNvcmRJY29uU3R5bGVDbGFzcyA9
ICJydW5sb29wLXJlY29yZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVu
dC5FdmFsdWF0ZWRSZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJldmFsdWF0ZWQtcmVjb3JkIjsKLVdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LkV2ZW50UmVjb3JkSWNvblN0eWxl
Q2xhc3MgPSAiZXZlbnQtcmVjb3JkIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVF
bGVtZW50LlRpbWVyUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAidGltZXItcmVjb3JkIjsKLVdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LkFuaW1hdGlvblJlY29yZEljb25TdHls
ZUNsYXNzID0gImFuaW1hdGlvbi1yZWNvcmQiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
VHJlZUVsZW1lbnQuUHJvYmVSZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJwcm9iZS1yZWNvcmQiOwot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuQ29uc29sZVByb2ZpbGVJY29u
U3R5bGVDbGFzcyA9ICJjb25zb2xlLXByb2ZpbGUtcmVjb3JkIjsKLQotV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgICAgICBpZiAodGhp
cy5fc291cmNlQ29kZUxvY2F0aW9uKQorICAgICAgICAgICAgdGhpcy50b29sdGlwSGFuZGxlZFNl
cGFyYXRlbHkgPSB0cnVlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHJlY29y
ZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGZpbHRlcmFibGVEYXRhKCkKICAgICB7CiAgICAgICAgIHZhciB1cmwgPSB0aGlz
Ll9zb3VyY2VDb2RlTG9jYXRpb24gPyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29k
ZS51cmwgOiAiIjsKICAgICAgICAgcmV0dXJuIHt0ZXh0OiBbdGhpcy5tYWluVGl0bGUsIHVybCB8
fCAiIiwgdGhpcy5fcmVjb3JkLmRldGFpbHMgfHwgIiJdfTsKLSAgICB9LAorICAgIH0KIAogICAg
IC8vIFByb3RlY3RlZAogCi0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICBvbmF0dGFjaCgp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlw
ZS5vbmF0dGFjaC5jYWxsKHRoaXMpOwogCkBAIC0xNTksMyArMTQ4LDE0IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
c291cmNlQ29kZUxvY2F0aW9uLnBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlvblRvb2x0aXAodGhp
cy5lbGVtZW50LCB0b29sdGlwUHJlZml4KTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5TdHlsZVJlY29yZEljb25TdHlsZUNsYXNzID0gInN0eWxl
LXJlY29yZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5MYXlvdXRS
ZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJsYXlvdXQtcmVjb3JkIjsKK1dlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZFRyZWVFbGVtZW50LlBhaW50UmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAicGFpbnQt
cmVjb3JkIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlJ1bkxvb3BS
ZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJydW5sb29wLXJlY29yZCI7CitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5FdmFsdWF0ZWRSZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJl
dmFsdWF0ZWQtcmVjb3JkIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50
LkV2ZW50UmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAiZXZlbnQtcmVjb3JkIjsKK1dlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlRpbWVyUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAi
dGltZXItcmVjb3JkIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LkFu
aW1hdGlvblJlY29yZEljb25TdHlsZUNsYXNzID0gImFuaW1hdGlvbi1yZWNvcmQiOworV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuUHJvYmVSZWNvcmRJY29uU3R5bGVDbGFz
cyA9ICJwcm9iZS1yZWNvcmQiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1l
bnQuQ29uc29sZVByb2ZpbGVJY29uU3R5bGVDbGFzcyA9ICJjb25zb2xlLXByb2ZpbGUtcmVjb3Jk
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uanMKaW5kZXggNTZjMTQ0Y2Fj
OTliZDQyMWVlY2VmMjI2YjE4YTgxMWUyN2FmMjc4Yy4uMmVlM2FjOGIwMWE3ZjYzZWMwOTY4NzVk
ZmM4YWJmMGNmMzNiY2NjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24u
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDQ4ICsyMyw0MCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbiA9IGZ1bmN0aW9uKGVs
ZW1lbnQpIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9i
amVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7Ci0KLSAgICBjb25zb2xlLmFzc2VydChlbGVtZW50KTsKLQotICAgIHRo
aXMuX2VsZW1lbnQgPSBlbGVtZW50OwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uU3R5bGVDbGFzc05hbWUpOwotICAg
IHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9jbGlja2VkLmJp
bmQodGhpcykpOwotfTsKLQotV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLlN0
eWxlQ2xhc3NOYW1lID0gInN0YXR1cy1idXR0b24iOwotV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50
U3RhdHVzQnV0dG9uLkRpc2FibGVkU3R5bGVDbGFzc05hbWUgPSAiZGlzYWJsZWQiOworV2ViSW5z
cGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uID0gY2xhc3MgVHJlZUVsZW1lbnRTdGF0dXNC
dXR0b24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoZWxl
bWVudCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3BlY3Rvci5UcmVlRWxlbWVu
dFN0YXR1c0J1dHRvbi5FdmVudCA9IHsKLSAgICBDbGlja2VkOiAic3RhdHVzLWJ1dHRvbi1jbGlj
a2VkIgotfTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZWxlbWVudCk7CiAKLVdlYkluc3BlY3Rv
ci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbiwKKyAgICAgICAgdGhpcy5fZWxl
bWVudCA9IGVsZW1lbnQ7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3Rh
dHVzLWJ1dHRvbiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5fY2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGhpZGRlbigpCiAgICAgewogICAgICAgICByZXR1
cm4gIXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5UcmVlRWxl
bWVudFN0YXR1c0J1dHRvbi5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBoaWRkZW4oZmxhZykKICAgICB7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LnRvZ2dsZSgiaGlkZGVuIiwgZmxhZyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
ZW5hYmxlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gIXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5EaXNhYmxlZFN0
eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBlbmFibGVkKGZsYWcpCiAg
ICAgewpAQCAtNzIsMTEgKzY0LDExIEBAIFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1
dHRvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLkRpc2FibGVkU3R5bGVD
bGFzc05hbWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLkRpc2FibGVkU3R5
bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2Ns
aWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLmVuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC04Nyw0ICs3OSw4
IEBAIFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5wcm90b3R5cGUgPSB7CiAg
ICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rv
ci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lID0gImRpc2Fi
bGVkIjsKKworV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLkV2ZW50ID0gewor
ICAgIENsaWNrZWQ6ICJzdGF0dXMtYnV0dG9uLWNsaWNrZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcwpp
bmRleCAyN2NiMDU4N2NhOWU0NzIzYzYyZWU2MWEwNzMwZDA1YTUwYmJiODJlLi43YzM3MTIxNWE3
OGM1NDYxN2EzNzE2N2NjNDE1ZDhiOGU1OGIwZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTMgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMywgMjAxNSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNiwxODcgKzI2LDE0NyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1mdW5jdGlvbiBU
cmVlT3V0bGluZShsaXN0Tm9kZSkKK1dlYkluc3BlY3Rvci5UcmVlT3V0bGluZSA9IGNsYXNzIFRy
ZWVPdXRsaW5lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBD
b252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBz
dXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRo
aXMuZWxlbWVudCA9IGxpc3ROb2RlOwotCi0gICAgdGhpcy5jaGlsZHJlbiA9IFtdOwotICAgIHRo
aXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA9IG51bGw7Ci0gICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9k
ZSA9IGxpc3ROb2RlOwotICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucmVtb3ZlQ2hpbGRyZW4o
KTsKLSAgICB0aGlzLl9rbm93blRyZWVFbGVtZW50cyA9IFtdOwotICAgIHRoaXMuX3RyZWVFbGVt
ZW50c0V4cGFuZGVkU3RhdGUgPSBbXTsKLSAgICB0aGlzLmV4cGFuZFRyZWVFbGVtZW50c1doZW5B
cnJvd2luZyA9IGZhbHNlOwotICAgIHRoaXMuYWxsb3dzUmVwZWF0U2VsZWN0aW9uID0gZmFsc2U7
Ci0gICAgdGhpcy5yb290ID0gdHJ1ZTsKLSAgICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7Ci0g
ICAgdGhpcy5leHBhbmRlZCA9IHRydWU7Ci0gICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlOwotICAg
IHRoaXMudHJlZU91dGxpbmUgPSB0aGlzOwotCi0gICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS50
YWJJbmRleCA9IDA7Ci0gICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5hZGRFdmVudExpc3RlbmVy
KCJrZXlkb3duIiwgdGhpcy5fdHJlZUtleURvd24uYmluZCh0aGlzKSwgdHJ1ZSk7Ci19Ci0KLVRy
ZWVPdXRsaW5lLl9rbm93blRyZWVFbGVtZW50TmV4dElkZW50aWZpZXIgPSAxOwotVHJlZU91dGxp
bmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVHJlZU91dGxpbmU7Ci0KLVRyZWVPdXRsaW5lLnBy
b3RvdHlwZS5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uKGNoaWxkKQotewotICAgIGlmICghY2hpbGQp
Ci0gICAgICAgIHRocm93ICJjaGlsZCBjYW4ndCBiZSB1bmRlZmluZWQgb3IgbnVsbCI7Ci0KLSAg
ICB2YXIgbGFzdENoaWxkID0gdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFd
OwotICAgIGlmIChsYXN0Q2hpbGQpIHsKLSAgICAgICAgbGFzdENoaWxkLm5leHRTaWJsaW5nID0g
Y2hpbGQ7Ci0gICAgICAgIGNoaWxkLnByZXZpb3VzU2libGluZyA9IGxhc3RDaGlsZDsKLSAgICB9
IGVsc2UgewotICAgICAgICBjaGlsZC5wcmV2aW91c1NpYmxpbmcgPSBudWxsOwotICAgICAgICBj
aGlsZC5uZXh0U2libGluZyA9IG51bGw7Ci0gICAgfQorICAgIGNvbnN0cnVjdG9yKGxpc3ROb2Rl
KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHZhciBpc0ZpcnN0Q2hpbGQgPSAhdGhp
cy5jaGlsZHJlbi5sZW5ndGg7CisgICAgICAgIHRoaXMuZWxlbWVudCA9IGxpc3ROb2RlOwogCi0g
ICAgdGhpcy5jaGlsZHJlbi5wdXNoKGNoaWxkKTsKLSAgICB0aGlzLmhhc0NoaWxkcmVuID0gdHJ1
ZTsKLSAgICBjaGlsZC5wYXJlbnQgPSB0aGlzOwotICAgIGNoaWxkLnRyZWVPdXRsaW5lID0gdGhp
cy50cmVlT3V0bGluZTsKLSAgICBjaGlsZC50cmVlT3V0bGluZS5fcmVtZW1iZXJUcmVlRWxlbWVu
dChjaGlsZCk7CisgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgdGhpcy5zZWxl
Y3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSA9
IGxpc3ROb2RlOworICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLnJlbW92ZUNoaWxkcmVu
KCk7CisgICAgICAgIHRoaXMuX2tub3duVHJlZUVsZW1lbnRzID0gW107CisgICAgICAgIHRoaXMu
X3RyZWVFbGVtZW50c0V4cGFuZGVkU3RhdGUgPSBbXTsKKyAgICAgICAgdGhpcy5leHBhbmRUcmVl
RWxlbWVudHNXaGVuQXJyb3dpbmcgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5hbGxvd3NSZXBlYXRT
ZWxlY3Rpb24gPSBmYWxzZTsKKyAgICAgICAgdGhpcy5yb290ID0gdHJ1ZTsKKyAgICAgICAgdGhp
cy5oYXNDaGlsZHJlbiA9IGZhbHNlOworICAgICAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZTsKKyAg
ICAgICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlOworICAgICAgICB0aGlzLnRyZWVPdXRsaW5lID0g
dGhpczsKIAotICAgIHZhciBjdXJyZW50ID0gY2hpbGQuY2hpbGRyZW5bMF07Ci0gICAgd2hpbGUg
KGN1cnJlbnQpIHsKLSAgICAgICAgY3VycmVudC50cmVlT3V0bGluZSA9IHRoaXMudHJlZU91dGxp
bmU7Ci0gICAgICAgIGN1cnJlbnQudHJlZU91dGxpbmUuX3JlbWVtYmVyVHJlZUVsZW1lbnQoY3Vy
cmVudCk7Ci0gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50
KGZhbHNlLCBjaGlsZCwgdHJ1ZSk7CisgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUudGFi
SW5kZXggPSAwOworICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLmFkZEV2ZW50TGlzdGVu
ZXIoImtleWRvd24iLCB0aGlzLl90cmVlS2V5RG93bi5iaW5kKHRoaXMpLCB0cnVlKTsKICAgICB9
CiAKLSAgICBpZiAoY2hpbGQuaGFzQ2hpbGRyZW4gJiYgY2hpbGQudHJlZU91dGxpbmUuX3RyZWVF
bGVtZW50c0V4cGFuZGVkU3RhdGVbY2hpbGQuaWRlbnRpZmllcl0gIT09IHVuZGVmaW5lZCkKLSAg
ICAgICAgY2hpbGQuZXhwYW5kZWQgPSBjaGlsZC50cmVlT3V0bGluZS5fdHJlZUVsZW1lbnRzRXhw
YW5kZWRTdGF0ZVtjaGlsZC5pZGVudGlmaWVyXTsKLQotICAgIGlmICh0aGlzLl9jaGlsZHJlbkxp
c3ROb2RlKQotICAgICAgICBjaGlsZC5fYXR0YWNoKCk7Ci0KLSAgICBpZiAodGhpcy50cmVlT3V0
bGluZS5vbmFkZCkKLSAgICAgICAgdGhpcy50cmVlT3V0bGluZS5vbmFkZChjaGlsZCk7CisgICAg
Ly8gTWV0aG9kcwogCi0gICAgaWYgKGlzRmlyc3RDaGlsZCAmJiB0aGlzLmV4cGFuZGVkKQotICAg
ICAgICB0aGlzLmV4cGFuZCgpOwotfTsKKyAgICBhcHBlbmRDaGlsZChjaGlsZCkKKyAgICB7Cisg
ICAgICAgIGlmICghY2hpbGQpCisgICAgICAgICAgICB0aHJvdyAiY2hpbGQgY2FuJ3QgYmUgdW5k
ZWZpbmVkIG9yIG51bGwiOwogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQgPSBm
dW5jdGlvbihjaGlsZCwgaW5kZXgpCi17Ci0gICAgaWYgKCFjaGlsZCkKLSAgICAgICAgdGhyb3cg
ImNoaWxkIGNhbid0IGJlIHVuZGVmaW5lZCBvciBudWxsIjsKLQotICAgIHZhciBwcmV2aW91c0No
aWxkID0gKGluZGV4ID4gMCA/IHRoaXMuY2hpbGRyZW5baW5kZXggLSAxXSA6IG51bGwpOwotICAg
IGlmIChwcmV2aW91c0NoaWxkKSB7Ci0gICAgICAgIHByZXZpb3VzQ2hpbGQubmV4dFNpYmxpbmcg
PSBjaGlsZDsKLSAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNDaGlsZDsK
LSAgICB9IGVsc2UgewotICAgICAgICBjaGlsZC5wcmV2aW91c1NpYmxpbmcgPSBudWxsOwotICAg
IH0KKyAgICAgICAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5s
ZW5ndGggLSAxXTsKKyAgICAgICAgaWYgKGxhc3RDaGlsZCkgeworICAgICAgICAgICAgbGFzdENo
aWxkLm5leHRTaWJsaW5nID0gY2hpbGQ7CisgICAgICAgICAgICBjaGlsZC5wcmV2aW91c1NpYmxp
bmcgPSBsYXN0Q2hpbGQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGlsZC5wcmV2
aW91c1NpYmxpbmcgPSBudWxsOworICAgICAgICAgICAgY2hpbGQubmV4dFNpYmxpbmcgPSBudWxs
OworICAgICAgICB9CiAKLSAgICB2YXIgbmV4dENoaWxkID0gdGhpcy5jaGlsZHJlbltpbmRleF07
Ci0gICAgaWYgKG5leHRDaGlsZCkgewotICAgICAgICBuZXh0Q2hpbGQucHJldmlvdXNTaWJsaW5n
ID0gY2hpbGQ7Ci0gICAgICAgIGNoaWxkLm5leHRTaWJsaW5nID0gbmV4dENoaWxkOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGNoaWxkLm5leHRTaWJsaW5nID0gbnVsbDsKLSAgICB9CisgICAgICAg
IHZhciBpc0ZpcnN0Q2hpbGQgPSAhdGhpcy5jaGlsZHJlbi5sZW5ndGg7CiAKLSAgICB2YXIgaXNG
aXJzdENoaWxkID0gIXRoaXMuY2hpbGRyZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmNoaWxkcmVu
LnB1c2goY2hpbGQpOworICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gdHJ1ZTsKKyAgICAgICAg
Y2hpbGQucGFyZW50ID0gdGhpczsKKyAgICAgICAgY2hpbGQudHJlZU91dGxpbmUgPSB0aGlzLnRy
ZWVPdXRsaW5lOworICAgICAgICBjaGlsZC50cmVlT3V0bGluZS5fcmVtZW1iZXJUcmVlRWxlbWVu
dChjaGlsZCk7CiAKLSAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpbmRleCwgMCwgY2hpbGQpOwot
ICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0cnVlOwotICAgIGNoaWxkLnBhcmVudCA9IHRoaXM7Ci0g
ICAgY2hpbGQudHJlZU91dGxpbmUgPSB0aGlzLnRyZWVPdXRsaW5lOwotICAgIGNoaWxkLnRyZWVP
dXRsaW5lLl9yZW1lbWJlclRyZWVFbGVtZW50KGNoaWxkKTsKKyAgICAgICAgdmFyIGN1cnJlbnQg
PSBjaGlsZC5jaGlsZHJlblswXTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAg
ICAgIGN1cnJlbnQudHJlZU91dGxpbmUgPSB0aGlzLnRyZWVPdXRsaW5lOworICAgICAgICAgICAg
Y3VycmVudC50cmVlT3V0bGluZS5fcmVtZW1iZXJUcmVlRWxlbWVudChjdXJyZW50KTsKKyAgICAg
ICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KGZhbHNlLCBj
aGlsZCwgdHJ1ZSk7CisgICAgICAgIH0KIAotICAgIHZhciBjdXJyZW50ID0gY2hpbGQuY2hpbGRy
ZW5bMF07Ci0gICAgd2hpbGUgKGN1cnJlbnQpIHsKLSAgICAgICAgY3VycmVudC50cmVlT3V0bGlu
ZSA9IHRoaXMudHJlZU91dGxpbmU7Ci0gICAgICAgIGN1cnJlbnQudHJlZU91dGxpbmUuX3JlbWVt
YmVyVHJlZUVsZW1lbnQoY3VycmVudCk7Ci0gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnRyYXZl
cnNlTmV4dFRyZWVFbGVtZW50KGZhbHNlLCBjaGlsZCwgdHJ1ZSk7Ci0gICAgfQorICAgICAgICBp
ZiAoY2hpbGQuaGFzQ2hpbGRyZW4gJiYgY2hpbGQudHJlZU91dGxpbmUuX3RyZWVFbGVtZW50c0V4
cGFuZGVkU3RhdGVbY2hpbGQuaWRlbnRpZmllcl0gIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAg
IGNoaWxkLmV4cGFuZGVkID0gY2hpbGQudHJlZU91dGxpbmUuX3RyZWVFbGVtZW50c0V4cGFuZGVk
U3RhdGVbY2hpbGQuaWRlbnRpZmllcl07CiAKLSAgICBpZiAoY2hpbGQuaGFzQ2hpbGRyZW4gJiYg
Y2hpbGQudHJlZU91dGxpbmUuX3RyZWVFbGVtZW50c0V4cGFuZGVkU3RhdGVbY2hpbGQuaWRlbnRp
Zmllcl0gIT09IHVuZGVmaW5lZCkKLSAgICAgICAgY2hpbGQuZXhwYW5kZWQgPSBjaGlsZC50cmVl
T3V0bGluZS5fdHJlZUVsZW1lbnRzRXhwYW5kZWRTdGF0ZVtjaGlsZC5pZGVudGlmaWVyXTsKKyAg
ICAgICAgaWYgKHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUpCisgICAgICAgICAgICBjaGlsZC5fYXR0
YWNoKCk7CiAKLSAgICBpZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSkKLSAgICAgICAgY2hpbGQu
X2F0dGFjaCgpOworICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5vbmFkZCkKKyAgICAgICAg
ICAgIHRoaXMudHJlZU91dGxpbmUub25hZGQoY2hpbGQpOwogCi0gICAgaWYgKHRoaXMudHJlZU91
dGxpbmUub25hZGQpCi0gICAgICAgIHRoaXMudHJlZU91dGxpbmUub25hZGQoY2hpbGQpOworICAg
ICAgICBpZiAoaXNGaXJzdENoaWxkICYmIHRoaXMuZXhwYW5kZWQpCisgICAgICAgICAgICB0aGlz
LmV4cGFuZCgpOworICAgIH0KIAotICAgIGlmIChpc0ZpcnN0Q2hpbGQgJiYgdGhpcy5leHBhbmRl
ZCkKLSAgICAgICAgdGhpcy5leHBhbmQoKTsKLX07CisgICAgaW5zZXJ0Q2hpbGQoY2hpbGQsIGlu
ZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFjaGlsZCkKKyAgICAgICAgICAgIHRocm93ICJjaGls
ZCBjYW4ndCBiZSB1bmRlZmluZWQgb3IgbnVsbCI7CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5y
ZW1vdmVDaGlsZEF0SW5kZXggPSBmdW5jdGlvbihjaGlsZEluZGV4LCBzdXBwcmVzc09uRGVzZWxl
Y3QsIHN1cHByZXNzU2VsZWN0U2libGluZykKLXsKLSAgICBpZiAoY2hpbGRJbmRleCA8IDAgfHwg
Y2hpbGRJbmRleCA+PSB0aGlzLmNoaWxkcmVuLmxlbmd0aCkKLSAgICAgICAgdGhyb3cgImNoaWxk
SW5kZXggb3V0IG9mIHJhbmdlIjsKLQotICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5bY2hp
bGRJbmRleF07Ci0gICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoY2hpbGRJbmRleCwgMSk7Ci0KLSAg
ICB2YXIgcGFyZW50ID0gY2hpbGQucGFyZW50OwotICAgIGlmIChjaGlsZC5kZXNlbGVjdChzdXBw
cmVzc09uRGVzZWxlY3QpKSB7Ci0gICAgICAgIGlmIChjaGlsZC5wcmV2aW91c1NpYmxpbmcgJiYg
IXN1cHByZXNzU2VsZWN0U2libGluZykKLSAgICAgICAgICAgIGNoaWxkLnByZXZpb3VzU2libGlu
Zy5zZWxlY3QodHJ1ZSwgZmFsc2UpOwotICAgICAgICBlbHNlIGlmIChjaGlsZC5uZXh0U2libGlu
ZyAmJiAhc3VwcHJlc3NTZWxlY3RTaWJsaW5nKQotICAgICAgICAgICAgY2hpbGQubmV4dFNpYmxp
bmcuc2VsZWN0KHRydWUsIGZhbHNlKTsKLSAgICAgICAgZWxzZSBpZiAoIXN1cHByZXNzU2VsZWN0
U2libGluZykKLSAgICAgICAgICAgIHBhcmVudC5zZWxlY3QodHJ1ZSwgZmFsc2UpOwotICAgIH0K
KyAgICAgICAgdmFyIHByZXZpb3VzQ2hpbGQgPSAoaW5kZXggPiAwID8gdGhpcy5jaGlsZHJlbltp
bmRleCAtIDFdIDogbnVsbCk7CisgICAgICAgIGlmIChwcmV2aW91c0NoaWxkKSB7CisgICAgICAg
ICAgICBwcmV2aW91c0NoaWxkLm5leHRTaWJsaW5nID0gY2hpbGQ7CisgICAgICAgICAgICBjaGls
ZC5wcmV2aW91c1NpYmxpbmcgPSBwcmV2aW91c0NoaWxkOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5nID0gbnVsbDsKKyAgICAgICAgfQogCi0gICAg
aWYgKGNoaWxkLnByZXZpb3VzU2libGluZykKLSAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5n
Lm5leHRTaWJsaW5nID0gY2hpbGQubmV4dFNpYmxpbmc7Ci0gICAgaWYgKGNoaWxkLm5leHRTaWJs
aW5nKQotICAgICAgICBjaGlsZC5uZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgPSBjaGlsZC5w
cmV2aW91c1NpYmxpbmc7CisgICAgICAgIHZhciBuZXh0Q2hpbGQgPSB0aGlzLmNoaWxkcmVuW2lu
ZGV4XTsKKyAgICAgICAgaWYgKG5leHRDaGlsZCkgeworICAgICAgICAgICAgbmV4dENoaWxkLnBy
ZXZpb3VzU2libGluZyA9IGNoaWxkOworICAgICAgICAgICAgY2hpbGQubmV4dFNpYmxpbmcgPSBu
ZXh0Q2hpbGQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGlsZC5uZXh0U2libGlu
ZyA9IG51bGw7CisgICAgICAgIH0KIAotICAgIGlmIChjaGlsZC50cmVlT3V0bGluZSkgewotICAg
ICAgICBjaGlsZC50cmVlT3V0bGluZS5fZm9yZ2V0VHJlZUVsZW1lbnQoY2hpbGQpOwotICAgICAg
ICBjaGlsZC50cmVlT3V0bGluZS5fZm9yZ2V0Q2hpbGRyZW5SZWN1cnNpdmUoY2hpbGQpOwotICAg
IH0KKyAgICAgICAgdmFyIGlzRmlyc3RDaGlsZCA9ICF0aGlzLmNoaWxkcmVuLmxlbmd0aDsKIAot
ICAgIGNoaWxkLl9kZXRhY2goKTsKLSAgICBjaGlsZC50cmVlT3V0bGluZSA9IG51bGw7Ci0gICAg
Y2hpbGQucGFyZW50ID0gbnVsbDsKLSAgICBjaGlsZC5uZXh0U2libGluZyA9IG51bGw7Ci0gICAg
Y2hpbGQucHJldmlvdXNTaWJsaW5nID0gbnVsbDsKKyAgICAgICAgdGhpcy5jaGlsZHJlbi5zcGxp
Y2UoaW5kZXgsIDAsIGNoaWxkKTsKKyAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IHRydWU7Cisg
ICAgICAgIGNoaWxkLnBhcmVudCA9IHRoaXM7CisgICAgICAgIGNoaWxkLnRyZWVPdXRsaW5lID0g
dGhpcy50cmVlT3V0bGluZTsKKyAgICAgICAgY2hpbGQudHJlZU91dGxpbmUuX3JlbWVtYmVyVHJl
ZUVsZW1lbnQoY2hpbGQpOwogCi0gICAgaWYgKHRoaXMudHJlZU91dGxpbmUgJiYgdGhpcy50cmVl
T3V0bGluZS5vbnJlbW92ZSkKLSAgICAgICAgdGhpcy50cmVlT3V0bGluZS5vbnJlbW92ZShjaGls
ZCk7Ci19OworICAgICAgICB2YXIgY3VycmVudCA9IGNoaWxkLmNoaWxkcmVuWzBdOworICAgICAg
ICB3aGlsZSAoY3VycmVudCkgeworICAgICAgICAgICAgY3VycmVudC50cmVlT3V0bGluZSA9IHRo
aXMudHJlZU91dGxpbmU7CisgICAgICAgICAgICBjdXJyZW50LnRyZWVPdXRsaW5lLl9yZW1lbWJl
clRyZWVFbGVtZW50KGN1cnJlbnQpOworICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQudHJh
dmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2UsIGNoaWxkLCB0cnVlKTsKKyAgICAgICAgfQogCi1U
cmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbihjaGlsZCwgc3VwcHJl
c3NPbkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNpYmxpbmcpCi17Ci0gICAgaWYgKCFjaGlsZCkK
LSAgICAgICAgdGhyb3cgImNoaWxkIGNhbid0IGJlIHVuZGVmaW5lZCBvciBudWxsIjsKKyAgICAg
ICAgaWYgKGNoaWxkLmhhc0NoaWxkcmVuICYmIGNoaWxkLnRyZWVPdXRsaW5lLl90cmVlRWxlbWVu
dHNFeHBhbmRlZFN0YXRlW2NoaWxkLmlkZW50aWZpZXJdICE9PSB1bmRlZmluZWQpCisgICAgICAg
ICAgICBjaGlsZC5leHBhbmRlZCA9IGNoaWxkLnRyZWVPdXRsaW5lLl90cmVlRWxlbWVudHNFeHBh
bmRlZFN0YXRlW2NoaWxkLmlkZW50aWZpZXJdOwogCi0gICAgdmFyIGNoaWxkSW5kZXggPSB0aGlz
LmNoaWxkcmVuLmluZGV4T2YoY2hpbGQpOwotICAgIGlmIChjaGlsZEluZGV4ID09PSAtMSkKLSAg
ICAgICAgdGhyb3cgImNoaWxkIG5vdCBmb3VuZCBpbiB0aGlzIG5vZGUncyBjaGlsZHJlbiI7Cisg
ICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKQorICAgICAgICAgICAgY2hpbGQuX2F0
dGFjaCgpOwogCi0gICAgdGhpcy5yZW1vdmVDaGlsZEF0SW5kZXgoY2hpbGRJbmRleCwgc3VwcHJl
c3NPbkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNpYmxpbmcpOworICAgICAgICBpZiAodGhpcy50
cmVlT3V0bGluZS5vbmFkZCkKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUub25hZGQoY2hp
bGQpOwogCi0gICAgaWYgKCF0aGlzLmNoaWxkcmVuLmxlbmd0aCkgewotICAgICAgICB0aGlzLl9s
aXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZSgicGFyZW50Iik7Ci0gICAgICAgIHRoaXMuaGFz
Q2hpbGRyZW4gPSBmYWxzZTsKKyAgICAgICAgaWYgKGlzRmlyc3RDaGlsZCAmJiB0aGlzLmV4cGFu
ZGVkKQorICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKICAgICB9Ci19OwogCi1UcmVlT3V0bGlu
ZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4gPSBmdW5jdGlvbihzdXBwcmVzc09uRGVzZWxlY3Qp
Ci17Ci0gICAgdmFyIHRyZWVPdXRsaW5lID0gdGhpcy50cmVlT3V0bGluZTsKKyAgICByZW1vdmVD
aGlsZEF0SW5kZXgoY2hpbGRJbmRleCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVj
dFNpYmxpbmcpCisgICAgeworICAgICAgICBpZiAoY2hpbGRJbmRleCA8IDAgfHwgY2hpbGRJbmRl
eCA+PSB0aGlzLmNoaWxkcmVuLmxlbmd0aCkKKyAgICAgICAgICAgIHRocm93ICJjaGlsZEluZGV4
IG91dCBvZiByYW5nZSI7CisKKyAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbltjaGls
ZEluZGV4XTsKKyAgICAgICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoY2hpbGRJbmRleCwgMSk7CisK
KyAgICAgICAgdmFyIHBhcmVudCA9IGNoaWxkLnBhcmVudDsKKyAgICAgICAgaWYgKGNoaWxkLmRl
c2VsZWN0KHN1cHByZXNzT25EZXNlbGVjdCkpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZC5wcmV2
aW91c1NpYmxpbmcgJiYgIXN1cHByZXNzU2VsZWN0U2libGluZykKKyAgICAgICAgICAgICAgICBj
aGlsZC5wcmV2aW91c1NpYmxpbmcuc2VsZWN0KHRydWUsIGZhbHNlKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGNoaWxkLm5leHRTaWJsaW5nICYmICFzdXBwcmVzc1NlbGVjdFNpYmxpbmcpCisgICAg
ICAgICAgICAgICAgY2hpbGQubmV4dFNpYmxpbmcuc2VsZWN0KHRydWUsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKCFzdXBwcmVzc1NlbGVjdFNpYmxpbmcpCisgICAgICAgICAgICAgICAg
cGFyZW50LnNlbGVjdCh0cnVlLCBmYWxzZSk7CisgICAgICAgIH0KIAotICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkgewotICAgICAgICB2YXIgY2hpbGQg
PSB0aGlzLmNoaWxkcmVuW2ldOwotICAgICAgICBjaGlsZC5kZXNlbGVjdChzdXBwcmVzc09uRGVz
ZWxlY3QpOworICAgICAgICBpZiAoY2hpbGQucHJldmlvdXNTaWJsaW5nKQorICAgICAgICAgICAg
Y2hpbGQucHJldmlvdXNTaWJsaW5nLm5leHRTaWJsaW5nID0gY2hpbGQubmV4dFNpYmxpbmc7Cisg
ICAgICAgIGlmIChjaGlsZC5uZXh0U2libGluZykKKyAgICAgICAgICAgIGNoaWxkLm5leHRTaWJs
aW5nLnByZXZpb3VzU2libGluZyA9IGNoaWxkLnByZXZpb3VzU2libGluZzsKIAogICAgICAgICBp
ZiAoY2hpbGQudHJlZU91dGxpbmUpIHsKICAgICAgICAgICAgIGNoaWxkLnRyZWVPdXRsaW5lLl9m
b3JnZXRUcmVlRWxlbWVudChjaGlsZCk7CkBAIC0yMTksMzc2ICsxNzksNDM5IEBAIFRyZWVPdXRs
aW5lLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbiA9IGZ1bmN0aW9uKHN1cHByZXNzT25EZXNlbGVj
dCkKICAgICAgICAgY2hpbGQubmV4dFNpYmxpbmcgPSBudWxsOwogICAgICAgICBjaGlsZC5wcmV2
aW91c1NpYmxpbmcgPSBudWxsOwogCi0gICAgICAgIGlmICh0cmVlT3V0bGluZSAmJiB0cmVlT3V0
bGluZS5vbnJlbW92ZSkKLSAgICAgICAgICAgIHRyZWVPdXRsaW5lLm9ucmVtb3ZlKGNoaWxkKTsK
KyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUgJiYgdGhpcy50cmVlT3V0bGluZS5vbnJlbW92
ZSkKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUub25yZW1vdmUoY2hpbGQpOwogICAgIH0K
IAotICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLX07CisgICAgcmVtb3ZlQ2hpbGQoY2hpbGQsIHN1
cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NTZWxlY3RTaWJsaW5nKQorICAgIHsKKyAgICAgICAg
aWYgKCFjaGlsZCkKKyAgICAgICAgICAgIHRocm93ICJjaGlsZCBjYW4ndCBiZSB1bmRlZmluZWQg
b3IgbnVsbCI7CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlblJlY3Vyc2l2
ZSA9IGZ1bmN0aW9uKHN1cHByZXNzT25EZXNlbGVjdCkKLXsKLSAgICB2YXIgY2hpbGRyZW5Ub1Jl
bW92ZSA9IHRoaXMuY2hpbGRyZW47CisgICAgICAgIHZhciBjaGlsZEluZGV4ID0gdGhpcy5jaGls
ZHJlbi5pbmRleE9mKGNoaWxkKTsKKyAgICAgICAgaWYgKGNoaWxkSW5kZXggPT09IC0xKQorICAg
ICAgICAgICAgdGhyb3cgImNoaWxkIG5vdCBmb3VuZCBpbiB0aGlzIG5vZGUncyBjaGlsZHJlbiI7
CiAKLSAgICB2YXIgdHJlZU91dGxpbmUgPSB0aGlzLnRyZWVPdXRsaW5lOworICAgICAgICB0aGlz
LnJlbW92ZUNoaWxkQXRJbmRleChjaGlsZEluZGV4LCBzdXBwcmVzc09uRGVzZWxlY3QsIHN1cHBy
ZXNzU2VsZWN0U2libGluZyk7CiAKLSAgICB2YXIgY2hpbGQgPSB0aGlzLmNoaWxkcmVuWzBdOwot
ICAgIHdoaWxlIChjaGlsZCkgewotICAgICAgICBpZiAoY2hpbGQuY2hpbGRyZW4ubGVuZ3RoKQot
ICAgICAgICAgICAgY2hpbGRyZW5Ub1JlbW92ZSA9IGNoaWxkcmVuVG9SZW1vdmUuY29uY2F0KGNo
aWxkLmNoaWxkcmVuKTsKLSAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJzZU5leHRUcmVlRWxl
bWVudChmYWxzZSwgdGhpcywgdHJ1ZSk7CisgICAgICAgIGlmICghdGhpcy5jaGlsZHJlbi5sZW5n
dGgpIHsKKyAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QucmVtb3ZlKCJw
YXJlbnQiKTsKKyAgICAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxzZTsKKyAgICAgICAg
fQogICAgIH0KIAotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5Ub1JlbW92ZS5sZW5n
dGg7ICsraSkgewotICAgICAgICBjaGlsZCA9IGNoaWxkcmVuVG9SZW1vdmVbaV07Ci0gICAgICAg
IGNoaWxkLmRlc2VsZWN0KHN1cHByZXNzT25EZXNlbGVjdCk7CisgICAgcmVtb3ZlQ2hpbGRyZW4o
c3VwcHJlc3NPbkRlc2VsZWN0KQorICAgIHsKKyAgICAgICAgdmFyIHRyZWVPdXRsaW5lID0gdGhp
cy50cmVlT3V0bGluZTsKIAotICAgICAgICBpZiAoY2hpbGQudHJlZU91dGxpbmUpCi0gICAgICAg
ICAgICBjaGlsZC50cmVlT3V0bGluZS5fZm9yZ2V0VHJlZUVsZW1lbnQoY2hpbGQpOworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07CisgICAgICAgICAgICBjaGlsZC5k
ZXNlbGVjdChzdXBwcmVzc09uRGVzZWxlY3QpOwogCi0gICAgICAgIGNoaWxkLl9kZXRhY2goKTsK
LSAgICAgICAgY2hpbGQuY2hpbGRyZW4gPSBbXTsKLSAgICAgICAgY2hpbGQudHJlZU91dGxpbmUg
PSBudWxsOwotICAgICAgICBjaGlsZC5wYXJlbnQgPSBudWxsOwotICAgICAgICBjaGlsZC5uZXh0
U2libGluZyA9IG51bGw7Ci0gICAgICAgIGNoaWxkLnByZXZpb3VzU2libGluZyA9IG51bGw7Cisg
ICAgICAgICAgICBpZiAoY2hpbGQudHJlZU91dGxpbmUpIHsKKyAgICAgICAgICAgICAgICBjaGls
ZC50cmVlT3V0bGluZS5fZm9yZ2V0VHJlZUVsZW1lbnQoY2hpbGQpOworICAgICAgICAgICAgICAg
IGNoaWxkLnRyZWVPdXRsaW5lLl9mb3JnZXRDaGlsZHJlblJlY3Vyc2l2ZShjaGlsZCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGNoaWxkLl9kZXRhY2goKTsKKyAgICAgICAgICAgIGNo
aWxkLnRyZWVPdXRsaW5lID0gbnVsbDsKKyAgICAgICAgICAgIGNoaWxkLnBhcmVudCA9IG51bGw7
CisgICAgICAgICAgICBjaGlsZC5uZXh0U2libGluZyA9IG51bGw7CisgICAgICAgICAgICBjaGls
ZC5wcmV2aW91c1NpYmxpbmcgPSBudWxsOworCisgICAgICAgICAgICBpZiAodHJlZU91dGxpbmUg
JiYgdHJlZU91dGxpbmUub25yZW1vdmUpCisgICAgICAgICAgICAgICAgdHJlZU91dGxpbmUub25y
ZW1vdmUoY2hpbGQpOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRyZWVPdXRsaW5lICYmIHRy
ZWVPdXRsaW5lLm9ucmVtb3ZlKQotICAgICAgICAgICAgdHJlZU91dGxpbmUub25yZW1vdmUoY2hp
bGQpOworICAgICAgICB0aGlzLmNoaWxkcmVuID0gW107CiAgICAgfQogCi0gICAgdGhpcy5jaGls
ZHJlbiA9IFtdOwotfTsKKyAgICByZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZShzdXBwcmVzc09uRGVz
ZWxlY3QpCisgICAgeworICAgICAgICB2YXIgY2hpbGRyZW5Ub1JlbW92ZSA9IHRoaXMuY2hpbGRy
ZW47CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5fcmVtZW1iZXJUcmVlRWxlbWVudCA9IGZ1bmN0
aW9uKGVsZW1lbnQpCi17Ci0gICAgaWYgKCF0aGlzLl9rbm93blRyZWVFbGVtZW50c1tlbGVtZW50
LmlkZW50aWZpZXJdKQotICAgICAgICB0aGlzLl9rbm93blRyZWVFbGVtZW50c1tlbGVtZW50Lmlk
ZW50aWZpZXJdID0gW107CisgICAgICAgIHZhciB0cmVlT3V0bGluZSA9IHRoaXMudHJlZU91dGxp
bmU7CiAKLSAgICAvLyBjaGVjayBpZiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5IGtub3duCi0gICAg
dmFyIGVsZW1lbnRzID0gdGhpcy5fa25vd25UcmVlRWxlbWVudHNbZWxlbWVudC5pZGVudGlmaWVy
XTsKLSAgICBpZiAoZWxlbWVudHMuaW5kZXhPZihlbGVtZW50KSAhPT0gLTEpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlblswXTsKKyAgICAgICAgd2hp
bGUgKGNoaWxkKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGRyZW4ubGVuZ3RoKQorICAg
ICAgICAgICAgICAgIGNoaWxkcmVuVG9SZW1vdmUgPSBjaGlsZHJlblRvUmVtb3ZlLmNvbmNhdChj
aGlsZC5jaGlsZHJlbik7CisgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLnRyYXZlcnNlTmV4dFRy
ZWVFbGVtZW50KGZhbHNlLCB0aGlzLCB0cnVlKTsKKyAgICAgICAgfQogCi0gICAgLy8gYWRkIHRo
ZSBlbGVtZW50Ci0gICAgZWxlbWVudHMucHVzaChlbGVtZW50KTsKLX07CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5Ub1JlbW92ZS5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgY2hpbGQgPSBjaGlsZHJlblRvUmVtb3ZlW2ldOworICAgICAgICAgICAgY2hpbGQuZGVzZWxl
Y3Qoc3VwcHJlc3NPbkRlc2VsZWN0KTsKIAotVHJlZU91dGxpbmUucHJvdG90eXBlLl9mb3JnZXRU
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnQpCi17Ci0gICAgaWYgKHRoaXMuc2VsZWN0ZWRU
cmVlRWxlbWVudCA9PT0gZWxlbWVudCkKLSAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50
ID0gbnVsbDsKLSAgICBpZiAodGhpcy5fa25vd25UcmVlRWxlbWVudHNbZWxlbWVudC5pZGVudGlm
aWVyXSkKLSAgICAgICAgdGhpcy5fa25vd25UcmVlRWxlbWVudHNbZWxlbWVudC5pZGVudGlmaWVy
XS5yZW1vdmUoZWxlbWVudCwgdHJ1ZSk7Ci19OworICAgICAgICAgICAgaWYgKGNoaWxkLnRyZWVP
dXRsaW5lKQorICAgICAgICAgICAgICAgIGNoaWxkLnRyZWVPdXRsaW5lLl9mb3JnZXRUcmVlRWxl
bWVudChjaGlsZCk7CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5fZm9yZ2V0Q2hpbGRyZW5SZWN1
cnNpdmUgPSBmdW5jdGlvbihwYXJlbnRFbGVtZW50KQotewotICAgIHZhciBjaGlsZCA9IHBhcmVu
dEVsZW1lbnQuY2hpbGRyZW5bMF07Ci0gICAgd2hpbGUgKGNoaWxkKSB7Ci0gICAgICAgIHRoaXMu
X2ZvcmdldFRyZWVFbGVtZW50KGNoaWxkKTsKLSAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJz
ZU5leHRUcmVlRWxlbWVudChmYWxzZSwgcGFyZW50RWxlbWVudCwgdHJ1ZSk7CisgICAgICAgICAg
ICBjaGlsZC5fZGV0YWNoKCk7CisgICAgICAgICAgICBjaGlsZC5jaGlsZHJlbiA9IFtdOworICAg
ICAgICAgICAgY2hpbGQudHJlZU91dGxpbmUgPSBudWxsOworICAgICAgICAgICAgY2hpbGQucGFy
ZW50ID0gbnVsbDsKKyAgICAgICAgICAgIGNoaWxkLm5leHRTaWJsaW5nID0gbnVsbDsKKyAgICAg
ICAgICAgIGNoaWxkLnByZXZpb3VzU2libGluZyA9IG51bGw7CisKKyAgICAgICAgICAgIGlmICh0
cmVlT3V0bGluZSAmJiB0cmVlT3V0bGluZS5vbnJlbW92ZSkKKyAgICAgICAgICAgICAgICB0cmVl
T3V0bGluZS5vbnJlbW92ZShjaGlsZCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmNoaWxk
cmVuID0gW107CiAgICAgfQotfTsKIAotVHJlZU91dGxpbmUucHJvdG90eXBlLmdldENhY2hlZFRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCi17Ci0gICAgaWYgKCFyZXBy
ZXNlbnRlZE9iamVjdCkKLSAgICAgICAgcmV0dXJuIG51bGw7CisgICAgX3JlbWVtYmVyVHJlZUVs
ZW1lbnQoZWxlbWVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fa25vd25UcmVlRWxlbWVu
dHNbZWxlbWVudC5pZGVudGlmaWVyXSkKKyAgICAgICAgICAgIHRoaXMuX2tub3duVHJlZUVsZW1l
bnRzW2VsZW1lbnQuaWRlbnRpZmllcl0gPSBbXTsKIAotICAgIGlmIChyZXByZXNlbnRlZE9iamVj
dC5fX3RyZWVFbGVtZW50SWRlbnRpZmllcikgewotICAgICAgICAvLyBJZiB0aGlzIHJlcHJlc2Vu
dGVkT2JqZWN0IGhhcyBhIHRyZWUgZWxlbWVudCBpZGVudGlmaWVyLCBhbmQgaXQgaXMgYSBrbm93
biBUcmVlRWxlbWVudAotICAgICAgICAvLyBpbiBvdXIgdHJlZSB3ZSBjYW4ganVzdCByZXR1cm4g
dGhhdCB0cmVlIGVsZW1lbnQuCi0gICAgICAgIHZhciBlbGVtZW50cyA9IHRoaXMuX2tub3duVHJl
ZUVsZW1lbnRzW3JlcHJlc2VudGVkT2JqZWN0Ll9fdHJlZUVsZW1lbnRJZGVudGlmaWVyXTsKLSAg
ICAgICAgaWYgKGVsZW1lbnRzKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVs
ZW1lbnRzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5yZXBy
ZXNlbnRlZE9iamVjdCA9PT0gcmVwcmVzZW50ZWRPYmplY3QpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBlbGVtZW50c1tpXTsKLSAgICAgICAgfQorICAgICAgICAvLyBjaGVjayBpZiB0aGUg
ZWxlbWVudCBpcyBhbHJlYWR5IGtub3duCisgICAgICAgIHZhciBlbGVtZW50cyA9IHRoaXMuX2tu
b3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl07CisgICAgICAgIGlmIChlbGVtZW50
cy5pbmRleE9mKGVsZW1lbnQpICE9PSAtMSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAvLyBhZGQgdGhlIGVsZW1lbnQKKyAgICAgICAgZWxlbWVudHMucHVzaChlbGVtZW50KTsKICAg
ICB9Ci0gICAgcmV0dXJuIG51bGw7Ci19OwogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUuZmluZFRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QsIGlzQW5jZXN0b3IsIGdldFBh
cmVudCkKLXsKLSAgICBpZiAoIXJlcHJlc2VudGVkT2JqZWN0KQotICAgICAgICByZXR1cm4gbnVs
bDsKKyAgICBfZm9yZ2V0VHJlZUVsZW1lbnQoZWxlbWVudCkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQgPT09IGVsZW1lbnQpCisgICAgICAgICAgICB0aGlzLnNl
bGVjdGVkVHJlZUVsZW1lbnQgPSBudWxsOworICAgICAgICBpZiAodGhpcy5fa25vd25UcmVlRWxl
bWVudHNbZWxlbWVudC5pZGVudGlmaWVyXSkKKyAgICAgICAgICAgIHRoaXMuX2tub3duVHJlZUVs
ZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl0ucmVtb3ZlKGVsZW1lbnQsIHRydWUpOworICAgIH0K
IAotICAgIHZhciBjYWNoZWRFbGVtZW50ID0gdGhpcy5nZXRDYWNoZWRUcmVlRWxlbWVudChyZXBy
ZXNlbnRlZE9iamVjdCk7Ci0gICAgaWYgKGNhY2hlZEVsZW1lbnQpCi0gICAgICAgIHJldHVybiBj
YWNoZWRFbGVtZW50OwotCi0gICAgLy8gVGhlIHJlcHJlc2VudGVkT2JqZWN0IGlzbid0IGtub3du
LCBzbyB3ZSBzdGFydCBhdCB0aGUgdG9wIG9mIHRoZSB0cmVlIGFuZCB3b3JrIGRvd24gdG8gZmlu
ZCB0aGUgZmlyc3QKLSAgICAvLyB0cmVlIGVsZW1lbnQgdGhhdCByZXByZXNlbnRzIHJlcHJlc2Vu
dGVkT2JqZWN0IG9yIG9uZSBvZiBpdHMgYW5jZXN0b3JzLgotICAgIHZhciBpdGVtOwotICAgIHZh
ciBmb3VuZCA9IGZhbHNlOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5s
ZW5ndGg7ICsraSkgewotICAgICAgICBpdGVtID0gdGhpcy5jaGlsZHJlbltpXTsKLSAgICAgICAg
aWYgKGl0ZW0ucmVwcmVzZW50ZWRPYmplY3QgPT09IHJlcHJlc2VudGVkT2JqZWN0IHx8IChpc0Fu
Y2VzdG9yICYmIGlzQW5jZXN0b3IoaXRlbS5yZXByZXNlbnRlZE9iamVjdCwgcmVwcmVzZW50ZWRP
YmplY3QpKSkgewotICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7
CisgICAgX2ZvcmdldENoaWxkcmVuUmVjdXJzaXZlKHBhcmVudEVsZW1lbnQpCisgICAgeworICAg
ICAgICB2YXIgY2hpbGQgPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuWzBdOworICAgICAgICB3aGls
ZSAoY2hpbGQpIHsKKyAgICAgICAgICAgIHRoaXMuX2ZvcmdldFRyZWVFbGVtZW50KGNoaWxkKTsK
KyAgICAgICAgICAgIGNoaWxkID0gY2hpbGQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2Us
IHBhcmVudEVsZW1lbnQsIHRydWUpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFmb3Vu
ZCkKKyAgICBnZXRDYWNoZWRUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7Cisg
ICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsK
KworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QuX190cmVlRWxlbWVudElkZW50aWZpZXIp
IHsKKyAgICAgICAgICAgIC8vIElmIHRoaXMgcmVwcmVzZW50ZWRPYmplY3QgaGFzIGEgdHJlZSBl
bGVtZW50IGlkZW50aWZpZXIsIGFuZCBpdCBpcyBhIGtub3duIFRyZWVFbGVtZW50CisgICAgICAg
ICAgICAvLyBpbiBvdXIgdHJlZSB3ZSBjYW4ganVzdCByZXR1cm4gdGhhdCB0cmVlIGVsZW1lbnQu
CisgICAgICAgICAgICB2YXIgZWxlbWVudHMgPSB0aGlzLl9rbm93blRyZWVFbGVtZW50c1tyZXBy
ZXNlbnRlZE9iamVjdC5fX3RyZWVFbGVtZW50SWRlbnRpZmllcl07CisgICAgICAgICAgICBpZiAo
ZWxlbWVudHMpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRz
Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0ucmVwcmVz
ZW50ZWRPYmplY3QgPT09IHJlcHJlc2VudGVkT2JqZWN0KQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVsZW1lbnRzW2ldOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAg
IHJldHVybiBudWxsOwotCi0gICAgLy8gTWFrZSBzdXJlIHRoZSBpdGVtIHRoYXQgd2UgZm91bmQg
aXMgY29ubmVjdGVkIHRvIHRoZSByb290IG9mIHRoZSB0cmVlLgotICAgIC8vIEJ1aWxkIHVwIGEg
bGlzdCBvZiByZXByZXNlbnRlZE9iamVjdCdzIGFuY2VzdG9ycyB0aGF0IGFyZW4ndCBhbHJlYWR5
IGluIG91ciB0cmVlLgotICAgIHZhciBhbmNlc3RvcnMgPSBbXTsKLSAgICB2YXIgY3VycmVudE9i
amVjdCA9IHJlcHJlc2VudGVkT2JqZWN0OwotICAgIHdoaWxlIChjdXJyZW50T2JqZWN0KSB7Ci0g
ICAgICAgIGFuY2VzdG9ycy51bnNoaWZ0KGN1cnJlbnRPYmplY3QpOwotICAgICAgICBpZiAoY3Vy
cmVudE9iamVjdCA9PT0gaXRlbS5yZXByZXNlbnRlZE9iamVjdCkKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjdXJyZW50T2JqZWN0ID0gZ2V0UGFyZW50KGN1cnJlbnRPYmplY3QpOwogICAg
IH0KIAotICAgIC8vIEZvciBlYWNoIG9mIHRob3NlIGFuY2VzdG9ycyB3ZSBwb3B1bGF0ZSB0aGVt
IHRvIGZpbGwgaW4gdGhlIHRyZWUuCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbmNlc3RvcnMu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGNhbGwgZmluZFRy
ZWVFbGVtZW50IHdpdGggdGhlIHNhbWUgcmVwcmVzZW50ZWRPYmplY3QKLSAgICAgICAgLy8gYWdh
aW4sIHRvIHByZXZlbnQgaW5maW5pdGUgcmVjdXJzaW9uLgotICAgICAgICBpZiAoYW5jZXN0b3Jz
W2ldID09PSByZXByZXNlbnRlZE9iamVjdCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgZmFzdGVyIHRoYW4gZmluZFRyZWVF
bGVtZW50IHNpbmNlIHdlIHdpbGwga25vdyB0aGUgbmV4dAotICAgICAgICAvLyBhbmNlc3RvciBl
eGlzdHMgaW4gdGhlIHRyZWUuCi0gICAgICAgIGl0ZW0gPSB0aGlzLmZpbmRUcmVlRWxlbWVudChh
bmNlc3RvcnNbaV0sIGlzQW5jZXN0b3IsIGdldFBhcmVudCk7Ci0gICAgICAgIGlmIChpdGVtKQot
ICAgICAgICAgICAgaXRlbS5vbnBvcHVsYXRlKCk7Ci0gICAgfQorICAgIGZpbmRUcmVlRWxlbWVu
dChyZXByZXNlbnRlZE9iamVjdCwgaXNBbmNlc3RvciwgZ2V0UGFyZW50KQorICAgIHsKKyAgICAg
ICAgaWYgKCFyZXByZXNlbnRlZE9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisg
ICAgICAgIHZhciBjYWNoZWRFbGVtZW50ID0gdGhpcy5nZXRDYWNoZWRUcmVlRWxlbWVudChyZXBy
ZXNlbnRlZE9iamVjdCk7CisgICAgICAgIGlmIChjYWNoZWRFbGVtZW50KQorICAgICAgICAgICAg
cmV0dXJuIGNhY2hlZEVsZW1lbnQ7CisKKyAgICAgICAgLy8gVGhlIHJlcHJlc2VudGVkT2JqZWN0
IGlzbid0IGtub3duLCBzbyB3ZSBzdGFydCBhdCB0aGUgdG9wIG9mIHRoZSB0cmVlIGFuZCB3b3Jr
IGRvd24gdG8gZmluZCB0aGUgZmlyc3QKKyAgICAgICAgLy8gdHJlZSBlbGVtZW50IHRoYXQgcmVw
cmVzZW50cyByZXByZXNlbnRlZE9iamVjdCBvciBvbmUgb2YgaXRzIGFuY2VzdG9ycy4KKyAgICAg
ICAgdmFyIGl0ZW07CisgICAgICAgIHZhciBmb3VuZCA9IGZhbHNlOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGl0
ZW0gPSB0aGlzLmNoaWxkcmVuW2ldOworICAgICAgICAgICAgaWYgKGl0ZW0ucmVwcmVzZW50ZWRP
YmplY3QgPT09IHJlcHJlc2VudGVkT2JqZWN0IHx8IChpc0FuY2VzdG9yICYmIGlzQW5jZXN0b3Io
aXRlbS5yZXByZXNlbnRlZE9iamVjdCwgcmVwcmVzZW50ZWRPYmplY3QpKSkgeworICAgICAgICAg
ICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQogCi0gICAgcmV0dXJuIHRoaXMuZ2V0Q2FjaGVkVHJlZUVsZW1lbnQocmVw
cmVzZW50ZWRPYmplY3QpOwotfTsKKyAgICAgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgICAgIHJl
dHVybiBudWxsOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgaXRlbSB0aGF0IHdlIGZvdW5k
IGlzIGNvbm5lY3RlZCB0byB0aGUgcm9vdCBvZiB0aGUgdHJlZS4KKyAgICAgICAgLy8gQnVpbGQg
dXAgYSBsaXN0IG9mIHJlcHJlc2VudGVkT2JqZWN0J3MgYW5jZXN0b3JzIHRoYXQgYXJlbid0IGFs
cmVhZHkgaW4gb3VyIHRyZWUuCisgICAgICAgIHZhciBhbmNlc3RvcnMgPSBbXTsKKyAgICAgICAg
dmFyIGN1cnJlbnRPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAgd2hpbGUgKGN1
cnJlbnRPYmplY3QpIHsKKyAgICAgICAgICAgIGFuY2VzdG9ycy51bnNoaWZ0KGN1cnJlbnRPYmpl
Y3QpOworICAgICAgICAgICAgaWYgKGN1cnJlbnRPYmplY3QgPT09IGl0ZW0ucmVwcmVzZW50ZWRP
YmplY3QpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjdXJyZW50T2JqZWN0
ID0gZ2V0UGFyZW50KGN1cnJlbnRPYmplY3QpOworICAgICAgICB9CiAKLVRyZWVPdXRsaW5lLnBy
b3RvdHlwZS5fdHJlZUVsZW1lbnREaWRDaGFuZ2UgPSBmdW5jdGlvbih0cmVlRWxlbWVudCkKLXsK
LSAgICBpZiAodHJlZUVsZW1lbnQudHJlZU91dGxpbmUgIT09IHRoaXMpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgLy8gRm9yIGVhY2ggb2YgdGhvc2UgYW5jZXN0b3JzIHdlIHBvcHVsYXRlIHRo
ZW0gdG8gZmlsbCBpbiB0aGUgdHJlZS4KKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbmNl
c3RvcnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBj
YWxsIGZpbmRUcmVlRWxlbWVudCB3aXRoIHRoZSBzYW1lIHJlcHJlc2VudGVkT2JqZWN0CisgICAg
ICAgICAgICAvLyBhZ2FpbiwgdG8gcHJldmVudCBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgICAg
ICAgICBpZiAoYW5jZXN0b3JzW2ldID09PSByZXByZXNlbnRlZE9iamVjdCkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gRklYTUU6IHdlIGNvdWxkIGRvIHNvbWV0
aGluZyBmYXN0ZXIgdGhhbiBmaW5kVHJlZUVsZW1lbnQgc2luY2Ugd2Ugd2lsbCBrbm93IHRoZSBu
ZXh0CisgICAgICAgICAgICAvLyBhbmNlc3RvciBleGlzdHMgaW4gdGhlIHRyZWUuCisgICAgICAg
ICAgICBpdGVtID0gdGhpcy5maW5kVHJlZUVsZW1lbnQoYW5jZXN0b3JzW2ldLCBpc0FuY2VzdG9y
LCBnZXRQYXJlbnQpOworICAgICAgICAgICAgaWYgKGl0ZW0pCisgICAgICAgICAgICAgICAgaXRl
bS5vbnBvcHVsYXRlKCk7CisgICAgICAgIH0KIAotICAgIGlmICh0aGlzLm9uY2hhbmdlKQotICAg
ICAgICB0aGlzLm9uY2hhbmdlKHRyZWVFbGVtZW50KTsKLX07CisgICAgICAgIHJldHVybiB0aGlz
LmdldENhY2hlZFRyZWVFbGVtZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICB9CiAKLVRyZWVP
dXRsaW5lLnByb3RvdHlwZS50cmVlRWxlbWVudEZyb21Ob2RlID0gZnVuY3Rpb24obm9kZSkKLXsK
LSAgICB2YXIgbGlzdE5vZGUgPSBub2RlLmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWVJ
bkFycmF5KFsib2wiLCAibGkiXSk7Ci0gICAgaWYgKGxpc3ROb2RlKQotICAgICAgICByZXR1cm4g
bGlzdE5vZGUucGFyZW50VHJlZUVsZW1lbnQgfHwgbGlzdE5vZGUudHJlZUVsZW1lbnQ7Ci0gICAg
cmV0dXJuIG51bGw7Ci19OworICAgIF90cmVlRWxlbWVudERpZENoYW5nZSh0cmVlRWxlbWVudCkK
KyAgICB7CisgICAgICAgIGlmICh0cmVlRWxlbWVudC50cmVlT3V0bGluZSAhPT0gdGhpcykKKyAg
ICAgICAgICAgIHJldHVybjsKIAotVHJlZU91dGxpbmUucHJvdG90eXBlLnRyZWVFbGVtZW50RnJv
bVBvaW50ID0gZnVuY3Rpb24oeCwgeSkKLXsKLSAgICB2YXIgbm9kZSA9IHRoaXMuX2NoaWxkcmVu
TGlzdE5vZGUub3duZXJEb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHgsIHkpOwotICAgIGlmICgh
bm9kZSkKKyAgICAgICAgaWYgKHRoaXMub25jaGFuZ2UpCisgICAgICAgICAgICB0aGlzLm9uY2hh
bmdlKHRyZWVFbGVtZW50KTsKKyAgICB9CisKKyAgICB0cmVlRWxlbWVudEZyb21Ob2RlKG5vZGUp
CisgICAgeworICAgICAgICB2YXIgbGlzdE5vZGUgPSBub2RlLmVuY2xvc2luZ05vZGVPclNlbGZX
aXRoTm9kZU5hbWVJbkFycmF5KFsib2wiLCAibGkiXSk7CisgICAgICAgIGlmIChsaXN0Tm9kZSkK
KyAgICAgICAgICAgIHJldHVybiBsaXN0Tm9kZS5wYXJlbnRUcmVlRWxlbWVudCB8fCBsaXN0Tm9k
ZS50cmVlRWxlbWVudDsKICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQogCi0gICAgcmV0dXJu
IHRoaXMudHJlZUVsZW1lbnRGcm9tTm9kZShub2RlKTsKLX07CisgICAgdHJlZUVsZW1lbnRGcm9t
UG9pbnQoeCwgeSkKKyAgICB7CisgICAgICAgIHZhciBub2RlID0gdGhpcy5fY2hpbGRyZW5MaXN0
Tm9kZS5vd25lckRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7CisgICAgICAgIGlmICgh
bm9kZSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUu
X3RyZWVLZXlEb3duID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgaWYgKGV2ZW50LnRhcmdldCAh
PT0gdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCF0
aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtl
eSB8fCBldmVudC5jdHJsS2V5KQotICAgICAgICByZXR1cm47Ci0KLSAgICB2YXIgaGFuZGxlZCA9
IGZhbHNlOwotICAgIHZhciBuZXh0U2VsZWN0ZWRFbGVtZW50OwotICAgIGlmIChldmVudC5rZXlJ
ZGVudGlmaWVyID09PSAiVXAiICYmICFldmVudC5hbHRLZXkpIHsKLSAgICAgICAgbmV4dFNlbGVj
dGVkRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC50cmF2ZXJzZVByZXZpb3VzVHJl
ZUVsZW1lbnQodHJ1ZSk7Ci0gICAgICAgIHdoaWxlIChuZXh0U2VsZWN0ZWRFbGVtZW50ICYmICFu
ZXh0U2VsZWN0ZWRFbGVtZW50LnNlbGVjdGFibGUpCi0gICAgICAgICAgICBuZXh0U2VsZWN0ZWRF
bGVtZW50ID0gbmV4dFNlbGVjdGVkRWxlbWVudC50cmF2ZXJzZVByZXZpb3VzVHJlZUVsZW1lbnQo
IXRoaXMuZXhwYW5kVHJlZUVsZW1lbnRzV2hlbkFycm93aW5nKTsKLSAgICAgICAgaGFuZGxlZCA9
IG5leHRTZWxlY3RlZEVsZW1lbnQgPyB0cnVlIDogZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChldmVu
dC5rZXlJZGVudGlmaWVyID09PSAiRG93biIgJiYgIWV2ZW50LmFsdEtleSkgewotICAgICAgICBu
ZXh0U2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnRyYXZlcnNlTmV4
dFRyZWVFbGVtZW50KHRydWUpOwotICAgICAgICB3aGlsZSAobmV4dFNlbGVjdGVkRWxlbWVudCAm
JiAhbmV4dFNlbGVjdGVkRWxlbWVudC5zZWxlY3RhYmxlKQotICAgICAgICAgICAgbmV4dFNlbGVj
dGVkRWxlbWVudCA9IG5leHRTZWxlY3RlZEVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQo
IXRoaXMuZXhwYW5kVHJlZUVsZW1lbnRzV2hlbkFycm93aW5nKTsKLSAgICAgICAgaGFuZGxlZCA9
IG5leHRTZWxlY3RlZEVsZW1lbnQgPyB0cnVlIDogZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChldmVu
dC5rZXlJZGVudGlmaWVyID09PSAiTGVmdCIpIHsKLSAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRU
cmVlRWxlbWVudC5leHBhbmRlZCkgewotICAgICAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkKLSAg
ICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuY29sbGFwc2VSZWN1cnNpdmVs
eSgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVl
RWxlbWVudC5jb2xsYXBzZSgpOwotICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7Ci0gICAgICAg
IH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnBhcmVudCAmJiAhdGhpcy5zZWxl
Y3RlZFRyZWVFbGVtZW50LnBhcmVudC5yb290KSB7Ci0gICAgICAgICAgICBoYW5kbGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucGFyZW50LnNlbGVj
dGFibGUpIHsKLSAgICAgICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5zZWxl
Y3RlZFRyZWVFbGVtZW50LnBhcmVudDsKLSAgICAgICAgICAgICAgICB3aGlsZSAobmV4dFNlbGVj
dGVkRWxlbWVudCAmJiAhbmV4dFNlbGVjdGVkRWxlbWVudC5zZWxlY3RhYmxlKQotICAgICAgICAg
ICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gbmV4dFNlbGVjdGVkRWxlbWVudC5wYXJl
bnQ7Ci0gICAgICAgICAgICAgICAgaGFuZGxlZCA9IG5leHRTZWxlY3RlZEVsZW1lbnQgPyB0cnVl
IDogZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVu
dC5wYXJlbnQpCi0gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnBhcmVu
dC5jb2xsYXBzZSgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChldmVudC5rZXlJZGVudGlm
aWVyID09PSAiUmlnaHQiKSB7Ci0gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50
LnJldmVhbGVkKCkpIHsKLSAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXZl
YWwoKTsKLSAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKHRo
aXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5oYXNDaGlsZHJlbikgewotICAgICAgICAgICAgaGFuZGxl
ZCA9IHRydWU7CisgICAgICAgIHJldHVybiB0aGlzLnRyZWVFbGVtZW50RnJvbU5vZGUobm9kZSk7
CisgICAgfQorCisgICAgX3RyZWVLZXlEb3duKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2
ZW50LnRhcmdldCAhPT0gdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCB8fCBldmVudC5zaGlm
dEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXkpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdmFyIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgdmFyIG5leHRTZWxl
Y3RlZEVsZW1lbnQ7CisgICAgICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVXAiICYm
ICFldmVudC5hbHRLZXkpIHsKKyAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQgPSB0aGlz
LnNlbGVjdGVkVHJlZUVsZW1lbnQudHJhdmVyc2VQcmV2aW91c1RyZWVFbGVtZW50KHRydWUpOwor
ICAgICAgICAgICAgd2hpbGUgKG5leHRTZWxlY3RlZEVsZW1lbnQgJiYgIW5leHRTZWxlY3RlZEVs
ZW1lbnQuc2VsZWN0YWJsZSkKKyAgICAgICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0g
bmV4dFNlbGVjdGVkRWxlbWVudC50cmF2ZXJzZVByZXZpb3VzVHJlZUVsZW1lbnQoIXRoaXMuZXhw
YW5kVHJlZUVsZW1lbnRzV2hlbkFycm93aW5nKTsKKyAgICAgICAgICAgIGhhbmRsZWQgPSBuZXh0
U2VsZWN0ZWRFbGVtZW50ID8gdHJ1ZSA6IGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50
LmtleUlkZW50aWZpZXIgPT09ICJEb3duIiAmJiAhZXZlbnQuYWx0S2V5KSB7CisgICAgICAgICAg
ICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnRyYXZlcnNl
TmV4dFRyZWVFbGVtZW50KHRydWUpOworICAgICAgICAgICAgd2hpbGUgKG5leHRTZWxlY3RlZEVs
ZW1lbnQgJiYgIW5leHRTZWxlY3RlZEVsZW1lbnQuc2VsZWN0YWJsZSkKKyAgICAgICAgICAgICAg
ICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gbmV4dFNlbGVjdGVkRWxlbWVudC50cmF2ZXJzZU5leHRU
cmVlRWxlbWVudCghdGhpcy5leHBhbmRUcmVlRWxlbWVudHNXaGVuQXJyb3dpbmcpOworICAgICAg
ICAgICAgaGFuZGxlZCA9IG5leHRTZWxlY3RlZEVsZW1lbnQgPyB0cnVlIDogZmFsc2U7CisgICAg
ICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkxlZnQiKSB7CiAgICAgICAg
ICAgICBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZGVkKSB7Ci0gICAgICAgICAg
ICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5jaGls
ZHJlblswXTsKLSAgICAgICAgICAgICAgICB3aGlsZSAobmV4dFNlbGVjdGVkRWxlbWVudCAmJiAh
bmV4dFNlbGVjdGVkRWxlbWVudC5zZWxlY3RhYmxlKQotICAgICAgICAgICAgICAgICAgICBuZXh0
U2VsZWN0ZWRFbGVtZW50ID0gbmV4dFNlbGVjdGVkRWxlbWVudC5uZXh0U2libGluZzsKLSAgICAg
ICAgICAgICAgICBoYW5kbGVkID0gbmV4dFNlbGVjdGVkRWxlbWVudCA/IHRydWUgOiBmYWxzZTsK
LSAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkK
LSAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZFJlY3Vy
c2l2ZWx5KCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5j
b2xsYXBzZVJlY3Vyc2l2ZWx5KCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuZXhwYW5kKCk7CisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5jb2xsYXBzZSgpOworICAgICAgICAgICAg
ICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVk
VHJlZUVsZW1lbnQucGFyZW50ICYmICF0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucGFyZW50LnJv
b3QpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBp
ZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnBhcmVudC5zZWxlY3RhYmxlKSB7CisgICAgICAg
ICAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1l
bnQucGFyZW50OworICAgICAgICAgICAgICAgICAgICB3aGlsZSAobmV4dFNlbGVjdGVkRWxlbWVu
dCAmJiAhbmV4dFNlbGVjdGVkRWxlbWVudC5zZWxlY3RhYmxlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IG5leHRTZWxlY3RlZEVsZW1lbnQucGFyZW50Owor
ICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gbmV4dFNlbGVjdGVkRWxlbWVudCA/IHRydWUg
OiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxl
bWVudC5wYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVu
dC5wYXJlbnQuY29sbGFwc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChl
dmVudC5rZXlJZGVudGlmaWVyID09PSAiUmlnaHQiKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMu
c2VsZWN0ZWRUcmVlRWxlbWVudC5yZXZlYWxlZCgpKSB7CisgICAgICAgICAgICAgICAgdGhpcy5z
ZWxlY3RlZFRyZWVFbGVtZW50LnJldmVhbCgpOworICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0
cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuaGFz
Q2hpbGRyZW4pIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZGVkKSB7CisgICAgICAgICAg
ICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQu
Y2hpbGRyZW5bMF07CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0U2VsZWN0ZWRFbGVt
ZW50ICYmICFuZXh0U2VsZWN0ZWRFbGVtZW50LnNlbGVjdGFibGUpCisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gbmV4dFNlbGVjdGVkRWxlbWVudC5uZXh0U2li
bGluZzsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IG5leHRTZWxlY3RlZEVsZW1lbnQg
PyB0cnVlIDogZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGV2ZW50LmFsdEtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vs
ZWN0ZWRUcmVlRWxlbWVudC5leHBhbmRSZWN1cnNpdmVseSgpOworICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQu
ZXhwYW5kKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IDggLyogQmFja3NwYWNlICovIHx8IGV2ZW50LmtleUNv
ZGUgPT09IDQ2IC8qIERlbGV0ZSAqLykgeworICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRU
cmVlRWxlbWVudC5vbmRlbGV0ZSkKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5zZWxl
Y3RlZFRyZWVFbGVtZW50Lm9uZGVsZXRlKCk7CisgICAgICAgICAgICBpZiAoIWhhbmRsZWQgJiYg
dGhpcy50cmVlT3V0bGluZS5vbmRlbGV0ZSkKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhp
cy50cmVlT3V0bGluZS5vbmRlbGV0ZSh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQpOworICAgICAg
ICB9IGVsc2UgaWYgKGlzRW50ZXJLZXkoZXZlbnQpKSB7CisgICAgICAgICAgICBpZiAodGhpcy5z
ZWxlY3RlZFRyZWVFbGVtZW50Lm9uZW50ZXIpCisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRo
aXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5vbmVudGVyKCk7CisgICAgICAgICAgICBpZiAoIWhhbmRs
ZWQgJiYgdGhpcy50cmVlT3V0bGluZS5vbmVudGVyKQorICAgICAgICAgICAgICAgIGhhbmRsZWQg
PSB0aGlzLnRyZWVPdXRsaW5lLm9uZW50ZXIodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50KTsKKyAg
ICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVSswMDIwIiAvKiBTcGFj
ZSAqLykgeworICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5vbnNwYWNl
KQorICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQub25z
cGFjZSgpOworICAgICAgICAgICAgaWYgKCFoYW5kbGVkICYmIHRoaXMudHJlZU91dGxpbmUub25z
cGFjZSkKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy50cmVlT3V0bGluZS5vbnNwYWNl
KHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobmV4
dFNlbGVjdGVkRWxlbWVudCkgeworICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudC5yZXZl
YWwoKTsKKyAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQuc2VsZWN0KGZhbHNlLCB0cnVl
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChoYW5kbGVkKSB7CisgICAgICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7
CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IDggLyogQmFja3Nw
YWNlICovIHx8IGV2ZW50LmtleUNvZGUgPT09IDQ2IC8qIERlbGV0ZSAqLykgewotICAgICAgICBp
ZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50Lm9uZGVsZXRlKQotICAgICAgICAgICAgaGFuZGxl
ZCA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5vbmRlbGV0ZSgpOwotICAgICAgICBpZiAoIWhh
bmRsZWQgJiYgdGhpcy50cmVlT3V0bGluZS5vbmRlbGV0ZSkKLSAgICAgICAgICAgIGhhbmRsZWQg
PSB0aGlzLnRyZWVPdXRsaW5lLm9uZGVsZXRlKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCk7Ci0g
ICAgfSBlbHNlIGlmIChpc0VudGVyS2V5KGV2ZW50KSkgewotICAgICAgICBpZiAodGhpcy5zZWxl
Y3RlZFRyZWVFbGVtZW50Lm9uZW50ZXIpCi0gICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5zZWxl
Y3RlZFRyZWVFbGVtZW50Lm9uZW50ZXIoKTsKLSAgICAgICAgaWYgKCFoYW5kbGVkICYmIHRoaXMu
dHJlZU91dGxpbmUub25lbnRlcikKLSAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLnRyZWVPdXRs
aW5lLm9uZW50ZXIodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50KTsKLSAgICB9IGVsc2UgaWYgKGV2
ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAwMjAiIC8qIFNwYWNlICovKSB7Ci0gICAgICAgIGlm
ICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQub25zcGFjZSkKLSAgICAgICAgICAgIGhhbmRsZWQg
PSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQub25zcGFjZSgpOwotICAgICAgICBpZiAoIWhhbmRs
ZWQgJiYgdGhpcy50cmVlT3V0bGluZS5vbnNwYWNlKQotICAgICAgICAgICAgaGFuZGxlZCA9IHRo
aXMudHJlZU91dGxpbmUub25zcGFjZSh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQpOwogICAgIH0K
IAotICAgIGlmIChuZXh0U2VsZWN0ZWRFbGVtZW50KSB7Ci0gICAgICAgIG5leHRTZWxlY3RlZEVs
ZW1lbnQucmV2ZWFsKCk7Ci0gICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQuc2VsZWN0KGZhbHNl
LCB0cnVlKTsKKyAgICBleHBhbmQoKQorICAgIHsKKyAgICAgICAgLy8gdGhpcyBpcyB0aGUgcm9v
dCwgZG8gbm90aGluZwogICAgIH0KIAotICAgIGlmIChoYW5kbGVkKSB7Ci0gICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAg
IGNvbGxhcHNlKCkKKyAgICB7CisgICAgICAgIC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhp
bmcKICAgICB9Ci19OwogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUuZXhwYW5kID0gZnVuY3Rpb24o
KQotewotICAgIC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKLX07CisgICAgcmV2ZWFs
ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi1UcmVlT3V0bGluZS5w
cm90b3R5cGUuY29sbGFwc2UgPSBmdW5jdGlvbigpCi17Ci0gICAgLy8gdGhpcyBpcyB0aGUgcm9v
dCwgZG8gbm90aGluZwotfTsKKyAgICByZXZlYWwoKQorICAgIHsKKyAgICAgICAgLy8gdGhpcyBp
cyB0aGUgcm9vdCwgZG8gbm90aGluZworICAgIH0KIAotVHJlZU91dGxpbmUucHJvdG90eXBlLnJl
dmVhbGVkID0gZnVuY3Rpb24oKQotewotICAgIHJldHVybiB0cnVlOwotfTsKKyAgICBzZWxlY3Qo
KQorICAgIHsKKyAgICAgICAgLy8gdGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGluZworICAgIH0K
IAotVHJlZU91dGxpbmUucHJvdG90eXBlLnJldmVhbCA9IGZ1bmN0aW9uKCkKLXsKLSAgICAvLyB0
aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nCisgICAgcmV2ZWFsQW5kU2VsZWN0KG9taXRGb2N1
cykKKyAgICB7CisgICAgICAgIC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKKyAgICB9
CiB9OwogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUuc2VsZWN0ID0gZnVuY3Rpb24oKQotewotICAg
IC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKLX07CitXZWJJbnNwZWN0b3IuVHJlZU91
dGxpbmUuX2tub3duVHJlZUVsZW1lbnROZXh0SWRlbnRpZmllciA9IDE7CiAKLVRyZWVPdXRsaW5l
LnByb3RvdHlwZS5yZXZlYWxBbmRTZWxlY3QgPSBmdW5jdGlvbihvbWl0Rm9jdXMpCitXZWJJbnNw
ZWN0b3IuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKIHsKLSAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nCi19OworICAg
IGNvbnN0cnVjdG9yKHRpdGxlLCByZXByZXNlbnRlZE9iamVjdCwgaGFzQ2hpbGRyZW4pCisgICAg
eworICAgICAgICBzdXBlcigpOwogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisgICAgICAgIHRoaXMuX3RpdGxlID0gdGl0
bGU7CisgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QgPSAocmVwcmVzZW50ZWRPYmplY3Qg
fHwge30pOwogCi1mdW5jdGlvbiBUcmVlRWxlbWVudCh0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3Qs
IGhhc0NoaWxkcmVuKQotewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QuX190cmVlRWxlbWVudElkZW50aWZpZXIpCisgICAgICAgICAgICB0aGlzLmlkZW50aWZpZXIg
PSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Ll9fdHJlZUVsZW1lbnRJZGVudGlmaWVyOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuaWRlbnRpZmllciA9IFdlYkluc3BlY3Rvci5UcmVl
T3V0bGluZS5fa25vd25UcmVlRWxlbWVudE5leHRJZGVudGlmaWVyKys7CisgICAgICAgICAgICB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0Ll9fdHJlZUVsZW1lbnRJZGVudGlmaWVyID0gdGhpcy5pZGVu
dGlmaWVyOworICAgICAgICB9CiAKLSAgICB0aGlzLl90aXRsZSA9IHRpdGxlOwotICAgIHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QgPSAocmVwcmVzZW50ZWRPYmplY3QgfHwge30pOworICAgICAgICB0
aGlzLl9oaWRkZW4gPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fc2VsZWN0YWJsZSA9IHRydWU7Cisg
ICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGZh
bHNlOworICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gaGFzQ2hpbGRyZW47CisgICAgICAgIHRo
aXMuY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZSA9IG51bGw7CisgICAg
ICAgIHRoaXMucGFyZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5wcmV2aW91c1NpYmxpbmcgPSBu
dWxsOworICAgICAgICB0aGlzLm5leHRTaWJsaW5nID0gbnVsbDsKKyAgICAgICAgdGhpcy5fbGlz
dEl0ZW1Ob2RlID0gbnVsbDsKKyAgICB9CisKKyAgICAvLyBNZXRob2RzCisKKyAgICBhcHBlbmRD
aGlsZCgpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZS5wcm90b3R5cGUuYXBwZW5k
Q2hpbGQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQorICAgIGluc2VydENoaWxkKCkgeyByZXR1
cm4gV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5pbnNlcnRDaGlsZC5hcHBseSh0
aGlzLCBhcmd1bWVudHMpOyB9CisgICAgcmVtb3ZlQ2hpbGQoKSB7IHJldHVybiBXZWJJbnNwZWN0
b3IuVHJlZU91dGxpbmUucHJvdG90eXBlLnJlbW92ZUNoaWxkLmFwcGx5KHRoaXMsIGFyZ3VtZW50
cyk7IH0KKyAgICByZW1vdmVDaGlsZEF0SW5kZXgoKSB7IHJldHVybiBXZWJJbnNwZWN0b3IuVHJl
ZU91dGxpbmUucHJvdG90eXBlLnJlbW92ZUNoaWxkQXRJbmRleC5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpOyB9CisgICAgcmVtb3ZlQ2hpbGRyZW4oKSB7IHJldHVybiBXZWJJbnNwZWN0b3IuVHJlZU91
dGxpbmUucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0K
KyAgICByZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZSgpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5UcmVl
T3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUuYXBwbHkodGhpcywgYXJn
dW1lbnRzKTsgfQogCi0gICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuX190cmVlRWxlbWVu
dElkZW50aWZpZXIpCi0gICAgICAgIHRoaXMuaWRlbnRpZmllciA9IHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuX190cmVlRWxlbWVudElkZW50aWZpZXI7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRoaXMu
aWRlbnRpZmllciA9IFRyZWVPdXRsaW5lLl9rbm93blRyZWVFbGVtZW50TmV4dElkZW50aWZpZXIr
KzsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5fX3RyZWVFbGVtZW50SWRlbnRpZmll
ciA9IHRoaXMuaWRlbnRpZmllcjsKKyAgICBnZXQgYXJyb3dUb2dnbGVXaWR0aCgpCisgICAgewor
ICAgICAgICByZXR1cm4gMTA7CiAgICAgfQogCi0gICAgdGhpcy5faGlkZGVuID0gZmFsc2U7Ci0g
ICAgdGhpcy5fc2VsZWN0YWJsZSA9IHRydWU7Ci0gICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlOwot
ICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKLSAgICB0aGlzLmhhc0NoaWxkcmVuID0gaGFzQ2hp
bGRyZW47Ci0gICAgdGhpcy5jaGlsZHJlbiA9IFtdOwotICAgIHRoaXMudHJlZU91dGxpbmUgPSBu
dWxsOwotICAgIHRoaXMucGFyZW50ID0gbnVsbDsKLSAgICB0aGlzLnByZXZpb3VzU2libGluZyA9
IG51bGw7Ci0gICAgdGhpcy5uZXh0U2libGluZyA9IG51bGw7Ci0gICAgdGhpcy5fbGlzdEl0ZW1O
b2RlID0gbnVsbDsKLX0KLQotVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBUcmVlRWxlbWVudCwKLQotICAgIGFycm93VG9nZ2xlV2lkdGg6IDEwLAotCi0gICAgZ2V0
IHNlbGVjdGFibGUoKSB7CisgICAgZ2V0IHNlbGVjdGFibGUoKQorICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2hpZGRlbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3NlbGVjdGFibGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXQgc2VsZWN0YWJsZSh4
KSB7CisgICAgc2V0IHNlbGVjdGFibGUoeCkKKyAgICB7CiAgICAgICAgIHRoaXMuX3NlbGVjdGFi
bGUgPSB4OwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0IGxpc3RJdGVtRWxlbWVudCgpIHsKKyAg
ICBnZXQgbGlzdEl0ZW1FbGVtZW50KCkKKyAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9saXN0
SXRlbU5vZGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXQgY2hpbGRyZW5MaXN0RWxlbWVudCgp
IHsKKyAgICBnZXQgY2hpbGRyZW5MaXN0RWxlbWVudCgpCisgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fY2hpbGRyZW5MaXN0Tm9kZTsKLSAgICB9LAorICAgIH0KIAotICAgIGdldCB0aXRsZSgp
IHsKKyAgICBnZXQgdGl0bGUoKQorICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2V0IHRpdGxlKHgpIHsKKyAgICBzZXQgdGl0bGUoeCkKKyAg
ICB7CiAgICAgICAgIHRoaXMuX3RpdGxlID0geDsKICAgICAgICAgdGhpcy5fc2V0TGlzdEl0ZW1O
b2RlQ29udGVudCgpOwogICAgICAgICB0aGlzLmRpZENoYW5nZSgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgZ2V0IHRpdGxlSFRNTCgpIHsKKyAgICBnZXQgdGl0bGVIVE1MKCkKKyAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl90aXRsZUhUTUw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXQgdGl0
bGVIVE1MKHgpIHsKKyAgICBzZXQgdGl0bGVIVE1MKHgpCisgICAgewogICAgICAgICB0aGlzLl90
aXRsZUhUTUwgPSB4OwogICAgICAgICB0aGlzLl9zZXRMaXN0SXRlbU5vZGVDb250ZW50KCk7CiAg
ICAgICAgIHRoaXMuZGlkQ2hhbmdlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXQgdG9vbHRp
cCgpIHsKKyAgICBnZXQgdG9vbHRpcCgpCisgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdG9v
bHRpcDsKLSAgICB9LAorICAgIH0KIAotICAgIHNldCB0b29sdGlwKHgpIHsKKyAgICBzZXQgdG9v
bHRpcCh4KQorICAgIHsKICAgICAgICAgdGhpcy5fdG9vbHRpcCA9IHg7CiAgICAgICAgIGlmICh0
aGlzLl9saXN0SXRlbU5vZGUpCiAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUudGl0bGUg
PSB4ID8geCA6ICIiOwogICAgICAgICB0aGlzLmRpZENoYW5nZSgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgZ2V0IGhhc0NoaWxkcmVuKCkgeworICAgIGdldCBoYXNDaGlsZHJlbigpCisgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5faGFzQ2hpbGRyZW47Ci0gICAgfSwKKyAgICB9CiAKLSAgICBz
ZXQgaGFzQ2hpbGRyZW4oeCkgeworICAgIHNldCBoYXNDaGlsZHJlbih4KQorICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX2hhc0NoaWxkcmVuID09PSB4KQogICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC02MDUsMTMgKzYyOCwxNSBAQCBUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
IAogICAgICAgICB0aGlzLmRpZENoYW5nZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0IGhp
ZGRlbigpIHsKKyAgICBnZXQgaGlkZGVuKCkKKyAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9o
aWRkZW47Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXQgaGlkZGVuKHgpIHsKKyAgICBzZXQgaGlk
ZGVuKHgpCisgICAgewogICAgICAgICBpZiAodGhpcy5faGlkZGVuID09PSB4KQogICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC02MzEsMjcgKzY1NiwyOSBAQCBUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUgJiYgdGhpcy50cmVlT3V0bGluZS5v
bmhpZGRlbikKICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUub25oaWRkZW4odGhpcywgeCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXQgc2hvdWxkUmVmcmVzaENoaWxkcmVuKCkgeworICAg
IGdldCBzaG91bGRSZWZyZXNoQ2hpbGRyZW4oKQorICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3Nob3VsZFJlZnJlc2hDaGlsZHJlbjsKLSAgICB9LAorICAgIH0KIAotICAgIHNldCBzaG91bGRS
ZWZyZXNoQ2hpbGRyZW4oeCkgeworICAgIHNldCBzaG91bGRSZWZyZXNoQ2hpbGRyZW4oeCkKKyAg
ICB7CiAgICAgICAgIHRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHg7CiAgICAgICAgIGlm
ICh4ICYmIHRoaXMuZXhwYW5kZWQpCiAgICAgICAgICAgICB0aGlzLmV4cGFuZCgpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2ZpcmVEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBfZmlyZURpZENo
YW5nZSgpCiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5fZGlkQ2hhbmdlVGltZW91dElkZW50
aWZpZXI7CiAKICAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUpCiAgICAgICAgICAgICB0aGlz
LnRyZWVPdXRsaW5lLl90cmVlRWxlbWVudERpZENoYW5nZSh0aGlzKTsKLSAgICB9LAorICAgIH0K
IAotICAgIGRpZENoYW5nZTogZnVuY3Rpb24oKQorICAgIGRpZENoYW5nZSgpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMudHJlZU91dGxpbmUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02NTks
OSArNjg2LDkgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAvLyBQcmV2ZW50
IHRlbGxpbmcgdGhlIFRyZWVPdXRsaW5lIG11bHRpcGxlIHRpbWVzIGluIGEgcm93IGJ5IGRlbGF5
aW5nIGl0IHdpdGggYSB0aW1lb3V0LgogICAgICAgICBpZiAoIXRoaXMuX2RpZENoYW5nZVRpbWVv
dXRJZGVudGlmaWVyKQogICAgICAgICAgICAgdGhpcy5fZGlkQ2hhbmdlVGltZW91dElkZW50aWZp
ZXIgPSBzZXRUaW1lb3V0KHRoaXMuX2ZpcmVEaWRDaGFuZ2UuYmluZCh0aGlzKSwgMCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfc2V0TGlzdEl0ZW1Ob2RlQ29udGVudDogZnVuY3Rpb24oKQorICAg
IF9zZXRMaXN0SXRlbU5vZGVDb250ZW50KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbGlz
dEl0ZW1Ob2RlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjc5LDQwMSArNzA2LDM5MyBAQCBU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUu
YXBwZW5kQ2hpbGQodGhpcy5fdGl0bGUpOwogICAgICAgICB9CiAgICAgfQotfTsKIAotVHJlZUVs
ZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkID0gVHJlZU91dGxpbmUucHJvdG90eXBlLmFwcGVu
ZENoaWxkOwotVHJlZUVsZW1lbnQucHJvdG90eXBlLmluc2VydENoaWxkID0gVHJlZU91dGxpbmUu
cHJvdG90eXBlLmluc2VydENoaWxkOwotVHJlZUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxk
ID0gVHJlZU91dGxpbmUucHJvdG90eXBlLnJlbW92ZUNoaWxkOwotVHJlZUVsZW1lbnQucHJvdG90
eXBlLnJlbW92ZUNoaWxkQXRJbmRleCA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1vdmVDaGls
ZEF0SW5kZXg7Ci1UcmVlRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4gPSBUcmVlT3V0
bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW47Ci1UcmVlRWxlbWVudC5wcm90b3R5cGUucmVt
b3ZlQ2hpbGRyZW5SZWN1cnNpdmUgPSBUcmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRy
ZW5SZWN1cnNpdmU7CisgICAgX2F0dGFjaCgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2xp
c3RJdGVtTm9kZSB8fCB0aGlzLnBhcmVudC5fc2hvdWxkUmVmcmVzaENoaWxkcmVuKSB7CisgICAg
ICAgICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2RlICYmIHRoaXMuX2xpc3RJdGVtTm9kZS5wYXJl
bnROb2RlKQorICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKHRoaXMuX2xpc3RJdGVtTm9kZSk7CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5f
YXR0YWNoID0gZnVuY3Rpb24oKQotewotICAgIGlmICghdGhpcy5fbGlzdEl0ZW1Ob2RlIHx8IHRo
aXMucGFyZW50Ll9zaG91bGRSZWZyZXNoQ2hpbGRyZW4pIHsKLSAgICAgICAgaWYgKHRoaXMuX2xp
c3RJdGVtTm9kZSAmJiB0aGlzLl9saXN0SXRlbU5vZGUucGFyZW50Tm9kZSkKLSAgICAgICAgICAg
IHRoaXMuX2xpc3RJdGVtTm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2xpc3RJdGVt
Tm9kZSk7CisgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUgPSB0aGlzLnRyZWVPdXRsaW5l
Ll9jaGlsZHJlbkxpc3ROb2RlLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAg
ICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS50cmVlRWxlbWVudCA9IHRoaXM7CisgICAgICAg
ICAgICB0aGlzLl9zZXRMaXN0SXRlbU5vZGVDb250ZW50KCk7CisgICAgICAgICAgICB0aGlzLl9s
aXN0SXRlbU5vZGUudGl0bGUgPSB0aGlzLl90b29sdGlwID8gdGhpcy5fdG9vbHRpcCA6ICIiOwog
Ci0gICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZSA9IHRoaXMudHJlZU91dGxpbmUuX2NoaWxkcmVu
TGlzdE5vZGUub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwotICAgICAgICB0aGlz
Ll9saXN0SXRlbU5vZGUudHJlZUVsZW1lbnQgPSB0aGlzOwotICAgICAgICB0aGlzLl9zZXRMaXN0
SXRlbU5vZGVDb250ZW50KCk7Ci0gICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS50aXRsZSA9IHRo
aXMuX3Rvb2x0aXAgPyB0aGlzLl90b29sdGlwIDogIiI7CisgICAgICAgICAgICBpZiAodGhpcy5o
aWRkZW4pCisgICAgICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQo
ImhpZGRlbiIpOworICAgICAgICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4pCisgICAgICAgICAg
ICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoInBhcmVudCIpOworICAgICAg
ICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpCisgICAgICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1O
b2RlLmNsYXNzTGlzdC5hZGQoImV4cGFuZGVkIik7CisgICAgICAgICAgICBpZiAodGhpcy5zZWxl
Y3RlZCkKKyAgICAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgi
c2VsZWN0ZWQiKTsKKworICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlZG93biIsIFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudC50cmVlRWxlbWVudE1v
dXNlRG93biwgZmFsc2UpOworICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50
TGlzdGVuZXIoImNsaWNrIiwgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50LnRyZWVFbGVtZW50VG9n
Z2xlZCwgZmFsc2UpOworICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlz
dGVuZXIoImRibGNsaWNrIiwgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50LnRyZWVFbGVtZW50RG91
YmxlQ2xpY2tlZCwgZmFsc2UpOworCisgICAgICAgICAgICBpZiAodGhpcy5vbmF0dGFjaCkKKyAg
ICAgICAgICAgICAgICB0aGlzLm9uYXR0YWNoKHRoaXMpOworICAgICAgICB9CiAKLSAgICAgICAg
aWYgKHRoaXMuaGlkZGVuKQotICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlz
dC5hZGQoImhpZGRlbiIpOwotICAgICAgICBpZiAodGhpcy5oYXNDaGlsZHJlbikKLSAgICAgICAg
ICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJwYXJlbnQiKTsKLSAgICAgICAg
aWYgKHRoaXMuZXhwYW5kZWQpCi0gICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NM
aXN0LmFkZCgiZXhwYW5kZWQiKTsKKyAgICAgICAgdmFyIG5leHRTaWJsaW5nID0gbnVsbDsKKyAg
ICAgICAgaWYgKHRoaXMubmV4dFNpYmxpbmcgJiYgdGhpcy5uZXh0U2libGluZy5fbGlzdEl0ZW1O
b2RlICYmIHRoaXMubmV4dFNpYmxpbmcuX2xpc3RJdGVtTm9kZS5wYXJlbnROb2RlID09PSB0aGlz
LnBhcmVudC5fY2hpbGRyZW5MaXN0Tm9kZSkKKyAgICAgICAgICAgIG5leHRTaWJsaW5nID0gdGhp
cy5uZXh0U2libGluZy5fbGlzdEl0ZW1Ob2RlOworICAgICAgICB0aGlzLnBhcmVudC5fY2hpbGRy
ZW5MaXN0Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fbGlzdEl0ZW1Ob2RlLCBuZXh0U2libGluZyk7
CisgICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKQorICAgICAgICAgICAgdGhpcy5w
YXJlbnQuX2NoaWxkcmVuTGlzdE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX2NoaWxkcmVuTGlzdE5v
ZGUsIHRoaXMuX2xpc3RJdGVtTm9kZS5uZXh0U2libGluZyk7CiAgICAgICAgIGlmICh0aGlzLnNl
bGVjdGVkKQotICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoInNl
bGVjdGVkIik7Ci0KLSAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlZG93biIsIFRyZWVFbGVtZW50LnRyZWVFbGVtZW50TW91c2VEb3duLCBmYWxzZSk7Ci0g
ICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIFRyZWVF
bGVtZW50LnRyZWVFbGVtZW50VG9nZ2xlZCwgZmFsc2UpOwotICAgICAgICB0aGlzLl9saXN0SXRl
bU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCBUcmVlRWxlbWVudC50cmVlRWxlbWVu
dERvdWJsZUNsaWNrZWQsIGZhbHNlKTsKLQotICAgICAgICBpZiAodGhpcy5vbmF0dGFjaCkKLSAg
ICAgICAgICAgIHRoaXMub25hdHRhY2godGhpcyk7CisgICAgICAgICAgICB0aGlzLnNlbGVjdCgp
OworICAgICAgICBpZiAodGhpcy5leHBhbmRlZCkKKyAgICAgICAgICAgIHRoaXMuZXhwYW5kKCk7
CiAgICAgfQogCi0gICAgdmFyIG5leHRTaWJsaW5nID0gbnVsbDsKLSAgICBpZiAodGhpcy5uZXh0
U2libGluZyAmJiB0aGlzLm5leHRTaWJsaW5nLl9saXN0SXRlbU5vZGUgJiYgdGhpcy5uZXh0U2li
bGluZy5fbGlzdEl0ZW1Ob2RlLnBhcmVudE5vZGUgPT09IHRoaXMucGFyZW50Ll9jaGlsZHJlbkxp
c3ROb2RlKQotICAgICAgICBuZXh0U2libGluZyA9IHRoaXMubmV4dFNpYmxpbmcuX2xpc3RJdGVt
Tm9kZTsKLSAgICB0aGlzLnBhcmVudC5fY2hpbGRyZW5MaXN0Tm9kZS5pbnNlcnRCZWZvcmUodGhp
cy5fbGlzdEl0ZW1Ob2RlLCBuZXh0U2libGluZyk7Ci0gICAgaWYgKHRoaXMuX2NoaWxkcmVuTGlz
dE5vZGUpCi0gICAgICAgIHRoaXMucGFyZW50Ll9jaGlsZHJlbkxpc3ROb2RlLmluc2VydEJlZm9y
ZSh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLCB0aGlzLl9saXN0SXRlbU5vZGUubmV4dFNpYmxpbmcp
OwotICAgIGlmICh0aGlzLnNlbGVjdGVkKQotICAgICAgICB0aGlzLnNlbGVjdCgpOwotICAgIGlm
ICh0aGlzLmV4cGFuZGVkKQotICAgICAgICB0aGlzLmV4cGFuZCgpOwotfTsKKyAgICBfZGV0YWNo
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLm9uZGV0YWNoKQorICAgICAgICAgICAgdGhpcy5v
bmRldGFjaCh0aGlzKTsKKyAgICAgICAgaWYgKHRoaXMuX2xpc3RJdGVtTm9kZSAmJiB0aGlzLl9s
aXN0SXRlbU5vZGUucGFyZW50Tm9kZSkKKyAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2xpc3RJdGVtTm9kZSk7CisgICAgICAgIGlmICh0
aGlzLl9jaGlsZHJlbkxpc3ROb2RlICYmIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9k
ZSkKKyAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZCh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKTsKKyAgICB9CiAKLVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5fZGV0YWNoID0gZnVuY3Rpb24oKQotewotICAgIGlmICh0aGlzLm9uZGV0YWNoKQotICAg
ICAgICB0aGlzLm9uZGV0YWNoKHRoaXMpOwotICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUgJiYg
dGhpcy5fbGlzdEl0ZW1Ob2RlLnBhcmVudE5vZGUpCi0gICAgICAgIHRoaXMuX2xpc3RJdGVtTm9k
ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2xpc3RJdGVtTm9kZSk7Ci0gICAgaWYgKHRo
aXMuX2NoaWxkcmVuTGlzdE5vZGUgJiYgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5wYXJlbnROb2Rl
KQotICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
dGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSk7Ci19OworICAgIHN0YXRpYyB0cmVlRWxlbWVudE1vdXNl
RG93bihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBlbGVtZW50ID0gZXZlbnQuY3VycmVudFRh
cmdldDsKKyAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LnRyZWVFbGVtZW50IHx8ICFl
bGVtZW50LnRyZWVFbGVtZW50LnNlbGVjdGFibGUpCisgICAgICAgICAgICByZXR1cm47CiAKLVRy
ZWVFbGVtZW50LnRyZWVFbGVtZW50TW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAg
dmFyIGVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0OwotICAgIGlmICghZWxlbWVudCB8fCAh
ZWxlbWVudC50cmVlRWxlbWVudCB8fCAhZWxlbWVudC50cmVlRWxlbWVudC5zZWxlY3RhYmxlKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChlbGVtZW50LnRyZWVFbGVtZW50LmlzRXZlbnRX
aXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQpKSB7CisgICAgICAgICAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBpZiAo
ZWxlbWVudC50cmVlRWxlbWVudC5pc0V2ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlKGV2ZW50
KSkgewotICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuc2VsZWN0T25Nb3VzZURvd24oZXZlbnQpOwogICAg
IH0KIAotICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuc2VsZWN0T25Nb3VzZURvd24oZXZlbnQpOwot
fTsKKyAgICBzdGF0aWMgdHJlZUVsZW1lbnRUb2dnbGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAg
dmFyIGVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0OworICAgICAgICBpZiAoIWVsZW1lbnQg
fHwgIWVsZW1lbnQudHJlZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CiAKLVRyZWVFbGVt
ZW50LnRyZWVFbGVtZW50VG9nZ2xlZCA9IGZ1bmN0aW9uKGV2ZW50KQotewotICAgIHZhciBlbGVt
ZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDsKLSAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQu
dHJlZUVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHZhciB0b2dnbGVPbkNsaWNrID0g
ZWxlbWVudC50cmVlRWxlbWVudC50b2dnbGVPbkNsaWNrICYmICFlbGVtZW50LnRyZWVFbGVtZW50
LnNlbGVjdGFibGU7Ci0gICAgdmFyIGlzSW5UcmlhbmdsZSA9IGVsZW1lbnQudHJlZUVsZW1lbnQu
aXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVudCk7Ci0gICAgaWYgKCF0b2dnbGVP
bkNsaWNrICYmICFpc0luVHJpYW5nbGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChlbGVt
ZW50LnRyZWVFbGVtZW50LmV4cGFuZGVkKSB7Ci0gICAgICAgIGlmIChldmVudC5hbHRLZXkpCi0g
ICAgICAgICAgICBlbGVtZW50LnRyZWVFbGVtZW50LmNvbGxhcHNlUmVjdXJzaXZlbHkoKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZWxlbWVudC50cmVlRWxlbWVudC5jb2xsYXBzZSgpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChldmVudC5hbHRLZXkpCi0gICAgICAgICAgICBlbGVt
ZW50LnRyZWVFbGVtZW50LmV4cGFuZFJlY3Vyc2l2ZWx5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuZXhwYW5kKCk7Ci0gICAgfQotICAgIGV2ZW50LnN0
b3BQcm9wYWdhdGlvbigpOwotfTsKKyAgICAgICAgdmFyIHRvZ2dsZU9uQ2xpY2sgPSBlbGVtZW50
LnRyZWVFbGVtZW50LnRvZ2dsZU9uQ2xpY2sgJiYgIWVsZW1lbnQudHJlZUVsZW1lbnQuc2VsZWN0
YWJsZTsKKyAgICAgICAgdmFyIGlzSW5UcmlhbmdsZSA9IGVsZW1lbnQudHJlZUVsZW1lbnQuaXNF
dmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVudCk7CisgICAgICAgIGlmICghdG9nZ2xl
T25DbGljayAmJiAhaXNJblRyaWFuZ2xlKQorICAgICAgICAgICAgcmV0dXJuOwogCi1UcmVlRWxl
bWVudC50cmVlRWxlbWVudERvdWJsZUNsaWNrZWQgPSBmdW5jdGlvbihldmVudCkKLXsKLSAgICB2
YXIgZWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7Ci0gICAgaWYgKCFlbGVtZW50IHx8ICFl
bGVtZW50LnRyZWVFbGVtZW50KQotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChlbGVtZW50
LnRyZWVFbGVtZW50LmV4cGFuZGVkKSB7CisgICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KQor
ICAgICAgICAgICAgICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuY29sbGFwc2VSZWN1cnNpdmVseSgp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVsZW1lbnQudHJlZUVsZW1lbnQu
Y29sbGFwc2UoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChldmVudC5hbHRL
ZXkpCisgICAgICAgICAgICAgICAgZWxlbWVudC50cmVlRWxlbWVudC5leHBhbmRSZWN1cnNpdmVs
eSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVsZW1lbnQudHJlZUVsZW1l
bnQuZXhwYW5kKCk7CisgICAgICAgIH0KKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7
CisgICAgfQogCi0gICAgaWYgKGVsZW1lbnQudHJlZUVsZW1lbnQuaXNFdmVudFdpdGhpbkRpc2Ns
b3N1cmVUcmlhbmdsZShldmVudCkpCi0gICAgICAgIHJldHVybjsKKyAgICBzdGF0aWMgdHJlZUVs
ZW1lbnREb3VibGVDbGlja2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBl
dmVudC5jdXJyZW50VGFyZ2V0OworICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQudHJl
ZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZWxlbWVudC50cmVlRWxl
bWVudC5vbmRibGNsaWNrKQotICAgICAgICBlbGVtZW50LnRyZWVFbGVtZW50Lm9uZGJsY2xpY2su
Y2FsbChlbGVtZW50LnRyZWVFbGVtZW50LCBldmVudCk7Ci0gICAgZWxzZSBpZiAoZWxlbWVudC50
cmVlRWxlbWVudC5oYXNDaGlsZHJlbiAmJiAhZWxlbWVudC50cmVlRWxlbWVudC5leHBhbmRlZCkK
LSAgICAgICAgZWxlbWVudC50cmVlRWxlbWVudC5leHBhbmQoKTsKLX07CisgICAgICAgIGlmIChl
bGVtZW50LnRyZWVFbGVtZW50LmlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQp
KQorICAgICAgICAgICAgcmV0dXJuOwogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUuY29sbGFwc2Ug
PSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKHRoaXMuX2xpc3RJdGVtTm9kZSkKLSAgICAgICAgdGhp
cy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZGVkIik7Ci0gICAgaWYgKHRo
aXMuX2NoaWxkcmVuTGlzdE5vZGUpCi0gICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUuY2xh
c3NMaXN0LnJlbW92ZSgiZXhwYW5kZWQiKTsKKyAgICAgICAgaWYgKGVsZW1lbnQudHJlZUVsZW1l
bnQub25kYmxjbGljaykKKyAgICAgICAgICAgIGVsZW1lbnQudHJlZUVsZW1lbnQub25kYmxjbGlj
ay5jYWxsKGVsZW1lbnQudHJlZUVsZW1lbnQsIGV2ZW50KTsKKyAgICAgICAgZWxzZSBpZiAoZWxl
bWVudC50cmVlRWxlbWVudC5oYXNDaGlsZHJlbiAmJiAhZWxlbWVudC50cmVlRWxlbWVudC5leHBh
bmRlZCkKKyAgICAgICAgICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuZXhwYW5kKCk7CisgICAgfQog
Ci0gICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlOwotICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lKQot
ICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLl90cmVlRWxlbWVudHNFeHBhbmRlZFN0YXRlW3RoaXMu
aWRlbnRpZmllcl0gPSBmYWxzZTsKKyAgICBjb2xsYXBzZSgpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5fbGlzdEl0ZW1Ob2RlKQorICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNz
TGlzdC5yZW1vdmUoImV4cGFuZGVkIik7CisgICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3RO
b2RlKQorICAgICAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5jbGFzc0xpc3QucmVtb3Zl
KCJleHBhbmRlZCIpOwogCi0gICAgaWYgKHRoaXMub25jb2xsYXBzZSkKLSAgICAgICAgdGhpcy5v
bmNvbGxhcHNlKHRoaXMpOworICAgICAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2U7CisgICAgICAg
IGlmICh0aGlzLnRyZWVPdXRsaW5lKQorICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5fdHJl
ZUVsZW1lbnRzRXhwYW5kZWRTdGF0ZVt0aGlzLmlkZW50aWZpZXJdID0gZmFsc2U7CiAKLSAgICBp
ZiAodGhpcy50cmVlT3V0bGluZSAmJiB0aGlzLnRyZWVPdXRsaW5lLm9uY29sbGFwc2UpCi0gICAg
ICAgIHRoaXMudHJlZU91dGxpbmUub25jb2xsYXBzZSh0aGlzKTsKLX07CisgICAgICAgIGlmICh0
aGlzLm9uY29sbGFwc2UpCisgICAgICAgICAgICB0aGlzLm9uY29sbGFwc2UodGhpcyk7CiAKLVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5jb2xsYXBzZVJlY3Vyc2l2ZWx5ID0gZnVuY3Rpb24oKQotewot
ICAgIHZhciBpdGVtID0gdGhpczsKLSAgICB3aGlsZSAoaXRlbSkgewotICAgICAgICBpZiAoaXRl
bS5leHBhbmRlZCkKLSAgICAgICAgICAgIGl0ZW0uY29sbGFwc2UoKTsKLSAgICAgICAgaXRlbSA9
IGl0ZW0udHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2UsIHRoaXMsIHRydWUpOworICAgICAg
ICBpZiAodGhpcy50cmVlT3V0bGluZSAmJiB0aGlzLnRyZWVPdXRsaW5lLm9uY29sbGFwc2UpCisg
ICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uY29sbGFwc2UodGhpcyk7CiAgICAgfQotfTsK
IAotVHJlZUVsZW1lbnQucHJvdG90eXBlLmV4cGFuZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICBpZiAo
dGhpcy5leHBhbmRlZCAmJiAhdGhpcy5fc2hvdWxkUmVmcmVzaENoaWxkcmVuICYmIHRoaXMuX2No
aWxkcmVuTGlzdE5vZGUpCi0gICAgICAgIHJldHVybjsKKyAgICBjb2xsYXBzZVJlY3Vyc2l2ZWx5
KCkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gdGhpczsKKyAgICAgICAgd2hpbGUgKGl0ZW0p
IHsKKyAgICAgICAgICAgIGlmIChpdGVtLmV4cGFuZGVkKQorICAgICAgICAgICAgICAgIGl0ZW0u
Y29sbGFwc2UoKTsKKyAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnRyYXZlcnNlTmV4dFRyZWVFbGVt
ZW50KGZhbHNlLCB0aGlzLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KIAotICAgIC8vIFNldCB0
aGlzIGJlZm9yZSBvbnBvcHVsYXRlLiBTaW5jZSBvbnBvcHVsYXRlIGNhbiBhZGQgZWxlbWVudHMg
YW5kIGNhbGwgb25hZGQsIHRoaXMgbWFrZXMKLSAgICAvLyBzdXJlIHRoZSBleHBhbmRlZCBmbGFn
IGlzIHRydWUgYmVmb3JlIGNhbGxpbmcgdGhvc2UgZnVuY3Rpb25zLiBUaGlzIHByZXZlbnRzIHRo
ZSBwb3NzaWJpbGl0eQotICAgIC8vIG9mIGFuIGluZmluaXRlIGxvb3AgaWYgb25wb3B1bGF0ZSBv
ciBvbmFkZCB3ZXJlIHRvIGNhbGwgZXhwYW5kLgorICAgIGV4cGFuZCgpCisgICAgeworICAgICAg
ICBpZiAodGhpcy5leHBhbmRlZCAmJiAhdGhpcy5fc2hvdWxkUmVmcmVzaENoaWxkcmVuICYmIHRo
aXMuX2NoaWxkcmVuTGlzdE5vZGUpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICB0aGlzLmV4
cGFuZGVkID0gdHJ1ZTsKLSAgICBpZiAodGhpcy50cmVlT3V0bGluZSkKLSAgICAgICAgdGhpcy50
cmVlT3V0bGluZS5fdHJlZUVsZW1lbnRzRXhwYW5kZWRTdGF0ZVt0aGlzLmlkZW50aWZpZXJdID0g
dHJ1ZTsKKyAgICAgICAgLy8gU2V0IHRoaXMgYmVmb3JlIG9ucG9wdWxhdGUuIFNpbmNlIG9ucG9w
dWxhdGUgY2FuIGFkZCBlbGVtZW50cyBhbmQgY2FsbCBvbmFkZCwgdGhpcyBtYWtlcworICAgICAg
ICAvLyBzdXJlIHRoZSBleHBhbmRlZCBmbGFnIGlzIHRydWUgYmVmb3JlIGNhbGxpbmcgdGhvc2Ug
ZnVuY3Rpb25zLiBUaGlzIHByZXZlbnRzIHRoZSBwb3NzaWJpbGl0eQorICAgICAgICAvLyBvZiBh
biBpbmZpbml0ZSBsb29wIGlmIG9ucG9wdWxhdGUgb3Igb25hZGQgd2VyZSB0byBjYWxsIGV4cGFu
ZC4KIAotICAgIC8vIElmIHRoZXJlIGFyZSBubyBjaGlsZHJlbiwgcmV0dXJuLiBXZSB3aWxsIGJl
IGV4cGFuZGVkIG9uY2Ugd2UgaGF2ZSBjaGlsZHJlbi4KLSAgICBpZiAoIXRoaXMuaGFzQ2hpbGRy
ZW4pCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7CisgICAg
ICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lKQorICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5f
dHJlZUVsZW1lbnRzRXhwYW5kZWRTdGF0ZVt0aGlzLmlkZW50aWZpZXJdID0gdHJ1ZTsKIAotICAg
IGlmICh0aGlzLnRyZWVPdXRsaW5lICYmICghdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSB8fCB0aGlz
Ll9zaG91bGRSZWZyZXNoQ2hpbGRyZW4pKSB7Ci0gICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbkxp
c3ROb2RlICYmIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9kZSkKLSAgICAgICAgICAg
IHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9jaGls
ZHJlbkxpc3ROb2RlKTsKKyAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGNoaWxkcmVuLCByZXR1
cm4uIFdlIHdpbGwgYmUgZXhwYW5kZWQgb25jZSB3ZSBoYXZlIGNoaWxkcmVuLgorICAgICAgICBp
ZiAoIXRoaXMuaGFzQ2hpbGRyZW4pCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhp
cy5fY2hpbGRyZW5MaXN0Tm9kZSA9IHRoaXMudHJlZU91dGxpbmUuX2NoaWxkcmVuTGlzdE5vZGUu
b3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwotICAgICAgICB0aGlzLl9jaGlsZHJl
bkxpc3ROb2RlLnBhcmVudFRyZWVFbGVtZW50ID0gdGhpczsKLSAgICAgICAgdGhpcy5fY2hpbGRy
ZW5MaXN0Tm9kZS5jbGFzc0xpc3QuYWRkKCJjaGlsZHJlbiIpOworICAgICAgICBpZiAodGhpcy50
cmVlT3V0bGluZSAmJiAoIXRoaXMuX2NoaWxkcmVuTGlzdE5vZGUgfHwgdGhpcy5fc2hvdWxkUmVm
cmVzaENoaWxkcmVuKSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUg
JiYgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5wYXJlbnROb2RlKQorICAgICAgICAgICAgICAgIHRo
aXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9jaGlsZHJl
bkxpc3ROb2RlKTsKIAotICAgICAgICBpZiAodGhpcy5oaWRkZW4pCi0gICAgICAgICAgICB0aGlz
Ll9jaGlsZHJlbkxpc3ROb2RlLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpOworICAgICAgICAgICAg
dGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSA9IHRoaXMudHJlZU91dGxpbmUuX2NoaWxkcmVuTGlzdE5v
ZGUub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgICAgICAgICAgdGhpcy5f
Y2hpbGRyZW5MaXN0Tm9kZS5wYXJlbnRUcmVlRWxlbWVudCA9IHRoaXM7CisgICAgICAgICAgICB0
aGlzLl9jaGlsZHJlbkxpc3ROb2RlLmNsYXNzTGlzdC5hZGQoImNoaWxkcmVuIik7CiAKLSAgICAg
ICAgdGhpcy5vbnBvcHVsYXRlKCk7CisgICAgICAgICAgICBpZiAodGhpcy5oaWRkZW4pCisgICAg
ICAgICAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5jbGFzc0xpc3QuYWRkKCJoaWRkZW4i
KTsKIAotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICB0aGlzLmNoaWxkcmVuW2ldLl9hdHRhY2goKTsKKyAgICAgICAgICAg
IHRoaXMub25wb3B1bGF0ZSgpOwogCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9zaG91bGRSZWZyZXNo
Q2hpbGRyZW47Ci0gICAgfQorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNo
aWxkcmVuLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5baV0uX2F0
dGFjaCgpOwogCi0gICAgaWYgKHRoaXMuX2xpc3RJdGVtTm9kZSkgewotICAgICAgICB0aGlzLl9s
aXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgiZXhwYW5kZWQiKTsKLSAgICAgICAgaWYgKHRoaXMu
X2NoaWxkcmVuTGlzdE5vZGUgJiYgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5wYXJlbnROb2RlICE9
PSB0aGlzLl9saXN0SXRlbU5vZGUucGFyZW50Tm9kZSkKLSAgICAgICAgICAgIHRoaXMucGFyZW50
Ll9jaGlsZHJlbkxpc3ROb2RlLmluc2VydEJlZm9yZSh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLCB0
aGlzLl9saXN0SXRlbU5vZGUubmV4dFNpYmxpbmcpOwotICAgIH0KKyAgICAgICAgICAgIGRlbGV0
ZSB0aGlzLl9zaG91bGRSZWZyZXNoQ2hpbGRyZW47CisgICAgICAgIH0KIAotICAgIGlmICh0aGlz
Ll9jaGlsZHJlbkxpc3ROb2RlKQotICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLmNsYXNz
TGlzdC5hZGQoImV4cGFuZGVkIik7CisgICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUpIHsK
KyAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJleHBhbmRlZCIp
OworICAgICAgICAgICAgaWYgKHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUgJiYgdGhpcy5fY2hpbGRy
ZW5MaXN0Tm9kZS5wYXJlbnROb2RlICE9PSB0aGlzLl9saXN0SXRlbU5vZGUucGFyZW50Tm9kZSkK
KyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5fY2hpbGRyZW5MaXN0Tm9kZS5pbnNlcnRCZWZv
cmUodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSwgdGhpcy5fbGlzdEl0ZW1Ob2RlLm5leHRTaWJsaW5n
KTsKKyAgICAgICAgfQogCi0gICAgaWYgKHRoaXMub25leHBhbmQpCi0gICAgICAgIHRoaXMub25l
eHBhbmQodGhpcyk7CisgICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKQorICAgICAg
ICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5jbGFzc0xpc3QuYWRkKCJleHBhbmRlZCIpOwog
Ci0gICAgaWYgKHRoaXMudHJlZU91dGxpbmUgJiYgdGhpcy50cmVlT3V0bGluZS5vbmV4cGFuZCkK
LSAgICAgICAgdGhpcy50cmVlT3V0bGluZS5vbmV4cGFuZCh0aGlzKTsKLX07CisgICAgICAgIGlm
ICh0aGlzLm9uZXhwYW5kKQorICAgICAgICAgICAgdGhpcy5vbmV4cGFuZCh0aGlzKTsKIAotVHJl
ZUVsZW1lbnQucHJvdG90eXBlLmV4cGFuZFJlY3Vyc2l2ZWx5ID0gZnVuY3Rpb24obWF4RGVwdGgp
Ci17Ci0gICAgdmFyIGl0ZW0gPSB0aGlzOwotICAgIHZhciBpbmZvID0ge307Ci0gICAgdmFyIGRl
cHRoID0gMDsKLQotICAgIC8vIFRoZSBJbnNwZWN0b3IgdXNlcyBUcmVlT3V0bGluZXMgdG8gcmVw
cmVzZW50cyBvYmplY3QgcHJvcGVydGllcywgc28gcmVjdXJzaXZlIGV4cGFuc2lvbgotICAgIC8v
IGluIHNvbWUgY2FzZSBjYW4gYmUgaW5maW5pdGUsIHNpbmNlIEphdmFTY3JpcHQgb2JqZWN0cyBj
YW4gaG9sZCBjaXJjdWxhciByZWZlcmVuY2VzLgotICAgIC8vIFNvIGRlZmF1bHQgdG8gYSByZWN1
cnNpb24gY2FwIG9mIDMgbGV2ZWxzLCBzaW5jZSB0aGF0IGdpdmVzIGZhaXJseSBnb29kIHJlc3Vs
dHMuCi0gICAgaWYgKG1heERlcHRoID09PSB1bmRlZmluZWQpCi0gICAgICAgIG1heERlcHRoID0g
MzsKLQotICAgIHdoaWxlIChpdGVtKSB7Ci0gICAgICAgIGlmIChkZXB0aCA8IG1heERlcHRoKQot
ICAgICAgICAgICAgaXRlbS5leHBhbmQoKTsKLSAgICAgICAgaXRlbSA9IGl0ZW0udHJhdmVyc2VO
ZXh0VHJlZUVsZW1lbnQoZmFsc2UsIHRoaXMsIChkZXB0aCA+PSBtYXhEZXB0aCksIGluZm8pOwot
ICAgICAgICBkZXB0aCArPSBpbmZvLmRlcHRoQ2hhbmdlOworICAgICAgICBpZiAodGhpcy50cmVl
T3V0bGluZSAmJiB0aGlzLnRyZWVPdXRsaW5lLm9uZXhwYW5kKQorICAgICAgICAgICAgdGhpcy50
cmVlT3V0bGluZS5vbmV4cGFuZCh0aGlzKTsKICAgICB9Ci19OwotCi1UcmVlRWxlbWVudC5wcm90
b3R5cGUuaGFzQW5jZXN0b3IgPSBmdW5jdGlvbihhbmNlc3RvcikgewotICAgIGlmICghYW5jZXN0
b3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMu
cGFyZW50OwotICAgIHdoaWxlIChjdXJyZW50Tm9kZSkgewotICAgICAgICBpZiAoYW5jZXN0b3Ig
PT09IGN1cnJlbnROb2RlKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGN1cnJl
bnROb2RlID0gY3VycmVudE5vZGUucGFyZW50OworICAgIGV4cGFuZFJlY3Vyc2l2ZWx5KG1heERl
cHRoKQorICAgIHsKKyAgICAgICAgdmFyIGl0ZW0gPSB0aGlzOworICAgICAgICB2YXIgaW5mbyA9
IHt9OworICAgICAgICB2YXIgZGVwdGggPSAwOworCisgICAgICAgIC8vIFRoZSBJbnNwZWN0b3Ig
dXNlcyBUcmVlT3V0bGluZXMgdG8gcmVwcmVzZW50cyBvYmplY3QgcHJvcGVydGllcywgc28gcmVj
dXJzaXZlIGV4cGFuc2lvbgorICAgICAgICAvLyBpbiBzb21lIGNhc2UgY2FuIGJlIGluZmluaXRl
LCBzaW5jZSBKYXZhU2NyaXB0IG9iamVjdHMgY2FuIGhvbGQgY2lyY3VsYXIgcmVmZXJlbmNlcy4K
KyAgICAgICAgLy8gU28gZGVmYXVsdCB0byBhIHJlY3Vyc2lvbiBjYXAgb2YgMyBsZXZlbHMsIHNp
bmNlIHRoYXQgZ2l2ZXMgZmFpcmx5IGdvb2QgcmVzdWx0cy4KKyAgICAgICAgaWYgKG1heERlcHRo
ID09PSB1bmRlZmluZWQpCisgICAgICAgICAgICBtYXhEZXB0aCA9IDM7CisKKyAgICAgICAgd2hp
bGUgKGl0ZW0pIHsKKyAgICAgICAgICAgIGlmIChkZXB0aCA8IG1heERlcHRoKQorICAgICAgICAg
ICAgICAgIGl0ZW0uZXhwYW5kKCk7CisgICAgICAgICAgICBpdGVtID0gaXRlbS50cmF2ZXJzZU5l
eHRUcmVlRWxlbWVudChmYWxzZSwgdGhpcywgKGRlcHRoID49IG1heERlcHRoKSwgaW5mbyk7Cisg
ICAgICAgICAgICBkZXB0aCArPSBpbmZvLmRlcHRoQ2hhbmdlOworICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIGZhbHNlOwotfTsKKyAgICBoYXNBbmNlc3RvcihhbmNlc3RvcikKKyAgICAg
ICAgeworICAgICAgICBpZiAoIWFuY2VzdG9yKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci1UcmVlRWxlbWVudC5wcm90b3R5cGUucmV2ZWFsID0gZnVuY3Rpb24oKQotewotICAgIHZhciBj
dXJyZW50QW5jZXN0b3IgPSB0aGlzLnBhcmVudDsKLSAgICB3aGlsZSAoY3VycmVudEFuY2VzdG9y
ICYmICFjdXJyZW50QW5jZXN0b3Iucm9vdCkgewotICAgICAgICBpZiAoIWN1cnJlbnRBbmNlc3Rv
ci5leHBhbmRlZCkKLSAgICAgICAgICAgIGN1cnJlbnRBbmNlc3Rvci5leHBhbmQoKTsKLSAgICAg
ICAgY3VycmVudEFuY2VzdG9yID0gY3VycmVudEFuY2VzdG9yLnBhcmVudDsKKyAgICAgICAgdmFy
IGN1cnJlbnROb2RlID0gdGhpcy5wYXJlbnQ7CisgICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZSkg
eworICAgICAgICAgICAgaWYgKGFuY2VzdG9yID09PSBjdXJyZW50Tm9kZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUu
cGFyZW50OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGlmICh0aGlzLm9ucmV2ZWFsKQotICAgICAgICB0aGlzLm9ucmV2ZWFsKHRoaXMpOwotfTsKKyAg
ICByZXZlYWwoKQorICAgIHsKKyAgICAgICAgdmFyIGN1cnJlbnRBbmNlc3RvciA9IHRoaXMucGFy
ZW50OworICAgICAgICB3aGlsZSAoY3VycmVudEFuY2VzdG9yICYmICFjdXJyZW50QW5jZXN0b3Iu
cm9vdCkgeworICAgICAgICAgICAgaWYgKCFjdXJyZW50QW5jZXN0b3IuZXhwYW5kZWQpCisgICAg
ICAgICAgICAgICAgY3VycmVudEFuY2VzdG9yLmV4cGFuZCgpOworICAgICAgICAgICAgY3VycmVu
dEFuY2VzdG9yID0gY3VycmVudEFuY2VzdG9yLnBhcmVudDsKKyAgICAgICAgfQogCi1UcmVlRWxl
bWVudC5wcm90b3R5cGUucmV2ZWFsZWQgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKHRoaXMuaGlk
ZGVuKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICh0aGlzLm9ucmV2ZWFsKQor
ICAgICAgICAgICAgdGhpcy5vbnJldmVhbCh0aGlzKTsKKyAgICB9CiAKLSAgICB2YXIgY3VycmVu
dEFuY2VzdG9yID0gdGhpcy5wYXJlbnQ7Ci0gICAgd2hpbGUgKGN1cnJlbnRBbmNlc3RvciAmJiAh
Y3VycmVudEFuY2VzdG9yLnJvb3QpIHsKLSAgICAgICAgaWYgKCFjdXJyZW50QW5jZXN0b3IuZXhw
YW5kZWQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChjdXJyZW50QW5j
ZXN0b3IuaGlkZGVuKQorICAgIHJldmVhbGVkKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmhp
ZGRlbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY3VycmVudEFuY2VzdG9y
ID0gY3VycmVudEFuY2VzdG9yLnBhcmVudDsKLSAgICB9CiAKLSAgICByZXR1cm4gdHJ1ZTsKLX07
CisgICAgICAgIHZhciBjdXJyZW50QW5jZXN0b3IgPSB0aGlzLnBhcmVudDsKKyAgICAgICAgd2hp
bGUgKGN1cnJlbnRBbmNlc3RvciAmJiAhY3VycmVudEFuY2VzdG9yLnJvb3QpIHsKKyAgICAgICAg
ICAgIGlmICghY3VycmVudEFuY2VzdG9yLmV4cGFuZGVkKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50QW5jZXN0b3IuaGlkZGVuKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGN1cnJlbnRBbmNlc3RvciA9IGN1
cnJlbnRBbmNlc3Rvci5wYXJlbnQ7CisgICAgICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90eXBl
LnNlbGVjdE9uTW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgdGhpcy5zZWxlY3Qo
ZmFsc2UsIHRydWUpOwotfTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi1UcmVlRWxl
bWVudC5wcm90b3R5cGUuc2VsZWN0ID0gZnVuY3Rpb24ob21pdEZvY3VzLCBzZWxlY3RlZEJ5VXNl
ciwgc3VwcHJlc3NPblNlbGVjdCwgc3VwcHJlc3NPbkRlc2VsZWN0KQotewotICAgIGlmICghdGhp
cy50cmVlT3V0bGluZSB8fCAhdGhpcy5zZWxlY3RhYmxlKQotICAgICAgICByZXR1cm47CisgICAg
c2VsZWN0T25Nb3VzZURvd24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLnNlbGVjdChmYWxz
ZSwgdHJ1ZSk7CisgICAgfQogCi0gICAgaWYgKHRoaXMuc2VsZWN0ZWQgJiYgIXRoaXMudHJlZU91
dGxpbmUuYWxsb3dzUmVwZWF0U2VsZWN0aW9uKQotICAgICAgICByZXR1cm47CisgICAgc2VsZWN0
KG9taXRGb2N1cywgc2VsZWN0ZWRCeVVzZXIsIHN1cHByZXNzT25TZWxlY3QsIHN1cHByZXNzT25E
ZXNlbGVjdCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy50cmVlT3V0bGluZSB8fCAhdGhpcy5z
ZWxlY3RhYmxlKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFvbWl0Rm9jdXMpCi0g
ICAgICAgIHRoaXMudHJlZU91dGxpbmUuX2NoaWxkcmVuTGlzdE5vZGUuZm9jdXMoKTsKKyAgICAg
ICAgaWYgKHRoaXMuc2VsZWN0ZWQgJiYgIXRoaXMudHJlZU91dGxpbmUuYWxsb3dzUmVwZWF0U2Vs
ZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRm9jdXNpbmcgb24gYW5vdGhl
ciBub2RlIG1heSBkZXRhY2ggInRoaXMiIGZyb20gdHJlZS4KLSAgICBpZiAoIXRoaXMudHJlZU91
dGxpbmUpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFvbWl0Rm9jdXMpCisgICAgICAg
ICAgICB0aGlzLnRyZWVPdXRsaW5lLl9jaGlsZHJlbkxpc3ROb2RlLmZvY3VzKCk7CiAKLSAgICB0
aGlzLnRyZWVPdXRsaW5lLnByb2Nlc3NpbmdTZWxlY3Rpb25DaGFuZ2UgPSB0cnVlOworICAgICAg
ICAvLyBGb2N1c2luZyBvbiBhbm90aGVyIG5vZGUgbWF5IGRldGFjaCAidGhpcyIgZnJvbSB0cmVl
LgorICAgICAgICBpZiAoIXRoaXMudHJlZU91dGxpbmUpCisgICAgICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHsKLSAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUu
c2VsZWN0ZWRUcmVlRWxlbWVudCkKLSAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VsZWN0
ZWRUcmVlRWxlbWVudC5kZXNlbGVjdChzdXBwcmVzc09uRGVzZWxlY3QpOworICAgICAgICB0aGlz
LnRyZWVPdXRsaW5lLnByb2Nlc3NpbmdTZWxlY3Rpb25DaGFuZ2UgPSB0cnVlOwogCi0gICAgICAg
IHRoaXMuc2VsZWN0ZWQgPSB0cnVlOwotICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVk
VHJlZUVsZW1lbnQgPSB0aGlzOworICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWQpIHsKKyAgICAg
ICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCisgICAgICAg
ICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50LmRlc2VsZWN0KHN1
cHByZXNzT25EZXNlbGVjdCk7CiAKLSAgICAgICAgaWYgKHRoaXMuX2xpc3RJdGVtTm9kZSkKLSAg
ICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOwot
ICAgIH0KKyAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgdGhp
cy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhpczsKIAotICAgIGlmICh0aGlz
Lm9uc2VsZWN0ICYmICFzdXBwcmVzc09uU2VsZWN0KQotICAgICAgICB0aGlzLm9uc2VsZWN0KHRo
aXMsIHNlbGVjdGVkQnlVc2VyKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUp
CisgICAgICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoInNlbGVj
dGVkIik7CisgICAgICAgIH0KIAotICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLm9uc2VsZWN0ICYm
ICFzdXBwcmVzc09uU2VsZWN0KQotICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uc2VsZWN0KHRo
aXMsIHNlbGVjdGVkQnlVc2VyKTsKKyAgICAgICAgaWYgKHRoaXMub25zZWxlY3QgJiYgIXN1cHBy
ZXNzT25TZWxlY3QpCisgICAgICAgICAgICB0aGlzLm9uc2VsZWN0KHRoaXMsIHNlbGVjdGVkQnlV
c2VyKTsKIAotICAgIGRlbGV0ZSB0aGlzLnRyZWVPdXRsaW5lLnByb2Nlc3NpbmdTZWxlY3Rpb25D
aGFuZ2U7Ci19OworICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5vbnNlbGVjdCAmJiAhc3Vw
cHJlc3NPblNlbGVjdCkKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUub25zZWxlY3QodGhp
cywgc2VsZWN0ZWRCeVVzZXIpOwogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUucmV2ZWFsQW5kU2Vs
ZWN0ID0gZnVuY3Rpb24ob21pdEZvY3VzLCBzZWxlY3RlZEJ5VXNlciwgc3VwcHJlc3NPblNlbGVj
dCwgc3VwcHJlc3NPbkRlc2VsZWN0KQotewotICAgIHRoaXMucmV2ZWFsKCk7Ci0gICAgdGhpcy5z
ZWxlY3Qob21pdEZvY3VzLCBzZWxlY3RlZEJ5VXNlciwgc3VwcHJlc3NPblNlbGVjdCwgc3VwcHJl
c3NPbkRlc2VsZWN0KTsKLX07CisgICAgICAgIGRlbGV0ZSB0aGlzLnRyZWVPdXRsaW5lLnByb2Nl
c3NpbmdTZWxlY3Rpb25DaGFuZ2U7CisgICAgfQogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUuZGVz
ZWxlY3QgPSBmdW5jdGlvbihzdXBwcmVzc09uRGVzZWxlY3QpCi17Ci0gICAgaWYgKCF0aGlzLnRy
ZWVPdXRsaW5lIHx8IHRoaXMudHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCAhPT0gdGhp
cyB8fCAhdGhpcy5zZWxlY3RlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldmVhbEFu
ZFNlbGVjdChvbWl0Rm9jdXMsIHNlbGVjdGVkQnlVc2VyLCBzdXBwcmVzc09uU2VsZWN0LCBzdXBw
cmVzc09uRGVzZWxlY3QpCisgICAgeworICAgICAgICB0aGlzLnJldmVhbCgpOworICAgICAgICB0
aGlzLnNlbGVjdChvbWl0Rm9jdXMsIHNlbGVjdGVkQnlVc2VyLCBzdXBwcmVzc09uU2VsZWN0LCBz
dXBwcmVzc09uRGVzZWxlY3QpOworICAgIH0KIAotICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsK
LSAgICB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQgPSBudWxsOworICAgIGRl
c2VsZWN0KHN1cHByZXNzT25EZXNlbGVjdCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy50cmVl
T3V0bGluZSB8fCB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQgIT09IHRoaXMg
fHwgIXRoaXMuc2VsZWN0ZWQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
dGhpcy5fbGlzdEl0ZW1Ob2RlKQotICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0
LnJlbW92ZSgic2VsZWN0ZWQiKTsKKyAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlOworICAg
ICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQgPSBudWxsOwogCi0gICAg
aWYgKHRoaXMub25kZXNlbGVjdCAmJiAhc3VwcHJlc3NPbkRlc2VsZWN0KQotICAgICAgICB0aGlz
Lm9uZGVzZWxlY3QodGhpcyk7CisgICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUpCisgICAg
ICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQiKTsK
IAotICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLm9uZGVzZWxlY3QgJiYgIXN1cHByZXNzT25EZXNl
bGVjdCkKLSAgICAgICAgdGhpcy50cmVlT3V0bGluZS5vbmRlc2VsZWN0KHRoaXMpOworICAgICAg
ICBpZiAodGhpcy5vbmRlc2VsZWN0ICYmICFzdXBwcmVzc09uRGVzZWxlY3QpCisgICAgICAgICAg
ICB0aGlzLm9uZGVzZWxlY3QodGhpcyk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKLX07CisgICAgICAg
IGlmICh0aGlzLnRyZWVPdXRsaW5lLm9uZGVzZWxlY3QgJiYgIXN1cHByZXNzT25EZXNlbGVjdCkK
KyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUub25kZXNlbGVjdCh0aGlzKTsKIAotVHJlZUVs
ZW1lbnQucHJvdG90eXBlLm9ucG9wdWxhdGUgPSBmdW5jdGlvbigpCi17Ci0gICAgLy8gT3ZlcnJp
ZGVuIGJ5IHN1YmNsYXNzZXMuCi19OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKLVRy
ZWVFbGVtZW50LnByb3RvdHlwZS50cmF2ZXJzZU5leHRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHNr
aXBVbnJldmVhbGVkLCBzdGF5V2l0aGluLCBkb250UG9wdWxhdGUsIGluZm8pCi17Ci0gICAgaWYg
KCFkb250UG9wdWxhdGUgJiYgdGhpcy5oYXNDaGlsZHJlbikKLSAgICAgICAgdGhpcy5vbnBvcHVs
YXRlLmNhbGwodGhpcyk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZG4ndCBuZWVkIHRvIHVzZSBjYWxs
LCBidXQgdGhpcyBpcyB3b3JraW5nIGFyb3VuZCBhIEpTQyBidWcuIGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzc0ODExCisgICAgb25wb3B1bGF0ZSgpCisgICAgeworICAgICAgICAvLyBPdmVycmlkZW4g
Ynkgc3ViY2xhc3Nlcy4KKyAgICB9CiAKLSAgICBpZiAoaW5mbykKLSAgICAgICAgaW5mby5kZXB0
aENoYW5nZSA9IDA7CisgICAgdHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoc2tpcFVucmV2ZWFsZWQs
IHN0YXlXaXRoaW4sIGRvbnRQb3B1bGF0ZSwgaW5mbykKKyAgICB7CisgICAgICAgIGlmICghZG9u
dFBvcHVsYXRlICYmIHRoaXMuaGFzQ2hpbGRyZW4pCisgICAgICAgICAgICB0aGlzLm9ucG9wdWxh
dGUuY2FsbCh0aGlzKTsgLy8gRklYTUU6IFRoaXMgc2hvdWxkbid0IG5lZWQgdG8gdXNlIGNhbGws
IGJ1dCB0aGlzIGlzIHdvcmtpbmcgYXJvdW5kIGEgSlNDIGJ1Zy4gaHR0cHM6Ly93ZWJraXQub3Jn
L2IvNzQ4MTEKIAotICAgIHZhciBlbGVtZW50ID0gc2tpcFVucmV2ZWFsZWQgPyAodGhpcy5yZXZl
YWxlZCgpID8gdGhpcy5jaGlsZHJlblswXSA6IG51bGwpIDogdGhpcy5jaGlsZHJlblswXTsKLSAg
ICBpZiAoZWxlbWVudCAmJiAoIXNraXBVbnJldmVhbGVkIHx8IChza2lwVW5yZXZlYWxlZCAmJiB0
aGlzLmV4cGFuZGVkKSkpIHsKICAgICAgICAgaWYgKGluZm8pCi0gICAgICAgICAgICBpbmZvLmRl
cHRoQ2hhbmdlID0gMTsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQorICAgICAgICAg
ICAgaW5mby5kZXB0aENoYW5nZSA9IDA7CiAKLSAgICBpZiAodGhpcyA9PT0gc3RheVdpdGhpbikK
LSAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHZhciBlbGVtZW50ID0gc2tpcFVucmV2ZWFs
ZWQgPyAodGhpcy5yZXZlYWxlZCgpID8gdGhpcy5jaGlsZHJlblswXSA6IG51bGwpIDogdGhpcy5j
aGlsZHJlblswXTsKKyAgICAgICAgaWYgKGVsZW1lbnQgJiYgKCFza2lwVW5yZXZlYWxlZCB8fCAo
c2tpcFVucmV2ZWFsZWQgJiYgdGhpcy5leHBhbmRlZCkpKSB7CisgICAgICAgICAgICBpZiAoaW5m
bykKKyAgICAgICAgICAgICAgICBpbmZvLmRlcHRoQ2hhbmdlID0gMTsKKyAgICAgICAgICAgIHJl
dHVybiBlbGVtZW50OworICAgICAgICB9CiAKLSAgICBlbGVtZW50ID0gc2tpcFVucmV2ZWFsZWQg
PyAodGhpcy5yZXZlYWxlZCgpID8gdGhpcy5uZXh0U2libGluZyA6IG51bGwpIDogdGhpcy5uZXh0
U2libGluZzsKLSAgICBpZiAoZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAg
ICAgIGlmICh0aGlzID09PSBzdGF5V2l0aGluKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAK
LSAgICBlbGVtZW50ID0gdGhpczsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhZWxlbWVudC5yb290
ICYmICEoc2tpcFVucmV2ZWFsZWQgPyAoZWxlbWVudC5yZXZlYWxlZCgpID8gZWxlbWVudC5uZXh0
U2libGluZyA6IG51bGwpIDogZWxlbWVudC5uZXh0U2libGluZykgJiYgZWxlbWVudC5wYXJlbnQg
IT09IHN0YXlXaXRoaW4pIHsKLSAgICAgICAgaWYgKGluZm8pCi0gICAgICAgICAgICBpbmZvLmRl
cHRoQ2hhbmdlIC09IDE7Ci0gICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudDsKLSAgICB9
CisgICAgICAgIGVsZW1lbnQgPSBza2lwVW5yZXZlYWxlZCA/ICh0aGlzLnJldmVhbGVkKCkgPyB0
aGlzLm5leHRTaWJsaW5nIDogbnVsbCkgOiB0aGlzLm5leHRTaWJsaW5nOworICAgICAgICBpZiAo
ZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogCi0gICAgaWYgKCFlbGVtZW50
KQotICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgZWxlbWVudCA9IHRoaXM7CisgICAgICAg
IHdoaWxlIChlbGVtZW50ICYmICFlbGVtZW50LnJvb3QgJiYgIShza2lwVW5yZXZlYWxlZCA/IChl
bGVtZW50LnJldmVhbGVkKCkgPyBlbGVtZW50Lm5leHRTaWJsaW5nIDogbnVsbCkgOiBlbGVtZW50
Lm5leHRTaWJsaW5nKSAmJiBlbGVtZW50LnBhcmVudCAhPT0gc3RheVdpdGhpbikgeworICAgICAg
ICAgICAgaWYgKGluZm8pCisgICAgICAgICAgICAgICAgaW5mby5kZXB0aENoYW5nZSAtPSAxOwor
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50OworICAgICAgICB9CiAKLSAgICBy
ZXR1cm4gKHNraXBVbnJldmVhbGVkID8gKGVsZW1lbnQucmV2ZWFsZWQoKSA/IGVsZW1lbnQubmV4
dFNpYmxpbmcgOiBudWxsKSA6IGVsZW1lbnQubmV4dFNpYmxpbmcpOwotfTsKKyAgICAgICAgaWYg
KCFlbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKLVRyZWVFbGVtZW50LnByb3Rv
dHlwZS50cmF2ZXJzZVByZXZpb3VzVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihza2lwVW5yZXZlYWxl
ZCwgZG9udFBvcHVsYXRlKQotewotICAgIHZhciBlbGVtZW50ID0gc2tpcFVucmV2ZWFsZWQgPyAo
dGhpcy5yZXZlYWxlZCgpID8gdGhpcy5wcmV2aW91c1NpYmxpbmcgOiBudWxsKSA6IHRoaXMucHJl
dmlvdXNTaWJsaW5nOwotICAgIGlmICghZG9udFBvcHVsYXRlICYmIGVsZW1lbnQgJiYgZWxlbWVu
dC5oYXNDaGlsZHJlbikKLSAgICAgICAgZWxlbWVudC5vbnBvcHVsYXRlKCk7CisgICAgICAgIHJl
dHVybiAoc2tpcFVucmV2ZWFsZWQgPyAoZWxlbWVudC5yZXZlYWxlZCgpID8gZWxlbWVudC5uZXh0
U2libGluZyA6IG51bGwpIDogZWxlbWVudC5uZXh0U2libGluZyk7CisgICAgfQogCi0gICAgd2hp
bGUgKGVsZW1lbnQgJiYgKHNraXBVbnJldmVhbGVkID8gKGVsZW1lbnQucmV2ZWFsZWQoKSAmJiBl
bGVtZW50LmV4cGFuZGVkID8gZWxlbWVudC5jaGlsZHJlbltlbGVtZW50LmNoaWxkcmVuLmxlbmd0
aCAtIDFdIDogbnVsbCkgOiBlbGVtZW50LmNoaWxkcmVuW2VsZW1lbnQuY2hpbGRyZW4ubGVuZ3Ro
IC0gMV0pKSB7Ci0gICAgICAgIGlmICghZG9udFBvcHVsYXRlICYmIGVsZW1lbnQuaGFzQ2hpbGRy
ZW4pCisgICAgdHJhdmVyc2VQcmV2aW91c1RyZWVFbGVtZW50KHNraXBVbnJldmVhbGVkLCBkb250
UG9wdWxhdGUpCisgICAgeworICAgICAgICB2YXIgZWxlbWVudCA9IHNraXBVbnJldmVhbGVkID8g
KHRoaXMucmV2ZWFsZWQoKSA/IHRoaXMucHJldmlvdXNTaWJsaW5nIDogbnVsbCkgOiB0aGlzLnBy
ZXZpb3VzU2libGluZzsKKyAgICAgICAgaWYgKCFkb250UG9wdWxhdGUgJiYgZWxlbWVudCAmJiBl
bGVtZW50Lmhhc0NoaWxkcmVuKQogICAgICAgICAgICAgZWxlbWVudC5vbnBvcHVsYXRlKCk7Ci0g
ICAgICAgIGVsZW1lbnQgPSAoc2tpcFVucmV2ZWFsZWQgPyAoZWxlbWVudC5yZXZlYWxlZCgpICYm
IGVsZW1lbnQuZXhwYW5kZWQgPyBlbGVtZW50LmNoaWxkcmVuW2VsZW1lbnQuY2hpbGRyZW4ubGVu
Z3RoIC0gMV0gOiBudWxsKSA6IGVsZW1lbnQuY2hpbGRyZW5bZWxlbWVudC5jaGlsZHJlbi5sZW5n
dGggLSAxXSk7Ci0gICAgfQogCi0gICAgaWYgKGVsZW1lbnQpCi0gICAgICAgIHJldHVybiBlbGVt
ZW50OworICAgICAgICB3aGlsZSAoZWxlbWVudCAmJiAoc2tpcFVucmV2ZWFsZWQgPyAoZWxlbWVu
dC5yZXZlYWxlZCgpICYmIGVsZW1lbnQuZXhwYW5kZWQgPyBlbGVtZW50LmNoaWxkcmVuW2VsZW1l
bnQuY2hpbGRyZW4ubGVuZ3RoIC0gMV0gOiBudWxsKSA6IGVsZW1lbnQuY2hpbGRyZW5bZWxlbWVu
dC5jaGlsZHJlbi5sZW5ndGggLSAxXSkpIHsKKyAgICAgICAgICAgIGlmICghZG9udFBvcHVsYXRl
ICYmIGVsZW1lbnQuaGFzQ2hpbGRyZW4pCisgICAgICAgICAgICAgICAgZWxlbWVudC5vbnBvcHVs
YXRlKCk7CisgICAgICAgICAgICBlbGVtZW50ID0gKHNraXBVbnJldmVhbGVkID8gKGVsZW1lbnQu
cmV2ZWFsZWQoKSAmJiBlbGVtZW50LmV4cGFuZGVkID8gZWxlbWVudC5jaGlsZHJlbltlbGVtZW50
LmNoaWxkcmVuLmxlbmd0aCAtIDFdIDogbnVsbCkgOiBlbGVtZW50LmNoaWxkcmVuW2VsZW1lbnQu
Y2hpbGRyZW4ubGVuZ3RoIC0gMV0pOworICAgICAgICB9CiAKLSAgICBpZiAoIXRoaXMucGFyZW50
IHx8IHRoaXMucGFyZW50LnJvb3QpCi0gICAgICAgIHJldHVybiBudWxsOworICAgICAgICBpZiAo
ZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogCi0gICAgcmV0dXJuIHRoaXMu
cGFyZW50OwotfTsKKyAgICAgICAgaWYgKCF0aGlzLnBhcmVudCB8fCB0aGlzLnBhcmVudC5yb290
KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5pc0V2
ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgaWYg
KCFkb2N1bWVudC5jb250YWlucyh0aGlzLl9saXN0SXRlbU5vZGUpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiB0aGlzLnBhcmVudDsKKyAgICB9CiAKLSAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIG5vdCB1c2UgZ2V0Q29tcHV0ZWRTdHlsZSgpLiBGb3IgdGhhdCB3ZSBuZWVk
IHRvIGdldCByaWQgb2YgdXNpbmcgOjpiZWZvcmUgZm9yIGRpc2Nsb3N1cmUgdHJpYW5nbGUuICho
dHRwOi8vd2Viay5pdC83NDQ0NikKLSAgICB2YXIgY29tcHV0ZWRMZWZ0UGFkZGluZyA9IHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuX2xpc3RJdGVtTm9kZSkuZ2V0UHJvcGVydHlDU1NWYWx1
ZSgicGFkZGluZy1sZWZ0IikuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfUFgp
OwotICAgIHZhciBsZWZ0ID0gdGhpcy5fbGlzdEl0ZW1Ob2RlLnRvdGFsT2Zmc2V0TGVmdCArIGNv
bXB1dGVkTGVmdFBhZGRpbmc7Ci0gICAgcmV0dXJuIGV2ZW50LnBhZ2VYID49IGxlZnQgJiYgZXZl
bnQucGFnZVggPD0gbGVmdCArIHRoaXMuYXJyb3dUb2dnbGVXaWR0aCAmJiB0aGlzLmhhc0NoaWxk
cmVuOwotfTsKKyAgICBpc0V2ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlKGV2ZW50KQorICAg
IHsKKyAgICAgICAgaWYgKCFkb2N1bWVudC5jb250YWlucyh0aGlzLl9saXN0SXRlbU5vZGUpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbm90IHVzZSBnZXRDb21wdXRlZFN0eWxlKCkuIEZvciB0aGF0IHdlIG5lZWQgdG8g
Z2V0IHJpZCBvZiB1c2luZyA6OmJlZm9yZSBmb3IgZGlzY2xvc3VyZSB0cmlhbmdsZS4gKGh0dHA6
Ly93ZWJrLml0Lzc0NDQ2KQorICAgICAgICB2YXIgY29tcHV0ZWRMZWZ0UGFkZGluZyA9IHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuX2xpc3RJdGVtTm9kZSkuZ2V0UHJvcGVydHlDU1NWYWx1
ZSgicGFkZGluZy1sZWZ0IikuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfUFgp
OworICAgICAgICB2YXIgbGVmdCA9IHRoaXMuX2xpc3RJdGVtTm9kZS50b3RhbE9mZnNldExlZnQg
KyBjb21wdXRlZExlZnRQYWRkaW5nOworICAgICAgICByZXR1cm4gZXZlbnQucGFnZVggPj0gbGVm
dCAmJiBldmVudC5wYWdlWCA8PSBsZWZ0ICsgdGhpcy5hcnJvd1RvZ2dsZVdpZHRoICYmIHRoaXMu
aGFzQ2hpbGRyZW47CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZURh
dGFHcmlkU3luY2hyb25pemVyLmpzCmluZGV4IGFlOWY4NDRkMzNmMTIyNDEzNWIyMDY4MWU4M2Iz
YjhiODAxMDU2NzQuLjc3NDM0Yjg4Y2Q3NDU1MGUwNTE4ZmZjNGY4OGEwMzIyNTAxMjA2ZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVP
dXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsMTI1ICsyMywxMjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplciA9IGZ1bmN0
aW9uKHRyZWVPdXRsaW5lLCBkYXRhR3JpZCwgZGVsZWdhdGUpCitXZWJJbnNwZWN0b3IuVHJlZU91
dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplciA9IGNsYXNzIFRyZWVPdXRsaW5lRGF0YUdyaWRTeW5j
aHJvbml6ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IENv
bnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1
cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhp
cy5fdHJlZU91dGxpbmUgPSB0cmVlT3V0bGluZTsKLSAgICB0aGlzLl9kYXRhR3JpZCA9IGRhdGFH
cmlkOwotICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKLSAgICB0aGlzLl9l
bmFibGVkID0gdHJ1ZTsKLQotICAgIHRoaXMuX3RyZWVPdXRsaW5lLmVsZW1lbnQucGFyZW50Tm9k
ZS5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl90cmVlT3V0bGluZVNjcm9sbGVkLmJp
bmQodGhpcykpOwotICAgIHRoaXMuX2RhdGFHcmlkLnNjcm9sbENvbnRhaW5lci5hZGRFdmVudExp
c3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9kYXRhR3JpZFNjcm9sbGVkLmJpbmQodGhpcykpOwotCi0g
ICAgdGhpcy5fdHJlZU91dGxpbmUuX19kYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZDsKLQot
ICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LkV2ZW50LkV4cGFuZGVkTm9kZSwgdGhpcy5fZGF0YUdyaWROb2RlRXhwYW5kZWQsIHRoaXMpOwot
ICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LkV2ZW50LkNvbGxhcHNlZE5vZGUsIHRoaXMuX2RhdGFHcmlkTm9kZUNvbGxhcHNlZCwgdGhpcyk7
Ci0gICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdy
aWQuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5fZGF0YUdyaWROb2RlU2VsZWN0ZWQs
IHRoaXMpOwotCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgYSBoYWNrLiBUcmVlT3V0bGluZSBzaG91
bGQganVzdCBkaXNwYXRjaCBldmVudHMgdmlhIFdlYkluc3BlY3Rvci5PYmplY3QuCi0gICAgdmFy
IGV4aXN0aW5nT25BZGQgPSB0cmVlT3V0bGluZS5vbmFkZDsKLSAgICB2YXIgZXhpc3RpbmdPblJl
bW92ZSA9IHRyZWVPdXRsaW5lLm9ucmVtb3ZlOwotICAgIHZhciBleGlzdGluZ09uRXhwYW5kID0g
dHJlZU91dGxpbmUub25leHBhbmQ7Ci0gICAgdmFyIGV4aXN0aW5nT25Db2xsYXBzZSA9IHRyZWVP
dXRsaW5lLm9uY29sbGFwc2U7Ci0gICAgdmFyIGV4aXN0aW5nT25IaWRkZW4gPSB0cmVlT3V0bGlu
ZS5vbmhpZGRlbjsKLSAgICB2YXIgZXhpc3RpbmdPblNlbGVjdCA9IHRyZWVPdXRsaW5lLm9uc2Vs
ZWN0OwotCi0gICAgdHJlZU91dGxpbmUub25hZGQgPSBmdW5jdGlvbihlbGVtZW50KSB7Ci0gICAg
ICAgIHRoaXMuX3RyZWVFbGVtZW50QWRkZWQoZWxlbWVudCk7Ci0gICAgICAgIGlmIChleGlzdGlu
Z09uQWRkKQotICAgICAgICAgICAgZXhpc3RpbmdPbkFkZC5jYWxsKHRyZWVPdXRsaW5lLCBlbGVt
ZW50KTsKLSAgICB9LmJpbmQodGhpcyk7Ci0KLSAgICB0cmVlT3V0bGluZS5vbnJlbW92ZSA9IGZ1
bmN0aW9uKGVsZW1lbnQpIHsKLSAgICAgICAgdGhpcy5fdHJlZUVsZW1lbnRSZW1vdmVkKGVsZW1l
bnQpOwotICAgICAgICBpZiAoZXhpc3RpbmdPblJlbW92ZSkKLSAgICAgICAgICAgIGV4aXN0aW5n
T25SZW1vdmUuY2FsbCh0cmVlT3V0bGluZSwgZWxlbWVudCk7Ci0gICAgfS5iaW5kKHRoaXMpOwot
Ci0gICAgdHJlZU91dGxpbmUub25leHBhbmQgPSBmdW5jdGlvbihlbGVtZW50KSB7Ci0gICAgICAg
IHRoaXMuX3RyZWVFbGVtZW50RXhwYW5kZWQoZWxlbWVudCk7Ci0gICAgICAgIGlmIChleGlzdGlu
Z09uRXhwYW5kKQotICAgICAgICAgICAgZXhpc3RpbmdPbkV4cGFuZC5jYWxsKHRyZWVPdXRsaW5l
LCBlbGVtZW50KTsKLSAgICB9LmJpbmQodGhpcyk7Ci0KLSAgICB0cmVlT3V0bGluZS5vbmNvbGxh
cHNlID0gZnVuY3Rpb24oZWxlbWVudCkgewotICAgICAgICB0aGlzLl90cmVlRWxlbWVudENvbGxh
cHNlZChlbGVtZW50KTsKLSAgICAgICAgaWYgKGV4aXN0aW5nT25Db2xsYXBzZSkKLSAgICAgICAg
ICAgIGV4aXN0aW5nT25Db2xsYXBzZS5jYWxsKHRyZWVPdXRsaW5lLCBlbGVtZW50KTsKLSAgICB9
LmJpbmQodGhpcyk7Ci0KLSAgICB0cmVlT3V0bGluZS5vbmhpZGRlbiA9IGZ1bmN0aW9uKGVsZW1l
bnQsIGhpZGRlbikgewotICAgICAgICB0aGlzLl90cmVlRWxlbWVudEhpZGRlbkNoYW5nZWQoZWxl
bWVudCwgaGlkZGVuKTsKLSAgICAgICAgaWYgKGV4aXN0aW5nT25IaWRkZW4pCi0gICAgICAgICAg
ICBleGlzdGluZ09uSGlkZGVuLmNhbGwodHJlZU91dGxpbmUsIGVsZW1lbnQsIGhpZGRlbik7Ci0g
ICAgfS5iaW5kKHRoaXMpOwotCi0gICAgdHJlZU91dGxpbmUub25zZWxlY3QgPSBmdW5jdGlvbihl
bGVtZW50LCBzZWxlY3RlZEJ5VXNlcikgewotICAgICAgICB0aGlzLl90cmVlRWxlbWVudFNlbGVj
dGVkKGVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKTsKLSAgICAgICAgaWYgKGV4aXN0aW5nT25TZWxl
Y3QpCi0gICAgICAgICAgICBleGlzdGluZ09uU2VsZWN0LmNhbGwodHJlZU91dGxpbmUsIGVsZW1l
bnQsIHNlbGVjdGVkQnlVc2VyKTsKLSAgICB9LmJpbmQodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0
b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLAot
ICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgY29uc3Ry
dWN0b3IodHJlZU91dGxpbmUsIGRhdGFHcmlkLCBkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHN1
cGVyKCk7CisKKyAgICAgICAgdGhpcy5fdHJlZU91dGxpbmUgPSB0cmVlT3V0bGluZTsKKyAgICAg
ICAgdGhpcy5fZGF0YUdyaWQgPSBkYXRhR3JpZDsKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBk
ZWxlZ2F0ZSB8fCBudWxsOworICAgICAgICB0aGlzLl9lbmFibGVkID0gdHJ1ZTsKKworICAgICAg
ICB0aGlzLl90cmVlT3V0bGluZS5lbGVtZW50LnBhcmVudE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigi
c2Nyb2xsIiwgdGhpcy5fdHJlZU91dGxpbmVTY3JvbGxlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
dGhpcy5fZGF0YUdyaWQuc2Nyb2xsQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIs
IHRoaXMuX2RhdGFHcmlkU2Nyb2xsZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgdGhpcy5fdHJl
ZU91dGxpbmUuX19kYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZDsKKworICAgICAgICB0aGlz
Ll9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5F
eHBhbmRlZE5vZGUsIHRoaXMuX2RhdGFHcmlkTm9kZUV4cGFuZGVkLCB0aGlzKTsKKyAgICAgICAg
dGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZl
bnQuQ29sbGFwc2VkTm9kZSwgdGhpcy5fZGF0YUdyaWROb2RlQ29sbGFwc2VkLCB0aGlzKTsKKyAg
ICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdy
aWQuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5fZGF0YUdyaWROb2RlU2VsZWN0ZWQs
IHRoaXMpOworCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgaGFjay4gVHJlZU91dGxpbmUg
c2hvdWxkIGp1c3QgZGlzcGF0Y2ggZXZlbnRzIHZpYSBXZWJJbnNwZWN0b3IuT2JqZWN0LgorICAg
ICAgICB2YXIgZXhpc3RpbmdPbkFkZCA9IHRyZWVPdXRsaW5lLm9uYWRkOworICAgICAgICB2YXIg
ZXhpc3RpbmdPblJlbW92ZSA9IHRyZWVPdXRsaW5lLm9ucmVtb3ZlOworICAgICAgICB2YXIgZXhp
c3RpbmdPbkV4cGFuZCA9IHRyZWVPdXRsaW5lLm9uZXhwYW5kOworICAgICAgICB2YXIgZXhpc3Rp
bmdPbkNvbGxhcHNlID0gdHJlZU91dGxpbmUub25jb2xsYXBzZTsKKyAgICAgICAgdmFyIGV4aXN0
aW5nT25IaWRkZW4gPSB0cmVlT3V0bGluZS5vbmhpZGRlbjsKKyAgICAgICAgdmFyIGV4aXN0aW5n
T25TZWxlY3QgPSB0cmVlT3V0bGluZS5vbnNlbGVjdDsKKworICAgICAgICB0cmVlT3V0bGluZS5v
bmFkZCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIHRoaXMuX3RyZWVFbGVtZW50
QWRkZWQoZWxlbWVudCk7CisgICAgICAgICAgICBpZiAoZXhpc3RpbmdPbkFkZCkKKyAgICAgICAg
ICAgICAgICBleGlzdGluZ09uQWRkLmNhbGwodHJlZU91dGxpbmUsIGVsZW1lbnQpOworICAgICAg
ICB9LmJpbmQodGhpcyk7CisKKyAgICAgICAgdHJlZU91dGxpbmUub25yZW1vdmUgPSBmdW5jdGlv
bihlbGVtZW50KSB7CisgICAgICAgICAgICB0aGlzLl90cmVlRWxlbWVudFJlbW92ZWQoZWxlbWVu
dCk7CisgICAgICAgICAgICBpZiAoZXhpc3RpbmdPblJlbW92ZSkKKyAgICAgICAgICAgICAgICBl
eGlzdGluZ09uUmVtb3ZlLmNhbGwodHJlZU91dGxpbmUsIGVsZW1lbnQpOworICAgICAgICB9LmJp
bmQodGhpcyk7CisKKyAgICAgICAgdHJlZU91dGxpbmUub25leHBhbmQgPSBmdW5jdGlvbihlbGVt
ZW50KSB7CisgICAgICAgICAgICB0aGlzLl90cmVlRWxlbWVudEV4cGFuZGVkKGVsZW1lbnQpOwor
ICAgICAgICAgICAgaWYgKGV4aXN0aW5nT25FeHBhbmQpCisgICAgICAgICAgICAgICAgZXhpc3Rp
bmdPbkV4cGFuZC5jYWxsKHRyZWVPdXRsaW5lLCBlbGVtZW50KTsKKyAgICAgICAgfS5iaW5kKHRo
aXMpOworCisgICAgICAgIHRyZWVPdXRsaW5lLm9uY29sbGFwc2UgPSBmdW5jdGlvbihlbGVtZW50
KSB7CisgICAgICAgICAgICB0aGlzLl90cmVlRWxlbWVudENvbGxhcHNlZChlbGVtZW50KTsKKyAg
ICAgICAgICAgIGlmIChleGlzdGluZ09uQ29sbGFwc2UpCisgICAgICAgICAgICAgICAgZXhpc3Rp
bmdPbkNvbGxhcHNlLmNhbGwodHJlZU91dGxpbmUsIGVsZW1lbnQpOworICAgICAgICB9LmJpbmQo
dGhpcyk7CisKKyAgICAgICAgdHJlZU91dGxpbmUub25oaWRkZW4gPSBmdW5jdGlvbihlbGVtZW50
LCBoaWRkZW4pIHsKKyAgICAgICAgICAgIHRoaXMuX3RyZWVFbGVtZW50SGlkZGVuQ2hhbmdlZChl
bGVtZW50LCBoaWRkZW4pOworICAgICAgICAgICAgaWYgKGV4aXN0aW5nT25IaWRkZW4pCisgICAg
ICAgICAgICAgICAgZXhpc3RpbmdPbkhpZGRlbi5jYWxsKHRyZWVPdXRsaW5lLCBlbGVtZW50LCBo
aWRkZW4pOworICAgICAgICB9LmJpbmQodGhpcyk7CisKKyAgICAgICAgdHJlZU91dGxpbmUub25z
ZWxlY3QgPSBmdW5jdGlvbihlbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikgeworICAgICAgICAgICAg
dGhpcy5fdHJlZUVsZW1lbnRTZWxlY3RlZChlbGVtZW50LCBzZWxlY3RlZEJ5VXNlcik7CisgICAg
ICAgICAgICBpZiAoZXhpc3RpbmdPblNlbGVjdCkKKyAgICAgICAgICAgICAgICBleGlzdGluZ09u
U2VsZWN0LmNhbGwodHJlZU91dGxpbmUsIGVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKTsKKyAgICAg
ICAgfS5iaW5kKHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHRyZWVP
dXRsaW5lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90cmVlT3V0bGluZTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBkYXRhR3JpZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fZGF0YUdyaWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGVsZWdhdGUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IGVuYWJsZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBzZXQgZW5hYmxlZCh4KQogICAgIHsKICAgICAgICAgdGhpcy5fZW5hYmxl
ZCA9IHggfHwgZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhc3NvY2lhdGU6IGZ1bmN0aW9u
KHRyZWVFbGVtZW50LCBkYXRhR3JpZE5vZGUpCisgICAgYXNzb2NpYXRlKHRyZWVFbGVtZW50LCBk
YXRhR3JpZE5vZGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudCk7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGFHcmlkTm9kZSk7CiAKICAgICAgICAgdHJlZUVs
ZW1lbnQuX19kYXRhR3JpZE5vZGUgPSBkYXRhR3JpZE5vZGU7CiAgICAgICAgIGRhdGFHcmlkTm9k
ZS5fX3RyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzeW5j
aHJvbml6ZTogZnVuY3Rpb24oKQorICAgIHN5bmNocm9uaXplKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2RhdGFHcmlkLnNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSB0aGlzLl90cmVlT3V0bGlu
ZS5lbGVtZW50LnBhcmVudE5vZGUuc2Nyb2xsVG9wOwogICAgICAgICBpZiAodGhpcy5fdHJlZU91
dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHRoaXMuX3RyZWVPdXRsaW5l
LnNlbGVjdGVkVHJlZUVsZW1lbnQuX19kYXRhR3JpZE5vZGUuc2VsZWN0KHRydWUpOwogICAgICAg
ICBlbHNlIGlmICh0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCiAgICAgICAgICAgICB0aGlz
Ll9kYXRhR3JpZC5zZWxlY3RlZE5vZGUuZGVzZWxlY3QodHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICB0cmVlRWxlbWVudEZvckRhdGFHcmlkTm9kZTogZnVuY3Rpb24oZGF0YUdyaWROb2RlKQor
ICAgIHRyZWVFbGVtZW50Rm9yRGF0YUdyaWROb2RlKGRhdGFHcmlkTm9kZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBkYXRhR3JpZE5vZGUuX190cmVlRWxlbWVudCB8fCBudWxsOwotICAgIH0sCisg
ICAgfQogCi0gICAgZGF0YUdyaWROb2RlRm9yVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKHRyZWVFbGVt
ZW50KQorICAgIGRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50KHRyZWVFbGVtZW50KQogICAgIHsK
ICAgICAgICAgaWYgKHRyZWVFbGVtZW50Ll9fZGF0YUdyaWROb2RlKQogICAgICAgICAgICAgcmV0
dXJuIHRyZWVFbGVtZW50Ll9fZGF0YUdyaWROb2RlOwpAQCAtMTU0LDExICsxNTEsMTEgQEAgV2Vi
SW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcml2YXRlCiAKLSAgICBfdHJlZU91dGxpbmVTY3JvbGxlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX3RyZWVPdXRsaW5lU2Nyb2xsZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
X2VuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzAsOSArMTY3LDkgQEAgV2ViSW5z
cGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBlID0gewogCiAg
ICAgICAgIHRoaXMuX2lnbm9yZU5leHREYXRhR3JpZFNjcm9sbEV2ZW50ID0gdHJ1ZTsKICAgICAg
ICAgdGhpcy5fZGF0YUdyaWQuc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcCA9IHRoaXMuX3RyZWVP
dXRsaW5lLmVsZW1lbnQucGFyZW50Tm9kZS5zY3JvbGxUb3A7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfZGF0YUdyaWRTY3JvbGxlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFHcmlkU2Nyb2xs
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xODQsOSArMTgxLDkgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0
YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2lnbm9yZU5l
eHRUcmVlT3V0bGluZVNjcm9sbEV2ZW50ID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fdHJlZU91dGxp
bmUuZWxlbWVudC5wYXJlbnROb2RlLnNjcm9sbFRvcCA9IHRoaXMuX2RhdGFHcmlkLnNjcm9sbENv
bnRhaW5lci5zY3JvbGxUb3A7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWROb2RlU2Vs
ZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhR3JpZE5vZGVTZWxlY3RlZChldmVudCkK
ICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTE5NCw5ICsxOTEsOSBAQCBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNo
cm9uaXplci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl9k
YXRhR3JpZC5zZWxlY3RlZE5vZGU7CiAgICAgICAgIGlmIChkYXRhR3JpZE5vZGUpCiAgICAgICAg
ICAgICBkYXRhR3JpZE5vZGUuX190cmVlRWxlbWVudC5zZWxlY3QodHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWROb2RlRXhwYW5kZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9kYXRhR3JpZE5vZGVFeHBhbmRlZChldmVudCkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwNiw5ICsy
MDMsOSBAQCBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCFkYXRhR3JpZE5vZGUuX190cmVlRWxlbWVudC5leHBh
bmRlZCkKICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS5fX3RyZWVFbGVtZW50LmV4cGFuZCgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkTm9kZUNvbGxhcHNlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2RhdGFHcmlkTm9kZUNvbGxhcHNlZChldmVudCkKICAgICB7CiAgICAgICAgIGlm
ICghdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIxOCw5ICsyMTUsOSBA
QCBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgaWYgKGRhdGFHcmlkTm9kZS5fX3RyZWVFbGVtZW50LmV4cGFuZGVkKQog
ICAgICAgICAgICAgZGF0YUdyaWROb2RlLl9fdHJlZUVsZW1lbnQuY29sbGFwc2UoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudFNlbGVjdGVkOiBmdW5jdGlvbih0cmVlRWxlbWVu
dCwgc2VsZWN0ZWRCeVVzZXIpCisgICAgX3RyZWVFbGVtZW50U2VsZWN0ZWQodHJlZUVsZW1lbnQs
IHNlbGVjdGVkQnlVc2VyKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjI5LDkgKzIyNiw5IEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0
bGluZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoZGF0YUdyaWROb2RlKTsKIAogICAgICAgICBkYXRhR3JpZE5vZGUuc2VsZWN0KHRydWUp
OwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50QWRkZWQ6IGZ1bmN0aW9uKHRyZWVF
bGVtZW50KQorICAgIF90cmVlRWxlbWVudEFkZGVkKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQ2LDkgKzI0
Myw5IEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY2hpbGRJbmRleCAhPT0gLTEpOwogCiAg
ICAgICAgIHBhcmVudERhdGFHcmlkTm9kZS5pbnNlcnRDaGlsZChkYXRhR3JpZE5vZGUsIGNoaWxk
SW5kZXgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50UmVtb3ZlZDogZnVuY3Rp
b24odHJlZUVsZW1lbnQpCisgICAgX3RyZWVFbGVtZW50UmVtb3ZlZCh0cmVlRWxlbWVudCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTI1OCw5ICsyNTUsOSBAQCBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9u
aXplci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKGRhdGFHcmlkTm9kZS5wYXJlbnQpCiAg
ICAgICAgICAgICBkYXRhR3JpZE5vZGUucGFyZW50LnJlbW92ZUNoaWxkKGRhdGFHcmlkTm9kZSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRFeHBhbmRlZDogZnVuY3Rpb24odHJl
ZUVsZW1lbnQpCisgICAgX3RyZWVFbGVtZW50RXhwYW5kZWQodHJlZUVsZW1lbnQpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNzAs
OSArMjY3LDkgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghZGF0YUdyaWROb2RlLmV4cGFuZGVkKQogICAg
ICAgICAgICAgZGF0YUdyaWROb2RlLmV4cGFuZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Ry
ZWVFbGVtZW50Q29sbGFwc2VkOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfdHJlZUVsZW1l
bnRDb2xsYXBzZWQodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VuYWJs
ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yODIsOSArMjc5LDkgQEAgV2ViSW5zcGVjdG9y
LlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBlID0gewogCiAgICAgICAg
IGlmIChkYXRhR3JpZE5vZGUuZXhwYW5kZWQpCiAgICAgICAgICAgICBkYXRhR3JpZE5vZGUuY29s
bGFwc2UoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudEhpZGRlbkNoYW5nZWQ6
IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBoaWRkZW4pCisgICAgX3RyZWVFbGVtZW50SGlkZGVuQ2hh
bmdlZCh0cmVlRWxlbWVudCwgaGlkZGVuKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lbmFi
bGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjk1LDUgKzI5MiwzIEBAIFdlYkluc3BlY3Rv
ci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZGF0YUdyaWROb2RlLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiaGlkZGVuIiwgaGlkZGVuKTsK
ICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXpl
ci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UeXBl
UHJvcGVydGllc1NlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UeXBlUHJvcGVydGllc1NlY3Rpb24uanMKaW5kZXggOTQ2MDRjN2JmZjlkNmY5Nzkw
NTZjNTg3MTE5YTk3NDY0N2NjOWYzMS4uNTJkMjE4MzliZDUzYjc1MjExYjRkYmJhZjA3NzM1YjU3
ZjlhNTkxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVHlwZVByb3BlcnRpZXNTZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1R5cGVQcm9wZXJ0aWVzU2VjdGlvbi5qcwpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw3ICs2OCw3
IEBAIFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdmFyIHRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAg
ICAgICAgICB0aXRsZS5jbGFzc05hbWUgPSAiaW5mbyI7CiAgICAgICAgICAgICB0aXRsZS50ZXh0
Q29udGVudCA9IHRoaXMuZW1wdHlQbGFjZWhvbGRlcjsKLSAgICAgICAgICAgIHZhciBpbmZvRWxl
bWVudCA9IG5ldyBUcmVlRWxlbWVudCh0aXRsZSwgbnVsbCwgZmFsc2UpOworICAgICAgICAgICAg
dmFyIGluZm9FbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudCh0aXRsZSwgbnVs
bCwgZmFsc2UpOwogICAgICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuYXBwZW5k
Q2hpbGQoaW5mb0VsZW1lbnQpOwogICAgICAgICB9CiAKQEAgLTc5LDcxICs3OSwyMyBAQCBXZWJJ
bnNwZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICB9CiB9Owog
Ci0vLyBUaGlzIGlzIG1vc3RseSBpZGVudGljYWwgdG8gT2JqZWN0VHJlZVZpZXcuY29tcGFyZVBy
b3BlcnRpZXMuCi0vLyBCdXQgdGhpcyBjaGVja3MgZm9yIGVxdWFsaXR5IGJlY2F1c2Ugd2UgY2Fu
IGhhdmUgdHdvIG9iamVjdHMgbmFtZWQgdGhlIHNhbWUgdGhpbmcuCi1XZWJJbnNwZWN0b3IuVHlw
ZVByb3BlcnRpZXNTZWN0aW9uLlByb3BlcnR5Q29tcGFyYXRvciA9IGZ1bmN0aW9uKHByb3BlcnR5
QSwgcHJvcGVydHlCKQorV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0eVRyZWVFbGVtZW50ID0gY2xh
c3MgVHlwZVByb3BlcnR5VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1l
bnQKIHsKLSAgICB2YXIgYSA9IHByb3BlcnR5QS5uYW1lOwotICAgIHZhciBiID0gcHJvcGVydHlC
Lm5hbWU7Ci0gICAgaWYgKGEuaW5kZXhPZigiX19wcm90b19fIikgIT09IC0xKQotICAgICAgICBy
ZXR1cm4gMTsKLSAgICBpZiAoYi5pbmRleE9mKCJfX3Byb3RvX18iKSAhPT0gLTEpCi0gICAgICAg
IHJldHVybiAtMTsKLSAgICBpZiAoYSA9PT0gYikKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICB2
YXIgZGlmZiA9IDA7Ci0gICAgdmFyIGNodW5rID0gL15cZCt8XlxEKy87Ci0gICAgdmFyIGNodW5r
YSwgY2h1bmtiLCBhbnVtLCBibnVtOwotICAgIHdoaWxlIChkaWZmID09PSAwKSB7Ci0gICAgICAg
IGlmICghYSAmJiBiKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoIWIgJiYg
YSkKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjaHVua2EgPSBhLm1hdGNoKGNodW5r
KVswXTsKLSAgICAgICAgY2h1bmtiID0gYi5tYXRjaChjaHVuaylbMF07Ci0gICAgICAgIGFudW0g
PSAhaXNOYU4oY2h1bmthKTsKLSAgICAgICAgYm51bSA9ICFpc05hTihjaHVua2IpOwotICAgICAg
ICBpZiAoYW51bSAmJiAhYm51bSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYg
KGJudW0gJiYgIWFudW0pCi0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgaWYgKGFudW0g
JiYgYm51bSkgewotICAgICAgICAgICAgZGlmZiA9IGNodW5rYSAtIGNodW5rYjsKLSAgICAgICAg
ICAgIGlmIChkaWZmID09PSAwICYmIGNodW5rYS5sZW5ndGggIT09IGNodW5rYi5sZW5ndGgpIHsK
LSAgICAgICAgICAgICAgICBpZiAoIStjaHVua2EgJiYgIStjaHVua2IpIC8vIGNodW5rcyBhcmUg
c3RyaW5ncyBvZiBhbGwgMHMgKHNwZWNpYWwgY2FzZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNodW5rYS5sZW5ndGggLSBjaHVua2IubGVuZ3RoOwotICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNodW5rYi5sZW5ndGggLSBjaHVua2EubGVuZ3Ro
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGNodW5rYSAhPT0gY2h1bmtiKQot
ICAgICAgICAgICAgcmV0dXJuIChjaHVua2EgPCBjaHVua2IpID8gLTEgOiAxOwotICAgICAgICBh
ID0gYS5zdWJzdHJpbmcoY2h1bmthLmxlbmd0aCk7Ci0gICAgICAgIGIgPSBiLnN1YnN0cmluZyhj
aHVua2IubGVuZ3RoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGlmZjsKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5UeXBlUHJvcGVydHlUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHByb3BlcnR5KQotewotICAg
IHRoaXMucHJvcGVydHkgPSBwcm9wZXJ0eTsKLQotICAgIHRoaXMubmFtZUVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgdGhpcy5uYW1lRWxlbWVudC5jbGFzc05h
bWUgPSAibmFtZSI7Ci0gICAgdGhpcy5uYW1lRWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMucHJv
cGVydHkubmFtZTsKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIHN1
cGVyKHRoaXMubmFtZUVsZW1lbnQsIG51bGwsIGZhbHNlKTsKIAotICAgIFRyZWVFbGVtZW50LmNh
bGwodGhpcywgdGhpcy5uYW1lRWxlbWVudCwgbnVsbCwgZmFsc2UpOworICAgICAgICB0aGlzLnBy
b3BlcnR5ID0gcHJvcGVydHk7CiAKLSAgICB0aGlzLnRvZ2dsZU9uQ2xpY2sgPSB0cnVlOwotICAg
IHRoaXMuaGFzQ2hpbGRyZW4gPSAhIXRoaXMucHJvcGVydHkuc3RydWN0dXJlOwotfTsKKyAgICAg
ICAgdGhpcy5uYW1lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAg
ICAgICAgdGhpcy5uYW1lRWxlbWVudC5jbGFzc05hbWUgPSAibmFtZSI7CisgICAgICAgIHRoaXMu
bmFtZUVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLnByb3BlcnR5Lm5hbWU7CiAKLVdlYkluc3Bl
Y3Rvci5UeXBlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydHlUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186
IFRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy50b2dnbGVPbkNsaWNrID0gdHJ1
ZTsKKyAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9ICEhdGhpcy5wcm9wZXJ0eS5zdHJ1Y3R1cmU7
CisgICAgfQogCi0gICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQorICAgIG9ucG9wdWxhdGUoKQog
ICAgIHsKICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC0xODQsNCArMTM2LDMg
QEAgV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydHlU
cmVlRWxlbWVudChwcm9wZXJ0eSkpOwogICAgIH0KIH07Ci0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249507</attachid>
            <date>2015-03-26 12:17:08 -0700</date>
            <delta_ts>2015-03-26 13:11:23 -0700</delta_ts>
            <desc>Patch (Ignore Space)</desc>
            <filename>ignore-space.patch</filename>
            <type>text/plain</type>
            <size>202732</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDc1ZjRkMTQuLjNiNTRhYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU4IEBACiAyMDE1LTAzLTI2ICBUaW1vdGh5IEhhdGNo
ZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb252ZXJ0
IFRyZWVFbGVtZW50IGNsYXNzZXMgdG8gRVM2CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNo
ZUZyYW1lVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9BcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0Nvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTVN0b3JhZ2VUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZU91dGxpbmUuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9E
YXRhYmFzZUhvc3RUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L0RhdGFiYXNlVGFibGVUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0RhdGFiYXNlVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9Gb2xkZXJUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0Zv
bGRlcml6ZWRUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0Zy
YW1lVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFs
VHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0
YWJhc2VIb3N0VHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9J
bmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQuanM6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZVRyZWVFbGVtZW50
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlVHJlZUVs
ZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lDb25zb2xlTWVz
c2FnZUltcGwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Mb2dUcmVlRWxlbWVu
dC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlQXJyYXlJbmRl
eFRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJl
ZUJhc2VUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL09iamVj
dFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9PYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvUHJvZmlsZU5vZGVUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1Byb3BlcnRpZXNTZWN0aW9uLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvUmVzb3VyY2VUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL1NjcmlwdFRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9Tb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1NvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQuanM6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlkLmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVHlwZVByb3BlcnRpZXNTZWN0aW9uLmpzOgorICAgICAgICBDb252
ZXJ0ZWQgdG8gRVM2IGNsYXNzZXMgd2hlcmUgcG9zc2libGUuCisKKzIwMTUtMDMtMjYgIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IENvbnZlcnQgc2lkZWJhciBjbGFzc2VzIHRvIEVTNgogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVF
bGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBw
bGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQuanMKaW5kZXggN2FiYzU0Zi4uNzkzNjk2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBw
bGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDIzICsyMywyMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudCA9IGZ1
bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVG
cmFtZVRyZWVFbGVtZW50ID0gY2xhc3MgQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0
b3IocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJh
bWUpOwogCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFdl
Ykluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFt
ZSwgIiIsICIiLCByZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOworICAgICAgICBzdXBlcihXZWJJ
bnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUs
ICIiLCAiIiwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKIAogICAgICAgICB0aGlzLnNtYWxs
ID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlcygpOwotfTsKLQotV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lID0gImFw
cGxpY2F0aW9uLWNhY2hlLWZyYW1lIjsKLQotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVG
cmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50LAorICAgIH0KIAotICAgIHVwZGF0
ZVRpdGxlczogZnVuY3Rpb24oKQorICAgIHVwZGF0ZVRpdGxlcygpCiAgICAgewogICAgICAgICB2
YXIgdXJsID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5mcmFtZS51cmw7CiAgICAgICAgIHZhciBw
YXJzZWRVUkwgPSBwYXJzZVVSTCh1cmwpOwpAQCAtNTgsNCArNTUsNCBAQCBXZWJJbnNwZWN0b3Iu
QXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIH0KIH07
CiAKLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGU7
CitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQuU3R5bGVDbGFz
c05hbWUgPSAiYXBwbGljYXRpb24tY2FjaGUtZnJhbWUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5qcwppbmRleCA5Zjg5M2RlLi42
Nzk3ZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlTWFuaWZl
c3RUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMTcgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVz
dFRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3Iu
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQgPSBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlTWFuaWZlc3RUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVs
ZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuU3RvcmFn
ZVRyZWVFbGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCAiIiwgcmVwcmVzZW50ZWRPYmplY3QpOwot
fTsKLQotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LlN0
eWxlQ2xhc3NOYW1lID0gImFwcGxpY2F0aW9uLWNhY2hlLW1hbmlmZXN0IjsKLQotV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVF
bGVtZW50LAorICAgICAgICBzdXBlcihXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0VHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUsICIiLCByZXByZXNlbnRlZE9iamVjdCk7Cisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKQEAgLTQzLDcgKzQwLDcgQEAgV2ViSW5zcGVjdG9yLkFw
cGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX2dlbmVyYXRlVGl0bGVzKCk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2Vjb25kYXJ5TmFtZSgpCiAgICAgewpAQCAtNTEs
MTQgKzQ4LDE0IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9nZW5lcmF0ZVRpdGxlcygpOwog
CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWNvbmRhcnlOYW1lOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGNhdGVnb3J5TmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJBcHBsaWNhdGlvbiBDYWNoZSIpOwotICAgIH0sCisgICAgfQogCi0gICAgX2dl
bmVyYXRlVGl0bGVzOiBmdW5jdGlvbigpCisgICAgX2dlbmVyYXRlVGl0bGVzKCkKICAgICB7CiAg
ICAgICAgIHZhciBwYXJzZWRVUkwgPSBwYXJzZVVSTCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm1h
bmlmZXN0VVJMKTsKIApAQCAtNzEsNCArNjgsNCBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYklu
c3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGU7CitXZWJJ
bnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQuU3R5bGVDbGFzc05h
bWUgPSAiYXBwbGljYXRpb24tY2FjaGUtbWFuaWZlc3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmpzCmluZGV4IGEwOWFjMDguLjA4NjZlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3Bv
aW50VHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTQgKzIzLDE2IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxl
bWVudCA9IGZ1bmN0aW9uKGJyZWFrcG9pbnQsIGNsYXNzTmFtZSwgdGl0bGUpCitXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9y
KGJyZWFrcG9pbnQsIGNsYXNzTmFtZSwgdGl0bGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQpOwogCiAg
ICAgICAgIGlmICghY2xhc3NOYW1lKQogICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5HZW5lcmljTGluZUljb25TdHlsZUNsYXNzTmFtZTsK
IAotICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBbV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSwgY2xhc3NOYW1lXSwg
dGl0bGUsIG51bGwsIGJyZWFrcG9pbnQsIGZhbHNlKTsKKyAgICAgICAgc3VwZXIoWyJicmVha3Bv
aW50IiwgY2xhc3NOYW1lXSwgdGl0bGUsIG51bGwsIGJyZWFrcG9pbnQsIGZhbHNlKTsKIAogICAg
ICAgICB0aGlzLl9icmVha3BvaW50ID0gYnJlYWtwb2ludDsKIApAQCAtNTksNjQgKzYxLDQ5IEBA
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihicmVha3BvaW50
LCBjbGFzc05hbWUsIHRpdGxlKQogCiAgICAgICAgIHRoaXMuX2ljb25BbmltYXRpb25MYXllckVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIHRoaXMuaWNv
bkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faWNvbkFuaW1hdGlvbkxheWVyRWxlbWVudCk7Ci19
OwotCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LkdlbmVyaWNMaW5lSWNvblN0
eWxlQ2xhc3NOYW1lID0gImJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24iOwotV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50IjsK
LVdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VFbGVtZW50U3R5
bGVDbGFzc05hbWUgPSAic3RhdHVzLWltYWdlIjsKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJl
ZUVsZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lID0gInJlc29sdmVkIjsK
LVdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VBdXRvQ29udGlu
dWVTdHlsZUNsYXNzTmFtZSA9ICJhdXRvLWNvbnRpbnVlIjsKLVdlYkluc3BlY3Rvci5CcmVha3Bv
aW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VEaXNhYmxlZFN0eWxlQ2xhc3NOYW1lID0gImRpc2Fi
bGVkIjsKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuRm9ybWF0dGVkTG9jYXRp
b25TdHlsZUNsYXNzTmFtZSA9ICJmb3JtYXR0ZWQtbG9jYXRpb24iOwotV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUgPSAiZGF0
YS11cGRhdGVkIjsKLQotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURh
dGFVcGRhdGVkQW5pbWF0aW9uRHVyYXRpb24gPSA0MDA7IC8vIG1pbGxpc2Vjb25kcwotCi0KLVdl
Ykluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LAorICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCiAgICAgZ2V0IGJyZWFrcG9pbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2JyZWFrcG9pbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZmlsdGVyYWJsZURh
dGEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHt0ZXh0OiB0aGlzLmJyZWFrcG9pbnQudXJsfTsK
LSAgICB9LAorICAgIH0KIAotICAgIG9uZGVsZXRlOiBmdW5jdGlvbigpCisgICAgb25kZWxldGUo
KQogICAgIHsKICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmlzQnJl
YWtwb2ludFJlbW92YWJsZSh0aGlzLl9icmVha3BvaW50KSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJyZWFr
cG9pbnQodGhpcy5fYnJlYWtwb2ludCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisg
ICAgfQogCi0gICAgb25lbnRlcjogZnVuY3Rpb24oKQorICAgIG9uZW50ZXIoKQogICAgIHsKICAg
ICAgICAgdGhpcy5fYnJlYWtwb2ludC5jeWNsZVRvTmV4dE1vZGUoKTsKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbnNwYWNlOiBmdW5jdGlvbigpCisgICAgb25z
cGFjZSgpCiAgICAgewogICAgICAgICB0aGlzLl9icmVha3BvaW50LmN5Y2xlVG9OZXh0TW9kZSgp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uY29udGV4dG1l
bnU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIG9uY29udGV4dG1lbnUoZXZlbnQpCiAgICAgewogICAg
ICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50
KTsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludC5hcHBlbmRDb250ZXh0TWVudUl0ZW1zKGNvbnRl
eHRNZW51LCB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnQpOwogICAgICAgICBjb250ZXh0TWVudS5z
aG93KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIG9u
YXR0YWNoKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQu
cHJvdG90eXBlLm9uYXR0YWNoLmNhbGwodGhpcyk7CiAKQEAgLTEyNSw5ICsxMTIsOSBAQCBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgZm9y
ICh2YXIgcHJvYmVTZXQgb2YgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5wcm9iZVNldHMpCiAg
ICAgICAgICAgICBpZiAocHJvYmVTZXQuYnJlYWtwb2ludCA9PT0gdGhpcy5fYnJlYWtwb2ludCkK
ICAgICAgICAgICAgICAgICB0aGlzLl9hZGRQcm9iZVNldChwcm9iZVNldCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBvbmRldGFjaDogZnVuY3Rpb24oKQorICAgIG9uZGV0YWNoKCkKICAgICB7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZGV0YWNo
LmNhbGwodGhpcyk7CiAKQEAgLTEzNSwxNyArMTIyLDE3IEBAIFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLl9wcm9iZVNl
dCkKICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVByb2JlU2V0KHRoaXMuX3Byb2JlU2V0KTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJlbW92ZVN0YXR1c0ltYWdlOiBmdW5jdGlvbigpCisgICAgcmVt
b3ZlU3RhdHVzSW1hZ2UoKQogICAgIHsKICAgICAgICAgdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50
LnJlbW92ZSgpOwogICAgICAgICB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnQgPSBudWxsOwotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3VwZGF0ZVRpdGxlczogZnVuY3Rp
b24oKQorICAgIF91cGRhdGVUaXRsZXMoKQogICAgIHsKICAgICAgICAgdmFyIHNvdXJjZUNvZGVM
b2NhdGlvbiA9IHRoaXMuX2JyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uOwogCkBAIC0xNjYs
OSArMTUzLDkgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMubWFpblRpdGxlICsgIiBcdTIw
MTQgIiArIFdlYkluc3BlY3Rvci5VSVN0cmluZygib3JpZ2luYWxseSAlcyIpLmZvcm1hdChzb3Vy
Y2VDb2RlTG9jYXRpb24ub3JpZ2luYWxMb2NhdGlvblN0cmluZygpKTsKICAgICAgICAgfQotICAg
IH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVN0YXR1czogZnVuY3Rpb24oKQorICAgIF91cGRhdGVT
dGF0dXMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnQpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0xODcsOSArMTc0LDkgQEAgV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9zdGF0dXNJ
bWFnZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVt
ZW50LlN0YXR1c0ltYWdlUmVzb2x2ZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYklu
c3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0eWxlQ2xh
c3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hZGRQcm9iZVNldDogZnVuY3Rpb24ocHJv
YmVTZXQpCisgICAgX2FkZFByb2JlU2V0KHByb2JlU2V0KQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQocHJvYmVTZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvYmVTZXQpOwogICAg
ICAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldC5icmVha3BvaW50ID09PSB0aGlzLl9icmVha3Bv
aW50KTsKQEAgLTE5OCw5ICsxODUsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcHJvYmVTZXQgPSBwcm9iZVNldDsKICAg
ICAgICAgcHJvYmVTZXQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvYmVTZXQuRXZl
bnQuU2FtcGxlc0NsZWFyZWQsIHRoaXMuX3NhbXBsZXNDbGVhcmVkLCB0aGlzKTsKICAgICAgICAg
cHJvYmVTZXQuZGF0YVRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlU2V0
RGF0YVRhYmxlLkV2ZW50LkZyYW1lSW5zZXJ0ZWQsIHRoaXMuX2RhdGFVcGRhdGVkLCB0aGlzKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9yZW1vdmVQcm9iZVNldDogZnVuY3Rpb24ocHJvYmVTZXQp
CisgICAgX3JlbW92ZVByb2JlU2V0KHByb2JlU2V0KQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQocHJvYmVTZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvYmVTZXQpOwogICAgICAg
ICBjb25zb2xlLmFzc2VydChwcm9iZVNldCA9PT0gdGhpcy5fcHJvYmVTZXQpOwpAQCAtMjA4LDMy
ICsxOTUsMzIgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHByb2JlU2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlBy
b2JlU2V0LkV2ZW50LlNhbXBsZXNDbGVhcmVkLCB0aGlzLl9zYW1wbGVzQ2xlYXJlZCwgdGhpcyk7
CiAgICAgICAgIHByb2JlU2V0LmRhdGFUYWJsZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Qcm9iZVNldERhdGFUYWJsZS5FdmVudC5GcmFtZUluc2VydGVkLCB0aGlzLl9kYXRhVXBk
YXRlZCwgdGhpcyk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9wcm9iZVNldDsKLSAgICB9LAorICAg
IH0KIAotICAgIF9wcm9iZVNldEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcHJvYmVTZXRB
ZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBwcm9iZVNldCA9IGV2ZW50LmRhdGEucHJv
YmVTZXQ7CiAgICAgICAgIGlmIChwcm9iZVNldC5icmVha3BvaW50ID09PSB0aGlzLl9icmVha3Bv
aW50KQogICAgICAgICAgICAgdGhpcy5fYWRkUHJvYmVTZXQocHJvYmVTZXQpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3Byb2JlU2V0UmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Byb2Jl
U2V0UmVtb3ZlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBwcm9iZVNldCA9IGV2ZW50LmRh
dGEucHJvYmVTZXQ7CiAgICAgICAgIGlmIChwcm9iZVNldC5icmVha3BvaW50ID09PSB0aGlzLl9i
cmVha3BvaW50KQogICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvYmVTZXQocHJvYmVTZXQpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3NhbXBsZXNDbGVhcmVkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfc2FtcGxlc0NsZWFyZWQoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLl9wcm9iZVNldCk7CiAKICAgICAgICAgdmFyIG9sZFRhYmxlID0gZXZlbnQuZGF0YS5vbGRU
YWJsZTsKICAgICAgICAgb2xkVGFibGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
UHJvYmVTZXREYXRhVGFibGUuRXZlbnQuRnJhbWVJbnNlcnRlZCwgdGhpcy5fZGF0YVVwZGF0ZWQs
IHRoaXMpOwogICAgICAgICB0aGlzLl9wcm9iZVNldC5kYXRhVGFibGUuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhVGFibGUuRXZlbnQuRnJhbWVJbnNlcnRlZCwgdGhp
cy5fZGF0YVVwZGF0ZWQsIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFVcGRhdGVk
OiBmdW5jdGlvbigpCisgICAgX2RhdGFVcGRhdGVkKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVs
ZW1lbnQuUHJvYmVEYXRhVXBkYXRlZFN0eWxlQ2xhc3NOYW1lKSkgewogICAgICAgICAgICAgY2xl
YXJUaW1lb3V0KHRoaXMuX3JlbW92ZUljb25BbmltYXRpb25UaW1lb3V0SWRlbnRpZmllcik7CkBA
IC0yNDgsMTAgKzIzNSwxMCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVtb3ZlSWNvbkFuaW1hdGlvblRpbWVvdXRJZGVu
dGlmaWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuUHJv
YmVEYXRhVXBkYXRlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgfS5iaW5kKHRoaXMpLCBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LlByb2JlRGF0YVVwZGF0ZWRBbmltYXRpb25E
dXJhdGlvbik7Ci0gICAgfSwKKyAgICB9CiAKIAotICAgIF9icmVha3BvaW50TG9jYXRpb25EaWRD
aGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9icmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2Uo
ZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgPT09IHRo
aXMuX2JyZWFrcG9pbnQpOwogCkBAIC0yNjAsMTggKzI0NywyNiBAQCBXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICB0aGlzLl91cGRhdGVUaXRsZXMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdGF0
dXNJbWFnZUVsZW1lbnRNb3VzZURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zdGF0dXNJbWFn
ZUVsZW1lbnRNb3VzZURvd24oZXZlbnQpCiAgICAgewogICAgICAgICAvLyBUbyBwcmV2ZW50IHRo
ZSB0cmVlIGVsZW1lbnQgZnJvbSBzZWxlY3RpbmcuCiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdh
dGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludC5jeWNsZVRvTmV4dE1vZGUoKTsKICAgICB9
CiB9OwogCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZTsKK1dlYklu
c3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuR2VuZXJpY0xpbmVJY29uU3R5bGVDbGFzc05h
bWUgPSAiYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiI7CitXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInN0YXR1
cy1pbWFnZSI7CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdl
UmVzb2x2ZWRTdHlsZUNsYXNzTmFtZSA9ICJyZXNvbHZlZCI7CitXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlQXV0b0NvbnRpbnVlU3R5bGVDbGFzc05hbWUgPSAi
YXV0by1jb250aW51ZSI7CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1
c0ltYWdlRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSA9ICJkaXNhYmxlZCI7CitXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludFRyZWVFbGVtZW50LkZvcm1hdHRlZExvY2F0aW9uU3R5bGVDbGFzc05hbWUgPSAi
Zm9ybWF0dGVkLWxvY2F0aW9uIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQu
UHJvYmVEYXRhVXBkYXRlZFN0eWxlQ2xhc3NOYW1lID0gImRhdGEtdXBkYXRlZCI7CisKK1dlYklu
c3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuUHJvYmVEYXRhVXBkYXRlZEFuaW1hdGlvbkR1
cmF0aW9uID0gNDAwOyAvLyBtaWxsaXNlY29uZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJlZUVsZW1l
bnQuanMKaW5kZXggMWZiMDMyOS4uYzQ5YTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJlZUVs
ZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDcgKzIzLDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihj
YWxsRnJhbWUpCitXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQgPSBjbGFzcyBDYWxs
RnJhbWVUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQK
K3sKKyAgICBjb25zdHJ1Y3RvcihjYWxsRnJhbWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChjYWxsRnJhbWUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lKTsKIApAQCAt
MzgsNyArNDAsNyBAQCBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQgPSBmdW5jdGlv
bihjYWxsRnJhbWUpCiAKICAgICAgICAgdmFyIHRpdGxlID0gY2FsbEZyYW1lLmZ1bmN0aW9uTmFt
ZSB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIik7CiAKLSAg
ICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgY2xhc3NOYW1lLCB0
aXRsZSwgbnVsbCwgY2FsbEZyYW1lLCBmYWxzZSk7CisgICAgICAgIHN1cGVyKGNsYXNzTmFtZSwg
dGl0bGUsIG51bGwsIGNhbGxGcmFtZSwgZmFsc2UpOwogCiAgICAgICAgIGlmICghY2FsbEZyYW1l
Lm5hdGl2ZUNvZGUgJiYgY2FsbEZyYW1lLnNvdXJjZUNvZGVMb2NhdGlvbikgewogICAgICAgICAg
ICAgdmFyIGRpc3BsYXlTY3JpcHRVUkwgPSBjYWxsRnJhbWUuc291cmNlQ29kZUxvY2F0aW9uLmRp
c3BsYXlTb3VyY2VDb2RlLnVybDsKQEAgLTUzLDI1ICs1NSwxOCBAQCBXZWJJbnNwZWN0b3IuQ2Fs
bEZyYW1lVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihjYWxsRnJhbWUpCiAgICAgICAgIHRoaXMuX2Nh
bGxGcmFtZSA9IGNhbGxGcmFtZTsKIAogICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKLX07Ci0K
LVdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVudC5GdW5jdGlvbkljb25TdHlsZUNsYXNz
TmFtZSA9ICJmdW5jdGlvbi1pY29uIjsKLVdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVu
dC5FdmVudExpc3RlbmVySWNvblN0eWxlQ2xhc3NOYW1lID0gImV2ZW50LWxpc3RlbmVyLWljb24i
OwotV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50Lk5hdGl2ZUljb25TdHlsZUNsYXNz
TmFtZSA9ICJuYXRpdmUtaWNvbiI7Ci0KLVdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5DYWxsRnJhbWVU
cmVlRWxlbWVudCwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBjYWxsRnJhbWUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxGcmFtZTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICBvbmF0
dGFjaCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnBy
b3RvdHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOwogCkBAIC04NCw0ICs3OSw2IEBAIFdlYkluc3Bl
Y3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2Vi
SW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5DYWxs
RnJhbWVUcmVlRWxlbWVudC5GdW5jdGlvbkljb25TdHlsZUNsYXNzTmFtZSA9ICJmdW5jdGlvbi1p
Y29uIjsKK1dlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVudC5FdmVudExpc3RlbmVySWNv
blN0eWxlQ2xhc3NOYW1lID0gImV2ZW50LWxpc3RlbmVyLWljb24iOworV2ViSW5zcGVjdG9yLkNh
bGxGcmFtZVRyZWVFbGVtZW50Lk5hdGl2ZUljb25TdHlsZUNsYXNzTmFtZSA9ICJuYXRpdmUtaWNv
biI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qcwppbmRleCAyNDY5ZGJjLi43
ZTI4YTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93VHJlZUVsZW1lbnQuanMKQEAgLTEsNCAr
MSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3LDE4ICsyOCwx
NiBAQAogICogU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJl
ZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5Db250
ZW50Rmxvd1RyZWVFbGVtZW50ID0gY2xhc3MgQ29udGVudEZsb3dUcmVlRWxlbWVudCBleHRlbmRz
IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihyZXBy
ZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KTsKLSAgICBXZWJJbnNw
ZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgW1dlYkluc3BlY3Rvci5Db250ZW50
Rmxvd1RyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dU
cmVlRWxlbWVudC5Db250ZW50Rmxvd0ljb25TdHlsZUNsYXNzTmFtZV0sIHJlcHJlc2VudGVkT2Jq
ZWN0Lm5hbWUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7CisKKyAgICAgICAgc3Vw
ZXIoW1dlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBX
ZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudC5Db250ZW50Rmxvd0ljb25TdHlsZUNs
YXNzTmFtZV0sIHJlcHJlc2VudGVkT2JqZWN0Lm5hbWUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0
LCBmYWxzZSk7CiAKICAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7CisgICAgfQogfTsKIAogV2Vi
SW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQuQ29udGVudEZsb3dJY29uU3R5bGVDbGFz
c05hbWUgPSAiY29udGVudC1mbG93LWljb24iOwotCi1XZWJJbnNwZWN0b3IuQ29udGVudEZsb3dU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5D
b250ZW50Rmxvd1RyZWVFbGVtZW50Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVl
RWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxl
bWVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQuanMK
aW5kZXggMjQ5YjI4Yy4uZTFmMTY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZVRyZWVFbGVtZW50LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3JhZ2VUcmVl
RWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsMjQgKzIzLDIxIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudCA9IGZ1
bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVl
RWxlbWVudCA9IGNsYXNzIENvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9i
amVjdCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QpOwogCi0gICAgV2ViSW5z
cGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5Db29raWVT
dG9yYWdlVHJlZUVsZW1lbnQuQ29va2llSWNvblN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3Iu
ZGlzcGxheU5hbWVGb3JIb3N0KHJlcHJlc2VudGVkT2JqZWN0Lmhvc3QpLCByZXByZXNlbnRlZE9i
amVjdCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZVRyZWVFbGVtZW50LkNvb2tp
ZUljb25TdHlsZUNsYXNzTmFtZSA9ICJjb29raWUtaWNvbiI7Ci0KLVdlYkluc3BlY3Rvci5Db29r
aWVTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuQ29va2llU3RvcmFnZVRyZWVFbGVtZW50LAorICAgICAgICBzdXBlcihXZWJJbnNw
ZWN0b3IuQ29va2llU3RvcmFnZVRyZWVFbGVtZW50LkNvb2tpZUljb25TdHlsZUNsYXNzTmFtZSwg
V2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9ySG9zdChyZXByZXNlbnRlZE9iamVjdC5ob3N0KSwg
cmVwcmVzZW50ZWRPYmplY3QpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5h
bWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaG9zdDsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBjYXRlZ29yeU5hbWUoKQogICAgIHsKQEAgLTQ4LDQg
KzQ1LDQgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudC5wcm90
b3R5cGU7CitXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZVRyZWVFbGVtZW50LkNvb2tpZUljb25T
dHlsZUNsYXNzTmFtZSA9ICJjb29raWUtaWNvbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01TdG9yYWdlVHJlZUVsZW1lbnQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01TdG9yYWdlVHJlZUVs
ZW1lbnQuanMKaW5kZXggM2IzZTYwYy4uYmIyZmUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NU3RvcmFnZVRyZWVFbGVtZW50LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVN0b3JhZ2VU
cmVlRWxlbWVudC5qcwpAQCAtMjMsNyArMjMsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQgPSBm
dW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVs
ZW1lbnQgPSBjbGFzcyBET01TdG9yYWdlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
U3RvcmFnZVRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3Qp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0KTsKIApAQCAtMzIsMjEgKzM0LDE1IEBA
IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRl
ZE9iamVjdCkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9IFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQuU2Vzc2lvblN0b3JhZ2VJY29uU3R5bGVDbGFz
c05hbWU7CiAKLSAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywg
Y2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JIb3N0KHJlcHJlc2VudGVkT2Jq
ZWN0Lmhvc3QpLCByZXByZXNlbnRlZE9iamVjdCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZVRyZWVFbGVtZW50LkxvY2FsU3RvcmFnZUljb25TdHlsZUNsYXNzTmFtZSA9ICJsb2NhbC1z
dG9yYWdlLWljb24iOwotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VUcmVlRWxlbWVudC5TZXNzaW9u
U3RvcmFnZUljb25TdHlsZUNsYXNzTmFtZSA9ICJzZXNzaW9uLXN0b3JhZ2UtaWNvbiI7Ci0KLVdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LAorICAgICAgICBzdXBl
cihjbGFzc05hbWUsIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvckhvc3QocmVwcmVzZW50ZWRP
YmplY3QuaG9zdCksIHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBuYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGlz
cGxheU5hbWVGb3JIb3N0KHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaG9zdCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgY2F0ZWdvcnlOYW1lKCkKICAgICB7CkBAIC01Niw0ICs1Miw1IEBAIFdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIH0KIH07
CiAKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VUcmVlRWxlbWVudC5Mb2NhbFN0b3JhZ2VJY29uU3R5bGVDbGFzc05hbWUg
PSAibG9jYWwtc3RvcmFnZS1pY29uIjsKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1l
bnQuU2Vzc2lvblN0b3JhZ2VJY29uU3R5bGVDbGFzc05hbWUgPSAic2Vzc2lvbi1zdG9yYWdlLWlj
b24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRE9NVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwppbmRleCA4MDZiMjAzLi5hYjhiZWJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxl
bWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
T01UcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCwgMjAxMywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGls
ZWsuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybwogICoKQEAgLTI4
LDQ2ICsyOCwyNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZUVs
ZW1lbnQgPSBmdW5jdGlvbihub2RlLCBlbGVtZW50Q2xvc2VUYWcpCitXZWJJbnNwZWN0b3IuRE9N
VHJlZUVsZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5U
cmVlRWxlbWVudAogewotICAgIHRoaXMuX2VsZW1lbnRDbG9zZVRhZyA9IGVsZW1lbnRDbG9zZVRh
ZzsKLSAgICB2YXIgaGFzQ2hpbGRyZW5PdmVycmlkZSA9ICFlbGVtZW50Q2xvc2VUYWcgJiYgbm9k
ZS5oYXNDaGlsZE5vZGVzKCkgJiYgIXRoaXMuX3Nob3dJbmxpbmVUZXh0KG5vZGUpOworICAgIGNv
bnN0cnVjdG9yKG5vZGUsIGVsZW1lbnRDbG9zZVRhZykKKyAgICB7CisgICAgICAgIHN1cGVyKCIi
LCBub2RlKTsKIAotICAgIC8vIFRoZSB0aXRsZSB3aWxsIGJlIHVwZGF0ZWQgaW4gb25hdHRhY2gu
Ci0gICAgVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCAiIiwgbm9kZSwgaGFzQ2hpbGRyZW5PdmVycmlk
ZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnRDbG9zZVRhZyA9IGVsZW1lbnRDbG9zZVRhZzsKKyAg
ICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9ICFlbGVtZW50Q2xvc2VUYWcgJiYgbm9kZS5oYXNDaGls
ZE5vZGVzKCkgJiYgIXRoaXMuX3Nob3dJbmxpbmVUZXh0KG5vZGUpOwogCiAgICAgICAgIGlmICh0
aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVUeXBlKCkgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYm
ICFlbGVtZW50Q2xvc2VUYWcpCiAgICAgICAgICAgICB0aGlzLl9jYW5BZGRBdHRyaWJ1dGVzID0g
dHJ1ZTsKICAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnkgPSBudWxsOwogICAgICAgICB0aGlzLl9l
eHBhbmRlZENoaWxkcmVuTGltaXQgPSBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQuSW5pdGlh
bENoaWxkcmVuTGltaXQ7Ci19OwotCi1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQuSW5pdGlh
bENoaWxkcmVuTGltaXQgPSA1MDA7Ci1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQuTWF4aW11
bUlubGluZVRleHRDaGlsZExlbmd0aCA9IDgwOwotCi0vLyBBIHVuaW9uIG9mIEhUTUw0IGFuZCBI
VE1MNS1EcmFmdCBlbGVtZW50cyB0aGF0IGV4cGxpY2l0bHkKLS8vIG9yIGltcGxpY2l0bHkgKGZv
ciBIVE1MNSkgZm9yYmlkIHRoZSBjbG9zaW5nIHRhZy4KLS8vIEZJWE1FOiBSZXZpc2Ugb25jZSBI
VE1MNSBGaW5hbCBpcyBwdWJsaXNoZWQuCi1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQuRm9y
YmlkZGVuQ2xvc2luZ1RhZ0VsZW1lbnRzID0gWwotICAgICJhcmVhIiwgImJhc2UiLCAiYmFzZWZv
bnQiLCAiYnIiLCAiY2FudmFzIiwgImNvbCIsICJjb21tYW5kIiwgImVtYmVkIiwgImZyYW1lIiwK
LSAgICAiaHIiLCAiaW1nIiwgImlucHV0IiwgImlzaW5kZXgiLCAia2V5Z2VuIiwgImxpbmsiLCAi
bWV0YSIsICJwYXJhbSIsICJzb3VyY2UiCi1dLmtleVNldCgpOwotCi0vLyBUaGVzZSB0YWdzIHdl
IGRvIG5vdCBhbGxvdyBlZGl0aW5nIHRoZWlyIHRhZyBuYW1lLgotV2ViSW5zcGVjdG9yLkRPTVRy
ZWVFbGVtZW50LkVkaXRUYWdCbGFja2xpc3QgPSBbCi0gICAgImh0bWwiLCAiaGVhZCIsICJib2R5
IgotXS5rZXlTZXQoKTsKLQotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LlNlYXJjaEhpZ2hs
aWdodFN0eWxlQ2xhc3NOYW1lID0gInNlYXJjaC1oaWdobGlnaHQiOwotV2ViSW5zcGVjdG9yLkRP
TVRyZWVFbGVtZW50LkJvdW5jeUhpZ2hsaWdodFN0eWxlQ2xhc3NOYW1lID0gImJvdW5jeS1oaWdo
bGlnaHQiOworICAgIH0KIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKLSAgICBpc0Nsb3NlVGFnOiBmdW5jdGlvbigpCisgICAgaXNDbG9zZVRhZygpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudENsb3NlVGFnOwotICAgIH0sCisgICAgfQogCi0g
ICAgaGlnaGxpZ2h0U2VhcmNoUmVzdWx0czogZnVuY3Rpb24oc2VhcmNoUXVlcnkpCisgICAgaGln
aGxpZ2h0U2VhcmNoUmVzdWx0cyhzZWFyY2hRdWVyeSkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9zZWFyY2hRdWVyeSAhPT0gc2VhcmNoUXVlcnkpIHsKICAgICAgICAgICAgIHRoaXMuX3VwZGF0
ZVNlYXJjaEhpZ2hsaWdodChmYWxzZSk7CkBAIC03NywxNSArNTgsMTUgQEAgV2ViSW5zcGVjdG9y
LkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnkg
PSBzZWFyY2hRdWVyeTsKICAgICAgICAgdGhpcy5fc2VhcmNoSGlnaGxpZ2h0c1Zpc2libGUgPSB0
cnVlOwogICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKHRydWUpOwotICAgIH0sCisgICAgfQogCi0g
ICAgaGlkZVNlYXJjaEhpZ2hsaWdodHM6IGZ1bmN0aW9uKCkKKyAgICBoaWRlU2VhcmNoSGlnaGxp
Z2h0cygpCiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5fc2VhcmNoSGlnaGxpZ2h0c1Zpc2li
bGU7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNlYXJjaEhpZ2hsaWdodChmYWxzZSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBlbXBoYXNpemVTZWFyY2hIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKKyAgICBl
bXBoYXNpemVTZWFyY2hIaWdobGlnaHQoKQogICAgIHsKICAgICAgICAgdmFyIGhpZ2hsaWdodEVs
ZW1lbnQgPSB0aGlzLnRpdGxlLnF1ZXJ5U2VsZWN0b3IoIi4iICsgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVFbGVtZW50LlNlYXJjaEhpZ2hsaWdodFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoaGlnaGxpZ2h0RWxlbWVudCk7CkBAIC0xMTYsOSArOTcsOSBAQCBXZWJJbnNwZWN0
b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhp
cy5fYm91bmN5SGlnaGxpZ2h0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRp
b25FbmQiLCBhbmltYXRpb25FbmRlZC5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF91cGRhdGVTZWFyY2hIaWdobGlnaHQ6IGZ1bmN0aW9uKHNob3cpCisgICAgX3VwZGF0ZVNlYXJj
aEhpZ2hsaWdodChzaG93KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9oaWdobGlnaHRSZXN1
bHQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTIsMTIgKzEzMywxMiBAQCBXZWJJbnNwZWN0
b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGZvciAodmFyIGkgPSAw
LCBzaXplID0gdGhpcy5faGlnaGxpZ2h0UmVzdWx0Lmxlbmd0aDsgaSA8IHNpemU7ICsraSkKICAg
ICAgICAgICAgIHVwZGF0ZXIodGhpcy5faGlnaGxpZ2h0UmVzdWx0W2ldKTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBob3ZlcmVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ob3Zl
cmVkOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGhvdmVyZWQoeCkKICAgICB7CkBAIC0xNzQs
MTIgKzE1NSwxMiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImhv
dmVyZWQiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGV4cGFuZGVkQ2hpbGRyZW5MaW1pdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZXhwYW5kZWRDaGlsZHJlbkxpbWl0OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGV4cGFuZGVk
Q2hpbGRyZW5MaW1pdCh4KQogICAgIHsKQEAgLTE4OSw3ICsxNzAsNyBAQCBXZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9leHBhbmRlZENoaWxk
cmVuTGltaXQgPSB4OwogICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSAmJiAhdGhpcy5fdXBk
YXRlQ2hpbGRyZW5JblByb2dyZXNzKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4o
dHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZXhwYW5kZWRDaGlsZENvdW50KCkKICAg
ICB7CkBAIC0xOTksOSArMTgwLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgaWYgKGNvdW50ICYmIHRoaXMuY2hpbGRyZW5bY291bnQgLSAxXS5l
eHBhbmRBbGxCdXR0b24pCiAgICAgICAgICAgICBjb3VudC0tOwogICAgICAgICByZXR1cm4gY291
bnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93Q2hpbGQ6IGZ1bmN0aW9uKGluZGV4KQorICAg
IHNob3dDaGlsZChpbmRleCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9l
bGVtZW50Q2xvc2VUYWcpOwogICAgICAgICBpZiAodGhpcy5fZWxlbWVudENsb3NlVGFnKQpAQCAt
MjE0LDkgKzE5NSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgLy8gV2hldGhlciBpbmRleC10aCBjaGlsZCBpcyB2aXNpYmxlIGluIHRoZSBj
aGlsZHJlbiB0cmVlCiAgICAgICAgIHJldHVybiB0aGlzLmV4cGFuZGVkQ2hpbGRDb3VudCA+IGlu
ZGV4OwotICAgIH0sCisgICAgfQogCi0gICAgX2NyZWF0ZVRvb2x0aXBGb3JOb2RlOiBmdW5jdGlv
bigpCisgICAgX2NyZWF0ZVRvb2x0aXBGb3JOb2RlKCkKICAgICB7CiAgICAgICAgIHZhciBub2Rl
ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYgKCFub2RlLm5vZGVOYW1lKCkg
fHwgbm9kZS5ub2RlTmFtZSgpLnRvTG93ZXJDYXNlKCkgIT09ICJpbWciKQpAQCAtMjM4LDcgKzIx
OSw3IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIiVkIFx4ZDcgJWQgcGl4ZWxzIChOYXR1cmFsOiAlZCBceGQ3ICVkIHBp
eGVscykiKS5mb3JtYXQob2Zmc2V0V2lkdGgsIG9mZnNldEhlaWdodCwgbmF0dXJhbFdpZHRoLCBu
YXR1cmFsSGVpZ2h0KTsKICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKGUpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSwgZS5z
dGFjayk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjU2LDkgKzIzNyw5IEBAIFdl
Ykluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBvYmpl
Y3QucmVsZWFzZSgpOwogICAgICAgICB9CiAgICAgICAgIFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QucmVzb2x2ZU5vZGUobm9kZSwgIiIsIHJlc29sdmVkTm9kZS5iaW5kKHRoaXMpKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHVwZGF0ZVNlbGVjdGlvbjogZnVuY3Rpb24oKQorICAgIHVwZGF0ZVNl
bGVjdGlvbigpCiAgICAgewogICAgICAgICB2YXIgbGlzdEl0ZW1FbGVtZW50ID0gdGhpcy5saXN0
SXRlbUVsZW1lbnQ7CiAgICAgICAgIGlmICghbGlzdEl0ZW1FbGVtZW50KQpAQCAtMjc3LDkgKzI1
OCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICB0aGlzLnNlbGVjdGlvbkVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gbGlzdEl0
ZW1FbGVtZW50Lm9mZnNldEhlaWdodCArICJweCI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmF0
dGFjaDogZnVuY3Rpb24oKQorICAgIG9uYXR0YWNoKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9ob3ZlcmVkKSB7CiAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwpAQCAtMjg5
LDUxICsyNzAsNTcgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwogICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVu
dC5kcmFnZ2FibGUgPSB0cnVlOwogICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJkcmFnc3RhcnQiLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIG9ucG9w
dWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLmNoaWxkcmVuLmxlbmd0aCB8fCB0aGlzLl9zaG93SW5saW5lVGV4dCh0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0KSB8fCB0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbigpOwotICAgIH0sCisgICAgfQorCisgICAg
c3VwZXJFeHBhbmRSZWN1cnNpdmVseSgpCisgICAgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyBhIGhhY2sgdG8gYWxsb3cgdXNpbmcgc3VwZXIgaW4gYSBjYWxsYmFjay4KKyAgICAgICAgc3Vw
ZXIuZXhwYW5kUmVjdXJzaXZlbHkoTnVtYmVyLk1BWF9WQUxVRSk7CisgICAgfQogCi0gICAgZXhw
YW5kUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKCkKKyAgICBleHBhbmRSZWN1cnNpdmVseSgpCiAgICAg
ewogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjaygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRy
ZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1cnNpdmVseS5jYWxsKHRoaXMsIE51bWJlci5N
QVhfVkFMVUUpOworICAgICAgICAgICAgdGhpcy5zdXBlckV4cGFuZFJlY3Vyc2l2ZWx5KCk7CiAg
ICAgICAgIH0KIAogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmdldFN1YnRyZWUoLTEs
IGNhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlQ2hpbGRy
ZW46IGZ1bmN0aW9uKGZ1bGxSZWZyZXNoKQorICAgIHVwZGF0ZUNoaWxkcmVuKGZ1bGxSZWZyZXNo
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5nZXRDaGlsZE5vZGVzKHRo
aXMuX3VwZGF0ZUNoaWxkcmVuLmJpbmQodGhpcywgZnVsbFJlZnJlc2gpKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGluc2VydENoaWxkRWxlbWVudDogZnVuY3Rpb24oY2hpbGQsIGluZGV4LCBjbG9z
aW5nVGFnKQorICAgIGluc2VydENoaWxkRWxlbWVudChjaGlsZCwgaW5kZXgsIGNsb3NpbmdUYWcp
CiAgICAgewogICAgICAgICB2YXIgbmV3RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NVHJl
ZUVsZW1lbnQoY2hpbGQsIGNsb3NpbmdUYWcpOwogICAgICAgICBuZXdFbGVtZW50LnNlbGVjdGFi
bGUgPSB0aGlzLnRyZWVPdXRsaW5lLl9zZWxlY3RFbmFibGVkOwogICAgICAgICB0aGlzLmluc2Vy
dENoaWxkKG5ld0VsZW1lbnQsIGluZGV4KTsKICAgICAgICAgcmV0dXJuIG5ld0VsZW1lbnQ7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBtb3ZlQ2hpbGQ6IGZ1bmN0aW9uKGNoaWxkLCB0YXJnZXRJbmRl
eCkKKyAgICBtb3ZlQ2hpbGQoY2hpbGQsIHRhcmdldEluZGV4KQogICAgIHsKICAgICAgICAgdmFy
IHdhc1NlbGVjdGVkID0gY2hpbGQuc2VsZWN0ZWQ7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQo
Y2hpbGQpOwogICAgICAgICB0aGlzLmluc2VydENoaWxkKGNoaWxkLCB0YXJnZXRJbmRleCk7CiAg
ICAgICAgIGlmICh3YXNTZWxlY3RlZCkKICAgICAgICAgICAgIGNoaWxkLnNlbGVjdCgpOwotICAg
IH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbihmdWxsUmVmcmVzaCkK
KyAgICBfdXBkYXRlQ2hpbGRyZW4oZnVsbFJlZnJlc2gpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fdXBkYXRlQ2hpbGRyZW5JblByb2dyZXNzIHx8ICF0aGlzLnRyZWVPdXRsaW5lLl92aXNpYmxl
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDIxLDI1ICs0MDgsMjUgQEAgV2ViSW5zcGVjdG9y
LkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGRlbGV0
ZSB0aGlzLl91cGRhdGVDaGlsZHJlbkluUHJvZ3Jlc3M7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBh
ZGp1c3RDb2xsYXBzZWRSYW5nZTogZnVuY3Rpb24oKQorICAgIGFkanVzdENvbGxhcHNlZFJhbmdl
KCkKICAgICB7CiAgICAgICAgIC8vIEVuc3VyZSBwcmVjb25kaXRpb246IG9ubHkgdGhlIHRyZWUg
ZWxlbWVudHMgZm9yIG5vZGUgY2hpbGRyZW4gYXJlIGZvdW5kIGluIHRoZSB0cmVlCiAgICAgICAg
IC8vIChub3QgdGhlIEV4cGFuZCBBbGwgYnV0dG9uIG9yIHRoZSBjbG9zaW5nIHRhZykuCiAgICAg
ICAgIGlmICh0aGlzLmV4cGFuZEFsbEJ1dHRvbkVsZW1lbnQgJiYgdGhpcy5leHBhbmRBbGxCdXR0
b25FbGVtZW50Ll9fdHJlZUVsZW1lbnQucGFyZW50KQogICAgICAgICAgICAgdGhpcy5yZW1vdmVD
aGlsZCh0aGlzLmV4cGFuZEFsbEJ1dHRvbkVsZW1lbnQuX190cmVlRWxlbWVudCk7CiAKLSAgICAg
ICAgY29uc3Qgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgIHZhciBub2Rl
ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYgKCFub2RlLmNoaWxkcmVuKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb25zdCBjaGlsZE5vZGVDb3VudCA9IG5vZGUu
Y2hpbGRyZW4ubGVuZ3RoOworICAgICAgICB2YXIgY2hpbGROb2RlQ291bnQgPSBub2RlLmNoaWxk
cmVuLmxlbmd0aDsKIAogICAgICAgICAvLyBJbiBjYXNlIHNvbWUgbm9kZXMgZnJvbSB0aGUgZXhw
YW5kZWQgcmFuZ2Ugd2VyZSByZW1vdmVkLCBwdWxsIHNvbWUgbm9kZXMgZnJvbSB0aGUgY29sbGFw
c2VkIHJhbmdlIGludG8gdGhlIGV4cGFuZGVkIHJhbmdlIGF0IHRoZSBib3R0b20uCiAgICAgICAg
IGZvciAodmFyIGkgPSB0aGlzLmV4cGFuZGVkQ2hpbGRDb3VudCwgbGltaXQgPSBNYXRoLm1pbih0
aGlzLmV4cGFuZGVkQ2hpbGRyZW5MaW1pdCwgY2hpbGROb2RlQ291bnQpOyBpIDwgbGltaXQ7ICsr
aSkKICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGRFbGVtZW50KG5vZGUuY2hpbGRyZW5baV0s
IGkpOwogCi0gICAgICAgIGNvbnN0IGV4cGFuZGVkQ2hpbGRDb3VudCA9IHRoaXMuZXhwYW5kZWRD
aGlsZENvdW50OworICAgICAgICB2YXIgZXhwYW5kZWRDaGlsZENvdW50ID0gdGhpcy5leHBhbmRl
ZENoaWxkQ291bnQ7CiAgICAgICAgIGlmIChjaGlsZE5vZGVDb3VudCA+IHRoaXMuZXhwYW5kZWRD
aGlsZENvdW50KSB7CiAgICAgICAgICAgICB2YXIgdGFyZ2V0QnV0dG9uSW5kZXggPSBleHBhbmRl
ZENoaWxkQ291bnQ7CiAgICAgICAgICAgICBpZiAoIXRoaXMuZXhwYW5kQWxsQnV0dG9uRWxlbWVu
dCkgewpAQCAtNDQ3LDcgKzQzNCw3IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgYnV0dG9uLmNsYXNzTmFtZSA9ICJzaG93LWFsbC1u
b2RlcyI7CiAgICAgICAgICAgICAgICAgYnV0dG9uLnZhbHVlID0gIiI7CiAKLSAgICAgICAgICAg
ICAgICB2YXIgaXRlbSA9IG5ldyBUcmVlRWxlbWVudChidXR0b24sIG51bGwsIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoYnV0
dG9uLCBudWxsLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RhYmxlID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgaXRlbS5leHBhbmRBbGxCdXR0b24gPSB0cnVlOwogCkBAIC00
NjEsMzIgKzQ0OCwzMiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5leHBhbmRBbGxCdXR0b25FbGVtZW50LnRleHRDb250ZW50ID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IEFsbCBOb2RlcyAoJWQgTW9yZSkiKS5mb3JtYXQo
Y2hpbGROb2RlQ291bnQgLSBleHBhbmRlZENoaWxkQ291bnQpOwogICAgICAgICB9IGVsc2UgaWYg
KHRoaXMuZXhwYW5kQWxsQnV0dG9uRWxlbWVudCkKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmV4
cGFuZEFsbEJ1dHRvbkVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYW5kbGVMb2FkQWxs
Q2hpbGRyZW46IGZ1bmN0aW9uKCkKKyAgICBoYW5kbGVMb2FkQWxsQ2hpbGRyZW4oKQogICAgIHsK
ICAgICAgICAgdGhpcy5leHBhbmRlZENoaWxkcmVuTGltaXQgPSBNYXRoLm1heCh0aGlzLnJlcHJl
c2VudGVkT2JqZWN0LmNoaWxkTm9kZUNvdW50LCB0aGlzLmV4cGFuZGVkQ2hpbGRyZW5MaW1pdCAr
IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5Jbml0aWFsQ2hpbGRyZW5MaW1pdCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBvbmV4cGFuZDogZnVuY3Rpb24oKQorICAgIG9uZXhwYW5kKCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwogICAgICAgICB0aGlzLnRyZWVPdXRs
aW5lLnVwZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgb25jb2xsYXBzZTog
ZnVuY3Rpb24oKQorICAgIG9uY29sbGFwc2UoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2Vs
ZW1lbnRDbG9zZVRhZykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLnVwZGF0
ZVRpdGxlKCk7CiAgICAgICAgIHRoaXMudHJlZU91dGxpbmUudXBkYXRlU2VsZWN0aW9uKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBvbnJldmVhbDogZnVuY3Rpb24oKQorICAgIG9ucmV2ZWFsKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLmxpc3RJdGVtRWxlbWVudCkgewogICAgICAgICAgICAg
dmFyIHRhZ1NwYW5zID0gdGhpcy5saXN0SXRlbUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgiaHRtbC10YWctbmFtZSIpOwpAQCAtNDk1LDkgKzQ4Miw5IEBAIFdlYkluc3BlY3Rvci5ET01U
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CiAg
ICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIG9uc2VsZWN0OiBmdW5jdGlvbih0cmVlRWxl
bWVudCwgc2VsZWN0ZWRCeVVzZXIpCisgICAgb25zZWxlY3QodHJlZUVsZW1lbnQsIHNlbGVjdGVk
QnlVc2VyKQogICAgIHsKICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zdXBwcmVzc1JldmVhbEFu
ZFNlbGVjdCA9IHRydWU7CiAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VsZWN0RE9NTm9kZSh0
aGlzLnJlcHJlc2VudGVkT2JqZWN0LCBzZWxlY3RlZEJ5VXNlcik7CkBAIC01MDUsMTQgKzQ5Miwx
NCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZ2hsaWdodERPTU5vZGUodGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC5pZCk7CiAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKCk7CiAgICAg
ICAgIHRoaXMudHJlZU91dGxpbmUuc3VwcHJlc3NSZXZlYWxBbmRTZWxlY3QgPSBmYWxzZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIG9uZGVzZWxlY3Q6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAg
IG9uZGVzZWxlY3QodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
LnNlbGVjdERPTU5vZGUobnVsbCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmRlbGV0ZTogZnVu
Y3Rpb24oKQorICAgIG9uZGVsZXRlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0LmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC01MjMsOSArNTEwLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5yZW1vdmUoKTsKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmVudGVyOiBmdW5jdGlvbigpCisgICAg
b25lbnRlcigpCiAgICAgewogICAgICAgICAvLyBPbiBFbnRlciBvciBSZXR1cm4gc3RhcnQgZWRp
dGluZyB0aGUgZmlyc3QgYXR0cmlidXRlCiAgICAgICAgIC8vIG9yIGNyZWF0ZSBhIG5ldyBhdHRy
aWJ1dGUgb24gdGhlIHNlbGVjdGVkIGVsZW1lbnQuCkBAIC01MzYsMTEgKzUyMywxMSBAQCBXZWJJ
bnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIHByZXZl
bnQgYSBuZXdsaW5lIGZyb20gYmVpbmcgaW1tZWRpYXRlbHkgaW5zZXJ0ZWQKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWxlY3RPbk1vdXNlRG93bjogZnVuY3Rp
b24oZXZlbnQpCisgICAgc2VsZWN0T25Nb3VzZURvd24oZXZlbnQpCiAgICAgewotICAgICAgICBU
cmVlRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0T25Nb3VzZURvd24uY2FsbCh0aGlzLCBldmVudCk7
CisgICAgICAgIHN1cGVyLnNlbGVjdE9uTW91c2VEb3duKGV2ZW50KTsKIAogICAgICAgICBpZiAo
dGhpcy5fZWRpdGluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU0OCw5ICs1MzUsOSBAQCBX
ZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAvLyBQcmV2
ZW50IHNlbGVjdGluZyB0aGUgbmVhcmVzdCB3b3JkIG9uIGRvdWJsZSBjbGljay4KICAgICAgICAg
aWYgKGV2ZW50LmRldGFpbCA+PSAyKQogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uZGJsY2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IG9uZGJsY2xpY2soZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZWRpdGluZyB8fCB0
aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC01NjAsOSArNTQ3
LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICBpZiAodGhpcy5oYXNDaGlsZHJlbiAmJiAhdGhpcy5leHBhbmRlZCkKICAgICAgICAgICAgIHRo
aXMuZXhwYW5kKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaW5zZXJ0SW5MYXN0QXR0cmlidXRl
UG9zaXRpb246IGZ1bmN0aW9uKHRhZywgbm9kZSkKKyAgICBfaW5zZXJ0SW5MYXN0QXR0cmlidXRl
UG9zaXRpb24odGFnLCBub2RlKQogICAgIHsKICAgICAgICAgaWYgKHRhZy5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCJodG1sLWF0dHJpYnV0ZSIpLmxlbmd0aCA+IDApCiAgICAgICAgICAgICB0YWcu
aW5zZXJ0QmVmb3JlKG5vZGUsIHRhZy5sYXN0Q2hpbGQpOwpAQCAtNTc1LDkgKzU2Miw5IEBAIFdl
Ykluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0YXJ0
RWRpdGluZ1RhcmdldDogZnVuY3Rpb24oZXZlbnRUYXJnZXQpCisgICAgX3N0YXJ0RWRpdGluZ1Rh
cmdldChldmVudFRhcmdldCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNl
bGVjdGVkRE9NTm9kZSgpICE9PSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0KQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjA1LDkgKzU5Miw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRkTmV3QXR0cmli
dXRlKCk7CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX3Bv
cHVsYXRlVGFnQ29udGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRNZW51LCBldmVudCkKKyAgICBf
cG9wdWxhdGVUYWdDb250ZXh0TWVudShjb250ZXh0TWVudSwgZXZlbnQpCiAgICAgewogICAgICAg
ICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgIGlmICghbm9kZS5p
c0luU2hhZG93VHJlZSgpKSB7CkBAIC02MjksOSArNjE2LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9wb3B1bGF0ZU5vZGVDb250
ZXh0TWVudShjb250ZXh0TWVudSk7CiAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuX3BvcHVsYXRl
Q29udGV4dE1lbnUoY29udGV4dE1lbnUsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QpOwotICAgIH0s
CisgICAgfQogCi0gICAgX3BvcHVsYXRlRm9yY2VkUHNldWRvU3RhdGVJdGVtczogZnVuY3Rpb24o
c3ViTWVudSkKKyAgICBfcG9wdWxhdGVGb3JjZWRQc2V1ZG9TdGF0ZUl0ZW1zKHN1Yk1lbnUpCiAg
ICAgewogICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAg
IHZhciBlbmFibGVkUHNldWRvQ2xhc3NlcyA9IG5vZGUuZW5hYmxlZFBzZXVkb0NsYXNzZXM7CkBA
IC02NDMsMTggKzYzMCwxOCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgICAgIG5vZGUuc2V0UHNldWRvQ2xhc3NFbmFibGVkKHBzZXVkb0Ns
YXNzLCAhZW5hYmxlZCk7CiAgICAgICAgICAgICB9LCBlbmFibGVkLCBmYWxzZSk7CiAgICAgICAg
IH0pOwotICAgIH0sCisgICAgfQogCi0gICAgX3BvcHVsYXRlVGV4dENvbnRleHRNZW51OiBmdW5j
dGlvbihjb250ZXh0TWVudSwgdGV4dE5vZGUpCisgICAgX3BvcHVsYXRlVGV4dENvbnRleHRNZW51
KGNvbnRleHRNZW51LCB0ZXh0Tm9kZSkKICAgICB7CiAgICAgICAgIHZhciBub2RlID0gdGhpcy5y
ZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYgKCFub2RlLmlzSW5TaGFkb3dUcmVlKCkpCiAg
ICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RWRpdCBUZXh0IiksIHRoaXMuX3N0YXJ0RWRpdGluZ1RleHROb2RlLmJpbmQodGhpcywgdGV4dE5v
ZGUpKTsKIAogICAgICAgICB0aGlzLl9wb3B1bGF0ZU5vZGVDb250ZXh0TWVudShjb250ZXh0TWVu
dSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVOb2RlQ29udGV4dE1lbnU6IGZ1bmN0
aW9uKGNvbnRleHRNZW51KQorICAgIF9wb3B1bGF0ZU5vZGVDb250ZXh0TWVudShjb250ZXh0TWVu
dSkKICAgICB7CiAgICAgICAgIC8vIEFkZCBmcmVlLWZvcm0gbm9kZS1yZWxhdGVkIGFjdGlvbnMu
CiAgICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKQEAgLTY2Myw5ICs2
NTAsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBhcyBI
VE1MIiksIHRoaXMuX2NvcHlIVE1MLmJpbmQodGhpcykpOwogICAgICAgICBpZiAoIW5vZGUuaXNJ
blNoYWRvd1RyZWUoKSkKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgTm9kZSIpLCB0aGlzLnJlbW92ZS5iaW5kKHRoaXMpKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9zdGFydEVkaXRpbmc6IGZ1bmN0aW9uKCkKKyAgICBfc3Rh
cnRFZGl0aW5nKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVk
RE9NTm9kZSgpICE9PSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNjg5LDkgKzY3Niw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0RWRpdGluZ1Rl
eHROb2RlKHRleHROb2RlKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQot
ICAgIH0sCisgICAgfQogCi0gICAgX2FkZE5ld0F0dHJpYnV0ZTogZnVuY3Rpb24oKQorICAgIF9h
ZGROZXdBdHRyaWJ1dGUoKQogICAgIHsKICAgICAgICAgLy8gQ2Fubm90IGp1c3QgY29udmVydCB0
aGUgdGV4dHVhbCBodG1sIGludG8gYW4gZWxlbWVudCB3aXRob3V0CiAgICAgICAgIC8vIGEgcGFy
ZW50IG5vZGUuIFVzZSBhIHRlbXBvcmFyeSBzcGFuIGNvbnRhaW5lciBmb3IgdGhlIEhUTUwuCkBA
IC03MDQsOSArNjkxLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgdmFyIHRhZyA9IHRoaXMubGlzdEl0ZW1FbGVtZW50LmdldEVsZW1lbnRzQnlD
bGFzc05hbWUoImh0bWwtdGFnIilbMF07CiAgICAgICAgIHRoaXMuX2luc2VydEluTGFzdEF0dHJp
YnV0ZVBvc2l0aW9uKHRhZywgYXR0cik7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydEVkaXRp
bmdBdHRyaWJ1dGUoYXR0ciwgYXR0cik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJpZ2dlckVk
aXRBdHRyaWJ1dGU6IGZ1bmN0aW9uKGF0dHJpYnV0ZU5hbWUpCisgICAgX3RyaWdnZXJFZGl0QXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpCiAgICAgewogICAgICAgICB2YXIgYXR0cmlidXRlRWxlbWVu
dHMgPSB0aGlzLmxpc3RJdGVtRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJodG1sLWF0
dHJpYnV0ZS1uYW1lIik7CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhdHRyaWJ1dGVF
bGVtZW50cy5sZW5ndGg7IGkgPCBsZW47ICsraSkgewpAQCAtNzIwLDkgKzcwNyw5IEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RhcnRFZGl0
aW5nQXR0cmlidXRlOiBmdW5jdGlvbihhdHRyaWJ1dGUsIGVsZW1lbnRGb3JTZWxlY3Rpb24pCisg
ICAgX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZShhdHRyaWJ1dGUsIGVsZW1lbnRGb3JTZWxlY3Rpb24p
CiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQoYXR0cmlidXRl
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzU2LDkgKzc0Myw5IEBAIFdlYkluc3Bl
Y3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGVsZW1lbnRGb3JTZWxlY3Rpb24sIDAsIGVsZW1lbnRG
b3JTZWxlY3Rpb24sIDEpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3N0YXJ0RWRpdGluZ1RleHROb2RlOiBmdW5jdGlvbih0ZXh0Tm9kZSkKKyAgICBfc3Rh
cnRFZGl0aW5nVGV4dE5vZGUodGV4dE5vZGUpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLmlzQmVpbmdFZGl0ZWQodGV4dE5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC03NjksOSArNzU2LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGV4dE5v
ZGUsIDAsIHRleHROb2RlLCAxKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9zdGFydEVkaXRpbmdUYWdOYW1lOiBmdW5jdGlvbih0YWdOYW1lRWxlbWVudCkK
KyAgICBfc3RhcnRFZGl0aW5nVGFnTmFtZSh0YWdOYW1lRWxlbWVudCkKICAgICB7CiAgICAgICAg
IGlmICghdGFnTmFtZUVsZW1lbnQpIHsKICAgICAgICAgICAgIHRhZ05hbWVFbGVtZW50ID0gdGhp
cy5saXN0SXRlbUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaHRtbC10YWctbmFtZSIp
WzBdOwpAQCAtODEyLDkgKzc5OSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2VkaXRpbmcgPSBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0
aW5nKHRhZ05hbWVFbGVtZW50LCBjb25maWcpOwogICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuc2V0QmFzZUFuZEV4dGVudCh0YWdOYW1lRWxlbWVudCwgMCwgdGFnTmFtZUVsZW1lbnQsIDEp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdGFydEVkaXRp
bmdBc0hUTUw6IGZ1bmN0aW9uKGNvbW1pdENhbGxiYWNrLCBlcnJvciwgaW5pdGlhbFZhbHVlKQor
ICAgIF9zdGFydEVkaXRpbmdBc0hUTUwoY29tbWl0Q2FsbGJhY2ssIGVycm9yLCBpbml0aWFsVmFs
dWUpCiAgICAgewogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CkBAIC04
NjgsOSArODU1LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdmFyIGNvbmZpZyA9IG5ldyBXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZyhjb21t
aXQuYmluZCh0aGlzKSwgZGlzcG9zZS5iaW5kKHRoaXMpKTsKICAgICAgICAgY29uZmlnLnNldE11
bHRpbGluZSh0cnVlKTsKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IFdlYkluc3BlY3Rvci5zdGFy
dEVkaXRpbmcodGhpcy5faHRtbEVkaXRFbGVtZW50LCBjb25maWcpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2F0dHJpYnV0ZUVkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1Rl
eHQsIG9sZFRleHQsIGF0dHJpYnV0ZU5hbWUsIG1vdmVEaXJlY3Rpb24pCisgICAgX2F0dHJpYnV0
ZUVkaXRpbmdDb21taXR0ZWQoZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4dCwgYXR0cmlidXRlTmFt
ZSwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIHRoaXMuX2VkaXRpbmcgPSBmYWxzZTsK
IApAQCAtOTI1LDkgKzkxMiw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnNldEF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBuZXdUZXh0LCBtb3ZlVG9OZXh0QXR0cmlidXRlSWZOZWVk
ZWQuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGFnTmFtZUVkaXRpbmdDb21t
aXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQsIG9sZFRleHQsIHRhZ05hbWUsIG1vdmVE
aXJlY3Rpb24pCisgICAgX3RhZ05hbWVFZGl0aW5nQ29tbWl0dGVkKGVsZW1lbnQsIG5ld1RleHQs
IG9sZFRleHQsIHRhZ05hbWUsIG1vdmVEaXJlY3Rpb24pCiAgICAgewogICAgICAgICB0aGlzLl9l
ZGl0aW5nID0gZmFsc2U7CiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKQEAgLTk4Niw5ICs5NzMs
OSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9
CiAKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5zZXROb2RlTmFtZShuZXdUZXh0LCBj
aGFuZ2VUYWdOYW1lQ2FsbGJhY2spOwotICAgIH0sCisgICAgfQogCi0gICAgX3RleHROb2RlRWRp
dGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3VGV4dCkKKyAgICBfdGV4dE5vZGVF
ZGl0aW5nQ29tbWl0dGVkKGVsZW1lbnQsIG5ld1RleHQpCiAgICAgewogICAgICAgICB0aGlzLl9l
ZGl0aW5nID0gZmFsc2U7CiAKQEAgLTEwMDEsMTcgKzk4OCwxNyBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGV4dE5vZGUgPSB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0OwogCiAgICAgICAgIHRleHROb2RlLnNldE5vZGVWYWx1ZShuZXdUZXh0
LCB0aGlzLnVwZGF0ZVRpdGxlLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Vk
aXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHQpCisgICAgX2VkaXRpbmdD
YW5jZWxsZWQoZWxlbWVudCwgY29udGV4dCkKICAgICB7CiAgICAgICAgIHRoaXMuX2VkaXRpbmcg
PSBmYWxzZTsKIAogICAgICAgICAvLyBOZWVkIHRvIHJlc3RvcmUgYXR0cmlidXRlcyBzdHJ1Y3R1
cmUuCiAgICAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9k
aXN0aW5jdENsb3NpbmdUYWdFbGVtZW50OiBmdW5jdGlvbigpCisgICAgX2Rpc3RpbmN0Q2xvc2lu
Z1RhZ0VsZW1lbnQoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IEltcHJvdmUgdGhlIFRyZWUg
RWxlbWVudCAvIE91dGxpbmUgQWJzdHJhY3Rpb24gdG8gcHJldmVudCBjcmF3bGluZyB0aGUgRE9N
CiAKQEAgLTEwMjcsOSArMTAxNCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIC8vIG51bGwgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXNuJ3Qg
YSBjbG9zaW5nIHRhZy4KICAgICAgICAgdmFyIHRhZ3MgPSB0aGlzLmxpc3RJdGVtRWxlbWVudC5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJodG1sLXRhZyIpOwogICAgICAgICByZXR1cm4gKHRhZ3Mu
bGVuZ3RoID09PSAxID8gbnVsbCA6IHRhZ3NbdGFncy5sZW5ndGggLSAxXSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICB1cGRhdGVUaXRsZTogZnVuY3Rpb24ob25seVNlYXJjaFF1ZXJ5Q2hhbmdlZCkK
KyAgICB1cGRhdGVUaXRsZShvbmx5U2VhcmNoUXVlcnlDaGFuZ2VkKQogICAgIHsKICAgICAgICAg
Ly8gSWYgd2UgYXJlIGVkaXRpbmcsIHJldHVybiBlYXJseSB0byBwcmV2ZW50IGNhbmNlbGluZyB0
aGUgZWRpdC4KICAgICAgICAgLy8gQWZ0ZXIgZWRpdGluZyBpcyBjb21taXR0ZWQgdXBkYXRlVGl0
bGUgd2lsbCBiZSBjYWxsZWQuCkBAIC0xMDQ4LDkgKzEwMzUsOSBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5zZWxlY3Rpb25F
bGVtZW50OwogICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwogICAgICAgICB0aGlzLl9o
aWdobGlnaHRTZWFyY2hSZXN1bHRzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnVpbGRBdHRy
aWJ1dGVET006IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQsIG5hbWUsIHZhbHVlLCBub2RlKQorICAg
IF9idWlsZEF0dHJpYnV0ZURPTShwYXJlbnRFbGVtZW50LCBuYW1lLCB2YWx1ZSwgbm9kZSkKICAg
ICB7CiAgICAgICAgIHZhciBoYXNUZXh0ID0gKHZhbHVlLmxlbmd0aCA+IDApOwogICAgICAgICB2
YXIgYXR0clNwYW5FbGVtZW50ID0gcGFyZW50RWxlbWVudC5jcmVhdGVDaGlsZCgic3BhbiIsICJo
dG1sLWF0dHJpYnV0ZSIpOwpAQCAtMTA4Nyw5ICsxMDc0LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoaGFzVGV4dCkKICAgICAgICAg
ICAgIGF0dHJTcGFuRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgi
XCIiKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnVpbGRUYWdET006IGZ1bmN0aW9uKHBhcmVu
dEVsZW1lbnQsIHRhZ05hbWUsIGlzQ2xvc2luZ1RhZywgaXNEaXN0aW5jdFRyZWVFbGVtZW50KQor
ICAgIF9idWlsZFRhZ0RPTShwYXJlbnRFbGVtZW50LCB0YWdOYW1lLCBpc0Nsb3NpbmdUYWcsIGlz
RGlzdGluY3RUcmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIHZhciBub2RlID0gdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdDsKICAgICAgICAgdmFyIGNsYXNzZXMgPSBbICJodG1sLXRhZyIgXTsKQEAg
LTExMTEsMTMgKzEwOTgsMjAgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogICAgICAgICB0YWdFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCI+IikpOwogICAgICAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJcdTIwMEIiKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfbm9kZVRpdGxlSW5mbzogZnVuY3Rpb24oKQorICAgIF9ub2RlVGl0bGVJbmZvKCkKICAgICB7
CiAgICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgdmFy
IGluZm8gPSB7dGl0bGVET006IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwgaGFz
Q2hpbGRyZW46IHRoaXMuaGFzQ2hpbGRyZW59OwogCisgICAgICAgIGZ1bmN0aW9uIHRyaW1lZE5v
ZGVWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRyaW0gZW1wdHkgbGluZXMgZnJv
bSB0aGUgYmVnaW5uaW5nIGFuZCBleHRyYSBzcGFjZSBhdCB0aGUgZW5kIHNpbmNlIG1vc3Qgc3R5
bGUgYW5kIHNjcmlwdCB0YWdzIGJlZ2luIHdpdGggYSBuZXdsaW5lCisgICAgICAgICAgICAvLyBh
bmQgZW5kIHdpdGggYSBuZXdsaW5lIGFuZCBpbmRlbnRhdGlvbiBmb3IgdGhlIGVuZCB0YWcuCisg
ICAgICAgICAgICByZXR1cm4gbm9kZS5ub2RlVmFsdWUoKS5yZXBsYWNlKC9eW1xuXHJdKi8sICIi
KS5yZXBsYWNlKC9ccyokLywgIiIpOworICAgICAgICB9CisKICAgICAgICAgc3dpdGNoIChub2Rl
Lm5vZGVUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9O
T0RFOgogICAgICAgICAgICAgICAgIHZhciBmcmFnbWVudEVsZW1lbnQgPSBpbmZvLnRpdGxlRE9N
LmNyZWF0ZUNoaWxkKCJzcGFuIiwgIndlYmtpdC1odG1sLWZyYWdtZW50Iik7CkBAIC0xMTc3LDEz
ICsxMTcxLDYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBOb2RlLlRFWFRfTk9ERToK
LSAgICAgICAgICAgICAgICBmdW5jdGlvbiB0cmltZWROb2RlVmFsdWUoKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gVHJpbSBlbXB0eSBsaW5lcyBmcm9tIHRoZSBi
ZWdpbm5pbmcgYW5kIGV4dHJhIHNwYWNlIGF0IHRoZSBlbmQgc2luY2UgbW9zdCBzdHlsZSBhbmQg
c2NyaXB0IHRhZ3MgYmVnaW4gd2l0aCBhIG5ld2xpbmUKLSAgICAgICAgICAgICAgICAgICAgLy8g
YW5kIGVuZCB3aXRoIGEgbmV3bGluZSBhbmQgaW5kZW50YXRpb24gZm9yIHRoZSBlbmQgdGFnLgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5ub2RlVmFsdWUoKS5yZXBsYWNlKC9eW1xu
XHJdKi8sICIiKS5yZXBsYWNlKC9ccyokLywgIiIpOwotICAgICAgICAgICAgICAgIH0KLQogICAg
ICAgICAgICAgICAgIGlmIChub2RlLnBhcmVudE5vZGUgJiYgbm9kZS5wYXJlbnROb2RlLm5vZGVO
YW1lKCkudG9Mb3dlckNhc2UoKSA9PT0gInNjcmlwdCIpIHsKICAgICAgICAgICAgICAgICAgICAg
dmFyIG5ld05vZGUgPSBpbmZvLnRpdGxlRE9NLmNyZWF0ZUNoaWxkKCJzcGFuIiwgImh0bWwtdGV4
dC1ub2RlIGxhcmdlIik7CiAgICAgICAgICAgICAgICAgICAgIG5ld05vZGUuYXBwZW5kQ2hpbGQo
V2ViSW5zcGVjdG9yLnN5bnRheEhpZ2hsaWdodFN0cmluZ0FzRG9jdW1lbnRGcmFnbWVudCh0cmlt
ZWROb2RlVmFsdWUoKSwgInRleHQvamF2YXNjcmlwdCIpKTsKQEAgLTEyMzcsOSArMTIyNCw5IEBA
IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICByZXR1cm4gaW5mbzsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaW5nbGVUZXh0Q2hp
bGQ6IGZ1bmN0aW9uKG5vZGUpCisgICAgX3NpbmdsZVRleHRDaGlsZChub2RlKQogICAgIHsKICAg
ICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC0xMjUzLDkgKzEy
NDAsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAg
ICAgIHZhciBzaWJsaW5nID0gZmlyc3RDaGlsZC5uZXh0U2libGluZzsKICAgICAgICAgcmV0dXJu
IHNpYmxpbmcgPyBudWxsIDogZmlyc3RDaGlsZDsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93
SW5saW5lVGV4dDogZnVuY3Rpb24obm9kZSkKKyAgICBfc2hvd0lubGluZVRleHQobm9kZSkKICAg
ICB7CiAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlKCkgPT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7
CiAgICAgICAgICAgICB2YXIgdGV4dENoaWxkID0gdGhpcy5fc2luZ2xlVGV4dENoaWxkKG5vZGUp
OwpAQCAtMTI2Myw5ICsxMjUwLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmU6IGZ1bmN0aW9uKCkK
KyAgICByZW1vdmUoKQogICAgIHsKICAgICAgICAgdmFyIHBhcmVudEVsZW1lbnQgPSB0aGlzLnBh
cmVudDsKICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50KQpAQCAtMTI4NSw5ICsxMjcyLDkgQEAg
V2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAg
ICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlTm9kZShyZW1vdmVOb2RlQ2FsbGJh
Y2spOwotICAgIH0sCisgICAgfQogCi0gICAgX2VkaXRBc0hUTUw6IGZ1bmN0aW9uKCkKKyAgICBf
ZWRpdEFzSFRNTCgpCiAgICAgewogICAgICAgICB2YXIgdHJlZU91dGxpbmUgPSB0aGlzLnRyZWVP
dXRsaW5lOwogICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CkBAIC0x
MzIyLDE0ICsxMzA5LDE0IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICBub2RlLmdldE91dGVySFRNTCh0aGlzLl9zdGFydEVk
aXRpbmdBc0hUTUwuYmluZCh0aGlzLCBjb21taXRDaGFuZ2UpKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9jb3B5SFRNTDogZnVuY3Rpb24oKQorICAgIF9jb3B5SFRNTCgpCiAgICAgewogICAgICAg
ICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvcHlOb2RlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfaGlnaGxpZ2h0U2VhcmNoUmVzdWx0czogZnVuY3Rpb24oKQorICAgIF9oaWdobGlnaHRTZWFy
Y2hSZXN1bHRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy50aXRsZSB8fCAhdGhpcy5fc2Vh
cmNoUXVlcnkgfHwgIXRoaXMuX3NlYXJjaEhpZ2hsaWdodHNWaXNpYmxlKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTM1NiwxMyArMTM0MywzMCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2hpZ2hsaWdodFJlc3VsdCA9IFtdOwog
ICAgICAgICBXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0UmFuZ2VzV2l0aFN0eWxlQ2xhc3ModGhpcy50
aXRsZSwgbWF0Y2hSYW5nZXMsIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5TZWFyY2hIaWdo
bGlnaHRTdHlsZUNsYXNzTmFtZSwgdGhpcy5faGlnaGxpZ2h0UmVzdWx0KTsKLSAgICB9LAorICAg
IH0KIAotICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVFdmVudChl
dmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC50eXBlID09PSAiZHJhZ3N0YXJ0IiAmJiB0
aGlzLl9lZGl0aW5nKQogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICB9
CiB9OwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFRyZWVFbGVtZW50LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5Jbml0
aWFsQ2hpbGRyZW5MaW1pdCA9IDUwMDsKK1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5NYXhp
bXVtSW5saW5lVGV4dENoaWxkTGVuZ3RoID0gODA7CisKKy8vIEEgdW5pb24gb2YgSFRNTDQgYW5k
IEhUTUw1LURyYWZ0IGVsZW1lbnRzIHRoYXQgZXhwbGljaXRseQorLy8gb3IgaW1wbGljaXRseSAo
Zm9yIEhUTUw1KSBmb3JiaWQgdGhlIGNsb3NpbmcgdGFnLgorLy8gRklYTUU6IFJldmlzZSBvbmNl
IEhUTUw1IEZpbmFsIGlzIHB1Ymxpc2hlZC4KK1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5G
b3JiaWRkZW5DbG9zaW5nVGFnRWxlbWVudHMgPSBbCisgICAgImFyZWEiLCAiYmFzZSIsICJiYXNl
Zm9udCIsICJiciIsICJjYW52YXMiLCAiY29sIiwgImNvbW1hbmQiLCAiZW1iZWQiLCAiZnJhbWUi
LAorICAgICJociIsICJpbWciLCAiaW5wdXQiLCAiaXNpbmRleCIsICJrZXlnZW4iLCAibGluayIs
ICJtZXRhIiwgInBhcmFtIiwgInNvdXJjZSIKK10ua2V5U2V0KCk7CisKKy8vIFRoZXNlIHRhZ3Mg
d2UgZG8gbm90IGFsbG93IGVkaXRpbmcgdGhlaXIgdGFnIG5hbWUuCitXZWJJbnNwZWN0b3IuRE9N
VHJlZUVsZW1lbnQuRWRpdFRhZ0JsYWNrbGlzdCA9IFsKKyAgICAiaHRtbCIsICJoZWFkIiwgImJv
ZHkiCitdLmtleVNldCgpOworCitXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQuU2VhcmNoSGln
aGxpZ2h0U3R5bGVDbGFzc05hbWUgPSAic2VhcmNoLWhpZ2hsaWdodCI7CitXZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnQuQm91bmN5SGlnaGxpZ2h0U3R5bGVDbGFzc05hbWUgPSAiYm91bmN5LWhp
Z2hsaWdodCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCmluZGV4IDg4NWY3ODQuLmRlODhmYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTVRyZWVPdXRsaW5lLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1h
dHRsaWxlay5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvCiAgKgpA
QCAtMjgsMjIgKzI4LDI1IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01U
cmVlT3V0bGluZSA9IGZ1bmN0aW9uKG9taXRSb290RE9NTm9kZSwgc2VsZWN0RW5hYmxlZCwgc2hv
d0luRWxlbWVudHNQYW5lbEVuYWJsZWQpCitXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUgPSBj
bGFzcyBET01UcmVlT3V0bGluZSBleHRlbmRzIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZQogewot
ICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7Ci0gICAgdGhp
cy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX29ubW91c2Vkb3du
LmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2Vtb3ZlIiwgdGhpcy5fb25tb3VzZW1vdmUuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRo
aXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX29ubW91c2VvdXQu
YmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJk
cmFnc3RhcnQiLCB0aGlzLl9vbmRyYWdzdGFydC5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhp
cy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIiwgdGhpcy5fb25kcmFnb3Zlci5i
aW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRy
YWdsZWF2ZSIsIHRoaXMuX29uZHJhZ2xlYXZlLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlz
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsIHRoaXMuX29uZHJvcC5iaW5kKHRoaXMp
LCBmYWxzZSk7Ci0gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdlbmQiLCB0
aGlzLl9vbmRyYWdlbmQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIGNvbnN0cnVjdG9yKG9taXRS
b290RE9NTm9kZSwgc2VsZWN0RW5hYmxlZCwgc2hvd0luRWxlbWVudHNQYW5lbEVuYWJsZWQpCisg
ICAgeworICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7
CisKKyAgICAgICAgc3VwZXIoZWxlbWVudCk7CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUuU3R5bGVDbGFzc05hbWUpOwotICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TeW50YXhIaWdobGlnaHRlZFN0
eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRv
d24iLCB0aGlzLl9vbm1vdXNlZG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIGVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fb25tb3VzZW1vdmUuYmluZCh0
aGlzKSwgZmFsc2UpOworICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0
IiwgdGhpcy5fb25tb3VzZW91dC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIGVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgdGhpcy5fb25kcmFnc3RhcnQuYmluZCh0aGlz
KSwgZmFsc2UpOworICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIiwg
dGhpcy5fb25kcmFnb3Zlci5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIGVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiZHJhZ2xlYXZlIiwgdGhpcy5fb25kcmFnbGVhdmUuYmluZCh0aGlzKSwg
ZmFsc2UpOworICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyb3AiLCB0aGlzLl9v
bmRyb3AuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImRyYWdlbmQiLCB0aGlzLl9vbmRyYWdlbmQuYmluZCh0aGlzKSwgZmFsc2UpOwogCi0gICAg
VHJlZU91dGxpbmUuY2FsbCh0aGlzLCB0aGlzLmVsZW1lbnQpOworICAgICAgICBlbGVtZW50LmNs
YXNzTGlzdC5hZGQoImRvbS10cmVlLW91dGxpbmUiKTsKKyAgICAgICAgZWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5TeW50YXhIaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lKTsKIAog
ICAgICAgICB0aGlzLl9pbmNsdWRlUm9vdERPTU5vZGUgPSAhb21pdFJvb3RET01Ob2RlOwogICAg
ICAgICB0aGlzLl9zZWxlY3RFbmFibGVkID0gc2VsZWN0RW5hYmxlZDsKQEAgLTYxLDM0ICs2NCwy
NCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUgPSBmdW5jdGlvbihvbWl0Um9vdERPTU5v
ZGUsIHNlbGVjdEVuYWJsZWQsIHNob3dJbkVsZQogICAgICAgICB0aGlzLl9oaWRlRWxlbWVudEtl
eWJvYXJkU2hvcnRjdXQuaW1wbGljaXRseVByZXZlbnRzRGVmYXVsdCA9IGZhbHNlOwogCiAgICAg
ICAgIFdlYkluc3BlY3Rvci5zaG93U2hhZG93RE9NU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dTaGFkb3dET01TZXR0
aW5nQ2hhbmdlZCwgdGhpcyk7Ci19OwotCi0vLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rv
ci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KLVdlYkluc3BlY3Rvci5P
YmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5ET01U
cmVlT3V0bGluZSk7Ci0KLVdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5TdHlsZUNsYXNzTmFt
ZSA9ICJkb20tdHJlZS1vdXRsaW5lIjsKLQotV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLkV2
ZW50ID0gewotICAgIFNlbGVjdGVkTm9kZUNoYW5nZWQ6ICJkb20tdHJlZS1vdXRsaW5lLXNlbGVj
dGVkLW5vZGUtY2hhbmdlZCIKLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxp
bmUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRE9NVHJlZU91
dGxpbmUsCisgICAgLy8gUHVibGljCiAKLSAgICB3aXJlVG9Eb21BZ2VudDogZnVuY3Rpb24oKQor
ICAgIHdpcmVUb0RvbUFnZW50KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2VsZW1lbnRzVHJlZVVw
ZGF0ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVRyZWVVcGRhdGVyKHRoaXMpOwotICAgIH0sCisg
ICAgfQogCi0gICAgY2xvc2U6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZSgpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5fZWxlbWVudHNUcmVlVXBkYXRlcikgewogICAgICAgICAgICAgdGhpcy5fZWxl
bWVudHNUcmVlVXBkYXRlci5jbG9zZSgpOwogICAgICAgICAgICAgdGhpcy5fZWxlbWVudHNUcmVl
VXBkYXRlciA9IG51bGw7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIHNldFZpc2li
bGU6IGZ1bmN0aW9uKHZpc2libGUsIG9taXRGb2N1cykKKyAgICBzZXRWaXNpYmxlKHZpc2libGUs
IG9taXRGb2N1cykKICAgICB7CiAgICAgICAgIHRoaXMuX3Zpc2libGUgPSB2aXNpYmxlOwogICAg
ICAgICBpZiAoIXRoaXMuX3Zpc2libGUpCkBAIC05NywyMiArOTAsMjIgQEAgV2ViSW5zcGVjdG9y
LkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZp
ZWROb2RlcygpOwogICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRET01Ob2RlKQogICAgICAgICAg
ICAgdGhpcy5fcmV2ZWFsQW5kU2VsZWN0Tm9kZSh0aGlzLl9zZWxlY3RlZERPTU5vZGUsIG9taXRG
b2N1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbihl
dmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KQorICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKICAgICB7CiAgICAgICAgIHRoaXMuX2V2ZW50
U3VwcG9ydC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3Qp
OwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oZXZl
bnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKKyAgICByZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCiAgICAgewogICAgICAgICB0aGlzLl9ldmVu
dFN1cHBvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2Jq
ZWN0KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByb290RE9NTm9kZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fcm9vdERPTU5vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQg
cm9vdERPTU5vZGUoeCkKICAgICB7CkBAIC0xMjQsMTkgKzExNywxOSBAQCBXZWJJbnNwZWN0b3Iu
RE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pc1hNTE1pbWVUeXBl
ID0geCAmJiB4LmlzWE1MTm9kZSgpOwogCiAgICAgICAgIHRoaXMudXBkYXRlKCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgaXNYTUxNaW1lVHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5faXNYTUxNaW1lVHlwZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlbGVjdGVkRE9NTm9k
ZTogZnVuY3Rpb24oKQorICAgIHNlbGVjdGVkRE9NTm9kZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fc2VsZWN0ZWRET01Ob2RlOwotICAgIH0sCisgICAgfQogCi0gICAgc2VsZWN0RE9N
Tm9kZTogZnVuY3Rpb24obm9kZSwgZm9jdXMpCisgICAgc2VsZWN0RE9NTm9kZShub2RlLCBmb2N1
cykKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZERPTU5vZGUgPT09IG5vZGUpIHsK
ICAgICAgICAgICAgIHRoaXMuX3JldmVhbEFuZFNlbGVjdE5vZGUobm9kZSwgIWZvY3VzKTsKQEAg
LTE1MywxNCArMTQ2LDE0IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCBfcmV2ZWFsQW5kU2VsZWN0Tm9kZSB3aWxsIG5vdCBk
byBhbnl0aGluZyBmb3IgYSBudWxsIG5vZGUuCiAgICAgICAgIGlmICghbm9kZSB8fCB0aGlzLl9z
ZWxlY3RlZERPTU5vZGUgPT09IG5vZGUpCiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZE5vZGVD
aGFuZ2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZWRpdGluZygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fZWRpdGluZzsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZTog
ZnVuY3Rpb24oKQorICAgIHVwZGF0ZSgpCiAgICAgewogICAgICAgICB2YXIgc2VsZWN0ZWROb2Rl
ID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID8gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnJl
cHJlc2VudGVkT2JqZWN0IDogbnVsbDsKIApAQCAtMTg3LDIyICsxODAsMjIgQEAgV2ViSW5zcGVj
dG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoc2VsZWN0ZWRO
b2RlKQogICAgICAgICAgICAgdGhpcy5fcmV2ZWFsQW5kU2VsZWN0Tm9kZShzZWxlY3RlZE5vZGUs
IHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlU2VsZWN0aW9uOiBmdW5jdGlvbigp
CisgICAgdXBkYXRlU2VsZWN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5zZWxlY3Rl
ZFRyZWVFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB2YXIgZWxlbWVudCA9
IHRoaXMudHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKICAgICAgICAgZWxlbWVudC51
cGRhdGVTZWxlY3Rpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZWxlY3RlZE5vZGVDaGFu
Z2VkOiBmdW5jdGlvbigpCisgICAgX3NlbGVjdGVkTm9kZUNoYW5nZWQoKQogICAgIHsKICAgICAg
ICAgdGhpcy5fZXZlbnRTdXBwb3J0LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuRE9NVHJlZU91dGxpbmUuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBmaW5kVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKG5vZGUpCisgICAgZmluZFRyZWVF
bGVtZW50KG5vZGUpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBpc0FuY2VzdG9yTm9kZShhbmNl
c3Rvciwgbm9kZSkKICAgICAgICAgewpAQCAtMjE0LDE2ICsyMDcsMTYgQEAgV2ViSW5zcGVjdG9y
LkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBub2RlLnBh
cmVudE5vZGU7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSBUcmVlT3V0
bGluZS5wcm90b3R5cGUuZmluZFRyZWVFbGVtZW50LmNhbGwodGhpcywgbm9kZSwgaXNBbmNlc3Rv
ck5vZGUsIHBhcmVudE5vZGUpOworICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSBzdXBlci5maW5k
VHJlZUVsZW1lbnQobm9kZSwgaXNBbmNlc3Rvck5vZGUsIHBhcmVudE5vZGUpOwogICAgICAgICBp
ZiAoIXRyZWVFbGVtZW50ICYmIG5vZGUubm9kZVR5cGUoKSA9PT0gTm9kZS5URVhUX05PREUpIHsK
ICAgICAgICAgICAgIC8vIFRoZSB0ZXh0IG5vZGUgbWlnaHQgaGF2ZSBiZWVuIGlubGluZWQgaWYg
aXQgd2FzIHNob3J0LCBzbyB0cnkgdG8gZmluZCB0aGUgcGFyZW50IGVsZW1lbnQuCi0gICAgICAg
ICAgICB0cmVlRWxlbWVudCA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5maW5kVHJlZUVsZW1lbnQu
Y2FsbCh0aGlzLCBub2RlLnBhcmVudE5vZGUsIGlzQW5jZXN0b3JOb2RlLCBwYXJlbnROb2RlKTsK
KyAgICAgICAgICAgIHRyZWVFbGVtZW50ID0gc3VwZXIuZmluZFRyZWVFbGVtZW50KG5vZGUucGFy
ZW50Tm9kZSwgaXNBbmNlc3Rvck5vZGUsIHBhcmVudE5vZGUpOwogICAgICAgICB9CiAKICAgICAg
ICAgcmV0dXJuIHRyZWVFbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlVHJlZUVs
ZW1lbnRGb3I6IGZ1bmN0aW9uKG5vZGUpCisgICAgY3JlYXRlVHJlZUVsZW1lbnRGb3Iobm9kZSkK
ICAgICB7CiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuZmluZFRyZWVFbGVtZW50KG5v
ZGUpOwogICAgICAgICBpZiAodHJlZUVsZW1lbnQpCkBAIC0yMzYsMTYgKzIyOSw1MCBAQCBXZWJJ
bnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJu
IHRyZWVFbGVtZW50LmNoaWxkcmVuW25vZGUuaW5kZXhdOwogCiAgICAgICAgIHJldHVybiBudWxs
OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHN1cHByZXNzUmV2ZWFsQW5kU2VsZWN0KHgpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5fc3VwcHJlc3NSZXZlYWxBbmRTZWxlY3QgPT09IHgpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX3N1cHByZXNzUmV2ZWFsQW5kU2VsZWN0
ID0geDsKLSAgICB9LAorICAgIH0KKworCisgICAgcG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0
TWVudSwgZXZlbnQsIHRyZWVFbGVtZW50KQorICAgIHsKKyAgICAgICAgdmFyIHRhZyA9IGV2ZW50
LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJodG1sLXRhZyIpOworICAgICAg
ICB2YXIgdGV4dE5vZGUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFz
cygiaHRtbC10ZXh0LW5vZGUiKTsKKyAgICAgICAgdmFyIGNvbW1lbnROb2RlID0gZXZlbnQudGFy
Z2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoImh0bWwtY29tbWVudCIpOwogCi0gICAg
X3JldmVhbEFuZFNlbGVjdE5vZGU6IGZ1bmN0aW9uKG5vZGUsIG9taXRGb2N1cykKKyAgICAgICAg
dmFyIHBvcHVsYXRlZCA9IGZhbHNlOworICAgICAgICBpZiAodGFnICYmIHRyZWVFbGVtZW50Ll9w
b3B1bGF0ZVRhZ0NvbnRleHRNZW51KSB7CisgICAgICAgICAgICBpZiAocG9wdWxhdGVkKQorICAg
ICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAg
dHJlZUVsZW1lbnQuX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIGV2ZW50KTsK
KyAgICAgICAgICAgIHBvcHVsYXRlZCA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAodGV4dE5v
ZGUgJiYgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGV4dENvbnRleHRNZW51KSB7CisgICAgICAgICAg
ICBpZiAocG9wdWxhdGVkKQorICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFy
YXRvcigpOworICAgICAgICAgICAgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGV4dENvbnRleHRNZW51
KGNvbnRleHRNZW51LCB0ZXh0Tm9kZSk7CisgICAgICAgICAgICBwb3B1bGF0ZWQgPSB0cnVlOwor
ICAgICAgICB9IGVsc2UgaWYgKGNvbW1lbnROb2RlICYmIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZU5v
ZGVDb250ZXh0TWVudSkgeworICAgICAgICAgICAgaWYgKHBvcHVsYXRlZCkKKyAgICAgICAgICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIHRyZWVFbGVt
ZW50Ll9wb3B1bGF0ZU5vZGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgdGV4dE5vZGUpOworICAg
ICAgICAgICAgcG9wdWxhdGVkID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBw
b3B1bGF0ZWQ7CisgICAgfQorCisgICAgYWRqdXN0Q29sbGFwc2VkUmFuZ2UoKQorICAgIHsKKyAg
ICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfcmV2ZWFsQW5kU2VsZWN0Tm9kZShub2RlLCBv
bWl0Rm9jdXMpCiAgICAgewogICAgICAgICBpZiAoIW5vZGUgfHwgdGhpcy5fc3VwcHJlc3NSZXZl
YWxBbmRTZWxlY3QpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNTUsOSArMjgyLDkgQEAgV2Vi
SW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICB0cmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3Qob21pdEZvY3VzKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudEZyb21FdmVudDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3RyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNj
cm9sbENvbnRhaW5lciA9IHRoaXMuZWxlbWVudC5wYXJlbnRFbGVtZW50OwogCkBAIC0yODEsOSAr
MzA4LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGVsZW1lbnQgPSB0aGlzLnRyZWVFbGVtZW50RnJvbVBvaW50KHgsIHkgKyAyKTsKIAog
ICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9vbm1vdXNlZG93
bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX29ubW91c2Vkb3duKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdmFyIGVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7CiAgICAg
ICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50LmlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5n
bGUoZXZlbnQpKSB7CkBAIC0yOTIsOSArMzE5LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRs
aW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGVsZW1lbnQuc2VsZWN0KCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfb25tb3VzZW1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9vbm1vdXNlbW92ZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5f
dHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOwogICAgICAgICBpZiAoZWxlbWVudCAmJiB0aGlz
Ll9wcmV2aW91c0hvdmVyZWRFbGVtZW50ID09PSBlbGVtZW50KQpAQCAtMzE1LDkgKzM0Miw5IEBA
IFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZShlbGVt
ZW50ID8gZWxlbWVudC5yZXByZXNlbnRlZE9iamVjdC5pZCA6IDApOwotICAgIH0sCisgICAgfQog
Ci0gICAgX29ubW91c2VvdXQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vbm1vdXNlb3V0KGV2ZW50
KQogICAgIHsKICAgICAgICAgdmFyIG5vZGVVbmRlck1vdXNlID0gZG9jdW1lbnQuZWxlbWVudEZy
b21Qb2ludChldmVudC5wYWdlWCwgZXZlbnQucGFnZVkpOwogICAgICAgICBpZiAobm9kZVVuZGVy
TW91c2UgJiYgbm9kZVVuZGVyTW91c2UuaXNEZXNjZW5kYW50KHRoaXMuZWxlbWVudCkpCkBAIC0z
MjksOSArMzU2LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgfQogCiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWRlRE9N
Tm9kZUhpZ2hsaWdodCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX29uZHJhZ3N0YXJ0OiBmdW5j
dGlvbihldmVudCkKKyAgICBfb25kcmFnc3RhcnQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIg
dHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7CiAgICAgICAg
IGlmICghdHJlZUVsZW1lbnQpCkBAIC0zNTAsOSArMzc3LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5h
Z2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfb25kcmFnb3ZlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgX29uZHJh
Z292ZXIoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX25vZGVCZWluZ0RyYWdnZWQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzQsMTYgKzQwMSwxNiBAQCBXZWJJbnNw
ZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOwogICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJtb3Zl
IjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX29uZHJhZ2xl
YXZlOiBmdW5jdGlvbihldmVudCkKKyAgICBfb25kcmFnbGVhdmUoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLl9jbGVhckRyYWdPdmVyVHJlZUVsZW1lbnRNYXJrZXIoKTsKICAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAg
fQogCi0gICAgX2lzVmFsaWREcmFnU291cmNlT3JUYXJnZXQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50
KQorICAgIF9pc1ZhbGlkRHJhZ1NvdXJjZU9yVGFyZ2V0KHRyZWVFbGVtZW50KQogICAgIHsKICAg
ICAgICAgaWYgKCF0cmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM5
NiwxMSArNDIzLDIzIEBAIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfb25kcm9wOiBmdW5jdGlvbihldmVudCkKKyAgICBfb25kcm9wKGV2
ZW50KQogICAgIHsKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKworICAgICAgICBm
dW5jdGlvbiBjYWxsYmFjayhlcnJvciwgbmV3Tm9kZUlkKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0aGlz
Ll91cGRhdGVNb2RpZmllZE5vZGVzKCk7CisgICAgICAgICAgICB2YXIgbmV3Tm9kZSA9IFdlYklu
c3BlY3Rvci5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobmV3Tm9kZUlkKTsKKyAgICAgICAgICAg
IGlmIChuZXdOb2RlKQorICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RE9NTm9kZShuZXdOb2Rl
LCB0cnVlKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX3Ry
ZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKHRoaXMuX25vZGVCZWluZ0Ry
YWdnZWQgJiYgdHJlZUVsZW1lbnQpIHsKICAgICAgICAgICAgIHZhciBwYXJlbnROb2RlOwpAQCAt
NDE1LDM5ICs0NTQsMjkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICAgICBhbmNob3JOb2RlID0gZHJhZ1RhcmdldE5vZGU7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCBuZXdOb2RlSWQp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5v
ZGVzKCk7Ci0gICAgICAgICAgICAgICAgdmFyIG5ld05vZGUgPSBXZWJJbnNwZWN0b3IuZG9tVHJl
ZU1hbmFnZXIubm9kZUZvcklkKG5ld05vZGVJZCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5ld05v
ZGUpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RE9NTm9kZShuZXdOb2RlLCB0cnVl
KTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMuX25vZGVCZWluZ0RyYWdnZWQubW92
ZVRvKHBhcmVudE5vZGUsIGFuY2hvck5vZGUsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgICAg
ICB9CiAKICAgICAgICAgZGVsZXRlIHRoaXMuX25vZGVCZWluZ0RyYWdnZWQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfb25kcmFnZW5kOiBmdW5jdGlvbihldmVudCkKKyAgICBfb25kcmFnZW5kKGV2
ZW50KQogICAgIHsKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgdGhp
cy5fY2xlYXJEcmFnT3ZlclRyZWVFbGVtZW50TWFya2VyKCk7CiAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9ub2RlQmVpbmdEcmFnZ2VkOwotICAgIH0sCisgICAgfQogCi0gICAgX2NsZWFyRHJhZ092ZXJU
cmVlRWxlbWVudE1hcmtlcjogZnVuY3Rpb24oKQorICAgIF9jbGVhckRyYWdPdmVyVHJlZUVsZW1l
bnRNYXJrZXIoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2RyYWdPdmVyVHJlZUVsZW1lbnQp
IHsKICAgICAgICAgICAgIHRoaXMuX2RyYWdPdmVyVHJlZUVsZW1lbnQudXBkYXRlU2VsZWN0aW9u
KCk7CiAgICAgICAgICAgICB0aGlzLl9kcmFnT3ZlclRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCJlbGVtZW50cy1kcmFnLW92ZXIiKTsKICAgICAgICAgICAgIGRl
bGV0ZSB0aGlzLl9kcmFnT3ZlclRyZWVFbGVtZW50OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfY29udGV4dE1lbnVFdmVudEZpcmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29u
dGV4dE1lbnVFdmVudEZpcmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHRyZWVFbGVtZW50
ID0gdGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOwogICAgICAgICBpZiAoIXRyZWVF
bGVtZW50KQpAQCAtNDU2LDQ2ICs0ODUsMTUgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5l
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rv
ci5Db250ZXh0TWVudShldmVudCk7CiAgICAgICAgIHRoaXMucG9wdWxhdGVDb250ZXh0TWVudShj
b250ZXh0TWVudSwgZXZlbnQsIHRyZWVFbGVtZW50KTsKICAgICAgICAgY29udGV4dE1lbnUuc2hv
dygpOwotICAgIH0sCi0KLSAgICBwb3B1bGF0ZUNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0
TWVudSwgZXZlbnQsIHRyZWVFbGVtZW50KQotICAgIHsKLSAgICAgICAgdmFyIHRhZyA9IGV2ZW50
LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJodG1sLXRhZyIpOwotICAgICAg
ICB2YXIgdGV4dE5vZGUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFz
cygiaHRtbC10ZXh0LW5vZGUiKTsKLSAgICAgICAgdmFyIGNvbW1lbnROb2RlID0gZXZlbnQudGFy
Z2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoImh0bWwtY29tbWVudCIpOwotCi0gICAg
ICAgIHZhciBwb3B1bGF0ZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKHRhZyAmJiB0cmVlRWxlbWVu
dC5fcG9wdWxhdGVUYWdDb250ZXh0TWVudSkgewotICAgICAgICAgICAgaWYgKHBvcHVsYXRlZCkK
LSAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAgICAg
ICAgIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVu
dCk7Ci0gICAgICAgICAgICBwb3B1bGF0ZWQgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKHRl
eHROb2RlICYmIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZVRleHRDb250ZXh0TWVudSkgewotICAgICAg
ICAgICAgaWYgKHBvcHVsYXRlZCkKLSAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRT
ZXBhcmF0b3IoKTsKLSAgICAgICAgICAgIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZVRleHRDb250ZXh0
TWVudShjb250ZXh0TWVudSwgdGV4dE5vZGUpOwotICAgICAgICAgICAgcG9wdWxhdGVkID0gdHJ1
ZTsKLSAgICAgICAgfSBlbHNlIGlmIChjb21tZW50Tm9kZSAmJiB0cmVlRWxlbWVudC5fcG9wdWxh
dGVOb2RlQ29udGV4dE1lbnUpIHsKLSAgICAgICAgICAgIGlmIChwb3B1bGF0ZWQpCi0gICAgICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7Ci0gICAgICAgICAgICB0cmVl
RWxlbWVudC5fcG9wdWxhdGVOb2RlQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIHRleHROb2RlKTsK
LSAgICAgICAgICAgIHBvcHVsYXRlZCA9IHRydWU7CiAgICAgfQogCi0gICAgICAgIHJldHVybiBw
b3B1bGF0ZWQ7Ci0gICAgfSwKLQotICAgIGFkanVzdENvbGxhcHNlZFJhbmdlOiBmdW5jdGlvbigp
Ci0gICAgewotICAgIH0sCi0KLSAgICBfdXBkYXRlTW9kaWZpZWROb2RlczogZnVuY3Rpb24oKQor
ICAgIF91cGRhdGVNb2RpZmllZE5vZGVzKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVt
ZW50c1RyZWVVcGRhdGVyKQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudHNUcmVlVXBkYXRlci5f
dXBkYXRlTW9kaWZpZWROb2RlcygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BvcHVsYXRlQ29u
dGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRNZW51LCBkb21Ob2RlKQorICAgIF9wb3B1bGF0ZUNv
bnRleHRNZW51KGNvbnRleHRNZW51LCBkb21Ob2RlKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9zaG93SW5FbGVtZW50c1BhbmVsRW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTUw
Nyw5ICs1MDUsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewog
CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmV2ZWFsIGluIERPTSBUcmVl
IiksIHJldmVhbEVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dTaGFkb3dET01T
ZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Nob3dTaGFkb3dET01TZXR0aW5n
Q2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBub2RlVG9TZWxlY3QgPSB0aGlzLnNl
bGVjdGVkVHJlZUVsZW1lbnQgPyB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRP
YmplY3QgOiBudWxsOwogICAgICAgICB3aGlsZSAobm9kZVRvU2VsZWN0KSB7CkBAIC01MjQsOSAr
NTIyLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBpZiAobm9kZVRvU2VsZWN0KQogICAgICAgICAgICAgdGhpcy5zZWxlY3RET01Ob2RlKG5v
ZGVUb1NlbGVjdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGlkZUVsZW1lbnQ6IGZ1bmN0aW9u
KGV2ZW50LCBrZXlib2FyZFNob3J0Y3V0KQorICAgIF9oaWRlRWxlbWVudChldmVudCwga2V5Ym9h
cmRTaG9ydGN1dCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50
IHx8IFdlYkluc3BlY3Rvci5pc0VkaXRpbmdBbnlGaWVsZCgpKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNTc3LDQgKzU3NSw2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5
cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBUcmVlT3V0bGluZS5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuRE9NVHJl
ZU91dGxpbmUuRXZlbnQgPSB7CisgICAgU2VsZWN0ZWROb2RlQ2hhbmdlZDogImRvbS10cmVlLW91
dGxpbmUtc2VsZWN0ZWQtbm9kZS1jaGFuZ2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlSG9zdFRyZWVFbGVtZW50Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VIb3N0
VHJlZUVsZW1lbnQuanMKaW5kZXggNWE1MmQyMC4uODViYzcwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VIb3N0VHJlZUVsZW1l
bnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0
YWJhc2VIb3N0VHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI5ICsyMywyNiBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZUhvc3RUcmVl
RWxlbWVudCA9IGZ1bmN0aW9uKGhvc3QpCitXZWJJbnNwZWN0b3IuRGF0YWJhc2VIb3N0VHJlZUVs
ZW1lbnQgPSBjbGFzcyBEYXRhYmFzZUhvc3RUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rv
ci5TdG9yYWdlVHJlZUVsZW1lbnQKIHsKLSAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVt
ZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50LkZvbGRlckljb25T
dHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9ySG9zdChob3N0KSwgbnVs
bCk7CisgICAgY29uc3RydWN0b3IoaG9zdCkKKyAgICB7CisgICAgICAgIHN1cGVyKFdlYkluc3Bl
Y3Rvci5Gb2xkZXJUcmVlRWxlbWVudC5Gb2xkZXJJY29uU3R5bGVDbGFzc05hbWUsIFdlYkluc3Bl
Y3Rvci5kaXNwbGF5TmFtZUZvckhvc3QoaG9zdCksIG51bGwpOwogCiAgICAgICAgIHRoaXMuX2hv
c3QgPSBob3N0OwogCiAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0cnVlOwotfTsKLQotV2Vi
SW5zcGVjdG9yLkRhdGFiYXNlSG9zdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRhdGFiYXNlSG9zdFRyZWVFbGVtZW50LAorICAgIH0KIAog
ICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5kaXNwbGF5TmFtZUZvckhvc3QodGhpcy5faG9zdCk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgY2F0ZWdvcnlOYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkRhdGFiYXNlcyIpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5E
YXRhYmFzZUhvc3RUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LlN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxl
VHJlZUVsZW1lbnQuanMKaW5kZXggYjRhNWQ0Ni4uYTUyYmUzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZVRyZWVFbGVt
ZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rh
dGFiYXNlVGFibGVUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTkgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVU
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkRh
dGFiYXNlVGFibGVUcmVlRWxlbWVudCA9IGNsYXNzIERhdGFiYXNlVGFibGVUcmVlRWxlbWVudCBl
eHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3Rv
cihyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3Qp
OwogCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFdlYklu
c3BlY3Rvci5EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQuRGF0YWJhc2VUYWJsZUljb25TdHlsZUNs
YXNzTmFtZSwgcmVwcmVzZW50ZWRPYmplY3QubmFtZSwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3Qs
IGZhbHNlKTsKKyAgICAgICAgc3VwZXIoImRhdGFiYXNlLXRhYmxlLWljb24iLCByZXByZXNlbnRl
ZE9iamVjdC5uYW1lLCBudWxsLCByZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOwogCiAgICAgICAg
IHRoaXMuc21hbGwgPSB0cnVlOworICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRh
YmxlVHJlZUVsZW1lbnQuRGF0YWJhc2VUYWJsZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkYXRhYmFz
ZS10YWJsZS1pY29uIjsKLQotV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxl
VHJlZUVsZW1lbnQKLX07Ci0KLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJv
dG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGF0YWJhc2VUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVHJlZUVsZW1lbnQuanMKaW5kZXggY2I0Nzk5ZS4uYmFj
Yzk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGF0YWJhc2VUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMSArMjMsMTMgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
RGF0YWJhc2VUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5z
cGVjdG9yLkRhdGFiYXNlVHJlZUVsZW1lbnQgPSBjbGFzcyBEYXRhYmFzZVRyZWVFbGVtZW50IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9y
KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QpOwogCi0g
ICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rv
ci5EYXRhYmFzZVRyZWVFbGVtZW50LkRhdGFiYXNlSWNvblN0eWxlQ2xhc3NOYW1lLCByZXByZXNl
bnRlZE9iamVjdC5uYW1lLCBudWxsLCByZXByZXNlbnRlZE9iamVjdCwgdHJ1ZSk7CisgICAgICAg
IHN1cGVyKCJkYXRhYmFzZS1pY29uIiwgcmVwcmVzZW50ZWRPYmplY3QubmFtZSwgbnVsbCwgcmVw
cmVzZW50ZWRPYmplY3QsIHRydWUpOwogCiAgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwogICAg
ICAgICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7CkBAIC0zNSwyMSArMzcsMTYgQEAgV2ViSW5z
cGVjdG9yLkRhdGFiYXNlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkK
ICAgICAgICAgLy8gU2luY2Ugd2UgYXJlIGluaXRpYWxseSB0ZWxsaW5nIHRoZSB0cmVlIGVsZW1l
bnQgd2UgZG9uJ3QgaGF2ZSBhbnkgY2hpbGRyZW4sIG1ha2Ugc3VyZSB0aGF0IHdlIHRyeSB0byBw
b3B1bGF0ZQogICAgICAgICAvLyB0aGUgdHJlZSBlbGVtZW50ICh3aGljaCB3aWxsIGdldCBhIGxp
c3Qgb2YgdGFibGVzKSB3aGVuIHRoZSBlbGVtZW50IGlzIGNyZWF0ZWQuCiAgICAgICAgIHRoaXMu
b25wb3B1bGF0ZSgpOwotfTsKLQotV2ViSW5zcGVjdG9yLkRhdGFiYXNlVHJlZUVsZW1lbnQuRGF0
YWJhc2VJY29uU3R5bGVDbGFzc05hbWUgPSAiZGF0YWJhc2UtaWNvbiI7Ci0KLVdlYkluc3BlY3Rv
ci5EYXRhYmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLkRhdGFiYXNlVHJlZUVsZW1lbnQsCisgICAgfQogCiAgICAgLy8gT3ZlcnJpZGVz
IGZyb20gVHJlZUVsZW1lbnQgKFByaXZhdGUpCiAKLSAgICBvbmNvbGxhcHNlOiBmdW5jdGlvbigp
CisgICAgb25jb2xsYXBzZSgpCiAgICAgewogICAgICAgICB0aGlzLnNob3VsZFJlZnJlc2hDaGls
ZHJlbiA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbnBvcHVsYXRlOiBmdW5jdGlvbigp
CisgICAgb25wb3B1bGF0ZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5n
dGggJiYgIXRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNzEsNSArNjgsMyBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZ2V0VGFibGVOYW1lcyh0YWJs
ZU5hbWVzQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkRh
dGFiYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5l
cmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRm9sZGVyVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb2xkZXJUcmVlRWxlbWVudC5qcwppbmRl
eCA4Y2FlOGI3Li4yYTA4ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Gb2xkZXJUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb2xkZXJUcmVlRWxlbWVudC5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNyAr
MjMsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHRpdGxlLCBzdWJ0aXRsZSwgYWRk
aXRpb25hbENsYXNzTmFtZXMsIHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkZvbGRl
clRyZWVFbGVtZW50ID0gY2xhc3MgRm9sZGVyVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0b3IodGl0bGUsIHN1YnRpdGxl
LCBhZGRpdGlvbmFsQ2xhc3NOYW1lcywgcmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAg
ICB2YXIgY2xhc3NOYW1lczsKICAgICAgICAgaWYgKCFhZGRpdGlvbmFsQ2xhc3NOYW1lcykKQEAg
LTM1LDE3ICszNywxMiBAQCBXZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQgPSBmdW5jdGlv
bih0aXRsZSwgc3VidGl0bGUsIGFkZGl0aW9uYWxDbGFzc05hbWVzLAogCiAgICAgICAgIGNsYXNz
TmFtZXMudW5zaGlmdChXZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQuRm9sZGVySWNvblN0
eWxlQ2xhc3NOYW1lKTsKIAotICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2Fs
bCh0aGlzLCBjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LCB0
cnVlKTsKKyAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCByZXByZXNl
bnRlZE9iamVjdCwgdHJ1ZSk7CiAKICAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7Ci19OwotCi1X
ZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQuRm9sZGVySWNvblN0eWxlQ2xhc3NOYW1lID0g
ImZvbGRlci1pY29uIjsKLQotV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50Cisg
ICAgfQogCiAgICAgLy8gTm8gTWV0aG9kcyBvciBQcm9wZXJ0aWVzCiB9OwogCi1XZWJJbnNwZWN0
b3IuRm9sZGVyVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVt
ZW50LkZvbGRlckljb25TdHlsZUNsYXNzTmFtZSA9ICJmb2xkZXItaWNvbiI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb2xkZXJpemVkVHJl
ZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9G
b2xkZXJpemVkVHJlZUVsZW1lbnQuanMKaW5kZXggNGZmMDEwNy4uMWY4YzRjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRm9sZGVyaXplZFRy
ZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0ZvbGRlcml6ZWRUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJl
ZUVsZW1lbnQgPSBmdW5jdGlvbihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2Vu
dGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKK1dlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1l
bnQgPSBjbGFzcyBGb2xkZXJpemVkVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2Vu
ZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5j
YWxsKHRoaXMsIGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3Qs
IGhhc0NoaWxkcmVuKTsKKyAgICBjb25zdHJ1Y3RvcihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0
bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKKyAgICB7CisgICAgICAgIHN1cGVy
KGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxk
cmVuKTsKIAogICAgICAgICB0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7CiAKQEAg
LTM0LDMwICszNiwyMSBAQCBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50ID0gZnVu
Y3Rpb24oY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCByZXByZQogICAgICAgICB0aGlzLl9m
b2xkZXJpemVTZXR0aW5nc01hcCA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX2dyb3VwZWRJbnRv
Rm9sZGVycyA9IGZhbHNlOwogICAgICAgICB0aGlzLl9jbGVhck5ld0NoaWxkUXVldWUoKTsKLX07
Ci0KLVdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQuTWVkaXVtQ2hpbGRDb3VudFRo
cmVzaG9sZCA9IDU7Ci1XZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50LkxhcmdlQ2hp
bGRDb3VudFRocmVzaG9sZCA9IDE1OwotV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVu
dC5OdW1iZXJPZk1lZGl1bUNhdGVnb3JpZXNUaHJlc2hvbGQgPSAyOwotV2ViSW5zcGVjdG9yLkZv
bGRlcml6ZWRUcmVlRWxlbWVudC5OZXdDaGlsZFF1ZXVlVXBkYXRlSW50ZXJ2YWwgPSA1MDA7Ci0K
LVdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50LAotICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUsCisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZ3JvdXBlZEludG9Gb2xkZXJzKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9ncm91cGVkSW50b0ZvbGRlcnM7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBzZXQgZm9sZGVyU2V0dGluZ3NLZXkoeCkKICAgICB7CiAgICAgICAgIHRoaXMuX2ZvbGRl
clNldHRpbmdzS2V5ID0geDsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZ2lzdGVyRm9sZGVyaXpl
U2V0dGluZ3M6IGZ1bmN0aW9uKHR5cGUsIGZvbGRlckRpc3BsYXlOYW1lLCB2YWxpZGF0ZVJlcHJl
c2VudGVkT2JqZWN0Q2FsbGJhY2ssIGNvdW50Q2hpbGRyZW5DYWxsYmFjaywgdHJlZUVsZW1lbnRD
b25zdHJ1Y3RvcikKKyAgICByZWdpc3RlckZvbGRlcml6ZVNldHRpbmdzKHR5cGUsIGZvbGRlckRp
c3BsYXlOYW1lLCB2YWxpZGF0ZVJlcHJlc2VudGVkT2JqZWN0Q2FsbGJhY2ssIGNvdW50Q2hpbGRy
ZW5DYWxsYmFjaywgdHJlZUVsZW1lbnRDb25zdHJ1Y3RvcikKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHR5cGUpOwogICAgICAgICBjb25zb2xlLmFzc2VydChmb2xkZXJEaXNwbGF5TmFt
ZSk7CkBAIC03NCwxMyArNjcsMTMgQEAgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH07CiAKICAgICAgICAgdGhpcy5fZm9sZGVyaXplU2V0
dGluZ3NNYXAuc2V0KHR5cGUsIHNldHRpbmdzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIE92
ZXJyaWRlcyBmcm9tIFRyZWVFbGVtZW50IChQcml2YXRlKS4KIAotICAgIHJlbW92ZUNoaWxkcmVu
OiBmdW5jdGlvbigpCisgICAgcmVtb3ZlQ2hpbGRyZW4oKQogICAgIHsKLSAgICAgICAgVHJlZUVs
ZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVy
LnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgdGhpcy5fY2xlYXJOZXdDaGlsZFF1ZXVlKCk7
CiAKQEAgLTkwLDExICs4MywxMSBAQCBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZm9sZGVyVHlwZU1hcC5jbGVhcigpOwogCiAg
ICAgICAgIHRoaXMuX2dyb3VwZWRJbnRvRm9sZGVycyA9IGZhbHNlOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBhZGRDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0OiBm
dW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICBhZGRDaGlsZEZvclJlcHJlc2VudGVkT2Jq
ZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgdmFyIHNldHRpbmdzID0gdGhp
cy5fc2V0dGluZ3NGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCk7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHNldHRpbmdzKTsKQEAgLTEwOCwxOCArMTAxLDE4IEBAIFdlYklu
c3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAg
Y2hpbGRUcmVlRWxlbWVudCA9IG5ldyBzZXR0aW5ncy50cmVlRWxlbWVudENvbnN0cnVjdG9yKHJl
cHJlc2VudGVkT2JqZWN0KTsKIAogICAgICAgICB0aGlzLl9hZGRUcmVlRWxlbWVudChjaGlsZFRy
ZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFJlcHJlc2VudGVkT2JqZWN0VG9O
ZXdDaGlsZFF1ZXVlOiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICBhZGRSZXByZXNl
bnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAg
ICAgIC8vIFRoaXMgcXVldWUgcmVkdWNlcyBmbGFzaGluZyBhcyByZXNvdXJjZXMgbG9hZCBhbmQg
Y2hhbmdlIGZvbGRlcnMgd2hlbiB0aGVpciB0eXBlIGJlY29tZXMga25vd24uCiAKICAgICAgICAg
dGhpcy5fbmV3Q2hpbGRRdWV1ZS5wdXNoKHJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAgaWYg
KCF0aGlzLl9uZXdDaGlsZFF1ZXVlVGltZW91dElkZW50aWZpZXIpCiAgICAgICAgICAgICB0aGlz
Ll9uZXdDaGlsZFF1ZXVlVGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KHRoaXMuX3BvcHVs
YXRlRnJvbU5ld0NoaWxkUXVldWUuYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRU
cmVlRWxlbWVudC5OZXdDaGlsZFF1ZXVlVXBkYXRlSW50ZXJ2YWwpOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50
ZWRPYmplY3QpCisgICAgcmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRl
ZE9iamVjdCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlbW92ZVJlcHJlc2VudGVkT2JqZWN0RnJv
bU5ld0NoaWxkUXVldWUocmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAgICB0aGlzLnVwZGF0ZVBh
cmVudFN0YXR1cygpOwpAQCAtMTM3LDE0ICsxMzAsMTQgQEAgV2ViSW5zcGVjdG9yLkZvbGRlcml6
ZWRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgdGhpcy5fcmVtb3ZlVHJlZUVsZW1lbnQoY2hpbGRUcmVlRWxlbWVudCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBjb21wYXJlQ2hpbGRUcmVlRWxlbWVudHM6IGZ1bmN0aW9uKGEsIGIpCisgICAg
Y29tcGFyZUNoaWxkVHJlZUVsZW1lbnRzKGEsIGIpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY29tcGFyZVRyZWVFbGVtZW50c0J5TWFpblRpdGxlKGEsIGIpOwotICAgIH0sCisgICAgfQog
Ci0gICAgdXBkYXRlUGFyZW50U3RhdHVzOiBmdW5jdGlvbigpCisgICAgdXBkYXRlUGFyZW50U3Rh
dHVzKCkKICAgICB7CiAgICAgICAgIHZhciBoYXNDaGlsZHJlbiA9IGZhbHNlOwogICAgICAgICBm
b3IgKHZhciBzZXR0aW5ncyBvZiB0aGlzLl9mb2xkZXJpemVTZXR0aW5nc01hcC52YWx1ZXMoKSkg
ewpAQCAtMTU3LDI2ICsxNTAsMjYgQEAgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBoYXNDaGlsZHJlbjsK
ICAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuKQogICAgICAgICAgICAgdGhpcy5yZW1vdmVD
aGlsZHJlbigpOwotICAgIH0sCisgICAgfQogCi0gICAgcHJlcGFyZVRvUG9wdWxhdGU6IGZ1bmN0
aW9uKCkKKyAgICBwcmVwYXJlVG9Qb3B1bGF0ZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
X2dyb3VwZWRJbnRvRm9sZGVycyAmJiB0aGlzLl9zaG91bGRHcm91cEludG9Gb2xkZXJzKCkpCiAg
ICAgICAgICAgICB0aGlzLl9ncm91cGVkSW50b0ZvbGRlcnMgPSB0cnVlOwotICAgIH0sCisgICAg
fQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2NsZWFyTmV3Q2hpbGRRdWV1ZTogZnVuY3Rpb24o
KQorICAgIF9jbGVhck5ld0NoaWxkUXVldWUoKQogICAgIHsKICAgICAgICAgdGhpcy5fbmV3Q2hp
bGRRdWV1ZSA9IFtdOwogICAgICAgICBpZiAodGhpcy5fbmV3Q2hpbGRRdWV1ZVRpbWVvdXRJZGVu
dGlmaWVyKSB7CiAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbmV3Q2hpbGRRdWV1ZVRp
bWVvdXRJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHRoaXMuX25ld0NoaWxkUXVldWVUaW1lb3V0
SWRlbnRpZmllciA9IG51bGw7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9wb3B1
bGF0ZUZyb21OZXdDaGlsZFF1ZXVlOiBmdW5jdGlvbigpCisgICAgX3BvcHVsYXRlRnJvbU5ld0No
aWxkUXVldWUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmNoaWxkcmVuLmxlbmd0aCkgewog
ICAgICAgICAgICAgdGhpcy51cGRhdGVQYXJlbnRTdGF0dXMoKTsKQEAgLTE5MCwxNCArMTgzLDE0
IEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5hZGRDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KHRoaXMuX25ld0NoaWxk
UXVldWVbaV0pOwogCiAgICAgICAgIHRoaXMuX2NsZWFyTmV3Q2hpbGRRdWV1ZSgpOwotICAgIH0s
CisgICAgfQogCi0gICAgX3JlbW92ZVJlcHJlc2VudGVkT2JqZWN0RnJvbU5ld0NoaWxkUXVldWU6
IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIF9yZW1vdmVSZXByZXNlbnRlZE9iamVj
dEZyb21OZXdDaGlsZFF1ZXVlKHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgdGhp
cy5fbmV3Q2hpbGRRdWV1ZS5yZW1vdmUocmVwcmVzZW50ZWRPYmplY3QpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2FkZFRyZWVFbGVtZW50OiBmdW5jdGlvbihjaGlsZFRyZWVFbGVtZW50KQorICAg
IF9hZGRUcmVlRWxlbWVudChjaGlsZFRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoY2hpbGRUcmVlRWxlbWVudCk7CiAgICAgICAgIGlmICghY2hpbGRUcmVlRWxlbWVu
dCkKQEAgLTIxNSwyNyArMjA4LDI3IEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh3YXNTZWxlY3RlZCkKICAgICAgICAgICAg
IGNoaWxkVHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KHRydWUsIGZhbHNlLCB0cnVlLCB0cnVl
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb21wYXJlVHJlZUVsZW1lbnRzQnlNYWluVGl0bGU6
IGZ1bmN0aW9uKGEsIGIpCisgICAgX2NvbXBhcmVUcmVlRWxlbWVudHNCeU1haW5UaXRsZShhLCBi
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGEubWFpblRpdGxlLmxvY2FsZUNvbXBhcmUoYi5tYWlu
VGl0bGUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2luc2VydEZvbGRlclRyZWVFbGVtZW50OiBm
dW5jdGlvbihmb2xkZXJUcmVlRWxlbWVudCkKKyAgICBfaW5zZXJ0Rm9sZGVyVHJlZUVsZW1lbnQo
Zm9sZGVyVHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9n
cm91cGVkSW50b0ZvbGRlcnMpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghZm9sZGVyVHJlZUVs
ZW1lbnQucGFyZW50KTsKICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZChmb2xkZXJUcmVlRWxlbWVu
dCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGZvbGRlclRy
ZWVFbGVtZW50LCB0aGlzLmNoaWxkcmVuLCB0aGlzLl9jb21wYXJlVHJlZUVsZW1lbnRzQnlNYWlu
VGl0bGUpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pbnNlcnRDaGlsZFRyZWVFbGVtZW50OiBm
dW5jdGlvbihwYXJlbnRUcmVlRWxlbWVudCwgY2hpbGRUcmVlRWxlbWVudCkKKyAgICBfaW5zZXJ0
Q2hpbGRUcmVlRWxlbWVudChwYXJlbnRUcmVlRWxlbWVudCwgY2hpbGRUcmVlRWxlbWVudCkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjaGlsZFRyZWVFbGVtZW50LnBhcmVudCk7CiAg
ICAgICAgIHBhcmVudFRyZWVFbGVtZW50Lmluc2VydENoaWxkKGNoaWxkVHJlZUVsZW1lbnQsIGlu
c2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihjaGlsZFRyZWVFbGVt
ZW50LCBwYXJlbnRUcmVlRWxlbWVudC5jaGlsZHJlbiwgdGhpcy5jb21wYXJlQ2hpbGRUcmVlRWxl
bWVudHMuYmluZCh0aGlzKSkpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbW92ZVRyZWVFbGVt
ZW50OiBmdW5jdGlvbihjaGlsZFRyZWVFbGVtZW50LCBzdXBwcmVzc09uRGVzZWxlY3QsIHN1cHBy
ZXNzU2VsZWN0U2libGluZykKKyAgICBfcmVtb3ZlVHJlZUVsZW1lbnQoY2hpbGRUcmVlRWxlbWVu
dCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNpYmxpbmcpCiAgICAgewogICAg
ICAgICB2YXIgb2xkUGFyZW50ID0gY2hpbGRUcmVlRWxlbWVudC5wYXJlbnQ7CiAgICAgICAgIGlm
ICghb2xkUGFyZW50KQpAQCAtMjUzLDkgKzI0Niw5IEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVk
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAvLyBSZW1vdmUgdGhlIG9sZCBwYXJl
bnQgZm9sZGVyIGlmIGl0IGlzIG5vdyBlbXB0eS4KICAgICAgICAgaWYgKCFvbGRQYXJlbnQuY2hp
bGRyZW4ubGVuZ3RoKQogICAgICAgICAgICAgb2xkUGFyZW50LnBhcmVudC5yZW1vdmVDaGlsZChv
bGRQYXJlbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhcmVudFRyZWVFbGVtZW50Rm9yUmVw
cmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIF9wYXJlbnRU
cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9ncm91cGVkSW50b0ZvbGRlcnMpCiAgICAgICAgICAgICByZXR1
cm4gdGhpczsKQEAgLTI4NiwyNCArMjc5LDI0IEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBmb2xkZXIgPSBjcmVhdGVGb2xkZXJUcmVl
RWxlbWVudC5jYWxsKHRoaXMsIHNldHRpbmdzLnR5cGUsIHNldHRpbmdzLmZvbGRlckRpc3BsYXlO
YW1lKTsKICAgICAgICAgdGhpcy5fZm9sZGVyVHlwZU1hcC5zZXQoc2V0dGluZ3MudHlwZSwgZm9s
ZGVyKTsKICAgICAgICAgcmV0dXJuIGZvbGRlcjsKLSAgICB9LAorICAgIH0KIAotICAgIF9mb2xk
ZXJUcmVlRWxlbWVudEV4cGFuZGVkU3RhdGVDaGFuZ2U6IGZ1bmN0aW9uKGZvbGRlclRyZWVFbGVt
ZW50KQorICAgIF9mb2xkZXJUcmVlRWxlbWVudEV4cGFuZGVkU3RhdGVDaGFuZ2UoZm9sZGVyVHJl
ZUVsZW1lbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChmb2xkZXJUcmVlRWxlbWVu
dC5fX2V4cGFuZGVkU2V0dGluZyk7CiAgICAgICAgIGZvbGRlclRyZWVFbGVtZW50Ll9fZXhwYW5k
ZWRTZXR0aW5nLnZhbHVlID0gZm9sZGVyVHJlZUVsZW1lbnQuZXhwYW5kZWQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfc2V0dGluZ3NGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVz
ZW50ZWRPYmplY3QpCisgICAgX3NldHRpbmdzRm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50
ZWRPYmplY3QpCiAgICAgewogICAgICAgICBmb3IgKHZhciBzZXR0aW5ncyBvZiB0aGlzLl9mb2xk
ZXJpemVTZXR0aW5nc01hcC52YWx1ZXMoKSkgewogICAgICAgICAgICAgaWYgKHNldHRpbmdzLnZh
bGlkYXRlUmVwcmVzZW50ZWRPYmplY3RDYWxsYmFjayhyZXByZXNlbnRlZE9iamVjdCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHNldHRpbmdzOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBu
dWxsOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3VsZEdyb3VwSW50b0ZvbGRlcnM6IGZ1bmN0
aW9uKCkKKyAgICBfc2hvdWxkR3JvdXBJbnRvRm9sZGVycygpCiAgICAgewogICAgICAgICAvLyBB
bHJlYWR5IGdyb3VwZWQgaW50byBmb2xkZXJzLCBrZWVwIGl0IHRoYXQgd2F5LgogICAgICAgICBp
ZiAodGhpcy5fZ3JvdXBlZEludG9Gb2xkZXJzKQpAQCAtMzU4LDMgKzM1MSw4IEBAIFdlYkluc3Bl
Y3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5N
ZWRpdW1DaGlsZENvdW50VGhyZXNob2xkID0gNTsKK1dlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJl
ZUVsZW1lbnQuTGFyZ2VDaGlsZENvdW50VGhyZXNob2xkID0gMTU7CitXZWJJbnNwZWN0b3IuRm9s
ZGVyaXplZFRyZWVFbGVtZW50Lk51bWJlck9mTWVkaXVtQ2F0ZWdvcmllc1RocmVzaG9sZCA9IDI7
CitXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50Lk5ld0NoaWxkUXVldWVVcGRhdGVJ
bnRlcnZhbCA9IDUwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzCmluZGV4IDZiOTk5MzcuLmFl
MmJhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTEgKzIzLDEzIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkZyYW1l
VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihmcmFtZSwgcmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNw
ZWN0b3IuRnJhbWVUcmVlRWxlbWVudCA9IGNsYXNzIEZyYW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKGZyYW1l
LCByZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZyYW1l
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKTsKIAotICAgIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVFbGVtZW50LmNhbGwodGhpcywgZnJhbWUubWFpblJlc291cmNlLCByZXByZXNlbnRl
ZE9iamVjdCB8fCBmcmFtZSk7CisgICAgICAgIHN1cGVyKGZyYW1lLm1haW5SZXNvdXJjZSwgcmVw
cmVzZW50ZWRPYmplY3QgfHwgZnJhbWUpOwogCiAgICAgICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7
CiAKQEAgLTg0LDQwICs4NiwzNiBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudCA9IGZ1
bmN0aW9uKGZyYW1lLCByZXByZXNlbnRlZE9iamVjdCkKICAgICAgICAgfQogCiAgICAgICAgIHRo
aXMudXBkYXRlUGFyZW50U3RhdHVzKCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5GcmFtZVRy
ZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1l
bnQucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGZyYW1lKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mcmFtZTsKLSAgICB9LAorICAgIH0KIAotICAg
IGRlc2NlbmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50VHlwZURpZENoYW5nZTogZnVuY3Rpb24ocmVz
b3VyY2VUcmVlRWxlbWVudCwgb2xkVHlwZSkKKyAgICBkZXNjZW5kYW50UmVzb3VyY2VUcmVlRWxl
bWVudFR5cGVEaWRDaGFuZ2UocmVzb3VyY2VUcmVlRWxlbWVudCwgb2xkVHlwZSkKICAgICB7CiAg
ICAgICAgIC8vIENhbGxlZCBieSBkZXNjZW5kYW50IFJlc291cmNlVHJlZUVsZW1lbnRzLgogCiAg
ICAgICAgIC8vIEFkZCB0aGUgdHJlZSBlbGVtZW50IGFnYWluLCB3aGljaCB3aWxsIG1vdmUgaXQg
dG8gdGhlIG5ldyBsb2NhdGlvbgogICAgICAgICAvLyBiYXNlZCBvbiBzb3J0aW5nIGFuZCBwb3Nz
aWJsZSBmb2xkZXIgY2hhbmdlcy4KICAgICAgICAgdGhpcy5fYWRkVHJlZUVsZW1lbnQocmVzb3Vy
Y2VUcmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkZXNjZW5kYW50UmVzb3VyY2VU
cmVlRWxlbWVudE1haW5UaXRsZURpZENoYW5nZTogZnVuY3Rpb24ocmVzb3VyY2VUcmVlRWxlbWVu
dCwgb2xkTWFpblRpdGxlKQorICAgIGRlc2NlbmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50TWFpblRp
dGxlRGlkQ2hhbmdlKHJlc291cmNlVHJlZUVsZW1lbnQsIG9sZE1haW5UaXRsZSkKICAgICB7CiAg
ICAgICAgIC8vIENhbGxlZCBieSBkZXNjZW5kYW50IFJlc291cmNlVHJlZUVsZW1lbnRzLgogCiAg
ICAgICAgIC8vIEFkZCB0aGUgdHJlZSBlbGVtZW50IGFnYWluLCB3aGljaCB3aWxsIG1vdmUgaXQg
dG8gdGhlIG5ldyBsb2NhdGlvbgogICAgICAgICAvLyBiYXNlZCBvbiBzb3J0aW5nIGFuZCBwb3Nz
aWJsZSBmb2xkZXIgY2hhbmdlcy4KICAgICAgICAgdGhpcy5fYWRkVHJlZUVsZW1lbnQocmVzb3Vy
Y2VUcmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBPdmVycmlkZXMgZnJvbSBT
b3VyY2VDb2RlVHJlZUVsZW1lbnQuCiAKLSAgICB1cGRhdGVTb3VyY2VNYXBSZXNvdXJjZXM6IGZ1
bmN0aW9uKCkKKyAgICB1cGRhdGVTb3VyY2VNYXBSZXNvdXJjZXMoKQogICAgIHsKICAgICAgICAg
Ly8gRnJhbWVzIGhhbmRsZSB0aGVpciBvd24gU291cmNlTWFwUmVzb3VyY2VzLgogCkBAIC0xMzEs
OSArMTI5LDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
CiAgICAgICAgIGlmICh0aGlzLnJlc291cmNlICYmIHRoaXMucmVzb3VyY2Uuc291cmNlTWFwcy5s
ZW5ndGgpCiAgICAgICAgICAgICB0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIG9uYXR0YWNoKCkK
ICAgICB7CiAgICAgICAgIC8vIEltbWVkaWF0ZSBzdXBlcmNsYXNzZXMgYXJlIHNraXBwZWQsIHNp
bmNlIEZyYW1lcyBoYW5kbGUgdGhlaXIgb3duIFNvdXJjZU1hcFJlc291cmNlcy4KICAgICAgICAg
V2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0
aGlzKTsKQEAgLTE0Miw5ICsxNDAsOSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iubm90aWZpY2F0aW9ucy5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ob3RpZmljYXRpb24uUGFnZUFyY2hpdmVTdGFydGVk
LCB0aGlzLl9wYWdlQXJjaGl2ZVN0YXJ0ZWQsIHRoaXMpOwogICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZpY2F0
aW9uLlBhZ2VBcmNoaXZlRW5kZWQsIHRoaXMuX3BhZ2VBcmNoaXZlRW5kZWQsIHRoaXMpOwogICAg
ICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmRldGFjaDogZnVuY3Rpb24oKQorICAgIG9u
ZGV0YWNoKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50
LnByb3RvdHlwZS5vbmRldGFjaC5jYWxsKHRoaXMpOwogCkBAIC0xNTIsMTEgKzE1MCwxMSBAQCBX
ZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3Iubm90aWZpY2F0aW9ucy5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Ob3RpZmljYXRpb24uUGFnZUFyY2hpdmVTdGFydGVkLCB0aGlzLl9wYWdlQXJjaGl2ZVN0YXJ0
ZWQsIHRoaXMpOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm5vdGlmaWNhdGlvbnMucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZpY2F0aW9uLlBhZ2VBcmNoaXZlRW5kZWQs
IHRoaXMuX3BhZ2VBcmNoaXZlRW5kZWQsIHRoaXMpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBPdmVycmlkZXMgZnJvbSBGb2xkZXJpemVkVHJlZUVsZW1lbnQgKFByb3RlY3Rl
ZCkuCiAKLSAgICBjb21wYXJlQ2hpbGRUcmVlRWxlbWVudHM6IGZ1bmN0aW9uKGEsIGIpCisgICAg
Y29tcGFyZUNoaWxkVHJlZUVsZW1lbnRzKGEsIGIpCiAgICAgewogICAgICAgICBpZiAoYSA9PT0g
YikKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTY5LDE3ICsxNjcsMTcgQEAgV2ViSW5zcGVj
dG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghYUlzUmVz
b3VyY2UgJiYgIWJJc1Jlc291cmNlKSB7CiAgICAgICAgICAgICAvLyBXaGVuIGJvdGggY29tcG9u
ZW50cyBhcmUgbm90IHJlc291cmNlcyB0aGVuIGRlZmF1bHQgdG8gYmFzZSBjbGFzcyBjb21wYXJp
c29uLgotICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50
LnByb3RvdHlwZS5jb21wYXJlQ2hpbGRUcmVlRWxlbWVudHMuY2FsbCh0aGlzLCBhLCBiKTsKKyAg
ICAgICAgICAgIHJldHVybiBzdXBlci5jb21wYXJlQ2hpbGRUcmVlRWxlbWVudHMoYSwgYik7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBOb24tcmVzb3VyY2VzIHNob3VsZCBhcHBlYXIgYmVmb3Jl
IHRoZSByZXNvdXJjZXMuCiAgICAgICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGQgYmUgYSBiZXR0
ZXIgd2F5IHRvIGdyb3VwIHRoZSBlbGVtZW50cyBieSB0aGVpciB0eXBlLgogICAgICAgICByZXR1
cm4gYUlzUmVzb3VyY2UgPyAxIDogLTE7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBDYWxsZWQg
ZnJvbSBSZXNvdXJjZVRyZWVFbGVtZW50LgogCi0gICAgdXBkYXRlU3RhdHVzRm9yTWFpbkZyYW1l
OiBmdW5jdGlvbigpCisgICAgdXBkYXRlU3RhdHVzRm9yTWFpbkZyYW1lKCkKICAgICB7CiAgICAg
ICAgIGZ1bmN0aW9uIGxvYWRlZEltYWdlcygpCiAgICAgICAgIHsKQEAgLTIyMSwxMSArMjE5LDEx
IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICBsb2FkZWRJbWFnZXMuY2FsbCh0aGlzKTsKICAgICAgICAgICAgIH0uYmluZCh0aGlz
KSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8vIE92ZXJyaWRlcyBmcm9tIFRy
ZWVFbGVtZW50IChQcml2YXRlKS4KIAotICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBv
bnBvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCAmJiAh
dGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4pCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNTIs
MzQgKzI1MCwzNCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGZvciAodmFyIGZsb3dLZXkgaW4gZmxvd01hcCkKICAgICAgICAgICAgIHRoaXMu
YWRkQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdChmbG93TWFwW2Zsb3dLZXldKTsKIAotICAgIH0s
CisgICAgfQogCi0gICAgb25leHBhbmQ6IGZ1bmN0aW9uKCkKKyAgICBvbmV4cGFuZCgpCiAgICAg
ewogICAgICAgICB0aGlzLl9leHBhbmRlZFNldHRpbmcudmFsdWUgPSB0cnVlOwogICAgICAgICB0
aGlzLl9mcmFtZS5kb21UcmVlLnJlcXVlc3RDb250ZW50Rmxvd0xpc3QoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIG9uY29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICBvbmNvbGxhcHNlKCkKICAgICB7
CiAgICAgICAgIC8vIE9ubHkgc3RvcmUgdGhlIHNldHRpbmcgaWYgd2UgaGF2ZSBjaGlsZHJlbiwg
c2luY2Ugc2V0dGluZyBoYXNDaGlsZHJlbiB0byBmYWxzZSB3aWxsIGNhdXNlIGEgY29sbGFwc2Us
CiAgICAgICAgIC8vIGFuZCB3ZSBvbmx5IGNhcmUgYWJvdXQgdXNlciB0cmlnZ2VyZWQgY29sbGFw
c2VzLgogICAgICAgICBpZiAodGhpcy5oYXNDaGlsZHJlbikKICAgICAgICAgICAgIHRoaXMuX2V4
cGFuZGVkU2V0dGluZy52YWx1ZSA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJp
dmF0ZQogCi0gICAgX3VwZGF0ZUV4cGFuZGVkU2V0dGluZzogZnVuY3Rpb24oKQorICAgIF91cGRh
dGVFeHBhbmRlZFNldHRpbmcoKQogICAgIHsKICAgICAgICAgdGhpcy5fZXhwYW5kZWRTZXR0aW5n
ID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJmcmFtZS1leHBhbmRlZC0iICsgdGhpcy5fZnJh
bWUudXJsLmhhc2gsIHRoaXMuX2ZyYW1lLmlzTWFpbkZyYW1lKCkgPyB0cnVlIDogZmFsc2UpOwog
ICAgICAgICBpZiAodGhpcy5fZXhwYW5kZWRTZXR0aW5nLnZhbHVlKQogICAgICAgICAgICAgdGhp
cy5leHBhbmQoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5jb2xsYXBzZSgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX21haW5SZXNvdXJjZURpZENoYW5nZTogZnVuY3Rpb24oZXZl
bnQpCisgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRo
aXMuX3VwZGF0ZVJlc291cmNlKHRoaXMuX2ZyYW1lLm1haW5SZXNvdXJjZSk7CiAKQEAgLTI5NCw1
NiArMjkyLDU2IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZURvd25sb2FkQnV0dG9uKCk7CiAKICAgICAgICAgdGhp
cy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jl
c291cmNlV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZXNvdXJjZVdhc0FkZGVkKGV2
ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5hZGRSZXByZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRR
dWV1ZShldmVudC5kYXRhLnJlc291cmNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJj
ZVdhc1JlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZXNvdXJjZVdhc1JlbW92ZWQoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLnJlbW92ZUNoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3Qo
ZXZlbnQuZGF0YS5yZXNvdXJjZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2hpbGRGcmFtZVdh
c0FkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY2hpbGRGcmFtZVdhc0FkZGVkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdGhpcy5hZGRSZXByZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShl
dmVudC5kYXRhLmNoaWxkRnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NoaWxkRnJhbWVX
YXNSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY2hpbGRGcmFtZVdhc1JlbW92ZWQoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLnJlbW92ZUNoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3Qo
ZXZlbnQuZGF0YS5jaGlsZEZyYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jaGlsZENvbnRl
bnRGbG93V2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jaGlsZENvbnRlbnRGbG93V2Fz
QWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmFkZFJlcHJlc2VudGVkT2JqZWN0VG9O
ZXdDaGlsZFF1ZXVlKGV2ZW50LmRhdGEuZmxvdyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2hp
bGRDb250ZW50Rmxvd1dhc1JlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jaGlsZENvbnRl
bnRGbG93V2FzUmVtb3ZlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRG
b3JSZXByZXNlbnRlZE9iamVjdChldmVudC5kYXRhLmZsb3cpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3Jvb3RET01Ob2RlSW52YWxpZGF0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcm9vdERPTU5vZGVJ
bnZhbGlkYXRlZCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5leHBhbmRlZCkKICAgICAgICAg
ICAgIHRoaXMuX2ZyYW1lLmRvbVRyZWUucmVxdWVzdENvbnRlbnRGbG93TGlzdCgpOwotICAgIH0s
CisgICAgfQogCi0gICAgX3JlbG9hZFBhZ2VDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
cmVsb2FkUGFnZUNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICAvLyBJZ25vcmUgY2FjaGUg
d2hlbiB0aGUgc2hpZnQga2V5IGlzIHByZXNzZWQuCiAgICAgICAgIFBhZ2VBZ2VudC5yZWxvYWQo
ZXZlbnQuZGF0YS5zaGlmdEtleSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZG93bmxvYWRCdXR0
b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZG93bmxvYWRCdXR0b25DbGlja2VkKGV2
ZW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmFyY2hpdmVNYWluRnJhbWUoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF91cGRhdGVEb3dubG9hZEJ1dHRvbjogZnVuY3Rpb24oKQorICAg
IF91cGRhdGVEb3dubG9hZEJ1dHRvbigpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLl9mcmFtZS5pc01haW5GcmFtZSgpKTsKICAgICAgICAgaWYgKCF0aGlzLl9kb3dubG9hZEJ1
dHRvbikKQEAgLTM2MCwxNSArMzU4LDE1IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2Rvd25sb2FkQnV0dG9u
LmVuYWJsZWQgPSBXZWJJbnNwZWN0b3IuY2FuQXJjaGl2ZU1haW5GcmFtZSgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3BhZ2VBcmNoaXZlU3RhcnRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Bh
Z2VBcmNoaXZlU3RhcnRlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Rvd25sb2FkaW5n
UGFnZSA9IHRydWU7CiAgICAgICAgIHRoaXMuX3VwZGF0ZURvd25sb2FkQnV0dG9uKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfcGFnZUFyY2hpdmVFbmRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X3BhZ2VBcmNoaXZlRW5kZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9kb3dubG9hZGlu
Z1BhZ2UgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fdXBkYXRlRG93bmxvYWRCdXR0b24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVy
YWxUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0dlbmVyYWxUcmVlRWxlbWVudC5qcwppbmRleCAwMzIwZjE0Li4zOTQ1NzdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVHJl
ZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvR2VuZXJhbFRyZWVFbGVtZW50LmpzCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVs
ZW1lbnQgPSBmdW5jdGlvbihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVk
T2JqZWN0LCBoYXNDaGlsZHJlbikKK1dlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQgPSBj
bGFzcyBHZW5lcmFsVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQK
IHsKLSAgICBUcmVlRWxlbWVudC5jYWxsKHRoaXMsICIiLCByZXByZXNlbnRlZE9iamVjdCwgaGFz
Q2hpbGRyZW4pOworICAgIGNvbnN0cnVjdG9yKGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwg
cmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKQorICAgIHsKKyAgICAgICAgc3VwZXIoIiIs
IHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbik7CiAKICAgICAgICAgdGhpcy5jbGFzc05h
bWVzID0gY2xhc3NOYW1lczsKIApAQCAtMzMsNjMgKzM1LDQ0IEBAIFdlYkluc3BlY3Rvci5HZW5l
cmFsVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJl
cHJlc2VuCiAgICAgICAgIHRoaXMuX21haW5UaXRsZSA9IHRpdGxlIHx8ICIiOwogICAgICAgICB0
aGlzLl9zdWJ0aXRsZSA9IHN1YnRpdGxlIHx8ICIiOwogICAgICAgICB0aGlzLl9zdGF0dXMgPSAi
IjsKLX07Ci0KLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUg
PSAiaXRlbSI7Ci1XZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LkRpc2Nsb3N1cmVCdXR0
b25TdHlsZUNsYXNzTmFtZSA9ICJkaXNjbG9zdXJlLWJ1dHRvbiI7Ci1XZWJJbnNwZWN0b3IuR2Vu
ZXJhbFRyZWVFbGVtZW50Lkljb25FbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiaWNvbiI7Ci1XZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlN0YXR1c0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9
ICJzdGF0dXMiOwotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5UaXRsZXNFbGVtZW50
U3R5bGVDbGFzc05hbWUgPSAidGl0bGVzIjsKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1l
bnQuTWFpblRpdGxlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInRpdGxlIjsKLVdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQuU3VidGl0bGVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAic3Vi
dGl0bGUiOwotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5Ob1N1YnRpdGxlU3R5bGVD
bGFzc05hbWUgPSAibm8tc3VidGl0bGUiOwotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5TbWFsbFN0eWxlQ2xhc3NOYW1lID0gInNtYWxsIjsKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJl
ZUVsZW1lbnQuVHdvTGluZVN0eWxlQ2xhc3NOYW1lID0gInR3by1saW5lIjsKLQotV2ViSW5zcGVj
dG9yLkdlbmVyYWxUcmVlRWxlbWVudC5FdmVudCA9IHsKLSAgICBNYWluVGl0bGVEaWRDaGFuZ2U6
ICJnZW5lcmFsLXRyZWUtZWxlbWVudC1tYWluLXRpdGxlLWRpZC1jaGFuZ2UiCi19OwotCi1XZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFRyZWVF
bGVtZW50LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVt
ZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9saXN0SXRlbU5vZGU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgaWNvbkVsZW1lbnQoKQogICAgIHsKICAgICAgICAgdGhpcy5fY3Jl
YXRlRWxlbWVudHNJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gdGhpcy5faWNvbkVsZW1lbnQ7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdGl0bGVzRWxlbWVudCgpCiAgICAgewogICAgICAg
ICB0aGlzLl9jcmVhdGVFbGVtZW50c0lmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybiB0aGlzLl90
aXRsZXNFbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1haW5UaXRsZUVsZW1lbnQo
KQogICAgIHsKICAgICAgICAgdGhpcy5fY3JlYXRlRWxlbWVudHNJZk5lZWRlZCgpOwogICAgICAg
ICByZXR1cm4gdGhpcy5fbWFpblRpdGxlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzdWJ0aXRsZUVsZW1lbnQoKQogICAgIHsKICAgICAgICAgdGhpcy5fY3JlYXRlRWxlbWVudHNJ
Zk5lZWRlZCgpOwogICAgICAgICB0aGlzLl9jcmVhdGVTdWJ0aXRsZUVsZW1lbnRJZk5lZWRlZCgp
OwogICAgICAgICByZXR1cm4gdGhpcy5fc3VidGl0bGVFbGVtZW50OwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGNsYXNzTmFtZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNz
TmFtZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY2xhc3NOYW1lcyh4KQogICAgIHsKQEAg
LTEwNyw5ICs5MCw5IEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jbGFzc05hbWVzLmxl
bmd0aDsgKytpKQogICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3Qu
YWRkKHRoaXMuX2NsYXNzTmFtZXNbaV0pOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBhZGRDbGFzc05hbWU6IGZ1bmN0aW9uKGNsYXNzTmFtZSkKKyAgICBhZGRDbGFzc05hbWUoY2xh
c3NOYW1lKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2NsYXNzTmFtZXMuY29udGFpbnMoY2xh
c3NOYW1lKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExOCw5ICsxMDEsOSBAQCBXZWJJbnNw
ZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhp
cy5fbGlzdEl0ZW1Ob2RlKQogICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlz
dC5hZGQoY2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUNsYXNzTmFtZTog
ZnVuY3Rpb24oY2xhc3NOYW1lKQorICAgIHJlbW92ZUNsYXNzTmFtZShjbGFzc05hbWUpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuX2NsYXNzTmFtZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEyOSwxMiArMTEyLDEyIEBAIFdlYkluc3BlY3Rvci5HZW5l
cmFsVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLl9saXN0SXRl
bU5vZGUpCiAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZShj
bGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNtYWxsKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9zbWFsbDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzbWFsbCh4
KQogICAgIHsKQEAgLTE0NiwxMiArMTI5LDEyIEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRo
aXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5HZW5lcmFsVHJl
ZUVsZW1lbnQuU21hbGxTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0K
IAogICAgIGdldCB0d29MaW5lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90d29MaW5l
OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHR3b0xpbmUoeCkKICAgICB7CkBAIC0xNjMsMTIg
KzE0NiwxMiBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xh
c3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlR3b0xpbmVTdHls
ZUNsYXNzTmFtZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIGdldCBtYWluVGl0
bGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21haW5UaXRsZTsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCBtYWluVGl0bGUoeCkKICAgICB7CkBAIC0xNzYsMjQgKzE1OSwyNCBAQCBX
ZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fdXBkYXRlVGl0bGVFbGVtZW50cygpOwogICAgICAgICB0aGlzLmRpZENoYW5nZSgpOwogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuR2VuZXJhbFRy
ZWVFbGVtZW50LkV2ZW50Lk1haW5UaXRsZURpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgc3VidGl0bGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N1YnRpdGxlOwot
ICAgIH0sCisgICAgfQogCiAgICAgc2V0IHN1YnRpdGxlKHgpCiAgICAgewogICAgICAgICB0aGlz
Ll9zdWJ0aXRsZSA9IHggfHwgIiI7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlRWxlbWVudHMo
KTsKICAgICAgICAgdGhpcy5kaWRDaGFuZ2UoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBz
dGF0dXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1czsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCBzdGF0dXMoeCkKICAgICB7CkBAIC0yMDcsMzYgKzE5MCwzNiBAQCBXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlz
Ll9zdGF0dXMgPSB4IHx8ICIiOwogICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXNFbGVtZW50KCk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZmlsdGVyYWJsZURhdGEoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHt0ZXh0OiBbdGhpcy5tYWluVGl0bGUsIHRoaXMuc3VidGl0bGVdfTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCB0b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXBIYW5kbGVkU2VwYXJhdGVseTsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCB0b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkoeCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3Rvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IHggfHwgZmFsc2U7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICAvLyBPdmVycmlkZXMgZnJvbSBUcmVlRWxlbWVudCAoUHJpdmF0ZSkKIAotICAg
IGlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGlz
RXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQpCiAgICAgewogICAgICAgICByZXR1
cm4gZXZlbnQudGFyZ2V0ID09PSB0aGlzLl9kaXNjbG9zdXJlQnV0dG9uOwotICAgIH0sCisgICAg
fQogCi0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICBvbmF0dGFjaCgpCiAgICAgewogICAg
ICAgICB0aGlzLl9jcmVhdGVFbGVtZW50c0lmTmVlZGVkKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0
ZVRpdGxlRWxlbWVudHMoKTsKIAotICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lKTsKKyAg
ICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoIml0ZW0iKTsKIAogICAgICAg
ICBpZiAodGhpcy5fY2xhc3NOYW1lcykgewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLl9jbGFzc05hbWVzLmxlbmd0aDsgKytpKQpAQCAtMjY0LDI1ICsyNDcsMjUgQEAgV2Vi
SW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXNFbGVtZW50KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBvbmRldGFjaDogZnVuY3Rpb24oKQorICAgIG9uZGV0YWNoKCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLl9ib3VuZENvbnRleHRNZW51RXZlbnRIYW5kbGVyKSB7CiAgICAgICAgICAgICB0aGlz
Ll9saXN0SXRlbU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9i
b3VuZENvbnRleHRNZW51RXZlbnRIYW5kbGVyLCB0cnVlKTsKICAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl9ib3VuZENvbnRleHRNZW51RXZlbnRIYW5kbGVyOwogICAgICAgICB9Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBvbnJldmVhbDogZnVuY3Rpb24oKQorICAgIG9ucmV2ZWFsKCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUpCiAgICAgICAgICAgICB0aGlzLl9saXN0SXRl
bU5vZGUuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcm90ZWN0ZWQKIAotICAgIGNhbGxGaXJzdEFuY2VzdG9yRnVuY3Rpb246IGZ1bmN0aW9u
KGZ1bmN0aW9uTmFtZSwgYXJncykKKyAgICBjYWxsRmlyc3RBbmNlc3RvckZ1bmN0aW9uKGZ1bmN0
aW9uTmFtZSwgYXJncykKICAgICB7CiAgICAgICAgIC8vIENhbGwgdGhlIGZpcnN0IGFuY2VzdG9y
IHRoYXQgaW1wbGVtZW50cyBhIGZ1bmN0aW9uIG5hbWVkIGZ1bmN0aW9uTmFtZSAoaWYgYW55KS4K
ICAgICAgICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5wYXJlbnQ7CkBAIC0yOTQsMTEgKzI3Nywx
MSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnQ7CiAgICAgICAgIH0KLSAg
ICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jcmVhdGVFbGVtZW50c0lmTmVl
ZGVkOiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZUVsZW1lbnRzSWZOZWVkZWQoKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX2NyZWF0ZWRFbGVtZW50cykKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTMyMSw5ICszMDQsOSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fdGl0bGVzRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9tYWlu
VGl0bGVFbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9jcmVhdGVkRWxlbWVudHMgPSB0cnVlOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2NyZWF0ZVN1YnRpdGxlRWxlbWVudElmTmVlZGVkOiBmdW5j
dGlvbigpCisgICAgX2NyZWF0ZVN1YnRpdGxlRWxlbWVudElmTmVlZGVkKCkKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl9zdWJ0aXRsZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0z
MzEsOSArMzE0LDkgQEAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX3N1YnRpdGxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKICAgICAgICAgdGhpcy5fc3VidGl0bGVFbGVtZW50LmNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuU3VidGl0bGVFbGVtZW50U3R5bGVDbGFzc05h
bWU7CiAgICAgICAgIHRoaXMuX3RpdGxlc0VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc3VidGl0
bGVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVUaXRsZUVsZW1lbnRzOiBm
dW5jdGlvbigpCisgICAgX3VwZGF0ZVRpdGxlRWxlbWVudHMoKQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl9jcmVhdGVkRWxlbWVudHMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNzcsOSAr
MzYwLDkgQEAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLnRpdGxl
ID0gc3VidGl0bGVUZXh0OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRl
U3RhdHVzRWxlbWVudDogZnVuY3Rpb24oKQorICAgIF91cGRhdGVTdGF0dXNFbGVtZW50KCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fc3RhdHVzRWxlbWVudCkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTM5NCwzICszNzcsMTcgQEAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9zdGF0dXNFbGVtZW50LnRleHRDb250ZW50
ID0gdGhpcy5fc3RhdHVzOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVs
ZW1lbnQuRGlzY2xvc3VyZUJ1dHRvblN0eWxlQ2xhc3NOYW1lID0gImRpc2Nsb3N1cmUtYnV0dG9u
IjsKK1dlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuSWNvbkVsZW1lbnRTdHlsZUNsYXNz
TmFtZSA9ICJpY29uIjsKK1dlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuU3RhdHVzRWxl
bWVudFN0eWxlQ2xhc3NOYW1lID0gInN0YXR1cyI7CitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVF
bGVtZW50LlRpdGxlc0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJ0aXRsZXMiOworV2ViSW5zcGVj
dG9yLkdlbmVyYWxUcmVlRWxlbWVudC5NYWluVGl0bGVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAi
dGl0bGUiOworV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5TdWJ0aXRsZUVsZW1lbnRT
dHlsZUNsYXNzTmFtZSA9ICJzdWJ0aXRsZSI7CitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVt
ZW50Lk5vU3VidGl0bGVTdHlsZUNsYXNzTmFtZSA9ICJuby1zdWJ0aXRsZSI7CitXZWJJbnNwZWN0
b3IuR2VuZXJhbFRyZWVFbGVtZW50LlNtYWxsU3R5bGVDbGFzc05hbWUgPSAic21hbGwiOworV2Vi
SW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5Ud29MaW5lU3R5bGVDbGFzc05hbWUgPSAidHdv
LWxpbmUiOworCitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LkV2ZW50ID0geworICAg
IE1haW5UaXRsZURpZENoYW5nZTogImdlbmVyYWwtdHJlZS1lbGVtZW50LW1haW4tdGl0bGUtZGlk
LWNoYW5nZSIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVs
ZW1lbnQuanMKaW5kZXggZDY0MjQzMC4uMGIyMDViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVt
ZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0lu
ZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudC5qcwpAQCAtMjMsMjUgKzIzLDIzIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkluZGV4
ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKGhvc3QpCitXZWJJbnNwZWN0b3Iu
SW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50ID0gY2xhc3MgSW5kZXhlZERhdGFiYXNlSG9z
dFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudAogewot
ICAgIFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0
b3IuRm9sZGVyVHJlZUVsZW1lbnQuRm9sZGVySWNvblN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0
b3IuZGlzcGxheU5hbWVGb3JIb3N0KGhvc3QpLCBudWxsKTsKKyAgICBjb25zdHJ1Y3Rvcihob3N0
KQorICAgIHsKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50LkZv
bGRlckljb25TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9ySG9zdCho
b3N0KSwgbnVsbCk7CiAKICAgICAgICAgdGhpcy5faG9zdCA9IGhvc3Q7CiAKICAgICAgICAgdGhp
cy5oYXNDaGlsZHJlbiA9IHRydWU7Ci19OwotCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNl
SG9zdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkluZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYklu
c3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IG5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5kaXNwbGF5TmFtZUZvckhvc3QodGhpcy5faG9zdCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgY2F0ZWdvcnlOYW1lKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJl
ZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9J
bmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQuanMKaW5kZXggZWViZDFj
YS4uY2E4MTI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleFRyZWVFbGVtZW50LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRh
YmFzZU9iamVjdFN0b3JlSW5kZXhUcmVlRWxlbWVudC5qcwpAQCAtMjMsMjIgKzIzLDE4IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLklu
ZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXhUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKG9iamVj
dFN0b3JlSW5kZXgpCitXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRl
eFRyZWVFbGVtZW50ID0gY2xhc3MgSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleFRyZWVF
bGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAoreworICAgIGNv
bnN0cnVjdG9yKG9iamVjdFN0b3JlSW5kZXgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dChvYmplY3RTdG9yZUluZGV4IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFz
ZU9iamVjdFN0b3JlSW5kZXgpOwogCi0gICAgdGhpcy5fb2JqZWN0U3RvcmVJbmRleCA9IG9iamVj
dFN0b3JlSW5kZXg7CisgICAgICAgIHN1cGVyKCJkYXRhYmFzZS10YWJsZS1pY29uIiwgb2JqZWN0
U3RvcmVJbmRleC5uYW1lLCBudWxsLCBvYmplY3RTdG9yZUluZGV4LCBmYWxzZSk7CiAKLSAgICBX
ZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLklu
ZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQuSWNvblN0eWxlQ2xhc3NOYW1lLCBv
YmplY3RTdG9yZUluZGV4Lm5hbWUsIG51bGwsIG9iamVjdFN0b3JlSW5kZXgsIGZhbHNlKTsKKyAg
ICAgICAgdGhpcy5fb2JqZWN0U3RvcmVJbmRleCA9IG9iamVjdFN0b3JlSW5kZXg7CiAKICAgICAg
ICAgdGhpcy5zbWFsbCA9IHRydWU7Ci19OwotCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNl
T2JqZWN0U3RvcmVJbmRleFRyZWVFbGVtZW50Lkljb25TdHlsZUNsYXNzTmFtZSA9ICJkYXRhYmFz
ZS10YWJsZS1pY29uIjsKLQotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3Jl
SW5kZXhUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQsCi0gICAgX19w
cm90b19fOiBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRh
YmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQuanMKaW5kZXggOGY5YzdjMS4uNzk5YjliZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhl
ZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZVRyZWVF
bGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDM4ICsyMywzNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZVRyZWVF
bGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0U3RvcmUpCitXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFi
YXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudCA9IGNsYXNzIEluZGV4ZWREYXRhYmFzZU9iamVjdFN0
b3JlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7
CisgICAgY29uc3RydWN0b3Iob2JqZWN0U3RvcmUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChvYmplY3RTdG9yZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VP
YmplY3RTdG9yZSk7CiAKLSAgICB0aGlzLl9vYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlOworICAg
ICAgICBzdXBlcihXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxl
bWVudC5JY29uU3R5bGVDbGFzc05hbWUsIG9iamVjdFN0b3JlLm5hbWUsIG51bGwsIG9iamVjdFN0
b3JlLCAhIXRoaXMuX29iamVjdFN0b3JlLmluZGV4ZXMubGVuZ3RoKTsKIAotICAgIFdlYkluc3Bl
Y3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuSW5kZXhlZERh
dGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5JY29uU3R5bGVDbGFzc05hbWUsIG9iamVjdFN0
b3JlLm5hbWUsIG51bGwsIG9iamVjdFN0b3JlLCAhIXRoaXMuX29iamVjdFN0b3JlLmluZGV4ZXMu
bGVuZ3RoKTsKKyAgICAgICAgdGhpcy5fb2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZTsKIAogICAg
ICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJh
c2VPYmplY3RTdG9yZVRyZWVFbGVtZW50Lkljb25TdHlsZUNsYXNzTmFtZSA9ICJkYXRhYmFzZS10
YWJsZS1pY29uIjsKLQotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYklu
c3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IG9iamVjdFN0b3JlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9vYmplY3RTdG9yZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIE92ZXJyaWRlcyBmcm9tIFRy
ZWVFbGVtZW50IChQcm90ZWN0ZWQpCiAKLSAgICBvbmNvbGxhcHNlOiBmdW5jdGlvbigpCisgICAg
b25jb2xsYXBzZSgpCiAgICAgewogICAgICAgICB0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbiA9
IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbnBvcHVsYXRlOiBmdW5jdGlvbigpCisgICAg
b25wb3B1bGF0ZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggJiYg
IXRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERh
dGFiYXNlVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VUcmVlRWxlbWVudC5qcwppbmRleCAwZjdiMjY3Li5hOTU4
YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9JbmRleGVkRGF0YWJhc2VUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VUcmVlRWxlbWVudC5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywz
NyArMjMsMzQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihpbmRleGVk
RGF0YWJhc2UpCitXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQgPSBjbGFz
cyBJbmRleGVkRGF0YWJhc2VUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFs
VHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihpbmRleGVkRGF0YWJhc2UpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChpbmRleGVkRGF0YWJhc2UgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuSW5kZXhlZERhdGFiYXNlKTsKIAogICAgICAgICB0aGlzLl9pbmRleGVkRGF0YWJhc2Ug
PSBpbmRleGVkRGF0YWJhc2U7CiAKLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50
LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50Lkljb25T
dHlsZUNsYXNzTmFtZSwgaW5kZXhlZERhdGFiYXNlLm5hbWUsIG51bGwsIGluZGV4ZWREYXRhYmFz
ZSwgISF0aGlzLl9pbmRleGVkRGF0YWJhc2Uub2JqZWN0U3RvcmVzLmxlbmd0aCk7CisgICAgICAg
IHN1cGVyKCJkYXRhYmFzZS1pY29uIiwgaW5kZXhlZERhdGFiYXNlLm5hbWUsIG51bGwsIGluZGV4
ZWREYXRhYmFzZSwgISF0aGlzLl9pbmRleGVkRGF0YWJhc2Uub2JqZWN0U3RvcmVzLmxlbmd0aCk7
CiAKICAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7Ci19OwotCi1XZWJJbnNwZWN0b3IuSW5kZXhl
ZERhdGFiYXNlVHJlZUVsZW1lbnQuSWNvblN0eWxlQ2xhc3NOYW1lID0gImRhdGFiYXNlLWljb24i
OwotCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1l
bnQsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgaW5kZXhlZERhdGFiYXNlKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pbmRleGVkRGF0YWJhc2U7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICAvLyBPdmVycmlkZXMgZnJvbSBUcmVlRWxlbWVudCAoUHJvdGVjdGVkKQogCi0g
ICAgb25jb2xsYXBzZTogZnVuY3Rpb24oKQorICAgIG9uY29sbGFwc2UoKQogICAgIHsKICAgICAg
ICAgdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0g
ICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQorICAgIG9ucG9wdWxhdGUoKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoICYmICF0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJl
bikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY2LDUgKzYzLDMgQEAgV2ViSW5zcGVjdG9yLklu
ZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
YXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZVRy
ZWVFbGVtZW50KG9iamVjdFN0b3JlKSk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkluZGV4
ZWREYXRhYmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
R2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUNvbnNvbGVN
ZXNzYWdlSW1wbC5qcwppbmRleCA4NzYwNGI1Li4zNGMyZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lDb25zb2xlTWVzc2FnZUlt
cGwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVn
YWN5Q29uc29sZU1lc3NhZ2VJbXBsLmpzCkBAIC0xMzksMTAgKzEzOSwxMCBAQCBXZWJJbnNwZWN0
b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRo
aXMuX3Nob3VsZER1bXBTdGFja1RyYWNlKCkpIHsKICAgICAgICAgICAgIHZhciBvbCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CiAgICAgICAgICAgICBvbC5jbGFzc05hbWUgPSAib3V0
bGluZS1kaXNjbG9zdXJlIjsKLSAgICAgICAgICAgIHZhciB0cmVlT3V0bGluZSA9IG5ldyBUcmVl
T3V0bGluZShvbCk7CisgICAgICAgICAgICB2YXIgdHJlZU91dGxpbmUgPSBuZXcgV2ViSW5zcGVj
dG9yLlRyZWVPdXRsaW5lKG9sKTsKIAogICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9m
b3JtYXR0ZWRNZXNzYWdlOwotICAgICAgICAgICAgdmFyIHJvb3QgPSBuZXcgVHJlZUVsZW1lbnQo
Y29udGVudCwgbnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICB2YXIgcm9vdCA9IG5ldyBXZWJJbnNw
ZWN0b3IuVHJlZUVsZW1lbnQoY29udGVudCwgbnVsbCwgdHJ1ZSk7CiAgICAgICAgICAgICBjb250
ZW50LnRyZWVFbGVtZW50Rm9yVGVzdCA9IHJvb3Q7CiAgICAgICAgICAgICB0cmVlT3V0bGluZS5h
cHBlbmRDaGlsZChyb290KTsKICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5UcmFjZSkKQEAgLTYyMCw3ICs2
MjAsNyBAQCBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHVybEVsZW1lbnQpOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1l
bnQoY29udGVudCk7CisgICAgICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVj
dG9yLlRyZWVFbGVtZW50KGNvbnRlbnQpOwogICAgICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQu
YXBwZW5kQ2hpbGQodHJlZUVsZW1lbnQpOwogICAgICAgICB9CiAgICAgfSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ1RyZWVFbGVtZW50
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nVHJlZUVs
ZW1lbnQuanMKaW5kZXggYTczZDBkYi4uN2ZmZDhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nVHJlZUVsZW1lbnQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nVHJlZUVsZW1lbnQuanMK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDIxICsyMywxOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5Mb2dUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2Jq
ZWN0KQorV2ViSW5zcGVjdG9yLkxvZ1RyZWVFbGVtZW50ID0gY2xhc3MgTG9nVHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0
b3IocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Mb2dPYmplY3QpOwogCi0gICAg
V2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5M
b2dUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25z
b2xlIiksIHJlcHJlc2VudGVkT2JqZWN0LnN0YXJ0RGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoKSwg
cmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKKyAgICAgICAgc3VwZXIoImxvZy1pY29uIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIiksIHJlcHJlc2VudGVkT2JqZWN0LnN0YXJ0RGF0
ZS50b0xvY2FsZVRpbWVTdHJpbmcoKSwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKIAogICAg
ICAgICB0aGlzLl9sb2dPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdDsKIAogICAgICAgICB0aGlz
LnNtYWxsID0gdHJ1ZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Mb2dUcmVlRWxlbWVudC5TdHlsZUNs
YXNzTmFtZSA9ICJsb2ctaWNvbiI7Ci0KLVdlYkluc3BlY3Rvci5Mb2dUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Mb2dUcmVlRWxlbWVudCwK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNDYsNSArNDMsMyBAQCBXZWJJbnNwZWN0b3Iu
TG9nVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fbG9nT2Jq
ZWN0OwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5Mb2dUcmVlRWxlbWVudC5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRleCA1NGY1YzY1Li5hYjBlZTVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9O
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKQEAgLTE1Nyw3ICsxNTcs
NyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIE5hdmlnYXRp
b25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbgogICAgICAgICAgICAgY29udGVudFRyZWVPdXRs
aW5lRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLkNvbnRlbnRUcmVlT3V0bGluZUVsZW1lbnRIaWRkZW5TdHlsZUNsYXNzTmFtZSk7CiAgICAg
ICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGVudFRyZWVPdXRsaW5lRWxl
bWVudCk7CiAKLSAgICAgICAgdmFyIGNvbnRlbnRUcmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGlu
ZShjb250ZW50VHJlZU91dGxpbmVFbGVtZW50KTsKKyAgICAgICAgdmFyIGNvbnRlbnRUcmVlT3V0
bGluZSA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUoY29udGVudFRyZWVPdXRsaW5lRWxl
bWVudCk7CiAgICAgICAgIGNvbnRlbnRUcmVlT3V0bGluZS5hbGxvd3NSZXBlYXRTZWxlY3Rpb24g
PSB0cnVlOwogCiAgICAgICAgIGlmICghc3VwcHJlc3NGaWx0ZXJpbmcpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVBcnJh
eUluZGV4VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9PYmplY3RUcmVlQXJyYXlJbmRleFRyZWVFbGVtZW50LmpzCmluZGV4IDJlOWVmZmYu
LjY4OTVkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL09iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVl
RWxlbWVudC5qcwpAQCAtMjMsMTEgKzIzLDEzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVBcnJheUluZGV4VHJlZUVs
ZW1lbnQgPSBmdW5jdGlvbihwcm9wZXJ0eSwgcHJvcGVydHlQYXRoKQorV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVlQXJyYXlJbmRl
eFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1l
bnQKIHsKLSAgICBjb25zb2xlLmFzc2VydChwcm9wZXJ0eS5pc0luZGV4UHJvcGVydHkoKSwgIkFy
cmF5SW5kZXhUcmVlRWxlbWVudCBleHBlY3RzIG51bWVyaWMgcHJvcGVydHkgbmFtZXMiKTsKKyAg
ICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eSwgcHJvcGVydHlQYXRoKQorICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQocHJvcGVydHkuaXNJbmRleFByb3BlcnR5KCksICJPYmplY3RUcmVlQXJyYXlJ
bmRleFRyZWVFbGVtZW50IGV4cGVjdHMgbnVtZXJpYyBwcm9wZXJ0eSBuYW1lcyIpOwogCi0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBwcm9wZXJ0
eSwgcHJvcGVydHlQYXRoLCBwcm9wZXJ0eSk7CisgICAgICAgIHN1cGVyKHByb3BlcnR5LCBwcm9w
ZXJ0eVBhdGgsIHByb3BlcnR5KTsKIAogICAgICAgICB0aGlzLm1haW5UaXRsZSA9IHRoaXMuX3Rp
dGxlRnJhZ21lbnQoKTsKICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoIm9iamVjdC10cmVlLXBy
b3BlcnR5Iik7CkBAIC0zNSwxMSArMzcsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUFycmF5
SW5kZXhUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHByb3BlcnR5LCBwcm9wZXJ0eVBhdGgpCiAKICAg
ICAgICAgaWYgKCF0aGlzLnByb3BlcnR5Lmhhc1ZhbHVlKCkpCiAgICAgICAgICAgICB0aGlzLmFk
ZENsYXNzTmFtZSgiYWNjZXNzb3IiKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlQXJy
YXlJbmRleFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLk9iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBX
ZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUsCisgICAgfQog
CiAgICAgLy8gUHJvdGVjdGVkCiAKQEAgLTQ4LDcgKzQ2LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLm1h
aW5UaXRsZSA9IHRoaXMuX3RpdGxlRnJhZ21lbnQoKTsKIAogICAgICAgICB0aGlzLnJlbW92ZUNs
YXNzTmFtZSgiYWNjZXNzb3IiKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2Jq
ZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuanMKaW5kZXggZjQwZWJmOS4u
NTVhNGZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmpzCkBA
IC0yMyw0NSArMjMsNDMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJl
cHJlc2VudGVkT2JqZWN0LCBwcm9wZXJ0eVBhdGgsIHByb3BlcnR5KQorV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVCYXNlVHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVj
dG9yKHJlcHJlc2VudGVkT2JqZWN0LCBwcm9wZXJ0eVBhdGgsIHByb3BlcnR5KQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAgICBjb25zb2xl
LmFzc2VydChwcm9wZXJ0eVBhdGggaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRo
KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXByb3BlcnR5IHx8IHByb3BlcnR5IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvcik7CiAKKyAgICAgICAgc3VwZXIobnVs
bCwgbnVsbCwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKKwogICAgICAgICB0aGlz
Ll9wcm9wZXJ0eSA9IHByb3BlcnR5OwogICAgICAgICB0aGlzLl9wcm9wZXJ0eVBhdGggPSBwcm9w
ZXJ0eVBhdGg7CiAKLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhp
cywgbnVsbCwgbnVsbCwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKLQogICAgICAg
ICB0aGlzLnNtYWxsID0gdHJ1ZTsKICAgICAgICAgdGhpcy50b2dnbGVPbkNsaWNrID0gdHJ1ZTsK
ICAgICAgICAgdGhpcy5zZWxlY3RhYmxlID0gZmFsc2U7CiAgICAgICAgIHRoaXMudG9vbHRpcEhh
bmRsZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFz
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
R2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAog
ICAgIGdldCBwcm9wZXJ0eSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJvcGVydHlQYXRoKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9wcm9wZXJ0eVBhdGg7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90
ZWN0ZWQKIAogICAgIG9uY29udGV4dG1lbnUoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9j
b250ZXh0TWVudUhhbmRsZXIoZXZlbnQpOwotICAgIH0sCisgICAgfQogCiAgICAgcmVzb2x2ZWRW
YWx1ZSgpCiAgICAgewpAQCAtNzEsNyArNjksNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJh
c2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9wcm9wZXJ0eS5o
YXNWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5LnZhbHVlOwogICAg
ICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIHJlc29sdmVkVmFsdWVQcm9w
ZXJ0eVBhdGgoKQogICAgIHsKQEAgLTgxLDE5ICs3OSwxOSBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0
VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9wcm9w
ZXJ0eS5oYXNWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5UGF0aC5h
cHBlbmRQcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5fcHJvcGVydHkudmFsdWUsIHRoaXMuX3Byb3Bl
cnR5LCBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlR5cGUuVmFsdWUpOwogICAgICAgICByZXR1
cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIHRoaXNQcm9wZXJ0eVBhdGgoKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcHJvcGVydHkpOwogICAgICAgICByZXR1cm4g
dGhpcy5fcHJvcGVydHlQYXRoLmFwcGVuZFByb3BlcnR5RGVzY3JpcHRvcihudWxsLCB0aGlzLl9w
cm9wZXJ0eSwgdGhpcy5wcm9wZXJ0eVBhdGhUeXBlKCkpOwotICAgIH0sCisgICAgfQogCiAgICAg
aGFkRXJyb3IoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcHJvcGVydHkp
OwogICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHkud2FzVGhyb3duIHx8IHRoaXMuX2dldHRl
ckhhZEVycm9yOwotICAgIH0sCisgICAgfQogCiAgICAgcHJvcGVydHlQYXRoVHlwZSgpCiAgICAg
ewpAQCAtMTA1LDcgKzEwMyw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX3Byb3BlcnR5Lmhhc1NldHRlcigp
KQogICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5TZXR0
ZXI7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlR5cGUuVmFsdWU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBwcm9wZXJ0eVBhdGhTdHJpbmcocHJvcGVydHlQYXRoKQog
ICAgIHsKQEAgLTExMyw3ICsxMTEsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJVbmFibGUgdG8gZGV0ZXJtaW5lIHBhdGggdG8gcHJvcGVydHkgZnJvbSByb290Iik7
CiAKICAgICAgICAgcmV0dXJuIHByb3BlcnR5UGF0aC5kaXNwbGF5UGF0aCh0aGlzLnByb3BlcnR5
UGF0aFR5cGUoKSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBjcmVhdGVJbnRlcmFjdGl2ZUdldHRl
ckVsZW1lbnQoKQogICAgIHsKQEAgLTEzNCw3ICsxMzIsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0
VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7
CiAKICAgICAgICAgcmV0dXJuIGdldHRlckVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBj
cmVhdGVSZWFkT25seUljb25FbGVtZW50KCkKICAgICB7CkBAIC0xNDIsNyArMTQwLDcgQEAgV2Vi
SW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICByZWFkT25seUVsZW1lbnQuY2xhc3NOYW1lID0gInJlYWQtb25seSI7CiAgICAgICAgIHJlYWRP
bmx5RWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVhZCBvbmx5Iik7CiAg
ICAgICAgIHJldHVybiByZWFkT25seUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQ
cml2YXRlCiAKQEAgLTE2MCw3ICsxNTgsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucXVpY2tD
b25zb2xlLnByb21wdC5wdXNoSGlzdG9yeUl0ZW0odGV4dCk7CiAKICAgICAgICAgV2ViSW5zcGVj
dG9yLmNvbnNvbGVMb2dWaWV3Q29udHJvbGxlci5hcHBlbmRJbW1lZGlhdGVFeGVjdXRpb25XaXRo
UmVzdWx0KHRleHQsIHJlc29sdmVkVmFsdWUpOwotICAgIH0sCisgICAgfQogCiAgICAgX2NvbnRl
eHRNZW51SGFuZGxlcihldmVudCkKICAgICB7CkBAIC0xODQsNyArMTgyLDcgQEAgV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlm
ICghY29udGV4dE1lbnUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGV4dE1lbnUuc2hvdygp
OwotICAgIH0sCisgICAgfQogCiAgICAgX2FwcGVuZE1lbnVzSXRlbXNGb3JPYmplY3QoY29udGV4
dE1lbnUsIHJlc29sdmVkVmFsdWUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVl
TWFwRW50cnlUcmVlRWxlbWVudC5qcwppbmRleCBmYjkyZDhmLi5kNmJhNDdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlTWFw
RW50cnlUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudC5qcwpAQCAtMjMsNDIgKzIz
LDQwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0LCBw
cm9wZXJ0eVBhdGgpCitXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQg
PSBjbGFzcyBPYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0b3Iob2JqZWN0LCBw
cm9wZXJ0eVBhdGgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKIAotICAgIHRoaXMuX29iamVjdCA9IG9i
amVjdDsKLQogICAgICAgICAvLyBUcmVhdCB0aGUgc2FtZSBhcyBhbiBhcnJheS1pbmRleCBqdXN0
IHdpdGggZGlmZmVyZW50IHN0cmluZ3MgYW5kIHdpZHRocy4KLSAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHRoaXMuX29iamVjdCwgcHJvcGVydHlQ
YXRoKTsKKyAgICAgICAgc3VwZXIodGhpcy5fb2JqZWN0LCBwcm9wZXJ0eVBhdGgpOworCisgICAg
ICAgIHRoaXMuX29iamVjdCA9IG9iamVjdDsKIAogICAgICAgICB0aGlzLm1haW5UaXRsZSA9IHRo
aXMuX3RpdGxlRnJhZ21lbnQoKTsKICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoIm9iamVjdC10
cmVlLWFycmF5LWluZGV4Iik7CiAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJvYmplY3QtdHJl
ZS1tYXAtZW50cnkiKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50cnlUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5PYmpl
Y3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5P
YmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJs
aWMKIAogICAgIGdldCBvYmplY3QoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX29iamVj
dDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCiAgICAgcmVzb2x2ZWRWYWx1
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0OwotICAgIH0sCisgICAgfQog
CiAgICAgcHJvcGVydHlQYXRoVHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlByb3BlcnR5UGF0aC5UeXBlLlZhbHVlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJp
dmF0ZQogCkBAIC04MywyMyArODEsMjEgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRy
eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi0KLVdlYkluc3BlY3Rvci5P
YmplY3RUcmVlTWFwS2V5VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5UGF0
aCkKK1dlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwS2V5VHJlZUVsZW1lbnQgPSBjbGFzcyBPYmpl
Y3RUcmVlTWFwS2V5VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1h
cEVudHJ5VHJlZUVsZW1lbnQKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5
VHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBvYmplY3QsIHByb3BlcnR5UGF0aCk7Ci0gICAgdGhpcy5h
ZGRDbGFzc05hbWUoImtleSIpOwotfTsKKyAgICBjb25zdHJ1Y3RvcihvYmplY3QsIHByb3BlcnR5
UGF0aCkKKyAgICB7CisgICAgICAgIHN1cGVyKG9iamVjdCwgcHJvcGVydHlQYXRoKTsKIAotV2Vi
SW5zcGVjdG9yLk9iamVjdFRyZWVNYXBLZXlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwS2V5VHJlZUVsZW1lbnQsCi0g
ICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQu
cHJvdG90eXBlLAorICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgia2V5Iik7CisgICAgfQogICAg
IAogICAgIC8vIFByb3RlY3RlZAogCiAgICAgZGlzcGxheVByb3BlcnR5TmFtZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJrZXkiKTsKLSAgICB9LAorICAg
IH0KIAogICAgIHJlc29sdmVkVmFsdWVQcm9wZXJ0eVBhdGgoKQogICAgIHsKQEAgLTEwNywyNCAr
MTAzLDIzIEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwS2V5VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgIH0KIH07CiAKLQotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBWYWx1ZVRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eVBhdGgsIGtleSkKK1dlYkluc3Bl
Y3Rvci5PYmplY3RUcmVlTWFwVmFsdWVUcmVlRWxlbWVudCA9IGNsYXNzIE9iamVjdFRyZWVNYXBW
YWx1ZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRy
ZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0b3Iob2JqZWN0LCBwcm9wZXJ0eVBhdGgsIGtleSkK
ICAgICB7CisgICAgICAgIHN1cGVyKG9iamVjdCwgcHJvcGVydHlQYXRoKTsKKwogICAgICAgICB0
aGlzLl9rZXkgPSBrZXk7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVF
bGVtZW50LmNhbGwodGhpcywgb2JqZWN0LCBwcm9wZXJ0eVBhdGgpOwotICAgIHRoaXMuYWRkQ2xh
c3NOYW1lKCJ2YWx1ZSIpOwotfTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBWYWx1ZVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVNYXBWYWx1ZVRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5h
ZGRDbGFzc05hbWUoInZhbHVlIik7CisgICAgfQogICAgIAogICAgIC8vIFByb3RlY3RlZAogCiAg
ICAgZGlzcGxheVByb3BlcnR5TmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJ2YWx1ZSIpOwotICAgIH0sCisgICAgfQogCiAgICAgcmVzb2x2ZWRWYWx1
ZVByb3BlcnR5UGF0aCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlUHJvcGVy
dHlUcmVlRWxlbWVudC5qcwppbmRleCAzNTE2YjZjLi44Yzc2MmJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlUHJvcGVydHlU
cmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5qcwpAQCAtMjMsMTMgKzIzLDE1IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocHJvcGVydHksIHByb3Bl
cnR5UGF0aCwgbW9kZSwgcHJvdG90eXBlTmFtZSkKK1dlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJv
cGVydHlUcmVlRWxlbWVudCA9IGNsYXNzIE9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQKIHsKKyAgICBjb25z
dHJ1Y3Rvcihwcm9wZXJ0eSwgcHJvcGVydHlQYXRoLCBtb2RlLCBwcm90b3R5cGVOYW1lKQorICAg
IHsKKyAgICAgICAgc3VwZXIocHJvcGVydHksIHByb3BlcnR5UGF0aCwgcHJvcGVydHkpOworCiAg
ICAgICAgIHRoaXMuX21vZGUgPSBtb2RlIHx8IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5N
b2RlLlByb3BlcnRpZXM7CiAgICAgICAgIHRoaXMuX3Byb3RvdHlwZU5hbWUgPSBwcm90b3R5cGVO
YW1lOwogCi0gICAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuY2FsbCh0
aGlzLCBwcm9wZXJ0eSwgcHJvcGVydHlQYXRoLCBwcm9wZXJ0eSk7Ci0KICAgICAgICAgdGhpcy5t
YWluVGl0bGUgPSB0aGlzLl90aXRsZUZyYWdtZW50KCk7CiAgICAgICAgIHRoaXMuYWRkQ2xhc3NO
YW1lKCJvYmplY3QtdHJlZS1wcm9wZXJ0eSIpOwogCkBAIC00NywzMCArNDksMjYgQEAgV2ViSW5z
cGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocHJvcGVydHks
IHByb3BlcnR5UGF0aCwgbW8KIAogICAgICAgICB0aGlzLl91cGRhdGVUb29sdGlwcygpOwogICAg
ICAgICB0aGlzLl91cGRhdGVIYXNDaGlsZHJlbigpOwotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9f
XzogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAg
IH0KICAgICAKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIG9ucG9wdWxhdGUoKQogICAgIHsKICAg
ICAgICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4oKTsKLSAgICB9LAorICAgIH0KIAogICAgIG9uZXhw
YW5kKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9wcmV2aWV3VmlldykKICAgICAgICAgICAg
IHRoaXMuX3ByZXZpZXdWaWV3LnNob3dUaXRsZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgb25j
b2xsYXBzZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fcHJldmlld1ZpZXcpCiAgICAgICAg
ICAgICB0aGlzLl9wcmV2aWV3Vmlldy5zaG93UHJldmlldygpOwotICAgIH0sCisgICAgfQogCiAg
ICAgaW52b2tlZEdldHRlcigpCiAgICAgewpAQCAtODUsNyArODMsNyBAQCBXZWJJbnNwZWN0b3Iu
T2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
LnJlbW92ZUNsYXNzTmFtZSgiYWNjZXNzb3IiKTsKIAogICAgICAgICB0aGlzLl91cGRhdGVIYXND
aGlsZHJlbigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCkBAIC05OSw3ICs5
Nyw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gIXdhc1Rocm93biAmJiB2YWx1
ZUhhc0NoaWxkcmVuOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLmhhc0NoaWxkcmVu
ID0gIXdhc1Rocm93biAmJiB2YWx1ZUhhc0NoaWxkcmVuICYmICh0aGlzLnByb3BlcnR5Lm5hbWUg
PT09ICJfX3Byb3RvX18iIHx8IHRoaXMuX2Fsd2F5c0Rpc3BsYXlBc1Byb3BlcnR5KCkpOwotICAg
IH0sCisgICAgfQogCiAgICAgX3VwZGF0ZVRvb2x0aXBzKCkKICAgICB7CkBAIC0xMTMsNyArMTEx
LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGF0dHJpYnV0ZXMucHVzaCgid3JpdGFibGUiKTsKIAogICAgICAg
ICB0aGlzLmljb25FbGVtZW50LnRpdGxlID0gYXR0cmlidXRlcy5qb2luKCIgIik7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBfdGl0bGVGcmFnbWVudCgpCiAgICAgewpAQCAtMTI0LDcgKzEyMiw3IEBA
IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlVGl0bGVQcm9wZXJ0eVN0eWxlKCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUaXRsZUFQSVN0eWxl
KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfY3JlYXRlVGl0bGVQcm90b3R5cGUoKQogICAgIHsK
QEAgLTEzNiw3ICsxMzQsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBuYW1lRWxlbWVudC50ZXh0Q29udGVudCA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiJXMgUHJvdG90eXBlIikuZm9ybWF0KHRoaXMuX3Nhbml0aXpl
ZFByb3RvdHlwZVN0cmluZyh0aGlzLnByb3BlcnR5LnZhbHVlKSk7CiAgICAgICAgIG5hbWVFbGVt
ZW50LnRpdGxlID0gdGhpcy5wcm9wZXJ0eVBhdGhTdHJpbmcodGhpcy50aGlzUHJvcGVydHlQYXRo
KCkpOwogICAgICAgICByZXR1cm4gbmFtZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBf
Y3JlYXRlVGl0bGVQcm9wZXJ0eVN0eWxlKCkKICAgICB7CkBAIC0xODQsNyArMTgyLDcgQEAgV2Vi
SW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKG5hbWVFbGVtZW50KTsKICAgICAgICAgY29udGFp
bmVyLmFwcGVuZENoaWxkKHZhbHVlT3JHZXR0ZXJFbGVtZW50KTsKICAgICAgICAgcmV0dXJuIGNv
bnRhaW5lcjsKLSAgICB9LAorICAgIH0KIAogICAgIF9jcmVhdGVUaXRsZUFQSVN0eWxlKCkKICAg
ICB7CkBAIC0yMjAsNyArMjE4LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBjb250
YWluZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfYWx3YXlzRGlzcGxheUFzUHJvcGVydHkoKQog
ICAgIHsKQEAgLTIzNywxMiArMjM1LDEyIEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfZnVuY3Rpb25Qcm9w
ZXJ0eVN0cmluZygpCiAgICAgewogICAgICAgICByZXR1cm4gImZ1bmN0aW9uIiArIHRoaXMuX2Z1
bmN0aW9uUGFyYW1ldGVyU3RyaW5nKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfZnVuY3Rpb25Q
YXJhbWV0ZXJTdHJpbmcoKQogICAgIHsKQEAgLTI4Myw3ICsyODEsNyBAQCBXZWJJbnNwZWN0b3Iu
T2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHZh
ciBtYXRjaCA9IHJlc29sdmVkVmFsdWUuZGVzY3JpcHRpb24ubWF0Y2goL15mdW5jdGlvbi4qPyhc
KFteKV0rP1wpKS8pOwogICAgICAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6ICIoKSI7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBfc2FuaXRpemVkUHJvdG90eXBlU3RyaW5nKHZhbHVlKQogICAg
IHsKQEAgLTI5Niw3ICsyOTQsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuICJSZWdFeHAiOwogCiAg
ICAgICAgIHJldHVybiB2YWx1ZS5kZXNjcmlwdGlvbi5yZXBsYWNlKC9Qcm90b3R5cGUkLywgIiIp
OwotICAgIH0sCisgICAgfQogCiAgICAgX3VwZGF0ZUNoaWxkcmVuKCkKICAgICB7CkBAIC0zMTAs
MjAgKzMwOCwyMCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZS5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3JzKHRoaXMuX3VwZGF0ZUNoaWxkcmVuSW50ZXJuYWwuYmluZCh0aGlzLCB0aGlzLl91
cGRhdGVQcm9wZXJ0aWVzLCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuTW9kZS5BUEkpKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZS5nZXREaXNwbGF5YWJsZVBy
b3BlcnR5RGVzY3JpcHRvcnModGhpcy5fdXBkYXRlQ2hpbGRyZW5JbnRlcm5hbC5iaW5kKHRoaXMs
IHRoaXMuX3VwZGF0ZVByb3BlcnRpZXMsIHRoaXMuX21vZGUpKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIF91cGRhdGVDaGlsZHJlbkludGVybmFsKGhhbmRsZXIsIG1vZGUsIGxpc3QpCiAgICAgewog
ICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgaWYgKCFsaXN0KSB7Ci0g
ICAgICAgICAgICB2YXIgZXJyb3JNZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RU
cmVlVmlldy5lbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ291bGQg
bm90IGZldGNoIHByb3BlcnRpZXMuIE9iamVjdCBtYXkgbm8gbG9uZ2VyIGV4aXN0LiIpKTsKLSAg
ICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFRyZWVFbGVtZW50KGVycm9yTWVzc2FnZUVs
ZW1lbnQsIG51bGwsIGZhbHNlKSk7CisgICAgICAgICAgICB2YXIgZXJyb3JNZXNzYWdlRWxlbWVu
dCA9IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5jcmVhdGVFbXB0eU1lc3NhZ2VFbGVtZW50
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ291bGQgbm90IGZldGNoIHByb3BlcnRpZXMuIE9iamVj
dCBtYXkgbm8gbG9uZ2VyIGV4aXN0LiIpKTsKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQo
bmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudChlcnJvck1lc3NhZ2VFbGVtZW50LCBudWxsLCBm
YWxzZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaGFuZGxl
ci5jYWxsKHRoaXMsIGxpc3QsIHRoaXMucmVzb2x2ZWRWYWx1ZVByb3BlcnR5UGF0aCgpLCBtb2Rl
KTsKLSAgICB9LAorICAgIH0KIAogICAgIF91cGRhdGVFbnRyaWVzKGVudHJpZXMsIHByb3BlcnR5
UGF0aCwgbW9kZSkKICAgICB7CkBAIC0zMzYsOCArMzM0LDggQEAgV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICghdGhpcy5jaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciBlbXB0eU1l
c3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LmVtcHR5TWVzc2FnZUVs
ZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBFbnRyaWVzLiIpKTsKLSAgICAgICAgICAg
IHRoaXMuYXBwZW5kQ2hpbGQobmV3IFRyZWVFbGVtZW50KGVtcHR5TWVzc2FnZUVsZW1lbnQsIG51
bGwsIGZhbHNlKSk7CisgICAgICAgICAgICB2YXIgZW1wdHlNZXNzYWdlRWxlbWVudCA9IFdlYklu
c3BlY3Rvci5PYmplY3RUcmVlVmlldy5jcmVhdGVFbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTm8gRW50cmllcy4iKSk7CisgICAgICAgICAgICB0aGlzLmFwcGVuZENo
aWxkKG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoZW1wdHlNZXNzYWdlRWxlbWVudCwgbnVs
bCwgZmFsc2UpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNob3cgdGhlIHByb3RvdHlwZSBz
byB1c2VycyBjYW4gc2VlIHRoZSBBUEkuCkBAIC0zNDYsMTEgKzM0NCwxMSBAQCBXZWJJbnNwZWN0
b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgaWYgKHByb3BlcnR5RGVzY3JpcHRvcikKICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZENo
aWxkKG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQocHJvcGVy
dHlEZXNjcmlwdG9yLCBwcm9wZXJ0eVBhdGgsIG1vZGUpKTsKICAgICAgICAgfS5iaW5kKHRoaXMp
KTsKLSAgICB9LAorICAgIH0KIAogICAgIF91cGRhdGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMsIHBy
b3BlcnR5UGF0aCwgbW9kZSkKICAgICB7Ci0gICAgICAgIHByb3BlcnRpZXMuc29ydChXZWJJbnNw
ZWN0b3IuT2JqZWN0VHJlZVZpZXcuQ29tcGFyZVByb3BlcnR5RGVzY3JpcHRvcnMpOworICAgICAg
ICBwcm9wZXJ0aWVzLnNvcnQoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LmNvbXBhcmVQcm9w
ZXJ0eURlc2NyaXB0b3JzKTsKIAogICAgICAgICB2YXIgcmVzb2x2ZWRWYWx1ZSA9IHRoaXMucmVz
b2x2ZWRWYWx1ZSgpOwogICAgICAgICB2YXIgaXNBcnJheSA9IHJlc29sdmVkVmFsdWUuaXNBcnJh
eSgpOwpAQCAtMzgwLDggKzM3OCw4IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXRoaXMu
Y2hpbGRyZW4ubGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YXIgZW1wdHlNZXNzYWdlRWxlbWVudCA9
IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5lbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTm8gUHJvcGVydGllcy4iKSk7Ci0gICAgICAgICAgICB0aGlzLmFwcGVu
ZENoaWxkKG5ldyBUcmVlRWxlbWVudChlbXB0eU1lc3NhZ2VFbGVtZW50LCBudWxsLCBmYWxzZSkp
OworICAgICAgICAgICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZVZpZXcuY3JlYXRlRW1wdHlNZXNzYWdlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIk5vIFByb3BlcnRpZXMuIikpOworICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChuZXcg
V2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50KGVtcHR5TWVzc2FnZUVsZW1lbnQsIG51bGwsIGZhbHNl
KSk7CiAgICAgICAgIH0KICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVNldEluZGV4VHJlZUVsZW1lbnQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlU2V0
SW5kZXhUcmVlRWxlbWVudC5qcwppbmRleCA3ODVkYTYwLi40MzMzNDEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlU2V0SW5k
ZXhUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9PYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudC5qcwpAQCAtMjMsNDEgKzIzLDM5
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVTZXRJbmRleFRyZWVFbGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9w
ZXJ0eVBhdGgpCitXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVNldEluZGV4VHJlZUVsZW1lbnQgPSBj
bGFzcyBPYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3RUcmVlQmFzZVRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0b3Iob2JqZWN0LCBwcm9w
ZXJ0eVBhdGgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3QgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKIAotICAgIHRoaXMuX29iamVjdCA9IG9iamVj
dDsKLQogICAgICAgICAvLyBUcmVhdCB0aGUgc2FtZSBhcyBhbiBhcnJheS1pbmRleCBqdXN0IHdp
dGggZGlmZmVyZW50IHN0cmluZ3MgYW5kIHdpZHRocy4KLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0
VHJlZUJhc2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHRoaXMuX29iamVjdCwgcHJvcGVydHlQYXRo
KTsKKyAgICAgICAgc3VwZXIodGhpcy5fb2JqZWN0LCBwcm9wZXJ0eVBhdGgpOworCisgICAgICAg
IHRoaXMuX29iamVjdCA9IG9iamVjdDsKIAogICAgICAgICB0aGlzLm1haW5UaXRsZSA9IHRoaXMu
X3RpdGxlRnJhZ21lbnQoKTsKICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoIm9iamVjdC10cmVl
LWFycmF5LWluZGV4Iik7Ci19OwotCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVNldEluZGV4VHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZVNldEluZGV4VHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
T2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgb2JqZWN0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vYmpl
Y3Q7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIHJlc29sdmVkVmFs
dWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdDsKLSAgICB9LAorICAgIH0K
IAogICAgIHJlc29sdmVkVmFsdWVQcm9wZXJ0eVBhdGgoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMucHJvcGVydHlQYXRoLmFwcGVuZFNldEluZGV4KHRoaXMuX29iamVjdCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanMKaW5kZXggMGQ1
NTNkMC4uYjNiNjEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanMKQEAgLTY0LDcgKzY0LDcgQEAg
V2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3ID0gZnVuY3Rpb24ob2JqZWN0LCBtb2RlLCBwcm9w
ZXJ0eVBhdGgsIGZvcmNlRXhwYW5kaW4KIAogICAgIHRoaXMuX291dGxpbmVFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKICAgICB0aGlzLl9vdXRsaW5lRWxlbWVudC5jbGFz
c05hbWUgPSAib2JqZWN0LXRyZWUtb3V0bGluZSI7Ci0gICAgdGhpcy5fb3V0bGluZSA9IG5ldyBU
cmVlT3V0bGluZSh0aGlzLl9vdXRsaW5lRWxlbWVudCk7CisgICAgdGhpcy5fb3V0bGluZSA9IG5l
dyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUodGhpcy5fb3V0bGluZUVsZW1lbnQpOwogICAgIHRo
aXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fb3V0bGluZUVsZW1lbnQpOwogCiAgICAgLy8g
RklYTUU6IFN1cHBvcnQgZWRpdGFibGUgT2JqZWN0VHJlZXMuCkBAIC0yMzMsNyArMjMzLDcgQEAg
V2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAo
IWxpc3QpIHsKICAgICAgICAgICAgIHZhciBlcnJvck1lc3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVWaWV3LmVtcHR5TWVzc2FnZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDb3VsZCBub3QgZmV0Y2ggcHJvcGVydGllcy4gT2JqZWN0IG1heSBubyBsb25nZXIgZXhp
c3QuIikpOwotICAgICAgICAgICAgdGhpcy5fb3V0bGluZS5hcHBlbmRDaGlsZChuZXcgVHJlZUVs
ZW1lbnQoZXJyb3JNZXNzYWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKKyAgICAgICAgICAgIHRo
aXMuX291dGxpbmUuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudChlcnJv
ck1lc3NhZ2VFbGVtZW50LCBudWxsLCBmYWxzZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTI1Miw3ICsyNTIsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghdGhpcy5fb3V0bGluZS5jaGlsZHJlbi5sZW5n
dGgpIHsKICAgICAgICAgICAgIHZhciBlbXB0eU1lc3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVWaWV3LmVtcHR5TWVzc2FnZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJObyBFbnRyaWVzLiIpKTsKLSAgICAgICAgICAgIHRoaXMuX291dGxpbmUuYXBwZW5kQ2hpbGQo
bmV3IFRyZWVFbGVtZW50KGVtcHR5TWVzc2FnZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CisgICAg
ICAgICAgICB0aGlzLl9vdXRsaW5lLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVs
ZW1lbnQoZW1wdHlNZXNzYWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIFNob3cgdGhlIHByb3RvdHlwZSBzbyB1c2VycyBjYW4gc2VlIHRoZSBBUEkuCkBA
IC0yODQsNyArMjg0LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9
IHsKIAogICAgICAgICBpZiAoIXRoaXMuX291dGxpbmUuY2hpbGRyZW4ubGVuZ3RoKSB7CiAgICAg
ICAgICAgICB2YXIgZW1wdHlNZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RUcmVl
Vmlldy5lbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gUHJvcGVy
dGllcy4iKSk7Ci0gICAgICAgICAgICB0aGlzLl9vdXRsaW5lLmFwcGVuZENoaWxkKG5ldyBUcmVl
RWxlbWVudChlbXB0eU1lc3NhZ2VFbGVtZW50LCBudWxsLCBmYWxzZSkpOworICAgICAgICAgICAg
dGhpcy5fb3V0bGluZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50KGVt
cHR5TWVzc2FnZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CiAgICAgICAgIH0KICAgICB9LAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9m
aWxlTm9kZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUHJvZmlsZU5vZGVUcmVlRWxlbWVudC5qcwppbmRleCAxMWFiMjQ5Li4yMmJiZjk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Q
cm9maWxlTm9kZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Byb2ZpbGVOb2RlVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMTA1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTMgKzIzLDEyIEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
LlByb2ZpbGVOb2RlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihwcm9maWxlTm9kZSwgZGVsZWdhdGUp
CitXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVUcmVlRWxlbWVudCA9IGNsYXNzIFByb2ZpbGVOb2Rl
VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7Cisg
ICAgY29uc3RydWN0b3IocHJvZmlsZU5vZGUsIGRlbGVnYXRlKQogICAgIHsKICAgICAgICAgY29u
c29sZS5hc3NlcnQocHJvZmlsZU5vZGUpOwogCi0gICAgdGhpcy5fcHJvZmlsZU5vZGUgPSBwcm9m
aWxlTm9kZTsKLSAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7Ci0KICAgICAg
ICAgdmFyIHRpdGxlID0gcHJvZmlsZU5vZGUuZnVuY3Rpb25OYW1lOwogICAgICAgICB2YXIgc3Vi
dGl0bGUgPSAiIjsKIApAQCAtNDcsNyArNDYsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVU
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKHByb2ZpbGVOb2RlLCBkZWxlZ2F0ZSkKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCi0gICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX3Byb2Zp
bGVOb2RlLnNvdXJjZUNvZGVMb2NhdGlvbjsKKyAgICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlv
biA9IHByb2ZpbGVOb2RlLnNvdXJjZUNvZGVMb2NhdGlvbjsKICAgICAgICAgaWYgKHNvdXJjZUNv
ZGVMb2NhdGlvbikgewogICAgICAgICAgICAgc3VidGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7CiAgICAgICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24ucG9wdWxhdGVMaXZl
RGlzcGxheUxvY2F0aW9uU3RyaW5nKHN1YnRpdGxlLCAidGV4dENvbnRlbnQiKTsKQEAgLTU1LDcg
KzU0LDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihw
cm9maWxlTm9kZSwgZGVsZWdhdGUpCiAKICAgICAgICAgdmFyIGNsYXNzTmFtZTsKIAotICAgIHN3
aXRjaCAodGhpcy5fcHJvZmlsZU5vZGUudHlwZSkgeworICAgICAgICBzd2l0Y2ggKHByb2ZpbGVO
b2RlLnR5cGUpIHsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZS5G
dW5jdGlvbjoKICAgICAgICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DYWxsRnJhbWVU
cmVlRWxlbWVudC5GdW5jdGlvbkljb25TdHlsZUNsYXNzTmFtZTsKICAgICAgICAgICAgIGlmICgh
c291cmNlQ29kZUxvY2F0aW9uKQpAQCAtNzUsMzUgKzc0LDM0IEBAIFdlYkluc3BlY3Rvci5Qcm9m
aWxlTm9kZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocHJvZmlsZU5vZGUsIGRlbGVnYXRlKQogCiAg
ICAgICAgIHZhciBoYXNDaGlsZHJlbiA9ICEhcHJvZmlsZU5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7
CiAKLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgW2NsYXNz
TmFtZV0sIHRpdGxlLCBzdWJ0aXRsZSwgcHJvZmlsZU5vZGUsIGhhc0NoaWxkcmVuKTsKKyAgICAg
ICAgc3VwZXIoW2NsYXNzTmFtZV0sIHRpdGxlLCBzdWJ0aXRsZSwgcHJvZmlsZU5vZGUsIGhhc0No
aWxkcmVuKTsKKworICAgICAgICB0aGlzLl9wcm9maWxlTm9kZSA9IHByb2ZpbGVOb2RlOworICAg
ICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CiAKICAgICAgICAgdGhpcy5z
bWFsbCA9IHRydWU7CiAgICAgICAgIHRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuID0gdHJ1ZTsK
IAogICAgICAgICBpZiAoc291cmNlQ29kZUxvY2F0aW9uKQogICAgICAgICAgICAgdGhpcy50b29s
dGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwotfTsKLQotV2ViSW5zcGVjdG9yLlByb2ZpbGVO
b2RlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuUHJvZmlsZU5vZGVUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAg
ICAgZ2V0IHByb2ZpbGVOb2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9maWxl
Tm9kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmaWx0ZXJhYmxlRGF0YSgpCiAgICAgewog
ICAgICAgICB2YXIgdXJsID0gdGhpcy5fcHJvZmlsZU5vZGUuc291cmNlQ29kZUxvY2F0aW9uID8g
dGhpcy5fcHJvZmlsZU5vZGUuc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUudXJsIDogIiI7
CiAgICAgICAgIHJldHVybiB7dGV4dDogW3RoaXMubWFpblRpdGxlLCB1cmwgfHwgIiJdfTsKLSAg
ICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgb25hdHRhY2g6IGZ1bmN0aW9u
KCkKKyAgICBvbmF0dGFjaCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRy
ZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOwogCkBAIC0xMTQsOSArMTEy
LDkgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
CiAgICAgICAgIHZhciB0b29sdGlwUHJlZml4ID0gdGhpcy5tYWluVGl0bGUgKyAiXG4iOwogICAg
ICAgICB0aGlzLl9wcm9maWxlTm9kZS5zb3VyY2VDb2RlTG9jYXRpb24ucG9wdWxhdGVMaXZlRGlz
cGxheUxvY2F0aW9uVG9vbHRpcCh0aGlzLmVsZW1lbnQsIHRvb2x0aXBQcmVmaXgpOwotICAgIH0s
CisgICAgfQogCi0gICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQorICAgIG9ucG9wdWxhdGUoKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuIHx8ICF0aGlzLnNob3VsZFJlZnJl
c2hDaGlsZHJlbikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb3BlcnRpZXNTZWN0aW9uLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvcGVydGllc1NlY3Rpb24u
anMKaW5kZXggNTcxNDcyYi4uMzQ3N2NjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvcGVydGllc1NlY3Rpb24uanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvcGVydGllc1NlY3Rpb24uanMK
QEAgLTI4LDcgKzI4LDcgQEAgV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9uID0gZnVuY3Rp
b24odGl0bGUsIHN1YnRpdGxlKQogICAgIHRoaXMucHJvcGVydGllc0VsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJvbCIpOwogICAgIHRoaXMucHJvcGVydGllc0VsZW1lbnQuY2xhc3NO
YW1lID0gInByb3BlcnRpZXMgcHJvcGVydGllcy10cmVlIjsKICAgICB0aGlzLnByb3BlcnRpZXNF
bGVtZW50LnRhYkluZGV4ID0gMDsKLSAgICB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZSA9IG5l
dyBUcmVlT3V0bGluZSh0aGlzLnByb3BlcnRpZXNFbGVtZW50KTsKKyAgICB0aGlzLnByb3BlcnRp
ZXNUcmVlT3V0bGluZSA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUodGhpcy5wcm9wZXJ0
aWVzRWxlbWVudCk7CiAgICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuc2VjdGlvbiA9IHRo
aXM7CiAKICAgICBXZWJJbnNwZWN0b3IuU2VjdGlvbi5jYWxsKHRoaXMsIHRpdGxlLCBzdWJ0aXRs
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9SZXNvdXJjZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUmVzb3VyY2VUcmVlRWxlbWVudC5qcwppbmRleCBiODA5OGE5Li5lODg4ZTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9S
ZXNvdXJjZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIwICsyMywyMCBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVzb3VyY2UsIHJlcHJlc2VudGVkT2JqZWN0KQor
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQgPSBjbGFzcyBSZXNvdXJjZVRyZWVFbGVt
ZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUcmVlRWxlbWVudAoreworICAgIGNv
bnN0cnVjdG9yKHJlc291cmNlLCByZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKTsK
IAotICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCByZXNv
dXJjZSwgW1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5SZXNvdXJjZUljb25TdHlsZUNsYXNzTmFt
ZSwgcmVzb3VyY2UudHlwZV0sICIiLCAiIiwgcmVwcmVzZW50ZWRPYmplY3QgfHwgcmVzb3VyY2Us
IGZhbHNlKTsKKyAgICAgICAgc3VwZXIocmVzb3VyY2UsIFsicmVzb3VyY2UiLCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5SZXNvdXJjZUljb25TdHlsZUNsYXNzTmFtZSwgcmVzb3Vy
Y2UudHlwZV0sICIiLCAiIiwgcmVwcmVzZW50ZWRPYmplY3QgfHwgcmVzb3VyY2UsIGZhbHNlKTsK
IAogICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZShyZXNvdXJjZSk7Ci19OworICAgIH0KIAot
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUgPSAicmVzb3Vy
Y2UiOwotV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuUmVzb3VyY2VJY29uU3R5bGVD
bGFzc05hbWUgPSAicmVzb3VyY2UtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxl
bWVudC5GYWlsZWRTdHlsZUNsYXNzTmFtZSA9ICJmYWlsZWQiOworICAgIC8vIFN0YXRpYwogCi1X
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5jb21wYXJlUmVzb3VyY2VUcmVlRWxlbWVu
dHMgPSBmdW5jdGlvbihhLCBiKQorICAgIHN0YXRpYyBjb21wYXJlUmVzb3VyY2VUcmVlRWxlbWVu
dHMoYSwgYikKICAgICB7CiAgICAgICAgIC8vIENvbXBhcmUgYnkgdHlwZSBmaXJzdCB0byBrZWVw
IHJlc291cmNlcyBncm91cGVkIGJ5IHR5cGUgd2hlbiBub3Qgc29ydGVkIGludG8gZm9sZGVycy4K
ICAgICAgICAgdmFyIGNvbXBhcmlzb25SZXN1bHQgPSBhLnJlc291cmNlLnR5cGUubG9jYWxlQ29t
cGFyZShiLnJlc291cmNlLnR5cGUpOwpAQCAtNTcsOSArNTcsOSBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlRWxlbWVudC5jb21wYXJlUmVzb3VyY2VUcmVlRWxlbWVudHMgPSBmdW5jdGlvbihh
LCBiKQogCiAgICAgICAgIC8vIENvbXBhcmUgYnkgdGl0bGUgd2hlbiB0aGUgc3VidGl0bGVzIGFy
ZSB0aGUgc2FtZS4KICAgICAgICAgcmV0dXJuIGEubWFpblRpdGxlLmxvY2FsZUNvbXBhcmUoYi5t
YWluVGl0bGUpOwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50
LmNvbXBhcmVGb2xkZXJBbmRSZXNvdXJjZVRyZWVFbGVtZW50cyA9IGZ1bmN0aW9uKGEsIGIpCisg
ICAgc3RhdGljIGNvbXBhcmVGb2xkZXJBbmRSZXNvdXJjZVRyZWVFbGVtZW50cyhhLCBiKQogICAg
IHsKICAgICAgICAgdmFyIGFJc0ZvbGRlciA9IGEgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRm9s
ZGVyVHJlZUVsZW1lbnQ7CiAgICAgICAgIHZhciBiSXNGb2xkZXIgPSBiIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50OwpAQCAtNzIsMzIgKzcyLDI4IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LmNvbXBhcmVGb2xkZXJBbmRSZXNvdXJjZVRyZWVFbGVt
ZW50cyA9IGZ1bmN0aW9uCiAgICAgICAgICAgICByZXR1cm4gYS5tYWluVGl0bGUubG9jYWxlQ29t
cGFyZShiLm1haW5UaXRsZSk7CiAKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVFbGVtZW50LmNvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50cyhhLCBiKTsKLX07Ci0KLVdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAogICAgIGdldCByZXNvdXJjZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fcmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZmlsdGVyYWJsZURhdGEo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHt0ZXh0OiB0aGlzLl9yZXNvdXJjZS51cmx9OwotICAg
IH0sCisgICAgfQogCi0gICAgb25kYmxjbGljazogZnVuY3Rpb24oKQorICAgIG9uZGJsY2xpY2so
KQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lm9wZW5Jbk5ld1RhYih0aGlz
Ll9yZXNvdXJjZS51cmwpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkIChVc2Vk
IGJ5IEZyYW1lVHJlZUVsZW1lbnQpCiAKLSAgICBfdXBkYXRlUmVzb3VyY2U6IGZ1bmN0aW9uKHJl
c291cmNlKQorICAgIF91cGRhdGVSZXNvdXJjZShyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKTsK
IApAQCAtMTI1LDExICsxMjEsMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91cGRhdGVUaXRsZXMoKTsKICAgICAgICAgdGhp
cy5fdXBkYXRlU3RhdHVzKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRvb2xUaXAoKTsKLSAgICB9
LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgX3VwZGF0ZVRpdGxlczogZnVuY3Rp
b24oKQorICAgIF91cGRhdGVUaXRsZXMoKQogICAgIHsKICAgICAgICAgdmFyIGZyYW1lID0gdGhp
cy5fcmVzb3VyY2UucGFyZW50RnJhbWU7CiAgICAgICAgIHZhciBpc01haW5SZXNvdXJjZSA9IHRo
aXMuX3Jlc291cmNlLmlzTWFpblJlc291cmNlKCk7CkBAIC0xNTIsMTEgKzE0OCwxMSBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYg
KG9sZE1haW5UaXRsZSAhPT0gdGhpcy5tYWluVGl0bGUpCiAgICAgICAgICAgICB0aGlzLmNhbGxG
aXJzdEFuY2VzdG9yRnVuY3Rpb24oImRlc2NlbmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50TWFpblRp
dGxlRGlkQ2hhbmdlIiwgW3RoaXMsIG9sZE1haW5UaXRsZV0pOwotICAgIH0sCisgICAgfQogCiAg
ICAgLy8gUHJpdmF0ZQogCi0gICAgX3VwZGF0ZVN0YXR1czogZnVuY3Rpb24oKQorICAgIF91cGRh
dGVTdGF0dXMoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlLmZhaWxlZCkKICAg
ICAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVt
ZW50LkZhaWxlZFN0eWxlQ2xhc3NOYW1lKTsKQEAgLTE3NCwyMCArMTcwLDIwIEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBz
cGlubmVyID0gbmV3IFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyOwog
ICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBzcGlubmVyLmVsZW1lbnQ7CiAgICAgICAgIH0KLSAg
ICB9LAorICAgIH0KIAotICAgIF91cGRhdGVUb29sVGlwOiBmdW5jdGlvbigpCisgICAgX3VwZGF0
ZVRvb2xUaXAoKQogICAgIHsKICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5fcmVzb3VyY2Uu
dXJsOwotICAgIH0sCisgICAgfQogCi0gICAgX3VybERpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3VybERpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRp
dGxlcygpOwogICAgICAgICB0aGlzLl91cGRhdGVUb29sVGlwKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfdHlwZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3R5cGVEaWRDaGFuZ2Uo
ZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnJlbW92ZUNsYXNzTmFtZShldmVudC5kYXRhLm9s
ZFR5cGUpOwogICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSh0aGlzLl9yZXNvdXJjZS50eXBlKTsK
QEAgLTE5NSwzICsxOTEsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY2FsbEZpcnN0QW5jZXN0b3JGdW5jdGlvbigiZGVzY2Vu
ZGFudFJlc291cmNlVHJlZUVsZW1lbnRUeXBlRGlkQ2hhbmdlIiwgW3RoaXMsIGV2ZW50LmRhdGEu
b2xkVHlwZV0pOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50
LlJlc291cmNlSWNvblN0eWxlQ2xhc3NOYW1lID0gInJlc291cmNlLWljb24iOworV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZUVsZW1lbnQuRmFpbGVkU3R5bGVDbGFzc05hbWUgPSAiZmFpbGVkIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nj
cmlwdFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU2NyaXB0VHJlZUVsZW1lbnQuanMKaW5kZXggOTIwY2ZhMi4uYjgzZDI2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VHJl
ZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU2NyaXB0VHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDExICsyMywxMyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVu
dCA9IGZ1bmN0aW9uKHNjcmlwdCkKK1dlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudCA9IGNs
YXNzIFNjcmlwdFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUcmVl
RWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKHNjcmlwdCkKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHNjcmlwdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQpOwogCi0gICAg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHNjcmlwdCwgV2Vi
SW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBudWxsLCBudWxsLCBz
Y3JpcHQsIGZhbHNlKTsKKyAgICAgICAgc3VwZXIoc2NyaXB0LCAic2NyaXB0IiwgbnVsbCwgbnVs
bCwgc2NyaXB0LCBmYWxzZSk7CiAKICAgICAgICAgdGhpcy5tYWluVGl0bGUgPSBzY3JpcHQuZGlz
cGxheU5hbWU7CiAKQEAgLTQ0LDEzICs0Niw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxl
bWVudCA9IGZ1bmN0aW9uKHNjcmlwdCkKICAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKFdl
Ykluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudC5Bbm9ueW1vdXNTY3JpcHRJY29uU3R5bGVDbGFz
c05hbWUpOwogCiAgICAgICAgIHRoaXMuX3NjcmlwdCA9IHNjcmlwdDsKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5TY3JpcHRUcmVlRWxlbWVudC5Bbm9ueW1vdXNTY3JpcHRJY29uU3R5bGVDbGFzc05hbWUg
PSAiYW5vbnltb3VzLXNjcmlwdC1pY29uIjsKLVdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVu
dC5TdHlsZUNsYXNzTmFtZSA9ICJzY3JpcHQiOwotCi1XZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2NyaXB0
VHJlZUVsZW1lbnQsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKQEAgLTYwLDQgKzU2LDQgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB9CiB9Owog
Ci1XZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVjdG9y
LlNjcmlwdFRyZWVFbGVtZW50LkFub255bW91c1NjcmlwdEljb25TdHlsZUNsYXNzTmFtZSA9ICJh
bm9ueW1vdXMtc2NyaXB0LWljb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hSZXN1bHRUcmVlRWxlbWVu
dC5qcwppbmRleCA2N2EzOGU1Li4xNDRlZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hSZXN1bHRU
cmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjMsMzQgKzIzLDIyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50ID0g
ZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJl
ZUVsZW1lbnQgPSBjbGFzcyBTZWFyY2hSZXN1bHRUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9i
amVjdCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0IHx8IHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVTZWFyY2hNYXRjaE9iamVj
dCk7CiAKICAgICAgICAgdmFyIHRpdGxlID0gV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVF
bGVtZW50LnRydW5jYXRlQW5kSGlnaGxpZ2h0VGl0bGUocmVwcmVzZW50ZWRPYmplY3QudGl0bGUs
IHJlcHJlc2VudGVkT2JqZWN0LnNlYXJjaFRlcm0sIHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNv
ZGVUZXh0UmFuZ2UpOwogCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxs
KHRoaXMsIHJlcHJlc2VudGVkT2JqZWN0LmNsYXNzTmFtZSwgdGl0bGUsIG51bGwsIHJlcHJlc2Vu
dGVkT2JqZWN0LCBmYWxzZSk7Ci0gICAgdGhpcy5zbWFsbCA9IHRydWU7Ci19OwotCi1XZWJJbnNw
ZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuQ2hhcmFjdGVyc1RvU2hvd0JlZm9yZVNlYXJj
aE1hdGNoID0gMTU7Ci1XZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuQ2hhcmFj
dGVyc1RvU2hvd0FmdGVyU2VhcmNoTWF0Y2ggPSA1MDsKLVdlYkluc3BlY3Rvci5TZWFyY2hSZXN1
bHRUcmVlRWxlbWVudC5IaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lID0gImhpZ2hsaWdodGVkIjsK
LQotV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LAorICAg
ICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdC5jbGFzc05hbWUsIHRpdGxlLCBudWxsLCByZXBy
ZXNlbnRlZE9iamVjdCwgZmFsc2UpOwogCi0gICAgLy8gUHVibGljCi0KLSAgICBnZXQgZmlsdGVy
YWJsZURhdGEoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHt0ZXh0OiB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LnRpdGxlfTsKKyAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7CiAgICAgfQotfTsKIAot
V2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZTsKKyAgICAvLyBTdGF0
aWMKIAotV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LnRydW5jYXRlQW5kSGln
aGxpZ2h0VGl0bGUgPSBmdW5jdGlvbih0aXRsZSwgc2VhcmNoVGVybSwgc291cmNlQ29kZVRleHRS
YW5nZSkKKyAgICBzdGF0aWMgdHJ1bmNhdGVBbmRIaWdobGlnaHRUaXRsZSh0aXRsZSwgc2VhcmNo
VGVybSwgc291cmNlQ29kZVRleHRSYW5nZSkKICAgICB7CiAgICAgICAgIC8vIFVzZSB0aGUgb3Jp
Z2luYWwgbG9jYXRpb24sIHNpbmNlIHRob3NlIGxpbmUvY29sdW1uIG9mZnNldHMgbWF0Y2ggdGhl
IGxpbmUgdGV4dCBpbiB0aXRsZS4KICAgICAgICAgdmFyIHRleHRSYW5nZSA9IHNvdXJjZUNvZGVU
ZXh0UmFuZ2UudGV4dFJhbmdlOwpAQCAtNzksMTEgKzY3LDIyIEBAIFdlYkluc3BlY3Rvci5TZWFy
Y2hSZXN1bHRUcmVlRWxlbWVudC50cnVuY2F0ZUFuZEhpZ2hsaWdodFRpdGxlID0gZnVuY3Rpb24o
dGl0bGUsCiAgICAgICAgIGhpZ2hsaWdodGVkVGl0bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUobW9kaWZpZWRUaXRsZS5zdWJzdHJpbmcoMCwgc2VhcmNoVGVybUluZGV4KSkp
OwogCiAgICAgICAgIHZhciBoaWdobGlnaHRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c3BhbiIpOwotICAgIGhpZ2hsaWdodFNwYW4uY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlNlYXJj
aFJlc3VsdFRyZWVFbGVtZW50LkhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWU7CisgICAgICAgIGhp
Z2hsaWdodFNwYW4uY2xhc3NOYW1lID0gImhpZ2hsaWdodGVkIjsKICAgICAgICAgaGlnaGxpZ2h0
U3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtb2RpZmllZFRpdGxlLnN1
YnN0cmluZyhzZWFyY2hUZXJtSW5kZXgsIHNlYXJjaFRlcm1JbmRleCArIHNlYXJjaFRlcm0ubGVu
Z3RoKSkpOwogICAgICAgICBoaWdobGlnaHRlZFRpdGxlLmFwcGVuZENoaWxkKGhpZ2hsaWdodFNw
YW4pOwogCiAgICAgICAgIGhpZ2hsaWdodGVkVGl0bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUobW9kaWZpZWRUaXRsZS5zdWJzdHJpbmcoc2VhcmNoVGVybUluZGV4ICsgc2Vh
cmNoVGVybS5sZW5ndGgpKSk7CiAKICAgICAgICAgcmV0dXJuIGhpZ2hsaWdodGVkVGl0bGU7Cisg
ICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgZmlsdGVyYWJsZURhdGEoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHt0ZXh0OiB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnRpdGxlfTsKKyAg
ICB9CiB9OworCitXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuQ2hhcmFjdGVy
c1RvU2hvd0JlZm9yZVNlYXJjaE1hdGNoID0gMTU7CitXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0
VHJlZUVsZW1lbnQuQ2hhcmFjdGVyc1RvU2hvd0FmdGVyU2VhcmNoTWF0Y2ggPSA1MDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNv
ZGVUaW1lbGluZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVHJlZUVsZW1lbnQuanMKaW5kZXggMGM2MzU1
Ni4uMWQzNTgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVHJlZUVs
ZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDI0ICsyMywyNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVudCA9
IGZ1bmN0aW9uKHNvdXJjZUNvZGVUaW1lbGluZSwgc3VidGl0bGVOYW1lU3R5bGUsIGluY2x1ZGVU
aW1lcklkZW50aWZpZXJJbk1haW5UaXRsZSkKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxp
bmVUcmVlRWxlbWVudCA9IGNsYXNzIFNvdXJjZUNvZGVUaW1lbGluZVRyZWVFbGVtZW50IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1
Y3Rvcihzb3VyY2VDb2RlVGltZWxpbmUsIHN1YnRpdGxlTmFtZVN0eWxlLCBpbmNsdWRlVGltZXJJ
ZGVudGlmaWVySW5NYWluVGl0bGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChzb3Vy
Y2VDb2RlVGltZWxpbmUpOwogCi0gICAgdGhpcy5fc291cmNlQ29kZVRpbWVsaW5lID0gc291cmNl
Q29kZVRpbWVsaW5lOwotCiAgICAgICAgIHN1YnRpdGxlTmFtZVN0eWxlID0gc3VidGl0bGVOYW1l
U3R5bGUgfHwgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5OYW1lU3R5bGUuTm9uZTsK
IAotICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LmNhbGwodGhpcywg
c291cmNlQ29kZVRpbWVsaW5lLnJlY29yZHNbMF0sIHN1YnRpdGxlTmFtZVN0eWxlLCBpbmNsdWRl
VGltZXJJZGVudGlmaWVySW5NYWluVGl0bGUsIHNvdXJjZUNvZGVUaW1lbGluZS5zb3VyY2VDb2Rl
TG9jYXRpb24sIHNvdXJjZUNvZGVUaW1lbGluZSk7Ci19OworICAgICAgICBzdXBlcihzb3VyY2VD
b2RlVGltZWxpbmUucmVjb3Jkc1swXSwgc3VidGl0bGVOYW1lU3R5bGUsIGluY2x1ZGVUaW1lcklk
ZW50aWZpZXJJbk1haW5UaXRsZSwgc291cmNlQ29kZVRpbWVsaW5lLnNvdXJjZUNvZGVMb2NhdGlv
biwgc291cmNlQ29kZVRpbWVsaW5lKTsKIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGlu
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUaW1lbGluZVRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9z
b3VyY2VDb2RlVGltZWxpbmUgPSBzb3VyY2VDb2RlVGltZWxpbmU7CisgICAgfQogCiAgICAgLy8g
UHVibGljCiAKLSAgICByZWNvcmQ6IHVuZGVmaW5lZCwKKyAgICBnZXQgcmVjb3JkKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgfQogCiAgICAgZ2V0IHNvdXJjZUNvZGVU
aW1lbGluZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRyZWVFbGVtZW50LmpzCmluZGV4
IDg3MDNkN2IuLjM1NzM0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVHJlZUVsZW1lbnQuanMK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDI0ICsyMywyMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzb3VyY2VD
b2RlLCBjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXND
aGlsZHJlbikKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQgPSBjbGFzcyBTb3Vy
Y2VDb2RlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVt
ZW50Cit7CisgICAgY29uc3RydWN0b3Ioc291cmNlQ29kZSwgY2xhc3NOYW1lcywgdGl0bGUsIHN1
YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCwgaGFzQ2hpbGRyZW4pCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChzb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGUpOwogCi0gICAgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5jYWxsKHRoaXMs
IGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QgfHwgc291cmNl
Q29kZSwgaGFzQ2hpbGRyZW4pOworICAgICAgICBzdXBlcihjbGFzc05hbWVzLCB0aXRsZSwgc3Vi
dGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0IHx8IHNvdXJjZUNvZGUsIGhhc0NoaWxkcmVuKTsKIAog
ICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl91cGRhdGVTb3VyY2VD
b2RlKHNvdXJjZUNvZGUpOwotfTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVF
bGVtZW50LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHVwZGF0ZVNv
dXJjZU1hcFJlc291cmNlczogZnVuY3Rpb24oKQorICAgIHVwZGF0ZVNvdXJjZU1hcFJlc291cmNl
cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMudHJlZU91dGxpbmUgfHwgIXRoaXMudHJlZU91
dGxpbmUuaW5jbHVkZVNvdXJjZU1hcFJlc291cmNlQ2hpbGRyZW4pCiAgICAgICAgICAgICByZXR1
cm47CkBAIC01MCwxOCArNDgsMTggQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuKQogICAgICAg
ICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gT3Zl
cnJpZGVzIGZyb20gVHJlZUVsZW1lbnQKIAotICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAg
b25hdHRhY2goKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLnVwZGF0ZVNv
dXJjZU1hcFJlc291cmNlcygpOwotICAgIH0sCisgICAgfQogCi0gICAgb25wb3B1bGF0ZTogZnVu
Y3Rpb24oKQorICAgIG9ucG9wdWxhdGUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnRyZWVP
dXRsaW5lIHx8ICF0aGlzLnRyZWVPdXRsaW5lLmluY2x1ZGVTb3VyY2VNYXBSZXNvdXJjZUNoaWxk
cmVuKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDExICsxMjgsMTEgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgZmlu
ZEFuZENvbWJpbmVGb2xkZXJDaGFpbnModGhpcy5jaGlsZHJlbltpXSwgbnVsbCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGNyZWF0ZUZvbGRlcnNBc05lZWRlZEZv
clN1YnBhdGg6IGZ1bmN0aW9uKHN1YnBhdGgpCisgICAgY3JlYXRlRm9sZGVyc0FzTmVlZGVkRm9y
U3VicGF0aChzdWJwYXRoKQogICAgIHsKICAgICAgICAgaWYgKCFzdWJwYXRoKQogICAgICAgICAg
ICAgcmV0dXJuIHRoaXM7CkBAIC0xNjksOSArMTY3LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4g
Y3VycmVudEZvbGRlclRyZWVFbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgZGVzY2VuZGFu
dFJlc291cmNlVHJlZUVsZW1lbnRUeXBlRGlkQ2hhbmdlOiBmdW5jdGlvbihjaGlsZFRyZWVFbGVt
ZW50LCBvbGRUeXBlKQorICAgIGRlc2NlbmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50VHlwZURpZENo
YW5nZShjaGlsZFRyZWVFbGVtZW50LCBvbGRUeXBlKQogICAgIHsKICAgICAgICAgLy8gQ2FsbGVk
IGJ5IGRlc2NlbmRhbnQgU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudHMuCiAKQEAgLTE4NSwx
MSArMTgzLDExIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogCiAgICAgICAgIGlmICh3YXNTZWxlY3RlZCkKICAgICAgICAgICAgIGNoaWxkVHJlZUVs
ZW1lbnQucmV2ZWFsQW5kU2VsZWN0KHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIFByb3RlY3RlZCAoUmVzb3VyY2VUcmVlRWxlbWVudCBjYWxscyB0aGlz
IHdoZW4gaXRzIFJlc291cmNlIGNoYW5nZXMgZHluYW1pY2FsbHkgZm9yIEZyYW1lcykKIAotICAg
IF91cGRhdGVTb3VyY2VDb2RlOiBmdW5jdGlvbihzb3VyY2VDb2RlKQorICAgIF91cGRhdGVTb3Vy
Y2VDb2RlKHNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChzb3VyY2VD
b2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VNYXBSZXNvdXJj
ZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudC5qcwppbmRleCA1ZDFiNDg0Li4wODcyMmEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
b3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDI1ICsyMywyMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc291
cmNlTWFwUmVzb3VyY2UsIHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLlNvdXJjZU1h
cFJlc291cmNlVHJlZUVsZW1lbnQgPSBjbGFzcyBTb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1
Y3Rvcihzb3VyY2VNYXBSZXNvdXJjZSwgcmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChzb3VyY2VNYXBSZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5Tb3VyY2VNYXBSZXNvdXJjZSk7CiAKLSAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxl
bWVudC5jYWxsKHRoaXMsIHNvdXJjZU1hcFJlc291cmNlKTsKKyAgICAgICAgc3VwZXIoc291cmNl
TWFwUmVzb3VyY2UpOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMucmVzb3VyY2UgPT09
IHNvdXJjZU1hcFJlc291cmNlKTsKIAotICAgIHRoaXMuYWRkQ2xhc3NOYW1lKFdlYkluc3BlY3Rv
ci5Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lKTsKLX07Ci0KLVdl
Ykluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lID0g
InNvdXJjZS1tYXAtcmVzb3VyY2UiOwotCi1XZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2VU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5T
b3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50LAorICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgi
c291cmNlLW1hcC1yZXNvdXJjZSIpOworICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAg
X3VwZGF0ZVRpdGxlczogZnVuY3Rpb24oKQorICAgIF91cGRhdGVUaXRsZXMoKQogICAgIHsKICAg
ICAgICAgdmFyIG9sZE1haW5UaXRsZSA9IHRoaXMubWFpblRpdGxlOwogICAgICAgICB0aGlzLm1h
aW5UaXRsZSA9IHRoaXMucmVzb3VyY2UuZGlzcGxheU5hbWU7CkBAIC01Niw1ICs1MywzIEBAIFdl
Ykluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuY2FsbEZpcnN0QW5jZXN0b3JGdW5jdGlvbigiZGVzY2VuZGFudFJlc291
cmNlVHJlZUVsZW1lbnRNYWluVGl0bGVEaWRDaGFuZ2UiLCBbdGhpcywgb2xkTWFpblRpdGxlXSk7
CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnBy
b3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1N0b3JhZ2VUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUcmVlRWxlbWVudC5qcwppbmRleCBkYzcyZThiLi42Mjg2
YTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TdG9yYWdlVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU3RvcmFnZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMyArMjMsMjIgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU3Rv
cmFnZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oY2xhc3NOYW1lcywgdGl0bGUsIHJlcHJlc2VudGVk
T2JqZWN0KQorV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudCA9IGNsYXNzIFN0b3JhZ2VU
cmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgY2xhc3NOYW1lcywg
dGl0bGUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7CisgICAgY29uc3RydWN0b3Io
Y2xhc3NOYW1lcywgdGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoY2xhc3NOYW1lcywgdGl0bGUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7CiAK
ICAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7CiAgICAgICAgIHRoaXMuZmxhdHRlbmVkID0gZmFs
c2U7Ci19OwotCi1XZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudCwKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBmbGF0dGVuZWQoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2ZsYXR0ZW5lZDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBmbGF0dGVu
ZWQoZmxhdHRlbmVkKQogICAgIHsKQEAgLTU3LDExICs1NiwxMSBAQCBXZWJJbnNwZWN0b3IuU3Rv
cmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5tYWluVGl0bGUgPSB0
aGlzLmNhdGVnb3J5TmFtZTsKICAgICAgICAgdGhpcy5zdWJ0aXRsZSA9IHRoaXMubmFtZTsKICAg
ICAgICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW5UaXRsZXMoKTsKLSAgICB9LAorICAgIH0KIAogICAg
IC8vIFByaXZhdGUKIAotICAgIF91cGRhdGVDaGlsZHJlblRpdGxlczogZnVuY3Rpb24oKQorICAg
IF91cGRhdGVDaGlsZHJlblRpdGxlcygpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGlmICh0eXBlb2Yg
dGhpcy5jaGlsZHJlbltpXS51cGRhdGVUaXRsZXMgPT09ICJmdW5jdGlvbiIpCkBAIC02OSw1ICs2
OCwzIEBAIFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
ICAgICB9CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudC5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZURhdGFHcmlkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVGltZWxpbmVEYXRhR3JpZC5qcwppbmRleCA3NGNhM2Q1Li5iNTU5YjhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGlu
ZURhdGFHcmlkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RpbWVsaW5lRGF0YUdyaWQuanMKQEAgLTQ2MSw3ICs0NjEsNyBAQCBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5fcG9wb3Zl
ckNhbGxTdGFja1RyZWVPdXRsaW5lKSB7CiAgICAgICAgICAgICB2YXIgY29udGVudEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwogICAgICAgICAgICAgY29udGVudEVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgidGltZWxpbmUtZGF0YS1ncmlkLXRyZWUtb3V0bGluZSIpOwotICAg
ICAgICAgICAgdGhpcy5fcG9wb3ZlckNhbGxTdGFja1RyZWVPdXRsaW5lID0gbmV3IFRyZWVPdXRs
aW5lKGNvbnRlbnRFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJDYWxsU3RhY2tU
cmVlT3V0bGluZSA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUoY29udGVudEVsZW1lbnQp
OwogICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckNhbGxTdGFja1RyZWVPdXRsaW5lLm9uc2VsZWN0
ID0gdGhpcy5fcG9wb3ZlckNhbGxTdGFja1RyZWVFbGVtZW50U2VsZWN0ZWQuYmluZCh0aGlzKTsK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLl9wb3BvdmVyQ2FsbFN0YWNrVHJlZU91
dGxpbmUucmVtb3ZlQ2hpbGRyZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZFRyZWVF
bGVtZW50LmpzCmluZGV4IDA3ZDZmZTkuLjk4NWVhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxp
bmVSZWNvcmRUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMyArMjMsMjQgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVl
RWxlbWVudCA9IGZ1bmN0aW9uKHRpbWVsaW5lUmVjb3JkLCBzdWJ0aXRsZU5hbWVTdHlsZSwgaW5j
bHVkZVRpbWVySWRlbnRpZmllckluTWFpblRpdGxlLCBzb3VyY2VDb2RlTG9jYXRpb24sIHJlcHJl
c2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQgPSBj
bGFzcyBUaW1lbGluZVJlY29yZFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVy
YWxUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKHRpbWVsaW5lUmVjb3JkLCBzdWJ0aXRs
ZU5hbWVTdHlsZSwgaW5jbHVkZVRpbWVySWRlbnRpZmllckluTWFpblRpdGxlLCBzb3VyY2VDb2Rl
TG9jYXRpb24sIHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQodGltZWxpbmVSZWNvcmQpOwogCi0gICAgdGhpcy5fcmVjb3JkID0gdGltZWxpbmVSZWNvcmQ7
Ci0gICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uIHx8IHRp
bWVsaW5lUmVjb3JkLnNvdXJjZUNvZGVMb2NhdGlvbiB8fCBudWxsOworICAgICAgICBzb3VyY2VD
b2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlTG9jYXRpb24gfHwgdGltZWxpbmVSZWNvcmQuc291cmNl
Q29kZUxvY2F0aW9uIHx8IG51bGw7CiAKICAgICAgICAgdmFyIHRpdGxlID0gIiI7CiAgICAgICAg
IHZhciBzdWJ0aXRsZSA9ICIiOwogCi0gICAgaWYgKHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbikg
eworICAgICAgICBpZiAoc291cmNlQ29kZUxvY2F0aW9uKSB7CiAgICAgICAgICAgICBzdWJ0aXRs
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKIAogICAgICAgICAgICAgaWYgKHN1
YnRpdGxlTmFtZVN0eWxlICE9PSBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLk5hbWVT
dHlsZS5Ob25lKQotICAgICAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLnBvcHVsYXRl
TGl2ZURpc3BsYXlMb2NhdGlvblN0cmluZyhzdWJ0aXRsZSwgInRleHRDb250ZW50IiwgbnVsbCwg
c3VidGl0bGVOYW1lU3R5bGUpOworICAgICAgICAgICAgICAgIHNvdXJjZUNvZGVMb2NhdGlvbi5w
b3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25TdHJpbmcoc3VidGl0bGUsICJ0ZXh0Q29udGVudCIs
IG51bGwsIHN1YnRpdGxlTmFtZVN0eWxlKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5wb3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25TdHJp
bmcoc3VidGl0bGUsICJ0ZXh0Q29udGVudCIsIG51bGwsIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
TG9jYXRpb24uTmFtZVN0eWxlLk5vbmUsIFdlYkluc3BlY3Rvci5VSVN0cmluZygibGluZSAiKSk7
CisgICAgICAgICAgICAgICAgc291cmNlQ29kZUxvY2F0aW9uLnBvcHVsYXRlTGl2ZURpc3BsYXlM
b2NhdGlvblN0cmluZyhzdWJ0aXRsZSwgInRleHRDb250ZW50IiwgbnVsbCwgV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVMb2NhdGlvbi5OYW1lU3R5bGUuTm9uZSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJsaW5lICIpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBpY29uU3R5bGVDbGFzcyA9IG51
bGw7CkBAIC0xMDgsNDUgKzEwOSwzMyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVl
RWxlbWVudCA9IGZ1bmN0aW9uKHRpbWVsaW5lUmVjb3JkLCBzdWJ0aXRsZU5hbWVTdAogICAgICAg
ICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBUaW1lbGluZVJlY29yZCB0eXBlOiAiICsgdGlt
ZWxpbmVSZWNvcmQudHlwZSwgdGltZWxpbmVSZWNvcmQpOwogICAgICAgICB9CiAKLSAgICBXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgW2ljb25TdHlsZUNsYXNzXSwg
dGl0bGUsIHN1YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCB8fCB0aW1lbGluZVJlY29yZCwgZmFs
c2UpOworICAgICAgICBzdXBlcihbaWNvblN0eWxlQ2xhc3NdLCB0aXRsZSwgc3VidGl0bGUsIHJl
cHJlc2VudGVkT2JqZWN0IHx8IHRpbWVsaW5lUmVjb3JkLCBmYWxzZSk7CisKKyAgICAgICAgdGhp
cy5fcmVjb3JkID0gdGltZWxpbmVSZWNvcmQ7CisgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2Nh
dGlvbiA9IHNvdXJjZUNvZGVMb2NhdGlvbjsKIAogICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsK
IAogICAgICAgICBpZiAodGhpcy5fc291cmNlQ29kZUxvY2F0aW9uKQogICAgICAgICAgICAgdGhp
cy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwotfTsKLQotV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuU3R5bGVSZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJzdHls
ZS1yZWNvcmQiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuTGF5b3V0
UmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAibGF5b3V0LXJlY29yZCI7Ci1XZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5QYWludFJlY29yZEljb25TdHlsZUNsYXNzID0gInBhaW50
LXJlY29yZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5SdW5Mb29w
UmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAicnVubG9vcC1yZWNvcmQiOwotV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuRXZhbHVhdGVkUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAi
ZXZhbHVhdGVkLXJlY29yZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVu
dC5FdmVudFJlY29yZEljb25TdHlsZUNsYXNzID0gImV2ZW50LXJlY29yZCI7Ci1XZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5UaW1lclJlY29yZEljb25TdHlsZUNsYXNzID0g
InRpbWVyLXJlY29yZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5B
bmltYXRpb25SZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJhbmltYXRpb24tcmVjb3JkIjsKLVdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlByb2JlUmVjb3JkSWNvblN0eWxlQ2xh
c3MgPSAicHJvYmUtcmVjb3JkIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVt
ZW50LkNvbnNvbGVQcm9maWxlSWNvblN0eWxlQ2xhc3MgPSAiY29uc29sZS1wcm9maWxlLXJlY29y
ZCI7Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1l
bnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3Rv
dHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCByZWNvcmQoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBm
aWx0ZXJhYmxlRGF0YSgpCiAgICAgewogICAgICAgICB2YXIgdXJsID0gdGhpcy5fc291cmNlQ29k
ZUxvY2F0aW9uID8gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUudXJsIDogIiI7
CiAgICAgICAgIHJldHVybiB7dGV4dDogW3RoaXMubWFpblRpdGxlLCB1cmwgfHwgIiIsIHRoaXMu
X3JlY29yZC5kZXRhaWxzIHx8ICIiXX07Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0
ZWQKIAotICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgb25hdHRhY2goKQogICAgIHsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gu
Y2FsbCh0aGlzKTsKIApAQCAtMTU5LDMgKzE0OCwxNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVM
b2NhdGlvbi5wb3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25Ub29sdGlwKHRoaXMuZWxlbWVudCwg
dG9vbHRpcFByZWZpeCk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
VHJlZUVsZW1lbnQuU3R5bGVSZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJzdHlsZS1yZWNvcmQiOwor
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuTGF5b3V0UmVjb3JkSWNvblN0
eWxlQ2xhc3MgPSAibGF5b3V0LXJlY29yZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRU
cmVlRWxlbWVudC5QYWludFJlY29yZEljb25TdHlsZUNsYXNzID0gInBhaW50LXJlY29yZCI7CitX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5SdW5Mb29wUmVjb3JkSWNvblN0
eWxlQ2xhc3MgPSAicnVubG9vcC1yZWNvcmQiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
VHJlZUVsZW1lbnQuRXZhbHVhdGVkUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAiZXZhbHVhdGVkLXJl
Y29yZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5FdmVudFJlY29y
ZEljb25TdHlsZUNsYXNzID0gImV2ZW50LXJlY29yZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRUcmVlRWxlbWVudC5UaW1lclJlY29yZEljb25TdHlsZUNsYXNzID0gInRpbWVyLXJlY29y
ZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5BbmltYXRpb25SZWNv
cmRJY29uU3R5bGVDbGFzcyA9ICJhbmltYXRpb24tcmVjb3JkIjsKK1dlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZFRyZWVFbGVtZW50LlByb2JlUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAicHJvYmUt
cmVjb3JkIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LkNvbnNvbGVQ
cm9maWxlSWNvblN0eWxlQ2xhc3MgPSAiY29uc29sZS1wcm9maWxlLXJlY29yZCI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlRWxlbWVu
dFN0YXR1c0J1dHRvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpzCmluZGV4IDU2YzE0NGMuLjJlZTNhYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVF
bGVtZW50U3RhdHVzQnV0dG9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw0OCArMjMsNDAgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
VHJlZUVsZW1lbnRTdGF0dXNCdXR0b24gPSBmdW5jdGlvbihlbGVtZW50KSB7Ci0gICAgLy8gRklY
TUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBj
YWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworV2Vi
SW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uID0gY2xhc3MgVHJlZUVsZW1lbnRTdGF0
dXNCdXR0b24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3Io
ZWxlbWVudCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQ7Ci0gICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1
dHRvbi5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgic3RhdHVzLWJ1dHRvbiIpOwogICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgdGhpcy5fY2xpY2tlZC5iaW5kKHRoaXMpKTsKLX07Ci0KLVdlYkluc3BlY3Rv
ci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5TdHlsZUNsYXNzTmFtZSA9ICJzdGF0dXMtYnV0dG9u
IjsKLVdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5EaXNhYmxlZFN0eWxlQ2xh
c3NOYW1lID0gImRpc2FibGVkIjsKLQotV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0
dG9uLkV2ZW50ID0gewotICAgIENsaWNrZWQ6ICJzdGF0dXMtYnV0dG9uLWNsaWNrZWQiCi19Owot
Ci1XZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24ucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24sCisgICAg
fQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoaWRkZW4oKQog
ICAgIHsKICAgICAgICAgcmV0dXJuICF0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhX
ZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uRGlzYWJsZWRTdHlsZUNsYXNzTmFt
ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgaGlkZGVuKGZsYWcpCiAgICAgewogICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImhpZGRlbiIsIGZsYWcpOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGVuYWJsZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuICF0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0
dXNCdXR0b24uRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgZW5hYmxlZChmbGFnKQogICAgIHsKQEAgLTcyLDExICs2NCwxMSBAQCBXZWJJbnNwZWN0b3Iu
VHJlZUVsZW1lbnRTdGF0dXNCdXR0b24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1
dHRvbi5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1
c0J1dHRvbi5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8v
IFByaXZhdGUKIAotICAgIF9jbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY2xpY2tlZChl
dmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5lbmFibGVkKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtODcsNCArNzksOCBAQCBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0
b24ucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0
YXR1c0J1dHRvbi5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGU7CitXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uRGlzYWJsZWRTdHls
ZUNsYXNzTmFtZSA9ICJkaXNhYmxlZCI7CisKK1dlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1
c0J1dHRvbi5FdmVudCA9IHsKKyAgICBDbGlja2VkOiAic3RhdHVzLWJ1dHRvbi1jbGlja2VkIgor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVHJlZU91dGxpbmUuanMKaW5kZXggMjdjYjA1OC4uN2MzNzEyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEzIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsMTAgKzI2LDExIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWZ1
bmN0aW9uIFRyZWVPdXRsaW5lKGxpc3ROb2RlKQorV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lID0g
Y2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8g
RklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFu
ZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwor
ICAgIGNvbnN0cnVjdG9yKGxpc3ROb2RlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAg
ICAgICB0aGlzLmVsZW1lbnQgPSBsaXN0Tm9kZTsKIApAQCAtNTEsMTAgKzUyLDkgQEAgZnVuY3Rp
b24gVHJlZU91dGxpbmUobGlzdE5vZGUpCiAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUu
YWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX3RyZWVLZXlEb3duLmJpbmQodGhpcyks
IHRydWUpOwogICAgIH0KIAotVHJlZU91dGxpbmUuX2tub3duVHJlZUVsZW1lbnROZXh0SWRlbnRp
ZmllciA9IDE7Ci1UcmVlT3V0bGluZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUcmVlT3V0bGlu
ZTsKKyAgICAvLyBNZXRob2RzCiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9
IGZ1bmN0aW9uKGNoaWxkKQorICAgIGFwcGVuZENoaWxkKGNoaWxkKQogICAgIHsKICAgICAgICAg
aWYgKCFjaGlsZCkKICAgICAgICAgICAgIHRocm93ICJjaGlsZCBjYW4ndCBiZSB1bmRlZmluZWQg
b3IgbnVsbCI7CkBAIC05NCw5ICs5NCw5IEBAIFRyZWVPdXRsaW5lLnByb3RvdHlwZS5hcHBlbmRD
aGlsZCA9IGZ1bmN0aW9uKGNoaWxkKQogCiAgICAgICAgIGlmIChpc0ZpcnN0Q2hpbGQgJiYgdGhp
cy5leHBhbmRlZCkKICAgICAgICAgICAgIHRoaXMuZXhwYW5kKCk7Ci19OworICAgIH0KIAotVHJl
ZU91dGxpbmUucHJvdG90eXBlLmluc2VydENoaWxkID0gZnVuY3Rpb24oY2hpbGQsIGluZGV4KQor
ICAgIGluc2VydENoaWxkKGNoaWxkLCBpbmRleCkKICAgICB7CiAgICAgICAgIGlmICghY2hpbGQp
CiAgICAgICAgICAgICB0aHJvdyAiY2hpbGQgY2FuJ3QgYmUgdW5kZWZpbmVkIG9yIG51bGwiOwpA
QCAtMTQzLDkgKzE0Myw5IEBAIFRyZWVPdXRsaW5lLnByb3RvdHlwZS5pbnNlcnRDaGlsZCA9IGZ1
bmN0aW9uKGNoaWxkLCBpbmRleCkKIAogICAgICAgICBpZiAoaXNGaXJzdENoaWxkICYmIHRoaXMu
ZXhwYW5kZWQpCiAgICAgICAgICAgICB0aGlzLmV4cGFuZCgpOwotfTsKKyAgICB9CiAKLVRyZWVP
dXRsaW5lLnByb3RvdHlwZS5yZW1vdmVDaGlsZEF0SW5kZXggPSBmdW5jdGlvbihjaGlsZEluZGV4
LCBzdXBwcmVzc09uRGVzZWxlY3QsIHN1cHByZXNzU2VsZWN0U2libGluZykKKyAgICByZW1vdmVD
aGlsZEF0SW5kZXgoY2hpbGRJbmRleCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVj
dFNpYmxpbmcpCiAgICAgewogICAgICAgICBpZiAoY2hpbGRJbmRleCA8IDAgfHwgY2hpbGRJbmRl
eCA+PSB0aGlzLmNoaWxkcmVuLmxlbmd0aCkKICAgICAgICAgICAgIHRocm93ICJjaGlsZEluZGV4
IG91dCBvZiByYW5nZSI7CkBAIC0xODEsOSArMTgxLDkgQEAgVHJlZU91dGxpbmUucHJvdG90eXBl
LnJlbW92ZUNoaWxkQXRJbmRleCA9IGZ1bmN0aW9uKGNoaWxkSW5kZXgsIHN1cHByZXNzT25EZXNl
bGUKIAogICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSAmJiB0aGlzLnRyZWVPdXRsaW5lLm9u
cmVtb3ZlKQogICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5vbnJlbW92ZShjaGlsZCk7Ci19
OworICAgIH0KIAotVHJlZU91dGxpbmUucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24o
Y2hpbGQsIHN1cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NTZWxlY3RTaWJsaW5nKQorICAgIHJl
bW92ZUNoaWxkKGNoaWxkLCBzdXBwcmVzc09uRGVzZWxlY3QsIHN1cHByZXNzU2VsZWN0U2libGlu
ZykKICAgICB7CiAgICAgICAgIGlmICghY2hpbGQpCiAgICAgICAgICAgICB0aHJvdyAiY2hpbGQg
Y2FuJ3QgYmUgdW5kZWZpbmVkIG9yIG51bGwiOwpAQCAtMTk4LDkgKzE5OCw5IEBAIFRyZWVPdXRs
aW5lLnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IGZ1bmN0aW9uKGNoaWxkLCBzdXBwcmVzc09uRGVz
ZWxlY3QsIHN1cHByZXNzCiAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0
LnJlbW92ZSgicGFyZW50Iik7CiAgICAgICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7
CiAgICAgICAgIH0KLX07CisgICAgfQogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hp
bGRyZW4gPSBmdW5jdGlvbihzdXBwcmVzc09uRGVzZWxlY3QpCisgICAgcmVtb3ZlQ2hpbGRyZW4o
c3VwcHJlc3NPbkRlc2VsZWN0KQogICAgIHsKICAgICAgICAgdmFyIHRyZWVPdXRsaW5lID0gdGhp
cy50cmVlT3V0bGluZTsKIApAQCAtMjI0LDkgKzIyNCw5IEBAIFRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5yZW1vdmVDaGlsZHJlbiA9IGZ1bmN0aW9uKHN1cHByZXNzT25EZXNlbGVjdCkKICAgICAgICAg
fQogCiAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLX07CisgICAgfQogCi1UcmVlT3V0bGlu
ZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUgPSBmdW5jdGlvbihzdXBwcmVzc09u
RGVzZWxlY3QpCisgICAgcmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUoc3VwcHJlc3NPbkRlc2VsZWN0
KQogICAgIHsKICAgICAgICAgdmFyIGNoaWxkcmVuVG9SZW1vdmUgPSB0aGlzLmNoaWxkcmVuOwog
CkBAIC0yNTgsOSArMjU4LDkgQEAgVHJlZU91dGxpbmUucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVu
UmVjdXJzaXZlID0gZnVuY3Rpb24oc3VwcHJlc3NPbkRlc2VsZWN0KQogICAgICAgICB9CiAKICAg
ICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOwotfTsKKyAgICB9CiAKLVRyZWVPdXRsaW5lLnByb3Rv
dHlwZS5fcmVtZW1iZXJUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgX3JlbWVt
YmVyVHJlZUVsZW1lbnQoZWxlbWVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fa25vd25U
cmVlRWxlbWVudHNbZWxlbWVudC5pZGVudGlmaWVyXSkKICAgICAgICAgICAgIHRoaXMuX2tub3du
VHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl0gPSBbXTsKQEAgLTI3MiwyNiArMjcyLDI2
IEBAIFRyZWVPdXRsaW5lLnByb3RvdHlwZS5fcmVtZW1iZXJUcmVlRWxlbWVudCA9IGZ1bmN0aW9u
KGVsZW1lbnQpCiAKICAgICAgICAgLy8gYWRkIHRoZSBlbGVtZW50CiAgICAgICAgIGVsZW1lbnRz
LnB1c2goZWxlbWVudCk7Ci19OworICAgIH0KIAotVHJlZU91dGxpbmUucHJvdG90eXBlLl9mb3Jn
ZXRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgX2ZvcmdldFRyZWVFbGVtZW50
KGVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID09
PSBlbGVtZW50KQogICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsK
ICAgICAgICAgaWYgKHRoaXMuX2tub3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl0p
CiAgICAgICAgICAgICB0aGlzLl9rbm93blRyZWVFbGVtZW50c1tlbGVtZW50LmlkZW50aWZpZXJd
LnJlbW92ZShlbGVtZW50LCB0cnVlKTsKLX07CisgICAgfQogCi1UcmVlT3V0bGluZS5wcm90b3R5
cGUuX2ZvcmdldENoaWxkcmVuUmVjdXJzaXZlID0gZnVuY3Rpb24ocGFyZW50RWxlbWVudCkKKyAg
ICBfZm9yZ2V0Q2hpbGRyZW5SZWN1cnNpdmUocGFyZW50RWxlbWVudCkKICAgICB7CiAgICAgICAg
IHZhciBjaGlsZCA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW5bMF07CiAgICAgICAgIHdoaWxlIChj
aGlsZCkgewogICAgICAgICAgICAgdGhpcy5fZm9yZ2V0VHJlZUVsZW1lbnQoY2hpbGQpOwogICAg
ICAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxzZSwgcGFy
ZW50RWxlbWVudCwgdHJ1ZSk7CiAgICAgICAgIH0KLX07CisgICAgfQogCi1UcmVlT3V0bGluZS5w
cm90b3R5cGUuZ2V0Q2FjaGVkVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVj
dCkKKyAgICBnZXRDYWNoZWRUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAg
ICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsK
QEAgLTMwNyw5ICszMDcsOSBAQCBUcmVlT3V0bGluZS5wcm90b3R5cGUuZ2V0Q2FjaGVkVHJlZUVs
ZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gbnVsbDsKLX07CisgICAgfQogCi1UcmVlT3V0bGluZS5wcm90
b3R5cGUuZmluZFRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QsIGlzQW5j
ZXN0b3IsIGdldFBhcmVudCkKKyAgICBmaW5kVHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3Qs
IGlzQW5jZXN0b3IsIGdldFBhcmVudCkKICAgICB7CiAgICAgICAgIGlmICghcmVwcmVzZW50ZWRP
YmplY3QpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTM1OSwzNSArMzU5LDM1IEBAIFRy
ZWVPdXRsaW5lLnByb3RvdHlwZS5maW5kVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRl
ZE9iamVjdCwgaXNBbmNlc3RvciwKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0aGlzLmdl
dENhY2hlZFRyZWVFbGVtZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKLX07CisgICAgfQogCi1UcmVl
T3V0bGluZS5wcm90b3R5cGUuX3RyZWVFbGVtZW50RGlkQ2hhbmdlID0gZnVuY3Rpb24odHJlZUVs
ZW1lbnQpCisgICAgX3RyZWVFbGVtZW50RGlkQ2hhbmdlKHRyZWVFbGVtZW50KQogICAgIHsKICAg
ICAgICAgaWYgKHRyZWVFbGVtZW50LnRyZWVPdXRsaW5lICE9PSB0aGlzKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGlmICh0aGlzLm9uY2hhbmdlKQogICAgICAgICAgICAgdGhpcy5v
bmNoYW5nZSh0cmVlRWxlbWVudCk7Ci19OworICAgIH0KIAotVHJlZU91dGxpbmUucHJvdG90eXBl
LnRyZWVFbGVtZW50RnJvbU5vZGUgPSBmdW5jdGlvbihub2RlKQorICAgIHRyZWVFbGVtZW50RnJv
bU5vZGUobm9kZSkKICAgICB7CiAgICAgICAgIHZhciBsaXN0Tm9kZSA9IG5vZGUuZW5jbG9zaW5n
Tm9kZU9yU2VsZldpdGhOb2RlTmFtZUluQXJyYXkoWyJvbCIsICJsaSJdKTsKICAgICAgICAgaWYg
KGxpc3ROb2RlKQogICAgICAgICAgICAgcmV0dXJuIGxpc3ROb2RlLnBhcmVudFRyZWVFbGVtZW50
IHx8IGxpc3ROb2RlLnRyZWVFbGVtZW50OwogICAgICAgICByZXR1cm4gbnVsbDsKLX07CisgICAg
fQogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUudHJlZUVsZW1lbnRGcm9tUG9pbnQgPSBmdW5jdGlv
bih4LCB5KQorICAgIHRyZWVFbGVtZW50RnJvbVBvaW50KHgsIHkpCiAgICAgewogICAgICAgICB2
YXIgbm9kZSA9IHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUub3duZXJEb2N1bWVudC5lbGVtZW50RnJv
bVBvaW50KHgsIHkpOwogICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bDsKIAogICAgICAgICByZXR1cm4gdGhpcy50cmVlRWxlbWVudEZyb21Ob2RlKG5vZGUpOwotfTsK
KyAgICB9CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5fdHJlZUtleURvd24gPSBmdW5jdGlvbihl
dmVudCkKKyAgICBfdHJlZUtleURvd24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQu
dGFyZ2V0ICE9PSB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNDY4LDQ0ICs0NjgsNDYgQEAgVHJlZU91dGxpbmUucHJvdG90eXBlLl90cmVlS2V5RG93biA9
IGZ1bmN0aW9uKGV2ZW50KQogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAg
ICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICB9Ci19OworICAgIH0K
IAotVHJlZU91dGxpbmUucHJvdG90eXBlLmV4cGFuZCA9IGZ1bmN0aW9uKCkKKyAgICBleHBhbmQo
KQogICAgIHsKICAgICAgICAgLy8gdGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGluZwotfTsKKyAg
ICB9CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5jb2xsYXBzZSA9IGZ1bmN0aW9uKCkKKyAgICBj
b2xsYXBzZSgpCiAgICAgewogICAgICAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5n
Ci19OworICAgIH0KIAotVHJlZU91dGxpbmUucHJvdG90eXBlLnJldmVhbGVkID0gZnVuY3Rpb24o
KQorICAgIHJldmVhbGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotfTsKKyAgICB9
CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZXZlYWwgPSBmdW5jdGlvbigpCisgICAgcmV2ZWFs
KCkKICAgICB7CiAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKLX07Cisg
ICAgfQogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUuc2VsZWN0ID0gZnVuY3Rpb24oKQorICAgIHNl
bGVjdCgpCiAgICAgewogICAgICAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nCi19
OworICAgIH0KIAotVHJlZU91dGxpbmUucHJvdG90eXBlLnJldmVhbEFuZFNlbGVjdCA9IGZ1bmN0
aW9uKG9taXRGb2N1cykKKyAgICByZXZlYWxBbmRTZWxlY3Qob21pdEZvY3VzKQogICAgIHsKICAg
ICAgICAgLy8gdGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGluZworICAgIH0KIH07CiAKLVRyZWVP
dXRsaW5lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlw
ZTsKK1dlYkluc3BlY3Rvci5UcmVlT3V0bGluZS5fa25vd25UcmVlRWxlbWVudE5leHRJZGVudGlm
aWVyID0gMTsKIAotZnVuY3Rpb24gVHJlZUVsZW1lbnQodGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0
LCBoYXNDaGlsZHJlbikKK1dlYkluc3BlY3Rvci5UcmVlRWxlbWVudCA9IGNsYXNzIFRyZWVFbGVt
ZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKHRpdGxl
LCByZXByZXNlbnRlZE9iamVjdCwgaGFzQ2hpbGRyZW4pCiAgICAgewotICAgIC8vIEZJWE1FOiBD
b252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBz
dXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICAgICAg
c3VwZXIoKTsKIAogICAgICAgICB0aGlzLl90aXRsZSA9IHRpdGxlOwogICAgICAgICB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0ID0gKHJlcHJlc2VudGVkT2JqZWN0IHx8IHt9KTsKQEAgLTUxMyw3ICs1
MTUsNyBAQCBmdW5jdGlvbiBUcmVlRWxlbWVudCh0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhh
c0NoaWxkcmVuKQogICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5fX3RyZWVFbGVt
ZW50SWRlbnRpZmllcikKICAgICAgICAgICAgIHRoaXMuaWRlbnRpZmllciA9IHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QuX190cmVlRWxlbWVudElkZW50aWZpZXI7CiAgICAgICAgIGVsc2UgewotICAg
ICAgICB0aGlzLmlkZW50aWZpZXIgPSBUcmVlT3V0bGluZS5fa25vd25UcmVlRWxlbWVudE5leHRJ
ZGVudGlmaWVyKys7CisgICAgICAgICAgICB0aGlzLmlkZW50aWZpZXIgPSBXZWJJbnNwZWN0b3Iu
VHJlZU91dGxpbmUuX2tub3duVHJlZUVsZW1lbnROZXh0SWRlbnRpZmllcisrOwogICAgICAgICAg
ICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5fX3RyZWVFbGVtZW50SWRlbnRpZmllciA9IHRoaXMu
aWRlbnRpZmllcjsKICAgICAgICAgfQogCkBAIC01MzAsNjUgKzUzMiw4NiBAQCBmdW5jdGlvbiBU
cmVlRWxlbWVudCh0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKQogICAgICAg
ICB0aGlzLl9saXN0SXRlbU5vZGUgPSBudWxsOwogICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBUcmVlRWxlbWVudCwKKyAgICAvLyBNZXRob2RzCiAK
LSAgICBhcnJvd1RvZ2dsZVdpZHRoOiAxMCwKKyAgICBhcHBlbmRDaGlsZCgpIHsgcmV0dXJuIFdl
Ykluc3BlY3Rvci5UcmVlT3V0bGluZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQuYXBwbHkodGhpcywg
YXJndW1lbnRzKTsgfQorICAgIGluc2VydENoaWxkKCkgeyByZXR1cm4gV2ViSW5zcGVjdG9yLlRy
ZWVPdXRsaW5lLnByb3RvdHlwZS5pbnNlcnRDaGlsZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9
CisgICAgcmVtb3ZlQ2hpbGQoKSB7IHJldHVybiBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUucHJv
dG90eXBlLnJlbW92ZUNoaWxkLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KKyAgICByZW1vdmVD
aGlsZEF0SW5kZXgoKSB7IHJldHVybiBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUucHJvdG90eXBl
LnJlbW92ZUNoaWxkQXRJbmRleC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9CisgICAgcmVtb3Zl
Q2hpbGRyZW4oKSB7IHJldHVybiBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUucHJvdG90eXBlLnJl
bW92ZUNoaWxkcmVuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KKyAgICByZW1vdmVDaGlsZHJl
blJlY3Vyc2l2ZSgpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZS5wcm90b3R5cGUu
cmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQogCi0gICAg
Z2V0IHNlbGVjdGFibGUoKSB7CisgICAgZ2V0IGFycm93VG9nZ2xlV2lkdGgoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIDEwOworICAgIH0KKworICAgIGdldCBzZWxlY3RhYmxlKCkKKyAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9oaWRkZW4pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9zZWxlY3RhYmxlOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0IHNl
bGVjdGFibGUoeCkgeworICAgIHNldCBzZWxlY3RhYmxlKHgpCisgICAgewogICAgICAgICB0aGlz
Ll9zZWxlY3RhYmxlID0geDsKLSAgICB9LAorICAgIH0KIAotICAgIGdldCBsaXN0SXRlbUVsZW1l
bnQoKSB7CisgICAgZ2V0IGxpc3RJdGVtRWxlbWVudCgpCisgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fbGlzdEl0ZW1Ob2RlOwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0IGNoaWxkcmVuTGlz
dEVsZW1lbnQoKSB7CisgICAgZ2V0IGNoaWxkcmVuTGlzdEVsZW1lbnQoKQorICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBn
ZXQgdGl0bGUoKSB7CisgICAgZ2V0IHRpdGxlKCkKKyAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll90aXRsZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNldCB0aXRsZSh4KSB7CisgICAgc2V0IHRp
dGxlKHgpCisgICAgewogICAgICAgICB0aGlzLl90aXRsZSA9IHg7CiAgICAgICAgIHRoaXMuX3Nl
dExpc3RJdGVtTm9kZUNvbnRlbnQoKTsKICAgICAgICAgdGhpcy5kaWRDaGFuZ2UoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGdldCB0aXRsZUhUTUwoKSB7CisgICAgZ2V0IHRpdGxlSFRNTCgpCisg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGVIVE1MOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2V0IHRpdGxlSFRNTCh4KSB7CisgICAgc2V0IHRpdGxlSFRNTCh4KQorICAgIHsKICAgICAg
ICAgdGhpcy5fdGl0bGVIVE1MID0geDsKICAgICAgICAgdGhpcy5fc2V0TGlzdEl0ZW1Ob2RlQ29u
dGVudCgpOwogICAgICAgICB0aGlzLmRpZENoYW5nZSgpOwotICAgIH0sCisgICAgfQogCi0gICAg
Z2V0IHRvb2x0aXAoKSB7CisgICAgZ2V0IHRvb2x0aXAoKQorICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3Rvb2x0aXA7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXQgdG9vbHRpcCh4KSB7Cisg
ICAgc2V0IHRvb2x0aXAoeCkKKyAgICB7CiAgICAgICAgIHRoaXMuX3Rvb2x0aXAgPSB4OwogICAg
ICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2RlKQogICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1O
b2RlLnRpdGxlID0geCA/IHggOiAiIjsKICAgICAgICAgdGhpcy5kaWRDaGFuZ2UoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGdldCBoYXNDaGlsZHJlbigpIHsKKyAgICBnZXQgaGFzQ2hpbGRyZW4o
KQorICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0NoaWxkcmVuOwotICAgIH0sCisgICAg
fQogCi0gICAgc2V0IGhhc0NoaWxkcmVuKHgpIHsKKyAgICBzZXQgaGFzQ2hpbGRyZW4oeCkKKyAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9oYXNDaGlsZHJlbiA9PT0geCkKICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtNjA1LDEzICs2MjgsMTUgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAKICAgICAgICAgdGhpcy5kaWRDaGFuZ2UoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGdldCBoaWRkZW4oKSB7CisgICAgZ2V0IGhpZGRlbigpCisgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5faGlkZGVuOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0IGhpZGRlbih4KSB7Cisg
ICAgc2V0IGhpZGRlbih4KQorICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2hpZGRlbiA9PT0geCkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjMxLDI3ICs2NTYsMjkgQEAgVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lICYmIHRoaXMudHJl
ZU91dGxpbmUub25oaWRkZW4pCiAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uaGlkZGVu
KHRoaXMsIHgpOwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0IHNob3VsZFJlZnJlc2hDaGlsZHJl
bigpIHsKKyAgICBnZXQgc2hvdWxkUmVmcmVzaENoaWxkcmVuKCkKKyAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zaG91bGRSZWZyZXNoQ2hpbGRyZW47Ci0gICAgfSwKKyAgICB9CiAKLSAgICBz
ZXQgc2hvdWxkUmVmcmVzaENoaWxkcmVuKHgpIHsKKyAgICBzZXQgc2hvdWxkUmVmcmVzaENoaWxk
cmVuKHgpCisgICAgewogICAgICAgICB0aGlzLl9zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB4Owog
ICAgICAgICBpZiAoeCAmJiB0aGlzLmV4cGFuZGVkKQogICAgICAgICAgICAgdGhpcy5leHBhbmQo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9maXJlRGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAg
X2ZpcmVEaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgZGVsZXRlIHRoaXMuX2RpZENoYW5nZVRp
bWVvdXRJZGVudGlmaWVyOwogCiAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lKQogICAgICAg
ICAgICAgdGhpcy50cmVlT3V0bGluZS5fdHJlZUVsZW1lbnREaWRDaGFuZ2UodGhpcyk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBkaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBkaWRDaGFuZ2UoKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5lKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNjU5LDkgKzY4Niw5IEBAIFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
Ly8gUHJldmVudCB0ZWxsaW5nIHRoZSBUcmVlT3V0bGluZSBtdWx0aXBsZSB0aW1lcyBpbiBhIHJv
dyBieSBkZWxheWluZyBpdCB3aXRoIGEgdGltZW91dC4KICAgICAgICAgaWYgKCF0aGlzLl9kaWRD
aGFuZ2VUaW1lb3V0SWRlbnRpZmllcikKICAgICAgICAgICAgIHRoaXMuX2RpZENoYW5nZVRpbWVv
dXRJZGVudGlmaWVyID0gc2V0VGltZW91dCh0aGlzLl9maXJlRGlkQ2hhbmdlLmJpbmQodGhpcyks
IDApOwotICAgIH0sCisgICAgfQogCi0gICAgX3NldExpc3RJdGVtTm9kZUNvbnRlbnQ6IGZ1bmN0
aW9uKCkKKyAgICBfc2V0TGlzdEl0ZW1Ob2RlQ29udGVudCgpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX2xpc3RJdGVtTm9kZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY3OSwxNiArNzA2
LDggQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbGlzdEl0
ZW1Ob2RlLmFwcGVuZENoaWxkKHRoaXMuX3RpdGxlKTsKICAgICAgICAgfQogICAgIH0KLX07Ci0K
LVRyZWVFbGVtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9IFRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5hcHBlbmRDaGlsZDsKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5pbnNlcnRDaGlsZCA9IFRyZWVP
dXRsaW5lLnByb3RvdHlwZS5pbnNlcnRDaGlsZDsKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5yZW1v
dmVDaGlsZCA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1vdmVDaGlsZDsKLVRyZWVFbGVtZW50
LnByb3RvdHlwZS5yZW1vdmVDaGlsZEF0SW5kZXggPSBUcmVlT3V0bGluZS5wcm90b3R5cGUucmVt
b3ZlQ2hpbGRBdEluZGV4OwotVHJlZUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuID0g
VHJlZU91dGxpbmUucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuOwotVHJlZUVsZW1lbnQucHJvdG90
eXBlLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlID0gVHJlZU91dGxpbmUucHJvdG90eXBlLnJlbW92
ZUNoaWxkcmVuUmVjdXJzaXZlOwogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUuX2F0dGFjaCA9IGZ1
bmN0aW9uKCkKKyAgICBfYXR0YWNoKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbGlzdEl0
ZW1Ob2RlIHx8IHRoaXMucGFyZW50Ll9zaG91bGRSZWZyZXNoQ2hpbGRyZW4pIHsKICAgICAgICAg
ICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUgJiYgdGhpcy5fbGlzdEl0ZW1Ob2RlLnBhcmVudE5v
ZGUpCkBAIC03MDgsOSArNzI3LDkgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlLl9hdHRhY2ggPSBm
dW5jdGlvbigpCiAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCkKICAgICAgICAgICAgICAg
ICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTsKIAotICAgICAg
ICB0aGlzLl9saXN0SXRlbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgVHJlZUVs
ZW1lbnQudHJlZUVsZW1lbnRNb3VzZURvd24sIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fbGlzdEl0
ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgVHJlZUVsZW1lbnQudHJlZUVsZW1lbnRU
b2dnbGVkLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3Rl
bmVyKCJkYmxjbGljayIsIFRyZWVFbGVtZW50LnRyZWVFbGVtZW50RG91YmxlQ2xpY2tlZCwgZmFs
c2UpOworICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlZG93biIsIFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudC50cmVlRWxlbWVudE1vdXNlRG93biwg
ZmFsc2UpOworICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50LnRyZWVFbGVtZW50VG9nZ2xlZCwgZmFs
c2UpOworICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoImRi
bGNsaWNrIiwgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50LnRyZWVFbGVtZW50RG91YmxlQ2xpY2tl
ZCwgZmFsc2UpOwogCiAgICAgICAgICAgICBpZiAodGhpcy5vbmF0dGFjaCkKICAgICAgICAgICAg
ICAgICB0aGlzLm9uYXR0YWNoKHRoaXMpOwpAQCAtNzI2LDkgKzc0NSw5IEBAIFRyZWVFbGVtZW50
LnByb3RvdHlwZS5fYXR0YWNoID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgdGhpcy5zZWxlY3Qo
KTsKICAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpCiAgICAgICAgICAgICB0aGlzLmV4cGFuZCgp
OwotfTsKKyAgICB9CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5fZGV0YWNoID0gZnVuY3Rpb24o
KQorICAgIF9kZXRhY2goKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMub25kZXRhY2gpCiAgICAg
ICAgICAgICB0aGlzLm9uZGV0YWNoKHRoaXMpOwpAQCAtNzM2LDkgKzc1NSw5IEBAIFRyZWVFbGVt
ZW50LnByb3RvdHlwZS5fZGV0YWNoID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgdGhpcy5fbGlz
dEl0ZW1Ob2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fbGlzdEl0ZW1Ob2RlKTsKICAg
ICAgICAgaWYgKHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUgJiYgdGhpcy5fY2hpbGRyZW5MaXN0Tm9k
ZS5wYXJlbnROb2RlKQogICAgICAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUpOwotfTsKKyAgICB9CiAKLVRy
ZWVFbGVtZW50LnRyZWVFbGVtZW50TW91c2VEb3duID0gZnVuY3Rpb24oZXZlbnQpCisgICAgc3Rh
dGljIHRyZWVFbGVtZW50TW91c2VEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGVsZW1l
bnQgPSBldmVudC5jdXJyZW50VGFyZ2V0OwogICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1l
bnQudHJlZUVsZW1lbnQgfHwgIWVsZW1lbnQudHJlZUVsZW1lbnQuc2VsZWN0YWJsZSkKQEAgLTc1
MCw5ICs3NjksOSBAQCBUcmVlRWxlbWVudC50cmVlRWxlbWVudE1vdXNlRG93biA9IGZ1bmN0aW9u
KGV2ZW50KQogICAgICAgICB9CiAKICAgICAgICAgZWxlbWVudC50cmVlRWxlbWVudC5zZWxlY3RP
bk1vdXNlRG93bihldmVudCk7Ci19OworICAgIH0KIAotVHJlZUVsZW1lbnQudHJlZUVsZW1lbnRU
b2dnbGVkID0gZnVuY3Rpb24oZXZlbnQpCisgICAgc3RhdGljIHRyZWVFbGVtZW50VG9nZ2xlZChl
dmVudCkKICAgICB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDsK
ICAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LnRyZWVFbGVtZW50KQpAQCAtNzc1LDkg
Kzc5NCw5IEBAIFRyZWVFbGVtZW50LnRyZWVFbGVtZW50VG9nZ2xlZCA9IGZ1bmN0aW9uKGV2ZW50
KQogICAgICAgICAgICAgICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuZXhwYW5kKCk7CiAgICAgICAg
IH0KICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci19OworICAgIH0KIAotVHJlZUVs
ZW1lbnQudHJlZUVsZW1lbnREb3VibGVDbGlja2VkID0gZnVuY3Rpb24oZXZlbnQpCisgICAgc3Rh
dGljIHRyZWVFbGVtZW50RG91YmxlQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBl
bGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDsKICAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFl
bGVtZW50LnRyZWVFbGVtZW50KQpAQCAtNzkwLDkgKzgwOSw5IEBAIFRyZWVFbGVtZW50LnRyZWVF
bGVtZW50RG91YmxlQ2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KQogICAgICAgICAgICAgZWxlbWVu
dC50cmVlRWxlbWVudC5vbmRibGNsaWNrLmNhbGwoZWxlbWVudC50cmVlRWxlbWVudCwgZXZlbnQp
OwogICAgICAgICBlbHNlIGlmIChlbGVtZW50LnRyZWVFbGVtZW50Lmhhc0NoaWxkcmVuICYmICFl
bGVtZW50LnRyZWVFbGVtZW50LmV4cGFuZGVkKQogICAgICAgICAgICAgZWxlbWVudC50cmVlRWxl
bWVudC5leHBhbmQoKTsKLX07CisgICAgfQogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUuY29sbGFw
c2UgPSBmdW5jdGlvbigpCisgICAgY29sbGFwc2UoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMu
X2xpc3RJdGVtTm9kZSkKICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3Qu
cmVtb3ZlKCJleHBhbmRlZCIpOwpAQCAtODA4LDkgKzgyNyw5IEBAIFRyZWVFbGVtZW50LnByb3Rv
dHlwZS5jb2xsYXBzZSA9IGZ1bmN0aW9uKCkKIAogICAgICAgICBpZiAodGhpcy50cmVlT3V0bGlu
ZSAmJiB0aGlzLnRyZWVPdXRsaW5lLm9uY29sbGFwc2UpCiAgICAgICAgICAgICB0aGlzLnRyZWVP
dXRsaW5lLm9uY29sbGFwc2UodGhpcyk7Ci19OworICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90
eXBlLmNvbGxhcHNlUmVjdXJzaXZlbHkgPSBmdW5jdGlvbigpCisgICAgY29sbGFwc2VSZWN1cnNp
dmVseSgpCiAgICAgewogICAgICAgICB2YXIgaXRlbSA9IHRoaXM7CiAgICAgICAgIHdoaWxlIChp
dGVtKSB7CkBAIC04MTgsOSArODM3LDkgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlLmNvbGxhcHNl
UmVjdXJzaXZlbHkgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICAgICAgaXRlbS5jb2xsYXBzZSgp
OwogICAgICAgICAgICAgaXRlbSA9IGl0ZW0udHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2Us
IHRoaXMsIHRydWUpOwogICAgICAgICB9Ci19OworICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90
eXBlLmV4cGFuZCA9IGZ1bmN0aW9uKCkKKyAgICBleHBhbmQoKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuZXhwYW5kZWQgJiYgIXRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiAmJiB0aGlzLl9j
aGlsZHJlbkxpc3ROb2RlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODcwLDkgKzg4OSw5IEBA
IFRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmQgPSBmdW5jdGlvbigpCiAKICAgICAgICAgaWYg
KHRoaXMudHJlZU91dGxpbmUgJiYgdGhpcy50cmVlT3V0bGluZS5vbmV4cGFuZCkKICAgICAgICAg
ICAgIHRoaXMudHJlZU91dGxpbmUub25leHBhbmQodGhpcyk7Ci19OworICAgIH0KIAotVHJlZUVs
ZW1lbnQucHJvdG90eXBlLmV4cGFuZFJlY3Vyc2l2ZWx5ID0gZnVuY3Rpb24obWF4RGVwdGgpCisg
ICAgZXhwYW5kUmVjdXJzaXZlbHkobWF4RGVwdGgpCiAgICAgewogICAgICAgICB2YXIgaXRlbSA9
IHRoaXM7CiAgICAgICAgIHZhciBpbmZvID0ge307CkBAIC04OTAsOSArOTA5LDEwIEBAIFRyZWVF
bGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1cnNpdmVseSA9IGZ1bmN0aW9uKG1heERlcHRoKQog
ICAgICAgICAgICAgaXRlbSA9IGl0ZW0udHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2UsIHRo
aXMsIChkZXB0aCA+PSBtYXhEZXB0aCksIGluZm8pOwogICAgICAgICAgICAgZGVwdGggKz0gaW5m
by5kZXB0aENoYW5nZTsKICAgICAgICAgfQotfTsKKyAgICB9CiAKLVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5oYXNBbmNlc3RvciA9IGZ1bmN0aW9uKGFuY2VzdG9yKSB7CisgICAgaGFzQW5jZXN0b3Io
YW5jZXN0b3IpCisgICAgICAgIHsKICAgICAgICAgaWYgKCFhbmNlc3RvcikKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtOTA0LDkgKzkyNCw5IEBAIFRyZWVFbGVtZW50LnByb3RvdHlw
ZS5oYXNBbmNlc3RvciA9IGZ1bmN0aW9uKGFuY2VzdG9yKSB7CiAgICAgICAgIH0KIAogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci19OworICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLnJldmVh
bCA9IGZ1bmN0aW9uKCkKKyAgICByZXZlYWwoKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRB
bmNlc3RvciA9IHRoaXMucGFyZW50OwogICAgICAgICB3aGlsZSAoY3VycmVudEFuY2VzdG9yICYm
ICFjdXJyZW50QW5jZXN0b3Iucm9vdCkgewpAQCAtOTE3LDkgKzkzNyw5IEBAIFRyZWVFbGVtZW50
LnByb3RvdHlwZS5yZXZlYWwgPSBmdW5jdGlvbigpCiAKICAgICAgICAgaWYgKHRoaXMub25yZXZl
YWwpCiAgICAgICAgICAgICB0aGlzLm9ucmV2ZWFsKHRoaXMpOwotfTsKKyAgICB9CiAKLVRyZWVF
bGVtZW50LnByb3RvdHlwZS5yZXZlYWxlZCA9IGZ1bmN0aW9uKCkKKyAgICByZXZlYWxlZCgpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5oaWRkZW4pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC05MzQsMTQgKzk1NCwxNCBAQCBUcmVlRWxlbWVudC5wcm90b3R5cGUucmV2ZWFsZWQgPSBm
dW5jdGlvbigpCiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsKLX07CisgICAgfQog
Ci1UcmVlRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0T25Nb3VzZURvd24gPSBmdW5jdGlvbihldmVu
dCkKKyAgICBzZWxlY3RPbk1vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuc2Vs
ZWN0KGZhbHNlLCB0cnVlKTsKLX07CisgICAgfQogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUuc2Vs
ZWN0ID0gZnVuY3Rpb24ob21pdEZvY3VzLCBzZWxlY3RlZEJ5VXNlciwgc3VwcHJlc3NPblNlbGVj
dCwgc3VwcHJlc3NPbkRlc2VsZWN0KQorICAgIHNlbGVjdChvbWl0Rm9jdXMsIHNlbGVjdGVkQnlV
c2VyLCBzdXBwcmVzc09uU2VsZWN0LCBzdXBwcmVzc09uRGVzZWxlY3QpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMudHJlZU91dGxpbmUgfHwgIXRoaXMuc2VsZWN0YWJsZSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTk3NiwxNSArOTk2LDE1IEBAIFRyZWVFbGVtZW50LnByb3RvdHlwZS5zZWxl
Y3QgPSBmdW5jdGlvbihvbWl0Rm9jdXMsIHNlbGVjdGVkQnlVc2VyLCBzdXBwcmVzc09uU2VsCiAg
ICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uc2VsZWN0KHRoaXMsIHNlbGVjdGVkQnlVc2Vy
KTsKIAogICAgICAgICBkZWxldGUgdGhpcy50cmVlT3V0bGluZS5wcm9jZXNzaW5nU2VsZWN0aW9u
Q2hhbmdlOwotfTsKKyAgICB9CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5yZXZlYWxBbmRTZWxl
Y3QgPSBmdW5jdGlvbihvbWl0Rm9jdXMsIHNlbGVjdGVkQnlVc2VyLCBzdXBwcmVzc09uU2VsZWN0
LCBzdXBwcmVzc09uRGVzZWxlY3QpCisgICAgcmV2ZWFsQW5kU2VsZWN0KG9taXRGb2N1cywgc2Vs
ZWN0ZWRCeVVzZXIsIHN1cHByZXNzT25TZWxlY3QsIHN1cHByZXNzT25EZXNlbGVjdCkKICAgICB7
CiAgICAgICAgIHRoaXMucmV2ZWFsKCk7CiAgICAgICAgIHRoaXMuc2VsZWN0KG9taXRGb2N1cywg
c2VsZWN0ZWRCeVVzZXIsIHN1cHByZXNzT25TZWxlY3QsIHN1cHByZXNzT25EZXNlbGVjdCk7Ci19
OworICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLmRlc2VsZWN0ID0gZnVuY3Rpb24oc3Vw
cHJlc3NPbkRlc2VsZWN0KQorICAgIGRlc2VsZWN0KHN1cHByZXNzT25EZXNlbGVjdCkKICAgICB7
CiAgICAgICAgIGlmICghdGhpcy50cmVlT3V0bGluZSB8fCB0aGlzLnRyZWVPdXRsaW5lLnNlbGVj
dGVkVHJlZUVsZW1lbnQgIT09IHRoaXMgfHwgIXRoaXMuc2VsZWN0ZWQpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMDAyLDE0ICsxMDIyLDE0IEBAIFRyZWVFbGVtZW50LnByb3RvdHlw
ZS5kZXNlbGVjdCA9IGZ1bmN0aW9uKHN1cHByZXNzT25EZXNlbGVjdCkKICAgICAgICAgICAgIHRo
aXMudHJlZU91dGxpbmUub25kZXNlbGVjdCh0aGlzKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsK
LX07CisgICAgfQogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUub25wb3B1bGF0ZSA9IGZ1bmN0aW9u
KCkKKyAgICBvbnBvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIC8vIE92ZXJyaWRlbiBieSBzdWJj
bGFzc2VzLgotfTsKKyAgICB9CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS50cmF2ZXJzZU5leHRU
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKHNraXBVbnJldmVhbGVkLCBzdGF5V2l0aGluLCBkb250UG9w
dWxhdGUsIGluZm8pCisgICAgdHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoc2tpcFVucmV2ZWFsZWQs
IHN0YXlXaXRoaW4sIGRvbnRQb3B1bGF0ZSwgaW5mbykKICAgICB7CiAgICAgICAgIGlmICghZG9u
dFBvcHVsYXRlICYmIHRoaXMuaGFzQ2hpbGRyZW4pCiAgICAgICAgICAgICB0aGlzLm9ucG9wdWxh
dGUuY2FsbCh0aGlzKTsgLy8gRklYTUU6IFRoaXMgc2hvdWxkbid0IG5lZWQgdG8gdXNlIGNhbGws
IGJ1dCB0aGlzIGlzIHdvcmtpbmcgYXJvdW5kIGEgSlNDIGJ1Zy4gaHR0cHM6Ly93ZWJraXQub3Jn
L2IvNzQ4MTEKQEAgLTEwNDIsOSArMTA2Miw5IEBAIFRyZWVFbGVtZW50LnByb3RvdHlwZS50cmF2
ZXJzZU5leHRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHNraXBVbnJldmVhbGVkLCBzdGF5V2l0CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICByZXR1cm4gKHNraXBVbnJldmVhbGVk
ID8gKGVsZW1lbnQucmV2ZWFsZWQoKSA/IGVsZW1lbnQubmV4dFNpYmxpbmcgOiBudWxsKSA6IGVs
ZW1lbnQubmV4dFNpYmxpbmcpOwotfTsKKyAgICB9CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS50
cmF2ZXJzZVByZXZpb3VzVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihza2lwVW5yZXZlYWxlZCwgZG9u
dFBvcHVsYXRlKQorICAgIHRyYXZlcnNlUHJldmlvdXNUcmVlRWxlbWVudChza2lwVW5yZXZlYWxl
ZCwgZG9udFBvcHVsYXRlKQogICAgIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBza2lwVW5yZXZl
YWxlZCA/ICh0aGlzLnJldmVhbGVkKCkgPyB0aGlzLnByZXZpb3VzU2libGluZyA6IG51bGwpIDog
dGhpcy5wcmV2aW91c1NpYmxpbmc7CiAgICAgICAgIGlmICghZG9udFBvcHVsYXRlICYmIGVsZW1l
bnQgJiYgZWxlbWVudC5oYXNDaGlsZHJlbikKQEAgLTEwNjMsOSArMTA4Myw5IEBAIFRyZWVFbGVt
ZW50LnByb3RvdHlwZS50cmF2ZXJzZVByZXZpb3VzVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihza2lw
VW5yZXZlYWxlZCwgZG9uCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICByZXR1
cm4gdGhpcy5wYXJlbnQ7Ci19OworICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLmlzRXZl
bnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUgPSBmdW5jdGlvbihldmVudCkKKyAgICBpc0V2ZW50
V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCFkb2N1
bWVudC5jb250YWlucyh0aGlzLl9saXN0SXRlbU5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTA3NCw2ICsxMDk0LDUgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlLmlzRXZlbnRX
aXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUgPSBmdW5jdGlvbihldmVudCkKICAgICAgICAgdmFyIGNv
bXB1dGVkTGVmdFBhZGRpbmcgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9saXN0SXRl
bU5vZGUpLmdldFByb3BlcnR5Q1NTVmFsdWUoInBhZGRpbmctbGVmdCIpLmdldEZsb2F0VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWUuQ1NTX1BYKTsKICAgICAgICAgdmFyIGxlZnQgPSB0aGlzLl9saXN0
SXRlbU5vZGUudG90YWxPZmZzZXRMZWZ0ICsgY29tcHV0ZWRMZWZ0UGFkZGluZzsKICAgICAgICAg
cmV0dXJuIGV2ZW50LnBhZ2VYID49IGxlZnQgJiYgZXZlbnQucGFnZVggPD0gbGVmdCArIHRoaXMu
YXJyb3dUb2dnbGVXaWR0aCAmJiB0aGlzLmhhc0NoaWxkcmVuOworICAgIH0KIH07Ci0KLVRyZWVF
bGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLmpz
CmluZGV4IGFlOWY4NDQuLjc3NDM0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxp
bmVEYXRhR3JpZFN5bmNocm9uaXplci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTAgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0
YUdyaWRTeW5jaHJvbml6ZXIgPSBmdW5jdGlvbih0cmVlT3V0bGluZSwgZGF0YUdyaWQsIGRlbGVn
YXRlKQorV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIgPSBjbGFz
cyBUcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcih0cmVlT3V0bGluZSwgZGF0YUdyaWQsIGRl
bGVnYXRlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICB0aGlzLl90cmVlT3V0
bGluZSA9IHRyZWVPdXRsaW5lOwogICAgICAgICB0aGlzLl9kYXRhR3JpZCA9IGRhdGFHcmlkOwpA
QCAtODUsNjMgKzg2LDU5IEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hy
b25pemVyID0gZnVuY3Rpb24odHJlZU91dGxpbmUsIGRhdGFHcmlkLCBkCiAgICAgICAgICAgICBp
ZiAoZXhpc3RpbmdPblNlbGVjdCkKICAgICAgICAgICAgICAgICBleGlzdGluZ09uU2VsZWN0LmNh
bGwodHJlZU91dGxpbmUsIGVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKTsKICAgICAgICAgfS5iaW5k
KHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6
ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVHJlZU91dGxp
bmVEYXRhR3JpZFN5bmNocm9uaXplciwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmpl
Y3QucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHRyZWVPdXRs
aW5lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90cmVlT3V0bGluZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBkYXRhR3JpZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZGF0YUdyaWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGVsZWdhdGUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVu
YWJsZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBzZXQgZW5hYmxlZCh4KQogICAgIHsKICAgICAgICAgdGhpcy5fZW5hYmxlZCA9
IHggfHwgZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhc3NvY2lhdGU6IGZ1bmN0aW9uKHRy
ZWVFbGVtZW50LCBkYXRhR3JpZE5vZGUpCisgICAgYXNzb2NpYXRlKHRyZWVFbGVtZW50LCBkYXRh
R3JpZE5vZGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudCk7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGFHcmlkTm9kZSk7CiAKICAgICAgICAgdHJlZUVsZW1l
bnQuX19kYXRhR3JpZE5vZGUgPSBkYXRhR3JpZE5vZGU7CiAgICAgICAgIGRhdGFHcmlkTm9kZS5f
X3RyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzeW5jaHJv
bml6ZTogZnVuY3Rpb24oKQorICAgIHN5bmNocm9uaXplKCkKICAgICB7CiAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLnNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSB0aGlzLl90cmVlT3V0bGluZS5l
bGVtZW50LnBhcmVudE5vZGUuc2Nyb2xsVG9wOwogICAgICAgICBpZiAodGhpcy5fdHJlZU91dGxp
bmUuc2VsZWN0ZWRUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHRoaXMuX3RyZWVPdXRsaW5lLnNl
bGVjdGVkVHJlZUVsZW1lbnQuX19kYXRhR3JpZE5vZGUuc2VsZWN0KHRydWUpOwogICAgICAgICBl
bHNlIGlmICh0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCiAgICAgICAgICAgICB0aGlzLl9k
YXRhR3JpZC5zZWxlY3RlZE5vZGUuZGVzZWxlY3QodHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICB0cmVlRWxlbWVudEZvckRhdGFHcmlkTm9kZTogZnVuY3Rpb24oZGF0YUdyaWROb2RlKQorICAg
IHRyZWVFbGVtZW50Rm9yRGF0YUdyaWROb2RlKGRhdGFHcmlkTm9kZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBkYXRhR3JpZE5vZGUuX190cmVlRWxlbWVudCB8fCBudWxsOwotICAgIH0sCisgICAg
fQogCi0gICAgZGF0YUdyaWROb2RlRm9yVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50
KQorICAgIGRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50KHRyZWVFbGVtZW50KQogICAgIHsKICAg
ICAgICAgaWYgKHRyZWVFbGVtZW50Ll9fZGF0YUdyaWROb2RlKQogICAgICAgICAgICAgcmV0dXJu
IHRyZWVFbGVtZW50Ll9fZGF0YUdyaWROb2RlOwpAQCAtMTU0LDExICsxNTEsMTEgQEAgV2ViSW5z
cGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBlID0gewogICAg
ICAgICB9CiAKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQ
cml2YXRlCiAKLSAgICBfdHJlZU91dGxpbmVTY3JvbGxlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X3RyZWVPdXRsaW5lU2Nyb2xsZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2Vu
YWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzAsOSArMTY3LDkgQEAgV2ViSW5zcGVj
dG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBlID0gewogCiAgICAg
ICAgIHRoaXMuX2lnbm9yZU5leHREYXRhR3JpZFNjcm9sbEV2ZW50ID0gdHJ1ZTsKICAgICAgICAg
dGhpcy5fZGF0YUdyaWQuc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcCA9IHRoaXMuX3RyZWVPdXRs
aW5lLmVsZW1lbnQucGFyZW50Tm9kZS5zY3JvbGxUb3A7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
ZGF0YUdyaWRTY3JvbGxlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFHcmlkU2Nyb2xsZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xODQsOSArMTgxLDkgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdy
aWRTeW5jaHJvbml6ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2lnbm9yZU5leHRU
cmVlT3V0bGluZVNjcm9sbEV2ZW50ID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fdHJlZU91dGxpbmUu
ZWxlbWVudC5wYXJlbnROb2RlLnNjcm9sbFRvcCA9IHRoaXMuX2RhdGFHcmlkLnNjcm9sbENvbnRh
aW5lci5zY3JvbGxUb3A7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWROb2RlU2VsZWN0
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhR3JpZE5vZGVTZWxlY3RlZChldmVudCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTE5NCw5ICsxOTEsOSBAQCBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9u
aXplci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRh
R3JpZC5zZWxlY3RlZE5vZGU7CiAgICAgICAgIGlmIChkYXRhR3JpZE5vZGUpCiAgICAgICAgICAg
ICBkYXRhR3JpZE5vZGUuX190cmVlRWxlbWVudC5zZWxlY3QodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1
ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWROb2RlRXhwYW5kZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9kYXRhR3JpZE5vZGVFeHBhbmRlZChldmVudCkKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwNiw5ICsyMDMs
OSBAQCBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgaWYgKCFkYXRhR3JpZE5vZGUuX190cmVlRWxlbWVudC5leHBhbmRl
ZCkKICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS5fX3RyZWVFbGVtZW50LmV4cGFuZCgpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkTm9kZUNvbGxhcHNlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2RhdGFHcmlkTm9kZUNvbGxhcHNlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIxOCw5ICsyMTUsOSBAQCBX
ZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgaWYgKGRhdGFHcmlkTm9kZS5fX3RyZWVFbGVtZW50LmV4cGFuZGVkKQogICAg
ICAgICAgICAgZGF0YUdyaWROb2RlLl9fdHJlZUVsZW1lbnQuY29sbGFwc2UoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF90cmVlRWxlbWVudFNlbGVjdGVkOiBmdW5jdGlvbih0cmVlRWxlbWVudCwg
c2VsZWN0ZWRCeVVzZXIpCisgICAgX3RyZWVFbGVtZW50U2VsZWN0ZWQodHJlZUVsZW1lbnQsIHNl
bGVjdGVkQnlVc2VyKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMjI5LDkgKzIyNiw5IEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGlu
ZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoZGF0YUdyaWROb2RlKTsKIAogICAgICAgICBkYXRhR3JpZE5vZGUuc2VsZWN0KHRydWUpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50QWRkZWQ6IGZ1bmN0aW9uKHRyZWVFbGVt
ZW50KQorICAgIF90cmVlRWxlbWVudEFkZGVkKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQ2LDkgKzI0Myw5
IEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY2hpbGRJbmRleCAhPT0gLTEpOwogCiAgICAg
ICAgIHBhcmVudERhdGFHcmlkTm9kZS5pbnNlcnRDaGlsZChkYXRhR3JpZE5vZGUsIGNoaWxkSW5k
ZXgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50UmVtb3ZlZDogZnVuY3Rpb24o
dHJlZUVsZW1lbnQpCisgICAgX3RyZWVFbGVtZW50UmVtb3ZlZCh0cmVlRWxlbWVudCkKICAgICB7
CiAgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1
OCw5ICsyNTUsOSBAQCBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXpl
ci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKGRhdGFHcmlkTm9kZS5wYXJlbnQpCiAgICAg
ICAgICAgICBkYXRhR3JpZE5vZGUucGFyZW50LnJlbW92ZUNoaWxkKGRhdGFHcmlkTm9kZSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRFeHBhbmRlZDogZnVuY3Rpb24odHJlZUVs
ZW1lbnQpCisgICAgX3RyZWVFbGVtZW50RXhwYW5kZWQodHJlZUVsZW1lbnQpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNzAsOSAr
MjY3LDkgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJv
dG90eXBlID0gewogCiAgICAgICAgIGlmICghZGF0YUdyaWROb2RlLmV4cGFuZGVkKQogICAgICAg
ICAgICAgZGF0YUdyaWROb2RlLmV4cGFuZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVF
bGVtZW50Q29sbGFwc2VkOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfdHJlZUVsZW1lbnRD
b2xsYXBzZWQodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yODIsOSArMjc5LDkgQEAgV2ViSW5zcGVjdG9yLlRy
ZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlm
IChkYXRhR3JpZE5vZGUuZXhwYW5kZWQpCiAgICAgICAgICAgICBkYXRhR3JpZE5vZGUuY29sbGFw
c2UoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudEhpZGRlbkNoYW5nZWQ6IGZ1
bmN0aW9uKHRyZWVFbGVtZW50LCBoaWRkZW4pCisgICAgX3RyZWVFbGVtZW50SGlkZGVuQ2hhbmdl
ZCh0cmVlRWxlbWVudCwgaGlkZGVuKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVk
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjk1LDUgKzI5MiwzIEBAIFdlYkluc3BlY3Rvci5U
cmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGF0
YUdyaWROb2RlLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiaGlkZGVuIiwgaGlkZGVuKTsKICAg
ICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UeXBlUHJv
cGVydGllc1NlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UeXBlUHJvcGVydGllc1NlY3Rpb24uanMKaW5kZXggOTQ2MDRjNy4uNTJkMjE4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHlwZVBy
b3BlcnRpZXNTZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1R5cGVQcm9wZXJ0aWVzU2VjdGlvbi5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OCw3ICs2OCw3IEBAIFdlYkluc3Bl
Y3Rvci5UeXBlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFy
IHRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICB0aXRs
ZS5jbGFzc05hbWUgPSAiaW5mbyI7CiAgICAgICAgICAgICB0aXRsZS50ZXh0Q29udGVudCA9IHRo
aXMuZW1wdHlQbGFjZWhvbGRlcjsKLSAgICAgICAgICAgIHZhciBpbmZvRWxlbWVudCA9IG5ldyBU
cmVlRWxlbWVudCh0aXRsZSwgbnVsbCwgZmFsc2UpOworICAgICAgICAgICAgdmFyIGluZm9FbGVt
ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudCh0aXRsZSwgbnVsbCwgZmFsc2UpOwog
ICAgICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQoaW5mb0Vs
ZW1lbnQpOwogICAgICAgICB9CiAKQEAgLTc5LDcxICs3OSwyMyBAQCBXZWJJbnNwZWN0b3IuVHlw
ZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi0vLyBUaGlzIGlz
IG1vc3RseSBpZGVudGljYWwgdG8gT2JqZWN0VHJlZVZpZXcuY29tcGFyZVByb3BlcnRpZXMuCi0v
LyBCdXQgdGhpcyBjaGVja3MgZm9yIGVxdWFsaXR5IGJlY2F1c2Ugd2UgY2FuIGhhdmUgdHdvIG9i
amVjdHMgbmFtZWQgdGhlIHNhbWUgdGhpbmcuCi1XZWJJbnNwZWN0b3IuVHlwZVByb3BlcnRpZXNT
ZWN0aW9uLlByb3BlcnR5Q29tcGFyYXRvciA9IGZ1bmN0aW9uKHByb3BlcnR5QSwgcHJvcGVydHlC
KQorV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0eVRyZWVFbGVtZW50ID0gY2xhc3MgVHlwZVByb3Bl
cnR5VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQKIHsKLSAgICB2
YXIgYSA9IHByb3BlcnR5QS5uYW1lOwotICAgIHZhciBiID0gcHJvcGVydHlCLm5hbWU7Ci0gICAg
aWYgKGEuaW5kZXhPZigiX19wcm90b19fIikgIT09IC0xKQotICAgICAgICByZXR1cm4gMTsKLSAg
ICBpZiAoYi5pbmRleE9mKCJfX3Byb3RvX18iKSAhPT0gLTEpCi0gICAgICAgIHJldHVybiAtMTsK
LSAgICBpZiAoYSA9PT0gYikKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICB2YXIgZGlmZiA9IDA7
Ci0gICAgdmFyIGNodW5rID0gL15cZCt8XlxEKy87Ci0gICAgdmFyIGNodW5rYSwgY2h1bmtiLCBh
bnVtLCBibnVtOwotICAgIHdoaWxlIChkaWZmID09PSAwKSB7Ci0gICAgICAgIGlmICghYSAmJiBi
KQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoIWIgJiYgYSkKLSAgICAgICAg
ICAgIHJldHVybiAxOwotICAgICAgICBjaHVua2EgPSBhLm1hdGNoKGNodW5rKVswXTsKLSAgICAg
ICAgY2h1bmtiID0gYi5tYXRjaChjaHVuaylbMF07Ci0gICAgICAgIGFudW0gPSAhaXNOYU4oY2h1
bmthKTsKLSAgICAgICAgYm51bSA9ICFpc05hTihjaHVua2IpOwotICAgICAgICBpZiAoYW51bSAm
JiAhYm51bSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKGJudW0gJiYgIWFu
dW0pCi0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgaWYgKGFudW0gJiYgYm51bSkgewot
ICAgICAgICAgICAgZGlmZiA9IGNodW5rYSAtIGNodW5rYjsKLSAgICAgICAgICAgIGlmIChkaWZm
ID09PSAwICYmIGNodW5rYS5sZW5ndGggIT09IGNodW5rYi5sZW5ndGgpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIStjaHVua2EgJiYgIStjaHVua2IpIC8vIGNodW5rcyBhcmUgc3RyaW5ncyBvZiBh
bGwgMHMgKHNwZWNpYWwgY2FzZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNodW5rYS5s
ZW5ndGggLSBjaHVua2IubGVuZ3RoOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNodW5rYi5sZW5ndGggLSBjaHVua2EubGVuZ3RoOwotICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgaWYgKGNodW5rYSAhPT0gY2h1bmtiKQotICAgICAgICAgICAg
cmV0dXJuIChjaHVua2EgPCBjaHVua2IpID8gLTEgOiAxOwotICAgICAgICBhID0gYS5zdWJzdHJp
bmcoY2h1bmthLmxlbmd0aCk7Ci0gICAgICAgIGIgPSBiLnN1YnN0cmluZyhjaHVua2IubGVuZ3Ro
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZGlmZjsKLX07Ci0KLVdlYkluc3BlY3Rvci5UeXBlUHJv
cGVydHlUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHByb3BlcnR5KQorICAgIGNvbnN0cnVjdG9yKHBy
b3BlcnR5KQogICAgIHsKKyAgICAgICAgc3VwZXIodGhpcy5uYW1lRWxlbWVudCwgbnVsbCwgZmFs
c2UpOworCiAgICAgICAgIHRoaXMucHJvcGVydHkgPSBwcm9wZXJ0eTsKIAogICAgICAgICB0aGlz
Lm5hbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICB0
aGlzLm5hbWVFbGVtZW50LmNsYXNzTmFtZSA9ICJuYW1lIjsKICAgICAgICAgdGhpcy5uYW1lRWxl
bWVudC50ZXh0Q29udGVudCA9IHRoaXMucHJvcGVydHkubmFtZTsKIAotICAgIFRyZWVFbGVtZW50
LmNhbGwodGhpcywgdGhpcy5uYW1lRWxlbWVudCwgbnVsbCwgZmFsc2UpOwotCiAgICAgICAgIHRo
aXMudG9nZ2xlT25DbGljayA9IHRydWU7CiAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSAhIXRo
aXMucHJvcGVydHkuc3RydWN0dXJlOwotfTsKLQotV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlR5
cGVQcm9wZXJ0eVRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogVHJlZUVsZW1lbnQucHJvdG90
eXBlLAorICAgIH0KIAotICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRl
KCkKICAgICB7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtMTg0LDQgKzEz
NiwzIEBAIFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVHlwZVByb3Bl
cnR5VHJlZUVsZW1lbnQocHJvcGVydHkpKTsKICAgICB9CiB9OwotCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249510</attachid>
            <date>2015-03-26 13:10:54 -0700</date>
            <delta_ts>2015-03-26 15:06:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143111-20150326131020.patch</filename>
            <type>text/plain</type>
            <size>289486</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
NWY0ZDE0N2FiZTZkMzJhNjkyZjQ0ZmM4YWM3NTQxNWVmNTE3MTIzLi4zYjU0YWJmZGVhODYwYzgx
OGQwM2NkMmQzYTEyNDliYmM0MjZmMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1OCBAQAogMjAxNS0wMy0yNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBUcmVlRWxlbWVudCBjbGFzc2Vz
IHRvIEVTNgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQzMTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50Lmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
VHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50
VHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DYWxsRnJhbWVU
cmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93
VHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9y
YWdlVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01TdG9y
YWdlVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVl
RWxlbWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5l
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VIb3N0VHJlZUVsZW1l
bnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxlVHJlZUVs
ZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRyZWVFbGVt
ZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRm9sZGVyVHJlZUVsZW1lbnQu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Gb2xkZXJpemVkVHJlZUVsZW1lbnQu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRyZWVFbGVtZW50LmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0
U3RvcmVJbmRleFRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
SW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLmpzOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTG9nVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudC5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuanM6
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxl
bWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVQcm9wZXJ0
eVRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJl
ZVNldEluZGV4VHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9P
YmplY3RUcmVlVmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2ZpbGVO
b2RlVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Qcm9wZXJ0
aWVzU2VjdGlvbi5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVHJl
ZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUcmVlRWxl
bWVudC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFJlc3VsdFRyZWVF
bGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRpbWVs
aW5lVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VD
b2RlVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VN
YXBSZXNvdXJjZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
U3RvcmFnZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVEYXRhR3JpZC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
UmVjb3JkVHJlZUVsZW1lbnQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UcmVl
RWxlbWVudFN0YXR1c0J1dHRvbi5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Ry
ZWVPdXRsaW5lLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmVE
YXRhR3JpZFN5bmNocm9uaXplci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1R5
cGVQcm9wZXJ0aWVzU2VjdGlvbi5qczoKKyAgICAgICAgQ29udmVydGVkIHRvIEVTNiBjbGFzc2Vz
IHdoZXJlIHBvc3NpYmxlLgorCisyMDE1LTAzLTI2ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5
QGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb252ZXJ0IHNpZGViYXIgY2xh
c3NlcyB0byBFUzYKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MzEwOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZVRy
ZWVFbGVtZW50LmpzCmluZGV4IDdhYmM1NGY5ZDYwN2YwYjQwZTRlYzNhODM1Yjg5OGFlMzNiM2Iy
MjkuLjc5MzY5NjIyNjUzMTQ5NDBlNTU0NDM2YzQxNDllYTMyOTBmZTQxYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2Fj
aGVGcmFtZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMyAr
MjMsMjAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXBy
ZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxl
bWVudCA9IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFt
ZSk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1l
LCAiIiwgIiIsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7CisgICAgY29uc3RydWN0b3IocmVw
cmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUpOwog
Ci0gICAgdGhpcy5zbWFsbCA9IHRydWU7CisgICAgICAgIHN1cGVyKFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSwgIiIsICIiLCByZXBy
ZXNlbnRlZE9iamVjdCwgZmFsc2UpOwogCi0gICAgdGhpcy51cGRhdGVUaXRsZXMoKTsKLX07Cisg
ICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwogCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNo
ZUZyYW1lVHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUgPSAiYXBwbGljYXRpb24tY2FjaGUtZnJh
bWUiOwotCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNo
ZUZyYW1lVHJlZUVsZW1lbnQsCisgICAgICAgIHRoaXMudXBkYXRlVGl0bGVzKCk7CisgICAgfQog
Ci0gICAgdXBkYXRlVGl0bGVzOiBmdW5jdGlvbigpCisgICAgdXBkYXRlVGl0bGVzKCkKICAgICB7
CiAgICAgICAgIHZhciB1cmwgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmZyYW1lLnVybDsKICAg
ICAgICAgdmFyIHBhcnNlZFVSTCA9IHBhcnNlVVJMKHVybCk7CkBAIC01OCw0ICs1NSw0IEBAIFdl
Ykluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVt
ZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50
LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVu
dC5TdHlsZUNsYXNzTmFtZSA9ICJhcHBsaWNhdGlvbi1jYWNoZS1mcmFtZSI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNh
Y2hlTWFuaWZlc3RUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LmpzCmluZGV4
IDlmODkzZGU3OGI4N2YxMmM2YzYyZGM3MjBkOWNhMjAzZWNlZGY3NjYuLjY3OTdlMzRlNThlNDVm
M2VhMzZmYjNiNGU3ZjE1YmRkNGIzMjc5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVt
ZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Fw
cGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxNyArMjMsMTQgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9i
amVjdCkKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudCA9
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVz
dCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NO
YW1lLCAiIiwgcmVwcmVzZW50ZWRPYmplY3QpOwotfTsKLQotV2ViSW5zcGVjdG9yLkFwcGxpY2F0
aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lID0gImFwcGxpY2F0aW9u
LWNhY2hlLW1hbmlmZXN0IjsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdCk7CiAKLVdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVu
dCwKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRy
ZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCAiIiwgcmVwcmVzZW50ZWRPYmplY3QpOworICAgIH0K
IAogICAgIC8vIFB1YmxpYwogCkBAIC00Myw3ICs0MCw3IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLl9nZW5lcmF0ZVRpdGxlcygpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHNlY29uZGFyeU5hbWUoKQogICAgIHsKQEAgLTUxLDE0ICs0
OCwxNCBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZ2VuZXJhdGVUaXRsZXMoKTsKIAogICAg
ICAgICByZXR1cm4gdGhpcy5fc2Vjb25kYXJ5TmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBjYXRlZ29yeU5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQXBwbGljYXRpb24gQ2FjaGUiKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9nZW5lcmF0
ZVRpdGxlczogZnVuY3Rpb24oKQorICAgIF9nZW5lcmF0ZVRpdGxlcygpCiAgICAgewogICAgICAg
ICB2YXIgcGFyc2VkVVJMID0gcGFyc2VVUkwodGhpcy5yZXByZXNlbnRlZE9iamVjdC5tYW5pZmVz
dFVSTCk7CiAKQEAgLTcxLDQgKzY4LDQgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVN
YW5pZmVzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0
b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lID0g
ImFwcGxpY2F0aW9uLWNhY2hlLW1hbmlmZXN0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxl
bWVudC5qcwppbmRleCBhMDlhYzA4NzVhNGE2Y2M5NWQyN2JiYTQ5ZTBlZTJkMjBhM2Y0MzRiLi4w
ODY2ZTNmMjVjMmEyMjdhZjU2MTQ1MWExNTZlNjBmMzcxNzg0Mzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1l
bnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJl
YWtwb2ludFRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEwMCArMjMsODcgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24oYnJlYWtwb2ludCwgY2xhc3NOYW1lLCB0aXRsZSkKK1dlYklu
c3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1l
bnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29s
ZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CcmVha3BvaW50KTsK
LQotICAgIGlmICghY2xhc3NOYW1lKQotICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludFRyZWVFbGVtZW50LkdlbmVyaWNMaW5lSWNvblN0eWxlQ2xhc3NOYW1lOwotCi0g
ICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFtXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBjbGFzc05hbWVdLCB0aXRs
ZSwgbnVsbCwgYnJlYWtwb2ludCwgZmFsc2UpOwotCi0gICAgdGhpcy5fYnJlYWtwb2ludCA9IGJy
ZWFrcG9pbnQ7CisgICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwgY2xhc3NOYW1lLCB0aXRsZSkK
KyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludCk7CiAKLSAgICB0aGlzLl9saXN0ZW5lcnMgPSBuZXcgV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJTZXQodGhpcywgIkJyZWFrcG9pbnRUcmVlRWxlbWVudCBsaXN0
ZW5lcnMiKTsKLSAgICBpZiAoIXRpdGxlKQotICAgICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0
ZXIoYnJlYWtwb2ludCwgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRD
aGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZSk7Ci0gICAgdGhpcy5fbGlz
dGVuZXJzLnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50
LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7Ci0gICAgdGhpcy5f
bGlzdGVuZXJzLnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2
ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzKTsKLSAgICB0aGlz
Ll9saXN0ZW5lcnMucmVnaXN0ZXIoYnJlYWtwb2ludCwgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQu
RXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzKTsKLSAgICB0
aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlciwgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWREaWRDaGFu
Z2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7CisgICAgICAgIGlmICghY2xhc3NOYW1lKQorICAgICAg
ICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5HZW5l
cmljTGluZUljb25TdHlsZUNsYXNzTmFtZTsKIAotICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rl
cihXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLCBXZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyLkV2
ZW50LlByb2JlU2V0QWRkZWQsIHRoaXMuX3Byb2JlU2V0QWRkZWQpOwotICAgIHRoaXMuX2xpc3Rl
bmVycy5yZWdpc3RlcihXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLCBXZWJJbnNwZWN0b3IuUHJv
YmVNYW5hZ2VyLkV2ZW50LlByb2JlU2V0UmVtb3ZlZCwgdGhpcy5fcHJvYmVTZXRSZW1vdmVkKTsK
KyAgICAgICAgc3VwZXIoWyJicmVha3BvaW50IiwgY2xhc3NOYW1lXSwgdGl0bGUsIG51bGwsIGJy
ZWFrcG9pbnQsIGZhbHNlKTsKIAotICAgIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwotICAgIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudC5j
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdl
RWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rlcih0aGlz
Ll9zdGF0dXNJbWFnZUVsZW1lbnQsICJtb3VzZWRvd24iLCB0aGlzLl9zdGF0dXNJbWFnZUVsZW1l
bnRNb3VzZURvd24pOwotICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rlcih0aGlzLl9zdGF0dXNJ
bWFnZUVsZW1lbnQsICJjbGljayIsIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwor
ICAgICAgICB0aGlzLl9icmVha3BvaW50ID0gYnJlYWtwb2ludDsKIAotICAgIGlmICghdGl0bGUp
Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlcygpOwotICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygp
OworICAgICAgICB0aGlzLl9saXN0ZW5lcnMgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVu
ZXJTZXQodGhpcywgIkJyZWFrcG9pbnRUcmVlRWxlbWVudCBsaXN0ZW5lcnMiKTsKKyAgICAgICAg
aWYgKCF0aXRsZSkKKyAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3RlcihicmVha3Bv
aW50LCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5Mb2NhdGlvbkRpZENoYW5nZSwgdGhp
cy5fYnJlYWtwb2ludExvY2F0aW9uRGlkQ2hhbmdlKTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJz
LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkRpc2Fi
bGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7CisgICAgICAgIHRoaXMuX2xp
c3RlbmVycy5yZWdpc3RlcihicmVha3BvaW50LCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVu
dC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7CisgICAgICAgIHRo
aXMuX2xpc3RlbmVycy5yZWdpc3RlcihicmVha3BvaW50LCBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVTdGF0dXMpOworICAg
ICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdl
ciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWRE
aWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7CiAKLSAgICB0aGlzLnN0YXR1cyA9IHRoaXMu
X3N0YXR1c0ltYWdlRWxlbWVudDsKLSAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICAgICAgdGhp
cy5fbGlzdGVuZXJzLnJlZ2lzdGVyKFdlYkluc3BlY3Rvci5wcm9iZU1hbmFnZXIsIFdlYkluc3Bl
Y3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRBZGRlZCwgdGhpcy5fcHJvYmVTZXRBZGRl
ZCk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3RlcihXZWJJbnNwZWN0b3IucHJvYmVN
YW5hZ2VyLCBXZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyLkV2ZW50LlByb2JlU2V0UmVtb3ZlZCwg
dGhpcy5fcHJvYmVTZXRSZW1vdmVkKTsKIAotICAgIHRoaXMuX2ljb25BbmltYXRpb25MYXllckVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgdGhpcy5pY29uRWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pY29uQW5pbWF0aW9uTGF5ZXJFbGVtZW50KTsKLX07Ci0K
LVdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuR2VuZXJpY0xpbmVJY29uU3R5bGVD
bGFzc05hbWUgPSAiYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiI7Ci1XZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lID0gImJyZWFrcG9pbnQiOwotV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUVsZW1lbnRTdHlsZUNs
YXNzTmFtZSA9ICJzdGF0dXMtaW1hZ2UiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxl
bWVudC5TdGF0dXNJbWFnZVJlc29sdmVkU3R5bGVDbGFzc05hbWUgPSAicmVzb2x2ZWQiOwotV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUF1dG9Db250aW51ZVN0
eWxlQ2xhc3NOYW1lID0gImF1dG8tY29udGludWUiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRU
cmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2FibGVkU3R5bGVDbGFzc05hbWUgPSAiZGlzYWJsZWQi
OwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Gb3JtYXR0ZWRMb2NhdGlvblN0
eWxlQ2xhc3NOYW1lID0gImZvcm1hdHRlZC1sb2NhdGlvbiI7Ci1XZWJJbnNwZWN0b3IuQnJlYWtw
b2ludFRyZWVFbGVtZW50LlByb2JlRGF0YVVwZGF0ZWRTdHlsZUNsYXNzTmFtZSA9ICJkYXRhLXVw
ZGF0ZWQiOworICAgICAgICB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50LmNsYXNz
TmFtZSA9IFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VFbGVt
ZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rlcih0aGlz
Ll9zdGF0dXNJbWFnZUVsZW1lbnQsICJtb3VzZWRvd24iLCB0aGlzLl9zdGF0dXNJbWFnZUVsZW1l
bnRNb3VzZURvd24pOworICAgICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIodGhpcy5fc3Rh
dHVzSW1hZ2VFbGVtZW50LCAiY2xpY2siLCB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2Vk
KTsKIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRhdGVk
QW5pbWF0aW9uRHVyYXRpb24gPSA0MDA7IC8vIG1pbGxpc2Vjb25kcworICAgICAgICBpZiAoIXRp
dGxlKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGVzKCk7CisgICAgICAgIHRoaXMuX3Vw
ZGF0ZVN0YXR1cygpOwogCisgICAgICAgIHRoaXMuc3RhdHVzID0gdGhpcy5fc3RhdHVzSW1hZ2VF
bGVtZW50OworICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKIAotV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQsCisgICAgICAgIHRoaXMuX2ljb25BbmltYXRpb25M
YXllckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRo
aXMuaWNvbkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faWNvbkFuaW1hdGlvbkxheWVyRWxlbWVu
dCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgYnJlYWtwb2ludCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludDsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBmaWx0ZXJhYmxlRGF0YSgpCiAgICAgewogICAgICAgICByZXR1cm4ge3RleHQ6IHRoaXMu
YnJlYWtwb2ludC51cmx9OwotICAgIH0sCisgICAgfQogCi0gICAgb25kZWxldGU6IGZ1bmN0aW9u
KCkKKyAgICBvbmRlbGV0ZSgpCiAgICAgewogICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50UmVtb3ZhYmxlKHRoaXMuX2JyZWFrcG9pbnQpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1h
bmFnZXIucmVtb3ZlQnJlYWtwb2ludCh0aGlzLl9icmVha3BvaW50KTsKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmVudGVyOiBmdW5jdGlvbigpCisgICAgb25l
bnRlcigpCiAgICAgewogICAgICAgICB0aGlzLl9icmVha3BvaW50LmN5Y2xlVG9OZXh0TW9kZSgp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uc3BhY2U6IGZ1
bmN0aW9uKCkKKyAgICBvbnNwYWNlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQu
Y3ljbGVUb05leHRNb2RlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQog
Ci0gICAgb25jb250ZXh0bWVudTogZnVuY3Rpb24oZXZlbnQpCisgICAgb25jb250ZXh0bWVudShl
dmVudCkKICAgICB7CiAgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3Iu
Q29udGV4dE1lbnUoZXZlbnQpOwogICAgICAgICB0aGlzLl9icmVha3BvaW50LmFwcGVuZENvbnRl
eHRNZW51SXRlbXMoY29udGV4dE1lbnUsIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudCk7CiAgICAg
ICAgIGNvbnRleHRNZW51LnNob3coKTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uYXR0YWNoOiBm
dW5jdGlvbigpCisgICAgb25hdHRhY2goKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkdl
bmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKIApAQCAtMTI1
LDkgKzExMiw5IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICBmb3IgKHZhciBwcm9iZVNldCBvZiBXZWJJbnNwZWN0b3IucHJvYmVNYW5h
Z2VyLnByb2JlU2V0cykKICAgICAgICAgICAgIGlmIChwcm9iZVNldC5icmVha3BvaW50ID09PSB0
aGlzLl9icmVha3BvaW50KQogICAgICAgICAgICAgICAgIHRoaXMuX2FkZFByb2JlU2V0KHByb2Jl
U2V0KTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uZGV0YWNoOiBmdW5jdGlvbigpCisgICAgb25k
ZXRhY2goKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5w
cm90b3R5cGUub25kZXRhY2guY2FsbCh0aGlzKTsKIApAQCAtMTM1LDE3ICsxMjIsMTcgQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
aWYgKHRoaXMuX3Byb2JlU2V0KQogICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvYmVTZXQodGhp
cy5fcHJvYmVTZXQpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlU3RhdHVzSW1hZ2U6IGZ1
bmN0aW9uKCkKKyAgICByZW1vdmVTdGF0dXNJbWFnZSgpCiAgICAgewogICAgICAgICB0aGlzLl9z
dGF0dXNJbWFnZUVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgIHRoaXMuX3N0YXR1c0ltYWdlRWxl
bWVudCA9IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBk
YXRlVGl0bGVzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVRpdGxlcygpCiAgICAgewogICAgICAg
ICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5fYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9j
YXRpb247CiAKQEAgLTE2Niw5ICsxNTMsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5t
YWluVGl0bGUgKyAiIFx1MjAxNCAiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJvcmlnaW5hbGx5
ICVzIikuZm9ybWF0KHNvdXJjZUNvZGVMb2NhdGlvbi5vcmlnaW5hbExvY2F0aW9uU3RyaW5nKCkp
OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU3RhdHVzOiBmdW5jdGlv
bigpCisgICAgX3VwZGF0ZVN0YXR1cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3N0YXR1
c0ltYWdlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4Nyw5ICsxNzQsOSBAQCBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5C
cmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFn
ZVJlc29sdmVkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2FkZFByb2Jl
U2V0OiBmdW5jdGlvbihwcm9iZVNldCkKKyAgICBfYWRkUHJvYmVTZXQocHJvYmVTZXQpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5Qcm9iZVNldCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0LmJyZWFrcG9pbnQg
PT09IHRoaXMuX2JyZWFrcG9pbnQpOwpAQCAtMTk4LDkgKzE4NSw5IEBAIFdlYkluc3BlY3Rvci5C
cmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wcm9iZVNl
dCA9IHByb2JlU2V0OwogICAgICAgICBwcm9iZVNldC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Qcm9iZVNldC5FdmVudC5TYW1wbGVzQ2xlYXJlZCwgdGhpcy5fc2FtcGxlc0NsZWFyZWQs
IHRoaXMpOwogICAgICAgICBwcm9iZVNldC5kYXRhVGFibGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUHJvYmVTZXREYXRhVGFibGUuRXZlbnQuRnJhbWVJbnNlcnRlZCwgdGhpcy5fZGF0
YVVwZGF0ZWQsIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbW92ZVByb2JlU2V0OiBm
dW5jdGlvbihwcm9iZVNldCkKKyAgICBfcmVtb3ZlUHJvYmVTZXQocHJvYmVTZXQpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Q
cm9iZVNldCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0ID09PSB0aGlzLl9wcm9i
ZVNldCk7CkBAIC0yMDgsMzIgKzE5NSwzMiBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgcHJvYmVTZXQucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuUHJvYmVTZXQuRXZlbnQuU2FtcGxlc0NsZWFyZWQsIHRoaXMuX3NhbXBs
ZXNDbGVhcmVkLCB0aGlzKTsKICAgICAgICAgcHJvYmVTZXQuZGF0YVRhYmxlLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YVRhYmxlLkV2ZW50LkZyYW1lSW5zZXJ0
ZWQsIHRoaXMuX2RhdGFVcGRhdGVkLCB0aGlzKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX3Byb2Jl
U2V0OwotICAgIH0sCisgICAgfQogCi0gICAgX3Byb2JlU2V0QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9wcm9iZVNldEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHByb2JlU2V0
ID0gZXZlbnQuZGF0YS5wcm9iZVNldDsKICAgICAgICAgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQg
PT09IHRoaXMuX2JyZWFrcG9pbnQpCiAgICAgICAgICAgICB0aGlzLl9hZGRQcm9iZVNldChwcm9i
ZVNldCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcHJvYmVTZXRSZW1vdmVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfcHJvYmVTZXRSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHBy
b2JlU2V0ID0gZXZlbnQuZGF0YS5wcm9iZVNldDsKICAgICAgICAgaWYgKHByb2JlU2V0LmJyZWFr
cG9pbnQgPT09IHRoaXMuX2JyZWFrcG9pbnQpCiAgICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9i
ZVNldChwcm9iZVNldCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2FtcGxlc0NsZWFyZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9zYW1wbGVzQ2xlYXJlZChldmVudCkKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb2JlU2V0KTsKIAogICAgICAgICB2YXIgb2xkVGFibGUg
PSBldmVudC5kYXRhLm9sZFRhYmxlOwogICAgICAgICBvbGRUYWJsZS5yZW1vdmVFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5FdmVudC5GcmFtZUluc2VydGVkLCB0
aGlzLl9kYXRhVXBkYXRlZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuX3Byb2JlU2V0LmRhdGFUYWJs
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5FdmVudC5G
cmFtZUluc2VydGVkLCB0aGlzLl9kYXRhVXBkYXRlZCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZGF0YVVwZGF0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZGF0YVVwZGF0ZWQoKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUpKSB7
CiAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fcmVtb3ZlSWNvbkFuaW1hdGlvblRpbWVv
dXRJZGVudGlmaWVyKTsKQEAgLTI0OCwxMCArMjM1LDEwIEBAIFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZW1vdmVJY29uQW5p
bWF0aW9uVGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB9
LmJpbmQodGhpcyksIFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuUHJvYmVEYXRh
VXBkYXRlZEFuaW1hdGlvbkR1cmF0aW9uKTsKLSAgICB9LAorICAgIH0KIAogCi0gICAgX2JyZWFr
cG9pbnRMb2NhdGlvbkRpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2JyZWFrcG9pbnRM
b2NhdGlvbkRpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2
ZW50LnRhcmdldCA9PT0gdGhpcy5fYnJlYWtwb2ludCk7CiAKQEAgLTI2MCwxOCArMjQ3LDI2IEBA
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlcygpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bjogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAg
IC8vIFRvIHByZXZlbnQgdGhlIHRyZWUgZWxlbWVudCBmcm9tIHNlbGVjdGluZy4KICAgICAgICAg
ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RhdHVzSW1h
Z2VFbGVtZW50Q2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3N0YXR1c0ltYWdlRWxlbWVu
dENsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9icmVha3BvaW50LmN5Y2xlVG9O
ZXh0TW9kZSgpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1l
bnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQu
cHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5HZW5lcmljTGlu
ZUljb25TdHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIjsKK1dl
Ykluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VFbGVtZW50U3R5bGVD
bGFzc05hbWUgPSAic3RhdHVzLWltYWdlIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVs
ZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lID0gInJlc29sdmVkIjsKK1dl
Ykluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VBdXRvQ29udGludWVT
dHlsZUNsYXNzTmFtZSA9ICJhdXRvLWNvbnRpbnVlIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50
VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VEaXNhYmxlZFN0eWxlQ2xhc3NOYW1lID0gImRpc2FibGVk
IjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuRm9ybWF0dGVkTG9jYXRpb25T
dHlsZUNsYXNzTmFtZSA9ICJmb3JtYXR0ZWQtbG9jYXRpb24iOworV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUgPSAiZGF0YS11
cGRhdGVkIjsKKworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFV
cGRhdGVkQW5pbWF0aW9uRHVyYXRpb24gPSA0MDA7IC8vIG1pbGxpc2Vjb25kcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJl
ZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
YWxsRnJhbWVUcmVlRWxlbWVudC5qcwppbmRleCAxZmIwMzI5YzlhYWM3OGE2ZGNjNDFkZDYxMDAy
YjZiMmJmYzdjYTY5Li5jNDlhMjEyZjEzYTlkMjhiYmFjYzIyOGM2NTNhNGM3OTRhZTM5YzBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYWxs
RnJhbWVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNTUgKzIzLDUwIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNhbGxG
cmFtZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oY2FsbEZyYW1lKQorV2ViSW5zcGVjdG9yLkNhbGxG
cmFtZVRyZWVFbGVtZW50ID0gY2xhc3MgQ2FsbEZyYW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQoY2FsbEZy
YW1lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNhbGxGcmFtZSk7CisgICAgY29uc3RydWN0b3Io
Y2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY2FsbEZyYW1lIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkNhbGxGcmFtZSk7CiAKLSAgICB2YXIgY2xhc3NOYW1lID0gV2Vi
SW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1l
OwotICAgIGlmIChjYWxsRnJhbWUubmF0aXZlQ29kZSkKLSAgICAgICAgY2xhc3NOYW1lID0gV2Vi
SW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50Lk5hdGl2ZUljb25TdHlsZUNsYXNzTmFtZTsK
KyAgICAgICAgdmFyIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVu
dC5GdW5jdGlvbkljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgaWYgKGNhbGxGcmFtZS5uYXRp
dmVDb2RlKQorICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRy
ZWVFbGVtZW50Lk5hdGl2ZUljb25TdHlsZUNsYXNzTmFtZTsKIAotICAgIC8vIFRoaXMgaXMgbW9y
ZSB0aGFuIGxpa2VseSBhbiBldmVudCBsaXN0ZW5lciBmdW5jdGlvbiB3aXRoIGFuICJvbiIgcHJl
Zml4IGFuZCBpdCBpcwotICAgIC8vIGFzIGxvbmcgb3IgbG9uZ2VyIHRoYW4gdGhlIHNob3J0ZXN0
IGV2ZW50IGxpc3RlbmVyIG5hbWUgLS0gIm9uY3V0Ii4KLSAgICBpZiAoY2FsbEZyYW1lLmZ1bmN0
aW9uTmFtZSAmJiBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lLnN0YXJ0c1dpdGgoIm9uIikgJiYgY2Fs
bEZyYW1lLmZ1bmN0aW9uTmFtZS5sZW5ndGggPj0gNSkKLSAgICAgICAgY2xhc3NOYW1lID0gV2Vi
SW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFz
c05hbWU7CisgICAgICAgIC8vIFRoaXMgaXMgbW9yZSB0aGFuIGxpa2VseSBhbiBldmVudCBsaXN0
ZW5lciBmdW5jdGlvbiB3aXRoIGFuICJvbiIgcHJlZml4IGFuZCBpdCBpcworICAgICAgICAvLyBh
cyBsb25nIG9yIGxvbmdlciB0aGFuIHRoZSBzaG9ydGVzdCBldmVudCBsaXN0ZW5lciBuYW1lIC0t
ICJvbmN1dCIuCisgICAgICAgIGlmIChjYWxsRnJhbWUuZnVuY3Rpb25OYW1lICYmIGNhbGxGcmFt
ZS5mdW5jdGlvbk5hbWUuc3RhcnRzV2l0aCgib24iKSAmJiBjYWxsRnJhbWUuZnVuY3Rpb25OYW1l
Lmxlbmd0aCA+PSA1KQorICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxG
cmFtZVRyZWVFbGVtZW50LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFzc05hbWU7CiAKLSAgICB2
YXIgdGl0bGUgPSBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lIHx8IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiKGFub255bW91cyBmdW5jdGlvbikiKTsKKyAgICAgICAgdmFyIHRpdGxlID0gY2FsbEZyYW1l
LmZ1bmN0aW9uTmFtZSB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rp
b24pIik7CiAKLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywg
Y2xhc3NOYW1lLCB0aXRsZSwgbnVsbCwgY2FsbEZyYW1lLCBmYWxzZSk7CisgICAgICAgIHN1cGVy
KGNsYXNzTmFtZSwgdGl0bGUsIG51bGwsIGNhbGxGcmFtZSwgZmFsc2UpOwogCi0gICAgaWYgKCFj
YWxsRnJhbWUubmF0aXZlQ29kZSAmJiBjYWxsRnJhbWUuc291cmNlQ29kZUxvY2F0aW9uKSB7Ci0g
ICAgICAgIHZhciBkaXNwbGF5U2NyaXB0VVJMID0gY2FsbEZyYW1lLnNvdXJjZUNvZGVMb2NhdGlv
bi5kaXNwbGF5U291cmNlQ29kZS51cmw7Ci0gICAgICAgIGlmIChkaXNwbGF5U2NyaXB0VVJMKSB7
Ci0gICAgICAgICAgICB0aGlzLnN1YnRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOwotICAgICAgICAgICAgY2FsbEZyYW1lLnNvdXJjZUNvZGVMb2NhdGlvbi5wb3B1bGF0ZUxp
dmVEaXNwbGF5TG9jYXRpb25TdHJpbmcodGhpcy5zdWJ0aXRsZSwgInRleHRDb250ZW50Iik7Ci0g
ICAgICAgICAgICAvLyBTZXQgdGhlIHRvb2x0aXAgb24gdGhlIGVudGlyZSB0cmVlIGVsZW1lbnQg
aW4gb25hdHRhY2gsIG9uY2UgdGhlIGVsZW1lbnQgaXMgY3JlYXRlZC4KLSAgICAgICAgICAgIHRo
aXMudG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFjYWxsRnJh
bWUubmF0aXZlQ29kZSAmJiBjYWxsRnJhbWUuc291cmNlQ29kZUxvY2F0aW9uKSB7CisgICAgICAg
ICAgICB2YXIgZGlzcGxheVNjcmlwdFVSTCA9IGNhbGxGcmFtZS5zb3VyY2VDb2RlTG9jYXRpb24u
ZGlzcGxheVNvdXJjZUNvZGUudXJsOworICAgICAgICAgICAgaWYgKGRpc3BsYXlTY3JpcHRVUkwp
IHsKKyAgICAgICAgICAgICAgICB0aGlzLnN1YnRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic3BhbiIpOworICAgICAgICAgICAgICAgIGNhbGxGcmFtZS5zb3VyY2VDb2RlTG9jYXRpb24u
cG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uU3RyaW5nKHRoaXMuc3VidGl0bGUsICJ0ZXh0Q29u
dGVudCIpOworICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgdG9vbHRpcCBvbiB0aGUgZW50aXJl
IHRyZWUgZWxlbWVudCBpbiBvbmF0dGFjaCwgb25jZSB0aGUgZWxlbWVudCBpcyBjcmVhdGVkLgor
ICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KIAotICAgIHRoaXMuX2NhbGxGcmFtZSA9IGNh
bGxGcmFtZTsKLQotICAgIHRoaXMuc21hbGwgPSB0cnVlOwotfTsKKyAgICAgICAgdGhpcy5fY2Fs
bEZyYW1lID0gY2FsbEZyYW1lOwogCi1XZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQu
RnVuY3Rpb25JY29uU3R5bGVDbGFzc05hbWUgPSAiZnVuY3Rpb24taWNvbiI7Ci1XZWJJbnNwZWN0
b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRXZlbnRMaXN0ZW5lckljb25TdHlsZUNsYXNzTmFtZSA9
ICJldmVudC1saXN0ZW5lci1pY29uIjsKLVdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVu
dC5OYXRpdmVJY29uU3R5bGVDbGFzc05hbWUgPSAibmF0aXZlLWljb24iOwotCi1XZWJJbnNwZWN0
b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQsCisgICAgICAgIHRoaXMuc21hbGwgPSB0
cnVlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGNhbGxGcmFtZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fY2FsbEZyYW1lOwotICAgIH0sCisgICAgfQogCiAgICAg
Ly8gUHJvdGVjdGVkCiAKLSAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIG9uYXR0YWNoKCkK
ICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBl
Lm9uYXR0YWNoLmNhbGwodGhpcyk7CiAKQEAgLTg0LDQgKzc5LDYgQEAgV2ViSW5zcGVjdG9yLkNh
bGxGcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0
b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRy
ZWVFbGVtZW50LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1lID0gImZ1bmN0aW9uLWljb24iOwor
V2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVD
bGFzc05hbWUgPSAiZXZlbnQtbGlzdGVuZXItaWNvbiI7CitXZWJJbnNwZWN0b3IuQ2FsbEZyYW1l
VHJlZUVsZW1lbnQuTmF0aXZlSWNvblN0eWxlQ2xhc3NOYW1lID0gIm5hdGl2ZS1pY29uIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRl
bnRGbG93VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzCmluZGV4IDI0NjlkYmNjYTkxMjYzY2Q1
NTQyZGI0NmNjZDUyNWU3YjNiMzY1OTUuLjdlMjhhNjNjOGU5ODc2NDA3Yzg2ZGEyMDE2ODQwZDc4
YTY1ZTI4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRGbG93VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qcwpAQCAtMSw0
ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsMTggKzI4
LDE2IEBACiAgKiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29udGVudEZsb3dU
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkNv
bnRlbnRGbG93VHJlZUVsZW1lbnQgPSBjbGFzcyBDb250ZW50Rmxvd1RyZWVFbGVtZW50IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0
KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KTsK
LSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgW1dlYkluc3Bl
Y3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3Iu
Q29udGVudEZsb3dUcmVlRWxlbWVudC5Db250ZW50Rmxvd0ljb25TdHlsZUNsYXNzTmFtZV0sIHJl
cHJlc2VudGVkT2JqZWN0Lm5hbWUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7Cisg
ICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBjb25zb2xl
LmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50
Rmxvdyk7CiAKLSAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db250
ZW50Rmxvd1RyZWVFbGVtZW50LkNvbnRlbnRGbG93SWNvblN0eWxlQ2xhc3NOYW1lID0gImNvbnRl
bnQtZmxvdy1pY29uIjsKKyAgICAgICAgc3VwZXIoW1dlYkluc3BlY3Rvci5Db250ZW50Rmxvd1Ry
ZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxl
bWVudC5Db250ZW50Rmxvd0ljb25TdHlsZUNsYXNzTmFtZV0sIHJlcHJlc2VudGVkT2JqZWN0Lm5h
bWUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7CiAKLVdlYkluc3BlY3Rvci5Db250
ZW50Rmxvd1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQKKyAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7
CisgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBl
OworV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQuQ29udGVudEZsb3dJY29uU3R5
bGVDbGFzc05hbWUgPSAiY29udGVudC1mbG93LWljb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZVRyZWVFbGVtZW50
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3Rv
cmFnZVRyZWVFbGVtZW50LmpzCmluZGV4IDI0OWIyOGNhNmFlMDZhNWM4YjE5YjgwMzhmZWVlOWQ1
ZDg1YWZmZjQuLmUxZjE2N2YyZTJiY2FmZGUzMmE5OTU4MzEyY2JmZjY4N2FjYmJiZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0
b3JhZ2VUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI0ICsyMywyMSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5D
b29raWVTdG9yYWdlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dl
Ykluc3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQgPSBjbGFzcyBDb29raWVTdG9yYWdl
VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50CiB7Ci0g
ICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQ29va2llU3RvcmFnZU9iamVjdCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVF
bGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5D
b29raWVJY29uU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvckhvc3Qo
cmVwcmVzZW50ZWRPYmplY3QuaG9zdCksIHJlcHJlc2VudGVkT2JqZWN0KTsKLX07Ci0KLVdlYklu
c3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQuQ29va2llSWNvblN0eWxlQ2xhc3NOYW1l
ID0gImNvb2tpZS1pY29uIjsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QpOwogCi1XZWJJbnNwZWN0b3IuQ29va2ll
U3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudCwKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVj
dG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5Db29raWVJY29uU3R5bGVDbGFzc05hbWUsIFdl
Ykluc3BlY3Rvci5kaXNwbGF5TmFtZUZvckhvc3QocmVwcmVzZW50ZWRPYmplY3QuaG9zdCksIHJl
cHJlc2VudGVkT2JqZWN0KTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYW1l
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2F0ZWdvcnlOYW1lKCkKICAgICB7CkBAIC00OCw0ICs0
NSw0IEBAIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90
eXBlOworV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5Db29raWVJY29uU3R5
bGVDbGFzc05hbWUgPSAiY29va2llLWljb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NU3RvcmFnZVRyZWVFbGVtZW50LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NU3RvcmFnZVRyZWVFbGVt
ZW50LmpzCmluZGV4IDNiM2U2MGM3OTFlZjJiNDlhY2JjOWZmYTc4MmRkZDA4OTNlYWUzNjkuLmJi
MmZlMzZlODRlYTRmYjkwZDk0Nzk1ZDk2NDdmOTkwMTc0YWEzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVN0b3JhZ2VUcmVlRWxlbWVu
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01T
dG9yYWdlVHJlZUVsZW1lbnQuanMKQEAgLTIzLDMwICsyMywyNiBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVs
ZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5ET01TdG9y
YWdlVHJlZUVsZW1lbnQgPSBjbGFzcyBET01TdG9yYWdlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCk7Ci0K
LSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QuaXNMb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgdmFy
IGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQuTG9jYWxTdG9y
YWdlSWNvblN0eWxlQ2xhc3NOYW1lOwotICAgIGVsc2UKLSAgICAgICAgdmFyIGNsYXNzTmFtZSA9
IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQuU2Vzc2lvblN0b3JhZ2VJY29uU3R5
bGVDbGFzc05hbWU7Ci0KLSAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwo
dGhpcywgY2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JIb3N0KHJlcHJlc2Vu
dGVkT2JqZWN0Lmhvc3QpLCByZXByZXNlbnRlZE9iamVjdCk7Ci19OworICAgIGNvbnN0cnVjdG9y
KHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCk7CiAK
LVdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQuTG9jYWxTdG9yYWdlSWNvblN0eWxl
Q2xhc3NOYW1lID0gImxvY2FsLXN0b3JhZ2UtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZVRyZWVFbGVtZW50LlNlc3Npb25TdG9yYWdlSWNvblN0eWxlQ2xhc3NOYW1lID0gInNlc3Npb24t
c3RvcmFnZS1pY29uIjsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0LmlzTG9jYWxTdG9y
YWdlKCkpCisgICAgICAgICAgICB2YXIgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2VUcmVlRWxlbWVudC5Mb2NhbFN0b3JhZ2VJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRy
ZWVFbGVtZW50LlNlc3Npb25TdG9yYWdlSWNvblN0eWxlQ2xhc3NOYW1lOwogCi1XZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VUcmVlRWxlbWVudCwKKyAgICAgICAgc3VwZXIoY2xhc3NO
YW1lLCBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JIb3N0KHJlcHJlc2VudGVkT2JqZWN0Lmhv
c3QpLCByZXByZXNlbnRlZE9iamVjdCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgbmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1l
Rm9ySG9zdCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmhvc3QpOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGNhdGVnb3J5TmFtZSgpCiAgICAgewpAQCAtNTYsNCArNTIsNSBAQCBXZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5ET01T
dG9yYWdlVHJlZUVsZW1lbnQuTG9jYWxTdG9yYWdlSWNvblN0eWxlQ2xhc3NOYW1lID0gImxvY2Fs
LXN0b3JhZ2UtaWNvbiI7CitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LlNlc3Np
b25TdG9yYWdlSWNvblN0eWxlQ2xhc3NOYW1lID0gInNlc3Npb24tc3RvcmFnZS1pY29uIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZUVsZW1lbnQuanMKaW5kZXggODA2YjIwM2VkYjAzZjI4NzEzMTgyOWVjOThiMzE1OGVi
MTE1ZmJhMS4uNTVhMTFjNTk5NTk5ZjQzMjA5YmFlZDI4MzUxNmM1ZWU1OTkwZTk5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVs
ZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3ZWJraXRAbWF0dGxp
bGVrLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jhcm8KICAqCkBAIC0y
OCw0NiArMjgsMjcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVF
bGVtZW50ID0gZnVuY3Rpb24obm9kZSwgZWxlbWVudENsb3NlVGFnKQorV2ViSW5zcGVjdG9yLkRP
TVRyZWVFbGVtZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
VHJlZUVsZW1lbnQKIHsKLSAgICB0aGlzLl9lbGVtZW50Q2xvc2VUYWcgPSBlbGVtZW50Q2xvc2VU
YWc7Ci0gICAgdmFyIGhhc0NoaWxkcmVuT3ZlcnJpZGUgPSAhZWxlbWVudENsb3NlVGFnICYmIG5v
ZGUuaGFzQ2hpbGROb2RlcygpICYmICF0aGlzLl9zaG93SW5saW5lVGV4dChub2RlKTsKLQotICAg
IC8vIFRoZSB0aXRsZSB3aWxsIGJlIHVwZGF0ZWQgaW4gb25hdHRhY2guCi0gICAgVHJlZUVsZW1l
bnQuY2FsbCh0aGlzLCAiIiwgbm9kZSwgaGFzQ2hpbGRyZW5PdmVycmlkZSk7Ci0KLSAgICBpZiAo
dGhpcy5yZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSgpID09PSBOb2RlLkVMRU1FTlRfTk9ERSAm
JiAhZWxlbWVudENsb3NlVGFnKQotICAgICAgICB0aGlzLl9jYW5BZGRBdHRyaWJ1dGVzID0gdHJ1
ZTsKLSAgICB0aGlzLl9zZWFyY2hRdWVyeSA9IG51bGw7Ci0gICAgdGhpcy5fZXhwYW5kZWRDaGls
ZHJlbkxpbWl0ID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkluaXRpYWxDaGlsZHJlbkxp
bWl0OwotfTsKLQotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkluaXRpYWxDaGlsZHJlbkxp
bWl0ID0gNTAwOwotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50Lk1heGltdW1JbmxpbmVUZXh0
Q2hpbGRMZW5ndGggPSA4MDsKLQotLy8gQSB1bmlvbiBvZiBIVE1MNCBhbmQgSFRNTDUtRHJhZnQg
ZWxlbWVudHMgdGhhdCBleHBsaWNpdGx5Ci0vLyBvciBpbXBsaWNpdGx5IChmb3IgSFRNTDUpIGZv
cmJpZCB0aGUgY2xvc2luZyB0YWcuCi0vLyBGSVhNRTogUmV2aXNlIG9uY2UgSFRNTDUgRmluYWwg
aXMgcHVibGlzaGVkLgotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkZvcmJpZGRlbkNsb3Np
bmdUYWdFbGVtZW50cyA9IFsKLSAgICAiYXJlYSIsICJiYXNlIiwgImJhc2Vmb250IiwgImJyIiwg
ImNhbnZhcyIsICJjb2wiLCAiY29tbWFuZCIsICJlbWJlZCIsICJmcmFtZSIsCi0gICAgImhyIiwg
ImltZyIsICJpbnB1dCIsICJpc2luZGV4IiwgImtleWdlbiIsICJsaW5rIiwgIm1ldGEiLCAicGFy
YW0iLCAic291cmNlIgotXS5rZXlTZXQoKTsKKyAgICBjb25zdHJ1Y3Rvcihub2RlLCBlbGVtZW50
Q2xvc2VUYWcpCisgICAgeworICAgICAgICBzdXBlcigiIiwgbm9kZSk7CiAKLS8vIFRoZXNlIHRh
Z3Mgd2UgZG8gbm90IGFsbG93IGVkaXRpbmcgdGhlaXIgdGFnIG5hbWUuCi1XZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnQuRWRpdFRhZ0JsYWNrbGlzdCA9IFsKLSAgICAiaHRtbCIsICJoZWFkIiwg
ImJvZHkiCi1dLmtleVNldCgpOworICAgICAgICB0aGlzLl9lbGVtZW50Q2xvc2VUYWcgPSBlbGVt
ZW50Q2xvc2VUYWc7CisgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSAhZWxlbWVudENsb3NlVGFn
ICYmIG5vZGUuaGFzQ2hpbGROb2RlcygpICYmICF0aGlzLl9zaG93SW5saW5lVGV4dChub2RlKTsK
IAotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LlNlYXJjaEhpZ2hsaWdodFN0eWxlQ2xhc3NO
YW1lID0gInNlYXJjaC1oaWdobGlnaHQiOwotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkJv
dW5jeUhpZ2hsaWdodFN0eWxlQ2xhc3NOYW1lID0gImJvdW5jeS1oaWdobGlnaHQiOworICAgICAg
ICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSgpID09PSBOb2RlLkVMRU1FTlRf
Tk9ERSAmJiAhZWxlbWVudENsb3NlVGFnKQorICAgICAgICAgICAgdGhpcy5fY2FuQWRkQXR0cmli
dXRlcyA9IHRydWU7CisgICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gbnVsbDsKKyAgICAgICAg
dGhpcy5fZXhwYW5kZWRDaGlsZHJlbkxpbWl0ID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50
LkluaXRpYWxDaGlsZHJlbkxpbWl0OworICAgIH0KIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKLSAgICBpc0Nsb3NlVGFnOiBmdW5jdGlvbigpCisgICAgaXNDbG9z
ZVRhZygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudENsb3NlVGFnOwotICAg
IH0sCisgICAgfQogCi0gICAgaGlnaGxpZ2h0U2VhcmNoUmVzdWx0czogZnVuY3Rpb24oc2VhcmNo
UXVlcnkpCisgICAgaGlnaGxpZ2h0U2VhcmNoUmVzdWx0cyhzZWFyY2hRdWVyeSkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9zZWFyY2hRdWVyeSAhPT0gc2VhcmNoUXVlcnkpIHsKICAgICAgICAg
ICAgIHRoaXMuX3VwZGF0ZVNlYXJjaEhpZ2hsaWdodChmYWxzZSk7CkBAIC03NywxNSArNTgsMTUg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fc2VhcmNoUXVlcnkgPSBzZWFyY2hRdWVyeTsKICAgICAgICAgdGhpcy5fc2VhcmNoSGlnaGxp
Z2h0c1Zpc2libGUgPSB0cnVlOwogICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKHRydWUpOwotICAg
IH0sCisgICAgfQogCi0gICAgaGlkZVNlYXJjaEhpZ2hsaWdodHM6IGZ1bmN0aW9uKCkKKyAgICBo
aWRlU2VhcmNoSGlnaGxpZ2h0cygpCiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5fc2VhcmNo
SGlnaGxpZ2h0c1Zpc2libGU7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNlYXJjaEhpZ2hsaWdodChm
YWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBlbXBoYXNpemVTZWFyY2hIaWdobGlnaHQ6IGZ1
bmN0aW9uKCkKKyAgICBlbXBoYXNpemVTZWFyY2hIaWdobGlnaHQoKQogICAgIHsKICAgICAgICAg
dmFyIGhpZ2hsaWdodEVsZW1lbnQgPSB0aGlzLnRpdGxlLnF1ZXJ5U2VsZWN0b3IoIi4iICsgV2Vi
SW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LlNlYXJjaEhpZ2hsaWdodFN0eWxlQ2xhc3NOYW1lKTsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoaGlnaGxpZ2h0RWxlbWVudCk7CkBAIC0xMTYsOSArOTcs
OSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9
CiAKICAgICAgICAgdGhpcy5fYm91bmN5SGlnaGxpZ2h0RWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZC5iaW5kKHRoaXMpKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF91cGRhdGVTZWFyY2hIaWdobGlnaHQ6IGZ1bmN0aW9uKHNob3cpCisg
ICAgX3VwZGF0ZVNlYXJjaEhpZ2hsaWdodChzaG93KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9oaWdobGlnaHRSZXN1bHQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTIsMTIgKzEzMywx
MiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAg
IGZvciAodmFyIGkgPSAwLCBzaXplID0gdGhpcy5faGlnaGxpZ2h0UmVzdWx0Lmxlbmd0aDsgaSA8
IHNpemU7ICsraSkKICAgICAgICAgICAgIHVwZGF0ZXIodGhpcy5faGlnaGxpZ2h0UmVzdWx0W2ld
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBob3ZlcmVkKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9ob3ZlcmVkOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGhvdmVyZWQoeCkK
ICAgICB7CkBAIC0xNzQsMTIgKzE1NSwxMiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoImhvdmVyZWQiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGV4cGFuZGVkQ2hpbGRyZW5MaW1pdCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fZXhwYW5kZWRDaGlsZHJlbkxpbWl0OwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IGV4cGFuZGVkQ2hpbGRyZW5MaW1pdCh4KQogICAgIHsKQEAgLTE4OSw3ICsxNzAsNyBA
QCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9leHBhbmRlZENoaWxkcmVuTGltaXQgPSB4OwogICAgICAgICBpZiAodGhpcy50cmVlT3V0bGlu
ZSAmJiAhdGhpcy5fdXBkYXRlQ2hpbGRyZW5JblByb2dyZXNzKQogICAgICAgICAgICAgdGhpcy5f
dXBkYXRlQ2hpbGRyZW4odHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZXhwYW5kZWRD
aGlsZENvdW50KCkKICAgICB7CkBAIC0xOTksOSArMTgwLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGNvdW50ICYmIHRoaXMuY2hpbGRy
ZW5bY291bnQgLSAxXS5leHBhbmRBbGxCdXR0b24pCiAgICAgICAgICAgICBjb3VudC0tOwogICAg
ICAgICByZXR1cm4gY291bnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93Q2hpbGQ6IGZ1bmN0
aW9uKGluZGV4KQorICAgIHNob3dDaGlsZChpbmRleCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCF0aGlzLl9lbGVtZW50Q2xvc2VUYWcpOwogICAgICAgICBpZiAodGhpcy5fZWxlbWVu
dENsb3NlVGFnKQpAQCAtMjE0LDkgKzE5NSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gV2hldGhlciBpbmRleC10aCBjaGlsZCBpcyB2
aXNpYmxlIGluIHRoZSBjaGlsZHJlbiB0cmVlCiAgICAgICAgIHJldHVybiB0aGlzLmV4cGFuZGVk
Q2hpbGRDb3VudCA+IGluZGV4OwotICAgIH0sCisgICAgfQogCi0gICAgX2NyZWF0ZVRvb2x0aXBG
b3JOb2RlOiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZVRvb2x0aXBGb3JOb2RlKCkKICAgICB7CiAg
ICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYgKCFu
b2RlLm5vZGVOYW1lKCkgfHwgbm9kZS5ub2RlTmFtZSgpLnRvTG93ZXJDYXNlKCkgIT09ICJpbWci
KQpAQCAtMjM4LDcgKzIxOSw3IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICB0aGlzLnRv
b2x0aXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIFx4ZDcgJWQgcGl4ZWxzIChOYXR1cmFs
OiAlZCBceGQ3ICVkIHBpeGVscykiKS5mb3JtYXQob2Zmc2V0V2lkdGgsIG9mZnNldEhlaWdodCwg
bmF0dXJhbFdpZHRoLCBuYXR1cmFsSGVpZ2h0KTsKICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpOworICAgICAgICAgICAgICAgIGNvbnNv
bGUuZXJyb3IoZSwgZS5zdGFjayk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjU2
LDkgKzIzNyw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBvYmplY3QucmVsZWFzZSgpOwogICAgICAgICB9CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUobm9kZSwgIiIsIHJlc29sdmVkTm9kZS5iaW5k
KHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZVNlbGVjdGlvbjogZnVuY3Rpb24o
KQorICAgIHVwZGF0ZVNlbGVjdGlvbigpCiAgICAgewogICAgICAgICB2YXIgbGlzdEl0ZW1FbGVt
ZW50ID0gdGhpcy5saXN0SXRlbUVsZW1lbnQ7CiAgICAgICAgIGlmICghbGlzdEl0ZW1FbGVtZW50
KQpAQCAtMjc3LDkgKzI1OCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLnNlbGVjdGlvbkVsZW1lbnQuc3R5bGUu
aGVpZ2h0ID0gbGlzdEl0ZW1FbGVtZW50Lm9mZnNldEhlaWdodCArICJweCI7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIG9uYXR0YWNoKCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9ob3ZlcmVkKSB7CiAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVj
dGlvbigpOwpAQCAtMjg5LDUxICsyNzAsNDYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwogICAgICAgICB0aGlz
Lmxpc3RJdGVtRWxlbWVudC5kcmFnZ2FibGUgPSB0cnVlOwogICAgICAgICB0aGlzLmxpc3RJdGVt
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCB0aGlzKTsKLSAgICB9LAorICAg
IH0KIAotICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRlKCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCB8fCB0aGlzLl9zaG93SW5saW5lVGV4
dCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KSB8fCB0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbigpOwotICAgIH0s
CisgICAgfQogCi0gICAgZXhwYW5kUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKCkKKyAgICBleHBhbmRS
ZWN1cnNpdmVseSgpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjaygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIFRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1cnNpdmVseS5j
YWxsKHRoaXMsIE51bWJlci5NQVhfVkFMVUUpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5nZXRTdWJ0cmVlKC0xLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKLSAg
ICB9LAorICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmdldFN1YnRyZWUoLTEsIHN1cGVy
LmV4cGFuZFJlY3Vyc2l2ZWx5LmJpbmQodGhpcywgTnVtYmVyLk1BWF9WQUxVRSkpOworICAgIH0K
IAotICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbihmdWxsUmVmcmVzaCkKKyAgICB1cGRhdGVD
aGlsZHJlbihmdWxsUmVmcmVzaCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50Q2xv
c2VUYWcpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QuZ2V0Q2hpbGROb2Rlcyh0aGlzLl91cGRhdGVDaGlsZHJlbi5iaW5kKHRoaXMsIGZ1bGxSZWZy
ZXNoKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpbnNlcnRDaGlsZEVsZW1lbnQ6IGZ1bmN0aW9u
KGNoaWxkLCBpbmRleCwgY2xvc2luZ1RhZykKKyAgICBpbnNlcnRDaGlsZEVsZW1lbnQoY2hpbGQs
IGluZGV4LCBjbG9zaW5nVGFnKQogICAgIHsKICAgICAgICAgdmFyIG5ld0VsZW1lbnQgPSBuZXcg
V2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50KGNoaWxkLCBjbG9zaW5nVGFnKTsKICAgICAgICAg
bmV3RWxlbWVudC5zZWxlY3RhYmxlID0gdGhpcy50cmVlT3V0bGluZS5fc2VsZWN0RW5hYmxlZDsK
ICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZChuZXdFbGVtZW50LCBpbmRleCk7CiAgICAgICAgIHJl
dHVybiBuZXdFbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgbW92ZUNoaWxkOiBmdW5jdGlv
bihjaGlsZCwgdGFyZ2V0SW5kZXgpCisgICAgbW92ZUNoaWxkKGNoaWxkLCB0YXJnZXRJbmRleCkK
ICAgICB7CiAgICAgICAgIHZhciB3YXNTZWxlY3RlZCA9IGNoaWxkLnNlbGVjdGVkOwogICAgICAg
ICB0aGlzLnJlbW92ZUNoaWxkKGNoaWxkKTsKICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZChjaGls
ZCwgdGFyZ2V0SW5kZXgpOwogICAgICAgICBpZiAod2FzU2VsZWN0ZWQpCiAgICAgICAgICAgICBj
aGlsZC5zZWxlY3QoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVDaGlsZHJlbjogZnVu
Y3Rpb24oZnVsbFJlZnJlc2gpCisgICAgX3VwZGF0ZUNoaWxkcmVuKGZ1bGxSZWZyZXNoKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUNoaWxkcmVuSW5Qcm9ncmVzcyB8fCAhdGhpcy50
cmVlT3V0bGluZS5fdmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQyMSwyNSArMzk3
LDI1IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlQ2hpbGRyZW5JblByb2dyZXNzOwotICAg
IH0sCisgICAgfQogCi0gICAgYWRqdXN0Q29sbGFwc2VkUmFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBh
ZGp1c3RDb2xsYXBzZWRSYW5nZSgpCiAgICAgewogICAgICAgICAvLyBFbnN1cmUgcHJlY29uZGl0
aW9uOiBvbmx5IHRoZSB0cmVlIGVsZW1lbnRzIGZvciBub2RlIGNoaWxkcmVuIGFyZSBmb3VuZCBp
biB0aGUgdHJlZQogICAgICAgICAvLyAobm90IHRoZSBFeHBhbmQgQWxsIGJ1dHRvbiBvciB0aGUg
Y2xvc2luZyB0YWcpLgogICAgICAgICBpZiAodGhpcy5leHBhbmRBbGxCdXR0b25FbGVtZW50ICYm
IHRoaXMuZXhwYW5kQWxsQnV0dG9uRWxlbWVudC5fX3RyZWVFbGVtZW50LnBhcmVudCkKICAgICAg
ICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQodGhpcy5leHBhbmRBbGxCdXR0b25FbGVtZW50Ll9fdHJl
ZUVsZW1lbnQpOwogCi0gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0
OworICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgIGlm
ICghbm9kZS5jaGlsZHJlbikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY29uc3QgY2hp
bGROb2RlQ291bnQgPSBub2RlLmNoaWxkcmVuLmxlbmd0aDsKKyAgICAgICAgdmFyIGNoaWxkTm9k
ZUNvdW50ID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7CiAKICAgICAgICAgLy8gSW4gY2FzZSBzb21l
IG5vZGVzIGZyb20gdGhlIGV4cGFuZGVkIHJhbmdlIHdlcmUgcmVtb3ZlZCwgcHVsbCBzb21lIG5v
ZGVzIGZyb20gdGhlIGNvbGxhcHNlZCByYW5nZSBpbnRvIHRoZSBleHBhbmRlZCByYW5nZSBhdCB0
aGUgYm90dG9tLgogICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5leHBhbmRlZENoaWxkQ291bnQs
IGxpbWl0ID0gTWF0aC5taW4odGhpcy5leHBhbmRlZENoaWxkcmVuTGltaXQsIGNoaWxkTm9kZUNv
dW50KTsgaSA8IGxpbWl0OyArK2kpCiAgICAgICAgICAgICB0aGlzLmluc2VydENoaWxkRWxlbWVu
dChub2RlLmNoaWxkcmVuW2ldLCBpKTsKIAotICAgICAgICBjb25zdCBleHBhbmRlZENoaWxkQ291
bnQgPSB0aGlzLmV4cGFuZGVkQ2hpbGRDb3VudDsKKyAgICAgICAgdmFyIGV4cGFuZGVkQ2hpbGRD
b3VudCA9IHRoaXMuZXhwYW5kZWRDaGlsZENvdW50OwogICAgICAgICBpZiAoY2hpbGROb2RlQ291
bnQgPiB0aGlzLmV4cGFuZGVkQ2hpbGRDb3VudCkgewogICAgICAgICAgICAgdmFyIHRhcmdldEJ1
dHRvbkluZGV4ID0gZXhwYW5kZWRDaGlsZENvdW50OwogICAgICAgICAgICAgaWYgKCF0aGlzLmV4
cGFuZEFsbEJ1dHRvbkVsZW1lbnQpIHsKQEAgLTQ0Nyw3ICs0MjMsNyBAQCBXZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGJ1dHRvbi5jbGFz
c05hbWUgPSAic2hvdy1hbGwtbm9kZXMiOwogICAgICAgICAgICAgICAgIGJ1dHRvbi52YWx1ZSA9
ICIiOwogCi0gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgVHJlZUVsZW1lbnQoYnV0dG9u
LCBudWxsLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVj
dG9yLlRyZWVFbGVtZW50KGJ1dHRvbiwgbnVsbCwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGl0
ZW0uc2VsZWN0YWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGl0ZW0uZXhwYW5kQWxsQnV0
dG9uID0gdHJ1ZTsKIApAQCAtNDYxLDMyICs0MzcsMzIgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZXhwYW5kQWxsQnV0dG9uRWxl
bWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBBbGwgTm9kZXMg
KCVkIE1vcmUpIikuZm9ybWF0KGNoaWxkTm9kZUNvdW50IC0gZXhwYW5kZWRDaGlsZENvdW50KTsK
ICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmV4cGFuZEFsbEJ1dHRvbkVsZW1lbnQpCiAgICAgICAg
ICAgICBkZWxldGUgdGhpcy5leHBhbmRBbGxCdXR0b25FbGVtZW50OwotICAgIH0sCisgICAgfQog
Ci0gICAgaGFuZGxlTG9hZEFsbENoaWxkcmVuOiBmdW5jdGlvbigpCisgICAgaGFuZGxlTG9hZEFs
bENoaWxkcmVuKCkKICAgICB7CiAgICAgICAgIHRoaXMuZXhwYW5kZWRDaGlsZHJlbkxpbWl0ID0g
TWF0aC5tYXgodGhpcy5yZXByZXNlbnRlZE9iamVjdC5jaGlsZE5vZGVDb3VudCwgdGhpcy5leHBh
bmRlZENoaWxkcmVuTGltaXQgKyBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQuSW5pdGlhbENo
aWxkcmVuTGltaXQpOwotICAgIH0sCisgICAgfQogCi0gICAgb25leHBhbmQ6IGZ1bmN0aW9uKCkK
KyAgICBvbmV4cGFuZCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZWxlbWVudENsb3NlVGFn
KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTsKICAg
ICAgICAgdGhpcy50cmVlT3V0bGluZS51cGRhdGVTZWxlY3Rpb24oKTsKLSAgICB9LAorICAgIH0K
IAotICAgIG9uY29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICBvbmNvbGxhcHNlKCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwogICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnVw
ZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgb25yZXZlYWw6IGZ1bmN0aW9u
KCkKKyAgICBvbnJldmVhbCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5saXN0SXRlbUVsZW1l
bnQpIHsKICAgICAgICAgICAgIHZhciB0YWdTcGFucyA9IHRoaXMubGlzdEl0ZW1FbGVtZW50Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoImh0bWwtdGFnLW5hbWUiKTsKQEAgLTQ5NSw5ICs0NzEsOSBA
QCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LnNjcm9sbEludG9WaWV3
SWZOZWVkZWQoZmFsc2UpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbnNlbGVj
dDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQorICAgIG9uc2VsZWN0KHRy
ZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIHRoaXMudHJlZU91dGxp
bmUuc3VwcHJlc3NSZXZlYWxBbmRTZWxlY3QgPSB0cnVlOwogICAgICAgICB0aGlzLnRyZWVPdXRs
aW5lLnNlbGVjdERPTU5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdCwgc2VsZWN0ZWRCeVVzZXIp
OwpAQCAtNTA1LDE0ICs0ODEsMTQgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWdobGln
aHRET01Ob2RlKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaWQpOwogICAgICAgICB0aGlzLnVwZGF0
ZVNlbGVjdGlvbigpOwogICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnN1cHByZXNzUmV2ZWFsQW5k
U2VsZWN0ID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmRlc2VsZWN0OiBmdW5jdGlv
bih0cmVlRWxlbWVudCkKKyAgICBvbmRlc2VsZWN0KHRyZWVFbGVtZW50KQogICAgIHsKICAgICAg
ICAgdGhpcy50cmVlT3V0bGluZS5zZWxlY3RET01Ob2RlKG51bGwpOwotICAgIH0sCisgICAgfQog
Ci0gICAgb25kZWxldGU6IGZ1bmN0aW9uKCkKKyAgICBvbmRlbGV0ZSgpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5pc0luU2hhZG93VHJlZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNTIzLDkgKzQ5OSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMucmVt
b3ZlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgb25lbnRl
cjogZnVuY3Rpb24oKQorICAgIG9uZW50ZXIoKQogICAgIHsKICAgICAgICAgLy8gT24gRW50ZXIg
b3IgUmV0dXJuIHN0YXJ0IGVkaXRpbmcgdGhlIGZpcnN0IGF0dHJpYnV0ZQogICAgICAgICAvLyBv
ciBjcmVhdGUgYSBuZXcgYXR0cmlidXRlIG9uIHRoZSBzZWxlY3RlZCBlbGVtZW50LgpAQCAtNTM2
LDExICs1MTIsMTEgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
IAogICAgICAgICAvLyBwcmV2ZW50IGEgbmV3bGluZSBmcm9tIGJlaW5nIGltbWVkaWF0ZWx5IGlu
c2VydGVkCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgc2VsZWN0
T25Nb3VzZURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIHNlbGVjdE9uTW91c2VEb3duKGV2ZW50
KQogICAgIHsKLSAgICAgICAgVHJlZUVsZW1lbnQucHJvdG90eXBlLnNlbGVjdE9uTW91c2VEb3du
LmNhbGwodGhpcywgZXZlbnQpOworICAgICAgICBzdXBlci5zZWxlY3RPbk1vdXNlRG93bihldmVu
dCk7CiAKICAgICAgICAgaWYgKHRoaXMuX2VkaXRpbmcpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC01NDgsOSArNTI0LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgLy8gUHJldmVudCBzZWxlY3RpbmcgdGhlIG5lYXJlc3Qgd29yZCBvbiBkb3Vi
bGUgY2xpY2suCiAgICAgICAgIGlmIChldmVudC5kZXRhaWwgPj0gMikKICAgICAgICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmRibGNsaWNrOiBm
dW5jdGlvbihldmVudCkKKyAgICBvbmRibGNsaWNrKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2VkaXRpbmcgfHwgdGhpcy5fZWxlbWVudENsb3NlVGFnKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNTYwLDkgKzUzNiw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4gJiYgIXRoaXMuZXhwYW5k
ZWQpCiAgICAgICAgICAgICB0aGlzLmV4cGFuZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2lu
c2VydEluTGFzdEF0dHJpYnV0ZVBvc2l0aW9uOiBmdW5jdGlvbih0YWcsIG5vZGUpCisgICAgX2lu
c2VydEluTGFzdEF0dHJpYnV0ZVBvc2l0aW9uKHRhZywgbm9kZSkKICAgICB7CiAgICAgICAgIGlm
ICh0YWcuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaHRtbC1hdHRyaWJ1dGUiKS5sZW5ndGggPiAw
KQogICAgICAgICAgICAgdGFnLmluc2VydEJlZm9yZShub2RlLCB0YWcubGFzdENoaWxkKTsKQEAg
LTU3NSw5ICs1NTEsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24oKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9zdGFydEVkaXRpbmdUYXJnZXQ6IGZ1bmN0aW9uKGV2ZW50VGFyZ2V0KQor
ICAgIF9zdGFydEVkaXRpbmdUYXJnZXQoZXZlbnRUYXJnZXQpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZERPTU5vZGUoKSAhPT0gdGhpcy5yZXByZXNlbnRlZE9i
amVjdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYwNSw5ICs1ODEsOSBAQCBXZWJJ
bnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX2FkZE5ld0F0dHJpYnV0ZSgpOwogCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0
TWVudSwgZXZlbnQpCisgICAgX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIGV2
ZW50KQogICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Owog
ICAgICAgICBpZiAoIW5vZGUuaXNJblNoYWRvd1RyZWUoKSkgewpAQCAtNjI5LDkgKzYwNSw5IEBA
IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhp
cy5fcG9wdWxhdGVOb2RlQ29udGV4dE1lbnUoY29udGV4dE1lbnUpOwogICAgICAgICB0aGlzLnRy
ZWVPdXRsaW5lLl9wb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3B1bGF0ZUZvcmNlZFBzZXVkb1N0
YXRlSXRlbXM6IGZ1bmN0aW9uKHN1Yk1lbnUpCisgICAgX3BvcHVsYXRlRm9yY2VkUHNldWRvU3Rh
dGVJdGVtcyhzdWJNZW51KQogICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0OwogICAgICAgICB2YXIgZW5hYmxlZFBzZXVkb0NsYXNzZXMgPSBub2RlLmVuYWJs
ZWRQc2V1ZG9DbGFzc2VzOwpAQCAtNjQzLDE4ICs2MTksMTggQEAgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBub2RlLnNldFBzZXVkb0Ns
YXNzRW5hYmxlZChwc2V1ZG9DbGFzcywgIWVuYWJsZWQpOwogICAgICAgICAgICAgfSwgZW5hYmxl
ZCwgZmFsc2UpOwogICAgICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3B1bGF0ZVRl
eHRDb250ZXh0TWVudTogZnVuY3Rpb24oY29udGV4dE1lbnUsIHRleHROb2RlKQorICAgIF9wb3B1
bGF0ZVRleHRDb250ZXh0TWVudShjb250ZXh0TWVudSwgdGV4dE5vZGUpCiAgICAgewogICAgICAg
ICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgIGlmICghbm9kZS5p
c0luU2hhZG93VHJlZSgpKQogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkVkaXQgVGV4dCIpLCB0aGlzLl9zdGFydEVkaXRpbmdUZXh0Tm9k
ZS5iaW5kKHRoaXMsIHRleHROb2RlKSk7CiAKICAgICAgICAgdGhpcy5fcG9wdWxhdGVOb2RlQ29u
dGV4dE1lbnUoY29udGV4dE1lbnUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BvcHVsYXRlTm9k
ZUNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSkKKyAgICBfcG9wdWxhdGVOb2RlQ29u
dGV4dE1lbnUoY29udGV4dE1lbnUpCiAgICAgewogICAgICAgICAvLyBBZGQgZnJlZS1mb3JtIG5v
ZGUtcmVsYXRlZCBhY3Rpb25zLgogICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRP
YmplY3Q7CkBAIC02NjMsOSArNjM5LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkNvcHkgYXMgSFRNTCIpLCB0aGlzLl9jb3B5SFRNTC5iaW5kKHRoaXMpKTsKICAg
ICAgICAgaWYgKCFub2RlLmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIE5vZGUiKSwgdGhpcy5y
ZW1vdmUuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RhcnRFZGl0aW5nOiBm
dW5jdGlvbigpCisgICAgX3N0YXJ0RWRpdGluZygpCiAgICAgewogICAgICAgICBpZiAodGhpcy50
cmVlT3V0bGluZS5zZWxlY3RlZERPTU5vZGUoKSAhPT0gdGhpcy5yZXByZXNlbnRlZE9iamVjdCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY4OSw5ICs2NjUsOSBAQCBXZWJJbnNwZWN0
b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLl9zdGFydEVkaXRpbmdUZXh0Tm9kZSh0ZXh0Tm9kZSk7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9hZGROZXdBdHRyaWJ1dGU6
IGZ1bmN0aW9uKCkKKyAgICBfYWRkTmV3QXR0cmlidXRlKCkKICAgICB7CiAgICAgICAgIC8vIENh
bm5vdCBqdXN0IGNvbnZlcnQgdGhlIHRleHR1YWwgaHRtbCBpbnRvIGFuIGVsZW1lbnQgd2l0aG91
dAogICAgICAgICAvLyBhIHBhcmVudCBub2RlLiBVc2UgYSB0ZW1wb3Jhcnkgc3BhbiBjb250YWlu
ZXIgZm9yIHRoZSBIVE1MLgpAQCAtNzA0LDkgKzY4MCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciB0YWcgPSB0aGlzLmxpc3RJdGVtRWxl
bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJodG1sLXRhZyIpWzBdOwogICAgICAgICB0aGlz
Ll9pbnNlcnRJbkxhc3RBdHRyaWJ1dGVQb3NpdGlvbih0YWcsIGF0dHIpOwogICAgICAgICByZXR1
cm4gdGhpcy5fc3RhcnRFZGl0aW5nQXR0cmlidXRlKGF0dHIsIGF0dHIpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3RyaWdnZXJFZGl0QXR0cmlidXRlOiBmdW5jdGlvbihhdHRyaWJ1dGVOYW1lKQor
ICAgIF90cmlnZ2VyRWRpdEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKQogICAgIHsKICAgICAgICAg
dmFyIGF0dHJpYnV0ZUVsZW1lbnRzID0gdGhpcy5saXN0SXRlbUVsZW1lbnQuZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZSgiaHRtbC1hdHRyaWJ1dGUtbmFtZSIpOwogICAgICAgICBmb3IgKHZhciBpID0g
MCwgbGVuID0gYXR0cmlidXRlRWxlbWVudHMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKQEAgLTcy
MCw5ICs2OTYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0sCisgICAg
fQogCi0gICAgX3N0YXJ0RWRpdGluZ0F0dHJpYnV0ZTogZnVuY3Rpb24oYXR0cmlidXRlLCBlbGVt
ZW50Rm9yU2VsZWN0aW9uKQorICAgIF9zdGFydEVkaXRpbmdBdHRyaWJ1dGUoYXR0cmlidXRlLCBl
bGVtZW50Rm9yU2VsZWN0aW9uKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5pc0Jl
aW5nRWRpdGVkKGF0dHJpYnV0ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc1Niw5
ICs3MzIsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
ICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChlbGVtZW50Rm9yU2Vs
ZWN0aW9uLCAwLCBlbGVtZW50Rm9yU2VsZWN0aW9uLCAxKTsKIAogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdGFydEVkaXRpbmdUZXh0Tm9kZTogZnVuY3Rpb24o
dGV4dE5vZGUpCisgICAgX3N0YXJ0RWRpdGluZ1RleHROb2RlKHRleHROb2RlKQogICAgIHsKICAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKHRleHROb2RlKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtNzY5LDkgKzc0NSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRC
YXNlQW5kRXh0ZW50KHRleHROb2RlLCAwLCB0ZXh0Tm9kZSwgMSk7CiAKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RhcnRFZGl0aW5nVGFnTmFtZTogZnVuY3Rp
b24odGFnTmFtZUVsZW1lbnQpCisgICAgX3N0YXJ0RWRpdGluZ1RhZ05hbWUodGFnTmFtZUVsZW1l
bnQpCiAgICAgewogICAgICAgICBpZiAoIXRhZ05hbWVFbGVtZW50KSB7CiAgICAgICAgICAgICB0
YWdOYW1lRWxlbWVudCA9IHRoaXMubGlzdEl0ZW1FbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoImh0bWwtdGFnLW5hbWUiKVswXTsKQEAgLTgxMiw5ICs3ODgsOSBAQCBXZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9lZGl0aW5nID0gV2Vi
SW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0YWdOYW1lRWxlbWVudCwgY29uZmlnKTsKICAgICAgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGFnTmFtZUVsZW1lbnQsIDAs
IHRhZ05hbWVFbGVtZW50LCAxKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfc3RhcnRFZGl0aW5nQXNIVE1MOiBmdW5jdGlvbihjb21taXRDYWxsYmFjaywgZXJy
b3IsIGluaXRpYWxWYWx1ZSkKKyAgICBfc3RhcnRFZGl0aW5nQXNIVE1MKGNvbW1pdENhbGxiYWNr
LCBlcnJvciwgaW5pdGlhbFZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtODY4LDkgKzg0NCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBjb25maWcgPSBuZXcgV2ViSW5zcGVjdG9y
LkVkaXRpbmdDb25maWcoY29tbWl0LmJpbmQodGhpcyksIGRpc3Bvc2UuYmluZCh0aGlzKSk7CiAg
ICAgICAgIGNvbmZpZy5zZXRNdWx0aWxpbmUodHJ1ZSk7CiAgICAgICAgIHRoaXMuX2VkaXRpbmcg
PSBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKHRoaXMuX2h0bWxFZGl0RWxlbWVudCwgY29uZmln
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hdHRyaWJ1dGVFZGl0aW5nQ29tbWl0dGVkOiBmdW5j
dGlvbihlbGVtZW50LCBuZXdUZXh0LCBvbGRUZXh0LCBhdHRyaWJ1dGVOYW1lLCBtb3ZlRGlyZWN0
aW9uKQorICAgIF9hdHRyaWJ1dGVFZGl0aW5nQ29tbWl0dGVkKGVsZW1lbnQsIG5ld1RleHQsIG9s
ZFRleHQsIGF0dHJpYnV0ZU5hbWUsIG1vdmVEaXJlY3Rpb24pCiAgICAgewogICAgICAgICB0aGlz
Ll9lZGl0aW5nID0gZmFsc2U7CiAKQEAgLTkyNSw5ICs5MDEsOSBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgbmV3VGV4dCwgbW92ZVRv
TmV4dEF0dHJpYnV0ZUlmTmVlZGVkLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3RhZ05hbWVFZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50LCBuZXdUZXh0LCBvbGRU
ZXh0LCB0YWdOYW1lLCBtb3ZlRGlyZWN0aW9uKQorICAgIF90YWdOYW1lRWRpdGluZ0NvbW1pdHRl
ZChlbGVtZW50LCBuZXdUZXh0LCBvbGRUZXh0LCB0YWdOYW1lLCBtb3ZlRGlyZWN0aW9uKQogICAg
IHsKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IGZhbHNlOwogICAgICAgICB2YXIgc2VsZiA9IHRo
aXM7CkBAIC05ODYsOSArOTYyLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3Quc2V0
Tm9kZU5hbWUobmV3VGV4dCwgY2hhbmdlVGFnTmFtZUNhbGxiYWNrKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF90ZXh0Tm9kZUVkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1Rl
eHQpCisgICAgX3RleHROb2RlRWRpdGluZ0NvbW1pdHRlZChlbGVtZW50LCBuZXdUZXh0KQogICAg
IHsKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IGZhbHNlOwogCkBAIC0xMDAxLDE3ICs5NzcsMTcg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHRleHROb2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKIAogICAgICAgICB0ZXh0Tm9kZS5z
ZXROb2RlVmFsdWUobmV3VGV4dCwgdGhpcy51cGRhdGVUaXRsZS5iaW5kKHRoaXMpKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9lZGl0aW5nQ2FuY2VsbGVkOiBmdW5jdGlvbihlbGVtZW50LCBjb250
ZXh0KQorICAgIF9lZGl0aW5nQ2FuY2VsbGVkKGVsZW1lbnQsIGNvbnRleHQpCiAgICAgewogICAg
ICAgICB0aGlzLl9lZGl0aW5nID0gZmFsc2U7CiAKICAgICAgICAgLy8gTmVlZCB0byByZXN0b3Jl
IGF0dHJpYnV0ZXMgc3RydWN0dXJlLgogICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfZGlzdGluY3RDbG9zaW5nVGFnRWxlbWVudDogZnVuY3Rpb24oKQor
ICAgIF9kaXN0aW5jdENsb3NpbmdUYWdFbGVtZW50KCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1F
OiBJbXByb3ZlIHRoZSBUcmVlIEVsZW1lbnQgLyBPdXRsaW5lIEFic3RyYWN0aW9uIHRvIHByZXZl
bnQgY3Jhd2xpbmcgdGhlIERPTQogCkBAIC0xMDI3LDkgKzEwMDMsOSBAQCBXZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAvLyBudWxsIGluIHRoZSBjYXNl
IHdoZXJlIHRoZXJlIGlzbid0IGEgY2xvc2luZyB0YWcuCiAgICAgICAgIHZhciB0YWdzID0gdGhp
cy5saXN0SXRlbUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaHRtbC10YWciKTsKICAg
ICAgICAgcmV0dXJuICh0YWdzLmxlbmd0aCA9PT0gMSA/IG51bGwgOiB0YWdzW3RhZ3MubGVuZ3Ro
IC0gMV0pOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlVGl0bGU6IGZ1bmN0aW9uKG9ubHlT
ZWFyY2hRdWVyeUNoYW5nZWQpCisgICAgdXBkYXRlVGl0bGUob25seVNlYXJjaFF1ZXJ5Q2hhbmdl
ZCkKICAgICB7CiAgICAgICAgIC8vIElmIHdlIGFyZSBlZGl0aW5nLCByZXR1cm4gZWFybHkgdG8g
cHJldmVudCBjYW5jZWxpbmcgdGhlIGVkaXQuCiAgICAgICAgIC8vIEFmdGVyIGVkaXRpbmcgaXMg
Y29tbWl0dGVkIHVwZGF0ZVRpdGxlIHdpbGwgYmUgY2FsbGVkLgpAQCAtMTA0OCw5ICsxMDI0LDkg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVs
ZXRlIHRoaXMuc2VsZWN0aW9uRWxlbWVudDsKICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24o
KTsKICAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VhcmNoUmVzdWx0cygpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2J1aWxkQXR0cmlidXRlRE9NOiBmdW5jdGlvbihwYXJlbnRFbGVtZW50LCBuYW1l
LCB2YWx1ZSwgbm9kZSkKKyAgICBfYnVpbGRBdHRyaWJ1dGVET00ocGFyZW50RWxlbWVudCwgbmFt
ZSwgdmFsdWUsIG5vZGUpCiAgICAgewogICAgICAgICB2YXIgaGFzVGV4dCA9ICh2YWx1ZS5sZW5n
dGggPiAwKTsKICAgICAgICAgdmFyIGF0dHJTcGFuRWxlbWVudCA9IHBhcmVudEVsZW1lbnQuY3Jl
YXRlQ2hpbGQoInNwYW4iLCAiaHRtbC1hdHRyaWJ1dGUiKTsKQEAgLTEwODcsOSArMTA2Myw5IEBA
IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYg
KGhhc1RleHQpCiAgICAgICAgICAgICBhdHRyU3BhbkVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoIlwiIikpOwotICAgIH0sCisgICAgfQogCi0gICAgX2J1aWxkVGFn
RE9NOiBmdW5jdGlvbihwYXJlbnRFbGVtZW50LCB0YWdOYW1lLCBpc0Nsb3NpbmdUYWcsIGlzRGlz
dGluY3RUcmVlRWxlbWVudCkKKyAgICBfYnVpbGRUYWdET00ocGFyZW50RWxlbWVudCwgdGFnTmFt
ZSwgaXNDbG9zaW5nVGFnLCBpc0Rpc3RpbmN0VHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICB2
YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgIHZhciBjbGFzc2VzID0g
WyAiaHRtbC10YWciIF07CkBAIC0xMTExLDEzICsxMDg3LDIwIEBAIFdlYkluc3BlY3Rvci5ET01U
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICAgICAgdGFnRWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiPiIpKTsKICAgICAgICAgcGFyZW50
RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiXHUyMDBCIikpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX25vZGVUaXRsZUluZm86IGZ1bmN0aW9uKCkKKyAgICBfbm9k
ZVRpdGxlSW5mbygpCiAgICAgewogICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRP
YmplY3Q7CiAgICAgICAgIHZhciBpbmZvID0ge3RpdGxlRE9NOiBkb2N1bWVudC5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCksIGhhc0NoaWxkcmVuOiB0aGlzLmhhc0NoaWxkcmVufTsKIAorICAgICAg
ICBmdW5jdGlvbiB0cmltZWROb2RlVmFsdWUoKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBU
cmltIGVtcHR5IGxpbmVzIGZyb20gdGhlIGJlZ2lubmluZyBhbmQgZXh0cmEgc3BhY2UgYXQgdGhl
IGVuZCBzaW5jZSBtb3N0IHN0eWxlIGFuZCBzY3JpcHQgdGFncyBiZWdpbiB3aXRoIGEgbmV3bGlu
ZQorICAgICAgICAgICAgLy8gYW5kIGVuZCB3aXRoIGEgbmV3bGluZSBhbmQgaW5kZW50YXRpb24g
Zm9yIHRoZSBlbmQgdGFnLgorICAgICAgICAgICAgcmV0dXJuIG5vZGUubm9kZVZhbHVlKCkucmVw
bGFjZSgvXltcblxyXSovLCAiIikucmVwbGFjZSgvXHMqJC8sICIiKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIE5vZGUu
RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKICAgICAgICAgICAgICAgICB2YXIgZnJhZ21lbnRFbGVt
ZW50ID0gaW5mby50aXRsZURPTS5jcmVhdGVDaGlsZCgic3BhbiIsICJ3ZWJraXQtaHRtbC1mcmFn
bWVudCIpOwpAQCAtMTE3NywxMyArMTE2MCw2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNh
c2UgTm9kZS5URVhUX05PREU6Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24gdHJpbWVkTm9kZVZh
bHVlKCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRyaW0gZW1w
dHkgbGluZXMgZnJvbSB0aGUgYmVnaW5uaW5nIGFuZCBleHRyYSBzcGFjZSBhdCB0aGUgZW5kIHNp
bmNlIG1vc3Qgc3R5bGUgYW5kIHNjcmlwdCB0YWdzIGJlZ2luIHdpdGggYSBuZXdsaW5lCi0gICAg
ICAgICAgICAgICAgICAgIC8vIGFuZCBlbmQgd2l0aCBhIG5ld2xpbmUgYW5kIGluZGVudGF0aW9u
IGZvciB0aGUgZW5kIHRhZy4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUubm9kZVZh
bHVlKCkucmVwbGFjZSgvXltcblxyXSovLCAiIikucmVwbGFjZSgvXHMqJC8sICIiKTsKLSAgICAg
ICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICBpZiAobm9kZS5wYXJlbnROb2RlICYmIG5v
ZGUucGFyZW50Tm9kZS5ub2RlTmFtZSgpLnRvTG93ZXJDYXNlKCkgPT09ICJzY3JpcHQiKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHZhciBuZXdOb2RlID0gaW5mby50aXRsZURPTS5jcmVhdGVDaGls
ZCgic3BhbiIsICJodG1sLXRleHQtbm9kZSBsYXJnZSIpOwogICAgICAgICAgICAgICAgICAgICBu
ZXdOb2RlLmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5zeW50YXhIaWdobGlnaHRTdHJpbmdBc0Rv
Y3VtZW50RnJhZ21lbnQodHJpbWVkTm9kZVZhbHVlKCksICJ0ZXh0L2phdmFzY3JpcHQiKSk7CkBA
IC0xMjM3LDkgKzEyMTMsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfc2luZ2xlVGV4dENoaWxkOiBmdW5jdGlvbihub2RlKQorICAgIF9zaW5nbGVUZXh0Q2hp
bGQobm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIHJldHVybiBu
dWxsOwpAQCAtMTI1Myw5ICsxMjI5LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgc2libGluZyA9IGZpcnN0Q2hpbGQubmV4dFNpYmxp
bmc7CiAgICAgICAgIHJldHVybiBzaWJsaW5nID8gbnVsbCA6IGZpcnN0Q2hpbGQ7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfc2hvd0lubGluZVRleHQ6IGZ1bmN0aW9uKG5vZGUpCisgICAgX3Nob3dJ
bmxpbmVUZXh0KG5vZGUpCiAgICAgewogICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSgpID09PSBO
b2RlLkVMRU1FTlRfTk9ERSkgewogICAgICAgICAgICAgdmFyIHRleHRDaGlsZCA9IHRoaXMuX3Np
bmdsZVRleHRDaGlsZChub2RlKTsKQEAgLTEyNjMsOSArMTIzOSw5IEBAIFdlYkluc3BlY3Rvci5E
T01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAg
cmVtb3ZlOiBmdW5jdGlvbigpCisgICAgcmVtb3ZlKCkKICAgICB7CiAgICAgICAgIHZhciBwYXJl
bnRFbGVtZW50ID0gdGhpcy5wYXJlbnQ7CiAgICAgICAgIGlmICghcGFyZW50RWxlbWVudCkKQEAg
LTEyODUsOSArMTI2MSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZU5v
ZGUocmVtb3ZlTm9kZUNhbGxiYWNrKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9lZGl0QXNIVE1M
OiBmdW5jdGlvbigpCisgICAgX2VkaXRBc0hUTUwoKQogICAgIHsKICAgICAgICAgdmFyIHRyZWVP
dXRsaW5lID0gdGhpcy50cmVlT3V0bGluZTsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnJlcHJl
c2VudGVkT2JqZWN0OwpAQCAtMTMyMiwxNCArMTI5OCwxNCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgbm9kZS5nZXRPdXRl
ckhUTUwodGhpcy5fc3RhcnRFZGl0aW5nQXNIVE1MLmJpbmQodGhpcywgY29tbWl0Q2hhbmdlKSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29weUhUTUw6IGZ1bmN0aW9uKCkKKyAgICBfY29weUhU
TUwoKQogICAgIHsKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5jb3B5Tm9kZSgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2hpZ2hsaWdodFNlYXJjaFJlc3VsdHM6IGZ1bmN0aW9uKCkK
KyAgICBfaGlnaGxpZ2h0U2VhcmNoUmVzdWx0cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
dGl0bGUgfHwgIXRoaXMuX3NlYXJjaFF1ZXJ5IHx8ICF0aGlzLl9zZWFyY2hIaWdobGlnaHRzVmlz
aWJsZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzNTYsMTMgKzEzMzIsMzAgQEAgV2ViSW5z
cGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9oaWdo
bGlnaHRSZXN1bHQgPSBbXTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmhpZ2hsaWdodFJhbmdlc1dp
dGhTdHlsZUNsYXNzKHRoaXMudGl0bGUsIG1hdGNoUmFuZ2VzLCBXZWJJbnNwZWN0b3IuRE9NVHJl
ZUVsZW1lbnQuU2VhcmNoSGlnaGxpZ2h0U3R5bGVDbGFzc05hbWUsIHRoaXMuX2hpZ2hsaWdodFJl
c3VsdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQp
CisgICAgaGFuZGxlRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudHlwZSA9
PT0gImRyYWdzdGFydCIgJiYgdGhpcy5fZWRpdGluZykKICAgICAgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBUcmVlRWxlbWVudC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnQuSW5pdGlhbENoaWxkcmVuTGltaXQgPSA1MDA7CitXZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnQuTWF4aW11bUlubGluZVRleHRDaGlsZExlbmd0aCA9IDgwOworCisvLyBB
IHVuaW9uIG9mIEhUTUw0IGFuZCBIVE1MNS1EcmFmdCBlbGVtZW50cyB0aGF0IGV4cGxpY2l0bHkK
Ky8vIG9yIGltcGxpY2l0bHkgKGZvciBIVE1MNSkgZm9yYmlkIHRoZSBjbG9zaW5nIHRhZy4KKy8v
IEZJWE1FOiBSZXZpc2Ugb25jZSBIVE1MNSBGaW5hbCBpcyBwdWJsaXNoZWQuCitXZWJJbnNwZWN0
b3IuRE9NVHJlZUVsZW1lbnQuRm9yYmlkZGVuQ2xvc2luZ1RhZ0VsZW1lbnRzID0gWworICAgICJh
cmVhIiwgImJhc2UiLCAiYmFzZWZvbnQiLCAiYnIiLCAiY2FudmFzIiwgImNvbCIsICJjb21tYW5k
IiwgImVtYmVkIiwgImZyYW1lIiwKKyAgICAiaHIiLCAiaW1nIiwgImlucHV0IiwgImlzaW5kZXgi
LCAia2V5Z2VuIiwgImxpbmsiLCAibWV0YSIsICJwYXJhbSIsICJzb3VyY2UiCitdLmtleVNldCgp
OworCisvLyBUaGVzZSB0YWdzIHdlIGRvIG5vdCBhbGxvdyBlZGl0aW5nIHRoZWlyIHRhZyBuYW1l
LgorV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkVkaXRUYWdCbGFja2xpc3QgPSBbCisgICAg
Imh0bWwiLCAiaGVhZCIsICJib2R5IgorXS5rZXlTZXQoKTsKKworV2ViSW5zcGVjdG9yLkRPTVRy
ZWVFbGVtZW50LlNlYXJjaEhpZ2hsaWdodFN0eWxlQ2xhc3NOYW1lID0gInNlYXJjaC1oaWdobGln
aHQiOworV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkJvdW5jeUhpZ2hsaWdodFN0eWxlQ2xh
c3NOYW1lID0gImJvdW5jeS1oaWdobGlnaHQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcwppbmRleCA4
ODVmNzg0ZTM3ZGZhNDU3NGI5MmI4MGI0YjkwODIxOWI1ODY0ODgzLi5kZTg4ZmEwY2ZiNDkxMDNi
OWFlZDg1ZTEzNmNjMmQ4YTE1ODlhZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAx
MywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA4IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgogICogQ29weXJpZ2h0IChD
KSAyMDA5IEpvc2VwaCBQZWNvcmFybwogICoKQEAgLTI4LDY3ICsyOCw2MCBAQAogICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUgPSBmdW5jdGlvbihvbWl0Um9v
dERPTU5vZGUsIHNlbGVjdEVuYWJsZWQsIHNob3dJbkVsZW1lbnRzUGFuZWxFbmFibGVkKQorV2Vi
SW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lID0gY2xhc3MgRE9NVHJlZU91dGxpbmUgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUKIHsKLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJvbCIpOwotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZWRvd24iLCB0aGlzLl9vbm1vdXNlZG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhp
cy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX29ubW91c2Vtb3Zl
LmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2VvdXQiLCB0aGlzLl9vbm1vdXNlb3V0LmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlz
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgdGhpcy5fb25kcmFnc3RhcnQu
YmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJk
cmFnb3ZlciIsIHRoaXMuX29uZHJhZ292ZXIuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMu
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnbGVhdmUiLCB0aGlzLl9vbmRyYWdsZWF2ZS5i
aW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRy
b3AiLCB0aGlzLl9vbmRyb3AuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJkcmFnZW5kIiwgdGhpcy5fb25kcmFnZW5kLmJpbmQodGhpcyksIGZh
bHNlKTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5ET01U
cmVlT3V0bGluZS5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLlN5bnRheEhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWUpOwotCi0gICAg
VHJlZU91dGxpbmUuY2FsbCh0aGlzLCB0aGlzLmVsZW1lbnQpOworICAgIGNvbnN0cnVjdG9yKG9t
aXRSb290RE9NTm9kZSwgc2VsZWN0RW5hYmxlZCwgc2hvd0luRWxlbWVudHNQYW5lbEVuYWJsZWQp
CisgICAgeworICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9s
Iik7CiAKLSAgICB0aGlzLl9pbmNsdWRlUm9vdERPTU5vZGUgPSAhb21pdFJvb3RET01Ob2RlOwot
ICAgIHRoaXMuX3NlbGVjdEVuYWJsZWQgPSBzZWxlY3RFbmFibGVkOwotICAgIHRoaXMuX3Nob3dJ
bkVsZW1lbnRzUGFuZWxFbmFibGVkID0gc2hvd0luRWxlbWVudHNQYW5lbEVuYWJsZWQ7Ci0gICAg
dGhpcy5fcm9vdERPTU5vZGUgPSBudWxsOwotICAgIHRoaXMuX3NlbGVjdGVkRE9NTm9kZSA9IG51
bGw7Ci0gICAgdGhpcy5fZXZlbnRTdXBwb3J0ID0gbmV3IFdlYkluc3BlY3Rvci5PYmplY3QoKTsK
LSAgICB0aGlzLl9lZGl0aW5nID0gZmFsc2U7CisgICAgICAgIHN1cGVyKGVsZW1lbnQpOwogCi0g
ICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNlOworICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlZG93biIsIHRoaXMuX29ubW91c2Vkb3duLmJpbmQodGhpcyksIGZhbHNlKTsKKyAg
ICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLl9vbm1vdXNl
bW92ZS5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigibW91c2VvdXQiLCB0aGlzLl9vbm1vdXNlb3V0LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAg
ICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCB0aGlzLl9vbmRyYWdzdGFy
dC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
ZHJhZ292ZXIiLCB0aGlzLl9vbmRyYWdvdmVyLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAg
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnbGVhdmUiLCB0aGlzLl9vbmRyYWdsZWF2ZS5i
aW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJv
cCIsIHRoaXMuX29uZHJvcC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIGVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsIHRoaXMuX29uZHJhZ2VuZC5iaW5kKHRoaXMpLCBmYWxz
ZSk7CiAKLSAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0
aGlzLl9jb250ZXh0TWVudUV2ZW50RmlyZWQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgICAgIGVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiZG9tLXRyZWUtb3V0bGluZSIpOworICAgICAgICBlbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlN5bnRheEhpZ2hsaWdodGVkU3R5bGVDbGFzc05h
bWUpOwogCi0gICAgdGhpcy5faGlkZUVsZW1lbnRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KG51bGwsICJIIiwgdGhpcy5faGlkZUVsZW1lbnQuYmlu
ZCh0aGlzKSwgdGhpcy5lbGVtZW50KTsKLSAgICB0aGlzLl9oaWRlRWxlbWVudEtleWJvYXJkU2hv
cnRjdXQuaW1wbGljaXRseVByZXZlbnRzRGVmYXVsdCA9IGZhbHNlOworICAgICAgICB0aGlzLl9p
bmNsdWRlUm9vdERPTU5vZGUgPSAhb21pdFJvb3RET01Ob2RlOworICAgICAgICB0aGlzLl9zZWxl
Y3RFbmFibGVkID0gc2VsZWN0RW5hYmxlZDsKKyAgICAgICAgdGhpcy5fc2hvd0luRWxlbWVudHNQ
YW5lbEVuYWJsZWQgPSBzaG93SW5FbGVtZW50c1BhbmVsRW5hYmxlZDsKKyAgICAgICAgdGhpcy5f
cm9vdERPTU5vZGUgPSBudWxsOworICAgICAgICB0aGlzLl9zZWxlY3RlZERPTU5vZGUgPSBudWxs
OworICAgICAgICB0aGlzLl9ldmVudFN1cHBvcnQgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdCgp
OworICAgICAgICB0aGlzLl9lZGl0aW5nID0gZmFsc2U7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hv
d1NoYWRvd0RPTVNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGluZy5F
dmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93U2hhZG93RE9NU2V0dGluZ0NoYW5nZWQsIHRoaXMpOwot
fTsKKyAgICAgICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNlOwogCi0vLyBGSVhNRTogTW92ZSB0byBh
IFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KLVdl
Ykluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYklu
c3BlY3Rvci5ET01UcmVlT3V0bGluZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2NvbnRleHRNZW51RXZlbnRGaXJlZC5iaW5kKHRo
aXMpLCB0cnVlKTsKIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLlN0eWxlQ2xhc3NOYW1l
ID0gImRvbS10cmVlLW91dGxpbmUiOworICAgICAgICB0aGlzLl9oaWRlRWxlbWVudEtleWJvYXJk
U2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgIkgiLCB0
aGlzLl9oaWRlRWxlbWVudC5iaW5kKHRoaXMpLCB0aGlzLmVsZW1lbnQpOworICAgICAgICB0aGlz
Ll9oaWRlRWxlbWVudEtleWJvYXJkU2hvcnRjdXQuaW1wbGljaXRseVByZXZlbnRzRGVmYXVsdCA9
IGZhbHNlOwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUuRXZlbnQgPSB7Ci0gICAgU2Vs
ZWN0ZWROb2RlQ2hhbmdlZDogImRvbS10cmVlLW91dGxpbmUtc2VsZWN0ZWQtbm9kZS1jaGFuZ2Vk
IgotfTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTaGFkb3dET01TZXR0aW5nLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hvd1No
YWRvd0RPTVNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5ET01U
cmVlT3V0bGluZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5E
T01UcmVlT3V0bGluZSwKKyAgICAvLyBQdWJsaWMKIAotICAgIHdpcmVUb0RvbUFnZW50OiBmdW5j
dGlvbigpCisgICAgd2lyZVRvRG9tQWdlbnQoKQogICAgIHsKICAgICAgICAgdGhpcy5fZWxlbWVu
dHNUcmVlVXBkYXRlciA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NVHJlZVVwZGF0ZXIodGhpcyk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZTogZnVuY3Rpb24oKQorICAgIGNsb3NlKCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50c1RyZWVVcGRhdGVyKSB7CiAgICAgICAgICAgICB0
aGlzLl9lbGVtZW50c1RyZWVVcGRhdGVyLmNsb3NlKCk7CiAgICAgICAgICAgICB0aGlzLl9lbGVt
ZW50c1RyZWVVcGRhdGVyID0gbnVsbDsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAg
c2V0VmlzaWJsZTogZnVuY3Rpb24odmlzaWJsZSwgb21pdEZvY3VzKQorICAgIHNldFZpc2libGUo
dmlzaWJsZSwgb21pdEZvY3VzKQogICAgIHsKICAgICAgICAgdGhpcy5fdmlzaWJsZSA9IHZpc2li
bGU7CiAgICAgICAgIGlmICghdGhpcy5fdmlzaWJsZSkKQEAgLTk3LDIyICs5MCwyMiBAQCBXZWJJ
bnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91cGRh
dGVNb2RpZmllZE5vZGVzKCk7CiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZERPTU5vZGUpCiAg
ICAgICAgICAgICB0aGlzLl9yZXZlYWxBbmRTZWxlY3ROb2RlKHRoaXMuX3NlbGVjdGVkRE9NTm9k
ZSwgb21pdEZvY3VzKTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZEV2ZW50TGlzdGVuZXI6IGZ1
bmN0aW9uKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCisgICAgYWRkRXZlbnRMaXN0
ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KQogICAgIHsKICAgICAgICAgdGhp
cy5fZXZlbnRTdXBwb3J0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhp
c09iamVjdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVFdmVudExpc3RlbmVyOiBmdW5j
dGlvbihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KQorICAgIHJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2V2ZW50U3VwcG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIs
IHRoaXNPYmplY3QpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJvb3RET01Ob2RlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yb290RE9NTm9kZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIHNldCByb290RE9NTm9kZSh4KQogICAgIHsKQEAgLTEyNCwxOSArMTE3LDE5IEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2lzWE1M
TWltZVR5cGUgPSB4ICYmIHguaXNYTUxOb2RlKCk7CiAKICAgICAgICAgdGhpcy51cGRhdGUoKTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBpc1hNTE1pbWVUeXBlKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9pc1hNTE1pbWVUeXBlOwotICAgIH0sCisgICAgfQogCi0gICAgc2VsZWN0
ZWRET01Ob2RlOiBmdW5jdGlvbigpCisgICAgc2VsZWN0ZWRET01Ob2RlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZERPTU5vZGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBz
ZWxlY3RET01Ob2RlOiBmdW5jdGlvbihub2RlLCBmb2N1cykKKyAgICBzZWxlY3RET01Ob2RlKG5v
ZGUsIGZvY3VzKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRE9NTm9kZSA9PT0g
bm9kZSkgewogICAgICAgICAgICAgdGhpcy5fcmV2ZWFsQW5kU2VsZWN0Tm9kZShub2RlLCAhZm9j
dXMpOwpAQCAtMTUzLDE0ICsxNDYsMTQgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgLy8gTm90ZSB0aGF0IF9yZXZlYWxBbmRTZWxlY3ROb2RlIHdp
bGwgbm90IGRvIGFueXRoaW5nIGZvciBhIG51bGwgbm9kZS4KICAgICAgICAgaWYgKCFub2RlIHx8
IHRoaXMuX3NlbGVjdGVkRE9NTm9kZSA9PT0gbm9kZSkKICAgICAgICAgICAgIHRoaXMuX3NlbGVj
dGVkTm9kZUNoYW5nZWQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlZGl0aW5nKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lZGl0aW5nOwotICAgIH0sCisgICAgfQogCi0gICAg
dXBkYXRlOiBmdW5jdGlvbigpCisgICAgdXBkYXRlKCkKICAgICB7CiAgICAgICAgIHZhciBzZWxl
Y3RlZE5vZGUgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQgPyB0aGlzLnNlbGVjdGVkVHJlZUVs
ZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgOiBudWxsOwogCkBAIC0xODcsMjIgKzE4MCwyMiBAQCBX
ZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChz
ZWxlY3RlZE5vZGUpCiAgICAgICAgICAgICB0aGlzLl9yZXZlYWxBbmRTZWxlY3ROb2RlKHNlbGVj
dGVkTm9kZSwgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVTZWxlY3Rpb246IGZ1
bmN0aW9uKCkKKyAgICB1cGRhdGVTZWxlY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
LnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHZhciBl
bGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OwogICAgICAgICBl
bGVtZW50LnVwZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NlbGVjdGVk
Tm9kZUNoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICBfc2VsZWN0ZWROb2RlQ2hhbmdlZCgpCiAgICAg
ewogICAgICAgICB0aGlzLl9ldmVudFN1cHBvcnQuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5FdmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGZpbmRUcmVlRWxlbWVudDogZnVuY3Rpb24obm9kZSkKKyAgICBm
aW5kVHJlZUVsZW1lbnQobm9kZSkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGlzQW5jZXN0b3JO
b2RlKGFuY2VzdG9yLCBub2RlKQogICAgICAgICB7CkBAIC0yMTQsMTYgKzIwNywxNiBAQCBXZWJJ
bnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJu
IG5vZGUucGFyZW50Tm9kZTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciB0cmVlRWxlbWVudCA9
IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5maW5kVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBub2RlLCBp
c0FuY2VzdG9yTm9kZSwgcGFyZW50Tm9kZSk7CisgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHN1
cGVyLmZpbmRUcmVlRWxlbWVudChub2RlLCBpc0FuY2VzdG9yTm9kZSwgcGFyZW50Tm9kZSk7CiAg
ICAgICAgIGlmICghdHJlZUVsZW1lbnQgJiYgbm9kZS5ub2RlVHlwZSgpID09PSBOb2RlLlRFWFRf
Tk9ERSkgewogICAgICAgICAgICAgLy8gVGhlIHRleHQgbm9kZSBtaWdodCBoYXZlIGJlZW4gaW5s
aW5lZCBpZiBpdCB3YXMgc2hvcnQsIHNvIHRyeSB0byBmaW5kIHRoZSBwYXJlbnQgZWxlbWVudC4K
LSAgICAgICAgICAgIHRyZWVFbGVtZW50ID0gVHJlZU91dGxpbmUucHJvdG90eXBlLmZpbmRUcmVl
RWxlbWVudC5jYWxsKHRoaXMsIG5vZGUucGFyZW50Tm9kZSwgaXNBbmNlc3Rvck5vZGUsIHBhcmVu
dE5vZGUpOworICAgICAgICAgICAgdHJlZUVsZW1lbnQgPSBzdXBlci5maW5kVHJlZUVsZW1lbnQo
bm9kZS5wYXJlbnROb2RlLCBpc0FuY2VzdG9yTm9kZSwgcGFyZW50Tm9kZSk7CiAgICAgICAgIH0K
IAogICAgICAgICByZXR1cm4gdHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVh
dGVUcmVlRWxlbWVudEZvcjogZnVuY3Rpb24obm9kZSkKKyAgICBjcmVhdGVUcmVlRWxlbWVudEZv
cihub2RlKQogICAgIHsKICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy5maW5kVHJlZUVs
ZW1lbnQobm9kZSk7CiAgICAgICAgIGlmICh0cmVlRWxlbWVudCkKQEAgLTIzNiwxNiArMjI5LDUw
IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm4gdHJlZUVsZW1lbnQuY2hpbGRyZW5bbm9kZS5pbmRleF07CiAKICAgICAgICAgcmV0
dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc3VwcHJlc3NSZXZlYWxBbmRTZWxl
Y3QoeCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zdXBwcmVzc1JldmVhbEFuZFNlbGVjdCA9
PT0geCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fc3VwcHJlc3NSZXZlYWxB
bmRTZWxlY3QgPSB4OwotICAgIH0sCisgICAgfQogCi0gICAgX3JldmVhbEFuZFNlbGVjdE5vZGU6
IGZ1bmN0aW9uKG5vZGUsIG9taXRGb2N1cykKKworICAgIHBvcHVsYXRlQ29udGV4dE1lbnUoY29u
dGV4dE1lbnUsIGV2ZW50LCB0cmVlRWxlbWVudCkKKyAgICB7CisgICAgICAgIHZhciB0YWcgPSBl
dmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygiaHRtbC10YWciKTsKKyAg
ICAgICAgdmFyIHRleHROb2RlID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRo
Q2xhc3MoImh0bWwtdGV4dC1ub2RlIik7CisgICAgICAgIHZhciBjb21tZW50Tm9kZSA9IGV2ZW50
LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJodG1sLWNvbW1lbnQiKTsKKwor
ICAgICAgICB2YXIgcG9wdWxhdGVkID0gZmFsc2U7CisgICAgICAgIGlmICh0YWcgJiYgdHJlZUVs
ZW1lbnQuX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUpIHsKKyAgICAgICAgICAgIGlmIChwb3B1bGF0
ZWQpCisgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAg
ICAgICAgICB0cmVlRWxlbWVudC5fcG9wdWxhdGVUYWdDb250ZXh0TWVudShjb250ZXh0TWVudSwg
ZXZlbnQpOworICAgICAgICAgICAgcG9wdWxhdGVkID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlm
ICh0ZXh0Tm9kZSAmJiB0cmVlRWxlbWVudC5fcG9wdWxhdGVUZXh0Q29udGV4dE1lbnUpIHsKKyAg
ICAgICAgICAgIGlmIChwb3B1bGF0ZWQpCisgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICB0cmVlRWxlbWVudC5fcG9wdWxhdGVUZXh0Q29u
dGV4dE1lbnUoY29udGV4dE1lbnUsIHRleHROb2RlKTsKKyAgICAgICAgICAgIHBvcHVsYXRlZCA9
IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoY29tbWVudE5vZGUgJiYgdHJlZUVsZW1lbnQuX3Bv
cHVsYXRlTm9kZUNvbnRleHRNZW51KSB7CisgICAgICAgICAgICBpZiAocG9wdWxhdGVkKQorICAg
ICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAg
dHJlZUVsZW1lbnQuX3BvcHVsYXRlTm9kZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCB0ZXh0Tm9k
ZSk7CisgICAgICAgICAgICBwb3B1bGF0ZWQgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHBvcHVsYXRlZDsKKyAgICB9CisKKyAgICBhZGp1c3RDb2xsYXBzZWRSYW5nZSgpCisg
ICAgeworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9yZXZlYWxBbmRTZWxlY3ROb2Rl
KG5vZGUsIG9taXRGb2N1cykKICAgICB7CiAgICAgICAgIGlmICghbm9kZSB8fCB0aGlzLl9zdXBw
cmVzc1JldmVhbEFuZFNlbGVjdCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1NSw5ICsyODIs
OSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIHRyZWVFbGVtZW50LnJldmVhbEFuZFNlbGVjdChvbWl0Rm9j
dXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50RnJvbUV2ZW50OiBmdW5jdGlv
bihldmVudCkKKyAgICBfdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAg
ICB2YXIgc2Nyb2xsQ29udGFpbmVyID0gdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQ7CiAKQEAg
LTI4MSw5ICszMDgsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgZWxlbWVudCA9IHRoaXMudHJlZUVsZW1lbnRGcm9tUG9pbnQoeCwgeSAr
IDIpOwogCiAgICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgX29u
bW91c2Vkb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBfb25tb3VzZWRvd24oZXZlbnQpCiAgICAg
ewogICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuX3RyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50
KTsKICAgICAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQuaXNFdmVudFdpdGhpbkRpc2Nsb3N1
cmVUcmlhbmdsZShldmVudCkpIHsKQEAgLTI5Miw5ICszMTksOSBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgZWxlbWVudC5z
ZWxlY3QoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9vbm1vdXNlbW92ZTogZnVuY3Rpb24oZXZl
bnQpCisgICAgX29ubW91c2Vtb3ZlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGVsZW1lbnQg
PSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7CiAgICAgICAgIGlmIChlbGVtZW50
ICYmIHRoaXMuX3ByZXZpb3VzSG92ZXJlZEVsZW1lbnQgPT09IGVsZW1lbnQpCkBAIC0zMTUsOSAr
MzQyLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRET01O
b2RlKGVsZW1lbnQgPyBlbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LmlkIDogMCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfb25tb3VzZW91dDogZnVuY3Rpb24oZXZlbnQpCisgICAgX29ubW91c2Vv
dXQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgbm9kZVVuZGVyTW91c2UgPSBkb2N1bWVudC5l
bGVtZW50RnJvbVBvaW50KGV2ZW50LnBhZ2VYLCBldmVudC5wYWdlWSk7CiAgICAgICAgIGlmIChu
b2RlVW5kZXJNb3VzZSAmJiBub2RlVW5kZXJNb3VzZS5pc0Rlc2NlbmRhbnQodGhpcy5lbGVtZW50
KSkKQEAgLTMyOSw5ICszNTYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2Vy
LmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfb25kcmFnc3Rh
cnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vbmRyYWdzdGFydChldmVudCkKICAgICB7CiAgICAg
ICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX3RyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsK
ICAgICAgICAgaWYgKCF0cmVlRWxlbWVudCkKQEAgLTM1MCw5ICszNzcsOSBAQCBXZWJJbnNwZWN0
b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKIAogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9vbmRyYWdvdmVyOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfb25kcmFnb3ZlcihldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbm9kZUJlaW5n
RHJhZ2dlZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3NCwxNiArNDAxLDE2IEBA
IFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0
ID0gIm1vdmUiOwogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
b25kcmFnbGVhdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vbmRyYWdsZWF2ZShldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2NsZWFyRHJhZ092ZXJUcmVlRWxlbWVudE1hcmtlcigpOwogICAg
ICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfaXNWYWxpZERyYWdTb3VyY2VPclRhcmdldDogZnVuY3Rpb24odHJl
ZUVsZW1lbnQpCisgICAgX2lzVmFsaWREcmFnU291cmNlT3JUYXJnZXQodHJlZUVsZW1lbnQpCiAg
ICAgewogICAgICAgICBpZiAoIXRyZWVFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzk2LDExICs0MjMsMjMgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9vbmRyb3A6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9v
bmRyb3AoZXZlbnQpCiAgICAgewogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworCisg
ICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCBuZXdOb2RlSWQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXMoKTsKKyAgICAgICAgICAgIHZhciBuZXdOb2Rl
ID0gV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChuZXdOb2RlSWQpOworICAg
ICAgICAgICAgaWYgKG5ld05vZGUpCisgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RET01Ob2Rl
KG5ld05vZGUsIHRydWUpOworICAgICAgICB9CisKICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0g
dGhpcy5fdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOwogICAgICAgICBpZiAodGhpcy5fbm9k
ZUJlaW5nRHJhZ2dlZCAmJiB0cmVlRWxlbWVudCkgewogICAgICAgICAgICAgdmFyIHBhcmVudE5v
ZGU7CkBAIC00MTUsMzkgKzQ1NCwyOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJv
dG90eXBlID0gewogICAgICAgICAgICAgICAgIGFuY2hvck5vZGUgPSBkcmFnVGFyZ2V0Tm9kZTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIG5l
d05vZGVJZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1v
ZGlmaWVkTm9kZXMoKTsKLSAgICAgICAgICAgICAgICB2YXIgbmV3Tm9kZSA9IFdlYkluc3BlY3Rv
ci5kb21UcmVlTWFuYWdlci5ub2RlRm9ySWQobmV3Tm9kZUlkKTsKLSAgICAgICAgICAgICAgICBp
ZiAobmV3Tm9kZSkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RET01Ob2RlKG5ld05v
ZGUsIHRydWUpOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgdGhpcy5fbm9kZUJlaW5nRHJh
Z2dlZC5tb3ZlVG8ocGFyZW50Tm9kZSwgYW5jaG9yTm9kZSwgY2FsbGJhY2suYmluZCh0aGlzKSk7
CiAgICAgICAgIH0KIAogICAgICAgICBkZWxldGUgdGhpcy5fbm9kZUJlaW5nRHJhZ2dlZDsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9vbmRyYWdlbmQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vbmRy
YWdlbmQoZXZlbnQpCiAgICAgewogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAg
ICAgICB0aGlzLl9jbGVhckRyYWdPdmVyVHJlZUVsZW1lbnRNYXJrZXIoKTsKICAgICAgICAgZGVs
ZXRlIHRoaXMuX25vZGVCZWluZ0RyYWdnZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xlYXJE
cmFnT3ZlclRyZWVFbGVtZW50TWFya2VyOiBmdW5jdGlvbigpCisgICAgX2NsZWFyRHJhZ092ZXJU
cmVlRWxlbWVudE1hcmtlcigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZHJhZ092ZXJUcmVl
RWxlbWVudCkgewogICAgICAgICAgICAgdGhpcy5fZHJhZ092ZXJUcmVlRWxlbWVudC51cGRhdGVT
ZWxlY3Rpb24oKTsKICAgICAgICAgICAgIHRoaXMuX2RyYWdPdmVyVHJlZUVsZW1lbnQubGlzdEl0
ZW1FbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImVsZW1lbnRzLWRyYWctb3ZlciIpOwogICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX2RyYWdPdmVyVHJlZUVsZW1lbnQ7CiAgICAgICAgIH0KLSAgICB9
LAorICAgIH0KIAotICAgIF9jb250ZXh0TWVudUV2ZW50RmlyZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9jb250ZXh0TWVudUV2ZW50RmlyZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgdHJl
ZUVsZW1lbnQgPSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7CiAgICAgICAgIGlm
ICghdHJlZUVsZW1lbnQpCkBAIC00NTYsNDYgKzQ4NSwxNSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJl
ZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKICAgICAgICAgdGhpcy5wb3B1bGF0ZUNvbnRl
eHRNZW51KGNvbnRleHRNZW51LCBldmVudCwgdHJlZUVsZW1lbnQpOwogICAgICAgICBjb250ZXh0
TWVudS5zaG93KCk7Ci0gICAgfSwKLQotICAgIHBvcHVsYXRlQ29udGV4dE1lbnU6IGZ1bmN0aW9u
KGNvbnRleHRNZW51LCBldmVudCwgdHJlZUVsZW1lbnQpCi0gICAgewotICAgICAgICB2YXIgdGFn
ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoImh0bWwtdGFnIik7
Ci0gICAgICAgIHZhciB0ZXh0Tm9kZSA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxm
V2l0aENsYXNzKCJodG1sLXRleHQtbm9kZSIpOwotICAgICAgICB2YXIgY29tbWVudE5vZGUgPSBl
dmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygiaHRtbC1jb21tZW50Iik7
Ci0KLSAgICAgICAgdmFyIHBvcHVsYXRlZCA9IGZhbHNlOwotICAgICAgICBpZiAodGFnICYmIHRy
ZWVFbGVtZW50Ll9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51KSB7Ci0gICAgICAgICAgICBpZiAocG9w
dWxhdGVkKQotICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwot
ICAgICAgICAgICAgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUoY29udGV4dE1l
bnUsIGV2ZW50KTsKLSAgICAgICAgICAgIHBvcHVsYXRlZCA9IHRydWU7Ci0gICAgICAgIH0gZWxz
ZSBpZiAodGV4dE5vZGUgJiYgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGV4dENvbnRleHRNZW51KSB7
Ci0gICAgICAgICAgICBpZiAocG9wdWxhdGVkKQotICAgICAgICAgICAgICAgIGNvbnRleHRNZW51
LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGV4
dENvbnRleHRNZW51KGNvbnRleHRNZW51LCB0ZXh0Tm9kZSk7Ci0gICAgICAgICAgICBwb3B1bGF0
ZWQgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKGNvbW1lbnROb2RlICYmIHRyZWVFbGVtZW50
Ll9wb3B1bGF0ZU5vZGVDb250ZXh0TWVudSkgewotICAgICAgICAgICAgaWYgKHBvcHVsYXRlZCkK
LSAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAgICAg
ICAgIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZU5vZGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgdGV4
dE5vZGUpOwotICAgICAgICAgICAgcG9wdWxhdGVkID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBwb3B1bGF0ZWQ7Ci0gICAgfSwKLQotICAgIGFkanVzdENvbGxhcHNlZFJhbmdl
OiBmdW5jdGlvbigpCi0gICAgewotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU1vZGlmaWVk
Tm9kZXM6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlTW9kaWZpZWROb2RlcygpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fZWxlbWVudHNUcmVlVXBkYXRlcikKICAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnRzVHJlZVVwZGF0ZXIuX3VwZGF0ZU1vZGlmaWVkTm9kZXMoKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9wb3B1bGF0ZUNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSwgZG9tTm9k
ZSkKKyAgICBfcG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgZG9tTm9kZSkKICAgICB7
CiAgICAgICAgIGlmICghdGhpcy5fc2hvd0luRWxlbWVudHNQYW5lbEVuYWJsZWQpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC01MDcsOSArNTA1LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRs
aW5lLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3Io
KTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJldmVhbCBpbiBET00gVHJlZSIpLCByZXZlYWxFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9zaG93U2hhZG93RE9NU2V0dGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9z
aG93U2hhZG93RE9NU2V0dGluZ0NoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgbm9k
ZVRvU2VsZWN0ID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID8gdGhpcy5zZWxlY3RlZFRyZWVF
bGVtZW50LnJlcHJlc2VudGVkT2JqZWN0IDogbnVsbDsKICAgICAgICAgd2hpbGUgKG5vZGVUb1Nl
bGVjdCkgewpAQCAtNTI0LDkgKzUyMiw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKG5vZGVUb1NlbGVjdCkKICAgICAgICAgICAgIHRo
aXMuc2VsZWN0RE9NTm9kZShub2RlVG9TZWxlY3QpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hp
ZGVFbGVtZW50OiBmdW5jdGlvbihldmVudCwga2V5Ym9hcmRTaG9ydGN1dCkKKyAgICBfaGlkZUVs
ZW1lbnQoZXZlbnQsIGtleWJvYXJkU2hvcnRjdXQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
c2VsZWN0ZWRUcmVlRWxlbWVudCB8fCBXZWJJbnNwZWN0b3IuaXNFZGl0aW5nQW55RmllbGQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTU3Nyw0ICs1NzUsNiBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5ET01U
cmVlT3V0bGluZS5wcm90b3R5cGUuX19wcm90b19fID0gVHJlZU91dGxpbmUucHJvdG90eXBlOwor
V2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLkV2ZW50ID0geworICAgIFNlbGVjdGVkTm9kZUNo
YW5nZWQ6ICJkb20tdHJlZS1vdXRsaW5lLXNlbGVjdGVkLW5vZGUtY2hhbmdlZCIKK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFz
ZUhvc3RUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RhdGFiYXNlSG9zdFRyZWVFbGVtZW50LmpzCmluZGV4IDVhNTJkMjAxM2E2ODgwYTEw
OWM5YzM2MmNlODA4NDg3Y2M2NGEwZTkuLjg1YmM3MGRiY2EwOTE4ODg2ZjYyN2FjMzMzZmI3YWVl
ODMzYWI3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RhdGFiYXNlSG9zdFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlSG9zdFRyZWVFbGVtZW50LmpzCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywy
OSArMjMsMjYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihob3N0KQorV2Vi
SW5zcGVjdG9yLkRhdGFiYXNlSG9zdFRyZWVFbGVtZW50ID0gY2xhc3MgRGF0YWJhc2VIb3N0VHJl
ZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50CiB7Ci0gICAg
V2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5G
b2xkZXJUcmVlRWxlbWVudC5Gb2xkZXJJY29uU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5k
aXNwbGF5TmFtZUZvckhvc3QoaG9zdCksIG51bGwpOwotCi0gICAgdGhpcy5faG9zdCA9IGhvc3Q7
CisgICAgY29uc3RydWN0b3IoaG9zdCkKKyAgICB7CisgICAgICAgIHN1cGVyKFdlYkluc3BlY3Rv
ci5Gb2xkZXJUcmVlRWxlbWVudC5Gb2xkZXJJY29uU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rv
ci5kaXNwbGF5TmFtZUZvckhvc3QoaG9zdCksIG51bGwpOwogCi0gICAgdGhpcy5oYXNDaGlsZHJl
biA9IHRydWU7Ci19OworICAgICAgICB0aGlzLl9ob3N0ID0gaG9zdDsKIAotV2ViSW5zcGVjdG9y
LkRhdGFiYXNlSG9zdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLkRhdGFiYXNlSG9zdFRyZWVFbGVtZW50LAorICAgICAgICB0aGlzLmhhc0No
aWxkcmVuID0gdHJ1ZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYW1lKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JIb3N0KHRo
aXMuX2hvc3QpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNhdGVnb3J5TmFtZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEYXRhYmFzZXMiKTsKICAg
ICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0
YWJhc2VUYWJsZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50LmpzCmluZGV4IGI0YTVkNDY5Njc5
ZDI2MjYzN2NiODM3MTk2MWI3M2U4ZTI0ZTdmZTAuLmE1MmJlMzU0OGRkNTFiNDM5NDlmOWRjYzU3
NzY0ZDBhMmVlYjE3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVGFibGVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDE5ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihy
ZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQg
PSBjbGFzcyBEYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2Vu
ZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdCk7CisgICAgY29uc3Ry
dWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlT2Jq
ZWN0KTsKIAotICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBX
ZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50LkRhdGFiYXNlVGFibGVJY29uU3R5
bGVDbGFzc05hbWUsIHJlcHJlc2VudGVkT2JqZWN0Lm5hbWUsIG51bGwsIHJlcHJlc2VudGVkT2Jq
ZWN0LCBmYWxzZSk7CisgICAgICAgIHN1cGVyKCJkYXRhYmFzZS10YWJsZS1pY29uIiwgcmVwcmVz
ZW50ZWRPYmplY3QubmFtZSwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKIAotICAg
IHRoaXMuc21hbGwgPSB0cnVlOworICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICB9CiB9
OwotCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50LkRhdGFiYXNlVGFibGVJ
Y29uU3R5bGVDbGFzc05hbWUgPSAiZGF0YWJhc2UtdGFibGUtaWNvbiI7Ci0KLVdlYkluc3BlY3Rv
ci5EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50Ci19OwotCi1XZWJJbnNwZWN0
b3IuRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVHJlZUVsZW1lbnQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRyZWVF
bGVtZW50LmpzCmluZGV4IGNiNDc5OWU5ZWNmYzVkNTIwMTdmY2U4MzE4ZmFjZGQ5Y2YzODlmNTYu
LmJhY2M5NDJlNWE3NTJmOTViNWJkMzhmZWU2N2U1NTBhN2UyMzFiOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVHJlZUVsZW1l
bnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0
YWJhc2VUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzMgKzIzLDMwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRhdGFiYXNlVHJlZUVsZW1lbnQg
PSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5EYXRhYmFzZVRyZWVF
bGVtZW50ID0gY2xhc3MgRGF0YWJhc2VUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnQKIHsKLSAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdCk7Ci0KLSAgICBXZWJJbnNw
ZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkRhdGFiYXNl
VHJlZUVsZW1lbnQuRGF0YWJhc2VJY29uU3R5bGVDbGFzc05hbWUsIHJlcHJlc2VudGVkT2JqZWN0
Lm5hbWUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCB0cnVlKTsKLQotICAgIHRoaXMuc21hbGwg
PSB0cnVlOwotICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxzZTsKKyAgICBjb25zdHJ1Y3Rvcihy
ZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0KTsKIAotICAg
IC8vIFNpbmNlIHdlIGFyZSBpbml0aWFsbHkgdGVsbGluZyB0aGUgdHJlZSBlbGVtZW50IHdlIGRv
bid0IGhhdmUgYW55IGNoaWxkcmVuLCBtYWtlIHN1cmUgdGhhdCB3ZSB0cnkgdG8gcG9wdWxhdGUK
LSAgICAvLyB0aGUgdHJlZSBlbGVtZW50ICh3aGljaCB3aWxsIGdldCBhIGxpc3Qgb2YgdGFibGVz
KSB3aGVuIHRoZSBlbGVtZW50IGlzIGNyZWF0ZWQuCi0gICAgdGhpcy5vbnBvcHVsYXRlKCk7Ci19
OworICAgICAgICBzdXBlcigiZGF0YWJhc2UtaWNvbiIsIHJlcHJlc2VudGVkT2JqZWN0Lm5hbWUs
IG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCB0cnVlKTsKIAotV2ViSW5zcGVjdG9yLkRhdGFiYXNl
VHJlZUVsZW1lbnQuRGF0YWJhc2VJY29uU3R5bGVDbGFzc05hbWUgPSAiZGF0YWJhc2UtaWNvbiI7
CisgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOworICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0g
ZmFsc2U7CiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRhdGFiYXNlVHJlZUVsZW1lbnQsCisgICAg
ICAgIC8vIFNpbmNlIHdlIGFyZSBpbml0aWFsbHkgdGVsbGluZyB0aGUgdHJlZSBlbGVtZW50IHdl
IGRvbid0IGhhdmUgYW55IGNoaWxkcmVuLCBtYWtlIHN1cmUgdGhhdCB3ZSB0cnkgdG8gcG9wdWxh
dGUKKyAgICAgICAgLy8gdGhlIHRyZWUgZWxlbWVudCAod2hpY2ggd2lsbCBnZXQgYSBsaXN0IG9m
IHRhYmxlcykgd2hlbiB0aGUgZWxlbWVudCBpcyBjcmVhdGVkLgorICAgICAgICB0aGlzLm9ucG9w
dWxhdGUoKTsKKyAgICB9CiAKICAgICAvLyBPdmVycmlkZXMgZnJvbSBUcmVlRWxlbWVudCAoUHJp
dmF0ZSkKIAotICAgIG9uY29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICBvbmNvbGxhcHNlKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuID0gdHJ1ZTsKLSAgICB9LAor
ICAgIH0KIAotICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRlKCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCAmJiAhdGhpcy5zaG91bGRSZWZy
ZXNoQ2hpbGRyZW4pCiAgICAgICAgICAgICByZXR1cm47CkBAIC03MSw1ICs2OCwzIEBAIFdlYklu
c3BlY3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5nZXRUYWJsZU5hbWVzKHRhYmxlTmFtZXNDYWxsYmFjay5iaW5kKHRo
aXMpKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUcmVlRWxlbWVudC5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Gb2xkZXJUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0ZvbGRlclRyZWVFbGVtZW50LmpzCmluZGV4IDhjYWU4YjdkMDAxYzMzZDE2Mzdk
MjljN2RiNzA2YjU0YmZmNjhlODIuLjJhMDg4MzVhZGY5NDY2YTBmNDExN2FiNGEzYjM1NmRiOGVi
NThmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0ZvbGRlclRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0ZvbGRlclRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyOSArMjMsMjYgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRm9s
ZGVyVHJlZUVsZW1lbnQgPSBmdW5jdGlvbih0aXRsZSwgc3VidGl0bGUsIGFkZGl0aW9uYWxDbGFz
c05hbWVzLCByZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVu
dCA9IGNsYXNzIEZvbGRlclRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxU
cmVlRWxlbWVudAogewotICAgIHZhciBjbGFzc05hbWVzOwotICAgIGlmICghYWRkaXRpb25hbENs
YXNzTmFtZXMpCi0gICAgICAgIGNsYXNzTmFtZXMgPSBbXTsKLSAgICBlbHNlIGlmIChhZGRpdGlv
bmFsQ2xhc3NOYW1lcy5jb25zdHJ1Y3RvciA9PT0gQXJyYXkpCi0gICAgICAgIGNsYXNzTmFtZXMg
PSBhZGRpdGlvbmFsQ2xhc3NOYW1lczsKLSAgICBlbHNlIGlmICh0eXBlb2YgYWRkaXRpb25hbENs
YXNzTmFtZXMgPT09ICJzdHJpbmciKQotICAgICAgICBjbGFzc05hbWVzID0gW2FkZGl0aW9uYWxD
bGFzc05hbWVzXTsKKyAgICBjb25zdHJ1Y3Rvcih0aXRsZSwgc3VidGl0bGUsIGFkZGl0aW9uYWxD
bGFzc05hbWVzLCByZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIHZhciBjbGFzc05h
bWVzOworICAgICAgICBpZiAoIWFkZGl0aW9uYWxDbGFzc05hbWVzKQorICAgICAgICAgICAgY2xh
c3NOYW1lcyA9IFtdOworICAgICAgICBlbHNlIGlmIChhZGRpdGlvbmFsQ2xhc3NOYW1lcy5jb25z
dHJ1Y3RvciA9PT0gQXJyYXkpCisgICAgICAgICAgICBjbGFzc05hbWVzID0gYWRkaXRpb25hbENs
YXNzTmFtZXM7CisgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBhZGRpdGlvbmFsQ2xhc3NOYW1lcyA9
PT0gInN0cmluZyIpCisgICAgICAgICAgICBjbGFzc05hbWVzID0gW2FkZGl0aW9uYWxDbGFzc05h
bWVzXTsKIAotICAgIGNsYXNzTmFtZXMudW5zaGlmdChXZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVs
ZW1lbnQuRm9sZGVySWNvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgY2xhc3NOYW1lcy51bnNo
aWZ0KFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudC5Gb2xkZXJJY29uU3R5bGVDbGFzc05h
bWUpOwogCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIGNs
YXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIHRydWUpOworICAg
ICAgICBzdXBlcihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0
LCB0cnVlKTsKIAotICAgIHRoaXMuc21hbGwgPSB0cnVlOwotfTsKLQotV2ViSW5zcGVjdG9yLkZv
bGRlclRyZWVFbGVtZW50LkZvbGRlckljb25TdHlsZUNsYXNzTmFtZSA9ICJmb2xkZXItaWNvbiI7
Ci0KLVdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudAorICAgICAgICB0aGlzLnNt
YWxsID0gdHJ1ZTsKKyAgICB9CiAKICAgICAvLyBObyBNZXRob2RzIG9yIFByb3BlcnRpZXMKIH07
CiAKLVdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3Iu
Rm9sZGVyVHJlZUVsZW1lbnQuRm9sZGVySWNvblN0eWxlQ2xhc3NOYW1lID0gImZvbGRlci1pY29u
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0ZvbGRlcml6ZWRUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0ZvbGRlcml6ZWRUcmVlRWxlbWVudC5qcwppbmRleCA0ZmYwMTA3MjVmZjE4
MTYzOWJjNzY3NGRmYTg3NTlmZjI1NDdiYzIyLi4xZjhjNGNiNTVmYjlhOTYwMDJhZmM1MjI5MTZj
YjAwZjMxOWEzMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Gb2xkZXJpemVkVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRm9sZGVyaXplZFRyZWVFbGVtZW50LmpzCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDQx
ICsyMywzNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihjbGFzc05hbWVzLCB0
aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKK1dlYkluc3Bl
Y3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQgPSBjbGFzcyBGb2xkZXJpemVkVHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgV2ViSW5zcGVj
dG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0
aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKTsKLQotICAgIHRoaXMuc2hvdWxk
UmVmcmVzaENoaWxkcmVuID0gdHJ1ZTsKLQotICAgIHRoaXMuX2ZvbGRlclNldHRpbmdzS2V5ID0g
IiI7Ci0gICAgdGhpcy5fZm9sZGVyVHlwZU1hcCA9IG5ldyBNYXA7Ci0gICAgdGhpcy5fZm9sZGVy
aXplU2V0dGluZ3NNYXAgPSBuZXcgTWFwOwotICAgIHRoaXMuX2dyb3VwZWRJbnRvRm9sZGVycyA9
IGZhbHNlOwotICAgIHRoaXMuX2NsZWFyTmV3Q2hpbGRRdWV1ZSgpOwotfTsKKyAgICBjb25zdHJ1
Y3RvcihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXND
aGlsZHJlbikKKyAgICB7CisgICAgICAgIHN1cGVyKGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRs
ZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKTsKIAotV2ViSW5zcGVjdG9yLkZvbGRl
cml6ZWRUcmVlRWxlbWVudC5NZWRpdW1DaGlsZENvdW50VGhyZXNob2xkID0gNTsKLVdlYkluc3Bl
Y3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQuTGFyZ2VDaGlsZENvdW50VGhyZXNob2xkID0gMTU7
Ci1XZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50Lk51bWJlck9mTWVkaXVtQ2F0ZWdv
cmllc1RocmVzaG9sZCA9IDI7Ci1XZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50Lk5l
d0NoaWxkUXVldWVVcGRhdGVJbnRlcnZhbCA9IDUwMDsKKyAgICAgICAgdGhpcy5zaG91bGRSZWZy
ZXNoQ2hpbGRyZW4gPSB0cnVlOwogCi1XZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRU
cmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1l
bnQucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9mb2xkZXJTZXR0aW5nc0tleSA9ICIiOworICAg
ICAgICB0aGlzLl9mb2xkZXJUeXBlTWFwID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fZm9sZGVy
aXplU2V0dGluZ3NNYXAgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9ncm91cGVkSW50b0ZvbGRl
cnMgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fY2xlYXJOZXdDaGlsZFF1ZXVlKCk7CisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZ3JvdXBlZEludG9Gb2xkZXJzKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9ncm91cGVkSW50b0ZvbGRlcnM7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBzZXQgZm9sZGVyU2V0dGluZ3NLZXkoeCkKICAgICB7CiAgICAgICAgIHRoaXMuX2ZvbGRl
clNldHRpbmdzS2V5ID0geDsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZ2lzdGVyRm9sZGVyaXpl
U2V0dGluZ3M6IGZ1bmN0aW9uKHR5cGUsIGZvbGRlckRpc3BsYXlOYW1lLCB2YWxpZGF0ZVJlcHJl
c2VudGVkT2JqZWN0Q2FsbGJhY2ssIGNvdW50Q2hpbGRyZW5DYWxsYmFjaywgdHJlZUVsZW1lbnRD
b25zdHJ1Y3RvcikKKyAgICByZWdpc3RlckZvbGRlcml6ZVNldHRpbmdzKHR5cGUsIGZvbGRlckRp
c3BsYXlOYW1lLCB2YWxpZGF0ZVJlcHJlc2VudGVkT2JqZWN0Q2FsbGJhY2ssIGNvdW50Q2hpbGRy
ZW5DYWxsYmFjaywgdHJlZUVsZW1lbnRDb25zdHJ1Y3RvcikKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHR5cGUpOwogICAgICAgICBjb25zb2xlLmFzc2VydChmb2xkZXJEaXNwbGF5TmFt
ZSk7CkBAIC03NCwxMyArNjcsMTMgQEAgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH07CiAKICAgICAgICAgdGhpcy5fZm9sZGVyaXplU2V0
dGluZ3NNYXAuc2V0KHR5cGUsIHNldHRpbmdzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIE92
ZXJyaWRlcyBmcm9tIFRyZWVFbGVtZW50IChQcml2YXRlKS4KIAotICAgIHJlbW92ZUNoaWxkcmVu
OiBmdW5jdGlvbigpCisgICAgcmVtb3ZlQ2hpbGRyZW4oKQogICAgIHsKLSAgICAgICAgVHJlZUVs
ZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVy
LnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgdGhpcy5fY2xlYXJOZXdDaGlsZFF1ZXVlKCk7
CiAKQEAgLTkwLDExICs4MywxMSBAQCBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZm9sZGVyVHlwZU1hcC5jbGVhcigpOwogCiAg
ICAgICAgIHRoaXMuX2dyb3VwZWRJbnRvRm9sZGVycyA9IGZhbHNlOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBhZGRDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0OiBm
dW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICBhZGRDaGlsZEZvclJlcHJlc2VudGVkT2Jq
ZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgdmFyIHNldHRpbmdzID0gdGhp
cy5fc2V0dGluZ3NGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCk7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHNldHRpbmdzKTsKQEAgLTEwOCwxOCArMTAxLDE4IEBAIFdlYklu
c3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAg
Y2hpbGRUcmVlRWxlbWVudCA9IG5ldyBzZXR0aW5ncy50cmVlRWxlbWVudENvbnN0cnVjdG9yKHJl
cHJlc2VudGVkT2JqZWN0KTsKIAogICAgICAgICB0aGlzLl9hZGRUcmVlRWxlbWVudChjaGlsZFRy
ZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFJlcHJlc2VudGVkT2JqZWN0VG9O
ZXdDaGlsZFF1ZXVlOiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICBhZGRSZXByZXNl
bnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAg
ICAgIC8vIFRoaXMgcXVldWUgcmVkdWNlcyBmbGFzaGluZyBhcyByZXNvdXJjZXMgbG9hZCBhbmQg
Y2hhbmdlIGZvbGRlcnMgd2hlbiB0aGVpciB0eXBlIGJlY29tZXMga25vd24uCiAKICAgICAgICAg
dGhpcy5fbmV3Q2hpbGRRdWV1ZS5wdXNoKHJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAgaWYg
KCF0aGlzLl9uZXdDaGlsZFF1ZXVlVGltZW91dElkZW50aWZpZXIpCiAgICAgICAgICAgICB0aGlz
Ll9uZXdDaGlsZFF1ZXVlVGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KHRoaXMuX3BvcHVs
YXRlRnJvbU5ld0NoaWxkUXVldWUuYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRU
cmVlRWxlbWVudC5OZXdDaGlsZFF1ZXVlVXBkYXRlSW50ZXJ2YWwpOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50
ZWRPYmplY3QpCisgICAgcmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRl
ZE9iamVjdCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlbW92ZVJlcHJlc2VudGVkT2JqZWN0RnJv
bU5ld0NoaWxkUXVldWUocmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAgICB0aGlzLnVwZGF0ZVBh
cmVudFN0YXR1cygpOwpAQCAtMTM3LDE0ICsxMzAsMTQgQEAgV2ViSW5zcGVjdG9yLkZvbGRlcml6
ZWRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgdGhpcy5fcmVtb3ZlVHJlZUVsZW1lbnQoY2hpbGRUcmVlRWxlbWVudCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBjb21wYXJlQ2hpbGRUcmVlRWxlbWVudHM6IGZ1bmN0aW9uKGEsIGIpCisgICAg
Y29tcGFyZUNoaWxkVHJlZUVsZW1lbnRzKGEsIGIpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY29tcGFyZVRyZWVFbGVtZW50c0J5TWFpblRpdGxlKGEsIGIpOwotICAgIH0sCisgICAgfQog
Ci0gICAgdXBkYXRlUGFyZW50U3RhdHVzOiBmdW5jdGlvbigpCisgICAgdXBkYXRlUGFyZW50U3Rh
dHVzKCkKICAgICB7CiAgICAgICAgIHZhciBoYXNDaGlsZHJlbiA9IGZhbHNlOwogICAgICAgICBm
b3IgKHZhciBzZXR0aW5ncyBvZiB0aGlzLl9mb2xkZXJpemVTZXR0aW5nc01hcC52YWx1ZXMoKSkg
ewpAQCAtMTU3LDI2ICsxNTAsMjYgQEAgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBoYXNDaGlsZHJlbjsK
ICAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuKQogICAgICAgICAgICAgdGhpcy5yZW1vdmVD
aGlsZHJlbigpOwotICAgIH0sCisgICAgfQogCi0gICAgcHJlcGFyZVRvUG9wdWxhdGU6IGZ1bmN0
aW9uKCkKKyAgICBwcmVwYXJlVG9Qb3B1bGF0ZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
X2dyb3VwZWRJbnRvRm9sZGVycyAmJiB0aGlzLl9zaG91bGRHcm91cEludG9Gb2xkZXJzKCkpCiAg
ICAgICAgICAgICB0aGlzLl9ncm91cGVkSW50b0ZvbGRlcnMgPSB0cnVlOwotICAgIH0sCisgICAg
fQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2NsZWFyTmV3Q2hpbGRRdWV1ZTogZnVuY3Rpb24o
KQorICAgIF9jbGVhck5ld0NoaWxkUXVldWUoKQogICAgIHsKICAgICAgICAgdGhpcy5fbmV3Q2hp
bGRRdWV1ZSA9IFtdOwogICAgICAgICBpZiAodGhpcy5fbmV3Q2hpbGRRdWV1ZVRpbWVvdXRJZGVu
dGlmaWVyKSB7CiAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbmV3Q2hpbGRRdWV1ZVRp
bWVvdXRJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHRoaXMuX25ld0NoaWxkUXVldWVUaW1lb3V0
SWRlbnRpZmllciA9IG51bGw7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9wb3B1
bGF0ZUZyb21OZXdDaGlsZFF1ZXVlOiBmdW5jdGlvbigpCisgICAgX3BvcHVsYXRlRnJvbU5ld0No
aWxkUXVldWUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmNoaWxkcmVuLmxlbmd0aCkgewog
ICAgICAgICAgICAgdGhpcy51cGRhdGVQYXJlbnRTdGF0dXMoKTsKQEAgLTE5MCwxNCArMTgzLDE0
IEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5hZGRDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KHRoaXMuX25ld0NoaWxk
UXVldWVbaV0pOwogCiAgICAgICAgIHRoaXMuX2NsZWFyTmV3Q2hpbGRRdWV1ZSgpOwotICAgIH0s
CisgICAgfQogCi0gICAgX3JlbW92ZVJlcHJlc2VudGVkT2JqZWN0RnJvbU5ld0NoaWxkUXVldWU6
IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIF9yZW1vdmVSZXByZXNlbnRlZE9iamVj
dEZyb21OZXdDaGlsZFF1ZXVlKHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgdGhp
cy5fbmV3Q2hpbGRRdWV1ZS5yZW1vdmUocmVwcmVzZW50ZWRPYmplY3QpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2FkZFRyZWVFbGVtZW50OiBmdW5jdGlvbihjaGlsZFRyZWVFbGVtZW50KQorICAg
IF9hZGRUcmVlRWxlbWVudChjaGlsZFRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoY2hpbGRUcmVlRWxlbWVudCk7CiAgICAgICAgIGlmICghY2hpbGRUcmVlRWxlbWVu
dCkKQEAgLTIxNSwyNyArMjA4LDI3IEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh3YXNTZWxlY3RlZCkKICAgICAgICAgICAg
IGNoaWxkVHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KHRydWUsIGZhbHNlLCB0cnVlLCB0cnVl
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb21wYXJlVHJlZUVsZW1lbnRzQnlNYWluVGl0bGU6
IGZ1bmN0aW9uKGEsIGIpCisgICAgX2NvbXBhcmVUcmVlRWxlbWVudHNCeU1haW5UaXRsZShhLCBi
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGEubWFpblRpdGxlLmxvY2FsZUNvbXBhcmUoYi5tYWlu
VGl0bGUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2luc2VydEZvbGRlclRyZWVFbGVtZW50OiBm
dW5jdGlvbihmb2xkZXJUcmVlRWxlbWVudCkKKyAgICBfaW5zZXJ0Rm9sZGVyVHJlZUVsZW1lbnQo
Zm9sZGVyVHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9n
cm91cGVkSW50b0ZvbGRlcnMpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghZm9sZGVyVHJlZUVs
ZW1lbnQucGFyZW50KTsKICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZChmb2xkZXJUcmVlRWxlbWVu
dCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGZvbGRlclRy
ZWVFbGVtZW50LCB0aGlzLmNoaWxkcmVuLCB0aGlzLl9jb21wYXJlVHJlZUVsZW1lbnRzQnlNYWlu
VGl0bGUpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pbnNlcnRDaGlsZFRyZWVFbGVtZW50OiBm
dW5jdGlvbihwYXJlbnRUcmVlRWxlbWVudCwgY2hpbGRUcmVlRWxlbWVudCkKKyAgICBfaW5zZXJ0
Q2hpbGRUcmVlRWxlbWVudChwYXJlbnRUcmVlRWxlbWVudCwgY2hpbGRUcmVlRWxlbWVudCkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjaGlsZFRyZWVFbGVtZW50LnBhcmVudCk7CiAg
ICAgICAgIHBhcmVudFRyZWVFbGVtZW50Lmluc2VydENoaWxkKGNoaWxkVHJlZUVsZW1lbnQsIGlu
c2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihjaGlsZFRyZWVFbGVt
ZW50LCBwYXJlbnRUcmVlRWxlbWVudC5jaGlsZHJlbiwgdGhpcy5jb21wYXJlQ2hpbGRUcmVlRWxl
bWVudHMuYmluZCh0aGlzKSkpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbW92ZVRyZWVFbGVt
ZW50OiBmdW5jdGlvbihjaGlsZFRyZWVFbGVtZW50LCBzdXBwcmVzc09uRGVzZWxlY3QsIHN1cHBy
ZXNzU2VsZWN0U2libGluZykKKyAgICBfcmVtb3ZlVHJlZUVsZW1lbnQoY2hpbGRUcmVlRWxlbWVu
dCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNpYmxpbmcpCiAgICAgewogICAg
ICAgICB2YXIgb2xkUGFyZW50ID0gY2hpbGRUcmVlRWxlbWVudC5wYXJlbnQ7CiAgICAgICAgIGlm
ICghb2xkUGFyZW50KQpAQCAtMjUzLDkgKzI0Niw5IEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVk
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAvLyBSZW1vdmUgdGhlIG9sZCBwYXJl
bnQgZm9sZGVyIGlmIGl0IGlzIG5vdyBlbXB0eS4KICAgICAgICAgaWYgKCFvbGRQYXJlbnQuY2hp
bGRyZW4ubGVuZ3RoKQogICAgICAgICAgICAgb2xkUGFyZW50LnBhcmVudC5yZW1vdmVDaGlsZChv
bGRQYXJlbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhcmVudFRyZWVFbGVtZW50Rm9yUmVw
cmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIF9wYXJlbnRU
cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9ncm91cGVkSW50b0ZvbGRlcnMpCiAgICAgICAgICAgICByZXR1
cm4gdGhpczsKQEAgLTI4NiwyNCArMjc5LDI0IEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBmb2xkZXIgPSBjcmVhdGVGb2xkZXJUcmVl
RWxlbWVudC5jYWxsKHRoaXMsIHNldHRpbmdzLnR5cGUsIHNldHRpbmdzLmZvbGRlckRpc3BsYXlO
YW1lKTsKICAgICAgICAgdGhpcy5fZm9sZGVyVHlwZU1hcC5zZXQoc2V0dGluZ3MudHlwZSwgZm9s
ZGVyKTsKICAgICAgICAgcmV0dXJuIGZvbGRlcjsKLSAgICB9LAorICAgIH0KIAotICAgIF9mb2xk
ZXJUcmVlRWxlbWVudEV4cGFuZGVkU3RhdGVDaGFuZ2U6IGZ1bmN0aW9uKGZvbGRlclRyZWVFbGVt
ZW50KQorICAgIF9mb2xkZXJUcmVlRWxlbWVudEV4cGFuZGVkU3RhdGVDaGFuZ2UoZm9sZGVyVHJl
ZUVsZW1lbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChmb2xkZXJUcmVlRWxlbWVu
dC5fX2V4cGFuZGVkU2V0dGluZyk7CiAgICAgICAgIGZvbGRlclRyZWVFbGVtZW50Ll9fZXhwYW5k
ZWRTZXR0aW5nLnZhbHVlID0gZm9sZGVyVHJlZUVsZW1lbnQuZXhwYW5kZWQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfc2V0dGluZ3NGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVz
ZW50ZWRPYmplY3QpCisgICAgX3NldHRpbmdzRm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50
ZWRPYmplY3QpCiAgICAgewogICAgICAgICBmb3IgKHZhciBzZXR0aW5ncyBvZiB0aGlzLl9mb2xk
ZXJpemVTZXR0aW5nc01hcC52YWx1ZXMoKSkgewogICAgICAgICAgICAgaWYgKHNldHRpbmdzLnZh
bGlkYXRlUmVwcmVzZW50ZWRPYmplY3RDYWxsYmFjayhyZXByZXNlbnRlZE9iamVjdCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHNldHRpbmdzOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBu
dWxsOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3VsZEdyb3VwSW50b0ZvbGRlcnM6IGZ1bmN0
aW9uKCkKKyAgICBfc2hvdWxkR3JvdXBJbnRvRm9sZGVycygpCiAgICAgewogICAgICAgICAvLyBB
bHJlYWR5IGdyb3VwZWQgaW50byBmb2xkZXJzLCBrZWVwIGl0IHRoYXQgd2F5LgogICAgICAgICBp
ZiAodGhpcy5fZ3JvdXBlZEludG9Gb2xkZXJzKQpAQCAtMzU4LDMgKzM1MSw4IEBAIFdlYkluc3Bl
Y3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5N
ZWRpdW1DaGlsZENvdW50VGhyZXNob2xkID0gNTsKK1dlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJl
ZUVsZW1lbnQuTGFyZ2VDaGlsZENvdW50VGhyZXNob2xkID0gMTU7CitXZWJJbnNwZWN0b3IuRm9s
ZGVyaXplZFRyZWVFbGVtZW50Lk51bWJlck9mTWVkaXVtQ2F0ZWdvcmllc1RocmVzaG9sZCA9IDI7
CitXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50Lk5ld0NoaWxkUXVldWVVcGRhdGVJ
bnRlcnZhbCA9IDUwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzCmluZGV4IDZiOTk5MzcyM2Mz
ZTRjMGE4M2IyNjlmODg3NDUwOGY1NWMxMWZlMDUuLmFlMmJhNzk3NjhkM2FiOGEzZTdjYmFhYmY4
OWVhMWUwZjMyNzc1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTAxICsyMyw5
OSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5GcmFtZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oZnJhbWUsIHJlcHJlc2VudGVkT2JqZWN0
KQorV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQgPSBjbGFzcyBGcmFtZVRyZWVFbGVtZW50
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQKIHsKLSAgICBjb25zb2xl
LmFzc2VydChmcmFtZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSk7CisgICAgY29uc3Ry
dWN0b3IoZnJhbWUsIHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoZnJhbWUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpOwogCi0gICAgV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBmcmFtZS5tYWluUmVzb3VyY2Us
IHJlcHJlc2VudGVkT2JqZWN0IHx8IGZyYW1lKTsKKyAgICAgICAgc3VwZXIoZnJhbWUubWFpblJl
c291cmNlLCByZXByZXNlbnRlZE9iamVjdCB8fCBmcmFtZSk7CiAKLSAgICB0aGlzLl9mcmFtZSA9
IGZyYW1lOworICAgICAgICB0aGlzLl9mcmFtZSA9IGZyYW1lOwogCi0gICAgdGhpcy5fdXBkYXRl
RXhwYW5kZWRTZXR0aW5nKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUV4cGFuZGVkU2V0dGluZygp
OwogCi0gICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQu
TWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMp
OwotICAgIGZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJl
c291cmNlV2FzQWRkZWQsIHRoaXMuX3Jlc291cmNlV2FzQWRkZWQsIHRoaXMpOwotICAgIGZyYW1l
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzUmVt
b3ZlZCwgdGhpcy5fcmVzb3VyY2VXYXNSZW1vdmVkLCB0aGlzKTsKLSAgICBmcmFtZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzQWRkZWQsIHRo
aXMuX2NoaWxkRnJhbWVXYXNBZGRlZCwgdGhpcyk7Ci0gICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuQ2hpbGRGcmFtZVdhc1JlbW92ZWQsIHRoaXMuX2No
aWxkRnJhbWVXYXNSZW1vdmVkLCB0aGlzKTsKKyAgICAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9t
YWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBmcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkLCB0aGlzLl9yZXNv
dXJjZVdhc0FkZGVkLCB0aGlzKTsKKyAgICAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNSZW1vdmVkLCB0aGlzLl9yZXNvdXJjZVdh
c1JlbW92ZWQsIHRoaXMpOworICAgICAgICBmcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzQWRkZWQsIHRoaXMuX2NoaWxkRnJhbWVXYXNB
ZGRlZCwgdGhpcyk7CisgICAgICAgIGZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNSZW1vdmVkLCB0aGlzLl9jaGlsZEZyYW1lV2FzUmVt
b3ZlZCwgdGhpcyk7CiAKLSAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRPTVRyZWUuRXZlbnQuQ29udGVudEZsb3dXYXNBZGRlZCwgdGhpcy5fY2hpbGRDb250
ZW50Rmxvd1dhc0FkZGVkLCB0aGlzKTsKLSAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuQ29udGVudEZsb3dXYXNSZW1vdmVkLCB0aGlz
Ll9jaGlsZENvbnRlbnRGbG93V2FzUmVtb3ZlZCwgdGhpcyk7Ci0gICAgZnJhbWUuZG9tVHJlZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50LlJvb3RET01Ob2RlSW52
YWxpZGF0ZWQsIHRoaXMuX3Jvb3RET01Ob2RlSW52YWxpZGF0ZWQsIHRoaXMpOworICAgICAgICBm
cmFtZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQu
Q29udGVudEZsb3dXYXNBZGRlZCwgdGhpcy5fY2hpbGRDb250ZW50Rmxvd1dhc0FkZGVkLCB0aGlz
KTsKKyAgICAgICAgZnJhbWUuZG9tVHJlZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
T01UcmVlLkV2ZW50LkNvbnRlbnRGbG93V2FzUmVtb3ZlZCwgdGhpcy5fY2hpbGRDb250ZW50Rmxv
d1dhc1JlbW92ZWQsIHRoaXMpOworICAgICAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuUm9vdERPTU5vZGVJbnZhbGlkYXRlZCwgdGhp
cy5fcm9vdERPTU5vZGVJbnZhbGlkYXRlZCwgdGhpcyk7CiAKLSAgICBpZiAodGhpcy5fZnJhbWUu
aXNNYWluRnJhbWUoKSkKLSAgICAgICAgdGhpcy5fZG93bmxvYWRpbmdQYWdlID0gZmFsc2U7Cisg
ICAgICAgIGlmICh0aGlzLl9mcmFtZS5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgdGhpcy5f
ZG93bmxvYWRpbmdQYWdlID0gZmFsc2U7CiAKLSAgICB0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJl
biA9IHRydWU7Ci0gICAgdGhpcy5mb2xkZXJTZXR0aW5nc0tleSA9IHRoaXMuX2ZyYW1lLnVybC5o
YXNoOwotCi0gICAgdGhpcy5yZWdpc3RlckZvbGRlcml6ZVNldHRpbmdzKCJmcmFtZXMiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkZyYW1lcyIpLAotICAgICAgICBmdW5jdGlvbihyZXByZXNlbnRl
ZE9iamVjdCkgeyByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuRnJhbWU7IH0sCi0gICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5jaGls
ZEZyYW1lcy5sZW5ndGg7IH0uYmluZCh0aGlzKSwKLSAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1l
VHJlZUVsZW1lbnQKLSAgICApOwotCi0gICAgdGhpcy5yZWdpc3RlckZvbGRlcml6ZVNldHRpbmdz
KCJmbG93cyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmxvd3MiKSwKLSAgICAgICAgZnVuY3Rp
b24ocmVwcmVzZW50ZWRPYmplY3QpIHsgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93OyB9LAotICAgICAgICBmdW5jdGlvbigpIHsgcmV0
dXJuIHRoaXMuZnJhbWUuZG9tVHJlZS5mbG93c0NvdW50OyB9LmJpbmQodGhpcyksCi0gICAgICAg
IFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50Ci0gICAgKTsKLQotICAgIGZ1bmN0
aW9uIG1ha2VWYWxpZGF0ZUNhbGxiYWNrKHJlc291cmNlVHlwZSkgewotICAgICAgICByZXR1cm4g
ZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpIHsKLSAgICAgICAgICAgIHJldHVybiByZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSAmJiByZXByZXNlbnRl
ZE9iamVjdC50eXBlID09PSByZXNvdXJjZVR5cGU7Ci0gICAgICAgIH07Ci0gICAgfQorICAgICAg
ICB0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7CisgICAgICAgIHRoaXMuZm9sZGVy
U2V0dGluZ3NLZXkgPSB0aGlzLl9mcmFtZS51cmwuaGFzaDsKIAotICAgIGZ1bmN0aW9uIG1ha2VD
aGlsZENvdW50Q2FsbGJhY2soZnJhbWUsIHJlc291cmNlVHlwZSkgewotICAgICAgICByZXR1cm4g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWUucmVzb3VyY2VzV2l0aFR5cGUo
cmVzb3VyY2VUeXBlKS5sZW5ndGg7Ci0gICAgICAgIH07Ci0gICAgfQorICAgICAgICB0aGlzLnJl
Z2lzdGVyRm9sZGVyaXplU2V0dGluZ3MoImZyYW1lcyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RnJhbWVzIiksCisgICAgICAgICAgICBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkgeyByZXR1
cm4gcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWU7IH0sCisg
ICAgICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMuZnJhbWUuY2hpbGRGcmFtZXMubGVu
Z3RoOyB9LmJpbmQodGhpcyksCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxl
bWVudAorICAgICAgICApOwogCi0gICAgZm9yICh2YXIga2V5IGluIFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5UeXBlKSB7Ci0gICAgICAgIHZhciB2YWx1ZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5U
eXBlW2tleV07Ci0gICAgICAgIHZhciBmb2xkZXJOYW1lID0gV2ViSW5zcGVjdG9yLlJlc291cmNl
LmRpc3BsYXlOYW1lRm9yVHlwZSh2YWx1ZSwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMucmVnaXN0ZXJG
b2xkZXJpemVTZXR0aW5ncyhrZXksIGZvbGRlck5hbWUsCi0gICAgICAgICAgICBtYWtlVmFsaWRh
dGVDYWxsYmFjayh2YWx1ZSksCi0gICAgICAgICAgICBtYWtlQ2hpbGRDb3VudENhbGxiYWNrKHRo
aXMuZnJhbWUsIHZhbHVlKSwKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVF
bGVtZW50CisgICAgICAgIHRoaXMucmVnaXN0ZXJGb2xkZXJpemVTZXR0aW5ncygiZmxvd3MiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZsb3dzIiksCisgICAgICAgICAgICBmdW5jdGlvbihyZXBy
ZXNlbnRlZE9iamVjdCkgeyByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuQ29udGVudEZsb3c7IH0sCisgICAgICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJu
IHRoaXMuZnJhbWUuZG9tVHJlZS5mbG93c0NvdW50OyB9LmJpbmQodGhpcyksCisgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudAogICAgICAgICApOwotICAgIH0K
IAotICAgIHRoaXMudXBkYXRlUGFyZW50U3RhdHVzKCk7Ci19OworICAgICAgICBmdW5jdGlvbiBt
YWtlVmFsaWRhdGVDYWxsYmFjayhyZXNvdXJjZVR5cGUpIHsKKyAgICAgICAgICAgIHJldHVybiBm
dW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSAmJiByZXByZXNl
bnRlZE9iamVjdC50eXBlID09PSByZXNvdXJjZVR5cGU7CisgICAgICAgICAgICB9OworICAgICAg
ICB9CiAKLVdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUsCisgICAgICAgIGZ1
bmN0aW9uIG1ha2VDaGlsZENvdW50Q2FsbGJhY2soZnJhbWUsIHJlc291cmNlVHlwZSkgeworICAg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmcmFt
ZS5yZXNvdXJjZXNXaXRoVHlwZShyZXNvdXJjZVR5cGUpLmxlbmd0aDsKKyAgICAgICAgICAgIH07
CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBrZXkgaW4gV2ViSW5zcGVjdG9yLlJlc291
cmNlLlR5cGUpIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5UeXBlW2tleV07CisgICAgICAgICAgICB2YXIgZm9sZGVyTmFtZSA9IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUodmFsdWUsIHRydWUpOworICAgICAgICAgICAgdGhp
cy5yZWdpc3RlckZvbGRlcml6ZVNldHRpbmdzKGtleSwgZm9sZGVyTmFtZSwKKyAgICAgICAgICAg
ICAgICBtYWtlVmFsaWRhdGVDYWxsYmFjayh2YWx1ZSksCisgICAgICAgICAgICAgICAgbWFrZUNo
aWxkQ291bnRDYWxsYmFjayh0aGlzLmZyYW1lLCB2YWx1ZSksCisgICAgICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQKKyAgICAgICAgICAgICk7CisgICAgICAgIH0K
KworICAgICAgICB0aGlzLnVwZGF0ZVBhcmVudFN0YXR1cygpOworICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IGZyYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mcmFt
ZTsKLSAgICB9LAorICAgIH0KIAotICAgIGRlc2NlbmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50VHlw
ZURpZENoYW5nZTogZnVuY3Rpb24ocmVzb3VyY2VUcmVlRWxlbWVudCwgb2xkVHlwZSkKKyAgICBk
ZXNjZW5kYW50UmVzb3VyY2VUcmVlRWxlbWVudFR5cGVEaWRDaGFuZ2UocmVzb3VyY2VUcmVlRWxl
bWVudCwgb2xkVHlwZSkKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBieSBkZXNjZW5kYW50IFJl
c291cmNlVHJlZUVsZW1lbnRzLgogCiAgICAgICAgIC8vIEFkZCB0aGUgdHJlZSBlbGVtZW50IGFn
YWluLCB3aGljaCB3aWxsIG1vdmUgaXQgdG8gdGhlIG5ldyBsb2NhdGlvbgogICAgICAgICAvLyBi
YXNlZCBvbiBzb3J0aW5nIGFuZCBwb3NzaWJsZSBmb2xkZXIgY2hhbmdlcy4KICAgICAgICAgdGhp
cy5fYWRkVHJlZUVsZW1lbnQocmVzb3VyY2VUcmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBkZXNjZW5kYW50UmVzb3VyY2VUcmVlRWxlbWVudE1haW5UaXRsZURpZENoYW5nZTogZnVu
Y3Rpb24ocmVzb3VyY2VUcmVlRWxlbWVudCwgb2xkTWFpblRpdGxlKQorICAgIGRlc2NlbmRhbnRS
ZXNvdXJjZVRyZWVFbGVtZW50TWFpblRpdGxlRGlkQ2hhbmdlKHJlc291cmNlVHJlZUVsZW1lbnQs
IG9sZE1haW5UaXRsZSkKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBieSBkZXNjZW5kYW50IFJl
c291cmNlVHJlZUVsZW1lbnRzLgogCiAgICAgICAgIC8vIEFkZCB0aGUgdHJlZSBlbGVtZW50IGFn
YWluLCB3aGljaCB3aWxsIG1vdmUgaXQgdG8gdGhlIG5ldyBsb2NhdGlvbgogICAgICAgICAvLyBi
YXNlZCBvbiBzb3J0aW5nIGFuZCBwb3NzaWJsZSBmb2xkZXIgY2hhbmdlcy4KICAgICAgICAgdGhp
cy5fYWRkVHJlZUVsZW1lbnQocmVzb3VyY2VUcmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBPdmVycmlkZXMgZnJvbSBTb3VyY2VDb2RlVHJlZUVsZW1lbnQuCiAKLSAgICB1cGRh
dGVTb3VyY2VNYXBSZXNvdXJjZXM6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVTb3VyY2VNYXBSZXNv
dXJjZXMoKQogICAgIHsKICAgICAgICAgLy8gRnJhbWVzIGhhbmRsZSB0aGVpciBvd24gU291cmNl
TWFwUmVzb3VyY2VzLgogCkBAIC0xMzEsOSArMTI5LDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLnJlc291cmNlICYmIHRo
aXMucmVzb3VyY2Uuc291cmNlTWFwcy5sZW5ndGgpCiAgICAgICAgICAgICB0aGlzLnNob3VsZFJl
ZnJlc2hDaGlsZHJlbiA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmF0dGFjaDogZnVu
Y3Rpb24oKQorICAgIG9uYXR0YWNoKCkKICAgICB7CiAgICAgICAgIC8vIEltbWVkaWF0ZSBzdXBl
cmNsYXNzZXMgYXJlIHNraXBwZWQsIHNpbmNlIEZyYW1lcyBoYW5kbGUgdGhlaXIgb3duIFNvdXJj
ZU1hcFJlc291cmNlcy4KICAgICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5w
cm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKQEAgLTE0Miw5ICsxNDAsOSBAQCBXZWJJbnNw
ZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3Iubm90aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ob3RpZmlj
YXRpb24uUGFnZUFyY2hpdmVTdGFydGVkLCB0aGlzLl9wYWdlQXJjaGl2ZVN0YXJ0ZWQsIHRoaXMp
OwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuTm90aWZpY2F0aW9uLlBhZ2VBcmNoaXZlRW5kZWQsIHRoaXMuX3BhZ2VB
cmNoaXZlRW5kZWQsIHRoaXMpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmRl
dGFjaDogZnVuY3Rpb24oKQorICAgIG9uZGV0YWNoKCkKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRldGFjaC5jYWxsKHRoaXMpOwog
CkBAIC0xNTIsMTEgKzE1MCwxMSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iubm90aWZpY2F0aW9ucy5yZW1vdmVF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ob3RpZmljYXRpb24uUGFnZUFyY2hpdmVTdGFydGVk
LCB0aGlzLl9wYWdlQXJjaGl2ZVN0YXJ0ZWQsIHRoaXMpOwogICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLm5vdGlmaWNhdGlvbnMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZp
Y2F0aW9uLlBhZ2VBcmNoaXZlRW5kZWQsIHRoaXMuX3BhZ2VBcmNoaXZlRW5kZWQsIHRoaXMpOwog
ICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBPdmVycmlkZXMgZnJvbSBGb2xkZXJp
emVkVHJlZUVsZW1lbnQgKFByb3RlY3RlZCkuCiAKLSAgICBjb21wYXJlQ2hpbGRUcmVlRWxlbWVu
dHM6IGZ1bmN0aW9uKGEsIGIpCisgICAgY29tcGFyZUNoaWxkVHJlZUVsZW1lbnRzKGEsIGIpCiAg
ICAgewogICAgICAgICBpZiAoYSA9PT0gYikKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTY5
LDE3ICsxNjcsMTcgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogCiAgICAgICAgIGlmICghYUlzUmVzb3VyY2UgJiYgIWJJc1Jlc291cmNlKSB7CiAgICAgICAg
ICAgICAvLyBXaGVuIGJvdGggY29tcG9uZW50cyBhcmUgbm90IHJlc291cmNlcyB0aGVuIGRlZmF1
bHQgdG8gYmFzZSBjbGFzcyBjb21wYXJpc29uLgotICAgICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZS5jb21wYXJlQ2hpbGRUcmVlRWxlbWVu
dHMuY2FsbCh0aGlzLCBhLCBiKTsKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5jb21wYXJlQ2hp
bGRUcmVlRWxlbWVudHMoYSwgYik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBOb24tcmVzb3Vy
Y2VzIHNob3VsZCBhcHBlYXIgYmVmb3JlIHRoZSByZXNvdXJjZXMuCiAgICAgICAgIC8vIEZJWE1F
OiBUaGVyZSBzaG91bGQgYmUgYSBiZXR0ZXIgd2F5IHRvIGdyb3VwIHRoZSBlbGVtZW50cyBieSB0
aGVpciB0eXBlLgogICAgICAgICByZXR1cm4gYUlzUmVzb3VyY2UgPyAxIDogLTE7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBDYWxsZWQgZnJvbSBSZXNvdXJjZVRyZWVFbGVtZW50LgogCi0gICAg
dXBkYXRlU3RhdHVzRm9yTWFpbkZyYW1lOiBmdW5jdGlvbigpCisgICAgdXBkYXRlU3RhdHVzRm9y
TWFpbkZyYW1lKCkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGxvYWRlZEltYWdlcygpCiAgICAg
ICAgIHsKQEAgLTIyMSwxMSArMjE5LDExIEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBsb2FkZWRJbWFnZXMuY2FsbCh0aGlzKTsK
ICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIE92ZXJyaWRlcyBmcm9tIFRyZWVFbGVtZW50IChQcml2YXRlKS4KIAotICAgIG9ucG9w
dWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLmNoaWxkcmVuLmxlbmd0aCAmJiAhdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4pCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0yNTIsMzQgKzI1MCwzNCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGZsb3dLZXkgaW4gZmxv
d01hcCkKICAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdChmbG93
TWFwW2Zsb3dLZXldKTsKIAotICAgIH0sCisgICAgfQogCi0gICAgb25leHBhbmQ6IGZ1bmN0aW9u
KCkKKyAgICBvbmV4cGFuZCgpCiAgICAgewogICAgICAgICB0aGlzLl9leHBhbmRlZFNldHRpbmcu
dmFsdWUgPSB0cnVlOwogICAgICAgICB0aGlzLl9mcmFtZS5kb21UcmVlLnJlcXVlc3RDb250ZW50
Rmxvd0xpc3QoKTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uY29sbGFwc2U6IGZ1bmN0aW9uKCkK
KyAgICBvbmNvbGxhcHNlKCkKICAgICB7CiAgICAgICAgIC8vIE9ubHkgc3RvcmUgdGhlIHNldHRp
bmcgaWYgd2UgaGF2ZSBjaGlsZHJlbiwgc2luY2Ugc2V0dGluZyBoYXNDaGlsZHJlbiB0byBmYWxz
ZSB3aWxsIGNhdXNlIGEgY29sbGFwc2UsCiAgICAgICAgIC8vIGFuZCB3ZSBvbmx5IGNhcmUgYWJv
dXQgdXNlciB0cmlnZ2VyZWQgY29sbGFwc2VzLgogICAgICAgICBpZiAodGhpcy5oYXNDaGlsZHJl
bikKICAgICAgICAgICAgIHRoaXMuX2V4cGFuZGVkU2V0dGluZy52YWx1ZSA9IGZhbHNlOwotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3VwZGF0ZUV4cGFuZGVkU2V0dGlu
ZzogZnVuY3Rpb24oKQorICAgIF91cGRhdGVFeHBhbmRlZFNldHRpbmcoKQogICAgIHsKICAgICAg
ICAgdGhpcy5fZXhwYW5kZWRTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJmcmFt
ZS1leHBhbmRlZC0iICsgdGhpcy5fZnJhbWUudXJsLmhhc2gsIHRoaXMuX2ZyYW1lLmlzTWFpbkZy
YW1lKCkgPyB0cnVlIDogZmFsc2UpOwogICAgICAgICBpZiAodGhpcy5fZXhwYW5kZWRTZXR0aW5n
LnZhbHVlKQogICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgdGhpcy5jb2xsYXBzZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX21haW5SZXNvdXJj
ZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShl
dmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlKHRoaXMuX2ZyYW1lLm1h
aW5SZXNvdXJjZSk7CiAKQEAgLTI5NCw1NiArMjkyLDU2IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZURvd25sb2Fk
QnV0dG9uKCk7CiAKICAgICAgICAgdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB0cnVlOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3Jlc291cmNlV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9yZXNvdXJjZVdhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5hZGRSZXBy
ZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShldmVudC5kYXRhLnJlc291cmNlKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9yZXNvdXJjZVdhc1JlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9yZXNvdXJjZVdhc1JlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnJlbW92ZUNo
aWxkRm9yUmVwcmVzZW50ZWRPYmplY3QoZXZlbnQuZGF0YS5yZXNvdXJjZSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfY2hpbGRGcmFtZVdhc0FkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY2hp
bGRGcmFtZVdhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5hZGRSZXByZXNlbnRl
ZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShldmVudC5kYXRhLmNoaWxkRnJhbWUpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2NoaWxkRnJhbWVXYXNSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
Y2hpbGRGcmFtZVdhc1JlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnJlbW92ZUNo
aWxkRm9yUmVwcmVzZW50ZWRPYmplY3QoZXZlbnQuZGF0YS5jaGlsZEZyYW1lKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9jaGlsZENvbnRlbnRGbG93V2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9jaGlsZENvbnRlbnRGbG93V2FzQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlz
LmFkZFJlcHJlc2VudGVkT2JqZWN0VG9OZXdDaGlsZFF1ZXVlKGV2ZW50LmRhdGEuZmxvdyk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfY2hpbGRDb250ZW50Rmxvd1dhc1JlbW92ZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9jaGlsZENvbnRlbnRGbG93V2FzUmVtb3ZlZChldmVudCkKICAgICB7CiAg
ICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdChldmVudC5kYXRhLmZs
b3cpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jvb3RET01Ob2RlSW52YWxpZGF0ZWQ6IGZ1bmN0
aW9uKCkKKyAgICBfcm9vdERPTU5vZGVJbnZhbGlkYXRlZCgpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5leHBhbmRlZCkKICAgICAgICAgICAgIHRoaXMuX2ZyYW1lLmRvbVRyZWUucmVxdWVzdENv
bnRlbnRGbG93TGlzdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbG9hZFBhZ2VDbGlja2Vk
OiBmdW5jdGlvbihldmVudCkKKyAgICBfcmVsb2FkUGFnZUNsaWNrZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICAvLyBJZ25vcmUgY2FjaGUgd2hlbiB0aGUgc2hpZnQga2V5IGlzIHByZXNzZWQuCiAg
ICAgICAgIFBhZ2VBZ2VudC5yZWxvYWQoZXZlbnQuZGF0YS5zaGlmdEtleSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfZG93bmxvYWRCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
ZG93bmxvYWRCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9y
LmFyY2hpdmVNYWluRnJhbWUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVEb3dubG9h
ZEJ1dHRvbjogZnVuY3Rpb24oKQorICAgIF91cGRhdGVEb3dubG9hZEJ1dHRvbigpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9mcmFtZS5pc01haW5GcmFtZSgpKTsKICAgICAg
ICAgaWYgKCF0aGlzLl9kb3dubG9hZEJ1dHRvbikKQEAgLTM2MCwxNSArMzU4LDE1IEBAIFdlYklu
c3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHRoaXMuX2Rvd25sb2FkQnV0dG9uLmVuYWJsZWQgPSBXZWJJbnNwZWN0b3IuY2FuQXJjaGl2
ZU1haW5GcmFtZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhZ2VBcmNoaXZlU3RhcnRlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX3BhZ2VBcmNoaXZlU3RhcnRlZChldmVudCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2Rvd25sb2FkaW5nUGFnZSA9IHRydWU7CiAgICAgICAgIHRoaXMuX3VwZGF0
ZURvd25sb2FkQnV0dG9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGFnZUFyY2hpdmVFbmRl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BhZ2VBcmNoaXZlRW5kZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICB0aGlzLl9kb3dubG9hZGluZ1BhZ2UgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fdXBk
YXRlRG93bmxvYWRCdXR0b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUcmVlRWxlbWVudC5qcwppbmRleCAw
MzIwZjE0YjIwY2QzNTZlMDgzYmIwNTRhNjI3YzU2MGRmZmQxMTc1Li4zOTQ1NzdlY2NhZTU0NGUw
Y2I1ZmE0MmM4NzczYTFiNjNjMjJjNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRyZWVFbGVtZW50Lmpz
CkBAIC0yMyw3MyArMjMsNTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50ID0gZnVuY3Rpb24oY2xhc3NO
YW1lcywgdGl0bGUsIHN1YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCwgaGFzQ2hpbGRyZW4pCitX
ZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50ID0gY2xhc3MgR2VuZXJhbFRyZWVFbGVtZW50
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50CiB7Ci0gICAgVHJlZUVsZW1lbnQuY2Fs
bCh0aGlzLCAiIiwgcmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKTsKLQotICAgIHRoaXMu
Y2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7Ci0KLSAgICB0aGlzLl90b29sdGlwSGFuZGxlZFNlcGFy
YXRlbHkgPSBmYWxzZTsKLSAgICB0aGlzLl9tYWluVGl0bGUgPSB0aXRsZSB8fCAiIjsKLSAgICB0
aGlzLl9zdWJ0aXRsZSA9IHN1YnRpdGxlIHx8ICIiOwotICAgIHRoaXMuX3N0YXR1cyA9ICIiOwot
fTsKKyAgICBjb25zdHJ1Y3RvcihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2Vu
dGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKKyAgICB7CisgICAgICAgIHN1cGVyKCIiLCByZXByZXNl
bnRlZE9iamVjdCwgaGFzQ2hpbGRyZW4pOwogCi1XZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVt
ZW50LlN0eWxlQ2xhc3NOYW1lID0gIml0ZW0iOwotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxl
bWVudC5EaXNjbG9zdXJlQnV0dG9uU3R5bGVDbGFzc05hbWUgPSAiZGlzY2xvc3VyZS1idXR0b24i
OwotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5JY29uRWxlbWVudFN0eWxlQ2xhc3NO
YW1lID0gImljb24iOwotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5TdGF0dXNFbGVt
ZW50U3R5bGVDbGFzc05hbWUgPSAic3RhdHVzIjsKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVs
ZW1lbnQuVGl0bGVzRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInRpdGxlcyI7Ci1XZWJJbnNwZWN0
b3IuR2VuZXJhbFRyZWVFbGVtZW50Lk1haW5UaXRsZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJ0
aXRsZSI7Ci1XZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlN1YnRpdGxlRWxlbWVudFN0
eWxlQ2xhc3NOYW1lID0gInN1YnRpdGxlIjsKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1l
bnQuTm9TdWJ0aXRsZVN0eWxlQ2xhc3NOYW1lID0gIm5vLXN1YnRpdGxlIjsKLVdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQuU21hbGxTdHlsZUNsYXNzTmFtZSA9ICJzbWFsbCI7Ci1XZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlR3b0xpbmVTdHlsZUNsYXNzTmFtZSA9ICJ0d28t
bGluZSI7CisgICAgICAgIHRoaXMuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7CiAKLVdlYkluc3Bl
Y3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuRXZlbnQgPSB7Ci0gICAgTWFpblRpdGxlRGlkQ2hhbmdl
OiAiZ2VuZXJhbC10cmVlLWVsZW1lbnQtbWFpbi10aXRsZS1kaWQtY2hhbmdlIgotfTsKLQotV2Vi
SW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBUcmVl
RWxlbWVudC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX3Rvb2x0aXBIYW5kbGVkU2VwYXJhdGVs
eSA9IGZhbHNlOworICAgICAgICB0aGlzLl9tYWluVGl0bGUgPSB0aXRsZSB8fCAiIjsKKyAgICAg
ICAgdGhpcy5fc3VidGl0bGUgPSBzdWJ0aXRsZSB8fCAiIjsKKyAgICAgICAgdGhpcy5fc3RhdHVz
ID0gIiI7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fbGlzdEl0ZW1Ob2RlOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGljb25FbGVtZW50KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NyZWF0ZUVsZW1lbnRz
SWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ljb25FbGVtZW50OwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHRpdGxlc0VsZW1lbnQoKQogICAgIHsKICAgICAgICAgdGhpcy5fY3Jl
YXRlRWxlbWVudHNJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGVzRWxlbWVu
dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBtYWluVGl0bGVFbGVtZW50KCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2NyZWF0ZUVsZW1lbnRzSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIHRo
aXMuX21haW5UaXRsZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VidGl0bGVF
bGVtZW50KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NyZWF0ZUVsZW1lbnRzSWZOZWVkZWQoKTsK
ICAgICAgICAgdGhpcy5fY3JlYXRlU3VidGl0bGVFbGVtZW50SWZOZWVkZWQoKTsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3N1YnRpdGxlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBj
bGFzc05hbWVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWVzOwotICAg
IH0sCisgICAgfQogCiAgICAgc2V0IGNsYXNzTmFtZXMoeCkKICAgICB7CkBAIC0xMDcsOSArOTAs
OSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY2xhc3NOYW1lcy5sZW5ndGg7ICsraSkK
ICAgICAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCh0aGlzLl9j
bGFzc05hbWVzW2ldKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgYWRkQ2xhc3NO
YW1lOiBmdW5jdGlvbihjbGFzc05hbWUpCisgICAgYWRkQ2xhc3NOYW1lKGNsYXNzTmFtZSkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9jbGFzc05hbWVzLmNvbnRhaW5zKGNsYXNzTmFtZSkpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0xMTgsOSArMTAxLDkgQEAgV2ViSW5zcGVjdG9yLkdlbmVy
YWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuX2xpc3RJdGVt
Tm9kZSkKICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKGNsYXNz
TmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVDbGFzc05hbWU6IGZ1bmN0aW9uKGNs
YXNzTmFtZSkKKyAgICByZW1vdmVDbGFzc05hbWUoY2xhc3NOYW1lKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9jbGFzc05hbWVzLmNvbnRhaW5zKGNsYXNzTmFtZSkpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMjksMTIgKzExMiwxMiBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2RlKQogICAg
ICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBzbWFsbCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fc21hbGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc21hbGwoeCkKICAgICB7CkBA
IC0xNDYsMTIgKzEyOSwxMiBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0aGlzLl9saXN0SXRl
bU5vZGUuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlNt
YWxsU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
dHdvTGluZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHdvTGluZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIHNldCB0d29MaW5lKHgpCiAgICAgewpAQCAtMTYzLDEyICsxNDYsMTIgQEAg
V2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5yZW1v
dmUoV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5Ud29MaW5lU3R5bGVDbGFzc05hbWUp
OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbWFpblRpdGxlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9tYWluVGl0bGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgbWFpblRpdGxlKHgpCiAgICAgewpAQCAtMTc2LDI0ICsxNTksMjQgQEAgV2ViSW5zcGVjdG9y
LkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRp
dGxlRWxlbWVudHMoKTsKICAgICAgICAgdGhpcy5kaWRDaGFuZ2UoKTsKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5F
dmVudC5NYWluVGl0bGVEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1YnRp
dGxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdWJ0aXRsZTsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCBzdWJ0aXRsZSh4KQogICAgIHsKICAgICAgICAgdGhpcy5fc3VidGl0bGUg
PSB4IHx8ICIiOwogICAgICAgICB0aGlzLl91cGRhdGVUaXRsZUVsZW1lbnRzKCk7CiAgICAgICAg
IHRoaXMuZGlkQ2hhbmdlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3RhdHVzKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgc3RhdHVzKHgpCiAgICAgewpAQCAtMjA3LDM2ICsxOTAsMzYgQEAgV2ViSW5zcGVjdG9yLkdl
bmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fc3RhdHVzID0g
eCB8fCAiIjsKICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVzRWxlbWVudCgpOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGZpbHRlcmFibGVEYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7
dGV4dDogW3RoaXMubWFpblRpdGxlLCB0aGlzLnN1YnRpdGxlXX07Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgdG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5KCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl90b29sdGlwSGFuZGxlZFNlcGFyYXRlbHk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgdG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5KHgpCiAgICAgewogICAgICAgICB0aGlzLl90b29s
dGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB4IHx8IGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAg
Ly8gT3ZlcnJpZGVzIGZyb20gVHJlZUVsZW1lbnQgKFByaXZhdGUpCiAKLSAgICBpc0V2ZW50V2l0
aGluRGlzY2xvc3VyZVRyaWFuZ2xlOiBmdW5jdGlvbihldmVudCkKKyAgICBpc0V2ZW50V2l0aGlu
RGlzY2xvc3VyZVRyaWFuZ2xlKGV2ZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGV2ZW50LnRh
cmdldCA9PT0gdGhpcy5fZGlzY2xvc3VyZUJ1dHRvbjsKLSAgICB9LAorICAgIH0KIAotICAgIG9u
YXR0YWNoOiBmdW5jdGlvbigpCisgICAgb25hdHRhY2goKQogICAgIHsKICAgICAgICAgdGhpcy5f
Y3JlYXRlRWxlbWVudHNJZk5lZWRlZCgpOwogICAgICAgICB0aGlzLl91cGRhdGVUaXRsZUVsZW1l
bnRzKCk7CiAKLSAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMu
X2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJpdGVtIik7CiAKICAgICAgICAgaWYgKHRoaXMu
X2NsYXNzTmFtZXMpIHsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY2xh
c3NOYW1lcy5sZW5ndGg7ICsraSkKQEAgLTI2NCwyNSArMjQ3LDI1IEBAIFdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhp
cy5fdXBkYXRlU3RhdHVzRWxlbWVudCgpOwotICAgIH0sCisgICAgfQogCi0gICAgb25kZXRhY2g6
IGZ1bmN0aW9uKCkKKyAgICBvbmRldGFjaCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fYm91
bmRDb250ZXh0TWVudUV2ZW50SGFuZGxlcikgewogICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1O
b2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5fYm91bmRDb250ZXh0
TWVudUV2ZW50SGFuZGxlciwgdHJ1ZSk7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fYm91bmRD
b250ZXh0TWVudUV2ZW50SGFuZGxlcjsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAg
b25yZXZlYWw6IGZ1bmN0aW9uKCkKKyAgICBvbnJldmVhbCgpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fbGlzdEl0ZW1Ob2RlKQogICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLnNjcm9s
bEludG9WaWV3SWZOZWVkZWQoZmFsc2UpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVj
dGVkCiAKLSAgICBjYWxsRmlyc3RBbmNlc3RvckZ1bmN0aW9uOiBmdW5jdGlvbihmdW5jdGlvbk5h
bWUsIGFyZ3MpCisgICAgY2FsbEZpcnN0QW5jZXN0b3JGdW5jdGlvbihmdW5jdGlvbk5hbWUsIGFy
Z3MpCiAgICAgewogICAgICAgICAvLyBDYWxsIHRoZSBmaXJzdCBhbmNlc3RvciB0aGF0IGltcGxl
bWVudHMgYSBmdW5jdGlvbiBuYW1lZCBmdW5jdGlvbk5hbWUgKGlmIGFueSkuCiAgICAgICAgIHZh
ciBjdXJyZW50Tm9kZSA9IHRoaXMucGFyZW50OwpAQCAtMjk0LDExICsyNzcsMTEgQEAgV2ViSW5z
cGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIGN1
cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfY3JlYXRlRWxlbWVudHNJZk5lZWRlZDogZnVuY3Rp
b24oKQorICAgIF9jcmVhdGVFbGVtZW50c0lmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLl9jcmVhdGVkRWxlbWVudHMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMjEsOSArMzA0
LDkgQEAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX3RpdGxlc0VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbWFpblRpdGxlRWxlbWVu
dCk7CiAKICAgICAgICAgdGhpcy5fY3JlYXRlZEVsZW1lbnRzID0gdHJ1ZTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9jcmVhdGVTdWJ0aXRsZUVsZW1lbnRJZk5lZWRlZDogZnVuY3Rpb24oKQorICAg
IF9jcmVhdGVTdWJ0aXRsZUVsZW1lbnRJZk5lZWRlZCgpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fc3VidGl0bGVFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzMxLDkgKzMxNCw5
IEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9zdWJ0aXRsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
CiAgICAgICAgIHRoaXMuX3N1YnRpdGxlRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3Iu
R2VuZXJhbFRyZWVFbGVtZW50LlN1YnRpdGxlRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwogICAgICAg
ICB0aGlzLl90aXRsZXNFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3N1YnRpdGxlRWxlbWVudCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlVGl0bGVFbGVtZW50czogZnVuY3Rpb24oKQor
ICAgIF91cGRhdGVUaXRsZUVsZW1lbnRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY3Jl
YXRlZEVsZW1lbnRzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzc3LDkgKzM2MCw5IEBAIFdl
Ykluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS50aXRsZSA9IHN1YnRpdGxl
VGV4dDsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVN0YXR1c0VsZW1l
bnQ6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlU3RhdHVzRWxlbWVudCgpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX3N0YXR1c0VsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zOTQs
MyArMzc3LDE3IEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5fc3RhdHVzRWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMuX3N0
YXR1czsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LkRpc2Ns
b3N1cmVCdXR0b25TdHlsZUNsYXNzTmFtZSA9ICJkaXNjbG9zdXJlLWJ1dHRvbiI7CitXZWJJbnNw
ZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Lkljb25FbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiaWNv
biI7CitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlN0YXR1c0VsZW1lbnRTdHlsZUNs
YXNzTmFtZSA9ICJzdGF0dXMiOworV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5UaXRs
ZXNFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidGl0bGVzIjsKK1dlYkluc3BlY3Rvci5HZW5lcmFs
VHJlZUVsZW1lbnQuTWFpblRpdGxlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInRpdGxlIjsKK1dl
Ykluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuU3VidGl0bGVFbGVtZW50U3R5bGVDbGFzc05h
bWUgPSAic3VidGl0bGUiOworV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5Ob1N1YnRp
dGxlU3R5bGVDbGFzc05hbWUgPSAibm8tc3VidGl0bGUiOworV2ViSW5zcGVjdG9yLkdlbmVyYWxU
cmVlRWxlbWVudC5TbWFsbFN0eWxlQ2xhc3NOYW1lID0gInNtYWxsIjsKK1dlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnQuVHdvTGluZVN0eWxlQ2xhc3NOYW1lID0gInR3by1saW5lIjsKKwor
V2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5FdmVudCA9IHsKKyAgICBNYWluVGl0bGVE
aWRDaGFuZ2U6ICJnZW5lcmFsLXRyZWUtZWxlbWVudC1tYWluLXRpdGxlLWRpZC1jaGFuZ2UiCit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
SW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50LmpzCmlu
ZGV4IGQ2NDI0MzBlYzA0MTg1NmY2YWMxZWI5ZjcxMzNkZjgxYzgxMTRhZjYuLjBiMjA1YmY0MDdl
YjA4ZWJjYjlmYTJmZGZmYjFjYWMwMzU3NGIyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVu
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRl
eGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQuanMKQEAgLTIzLDI1ICsyMywyMyBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5JbmRleGVk
RGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihob3N0KQorV2ViSW5zcGVjdG9yLklu
ZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudCA9IGNsYXNzIEluZGV4ZWREYXRhYmFzZUhvc3RU
cmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9y
LkZvbGRlclRyZWVFbGVtZW50LkZvbGRlckljb25TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9y
LmRpc3BsYXlOYW1lRm9ySG9zdChob3N0KSwgbnVsbCk7Ci0KLSAgICB0aGlzLl9ob3N0ID0gaG9z
dDsKKyAgICBjb25zdHJ1Y3Rvcihob3N0KQorICAgIHsKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVj
dG9yLkZvbGRlclRyZWVFbGVtZW50LkZvbGRlckljb25TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVj
dG9yLmRpc3BsYXlOYW1lRm9ySG9zdChob3N0KSwgbnVsbCk7CiAKLSAgICB0aGlzLmhhc0NoaWxk
cmVuID0gdHJ1ZTsKLX07CisgICAgICAgIHRoaXMuX2hvc3QgPSBob3N0OwogCi1XZWJJbnNwZWN0
b3IuSW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudCwKLSAg
ICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLAor
ICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gdHJ1ZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBuYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGlz
cGxheU5hbWVGb3JIb3N0KHRoaXMuX2hvc3QpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNh
dGVnb3J5TmFtZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleFRyZWVFbGVt
ZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhl
ZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleFRyZWVFbGVtZW50LmpzCmluZGV4IGVlYmQxY2EwZGU2
NTQ4ODgxNTgzMTdiNGJmNzk3MTY4NTA5Mzg3YTMuLmNhODEyOTE0OTJmZWJlZjdjMmY4MzdlZGRl
Yzc0ZGU3NTc4YzBmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXhUcmVlRWxlbWVudC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVk
RGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQuanMKQEAgLTIzLDIyICsyMywxOCBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihv
YmplY3RTdG9yZUluZGV4KQorV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3Jl
SW5kZXhUcmVlRWxlbWVudCA9IGNsYXNzIEluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXhU
cmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQKIHsKLSAg
ICBjb25zb2xlLmFzc2VydChvYmplY3RTdG9yZUluZGV4IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXgpOwotCi0gICAgdGhpcy5fb2JqZWN0U3Rv
cmVJbmRleCA9IG9iamVjdFN0b3JlSW5kZXg7CisgICAgY29uc3RydWN0b3Iob2JqZWN0U3RvcmVJ
bmRleCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9iamVjdFN0b3JlSW5kZXggaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleCk7CiAK
LSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVj
dG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQuSWNvblN0eWxlQ2xhc3NO
YW1lLCBvYmplY3RTdG9yZUluZGV4Lm5hbWUsIG51bGwsIG9iamVjdFN0b3JlSW5kZXgsIGZhbHNl
KTsKKyAgICAgICAgc3VwZXIoImRhdGFiYXNlLXRhYmxlLWljb24iLCBvYmplY3RTdG9yZUluZGV4
Lm5hbWUsIG51bGwsIG9iamVjdFN0b3JlSW5kZXgsIGZhbHNlKTsKIAotICAgIHRoaXMuc21hbGwg
PSB0cnVlOwotfTsKKyAgICAgICAgdGhpcy5fb2JqZWN0U3RvcmVJbmRleCA9IG9iamVjdFN0b3Jl
SW5kZXg7CiAKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJl
ZUVsZW1lbnQuSWNvblN0eWxlQ2xhc3NOYW1lID0gImRhdGFiYXNlLXRhYmxlLWljb24iOwotCi1X
ZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleFRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFz
ZU9iamVjdFN0b3JlSW5kZXhUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgICAgICB0aGlzLnNtYWxsID0gdHJ1
ZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVl
RWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0lu
ZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQuanMKaW5kZXggOGY5YzdjMTA1YzNk
MzQ5ZWU2NGE4NzhiZTg4ZTQ1ZDk3MThhNjkyZS4uNzk5YjliZjE1ZjY0OWE5NzM3MGYzMzliZmE3
YmUwYTJkMzQ4OWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJh
c2VPYmplY3RTdG9yZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDM4ICsyMywzNCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJh
c2VPYmplY3RTdG9yZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0U3RvcmUpCitXZWJJbnNw
ZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudCA9IGNsYXNzIEluZGV4
ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2Vu
ZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQob2JqZWN0U3RvcmUgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUpOwotCi0gICAgdGhp
cy5fb2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZTsKLQotICAgIFdlYkluc3BlY3Rvci5HZW5lcmFs
VHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0
U3RvcmVUcmVlRWxlbWVudC5JY29uU3R5bGVDbGFzc05hbWUsIG9iamVjdFN0b3JlLm5hbWUsIG51
bGwsIG9iamVjdFN0b3JlLCAhIXRoaXMuX29iamVjdFN0b3JlLmluZGV4ZXMubGVuZ3RoKTsKKyAg
ICBjb25zdHJ1Y3RvcihvYmplY3RTdG9yZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KG9iamVjdFN0b3JlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVj
dFN0b3JlKTsKIAotICAgIHRoaXMuc21hbGwgPSB0cnVlOwotfTsKKyAgICAgICAgc3VwZXIoV2Vi
SW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQuSWNvblN0eWxl
Q2xhc3NOYW1lLCBvYmplY3RTdG9yZS5uYW1lLCBudWxsLCBvYmplY3RTdG9yZSwgISF0aGlzLl9v
YmplY3RTdG9yZS5pbmRleGVzLmxlbmd0aCk7CiAKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJh
c2VPYmplY3RTdG9yZVRyZWVFbGVtZW50Lkljb25TdHlsZUNsYXNzTmFtZSA9ICJkYXRhYmFzZS10
YWJsZS1pY29uIjsKKyAgICAgICAgdGhpcy5fb2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZTsKIAot
V2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2Jq
ZWN0U3RvcmVUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5HZW5lcmFs
VHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICB9
CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBvYmplY3RTdG9yZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fb2JqZWN0U3RvcmU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBPdmVy
cmlkZXMgZnJvbSBUcmVlRWxlbWVudCAoUHJvdGVjdGVkKQogCi0gICAgb25jb2xsYXBzZTogZnVu
Y3Rpb24oKQorICAgIG9uY29sbGFwc2UoKQogICAgIHsKICAgICAgICAgdGhpcy5zaG91bGRSZWZy
ZXNoQ2hpbGRyZW4gPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgb25wb3B1bGF0ZTogZnVu
Y3Rpb24oKQorICAgIG9ucG9wdWxhdGUoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuY2hpbGRy
ZW4ubGVuZ3RoICYmICF0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbikKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0luZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQuanMKaW5kZXgg
MGY3YjI2NzE0MGE2ZTgwZTY2MjE5MTI4ODA5MzAzZGMxZTZhMzQ5Ny4uYTk1OGM5MzdiY2U5ZmUw
NDZkODhlZDI2YjA1NDExNDJiYmU2YWVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFi
YXNlVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMzcgKzIzLDM0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZVRyZWVFbGVt
ZW50ID0gZnVuY3Rpb24oaW5kZXhlZERhdGFiYXNlKQorV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRh
YmFzZVRyZWVFbGVtZW50ID0gY2xhc3MgSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQo
aW5kZXhlZERhdGFiYXNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZSk7
Ci0KLSAgICB0aGlzLl9pbmRleGVkRGF0YWJhc2UgPSBpbmRleGVkRGF0YWJhc2U7Ci0KLSAgICBX
ZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLklu
ZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50Lkljb25TdHlsZUNsYXNzTmFtZSwgaW5kZXhlZERhdGFi
YXNlLm5hbWUsIG51bGwsIGluZGV4ZWREYXRhYmFzZSwgISF0aGlzLl9pbmRleGVkRGF0YWJhc2Uu
b2JqZWN0U3RvcmVzLmxlbmd0aCk7CisgICAgY29uc3RydWN0b3IoaW5kZXhlZERhdGFiYXNlKQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXhlZERhdGFiYXNlIGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZSk7CiAKLSAgICB0aGlzLnNtYWxsID0gdHJ1ZTsK
LX07CisgICAgICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZSA9IGluZGV4ZWREYXRhYmFzZTsKIAot
V2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50Lkljb25TdHlsZUNsYXNzTmFt
ZSA9ICJkYXRhYmFzZS1pY29uIjsKKyAgICAgICAgc3VwZXIoImRhdGFiYXNlLWljb24iLCBpbmRl
eGVkRGF0YWJhc2UubmFtZSwgbnVsbCwgaW5kZXhlZERhdGFiYXNlLCAhIXRoaXMuX2luZGV4ZWRE
YXRhYmFzZS5vYmplY3RTdG9yZXMubGVuZ3RoKTsKIAotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRh
YmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkluZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50LAorICAgICAgICB0aGlzLnNtYWxsID0gdHJ1
ZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpbmRleGVkRGF0YWJhc2UoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4ZWREYXRhYmFzZTsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIE92ZXJyaWRlcyBmcm9tIFRyZWVFbGVtZW50IChQcm90ZWN0ZWQpCiAKLSAg
ICBvbmNvbGxhcHNlOiBmdW5jdGlvbigpCisgICAgb25jb2xsYXBzZSgpCiAgICAgewogICAgICAg
ICB0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBvbnBvcHVsYXRlOiBmdW5jdGlvbigpCisgICAgb25wb3B1bGF0ZSgpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggJiYgIXRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVu
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjYsNSArNjMsMyBAQCBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5h
cHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJl
ZUVsZW1lbnQob2JqZWN0U3RvcmUpKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuSW5kZXhl
ZERhdGFiYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1l
c3NhZ2VJbXBsLmpzCmluZGV4IDg3NjA0YjVlMjg3ZTg3ZGIzNGE3OTMzN2YyNDVmZGZhMjUxZjM5
YjAuLjM0YzJlYWViNDk2ZWM4Y2QwNjFjMzVkYzkxMDczMjdhNzg3N2QxOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUNvbnNvbGVN
ZXNzYWdlSW1wbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwuanMKQEAgLTEzOSwxMCArMTM5LDEwIEBAIFdl
Ykluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlID0gewogICAgICAg
ICBpZiAodGhpcy5fc2hvdWxkRHVtcFN0YWNrVHJhY2UoKSkgewogICAgICAgICAgICAgdmFyIG9s
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKICAgICAgICAgICAgIG9sLmNsYXNzTmFt
ZSA9ICJvdXRsaW5lLWRpc2Nsb3N1cmUiOwotICAgICAgICAgICAgdmFyIHRyZWVPdXRsaW5lID0g
bmV3IFRyZWVPdXRsaW5lKG9sKTsKKyAgICAgICAgICAgIHZhciB0cmVlT3V0bGluZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUob2wpOwogCiAgICAgICAgICAgICB2YXIgY29udGVudCA9
IHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2U7Ci0gICAgICAgICAgICB2YXIgcm9vdCA9IG5ldyBUcmVl
RWxlbWVudChjb250ZW50LCBudWxsLCB0cnVlKTsKKyAgICAgICAgICAgIHZhciByb290ID0gbmV3
IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudChjb250ZW50LCBudWxsLCB0cnVlKTsKICAgICAgICAg
ICAgIGNvbnRlbnQudHJlZUVsZW1lbnRGb3JUZXN0ID0gcm9vdDsKICAgICAgICAgICAgIHRyZWVP
dXRsaW5lLmFwcGVuZENoaWxkKHJvb3QpOwogICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNlKQpAQCAt
NjIwLDcgKzYyMCw3IEBAIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJv
dG90eXBlID0gewogICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQodXJsRWxlbWVu
dCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IG5ldyBU
cmVlRWxlbWVudChjb250ZW50KTsKKyAgICAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IG5ldyBX
ZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoY29udGVudCk7CiAgICAgICAgICAgICBwYXJlbnRUcmVl
RWxlbWVudC5hcHBlbmRDaGlsZCh0cmVlRWxlbWVudCk7CiAgICAgICAgIH0KICAgICB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nVHJl
ZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9M
b2dUcmVlRWxlbWVudC5qcwppbmRleCBhNzNkMGRiOGJiODFiYzZjMWM5NzY0MGE1NmQ4Y2MwOWZl
OTQ1OWIzLi43ZmZkOGRiZDMzMDk1NTEyMWYzZDI2NTk4Zjg0NDMzZGQ5OGIxM2I3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dUcmVlRWxl
bWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9M
b2dUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMjEgKzIzLDE4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkxvZ1RyZWVFbGVtZW50ID0gZnVuY3Rp
b24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuTG9nVHJlZUVsZW1lbnQgPSBjbGFz
cyBMb2dUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQK
IHsKLSAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5Mb2dPYmplY3QpOwotCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5Mb2dUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIiksIHJlcHJlc2VudGVkT2JqZWN0LnN0YXJ0
RGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoKSwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKLQot
ICAgIHRoaXMuX2xvZ09iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0OworICAgIGNvbnN0cnVjdG9y
KHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuTG9nT2JqZWN0KTsKIAotICAgIHRo
aXMuc21hbGwgPSB0cnVlOwotfTsKKyAgICAgICAgc3VwZXIoImxvZy1pY29uIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDb25zb2xlIiksIHJlcHJlc2VudGVkT2JqZWN0LnN0YXJ0RGF0ZS50b0xv
Y2FsZVRpbWVTdHJpbmcoKSwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKIAotV2ViSW5zcGVj
dG9yLkxvZ1RyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lID0gImxvZy1pY29uIjsKKyAgICAgICAg
dGhpcy5fbG9nT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3Q7CiAKLVdlYkluc3BlY3Rvci5Mb2dU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5M
b2dUcmVlRWxlbWVudCwKKyAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7CisgICAgfQogCiAgICAg
Ly8gUHVibGljCiAKQEAgLTQ2LDUgKzQzLDMgQEAgV2ViSW5zcGVjdG9yLkxvZ1RyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xvZ09iamVjdDsKICAgICB9CiB9
OwotCi1XZWJJbnNwZWN0b3IuTG9nVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQ
YW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmln
YXRpb25TaWRlYmFyUGFuZWwuanMKaW5kZXggNTRmNWM2NTIwOWIwM2RmYWU0OGZjMmVjMGJkOGZl
ZWVlZTJlOTFlYy4uYWIwZWU1YzIwOTg4NTEyNDRmY2RhNTQ5OGRiZDA3NmFhNGUyOWZmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCkBAIC0xNTcsNyArMTU3LDcgQEAg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgICAgIGNvbnRlbnRUcmVlT3V0bGluZUVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5D
b250ZW50VHJlZU91dGxpbmVFbGVtZW50SGlkZGVuU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB0
aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNvbnRlbnRUcmVlT3V0bGluZUVsZW1lbnQp
OwogCi0gICAgICAgIHZhciBjb250ZW50VHJlZU91dGxpbmUgPSBuZXcgVHJlZU91dGxpbmUoY29u
dGVudFRyZWVPdXRsaW5lRWxlbWVudCk7CisgICAgICAgIHZhciBjb250ZW50VHJlZU91dGxpbmUg
PSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKGNvbnRlbnRUcmVlT3V0bGluZUVsZW1lbnQp
OwogICAgICAgICBjb250ZW50VHJlZU91dGxpbmUuYWxsb3dzUmVwZWF0U2VsZWN0aW9uID0gdHJ1
ZTsKIAogICAgICAgICBpZiAoIXN1cHByZXNzRmlsdGVyaW5nKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlQXJyYXlJbmRl
eFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudC5qcwppbmRleCAyZTllZmZmNWU5ZTFi
NzQ5MDdjM2U2ODZiOWZiZThlNmJiNTk0OWVhLi42ODk1ZGM3NDBlMDRiNDdjNzUxYjQ0YTE0NDlj
YmU3MjA5YmYzNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9PYmplY3RUcmVlQXJyYXlJbmRleFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVBcnJheUluZGV4
VHJlZUVsZW1lbnQuanMKQEAgLTIzLDIzICsyMywyMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlQXJyYXlJbmRleFRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24ocHJvcGVydHksIHByb3BlcnR5UGF0aCkKK1dlYkluc3BlY3Rv
ci5PYmplY3RUcmVlQXJyYXlJbmRleFRyZWVFbGVtZW50ID0gY2xhc3MgT2JqZWN0VHJlZUFycmF5
SW5kZXhUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVF
bGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQocHJvcGVydHkuaXNJbmRleFByb3BlcnR5KCks
ICJBcnJheUluZGV4VHJlZUVsZW1lbnQgZXhwZWN0cyBudW1lcmljIHByb3BlcnR5IG5hbWVzIik7
Ci0KLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5jYWxsKHRoaXMs
IHByb3BlcnR5LCBwcm9wZXJ0eVBhdGgsIHByb3BlcnR5KTsKKyAgICBjb25zdHJ1Y3Rvcihwcm9w
ZXJ0eSwgcHJvcGVydHlQYXRoKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocHJvcGVy
dHkuaXNJbmRleFByb3BlcnR5KCksICJPYmplY3RUcmVlQXJyYXlJbmRleFRyZWVFbGVtZW50IGV4
cGVjdHMgbnVtZXJpYyBwcm9wZXJ0eSBuYW1lcyIpOwogCi0gICAgdGhpcy5tYWluVGl0bGUgPSB0
aGlzLl90aXRsZUZyYWdtZW50KCk7Ci0gICAgdGhpcy5hZGRDbGFzc05hbWUoIm9iamVjdC10cmVl
LXByb3BlcnR5Iik7Ci0gICAgdGhpcy5hZGRDbGFzc05hbWUoIm9iamVjdC10cmVlLWFycmF5LWlu
ZGV4Iik7CisgICAgICAgIHN1cGVyKHByb3BlcnR5LCBwcm9wZXJ0eVBhdGgsIHByb3BlcnR5KTsK
IAotICAgIGlmICghdGhpcy5wcm9wZXJ0eS5oYXNWYWx1ZSgpKQotICAgICAgICB0aGlzLmFkZENs
YXNzTmFtZSgiYWNjZXNzb3IiKTsKLX07CisgICAgICAgIHRoaXMubWFpblRpdGxlID0gdGhpcy5f
dGl0bGVGcmFnbWVudCgpOworICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgib2JqZWN0LXRyZWUt
cHJvcGVydHkiKTsKKyAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoIm9iamVjdC10cmVlLWFycmF5
LWluZGV4Iik7CiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlQXJyYXlJbmRleFRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVB
cnJheUluZGV4VHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0
VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUsCisgICAgICAgIGlmICghdGhpcy5wcm9wZXJ0
eS5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoImFjY2Vzc29yIik7
CisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKQEAgLTQ4LDcgKzQ2LDcgQEAgV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLm1haW5UaXRsZSA9IHRoaXMuX3RpdGxlRnJhZ21lbnQoKTsKIAogICAgICAgICB0aGlz
LnJlbW92ZUNsYXNzTmFtZSgiYWNjZXNzb3IiKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFBy
aXZhdGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuanMKaW5kZXgg
ZjQwZWJmOTdmNzVhMWZkYjAwNzIyYTJkZjdlMmYzYjczNzA1OTZiOC4uNTVhNGZiZWQ0YWYxMTJk
ZDI4ZGRkMGU0OGJlNWM5OTNlNGJiY2FlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlQmFz
ZVRyZWVFbGVtZW50LmpzCkBAIC0yMyw0NSArMjMsNDMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxl
bWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBwcm9wZXJ0eVBhdGgsIHByb3BlcnR5
KQorV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RU
cmVlQmFzZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICBjb25zb2xl
LmFzc2VydChwcm9wZXJ0eVBhdGggaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRo
KTsKLSAgICBjb25zb2xlLmFzc2VydCghcHJvcGVydHkgfHwgcHJvcGVydHkgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yKTsKLQotICAgIHRoaXMuX3Byb3BlcnR5ID0g
cHJvcGVydHk7Ci0gICAgdGhpcy5fcHJvcGVydHlQYXRoID0gcHJvcGVydHlQYXRoOworICAgIGNv
bnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0LCBwcm9wZXJ0eVBhdGgsIHByb3BlcnR5KQorICAg
IHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICBj
b25zb2xlLmFzc2VydChwcm9wZXJ0eVBhdGggaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvcGVy
dHlQYXRoKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXByb3BlcnR5IHx8IHByb3BlcnR5IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvcik7CiAKLSAgICBXZWJJbnNw
ZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgbnVsbCwgbnVsbCwgbnVsbCwgcmVw
cmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKKyAgICAgICAgc3VwZXIobnVsbCwgbnVsbCwgbnVsbCwg
cmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKIAotICAgIHRoaXMuc21hbGwgPSB0cnVlOwotICAg
IHRoaXMudG9nZ2xlT25DbGljayA9IHRydWU7Ci0gICAgdGhpcy5zZWxlY3RhYmxlID0gZmFsc2U7
Ci0gICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwotfTsKKyAgICAgICAg
dGhpcy5fcHJvcGVydHkgPSBwcm9wZXJ0eTsKKyAgICAgICAgdGhpcy5fcHJvcGVydHlQYXRoID0g
cHJvcGVydHlQYXRoOwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFz
ZVRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxl
bWVudC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOworICAgICAgICB0aGlz
LnRvZ2dsZU9uQ2xpY2sgPSB0cnVlOworICAgICAgICB0aGlzLnNlbGVjdGFibGUgPSBmYWxzZTsK
KyAgICAgICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOworICAgIH0KIAog
ICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHByb3BlcnR5KCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9wcm9wZXJ0eTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwcm9wZXJ0eVBhdGgo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5UGF0aDsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIFByb3RlY3RlZAogCiAgICAgb25jb250ZXh0bWVudShldmVudCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2NvbnRleHRNZW51SGFuZGxlcihldmVudCk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICByZXNvbHZlZFZhbHVlKCkKICAgICB7CkBAIC03MSw3ICs2OSw3IEBAIFdlYkluc3Bl
Y3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYg
KHRoaXMuX3Byb3BlcnR5Lmhhc1ZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJv
cGVydHkudmFsdWU7CiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAg
cmVzb2x2ZWRWYWx1ZVByb3BlcnR5UGF0aCgpCiAgICAgewpAQCAtODEsMTkgKzc5LDE5IEBAIFdl
Ykluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgaWYgKHRoaXMuX3Byb3BlcnR5Lmhhc1ZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gdGhp
cy5fcHJvcGVydHlQYXRoLmFwcGVuZFByb3BlcnR5RGVzY3JpcHRvcih0aGlzLl9wcm9wZXJ0eS52
YWx1ZSwgdGhpcy5fcHJvcGVydHksIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5WYWx1
ZSk7CiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgdGhpc1Byb3Bl
cnR5UGF0aCgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wcm9wZXJ0eSk7
CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eVBhdGguYXBwZW5kUHJvcGVydHlEZXNjcmlw
dG9yKG51bGwsIHRoaXMuX3Byb3BlcnR5LCB0aGlzLnByb3BlcnR5UGF0aFR5cGUoKSk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBoYWRFcnJvcigpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl9wcm9wZXJ0eSk7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eS53YXNUaHJv
d24gfHwgdGhpcy5fZ2V0dGVySGFkRXJyb3I7Ci0gICAgfSwKKyAgICB9CiAKICAgICBwcm9wZXJ0
eVBhdGhUeXBlKCkKICAgICB7CkBAIC0xMDUsNyArMTAzLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fcHJv
cGVydHkuaGFzU2V0dGVyKCkpCiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlByb3Bl
cnR5UGF0aC5UeXBlLlNldHRlcjsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qcm9wZXJ0
eVBhdGguVHlwZS5WYWx1ZTsKLSAgICB9LAorICAgIH0KIAogICAgIHByb3BlcnR5UGF0aFN0cmlu
Zyhwcm9wZXJ0eVBhdGgpCiAgICAgewpAQCAtMTEzLDcgKzExMSw3IEBAIFdlYkluc3BlY3Rvci5P
YmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlVuYWJsZSB0byBkZXRlcm1pbmUgcGF0aCB0byBwcm9w
ZXJ0eSBmcm9tIHJvb3QiKTsKIAogICAgICAgICByZXR1cm4gcHJvcGVydHlQYXRoLmRpc3BsYXlQ
YXRoKHRoaXMucHJvcGVydHlQYXRoVHlwZSgpKTsKLSAgICB9LAorICAgIH0KIAogICAgIGNyZWF0
ZUludGVyYWN0aXZlR2V0dGVyRWxlbWVudCgpCiAgICAgewpAQCAtMTM0LDcgKzEzMiw3IEBAIFdl
Ykluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfS5iaW5kKHRoaXMpKTsKIAogICAgICAgICByZXR1cm4gZ2V0dGVyRWxlbWVudDsKLSAgICB9
LAorICAgIH0KIAogICAgIGNyZWF0ZVJlYWRPbmx5SWNvbkVsZW1lbnQoKQogICAgIHsKQEAgLTE0
Miw3ICsxNDAsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHJlYWRPbmx5RWxlbWVudC5jbGFzc05hbWUgPSAicmVhZC1vbmx5
IjsKICAgICAgICAgcmVhZE9ubHlFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZWFkIG9ubHkiKTsKICAgICAgICAgcmV0dXJuIHJlYWRPbmx5RWxlbWVudDsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIFByaXZhdGUKIApAQCAtMTYwLDcgKzE1OCw3IEBAIFdlYkluc3BlY3Rv
ci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5xdWlja0NvbnNvbGUucHJvbXB0LnB1c2hIaXN0b3J5SXRlbSh0ZXh0KTsKIAog
ICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZUxvZ1ZpZXdDb250cm9sbGVyLmFwcGVuZEltbWVk
aWF0ZUV4ZWN1dGlvbldpdGhSZXN1bHQodGV4dCwgcmVzb2x2ZWRWYWx1ZSk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBfY29udGV4dE1lbnVIYW5kbGVyKGV2ZW50KQogICAgIHsKQEAgLTE4NCw3ICsx
ODIsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgaWYgKCFjb250ZXh0TWVudS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250ZXh0TWVudS5zaG93KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfYXBwZW5kTWVudXNJdGVt
c0Zvck9iamVjdChjb250ZXh0TWVudSwgcmVzb2x2ZWRWYWx1ZSkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlTWFw
RW50cnlUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL09iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LmpzCmluZGV4IGZiOTJkOGYzM2Rm
N2MyMTdiNjJiOWQzN2I1NTZlOGEzNzM4OTQ1YTUuLmQ2YmE0N2U3MzliOWJjYzY2Y2VkNTJiZGEx
OGM4YTQ5M2E1YWI4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVNYXBFbnRyeVRy
ZWVFbGVtZW50LmpzCkBAIC0yMyw0MiArMjMsNDAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVs
ZW1lbnQgPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5UGF0aCkKK1dlYkluc3BlY3Rvci5PYmpl
Y3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudCA9IGNsYXNzIE9iamVjdFRyZWVNYXBFbnRyeVRyZWVF
bGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQKIHsK
LSAgICBjb25zb2xlLmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3Rl
T2JqZWN0KTsKLQotICAgIHRoaXMuX29iamVjdCA9IG9iamVjdDsKKyAgICBjb25zdHJ1Y3Rvcihv
YmplY3QsIHByb3BlcnR5UGF0aCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpOwogCi0gICAgLy8gVHJlYXQg
dGhlIHNhbWUgYXMgYW4gYXJyYXktaW5kZXgganVzdCB3aXRoIGRpZmZlcmVudCBzdHJpbmdzIGFu
ZCB3aWR0aHMuCi0gICAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuY2Fs
bCh0aGlzLCB0aGlzLl9vYmplY3QsIHByb3BlcnR5UGF0aCk7CisgICAgICAgIC8vIFRyZWF0IHRo
ZSBzYW1lIGFzIGFuIGFycmF5LWluZGV4IGp1c3Qgd2l0aCBkaWZmZXJlbnQgc3RyaW5ncyBhbmQg
d2lkdGhzLgorICAgICAgICBzdXBlcih0aGlzLl9vYmplY3QsIHByb3BlcnR5UGF0aCk7CiAKLSAg
ICB0aGlzLm1haW5UaXRsZSA9IHRoaXMuX3RpdGxlRnJhZ21lbnQoKTsKLSAgICB0aGlzLmFkZENs
YXNzTmFtZSgib2JqZWN0LXRyZWUtYXJyYXktaW5kZXgiKTsKLSAgICB0aGlzLmFkZENsYXNzTmFt
ZSgib2JqZWN0LXRyZWUtbWFwLWVudHJ5Iik7Ci19OworICAgICAgICB0aGlzLl9vYmplY3QgPSBv
YmplY3Q7CiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50
cnlUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFz
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5tYWluVGl0bGUgPSB0aGlzLl90
aXRsZUZyYWdtZW50KCk7CisgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJvYmplY3QtdHJlZS1h
cnJheS1pbmRleCIpOworICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgib2JqZWN0LXRyZWUtbWFw
LWVudHJ5Iik7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgb2JqZWN0KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3Q7Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcm90ZWN0ZWQKIAogICAgIHJlc29sdmVkVmFsdWUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX29iamVjdDsKLSAgICB9LAorICAgIH0KIAogICAgIHByb3BlcnR5UGF0aFR5cGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5WYWx1
ZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIApAQCAtODMsMjMgKzgxLDIxIEBA
IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgfQogfTsKIAotCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEtleVRyZWVFbGVtZW50
ID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eVBhdGgpCitXZWJJbnNwZWN0b3IuT2JqZWN0VHJl
ZU1hcEtleVRyZWVFbGVtZW50ID0gY2xhc3MgT2JqZWN0VHJlZU1hcEtleVRyZWVFbGVtZW50IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50CiB7Ci0gICAg
V2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LmNhbGwodGhpcywgb2Jq
ZWN0LCBwcm9wZXJ0eVBhdGgpOwotICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJrZXkiKTsKLX07Ci0K
LVdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwS2V5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEtleVRyZWVFbGVtZW50
LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVt
ZW50LnByb3RvdHlwZSwKKyAgICBjb25zdHJ1Y3RvcihvYmplY3QsIHByb3BlcnR5UGF0aCkKKyAg
ICB7CisgICAgICAgIHN1cGVyKG9iamVjdCwgcHJvcGVydHlQYXRoKTsKIAorICAgICAgICB0aGlz
LmFkZENsYXNzTmFtZSgia2V5Iik7CisgICAgfQorICAgIAogICAgIC8vIFByb3RlY3RlZAogCiAg
ICAgZGlzcGxheVByb3BlcnR5TmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJrZXkiKTsKLSAgICB9LAorICAgIH0KIAogICAgIHJlc29sdmVkVmFsdWVQ
cm9wZXJ0eVBhdGgoKQogICAgIHsKQEAgLTEwNywyNCArMTAzLDIzIEBAIFdlYkluc3BlY3Rvci5P
YmplY3RUcmVlTWFwS2V5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLQot
V2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBWYWx1ZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ob2Jq
ZWN0LCBwcm9wZXJ0eVBhdGgsIGtleSkKK1dlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwVmFsdWVU
cmVlRWxlbWVudCA9IGNsYXNzIE9iamVjdFRyZWVNYXBWYWx1ZVRyZWVFbGVtZW50IGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50CiB7Ci0gICAgdGhpcy5f
a2V5ID0ga2V5OwotICAgIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVu
dC5jYWxsKHRoaXMsIG9iamVjdCwgcHJvcGVydHlQYXRoKTsKLSAgICB0aGlzLmFkZENsYXNzTmFt
ZSgidmFsdWUiKTsKLX07CisgICAgY29uc3RydWN0b3Iob2JqZWN0LCBwcm9wZXJ0eVBhdGgsIGtl
eSkKKyAgICB7CisgICAgICAgIHN1cGVyKG9iamVjdCwgcHJvcGVydHlQYXRoKTsKIAotV2ViSW5z
cGVjdG9yLk9iamVjdFRyZWVNYXBWYWx1ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBWYWx1ZVRyZWVFbGVtZW50LAot
ICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50
LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fa2V5ID0ga2V5OwogCisgICAgICAgIHRoaXMuYWRk
Q2xhc3NOYW1lKCJ2YWx1ZSIpOworICAgIH0KKyAgICAKICAgICAvLyBQcm90ZWN0ZWQKIAogICAg
IGRpc3BsYXlQcm9wZXJ0eU5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygidmFsdWUiKTsKLSAgICB9LAorICAgIH0KIAogICAgIHJlc29sdmVkVmFsdWVQ
cm9wZXJ0eVBhdGgoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVByb3BlcnR5
VHJlZUVsZW1lbnQuanMKaW5kZXggMzUxNmI2Y2MwY2ZjN2UxNWQxYTMyMTE5NjEzMzViZmIzMWY1
YmVkYS4uOGM3NjJiZDUyMjMwYjBlMzgzODBjNWRiMjNmZTIzZGU2NjM3MjI4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVBy
b3BlcnR5VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQuanMKQEAgLTIzLDU0ICsy
Myw1MiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHByb3BlcnR5
LCBwcm9wZXJ0eVBhdGgsIG1vZGUsIHByb3RvdHlwZU5hbWUpCitXZWJJbnNwZWN0b3IuT2JqZWN0
VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVlUHJvcGVydHlUcmVlRWxl
bWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50CiB7Ci0g
ICAgdGhpcy5fbW9kZSA9IG1vZGUgfHwgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUu
UHJvcGVydGllczsKLSAgICB0aGlzLl9wcm90b3R5cGVOYW1lID0gcHJvdG90eXBlTmFtZTsKLQot
ICAgIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmNhbGwodGhpcywgcHJv
cGVydHksIHByb3BlcnR5UGF0aCwgcHJvcGVydHkpOworICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5
LCBwcm9wZXJ0eVBhdGgsIG1vZGUsIHByb3RvdHlwZU5hbWUpCisgICAgeworICAgICAgICBzdXBl
cihwcm9wZXJ0eSwgcHJvcGVydHlQYXRoLCBwcm9wZXJ0eSk7CiAKLSAgICB0aGlzLm1haW5UaXRs
ZSA9IHRoaXMuX3RpdGxlRnJhZ21lbnQoKTsKLSAgICB0aGlzLmFkZENsYXNzTmFtZSgib2JqZWN0
LXRyZWUtcHJvcGVydHkiKTsKKyAgICAgICAgdGhpcy5fbW9kZSA9IG1vZGUgfHwgV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUuUHJvcGVydGllczsKKyAgICAgICAgdGhpcy5fcHJvdG90
eXBlTmFtZSA9IHByb3RvdHlwZU5hbWU7CiAKLSAgICBpZiAodGhpcy5wcm9wZXJ0eS5oYXNWYWx1
ZSgpKSB7Ci0gICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKHRoaXMucHJvcGVydHkudmFsdWUudHlw
ZSk7Ci0gICAgICAgIGlmICh0aGlzLnByb3BlcnR5LnZhbHVlLnN1YnR5cGUpCi0gICAgICAgICAg
ICB0aGlzLmFkZENsYXNzTmFtZSh0aGlzLnByb3BlcnR5LnZhbHVlLnN1YnR5cGUpOwotICAgIH0g
ZWxzZQotICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgiYWNjZXNzb3IiKTsKKyAgICAgICAgdGhp
cy5tYWluVGl0bGUgPSB0aGlzLl90aXRsZUZyYWdtZW50KCk7CisgICAgICAgIHRoaXMuYWRkQ2xh
c3NOYW1lKCJvYmplY3QtdHJlZS1wcm9wZXJ0eSIpOwogCi0gICAgaWYgKHRoaXMucHJvcGVydHku
d2FzVGhyb3duKQotICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgiaGFkLWVycm9yIik7Ci0gICAg
aWYgKHRoaXMucHJvcGVydHkubmFtZSA9PT0gIl9fcHJvdG9fXyIpCi0gICAgICAgIHRoaXMuYWRk
Q2xhc3NOYW1lKCJwcm90b3R5cGUtcHJvcGVydHkiKTsKKyAgICAgICAgaWYgKHRoaXMucHJvcGVy
dHkuaGFzVmFsdWUoKSkgeworICAgICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUodGhpcy5wcm9w
ZXJ0eS52YWx1ZS50eXBlKTsKKyAgICAgICAgICAgIGlmICh0aGlzLnByb3BlcnR5LnZhbHVlLnN1
YnR5cGUpCisgICAgICAgICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUodGhpcy5wcm9wZXJ0eS52
YWx1ZS5zdWJ0eXBlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLmFkZENsYXNz
TmFtZSgiYWNjZXNzb3IiKTsKIAotICAgIHRoaXMuX3VwZGF0ZVRvb2x0aXBzKCk7Ci0gICAgdGhp
cy5fdXBkYXRlSGFzQ2hpbGRyZW4oKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJv
cGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYklu
c3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgaWYg
KHRoaXMucHJvcGVydHkud2FzVGhyb3duKQorICAgICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUo
ImhhZC1lcnJvciIpOworICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5uYW1lID09PSAiX19wcm90
b19fIikKKyAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJwcm90b3R5cGUtcHJvcGVydHki
KTsKIAorICAgICAgICB0aGlzLl91cGRhdGVUb29sdGlwcygpOworICAgICAgICB0aGlzLl91cGRh
dGVIYXNDaGlsZHJlbigpOworICAgIH0KKyAgICAKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIG9u
cG9wdWxhdGUoKQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4oKTsKLSAgICB9
LAorICAgIH0KIAogICAgIG9uZXhwYW5kKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9wcmV2
aWV3VmlldykKICAgICAgICAgICAgIHRoaXMuX3ByZXZpZXdWaWV3LnNob3dUaXRsZSgpOwotICAg
IH0sCisgICAgfQogCiAgICAgb25jb2xsYXBzZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
cHJldmlld1ZpZXcpCiAgICAgICAgICAgICB0aGlzLl9wcmV2aWV3Vmlldy5zaG93UHJldmlldygp
OwotICAgIH0sCisgICAgfQogCiAgICAgaW52b2tlZEdldHRlcigpCiAgICAgewpAQCAtODUsNyAr
ODMsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLnJlbW92ZUNsYXNzTmFtZSgiYWNjZXNzb3IiKTsKIAogICAg
ICAgICB0aGlzLl91cGRhdGVIYXNDaGlsZHJlbigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8g
UHJpdmF0ZQogCkBAIC05OSw3ICs5Nyw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmhhc0NoaWxkcmVu
ID0gIXdhc1Rocm93biAmJiB2YWx1ZUhhc0NoaWxkcmVuOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICB0aGlzLmhhc0NoaWxkcmVuID0gIXdhc1Rocm93biAmJiB2YWx1ZUhhc0NoaWxkcmVuICYm
ICh0aGlzLnByb3BlcnR5Lm5hbWUgPT09ICJfX3Byb3RvX18iIHx8IHRoaXMuX2Fsd2F5c0Rpc3Bs
YXlBc1Byb3BlcnR5KCkpOwotICAgIH0sCisgICAgfQogCiAgICAgX3VwZGF0ZVRvb2x0aXBzKCkK
ICAgICB7CkBAIC0xMTMsNyArMTExLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0
eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGF0dHJpYnV0ZXMucHVzaCgi
d3JpdGFibGUiKTsKIAogICAgICAgICB0aGlzLmljb25FbGVtZW50LnRpdGxlID0gYXR0cmlidXRl
cy5qb2luKCIgIik7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfdGl0bGVGcmFnbWVudCgpCiAgICAg
ewpAQCAtMTI0LDcgKzEyMiw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlVGl0
bGVQcm9wZXJ0eVN0eWxlKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9jcmVhdGVUaXRsZUFQSVN0eWxlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfY3JlYXRlVGl0
bGVQcm90b3R5cGUoKQogICAgIHsKQEAgLTEzNiw3ICsxMzQsNyBAQCBXZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBuYW1lRWxl
bWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgUHJvdG90eXBlIiku
Zm9ybWF0KHRoaXMuX3Nhbml0aXplZFByb3RvdHlwZVN0cmluZyh0aGlzLnByb3BlcnR5LnZhbHVl
KSk7CiAgICAgICAgIG5hbWVFbGVtZW50LnRpdGxlID0gdGhpcy5wcm9wZXJ0eVBhdGhTdHJpbmco
dGhpcy50aGlzUHJvcGVydHlQYXRoKCkpOwogICAgICAgICByZXR1cm4gbmFtZUVsZW1lbnQ7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBfY3JlYXRlVGl0bGVQcm9wZXJ0eVN0eWxlKCkKICAgICB7CkBA
IC0xODQsNyArMTgyLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKG5hbWVFbGVt
ZW50KTsKICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHZhbHVlT3JHZXR0ZXJFbGVtZW50
KTsKICAgICAgICAgcmV0dXJuIGNvbnRhaW5lcjsKLSAgICB9LAorICAgIH0KIAogICAgIF9jcmVh
dGVUaXRsZUFQSVN0eWxlKCkKICAgICB7CkBAIC0yMjAsNyArMjE4LDcgQEAgV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiBjb250YWluZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfYWx3YXlz
RGlzcGxheUFzUHJvcGVydHkoKQogICAgIHsKQEAgLTIzNywxMiArMjM1LDEyIEBAIFdlYkluc3Bl
Y3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBfZnVuY3Rpb25Qcm9wZXJ0eVN0cmluZygpCiAgICAgewogICAgICAgICByZXR1cm4g
ImZ1bmN0aW9uIiArIHRoaXMuX2Z1bmN0aW9uUGFyYW1ldGVyU3RyaW5nKCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBfZnVuY3Rpb25QYXJhbWV0ZXJTdHJpbmcoKQogICAgIHsKQEAgLTI4Myw3ICsy
ODEsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogCiAgICAgICAgIHZhciBtYXRjaCA9IHJlc29sdmVkVmFsdWUuZGVzY3JpcHRpb24u
bWF0Y2goL15mdW5jdGlvbi4qPyhcKFteKV0rP1wpKS8pOwogICAgICAgICByZXR1cm4gbWF0Y2gg
PyBtYXRjaFsxXSA6ICIoKSI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfc2FuaXRpemVkUHJvdG90
eXBlU3RyaW5nKHZhbHVlKQogICAgIHsKQEAgLTI5Niw3ICsyOTQsNyBAQCBXZWJJbnNwZWN0b3Iu
T2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAg
cmV0dXJuICJSZWdFeHAiOwogCiAgICAgICAgIHJldHVybiB2YWx1ZS5kZXNjcmlwdGlvbi5yZXBs
YWNlKC9Qcm90b3R5cGUkLywgIiIpOwotICAgIH0sCisgICAgfQogCiAgICAgX3VwZGF0ZUNoaWxk
cmVuKCkKICAgICB7CkBAIC0zMTAsMjAgKzMwOCwyMCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJl
ZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmVzb2x2ZWRW
YWx1ZS5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHRoaXMuX3VwZGF0ZUNoaWxkcmVuSW50ZXJu
YWwuYmluZCh0aGlzLCB0aGlzLl91cGRhdGVQcm9wZXJ0aWVzLCBXZWJJbnNwZWN0b3IuT2JqZWN0
VHJlZVZpZXcuTW9kZS5BUEkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzb2x2ZWRW
YWx1ZS5nZXREaXNwbGF5YWJsZVByb3BlcnR5RGVzY3JpcHRvcnModGhpcy5fdXBkYXRlQ2hpbGRy
ZW5JbnRlcm5hbC5iaW5kKHRoaXMsIHRoaXMuX3VwZGF0ZVByb3BlcnRpZXMsIHRoaXMuX21vZGUp
KTsKLSAgICB9LAorICAgIH0KIAogICAgIF91cGRhdGVDaGlsZHJlbkludGVybmFsKGhhbmRsZXIs
IG1vZGUsIGxpc3QpCiAgICAgewogICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CiAKICAg
ICAgICAgaWYgKCFsaXN0KSB7Ci0gICAgICAgICAgICB2YXIgZXJyb3JNZXNzYWdlRWxlbWVudCA9
IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5lbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQ291bGQgbm90IGZldGNoIHByb3BlcnRpZXMuIE9iamVjdCBtYXkgbm8g
bG9uZ2VyIGV4aXN0LiIpKTsKLSAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFRyZWVF
bGVtZW50KGVycm9yTWVzc2FnZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CisgICAgICAgICAgICB2
YXIgZXJyb3JNZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5jcmVh
dGVFbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ291bGQgbm90IGZl
dGNoIHByb3BlcnRpZXMuIE9iamVjdCBtYXkgbm8gbG9uZ2VyIGV4aXN0LiIpKTsKKyAgICAgICAg
ICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudChlcnJvck1l
c3NhZ2VFbGVtZW50LCBudWxsLCBmYWxzZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGxpc3QsIHRoaXMucmVzb2x2ZWRWYWx1
ZVByb3BlcnR5UGF0aCgpLCBtb2RlKTsKLSAgICB9LAorICAgIH0KIAogICAgIF91cGRhdGVFbnRy
aWVzKGVudHJpZXMsIHByb3BlcnR5UGF0aCwgbW9kZSkKICAgICB7CkBAIC0zMzYsOCArMzM0LDgg
QEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghdGhpcy5jaGlsZHJlbi5sZW5ndGgpIHsKLSAg
ICAgICAgICAgIHZhciBlbXB0eU1lc3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVjdG9yLk9iamVjdFRy
ZWVWaWV3LmVtcHR5TWVzc2FnZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBFbnRy
aWVzLiIpKTsKLSAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFRyZWVFbGVtZW50KGVt
cHR5TWVzc2FnZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CisgICAgICAgICAgICB2YXIgZW1wdHlN
ZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5jcmVhdGVFbXB0eU1l
c3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gRW50cmllcy4iKSk7CisgICAg
ICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoZW1w
dHlNZXNzYWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IFNob3cgdGhlIHByb3RvdHlwZSBzbyB1c2VycyBjYW4gc2VlIHRoZSBBUEkuCkBAIC0zNDYsMTEg
KzM0NCwxMSBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogICAgICAgICAgICAgaWYgKHByb3BlcnR5RGVzY3JpcHRvcikKICAgICAgICAg
ICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3Bl
cnR5VHJlZUVsZW1lbnQocHJvcGVydHlEZXNjcmlwdG9yLCBwcm9wZXJ0eVBhdGgsIG1vZGUpKTsK
ICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAogICAgIF91cGRhdGVQcm9w
ZXJ0aWVzKHByb3BlcnRpZXMsIHByb3BlcnR5UGF0aCwgbW9kZSkKICAgICB7Ci0gICAgICAgIHBy
b3BlcnRpZXMuc29ydChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuQ29tcGFyZVByb3BlcnR5
RGVzY3JpcHRvcnMpOworICAgICAgICBwcm9wZXJ0aWVzLnNvcnQoV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVWaWV3LmNvbXBhcmVQcm9wZXJ0eURlc2NyaXB0b3JzKTsKIAogICAgICAgICB2YXIgcmVz
b2x2ZWRWYWx1ZSA9IHRoaXMucmVzb2x2ZWRWYWx1ZSgpOwogICAgICAgICB2YXIgaXNBcnJheSA9
IHJlc29sdmVkVmFsdWUuaXNBcnJheSgpOwpAQCAtMzgwLDggKzM3OCw4IEBAIFdlYkluc3BlY3Rv
ci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIXRoaXMuY2hpbGRyZW4ubGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YXIg
ZW1wdHlNZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5lbXB0eU1l
c3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gUHJvcGVydGllcy4iKSk7Ci0g
ICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBUcmVlRWxlbWVudChlbXB0eU1lc3NhZ2VF
bGVtZW50LCBudWxsLCBmYWxzZSkpOworICAgICAgICAgICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1l
bnQgPSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuY3JlYXRlRW1wdHlNZXNzYWdlRWxlbWVu
dChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIFByb3BlcnRpZXMuIikpOworICAgICAgICAgICAg
dGhpcy5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50KGVtcHR5TWVzc2Fn
ZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CiAgICAgICAgIH0KICAgICB9CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVNl
dEluZGV4VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9PYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudC5qcwppbmRleCA3ODVkYTYwOWQ5
NjJmNWVkZGNiNDZhYzFiZTFiY2U4YzVlMjEzNGNhLi40MzMzNDEyYjYxZjQ5YTk2ZjBhYmMxMGYy
YTdmMDQzNGE3ZTQwNzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlU2V0SW5kZXhU
cmVlRWxlbWVudC5qcwpAQCAtMjMsNDEgKzIzLDM5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVTZXRJbmRleFRyZWVF
bGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eVBhdGgpCitXZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZVNldEluZGV4VHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVlU2V0SW5kZXhUcmVl
RWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50CiB7
Ci0gICAgY29uc29sZS5hc3NlcnQob2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdCk7Ci0KLSAgICB0aGlzLl9vYmplY3QgPSBvYmplY3Q7CisgICAgY29uc3RydWN0b3Io
b2JqZWN0LCBwcm9wZXJ0eVBhdGgpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChvYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKIAotICAgIC8vIFRyZWF0
IHRoZSBzYW1lIGFzIGFuIGFycmF5LWluZGV4IGp1c3Qgd2l0aCBkaWZmZXJlbnQgc3RyaW5ncyBh
bmQgd2lkdGhzLgotICAgIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmNh
bGwodGhpcywgdGhpcy5fb2JqZWN0LCBwcm9wZXJ0eVBhdGgpOworICAgICAgICAvLyBUcmVhdCB0
aGUgc2FtZSBhcyBhbiBhcnJheS1pbmRleCBqdXN0IHdpdGggZGlmZmVyZW50IHN0cmluZ3MgYW5k
IHdpZHRocy4KKyAgICAgICAgc3VwZXIodGhpcy5fb2JqZWN0LCBwcm9wZXJ0eVBhdGgpOwogCi0g
ICAgdGhpcy5tYWluVGl0bGUgPSB0aGlzLl90aXRsZUZyYWdtZW50KCk7Ci0gICAgdGhpcy5hZGRD
bGFzc05hbWUoIm9iamVjdC10cmVlLWFycmF5LWluZGV4Iik7Ci19OworICAgICAgICB0aGlzLl9v
YmplY3QgPSBvYmplY3Q7CiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5PYmplY3RU
cmVlU2V0SW5kZXhUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmpl
Y3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5tYWluVGl0bGUg
PSB0aGlzLl90aXRsZUZyYWdtZW50KCk7CisgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJvYmpl
Y3QtdHJlZS1hcnJheS1pbmRleCIpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0
IG9iamVjdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0OwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICByZXNvbHZlZFZhbHVlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9vYmplY3Q7Ci0gICAgfSwKKyAgICB9CiAKICAgICByZXNvbHZl
ZFZhbHVlUHJvcGVydHlQYXRoKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnByb3BlcnR5
UGF0aC5hcHBlbmRTZXRJbmRleCh0aGlzLl9vYmplY3QpOwotICAgIH0sCisgICAgfQogCiAgICAg
Ly8gUHJpdmF0ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCmluZGV4IDBkNTUzZDA1YmY3NDk0Y2Vk
ZjQ5MWVhNzVjNDYwNzYwYTI5M2NhYTIuLmIzYjYxM2FhMWM3N2UyY2M5YmUyYTdlOWEwY2E4ZjY1
MWQyYmZlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCkBAIC02NCw3ICs2NCw3IEBAIFdlYklu
c3BlY3Rvci5PYmplY3RUcmVlVmlldyA9IGZ1bmN0aW9uKG9iamVjdCwgbW9kZSwgcHJvcGVydHlQ
YXRoLCBmb3JjZUV4cGFuZGluCiAKICAgICB0aGlzLl9vdXRsaW5lRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoIm9sIik7CiAgICAgdGhpcy5fb3V0bGluZUVsZW1lbnQuY2xhc3NOYW1l
ID0gIm9iamVjdC10cmVlLW91dGxpbmUiOwotICAgIHRoaXMuX291dGxpbmUgPSBuZXcgVHJlZU91
dGxpbmUodGhpcy5fb3V0bGluZUVsZW1lbnQpOworICAgIHRoaXMuX291dGxpbmUgPSBuZXcgV2Vi
SW5zcGVjdG9yLlRyZWVPdXRsaW5lKHRoaXMuX291dGxpbmVFbGVtZW50KTsKICAgICB0aGlzLl9l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX291dGxpbmVFbGVtZW50KTsKIAogICAgIC8vIEZJWE1F
OiBTdXBwb3J0IGVkaXRhYmxlIE9iamVjdFRyZWVzLgpAQCAtMjMzLDcgKzIzMyw3IEBAIFdlYklu
c3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCFsaXN0
KSB7CiAgICAgICAgICAgICB2YXIgZXJyb3JNZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5P
YmplY3RUcmVlVmlldy5lbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q291bGQgbm90IGZldGNoIHByb3BlcnRpZXMuIE9iamVjdCBtYXkgbm8gbG9uZ2VyIGV4aXN0LiIp
KTsKLSAgICAgICAgICAgIHRoaXMuX291dGxpbmUuYXBwZW5kQ2hpbGQobmV3IFRyZWVFbGVtZW50
KGVycm9yTWVzc2FnZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CisgICAgICAgICAgICB0aGlzLl9v
dXRsaW5lLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoZXJyb3JNZXNz
YWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC0yNTIsNyArMjUyLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBpZiAoIXRoaXMuX291dGxpbmUuY2hpbGRyZW4ubGVuZ3RoKSB7
CiAgICAgICAgICAgICB2YXIgZW1wdHlNZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmpl
Y3RUcmVlVmlldy5lbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8g
RW50cmllcy4iKSk7Ci0gICAgICAgICAgICB0aGlzLl9vdXRsaW5lLmFwcGVuZENoaWxkKG5ldyBU
cmVlRWxlbWVudChlbXB0eU1lc3NhZ2VFbGVtZW50LCBudWxsLCBmYWxzZSkpOworICAgICAgICAg
ICAgdGhpcy5fb3V0bGluZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50
KGVtcHR5TWVzc2FnZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBTaG93IHRoZSBwcm90b3R5cGUgc28gdXNlcnMgY2FuIHNlZSB0aGUgQVBJLgpAQCAtMjg0
LDcgKzI4NCw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgaWYgKCF0aGlzLl9vdXRsaW5lLmNoaWxkcmVuLmxlbmd0aCkgewogICAgICAgICAg
ICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcu
ZW1wdHlNZXNzYWdlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIFByb3BlcnRpZXMu
IikpOwotICAgICAgICAgICAgdGhpcy5fb3V0bGluZS5hcHBlbmRDaGlsZChuZXcgVHJlZUVsZW1l
bnQoZW1wdHlNZXNzYWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKKyAgICAgICAgICAgIHRoaXMu
X291dGxpbmUuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudChlbXB0eU1l
c3NhZ2VFbGVtZW50LCBudWxsLCBmYWxzZSkpOwogICAgICAgICB9CiAgICAgfSwKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvZmlsZU5v
ZGVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Byb2ZpbGVOb2RlVHJlZUVsZW1lbnQuanMKaW5kZXggMTFhYjI0OWEyNzZiYzgwMjhmNDUw
MWZhYjhkYTNiYjZkZTY0YjZiNC4uMjJiYmY5NDllYWFjMjRhOTNlZGEwN2Y5YmQ4OWYwN2RiM2I0
OWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUHJvZmlsZU5vZGVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Qcm9maWxlTm9kZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjEwNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDg3ICsyMyw4
NSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5Qcm9maWxlTm9kZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocHJvZmlsZU5vZGUsIGRlbGVn
YXRlKQorV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlVHJlZUVsZW1lbnQgPSBjbGFzcyBQcm9maWxl
Tm9kZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAog
ewotICAgIGNvbnNvbGUuYXNzZXJ0KHByb2ZpbGVOb2RlKTsKKyAgICBjb25zdHJ1Y3Rvcihwcm9m
aWxlTm9kZSwgZGVsZWdhdGUpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChwcm9maWxl
Tm9kZSk7CisKKyAgICAgICAgdmFyIHRpdGxlID0gcHJvZmlsZU5vZGUuZnVuY3Rpb25OYW1lOwor
ICAgICAgICB2YXIgc3VidGl0bGUgPSAiIjsKKworICAgICAgICBpZiAoIXRpdGxlKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKHByb2ZpbGVOb2RlLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVOb2RlLlR5cGUuRnVuY3Rpb246CisgICAgICAgICAgICAgICAgdGl0
bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIik7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Qcm9maWxl
Tm9kZS5UeXBlLlByb2dyYW06CisgICAgICAgICAgICAgICAgdGl0bGUgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIihwcm9ncmFtKSIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiKGFub255bW91cyBmdW5jdGlvbikiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9y
KCJVbmtub3duIFByb2ZpbGVOb2RlIHR5cGU6ICIgKyBwcm9maWxlTm9kZS50eXBlKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgdGhpcy5fcHJvZmlsZU5vZGUgPSBwcm9maWxlTm9k
ZTsKLSAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CisgICAgICAgIHZhciBz
b3VyY2VDb2RlTG9jYXRpb24gPSBwcm9maWxlTm9kZS5zb3VyY2VDb2RlTG9jYXRpb247CisgICAg
ICAgIGlmIChzb3VyY2VDb2RlTG9jYXRpb24pIHsKKyAgICAgICAgICAgIHN1YnRpdGxlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgc291cmNlQ29kZUxvY2F0
aW9uLnBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlvblN0cmluZyhzdWJ0aXRsZSwgInRleHRDb250
ZW50Iik7CisgICAgICAgIH0KIAotICAgIHZhciB0aXRsZSA9IHByb2ZpbGVOb2RlLmZ1bmN0aW9u
TmFtZTsKLSAgICB2YXIgc3VidGl0bGUgPSAiIjsKKyAgICAgICAgdmFyIGNsYXNzTmFtZTsKIAot
ICAgIGlmICghdGl0bGUpIHsKICAgICAgICAgc3dpdGNoIChwcm9maWxlTm9kZS50eXBlKSB7CiAg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlLlR5cGUuRnVuY3Rpb246Ci0gICAg
ICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGFub255bW91cyBmdW5jdGlv
bikiKTsKKyAgICAgICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVl
RWxlbWVudC5GdW5jdGlvbkljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgIGlmICghc291
cmNlQ29kZUxvY2F0aW9uKQorICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rv
ci5DYWxsRnJhbWVUcmVlRWxlbWVudC5OYXRpdmVJY29uU3R5bGVDbGFzc05hbWU7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZS5Q
cm9ncmFtOgotICAgICAgICAgICAgdGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihwcm9n
cmFtKSIpOworICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkVHJlZUVsZW1lbnQuRXZhbHVhdGVkUmVjb3JkSWNvblN0eWxlQ2xhc3M7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCIoYW5vbnltb3VzIGZ1bmN0aW9uKSIpOwotICAgICAgICAgICAgY29uc29s
ZS5lcnJvcigiVW5rbm93biBQcm9maWxlTm9kZSB0eXBlOiAiICsgcHJvZmlsZU5vZGUudHlwZSk7
CiAgICAgICAgIH0KLSAgICB9CiAKLSAgICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5f
cHJvZmlsZU5vZGUuc291cmNlQ29kZUxvY2F0aW9uOwotICAgIGlmIChzb3VyY2VDb2RlTG9jYXRp
b24pIHsKLSAgICAgICAgc3VidGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
Ci0gICAgICAgIHNvdXJjZUNvZGVMb2NhdGlvbi5wb3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25T
dHJpbmcoc3VidGl0bGUsICJ0ZXh0Q29udGVudCIpOwotICAgIH0KLQotICAgIHZhciBjbGFzc05h
bWU7Ci0KLSAgICBzd2l0Y2ggKHRoaXMuX3Byb2ZpbGVOb2RlLnR5cGUpIHsKLSAgICBjYXNlIFdl
Ykluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlLkZ1bmN0aW9uOgotICAgICAgICBjbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRnVuY3Rpb25JY29uU3R5bGVDbGFz
c05hbWU7Ci0gICAgICAgIGlmICghc291cmNlQ29kZUxvY2F0aW9uKQotICAgICAgICAgICAgY2xh
c3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50Lk5hdGl2ZUljb25TdHls
ZUNsYXNzTmFtZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuUHJvZmls
ZU5vZGUuVHlwZS5Qcm9ncmFtOgotICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5FdmFsdWF0ZWRSZWNvcmRJY29uU3R5bGVDbGFzczsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQorICAgICAgICBjb25zb2xlLmFzc2VydChjbGFzc05hbWUpOwog
Ci0gICAgY29uc29sZS5hc3NlcnQoY2xhc3NOYW1lKTsKKyAgICAgICAgLy8gVGhpcyBpcyBtb3Jl
IHRoYW4gbGlrZWx5IGFuIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9uIHdpdGggYW4gIm9uIiBwcmVm
aXggYW5kIGl0IGlzCisgICAgICAgIC8vIGFzIGxvbmcgb3IgbG9uZ2VyIHRoYW4gdGhlIHNob3J0
ZXN0IGV2ZW50IGxpc3RlbmVyIG5hbWUgLS0gIm9uY3V0Ii4KKyAgICAgICAgaWYgKHByb2ZpbGVO
b2RlLmZ1bmN0aW9uTmFtZSAmJiBwcm9maWxlTm9kZS5mdW5jdGlvbk5hbWUuc3RhcnRzV2l0aCgi
b24iKSAmJiBwcm9maWxlTm9kZS5mdW5jdGlvbk5hbWUubGVuZ3RoID49IDUpCisgICAgICAgICAg
ICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRXZlbnRMaXN0
ZW5lckljb25TdHlsZUNsYXNzTmFtZTsKIAotICAgIC8vIFRoaXMgaXMgbW9yZSB0aGFuIGxpa2Vs
eSBhbiBldmVudCBsaXN0ZW5lciBmdW5jdGlvbiB3aXRoIGFuICJvbiIgcHJlZml4IGFuZCBpdCBp
cwotICAgIC8vIGFzIGxvbmcgb3IgbG9uZ2VyIHRoYW4gdGhlIHNob3J0ZXN0IGV2ZW50IGxpc3Rl
bmVyIG5hbWUgLS0gIm9uY3V0Ii4KLSAgICBpZiAocHJvZmlsZU5vZGUuZnVuY3Rpb25OYW1lICYm
IHByb2ZpbGVOb2RlLmZ1bmN0aW9uTmFtZS5zdGFydHNXaXRoKCJvbiIpICYmIHByb2ZpbGVOb2Rl
LmZ1bmN0aW9uTmFtZS5sZW5ndGggPj0gNSkKLSAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVj
dG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFzc05hbWU7
CisgICAgICAgIHZhciBoYXNDaGlsZHJlbiA9ICEhcHJvZmlsZU5vZGUuY2hpbGROb2Rlcy5sZW5n
dGg7CiAKLSAgICB2YXIgaGFzQ2hpbGRyZW4gPSAhIXByb2ZpbGVOb2RlLmNoaWxkTm9kZXMubGVu
Z3RoOworICAgICAgICBzdXBlcihbY2xhc3NOYW1lXSwgdGl0bGUsIHN1YnRpdGxlLCBwcm9maWxl
Tm9kZSwgaGFzQ2hpbGRyZW4pOwogCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5jYWxsKHRoaXMsIFtjbGFzc05hbWVdLCB0aXRsZSwgc3VidGl0bGUsIHByb2ZpbGVOb2RlLCBo
YXNDaGlsZHJlbik7CisgICAgICAgIHRoaXMuX3Byb2ZpbGVOb2RlID0gcHJvZmlsZU5vZGU7Cisg
ICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKIAotICAgIHRoaXMuc21h
bGwgPSB0cnVlOwotICAgIHRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuID0gdHJ1ZTsKKyAgICAg
ICAgdGhpcy5zbWFsbCA9IHRydWU7CisgICAgICAgIHRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVu
ID0gdHJ1ZTsKIAotICAgIGlmIChzb3VyY2VDb2RlTG9jYXRpb24pCi0gICAgICAgIHRoaXMudG9v
bHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Qcm9maWxl
Tm9kZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLlByb2ZpbGVOb2RlVHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
R2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgaWYgKHNvdXJjZUNvZGVMb2Nh
dGlvbikKKyAgICAgICAgICAgIHRoaXMudG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBwcm9maWxlTm9kZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fcHJvZmlsZU5vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgZmlsdGVyYWJsZURhdGEoKQogICAgIHsKICAgICAgICAgdmFyIHVybCA9IHRoaXMuX3Byb2Zp
bGVOb2RlLnNvdXJjZUNvZGVMb2NhdGlvbiA/IHRoaXMuX3Byb2ZpbGVOb2RlLnNvdXJjZUNvZGVM
b2NhdGlvbi5zb3VyY2VDb2RlLnVybCA6ICIiOwogICAgICAgICByZXR1cm4ge3RleHQ6IFt0aGlz
Lm1haW5UaXRsZSwgdXJsIHx8ICIiXX07Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0
ZWQKIAotICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgb25hdHRhY2goKQogICAgIHsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gu
Y2FsbCh0aGlzKTsKIApAQCAtMTE0LDkgKzExMiw5IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9k
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgdG9vbHRpcFByZWZpeCA9
IHRoaXMubWFpblRpdGxlICsgIlxuIjsKICAgICAgICAgdGhpcy5fcHJvZmlsZU5vZGUuc291cmNl
Q29kZUxvY2F0aW9uLnBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlvblRvb2x0aXAodGhpcy5lbGVt
ZW50LCB0b29sdGlwUHJlZml4KTsKLSAgICB9LAorICAgIH0KIAotICAgIG9ucG9wdWxhdGU6IGZ1
bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5oYXND
aGlsZHJlbiB8fCAhdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4pCiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Qcm9wZXJ0aWVzU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Byb3BlcnRpZXNTZWN0aW9uLmpzCmluZGV4IDU3MTQ3MmIxNGZmOTZkOTY5ZjA4
YWM4MjQ4Yjk4NzJiZjUyOTU2YzQuLjM0NzdjYzVlYTVkMDUzZDVlMDdmYjAxYjA5YmZiMzMwYTg0
YTRmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Byb3BlcnRpZXNTZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Byb3BlcnRpZXNTZWN0aW9uLmpzCkBAIC0yOCw3ICsyOCw3IEBAIFdl
Ykluc3BlY3Rvci5Qcm9wZXJ0aWVzU2VjdGlvbiA9IGZ1bmN0aW9uKHRpdGxlLCBzdWJ0aXRsZSkK
ICAgICB0aGlzLnByb3BlcnRpZXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wi
KTsKICAgICB0aGlzLnByb3BlcnRpZXNFbGVtZW50LmNsYXNzTmFtZSA9ICJwcm9wZXJ0aWVzIHBy
b3BlcnRpZXMtdHJlZSI7CiAgICAgdGhpcy5wcm9wZXJ0aWVzRWxlbWVudC50YWJJbmRleCA9IDA7
Ci0gICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUgPSBuZXcgVHJlZU91dGxpbmUodGhpcy5w
cm9wZXJ0aWVzRWxlbWVudCk7CisgICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUgPSBuZXcg
V2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKHRoaXMucHJvcGVydGllc0VsZW1lbnQpOwogICAgIHRo
aXMucHJvcGVydGllc1RyZWVPdXRsaW5lLnNlY3Rpb24gPSB0aGlzOwogCiAgICAgV2ViSW5zcGVj
dG9yLlNlY3Rpb24uY2FsbCh0aGlzLCB0aXRsZSwgc3VidGl0bGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUcmVlRWxlbWVu
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNl
VHJlZUVsZW1lbnQuanMKaW5kZXggYjgwOThhOTU4MTEwZWYzMWIyMDY5MzZmNmU0MTdiOGU2ZmNh
M2YzNy4uZTg4OGU4MWI2OGNhMmNmODYwMDc0YTRkMjk2MzUwZGEwNDc2MGZjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUcmVl
RWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9SZXNvdXJjZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4MSArMjMsNzcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxl
bWVudCA9IGZ1bmN0aW9uKHJlc291cmNlLCByZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVFbGVtZW50ID0gY2xhc3MgUmVzb3VyY2VUcmVlRWxlbWVudCBleHRlbmRz
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQKIHsKLSAgICBjb25zb2xlLmFzc2Vy
dChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSk7Ci0KLSAgICBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50LmNhbGwodGhpcywgcmVzb3VyY2UsIFtXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZUVsZW1lbnQuUmVzb3VyY2VJY29uU3R5bGVDbGFzc05hbWUsIHJlc291cmNl
LnR5cGVdLCAiIiwgIiIsIHJlcHJlc2VudGVkT2JqZWN0IHx8IHJlc291cmNlLCBmYWxzZSk7Cisg
ICAgY29uc3RydWN0b3IocmVzb3VyY2UsIHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UpOwogCi0gICAgdGhpcy5fdXBkYXRlUmVzb3VyY2UocmVzb3VyY2UpOwotfTsKKyAgICAgICAg
c3VwZXIocmVzb3VyY2UsIFsicmVzb3VyY2UiLCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxl
bWVudC5SZXNvdXJjZUljb25TdHlsZUNsYXNzTmFtZSwgcmVzb3VyY2UudHlwZV0sICIiLCAiIiwg
cmVwcmVzZW50ZWRPYmplY3QgfHwgcmVzb3VyY2UsIGZhbHNlKTsKIAotV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUgPSAicmVzb3VyY2UiOwotV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZUVsZW1lbnQuUmVzb3VyY2VJY29uU3R5bGVDbGFzc05hbWUgPSAicmVz
b3VyY2UtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5GYWlsZWRTdHls
ZUNsYXNzTmFtZSA9ICJmYWlsZWQiOworICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZShyZXNv
dXJjZSk7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5jb21wYXJl
UmVzb3VyY2VUcmVlRWxlbWVudHMgPSBmdW5jdGlvbihhLCBiKQotewotICAgIC8vIENvbXBhcmUg
YnkgdHlwZSBmaXJzdCB0byBrZWVwIHJlc291cmNlcyBncm91cGVkIGJ5IHR5cGUgd2hlbiBub3Qg
c29ydGVkIGludG8gZm9sZGVycy4KLSAgICB2YXIgY29tcGFyaXNvblJlc3VsdCA9IGEucmVzb3Vy
Y2UudHlwZS5sb2NhbGVDb21wYXJlKGIucmVzb3VyY2UudHlwZSk7Ci0gICAgaWYgKGNvbXBhcmlz
b25SZXN1bHQgIT09IDApCi0gICAgICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0OwotCi0gICAg
Ly8gQ29tcGFyZSBhc3luYyByZXNvdXJjZSB0eXBlcyBieSB0aGVpciBmaXJzdCB0aW1lc3RhbXAg
c28gdGhleSBhcmUgaW4gY2hyb25vbG9naWNhbCBvcmRlci4KLSAgICBpZiAoYS5yZXNvdXJjZS50
eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5YSFIgfHwgYS5yZXNvdXJjZS50eXBl
ID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQpCi0gICAgICAgIHJldHVy
biBhLnJlc291cmNlLmZpcnN0VGltZXN0YW1wIC0gYi5yZXNvdXJjZS5maXJzdFRpbWVzdGFtcCB8
fCAwOwotCi0gICAgLy8gQ29tcGFyZSBieSBzdWJ0aXRsZSB3aGVuIHRoZSB0eXBlcyBhcmUgdGhl
IHNhbWUuIFRoZSBzdWJ0aXRsZSBpcyB1c2VkIHRvIHNob3cgdGhlCi0gICAgLy8gZG9tYWluIG9m
IHRoZSByZXNvdXJjZS4gVGhpcyBjYXVzZXMgcmVzb3VyY2VzIHRvIGdyb3VwIGJ5IGRvbWFpbi4g
SWYgdGhlIHJlc291cmNlCi0gICAgLy8gaXMgb24gdGhlIHNhbWUgZG9tYWluIGFzIHRoZSBmcmFt
ZSBpdCB3aWxsIGhhdmUgYW4gZW1wdHkgc3VidGl0bGUuIFRoaXMgaXMgZ29vZAotICAgIC8vIGJl
Y2F1c2UgZW1wdHkgc3RyaW5nIHNvcnRzIGZpcnN0LCBzbyB0aG9zZSB3aWxsIGFwcGVhciBiZWZv
cmUgZXh0ZXJuYWwgcmVzb3VyY2VzLgotICAgIGNvbXBhcmlzb25SZXN1bHQgPSBhLnN1YnRpdGxl
LmxvY2FsZUNvbXBhcmUoYi5zdWJ0aXRsZSk7Ci0gICAgaWYgKGNvbXBhcmlzb25SZXN1bHQgIT09
IDApCi0gICAgICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0OwotCi0gICAgLy8gQ29tcGFyZSBi
eSB0aXRsZSB3aGVuIHRoZSBzdWJ0aXRsZXMgYXJlIHRoZSBzYW1lLgotICAgIHJldHVybiBhLm1h
aW5UaXRsZS5sb2NhbGVDb21wYXJlKGIubWFpblRpdGxlKTsKLX07CisgICAgLy8gU3RhdGljCiAK
LVdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LmNvbXBhcmVGb2xkZXJBbmRSZXNvdXJj
ZVRyZWVFbGVtZW50cyA9IGZ1bmN0aW9uKGEsIGIpCi17Ci0gICAgdmFyIGFJc0ZvbGRlciA9IGEg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQ7Ci0gICAgdmFyIGJJc0Zv
bGRlciA9IGIgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQ7Ci0KLSAg
ICBpZiAoYUlzRm9sZGVyICYmICFiSXNGb2xkZXIpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBp
ZiAoIWFJc0ZvbGRlciAmJiBiSXNGb2xkZXIpCi0gICAgICAgIHJldHVybiAxOwotICAgIGlmIChh
SXNGb2xkZXIgJiYgYklzRm9sZGVyKQorICAgIHN0YXRpYyBjb21wYXJlUmVzb3VyY2VUcmVlRWxl
bWVudHMoYSwgYikKKyAgICB7CisgICAgICAgIC8vIENvbXBhcmUgYnkgdHlwZSBmaXJzdCB0byBr
ZWVwIHJlc291cmNlcyBncm91cGVkIGJ5IHR5cGUgd2hlbiBub3Qgc29ydGVkIGludG8gZm9sZGVy
cy4KKyAgICAgICAgdmFyIGNvbXBhcmlzb25SZXN1bHQgPSBhLnJlc291cmNlLnR5cGUubG9jYWxl
Q29tcGFyZShiLnJlc291cmNlLnR5cGUpOworICAgICAgICBpZiAoY29tcGFyaXNvblJlc3VsdCAh
PT0gMCkKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJpc29uUmVzdWx0OworCisgICAgICAgIC8v
IENvbXBhcmUgYXN5bmMgcmVzb3VyY2UgdHlwZXMgYnkgdGhlaXIgZmlyc3QgdGltZXN0YW1wIHNv
IHRoZXkgYXJlIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIuCisgICAgICAgIGlmIChhLnJlc291cmNl
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlhIUiB8fCBhLnJlc291cmNlLnR5
cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLldlYlNvY2tldCkKKyAgICAgICAgICAg
IHJldHVybiBhLnJlc291cmNlLmZpcnN0VGltZXN0YW1wIC0gYi5yZXNvdXJjZS5maXJzdFRpbWVz
dGFtcCB8fCAwOworCisgICAgICAgIC8vIENvbXBhcmUgYnkgc3VidGl0bGUgd2hlbiB0aGUgdHlw
ZXMgYXJlIHRoZSBzYW1lLiBUaGUgc3VidGl0bGUgaXMgdXNlZCB0byBzaG93IHRoZQorICAgICAg
ICAvLyBkb21haW4gb2YgdGhlIHJlc291cmNlLiBUaGlzIGNhdXNlcyByZXNvdXJjZXMgdG8gZ3Jv
dXAgYnkgZG9tYWluLiBJZiB0aGUgcmVzb3VyY2UKKyAgICAgICAgLy8gaXMgb24gdGhlIHNhbWUg
ZG9tYWluIGFzIHRoZSBmcmFtZSBpdCB3aWxsIGhhdmUgYW4gZW1wdHkgc3VidGl0bGUuIFRoaXMg
aXMgZ29vZAorICAgICAgICAvLyBiZWNhdXNlIGVtcHR5IHN0cmluZyBzb3J0cyBmaXJzdCwgc28g
dGhvc2Ugd2lsbCBhcHBlYXIgYmVmb3JlIGV4dGVybmFsIHJlc291cmNlcy4KKyAgICAgICAgY29t
cGFyaXNvblJlc3VsdCA9IGEuc3VidGl0bGUubG9jYWxlQ29tcGFyZShiLnN1YnRpdGxlKTsKKyAg
ICAgICAgaWYgKGNvbXBhcmlzb25SZXN1bHQgIT09IDApCisgICAgICAgICAgICByZXR1cm4gY29t
cGFyaXNvblJlc3VsdDsKKworICAgICAgICAvLyBDb21wYXJlIGJ5IHRpdGxlIHdoZW4gdGhlIHN1
YnRpdGxlcyBhcmUgdGhlIHNhbWUuCiAgICAgICAgIHJldHVybiBhLm1haW5UaXRsZS5sb2NhbGVD
b21wYXJlKGIubWFpblRpdGxlKTsKKyAgICB9CiAKLSAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZUVsZW1lbnQuY29tcGFyZVJlc291cmNlVHJlZUVsZW1lbnRzKGEsIGIpOwotfTsK
KyAgICBzdGF0aWMgY29tcGFyZUZvbGRlckFuZFJlc291cmNlVHJlZUVsZW1lbnRzKGEsIGIpCisg
ICAgeworICAgICAgICB2YXIgYUlzRm9sZGVyID0gYSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5G
b2xkZXJUcmVlRWxlbWVudDsKKyAgICAgICAgdmFyIGJJc0ZvbGRlciA9IGIgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQ7CiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgaWYgKGFJc0ZvbGRlciAmJiAhYklzRm9s
ZGVyKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoIWFJc0ZvbGRlciAmJiBi
SXNGb2xkZXIpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYgKGFJc0ZvbGRlciAm
JiBiSXNGb2xkZXIpCisgICAgICAgICAgICByZXR1cm4gYS5tYWluVGl0bGUubG9jYWxlQ29tcGFy
ZShiLm1haW5UaXRsZSk7CisKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVFbGVtZW50LmNvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50cyhhLCBiKTsKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAogICAgIGdldCByZXNvdXJjZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fcmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZmlsdGVyYWJsZURhdGEo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHt0ZXh0OiB0aGlzLl9yZXNvdXJjZS51cmx9OwotICAg
IH0sCisgICAgfQogCi0gICAgb25kYmxjbGljazogZnVuY3Rpb24oKQorICAgIG9uZGJsY2xpY2so
KQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lm9wZW5Jbk5ld1RhYih0aGlz
Ll9yZXNvdXJjZS51cmwpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkIChVc2Vk
IGJ5IEZyYW1lVHJlZUVsZW1lbnQpCiAKLSAgICBfdXBkYXRlUmVzb3VyY2U6IGZ1bmN0aW9uKHJl
c291cmNlKQorICAgIF91cGRhdGVSZXNvdXJjZShyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKTsK
IApAQCAtMTI1LDExICsxMjEsMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91cGRhdGVUaXRsZXMoKTsKICAgICAgICAgdGhp
cy5fdXBkYXRlU3RhdHVzKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRvb2xUaXAoKTsKLSAgICB9
LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgX3VwZGF0ZVRpdGxlczogZnVuY3Rp
b24oKQorICAgIF91cGRhdGVUaXRsZXMoKQogICAgIHsKICAgICAgICAgdmFyIGZyYW1lID0gdGhp
cy5fcmVzb3VyY2UucGFyZW50RnJhbWU7CiAgICAgICAgIHZhciBpc01haW5SZXNvdXJjZSA9IHRo
aXMuX3Jlc291cmNlLmlzTWFpblJlc291cmNlKCk7CkBAIC0xNTIsMTEgKzE0OCwxMSBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYg
KG9sZE1haW5UaXRsZSAhPT0gdGhpcy5tYWluVGl0bGUpCiAgICAgICAgICAgICB0aGlzLmNhbGxG
aXJzdEFuY2VzdG9yRnVuY3Rpb24oImRlc2NlbmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50TWFpblRp
dGxlRGlkQ2hhbmdlIiwgW3RoaXMsIG9sZE1haW5UaXRsZV0pOwotICAgIH0sCisgICAgfQogCiAg
ICAgLy8gUHJpdmF0ZQogCi0gICAgX3VwZGF0ZVN0YXR1czogZnVuY3Rpb24oKQorICAgIF91cGRh
dGVTdGF0dXMoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3Jlc291cmNlLmZhaWxlZCkKICAg
ICAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVt
ZW50LkZhaWxlZFN0eWxlQ2xhc3NOYW1lKTsKQEAgLTE3NCwyMCArMTcwLDIwIEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBz
cGlubmVyID0gbmV3IFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyOwog
ICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBzcGlubmVyLmVsZW1lbnQ7CiAgICAgICAgIH0KLSAg
ICB9LAorICAgIH0KIAotICAgIF91cGRhdGVUb29sVGlwOiBmdW5jdGlvbigpCisgICAgX3VwZGF0
ZVRvb2xUaXAoKQogICAgIHsKICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5fcmVzb3VyY2Uu
dXJsOwotICAgIH0sCisgICAgfQogCi0gICAgX3VybERpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3VybERpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRp
dGxlcygpOwogICAgICAgICB0aGlzLl91cGRhdGVUb29sVGlwKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfdHlwZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3R5cGVEaWRDaGFuZ2Uo
ZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnJlbW92ZUNsYXNzTmFtZShldmVudC5kYXRhLm9s
ZFR5cGUpOwogICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSh0aGlzLl9yZXNvdXJjZS50eXBlKTsK
QEAgLTE5NSwzICsxOTEsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY2FsbEZpcnN0QW5jZXN0b3JGdW5jdGlvbigiZGVzY2Vu
ZGFudFJlc291cmNlVHJlZUVsZW1lbnRUeXBlRGlkQ2hhbmdlIiwgW3RoaXMsIGV2ZW50LmRhdGEu
b2xkVHlwZV0pOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50
LlJlc291cmNlSWNvblN0eWxlQ2xhc3NOYW1lID0gInJlc291cmNlLWljb24iOworV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZUVsZW1lbnQuRmFpbGVkU3R5bGVDbGFzc05hbWUgPSAiZmFpbGVkIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nj
cmlwdFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU2NyaXB0VHJlZUVsZW1lbnQuanMKaW5kZXggOTIwY2ZhMjBkZWIzZWVmNzAzMDU0MDQ1
Y2JiNDIxNDYxNDBmM2E5Yy4uYjgzZDI2MDM2MmYxMzYwODVmZmI3OTMyYWIzZjRhZGM1Yzk4MDRi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U2NyaXB0VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2NyaXB0VHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDM0ICsyMywzMCBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRU
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKHNjcmlwdCkKK1dlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxl
bWVudCA9IGNsYXNzIFNjcmlwdFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHNjcmlwdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5TY3JpcHQpOwotCi0gICAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUcmVl
RWxlbWVudC5jYWxsKHRoaXMsIHNjcmlwdCwgV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50
LlN0eWxlQ2xhc3NOYW1lLCBudWxsLCBudWxsLCBzY3JpcHQsIGZhbHNlKTsKKyAgICBjb25zdHJ1
Y3RvcihzY3JpcHQpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChzY3JpcHQgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0KTsKIAotICAgIHRoaXMubWFpblRpdGxlID0gc2NyaXB0
LmRpc3BsYXlOYW1lOworICAgICAgICBzdXBlcihzY3JpcHQsICJzY3JpcHQiLCBudWxsLCBudWxs
LCBzY3JpcHQsIGZhbHNlKTsKIAotICAgIGlmIChzY3JpcHQudXJsKSB7Ci0gICAgICAgIC8vIFNo
b3cgdGhlIGhvc3QgYXMgdGhlIHN1YnRpdGxlIGlmIGl0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBt
YWluIHRpdGxlLgotICAgICAgICB2YXIgc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5h
bWVGb3JIb3N0KHNjcmlwdC51cmxDb21wb25lbnRzLmhvc3QpOwotICAgICAgICB0aGlzLnN1YnRp
dGxlID0gdGhpcy5tYWluVGl0bGUgIT09IHN1YnRpdGxlID8gc3VidGl0bGUgOiBudWxsOworICAg
ICAgICB0aGlzLm1haW5UaXRsZSA9IHNjcmlwdC5kaXNwbGF5TmFtZTsKIAotICAgICAgICB0aGlz
LnRvb2x0aXAgPSBzY3JpcHQudXJsOworICAgICAgICBpZiAoc2NyaXB0LnVybCkgeworICAgICAg
ICAgICAgLy8gU2hvdyB0aGUgaG9zdCBhcyB0aGUgc3VidGl0bGUgaWYgaXQgaXMgZGlmZmVyZW50
IGZyb20gdGhlIG1haW4gdGl0bGUuCisgICAgICAgICAgICB2YXIgc3VidGl0bGUgPSBXZWJJbnNw
ZWN0b3IuZGlzcGxheU5hbWVGb3JIb3N0KHNjcmlwdC51cmxDb21wb25lbnRzLmhvc3QpOworICAg
ICAgICAgICAgdGhpcy5zdWJ0aXRsZSA9IHRoaXMubWFpblRpdGxlICE9PSBzdWJ0aXRsZSA/IHN1
YnRpdGxlIDogbnVsbDsKIAotICAgICAgICB0aGlzLmFkZENsYXNzTmFtZShXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlRWxlbWVudC5SZXNvdXJjZUljb25TdHlsZUNsYXNzTmFtZSk7Ci0gICAgICAg
IHRoaXMuYWRkQ2xhc3NOYW1lKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKFdlYkluc3BlY3Rvci5TY3JpcHRU
cmVlRWxlbWVudC5Bbm9ueW1vdXNTY3JpcHRJY29uU3R5bGVDbGFzc05hbWUpOworICAgICAgICAg
ICAgdGhpcy50b29sdGlwID0gc2NyaXB0LnVybDsKIAotICAgIHRoaXMuX3NjcmlwdCA9IHNjcmlw
dDsKLX07CisgICAgICAgICAgICB0aGlzLmFkZENsYXNzTmFtZShXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlRWxlbWVudC5SZXNvdXJjZUljb25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0
aGlzLmFkZENsYXNzTmFtZShXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKFdlYkluc3BlY3Rvci5T
Y3JpcHRUcmVlRWxlbWVudC5Bbm9ueW1vdXNTY3JpcHRJY29uU3R5bGVDbGFzc05hbWUpOwogCi1X
ZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQuQW5vbnltb3VzU2NyaXB0SWNvblN0eWxlQ2xh
c3NOYW1lID0gImFub255bW91cy1zY3JpcHQtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuU2NyaXB0VHJl
ZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUgPSAic2NyaXB0IjsKLQotV2ViSW5zcGVjdG9yLlNjcmlw
dFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlNjcmlwdFRyZWVFbGVtZW50LAorICAgICAgICB0aGlzLl9zY3JpcHQgPSBzY3JpcHQ7CisgICAg
fQogCiAgICAgLy8gUHVibGljCiAKQEAgLTYwLDQgKzU2LDQgQEAgV2ViSW5zcGVjdG9yLlNjcmlw
dFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuU2Ny
aXB0VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50
LkFub255bW91c1NjcmlwdEljb25TdHlsZUNsYXNzTmFtZSA9ICJhbm9ueW1vdXMtc2NyaXB0LWlj
b24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5qcwppbmRleCA2N2EzOGU1
YzUwNGJjYzA1MWIwNjAzNWIxNDdmNDBiZmRkZjUyNjE1Li4xNDRlZjI4NWZhNTQzZmRhNmI1MTQw
ODliM2M3ODFiY2NiYzE1ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hSZXN1bHRUcmVlRWxlbWVu
dC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsNjcgKzIzLDY2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50ID0gZnVuY3Rpb24o
cmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQg
PSBjbGFzcyBTZWFyY2hSZXN1bHRUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5HZW5l
cmFsVHJlZUVsZW1lbnQKIHsKLSAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01TZWFyY2hNYXRjaE9iamVjdCB8fCByZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlU2VhcmNoTWF0Y2hPYmpl
Y3QpOworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
RE9NU2VhcmNoTWF0Y2hPYmplY3QgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0KTsKIAotICAgIHZhciB0aXRsZSA9
IFdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC50cnVuY2F0ZUFuZEhpZ2hsaWdo
dFRpdGxlKHJlcHJlc2VudGVkT2JqZWN0LnRpdGxlLCByZXByZXNlbnRlZE9iamVjdC5zZWFyY2hU
ZXJtLCByZXByZXNlbnRlZE9iamVjdC5zb3VyY2VDb2RlVGV4dFJhbmdlKTsKKyAgICAgICAgdmFy
IHRpdGxlID0gV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LnRydW5jYXRlQW5k
SGlnaGxpZ2h0VGl0bGUocmVwcmVzZW50ZWRPYmplY3QudGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0
LnNlYXJjaFRlcm0sIHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVUZXh0UmFuZ2UpOwogCi0g
ICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHJlcHJlc2VudGVk
T2JqZWN0LmNsYXNzTmFtZSwgdGl0bGUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7
Ci0gICAgdGhpcy5zbWFsbCA9IHRydWU7Ci19OworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9i
amVjdC5jbGFzc05hbWUsIHRpdGxlLCBudWxsLCByZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOwog
Ci1XZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuQ2hhcmFjdGVyc1RvU2hvd0Jl
Zm9yZVNlYXJjaE1hdGNoID0gMTU7Ci1XZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1l
bnQuQ2hhcmFjdGVyc1RvU2hvd0FmdGVyU2VhcmNoTWF0Y2ggPSA1MDsKLVdlYkluc3BlY3Rvci5T
ZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5IaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lID0gImhpZ2hs
aWdodGVkIjsKKyAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7CisgICAgfQogCi1XZWJJbnNwZWN0
b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQsCisgICAgLy8gU3RhdGljCiAK
LSAgICAvLyBQdWJsaWMKLQotICAgIGdldCBmaWx0ZXJhYmxlRGF0YSgpCisgICAgc3RhdGljIHRy
dW5jYXRlQW5kSGlnaGxpZ2h0VGl0bGUodGl0bGUsIHNlYXJjaFRlcm0sIHNvdXJjZUNvZGVUZXh0
UmFuZ2UpCiAgICAgewotICAgICAgICByZXR1cm4ge3RleHQ6IHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QudGl0bGV9OwotICAgIH0KLX07CisgICAgICAgIC8vIFVzZSB0aGUgb3JpZ2luYWwgbG9jYXRp
b24sIHNpbmNlIHRob3NlIGxpbmUvY29sdW1uIG9mZnNldHMgbWF0Y2ggdGhlIGxpbmUgdGV4dCBp
biB0aXRsZS4KKyAgICAgICAgdmFyIHRleHRSYW5nZSA9IHNvdXJjZUNvZGVUZXh0UmFuZ2UudGV4
dFJhbmdlOwogCi1XZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOwor
ICAgICAgICB2YXIgc2VhcmNoVGVybUluZGV4ID0gdGV4dFJhbmdlLnN0YXJ0Q29sdW1uOwogCi1X
ZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQudHJ1bmNhdGVBbmRIaWdobGlnaHRU
aXRsZSA9IGZ1bmN0aW9uKHRpdGxlLCBzZWFyY2hUZXJtLCBzb3VyY2VDb2RlVGV4dFJhbmdlKQot
ewotICAgIC8vIFVzZSB0aGUgb3JpZ2luYWwgbG9jYXRpb24sIHNpbmNlIHRob3NlIGxpbmUvY29s
dW1uIG9mZnNldHMgbWF0Y2ggdGhlIGxpbmUgdGV4dCBpbiB0aXRsZS4KLSAgICB2YXIgdGV4dFJh
bmdlID0gc291cmNlQ29kZVRleHRSYW5nZS50ZXh0UmFuZ2U7CisgICAgICAgIC8vIFdlIHNob3Vs
ZCBvbmx5IGhhdmUgb25lIGxpbmUgdGV4dCByYW5nZXMsIHNvIG1ha2Ugc3VyZSB0aGF0IGlzIHRo
ZSBjYXNlLgorICAgICAgICBjb25zb2xlLmFzc2VydCh0ZXh0UmFuZ2Uuc3RhcnRMaW5lID09PSB0
ZXh0UmFuZ2UuZW5kTGluZSk7CiAKLSAgICB2YXIgc2VhcmNoVGVybUluZGV4ID0gdGV4dFJhbmdl
LnN0YXJ0Q29sdW1uOworICAgICAgICAvLyBTaG93IHNvbWUgY2hhcmFjdGVycyBiZWZvcmUgdGhl
IG1hdGNoaW5nIHRleHQgKGlmIHRoZXJlIGFyZSBlbm91Z2gpIGZvciBjb250ZXh0LiBUcmVlT3V0
bGluZSB0YWtlcyBjYXJlIG9mIHRoZSB0cnVuY2F0aW5nCisgICAgICAgIC8vIGF0IHRoZSBlbmQg
b2YgdGhlIHN0cmluZy4KKyAgICAgICAgdmFyIG1vZGlmaWVkVGl0bGUgPSBudWxsOworICAgICAg
ICBpZiAoc2VhcmNoVGVybUluZGV4ID4gV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVt
ZW50LkNoYXJhY3RlcnNUb1Nob3dCZWZvcmVTZWFyY2hNYXRjaCkgeworICAgICAgICAgICAgbW9k
aWZpZWRUaXRsZSA9ICJcdTIwMjYiICsgdGl0bGUuc3Vic3RyaW5nKHNlYXJjaFRlcm1JbmRleCAt
IFdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5DaGFyYWN0ZXJzVG9TaG93QmVm
b3JlU2VhcmNoTWF0Y2gpOworICAgICAgICAgICAgc2VhcmNoVGVybUluZGV4ID0gV2ViSW5zcGVj
dG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LkNoYXJhY3RlcnNUb1Nob3dCZWZvcmVTZWFyY2hN
YXRjaCArIDE7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbW9kaWZpZWRUaXRsZSA9IHRp
dGxlOwogCi0gICAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSBvbmUgbGluZSB0ZXh0IHJhbmdlcywg
c28gbWFrZSBzdXJlIHRoYXQgaXMgdGhlIGNhc2UuCi0gICAgY29uc29sZS5hc3NlcnQodGV4dFJh
bmdlLnN0YXJ0TGluZSA9PT0gdGV4dFJhbmdlLmVuZExpbmUpOworICAgICAgICAvLyBUcnVuY2F0
ZSB0aGUgdGFpbCBvZiB0aGUgdGl0bGUgc28gdGhlIHRvb2x0aXAgaXNuJ3Qgc28gbGFyZ2UuCisg
ICAgICAgIG1vZGlmaWVkVGl0bGUgPSBtb2RpZmllZFRpdGxlLnRyaW1FbmQoc2VhcmNoVGVybUlu
ZGV4ICsgc2VhcmNoVGVybS5sZW5ndGggKyBXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVs
ZW1lbnQuQ2hhcmFjdGVyc1RvU2hvd0FmdGVyU2VhcmNoTWF0Y2gpOwogCi0gICAgLy8gU2hvdyBz
b21lIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBtYXRjaGluZyB0ZXh0IChpZiB0aGVyZSBhcmUgZW5v
dWdoKSBmb3IgY29udGV4dC4gVHJlZU91dGxpbmUgdGFrZXMgY2FyZSBvZiB0aGUgdHJ1bmNhdGlu
ZwotICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KLSAgICB2YXIgbW9kaWZpZWRUaXRs
ZSA9IG51bGw7Ci0gICAgaWYgKHNlYXJjaFRlcm1JbmRleCA+IFdlYkluc3BlY3Rvci5TZWFyY2hS
ZXN1bHRUcmVlRWxlbWVudC5DaGFyYWN0ZXJzVG9TaG93QmVmb3JlU2VhcmNoTWF0Y2gpIHsKLSAg
ICAgICAgbW9kaWZpZWRUaXRsZSA9ICJcdTIwMjYiICsgdGl0bGUuc3Vic3RyaW5nKHNlYXJjaFRl
cm1JbmRleCAtIFdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5DaGFyYWN0ZXJz
VG9TaG93QmVmb3JlU2VhcmNoTWF0Y2gpOwotICAgICAgICBzZWFyY2hUZXJtSW5kZXggPSBXZWJJ
bnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuQ2hhcmFjdGVyc1RvU2hvd0JlZm9yZVNl
YXJjaE1hdGNoICsgMTsKLSAgICB9IGVsc2UKLSAgICAgICAgbW9kaWZpZWRUaXRsZSA9IHRpdGxl
OworICAgICAgICBjb25zb2xlLmFzc2VydChtb2RpZmllZFRpdGxlLnN1YnN0cmluZyhzZWFyY2hU
ZXJtSW5kZXgsIHNlYXJjaFRlcm1JbmRleCArIHNlYXJjaFRlcm0ubGVuZ3RoKS50b0xvd2VyQ2Fz
ZSgpID09PSBzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpOwogCi0gICAgLy8gVHJ1bmNhdGUgdGhl
IHRhaWwgb2YgdGhlIHRpdGxlIHNvIHRoZSB0b29sdGlwIGlzbid0IHNvIGxhcmdlLgotICAgIG1v
ZGlmaWVkVGl0bGUgPSBtb2RpZmllZFRpdGxlLnRyaW1FbmQoc2VhcmNoVGVybUluZGV4ICsgc2Vh
cmNoVGVybS5sZW5ndGggKyBXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuQ2hh
cmFjdGVyc1RvU2hvd0FmdGVyU2VhcmNoTWF0Y2gpOworICAgICAgICB2YXIgaGlnaGxpZ2h0ZWRU
aXRsZSA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKIAotICAgIGNvbnNvbGUu
YXNzZXJ0KG1vZGlmaWVkVGl0bGUuc3Vic3RyaW5nKHNlYXJjaFRlcm1JbmRleCwgc2VhcmNoVGVy
bUluZGV4ICsgc2VhcmNoVGVybS5sZW5ndGgpLnRvTG93ZXJDYXNlKCkgPT09IHNlYXJjaFRlcm0u
dG9Mb3dlckNhc2UoKSk7CisgICAgICAgIGhpZ2hsaWdodGVkVGl0bGUuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUobW9kaWZpZWRUaXRsZS5zdWJzdHJpbmcoMCwgc2VhcmNoVGVy
bUluZGV4KSkpOwogCi0gICAgdmFyIGhpZ2hsaWdodGVkVGl0bGUgPSBkb2N1bWVudC5jcmVhdGVE
b2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgIHZhciBoaWdobGlnaHRTcGFuID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBoaWdobGlnaHRTcGFuLmNsYXNzTmFtZSA9
ICJoaWdobGlnaHRlZCI7CisgICAgICAgIGhpZ2hsaWdodFNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUobW9kaWZpZWRUaXRsZS5zdWJzdHJpbmcoc2VhcmNoVGVybUluZGV4
LCBzZWFyY2hUZXJtSW5kZXggKyBzZWFyY2hUZXJtLmxlbmd0aCkpKTsKKyAgICAgICAgaGlnaGxp
Z2h0ZWRUaXRsZS5hcHBlbmRDaGlsZChoaWdobGlnaHRTcGFuKTsKIAotICAgIGhpZ2hsaWdodGVk
VGl0bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobW9kaWZpZWRUaXRsZS5z
dWJzdHJpbmcoMCwgc2VhcmNoVGVybUluZGV4KSkpOworICAgICAgICBoaWdobGlnaHRlZFRpdGxl
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1vZGlmaWVkVGl0bGUuc3Vic3Ry
aW5nKHNlYXJjaFRlcm1JbmRleCArIHNlYXJjaFRlcm0ubGVuZ3RoKSkpOwogCi0gICAgdmFyIGhp
Z2hsaWdodFNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgaGlnaGxp
Z2h0U3Bhbi5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQu
SGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZTsKLSAgICBoaWdobGlnaHRTcGFuLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1vZGlmaWVkVGl0bGUuc3Vic3RyaW5nKHNlYXJjaFRl
cm1JbmRleCwgc2VhcmNoVGVybUluZGV4ICsgc2VhcmNoVGVybS5sZW5ndGgpKSk7Ci0gICAgaGln
aGxpZ2h0ZWRUaXRsZS5hcHBlbmRDaGlsZChoaWdobGlnaHRTcGFuKTsKKyAgICAgICAgcmV0dXJu
IGhpZ2hsaWdodGVkVGl0bGU7CisgICAgfQogCi0gICAgaGlnaGxpZ2h0ZWRUaXRsZS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtb2RpZmllZFRpdGxlLnN1YnN0cmluZyhzZWFy
Y2hUZXJtSW5kZXggKyBzZWFyY2hUZXJtLmxlbmd0aCkpKTsKKyAgICAvLyBQdWJsaWMKIAotICAg
IHJldHVybiBoaWdobGlnaHRlZFRpdGxlOworICAgIGdldCBmaWx0ZXJhYmxlRGF0YSgpCisgICAg
eworICAgICAgICByZXR1cm4ge3RleHQ6IHRoaXMucmVwcmVzZW50ZWRPYmplY3QudGl0bGV9Owor
ICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5DaGFyYWN0
ZXJzVG9TaG93QmVmb3JlU2VhcmNoTWF0Y2ggPSAxNTsKK1dlYkluc3BlY3Rvci5TZWFyY2hSZXN1
bHRUcmVlRWxlbWVudC5DaGFyYWN0ZXJzVG9TaG93QWZ0ZXJTZWFyY2hNYXRjaCA9IDUwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNl
Q29kZVRpbWVsaW5lVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVudC5qcwppbmRleCAwYzYz
NTU2MzA2MmFiYjVlZjgwYzkxOTkyOGEyYjMzNmM2ZWY3MzRkLi4xZDM1ODBhZDM2YjQ4MjI5YmY3
OTA4N2U5M2QwZGU1YzJiMWJjMTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVudC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGlt
ZWxpbmVUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjQgKzIzLDI1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZVRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24oc291cmNlQ29kZVRpbWVsaW5lLCBzdWJ0aXRsZU5hbWVTdHls
ZSwgaW5jbHVkZVRpbWVySWRlbnRpZmllckluTWFpblRpdGxlKQorV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUaW1lbGluZVRyZWVFbGVtZW50ID0gY2xhc3MgU291cmNlQ29kZVRpbWVsaW5lVHJlZUVs
ZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudAogewot
ICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGVUaW1lbGluZSk7Ci0KLSAgICB0aGlzLl9zb3Vy
Y2VDb2RlVGltZWxpbmUgPSBzb3VyY2VDb2RlVGltZWxpbmU7CisgICAgY29uc3RydWN0b3Ioc291
cmNlQ29kZVRpbWVsaW5lLCBzdWJ0aXRsZU5hbWVTdHlsZSwgaW5jbHVkZVRpbWVySWRlbnRpZmll
ckluTWFpblRpdGxlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZVRp
bWVsaW5lKTsKIAotICAgIHN1YnRpdGxlTmFtZVN0eWxlID0gc3VidGl0bGVOYW1lU3R5bGUgfHwg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5OYW1lU3R5bGUuTm9uZTsKKyAgICAgICAg
c3VidGl0bGVOYW1lU3R5bGUgPSBzdWJ0aXRsZU5hbWVTdHlsZSB8fCBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZUxvY2F0aW9uLk5hbWVTdHlsZS5Ob25lOwogCi0gICAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBzb3VyY2VDb2RlVGltZWxpbmUucmVjb3Jk
c1swXSwgc3VidGl0bGVOYW1lU3R5bGUsIGluY2x1ZGVUaW1lcklkZW50aWZpZXJJbk1haW5UaXRs
ZSwgc291cmNlQ29kZVRpbWVsaW5lLnNvdXJjZUNvZGVMb2NhdGlvbiwgc291cmNlQ29kZVRpbWVs
aW5lKTsKLX07CisgICAgICAgIHN1cGVyKHNvdXJjZUNvZGVUaW1lbGluZS5yZWNvcmRzWzBdLCBz
dWJ0aXRsZU5hbWVTdHlsZSwgaW5jbHVkZVRpbWVySWRlbnRpZmllckluTWFpblRpdGxlLCBzb3Vy
Y2VDb2RlVGltZWxpbmUuc291cmNlQ29kZUxvY2F0aW9uLCBzb3VyY2VDb2RlVGltZWxpbmUpOwog
Ci1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lVHJlZUVs
ZW1lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxl
bWVudC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVUaW1lbGluZSA9IHNvdXJj
ZUNvZGVUaW1lbGluZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHJlY29yZDogdW5k
ZWZpbmVkLAorICAgIGdldCByZWNvcmQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHVuZGVmaW5l
ZDsKKyAgICB9CiAKICAgICBnZXQgc291cmNlQ29kZVRpbWVsaW5lKCkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2Rl
VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Tb3VyY2VDb2RlVHJlZUVsZW1lbnQuanMKaW5kZXggODcwM2Q3YjM5MzcwNTU0NDMyZmQzMzY3
ZGIxNTNjYzEyMmFiZGFhNS4uMzU3MzQ1MGRlNzM5MjM0ZjljY2JlZGMzOTlkOWZiZTAyYWFhYmI2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U291cmNlQ29kZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjQgKzIzLDIyIEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHNvdXJjZUNvZGUsIGNsYXNzTmFtZXMs
IHRpdGxlLCBzdWJ0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKQorV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUcmVlRWxlbWVudCA9IGNsYXNzIFNvdXJjZUNvZGVUcmVlRWxlbWVu
dCBleHRlbmRzIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQKIHsKLSAgICBjb25z
b2xlLmFzc2VydChzb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUp
OworICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGUsIGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRs
ZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlKTsK
IAotICAgIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBjbGFz
c05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0IHx8IHNvdXJjZUNvZGUs
IGhhc0NoaWxkcmVuKTsKKyAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxl
LCByZXByZXNlbnRlZE9iamVjdCB8fCBzb3VyY2VDb2RlLCBoYXNDaGlsZHJlbik7CiAKLSAgICB0
aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7CiAKLSAgICB0aGlz
Ll91cGRhdGVTb3VyY2VDb2RlKHNvdXJjZUNvZGUpOwotfTsKLQotV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
Rm9sZGVyaXplZFRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fdXBkYXRlU291
cmNlQ29kZShzb3VyY2VDb2RlKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHVwZGF0
ZVNvdXJjZU1hcFJlc291cmNlczogZnVuY3Rpb24oKQorICAgIHVwZGF0ZVNvdXJjZU1hcFJlc291
cmNlcygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMudHJlZU91dGxpbmUgfHwgIXRoaXMudHJl
ZU91dGxpbmUuaW5jbHVkZVNvdXJjZU1hcFJlc291cmNlQ2hpbGRyZW4pCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC01MCwxOCArNDgsMTggQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuKQogICAg
ICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8g
T3ZlcnJpZGVzIGZyb20gVHJlZUVsZW1lbnQKIAotICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisg
ICAgb25hdHRhY2goKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxl
bWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLnVwZGF0
ZVNvdXJjZU1hcFJlc291cmNlcygpOwotICAgIH0sCisgICAgfQogCi0gICAgb25wb3B1bGF0ZTog
ZnVuY3Rpb24oKQorICAgIG9ucG9wdWxhdGUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnRy
ZWVPdXRsaW5lIHx8ICF0aGlzLnRyZWVPdXRsaW5lLmluY2x1ZGVTb3VyY2VNYXBSZXNvdXJjZUNo
aWxkcmVuKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDExICsxMjgsMTEgQEAgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKQogICAgICAgICAgICAg
ZmluZEFuZENvbWJpbmVGb2xkZXJDaGFpbnModGhpcy5jaGlsZHJlbltpXSwgbnVsbCk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGNyZWF0ZUZvbGRlcnNBc05lZWRl
ZEZvclN1YnBhdGg6IGZ1bmN0aW9uKHN1YnBhdGgpCisgICAgY3JlYXRlRm9sZGVyc0FzTmVlZGVk
Rm9yU3VicGF0aChzdWJwYXRoKQogICAgIHsKICAgICAgICAgaWYgKCFzdWJwYXRoKQogICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xNjksOSArMTY3LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1
cm4gY3VycmVudEZvbGRlclRyZWVFbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgZGVzY2Vu
ZGFudFJlc291cmNlVHJlZUVsZW1lbnRUeXBlRGlkQ2hhbmdlOiBmdW5jdGlvbihjaGlsZFRyZWVF
bGVtZW50LCBvbGRUeXBlKQorICAgIGRlc2NlbmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50VHlwZURp
ZENoYW5nZShjaGlsZFRyZWVFbGVtZW50LCBvbGRUeXBlKQogICAgIHsKICAgICAgICAgLy8gQ2Fs
bGVkIGJ5IGRlc2NlbmRhbnQgU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudHMuCiAKQEAgLTE4
NSwxMSArMTgzLDExIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogCiAgICAgICAgIGlmICh3YXNTZWxlY3RlZCkKICAgICAgICAgICAgIGNoaWxkVHJl
ZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlKTsKLSAgICB9
LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZCAoUmVzb3VyY2VUcmVlRWxlbWVudCBjYWxscyB0
aGlzIHdoZW4gaXRzIFJlc291cmNlIGNoYW5nZXMgZHluYW1pY2FsbHkgZm9yIEZyYW1lcykKIAot
ICAgIF91cGRhdGVTb3VyY2VDb2RlOiBmdW5jdGlvbihzb3VyY2VDb2RlKQorICAgIF91cGRhdGVT
b3VyY2VDb2RlKHNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChzb3Vy
Y2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VNYXBSZXNv
dXJjZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudC5qcwppbmRleCA1ZDFiNDg0NDY3YmUy
YjFmMDFkZWNmNzc0MTc5M2E4YjIxNTljNjAzLi4wODcyMmEyZjA1MzI1NDBlZDQxMGZmNmI2ODI5
OTIzNGExMTI4NjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZU1hcFJlc291cmNlVHJlZUVs
ZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDI1ICsyMywyMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50ID0g
ZnVuY3Rpb24oc291cmNlTWFwUmVzb3VyY2UsIHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVj
dG9yLlNvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQgPSBjbGFzcyBTb3VyY2VNYXBSZXNvdXJj
ZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQKIHsK
LSAgICBjb25zb2xlLmFzc2VydChzb3VyY2VNYXBSZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VNYXBSZXNvdXJjZSk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
RWxlbWVudC5jYWxsKHRoaXMsIHNvdXJjZU1hcFJlc291cmNlKTsKLQotICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMucmVzb3VyY2UgPT09IHNvdXJjZU1hcFJlc291cmNlKTsKKyAgICBjb25zdHJ1Y3Rv
cihzb3VyY2VNYXBSZXNvdXJjZSwgcmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydChzb3VyY2VNYXBSZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5T
b3VyY2VNYXBSZXNvdXJjZSk7CiAKLSAgICB0aGlzLmFkZENsYXNzTmFtZShXZWJJbnNwZWN0b3Iu
U291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSk7Ci19OworICAgICAg
ICBzdXBlcihzb3VyY2VNYXBSZXNvdXJjZSk7CiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNv
dXJjZVRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lID0gInNvdXJjZS1tYXAtcmVzb3VyY2UiOwor
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnJlc291cmNlID09PSBzb3VyY2VNYXBSZXNvdXJj
ZSk7CiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNlVHJl
ZUVsZW1lbnQsCisgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJzb3VyY2UtbWFwLXJlc291cmNl
Iik7CisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBfdXBkYXRlVGl0bGVzOiBmdW5j
dGlvbigpCisgICAgX3VwZGF0ZVRpdGxlcygpCiAgICAgewogICAgICAgICB2YXIgb2xkTWFpblRp
dGxlID0gdGhpcy5tYWluVGl0bGU7CiAgICAgICAgIHRoaXMubWFpblRpdGxlID0gdGhpcy5yZXNv
dXJjZS5kaXNwbGF5TmFtZTsKQEAgLTU2LDUgKzUzLDMgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZU1h
cFJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5jYWxs
Rmlyc3RBbmNlc3RvckZ1bmN0aW9uKCJkZXNjZW5kYW50UmVzb3VyY2VUcmVlRWxlbWVudE1haW5U
aXRsZURpZENoYW5nZSIsIFt0aGlzLCBvbGRNYWluVGl0bGVdKTsKICAgICB9CiB9OwotCi1XZWJJ
bnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRyZWVF
bGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3Rv
cmFnZVRyZWVFbGVtZW50LmpzCmluZGV4IGRjNzJlOGIzZjIzNTdmYTU4MmU5YjY4YzhkZGE4NWZj
YzFmMDM0MTkuLjYyODZhN2E4NWM2YzllNTMzZDY3NThkNjU1ZjY4ZDMzNGE0NjVjNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VU
cmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TdG9yYWdlVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIzICsyMywyMiBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVs
ZW1lbnQgPSBmdW5jdGlvbihjbGFzc05hbWVzLCB0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QpCitX
ZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50ID0gY2xhc3MgU3RvcmFnZVRyZWVFbGVtZW50
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAogewotICAgIFdlYkluc3Bl
Y3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBjbGFzc05hbWVzLCB0aXRsZSwgbnVs
bCwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKLQotICAgIHRoaXMuc21hbGwgPSB0cnVlOwot
ICAgIHRoaXMuZmxhdHRlbmVkID0gZmFsc2U7Ci19OworICAgIGNvbnN0cnVjdG9yKGNsYXNzTmFt
ZXMsIHRpdGxlLCByZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIHN1cGVyKGNsYXNz
TmFtZXMsIHRpdGxlLCBudWxsLCByZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOwogCi1XZWJJbnNw
ZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudCwKKyAgICAgICAgdGhpcy5zbWFsbCA9IHRy
dWU7CisgICAgICAgIHRoaXMuZmxhdHRlbmVkID0gZmFsc2U7CisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgZmxhdHRlbmVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9m
bGF0dGVuZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZmxhdHRlbmVkKGZsYXR0ZW5lZCkK
ICAgICB7CkBAIC01NywxMSArNTYsMTEgQEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMubWFpblRpdGxlID0gdGhpcy5jYXRlZ29yeU5h
bWU7CiAgICAgICAgIHRoaXMuc3VidGl0bGUgPSB0aGlzLm5hbWU7CiAgICAgICAgIHRoaXMuX3Vw
ZGF0ZUNoaWxkcmVuVGl0bGVzKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAK
LSAgICBfdXBkYXRlQ2hpbGRyZW5UaXRsZXM6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlQ2hpbGRy
ZW5UaXRsZXMoKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxk
cmVuLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2hpbGRyZW5b
aV0udXBkYXRlVGl0bGVzID09PSAiZnVuY3Rpb24iKQpAQCAtNjksNSArNjgsMyBAQCBXZWJJbnNw
ZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0K
IH07Ci0KLVdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVEYXRh
R3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lRGF0YUdyaWQuanMKaW5kZXggNzRjYTNkNTdiYTMzMmU0NGRmYjM3YWE5ZmRkZTk5MjFjN2Zl
NjUxNy4uYjU1OWI4ZmVkYWVkOGQxNThhMmFhOWQwMTA0ZGM1YzkwZjJiYmI5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVEYXRh
R3JpZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
aW1lbGluZURhdGFHcmlkLmpzCkBAIC00NjEsNyArNDYxLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXRoaXMuX3BvcG92ZXJDYWxs
U3RhY2tUcmVlT3V0bGluZSkgewogICAgICAgICAgICAgdmFyIGNvbnRlbnRFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKICAgICAgICAgICAgIGNvbnRlbnRFbGVtZW50LmNs
YXNzTGlzdC5hZGQoInRpbWVsaW5lLWRhdGEtZ3JpZC10cmVlLW91dGxpbmUiKTsKLSAgICAgICAg
ICAgIHRoaXMuX3BvcG92ZXJDYWxsU3RhY2tUcmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZShj
b250ZW50RWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLl9wb3BvdmVyQ2FsbFN0YWNrVHJlZU91
dGxpbmUgPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKGNvbnRlbnRFbGVtZW50KTsKICAg
ICAgICAgICAgIHRoaXMuX3BvcG92ZXJDYWxsU3RhY2tUcmVlT3V0bGluZS5vbnNlbGVjdCA9IHRo
aXMuX3BvcG92ZXJDYWxsU3RhY2tUcmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckNhbGxTdGFja1RyZWVPdXRsaW5l
LnJlbW92ZUNoaWxkcmVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVu
dC5qcwppbmRleCAwN2Q2ZmU5MzM3NTZlNDQ5MjJjNzRhYmE4ZDZmNjVjMTFlMGU4ZWJmLi45ODVl
YWZjZTYwMzI2ZjQ2Y2JiNDdmZjM5YzgyNzMyMjEwYjVlNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZFRyZWVFbGVt
ZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rp
bWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTMwICsyMywxMTkgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHRpbWVsaW5lUmVjb3JkLCBzdWJ0aXRsZU5hbWVTdHls
ZSwgaW5jbHVkZVRpbWVySWRlbnRpZmllckluTWFpblRpdGxlLCBzb3VyY2VDb2RlTG9jYXRpb24s
IHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1l
bnQgPSBjbGFzcyBUaW1lbGluZVJlY29yZFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9y
LkdlbmVyYWxUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lUmVjb3Jk
KTsKLQotICAgIHRoaXMuX3JlY29yZCA9IHRpbWVsaW5lUmVjb3JkOwotICAgIHRoaXMuX3NvdXJj
ZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVMb2NhdGlvbiB8fCB0aW1lbGluZVJlY29yZC5zb3Vy
Y2VDb2RlTG9jYXRpb24gfHwgbnVsbDsKKyAgICBjb25zdHJ1Y3Rvcih0aW1lbGluZVJlY29yZCwg
c3VidGl0bGVOYW1lU3R5bGUsIGluY2x1ZGVUaW1lcklkZW50aWZpZXJJbk1haW5UaXRsZSwgc291
cmNlQ29kZUxvY2F0aW9uLCByZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRpbWVsaW5lUmVjb3JkKTsKIAotICAgIHZhciB0aXRsZSA9ICIiOwotICAgIHZh
ciBzdWJ0aXRsZSA9ICIiOworICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24gPSBzb3VyY2VDb2Rl
TG9jYXRpb24gfHwgdGltZWxpbmVSZWNvcmQuc291cmNlQ29kZUxvY2F0aW9uIHx8IG51bGw7CiAK
LSAgICBpZiAodGhpcy5fc291cmNlQ29kZUxvY2F0aW9uKSB7Ci0gICAgICAgIHN1YnRpdGxlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB2YXIgdGl0bGUgPSAiIjsK
KyAgICAgICAgdmFyIHN1YnRpdGxlID0gIiI7CiAKLSAgICAgICAgaWYgKHN1YnRpdGxlTmFtZVN0
eWxlICE9PSBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLk5hbWVTdHlsZS5Ob25lKQot
ICAgICAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLnBvcHVsYXRlTGl2ZURpc3BsYXlM
b2NhdGlvblN0cmluZyhzdWJ0aXRsZSwgInRleHRDb250ZW50IiwgbnVsbCwgc3VidGl0bGVOYW1l
U3R5bGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRp
b24ucG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uU3RyaW5nKHN1YnRpdGxlLCAidGV4dENvbnRl
bnQiLCBudWxsLCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLk5hbWVTdHlsZS5Ob25l
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoImxpbmUgIikpOwotICAgIH0KKyAgICAgICAgaWYgKHNv
dXJjZUNvZGVMb2NhdGlvbikgeworICAgICAgICAgICAgc3VidGl0bGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CiAKLSAgICB2YXIgaWNvblN0eWxlQ2xhc3MgPSBudWxsOworICAg
ICAgICAgICAgaWYgKHN1YnRpdGxlTmFtZVN0eWxlICE9PSBXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZUxvY2F0aW9uLk5hbWVTdHlsZS5Ob25lKQorICAgICAgICAgICAgICAgIHNvdXJjZUNvZGVMb2Nh
dGlvbi5wb3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25TdHJpbmcoc3VidGl0bGUsICJ0ZXh0Q29u
dGVudCIsIG51bGwsIHN1YnRpdGxlTmFtZVN0eWxlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24ucG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9u
U3RyaW5nKHN1YnRpdGxlLCAidGV4dENvbnRlbnQiLCBudWxsLCBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZUxvY2F0aW9uLk5hbWVTdHlsZS5Ob25lLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoImxpbmUg
IikpOworICAgICAgICB9CiAKLSAgICBzd2l0Y2ggKHRpbWVsaW5lUmVjb3JkLnR5cGUpIHsKLSAg
ICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dDoKLSAgICAgICAg
dGl0bGUgPSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuZGlzcGxheU5hbWVGb3JF
dmVudFR5cGUodGltZWxpbmVSZWNvcmQuZXZlbnRUeXBlKTsKKyAgICAgICAgdmFyIGljb25TdHls
ZUNsYXNzID0gbnVsbDsKKworICAgICAgICBzd2l0Y2ggKHRpbWVsaW5lUmVjb3JkLnR5cGUpIHsK
KyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQ6Cisg
ICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5kaXNw
bGF5TmFtZUZvckV2ZW50VHlwZSh0aW1lbGluZVJlY29yZC5ldmVudFR5cGUpOworCisgICAgICAg
ICAgICBzd2l0Y2ggKHRpbWVsaW5lUmVjb3JkLmV2ZW50VHlwZSkgeworICAgICAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkludmFsaWRhdGVT
dHlsZXM6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29y
ZC5FdmVudFR5cGUuUmVjYWxjdWxhdGVTdHlsZXM6CisgICAgICAgICAgICAgICAgaWNvblN0eWxl
Q2xhc3MgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5TdHlsZVJlY29y
ZEljb25TdHlsZUNsYXNzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkludmFsaWRhdGVM
YXlvdXQ6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29y
ZC5FdmVudFR5cGUuRm9yY2VkTGF5b3V0OgorICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
TGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkxheW91dDoKKyAgICAgICAgICAgICAgICBp
Y29uU3R5bGVDbGFzcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50Lkxh
eW91dFJlY29yZEljb25TdHlsZUNsYXNzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlBh
aW50OgorICAgICAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkVHJlZUVsZW1lbnQuUGFpbnRSZWNvcmRJY29uU3R5bGVDbGFzczsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgY29u
c29sZS5lcnJvcigiVW5rbm93biBMYXlvdXRUaW1lbGluZVJlY29yZCBldmVudFR5cGU6ICIgKyB0
aW1lbGluZVJlY29yZC5ldmVudFR5cGUsIHRpbWVsaW5lUmVjb3JkKTsKKyAgICAgICAgICAgIH0K
IAotICAgICAgICBzd2l0Y2ggKHRpbWVsaW5lUmVjb3JkLmV2ZW50VHlwZSkgewotICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuSW52YWxpZGF0
ZVN0eWxlczoKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQu
RXZlbnRUeXBlLlJlY2FsY3VsYXRlU3R5bGVzOgotICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3Mg
PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5TdHlsZVJlY29yZEljb25T
dHlsZUNsYXNzOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5JbnZhbGlkYXRlTGF5b3V0OgotICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuRm9yY2Vk
TGF5b3V0OgotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5F
dmVudFR5cGUuTGF5b3V0OgotICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3MgPSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5MYXlvdXRSZWNvcmRJY29uU3R5bGVDbGFzczsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1l
bGluZVJlY29yZC5FdmVudFR5cGUuUGFpbnQ6Ci0gICAgICAgICAgICBpY29uU3R5bGVDbGFzcyA9
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlBhaW50UmVjb3JkSWNvblN0
eWxlQ2xhc3M7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gTGF5b3V0VGltZWxpbmVSZWNvcmQgZXZlbnRUeXBl
OiAiICsgdGltZWxpbmVSZWNvcmQuZXZlbnRUeXBlLCB0aW1lbGluZVJlY29yZCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBicmVhazsKIAotICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkLlR5cGUuU2NyaXB0OgotICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1l
bGluZVJlY29yZC5FdmVudFR5cGUuZGlzcGxheU5hbWUodGltZWxpbmVSZWNvcmQuZXZlbnRUeXBl
LCB0aW1lbGluZVJlY29yZC5kZXRhaWxzLCBpbmNsdWRlVGltZXJJZGVudGlmaWVySW5NYWluVGl0
bGUpOworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlw
dDoKKyAgICAgICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3Jk
LkV2ZW50VHlwZS5kaXNwbGF5TmFtZSh0aW1lbGluZVJlY29yZC5ldmVudFR5cGUsIHRpbWVsaW5l
UmVjb3JkLmRldGFpbHMsIGluY2x1ZGVUaW1lcklkZW50aWZpZXJJbk1haW5UaXRsZSk7CisKKyAg
ICAgICAgICAgIHN3aXRjaCAodGltZWxpbmVSZWNvcmQuZXZlbnRUeXBlKSB7CisgICAgICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuU2NyaXB0
RXZhbHVhdGVkOgorICAgICAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuRXZhbHVhdGVkUmVjb3JkSWNvblN0eWxlQ2xhc3M7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5T
Y3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuRXZlbnREaXNwYXRjaGVkOgorICAgICAgICAg
ICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVs
ZW1lbnQuRXZlbnRSZWNvcmRJY29uU3R5bGVDbGFzczsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50
VHlwZS5Qcm9iZVNhbXBsZVJlY29yZGVkOgorICAgICAgICAgICAgICAgIGljb25TdHlsZUNsYXNz
ID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuUHJvYmVSZWNvcmRJY29u
U3R5bGVDbGFzczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5Db25zb2xlUHJvZmlsZVJl
Y29yZGVkOgorICAgICAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuQ29uc29sZVByb2ZpbGVJY29uU3R5bGVDbGFzczsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5UaW1lckZpcmVkOgorICAgICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlRpbWVySW5zdGFsbGVk
OgorICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZl
bnRUeXBlLlRpbWVyUmVtb3ZlZDoKKyAgICAgICAgICAgICAgICBpY29uU3R5bGVDbGFzcyA9IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlRpbWVyUmVjb3JkSWNvblN0eWxl
Q2xhc3M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuQW5pbWF0aW9uRnJhbWVGaXJlZDoK
KyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50
VHlwZS5BbmltYXRpb25GcmFtZVJlcXVlc3RlZDoKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5BbmltYXRpb25GcmFtZUNhbmNlbGVk
OgorICAgICAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkVHJlZUVsZW1lbnQuQW5pbWF0aW9uUmVjb3JkSWNvblN0eWxlQ2xhc3M7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IoIlVua25vd24gU2NyaXB0VGltZWxpbmVSZWNvcmQgZXZlbnRUeXBlOiAiICsg
dGltZWxpbmVSZWNvcmQuZXZlbnRUeXBlLCB0aW1lbGluZVJlY29yZCk7CisgICAgICAgICAgICB9
CiAKLSAgICAgICAgc3dpdGNoICh0aW1lbGluZVJlY29yZC5ldmVudFR5cGUpIHsKLSAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlNjcmlwdEV2
YWx1YXRlZDoKLSAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkVHJlZUVsZW1lbnQuRXZhbHVhdGVkUmVjb3JkSWNvblN0eWxlQ2xhc3M7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVS
ZWNvcmQuRXZlbnRUeXBlLkV2ZW50RGlzcGF0Y2hlZDoKLSAgICAgICAgICAgIGljb25TdHlsZUNs
YXNzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuRXZlbnRSZWNvcmRJ
Y29uU3R5bGVDbGFzczsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuUHJvYmVTYW1wbGVSZWNvcmRlZDoK
LSAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
VHJlZUVsZW1lbnQuUHJvYmVSZWNvcmRJY29uU3R5bGVDbGFzczsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5
cGUuQ29uc29sZVByb2ZpbGVSZWNvcmRlZDoKLSAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0g
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuQ29uc29sZVByb2ZpbGVJY29u
U3R5bGVDbGFzczsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuVGltZXJGaXJlZDoKLSAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlRpbWVySW5zdGFs
bGVkOgotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVu
dFR5cGUuVGltZXJSZW1vdmVkOgotICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3MgPSBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5UaW1lclJlY29yZEljb25TdHlsZUNsYXNz
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFRp
bWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5BbmltYXRpb25GcmFtZUZpcmVkOgotICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuQW5pbWF0aW9uRnJh
bWVSZXF1ZXN0ZWQ6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVj
b3JkLkV2ZW50VHlwZS5BbmltYXRpb25GcmFtZUNhbmNlbGVkOgotICAgICAgICAgICAgaWNvblN0
eWxlQ2xhc3MgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5BbmltYXRp
b25SZWNvcmRJY29uU3R5bGVDbGFzczsKKworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZC5UeXBlLlJ1bkxvb3A6CisgICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUnVubG9vcCBFeGVjdXRlZCIpOworICAgICAgICAgICAgaWNvblN0eWxlQ2xh
c3MgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5SdW5Mb29wUmVjb3Jk
SWNvblN0eWxlQ2xhc3M7CiAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBTY3JpcHRUaW1lbGluZVJlY29yZCBl
dmVudFR5cGU6ICIgKyB0aW1lbGluZVJlY29yZC5ldmVudFR5cGUsIHRpbWVsaW5lUmVjb3JkKTsK
KyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gVGltZWxpbmVSZWNvcmQgdHlwZTog
IiArIHRpbWVsaW5lUmVjb3JkLnR5cGUsIHRpbWVsaW5lUmVjb3JkKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlw
ZS5SdW5Mb29wOgotICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUnVubG9v
cCBFeGVjdXRlZCIpOwotICAgICAgICBpY29uU3R5bGVDbGFzcyA9IFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZFRyZWVFbGVtZW50LlJ1bkxvb3BSZWNvcmRJY29uU3R5bGVDbGFzczsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3du
IFRpbWVsaW5lUmVjb3JkIHR5cGU6ICIgKyB0aW1lbGluZVJlY29yZC50eXBlLCB0aW1lbGluZVJl
Y29yZCk7Ci0gICAgfQorICAgICAgICBzdXBlcihbaWNvblN0eWxlQ2xhc3NdLCB0aXRsZSwgc3Vi
dGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0IHx8IHRpbWVsaW5lUmVjb3JkLCBmYWxzZSk7CiAKLSAg
ICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgW2ljb25TdHlsZUNs
YXNzXSwgdGl0bGUsIHN1YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCB8fCB0aW1lbGluZVJlY29y
ZCwgZmFsc2UpOworICAgICAgICB0aGlzLl9yZWNvcmQgPSB0aW1lbGluZVJlY29yZDsKKyAgICAg
ICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uOwogCi0gICAg
dGhpcy5zbWFsbCA9IHRydWU7CisgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwogCi0gICAgaWYg
KHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbikKLSAgICAgICAgdGhpcy50b29sdGlwSGFuZGxlZFNl
cGFyYXRlbHkgPSB0cnVlOwotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVs
ZW1lbnQuU3R5bGVSZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJzdHlsZS1yZWNvcmQiOwotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuTGF5b3V0UmVjb3JkSWNvblN0eWxlQ2xh
c3MgPSAibGF5b3V0LXJlY29yZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxl
bWVudC5QYWludFJlY29yZEljb25TdHlsZUNsYXNzID0gInBhaW50LXJlY29yZCI7Ci1XZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5SdW5Mb29wUmVjb3JkSWNvblN0eWxlQ2xh
c3MgPSAicnVubG9vcC1yZWNvcmQiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVs
ZW1lbnQuRXZhbHVhdGVkUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAiZXZhbHVhdGVkLXJlY29yZCI7
Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5FdmVudFJlY29yZEljb25T
dHlsZUNsYXNzID0gImV2ZW50LXJlY29yZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRU
cmVlRWxlbWVudC5UaW1lclJlY29yZEljb25TdHlsZUNsYXNzID0gInRpbWVyLXJlY29yZCI7Ci1X
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5BbmltYXRpb25SZWNvcmRJY29u
U3R5bGVDbGFzcyA9ICJhbmltYXRpb24tcmVjb3JkIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZFRyZWVFbGVtZW50LlByb2JlUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAicHJvYmUtcmVjb3Jk
IjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LkNvbnNvbGVQcm9maWxl
SWNvblN0eWxlQ2xhc3MgPSAiY29uc29sZS1wcm9maWxlLXJlY29yZCI7Ci0KLVdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgaWYg
KHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbikKKyAgICAgICAgICAgIHRoaXMudG9vbHRpcEhhbmRs
ZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBy
ZWNvcmQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBmaWx0ZXJhYmxlRGF0YSgpCiAgICAgewogICAgICAgICB2YXIgdXJsID0g
dGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID8gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLnNvdXJj
ZUNvZGUudXJsIDogIiI7CiAgICAgICAgIHJldHVybiB7dGV4dDogW3RoaXMubWFpblRpdGxlLCB1
cmwgfHwgIiIsIHRoaXMuX3JlY29yZC5kZXRhaWxzIHx8ICIiXX07Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgb25hdHRh
Y2goKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90
b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKIApAQCAtMTU5LDMgKzE0OCwxNCBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5wb3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25Ub29sdGlw
KHRoaXMuZWxlbWVudCwgdG9vbHRpcFByZWZpeCk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuU3R5bGVSZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJz
dHlsZS1yZWNvcmQiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuTGF5
b3V0UmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAibGF5b3V0LXJlY29yZCI7CitXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5QYWludFJlY29yZEljb25TdHlsZUNsYXNzID0gInBh
aW50LXJlY29yZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5SdW5M
b29wUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAicnVubG9vcC1yZWNvcmQiOworV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuRXZhbHVhdGVkUmVjb3JkSWNvblN0eWxlQ2xhc3Mg
PSAiZXZhbHVhdGVkLXJlY29yZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxl
bWVudC5FdmVudFJlY29yZEljb25TdHlsZUNsYXNzID0gImV2ZW50LXJlY29yZCI7CitXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5UaW1lclJlY29yZEljb25TdHlsZUNsYXNz
ID0gInRpbWVyLXJlY29yZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVu
dC5BbmltYXRpb25SZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJhbmltYXRpb24tcmVjb3JkIjsKK1dl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlByb2JlUmVjb3JkSWNvblN0eWxl
Q2xhc3MgPSAicHJvYmUtcmVjb3JkIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVF
bGVtZW50LkNvbnNvbGVQcm9maWxlSWNvblN0eWxlQ2xhc3MgPSAiY29uc29sZS1wcm9maWxlLXJl
Y29yZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpzCmluZGV4IDU2YzE0
NGNhYzk5YmQ0MjFlZWNlZjIyNmIxOGE4MTFlMjdhZjI3OGMuLjJlZTNhYzhiMDFhN2Y2M2VjMDk2
ODc1ZGZjOGFiZjBjZjMzYmNjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0
dG9uLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMyw0OCArMjMsNDAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24gPSBmdW5jdGlv
bihlbGVtZW50KSB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rv
ci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9y
Lk9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQoZWxlbWVudCk7Ci0KLSAg
ICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLlN0eWxlQ2xhc3NOYW1lKTsK
LSAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xpY2tl
ZC5iaW5kKHRoaXMpKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRv
bi5TdHlsZUNsYXNzTmFtZSA9ICJzdGF0dXMtYnV0dG9uIjsKLVdlYkluc3BlY3Rvci5UcmVlRWxl
bWVudFN0YXR1c0J1dHRvbi5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lID0gImRpc2FibGVkIjsKK1dl
Ykluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbiA9IGNsYXNzIFRyZWVFbGVtZW50U3Rh
dHVzQnV0dG9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9y
KGVsZW1lbnQpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi1XZWJJbnNwZWN0b3IuVHJlZUVs
ZW1lbnRTdGF0dXNCdXR0b24uRXZlbnQgPSB7Ci0gICAgQ2xpY2tlZDogInN0YXR1cy1idXR0b24t
Y2xpY2tlZCIKLX07CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGVsZW1lbnQpOwogCi1XZWJJbnNw
ZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24sCisgICAgICAgIHRoaXMu
X2VsZW1lbnQgPSBlbGVtZW50OworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
InN0YXR1cy1idXR0b24iKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIHRoaXMuX2NsaWNrZWQuYmluZCh0aGlzKSk7CisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxl
bWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoaWRkZW4oKQogICAgIHsKICAgICAgICAg
cmV0dXJuICF0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuVHJl
ZUVsZW1lbnRTdGF0dXNCdXR0b24uRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBzZXQgaGlkZGVuKGZsYWcpCiAgICAgewogICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC50b2dnbGUoImhpZGRlbiIsIGZsYWcpOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGVuYWJsZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuICF0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uRGlzYWJs
ZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZW5hYmxlZChmbGFn
KQogICAgIHsKQEAgLTcyLDExICs2NCwxMSBAQCBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0
dXNCdXR0b24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5EaXNhYmxlZFN0
eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5EaXNhYmxl
ZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAg
IF9jbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY2xpY2tlZChldmVudCkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODcsNCAr
NzksOCBAQCBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24ucHJvdG90eXBlID0g
ewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNw
ZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSA9ICJk
aXNhYmxlZCI7CisKK1dlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5FdmVudCA9
IHsKKyAgICBDbGlja2VkOiAic3RhdHVzLWJ1dHRvbi1jbGlja2VkIgorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUu
anMKaW5kZXggMjdjYjA1ODdjYTllNDcyM2M2MmVlNjFhMDczMGQwNWE1MGJiYjgyZS4uN2MzNzEy
MTVhNzhjNTQ2MTdhMzcxNjdjYzQxNWQ4YjhlNThiMGU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEzIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTMsIDIwMTUg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsMTg3ICsyNiwxNDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotZnVuY3Rp
b24gVHJlZU91dGxpbmUobGlzdE5vZGUpCitXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUgPSBjbGFz
cyBUcmVlT3V0bGluZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhN
RTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNh
bGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAg
ICB0aGlzLmVsZW1lbnQgPSBsaXN0Tm9kZTsKLQotICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAg
ICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQgPSBudWxsOwotICAgIHRoaXMuX2NoaWxkcmVuTGlz
dE5vZGUgPSBsaXN0Tm9kZTsKLSAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLnJlbW92ZUNoaWxk
cmVuKCk7Ci0gICAgdGhpcy5fa25vd25UcmVlRWxlbWVudHMgPSBbXTsKLSAgICB0aGlzLl90cmVl
RWxlbWVudHNFeHBhbmRlZFN0YXRlID0gW107Ci0gICAgdGhpcy5leHBhbmRUcmVlRWxlbWVudHNX
aGVuQXJyb3dpbmcgPSBmYWxzZTsKLSAgICB0aGlzLmFsbG93c1JlcGVhdFNlbGVjdGlvbiA9IGZh
bHNlOwotICAgIHRoaXMucm9vdCA9IHRydWU7Ci0gICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZhbHNl
OwotICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlOwotICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsK
LSAgICB0aGlzLnRyZWVPdXRsaW5lID0gdGhpczsKLQotICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5v
ZGUudGFiSW5kZXggPSAwOwotICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUuYWRkRXZlbnRMaXN0
ZW5lcigia2V5ZG93biIsIHRoaXMuX3RyZWVLZXlEb3duLmJpbmQodGhpcyksIHRydWUpOwotfQot
Ci1UcmVlT3V0bGluZS5fa25vd25UcmVlRWxlbWVudE5leHRJZGVudGlmaWVyID0gMTsKLVRyZWVP
dXRsaW5lLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRyZWVPdXRsaW5lOwotCi1UcmVlT3V0bGlu
ZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbihjaGlsZCkKLXsKLSAgICBpZiAoIWNo
aWxkKQotICAgICAgICB0aHJvdyAiY2hpbGQgY2FuJ3QgYmUgdW5kZWZpbmVkIG9yIG51bGwiOwot
Ci0gICAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGgg
LSAxXTsKLSAgICBpZiAobGFzdENoaWxkKSB7Ci0gICAgICAgIGxhc3RDaGlsZC5uZXh0U2libGlu
ZyA9IGNoaWxkOwotICAgICAgICBjaGlsZC5wcmV2aW91c1NpYmxpbmcgPSBsYXN0Q2hpbGQ7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5nID0gbnVsbDsKLSAgICAg
ICAgY2hpbGQubmV4dFNpYmxpbmcgPSBudWxsOwotICAgIH0KKyAgICBjb25zdHJ1Y3RvcihsaXN0
Tm9kZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB2YXIgaXNGaXJzdENoaWxkID0g
IXRoaXMuY2hpbGRyZW4ubGVuZ3RoOworICAgICAgICB0aGlzLmVsZW1lbnQgPSBsaXN0Tm9kZTsK
IAotICAgIHRoaXMuY2hpbGRyZW4ucHVzaChjaGlsZCk7Ci0gICAgdGhpcy5oYXNDaGlsZHJlbiA9
IHRydWU7Ci0gICAgY2hpbGQucGFyZW50ID0gdGhpczsKLSAgICBjaGlsZC50cmVlT3V0bGluZSA9
IHRoaXMudHJlZU91dGxpbmU7Ci0gICAgY2hpbGQudHJlZU91dGxpbmUuX3JlbWVtYmVyVHJlZUVs
ZW1lbnQoY2hpbGQpOworICAgICAgICB0aGlzLmNoaWxkcmVuID0gW107CisgICAgICAgIHRoaXMu
c2VsZWN0ZWRUcmVlRWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5v
ZGUgPSBsaXN0Tm9kZTsKKyAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5yZW1vdmVDaGls
ZHJlbigpOworICAgICAgICB0aGlzLl9rbm93blRyZWVFbGVtZW50cyA9IFtdOworICAgICAgICB0
aGlzLl90cmVlRWxlbWVudHNFeHBhbmRlZFN0YXRlID0gW107CisgICAgICAgIHRoaXMuZXhwYW5k
VHJlZUVsZW1lbnRzV2hlbkFycm93aW5nID0gZmFsc2U7CisgICAgICAgIHRoaXMuYWxsb3dzUmVw
ZWF0U2VsZWN0aW9uID0gZmFsc2U7CisgICAgICAgIHRoaXMucm9vdCA9IHRydWU7CisgICAgICAg
IHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxzZTsKKyAgICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7
CisgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy50cmVlT3V0bGlu
ZSA9IHRoaXM7CiAKLSAgICB2YXIgY3VycmVudCA9IGNoaWxkLmNoaWxkcmVuWzBdOwotICAgIHdo
aWxlIChjdXJyZW50KSB7Ci0gICAgICAgIGN1cnJlbnQudHJlZU91dGxpbmUgPSB0aGlzLnRyZWVP
dXRsaW5lOwotICAgICAgICBjdXJyZW50LnRyZWVPdXRsaW5lLl9yZW1lbWJlclRyZWVFbGVtZW50
KGN1cnJlbnQpOwotICAgICAgICBjdXJyZW50ID0gY3VycmVudC50cmF2ZXJzZU5leHRUcmVlRWxl
bWVudChmYWxzZSwgY2hpbGQsIHRydWUpOworICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2Rl
LnRhYkluZGV4ID0gMDsKKyAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5hZGRFdmVudExp
c3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fdHJlZUtleURvd24uYmluZCh0aGlzKSwgdHJ1ZSk7CiAg
ICAgfQogCi0gICAgaWYgKGNoaWxkLmhhc0NoaWxkcmVuICYmIGNoaWxkLnRyZWVPdXRsaW5lLl90
cmVlRWxlbWVudHNFeHBhbmRlZFN0YXRlW2NoaWxkLmlkZW50aWZpZXJdICE9PSB1bmRlZmluZWQp
Ci0gICAgICAgIGNoaWxkLmV4cGFuZGVkID0gY2hpbGQudHJlZU91dGxpbmUuX3RyZWVFbGVtZW50
c0V4cGFuZGVkU3RhdGVbY2hpbGQuaWRlbnRpZmllcl07Ci0KLSAgICBpZiAodGhpcy5fY2hpbGRy
ZW5MaXN0Tm9kZSkKLSAgICAgICAgY2hpbGQuX2F0dGFjaCgpOwotCi0gICAgaWYgKHRoaXMudHJl
ZU91dGxpbmUub25hZGQpCi0gICAgICAgIHRoaXMudHJlZU91dGxpbmUub25hZGQoY2hpbGQpOwor
ICAgIC8vIE1ldGhvZHMKIAotICAgIGlmIChpc0ZpcnN0Q2hpbGQgJiYgdGhpcy5leHBhbmRlZCkK
LSAgICAgICAgdGhpcy5leHBhbmQoKTsKLX07CisgICAgYXBwZW5kQ2hpbGQoY2hpbGQpCisgICAg
eworICAgICAgICBpZiAoIWNoaWxkKQorICAgICAgICAgICAgdGhyb3cgImNoaWxkIGNhbid0IGJl
IHVuZGVmaW5lZCBvciBudWxsIjsKIAotVHJlZU91dGxpbmUucHJvdG90eXBlLmluc2VydENoaWxk
ID0gZnVuY3Rpb24oY2hpbGQsIGluZGV4KQotewotICAgIGlmICghY2hpbGQpCi0gICAgICAgIHRo
cm93ICJjaGlsZCBjYW4ndCBiZSB1bmRlZmluZWQgb3IgbnVsbCI7Ci0KLSAgICB2YXIgcHJldmlv
dXNDaGlsZCA9IChpbmRleCA+IDAgPyB0aGlzLmNoaWxkcmVuW2luZGV4IC0gMV0gOiBudWxsKTsK
LSAgICBpZiAocHJldmlvdXNDaGlsZCkgewotICAgICAgICBwcmV2aW91c0NoaWxkLm5leHRTaWJs
aW5nID0gY2hpbGQ7Ci0gICAgICAgIGNoaWxkLnByZXZpb3VzU2libGluZyA9IHByZXZpb3VzQ2hp
bGQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5nID0gbnVsbDsK
LSAgICB9CisgICAgICAgIHZhciBsYXN0Q2hpbGQgPSB0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRy
ZW4ubGVuZ3RoIC0gMV07CisgICAgICAgIGlmIChsYXN0Q2hpbGQpIHsKKyAgICAgICAgICAgIGxh
c3RDaGlsZC5uZXh0U2libGluZyA9IGNoaWxkOworICAgICAgICAgICAgY2hpbGQucHJldmlvdXNT
aWJsaW5nID0gbGFzdENoaWxkOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2hpbGQu
cHJldmlvdXNTaWJsaW5nID0gbnVsbDsKKyAgICAgICAgICAgIGNoaWxkLm5leHRTaWJsaW5nID0g
bnVsbDsKKyAgICAgICAgfQogCi0gICAgdmFyIG5leHRDaGlsZCA9IHRoaXMuY2hpbGRyZW5baW5k
ZXhdOwotICAgIGlmIChuZXh0Q2hpbGQpIHsKLSAgICAgICAgbmV4dENoaWxkLnByZXZpb3VzU2li
bGluZyA9IGNoaWxkOwotICAgICAgICBjaGlsZC5uZXh0U2libGluZyA9IG5leHRDaGlsZDsKLSAg
ICB9IGVsc2UgewotICAgICAgICBjaGlsZC5uZXh0U2libGluZyA9IG51bGw7Ci0gICAgfQorICAg
ICAgICB2YXIgaXNGaXJzdENoaWxkID0gIXRoaXMuY2hpbGRyZW4ubGVuZ3RoOwogCi0gICAgdmFy
IGlzRmlyc3RDaGlsZCA9ICF0aGlzLmNoaWxkcmVuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5jaGls
ZHJlbi5wdXNoKGNoaWxkKTsKKyAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IHRydWU7CisgICAg
ICAgIGNoaWxkLnBhcmVudCA9IHRoaXM7CisgICAgICAgIGNoaWxkLnRyZWVPdXRsaW5lID0gdGhp
cy50cmVlT3V0bGluZTsKKyAgICAgICAgY2hpbGQudHJlZU91dGxpbmUuX3JlbWVtYmVyVHJlZUVs
ZW1lbnQoY2hpbGQpOwogCi0gICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDAsIGNoaWxk
KTsKLSAgICB0aGlzLmhhc0NoaWxkcmVuID0gdHJ1ZTsKLSAgICBjaGlsZC5wYXJlbnQgPSB0aGlz
OwotICAgIGNoaWxkLnRyZWVPdXRsaW5lID0gdGhpcy50cmVlT3V0bGluZTsKLSAgICBjaGlsZC50
cmVlT3V0bGluZS5fcmVtZW1iZXJUcmVlRWxlbWVudChjaGlsZCk7CisgICAgICAgIHZhciBjdXJy
ZW50ID0gY2hpbGQuY2hpbGRyZW5bMF07CisgICAgICAgIHdoaWxlIChjdXJyZW50KSB7CisgICAg
ICAgICAgICBjdXJyZW50LnRyZWVPdXRsaW5lID0gdGhpcy50cmVlT3V0bGluZTsKKyAgICAgICAg
ICAgIGN1cnJlbnQudHJlZU91dGxpbmUuX3JlbWVtYmVyVHJlZUVsZW1lbnQoY3VycmVudCk7Cisg
ICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxz
ZSwgY2hpbGQsIHRydWUpOworICAgICAgICB9CiAKLSAgICB2YXIgY3VycmVudCA9IGNoaWxkLmNo
aWxkcmVuWzBdOwotICAgIHdoaWxlIChjdXJyZW50KSB7Ci0gICAgICAgIGN1cnJlbnQudHJlZU91
dGxpbmUgPSB0aGlzLnRyZWVPdXRsaW5lOwotICAgICAgICBjdXJyZW50LnRyZWVPdXRsaW5lLl9y
ZW1lbWJlclRyZWVFbGVtZW50KGN1cnJlbnQpOwotICAgICAgICBjdXJyZW50ID0gY3VycmVudC50
cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxzZSwgY2hpbGQsIHRydWUpOwotICAgIH0KKyAgICAg
ICAgaWYgKGNoaWxkLmhhc0NoaWxkcmVuICYmIGNoaWxkLnRyZWVPdXRsaW5lLl90cmVlRWxlbWVu
dHNFeHBhbmRlZFN0YXRlW2NoaWxkLmlkZW50aWZpZXJdICE9PSB1bmRlZmluZWQpCisgICAgICAg
ICAgICBjaGlsZC5leHBhbmRlZCA9IGNoaWxkLnRyZWVPdXRsaW5lLl90cmVlRWxlbWVudHNFeHBh
bmRlZFN0YXRlW2NoaWxkLmlkZW50aWZpZXJdOwogCi0gICAgaWYgKGNoaWxkLmhhc0NoaWxkcmVu
ICYmIGNoaWxkLnRyZWVPdXRsaW5lLl90cmVlRWxlbWVudHNFeHBhbmRlZFN0YXRlW2NoaWxkLmlk
ZW50aWZpZXJdICE9PSB1bmRlZmluZWQpCi0gICAgICAgIGNoaWxkLmV4cGFuZGVkID0gY2hpbGQu
dHJlZU91dGxpbmUuX3RyZWVFbGVtZW50c0V4cGFuZGVkU3RhdGVbY2hpbGQuaWRlbnRpZmllcl07
CisgICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKQorICAgICAgICAgICAgY2hpbGQu
X2F0dGFjaCgpOwogCi0gICAgaWYgKHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUpCi0gICAgICAgIGNo
aWxkLl9hdHRhY2goKTsKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUub25hZGQpCisgICAg
ICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uYWRkKGNoaWxkKTsKIAotICAgIGlmICh0aGlzLnRy
ZWVPdXRsaW5lLm9uYWRkKQotICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uYWRkKGNoaWxkKTsK
KyAgICAgICAgaWYgKGlzRmlyc3RDaGlsZCAmJiB0aGlzLmV4cGFuZGVkKQorICAgICAgICAgICAg
dGhpcy5leHBhbmQoKTsKKyAgICB9CiAKLSAgICBpZiAoaXNGaXJzdENoaWxkICYmIHRoaXMuZXhw
YW5kZWQpCi0gICAgICAgIHRoaXMuZXhwYW5kKCk7Ci19OworICAgIGluc2VydENoaWxkKGNoaWxk
LCBpbmRleCkKKyAgICB7CisgICAgICAgIGlmICghY2hpbGQpCisgICAgICAgICAgICB0aHJvdyAi
Y2hpbGQgY2FuJ3QgYmUgdW5kZWZpbmVkIG9yIG51bGwiOwogCi1UcmVlT3V0bGluZS5wcm90b3R5
cGUucmVtb3ZlQ2hpbGRBdEluZGV4ID0gZnVuY3Rpb24oY2hpbGRJbmRleCwgc3VwcHJlc3NPbkRl
c2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNpYmxpbmcpCi17Ci0gICAgaWYgKGNoaWxkSW5kZXggPCAw
IHx8IGNoaWxkSW5kZXggPj0gdGhpcy5jaGlsZHJlbi5sZW5ndGgpCi0gICAgICAgIHRocm93ICJj
aGlsZEluZGV4IG91dCBvZiByYW5nZSI7Ci0KLSAgICB2YXIgY2hpbGQgPSB0aGlzLmNoaWxkcmVu
W2NoaWxkSW5kZXhdOwotICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGNoaWxkSW5kZXgsIDEpOwot
Ci0gICAgdmFyIHBhcmVudCA9IGNoaWxkLnBhcmVudDsKLSAgICBpZiAoY2hpbGQuZGVzZWxlY3Qo
c3VwcHJlc3NPbkRlc2VsZWN0KSkgewotICAgICAgICBpZiAoY2hpbGQucHJldmlvdXNTaWJsaW5n
ICYmICFzdXBwcmVzc1NlbGVjdFNpYmxpbmcpCi0gICAgICAgICAgICBjaGlsZC5wcmV2aW91c1Np
Ymxpbmcuc2VsZWN0KHRydWUsIGZhbHNlKTsKLSAgICAgICAgZWxzZSBpZiAoY2hpbGQubmV4dFNp
YmxpbmcgJiYgIXN1cHByZXNzU2VsZWN0U2libGluZykKLSAgICAgICAgICAgIGNoaWxkLm5leHRT
aWJsaW5nLnNlbGVjdCh0cnVlLCBmYWxzZSk7Ci0gICAgICAgIGVsc2UgaWYgKCFzdXBwcmVzc1Nl
bGVjdFNpYmxpbmcpCi0gICAgICAgICAgICBwYXJlbnQuc2VsZWN0KHRydWUsIGZhbHNlKTsKLSAg
ICB9CisgICAgICAgIHZhciBwcmV2aW91c0NoaWxkID0gKGluZGV4ID4gMCA/IHRoaXMuY2hpbGRy
ZW5baW5kZXggLSAxXSA6IG51bGwpOworICAgICAgICBpZiAocHJldmlvdXNDaGlsZCkgeworICAg
ICAgICAgICAgcHJldmlvdXNDaGlsZC5uZXh0U2libGluZyA9IGNoaWxkOworICAgICAgICAgICAg
Y2hpbGQucHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNDaGlsZDsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGNoaWxkLnByZXZpb3VzU2libGluZyA9IG51bGw7CisgICAgICAgIH0KIAot
ICAgIGlmIChjaGlsZC5wcmV2aW91c1NpYmxpbmcpCi0gICAgICAgIGNoaWxkLnByZXZpb3VzU2li
bGluZy5uZXh0U2libGluZyA9IGNoaWxkLm5leHRTaWJsaW5nOwotICAgIGlmIChjaGlsZC5uZXh0
U2libGluZykKLSAgICAgICAgY2hpbGQubmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nID0gY2hp
bGQucHJldmlvdXNTaWJsaW5nOworICAgICAgICB2YXIgbmV4dENoaWxkID0gdGhpcy5jaGlsZHJl
bltpbmRleF07CisgICAgICAgIGlmIChuZXh0Q2hpbGQpIHsKKyAgICAgICAgICAgIG5leHRDaGls
ZC5wcmV2aW91c1NpYmxpbmcgPSBjaGlsZDsKKyAgICAgICAgICAgIGNoaWxkLm5leHRTaWJsaW5n
ID0gbmV4dENoaWxkOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2hpbGQubmV4dFNp
YmxpbmcgPSBudWxsOworICAgICAgICB9CiAKLSAgICBpZiAoY2hpbGQudHJlZU91dGxpbmUpIHsK
LSAgICAgICAgY2hpbGQudHJlZU91dGxpbmUuX2ZvcmdldFRyZWVFbGVtZW50KGNoaWxkKTsKLSAg
ICAgICAgY2hpbGQudHJlZU91dGxpbmUuX2ZvcmdldENoaWxkcmVuUmVjdXJzaXZlKGNoaWxkKTsK
LSAgICB9CisgICAgICAgIHZhciBpc0ZpcnN0Q2hpbGQgPSAhdGhpcy5jaGlsZHJlbi5sZW5ndGg7
CiAKLSAgICBjaGlsZC5fZGV0YWNoKCk7Ci0gICAgY2hpbGQudHJlZU91dGxpbmUgPSBudWxsOwot
ICAgIGNoaWxkLnBhcmVudCA9IG51bGw7Ci0gICAgY2hpbGQubmV4dFNpYmxpbmcgPSBudWxsOwot
ICAgIGNoaWxkLnByZXZpb3VzU2libGluZyA9IG51bGw7CisgICAgICAgIHRoaXMuY2hpbGRyZW4u
c3BsaWNlKGluZGV4LCAwLCBjaGlsZCk7CisgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0cnVl
OworICAgICAgICBjaGlsZC5wYXJlbnQgPSB0aGlzOworICAgICAgICBjaGlsZC50cmVlT3V0bGlu
ZSA9IHRoaXMudHJlZU91dGxpbmU7CisgICAgICAgIGNoaWxkLnRyZWVPdXRsaW5lLl9yZW1lbWJl
clRyZWVFbGVtZW50KGNoaWxkKTsKIAotICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lICYmIHRoaXMu
dHJlZU91dGxpbmUub25yZW1vdmUpCi0gICAgICAgIHRoaXMudHJlZU91dGxpbmUub25yZW1vdmUo
Y2hpbGQpOwotfTsKKyAgICAgICAgdmFyIGN1cnJlbnQgPSBjaGlsZC5jaGlsZHJlblswXTsKKyAg
ICAgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgICAgIGN1cnJlbnQudHJlZU91dGxpbmUg
PSB0aGlzLnRyZWVPdXRsaW5lOworICAgICAgICAgICAgY3VycmVudC50cmVlT3V0bGluZS5fcmVt
ZW1iZXJUcmVlRWxlbWVudChjdXJyZW50KTsKKyAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50
LnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KGZhbHNlLCBjaGlsZCwgdHJ1ZSk7CisgICAgICAgIH0K
IAotVHJlZU91dGxpbmUucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24oY2hpbGQsIHN1
cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NTZWxlY3RTaWJsaW5nKQotewotICAgIGlmICghY2hp
bGQpCi0gICAgICAgIHRocm93ICJjaGlsZCBjYW4ndCBiZSB1bmRlZmluZWQgb3IgbnVsbCI7Cisg
ICAgICAgIGlmIChjaGlsZC5oYXNDaGlsZHJlbiAmJiBjaGlsZC50cmVlT3V0bGluZS5fdHJlZUVs
ZW1lbnRzRXhwYW5kZWRTdGF0ZVtjaGlsZC5pZGVudGlmaWVyXSAhPT0gdW5kZWZpbmVkKQorICAg
ICAgICAgICAgY2hpbGQuZXhwYW5kZWQgPSBjaGlsZC50cmVlT3V0bGluZS5fdHJlZUVsZW1lbnRz
RXhwYW5kZWRTdGF0ZVtjaGlsZC5pZGVudGlmaWVyXTsKIAotICAgIHZhciBjaGlsZEluZGV4ID0g
dGhpcy5jaGlsZHJlbi5pbmRleE9mKGNoaWxkKTsKLSAgICBpZiAoY2hpbGRJbmRleCA9PT0gLTEp
Ci0gICAgICAgIHRocm93ICJjaGlsZCBub3QgZm91bmQgaW4gdGhpcyBub2RlJ3MgY2hpbGRyZW4i
OworICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSkKKyAgICAgICAgICAgIGNoaWxk
Ll9hdHRhY2goKTsKIAotICAgIHRoaXMucmVtb3ZlQ2hpbGRBdEluZGV4KGNoaWxkSW5kZXgsIHN1
cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NTZWxlY3RTaWJsaW5nKTsKKyAgICAgICAgaWYgKHRo
aXMudHJlZU91dGxpbmUub25hZGQpCisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uYWRk
KGNoaWxkKTsKIAotICAgIGlmICghdGhpcy5jaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAgICAgdGhp
cy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5yZW1vdmUoInBhcmVudCIpOwotICAgICAgICB0aGlz
Lmhhc0NoaWxkcmVuID0gZmFsc2U7CisgICAgICAgIGlmIChpc0ZpcnN0Q2hpbGQgJiYgdGhpcy5l
eHBhbmRlZCkKKyAgICAgICAgICAgIHRoaXMuZXhwYW5kKCk7CiAgICAgfQotfTsKIAotVHJlZU91
dGxpbmUucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuID0gZnVuY3Rpb24oc3VwcHJlc3NPbkRlc2Vs
ZWN0KQotewotICAgIHZhciB0cmVlT3V0bGluZSA9IHRoaXMudHJlZU91dGxpbmU7CisgICAgcmVt
b3ZlQ2hpbGRBdEluZGV4KGNoaWxkSW5kZXgsIHN1cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NT
ZWxlY3RTaWJsaW5nKQorICAgIHsKKyAgICAgICAgaWYgKGNoaWxkSW5kZXggPCAwIHx8IGNoaWxk
SW5kZXggPj0gdGhpcy5jaGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAiY2hpbGRJ
bmRleCBvdXQgb2YgcmFuZ2UiOworCisgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5b
Y2hpbGRJbmRleF07CisgICAgICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGNoaWxkSW5kZXgsIDEp
OworCisgICAgICAgIHZhciBwYXJlbnQgPSBjaGlsZC5wYXJlbnQ7CisgICAgICAgIGlmIChjaGls
ZC5kZXNlbGVjdChzdXBwcmVzc09uRGVzZWxlY3QpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQu
cHJldmlvdXNTaWJsaW5nICYmICFzdXBwcmVzc1NlbGVjdFNpYmxpbmcpCisgICAgICAgICAgICAg
ICAgY2hpbGQucHJldmlvdXNTaWJsaW5nLnNlbGVjdCh0cnVlLCBmYWxzZSk7CisgICAgICAgICAg
ICBlbHNlIGlmIChjaGlsZC5uZXh0U2libGluZyAmJiAhc3VwcHJlc3NTZWxlY3RTaWJsaW5nKQor
ICAgICAgICAgICAgICAgIGNoaWxkLm5leHRTaWJsaW5nLnNlbGVjdCh0cnVlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBlbHNlIGlmICghc3VwcHJlc3NTZWxlY3RTaWJsaW5nKQorICAgICAgICAgICAg
ICAgIHBhcmVudC5zZWxlY3QodHJ1ZSwgZmFsc2UpOworICAgICAgICB9CiAKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIGNo
aWxkID0gdGhpcy5jaGlsZHJlbltpXTsKLSAgICAgICAgY2hpbGQuZGVzZWxlY3Qoc3VwcHJlc3NP
bkRlc2VsZWN0KTsKKyAgICAgICAgaWYgKGNoaWxkLnByZXZpb3VzU2libGluZykKKyAgICAgICAg
ICAgIGNoaWxkLnByZXZpb3VzU2libGluZy5uZXh0U2libGluZyA9IGNoaWxkLm5leHRTaWJsaW5n
OworICAgICAgICBpZiAoY2hpbGQubmV4dFNpYmxpbmcpCisgICAgICAgICAgICBjaGlsZC5uZXh0
U2libGluZy5wcmV2aW91c1NpYmxpbmcgPSBjaGlsZC5wcmV2aW91c1NpYmxpbmc7CiAKICAgICAg
ICAgaWYgKGNoaWxkLnRyZWVPdXRsaW5lKSB7CiAgICAgICAgICAgICBjaGlsZC50cmVlT3V0bGlu
ZS5fZm9yZ2V0VHJlZUVsZW1lbnQoY2hpbGQpOwpAQCAtMjE5LDM3NiArMTc5LDQzOSBAQCBUcmVl
T3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4gPSBmdW5jdGlvbihzdXBwcmVzc09uRGVz
ZWxlY3QpCiAgICAgICAgIGNoaWxkLm5leHRTaWJsaW5nID0gbnVsbDsKICAgICAgICAgY2hpbGQu
cHJldmlvdXNTaWJsaW5nID0gbnVsbDsKIAotICAgICAgICBpZiAodHJlZU91dGxpbmUgJiYgdHJl
ZU91dGxpbmUub25yZW1vdmUpCi0gICAgICAgICAgICB0cmVlT3V0bGluZS5vbnJlbW92ZShjaGls
ZCk7CisgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lICYmIHRoaXMudHJlZU91dGxpbmUub25y
ZW1vdmUpCisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9ucmVtb3ZlKGNoaWxkKTsKICAg
ICB9CiAKLSAgICB0aGlzLmNoaWxkcmVuID0gW107Ci19OworICAgIHJlbW92ZUNoaWxkKGNoaWxk
LCBzdXBwcmVzc09uRGVzZWxlY3QsIHN1cHByZXNzU2VsZWN0U2libGluZykKKyAgICB7CisgICAg
ICAgIGlmICghY2hpbGQpCisgICAgICAgICAgICB0aHJvdyAiY2hpbGQgY2FuJ3QgYmUgdW5kZWZp
bmVkIG9yIG51bGwiOwogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW5SZWN1
cnNpdmUgPSBmdW5jdGlvbihzdXBwcmVzc09uRGVzZWxlY3QpCi17Ci0gICAgdmFyIGNoaWxkcmVu
VG9SZW1vdmUgPSB0aGlzLmNoaWxkcmVuOworICAgICAgICB2YXIgY2hpbGRJbmRleCA9IHRoaXMu
Y2hpbGRyZW4uaW5kZXhPZihjaGlsZCk7CisgICAgICAgIGlmIChjaGlsZEluZGV4ID09PSAtMSkK
KyAgICAgICAgICAgIHRocm93ICJjaGlsZCBub3QgZm91bmQgaW4gdGhpcyBub2RlJ3MgY2hpbGRy
ZW4iOwogCi0gICAgdmFyIHRyZWVPdXRsaW5lID0gdGhpcy50cmVlT3V0bGluZTsKKyAgICAgICAg
dGhpcy5yZW1vdmVDaGlsZEF0SW5kZXgoY2hpbGRJbmRleCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBz
dXBwcmVzc1NlbGVjdFNpYmxpbmcpOwogCi0gICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlblsw
XTsKLSAgICB3aGlsZSAoY2hpbGQpIHsKLSAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuLmxlbmd0
aCkKLSAgICAgICAgICAgIGNoaWxkcmVuVG9SZW1vdmUgPSBjaGlsZHJlblRvUmVtb3ZlLmNvbmNh
dChjaGlsZC5jaGlsZHJlbik7Ci0gICAgICAgIGNoaWxkID0gY2hpbGQudHJhdmVyc2VOZXh0VHJl
ZUVsZW1lbnQoZmFsc2UsIHRoaXMsIHRydWUpOworICAgICAgICBpZiAoIXRoaXMuY2hpbGRyZW4u
bGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92
ZSgicGFyZW50Iik7CisgICAgICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7CisgICAg
ICAgIH0KICAgICB9CiAKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuVG9SZW1vdmUu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgY2hpbGQgPSBjaGlsZHJlblRvUmVtb3ZlW2ldOwotICAg
ICAgICBjaGlsZC5kZXNlbGVjdChzdXBwcmVzc09uRGVzZWxlY3QpOworICAgIHJlbW92ZUNoaWxk
cmVuKHN1cHByZXNzT25EZXNlbGVjdCkKKyAgICB7CisgICAgICAgIHZhciB0cmVlT3V0bGluZSA9
IHRoaXMudHJlZU91dGxpbmU7CiAKLSAgICAgICAgaWYgKGNoaWxkLnRyZWVPdXRsaW5lKQotICAg
ICAgICAgICAgY2hpbGQudHJlZU91dGxpbmUuX2ZvcmdldFRyZWVFbGVtZW50KGNoaWxkKTsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmNoaWxkcmVuW2ldOworICAgICAgICAgICAgY2hp
bGQuZGVzZWxlY3Qoc3VwcHJlc3NPbkRlc2VsZWN0KTsKIAotICAgICAgICBjaGlsZC5fZGV0YWNo
KCk7Ci0gICAgICAgIGNoaWxkLmNoaWxkcmVuID0gW107Ci0gICAgICAgIGNoaWxkLnRyZWVPdXRs
aW5lID0gbnVsbDsKLSAgICAgICAgY2hpbGQucGFyZW50ID0gbnVsbDsKLSAgICAgICAgY2hpbGQu
bmV4dFNpYmxpbmcgPSBudWxsOwotICAgICAgICBjaGlsZC5wcmV2aW91c1NpYmxpbmcgPSBudWxs
OworICAgICAgICAgICAgaWYgKGNoaWxkLnRyZWVPdXRsaW5lKSB7CisgICAgICAgICAgICAgICAg
Y2hpbGQudHJlZU91dGxpbmUuX2ZvcmdldFRyZWVFbGVtZW50KGNoaWxkKTsKKyAgICAgICAgICAg
ICAgICBjaGlsZC50cmVlT3V0bGluZS5fZm9yZ2V0Q2hpbGRyZW5SZWN1cnNpdmUoY2hpbGQpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjaGlsZC5fZGV0YWNoKCk7CisgICAgICAgICAg
ICBjaGlsZC50cmVlT3V0bGluZSA9IG51bGw7CisgICAgICAgICAgICBjaGlsZC5wYXJlbnQgPSBu
dWxsOworICAgICAgICAgICAgY2hpbGQubmV4dFNpYmxpbmcgPSBudWxsOworICAgICAgICAgICAg
Y2hpbGQucHJldmlvdXNTaWJsaW5nID0gbnVsbDsKKworICAgICAgICAgICAgaWYgKHRyZWVPdXRs
aW5lICYmIHRyZWVPdXRsaW5lLm9ucmVtb3ZlKQorICAgICAgICAgICAgICAgIHRyZWVPdXRsaW5l
Lm9ucmVtb3ZlKGNoaWxkKTsKKyAgICAgICAgfQogCi0gICAgICAgIGlmICh0cmVlT3V0bGluZSAm
JiB0cmVlT3V0bGluZS5vbnJlbW92ZSkKLSAgICAgICAgICAgIHRyZWVPdXRsaW5lLm9ucmVtb3Zl
KGNoaWxkKTsKKyAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOwogICAgIH0KIAotICAgIHRoaXMu
Y2hpbGRyZW4gPSBbXTsKLX07CisgICAgcmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUoc3VwcHJlc3NP
bkRlc2VsZWN0KQorICAgIHsKKyAgICAgICAgdmFyIGNoaWxkcmVuVG9SZW1vdmUgPSB0aGlzLmNo
aWxkcmVuOwogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUuX3JlbWVtYmVyVHJlZUVsZW1lbnQgPSBm
dW5jdGlvbihlbGVtZW50KQotewotICAgIGlmICghdGhpcy5fa25vd25UcmVlRWxlbWVudHNbZWxl
bWVudC5pZGVudGlmaWVyXSkKLSAgICAgICAgdGhpcy5fa25vd25UcmVlRWxlbWVudHNbZWxlbWVu
dC5pZGVudGlmaWVyXSA9IFtdOworICAgICAgICB2YXIgdHJlZU91dGxpbmUgPSB0aGlzLnRyZWVP
dXRsaW5lOwogCi0gICAgLy8gY2hlY2sgaWYgdGhlIGVsZW1lbnQgaXMgYWxyZWFkeSBrbm93bgot
ICAgIHZhciBlbGVtZW50cyA9IHRoaXMuX2tub3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRp
Zmllcl07Ci0gICAgaWYgKGVsZW1lbnRzLmluZGV4T2YoZWxlbWVudCkgIT09IC0xKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5bMF07CisgICAgICAg
IHdoaWxlIChjaGlsZCkgeworICAgICAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuLmxlbmd0aCkK
KyAgICAgICAgICAgICAgICBjaGlsZHJlblRvUmVtb3ZlID0gY2hpbGRyZW5Ub1JlbW92ZS5jb25j
YXQoY2hpbGQuY2hpbGRyZW4pOworICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJzZU5l
eHRUcmVlRWxlbWVudChmYWxzZSwgdGhpcywgdHJ1ZSk7CisgICAgICAgIH0KIAotICAgIC8vIGFk
ZCB0aGUgZWxlbWVudAotICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7Ci19OworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuVG9SZW1vdmUubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIGNoaWxkID0gY2hpbGRyZW5Ub1JlbW92ZVtpXTsKKyAgICAgICAgICAgIGNoaWxkLmRl
c2VsZWN0KHN1cHByZXNzT25EZXNlbGVjdCk7CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5fZm9y
Z2V0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihlbGVtZW50KQotewotICAgIGlmICh0aGlzLnNlbGVj
dGVkVHJlZUVsZW1lbnQgPT09IGVsZW1lbnQpCi0gICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxl
bWVudCA9IG51bGw7Ci0gICAgaWYgKHRoaXMuX2tub3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRl
bnRpZmllcl0pCi0gICAgICAgIHRoaXMuX2tub3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRp
Zmllcl0ucmVtb3ZlKGVsZW1lbnQsIHRydWUpOwotfTsKKyAgICAgICAgICAgIGlmIChjaGlsZC50
cmVlT3V0bGluZSkKKyAgICAgICAgICAgICAgICBjaGlsZC50cmVlT3V0bGluZS5fZm9yZ2V0VHJl
ZUVsZW1lbnQoY2hpbGQpOwogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUuX2ZvcmdldENoaWxkcmVu
UmVjdXJzaXZlID0gZnVuY3Rpb24ocGFyZW50RWxlbWVudCkKLXsKLSAgICB2YXIgY2hpbGQgPSBw
YXJlbnRFbGVtZW50LmNoaWxkcmVuWzBdOwotICAgIHdoaWxlIChjaGlsZCkgewotICAgICAgICB0
aGlzLl9mb3JnZXRUcmVlRWxlbWVudChjaGlsZCk7Ci0gICAgICAgIGNoaWxkID0gY2hpbGQudHJh
dmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2UsIHBhcmVudEVsZW1lbnQsIHRydWUpOworICAgICAg
ICAgICAgY2hpbGQuX2RldGFjaCgpOworICAgICAgICAgICAgY2hpbGQuY2hpbGRyZW4gPSBbXTsK
KyAgICAgICAgICAgIGNoaWxkLnRyZWVPdXRsaW5lID0gbnVsbDsKKyAgICAgICAgICAgIGNoaWxk
LnBhcmVudCA9IG51bGw7CisgICAgICAgICAgICBjaGlsZC5uZXh0U2libGluZyA9IG51bGw7Cisg
ICAgICAgICAgICBjaGlsZC5wcmV2aW91c1NpYmxpbmcgPSBudWxsOworCisgICAgICAgICAgICBp
ZiAodHJlZU91dGxpbmUgJiYgdHJlZU91dGxpbmUub25yZW1vdmUpCisgICAgICAgICAgICAgICAg
dHJlZU91dGxpbmUub25yZW1vdmUoY2hpbGQpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5j
aGlsZHJlbiA9IFtdOwogICAgIH0KLX07CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5nZXRDYWNo
ZWRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQotewotICAgIGlmICgh
cmVwcmVzZW50ZWRPYmplY3QpCi0gICAgICAgIHJldHVybiBudWxsOworICAgIF9yZW1lbWJlclRy
ZWVFbGVtZW50KGVsZW1lbnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2tub3duVHJlZUVs
ZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl0pCisgICAgICAgICAgICB0aGlzLl9rbm93blRyZWVF
bGVtZW50c1tlbGVtZW50LmlkZW50aWZpZXJdID0gW107CiAKLSAgICBpZiAocmVwcmVzZW50ZWRP
YmplY3QuX190cmVlRWxlbWVudElkZW50aWZpZXIpIHsKLSAgICAgICAgLy8gSWYgdGhpcyByZXBy
ZXNlbnRlZE9iamVjdCBoYXMgYSB0cmVlIGVsZW1lbnQgaWRlbnRpZmllciwgYW5kIGl0IGlzIGEg
a25vd24gVHJlZUVsZW1lbnQKLSAgICAgICAgLy8gaW4gb3VyIHRyZWUgd2UgY2FuIGp1c3QgcmV0
dXJuIHRoYXQgdHJlZSBlbGVtZW50LgotICAgICAgICB2YXIgZWxlbWVudHMgPSB0aGlzLl9rbm93
blRyZWVFbGVtZW50c1tyZXByZXNlbnRlZE9iamVjdC5fX3RyZWVFbGVtZW50SWRlbnRpZmllcl07
Ci0gICAgICAgIGlmIChlbGVtZW50cykgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBlbGVtZW50cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0u
cmVwcmVzZW50ZWRPYmplY3QgPT09IHJlcHJlc2VudGVkT2JqZWN0KQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudHNbaV07Ci0gICAgICAgIH0KKyAgICAgICAgLy8gY2hlY2sgaWYg
dGhlIGVsZW1lbnQgaXMgYWxyZWFkeSBrbm93bgorICAgICAgICB2YXIgZWxlbWVudHMgPSB0aGlz
Ll9rbm93blRyZWVFbGVtZW50c1tlbGVtZW50LmlkZW50aWZpZXJdOworICAgICAgICBpZiAoZWxl
bWVudHMuaW5kZXhPZihlbGVtZW50KSAhPT0gLTEpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgLy8gYWRkIHRoZSBlbGVtZW50CisgICAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7
CiAgICAgfQotICAgIHJldHVybiBudWxsOwotfTsKIAotVHJlZU91dGxpbmUucHJvdG90eXBlLmZp
bmRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBpc0FuY2VzdG9yLCBn
ZXRQYXJlbnQpCi17Ci0gICAgaWYgKCFyZXByZXNlbnRlZE9iamVjdCkKLSAgICAgICAgcmV0dXJu
IG51bGw7CisgICAgX2ZvcmdldFRyZWVFbGVtZW50KGVsZW1lbnQpCisgICAgeworICAgICAgICBp
ZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID09PSBlbGVtZW50KQorICAgICAgICAgICAgdGhp
cy5zZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgaWYgKHRoaXMuX2tub3duVHJl
ZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl0pCisgICAgICAgICAgICB0aGlzLl9rbm93blRy
ZWVFbGVtZW50c1tlbGVtZW50LmlkZW50aWZpZXJdLnJlbW92ZShlbGVtZW50LCB0cnVlKTsKKyAg
ICB9CiAKLSAgICB2YXIgY2FjaGVkRWxlbWVudCA9IHRoaXMuZ2V0Q2FjaGVkVHJlZUVsZW1lbnQo
cmVwcmVzZW50ZWRPYmplY3QpOwotICAgIGlmIChjYWNoZWRFbGVtZW50KQotICAgICAgICByZXR1
cm4gY2FjaGVkRWxlbWVudDsKLQotICAgIC8vIFRoZSByZXByZXNlbnRlZE9iamVjdCBpc24ndCBr
bm93biwgc28gd2Ugc3RhcnQgYXQgdGhlIHRvcCBvZiB0aGUgdHJlZSBhbmQgd29yayBkb3duIHRv
IGZpbmQgdGhlIGZpcnN0Ci0gICAgLy8gdHJlZSBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyByZXBy
ZXNlbnRlZE9iamVjdCBvciBvbmUgb2YgaXRzIGFuY2VzdG9ycy4KLSAgICB2YXIgaXRlbTsKLSAg
ICB2YXIgZm91bmQgPSBmYWxzZTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRy
ZW4ubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaXRlbSA9IHRoaXMuY2hpbGRyZW5baV07Ci0gICAg
ICAgIGlmIChpdGVtLnJlcHJlc2VudGVkT2JqZWN0ID09PSByZXByZXNlbnRlZE9iamVjdCB8fCAo
aXNBbmNlc3RvciAmJiBpc0FuY2VzdG9yKGl0ZW0ucmVwcmVzZW50ZWRPYmplY3QsIHJlcHJlc2Vu
dGVkT2JqZWN0KSkpIHsKLSAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIGJy
ZWFrOworICAgIF9mb3JnZXRDaGlsZHJlblJlY3Vyc2l2ZShwYXJlbnRFbGVtZW50KQorICAgIHsK
KyAgICAgICAgdmFyIGNoaWxkID0gcGFyZW50RWxlbWVudC5jaGlsZHJlblswXTsKKyAgICAgICAg
d2hpbGUgKGNoaWxkKSB7CisgICAgICAgICAgICB0aGlzLl9mb3JnZXRUcmVlRWxlbWVudChjaGls
ZCk7CisgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KGZh
bHNlLCBwYXJlbnRFbGVtZW50LCB0cnVlKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgh
Zm91bmQpCisgICAgZ2V0Q2FjaGVkVHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3QpCisgICAg
eworICAgICAgICBpZiAoIXJlcHJlc2VudGVkT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIG51
bGw7CisKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0Ll9fdHJlZUVsZW1lbnRJZGVudGlm
aWVyKSB7CisgICAgICAgICAgICAvLyBJZiB0aGlzIHJlcHJlc2VudGVkT2JqZWN0IGhhcyBhIHRy
ZWUgZWxlbWVudCBpZGVudGlmaWVyLCBhbmQgaXQgaXMgYSBrbm93biBUcmVlRWxlbWVudAorICAg
ICAgICAgICAgLy8gaW4gb3VyIHRyZWUgd2UgY2FuIGp1c3QgcmV0dXJuIHRoYXQgdHJlZSBlbGVt
ZW50LgorICAgICAgICAgICAgdmFyIGVsZW1lbnRzID0gdGhpcy5fa25vd25UcmVlRWxlbWVudHNb
cmVwcmVzZW50ZWRPYmplY3QuX190cmVlRWxlbWVudElkZW50aWZpZXJdOworICAgICAgICAgICAg
aWYgKGVsZW1lbnRzKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVt
ZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnJl
cHJlc2VudGVkT2JqZWN0ID09PSByZXByZXNlbnRlZE9iamVjdCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBlbGVtZW50c1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAg
ICAgICByZXR1cm4gbnVsbDsKLQotICAgIC8vIE1ha2Ugc3VyZSB0aGUgaXRlbSB0aGF0IHdlIGZv
dW5kIGlzIGNvbm5lY3RlZCB0byB0aGUgcm9vdCBvZiB0aGUgdHJlZS4KLSAgICAvLyBCdWlsZCB1
cCBhIGxpc3Qgb2YgcmVwcmVzZW50ZWRPYmplY3QncyBhbmNlc3RvcnMgdGhhdCBhcmVuJ3QgYWxy
ZWFkeSBpbiBvdXIgdHJlZS4KLSAgICB2YXIgYW5jZXN0b3JzID0gW107Ci0gICAgdmFyIGN1cnJl
bnRPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdDsKLSAgICB3aGlsZSAoY3VycmVudE9iamVjdCkg
ewotICAgICAgICBhbmNlc3RvcnMudW5zaGlmdChjdXJyZW50T2JqZWN0KTsKLSAgICAgICAgaWYg
KGN1cnJlbnRPYmplY3QgPT09IGl0ZW0ucmVwcmVzZW50ZWRPYmplY3QpCi0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY3VycmVudE9iamVjdCA9IGdldFBhcmVudChjdXJyZW50T2JqZWN0KTsK
ICAgICB9CiAKLSAgICAvLyBGb3IgZWFjaCBvZiB0aG9zZSBhbmNlc3RvcnMgd2UgcG9wdWxhdGUg
dGhlbSB0byBmaWxsIGluIHRoZSB0cmVlLgotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5jZXN0
b3JzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBjYWxsIGZp
bmRUcmVlRWxlbWVudCB3aXRoIHRoZSBzYW1lIHJlcHJlc2VudGVkT2JqZWN0Ci0gICAgICAgIC8v
IGFnYWluLCB0byBwcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbi4KLSAgICAgICAgaWYgKGFuY2Vz
dG9yc1tpXSA9PT0gcmVwcmVzZW50ZWRPYmplY3QpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICAvLyBGSVhNRTogd2UgY291bGQgZG8gc29tZXRoaW5nIGZhc3RlciB0aGFuIGZpbmRU
cmVlRWxlbWVudCBzaW5jZSB3ZSB3aWxsIGtub3cgdGhlIG5leHQKLSAgICAgICAgLy8gYW5jZXN0
b3IgZXhpc3RzIGluIHRoZSB0cmVlLgotICAgICAgICBpdGVtID0gdGhpcy5maW5kVHJlZUVsZW1l
bnQoYW5jZXN0b3JzW2ldLCBpc0FuY2VzdG9yLCBnZXRQYXJlbnQpOwotICAgICAgICBpZiAoaXRl
bSkKLSAgICAgICAgICAgIGl0ZW0ub25wb3B1bGF0ZSgpOwotICAgIH0KKyAgICBmaW5kVHJlZUVs
ZW1lbnQocmVwcmVzZW50ZWRPYmplY3QsIGlzQW5jZXN0b3IsIGdldFBhcmVudCkKKyAgICB7Cisg
ICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsK
KworICAgICAgICB2YXIgY2FjaGVkRWxlbWVudCA9IHRoaXMuZ2V0Q2FjaGVkVHJlZUVsZW1lbnQo
cmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICBpZiAoY2FjaGVkRWxlbWVudCkKKyAgICAgICAg
ICAgIHJldHVybiBjYWNoZWRFbGVtZW50OworCisgICAgICAgIC8vIFRoZSByZXByZXNlbnRlZE9i
amVjdCBpc24ndCBrbm93biwgc28gd2Ugc3RhcnQgYXQgdGhlIHRvcCBvZiB0aGUgdHJlZSBhbmQg
d29yayBkb3duIHRvIGZpbmQgdGhlIGZpcnN0CisgICAgICAgIC8vIHRyZWUgZWxlbWVudCB0aGF0
IHJlcHJlc2VudHMgcmVwcmVzZW50ZWRPYmplY3Qgb3Igb25lIG9mIGl0cyBhbmNlc3RvcnMuCisg
ICAgICAgIHZhciBpdGVtOworICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICBpdGVtID0gdGhpcy5jaGlsZHJlbltpXTsKKyAgICAgICAgICAgIGlmIChpdGVtLnJlcHJlc2Vu
dGVkT2JqZWN0ID09PSByZXByZXNlbnRlZE9iamVjdCB8fCAoaXNBbmNlc3RvciAmJiBpc0FuY2Vz
dG9yKGl0ZW0ucmVwcmVzZW50ZWRPYmplY3QsIHJlcHJlc2VudGVkT2JqZWN0KSkpIHsKKyAgICAg
ICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KIAotICAgIHJldHVybiB0aGlzLmdldENhY2hlZFRyZWVFbGVtZW50
KHJlcHJlc2VudGVkT2JqZWN0KTsKLX07CisgICAgICAgIGlmICghZm91bmQpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKKworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGl0ZW0gdGhhdCB3ZSBm
b3VuZCBpcyBjb25uZWN0ZWQgdG8gdGhlIHJvb3Qgb2YgdGhlIHRyZWUuCisgICAgICAgIC8vIEJ1
aWxkIHVwIGEgbGlzdCBvZiByZXByZXNlbnRlZE9iamVjdCdzIGFuY2VzdG9ycyB0aGF0IGFyZW4n
dCBhbHJlYWR5IGluIG91ciB0cmVlLgorICAgICAgICB2YXIgYW5jZXN0b3JzID0gW107CisgICAg
ICAgIHZhciBjdXJyZW50T2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgIHdoaWxl
IChjdXJyZW50T2JqZWN0KSB7CisgICAgICAgICAgICBhbmNlc3RvcnMudW5zaGlmdChjdXJyZW50
T2JqZWN0KTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50T2JqZWN0ID09PSBpdGVtLnJlcHJlc2Vu
dGVkT2JqZWN0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY3VycmVudE9i
amVjdCA9IGdldFBhcmVudChjdXJyZW50T2JqZWN0KTsKKyAgICAgICAgfQogCi1UcmVlT3V0bGlu
ZS5wcm90b3R5cGUuX3RyZWVFbGVtZW50RGlkQ2hhbmdlID0gZnVuY3Rpb24odHJlZUVsZW1lbnQp
Ci17Ci0gICAgaWYgKHRyZWVFbGVtZW50LnRyZWVPdXRsaW5lICE9PSB0aGlzKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIC8vIEZvciBlYWNoIG9mIHRob3NlIGFuY2VzdG9ycyB3ZSBwb3B1bGF0
ZSB0aGVtIHRvIGZpbGwgaW4gdGhlIHRyZWUuCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YW5jZXN0b3JzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9u
J3QgY2FsbCBmaW5kVHJlZUVsZW1lbnQgd2l0aCB0aGUgc2FtZSByZXByZXNlbnRlZE9iamVjdAor
ICAgICAgICAgICAgLy8gYWdhaW4sIHRvIHByZXZlbnQgaW5maW5pdGUgcmVjdXJzaW9uLgorICAg
ICAgICAgICAgaWYgKGFuY2VzdG9yc1tpXSA9PT0gcmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBz
b21ldGhpbmcgZmFzdGVyIHRoYW4gZmluZFRyZWVFbGVtZW50IHNpbmNlIHdlIHdpbGwga25vdyB0
aGUgbmV4dAorICAgICAgICAgICAgLy8gYW5jZXN0b3IgZXhpc3RzIGluIHRoZSB0cmVlLgorICAg
ICAgICAgICAgaXRlbSA9IHRoaXMuZmluZFRyZWVFbGVtZW50KGFuY2VzdG9yc1tpXSwgaXNBbmNl
c3RvciwgZ2V0UGFyZW50KTsKKyAgICAgICAgICAgIGlmIChpdGVtKQorICAgICAgICAgICAgICAg
IGl0ZW0ub25wb3B1bGF0ZSgpOworICAgICAgICB9CiAKLSAgICBpZiAodGhpcy5vbmNoYW5nZSkK
LSAgICAgICAgdGhpcy5vbmNoYW5nZSh0cmVlRWxlbWVudCk7Ci19OworICAgICAgICByZXR1cm4g
dGhpcy5nZXRDYWNoZWRUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCk7CisgICAgfQogCi1U
cmVlT3V0bGluZS5wcm90b3R5cGUudHJlZUVsZW1lbnRGcm9tTm9kZSA9IGZ1bmN0aW9uKG5vZGUp
Ci17Ci0gICAgdmFyIGxpc3ROb2RlID0gbm9kZS5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVO
YW1lSW5BcnJheShbIm9sIiwgImxpIl0pOwotICAgIGlmIChsaXN0Tm9kZSkKLSAgICAgICAgcmV0
dXJuIGxpc3ROb2RlLnBhcmVudFRyZWVFbGVtZW50IHx8IGxpc3ROb2RlLnRyZWVFbGVtZW50Owot
ICAgIHJldHVybiBudWxsOwotfTsKKyAgICBfdHJlZUVsZW1lbnREaWRDaGFuZ2UodHJlZUVsZW1l
bnQpCisgICAgeworICAgICAgICBpZiAodHJlZUVsZW1lbnQudHJlZU91dGxpbmUgIT09IHRoaXMp
CisgICAgICAgICAgICByZXR1cm47CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS50cmVlRWxlbWVu
dEZyb21Qb2ludCA9IGZ1bmN0aW9uKHgsIHkpCi17Ci0gICAgdmFyIG5vZGUgPSB0aGlzLl9jaGls
ZHJlbkxpc3ROb2RlLm93bmVyRG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KTsKLSAgICBp
ZiAoIW5vZGUpCisgICAgICAgIGlmICh0aGlzLm9uY2hhbmdlKQorICAgICAgICAgICAgdGhpcy5v
bmNoYW5nZSh0cmVlRWxlbWVudCk7CisgICAgfQorCisgICAgdHJlZUVsZW1lbnRGcm9tTm9kZShu
b2RlKQorICAgIHsKKyAgICAgICAgdmFyIGxpc3ROb2RlID0gbm9kZS5lbmNsb3NpbmdOb2RlT3JT
ZWxmV2l0aE5vZGVOYW1lSW5BcnJheShbIm9sIiwgImxpIl0pOworICAgICAgICBpZiAobGlzdE5v
ZGUpCisgICAgICAgICAgICByZXR1cm4gbGlzdE5vZGUucGFyZW50VHJlZUVsZW1lbnQgfHwgbGlz
dE5vZGUudHJlZUVsZW1lbnQ7CiAgICAgICAgIHJldHVybiBudWxsOworICAgIH0KIAotICAgIHJl
dHVybiB0aGlzLnRyZWVFbGVtZW50RnJvbU5vZGUobm9kZSk7Ci19OworICAgIHRyZWVFbGVtZW50
RnJvbVBvaW50KHgsIHkpCisgICAgeworICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2NoaWxkcmVu
TGlzdE5vZGUub3duZXJEb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHgsIHkpOworICAgICAgICBp
ZiAoIW5vZGUpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotVHJlZU91dGxpbmUucHJvdG90
eXBlLl90cmVlS2V5RG93biA9IGZ1bmN0aW9uKGV2ZW50KQotewotICAgIGlmIChldmVudC50YXJn
ZXQgIT09IHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50Lm1l
dGFLZXkgfHwgZXZlbnQuY3RybEtleSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdmFyIGhhbmRs
ZWQgPSBmYWxzZTsKLSAgICB2YXIgbmV4dFNlbGVjdGVkRWxlbWVudDsKLSAgICBpZiAoZXZlbnQu
a2V5SWRlbnRpZmllciA9PT0gIlVwIiAmJiAhZXZlbnQuYWx0S2V5KSB7Ci0gICAgICAgIG5leHRT
ZWxlY3RlZEVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQudHJhdmVyc2VQcmV2aW91
c1RyZWVFbGVtZW50KHRydWUpOwotICAgICAgICB3aGlsZSAobmV4dFNlbGVjdGVkRWxlbWVudCAm
JiAhbmV4dFNlbGVjdGVkRWxlbWVudC5zZWxlY3RhYmxlKQotICAgICAgICAgICAgbmV4dFNlbGVj
dGVkRWxlbWVudCA9IG5leHRTZWxlY3RlZEVsZW1lbnQudHJhdmVyc2VQcmV2aW91c1RyZWVFbGVt
ZW50KCF0aGlzLmV4cGFuZFRyZWVFbGVtZW50c1doZW5BcnJvd2luZyk7Ci0gICAgICAgIGhhbmRs
ZWQgPSBuZXh0U2VsZWN0ZWRFbGVtZW50ID8gdHJ1ZSA6IGZhbHNlOwotICAgIH0gZWxzZSBpZiAo
ZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkRvd24iICYmICFldmVudC5hbHRLZXkpIHsKLSAgICAg
ICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC50cmF2ZXJz
ZU5leHRUcmVlRWxlbWVudCh0cnVlKTsKLSAgICAgICAgd2hpbGUgKG5leHRTZWxlY3RlZEVsZW1l
bnQgJiYgIW5leHRTZWxlY3RlZEVsZW1lbnQuc2VsZWN0YWJsZSkKLSAgICAgICAgICAgIG5leHRT
ZWxlY3RlZEVsZW1lbnQgPSBuZXh0U2VsZWN0ZWRFbGVtZW50LnRyYXZlcnNlTmV4dFRyZWVFbGVt
ZW50KCF0aGlzLmV4cGFuZFRyZWVFbGVtZW50c1doZW5BcnJvd2luZyk7Ci0gICAgICAgIGhhbmRs
ZWQgPSBuZXh0U2VsZWN0ZWRFbGVtZW50ID8gdHJ1ZSA6IGZhbHNlOwotICAgIH0gZWxzZSBpZiAo
ZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkxlZnQiKSB7Ci0gICAgICAgIGlmICh0aGlzLnNlbGVj
dGVkVHJlZUVsZW1lbnQuZXhwYW5kZWQpIHsKLSAgICAgICAgICAgIGlmIChldmVudC5hbHRLZXkp
Ci0gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmNvbGxhcHNlUmVjdXJz
aXZlbHkoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVk
VHJlZUVsZW1lbnQuY29sbGFwc2UoKTsKLSAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwotICAg
ICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5wYXJlbnQgJiYgIXRoaXMu
c2VsZWN0ZWRUcmVlRWxlbWVudC5wYXJlbnQucm9vdCkgewotICAgICAgICAgICAgaGFuZGxlZCA9
IHRydWU7Ci0gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnBhcmVudC5z
ZWxlY3RhYmxlKSB7Ci0gICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IHRoaXMu
c2VsZWN0ZWRUcmVlRWxlbWVudC5wYXJlbnQ7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKG5leHRT
ZWxlY3RlZEVsZW1lbnQgJiYgIW5leHRTZWxlY3RlZEVsZW1lbnQuc2VsZWN0YWJsZSkKLSAgICAg
ICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IG5leHRTZWxlY3RlZEVsZW1lbnQu
cGFyZW50OwotICAgICAgICAgICAgICAgIGhhbmRsZWQgPSBuZXh0U2VsZWN0ZWRFbGVtZW50ID8g
dHJ1ZSA6IGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVs
ZW1lbnQucGFyZW50KQotICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5w
YXJlbnQuY29sbGFwc2UoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRl
bnRpZmllciA9PT0gIlJpZ2h0IikgewotICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUcmVlRWxl
bWVudC5yZXZlYWxlZCgpKSB7Ci0gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQu
cmV2ZWFsKCk7Ci0gICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlm
ICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuaGFzQ2hpbGRyZW4pIHsKLSAgICAgICAgICAgIGhh
bmRsZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gdGhpcy50cmVlRWxlbWVudEZyb21Ob2RlKG5v
ZGUpOworICAgIH0KKworICAgIF90cmVlS2V5RG93bihldmVudCkKKyAgICB7CisgICAgICAgIGlm
IChldmVudC50YXJnZXQgIT09IHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQgfHwgZXZlbnQu
c2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHZhciBoYW5kbGVkID0gZmFsc2U7CisgICAgICAgIHZhciBuZXh0
U2VsZWN0ZWRFbGVtZW50OworICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlVw
IiAmJiAhZXZlbnQuYWx0S2V5KSB7CisgICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0g
dGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnRyYXZlcnNlUHJldmlvdXNUcmVlRWxlbWVudCh0cnVl
KTsKKyAgICAgICAgICAgIHdoaWxlIChuZXh0U2VsZWN0ZWRFbGVtZW50ICYmICFuZXh0U2VsZWN0
ZWRFbGVtZW50LnNlbGVjdGFibGUpCisgICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVu
dCA9IG5leHRTZWxlY3RlZEVsZW1lbnQudHJhdmVyc2VQcmV2aW91c1RyZWVFbGVtZW50KCF0aGlz
LmV4cGFuZFRyZWVFbGVtZW50c1doZW5BcnJvd2luZyk7CisgICAgICAgICAgICBoYW5kbGVkID0g
bmV4dFNlbGVjdGVkRWxlbWVudCA/IHRydWUgOiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChl
dmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93biIgJiYgIWV2ZW50LmFsdEtleSkgeworICAgICAg
ICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC50cmF2
ZXJzZU5leHRUcmVlRWxlbWVudCh0cnVlKTsKKyAgICAgICAgICAgIHdoaWxlIChuZXh0U2VsZWN0
ZWRFbGVtZW50ICYmICFuZXh0U2VsZWN0ZWRFbGVtZW50LnNlbGVjdGFibGUpCisgICAgICAgICAg
ICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IG5leHRTZWxlY3RlZEVsZW1lbnQudHJhdmVyc2VO
ZXh0VHJlZUVsZW1lbnQoIXRoaXMuZXhwYW5kVHJlZUVsZW1lbnRzV2hlbkFycm93aW5nKTsKKyAg
ICAgICAgICAgIGhhbmRsZWQgPSBuZXh0U2VsZWN0ZWRFbGVtZW50ID8gdHJ1ZSA6IGZhbHNlOwor
ICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJMZWZ0IikgewogICAg
ICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5leHBhbmRlZCkgewotICAgICAg
ICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQu
Y2hpbGRyZW5bMF07Ci0gICAgICAgICAgICAgICAgd2hpbGUgKG5leHRTZWxlY3RlZEVsZW1lbnQg
JiYgIW5leHRTZWxlY3RlZEVsZW1lbnQuc2VsZWN0YWJsZSkKLSAgICAgICAgICAgICAgICAgICAg
bmV4dFNlbGVjdGVkRWxlbWVudCA9IG5leHRTZWxlY3RlZEVsZW1lbnQubmV4dFNpYmxpbmc7Ci0g
ICAgICAgICAgICAgICAgaGFuZGxlZCA9IG5leHRTZWxlY3RlZEVsZW1lbnQgPyB0cnVlIDogZmFs
c2U7Ci0gICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChldmVudC5hbHRL
ZXkpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5leHBhbmRS
ZWN1cnNpdmVseSgpOworICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1l
bnQuY29sbGFwc2VSZWN1cnNpdmVseSgpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZCgpOworICAgICAgICAg
ICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuY29sbGFwc2UoKTsKKyAgICAgICAg
ICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxl
Y3RlZFRyZWVFbGVtZW50LnBhcmVudCAmJiAhdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnBhcmVu
dC5yb290KSB7CisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5wYXJlbnQuc2VsZWN0YWJsZSkgeworICAg
ICAgICAgICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5zZWxlY3RlZFRyZWVF
bGVtZW50LnBhcmVudDsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG5leHRTZWxlY3RlZEVs
ZW1lbnQgJiYgIW5leHRTZWxlY3RlZEVsZW1lbnQuc2VsZWN0YWJsZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQgPSBuZXh0U2VsZWN0ZWRFbGVtZW50LnBhcmVu
dDsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IG5leHRTZWxlY3RlZEVsZW1lbnQgPyB0
cnVlIDogZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkVHJl
ZUVsZW1lbnQucGFyZW50KQorICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVs
ZW1lbnQucGFyZW50LmNvbGxhcHNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBp
ZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlJpZ2h0IikgeworICAgICAgICAgICAgaWYgKCF0
aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucmV2ZWFsZWQoKSkgeworICAgICAgICAgICAgICAgIHRo
aXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXZlYWwoKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50
Lmhhc0NoaWxkcmVuKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5leHBhbmRlZCkgeworICAgICAg
ICAgICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVt
ZW50LmNoaWxkcmVuWzBdOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAobmV4dFNlbGVjdGVk
RWxlbWVudCAmJiAhbmV4dFNlbGVjdGVkRWxlbWVudC5zZWxlY3RhYmxlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IG5leHRTZWxlY3RlZEVsZW1lbnQubmV4
dFNpYmxpbmc7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSBuZXh0U2VsZWN0ZWRFbGVt
ZW50ID8gdHJ1ZSA6IGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChldmVudC5hbHRLZXkpCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LnNlbGVjdGVkVHJlZUVsZW1lbnQuZXhwYW5kUmVjdXJzaXZlbHkoKTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVt
ZW50LmV4cGFuZCgpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09PSA4IC8qIEJhY2tzcGFjZSAqLyB8fCBldmVudC5r
ZXlDb2RlID09PSA0NiAvKiBEZWxldGUgKi8pIHsKKyAgICAgICAgICAgIGlmICh0aGlzLnNlbGVj
dGVkVHJlZUVsZW1lbnQub25kZWxldGUpCisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMu
c2VsZWN0ZWRUcmVlRWxlbWVudC5vbmRlbGV0ZSgpOworICAgICAgICAgICAgaWYgKCFoYW5kbGVk
ICYmIHRoaXMudHJlZU91dGxpbmUub25kZWxldGUpCisgICAgICAgICAgICAgICAgaGFuZGxlZCA9
IHRoaXMudHJlZU91dGxpbmUub25kZWxldGUodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50KTsKKyAg
ICAgICAgfSBlbHNlIGlmIChpc0VudGVyS2V5KGV2ZW50KSkgeworICAgICAgICAgICAgaWYgKHRo
aXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5vbmVudGVyKQorICAgICAgICAgICAgICAgIGhhbmRsZWQg
PSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQub25lbnRlcigpOworICAgICAgICAgICAgaWYgKCFo
YW5kbGVkICYmIHRoaXMudHJlZU91dGxpbmUub25lbnRlcikKKyAgICAgICAgICAgICAgICBoYW5k
bGVkID0gdGhpcy50cmVlT3V0bGluZS5vbmVudGVyKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCk7
CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAyMCIgLyog
U3BhY2UgKi8pIHsKKyAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQub25z
cGFjZSkKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50
Lm9uc3BhY2UoKTsKKyAgICAgICAgICAgIGlmICghaGFuZGxlZCAmJiB0aGlzLnRyZWVPdXRsaW5l
Lm9uc3BhY2UpCisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMudHJlZU91dGxpbmUub25z
cGFjZSh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KG5leHRTZWxlY3RlZEVsZW1lbnQpIHsKKyAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQu
cmV2ZWFsKCk7CisgICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50LnNlbGVjdChmYWxzZSwg
dHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaGFuZGxlZCkgeworICAgICAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2RlID09PSA4IC8qIEJh
Y2tzcGFjZSAqLyB8fCBldmVudC5rZXlDb2RlID09PSA0NiAvKiBEZWxldGUgKi8pIHsKLSAgICAg
ICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5vbmRlbGV0ZSkKLSAgICAgICAgICAgIGhh
bmRsZWQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQub25kZWxldGUoKTsKLSAgICAgICAgaWYg
KCFoYW5kbGVkICYmIHRoaXMudHJlZU91dGxpbmUub25kZWxldGUpCi0gICAgICAgICAgICBoYW5k
bGVkID0gdGhpcy50cmVlT3V0bGluZS5vbmRlbGV0ZSh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQp
OwotICAgIH0gZWxzZSBpZiAoaXNFbnRlcktleShldmVudCkpIHsKLSAgICAgICAgaWYgKHRoaXMu
c2VsZWN0ZWRUcmVlRWxlbWVudC5vbmVudGVyKQotICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMu
c2VsZWN0ZWRUcmVlRWxlbWVudC5vbmVudGVyKCk7Ci0gICAgICAgIGlmICghaGFuZGxlZCAmJiB0
aGlzLnRyZWVPdXRsaW5lLm9uZW50ZXIpCi0gICAgICAgICAgICBoYW5kbGVkID0gdGhpcy50cmVl
T3V0bGluZS5vbmVudGVyKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCk7Ci0gICAgfSBlbHNlIGlm
IChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVSswMDIwIiAvKiBTcGFjZSAqLykgewotICAgICAg
ICBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50Lm9uc3BhY2UpCi0gICAgICAgICAgICBoYW5k
bGVkID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50Lm9uc3BhY2UoKTsKLSAgICAgICAgaWYgKCFo
YW5kbGVkICYmIHRoaXMudHJlZU91dGxpbmUub25zcGFjZSkKLSAgICAgICAgICAgIGhhbmRsZWQg
PSB0aGlzLnRyZWVPdXRsaW5lLm9uc3BhY2UodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50KTsKICAg
ICB9CiAKLSAgICBpZiAobmV4dFNlbGVjdGVkRWxlbWVudCkgewotICAgICAgICBuZXh0U2VsZWN0
ZWRFbGVtZW50LnJldmVhbCgpOwotICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50LnNlbGVjdChm
YWxzZSwgdHJ1ZSk7CisgICAgZXhwYW5kKCkKKyAgICB7CisgICAgICAgIC8vIHRoaXMgaXMgdGhl
IHJvb3QsIGRvIG5vdGhpbmcKICAgICB9CiAKLSAgICBpZiAoaGFuZGxlZCkgewotICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsK
KyAgICBjb2xsYXBzZSgpCisgICAgeworICAgICAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBu
b3RoaW5nCiAgICAgfQotfTsKIAotVHJlZU91dGxpbmUucHJvdG90eXBlLmV4cGFuZCA9IGZ1bmN0
aW9uKCkKLXsKLSAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nCi19OworICAgIHJl
dmVhbGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAotVHJlZU91dGxp
bmUucHJvdG90eXBlLmNvbGxhcHNlID0gZnVuY3Rpb24oKQotewotICAgIC8vIHRoaXMgaXMgdGhl
IHJvb3QsIGRvIG5vdGhpbmcKLX07CisgICAgcmV2ZWFsKCkKKyAgICB7CisgICAgICAgIC8vIHRo
aXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKKyAgICB9CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5yZXZlYWxlZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX07CisgICAgc2Vs
ZWN0KCkKKyAgICB7CisgICAgICAgIC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKKyAg
ICB9CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZXZlYWwgPSBmdW5jdGlvbigpCi17Ci0gICAg
Ly8gdGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGluZworICAgIHJldmVhbEFuZFNlbGVjdChvbWl0
Rm9jdXMpCisgICAgeworICAgICAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nCisg
ICAgfQogfTsKIAotVHJlZU91dGxpbmUucHJvdG90eXBlLnNlbGVjdCA9IGZ1bmN0aW9uKCkKLXsK
LSAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nCi19OworV2ViSW5zcGVjdG9yLlRy
ZWVPdXRsaW5lLl9rbm93blRyZWVFbGVtZW50TmV4dElkZW50aWZpZXIgPSAxOwogCi1UcmVlT3V0
bGluZS5wcm90b3R5cGUucmV2ZWFsQW5kU2VsZWN0ID0gZnVuY3Rpb24ob21pdEZvY3VzKQorV2Vi
SW5zcGVjdG9yLlRyZWVFbGVtZW50ID0gY2xhc3MgVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8gdGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGluZwotfTsK
KyAgICBjb25zdHJ1Y3Rvcih0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKQor
ICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotVHJlZU91dGxpbmUucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworICAgICAgICB0aGlzLl90aXRsZSA9
IHRpdGxlOworICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0ID0gKHJlcHJlc2VudGVkT2Jq
ZWN0IHx8IHt9KTsKIAotZnVuY3Rpb24gVHJlZUVsZW1lbnQodGl0bGUsIHJlcHJlc2VudGVkT2Jq
ZWN0LCBoYXNDaGlsZHJlbikKLXsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2Vi
SW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJ
bnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVk
T2JqZWN0Ll9fdHJlZUVsZW1lbnRJZGVudGlmaWVyKQorICAgICAgICAgICAgdGhpcy5pZGVudGlm
aWVyID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5fX3RyZWVFbGVtZW50SWRlbnRpZmllcjsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aGlzLmlkZW50aWZpZXIgPSBXZWJJbnNwZWN0b3Iu
VHJlZU91dGxpbmUuX2tub3duVHJlZUVsZW1lbnROZXh0SWRlbnRpZmllcisrOworICAgICAgICAg
ICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5fX3RyZWVFbGVtZW50SWRlbnRpZmllciA9IHRoaXMu
aWRlbnRpZmllcjsKKyAgICAgICAgfQogCi0gICAgdGhpcy5fdGl0bGUgPSB0aXRsZTsKLSAgICB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0ID0gKHJlcHJlc2VudGVkT2JqZWN0IHx8IHt9KTsKKyAgICAg
ICAgdGhpcy5faGlkZGVuID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3NlbGVjdGFibGUgPSB0cnVl
OworICAgICAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuc2VsZWN0ZWQg
PSBmYWxzZTsKKyAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IGhhc0NoaWxkcmVuOworICAgICAg
ICB0aGlzLmNoaWxkcmVuID0gW107CisgICAgICAgIHRoaXMudHJlZU91dGxpbmUgPSBudWxsOwor
ICAgICAgICB0aGlzLnBhcmVudCA9IG51bGw7CisgICAgICAgIHRoaXMucHJldmlvdXNTaWJsaW5n
ID0gbnVsbDsKKyAgICAgICAgdGhpcy5uZXh0U2libGluZyA9IG51bGw7CisgICAgICAgIHRoaXMu
X2xpc3RJdGVtTm9kZSA9IG51bGw7CisgICAgfQorCisgICAgLy8gTWV0aG9kcworCisgICAgYXBw
ZW5kQ2hpbGQoKSB7IHJldHVybiBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUucHJvdG90eXBlLmFw
cGVuZENoaWxkLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KKyAgICBpbnNlcnRDaGlsZCgpIHsg
cmV0dXJuIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQuYXBw
bHkodGhpcywgYXJndW1lbnRzKTsgfQorICAgIHJlbW92ZUNoaWxkKCkgeyByZXR1cm4gV2ViSW5z
cGVjdG9yLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1vdmVDaGlsZC5hcHBseSh0aGlzLCBhcmd1
bWVudHMpOyB9CisgICAgcmVtb3ZlQ2hpbGRBdEluZGV4KCkgeyByZXR1cm4gV2ViSW5zcGVjdG9y
LlRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1vdmVDaGlsZEF0SW5kZXguYXBwbHkodGhpcywgYXJn
dW1lbnRzKTsgfQorICAgIHJlbW92ZUNoaWxkcmVuKCkgeyByZXR1cm4gV2ViSW5zcGVjdG9yLlRy
ZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbi5hcHBseSh0aGlzLCBhcmd1bWVudHMp
OyB9CisgICAgcmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUoKSB7IHJldHVybiBXZWJJbnNwZWN0b3Iu
VHJlZU91dGxpbmUucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlLmFwcGx5KHRoaXMs
IGFyZ3VtZW50cyk7IH0KIAotICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Ll9fdHJlZUVs
ZW1lbnRJZGVudGlmaWVyKQotICAgICAgICB0aGlzLmlkZW50aWZpZXIgPSB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0Ll9fdHJlZUVsZW1lbnRJZGVudGlmaWVyOwotICAgIGVsc2UgewotICAgICAgICB0
aGlzLmlkZW50aWZpZXIgPSBUcmVlT3V0bGluZS5fa25vd25UcmVlRWxlbWVudE5leHRJZGVudGlm
aWVyKys7Ci0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuX190cmVlRWxlbWVudElkZW50
aWZpZXIgPSB0aGlzLmlkZW50aWZpZXI7CisgICAgZ2V0IGFycm93VG9nZ2xlV2lkdGgoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIDEwOwogICAgIH0KIAotICAgIHRoaXMuX2hpZGRlbiA9IGZhbHNl
OwotICAgIHRoaXMuX3NlbGVjdGFibGUgPSB0cnVlOwotICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxz
ZTsKLSAgICB0aGlzLnNlbGVjdGVkID0gZmFsc2U7Ci0gICAgdGhpcy5oYXNDaGlsZHJlbiA9IGhh
c0NoaWxkcmVuOwotICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICB0aGlzLnRyZWVPdXRsaW5l
ID0gbnVsbDsKLSAgICB0aGlzLnBhcmVudCA9IG51bGw7Ci0gICAgdGhpcy5wcmV2aW91c1NpYmxp
bmcgPSBudWxsOwotICAgIHRoaXMubmV4dFNpYmxpbmcgPSBudWxsOwotICAgIHRoaXMuX2xpc3RJ
dGVtTm9kZSA9IG51bGw7Ci19Ci0KLVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogVHJlZUVsZW1lbnQsCi0KLSAgICBhcnJvd1RvZ2dsZVdpZHRoOiAxMCwKLQotICAg
IGdldCBzZWxlY3RhYmxlKCkgeworICAgIGdldCBzZWxlY3RhYmxlKCkKKyAgICB7CiAgICAgICAg
IGlmICh0aGlzLl9oaWRkZW4pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zZWxlY3RhYmxlOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0IHNlbGVjdGFi
bGUoeCkgeworICAgIHNldCBzZWxlY3RhYmxlKHgpCisgICAgewogICAgICAgICB0aGlzLl9zZWxl
Y3RhYmxlID0geDsKLSAgICB9LAorICAgIH0KIAotICAgIGdldCBsaXN0SXRlbUVsZW1lbnQoKSB7
CisgICAgZ2V0IGxpc3RJdGVtRWxlbWVudCgpCisgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
bGlzdEl0ZW1Ob2RlOwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0IGNoaWxkcmVuTGlzdEVsZW1l
bnQoKSB7CisgICAgZ2V0IGNoaWxkcmVuTGlzdEVsZW1lbnQoKQorICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXQgdGl0
bGUoKSB7CisgICAgZ2V0IHRpdGxlKCkKKyAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90aXRs
ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNldCB0aXRsZSh4KSB7CisgICAgc2V0IHRpdGxlKHgp
CisgICAgewogICAgICAgICB0aGlzLl90aXRsZSA9IHg7CiAgICAgICAgIHRoaXMuX3NldExpc3RJ
dGVtTm9kZUNvbnRlbnQoKTsKICAgICAgICAgdGhpcy5kaWRDaGFuZ2UoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGdldCB0aXRsZUhUTUwoKSB7CisgICAgZ2V0IHRpdGxlSFRNTCgpCisgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGVIVE1MOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0
IHRpdGxlSFRNTCh4KSB7CisgICAgc2V0IHRpdGxlSFRNTCh4KQorICAgIHsKICAgICAgICAgdGhp
cy5fdGl0bGVIVE1MID0geDsKICAgICAgICAgdGhpcy5fc2V0TGlzdEl0ZW1Ob2RlQ29udGVudCgp
OwogICAgICAgICB0aGlzLmRpZENoYW5nZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0IHRv
b2x0aXAoKSB7CisgICAgZ2V0IHRvb2x0aXAoKQorICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3Rvb2x0aXA7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXQgdG9vbHRpcCh4KSB7CisgICAgc2V0
IHRvb2x0aXAoeCkKKyAgICB7CiAgICAgICAgIHRoaXMuX3Rvb2x0aXAgPSB4OwogICAgICAgICBp
ZiAodGhpcy5fbGlzdEl0ZW1Ob2RlKQogICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLnRp
dGxlID0geCA/IHggOiAiIjsKICAgICAgICAgdGhpcy5kaWRDaGFuZ2UoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGdldCBoYXNDaGlsZHJlbigpIHsKKyAgICBnZXQgaGFzQ2hpbGRyZW4oKQorICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0NoaWxkcmVuOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2V0IGhhc0NoaWxkcmVuKHgpIHsKKyAgICBzZXQgaGFzQ2hpbGRyZW4oeCkKKyAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9oYXNDaGlsZHJlbiA9PT0geCkKICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtNjA1LDEzICs2MjgsMTUgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgdGhpcy5kaWRDaGFuZ2UoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGdl
dCBoaWRkZW4oKSB7CisgICAgZ2V0IGhpZGRlbigpCisgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5faGlkZGVuOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0IGhpZGRlbih4KSB7CisgICAgc2V0
IGhpZGRlbih4KQorICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2hpZGRlbiA9PT0geCkKICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtNjMxLDI3ICs2NTYsMjkgQEAgVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lICYmIHRoaXMudHJlZU91dGxp
bmUub25oaWRkZW4pCiAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uaGlkZGVuKHRoaXMs
IHgpOwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0IHNob3VsZFJlZnJlc2hDaGlsZHJlbigpIHsK
KyAgICBnZXQgc2hvdWxkUmVmcmVzaENoaWxkcmVuKCkKKyAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zaG91bGRSZWZyZXNoQ2hpbGRyZW47Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXQgc2hv
dWxkUmVmcmVzaENoaWxkcmVuKHgpIHsKKyAgICBzZXQgc2hvdWxkUmVmcmVzaENoaWxkcmVuKHgp
CisgICAgewogICAgICAgICB0aGlzLl9zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB4OwogICAgICAg
ICBpZiAoeCAmJiB0aGlzLmV4cGFuZGVkKQogICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9maXJlRGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgX2ZpcmVE
aWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgZGVsZXRlIHRoaXMuX2RpZENoYW5nZVRpbWVvdXRJ
ZGVudGlmaWVyOwogCiAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lKQogICAgICAgICAgICAg
dGhpcy50cmVlT3V0bGluZS5fdHJlZUVsZW1lbnREaWRDaGFuZ2UodGhpcyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBkaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBkaWRDaGFuZ2UoKQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5lKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NjU5LDkgKzY4Niw5IEBAIFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gUHJl
dmVudCB0ZWxsaW5nIHRoZSBUcmVlT3V0bGluZSBtdWx0aXBsZSB0aW1lcyBpbiBhIHJvdyBieSBk
ZWxheWluZyBpdCB3aXRoIGEgdGltZW91dC4KICAgICAgICAgaWYgKCF0aGlzLl9kaWRDaGFuZ2VU
aW1lb3V0SWRlbnRpZmllcikKICAgICAgICAgICAgIHRoaXMuX2RpZENoYW5nZVRpbWVvdXRJZGVu
dGlmaWVyID0gc2V0VGltZW91dCh0aGlzLl9maXJlRGlkQ2hhbmdlLmJpbmQodGhpcyksIDApOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3NldExpc3RJdGVtTm9kZUNvbnRlbnQ6IGZ1bmN0aW9uKCkK
KyAgICBfc2V0TGlzdEl0ZW1Ob2RlQ29udGVudCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
X2xpc3RJdGVtTm9kZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY3OSw0MDEgKzcwNiwzOTMg
QEAgVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1O
b2RlLmFwcGVuZENoaWxkKHRoaXMuX3RpdGxlKTsKICAgICAgICAgfQogICAgIH0KLX07CiAKLVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5h
cHBlbmRDaGlsZDsKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5pbnNlcnRDaGlsZCA9IFRyZWVPdXRs
aW5lLnByb3RvdHlwZS5pbnNlcnRDaGlsZDsKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVD
aGlsZCA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1vdmVDaGlsZDsKLVRyZWVFbGVtZW50LnBy
b3RvdHlwZS5yZW1vdmVDaGlsZEF0SW5kZXggPSBUcmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3Zl
Q2hpbGRBdEluZGV4OwotVHJlZUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuID0gVHJl
ZU91dGxpbmUucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuOwotVHJlZUVsZW1lbnQucHJvdG90eXBl
LnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlID0gVHJlZU91dGxpbmUucHJvdG90eXBlLnJlbW92ZUNo
aWxkcmVuUmVjdXJzaXZlOworICAgIF9hdHRhY2goKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlz
Ll9saXN0SXRlbU5vZGUgfHwgdGhpcy5wYXJlbnQuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbikgewor
ICAgICAgICAgICAgaWYgKHRoaXMuX2xpc3RJdGVtTm9kZSAmJiB0aGlzLl9saXN0SXRlbU5vZGUu
cGFyZW50Tm9kZSkKKyAgICAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZCh0aGlzLl9saXN0SXRlbU5vZGUpOwogCi1UcmVlRWxlbWVudC5wcm90b3R5
cGUuX2F0dGFjaCA9IGZ1bmN0aW9uKCkKLXsKLSAgICBpZiAoIXRoaXMuX2xpc3RJdGVtTm9kZSB8
fCB0aGlzLnBhcmVudC5fc2hvdWxkUmVmcmVzaENoaWxkcmVuKSB7Ci0gICAgICAgIGlmICh0aGlz
Ll9saXN0SXRlbU5vZGUgJiYgdGhpcy5fbGlzdEl0ZW1Ob2RlLnBhcmVudE5vZGUpCi0gICAgICAg
ICAgICB0aGlzLl9saXN0SXRlbU5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9saXN0
SXRlbU5vZGUpOworICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlID0gdGhpcy50cmVlT3V0
bGluZS5fY2hpbGRyZW5MaXN0Tm9kZS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7
CisgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUudHJlZUVsZW1lbnQgPSB0aGlzOworICAg
ICAgICAgICAgdGhpcy5fc2V0TGlzdEl0ZW1Ob2RlQ29udGVudCgpOworICAgICAgICAgICAgdGhp
cy5fbGlzdEl0ZW1Ob2RlLnRpdGxlID0gdGhpcy5fdG9vbHRpcCA/IHRoaXMuX3Rvb2x0aXAgOiAi
IjsKIAotICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUgPSB0aGlzLnRyZWVPdXRsaW5lLl9jaGls
ZHJlbkxpc3ROb2RlLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKLSAgICAgICAg
dGhpcy5fbGlzdEl0ZW1Ob2RlLnRyZWVFbGVtZW50ID0gdGhpczsKLSAgICAgICAgdGhpcy5fc2V0
TGlzdEl0ZW1Ob2RlQ29udGVudCgpOwotICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUudGl0bGUg
PSB0aGlzLl90b29sdGlwID8gdGhpcy5fdG9vbHRpcCA6ICIiOworICAgICAgICAgICAgaWYgKHRo
aXMuaGlkZGVuKQorICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3Qu
YWRkKCJoaWRkZW4iKTsKKyAgICAgICAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuKQorICAgICAg
ICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJwYXJlbnQiKTsKKyAg
ICAgICAgICAgIGlmICh0aGlzLmV4cGFuZGVkKQorICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJ
dGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJleHBhbmRlZCIpOworICAgICAgICAgICAgaWYgKHRoaXMu
c2VsZWN0ZWQpCisgICAgICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5h
ZGQoInNlbGVjdGVkIik7CisKKyAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZWRvd24iLCBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQudHJlZUVsZW1l
bnRNb3VzZURvd24sIGZhbHNlKTsKKyAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudC50cmVlRWxlbWVu
dFRvZ2dsZWQsIGZhbHNlKTsKKyAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVu
dExpc3RlbmVyKCJkYmxjbGljayIsIFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudC50cmVlRWxlbWVu
dERvdWJsZUNsaWNrZWQsIGZhbHNlKTsKKworICAgICAgICAgICAgaWYgKHRoaXMub25hdHRhY2gp
CisgICAgICAgICAgICAgICAgdGhpcy5vbmF0dGFjaCh0aGlzKTsKKyAgICAgICAgfQogCi0gICAg
ICAgIGlmICh0aGlzLmhpZGRlbikKLSAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFz
c0xpc3QuYWRkKCJoaWRkZW4iKTsKLSAgICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4pCi0gICAg
ICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgicGFyZW50Iik7Ci0gICAg
ICAgIGlmICh0aGlzLmV4cGFuZGVkKQotICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNs
YXNzTGlzdC5hZGQoImV4cGFuZGVkIik7CisgICAgICAgIHZhciBuZXh0U2libGluZyA9IG51bGw7
CisgICAgICAgIGlmICh0aGlzLm5leHRTaWJsaW5nICYmIHRoaXMubmV4dFNpYmxpbmcuX2xpc3RJ
dGVtTm9kZSAmJiB0aGlzLm5leHRTaWJsaW5nLl9saXN0SXRlbU5vZGUucGFyZW50Tm9kZSA9PT0g
dGhpcy5wYXJlbnQuX2NoaWxkcmVuTGlzdE5vZGUpCisgICAgICAgICAgICBuZXh0U2libGluZyA9
IHRoaXMubmV4dFNpYmxpbmcuX2xpc3RJdGVtTm9kZTsKKyAgICAgICAgdGhpcy5wYXJlbnQuX2No
aWxkcmVuTGlzdE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX2xpc3RJdGVtTm9kZSwgbmV4dFNpYmxp
bmcpOworICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSkKKyAgICAgICAgICAgIHRo
aXMucGFyZW50Ll9jaGlsZHJlbkxpc3ROb2RlLmluc2VydEJlZm9yZSh0aGlzLl9jaGlsZHJlbkxp
c3ROb2RlLCB0aGlzLl9saXN0SXRlbU5vZGUubmV4dFNpYmxpbmcpOwogICAgICAgICBpZiAodGhp
cy5zZWxlY3RlZCkKLSAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRk
KCJzZWxlY3RlZCIpOwotCi0gICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZWRvd24iLCBUcmVlRWxlbWVudC50cmVlRWxlbWVudE1vdXNlRG93biwgZmFsc2Up
OwotICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBU
cmVlRWxlbWVudC50cmVlRWxlbWVudFRvZ2dsZWQsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fbGlz
dEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgVHJlZUVsZW1lbnQudHJlZUVs
ZW1lbnREb3VibGVDbGlja2VkLCBmYWxzZSk7Ci0KLSAgICAgICAgaWYgKHRoaXMub25hdHRhY2gp
Ci0gICAgICAgICAgICB0aGlzLm9uYXR0YWNoKHRoaXMpOworICAgICAgICAgICAgdGhpcy5zZWxl
Y3QoKTsKKyAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpCisgICAgICAgICAgICB0aGlzLmV4cGFu
ZCgpOwogICAgIH0KIAotICAgIHZhciBuZXh0U2libGluZyA9IG51bGw7Ci0gICAgaWYgKHRoaXMu
bmV4dFNpYmxpbmcgJiYgdGhpcy5uZXh0U2libGluZy5fbGlzdEl0ZW1Ob2RlICYmIHRoaXMubmV4
dFNpYmxpbmcuX2xpc3RJdGVtTm9kZS5wYXJlbnROb2RlID09PSB0aGlzLnBhcmVudC5fY2hpbGRy
ZW5MaXN0Tm9kZSkKLSAgICAgICAgbmV4dFNpYmxpbmcgPSB0aGlzLm5leHRTaWJsaW5nLl9saXN0
SXRlbU5vZGU7Ci0gICAgdGhpcy5wYXJlbnQuX2NoaWxkcmVuTGlzdE5vZGUuaW5zZXJ0QmVmb3Jl
KHRoaXMuX2xpc3RJdGVtTm9kZSwgbmV4dFNpYmxpbmcpOwotICAgIGlmICh0aGlzLl9jaGlsZHJl
bkxpc3ROb2RlKQotICAgICAgICB0aGlzLnBhcmVudC5fY2hpbGRyZW5MaXN0Tm9kZS5pbnNlcnRC
ZWZvcmUodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSwgdGhpcy5fbGlzdEl0ZW1Ob2RlLm5leHRTaWJs
aW5nKTsKLSAgICBpZiAodGhpcy5zZWxlY3RlZCkKLSAgICAgICAgdGhpcy5zZWxlY3QoKTsKLSAg
ICBpZiAodGhpcy5leHBhbmRlZCkKLSAgICAgICAgdGhpcy5leHBhbmQoKTsKLX07CisgICAgX2Rl
dGFjaCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5vbmRldGFjaCkKKyAgICAgICAgICAgIHRo
aXMub25kZXRhY2godGhpcyk7CisgICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUgJiYgdGhp
cy5fbGlzdEl0ZW1Ob2RlLnBhcmVudE5vZGUpCisgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5v
ZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9saXN0SXRlbU5vZGUpOworICAgICAgICBp
ZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSAmJiB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLnBhcmVu
dE5vZGUpCisgICAgICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLnBhcmVudE5vZGUucmVt
b3ZlQ2hpbGQodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSk7CisgICAgfQogCi1UcmVlRWxlbWVudC5w
cm90b3R5cGUuX2RldGFjaCA9IGZ1bmN0aW9uKCkKLXsKLSAgICBpZiAodGhpcy5vbmRldGFjaCkK
LSAgICAgICAgdGhpcy5vbmRldGFjaCh0aGlzKTsKLSAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2Rl
ICYmIHRoaXMuX2xpc3RJdGVtTm9kZS5wYXJlbnROb2RlKQotICAgICAgICB0aGlzLl9saXN0SXRl
bU5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9saXN0SXRlbU5vZGUpOwotICAgIGlm
ICh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlICYmIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50
Tm9kZSkKLSAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUpOwotfTsKKyAgICBzdGF0aWMgdHJlZUVsZW1lbnRN
b3VzZURvd24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgZWxlbWVudCA9IGV2ZW50LmN1cnJl
bnRUYXJnZXQ7CisgICAgICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC50cmVlRWxlbWVudCB8
fCAhZWxlbWVudC50cmVlRWxlbWVudC5zZWxlY3RhYmxlKQorICAgICAgICAgICAgcmV0dXJuOwog
Ci1UcmVlRWxlbWVudC50cmVlRWxlbWVudE1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQotewot
ICAgIHZhciBlbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDsKLSAgICBpZiAoIWVsZW1lbnQg
fHwgIWVsZW1lbnQudHJlZUVsZW1lbnQgfHwgIWVsZW1lbnQudHJlZUVsZW1lbnQuc2VsZWN0YWJs
ZSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoZWxlbWVudC50cmVlRWxlbWVudC5pc0V2
ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlKGV2ZW50KSkgeworICAgICAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAg
aWYgKGVsZW1lbnQudHJlZUVsZW1lbnQuaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShl
dmVudCkpIHsKLSAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICBlbGVtZW50LnRyZWVFbGVtZW50LnNlbGVjdE9uTW91c2VEb3duKGV2ZW50KTsK
ICAgICB9CiAKLSAgICBlbGVtZW50LnRyZWVFbGVtZW50LnNlbGVjdE9uTW91c2VEb3duKGV2ZW50
KTsKLX07CisgICAgc3RhdGljIHRyZWVFbGVtZW50VG9nZ2xlZChldmVudCkKKyAgICB7CisgICAg
ICAgIHZhciBlbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDsKKyAgICAgICAgaWYgKCFlbGVt
ZW50IHx8ICFlbGVtZW50LnRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOwogCi1UcmVl
RWxlbWVudC50cmVlRWxlbWVudFRvZ2dsZWQgPSBmdW5jdGlvbihldmVudCkKLXsKLSAgICB2YXIg
ZWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7Ci0gICAgaWYgKCFlbGVtZW50IHx8ICFlbGVt
ZW50LnRyZWVFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICB2YXIgdG9nZ2xlT25DbGlj
ayA9IGVsZW1lbnQudHJlZUVsZW1lbnQudG9nZ2xlT25DbGljayAmJiAhZWxlbWVudC50cmVlRWxl
bWVudC5zZWxlY3RhYmxlOwotICAgIHZhciBpc0luVHJpYW5nbGUgPSBlbGVtZW50LnRyZWVFbGVt
ZW50LmlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQpOwotICAgIGlmICghdG9n
Z2xlT25DbGljayAmJiAhaXNJblRyaWFuZ2xlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
ZWxlbWVudC50cmVlRWxlbWVudC5leHBhbmRlZCkgewotICAgICAgICBpZiAoZXZlbnQuYWx0S2V5
KQotICAgICAgICAgICAgZWxlbWVudC50cmVlRWxlbWVudC5jb2xsYXBzZVJlY3Vyc2l2ZWx5KCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuY29sbGFwc2Uo
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KQotICAgICAgICAgICAg
ZWxlbWVudC50cmVlRWxlbWVudC5leHBhbmRSZWN1cnNpdmVseSgpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBlbGVtZW50LnRyZWVFbGVtZW50LmV4cGFuZCgpOwotICAgIH0KLSAgICBldmVu
dC5zdG9wUHJvcGFnYXRpb24oKTsKLX07CisgICAgICAgIHZhciB0b2dnbGVPbkNsaWNrID0gZWxl
bWVudC50cmVlRWxlbWVudC50b2dnbGVPbkNsaWNrICYmICFlbGVtZW50LnRyZWVFbGVtZW50LnNl
bGVjdGFibGU7CisgICAgICAgIHZhciBpc0luVHJpYW5nbGUgPSBlbGVtZW50LnRyZWVFbGVtZW50
LmlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQpOworICAgICAgICBpZiAoIXRv
Z2dsZU9uQ2xpY2sgJiYgIWlzSW5UcmlhbmdsZSkKKyAgICAgICAgICAgIHJldHVybjsKIAotVHJl
ZUVsZW1lbnQudHJlZUVsZW1lbnREb3VibGVDbGlja2VkID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0g
ICAgdmFyIGVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0OwotICAgIGlmICghZWxlbWVudCB8
fCAhZWxlbWVudC50cmVlRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoZWxl
bWVudC50cmVlRWxlbWVudC5leHBhbmRlZCkgeworICAgICAgICAgICAgaWYgKGV2ZW50LmFsdEtl
eSkKKyAgICAgICAgICAgICAgICBlbGVtZW50LnRyZWVFbGVtZW50LmNvbGxhcHNlUmVjdXJzaXZl
bHkoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbGVtZW50LnRyZWVFbGVt
ZW50LmNvbGxhcHNlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZXZlbnQu
YWx0S2V5KQorICAgICAgICAgICAgICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuZXhwYW5kUmVjdXJz
aXZlbHkoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbGVtZW50LnRyZWVF
bGVtZW50LmV4cGFuZCgpOworICAgICAgICB9CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpOworICAgIH0KIAotICAgIGlmIChlbGVtZW50LnRyZWVFbGVtZW50LmlzRXZlbnRXaXRoaW5E
aXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQpKQotICAgICAgICByZXR1cm47CisgICAgc3RhdGljIHRy
ZWVFbGVtZW50RG91YmxlQ2xpY2tlZChldmVudCkKKyAgICB7CisgICAgICAgIHZhciBlbGVtZW50
ID0gZXZlbnQuY3VycmVudFRhcmdldDsKKyAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50
LnRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGVsZW1lbnQudHJl
ZUVsZW1lbnQub25kYmxjbGljaykKLSAgICAgICAgZWxlbWVudC50cmVlRWxlbWVudC5vbmRibGNs
aWNrLmNhbGwoZWxlbWVudC50cmVlRWxlbWVudCwgZXZlbnQpOwotICAgIGVsc2UgaWYgKGVsZW1l
bnQudHJlZUVsZW1lbnQuaGFzQ2hpbGRyZW4gJiYgIWVsZW1lbnQudHJlZUVsZW1lbnQuZXhwYW5k
ZWQpCi0gICAgICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuZXhwYW5kKCk7Ci19OworICAgICAgICBp
ZiAoZWxlbWVudC50cmVlRWxlbWVudC5pc0V2ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlKGV2
ZW50KSkKKyAgICAgICAgICAgIHJldHVybjsKIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLmNvbGxh
cHNlID0gZnVuY3Rpb24oKQotewotICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUpCi0gICAgICAg
IHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRlZCIpOwotICAgIGlm
ICh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKQotICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2Rl
LmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZGVkIik7CisgICAgICAgIGlmIChlbGVtZW50LnRyZWVF
bGVtZW50Lm9uZGJsY2xpY2spCisgICAgICAgICAgICBlbGVtZW50LnRyZWVFbGVtZW50Lm9uZGJs
Y2xpY2suY2FsbChlbGVtZW50LnRyZWVFbGVtZW50LCBldmVudCk7CisgICAgICAgIGVsc2UgaWYg
KGVsZW1lbnQudHJlZUVsZW1lbnQuaGFzQ2hpbGRyZW4gJiYgIWVsZW1lbnQudHJlZUVsZW1lbnQu
ZXhwYW5kZWQpCisgICAgICAgICAgICBlbGVtZW50LnRyZWVFbGVtZW50LmV4cGFuZCgpOworICAg
IH0KIAotICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTsKLSAgICBpZiAodGhpcy50cmVlT3V0bGlu
ZSkKLSAgICAgICAgdGhpcy50cmVlT3V0bGluZS5fdHJlZUVsZW1lbnRzRXhwYW5kZWRTdGF0ZVt0
aGlzLmlkZW50aWZpZXJdID0gZmFsc2U7CisgICAgY29sbGFwc2UoKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuX2xpc3RJdGVtTm9kZSkKKyAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5j
bGFzc0xpc3QucmVtb3ZlKCJleHBhbmRlZCIpOworICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW5M
aXN0Tm9kZSkKKyAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUuY2xhc3NMaXN0LnJl
bW92ZSgiZXhwYW5kZWQiKTsKIAotICAgIGlmICh0aGlzLm9uY29sbGFwc2UpCi0gICAgICAgIHRo
aXMub25jb2xsYXBzZSh0aGlzKTsKKyAgICAgICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlOworICAg
ICAgICBpZiAodGhpcy50cmVlT3V0bGluZSkKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUu
X3RyZWVFbGVtZW50c0V4cGFuZGVkU3RhdGVbdGhpcy5pZGVudGlmaWVyXSA9IGZhbHNlOwogCi0g
ICAgaWYgKHRoaXMudHJlZU91dGxpbmUgJiYgdGhpcy50cmVlT3V0bGluZS5vbmNvbGxhcHNlKQot
ICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uY29sbGFwc2UodGhpcyk7Ci19OworICAgICAgICBp
ZiAodGhpcy5vbmNvbGxhcHNlKQorICAgICAgICAgICAgdGhpcy5vbmNvbGxhcHNlKHRoaXMpOwog
Ci1UcmVlRWxlbWVudC5wcm90b3R5cGUuY29sbGFwc2VSZWN1cnNpdmVseSA9IGZ1bmN0aW9uKCkK
LXsKLSAgICB2YXIgaXRlbSA9IHRoaXM7Ci0gICAgd2hpbGUgKGl0ZW0pIHsKLSAgICAgICAgaWYg
KGl0ZW0uZXhwYW5kZWQpCi0gICAgICAgICAgICBpdGVtLmNvbGxhcHNlKCk7Ci0gICAgICAgIGl0
ZW0gPSBpdGVtLnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KGZhbHNlLCB0aGlzLCB0cnVlKTsKKyAg
ICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUgJiYgdGhpcy50cmVlT3V0bGluZS5vbmNvbGxhcHNl
KQorICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5vbmNvbGxhcHNlKHRoaXMpOwogICAgIH0K
LX07CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmQgPSBmdW5jdGlvbigpCi17Ci0gICAg
aWYgKHRoaXMuZXhwYW5kZWQgJiYgIXRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiAmJiB0aGlz
Ll9jaGlsZHJlbkxpc3ROb2RlKQotICAgICAgICByZXR1cm47CisgICAgY29sbGFwc2VSZWN1cnNp
dmVseSgpCisgICAgeworICAgICAgICB2YXIgaXRlbSA9IHRoaXM7CisgICAgICAgIHdoaWxlIChp
dGVtKSB7CisgICAgICAgICAgICBpZiAoaXRlbS5leHBhbmRlZCkKKyAgICAgICAgICAgICAgICBp
dGVtLmNvbGxhcHNlKCk7CisgICAgICAgICAgICBpdGVtID0gaXRlbS50cmF2ZXJzZU5leHRUcmVl
RWxlbWVudChmYWxzZSwgdGhpcywgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAvLyBT
ZXQgdGhpcyBiZWZvcmUgb25wb3B1bGF0ZS4gU2luY2Ugb25wb3B1bGF0ZSBjYW4gYWRkIGVsZW1l
bnRzIGFuZCBjYWxsIG9uYWRkLCB0aGlzIG1ha2VzCi0gICAgLy8gc3VyZSB0aGUgZXhwYW5kZWQg
ZmxhZyBpcyB0cnVlIGJlZm9yZSBjYWxsaW5nIHRob3NlIGZ1bmN0aW9ucy4gVGhpcyBwcmV2ZW50
cyB0aGUgcG9zc2liaWxpdHkKLSAgICAvLyBvZiBhbiBpbmZpbml0ZSBsb29wIGlmIG9ucG9wdWxh
dGUgb3Igb25hZGQgd2VyZSB0byBjYWxsIGV4cGFuZC4KKyAgICBleHBhbmQoKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMuZXhwYW5kZWQgJiYgIXRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiAm
JiB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgdGhp
cy5leHBhbmRlZCA9IHRydWU7Ci0gICAgaWYgKHRoaXMudHJlZU91dGxpbmUpCi0gICAgICAgIHRo
aXMudHJlZU91dGxpbmUuX3RyZWVFbGVtZW50c0V4cGFuZGVkU3RhdGVbdGhpcy5pZGVudGlmaWVy
XSA9IHRydWU7CisgICAgICAgIC8vIFNldCB0aGlzIGJlZm9yZSBvbnBvcHVsYXRlLiBTaW5jZSBv
bnBvcHVsYXRlIGNhbiBhZGQgZWxlbWVudHMgYW5kIGNhbGwgb25hZGQsIHRoaXMgbWFrZXMKKyAg
ICAgICAgLy8gc3VyZSB0aGUgZXhwYW5kZWQgZmxhZyBpcyB0cnVlIGJlZm9yZSBjYWxsaW5nIHRo
b3NlIGZ1bmN0aW9ucy4gVGhpcyBwcmV2ZW50cyB0aGUgcG9zc2liaWxpdHkKKyAgICAgICAgLy8g
b2YgYW4gaW5maW5pdGUgbG9vcCBpZiBvbnBvcHVsYXRlIG9yIG9uYWRkIHdlcmUgdG8gY2FsbCBl
eHBhbmQuCiAKLSAgICAvLyBJZiB0aGVyZSBhcmUgbm8gY2hpbGRyZW4sIHJldHVybi4gV2Ugd2ls
bCBiZSBleHBhbmRlZCBvbmNlIHdlIGhhdmUgY2hpbGRyZW4uCi0gICAgaWYgKCF0aGlzLmhhc0No
aWxkcmVuKQotICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlOwor
ICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSkKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxp
bmUuX3RyZWVFbGVtZW50c0V4cGFuZGVkU3RhdGVbdGhpcy5pZGVudGlmaWVyXSA9IHRydWU7CiAK
LSAgICBpZiAodGhpcy50cmVlT3V0bGluZSAmJiAoIXRoaXMuX2NoaWxkcmVuTGlzdE5vZGUgfHwg
dGhpcy5fc2hvdWxkUmVmcmVzaENoaWxkcmVuKSkgewotICAgICAgICBpZiAodGhpcy5fY2hpbGRy
ZW5MaXN0Tm9kZSAmJiB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLnBhcmVudE5vZGUpCi0gICAgICAg
ICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5f
Y2hpbGRyZW5MaXN0Tm9kZSk7CisgICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBjaGlsZHJlbiwg
cmV0dXJuLiBXZSB3aWxsIGJlIGV4cGFuZGVkIG9uY2Ugd2UgaGF2ZSBjaGlsZHJlbi4KKyAgICAg
ICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUgPSB0aGlzLnRyZWVPdXRsaW5lLl9jaGlsZHJlbkxpc3RO
b2RlLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKLSAgICAgICAgdGhpcy5fY2hp
bGRyZW5MaXN0Tm9kZS5wYXJlbnRUcmVlRWxlbWVudCA9IHRoaXM7Ci0gICAgICAgIHRoaXMuX2No
aWxkcmVuTGlzdE5vZGUuY2xhc3NMaXN0LmFkZCgiY2hpbGRyZW4iKTsKKyAgICAgICAgaWYgKHRo
aXMudHJlZU91dGxpbmUgJiYgKCF0aGlzLl9jaGlsZHJlbkxpc3ROb2RlIHx8IHRoaXMuX3Nob3Vs
ZFJlZnJlc2hDaGlsZHJlbikpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3RO
b2RlICYmIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9kZSkKKyAgICAgICAgICAgICAg
ICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fY2hp
bGRyZW5MaXN0Tm9kZSk7CiAKLSAgICAgICAgaWYgKHRoaXMuaGlkZGVuKQotICAgICAgICAgICAg
dGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKTsKKyAgICAgICAg
ICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUgPSB0aGlzLnRyZWVPdXRsaW5lLl9jaGlsZHJlbkxp
c3ROb2RlLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKKyAgICAgICAgICAgIHRo
aXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50VHJlZUVsZW1lbnQgPSB0aGlzOworICAgICAgICAg
ICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5jbGFzc0xpc3QuYWRkKCJjaGlsZHJlbiIpOwogCi0g
ICAgICAgIHRoaXMub25wb3B1bGF0ZSgpOworICAgICAgICAgICAgaWYgKHRoaXMuaGlkZGVuKQor
ICAgICAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUuY2xhc3NMaXN0LmFkZCgiaGlk
ZGVuIik7CiAKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0
aDsgKytpKQotICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltpXS5fYXR0YWNoKCk7CisgICAgICAg
ICAgICB0aGlzLm9ucG9wdWxhdGUoKTsKIAotICAgICAgICBkZWxldGUgdGhpcy5fc2hvdWxkUmVm
cmVzaENoaWxkcmVuOwotICAgIH0KKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhp
cy5jaGlsZHJlbi5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuW2ld
Ll9hdHRhY2goKTsKIAotICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUpIHsKLSAgICAgICAgdGhp
cy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoImV4cGFuZGVkIik7Ci0gICAgICAgIGlmICh0
aGlzLl9jaGlsZHJlbkxpc3ROb2RlICYmIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9k
ZSAhPT0gdGhpcy5fbGlzdEl0ZW1Ob2RlLnBhcmVudE5vZGUpCi0gICAgICAgICAgICB0aGlzLnBh
cmVudC5fY2hpbGRyZW5MaXN0Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fY2hpbGRyZW5MaXN0Tm9k
ZSwgdGhpcy5fbGlzdEl0ZW1Ob2RlLm5leHRTaWJsaW5nKTsKLSAgICB9CisgICAgICAgICAgICBk
ZWxldGUgdGhpcy5fc2hvdWxkUmVmcmVzaENoaWxkcmVuOworICAgICAgICB9CiAKLSAgICBpZiAo
dGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSkKLSAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5j
bGFzc0xpc3QuYWRkKCJleHBhbmRlZCIpOworICAgICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2Rl
KSB7CisgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgiZXhwYW5k
ZWQiKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlICYmIHRoaXMuX2No
aWxkcmVuTGlzdE5vZGUucGFyZW50Tm9kZSAhPT0gdGhpcy5fbGlzdEl0ZW1Ob2RlLnBhcmVudE5v
ZGUpCisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuX2NoaWxkcmVuTGlzdE5vZGUuaW5zZXJ0
QmVmb3JlKHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUsIHRoaXMuX2xpc3RJdGVtTm9kZS5uZXh0U2li
bGluZyk7CisgICAgICAgIH0KIAotICAgIGlmICh0aGlzLm9uZXhwYW5kKQotICAgICAgICB0aGlz
Lm9uZXhwYW5kKHRoaXMpOworICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSkKKyAg
ICAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUuY2xhc3NMaXN0LmFkZCgiZXhwYW5kZWQi
KTsKIAotICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lICYmIHRoaXMudHJlZU91dGxpbmUub25leHBh
bmQpCi0gICAgICAgIHRoaXMudHJlZU91dGxpbmUub25leHBhbmQodGhpcyk7Ci19OworICAgICAg
ICBpZiAodGhpcy5vbmV4cGFuZCkKKyAgICAgICAgICAgIHRoaXMub25leHBhbmQodGhpcyk7CiAK
LVRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1cnNpdmVseSA9IGZ1bmN0aW9uKG1heERl
cHRoKQotewotICAgIHZhciBpdGVtID0gdGhpczsKLSAgICB2YXIgaW5mbyA9IHt9OwotICAgIHZh
ciBkZXB0aCA9IDA7Ci0KLSAgICAvLyBUaGUgSW5zcGVjdG9yIHVzZXMgVHJlZU91dGxpbmVzIHRv
IHJlcHJlc2VudHMgb2JqZWN0IHByb3BlcnRpZXMsIHNvIHJlY3Vyc2l2ZSBleHBhbnNpb24KLSAg
ICAvLyBpbiBzb21lIGNhc2UgY2FuIGJlIGluZmluaXRlLCBzaW5jZSBKYXZhU2NyaXB0IG9iamVj
dHMgY2FuIGhvbGQgY2lyY3VsYXIgcmVmZXJlbmNlcy4KLSAgICAvLyBTbyBkZWZhdWx0IHRvIGEg
cmVjdXJzaW9uIGNhcCBvZiAzIGxldmVscywgc2luY2UgdGhhdCBnaXZlcyBmYWlybHkgZ29vZCBy
ZXN1bHRzLgotICAgIGlmIChtYXhEZXB0aCA9PT0gdW5kZWZpbmVkKQotICAgICAgICBtYXhEZXB0
aCA9IDM7Ci0KLSAgICB3aGlsZSAoaXRlbSkgewotICAgICAgICBpZiAoZGVwdGggPCBtYXhEZXB0
aCkKLSAgICAgICAgICAgIGl0ZW0uZXhwYW5kKCk7Ci0gICAgICAgIGl0ZW0gPSBpdGVtLnRyYXZl
cnNlTmV4dFRyZWVFbGVtZW50KGZhbHNlLCB0aGlzLCAoZGVwdGggPj0gbWF4RGVwdGgpLCBpbmZv
KTsKLSAgICAgICAgZGVwdGggKz0gaW5mby5kZXB0aENoYW5nZTsKKyAgICAgICAgaWYgKHRoaXMu
dHJlZU91dGxpbmUgJiYgdGhpcy50cmVlT3V0bGluZS5vbmV4cGFuZCkKKyAgICAgICAgICAgIHRo
aXMudHJlZU91dGxpbmUub25leHBhbmQodGhpcyk7CiAgICAgfQotfTsKLQotVHJlZUVsZW1lbnQu
cHJvdG90eXBlLmhhc0FuY2VzdG9yID0gZnVuY3Rpb24oYW5jZXN0b3IpIHsKLSAgICBpZiAoIWFu
Y2VzdG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB2YXIgY3VycmVudE5vZGUgPSB0
aGlzLnBhcmVudDsKLSAgICB3aGlsZSAoY3VycmVudE5vZGUpIHsKLSAgICAgICAgaWYgKGFuY2Vz
dG9yID09PSBjdXJyZW50Tm9kZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBj
dXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudDsKKyAgICBleHBhbmRSZWN1cnNpdmVseSht
YXhEZXB0aCkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gdGhpczsKKyAgICAgICAgdmFyIGlu
Zm8gPSB7fTsKKyAgICAgICAgdmFyIGRlcHRoID0gMDsKKworICAgICAgICAvLyBUaGUgSW5zcGVj
dG9yIHVzZXMgVHJlZU91dGxpbmVzIHRvIHJlcHJlc2VudHMgb2JqZWN0IHByb3BlcnRpZXMsIHNv
IHJlY3Vyc2l2ZSBleHBhbnNpb24KKyAgICAgICAgLy8gaW4gc29tZSBjYXNlIGNhbiBiZSBpbmZp
bml0ZSwgc2luY2UgSmF2YVNjcmlwdCBvYmplY3RzIGNhbiBob2xkIGNpcmN1bGFyIHJlZmVyZW5j
ZXMuCisgICAgICAgIC8vIFNvIGRlZmF1bHQgdG8gYSByZWN1cnNpb24gY2FwIG9mIDMgbGV2ZWxz
LCBzaW5jZSB0aGF0IGdpdmVzIGZhaXJseSBnb29kIHJlc3VsdHMuCisgICAgICAgIGlmIChtYXhE
ZXB0aCA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgbWF4RGVwdGggPSAzOworCisgICAgICAg
IHdoaWxlIChpdGVtKSB7CisgICAgICAgICAgICBpZiAoZGVwdGggPCBtYXhEZXB0aCkKKyAgICAg
ICAgICAgICAgICBpdGVtLmV4cGFuZCgpOworICAgICAgICAgICAgaXRlbSA9IGl0ZW0udHJhdmVy
c2VOZXh0VHJlZUVsZW1lbnQoZmFsc2UsIHRoaXMsIChkZXB0aCA+PSBtYXhEZXB0aCksIGluZm8p
OworICAgICAgICAgICAgZGVwdGggKz0gaW5mby5kZXB0aENoYW5nZTsKKyAgICAgICAgfQogICAg
IH0KIAotICAgIHJldHVybiBmYWxzZTsKLX07CisgICAgaGFzQW5jZXN0b3IoYW5jZXN0b3IpCisg
ICAgICAgIHsKKyAgICAgICAgaWYgKCFhbmNlc3RvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLnJldmVhbCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2
YXIgY3VycmVudEFuY2VzdG9yID0gdGhpcy5wYXJlbnQ7Ci0gICAgd2hpbGUgKGN1cnJlbnRBbmNl
c3RvciAmJiAhY3VycmVudEFuY2VzdG9yLnJvb3QpIHsKLSAgICAgICAgaWYgKCFjdXJyZW50QW5j
ZXN0b3IuZXhwYW5kZWQpCi0gICAgICAgICAgICBjdXJyZW50QW5jZXN0b3IuZXhwYW5kKCk7Ci0g
ICAgICAgIGN1cnJlbnRBbmNlc3RvciA9IGN1cnJlbnRBbmNlc3Rvci5wYXJlbnQ7CisgICAgICAg
IHZhciBjdXJyZW50Tm9kZSA9IHRoaXMucGFyZW50OworICAgICAgICB3aGlsZSAoY3VycmVudE5v
ZGUpIHsKKyAgICAgICAgICAgIGlmIChhbmNlc3RvciA9PT0gY3VycmVudE5vZGUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnRO
b2RlLnBhcmVudDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBpZiAodGhpcy5vbnJldmVhbCkKLSAgICAgICAgdGhpcy5vbnJldmVhbCh0aGlzKTsKLX07
CisgICAgcmV2ZWFsKCkKKyAgICB7CisgICAgICAgIHZhciBjdXJyZW50QW5jZXN0b3IgPSB0aGlz
LnBhcmVudDsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnRBbmNlc3RvciAmJiAhY3VycmVudEFuY2Vz
dG9yLnJvb3QpIHsKKyAgICAgICAgICAgIGlmICghY3VycmVudEFuY2VzdG9yLmV4cGFuZGVkKQor
ICAgICAgICAgICAgICAgIGN1cnJlbnRBbmNlc3Rvci5leHBhbmQoKTsKKyAgICAgICAgICAgIGN1
cnJlbnRBbmNlc3RvciA9IGN1cnJlbnRBbmNlc3Rvci5wYXJlbnQ7CisgICAgICAgIH0KIAotVHJl
ZUVsZW1lbnQucHJvdG90eXBlLnJldmVhbGVkID0gZnVuY3Rpb24oKQotewotICAgIGlmICh0aGlz
LmhpZGRlbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAodGhpcy5vbnJldmVh
bCkKKyAgICAgICAgICAgIHRoaXMub25yZXZlYWwodGhpcyk7CisgICAgfQogCi0gICAgdmFyIGN1
cnJlbnRBbmNlc3RvciA9IHRoaXMucGFyZW50OwotICAgIHdoaWxlIChjdXJyZW50QW5jZXN0b3Ig
JiYgIWN1cnJlbnRBbmNlc3Rvci5yb290KSB7Ci0gICAgICAgIGlmICghY3VycmVudEFuY2VzdG9y
LmV4cGFuZGVkKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoY3VycmVu
dEFuY2VzdG9yLmhpZGRlbikKKyAgICByZXZlYWxlZCgpCisgICAgeworICAgICAgICBpZiAodGhp
cy5oaWRkZW4pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGN1cnJlbnRBbmNl
c3RvciA9IGN1cnJlbnRBbmNlc3Rvci5wYXJlbnQ7Ci0gICAgfQogCi0gICAgcmV0dXJuIHRydWU7
Ci19OworICAgICAgICB2YXIgY3VycmVudEFuY2VzdG9yID0gdGhpcy5wYXJlbnQ7CisgICAgICAg
IHdoaWxlIChjdXJyZW50QW5jZXN0b3IgJiYgIWN1cnJlbnRBbmNlc3Rvci5yb290KSB7CisgICAg
ICAgICAgICBpZiAoIWN1cnJlbnRBbmNlc3Rvci5leHBhbmRlZCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoY3VycmVudEFuY2VzdG9yLmhpZGRlbikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBjdXJyZW50QW5jZXN0b3Ig
PSBjdXJyZW50QW5jZXN0b3IucGFyZW50OworICAgICAgICB9CiAKLVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5zZWxlY3RPbk1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQotewotICAgIHRoaXMuc2Vs
ZWN0KGZhbHNlLCB0cnVlKTsKLX07CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAotVHJl
ZUVsZW1lbnQucHJvdG90eXBlLnNlbGVjdCA9IGZ1bmN0aW9uKG9taXRGb2N1cywgc2VsZWN0ZWRC
eVVzZXIsIHN1cHByZXNzT25TZWxlY3QsIHN1cHByZXNzT25EZXNlbGVjdCkKLXsKLSAgICBpZiAo
IXRoaXMudHJlZU91dGxpbmUgfHwgIXRoaXMuc2VsZWN0YWJsZSkKLSAgICAgICAgcmV0dXJuOwor
ICAgIHNlbGVjdE9uTW91c2VEb3duKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5zZWxlY3Qo
ZmFsc2UsIHRydWUpOworICAgIH0KIAotICAgIGlmICh0aGlzLnNlbGVjdGVkICYmICF0aGlzLnRy
ZWVPdXRsaW5lLmFsbG93c1JlcGVhdFNlbGVjdGlvbikKLSAgICAgICAgcmV0dXJuOworICAgIHNl
bGVjdChvbWl0Rm9jdXMsIHNlbGVjdGVkQnlVc2VyLCBzdXBwcmVzc09uU2VsZWN0LCBzdXBwcmVz
c09uRGVzZWxlY3QpCisgICAgeworICAgICAgICBpZiAoIXRoaXMudHJlZU91dGxpbmUgfHwgIXRo
aXMuc2VsZWN0YWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghb21pdEZvY3Vz
KQotICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLl9jaGlsZHJlbkxpc3ROb2RlLmZvY3VzKCk7Cisg
ICAgICAgIGlmICh0aGlzLnNlbGVjdGVkICYmICF0aGlzLnRyZWVPdXRsaW5lLmFsbG93c1JlcGVh
dFNlbGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZvY3VzaW5nIG9uIGFu
b3RoZXIgbm9kZSBtYXkgZGV0YWNoICJ0aGlzIiBmcm9tIHRyZWUuCi0gICAgaWYgKCF0aGlzLnRy
ZWVPdXRsaW5lKQotICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghb21pdEZvY3VzKQorICAg
ICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5fY2hpbGRyZW5MaXN0Tm9kZS5mb2N1cygpOwogCi0g
ICAgdGhpcy50cmVlT3V0bGluZS5wcm9jZXNzaW5nU2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsKKyAg
ICAgICAgLy8gRm9jdXNpbmcgb24gYW5vdGhlciBub2RlIG1heSBkZXRhY2ggInRoaXMiIGZyb20g
dHJlZS4KKyAgICAgICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5lKQorICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCF0aGlzLnNlbGVjdGVkKSB7Ci0gICAgICAgIGlmICh0aGlzLnRyZWVPdXRs
aW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCi0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNl
bGVjdGVkVHJlZUVsZW1lbnQuZGVzZWxlY3Qoc3VwcHJlc3NPbkRlc2VsZWN0KTsKKyAgICAgICAg
dGhpcy50cmVlT3V0bGluZS5wcm9jZXNzaW5nU2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsKIAotICAg
ICAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWxl
Y3RlZFRyZWVFbGVtZW50ID0gdGhpczsKKyAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkKSB7Cisg
ICAgICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQorICAg
ICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudC5kZXNlbGVj
dChzdXBwcmVzc09uRGVzZWxlY3QpOwogCi0gICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUp
Ci0gICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQi
KTsKLSAgICB9CisgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
IHRoaXMudHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXM7CiAKLSAgICBpZiAo
dGhpcy5vbnNlbGVjdCAmJiAhc3VwcHJlc3NPblNlbGVjdCkKLSAgICAgICAgdGhpcy5vbnNlbGVj
dCh0aGlzLCBzZWxlY3RlZEJ5VXNlcik7CisgICAgICAgICAgICBpZiAodGhpcy5fbGlzdEl0ZW1O
b2RlKQorICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJz
ZWxlY3RlZCIpOworICAgICAgICB9CiAKLSAgICBpZiAodGhpcy50cmVlT3V0bGluZS5vbnNlbGVj
dCAmJiAhc3VwcHJlc3NPblNlbGVjdCkKLSAgICAgICAgdGhpcy50cmVlT3V0bGluZS5vbnNlbGVj
dCh0aGlzLCBzZWxlY3RlZEJ5VXNlcik7CisgICAgICAgIGlmICh0aGlzLm9uc2VsZWN0ICYmICFz
dXBwcmVzc09uU2VsZWN0KQorICAgICAgICAgICAgdGhpcy5vbnNlbGVjdCh0aGlzLCBzZWxlY3Rl
ZEJ5VXNlcik7CiAKLSAgICBkZWxldGUgdGhpcy50cmVlT3V0bGluZS5wcm9jZXNzaW5nU2VsZWN0
aW9uQ2hhbmdlOwotfTsKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUub25zZWxlY3QgJiYg
IXN1cHByZXNzT25TZWxlY3QpCisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uc2VsZWN0
KHRoaXMsIHNlbGVjdGVkQnlVc2VyKTsKIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLnJldmVhbEFu
ZFNlbGVjdCA9IGZ1bmN0aW9uKG9taXRGb2N1cywgc2VsZWN0ZWRCeVVzZXIsIHN1cHByZXNzT25T
ZWxlY3QsIHN1cHByZXNzT25EZXNlbGVjdCkKLXsKLSAgICB0aGlzLnJldmVhbCgpOwotICAgIHRo
aXMuc2VsZWN0KG9taXRGb2N1cywgc2VsZWN0ZWRCeVVzZXIsIHN1cHByZXNzT25TZWxlY3QsIHN1
cHByZXNzT25EZXNlbGVjdCk7Ci19OworICAgICAgICBkZWxldGUgdGhpcy50cmVlT3V0bGluZS5w
cm9jZXNzaW5nU2VsZWN0aW9uQ2hhbmdlOworICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90eXBl
LmRlc2VsZWN0ID0gZnVuY3Rpb24oc3VwcHJlc3NPbkRlc2VsZWN0KQotewotICAgIGlmICghdGhp
cy50cmVlT3V0bGluZSB8fCB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQgIT09
IHRoaXMgfHwgIXRoaXMuc2VsZWN0ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXZl
YWxBbmRTZWxlY3Qob21pdEZvY3VzLCBzZWxlY3RlZEJ5VXNlciwgc3VwcHJlc3NPblNlbGVjdCwg
c3VwcHJlc3NPbkRlc2VsZWN0KQorICAgIHsKKyAgICAgICAgdGhpcy5yZXZlYWwoKTsKKyAgICAg
ICAgdGhpcy5zZWxlY3Qob21pdEZvY3VzLCBzZWxlY3RlZEJ5VXNlciwgc3VwcHJlc3NPblNlbGVj
dCwgc3VwcHJlc3NPbkRlc2VsZWN0KTsKKyAgICB9CiAKLSAgICB0aGlzLnNlbGVjdGVkID0gZmFs
c2U7Ci0gICAgdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKKyAg
ICBkZXNlbGVjdChzdXBwcmVzc09uRGVzZWxlY3QpCisgICAgeworICAgICAgICBpZiAoIXRoaXMu
dHJlZU91dGxpbmUgfHwgdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50ICE9PSB0
aGlzIHx8ICF0aGlzLnNlbGVjdGVkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aWYgKHRoaXMuX2xpc3RJdGVtTm9kZSkKLSAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNz
TGlzdC5yZW1vdmUoInNlbGVjdGVkIik7CisgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsK
KyAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKIAot
ICAgIGlmICh0aGlzLm9uZGVzZWxlY3QgJiYgIXN1cHByZXNzT25EZXNlbGVjdCkKLSAgICAgICAg
dGhpcy5vbmRlc2VsZWN0KHRoaXMpOworICAgICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2RlKQor
ICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVk
Iik7CiAKLSAgICBpZiAodGhpcy50cmVlT3V0bGluZS5vbmRlc2VsZWN0ICYmICFzdXBwcmVzc09u
RGVzZWxlY3QpCi0gICAgICAgIHRoaXMudHJlZU91dGxpbmUub25kZXNlbGVjdCh0aGlzKTsKKyAg
ICAgICAgaWYgKHRoaXMub25kZXNlbGVjdCAmJiAhc3VwcHJlc3NPbkRlc2VsZWN0KQorICAgICAg
ICAgICAgdGhpcy5vbmRlc2VsZWN0KHRoaXMpOwogCi0gICAgcmV0dXJuIHRydWU7Ci19OworICAg
ICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5vbmRlc2VsZWN0ICYmICFzdXBwcmVzc09uRGVzZWxl
Y3QpCisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uZGVzZWxlY3QodGhpcyk7CiAKLVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5vbnBvcHVsYXRlID0gZnVuY3Rpb24oKQotewotICAgIC8vIE92
ZXJyaWRlbiBieSBzdWJjbGFzc2VzLgotfTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQog
Ci1UcmVlRWxlbWVudC5wcm90b3R5cGUudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQgPSBmdW5jdGlv
bihza2lwVW5yZXZlYWxlZCwgc3RheVdpdGhpbiwgZG9udFBvcHVsYXRlLCBpbmZvKQotewotICAg
IGlmICghZG9udFBvcHVsYXRlICYmIHRoaXMuaGFzQ2hpbGRyZW4pCi0gICAgICAgIHRoaXMub25w
b3B1bGF0ZS5jYWxsKHRoaXMpOyAvLyBGSVhNRTogVGhpcyBzaG91bGRuJ3QgbmVlZCB0byB1c2Ug
Y2FsbCwgYnV0IHRoaXMgaXMgd29ya2luZyBhcm91bmQgYSBKU0MgYnVnLiBodHRwczovL3dlYmtp
dC5vcmcvYi83NDgxMQorICAgIG9ucG9wdWxhdGUoKQorICAgIHsKKyAgICAgICAgLy8gT3ZlcnJp
ZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAgfQogCi0gICAgaWYgKGluZm8pCi0gICAgICAgIGluZm8u
ZGVwdGhDaGFuZ2UgPSAwOworICAgIHRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KHNraXBVbnJldmVh
bGVkLCBzdGF5V2l0aGluLCBkb250UG9wdWxhdGUsIGluZm8pCisgICAgeworICAgICAgICBpZiAo
IWRvbnRQb3B1bGF0ZSAmJiB0aGlzLmhhc0NoaWxkcmVuKQorICAgICAgICAgICAgdGhpcy5vbnBv
cHVsYXRlLmNhbGwodGhpcyk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZG4ndCBuZWVkIHRvIHVzZSBj
YWxsLCBidXQgdGhpcyBpcyB3b3JraW5nIGFyb3VuZCBhIEpTQyBidWcuIGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzc0ODExCiAKLSAgICB2YXIgZWxlbWVudCA9IHNraXBVbnJldmVhbGVkID8gKHRoaXMu
cmV2ZWFsZWQoKSA/IHRoaXMuY2hpbGRyZW5bMF0gOiBudWxsKSA6IHRoaXMuY2hpbGRyZW5bMF07
Ci0gICAgaWYgKGVsZW1lbnQgJiYgKCFza2lwVW5yZXZlYWxlZCB8fCAoc2tpcFVucmV2ZWFsZWQg
JiYgdGhpcy5leHBhbmRlZCkpKSB7CiAgICAgICAgIGlmIChpbmZvKQotICAgICAgICAgICAgaW5m
by5kZXB0aENoYW5nZSA9IDE7Ci0gICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0KKyAgICAg
ICAgICAgIGluZm8uZGVwdGhDaGFuZ2UgPSAwOwogCi0gICAgaWYgKHRoaXMgPT09IHN0YXlXaXRo
aW4pCi0gICAgICAgIHJldHVybiBudWxsOworICAgICAgICB2YXIgZWxlbWVudCA9IHNraXBVbnJl
dmVhbGVkID8gKHRoaXMucmV2ZWFsZWQoKSA/IHRoaXMuY2hpbGRyZW5bMF0gOiBudWxsKSA6IHRo
aXMuY2hpbGRyZW5bMF07CisgICAgICAgIGlmIChlbGVtZW50ICYmICghc2tpcFVucmV2ZWFsZWQg
fHwgKHNraXBVbnJldmVhbGVkICYmIHRoaXMuZXhwYW5kZWQpKSkgeworICAgICAgICAgICAgaWYg
KGluZm8pCisgICAgICAgICAgICAgICAgaW5mby5kZXB0aENoYW5nZSA9IDE7CisgICAgICAgICAg
ICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfQogCi0gICAgZWxlbWVudCA9IHNraXBVbnJldmVh
bGVkID8gKHRoaXMucmV2ZWFsZWQoKSA/IHRoaXMubmV4dFNpYmxpbmcgOiBudWxsKSA6IHRoaXMu
bmV4dFNpYmxpbmc7Ci0gICAgaWYgKGVsZW1lbnQpCi0gICAgICAgIHJldHVybiBlbGVtZW50Owor
ICAgICAgICBpZiAodGhpcyA9PT0gc3RheVdpdGhpbikKKyAgICAgICAgICAgIHJldHVybiBudWxs
OwogCi0gICAgZWxlbWVudCA9IHRoaXM7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWVsZW1lbnQu
cm9vdCAmJiAhKHNraXBVbnJldmVhbGVkID8gKGVsZW1lbnQucmV2ZWFsZWQoKSA/IGVsZW1lbnQu
bmV4dFNpYmxpbmcgOiBudWxsKSA6IGVsZW1lbnQubmV4dFNpYmxpbmcpICYmIGVsZW1lbnQucGFy
ZW50ICE9PSBzdGF5V2l0aGluKSB7Ci0gICAgICAgIGlmIChpbmZvKQotICAgICAgICAgICAgaW5m
by5kZXB0aENoYW5nZSAtPSAxOwotICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnQ7Ci0g
ICAgfQorICAgICAgICBlbGVtZW50ID0gc2tpcFVucmV2ZWFsZWQgPyAodGhpcy5yZXZlYWxlZCgp
ID8gdGhpcy5uZXh0U2libGluZyA6IG51bGwpIDogdGhpcy5uZXh0U2libGluZzsKKyAgICAgICAg
aWYgKGVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKIAotICAgIGlmICghZWxl
bWVudCkKLSAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIGVsZW1lbnQgPSB0aGlzOworICAg
ICAgICB3aGlsZSAoZWxlbWVudCAmJiAhZWxlbWVudC5yb290ICYmICEoc2tpcFVucmV2ZWFsZWQg
PyAoZWxlbWVudC5yZXZlYWxlZCgpID8gZWxlbWVudC5uZXh0U2libGluZyA6IG51bGwpIDogZWxl
bWVudC5uZXh0U2libGluZykgJiYgZWxlbWVudC5wYXJlbnQgIT09IHN0YXlXaXRoaW4pIHsKKyAg
ICAgICAgICAgIGlmIChpbmZvKQorICAgICAgICAgICAgICAgIGluZm8uZGVwdGhDaGFuZ2UgLT0g
MTsKKyAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudDsKKyAgICAgICAgfQogCi0g
ICAgcmV0dXJuIChza2lwVW5yZXZlYWxlZCA/IChlbGVtZW50LnJldmVhbGVkKCkgPyBlbGVtZW50
Lm5leHRTaWJsaW5nIDogbnVsbCkgOiBlbGVtZW50Lm5leHRTaWJsaW5nKTsKLX07CisgICAgICAg
IGlmICghZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogCi1UcmVlRWxlbWVudC5w
cm90b3R5cGUudHJhdmVyc2VQcmV2aW91c1RyZWVFbGVtZW50ID0gZnVuY3Rpb24oc2tpcFVucmV2
ZWFsZWQsIGRvbnRQb3B1bGF0ZSkKLXsKLSAgICB2YXIgZWxlbWVudCA9IHNraXBVbnJldmVhbGVk
ID8gKHRoaXMucmV2ZWFsZWQoKSA/IHRoaXMucHJldmlvdXNTaWJsaW5nIDogbnVsbCkgOiB0aGlz
LnByZXZpb3VzU2libGluZzsKLSAgICBpZiAoIWRvbnRQb3B1bGF0ZSAmJiBlbGVtZW50ICYmIGVs
ZW1lbnQuaGFzQ2hpbGRyZW4pCi0gICAgICAgIGVsZW1lbnQub25wb3B1bGF0ZSgpOworICAgICAg
ICByZXR1cm4gKHNraXBVbnJldmVhbGVkID8gKGVsZW1lbnQucmV2ZWFsZWQoKSA/IGVsZW1lbnQu
bmV4dFNpYmxpbmcgOiBudWxsKSA6IGVsZW1lbnQubmV4dFNpYmxpbmcpOworICAgIH0KIAotICAg
IHdoaWxlIChlbGVtZW50ICYmIChza2lwVW5yZXZlYWxlZCA/IChlbGVtZW50LnJldmVhbGVkKCkg
JiYgZWxlbWVudC5leHBhbmRlZCA/IGVsZW1lbnQuY2hpbGRyZW5bZWxlbWVudC5jaGlsZHJlbi5s
ZW5ndGggLSAxXSA6IG51bGwpIDogZWxlbWVudC5jaGlsZHJlbltlbGVtZW50LmNoaWxkcmVuLmxl
bmd0aCAtIDFdKSkgewotICAgICAgICBpZiAoIWRvbnRQb3B1bGF0ZSAmJiBlbGVtZW50Lmhhc0No
aWxkcmVuKQorICAgIHRyYXZlcnNlUHJldmlvdXNUcmVlRWxlbWVudChza2lwVW5yZXZlYWxlZCwg
ZG9udFBvcHVsYXRlKQorICAgIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBza2lwVW5yZXZlYWxl
ZCA/ICh0aGlzLnJldmVhbGVkKCkgPyB0aGlzLnByZXZpb3VzU2libGluZyA6IG51bGwpIDogdGhp
cy5wcmV2aW91c1NpYmxpbmc7CisgICAgICAgIGlmICghZG9udFBvcHVsYXRlICYmIGVsZW1lbnQg
JiYgZWxlbWVudC5oYXNDaGlsZHJlbikKICAgICAgICAgICAgIGVsZW1lbnQub25wb3B1bGF0ZSgp
OwotICAgICAgICBlbGVtZW50ID0gKHNraXBVbnJldmVhbGVkID8gKGVsZW1lbnQucmV2ZWFsZWQo
KSAmJiBlbGVtZW50LmV4cGFuZGVkID8gZWxlbWVudC5jaGlsZHJlbltlbGVtZW50LmNoaWxkcmVu
Lmxlbmd0aCAtIDFdIDogbnVsbCkgOiBlbGVtZW50LmNoaWxkcmVuW2VsZW1lbnQuY2hpbGRyZW4u
bGVuZ3RoIC0gMV0pOwotICAgIH0KIAotICAgIGlmIChlbGVtZW50KQotICAgICAgICByZXR1cm4g
ZWxlbWVudDsKKyAgICAgICAgd2hpbGUgKGVsZW1lbnQgJiYgKHNraXBVbnJldmVhbGVkID8gKGVs
ZW1lbnQucmV2ZWFsZWQoKSAmJiBlbGVtZW50LmV4cGFuZGVkID8gZWxlbWVudC5jaGlsZHJlbltl
bGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFdIDogbnVsbCkgOiBlbGVtZW50LmNoaWxkcmVuW2Vs
ZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMV0pKSB7CisgICAgICAgICAgICBpZiAoIWRvbnRQb3B1
bGF0ZSAmJiBlbGVtZW50Lmhhc0NoaWxkcmVuKQorICAgICAgICAgICAgICAgIGVsZW1lbnQub25w
b3B1bGF0ZSgpOworICAgICAgICAgICAgZWxlbWVudCA9IChza2lwVW5yZXZlYWxlZCA/IChlbGVt
ZW50LnJldmVhbGVkKCkgJiYgZWxlbWVudC5leHBhbmRlZCA/IGVsZW1lbnQuY2hpbGRyZW5bZWxl
bWVudC5jaGlsZHJlbi5sZW5ndGggLSAxXSA6IG51bGwpIDogZWxlbWVudC5jaGlsZHJlbltlbGVt
ZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFdKTsKKyAgICAgICAgfQogCi0gICAgaWYgKCF0aGlzLnBh
cmVudCB8fCB0aGlzLnBhcmVudC5yb290KQotICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAg
aWYgKGVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKIAotICAgIHJldHVybiB0
aGlzLnBhcmVudDsKLX07CisgICAgICAgIGlmICghdGhpcy5wYXJlbnQgfHwgdGhpcy5wYXJlbnQu
cm9vdCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUu
aXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZSA9IGZ1bmN0aW9uKGV2ZW50KQotewotICAg
IGlmICghZG9jdW1lbnQuY29udGFpbnModGhpcy5fbGlzdEl0ZW1Ob2RlKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQ7CisgICAgfQogCi0gICAgLy8g
RklYTUU6IFdlIHNob3VsZCBub3QgdXNlIGdldENvbXB1dGVkU3R5bGUoKS4gRm9yIHRoYXQgd2Ug
bmVlZCB0byBnZXQgcmlkIG9mIHVzaW5nIDo6YmVmb3JlIGZvciBkaXNjbG9zdXJlIHRyaWFuZ2xl
LiAoaHR0cDovL3dlYmsuaXQvNzQ0NDYpCi0gICAgdmFyIGNvbXB1dGVkTGVmdFBhZGRpbmcgPSB3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9saXN0SXRlbU5vZGUpLmdldFByb3BlcnR5Q1NT
VmFsdWUoInBhZGRpbmctbGVmdCIpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NT
X1BYKTsKLSAgICB2YXIgbGVmdCA9IHRoaXMuX2xpc3RJdGVtTm9kZS50b3RhbE9mZnNldExlZnQg
KyBjb21wdXRlZExlZnRQYWRkaW5nOwotICAgIHJldHVybiBldmVudC5wYWdlWCA+PSBsZWZ0ICYm
IGV2ZW50LnBhZ2VYIDw9IGxlZnQgKyB0aGlzLmFycm93VG9nZ2xlV2lkdGggJiYgdGhpcy5oYXND
aGlsZHJlbjsKLX07CisgICAgaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVudCkK
KyAgICB7CisgICAgICAgIGlmICghZG9jdW1lbnQuY29udGFpbnModGhpcy5fbGlzdEl0ZW1Ob2Rl
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIG5vdCB1c2UgZ2V0Q29tcHV0ZWRTdHlsZSgpLiBGb3IgdGhhdCB3ZSBuZWVk
IHRvIGdldCByaWQgb2YgdXNpbmcgOjpiZWZvcmUgZm9yIGRpc2Nsb3N1cmUgdHJpYW5nbGUuICho
dHRwOi8vd2Viay5pdC83NDQ0NikKKyAgICAgICAgdmFyIGNvbXB1dGVkTGVmdFBhZGRpbmcgPSB3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9saXN0SXRlbU5vZGUpLmdldFByb3BlcnR5Q1NT
VmFsdWUoInBhZGRpbmctbGVmdCIpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NT
X1BYKTsKKyAgICAgICAgdmFyIGxlZnQgPSB0aGlzLl9saXN0SXRlbU5vZGUudG90YWxPZmZzZXRM
ZWZ0ICsgY29tcHV0ZWRMZWZ0UGFkZGluZzsKKyAgICAgICAgcmV0dXJuIGV2ZW50LnBhZ2VYID49
IGxlZnQgJiYgZXZlbnQucGFnZVggPD0gbGVmdCArIHRoaXMuYXJyb3dUb2dnbGVXaWR0aCAmJiB0
aGlzLmhhc0NoaWxkcmVuOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxp
bmVEYXRhR3JpZFN5bmNocm9uaXplci5qcwppbmRleCBhZTlmODQ0ZDMzZjEyMjQxMzViMjA2ODFl
ODNiM2I4YjgwMTA1Njc0Li43NzQzNGI4OGNkNzQ1NTBlMDUxOGZmYzRmODhhMDMyMjUwMTIwNmRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
cmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDEyNSArMjMsMTIyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIgPSBm
dW5jdGlvbih0cmVlT3V0bGluZSwgZGF0YUdyaWQsIGRlbGVnYXRlKQorV2ViSW5zcGVjdG9yLlRy
ZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIgPSBjbGFzcyBUcmVlT3V0bGluZURhdGFHcmlk
U3luY2hyb25pemVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1F
OiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2Fs
bCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAg
IHRoaXMuX3RyZWVPdXRsaW5lID0gdHJlZU91dGxpbmU7Ci0gICAgdGhpcy5fZGF0YUdyaWQgPSBk
YXRhR3JpZDsKLSAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7Ci0gICAgdGhp
cy5fZW5hYmxlZCA9IHRydWU7Ci0KLSAgICB0aGlzLl90cmVlT3V0bGluZS5lbGVtZW50LnBhcmVu
dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5fdHJlZU91dGxpbmVTY3JvbGxl
ZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9kYXRhR3JpZC5zY3JvbGxDb250YWluZXIuYWRkRXZl
bnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5fZGF0YUdyaWRTY3JvbGxlZC5iaW5kKHRoaXMpKTsK
LQotICAgIHRoaXMuX3RyZWVPdXRsaW5lLl9fZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQ7
Ci0KLSAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5FdmVudC5FeHBhbmRlZE5vZGUsIHRoaXMuX2RhdGFHcmlkTm9kZUV4cGFuZGVkLCB0aGlz
KTsKLSAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5FdmVudC5Db2xsYXBzZWROb2RlLCB0aGlzLl9kYXRhR3JpZE5vZGVDb2xsYXBzZWQsIHRo
aXMpOwotICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX2RhdGFHcmlkTm9kZVNlbGVj
dGVkLCB0aGlzKTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgaGFjay4gVHJlZU91dGxpbmUg
c2hvdWxkIGp1c3QgZGlzcGF0Y2ggZXZlbnRzIHZpYSBXZWJJbnNwZWN0b3IuT2JqZWN0LgotICAg
IHZhciBleGlzdGluZ09uQWRkID0gdHJlZU91dGxpbmUub25hZGQ7Ci0gICAgdmFyIGV4aXN0aW5n
T25SZW1vdmUgPSB0cmVlT3V0bGluZS5vbnJlbW92ZTsKLSAgICB2YXIgZXhpc3RpbmdPbkV4cGFu
ZCA9IHRyZWVPdXRsaW5lLm9uZXhwYW5kOwotICAgIHZhciBleGlzdGluZ09uQ29sbGFwc2UgPSB0
cmVlT3V0bGluZS5vbmNvbGxhcHNlOwotICAgIHZhciBleGlzdGluZ09uSGlkZGVuID0gdHJlZU91
dGxpbmUub25oaWRkZW47Ci0gICAgdmFyIGV4aXN0aW5nT25TZWxlY3QgPSB0cmVlT3V0bGluZS5v
bnNlbGVjdDsKLQotICAgIHRyZWVPdXRsaW5lLm9uYWRkID0gZnVuY3Rpb24oZWxlbWVudCkgewot
ICAgICAgICB0aGlzLl90cmVlRWxlbWVudEFkZGVkKGVsZW1lbnQpOwotICAgICAgICBpZiAoZXhp
c3RpbmdPbkFkZCkKLSAgICAgICAgICAgIGV4aXN0aW5nT25BZGQuY2FsbCh0cmVlT3V0bGluZSwg
ZWxlbWVudCk7Ci0gICAgfS5iaW5kKHRoaXMpOwotCi0gICAgdHJlZU91dGxpbmUub25yZW1vdmUg
PSBmdW5jdGlvbihlbGVtZW50KSB7Ci0gICAgICAgIHRoaXMuX3RyZWVFbGVtZW50UmVtb3ZlZChl
bGVtZW50KTsKLSAgICAgICAgaWYgKGV4aXN0aW5nT25SZW1vdmUpCi0gICAgICAgICAgICBleGlz
dGluZ09uUmVtb3ZlLmNhbGwodHJlZU91dGxpbmUsIGVsZW1lbnQpOwotICAgIH0uYmluZCh0aGlz
KTsKLQotICAgIHRyZWVPdXRsaW5lLm9uZXhwYW5kID0gZnVuY3Rpb24oZWxlbWVudCkgewotICAg
ICAgICB0aGlzLl90cmVlRWxlbWVudEV4cGFuZGVkKGVsZW1lbnQpOwotICAgICAgICBpZiAoZXhp
c3RpbmdPbkV4cGFuZCkKLSAgICAgICAgICAgIGV4aXN0aW5nT25FeHBhbmQuY2FsbCh0cmVlT3V0
bGluZSwgZWxlbWVudCk7Ci0gICAgfS5iaW5kKHRoaXMpOwotCi0gICAgdHJlZU91dGxpbmUub25j
b2xsYXBzZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKLSAgICAgICAgdGhpcy5fdHJlZUVsZW1lbnRD
b2xsYXBzZWQoZWxlbWVudCk7Ci0gICAgICAgIGlmIChleGlzdGluZ09uQ29sbGFwc2UpCi0gICAg
ICAgICAgICBleGlzdGluZ09uQ29sbGFwc2UuY2FsbCh0cmVlT3V0bGluZSwgZWxlbWVudCk7Ci0g
ICAgfS5iaW5kKHRoaXMpOwotCi0gICAgdHJlZU91dGxpbmUub25oaWRkZW4gPSBmdW5jdGlvbihl
bGVtZW50LCBoaWRkZW4pIHsKLSAgICAgICAgdGhpcy5fdHJlZUVsZW1lbnRIaWRkZW5DaGFuZ2Vk
KGVsZW1lbnQsIGhpZGRlbik7Ci0gICAgICAgIGlmIChleGlzdGluZ09uSGlkZGVuKQotICAgICAg
ICAgICAgZXhpc3RpbmdPbkhpZGRlbi5jYWxsKHRyZWVPdXRsaW5lLCBlbGVtZW50LCBoaWRkZW4p
OwotICAgIH0uYmluZCh0aGlzKTsKLQotICAgIHRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gZnVuY3Rp
b24oZWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpIHsKLSAgICAgICAgdGhpcy5fdHJlZUVsZW1lbnRT
ZWxlY3RlZChlbGVtZW50LCBzZWxlY3RlZEJ5VXNlcik7Ci0gICAgICAgIGlmIChleGlzdGluZ09u
U2VsZWN0KQotICAgICAgICAgICAgZXhpc3RpbmdPblNlbGVjdC5jYWxsKHRyZWVPdXRsaW5lLCBl
bGVtZW50LCBzZWxlY3RlZEJ5VXNlcik7Ci0gICAgfS5iaW5kKHRoaXMpOwotfTsKLQotV2ViSW5z
cGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXpl
ciwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIGNv
bnN0cnVjdG9yKHRyZWVPdXRsaW5lLCBkYXRhR3JpZCwgZGVsZWdhdGUpCisgICAgeworICAgICAg
ICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX3RyZWVPdXRsaW5lID0gdHJlZU91dGxpbmU7Cisg
ICAgICAgIHRoaXMuX2RhdGFHcmlkID0gZGF0YUdyaWQ7CisgICAgICAgIHRoaXMuX2RlbGVnYXRl
ID0gZGVsZWdhdGUgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IHRydWU7CisKKyAg
ICAgICAgdGhpcy5fdHJlZU91dGxpbmUuZWxlbWVudC5wYXJlbnROb2RlLmFkZEV2ZW50TGlzdGVu
ZXIoInNjcm9sbCIsIHRoaXMuX3RyZWVPdXRsaW5lU2Nyb2xsZWQuYmluZCh0aGlzKSk7CisgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLnNjcm9sbENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJzY3Jv
bGwiLCB0aGlzLl9kYXRhR3JpZFNjcm9sbGVkLmJpbmQodGhpcykpOworCisgICAgICAgIHRoaXMu
X3RyZWVPdXRsaW5lLl9fZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQ7CisKKyAgICAgICAg
dGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZl
bnQuRXhwYW5kZWROb2RlLCB0aGlzLl9kYXRhR3JpZE5vZGVFeHBhbmRlZCwgdGhpcyk7CisgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LkV2ZW50LkNvbGxhcHNlZE5vZGUsIHRoaXMuX2RhdGFHcmlkTm9kZUNvbGxhcHNlZCwgdGhpcyk7
CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX2RhdGFHcmlkTm9kZVNlbGVj
dGVkLCB0aGlzKTsKKworICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGhhY2suIFRyZWVPdXRs
aW5lIHNob3VsZCBqdXN0IGRpc3BhdGNoIGV2ZW50cyB2aWEgV2ViSW5zcGVjdG9yLk9iamVjdC4K
KyAgICAgICAgdmFyIGV4aXN0aW5nT25BZGQgPSB0cmVlT3V0bGluZS5vbmFkZDsKKyAgICAgICAg
dmFyIGV4aXN0aW5nT25SZW1vdmUgPSB0cmVlT3V0bGluZS5vbnJlbW92ZTsKKyAgICAgICAgdmFy
IGV4aXN0aW5nT25FeHBhbmQgPSB0cmVlT3V0bGluZS5vbmV4cGFuZDsKKyAgICAgICAgdmFyIGV4
aXN0aW5nT25Db2xsYXBzZSA9IHRyZWVPdXRsaW5lLm9uY29sbGFwc2U7CisgICAgICAgIHZhciBl
eGlzdGluZ09uSGlkZGVuID0gdHJlZU91dGxpbmUub25oaWRkZW47CisgICAgICAgIHZhciBleGlz
dGluZ09uU2VsZWN0ID0gdHJlZU91dGxpbmUub25zZWxlY3Q7CisKKyAgICAgICAgdHJlZU91dGxp
bmUub25hZGQgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgICAgICAgICB0aGlzLl90cmVlRWxl
bWVudEFkZGVkKGVsZW1lbnQpOworICAgICAgICAgICAgaWYgKGV4aXN0aW5nT25BZGQpCisgICAg
ICAgICAgICAgICAgZXhpc3RpbmdPbkFkZC5jYWxsKHRyZWVPdXRsaW5lLCBlbGVtZW50KTsKKyAg
ICAgICAgfS5iaW5kKHRoaXMpOworCisgICAgICAgIHRyZWVPdXRsaW5lLm9ucmVtb3ZlID0gZnVu
Y3Rpb24oZWxlbWVudCkgeworICAgICAgICAgICAgdGhpcy5fdHJlZUVsZW1lbnRSZW1vdmVkKGVs
ZW1lbnQpOworICAgICAgICAgICAgaWYgKGV4aXN0aW5nT25SZW1vdmUpCisgICAgICAgICAgICAg
ICAgZXhpc3RpbmdPblJlbW92ZS5jYWxsKHRyZWVPdXRsaW5lLCBlbGVtZW50KTsKKyAgICAgICAg
fS5iaW5kKHRoaXMpOworCisgICAgICAgIHRyZWVPdXRsaW5lLm9uZXhwYW5kID0gZnVuY3Rpb24o
ZWxlbWVudCkgeworICAgICAgICAgICAgdGhpcy5fdHJlZUVsZW1lbnRFeHBhbmRlZChlbGVtZW50
KTsKKyAgICAgICAgICAgIGlmIChleGlzdGluZ09uRXhwYW5kKQorICAgICAgICAgICAgICAgIGV4
aXN0aW5nT25FeHBhbmQuY2FsbCh0cmVlT3V0bGluZSwgZWxlbWVudCk7CisgICAgICAgIH0uYmlu
ZCh0aGlzKTsKKworICAgICAgICB0cmVlT3V0bGluZS5vbmNvbGxhcHNlID0gZnVuY3Rpb24oZWxl
bWVudCkgeworICAgICAgICAgICAgdGhpcy5fdHJlZUVsZW1lbnRDb2xsYXBzZWQoZWxlbWVudCk7
CisgICAgICAgICAgICBpZiAoZXhpc3RpbmdPbkNvbGxhcHNlKQorICAgICAgICAgICAgICAgIGV4
aXN0aW5nT25Db2xsYXBzZS5jYWxsKHRyZWVPdXRsaW5lLCBlbGVtZW50KTsKKyAgICAgICAgfS5i
aW5kKHRoaXMpOworCisgICAgICAgIHRyZWVPdXRsaW5lLm9uaGlkZGVuID0gZnVuY3Rpb24oZWxl
bWVudCwgaGlkZGVuKSB7CisgICAgICAgICAgICB0aGlzLl90cmVlRWxlbWVudEhpZGRlbkNoYW5n
ZWQoZWxlbWVudCwgaGlkZGVuKTsKKyAgICAgICAgICAgIGlmIChleGlzdGluZ09uSGlkZGVuKQor
ICAgICAgICAgICAgICAgIGV4aXN0aW5nT25IaWRkZW4uY2FsbCh0cmVlT3V0bGluZSwgZWxlbWVu
dCwgaGlkZGVuKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpOworCisgICAgICAgIHRyZWVPdXRsaW5l
Lm9uc2VsZWN0ID0gZnVuY3Rpb24oZWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpIHsKKyAgICAgICAg
ICAgIHRoaXMuX3RyZWVFbGVtZW50U2VsZWN0ZWQoZWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpOwor
ICAgICAgICAgICAgaWYgKGV4aXN0aW5nT25TZWxlY3QpCisgICAgICAgICAgICAgICAgZXhpc3Rp
bmdPblNlbGVjdC5jYWxsKHRyZWVPdXRsaW5lLCBlbGVtZW50LCBzZWxlY3RlZEJ5VXNlcik7Cisg
ICAgICAgIH0uYmluZCh0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0
cmVlT3V0bGluZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHJlZU91dGxpbmU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YUdyaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2RhdGFHcmlkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRlbGVnYXRlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBlbmFibGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbmFibGVkOwotICAg
IH0sCisgICAgfQogCiAgICAgc2V0IGVuYWJsZWQoeCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Vu
YWJsZWQgPSB4IHx8IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgYXNzb2NpYXRlOiBmdW5j
dGlvbih0cmVlRWxlbWVudCwgZGF0YUdyaWROb2RlKQorICAgIGFzc29jaWF0ZSh0cmVlRWxlbWVu
dCwgZGF0YUdyaWROb2RlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1l
bnQpOwogICAgICAgICBjb25zb2xlLmFzc2VydChkYXRhR3JpZE5vZGUpOwogCiAgICAgICAgIHRy
ZWVFbGVtZW50Ll9fZGF0YUdyaWROb2RlID0gZGF0YUdyaWROb2RlOwogICAgICAgICBkYXRhR3Jp
ZE5vZGUuX190cmVlRWxlbWVudCA9IHRyZWVFbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAg
c3luY2hyb25pemU6IGZ1bmN0aW9uKCkKKyAgICBzeW5jaHJvbml6ZSgpCiAgICAgewogICAgICAg
ICB0aGlzLl9kYXRhR3JpZC5zY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wID0gdGhpcy5fdHJlZU91
dGxpbmUuZWxlbWVudC5wYXJlbnROb2RlLnNjcm9sbFRvcDsKICAgICAgICAgaWYgKHRoaXMuX3Ry
ZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICB0aGlzLl90cmVlT3V0
bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50Ll9fZGF0YUdyaWROb2RlLnNlbGVjdCh0cnVlKTsKICAg
ICAgICAgZWxzZSBpZiAodGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlKQogICAgICAgICAgICAg
dGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlLmRlc2VsZWN0KHRydWUpOwotICAgIH0sCisgICAg
fQogCi0gICAgdHJlZUVsZW1lbnRGb3JEYXRhR3JpZE5vZGU6IGZ1bmN0aW9uKGRhdGFHcmlkTm9k
ZSkKKyAgICB0cmVlRWxlbWVudEZvckRhdGFHcmlkTm9kZShkYXRhR3JpZE5vZGUpCiAgICAgewog
ICAgICAgICByZXR1cm4gZGF0YUdyaWROb2RlLl9fdHJlZUVsZW1lbnQgfHwgbnVsbDsKLSAgICB9
LAorICAgIH0KIAotICAgIGRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50OiBmdW5jdGlvbih0cmVl
RWxlbWVudCkKKyAgICBkYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudCh0cmVlRWxlbWVudCkKICAg
ICB7CiAgICAgICAgIGlmICh0cmVlRWxlbWVudC5fX2RhdGFHcmlkTm9kZSkKICAgICAgICAgICAg
IHJldHVybiB0cmVlRWxlbWVudC5fX2RhdGFHcmlkTm9kZTsKQEAgLTE1NCwxMSArMTUxLDExIEBA
IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAg
ICAgLy8gUHJpdmF0ZQogCi0gICAgX3RyZWVPdXRsaW5lU2Nyb2xsZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF90cmVlT3V0bGluZVNjcm9sbGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLl9lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTcwLDkgKzE2Nyw5IEBAIFdl
Ykluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICB0aGlzLl9pZ25vcmVOZXh0RGF0YUdyaWRTY3JvbGxFdmVudCA9IHRydWU7CiAg
ICAgICAgIHRoaXMuX2RhdGFHcmlkLnNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSB0aGlzLl90
cmVlT3V0bGluZS5lbGVtZW50LnBhcmVudE5vZGUuc2Nyb2xsVG9wOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2RhdGFHcmlkU2Nyb2xsZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhR3JpZFNj
cm9sbGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTg0LDkgKzE4MSw5IEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGlu
ZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9pZ25v
cmVOZXh0VHJlZU91dGxpbmVTY3JvbGxFdmVudCA9IHRydWU7CiAgICAgICAgIHRoaXMuX3RyZWVP
dXRsaW5lLmVsZW1lbnQucGFyZW50Tm9kZS5zY3JvbGxUb3AgPSB0aGlzLl9kYXRhR3JpZC5zY3Jv
bGxDb250YWluZXIuc2Nyb2xsVG9wOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkTm9k
ZVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWROb2RlU2VsZWN0ZWQoZXZl
bnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xOTQsOSArMTkxLDkgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRT
eW5jaHJvbml6ZXIucHJvdG90eXBlID0gewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhp
cy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlOwogICAgICAgICBpZiAoZGF0YUdyaWROb2RlKQogICAg
ICAgICAgICAgZGF0YUdyaWROb2RlLl9fdHJlZUVsZW1lbnQuc2VsZWN0KHRydWUsIHRydWUsIHRy
dWUsIHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkTm9kZUV4cGFuZGVkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWROb2RlRXhwYW5kZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDYs
OSArMjAzLDkgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghZGF0YUdyaWROb2RlLl9fdHJlZUVsZW1lbnQu
ZXhwYW5kZWQpCiAgICAgICAgICAgICBkYXRhR3JpZE5vZGUuX190cmVlRWxlbWVudC5leHBhbmQo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhR3JpZE5vZGVDb2xsYXBzZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9kYXRhR3JpZE5vZGVDb2xsYXBzZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTgsOSArMjE1
LDkgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90
eXBlID0gewogCiAgICAgICAgIGlmIChkYXRhR3JpZE5vZGUuX190cmVlRWxlbWVudC5leHBhbmRl
ZCkKICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS5fX3RyZWVFbGVtZW50LmNvbGxhcHNlKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVs
ZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQorICAgIF90cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVt
ZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTIyOSw5ICsyMjYsOSBAQCBXZWJJbnNwZWN0b3IuVHJl
ZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGRhdGFHcmlkTm9kZSk7CiAKICAgICAgICAgZGF0YUdyaWROb2RlLnNlbGVjdCh0
cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudEFkZGVkOiBmdW5jdGlvbih0
cmVlRWxlbWVudCkKKyAgICBfdHJlZUVsZW1lbnRBZGRlZCh0cmVlRWxlbWVudCkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0Niw5
ICsyNDMsOSBAQCBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNoaWxkSW5kZXggIT09IC0xKTsK
IAogICAgICAgICBwYXJlbnREYXRhR3JpZE5vZGUuaW5zZXJ0Q2hpbGQoZGF0YUdyaWROb2RlLCBj
aGlsZEluZGV4KTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudFJlbW92ZWQ6IGZ1
bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIF90cmVlRWxlbWVudFJlbW92ZWQodHJlZUVsZW1lbnQp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0yNTgsOSArMjU1LDkgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5j
aHJvbml6ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChkYXRhR3JpZE5vZGUucGFyZW50
KQogICAgICAgICAgICAgZGF0YUdyaWROb2RlLnBhcmVudC5yZW1vdmVDaGlsZChkYXRhR3JpZE5v
ZGUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50RXhwYW5kZWQ6IGZ1bmN0aW9u
KHRyZWVFbGVtZW50KQorICAgIF90cmVlRWxlbWVudEV4cGFuZGVkKHRyZWVFbGVtZW50KQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjcwLDkgKzI2Nyw5IEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25p
emVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIWRhdGFHcmlkTm9kZS5leHBhbmRlZCkK
ICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS5leHBhbmQoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF90cmVlRWxlbWVudENvbGxhcHNlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgX3RyZWVF
bGVtZW50Q29sbGFwc2VkKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9l
bmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjgyLDkgKzI3OSw5IEBAIFdlYkluc3Bl
Y3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBpZiAoZGF0YUdyaWROb2RlLmV4cGFuZGVkKQogICAgICAgICAgICAgZGF0YUdyaWROb2Rl
LmNvbGxhcHNlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRIaWRkZW5DaGFu
Z2VkOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgaGlkZGVuKQorICAgIF90cmVlRWxlbWVudEhpZGRl
bkNoYW5nZWQodHJlZUVsZW1lbnQsIGhpZGRlbikKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5f
ZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI5NSw1ICsyOTIsMyBAQCBXZWJJbnNw
ZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGRhdGFHcmlkTm9kZS5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImhpZGRlbiIsIGhpZGRl
bik7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJv
bml6ZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VHlwZVByb3BlcnRpZXNTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVHlwZVByb3BlcnRpZXNTZWN0aW9uLmpzCmluZGV4IDk0NjA0YzdiZmY5ZDZm
OTc5MDU2YzU4NzExOWE5NzQ2NDdjYzlmMzEuLjUyZDIxODM5YmQ1M2I3NTIxMWI0ZGJiYWYwNzcz
NWI1N2Y5YTU5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1R5cGVQcm9wZXJ0aWVzU2VjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UeXBlUHJvcGVydGllc1NlY3Rpb24uanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjgsNyAr
NjgsNyBAQCBXZWJJbnNwZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHZhciB0aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwog
ICAgICAgICAgICAgdGl0bGUuY2xhc3NOYW1lID0gImluZm8iOwogICAgICAgICAgICAgdGl0bGUu
dGV4dENvbnRlbnQgPSB0aGlzLmVtcHR5UGxhY2Vob2xkZXI7Ci0gICAgICAgICAgICB2YXIgaW5m
b0VsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQodGl0bGUsIG51bGwsIGZhbHNlKTsKKyAgICAgICAg
ICAgIHZhciBpbmZvRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQodGl0bGUs
IG51bGwsIGZhbHNlKTsKICAgICAgICAgICAgIHRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5lLmFw
cGVuZENoaWxkKGluZm9FbGVtZW50KTsKICAgICAgICAgfQogCkBAIC03OSw3MSArNzksMjMgQEAg
V2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgfQog
fTsKIAotLy8gVGhpcyBpcyBtb3N0bHkgaWRlbnRpY2FsIHRvIE9iamVjdFRyZWVWaWV3LmNvbXBh
cmVQcm9wZXJ0aWVzLgotLy8gQnV0IHRoaXMgY2hlY2tzIGZvciBlcXVhbGl0eSBiZWNhdXNlIHdl
IGNhbiBoYXZlIHR3byBvYmplY3RzIG5hbWVkIHRoZSBzYW1lIHRoaW5nLgotV2ViSW5zcGVjdG9y
LlR5cGVQcm9wZXJ0aWVzU2VjdGlvbi5Qcm9wZXJ0eUNvbXBhcmF0b3IgPSBmdW5jdGlvbihwcm9w
ZXJ0eUEsIHByb3BlcnR5QikKK1dlYkluc3BlY3Rvci5UeXBlUHJvcGVydHlUcmVlRWxlbWVudCA9
IGNsYXNzIFR5cGVQcm9wZXJ0eVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRyZWVF
bGVtZW50CiB7Ci0gICAgdmFyIGEgPSBwcm9wZXJ0eUEubmFtZTsKLSAgICB2YXIgYiA9IHByb3Bl
cnR5Qi5uYW1lOwotICAgIGlmIChhLmluZGV4T2YoIl9fcHJvdG9fXyIpICE9PSAtMSkKLSAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgaWYgKGIuaW5kZXhPZigiX19wcm90b19fIikgIT09IC0xKQotICAg
ICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGEgPT09IGIpCi0gICAgICAgIHJldHVybiAxOwotCi0g
ICAgdmFyIGRpZmYgPSAwOwotICAgIHZhciBjaHVuayA9IC9eXGQrfF5cRCsvOwotICAgIHZhciBj
aHVua2EsIGNodW5rYiwgYW51bSwgYm51bTsKLSAgICB3aGlsZSAoZGlmZiA9PT0gMCkgewotICAg
ICAgICBpZiAoIWEgJiYgYikKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKCFi
ICYmIGEpCi0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2h1bmthID0gYS5tYXRjaChj
aHVuaylbMF07Ci0gICAgICAgIGNodW5rYiA9IGIubWF0Y2goY2h1bmspWzBdOwotICAgICAgICBh
bnVtID0gIWlzTmFOKGNodW5rYSk7Ci0gICAgICAgIGJudW0gPSAhaXNOYU4oY2h1bmtiKTsKLSAg
ICAgICAgaWYgKGFudW0gJiYgIWJudW0pCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAg
IGlmIChibnVtICYmICFhbnVtKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGlmIChh
bnVtICYmIGJudW0pIHsKLSAgICAgICAgICAgIGRpZmYgPSBjaHVua2EgLSBjaHVua2I7Ci0gICAg
ICAgICAgICBpZiAoZGlmZiA9PT0gMCAmJiBjaHVua2EubGVuZ3RoICE9PSBjaHVua2IubGVuZ3Ro
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCErY2h1bmthICYmICErY2h1bmtiKSAvLyBjaHVua3Mg
YXJlIHN0cmluZ3Mgb2YgYWxsIDBzIChzcGVjaWFsIGNhc2UpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBjaHVua2EubGVuZ3RoIC0gY2h1bmtiLmxlbmd0aDsKLSAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaHVua2IubGVuZ3RoIC0gY2h1bmthLmxl
bmd0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChjaHVua2EgIT09IGNodW5r
YikKLSAgICAgICAgICAgIHJldHVybiAoY2h1bmthIDwgY2h1bmtiKSA/IC0xIDogMTsKLSAgICAg
ICAgYSA9IGEuc3Vic3RyaW5nKGNodW5rYS5sZW5ndGgpOwotICAgICAgICBiID0gYi5zdWJzdHJp
bmcoY2h1bmtiLmxlbmd0aCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRpZmY7Ci19OwotCi1XZWJJ
bnNwZWN0b3IuVHlwZVByb3BlcnR5VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihwcm9wZXJ0eSkKLXsK
LSAgICB0aGlzLnByb3BlcnR5ID0gcHJvcGVydHk7Ci0KLSAgICB0aGlzLm5hbWVFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgIHRoaXMubmFtZUVsZW1lbnQuY2xh
c3NOYW1lID0gIm5hbWUiOwotICAgIHRoaXMubmFtZUVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlz
LnByb3BlcnR5Lm5hbWU7CisgICAgY29uc3RydWN0b3IocHJvcGVydHkpCisgICAgeworICAgICAg
ICBzdXBlcih0aGlzLm5hbWVFbGVtZW50LCBudWxsLCBmYWxzZSk7CiAKLSAgICBUcmVlRWxlbWVu
dC5jYWxsKHRoaXMsIHRoaXMubmFtZUVsZW1lbnQsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgdGhp
cy5wcm9wZXJ0eSA9IHByb3BlcnR5OwogCi0gICAgdGhpcy50b2dnbGVPbkNsaWNrID0gdHJ1ZTsK
LSAgICB0aGlzLmhhc0NoaWxkcmVuID0gISF0aGlzLnByb3BlcnR5LnN0cnVjdHVyZTsKLX07Cisg
ICAgICAgIHRoaXMubmFtZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
CisgICAgICAgIHRoaXMubmFtZUVsZW1lbnQuY2xhc3NOYW1lID0gIm5hbWUiOworICAgICAgICB0
aGlzLm5hbWVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5wcm9wZXJ0eS5uYW1lOwogCi1XZWJJ
bnNwZWN0b3IuVHlwZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuVHlwZVByb3BlcnR5VHJlZUVsZW1lbnQsCi0gICAgX19wcm90
b19fOiBUcmVlRWxlbWVudC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMudG9nZ2xlT25DbGljayA9
IHRydWU7CisgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSAhIXRoaXMucHJvcGVydHkuc3RydWN0
dXJlOworICAgIH0KIAotICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRl
KCkKICAgICB7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtMTg0LDQgKzEz
NiwzIEBAIFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVHlwZVByb3Bl
cnR5VHJlZUVsZW1lbnQocHJvcGVydHkpKTsKICAgICB9CiB9OwotCg==
</data>
<flag name="review"
          id="274333"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="274334"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>