<?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>86488</bug_id>
          
          <creation_ts>2012-05-15 08:27:12 -0700</creation_ts>
          <short_desc>Web Inspector: use separate fields for storing HeapSnapshotLoaderProxy and HeapSnapshotProxy</short_desc>
          <delta_ts>2012-05-16 01:47:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>624111</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-15 08:27:12 -0700</bug_when>
    <thetext>Heap snapshot may be in 3 states: not loaded, loading and loaded. At the present time there is HeapProfileHeader._proxy field which may be either HeapSnapshotLoaderProxy or HeapSnapshotProxy which complicates the code a lot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624115</commentid>
    <comment_count>1</comment_count>
      <attachid>141976</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-15 08:33:24 -0700</bug_when>
    <thetext>Created attachment 141976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624119</commentid>
    <comment_count>2</comment_count>
      <attachid>141977</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-15 08:34:26 -0700</bug_when>
    <thetext>Created attachment 141977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624124</commentid>
    <comment_count>3</comment_count>
      <attachid>141978</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-15 08:36:42 -0700</bug_when>
    <thetext>Created attachment 141978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624128</commentid>
    <comment_count>4</comment_count>
      <attachid>141979</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-15 08:38:35 -0700</bug_when>
    <thetext>Created attachment 141979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624162</commentid>
    <comment_count>5</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-15 09:07:42 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=141978&amp;action=review

&gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:530
&gt;              this.baseSelectElement.removeStyleClass(&quot;hidden&quot;);
&gt;              if (!this.dataGrid.snapshotView) {
&gt;                  this._changeBase();
&gt; -                this.dataGrid.setDataSource(this, this.profileWrapper);
&gt; +                var snapshotProxy = this.profile.snapshotProxy();
&gt; +                // If snapshot has not been loaded yet the data source will be set by the initial load
&gt; +                // callback(called in HeapSnapshotView constructor)
&gt; +                if (snapshotProxy)
&gt; +                    this.dataGrid.setDataSource(this, snapshotProxy);
&gt;              }
&gt;          } else {
&gt;              this.baseSelectElement.addStyleClass(&quot;hidden&quot;);
&gt; -            if (!this.dataGrid.snapshotView)
&gt; -                this.dataGrid.setDataSource(this, this.profileWrapper);
&gt; +            if (!this.dataGrid.snapshotView) {
&gt; +                var snapshotProxy = this.profile.snapshotProxy();
&gt; +                // If snapshot has not been loaded yet the data source will be set by the initial load
&gt; +                // callback(called in HeapSnapshotView constructor)
&gt; +                if (snapshotProxy)
&gt; +                    this.dataGrid.setDataSource(this, snapshotProxy);
&gt; +            }
&gt;          }

looks weird

&gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:833
&gt; +            ProfilerAgent.getProfile(this.typeId, this.uid, function() {});

please remove empty callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625121</commentid>
    <comment_count>6</comment_count>
      <attachid>142189</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-16 01:32:09 -0700</bug_when>
    <thetext>Created attachment 142189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625123</commentid>
    <comment_count>7</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-16 01:32:38 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=141978&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:530
&gt; &gt;              this.baseSelectElement.removeStyleClass(&quot;hidden&quot;);
&gt; &gt;              if (!this.dataGrid.snapshotView) {
&gt; &gt;                  this._changeBase();
&gt; &gt; -                this.dataGrid.setDataSource(this, this.profileWrapper);
&gt; &gt; +                var snapshotProxy = this.profile.snapshotProxy();
&gt; &gt; +                // If snapshot has not been loaded yet the data source will be set by the initial load
&gt; &gt; +                // callback(called in HeapSnapshotView constructor)
&gt; &gt; +                if (snapshotProxy)
&gt; &gt; +                    this.dataGrid.setDataSource(this, snapshotProxy);
&gt; &gt;              }
&gt; &gt;          } else {
&gt; &gt;              this.baseSelectElement.addStyleClass(&quot;hidden&quot;);
&gt; &gt; -            if (!this.dataGrid.snapshotView)
&gt; &gt; -                this.dataGrid.setDataSource(this, this.profileWrapper);
&gt; &gt; +            if (!this.dataGrid.snapshotView) {
&gt; &gt; +                var snapshotProxy = this.profile.snapshotProxy();
&gt; &gt; +                // If snapshot has not been loaded yet the data source will be set by the initial load
&gt; &gt; +                // callback(called in HeapSnapshotView constructor)
&gt; &gt; +                if (snapshotProxy)
&gt; &gt; +                    this.dataGrid.setDataSource(this, snapshotProxy);
&gt; &gt; +            }
&gt; &gt;          }
&gt; 
&gt; looks weird
&gt; 
Fixed.

&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:833
&gt; &gt; +            ProfilerAgent.getProfile(this.typeId, this.uid, function() {});
&gt; 
&gt; please remove empty callback.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625136</commentid>
    <comment_count>8</comment_count>
      <attachid>142189</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-16 01:39:27 -0700</bug_when>
    <thetext>Comment on attachment 142189
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625143</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-16 01:47:19 -0700</bug_when>
    <thetext>Committed r117234: &lt;http://trac.webkit.org/changeset/117234&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141976</attachid>
            <date>2012-05-15 08:33:24 -0700</date>
            <delta_ts>2012-05-15 08:34:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86488-20120515193322.patch</filename>
            <type>text/plain</type>
            <size>17889</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM1ODBhMTQxMWVmYWRk
YzA2NzgwMjFkMDE1YThhOTI3NWU4MWYwMi4uODBhMDY1ZjI3ODRiNjAzNTU4N2Y0ZGEwOTcxYTUx
YWNhNzcwZmZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDEyLTA1LTE1ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBzZXBhcmF0ZSBmaWVsZHMgZm9yIHN0b3JpbmcgSGVhcFNuYXBzaG90TG9hZGVyUHJv
eHkgYW5kIEhlYXBTbmFwc2hvdFByb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NjQ4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNpbXBsaWZpZWQgaGVhcCBwcm9maWxlciBzbmFwc2hvdCBsb2FkaW5n
IGNvZGUuIEludHJvZHVjZWQgZGVkaWNhdGVkIGZpZWxkcyBmb3IKKyAgICAgICAgc25hcHNob3Qg
bG9hZGVyIHByb3h5IGFuZCBmb3Igc25hcHNob3QgcHJveHkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFdvcmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
TG9hZGVyUHJveHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclBy
b3h5LnByb3RvdHlwZS5maW5pc2hMb2FkaW5nLnVwZGF0ZVN0YXRpY0RhdGEpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5maW5pc2hMb2Fk
aW5nLmNhbGxMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RMb2FkZXJQcm94eS5wcm90b3R5cGUuZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyUHJveHkucHJvdG90eXBlLmdldCBsb2FkZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5zdGFy
dExvYWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5
LnByb3RvdHlwZS5wdXNoSlNPTkNodW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0hlYXBTbmFwc2hvdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Vmlldy5wcm9maWxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBl
LmRpc3Bvc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90
eXBlLmdldCBiYXNlUHJvZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFZpZXcucHJvdG90eXBlLndhc1Nob3duLnByb2ZpbGVDYWxsYmFjazEpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLl9jaGFuZ2VWaWV3KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlcik6IHNwbGl0IF9wcm94eSBm
aWVsZCBpbnRvIF9sb2FkZXJQcm94eSBhbmQgX3NuYXBzaG90UHJveHkKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuc25hcHNob3RQcm94eSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLmxvYWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fc2V0dXBXb3Jr
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5k
aXNwb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5
cGUuX3NhdmVTdGF0dXNVcGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxl
SGVhZGVyLnByb3RvdHlwZS5wdXNoSlNPTkNodW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuZmluaXNoSGVhcFNuYXBzaG90KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuY2FuU2F2ZVRvRmlsZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLmxvYWRG
cm9tRmlsZS5vbkxvYWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVy
LnByb3RvdHlwZS5sb2FkRnJvbUZpbGUpOgorCisyMDEyLTA1LTE1ICBZdXJ5IFNlbWlraGF0c2t5
ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGltcGxlbWVu
dCAiUmV2ZWFsIGluIERvbWluYXRvcnMgdmlldyIgY29udGV4dCBtZW51IGFjdGlvbgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0NTUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94
eS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJv
eHkuanMKaW5kZXggNjI2NGVlNzJhNWJkNGVlYWQ1YjRjMDRmOWYyZjJiNjIzY2IxM2RhMy4uZTZi
MDM4ZjdhYmNiYjk0ODU5ZDJlMzViZTY4OTIxZTA1YzAzNmM3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzCkBA
IC0xNjQsNyArMTY0LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlciA9IGZ1bmN0
aW9uKCkKICAgICB0aGlzLl9jYWxsYmFja3MgPSBbXTsKICAgICB0aGlzLl9wcmV2aW91c0NhbGxi
YWNrcyA9IFtdOwogICAgIC8vIFRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIHdvcmtlcnMgaW4gQ2hy
b21pdW0gRFJULgotICAgIHRoaXMuX3dvcmtlciA9IHR5cGVvZiBJbnNwZWN0b3JUZXN0ID09PSAi
dW5kZWZpbmVkIiA/IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmVhbFdvcmtlcigpIDog
bmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGYWtlV29ya2VyKCk7CisgICAgdGhpcy5fd29y
a2VyID0gLyp0eXBlb2YgSW5zcGVjdG9yVGVzdCA9PT0gInVuZGVmaW5lZCIgPyBuZXcgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFJlYWxXb3JrZXIoKSA6Ki8gbmV3IFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RGYWtlV29ya2VyKCk7CiAgICAgdGhpcy5fd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCB0aGlzLl9tZXNzYWdlUmVjZWl2ZWQsIHRoaXMpOwogfQogCkBAIC0zNDAsNTcg
KzM0MCw0OSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3QucHJvdG90eXBl
ID0gewogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5ID0gZnVuY3Rpb24od29y
a2VyLCBvYmplY3RJZCkKIHsKICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmpl
Y3QuY2FsbCh0aGlzLCB3b3JrZXIsIG9iamVjdElkKTsKLSAgICB0aGlzLl9sb2FkaW5nID0gZmFs
c2U7Ci0gICAgdGhpcy5fbG9hZGVkID0gZmFsc2U7CisgICAgdGhpcy5fb25Mb2FkQ2FsbGJhY2tz
ID0gW107CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94eS5wcm90b3R5
cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90UHJveHkpfSBjYWxsYmFjaworICAgICAqLwogICAgIGZpbmlzaExvYWRpbmc6IGZ1
bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9sb2FkaW5nKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2YXIgbG9hZENhbGxiYWNrcyA9IHRoaXMu
X29uTG9hZENhbGxiYWNrczsKLSAgICAgICAgbG9hZENhbGxiYWNrcy5zcGxpY2UoMCwgMCwgY2Fs
bGJhY2spOwotICAgICAgICBkZWxldGUgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzOwotICAgICAgICB0
aGlzLl9sb2FkaW5nID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX2xvYWRlZCA9IHRydWU7Ci0gICAg
ICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzLnVuc2hp
ZnQoY2FsbGJhY2spOworCiAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0YXRpY0RhdGEoc25hcHNo
b3RQcm94eSkKICAgICAgICAgewogICAgICAgICAgICAgdGhpcy5kaXNwb3NlKCk7Ci0gICAgICAg
ICAgICBzbmFwc2hvdFByb3h5LnVwZGF0ZVN0YXRpY0RhdGEodGhpcy5fY2FsbExvYWRDYWxsYmFj
a3MuYmluZCh0aGlzLCBsb2FkQ2FsbGJhY2tzKSk7CisgICAgICAgICAgICBzbmFwc2hvdFByb3h5
LnVwZGF0ZVN0YXRpY0RhdGEoY2FsbExvYWRDYWxsYmFja3MuYmluZCh0aGlzKSk7CisgICAgICAg
IH0KKyAgICAgICAgZnVuY3Rpb24gY2FsbExvYWRDYWxsYmFja3Moc25hcHNob3RQcm94eSkKKyAg
ICAgICAgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9vbkxvYWRDYWxs
YmFja3MubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJhY2tz
W2ldKHNuYXBzaG90UHJveHkpOworICAgICAgICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzID0g
bnVsbDsKICAgICAgICAgfQogICAgICAgICB0aGlzLmNhbGxGYWN0b3J5TWV0aG9kKHVwZGF0ZVN0
YXRpY0RhdGEuYmluZCh0aGlzKSwgImZpbmlzaExvYWRpbmciLCAiV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFByb3h5Iik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0KLSAgICBfY2Fs
bExvYWRDYWxsYmFja3M6IGZ1bmN0aW9uKGxvYWRDYWxsYmFja3MsIHNuYXBzaG90UHJveHkpCi0g
ICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxvYWRDYWxsYmFja3MubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICBsb2FkQ2FsbGJhY2tzW2ldKHNuYXBzaG90UHJveHkpOwogICAgIH0s
CiAKICAgICBnZXQgbG9hZGVkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9sb2FkZWQ7
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkpfSBjYWxsYmFjaworICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCiAgICAgc3RhcnRMb2FkaW5nOiBmdW5jdGlv
bihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fbG9hZGluZykgewotICAgICAg
ICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTsKLSAgICAgICAgICAgIHRo
aXMuX2xvYWRpbmcgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLl9vbkxvYWRDYWxsYmFja3MucHVzaChjYWxsYmFjayk7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgdmFyIGxvYWRp
bmdIYXNKdXN0U3RhcnRlZCA9ICF0aGlzLl9vbkxvYWRDYWxsYmFja3MubGVuZ3RoOworICAgICAg
ICB0aGlzLl9vbkxvYWRDYWxsYmFja3MucHVzaChjYWxsYmFjayk7CisgICAgICAgIHJldHVybiBs
b2FkaW5nSGFzSnVzdFN0YXJ0ZWQ7CiAgICAgfSwKIAogICAgIHB1c2hKU09OQ2h1bms6IGZ1bmN0
aW9uKGNodW5rKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9sb2FkaW5nKQotICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB0aGlzLmNhbGxNZXRob2QobnVsbCwgInB1c2hKU09OQ2h1bmsi
LCBjaHVuayk7CiAgICAgfQogfTsKQEAgLTQ3MiwxMSArNDY0LDYgQEAgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwb3NlV29ya2Vy
KCk7CiAgICAgfSwKIAotICAgIGZpbmlzaExvYWRpbmc6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCiAgICAgZ2V0IGxvYWRlZCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gISF0aGlzLl9vYmplY3RJZDsKQEAgLTUwNywxMiArNDk0LDYgQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5jYWxs
TWV0aG9kKGRhdGFSZWNlaXZlZC5iaW5kKHRoaXMpLCAidXBkYXRlU3RhdGljRGF0YSIpOwogICAg
IH0sCiAKLSAgICBzdGFydExvYWRpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAg
ICAgc2V0VGltZW91dChjYWxsYmFjay5iaW5kKG51bGwsIHRoaXMpLCAwKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0sCi0KICAgICBnZXQgdG90YWxTaXplKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9zdGF0aWNEYXRhLnRvdGFsU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcwppbmRleCAyNmEx
YzA2MzVjYmVhYjNkMWJhNjA5NmZiMzEwNmVkMmMwNTM0NzMwLi41ZmY4NmY1ZGFkZDg2ZTM5Njdh
OWIxNWEwODMzODIyNWVhYTFhODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCkBAIC0xMzcsNyArMTM3LDcgQEAg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJlbnQsIHByb2ZpbGUp
CiAKICAgICB0aGlzLl9sb2FkUHJvZmlsZSh0aGlzLl9wcm9maWxlVWlkLCBwcm9maWxlQ2FsbGJh
Y2suYmluZCh0aGlzKSk7CiAKLSAgICBmdW5jdGlvbiBwcm9maWxlQ2FsbGJhY2soKQorICAgIGZ1
bmN0aW9uIHByb2ZpbGVDYWxsYmFjayhoZWFwU25hcHNob3RQcm94eSkKICAgICB7CiAgICAgICAg
IHZhciBsaXN0ID0gdGhpcy5fcHJvZmlsZXMoKTsKICAgICAgICAgdmFyIHByb2ZpbGVJbmRleDsK
QEAgLTE1MiwxNCArMTUyLDE0IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3ID0gZnVu
Y3Rpb24ocGFyZW50LCBwcm9maWxlKQogICAgICAgICAgICAgdGhpcy5iYXNlU2VsZWN0RWxlbWVu
dC5zZWxlY3RlZEluZGV4ID0gcHJvZmlsZUluZGV4IC0gMTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gcHJvZmlsZUluZGV4
OwotICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3VyY2UodGhpcywgdGhpcy5wcm9maWxl
V3JhcHBlcik7CisgICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNvdXJjZSh0aGlzLCBoZWFw
U25hcHNob3RQcm94eSk7CiAgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Vmll
dy5wcm90b3R5cGUgPSB7CiAgICAgZGlzcG9zZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
dGhpcy5wcm9maWxlV3JhcHBlci5kaXNwb3NlKCk7CisgICAgICAgIHRoaXMucHJvZmlsZS5kaXNw
b3NlKCk7CiAgICAgICAgIGlmICh0aGlzLmJhc2VQcm9maWxlKQogICAgICAgICAgICAgdGhpcy5i
YXNlUHJvZmlsZVdyYXBwZXIuZGlzcG9zZSgpOwogICAgICAgICB0aGlzLmNvbnRhaW5tZW50RGF0
YUdyaWQuZGlzcG9zZSgpOwpAQCAtMTc5LDExICsxNzksNiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXRQ
cm9maWxlKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQsIHRoaXMu
X3Byb2ZpbGVVaWQpOwogICAgIH0sCiAKLSAgICBnZXQgcHJvZmlsZVdyYXBwZXIoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMucHJvZmlsZS5fcHJveHk7Ci0gICAgfSwKLQogICAgIGdldCBi
YXNlUHJvZmlsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0UHJvZmls
ZShXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkLCB0aGlzLl9iYXNl
UHJvZmlsZVVpZCk7CkBAIC0xOTEsMTggKzE4NiwxNiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBnZXQgYmFzZVByb2ZpbGVXcmFwcGVyKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VQcm9maWxlLl9wcm94eTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuYmFzZVByb2ZpbGUuX3NuYXBzaG90UHJveHk7CiAgICAgfSwKIAogICAgIHdhc1No
b3duOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMucHJvZmlsZVdyYXBwZXIu
bG9hZGVkKQotICAgICAgICAgICAgdGhpcy5fbG9hZFByb2ZpbGUodGhpcy5fcHJvZmlsZVVpZCwg
cHJvZmlsZUNhbGxiYWNrMS5iaW5kKHRoaXMpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
cHJvZmlsZUNhbGxiYWNrMS5jYWxsKHRoaXMpOworICAgICAgICAvLyBGSVhNRTogbG9hZCBiYXNl
IGFuZCBjdXJyZW50IHNuYXBzaG90cyBpbiBwYXJhbGxlbAorICAgICAgICB0aGlzLl9sb2FkUHJv
ZmlsZSh0aGlzLl9wcm9maWxlVWlkLCBwcm9maWxlQ2FsbGJhY2sxLmJpbmQodGhpcykpOwogCiAg
ICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVDYWxsYmFjazEoKSB7Ci0gICAgICAgICAgICBpZiAodGhp
cy5iYXNlUHJvZmlsZSAmJiAhdGhpcy5iYXNlUHJvZmlsZVdyYXBwZXIubG9hZGVkKQorICAgICAg
ICAgICAgaWYgKHRoaXMuYmFzZVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZFBy
b2ZpbGUodGhpcy5fYmFzZVByb2ZpbGVVaWQsIHByb2ZpbGVDYWxsYmFjazIuYmluZCh0aGlzKSk7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcHJvZmlsZUNhbGxiYWNrMi5jYWxs
KHRoaXMpOwpAQCAtNTE5LDEyICs1MTIsMjEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5yZW1v
dmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgICAgIGlmICghdGhpcy5kYXRhR3JpZC5z
bmFwc2hvdFZpZXcpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VCYXNlKCk7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5zZXREYXRhU291cmNlKHRoaXMsIHRoaXMucHJvZmls
ZVdyYXBwZXIpOworICAgICAgICAgICAgICAgIHZhciBzbmFwc2hvdFByb3h5ID0gdGhpcy5wcm9m
aWxlLnNuYXBzaG90UHJveHkoKTsKKyAgICAgICAgICAgICAgICAvLyBJZiBzbmFwc2hvdCBoYXMg
bm90IGJlZW4gbG9hZGVkIHlldCB0aGUgZGF0YSBzb3VyY2Ugd2lsbCBiZSBzZXQgYnkgdGhlIGlu
aXRpYWwgbG9hZAorICAgICAgICAgICAgICAgIC8vIGNhbGxiYWNrKGNhbGxlZCBpbiBIZWFwU25h
cHNob3RWaWV3IGNvbnN0cnVjdG9yKQorICAgICAgICAgICAgICAgIGlmIChzbmFwc2hvdFByb3h5
KQorICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3VyY2UodGhpcywg
c25hcHNob3RQcm94eSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICB0aGlzLmJhc2VTZWxlY3RFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOwotICAg
ICAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkLnNuYXBzaG90VmlldykKLSAgICAgICAgICAgICAg
ICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3VyY2UodGhpcywgdGhpcy5wcm9maWxlV3JhcHBlcik7
CisgICAgICAgICAgICBpZiAoIXRoaXMuZGF0YUdyaWQuc25hcHNob3RWaWV3KSB7CisgICAgICAg
ICAgICAgICAgdmFyIHNuYXBzaG90UHJveHkgPSB0aGlzLnByb2ZpbGUuc25hcHNob3RQcm94eSgp
OworICAgICAgICAgICAgICAgIC8vIElmIHNuYXBzaG90IGhhcyBub3QgYmVlbiBsb2FkZWQgeWV0
IHRoZSBkYXRhIHNvdXJjZSB3aWxsIGJlIHNldCBieSB0aGUgaW5pdGlhbCBsb2FkCisgICAgICAg
ICAgICAgICAgLy8gY2FsbGJhY2soY2FsbGVkIGluIEhlYXBTbmFwc2hvdFZpZXcgY29uc3RydWN0
b3IpCisgICAgICAgICAgICAgICAgaWYgKHNuYXBzaG90UHJveHkpCisgICAgICAgICAgICAgICAg
ICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNvdXJjZSh0aGlzLCBzbmFwc2hvdFByb3h5KTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRWaWV3ID09
PSB0aGlzLmNvbnN0cnVjdG9yc1ZpZXcpCkBAIC03OTQsMzMgKzc5Niw0MSBAQCBXZWJJbnNwZWN0
b3IuSGVhcFByb2ZpbGVIZWFkZXIgPSBmdW5jdGlvbih0aXRsZSwgdWlkLCBtYXhKU09iamVjdElk
KQogewogICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyLmNhbGwodGhpcywgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwgdGl0bGUsIHVpZCk7CiAgICAgdGhp
cy5tYXhKU09iamVjdElkID0gbWF4SlNPYmplY3RJZDsKLSAgICB0aGlzLl9sb2FkZWQgPSBmYWxz
ZTsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRl
clByb3h5fQorICAgICAqLworICAgIHRoaXMuX2xvYWRlclByb3h5ID0gbnVsbDsKKyAgICAvKioK
KyAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5fQorICAgICAqLwor
ICAgIHRoaXMuX3NuYXBzaG90UHJveHkgPSBudWxsOwogICAgIHRoaXMuX3RvdGFsTnVtYmVyT2ZD
aHVua3MgPSAwOwogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBl
ID0geworICAgIHNuYXBzaG90UHJveHk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9zbmFwc2hvdFByb3h5OworICAgIH0sCisKICAgICAvKioKICAgICAgKiBAb3ZlcnJp
ZGUKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94
eSk6dm9pZH0gY2FsbGJhY2sKICAgICAgKi8KICAgICBsb2FkOiBmdW5jdGlvbihjYWxsYmFjaykK
ICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9sb2FkZWQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNr
KHRoaXMuX3Byb3h5KTsKKyAgICAgICAgaWYgKHRoaXMuX3NuYXBzaG90UHJveHkpIHsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKHRoaXMuX3NuYXBzaG90UHJveHkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCF0aGlzLl9wcm94eSkKKyAgICAgICAgaWYgKCF0
aGlzLl9sb2FkZXJQcm94eSkKICAgICAgICAgICAgIHRoaXMuX3NldHVwV29ya2VyKCk7CiAKLSAg
ICAgICAgaWYgKHRoaXMuX3Byb3h5LnN0YXJ0TG9hZGluZyhjYWxsYmFjaykpIHsKKyAgICAgICAg
aWYgKHRoaXMuX2xvYWRlclByb3h5LnN0YXJ0TG9hZGluZyhjYWxsYmFjaykpIHsKICAgICAgICAg
ICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkxvYWRpbmdcdTIwMjYiKTsKICAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQud2FpdCA9
IHRydWU7Ci0gICAgICAgICAgICBmdW5jdGlvbiBkb25lKCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9sb2FkZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgUHJvZmlsZXJBZ2VudC5nZXRQcm9maWxlKHRoaXMudHlwZUlkLCB0aGlzLnVpZCwgZG9uZS5i
aW5kKHRoaXMpKTsKKyAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuZ2V0UHJvZmlsZSh0aGlzLnR5
cGVJZCwgdGhpcy51aWQsIGZ1bmN0aW9uKCkge30pOwogICAgICAgICB9CiAgICAgfSwKIApAQCAt
ODMxLDcgKzg0MSwxNSBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFdvcmtlcigpOwogICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigid2Fp
dCIsIHNldFByb2ZpbGVXYWl0LCB0aGlzKTsKLSAgICAgICAgdGhpcy5fcHJveHkgPSB3b3JrZXIu
Y3JlYXRlT2JqZWN0KCJXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyIik7CisgICAgICAg
IHRoaXMuX2xvYWRlclByb3h5ID0gd29ya2VyLmNyZWF0ZU9iamVjdCgiV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdExvYWRlciIpOworICAgIH0sCisKKyAgICBkaXNwb3NlOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5fbG9hZGVyUHJveHkpCisgICAgICAgICAgICB0aGlzLl9s
b2FkZXJQcm94eS5kaXNwb3NlKCk7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX3NuYXBzaG90UHJv
eHkpCisgICAgICAgICAgICB0aGlzLl9zbmFwc2hvdFByb3h5LmRpc3Bvc2UoKTsKICAgICB9LAog
CiAgICAgLyoqCkBAIC04NDIsNyArODYwLDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVh
ZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGV2ZW50LmRhdGEgIT09IHRoaXMuX2ZpbGVO
YW1lKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoKyt0aGlzLl9zYXZlZENodW5r
c0NvdW50ID09PSB0aGlzLl90b3RhbE51bWJlck9mQ2h1bmtzKSB7Ci0gICAgICAgICAgICB0aGlz
LnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gTnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy5fcHJv
eHkudG90YWxTaXplKTsKKyAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUg
PSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLl9zbmFwc2hvdFByb3h5LnRvdGFsU2l6ZSk7CiAg
ICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LndhaXQgPSBmYWxzZTsKICAgICAgICAgICAg
IHRoaXMuX3NhdmVkQ2h1bmtzQ291bnQgPSAwOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZp
bGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLkV2
ZW50VHlwZXMuQXBwZW5kZWRUb1VSTCwgdGhpcy5fc2F2ZVN0YXR1c1VwZGF0ZSwgdGhpcyk7CkBA
IC04NTUsMTIgKzg3MywxMiBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90
eXBlID0gewogICAgICAqLwogICAgIHB1c2hKU09OQ2h1bms6IGZ1bmN0aW9uKGNodW5rKQogICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX2xvYWRlZCkgeworICAgICAgICBpZiAodGhpcy5fbG9hZGVy
UHJveHkpIHsKKyAgICAgICAgICAgICsrdGhpcy5fdG90YWxOdW1iZXJPZkNodW5rczsKKyAgICAg
ICAgICAgIHRoaXMuX2xvYWRlclByb3h5LnB1c2hKU09OQ2h1bmsoY2h1bmspOworICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsKICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5hcHBlbmQodGhpcy5fZmlsZU5hbWUs
IGNodW5rKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICsrdGhpcy5fdG90YWxOdW1i
ZXJPZkNodW5rczsKLSAgICAgICAgICAgIHRoaXMuX3Byb3h5LnB1c2hKU09OQ2h1bmsoY2h1bmsp
OwogICAgICAgICB9CiAgICAgfSwKIApAQCAtODY4LDE0ICs4ODYsMTUgQEAgV2ViSW5zcGVjdG9y
LkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGZ1bmN0aW9u
IHBhcnNlZChzbmFwc2hvdFByb3h5KQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9wcm94
eSA9IHNuYXBzaG90UHJveHk7CisgICAgICAgICAgICB0aGlzLl9sb2FkZXJQcm94eSA9IG51bGw7
CisgICAgICAgICAgICB0aGlzLl9zbmFwc2hvdFByb3h5ID0gc25hcHNob3RQcm94eTsKICAgICAg
ICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBOdW1iZXIuYnl0ZXNUb1N0cmlu
ZyhzbmFwc2hvdFByb3h5LnRvdGFsU2l6ZSk7CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVt
ZW50LndhaXQgPSBmYWxzZTsKICAgICAgICAgICAgIHZhciB3b3JrZXIgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXJ9ICovIHNuYXBzaG90UHJveHkud29ya2VyOwog
ICAgICAgICAgICAgdGhpcy5pc1RlbXBvcmFyeSA9IGZhbHNlOwogICAgICAgICAgICAgd29ya2Vy
LnN0YXJ0Q2hlY2tpbmdGb3JMb25nUnVubmluZ0NhbGxzKCk7CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKHRoaXMuX3Byb3h5LmZpbmlzaExvYWRpbmcocGFyc2VkLmJpbmQodGhpcykpKQorICAgICAg
ICBpZiAodGhpcy5fbG9hZGVyUHJveHkuZmluaXNoTG9hZGluZyhwYXJzZWQuYmluZCh0aGlzKSkp
CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJQYXJzaW5nXHUyMDI2Iik7CiAgICAgfSwKIApAQCAtODg1LDcgKzkwNCw3IEBA
IFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAg
ICAgY2FuU2F2ZVRvRmlsZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuICF0aGlz
LmZyb21GaWxlKCkgJiYgdGhpcy5fbG9hZGVkICYmICF0aGlzLl9zYXZlZENodW5rc0NvdW50ICYm
IFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5jYW5BcHBlbmQoKTsKKyAgICAgICAgcmV0dXJuICF0
aGlzLmZyb21GaWxlKCkgJiYgdGhpcy5fc25hcHNob3RQcm94eSAmJiAhdGhpcy5fc2F2ZWRDaHVu
a3NDb3VudCAmJiBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuY2FuQXBwZW5kKCk7CiAgICAgfSwK
IAogICAgIC8qKgpAQCAtOTQ3LDcgKzk2Niw3IEBAIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhl
YWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWRpbmdcdTIwMjYiKTsKICAgICAgICAgdGhpcy5z
aWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fc2V0dXBXb3JrZXIoKTsK
LSAgICAgICAgdGhpcy5fcHJveHkuc3RhcnRMb2FkaW5nKGZ1bmN0aW9uKCkgeyB9KTsKKyAgICAg
ICAgdGhpcy5fbG9hZGVyUHJveHkuc3RhcnRMb2FkaW5nKGZ1bmN0aW9uKGlnbm9yZWRTbmFwc2hv
dFByb3h5KSB7IH0pOwogCiAgICAgICAgIGZ1bmN0aW9uIGxvYWROZXh0Q2h1bmsoZmlsZSwgcmVh
ZGVyLCBsb2FkZWRTaXplKQogICAgICAgICB7CkBAIC05NjYsMTEgKzk4NSwxMCBAQCBXZWJJbnNw
ZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICAgICAgdGhpcy5fbG9hZGVkU2l6ZSArPSBldmVudC50YXJnZXQucmVz
dWx0Lmxlbmd0aDsKLSAgICAgICAgICAgIHRoaXMuX3Byb3h5LnB1c2hKU09OQ2h1bmsoZXZlbnQu
dGFyZ2V0LnJlc3VsdCk7CisgICAgICAgICAgICB0aGlzLl9sb2FkZXJQcm94eS5wdXNoSlNPTkNo
dW5rKGV2ZW50LnRhcmdldC5yZXN1bHQpOwogICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVu
dC5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9hZGluZ1x1MjAyNiAlZCUiLCAo
dGhpcy5fbG9hZGVkU2l6ZSAqIDEwMCAvIGZpbGUuc2l6ZSkudG9GaXhlZCgyKSk7CiAKICAgICAg
ICAgICAgIGlmICh0aGlzLl9sb2FkZWRTaXplID09PSBmaWxlLnNpemUpIHsKLSAgICAgICAgICAg
ICAgICB0aGlzLl9sb2FkZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHRoaXMuZmluaXNoSGVh
cFNuYXBzaG90KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDJmMjJiZTgwYWY0NDIzNGQ4YzczNmEwNjYzNmI2NmIxNTg5YzEwNjguLjQ1YTM5YzAxNGY5
NDA3ODcwMTcyMGFmZDA2ZDJhNTBiNzE3YjgyNDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNSBAQAogMjAx
Mi0wNS0xNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAorICAgICAg
ICBXZWIgSW5zcGVjdG9yOiB1c2Ugc2VwYXJhdGUgZmllbGRzIGZvciBzdG9yaW5nIEhlYXBTbmFw
c2hvdExvYWRlclByb3h5IGFuZCBIZWFwU25hcHNob3RQcm94eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0ODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNu
YXBzaG90LWluc3BlY3QtZG9tLXdyYXBwZXIuaHRtbDogaW5zdGVhZCBvZiBzbmlmZmluZyBhIG1l
dGhvZAorICAgICAgICBjYWxsIHdlIGNhbiB1c2UgSGVhcFByb2ZpbGVIZWFkZXIubG9hZCBkaXJl
Y3RseS4KKworMjAxMi0wNS0xNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9y
Zz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgIlJldmVhbCBpbiBEb21pbmF0
b3JzIHZpZXciIGNvbnRleHQgbWVudSBhY3Rpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NDU1CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWluc3BlY3QtZG9tLXdyYXBwZXIuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWluc3BlY3QtZG9t
LXdyYXBwZXIuaHRtbAppbmRleCBlMDk2MjMxMmVhN2FiNjE0NDlkZGQ2MTNlOTdiOWQ2NzFhYWJi
NGY3Li5lZDc5NjJkZDEzM2MzNWVmMDMwOTdlN2Q5NjlkMzgwNTJlNGMxZWNkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1pbnNwZWN0LWRv
bS13cmFwcGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAt
c25hcHNob3QtaW5zcGVjdC1kb20td3JhcHBlci5odG1sCkBAIC0yNywxMCArMjcsMTAgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJfZmluaXNoSGVh
cFNuYXBzaG90ICIgKyB1aWQpOwogICAgICAgICB2YXIgcGFuZWwgPSBXZWJJbnNwZWN0b3IucGFu
ZWxzLnByb2ZpbGVzOwogICAgICAgICB2YXIgcHJvZmlsZSA9IHBhbmVsLl9wcm9maWxlc0lkTWFw
W3BhbmVsLl9tYWtlS2V5KHVpZCwgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBl
LlR5cGVJZCldOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIocHJvZmlsZS5fcHJv
eHksICJfY2FsbExvYWRDYWxsYmFja3MiLCBzdGVwMik7CisgICAgICAgIHByb2ZpbGUubG9hZChz
dGVwMi5iaW5kKHRoaXMpKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBzdGVwMihsb2FkQ2FsbGJh
Y2tzLCBzbmFwc2hvdFByb3h5KQorICAgIGZ1bmN0aW9uIHN0ZXAyKHNuYXBzaG90UHJveHkpCiAg
ICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiX2NhbGxMb2FkQ2FsbGJhY2tz
Iik7CiAgICAgICAgIHZhciBzbmFwc2hvdCA9IHNuYXBzaG90UHJveHkuX3dvcmtlci5fd29ya2Vy
Ll9kaXNwYXRjaGVyLl9vYmplY3RzW3NuYXBzaG90UHJveHkuX29iamVjdElkXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141977</attachid>
            <date>2012-05-15 08:34:26 -0700</date>
            <delta_ts>2012-05-15 08:36:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86488-20120515193424.patch</filename>
            <type>text/plain</type>
            <size>17328</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM1ODBhMTQxMWVmYWRk
YzA2NzgwMjFkMDE1YThhOTI3NWU4MWYwMi4uODBhMDY1ZjI3ODRiNjAzNTU4N2Y0ZGEwOTcxYTUx
YWNhNzcwZmZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDEyLTA1LTE1ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBzZXBhcmF0ZSBmaWVsZHMgZm9yIHN0b3JpbmcgSGVhcFNuYXBzaG90TG9hZGVyUHJv
eHkgYW5kIEhlYXBTbmFwc2hvdFByb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NjQ4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNpbXBsaWZpZWQgaGVhcCBwcm9maWxlciBzbmFwc2hvdCBsb2FkaW5n
IGNvZGUuIEludHJvZHVjZWQgZGVkaWNhdGVkIGZpZWxkcyBmb3IKKyAgICAgICAgc25hcHNob3Qg
bG9hZGVyIHByb3h5IGFuZCBmb3Igc25hcHNob3QgcHJveHkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFdvcmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
TG9hZGVyUHJveHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclBy
b3h5LnByb3RvdHlwZS5maW5pc2hMb2FkaW5nLnVwZGF0ZVN0YXRpY0RhdGEpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5maW5pc2hMb2Fk
aW5nLmNhbGxMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RMb2FkZXJQcm94eS5wcm90b3R5cGUuZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyUHJveHkucHJvdG90eXBlLmdldCBsb2FkZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5zdGFy
dExvYWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5
LnByb3RvdHlwZS5wdXNoSlNPTkNodW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0hlYXBTbmFwc2hvdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Vmlldy5wcm9maWxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBl
LmRpc3Bvc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90
eXBlLmdldCBiYXNlUHJvZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFZpZXcucHJvdG90eXBlLndhc1Nob3duLnByb2ZpbGVDYWxsYmFjazEpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLl9jaGFuZ2VWaWV3KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlcik6IHNwbGl0IF9wcm94eSBm
aWVsZCBpbnRvIF9sb2FkZXJQcm94eSBhbmQgX3NuYXBzaG90UHJveHkKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuc25hcHNob3RQcm94eSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLmxvYWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fc2V0dXBXb3Jr
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5k
aXNwb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5
cGUuX3NhdmVTdGF0dXNVcGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxl
SGVhZGVyLnByb3RvdHlwZS5wdXNoSlNPTkNodW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuZmluaXNoSGVhcFNuYXBzaG90KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuY2FuU2F2ZVRvRmlsZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLmxvYWRG
cm9tRmlsZS5vbkxvYWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVy
LnByb3RvdHlwZS5sb2FkRnJvbUZpbGUpOgorCisyMDEyLTA1LTE1ICBZdXJ5IFNlbWlraGF0c2t5
ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGltcGxlbWVu
dCAiUmV2ZWFsIGluIERvbWluYXRvcnMgdmlldyIgY29udGV4dCBtZW51IGFjdGlvbgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0NTUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94
eS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJv
eHkuanMKaW5kZXggNjI2NGVlNzJhNWJkNGVlYWQ1YjRjMDRmOWYyZjJiNjIzY2IxM2RhMy4uYTYw
NGJjYmMzZGY5MzI2NmI3NGE2NmVmZTNjZmQ4ZmJmNzYzMDcxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzCkBA
IC0zNDAsNTcgKzM0MCw0OSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3Qu
cHJvdG90eXBlID0gewogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5ID0gZnVu
Y3Rpb24od29ya2VyLCBvYmplY3RJZCkKIHsKICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
UHJveHlPYmplY3QuY2FsbCh0aGlzLCB3b3JrZXIsIG9iamVjdElkKTsKLSAgICB0aGlzLl9sb2Fk
aW5nID0gZmFsc2U7Ci0gICAgdGhpcy5fbG9hZGVkID0gZmFsc2U7CisgICAgdGhpcy5fb25Mb2Fk
Q2FsbGJhY2tzID0gW107CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94
eS5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJveHkpfSBjYWxsYmFjaworICAgICAqLwogICAgIGZpbmlzaExv
YWRpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9sb2Fk
aW5nKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2YXIgbG9hZENhbGxiYWNr
cyA9IHRoaXMuX29uTG9hZENhbGxiYWNrczsKLSAgICAgICAgbG9hZENhbGxiYWNrcy5zcGxpY2Uo
MCwgMCwgY2FsbGJhY2spOwotICAgICAgICBkZWxldGUgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzOwot
ICAgICAgICB0aGlzLl9sb2FkaW5nID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX2xvYWRlZCA9IHRy
dWU7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJh
Y2tzLnVuc2hpZnQoY2FsbGJhY2spOworCiAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0YXRpY0Rh
dGEoc25hcHNob3RQcm94eSkKICAgICAgICAgewogICAgICAgICAgICAgdGhpcy5kaXNwb3NlKCk7
Ci0gICAgICAgICAgICBzbmFwc2hvdFByb3h5LnVwZGF0ZVN0YXRpY0RhdGEodGhpcy5fY2FsbExv
YWRDYWxsYmFja3MuYmluZCh0aGlzLCBsb2FkQ2FsbGJhY2tzKSk7CisgICAgICAgICAgICBzbmFw
c2hvdFByb3h5LnVwZGF0ZVN0YXRpY0RhdGEoY2FsbExvYWRDYWxsYmFja3MuYmluZCh0aGlzKSk7
CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gY2FsbExvYWRDYWxsYmFja3Moc25hcHNob3RQ
cm94eSkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9v
bkxvYWRDYWxsYmFja3MubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5fb25Mb2Fk
Q2FsbGJhY2tzW2ldKHNuYXBzaG90UHJveHkpOworICAgICAgICAgICAgdGhpcy5fb25Mb2FkQ2Fs
bGJhY2tzID0gbnVsbDsKICAgICAgICAgfQogICAgICAgICB0aGlzLmNhbGxGYWN0b3J5TWV0aG9k
KHVwZGF0ZVN0YXRpY0RhdGEuYmluZCh0aGlzKSwgImZpbmlzaExvYWRpbmciLCAiV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb3h5Iik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0K
LSAgICBfY2FsbExvYWRDYWxsYmFja3M6IGZ1bmN0aW9uKGxvYWRDYWxsYmFja3MsIHNuYXBzaG90
UHJveHkpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxvYWRDYWxsYmFja3Mu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBsb2FkQ2FsbGJhY2tzW2ldKHNuYXBzaG90UHJveHkp
OwogICAgIH0sCiAKICAgICBnZXQgbG9hZGVkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9sb2FkZWQ7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkpfSBjYWxs
YmFjaworICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCiAgICAgc3RhcnRMb2FkaW5n
OiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fbG9hZGluZykg
ewotICAgICAgICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTsKLSAgICAg
ICAgICAgIHRoaXMuX2xvYWRpbmcgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLl9vbkxvYWRDYWxsYmFja3MucHVzaChj
YWxsYmFjayk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAg
dmFyIGxvYWRpbmdIYXNKdXN0U3RhcnRlZCA9ICF0aGlzLl9vbkxvYWRDYWxsYmFja3MubGVuZ3Ro
OworICAgICAgICB0aGlzLl9vbkxvYWRDYWxsYmFja3MucHVzaChjYWxsYmFjayk7CisgICAgICAg
IHJldHVybiBsb2FkaW5nSGFzSnVzdFN0YXJ0ZWQ7CiAgICAgfSwKIAogICAgIHB1c2hKU09OQ2h1
bms6IGZ1bmN0aW9uKGNodW5rKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9sb2FkaW5nKQot
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLmNhbGxNZXRob2QobnVsbCwgInB1c2hK
U09OQ2h1bmsiLCBjaHVuayk7CiAgICAgfQogfTsKQEAgLTQ3MiwxMSArNDY0LDYgQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNw
b3NlV29ya2VyKCk7CiAgICAgfSwKIAotICAgIGZpbmlzaExvYWRpbmc6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCiAgICAgZ2V0IGxvYWRlZCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl9vYmplY3RJZDsKQEAgLTUwNywxMiArNDk0LDYg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5jYWxsTWV0aG9kKGRhdGFSZWNlaXZlZC5iaW5kKHRoaXMpLCAidXBkYXRlU3RhdGljRGF0
YSIpOwogICAgIH0sCiAKLSAgICBzdGFydExvYWRpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQotICAg
IHsKLSAgICAgICAgc2V0VGltZW91dChjYWxsYmFjay5iaW5kKG51bGwsIHRoaXMpLCAwKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCi0KICAgICBnZXQgdG90YWxTaXplKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0aWNEYXRhLnRvdGFsU2l6ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcwpp
bmRleCAyNmExYzA2MzVjYmVhYjNkMWJhNjA5NmZiMzEwNmVkMmMwNTM0NzMwLi41ZmY4NmY1ZGFk
ZDg2ZTM5NjdhOWIxNWEwODMzODIyNWVhYTFhODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCkBAIC0xMzcsNyAr
MTM3LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJlbnQs
IHByb2ZpbGUpCiAKICAgICB0aGlzLl9sb2FkUHJvZmlsZSh0aGlzLl9wcm9maWxlVWlkLCBwcm9m
aWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAKLSAgICBmdW5jdGlvbiBwcm9maWxlQ2FsbGJhY2so
KQorICAgIGZ1bmN0aW9uIHByb2ZpbGVDYWxsYmFjayhoZWFwU25hcHNob3RQcm94eSkKICAgICB7
CiAgICAgICAgIHZhciBsaXN0ID0gdGhpcy5fcHJvZmlsZXMoKTsKICAgICAgICAgdmFyIHByb2Zp
bGVJbmRleDsKQEAgLTE1MiwxNCArMTUyLDE0IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RW
aWV3ID0gZnVuY3Rpb24ocGFyZW50LCBwcm9maWxlKQogICAgICAgICAgICAgdGhpcy5iYXNlU2Vs
ZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gcHJvZmlsZUluZGV4IC0gMTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gcHJv
ZmlsZUluZGV4OwotICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3VyY2UodGhpcywgdGhp
cy5wcm9maWxlV3JhcHBlcik7CisgICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNvdXJjZSh0
aGlzLCBoZWFwU25hcHNob3RQcm94eSk7CiAgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgZGlzcG9zZTogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgdGhpcy5wcm9maWxlV3JhcHBlci5kaXNwb3NlKCk7CisgICAgICAgIHRoaXMucHJv
ZmlsZS5kaXNwb3NlKCk7CiAgICAgICAgIGlmICh0aGlzLmJhc2VQcm9maWxlKQogICAgICAgICAg
ICAgdGhpcy5iYXNlUHJvZmlsZVdyYXBwZXIuZGlzcG9zZSgpOwogICAgICAgICB0aGlzLmNvbnRh
aW5tZW50RGF0YUdyaWQuZGlzcG9zZSgpOwpAQCAtMTc5LDExICsxNzksNiBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLnBh
cmVudC5nZXRQcm9maWxlKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBl
SWQsIHRoaXMuX3Byb2ZpbGVVaWQpOwogICAgIH0sCiAKLSAgICBnZXQgcHJvZmlsZVdyYXBwZXIo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucHJvZmlsZS5fcHJveHk7Ci0gICAgfSwKLQog
ICAgIGdldCBiYXNlUHJvZmlsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQu
Z2V0UHJvZmlsZShXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkLCB0
aGlzLl9iYXNlUHJvZmlsZVVpZCk7CkBAIC0xOTEsMTggKzE4NiwxNiBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBnZXQgYmFzZVByb2ZpbGVXcmFw
cGVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VQcm9maWxlLl9wcm94eTsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuYmFzZVByb2ZpbGUuX3NuYXBzaG90UHJveHk7CiAgICAgfSwKIAog
ICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMucHJvZmls
ZVdyYXBwZXIubG9hZGVkKQotICAgICAgICAgICAgdGhpcy5fbG9hZFByb2ZpbGUodGhpcy5fcHJv
ZmlsZVVpZCwgcHJvZmlsZUNhbGxiYWNrMS5iaW5kKHRoaXMpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcHJvZmlsZUNhbGxiYWNrMS5jYWxsKHRoaXMpOworICAgICAgICAvLyBGSVhNRTog
bG9hZCBiYXNlIGFuZCBjdXJyZW50IHNuYXBzaG90cyBpbiBwYXJhbGxlbAorICAgICAgICB0aGlz
Ll9sb2FkUHJvZmlsZSh0aGlzLl9wcm9maWxlVWlkLCBwcm9maWxlQ2FsbGJhY2sxLmJpbmQodGhp
cykpOwogCiAgICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVDYWxsYmFjazEoKSB7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5iYXNlUHJvZmlsZSAmJiAhdGhpcy5iYXNlUHJvZmlsZVdyYXBwZXIubG9hZGVk
KQorICAgICAgICAgICAgaWYgKHRoaXMuYmFzZVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgdGhp
cy5fbG9hZFByb2ZpbGUodGhpcy5fYmFzZVByb2ZpbGVVaWQsIHByb2ZpbGVDYWxsYmFjazIuYmlu
ZCh0aGlzKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcHJvZmlsZUNhbGxi
YWNrMi5jYWxsKHRoaXMpOwpAQCAtNTE5LDEyICs1MTIsMjEgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5iYXNlU2VsZWN0RWxl
bWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgICAgIGlmICghdGhpcy5k
YXRhR3JpZC5zbmFwc2hvdFZpZXcpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VCYXNl
KCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5zZXREYXRhU291cmNlKHRoaXMsIHRo
aXMucHJvZmlsZVdyYXBwZXIpOworICAgICAgICAgICAgICAgIHZhciBzbmFwc2hvdFByb3h5ID0g
dGhpcy5wcm9maWxlLnNuYXBzaG90UHJveHkoKTsKKyAgICAgICAgICAgICAgICAvLyBJZiBzbmFw
c2hvdCBoYXMgbm90IGJlZW4gbG9hZGVkIHlldCB0aGUgZGF0YSBzb3VyY2Ugd2lsbCBiZSBzZXQg
YnkgdGhlIGluaXRpYWwgbG9hZAorICAgICAgICAgICAgICAgIC8vIGNhbGxiYWNrKGNhbGxlZCBp
biBIZWFwU25hcHNob3RWaWV3IGNvbnN0cnVjdG9yKQorICAgICAgICAgICAgICAgIGlmIChzbmFw
c2hvdFByb3h5KQorICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3Vy
Y2UodGhpcywgc25hcHNob3RQcm94eSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICB0aGlzLmJhc2VTZWxlY3RFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhpZGRl
biIpOwotICAgICAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkLnNuYXBzaG90VmlldykKLSAgICAg
ICAgICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3VyY2UodGhpcywgdGhpcy5wcm9maWxl
V3JhcHBlcik7CisgICAgICAgICAgICBpZiAoIXRoaXMuZGF0YUdyaWQuc25hcHNob3RWaWV3KSB7
CisgICAgICAgICAgICAgICAgdmFyIHNuYXBzaG90UHJveHkgPSB0aGlzLnByb2ZpbGUuc25hcHNo
b3RQcm94eSgpOworICAgICAgICAgICAgICAgIC8vIElmIHNuYXBzaG90IGhhcyBub3QgYmVlbiBs
b2FkZWQgeWV0IHRoZSBkYXRhIHNvdXJjZSB3aWxsIGJlIHNldCBieSB0aGUgaW5pdGlhbCBsb2Fk
CisgICAgICAgICAgICAgICAgLy8gY2FsbGJhY2soY2FsbGVkIGluIEhlYXBTbmFwc2hvdFZpZXcg
Y29uc3RydWN0b3IpCisgICAgICAgICAgICAgICAgaWYgKHNuYXBzaG90UHJveHkpCisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNvdXJjZSh0aGlzLCBzbmFwc2hvdFBy
b3h5KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmICh0aGlzLmN1cnJl
bnRWaWV3ID09PSB0aGlzLmNvbnN0cnVjdG9yc1ZpZXcpCkBAIC03OTQsMzMgKzc5Niw0MSBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIgPSBmdW5jdGlvbih0aXRsZSwgdWlkLCBtYXhK
U09iamVjdElkKQogewogICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyLmNhbGwodGhpcywg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwgdGl0bGUsIHVpZCk7
CiAgICAgdGhpcy5tYXhKU09iamVjdElkID0gbWF4SlNPYmplY3RJZDsKLSAgICB0aGlzLl9sb2Fk
ZWQgPSBmYWxzZTsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdExvYWRlclByb3h5fQorICAgICAqLworICAgIHRoaXMuX2xvYWRlclByb3h5ID0gbnVsbDsK
KyAgICAvKioKKyAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5fQor
ICAgICAqLworICAgIHRoaXMuX3NuYXBzaG90UHJveHkgPSBudWxsOwogICAgIHRoaXMuX3RvdGFs
TnVtYmVyT2ZDaHVua3MgPSAwOwogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIu
cHJvdG90eXBlID0geworICAgIHNuYXBzaG90UHJveHk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdFByb3h5OworICAgIH0sCisKICAgICAvKioKICAgICAg
KiBAb3ZlcnJpZGUKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm94eSk6dm9pZH0gY2FsbGJhY2sKICAgICAgKi8KICAgICBsb2FkOiBmdW5jdGlvbihj
YWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9sb2FkZWQpIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKHRoaXMuX3Byb3h5KTsKKyAgICAgICAgaWYgKHRoaXMuX3NuYXBzaG90UHJveHkp
IHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX3NuYXBzaG90UHJveHkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCF0aGlzLl9wcm94eSkKKyAgICAg
ICAgaWYgKCF0aGlzLl9sb2FkZXJQcm94eSkKICAgICAgICAgICAgIHRoaXMuX3NldHVwV29ya2Vy
KCk7CiAKLSAgICAgICAgaWYgKHRoaXMuX3Byb3h5LnN0YXJ0TG9hZGluZyhjYWxsYmFjaykpIHsK
KyAgICAgICAgaWYgKHRoaXMuX2xvYWRlclByb3h5LnN0YXJ0TG9hZGluZyhjYWxsYmFjaykpIHsK
ICAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkxvYWRpbmdcdTIwMjYiKTsKICAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1l
bnQud2FpdCA9IHRydWU7Ci0gICAgICAgICAgICBmdW5jdGlvbiBkb25lKCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICB0aGlzLl9sb2FkZWQgPSB0cnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5nZXRQcm9maWxlKHRoaXMudHlwZUlkLCB0aGlzLnVp
ZCwgZG9uZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuZ2V0UHJvZmls
ZSh0aGlzLnR5cGVJZCwgdGhpcy51aWQsIGZ1bmN0aW9uKCkge30pOwogICAgICAgICB9CiAgICAg
fSwKIApAQCAtODMxLDcgKzg0MSwxNSBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIu
cHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlcigpOwogICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcigid2FpdCIsIHNldFByb2ZpbGVXYWl0LCB0aGlzKTsKLSAgICAgICAgdGhpcy5fcHJveHkg
PSB3b3JrZXIuY3JlYXRlT2JqZWN0KCJXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyIik7
CisgICAgICAgIHRoaXMuX2xvYWRlclByb3h5ID0gd29ya2VyLmNyZWF0ZU9iamVjdCgiV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlciIpOworICAgIH0sCisKKyAgICBkaXNwb3NlOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fbG9hZGVyUHJveHkpCisgICAgICAgICAg
ICB0aGlzLl9sb2FkZXJQcm94eS5kaXNwb3NlKCk7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX3Nu
YXBzaG90UHJveHkpCisgICAgICAgICAgICB0aGlzLl9zbmFwc2hvdFByb3h5LmRpc3Bvc2UoKTsK
ICAgICB9LAogCiAgICAgLyoqCkBAIC04NDIsNyArODYwLDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBQ
cm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGV2ZW50LmRhdGEgIT09IHRo
aXMuX2ZpbGVOYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoKyt0aGlzLl9z
YXZlZENodW5rc0NvdW50ID09PSB0aGlzLl90b3RhbE51bWJlck9mQ2h1bmtzKSB7Ci0gICAgICAg
ICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gTnVtYmVyLmJ5dGVzVG9TdHJpbmco
dGhpcy5fcHJveHkudG90YWxTaXplKTsKKyAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQu
c3VidGl0bGUgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLl9zbmFwc2hvdFByb3h5LnRvdGFs
U2l6ZSk7CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LndhaXQgPSBmYWxzZTsKICAg
ICAgICAgICAgIHRoaXMuX3NhdmVkQ2h1bmtzQ291bnQgPSAwOwogICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmZpbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbGVN
YW5hZ2VyLkV2ZW50VHlwZXMuQXBwZW5kZWRUb1VSTCwgdGhpcy5fc2F2ZVN0YXR1c1VwZGF0ZSwg
dGhpcyk7CkBAIC04NTUsMTIgKzg3MywxMiBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFk
ZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHB1c2hKU09OQ2h1bms6IGZ1bmN0aW9uKGNo
dW5rKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2xvYWRlZCkgeworICAgICAgICBpZiAodGhp
cy5fbG9hZGVyUHJveHkpIHsKKyAgICAgICAgICAgICsrdGhpcy5fdG90YWxOdW1iZXJPZkNodW5r
czsKKyAgICAgICAgICAgIHRoaXMuX2xvYWRlclByb3h5LnB1c2hKU09OQ2h1bmsoY2h1bmspOwor
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0g
dHJ1ZTsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5hcHBlbmQodGhpcy5f
ZmlsZU5hbWUsIGNodW5rKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICsrdGhpcy5f
dG90YWxOdW1iZXJPZkNodW5rczsKLSAgICAgICAgICAgIHRoaXMuX3Byb3h5LnB1c2hKU09OQ2h1
bmsoY2h1bmspOwogICAgICAgICB9CiAgICAgfSwKIApAQCAtODY4LDE0ICs4ODYsMTUgQEAgV2Vi
SW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IGZ1bmN0aW9uIHBhcnNlZChzbmFwc2hvdFByb3h5KQogICAgICAgICB7Ci0gICAgICAgICAgICB0
aGlzLl9wcm94eSA9IHNuYXBzaG90UHJveHk7CisgICAgICAgICAgICB0aGlzLl9sb2FkZXJQcm94
eSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9zbmFwc2hvdFByb3h5ID0gc25hcHNob3RQcm94
eTsKICAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBOdW1iZXIuYnl0
ZXNUb1N0cmluZyhzbmFwc2hvdFByb3h5LnRvdGFsU2l6ZSk7CiAgICAgICAgICAgICB0aGlzLnNp
ZGViYXJFbGVtZW50LndhaXQgPSBmYWxzZTsKICAgICAgICAgICAgIHZhciB3b3JrZXIgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXJ9ICovIHNuYXBzaG90UHJveHku
d29ya2VyOwogICAgICAgICAgICAgdGhpcy5pc1RlbXBvcmFyeSA9IGZhbHNlOwogICAgICAgICAg
ICAgd29ya2VyLnN0YXJ0Q2hlY2tpbmdGb3JMb25nUnVubmluZ0NhbGxzKCk7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKHRoaXMuX3Byb3h5LmZpbmlzaExvYWRpbmcocGFyc2VkLmJpbmQodGhpcykp
KQorICAgICAgICBpZiAodGhpcy5fbG9hZGVyUHJveHkuZmluaXNoTG9hZGluZyhwYXJzZWQuYmlu
ZCh0aGlzKSkpCiAgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJQYXJzaW5nXHUyMDI2Iik7CiAgICAgfSwKIApAQCAtODg1LDcg
KzkwNCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgY2FuU2F2ZVRvRmlsZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICF0aGlzLmZyb21GaWxlKCkgJiYgdGhpcy5fbG9hZGVkICYmICF0aGlzLl9zYXZlZENodW5r
c0NvdW50ICYmIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5jYW5BcHBlbmQoKTsKKyAgICAgICAg
cmV0dXJuICF0aGlzLmZyb21GaWxlKCkgJiYgdGhpcy5fc25hcHNob3RQcm94eSAmJiAhdGhpcy5f
c2F2ZWRDaHVua3NDb3VudCAmJiBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuY2FuQXBwZW5kKCk7
CiAgICAgfSwKIAogICAgIC8qKgpAQCAtOTQ3LDcgKzk2Niw3IEBAIFdlYkluc3BlY3Rvci5IZWFw
UHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQu
c3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWRpbmdcdTIwMjYiKTsKICAgICAg
ICAgdGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fc2V0dXBX
b3JrZXIoKTsKLSAgICAgICAgdGhpcy5fcHJveHkuc3RhcnRMb2FkaW5nKGZ1bmN0aW9uKCkgeyB9
KTsKKyAgICAgICAgdGhpcy5fbG9hZGVyUHJveHkuc3RhcnRMb2FkaW5nKGZ1bmN0aW9uKGlnbm9y
ZWRTbmFwc2hvdFByb3h5KSB7IH0pOwogCiAgICAgICAgIGZ1bmN0aW9uIGxvYWROZXh0Q2h1bmso
ZmlsZSwgcmVhZGVyLCBsb2FkZWRTaXplKQogICAgICAgICB7CkBAIC05NjYsMTEgKzk4NSwxMCBA
QCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgdGhpcy5fbG9hZGVkU2l6ZSArPSBldmVudC50
YXJnZXQucmVzdWx0Lmxlbmd0aDsKLSAgICAgICAgICAgIHRoaXMuX3Byb3h5LnB1c2hKU09OQ2h1
bmsoZXZlbnQudGFyZ2V0LnJlc3VsdCk7CisgICAgICAgICAgICB0aGlzLl9sb2FkZXJQcm94eS5w
dXNoSlNPTkNodW5rKGV2ZW50LnRhcmdldC5yZXN1bHQpOwogICAgICAgICAgICAgdGhpcy5zaWRl
YmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9hZGluZ1x1MjAy
NiAlZCUiLCAodGhpcy5fbG9hZGVkU2l6ZSAqIDEwMCAvIGZpbGUuc2l6ZSkudG9GaXhlZCgyKSk7
CiAKICAgICAgICAgICAgIGlmICh0aGlzLl9sb2FkZWRTaXplID09PSBmaWxlLnNpemUpIHsKLSAg
ICAgICAgICAgICAgICB0aGlzLl9sb2FkZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHRoaXMu
ZmluaXNoSGVhcFNuYXBzaG90KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDJmMjJiZTgwYWY0NDIzNGQ4YzczNmEwNjYzNmI2NmIxNTg5YzEwNjguLjQ1
YTM5YzAxNGY5NDA3ODcwMTcyMGFmZDA2ZDJhNTBiNzE3YjgyNDIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwx
NSBAQAogMjAxMi0wNS0xNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAorICAgICAgICBXZWIgSW5zcGVjdG9yOiB1c2Ugc2VwYXJhdGUgZmllbGRzIGZvciBzdG9yaW5n
IEhlYXBTbmFwc2hvdExvYWRlclByb3h5IGFuZCBIZWFwU25hcHNob3RQcm94eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0ODgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxl
ci9oZWFwLXNuYXBzaG90LWluc3BlY3QtZG9tLXdyYXBwZXIuaHRtbDogaW5zdGVhZCBvZiBzbmlm
ZmluZyBhIG1ldGhvZAorICAgICAgICBjYWxsIHdlIGNhbiB1c2UgSGVhcFByb2ZpbGVIZWFkZXIu
bG9hZCBkaXJlY3RseS4KKworMjAxMi0wNS0xNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNo
cm9taXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgIlJldmVhbCBp
biBEb21pbmF0b3JzIHZpZXciIGNvbnRleHQgbWVudSBhY3Rpb24KICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NDU1CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWluc3BlY3QtZG9tLXdyYXBw
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWlu
c3BlY3QtZG9tLXdyYXBwZXIuaHRtbAppbmRleCBlMDk2MjMxMmVhN2FiNjE0NDlkZGQ2MTNlOTdi
OWQ2NzFhYWJiNGY3Li5lZDc5NjJkZDEzM2MzNWVmMDMwOTdlN2Q5NjlkMzgwNTJlNGMxZWNkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1p
bnNwZWN0LWRvbS13cmFwcGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL2hlYXAtc25hcHNob3QtaW5zcGVjdC1kb20td3JhcHBlci5odG1sCkBAIC0yNywxMCArMjcs
MTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJf
ZmluaXNoSGVhcFNuYXBzaG90ICIgKyB1aWQpOwogICAgICAgICB2YXIgcGFuZWwgPSBXZWJJbnNw
ZWN0b3IucGFuZWxzLnByb2ZpbGVzOwogICAgICAgICB2YXIgcHJvZmlsZSA9IHBhbmVsLl9wcm9m
aWxlc0lkTWFwW3BhbmVsLl9tYWtlS2V5KHVpZCwgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBy
b2ZpbGVUeXBlLlR5cGVJZCldOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIocHJv
ZmlsZS5fcHJveHksICJfY2FsbExvYWRDYWxsYmFja3MiLCBzdGVwMik7CisgICAgICAgIHByb2Zp
bGUubG9hZChzdGVwMi5iaW5kKHRoaXMpKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBzdGVwMihs
b2FkQ2FsbGJhY2tzLCBzbmFwc2hvdFByb3h5KQorICAgIGZ1bmN0aW9uIHN0ZXAyKHNuYXBzaG90
UHJveHkpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiX2NhbGxMb2Fk
Q2FsbGJhY2tzIik7CiAgICAgICAgIHZhciBzbmFwc2hvdCA9IHNuYXBzaG90UHJveHkuX3dvcmtl
ci5fd29ya2VyLl9kaXNwYXRjaGVyLl9vYmplY3RzW3NuYXBzaG90UHJveHkuX29iamVjdElkXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141978</attachid>
            <date>2012-05-15 08:36:42 -0700</date>
            <delta_ts>2012-05-15 08:38:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86488-20120515193640.patch</filename>
            <type>text/plain</type>
            <size>17328</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM1ODBhMTQxMWVmYWRk
YzA2NzgwMjFkMDE1YThhOTI3NWU4MWYwMi4uODBhMDY1ZjI3ODRiNjAzNTU4N2Y0ZGEwOTcxYTUx
YWNhNzcwZmZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDEyLTA1LTE1ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBzZXBhcmF0ZSBmaWVsZHMgZm9yIHN0b3JpbmcgSGVhcFNuYXBzaG90TG9hZGVyUHJv
eHkgYW5kIEhlYXBTbmFwc2hvdFByb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NjQ4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNpbXBsaWZpZWQgaGVhcCBwcm9maWxlciBzbmFwc2hvdCBsb2FkaW5n
IGNvZGUuIEludHJvZHVjZWQgZGVkaWNhdGVkIGZpZWxkcyBmb3IKKyAgICAgICAgc25hcHNob3Qg
bG9hZGVyIHByb3h5IGFuZCBmb3Igc25hcHNob3QgcHJveHkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFdvcmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
TG9hZGVyUHJveHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclBy
b3h5LnByb3RvdHlwZS5maW5pc2hMb2FkaW5nLnVwZGF0ZVN0YXRpY0RhdGEpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5maW5pc2hMb2Fk
aW5nLmNhbGxMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RMb2FkZXJQcm94eS5wcm90b3R5cGUuZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyUHJveHkucHJvdG90eXBlLmdldCBsb2FkZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5zdGFy
dExvYWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5
LnByb3RvdHlwZS5wdXNoSlNPTkNodW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0hlYXBTbmFwc2hvdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Vmlldy5wcm9maWxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBl
LmRpc3Bvc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90
eXBlLmdldCBiYXNlUHJvZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFZpZXcucHJvdG90eXBlLndhc1Nob3duLnByb2ZpbGVDYWxsYmFjazEpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLl9jaGFuZ2VWaWV3KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlcik6IHNwbGl0IF9wcm94eSBm
aWVsZCBpbnRvIF9sb2FkZXJQcm94eSBhbmQgX3NuYXBzaG90UHJveHkKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuc25hcHNob3RQcm94eSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLmxvYWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fc2V0dXBXb3Jr
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5k
aXNwb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5
cGUuX3NhdmVTdGF0dXNVcGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxl
SGVhZGVyLnByb3RvdHlwZS5wdXNoSlNPTkNodW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuZmluaXNoSGVhcFNuYXBzaG90KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuY2FuU2F2ZVRvRmlsZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLmxvYWRG
cm9tRmlsZS5vbkxvYWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVy
LnByb3RvdHlwZS5sb2FkRnJvbUZpbGUpOgorCisyMDEyLTA1LTE1ICBZdXJ5IFNlbWlraGF0c2t5
ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGltcGxlbWVu
dCAiUmV2ZWFsIGluIERvbWluYXRvcnMgdmlldyIgY29udGV4dCBtZW51IGFjdGlvbgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0NTUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94
eS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJv
eHkuanMKaW5kZXggNjI2NGVlNzJhNWJkNGVlYWQ1YjRjMDRmOWYyZjJiNjIzY2IxM2RhMy4uYTYw
NGJjYmMzZGY5MzI2NmI3NGE2NmVmZTNjZmQ4ZmJmNzYzMDcxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzCkBA
IC0zNDAsNTcgKzM0MCw0OSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3Qu
cHJvdG90eXBlID0gewogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5ID0gZnVu
Y3Rpb24od29ya2VyLCBvYmplY3RJZCkKIHsKICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
UHJveHlPYmplY3QuY2FsbCh0aGlzLCB3b3JrZXIsIG9iamVjdElkKTsKLSAgICB0aGlzLl9sb2Fk
aW5nID0gZmFsc2U7Ci0gICAgdGhpcy5fbG9hZGVkID0gZmFsc2U7CisgICAgdGhpcy5fb25Mb2Fk
Q2FsbGJhY2tzID0gW107CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94
eS5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJveHkpfSBjYWxsYmFjaworICAgICAqLwogICAgIGZpbmlzaExv
YWRpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9sb2Fk
aW5nKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2YXIgbG9hZENhbGxiYWNr
cyA9IHRoaXMuX29uTG9hZENhbGxiYWNrczsKLSAgICAgICAgbG9hZENhbGxiYWNrcy5zcGxpY2Uo
MCwgMCwgY2FsbGJhY2spOwotICAgICAgICBkZWxldGUgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzOwot
ICAgICAgICB0aGlzLl9sb2FkaW5nID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX2xvYWRlZCA9IHRy
dWU7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJh
Y2tzLnVuc2hpZnQoY2FsbGJhY2spOworCiAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0YXRpY0Rh
dGEoc25hcHNob3RQcm94eSkKICAgICAgICAgewogICAgICAgICAgICAgdGhpcy5kaXNwb3NlKCk7
Ci0gICAgICAgICAgICBzbmFwc2hvdFByb3h5LnVwZGF0ZVN0YXRpY0RhdGEodGhpcy5fY2FsbExv
YWRDYWxsYmFja3MuYmluZCh0aGlzLCBsb2FkQ2FsbGJhY2tzKSk7CisgICAgICAgICAgICBzbmFw
c2hvdFByb3h5LnVwZGF0ZVN0YXRpY0RhdGEoY2FsbExvYWRDYWxsYmFja3MuYmluZCh0aGlzKSk7
CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gY2FsbExvYWRDYWxsYmFja3Moc25hcHNob3RQ
cm94eSkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9v
bkxvYWRDYWxsYmFja3MubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5fb25Mb2Fk
Q2FsbGJhY2tzW2ldKHNuYXBzaG90UHJveHkpOworICAgICAgICAgICAgdGhpcy5fb25Mb2FkQ2Fs
bGJhY2tzID0gbnVsbDsKICAgICAgICAgfQogICAgICAgICB0aGlzLmNhbGxGYWN0b3J5TWV0aG9k
KHVwZGF0ZVN0YXRpY0RhdGEuYmluZCh0aGlzKSwgImZpbmlzaExvYWRpbmciLCAiV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb3h5Iik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0K
LSAgICBfY2FsbExvYWRDYWxsYmFja3M6IGZ1bmN0aW9uKGxvYWRDYWxsYmFja3MsIHNuYXBzaG90
UHJveHkpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxvYWRDYWxsYmFja3Mu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBsb2FkQ2FsbGJhY2tzW2ldKHNuYXBzaG90UHJveHkp
OwogICAgIH0sCiAKICAgICBnZXQgbG9hZGVkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9sb2FkZWQ7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkpfSBjYWxs
YmFjaworICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCiAgICAgc3RhcnRMb2FkaW5n
OiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fbG9hZGluZykg
ewotICAgICAgICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTsKLSAgICAg
ICAgICAgIHRoaXMuX2xvYWRpbmcgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLl9vbkxvYWRDYWxsYmFja3MucHVzaChj
YWxsYmFjayk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAg
dmFyIGxvYWRpbmdIYXNKdXN0U3RhcnRlZCA9ICF0aGlzLl9vbkxvYWRDYWxsYmFja3MubGVuZ3Ro
OworICAgICAgICB0aGlzLl9vbkxvYWRDYWxsYmFja3MucHVzaChjYWxsYmFjayk7CisgICAgICAg
IHJldHVybiBsb2FkaW5nSGFzSnVzdFN0YXJ0ZWQ7CiAgICAgfSwKIAogICAgIHB1c2hKU09OQ2h1
bms6IGZ1bmN0aW9uKGNodW5rKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9sb2FkaW5nKQot
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLmNhbGxNZXRob2QobnVsbCwgInB1c2hK
U09OQ2h1bmsiLCBjaHVuayk7CiAgICAgfQogfTsKQEAgLTQ3MiwxMSArNDY0LDYgQEAgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNw
b3NlV29ya2VyKCk7CiAgICAgfSwKIAotICAgIGZpbmlzaExvYWRpbmc6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCiAgICAgZ2V0IGxvYWRlZCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl9vYmplY3RJZDsKQEAgLTUwNywxMiArNDk0LDYg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5jYWxsTWV0aG9kKGRhdGFSZWNlaXZlZC5iaW5kKHRoaXMpLCAidXBkYXRlU3RhdGljRGF0
YSIpOwogICAgIH0sCiAKLSAgICBzdGFydExvYWRpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQotICAg
IHsKLSAgICAgICAgc2V0VGltZW91dChjYWxsYmFjay5iaW5kKG51bGwsIHRoaXMpLCAwKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCi0KICAgICBnZXQgdG90YWxTaXplKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0aWNEYXRhLnRvdGFsU2l6ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcwpp
bmRleCAyNmExYzA2MzVjYmVhYjNkMWJhNjA5NmZiMzEwNmVkMmMwNTM0NzMwLi41ZmY4NmY1ZGFk
ZDg2ZTM5NjdhOWIxNWEwODMzODIyNWVhYTFhODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCkBAIC0xMzcsNyAr
MTM3LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJlbnQs
IHByb2ZpbGUpCiAKICAgICB0aGlzLl9sb2FkUHJvZmlsZSh0aGlzLl9wcm9maWxlVWlkLCBwcm9m
aWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAKLSAgICBmdW5jdGlvbiBwcm9maWxlQ2FsbGJhY2so
KQorICAgIGZ1bmN0aW9uIHByb2ZpbGVDYWxsYmFjayhoZWFwU25hcHNob3RQcm94eSkKICAgICB7
CiAgICAgICAgIHZhciBsaXN0ID0gdGhpcy5fcHJvZmlsZXMoKTsKICAgICAgICAgdmFyIHByb2Zp
bGVJbmRleDsKQEAgLTE1MiwxNCArMTUyLDE0IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RW
aWV3ID0gZnVuY3Rpb24ocGFyZW50LCBwcm9maWxlKQogICAgICAgICAgICAgdGhpcy5iYXNlU2Vs
ZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gcHJvZmlsZUluZGV4IC0gMTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gcHJv
ZmlsZUluZGV4OwotICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3VyY2UodGhpcywgdGhp
cy5wcm9maWxlV3JhcHBlcik7CisgICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNvdXJjZSh0
aGlzLCBoZWFwU25hcHNob3RQcm94eSk7CiAgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgZGlzcG9zZTogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgdGhpcy5wcm9maWxlV3JhcHBlci5kaXNwb3NlKCk7CisgICAgICAgIHRoaXMucHJv
ZmlsZS5kaXNwb3NlKCk7CiAgICAgICAgIGlmICh0aGlzLmJhc2VQcm9maWxlKQogICAgICAgICAg
ICAgdGhpcy5iYXNlUHJvZmlsZVdyYXBwZXIuZGlzcG9zZSgpOwogICAgICAgICB0aGlzLmNvbnRh
aW5tZW50RGF0YUdyaWQuZGlzcG9zZSgpOwpAQCAtMTc5LDExICsxNzksNiBAQCBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLnBh
cmVudC5nZXRQcm9maWxlKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBl
SWQsIHRoaXMuX3Byb2ZpbGVVaWQpOwogICAgIH0sCiAKLSAgICBnZXQgcHJvZmlsZVdyYXBwZXIo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucHJvZmlsZS5fcHJveHk7Ci0gICAgfSwKLQog
ICAgIGdldCBiYXNlUHJvZmlsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQu
Z2V0UHJvZmlsZShXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkLCB0
aGlzLl9iYXNlUHJvZmlsZVVpZCk7CkBAIC0xOTEsMTggKzE4NiwxNiBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBnZXQgYmFzZVByb2ZpbGVXcmFw
cGVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VQcm9maWxlLl9wcm94eTsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuYmFzZVByb2ZpbGUuX3NuYXBzaG90UHJveHk7CiAgICAgfSwKIAog
ICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMucHJvZmls
ZVdyYXBwZXIubG9hZGVkKQotICAgICAgICAgICAgdGhpcy5fbG9hZFByb2ZpbGUodGhpcy5fcHJv
ZmlsZVVpZCwgcHJvZmlsZUNhbGxiYWNrMS5iaW5kKHRoaXMpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcHJvZmlsZUNhbGxiYWNrMS5jYWxsKHRoaXMpOworICAgICAgICAvLyBGSVhNRTog
bG9hZCBiYXNlIGFuZCBjdXJyZW50IHNuYXBzaG90cyBpbiBwYXJhbGxlbAorICAgICAgICB0aGlz
Ll9sb2FkUHJvZmlsZSh0aGlzLl9wcm9maWxlVWlkLCBwcm9maWxlQ2FsbGJhY2sxLmJpbmQodGhp
cykpOwogCiAgICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVDYWxsYmFjazEoKSB7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5iYXNlUHJvZmlsZSAmJiAhdGhpcy5iYXNlUHJvZmlsZVdyYXBwZXIubG9hZGVk
KQorICAgICAgICAgICAgaWYgKHRoaXMuYmFzZVByb2ZpbGUpCiAgICAgICAgICAgICAgICAgdGhp
cy5fbG9hZFByb2ZpbGUodGhpcy5fYmFzZVByb2ZpbGVVaWQsIHByb2ZpbGVDYWxsYmFjazIuYmlu
ZCh0aGlzKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcHJvZmlsZUNhbGxi
YWNrMi5jYWxsKHRoaXMpOwpAQCAtNTE5LDEyICs1MTIsMjEgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5iYXNlU2VsZWN0RWxl
bWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgICAgIGlmICghdGhpcy5k
YXRhR3JpZC5zbmFwc2hvdFZpZXcpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VCYXNl
KCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5zZXREYXRhU291cmNlKHRoaXMsIHRo
aXMucHJvZmlsZVdyYXBwZXIpOworICAgICAgICAgICAgICAgIHZhciBzbmFwc2hvdFByb3h5ID0g
dGhpcy5wcm9maWxlLnNuYXBzaG90UHJveHkoKTsKKyAgICAgICAgICAgICAgICAvLyBJZiBzbmFw
c2hvdCBoYXMgbm90IGJlZW4gbG9hZGVkIHlldCB0aGUgZGF0YSBzb3VyY2Ugd2lsbCBiZSBzZXQg
YnkgdGhlIGluaXRpYWwgbG9hZAorICAgICAgICAgICAgICAgIC8vIGNhbGxiYWNrKGNhbGxlZCBp
biBIZWFwU25hcHNob3RWaWV3IGNvbnN0cnVjdG9yKQorICAgICAgICAgICAgICAgIGlmIChzbmFw
c2hvdFByb3h5KQorICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3Vy
Y2UodGhpcywgc25hcHNob3RQcm94eSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICB0aGlzLmJhc2VTZWxlY3RFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhpZGRl
biIpOwotICAgICAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkLnNuYXBzaG90VmlldykKLSAgICAg
ICAgICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3VyY2UodGhpcywgdGhpcy5wcm9maWxl
V3JhcHBlcik7CisgICAgICAgICAgICBpZiAoIXRoaXMuZGF0YUdyaWQuc25hcHNob3RWaWV3KSB7
CisgICAgICAgICAgICAgICAgdmFyIHNuYXBzaG90UHJveHkgPSB0aGlzLnByb2ZpbGUuc25hcHNo
b3RQcm94eSgpOworICAgICAgICAgICAgICAgIC8vIElmIHNuYXBzaG90IGhhcyBub3QgYmVlbiBs
b2FkZWQgeWV0IHRoZSBkYXRhIHNvdXJjZSB3aWxsIGJlIHNldCBieSB0aGUgaW5pdGlhbCBsb2Fk
CisgICAgICAgICAgICAgICAgLy8gY2FsbGJhY2soY2FsbGVkIGluIEhlYXBTbmFwc2hvdFZpZXcg
Y29uc3RydWN0b3IpCisgICAgICAgICAgICAgICAgaWYgKHNuYXBzaG90UHJveHkpCisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNvdXJjZSh0aGlzLCBzbmFwc2hvdFBy
b3h5KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmICh0aGlzLmN1cnJl
bnRWaWV3ID09PSB0aGlzLmNvbnN0cnVjdG9yc1ZpZXcpCkBAIC03OTQsMzMgKzc5Niw0MSBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIgPSBmdW5jdGlvbih0aXRsZSwgdWlkLCBtYXhK
U09iamVjdElkKQogewogICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyLmNhbGwodGhpcywg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwgdGl0bGUsIHVpZCk7
CiAgICAgdGhpcy5tYXhKU09iamVjdElkID0gbWF4SlNPYmplY3RJZDsKLSAgICB0aGlzLl9sb2Fk
ZWQgPSBmYWxzZTsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdExvYWRlclByb3h5fQorICAgICAqLworICAgIHRoaXMuX2xvYWRlclByb3h5ID0gbnVsbDsK
KyAgICAvKioKKyAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5fQor
ICAgICAqLworICAgIHRoaXMuX3NuYXBzaG90UHJveHkgPSBudWxsOwogICAgIHRoaXMuX3RvdGFs
TnVtYmVyT2ZDaHVua3MgPSAwOwogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIu
cHJvdG90eXBlID0geworICAgIHNuYXBzaG90UHJveHk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdFByb3h5OworICAgIH0sCisKICAgICAvKioKICAgICAg
KiBAb3ZlcnJpZGUKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm94eSk6dm9pZH0gY2FsbGJhY2sKICAgICAgKi8KICAgICBsb2FkOiBmdW5jdGlvbihj
YWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9sb2FkZWQpIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKHRoaXMuX3Byb3h5KTsKKyAgICAgICAgaWYgKHRoaXMuX3NuYXBzaG90UHJveHkp
IHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX3NuYXBzaG90UHJveHkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCF0aGlzLl9wcm94eSkKKyAgICAg
ICAgaWYgKCF0aGlzLl9sb2FkZXJQcm94eSkKICAgICAgICAgICAgIHRoaXMuX3NldHVwV29ya2Vy
KCk7CiAKLSAgICAgICAgaWYgKHRoaXMuX3Byb3h5LnN0YXJ0TG9hZGluZyhjYWxsYmFjaykpIHsK
KyAgICAgICAgaWYgKHRoaXMuX2xvYWRlclByb3h5LnN0YXJ0TG9hZGluZyhjYWxsYmFjaykpIHsK
ICAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkxvYWRpbmdcdTIwMjYiKTsKICAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1l
bnQud2FpdCA9IHRydWU7Ci0gICAgICAgICAgICBmdW5jdGlvbiBkb25lKCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICB0aGlzLl9sb2FkZWQgPSB0cnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5nZXRQcm9maWxlKHRoaXMudHlwZUlkLCB0aGlzLnVp
ZCwgZG9uZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuZ2V0UHJvZmls
ZSh0aGlzLnR5cGVJZCwgdGhpcy51aWQsIGZ1bmN0aW9uKCkge30pOwogICAgICAgICB9CiAgICAg
fSwKIApAQCAtODMxLDcgKzg0MSwxNSBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIu
cHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgICAgIHZhciB3b3JrZXIgPSBuZXcgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlcigpOwogICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcigid2FpdCIsIHNldFByb2ZpbGVXYWl0LCB0aGlzKTsKLSAgICAgICAgdGhpcy5fcHJveHkg
PSB3b3JrZXIuY3JlYXRlT2JqZWN0KCJXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyIik7
CisgICAgICAgIHRoaXMuX2xvYWRlclByb3h5ID0gd29ya2VyLmNyZWF0ZU9iamVjdCgiV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlciIpOworICAgIH0sCisKKyAgICBkaXNwb3NlOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fbG9hZGVyUHJveHkpCisgICAgICAgICAg
ICB0aGlzLl9sb2FkZXJQcm94eS5kaXNwb3NlKCk7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX3Nu
YXBzaG90UHJveHkpCisgICAgICAgICAgICB0aGlzLl9zbmFwc2hvdFByb3h5LmRpc3Bvc2UoKTsK
ICAgICB9LAogCiAgICAgLyoqCkBAIC04NDIsNyArODYwLDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBQ
cm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGV2ZW50LmRhdGEgIT09IHRo
aXMuX2ZpbGVOYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoKyt0aGlzLl9z
YXZlZENodW5rc0NvdW50ID09PSB0aGlzLl90b3RhbE51bWJlck9mQ2h1bmtzKSB7Ci0gICAgICAg
ICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gTnVtYmVyLmJ5dGVzVG9TdHJpbmco
dGhpcy5fcHJveHkudG90YWxTaXplKTsKKyAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQu
c3VidGl0bGUgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLl9zbmFwc2hvdFByb3h5LnRvdGFs
U2l6ZSk7CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LndhaXQgPSBmYWxzZTsKICAg
ICAgICAgICAgIHRoaXMuX3NhdmVkQ2h1bmtzQ291bnQgPSAwOwogICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmZpbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbGVN
YW5hZ2VyLkV2ZW50VHlwZXMuQXBwZW5kZWRUb1VSTCwgdGhpcy5fc2F2ZVN0YXR1c1VwZGF0ZSwg
dGhpcyk7CkBAIC04NTUsMTIgKzg3MywxMiBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFk
ZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHB1c2hKU09OQ2h1bms6IGZ1bmN0aW9uKGNo
dW5rKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2xvYWRlZCkgeworICAgICAgICBpZiAodGhp
cy5fbG9hZGVyUHJveHkpIHsKKyAgICAgICAgICAgICsrdGhpcy5fdG90YWxOdW1iZXJPZkNodW5r
czsKKyAgICAgICAgICAgIHRoaXMuX2xvYWRlclByb3h5LnB1c2hKU09OQ2h1bmsoY2h1bmspOwor
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0g
dHJ1ZTsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5hcHBlbmQodGhpcy5f
ZmlsZU5hbWUsIGNodW5rKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICsrdGhpcy5f
dG90YWxOdW1iZXJPZkNodW5rczsKLSAgICAgICAgICAgIHRoaXMuX3Byb3h5LnB1c2hKU09OQ2h1
bmsoY2h1bmspOwogICAgICAgICB9CiAgICAgfSwKIApAQCAtODY4LDE0ICs4ODYsMTUgQEAgV2Vi
SW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IGZ1bmN0aW9uIHBhcnNlZChzbmFwc2hvdFByb3h5KQogICAgICAgICB7Ci0gICAgICAgICAgICB0
aGlzLl9wcm94eSA9IHNuYXBzaG90UHJveHk7CisgICAgICAgICAgICB0aGlzLl9sb2FkZXJQcm94
eSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9zbmFwc2hvdFByb3h5ID0gc25hcHNob3RQcm94
eTsKICAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBOdW1iZXIuYnl0
ZXNUb1N0cmluZyhzbmFwc2hvdFByb3h5LnRvdGFsU2l6ZSk7CiAgICAgICAgICAgICB0aGlzLnNp
ZGViYXJFbGVtZW50LndhaXQgPSBmYWxzZTsKICAgICAgICAgICAgIHZhciB3b3JrZXIgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXJ9ICovIHNuYXBzaG90UHJveHku
d29ya2VyOwogICAgICAgICAgICAgdGhpcy5pc1RlbXBvcmFyeSA9IGZhbHNlOwogICAgICAgICAg
ICAgd29ya2VyLnN0YXJ0Q2hlY2tpbmdGb3JMb25nUnVubmluZ0NhbGxzKCk7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKHRoaXMuX3Byb3h5LmZpbmlzaExvYWRpbmcocGFyc2VkLmJpbmQodGhpcykp
KQorICAgICAgICBpZiAodGhpcy5fbG9hZGVyUHJveHkuZmluaXNoTG9hZGluZyhwYXJzZWQuYmlu
ZCh0aGlzKSkpCiAgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJQYXJzaW5nXHUyMDI2Iik7CiAgICAgfSwKIApAQCAtODg1LDcg
KzkwNCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgY2FuU2F2ZVRvRmlsZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICF0aGlzLmZyb21GaWxlKCkgJiYgdGhpcy5fbG9hZGVkICYmICF0aGlzLl9zYXZlZENodW5r
c0NvdW50ICYmIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5jYW5BcHBlbmQoKTsKKyAgICAgICAg
cmV0dXJuICF0aGlzLmZyb21GaWxlKCkgJiYgdGhpcy5fc25hcHNob3RQcm94eSAmJiAhdGhpcy5f
c2F2ZWRDaHVua3NDb3VudCAmJiBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuY2FuQXBwZW5kKCk7
CiAgICAgfSwKIAogICAgIC8qKgpAQCAtOTQ3LDcgKzk2Niw3IEBAIFdlYkluc3BlY3Rvci5IZWFw
UHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQu
c3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWRpbmdcdTIwMjYiKTsKICAgICAg
ICAgdGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fc2V0dXBX
b3JrZXIoKTsKLSAgICAgICAgdGhpcy5fcHJveHkuc3RhcnRMb2FkaW5nKGZ1bmN0aW9uKCkgeyB9
KTsKKyAgICAgICAgdGhpcy5fbG9hZGVyUHJveHkuc3RhcnRMb2FkaW5nKGZ1bmN0aW9uKGlnbm9y
ZWRTbmFwc2hvdFByb3h5KSB7IH0pOwogCiAgICAgICAgIGZ1bmN0aW9uIGxvYWROZXh0Q2h1bmso
ZmlsZSwgcmVhZGVyLCBsb2FkZWRTaXplKQogICAgICAgICB7CkBAIC05NjYsMTEgKzk4NSwxMCBA
QCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgdGhpcy5fbG9hZGVkU2l6ZSArPSBldmVudC50
YXJnZXQucmVzdWx0Lmxlbmd0aDsKLSAgICAgICAgICAgIHRoaXMuX3Byb3h5LnB1c2hKU09OQ2h1
bmsoZXZlbnQudGFyZ2V0LnJlc3VsdCk7CisgICAgICAgICAgICB0aGlzLl9sb2FkZXJQcm94eS5w
dXNoSlNPTkNodW5rKGV2ZW50LnRhcmdldC5yZXN1bHQpOwogICAgICAgICAgICAgdGhpcy5zaWRl
YmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9hZGluZ1x1MjAy
NiAlZCUiLCAodGhpcy5fbG9hZGVkU2l6ZSAqIDEwMCAvIGZpbGUuc2l6ZSkudG9GaXhlZCgyKSk7
CiAKICAgICAgICAgICAgIGlmICh0aGlzLl9sb2FkZWRTaXplID09PSBmaWxlLnNpemUpIHsKLSAg
ICAgICAgICAgICAgICB0aGlzLl9sb2FkZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHRoaXMu
ZmluaXNoSGVhcFNuYXBzaG90KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDJmMjJiZTgwYWY0NDIzNGQ4YzczNmEwNjYzNmI2NmIxNTg5YzEwNjguLjQ1
YTM5YzAxNGY5NDA3ODcwMTcyMGFmZDA2ZDJhNTBiNzE3YjgyNDIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwx
NSBAQAogMjAxMi0wNS0xNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAorICAgICAgICBXZWIgSW5zcGVjdG9yOiB1c2Ugc2VwYXJhdGUgZmllbGRzIGZvciBzdG9yaW5n
IEhlYXBTbmFwc2hvdExvYWRlclByb3h5IGFuZCBIZWFwU25hcHNob3RQcm94eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0ODgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxl
ci9oZWFwLXNuYXBzaG90LWluc3BlY3QtZG9tLXdyYXBwZXIuaHRtbDogaW5zdGVhZCBvZiBzbmlm
ZmluZyBhIG1ldGhvZAorICAgICAgICBjYWxsIHdlIGNhbiB1c2UgSGVhcFByb2ZpbGVIZWFkZXIu
bG9hZCBkaXJlY3RseS4KKworMjAxMi0wNS0xNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNo
cm9taXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgIlJldmVhbCBp
biBEb21pbmF0b3JzIHZpZXciIGNvbnRleHQgbWVudSBhY3Rpb24KICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NDU1CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWluc3BlY3QtZG9tLXdyYXBw
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWlu
c3BlY3QtZG9tLXdyYXBwZXIuaHRtbAppbmRleCBlMDk2MjMxMmVhN2FiNjE0NDlkZGQ2MTNlOTdi
OWQ2NzFhYWJiNGY3Li5lZDc5NjJkZDEzM2MzNWVmMDMwOTdlN2Q5NjlkMzgwNTJlNGMxZWNkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1p
bnNwZWN0LWRvbS13cmFwcGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2Zp
bGVyL2hlYXAtc25hcHNob3QtaW5zcGVjdC1kb20td3JhcHBlci5odG1sCkBAIC0yNywxMCArMjcs
MTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJf
ZmluaXNoSGVhcFNuYXBzaG90ICIgKyB1aWQpOwogICAgICAgICB2YXIgcGFuZWwgPSBXZWJJbnNw
ZWN0b3IucGFuZWxzLnByb2ZpbGVzOwogICAgICAgICB2YXIgcHJvZmlsZSA9IHBhbmVsLl9wcm9m
aWxlc0lkTWFwW3BhbmVsLl9tYWtlS2V5KHVpZCwgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBy
b2ZpbGVUeXBlLlR5cGVJZCldOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIocHJv
ZmlsZS5fcHJveHksICJfY2FsbExvYWRDYWxsYmFja3MiLCBzdGVwMik7CisgICAgICAgIHByb2Zp
bGUubG9hZChzdGVwMi5iaW5kKHRoaXMpKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBzdGVwMihs
b2FkQ2FsbGJhY2tzLCBzbmFwc2hvdFByb3h5KQorICAgIGZ1bmN0aW9uIHN0ZXAyKHNuYXBzaG90
UHJveHkpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiX2NhbGxMb2Fk
Q2FsbGJhY2tzIik7CiAgICAgICAgIHZhciBzbmFwc2hvdCA9IHNuYXBzaG90UHJveHkuX3dvcmtl
ci5fd29ya2VyLl9kaXNwYXRjaGVyLl9vYmplY3RzW3NuYXBzaG90UHJveHkuX29iamVjdElkXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141979</attachid>
            <date>2012-05-15 08:38:35 -0700</date>
            <delta_ts>2012-05-16 01:32:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86488-20120515193833.patch</filename>
            <type>text/plain</type>
            <size>17406</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM1ODBhMTQxMWVmYWRk
YzA2NzgwMjFkMDE1YThhOTI3NWU4MWYwMi4uODBhMDY1ZjI3ODRiNjAzNTU4N2Y0ZGEwOTcxYTUx
YWNhNzcwZmZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDEyLTA1LTE1ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBzZXBhcmF0ZSBmaWVsZHMgZm9yIHN0b3JpbmcgSGVhcFNuYXBzaG90TG9hZGVyUHJv
eHkgYW5kIEhlYXBTbmFwc2hvdFByb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NjQ4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNpbXBsaWZpZWQgaGVhcCBwcm9maWxlciBzbmFwc2hvdCBsb2FkaW5n
IGNvZGUuIEludHJvZHVjZWQgZGVkaWNhdGVkIGZpZWxkcyBmb3IKKyAgICAgICAgc25hcHNob3Qg
bG9hZGVyIHByb3h5IGFuZCBmb3Igc25hcHNob3QgcHJveHkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFdvcmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
TG9hZGVyUHJveHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclBy
b3h5LnByb3RvdHlwZS5maW5pc2hMb2FkaW5nLnVwZGF0ZVN0YXRpY0RhdGEpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5maW5pc2hMb2Fk
aW5nLmNhbGxMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RMb2FkZXJQcm94eS5wcm90b3R5cGUuZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyUHJveHkucHJvdG90eXBlLmdldCBsb2FkZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5zdGFy
dExvYWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5
LnByb3RvdHlwZS5wdXNoSlNPTkNodW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0hlYXBTbmFwc2hvdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Vmlldy5wcm9maWxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBl
LmRpc3Bvc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90
eXBlLmdldCBiYXNlUHJvZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFZpZXcucHJvdG90eXBlLndhc1Nob3duLnByb2ZpbGVDYWxsYmFjazEpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLl9jaGFuZ2VWaWV3KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlcik6IHNwbGl0IF9wcm94eSBm
aWVsZCBpbnRvIF9sb2FkZXJQcm94eSBhbmQgX3NuYXBzaG90UHJveHkKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuc25hcHNob3RQcm94eSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLmxvYWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fc2V0dXBXb3Jr
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5k
aXNwb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5
cGUuX3NhdmVTdGF0dXNVcGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxl
SGVhZGVyLnByb3RvdHlwZS5wdXNoSlNPTkNodW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuZmluaXNoSGVhcFNuYXBzaG90KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuY2FuU2F2ZVRvRmlsZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLmxvYWRG
cm9tRmlsZS5vbkxvYWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVy
LnByb3RvdHlwZS5sb2FkRnJvbUZpbGUpOgorCisyMDEyLTA1LTE1ICBZdXJ5IFNlbWlraGF0c2t5
ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGltcGxlbWVu
dCAiUmV2ZWFsIGluIERvbWluYXRvcnMgdmlldyIgY29udGV4dCBtZW51IGFjdGlvbgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0NTUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94
eS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJv
eHkuanMKaW5kZXggNjI2NGVlNzJhNWJkNGVlYWQ1YjRjMDRmOWYyZjJiNjIzY2IxM2RhMy4uZTUw
NjQzOGFlMzI0MDVkM2M0YjI5MGQzZTY4M2Q4N2Y0ODE5YWNkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzCkBA
IC0zNDAsNTcgKzM0MCw0NCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3Qu
cHJvdG90eXBlID0gewogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5ID0gZnVu
Y3Rpb24od29ya2VyLCBvYmplY3RJZCkKIHsKICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
UHJveHlPYmplY3QuY2FsbCh0aGlzLCB3b3JrZXIsIG9iamVjdElkKTsKLSAgICB0aGlzLl9sb2Fk
aW5nID0gZmFsc2U7Ci0gICAgdGhpcy5fbG9hZGVkID0gZmFsc2U7CisgICAgdGhpcy5fb25Mb2Fk
Q2FsbGJhY2tzID0gW107CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94
eS5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJveHkpfSBjYWxsYmFjaworICAgICAqLwogICAgIGZpbmlzaExv
YWRpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9sb2Fk
aW5nKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2YXIgbG9hZENhbGxiYWNr
cyA9IHRoaXMuX29uTG9hZENhbGxiYWNrczsKLSAgICAgICAgbG9hZENhbGxiYWNrcy5zcGxpY2Uo
MCwgMCwgY2FsbGJhY2spOwotICAgICAgICBkZWxldGUgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzOwot
ICAgICAgICB0aGlzLl9sb2FkaW5nID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX2xvYWRlZCA9IHRy
dWU7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJh
Y2tzLnVuc2hpZnQoY2FsbGJhY2spOworCiAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0YXRpY0Rh
dGEoc25hcHNob3RQcm94eSkKICAgICAgICAgewogICAgICAgICAgICAgdGhpcy5kaXNwb3NlKCk7
Ci0gICAgICAgICAgICBzbmFwc2hvdFByb3h5LnVwZGF0ZVN0YXRpY0RhdGEodGhpcy5fY2FsbExv
YWRDYWxsYmFja3MuYmluZCh0aGlzLCBsb2FkQ2FsbGJhY2tzKSk7CisgICAgICAgICAgICBzbmFw
c2hvdFByb3h5LnVwZGF0ZVN0YXRpY0RhdGEoY2FsbExvYWRDYWxsYmFja3MuYmluZCh0aGlzKSk7
CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gY2FsbExvYWRDYWxsYmFja3Moc25hcHNob3RQ
cm94eSkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9v
bkxvYWRDYWxsYmFja3MubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5fb25Mb2Fk
Q2FsbGJhY2tzW2ldKHNuYXBzaG90UHJveHkpOworICAgICAgICAgICAgdGhpcy5fb25Mb2FkQ2Fs
bGJhY2tzID0gbnVsbDsKICAgICAgICAgfQogICAgICAgICB0aGlzLmNhbGxGYWN0b3J5TWV0aG9k
KHVwZGF0ZVN0YXRpY0RhdGEuYmluZCh0aGlzKSwgImZpbmlzaExvYWRpbmciLCAiV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb3h5Iik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0K
LSAgICBfY2FsbExvYWRDYWxsYmFja3M6IGZ1bmN0aW9uKGxvYWRDYWxsYmFja3MsIHNuYXBzaG90
UHJveHkpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxvYWRDYWxsYmFja3Mu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBsb2FkQ2FsbGJhY2tzW2ldKHNuYXBzaG90UHJveHkp
OwotICAgIH0sCi0KLSAgICBnZXQgbG9hZGVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9sb2FkZWQ7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5KX0gY2FsbGJhY2sKKyAgICAgKiBAcmV0dXJuIHti
b29sZWFufQorICAgICAqLwogICAgIHN0YXJ0TG9hZGluZzogZnVuY3Rpb24oY2FsbGJhY2spCiAg
ICAgewotICAgICAgICBpZiAoIXRoaXMuX2xvYWRpbmcpIHsKLSAgICAgICAgICAgIHRoaXMuX29u
TG9hZENhbGxiYWNrcyA9IFtjYWxsYmFja107Ci0gICAgICAgICAgICB0aGlzLl9sb2FkaW5nID0g
dHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIHZhciBsb2FkaW5nSGFzSnVzdFN0YXJ0
ZWQgPSAhdGhpcy5fb25Mb2FkQ2FsbGJhY2tzLmxlbmd0aDsKKyAgICAgICAgdGhpcy5fb25Mb2Fk
Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOworICAgICAgICByZXR1cm4gbG9hZGluZ0hhc0p1c3RT
dGFydGVkOwogICAgIH0sCiAKICAgICBwdXNoSlNPTkNodW5rOiBmdW5jdGlvbihjaHVuaykKICAg
ICB7Ci0gICAgICAgIGlmICghdGhpcy5fbG9hZGluZykKLSAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgdGhpcy5jYWxsTWV0aG9kKG51bGwsICJwdXNoSlNPTkNodW5rIiwgY2h1bmspOwogICAg
IH0KIH07CkBAIC00NzIsMTYgKzQ1OSw2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94
eS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcG9zZVdvcmtlcigpOwogICAgIH0sCiAK
LSAgICBmaW5pc2hMb2FkaW5nOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfSwKLQotICAgIGdldCBsb2FkZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICEh
dGhpcy5fb2JqZWN0SWQ7Ci0gICAgfSwKLQogICAgIGdldCBub2RlQ291bnQoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3N0YXRpY0RhdGEubm9kZUNvdW50OwpAQCAtNTA3LDEyICs0ODQs
NiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLmNhbGxNZXRob2QoZGF0YVJlY2VpdmVkLmJpbmQodGhpcyksICJ1cGRhdGVTdGF0aWNE
YXRhIik7CiAgICAgfSwKIAotICAgIHN0YXJ0TG9hZGluZzogZnVuY3Rpb24oY2FsbGJhY2spCi0g
ICAgewotICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLmJpbmQobnVsbCwgdGhpcyksIDApOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQogICAgIGdldCB0b3RhbFNpemUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRpY0RhdGEudG90YWxTaXplOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3Lmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3Lmpz
CmluZGV4IDI2YTFjMDYzNWNiZWFiM2QxYmE2MDk2ZmIzMTA2ZWQyYzA1MzQ3MzAuLjVlMjExYjk1
NDBhMWY1ZmQ0NDM1NWNjNzc1MWJiMDZkYjE4Y2IyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKQEAgLTEzNyw3
ICsxMzcsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90VmlldyA9IGZ1bmN0aW9uKHBhcmVu
dCwgcHJvZmlsZSkKIAogICAgIHRoaXMuX2xvYWRQcm9maWxlKHRoaXMuX3Byb2ZpbGVVaWQsIHBy
b2ZpbGVDYWxsYmFjay5iaW5kKHRoaXMpKTsKIAotICAgIGZ1bmN0aW9uIHByb2ZpbGVDYWxsYmFj
aygpCisgICAgZnVuY3Rpb24gcHJvZmlsZUNhbGxiYWNrKGhlYXBTbmFwc2hvdFByb3h5KQogICAg
IHsKICAgICAgICAgdmFyIGxpc3QgPSB0aGlzLl9wcm9maWxlcygpOwogICAgICAgICB2YXIgcHJv
ZmlsZUluZGV4OwpAQCAtMTUyLDE2ICsxNTIsMTYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFZpZXcgPSBmdW5jdGlvbihwYXJlbnQsIHByb2ZpbGUpCiAgICAgICAgICAgICB0aGlzLmJhc2VT
ZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPSBwcm9maWxlSW5kZXggLSAxOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICB0aGlzLmJhc2VTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPSBw
cm9maWxlSW5kZXg7Ci0gICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNvdXJjZSh0aGlzLCB0
aGlzLnByb2ZpbGVXcmFwcGVyKTsKKyAgICAgICAgdGhpcy5kYXRhR3JpZC5zZXREYXRhU291cmNl
KHRoaXMsIGhlYXBTbmFwc2hvdFByb3h5KTsKICAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKICAgICBkaXNwb3NlOiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICB0aGlzLnByb2ZpbGVXcmFwcGVyLmRpc3Bvc2UoKTsKKyAgICAgICAgdGhpcy5w
cm9maWxlLmRpc3Bvc2UoKTsKICAgICAgICAgaWYgKHRoaXMuYmFzZVByb2ZpbGUpCi0gICAgICAg
ICAgICB0aGlzLmJhc2VQcm9maWxlV3JhcHBlci5kaXNwb3NlKCk7CisgICAgICAgICAgICB0aGlz
LmJhc2VQcm9maWxlLmRpc3Bvc2UoKTsKICAgICAgICAgdGhpcy5jb250YWlubWVudERhdGFHcmlk
LmRpc3Bvc2UoKTsKICAgICAgICAgdGhpcy5jb25zdHJ1Y3RvcnNEYXRhR3JpZC5kaXNwb3NlKCk7
CiAgICAgICAgIHRoaXMuZGlmZkRhdGFHcmlkLmRpc3Bvc2UoKTsKQEAgLTE3OSwzMCArMTc5LDE4
IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmV0dXJuIHRoaXMucGFyZW50LmdldFByb2ZpbGUoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFBy
b2ZpbGVUeXBlLlR5cGVJZCwgdGhpcy5fcHJvZmlsZVVpZCk7CiAgICAgfSwKIAotICAgIGdldCBw
cm9maWxlV3JhcHBlcigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5wcm9maWxlLl9wcm94
eTsKLSAgICB9LAotCiAgICAgZ2V0IGJhc2VQcm9maWxlKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLnBhcmVudC5nZXRQcm9maWxlKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxl
VHlwZS5UeXBlSWQsIHRoaXMuX2Jhc2VQcm9maWxlVWlkKTsKICAgICB9LAogCi0gICAgZ2V0IGJh
c2VQcm9maWxlV3JhcHBlcigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5iYXNlUHJvZmls
ZS5fcHJveHk7Ci0gICAgfSwKLQogICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICBpZiAoIXRoaXMucHJvZmlsZVdyYXBwZXIubG9hZGVkKQotICAgICAgICAgICAgdGhpcy5f
bG9hZFByb2ZpbGUodGhpcy5fcHJvZmlsZVVpZCwgcHJvZmlsZUNhbGxiYWNrMS5iaW5kKHRoaXMp
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJvZmlsZUNhbGxiYWNrMS5jYWxsKHRoaXMp
OworICAgICAgICAvLyBGSVhNRTogbG9hZCBiYXNlIGFuZCBjdXJyZW50IHNuYXBzaG90cyBpbiBw
YXJhbGxlbAorICAgICAgICB0aGlzLl9sb2FkUHJvZmlsZSh0aGlzLl9wcm9maWxlVWlkLCBwcm9m
aWxlQ2FsbGJhY2sxLmJpbmQodGhpcykpOwogCiAgICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVDYWxs
YmFjazEoKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5iYXNlUHJvZmlsZSAmJiAhdGhpcy5iYXNl
UHJvZmlsZVdyYXBwZXIubG9hZGVkKQorICAgICAgICAgICAgaWYgKHRoaXMuYmFzZVByb2ZpbGUp
CiAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZFByb2ZpbGUodGhpcy5fYmFzZVByb2ZpbGVVaWQs
IHByb2ZpbGVDYWxsYmFjazIuYmluZCh0aGlzKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgcHJvZmlsZUNhbGxiYWNrMi5jYWxsKHRoaXMpOwpAQCAtNTE5LDEyICs1MDcsMjEg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAg
ICAgICAgICAgIGlmICghdGhpcy5kYXRhR3JpZC5zbmFwc2hvdFZpZXcpIHsKICAgICAgICAgICAg
ICAgICB0aGlzLl9jaGFuZ2VCYXNlKCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5z
ZXREYXRhU291cmNlKHRoaXMsIHRoaXMucHJvZmlsZVdyYXBwZXIpOworICAgICAgICAgICAgICAg
IHZhciBzbmFwc2hvdFByb3h5ID0gdGhpcy5wcm9maWxlLnNuYXBzaG90UHJveHkoKTsKKyAgICAg
ICAgICAgICAgICAvLyBJZiBzbmFwc2hvdCBoYXMgbm90IGJlZW4gbG9hZGVkIHlldCB0aGUgZGF0
YSBzb3VyY2Ugd2lsbCBiZSBzZXQgYnkgdGhlIGluaXRpYWwgbG9hZAorICAgICAgICAgICAgICAg
IC8vIGNhbGxiYWNrKGNhbGxlZCBpbiBIZWFwU25hcHNob3RWaWV3IGNvbnN0cnVjdG9yKQorICAg
ICAgICAgICAgICAgIGlmIChzbmFwc2hvdFByb3h5KQorICAgICAgICAgICAgICAgICAgICB0aGlz
LmRhdGFHcmlkLnNldERhdGFTb3VyY2UodGhpcywgc25hcHNob3RQcm94eSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0aGlzLmJhc2VTZWxlY3RFbGVtZW50
LmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOwotICAgICAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlk
LnNuYXBzaG90VmlldykKLSAgICAgICAgICAgICAgICB0aGlzLmRhdGFHcmlkLnNldERhdGFTb3Vy
Y2UodGhpcywgdGhpcy5wcm9maWxlV3JhcHBlcik7CisgICAgICAgICAgICBpZiAoIXRoaXMuZGF0
YUdyaWQuc25hcHNob3RWaWV3KSB7CisgICAgICAgICAgICAgICAgdmFyIHNuYXBzaG90UHJveHkg
PSB0aGlzLnByb2ZpbGUuc25hcHNob3RQcm94eSgpOworICAgICAgICAgICAgICAgIC8vIElmIHNu
YXBzaG90IGhhcyBub3QgYmVlbiBsb2FkZWQgeWV0IHRoZSBkYXRhIHNvdXJjZSB3aWxsIGJlIHNl
dCBieSB0aGUgaW5pdGlhbCBsb2FkCisgICAgICAgICAgICAgICAgLy8gY2FsbGJhY2soY2FsbGVk
IGluIEhlYXBTbmFwc2hvdFZpZXcgY29uc3RydWN0b3IpCisgICAgICAgICAgICAgICAgaWYgKHNu
YXBzaG90UHJveHkpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNv
dXJjZSh0aGlzLCBzbmFwc2hvdFByb3h5KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAg
ICAgICAgIGlmICh0aGlzLmN1cnJlbnRWaWV3ID09PSB0aGlzLmNvbnN0cnVjdG9yc1ZpZXcpCkBA
IC03OTQsMzMgKzc5MSw0MSBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIgPSBmdW5j
dGlvbih0aXRsZSwgdWlkLCBtYXhKU09iamVjdElkKQogewogICAgIFdlYkluc3BlY3Rvci5Qcm9m
aWxlSGVhZGVyLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBl
LlR5cGVJZCwgdGl0bGUsIHVpZCk7CiAgICAgdGhpcy5tYXhKU09iamVjdElkID0gbWF4SlNPYmpl
Y3RJZDsKLSAgICB0aGlzLl9sb2FkZWQgPSBmYWxzZTsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5fQorICAgICAqLworICAgIHRoaXMu
X2xvYWRlclByb3h5ID0gbnVsbDsKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFByb3h5fQorICAgICAqLworICAgIHRoaXMuX3NuYXBzaG90UHJveHkgPSBu
dWxsOwogICAgIHRoaXMuX3RvdGFsTnVtYmVyT2ZDaHVua3MgPSAwOwogfQogCiBXZWJJbnNwZWN0
b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0geworICAgIHNuYXBzaG90UHJveHk6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdFByb3h5OworICAg
IH0sCisKICAgICAvKioKICAgICAgKiBAb3ZlcnJpZGUKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94eSk6dm9pZH0gY2FsbGJhY2sKICAgICAgKi8K
ICAgICBsb2FkOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9s
b2FkZWQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX3Byb3h5KTsKKyAgICAgICAgaWYg
KHRoaXMuX3NuYXBzaG90UHJveHkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX3NuYXBz
aG90UHJveHkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KCF0aGlzLl9wcm94eSkKKyAgICAgICAgaWYgKCF0aGlzLl9sb2FkZXJQcm94eSkKICAgICAgICAg
ICAgIHRoaXMuX3NldHVwV29ya2VyKCk7CiAKLSAgICAgICAgaWYgKHRoaXMuX3Byb3h5LnN0YXJ0
TG9hZGluZyhjYWxsYmFjaykpIHsKKyAgICAgICAgaWYgKHRoaXMuX2xvYWRlclByb3h5LnN0YXJ0
TG9hZGluZyhjYWxsYmFjaykpIHsKICAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuc3Vi
dGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWRpbmdcdTIwMjYiKTsKICAgICAgICAg
ICAgIHRoaXMuc2lkZWJhckVsZW1lbnQud2FpdCA9IHRydWU7Ci0gICAgICAgICAgICBmdW5jdGlv
biBkb25lKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9sb2FkZWQgPSB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5nZXRQcm9maWxl
KHRoaXMudHlwZUlkLCB0aGlzLnVpZCwgZG9uZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIFBy
b2ZpbGVyQWdlbnQuZ2V0UHJvZmlsZSh0aGlzLnR5cGVJZCwgdGhpcy51aWQsIGZ1bmN0aW9uKCkg
e30pOwogICAgICAgICB9CiAgICAgfSwKIApAQCAtODMxLDcgKzgzNiwxNSBAQCBXZWJJbnNwZWN0
b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgICAgIHZh
ciB3b3JrZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFdvcmtlcigpOwogICAgICAg
ICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigid2FpdCIsIHNldFByb2ZpbGVXYWl0LCB0aGlzKTsK
LSAgICAgICAgdGhpcy5fcHJveHkgPSB3b3JrZXIuY3JlYXRlT2JqZWN0KCJXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90TG9hZGVyIik7CisgICAgICAgIHRoaXMuX2xvYWRlclByb3h5ID0gd29ya2Vy
LmNyZWF0ZU9iamVjdCgiV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlciIpOworICAgIH0s
CisKKyAgICBkaXNwb3NlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fbG9h
ZGVyUHJveHkpCisgICAgICAgICAgICB0aGlzLl9sb2FkZXJQcm94eS5kaXNwb3NlKCk7CisgICAg
ICAgIGVsc2UgaWYgKHRoaXMuX3NuYXBzaG90UHJveHkpCisgICAgICAgICAgICB0aGlzLl9zbmFw
c2hvdFByb3h5LmRpc3Bvc2UoKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC04NDIsNyArODU1LDcg
QEAgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
aWYgKGV2ZW50LmRhdGEgIT09IHRoaXMuX2ZpbGVOYW1lKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBpZiAoKyt0aGlzLl9zYXZlZENodW5rc0NvdW50ID09PSB0aGlzLl90b3RhbE51bWJl
ck9mQ2h1bmtzKSB7Ci0gICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0g
TnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy5fcHJveHkudG90YWxTaXplKTsKKyAgICAgICAgICAg
IHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlz
Ll9zbmFwc2hvdFByb3h5LnRvdGFsU2l6ZSk7CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVt
ZW50LndhaXQgPSBmYWxzZTsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkQ2h1bmtzQ291bnQgPSAw
OwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLkV2ZW50VHlwZXMuQXBwZW5kZWRUb1VSTCwgdGhp
cy5fc2F2ZVN0YXR1c1VwZGF0ZSwgdGhpcyk7CkBAIC04NTUsMTIgKzg2OCwxMiBAQCBXZWJJbnNw
ZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHB1c2hK
U09OQ2h1bms6IGZ1bmN0aW9uKGNodW5rKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2xvYWRl
ZCkgeworICAgICAgICBpZiAodGhpcy5fbG9hZGVyUHJveHkpIHsKKyAgICAgICAgICAgICsrdGhp
cy5fdG90YWxOdW1iZXJPZkNodW5rczsKKyAgICAgICAgICAgIHRoaXMuX2xvYWRlclByb3h5LnB1
c2hKU09OQ2h1bmsoY2h1bmspOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGhpcy5z
aWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5maWxl
TWFuYWdlci5hcHBlbmQodGhpcy5fZmlsZU5hbWUsIGNodW5rKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICsrdGhpcy5fdG90YWxOdW1iZXJPZkNodW5rczsKLSAgICAgICAgICAgIHRo
aXMuX3Byb3h5LnB1c2hKU09OQ2h1bmsoY2h1bmspOwogICAgICAgICB9CiAgICAgfSwKIApAQCAt
ODY4LDE0ICs4ODEsMTUgQEAgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlw
ZSA9IHsKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIHBhcnNlZChzbmFwc2hvdFByb3h5KQogICAg
ICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9wcm94eSA9IHNuYXBzaG90UHJveHk7CisgICAgICAg
ICAgICB0aGlzLl9sb2FkZXJQcm94eSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9zbmFwc2hv
dFByb3h5ID0gc25hcHNob3RQcm94eTsKICAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQu
c3VidGl0bGUgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyhzbmFwc2hvdFByb3h5LnRvdGFsU2l6ZSk7
CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LndhaXQgPSBmYWxzZTsKICAgICAgICAg
ICAgIHZhciB3b3JrZXIgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3Jr
ZXJ9ICovIHNuYXBzaG90UHJveHkud29ya2VyOwogICAgICAgICAgICAgdGhpcy5pc1RlbXBvcmFy
eSA9IGZhbHNlOwogICAgICAgICAgICAgd29ya2VyLnN0YXJ0Q2hlY2tpbmdGb3JMb25nUnVubmlu
Z0NhbGxzKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHRoaXMuX3Byb3h5LmZpbmlzaExvYWRp
bmcocGFyc2VkLmJpbmQodGhpcykpKQorICAgICAgICBpZiAodGhpcy5fbG9hZGVyUHJveHkuZmlu
aXNoTG9hZGluZyhwYXJzZWQuYmluZCh0aGlzKSkpCiAgICAgICAgICAgICB0aGlzLnNpZGViYXJF
bGVtZW50LnN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYXJzaW5nXHUyMDI2Iik7
CiAgICAgfSwKIApAQCAtODg1LDcgKzg5OSw3IEBAIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhl
YWRlci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgY2FuU2F2ZVRvRmlsZTogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICF0aGlzLmZyb21GaWxlKCkgJiYgdGhpcy5fbG9hZGVk
ICYmICF0aGlzLl9zYXZlZENodW5rc0NvdW50ICYmIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5j
YW5BcHBlbmQoKTsKKyAgICAgICAgcmV0dXJuICF0aGlzLmZyb21GaWxlKCkgJiYgdGhpcy5fc25h
cHNob3RQcm94eSAmJiAhdGhpcy5fc2F2ZWRDaHVua3NDb3VudCAmJiBXZWJJbnNwZWN0b3IuZmls
ZU1hbmFnZXIuY2FuQXBwZW5kKCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtOTQ3LDcgKzk2MSw3
IEBAIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxv
YWRpbmdcdTIwMjYiKTsKICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsK
ICAgICAgICAgdGhpcy5fc2V0dXBXb3JrZXIoKTsKLSAgICAgICAgdGhpcy5fcHJveHkuc3RhcnRM
b2FkaW5nKGZ1bmN0aW9uKCkgeyB9KTsKKyAgICAgICAgdGhpcy5fbG9hZGVyUHJveHkuc3RhcnRM
b2FkaW5nKGZ1bmN0aW9uKGlnbm9yZWRTbmFwc2hvdFByb3h5KSB7IH0pOwogCiAgICAgICAgIGZ1
bmN0aW9uIGxvYWROZXh0Q2h1bmsoZmlsZSwgcmVhZGVyLCBsb2FkZWRTaXplKQogICAgICAgICB7
CkBAIC05NjYsMTEgKzk4MCwxMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJv
dG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgdGhpcy5f
bG9hZGVkU2l6ZSArPSBldmVudC50YXJnZXQucmVzdWx0Lmxlbmd0aDsKLSAgICAgICAgICAgIHRo
aXMuX3Byb3h5LnB1c2hKU09OQ2h1bmsoZXZlbnQudGFyZ2V0LnJlc3VsdCk7CisgICAgICAgICAg
ICB0aGlzLl9sb2FkZXJQcm94eS5wdXNoSlNPTkNodW5rKGV2ZW50LnRhcmdldC5yZXN1bHQpOwog
ICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTG9hZGluZ1x1MjAyNiAlZCUiLCAodGhpcy5fbG9hZGVkU2l6ZSAqIDEwMCAvIGZp
bGUuc2l6ZSkudG9GaXhlZCgyKSk7CiAKICAgICAgICAgICAgIGlmICh0aGlzLl9sb2FkZWRTaXpl
ID09PSBmaWxlLnNpemUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9sb2FkZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIHRoaXMuZmluaXNoSGVhcFNuYXBzaG90KCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJmMjJiZTgwYWY0NDIzNGQ4YzczNmEw
NjYzNmI2NmIxNTg5YzEwNjguLjQ1YTM5YzAxNGY5NDA3ODcwMTcyMGFmZDA2ZDJhNTBiNzE3Yjgy
NDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwxNSBAQAogMjAxMi0wNS0xNSAgWXVyeSBTZW1pa2hhdHNreSAg
PHl1cnlzQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiB1c2Ugc2VwYXJh
dGUgZmllbGRzIGZvciBzdG9yaW5nIEhlYXBTbmFwc2hvdExvYWRlclByb3h5IGFuZCBIZWFwU25h
cHNob3RQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODY0ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWluc3BlY3QtZG9tLXdyYXBwZXIu
aHRtbDogaW5zdGVhZCBvZiBzbmlmZmluZyBhIG1ldGhvZAorICAgICAgICBjYWxsIHdlIGNhbiB1
c2UgSGVhcFByb2ZpbGVIZWFkZXIubG9hZCBkaXJlY3RseS4KKworMjAxMi0wNS0xNSAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBpbXBsZW1lbnQgIlJldmVhbCBpbiBEb21pbmF0b3JzIHZpZXciIGNvbnRleHQgbWVudSBhY3Rp
b24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2NDU1
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBz
aG90LWluc3BlY3QtZG9tLXdyYXBwZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9m
aWxlci9oZWFwLXNuYXBzaG90LWluc3BlY3QtZG9tLXdyYXBwZXIuaHRtbAppbmRleCBlMDk2MjMx
MmVhN2FiNjE0NDlkZGQ2MTNlOTdiOWQ2NzFhYWJiNGY3Li5lZDc5NjJkZDEzM2MzNWVmMDMwOTdl
N2Q5NjlkMzgwNTJlNGMxZWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
ZmlsZXIvaGVhcC1zbmFwc2hvdC1pbnNwZWN0LWRvbS13cmFwcGVyLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtaW5zcGVjdC1kb20td3JhcHBl
ci5odG1sCkBAIC0yNywxMCArMjcsMTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJfZmluaXNoSGVhcFNuYXBzaG90ICIgKyB1aWQpOwogICAgICAg
ICB2YXIgcGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzOwogICAgICAgICB2YXIg
cHJvZmlsZSA9IHBhbmVsLl9wcm9maWxlc0lkTWFwW3BhbmVsLl9tYWtlS2V5KHVpZCwgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCldOwotICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFNuaWZmZXIocHJvZmlsZS5fcHJveHksICJfY2FsbExvYWRDYWxsYmFja3MiLCBz
dGVwMik7CisgICAgICAgIHByb2ZpbGUubG9hZChzdGVwMi5iaW5kKHRoaXMpKTsKICAgICB9CiAK
LSAgICBmdW5jdGlvbiBzdGVwMihsb2FkQ2FsbGJhY2tzLCBzbmFwc2hvdFByb3h5KQorICAgIGZ1
bmN0aW9uIHN0ZXAyKHNuYXBzaG90UHJveHkpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiX2NhbGxMb2FkQ2FsbGJhY2tzIik7CiAgICAgICAgIHZhciBzbmFwc2hvdCA9
IHNuYXBzaG90UHJveHkuX3dvcmtlci5fd29ya2VyLl9kaXNwYXRjaGVyLl9vYmplY3RzW3NuYXBz
aG90UHJveHkuX29iamVjdElkXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142189</attachid>
            <date>2012-05-16 01:32:09 -0700</date>
            <delta_ts>2012-05-16 01:44:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86488-20120516123207.patch</filename>
            <type>text/plain</type>
            <size>21305</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWM1ODBhMTQxMWVmYWRk
YzA2NzgwMjFkMDE1YThhOTI3NWU4MWYwMi4uODBhMDY1ZjI3ODRiNjAzNTU4N2Y0ZGEwOTcxYTUx
YWNhNzcwZmZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDEyLTA1LTE1ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBzZXBhcmF0ZSBmaWVsZHMgZm9yIHN0b3JpbmcgSGVhcFNuYXBzaG90TG9hZGVyUHJv
eHkgYW5kIEhlYXBTbmFwc2hvdFByb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NjQ4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNpbXBsaWZpZWQgaGVhcCBwcm9maWxlciBzbmFwc2hvdCBsb2FkaW5n
IGNvZGUuIEludHJvZHVjZWQgZGVkaWNhdGVkIGZpZWxkcyBmb3IKKyAgICAgICAgc25hcHNob3Qg
bG9hZGVyIHByb3h5IGFuZCBmb3Igc25hcHNob3QgcHJveHkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFdvcmtlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
TG9hZGVyUHJveHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclBy
b3h5LnByb3RvdHlwZS5maW5pc2hMb2FkaW5nLnVwZGF0ZVN0YXRpY0RhdGEpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5maW5pc2hMb2Fk
aW5nLmNhbGxMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RMb2FkZXJQcm94eS5wcm90b3R5cGUuZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyUHJveHkucHJvdG90eXBlLmdldCBsb2FkZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5LnByb3RvdHlwZS5zdGFy
dExvYWRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5
LnByb3RvdHlwZS5wdXNoSlNPTkNodW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0hlYXBTbmFwc2hvdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Vmlldy5wcm9maWxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBl
LmRpc3Bvc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90
eXBlLmdldCBiYXNlUHJvZmlsZVdyYXBwZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFZpZXcucHJvdG90eXBlLndhc1Nob3duLnByb2ZpbGVDYWxsYmFjazEpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlLl9jaGFuZ2VWaWV3KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlcik6IHNwbGl0IF9wcm94eSBm
aWVsZCBpbnRvIF9sb2FkZXJQcm94eSBhbmQgX3NuYXBzaG90UHJveHkKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuc25hcHNob3RQcm94eSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLmxvYWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fc2V0dXBXb3Jr
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5k
aXNwb3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5
cGUuX3NhdmVTdGF0dXNVcGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxl
SGVhZGVyLnByb3RvdHlwZS5wdXNoSlNPTkNodW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuZmluaXNoSGVhcFNuYXBzaG90KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuY2FuU2F2ZVRvRmlsZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLmxvYWRG
cm9tRmlsZS5vbkxvYWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVy
LnByb3RvdHlwZS5sb2FkRnJvbUZpbGUpOgorCisyMDEyLTA1LTE1ICBZdXJ5IFNlbWlraGF0c2t5
ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGltcGxlbWVu
dCAiUmV2ZWFsIGluIERvbWluYXRvcnMgdmlldyIgY29udGV4dCBtZW51IGFjdGlvbgogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0NTUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94
eS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJv
eHkuanMKaW5kZXggNjI2NGVlNzJhNWJkNGVlYWQ1YjRjMDRmOWYyZjJiNjIzY2IxM2RhMy4uZTUw
NjQzOGFlMzI0MDVkM2M0YjI5MGQzZTY4M2Q4N2Y0ODE5YWNkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzCkBA
IC0zNDAsNTcgKzM0MCw0NCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHlPYmplY3Qu
cHJvdG90eXBlID0gewogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5ID0gZnVu
Y3Rpb24od29ya2VyLCBvYmplY3RJZCkKIHsKICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
UHJveHlPYmplY3QuY2FsbCh0aGlzLCB3b3JrZXIsIG9iamVjdElkKTsKLSAgICB0aGlzLl9sb2Fk
aW5nID0gZmFsc2U7Ci0gICAgdGhpcy5fbG9hZGVkID0gZmFsc2U7CisgICAgdGhpcy5fb25Mb2Fk
Q2FsbGJhY2tzID0gW107CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RMb2FkZXJQcm94
eS5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJveHkpfSBjYWxsYmFjaworICAgICAqLwogICAgIGZpbmlzaExv
YWRpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9sb2Fk
aW5nKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2YXIgbG9hZENhbGxiYWNr
cyA9IHRoaXMuX29uTG9hZENhbGxiYWNrczsKLSAgICAgICAgbG9hZENhbGxiYWNrcy5zcGxpY2Uo
MCwgMCwgY2FsbGJhY2spOwotICAgICAgICBkZWxldGUgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzOwot
ICAgICAgICB0aGlzLl9sb2FkaW5nID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX2xvYWRlZCA9IHRy
dWU7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJh
Y2tzLnVuc2hpZnQoY2FsbGJhY2spOworCiAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN0YXRpY0Rh
dGEoc25hcHNob3RQcm94eSkKICAgICAgICAgewogICAgICAgICAgICAgdGhpcy5kaXNwb3NlKCk7
Ci0gICAgICAgICAgICBzbmFwc2hvdFByb3h5LnVwZGF0ZVN0YXRpY0RhdGEodGhpcy5fY2FsbExv
YWRDYWxsYmFja3MuYmluZCh0aGlzLCBsb2FkQ2FsbGJhY2tzKSk7CisgICAgICAgICAgICBzbmFw
c2hvdFByb3h5LnVwZGF0ZVN0YXRpY0RhdGEoY2FsbExvYWRDYWxsYmFja3MuYmluZCh0aGlzKSk7
CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gY2FsbExvYWRDYWxsYmFja3Moc25hcHNob3RQ
cm94eSkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9v
bkxvYWRDYWxsYmFja3MubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5fb25Mb2Fk
Q2FsbGJhY2tzW2ldKHNuYXBzaG90UHJveHkpOworICAgICAgICAgICAgdGhpcy5fb25Mb2FkQ2Fs
bGJhY2tzID0gbnVsbDsKICAgICAgICAgfQogICAgICAgICB0aGlzLmNhbGxGYWN0b3J5TWV0aG9k
KHVwZGF0ZVN0YXRpY0RhdGEuYmluZCh0aGlzKSwgImZpbmlzaExvYWRpbmciLCAiV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb3h5Iik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0K
LSAgICBfY2FsbExvYWRDYWxsYmFja3M6IGZ1bmN0aW9uKGxvYWRDYWxsYmFja3MsIHNuYXBzaG90
UHJveHkpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxvYWRDYWxsYmFja3Mu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBsb2FkQ2FsbGJhY2tzW2ldKHNuYXBzaG90UHJveHkp
OwotICAgIH0sCi0KLSAgICBnZXQgbG9hZGVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9sb2FkZWQ7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2Vi
SW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5KX0gY2FsbGJhY2sKKyAgICAgKiBAcmV0dXJuIHti
b29sZWFufQorICAgICAqLwogICAgIHN0YXJ0TG9hZGluZzogZnVuY3Rpb24oY2FsbGJhY2spCiAg
ICAgewotICAgICAgICBpZiAoIXRoaXMuX2xvYWRpbmcpIHsKLSAgICAgICAgICAgIHRoaXMuX29u
TG9hZENhbGxiYWNrcyA9IFtjYWxsYmFja107Ci0gICAgICAgICAgICB0aGlzLl9sb2FkaW5nID0g
dHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgdGhpcy5fb25Mb2FkQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIHZhciBsb2FkaW5nSGFzSnVzdFN0YXJ0
ZWQgPSAhdGhpcy5fb25Mb2FkQ2FsbGJhY2tzLmxlbmd0aDsKKyAgICAgICAgdGhpcy5fb25Mb2Fk
Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOworICAgICAgICByZXR1cm4gbG9hZGluZ0hhc0p1c3RT
dGFydGVkOwogICAgIH0sCiAKICAgICBwdXNoSlNPTkNodW5rOiBmdW5jdGlvbihjaHVuaykKICAg
ICB7Ci0gICAgICAgIGlmICghdGhpcy5fbG9hZGluZykKLSAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgdGhpcy5jYWxsTWV0aG9kKG51bGwsICJwdXNoSlNPTkNodW5rIiwgY2h1bmspOwogICAg
IH0KIH07CkBAIC00NzIsMTYgKzQ1OSw2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm94
eS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcG9zZVdvcmtlcigpOwogICAgIH0sCiAK
LSAgICBmaW5pc2hMb2FkaW5nOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfSwKLQotICAgIGdldCBsb2FkZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICEh
dGhpcy5fb2JqZWN0SWQ7Ci0gICAgfSwKLQogICAgIGdldCBub2RlQ291bnQoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3N0YXRpY0RhdGEubm9kZUNvdW50OwpAQCAtNTA3LDEyICs0ODQs
NiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJveHkucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLmNhbGxNZXRob2QoZGF0YVJlY2VpdmVkLmJpbmQodGhpcyksICJ1cGRhdGVTdGF0aWNE
YXRhIik7CiAgICAgfSwKIAotICAgIHN0YXJ0TG9hZGluZzogZnVuY3Rpb24oY2FsbGJhY2spCi0g
ICAgewotICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLmJpbmQobnVsbCwgdGhpcyksIDApOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQogICAgIGdldCB0b3RhbFNpemUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRpY0RhdGEudG90YWxTaXplOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3Lmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3Lmpz
CmluZGV4IDI2YTFjMDYzNWNiZWFiM2QxYmE2MDk2ZmIzMTA2ZWQyYzA1MzQ3MzAuLjMwOTY2MDdk
ZjJiNTgyNDI3Y2JhODRiNmYyYzE0ZWFhMDgyZWNkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKQEAgLTEzNSw5
ICsxMzUsOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90VmlldyA9IGZ1bmN0aW9uKHBhcmVu
dCwgcHJvZmlsZSkKIAogICAgIHRoaXMuX3BvcG92ZXJIZWxwZXIgPSBuZXcgV2ViSW5zcGVjdG9y
Lk9iamVjdFBvcG92ZXJIZWxwZXIodGhpcy5lbGVtZW50LCB0aGlzLl9nZXRIb3ZlckFuY2hvci5i
aW5kKHRoaXMpLCB0aGlzLl9yZXNvbHZlT2JqZWN0Rm9yUG9wb3Zlci5iaW5kKHRoaXMpLCB1bmRl
ZmluZWQsIHRydWUpOwogCi0gICAgdGhpcy5fbG9hZFByb2ZpbGUodGhpcy5fcHJvZmlsZVVpZCwg
cHJvZmlsZUNhbGxiYWNrLmJpbmQodGhpcykpOworICAgIHRoaXMucHJvZmlsZS5sb2FkKHByb2Zp
bGVDYWxsYmFjay5iaW5kKHRoaXMpKTsKIAotICAgIGZ1bmN0aW9uIHByb2ZpbGVDYWxsYmFjaygp
CisgICAgZnVuY3Rpb24gcHJvZmlsZUNhbGxiYWNrKGhlYXBTbmFwc2hvdFByb3h5KQogICAgIHsK
ICAgICAgICAgdmFyIGxpc3QgPSB0aGlzLl9wcm9maWxlcygpOwogICAgICAgICB2YXIgcHJvZmls
ZUluZGV4OwpAQCAtMTUyLDE2ICsxNTIsMTYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZp
ZXcgPSBmdW5jdGlvbihwYXJlbnQsIHByb2ZpbGUpCiAgICAgICAgICAgICB0aGlzLmJhc2VTZWxl
Y3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPSBwcm9maWxlSW5kZXggLSAxOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICB0aGlzLmJhc2VTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPSBwcm9m
aWxlSW5kZXg7Ci0gICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNvdXJjZSh0aGlzLCB0aGlz
LnByb2ZpbGVXcmFwcGVyKTsKKyAgICAgICAgdGhpcy5kYXRhR3JpZC5zZXREYXRhU291cmNlKHRo
aXMsIGhlYXBTbmFwc2hvdFByb3h5KTsKICAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RWaWV3LnByb3RvdHlwZSA9IHsKICAgICBkaXNwb3NlOiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICB0aGlzLnByb2ZpbGVXcmFwcGVyLmRpc3Bvc2UoKTsKKyAgICAgICAgdGhpcy5wcm9m
aWxlLmRpc3Bvc2UoKTsKICAgICAgICAgaWYgKHRoaXMuYmFzZVByb2ZpbGUpCi0gICAgICAgICAg
ICB0aGlzLmJhc2VQcm9maWxlV3JhcHBlci5kaXNwb3NlKCk7CisgICAgICAgICAgICB0aGlzLmJh
c2VQcm9maWxlLmRpc3Bvc2UoKTsKICAgICAgICAgdGhpcy5jb250YWlubWVudERhdGFHcmlkLmRp
c3Bvc2UoKTsKICAgICAgICAgdGhpcy5jb25zdHJ1Y3RvcnNEYXRhR3JpZC5kaXNwb3NlKCk7CiAg
ICAgICAgIHRoaXMuZGlmZkRhdGFHcmlkLmRpc3Bvc2UoKTsKQEAgLTE3OSwzMSArMTc5LDE5IEBA
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHRoaXMucGFyZW50LmdldFByb2ZpbGUoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2Zp
bGVUeXBlLlR5cGVJZCwgdGhpcy5fcHJvZmlsZVVpZCk7CiAgICAgfSwKIAotICAgIGdldCBwcm9m
aWxlV3JhcHBlcigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5wcm9maWxlLl9wcm94eTsK
LSAgICB9LAotCiAgICAgZ2V0IGJhc2VQcm9maWxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLnBhcmVudC5nZXRQcm9maWxlKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlw
ZS5UeXBlSWQsIHRoaXMuX2Jhc2VQcm9maWxlVWlkKTsKICAgICB9LAogCi0gICAgZ2V0IGJhc2VQ
cm9maWxlV3JhcHBlcigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5iYXNlUHJvZmlsZS5f
cHJveHk7Ci0gICAgfSwKLQogICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCiAgICAgewotICAgICAg
ICBpZiAoIXRoaXMucHJvZmlsZVdyYXBwZXIubG9hZGVkKQotICAgICAgICAgICAgdGhpcy5fbG9h
ZFByb2ZpbGUodGhpcy5fcHJvZmlsZVVpZCwgcHJvZmlsZUNhbGxiYWNrMS5iaW5kKHRoaXMpKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJvZmlsZUNhbGxiYWNrMS5jYWxsKHRoaXMpOwor
ICAgICAgICAvLyBGSVhNRTogbG9hZCBiYXNlIGFuZCBjdXJyZW50IHNuYXBzaG90cyBpbiBwYXJh
bGxlbAorICAgICAgICB0aGlzLnByb2ZpbGUubG9hZChwcm9maWxlQ2FsbGJhY2sxLmJpbmQodGhp
cykpOwogCiAgICAgICAgIGZ1bmN0aW9uIHByb2ZpbGVDYWxsYmFjazEoKSB7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5iYXNlUHJvZmlsZSAmJiAhdGhpcy5iYXNlUHJvZmlsZVdyYXBwZXIubG9hZGVk
KQotICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRQcm9maWxlKHRoaXMuX2Jhc2VQcm9maWxlVWlk
LCBwcm9maWxlQ2FsbGJhY2syLmJpbmQodGhpcykpOworICAgICAgICAgICAgaWYgKHRoaXMuYmFz
ZVByb2ZpbGUpCisgICAgICAgICAgICAgICAgdGhpcy5iYXNlUHJvZmlsZS5sb2FkKHByb2ZpbGVD
YWxsYmFjazIuYmluZCh0aGlzKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
cHJvZmlsZUNhbGxiYWNrMi5jYWxsKHRoaXMpOwogICAgICAgICB9CkBAIC0zNzAsNyArMzU4LDkg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAg
IHRoaXMuX2Jhc2VQcm9maWxlVWlkID0gdGhpcy5fcHJvZmlsZXMoKVt0aGlzLmJhc2VTZWxlY3RF
bGVtZW50LnNlbGVjdGVkSW5kZXhdLnVpZDsKICAgICAgICAgdmFyIGRhdGFHcmlkID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZkRhdGFHcmlkfSAqLyB0aGlzLmRhdGFH
cmlkOwotICAgICAgICB0aGlzLl9sb2FkUHJvZmlsZSh0aGlzLl9iYXNlUHJvZmlsZVVpZCwgZGF0
YUdyaWQuc2V0QmFzZURhdGFTb3VyY2UuYmluZChkYXRhR3JpZCkpOworICAgICAgICAvLyBDaGFu
Z2Ugc2V0IGJhc2UgZGF0YSBzb3VyY2Ugb25seSBpZiBtYWluIGRhdGEgc291cmNlIGlzIGFscmVh
ZHkgc2V0LgorICAgICAgICBpZiAoZGF0YUdyaWQuc25hcHNob3QpCisgICAgICAgICAgICB0aGlz
LmJhc2VQcm9maWxlLmxvYWQoZGF0YUdyaWQuc2V0QmFzZURhdGFTb3VyY2UuYmluZChkYXRhR3Jp
ZCkpOwogCiAgICAgICAgIGlmICghdGhpcy5jdXJyZW50UXVlcnkgfHwgIXRoaXMuX3NlYXJjaEZp
bmlzaGVkQ2FsbGJhY2sgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC00MjAsMTEgKzQxMCw2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMu
Z2V0UHJvZmlsZXMoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCk7
CiAgICAgfSwKIAotICAgIF9sb2FkUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZVVpZCwgY2FsbGJh
Y2spCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLmxvYWRIZWFw
U25hcHNob3QocHJvZmlsZVVpZCwgY2FsbGJhY2spOwotICAgIH0sCi0KICAgICBpc0RldGFpbGVk
U25hcHNob3Q6IGZ1bmN0aW9uKHNuYXBzaG90KQogICAgIHsKICAgICAgICAgdmFyIHMgPSBuZXcg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdChzbmFwc2hvdCk7CkBAIC00OTksNiArNDg0LDMzIEBA
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fY2hhbmdlVmlldyh7dGFyZ2V0OiB7c2VsZWN0ZWRJbmRleDogdmlld0luZGV4fX0pOwogICAg
IH0sCiAKKyAgICBfdXBkYXRlRGF0YVNvdXJjZUFuZFZpZXc6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHZhciBkYXRhR3JpZCA9IHRoaXMuZGF0YUdyaWQ7CisgICAgICAgIGlmIChkYXRhR3Jp
ZC5zbmFwc2hvdFZpZXcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5wcm9m
aWxlLmxvYWQoZGlkTG9hZFNuYXBzaG90LmJpbmQodGhpcykpOworICAgICAgICBmdW5jdGlvbiBk
aWRMb2FkU25hcHNob3Qoc25hcHNob3RQcm94eSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHRoaXMuZGF0YUdyaWQgIT09IGRhdGFHcmlkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIGlmIChkYXRhR3JpZC5zbmFwc2hvdCAhPT0gc25hcHNob3RQcm94eSkKKyAgICAg
ICAgICAgICAgICBkYXRhR3JpZC5zZXREYXRhU291cmNlKHRoaXMsIHNuYXBzaG90UHJveHkpOwor
ICAgICAgICAgICAgaWYgKGRhdGFHcmlkID09PSB0aGlzLmRpZmZEYXRhR3JpZCkgeworICAgICAg
ICAgICAgICAgIGlmICghdGhpcy5fYmFzZVByb2ZpbGVVaWQpCisgICAgICAgICAgICAgICAgICAg
IHRoaXMuX2Jhc2VQcm9maWxlVWlkID0gdGhpcy5fcHJvZmlsZXMoKVt0aGlzLmJhc2VTZWxlY3RF
bGVtZW50LnNlbGVjdGVkSW5kZXhdLnVpZDsKKyAgICAgICAgICAgICAgICB0aGlzLmJhc2VQcm9m
aWxlLmxvYWQoZGlkTG9hZEJhc2VTbmFwaG90LmJpbmQodGhpcykpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZGlkTG9hZEJhc2VTbmFwaG90KGJhc2VTbmFw
c2hvdFByb3h5KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZGF0YUdyaWQuYmFzZVNuYXBz
aG90ICE9PSBiYXNlU25hcHNob3RQcm94eSkKKyAgICAgICAgICAgICAgICBkYXRhR3JpZC5zZXRC
YXNlRGF0YVNvdXJjZShiYXNlU25hcHNob3RQcm94eSk7CisgICAgICAgIH0KKyAgICB9LAorCiAg
ICAgX2NoYW5nZVZpZXc6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCFldmVu
dCB8fCAhdGhpcy5fcHJvZmlsZVVpZCkKQEAgLTUxNSwxNyArNTI3LDEyIEBAIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5yZWZyZXNoVmlz
aWJsZURhdGEoKTsKICAgICAgICAgdGhpcy5kYXRhR3JpZC51cGRhdGVXaWR0aHMoKTsKIAotICAg
ICAgICBpZiAodGhpcy5jdXJyZW50VmlldyA9PT0gdGhpcy5kaWZmVmlldykgeworICAgICAgICBp
ZiAodGhpcy5jdXJyZW50VmlldyA9PT0gdGhpcy5kaWZmVmlldykKICAgICAgICAgICAgIHRoaXMu
YmFzZVNlbGVjdEVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgICAgICAg
ICBpZiAoIXRoaXMuZGF0YUdyaWQuc25hcHNob3RWaWV3KSB7Ci0gICAgICAgICAgICAgICAgdGhp
cy5fY2hhbmdlQmFzZSgpOwotICAgICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuc2V0RGF0YVNv
dXJjZSh0aGlzLCB0aGlzLnByb2ZpbGVXcmFwcGVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5iYXNlU2VsZWN0RWxlbWVu
dC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICAgICAgICAgIGlmICghdGhpcy5kYXRhR3Jp
ZC5zbmFwc2hvdFZpZXcpCi0gICAgICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5zZXREYXRhU291
cmNlKHRoaXMsIHRoaXMucHJvZmlsZVdyYXBwZXIpOwotICAgICAgICB9CisKKyAgICAgICAgdGhp
cy5fdXBkYXRlRGF0YVNvdXJjZUFuZFZpZXcoKTsKIAogICAgICAgICBpZiAodGhpcy5jdXJyZW50
VmlldyA9PT0gdGhpcy5jb25zdHJ1Y3RvcnNWaWV3KQogICAgICAgICAgICAgdGhpcy5maWx0ZXJT
ZWxlY3RFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOwpAQCAtNzk0LDMzICs4MDEs
NDEgQEAgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyID0gZnVuY3Rpb24odGl0bGUsIHVp
ZCwgbWF4SlNPYmplY3RJZCkKIHsKICAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlci5jYWxs
KHRoaXMsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQsIHRpdGxl
LCB1aWQpOwogICAgIHRoaXMubWF4SlNPYmplY3RJZCA9IG1heEpTT2JqZWN0SWQ7Ci0gICAgdGhp
cy5fbG9hZGVkID0gZmFsc2U7CisgICAgLyoqCisgICAgICogQHR5cGUge1dlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RMb2FkZXJQcm94eX0KKyAgICAgKi8KKyAgICB0aGlzLl9sb2FkZXJQcm94eSA9
IG51bGw7CisgICAgLyoqCisgICAgICogQHR5cGUge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQ
cm94eX0KKyAgICAgKi8KKyAgICB0aGlzLl9zbmFwc2hvdFByb3h5ID0gbnVsbDsKICAgICB0aGlz
Ll90b3RhbE51bWJlck9mQ2h1bmtzID0gMDsKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxl
SGVhZGVyLnByb3RvdHlwZSA9IHsKKyAgICBzbmFwc2hvdFByb3h5OiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fc25hcHNob3RQcm94eTsKKyAgICB9LAorCiAgICAgLyoq
CiAgICAgICogQG92ZXJyaWRlCiAgICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90UHJveHkpOnZvaWR9IGNhbGxiYWNrCiAgICAgICovCiAgICAgbG9hZDogZnVu
Y3Rpb24oY2FsbGJhY2spCiAgICAgewotICAgICAgICBpZiAodGhpcy5fbG9hZGVkKSB7Ci0gICAg
ICAgICAgICBjYWxsYmFjayh0aGlzLl9wcm94eSk7CisgICAgICAgIGlmICh0aGlzLl9zbmFwc2hv
dFByb3h5KSB7CisgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9zbmFwc2hvdFByb3h5KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghdGhpcy5fcHJveHkp
CisgICAgICAgIGlmICghdGhpcy5fbG9hZGVyUHJveHkpCiAgICAgICAgICAgICB0aGlzLl9zZXR1
cFdvcmtlcigpOwogCi0gICAgICAgIGlmICh0aGlzLl9wcm94eS5zdGFydExvYWRpbmcoY2FsbGJh
Y2spKSB7CisgICAgICAgIGlmICh0aGlzLl9sb2FkZXJQcm94eS5zdGFydExvYWRpbmcoY2FsbGJh
Y2spKSB7CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJMb2FkaW5nXHUyMDI2Iik7CiAgICAgICAgICAgICB0aGlzLnNpZGVi
YXJFbGVtZW50LndhaXQgPSB0cnVlOwotICAgICAgICAgICAgZnVuY3Rpb24gZG9uZSgpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuZ2V0UHJvZmlsZSh0aGlzLnR5cGVJZCwg
dGhpcy51aWQsIGRvbmUuYmluZCh0aGlzKSk7CisgICAgICAgICAgICBQcm9maWxlckFnZW50Lmdl
dFByb2ZpbGUodGhpcy50eXBlSWQsIHRoaXMudWlkKTsKICAgICAgICAgfQogICAgIH0sCiAKQEAg
LTgzMSw3ICs4NDYsMTUgQEAgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogICAgICAgICB2YXIgd29ya2VyID0gbmV3IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RXb3JrZXIoKTsKICAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIndh
aXQiLCBzZXRQcm9maWxlV2FpdCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3Byb3h5ID0gd29ya2Vy
LmNyZWF0ZU9iamVjdCgiV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlciIpOworICAgICAg
ICB0aGlzLl9sb2FkZXJQcm94eSA9IHdvcmtlci5jcmVhdGVPYmplY3QoIldlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RMb2FkZXIiKTsKKyAgICB9LAorCisgICAgZGlzcG9zZTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2xvYWRlclByb3h5KQorICAgICAgICAgICAgdGhpcy5f
bG9hZGVyUHJveHkuZGlzcG9zZSgpOworICAgICAgICBlbHNlIGlmICh0aGlzLl9zbmFwc2hvdFBy
b3h5KQorICAgICAgICAgICAgdGhpcy5fc25hcHNob3RQcm94eS5kaXNwb3NlKCk7CiAgICAgfSwK
IAogICAgIC8qKgpAQCAtODQyLDcgKzg2NSw3IEBAIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhl
YWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChldmVudC5kYXRhICE9PSB0aGlzLl9maWxl
TmFtZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCsrdGhpcy5fc2F2ZWRDaHVu
a3NDb3VudCA9PT0gdGhpcy5fdG90YWxOdW1iZXJPZkNodW5rcykgewotICAgICAgICAgICAgdGhp
cy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuX3By
b3h5LnRvdGFsU2l6ZSk7CisgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxl
ID0gTnVtYmVyLmJ5dGVzVG9TdHJpbmcodGhpcy5fc25hcHNob3RQcm94eS50b3RhbFNpemUpOwog
ICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0gZmFsc2U7CiAgICAgICAgICAg
ICB0aGlzLl9zYXZlZENodW5rc0NvdW50ID0gMDsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5m
aWxlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWxlTWFuYWdlci5F
dmVudFR5cGVzLkFwcGVuZGVkVG9VUkwsIHRoaXMuX3NhdmVTdGF0dXNVcGRhdGUsIHRoaXMpOwpA
QCAtODU1LDEyICs4NzgsMTIgQEAgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBwdXNoSlNPTkNodW5rOiBmdW5jdGlvbihjaHVuaykKICAg
ICB7Ci0gICAgICAgIGlmICh0aGlzLl9sb2FkZWQpIHsKKyAgICAgICAgaWYgKHRoaXMuX2xvYWRl
clByb3h5KSB7CisgICAgICAgICAgICArK3RoaXMuX3RvdGFsTnVtYmVyT2ZDaHVua3M7CisgICAg
ICAgICAgICB0aGlzLl9sb2FkZXJQcm94eS5wdXNoSlNPTkNodW5rKGNodW5rKTsKKyAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQud2FpdCA9IHRydWU7CiAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuYXBwZW5kKHRoaXMuX2ZpbGVOYW1l
LCBjaHVuayk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICArK3RoaXMuX3RvdGFsTnVt
YmVyT2ZDaHVua3M7Ci0gICAgICAgICAgICB0aGlzLl9wcm94eS5wdXNoSlNPTkNodW5rKGNodW5r
KTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTg2OCwxNCArODkxLDE1IEBAIFdlYkluc3BlY3Rv
ci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBmdW5jdGlv
biBwYXJzZWQoc25hcHNob3RQcm94eSkKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fcHJv
eHkgPSBzbmFwc2hvdFByb3h5OworICAgICAgICAgICAgdGhpcy5fbG9hZGVyUHJveHkgPSBudWxs
OworICAgICAgICAgICAgdGhpcy5fc25hcHNob3RQcm94eSA9IHNuYXBzaG90UHJveHk7CiAgICAg
ICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gTnVtYmVyLmJ5dGVzVG9TdHJp
bmcoc25hcHNob3RQcm94eS50b3RhbFNpemUpOwogICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxl
bWVudC53YWl0ID0gZmFsc2U7CiAgICAgICAgICAgICB2YXIgd29ya2VyID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90V29ya2VyfSAqLyBzbmFwc2hvdFByb3h5LndvcmtlcjsK
ICAgICAgICAgICAgIHRoaXMuaXNUZW1wb3JhcnkgPSBmYWxzZTsKICAgICAgICAgICAgIHdvcmtl
ci5zdGFydENoZWNraW5nRm9yTG9uZ1J1bm5pbmdDYWxscygpOwogICAgICAgICB9Ci0gICAgICAg
IGlmICh0aGlzLl9wcm94eS5maW5pc2hMb2FkaW5nKHBhcnNlZC5iaW5kKHRoaXMpKSkKKyAgICAg
ICAgaWYgKHRoaXMuX2xvYWRlclByb3h5LmZpbmlzaExvYWRpbmcocGFyc2VkLmJpbmQodGhpcykp
KQogICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUGFyc2luZ1x1MjAyNiIpOwogICAgIH0sCiAKQEAgLTg4NSw3ICs5MDksNyBA
QCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewogICAgICAqLwog
ICAgIGNhblNhdmVUb0ZpbGU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiAhdGhp
cy5mcm9tRmlsZSgpICYmIHRoaXMuX2xvYWRlZCAmJiAhdGhpcy5fc2F2ZWRDaHVua3NDb3VudCAm
JiBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuY2FuQXBwZW5kKCk7CisgICAgICAgIHJldHVybiAh
dGhpcy5mcm9tRmlsZSgpICYmIHRoaXMuX3NuYXBzaG90UHJveHkgJiYgIXRoaXMuX3NhdmVkQ2h1
bmtzQ291bnQgJiYgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLmNhbkFwcGVuZCgpOwogICAgIH0s
CiAKICAgICAvKioKQEAgLTk0Nyw3ICs5NzEsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVI
ZWFkZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2FkaW5nXHUyMDI2Iik7CiAgICAgICAgIHRoaXMu
c2lkZWJhckVsZW1lbnQud2FpdCA9IHRydWU7CiAgICAgICAgIHRoaXMuX3NldHVwV29ya2VyKCk7
Ci0gICAgICAgIHRoaXMuX3Byb3h5LnN0YXJ0TG9hZGluZyhmdW5jdGlvbigpIHsgfSk7CisgICAg
ICAgIHRoaXMuX2xvYWRlclByb3h5LnN0YXJ0TG9hZGluZyhmdW5jdGlvbihpZ25vcmVkU25hcHNo
b3RQcm94eSkgeyB9KTsKIAogICAgICAgICBmdW5jdGlvbiBsb2FkTmV4dENodW5rKGZpbGUsIHJl
YWRlciwgbG9hZGVkU2l6ZSkKICAgICAgICAgewpAQCAtOTY2LDExICs5OTAsMTAgQEAgV2ViSW5z
cGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgICAgIHRoaXMuX2xvYWRlZFNpemUgKz0gZXZlbnQudGFyZ2V0LnJl
c3VsdC5sZW5ndGg7Ci0gICAgICAgICAgICB0aGlzLl9wcm94eS5wdXNoSlNPTkNodW5rKGV2ZW50
LnRhcmdldC5yZXN1bHQpOworICAgICAgICAgICAgdGhpcy5fbG9hZGVyUHJveHkucHVzaEpTT05D
aHVuayhldmVudC50YXJnZXQucmVzdWx0KTsKICAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1l
bnQuc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWRpbmdcdTIwMjYgJWQlIiwg
KHRoaXMuX2xvYWRlZFNpemUgKiAxMDAgLyBmaWxlLnNpemUpLnRvRml4ZWQoMikpOwogCiAgICAg
ICAgICAgICBpZiAodGhpcy5fbG9hZGVkU2l6ZSA9PT0gZmlsZS5zaXplKSB7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB0aGlzLmZpbmlzaEhl
YXBTbmFwc2hvdCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5l
bC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5q
cwppbmRleCBlOWNiMjQzMjk1NGI4ZWJhYTMzMzdhOGJhMTNhZTZjN2E3ODBlZGQxLi5iNmQwOTYy
ODZhYmQwZjA1M2MyMjg2MTM5ZDc1N2YwOWQ4OTZjNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCkBAIC02NDUsMTggKzY0
NSw2IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIC8q
KgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1aWQKLSAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBj
YWxsYmFjawotICAgICAqLwotICAgIGxvYWRIZWFwU25hcHNob3Q6IGZ1bmN0aW9uKHVpZCwgY2Fs
bGJhY2spCi0gICAgewotICAgICAgICB2YXIgcHJvZmlsZSA9IHRoaXMuX3Byb2ZpbGVzSWRNYXBb
dGhpcy5fbWFrZUtleSh1aWQsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5U
eXBlSWQpXTsKLSAgICAgICAgaWYgKCFwcm9maWxlKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBwcm9maWxlLmxvYWQoY2FsbGJhY2spOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBA
cGFyYW0ge251bWJlcn0gdWlkCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGNodW5rCiAgICAgICov
CiAgICAgX2FkZEhlYXBTbmFwc2hvdENodW5rOiBmdW5jdGlvbih1aWQsIGNodW5rKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDJmMjJiZTgwYWY0NDIzNGQ4YzczNmEwNjYzNmI2NmIxNTg5YzEwNjguLjQ1YTM5YzAxNGY5NDA3
ODcwMTcyMGFmZDA2ZDJhNTBiNzE3YjgyNDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNSBAQAogMjAxMi0w
NS0xNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAorICAgICAgICBX
ZWIgSW5zcGVjdG9yOiB1c2Ugc2VwYXJhdGUgZmllbGRzIGZvciBzdG9yaW5nIEhlYXBTbmFwc2hv
dExvYWRlclByb3h5IGFuZCBIZWFwU25hcHNob3RQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY0ODgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBz
aG90LWluc3BlY3QtZG9tLXdyYXBwZXIuaHRtbDogaW5zdGVhZCBvZiBzbmlmZmluZyBhIG1ldGhv
ZAorICAgICAgICBjYWxsIHdlIGNhbiB1c2UgSGVhcFByb2ZpbGVIZWFkZXIubG9hZCBkaXJlY3Rs
eS4KKworMjAxMi0wNS0xNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
KwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgIlJldmVhbCBpbiBEb21pbmF0b3Jz
IHZpZXciIGNvbnRleHQgbWVudSBhY3Rpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg2NDU1CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWluc3BlY3QtZG9tLXdyYXBwZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LWluc3BlY3QtZG9tLXdy
YXBwZXIuaHRtbAppbmRleCBlMDk2MjMxMmVhN2FiNjE0NDlkZGQ2MTNlOTdiOWQ2NzFhYWJiNGY3
Li5lZDc5NjJkZDEzM2MzNWVmMDMwOTdlN2Q5NjlkMzgwNTJlNGMxZWNkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC1pbnNwZWN0LWRvbS13
cmFwcGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25h
cHNob3QtaW5zcGVjdC1kb20td3JhcHBlci5odG1sCkBAIC0yNywxMCArMjcsMTAgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJfZmluaXNoSGVhcFNu
YXBzaG90ICIgKyB1aWQpOwogICAgICAgICB2YXIgcGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxz
LnByb2ZpbGVzOwogICAgICAgICB2YXIgcHJvZmlsZSA9IHBhbmVsLl9wcm9maWxlc0lkTWFwW3Bh
bmVsLl9tYWtlS2V5KHVpZCwgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5
cGVJZCldOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIocHJvZmlsZS5fcHJveHks
ICJfY2FsbExvYWRDYWxsYmFja3MiLCBzdGVwMik7CisgICAgICAgIHByb2ZpbGUubG9hZChzdGVw
Mi5iaW5kKHRoaXMpKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBzdGVwMihsb2FkQ2FsbGJhY2tz
LCBzbmFwc2hvdFByb3h5KQorICAgIGZ1bmN0aW9uIHN0ZXAyKHNuYXBzaG90UHJveHkpCiAgICAg
ewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiX2NhbGxMb2FkQ2FsbGJhY2tzIik7
CiAgICAgICAgIHZhciBzbmFwc2hvdCA9IHNuYXBzaG90UHJveHkuX3dvcmtlci5fd29ya2VyLl9k
aXNwYXRjaGVyLl9vYmplY3RzW3NuYXBzaG90UHJveHkuX29iamVjdElkXTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCmluZGV4
IGY5ODhlNDE2Y2VmYTcyNzViOWM3ZjYxNWI5MmYwMDdjMjNiNTQ1ZjMuLjQ3ZGJiOTRhOTkxMDcz
NGI3ZTFhYzc5YmUyNTM1ODdmNmFiOWI2ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcwpAQCAtMTYwLDcgKzE2MCw3IEBA
IEluc3BlY3RvclRlc3Quc3RhcnRQcm9maWxlclRlc3QgPSBmdW5jdGlvbihjYWxsYmFjaykKICAg
ICAgICAgLy8gYW5kIHRlc3Qgc2hhcmUgdGhlIHNhbWUgaGVhcC4gVGFraW5nIGEgc25hcHNob3Qg
dGFrZXMgdG9vIGxvbmcgZm9yIGEgdGVzdCwKICAgICAgICAgLy8gc28gd2UgcHJvdmlkZSBzeW50
aGV0aWMgc25hcHNob3RzLgogICAgICAgICBJbnNwZWN0b3JUZXN0Ll9wYW5lbFJlc2V0ID0gSW5z
cGVjdG9yVGVzdC5vdmVycmlkZShXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLCAiX3Jlc2V0
IiwgZnVuY3Rpb24oKXt9LCB0cnVlKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVy
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZSwgIl9sb2FkUHJvZmlsZSIs
IEluc3BlY3RvclRlc3QuX3NuYXBzaG90Vmlld1Nob3duLCB0cnVlKTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnByb3RvdHlw
ZSwgInNob3ciLCBJbnNwZWN0b3JUZXN0Ll9zbmFwc2hvdFZpZXdTaG93biwgdHJ1ZSk7CiAKICAg
ICAgICAgZGV0YWlsZWRIZWFwUHJvZmlsZXNFbmFibGVkKCk7CiAgICAgfQo=
</data>
<flag name="review"
          id="148451"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>