<?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>119652</bug_id>
          
          <creation_ts>2013-08-09 21:09:54 -0700</creation_ts>
          <short_desc>Bootstrap canvas profiler</short_desc>
          <delta_ts>2013-08-11 16:13:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>916034</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-08-09 21:09:54 -0700</bug_when>
    <thetext>Copy enough of the JS and Selector profilers to get a new profile type and new view in the Timelines panel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916035</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-08-09 21:10:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/14703665&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916036</commentid>
    <comment_count>2</comment_count>
      <attachid>208472</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-08-09 21:12:55 -0700</bug_when>
    <thetext>Created attachment 208472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916089</commentid>
    <comment_count>3</comment_count>
      <attachid>208472</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-08-11 01:25:22 -0700</bug_when>
    <thetext>Comment on attachment 208472
Patch

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

r=me because all my comments are nits. But feel free to post another patch if you want another look.

&gt; Source/WebInspectorUI/ChangeLog:11
&gt; +        * Localizations/en.lproj/localizedStrings.js: Add canvas strings.

Just a heads up in case you did not know, you do not need to edit localizedStrings by hand, you can (and should) just generate it from:
Tools/Scripts/update-webkit-localizable-strings

&gt; Source/WebInspectorUI/UserInterface/CanvasProfileType.js:28
&gt; +/**
&gt; + * @constructor
&gt; + */

You should remove these comments. Since we don&apos;t use them right now they take up a lot of space (noise) and are likely to get stale.

&gt; Source/WebInspectorUI/UserInterface/CanvasProfileType.js:33
&gt; +    this._profileUid = 1;

Nit: How about just _profileId. &quot;Uid&quot; doesn&apos;t really match up with the rest of the inspector.

&gt; Source/WebInspectorUI/UserInterface/CanvasProfileType.js:39
&gt; +WebInspector.CanvasProfileType.prototype = {

Style: The first property inside of prototype should be the constructor:

    constructor: WebInspector.CanvasProfileType,

&gt; Source/WebInspectorUI/UserInterface/CanvasProfileType.js:94
&gt; +        callback(null, { data: [] });

Style: Object literal style in the Inspector is:

    var obj = {key: value, key2: [1, 2, 3]}

So here:

    {data: []}

&gt; Source/WebInspectorUI/UserInterface/CanvasProfileView.js:26
&gt; +WebInspector.CanvasDataGridNode = function(profileView, data)

Nit: We prefer to give each class its own file. That simplifies looking for the file that defines the class. Please make a CanvasDataGridNode.js for this class. (I realize the others don&apos;t at this point)

&gt; Source/WebInspectorUI/UserInterface/CanvasProfileView.js:32
&gt; +WebInspector.CanvasDataGridNode.prototype = {

Nit: constructor line

&gt; Source/WebInspectorUI/UserInterface/CanvasProfileView.js:57
&gt; +    _linkifyLocation: function(url, lineNumber)

Gosh it would be really, really, great if we could throw in a columnNumber here. Maybe the backend doesn&apos;t support it YET, but our goal is to always include line and column number when possible. Hopefully there already is a FIXME in the backend, but right here maybe you could pass this.rawData.columnNumber and || 0 either here or in _linkifyLocation.

This is important when working with minified source code. If all we ever know is to jump to line 1, that is not useful. Especially if we&apos;ve pretty printed the source code and line 1 contains nothing. If we know the original line and column we know exactly where to jump, even in pretty printed code, and we can give the user exactly what they want.

&gt; Source/WebInspectorUI/UserInterface/CanvasProfileView.js:83
&gt; +        return WebInspector.UIString(&quot;Recording Canvas Profile\u2026&quot;);

Nit: Because we auto generate the strings file, you could just put the … here. I realize the super class has \u, but it is unnecessary.

&gt; Source/WebInspectorUI/UserInterface/CanvasProfileView.js:88
&gt; +        var columns = { &quot;number&quot;: { title: &quot;#&quot;, width: &quot;5%&quot;, sortable: false },

Style: I would prefer this be updated to our style. But it is fine to leave this as is. The other files have similar formatted =(.

&gt; Source/WebInspectorUI/UserInterface/CanvasProfileView.js:99
&gt; +        this._sortProfile();

Currently all columns are not sorted. So there should be no need for a sortProfile here. Do you expect sort changes? If so, we should listen for the dataGrid&apos;s WebInspector.DataGrid.Event.SortChanged event. If not, you can remove this and the sort function below.

&gt; Source/WebInspectorUI/UserInterface/CanvasProfileView.js:141
&gt; +

Style: remove this empty line

&gt; Source/WebInspectorUI/UserInterface/ProfileManager.js:153
&gt; +            this._recordingCanvasProfile.recording = false;

This line should not need to be here. stopRecordingProfile sets this._recording = false. THe others do this, but I suspect they don&apos;t need to as well =(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916154</commentid>
    <comment_count>4</comment_count>
      <attachid>208472</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-08-11 16:09:17 -0700</bug_when>
    <thetext>Comment on attachment 208472
Patch

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

Thanks Joe. I updated everything but have one comment.

&gt;&gt; Source/WebInspectorUI/UserInterface/ProfileManager.js:153
&gt;&gt; +            this._recordingCanvasProfile.recording = false;
&gt; 
&gt; This line should not need to be here. stopRecordingProfile sets this._recording = false. THe others do this, but I suspect they don&apos;t need to as well =(.

I had to leave this in. _recordingCanvasProfile is a CanvasProfileObject, not a CanvasProfileType. It&apos;s the latter that sets its _recording property to false in stopRecordingProfile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916155</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-08-11 16:13:15 -0700</bug_when>
    <thetext>Committed r153928: &lt;http://trac.webkit.org/changeset/153928&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208472</attachid>
            <date>2013-08-09 21:12:55 -0700</date>
            <delta_ts>2013-08-11 16:09:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119652-20130810141253.patch</filename>
            <type>text/plain</type>
            <size>25685</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAy
MzgwNTViMGIzM2EwOTQ0YmRlMDBlOGIxNzExMDYzOWJhMjU2ZGRiLi5lZjQxMGYwNmU3NTJiZDc4
MWI4ZjE2YzA4MDU1NTRmMGYwY2RhYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxMy0wOC0wOSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisK
KyAgICAgICAgQm9vdHN0cmFwIGNhbnZhcyBwcm9maWxlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5NjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGVub3VnaCB0byBnZXQgYW4gZW1wdHkgQ2Fu
dmFzIHByb2ZpbGUgcmVjb3JkaW5nCisgICAgICAgIGFuZCBkaXNwbGF5ZWQuCisKKyAgICAgICAg
KiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6IEFkZCBjYW52YXMg
c3RyaW5ncy4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NhbnZhc1Byb2ZpbGVPYmplY3QuanM6
IEFkZGVkLiBNb3N0bHkgY29waWVkIGZyb20gQ1NTIFNlbGVjdG9yIFByb2ZpbGVzLgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQ2FudmFzUHJvZmlsZVR5cGUuanM6IEFkZGVkLiBEaXR0by4KKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NhbnZhc1Byb2ZpbGVWaWV3LmpzOiBBZGRlZC4gRGl0dG8u
CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldyk6IEFkZCBzdXBwb3J0IGZvciB0aGUgbmV3IFZpZXcgdHlwZS4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5pc1ZpZXdhYmxlKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbCk6IEFkZCBzdXBwb3J0IGZvciBjYW52YXMg
cHJvZmlsZXMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5w
cm90b3R5cGUuX3JlY29yZFByb2ZpbGVHbHlwaE1vdXNlZE92ZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9yZWNvcmRQcm9maWxlR2x5
cGhNb3VzZWREb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBh
bmVsLnByb3RvdHlwZS5fcmVjb3JkUHJvZmlsZUdseXBoQ2xpY2tlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUuX3Byb2ZpbGVUeXBlV2Fz
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwu
cHJvdG90eXBlLl9wcm9maWxlc0NsZWFyZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFp
bi5odG1sOiBMb2FkIHRoZSBuZXcgZmlsZXMuCisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm9m
aWxlTWFuYWdlci5qczogTmV3IG1ldGhvZHMgYW5kIHN1cHBvcnQgZm9yIGNhbnZhcyBwcm9maWxl
cy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLnByb3RvdHlwZS5pc1Byb2ZpbGluZ0NhbnZhcyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZU1hbmFnZXIucHJvdG90eXBlLnN0YXJ0UHJv
ZmlsaW5nQ2FudmFzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5wcm90
b3R5cGUuc3RvcFByb2ZpbGluZ0NhbnZhcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmls
ZU1hbmFnZXIucHJvdG90eXBlLl9jaGVja0ZvckludGVycnVwdGlvbnMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLnByb3RvdHlwZS5fYXR0ZW1wdFRvUmVzdW1lUHJvZmls
aW5nKToKKwogMjAxMy0wOC0wOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIHVzZSBvZiBwcmVmaXhlZCB0cmFuc2l0aW9uIGV2ZW50CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRT
dHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCBjZjlmNGM2OWJiMGY0N2E3N2ZiN2Q5MDMyODAzNGE5
NDY3MTA0ZGFkLi5lZDNlNWMwNjZiMDAwZjJlNWVlNjkwZWIzMDZiMDk4NTRlMWZjMzM5IDEwMDY0
NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDYzOQp6Y21lektmJDd0NHJWWCo7b1FAMkIzfUZuODQ4
ZkJacXt3cVMxNmNeWj07WGNQVEhKe1ljP0BMP2k0NFVJM1g9bngKejZuVU0yWT1sVGJsWUtwazJ0
eHJ3NWtvI2g4YmM7UzRucnpQN2ZeaTs1YXUoSzFLRXs4eClleTQwQkhyRmQ8OVQ4Cno3cE9LNSRX
fnhUMHFSV3pzc3IpVWYmNkArWHtsaGI1fTtUPFAhd2J5aCpuQG9oUGs2MkVTTChtRSpHZGc0YF9I
WAp6Z0MydHRMbzg2NEVmNmEpKDkoKEtNN1ItfjZETHA1KSFpSHw/I0lmSD1GLVVsSm89aiMlMW1Q
QWdvcEl4ZmNkaE0KeipfOCE9RkB6QUNGeURJZWFWM0d0ckFrX3B8MCtwc0U+K0A2TERLU35PQDE8
T2hZWVUqdmhPRnFYcDchbCtxTz52CnpObnlaelo2d309YEpQQlRnUWIjXyoldShJSGR5TDlgVFRy
PSQrYiNLS3dHJnM9ZyFZVWJ8Xl4wQH0oanU0bURXbgpRSnl+KzgwWjRxYTxrRG5lMEh+OWpmQipt
aAoKZGVsdGEgNzEKemNtVi1OMEojNzFgdlV5JTA8Y3tkdiNTfFExK3pVTGlVcElJQmBBfDBDS3xK
c0I/QEctUGx+KTRsVHtAJGxmOSEzCmRsVHtAc2xWMnQlbGxgSSZsTHdfUHYrdHpQMWhZLTVyNHVv
VTlxc0BDCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q2FudmFzUHJvZmlsZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NhbnZhc1Byb2ZpbGVPYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdmZDQyNGU0NDZiMGJjMTlh
OTQyNWZhNmEzYmU3YTJmZDc4ODZjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NhbnZhc1Byb2ZpbGVPYmplY3QuanMKQEAgLTAsMCArMSw0
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlT2JqZWN0ID0gZnVu
Y3Rpb24odGl0bGUsIGlkLCByZWNvcmRpbmcsIGRhdGEpCit7CisgICAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVPYmplY3QuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUuVHlw
ZUlkLCB0aXRsZSwgaWQsIHJlY29yZGluZyk7CisKKyAgICB0aGlzLl9kYXRhID0gZGF0YSB8fCBb
XTsKK307CisKK1dlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlT2JqZWN0LnByb3RvdHlwZSA9IHsK
KyAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVPYmplY3QsCisKKyAg
ICBnZXQgZGF0YSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZGF0YTsKKyAgICB9LAor
CisgICAgc2V0IGRhdGEoZGF0YSkKKyAgICB7CisgICAgICAgIHRoaXMuX2RhdGEgPSBkYXRhOwor
ICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlT2JqZWN0LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvZmlsZU9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DYW52YXNQcm9maWxlVHlw
ZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NhbnZhc1Byb2ZpbGVU
eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjllOTNhM2RlZTYxOGEwNjg5NTg0ODFiMjI1Y2U0M2ZjOWVkNzQ3
NzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9DYW52YXNQcm9maWxlVHlwZS5qcwpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8K
K1dlYkluc3BlY3Rvci5DYW52YXNQcm9maWxlVHlwZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJ
bnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmls
ZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbGxlY3QgQ2FudmFzIFByb2Zp
bGUiKSk7CisgICAgdGhpcy5fcmVjb3JkaW5nID0gZmFsc2U7CisgICAgdGhpcy5fcHJvZmlsZVVp
ZCA9IDE7CisgICAgV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVUeXBlLmluc3RhbmNlID0gdGhp
czsKK30KKworV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVUeXBlLlR5cGVJZCA9ICJDQU5WQVMi
OworCitXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGUucHJvdG90eXBlID0geworICAgIGdl
dCBidXR0b25Ub29sdGlwKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRpbmcg
PyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3AgQ2FudmFzIHByb2ZpbGluZy4iKSA6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU3RhcnQgQ2FudmFzIHByb2ZpbGluZy4iKTsKKyAgICB9LAorCisg
ICAgYnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3Jl
Y29yZGluZykKKyAgICAgICAgICAgIHRoaXMuc3RvcFJlY29yZGluZ1Byb2ZpbGUoKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgdGhpcy5zdGFydFJlY29yZGluZ1Byb2ZpbGUoKTsKKyAgICB9
LAorCisgICAgZ2V0IHRyZWVJdGVtVGl0bGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ0FOVkFTIFBST0ZJTEVTIik7CisgICAgfSwKKworICAgIGdldCBk
ZXNjcmlwdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDYW52YXMgcHJvZmlsZXMgYWxsb3cgeW91IHRvIGV4YW1pbmUgZHJhd2luZyBvcGVyYXRpb25z
IG9uIGNhbnZhcyBlbGVtZW50cy4iKTsKKyAgICB9LAorCisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHRoaXMuX3Byb2ZpbGVVaWQgPSAxOworICAgIH0sCisKKyAgICBuZXh0
UHJvZmlsZUlkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcHJvZmls
ZVVpZCsrOworICAgIH0sCisKKyAgICBpc1JlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRpbmc7CisgICAgfSwKKworICAgIHNldFJl
Y29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQorICAgIHsKKyAgICAgICAgdGhp
cy5fcmVjb3JkaW5nID0gaXNQcm9maWxpbmc7CisgICAgfSwKKworICAgIHN0YXJ0UmVjb3JkaW5n
UHJvZmlsZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gdHJ1
ZTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgd2hlcmUgd2Ugd291bGQgYXNrIHRoZSBDYW52
YXMgQWdlbnQgdG8gcHJvZmlsZS4KKyAgICB9LAorCisgICAgc3RvcFJlY29yZGluZ1Byb2ZpbGU6
IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gZmFs
c2U7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdoZXJlIHdlIHdvdWxkIGFzayB0aGUgQ2Fu
dmFzIEFnZW50IHRvIHN0b3AgcHJvZmlsaW5nLgorICAgICAgICAvLyBGb3Igbm93IHBhc3MgaW4g
YW4gZW1wdHkgYXJyYXkgb2YgY2FudmFzIGNhbGxzLgorICAgICAgICBjYWxsYmFjayhudWxsLCB7
IGRhdGE6IFtdIH0pOworICAgIH0sCisKKyAgICBjcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnRGb3JQ
cm9maWxlOiBmdW5jdGlvbihwcm9maWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuUHJvZmlsZVNpZGViYXJUcmVlRWxlbWVudChwcm9maWxlLCBwcm9maWxlLnRpdGxl
LCAicHJvZmlsZS1zaWRlYmFyLXRyZWUtaXRlbSIpOworICAgIH0sCisKKyAgICBjcmVhdGVWaWV3
OiBmdW5jdGlvbihwcm9maWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuQ2FudmFzUHJvZmlsZVZpZXcocHJvZmlsZSk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3Iu
Q2FudmFzUHJvZmlsZVR5cGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Qcm9m
aWxlVHlwZS5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9DYW52YXNQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NhbnZhc1Byb2ZpbGVWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyODdkOGZkOWU5
YzYxMjJiMWRiMGJiNDZiMzVmZWYyMmU2ZTc4YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DYW52YXNQcm9maWxlVmlldy5qcwpAQCAtMCww
ICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1dlYkluc3BlY3Rvci5DYW52YXNEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihwcm9maWxlVmlldywg
ZGF0YSkKK3sKKyAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLmNhbGwodGhpcywgZGF0YSwg
ZmFsc2UpOworICAgIHRoaXMuX3Byb2ZpbGVWaWV3ID0gcHJvZmlsZVZpZXc7Cit9CisKK1dlYklu
c3BlY3Rvci5DYW52YXNEYXRhR3JpZE5vZGUucHJvdG90eXBlID0geworICAgIGdldCBkYXRhKCkK
KyAgICB7CisgICAgICAgIHZhciBkYXRhID0ge307CisgICAgICAgIHJldHVybiBkYXRhOworICAg
IH0sCisKKyAgICBnZXQgcmF3RGF0YSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZGF0
YTsKKyAgICB9LAorCisgICAgY3JlYXRlQ2VsbDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIHZhciBjZWxsID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90
b3R5cGUuY3JlYXRlQ2VsbC5jYWxsKHRoaXMsIGNvbHVtbklkZW50aWZpZXIpOworICAgICAgICBj
ZWxsLnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgaWYgKHRoaXMucmF3RGF0YS51cmwpIHsK
KyAgICAgICAgICAgIHZhciB3cmFwcGVyRGl2ID0gY2VsbC5jcmVhdGVDaGlsZCgiZGl2Iik7Cisg
ICAgICAgICAgICB3cmFwcGVyRGl2LmFwcGVuZENoaWxkKHRoaXMuX2xpbmtpZnlMb2NhdGlvbih0
aGlzLnJhd0RhdGEudXJsLCB0aGlzLnJhd0RhdGEubGluZU51bWJlcikpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIGNlbGw7CisgICAgfSwKKworICAgIF9saW5raWZ5TG9jYXRpb246IGZ1
bmN0aW9uKHVybCwgbGluZU51bWJlcikKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0
b3IubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwgMCk7CisgICAgfQorfQorCitXZWJJ
bnNwZWN0b3IuQ2FudmFzRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZTsKKworV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2Zp
bGVWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZSkKK3sKKyAgICBjb25zb2xlLmFzc2VydChwcm9maWxl
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVPYmplY3QpOworCisgICAgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVWaWV3LmNhbGwodGhpcywgcHJvZmlsZSk7Cit9CisKK1dlYkluc3Bl
Y3Rvci5DYW52YXNQcm9maWxlVmlldy5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5DYW52YXNQcm9maWxlVmlldywKKworICAgIHVwZGF0ZUxheW91dDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuZGF0YUdyaWQpCisgICAgICAgICAgICB0aGlz
LmRhdGFHcmlkLnVwZGF0ZUxheW91dCgpOworICAgIH0sCisKKyAgICBnZXQgcmVjb3JkaW5nVGl0
bGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjb3Jk
aW5nIENhbnZhcyBQcm9maWxlXHUyMDI2Iik7CisgICAgfSwKKworICAgIGRpc3BsYXlQcm9maWxl
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgY29sdW1ucyA9IHsgIm51bWJlciI6IHsg
dGl0bGU6ICIjIiwgd2lkdGg6ICI1JSIsIHNvcnRhYmxlOiBmYWxzZSB9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgInNvdXJjZSI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2Fs
bCIpLCB3aWR0aDogIjc1JSIsIHNvcnRhYmxlOiBmYWxzZSwgZGlzY2xvc3VyZTogdHJ1ZSB9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uIjogeyB0aXRsZTogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJMb2NhdGlvbiIpLCB3aWR0aDogIjIwJSIsIHNvcnRhYmxlOiBmYWxzZSB9IH07
CisKKyAgICAgICAgdGhpcy5kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29s
dW1ucyk7CisgICAgICAgIHRoaXMuZGF0YUdyaWQuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjYW52
YXMtcHJvZmlsZS12aWV3Iik7CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuZGF0YUdyaWQuZWxlbWVudCk7CisgICAgICAgIHRoaXMuZGF0YUdyaWQudXBkYXRlTGF5b3V0
KCk7CisKKyAgICAgICAgdGhpcy5fY3JlYXRlUHJvZmlsZU5vZGVzKCk7CisgICAgICAgIHRoaXMu
X3NvcnRQcm9maWxlKCk7CisgICAgfSwKKworICAgIF9jcmVhdGVQcm9maWxlTm9kZXM6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBkYXRhID0gdGhpcy5wcm9maWxlLmRhdGE7CisgICAg
ICAgIGlmICghZGF0YSkgeworICAgICAgICAgICAgLy8gVGhlIHByb2ZpbGVyIG1heSBoYXZlIGJl
ZW4gdGVybWluYXRlZCB3aXRoIHRoZSAiQ2xlYXIgYWxsIHByb2ZpbGVzLiIgYnV0dG9uLgorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5wcm9maWxlLmNoaWxk
cmVuID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkNhbnZhc0RhdGFHcmlk
Tm9kZSh0aGlzLCBkYXRhW2ldKTsKKyAgICAgICAgICAgIHRoaXMucHJvZmlsZS5jaGlsZHJlbi5w
dXNoKG5vZGUpOworICAgICAgICB9CisgICAgfSwKKworICAgIHJlYnVpbGRHcmlkSXRlbXM6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsK
KworICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnByb2ZpbGUuY2hpbGRyZW47CisgICAgICAg
IHZhciBjb3VudCA9IGNoaWxkcmVuLmxlbmd0aDsKKworICAgICAgICBmb3IgKHZhciBpbmRleCA9
IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpCisgICAgICAgICAgICB0aGlzLmRhdGFHcmlkLmFw
cGVuZENoaWxkKGNoaWxkcmVuW2luZGV4XSk7CisgICAgfSwKKworICAgIHJlZnJlc2hEYXRhOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmRhdGFHcmlkLmNoaWxk
cmVuWzBdOworICAgICAgICB3aGlsZSAoY2hpbGQpIHsKKyAgICAgICAgICAgIGNoaWxkLnJlZnJl
c2goKTsKKyAgICAgICAgICAgIGNoaWxkID0gY2hpbGQudHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwg
bnVsbCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX3NvcnRQcm9maWxlOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB0aGlzLnJlYnVpbGRHcmlkSXRlbXMoKTsKKyAgICB9CisK
K30KKworV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuUHJvZmlsZVZpZXcucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Vmlldy5qcwppbmRleCBjMzU4NGY2MDFl
YTkyZDI3MzU5YWRmNTM2Njc2OGJiMjEzYTE3MDFlLi5mNWI2ZmYzZjNlMGI4MjUwODUyZTY0Yjk5
NmJiNTc2YjQ0MGY4MjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250ZW50Vmlldy5qcwpAQCAtNjUsMTAgKzY1LDEzIEBAIFdlYkluc3BlY3Rvci5D
b250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogCiAgICAgICAgIGlmIChy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmls
ZU9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRQ
cm9maWxlVmlldyhyZXByZXNlbnRlZE9iamVjdCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2Zp
bGVPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
clByb2ZpbGVWaWV3KHJlcHJlc2VudGVkT2JqZWN0KTsKIAorICAgICAgICBpZiAocmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZU9iamVjdCkKKyAg
ICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNhbnZhc1Byb2ZpbGVWaWV3KHJlcHJl
c2VudGVkT2JqZWN0KTsKKwogICAgICAgICBpZiAodHlwZW9mIHJlcHJlc2VudGVkT2JqZWN0ID09
PSAic3RyaW5nIiB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFN0cmluZykKICAgICAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlRleHRDb250ZW50VmlldyhyZXByZXNlbnRl
ZE9iamVjdCk7CiAKQEAgLTEyMSw2ICsxMjQsOCBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcu
aXNWaWV3YWJsZSA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlT2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZU9i
amVjdCkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKHR5cGVvZiByZXByZXNlbnRlZE9i
amVjdCA9PT0gInN0cmluZyIgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBTdHJpbmcp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbnN0cnVtZW50U2lkZWJh
clBhbmVsLmpzCmluZGV4IDY0MWU4YmI2Y2I2YWEwMGI4N2JlNjM5N2ZlODhiZWFmZWQwZDU1NjUu
LjA0YmUyOThhNWUzY2E1NGU5ZmM3ODg2M2M4NDViMTI0ZDJmN2ExMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zdHJ1bWVudFNp
ZGViYXJQYW5lbC5qcwpAQCAtMTA1LDkgKzEwNSwxNSBAQCBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVu
dFNpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICBzdGFydENTU1NlbGVjdG9yUHJvZmlsZU9w
dGlvbi50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhcnQgQ1NTIFNlbGVj
dG9yIFByb2ZpbGUiKTsKICAgICBzdGFydENTU1NlbGVjdG9yUHJvZmlsZU9wdGlvbi52YWx1ZSA9
IFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlN0YXJ0Q1NTU2VsZWN0b3JQcm9m
aWxlVmFsdWU7CiAgICAgc3RhcnRDU1NTZWxlY3RvclByb2ZpbGVPcHRpb24uc2VsZWN0ZWQgPSBm
YWxzZTsKLSAgICAKKworICAgIHZhciBzdGFydENhbnZhc1Byb2ZpbGVPcHRpb24gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICBzdGFydENhbnZhc1Byb2ZpbGVPcHRpb24u
dGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IENhbnZhcyBQcm9maWxl
Iik7CisgICAgc3RhcnRDYW52YXNQcm9maWxlT3B0aW9uLnZhbHVlID0gV2ViSW5zcGVjdG9yLklu
c3RydW1lbnRTaWRlYmFyUGFuZWwuU3RhcnRDYW52YXNQcm9maWxlVmFsdWU7CisgICAgc3RhcnRD
YW52YXNQcm9maWxlT3B0aW9uLnNlbGVjdGVkID0gZmFsc2U7CisKICAgICB0aGlzLl9yZWNvcmRQ
cm9maWxlR2x5cGhFbGVtZW50LmFkZChzdGFydEphdmFTY3JpcHRQcm9maWxlT3B0aW9uKTsKICAg
ICB0aGlzLl9yZWNvcmRQcm9maWxlR2x5cGhFbGVtZW50LmFkZChzdGFydENTU1NlbGVjdG9yUHJv
ZmlsZU9wdGlvbik7CisgICAgdGhpcy5fcmVjb3JkUHJvZmlsZUdseXBoRWxlbWVudC5hZGQoc3Rh
cnRDYW52YXNQcm9maWxlT3B0aW9uKTsKIAogICAgIHByb2ZpbGVzVGl0bGVCYXJFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX3JlY29yZFByb2ZpbGVHbHlwaEVsZW1lbnQpOwogCkBAIC0xNTIsNiAr
MTU4LDcgQEAgV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU2NyaXB0SWNvblN0
eWxlQ2xhc3MgPSAic2NyaXB0LWljb24iOwogV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFy
UGFuZWwuUHJvZmlsZUljb25TdHlsZUNsYXNzID0gInByb2ZpbGUtaWNvbiI7CiBXZWJJbnNwZWN0
b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdGFydEphdmFTY3JpcHRQcm9maWxlVmFsdWUgPSAi
c3RhcnQtamF2YXNjcmlwdC1wcm9maWxlIjsKIFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJh
clBhbmVsLlN0YXJ0Q1NTU2VsZWN0b3JQcm9maWxlVmFsdWUgPSAic3RhcnQtY3NzLXNlbGVjdG9y
LXByb2ZpbGUiOworV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU3RhcnRDYW52
YXNQcm9maWxlVmFsdWUgPSAic3RhcnQtY2FudmFzLXByb2ZpbGUiOwogCiBXZWJJbnNwZWN0b3Iu
SW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLApAQCAtMjc3LDcgKzI4NCw3IEBAIFdl
Ykluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAg
ICAgICAgIHRoaXMuX3JlY29yZFByb2ZpbGVHbHlwaEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShX
ZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5SZWNvcmRHbHlwaFJlY29yZGluZ0Zv
cmNlZFN0eWxlQ2xhc3MpOwogCi0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFn
ZXIuaXNQcm9maWxpbmdKYXZhU2NyaXB0KCkgfHwgV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2Vy
LmlzUHJvZmlsaW5nQ1NTU2VsZWN0b3JzKCkpCisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IucHJv
ZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdKYXZhU2NyaXB0KCkgfHwgV2ViSW5zcGVjdG9yLnByb2Zp
bGVNYW5hZ2VyLmlzUHJvZmlsaW5nQ1NTU2VsZWN0b3JzKCkgfHwgV2ViSW5zcGVjdG9yLnByb2Zp
bGVNYW5hZ2VyLmlzUHJvZmlsaW5nQ2FudmFzKCkpCiAgICAgICAgICAgICB0aGlzLl9yZWNvcmRQ
cm9maWxlU3RhdHVzRWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U3RvcCBQcm9maWxpbmciKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fcmVjb3Jk
UHJvZmlsZVN0YXR1c0VsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlN0YXJ0IFByb2ZpbGluZyIpOwpAQCAtMzAwLDcgKzMwNyw3IEBAIFdlYkluc3BlY3Rvci5JbnN0
cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgCiAgICAgICAgIC8vIFdl
IGRvbid0IHdhbnQgdG8gc2hvdyB0aGUgc2VsZWN0IGlmIHRoZSB1c2VyIGlzIGN1cnJlbnRseSBw
cm9maWxpbmcuIEluIHRoYXQgY2FzZSwKICAgICAgICAgLy8gdGhlIHVzZXIgc2hvdWxkIGp1c3Qg
YmUgYWJsZSB0byBjbGljayB0aGUgcmVjb3JkIGJ1dHRvbiB0byBzdG9wIHByb2ZpbGluZy4KLSAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5pc1Byb2ZpbGluZ0phdmFTY3Jp
cHQoKSB8fCBXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdDU1NTZWxlY3Rv
cnMoKSkKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5pc1Byb2ZpbGlu
Z0phdmFTY3JpcHQoKSB8fCBXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdD
U1NTZWxlY3RvcnMoKSB8fCBXZWJJbnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuaXNQcm9maWxpbmdD
YW52YXMoKSkKICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgLy8gV2hlbiBhIHNlbGVjdCBpcyBvcGVuZWQsIGEgY2xpY2sgZXZl
bnQgd2lsbCBiZSBmaXJlZCB3aGVuIHRoZSBzZWxlY3QgaXMgY2xvc2VkLApAQCAtMzI0LDYgKzMz
MSw4IEBAIFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wcm9maWxlTWFuYWdlci5zdG9wUHJvZmlsaW5nSmF2
YVNjcmlwdCgpOwogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLmlzUHJv
ZmlsaW5nQ1NTU2VsZWN0b3JzKCkpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucHJvZmlsZU1h
bmFnZXIuc3RvcFByb2ZpbGluZ0NTU1NlbGVjdG9ycygpOworICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLnByb2ZpbGVNYW5hZ2VyLmlzUHJvZmlsaW5nQ2FudmFzKCkpCisgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IucHJvZmlsZU1hbmFnZXIuc3RvcFByb2ZpbGluZ0NhbnZhcygpOwogICAgIH0sCiAK
ICAgICBfcHJvZmlsZVR5cGVXYXNTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC0zMzEsMTUg
KzM0MCwxNiBAQCBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHZhciBzZWxlY3RlZEluZGV4ID0gdGhpcy5fcmVjb3JkUHJvZmlsZUdseXBo
RWxlbWVudC5zZWxlY3RlZEluZGV4OwogICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA9PT0gLTEp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgICAgIHZhciBzZWxlY3RlZFZh
bHVlID0gdGhpcy5fcmVjb3JkUHJvZmlsZUdseXBoRWxlbWVudC5vcHRpb25zW3NlbGVjdGVkSW5k
ZXhdLnZhbHVlOwogICAgICAgICBpZiAoc2VsZWN0ZWRWYWx1ZSA9PT0gV2ViSW5zcGVjdG9yLklu
c3RydW1lbnRTaWRlYmFyUGFuZWwuU3RhcnRKYXZhU2NyaXB0UHJvZmlsZVZhbHVlKQogICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLnN0YXJ0UHJvZmlsaW5nSmF2YVNjcmlw
dCgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlbGVjdGVk
VmFsdWUgPT09IFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlN0YXJ0Q1NTU2Vs
ZWN0b3JQcm9maWxlVmFsdWUpOworICAgICAgICBlbHNlIGlmIChzZWxlY3RlZFZhbHVlID09PSBX
ZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5TdGFydENTU1NlbGVjdG9yUHJvZmls
ZVZhbHVlKQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnByb2ZpbGVNYW5hZ2VyLnN0YXJ0UHJv
ZmlsaW5nQ1NTU2VsZWN0b3JzKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQoc2VsZWN0ZWRWYWx1ZSA9PT0gV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFy
UGFuZWwuU3RhcnRDYW52YXNQcm9maWxlVmFsdWUpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LnByb2ZpbGVNYW5hZ2VyLnN0YXJ0UHJvZmlsaW5nQ2FudmFzKCk7CiAgICAgICAgIH0KLSAgICAg
ICAgCiAgICAgfSwKIAogICAgIF9yZWNvcmRpbmdTdGFydGVkOiBmdW5jdGlvbihldmVudCkKQEAg
LTQ3OCw2ICs0ODgsNyBAQCBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIAogICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIu
Y29udGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxDb250ZW50Vmlld3NPZlByb3RvdHlwZShXZWJJ
bnNwZWN0b3IuSmF2YVNjcmlwdFByb2ZpbGVWaWV3KTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmNv
bnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVudFZpZXdzT2ZQ
cm90b3R5cGUoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcpOworICAgICAgICBX
ZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxD
b250ZW50Vmlld3NPZlByb3RvdHlwZShXZWJJbnNwZWN0b3IuQ2FudmFzUHJvZmlsZVZpZXcpOwog
ICAgICAgICAKICAgICAgICAgdGhpcy51cGRhdGVFbXB0eUNvbnRlbnRQbGFjZWhvbGRlcihXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIk5vIFJlY29yZGVkIFByb2ZpbGVzIikpOwogICAgIH0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggMzEzZGVl
YmQxYWQ2ZWNkOTVmYTU1NWI5NWNhMmVjYjA3ZTU1MGY2Ny4uNGUzYzNmOTI0NzFkMmU4ZGNjNWI0
MzUxYjgzNmJhMzFlNDBjNTI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01haW4uaHRtbApAQCAtMzM1LDkgKzMzNSwxMiBAQAogICAgIDxzY3JpcHQgc3JjPSJK
YXZhU2NyaXB0UHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDU1NT
ZWxlY3RvclByb2ZpbGVUeXBlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ1NTU2Vs
ZWN0b3JQcm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNhbnZhc1By
b2ZpbGVUeXBlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ2FudmFzUHJvZmlsZVZp
ZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm9maWxlT2JqZWN0LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iSmF2YVNjcmlwdFByb2ZpbGVPYmplY3QuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJDU1NTZWxlY3RvclByb2ZpbGVPYmplY3QuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJDYW52YXNQcm9maWxlT2JqZWN0LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iRGVidWdnZXJTaWRlYmFyUGFuZWwuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJCcmVha3BvaW50VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJCcmVha3BvaW50LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb2ZpbGVNYW5hZ2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvZmlsZU1hbmFnZXIuanMKaW5kZXggZDVjNTJi
MTVmYTFiOGZkZTVhNzZiNTg5Zjk3NmVjMGQ3MWJiOTQ1MC4uNTZlNTI2M2EwZjEwMGFlNzI0N2Vi
ZDliZDgzMGRmMzIwMmYwZmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvZmlsZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvZmlsZU1hbmFnZXIuanMKQEAgLTI5LDYgKzI5LDcgQEAgV2ViSW5z
cGVjdG9yLlByb2ZpbGVNYW5hZ2VyID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5famF2YVNjcmlw
dFByb2ZpbGVUeXBlID0gbmV3IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0UHJvZmlsZVR5cGU7CiAg
ICAgdGhpcy5fY3NzU2VsZWN0b3JQcm9maWxlVHlwZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTU2Vs
ZWN0b3JQcm9maWxlVHlwZTsKKyAgICB0aGlzLl9jYW52YXNQcm9maWxlVHlwZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuQ2FudmFzUHJvZmlsZVR5cGU7CiAKICAgICBQcm9maWxlckFnZW50LmVuYWJsZSgp
OwogICAgIFByb2ZpbGVyQWdlbnQuZ2V0UHJvZmlsZUhlYWRlcnMoKTsKQEAgLTYwLDYgKzYxLDcg
QEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0
aGlzLl9yZWNvcmRpbmdKYXZhU2NyaXB0UHJvZmlsZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX3Jl
Y29yZGluZ0NTU1NlbGVjdG9yUHJvZmlsZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3JlY29yZGlu
Z0NhbnZhc1Byb2ZpbGUgPSBudWxsOwogCiAgICAgICAgIHRoaXMuX2lzUHJvZmlsaW5nID0gZmFs
c2U7CiAKQEAgLTEyMiw2ICsxMjQsNDMgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY3NzU2VsZWN0b3JQcm9maWxlVHlwZS5zdG9wUmVj
b3JkaW5nUHJvZmlsZShjc3NQcm9maWxpbmdTdG9wcGVkLmJpbmQodGhpcykpOwogICAgIH0sCiAK
KyAgICBpc1Byb2ZpbGluZ0NhbnZhczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2NhbnZhc1Byb2ZpbGVUeXBlLmlzUmVjb3JkaW5nUHJvZmlsZSgpOworICAgIH0sCisK
KyAgICBzdGFydFByb2ZpbGluZ0NhbnZhczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhp
cy5fY2FudmFzUHJvZmlsZVR5cGUuc3RhcnRSZWNvcmRpbmdQcm9maWxlKCk7CisKKyAgICAgICAg
dmFyIGlkID0gdGhpcy5fY2FudmFzUHJvZmlsZVR5cGUubmV4dFByb2ZpbGVJZCgpOworICAgICAg
ICB0aGlzLl9yZWNvcmRpbmdDYW52YXNQcm9maWxlID0gbmV3IFdlYkluc3BlY3Rvci5DYW52YXNQ
cm9maWxlT2JqZWN0KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FudmFzIFByb2ZpbGUgJWQiKS5m
b3JtYXQoaWQpLCBpZCwgdHJ1ZSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5FdmVudC5Qcm9maWxlV2FzQWRkZWQsIHtw
cm9maWxlOiB0aGlzLl9yZWNvcmRpbmdDYW52YXNQcm9maWxlfSk7CisKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2ZW50
LlByb2ZpbGluZ1N0YXJ0ZWQpOworICAgIH0sCisKKyAgICBzdG9wUHJvZmlsaW5nQ2FudmFzOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICBmdW5jdGlvbiBjYW52YXNQcm9maWxpbmdTdG9wcGVk
KGVycm9yLCBwcm9maWxlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9y
ZWNvcmRpbmdDYW52YXNQcm9maWxlKTsKKworICAgICAgICAgICAgdGhpcy5fcmVjb3JkaW5nQ2Fu
dmFzUHJvZmlsZS5kYXRhID0gcHJvZmlsZS5kYXRhOworICAgICAgICAgICAgdGhpcy5fcmVjb3Jk
aW5nQ2FudmFzUHJvZmlsZS5yZWNvcmRpbmcgPSBmYWxzZTsKKworICAgICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2ZW50
LlByb2ZpbGVXYXNVcGRhdGVkLCB7cHJvZmlsZTogdGhpcy5fcmVjb3JkaW5nQ2FudmFzUHJvZmls
ZX0pOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLlByb2ZpbGVNYW5hZ2VyLkV2ZW50LlByb2ZpbGluZ0VuZGVkLCB7cHJvZmlsZTogdGhpcy5f
cmVjb3JkaW5nQ2FudmFzUHJvZmlsZX0pOworCisgICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdD
YW52YXNQcm9maWxlID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2NhbnZhc1By
b2ZpbGVUeXBlLnN0b3BSZWNvcmRpbmdQcm9maWxlKGNhbnZhc1Byb2ZpbGluZ1N0b3BwZWQuYmlu
ZCh0aGlzKSk7CisgICAgfSwKKwogICAgIHByb2ZpbGVXYXNTdGFydGVkRnJvbUNvbnNvbGU6IGZ1
bmN0aW9uKHRpdGxlKQogICAgIHsKICAgICAgICAgdGhpcy5zZXRSZWNvcmRpbmdKYXZhU2NyaXB0
UHJvZmlsZSh0cnVlLCB0cnVlKTsKQEAgLTIxMSw2ICsyNTAsOSBAQCBXZWJJbnNwZWN0b3IuUHJv
ZmlsZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3JlY29y
ZGluZ0NTU1NlbGVjdG9yUHJvZmlsZSkgewogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVNYW5hZ2VyLkV2ZW50LlByb2ZpbGluZ0lu
dGVycnVwdGVkLCB7cHJvZmlsZTogdGhpcy5fcmVjb3JkaW5nQ1NTU2VsZWN0b3JQcm9maWxlfSk7
CiAgICAgICAgICAgICB0aGlzLl9jc3NTZWxlY3RvclByb2ZpbGVUeXBlLnNldFJlY29yZGluZ1By
b2ZpbGUoZmFsc2UpOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3JlY29yZGluZ0NhbnZhc1By
b2ZpbGUpIHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5Qcm9maWxlTWFuYWdlci5FdmVudC5Qcm9maWxpbmdJbnRlcnJ1cHRlZCwge3Byb2Zp
bGU6IHRoaXMuX3JlY29yZGluZ0NhbnZhc1Byb2ZpbGV9KTsKKyAgICAgICAgICAgIHRoaXMuX2Nh
bnZhc1Byb2ZpbGVUeXBlLnNldFJlY29yZGluZ1Byb2ZpbGUoZmFsc2UpOwogICAgICAgICB9CiAg
ICAgfSwKIApAQCAtMjIyLDYgKzI2NCw4IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlTWFuYWdlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnN0YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdCgp
OwogICAgICAgICBlbHNlIGlmICh0aGlzLl9yZWNvcmRpbmdDU1NTZWxlY3RvclByb2ZpbGUpCiAg
ICAgICAgICAgICB0aGlzLnN0YXJ0UHJvZmlsaW5nQ1NTU2VsZWN0b3JzKCk7CisgICAgICAgIGVs
c2UgaWYgKHRoaXMuX3JlY29yZGluZ0NhbnZhc1Byb2ZpbGUpCisgICAgICAgICAgICB0aGlzLnN0
YXJ0UHJvZmlsaW5nQ2FudmFzKCk7CiAgICAgfQogfTsKIAo=
</data>
<flag name="review"
          id="230390"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>