<?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>177024</bug_id>
          
          <creation_ts>2017-09-15 13:59:38 -0700</creation_ts>
          <short_desc>Web Inspector: introduce an AppController class and shared instance of it</short_desc>
          <delta_ts>2017-09-27 12:29:57 -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>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>mattbaker</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1349522</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-09-15 13:59:38 -0700</bug_when>
    <thetext>Main.js and Test.js are doing a lot of the same things. We should have a singleton AppController rather than hanging a ton of singleton state off of the WI object.
This is a large project that will be completed incrementally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349526</commentid>
    <comment_count>1</comment_count>
      <attachid>320962</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-09-15 14:12:09 -0700</bug_when>
    <thetext>Created attachment 320962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349545</commentid>
    <comment_count>2</comment_count>
      <attachid>320962</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-15 15:13:58 -0700</bug_when>
    <thetext>Comment on attachment 320962
Patch

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

Nice refactor, Main.js has become increasingly unwieldy. r=me with comments.

&gt; Source/WebInspectorUI/UserInterface/Controllers/AppController.js:48
&gt; +        for (var domain of domains) {

Use `let` throughout.

&gt; Source/WebInspectorUI/UserInterface/Controllers/AppControllerBase.js:38
&gt; +    get hasExtraDomains() { throw new Error(&quot;This method must be overridden by a subclass.&quot;); }

Since we use this pattern pretty heavily I&apos;d go so far as to add a WI.NotImplementedError that has this text baked in.

&gt; Source/WebInspectorUI/UserInterface/Main.html:829
&gt; +        WI.sharedApp = new WI.AppController;

I&apos;m not sure about this name. Why not simply `WI.appController`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349672</commentid>
    <comment_count>3</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-09-16 09:42:53 -0700</bug_when>
    <thetext>(In reply to Matt Baker from comment #2)
&gt; Comment on attachment 320962 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=320962&amp;action=review
&gt; 
&gt; Nice refactor, Main.js has become increasingly unwieldy. r=me with comments.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Controllers/AppController.js:48
&gt; &gt; +        for (var domain of domains) {
&gt; 
&gt; Use `let` throughout.

Yup, I caught this later in the day.

&gt; &gt; Source/WebInspectorUI/UserInterface/Controllers/AppControllerBase.js:38
&gt; &gt; +    get hasExtraDomains() { throw new Error(&quot;This method must be overridden by a subclass.&quot;); }
&gt; 
&gt; Since we use this pattern pretty heavily I&apos;d go so far as to add a
&gt; WI.NotImplementedError that has this text baked in.

OK

&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Main.html:829
&gt; &gt; +        WI.sharedApp = new WI.AppController;
&gt; 
&gt; I&apos;m not sure about this name. Why not simply `WI.appController`?

It matches what is done in Cocoa, and it&apos;s shorter. It also makes it pretty obvious that this is a singleton.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350063</commentid>
    <comment_count>4</comment_count>
      <attachid>321123</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-09-18 13:21:26 -0700</bug_when>
    <thetext>Created attachment 321123
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350095</commentid>
    <comment_count>5</comment_count>
      <attachid>321123</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-18 14:33:44 -0700</bug_when>
    <thetext>Comment on attachment 321123
For landing

Clearing flags on attachment: 321123

Committed r222181: &lt;http://trac.webkit.org/changeset/222181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350096</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-18 14:33:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353430</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:29:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693386&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320962</attachid>
            <date>2017-09-15 14:12:09 -0700</date>
            <delta_ts>2017-09-18 13:21:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177024-20170915141209.patch</filename>
            <type>text/plain</type>
            <size>27212</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBi
NmZkNTE5YWVkMGRlMWNhYTkwYjFmMWJlMjc5Njc0NjUyNGEzOTcwLi5hNTRhM2QwYjM0NWQ3ZjI2
M2MyYmNlYWM1NjdmMTY4N2U2M2M2ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAxNy0wOS0xNSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgYW4gQXBwQ29udHJvbGxlciBjbGFzcyBh
bmQgc2hhcmVkIGluc3RhbmNlIG9mIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzcwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3JVSSBjdXJyZW50bHkgaGFzIGFuIGFwcCBjb250
cm9sbGVyIHNpbmdsZXRvbiB0aGF0J3MgZGlzdHJpYnV0ZWQKKyAgICAgICAgYW1vbmcgbWFueSBw
cm9wZXJ0aWVzIG9uIHRoZSBXSSBvYmplY3QsIHdoaWNoIGFsc28gc2VydmVzIGFzIGEgbmFtZXNw
YWNlIGZvcgorICAgICAgICBjbGFzc2VzLCBlbnVtcywgYW5kIG90aGVyIGZyb250ZW5kIG9iamVj
dHMuIFRoZSBzaW5nbGV0b24gc2hvdWxkIGJlIGEgcHJvcGVyCisgICAgICAgIGNsYXNzIHNvIHRo
YXQgd2UgY2FuIHRoaW5rIG1vcmUgZWFzaWx5IGFib3V0IHdoYXQgc3RhdGUgaXMgZ2xvYmFsLgor
CisgICAgICAgIEluIHRoZSBwcm9jZXNzIG9mIG1vdmluZyBwaWVjZXMgb2YgTWFpbi5qcyBpbnRv
IEFwcENvbnRyb2xsZXIsIEkgaW50ZW5kIHRvIG1vdmUKKyAgICAgICAgbW9zdCBVSSByZWxhdGVk
IGNvZGUgaW50byBhIHZpZXcgY29udHJvbGxlciBjbGFzcyBmb3IgdGhlIHRvcCBsZXZlbCB2aWV3
LgorICAgICAgICBBcHBDb250cm9sbGVyIHJlYWxseSBzaG91bGRuJ3QgYmUgZG9pbmcgYW55dGhp
bmcgdG8gdGhlIHZpZXcgaGllcmFyY2h5IG9yIERPTS4KKyAgICAgICAgSXQgaXMgeWV0IHRvIGJl
IGRldGVybWluZWQgaG93IHJlc3BvbnNpYmlsaXR5IGZvciBnbG9iYWwgRE9NIGV2ZW50cywgc3Vj
aCBhcworICAgICAgICB0aG9zZSBmb3Iga2V5Ym9hcmQgc2hvcnRjdXRzLCB3aWxsIGJlIGhhbmRs
ZWQuCisKKyAgICAgICAgVGhpcyBsYXJnZXIgcmVmYWN0b3JpbmcgcHJvamVjdCB3aWxsIGxldCB1
cyBtb3JlIGVhc2lseSBkbyB0aGluZ3MgbGlrZSBjb25uZWN0CisgICAgICAgIHRvIG11bHRpcGxl
IGRlYnVnZ2FibGVzIGluIHRoZSBzYW1lIEluc3BlY3RvciBpbnN0YW5jZSwgYW5kIHN3aXRjaCBi
ZXR3ZWVuIHZpZXdzCisgICAgICAgIG9mIGRpZmZlcmVudCBkZWJ1Z2dhYmxlIHRhcmdldHMuIEV2
ZW4gaWYgdGhpcyBuZXZlciBjb21lcyB0byBwYXNzLCB0aGUgY29kZSB3aWxsCisgICAgICAgIGJl
IGEgbG90IGVhc2llciB0byByZWFzb24gYWJvdXQgYW5kIG1haW50YWluIGluIHRoZSBmdXR1cmUu
CisKKyAgICAgICAgRm9yIHRoZSBmaXJzdCBwYXRjaCwgaW50cm9kdWNlIHtBcHBDb250cm9sbGVy
LCBUZXN0QXBwQ29udHJvbGxlcn0gPDogQXBwQ29udHJvbGxlckJhc2UuCisgICAgICAgIFNoYXJl
ZCBjb2RlIGdvZXMgaW4gdGhlIGJhc2UgY2xhc3MuIEluIHRoZSBNYWluLmh0bWwgYW5kIFRlc3Qu
aHRtbCBmaWxlcywgZmlyc3QKKyAgICAgICAgY29uc3RydWN0IHRoZSBBcHBDb250cm9sbGVyIGFu
ZCB0aGVuIGNhbGwgLmluaXRpYWxpemUoKSB0byBhdm9pZCBjeWNsaWMgZGVwZW5kZW5jaWVzCisg
ICAgICAgIG9uIHRoZSBnbG9iYWwgc2luZ2xldG9uIFdJLnNoYXJlZEFwcC4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5o
dG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzOgorICAgICAgICAoV0ku
bG9hZGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAg
KFdJLmxvYWRlZCk6CisgICAgICAgIE1vdmUgc29tZSBzaGFyZWQgY29kZSBvdXQgb2YgaGVyZSBp
bnRvIEFwcENvbnRyb2xsZXJCYXNlLmNvbnN0cnVjdG9yLgorICAgICAgICBFdmVudHVhbGx5IFdJ
LmxvYWRlZCBzaG91bGQgbm90IGV4aXN0LCBhbmQgaXRzIGNvZGUgd2lsbCBtb3ZlIGVsc2V3aGVy
ZS4KKworICAgICAgICAoV0kuY29udGVudExvYWRlZCk6CisgICAgICAgIEFkb3B0IGdsb2JhbCBy
ZWZlcmVuY2UuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRy
b2xsZXJCYXNlLmpzOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9NYWluVGFyZ2V0LmpzLgorICAgICAgICAoV0kuQXBwQ29udHJvbGxlckJh
c2UpOgorICAgICAgICAoV0kuQXBwQ29udHJvbGxlckJhc2UucHJvdG90eXBlLmdldCBoYXNFeHRy
YURvbWFpbnMpOgorICAgICAgICAoV0kuQXBwQ29udHJvbGxlckJhc2UucHJvdG90eXBlLmdldCBk
ZWJ1Z2dhYmxlVHlwZSk6CisgICAgICAgIChXSS5BcHBDb250cm9sbGVyQmFzZS5wcm90b3R5cGUu
aW5pdGlhbGl6ZSk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENv
bnRyb2xsZXIuanM6IE5ldy4KKyAgICAgICAgKFdJLkFwcENvbnRyb2xsZXIpOgorICAgICAgICAo
V0kuQXBwQ29udHJvbGxlci5wcm90b3R5cGUuZ2V0IGhhc0V4dHJhRG9tYWlucyk6CisgICAgICAg
IChXSS5BcHBDb250cm9sbGVyLnByb3RvdHlwZS5nZXQgZGVidWdnYWJsZVR5cGUpOgorICAgICAg
ICAoV0kuQXBwQ29udHJvbGxlci5wcm90b3R5cGUuYWN0aXZhdGVFeHRyYURvbWFpbnMpOgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9UZXN0L1Rlc3RBcHBDb250cm9sbGVyLmpzOiBOZXcuCisg
ICAgICAgIChXSS5UZXN0QXBwQ29udHJvbGxlcik6CisgICAgICAgIChXSS5UZXN0QXBwQ29udHJv
bGxlci5wcm90b3R5cGUuZ2V0IGhhc0V4dHJhRG9tYWlucyk6CisgICAgICAgIChXSS5UZXN0QXBw
Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0IGRlYnVnZ2FibGVUeXBlKToKKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzOgorICAgICAgICAoV0ku
VGltZWxpbmVNYW5hZ2VyLmRlZmF1bHRUaW1lbGluZVR5cGVzKToKKyAgICAgICAgKFdJLlRpbWVs
aW5lTWFuYWdlci5hdmFpbGFibGVUaW1lbGluZVR5cGVzKToKKyAgICAgICAgKFdJLlRpbWVsaW5l
TWFuYWdlci5wcm90b3R5cGUuc2NyaXB0UHJvZmlsZXJQcm9ncmFtbWF0aWNDYXB0dXJlU3RhcnRl
ZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLnNjcmlwdFByb2ZpbGVy
UHJvZ3JhbW1hdGljQ2FwdHVyZVN0b3BwZWQpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2Vy
LnByb3RvdHlwZS5zY3JpcHRQcm9maWxlclRyYWNraW5nQ29tcGxldGVkKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qczoKKyAgICAgICAgKFdJLlRp
bWVsaW5lUmVjb3JkaW5nLnNvdXJjZUNvZGVUaW1lbGluZXNTdXBwb3J0ZWQpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanM6CisgICAgICAgIChX
SS5JbnNwZWN0b3JPYnNlcnZlci5wcm90b3R5cGUuaW5zcGVjdCk6CisgICAgICAgIChXSS5JbnNw
ZWN0b3JPYnNlcnZlci5wcm90b3R5cGUuYWN0aXZhdGVFeHRyYURvbWFpbnMpOgorICAgICAgICAo
V0kuSW5zcGVjdG9yT2JzZXJ2ZXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
TWFpblRhcmdldC5qczoKKyAgICAgICAgKFdJLk1haW5UYXJnZXQpOgorICAgICAgICAoV0kuTWFp
blRhcmdldC5wcm90b3R5cGUuZ2V0IGRpc3BsYXlOYW1lKToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuUmVzb3VyY2VT
aWRlYmFyUGFuZWwpOgorICAgICAgICAoV0kuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBl
LmluaXRpYWxMYXlvdXQpOgorICAgICAgICAoV0kuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90
eXBlLl9hZGRTY3JpcHQpOgorICAgICAgICAoV0kuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90
eXBlLl9leHRyYURvbWFpbnNBY3RpdmF0ZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvVG9vbGJhci5qczoKKyAgICAgICAgVXNlIFdJLnNoYXJlZEFwcC57ZGVidWdnYWJsZVR5cGUs
IGhhc0V4dHJhRG9tYWluc30uCisKIDIwMTctMDktMTQgIERldmluIFJvdXNzbyAgPHdlYmtpdEBk
ZXZpbnJvdXNzby5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbWFrZSByZWNvcmRpbmcg
c3dpenpsZSBhc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
QmFzZS9NYWluLmpzCmluZGV4IGNjNGU5YmE0MTQ0NjJlZWNhNDZkNGJjN2Q5OGNjN2M1YWI3MWVi
NTcuLjEzY2E3YTIyYjM4ZTkwOTJmZTM4YjUyM2JhMGFiMGU4MDY4OWU4N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTMzLDEx
ICszMyw2IEBAIFdJLkNvbnRlbnRWaWV3Q29va2llVHlwZSA9IHsKICAgICBUaW1lbGluZXM6ICJ0
aW1lbGluZXMiCiB9OwogCi1XSS5EZWJ1Z2dhYmxlVHlwZSA9IHsKLSAgICBXZWI6ICJ3ZWIiLAot
ICAgIEphdmFTY3JpcHQ6ICJqYXZhc2NyaXB0IgotfTsKLQogV0kuU2VsZWN0ZWRTaWRlYmFyUGFu
ZWxDb29raWVLZXkgPSAic2VsZWN0ZWQtc2lkZWJhci1wYW5lbCI7CiBXSS5UeXBlSWRlbnRpZmll
ckNvb2tpZUtleSA9ICJyZXByZXNlbnRlZC1vYmplY3QtdHlwZSI7CiAKQEAgLTU1LDkgKzUwLDYg
QEAgV0kuTGF5b3V0RGlyZWN0aW9uID0gewogCiBXSS5sb2FkZWQgPSBmdW5jdGlvbigpCiB7Ci0g
ICAgdGhpcy5kZWJ1Z2dhYmxlVHlwZSA9IEluc3BlY3RvckZyb250ZW5kSG9zdC5kZWJ1Z2dhYmxl
VHlwZSgpID09PSAid2ViIiA/IFdJLkRlYnVnZ2FibGVUeXBlLldlYiA6IFdJLkRlYnVnZ2FibGVU
eXBlLkphdmFTY3JpcHQ7Ci0gICAgdGhpcy5oYXNFeHRyYURvbWFpbnMgPSBmYWxzZTsKLQogICAg
IC8vIFJlZ2lzdGVyIG9ic2VydmVycyBmb3IgZXZlbnRzIGZyb20gdGhlIEluc3BlY3RvckJhY2tl
bmQuCiAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJJbnNwZWN0b3JEaXNwYXRjaGVy
KQogICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVySW5zcGVjdG9yRGlzcGF0Y2hlcihu
ZXcgV0kuSW5zcGVjdG9yT2JzZXJ2ZXIpOwpAQCAtMjQ3LDcgKzIzOSw3IEBAIFdJLmNvbnRlbnRM
b2FkZWQgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5h
ZGQoImxlZ2FjeS1tYWMiKTsKICAgICB9CiAKLSAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5h
ZGQodGhpcy5kZWJ1Z2dhYmxlVHlwZSk7CisgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRk
KFdJLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSk7CiAgICAgZG9jdW1lbnQuYm9keS5zZXRBdHRy
aWJ1dGUoImRpciIsIHRoaXMucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSk7CiAKICAgICBmdW5j
dGlvbiBzZXRUYWJTaXplKCkgewpAQCAtMzc4LDcgKzM3MCw3IEBAIFdJLmNvbnRlbnRMb2FkZWQg
PSBmdW5jdGlvbigpCiAgICAgdGhpcy5fdG9nZ2xlUHJldmlvdXNEb2NrQ29uZmlndXJhdGlvbktl
eWJvYXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5LZXlib2FyZFNob3J0
Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXSS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlm
aWVyLlNoaWZ0LCAiRCIsIHRoaXMuX3RvZ2dsZVByZXZpb3VzRG9ja0NvbmZpZ3VyYXRpb24uYmlu
ZCh0aGlzKSk7CiAKICAgICB2YXIgdG9vbFRpcDsKLSAgICBpZiAoV0kuZGVidWdnYWJsZVR5cGUg
PT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpCisgICAgaWYgKFdJLnNoYXJlZEFwcC5k
ZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlwdCkKICAgICAgICAg
dG9vbFRpcCA9IFdJLlVJU3RyaW5nKCJSZXN0YXJ0ICglcykiKS5mb3JtYXQodGhpcy5fcmVsb2Fk
UGFnZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwogICAgIGVsc2UKICAgICAgICAgdG9v
bFRpcCA9IFdJLlVJU3RyaW5nKCJSZWxvYWQgdGhpcyBwYWdlICglcylcblJlbG9hZCBpZ25vcmlu
ZyBjYWNoZSAoJXMpIikuZm9ybWF0KHRoaXMuX3JlbG9hZFBhZ2VLZXlib2FyZFNob3J0Y3V0LmRp
c3BsYXlOYW1lLCB0aGlzLl9yZWxvYWRQYWdlSWdub3JpbmdDYWNoZUtleWJvYXJkU2hvcnRjdXQu
ZGlzcGxheU5hbWUpOwpAQCAtNzA0LDE0ICs2OTYsNiBAQCBXSS5yZWdpc3RlclRhYkNsYXNzID0g
ZnVuY3Rpb24odGFiQ2xhc3MpCiAKIFdJLmFjdGl2YXRlRXh0cmFEb21haW5zID0gZnVuY3Rpb24o
ZG9tYWlucykKIHsKLSAgICB0aGlzLmhhc0V4dHJhRG9tYWlucyA9IHRydWU7Ci0KLSAgICBmb3Ig
KHZhciBkb21haW4gb2YgZG9tYWlucykgewotICAgICAgICB2YXIgYWdlbnQgPSBJbnNwZWN0b3JC
YWNrZW5kLmFjdGl2YXRlRG9tYWluKGRvbWFpbik7Ci0gICAgICAgIGlmIChhZ2VudC5lbmFibGUp
Ci0gICAgICAgICAgICBhZ2VudC5lbmFibGUoKTsKLSAgICB9Ci0KICAgICB0aGlzLm5vdGlmaWNh
dGlvbnMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk5vdGlmaWNhdGlvbi5FeHRyYURvbWFp
bnNBY3RpdmF0ZWQsIHsiZG9tYWlucyI6IGRvbWFpbnN9KTsKIAogICAgIFdJLkNTU0NvbXBsZXRp
b25zLnJlcXVlc3RDU1NDb21wbGV0aW9ucygpOwpAQCAtMTg1OSw3ICsxODQzLDcgQEAgV0kuX3Vw
ZGF0ZVJlbG9hZFRvb2xiYXJCdXR0b24gPSBmdW5jdGlvbigpCiBXSS5fdXBkYXRlRG93bmxvYWRU
b29sYmFyQnV0dG9uID0gZnVuY3Rpb24oKQogewogICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA3
KTogUGFnZS5hcmNoaXZlIGRpZCBub3QgZXhpc3QgeWV0LgotICAgIGlmICghd2luZG93LlBhZ2VB
Z2VudCB8fCAhUGFnZUFnZW50LmFyY2hpdmUgfHwgdGhpcy5kZWJ1Z2dhYmxlVHlwZSAhPT0gV0ku
RGVidWdnYWJsZVR5cGUuV2ViKSB7CisgICAgaWYgKCF3aW5kb3cuUGFnZUFnZW50IHx8ICFQYWdl
QWdlbnQuYXJjaGl2ZSB8fCB0aGlzLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSAhPT0gV0kuRGVi
dWdnYWJsZVR5cGUuV2ViKSB7CiAgICAgICAgIHRoaXMuX2Rvd25sb2FkVG9vbGJhckJ1dHRvbi5o
aWRkZW4gPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjU4OSw3ICsyNTczLDcg
QEAgV0kuYXJjaGl2ZU1haW5GcmFtZSA9IGZ1bmN0aW9uKCkKIFdJLmNhbkFyY2hpdmVNYWluRnJh
bWUgPSBmdW5jdGlvbigpCiB7CiAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDcpOiBQYWdlLmFy
Y2hpdmUgZGlkIG5vdCBleGlzdCB5ZXQuCi0gICAgaWYgKCFQYWdlQWdlbnQuYXJjaGl2ZSB8fCB0
aGlzLmRlYnVnZ2FibGVUeXBlICE9PSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIpCisgICAgaWYgKCFQ
YWdlQWdlbnQuYXJjaGl2ZSB8fCB0aGlzLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSAhPT0gV0ku
RGVidWdnYWJsZVR5cGUuV2ViKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIVdJ
LmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSB8fCAhV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVhNjgzNjljMDNiMjI3N2U2M2E0NGYzYTc4NmVhMTI0MThjN2I4M2YKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9BcHBDb250cm9sbGVyLmpzCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitX
SS5BcHBDb250cm9sbGVyID0gY2xhc3MgQXBwQ29udHJvbGxlciBleHRlbmRzIFdJLkFwcENvbnRy
b2xsZXJCYXNlCit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
KworICAgICAgICB0aGlzLl9oYXNFeHRyYURvbWFpbnMgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5f
ZGVidWdnYWJsZVR5cGUgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3QuZGVidWdnYWJsZVR5cGUoKSA9
PT0gIndlYiIgPyBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIgOiBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZh
U2NyaXB0OworICAgIH0KKworICAgIC8vIFByb3BlcnRpZXMuCisKKyAgICBnZXQgaGFzRXh0cmFE
b21haW5zKCkgeyByZXR1cm4gdGhpcy5faGFzRXh0cmFEb21haW5zOyB9CisgICAgZ2V0IGRlYnVn
Z2FibGVUeXBlKCkgeyByZXR1cm4gdGhpcy5fZGVidWdnYWJsZVR5cGU7IH0KKworICAgIGFjdGl2
YXRlRXh0cmFEb21haW5zKGRvbWFpbnMpCisgICAgeworICAgICAgICBpZiAodGhpcy5faGFzRXh0
cmFEb21haW5zKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHRyYSBkb21haW5zIGhh
dmUgYWxyZWFkeSBiZWVuIGFjdGl2YXRlZCwgY2Fubm90IGFjdGl2YXRlIGFnYWluLiIpOworCisg
ICAgICAgIHRoaXMuX2hhc0V4dHJhRG9tYWlucyA9IHRydWU7CisKKyAgICAgICAgZm9yICh2YXIg
ZG9tYWluIG9mIGRvbWFpbnMpIHsKKyAgICAgICAgICAgIHZhciBhZ2VudCA9IEluc3BlY3RvckJh
Y2tlbmQuYWN0aXZhdGVEb21haW4oZG9tYWluKTsKKyAgICAgICAgICAgIGlmIChhZ2VudC5lbmFi
bGUpCisgICAgICAgICAgICAgICAgYWdlbnQuZW5hYmxlKCk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBGSVhNRTogYWxsIGNvZGUgd2l0aGluIFdJLmFjdGl2YXRlRXh0cmFEb21haW5zIHNob3Vs
ZCBiZSBkaXN0cmlidXRlZCBlbHNld2hlcmUuCisgICAgICAgIFdJLmFjdGl2YXRlRXh0cmFEb21h
aW5zKCk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXJCYXNlLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJvbGxlckJhc2UuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2IzMWM0OWIzNmY0NThkMDFkNTQ2Yjk0ZWE5MWMyYmI2ZjU1YjRiMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0FwcENvbnRyb2xsZXJCYXNlLmpzCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitXSS5EZWJ1Z2dhYmxlVHlwZSA9IHsKKyAgICBXZWI6ICJ3ZWIiLAorICAgIEphdmFTY3JpcHQ6
ICJqYXZhc2NyaXB0IgorfTsKKworV0kuQXBwQ29udHJvbGxlckJhc2UgPSBjbGFzcyBBcHBDb250
cm9sbGVyQmFzZQoreworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2lu
aXRpYWxpemVkID0gZmFsc2U7CisgICAgfQorCisgICAgZ2V0IGhhc0V4dHJhRG9tYWlucygpIHsg
dGhyb3cgbmV3IEVycm9yKCJUaGlzIG1ldGhvZCBtdXN0IGJlIG92ZXJyaWRkZW4gYnkgYSBzdWJj
bGFzcy4iKTsgfQorICAgIGdldCBkZWJ1Z2dhYmxlVHlwZSgpIHsgdGhyb3cgbmV3IEVycm9yKCJU
aGlzIG1ldGhvZCBtdXN0IGJlIG92ZXJyaWRkZW4gYnkgYSBzdWJjbGFzcy4iKTsgfQorCisgICAg
Ly8gU2luY2UgdmFyaW91cyBtZW1iZXJzIG9mIHRoZSBhcHAgY29udHJvbGxlciBkZXBlbmQgb24g
dGhlIGdsb2JhbCBzaW5nbGV0b24gdG8gZXhpc3QsCisgICAgLy8gc29tZSBpbml0aWFsaXphdGlv
biBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgdGhlIGFwcCBjb250cm9sbGVyIGhhcyBiZWVuIGNvbnN0
cnVjdGVkLgorICAgIGluaXRpYWxpemUoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2luaXRp
YWxpemVkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBcHAgY29udHJvbGxlciBpcyBh
bHJlYWR5IGluaXRpYWxpemVkLiIpOworCisgICAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1
ZTsKKworICAgICAgICAvLyBGSVhNRTogZXZlbnR1YWxseSBhbGwgY29kZSB3aXRoaW4gV0kubG9h
ZGVkIHNob3VsZCBiZSBkaXN0cmlidXRlZCBlbHNld2hlcmUuCisgICAgICAgIFdJLmxvYWRlZCgp
OworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXggMGIw
NTgxOTE2MjUwMzI0N2JlZWE3NmI5OGEyNjAyNGEwYTkzOTQ5OS4uN2I4M2QzM2JjNWE5MzlhZmM0
ZTBjZmIyZmQ0YjBlOTIyNTY0NjAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdl
ci5qcwpAQCAtNjYsNyArNjYsNyBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGlu
ZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHN0YXRpYyBkZWZhdWx0VGltZWxpbmVU
eXBlcygpCiAgICAgewotICAgICAgICBpZiAoV0kuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVn
Z2FibGVUeXBlLkphdmFTY3JpcHQpIHsKKyAgICAgICAgaWYgKFdJLnNoYXJlZEFwcC5kZWJ1Z2dh
YmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlwdCkgewogICAgICAgICAgICAg
bGV0IGRlZmF1bHRUeXBlcyA9IFtXSS5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdF07CiAgICAg
ICAgICAgICBpZiAoV0kuSGVhcEFsbG9jYXRpb25zSW5zdHJ1bWVudC5zdXBwb3J0ZWQoKSkKICAg
ICAgICAgICAgICAgICBkZWZhdWx0VHlwZXMucHVzaChXSS5UaW1lbGluZVJlY29yZC5UeXBlLkhl
YXBBbGxvY2F0aW9ucyk7CkBAIC04OCw3ICs4OCw3IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNs
YXNzIFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHN0YXRpYyBhdmFpbGFi
bGVUaW1lbGluZVR5cGVzKCkKICAgICB7CiAgICAgICAgIGxldCB0eXBlcyA9IFdJLlRpbWVsaW5l
TWFuYWdlci5kZWZhdWx0VGltZWxpbmVUeXBlcygpOwotICAgICAgICBpZiAoV0kuZGVidWdnYWJs
ZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpCisgICAgICAgIGlmIChXSS5z
aGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQp
CiAgICAgICAgICAgICByZXR1cm4gdHlwZXM7CiAKICAgICAgICAgaWYgKFdJLk1lbW9yeUluc3Ry
dW1lbnQuc3VwcG9ydGVkKCkpCkBAIC04NzgsNyArODc4LDcgQEAgV0kuVGltZWxpbmVNYW5hZ2Vy
ID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgc2NyaXB0UHJv
ZmlsZXJQcm9ncmFtbWF0aWNDYXB0dXJlU3RhcnRlZCgpCiAgICAgewogICAgICAgICAvLyBGSVhN
RTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1ODc1Mz4gR2VuZXJhbGl6ZSB0aGUgY29uY2VwdCBv
ZiBJbnN0cnVtZW50cyBvbiB0aGUgYmFja2VuZCB0byB3b3JrIGVxdWFsbHkgZm9yIEpTQ29udGV4
dCBhbmQgV2ViIGluc3BlY3Rpb24KLSAgICAgICAgY29uc29sZS5hc3NlcnQoV0kuZGVidWdnYWJs
ZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpOworICAgICAgICBjb25zb2xl
LmFzc2VydChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBl
LkphdmFTY3JpcHQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5faXNDYXB0dXJpbmcp
OwogCiAgICAgICAgIHRoaXMucHJvZ3JhbW1hdGljQ2FwdHVyZVN0YXJ0ZWQoKTsKQEAgLTg4Nyw3
ICs4ODcsNyBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICBzY3JpcHRQcm9maWxlclByb2dyYW1tYXRpY0NhcHR1cmVTdG9w
cGVkKCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTU4
NzUzPiBHZW5lcmFsaXplIHRoZSBjb25jZXB0IG9mIEluc3RydW1lbnRzIG9uIHRoZSBiYWNrZW5k
IHRvIHdvcmsgZXF1YWxseSBmb3IgSlNDb250ZXh0IGFuZCBXZWIgaW5zcGVjdGlvbgotICAgICAg
ICBjb25zb2xlLmFzc2VydChXSS5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUu
SmF2YVNjcmlwdCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFdJLnNoYXJlZEFwcC5kZWJ1Z2dh
YmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlwdCk7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX2lzQ2FwdHVyaW5nKTsKIAogICAgICAgICB0aGlzLnByb2dyYW1tYXRp
Y0NhcHR1cmVTdG9wcGVkKCk7CkBAIC05NzcsNyArOTc3LDcgQEAgV0kuVGltZWxpbmVNYW5hZ2Vy
ID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgLy8g
QXNzb2NpYXRlIHRoZSBTY3JpcHRQcm9maWxlciBjcmVhdGVkIHJlY29yZHMgd2l0aCBXZWIgVGlt
ZWxpbmUgcmVjb3Jkcy4KICAgICAgICAgLy8gRmlsdGVyIG91dCB0aGUgYWxyZWFkeSBhZGRlZCBT
Y3JpcHRQcm9maWxlciBldmVudHMgd2hpY2ggc2hvdWxkIG5vdCBoYXZlIGJlZW4gd3JhcHBlZC4K
LSAgICAgICAgaWYgKFdJLmRlYnVnZ2FibGVUeXBlICE9PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZh
U2NyaXB0KSB7CisgICAgICAgIGlmIChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgIT09IFdJ
LkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpIHsKICAgICAgICAgICAgIHRoaXMuX3NjcmlwdFBy
b2ZpbGVyUmVjb3JkcyA9IHRoaXMuX3NjcmlwdFByb2ZpbGVyUmVjb3Jkcy5maWx0ZXIoKHgpID0+
IHguX19zY3JpcHRQcm9maWxlclR5cGUgPT09IFNjcmlwdFByb2ZpbGVyQWdlbnQuRXZlbnRUeXBl
Lk90aGVyKTsKICAgICAgICAgICAgIHRoaXMuX21lcmdlU2NyaXB0UHJvZmlsZVJlY29yZHMoKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sCmluZGV4IGY1OTZlMjUwMjlmOTdjOTljZmJhZDE2YjM1YzJmZjI4NTkzNzUzYzYuLjBhNTIw
MzhiYzA0MGIzNmU0MjViMDYxMGJjM2VlYzBhNjE5M2I4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTgxNyw2ICs4MTcsOCBAQAogICAg
IDxzY3JpcHQgc3JjPSJXb3JrZXJzL0Zvcm1hdHRlci9Gb3JtYXR0ZXJDb250ZW50QnVpbGRlci5q
cyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9NYWluLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQXBwQ29udHJvbGxlckJhc2UuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9BcHBDb250cm9sbGVyLmpzIj48L3Nj
cmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJEZWJ1Zy9Cb290c3RyYXAuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJEZWJ1Zy9DYXB0dXJpbmdQcm90b2NvbFRyYWNlci5qcyI+PC9zY3Jp
cHQ+CkBAIC04MjQsNyArODI2LDggQEAKICAgICA8c2NyaXB0IHNyYz0iRGVidWcvRGVidWdDb250
ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0PgotICAgICAgICBXSS5sb2FkZWQo
KTsKKyAgICAgICAgV0kuc2hhcmVkQXBwID0gbmV3IFdJLkFwcENvbnRyb2xsZXI7CisgICAgICAg
IFdJLnNoYXJlZEFwcC5pbml0aWFsaXplKCk7CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9UaW1lbGluZVJlY29yZGluZy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qcwppbmRleCBhZjM0MTIxYTEyMWY3MDIwMWUw
OTJmZDI0OWJlOWJhZTdiMzA5MDJiLi40ZTBmYmM1ODZiZTA4NDMyM2M2YWUzMDdhNzc4MjVhNTM2
ODI2MTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvVGltZWxpbmVSZWNvcmRpbmcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkaW5nLmpzCkBAIC01Niw3ICs1Niw3IEBA
IFdJLlRpbWVsaW5lUmVjb3JkaW5nID0gY2xhc3MgVGltZWxpbmVSZWNvcmRpbmcgZXh0ZW5kcyBX
SS5PYmplY3QKIAogICAgIHN0YXRpYyBzb3VyY2VDb2RlVGltZWxpbmVzU3VwcG9ydGVkKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBXSS5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5
cGUuV2ViOworICAgICAgICByZXR1cm4gV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09PSBX
SS5EZWJ1Z2dhYmxlVHlwZS5XZWI7CiAgICAgfQogCiAgICAgLy8gUHVibGljCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JP
YnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L0luc3BlY3Rvck9ic2VydmVyLmpzCmluZGV4IDZhY2M4OGJiNDg5NWNlMzgzM2E3NzI5YTYxMTFk
NDU0N2ZjNjE2ODEuLmQwOTM4NTFiYjkzOWEwZTJhMTY3ZjcyNmJmMGM4ZDdjYzk0YzA5NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0lu
c3BlY3Rvck9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0luc3BlY3Rvck9ic2VydmVyLmpzCkBAIC01NSw3ICs1NSw3IEBAIFdJLklu
c3BlY3Rvck9ic2VydmVyID0gY2xhc3MgSW5zcGVjdG9yT2JzZXJ2ZXIKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJlbW90ZU9iamVjdC5yZWxlYXNlKCk7
Ci0gICAgICAgICAgICByZXR1cm47ICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoaGludHMuZGF0YWJhc2VJZCkKQEAgLTY4LDYgKzY4LDYg
QEAgV0kuSW5zcGVjdG9yT2JzZXJ2ZXIgPSBjbGFzcyBJbnNwZWN0b3JPYnNlcnZlcgogCiAgICAg
YWN0aXZhdGVFeHRyYURvbWFpbnMoZG9tYWlucykKICAgICB7Ci0gICAgICAgIFdJLmFjdGl2YXRl
RXh0cmFEb21haW5zKGRvbWFpbnMpOworICAgICAgICBXSS5zaGFyZWRBcHAuYWN0aXZhdGVFeHRy
YURvbWFpbnMoZG9tYWlucyk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL01haW5UYXJnZXQuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NYWluVGFyZ2V0LmpzCmluZGV4IDk1
YTg2OTFkYjU2Y2Q0MTBmODY3ZGM1NWMyMDQ3YjRiNTczNDExZWEuLmIyNjQxYzE2MTczZGY0Y2Q5
ZmVmMzI3NTcxNDYzMGNlZGMyOTMxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL01haW5UYXJnZXQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTWFpblRhcmdldC5qcwpAQCAtMjksNyAr
MjksNyBAQCBXSS5NYWluVGFyZ2V0ID0gY2xhc3MgTWFpblRhcmdldCBleHRlbmRzIFdJLlRhcmdl
dAogICAgIHsKICAgICAgICAgc3VwZXIoIm1haW4iLCAiIiwgV0kuVGFyZ2V0LlR5cGUuTWFpbiwg
SW5zcGVjdG9yQmFja2VuZC5tYWluQ29ubmVjdGlvbik7CiAKLSAgICAgICAgbGV0IGRpc3BsYXlO
YW1lID0gV0kuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLldlYiA/IFdJLlVJ
U3RyaW5nKCJNYWluIEZyYW1lIikgOiB0aGlzLmRpc3BsYXlOYW1lOworICAgICAgICBsZXQgZGlz
cGxheU5hbWUgPSBXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVU
eXBlLldlYiA/IFdJLlVJU3RyaW5nKCJNYWluIEZyYW1lIikgOiB0aGlzLmRpc3BsYXlOYW1lOwog
ICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0ID0gbmV3IFdJLkV4ZWN1dGlvbkNvbnRleHQo
dGhpcywgV0kuUnVudGltZU1hbmFnZXIuVG9wTGV2ZWxDb250ZXh0RXhlY3V0aW9uSWRlbnRpZmll
ciwgZGlzcGxheU5hbWUsIHRydWUsIG51bGwpOwogICAgIH0KIApAQCAtMzcsMTMgKzM3LDEzIEBA
IFdJLk1haW5UYXJnZXQgPSBjbGFzcyBNYWluVGFyZ2V0IGV4dGVuZHMgV0kuVGFyZ2V0CiAKICAg
ICBnZXQgZGlzcGxheU5hbWUoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChXSS5kZWJ1Z2dhYmxl
VHlwZSkgeworICAgICAgICBzd2l0Y2ggKFdJLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSkgewog
ICAgICAgICBjYXNlIFdJLkRlYnVnZ2FibGVUeXBlLldlYjoKICAgICAgICAgICAgIHJldHVybiBX
SS5VSVN0cmluZygiUGFnZSIpOwogICAgICAgICBjYXNlIFdJLkRlYnVnZ2FibGVUeXBlLkphdmFT
Y3JpcHQ6CiAgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIkphdmFTY3JpcHQgQ29udGV4
dCIpOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29uc29sZS5lcnJvcigiVW5leHBl
Y3RlZCBkZWJ1Z2dhYmxlIHR5cGU6ICIsIFdJLmRlYnVnZ2FibGVUeXBlKTsKKyAgICAgICAgICAg
IGNvbnNvbGUuZXJyb3IoIlVuZXhwZWN0ZWQgZGVidWdnYWJsZSB0eXBlOiAiLCBXSS5zaGFyZWRB
cHAuZGVidWdnYWJsZVR5cGUpOwogICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCJNYWlu
Iik7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9UZXN0Lmh0bWwKaW5kZXggMzE4MzIyY2IxNDJiZjMwMmU5ZmQxNDVmZjcxODI3YzMxYjAy
MDI0ZC4uZDBjZmIwNzNjYzljNmVlZThjM2Y2MjZhZjhmZDVhYWY5MWI2MmFiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtNDYsNiArNDYs
OCBAQAogICAgIDxzY3JpcHQgc3JjPSJUZXN0L1Rlc3RTdWl0ZS5qcyI+PC9zY3JpcHQ+CiAKICAg
ICA8c2NyaXB0IHNyYz0iVGVzdC9UZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvQXBwQ29udHJvbGxlckJhc2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJUZXN0L1Rlc3RBcHBDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQg
c3JjPSJCYXNlL0RPTVV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJh
c2UvRXZlbnRMaXN0ZW5lci5qcyI+PC9zY3JpcHQ+CkBAIC0yMTYsNyArMjE4LDggQEAKICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvQ29kZU1pcnJvckZvcm1hdHRlcnMuanMiPjwvc2NyaXB0PgogCiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICAgICBXSS5sb2FkZWQoKTsK
KyAgICAgICAgV0kuc2hhcmVkQXBwID0gbmV3IFdJLlRlc3RBcHBDb250cm9sbGVyOworICAgICAg
ICBXSS5zaGFyZWRBcHAuaW5pdGlhbGl6ZSgpOwogCiAgICAgICAgIC8vIERlYnVnIGxvZ2dpbmcg
aXMgc3luY2hyb25vdXMgb24gdGhlIHRlc3QgcGFnZS4KICAgICAgICAgSW5zcGVjdG9yVGVzdC5m
b3JjZURlYnVnTG9nZ2luZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzCmluZGV4IGYxYjUwODllMDNlZTExYTM0MzE3NmQwZjIw
YTRmMDEzNWRhOTE1NzMuLmI0MzdkMjRkNWNlYmU3NzI4NjYxMWQ1YTgxMTlkNTA4ZTRjOWEwMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVz
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3Qu
anMKQEAgLTIzLDE2ICsyMyw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdJLkRlYnVnZ2Fi
bGVUeXBlID0gewotICAgIFdlYjogIndlYiIsCi0gICAgSmF2YVNjcmlwdDogImphdmFzY3JpcHQi
Ci19OwotCiBXSS5sb2FkZWQgPSBmdW5jdGlvbigpCiB7Ci0gICAgdGhpcy5kZWJ1Z2dhYmxlVHlw
ZSA9IFdJLkRlYnVnZ2FibGVUeXBlLldlYjsKLSAgICB0aGlzLmhhc0V4dHJhRG9tYWlucyA9IGZh
bHNlOwotCiAgICAgLy8gUmVnaXN0ZXIgb2JzZXJ2ZXJzIGZvciBldmVudHMgZnJvbSB0aGUgSW5z
cGVjdG9yQmFja2VuZC4KICAgICAvLyBUaGUgaW5pdGlhbGl6YXRpb24gb3JkZXIgc2hvdWxkIG1h
dGNoIHRoZSBzYW1lIGluIE1haW4uanMuCiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rlcklu
c3BlY3RvckRpc3BhdGNoZXIobmV3IFdJLkluc3BlY3Rvck9ic2VydmVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdEFwcENvbnRyb2xs
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3RBcHBD
b250cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhOWUyMDdlNzZiZmI0ZTM2Yjc4YWUwOTI3NzE3YmUy
ZGRiMGJjM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9UZXN0L1Rlc3RBcHBDb250cm9sbGVyLmpzCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXSS5UZXN0QXBwQ29udHJvbGxlciA9IGNsYXNzIFRlc3RBcHBDb250cm9sbGVyIGV4
dGVuZHMgV0kuQXBwQ29udHJvbGxlckJhc2UKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgewor
ICAgICAgICBzdXBlcigpOworICAgIH0KKworICAgIGdldCBoYXNFeHRyYURvbWFpbnMoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGdldCBkZWJ1Z2dhYmxlVHlwZSgpIHsgcmV0dXJuIFdJLkRlYnVn
Z2FibGVUeXBlLldlYjsgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKaW5k
ZXggNmRlZjRlZGE0MjM2YjY1YjY0NTJlOTQzYzhiM2UwZWQ4NzMyYjkzYy4uMTA4ZGRiNTVmY2Vi
YWI5Y2I5ODQ1ODkxZmQ5OTAwZmE1MmRiZDU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFy
UGFuZWwuanMKQEAgLTc2LDcgKzc2LDcgQEAgV0kuUmVzb3VyY2VTaWRlYmFyUGFuZWwgPSBjbGFz
cyBSZXNvdXJjZVNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAgICAg
ICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXSS5UcmVlT3V0bGlu
ZS5FdmVudC5TZWxlY3Rpb25EaWRDaGFuZ2UsIHRoaXMuX3RyZWVTZWxlY3Rpb25EaWRDaGFuZ2Us
IHRoaXMpOwogICAgICAgICB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5pbmNsdWRlU291cmNlTWFw
UmVzb3VyY2VDaGlsZHJlbiA9IHRydWU7CiAKLSAgICAgICAgaWYgKFdJLmRlYnVnZ2FibGVUeXBl
ID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KSB7CisgICAgICAgIGlmIChXSS5zaGFy
ZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpIHsK
ICAgICAgICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmRpc2Nsb3N1cmVCdXR0b25zID0g
ZmFsc2U7CiAgICAgICAgICAgICBXSS5Tb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV0kuU291
cmNlQ29kZS5FdmVudC5Tb3VyY2VNYXBBZGRlZCwgKCkgPT4geyB0aGlzLmNvbnRlbnRUcmVlT3V0
bGluZS5kaXNjbG9zdXJlQnV0dG9ucyA9IHRydWU7IH0sIHRoaXMpOwogICAgICAgICB9CkBAIC0y
MDMsNyArMjAzLDcgQEAgV0kuUmVzb3VyY2VTaWRlYmFyUGFuZWwgPSBjbGFzcyBSZXNvdXJjZVNp
ZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAgICAgICAgZm9yIChsZXQg
c2NyaXB0IG9mIFdJLmRlYnVnZ2VyTWFuYWdlci5rbm93bk5vblJlc291cmNlU2NyaXB0cykgewog
ICAgICAgICAgICAgdGhpcy5fYWRkU2NyaXB0KHNjcmlwdCk7CiAKLSAgICAgICAgICAgIGlmIChz
Y3JpcHQuc291cmNlTWFwcy5sZW5ndGggJiYgV0kuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVn
Z2FibGVUeXBlLkphdmFTY3JpcHQpCisgICAgICAgICAgICBpZiAoc2NyaXB0LnNvdXJjZU1hcHMu
bGVuZ3RoICYmIFdJLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5
cGUuSmF2YVNjcmlwdCkKICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5k
aXNjbG9zdXJlQnV0dG9ucyA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMzUsNyArMzM1
LDcgQEAgV0kuUmVzb3VyY2VTaWRlYmFyUGFuZWwgPSBjbGFzcyBSZXNvdXJjZVNpZGViYXJQYW5l
bCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKIAogICAgICAgICAgICAgcGFyZW50Rm9sZGVy
VHJlZUVsZW1lbnQgPSB0aGlzLl9leHRlbnNpb25TY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQ7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoV0kuZGVidWdnYWJsZVR5cGUgPT09IFdJ
LkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQgJiYgIVdJLmhhc0V4dHJhRG9tYWlucykKKyAgICAg
ICAgICAgIGlmIChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVU
eXBlLkphdmFTY3JpcHQgJiYgIVdJLnNoYXJlZEFwcC5oYXNFeHRyYURvbWFpbnMpCiAgICAgICAg
ICAgICAgICAgaW5zZXJ0SW50b1RvcExldmVsID0gdHJ1ZTsKICAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgIGlmICghdGhpcy5fZXh0cmFTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQp
IHsKQEAgLTQ5Niw3ICs0OTYsNyBAQCBXSS5SZXNvdXJjZVNpZGViYXJQYW5lbCA9IGNsYXNzIFJl
c291cmNlU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQogCiAgICAgX2V4
dHJhRG9tYWluc0FjdGl2YXRlZCgpCiAgICAgewotICAgICAgICBpZiAoV0kuZGVidWdnYWJsZVR5
cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpCisgICAgICAgIGlmIChXSS5zaGFy
ZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpCiAg
ICAgICAgICAgICB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5kaXNjbG9zdXJlQnV0dG9ucyA9IHRy
dWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Ub29sYmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVG9vbGJhci5qcwppbmRleCBjMWUxYTI4Y2FjZWExNDc4YjEwZjExMGY4NDQyZDYz
MWFmM2VjMzUxLi43YzE5MjU1YjUwYjI2NGI1Y2FhYTdjYzQ1ZTFhYTZhMWIwYTJlYTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xi
YXIuanMKQEAgLTEwMSw3ICsxMDEsNyBAQCBXSS5Ub29sYmFyID0gY2xhc3MgVG9vbGJhciBleHRl
bmRzIFdJLk5hdmlnYXRpb25CYXIKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBG
b3JjZSBjb2xsYXBzZWQgc3R5bGUgZm9yIEphdmFTY3JpcHQgZGVidWdnYWJsZXMuCi0gICAgICAg
IGlmIChXSS5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlwdCkg
eworICAgICAgICBpZiAoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dh
YmxlVHlwZS5KYXZhU2NyaXB0KSB7CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZChXSS5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321123</attachid>
            <date>2017-09-18 13:21:26 -0700</date>
            <delta_ts>2017-09-18 14:33:44 -0700</delta_ts>
            <desc>For landing</desc>
            <filename>bug-177024-20170918132125.patch</filename>
            <type>text/plain</type>
            <size>27531</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
MDY3MDM4ZTdjOTQ4NmJkNjRhYjNmNmQ4ODZjNmY4MzU0NzI3YTkzLi5kMzUwMGJhNmU2NTc3NWI4
M2Q3ODgxMDhmMTBjYzNiODdmODc4OTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAxNy0wOS0xNSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgYW4gQXBwQ29udHJvbGxlciBjbGFzcyBh
bmQgc2hhcmVkIGluc3RhbmNlIG9mIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzcwMjQKKworICAgICAgICBSZXZpZXdlZCBieSBNYXR0IEJha2Vy
LgorCisgICAgICAgIFdlYkluc3BlY3RvclVJIGN1cnJlbnRseSBoYXMgYW4gYXBwIGNvbnRyb2xs
ZXIgc2luZ2xldG9uIHRoYXQncyBkaXN0cmlidXRlZAorICAgICAgICBhbW9uZyBtYW55IHByb3Bl
cnRpZXMgb24gdGhlIFdJIG9iamVjdCwgd2hpY2ggYWxzbyBzZXJ2ZXMgYXMgYSBuYW1lc3BhY2Ug
Zm9yCisgICAgICAgIGNsYXNzZXMsIGVudW1zLCBhbmQgb3RoZXIgZnJvbnRlbmQgb2JqZWN0cy4g
VGhlIHNpbmdsZXRvbiBzaG91bGQgYmUgYSBwcm9wZXIKKyAgICAgICAgY2xhc3Mgc28gdGhhdCB3
ZSBjYW4gdGhpbmsgbW9yZSBlYXNpbHkgYWJvdXQgd2hhdCBzdGF0ZSBpcyBnbG9iYWwuCisKKyAg
ICAgICAgSW4gdGhlIHByb2Nlc3Mgb2YgbW92aW5nIHBpZWNlcyBvZiBNYWluLmpzIGludG8gQXBw
Q29udHJvbGxlciwgSSBpbnRlbmQgdG8gbW92ZQorICAgICAgICBtb3N0IFVJIHJlbGF0ZWQgY29k
ZSBpbnRvIGEgdmlldyBjb250cm9sbGVyIGNsYXNzIGZvciB0aGUgdG9wIGxldmVsIHZpZXcuCisg
ICAgICAgIEFwcENvbnRyb2xsZXIgcmVhbGx5IHNob3VsZG4ndCBiZSBkb2luZyBhbnl0aGluZyB0
byB0aGUgdmlldyBoaWVyYXJjaHkgb3IgRE9NLgorICAgICAgICBJdCBpcyB5ZXQgdG8gYmUgZGV0
ZXJtaW5lZCBob3cgcmVzcG9uc2liaWxpdHkgZm9yIGdsb2JhbCBET00gZXZlbnRzLCBzdWNoIGFz
CisgICAgICAgIHRob3NlIGZvciBrZXlib2FyZCBzaG9ydGN1dHMsIHdpbGwgYmUgaGFuZGxlZC4K
KworICAgICAgICBUaGlzIGxhcmdlciByZWZhY3RvcmluZyBwcm9qZWN0IHdpbGwgbGV0IHVzIG1v
cmUgZWFzaWx5IGRvIHRoaW5ncyBsaWtlIGNvbm5lY3QKKyAgICAgICAgdG8gbXVsdGlwbGUgZGVi
dWdnYWJsZXMgaW4gdGhlIHNhbWUgSW5zcGVjdG9yIGluc3RhbmNlLCBhbmQgc3dpdGNoIGJldHdl
ZW4gdmlld3MKKyAgICAgICAgb2YgZGlmZmVyZW50IGRlYnVnZ2FibGUgdGFyZ2V0cy4gRXZlbiBp
ZiB0aGlzIG5ldmVyIGNvbWVzIHRvIHBhc3MsIHRoZSBjb2RlIHdpbGwKKyAgICAgICAgYmUgYSBs
b3QgZWFzaWVyIHRvIHJlYXNvbiBhYm91dCBhbmQgbWFpbnRhaW4gaW4gdGhlIGZ1dHVyZS4KKwor
ICAgICAgICBGb3IgdGhlIGZpcnN0IHBhdGNoLCBpbnRyb2R1Y2Uge0FwcENvbnRyb2xsZXIsIFRl
c3RBcHBDb250cm9sbGVyfSA8OiBBcHBDb250cm9sbGVyQmFzZS4KKyAgICAgICAgU2hhcmVkIGNv
ZGUgZ29lcyBpbiB0aGUgYmFzZSBjbGFzcy4gSW4gdGhlIE1haW4uaHRtbCBhbmQgVGVzdC5odG1s
IGZpbGVzLCBmaXJzdAorICAgICAgICBjb25zdHJ1Y3QgdGhlIEFwcENvbnRyb2xsZXIgYW5kIHRo
ZW4gY2FsbCAuaW5pdGlhbGl6ZSgpIHRvIGF2b2lkIGN5Y2xpYyBkZXBlbmRlbmNpZXMKKyAgICAg
ICAgb24gdGhlIGdsb2JhbCBzaW5nbGV0b24gV0kuc2hhcmVkQXBwLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9NYWluLmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6
CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanM6CisgICAgICAgIChXSS5sb2Fk
ZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV0ku
bG9hZGVkKToKKyAgICAgICAgTW92ZSBzb21lIHNoYXJlZCBjb2RlIG91dCBvZiBoZXJlIGludG8g
QXBwQ29udHJvbGxlckJhc2UuY29uc3RydWN0b3IuCisgICAgICAgIEV2ZW50dWFsbHkgV0kubG9h
ZGVkIHNob3VsZCBub3QgZXhpc3QsIGFuZCBpdHMgY29kZSB3aWxsIG1vdmUgZWxzZXdoZXJlLgor
CisgICAgICAgIChXSS5jb250ZW50TG9hZGVkKToKKyAgICAgICAgQWRvcHQgZ2xvYmFsIHJlZmVy
ZW5jZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJvbGxl
ckJhc2UuanM6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL01haW5UYXJnZXQuanMuCisgICAgICAgIChXSS5BcHBDb250cm9sbGVyQmFzZSk6
CisgICAgICAgIChXSS5BcHBDb250cm9sbGVyQmFzZS5wcm90b3R5cGUuZ2V0IGhhc0V4dHJhRG9t
YWlucyk6CisgICAgICAgIChXSS5BcHBDb250cm9sbGVyQmFzZS5wcm90b3R5cGUuZ2V0IGRlYnVn
Z2FibGVUeXBlKToKKyAgICAgICAgKFdJLkFwcENvbnRyb2xsZXJCYXNlLnByb3RvdHlwZS5pbml0
aWFsaXplKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJv
bGxlci5qczogTmV3LgorICAgICAgICAoV0kuQXBwQ29udHJvbGxlcik6CisgICAgICAgIChXSS5B
cHBDb250cm9sbGVyLnByb3RvdHlwZS5nZXQgaGFzRXh0cmFEb21haW5zKToKKyAgICAgICAgKFdJ
LkFwcENvbnRyb2xsZXIucHJvdG90eXBlLmdldCBkZWJ1Z2dhYmxlVHlwZSk6CisgICAgICAgIChX
SS5BcHBDb250cm9sbGVyLnByb3RvdHlwZS5hY3RpdmF0ZUV4dHJhRG9tYWlucyk6CisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QvVGVzdEFwcENvbnRyb2xsZXIuanM6IE5ldy4KKyAgICAg
ICAgKFdJLlRlc3RBcHBDb250cm9sbGVyKToKKyAgICAgICAgKFdJLlRlc3RBcHBDb250cm9sbGVy
LnByb3RvdHlwZS5nZXQgaGFzRXh0cmFEb21haW5zKToKKyAgICAgICAgKFdJLlRlc3RBcHBDb250
cm9sbGVyLnByb3RvdHlwZS5nZXQgZGVidWdnYWJsZVR5cGUpOgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanM6CisgICAgICAgIChXSS5UaW1l
bGluZU1hbmFnZXIuZGVmYXVsdFRpbWVsaW5lVHlwZXMpOgorICAgICAgICAoV0kuVGltZWxpbmVN
YW5hZ2VyLmF2YWlsYWJsZVRpbWVsaW5lVHlwZXMpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5h
Z2VyLnByb3RvdHlwZS5zY3JpcHRQcm9maWxlclByb2dyYW1tYXRpY0NhcHR1cmVTdGFydGVkKToK
KyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuc2NyaXB0UHJvZmlsZXJQcm9n
cmFtbWF0aWNDYXB0dXJlU3RvcHBlZCk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJv
dG90eXBlLnNjcmlwdFByb2ZpbGVyVHJhY2tpbmdDb21wbGV0ZWQpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkaW5nLmpzOgorICAgICAgICAoV0kuVGltZWxp
bmVSZWNvcmRpbmcuc291cmNlQ29kZVRpbWVsaW5lc1N1cHBvcnRlZCk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLklu
c3BlY3Rvck9ic2VydmVyLnByb3RvdHlwZS5pbnNwZWN0KToKKyAgICAgICAgKFdJLkluc3BlY3Rv
ck9ic2VydmVyLnByb3RvdHlwZS5hY3RpdmF0ZUV4dHJhRG9tYWlucyk6CisgICAgICAgIChXSS5J
bnNwZWN0b3JPYnNlcnZlcik6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9NYWlu
VGFyZ2V0LmpzOgorICAgICAgICAoV0kuTWFpblRhcmdldCk6CisgICAgICAgIChXSS5NYWluVGFy
Z2V0LnByb3RvdHlwZS5nZXQgZGlzcGxheU5hbWUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXSS5SZXNvdXJjZVNpZGVi
YXJQYW5lbCk6CisgICAgICAgIChXSS5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuaW5p
dGlhbExheW91dCk6CisgICAgICAgIChXSS5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUu
X2FkZFNjcmlwdCk6CisgICAgICAgIChXSS5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUu
X2V4dHJhRG9tYWluc0FjdGl2YXRlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9U
b29sYmFyLmpzOgorICAgICAgICBVc2UgV0kuc2hhcmVkQXBwLntkZWJ1Z2dhYmxlVHlwZSwgaGFz
RXh0cmFEb21haW5zfS4KKwogMjAxNy0wOS0xNyAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTdHlsZXMgUmVkZXNpZ246IHN1
cHBvcnQgdG9nZ2xpbmcgcHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IGNjNGU5YmE0MTQ0NjJlZWNhNDZkNGJjN2Q5
OGNjN2M1YWI3MWViNTcuLjEzY2E3YTIyYjM4ZTkwOTJmZTM4YjUyM2JhMGFiMGU4MDY4OWU4N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFp
bi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4u
anMKQEAgLTMzLDExICszMyw2IEBAIFdJLkNvbnRlbnRWaWV3Q29va2llVHlwZSA9IHsKICAgICBU
aW1lbGluZXM6ICJ0aW1lbGluZXMiCiB9OwogCi1XSS5EZWJ1Z2dhYmxlVHlwZSA9IHsKLSAgICBX
ZWI6ICJ3ZWIiLAotICAgIEphdmFTY3JpcHQ6ICJqYXZhc2NyaXB0IgotfTsKLQogV0kuU2VsZWN0
ZWRTaWRlYmFyUGFuZWxDb29raWVLZXkgPSAic2VsZWN0ZWQtc2lkZWJhci1wYW5lbCI7CiBXSS5U
eXBlSWRlbnRpZmllckNvb2tpZUtleSA9ICJyZXByZXNlbnRlZC1vYmplY3QtdHlwZSI7CiAKQEAg
LTU1LDkgKzUwLDYgQEAgV0kuTGF5b3V0RGlyZWN0aW9uID0gewogCiBXSS5sb2FkZWQgPSBmdW5j
dGlvbigpCiB7Ci0gICAgdGhpcy5kZWJ1Z2dhYmxlVHlwZSA9IEluc3BlY3RvckZyb250ZW5kSG9z
dC5kZWJ1Z2dhYmxlVHlwZSgpID09PSAid2ViIiA/IFdJLkRlYnVnZ2FibGVUeXBlLldlYiA6IFdJ
LkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQ7Ci0gICAgdGhpcy5oYXNFeHRyYURvbWFpbnMgPSBm
YWxzZTsKLQogICAgIC8vIFJlZ2lzdGVyIG9ic2VydmVycyBmb3IgZXZlbnRzIGZyb20gdGhlIElu
c3BlY3RvckJhY2tlbmQuCiAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJJbnNwZWN0
b3JEaXNwYXRjaGVyKQogICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVySW5zcGVjdG9y
RGlzcGF0Y2hlcihuZXcgV0kuSW5zcGVjdG9yT2JzZXJ2ZXIpOwpAQCAtMjQ3LDcgKzIzOSw3IEBA
IFdJLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LmNsYXNzTGlzdC5hZGQoImxlZ2FjeS1tYWMiKTsKICAgICB9CiAKLSAgICBkb2N1bWVudC5ib2R5
LmNsYXNzTGlzdC5hZGQodGhpcy5kZWJ1Z2dhYmxlVHlwZSk7CisgICAgZG9jdW1lbnQuYm9keS5j
bGFzc0xpc3QuYWRkKFdJLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSk7CiAgICAgZG9jdW1lbnQu
Ym9keS5zZXRBdHRyaWJ1dGUoImRpciIsIHRoaXMucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSk7
CiAKICAgICBmdW5jdGlvbiBzZXRUYWJTaXplKCkgewpAQCAtMzc4LDcgKzM3MCw3IEBAIFdJLmNv
bnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fdG9nZ2xlUHJldmlvdXNEb2NrQ29u
ZmlndXJhdGlvbktleWJvYXJkU2hvcnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5L
ZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXSS5LZXlib2FyZFNo
b3J0Y3V0Lk1vZGlmaWVyLlNoaWZ0LCAiRCIsIHRoaXMuX3RvZ2dsZVByZXZpb3VzRG9ja0NvbmZp
Z3VyYXRpb24uYmluZCh0aGlzKSk7CiAKICAgICB2YXIgdG9vbFRpcDsKLSAgICBpZiAoV0kuZGVi
dWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpCisgICAgaWYgKFdJ
LnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlw
dCkKICAgICAgICAgdG9vbFRpcCA9IFdJLlVJU3RyaW5nKCJSZXN0YXJ0ICglcykiKS5mb3JtYXQo
dGhpcy5fcmVsb2FkUGFnZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwogICAgIGVsc2UK
ICAgICAgICAgdG9vbFRpcCA9IFdJLlVJU3RyaW5nKCJSZWxvYWQgdGhpcyBwYWdlICglcylcblJl
bG9hZCBpZ25vcmluZyBjYWNoZSAoJXMpIikuZm9ybWF0KHRoaXMuX3JlbG9hZFBhZ2VLZXlib2Fy
ZFNob3J0Y3V0LmRpc3BsYXlOYW1lLCB0aGlzLl9yZWxvYWRQYWdlSWdub3JpbmdDYWNoZUtleWJv
YXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwpAQCAtNzA0LDE0ICs2OTYsNiBAQCBXSS5yZWdpc3Rl
clRhYkNsYXNzID0gZnVuY3Rpb24odGFiQ2xhc3MpCiAKIFdJLmFjdGl2YXRlRXh0cmFEb21haW5z
ID0gZnVuY3Rpb24oZG9tYWlucykKIHsKLSAgICB0aGlzLmhhc0V4dHJhRG9tYWlucyA9IHRydWU7
Ci0KLSAgICBmb3IgKHZhciBkb21haW4gb2YgZG9tYWlucykgewotICAgICAgICB2YXIgYWdlbnQg
PSBJbnNwZWN0b3JCYWNrZW5kLmFjdGl2YXRlRG9tYWluKGRvbWFpbik7Ci0gICAgICAgIGlmIChh
Z2VudC5lbmFibGUpCi0gICAgICAgICAgICBhZ2VudC5lbmFibGUoKTsKLSAgICB9Ci0KICAgICB0
aGlzLm5vdGlmaWNhdGlvbnMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLk5vdGlmaWNhdGlv
bi5FeHRyYURvbWFpbnNBY3RpdmF0ZWQsIHsiZG9tYWlucyI6IGRvbWFpbnN9KTsKIAogICAgIFdJ
LkNTU0NvbXBsZXRpb25zLnJlcXVlc3RDU1NDb21wbGV0aW9ucygpOwpAQCAtMTg1OSw3ICsxODQz
LDcgQEAgV0kuX3VwZGF0ZVJlbG9hZFRvb2xiYXJCdXR0b24gPSBmdW5jdGlvbigpCiBXSS5fdXBk
YXRlRG93bmxvYWRUb29sYmFyQnV0dG9uID0gZnVuY3Rpb24oKQogewogICAgIC8vIENPTVBBVElC
SUxJVFkgKGlPUyA3KTogUGFnZS5hcmNoaXZlIGRpZCBub3QgZXhpc3QgeWV0LgotICAgIGlmICgh
d2luZG93LlBhZ2VBZ2VudCB8fCAhUGFnZUFnZW50LmFyY2hpdmUgfHwgdGhpcy5kZWJ1Z2dhYmxl
VHlwZSAhPT0gV0kuRGVidWdnYWJsZVR5cGUuV2ViKSB7CisgICAgaWYgKCF3aW5kb3cuUGFnZUFn
ZW50IHx8ICFQYWdlQWdlbnQuYXJjaGl2ZSB8fCB0aGlzLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlw
ZSAhPT0gV0kuRGVidWdnYWJsZVR5cGUuV2ViKSB7CiAgICAgICAgIHRoaXMuX2Rvd25sb2FkVG9v
bGJhckJ1dHRvbi5oaWRkZW4gPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjU4
OSw3ICsyNTczLDcgQEAgV0kuYXJjaGl2ZU1haW5GcmFtZSA9IGZ1bmN0aW9uKCkKIFdJLmNhbkFy
Y2hpdmVNYWluRnJhbWUgPSBmdW5jdGlvbigpCiB7CiAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9T
IDcpOiBQYWdlLmFyY2hpdmUgZGlkIG5vdCBleGlzdCB5ZXQuCi0gICAgaWYgKCFQYWdlQWdlbnQu
YXJjaGl2ZSB8fCB0aGlzLmRlYnVnZ2FibGVUeXBlICE9PSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIp
CisgICAgaWYgKCFQYWdlQWdlbnQuYXJjaGl2ZSB8fCB0aGlzLnNoYXJlZEFwcC5kZWJ1Z2dhYmxl
VHlwZSAhPT0gV0kuRGVidWdnYWJsZVR5cGUuV2ViKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoIVdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSB8fCAhV0kuZnJhbWVS
ZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBD
b250cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNWEwYzg5MTlmODA3MDA1NjM3NTY4ZTU1M2EyZDg3
M2U0NTEyNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyLmpzCkBAIC0wLDAgKzEsNTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitXSS5BcHBDb250cm9sbGVyID0gY2xhc3MgQXBwQ29udHJvbGxlciBleHRlbmRz
IFdJLkFwcENvbnRyb2xsZXJCYXNlCit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAg
ICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9oYXNFeHRyYURvbWFpbnMgPSBmYWxzZTsKKyAg
ICAgICAgdGhpcy5fZGVidWdnYWJsZVR5cGUgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3QuZGVidWdn
YWJsZVR5cGUoKSA9PT0gIndlYiIgPyBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIgOiBXSS5EZWJ1Z2dh
YmxlVHlwZS5KYXZhU2NyaXB0OworICAgIH0KKworICAgIC8vIFByb3BlcnRpZXMuCisKKyAgICBn
ZXQgaGFzRXh0cmFEb21haW5zKCkgeyByZXR1cm4gdGhpcy5faGFzRXh0cmFEb21haW5zOyB9Cisg
ICAgZ2V0IGRlYnVnZ2FibGVUeXBlKCkgeyByZXR1cm4gdGhpcy5fZGVidWdnYWJsZVR5cGU7IH0K
KworICAgIC8vIEFQSS4KKworICAgIGFjdGl2YXRlRXh0cmFEb21haW5zKGRvbWFpbnMpCisgICAg
eworICAgICAgICBpZiAodGhpcy5faGFzRXh0cmFEb21haW5zKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHRyYSBkb21haW5zIGhhdmUgYWxyZWFkeSBiZWVuIGFjdGl2YXRlZCwgY2Fu
bm90IGFjdGl2YXRlIGFnYWluLiIpOworCisgICAgICAgIHRoaXMuX2hhc0V4dHJhRG9tYWlucyA9
IHRydWU7CisKKyAgICAgICAgZm9yIChsZXQgZG9tYWluIG9mIGRvbWFpbnMpIHsKKyAgICAgICAg
ICAgIGxldCBhZ2VudCA9IEluc3BlY3RvckJhY2tlbmQuYWN0aXZhdGVEb21haW4oZG9tYWluKTsK
KyAgICAgICAgICAgIGlmIChhZ2VudC5lbmFibGUpCisgICAgICAgICAgICAgICAgYWdlbnQuZW5h
YmxlKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogYWxsIGNvZGUgd2l0aGluIFdJ
LmFjdGl2YXRlRXh0cmFEb21haW5zIHNob3VsZCBiZSBkaXN0cmlidXRlZCBlbHNld2hlcmUuCisg
ICAgICAgIFdJLmFjdGl2YXRlRXh0cmFEb21haW5zKCk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRy
b2xsZXJCYXNlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvQXBwQ29udHJvbGxlckJhc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQwM2U3YWY0OTllMjM3NDY0
MWVmNTk1ZDNmMDk0OWFhNjZkNWI1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXJCYXNlLmpzCkBA
IC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5EZWJ1Z2dhYmxlVHlwZSA9IHsKKyAgICBX
ZWI6ICJ3ZWIiLAorICAgIEphdmFTY3JpcHQ6ICJqYXZhc2NyaXB0IgorfTsKKworV0kuTm90SW1w
bGVtZW50ZWRFcnJvciA9IGNsYXNzIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBFcnJvcgor
eworICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U9IlRoaXMgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRl
ZC4iKQorICAgIHsKKyAgICAgICAgc3VwZXIobWVzc2FnZSk7CisgICAgfQorCisgICAgc3RhdGlj
IHN1YmNsYXNzTXVzdE92ZXJyaWRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV0kuTm90
SW1wbGVtZW50ZWRFcnJvcigiVGhpcyBtZXRob2QgbXVzdCBiZSBvdmVycmlkZGVuIGJ5IGEgc3Vi
Y2xhc3MuIik7CisgICAgfQorfTsKKworV0kuQXBwQ29udHJvbGxlckJhc2UgPSBjbGFzcyBBcHBD
b250cm9sbGVyQmFzZQoreworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHRoaXMu
X2luaXRpYWxpemVkID0gZmFsc2U7CisgICAgfQorCisgICAgZ2V0IGhhc0V4dHJhRG9tYWlucygp
IHsgdGhyb3cgV0kuTm90SW1wbGVtZW50ZWRFcnJvci5zdWJjbGFzc011c3RPdmVycmlkZSgpOyB9
CisgICAgZ2V0IGRlYnVnZ2FibGVUeXBlKCkgeyB0aHJvdyBXSS5Ob3RJbXBsZW1lbnRlZEVycm9y
LnN1YmNsYXNzTXVzdE92ZXJyaWRlKCk7IH0KKworICAgIC8vIFNpbmNlIHZhcmlvdXMgbWVtYmVy
cyBvZiB0aGUgYXBwIGNvbnRyb2xsZXIgZGVwZW5kIG9uIHRoZSBnbG9iYWwgc2luZ2xldG9uIHRv
IGV4aXN0LAorICAgIC8vIHNvbWUgaW5pdGlhbGl6YXRpb24gbmVlZHMgdG8gaGFwcGVuIGFmdGVy
IHRoZSBhcHAgY29udHJvbGxlciBoYXMgYmVlbiBjb25zdHJ1Y3RlZC4KKyAgICBpbml0aWFsaXpl
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9pbml0aWFsaXplZCkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiQXBwIGNvbnRyb2xsZXIgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4iKTsK
KworICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAgLy8gRklYTUU6
IGV2ZW50dWFsbHkgYWxsIGNvZGUgd2l0aGluIFdJLmxvYWRlZCBzaG91bGQgYmUgZGlzdHJpYnV0
ZWQgZWxzZXdoZXJlLgorICAgICAgICBXSS5sb2FkZWQoKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxp
bmVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCmluZGV4IDllMTkzMzE4MjY3NDhkMGU5NjdkMTYyMDhh
YWVmNWIyZTg2ZThkOTQuLjA5MzdhOTY1MTczYjhlMWU5MmU3NzUxZjQ1MjFhZDVjOTg2NTdjNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL1RpbWVsaW5lTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKQEAgLTY2LDcgKzY2LDcgQEAg
V0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAKICAgICBzdGF0aWMgZGVmYXVsdFRpbWVsaW5lVHlwZXMoKQogICAgIHsKLSAgICAgICAg
aWYgKFdJLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KSB7
CisgICAgICAgIGlmIChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2Fi
bGVUeXBlLkphdmFTY3JpcHQpIHsKICAgICAgICAgICAgIGxldCBkZWZhdWx0VHlwZXMgPSBbV0ku
VGltZWxpbmVSZWNvcmQuVHlwZS5TY3JpcHRdOwogICAgICAgICAgICAgaWYgKFdJLkhlYXBBbGxv
Y2F0aW9uc0luc3RydW1lbnQuc3VwcG9ydGVkKCkpCiAgICAgICAgICAgICAgICAgZGVmYXVsdFR5
cGVzLnB1c2goV0kuVGltZWxpbmVSZWNvcmQuVHlwZS5IZWFwQWxsb2NhdGlvbnMpOwpAQCAtODgs
NyArODgsNyBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICBzdGF0aWMgYXZhaWxhYmxlVGltZWxpbmVUeXBlcygpCiAgICAg
ewogICAgICAgICBsZXQgdHlwZXMgPSBXSS5UaW1lbGluZU1hbmFnZXIuZGVmYXVsdFRpbWVsaW5l
VHlwZXMoKTsKLSAgICAgICAgaWYgKFdJLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxl
VHlwZS5KYXZhU2NyaXB0KQorICAgICAgICBpZiAoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBl
ID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KQogICAgICAgICAgICAgcmV0dXJuIHR5
cGVzOwogCiAgICAgICAgIGlmIChXSS5NZW1vcnlJbnN0cnVtZW50LnN1cHBvcnRlZCgpKQpAQCAt
ODc4LDcgKzg3OCw3IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgIHNjcmlwdFByb2ZpbGVyUHJvZ3JhbW1hdGljQ2FwdHVy
ZVN0YXJ0ZWQoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xNTg3NTM+IEdlbmVyYWxpemUgdGhlIGNvbmNlcHQgb2YgSW5zdHJ1bWVudHMgb24gdGhlIGJh
Y2tlbmQgdG8gd29yayBlcXVhbGx5IGZvciBKU0NvbnRleHQgYW5kIFdlYiBpbnNwZWN0aW9uCi0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KFdJLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxl
VHlwZS5KYXZhU2NyaXB0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoV0kuc2hhcmVkQXBwLmRl
YnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KTsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoIXRoaXMuX2lzQ2FwdHVyaW5nKTsKIAogICAgICAgICB0aGlzLnByb2dy
YW1tYXRpY0NhcHR1cmVTdGFydGVkKCk7CkBAIC04ODcsNyArODg3LDcgQEAgV0kuVGltZWxpbmVN
YW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgc2Ny
aXB0UHJvZmlsZXJQcm9ncmFtbWF0aWNDYXB0dXJlU3RvcHBlZCgpCiAgICAgewogICAgICAgICAv
LyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1ODc1Mz4gR2VuZXJhbGl6ZSB0aGUgY29u
Y2VwdCBvZiBJbnN0cnVtZW50cyBvbiB0aGUgYmFja2VuZCB0byB3b3JrIGVxdWFsbHkgZm9yIEpT
Q29udGV4dCBhbmQgV2ViIGluc3BlY3Rpb24KLSAgICAgICAgY29uc29sZS5hc3NlcnQoV0kuZGVi
dWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpOworICAgICAgICBj
b25zb2xlLmFzc2VydChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2Fi
bGVUeXBlLkphdmFTY3JpcHQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9pc0NhcHR1
cmluZyk7CiAKICAgICAgICAgdGhpcy5wcm9ncmFtbWF0aWNDYXB0dXJlU3RvcHBlZCgpOwpAQCAt
OTc3LDcgKzk3Nyw3IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgU2NyaXB0UHJv
ZmlsZXIgY3JlYXRlZCByZWNvcmRzIHdpdGggV2ViIFRpbWVsaW5lIHJlY29yZHMuCiAgICAgICAg
IC8vIEZpbHRlciBvdXQgdGhlIGFscmVhZHkgYWRkZWQgU2NyaXB0UHJvZmlsZXIgZXZlbnRzIHdo
aWNoIHNob3VsZCBub3QgaGF2ZSBiZWVuIHdyYXBwZWQuCi0gICAgICAgIGlmIChXSS5kZWJ1Z2dh
YmxlVHlwZSAhPT0gV0kuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlwdCkgeworICAgICAgICBpZiAo
V0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlICE9PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2Ny
aXB0KSB7CiAgICAgICAgICAgICB0aGlzLl9zY3JpcHRQcm9maWxlclJlY29yZHMgPSB0aGlzLl9z
Y3JpcHRQcm9maWxlclJlY29yZHMuZmlsdGVyKCh4KSA9PiB4Ll9fc2NyaXB0UHJvZmlsZXJUeXBl
ID09PSBTY3JpcHRQcm9maWxlckFnZW50LkV2ZW50VHlwZS5PdGhlcik7CiAgICAgICAgICAgICB0
aGlzLl9tZXJnZVNjcmlwdFByb2ZpbGVSZWNvcmRzKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBmNTk2ZTI1MDI5Zjk3
Yzk5Y2ZiYWQxNmIzNWMyZmYyODU5Mzc1M2M2Li4wYTUyMDM4YmMwNDBiMzZlNDI1YjA2MTBiYzNl
ZWMwYTYxOTNiODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCkBAIC04MTcsNiArODE3LDggQEAKICAgICA8c2NyaXB0IHNyYz0iV29ya2Vycy9G
b3JtYXR0ZXIvRm9ybWF0dGVyQ29udGVudEJ1aWxkZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNj
cmlwdCBzcmM9IkJhc2UvTWFpbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNvbnRy
b2xsZXJzL0FwcENvbnRyb2xsZXJCYXNlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvQXBwQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNy
Yz0iRGVidWcvQm9vdHN0cmFwLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRGVidWcv
Q2FwdHVyaW5nUHJvdG9jb2xUcmFjZXIuanMiPjwvc2NyaXB0PgpAQCAtODI0LDcgKzgyNiw4IEBA
CiAgICAgPHNjcmlwdCBzcmM9IkRlYnVnL0RlYnVnQ29udGVudFZpZXcuanMiPjwvc2NyaXB0Pgog
CiAgICAgPHNjcmlwdD4KLSAgICAgICAgV0kubG9hZGVkKCk7CisgICAgICAgIFdJLnNoYXJlZEFw
cCA9IG5ldyBXSS5BcHBDb250cm9sbGVyOworICAgICAgICBXSS5zaGFyZWRBcHAuaW5pdGlhbGl6
ZSgpOwogICAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmRpbmcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVSZWNv
cmRpbmcuanMKaW5kZXggYWYzNDEyMWExMjFmNzAyMDFlMDkyZmQyNDliZTliYWU3YjMwOTAyYi4u
NGUwZmJjNTg2YmUwODQzMjNjNmFlMzA3YTc3ODI1YTUzNjgyNjEwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkaW5n
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1l
bGluZVJlY29yZGluZy5qcwpAQCAtNTYsNyArNTYsNyBAQCBXSS5UaW1lbGluZVJlY29yZGluZyA9
IGNsYXNzIFRpbWVsaW5lUmVjb3JkaW5nIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBzdGF0aWMg
c291cmNlQ29kZVRpbWVsaW5lc1N1cHBvcnRlZCgpCiAgICAgewotICAgICAgICByZXR1cm4gV0ku
ZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLldlYjsKKyAgICAgICAgcmV0dXJu
IFdJLnNoYXJlZEFwcC5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUuV2ViOwog
ICAgIH0KIAogICAgIC8vIFB1YmxpYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcwpp
bmRleCA2YWNjODhiYjQ4OTVjZTM4MzNhNzcyOWE2MTExZDQ1NDdmYzYxNjgxLi5kMDkzODUxYmI5
MzlhMGUyYTE2N2Y3MjZiZjBjOGQ3Y2M5NGMwOTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JP
YnNlcnZlci5qcwpAQCAtNTUsNyArNTUsNyBAQCBXSS5JbnNwZWN0b3JPYnNlcnZlciA9IGNsYXNz
IEluc3BlY3Rvck9ic2VydmVyCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICByZW1vdGVPYmplY3QucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuOyAg
ICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGhpbnRzLmRhdGFiYXNlSWQpCkBAIC02OCw2ICs2OCw2IEBAIFdJLkluc3BlY3Rvck9ic2VydmVy
ID0gY2xhc3MgSW5zcGVjdG9yT2JzZXJ2ZXIKIAogICAgIGFjdGl2YXRlRXh0cmFEb21haW5zKGRv
bWFpbnMpCiAgICAgewotICAgICAgICBXSS5hY3RpdmF0ZUV4dHJhRG9tYWlucyhkb21haW5zKTsK
KyAgICAgICAgV0kuc2hhcmVkQXBwLmFjdGl2YXRlRXh0cmFEb21haW5zKGRvbWFpbnMpOwogICAg
IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9NYWluVGFyZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvTWFpblRhcmdldC5qcwppbmRleCA5NWE4NjkxZGI1NmNkNDEwZjg2N2RjNTVj
MjA0N2I0YjU3MzQxMWVhLi5iMjY0MWMxNjE3M2RmNGNkOWZlZjMyNzU3MTQ2MzBjZWRjMjkzMTk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9NYWluVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL01haW5UYXJnZXQuanMKQEAgLTI5LDcgKzI5LDcgQEAgV0kuTWFpblRhcmdldCA9
IGNsYXNzIE1haW5UYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKICAgICB7CiAgICAgICAgIHN1cGVy
KCJtYWluIiwgIiIsIFdJLlRhcmdldC5UeXBlLk1haW4sIEluc3BlY3RvckJhY2tlbmQubWFpbkNv
bm5lY3Rpb24pOwogCi0gICAgICAgIGxldCBkaXNwbGF5TmFtZSA9IFdJLmRlYnVnZ2FibGVUeXBl
ID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIgPyBXSS5VSVN0cmluZygiTWFpbiBGcmFtZSIpIDog
dGhpcy5kaXNwbGF5TmFtZTsKKyAgICAgICAgbGV0IGRpc3BsYXlOYW1lID0gV0kuc2hhcmVkQXBw
LmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWIgPyBXSS5VSVN0cmluZygi
TWFpbiBGcmFtZSIpIDogdGhpcy5kaXNwbGF5TmFtZTsKICAgICAgICAgdGhpcy5fZXhlY3V0aW9u
Q29udGV4dCA9IG5ldyBXSS5FeGVjdXRpb25Db250ZXh0KHRoaXMsIFdJLlJ1bnRpbWVNYW5hZ2Vy
LlRvcExldmVsQ29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCB0cnVlLCBu
dWxsKTsKICAgICB9CiAKQEAgLTM3LDEzICszNywxMyBAQCBXSS5NYWluVGFyZ2V0ID0gY2xhc3Mg
TWFpblRhcmdldCBleHRlbmRzIFdJLlRhcmdldAogCiAgICAgZ2V0IGRpc3BsYXlOYW1lKCkKICAg
ICB7Ci0gICAgICAgIHN3aXRjaCAoV0kuZGVidWdnYWJsZVR5cGUpIHsKKyAgICAgICAgc3dpdGNo
IChXSS5zaGFyZWRBcHAuZGVidWdnYWJsZVR5cGUpIHsKICAgICAgICAgY2FzZSBXSS5EZWJ1Z2dh
YmxlVHlwZS5XZWI6CiAgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIlBhZ2UiKTsKICAg
ICAgICAgY2FzZSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0OgogICAgICAgICAgICAgcmV0
dXJuIFdJLlVJU3RyaW5nKCJKYXZhU2NyaXB0IENvbnRleHQiKTsKICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVuZXhwZWN0ZWQgZGVidWdnYWJsZSB0eXBlOiAi
LCBXSS5kZWJ1Z2dhYmxlVHlwZSk7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmV4cGVj
dGVkIGRlYnVnZ2FibGUgdHlwZTogIiwgV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlKTsKICAg
ICAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiTWFpbiIpOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1s
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDMx
ODMyMmNiMTQyYmYzMDJlOWZkMTQ1ZmY3MTgyN2MzMWIwMjAyNGQuLmQwY2ZiMDczY2M5YzZlZWU4
YzNmNjI2YWY4ZmQ1YWFmOTFiNjJhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTQ2LDYgKzQ2LDggQEAKICAgICA8c2NyaXB0IHNyYz0i
VGVzdC9UZXN0U3VpdGUuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IlRlc3QvVGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0FwcENvbnRyb2xs
ZXJCYXNlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVGVzdC9UZXN0QXBwQ29udHJv
bGxlci5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9ET01VdGlsaXRpZXMu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL0V2ZW50TGlzdGVuZXIuanMiPjwv
c2NyaXB0PgpAQCAtMjE2LDcgKzIxOCw4IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvZGVN
aXJyb3JGb3JtYXR0ZXJzLmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KLSAgICAgICAgV0kubG9hZGVkKCk7CisgICAgICAgIFdJLnNoYXJlZEFwcCA9
IG5ldyBXSS5UZXN0QXBwQ29udHJvbGxlcjsKKyAgICAgICAgV0kuc2hhcmVkQXBwLmluaXRpYWxp
emUoKTsKIAogICAgICAgICAvLyBEZWJ1ZyBsb2dnaW5nIGlzIHN5bmNocm9ub3VzIG9uIHRoZSB0
ZXN0IHBhZ2UuCiAgICAgICAgIEluc3BlY3RvclRlc3QuZm9yY2VEZWJ1Z0xvZ2dpbmcgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3Qv
VGVzdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5q
cwppbmRleCBmMWI1MDg5ZTAzZWUxMWEzNDMxNzZkMGYyMGE0ZjAxMzVkYTkxNTczLi5iNDM3ZDI0
ZDVjZWJlNzcyODY2MTFkNWE4MTE5ZDUwOGU0YzlhMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzCkBAIC0yMywxNiArMjMsOCBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5EZWJ1Z2dhYmxlVHlwZSA9IHsKLSAgICBXZWI6ICJ3
ZWIiLAotICAgIEphdmFTY3JpcHQ6ICJqYXZhc2NyaXB0IgotfTsKLQogV0kubG9hZGVkID0gZnVu
Y3Rpb24oKQogewotICAgIHRoaXMuZGVidWdnYWJsZVR5cGUgPSBXSS5EZWJ1Z2dhYmxlVHlwZS5X
ZWI7Ci0gICAgdGhpcy5oYXNFeHRyYURvbWFpbnMgPSBmYWxzZTsKLQogICAgIC8vIFJlZ2lzdGVy
IG9ic2VydmVycyBmb3IgZXZlbnRzIGZyb20gdGhlIEluc3BlY3RvckJhY2tlbmQuCiAgICAgLy8g
VGhlIGluaXRpYWxpemF0aW9uIG9yZGVyIHNob3VsZCBtYXRjaCB0aGUgc2FtZSBpbiBNYWluLmpz
LgogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJJbnNwZWN0b3JEaXNwYXRjaGVyKG5ldyBX
SS5JbnNwZWN0b3JPYnNlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9UZXN0L1Rlc3RBcHBDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0QXBwQ29udHJvbGxlci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YTllMjA3ZTc2YmZiNGUzNmI3OGFlMDkyNzcxN2JlMmRkYjBiYzNiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0QXBwQ29u
dHJvbGxlci5qcwpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuVGVzdEFwcENvbnRy
b2xsZXIgPSBjbGFzcyBUZXN0QXBwQ29udHJvbGxlciBleHRlbmRzIFdJLkFwcENvbnRyb2xsZXJC
YXNlCit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICB9
CisKKyAgICBnZXQgaGFzRXh0cmFEb21haW5zKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBnZXQg
ZGVidWdnYWJsZVR5cGUoKSB7IHJldHVybiBXSS5EZWJ1Z2dhYmxlVHlwZS5XZWI7IH0KK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCmluZGV4IDZkZWY0ZWRhNDIzNmI2NWI2NDUy
ZTk0M2M4YjNlMGVkODczMmI5M2MuLjEwOGRkYjU1ZmNlYmFiOWNiOTg0NTg5MWZkOTkwMGZhNTJk
YmQ1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCkBAIC03Niw3ICs3Niw3
IEBAIFdJLlJlc291cmNlU2lkZWJhclBhbmVsID0gY2xhc3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwg
ZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAgICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRs
aW5lLmFkZEV2ZW50TGlzdGVuZXIoV0kuVHJlZU91dGxpbmUuRXZlbnQuU2VsZWN0aW9uRGlkQ2hh
bmdlLCB0aGlzLl90cmVlU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgdGhpcy5j
b250ZW50VHJlZU91dGxpbmUuaW5jbHVkZVNvdXJjZU1hcFJlc291cmNlQ2hpbGRyZW4gPSB0cnVl
OwogCi0gICAgICAgIGlmIChXSS5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUu
SmF2YVNjcmlwdCkgeworICAgICAgICBpZiAoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09
PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KSB7CiAgICAgICAgICAgICB0aGlzLmNvbnRl
bnRUcmVlT3V0bGluZS5kaXNjbG9zdXJlQnV0dG9ucyA9IGZhbHNlOwogICAgICAgICAgICAgV0ku
U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdJLlNvdXJjZUNvZGUuRXZlbnQuU291cmNlTWFw
QWRkZWQsICgpID0+IHsgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuZGlzY2xvc3VyZUJ1dHRvbnMg
PSB0cnVlOyB9LCB0aGlzKTsKICAgICAgICAgfQpAQCAtMjAzLDcgKzIwMyw3IEBAIFdJLlJlc291
cmNlU2lkZWJhclBhbmVsID0gY2xhc3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5O
YXZpZ2F0aW9uU2lkZWJhCiAgICAgICAgIGZvciAobGV0IHNjcmlwdCBvZiBXSS5kZWJ1Z2dlck1h
bmFnZXIua25vd25Ob25SZXNvdXJjZVNjcmlwdHMpIHsKICAgICAgICAgICAgIHRoaXMuX2FkZFNj
cmlwdChzY3JpcHQpOwogCi0gICAgICAgICAgICBpZiAoc2NyaXB0LnNvdXJjZU1hcHMubGVuZ3Ro
ICYmIFdJLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KQor
ICAgICAgICAgICAgaWYgKHNjcmlwdC5zb3VyY2VNYXBzLmxlbmd0aCAmJiBXSS5zaGFyZWRBcHAu
ZGVidWdnYWJsZVR5cGUgPT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpCiAgICAgICAg
ICAgICAgICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUuZGlzY2xvc3VyZUJ1dHRvbnMgPSB0cnVl
OwogICAgICAgICB9CiAgICAgfQpAQCAtMzM1LDcgKzMzNSw3IEBAIFdJLlJlc291cmNlU2lkZWJh
clBhbmVsID0gY2xhc3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9u
U2lkZWJhCiAKICAgICAgICAgICAgIHBhcmVudEZvbGRlclRyZWVFbGVtZW50ID0gdGhpcy5fZXh0
ZW5zaW9uU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50OwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaWYgKFdJLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2Ny
aXB0ICYmICFXSS5oYXNFeHRyYURvbWFpbnMpCisgICAgICAgICAgICBpZiAoV0kuc2hhcmVkQXBw
LmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0ICYmICFXSS5z
aGFyZWRBcHAuaGFzRXh0cmFEb21haW5zKQogICAgICAgICAgICAgICAgIGluc2VydEludG9Ub3BM
ZXZlbCA9IHRydWU7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoIXRo
aXMuX2V4dHJhU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50KSB7CkBAIC00OTYsNyArNDk2LDcgQEAg
V0kuUmVzb3VyY2VTaWRlYmFyUGFuZWwgPSBjbGFzcyBSZXNvdXJjZVNpZGViYXJQYW5lbCBleHRl
bmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKIAogICAgIF9leHRyYURvbWFpbnNBY3RpdmF0ZWQoKQog
ICAgIHsKLSAgICAgICAgaWYgKFdJLmRlYnVnZ2FibGVUeXBlID09PSBXSS5EZWJ1Z2dhYmxlVHlw
ZS5KYXZhU2NyaXB0KQorICAgICAgICBpZiAoV0kuc2hhcmVkQXBwLmRlYnVnZ2FibGVUeXBlID09
PSBXSS5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KQogICAgICAgICAgICAgdGhpcy5jb250ZW50
VHJlZU91dGxpbmUuZGlzY2xvc3VyZUJ1dHRvbnMgPSB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKaW5k
ZXggYzFlMWEyOGNhY2VhMTQ3OGIxMGYxMTBmODQ0MmQ2MzFhZjNlYzM1MS4uN2MxOTI1NWI1MGIy
NjRiNWNhYWE3Y2M0NWUxYWE2YTFiMGEyZWEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzCkBAIC0xMDEsNyArMTAxLDcg
QEAgV0kuVG9vbGJhciA9IGNsYXNzIFRvb2xiYXIgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uQmFyCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRm9yY2UgY29sbGFwc2VkIHN0eWxlIGZv
ciBKYXZhU2NyaXB0IGRlYnVnZ2FibGVzLgotICAgICAgICBpZiAoV0kuZGVidWdnYWJsZVR5cGUg
PT09IFdJLkRlYnVnZ2FibGVUeXBlLkphdmFTY3JpcHQpIHsKKyAgICAgICAgaWYgKFdJLnNoYXJl
ZEFwcC5kZWJ1Z2dhYmxlVHlwZSA9PT0gV0kuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlwdCkgewog
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuTmF2aWdhdGlvbkJhci5D
b2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>