<?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>147439</bug_id>
          
          <creation_ts>2015-07-29 22:20:57 -0700</creation_ts>
          <short_desc>Web Inspector: Convert DataGrid and DataGridNode classes to ES6 classes</short_desc>
          <delta_ts>2015-08-04 12:10:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>142891</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</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>1113301</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-07-29 22:20:57 -0700</bug_when>
    <thetext>oh god help me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113302</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-07-29 22:21:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/22066417&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113768</commentid>
    <comment_count>2</comment_count>
      <attachid>257937</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-07-31 11:36:52 -0700</bug_when>
    <thetext>Created attachment 257937
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114032</commentid>
    <comment_count>3</comment_count>
      <attachid>258009</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-08-01 09:35:46 -0700</bug_when>
    <thetext>Created attachment 258009
PFR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114401</commentid>
    <comment_count>4</comment_count>
      <attachid>258009</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-03 15:16:47 -0700</bug_when>
    <thetext>Comment on attachment 258009
PFR

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeDataGrid.js:32
&gt; +            name: { title: WebInspector.UIString(&quot;Node&quot;), sortable: false }

Style: Drop the spaces at the start and end of the object literal.

&gt; Source/WebInspectorUI/UserInterface/Views/DatabaseTableContentView.js:89
&gt; -        this._dataGrid = new WebInspector.DataGrid.createSortableDataGrid(columnNames, values);
&gt; +        this._dataGrid = WebInspector.DataGrid.createSortableDataGrid(columnNames, values);

Nice!

&gt; Source/WebInspectorUI/UserInterface/Views/LayerTreeDataGridNode.js:33
&gt; +        this.layer = layer;

_layer?

&gt; Source/WebInspectorUI/UserInterface/Views/ProbeSetDataGrid.js:37
&gt; +            columns[probe.id] = { title };

Style: Same thing, remove extra spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114408</commentid>
    <comment_count>5</comment_count>
      <attachid>258009</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-03 15:21:04 -0700</bug_when>
    <thetext>Comment on attachment 258009
PFR

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/LayerTreeDataGridNode.js:33
&gt;&gt; +        this.layer = layer;
&gt; 
&gt; _layer?

nm, I see this is now calling the setter and sets extra properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114696</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-04 12:10:24 -0700</bug_when>
    <thetext>Committed r187873: &lt;http://trac.webkit.org/changeset/187873&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257937</attachid>
            <date>2015-07-31 11:36:52 -0700</date>
            <delta_ts>2015-08-01 09:35:41 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-147439-20150731113649.patch</filename>
            <type>text/plain</type>
            <size>55989</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBi
ODc3MmRiN2EyNGRkYWM5MzkzZjRiNTk3ODNkNThiMGJiYjhhZGFjLi4xYmM1OGZlMWI4NjAzNThl
NmQ0MjE2Y2M5YmZjNWYxNjM2ZGJlYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDYgQEAKKzIwMTUtMDctMzEgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnZlcnQgRGF0YUdyaWQgYW5kIERh
dGFHcmlkTm9kZSBjbGFzc2VzIHRvIEVTNiBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc0MzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWQu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLmNyZWF0ZVNvcnRhYmxlRGF0YUdyaWQuc29ydERhdGFHcmlkLmNvbXBhcmF0
b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLmNyZWF0ZVNvcnRhYmxlRGF0YUdy
aWQuc29ydERhdGFHcmlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5jcmVhdGVT
b3J0YWJsZURhdGFHcmlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUuZ2V0IHJlZnJlc2hDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlLnNldCByZWZyZXNoQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLnByb3RvdHlwZS5nZXQgc29ydE9yZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5nZXQgc29ydENvbHVtbklkZW50aWZpZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnNldCBzb3J0Q29sdW1uSWRlbnRpZmllci5nZXQgbmV3U29ydEhlYWRlckNlbGxF
bGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5zZXQgc29ydENvbHVtbklk
ZW50aWZpZXIuZ2V0IG9sZFNvcnRIZWFkZXJDZWxsRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQuc2V0IHNvcnRDb2x1bW5JZGVudGlmaWVyLmdldCBpZik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGF0YUdyaWQuc2V0IHNvcnRDb2x1bW5JZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5zZXQgc29ydE9yZGVyLmdldCBzb3J0SGVhZGVyQ2Vs
bEVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5zZXQg
c29ydE9yZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVt
b3ZlQ29sdW1uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuX2Vu
dW1lcmF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUudXBkYXRlTGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUuY29sdW1uV2lkdGhzTWFwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90
b3R5cGUuYXBwbHlDb2x1bW5XaWR0aHNNYXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFH
cmlkLmdldCBzY3JvbGxDb250YWluZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Ll9oaWRlQ29sdW1uLmdldCBjb2x1bW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Ll9zaG93Q29sdW1uLmRlbGV0ZS50aGlzLmNvbHVtbnMuZ2V0IHN0cmluZ19hcHBlYXJlZF9oZXJl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuX2lzQ29sdW1uVmlz
aWJsZS5yZXR1cm4udGhpcy5jb2x1bW5zLmdldCBzdHJpbmdfYXBwZWFyZWRfaGVyZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9pc0NvbHVtblZpc2libGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yZW1vdmVDaGlsZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW5S
ZWN1cnNpdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5zb3J0
Tm9kZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5zb3J0Tm9k
ZXNJbW1lZGlhdGVseSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBl
Ll9zb3J0Tm9kZXNDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlLl9rZXlEb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUuZXhwYW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuY29s
bGFwc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yZXZlYWwp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yZXZlYWxBbmRTZWxl
Y3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5kYXRhR3JpZE5v
ZGVGcm9tTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLmRh
dGFHcmlkTm9kZUZyb21Qb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlLl9oZWFkZXJDZWxsQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlLl9tb3VzZW92ZXJDb2x1bW5Db2xsYXBzZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5fbW91c2VvdXRDb2x1bW5Db2xsYXBzZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5fY2xpY2tJbkNvbHVtbkNvbGxh
cHNlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLmNvbGxhcHNl
Q29sdW1uR3JvdXAuZ2V0IHRoaXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnBy
b3RvdHlwZS5jb2xsYXBzZUNvbHVtbkdyb3VwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5wcm90b3R5cGUuX2NvbGxhcHNlckJ1dHRvbkNvbGxhcHNlQ29sdW1uc1Rvb2xUaXApOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5fY29sbGFwc2VyQnV0dG9u
RXhwYW5kQ29sdW1uc1Rvb2xUaXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnBy
b3RvdHlwZS53aWxsVG9nZ2xlQ29sdW1uR3JvdXApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLnByb3RvdHlwZS5kaWRUb2dnbGVDb2x1bW5Hcm91cCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLmhlYWRlclRhYmxlSGVhZGVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuZ2V0IF9nZW5lcmF0ZVNvcnRJbmRpY2F0b3JJ
bWFnZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBl
Ll9tb3VzZURvd25JbkRhdGFUYWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
Z2V0IHJlc2l6ZU1ldGhvZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQuc2V0IHJl
c2l6ZU1ldGhvZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmdldCBzZWxlY3RhYmxlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmdldCBjb3B5YWJs
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5zZXQgY29w
eWFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuZ2V0
IGVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUu
Y3JlYXRlQ2VsbHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5
cGUucmVmcmVzaElmTmVlZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUu
cHJvdG90eXBlLm5lZWRzUmVmcmVzaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWRO
b2RlLnByb3RvdHlwZS5nZXQgZGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWRO
b2RlLnByb3RvdHlwZS5zZXQgZGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWRO
b2RlLnByb3RvdHlwZS5nZXQgcmV2ZWFsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFH
cmlkTm9kZS5wcm90b3R5cGUuc2V0IGhhc0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmdldCBoYXNDaGlsZHJlbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5zZXQgcmV2ZWFsZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuZ2V0IGRlcHRoKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmdldCBsZWZ0UGFkZGluZyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5nZXQgc2hvdWxkUmVm
cmVzaENoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90
eXBlLnNldCBzaG91bGRSZWZyZXNoQ2hpbGRyZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRh
dGFHcmlkTm9kZS5wcm90b3R5cGUuZ2V0IHNlbGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLnNldCBzZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5nZXQgZXhwYW5kZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuc2V0IGV4cGFuZGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLnJlZnJlc2gpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUudXBkYXRlTGF5b3V0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGwpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbENvbnRl
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuZWxlbWVu
dFdpdGhDb2x1bW5JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5v
ZGUucHJvdG90eXBlLmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLmluc2VydENoaWxkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLl9yZWNhbGN1bGF0ZVNp
YmxpbmdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmNv
bGxhcHNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmNv
bGxhcHNlUmVjdXJzaXZlbHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5w
cm90b3R5cGUuZXhwYW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJv
dG90eXBlLmV4cGFuZFJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLnJldmVhbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWRO
b2RlLnByb3RvdHlwZS5zZWxlY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9k
ZS5wcm90b3R5cGUucmV2ZWFsQW5kU2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUucHJvdG90eXBlLmRlc2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUucHJvdG90eXBlLnRyYXZlcnNlTmV4dE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUudHJhdmVyc2VQcmV2aW91c05vZGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuaXNFdmVudFdpdGhpbkRpc2Ns
b3N1cmVUcmlhbmdsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3Rv
dHlwZS5fYXR0YWNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90
eXBlLl9kZXRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5
cGUuc2F2ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QbGFjZWhvbGRlckRhdGFH
cmlkTm9kZSk6CisgICAgICAgICguc29ydERhdGFHcmlkLmNvbXBhcmF0b3IpOiBEZWxldGVkLgor
ICAgICAgICAoLnNvcnREYXRhR3JpZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlLmdldCBzb3J0Q29sdW1uSWRlbnRpZmllcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9vbmRibGNsaWNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuX3N0YXJ0RWRp
dGluZ05vZGVBdENvbHVtbkluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9zdGFydEVkaXRpbmdDb25maWcpOiBEZWxldGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5fZWRpdGluZ0NvbW1p
dHRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBl
Ll9lZGl0aW5nQ2FuY2VsbGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5wcm90b3R5cGUuYXV0b1NpemVDb2x1bW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuaW5zZXJ0Q29sdW1uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuZ2V0IHNjcm9sbENvbnRhaW5lcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLmlzU2Ny
b2xsZWRUb0xhc3RSb3cpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LnByb3RvdHlwZS5zY3JvbGxUb0xhc3RSb3cpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLnByb3RvdHlwZS5fcG9zaXRpb25SZXNpemVyRWxlbWVudHMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5hZGRQbGFjZWhvbGRl
ck5vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlw
ZS5hcHBlbmRDaGlsZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlLmluc2VydENoaWxkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5wcm90b3R5cGUuX2NvbGxhcHNlQ29sdW1uR3JvdXBXaXRoQ2VsbCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9jbGlja0luRGF0YVRh
YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUu
dGV4dEZvckRhdGFHcmlkTm9kZUNvbHVtbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlLl9jb3B5VGV4dEZvckRhdGFHcmlkTm9kZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLmhhbmRsZUJlZm9yZUNv
cHlFdmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlLmhhbmRsZUNvcHlFdmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0
YUdyaWQucHJvdG90eXBlLl9jb3B5Um93KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5wcm90b3R5cGUuZ2V0IHJlc2l6ZU1ldGhvZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnNldCByZXNpemVNZXRob2QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yZXNpemVyRHJh
Z1N0YXJ0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3Rv
dHlwZS5yZXNpemVyRHJhZ2dpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLnByb3RvdHlwZS5yZXNpemVyRHJhZ0VuZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLnJlc3RvcmVQb3NpdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuUGxhY2Vob2xkZXJEYXRhR3JpZE5vZGUucHJvdG90
eXBlLm1ha2VOb3JtYWwpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
RGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFi
YXNlVGFibGVDb250ZW50Vmlldy5wcm90b3R5cGUuX3F1ZXJ5RmluaXNoZWQpOgorCiAyMDE1LTA3
LTI4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogY29uc29sZS5ncm91cEVuZCBjYXVzZXMgbmVnYXRpdmUgaW5kZW50IHdoZW4g
bm8gZ3JvdXAgaXMgYWN0aXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkLmpzCmluZGV4IDgwMjhlODZkZDUwYmRiZTA0NGI2NDg4
OTM0M2NiM2Q4NzQwNDZkYjEuLjY1MWViYzI0MTI4ZGNmNThjZjI1MmVmZTAzODhmOTEyMmI3YWYy
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RhdGFHcmlkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RhdGFHcmlkLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE4MCArMjMsMTYyIEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGZ1bmN0aW9uKGNvbHVt
bnNEYXRhLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxiYWNrLCBwcmVmZXJyZWRDb2x1bW5PcmRl
cikKK1dlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIHRoaXMuY29sdW1ucyA9IG5ldyBNYXA7Ci0gICAgdGhpcy5v
cmRlcmVkQ29sdW1ucyA9IFtdOwotCi0gICAgdGhpcy5fc29ydENvbHVtbklkZW50aWZpZXIgPSBu
dWxsOwotICAgIHRoaXMuX3NvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3Jk
ZXIuSW5kZXRlcm1pbmF0ZTsKLQotICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICB0aGlzLnNl
bGVjdGVkTm9kZSA9IG51bGw7Ci0gICAgdGhpcy5leHBhbmROb2Rlc1doZW5BcnJvd2luZyA9IGZh
bHNlOwotICAgIHRoaXMucm9vdCA9IHRydWU7Ci0gICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZhbHNl
OwotICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlOwotICAgIHRoaXMucmV2ZWFsZWQgPSB0cnVlOwot
ICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKLSAgICB0aGlzLmRhdGFHcmlkID0gdGhpczsKLSAg
ICB0aGlzLmluZGVudFdpZHRoID0gMTU7Ci0gICAgdGhpcy5yZXNpemVycyA9IFtdOwotICAgIHRo
aXMuX2NvbHVtbldpZHRoc0luaXRpYWxpemVkID0gZmFsc2U7Ci0KLSAgICB0aGlzLmVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NO
YW1lID0gImRhdGEtZ3JpZCI7Ci0gICAgdGhpcy5lbGVtZW50LnRhYkluZGV4ID0gMDsKLSAgICB0
aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2tleURvd24uYmlu
ZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuZWxlbWVudC5jb3B5SGFuZGxlciA9IHRoaXM7Ci0K
LSAgICB0aGlzLl9oZWFkZXJUYWJsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
YWJsZSIpOwotICAgIHRoaXMuX2hlYWRlclRhYmxlRWxlbWVudC5jbGFzc05hbWUgPSAiaGVhZGVy
IjsKLSAgICB0aGlzLl9oZWFkZXJUYWJsZUNvbHVtbkdyb3VwRWxlbWVudCA9IHRoaXMuX2hlYWRl
clRhYmxlRWxlbWVudC5jcmVhdGVDaGlsZCgiY29sZ3JvdXAiKTsKLSAgICB0aGlzLl9oZWFkZXJU
YWJsZUJvZHlFbGVtZW50ID0gdGhpcy5faGVhZGVyVGFibGVFbGVtZW50LmNyZWF0ZUNoaWxkKCJ0
Ym9keSIpOwotICAgIHRoaXMuX2hlYWRlclRhYmxlUm93RWxlbWVudCA9IHRoaXMuX2hlYWRlclRh
YmxlQm9keUVsZW1lbnQuY3JlYXRlQ2hpbGQoInRyIik7Ci0gICAgdGhpcy5faGVhZGVyVGFibGVD
ZWxsRWxlbWVudHMgPSBuZXcgTWFwOwotCi0gICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3Njcm9sbENvbnRh
aW5lckVsZW1lbnQuY2xhc3NOYW1lID0gImRhdGEtY29udGFpbmVyIjsKLQotICAgIHRoaXMuX2Rh
dGFUYWJsZUVsZW1lbnQgPSB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LmNyZWF0ZUNoaWxk
KCJ0YWJsZSIpOwotICAgIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQuY2xhc3NOYW1lID0gImRhdGEi
OwotCi0gICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRv
d24iLCB0aGlzLl9tb3VzZURvd25JbkRhdGFUYWJsZS5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9k
YXRhVGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xpY2tJbkRh
dGFUYWJsZS5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5fY29udGV4dE1lbnVJbkRhdGFUYWJsZS5iaW5k
KHRoaXMpLCB0cnVlKTsKLQotICAgIC8vIEZJWE1FOiBBZGQgYSBjcmVhdGVDYWxsYmFjayB3aGlj
aCBpcyBkaWZmZXJlbnQgZnJvbSBlZGl0Q2FsbGJhY2sgYW5kIGhhcyBkaWZmZXJlbnQKLSAgICAv
LyBiZWhhdmlvciB3aGVuIGNyZWF0aW5nIGEgbmV3IG5vZGUuCi0gICAgaWYgKGVkaXRDYWxsYmFj
aykgewotICAgICAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRi
bGNsaWNrIiwgdGhpcy5fb25kYmxjbGljay5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgICAgIHRo
aXMuX2VkaXRDYWxsYmFjayA9IGVkaXRDYWxsYmFjazsKLSAgICB9Ci0gICAgaWYgKGRlbGV0ZUNh
bGxiYWNrKQotICAgICAgICB0aGlzLl9kZWxldGVDYWxsYmFjayA9IGRlbGV0ZUNhbGxiYWNrOwot
Ci0gICAgdGhpcy5fZGF0YVRhYmxlQ29sdW1uR3JvdXBFbGVtZW50ID0gdGhpcy5faGVhZGVyVGFi
bGVDb2x1bW5Hcm91cEVsZW1lbnQuY2xvbmVOb2RlKHRydWUpOwotICAgIHRoaXMuX2RhdGFUYWJs
ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YVRhYmxlQ29sdW1uR3JvdXBFbGVtZW50KTsK
LQotICAgIC8vIFRoaXMgZWxlbWVudCBpcyB1c2VkIGJ5IERhdGFHcmlkTm9kZXMgdG8gbWFuaXB1
bGF0ZSB0YWJsZSByb3dzIGFuZCBjZWxscy4KLSAgICB0aGlzLmRhdGFUYWJsZUJvZHlFbGVtZW50
ID0gdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5jcmVhdGVDaGlsZCgidGJvZHkiKTsKLSAgICB0aGlz
Ll9maWxsZXJSb3dFbGVtZW50ID0gdGhpcy5kYXRhVGFibGVCb2R5RWxlbWVudC5jcmVhdGVDaGls
ZCgidHIiKTsKLSAgICB0aGlzLl9maWxsZXJSb3dFbGVtZW50LmNsYXNzTmFtZSA9ICJmaWxsZXIi
OwotCi0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlclRhYmxlRWxlbWVu
dCk7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Njcm9sbENvbnRhaW5lckVs
ZW1lbnQpOwotCi0gICAgaWYgKHByZWZlcnJlZENvbHVtbk9yZGVyKSB7Ci0gICAgICAgIGZvciAo
dmFyIGNvbHVtbklkZW50aWZpZXIgb2YgcHJlZmVycmVkQ29sdW1uT3JkZXIpCi0gICAgICAgICAg
ICB0aGlzLmluc2VydENvbHVtbihjb2x1bW5JZGVudGlmaWVyLCBjb2x1bW5zRGF0YVtjb2x1bW5J
ZGVudGlmaWVyXSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRp
ZmllciBpbiBjb2x1bW5zRGF0YSkKLSAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q29sdW1uKGNvbHVt
bklkZW50aWZpZXIsIGNvbHVtbnNEYXRhW2NvbHVtbklkZW50aWZpZXJdKTsKLSAgICB9Ci0KLSAg
ICB0aGlzLl9nZW5lcmF0ZVNvcnRJbmRpY2F0b3JJbWFnZXNJZk5lZWRlZCgpOwotfQorICAgIGNv
bnN0cnVjdG9yKGNvbHVtbnNEYXRhLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxiYWNrLCBwcmVm
ZXJyZWRDb2x1bW5PcmRlcikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5FdmVudCA9IHsKLSAgICBEaWRMYXlvdXQ6ICJkYXRhZ3JpZC1kaWQtbGF5b3V0
IiwKLSAgICBTb3J0Q2hhbmdlZDogImRhdGFncmlkLXNvcnQtY2hhbmdlZCIsCi0gICAgU2VsZWN0
ZWROb2RlQ2hhbmdlZDogImRhdGFncmlkLXNlbGVjdGVkLW5vZGUtY2hhbmdlZCIsCi0gICAgRXhw
YW5kZWROb2RlOiAiZGF0YWdyaWQtZXhwYW5kZWQtbm9kZSIsCi0gICAgQ29sbGFwc2VkTm9kZTog
ImRhdGFncmlkLWNvbGxhcHNlZC1ub2RlIgotfTsKKyAgICAgICAgdGhpcy5jb2x1bW5zID0gbmV3
IE1hcDsKKyAgICAgICAgdGhpcy5vcmRlcmVkQ29sdW1ucyA9IFtdOwogCi1XZWJJbnNwZWN0b3Iu
RGF0YUdyaWQuU29ydE9yZGVyID0gewotICAgIEluZGV0ZXJtaW5hdGU6ICJkYXRhLWdyaWQtc29y
dC1vcmRlci1pbmRldGVybWluYXRlIiwKLSAgICBBc2NlbmRpbmc6ICJkYXRhLWdyaWQtc29ydC1v
cmRlci1hc2NlbmRpbmciLAotICAgIERlc2NlbmRpbmc6ICJkYXRhLWdyaWQtc29ydC1vcmRlci1k
ZXNjZW5kaW5nIgotfTsKKyAgICAgICAgdGhpcy5fc29ydENvbHVtbklkZW50aWZpZXIgPSBudWxs
OworICAgICAgICB0aGlzLl9zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9y
ZGVyLkluZGV0ZXJtaW5hdGU7CiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZC5QcmV2aW91c0NvbHVt
bk9yZGluYWxTeW1ib2wgPSBTeW1ib2woInByZXZpb3VzLWNvbHVtbi1vcmRpbmFsIik7Ci1XZWJJ
bnNwZWN0b3IuRGF0YUdyaWQuTmV4dENvbHVtbk9yZGluYWxTeW1ib2wgPSBTeW1ib2woIm5leHQt
Y29sdW1uLW9yZGluYWwiKTsKKyAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOworICAgICAgICB0
aGlzLnNlbGVjdGVkTm9kZSA9IG51bGw7CisgICAgICAgIHRoaXMuZXhwYW5kTm9kZXNXaGVuQXJy
b3dpbmcgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5yb290ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5o
YXNDaGlsZHJlbiA9IGZhbHNlOworICAgICAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZTsKKyAgICAg
ICAgdGhpcy5yZXZlYWxlZCA9IHRydWU7CisgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsK
KyAgICAgICAgdGhpcy5kYXRhR3JpZCA9IHRoaXM7CisgICAgICAgIHRoaXMuaW5kZW50V2lkdGgg
PSAxNTsKKyAgICAgICAgdGhpcy5yZXNpemVycyA9IFtdOworICAgICAgICB0aGlzLl9jb2x1bW5X
aWR0aHNJbml0aWFsaXplZCA9IGZhbHNlOwogCi1XZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydENv
bHVtbkFzY2VuZGluZ1N0eWxlQ2xhc3NOYW1lID0gInNvcnQtYXNjZW5kaW5nIjsKLVdlYkluc3Bl
Y3Rvci5EYXRhR3JpZC5Tb3J0Q29sdW1uRGVzY2VuZGluZ1N0eWxlQ2xhc3NOYW1lID0gInNvcnQt
ZGVzY2VuZGluZyI7Ci1XZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydGFibGVDb2x1bW5TdHlsZUNs
YXNzTmFtZSA9ICJzb3J0YWJsZSI7CisgICAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gImRh
dGEtZ3JpZCI7CisgICAgICAgIHRoaXMuZWxlbWVudC50YWJJbmRleCA9IDA7CisgICAgICAgIHRo
aXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fa2V5RG93bi5iaW5k
KHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jb3B5SGFuZGxlciA9IHRoaXM7
CisKKyAgICAgICAgdGhpcy5faGVhZGVyVGFibGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgidGFibGUiKTsKKyAgICAgICAgdGhpcy5faGVhZGVyVGFibGVFbGVtZW50LmNsYXNzTmFt
ZSA9ICJoZWFkZXIiOworICAgICAgICB0aGlzLl9oZWFkZXJUYWJsZUNvbHVtbkdyb3VwRWxlbWVu
dCA9IHRoaXMuX2hlYWRlclRhYmxlRWxlbWVudC5jcmVhdGVDaGlsZCgiY29sZ3JvdXAiKTsKKyAg
ICAgICAgdGhpcy5faGVhZGVyVGFibGVCb2R5RWxlbWVudCA9IHRoaXMuX2hlYWRlclRhYmxlRWxl
bWVudC5jcmVhdGVDaGlsZCgidGJvZHkiKTsKKyAgICAgICAgdGhpcy5faGVhZGVyVGFibGVSb3dF
bGVtZW50ID0gdGhpcy5faGVhZGVyVGFibGVCb2R5RWxlbWVudC5jcmVhdGVDaGlsZCgidHIiKTsK
KyAgICAgICAgdGhpcy5faGVhZGVyVGFibGVDZWxsRWxlbWVudHMgPSBuZXcgTWFwOworCisgICAg
ICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5jbGFzc05hbWUg
PSAiZGF0YS1jb250YWluZXIiOworCisgICAgICAgIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQgPSB0
aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJ0YWJsZSIpOworICAgICAg
ICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmNsYXNzTmFtZSA9ICJkYXRhIjsKKworICAgICAgICB0
aGlzLl9kYXRhVGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMu
X21vdXNlRG93bkluRGF0YVRhYmxlLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9kYXRhVGFi
bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xpY2tJbkRhdGFUYWJs
ZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2NvbnRleHRNZW51SW5EYXRhVGFibGUuYmluZCh0
aGlzKSwgdHJ1ZSk7CisKKyAgICAgICAgLy8gRklYTUU6IEFkZCBhIGNyZWF0ZUNhbGxiYWNrIHdo
aWNoIGlzIGRpZmZlcmVudCBmcm9tIGVkaXRDYWxsYmFjayBhbmQgaGFzIGRpZmZlcmVudAorICAg
ICAgICAvLyBiZWhhdmlvciB3aGVuIGNyZWF0aW5nIGEgbmV3IG5vZGUuCisgICAgICAgIGlmIChl
ZGl0Q2FsbGJhY2spIHsKKyAgICAgICAgICAgIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLl9vbmRibGNsaWNrLmJpbmQodGhpcyksIGZhbHNl
KTsKKyAgICAgICAgICAgIHRoaXMuX2VkaXRDYWxsYmFjayA9IGVkaXRDYWxsYmFjazsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoZGVsZXRlQ2FsbGJhY2spCisgICAgICAgICAgICB0aGlzLl9kZWxl
dGVDYWxsYmFjayA9IGRlbGV0ZUNhbGxiYWNrOwogCi1XZWJJbnNwZWN0b3IuRGF0YUdyaWQuY3Jl
YXRlU29ydGFibGVEYXRhR3JpZCA9IGZ1bmN0aW9uKGNvbHVtbk5hbWVzLCB2YWx1ZXMpCi17Ci0g
ICAgdmFyIG51bUNvbHVtbnMgPSBjb2x1bW5OYW1lcy5sZW5ndGg7Ci0gICAgaWYgKCFudW1Db2x1
bW5zKQotICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgIHZhciBjb2x1bW5zRGF0YSA9IHt9Owot
ICAgIGZvciAodmFyIGNvbHVtbk5hbWUgb2YgY29sdW1uTmFtZXMpIHsKLSAgICAgICAgY29sdW1u
c0RhdGFbY29sdW1uTmFtZV0gPSB7Ci0gICAgICAgICAgICB3aWR0aDogY29sdW1uTmFtZS5sZW5n
dGgsCi0gICAgICAgICAgICB0aXRsZTogY29sdW1uTmFtZSwKLSAgICAgICAgICAgIHNvcnRhYmxl
OiB0cnVlLAotICAgICAgICB9OwotICAgIH0KKyAgICAgICAgdGhpcy5fZGF0YVRhYmxlQ29sdW1u
R3JvdXBFbGVtZW50ID0gdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2xvbmVO
b2RlKHRydWUpOworICAgICAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudCk7CisKKyAgICAgICAgLy8gVGhpcyBlbGVt
ZW50IGlzIHVzZWQgYnkgRGF0YUdyaWROb2RlcyB0byBtYW5pcHVsYXRlIHRhYmxlIHJvd3MgYW5k
IGNlbGxzLgorICAgICAgICB0aGlzLmRhdGFUYWJsZUJvZHlFbGVtZW50ID0gdGhpcy5fZGF0YVRh
YmxlRWxlbWVudC5jcmVhdGVDaGlsZCgidGJvZHkiKTsKKyAgICAgICAgdGhpcy5fZmlsbGVyUm93
RWxlbWVudCA9IHRoaXMuZGF0YVRhYmxlQm9keUVsZW1lbnQuY3JlYXRlQ2hpbGQoInRyIik7Cisg
ICAgICAgIHRoaXMuX2ZpbGxlclJvd0VsZW1lbnQuY2xhc3NOYW1lID0gImZpbGxlciI7CisKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlclRhYmxlRWxlbWVudCk7
CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zY3JvbGxDb250YWluZXJF
bGVtZW50KTsKIAotICAgIHZhciBkYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQo
Y29sdW1uc0RhdGEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb2x1bW5OYW1lcyk7Ci0gICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoIC8gbnVtQ29sdW1uczsgKytpKSB7Ci0gICAg
ICAgIHZhciBkYXRhID0ge307Ci0gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29sdW1uTmFt
ZXMubGVuZ3RoOyArK2opCi0gICAgICAgICAgICBkYXRhW2NvbHVtbk5hbWVzW2pdXSA9IHZhbHVl
c1tudW1Db2x1bW5zICogaSArIGpdOworICAgICAgICBpZiAocHJlZmVycmVkQ29sdW1uT3JkZXIp
IHsKKyAgICAgICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgb2YgcHJlZmVycmVkQ29s
dW1uT3JkZXIpCisgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRDb2x1bW4oY29sdW1uSWRlbnRp
ZmllciwgY29sdW1uc0RhdGFbY29sdW1uSWRlbnRpZmllcl0pOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBjb2x1bW5zRGF0YSkKKyAg
ICAgICAgICAgICAgICB0aGlzLmluc2VydENvbHVtbihjb2x1bW5JZGVudGlmaWVyLCBjb2x1bW5z
RGF0YVtjb2x1bW5JZGVudGlmaWVyXSk7CisgICAgICAgIH0KIAotICAgICAgICB2YXIgbm9kZSA9
IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKGRhdGEsIGZhbHNlKTsKLSAgICAgICAgZGF0
YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU29ydEluZGlj
YXRvckltYWdlc0lmTmVlZGVkKCk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gc29ydERhdGFHcmlk
KCkKKyAgICBzdGF0aWMgY3JlYXRlU29ydGFibGVEYXRhR3JpZChjb2x1bW5OYW1lcywgdmFsdWVz
KQogICAgIHsKLSAgICAgICAgdmFyIHNvcnRDb2x1bW5JZGVudGlmaWVyID0gZGF0YUdyaWQuc29y
dENvbHVtbklkZW50aWZpZXI7CisgICAgICAgIHZhciBudW1Db2x1bW5zID0gY29sdW1uTmFtZXMu
bGVuZ3RoOworICAgICAgICBpZiAoIW51bUNvbHVtbnMpCisgICAgICAgICAgICByZXR1cm4gbnVs
bDsKIAotICAgICAgICB2YXIgY29sdW1uSXNOdW1lcmljID0gdHJ1ZTsKLSAgICAgICAgZm9yICh2
YXIgbm9kZSBvZiBkYXRhR3JpZC5jaGlsZHJlbikgewotICAgICAgICAgICAgdmFyIHZhbHVlID0g
ZGF0YUdyaWQudGV4dEZvckRhdGFHcmlkTm9kZUNvbHVtbihub2RlLCBzb3J0Q29sdW1uSWRlbnRp
Zmllcik7Ci0gICAgICAgICAgICBpZiAoaXNOYU4oTnVtYmVyKHZhbHVlKSkpCi0gICAgICAgICAg
ICAgICAgY29sdW1uSXNOdW1lcmljID0gZmFsc2U7CisgICAgICAgIHZhciBjb2x1bW5zRGF0YSA9
IHt9OworICAgICAgICBmb3IgKHZhciBjb2x1bW5OYW1lIG9mIGNvbHVtbk5hbWVzKSB7CisgICAg
ICAgICAgICBjb2x1bW5zRGF0YVtjb2x1bW5OYW1lXSA9IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogY29sdW1uTmFtZS5sZW5ndGgsCisgICAgICAgICAgICAgICAgdGl0bGU6IGNvbHVtbk5hbWUs
CisgICAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsCisgICAgICAgICAgICB9OwogICAgICAg
ICB9CiAKLSAgICAgICAgZnVuY3Rpb24gY29tcGFyYXRvcihkYXRhR3JpZE5vZGUxLCBkYXRhR3Jp
ZE5vZGUyKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgaXRlbTEgPSBkYXRhR3JpZC50ZXh0
Rm9yRGF0YUdyaWROb2RlQ29sdW1uKGRhdGFHcmlkTm9kZTEsIHNvcnRDb2x1bW5JZGVudGlmaWVy
KTsKLSAgICAgICAgICAgIHZhciBpdGVtMiA9IGRhdGFHcmlkLnRleHRGb3JEYXRhR3JpZE5vZGVD
b2x1bW4oZGF0YUdyaWROb2RlMiwgc29ydENvbHVtbklkZW50aWZpZXIpOwotCi0gICAgICAgICAg
ICB2YXIgY29tcGFyaXNvbjsKLSAgICAgICAgICAgIGlmIChjb2x1bW5Jc051bWVyaWMpIHsKLSAg
ICAgICAgICAgICAgICB2YXIgbnVtYmVyMSA9IHBhcnNlRmxvYXQoaXRlbTEpOwotICAgICAgICAg
ICAgICAgIHZhciBudW1iZXIyID0gcGFyc2VGbG9hdChpdGVtMik7Ci0gICAgICAgICAgICAgICAg
Y29tcGFyaXNvbiA9IG51bWJlcjEgPCBudW1iZXIyID8gLTEgOiAobnVtYmVyMSA+IG51bWJlcjIg
PyAxIDogMCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb21wYXJpc29u
ID0gaXRlbTEgPCBpdGVtMiA/IC0xIDogKGl0ZW0xID4gaXRlbTIgPyAxIDogMCk7Ci0KLSAgICAg
ICAgICAgIHJldHVybiBjb21wYXJpc29uOworICAgICAgICB2YXIgZGF0YUdyaWQgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnNEYXRhLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29s
dW1uTmFtZXMpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGggLyBu
dW1Db2x1bW5zOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBkYXRhID0ge307CisgICAgICAgICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbHVtbk5hbWVzLmxlbmd0aDsgKytqKQorICAgICAgICAg
ICAgICAgIGRhdGFbY29sdW1uTmFtZXNbal1dID0gdmFsdWVzW251bUNvbHVtbnMgKiBpICsgal07
CisKKyAgICAgICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUo
ZGF0YSwgZmFsc2UpOworICAgICAgICAgICAgZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBkYXRhR3JpZC5zb3J0Tm9kZXMoY29tcGFyYXRvcik7Ci0gICAg
fQorICAgICAgICBmdW5jdGlvbiBzb3J0RGF0YUdyaWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgc29ydENvbHVtbklkZW50aWZpZXIgPSBkYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmll
cjsKIAotICAgIGRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LkV2ZW50LlNvcnRDaGFuZ2VkLCBzb3J0RGF0YUdyaWQsIHRoaXMpOworICAgICAgICAgICAgdmFy
IGNvbHVtbklzTnVtZXJpYyA9IHRydWU7CisgICAgICAgICAgICBmb3IgKHZhciBub2RlIG9mIGRh
dGFHcmlkLmNoaWxkcmVuKSB7CisgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZGF0YUdyaWQu
dGV4dEZvckRhdGFHcmlkTm9kZUNvbHVtbihub2RlLCBzb3J0Q29sdW1uSWRlbnRpZmllcik7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzTmFOKE51bWJlcih2YWx1ZSkpKQorICAgICAgICAgICAgICAg
ICAgICBjb2x1bW5Jc051bWVyaWMgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KIAotICAgIGRhdGFH
cmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5n
OwotICAgIGRhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyID0gY29sdW1uTmFtZXNbMF07Cisg
ICAgICAgICAgICBmdW5jdGlvbiBjb21wYXJhdG9yKGRhdGFHcmlkTm9kZTEsIGRhdGFHcmlkTm9k
ZTIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0xID0gZGF0YUdyaWQu
dGV4dEZvckRhdGFHcmlkTm9kZUNvbHVtbihkYXRhR3JpZE5vZGUxLCBzb3J0Q29sdW1uSWRlbnRp
Zmllcik7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0yID0gZGF0YUdyaWQudGV4dEZvckRhdGFH
cmlkTm9kZUNvbHVtbihkYXRhR3JpZE5vZGUyLCBzb3J0Q29sdW1uSWRlbnRpZmllcik7CiAKLSAg
ICByZXR1cm4gZGF0YUdyaWQ7Ci19CisgICAgICAgICAgICAgICAgdmFyIGNvbXBhcmlzb247Cisg
ICAgICAgICAgICAgICAgaWYgKGNvbHVtbklzTnVtZXJpYykgeworICAgICAgICAgICAgICAgICAg
ICB2YXIgbnVtYmVyMSA9IHBhcnNlRmxvYXQoaXRlbTEpOworICAgICAgICAgICAgICAgICAgICB2
YXIgbnVtYmVyMiA9IHBhcnNlRmxvYXQoaXRlbTIpOworICAgICAgICAgICAgICAgICAgICBjb21w
YXJpc29uID0gbnVtYmVyMSA8IG51bWJlcjIgPyAtMSA6IChudW1iZXIxID4gbnVtYmVyMiA/IDEg
OiAwKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY29tcGFy
aXNvbiA9IGl0ZW0xIDwgaXRlbTIgPyAtMSA6IChpdGVtMSA+IGl0ZW0yID8gMSA6IDApOworCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmlzb247CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGRhdGFHcmlkLnNvcnROb2Rlcyhjb21wYXJhdG9yKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50
LlNvcnRDaGFuZ2VkLCBzb3J0RGF0YUdyaWQsIHRoaXMpOworCisgICAgICAgIGRhdGFHcmlkLnNv
cnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOworICAg
ICAgICBkYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9IGNvbHVtbk5hbWVzWzBdOworCisg
ICAgICAgIHJldHVybiBkYXRhR3JpZDsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZC5w
cm90b3R5cGUgPSB7CiAgICAgZ2V0IHJlZnJlc2hDYWxsYmFjaygpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVmcmVzaENhbGxiYWNrOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJl
ZnJlc2hDYWxsYmFjayhyZWZyZXNoQ2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9yZWZy
ZXNoQ2FsbGJhY2sgPSByZWZyZXNoQ2FsbGJhY2s7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
c29ydE9yZGVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3J0T3JkZXI7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBzZXQgc29ydE9yZGVyKG9yZGVyKQogICAgIHsKQEAgLTIxNCwxMiAr
MTk2LDEyIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHNv
cnRIZWFkZXJDZWxsRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5Tb3J0Q29sdW1uRGVzY2VuZGluZ1N0eWxlQ2xhc3NOYW1lLCB0aGlzLl9zb3J0T3JkZXIgPT09
IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuRGVzY2VuZGluZyk7CiAKICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50
LlNvcnRDaGFuZ2VkKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzb3J0Q29sdW1uSWRlbnRp
ZmllcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc29ydENvbHVtbklkZW50aWZpZXI7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc29ydENvbHVtbklkZW50aWZpZXIoY29sdW1uSWRl
bnRpZmllcikKICAgICB7CkBAIC0yNDUsMTcgKzIyNywxNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNvcnRDaGFuZ2VkKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9vbmRibGNsaWNrOiBmdW5jdGlvbihldmVudCkKKyAgICBfb25k
YmxjbGljayhldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lZGl0aW5nIHx8IHRoaXMu
X2VkaXRpbmdOb2RlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3N0YXJ0
RWRpdGluZyhldmVudC50YXJnZXQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0YXJ0RWRpdGlu
Z05vZGVBdENvbHVtbkluZGV4OiBmdW5jdGlvbihub2RlLCBjb2x1bW5JbmRleCkKKyAgICBfc3Rh
cnRFZGl0aW5nTm9kZUF0Q29sdW1uSW5kZXgobm9kZSwgY29sdW1uSW5kZXgpCiAgICAgewogICAg
ICAgICBjb25zb2xlLmFzc2VydChub2RlLCAiSW52YWxpZCBhcmd1bWVudDogbXVzdCBwcm92aWRl
IERhdGFHcmlkTm9kZSB0byBlZGl0LiIpOwogCkBAIC0yNjYsOSArMjQ4LDkgQEAgV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9l
ZGl0aW5nTm9kZS5fZWxlbWVudC5jaGlsZHJlbltjb2x1bW5JbmRleF07CiAgICAgICAgIFdlYklu
c3BlY3Rvci5zdGFydEVkaXRpbmcoZWxlbWVudCwgdGhpcy5fc3RhcnRFZGl0aW5nQ29uZmlnKGVs
ZW1lbnQpKTsKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQo
ZWxlbWVudCwgMCwgZWxlbWVudCwgMSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RhcnRFZGl0
aW5nOiBmdW5jdGlvbih0YXJnZXQpCisgICAgX3N0YXJ0RWRpdGluZyh0YXJnZXQpCiAgICAgewog
ICAgICAgICB2YXIgZWxlbWVudCA9IHRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVO
YW1lKCJ0ZCIpOwogICAgICAgICBpZiAoIWVsZW1lbnQpCkBAIC0yODksMTQgKzI3MSwxNCBAQCBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3Iu
c3RhcnRFZGl0aW5nKGVsZW1lbnQsIHRoaXMuX3N0YXJ0RWRpdGluZ0NvbmZpZyhlbGVtZW50KSk7
CiAKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoZWxlbWVu
dCwgMCwgZWxlbWVudCwgMSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RhcnRFZGl0aW5nQ29u
ZmlnOiBmdW5jdGlvbihlbGVtZW50KQorICAgIF9zdGFydEVkaXRpbmdDb25maWcoZWxlbWVudCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkVkaXRpbmdDb25maWcodGhp
cy5fZWRpdGluZ0NvbW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVkLmJp
bmQodGhpcyksIGVsZW1lbnQudGV4dENvbnRlbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Vk
aXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQsIG9sZFRleHQsIGNvbnRl
eHQsIG1vdmVEaXJlY3Rpb24pCisgICAgX2VkaXRpbmdDb21taXR0ZWQoZWxlbWVudCwgbmV3VGV4
dCwgb2xkVGV4dCwgY29udGV4dCwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIHZhciBj
b2x1bW5JZGVudGlmaWVyID0gZWxlbWVudC5fX2NvbHVtbklkZW50aWZpZXI7CiAgICAgICAgIHZh
ciBjb2x1bW5JbmRleCA9IHRoaXMub3JkZXJlZENvbHVtbnMuaW5kZXhPZihjb2x1bW5JZGVudGlm
aWVyKTsKQEAgLTM0NywxNiArMzI5LDE2IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgdmFyIHRleHREaWRDaGFuZ2UgPSB0ZXh0QmVmb3JlRWRpdGluZy50
cmltKCkgIT09IG5ld1RleHQudHJpbSgpOwogICAgICAgICBtb3ZlVG9OZXh0Q2VsbC5jYWxsKHRo
aXMsIHRleHREaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX2VkaXRpbmdDYW5jZWxs
ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgX2VkaXRpbmdDYW5jZWxsZWQoZWxlbWVudCkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VkaXRpbmdOb2RlLmVsZW1lbnQgPT09
IGVsZW1lbnQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgidHIiKSk7CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9lZGl0aW5nOwogICAgICAgICB0aGlzLl9lZGl0aW5nTm9kZSA9IG51bGw7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhdXRvU2l6ZUNvbHVtbnM6IGZ1bmN0aW9uKG1pblBlcmNl
bnQsIG1heFBlcmNlbnQsIG1heERlc2NlbnRMZXZlbCkKKyAgICBhdXRvU2l6ZUNvbHVtbnMobWlu
UGVyY2VudCwgbWF4UGVyY2VudCwgbWF4RGVzY2VudExldmVsKQogICAgIHsKICAgICAgICAgaWYg
KG1pblBlcmNlbnQpCiAgICAgICAgICAgICBtaW5QZXJjZW50ID0gTWF0aC5taW4obWluUGVyY2Vu
dCwgTWF0aC5mbG9vcigxMDAgLyB0aGlzLm9yZGVyZWRDb2x1bW5zLmxlbmd0aCkpOwpAQCAtNDIx
LDkgKzQwMyw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBjb2x1bW5bImVsZW1lbnQiXS5zdHlsZS53aWR0aCA9IHdpZHRoc1tpZGVudGlmaWVyXSAr
ICIlIjsKICAgICAgICAgdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAg
ICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGluc2VydENv
bHVtbjogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgY29sdW1uRGF0YSwgaW5zZXJ0aW9uSW5k
ZXgpCisgICAgaW5zZXJ0Q29sdW1uKGNvbHVtbklkZW50aWZpZXIsIGNvbHVtbkRhdGEsIGluc2Vy
dGlvbkluZGV4KQogICAgIHsKICAgICAgICAgaWYgKGluc2VydGlvbkluZGV4ID09PSB1bmRlZmlu
ZWQpCiAgICAgICAgICAgICBpbnNlcnRpb25JbmRleCA9IHRoaXMub3JkZXJlZENvbHVtbnMubGVu
Z3RoOwpAQCAtNTE1LDkgKzQ5Nyw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgaWYgKGNvbHVtblsiaGlkZGVuIl0pCiAgICAgICAgICAgICB0aGlzLl9o
aWRlQ29sdW1uKGNvbHVtbklkZW50aWZpZXIpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3Zl
Q29sdW1uOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAgIHJlbW92ZUNvbHVtbihjb2x1
bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5jb2x1bW5z
Lmhhcyhjb2x1bW5JZGVudGlmaWVyKSk7CiAgICAgICAgIHZhciByZW1vdmVkQ29sdW1uID0gdGhp
cy5jb2x1bW5zLmdldChjb2x1bW5JZGVudGlmaWVyKTsKQEAgLTU0OSw5ICs1MzEsOSBAQCBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIGZvciAodmFyIGNoaWxk
IG9mIHRoaXMuY2hpbGRyZW4pCiAgICAgICAgICAgICBjaGlsZC5yZWZyZXNoKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZW51bWVyYXRlQ2hpbGRyZW46IGZ1bmN0aW9uKHJvb3ROb2RlLCByZXN1
bHQsIG1heExldmVsKQorICAgIF9lbnVtZXJhdGVDaGlsZHJlbihyb290Tm9kZSwgcmVzdWx0LCBt
YXhMZXZlbCkKICAgICB7CiAgICAgICAgIGlmICghcm9vdE5vZGUucm9vdCkKICAgICAgICAgICAg
IHJlc3VsdC5wdXNoKHJvb3ROb2RlKTsKQEAgLTU2MCw3ICs1NDIsNyBAQCBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvb3RO
b2RlLmNoaWxkcmVuLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5fZW51bWVyYXRlQ2hp
bGRyZW4ocm9vdE5vZGUuY2hpbGRyZW5baV0sIHJlc3VsdCwgbWF4TGV2ZWwgLSAxKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFVwZGF0ZXMgdGhlIHdp
ZHRocyBvZiB0aGUgdGFibGUsIGluY2x1ZGluZyB0aGUgcG9zaXRpb25zIG9mIHRoZSBjb2x1bW4K
ICAgICAvLyByZXNpemVycy4KQEAgLTU3Miw3ICs1NTQsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlID0gewogICAgIC8vCiAgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiBpcyBub3Qg
Y2FsbGVkIGFmdGVyIHRoZSBEYXRhR3JpZCBpcyBhdHRhY2hlZCB0byBpdHMKICAgICAvLyBwYXJl
bnQgZWxlbWVudCwgdGhlbiB0aGUgRGF0YUdyaWQncyBjb2x1bW5zIHdpbGwgbm90IGJlIHJlc2l6
YWJsZS4KLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQog
ICAgIHsKICAgICAgICAgLy8gRG8gbm90IGF0dGVtcHQgdG8gdXNlIG9mZnNldGVzIGlmIHdlJ3Jl
IG5vdCBhdHRhY2hlZCB0byB0aGUgZG9jdW1lbnQgdHJlZSB5ZXQuCiAgICAgICAgIGlmICghdGhp
cy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgJiYgdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoKSB7
CkBAIC02MDEsOSArNTgzLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICB0aGlzLl9wb3NpdGlvblJlc2l6ZXJFbGVtZW50cygpOwogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuRGlk
TGF5b3V0KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNvbHVtbldpZHRoc01hcDogZnVuY3Rpb24o
KQorICAgIGNvbHVtbldpZHRoc01hcCgpCiAgICAgewogICAgICAgICB2YXIgcmVzdWx0ID0ge307
CiAgICAgICAgIGZvciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1ucykg
ewpAQCAtNjExLDkgKzU5Myw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXN1bHRbY29sdW1uSWRlbnRpZmllcl0gPSBwYXJzZUZsb2F0KHdpZHRo
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCisgICAgfQogCi0g
ICAgYXBwbHlDb2x1bW5XaWR0aHNNYXA6IGZ1bmN0aW9uKGNvbHVtbldpZHRoc01hcCkKKyAgICBh
cHBseUNvbHVtbldpZHRoc01hcChjb2x1bW5XaWR0aHNNYXApCiAgICAgewogICAgICAgICBmb3Ig
KHZhciBbaWRlbnRpZmllciwgY29sdW1uXSBvZiB0aGlzLmNvbHVtbnMpIHsKICAgICAgICAgICAg
IHZhciB3aWR0aCA9IChjb2x1bW5XaWR0aHNNYXBbaWRlbnRpZmllcl0gfHwgMCkgKyAiJSI7CkBA
IC02MjMsMTkgKzYwNSwxOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAKICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9pc0NvbHVtblZpc2libGU6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIpCisgICAg
X2lzQ29sdW1uVmlzaWJsZShjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0dXJu
ICF0aGlzLmNvbHVtbnMuZ2V0KGNvbHVtbklkZW50aWZpZXIpWyJoaWRkZW4iXTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9zaG93Q29sdW1uOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAg
IF9zaG93Q29sdW1uKGNvbHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAgICBkZWxldGUgdGhp
cy5jb2x1bW5zLmdldChjb2x1bW5JZGVudGlmaWVyKVsiaGlkZGVuIl07Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfaGlkZUNvbHVtbjogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAgICBfaGlk
ZUNvbHVtbihjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgdmFyIGNvbHVtbiA9IHRo
aXMuY29sdW1ucy5nZXQoY29sdW1uSWRlbnRpZmllcik7CiAgICAgICAgIGNvbHVtblsiaGlkZGVu
Il0gPSB0cnVlOwpAQCAtNjQ0LDI0ICs2MjYsMjQgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgY29sdW1uRWxlbWVudC5zdHlsZS53aWR0aCA9IDA7CiAKICAg
ICAgICAgdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBzY3JvbGxDb250YWluZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc1Njcm9s
bGVkVG9MYXN0Um93OiBmdW5jdGlvbigpCisgICAgaXNTY3JvbGxlZFRvTGFzdFJvdygpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5pc1Njcm9sbGVk
VG9Cb3R0b20oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNjcm9sbFRvTGFzdFJvdzogZnVuY3Rp
b24oKQorICAgIHNjcm9sbFRvTGFzdFJvdygpCiAgICAgewogICAgICAgICB0aGlzLl9zY3JvbGxD
b250YWluZXJFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQu
c2Nyb2xsSGVpZ2h0IC0gdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5vZmZzZXRIZWlnaHQ7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9zaXRpb25SZXNpemVyRWxlbWVudHM6IGZ1bmN0aW9u
KCkKKyAgICBfcG9zaXRpb25SZXNpemVyRWxlbWVudHMoKQogICAgIHsKICAgICAgICAgdmFyIGxl
ZnQgPSAwOwogICAgICAgICB2YXIgcHJldmlvdXNSZXNpemVyID0gbnVsbDsKQEAgLTY5OCw5ICs2
ODAsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB9CiAg
ICAgICAgIGlmIChwcmV2aW91c1Jlc2l6ZXIpCiAgICAgICAgICAgICBwcmV2aW91c1Jlc2l6ZXJb
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLk5leHRDb2x1bW5PcmRpbmFsU3ltYm9sXSA9IHRoaXMub3Jk
ZXJlZENvbHVtbnMubGVuZ3RoIC0gMTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFBsYWNlaG9s
ZGVyTm9kZTogZnVuY3Rpb24oKQorICAgIGFkZFBsYWNlaG9sZGVyTm9kZSgpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5wbGFjZWhvbGRlck5vZGUpCiAgICAgICAgICAgICB0aGlzLnBsYWNlaG9s
ZGVyTm9kZS5tYWtlTm9ybWFsKCk7CkBAIC03MTAsMTQgKzY5MiwxNCBAQCBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZW1wdHlEYXRhW2lkZW50aWZpZXJd
ID0gIiI7CiAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJOb2RlID0gbmV3IFdlYkluc3BlY3Rvci5Q
bGFjZWhvbGRlckRhdGFHcmlkTm9kZShlbXB0eURhdGEpOwogICAgICAgICB0aGlzLmFwcGVuZENo
aWxkKHRoaXMucGxhY2Vob2xkZXJOb2RlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGFwcGVuZENo
aWxkOiBmdW5jdGlvbihjaGlsZCkKKyAgICBhcHBlbmRDaGlsZChjaGlsZCkKICAgICB7CiAgICAg
ICAgIHRoaXMuaW5zZXJ0Q2hpbGQoY2hpbGQsIHRoaXMuY2hpbGRyZW4ubGVuZ3RoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGluc2VydENoaWxkOiBmdW5jdGlvbihjaGlsZCwgaW5kZXgpCisgICAg
aW5zZXJ0Q2hpbGQoY2hpbGQsIGluZGV4KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
Y2hpbGQpOwogICAgICAgICBpZiAoIWNoaWxkKQpAQCAtNzU0LDkgKzczNiw5IEBAIFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQp
CiAgICAgICAgICAgICBjaGlsZC5fYXR0YWNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1v
dmVDaGlsZDogZnVuY3Rpb24oY2hpbGQpCisgICAgcmVtb3ZlQ2hpbGQoY2hpbGQpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChjaGlsZCk7CiAgICAgICAgIGlmICghY2hpbGQpCkBAIC03
ODUsOSArNzY3LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxzZTsKIAogICAgICAgICBjb25zb2xlLmFzc2Vy
dCghY2hpbGQuaXNQbGFjZWhvbGRlck5vZGUsICJTaG91bGRuJ3QgZGVsZXRlIHRoZSBwbGFjZWhv
bGRlciBub2RlLiIpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlQ2hpbGRyZW46IGZ1bmN0
aW9uKCkKKyAgICByZW1vdmVDaGlsZHJlbigpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBjaGls
ZCA9IHRoaXMuY2hpbGRyZW5baV07CkBAIC04MDIsOSArNzg0LDkgQEAgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmNoaWxkcmVuID0gW107CiAgICAg
ICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92
ZUNoaWxkcmVuUmVjdXJzaXZlOiBmdW5jdGlvbigpCisgICAgcmVtb3ZlQ2hpbGRyZW5SZWN1cnNp
dmUoKQogICAgIHsKICAgICAgICAgdmFyIGNoaWxkcmVuVG9SZW1vdmUgPSB0aGlzLmNoaWxkcmVu
OwogCkBAIC04MjgsMjIgKzgxMCwyMiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOwotICAgIH0sCisg
ICAgfQogCi0gICAgc29ydE5vZGVzOiBmdW5jdGlvbihjb21wYXJhdG9yKQorICAgIHNvcnROb2Rl
cyhjb21wYXJhdG9yKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NvcnROb2Rlc1JlcXVlc3RJ
ZCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zb3J0Tm9kZXNSZXF1ZXN0
SWQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NvcnROb2Rlc0NhbGxiYWNr
LmJpbmQodGhpcywgY29tcGFyYXRvcikpOwotICAgIH0sCisgICAgfQogCi0gICAgc29ydE5vZGVz
SW1tZWRpYXRlbHk6IGZ1bmN0aW9uKGNvbXBhcmF0b3IpCisgICAgc29ydE5vZGVzSW1tZWRpYXRl
bHkoY29tcGFyYXRvcikKICAgICB7CiAgICAgICAgIHRoaXMuX3NvcnROb2Rlc0NhbGxiYWNrKGNv
bXBhcmF0b3IpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NvcnROb2Rlc0NhbGxiYWNrOiBmdW5j
dGlvbihjb21wYXJhdG9yKQorICAgIF9zb3J0Tm9kZXNDYWxsYmFjayhjb21wYXJhdG9yKQogICAg
IHsKICAgICAgICAgZnVuY3Rpb24gY29tcGFyYXRvcldyYXBwZXIoYVJvdywgYlJvdykKICAgICAg
ICAgewpAQCAtODg5LDkgKzg3MSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBwcmV2aW91c1NpYmxpbmdOb2RlLm5leHRTaWJsaW5nID0gbnVsbDsK
IAogICAgICAgICB0Ym9keS5hcHBlbmRDaGlsZChmaWxsZXJSb3dFbGVtZW50KTsgLy8gV2UgZXhw
ZWN0IHRvIGZpbmQgYSBmaWxsZXIgcm93IHdoZW4gYXR0YWNoaW5nIG5vZGVzLgotICAgIH0sCisg
ICAgfQogCi0gICAgX2tleURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9rZXlEb3duKGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkTm9kZSB8fCBldmVudC5zaGlmdEtl
eSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXkgfHwgdGhpcy5fZWRpdGluZykKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTk2MCw0MiArOTQyLDQyIEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwog
ICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgIH0KLSAgICB9LAor
ICAgIH0KIAotICAgIGV4cGFuZDogZnVuY3Rpb24oKQorICAgIGV4cGFuZCgpCiAgICAgewogICAg
ICAgICAvLyBUaGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nLgotICAgIH0sCisgICAgfQogCi0g
ICAgY29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICBjb2xsYXBzZSgpCiAgICAgewogICAgICAgICAv
LyBUaGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nLgotICAgIH0sCisgICAgfQogCi0gICAgcmV2
ZWFsOiBmdW5jdGlvbigpCisgICAgcmV2ZWFsKCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgaXMg
dGhlIHJvb3QsIGRvIG5vdGhpbmcuCi0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxBbmRTZWxl
Y3Q6IGZ1bmN0aW9uKCkKKyAgICByZXZlYWxBbmRTZWxlY3QoKQogICAgIHsKICAgICAgICAgLy8g
VGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGluZy4KLSAgICB9LAorICAgIH0KIAotICAgIGRhdGFH
cmlkTm9kZUZyb21Ob2RlOiBmdW5jdGlvbih0YXJnZXQpCisgICAgZGF0YUdyaWROb2RlRnJvbU5v
ZGUodGFyZ2V0KQogICAgIHsKICAgICAgICAgdmFyIHJvd0VsZW1lbnQgPSB0YXJnZXQuZW5jbG9z
aW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgidHIiKTsKICAgICAgICAgcmV0dXJuIHJvd0VsZW1l
bnQgJiYgcm93RWxlbWVudC5fZGF0YUdyaWROb2RlOwotICAgIH0sCisgICAgfQogCi0gICAgZGF0
YUdyaWROb2RlRnJvbVBvaW50OiBmdW5jdGlvbih4LCB5KQorICAgIGRhdGFHcmlkTm9kZUZyb21Q
b2ludCh4LCB5KQogICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9kYXRhVGFibGVFbGVt
ZW50Lm93bmVyRG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KTsKICAgICAgICAgdmFyIHJv
d0VsZW1lbnQgPSBub2RlLmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoInRyIik7CiAg
ICAgICAgIHJldHVybiByb3dFbGVtZW50ICYmIHJvd0VsZW1lbnQuX2RhdGFHcmlkTm9kZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9oZWFkZXJDZWxsQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2hlYWRlckNlbGxDbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGNlbGwgPSBl
dmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgidGgiKTsKICAgICAg
ICAgaWYgKCFjZWxsIHx8ICFjZWxsLmNvbHVtbklkZW50aWZpZXIgfHwgIWNlbGwuY2xhc3NMaXN0
LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0YWJsZUNvbHVtblN0eWxlQ2xhc3NO
YW1lKSkKQEAgLTEwMDksMjcgKzk5MSwyNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuc29ydE9yZGVyID0gV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLlNvcnRPcmRlci5Bc2NlbmRpbmc7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
dGhpcy5zb3J0Q29sdW1uSWRlbnRpZmllciA9IGNsaWNrZWRDb2x1bW5JZGVudGlmaWVyOwotICAg
IH0sCisgICAgfQogCi0gICAgX21vdXNlb3ZlckNvbHVtbkNvbGxhcHNlcjogZnVuY3Rpb24oZXZl
bnQpCisgICAgX21vdXNlb3ZlckNvbHVtbkNvbGxhcHNlcihldmVudCkKICAgICB7CiAgICAgICAg
IHZhciBjZWxsID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUo
InRoIik7CiAgICAgICAgIGlmICghY2VsbCB8fCAhY2VsbC5jb2xsYXBzZXNHcm91cCkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoIm1vdXNlLW92ZXIt
Y29sbGFwc2VyIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91c2VvdXRDb2x1bW5Db2xsYXBz
ZXI6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZW91dENvbHVtbkNvbGxhcHNlcihldmVudCkK
ICAgICB7CiAgICAgICAgIHZhciBjZWxsID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNl
bGZXaXRoTm9kZU5hbWUoInRoIik7CiAgICAgICAgIGlmICghY2VsbCB8fCAhY2VsbC5jb2xsYXBz
ZXNHcm91cCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjZWxsLmNsYXNzTGlzdC5y
ZW1vdmUoIm1vdXNlLW92ZXItY29sbGFwc2VyIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xp
Y2tJbkNvbHVtbkNvbGxhcHNlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NsaWNrSW5Db2x1bW5D
b2xsYXBzZXIoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgY2VsbCA9IGV2ZW50LnRhcmdldC5l
bmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0aCIpOwogICAgICAgICBpZiAoIWNlbGwg
fHwgIWNlbGwuY29sbGFwc2VzR3JvdXApCkBAIC0xMDM5LDkgKzEwMjEsOSBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgIH0sCisgICAgfQogCi0g
ICAgY29sbGFwc2VDb2x1bW5Hcm91cDogZnVuY3Rpb24oY29sdW1uR3JvdXApCisgICAgY29sbGFw
c2VDb2x1bW5Hcm91cChjb2x1bW5Hcm91cCkKICAgICB7CiAgICAgICAgIHZhciBjb2xsYXBzZXJD
b2x1bW5JZGVudGlmaWVyID0gbnVsbDsKICAgICAgICAgZm9yICh2YXIgW2lkZW50aWZpZXIsIGNv
bHVtbl0gb2YgdGhpcy5jb2x1bW5zKSB7CkBAIC0xMDU3LDkgKzEwMzksOSBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBjZWxsID0gdGhpcy5faGVh
ZGVyVGFibGVDZWxsRWxlbWVudHMuZ2V0KGNvbGxhcHNlckNvbHVtbklkZW50aWZpZXIpOwogICAg
ICAgICB0aGlzLl9jb2xsYXBzZUNvbHVtbkdyb3VwV2l0aENlbGwoY2VsbCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfY29sbGFwc2VDb2x1bW5Hcm91cFdpdGhDZWxsOiBmdW5jdGlvbihjZWxsKQor
ICAgIF9jb2xsYXBzZUNvbHVtbkdyb3VwV2l0aENlbGwoY2VsbCkKICAgICB7CiAgICAgICAgIHZh
ciBjb2x1bW5zV2lsbENvbGxhcHNlID0gY2VsbC5jbGFzc0xpc3QudG9nZ2xlKCJjb2xsYXBzZWQi
KTsKIApAQCAtMTA3NiwzNCArMTA1OCwzNCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlID0gewogICAgICAgICAgICAgY29sbGFwc2VyQnV0dG9uLnRpdGxlID0gY29sdW1uc1dpbGxD
b2xsYXBzZSA/IHRoaXMuX2NvbGxhcHNlckJ1dHRvbkV4cGFuZENvbHVtbnNUb29sVGlwKCkgOiB0
aGlzLl9jb2xsYXBzZXJCdXR0b25Db2xsYXBzZUNvbHVtbnNUb29sVGlwKCk7CiAKICAgICAgICAg
dGhpcy5kaWRUb2dnbGVDb2x1bW5Hcm91cChjZWxsLmNvbGxhcHNlc0dyb3VwLCBjb2x1bW5zV2ls
bENvbGxhcHNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb2xsYXBzZXJCdXR0b25Db2xsYXBz
ZUNvbHVtbnNUb29sVGlwOiBmdW5jdGlvbigpCisgICAgX2NvbGxhcHNlckJ1dHRvbkNvbGxhcHNl
Q29sdW1uc1Rvb2xUaXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29sbGFwc2UgY29sdW1ucyIpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbGxhcHNl
ckJ1dHRvbkV4cGFuZENvbHVtbnNUb29sVGlwOiBmdW5jdGlvbigpCisgICAgX2NvbGxhcHNlckJ1
dHRvbkV4cGFuZENvbHVtbnNUb29sVGlwKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkV4cGFuZCBjb2x1bW5zIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB3
aWxsVG9nZ2xlQ29sdW1uR3JvdXA6IGZ1bmN0aW9uKGNvbHVtbkdyb3VwLCB3aWxsQ29sbGFwc2Up
CisgICAgd2lsbFRvZ2dsZUNvbHVtbkdyb3VwKGNvbHVtbkdyb3VwLCB3aWxsQ29sbGFwc2UpCiAg
ICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KLSAg
ICB9LAorICAgIH0KIAotICAgIGRpZFRvZ2dsZUNvbHVtbkdyb3VwOiBmdW5jdGlvbihjb2x1bW5H
cm91cCwgZGlkQ29sbGFwc2UpCisgICAgZGlkVG9nZ2xlQ29sdW1uR3JvdXAoY29sdW1uR3JvdXAs
IGRpZENvbGxhcHNlKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nl
cyBpZiBuZWVkZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBoZWFkZXJUYWJsZUhlYWRlcjogZnVu
Y3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAgICBoZWFkZXJUYWJsZUhlYWRlcihjb2x1bW5JZGVu
dGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlclRhYmxlQ2VsbEVsZW1l
bnRzLmdldChjb2x1bW5JZGVudGlmaWVyKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9nZW5lcmF0
ZVNvcnRJbmRpY2F0b3JJbWFnZXNJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIF9nZW5lcmF0ZVNv
cnRJbmRpY2F0b3JJbWFnZXNJZk5lZWRlZCgpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLl9nZW5lcmF0ZWRTb3J0SW5kaWNhdG9ySW1hZ2VzKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTExNiw5ICsxMDk4LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBnZW5lcmF0ZUNvbG9yZWRJbWFnZXNGb3JDU1MoIkltYWdlcy9T
b3J0SW5kaWNhdG9yRG93bkFycm93LnN2ZyIsIHNwZWNpZmljYXRpb25zLCA5LCA4LCAiZGF0YS1n
cmlkLXNvcnQtaW5kaWNhdG9yLWRvd24tIik7CiAgICAgICAgIGdlbmVyYXRlQ29sb3JlZEltYWdl
c0ZvckNTUygiSW1hZ2VzL1NvcnRJbmRpY2F0b3JVcEFycm93LnN2ZyIsIHNwZWNpZmljYXRpb25z
LCA5LCA4LCAiZGF0YS1ncmlkLXNvcnQtaW5kaWNhdG9yLXVwLSIpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX21vdXNlRG93bkluRGF0YVRhYmxlOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VE
b3duSW5EYXRhVGFibGUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZ3JpZE5vZGUgPSB0aGlz
LmRhdGFHcmlkTm9kZUZyb21Ob2RlKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIGlmICghZ3JpZE5v
ZGUgfHwgIWdyaWROb2RlLnNlbGVjdGFibGUpCkBAIC0xMTM0LDkgKzExMTYsOSBAQCBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGdyaWROb2RlLnNl
bGVjdCgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGdyaWROb2RlLnNlbGVjdCgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRleHRNZW51SW5EYXRhVGFibGU6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9jb250ZXh0TWVudUluRGF0YVRhYmxlKGV2ZW50KQogICAgIHsKICAgICAgICAg
dmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAK
QEAgLTExNjIsOSArMTE0NCw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfY2xpY2tJbkRhdGFUYWJsZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NsaWNrSW5E
YXRhVGFibGUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZ3JpZE5vZGUgPSB0aGlzLmRhdGFH
cmlkTm9kZUZyb21Ob2RlKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIGlmICghZ3JpZE5vZGUgfHwg
IWdyaWROb2RlLmhhc0NoaWxkcmVuKQpAQCAtMTE4NCwxNSArMTE2NiwxNSBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIGdyaWROb2RlLmV4cGFuZCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0
ZXh0Rm9yRGF0YUdyaWROb2RlQ29sdW1uOiBmdW5jdGlvbihub2RlLCBjb2x1bW5JZGVudGlmaWVy
KQorICAgIHRleHRGb3JEYXRhR3JpZE5vZGVDb2x1bW4obm9kZSwgY29sdW1uSWRlbnRpZmllcikK
ICAgICB7CiAgICAgICAgIHZhciBkYXRhID0gbm9kZS5kYXRhW2NvbHVtbklkZW50aWZpZXJdOwog
ICAgICAgICByZXR1cm4gKGRhdGEgaW5zdGFuY2VvZiBOb2RlID8gZGF0YS50ZXh0Q29udGVudCA6
IGRhdGEpIHx8ICIiOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvcHlUZXh0Rm9yRGF0YUdyaWRO
b2RlOiBmdW5jdGlvbihub2RlKQorICAgIF9jb3B5VGV4dEZvckRhdGFHcmlkTm9kZShub2RlKQog
ICAgIHsKICAgICAgICAgdmFyIGZpZWxkcyA9IFtdOwogICAgICAgICBmb3IgKHZhciBpZGVudGlm
aWVyIG9mIG5vZGUuZGF0YUdyaWQub3JkZXJlZENvbHVtbnMpCkBAIC0xMjAwLDE1ICsxMTgyLDE1
IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIHRh
YlNlcGFyYXRlZFZhbHVlcyA9IGZpZWxkcy5qb2luKCJcdCIpOwogICAgICAgICByZXR1cm4gdGFi
U2VwYXJhdGVkVmFsdWVzOwotICAgIH0sCisgICAgfQogCi0gICAgaGFuZGxlQmVmb3JlQ29weUV2
ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVCZWZvcmVDb3B5RXZlbnQoZXZlbnQpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGUgJiYgd2luZG93LmdldFNlbGVjdGlv
bigpLmlzQ29sbGFwc2VkKQogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGhhbmRsZUNvcHlFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAg
aGFuZGxlQ29weUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVk
Tm9kZSB8fCAhd2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTIxNyw5ICsxMTk5LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L3BsYWlu
IiwgY29weVRleHQpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb3B5Um93OiBm
dW5jdGlvbih0YXJnZXQpCisgICAgX2NvcHlSb3codGFyZ2V0KQogICAgIHsKICAgICAgICAgdmFy
IGdyaWROb2RlID0gdGhpcy5kYXRhR3JpZE5vZGVGcm9tTm9kZSh0YXJnZXQpOwogICAgICAgICBp
ZiAoIWdyaWROb2RlKQpAQCAtMTIyNywyOSArMTIwOSwyOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBjb3B5VGV4dCA9IHRoaXMuX2NvcHlUZXh0
Rm9yRGF0YUdyaWROb2RlKGdyaWROb2RlKTsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNvcHlUZXh0KGNvcHlUZXh0KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXNpemVNZXRo
b2QoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXNpemVNZXRob2QpCiAgICAgICAgICAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlJlc2l6ZU1ldGhvZC5OZWFyZXN0OwogICAg
ICAgICByZXR1cm4gdGhpcy5fcmVzaXplTWV0aG9kOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHJlc2l6ZU1ldGhvZChtZXRob2QpCiAgICAgewogICAgICAgICB0aGlzLl9yZXNpemVNZXRob2Qg
PSBtZXRob2Q7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNpemVyRHJhZ1N0YXJ0ZWQ6IGZ1bmN0
aW9uKHJlc2l6ZXIpCisgICAgcmVzaXplckRyYWdTdGFydGVkKHJlc2l6ZXIpCiAgICAgewogICAg
ICAgICBpZiAoIXJlc2l6ZXJbV2ViSW5zcGVjdG9yLkRhdGFHcmlkLk5leHRDb2x1bW5PcmRpbmFs
U3ltYm9sXSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBBYm9ydCB0aGUgZHJhZzsKIAog
ICAgICAgICB0aGlzLl9jdXJyZW50UmVzaXplciA9IHJlc2l6ZXI7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICByZXNpemVyRHJhZ2dpbmc6IGZ1bmN0aW9uKHJlc2l6ZXIsIHBvc2l0aW9uRGVsdGEpCisg
ICAgcmVzaXplckRyYWdnaW5nKHJlc2l6ZXIsIHBvc2l0aW9uRGVsdGEpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChyZXNpemVyID09PSB0aGlzLl9jdXJyZW50UmVzaXplciwgcmVzaXpl
ciwgdGhpcy5fY3VycmVudFJlc2l6ZXIpOwogICAgICAgICBpZiAocmVzaXplciAhPSB0aGlzLl9j
dXJyZW50UmVzaXplcikKQEAgLTEyOTYsOSArMTI3OCw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Bvc2l0aW9uUmVzaXplckVsZW1lbnRzKCk7
CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5EaWRMYXlvdXQpOwot
ICAgIH0sCisgICAgfQogCi0gICAgcmVzaXplckRyYWdFbmRlZDogZnVuY3Rpb24ocmVzaXplcikK
KyAgICByZXNpemVyRHJhZ0VuZGVkKHJlc2l6ZXIpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChyZXNpemVyID09PSB0aGlzLl9jdXJyZW50UmVzaXplciwgcmVzaXplciwgdGhpcy5fY3Vy
cmVudFJlc2l6ZXIpOwogICAgICAgICBpZiAocmVzaXplciAhPSB0aGlzLl9jdXJyZW50UmVzaXpl
cikKQEAgLTEzMDYsMTIgKzEyODgsMTYgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICB0aGlzLl9jdXJyZW50UmVzaXplciA9IG51bGw7CiAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5E
aWRMYXlvdXQpOwotICAgIH0sCi0KLSAgICBDb2x1bW5SZXNpemVQYWRkaW5nOiAxMCwKKyAgICB9
Cit9OwogCi0gICAgQ2VudGVyUmVzaXplck92ZXJCb3JkZXJBZGp1c3RtZW50OiAzLAotfQorV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50ID0geworICAgIERpZExheW91dDogImRhdGFncmlkLWRp
ZC1sYXlvdXQiLAorICAgIFNvcnRDaGFuZ2VkOiAiZGF0YWdyaWQtc29ydC1jaGFuZ2VkIiwKKyAg
ICBTZWxlY3RlZE5vZGVDaGFuZ2VkOiAiZGF0YWdyaWQtc2VsZWN0ZWQtbm9kZS1jaGFuZ2VkIiwK
KyAgICBFeHBhbmRlZE5vZGU6ICJkYXRhZ3JpZC1leHBhbmRlZC1ub2RlIiwKKyAgICBDb2xsYXBz
ZWROb2RlOiAiZGF0YWdyaWQtY29sbGFwc2VkLW5vZGUiCit9OwogCiBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQuUmVzaXplTWV0aG9kID0gewogICAgIE5lYXJlc3Q6ICJuZWFyZXN0IiwKQEAgLTEzMTks
MzkgKzEzMDUsNTYgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlJlc2l6ZU1ldGhvZCA9IHsKICAg
ICBMYXN0OiAibGFzdCIKIH07CiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuRGF0
YUdyaWQuU29ydE9yZGVyID0geworICAgIEluZGV0ZXJtaW5hdGU6ICJkYXRhLWdyaWQtc29ydC1v
cmRlci1pbmRldGVybWluYXRlIiwKKyAgICBBc2NlbmRpbmc6ICJkYXRhLWdyaWQtc29ydC1vcmRl
ci1hc2NlbmRpbmciLAorICAgIERlc2NlbmRpbmc6ICJkYXRhLWdyaWQtc29ydC1vcmRlci1kZXNj
ZW5kaW5nIgorfTsKKworV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlByZXZpb3VzQ29sdW1uT3JkaW5h
bFN5bWJvbCA9IFN5bWJvbCgicHJldmlvdXMtY29sdW1uLW9yZGluYWwiKTsKK1dlYkluc3BlY3Rv
ci5EYXRhR3JpZC5OZXh0Q29sdW1uT3JkaW5hbFN5bWJvbCA9IFN5bWJvbCgibmV4dC1jb2x1bW4t
b3JkaW5hbCIpOworCitXZWJJbnNwZWN0b3IuRGF0YUdyaWQuQ29sdW1uUmVzaXplUGFkZGluZyA9
IDEwOworV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkNlbnRlclJlc2l6ZXJPdmVyQm9yZGVyQWRqdXN0
bWVudCA9IDM7CiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkYXRhLCBo
YXNDaGlsZHJlbikKK1dlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0Q29sdW1uQXNjZW5kaW5nU3R5
bGVDbGFzc05hbWUgPSAic29ydC1hc2NlbmRpbmciOworV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNv
cnRDb2x1bW5EZXNjZW5kaW5nU3R5bGVDbGFzc05hbWUgPSAic29ydC1kZXNjZW5kaW5nIjsKK1dl
Ykluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0YWJsZUNvbHVtblN0eWxlQ2xhc3NOYW1lID0gInNvcnRh
YmxlIjsKKworV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZSA9IGNsYXNzIERhdGFHcmlkTm9kZSBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNl
OwotICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7Ci0gICAgdGhpcy5fY29weWFibGUgPSB0cnVl
OwotICAgIHRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7Ci0gICAgdGhpcy5fZGF0
YSA9IGRhdGEgfHwge307Ci0gICAgdGhpcy5oYXNDaGlsZHJlbiA9IGhhc0NoaWxkcmVuIHx8IGZh
bHNlOwotICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICB0aGlzLmRhdGFHcmlkID0gbnVsbDsK
LSAgICB0aGlzLnBhcmVudCA9IG51bGw7Ci0gICAgdGhpcy5wcmV2aW91c1NpYmxpbmcgPSBudWxs
OwotICAgIHRoaXMubmV4dFNpYmxpbmcgPSBudWxsOwotICAgIHRoaXMuZGlzY2xvc3VyZVRvZ2ds
ZVdpZHRoID0gMTA7Ci19Ci0KLVdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0g
eworICAgIGNvbnN0cnVjdG9yKGRhdGEsIGhhc0NoaWxkcmVuKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoKTsKKworICAgICAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9z
ZWxlY3RlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9jb3B5YWJsZSA9IHRydWU7CisgICAgICAg
IHRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7CisgICAgICAgIHRoaXMuX2RhdGEg
PSBkYXRhIHx8IHt9OworICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gaGFzQ2hpbGRyZW4gfHwg
ZmFsc2U7CisgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgdGhpcy5kYXRhR3Jp
ZCA9IG51bGw7CisgICAgICAgIHRoaXMucGFyZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5wcmV2
aW91c1NpYmxpbmcgPSBudWxsOworICAgICAgICB0aGlzLm5leHRTaWJsaW5nID0gbnVsbDsKKyAg
ICAgICAgdGhpcy5kaXNjbG9zdXJlVG9nZ2xlV2lkdGggPSAxMDsKKyAgICB9CisKICAgICBnZXQg
c2VsZWN0YWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gIXRoaXMuX2VsZW1lbnQgfHwgIXRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJoaWRkZW4iKTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBjb3B5YWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29weWFi
bGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29weWFibGUoeCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2NvcHlhYmxlID0geDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbGVtZW50KCkK
ICAgICB7CkBAIC0xMzc1LDE1ICsxMzc4LDE1IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUu
cHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuY3JlYXRlQ2VsbHMoKTsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVDZWxsczogZnVu
Y3Rpb24oKQorICAgIGNyZWF0ZUNlbGxzKCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGNvbHVt
bklkZW50aWZpZXIgb2YgdGhpcy5kYXRhR3JpZC5vcmRlcmVkQ29sdW1ucykKICAgICAgICAgICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVDZWxsKGNvbHVtbklkZW50aWZp
ZXIpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZnJlc2hJZk5lZWRlZDogZnVuY3Rpb24oKQor
ICAgIHJlZnJlc2hJZk5lZWRlZCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX25lZWRzUmVm
cmVzaCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzOTEsOSArMTM5NCw5IEBAIFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5fbmVl
ZHNSZWZyZXNoOwogCiAgICAgICAgIHRoaXMucmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCi0g
ICAgbmVlZHNSZWZyZXNoOiBmdW5jdGlvbigpCisgICAgbmVlZHNSZWZyZXNoKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX25lZWRzUmVmcmVzaCA9IHRydWU7CiAKQEAgLTE0MDQsMTggKzE0MDcsMTgg
QEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2NoZWR1bGVkUmVmcmVzaElkZW50aWZpZXIgPSByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5yZWZyZXNoLmJpbmQodGhpcykpOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBzZXQgZGF0YSh4KQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0
YSA9IHggfHwge307CiAgICAgICAgIHRoaXMubmVlZHNSZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgcmV2ZWFsZWQoKQogICAgIHsKQEAgLTE0MzQsNyArMTQzNyw3IEBAIFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3JldmVh
bGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgaGFzQ2hpbGRyZW4oeCkKICAgICB7CkBAIC0xNDU2LDEyICsxNDU5LDEyIEBAIFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICB7CiAgICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInBhcmVudCIsICJleHBhbmRlZCIpOwogICAg
ICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFzQ2hpbGRyZW4oKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2hhc0NoaWxkcmVuOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHJldmVhbGVkKHgpCiAgICAgewpAQCAtMTQ4MSw3ICsxNDg0LDcgQEAgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltpXS5y
ZXZlYWxlZCA9IHggJiYgdGhpcy5leHBhbmRlZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBk
ZXB0aCgpCiAgICAgewpAQCAtMTQ5Miw3ICsxNDk1LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX2RlcHRo
ID0gMDsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RlcHRoOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGxlZnRQYWRkaW5nKCkKICAgICB7CkBAIC0xNTAxLDI0ICsxNTA0LDI0IEBAIFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2xlZnRQYWRk
aW5nID0gdGhpcy5kZXB0aCAqIHRoaXMuZGF0YUdyaWQuaW5kZW50V2lkdGg7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9sZWZ0UGFkZGluZzsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzaG91bGRS
ZWZyZXNoQ2hpbGRyZW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3VsZFJlZnJl
c2hDaGlsZHJlbjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzaG91bGRSZWZyZXNoQ2hpbGRy
ZW4oeCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHg7CiAg
ICAgICAgIGlmICh4ICYmIHRoaXMuZXhwYW5kZWQpCiAgICAgICAgICAgICB0aGlzLmV4cGFuZCgp
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGVkKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zZWxlY3RlZDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzZWxlY3RlZCh4
KQogICAgIHsKQEAgLTE1MjYsMTIgKzE1MjksMTIgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9k
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnNlbGVjdCgpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICB0aGlzLmRlc2VsZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
ZXhwYW5kZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkOwotICAgIH0s
CisgICAgfQogCiAgICAgc2V0IGV4cGFuZGVkKHgpCiAgICAgewpAQCAtMTUzOSw5ICsxNTQyLDkg
QEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLmV4cGFuZCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLmNvbGxhcHNlKCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAgcmVmcmVzaCgp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnQgfHwgIXRoaXMuZGF0YUdyaWQpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0xNTU1LDE0ICsxNTU4LDE0IEBAIFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3Zl
Q2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5jcmVhdGVDZWxscygpOwotICAgIH0sCisgICAgfQog
Ci0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7
CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgotICAgIH0s
CisgICAgfQogCi0gICAgY3JlYXRlQ2VsbDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAg
ICBjcmVhdGVDZWxsKGNvbHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAgICB2YXIgY2VsbEVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwogICAgICAgICBjZWxsRWxlbWVu
dC5jbGFzc05hbWUgPSBjb2x1bW5JZGVudGlmaWVyICsgIi1jb2x1bW4iOwpAQCAtMTU4NywzMCAr
MTU5MCwzMCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBjZWxsRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAg
IGNyZWF0ZUNlbGxDb250ZW50OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAgIGNyZWF0
ZUNlbGxDb250ZW50KGNvbHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5kYXRhW2NvbHVtbklkZW50aWZpZXJdIHx8ICJcdTIwMGIiOyAvLyBaZXJvIHdpZHRoIHNwYWNl
IHRvIGtlZXAgdGhlIGNlbGwgZnJvbSBjb2xsYXBzaW5nLgotICAgIH0sCisgICAgfQogCi0gICAg
ZWxlbWVudFdpdGhDb2x1bW5JZGVudGlmaWVyOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQor
ICAgIGVsZW1lbnRXaXRoQ29sdW1uSWRlbnRpZmllcihjb2x1bW5JZGVudGlmaWVyKQogICAgIHsK
ICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5kYXRhR3JpZC5vcmRlcmVkQ29sdW1ucy5pbmRleE9m
KGNvbHVtbklkZW50aWZpZXIpOwogICAgICAgICBpZiAoaW5kZXggPT09IC0xKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2hpbGRyZW5b
aW5kZXhdOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gU2hhcmUgdGhlc2UgZnVuY3Rpb25zIHdp
dGggRGF0YUdyaWQuIFRoZXkgYXJlIHdyaXR0ZW4gdG8gd29yayB3aXRoIGEgRGF0YUdyaWROb2Rl
IHRoaXMgb2JqZWN0LgotICAgIGFwcGVuZENoaWxkOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlLmFwcGVuZENoaWxkLAotICAgIGluc2VydENoaWxkOiBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlLmluc2VydENoaWxkLAotICAgIHJlbW92ZUNoaWxkOiBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkLAotICAgIHJlbW92ZUNoaWxkcmVuOiBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuLAotICAgIHJlbW92ZUNo
aWxkcmVuUmVjdXJzaXZlOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNo
aWxkcmVuUmVjdXJzaXZlLAorICAgIGFwcGVuZENoaWxkKCkgeyByZXR1cm4gV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnByb3RvdHlwZS5hcHBlbmRDaGlsZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9
CisgICAgaW5zZXJ0Q2hpbGQoKSB7IHJldHVybiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlLmluc2VydENoaWxkLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KKyAgICByZW1vdmVDaGls
ZCgpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQu
YXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQorICAgIHJlbW92ZUNoaWxkcmVuKCkgeyByZXR1cm4g
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbi5hcHBseSh0aGlz
LCBhcmd1bWVudHMpOyB9CisgICAgcmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUoKSB7IHJldHVybiBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlLmFw
cGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KIAotICAgIF9yZWNhbGN1bGF0ZVNpYmxpbmdzOiBmdW5j
dGlvbihteUluZGV4KQorICAgIF9yZWNhbGN1bGF0ZVNpYmxpbmdzKG15SW5kZXgpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMucGFyZW50KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTYzMCw5
ICsxNjMzLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLm5leHRTaWJsaW5nID0gbmV4dENoaWxkOwogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIHRoaXMubmV4dFNpYmxpbmcgPSBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAg
Y29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICBjb2xsYXBzZSgpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fZWxlbWVudCkKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZSgiZXhwYW5kZWQiKTsKQEAgLTE2NDYsOSArMTY0OSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLmRhdGFHcmlkKQogICAgICAg
ICAgICAgdGhpcy5kYXRhR3JpZC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLkV2ZW50LkNvbGxhcHNlZE5vZGUsIHtkYXRhR3JpZE5vZGU6IHRoaXN9KTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGNvbGxhcHNlUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKCkKKyAgICBj
b2xsYXBzZVJlY3Vyc2l2ZWx5KCkKICAgICB7CiAgICAgICAgIHZhciBpdGVtID0gdGhpczsKICAg
ICAgICAgd2hpbGUgKGl0ZW0pIHsKQEAgLTE2NTYsOSArMTY1OSw5IEBAIFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGl0ZW0uY29sbGFwc2Uo
KTsKICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnRyYXZlcnNlTmV4dE5vZGUoZmFsc2UsIHRoaXMs
IHRydWUpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBleHBhbmQ6IGZ1bmN0aW9u
KCkKKyAgICBleHBhbmQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuIHx8
IHRoaXMuZXhwYW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjk0LDE4ICsxNjk3LDE4
IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIGlm
ICh0aGlzLmRhdGFHcmlkKQogICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LkV4cGFuZGVkTm9kZSwge2Rh
dGFHcmlkTm9kZTogdGhpc30pOwotICAgIH0sCisgICAgfQogCi0gICAgZXhwYW5kUmVjdXJzaXZl
bHk6IGZ1bmN0aW9uKCkKKyAgICBleHBhbmRSZWN1cnNpdmVseSgpCiAgICAgewogICAgICAgICB2
YXIgaXRlbSA9IHRoaXM7CiAgICAgICAgIHdoaWxlIChpdGVtKSB7CiAgICAgICAgICAgICBpdGVt
LmV4cGFuZCgpOwogICAgICAgICAgICAgaXRlbSA9IGl0ZW0udHJhdmVyc2VOZXh0Tm9kZShmYWxz
ZSwgdGhpcyk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbDogZnVuY3Rp
b24oKQorICAgIHJldmVhbCgpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudEFuY2VzdG9yID0g
dGhpcy5wYXJlbnQ7CiAgICAgICAgIHdoaWxlIChjdXJyZW50QW5jZXN0b3IgJiYgIWN1cnJlbnRB
bmNlc3Rvci5yb290KSB7CkBAIC0xNzE3LDkgKzE3MjAsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdy
aWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5lbGVtZW50LnNjcm9sbEludG9WaWV3
SWZOZWVkZWQoZmFsc2UpOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KCJyZXZlYWxlZCIpOwotICAgIH0sCisgICAgfQogCi0gICAgc2VsZWN0OiBmdW5jdGlvbihzdXBy
ZXNzU2VsZWN0ZWRFdmVudCkKKyAgICBzZWxlY3Qoc3VwcmVzc1NlbGVjdGVkRXZlbnQpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuZGF0YUdyaWQgfHwgIXRoaXMuc2VsZWN0YWJsZSB8fCB0aGlz
LnNlbGVjdGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTczNSwxNSArMTczOCwxNSBAQCBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXN1
cHJlc3NTZWxlY3RlZEV2ZW50KQogICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNo
YW5nZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsQW5kU2VsZWN0OiBmdW5jdGlvbigp
CisgICAgcmV2ZWFsQW5kU2VsZWN0KCkKICAgICB7CiAgICAgICAgIHRoaXMucmV2ZWFsKCk7CiAg
ICAgICAgIHRoaXMuc2VsZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkZXNlbGVjdDogZnVu
Y3Rpb24oc3VwcmVzc0Rlc2VsZWN0ZWRFdmVudCkKKyAgICBkZXNlbGVjdChzdXByZXNzRGVzZWxl
Y3RlZEV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkIHx8IHRoaXMuZGF0
YUdyaWQuc2VsZWN0ZWROb2RlICE9PSB0aGlzIHx8ICF0aGlzLnNlbGVjdGVkKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTc1Niw5ICsxNzU5LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9k
ZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCFzdXByZXNzRGVzZWxlY3RlZEV2ZW50KQog
ICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQpOwotICAgIH0sCisgICAg
fQogCi0gICAgdHJhdmVyc2VOZXh0Tm9kZTogZnVuY3Rpb24oc2tpcEhpZGRlbiwgc3RheVdpdGhp
biwgZG9udFBvcHVsYXRlLCBpbmZvKQorICAgIHRyYXZlcnNlTmV4dE5vZGUoc2tpcEhpZGRlbiwg
c3RheVdpdGhpbiwgZG9udFBvcHVsYXRlLCBpbmZvKQogICAgIHsKICAgICAgICAgaWYgKCFkb250
UG9wdWxhdGUgJiYgdGhpcy5oYXNDaGlsZHJlbikKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKCJwb3B1bGF0ZSIpOwpAQCAtMTc5MSw5ICsxNzk0LDkgQEAgV2ViSW5z
cGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bDsKIAogICAgICAgICByZXR1cm4gKCFza2lwSGlkZGVuIHx8IG5vZGUucmV2ZWFsZWQpID8gbm9k
ZS5uZXh0U2libGluZyA6IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmF2ZXJzZVByZXZp
b3VzTm9kZTogZnVuY3Rpb24oc2tpcEhpZGRlbiwgZG9udFBvcHVsYXRlKQorICAgIHRyYXZlcnNl
UHJldmlvdXNOb2RlKHNraXBIaWRkZW4sIGRvbnRQb3B1bGF0ZSkKICAgICB7CiAgICAgICAgIHZh
ciBub2RlID0gKCFza2lwSGlkZGVuIHx8IHRoaXMucmV2ZWFsZWQpID8gdGhpcy5wcmV2aW91c1Np
YmxpbmcgOiBudWxsOwogICAgICAgICBpZiAoIWRvbnRQb3B1bGF0ZSAmJiBub2RlICYmIG5vZGUu
aGFzQ2hpbGRyZW4pCkBAIC0xODEyLDkgKzE4MTUsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWRO
b2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJl
dHVybiB0aGlzLnBhcmVudDsKLSAgICB9LAorICAgIH0KIAotICAgIGlzRXZlbnRXaXRoaW5EaXNj
bG9zdXJlVHJpYW5nbGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGlzRXZlbnRXaXRoaW5EaXNjbG9z
dXJlVHJpYW5nbGUoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4p
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODI0LDkgKzE4MjcsOSBAQCBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgbGVmdCA9IGNl
bGwudG90YWxPZmZzZXRMZWZ0ICsgdGhpcy5sZWZ0UGFkZGluZzsKICAgICAgICAgcmV0dXJuIGV2
ZW50LnBhZ2VYID49IGxlZnQgJiYgZXZlbnQucGFnZVggPD0gbGVmdCArIHRoaXMuZGlzY2xvc3Vy
ZVRvZ2dsZVdpZHRoOwotICAgIH0sCisgICAgfQogCi0gICAgX2F0dGFjaDogZnVuY3Rpb24oKQor
ICAgIF9hdHRhY2goKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkIHx8IHRoaXMu
X2F0dGFjaGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTg1NCw5ICsxODU3LDkgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLmV4
cGFuZGVkKQogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxl
bmd0aDsgKytpKQogICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5baV0uX2F0dGFjaCgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2RldGFjaDogZnVuY3Rpb24oKQorICAgIF9kZXRhY2goKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9hdHRhY2hlZCkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTE4NjgsOSArMTg3MSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBl
ID0gewogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7
ICsraSkKICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5baV0uX2RldGFjaCgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgc2F2ZVBvc2l0aW9uOiBmdW5jdGlvbigpCisgICAgc2F2ZVBvc2l0aW9uKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zYXZlZFBvc2l0aW9uKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTg4Myw5ICsxODg2LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBwYXJlbnQ6IHRoaXMucGFyZW50LAogICAgICAgICAgICAg
aW5kZXg6IHRoaXMucGFyZW50LmNoaWxkcmVuLmluZGV4T2YodGhpcykKICAgICAgICAgfTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJlc3RvcmVQb3NpdGlvbjogZnVuY3Rpb24oKQorICAgIHJlc3Rv
cmVQb3NpdGlvbigpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3NhdmVkUG9zaXRpb24pCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0xODk1LDIzICsxODk4LDE5IEBAIFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zYXZlZFBv
c2l0aW9uOwogICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7Cit9OwogCiAvLyBVc2Vk
IHRvIGNyZWF0ZSBhIG5ldyB0YWJsZSByb3cgd2hlbiBlbnRlcmluZyBuZXcgZGF0YSBieSBlZGl0
aW5nIGNlbGxzLgotV2ViSW5zcGVjdG9yLlBsYWNlaG9sZGVyRGF0YUdyaWROb2RlID0gZnVuY3Rp
b24oZGF0YSkKK1dlYkluc3BlY3Rvci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZSA9IGNsYXNzIFBs
YWNlaG9sZGVyRGF0YUdyaWROb2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZQog
ewotICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBkYXRhLCBmYWxzZSk7
Ci0gICAgdGhpcy5pc1BsYWNlaG9sZGVyTm9kZSA9IHRydWU7Ci19Ci0KLVdlYkluc3BlY3Rvci5Q
bGFjZWhvbGRlckRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZSwKLSAgICBfX3Byb3RvX186IFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLAorICAgIGNvbnN0cnVjdG9yKGRhdGEpCisg
ICAgeworICAgICAgICBzdXBlcihkYXRhLCBmYWxzZSk7CisgICAgICAgIHRoaXMuaXNQbGFjZWhv
bGRlck5vZGUgPSB0cnVlOworICAgIH0KIAotICAgIG1ha2VOb3JtYWw6IGZ1bmN0aW9uKCkKKyAg
ICBtYWtlTm9ybWFsKCkKICAgICB7CiAgICAgICAgIHRoaXMuaXNQbGFjZWhvbGRlck5vZGUgPSBm
YWxzZTsKICAgICB9Ci19Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3
LmpzCmluZGV4IDk3ZmFlM2IyOWJhYzY5NWRkMGZkNDBjMjljY2VjYWJkNjQ3MmEwZjUuLjg0NDhi
MDRhYjM1MTRhYjk2NjI0M2Y0NThiYTFjZTZlMWU3NTkwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVGFibGVDb250ZW50Vmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRh
YmFzZVRhYmxlQ29udGVudFZpZXcuanMKQEAgLTg2LDcgKzg2LDcgQEAgV2ViSW5zcGVjdG9yLkRh
dGFiYXNlVGFibGVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIGhvdyB0byBz
b3J0IGFyYml0cmFyeSBjb2x1bW5zLgogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRy
ZW4oKTsKIAotICAgICAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQuY3JlYXRlU29ydGFibGVEYXRhR3JpZChjb2x1bW5OYW1lcywgdmFsdWVzKTsKKyAgICAgICAg
dGhpcy5fZGF0YUdyaWQgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY3JlYXRlU29ydGFibGVEYXRh
R3JpZChjb2x1bW5OYW1lcywgdmFsdWVzKTsKICAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCB8
fCAhdGhpcy5fZGF0YUdyaWQuZWxlbWVudCkgewogICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQg
PSB1bmRlZmluZWQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258009</attachid>
            <date>2015-08-01 09:35:46 -0700</date>
            <delta_ts>2015-08-03 15:16:47 -0700</delta_ts>
            <desc>PFR</desc>
            <filename>bug-147439-20150801093542.patch</filename>
            <type>text/plain</type>
            <size>110448</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3Njg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA0
ZmExNDEwMGNhNzkyMjdmOTYxMzNmNWNlYzNmOWExMDI3NWY3MDUxLi4wOTBlMTkwMDIxZmY1MDEx
ZjgwZWE0NmM0NDc0OGM1MjI2ZjIwZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxNS0wOC0wMSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBEYXRhR3JpZCBhbmQgRGF0
YUdyaWROb2RlIGNsYXNzZXMgdG8gRVM2IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsb25nIHRoZSB3YXksIGlubGluZSBhIGZldyBzdHls
ZSBjbGFzcyBuYW1lcy4KKworICAgICAgICBFbGlkZWQgbWVjaGFuaWNhbCBjaGFuZ2VzIGZyb20g
dGhlIENoYW5nZWxvZy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZURh
dGFHcmlkLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWQuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcuanM6
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VFbnRyeURhdGFH
cmlkTm9kZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyVHJlZURhdGFH
cmlkTm9kZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5l
RGF0YUdyaWQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGlu
ZURhdGFHcmlkTm9kZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0
RGF0YUdyaWQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Qcm9maWxlTm9kZURh
dGFHcmlkTm9kZS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0Zy
YW1lVGltZWxpbmVEYXRhR3JpZE5vZGUuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvU2NyaXB0VGltZWxpbmVEYXRhR3JpZC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUuanM6
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlkLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVEYXRhR3JpZE5vZGUuanM6IE1vdmUg
YSBmdW5jdGlvbiBkZWZpbml0aW9uIG91dAorICAgICAgICBvZiBhbiBlbHNlIGJyYW5jaCwgc2lu
Y2UgdGhpcyBpcyBub3QgYWxsb3dlZCBpbiBFUzYgc3RyaWN0IG1vZGUuCisKIDIwMTUtMDctMzEg
IEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IENvbnZlcnQgdGltZWxpbmUgdmlldyBjbGFzc2VzIHRvIEVTNiBjbGFzc2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01U
cmVlRGF0YUdyaWQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9ET01UcmVlRGF0YUdyaWQuanMKaW5kZXggYzQ0YzRiZjhmYTQ3Y2FmM2UwOWFjOGU2ODQ5MTlj
NTBjYjIzOTA4Zi4uNTc1YTk2MWU4NzBlOWRlNTk0YmE4NmM4MGI3ZDE2ZDM1ODYxNmVhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZURhdGFHcmlkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTVRyZWVEYXRhR3JpZC5qcwpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzMyArMjQsMzQgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZURhdGFHcmlk
ID0gZnVuY3Rpb24oKSB7Ci0gICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLmNhbGwodGhpcywgewot
ICAgICAgICBuYW1lOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vZGUiKSwgc29y
dGFibGU6IGZhbHNlIH0KLSAgICB9KTsKK1dlYkluc3BlY3Rvci5ET01UcmVlRGF0YUdyaWQgPSBj
bGFzcyBET01UcmVlRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQKK3sKKyAg
ICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcih7CisgICAgICAgICAgICBuYW1l
OiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vZGUiKSwgc29ydGFibGU6IGZhbHNl
IH0KKyAgICAgICAgfSk7CiAKLSAgICB0aGlzLl9wcmV2aW91c0hvdmVyZWRFbGVtZW50ID0gbnVs
bDsKKyAgICAgICAgdGhpcy5fcHJldmlvdXNIb3ZlcmVkRWxlbWVudCA9IG51bGw7CiAKLSAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaW5saW5lIiwgImRvbS10cmVlLWRhdGEtZ3JpZCIp
OworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaW5saW5lIiwgImRvbS10cmVl
LWRhdGEtZ3JpZCIpOwogCi0gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
bW92ZSIsIHRoaXMuX29ubW91c2Vtb3ZlLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9vbm1vdXNlb3V0LmJpbmQo
dGhpcyksIGZhbHNlKTsKLX07CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZW1vdmUiLCB0aGlzLl9vbm1vdXNlbW92ZS5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX29ubW91
c2VvdXQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIH0KIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVE
YXRhR3JpZC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5ET01U
cmVlRGF0YUdyaWQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlLAorICAgIC8vIFByaXZhdGUKIAotICAgIF9vbm1vdXNlbW92ZTogZnVuY3Rpb24oZXZlbnQp
CisgICAgX29ubW91c2Vtb3ZlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGdyaWROb2RlID0g
dGhpcy5kYXRhR3JpZE5vZGVGcm9tTm9kZShldmVudC50YXJnZXQpOwogICAgICAgICBpZiAoIWdy
aWROb2RlIHx8IHRoaXMuX3ByZXZpb3VzSG92ZXJlZEVsZW1lbnQgPT09IGdyaWROb2RlLmRvbU5v
ZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX3ByZXZpb3VzSG92ZXJlZEVs
ZW1lbnQgPSBncmlkTm9kZS5kb21Ob2RlOwogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1h
bmFnZXIuaGlnaGxpZ2h0RE9NTm9kZShncmlkTm9kZS5kb21Ob2RlLmlkKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9vbm1vdXNlb3V0OiBmdW5jdGlvbihldmVudCkgeworICAgIF9vbm1vdXNlb3V0
KGV2ZW50KSB7CiAgICAgICAgIGlmICghdGhpcy5fcHJldmlvdXNIb3ZlcmVkRWxlbWVudCkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhp
ZGVET01Ob2RlSGlnaGxpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkLmpzCmluZGV4IDgwMjhlODZkZDUwYmRiZTA0NGI2
NDg4OTM0M2NiM2Q4NzQwNDZkYjEuLjY1MWViYzI0MTI4ZGNmNThjZjI1MmVmZTAzODhmOTEyMmI3
YWYyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RhdGFHcmlkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RhdGFHcmlkLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE4MCArMjMsMTYyIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGZ1bmN0aW9uKGNv
bHVtbnNEYXRhLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxiYWNrLCBwcmVmZXJyZWRDb2x1bW5P
cmRlcikKK1dlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogewotICAgIHRoaXMuY29sdW1ucyA9IG5ldyBNYXA7Ci0gICAgdGhp
cy5vcmRlcmVkQ29sdW1ucyA9IFtdOwotCi0gICAgdGhpcy5fc29ydENvbHVtbklkZW50aWZpZXIg
PSBudWxsOwotICAgIHRoaXMuX3NvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0
T3JkZXIuSW5kZXRlcm1pbmF0ZTsKLQotICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICB0aGlz
LnNlbGVjdGVkTm9kZSA9IG51bGw7Ci0gICAgdGhpcy5leHBhbmROb2Rlc1doZW5BcnJvd2luZyA9
IGZhbHNlOwotICAgIHRoaXMucm9vdCA9IHRydWU7Ci0gICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZh
bHNlOwotICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlOwotICAgIHRoaXMucmV2ZWFsZWQgPSB0cnVl
OwotICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKLSAgICB0aGlzLmRhdGFHcmlkID0gdGhpczsK
LSAgICB0aGlzLmluZGVudFdpZHRoID0gMTU7Ci0gICAgdGhpcy5yZXNpemVycyA9IFtdOwotICAg
IHRoaXMuX2NvbHVtbldpZHRoc0luaXRpYWxpemVkID0gZmFsc2U7Ci0KLSAgICB0aGlzLmVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xh
c3NOYW1lID0gImRhdGEtZ3JpZCI7Ci0gICAgdGhpcy5lbGVtZW50LnRhYkluZGV4ID0gMDsKLSAg
ICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2tleURvd24u
YmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuZWxlbWVudC5jb3B5SGFuZGxlciA9IHRoaXM7
Ci0KLSAgICB0aGlzLl9oZWFkZXJUYWJsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJ0YWJsZSIpOwotICAgIHRoaXMuX2hlYWRlclRhYmxlRWxlbWVudC5jbGFzc05hbWUgPSAiaGVh
ZGVyIjsKLSAgICB0aGlzLl9oZWFkZXJUYWJsZUNvbHVtbkdyb3VwRWxlbWVudCA9IHRoaXMuX2hl
YWRlclRhYmxlRWxlbWVudC5jcmVhdGVDaGlsZCgiY29sZ3JvdXAiKTsKLSAgICB0aGlzLl9oZWFk
ZXJUYWJsZUJvZHlFbGVtZW50ID0gdGhpcy5faGVhZGVyVGFibGVFbGVtZW50LmNyZWF0ZUNoaWxk
KCJ0Ym9keSIpOwotICAgIHRoaXMuX2hlYWRlclRhYmxlUm93RWxlbWVudCA9IHRoaXMuX2hlYWRl
clRhYmxlQm9keUVsZW1lbnQuY3JlYXRlQ2hpbGQoInRyIik7Ci0gICAgdGhpcy5faGVhZGVyVGFi
bGVDZWxsRWxlbWVudHMgPSBuZXcgTWFwOwotCi0gICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3Njcm9sbENv
bnRhaW5lckVsZW1lbnQuY2xhc3NOYW1lID0gImRhdGEtY29udGFpbmVyIjsKLQotICAgIHRoaXMu
X2RhdGFUYWJsZUVsZW1lbnQgPSB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LmNyZWF0ZUNo
aWxkKCJ0YWJsZSIpOwotICAgIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQuY2xhc3NOYW1lID0gImRh
dGEiOwotCi0gICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCB0aGlzLl9tb3VzZURvd25JbkRhdGFUYWJsZS5iaW5kKHRoaXMpKTsKLSAgICB0aGlz
Ll9kYXRhVGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xpY2tJ
bkRhdGFUYWJsZS5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5fY29udGV4dE1lbnVJbkRhdGFUYWJsZS5i
aW5kKHRoaXMpLCB0cnVlKTsKLQotICAgIC8vIEZJWE1FOiBBZGQgYSBjcmVhdGVDYWxsYmFjayB3
aGljaCBpcyBkaWZmZXJlbnQgZnJvbSBlZGl0Q2FsbGJhY2sgYW5kIGhhcyBkaWZmZXJlbnQKLSAg
ICAvLyBiZWhhdmlvciB3aGVuIGNyZWF0aW5nIGEgbmV3IG5vZGUuCi0gICAgaWYgKGVkaXRDYWxs
YmFjaykgewotICAgICAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImRibGNsaWNrIiwgdGhpcy5fb25kYmxjbGljay5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgICAg
IHRoaXMuX2VkaXRDYWxsYmFjayA9IGVkaXRDYWxsYmFjazsKLSAgICB9Ci0gICAgaWYgKGRlbGV0
ZUNhbGxiYWNrKQotICAgICAgICB0aGlzLl9kZWxldGVDYWxsYmFjayA9IGRlbGV0ZUNhbGxiYWNr
OwotCi0gICAgdGhpcy5fZGF0YVRhYmxlQ29sdW1uR3JvdXBFbGVtZW50ID0gdGhpcy5faGVhZGVy
VGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2xvbmVOb2RlKHRydWUpOwotICAgIHRoaXMuX2RhdGFU
YWJsZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YVRhYmxlQ29sdW1uR3JvdXBFbGVtZW50
KTsKLQotICAgIC8vIFRoaXMgZWxlbWVudCBpcyB1c2VkIGJ5IERhdGFHcmlkTm9kZXMgdG8gbWFu
aXB1bGF0ZSB0YWJsZSByb3dzIGFuZCBjZWxscy4KLSAgICB0aGlzLmRhdGFUYWJsZUJvZHlFbGVt
ZW50ID0gdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5jcmVhdGVDaGlsZCgidGJvZHkiKTsKLSAgICB0
aGlzLl9maWxsZXJSb3dFbGVtZW50ID0gdGhpcy5kYXRhVGFibGVCb2R5RWxlbWVudC5jcmVhdGVD
aGlsZCgidHIiKTsKLSAgICB0aGlzLl9maWxsZXJSb3dFbGVtZW50LmNsYXNzTmFtZSA9ICJmaWxs
ZXIiOwotCi0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlclRhYmxlRWxl
bWVudCk7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Njcm9sbENvbnRhaW5l
ckVsZW1lbnQpOwotCi0gICAgaWYgKHByZWZlcnJlZENvbHVtbk9yZGVyKSB7Ci0gICAgICAgIGZv
ciAodmFyIGNvbHVtbklkZW50aWZpZXIgb2YgcHJlZmVycmVkQ29sdW1uT3JkZXIpCi0gICAgICAg
ICAgICB0aGlzLmluc2VydENvbHVtbihjb2x1bW5JZGVudGlmaWVyLCBjb2x1bW5zRGF0YVtjb2x1
bW5JZGVudGlmaWVyXSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9yICh2YXIgY29sdW1uSWRl
bnRpZmllciBpbiBjb2x1bW5zRGF0YSkKLSAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q29sdW1uKGNv
bHVtbklkZW50aWZpZXIsIGNvbHVtbnNEYXRhW2NvbHVtbklkZW50aWZpZXJdKTsKLSAgICB9Ci0K
LSAgICB0aGlzLl9nZW5lcmF0ZVNvcnRJbmRpY2F0b3JJbWFnZXNJZk5lZWRlZCgpOwotfQorICAg
IGNvbnN0cnVjdG9yKGNvbHVtbnNEYXRhLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxiYWNrLCBw
cmVmZXJyZWRDb2x1bW5PcmRlcikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3Bl
Y3Rvci5EYXRhR3JpZC5FdmVudCA9IHsKLSAgICBEaWRMYXlvdXQ6ICJkYXRhZ3JpZC1kaWQtbGF5
b3V0IiwKLSAgICBTb3J0Q2hhbmdlZDogImRhdGFncmlkLXNvcnQtY2hhbmdlZCIsCi0gICAgU2Vs
ZWN0ZWROb2RlQ2hhbmdlZDogImRhdGFncmlkLXNlbGVjdGVkLW5vZGUtY2hhbmdlZCIsCi0gICAg
RXhwYW5kZWROb2RlOiAiZGF0YWdyaWQtZXhwYW5kZWQtbm9kZSIsCi0gICAgQ29sbGFwc2VkTm9k
ZTogImRhdGFncmlkLWNvbGxhcHNlZC1ub2RlIgotfTsKKyAgICAgICAgdGhpcy5jb2x1bW5zID0g
bmV3IE1hcDsKKyAgICAgICAgdGhpcy5vcmRlcmVkQ29sdW1ucyA9IFtdOwogCi1XZWJJbnNwZWN0
b3IuRGF0YUdyaWQuU29ydE9yZGVyID0gewotICAgIEluZGV0ZXJtaW5hdGU6ICJkYXRhLWdyaWQt
c29ydC1vcmRlci1pbmRldGVybWluYXRlIiwKLSAgICBBc2NlbmRpbmc6ICJkYXRhLWdyaWQtc29y
dC1vcmRlci1hc2NlbmRpbmciLAotICAgIERlc2NlbmRpbmc6ICJkYXRhLWdyaWQtc29ydC1vcmRl
ci1kZXNjZW5kaW5nIgotfTsKKyAgICAgICAgdGhpcy5fc29ydENvbHVtbklkZW50aWZpZXIgPSBu
dWxsOworICAgICAgICB0aGlzLl9zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29y
dE9yZGVyLkluZGV0ZXJtaW5hdGU7CiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZC5QcmV2aW91c0Nv
bHVtbk9yZGluYWxTeW1ib2wgPSBTeW1ib2woInByZXZpb3VzLWNvbHVtbi1vcmRpbmFsIik7Ci1X
ZWJJbnNwZWN0b3IuRGF0YUdyaWQuTmV4dENvbHVtbk9yZGluYWxTeW1ib2wgPSBTeW1ib2woIm5l
eHQtY29sdW1uLW9yZGluYWwiKTsKKyAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOworICAgICAg
ICB0aGlzLnNlbGVjdGVkTm9kZSA9IG51bGw7CisgICAgICAgIHRoaXMuZXhwYW5kTm9kZXNXaGVu
QXJyb3dpbmcgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5yb290ID0gdHJ1ZTsKKyAgICAgICAgdGhp
cy5oYXNDaGlsZHJlbiA9IGZhbHNlOworICAgICAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZTsKKyAg
ICAgICAgdGhpcy5yZXZlYWxlZCA9IHRydWU7CisgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxz
ZTsKKyAgICAgICAgdGhpcy5kYXRhR3JpZCA9IHRoaXM7CisgICAgICAgIHRoaXMuaW5kZW50V2lk
dGggPSAxNTsKKyAgICAgICAgdGhpcy5yZXNpemVycyA9IFtdOworICAgICAgICB0aGlzLl9jb2x1
bW5XaWR0aHNJbml0aWFsaXplZCA9IGZhbHNlOwogCi1XZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29y
dENvbHVtbkFzY2VuZGluZ1N0eWxlQ2xhc3NOYW1lID0gInNvcnQtYXNjZW5kaW5nIjsKLVdlYklu
c3BlY3Rvci5EYXRhR3JpZC5Tb3J0Q29sdW1uRGVzY2VuZGluZ1N0eWxlQ2xhc3NOYW1lID0gInNv
cnQtZGVzY2VuZGluZyI7Ci1XZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydGFibGVDb2x1bW5TdHls
ZUNsYXNzTmFtZSA9ICJzb3J0YWJsZSI7CisgICAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0g
ImRhdGEtZ3JpZCI7CisgICAgICAgIHRoaXMuZWxlbWVudC50YWJJbmRleCA9IDA7CisgICAgICAg
IHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fa2V5RG93bi5i
aW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jb3B5SGFuZGxlciA9IHRo
aXM7CisKKyAgICAgICAgdGhpcy5faGVhZGVyVGFibGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidGFibGUiKTsKKyAgICAgICAgdGhpcy5faGVhZGVyVGFibGVFbGVtZW50LmNsYXNz
TmFtZSA9ICJoZWFkZXIiOworICAgICAgICB0aGlzLl9oZWFkZXJUYWJsZUNvbHVtbkdyb3VwRWxl
bWVudCA9IHRoaXMuX2hlYWRlclRhYmxlRWxlbWVudC5jcmVhdGVDaGlsZCgiY29sZ3JvdXAiKTsK
KyAgICAgICAgdGhpcy5faGVhZGVyVGFibGVCb2R5RWxlbWVudCA9IHRoaXMuX2hlYWRlclRhYmxl
RWxlbWVudC5jcmVhdGVDaGlsZCgidGJvZHkiKTsKKyAgICAgICAgdGhpcy5faGVhZGVyVGFibGVS
b3dFbGVtZW50ID0gdGhpcy5faGVhZGVyVGFibGVCb2R5RWxlbWVudC5jcmVhdGVDaGlsZCgidHIi
KTsKKyAgICAgICAgdGhpcy5faGVhZGVyVGFibGVDZWxsRWxlbWVudHMgPSBuZXcgTWFwOworCisg
ICAgICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5jbGFzc05h
bWUgPSAiZGF0YS1jb250YWluZXIiOworCisgICAgICAgIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQg
PSB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJ0YWJsZSIpOworICAg
ICAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmNsYXNzTmFtZSA9ICJkYXRhIjsKKworICAgICAg
ICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRo
aXMuX21vdXNlRG93bkluRGF0YVRhYmxlLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9kYXRh
VGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xpY2tJbkRhdGFU
YWJsZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2NvbnRleHRNZW51SW5EYXRhVGFibGUuYmlu
ZCh0aGlzKSwgdHJ1ZSk7CisKKyAgICAgICAgLy8gRklYTUU6IEFkZCBhIGNyZWF0ZUNhbGxiYWNr
IHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIGVkaXRDYWxsYmFjayBhbmQgaGFzIGRpZmZlcmVudAor
ICAgICAgICAvLyBiZWhhdmlvciB3aGVuIGNyZWF0aW5nIGEgbmV3IG5vZGUuCisgICAgICAgIGlm
IChlZGl0Q2FsbGJhY2spIHsKKyAgICAgICAgICAgIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLl9vbmRibGNsaWNrLmJpbmQodGhpcyksIGZh
bHNlKTsKKyAgICAgICAgICAgIHRoaXMuX2VkaXRDYWxsYmFjayA9IGVkaXRDYWxsYmFjazsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoZGVsZXRlQ2FsbGJhY2spCisgICAgICAgICAgICB0aGlzLl9k
ZWxldGVDYWxsYmFjayA9IGRlbGV0ZUNhbGxiYWNrOwogCi1XZWJJbnNwZWN0b3IuRGF0YUdyaWQu
Y3JlYXRlU29ydGFibGVEYXRhR3JpZCA9IGZ1bmN0aW9uKGNvbHVtbk5hbWVzLCB2YWx1ZXMpCi17
Ci0gICAgdmFyIG51bUNvbHVtbnMgPSBjb2x1bW5OYW1lcy5sZW5ndGg7Ci0gICAgaWYgKCFudW1D
b2x1bW5zKQotICAgICAgICByZXR1cm4gbnVsbDsKLQotICAgIHZhciBjb2x1bW5zRGF0YSA9IHt9
OwotICAgIGZvciAodmFyIGNvbHVtbk5hbWUgb2YgY29sdW1uTmFtZXMpIHsKLSAgICAgICAgY29s
dW1uc0RhdGFbY29sdW1uTmFtZV0gPSB7Ci0gICAgICAgICAgICB3aWR0aDogY29sdW1uTmFtZS5s
ZW5ndGgsCi0gICAgICAgICAgICB0aXRsZTogY29sdW1uTmFtZSwKLSAgICAgICAgICAgIHNvcnRh
YmxlOiB0cnVlLAotICAgICAgICB9OwotICAgIH0KKyAgICAgICAgdGhpcy5fZGF0YVRhYmxlQ29s
dW1uR3JvdXBFbGVtZW50ID0gdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2xv
bmVOb2RlKHRydWUpOworICAgICAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudCk7CisKKyAgICAgICAgLy8gVGhpcyBl
bGVtZW50IGlzIHVzZWQgYnkgRGF0YUdyaWROb2RlcyB0byBtYW5pcHVsYXRlIHRhYmxlIHJvd3Mg
YW5kIGNlbGxzLgorICAgICAgICB0aGlzLmRhdGFUYWJsZUJvZHlFbGVtZW50ID0gdGhpcy5fZGF0
YVRhYmxlRWxlbWVudC5jcmVhdGVDaGlsZCgidGJvZHkiKTsKKyAgICAgICAgdGhpcy5fZmlsbGVy
Um93RWxlbWVudCA9IHRoaXMuZGF0YVRhYmxlQm9keUVsZW1lbnQuY3JlYXRlQ2hpbGQoInRyIik7
CisgICAgICAgIHRoaXMuX2ZpbGxlclJvd0VsZW1lbnQuY2xhc3NOYW1lID0gImZpbGxlciI7CisK
KyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlclRhYmxlRWxlbWVu
dCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zY3JvbGxDb250YWlu
ZXJFbGVtZW50KTsKIAotICAgIHZhciBkYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQoY29sdW1uc0RhdGEsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb2x1bW5OYW1lcyk7Ci0gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoIC8gbnVtQ29sdW1uczsgKytpKSB7Ci0g
ICAgICAgIHZhciBkYXRhID0ge307Ci0gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29sdW1u
TmFtZXMubGVuZ3RoOyArK2opCi0gICAgICAgICAgICBkYXRhW2NvbHVtbk5hbWVzW2pdXSA9IHZh
bHVlc1tudW1Db2x1bW5zICogaSArIGpdOworICAgICAgICBpZiAocHJlZmVycmVkQ29sdW1uT3Jk
ZXIpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgb2YgcHJlZmVycmVk
Q29sdW1uT3JkZXIpCisgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRDb2x1bW4oY29sdW1uSWRl
bnRpZmllciwgY29sdW1uc0RhdGFbY29sdW1uSWRlbnRpZmllcl0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBjb2x1bW5zRGF0YSkK
KyAgICAgICAgICAgICAgICB0aGlzLmluc2VydENvbHVtbihjb2x1bW5JZGVudGlmaWVyLCBjb2x1
bW5zRGF0YVtjb2x1bW5JZGVudGlmaWVyXSk7CisgICAgICAgIH0KIAotICAgICAgICB2YXIgbm9k
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKGRhdGEsIGZhbHNlKTsKLSAgICAgICAg
ZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU29ydElu
ZGljYXRvckltYWdlc0lmTmVlZGVkKCk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gc29ydERhdGFH
cmlkKCkKKyAgICBzdGF0aWMgY3JlYXRlU29ydGFibGVEYXRhR3JpZChjb2x1bW5OYW1lcywgdmFs
dWVzKQogICAgIHsKLSAgICAgICAgdmFyIHNvcnRDb2x1bW5JZGVudGlmaWVyID0gZGF0YUdyaWQu
c29ydENvbHVtbklkZW50aWZpZXI7CisgICAgICAgIHZhciBudW1Db2x1bW5zID0gY29sdW1uTmFt
ZXMubGVuZ3RoOworICAgICAgICBpZiAoIW51bUNvbHVtbnMpCisgICAgICAgICAgICByZXR1cm4g
bnVsbDsKIAotICAgICAgICB2YXIgY29sdW1uSXNOdW1lcmljID0gdHJ1ZTsKLSAgICAgICAgZm9y
ICh2YXIgbm9kZSBvZiBkYXRhR3JpZC5jaGlsZHJlbikgewotICAgICAgICAgICAgdmFyIHZhbHVl
ID0gZGF0YUdyaWQudGV4dEZvckRhdGFHcmlkTm9kZUNvbHVtbihub2RlLCBzb3J0Q29sdW1uSWRl
bnRpZmllcik7Ci0gICAgICAgICAgICBpZiAoaXNOYU4oTnVtYmVyKHZhbHVlKSkpCi0gICAgICAg
ICAgICAgICAgY29sdW1uSXNOdW1lcmljID0gZmFsc2U7CisgICAgICAgIHZhciBjb2x1bW5zRGF0
YSA9IHt9OworICAgICAgICBmb3IgKHZhciBjb2x1bW5OYW1lIG9mIGNvbHVtbk5hbWVzKSB7Cisg
ICAgICAgICAgICBjb2x1bW5zRGF0YVtjb2x1bW5OYW1lXSA9IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogY29sdW1uTmFtZS5sZW5ndGgsCisgICAgICAgICAgICAgICAgdGl0bGU6IGNvbHVtbk5h
bWUsCisgICAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsCisgICAgICAgICAgICB9OwogICAg
ICAgICB9CiAKLSAgICAgICAgZnVuY3Rpb24gY29tcGFyYXRvcihkYXRhR3JpZE5vZGUxLCBkYXRh
R3JpZE5vZGUyKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgaXRlbTEgPSBkYXRhR3JpZC50
ZXh0Rm9yRGF0YUdyaWROb2RlQ29sdW1uKGRhdGFHcmlkTm9kZTEsIHNvcnRDb2x1bW5JZGVudGlm
aWVyKTsKLSAgICAgICAgICAgIHZhciBpdGVtMiA9IGRhdGFHcmlkLnRleHRGb3JEYXRhR3JpZE5v
ZGVDb2x1bW4oZGF0YUdyaWROb2RlMiwgc29ydENvbHVtbklkZW50aWZpZXIpOwotCi0gICAgICAg
ICAgICB2YXIgY29tcGFyaXNvbjsKLSAgICAgICAgICAgIGlmIChjb2x1bW5Jc051bWVyaWMpIHsK
LSAgICAgICAgICAgICAgICB2YXIgbnVtYmVyMSA9IHBhcnNlRmxvYXQoaXRlbTEpOwotICAgICAg
ICAgICAgICAgIHZhciBudW1iZXIyID0gcGFyc2VGbG9hdChpdGVtMik7Ci0gICAgICAgICAgICAg
ICAgY29tcGFyaXNvbiA9IG51bWJlcjEgPCBudW1iZXIyID8gLTEgOiAobnVtYmVyMSA+IG51bWJl
cjIgPyAxIDogMCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb21wYXJp
c29uID0gaXRlbTEgPCBpdGVtMiA/IC0xIDogKGl0ZW0xID4gaXRlbTIgPyAxIDogMCk7Ci0KLSAg
ICAgICAgICAgIHJldHVybiBjb21wYXJpc29uOworICAgICAgICB2YXIgZGF0YUdyaWQgPSBuZXcg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnNEYXRhLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwg
Y29sdW1uTmFtZXMpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGgg
LyBudW1Db2x1bW5zOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBkYXRhID0ge307CisgICAgICAg
ICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbHVtbk5hbWVzLmxlbmd0aDsgKytqKQorICAgICAg
ICAgICAgICAgIGRhdGFbY29sdW1uTmFtZXNbal1dID0gdmFsdWVzW251bUNvbHVtbnMgKiBpICsg
al07CisKKyAgICAgICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5v
ZGUoZGF0YSwgZmFsc2UpOworICAgICAgICAgICAgZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7
CiAgICAgICAgIH0KIAotICAgICAgICBkYXRhR3JpZC5zb3J0Tm9kZXMoY29tcGFyYXRvcik7Ci0g
ICAgfQorICAgICAgICBmdW5jdGlvbiBzb3J0RGF0YUdyaWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgc29ydENvbHVtbklkZW50aWZpZXIgPSBkYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRp
ZmllcjsKIAotICAgIGRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFH
cmlkLkV2ZW50LlNvcnRDaGFuZ2VkLCBzb3J0RGF0YUdyaWQsIHRoaXMpOworICAgICAgICAgICAg
dmFyIGNvbHVtbklzTnVtZXJpYyA9IHRydWU7CisgICAgICAgICAgICBmb3IgKHZhciBub2RlIG9m
IGRhdGFHcmlkLmNoaWxkcmVuKSB7CisgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZGF0YUdy
aWQudGV4dEZvckRhdGFHcmlkTm9kZUNvbHVtbihub2RlLCBzb3J0Q29sdW1uSWRlbnRpZmllcik7
CisgICAgICAgICAgICAgICAgaWYgKGlzTmFOKE51bWJlcih2YWx1ZSkpKQorICAgICAgICAgICAg
ICAgICAgICBjb2x1bW5Jc051bWVyaWMgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KIAotICAgIGRh
dGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5k
aW5nOwotICAgIGRhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyID0gY29sdW1uTmFtZXNbMF07
CisgICAgICAgICAgICBmdW5jdGlvbiBjb21wYXJhdG9yKGRhdGFHcmlkTm9kZTEsIGRhdGFHcmlk
Tm9kZTIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0xID0gZGF0YUdy
aWQudGV4dEZvckRhdGFHcmlkTm9kZUNvbHVtbihkYXRhR3JpZE5vZGUxLCBzb3J0Q29sdW1uSWRl
bnRpZmllcik7CisgICAgICAgICAgICAgICAgdmFyIGl0ZW0yID0gZGF0YUdyaWQudGV4dEZvckRh
dGFHcmlkTm9kZUNvbHVtbihkYXRhR3JpZE5vZGUyLCBzb3J0Q29sdW1uSWRlbnRpZmllcik7CiAK
LSAgICByZXR1cm4gZGF0YUdyaWQ7Ci19CisgICAgICAgICAgICAgICAgdmFyIGNvbXBhcmlzb247
CisgICAgICAgICAgICAgICAgaWYgKGNvbHVtbklzTnVtZXJpYykgeworICAgICAgICAgICAgICAg
ICAgICB2YXIgbnVtYmVyMSA9IHBhcnNlRmxvYXQoaXRlbTEpOworICAgICAgICAgICAgICAgICAg
ICB2YXIgbnVtYmVyMiA9IHBhcnNlRmxvYXQoaXRlbTIpOworICAgICAgICAgICAgICAgICAgICBj
b21wYXJpc29uID0gbnVtYmVyMSA8IG51bWJlcjIgPyAtMSA6IChudW1iZXIxID4gbnVtYmVyMiA/
IDEgOiAwKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY29t
cGFyaXNvbiA9IGl0ZW0xIDwgaXRlbTIgPyAtMSA6IChpdGVtMSA+IGl0ZW0yID8gMSA6IDApOwor
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmlzb247CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGRhdGFHcmlkLnNvcnROb2Rlcyhjb21wYXJhdG9yKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2
ZW50LlNvcnRDaGFuZ2VkLCBzb3J0RGF0YUdyaWQsIHRoaXMpOworCisgICAgICAgIGRhdGFHcmlk
LnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOwor
ICAgICAgICBkYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9IGNvbHVtbk5hbWVzWzBdOwor
CisgICAgICAgIHJldHVybiBkYXRhR3JpZDsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHJlZnJlc2hDYWxsYmFjaygpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fcmVmcmVzaENhbGxiYWNrOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHJlZnJlc2hDYWxsYmFjayhyZWZyZXNoQ2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9y
ZWZyZXNoQ2FsbGJhY2sgPSByZWZyZXNoQ2FsbGJhY2s7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgc29ydE9yZGVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3J0T3JkZXI7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBzZXQgc29ydE9yZGVyKG9yZGVyKQogICAgIHsKQEAgLTIxNCwx
MiArMTk2LDEyIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHNvcnRIZWFkZXJDZWxsRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5Tb3J0Q29sdW1uRGVzY2VuZGluZ1N0eWxlQ2xhc3NOYW1lLCB0aGlzLl9zb3J0T3JkZXIg
PT09IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuRGVzY2VuZGluZyk7CiAKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2
ZW50LlNvcnRDaGFuZ2VkKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzb3J0Q29sdW1uSWRl
bnRpZmllcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc29ydENvbHVtbklkZW50aWZp
ZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc29ydENvbHVtbklkZW50aWZpZXIoY29sdW1u
SWRlbnRpZmllcikKICAgICB7CkBAIC0yNDUsMTcgKzIyNywxNyBAQCBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNvcnRDaGFuZ2VkKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9vbmRibGNsaWNrOiBmdW5jdGlvbihldmVudCkKKyAgICBf
b25kYmxjbGljayhldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lZGl0aW5nIHx8IHRo
aXMuX2VkaXRpbmdOb2RlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3N0
YXJ0RWRpdGluZyhldmVudC50YXJnZXQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0YXJ0RWRp
dGluZ05vZGVBdENvbHVtbkluZGV4OiBmdW5jdGlvbihub2RlLCBjb2x1bW5JbmRleCkKKyAgICBf
c3RhcnRFZGl0aW5nTm9kZUF0Q29sdW1uSW5kZXgobm9kZSwgY29sdW1uSW5kZXgpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChub2RlLCAiSW52YWxpZCBhcmd1bWVudDogbXVzdCBwcm92
aWRlIERhdGFHcmlkTm9kZSB0byBlZGl0LiIpOwogCkBAIC0yNjYsOSArMjQ4LDkgQEAgV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlz
Ll9lZGl0aW5nTm9kZS5fZWxlbWVudC5jaGlsZHJlbltjb2x1bW5JbmRleF07CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5zdGFydEVkaXRpbmcoZWxlbWVudCwgdGhpcy5fc3RhcnRFZGl0aW5nQ29uZmln
KGVsZW1lbnQpKTsKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRl
bnQoZWxlbWVudCwgMCwgZWxlbWVudCwgMSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RhcnRF
ZGl0aW5nOiBmdW5jdGlvbih0YXJnZXQpCisgICAgX3N0YXJ0RWRpdGluZyh0YXJnZXQpCiAgICAg
ewogICAgICAgICB2YXIgZWxlbWVudCA9IHRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5v
ZGVOYW1lKCJ0ZCIpOwogICAgICAgICBpZiAoIWVsZW1lbnQpCkBAIC0yODksMTQgKzI3MSwxNCBA
QCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0
b3Iuc3RhcnRFZGl0aW5nKGVsZW1lbnQsIHRoaXMuX3N0YXJ0RWRpdGluZ0NvbmZpZyhlbGVtZW50
KSk7CiAKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoZWxl
bWVudCwgMCwgZWxlbWVudCwgMSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RhcnRFZGl0aW5n
Q29uZmlnOiBmdW5jdGlvbihlbGVtZW50KQorICAgIF9zdGFydEVkaXRpbmdDb25maWcoZWxlbWVu
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkVkaXRpbmdDb25maWco
dGhpcy5fZWRpdGluZ0NvbW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVk
LmJpbmQodGhpcyksIGVsZW1lbnQudGV4dENvbnRlbnQpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2VkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQsIG9sZFRleHQsIGNv
bnRleHQsIG1vdmVEaXJlY3Rpb24pCisgICAgX2VkaXRpbmdDb21taXR0ZWQoZWxlbWVudCwgbmV3
VGV4dCwgb2xkVGV4dCwgY29udGV4dCwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIHZh
ciBjb2x1bW5JZGVudGlmaWVyID0gZWxlbWVudC5fX2NvbHVtbklkZW50aWZpZXI7CiAgICAgICAg
IHZhciBjb2x1bW5JbmRleCA9IHRoaXMub3JkZXJlZENvbHVtbnMuaW5kZXhPZihjb2x1bW5JZGVu
dGlmaWVyKTsKQEAgLTM0NywxNiArMzI5LDE2IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIHRleHREaWRDaGFuZ2UgPSB0ZXh0QmVmb3JlRWRpdGlu
Zy50cmltKCkgIT09IG5ld1RleHQudHJpbSgpOwogICAgICAgICBtb3ZlVG9OZXh0Q2VsbC5jYWxs
KHRoaXMsIHRleHREaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX2VkaXRpbmdDYW5j
ZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgX2VkaXRpbmdDYW5jZWxsZWQoZWxlbWVudCkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VkaXRpbmdOb2RlLmVsZW1lbnQg
PT09IGVsZW1lbnQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgidHIiKSk7CiAgICAg
ICAgIGRlbGV0ZSB0aGlzLl9lZGl0aW5nOwogICAgICAgICB0aGlzLl9lZGl0aW5nTm9kZSA9IG51
bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhdXRvU2l6ZUNvbHVtbnM6IGZ1bmN0aW9uKG1pblBl
cmNlbnQsIG1heFBlcmNlbnQsIG1heERlc2NlbnRMZXZlbCkKKyAgICBhdXRvU2l6ZUNvbHVtbnMo
bWluUGVyY2VudCwgbWF4UGVyY2VudCwgbWF4RGVzY2VudExldmVsKQogICAgIHsKICAgICAgICAg
aWYgKG1pblBlcmNlbnQpCiAgICAgICAgICAgICBtaW5QZXJjZW50ID0gTWF0aC5taW4obWluUGVy
Y2VudCwgTWF0aC5mbG9vcigxMDAgLyB0aGlzLm9yZGVyZWRDb2x1bW5zLmxlbmd0aCkpOwpAQCAt
NDIxLDkgKzQwMyw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBjb2x1bW5bImVsZW1lbnQiXS5zdHlsZS53aWR0aCA9IHdpZHRoc1tpZGVudGlmaWVy
XSArICIlIjsKICAgICAgICAgdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgPSBmYWxzZTsK
ICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGluc2Vy
dENvbHVtbjogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgY29sdW1uRGF0YSwgaW5zZXJ0aW9u
SW5kZXgpCisgICAgaW5zZXJ0Q29sdW1uKGNvbHVtbklkZW50aWZpZXIsIGNvbHVtbkRhdGEsIGlu
c2VydGlvbkluZGV4KQogICAgIHsKICAgICAgICAgaWYgKGluc2VydGlvbkluZGV4ID09PSB1bmRl
ZmluZWQpCiAgICAgICAgICAgICBpbnNlcnRpb25JbmRleCA9IHRoaXMub3JkZXJlZENvbHVtbnMu
bGVuZ3RoOwpAQCAtNTE1LDkgKzQ5Nyw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgaWYgKGNvbHVtblsiaGlkZGVuIl0pCiAgICAgICAgICAgICB0aGlz
Ll9oaWRlQ29sdW1uKGNvbHVtbklkZW50aWZpZXIpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVt
b3ZlQ29sdW1uOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAgIHJlbW92ZUNvbHVtbihj
b2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5jb2x1
bW5zLmhhcyhjb2x1bW5JZGVudGlmaWVyKSk7CiAgICAgICAgIHZhciByZW1vdmVkQ29sdW1uID0g
dGhpcy5jb2x1bW5zLmdldChjb2x1bW5JZGVudGlmaWVyKTsKQEAgLTU0OSw5ICs1MzEsOSBAQCBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIGZvciAodmFyIGNo
aWxkIG9mIHRoaXMuY2hpbGRyZW4pCiAgICAgICAgICAgICBjaGlsZC5yZWZyZXNoKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfZW51bWVyYXRlQ2hpbGRyZW46IGZ1bmN0aW9uKHJvb3ROb2RlLCBy
ZXN1bHQsIG1heExldmVsKQorICAgIF9lbnVtZXJhdGVDaGlsZHJlbihyb290Tm9kZSwgcmVzdWx0
LCBtYXhMZXZlbCkKICAgICB7CiAgICAgICAgIGlmICghcm9vdE5vZGUucm9vdCkKICAgICAgICAg
ICAgIHJlc3VsdC5wdXNoKHJvb3ROb2RlKTsKQEAgLTU2MCw3ICs1NDIsNyBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJv
b3ROb2RlLmNoaWxkcmVuLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5fZW51bWVyYXRl
Q2hpbGRyZW4ocm9vdE5vZGUuY2hpbGRyZW5baV0sIHJlc3VsdCwgbWF4TGV2ZWwgLSAxKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFVwZGF0ZXMgdGhl
IHdpZHRocyBvZiB0aGUgdGFibGUsIGluY2x1ZGluZyB0aGUgcG9zaXRpb25zIG9mIHRoZSBjb2x1
bW4KICAgICAvLyByZXNpemVycy4KQEAgLTU3Miw3ICs1NTQsNyBAQCBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQucHJvdG90eXBlID0gewogICAgIC8vCiAgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiBpcyBu
b3QgY2FsbGVkIGFmdGVyIHRoZSBEYXRhR3JpZCBpcyBhdHRhY2hlZCB0byBpdHMKICAgICAvLyBw
YXJlbnQgZWxlbWVudCwgdGhlbiB0aGUgRGF0YUdyaWQncyBjb2x1bW5zIHdpbGwgbm90IGJlIHJl
c2l6YWJsZS4KLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQo
KQogICAgIHsKICAgICAgICAgLy8gRG8gbm90IGF0dGVtcHQgdG8gdXNlIG9mZnNldGVzIGlmIHdl
J3JlIG5vdCBhdHRhY2hlZCB0byB0aGUgZG9jdW1lbnQgdHJlZSB5ZXQuCiAgICAgICAgIGlmICgh
dGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgJiYgdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRo
KSB7CkBAIC02MDEsOSArNTgzLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICB0aGlzLl9wb3NpdGlvblJlc2l6ZXJFbGVtZW50cygpOwogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQu
RGlkTGF5b3V0KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNvbHVtbldpZHRoc01hcDogZnVuY3Rp
b24oKQorICAgIGNvbHVtbldpZHRoc01hcCgpCiAgICAgewogICAgICAgICB2YXIgcmVzdWx0ID0g
e307CiAgICAgICAgIGZvciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1u
cykgewpAQCAtNjExLDkgKzU5Myw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXN1bHRbY29sdW1uSWRlbnRpZmllcl0gPSBwYXJzZUZsb2F0KHdp
ZHRoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCisgICAgfQog
Ci0gICAgYXBwbHlDb2x1bW5XaWR0aHNNYXA6IGZ1bmN0aW9uKGNvbHVtbldpZHRoc01hcCkKKyAg
ICBhcHBseUNvbHVtbldpZHRoc01hcChjb2x1bW5XaWR0aHNNYXApCiAgICAgewogICAgICAgICBm
b3IgKHZhciBbaWRlbnRpZmllciwgY29sdW1uXSBvZiB0aGlzLmNvbHVtbnMpIHsKICAgICAgICAg
ICAgIHZhciB3aWR0aCA9IChjb2x1bW5XaWR0aHNNYXBbaWRlbnRpZmllcl0gfHwgMCkgKyAiJSI7
CkBAIC02MjMsMTkgKzYwNSwxOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9pc0NvbHVtblZpc2libGU6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIpCisg
ICAgX2lzQ29sdW1uVmlzaWJsZShjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0
dXJuICF0aGlzLmNvbHVtbnMuZ2V0KGNvbHVtbklkZW50aWZpZXIpWyJoaWRkZW4iXTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9zaG93Q29sdW1uOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQor
ICAgIF9zaG93Q29sdW1uKGNvbHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAgICBkZWxldGUg
dGhpcy5jb2x1bW5zLmdldChjb2x1bW5JZGVudGlmaWVyKVsiaGlkZGVuIl07Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfaGlkZUNvbHVtbjogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAgICBf
aGlkZUNvbHVtbihjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgdmFyIGNvbHVtbiA9
IHRoaXMuY29sdW1ucy5nZXQoY29sdW1uSWRlbnRpZmllcik7CiAgICAgICAgIGNvbHVtblsiaGlk
ZGVuIl0gPSB0cnVlOwpAQCAtNjQ0LDI0ICs2MjYsMjQgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LnByb3RvdHlwZSA9IHsKICAgICAgICAgY29sdW1uRWxlbWVudC5zdHlsZS53aWR0aCA9IDA7CiAK
ICAgICAgICAgdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBzY3JvbGxDb250YWluZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc1Nj
cm9sbGVkVG9MYXN0Um93OiBmdW5jdGlvbigpCisgICAgaXNTY3JvbGxlZFRvTGFzdFJvdygpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5pc1Njcm9s
bGVkVG9Cb3R0b20oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNjcm9sbFRvTGFzdFJvdzogZnVu
Y3Rpb24oKQorICAgIHNjcm9sbFRvTGFzdFJvdygpCiAgICAgewogICAgICAgICB0aGlzLl9zY3Jv
bGxDb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1l
bnQuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5vZmZzZXRIZWln
aHQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9zaXRpb25SZXNpemVyRWxlbWVudHM6IGZ1bmN0
aW9uKCkKKyAgICBfcG9zaXRpb25SZXNpemVyRWxlbWVudHMoKQogICAgIHsKICAgICAgICAgdmFy
IGxlZnQgPSAwOwogICAgICAgICB2YXIgcHJldmlvdXNSZXNpemVyID0gbnVsbDsKQEAgLTY5OCw5
ICs2ODAsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB9
CiAgICAgICAgIGlmIChwcmV2aW91c1Jlc2l6ZXIpCiAgICAgICAgICAgICBwcmV2aW91c1Jlc2l6
ZXJbV2ViSW5zcGVjdG9yLkRhdGFHcmlkLk5leHRDb2x1bW5PcmRpbmFsU3ltYm9sXSA9IHRoaXMu
b3JkZXJlZENvbHVtbnMubGVuZ3RoIC0gMTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFBsYWNl
aG9sZGVyTm9kZTogZnVuY3Rpb24oKQorICAgIGFkZFBsYWNlaG9sZGVyTm9kZSgpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5wbGFjZWhvbGRlck5vZGUpCiAgICAgICAgICAgICB0aGlzLnBsYWNl
aG9sZGVyTm9kZS5tYWtlTm9ybWFsKCk7CkBAIC03MTAsMTQgKzY5MiwxNCBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZW1wdHlEYXRhW2lkZW50aWZp
ZXJdID0gIiI7CiAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJOb2RlID0gbmV3IFdlYkluc3BlY3Rv
ci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZShlbXB0eURhdGEpOwogICAgICAgICB0aGlzLmFwcGVu
ZENoaWxkKHRoaXMucGxhY2Vob2xkZXJOb2RlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGFwcGVu
ZENoaWxkOiBmdW5jdGlvbihjaGlsZCkKKyAgICBhcHBlbmRDaGlsZChjaGlsZCkKICAgICB7CiAg
ICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQoY2hpbGQsIHRoaXMuY2hpbGRyZW4ubGVuZ3RoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGluc2VydENoaWxkOiBmdW5jdGlvbihjaGlsZCwgaW5kZXgpCisg
ICAgaW5zZXJ0Q2hpbGQoY2hpbGQsIGluZGV4KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoY2hpbGQpOwogICAgICAgICBpZiAoIWNoaWxkKQpAQCAtNzU0LDkgKzczNiw5IEBAIFdlYklu
c3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuZXhwYW5k
ZWQpCiAgICAgICAgICAgICBjaGlsZC5fYXR0YWNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBy
ZW1vdmVDaGlsZDogZnVuY3Rpb24oY2hpbGQpCisgICAgcmVtb3ZlQ2hpbGQoY2hpbGQpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChjaGlsZCk7CiAgICAgICAgIGlmICghY2hpbGQpCkBA
IC03ODUsOSArNzY3LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxzZTsKIAogICAgICAgICBjb25zb2xlLmFz
c2VydCghY2hpbGQuaXNQbGFjZWhvbGRlck5vZGUsICJTaG91bGRuJ3QgZGVsZXRlIHRoZSBwbGFj
ZWhvbGRlciBub2RlLiIpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlQ2hpbGRyZW46IGZ1
bmN0aW9uKCkKKyAgICByZW1vdmVDaGlsZHJlbigpCiAgICAgewogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBj
aGlsZCA9IHRoaXMuY2hpbGRyZW5baV07CkBAIC04MDIsOSArNzg0LDkgQEAgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmNoaWxkcmVuID0gW107CiAg
ICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIHJl
bW92ZUNoaWxkcmVuUmVjdXJzaXZlOiBmdW5jdGlvbigpCisgICAgcmVtb3ZlQ2hpbGRyZW5SZWN1
cnNpdmUoKQogICAgIHsKICAgICAgICAgdmFyIGNoaWxkcmVuVG9SZW1vdmUgPSB0aGlzLmNoaWxk
cmVuOwogCkBAIC04MjgsMjIgKzgxMCwyMiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOwotICAgIH0s
CisgICAgfQogCi0gICAgc29ydE5vZGVzOiBmdW5jdGlvbihjb21wYXJhdG9yKQorICAgIHNvcnRO
b2Rlcyhjb21wYXJhdG9yKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NvcnROb2Rlc1JlcXVl
c3RJZCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zb3J0Tm9kZXNSZXF1
ZXN0SWQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NvcnROb2Rlc0NhbGxi
YWNrLmJpbmQodGhpcywgY29tcGFyYXRvcikpOwotICAgIH0sCisgICAgfQogCi0gICAgc29ydE5v
ZGVzSW1tZWRpYXRlbHk6IGZ1bmN0aW9uKGNvbXBhcmF0b3IpCisgICAgc29ydE5vZGVzSW1tZWRp
YXRlbHkoY29tcGFyYXRvcikKICAgICB7CiAgICAgICAgIHRoaXMuX3NvcnROb2Rlc0NhbGxiYWNr
KGNvbXBhcmF0b3IpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NvcnROb2Rlc0NhbGxiYWNrOiBm
dW5jdGlvbihjb21wYXJhdG9yKQorICAgIF9zb3J0Tm9kZXNDYWxsYmFjayhjb21wYXJhdG9yKQog
ICAgIHsKICAgICAgICAgZnVuY3Rpb24gY29tcGFyYXRvcldyYXBwZXIoYVJvdywgYlJvdykKICAg
ICAgICAgewpAQCAtODg5LDkgKzg3MSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBwcmV2aW91c1NpYmxpbmdOb2RlLm5leHRTaWJsaW5nID0gbnVs
bDsKIAogICAgICAgICB0Ym9keS5hcHBlbmRDaGlsZChmaWxsZXJSb3dFbGVtZW50KTsgLy8gV2Ug
ZXhwZWN0IHRvIGZpbmQgYSBmaWxsZXIgcm93IHdoZW4gYXR0YWNoaW5nIG5vZGVzLgotICAgIH0s
CisgICAgfQogCi0gICAgX2tleURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9rZXlEb3duKGV2
ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkTm9kZSB8fCBldmVudC5zaGlm
dEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXkgfHwgdGhpcy5fZWRpdGluZykK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTk2MCw0MiArOTQyLDQyIEBAIFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OwogICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgIH0KLSAgICB9
LAorICAgIH0KIAotICAgIGV4cGFuZDogZnVuY3Rpb24oKQorICAgIGV4cGFuZCgpCiAgICAgewog
ICAgICAgICAvLyBUaGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nLgotICAgIH0sCisgICAgfQog
Ci0gICAgY29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICBjb2xsYXBzZSgpCiAgICAgewogICAgICAg
ICAvLyBUaGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nLgotICAgIH0sCisgICAgfQogCi0gICAg
cmV2ZWFsOiBmdW5jdGlvbigpCisgICAgcmV2ZWFsKCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMg
aXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcuCi0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxBbmRT
ZWxlY3Q6IGZ1bmN0aW9uKCkKKyAgICByZXZlYWxBbmRTZWxlY3QoKQogICAgIHsKICAgICAgICAg
Ly8gVGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGluZy4KLSAgICB9LAorICAgIH0KIAotICAgIGRh
dGFHcmlkTm9kZUZyb21Ob2RlOiBmdW5jdGlvbih0YXJnZXQpCisgICAgZGF0YUdyaWROb2RlRnJv
bU5vZGUodGFyZ2V0KQogICAgIHsKICAgICAgICAgdmFyIHJvd0VsZW1lbnQgPSB0YXJnZXQuZW5j
bG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgidHIiKTsKICAgICAgICAgcmV0dXJuIHJvd0Vs
ZW1lbnQgJiYgcm93RWxlbWVudC5fZGF0YUdyaWROb2RlOwotICAgIH0sCisgICAgfQogCi0gICAg
ZGF0YUdyaWROb2RlRnJvbVBvaW50OiBmdW5jdGlvbih4LCB5KQorICAgIGRhdGFHcmlkTm9kZUZy
b21Qb2ludCh4LCB5KQogICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9kYXRhVGFibGVF
bGVtZW50Lm93bmVyRG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KTsKICAgICAgICAgdmFy
IHJvd0VsZW1lbnQgPSBub2RlLmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoInRyIik7
CiAgICAgICAgIHJldHVybiByb3dFbGVtZW50ICYmIHJvd0VsZW1lbnQuX2RhdGFHcmlkTm9kZTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9oZWFkZXJDZWxsQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2hlYWRlckNlbGxDbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGNlbGwg
PSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgidGgiKTsKICAg
ICAgICAgaWYgKCFjZWxsIHx8ICFjZWxsLmNvbHVtbklkZW50aWZpZXIgfHwgIWNlbGwuY2xhc3NM
aXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0YWJsZUNvbHVtblN0eWxlQ2xh
c3NOYW1lKSkKQEAgLTEwMDksMjcgKzk5MSwyNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuc29ydE9yZGVyID0gV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLlNvcnRPcmRlci5Bc2NlbmRpbmc7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgdGhpcy5zb3J0Q29sdW1uSWRlbnRpZmllciA9IGNsaWNrZWRDb2x1bW5JZGVudGlmaWVyOwot
ICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlb3ZlckNvbHVtbkNvbGxhcHNlcjogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX21vdXNlb3ZlckNvbHVtbkNvbGxhcHNlcihldmVudCkKICAgICB7CiAgICAg
ICAgIHZhciBjZWxsID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5h
bWUoInRoIik7CiAgICAgICAgIGlmICghY2VsbCB8fCAhY2VsbC5jb2xsYXBzZXNHcm91cCkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoIm1vdXNlLW92
ZXItY29sbGFwc2VyIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91c2VvdXRDb2x1bW5Db2xs
YXBzZXI6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZW91dENvbHVtbkNvbGxhcHNlcihldmVu
dCkKICAgICB7CiAgICAgICAgIHZhciBjZWxsID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVP
clNlbGZXaXRoTm9kZU5hbWUoInRoIik7CiAgICAgICAgIGlmICghY2VsbCB8fCAhY2VsbC5jb2xs
YXBzZXNHcm91cCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjZWxsLmNsYXNzTGlz
dC5yZW1vdmUoIm1vdXNlLW92ZXItY29sbGFwc2VyIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
Y2xpY2tJbkNvbHVtbkNvbGxhcHNlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NsaWNrSW5Db2x1
bW5Db2xsYXBzZXIoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgY2VsbCA9IGV2ZW50LnRhcmdl
dC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0aCIpOwogICAgICAgICBpZiAoIWNl
bGwgfHwgIWNlbGwuY29sbGFwc2VzR3JvdXApCkBAIC0xMDM5LDkgKzEwMjEsOSBAQCBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdh
dGlvbigpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgY29sbGFwc2VDb2x1bW5Hcm91cDogZnVuY3Rpb24oY29sdW1uR3JvdXApCisgICAgY29s
bGFwc2VDb2x1bW5Hcm91cChjb2x1bW5Hcm91cCkKICAgICB7CiAgICAgICAgIHZhciBjb2xsYXBz
ZXJDb2x1bW5JZGVudGlmaWVyID0gbnVsbDsKICAgICAgICAgZm9yICh2YXIgW2lkZW50aWZpZXIs
IGNvbHVtbl0gb2YgdGhpcy5jb2x1bW5zKSB7CkBAIC0xMDU3LDkgKzEwMzksOSBAQCBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBjZWxsID0gdGhpcy5f
aGVhZGVyVGFibGVDZWxsRWxlbWVudHMuZ2V0KGNvbGxhcHNlckNvbHVtbklkZW50aWZpZXIpOwog
ICAgICAgICB0aGlzLl9jb2xsYXBzZUNvbHVtbkdyb3VwV2l0aENlbGwoY2VsbCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfY29sbGFwc2VDb2x1bW5Hcm91cFdpdGhDZWxsOiBmdW5jdGlvbihjZWxs
KQorICAgIF9jb2xsYXBzZUNvbHVtbkdyb3VwV2l0aENlbGwoY2VsbCkKICAgICB7CiAgICAgICAg
IHZhciBjb2x1bW5zV2lsbENvbGxhcHNlID0gY2VsbC5jbGFzc0xpc3QudG9nZ2xlKCJjb2xsYXBz
ZWQiKTsKIApAQCAtMTA3NiwzNCArMTA1OCwzNCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlID0gewogICAgICAgICAgICAgY29sbGFwc2VyQnV0dG9uLnRpdGxlID0gY29sdW1uc1dp
bGxDb2xsYXBzZSA/IHRoaXMuX2NvbGxhcHNlckJ1dHRvbkV4cGFuZENvbHVtbnNUb29sVGlwKCkg
OiB0aGlzLl9jb2xsYXBzZXJCdXR0b25Db2xsYXBzZUNvbHVtbnNUb29sVGlwKCk7CiAKICAgICAg
ICAgdGhpcy5kaWRUb2dnbGVDb2x1bW5Hcm91cChjZWxsLmNvbGxhcHNlc0dyb3VwLCBjb2x1bW5z
V2lsbENvbGxhcHNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb2xsYXBzZXJCdXR0b25Db2xs
YXBzZUNvbHVtbnNUb29sVGlwOiBmdW5jdGlvbigpCisgICAgX2NvbGxhcHNlckJ1dHRvbkNvbGxh
cHNlQ29sdW1uc1Rvb2xUaXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ29sbGFwc2UgY29sdW1ucyIpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbGxh
cHNlckJ1dHRvbkV4cGFuZENvbHVtbnNUb29sVGlwOiBmdW5jdGlvbigpCisgICAgX2NvbGxhcHNl
ckJ1dHRvbkV4cGFuZENvbHVtbnNUb29sVGlwKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkV4cGFuZCBjb2x1bW5zIik7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICB3aWxsVG9nZ2xlQ29sdW1uR3JvdXA6IGZ1bmN0aW9uKGNvbHVtbkdyb3VwLCB3aWxsQ29sbGFw
c2UpCisgICAgd2lsbFRvZ2dsZUNvbHVtbkdyb3VwKGNvbHVtbkdyb3VwLCB3aWxsQ29sbGFwc2Up
CiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4K
LSAgICB9LAorICAgIH0KIAotICAgIGRpZFRvZ2dsZUNvbHVtbkdyb3VwOiBmdW5jdGlvbihjb2x1
bW5Hcm91cCwgZGlkQ29sbGFwc2UpCisgICAgZGlkVG9nZ2xlQ29sdW1uR3JvdXAoY29sdW1uR3Jv
dXAsIGRpZENvbGxhcHNlKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3NlcyBpZiBuZWVkZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBoZWFkZXJUYWJsZUhlYWRlcjog
ZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAgICBoZWFkZXJUYWJsZUhlYWRlcihjb2x1bW5J
ZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlclRhYmxlQ2VsbEVs
ZW1lbnRzLmdldChjb2x1bW5JZGVudGlmaWVyKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9nZW5l
cmF0ZVNvcnRJbmRpY2F0b3JJbWFnZXNJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIF9nZW5lcmF0
ZVNvcnRJbmRpY2F0b3JJbWFnZXNJZk5lZWRlZCgpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLl9nZW5lcmF0ZWRTb3J0SW5kaWNhdG9ySW1hZ2VzKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTExNiw5ICsxMDk4LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICBnZW5lcmF0ZUNvbG9yZWRJbWFnZXNGb3JDU1MoIkltYWdl
cy9Tb3J0SW5kaWNhdG9yRG93bkFycm93LnN2ZyIsIHNwZWNpZmljYXRpb25zLCA5LCA4LCAiZGF0
YS1ncmlkLXNvcnQtaW5kaWNhdG9yLWRvd24tIik7CiAgICAgICAgIGdlbmVyYXRlQ29sb3JlZElt
YWdlc0ZvckNTUygiSW1hZ2VzL1NvcnRJbmRpY2F0b3JVcEFycm93LnN2ZyIsIHNwZWNpZmljYXRp
b25zLCA5LCA4LCAiZGF0YS1ncmlkLXNvcnQtaW5kaWNhdG9yLXVwLSIpOwotICAgIH0sCisgICAg
fQogCi0gICAgX21vdXNlRG93bkluRGF0YVRhYmxlOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91
c2VEb3duSW5EYXRhVGFibGUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZ3JpZE5vZGUgPSB0
aGlzLmRhdGFHcmlkTm9kZUZyb21Ob2RlKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIGlmICghZ3Jp
ZE5vZGUgfHwgIWdyaWROb2RlLnNlbGVjdGFibGUpCkBAIC0xMTM0LDkgKzExMTYsOSBAQCBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGdyaWROb2Rl
LnNlbGVjdCgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGdyaWROb2RlLnNlbGVjdCgp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRleHRNZW51SW5EYXRhVGFibGU6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9jb250ZXh0TWVudUluRGF0YVRhYmxlKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7
CiAKQEAgLTExNjIsOSArMTE0NCw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfY2xpY2tJbkRhdGFUYWJsZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NsaWNr
SW5EYXRhVGFibGUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZ3JpZE5vZGUgPSB0aGlzLmRh
dGFHcmlkTm9kZUZyb21Ob2RlKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIGlmICghZ3JpZE5vZGUg
fHwgIWdyaWROb2RlLmhhc0NoaWxkcmVuKQpAQCAtMTE4NCwxNSArMTE2NiwxNSBAQCBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIGdyaWROb2RlLmV4cGFuZCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICB0ZXh0Rm9yRGF0YUdyaWROb2RlQ29sdW1uOiBmdW5jdGlvbihub2RlLCBjb2x1bW5JZGVudGlm
aWVyKQorICAgIHRleHRGb3JEYXRhR3JpZE5vZGVDb2x1bW4obm9kZSwgY29sdW1uSWRlbnRpZmll
cikKICAgICB7CiAgICAgICAgIHZhciBkYXRhID0gbm9kZS5kYXRhW2NvbHVtbklkZW50aWZpZXJd
OwogICAgICAgICByZXR1cm4gKGRhdGEgaW5zdGFuY2VvZiBOb2RlID8gZGF0YS50ZXh0Q29udGVu
dCA6IGRhdGEpIHx8ICIiOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvcHlUZXh0Rm9yRGF0YUdy
aWROb2RlOiBmdW5jdGlvbihub2RlKQorICAgIF9jb3B5VGV4dEZvckRhdGFHcmlkTm9kZShub2Rl
KQogICAgIHsKICAgICAgICAgdmFyIGZpZWxkcyA9IFtdOwogICAgICAgICBmb3IgKHZhciBpZGVu
dGlmaWVyIG9mIG5vZGUuZGF0YUdyaWQub3JkZXJlZENvbHVtbnMpCkBAIC0xMjAwLDE1ICsxMTgy
LDE1IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFy
IHRhYlNlcGFyYXRlZFZhbHVlcyA9IGZpZWxkcy5qb2luKCJcdCIpOwogICAgICAgICByZXR1cm4g
dGFiU2VwYXJhdGVkVmFsdWVzOwotICAgIH0sCisgICAgfQogCi0gICAgaGFuZGxlQmVmb3JlQ29w
eUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVCZWZvcmVDb3B5RXZlbnQoZXZlbnQp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGUgJiYgd2luZG93LmdldFNlbGVj
dGlvbigpLmlzQ29sbGFwc2VkKQogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGhhbmRsZUNvcHlFdmVudDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgaGFuZGxlQ29weUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNlbGVj
dGVkTm9kZSB8fCAhd2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTIxNyw5ICsxMTk5LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L3Bs
YWluIiwgY29weVRleHQpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb3B5Um93
OiBmdW5jdGlvbih0YXJnZXQpCisgICAgX2NvcHlSb3codGFyZ2V0KQogICAgIHsKICAgICAgICAg
dmFyIGdyaWROb2RlID0gdGhpcy5kYXRhR3JpZE5vZGVGcm9tTm9kZSh0YXJnZXQpOwogICAgICAg
ICBpZiAoIWdyaWROb2RlKQpAQCAtMTIyNywyOSArMTIwOSwyOSBAQCBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBjb3B5VGV4dCA9IHRoaXMuX2NvcHlU
ZXh0Rm9yRGF0YUdyaWROb2RlKGdyaWROb2RlKTsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNvcHlUZXh0KGNvcHlUZXh0KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXNpemVN
ZXRob2QoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXNpemVNZXRob2QpCiAgICAgICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlJlc2l6ZU1ldGhvZC5OZWFyZXN0Owog
ICAgICAgICByZXR1cm4gdGhpcy5fcmVzaXplTWV0aG9kOwotICAgIH0sCisgICAgfQogCiAgICAg
c2V0IHJlc2l6ZU1ldGhvZChtZXRob2QpCiAgICAgewogICAgICAgICB0aGlzLl9yZXNpemVNZXRo
b2QgPSBtZXRob2Q7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNpemVyRHJhZ1N0YXJ0ZWQ6IGZ1
bmN0aW9uKHJlc2l6ZXIpCisgICAgcmVzaXplckRyYWdTdGFydGVkKHJlc2l6ZXIpCiAgICAgewog
ICAgICAgICBpZiAoIXJlc2l6ZXJbV2ViSW5zcGVjdG9yLkRhdGFHcmlkLk5leHRDb2x1bW5PcmRp
bmFsU3ltYm9sXSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBBYm9ydCB0aGUgZHJhZzsK
IAogICAgICAgICB0aGlzLl9jdXJyZW50UmVzaXplciA9IHJlc2l6ZXI7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICByZXNpemVyRHJhZ2dpbmc6IGZ1bmN0aW9uKHJlc2l6ZXIsIHBvc2l0aW9uRGVsdGEp
CisgICAgcmVzaXplckRyYWdnaW5nKHJlc2l6ZXIsIHBvc2l0aW9uRGVsdGEpCiAgICAgewogICAg
ICAgICBjb25zb2xlLmFzc2VydChyZXNpemVyID09PSB0aGlzLl9jdXJyZW50UmVzaXplciwgcmVz
aXplciwgdGhpcy5fY3VycmVudFJlc2l6ZXIpOwogICAgICAgICBpZiAocmVzaXplciAhPSB0aGlz
Ll9jdXJyZW50UmVzaXplcikKQEAgLTEyOTYsOSArMTI3OCw5IEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Bvc2l0aW9uUmVzaXplckVsZW1lbnRz
KCk7CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5EaWRMYXlvdXQp
OwotICAgIH0sCisgICAgfQogCi0gICAgcmVzaXplckRyYWdFbmRlZDogZnVuY3Rpb24ocmVzaXpl
cikKKyAgICByZXNpemVyRHJhZ0VuZGVkKHJlc2l6ZXIpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChyZXNpemVyID09PSB0aGlzLl9jdXJyZW50UmVzaXplciwgcmVzaXplciwgdGhpcy5f
Y3VycmVudFJlc2l6ZXIpOwogICAgICAgICBpZiAocmVzaXplciAhPSB0aGlzLl9jdXJyZW50UmVz
aXplcikKQEAgLTEzMDYsMTIgKzEyODgsMTYgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9jdXJyZW50UmVzaXplciA9IG51bGw7CiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVu
dC5EaWRMYXlvdXQpOwotICAgIH0sCi0KLSAgICBDb2x1bW5SZXNpemVQYWRkaW5nOiAxMCwKKyAg
ICB9Cit9OwogCi0gICAgQ2VudGVyUmVzaXplck92ZXJCb3JkZXJBZGp1c3RtZW50OiAzLAotfQor
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50ID0geworICAgIERpZExheW91dDogImRhdGFncmlk
LWRpZC1sYXlvdXQiLAorICAgIFNvcnRDaGFuZ2VkOiAiZGF0YWdyaWQtc29ydC1jaGFuZ2VkIiwK
KyAgICBTZWxlY3RlZE5vZGVDaGFuZ2VkOiAiZGF0YWdyaWQtc2VsZWN0ZWQtbm9kZS1jaGFuZ2Vk
IiwKKyAgICBFeHBhbmRlZE5vZGU6ICJkYXRhZ3JpZC1leHBhbmRlZC1ub2RlIiwKKyAgICBDb2xs
YXBzZWROb2RlOiAiZGF0YWdyaWQtY29sbGFwc2VkLW5vZGUiCit9OwogCiBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQuUmVzaXplTWV0aG9kID0gewogICAgIE5lYXJlc3Q6ICJuZWFyZXN0IiwKQEAgLTEz
MTksMzkgKzEzMDUsNTYgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlJlc2l6ZU1ldGhvZCA9IHsK
ICAgICBMYXN0OiAibGFzdCIKIH07CiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQuU29ydE9yZGVyID0geworICAgIEluZGV0ZXJtaW5hdGU6ICJkYXRhLWdyaWQtc29y
dC1vcmRlci1pbmRldGVybWluYXRlIiwKKyAgICBBc2NlbmRpbmc6ICJkYXRhLWdyaWQtc29ydC1v
cmRlci1hc2NlbmRpbmciLAorICAgIERlc2NlbmRpbmc6ICJkYXRhLWdyaWQtc29ydC1vcmRlci1k
ZXNjZW5kaW5nIgorfTsKKworV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlByZXZpb3VzQ29sdW1uT3Jk
aW5hbFN5bWJvbCA9IFN5bWJvbCgicHJldmlvdXMtY29sdW1uLW9yZGluYWwiKTsKK1dlYkluc3Bl
Y3Rvci5EYXRhR3JpZC5OZXh0Q29sdW1uT3JkaW5hbFN5bWJvbCA9IFN5bWJvbCgibmV4dC1jb2x1
bW4tb3JkaW5hbCIpOworCitXZWJJbnNwZWN0b3IuRGF0YUdyaWQuQ29sdW1uUmVzaXplUGFkZGlu
ZyA9IDEwOworV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkNlbnRlclJlc2l6ZXJPdmVyQm9yZGVyQWRq
dXN0bWVudCA9IDM7CiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkYXRh
LCBoYXNDaGlsZHJlbikKK1dlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0Q29sdW1uQXNjZW5kaW5n
U3R5bGVDbGFzc05hbWUgPSAic29ydC1hc2NlbmRpbmciOworV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LlNvcnRDb2x1bW5EZXNjZW5kaW5nU3R5bGVDbGFzc05hbWUgPSAic29ydC1kZXNjZW5kaW5nIjsK
K1dlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0YWJsZUNvbHVtblN0eWxlQ2xhc3NOYW1lID0gInNv
cnRhYmxlIjsKKworV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZSA9IGNsYXNzIERhdGFHcmlkTm9k
ZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICB0aGlzLl9leHBhbmRlZCA9IGZh
bHNlOwotICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7Ci0gICAgdGhpcy5fY29weWFibGUgPSB0
cnVlOwotICAgIHRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7Ci0gICAgdGhpcy5f
ZGF0YSA9IGRhdGEgfHwge307Ci0gICAgdGhpcy5oYXNDaGlsZHJlbiA9IGhhc0NoaWxkcmVuIHx8
IGZhbHNlOwotICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICB0aGlzLmRhdGFHcmlkID0gbnVs
bDsKLSAgICB0aGlzLnBhcmVudCA9IG51bGw7Ci0gICAgdGhpcy5wcmV2aW91c1NpYmxpbmcgPSBu
dWxsOwotICAgIHRoaXMubmV4dFNpYmxpbmcgPSBudWxsOwotICAgIHRoaXMuZGlzY2xvc3VyZVRv
Z2dsZVdpZHRoID0gMTA7Ci19Ci0KLVdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBl
ID0geworICAgIGNvbnN0cnVjdG9yKGRhdGEsIGhhc0NoaWxkcmVuKQorICAgIHsKKyAgICAgICAg
c3VwZXIoKTsKKworICAgICAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNlOworICAgICAgICB0aGlz
Ll9zZWxlY3RlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9jb3B5YWJsZSA9IHRydWU7CisgICAg
ICAgIHRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7CisgICAgICAgIHRoaXMuX2Rh
dGEgPSBkYXRhIHx8IHt9OworICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gaGFzQ2hpbGRyZW4g
fHwgZmFsc2U7CisgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgdGhpcy5kYXRh
R3JpZCA9IG51bGw7CisgICAgICAgIHRoaXMucGFyZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5w
cmV2aW91c1NpYmxpbmcgPSBudWxsOworICAgICAgICB0aGlzLm5leHRTaWJsaW5nID0gbnVsbDsK
KyAgICAgICAgdGhpcy5kaXNjbG9zdXJlVG9nZ2xlV2lkdGggPSAxMDsKKyAgICB9CisKICAgICBn
ZXQgc2VsZWN0YWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gIXRoaXMuX2VsZW1lbnQgfHwg
IXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJoaWRkZW4iKTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBjb3B5YWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29w
eWFibGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29weWFibGUoeCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2NvcHlhYmxlID0geDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbGVtZW50
KCkKICAgICB7CkBAIC0xMzc1LDE1ICsxMzc4LDE1IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5v
ZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuY3JlYXRlQ2VsbHMoKTsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVDZWxsczog
ZnVuY3Rpb24oKQorICAgIGNyZWF0ZUNlbGxzKCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGNv
bHVtbklkZW50aWZpZXIgb2YgdGhpcy5kYXRhR3JpZC5vcmRlcmVkQ29sdW1ucykKICAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVDZWxsKGNvbHVtbklkZW50
aWZpZXIpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZnJlc2hJZk5lZWRlZDogZnVuY3Rpb24o
KQorICAgIHJlZnJlc2hJZk5lZWRlZCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX25lZWRz
UmVmcmVzaCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzOTEsOSArMTM5NCw5IEBAIFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5f
bmVlZHNSZWZyZXNoOwogCiAgICAgICAgIHRoaXMucmVmcmVzaCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgbmVlZHNSZWZyZXNoOiBmdW5jdGlvbigpCisgICAgbmVlZHNSZWZyZXNoKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX25lZWRzUmVmcmVzaCA9IHRydWU7CiAKQEAgLTE0MDQsMTggKzE0MDcs
MTggQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2NoZWR1bGVkUmVmcmVzaElkZW50aWZpZXIgPSBy
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5yZWZyZXNoLmJpbmQodGhpcykpOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZGF0YSh4KQogICAgIHsKICAgICAgICAgdGhpcy5f
ZGF0YSA9IHggfHwge307CiAgICAgICAgIHRoaXMubmVlZHNSZWZyZXNoKCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgcmV2ZWFsZWQoKQogICAgIHsKQEAgLTE0MzQsNyArMTQzNyw3IEBAIFdl
Ykluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3Jl
dmVhbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBzZXQgaGFzQ2hpbGRyZW4oeCkKICAgICB7CkBAIC0xNDU2LDEyICsxNDU5LDEyIEBAIFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICB7CiAgICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInBhcmVudCIsICJleHBhbmRlZCIpOwog
ICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFzQ2hpbGRyZW4oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0NoaWxkcmVuOwotICAgIH0sCisgICAgfQogCiAgICAg
c2V0IHJldmVhbGVkKHgpCiAgICAgewpAQCAtMTQ4MSw3ICsxNDg0LDcgQEAgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltp
XS5yZXZlYWxlZCA9IHggJiYgdGhpcy5leHBhbmRlZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBkZXB0aCgpCiAgICAgewpAQCAtMTQ5Miw3ICsxNDk1LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFH
cmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX2Rl
cHRoID0gMDsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RlcHRoOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGxlZnRQYWRkaW5nKCkKICAgICB7CkBAIC0xNTAxLDI0ICsxNTA0LDI0IEBAIFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2xlZnRQ
YWRkaW5nID0gdGhpcy5kZXB0aCAqIHRoaXMuZGF0YUdyaWQuaW5kZW50V2lkdGg7CiAgICAgICAg
IHJldHVybiB0aGlzLl9sZWZ0UGFkZGluZzsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzaG91
bGRSZWZyZXNoQ2hpbGRyZW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3VsZFJl
ZnJlc2hDaGlsZHJlbjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzaG91bGRSZWZyZXNoQ2hp
bGRyZW4oeCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHg7
CiAgICAgICAgIGlmICh4ICYmIHRoaXMuZXhwYW5kZWQpCiAgICAgICAgICAgICB0aGlzLmV4cGFu
ZCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGVkKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9zZWxlY3RlZDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzZWxlY3Rl
ZCh4KQogICAgIHsKQEAgLTE1MjYsMTIgKzE1MjksMTIgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnNlbGVjdCgpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICB0aGlzLmRlc2VsZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgZXhwYW5kZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkOwotICAg
IH0sCisgICAgfQogCiAgICAgc2V0IGV4cGFuZGVkKHgpCiAgICAgewpAQCAtMTUzOSw5ICsxNTQy
LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLmV4cGFuZCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLmNvbGxhcHNl
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAgcmVmcmVz
aCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnQgfHwgIXRoaXMuZGF0YUdyaWQp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTU1LDE0ICsxNTU4LDE0IEBAIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVt
b3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5jcmVhdGVDZWxscygpOwotICAgIH0sCisgICAg
fQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAg
ICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgotICAg
IH0sCisgICAgfQogCi0gICAgY3JlYXRlQ2VsbDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikK
KyAgICBjcmVhdGVDZWxsKGNvbHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAgICB2YXIgY2Vs
bEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwogICAgICAgICBjZWxsRWxl
bWVudC5jbGFzc05hbWUgPSBjb2x1bW5JZGVudGlmaWVyICsgIi1jb2x1bW4iOwpAQCAtMTU4Nywz
MCArMTU5MCwzMCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiBjZWxsRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAot
ICAgIGNyZWF0ZUNlbGxDb250ZW50OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAgIGNy
ZWF0ZUNlbGxDb250ZW50KGNvbHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5kYXRhW2NvbHVtbklkZW50aWZpZXJdIHx8ICJcdTIwMGIiOyAvLyBaZXJvIHdpZHRoIHNw
YWNlIHRvIGtlZXAgdGhlIGNlbGwgZnJvbSBjb2xsYXBzaW5nLgotICAgIH0sCisgICAgfQogCi0g
ICAgZWxlbWVudFdpdGhDb2x1bW5JZGVudGlmaWVyOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVy
KQorICAgIGVsZW1lbnRXaXRoQ29sdW1uSWRlbnRpZmllcihjb2x1bW5JZGVudGlmaWVyKQogICAg
IHsKICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5kYXRhR3JpZC5vcmRlcmVkQ29sdW1ucy5pbmRl
eE9mKGNvbHVtbklkZW50aWZpZXIpOwogICAgICAgICBpZiAoaW5kZXggPT09IC0xKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2hpbGRy
ZW5baW5kZXhdOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gU2hhcmUgdGhlc2UgZnVuY3Rpb25z
IHdpdGggRGF0YUdyaWQuIFRoZXkgYXJlIHdyaXR0ZW4gdG8gd29yayB3aXRoIGEgRGF0YUdyaWRO
b2RlIHRoaXMgb2JqZWN0LgotICAgIGFwcGVuZENoaWxkOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlLmFwcGVuZENoaWxkLAotICAgIGluc2VydENoaWxkOiBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQucHJvdG90eXBlLmluc2VydENoaWxkLAotICAgIHJlbW92ZUNoaWxkOiBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkLAotICAgIHJlbW92ZUNoaWxkcmVuOiBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuLAotICAgIHJlbW92
ZUNoaWxkcmVuUmVjdXJzaXZlOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92
ZUNoaWxkcmVuUmVjdXJzaXZlLAorICAgIGFwcGVuZENoaWxkKCkgeyByZXR1cm4gV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLnByb3RvdHlwZS5hcHBlbmRDaGlsZC5hcHBseSh0aGlzLCBhcmd1bWVudHMp
OyB9CisgICAgaW5zZXJ0Q2hpbGQoKSB7IHJldHVybiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlLmluc2VydENoaWxkLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KKyAgICByZW1vdmVD
aGlsZCgpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVtb3ZlQ2hp
bGQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQorICAgIHJlbW92ZUNoaWxkcmVuKCkgeyByZXR1
cm4gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbi5hcHBseSh0
aGlzLCBhcmd1bWVudHMpOyB9CisgICAgcmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUoKSB7IHJldHVy
biBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZl
LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KIAotICAgIF9yZWNhbGN1bGF0ZVNpYmxpbmdzOiBm
dW5jdGlvbihteUluZGV4KQorICAgIF9yZWNhbGN1bGF0ZVNpYmxpbmdzKG15SW5kZXgpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMucGFyZW50KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTYz
MCw5ICsxNjMzLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLm5leHRTaWJsaW5nID0gbmV4dENoaWxkOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIHRoaXMubmV4dFNpYmxpbmcgPSBudWxsOwotICAgIH0sCisgICAgfQogCi0g
ICAgY29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICBjb2xsYXBzZSgpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fZWxlbWVudCkKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJl
bW92ZSgiZXhwYW5kZWQiKTsKQEAgLTE2NDYsOSArMTY0OSw5IEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLmRhdGFHcmlkKQogICAg
ICAgICAgICAgdGhpcy5kYXRhR3JpZC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLkV2ZW50LkNvbGxhcHNlZE5vZGUsIHtkYXRhR3JpZE5vZGU6IHRoaXN9KTsK
LSAgICB9LAorICAgIH0KIAotICAgIGNvbGxhcHNlUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKCkKKyAg
ICBjb2xsYXBzZVJlY3Vyc2l2ZWx5KCkKICAgICB7CiAgICAgICAgIHZhciBpdGVtID0gdGhpczsK
ICAgICAgICAgd2hpbGUgKGl0ZW0pIHsKQEAgLTE2NTYsOSArMTY1OSw5IEBAIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGl0ZW0uY29sbGFw
c2UoKTsKICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnRyYXZlcnNlTmV4dE5vZGUoZmFsc2UsIHRo
aXMsIHRydWUpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBleHBhbmQ6IGZ1bmN0
aW9uKCkKKyAgICBleHBhbmQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVu
IHx8IHRoaXMuZXhwYW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjk0LDE4ICsxNjk3
LDE4IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAg
IGlmICh0aGlzLmRhdGFHcmlkKQogICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LkV4cGFuZGVkTm9kZSwg
e2RhdGFHcmlkTm9kZTogdGhpc30pOwotICAgIH0sCisgICAgfQogCi0gICAgZXhwYW5kUmVjdXJz
aXZlbHk6IGZ1bmN0aW9uKCkKKyAgICBleHBhbmRSZWN1cnNpdmVseSgpCiAgICAgewogICAgICAg
ICB2YXIgaXRlbSA9IHRoaXM7CiAgICAgICAgIHdoaWxlIChpdGVtKSB7CiAgICAgICAgICAgICBp
dGVtLmV4cGFuZCgpOwogICAgICAgICAgICAgaXRlbSA9IGl0ZW0udHJhdmVyc2VOZXh0Tm9kZShm
YWxzZSwgdGhpcyk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbDogZnVu
Y3Rpb24oKQorICAgIHJldmVhbCgpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudEFuY2VzdG9y
ID0gdGhpcy5wYXJlbnQ7CiAgICAgICAgIHdoaWxlIChjdXJyZW50QW5jZXN0b3IgJiYgIWN1cnJl
bnRBbmNlc3Rvci5yb290KSB7CkBAIC0xNzE3LDkgKzE3MjAsOSBAQCBXZWJJbnNwZWN0b3IuRGF0
YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5lbGVtZW50LnNjcm9sbEludG9W
aWV3SWZOZWVkZWQoZmFsc2UpOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKCJyZXZlYWxlZCIpOwotICAgIH0sCisgICAgfQogCi0gICAgc2VsZWN0OiBmdW5jdGlvbihz
dXByZXNzU2VsZWN0ZWRFdmVudCkKKyAgICBzZWxlY3Qoc3VwcmVzc1NlbGVjdGVkRXZlbnQpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuZGF0YUdyaWQgfHwgIXRoaXMuc2VsZWN0YWJsZSB8fCB0
aGlzLnNlbGVjdGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTczNSwxNSArMTczOCwxNSBA
QCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAo
IXN1cHJlc3NTZWxlY3RlZEV2ZW50KQogICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9k
ZUNoYW5nZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsQW5kU2VsZWN0OiBmdW5jdGlv
bigpCisgICAgcmV2ZWFsQW5kU2VsZWN0KCkKICAgICB7CiAgICAgICAgIHRoaXMucmV2ZWFsKCk7
CiAgICAgICAgIHRoaXMuc2VsZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkZXNlbGVjdDog
ZnVuY3Rpb24oc3VwcmVzc0Rlc2VsZWN0ZWRFdmVudCkKKyAgICBkZXNlbGVjdChzdXByZXNzRGVz
ZWxlY3RlZEV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkIHx8IHRoaXMu
ZGF0YUdyaWQuc2VsZWN0ZWROb2RlICE9PSB0aGlzIHx8ICF0aGlzLnNlbGVjdGVkKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTc1Niw5ICsxNzU5LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCFzdXByZXNzRGVzZWxlY3RlZEV2ZW50
KQogICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQpOwotICAgIH0sCisg
ICAgfQogCi0gICAgdHJhdmVyc2VOZXh0Tm9kZTogZnVuY3Rpb24oc2tpcEhpZGRlbiwgc3RheVdp
dGhpbiwgZG9udFBvcHVsYXRlLCBpbmZvKQorICAgIHRyYXZlcnNlTmV4dE5vZGUoc2tpcEhpZGRl
biwgc3RheVdpdGhpbiwgZG9udFBvcHVsYXRlLCBpbmZvKQogICAgIHsKICAgICAgICAgaWYgKCFk
b250UG9wdWxhdGUgJiYgdGhpcy5oYXNDaGlsZHJlbikKICAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKCJwb3B1bGF0ZSIpOwpAQCAtMTc5MSw5ICsxNzk0LDkgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKIAogICAgICAgICByZXR1cm4gKCFza2lwSGlkZGVuIHx8IG5vZGUucmV2ZWFsZWQpID8g
bm9kZS5uZXh0U2libGluZyA6IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmF2ZXJzZVBy
ZXZpb3VzTm9kZTogZnVuY3Rpb24oc2tpcEhpZGRlbiwgZG9udFBvcHVsYXRlKQorICAgIHRyYXZl
cnNlUHJldmlvdXNOb2RlKHNraXBIaWRkZW4sIGRvbnRQb3B1bGF0ZSkKICAgICB7CiAgICAgICAg
IHZhciBub2RlID0gKCFza2lwSGlkZGVuIHx8IHRoaXMucmV2ZWFsZWQpID8gdGhpcy5wcmV2aW91
c1NpYmxpbmcgOiBudWxsOwogICAgICAgICBpZiAoIWRvbnRQb3B1bGF0ZSAmJiBub2RlICYmIG5v
ZGUuaGFzQ2hpbGRyZW4pCkBAIC0xODEyLDkgKzE4MTUsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdy
aWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAg
IHJldHVybiB0aGlzLnBhcmVudDsKLSAgICB9LAorICAgIH0KIAotICAgIGlzRXZlbnRXaXRoaW5E
aXNjbG9zdXJlVHJpYW5nbGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGlzRXZlbnRXaXRoaW5EaXNj
bG9zdXJlVHJpYW5nbGUoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaGFzQ2hpbGRy
ZW4pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODI0LDkgKzE4MjcsOSBAQCBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgbGVmdCA9
IGNlbGwudG90YWxPZmZzZXRMZWZ0ICsgdGhpcy5sZWZ0UGFkZGluZzsKICAgICAgICAgcmV0dXJu
IGV2ZW50LnBhZ2VYID49IGxlZnQgJiYgZXZlbnQucGFnZVggPD0gbGVmdCArIHRoaXMuZGlzY2xv
c3VyZVRvZ2dsZVdpZHRoOwotICAgIH0sCisgICAgfQogCi0gICAgX2F0dGFjaDogZnVuY3Rpb24o
KQorICAgIF9hdHRhY2goKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkIHx8IHRo
aXMuX2F0dGFjaGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTg1NCw5ICsxODU3LDkgQEAg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlz
LmV4cGFuZGVkKQogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVu
Lmxlbmd0aDsgKytpKQogICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5baV0uX2F0dGFjaCgp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2RldGFjaDogZnVuY3Rpb24oKQorICAgIF9kZXRhY2go
KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9hdHRhY2hlZCkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTE4NjgsOSArMTg3MSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90
eXBlID0gewogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5n
dGg7ICsraSkKICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5baV0uX2RldGFjaCgpOwotICAgIH0s
CisgICAgfQogCi0gICAgc2F2ZVBvc2l0aW9uOiBmdW5jdGlvbigpCisgICAgc2F2ZVBvc2l0aW9u
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zYXZlZFBvc2l0aW9uKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTg4Myw5ICsxODg2LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICBwYXJlbnQ6IHRoaXMucGFyZW50LAogICAgICAgICAg
ICAgaW5kZXg6IHRoaXMucGFyZW50LmNoaWxkcmVuLmluZGV4T2YodGhpcykKICAgICAgICAgfTsK
LSAgICB9LAorICAgIH0KIAotICAgIHJlc3RvcmVQb3NpdGlvbjogZnVuY3Rpb24oKQorICAgIHJl
c3RvcmVQb3NpdGlvbigpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3NhdmVkUG9zaXRpb24p
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xODk1LDIzICsxODk4LDE5IEBAIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zYXZl
ZFBvc2l0aW9uOwogICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7Cit9OwogCiAvLyBV
c2VkIHRvIGNyZWF0ZSBhIG5ldyB0YWJsZSByb3cgd2hlbiBlbnRlcmluZyBuZXcgZGF0YSBieSBl
ZGl0aW5nIGNlbGxzLgotV2ViSW5zcGVjdG9yLlBsYWNlaG9sZGVyRGF0YUdyaWROb2RlID0gZnVu
Y3Rpb24oZGF0YSkKK1dlYkluc3BlY3Rvci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZSA9IGNsYXNz
IFBsYWNlaG9sZGVyRGF0YUdyaWROb2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9k
ZQogewotICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBkYXRhLCBmYWxz
ZSk7Ci0gICAgdGhpcy5pc1BsYWNlaG9sZGVyTm9kZSA9IHRydWU7Ci19Ci0KLVdlYkluc3BlY3Rv
ci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZSwKLSAgICBfX3Byb3RvX186IFdl
Ykluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLAorICAgIGNvbnN0cnVjdG9yKGRhdGEp
CisgICAgeworICAgICAgICBzdXBlcihkYXRhLCBmYWxzZSk7CisgICAgICAgIHRoaXMuaXNQbGFj
ZWhvbGRlck5vZGUgPSB0cnVlOworICAgIH0KIAotICAgIG1ha2VOb3JtYWw6IGZ1bmN0aW9uKCkK
KyAgICBtYWtlTm9ybWFsKCkKICAgICB7CiAgICAgICAgIHRoaXMuaXNQbGFjZWhvbGRlck5vZGUg
PSBmYWxzZTsKICAgICB9Ci19Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZUNvbnRlbnRW
aWV3LmpzCmluZGV4IDk3ZmFlM2IyOWJhYzY5NWRkMGZkNDBjMjljY2VjYWJkNjQ3MmEwZjUuLjg0
NDhiMDRhYjM1MTRhYjk2NjI0M2Y0NThiYTFjZTZlMWU3NTkwNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVGFibGVDb250ZW50
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
YXRhYmFzZVRhYmxlQ29udGVudFZpZXcuanMKQEAgLTg2LDcgKzg2LDcgQEAgV2ViSW5zcGVjdG9y
LkRhdGFiYXNlVGFibGVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIGhvdyB0
byBzb3J0IGFyYml0cmFyeSBjb2x1bW5zLgogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKIAotICAgICAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQuY3JlYXRlU29ydGFibGVEYXRhR3JpZChjb2x1bW5OYW1lcywgdmFsdWVzKTsKKyAgICAg
ICAgdGhpcy5fZGF0YUdyaWQgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY3JlYXRlU29ydGFibGVE
YXRhR3JpZChjb2x1bW5OYW1lcywgdmFsdWVzKTsKICAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3Jp
ZCB8fCAhdGhpcy5fZGF0YUdyaWQuZWxlbWVudCkgewogICAgICAgICAgICAgdGhpcy5fZGF0YUdy
aWQgPSB1bmRlZmluZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZUVudHJ5RGF0YUdyaWROb2RlLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlRW50
cnlEYXRhR3JpZE5vZGUuanMKaW5kZXggZDgzOWZmYzgxOGUxZGI5MWUxOTc4YTAwOTY0YzgxMjdi
YWU5YTQ3YS4uNTNmOTM4NGQ2MTVkNTIxYmZkYzJlYjgyZDdkOTA5M2E2NjZmZDQxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERh
dGFiYXNlRW50cnlEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlRW50cnlEYXRhR3JpZE5vZGUuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDMwICsyMywyOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VFbnRyeURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9u
KGVudHJ5KQorV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZUVudHJ5RGF0YUdyaWROb2RlID0g
Y2xhc3MgSW5kZXhlZERhdGFiYXNlRW50cnlEYXRhR3JpZE5vZGUgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuRGF0YUdyaWROb2RlCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxsKHRo
aXMsIGVudHJ5KTsKLQotICAgIHRoaXMuX2VudHJ5ID0gZW50cnk7Ci19OworICAgIGNvbnN0cnVj
dG9yKGVudHJ5KQorICAgIHsKKyAgICAgICAgc3VwZXIoZW50cnkpOwogCi1XZWJJbnNwZWN0b3Iu
SW5kZXhlZERhdGFiYXNlRW50cnlEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlRW50cnlEYXRhR3JpZE5vZGUsCi0g
ICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSwKKyAgICAg
ICAgdGhpcy5fZW50cnkgPSBlbnRyeTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdl
dCBlbnRyeSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZW50cnk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBjcmVhdGVDZWxsQ29udGVudDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwg
Y2VsbCkKKyAgICBjcmVhdGVDZWxsQ29udGVudChjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQogICAg
IHsKICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5fZW50cnlbY29sdW1uSWRlbnRpZmllcl07CiAg
ICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpCiAg
ICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNyZWF0ZU9iamVj
dFRyZWVPckZvcm1hdHRlZFZhbHVlRm9yUmVtb3RlT2JqZWN0KHZhbHVlLCBudWxsLCB0cnVlKTsK
IAotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuY3Jl
YXRlQ2VsbENvbnRlbnQuY2FsbCh0aGlzLCBjb2x1bW5JZGVudGlmaWVyLCBjZWxsKTsKKyAgICAg
ICAgcmV0dXJuIHN1cGVyLmNyZWF0ZUNlbGxDb250ZW50KGNvbHVtbklkZW50aWZpZXIsIGNlbGwp
OwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9MYXllclRyZWVEYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllclRyZWVEYXRhR3JpZE5vZGUuanMKaW5kZXggMDE0
NTliNWFlNTI5MGI3MTNhNjlhMzNmMDU3YjE0MDA4NWZhN2U2MC4uYzg5MDE2NWU4NzIzZDY0Nzhk
MTc4MzRhZWY1YzhjMzI5YWNlOTE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJUcmVlRGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyVHJlZURhdGFHcmlkTm9k
ZS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsNDAgKzIzLDM4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLkxheWVyVHJlZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKGxh
eWVyKQorV2ViSW5zcGVjdG9yLkxheWVyVHJlZURhdGFHcmlkTm9kZSA9IGNsYXNzIExheWVyVHJl
ZURhdGFHcmlkTm9kZSBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9vdXRsZXRz
ID0ge307Ci0KLSAgICB0aGlzLmxheWVyID0gbGF5ZXI7Ci19OworICAgIGNvbnN0cnVjdG9yKGxh
eWVyKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotV2ViSW5zcGVjdG9yLkxheWVyVHJlZURh
dGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUsCisgICAgICAgIHRoaXMuX291dGxldHMgPSB7fTsKKyAgICAgICAgdGhpcy5s
YXllciA9IGxheWVyOworICAgIH0KIAogICAgIC8vIERhdGFHcmlkTm9kZSBPdmVycmlkZXMuCiAK
LSAgICBjcmVhdGVDZWxsczogZnVuY3Rpb24oKQorICAgIGNyZWF0ZUNlbGxzKCkKICAgICB7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGxzLmNh
bGwodGhpcyk7CisgICAgICAgIHN1cGVyLmNyZWF0ZUNlbGxzKCk7CiAKICAgICAgICAgdGhpcy5f
Y2VsbHNXZXJlQ3JlYXRlZCA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVDZWxs
Q29udGVudDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgY2VsbCkKKyAgICBjcmVhdGVDZWxs
Q29udGVudChjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQogICAgIHsKICAgICAgICAgdmFyIGNlbGwg
PSBjb2x1bW5JZGVudGlmaWVyID09PSAibmFtZSIgPyB0aGlzLl9tYWtlTmFtZUNlbGwoKSA6IHRo
aXMuX21ha2VPdXRsZXQoY29sdW1uSWRlbnRpZmllciwgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
KSk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNlbGwoY29sdW1uSWRlbnRpZmllcik7CiAgICAgICAg
IHJldHVybiBjZWxsOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
bGF5ZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xheWVyOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IGxheWVyKGxheWVyKQogICAgIHsKQEAgLTY5LDEyICs2NywxMiBAQCBXZWJJ
bnNwZWN0b3IuTGF5ZXJUcmVlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHBhaW50Q291bnQ6IGxheWVyLnBhaW50Q291bnQgfHwgIlx1MjAxNCIsCiAgICAgICAgICAgICBt
ZW1vcnk6IE51bWJlci5ieXRlc1RvU3RyaW5nKGxheWVyLm1lbW9yeSB8fCAwKQogICAgICAgICB9
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2RhdGE7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZGF0YShkYXRhKQogICAgIHsK
QEAgLTg2LDE3ICs4NCwxNyBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGF0YUdyaWROb2RlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9jZWxsc1dlcmVDcmVhdGVkKQogICAg
ICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNlbGwoY29sdW1uSWRlbnRpZmllcik7CiAgICAgICAg
IH0sIHRoaXMpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX21ha2VP
dXRsZXQ6IGZ1bmN0aW9uKG5hbWUsIGVsZW1lbnQpCisgICAgX21ha2VPdXRsZXQobmFtZSwgZWxl
bWVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX291dGxldHNbbmFtZV0gPSBlbGVtZW50OwogICAg
ICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9tYWtlTmFtZUNlbGw6
IGZ1bmN0aW9uKCkKKyAgICBfbWFrZU5hbWVDZWxsKCkKICAgICB7CiAgICAgICAgIHZhciBmcmFn
bWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKIApAQCAtMTE5LDE4ICsx
MTcsMTggQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJlZmxlY3Rpb25MYWJlbC50ZXh0Q29udGVudCA9ICIgXHUyMDE0ICIgKyBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlJlZmxlY3Rpb24iKTsKIAogICAgICAgICByZXR1cm4gZnJhZ21l
bnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlQ2VsbDogZnVuY3Rpb24oY29sdW1uSWRl
bnRpZmllcikKKyAgICBfdXBkYXRlQ2VsbChjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAg
ICAgdmFyIGRhdGEgPSB0aGlzLl9kYXRhW2NvbHVtbklkZW50aWZpZXJdOwogICAgICAgICBpZiAo
Y29sdW1uSWRlbnRpZmllciA9PT0gIm5hbWUiKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlTmFt
ZUNlbGxEYXRhKGRhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9vdXRsZXRz
W2NvbHVtbklkZW50aWZpZXJdLnRleHRDb250ZW50ID0gZGF0YTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF91cGRhdGVOYW1lQ2VsbERhdGE6IGZ1bmN0aW9uKGRhdGEpCisgICAgX3VwZGF0ZU5hbWVD
ZWxsRGF0YShkYXRhKQogICAgIHsKICAgICAgICAgdmFyIGxheWVyID0gdGhpcy5fbGF5ZXI7CiAg
ICAgICAgIHZhciBsYWJlbCA9IHRoaXMuX291dGxldHMubGFiZWw7CkBAIC0xNTcsMTMgKzE1NSwx
MSBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicmVmbGVjdGlvbiIpOwogICAgICAgICBl
bHNlIGlmIChsYXllci5wc2V1ZG9FbGVtZW50KQogICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJwc2V1ZG8tZWxlbWVudCIpOwotICAgIH0sCisgICAgfQogCi0gICAgX2dvVG9BcnJv
d1dhc0NsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZ29Ub0Fycm93V2FzQ2xpY2tlZCgpCiAgICAg
ewogICAgICAgICB2YXIgZG9tTm9kZSA9IFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5ub2Rl
Rm9ySWQodGhpcy5fbGF5ZXIubm9kZUlkKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dNYWlu
RnJhbWVET01UcmVlKGRvbU5vZGUpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5MYXllclRy
ZWVEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVEYXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lRGF0YUdyaWQuanMKaW5k
ZXggNjQzODU0MjhkYjMxM2Q5MTA3M2U0OTEzNDEwYjE5ZmFjNzgyNTBlNy4uODI5MzI5NjNhYjIz
YTRlZjYxN2Y2YzU2NDIyMGE2Y2FmM2NlMjBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVEYXRhR3JpZC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGlu
ZURhdGFHcmlkLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywyMCArMjMsMTcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVEYXRhR3JpZCA9IGZ1
bmN0aW9uKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxl
dGVDYWxsYmFjaykKK1dlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFHcmlkID0gY2xhc3Mg
TGF5b3V0VGltZWxpbmVEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFH
cmlkCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuY2FsbCh0aGlzLCB0cmVl
T3V0bGluZSwgY29sdW1ucywgZGVsZWdhdGUsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJhY2sp
OwotfTsKLQotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVEYXRhR3JpZCwK
KyAgICBjb25zdHJ1Y3Rvcih0cmVlT3V0bGluZSwgY29sdW1ucywgZGVsZWdhdGUsIGVkaXRDYWxs
YmFjaywgZGVsZXRlQ2FsbGJhY2spCisgICAgeworICAgICAgICBzdXBlcih0cmVlT3V0bGluZSwg
Y29sdW1ucywgZGVsZWdhdGUsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJhY2spOworICAgIH0K
IAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgY2FsbEZyYW1lUG9wb3ZlckFuY2hvckVsZW1lbnQ6
IGZ1bmN0aW9uKCkKKyAgICBjYWxsRnJhbWVQb3BvdmVyQW5jaG9yRWxlbWVudCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE5vZGUuZWxlbWVudFdpdGhDb2x1bW5JZGVudGlm
aWVyKCJsb2NhdGlvbiIpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGlu
ZURhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRh
R3JpZC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZURhdGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lRGF0YUdyaWROb2Rl
LmpzCmluZGV4IDQ4NTg1MzNhMzdhOGVlZDExN2M0N2RhMGU5NDUyOWUwYjVkOGNkOGEuLjkxNmNh
MTQzMTBjNDFjYTYyYzNmMzRkYTczNDgyMmU0ZmE0MWU4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lRGF0YUdyaWRO
b2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xh
eW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw0MiArMjMsMzQgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxp
bmVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihsYXlvdXRUaW1lbGluZVJlY29yZCwgYmFzZVN0YXJ0
VGltZSkKK1dlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFHcmlkTm9kZSA9IGNsYXNzIExh
eW91dFRpbWVsaW5lRGF0YUdyaWROb2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0
YUdyaWROb2RlCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLmNhbGwo
dGhpcywgZmFsc2UsIG51bGwpOwotCi0gICAgdGhpcy5fcmVjb3JkID0gbGF5b3V0VGltZWxpbmVS
ZWNvcmQ7Ci0gICAgdGhpcy5fYmFzZVN0YXJ0VGltZSA9IGJhc2VTdGFydFRpbWUgfHwgMDsKLX07
Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQg
d2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29u
c3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWROb2Rl
KTsKLQotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLkljb25TdHlsZUNs
YXNzTmFtZSA9ICJpY29uIjsKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFHcmlkTm9k
ZS5TdWJ0aXRsZVN0eWxlQ2xhc3NOYW1lID0gInN1YnRpdGxlIjsKKyAgICBjb25zdHJ1Y3Rvcihs
YXlvdXRUaW1lbGluZVJlY29yZCwgYmFzZVN0YXJ0VGltZSkKKyAgICB7CisgICAgICAgIHN1cGVy
KGZhbHNlLCBudWxsKTsKIAotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWROb2Rl
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkxheW91dFRpbWVs
aW5lRGF0YUdyaWROb2RlLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0
YUdyaWROb2RlLnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fcmVjb3JkID0gbGF5b3V0VGltZWxp
bmVSZWNvcmQ7CisgICAgICAgIHRoaXMuX2Jhc2VTdGFydFRpbWUgPSBiYXNlU3RhcnRUaW1lIHx8
IDA7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgcmVjb3JkKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVj
b3JkcygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX3JlY29yZF07Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgZGF0YSgpCiAgICAgewogICAgICAgICByZXR1cm4ge2V2ZW50VHlwZTog
dGhpcy5fcmVjb3JkLmV2ZW50VHlwZSwgd2lkdGg6IHRoaXMuX3JlY29yZC53aWR0aCwgaGVpZ2h0
OiB0aGlzLl9yZWNvcmQuaGVpZ2h0LCBhcmVhOiB0aGlzLl9yZWNvcmQud2lkdGggKiB0aGlzLl9y
ZWNvcmQuaGVpZ2h0LCBzdGFydFRpbWU6IHRoaXMuX3JlY29yZC5zdGFydFRpbWUsIHRvdGFsVGlt
ZTogdGhpcy5fcmVjb3JkLmR1cmF0aW9uLCBsb2NhdGlvbjogdGhpcy5fcmVjb3JkLmluaXRpYXRv
ckNhbGxGcmFtZX07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVDZWxsQ29udGVudDogZnVu
Y3Rpb24oY29sdW1uSWRlbnRpZmllciwgY2VsbCkKKyAgICBjcmVhdGVDZWxsQ29udGVudChjb2x1
bW5JZGVudGlmaWVyLCBjZWxsKQogICAgIHsKICAgICAgICAgY29uc3QgZW1wdHlWYWx1ZVBsYWNl
aG9sZGVyU3RyaW5nID0gIlx1MjAxNCI7CiAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuZGF0YVtj
b2x1bW5JZGVudGlmaWVyXTsKQEAgLTgxLDYgKzczLDYgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRp
bWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBpc05h
Tih2YWx1ZSkgPyBlbXB0eVZhbHVlUGxhY2Vob2xkZXJTdHJpbmcgOiBOdW1iZXIuc2Vjb25kc1Rv
U3RyaW5nKHZhbHVlLCB0cnVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGxDb250ZW50LmNh
bGwodGhpcywgY29sdW1uSWRlbnRpZmllciwgY2VsbCk7CisgICAgICAgIHJldHVybiBzdXBlci5j
cmVhdGVDZWxsQ29udGVudChjb2x1bW5JZGVudGlmaWVyLCBjZWxsKTsKICAgICB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVT
ZXREYXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Byb2JlU2V0RGF0YUdyaWQuanMKaW5kZXggNTFhMTliYThjYmUyNzYxNDFiNTQ2MTEzYmJmNTlh
ZTkxMGI0ZTViMi4uODM0NGI0ZTg4NmU4NzYzNDE4MmM1NTkwYjMzMWY5NTA0NDQ3YzYzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVT
ZXREYXRhR3JpZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Qcm9iZVNldERhdGFHcmlkLmpzCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsNzUgKzI0LDY3IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkID0gZnVu
Y3Rpb24ocHJvYmVTZXQpCitXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZCA9IGNsYXNzIFBy
b2JlU2V0RGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQKIHsKLSAgICBjb25z
b2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldCwgIklu
dmFsaWQgUHJvYmVTZXQgYXJndW1lbnQ6ICIsIHByb2JlU2V0KTsKLSAgICB0aGlzLnByb2JlU2V0
ID0gcHJvYmVTZXQ7Ci0KLSAgICB2YXIgY29sdW1uc0RhdGEgPSB7fTsKLSAgICBmb3IgKHZhciBw
cm9iZSBvZiBwcm9iZVNldC5wcm9iZXMpIHsKLSAgICAgICAgdmFyIHByb2JlVGl0bGUgPSBwcm9i
ZS5leHByZXNzaW9uIHx8IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHVuaW5pdGlhbGl6ZWQpIik7
Ci0gICAgICAgIGNvbHVtbnNEYXRhW3Byb2JlLmlkXSA9IHsgdGl0bGU6IHByb2JlVGl0bGUgfTsK
LSAgICB9Ci0KLSAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zRGF0
YSk7CisgICAgY29uc3RydWN0b3IocHJvYmVTZXQpCisgICAgeworICAgICAgICBjb25zb2xlLmFz
c2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldCwgIkludmFsaWQg
UHJvYmVTZXQgYXJndW1lbnQ6ICIsIHByb2JlU2V0KTsKKyAgICAgICAgdGhpcy5wcm9iZVNldCA9
IHByb2JlU2V0OwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImlubGluZSIpOwor
ICAgICAgICB2YXIgY29sdW1ucyA9IHt9OworICAgICAgICBmb3IgKHZhciBwcm9iZSBvZiBwcm9i
ZVNldC5wcm9iZXMpIHsKKyAgICAgICAgICAgIHZhciB0aXRsZSA9IHByb2JlLmV4cHJlc3Npb24g
fHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIodW5pbml0aWFsaXplZCkiKTsKKyAgICAgICAgICAg
IGNvbHVtbnNbcHJvYmUuaWRdID0geyB0aXRsZSB9OworICAgICAgICB9CiAKLSAgICB0aGlzLl9m
cmFtZU5vZGVzID0gbmV3IE1hcDsKLSAgICB0aGlzLl9ub2Rlc1NpbmNlTGFzdE5hdmlnYXRpb24g
PSBbXTsKKyAgICAgICAgc3VwZXIoY29sdW1ucyk7CiAKLSAgICB0aGlzLl9saXN0ZW5lcnMgPSBu
ZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZXQodGhpcywgIlByb2JlU2V0RGF0YUdyaWQg
aW5zdGFuY2UgbGlzdGVuZXJzIik7Ci0gICAgdGhpcy5fbGlzdGVuZXJzLnJlZ2lzdGVyKHByb2Jl
U2V0LCBXZWJJbnNwZWN0b3IuUHJvYmVTZXQuRXZlbnQuUHJvYmVBZGRlZCwgdGhpcy5fc2V0dXBQ
cm9iZSk7Ci0gICAgdGhpcy5fbGlzdGVuZXJzLnJlZ2lzdGVyKHByb2JlU2V0LCBXZWJJbnNwZWN0
b3IuUHJvYmVTZXQuRXZlbnQuUHJvYmVSZW1vdmVkLCB0aGlzLl90ZWFyZG93blByb2JlKTsKLSAg
ICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIocHJvYmVTZXQsIFdlYkluc3BlY3Rvci5Qcm9iZVNl
dC5FdmVudC5TYW1wbGVzQ2xlYXJlZCwgdGhpcy5fc2V0dXBEYXRhKTsKLSAgICB0aGlzLl9saXN0
ZW5lcnMucmVnaXN0ZXIoV2ViSW5zcGVjdG9yLlByb2JlLCBXZWJJbnNwZWN0b3IuUHJvYmUuRXZl
bnQuRXhwcmVzc2lvbkNoYW5nZWQsIHRoaXMuX3Byb2JlRXhwcmVzc2lvbkNoYW5nZWQpOwotICAg
IHRoaXMuX2xpc3RlbmVycy5pbnN0YWxsKCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJpbmxpbmUiKTsKIAotICAgIHRoaXMuX3NldHVwRGF0YSgpOwotfTsKKyAgICAgICAg
dGhpcy5fZnJhbWVOb2RlcyA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX25vZGVzU2luY2VMYXN0
TmF2aWdhdGlvbiA9IFtdOwogCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZC5EYXRhVXBk
YXRlZFN0eWxlQ2xhc3NOYW1lID0gImRhdGEtdXBkYXRlZCI7Ci1XZWJJbnNwZWN0b3IuUHJvYmVT
ZXREYXRhR3JpZC5QYXN0RnJhbWVTdHlsZUNsYXNzTmFtZSA9ICJwYXN0LXZhbHVlIjsKLVdlYklu
c3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLkhpZ2hsaWdodGVkRnJhbWVTdHlsZUNsYXNzTmFtZSA9
ICJoaWdobGlnaHRlZCI7CisgICAgICAgIHRoaXMuX2xpc3RlbmVycyA9IG5ldyBXZWJJbnNwZWN0
b3IuRXZlbnRMaXN0ZW5lclNldCh0aGlzLCAiUHJvYmVTZXREYXRhR3JpZCBpbnN0YW5jZSBsaXN0
ZW5lcnMiKTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnJlZ2lzdGVyKHByb2JlU2V0LCBXZWJJ
bnNwZWN0b3IuUHJvYmVTZXQuRXZlbnQuUHJvYmVBZGRlZCwgdGhpcy5fc2V0dXBQcm9iZSk7Cisg
ICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rlcihwcm9iZVNldCwgV2ViSW5zcGVjdG9yLlBy
b2JlU2V0LkV2ZW50LlByb2JlUmVtb3ZlZCwgdGhpcy5fdGVhcmRvd25Qcm9iZSk7CisgICAgICAg
IHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rlcihwcm9iZVNldCwgV2ViSW5zcGVjdG9yLlByb2JlU2V0
LkV2ZW50LlNhbXBsZXNDbGVhcmVkLCB0aGlzLl9zZXR1cERhdGEpOworICAgICAgICB0aGlzLl9s
aXN0ZW5lcnMucmVnaXN0ZXIoV2ViSW5zcGVjdG9yLlByb2JlLCBXZWJJbnNwZWN0b3IuUHJvYmUu
RXZlbnQuRXhwcmVzc2lvbkNoYW5nZWQsIHRoaXMuX3Byb2JlRXhwcmVzc2lvbkNoYW5nZWQpOwor
ICAgICAgICB0aGlzLl9saXN0ZW5lcnMuaW5zdGFsbCgpOwogCi1XZWJJbnNwZWN0b3IuUHJvYmVT
ZXREYXRhR3JpZC5EYXRhVXBkYXRlZEFuaW1hdGlvbkR1cmF0aW9uID0gMzAwOyAvLyBtaWxsaXNl
Y29uZHMKLQotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZCwKLSAgICBfX3Byb3Rv
X186IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX3NldHVw
RGF0YSgpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigp
CisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIHByb2JlIG9mIHRoaXMucHJv
YmVTZXQpCiAgICAgICAgICAgICB0aGlzLl90ZWFyZG93blByb2JlKHByb2JlKTsKIAogICAgICAg
ICB0aGlzLl9saXN0ZW5lcnMudW5pbnN0YWxsKHRydWUpOwotICAgIH0sCisgICAgfQogCiAgICAg
Ly8gUHJpdmF0ZQogCi0gICAgX3NldHVwUHJvYmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zZXR1
cFByb2JlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHByb2JlID0gZXZlbnQuZGF0YTsKICAg
ICAgICAgdGhpcy5pbnNlcnRDb2x1bW4ocHJvYmUuaWQsIHt0aXRsZTogcHJvYmUuZXhwcmVzc2lv
bn0pOwogCiAgICAgICAgIGZvciAodmFyIGZyYW1lIG9mIHRoaXMuX2RhdGEuZnJhbWVzKQogICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlTm9kZUZvckZyYW1lKGZyYW1lKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF90ZWFyZG93blByb2JlOiBmdW5jdGlvbihldmVudCkKKyAgICBfdGVhcmRvd25Qcm9i
ZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBwcm9iZSA9IGV2ZW50LmRhdGE7CiAgICAgICAg
IHRoaXMucmVtb3ZlQ29sdW1uKHByb2JlLmlkKTsKIAogICAgICAgICBmb3IgKHZhciBmcmFtZSBv
ZiB0aGlzLl9kYXRhLmZyYW1lcykKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU5vZGVGb3JGcmFt
ZShmcmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2V0dXBEYXRhOiBmdW5jdGlvbigpCisg
ICAgX3NldHVwRGF0YSgpCiAgICAgewogICAgICAgICB0aGlzLl9kYXRhID0gdGhpcy5wcm9iZVNl
dC5kYXRhVGFibGU7CiAgICAgICAgIGZvciAodmFyIGZyYW1lIG9mIHRoaXMuX2RhdGEuZnJhbWVz
KQpAQCAtMTAzLDE4ICs5NSwxOCBAQCBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RhdGFMaXN0ZW5lcnMucmVnaXN0ZXIodGhpcy5fZGF0
YSwgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YVRhYmxlLkV2ZW50LlNlcGFyYXRvckluc2VydGVk
LCB0aGlzLl9kYXRhU2VwYXJhdG9ySW5zZXJ0ZWQpOwogICAgICAgICB0aGlzLl9kYXRhTGlzdGVu
ZXJzLnJlZ2lzdGVyKHRoaXMuX2RhdGEsIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5F
dmVudC5XaWxsUmVtb3ZlLCB0aGlzLl90ZWFyZG93bkRhdGEpOwogICAgICAgICB0aGlzLl9kYXRh
TGlzdGVuZXJzLmluc3RhbGwoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90ZWFyZG93bkRhdGE6
IGZ1bmN0aW9uKCkKKyAgICBfdGVhcmRvd25EYXRhKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Rh
dGFMaXN0ZW5lcnMudW5pbnN0YWxsKHRydWUpOwogICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVu
KCk7CiAgICAgICAgIHRoaXMuX2ZyYW1lTm9kZXMgPSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9z
ZXBhcmF0b3JzID0gbmV3IE1hcDsKICAgICAgICAgZGVsZXRlIHRoaXMuX2xhc3RVcGRhdGVkRnJh
bWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlTm9kZUZvckZyYW1lOiBmdW5jdGlvbihm
cmFtZSkKKyAgICBfdXBkYXRlTm9kZUZvckZyYW1lKGZyYW1lKQogICAgIHsKICAgICAgICAgY29u
c29sZS5hc3NlcnQoZnJhbWUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhRnJh
bWUsICJJbnZhbGlkIFByb2JlU2V0RGF0YUZyYW1lIGFyZ3VtZW50OiAiLCBmcmFtZSk7CiAgICAg
ICAgIHZhciBub2RlID0gbnVsbDsKQEAgLTE0MiwzOSArMTM0LDM5IEBAIFdlYkluc3BlY3Rvci5Q
cm9iZVNldERhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgICAgICBjb25zb2xl
LmFzc2VydChub2RlKTsKIAotICAgICAgICBub2RlLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZC5EYXRhVXBkYXRlZFN0eWxlQ2xhc3NOYW1lKTsKKyAg
ICAgICAgbm9kZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRhdGEtdXBkYXRlZCIpOwogICAgICAg
ICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIG5vZGUuZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLkRhdGFVcGRh
dGVkU3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgbm9kZS5lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoImRhdGEtdXBkYXRlZCIpOwogICAgICAgICB9LCBXZWJJbnNwZWN0b3IuUHJvYmVTZXRE
YXRhR3JpZC5EYXRhVXBkYXRlZEFuaW1hdGlvbkR1cmF0aW9uKTsKIAogICAgICAgICB0aGlzLl9u
b2Rlc1NpbmNlTGFzdE5hdmlnYXRpb24ucHVzaChub2RlKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF91cGRhdGVOb2RlRm9yU2VwYXJhdG9yOiBmdW5jdGlvbihmcmFtZSkKKyAgICBfdXBkYXRlTm9k
ZUZvclNlcGFyYXRvcihmcmFtZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X2ZyYW1lTm9kZXMuaGFzKGZyYW1lKSwgIlRyaWVkIHRvIGFkZCBzZXBhcmF0b3IgZm9yIHVua25v
d24gZGF0YSBmcmFtZTogIiwgZnJhbWUpOwogICAgICAgICB0aGlzLl9mcmFtZU5vZGVzLmdldChm
cmFtZSkudXBkYXRlQ2VsbHNGb3JTZXBhcmF0b3IoZnJhbWUsIHRoaXMucHJvYmVTZXQpOwogCiAg
ICAgICAgIGZvciAodmFyIG5vZGUgb2YgdGhpcy5fbm9kZXNTaW5jZUxhc3ROYXZpZ2F0aW9uKQot
ICAgICAgICAgICAgbm9kZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlByb2Jl
U2V0RGF0YUdyaWQuUGFzdEZyYW1lU3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgbm9kZS5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoInBhc3QtdmFsdWUiKTsKIAogICAgICAgICB0aGlzLl9ub2Rl
c1NpbmNlTGFzdE5hdmlnYXRpb24gPSBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhRnJh
bWVJbnNlcnRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFGcmFtZUluc2VydGVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgdmFyIGZyYW1lID0gZXZlbnQuZGF0YTsKICAgICAgICAgdGhpcy5f
bGFzdFVwZGF0ZWRGcmFtZSA9IGZyYW1lOwogICAgICAgICB0aGlzLl91cGRhdGVOb2RlRm9yRnJh
bWUoZnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFTZXBhcmF0b3JJbnNlcnRlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFTZXBhcmF0b3JJbnNlcnRlZChldmVudCkKICAgICB7
CiAgICAgICAgIHZhciBmcmFtZSA9IGV2ZW50LmRhdGE7CiAgICAgICAgIHRoaXMuX3VwZGF0ZU5v
ZGVGb3JTZXBhcmF0b3IoZnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Byb2JlRXhwcmVz
c2lvbkNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wcm9iZUV4cHJlc3Npb25DaGFuZ2Vk
KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHByb2JlID0gZXZlbnQudGFyZ2V0OwogICAgICAg
ICBpZiAocHJvYmUuYnJlYWtwb2ludCAhPT0gdGhpcy5wcm9iZVNldC5icmVha3BvaW50KQpAQCAt
MTkzLDMgKzE4NSw1IEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU5vZGVGb3JGcmFtZShmcmFtZSk7CiAgICAgfQog
fTsKKworV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQuRGF0YVVwZGF0ZWRBbmltYXRpb25E
dXJhdGlvbiA9IDMwMDsgLy8gbWlsbGlzZWNvbmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9maWxlTm9kZURhdGFHcmlkTm9kZS5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2ZpbGVOb2RlRGF0
YUdyaWROb2RlLmpzCmluZGV4IGVkZTExYzY5YTNjMThiNmRmYTUzMzMwOWUxYTg4OTg1ODJlNzg4
OTcuLmI2MTg3ZjAzMThhYmMxYjc0YjNhMDc4Mjc1NTkwZDJkNmJkYzFmMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2ZpbGVOb2RlRGF0
YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Byb2ZpbGVOb2RlRGF0YUdyaWROb2RlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw2MyArMjMsNTYgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUHJvZmlsZU5v
ZGVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihwcm9maWxlTm9kZSwgYmFzZVN0YXJ0VGltZSwgcmFu
Z2VTdGFydFRpbWUsIHJhbmdlRW5kVGltZSkKK1dlYkluc3BlY3Rvci5Qcm9maWxlTm9kZURhdGFH
cmlkTm9kZSA9IGNsYXNzIFByb2ZpbGVOb2RlRGF0YUdyaWROb2RlIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlCiB7Ci0gICAgdmFyIGhhc0NoaWxkcmVuID0gISFwcm9m
aWxlTm9kZS5jaGlsZE5vZGVzLmxlbmd0aDsKLQotICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZURh
dGFHcmlkTm9kZS5jYWxsKHRoaXMsIGZhbHNlLCBudWxsLCBoYXNDaGlsZHJlbik7Ci0KLSAgICB0
aGlzLl9wcm9maWxlTm9kZSA9IHByb2ZpbGVOb2RlOwotICAgIHRoaXMuX2Jhc2VTdGFydFRpbWUg
PSBiYXNlU3RhcnRUaW1lIHx8IDA7Ci0gICAgdGhpcy5fcmFuZ2VTdGFydFRpbWUgPSByYW5nZVN0
YXJ0VGltZSB8fCAwOwotICAgIHRoaXMuX3JhbmdlRW5kVGltZSA9IHR5cGVvZiByYW5nZUVuZFRp
bWUgPT09ICJudW1iZXIiID8gcmFuZ2VFbmRUaW1lIDogSW5maW5pdHk7Ci0KLSAgICB0aGlzLl9k
YXRhID0gdGhpcy5fcHJvZmlsZU5vZGUuY29tcHV0ZUNhbGxJbmZvRm9yVGltZVJhbmdlKHRoaXMu
X3JhbmdlU3RhcnRUaW1lLCB0aGlzLl9yYW5nZUVuZFRpbWUpOwotICAgIHRoaXMuX2RhdGEubG9j
YXRpb24gPSB0aGlzLl9wcm9maWxlTm9kZS5zb3VyY2VDb2RlTG9jYXRpb247Ci19OworICAgIGNv
bnN0cnVjdG9yKHByb2ZpbGVOb2RlLCBiYXNlU3RhcnRUaW1lLCByYW5nZVN0YXJ0VGltZSwgcmFu
Z2VFbmRUaW1lKQorICAgIHsKKyAgICAgICAgdmFyIGhhc0NoaWxkcmVuID0gISFwcm9maWxlTm9k
ZS5jaGlsZE5vZGVzLmxlbmd0aDsKIAotLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3Iu
T2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2Jq
ZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuUHJvZmls
ZU5vZGVEYXRhR3JpZE5vZGUpOworICAgICAgICBzdXBlcihmYWxzZSwgbnVsbCwgaGFzQ2hpbGRy
ZW4pOwogCi1XZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUuSWNvblN0eWxlQ2xh
c3NOYW1lID0gImljb24iOworICAgICAgICB0aGlzLl9wcm9maWxlTm9kZSA9IHByb2ZpbGVOb2Rl
OworICAgICAgICB0aGlzLl9iYXNlU3RhcnRUaW1lID0gYmFzZVN0YXJ0VGltZSB8fCAwOworICAg
ICAgICB0aGlzLl9yYW5nZVN0YXJ0VGltZSA9IHJhbmdlU3RhcnRUaW1lIHx8IDA7CisgICAgICAg
IHRoaXMuX3JhbmdlRW5kVGltZSA9IHR5cGVvZiByYW5nZUVuZFRpbWUgPT09ICJudW1iZXIiID8g
cmFuZ2VFbmRUaW1lIDogSW5maW5pdHk7CiAKLVdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZURhdGFH
cmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Qcm9m
aWxlTm9kZURhdGFHcmlkTm9kZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZURhdGFHcmlkTm9kZS5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLl9wcm9m
aWxlTm9kZS5jb21wdXRlQ2FsbEluZm9Gb3JUaW1lUmFuZ2UodGhpcy5fcmFuZ2VTdGFydFRpbWUs
IHRoaXMuX3JhbmdlRW5kVGltZSk7CisgICAgICAgIHRoaXMuX2RhdGEubG9jYXRpb24gPSB0aGlz
Ll9wcm9maWxlTm9kZS5zb3VyY2VDb2RlTG9jYXRpb247CisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgcHJvZmlsZU5vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3By
b2ZpbGVOb2RlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlY29yZHMoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYmFzZVN0YXJ0VGlt
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYmFzZVN0YXJ0VGltZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCByYW5nZVN0YXJ0VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fcmFuZ2VTdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmFuZ2VFbmRU
aW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yYW5nZUVuZFRpbWU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgZGF0YSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGF0
YTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZVJhbmdlVGltZXM6IGZ1bmN0aW9uKHN0YXJ0
VGltZSwgZW5kVGltZSkKKyAgICB1cGRhdGVSYW5nZVRpbWVzKHN0YXJ0VGltZSwgZW5kVGltZSkK
ICAgICB7CiAgICAgICAgIHZhciBvbGRSYW5nZVN0YXJ0VGltZSA9IHRoaXMuX3JhbmdlU3RhcnRU
aW1lOwogICAgICAgICB2YXIgb2xkUmFuZ2VFbmRUaW1lID0gdGhpcy5fcmFuZ2VFbmRUaW1lOwpA
QCAtMTAwLDE3ICs5MywxNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChvbGRTdGFydEJvdW5kYXJ5ICE9PSBuZXdTdGFy
dEJvdW5kYXJ5IHx8IG9sZEVuZEJvdW5kYXJ5ICE9PSBuZXdFbmRCb3VuZGFyeSkKICAgICAgICAg
ICAgIHRoaXMubmVlZHNSZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWZyZXNoOiBm
dW5jdGlvbigpCisgICAgcmVmcmVzaCgpCiAgICAgewogICAgICAgICB0aGlzLl9kYXRhID0gdGhp
cy5fcHJvZmlsZU5vZGUuY29tcHV0ZUNhbGxJbmZvRm9yVGltZVJhbmdlKHRoaXMuX3JhbmdlU3Rh
cnRUaW1lLCB0aGlzLl9yYW5nZUVuZFRpbWUpOwogICAgICAgICB0aGlzLl9kYXRhLmxvY2F0aW9u
ID0gdGhpcy5fcHJvZmlsZU5vZGUuc291cmNlQ29kZUxvY2F0aW9uOwogCi0gICAgICAgIFdlYklu
c3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUucmVmcmVzaC5jYWxsKHRoaXMp
OwotICAgIH0sCisgICAgICAgIHN1cGVyLnJlZnJlc2goKTsKKyAgICB9CiAKLSAgICBjcmVhdGVD
ZWxsQ29udGVudDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgY2VsbCkKKyAgICBjcmVhdGVD
ZWxsQ29udGVudChjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQogICAgIHsKICAgICAgICAgY29uc3Qg
ZW1wdHlWYWx1ZVBsYWNlaG9sZGVyU3RyaW5nID0gIlx1MjAxNCI7CiAgICAgICAgIHZhciB2YWx1
ZSA9IHRoaXMuZGF0YVtjb2x1bW5JZGVudGlmaWVyXTsKQEAgLTEyNSw2ICsxMTgsNiBAQCBXZWJJ
bnNwZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgcmV0dXJuIGlzTmFOKHZhbHVlKSA/IGVtcHR5VmFsdWVQbGFjZWhvbGRlclN0cmluZyA6IE51
bWJlci5zZWNvbmRzVG9TdHJpbmcodmFsdWUsIHRydWUpOwogICAgICAgICB9CiAKLSAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRl
Q2VsbENvbnRlbnQuY2FsbCh0aGlzLCBjb2x1bW5JZGVudGlmaWVyLCBjZWxsKTsKKyAgICAgICAg
cmV0dXJuIHN1cGVyLmNyZWF0ZUNlbGxDb250ZW50KGNvbHVtbklkZW50aWZpZXIsIGNlbGwpOwog
ICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZURh
dGFHcmlkTm9kZS5qcwppbmRleCA0OTgwOGMwNTdkNDhkMmRjZDQ4MzZiMmU4ZDM3ZDQxNTkwMDkx
NTY0Li5mZWRmOTI3MzgwY2RhODIyNmVlMmM3NTQ1ZjQxNjc3NDA1MTQ4YWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZW5kZXJpbmdGcmFt
ZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKQEAg
LTIzLDMyICsyMywyNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lRGF0YUdyaWROb2RlID0gZnVu
Y3Rpb24ocmVuZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZCwgYmFzZVN0YXJ0VGltZSkKK1dlYklu
c3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lRGF0YUdyaWROb2RlID0gY2xhc3MgUmVuZGVy
aW5nRnJhbWVUaW1lbGluZURhdGFHcmlkTm9kZSBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZURhdGFHcmlkTm9kZQogewotICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5j
YWxsKHRoaXMsIGZhbHNlLCBudWxsKTsKLQotICAgIHRoaXMuX3JlY29yZCA9IHJlbmRlcmluZ0Zy
YW1lVGltZWxpbmVSZWNvcmQ7Ci0gICAgdGhpcy5fYmFzZVN0YXJ0VGltZSA9IGJhc2VTdGFydFRp
bWUgfHwgMDsKLX07Ci0KLVdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lRGF0YUdy
aWROb2RlLkljb25TdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsKLVdlYkluc3BlY3Rvci5SZW5kZXJp
bmdGcmFtZVRpbWVsaW5lRGF0YUdyaWROb2RlLlN1YnRpdGxlU3R5bGVDbGFzc05hbWUgPSAic3Vi
dGl0bGUiOworICAgIGNvbnN0cnVjdG9yKHJlbmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmQsIGJh
c2VTdGFydFRpbWUpCisgICAgeworICAgICAgICBzdXBlcihmYWxzZSwgbnVsbCk7CiAKLVdlYklu
c3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVEYXRh
R3JpZE5vZGUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5v
ZGUucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9yZWNvcmQgPSByZW5kZXJpbmdGcmFtZVRpbWVs
aW5lUmVjb3JkOworICAgICAgICB0aGlzLl9iYXNlU3RhcnRUaW1lID0gYmFzZVN0YXJ0VGltZSB8
fCAwOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHJlY29yZCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJl
Y29yZHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlzLl9yZWNvcmRdOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsKQEAgLTU3LDkgKzUyLDkgQEAgV2ViSW5zcGVj
dG9yLlJlbmRlcmluZ0ZyYW1lVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAg
ICAgICB2YXIgcGFpbnRUaW1lID0gdGhpcy5fcmVjb3JkLmR1cmF0aW9uRm9yVGFzayhXZWJJbnNw
ZWN0b3IuUmVuZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZC5UYXNrVHlwZS5QYWludCk7CiAgICAg
ICAgIHZhciBvdGhlclRpbWUgPSB0aGlzLl9yZWNvcmQuZHVyYXRpb25Gb3JUYXNrKFdlYkluc3Bl
Y3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lUmVjb3JkLlRhc2tUeXBlLk90aGVyKTsKICAgICAg
ICAgcmV0dXJuIHtzdGFydFRpbWU6IHRoaXMuX3JlY29yZC5zdGFydFRpbWUsIHNjcmlwdFRpbWUs
IGxheW91dFRpbWUsIHBhaW50VGltZSwgb3RoZXJUaW1lLCB0b3RhbFRpbWU6IHRoaXMuX3JlY29y
ZC5kdXJhdGlvbn07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVDZWxsQ29udGVudDogZnVu
Y3Rpb24oY29sdW1uSWRlbnRpZmllciwgY2VsbCkKKyAgICBjcmVhdGVDZWxsQ29udGVudChjb2x1
bW5JZGVudGlmaWVyLCBjZWxsKQogICAgIHsKICAgICAgICAgY29uc3QgZW1wdHlWYWx1ZVBsYWNl
aG9sZGVyU3RyaW5nID0gIlx1MjAxNCI7CiAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuZGF0YVtj
b2x1bW5JZGVudGlmaWVyXTsKQEAgLTc2LDYgKzcxLDYgQEAgV2ViSW5zcGVjdG9yLlJlbmRlcmlu
Z0ZyYW1lVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IDApID8gZW1wdHlWYWx1ZVBsYWNlaG9sZGVy
U3RyaW5nIDogTnVtYmVyLnNlY29uZHNUb1N0cmluZyh2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgIH0K
IAotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3Rv
dHlwZS5jcmVhdGVDZWxsQ29udGVudC5jYWxsKHRoaXMsIGNvbHVtbklkZW50aWZpZXIsIGNlbGwp
OworICAgICAgICByZXR1cm4gc3VwZXIuY3JlYXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmll
ciwgY2VsbCk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0
YUdyaWROb2RlLmpzCmluZGV4IDVkYzNhODI1NTk5ZGZiYTlhYzZmYmQ1NGI5MmZhYzEwNjQxNmFh
MDQuLjVlM2VlZGRjZTcyMmEzNjRhZjFlYTk4NzU2OGJhMWE3MDFlYzBjOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxp
bmVEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5qcwpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDYgKzIzLDM4IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
LlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihyZXNvdXJjZVRpbWVsaW5l
UmVjb3JkLCBncmFwaE9ubHksIGdyYXBoRGF0YVNvdXJjZSkKK1dlYkluc3BlY3Rvci5SZXNvdXJj
ZVRpbWVsaW5lRGF0YUdyaWROb2RlID0gY2xhc3MgUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9k
ZSBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZQogewotICAgIFdlYklu
c3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIGdyYXBoT25seSwgZ3JhcGhE
YXRhU291cmNlKTsKKyAgICBjb25zdHJ1Y3RvcihyZXNvdXJjZVRpbWVsaW5lUmVjb3JkLCBncmFw
aE9ubHksIGdyYXBoRGF0YVNvdXJjZSkKKyAgICB7CisgICAgICAgIHN1cGVyKGdyYXBoT25seSwg
Z3JhcGhEYXRhU291cmNlKTsKIAotICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2VUaW1lbGlu
ZVJlY29yZC5yZXNvdXJjZTsKLSAgICB0aGlzLl9yZWNvcmQgPSByZXNvdXJjZVRpbWVsaW5lUmVj
b3JkOworICAgICAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlVGltZWxpbmVSZWNvcmQucmVz
b3VyY2U7CisgICAgICAgIHRoaXMuX3JlY29yZCA9IHJlc291cmNlVGltZWxpbmVSZWNvcmQ7CiAK
LSAgICB0aGlzLl9yZWNvcmQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmQuRXZlbnQuVXBkYXRlZCwgZ3JhcGhPbmx5ID8gdGhpcy5fdGltZWxpbmVSZWNvcmRVcGRh
dGVkIDogdGhpcy5fbmVlZHNSZWZyZXNoLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcmVjb3JkLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLkV2ZW50LlVwZGF0ZWQs
IGdyYXBoT25seSA/IHRoaXMuX3RpbWVsaW5lUmVjb3JkVXBkYXRlZCA6IHRoaXMuX25lZWRzUmVm
cmVzaCwgdGhpcyk7CiAKLSAgICBpZiAoIWdyYXBoT25seSkgewotICAgICAgICB0aGlzLl9yZXNv
dXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5VUkxEaWRD
aGFuZ2UsIHRoaXMuX25lZWRzUmVmcmVzaCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNl
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlR5cGVEaWRDaGFu
Z2UsIHRoaXMuX25lZWRzUmVmcmVzaCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRGaW5p
c2gsIHRoaXMuX25lZWRzUmVmcmVzaCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRGYWls
LCB0aGlzLl9uZWVkc1JlZnJlc2gsIHRoaXMpOwotICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5TaXplRGlkQ2hhbmdlLCB0
aGlzLl9uZWVkc1JlZnJlc2gsIHRoaXMpOwotICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UcmFuc2ZlclNpemVEaWRDaGFu
Z2UsIHRoaXMuX25lZWRzUmVmcmVzaCwgdGhpcyk7CisgICAgICAgIGlmICghZ3JhcGhPbmx5KSB7
CisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5FdmVudC5VUkxEaWRDaGFuZ2UsIHRoaXMuX25lZWRzUmVmcmVzaCwgdGhpcyk7
CisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5FdmVudC5UeXBlRGlkQ2hhbmdlLCB0aGlzLl9uZWVkc1JlZnJlc2gsIHRoaXMp
OworICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuRXZlbnQuTG9hZGluZ0RpZEZpbmlzaCwgdGhpcy5fbmVlZHNSZWZyZXNoLCB0
aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRGYWlsLCB0aGlzLl9uZWVkc1JlZnJlc2gs
IHRoaXMpOworICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuU2l6ZURpZENoYW5nZSwgdGhpcy5fbmVlZHNSZWZyZXNo
LCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlRyYW5zZmVyU2l6ZURpZENoYW5nZSwgdGhpcy5fbmVl
ZHNSZWZyZXNoLCB0aGlzKTsKKyAgICAgICAgfQogICAgIH0KLX07Ci0KLS8vIEZJWE1FOiBNb3Zl
IHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlz
LgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMo
V2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUpOwotCi1XZWJJbnNwZWN0
b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5JY29uU3R5bGVDbGFzc05hbWUgPSAiaWNv
biI7Ci1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5FcnJvclN0eWxl
Q2xhc3NOYW1lID0gImVycm9yIjsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRh
R3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5U
aW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUsCiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdl
dCByZWNvcmRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBbdGhpcy5fcmVjb3JkXTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCByZXNvdXJjZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fcmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YSgpCiAgICAgewpAQCAt
OTIsMTQgKzg0LDE0IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2Rl
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9jYWNoZWREYXRhID0gZGF0YTsKICAgICAg
ICAgcmV0dXJuIGRhdGE7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVDZWxsQ29udGVudDog
ZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgY2VsbCkKKyAgICBjcmVhdGVDZWxsQ29udGVudChj
b2x1bW5JZGVudGlmaWVyLCBjZWxsKQogICAgIHsKICAgICAgICAgdmFyIHJlc291cmNlID0gdGhp
cy5fcmVzb3VyY2U7CiAKICAgICAgICAgaWYgKHJlc291cmNlLmZhaWxlZCB8fCByZXNvdXJjZS5j
YW5jZWxlZCB8fCByZXNvdXJjZS5zdGF0dXNDb2RlID49IDQwMCkKLSAgICAgICAgICAgIGNlbGwu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5F
cnJvclN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgiZXJy
b3IiKTsKIAogICAgICAgICBjb25zdCBlbXB0eVZhbHVlUGxhY2Vob2xkZXJTdHJpbmcgPSAiXHUy
MDE0IjsKICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5kYXRhW2NvbHVtbklkZW50aWZpZXJdOwpA
QCAtMTI4LDEwICsxMjAsMTAgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHZhbHVlKSA/IGVt
cHR5VmFsdWVQbGFjZWhvbGRlclN0cmluZyA6IE51bWJlci5zZWNvbmRzVG9TdHJpbmcodmFsdWUs
IHRydWUpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbENvbnRlbnQuY2FsbCh0aGlzLCBjb2x1
bW5JZGVudGlmaWVyLCBjZWxsKTsKLSAgICB9LAorICAgICAgICByZXR1cm4gc3VwZXIuY3JlYXRl
Q2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmllciwgY2VsbCk7CisgICAgfQogCi0gICAgcmVmcmVz
aDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3Nj
aGVkdWxlZFJlZnJlc2hJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25G
cmFtZSh0aGlzLl9zY2hlZHVsZWRSZWZyZXNoSWRlbnRpZmllcik7CkBAIC0xNDAsMTIgKzEzMiwx
MiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuX2NhY2hlZERhdGE7CiAKLSAgICAgICAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZS5yZWZyZXNoLmNhbGwodGhpcyk7
Ci0gICAgfSwKKyAgICAgICAgc3VwZXIucmVmcmVzaCgpOworICAgIH0KIAogICAgIC8vIFByaXZh
dGUKIAotICAgIF9uZWVkc1JlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICBfbmVlZHNSZWZyZXNoKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLmRhdGFHcmlkIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lRGF0YUdyaWQpIHsKICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuZGF0YUdyaWRO
b2RlTmVlZHNSZWZyZXNoKHRoaXMpOwpAQCAtMTU2LDkgKzE0OCw5IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICB0aGlzLl9zY2hlZHVsZWRSZWZyZXNoSWRlbnRpZmllciA9IHJlcXVl
c3RBbmltYXRpb25GcmFtZSh0aGlzLnJlZnJlc2guYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfdGltZWxpbmVSZWNvcmRVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfdGlt
ZWxpbmVSZWNvcmRVcGRhdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuaXNSZWNv
cmRWaXNpYmxlKHRoaXMuX3JlY29yZCkpCiAgICAgICAgICAgICB0aGlzLm5lZWRzR3JhcGhSZWZy
ZXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TY3JpcHRUaW1lbGluZURhdGFHcmlkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVEYXRhR3JpZC5qcwppbmRleCAwMjIzYTI4
Njk4MWFkYTc4NDQxOWI2MjY5Yzg1NjY4MzI2NjgxNDg4Li4wYzc2NjBmMDhiNjgxN2E1NWJiOTFi
YmFkMTg5NWViOTE3YWY1MTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZURhdGFHcmlkLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lRGF0YUdyaWQu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDIwICsyMywxNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFHcmlkID0gZnVuY3Rpb24odHJl
ZU91dGxpbmUsIGNvbHVtbnMsIGRlbGVnYXRlLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxiYWNr
KQorV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWQgPSBjbGFzcyBTY3JpcHRUaW1l
bGluZURhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5jYWxsKHRoaXMsIHRyZWVPdXRsaW5lLCBj
b2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjayk7Ci19OwotCi1X
ZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFHcmlkLAorICAgIGNvbnN0
cnVjdG9yKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxl
dGVDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHN1cGVyKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBk
ZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjayk7CisgICAgfQogCiAgICAgLy8g
UHJvdGVjdGVkCiAKLSAgICBjYWxsRnJhbWVQb3BvdmVyQW5jaG9yRWxlbWVudDogZnVuY3Rpb24o
KQorICAgIGNhbGxGcmFtZVBvcG92ZXJBbmNob3JFbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLnNlbGVjdGVkTm9kZS5lbGVtZW50V2l0aENvbHVtbklkZW50aWZpZXIoImxvY2F0
aW9uIik7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWQu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLnByb3Rv
dHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUuanMKaW5kZXgg
YmUxZGNkYzA4NWNmNzhkOGVlODVlY2Y2YjE5ZDIyOWEyNmMxOWFjYy4uNjg3ODljZGU3YTIzZDQ2
Njg5NmE5NWJkMDA5MmIzOGNkZWZjNzQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxp
bmVEYXRhR3JpZE5vZGUuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDUxICsyMyw0NCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFHcmlk
Tm9kZSA9IGZ1bmN0aW9uKHNjcmlwdFRpbWVsaW5lUmVjb3JkLCBiYXNlU3RhcnRUaW1lLCByYW5n
ZVN0YXJ0VGltZSwgcmFuZ2VFbmRUaW1lKQorV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0
YUdyaWROb2RlID0gY2xhc3MgU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxp
bmVEYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBmYWxzZSwgbnVsbCk7Ci0KLSAgICB0aGlzLl9yZWNv
cmQgPSBzY3JpcHRUaW1lbGluZVJlY29yZDsKLSAgICB0aGlzLl9iYXNlU3RhcnRUaW1lID0gYmFz
ZVN0YXJ0VGltZSB8fCAwOwotICAgIHRoaXMuX3JhbmdlU3RhcnRUaW1lID0gcmFuZ2VTdGFydFRp
bWUgfHwgMDsKLSAgICB0aGlzLl9yYW5nZUVuZFRpbWUgPSB0eXBlb2YgcmFuZ2VFbmRUaW1lID09
PSAibnVtYmVyIiA/IHJhbmdlRW5kVGltZSA6IEluZmluaXR5OwotfTsKLQotLy8gRklYTUU6IE1v
dmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRo
aXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9u
cyhXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUpOwotCi1XZWJJbnNwZWN0
b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUuSWNvblN0eWxlQ2xhc3NOYW1lID0gImljb24i
OworICAgIGNvbnN0cnVjdG9yKHNjcmlwdFRpbWVsaW5lUmVjb3JkLCBiYXNlU3RhcnRUaW1lLCBy
YW5nZVN0YXJ0VGltZSwgcmFuZ2VFbmRUaW1lKQorICAgIHsKKyAgICAgICAgc3VwZXIoZmFsc2Us
IG51bGwpOwogCi1XZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRh
R3JpZE5vZGUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5v
ZGUucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9yZWNvcmQgPSBzY3JpcHRUaW1lbGluZVJlY29y
ZDsKKyAgICAgICAgdGhpcy5fYmFzZVN0YXJ0VGltZSA9IGJhc2VTdGFydFRpbWUgfHwgMDsKKyAg
ICAgICAgdGhpcy5fcmFuZ2VTdGFydFRpbWUgPSByYW5nZVN0YXJ0VGltZSB8fCAwOworICAgICAg
ICB0aGlzLl9yYW5nZUVuZFRpbWUgPSB0eXBlb2YgcmFuZ2VFbmRUaW1lID09PSAibnVtYmVyIiA/
IHJhbmdlRW5kVGltZSA6IEluZmluaXR5OworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAg
Z2V0IHJlY29yZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHJlY29yZHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlz
Ll9yZWNvcmRdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGJhc2VTdGFydFRpbWUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Jhc2VTdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgcmFuZ2VTdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jh
bmdlU3RhcnRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJhbmdlRW5kVGltZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmFuZ2VFbmRUaW1lOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGRhdGEoKQogICAgIHsKQEAgLTg2LDkgKzc5LDkgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICByZXR1cm4g
e2V2ZW50VHlwZTogdGhpcy5fcmVjb3JkLmV2ZW50VHlwZSwgc3RhcnRUaW1lLCBzZWxmVGltZTog
ZHVyYXRpb24sIHRvdGFsVGltZTogZHVyYXRpb24sCiAgICAgICAgICAgICBhdmVyYWdlVGltZTog
ZHVyYXRpb24sIGNhbGxDb3VudDogMSwgbG9jYXRpb246IGNhbGxGcmFtZU9yU291cmNlQ29kZUxv
Y2F0aW9ufTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZVJhbmdlVGltZXM6IGZ1bmN0aW9u
KHN0YXJ0VGltZSwgZW5kVGltZSkKKyAgICB1cGRhdGVSYW5nZVRpbWVzKHN0YXJ0VGltZSwgZW5k
VGltZSkKICAgICB7CiAgICAgICAgIHZhciBvbGRSYW5nZVN0YXJ0VGltZSA9IHRoaXMuX3Jhbmdl
U3RhcnRUaW1lOwogICAgICAgICB2YXIgb2xkUmFuZ2VFbmRUaW1lID0gdGhpcy5fcmFuZ2VFbmRU
aW1lOwpAQCAtMTEzLDkgKzEwNiw5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFH
cmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKG9sZFN0YXJ0Qm91bmRhcnkgIT09
IG5ld1N0YXJ0Qm91bmRhcnkgfHwgb2xkRW5kQm91bmRhcnkgIT09IG5ld0VuZEJvdW5kYXJ5KQog
ICAgICAgICAgICAgdGhpcy5uZWVkc1JlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNy
ZWF0ZUNlbGxDb250ZW50OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQorICAgIGNy
ZWF0ZUNlbGxDb250ZW50KGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCiAgICAgewogICAgICAgICBj
b25zdCBlbXB0eVZhbHVlUGxhY2Vob2xkZXJTdHJpbmcgPSAiXHUyMDE0IjsKICAgICAgICAgdmFy
IHZhbHVlID0gdGhpcy5kYXRhW2NvbHVtbklkZW50aWZpZXJdOwpAQCAtMTMzLDYgKzEyNiw2IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm4gaXNOYU4odmFsdWUpID8gZW1wdHlWYWx1ZVBsYWNlaG9sZGVyU3Ry
aW5nIDogTnVtYmVyLnNlY29uZHNUb1N0cmluZyh2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgIH0KIAot
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlw
ZS5jcmVhdGVDZWxsQ29udGVudC5jYWxsKHRoaXMsIGNvbHVtbklkZW50aWZpZXIsIGNlbGwpOwor
ICAgICAgICByZXR1cm4gc3VwZXIuY3JlYXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmllciwg
Y2VsbCk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRp
bWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKaW5kZXggYTAyMTIzMGViN2QzNDNiNDI4MWNl
NWNjYTE0NDE4ODMyMmYzMzcyNC4uNjk4MmQzYzcxOTVkZWE1NGQ2YThkNTc2YzgyY2I0MjNkZTZi
NDVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVGlt
ZWxpbmVEYXRhR3JpZE5vZGUuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDQxICsyMywzNiBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmVU
aW1lbGluZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHNvdXJjZUNvZGVUaW1lbGluZSwgZ3JhcGhE
YXRhU291cmNlKQorV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdy
aWROb2RlID0gY2xhc3MgU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUKIHsKLSAgICBXZWJJbnNwZWN0
b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCB0cnVlLCBncmFwaERhdGFTb3VyY2Up
OwotCi0gICAgdGhpcy5fc291cmNlQ29kZVRpbWVsaW5lID0gc291cmNlQ29kZVRpbWVsaW5lOwot
ICAgIHRoaXMuX3NvdXJjZUNvZGVUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fdGltZWxpbmVSZWNvcmRBZGRlZCwg
dGhpcyk7Ci19OwotCi0vLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3Vi
Y2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KLVdlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVj
YXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxp
bmVUaW1lbGluZURhdGFHcmlkTm9kZSk7CisgICAgY29uc3RydWN0b3Ioc291cmNlQ29kZVRpbWVs
aW5lLCBncmFwaERhdGFTb3VyY2UpCisgICAgeworICAgICAgICBzdXBlcih0cnVlLCBncmFwaERh
dGFTb3VyY2UpOwogCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRh
R3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUsCi0gICAgX19wcm90b19fOiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9z
b3VyY2VDb2RlVGltZWxpbmUgPSBzb3VyY2VDb2RlVGltZWxpbmU7CisgICAgICAgIHRoaXMuX3Nv
dXJjZUNvZGVUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5F
dmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fdGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CisgICAg
fQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgcmVjb3JkcygpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fc291cmNlQ29kZVRpbWVsaW5lLnJlY29yZHM7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgc291cmNlQ29kZVRpbWVsaW5lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9zb3VyY2VDb2RlVGltZWxpbmU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YSgpCiAg
ICAgewogICAgICAgICByZXR1cm4ge2dyYXBoOiB0aGlzLl9zb3VyY2VDb2RlVGltZWxpbmUuc3Rh
cnRUaW1lfTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF90aW1lbGlu
ZVJlY29yZEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfdGltZWxpbmVSZWNvcmRBZGRlZChl
dmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmlzUmVjb3JkVmlzaWJsZShldmVudC5kYXRh
LnJlY29yZCkpCiAgICAgICAgICAgICB0aGlzLm5lZWRzR3JhcGhSZWZyZXNoKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURh
dGFHcmlkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVEYXRhR3JpZC5qcwppbmRleCAzMzczYmJkM2IwMzZmOTJkMTEwMDVhNGE4NGJjNTIzN2Zh
Njg4ODY4Li40ZjkzOWU3MDk3Mzc0NTEwYzBjMTY4NjNjOTZjM2MyNDVjNTU3M2M0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURh
dGFHcmlkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lRGF0YUdyaWQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDExNSArMjMsMTA0IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQg
PSBmdW5jdGlvbih0cmVlT3V0bGluZSwgY29sdW1ucywgZGVsZWdhdGUsIGVkaXRDYWxsYmFjaywg
ZGVsZXRlQ2FsbGJhY2spCitXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZCA9IGNsYXNzIFRp
bWVsaW5lRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zLCBlZGl0Q2FsbGJhY2ssIGRlbGV0
ZUNhbGxiYWNrKTsKLQotICAgIHRoaXMuX3RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIg
PSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIodHJlZU91
dGxpbmUsIHRoaXMsIGRlbGVnYXRlKTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLlN0eWxlQ2xhc3NOYW1lKTsKKyAgICBjb25z
dHJ1Y3Rvcih0cmVlT3V0bGluZSwgY29sdW1ucywgZGVsZWdhdGUsIGVkaXRDYWxsYmFjaywgZGVs
ZXRlQ2FsbGJhY2spCisgICAgeworICAgICAgICBzdXBlcihjb2x1bW5zLCBlZGl0Q2FsbGJhY2ss
IGRlbGV0ZUNhbGxiYWNrKTsKIAotICAgIHRoaXMuX2ZpbHRlcmFibGVDb2x1bW5zID0gW107Cisg
ICAgICAgIHRoaXMuX3RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIgPSBuZXcgV2ViSW5z
cGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIodHJlZU91dGxpbmUsIHRoaXMs
IGRlbGVnYXRlKTsKIAotICAgIC8vIENoZWNrIGlmIGFueSBvZiB0aGUgY2VsbHMgY2FuIGJlIGZp
bHRlcmVkLgotICAgIGZvciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1u
cykgewotICAgICAgICB2YXIgc2NvcGVCYXIgPSBjb2x1bW4uc2NvcGVCYXI7CisgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0aW1lbGluZSIpOwogCi0gICAgICAgIGlmICghc2Nv
cGVCYXIpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdGhpcy5fZmlsdGVyYWJsZUNv
bHVtbnMgPSBbXTsKIAotICAgICAgICB0aGlzLl9maWx0ZXJhYmxlQ29sdW1ucy5wdXNoKGlkZW50
aWZpZXIpOwotICAgICAgICBzY29wZUJhci5jb2x1bW5JZGVudGlmaWVyID0gaWRlbnRpZmllcjsK
LSAgICAgICAgc2NvcGVCYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2NvcGVCYXIu
RXZlbnQuU2VsZWN0aW9uQ2hhbmdlZCwgdGhpcy5fc2NvcGVCYXJTZWxlY3RlZEl0ZW1zRGlkQ2hh
bmdlLCB0aGlzKTsKLSAgICB9CisgICAgICAgIC8vIENoZWNrIGlmIGFueSBvZiB0aGUgY2VsbHMg
Y2FuIGJlIGZpbHRlcmVkLgorICAgICAgICBmb3IgKHZhciBbaWRlbnRpZmllciwgY29sdW1uXSBv
ZiB0aGlzLmNvbHVtbnMpIHsKKyAgICAgICAgICAgIHZhciBzY29wZUJhciA9IGNvbHVtbi5zY29w
ZUJhcjsKIAotICAgIGlmICh0aGlzLl9maWx0ZXJhYmxlQ29sdW1ucy5sZW5ndGggPiAxKSB7Ci0g
ICAgICAgIGNvbnNvbGUuZXJyb3IoIkNyZWF0aW5nIGEgVGltZWxpbmVEYXRhR3JpZCB3aXRoIG1v
cmUgdGhhbiBvbmUgZmlsdGVyYWJsZSBjb2x1bW4gaXMgbm90IHlldCBzdXBwb3J0ZWQuIik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgICAgICAgICBpZiAoIXNjb3BlQmFyKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZC5FdmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzLl9kYXRhR3JpZFNl
bGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMpOwotICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuU29ydENoYW5nZWQsIHRoaXMuX3NvcnQsIHRoaXMpOwor
ICAgICAgICAgICAgdGhpcy5fZmlsdGVyYWJsZUNvbHVtbnMucHVzaChpZGVudGlmaWVyKTsKKyAg
ICAgICAgICAgIHNjb3BlQmFyLmNvbHVtbklkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgICAg
ICAgICAgc2NvcGVCYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2NvcGVCYXIuRXZl
bnQuU2VsZWN0aW9uQ2hhbmdlZCwgdGhpcy5fc2NvcGVCYXJTZWxlY3RlZEl0ZW1zRGlkQ2hhbmdl
LCB0aGlzKTsKKyAgICAgICAgfQogCi0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6
ZSIsIHRoaXMpOwotfTsKKyAgICAgICAgaWYgKHRoaXMuX2ZpbHRlcmFibGVDb2x1bW5zLmxlbmd0
aCA+IDEpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkNyZWF0aW5nIGEgVGltZWxpbmVE
YXRhR3JpZCB3aXRoIG1vcmUgdGhhbiBvbmUgZmlsdGVyYWJsZSBjb2x1bW4gaXMgbm90IHlldCBz
dXBwb3J0ZWQuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotV2ViSW5zcGVj
dG9yLlRpbWVsaW5lRGF0YUdyaWQuU3R5bGVDbGFzc05hbWUgPSAidGltZWxpbmUiOwotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuSGFzTm9uRGVmYXVsdEZpbHRlclN0eWxlQ2xhc3NOYW1l
ID0gImhhcy1ub24tZGVmYXVsdC1maWx0ZXIiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdy
aWQuRGVsYXllZFBvcG92ZXJTaG93VGltZW91dCA9IDI1MDsKLVdlYkluc3BlY3Rvci5UaW1lbGlu
ZURhdGFHcmlkLkRlbGF5ZWRQb3BvdmVySGlkZUNvbnRlbnRDbGVhclRpbWVvdXQgPSA1MDA7Cisg
ICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQu
U2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5fZGF0YUdyaWRTZWxlY3RlZE5vZGVDaGFuZ2VkLCB0
aGlzKTsKKyAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5FdmVudC5Tb3J0Q2hhbmdlZCwgdGhpcy5fc29ydCwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5U
aW1lbGluZURhdGFHcmlkLkV2ZW50ID0gewotICAgIEZpbHRlcnNEaWRDaGFuZ2U6ICJ0aW1lbGlu
ZWRhdGFncmlkLWZpbHRlcnMtZGlkLWNoYW5nZSIKLX07Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGlu
ZURhdGFHcmlkLmNyZWF0ZUNvbHVtblNjb3BlQmFyID0gZnVuY3Rpb24ocHJlZml4LCBtYXApCi17
Ci0gICAgcHJlZml4ID0gcHJlZml4ICsgIi10aW1lbGluZS1kYXRhLWdyaWQtIjsKLQotICAgIHZh
ciBzY29wZUJhckl0ZW1zID0gW107Ci0gICAgZm9yICh2YXIgW2tleSwgdmFsdWVdIG9mIG1hcCkg
ewotICAgICAgICB2YXIgaWQgPSBwcmVmaXggKyBrZXk7Ci0gICAgICAgIHZhciBpdGVtID0gbmV3
IFdlYkluc3BlY3Rvci5TY29wZUJhckl0ZW0oaWQsIHZhbHVlKTsKLSAgICAgICAgaXRlbS52YWx1
ZSA9IGtleTsKLSAgICAgICAgc2NvcGVCYXJJdGVtcy5wdXNoKGl0ZW0pOworICAgICAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGhpcyk7CiAgICAgfQogCi0gICAgdmFyIGFs
bEl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlNjb3BlQmFySXRlbShwcmVmaXggKyAidHlwZS1hbGwi
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFsbCIpKTsKLSAgICBzY29wZUJhckl0ZW1zLnVuc2hp
ZnQoYWxsSXRlbSk7CisgICAgc3RhdGljIGNyZWF0ZUNvbHVtblNjb3BlQmFyKHByZWZpeCwgbWFw
KQorICAgIHsKKyAgICAgICAgcHJlZml4ID0gcHJlZml4ICsgIi10aW1lbGluZS1kYXRhLWdyaWQt
IjsKKworICAgICAgICB2YXIgc2NvcGVCYXJJdGVtcyA9IFtdOworICAgICAgICBmb3IgKHZhciBb
a2V5LCB2YWx1ZV0gb2YgbWFwKSB7CisgICAgICAgICAgICB2YXIgaWQgPSBwcmVmaXggKyBrZXk7
CisgICAgICAgICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtKGlk
LCB2YWx1ZSk7CisgICAgICAgICAgICBpdGVtLnZhbHVlID0ga2V5OworICAgICAgICAgICAgc2Nv
cGVCYXJJdGVtcy5wdXNoKGl0ZW0pOworICAgICAgICB9CiAKLSAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5TY29wZUJhcihwcmVmaXggKyAic2NvcGUtYmFyIiwgc2NvcGVCYXJJdGVtcywgYWxs
SXRlbSwgdHJ1ZSk7Ci19OworICAgICAgICB2YXIgYWxsSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
U2NvcGVCYXJJdGVtKHByZWZpeCArICJ0eXBlLWFsbCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
QWxsIikpOworICAgICAgICBzY29wZUJhckl0ZW1zLnVuc2hpZnQoYWxsSXRlbSk7CiAKLVdlYklu
c3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlLAorICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5T
Y29wZUJhcihwcmVmaXggKyAic2NvcGUtYmFyIiwgc2NvcGVCYXJJdGVtcywgYWxsSXRlbSwgdHJ1
ZSk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICByZXNldDogZnVuY3Rpb24oKQorICAg
IHJlc2V0KCkKICAgICB7CiAgICAgICAgIC8vIE1heSBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNz
ZXMuIElmIHNvLCB0aGV5IHNob3VsZCBjYWxsIHRoZSBzdXBlcmNsYXNzLgogCiAgICAgICAgIHRo
aXMuX2hpZGVQb3BvdmVyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24o
KQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAgIC8vIE1heSBiZSBvdmVycmlkZGVuIGJ5IHN1
YmNsYXNzZXMuIElmIHNvLCB0aGV5IHNob3VsZCBjYWxsIHRoZSBzdXBlcmNsYXNzLgogCiAgICAg
ICAgIHRoaXMuX3RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIuc3luY2hyb25pemUoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAg
ICAgewogICAgICAgICAvLyBNYXkgYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLiBJZiBzbywg
dGhleSBzaG91bGQgY2FsbCB0aGUgc3VwZXJjbGFzcy4KIAogICAgICAgICB0aGlzLl9oaWRlUG9w
b3ZlcigpOwotICAgIH0sCisgICAgfQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xv
c2VkKCkKICAgICB7CiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUi
LCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHRyZWVFbGVtZW50Rm9yRGF0YUdyaWROb2Rl
OiBmdW5jdGlvbihkYXRhR3JpZE5vZGUpCisgICAgdHJlZUVsZW1lbnRGb3JEYXRhR3JpZE5vZGUo
ZGF0YUdyaWROb2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RyZWVPdXRsaW5lRGF0
YUdyaWRTeW5jaHJvbml6ZXIudHJlZUVsZW1lbnRGb3JEYXRhR3JpZE5vZGUoZGF0YUdyaWROb2Rl
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50OiBmdW5j
dGlvbih0cmVlRWxlbWVudCkKKyAgICBkYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudCh0cmVlRWxl
bWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90cmVlT3V0bGluZURhdGFHcmlkU3lu
Y2hyb25pemVyLmRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50KHRyZWVFbGVtZW50KTsKLSAgICB9
LAorICAgIH0KIAotICAgIGNhbGxGcmFtZVBvcG92ZXJBbmNob3JFbGVtZW50OiBmdW5jdGlvbigp
CisgICAgY2FsbEZyYW1lUG9wb3ZlckFuY2hvckVsZW1lbnQoKQogICAgIHsKICAgICAgICAgLy8g
SW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICB0cmVlRWxlbWVudE1hdGNoZXNBY3RpdmVTY29wZUZpbHRlcnM6IGZ1bmN0
aW9uKHRyZWVFbGVtZW50KQorICAgIHRyZWVFbGVtZW50TWF0Y2hlc0FjdGl2ZVNjb3BlRmlsdGVy
cyh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl90
cmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLmRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50
KHRyZWVFbGVtZW50KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YUdyaWROb2RlKTsKQEAg
LTE1MSw5ICsxNDAsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGFkZFJvd0luU29ydE9yZGVyOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgZGF0YUdyaWROb2Rl
LCBwYXJlbnRFbGVtZW50KQorICAgIGFkZFJvd0luU29ydE9yZGVyKHRyZWVFbGVtZW50LCBkYXRh
R3JpZE5vZGUsIHBhcmVudEVsZW1lbnQpCiAgICAgewogICAgICAgICB0aGlzLl90cmVlT3V0bGlu
ZURhdGFHcmlkU3luY2hyb25pemVyLmFzc29jaWF0ZSh0cmVlRWxlbWVudCwgZGF0YUdyaWROb2Rl
KTsKIApAQCAtMTcxLDIzICsxNjAsMjMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gQXBwZW5kIHRvIHRoZSBwYXJlbnQsIHdoaWNo
IHdpbGwgY2F1c2UgdGhlIHN5bmNocm9uaXplciB0byBhcHBlbmQgdG8gdGhlIGRhdGEgZ3JpZC4K
ICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodHJlZUVsZW1lbnQpOwogICAg
ICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG91bGRJZ25vcmVTZWxlY3Rpb25FdmVudDog
ZnVuY3Rpb24oKQorICAgIHNob3VsZElnbm9yZVNlbGVjdGlvbkV2ZW50KCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9pZ25vcmVTZWxlY3Rpb25FdmVudCB8fCBmYWxzZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIGhhbmRsZUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoZXZlbnQudHlwZSA9PT0gInJlc2l6ZSIpOwogCiAgICAgICAgIHRoaXMuX3dpbmRvd1Jlc2l6
ZWQoZXZlbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgZGF0YUdyaWROb2RlTmVlZHNSZWZyZXNo
OiBmdW5jdGlvbihkYXRhR3JpZE5vZGUpCisgICAgZGF0YUdyaWROb2RlTmVlZHNSZWZyZXNoKGRh
dGFHcmlkTm9kZSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZGlydHlEYXRhR3JpZE5vZGVz
KQogICAgICAgICAgICAgdGhpcy5fZGlydHlEYXRhR3JpZE5vZGVzID0gbmV3IFNldDsKQEAgLTE5
NywxMSArMTg2LDExIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zY2hlZHVsZWREYXRhR3Jp
ZE5vZGVSZWZyZXNoSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9yZWZy
ZXNoRGlydHlEYXRhR3JpZE5vZGVzLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCiAgICAg
Ly8gUHJpdmF0ZQogCi0gICAgX3JlZnJlc2hEaXJ0eURhdGFHcmlkTm9kZXM6IGZ1bmN0aW9uKCkK
KyAgICBfcmVmcmVzaERpcnR5RGF0YUdyaWROb2RlcygpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fc2NoZWR1bGVkRGF0YUdyaWROb2RlUmVmcmVzaElkZW50aWZpZXIpIHsKICAgICAgICAgICAg
IGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZERhdGFHcmlkTm9kZVJlZnJlc2hJ
ZGVudGlmaWVyKTsKQEAgLTI1NCw5ICsyNDMsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRh
R3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RyZWVPdXRsaW5lRGF0YUdyaWRTeW5j
aHJvbml6ZXIuZW5hYmxlZCA9IHRydWU7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuX2RpcnR5RGF0
YUdyaWROb2RlczsKLSAgICB9LAorICAgIH0KIAotICAgIF9zb3J0OiBmdW5jdGlvbigpCisgICAg
X3NvcnQoKQogICAgIHsKICAgICAgICAgdmFyIHNvcnRDb2x1bW5JZGVudGlmaWVyID0gdGhpcy5z
b3J0Q29sdW1uSWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFzb3J0Q29sdW1uSWRlbnRpZmllcikK
QEAgLTMxMiw5ICszMDEsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBzZWxlY3RlZE5vZGUucmV2ZWFsQW5kU2VsZWN0KCk7CiAKICAg
ICAgICAgZGVsZXRlIHRoaXMuX2lnbm9yZVNlbGVjdGlvbkV2ZW50OwotICAgIH0sCisgICAgfQog
Ci0gICAgX3NvcnRDb21wYXJhdG9yOiBmdW5jdGlvbihub2RlMSwgbm9kZTIpCisgICAgX3NvcnRD
b21wYXJhdG9yKG5vZGUxLCBub2RlMikKICAgICB7CiAgICAgICAgIHZhciBzb3J0Q29sdW1uSWRl
bnRpZmllciA9IHRoaXMuc29ydENvbHVtbklkZW50aWZpZXI7CiAgICAgICAgIGlmICghc29ydENv
bHVtbklkZW50aWZpZXIpCkBAIC0zNTEsOSArMzQwLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
RGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIEZvciBldmVyeXRoaW5nIGVsc2Ug
KG1vc3RseSBib29sZWFucykuCiAgICAgICAgIHJldHVybiAodmFsdWUxIDwgdmFsdWUyID8gLTEg
OiAodmFsdWUxID4gdmFsdWUyID8gMSA6IDApKSAqIHNvcnREaXJlY3Rpb247Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdXBkYXRlU2NvcGVCYXJGb3JjZWRWaXNpYmlsaXR5OiBmdW5jdGlvbigpCisg
ICAgX3VwZGF0ZVNjb3BlQmFyRm9yY2VkVmlzaWJpbGl0eSgpCiAgICAgewogICAgICAgICBmb3Ig
KHZhciBpZGVudGlmaWVyIG9mIHRoaXMuX2ZpbHRlcmFibGVDb2x1bW5zKSB7CiAgICAgICAgICAg
ICB2YXIgc2NvcGVCYXIgPSB0aGlzLmNvbHVtbnMuZ2V0KGlkZW50aWZpZXIpLnNjb3BlQmFyOwpA
QCAtMzYyLDE3ICszNTEsMTcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2NvcGVCYXJTZWxlY3RlZEl0ZW1zRGlkQ2hhbmdlOiBm
dW5jdGlvbihldmVudCkKKyAgICBfc2NvcGVCYXJTZWxlY3RlZEl0ZW1zRGlkQ2hhbmdlKGV2ZW50
KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlU2NvcGVCYXJGb3JjZWRWaXNpYmlsaXR5KCk7
CiAKICAgICAgICAgdmFyIGNvbHVtbklkZW50aWZpZXIgPSBldmVudC50YXJnZXQuY29sdW1uSWRl
bnRpZmllcjsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lRGF0YUdyaWQuRXZlbnQuRmlsdGVyc0RpZENoYW5nZSwge2NvbHVtbklkZW50
aWZpZXJ9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhR3JpZFNlbGVjdGVkTm9kZUNoYW5n
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhR3JpZFNlbGVjdGVkTm9kZUNoYW5nZWQoZXZl
bnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWROb2RlKSB7CiAgICAgICAgICAg
ICB0aGlzLl9oaWRlUG9wb3ZlcigpOwpAQCAtMzg2LDE1ICszNzUsMTUgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhp
cy5fc2hvd1BvcG92ZXJGb3JTZWxlY3RlZE5vZGVTb29uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfd2luZG93UmVzaXplZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3dpbmRvd1Jlc2l6ZWQoZXZl
bnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fcG9wb3ZlciAmJiB0aGlzLl9wb3BvdmVyLnZp
c2libGUpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyRm9yU2VsZWN0ZWROb2RlKGZh
bHNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93UG9wb3ZlckZvclNlbGVjdGVkTm9kZVNv
b246IGZ1bmN0aW9uKCkKKyAgICBfc2hvd1BvcG92ZXJGb3JTZWxlY3RlZE5vZGVTb29uKCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9zaG93UG9wb3ZlclRpbWVvdXQpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC00MDgsOSArMzk3LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQu
cHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJUaW1l
b3V0ID0gc2V0VGltZW91dChkZWxheWVkV29yay5iaW5kKHRoaXMpLCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVEYXRhR3JpZC5EZWxheWVkUG9wb3ZlclNob3dUaW1lb3V0KTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9oaWRlUG9wb3ZlcjogZnVuY3Rpb24oKQorICAgIF9oaWRlUG9wb3ZlcigpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5fc2hvd1BvcG92ZXJUaW1lb3V0KSB7CiAgICAgICAgICAgICBj
bGVhclRpbWVvdXQodGhpcy5fc2hvd1BvcG92ZXJUaW1lb3V0KTsKQEAgLTQyOSw5ICs0MTgsOSBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlm
ICh0aGlzLl9oaWRlUG9wb3ZlckNvbnRlbnRDbGVhclRpbWVvdXQpCiAgICAgICAgICAgICBjbGVh
clRpbWVvdXQodGhpcy5faGlkZVBvcG92ZXJDb250ZW50Q2xlYXJUaW1lb3V0KTsKICAgICAgICAg
dGhpcy5faGlkZVBvcG92ZXJDb250ZW50Q2xlYXJUaW1lb3V0ID0gc2V0VGltZW91dChkZWxheWVk
V29yay5iaW5kKHRoaXMpLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5EZWxheWVkUG9w
b3ZlckhpZGVDb250ZW50Q2xlYXJUaW1lb3V0KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRh
dGVQb3BvdmVyRm9yU2VsZWN0ZWROb2RlOiBmdW5jdGlvbih1cGRhdGVDb250ZW50KQorICAgIF91
cGRhdGVQb3BvdmVyRm9yU2VsZWN0ZWROb2RlKHVwZGF0ZUNvbnRlbnQpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX3BvcG92ZXIgfHwgIXRoaXMuc2VsZWN0ZWROb2RlKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtNDU2LDkgKzQ0NSw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlk
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXIuY29udGVudCA9IHRoaXMu
X2NyZWF0ZVBvcG92ZXJDb250ZW50KCk7CiAKICAgICAgICAgdGhpcy5fcG9wb3Zlci5wcmVzZW50
KHRhcmdldEZyYW1lLnBhZCgyKSwgW1dlYkluc3BlY3Rvci5SZWN0RWRnZS5NQVhfWSwgV2ViSW5z
cGVjdG9yLlJlY3RFZGdlLk1JTl9ZLCBXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUFYX1hdKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9jcmVhdGVQb3BvdmVyQ29udGVudDogZnVuY3Rpb24oKQorICAg
IF9jcmVhdGVQb3BvdmVyQ29udGVudCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3BvcG92
ZXJDYWxsU3RhY2tUcmVlT3V0bGluZSkgewogICAgICAgICAgICAgdmFyIGNvbnRlbnRFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKQEAgLTQ3OCw5ICs0NjcsOSBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnRlbnQu
Y2xhc3NOYW1lID0gInRpbWVsaW5lLWRhdGEtZ3JpZC1wb3BvdmVyIjsKICAgICAgICAgY29udGVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9wb3BvdmVyQ2FsbFN0YWNrVHJlZU91dGxpbmUuZWxlbWVudCk7
CiAgICAgICAgIHJldHVybiBjb250ZW50OwotICAgIH0sCisgICAgfQogCi0gICAgX3BvcG92ZXJD
YWxsU3RhY2tUcmVlRWxlbWVudFNlbGVjdGVkOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgc2VsZWN0
ZWRCeVVzZXIpCisgICAgX3BvcG92ZXJDYWxsU3RhY2tUcmVlRWxlbWVudFNlbGVjdGVkKHRyZWVF
bGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIHRoaXMuX3BvcG92ZXIuZGlz
bWlzcygpOwogCkBAIC00OTIsMyArNDgxLDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFH
cmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTb3VyY2VDb2RlTG9j
YXRpb24oY2FsbEZyYW1lLnNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgfQogfTsKKworV2ViSW5z
cGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuSGFzTm9uRGVmYXVsdEZpbHRlclN0eWxlQ2xhc3NOYW1l
ID0gImhhcy1ub24tZGVmYXVsdC1maWx0ZXIiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdy
aWQuRGVsYXllZFBvcG92ZXJTaG93VGltZW91dCA9IDI1MDsKK1dlYkluc3BlY3Rvci5UaW1lbGlu
ZURhdGFHcmlkLkRlbGF5ZWRQb3BvdmVySGlkZUNvbnRlbnRDbGVhclRpbWVvdXQgPSA1MDA7CisK
K1dlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLkV2ZW50ID0geworICAgIEZpbHRlcnNEaWRD
aGFuZ2U6ICJ0aW1lbGluZWRhdGFncmlkLWZpbHRlcnMtZGlkLWNoYW5nZSIKK307CisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
RGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKaW5kZXggOTgzMmY1MWViNmNmMzhhY2NlMTJhMDE5
ZmE2ZDNjYmZmZmE0ZTNhZS4uZjVkYzU4MzkwNDY1NzM5NzY1MTczY2VlYzU1NDZhMTg5NGU2MTA5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGltZWxpbmVEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI3ICsyMywyMiBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5U
aW1lbGluZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKGdyYXBoT25seSwgZ3JhcGhEYXRhU291cmNl
LCBoYXNDaGlsZHJlbikKK1dlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZSA9IGNsYXNz
IFRpbWVsaW5lRGF0YUdyaWROb2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZQog
ewotICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCB7fSwgaGFzQ2hpbGRy
ZW4pOworICAgIGNvbnN0cnVjdG9yKGdyYXBoT25seSwgZ3JhcGhEYXRhU291cmNlLCBoYXNDaGls
ZHJlbikKKyAgICB7CisgICAgICAgIHN1cGVyKHt9LCBoYXNDaGlsZHJlbik7CiAKLSAgICB0aGlz
LmNvcHlhYmxlID0gZmFsc2U7CisgICAgICAgIHRoaXMuY29weWFibGUgPSBmYWxzZTsKIAotICAg
IHRoaXMuX2dyYXBoT25seSA9IGdyYXBoT25seSB8fCBmYWxzZTsKLSAgICB0aGlzLl9ncmFwaERh
dGFTb3VyY2UgPSBncmFwaERhdGFTb3VyY2UgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5fZ3JhcGhP
bmx5ID0gZ3JhcGhPbmx5IHx8IGZhbHNlOworICAgICAgICB0aGlzLl9ncmFwaERhdGFTb3VyY2Ug
PSBncmFwaERhdGFTb3VyY2UgfHwgbnVsbDsKIAotICAgIGlmIChncmFwaERhdGFTb3VyY2UpIHsK
LSAgICAgICAgdGhpcy5fZ3JhcGhDb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFycyA9IFtdOworICAg
ICAgICBpZiAoZ3JhcGhEYXRhU291cmNlKSB7CisgICAgICAgICAgICB0aGlzLl9ncmFwaENvbnRh
aW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAg
IHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFycyA9IFtdOworICAgICAgICB9CiAgICAgfQotfTsKLQot
Ly8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBj
YW4gcmVtb3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUpOwotCi1XZWJJ
bnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUsCi0gICAgX19wcm90b19fOiBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSwKIAogICAgIC8vIFB1YmxpYwogCkBA
IC01MSwxMiArNDYsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3Rv
dHlwZSA9IHsKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAg
ICAgICAgIHJldHVybiBbXTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBncmFwaERhdGFTb3Vy
Y2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2dyYXBoRGF0YVNvdXJjZTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBkYXRhKCkKICAgICB7CkBAIC02NSwyMiArNjAsMjIgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2
YXIgcmVjb3JkcyA9IHRoaXMucmVjb3JkcyB8fCBbXTsKICAgICAgICAgcmV0dXJuIHtncmFwaDog
cmVjb3Jkcy5sZW5ndGggPyByZWNvcmRzWzBdLnN0YXJ0VGltZSA6IDB9OwotICAgIH0sCisgICAg
fQogCi0gICAgY29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICBjb2xsYXBzZSgpCiAgICAgewotICAg
ICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jb2xsYXBzZS5jYWxsKHRo
aXMpOworICAgICAgICBzdXBlci5jb2xsYXBzZSgpOwogCiAgICAgICAgIGlmICghdGhpcy5fZ3Jh
cGhEYXRhU291cmNlIHx8ICF0aGlzLnJldmVhbGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIC8vIFJlZnJlc2ggdG8gc2hvdyBjaGlsZCBiYXJzIGluIG91ciBncmFwaCBub3cgdGhh
dCB3ZSBjb2xsYXBzZWQuCiAgICAgICAgIHRoaXMucmVmcmVzaEdyYXBoKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBleHBhbmQ6IGZ1bmN0aW9uKCkKKyAgICBleHBhbmQoKQogICAgIHsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuZXhwYW5kLmNhbGwodGhpcyk7
CisgICAgICAgIHN1cGVyLmV4cGFuZCgpOwogCiAgICAgICAgIGlmICghdGhpcy5fZ3JhcGhEYXRh
U291cmNlIHx8ICF0aGlzLnJldmVhbGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTUsOSAr
OTAsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgIGNoaWxkTm9kZS5yZWZyZXNoR3JhcGgoKTsKICAgICAgICAgICAgIGNo
aWxkTm9kZSA9IGNoaWxkTm9kZS50cmF2ZXJzZU5leHROb2RlKHRydWUsIHRoaXMpOwogICAgICAg
ICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVDZWxsQ29udGVudDogZnVuY3Rpb24oY29s
dW1uSWRlbnRpZmllciwgY2VsbCkKKyAgICBjcmVhdGVDZWxsQ29udGVudChjb2x1bW5JZGVudGlm
aWVyLCBjZWxsKQogICAgIHsKICAgICAgICAgaWYgKGNvbHVtbklkZW50aWZpZXIgPT09ICJncmFw
aCIgJiYgdGhpcy5fZ3JhcGhEYXRhU291cmNlKSB7CiAgICAgICAgICAgICB0aGlzLm5lZWRzR3Jh
cGhSZWZyZXNoKCk7CkBAIC0xNjIsNyArMTU3LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0
YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRD
aGlsZChnb1RvQXJyb3dCdXR0b25MaW5rKTsKIAogICAgICAgICAgICAgICAgIHZhciBpY29uID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICAgICAgaWNvbi5jbGFz
c05hbWUgPSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUuSWNvblN0eWxl
Q2xhc3NOYW1lOworICAgICAgICAgICAgICAgIGljb24uY2xhc3NMaXN0LmFkZCgiaWNvbiIpOwog
ICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGljb24pOwogCiAgICAgICAgICAg
ICAgICAgaWYgKGlzQW5vbnltb3VzRnVuY3Rpb24pIHsKQEAgLTE5MCw3ICsxODUsNyBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgICAgICBmcmFnbWVudC5hcHBlbmQoZnVuY3Rpb25OYW1lKTsKIAogICAgICAgICAgICAgICAg
ICAgICB2YXIgc3VidGl0bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIp
OwotICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZUVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLlN1YnRpdGxlU3R5bGVDbGFzc05hbWU7
CisgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdWJ0
aXRsZSIpOwogICAgICAgICAgICAgICAgICAgICBjYWxsRnJhbWUuc291cmNlQ29kZUxvY2F0aW9u
LnBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlvblN0cmluZyhzdWJ0aXRsZUVsZW1lbnQsICJ0ZXh0
Q29udGVudCIpOwogCiAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHN1
YnRpdGxlRWxlbWVudCk7CkBAIC0yMDAsMjcgKzE5NSwyNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICB2YXIgaWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAg
aWNvbi5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUu
SWNvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgaWNvbi5jbGFzc0xpc3QuYWRkKCJpY29u
Iik7CiAKICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZChpY29uLCBmdW5jdGlvbk5hbWUpOwog
CiAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbENvbnRlbnQu
Y2FsbCh0aGlzLCBjb2x1bW5JZGVudGlmaWVyLCBjZWxsKTsKLSAgICB9LAorICAgICAgICByZXR1
cm4gc3VwZXIuY3JlYXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmllciwgY2VsbCk7CisgICAg
fQogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX2dyYXBoRGF0YVNvdXJjZSAmJiB0aGlzLl9ncmFwaE9ubHkpIHsKICAgICAg
ICAgICAgIHRoaXMubmVlZHNHcmFwaFJlZnJlc2goKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLnJl
ZnJlc2guY2FsbCh0aGlzKTsKLSAgICB9LAorICAgICAgICBzdXBlci5yZWZyZXNoKCk7CisgICAg
fQogCi0gICAgcmVmcmVzaEdyYXBoOiBmdW5jdGlvbigpCisgICAgcmVmcmVzaEdyYXBoKCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fZ3JhcGhEYXRhU291cmNlKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjU2LDYgKzI1MSwxOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5v
ZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgKytyZWNvcmRCYXJJbmRleDsKICAgICAgICAg
fQogCisgICAgICAgIGZ1bmN0aW9uIGNvbGxlY3RSZWNvcmRzQnlUeXBlKHJlY29yZHMsIHJlY29y
ZHNCeVR5cGVNYXApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodmFyIHJlY29yZCBvZiBy
ZWNvcmRzKSB7CisgICAgICAgICAgICAgICAgdmFyIHR5cGVkUmVjb3JkcyA9IHJlY29yZHNCeVR5
cGVNYXAuZ2V0KHJlY29yZC50eXBlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXR5cGVkUmVjb3Jk
cykgeworICAgICAgICAgICAgICAgICAgICB0eXBlZFJlY29yZHMgPSBbXTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVjb3Jkc0J5VHlwZU1hcC5zZXQocmVjb3JkLnR5cGUsIHR5cGVkUmVjb3Jkcyk7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdHlwZWRSZWNvcmRzLnB1c2go
cmVjb3JkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIHZhciBib3VuZENy
ZWF0ZUJhciA9IGNyZWF0ZUJhci5iaW5kKHRoaXMpOwogCiAgICAgICAgIGlmICh0aGlzLmV4cGFu
ZGVkKSB7CkBAIC0yNjYsMjYgKzI3NCwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gVG8gc2hhcmUgYmFycyBiZXR0ZXIs
IGdyb3VwIHJlY29yZHMgYnkgdHlwZS4KIAogICAgICAgICAgICAgdmFyIHJlY29yZFR5cGVNYXAg
PSBuZXcgTWFwOwotCi0gICAgICAgICAgICBmdW5jdGlvbiBjb2xsZWN0UmVjb3Jkc0J5VHlwZShy
ZWNvcmRzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvciAodmFyIHJlY29yZCBv
ZiByZWNvcmRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlZFJlY29yZHMgPSByZWNv
cmRUeXBlTWFwLmdldChyZWNvcmQudHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghdHlw
ZWRSZWNvcmRzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlZFJlY29yZHMgPSBbXTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZFR5cGVNYXAuc2V0KHJlY29yZC50eXBlLCB0
eXBlZFJlY29yZHMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgdHlwZWRSZWNvcmRzLnB1c2gocmVjb3JkKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGNvbGxlY3RSZWNvcmRzQnlUeXBlKHRoaXMucmVjb3Jkcyk7
CisgICAgICAgICAgICBjb2xsZWN0UmVjb3Jkc0J5VHlwZSh0aGlzLnJlY29yZHMsIHJlY29yZFR5
cGVNYXApOwogCiAgICAgICAgICAgICB2YXIgY2hpbGROb2RlID0gdGhpcy5jaGlsZHJlblswXTsK
ICAgICAgICAgICAgIHdoaWxlIChjaGlsZE5vZGUpIHsKICAgICAgICAgICAgICAgICBpZiAoY2hp
bGROb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlKQotICAg
ICAgICAgICAgICAgICAgICBjb2xsZWN0UmVjb3Jkc0J5VHlwZShjaGlsZE5vZGUucmVjb3Jkcyk7
CisgICAgICAgICAgICAgICAgICAgIGNvbGxlY3RSZWNvcmRzQnlUeXBlKGNoaWxkTm9kZS5yZWNv
cmRzLCByZWNvcmRUeXBlTWFwKTsKICAgICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBjaGlsZE5v
ZGUudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgdGhpcyk7CiAgICAgICAgICAgICB9CiAKQEAgLTI5
OCw5ICsyOTIsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVSZWNvcmRCYXJzW3JlY29yZEJhckluZGV4
XS5yZWNvcmRzID0gbnVsbDsKICAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFyc1ty
ZWNvcmRCYXJJbmRleF0uZWxlbWVudC5yZW1vdmUoKTsKICAgICAgICAgfQotICAgIH0sCisgICAg
fQogCi0gICAgbmVlZHNHcmFwaFJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICBuZWVkc0dyYXBoUmVm
cmVzaCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMucmV2ZWFsZWQpIHsKICAgICAgICAgICAg
IC8vIFdlIGFyZSBub3QgdmlzaWJsZSwgYnV0IGFuIGFuY2VzdG9yIHdpbGwgYmUgZHJhd2luZyBv
dXIgZ3JhcGguCkBAIC0zMjIsMTEgKzMxNiwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRh
R3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRo
aXMuX3NjaGVkdWxlZEdyYXBoUmVmcmVzaElkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUodGhpcy5yZWZyZXNoR3JhcGguYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcm90ZWN0ZWQKIAotICAgIGlzUmVjb3JkVmlzaWJsZTogZnVuY3Rpb24ocmVjb3JkKQorICAg
IGlzUmVjb3JkVmlzaWJsZShyZWNvcmQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2dyYXBo
RGF0YVNvdXJjZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
</data>
<flag name="review"
          id="283194"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>