<?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>36965</bug_id>
          
          <creation_ts>2010-04-01 09:01:44 -0700</creation_ts>
          <short_desc>Web Inspector: start editing DOM and styles on click-and-pause.</short_desc>
          <delta_ts>2013-05-29 01:21:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (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>
          
          <blocked>36727</blocked>
    
    <blocked>116924</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>me</cc>
    
    <cc>rik</cc>
    
    <cc>rtakacs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>207186</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-01 09:01:44 -0700</bug_when>
    <thetext>Also couple of bugfixes and startEditing utility improvement. Not sure how valuable this change is though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207187</commentid>
    <comment_count>1</comment_count>
      <attachid>52301</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-01 09:02:46 -0700</bug_when>
    <thetext>Created attachment 52301
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207209</commentid>
    <comment_count>2</comment_count>
      <attachid>52301</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2010-04-01 09:46:23 -0700</bug_when>
    <thetext>Comment on attachment 52301
[PATCH] Proposed change.


&gt; +        this._clickAndPauseHelper = new ClickAndPauseHelper(this.listItemElement, this._clickAndPause.bind(this), true, true);

I think a better name for this would be ClickAndPauseGestureRecognizer.

&gt; -        if (this.isEventWithinDisclosureTriangle(event))
&gt; -            return;

Why isn&apos;t this needed anymore?

&gt;      _dblclickSelector: function(event)
&gt;      {
&gt; +        this._clickAndPauseHelper.dblClick(event);

Why do you need to call dblClick when ClickAndPauseHelper listens for dblclick?


&gt;      ondblclick: function(event)
&gt;      {
&gt; +        this._clickAndPauseHelper.dblClick(event);

Ditto.


&gt; +function ClickAndPauseHelper(node, listener, externalClickDispatch, externalDblClickDispatch)

I&apos;d like to see this in a new file. Utilities.js should just be DOM additions and simple functions. No state machines.

&gt; +    if (!externalClickDispatch)
&gt; +    if (!externalDblClickDispatch)

Oh I guess this is why dblClick needs called.

&gt; +    click: function(e)

I think handleClick or processClick would be better names.

&gt; +        this._clickX = e.pageX;
&gt; +        this._clickY = e.pageY;

I don&apos;t think you need these, see below.

&gt; +        this._timer = setTimeout(this._fireEvent.bind(this), 300);

You want to call reset before making a new timer, if the use clicks twice but isn&apos;t a double click.

&gt; +    dblClick: function(e)

I think handleDoubleClick or processDoubleClick would be better names.

&gt; +    _mouseMove: function(e)
&gt; +    {
&gt; +        if (this._clickX !== e.pageX || this._clickY !== e.pageY)
&gt; +            this.reset();
&gt; +    },

Resetting on any mouse movement is bad, since some people are twitchy with the mouse after a click. Either have some slop room (like 5-10 pixels in any direction) or remove this altogether. The Finder allows you to move the mouse any distance after the click, so I say remove the mousemove code.

We are not fully safe from click-drag to select, because you operate on click not mouse down. So you can click then quickly mouse down and darg and editing wont be prevented. So I thin you need to call reset on mousedown too. You will also need to make sure the mouseup after drag is not counded as a click, so it wont start the timer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207213</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-01 09:54:20 -0700</bug_when>
    <thetext>Thanks for the review. I&apos;ll comment on things that I think are right and will fix the rest.

(In reply to comment #2)
&gt; (From update of attachment 52301 [details])
&gt; 
&gt; &gt; +        this._clickAndPauseHelper = new ClickAndPauseHelper(this.listItemElement, this._clickAndPause.bind(this), true, true);
&gt; 
&gt; I think a better name for this would be ClickAndPauseGestureRecognizer.
&gt; 

Ok.

&gt; &gt; -        if (this.isEventWithinDisclosureTriangle(event))
&gt; &gt; -            return;
&gt; 
&gt; Why isn&apos;t this needed anymore?

That&apos;s because we now get this event from TreeElement and this check has already been made.

&gt; 
&gt; &gt;      _dblclickSelector: function(event)
&gt; &gt;      {
&gt; &gt; +        this._clickAndPauseHelper.dblClick(event);
&gt; 
&gt; Why do you need to call dblClick when ClickAndPauseHelper listens for dblclick?
&gt; 

ClickAndPauseHelper is universal and you can tell it to register listeners for click and doubleclick or you&apos;d like to reuse existing ones. It is important to be able to reuse existing ones in order to stop propagation exactly when it is needed.

&gt; 
&gt; &gt;      ondblclick: function(event)
&gt; &gt;      {
&gt; &gt; +        this._clickAndPauseHelper.dblClick(event);
&gt; 
&gt; Ditto.

See above.

&gt; 
&gt; 
&gt; &gt; +function ClickAndPauseHelper(node, listener, externalClickDispatch, externalDblClickDispatch)
&gt; 
&gt; I&apos;d like to see this in a new file. Utilities.js should just be DOM additions
&gt; and simple functions. No state machines.
&gt; 

Ok, although this is a small thingy. It looks alike startEditing, so we might want to extract them into some EditingUtilities.js. Ok?

&gt; &gt; +    if (!externalClickDispatch)
&gt; &gt; +    if (!externalDblClickDispatch)
&gt; 
&gt; Oh I guess this is why dblClick needs called.
&gt; 

Yes.

&gt; &gt; +    click: function(e)
&gt; 
&gt; I think handleClick or processClick would be better names.
&gt;

Ok.
 
&gt; &gt; +        this._clickX = e.pageX;
&gt; &gt; +        this._clickY = e.pageY;
&gt; 
&gt; I don&apos;t think you need these, see below.

I&apos;ll experiment with no reset on move.

&gt; 
&gt; &gt; +        this._timer = setTimeout(this._fireEvent.bind(this), 300);
&gt; 
&gt; You want to call reset before making a new timer, if the use clicks twice but
&gt; isn&apos;t a double click.
&gt; 

Ok.

&gt; &gt; +    dblClick: function(e)
&gt; 
&gt; I think handleDoubleClick or processDoubleClick would be better names.
&gt; 

Ok.

&gt; &gt; +    _mouseMove: function(e)
&gt; &gt; +    {
&gt; &gt; +        if (this._clickX !== e.pageX || this._clickY !== e.pageY)
&gt; &gt; +            this.reset();
&gt; &gt; +    },
&gt; 
&gt; Resetting on any mouse movement is bad, since some people are twitchy with the
&gt; mouse after a click. Either have some slop room (like 5-10 pixels in any
&gt; direction) or remove this altogether. The Finder allows you to move the mouse
&gt; any distance after the click, so I say remove the mousemove code.
&gt; 
&gt; We are not fully safe from click-drag to select, because you operate on click
&gt; not mouse down. So you can click then quickly mouse down and darg and editing
&gt; wont be prevented. So I thin you need to call reset on mousedown too. You will
&gt; also need to make sure the mouseup after drag is not counded as a click, so it
&gt; wont start the timer.

I&apos;ll try to test and see where it can fail, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207222</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2010-04-01 10:09:33 -0700</bug_when>
    <thetext>(In reply to comment #3)

&gt; &gt; &gt; +function ClickAndPauseHelper(node, listener, externalClickDispatch, externalDblClickDispatch)
&gt; &gt; 
&gt; &gt; I&apos;d like to see this in a new file. Utilities.js should just be DOM additions
&gt; &gt; and simple functions. No state machines.
&gt; &gt; 
&gt; 
&gt; Ok, although this is a small thingy. It looks alike startEditing, so we might
&gt; want to extract them into some EditingUtilities.js. Ok?

EditingUtilities.js is a good idea. Right now editing isn&apos;t in utilities.js either it is in inspector.js. But moving it all to EditingUtilities.js is good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207357</commentid>
    <comment_count>5</comment_count>
      <attachid>52329</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-01 13:36:42 -0700</bug_when>
    <thetext>Created attachment 52329
[PATCH] Proposed change.

Addressed all the comments but could not get rid of the distance thing. Now only measures distance between mouse down and up, user can move mouse after the click and that won&apos;t affect the scheduled editing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207370</commentid>
    <comment_count>6</comment_count>
      <attachid>52329</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2010-04-01 13:50:52 -0700</bug_when>
    <thetext>Comment on attachment 52329
[PATCH] Proposed change.


&gt; -    WebInspector.currentFocusElement = element;
&gt; +    return {
&gt; +        cancel: editingCancelled.bind(element),
&gt; +        commit: editingCommitted.bind(element)
&gt; +    };

What is this change for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207372</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-01 13:54:38 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 52329 [details])
&gt; 
&gt; &gt; -    WebInspector.currentFocusElement = element;
&gt; &gt; +    return {
&gt; &gt; +        cancel: editingCancelled.bind(element),
&gt; &gt; +        commit: editingCommitted.bind(element)
&gt; &gt; +    };
&gt; 
&gt; What is this change for?

I was trying to implement edit with no delay in case user jumps from one attribute to another while editing single DOM element. At some point I needed to commit things fast, so I made startEditing return &apos;controller&apos; that allows committing / canceling programmatically. I then reverted the change related to the instant edit because it did not work well,  but decided to leave this thing in place. It looks useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207385</commentid>
    <comment_count>8</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2010-04-01 13:58:17 -0700</bug_when>
    <thetext>Should the WebInspector.currentFocusElement part stay though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207868</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-02 08:43:51 -0700</bug_when>
    <thetext>Landing part 1.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/front-end/ElementsTreeOutline.js
	M	WebCore/inspector/front-end/StylesSidebarPane.js
	M	WebCore/inspector/front-end/audits.css
	M	WebCore/inspector/front-end/inspector.css
	M	WebCore/inspector/front-end/inspector.js
	M	WebCore/inspector/front-end/treeoutline.js
Committed r57003</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207869</commentid>
    <comment_count>10</comment_count>
      <attachid>52329</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-02 08:44:57 -0700</bug_when>
    <thetext>Comment on attachment 52329
[PATCH] Proposed change.

This prepares everything for the click and pause, but does not enable it just yet. I&apos;d like to polish click and pause on sibling field while editing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246575</commentid>
    <comment_count>11</comment_count>
    <who name="Nikita Vasilyev">me</who>
    <bug_when>2010-07-05 04:57:32 -0700</bug_when>
    <thetext>Pavel, have you considered using custom event for that? I think it will make API cleaner. Just my two cents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894763</commentid>
    <comment_count>12</comment_count>
    <who name="Roland Takacs">rtakacs</who>
    <bug_when>2013-05-29 01:21:57 -0700</bug_when>
    <thetext>This patch is already in the trunk.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52301</attachid>
            <date>2010-04-01 09:02:46 -0700</date>
            <delta_ts>2010-04-01 13:36:42 -0700</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>click_and_pause</filename>
            <type>text/plain</type>
            <size>16698</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTFmMWNjYy4uZDI0ZDc1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wNC0wMSAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdGFydCBlZGl0aW5nIERPTSBhbmQg
c3R5bGVzIG9uIGNsaWNrLWFuZC1wYXVzZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NjUKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNUcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50
c1RyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0T25Nb3VzZURvd24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZGJsY2xpY2sp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl9j
bGlja0FuZFBhdXNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50
LnByb3RvdHlwZS5fc3RhcnRFZGl0aW5nVGFyZ2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhcnRFZGl0aW5nQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhcnRF
ZGl0aW5nVGV4dE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1l
bnQucHJvdG90eXBlLl9zdGFydEVkaXRpbmdUYWdOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhcnRFZGl0aW5nQXNIVE1MKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFu
ZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3Rv
dHlwZS5fY2xpY2tTZWxlY3Rvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
aWVzU2VjdGlvbi5wcm90b3R5cGUuX2NsaWNrQW5kUGF1c2VTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX2RibGNsaWNrU2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJv
dG90eXBlLl9zdGFydEVkaXRpbmdPbk1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5zdHlsZXMt
c2VsZWN0b3ItZWRpdGFibGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qczoKKyAgICAgICAgKFRyZWVFbGVtZW50
LnByb3RvdHlwZS5fYXR0YWNoKToKKyAgICAgICAgKFRyZWVFbGVtZW50LnRyZWVFbGVtZW50TW91
c2VEb3duKToKKyAgICAgICAgKFRyZWVFbGVtZW50LnByb3RvdHlwZS5zZWxlY3RPbk1vdXNlRG93
bik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanM6CisgICAgICAg
ICgpOgorCiAyMDEwLTAzLTMxICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCA5MTlkNTA3Li5lYzlm
OGUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVl
T3V0bGluZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVl
T3V0bGluZS5qcwpAQCAtNDcwLDggKzQ3MCw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24i
LCB0aGlzLm9ubW91c2Vkb3duLmJpbmQodGhpcyksIGZhbHNlKTsKLQogICAgICAgICBpZiAodGhp
cy5faG92ZXJlZCkgewogICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24oKTsKICAgICAg
ICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhvdmVyZWQiKTsKQEAg
LTQ4MCw2ICs0NzgsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTsKIAogICAgICAgICB0aGlzLl9wcmV2
ZW50Rm9sbG93aW5nTGlua3NPbkRvdWJsZUNsaWNrKCk7CisgICAgICAgIHRoaXMuX2NsaWNrQW5k
UGF1c2VIZWxwZXIgPSBuZXcgQ2xpY2tBbmRQYXVzZUhlbHBlcih0aGlzLmxpc3RJdGVtRWxlbWVu
dCwgdGhpcy5fY2xpY2tBbmRQYXVzZS5iaW5kKHRoaXMpLCB0cnVlLCB0cnVlKTsKICAgICB9LAog
CiAgICAgX3ByZXZlbnRGb2xsb3dpbmdMaW5rc09uRG91YmxlQ2xpY2s6IGZ1bmN0aW9uKCkKQEAg
LTY4NywxMyArNjg2LDE2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zdXBwcmVzc1JldmVhbEFuZFNlbGVj
dCA9IGZhbHNlOwogICAgIH0sCiAKLSAgICBvbm1vdXNlZG93bjogZnVuY3Rpb24oZXZlbnQpCisg
ICAgc2VsZWN0T25Nb3VzZURvd246IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKKyAgICAgICAgdmFy
IHdhc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDsKKyAgICAgICAgVHJlZUVsZW1lbnQucHJvdG90
eXBlLnNlbGVjdE9uTW91c2VEb3duLmNhbGwodGhpcywgZXZlbnQpOworCiAgICAgICAgIGlmICh0
aGlzLl9lZGl0aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0aGlzLmlz
RXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQpKQotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAod2FzU2VsZWN0ZWQpCisgICAgICAgICAgICB0aGlzLl9jbGlja0FuZFBh
dXNlSGVscGVyLmNsaWNrKGV2ZW50KTsKIAogICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5z
aG93SW5FbGVtZW50c1BhbmVsRW5hYmxlZCkgewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNo
b3dFbGVtZW50c1BhbmVsKCk7CkBAIC03MTAsMTMgKzcxMiwyMyBAQCBXZWJJbnNwZWN0b3IuRWxl
bWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9lZGl0aW5n
IHx8IHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBpZiAodGhpcy5fc3RhcnRFZGl0aW5nRnJvbUV2ZW50KGV2ZW50KSkKKyAgICAgICAgdGhpcy5f
Y2xpY2tBbmRQYXVzZUhlbHBlci5kYmxDbGljayhldmVudCk7CisKKyAgICAgICAgaWYgKHRoaXMu
X3N0YXJ0RWRpdGluZ1RhcmdldChldmVudC50YXJnZXQpKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuICYmICF0aGlzLmV4cGFuZGVkKQogICAgICAg
ICAgICAgdGhpcy5leHBhbmQoKTsKICAgICB9LAogCisgICAgX2NsaWNrQW5kUGF1c2U6IGZ1bmN0
aW9uKHRhcmdldCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9lZGl0aW5nIHx8IHRoaXMuX2Vs
ZW1lbnRDbG9zZVRhZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9zdGFy
dEVkaXRpbmdUYXJnZXQodGFyZ2V0KTsKKyAgICB9LAorCiAgICAgX2luc2VydEluTGFzdEF0dHJp
YnV0ZVBvc2l0aW9uOiBmdW5jdGlvbih0YWcsIG5vZGUpCiAgICAgewogICAgICAgICBpZiAodGFn
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIndlYmtpdC1odG1sLWF0dHJpYnV0ZSIpLmxlbmd0aCA+
IDApCkBAIC03MzIsNyArNzQ0LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwogICAgIH0sCiAK
LSAgICBfc3RhcnRFZGl0aW5nRnJvbUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfc3RhcnRF
ZGl0aW5nVGFyZ2V0OiBmdW5jdGlvbihldmVudFRhcmdldCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlICE9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Qp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC03NDAsMTkgKzc1MiwxOSBAQCBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnJlcHJl
c2VudGVkT2JqZWN0Lm5vZGVUeXBlICE9IE5vZGUuRUxFTUVOVF9OT0RFICYmIHRoaXMucmVwcmVz
ZW50ZWRPYmplY3Qubm9kZVR5cGUgIT0gTm9kZS5URVhUX05PREUpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgdmFyIHRleHROb2RlID0gZXZlbnQudGFyZ2V0LmVuY2xvc2lu
Z05vZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1odG1sLXRleHQtbm9kZSIpOworICAgICAgICB2
YXIgdGV4dE5vZGUgPSBldmVudFRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3
ZWJraXQtaHRtbC10ZXh0LW5vZGUiKTsKICAgICAgICAgaWYgKHRleHROb2RlKQogICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX3N0YXJ0RWRpdGluZ1RleHROb2RlKHRleHROb2RlKTsKIAotICAgICAg
ICB2YXIgYXR0cmlidXRlID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xh
c3MoIndlYmtpdC1odG1sLWF0dHJpYnV0ZSIpOworICAgICAgICB2YXIgYXR0cmlidXRlID0gZXZl
bnRUYXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0LWh0bWwtYXR0cmli
dXRlIik7CiAgICAgICAgIGlmIChhdHRyaWJ1dGUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5f
c3RhcnRFZGl0aW5nQXR0cmlidXRlKGF0dHJpYnV0ZSwgZXZlbnQudGFyZ2V0KTsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9zdGFydEVkaXRpbmdBdHRyaWJ1dGUoYXR0cmlidXRlLCBldmVudFRh
cmdldCk7CiAKLSAgICAgICAgdmFyIHRhZ05hbWUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9k
ZU9yU2VsZldpdGhDbGFzcygid2Via2l0LWh0bWwtdGFnLW5hbWUiKTsKKyAgICAgICAgdmFyIHRh
Z05hbWUgPSBldmVudFRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJraXQt
aHRtbC10YWctbmFtZSIpOwogICAgICAgICBpZiAodGFnTmFtZSkKICAgICAgICAgICAgIHJldHVy
biB0aGlzLl9zdGFydEVkaXRpbmdUYWdOYW1lKHRhZ05hbWUpOwogCi0gICAgICAgIHZhciBuZXdB
dHRyaWJ1dGUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygiYWRk
LWF0dHJpYnV0ZSIpOworICAgICAgICB2YXIgbmV3QXR0cmlidXRlID0gZXZlbnRUYXJnZXQuZW5j
bG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygiYWRkLWF0dHJpYnV0ZSIpOwogICAgICAgICBpZiAo
bmV3QXR0cmlidXRlKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkZE5ld0F0dHJpYnV0ZSgp
OwogCkBAIC04NjMsOSArODc1LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICAvLyBSZW1vdmUgemVyby13aWR0aCBzcGFjZXMgdGhhdCB3
ZXJlIGFkZGVkIGJ5IG5vZGVUaXRsZUluZm8uCiAgICAgICAgIHJlbW92ZVplcm9XaWR0aFNwYWNl
UmVjdXJzaXZlKGF0dHJpYnV0ZSk7CiAKLSAgICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7Ci0K
LSAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyhhdHRyaWJ1dGUsIHRoaXMuX2F0dHJp
YnV0ZUVkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwgdGhpcy5fZWRpdGluZ0NhbmNlbGxlZC5i
aW5kKHRoaXMpLCBhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgdGhpcy5fZWRpdGluZyA9IFdlYklu
c3BlY3Rvci5zdGFydEVkaXRpbmcoYXR0cmlidXRlLCB0aGlzLl9hdHRyaWJ1dGVFZGl0aW5nQ29t
bWl0dGVkLmJpbmQodGhpcyksIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQuYmluZCh0aGlzKSwgYXR0
cmlidXRlTmFtZSk7CiAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0
ZW50KGVsZW1lbnRGb3JTZWxlY3Rpb24sIDAsIGVsZW1lbnRGb3JTZWxlY3Rpb24sIDEpOwogCiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtODc2LDkgKzg4Niw3IEBAIFdlYkluc3BlY3Rvci5FbGVt
ZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5p
c0JlaW5nRWRpdGVkKHRleHROb2RlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
ICAgIHRoaXMuX2VkaXRpbmcgPSB0cnVlOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVk
aXRpbmcodGV4dE5vZGUsIHRoaXMuX3RleHROb2RlRWRpdGluZ0NvbW1pdHRlZC5iaW5kKHRoaXMp
LCB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9lZGl0
aW5nID0gV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0ZXh0Tm9kZSwgdGhpcy5fdGV4dE5vZGVF
ZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQuYmluZCh0
aGlzKSk7CiAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRl
eHROb2RlLCAwLCB0ZXh0Tm9kZSwgMSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04OTks
OCArOTA3LDYgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQodGFnTmFtZUVsZW1lbnQp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgdGhpcy5fZWRpdGluZyA9IHRy
dWU7Ci0KICAgICAgICAgdmFyIGNsb3NpbmdUYWdFbGVtZW50ID0gdGhpcy5fZGlzdGluY3RDbG9z
aW5nVGFnRWxlbWVudCgpOwogCiAgICAgICAgIGZ1bmN0aW9uIGtleXVwTGlzdGVuZXIoZXZlbnQp
CkBAIC05MjMsNyArOTI5LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogCiAgICAgICAgIHRhZ05hbWVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tl
eXVwJywga2V5dXBMaXN0ZW5lciwgZmFsc2UpOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5zdGFy
dEVkaXRpbmcodGFnTmFtZUVsZW1lbnQsIGVkaXRpbmdDb21pdHRlZC5iaW5kKHRoaXMpLCBlZGl0
aW5nQ2FuY2VsbGVkLmJpbmQodGhpcyksIHRhZ05hbWUpOworICAgICAgICB0aGlzLl9lZGl0aW5n
ID0gV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0YWdOYW1lRWxlbWVudCwgZWRpdGluZ0NvbWl0
dGVkLmJpbmQodGhpcyksIGVkaXRpbmdDYW5jZWxsZWQuYmluZCh0aGlzKSwgdGFnTmFtZSk7CiAg
ICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRhZ05hbWVFbGVt
ZW50LCAwLCB0YWdOYW1lRWxlbWVudCwgMSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0s
CkBAIC05MzMsOCArOTM5LDYgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5faHRtbEVkaXRFbGVtZW50ICYmIFdlYkluc3Bl
Y3Rvci5pc0JlaW5nRWRpdGVkKHRoaXMuX2h0bWxFZGl0RWxlbWVudCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgICAgICB0aGlzLl9lZGl0aW5nID0gdHJ1ZTsKLQogICAgICAgICB0
aGlzLl9odG1sRWRpdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAg
ICAgICAgdGhpcy5faHRtbEVkaXRFbGVtZW50LmNsYXNzTmFtZSA9ICJzb3VyY2UtY29kZSBlbGVt
ZW50cy10cmVlLWVkaXRvciI7CiAgICAgICAgIHRoaXMuX2h0bWxFZGl0RWxlbWVudC50ZXh0Q29u
dGVudCA9IGluaXRpYWxWYWx1ZTsKQEAgLTk3OSw3ICs5ODMsNyBAQCBXZWJJbnNwZWN0b3IuRWxl
bWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNl
bGVjdGlvbigpOwogICAgICAgICB9CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGlu
Zyh0aGlzLl9odG1sRWRpdEVsZW1lbnQsIGNvbW1pdC5iaW5kKHRoaXMpLCBkaXNwb3NlLmJpbmQo
dGhpcyksIG51bGwsIHRydWUpOworICAgICAgICB0aGlzLl9lZGl0aW5nID0gV2ViSW5zcGVjdG9y
LnN0YXJ0RWRpdGluZyh0aGlzLl9odG1sRWRpdEVsZW1lbnQsIGNvbW1pdC5iaW5kKHRoaXMpLCBk
aXNwb3NlLmJpbmQodGhpcyksIG51bGwsIHRydWUpOwogICAgIH0sCiAKICAgICBfYXR0cmlidXRl
RWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4dCwgYXR0
cmlidXRlTmFtZSwgbW92ZURpcmVjdGlvbikKQEAgLTEyNTQsNyArMTI1OCw3IEBAIFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZh
ciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgdmFyIHJlc3VsdCA9ICI8
c3BhbiBjbGFzcz1cIndlYmtpdC1odG1sLXRhZyIgKyAoaXNDbG9zaW5nVGFnICYmIGlzRGlzdGlu
Y3RUcmVlRWxlbWVudCA/ICIgY2xvc2UiIDogIiIpICArICJcIj4mbHQ7IjsKLSAgICAgICAgcmVz
dWx0ICs9ICI8c3BhbiBjbGFzcz1cIndlYmtpdC1odG1sLXRhZy1uYW1lXCI+IiArIChpc0Nsb3Np
bmdUYWcgPyAiLyIgOiAiIikgKyB0YWdOYW1lICsgIjwvc3Bhbj4iOworICAgICAgICByZXN1bHQg
Kz0gIjxzcGFuICIgKyAoaXNDbG9zaW5nVGFnID8gIiIgOiAiY2xhc3M9XCJ3ZWJraXQtaHRtbC10
YWctbmFtZVwiIikgKyAiPiIgKyAoaXNDbG9zaW5nVGFnID8gIi8iIDogIiIpICsgdGFnTmFtZSAr
ICI8L3NwYW4+IjsKICAgICAgICAgaWYgKCFpc0Nsb3NpbmdUYWcgJiYgbm9kZS5oYXNBdHRyaWJ1
dGVzKCkpIHsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5hdHRyaWJ1dGVz
Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBub2RlLmF0dHJpYnV0
ZXNbaV07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lk
ZWJhclBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBh
bmUuanMKaW5kZXggMmQ0ZjQ4YS4uNmYyYmQ1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtNTQ0LDYgKzU0NCw3IEBAIFdlYklu
c3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uID0gZnVuY3Rpb24oc3R5bGVSdWxlLCBzdWJ0
aXRsZSwgY29tcHV0ZWRTdHlsCiAKICAgICB0aGlzLnRpdGxlRWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJkYmxjbGljayIsIHRoaXMuX2RibGNsaWNrU2VsZWN0b3IuYmluZCh0aGlzKSwgZmFsc2Up
OwogICAgIHRoaXMudGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
Y2xpY2tTZWxlY3Rvci5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5fY2xpY2tBbmRQYXVz
ZUhlbHBlciA9IG5ldyBDbGlja0FuZFBhdXNlSGVscGVyKHRoaXMudGl0bGVFbGVtZW50LCB0aGlz
Ll9jbGlja0FuZFBhdXNlU2VsZWN0b3IuYmluZCh0aGlzKSwgdHJ1ZSwgdHJ1ZSk7CiAgICAgdGhp
cy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fZGJsY2xpY2tFbXB0
eVNwYWNlLmJpbmQodGhpcyksIGZhbHNlKTsKIAogICAgIHRoaXMuc3R5bGVSdWxlID0gc3R5bGVS
dWxlOwpAQCAtNTYyLDYgKzU2Myw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0
aW9uID0gZnVuY3Rpb24oc3R5bGVSdWxlLCBzdWJ0aXRsZSwgY29tcHV0ZWRTdHlsCiAKICAgICB0
aGlzLl91c2VkUHJvcGVydGllcyA9IHVzZWRQcm9wZXJ0aWVzOwogCisgICAgaWYgKHRoaXMuZWRp
dGFibGUgJiYgdGhpcy5ydWxlKQorICAgICAgICB0aGlzLnRpdGxlRWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJzdHlsZXMtc2VsZWN0b3ItZWRpdGFibGUiKTsKKwogICAgIGlmIChjb21wdXRlZFN0eWxl
KSB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJjb21wdXRlZC1zdHlsZSIp
OwogCkBAIC03NzQsMTEgKzc3OCwyNCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2Vj
dGlvbi5wcm90b3R5cGUgPSB7CiAKICAgICBfY2xpY2tTZWxlY3RvcjogZnVuY3Rpb24oZXZlbnQp
CiAgICAgeworICAgICAgICB0aGlzLl9jbGlja0FuZFBhdXNlSGVscGVyLmNsaWNrKGV2ZW50KTsK
ICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgfSwKIAorICAgIF9jbGlja0Fu
ZFBhdXNlU2VsZWN0b3I6IGZ1bmN0aW9uKHRhcmdldCkKKyAgICB7CisgICAgICAgIHRoaXMuX3N0
YXJ0RWRpdGluZ09uTW91c2VFdmVudCgpOworICAgIH0sCisKICAgICBfZGJsY2xpY2tTZWxlY3Rv
cjogZnVuY3Rpb24oZXZlbnQpCiAgICAgeworICAgICAgICB0aGlzLl9jbGlja0FuZFBhdXNlSGVs
cGVyLmRibENsaWNrKGV2ZW50KTsKKyAgICAgICAgdGhpcy5fc3RhcnRFZGl0aW5nT25Nb3VzZUV2
ZW50KCk7CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0sCisKKyAgICBf
c3RhcnRFZGl0aW5nT25Nb3VzZUV2ZW50OiBmdW5jdGlvbigpCisgICAgewogICAgICAgICBpZiAo
IXRoaXMuZWRpdGFibGUpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTc5Miw3ICs4MDksNiBA
QCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5zdGFydEVkaXRpbmdTZWxlY3RvcigpOwot
ICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICB9LAogCiAgICAgc3RhcnRFZGl0
aW5nU2VsZWN0b3I6IGZ1bmN0aW9uKCkKQEAgLTEwMDAsNiArMTAxNiw3IEBAIFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIG9uYXR0YWNoOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKCk7CisgICAgICAgIHRo
aXMuX2NsaWNrQW5kUGF1c2VIZWxwZXIgPSBuZXcgQ2xpY2tBbmRQYXVzZUhlbHBlcih0aGlzLmxp
c3RJdGVtRWxlbWVudCwgdGhpcy5fY2xpY2tBbmRQYXVzZS5iaW5kKHRoaXMpLCBmYWxzZSwgdHJ1
ZSk7CiAgICAgfSwKIAogICAgIHVwZGF0ZVRpdGxlOiBmdW5jdGlvbigpCkBAIC0xMjYzLDEwICsx
MjgwLDE2IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogCiAgICAgb25kYmxjbGljazogZnVuY3Rpb24oZXZlbnQpCiAgICAgeworICAgICAgICB0
aGlzLl9jbGlja0FuZFBhdXNlSGVscGVyLmRibENsaWNrKGV2ZW50KTsKICAgICAgICAgdGhpcy5z
dGFydEVkaXRpbmcoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KCk7CiAgICAgfSwKIAorICAgIF9jbGlja0FuZFBhdXNlOiBmdW5jdGlvbih0YXJnZXQpCisgICAg
eworICAgICAgICB0aGlzLnN0YXJ0RWRpdGluZyh0YXJnZXQpOworICAgIH0sCisKICAgICBzdGFy
dEVkaXRpbmc6IGZ1bmN0aW9uKHNlbGVjdEVsZW1lbnQpCiAgICAgewogICAgICAgICAvLyBGSVhN
RTogd2UgZG9uJ3QgYWxsb3cgZWRpdGluZyBvZiBsb25naGFuZCBwcm9wZXJ0aWVzIHVuZGVyIGEg
c2hvcnRoYW5kIHJpZ2h0IG5vdy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuY3NzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5jc3MKaW5kZXggNGI2NTk3YS4uNmY4NDQ3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5jc3MKQEAgLTM5MjcsNiArMzkyNywxMCBAQCBvbC5icmVha3BvaW50LWxp
c3QgewogICAgIG92ZXJmbG93OiBoaWRkZW47CiB9CiAKKy5zdHlsZXMtc2VsZWN0b3ItZWRpdGFi
bGUgeworICAgIGN1cnNvcjogdGV4dDsKK30KKwogLndvcmtlcnMtbGlzdCB7CiAgICAgbGlzdC1z
dHlsZTogbm9uZTsKICAgICBtYXJnaW46IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcwppbmRleCAzNTlkYTNlLi42N2U4OWQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTE4OTUsNyArMTg5NSwxMCBAQCBXZWJJbnNwZWN0b3Iu
c3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxlbWVudCwgY29tbWl0dGVkQ2FsbGJhY2ssIGNhbmNl
bGxlZENhbGxiYQogICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIGJsdXJFdmVu
dExpc3RlbmVyLCBmYWxzZSk7CiAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3du
Iiwga2V5RG93bkV2ZW50TGlzdGVuZXIsIHRydWUpOwogCi0gICAgV2ViSW5zcGVjdG9yLmN1cnJl
bnRGb2N1c0VsZW1lbnQgPSBlbGVtZW50OworICAgIHJldHVybiB7CisgICAgICAgIGNhbmNlbDog
ZWRpdGluZ0NhbmNlbGxlZC5iaW5kKGVsZW1lbnQpLAorICAgICAgICBjb21taXQ6IGVkaXRpbmdD
b21taXR0ZWQuYmluZChlbGVtZW50KQorICAgIH07CiB9CiAKIFdlYkluc3BlY3Rvci5fdG9vbGJh
ckl0ZW1DbGlja2VkID0gZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvdHJlZW91dGxpbmUuanMKaW5kZXggYjE5MWM4NS4uNzk5ZDhhZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcwpAQCAtNTY3LDcgKzU2Nyw3IEBAIFRyZWVF
bGVtZW50LnByb3RvdHlwZS5fYXR0YWNoID0gZnVuY3Rpb24oKQogICAgICAgICBpZiAodGhpcy5z
ZWxlY3RlZCkKICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRTdHlsZUNsYXNzKCJz
ZWxlY3RlZCIpOwogCi0gICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZWRvd24iLCBUcmVlRWxlbWVudC50cmVlRWxlbWVudFNlbGVjdGVkLCBmYWxzZSk7Cisg
ICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBU
cmVlRWxlbWVudC50cmVlRWxlbWVudE1vdXNlRG93biwgZmFsc2UpOwogICAgICAgICB0aGlzLl9s
aXN0SXRlbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBUcmVlRWxlbWVudC50cmVlRWxl
bWVudFRvZ2dsZWQsIGZhbHNlKTsKICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50
TGlzdGVuZXIoImRibGNsaWNrIiwgVHJlZUVsZW1lbnQudHJlZUVsZW1lbnREb3VibGVDbGlja2Vk
LCBmYWxzZSk7CiAKQEAgLTU5NSw3ICs1OTUsNyBAQCBUcmVlRWxlbWVudC5wcm90b3R5cGUuX2Rl
dGFjaCA9IGZ1bmN0aW9uKCkKICAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUpOwogfQogCi1UcmVlRWxlbWVu
dC50cmVlRWxlbWVudFNlbGVjdGVkID0gZnVuY3Rpb24oZXZlbnQpCitUcmVlRWxlbWVudC50cmVl
RWxlbWVudE1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAgIHZhciBlbGVtZW50ID0g
ZXZlbnQuY3VycmVudFRhcmdldDsKICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQudHJlZUVs
ZW1lbnQgfHwgIWVsZW1lbnQudHJlZUVsZW1lbnQuc2VsZWN0YWJsZSkKQEAgLTYwNCw3ICs2MDQs
NyBAQCBUcmVlRWxlbWVudC50cmVlRWxlbWVudFNlbGVjdGVkID0gZnVuY3Rpb24oZXZlbnQpCiAg
ICAgaWYgKGVsZW1lbnQudHJlZUVsZW1lbnQuaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmds
ZShldmVudCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuc2Vs
ZWN0KCk7CisgICAgZWxlbWVudC50cmVlRWxlbWVudC5zZWxlY3RPbk1vdXNlRG93bihldmVudCk7
CiB9CiAKIFRyZWVFbGVtZW50LnRyZWVFbGVtZW50VG9nZ2xlZCA9IGZ1bmN0aW9uKGV2ZW50KQpA
QCAtNzY3LDYgKzc2NywxMSBAQCBUcmVlRWxlbWVudC5wcm90b3R5cGUucmV2ZWFsZWQgPSBmdW5j
dGlvbigpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1RyZWVFbGVtZW50LnByb3RvdHlwZS5zZWxl
Y3RPbk1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIHRoaXMuc2VsZWN0KCk7Cit9
CisKIFRyZWVFbGVtZW50LnByb3RvdHlwZS5zZWxlY3QgPSBmdW5jdGlvbihzdXByZXNzT25TZWxl
Y3QpCiB7CiAgICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5lIHx8ICF0aGlzLnNlbGVjdGFibGUgfHwg
dGhpcy5zZWxlY3RlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91
dGlsaXRpZXMuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCmlu
ZGV4IDk4ZjM0YjkuLmI3NTRmMTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC91dGlsaXRpZXMuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxp
dGllcy5qcwpAQCAtOTE4LDMgKzkxOCw0OSBAQCBmdW5jdGlvbiBjcmVhdGVTZWFyY2hSZWdleChx
dWVyeSkKICAgICB9CiAgICAgcmV0dXJuIG5ldyBSZWdFeHAocmVnZXgsICJpIik7CiB9CisKK2Z1
bmN0aW9uIENsaWNrQW5kUGF1c2VIZWxwZXIobm9kZSwgbGlzdGVuZXIsIGV4dGVybmFsQ2xpY2tE
aXNwYXRjaCwgZXh0ZXJuYWxEYmxDbGlja0Rpc3BhdGNoKQoreworICAgIG5vZGUuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fbW91c2VNb3ZlLmJpbmQodGhpcyksIGZhbHNlKTsK
KyAgICBpZiAoIWV4dGVybmFsQ2xpY2tEaXNwYXRjaCkKKyAgICAgICAgbm9kZS5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMuY2xpY2suYmluZCh0aGlzKSwgZmFsc2UpOworICAgIGlmICgh
ZXh0ZXJuYWxEYmxDbGlja0Rpc3BhdGNoKQorICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIo
ImRibGNsaWNrIiwgdGhpcy5kYmxDbGljay5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5f
bGlzdGVuZXIgPSBsaXN0ZW5lcjsKK30KKworQ2xpY2tBbmRQYXVzZUhlbHBlci5wcm90b3R5cGUg
PSB7CisgICAgY2xpY2s6IGZ1bmN0aW9uKGUpCisgICAgeworICAgICAgICBpZiAoZS5idXR0b24g
fHwgZS5jdHJsS2V5IHx8IGUuYWx0S2V5IHx8IGUubWV0YUtleSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgdGhpcy5fY2xpY2tYID0gZS5wYWdlWDsKKyAgICAgICAgdGhpcy5fY2xpY2tZ
ID0gZS5wYWdlWTsKKyAgICAgICAgdGhpcy5fdGFyZ2V0ID0gZS50YXJnZXQ7CisgICAgICAgIHRo
aXMuX3RpbWVyID0gc2V0VGltZW91dCh0aGlzLl9maXJlRXZlbnQuYmluZCh0aGlzKSwgMzAwKTsK
KyAgICB9LAorCisgICAgZGJsQ2xpY2s6IGZ1bmN0aW9uKGUpCisgICAgeworICAgICAgICB0aGlz
LnJlc2V0KCk7CisgICAgfSwKKworICAgIF9tb3VzZU1vdmU6IGZ1bmN0aW9uKGUpCisgICAgewor
ICAgICAgICBpZiAodGhpcy5fY2xpY2tYICE9PSBlLnBhZ2VYIHx8IHRoaXMuX2NsaWNrWSAhPT0g
ZS5wYWdlWSkKKyAgICAgICAgICAgIHRoaXMucmVzZXQoKTsKKyAgICB9LAorCisgICAgcmVzZXQ6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl90aW1lcikgeworICAgICAgICAg
ICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl90
aW1lcjsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBfZmlyZUV2ZW50OiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB0aGlzLl9saXN0ZW5lcih0aGlzLl90YXJnZXQpOworICAgIH0KK30K
</data>
<flag name="review"
          id="35743"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52329</attachid>
            <date>2010-04-01 13:36:42 -0700</date>
            <delta_ts>2010-06-11 10:41:55 -0700</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>click_and_pause</filename>
            <type>text/plain</type>
            <size>22141</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTFmMWNjYy4uYjNlMDhiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wNC0wMSAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdGFydCBlZGl0aW5nIERPTSBhbmQg
c3R5bGVzIG9uIGNsaWNrLWFuZC1wYXVzZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NjUKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0NsaWNrQW5kUGF1c2VHZXN0dXJlUmVjb2duaXplci5qczogQWRkZWQuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ2xpY2tBbmRQYXVzZUdlc3R1cmVSZWNvZ25pemVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DbGlja0FuZFBhdXNlR2VzdHVyZVJlY29nbml6ZXIucHJvdG90
eXBlLmhhbmRsZU1vdXNlRG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2xpY2tBbmRQYXVz
ZUdlc3R1cmVSZWNvZ25pemVyLnByb3RvdHlwZS5faGFuZGxlTW91c2VVcCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ2xpY2tBbmRQYXVzZUdlc3R1cmVSZWNvZ25pemVyLnByb3RvdHlwZS5yZXNl
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLm9u
YXR0YWNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3Rv
dHlwZS5zZWxlY3RPbk1vdXNlRG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudC5wcm90b3R5cGUub25kYmxjbGljayk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX2hhbmRsZUNsaWNrQW5kUGF1c2UpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl9zdGFydEVk
aXRpbmdUYXJnZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9zdGFydEVkaXRpbmdBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl9zdGFydEVkaXRpbmdUZXh0Tm9kZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXJ0
RWRpdGluZ1RhZ05hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1l
bnQucHJvdG90eXBlLl9zdGFydEVkaXRpbmdBc0hUTUwpOgorICAgICAgICAoKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLl9oYW5kbGVFbXB0eVNw
YWNlRG91YmxlQ2xpY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1Nl
Y3Rpb24ucHJvdG90eXBlLl9oYW5kbGVTZWxlY3RvckNsaWNrKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5faGFuZGxlU2VsZWN0b3JDbGlj
a0FuZFBhdXNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9u
LnByb3RvdHlwZS5faGFuZGxlU2VsZWN0b3JEb3VibGVDbGljayk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZ09uTW91
c2VFdmVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50
LnByb3RvdHlwZS5vbmF0dGFjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9X
ZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoK
KyAgICAgICAgKC5zdHlsZXMtc2VsZWN0b3IpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzOgorICAgICAgICAoVHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9hdHRhY2gpOgorICAgICAgICAoVHJlZUVsZW1lbnQudHJlZUVsZW1lbnRNb3Vz
ZURvd24pOgorICAgICAgICAoVHJlZUVsZW1lbnQucHJvdG90eXBlLnNlbGVjdE9uTW91c2VEb3du
KToKKwogMjAxMC0wMy0zMSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMjE0YzdmMC4uNjQ2YjRmOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTM3NzcsNiArMzc3Nyw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9DaGFuZ2VzVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9D
aGVja2JveC5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9DbGlja0FuZFBh
dXNlR2VzdHVyZVJlY29nbml6ZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvQ29sb3IuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVBh
bmVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3Lmpz
JywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDdmODk4NjguLjlmMTI1
N2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDMxNzYsNiArNDMx
NzYsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQ2xpY2tBbmRQYXVzZUdlc3R1cmVSZWNvZ25p
emVyLmpzIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQ29sb3IuanMiDQogCQkJCQk+DQogCQkJCTwv
RmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2xpY2tBbmRQ
YXVzZUdlc3R1cmVSZWNvZ25pemVyLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Ns
aWNrQW5kUGF1c2VHZXN0dXJlUmVjb2duaXplci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41MmM4ZjFhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NsaWNrQW5kUGF1c2VHZXN0dXJlUmVjb2duaXplci5qcwpAQCAtMCwwICsxLDY4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworV2ViSW5zcGVjdG9yLkNsaWNrQW5kUGF1c2VHZXN0dXJlUmVjb2duaXplciA9IGZ1bmN0aW9u
KG5vZGUsIGxpc3RlbmVyLCBleHRlcm5hbE1vdXNlRG93bkRpc3BhdGNoKQoreworICAgIGlmICgh
ZXh0ZXJuYWxNb3VzZURvd25EaXNwYXRjaCkKKyAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZWRvd24iLCB0aGlzLmhhbmRsZU1vdXNlRG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7Cisg
ICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5faGFuZGxlTW91c2VVcC5i
aW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5fbGlzdGVuZXIgPSBsaXN0ZW5lcjsKK30KKwor
V2ViSW5zcGVjdG9yLkNsaWNrQW5kUGF1c2VHZXN0dXJlUmVjb2duaXplci5wcm90b3R5cGUgPSB7
CisgICAgaGFuZGxlTW91c2VEb3duOiBmdW5jdGlvbihlKQorICAgIHsKKyAgICAgICAgdGhpcy5f
cmVzZXQoKTsKKyAgICAgICAgdGhpcy5fY2xpZW50WCA9IGUucGFnZVg7CisgICAgICAgIHRoaXMu
X2NsaWVudFkgPSBlLnBhZ2VZOworICAgICAgICB0aGlzLl90YXJnZXQgPSBlLnRhcmdldDsKKyAg
ICB9LAorCisgICAgX2hhbmRsZU1vdXNlVXA6IGZ1bmN0aW9uKGUpCisgICAgeworICAgICAgICB0
aGlzLl9yZXNldCgpOworCisgICAgICAgIGlmIChlLmJ1dHRvbiB8fCBlLmN0cmxLZXkgfHwgZS5h
bHRLZXkgfHwgZS5tZXRhS2V5IHx8IGUuZGV0YWlsID09IDIpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuX2NsaWVudFggLSBlLnBhZ2VYKSArIE1hdGgu
YWJzKHRoaXMuX2NsaWVudFkgLSBlLnBhZ2VZKSA+IDEwKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dCh0aGlzLl9saXN0ZW5lci5iaW5kKHRo
aXMsIHRoaXMuX3RhcmdldCksIDMwMCk7CisgICAgfSwKKworICAgIF9yZXNldDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3RpbWVyKSB7CisgICAgICAgICAgICBjbGVhclRp
bWVvdXQodGhpcy5fdGltZXIpOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3RpbWVyOworICAg
ICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzVHJlZU91dGxpbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNUcmVlT3V0bGluZS5qcwppbmRleCA5MTlkNTA3Li44NzRjMTU0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpAQCAtNDcw
LDggKzQ3MCw2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKIAogICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLmxpc3RJ
dGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLm9ubW91c2Vkb3du
LmJpbmQodGhpcyksIGZhbHNlKTsKLQogICAgICAgICBpZiAodGhpcy5faG92ZXJlZCkgewogICAg
ICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24oKTsKICAgICAgICAgICAgIHRoaXMubGlzdEl0
ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhvdmVyZWQiKTsKQEAgLTQ4MCw2ICs0NzgsNyBAQCBX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMudXBkYXRlVGl0bGUoKTsKIAogICAgICAgICB0aGlzLl9wcmV2ZW50Rm9sbG93aW5nTGlua3NP
bkRvdWJsZUNsaWNrKCk7CisgICAgICAgIHRoaXMuX2NsaWNrQW5kUGF1c2VSZWNvZ25pemVyID0g
bmV3IFdlYkluc3BlY3Rvci5DbGlja0FuZFBhdXNlR2VzdHVyZVJlY29nbml6ZXIodGhpcy5saXN0
SXRlbUVsZW1lbnQsIHRoaXMuX2hhbmRsZUNsaWNrQW5kUGF1c2UuYmluZCh0aGlzKSwgdHJ1ZSk7
CiAgICAgfSwKIAogICAgIF9wcmV2ZW50Rm9sbG93aW5nTGlua3NPbkRvdWJsZUNsaWNrOiBmdW5j
dGlvbigpCkBAIC02ODcsMTMgKzY4NiwxNiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc3VwcHJlc3NSZXZl
YWxBbmRTZWxlY3QgPSBmYWxzZTsKICAgICB9LAogCi0gICAgb25tb3VzZWRvd246IGZ1bmN0aW9u
KGV2ZW50KQorICAgIHNlbGVjdE9uTW91c2VEb3duOiBmdW5jdGlvbihldmVudCkKICAgICB7Cisg
ICAgICAgIHZhciB3YXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7CisgICAgICAgIFRyZWVFbGVt
ZW50LnByb3RvdHlwZS5zZWxlY3RPbk1vdXNlRG93bi5jYWxsKHRoaXMsIGV2ZW50KTsKKwogICAg
ICAgICBpZiAodGhpcy5fZWRpdGluZykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBp
ZiAodGhpcy5pc0V2ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlKGV2ZW50KSkKLSAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgaWYgKHdhc1NlbGVjdGVkKQorICAgICAgICAgICAgdGhpcy5f
Y2xpY2tBbmRQYXVzZVJlY29nbml6ZXIuaGFuZGxlTW91c2VEb3duKGV2ZW50KTsKIAogICAgICAg
ICBpZiAodGhpcy50cmVlT3V0bGluZS5zaG93SW5FbGVtZW50c1BhbmVsRW5hYmxlZCkgewogICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dFbGVtZW50c1BhbmVsKCk7CkBAIC03MTAsMTMgKzcx
MiwyMSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmICh0aGlzLl9lZGl0aW5nIHx8IHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAodGhpcy5fc3RhcnRFZGl0aW5nRnJvbUV2ZW50
KGV2ZW50KSkKKyAgICAgICAgaWYgKHRoaXMuX3N0YXJ0RWRpdGluZ1RhcmdldChldmVudC50YXJn
ZXQpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVu
ICYmICF0aGlzLmV4cGFuZGVkKQogICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKICAgICB9LAog
CisgICAgX2hhbmRsZUNsaWNrQW5kUGF1c2U6IGZ1bmN0aW9uKHRhcmdldCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9lZGl0aW5nIHx8IHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9zdGFydEVkaXRpbmdUYXJnZXQodGFyZ2V0KTsK
KyAgICB9LAorCiAgICAgX2luc2VydEluTGFzdEF0dHJpYnV0ZVBvc2l0aW9uOiBmdW5jdGlvbih0
YWcsIG5vZGUpCiAgICAgewogICAgICAgICBpZiAodGFnLmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
IndlYmtpdC1odG1sLWF0dHJpYnV0ZSIpLmxlbmd0aCA+IDApCkBAIC03MzIsNyArNzQyLDcgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwogICAgIH0sCiAKLSAgICBfc3RhcnRFZGl0aW5nRnJvbUV2
ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfc3RhcnRFZGl0aW5nVGFyZ2V0OiBmdW5jdGlvbihl
dmVudFRhcmdldCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRE
T01Ob2RlICE9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC03NDAsMTkgKzc1MCwxOSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVUeXBlICE9
IE5vZGUuRUxFTUVOVF9OT0RFICYmIHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgIT0g
Tm9kZS5URVhUX05PREUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgdmFy
IHRleHROb2RlID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIndl
YmtpdC1odG1sLXRleHQtbm9kZSIpOworICAgICAgICB2YXIgdGV4dE5vZGUgPSBldmVudFRhcmdl
dC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJraXQtaHRtbC10ZXh0LW5vZGUiKTsK
ICAgICAgICAgaWYgKHRleHROb2RlKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0RWRp
dGluZ1RleHROb2RlKHRleHROb2RlKTsKIAotICAgICAgICB2YXIgYXR0cmlidXRlID0gZXZlbnQu
dGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoIndlYmtpdC1odG1sLWF0dHJpYnV0
ZSIpOworICAgICAgICB2YXIgYXR0cmlidXRlID0gZXZlbnRUYXJnZXQuZW5jbG9zaW5nTm9kZU9y
U2VsZldpdGhDbGFzcygid2Via2l0LWh0bWwtYXR0cmlidXRlIik7CiAgICAgICAgIGlmIChhdHRy
aWJ1dGUpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0aW5nQXR0cmlidXRlKGF0
dHJpYnV0ZSwgZXZlbnQudGFyZ2V0KTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydEVk
aXRpbmdBdHRyaWJ1dGUoYXR0cmlidXRlLCBldmVudFRhcmdldCk7CiAKLSAgICAgICAgdmFyIHRh
Z05hbWUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0
LWh0bWwtdGFnLW5hbWUiKTsKKyAgICAgICAgdmFyIHRhZ05hbWUgPSBldmVudFRhcmdldC5lbmNs
b3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJraXQtaHRtbC10YWctbmFtZSIpOwogICAgICAg
ICBpZiAodGFnTmFtZSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydEVkaXRpbmdUYWdO
YW1lKHRhZ05hbWUpOwogCi0gICAgICAgIHZhciBuZXdBdHRyaWJ1dGUgPSBldmVudC50YXJnZXQu
ZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygiYWRkLWF0dHJpYnV0ZSIpOworICAgICAgICB2
YXIgbmV3QXR0cmlidXRlID0gZXZlbnRUYXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFz
cygiYWRkLWF0dHJpYnV0ZSIpOwogICAgICAgICBpZiAobmV3QXR0cmlidXRlKQogICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2FkZE5ld0F0dHJpYnV0ZSgpOwogCkBAIC04NjMsOSArODczLDcgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAv
LyBSZW1vdmUgemVyby13aWR0aCBzcGFjZXMgdGhhdCB3ZXJlIGFkZGVkIGJ5IG5vZGVUaXRsZUlu
Zm8uCiAgICAgICAgIHJlbW92ZVplcm9XaWR0aFNwYWNlUmVjdXJzaXZlKGF0dHJpYnV0ZSk7CiAK
LSAgICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLnN0
YXJ0RWRpdGluZyhhdHRyaWJ1dGUsIHRoaXMuX2F0dHJpYnV0ZUVkaXRpbmdDb21taXR0ZWQuYmlu
ZCh0aGlzKSwgdGhpcy5fZWRpdGluZ0NhbmNlbGxlZC5iaW5kKHRoaXMpLCBhdHRyaWJ1dGVOYW1l
KTsKKyAgICAgICAgdGhpcy5fZWRpdGluZyA9IFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcoYXR0
cmlidXRlLCB0aGlzLl9hdHRyaWJ1dGVFZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksIHRoaXMu
X2VkaXRpbmdDYW5jZWxsZWQuYmluZCh0aGlzKSwgYXR0cmlidXRlTmFtZSk7CiAgICAgICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGVsZW1lbnRGb3JTZWxlY3Rpb24s
IDAsIGVsZW1lbnRGb3JTZWxlY3Rpb24sIDEpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
ODc2LDkgKzg4NCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKHRleHROb2RlKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIHRoaXMuX2VkaXRpbmcgPSB0cnVl
OwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcodGV4dE5vZGUsIHRoaXMuX3Rl
eHROb2RlRWRpdGluZ0NvbW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVk
LmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9lZGl0aW5nID0gV2ViSW5zcGVjdG9yLnN0YXJ0
RWRpdGluZyh0ZXh0Tm9kZSwgdGhpcy5fdGV4dE5vZGVFZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhp
cyksIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQuYmluZCh0aGlzKSk7CiAgICAgICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRleHROb2RlLCAwLCB0ZXh0Tm9kZSwgMSk7
CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04OTksOCArOTA1LDYgQEAgV2ViSW5zcGVjdG9y
LkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLmlzQmVpbmdFZGl0ZWQodGFnTmFtZUVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7Ci0KICAgICAgICAgdmFyIGNsb3Np
bmdUYWdFbGVtZW50ID0gdGhpcy5fZGlzdGluY3RDbG9zaW5nVGFnRWxlbWVudCgpOwogCiAgICAg
ICAgIGZ1bmN0aW9uIGtleXVwTGlzdGVuZXIoZXZlbnQpCkBAIC05MjMsNyArOTI3LDcgQEAgV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHRh
Z05hbWVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywga2V5dXBMaXN0ZW5lciwgZmFs
c2UpOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcodGFnTmFtZUVsZW1lbnQs
IGVkaXRpbmdDb21pdHRlZC5iaW5kKHRoaXMpLCBlZGl0aW5nQ2FuY2VsbGVkLmJpbmQodGhpcyks
IHRhZ05hbWUpOworICAgICAgICB0aGlzLl9lZGl0aW5nID0gV2ViSW5zcGVjdG9yLnN0YXJ0RWRp
dGluZyh0YWdOYW1lRWxlbWVudCwgZWRpdGluZ0NvbWl0dGVkLmJpbmQodGhpcyksIGVkaXRpbmdD
YW5jZWxsZWQuYmluZCh0aGlzKSwgdGFnTmFtZSk7CiAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5zZXRCYXNlQW5kRXh0ZW50KHRhZ05hbWVFbGVtZW50LCAwLCB0YWdOYW1lRWxlbWVudCwg
MSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCkBAIC05MzMsOCArOTM3LDYgQEAgV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAo
dGhpcy5faHRtbEVkaXRFbGVtZW50ICYmIFdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKHRoaXMu
X2h0bWxFZGl0RWxlbWVudCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICB0
aGlzLl9lZGl0aW5nID0gdHJ1ZTsKLQogICAgICAgICB0aGlzLl9odG1sRWRpdEVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5faHRtbEVkaXRFbGVt
ZW50LmNsYXNzTmFtZSA9ICJzb3VyY2UtY29kZSBlbGVtZW50cy10cmVlLWVkaXRvciI7CiAgICAg
ICAgIHRoaXMuX2h0bWxFZGl0RWxlbWVudC50ZXh0Q29udGVudCA9IGluaXRpYWxWYWx1ZTsKQEAg
LTk3OSw3ICs5ODEsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwogICAgICAgICB9CiAK
LSAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0aGlzLl9odG1sRWRpdEVsZW1lbnQs
IGNvbW1pdC5iaW5kKHRoaXMpLCBkaXNwb3NlLmJpbmQodGhpcyksIG51bGwsIHRydWUpOworICAg
ICAgICB0aGlzLl9lZGl0aW5nID0gV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0aGlzLl9odG1s
RWRpdEVsZW1lbnQsIGNvbW1pdC5iaW5kKHRoaXMpLCBkaXNwb3NlLmJpbmQodGhpcyksIG51bGws
IHRydWUpOwogICAgIH0sCiAKICAgICBfYXR0cmlidXRlRWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rp
b24oZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4dCwgYXR0cmlidXRlTmFtZSwgbW92ZURpcmVjdGlv
bikKQEAgLTEyNTQsNyArMTI1Niw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRl
ZE9iamVjdDsKICAgICAgICAgdmFyIHJlc3VsdCA9ICI8c3BhbiBjbGFzcz1cIndlYmtpdC1odG1s
LXRhZyIgKyAoaXNDbG9zaW5nVGFnICYmIGlzRGlzdGluY3RUcmVlRWxlbWVudCA/ICIgY2xvc2Ui
IDogIiIpICArICJcIj4mbHQ7IjsKLSAgICAgICAgcmVzdWx0ICs9ICI8c3BhbiBjbGFzcz1cIndl
YmtpdC1odG1sLXRhZy1uYW1lXCI+IiArIChpc0Nsb3NpbmdUYWcgPyAiLyIgOiAiIikgKyB0YWdO
YW1lICsgIjwvc3Bhbj4iOworICAgICAgICByZXN1bHQgKz0gIjxzcGFuICIgKyAoaXNDbG9zaW5n
VGFnID8gIiIgOiAiY2xhc3M9XCJ3ZWJraXQtaHRtbC10YWctbmFtZVwiIikgKyAiPiIgKyAoaXND
bG9zaW5nVGFnID8gIi8iIDogIiIpICsgdGFnTmFtZSArICI8L3NwYW4+IjsKICAgICAgICAgaWYg
KCFpc0Nsb3NpbmdUYWcgJiYgbm9kZS5oYXNBdHRyaWJ1dGVzKCkpIHsKICAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbm9kZS5hdHRyaWJ1dGVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICAgICAgdmFyIGF0dHIgPSBub2RlLmF0dHJpYnV0ZXNbaV07CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKaW5kZXggMmQ0ZjQ4YS4uYmRj
NDM4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGVi
YXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFy
UGFuZS5qcwpAQCAtNTQyLDkgKzU0MiwxMCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVz
U2VjdGlvbiA9IGZ1bmN0aW9uKHN0eWxlUnVsZSwgc3VidGl0bGUsIGNvbXB1dGVkU3R5bAogewog
ICAgIFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2VjdGlvbi5jYWxsKHRoaXMsIHN0eWxlUnVsZS5z
ZWxlY3RvclRleHQpOwogCi0gICAgdGhpcy50aXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
ZGJsY2xpY2siLCB0aGlzLl9kYmxjbGlja1NlbGVjdG9yLmJpbmQodGhpcyksIGZhbHNlKTsKLSAg
ICB0aGlzLnRpdGxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2NsaWNr
U2VsZWN0b3IuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJkYmxjbGljayIsIHRoaXMuX2RibGNsaWNrRW1wdHlTcGFjZS5iaW5kKHRoaXMpLCBm
YWxzZSk7CisgICAgdGhpcy50aXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2si
LCB0aGlzLl9oYW5kbGVTZWxlY3RvckRvdWJsZUNsaWNrLmJpbmQodGhpcyksIGZhbHNlKTsKKyAg
ICB0aGlzLnRpdGxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRs
ZVNlbGVjdG9yQ2xpY2suYmluZCh0aGlzKSwgZmFsc2UpOworICAgIHRoaXMuX2NsaWNrQW5kUGF1
c2VSZWNvZ25pemVyID0gbmV3IFdlYkluc3BlY3Rvci5DbGlja0FuZFBhdXNlR2VzdHVyZVJlY29n
bml6ZXIodGhpcy50aXRsZUVsZW1lbnQsIHRoaXMuX2hhbmRsZVNlbGVjdG9yQ2xpY2tBbmRQYXVz
ZS5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xp
Y2siLCB0aGlzLl9oYW5kbGVFbXB0eVNwYWNlRG91YmxlQ2xpY2suYmluZCh0aGlzKSwgZmFsc2Up
OwogCiAgICAgdGhpcy5zdHlsZVJ1bGUgPSBzdHlsZVJ1bGU7CiAgICAgdGhpcy5ydWxlID0gdGhp
cy5zdHlsZVJ1bGUucnVsZTsKQEAgLTU2Miw2ICs1NjMsOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQ
cm9wZXJ0aWVzU2VjdGlvbiA9IGZ1bmN0aW9uKHN0eWxlUnVsZSwgc3VidGl0bGUsIGNvbXB1dGVk
U3R5bAogCiAgICAgdGhpcy5fdXNlZFByb3BlcnRpZXMgPSB1c2VkUHJvcGVydGllczsKIAorICAg
IGlmICh0aGlzLnJ1bGUpCisgICAgICAgIHRoaXMudGl0bGVFbGVtZW50LmFkZFN0eWxlQ2xhc3Mo
InN0eWxlcy1zZWxlY3RvciIpOworCiAgICAgaWYgKGNvbXB1dGVkU3R5bGUpIHsKICAgICAgICAg
dGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoImNvbXB1dGVkLXN0eWxlIik7CiAKQEAgLTc2Miw3
ICs3NjYsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHJldHVybiBpdGVtOwogICAgIH0sCiAKLSAgICBfZGJsY2xpY2tFbXB0eVNw
YWNlOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlRW1wdHlTcGFjZURvdWJsZUNsaWNrOiBm
dW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC50YXJnZXQuaGFzU3R5bGVD
bGFzcygiaGVhZGVyIikpIHsKICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwpA
QCAtNzcyLDEyICs3NzYsMjMgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24u
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVk
aXRpbmcoKTsKICAgICB9LAogCi0gICAgX2NsaWNrU2VsZWN0b3I6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9oYW5kbGVTZWxlY3RvckNsaWNrOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0sCisKKyAgICBfaGFuZGxlU2VsZWN0b3JD
bGlja0FuZFBhdXNlOiBmdW5jdGlvbih0YXJnZXQpCisgICAgeworICAgICAgICB0aGlzLl9zdGFy
dEVkaXRpbmdPbk1vdXNlRXZlbnQoKTsKKyAgICB9LAorCisgICAgX2hhbmRsZVNlbGVjdG9yRG91
YmxlQ2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKKyAgICAgICAgdGhpcy5fc3RhcnRFZGl0
aW5nT25Nb3VzZUV2ZW50KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAg
IH0sCiAKLSAgICBfZGJsY2xpY2tTZWxlY3RvcjogZnVuY3Rpb24oZXZlbnQpCisgICAgX3N0YXJ0
RWRpdGluZ09uTW91c2VFdmVudDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
LmVkaXRhYmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzkyLDcgKzgwNyw2IEBAIFdlYklu
c3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICB0aGlzLnN0YXJ0RWRpdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAg
IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgIH0sCiAKICAgICBzdGFydEVkaXRpbmdTZWxl
Y3RvcjogZnVuY3Rpb24oKQpAQCAtMTAwMCw2ICsxMDE0LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxl
UHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgb25hdHRhY2g6IGZ1bmN0aW9u
KCkKICAgICB7CiAgICAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTsKKyAgICAgICAgdGhpcy5fY2xp
Y2tBbmRQYXVzZVJlY29nbml6ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNsaWNrQW5kUGF1c2VHZXN0
dXJlUmVjb2duaXplcih0aGlzLmxpc3RJdGVtRWxlbWVudCwgdGhpcy5faGFuZGxlQ2xpY2tBbmRQ
YXVzZS5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgdXBkYXRlVGl0bGU6IGZ1bmN0aW9uKCkK
QEAgLTEyNjcsNiArMTI4MiwxMSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAg
fSwKIAorICAgIF9oYW5kbGVDbGlja0FuZFBhdXNlOiBmdW5jdGlvbih0YXJnZXQpCisgICAgewor
ICAgICAgICB0aGlzLnN0YXJ0RWRpdGluZyh0YXJnZXQpOworICAgIH0sCisKICAgICBzdGFydEVk
aXRpbmc6IGZ1bmN0aW9uKHNlbGVjdEVsZW1lbnQpCiAgICAgewogICAgICAgICAvLyBGSVhNRTog
d2UgZG9uJ3QgYWxsb3cgZWRpdGluZyBvZiBsb25naGFuZCBwcm9wZXJ0aWVzIHVuZGVyIGEgc2hv
cnRoYW5kIHJpZ2h0IG5vdy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5k
ZXggNDdhMmU5MC4uOTRiYTEzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5x
cmMKQEAgLTE0LDYgKzE0LDcgQEAKICAgICA8ZmlsZT5DYWxsU3RhY2tTaWRlYmFyUGFuZS5qczwv
ZmlsZT4KICAgICA8ZmlsZT5DaGFuZ2VzVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5DaGVja2Jv
eC5qczwvZmlsZT4KKyAgICA8ZmlsZT5DbGlja0FuZFBhdXNlR2VzdHVyZVJlY29nbml6ZXIuanM8
L2ZpbGU+CiAgICAgPGZpbGU+Q29sb3IuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q29uc29sZVBhbmVs
LmpzPC9maWxlPgogICAgIDxmaWxlPkNvbnNvbGVWaWV3LmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2F1ZGl0cy5jc3MgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvYXVkaXRzLmNzcwppbmRleCBiZTEyZmMwLi4yZjRmMWQ2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvYXVkaXRzLmNzcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvYXVkaXRzLmNzcwpAQCAtMjE3LDYgKzIxNyw3IEBAIGJvZHkuaW5h
Y3RpdmUgLmF1ZGl0LWxhdW5jaGVyLXZpZXcgYnV0dG9uLCAuYXVkaXQtbGF1bmNoZXItdmlldyBi
dXR0b246ZGlzYWJsZWQKIC5hdWRpdC1yZXN1bHQtdHJlZSB7CiAgICAgZm9udC1zaXplOiAxMXB4
OwogICAgIGxpbmUtaGVpZ2h0OiAxNHB4OworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7
CiB9CiAKIC5hdWRpdC1yZXN1bHQtdHJlZSA+IG9sIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggNGI2NTk3YS4uM2I5Y2ExMCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTM5MjcsNiArMzkyNywxMSBAQCBvbC5i
cmVha3BvaW50LWxpc3QgewogICAgIG92ZXJmbG93OiBoaWRkZW47CiB9CiAKKy5zdHlsZXMtc2Vs
ZWN0b3IgeworICAgIGN1cnNvcjogdGV4dDsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0
OworfQorCiAud29ya2Vycy1saXN0IHsKICAgICBsaXN0LXN0eWxlOiBub25lOwogICAgIG1hcmdp
bjogMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbCBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA0
ZmE4ZGRjLi43ZmViZjNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmh0bWwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sCkBAIC04MCw2ICs4MCw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iUHJvcGVydGllc1NpZGViYXJQYW5lLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJFdmVudExpc3RlbmVyc1NpZGVi
YXJQYW5lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJDb2xvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iQ2xpY2tBbmRQYXVzZUdlc3R1cmVSZWNvZ25pemVyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTdHlsZXNTaWRlYmFyUGFuZS5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUGFu
ZWxFbmFibGVyVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iV2VsY29tZVZpZXcuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMzU5ZGEzZS4uNjdlODlkOCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xODk1LDcgKzE4OTUsMTAgQEAgV2Vi
SW5zcGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbW1pdHRlZENhbGxi
YWNrLCBjYW5jZWxsZWRDYWxsYmEKICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIi
LCBibHVyRXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigia2V5ZG93biIsIGtleURvd25FdmVudExpc3RlbmVyLCB0cnVlKTsKIAotICAgIFdlYkluc3Bl
Y3Rvci5jdXJyZW50Rm9jdXNFbGVtZW50ID0gZWxlbWVudDsKKyAgICByZXR1cm4geworICAgICAg
ICBjYW5jZWw6IGVkaXRpbmdDYW5jZWxsZWQuYmluZChlbGVtZW50KSwKKyAgICAgICAgY29tbWl0
OiBlZGl0aW5nQ29tbWl0dGVkLmJpbmQoZWxlbWVudCkKKyAgICB9OwogfQogCiBXZWJJbnNwZWN0
b3IuX3Rvb2xiYXJJdGVtQ2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzCmluZGV4IGIxOTFjODUuLjc5OWQ4YWYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanMKQEAgLTU2Nyw3ICs1Njcs
NyBAQCBUcmVlRWxlbWVudC5wcm90b3R5cGUuX2F0dGFjaCA9IGZ1bmN0aW9uKCkKICAgICAgICAg
aWYgKHRoaXMuc2VsZWN0ZWQpCiAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYWRkU3R5
bGVDbGFzcygic2VsZWN0ZWQiKTsKIAotICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2Vkb3duIiwgVHJlZUVsZW1lbnQudHJlZUVsZW1lbnRTZWxlY3RlZCwg
ZmFsc2UpOworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2Vkb3duIiwgVHJlZUVsZW1lbnQudHJlZUVsZW1lbnRNb3VzZURvd24sIGZhbHNlKTsKICAgICAg
ICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgVHJlZUVsZW1l
bnQudHJlZUVsZW1lbnRUb2dnbGVkLCBmYWxzZSk7CiAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9k
ZS5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIFRyZWVFbGVtZW50LnRyZWVFbGVtZW50RG91
YmxlQ2xpY2tlZCwgZmFsc2UpOwogCkBAIC01OTUsNyArNTk1LDcgQEAgVHJlZUVsZW1lbnQucHJv
dG90eXBlLl9kZXRhY2ggPSBmdW5jdGlvbigpCiAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5v
ZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKTsKIH0KIAot
VHJlZUVsZW1lbnQudHJlZUVsZW1lbnRTZWxlY3RlZCA9IGZ1bmN0aW9uKGV2ZW50KQorVHJlZUVs
ZW1lbnQudHJlZUVsZW1lbnRNb3VzZURvd24gPSBmdW5jdGlvbihldmVudCkKIHsKICAgICB2YXIg
ZWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7CiAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVt
ZW50LnRyZWVFbGVtZW50IHx8ICFlbGVtZW50LnRyZWVFbGVtZW50LnNlbGVjdGFibGUpCkBAIC02
MDQsNyArNjA0LDcgQEAgVHJlZUVsZW1lbnQudHJlZUVsZW1lbnRTZWxlY3RlZCA9IGZ1bmN0aW9u
KGV2ZW50KQogICAgIGlmIChlbGVtZW50LnRyZWVFbGVtZW50LmlzRXZlbnRXaXRoaW5EaXNjbG9z
dXJlVHJpYW5nbGUoZXZlbnQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBlbGVtZW50LnRyZWVF
bGVtZW50LnNlbGVjdCgpOworICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuc2VsZWN0T25Nb3VzZURv
d24oZXZlbnQpOwogfQogCiBUcmVlRWxlbWVudC50cmVlRWxlbWVudFRvZ2dsZWQgPSBmdW5jdGlv
bihldmVudCkKQEAgLTc2Nyw2ICs3NjcsMTEgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlLnJldmVh
bGVkID0gZnVuY3Rpb24oKQogICAgIHJldHVybiB0cnVlOwogfQogCitUcmVlRWxlbWVudC5wcm90
b3R5cGUuc2VsZWN0T25Nb3VzZURvd24gPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB0aGlzLnNl
bGVjdCgpOworfQorCiBUcmVlRWxlbWVudC5wcm90b3R5cGUuc2VsZWN0ID0gZnVuY3Rpb24oc3Vw
cmVzc09uU2VsZWN0KQogewogICAgIGlmICghdGhpcy50cmVlT3V0bGluZSB8fCAhdGhpcy5zZWxl
Y3RhYmxlIHx8IHRoaXMuc2VsZWN0ZWQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>