<?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>142323</bug_id>
          
          <creation_ts>2015-03-04 21:02:26 -0800</creation_ts>
          <short_desc>Web Inspector: Add ObjectTreeBaseTreeElement to share functionality</short_desc>
          <delta_ts>2015-03-05 11:40:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <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>1074382</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-04 21:02:26 -0800</bug_when>
    <thetext>* SUMMARY
Add ObjectTreeBaseTreeElement to share functionality between different ObjectTree*TreeElement types.

  - Used by all:
    - property path support, UIStrings for failure
    - contextmenu support, Log Value / Copy Path to Property
    - &quot;resolved value&quot;

  - Used by Property and ArrayIndex:
    - handle invoking getters and thus getterValue || property.value</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074383</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-04 21:02:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/20050723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074384</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-04 21:06:42 -0800</bug_when>
    <thetext>More shared code for:

  - general tree element construction
  - creation of readonly icons
  - function property string handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074393</commentid>
    <comment_count>3</comment_count>
      <attachid>247928</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-04 21:25:06 -0800</bug_when>
    <thetext>Created attachment 247928
[PATCH] Proposed Fix

Hard patch to follow...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074394</commentid>
    <comment_count>4</comment_count>
      <attachid>247928</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-04 21:33:05 -0800</bug_when>
    <thetext>Comment on attachment 247928
[PATCH] Proposed Fix

Very nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074602</commentid>
    <comment_count>5</comment_count>
      <attachid>247928</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-05 11:40:32 -0800</bug_when>
    <thetext>Comment on attachment 247928
[PATCH] Proposed Fix

Clearing flags on attachment: 247928

Committed r181089: &lt;http://trac.webkit.org/changeset/181089&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074603</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-05 11:40:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247928</attachid>
            <date>2015-03-04 21:25:06 -0800</date>
            <delta_ts>2015-03-05 11:40:32 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>base.patch</filename>
            <type>text/plain</type>
            <size>49290</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDNkM2FlMzguLmFmNTVmMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg2IEBACiAyMDE1LTAzLTA0ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIE9i
amVjdFRyZWVCYXNlVHJlZUVsZW1lbnQgdG8gc2hhcmUgZnVuY3Rpb25hbGl0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMzIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnkgbWFraW5nIHRoaXMgY2hh
bmdlOgorCisgICAgICAgICAgLSBTaGFyZSBsb3RzIG9mIGR1cGxpY2F0ZWQgY29kZS4KKyAgICAg
ICAgICAtIEFycmF5IC8gU2V0IC8gTWFwIHRyZWUgZWxlbWVudHMgZ2V0IGNvbnRleHQgbWVudSBz
dXBwb3J0CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuanM6IEFkZGVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBw
cm9wZXJ0eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVu
dC5wcm90b3R5cGUuZ2V0IHByb3BlcnR5UGF0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUub25jb250ZXh0bWVudSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUucmVzb2x2
ZWRWYWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVu
dC5wcm90b3R5cGUucmVzb2x2ZWRWYWx1ZVByb3BlcnR5UGF0aCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUudGhpc1Byb3BlcnR5UGF0
aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90
b3R5cGUuaGFkRXJyb3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJl
ZUVsZW1lbnQucHJvdG90eXBlLnByb3BlcnR5UGF0aFR5cGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLnByb3BlcnR5UGF0aFN0cmlu
Zyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90
b3R5cGUuY3JlYXRlSW50ZXJhY3RpdmVHZXR0ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZS5jcmVhdGVSZWFkT25seUlj
b25FbGVtZW50KToKKyAgICAgICAgTmV3IGZpbGUsIGNvcHlpbmcgbW9zdCBvZiB0aGUgY29kZSBm
cm9tIFByb3BlcnR5VHJlZUVsZW1lbnQgc28gaXQgY2FuIGJlIHNoYXJlZC4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQXJyYXlJbmRleFRyZWVFbGVtZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQXJyYXlJbmRleFRyZWVFbGVtZW50LnBy
b3RvdHlwZS5pbnZva2VkR2V0dGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVl
QXJyYXlJbmRleFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdGl0bGVGcmFnbWVudCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudC5wcm90b3R5cGUu
Z2V0IHByb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVl
QXJyYXlJbmRleFRyZWVFbGVtZW50LnByb3RvdHlwZS5fcmVzb2x2ZWRWYWx1ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudC5w
cm90b3R5cGUuX3Byb3BlcnR5UGF0aFR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQucHJvdG90eXBlLl9yZXNvbHZlZFZh
bHVlUHJvcGVydHlQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RU
cmVlQXJyYXlJbmRleFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdGhpc1Byb3BlcnR5UGF0aCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxl
bWVudC5wcm90b3R5cGUuX3Byb3BlcnR5UGF0aFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudC5wcm90b3R5cGUuX3Vw
ZGF0ZVRpdGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQXJy
YXlJbmRleFRyZWVFbGVtZW50LnByb3RvdHlwZS5fY3JlYXRlSW50ZXJhY3RpdmVHZXR0ZXJFbGVt
ZW50Lik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUFycmF5SW5k
ZXhUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NyZWF0ZVJlYWRPbmx5SWNvbkVsZW1lbnQpOiBEZWxl
dGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVByb3BlcnR5VHJl
ZUVsZW1lbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJl
ZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVF
bGVtZW50LnByb3RvdHlwZS5pbnZva2VkR2V0dGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5P
YmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZUhhc0NoaWxkcmVu
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5w
cm90b3R5cGUuX3VwZGF0ZVRvb2x0aXBzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RU
cmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuX3RpdGxlRnJhZ21lbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5f
Y3JlYXRlVGl0bGVQcm90b3R5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQ
cm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5fY3JlYXRlVGl0bGVQcm9wZXJ0eVN0eWxlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90
b3R5cGUuX2NyZWF0ZVRpdGxlQVBJU3R5bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5fYWx3YXlzRGlzcGxheUFzUHJvcGVy
dHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50
LnByb3RvdHlwZS5fdXBkYXRlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRlQ2hpbGRyZW5JbnRlcm5h
bCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQu
cHJvdG90eXBlLl91cGRhdGVFbnRyaWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RU
cmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZVByb3BlcnRpZXMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlw
ZS5nZXQgcHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFRy
ZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmNvbnRleHRtZW51KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90
b3R5cGUuX3Jlc29sdmVkVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5fcHJvcGVydHlQYXRoVHlwZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVs
ZW1lbnQucHJvdG90eXBlLl9yZXNvbHZlZFZhbHVlUHJvcGVydHlQYXRoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5
cGUuX3RoaXNQcm9wZXJ0eVBhdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRlVGl0bGVBbmRJY29u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVl
RWxlbWVudC5wcm90b3R5cGUuX2NyZWF0ZUludGVyYWN0aXZlR2V0dGVyRWxlbWVudC4pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50
LnByb3RvdHlwZS5fY3JlYXRlUmVhZE9ubHlJY29uRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlKTog
RGVsZXRlZC4KKyAgICAgICAgU3ViY2xhc3MgT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudCBhbmQg
ZWxpbWluYXRlIHRoZSBjb2RlIG5vdworICAgICAgICBhdXRvbWF0aWNhbGx5IGhhbmRsZWQgYnkg
dGhlIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRy
ZWVNYXBFbnRyeVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFRy
ZWVNYXBFbnRyeVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVl
TWFwRW50cnlUcmVlRWxlbWVudC5wcm90b3R5cGUucmVzb2x2ZWRWYWx1ZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQucHJvdG90eXBlLl90aXRs
ZUZyYWdtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50cnlUcmVl
RWxlbWVudC5wcm90b3R5cGUuX3Byb3BlcnR5UGF0aFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVNldEluZGV4VHJlZUVsZW1lbnQucHJvdG90
eXBlLnJlc29sdmVkVmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVTZXRJ
bmRleFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdGl0bGVGcmFnbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuT2JqZWN0VHJlZVNldEluZGV4VHJlZUVsZW1lbnQucHJvdG90eXBlLl9yZXNvbHZl
ZFZhbHVlUHJvcGVydHlQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgT3ZlcnJpZGUgcmVzb2x2ZWQg
dmFsdWUgc2luY2UgdGhlc2UgYXJlIG5vdCBhYm91dCBQcm9wZXJ0eURlc2NyaXB0b3JzLgorICAg
ICAgICBUaGlzIHdpbGwgbWFrZSBjb250ZXh0IG1lbnVzIHdvcmsgYXV0b21hdGljYWxseS4KKwor
MjAxNS0wMy0wNCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEltcHJvdmUgZGlzcGxheSBvZiBwcmV2aWV3cyB3aXRoIG92ZXJm
bG93CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIz
MjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFp
bi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmlu
ZGV4IDJlYzQwOWEuLmMzMjE1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9NYWluLmh0bWwKQEAgLTMxNiw2ICszMTYsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9UaW1lbGluZURhdGFHcmlkTm9kZS5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9Gb2xkZXJpemVkVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Tb3VyY2VDb2RlVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9TdG9yYWdlVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
T2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQuanMK
aW5kZXggMGE1OGJhYS4uYWNjYjFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVl
QXJyYXlJbmRleFRyZWVFbGVtZW50LmpzCkBAIC0yMyw5NSArMjMsMzUgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBGSVhNRTogVGhpcyBzaG91bGQgc2hh
cmUgbW9yZSBjb2RlIHdpdGggT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQuIChnZXR0ZXJz
LCByZXNvbHZlZCB2YWx1ZXMsIGNvbnRleHQgbWVudXMpCi0KIFdlYkluc3BlY3Rvci5PYmplY3RU
cmVlQXJyYXlJbmRleFRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocHJvcGVydHksIHByb3BlcnR5UGF0
aCkKIHsKLSAgICBjb25zb2xlLmFzc2VydChwcm9wZXJ0eSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5Qcm9wZXJ0eURlc2NyaXB0b3IpOwotICAgIGNvbnNvbGUuYXNzZXJ0KHByb3BlcnR5UGF0aCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgpOwogICAgIGNvbnNvbGUuYXNzZXJ0
KHByb3BlcnR5LmlzSW5kZXhQcm9wZXJ0eSgpLCAiQXJyYXlJbmRleFRyZWVFbGVtZW50IGV4cGVj
dHMgbnVtZXJpYyBwcm9wZXJ0eSBuYW1lcyIpOwogCi0gICAgdGhpcy5fcHJvcGVydHkgPSBwcm9w
ZXJ0eTsKLSAgICB0aGlzLl9wcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGg7CisgICAgV2ViSW5z
cGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBwcm9wZXJ0eSwgcHJv
cGVydHlQYXRoLCBwcm9wZXJ0eSk7CiAKLSAgICB2YXIgY2xhc3NOYW1lcyA9IFsib2JqZWN0LXRy
ZWUtcHJvcGVydHkiLCAib2JqZWN0LXRyZWUtYXJyYXktaW5kZXgiXTsKLSAgICBpZiAoIXRoaXMu
X3Byb3BlcnR5Lmhhc1ZhbHVlKCkpCi0gICAgICAgIGNsYXNzTmFtZXMucHVzaCgiYWNjZXNzb3Ii
KTsKKyAgICB0aGlzLm1haW5UaXRsZSA9IHRoaXMuX3RpdGxlRnJhZ21lbnQoKTsKKyAgICB0aGlz
LmFkZENsYXNzTmFtZSgib2JqZWN0LXRyZWUtcHJvcGVydHkiKTsKKyAgICB0aGlzLmFkZENsYXNz
TmFtZSgib2JqZWN0LXRyZWUtYXJyYXktaW5kZXgiKTsKIAotICAgIFdlYkluc3BlY3Rvci5HZW5l
cmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBjbGFzc05hbWVzLCB0aGlzLl90aXRsZUZyYWdtZW50
KCksIG51bGwsIHRoaXMuX3Byb3BlcnR5LCBmYWxzZSk7Ci0KLSAgICB0aGlzLnNtYWxsID0gdHJ1
ZTsKLSAgICB0aGlzLnRvZ2dsZU9uQ2xpY2sgPSBmYWxzZTsKLSAgICB0aGlzLnNlbGVjdGFibGUg
PSBmYWxzZTsKLSAgICB0aGlzLnRvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IHRydWU7Ci0gICAg
dGhpcy5oYXNDaGlsZHJlbiA9IGZhbHNlOworICAgIGlmICghdGhpcy5wcm9wZXJ0eS5oYXNWYWx1
ZSgpKQorICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgiYWNjZXNzb3IiKTsKIH07CiAKIFdlYklu
c3BlY3Rvci5PYmplY3RUcmVlQXJyYXlJbmRleFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1l
bnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3Rv
dHlwZSwKKyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVt
ZW50LnByb3RvdHlwZSwKIAotICAgIC8vIFB1YmxpYworICAgIC8vIFByb3RlY3RlZAogCi0gICAg
Z2V0IHByb3BlcnR5KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eTsKLSAg
ICB9LAotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3Jlc29sdmVkVmFsdWU6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9nZXR0ZXJWYWx1ZSkKLSAgICAgICAgICAgIHJldHVy
biB0aGlzLl9nZXR0ZXJWYWx1ZTsKLSAgICAgICAgaWYgKHRoaXMuX3Byb3BlcnR5Lmhhc1ZhbHVl
KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHkudmFsdWU7Ci0gICAgICAgIHJl
dHVybiBudWxsOwotICAgIH0sCi0KLSAgICBfcHJvcGVydHlQYXRoVHlwZTogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2dldHRlclZhbHVlIHx8IHRoaXMuX3Byb3BlcnR5Lmhh
c1ZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5U
eXBlLlZhbHVlOwotICAgICAgICBpZiAodGhpcy5fcHJvcGVydHkuaGFzR2V0dGVyKCkpCi0gICAg
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5UeXBlLkdldHRlcjsKLSAg
ICAgICAgaWYgKHRoaXMuX3Byb3BlcnR5Lmhhc1NldHRlcigpKQotICAgICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5TZXR0ZXI7Ci0gICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlR5cGUuVmFsdWU7Ci0gICAgfSwKLQotICAgIF9yZXNv
bHZlZFZhbHVlUHJvcGVydHlQYXRoOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhp
cy5fZ2V0dGVyVmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHlQYXRoLmFw
cGVuZFByb3BlcnR5RGVzY3JpcHRvcih0aGlzLl9nZXR0ZXJWYWx1ZSwgdGhpcy5fcHJvcGVydHks
IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5WYWx1ZSk7Ci0gICAgICAgIGlmICh0aGlz
Ll9wcm9wZXJ0eS5oYXNWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5
UGF0aC5hcHBlbmRQcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5fcHJvcGVydHkudmFsdWUsIHRoaXMu
X3Byb3BlcnR5LCBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlR5cGUuVmFsdWUpOwotICAgICAg
ICByZXR1cm4gbnVsbDsKLSAgICB9LAotCi0gICAgX3RoaXNQcm9wZXJ0eVBhdGg6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eVBhdGguYXBwZW5kUHJvcGVy
dHlEZXNjcmlwdG9yKG51bGwsIHRoaXMuX3Byb3BlcnR5LCB0aGlzLl9wcm9wZXJ0eVBhdGhUeXBl
KCkpOwotICAgIH0sCi0KLSAgICBfcHJvcGVydHlQYXRoU3RyaW5nOiBmdW5jdGlvbihwcm9wZXJ0
eVBhdGgpCi0gICAgewotICAgICAgICBpZiAocHJvcGVydHlQYXRoLmlzRnVsbFBhdGhJbXBvc3Np
YmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJVbmFibGUg
dG8gZGV0ZXJtaW5lIHBhdGggdG8gcHJvcGVydHkgZnJvbSByb290Iik7Ci0KLSAgICAgICAgcmV0
dXJuIHByb3BlcnR5UGF0aC5kaXNwbGF5UGF0aCh0aGlzLl9wcm9wZXJ0eVBhdGhUeXBlKCkpOwot
ICAgIH0sCi0KLSAgICBfdXBkYXRlVGl0bGU6IGZ1bmN0aW9uKCkKKyAgICBpbnZva2VkR2V0dGVy
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLm1haW5UaXRsZSA9IHRoaXMuX3RpdGxl
RnJhZ21lbnQoKTsKIAotICAgICAgICBpZiAodGhpcy5fZ2V0dGVyVmFsdWUpCi0gICAgICAgICAg
ICB0aGlzLnJlbW92ZUNsYXNzTmFtZSgiYWNjZXNzb3IiKTsKLQotICAgICAgICB0aGlzLl91cGRh
dGVIYXNDaGlsZHJlbigpOworICAgICAgICB0aGlzLnJlbW92ZUNsYXNzTmFtZSgiYWNjZXNzb3Ii
KTsKICAgICB9LAogCisgICAgLy8gUHJpdmF0ZQorCiAgICAgX3RpdGxlRnJhZ21lbnQ6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7CkBAIC0xMTksNTYgKzU5LDI4IEBAIFdlYkluc3BlY3Rvci5PYmplY3RU
cmVlQXJyYXlJbmRleFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gQXJyYXkg
aW5kZXggbmFtZS4KICAgICAgICAgdmFyIG5hbWVFbGVtZW50ID0gY29udGFpbmVyLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7CiAgICAgICAgIG5hbWVFbGVtZW50
LmNsYXNzTmFtZSA9ICJpbmRleC1uYW1lIjsKLSAgICAgICAgbmFtZUVsZW1lbnQudGV4dENvbnRl
bnQgPSB0aGlzLl9wcm9wZXJ0eS5uYW1lOwotICAgICAgICBuYW1lRWxlbWVudC50aXRsZSA9IHRo
aXMuX3Byb3BlcnR5UGF0aFN0cmluZyh0aGlzLl90aGlzUHJvcGVydHlQYXRoKCkpOworICAgICAg
ICBuYW1lRWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMucHJvcGVydHkubmFtZTsKKyAgICAgICAg
bmFtZUVsZW1lbnQudGl0bGUgPSB0aGlzLnByb3BlcnR5UGF0aFN0cmluZyh0aGlzLnRoaXNQcm9w
ZXJ0eVBhdGgoKSk7CiAKICAgICAgICAgLy8gVmFsdWUuCiAgICAgICAgIHZhciB2YWx1ZUVsZW1l
bnQgPSBjb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIp
KTsKICAgICAgICAgdmFsdWVFbGVtZW50LmNsYXNzTmFtZSA9ICJpbmRleC12YWx1ZSI7CiAKLSAg
ICAgICAgdmFyIHJlc29sdmVkVmFsdWUgPSB0aGlzLl9yZXNvbHZlZFZhbHVlKCk7CisgICAgICAg
IHZhciByZXNvbHZlZFZhbHVlID0gdGhpcy5yZXNvbHZlZFZhbHVlKCk7CiAgICAgICAgIGlmIChy
ZXNvbHZlZFZhbHVlKQotICAgICAgICAgICAgdmFsdWVFbGVtZW50LmFwcGVuZENoaWxkKFdlYklu
c3BlY3Rvci5Gb3JtYXR0ZWRWYWx1ZS5jcmVhdGVPYmplY3RUcmVlT3JGb3JtYXR0ZWRWYWx1ZUZv
clJlbW90ZU9iamVjdChyZXNvbHZlZFZhbHVlLCB0aGlzLl9yZXNvbHZlZFZhbHVlUHJvcGVydHlQ
YXRoKCkpKTsKKyAgICAgICAgICAgIHZhbHVlRWxlbWVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0
b3IuRm9ybWF0dGVkVmFsdWUuY3JlYXRlT2JqZWN0VHJlZU9yRm9ybWF0dGVkVmFsdWVGb3JSZW1v
dGVPYmplY3QocmVzb2x2ZWRWYWx1ZSwgdGhpcy5yZXNvbHZlZFZhbHVlUHJvcGVydHlQYXRoKCkp
KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fcHJvcGVydHkuaGFzR2V0
dGVyKCkpCi0gICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0
ZUludGVyYWN0aXZlR2V0dGVyRWxlbWVudCgpKTsKLSAgICAgICAgICAgIGlmICghdGhpcy5fcHJv
cGVydHkuaGFzU2V0dGVyKCkpCi0gICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxk
KHRoaXMuX2NyZWF0ZVJlYWRPbmx5SWNvbkVsZW1lbnQoKSk7CisgICAgICAgICAgICBpZiAodGhp
cy5wcm9wZXJ0eS5oYXNHZXR0ZXIoKSkKKyAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5k
Q2hpbGQodGhpcy5jcmVhdGVJbnRlcmFjdGl2ZUdldHRlckVsZW1lbnQoKSk7CisgICAgICAgICAg
ICBpZiAoIXRoaXMucHJvcGVydHkuaGFzU2V0dGVyKCkpCisgICAgICAgICAgICAgICAgY29udGFp
bmVyLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlUmVhZE9ubHlJY29uRWxlbWVudCgpKTsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXaGF0IGlmIGp1c3QgYSBzZXR0ZXI/CiAgICAgICAgIH0KIAogICAg
ICAgICB2YWx1ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmFsdWUiKTsKLSAgICAgICAgaWYgKHRo
aXMuX3Byb3BlcnR5Lndhc1Rocm93biB8fCB0aGlzLl9nZXR0ZXJIYWRFcnJvcikKKyAgICAgICAg
aWYgKHRoaXMuaGFkRXJyb3IoKSkKICAgICAgICAgICAgIHZhbHVlRWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJlcnJvciIpOwogCiAgICAgICAgIHJldHVybiBjb250YWluZXI7Ci0gICAgfSwKLQotICAg
IF9jcmVhdGVJbnRlcmFjdGl2ZUdldHRlckVsZW1lbnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHZhciBnZXR0ZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7Ci0g
ICAgICAgIGdldHRlckVsZW1lbnQuY2xhc3NOYW1lID0gImdldHRlciI7Ci0gICAgICAgIGdldHRl
ckVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkludm9rZSBnZXR0ZXIiKTsK
LQotICAgICAgICBnZXR0ZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAg
ICAgICAgdmFyIGxhc3ROb25Qcm90b3R5cGVPYmplY3QgPSB0aGlzLl9wcm9wZXJ0eVBhdGgubGFz
dE5vblByb3RvdHlwZU9iamVjdDsKLSAgICAgICAgICAgIHZhciBnZXR0ZXJPYmplY3QgPSB0aGlz
Ll9wcm9wZXJ0eS5nZXQ7Ci0gICAgICAgICAgICBsYXN0Tm9uUHJvdG90eXBlT2JqZWN0Lmludm9r
ZUdldHRlcihnZXR0ZXJPYmplY3QsIGZ1bmN0aW9uKGVycm9yLCByZXN1bHQsIHdhc1Rocm93bikg
ewotICAgICAgICAgICAgICAgIHRoaXMuX2dldHRlckhhZEVycm9yID0gISEoZXJyb3IgfHwgd2Fz
VGhyb3duKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9nZXR0ZXJWYWx1ZSA9IHJlc3VsdDsKLSAg
ICAgICAgICAgICAgICB0aGlzLl91cGRhdGVUaXRsZSgpOwotICAgICAgICAgICAgfS5iaW5kKHRo
aXMpKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLQotICAgICAgICByZXR1cm4gZ2V0dGVyRWxl
bWVudDsKLSAgICB9LAotCi0gICAgX2NyZWF0ZVJlYWRPbmx5SWNvbkVsZW1lbnQ6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHZhciByZWFkT25seUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpbWciKTsKLSAgICAgICAgcmVhZE9ubHlFbGVtZW50LmNsYXNzTmFtZSA9ICJyZWFk
LW9ubHkiOwotICAgICAgICByZWFkT25seUVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJlYWQgb25seSIpOwotICAgICAgICByZXR1cm4gcmVhZE9ubHlFbGVtZW50OwotICAg
IH0sCisgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNTMwMGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RU
cmVlQmFzZVRyZWVFbGVtZW50LmpzCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2Vi
SW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRl
ZE9iamVjdCwgcHJvcGVydHlQYXRoLCBwcm9wZXJ0eSkKK3sKKyAgICBjb25zb2xlLmFzc2VydChy
ZXByZXNlbnRlZE9iamVjdCk7CisgICAgY29uc29sZS5hc3NlcnQocHJvcGVydHlQYXRoIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aCk7CisgICAgY29uc29sZS5hc3NlcnQoIXBy
b3BlcnR5IHx8IHByb3BlcnR5IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3Jp
cHRvcik7CisKKyAgICB0aGlzLl9wcm9wZXJ0eSA9IHByb3BlcnR5OworICAgIHRoaXMuX3Byb3Bl
cnR5UGF0aCA9IHByb3BlcnR5UGF0aDsKKworICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVs
ZW1lbnQuY2FsbCh0aGlzLCBudWxsLCBudWxsLCBudWxsLCByZXByZXNlbnRlZE9iamVjdCwgZmFs
c2UpOworCisgICAgdGhpcy5zbWFsbCA9IHRydWU7CisgICAgdGhpcy50b2dnbGVPbkNsaWNrID0g
dHJ1ZTsKKyAgICB0aGlzLnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICB0aGlzLnRvb2x0aXBIYW5k
bGVkU2VwYXJhdGVseSA9IHRydWU7Cit9OworCitXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5P
YmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LAorICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkdl
bmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUsCisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBw
cm9wZXJ0eSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7CisgICAgfSwK
KworICAgIGdldCBwcm9wZXJ0eVBhdGgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3By
b3BlcnR5UGF0aDsKKyAgICB9LAorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBvbmNvbnRleHRt
ZW51OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbnRleHRNZW51SGFu
ZGxlcihldmVudCk7CisgICAgfSwKKworICAgIHJlc29sdmVkVmFsdWU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb3BlcnR5KTsKKyAgICAgICAgaWYg
KHRoaXMuX2dldHRlclZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldHRlclZhbHVl
OworICAgICAgICBpZiAodGhpcy5fcHJvcGVydHkuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9wcm9wZXJ0eS52YWx1ZTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfSwK
KworICAgIHJlc29sdmVkVmFsdWVQcm9wZXJ0eVBhdGg6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb3BlcnR5KTsKKyAgICAgICAgaWYgKHRoaXMuX2dl
dHRlclZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5UGF0aC5hcHBlbmRQ
cm9wZXJ0eURlc2NyaXB0b3IodGhpcy5fZ2V0dGVyVmFsdWUsIHRoaXMuX3Byb3BlcnR5LCBXZWJJ
bnNwZWN0b3IuUHJvcGVydHlQYXRoLlR5cGUuVmFsdWUpOworICAgICAgICBpZiAodGhpcy5fcHJv
cGVydHkuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eVBhdGgu
YXBwZW5kUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuX3Byb3BlcnR5LnZhbHVlLCB0aGlzLl9wcm9w
ZXJ0eSwgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5UeXBlLlZhbHVlKTsKKyAgICAgICAgcmV0
dXJuIG51bGw7CisgICAgfSwKKworICAgIHRoaXNQcm9wZXJ0eVBhdGg6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb3BlcnR5KTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3Byb3BlcnR5UGF0aC5hcHBlbmRQcm9wZXJ0eURlc2NyaXB0b3IobnVsbCwgdGhp
cy5fcHJvcGVydHksIHRoaXMucHJvcGVydHlQYXRoVHlwZSgpKTsKKyAgICB9LAorCisgICAgaGFk
RXJyb3I6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3By
b3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5Lndhc1Rocm93biB8fCB0aGlz
Ll9nZXR0ZXJIYWRFcnJvcjsKKyAgICB9LAorCisgICAgcHJvcGVydHlQYXRoVHlwZTogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcHJvcGVydHkpOworICAg
ICAgICBpZiAodGhpcy5fZ2V0dGVyVmFsdWUgfHwgdGhpcy5fcHJvcGVydHkuaGFzVmFsdWUoKSkK
KyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlR5cGUuVmFsdWU7
CisgICAgICAgIGlmICh0aGlzLl9wcm9wZXJ0eS5oYXNHZXR0ZXIoKSkKKyAgICAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoLlR5cGUuR2V0dGVyOworICAgICAgICBpZiAo
dGhpcy5fcHJvcGVydHkuaGFzU2V0dGVyKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlByb3BlcnR5UGF0aC5UeXBlLlNldHRlcjsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5Qcm9wZXJ0eVBhdGguVHlwZS5WYWx1ZTsKKyAgICB9LAorCisgICAgcHJvcGVydHlQYXRoU3Ry
aW5nOiBmdW5jdGlvbihwcm9wZXJ0eVBhdGgpCisgICAgeworICAgICAgICBpZiAocHJvcGVydHlQ
YXRoLmlzRnVsbFBhdGhJbXBvc3NpYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJVbmFibGUgdG8gZGV0ZXJtaW5lIHBhdGggdG8gcHJvcGVydHkgZnJvbSBy
b290Iik7CisKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5UGF0aC5kaXNwbGF5UGF0aCh0aGlzLnBy
b3BlcnR5UGF0aFR5cGUoKSk7CisgICAgfSwKKworICAgIGNyZWF0ZUludGVyYWN0aXZlR2V0dGVy
RWxlbWVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGdldHRlckVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgZ2V0dGVyRWxlbWVudC5jbGFz
c05hbWUgPSAiZ2V0dGVyIjsKKyAgICAgICAgZ2V0dGVyRWxlbWVudC50aXRsZSA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiSW52b2tlIGdldHRlciIpOworCisgICAgICAgIGdldHRlckVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAg
ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgICAgICB2YXIgbGFzdE5vblByb3RvdHlw
ZU9iamVjdCA9IHRoaXMuX3Byb3BlcnR5UGF0aC5sYXN0Tm9uUHJvdG90eXBlT2JqZWN0OworICAg
ICAgICAgICAgdmFyIGdldHRlck9iamVjdCA9IHRoaXMuX3Byb3BlcnR5LmdldDsKKyAgICAgICAg
ICAgIGxhc3ROb25Qcm90b3R5cGVPYmplY3QuaW52b2tlR2V0dGVyKGdldHRlck9iamVjdCwgZnVu
Y3Rpb24oZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKSB7CisgICAgICAgICAgICAgICAgdGhpcy5f
Z2V0dGVySGFkRXJyb3IgPSAhIShlcnJvciB8fCB3YXNUaHJvd24pOworICAgICAgICAgICAgICAg
IHRoaXMuX2dldHRlclZhbHVlID0gcmVzdWx0OworICAgICAgICAgICAgICAgIGlmICh0aGlzLmlu
dm9rZWRHZXR0ZXIgJiYgdHlwZW9mIHRoaXMuaW52b2tlZEdldHRlciA9PT0gImZ1bmN0aW9uIikK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VkR2V0dGVyKCk7CisgICAgICAgICAgICB9
LmJpbmQodGhpcykpOworICAgICAgICB9LmJpbmQodGhpcykpOworCisgICAgICAgIHJldHVybiBn
ZXR0ZXJFbGVtZW50OworICAgIH0sCisKKyAgICBjcmVhdGVSZWFkT25seUljb25FbGVtZW50OiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcmVhZE9ubHlFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgIHJlYWRPbmx5RWxlbWVudC5jbGFzc05hbWUg
PSAicmVhZC1vbmx5IjsKKyAgICAgICAgcmVhZE9ubHlFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSZWFkIG9ubHkiKTsKKyAgICAgICAgcmV0dXJuIHJlYWRPbmx5RWxlbWVu
dDsKKyAgICB9LAorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2xvZ1ZhbHVlOiBmdW5jdGlvbih2
YWx1ZSkKKyAgICB7CisgICAgICAgIHZhciByZXNvbHZlZFZhbHVlID0gdmFsdWUgfHwgdGhpcy5y
ZXNvbHZlZFZhbHVlKCk7CisgICAgICAgIGlmICghcmVzb2x2ZWRWYWx1ZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB2YXIgcHJvcGVydHlQYXRoID0gdGhpcy5yZXNvbHZlZFZhbHVl
UHJvcGVydHlQYXRoKCk7CisgICAgICAgIHZhciBpc0ltcG9zc2libGUgPSBwcm9wZXJ0eVBhdGgu
aXNGdWxsUGF0aEltcG9zc2libGUoKTsKKyAgICAgICAgdmFyIHRleHQgPSBpc0ltcG9zc2libGUg
PyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGVjdGVkIFZhbHVlIikgOiBwcm9wZXJ0eVBhdGgu
ZGlzcGxheVBhdGgodGhpcy5wcm9wZXJ0eVBhdGhUeXBlKCkpOworCisgICAgICAgIGlmICghaXNJ
bXBvc3NpYmxlKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnF1aWNrQ29uc29sZS5wcm9tcHQu
cHVzaEhpc3RvcnlJdGVtKHRleHQpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5jb25zb2xlTG9n
Vmlld0NvbnRyb2xsZXIuYXBwZW5kSW1tZWRpYXRlRXhlY3V0aW9uV2l0aFJlc3VsdCh0ZXh0LCBy
ZXNvbHZlZFZhbHVlKTsKKyAgICB9LAorCisgICAgX2NvbnRleHRNZW51SGFuZGxlcjogZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgcmVzb2x2ZWRWYWx1ZSA9IHRoaXMucmVzb2x2
ZWRWYWx1ZSgpOworICAgICAgICBpZiAoIXJlc29sdmVkVmFsdWUpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0
TWVudShldmVudCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJMb2cgVmFsdWUiKSwgdGhpcy5fbG9nVmFsdWUuYmluZCh0aGlzKSk7CisKKyAg
ICAgICAgdmFyIHByb3BlcnR5UGF0aCA9IHRoaXMucmVzb2x2ZWRWYWx1ZVByb3BlcnR5UGF0aCgp
OworICAgICAgICBpZiAocHJvcGVydHlQYXRoICYmICFwcm9wZXJ0eVBhdGguaXNGdWxsUGF0aElt
cG9zc2libGUoKSkgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNvcHkgUGF0aCB0byBQcm9wZXJ0eSIpLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQocHJvcGVydHlQYXRo
LmRpc3BsYXlQYXRoKFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5WYWx1ZSkpOworICAg
ICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRleHRNZW51
LmFwcGVuZFNlcGFyYXRvcigpOworCisgICAgICAgIHRoaXMuX2FwcGVuZE1lbnVzSXRlbXNGb3JP
YmplY3QoY29udGV4dE1lbnUsIHJlc29sdmVkVmFsdWUpOworCisgICAgICAgIGlmICghY29udGV4
dE1lbnUuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOworICAgIH0s
CisKKyAgICBfYXBwZW5kTWVudXNJdGVtc0Zvck9iamVjdDogZnVuY3Rpb24oY29udGV4dE1lbnUs
IHJlc29sdmVkVmFsdWUpCisgICAgeworICAgICAgICBpZiAocmVzb2x2ZWRWYWx1ZS50eXBlID09
PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJldHRlciBo
YW5kbGUgYm91bmQgZnVuY3Rpb25zLgorICAgICAgICAgICAgaWYgKCFpc0Z1bmN0aW9uU3RyaW5n
TmF0aXZlQ29kZShyZXNvbHZlZFZhbHVlLmRlc2NyaXB0aW9uKSkgeworICAgICAgICAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJKdW1wIHRvIERl
ZmluaXRpb24iKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIERlYnVnZ2VyQWdl
bnQuZ2V0RnVuY3Rpb25EZXRhaWxzKHJlc29sdmVkVmFsdWUub2JqZWN0SWQsIGZ1bmN0aW9uKGVy
cm9yLCByZXNwb25zZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGxvY2F0aW9uID0gcmVzcG9uc2UubG9jYXRpb247CisgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgc291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuc2NyaXB0
Rm9ySWRlbnRpZmllcihsb2NhdGlvbi5zY3JpcHRJZCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIXNvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNl
Q29kZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24obG9jYXRpb24ubGluZU51bWJlciwgbG9jYXRp
b24uY29sdW1uTnVtYmVyIHx8IDApOworICAgICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnJlc291cmNlU2lkZWJhclBhbmVsLnNob3dTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29k
ZUxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAocmVzb2x2ZWRWYWx1ZS5zdWJ0eXBlID09PSAibm9kZSIpIHsKKyAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXZlYWwgaW4gRE9N
IFRyZWUiKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZS5wdXNo
Tm9kZVRvRnJvbnRlbmQoZnVuY3Rpb24obm9kZUlkKSB7CisgICAgICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5pbnNwZWN0RWxlbWVudChub2RlSWQpOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlTWFwRW50cnlUcmVl
RWxlbWVudC5qcwppbmRleCA2NDBiZGViLi5lOGUzY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxl
bWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9P
YmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudC5qcwpAQCAtMjYsMjQgKzI2LDIwIEBACiBXZWJJ
bnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihvYmplY3Qs
IHByb3BlcnR5UGF0aCkKIHsKICAgICBjb25zb2xlLmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKLSAgICBjb25zb2xlLmFzc2VydChwcm9wZXJ0eVBh
dGggaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKTsKIAogICAgIHRoaXMuX29i
amVjdCA9IG9iamVjdDsKLSAgICB0aGlzLl9wcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGg7CiAK
ICAgICAvLyBUcmVhdCB0aGUgc2FtZSBhcyBhbiBhcnJheS1pbmRleCBqdXN0IHdpdGggZGlmZmVy
ZW50IHN0cmluZ3MgYW5kIHdpZHRocy4KLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVt
ZW50LmNhbGwodGhpcywgWyJvYmplY3QtdHJlZS1hcnJheS1pbmRleCIsICJvYmplY3QtdHJlZS1t
YXAtZW50cnkiXSwgdGhpcy5fdGl0bGVGcmFnbWVudCgpLCBudWxsLCB0aGlzLl9vYmplY3QsIGZh
bHNlKTsKKyAgICBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5jYWxsKHRo
aXMsIHRoaXMuX29iamVjdCwgcHJvcGVydHlQYXRoKTsKIAotICAgIHRoaXMuc21hbGwgPSB0cnVl
OwotICAgIHRoaXMudG9nZ2xlT25DbGljayA9IGZhbHNlOwotICAgIHRoaXMuc2VsZWN0YWJsZSA9
IGZhbHNlOwotICAgIHRoaXMudG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsKLSAgICB0
aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7CisgICAgdGhpcy5tYWluVGl0bGUgPSB0aGlzLl90aXRs
ZUZyYWdtZW50KCk7CisgICAgdGhpcy5hZGRDbGFzc05hbWUoIm9iamVjdC10cmVlLWFycmF5LWlu
ZGV4Iik7CisgICAgdGhpcy5hZGRDbGFzc05hbWUoIm9iamVjdC10cmVlLW1hcC1lbnRyeSIpOwog
fTsKIAogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRy
ZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5wcm90b3R5cGUsCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VU
cmVlRWxlbWVudC5wcm90b3R5cGUsCiAKICAgICAvLyBQdWJsaWMKIApAQCAtNTIsMTYgKzQ4LDE1
IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3Q7CiAgICAgfSwKIAorICAgIC8vIFByb3Rl
Y3RlZAorCisgICAgcmVzb2x2ZWRWYWx1ZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX29iamVjdDsKKyAgICB9LAorCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Byb3Bl
cnR5UGF0aFN0cmluZzogZnVuY3Rpb24ocHJvcGVydHlQYXRoKQotICAgIHsKLSAgICAgICAgaWYg
KHByb3BlcnR5UGF0aC5pc0Z1bGxQYXRoSW1wb3NzaWJsZSgpKQotICAgICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVW5hYmxlIHRvIGRldGVybWluZSBwYXRoIHRvIHByb3Bl
cnR5IGZyb20gcm9vdCIpOwotCi0gICAgICAgIHJldHVybiBwcm9wZXJ0eVBhdGguZGlzcGxheVBh
dGgoV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5UeXBlLlZhbHVlKTsKLSAgICB9LAotCiAgICAg
X3RpdGxlRnJhZ21lbnQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciBjb250YWluZXIg
PSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CkBAIC03Miw3ICs2Nyw3IEBAIFdl
Ykluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHZhciBuYW1lRWxlbWVudCA9IGNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIikpOwogICAgICAgICBuYW1lRWxlbWVudC5jbGFzc05hbWUgPSAi
aW5kZXgtbmFtZSI7CiAgICAgICAgIG5hbWVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5kaXNw
bGF5UHJvcGVydHlOYW1lKCk7Ci0gICAgICAgIG5hbWVFbGVtZW50LnRpdGxlID0gdGhpcy5fcHJv
cGVydHlQYXRoU3RyaW5nKHByb3BlcnR5UGF0aCk7CisgICAgICAgIG5hbWVFbGVtZW50LnRpdGxl
ID0gdGhpcy5wcm9wZXJ0eVBhdGhTdHJpbmcocHJvcGVydHlQYXRoKTsKIAogICAgICAgICAvLyBW
YWx1ZS4KICAgICAgICAgdmFyIHZhbHVlRWxlbWVudCA9IGNvbnRhaW5lci5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIikpOwpAQCAtODgsNyArODMsNyBAQCBXZWJJbnNw
ZWN0b3IuT2JqZWN0VHJlZU1hcEtleVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9w
ZXJ0eVBhdGgpCiB7CiAgICAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVt
ZW50LmNhbGwodGhpcywgb2JqZWN0LCBwcm9wZXJ0eVBhdGgpOwogICAgIHRoaXMuYWRkQ2xhc3NO
YW1lKCJrZXkiKTsKLX0KK307CiAKIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwS2V5VHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT2JqZWN0
VHJlZU1hcEtleVRyZWVFbGVtZW50LApAQCAtMTEzLDcgKzEwOCw3IEBAIFdlYkluc3BlY3Rvci5P
YmplY3RUcmVlTWFwVmFsdWVUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHlQ
YXRoLCBrZXkpCiAgICAgdGhpcy5fa2V5ID0ga2V5OwogICAgIFdlYkluc3BlY3Rvci5PYmplY3RU
cmVlTWFwRW50cnlUcmVlRWxlbWVudC5jYWxsKHRoaXMsIG9iamVjdCwgcHJvcGVydHlQYXRoKTsK
ICAgICB0aGlzLmFkZENsYXNzTmFtZSgidmFsdWUiKTsKLX0KK307CiAKIFdlYkluc3BlY3Rvci5P
YmplY3RUcmVlTWFwVmFsdWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwVmFsdWVUcmVlRWxlbWVudCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVQ
cm9wZXJ0eVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQuanMKaW5kZXggOThmZmZlZS4u
NWY0YjJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1l
bnQuanMKQEAgLTI1LDQ5ICsyNSwzMyBAQAogCiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3Bl
cnR5VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihwcm9wZXJ0eSwgcHJvcGVydHlQYXRoLCBtb2RlLCBw
cm90b3R5cGVOYW1lKQogewotICAgIGNvbnNvbGUuYXNzZXJ0KHByb3BlcnR5IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvcik7Ci0gICAgY29uc29sZS5hc3NlcnQocHJv
cGVydHlQYXRoIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aCk7Ci0KLSAgICB0
aGlzLl9wcm9wZXJ0eSA9IHByb3BlcnR5OwogICAgIHRoaXMuX21vZGUgPSBtb2RlIHx8IFdlYklu
c3BlY3Rvci5PYmplY3RUcmVlVmlldy5Nb2RlLlByb3BlcnRpZXM7Ci0gICAgdGhpcy5fcHJvcGVy
dHlQYXRoID0gcHJvcGVydHlQYXRoOwogICAgIHRoaXMuX3Byb3RvdHlwZU5hbWUgPSBwcm90b3R5
cGVOYW1lOwogCi0gICAgdmFyIGNsYXNzTmFtZXMgPSBbIm9iamVjdC10cmVlLXByb3BlcnR5Il07
CisgICAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBw
cm9wZXJ0eSwgcHJvcGVydHlQYXRoLCBwcm9wZXJ0eSk7CiAKLSAgICBpZiAodGhpcy5fcHJvcGVy
dHkuaGFzVmFsdWUoKSkgewotICAgICAgICBjbGFzc05hbWVzLnB1c2godGhpcy5fcHJvcGVydHku
dmFsdWUudHlwZSk7Ci0gICAgICAgIGlmICh0aGlzLl9wcm9wZXJ0eS52YWx1ZS5zdWJ0eXBlKQot
ICAgICAgICAgICAgY2xhc3NOYW1lcy5wdXNoKHRoaXMuX3Byb3BlcnR5LnZhbHVlLnN1YnR5cGUp
OworICAgIHRoaXMubWFpblRpdGxlID0gdGhpcy5fdGl0bGVGcmFnbWVudCgpOworICAgIHRoaXMu
YWRkQ2xhc3NOYW1lKCJvYmplY3QtdHJlZS1wcm9wZXJ0eSIpOworCisgICAgaWYgKHRoaXMucHJv
cGVydHkuaGFzVmFsdWUoKSkgeworICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSh0aGlzLnByb3Bl
cnR5LnZhbHVlLnR5cGUpOworICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS52YWx1ZS5zdWJ0eXBl
KQorICAgICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUodGhpcy5wcm9wZXJ0eS52YWx1ZS5zdWJ0
eXBlKTsKICAgICB9IGVsc2UKLSAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCJhY2Nlc3NvciIpOwor
ICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgiYWNjZXNzb3IiKTsKIAotICAgIGlmICh0aGlzLl9w
cm9wZXJ0eS53YXNUaHJvd24pCi0gICAgICAgIGNsYXNzTmFtZXMucHVzaCgiaGFkLWVycm9yIik7
CisgICAgaWYgKHRoaXMucHJvcGVydHkud2FzVGhyb3duKQorICAgICAgICB0aGlzLmFkZENsYXNz
TmFtZSgiaGFkLWVycm9yIik7CisgICAgaWYgKHRoaXMucHJvcGVydHkubmFtZSA9PT0gIl9fcHJv
dG9fXyIpCisgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJwcm90b3R5cGUtcHJvcGVydHkiKTsK
IAotICAgIGlmICh0aGlzLl9wcm9wZXJ0eS5uYW1lID09PSAiX19wcm90b19fIikKLSAgICAgICAg
Y2xhc3NOYW1lcy5wdXNoKCJwcm90b3R5cGUtcHJvcGVydHkiKTsKLQotICAgIFdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBjbGFzc05hbWVzLCB0aGlzLl90aXRsZUZy
YWdtZW50KCksIG51bGwsIHRoaXMuX3Byb3BlcnR5LCBmYWxzZSk7CiAgICAgdGhpcy5fdXBkYXRl
VG9vbHRpcHMoKTsKICAgICB0aGlzLl91cGRhdGVIYXNDaGlsZHJlbigpOwotCi0gICAgdGhpcy5z
bWFsbCA9IHRydWU7Ci0gICAgdGhpcy50b2dnbGVPbkNsaWNrID0gdHJ1ZTsKLSAgICB0aGlzLnNl
bGVjdGFibGUgPSBmYWxzZTsKLSAgICB0aGlzLnRvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IHRy
dWU7CiB9OwogCiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3Bl
cnR5VHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVF
bGVtZW50LnByb3RvdHlwZSwKLQotICAgIC8vIFB1YmxpYwotCi0gICAgZ2V0IHByb3BlcnR5KCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eTsKLSAgICB9LAorICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLAog
CiAgICAgLy8gUHJvdGVjdGVkCiAKQEAgLTg4LDkyICs3Miw1MiBAQCBXZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhp
cy5fcHJldmlld1ZpZXcuc2hvd1ByZXZpZXcoKTsKICAgICB9LAogCi0gICAgb25jb250ZXh0bWVu
dTogZnVuY3Rpb24oZXZlbnQpCisgICAgaW52b2tlZEdldHRlcjogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgdGhpcy5fY29udGV4dE1lbnVIYW5kbGVyKGV2ZW50KTsKKyAgICAgICAgdGhpcy5t
YWluVGl0bGUgPSB0aGlzLl90aXRsZUZyYWdtZW50KCk7CisKKyAgICAgICAgdmFyIHJlc29sdmVk
VmFsdWUgPSB0aGlzLnJlc29sdmVkVmFsdWUoKTsKKyAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUo
cmVzb2x2ZWRWYWx1ZS50eXBlKTsKKyAgICAgICAgaWYgKHJlc29sdmVkVmFsdWUuc3VidHlwZSkK
KyAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKHJlc29sdmVkVmFsdWUuc3VidHlwZSk7Cisg
ICAgICAgIGlmICh0aGlzLmhhZEVycm9yKCkpCisgICAgICAgICAgICB0aGlzLmFkZENsYXNzTmFt
ZSgiaGFkLWVycm9yIik7CisgICAgICAgIHRoaXMucmVtb3ZlQ2xhc3NOYW1lKCJhY2Nlc3NvciIp
OworCisgICAgICAgIHRoaXMuX3VwZGF0ZUhhc0NoaWxkcmVuKCk7CiAgICAgfSwKIAogICAgIC8v
IFByaXZhdGUKIAotICAgIF9yZXNvbHZlZFZhbHVlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICBpZiAodGhpcy5fZ2V0dGVyVmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0dGVy
VmFsdWU7Ci0gICAgICAgIGlmICh0aGlzLl9wcm9wZXJ0eS5oYXNWYWx1ZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5LnZhbHVlOwotICAgICAgICByZXR1cm4gbnVsbDsKLSAg
ICB9LAotCi0gICAgX3Byb3BlcnR5UGF0aFR5cGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl9nZXR0ZXJWYWx1ZSB8fCB0aGlzLl9wcm9wZXJ0eS5oYXNWYWx1ZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5WYWx1ZTsKLSAg
ICAgICAgaWYgKHRoaXMuX3Byb3BlcnR5Lmhhc0dldHRlcigpKQotICAgICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5HZXR0ZXI7Ci0gICAgICAgIGlmICh0aGlz
Ll9wcm9wZXJ0eS5oYXNTZXR0ZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
UHJvcGVydHlQYXRoLlR5cGUuU2V0dGVyOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlBy
b3BlcnR5UGF0aC5UeXBlLlZhbHVlOwotICAgIH0sCi0KLSAgICBfcmVzb2x2ZWRWYWx1ZVByb3Bl
cnR5UGF0aDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2dldHRlclZhbHVl
KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5UGF0aC5hcHBlbmRQcm9wZXJ0eURl
c2NyaXB0b3IodGhpcy5fZ2V0dGVyVmFsdWUsIHRoaXMuX3Byb3BlcnR5LCBXZWJJbnNwZWN0b3Iu
UHJvcGVydHlQYXRoLlR5cGUuVmFsdWUpOwotICAgICAgICBpZiAodGhpcy5fcHJvcGVydHkuaGFz
VmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eVBhdGguYXBwZW5kUHJv
cGVydHlEZXNjcmlwdG9yKHRoaXMuX3Byb3BlcnR5LnZhbHVlLCB0aGlzLl9wcm9wZXJ0eSwgV2Vi
SW5zcGVjdG9yLlByb3BlcnR5UGF0aC5UeXBlLlZhbHVlKTsKLSAgICAgICAgcmV0dXJuIG51bGw7
Ci0gICAgfSwKLQotICAgIF90aGlzUHJvcGVydHlQYXRoOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHlQYXRoLmFwcGVuZFByb3BlcnR5RGVzY3JpcHRvcihu
dWxsLCB0aGlzLl9wcm9wZXJ0eSwgdGhpcy5fcHJvcGVydHlQYXRoVHlwZSgpKTsKLSAgICB9LAot
CiAgICAgX3VwZGF0ZUhhc0NoaWxkcmVuOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIg
cmVzb2x2ZWRWYWx1ZSA9IHRoaXMuX3Jlc29sdmVkVmFsdWUoKTsKKyAgICAgICAgdmFyIHJlc29s
dmVkVmFsdWUgPSB0aGlzLnJlc29sdmVkVmFsdWUoKTsKICAgICAgICAgdmFyIHZhbHVlSGFzQ2hp
bGRyZW4gPSAocmVzb2x2ZWRWYWx1ZSAmJiByZXNvbHZlZFZhbHVlLmhhc0NoaWxkcmVuKTsKLSAg
ICAgICAgdmFyIHdhc1Rocm93biA9IHRoaXMuX3Byb3BlcnR5Lndhc1Rocm93biB8fCB0aGlzLl9n
ZXR0ZXJIYWRFcnJvcjsKKyAgICAgICAgdmFyIHdhc1Rocm93biA9IHRoaXMuaGFkRXJyb3IoKTsK
IAogICAgICAgICBpZiAodGhpcy5fbW9kZSA9PT0gV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3
Lk1vZGUuUHJvcGVydGllcykKICAgICAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSAhd2FzVGhy
b3duICYmIHZhbHVlSGFzQ2hpbGRyZW47CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMu
aGFzQ2hpbGRyZW4gPSAhd2FzVGhyb3duICYmIHZhbHVlSGFzQ2hpbGRyZW4gJiYgKHRoaXMuX3By
b3BlcnR5Lm5hbWUgPT09ICJfX3Byb3RvX18iIHx8IHRoaXMuX2Fsd2F5c0Rpc3BsYXlBc1Byb3Bl
cnR5KCkpOworICAgICAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9ICF3YXNUaHJvd24gJiYgdmFs
dWVIYXNDaGlsZHJlbiAmJiAodGhpcy5wcm9wZXJ0eS5uYW1lID09PSAiX19wcm90b19fIiB8fCB0
aGlzLl9hbHdheXNEaXNwbGF5QXNQcm9wZXJ0eSgpKTsKICAgICB9LAogCiAgICAgX3VwZGF0ZVRv
b2x0aXBzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgYXR0cmlidXRlcyA9IFtdOwog
Ci0gICAgICAgIGlmICh0aGlzLl9wcm9wZXJ0eS5jb25maWd1cmFibGUpCisgICAgICAgIGlmICh0
aGlzLnByb3BlcnR5LmNvbmZpZ3VyYWJsZSkKICAgICAgICAgICAgIGF0dHJpYnV0ZXMucHVzaCgi
Y29uZmlndXJhYmxlIik7Ci0gICAgICAgIGlmICh0aGlzLl9wcm9wZXJ0eS5lbnVtZXJhYmxlKQor
ICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5lbnVtZXJhYmxlKQogICAgICAgICAgICAgYXR0cmli
dXRlcy5wdXNoKCJlbnVtZXJhYmxlIik7Ci0gICAgICAgIGlmICh0aGlzLl9wcm9wZXJ0eS53cml0
YWJsZSkKKyAgICAgICAgaWYgKHRoaXMucHJvcGVydHkud3JpdGFibGUpCiAgICAgICAgICAgICBh
dHRyaWJ1dGVzLnB1c2goIndyaXRhYmxlIik7CiAKICAgICAgICAgdGhpcy5pY29uRWxlbWVudC50
aXRsZSA9IGF0dHJpYnV0ZXMuam9pbigiICIpOwogICAgIH0sCiAKLSAgICBfdXBkYXRlVGl0bGVB
bmRJY29uOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLm1haW5UaXRsZSA9IHRoaXMu
X3RpdGxlRnJhZ21lbnQoKTsKLQotICAgICAgICBpZiAodGhpcy5fZ2V0dGVyVmFsdWUpIHsKLSAg
ICAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKHRoaXMuX2dldHRlclZhbHVlLnR5cGUpOwotICAg
ICAgICAgICAgaWYgKHRoaXMuX2dldHRlclZhbHVlLnN1YnR5cGUpCi0gICAgICAgICAgICAgICAg
dGhpcy5hZGRDbGFzc05hbWUodGhpcy5fZ2V0dGVyVmFsdWUuc3VidHlwZSk7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5fZ2V0dGVySGFkRXJyb3IpCi0gICAgICAgICAgICAgICAgdGhpcy5hZGRDbGFz
c05hbWUoImhhZC1lcnJvciIpOwotICAgICAgICAgICAgdGhpcy5yZW1vdmVDbGFzc05hbWUoImFj
Y2Vzc29yIik7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl91cGRhdGVIYXNDaGlsZHJlbigp
OwotICAgIH0sCi0KICAgICBfdGl0bGVGcmFnbWVudDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgaWYgKHRoaXMuX3Byb3BlcnR5Lm5hbWUgPT09ICJfX3Byb3RvX18iKQorICAgICAgICBpZiAo
dGhpcy5wcm9wZXJ0eS5uYW1lID09PSAiX19wcm90b19fIikKICAgICAgICAgICAgIHJldHVybiB0
aGlzLl9jcmVhdGVUaXRsZVByb3RvdHlwZSgpOwogCiAgICAgICAgIGlmICh0aGlzLl9tb2RlID09
PSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuTW9kZS5Qcm9wZXJ0aWVzKQpAQCAtMTg0LDEz
ICsxMjgsMTMgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKIAogICAgIF9jcmVhdGVUaXRsZVByb3RvdHlwZTogZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcHJvcGVydHkuaGFzVmFsdWUoKSk7Ci0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb3BlcnR5Lm5hbWUgPT09ICJfX3Byb3RvX18i
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5wcm9wZXJ0eS5oYXNWYWx1ZSgpKTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5wcm9wZXJ0eS5uYW1lID09PSAiX19wcm90b19fIik7
CiAKICAgICAgICAgdmFyIG5hbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOwogICAgICAgICBuYW1lRWxlbWVudC5jbGFzc05hbWUgPSAicHJvdG90eXBlLW5hbWUiOwot
ICAgICAgICBuYW1lRWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
JXMgUHJvdG90eXBlIikuZm9ybWF0KHRoaXMuX3Nhbml0aXplZFByb3RvdHlwZVN0cmluZyh0aGlz
Ll9wcm9wZXJ0eS52YWx1ZSkpOwotICAgICAgICBuYW1lRWxlbWVudC50aXRsZSA9IHRoaXMuX3By
b3BlcnR5UGF0aFN0cmluZyh0aGlzLl90aGlzUHJvcGVydHlQYXRoKCkpOworICAgICAgICBuYW1l
RWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgUHJvdG90eXBl
IikuZm9ybWF0KHRoaXMuX3Nhbml0aXplZFByb3RvdHlwZVN0cmluZyh0aGlzLnByb3BlcnR5LnZh
bHVlKSk7CisgICAgICAgIG5hbWVFbGVtZW50LnRpdGxlID0gdGhpcy5wcm9wZXJ0eVBhdGhTdHJp
bmcodGhpcy50aGlzUHJvcGVydHlQYXRoKCkpOwogICAgICAgICByZXR1cm4gbmFtZUVsZW1lbnQ7
CiAgICAgfSwKIApAQCAtMjAxLDQyICsxNDUsNDAgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQ
cm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gUHJvcGVydHkgbmFt
ZS4KICAgICAgICAgdmFyIG5hbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOwogICAgICAgICBuYW1lRWxlbWVudC5jbGFzc05hbWUgPSAicHJvcGVydHktbmFtZSI7Ci0g
ICAgICAgIG5hbWVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fcHJvcGVydHkubmFtZSArICI6
ICI7Ci0gICAgICAgIG5hbWVFbGVtZW50LnRpdGxlID0gdGhpcy5fcHJvcGVydHlQYXRoU3RyaW5n
KHRoaXMuX3RoaXNQcm9wZXJ0eVBhdGgoKSk7CisgICAgICAgIG5hbWVFbGVtZW50LnRleHRDb250
ZW50ID0gdGhpcy5wcm9wZXJ0eS5uYW1lICsgIjogIjsKKyAgICAgICAgbmFtZUVsZW1lbnQudGl0
bGUgPSB0aGlzLnByb3BlcnR5UGF0aFN0cmluZyh0aGlzLnRoaXNQcm9wZXJ0eVBhdGgoKSk7CiAK
ICAgICAgICAgLy8gUHJvcGVydHkgYXR0cmlidXRlcy4KICAgICAgICAgaWYgKHRoaXMuX21vZGUg
PT09IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5Nb2RlLlByb3BlcnRpZXMpIHsKLSAgICAg
ICAgICAgIGlmICghdGhpcy5fcHJvcGVydHkuZW51bWVyYWJsZSkKKyAgICAgICAgICAgIGlmICgh
dGhpcy5wcm9wZXJ0eS5lbnVtZXJhYmxlKQogICAgICAgICAgICAgICAgIG5hbWVFbGVtZW50LmNs
YXNzTGlzdC5hZGQoIm5vdC1lbnVtZXJhYmxlIik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBW
YWx1ZSAvIEdldHRlciBWYWx1ZSAvIEdldHRlci4KICAgICAgICAgdmFyIHZhbHVlT3JHZXR0ZXJF
bGVtZW50OwotICAgICAgICB2YXIgcmVzb2x2ZWRWYWx1ZSA9IHRoaXMuX3Jlc29sdmVkVmFsdWUo
KTsKKyAgICAgICAgdmFyIHJlc29sdmVkVmFsdWUgPSB0aGlzLnJlc29sdmVkVmFsdWUoKTsKICAg
ICAgICAgaWYgKHJlc29sdmVkVmFsdWUpIHsKICAgICAgICAgICAgIGlmIChyZXNvbHZlZFZhbHVl
LnByZXZpZXcpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9wcmV2aWV3VmlldyA9IG5ldyBXZWJJ
bnNwZWN0b3IuT2JqZWN0UHJldmlld1ZpZXcocmVzb2x2ZWRWYWx1ZS5wcmV2aWV3KTsKICAgICAg
ICAgICAgICAgICB2YWx1ZU9yR2V0dGVyRWxlbWVudCA9IHRoaXMuX3ByZXZpZXdWaWV3LmVsZW1l
bnQ7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHZhbHVlT3JHZXR0ZXJF
bGVtZW50ID0gV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNyZWF0ZUVsZW1lbnRGb3JSZW1v
dGVPYmplY3QocmVzb2x2ZWRWYWx1ZSwgdGhpcy5fcHJvcGVydHkud2FzVGhyb3duIHx8IHRoaXMu
X2dldHRlckhhZEVycm9yKTsKKyAgICAgICAgICAgICAgICB2YWx1ZU9yR2V0dGVyRWxlbWVudCA9
IFdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRWYWx1ZS5jcmVhdGVFbGVtZW50Rm9yUmVtb3RlT2JqZWN0
KHJlc29sdmVkVmFsdWUsIHRoaXMuaGFkRXJyb3IoKSk7CiAKICAgICAgICAgICAgICAgICAvLyBT
cGVjaWFsIGNhc2UgYSBmdW5jdGlvbiBwcm9wZXJ0eSBzdHJpbmcuCiAgICAgICAgICAgICAgICAg
aWYgKHJlc29sdmVkVmFsdWUudHlwZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICAg
ICAgdmFsdWVPckdldHRlckVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLl9mdW5jdGlvblByb3Bl
cnR5U3RyaW5nKCk7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBPcHRp
b24rQ2xpY2sgZm9yIFZhbHVlLgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdmFsdWVP
ckdldHRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAg
ICAgICBpZiAodGhpcy5fcHJvcGVydHkuaGFzR2V0dGVyKCkpCi0gICAgICAgICAgICAgICAgdmFs
dWVPckdldHRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlSW50ZXJhY3RpdmVHZXR0
ZXJFbGVtZW50KCkpOwotICAgICAgICAgICAgaWYgKCF0aGlzLl9wcm9wZXJ0eS5oYXNTZXR0ZXIo
KSkKLSAgICAgICAgICAgICAgICB2YWx1ZU9yR2V0dGVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9jcmVhdGVSZWFkT25seUljb25FbGVtZW50KCkpOworICAgICAgICAgICAgaWYgKHRoaXMucHJv
cGVydHkuaGFzR2V0dGVyKCkpCisgICAgICAgICAgICAgICAgdmFsdWVPckdldHRlckVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVJbnRlcmFjdGl2ZUdldHRlckVsZW1lbnQoKSk7CisgICAg
ICAgICAgICBpZiAoIXRoaXMucHJvcGVydHkuaGFzU2V0dGVyKCkpCisgICAgICAgICAgICAgICAg
dmFsdWVPckdldHRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVSZWFkT25seUljb25F
bGVtZW50KCkpOwogICAgICAgICAgICAgLy8gRklYTUU6IFdoYXQgaWYganVzdCBhIHNldHRlcj8K
ICAgICAgICAgfQogCiAgICAgICAgIHZhbHVlT3JHZXR0ZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQo
InZhbHVlIik7Ci0gICAgICAgIGlmICh0aGlzLl9wcm9wZXJ0eS53YXNUaHJvd24gfHwgdGhpcy5f
Z2V0dGVySGFkRXJyb3IpCisgICAgICAgIGlmICh0aGlzLmhhZEVycm9yKCkpCiAgICAgICAgICAg
ICB2YWx1ZU9yR2V0dGVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJlcnJvciIpOwogCiAgICAgICAg
IGNvbnRhaW5lci5hcHBlbmRDaGlsZChuYW1lRWxlbWVudCk7CkBAIC0yNTAsMTIgKzE5Miw5IEBA
IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGlmICh0aGlzLl9hbHdheXNEaXNwbGF5QXNQcm9wZXJ0eSgpKQogICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRpdGxlUHJvcGVydHlTdHlsZSgpOwogCi0gICAgICAgIC8v
IEZldGNoZWQgZ2V0dGVyIHZhbHVlcyBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gc2hvd24gYXMg
cHJvcGVydGllcy4KLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2dldHRlclZhbHVlKTsK
LQogICAgICAgICAvLyBObyBBUEkgdG8gZGlzcGxheS4KLSAgICAgICAgdmFyIGlzRnVuY3Rpb24g
PSB0aGlzLl9wcm9wZXJ0eS5oYXNWYWx1ZSgpICYmIHRoaXMuX3Byb3BlcnR5LnZhbHVlLnR5cGUg
PT09ICJmdW5jdGlvbiI7Ci0gICAgICAgIGlmICghaXNGdW5jdGlvbiAmJiAhdGhpcy5fcHJvcGVy
dHkuaGFzR2V0dGVyKCkgJiYgIXRoaXMuX3Byb3BlcnR5Lmhhc1NldHRlcigpKQorICAgICAgICB2
YXIgaXNGdW5jdGlvbiA9IHRoaXMucHJvcGVydHkuaGFzVmFsdWUoKSAmJiB0aGlzLnByb3BlcnR5
LnZhbHVlLnR5cGUgPT09ICJmdW5jdGlvbiI7CisgICAgICAgIGlmICghaXNGdW5jdGlvbiAmJiAh
dGhpcy5wcm9wZXJ0eS5oYXNHZXR0ZXIoKSAmJiAhdGhpcy5wcm9wZXJ0eS5oYXNTZXR0ZXIoKSkK
ICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1
bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CkBAIC0yNjMsOCArMjAyLDggQEAgV2ViSW5z
cGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgLy8gRnVuY3Rpb24gLyBHZXR0ZXIgLyBTZXR0ZXIuCiAgICAgICAgIHZhciBuYW1lRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgbmFtZUVsZW1lbnQu
Y2xhc3NOYW1lID0gInByb3BlcnR5LW5hbWUiOwotICAgICAgICBuYW1lRWxlbWVudC50ZXh0Q29u
dGVudCA9IHRoaXMuX3Byb3BlcnR5Lm5hbWU7Ci0gICAgICAgIG5hbWVFbGVtZW50LnRpdGxlID0g
dGhpcy5fcHJvcGVydHlQYXRoU3RyaW5nKHRoaXMuX3RoaXNQcm9wZXJ0eVBhdGgoKSk7CisgICAg
ICAgIG5hbWVFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5wcm9wZXJ0eS5uYW1lOworICAgICAg
ICBuYW1lRWxlbWVudC50aXRsZSA9IHRoaXMucHJvcGVydHlQYXRoU3RyaW5nKHRoaXMudGhpc1By
b3BlcnR5UGF0aCgpKTsKICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKG5hbWVFbGVtZW50
KTsKIAogICAgICAgICBpZiAoaXNGdW5jdGlvbikgewpAQCAtMjczLDUyICsyMTIsMjQgQEAgV2Vi
SW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHBhcmFtRWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMuX2Z1bmN0aW9uUGFyYW1l
dGVyU3RyaW5nKCk7CiAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQocGFyYW1FbGVt
ZW50KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9wcm9wZXJ0eS5o
YXNHZXR0ZXIoKSkKLSAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5f
Y3JlYXRlSW50ZXJhY3RpdmVHZXR0ZXJFbGVtZW50KCkpOwotICAgICAgICAgICAgaWYgKCF0aGlz
Ll9wcm9wZXJ0eS5oYXNTZXR0ZXIoKSkKLSAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5k
Q2hpbGQodGhpcy5fY3JlYXRlUmVhZE9ubHlJY29uRWxlbWVudCgpKTsKKyAgICAgICAgICAgIGlm
ICh0aGlzLnByb3BlcnR5Lmhhc0dldHRlcigpKQorICAgICAgICAgICAgICAgIGNvbnRhaW5lci5h
cHBlbmRDaGlsZCh0aGlzLmNyZWF0ZUludGVyYWN0aXZlR2V0dGVyRWxlbWVudCgpKTsKKyAgICAg
ICAgICAgIGlmICghdGhpcy5wcm9wZXJ0eS5oYXNTZXR0ZXIoKSkKKyAgICAgICAgICAgICAgICBj
b250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVSZWFkT25seUljb25FbGVtZW50KCkpOwog
ICAgICAgICAgICAgLy8gRklYTUU6IFdoYXQgaWYganVzdCBhIHNldHRlcj8KICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiBjb250YWluZXI7CiAgICAgfSwKIAotICAgIF9jcmVhdGVJbnRlcmFj
dGl2ZUdldHRlckVsZW1lbnQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBnZXR0ZXJF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7Ci0gICAgICAgIGdldHRlckVs
ZW1lbnQuY2xhc3NOYW1lID0gImdldHRlciI7Ci0gICAgICAgIGdldHRlckVsZW1lbnQudGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkludm9rZSBnZXR0ZXIiKTsKLQotICAgICAgICBnZXR0
ZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICAgICAgdmFyIGxhc3RO
b25Qcm90b3R5cGVPYmplY3QgPSB0aGlzLl9wcm9wZXJ0eVBhdGgubGFzdE5vblByb3RvdHlwZU9i
amVjdDsKLSAgICAgICAgICAgIHZhciBnZXR0ZXJPYmplY3QgPSB0aGlzLl9wcm9wZXJ0eS5nZXQ7
Ci0gICAgICAgICAgICBsYXN0Tm9uUHJvdG90eXBlT2JqZWN0Lmludm9rZUdldHRlcihnZXR0ZXJP
YmplY3QsIGZ1bmN0aW9uKGVycm9yLCByZXN1bHQsIHdhc1Rocm93bikgewotICAgICAgICAgICAg
ICAgIHRoaXMuX2dldHRlckhhZEVycm9yID0gISEoZXJyb3IgfHwgd2FzVGhyb3duKTsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9nZXR0ZXJWYWx1ZSA9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICB0
aGlzLl91cGRhdGVUaXRsZUFuZEljb24oKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0g
ICAgICAgIH0uYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgcmV0dXJuIGdldHRlckVsZW1lbnQ7Ci0g
ICAgfSwKLQotICAgIF9jcmVhdGVSZWFkT25seUljb25FbGVtZW50OiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICB2YXIgcmVhZE9ubHlFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW1nIik7Ci0gICAgICAgIHJlYWRPbmx5RWxlbWVudC5jbGFzc05hbWUgPSAicmVhZC1vbmx5IjsK
LSAgICAgICAgcmVhZE9ubHlFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJS
ZWFkIG9ubHkiKTsKLSAgICAgICAgcmV0dXJuIHJlYWRPbmx5RWxlbWVudDsKLSAgICB9LAotCiAg
ICAgX2Fsd2F5c0Rpc3BsYXlBc1Byb3BlcnR5OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICAv
LyBDb25zdHJ1Y3RvciwgdGhvdWdoIGEgZnVuY3Rpb24sIGlzIG9mdGVuIGJldHRlciB0cmVhdGVk
IGFzIGFuIGV4cGFuZGFibGUgb2JqZWN0LgotICAgICAgICBpZiAodGhpcy5fcHJvcGVydHkubmFt
ZSA9PT0gImNvbnN0cnVjdG9yIikKKyAgICAgICAgaWYgKHRoaXMucHJvcGVydHkubmFtZSA9PT0g
ImNvbnN0cnVjdG9yIikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIC8vIE5v
bi1mdW5jdGlvbiBvYmplY3RzIGFyZSBvZnRlbiBiZXR0ZXIgdHJlYXRlZCBhcyBwcm9wZXJ0aWVz
LgotICAgICAgICBpZiAodGhpcy5fcHJvcGVydHkuaGFzVmFsdWUoKSAmJiB0aGlzLl9wcm9wZXJ0
eS52YWx1ZS50eXBlICE9PSAiZnVuY3Rpb24iKQorICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5o
YXNWYWx1ZSgpICYmIHRoaXMucHJvcGVydHkudmFsdWUudHlwZSAhPT0gImZ1bmN0aW9uIikKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIC8vIEZldGNoZWQgZ2V0dGVyIHZhbHVl
LgpAQCAtMzM1LDcgKzI0Niw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICBfZnVuY3Rpb25QYXJhbWV0ZXJTdHJpbmc6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvbHZlZFZhbHVlID0gdGhpcy5fcmVzb2x2
ZWRWYWx1ZSgpOworICAgICAgICB2YXIgcmVzb2x2ZWRWYWx1ZSA9IHRoaXMucmVzb2x2ZWRWYWx1
ZSgpOwogICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvbHZlZFZhbHVlLnR5cGUgPT09ICJmdW5j
dGlvbiIpOwogCiAgICAgICAgIC8vIEZvciBOYXRpdmUgbWV0aG9kcywgdGhlIHRvU3RyaW5nIGlz
IHBvb3IuIFdlIHRyeSB0byBwcm92aWRlIGdvb2QgZnVuY3Rpb24gcGFyYW1ldGVyIHN0cmluZ3Mu
CkBAIC0zNzgsMjMgKzI4OSwxNSBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdmFsdWUuZGVzY3JpcHRpb24u
cmVwbGFjZSgvUHJvdG90eXBlJC8sICIiKTsKICAgICB9LAogCi0gICAgX3Byb3BlcnR5UGF0aFN0
cmluZzogZnVuY3Rpb24ocHJvcGVydHlQYXRoKQotICAgIHsKLSAgICAgICAgaWYgKHByb3BlcnR5
UGF0aC5pc0Z1bGxQYXRoSW1wb3NzaWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiVW5hYmxlIHRvIGRldGVybWluZSBwYXRoIHRvIHByb3BlcnR5IGZyb20g
cm9vdCIpOwotCi0gICAgICAgIHJldHVybiBwcm9wZXJ0eVBhdGguZGlzcGxheVBhdGgodGhpcy5f
cHJvcGVydHlQYXRoVHlwZSgpKTsKLSAgICB9LAotCiAgICAgX3VwZGF0ZUNoaWxkcmVuOiBmdW5j
dGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggJiYgIXRoaXMu
c2hvdWxkUmVmcmVzaENoaWxkcmVuKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZh
ciByZXNvbHZlZFZhbHVlID0gdGhpcy5fcmVzb2x2ZWRWYWx1ZSgpOworICAgICAgICB2YXIgcmVz
b2x2ZWRWYWx1ZSA9IHRoaXMucmVzb2x2ZWRWYWx1ZSgpOwogICAgICAgICBpZiAocmVzb2x2ZWRW
YWx1ZS5pc0NvbGxlY3Rpb25UeXBlKCkgJiYgdGhpcy5fbW9kZSA9PT0gV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVWaWV3Lk1vZGUuUHJvcGVydGllcykKICAgICAgICAgICAgIHJlc29sdmVkVmFsdWUu
Z2V0Q29sbGVjdGlvbkVudHJpZXMoMCwgMTAwLCB0aGlzLl91cGRhdGVDaGlsZHJlbkludGVybmFs
LmJpbmQodGhpcywgdGhpcy5fdXBkYXRlRW50cmllcywgdGhpcy5fbW9kZSkpOwotICAgICAgICBl
bHNlIGlmICh0aGlzLl9wcm9wZXJ0eS5uYW1lID09PSAiX19wcm90b19fIikKKyAgICAgICAgZWxz
ZSBpZiAodGhpcy5wcm9wZXJ0eS5uYW1lID09PSAiX19wcm90b19fIikKICAgICAgICAgICAgIHJl
c29sdmVkVmFsdWUuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0aGlzLl91cGRhdGVDaGlsZHJl
bkludGVybmFsLmJpbmQodGhpcywgdGhpcy5fdXBkYXRlUHJvcGVydGllcywgV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVWaWV3Lk1vZGUuQVBJKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJl
c29sdmVkVmFsdWUuZ2V0RGlzcGxheWFibGVQcm9wZXJ0eURlc2NyaXB0b3JzKHRoaXMuX3VwZGF0
ZUNoaWxkcmVuSW50ZXJuYWwuYmluZCh0aGlzLCB0aGlzLl91cGRhdGVQcm9wZXJ0aWVzLCB0aGlz
Ll9tb2RlKSk7CkBAIC00MTAsNyArMzEzLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9w
ZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBsaXN0LCB0aGlzLl9yZXNvbHZlZFZh
bHVlUHJvcGVydHlQYXRoKCksIG1vZGUpOworICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgbGlz
dCwgdGhpcy5yZXNvbHZlZFZhbHVlUHJvcGVydHlQYXRoKCksIG1vZGUpOwogICAgIH0sCiAKICAg
ICBfdXBkYXRlRW50cmllczogZnVuY3Rpb24oZW50cmllcywgcHJvcGVydHlQYXRoLCBtb2RlKQpA
QCAtNDI5LDcgKzMzMiw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTaG93IHRoZSBwcm90
b3R5cGUgc28gdXNlcnMgY2FuIHNlZSB0aGUgQVBJLgotICAgICAgICB2YXIgcmVzb2x2ZWRWYWx1
ZSA9IHRoaXMuX3Jlc29sdmVkVmFsdWUoKTsKKyAgICAgICAgdmFyIHJlc29sdmVkVmFsdWUgPSB0
aGlzLnJlc29sdmVkVmFsdWUoKTsKICAgICAgICAgcmVzb2x2ZWRWYWx1ZS5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoIl9fcHJvdG9fXyIsIGZ1bmN0aW9uKHByb3BlcnR5RGVzY3JpcHRvcikgewog
ICAgICAgICAgICAgaWYgKHByb3BlcnR5RGVzY3JpcHRvcikKICAgICAgICAgICAgICAgICB0aGlz
LmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1l
bnQocHJvcGVydHlEZXNjcmlwdG9yLCBwcm9wZXJ0eVBhdGgsIG1vZGUpKTsKQEAgLTQ0MCwxMyAr
MzQzLDEzIEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgewogICAgICAgICBwcm9wZXJ0aWVzLnNvcnQoV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVWaWV3LkNvbXBhcmVQcm9wZXJ0eURlc2NyaXB0b3JzKTsKIAotICAgICAgICB2YXIg
cmVzb2x2ZWRWYWx1ZSA9IHRoaXMuX3Jlc29sdmVkVmFsdWUoKTsKKyAgICAgICAgdmFyIHJlc29s
dmVkVmFsdWUgPSB0aGlzLnJlc29sdmVkVmFsdWUoKTsKICAgICAgICAgdmFyIGlzQXJyYXkgPSBy
ZXNvbHZlZFZhbHVlLmlzQXJyYXkoKTsKICAgICAgICAgdmFyIGlzUHJvcGVydHlNb2RlID0gbW9k
ZSA9PT0gV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUuUHJvcGVydGllcyB8fCB0aGlz
Ll9nZXR0ZXJWYWx1ZTsKICAgICAgICAgdmFyIGlzQVBJID0gbW9kZSA9PT0gV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVWaWV3Lk1vZGUuQVBJOwogCiAgICAgICAgIHZhciBwcm90b3R5cGVOYW1lID0g
dW5kZWZpbmVkOwotICAgICAgICBpZiAodGhpcy5fcHJvcGVydHkubmFtZSA9PT0gIl9fcHJvdG9f
XyIpIHsKKyAgICAgICAgaWYgKHRoaXMucHJvcGVydHkubmFtZSA9PT0gIl9fcHJvdG9fXyIpIHsK
ICAgICAgICAgICAgIGlmIChyZXNvbHZlZFZhbHVlLmRlc2NyaXB0aW9uKQogICAgICAgICAgICAg
ICAgIHByb3RvdHlwZU5hbWUgPSB0aGlzLl9zYW5pdGl6ZWRQcm90b3R5cGVTdHJpbmcocmVzb2x2
ZWRWYWx1ZSk7CiAgICAgICAgIH0KQEAgLTQ3MSw3OCArMzc0LDUgQEAgV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZh
ciBlbXB0eU1lc3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LmVtcHR5
TWVzc2FnZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBQcm9wZXJ0aWVzLiIpKTsK
ICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFRyZWVFbGVtZW50KGVtcHR5TWVzc2Fn
ZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CiAgICAgICAgIH0KLSAgICB9LAotCi0gICAgX2xvZ1Zh
bHVlOiBmdW5jdGlvbih2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvbHZlZFZhbHVlID0g
dmFsdWUgfHwgdGhpcy5fcmVzb2x2ZWRWYWx1ZSgpOwotICAgICAgICBpZiAoIXJlc29sdmVkVmFs
dWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHByb3BlcnR5UGF0aCA9IHRo
aXMuX3Jlc29sdmVkVmFsdWVQcm9wZXJ0eVBhdGgoKTsKLSAgICAgICAgdmFyIGlzSW1wb3NzaWJs
ZSA9IHByb3BlcnR5UGF0aC5pc0Z1bGxQYXRoSW1wb3NzaWJsZSgpOwotICAgICAgICB2YXIgdGV4
dCA9IGlzSW1wb3NzaWJsZSA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZWN0ZWQgVmFsdWUi
KSA6IHByb3BlcnR5UGF0aC5kaXNwbGF5UGF0aCh0aGlzLl9wcm9wZXJ0eVBhdGhUeXBlKCkpOwot
Ci0gICAgICAgIGlmICghaXNJbXBvc3NpYmxlKQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnF1
aWNrQ29uc29sZS5wcm9tcHQucHVzaEhpc3RvcnlJdGVtKHRleHQpOwotCi0gICAgICAgIFdlYklu
c3BlY3Rvci5jb25zb2xlTG9nVmlld0NvbnRyb2xsZXIuYXBwZW5kSW1tZWRpYXRlRXhlY3V0aW9u
V2l0aFJlc3VsdCh0ZXh0LCByZXNvbHZlZFZhbHVlKTsKLSAgICB9LAotCi0gICAgX2NvbnRleHRN
ZW51SGFuZGxlcjogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB2YXIgcmVzb2x2ZWRW
YWx1ZSA9IHRoaXMuX3Jlc29sdmVkVmFsdWUoKTsKLSAgICAgICAgaWYgKCFyZXNvbHZlZFZhbHVl
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBX
ZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwotICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9nIFZhbHVlIiksIHRoaXMuX2xvZ1ZhbHVl
LmJpbmQodGhpcykpOwotCi0gICAgICAgIHZhciBwcm9wZXJ0eVBhdGggPSB0aGlzLl9yZXNvbHZl
ZFZhbHVlUHJvcGVydHlQYXRoKCk7Ci0gICAgICAgIGlmIChwcm9wZXJ0eVBhdGggJiYgIXByb3Bl
cnR5UGF0aC5pc0Z1bGxQYXRoSW1wb3NzaWJsZSgpKSB7Ci0gICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29weSBQYXRoIHRvIFByb3BlcnR5
IiksIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5j
b3B5VGV4dChwcm9wZXJ0eVBhdGguZGlzcGxheVBhdGgoV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0
aC5UeXBlLlZhbHVlKSk7Ci0gICAgICAgICAgICB9LmJpbmQodGhpcykpOwotICAgICAgICB9Ci0K
LSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7Ci0KLSAgICAgICAgdGhpcy5f
YXBwZW5kTWVudXNJdGVtc0Zvck9iamVjdChjb250ZXh0TWVudSwgcmVzb2x2ZWRWYWx1ZSk7Ci0K
LSAgICAgICAgaWYgKCFjb250ZXh0TWVudS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjb250ZXh0
TWVudS5zaG93KCk7Ci0gICAgfSwKLQotICAgIF9hcHBlbmRNZW51c0l0ZW1zRm9yT2JqZWN0OiBm
dW5jdGlvbihjb250ZXh0TWVudSwgcmVzb2x2ZWRWYWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmIChy
ZXNvbHZlZFZhbHVlLnR5cGUgPT09ICJmdW5jdGlvbiIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYmV0dGVyIGhhbmRsZSBib3VuZCBmdW5jdGlvbnMuCi0gICAgICAgICAgICBp
ZiAoIWlzRnVuY3Rpb25TdHJpbmdOYXRpdmVDb2RlKHJlc29sdmVkVmFsdWUuZGVzY3JpcHRpb24p
KSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkp1bXAgdG8gRGVmaW5pdGlvbiIpLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICAgICAgRGVidWdnZXJBZ2VudC5nZXRGdW5jdGlvbkRldGFpbHMocmVzb2x2ZWRWYWx1ZS5v
YmplY3RJZCwgZnVuY3Rpb24oZXJyb3IsIHJlc3BvbnNlKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb24gPSByZXNwb25zZS5sb2NhdGlvbjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VyY2VDb2RlID0gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTWFuYWdlci5zY3JpcHRGb3JJZGVudGlmaWVyKGxvY2F0aW9uLnNjcmlwdElkKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghc291cmNlQ29kZSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VyY2VD
b2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbihsb2NhdGlv
bi5saW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIgfHwgMCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd1NvdXJjZUNv
ZGVMb2NhdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pOwotICAgICAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChyZXNvbHZlZFZhbHVlLnN1YnR5cGUgPT09ICJub2Rl
IikgewotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJldmVhbCBpbiBET00gVHJlZSIpLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICByZXNvbHZlZFZhbHVlLnB1c2hOb2RlVG9Gcm9udGVuZChmdW5jdGlvbihub2RlSWQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmluc3BlY3RFbGVt
ZW50KG5vZGVJZCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlU2V0SW5kZXhUcmVl
RWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09i
amVjdFRyZWVTZXRJbmRleFRyZWVFbGVtZW50LmpzCmluZGV4IDMyNGM3NDcuLmQ5YTg1NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVj
dFRyZWVTZXRJbmRleFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVTZXRJbmRleFRyZWVFbGVtZW50LmpzCkBAIC0y
OCwyMSArMjgsMTcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVTZXRJbmRleFRyZWVFbGVtZW50
ID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eVBhdGgpCiAgICAgY29uc29sZS5hc3NlcnQob2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk7CiAKICAgICB0aGlzLl9v
YmplY3QgPSBvYmplY3Q7Ci0gICAgdGhpcy5fcHJvcGVydHlQYXRoID0gcHJvcGVydHlQYXRoOwog
Ci0gICAgLy8gVHJlYXQgdGhlIHNhbWUgYXMgYW4gYXJyYXktaW5kZXgganVzdCB3aXRoIGEgZGlm
ZmVyZW50IGNoYXJhY3Rlci4KLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNh
bGwodGhpcywgWyJvYmplY3QtdHJlZS1hcnJheS1pbmRleCJdLCB0aGlzLl90aXRsZUZyYWdtZW50
KCksIG51bGwsIHRoaXMuX29iamVjdCwgZmFsc2UpOworICAgIC8vIFRyZWF0IHRoZSBzYW1lIGFz
IGFuIGFycmF5LWluZGV4IGp1c3Qgd2l0aCBkaWZmZXJlbnQgc3RyaW5ncyBhbmQgd2lkdGhzLgor
ICAgIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmNhbGwodGhpcywgdGhp
cy5fb2JqZWN0LCBwcm9wZXJ0eVBhdGgpOwogCi0gICAgdGhpcy5zbWFsbCA9IHRydWU7Ci0gICAg
dGhpcy50b2dnbGVPbkNsaWNrID0gZmFsc2U7Ci0gICAgdGhpcy5zZWxlY3RhYmxlID0gZmFsc2U7
Ci0gICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwotICAgIHRoaXMuaGFz
Q2hpbGRyZW4gPSBmYWxzZTsKKyAgICB0aGlzLm1haW5UaXRsZSA9IHRoaXMuX3RpdGxlRnJhZ21l
bnQoKTsKKyAgICB0aGlzLmFkZENsYXNzTmFtZSgib2JqZWN0LXRyZWUtYXJyYXktaW5kZXgiKTsK
IH07CiAKIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlU2V0SW5kZXhU
cmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1l
bnQucHJvdG90eXBlLAorICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNl
VHJlZUVsZW1lbnQucHJvdG90eXBlLAogCiAgICAgLy8gUHVibGljCiAKQEAgLTUxLDE3ICs0Nywy
MSBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVNldEluZGV4VHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0OwogICAgIH0sCiAKKyAgICAvLyBQcm90
ZWN0ZWQKKworICAgIHJlc29sdmVkVmFsdWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9vYmplY3Q7CisgICAgfSwKKwogICAgIC8vIFByaXZhdGUKIAotICAgIF9yZXNv
bHZlZFZhbHVlUHJvcGVydHlQYXRoOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4g
dGhpcy5fcHJvcGVydHlQYXRoLmFwcGVuZFNldEluZGV4KHRoaXMuX29iamVjdCk7Ci0gICAgfSwK
LQogICAgIF90aXRsZUZyYWdtZW50OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgY29u
dGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogCisgICAgICAgIHZh
ciBwcm9wZXJ0eVBhdGggPSB0aGlzLnByb3BlcnR5UGF0aC5hcHBlbmRTZXRJbmRleCh0aGlzLl9v
YmplY3QpOworCiAgICAgICAgIC8vIFNldCBidWxsZXQuCiAgICAgICAgIHZhciBuYW1lRWxlbWVu
dCA9IGNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIikp
OwogICAgICAgICBuYW1lRWxlbWVudC5jbGFzc05hbWUgPSAiaW5kZXgtbmFtZSI7CkBAIC03MSw3
ICs3MSw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIC8vIFZhbHVlLgogICAgICAgICB2YXIgdmFsdWVFbGVtZW50ID0g
Y29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7CiAg
ICAgICAgIHZhbHVlRWxlbWVudC5jbGFzc05hbWUgPSAiaW5kZXgtdmFsdWUiOwotICAgICAgICB2
YWx1ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNyZWF0
ZU9iamVjdFRyZWVPckZvcm1hdHRlZFZhbHVlRm9yUmVtb3RlT2JqZWN0KHRoaXMuX29iamVjdCwg
dGhpcy5fcmVzb2x2ZWRWYWx1ZVByb3BlcnR5UGF0aCgpKSk7CisgICAgICAgIHZhbHVlRWxlbWVu
dC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuRm9ybWF0dGVkVmFsdWUuY3JlYXRlT2JqZWN0VHJl
ZU9yRm9ybWF0dGVkVmFsdWVGb3JSZW1vdGVPYmplY3QodGhpcy5fb2JqZWN0LCBwcm9wZXJ0eVBh
dGgpKTsKIAogICAgICAgICByZXR1cm4gY29udGFpbmVyOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>