<?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>101905</bug_id>
          
          <creation_ts>2012-11-11 23:55:39 -0800</creation_ts>
          <short_desc>Web Inspector: use last selection as complementary signal when applying DOM changes to the text model.</short_desc>
          <delta_ts>2012-11-14 05:09:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>764110</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-11 23:55:39 -0800</bug_when>
    <thetext>Currently we use heuristics for detecting damaged model range upon DOM mutation. This change adds signals from the last selection and keyboard events in order to further improve the heuristics quality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764113</commentid>
    <comment_count>1</comment_count>
      <attachid>173575</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-12 00:02:44 -0800</bug_when>
    <thetext>Created attachment 173575
[Patch] Straw man, not for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765766</commentid>
    <comment_count>2</comment_count>
      <attachid>173920</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-13 10:25:10 -0800</bug_when>
    <thetext>Created attachment 173920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765771</commentid>
    <comment_count>3</comment_count>
      <attachid>173921</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-13 10:28:35 -0800</bug_when>
    <thetext>Created attachment 173921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766617</commentid>
    <comment_count>4</comment_count>
      <attachid>173921</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-14 01:33:29 -0800</bug_when>
    <thetext>Comment on attachment 173921
Patch

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

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:473
&gt; +        return this._mainPanel._lastSelection;

There are still some _lastSelection usages in editor, r- for that.

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2153
&gt; +        var isBackspace = this._keyDownCode === WebInspector.KeyboardShortcut.Keys.Backspace.code;

Delete?

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2165
&gt; +        var range = this._lastSelection.clone();

backwards selection?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766646</commentid>
    <comment_count>5</comment_count>
      <attachid>174114</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-14 01:58:52 -0800</bug_when>
    <thetext>Created attachment 174114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766666</commentid>
    <comment_count>6</comment_count>
      <attachid>174114</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-14 02:26:56 -0800</bug_when>
    <thetext>Comment on attachment 174114
Patch

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

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2192
&gt; +    {console.log(1);

please remove</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766717</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-14 03:33:26 -0800</bug_when>
    <thetext>Committed r134591: &lt;http://trac.webkit.org/changeset/134591&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766768</commentid>
    <comment_count>8</comment_count>
      <attachid>174114</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-14 05:09:04 -0800</bug_when>
    <thetext>Comment on attachment 174114
Patch

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

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2192
&gt; +    {console.log(1);

please remove</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766769</commentid>
    <comment_count>9</comment_count>
      <attachid>174114</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-14 05:09:21 -0800</bug_when>
    <thetext>Comment on attachment 174114
Patch

oops</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173575</attachid>
            <date>2012-11-12 00:02:44 -0800</date>
            <delta_ts>2012-11-13 10:25:02 -0800</delta_ts>
            <desc>[Patch] Straw man, not for landing</desc>
            <filename>bug-101905-20121112120046.patch</filename>
            <type>text/plain</type>
            <size>9201</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTEwOGE4NWEzOGIwOGRk
ZmRlZmI3MDYwZDVhMDI3ZWQ1ZWY0NjY2ZS4uN2UwM2RmNDdmZWE3ZGFmMjFjZWU5NTA5ODliYTg2
MjVmNmM3YThiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTExICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBsYXN0IHNlbGVjdGlvbiBhcyBjb21wbGVtZW50YXJ5IHNpZ25hbCB3aGVuIGFwcGx5
aW5nIERPTSBjaGFuZ2VzIHRvIHRoZSB0ZXh0IG1vZGVsLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxOTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHdlIHVzZSBoZXVyaXN0aWNzIGZv
ciBkZXRlY3RpbmcgZGFtYWdlZCBtb2RlbCByYW5nZSB1cG9uIERPTSBtdXRhdGlvbi4KKyAgICAg
ICAgVGhpcyBjaGFuZ2UgYWRkcyBzaWduYWxzIGZyb20gdGhlIGxhc3Qgc2VsZWN0aW9uIGFuZCBr
ZXlib2FyZCBldmVudHMgaW4gb3JkZXIgdG8KKyAgICAgICAgZnVydGhlciBpbXByb3ZlIHRoZSBo
ZXVyaXN0aWNzIHF1YWxpdHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1
bHRUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9y
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5cGUuX2hh
bmRsZVRleHRJbnB1dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3Iu
cHJvdG90eXBlLl9oYW5kbGVLZXlEb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0
VGV4dEVkaXRvci5wcm90b3R5cGUubGFzdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBlLndhc1Nob3duKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fYXBwbHlEb21VcGRhdGVzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFu
ZGxlU2VsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRF
ZGl0b3JNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UucHJvdG90eXBl
LmNvbXBhcmVUbyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLnByb3RvdHlwZS5z
aGlmdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLmVuZHNXaXRoQnJh
Y2tldFJlZ2V4Lik6CisKIDIwMTItMTEtMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZ2V0IHJpZCBvZiBlbnRlci9leGl0
VGV4dENoYW5nZU1vZGUgaW4gdGhlIGVkaXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKaW5kZXggOTIzMTA5Y2Ey
MGFhYmNkNzE4Y2I2MGMzYjQ3OWI1ODY2ZjlmY2MwYS4uZjg3N2JmZDJjNTQyOGZkZWQ4ODEzNzE0
OTA4YWRlZThhM2VkYmU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCkBAIC05Myw2ICs5Myw3IEBAIFdlYklu
c3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvciA9IGZ1bmN0aW9uKHVybCwgZGVsZWdhdGUpCiAgICAg
dGhpcy5fZ3V0dGVyUGFuZWwuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwg
Zm9yd2FyZFdoZWVsRXZlbnQuYmluZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgdGhpcy5lbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVLZXlEb3duLmJpbmQodGhp
cyksIGZhbHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidGV4dElucHV0
IiwgdGhpcy5faGFuZGxlVGV4dElucHV0LmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9jb250ZXh0TWVudS5i
aW5kKHRoaXMpLCB0cnVlKTsKIAogICAgIHRoaXMuX3JlZ2lzdGVyU2hvcnRjdXRzKCk7CkBAIC0z
OTYsMTMgKzM5NywyMSBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCisgICAgX2hhbmRsZVRleHRJbnB1
dDogZnVuY3Rpb24oZSkKKyAgICB7CisgICAgICAgIHRoaXMuX21haW5QYW5lbC5fdGV4dElucHV0
RGF0YSA9IGUuZGF0YTsKKyAgICB9LAorCiAgICAgX2hhbmRsZUtleURvd246IGZ1bmN0aW9uKGUp
CiAgICAgewogICAgICAgICB2YXIgc2hvcnRjdXRLZXkgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5tYWtlS2V5RnJvbUV2ZW50KGUpOwogCiAgICAgICAgIHZhciBoYW5kbGVyID0gdGhp
cy5fc2hvcnRjdXRzW3Nob3J0Y3V0S2V5XTsKLSAgICAgICAgaWYgKGhhbmRsZXIgJiYgaGFuZGxl
cigpKQorICAgICAgICBpZiAoaGFuZGxlciAmJiBoYW5kbGVyKCkpIHsKICAgICAgICAgICAgIGUu
Y29uc3VtZSh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0
aGlzLl9tYWluUGFuZWwuX2tleURvd25Db2RlID0gZS5rZXlDb2RlOwogICAgIH0sCiAKICAgICBf
Y29udGV4dE1lbnU6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtNDM2LDE3ICs0NDUsNiBAQCBXZWJJbnNw
ZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9tYWlu
UGFuZWwuc2Nyb2xsVG9MaW5lKGxpbmVOdW1iZXIpOwogICAgIH0sCiAKLSAgICBfaGFuZGxlU2Vs
ZWN0aW9uQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciB0ZXh0UmFu
Z2UgPSB0aGlzLl9tYWluUGFuZWwuX2dldFNlbGVjdGlvbigpOwotICAgICAgICBpZiAodGV4dFJh
bmdlKSB7Ci0gICAgICAgICAgICAvLyBXZSBkbyBub3QgcmVzdG9yZSBzZWxlY3Rpb24gYWZ0ZXIg
Zm9jdXMgbG9zdCB0byBhdm9pZCBzZWxlY3Rpb24gYmxpbmtpbmcuIFdlIHJlc3RvcmUgb25seSBj
dXJzb3IgcG9zaXRpb24gaW5zdGVhZC4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBjb25zaWRlciBh
ZGRpbmcgc2VsZWN0aW9uIGRlY29yYXRpb24gdG8gYmx1cnJlZCBlZGl0b3IuCi0gICAgICAgICAg
ICB0aGlzLl9sYXN0U2VsZWN0aW9uID0gV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5jcmVhdGVGcm9t
TG9jYXRpb24odGV4dFJhbmdlLmVuZExpbmUsIHRleHRSYW5nZS5lbmRDb2x1bW4pOwotICAgICAg
ICB9Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlLnNlbGVjdGlvbkNoYW5nZWQodGV4dFJhbmdlKTsK
LSAgICB9LAotCiAgICAgLyoqCiAgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlRleHRSYW5n
ZX0KICAgICAgKi8KQEAgLTQ2MCw3ICs0NTgsNyBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRF
ZGl0b3IucHJvdG90eXBlID0gewogICAgICAqLwogICAgIGxhc3RTZWxlY3Rpb246IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9sYXN0U2VsZWN0aW9uOworICAgICAgICBy
ZXR1cm4gdGhpcy5fbWFpblBhbmVsLl9sYXN0U2VsZWN0aW9uOwogICAgIH0sCiAKICAgICAvKioK
QEAgLTU0OCw3ICs1NDYsNyBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IucHJvdG90
eXBlID0gewogICAgICAgICBpZiAoIXRoaXMucmVhZE9ubHkoKSkKICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5tYXJrQmVpbmdFZGl0ZWQodGhpcy5lbGVtZW50LCB0cnVlKTsKIAotICAgICAgICB0
aGlzLl9ib3VuZFNlbGVjdGlvbkNoYW5nZUxpc3RlbmVyID0gdGhpcy5faGFuZGxlU2VsZWN0aW9u
Q2hhbmdlLmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuX2JvdW5kU2VsZWN0aW9uQ2hhbmdlTGlz
dGVuZXIgPSB0aGlzLl9tYWluUGFuZWwuX2hhbmRsZVNlbGVjdGlvbkNoYW5nZS5iaW5kKHRoaXMu
X21haW5QYW5lbCk7CiAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlv
bmNoYW5nZSIsIHRoaXMuX2JvdW5kU2VsZWN0aW9uQ2hhbmdlTGlzdGVuZXIsIGZhbHNlKTsKICAg
ICB9LAogCkBAIC0yMDc1LDcgKzIwNzMsNTEgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWlu
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fY29sbGVjdExpbmVzRnJvbURp
dihsaW5lcywgbGluZVJvdyk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBUcnkgdG8gZGVjcmVh
c2UgdGhlIHJhbmdlIGJlaW5nIHJlcGxhY2VkLCBpZiBwb3NzaWJsZS4KKyAgICAgICAgLy8gQ2hl
Y2sgd2hldGhlciByZXBsYWNpbmcgbGFzdCBzZWxlY3Rpb24gd2l0aCB0ZXh0SW5wdXQgZGF0YSBy
ZXN1bHRzIGluIHByZXNlbnQgRE9NLgorICAgICAgICAvLyBJZiB0aGF0IGlzIHNvLCB3ZSBoYXZl
IHByZWNpc2UgaW5wdXQgZm9yIHRoZSBlZGl0UmFuZ2UgY2FsbC4KKyAgICAgICAgdmFyIHRleHRJ
bnB1dERhdGEgPSB0aGlzLl90ZXh0SW5wdXREYXRhOworICAgICAgICBkZWxldGUgdGhpcy5fdGV4
dElucHV0RGF0YTsKKyAgICAgICAgdmFyIGlzQmFja3NwYWNlID0gdGhpcy5fa2V5RG93bkNvZGUg
PT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuQmFja3NwYWNlLmNvZGU7Cisg
ICAgICAgIGRlbGV0ZSB0aGlzLl9rZXlEb3duQ29kZTsKKworICAgICAgICBpZiAoIXRleHRJbnB1
dERhdGEgJiYgaXNCYWNrc3BhY2UpCisgICAgICAgICAgICB0ZXh0SW5wdXREYXRhID0gIiI7CisK
KyAgICAgICAgaWYgKHR5cGVvZiB0ZXh0SW5wdXREYXRhICE9PSAidW5kZWZpbmVkIiAmJiB0aGlz
Ll9sYXN0U2VsZWN0aW9uICYmIGRpcnR5TGluZXMuc3RhcnQgPD0gdGhpcy5fbGFzdFNlbGVjdGlv
bi5zdGFydExpbmUgJiYgZGlydHlMaW5lcy5lbmQgPj0gdGhpcy5fbGFzdFNlbGVjdGlvbi5lbmRM
aW5lKSB7CisgICAgICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLl9sYXN0U2VsZWN0aW9uLmNsb25l
KCk7CisgICAgICAgICAgICBpZiAoaXNCYWNrc3BhY2UgJiYgcmFuZ2UuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gSW5jbHVkZSBwcmV2aW91cyBjaGFyIGlmIHRoZXJlIHdhcyBubyBz
ZWxlY3Rpb24uCisgICAgICAgICAgICAgICAgaWYgKHJhbmdlLnN0YXJ0Q29sdW1uKQorICAgICAg
ICAgICAgICAgICAgICAtLXJhbmdlLnN0YXJ0Q29sdW1uOworICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKHJhbmdlLnN0YXJ0TGluZSkKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2Uuc3RhcnRDb2x1
bW4gPSB0aGlzLl90ZXh0TW9kZWwubGluZSgtLXJhbmdlLnN0YXJ0TGluZSkubGVuZ3RoOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLy8gV2Ugd2lsbCBjbG9uZSB0ZXh0IG1vZGVsIGFuZCBy
ZXBsYWNlIGxhc3Qgc2VsZWN0aW9uIHdpdGggdGV4dCBpbnB1dCBkYXRhIHRoZXJlLgorICAgICAg
ICAgICAgdmFyIGRvbU1vZGVsID0gdGhpcy5fdGV4dE1vZGVsLnNsaWNlKHN0YXJ0TGluZSwgZW5k
TGluZSk7CisgICAgICAgICAgICBkb21Nb2RlbC5lZGl0UmFuZ2UocmFuZ2Uuc2hpZnQoLXN0YXJ0
TGluZSksIHRleHRJbnB1dERhdGEgfHwgIiIpOworCisgICAgICAgICAgICAvLyBUaGVuIHdlJ2xs
IHRlc3QgaWYgdGhpcyBuZXcgbW9kZWwgbWF0Y2hlcyB0aGUgRE9NIGxpbmVzLgorICAgICAgICAg
ICAgdmFyIG1vZGVsc01hdGNoID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBt
b2RlbHNNYXRjaCAmJiBpIDwgZG9tTW9kZWwubGluZXNDb3VudDsgKytpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGRvbU1vZGVsLmxpbmUoaSkgIT09IGxpbmVzW2ldKSB7CisgICAgICAgICAgICAg
ICAgICAgIG1vZGVsc01hdGNoID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1vZGVs
c01hdGNoKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQg
Zm9yIHRoZSBwcm9wZXIgZWRpdFJhbmdlIGNhbGwKKyAgICAgICAgICAgICAgICB2YXIgc2VsZWN0
aW9uID0gdGhpcy5fZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgdGhpcy5fdGV4dE1v
ZGVsLmVkaXRSYW5nZShyYW5nZSwgdGV4dElucHV0RGF0YSB8fCAiIik7CisgICAgICAgICAgICAg
ICAgdGhpcy5fcGFpbnRTY2hlZHVsZWRMaW5lcyh0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9yZXN0b3JlU2VsZWN0aW9uKHNlbGVjdGlvbik7CisgICAgICAgICAgICAgICAgdGhpcy5fbGFz
dFNlbGVjdGlvbiA9IHRoaXMuX2dldFNlbGVjdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEZhbGxiYWNrIHRvIGdl
bmVyaWMgcmVwbGFjZS4gSXQgY3VycmVudGx5IGhhbmRsZXMgZGVsZXRlIGFzIHdlbGwuCisgICAg
ICAgIC8vIFRyeSB0byBkZWNyZWFzZSB0aGUgcmFuZ2UgYmVpbmcgcmVwbGFjZWQgYnkgbGluZXMs
IGlmIHBvc3NpYmxlLgogICAgICAgICB2YXIgc3RhcnRPZmZzZXQgPSAwOwogICAgICAgICB3aGls
ZSAoc3RhcnRMaW5lIDwgZGlydHlMaW5lcy5zdGFydCAmJiBzdGFydE9mZnNldCA8IGxpbmVzLmxl
bmd0aCkgewogICAgICAgICAgICAgaWYgKHRoaXMuX3RleHRNb2RlbC5saW5lKHN0YXJ0TGluZSkg
IT09IGxpbmVzW3N0YXJ0T2Zmc2V0XSkKQEAgLTIxMzgsNyArMjE4MCw3IEBAIFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVzdG9y
ZVNlbGVjdGlvbihzZWxlY3Rpb24pOwogCiAgICAgICAgIC8vIERlYnVnIGNoZWNrIGZvciB2YWxp
ZGF0aW5nIHdoZXRoZXIgdGV4dCBtb2RlbCBtYXRjaGVzIHRoZSBET00gcmVwcmVzZW50YXRpb24u
Ci0gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZWxlbWVudC5pbm5lclRleHQgPT09IHRoaXMu
X3RleHRNb2RlbC50ZXh0KCkgKyAiXG4iKTsKKyAgICAgICAgLy8gY29uc29sZS5hc3NlcnQodGhp
cy5lbGVtZW50LmlubmVyVGV4dCA9PT0gdGhpcy5fdGV4dE1vZGVsLnRleHQoKSArICJcbiIpOwog
ICAgIH0sCiAKICAgICAvKioKQEAgLTIzNTMsNiArMjM5NSwxNCBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBsaW5lcy5wdXNoKHRl
eHRDb250ZW50c1tpXSk7CiAgICAgfSwKIAorICAgIF9oYW5kbGVTZWxlY3Rpb25DaGFuZ2U6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHRleHRSYW5nZSA9IHRoaXMuX2dldFNl
bGVjdGlvbigpOworICAgICAgICBpZiAodGV4dFJhbmdlKQorICAgICAgICAgICAgdGhpcy5fbGFz
dFNlbGVjdGlvbiA9IHRleHRSYW5nZTsKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUuc2VsZWN0aW9u
Q2hhbmdlZCh0ZXh0UmFuZ2UpOworICAgIH0sCisKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JNb2RlbC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzCmluZGV4IDAw
ZmZhNGE0ZDgyMjIxODQwMDA2Y2M3ZmQxNTYxODQxYTZjMDEzZGIuLmI4NTEzOTkyNWIzYmRlOGI5
ZmE4NmFlN2EzNjg0YzExZmJmODUwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzCkBAIC0xMjYsNiArMTI2LDE1IEBA
IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5z
dGFydENvbHVtbiA8IG90aGVyLnN0YXJ0Q29sdW1uKQogICAgICAgICAgICAgcmV0dXJuIC0xOwog
ICAgICAgICByZXR1cm4gMDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGxpbmVPZmZzZXQKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfQor
ICAgICAqLworICAgIHNoaWZ0OiBmdW5jdGlvbihsaW5lT2Zmc2V0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKHRoaXMuc3RhcnRMaW5lICsgbGluZU9m
ZnNldCwgdGhpcy5zdGFydENvbHVtbiwgdGhpcy5lbmRMaW5lICsgbGluZU9mZnNldCwgdGhpcy5l
bmRDb2x1bW4pOwogICAgIH0KIH0KIApAQCAtNTk2LDUgKzYwNSwxOCBAQCBXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5ld1JhbmdlOwog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGZyb20KKyAgICAgKiBA
cGFyYW0ge251bWJlcj19IHRvCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNb2RlbH0KKyAgICAgKi8KKyAgICBzbGljZTogZnVuY3Rpb24oZnJvbSwgdG8pCisgICAgewor
ICAgICAgICB2YXIgdGV4dE1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwo
KTsKKyAgICAgICAgdGV4dE1vZGVsLl9saW5lcyA9IHRoaXMuX2xpbmVzLnNsaWNlKGZyb20sIHRv
KTsKKyAgICAgICAgdGV4dE1vZGVsLl9saW5lQnJlYWsgPSB0aGlzLl9saW5lQnJlYWs7CisgICAg
ICAgIHJldHVybiB0ZXh0TW9kZWw7CisgICAgfSwKKwogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGUKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173920</attachid>
            <date>2012-11-13 10:25:10 -0800</date>
            <delta_ts>2012-11-13 10:28:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101905-20121113222309.patch</filename>
            <type>text/plain</type>
            <size>13519</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY1NGYzNjQ2M2UxZTJi
MjA5YjdmMWU3YjgzYmVkZGU0ZDliMmQ5My4uYzMyMTEyMWI4ZTFmOTcyYTk1YzdlZDc4NzgxODg0
YmZiYjNlYWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTExLTEzICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBsYXN0IHNlbGVjdGlvbiBhcyBjb21wbGVtZW50YXJ5IHNpZ25hbCB3aGVuIGFwcGx5
aW5nIERPTSBjaGFuZ2VzIHRvIHRoZSB0ZXh0IG1vZGVsLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxOTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHdlIHVzZSBoZXVyaXN0aWNzIGZv
ciBkZXRlY3RpbmcgZGFtYWdlZCBtb2RlbCByYW5nZSB1cG9uIERPTSBtdXRhdGlvbi4KKyAgICAg
ICAgVGhpcyBjaGFuZ2UgYWRkcyBzaWduYWxzIGZyb20gdGhlIGxhc3Qgc2VsZWN0aW9uIGFuZCBr
ZXlib2FyZCBldmVudHMgaW4gb3JkZXIgdG8KKyAgICAgICAgZnVydGhlciBpbXByb3ZlIHRoZSBo
ZXVyaXN0aWNzIHF1YWxpdHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1
bHRUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9y
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5FZGl0SW5mbyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBlLl9oYW5kbGVU
ZXh0SW5wdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLnByb3Rv
dHlwZS5faGFuZGxlS2V5RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRF
ZGl0b3IucHJvdG90eXBlLmxhc3RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
ZmF1bHRUZXh0RWRpdG9yLnByb3RvdHlwZS53YXNTaG93bik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2FwcGx5RG9tVXBkYXRlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2d1ZXNzRWRp
dFJhbmdlQmFzZWRPblNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5wcm90b3R5cGUuX2d1ZXNzRWRpdFJhbmdlQmFzZWRPbkRpZmYpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9jbG9zaW5nQmxv
Y2tPZmZzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJv
dG90eXBlLl9oYW5kbGVTZWxlY3Rpb25DaGFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSYW5n
ZS5wcm90b3R5cGUuY29tcGFyZVRvKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uu
cHJvdG90eXBlLnNoaWZ0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwu
ZW5kc1dpdGhCcmFja2V0UmVnZXguKToKKwogMjAxMi0xMS0xMyAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjEzNDIwNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGVmYXVsdFRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCmluZGV4IGYxYjk4NGRiZDkyYmRhNmMzZjg1ZjMwYTc5
OTE1ZWFmMmFhYWI4Y2EuLmYwOGRhMWUwOWYwM2ViMjU4ZjMzODAxMWM4NzE2MzYwYWY5NDZiZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRl
eHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZh
dWx0VGV4dEVkaXRvci5qcwpAQCAtOTMsMTEgKzkzLDIzIEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0
VGV4dEVkaXRvciA9IGZ1bmN0aW9uKHVybCwgZGVsZWdhdGUpCiAgICAgdGhpcy5fZ3V0dGVyUGFu
ZWwuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgZm9yd2FyZFdoZWVsRXZl
bnQuYmluZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVLZXlEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKKyAg
ICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidGV4dElucHV0IiwgdGhpcy5faGFuZGxl
VGV4dElucHV0LmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9jb250ZXh0TWVudS5iaW5kKHRoaXMpLCB0cnVl
KTsKIAogICAgIHRoaXMuX3JlZ2lzdGVyU2hvcnRjdXRzKCk7CiB9CiAKKy8qKgorICogQGNvbnN0
cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCisgKiBAcGFy
YW0ge3N0cmluZ30gdGV4dAorICovCitXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IuRWRp
dEluZm8gPSBmdW5jdGlvbihyYW5nZSwgdGV4dCkKK3sKKyAgICB0aGlzLnJhbmdlID0gcmFuZ2U7
CisgICAgdGhpcy50ZXh0ID0gdGV4dDsKK30KKwogV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRp
dG9yLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5
cGUKQEAgLTM5NywxMyArNDA5LDIxIEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKKyAgICBfaGFuZGxl
VGV4dElucHV0OiBmdW5jdGlvbihlKQorICAgIHsKKyAgICAgICAgdGhpcy5fbWFpblBhbmVsLl90
ZXh0SW5wdXREYXRhID0gZS5kYXRhOworICAgIH0sCisKICAgICBfaGFuZGxlS2V5RG93bjogZnVu
Y3Rpb24oZSkKICAgICB7CiAgICAgICAgIHZhciBzaG9ydGN1dEtleSA9IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tRXZlbnQoZSk7CiAKICAgICAgICAgdmFyIGhhbmRs
ZXIgPSB0aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRLZXldOwotICAgICAgICBpZiAoaGFuZGxlciAm
JiBoYW5kbGVyKCkpCisgICAgICAgIGlmIChoYW5kbGVyICYmIGhhbmRsZXIoKSkgewogICAgICAg
ICAgICAgZS5jb25zdW1lKHRydWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIHRoaXMuX21haW5QYW5lbC5fa2V5RG93bkNvZGUgPSBlLmtleUNvZGU7CiAgICAgfSwK
IAogICAgIF9jb250ZXh0TWVudTogZnVuY3Rpb24oZXZlbnQpCkBAIC00MzcsMTcgKzQ1Nyw2IEBA
IFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX21haW5QYW5lbC5zY3JvbGxUb0xpbmUobGluZU51bWJlcik7CiAgICAgfSwKIAotICAgIF9o
YW5kbGVTZWxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFy
IHRleHRSYW5nZSA9IHRoaXMuX21haW5QYW5lbC5fZ2V0U2VsZWN0aW9uKCk7Ci0gICAgICAgIGlm
ICh0ZXh0UmFuZ2UpIHsKLSAgICAgICAgICAgIC8vIFdlIGRvIG5vdCByZXN0b3JlIHNlbGVjdGlv
biBhZnRlciBmb2N1cyBsb3N0IHRvIGF2b2lkIHNlbGVjdGlvbiBibGlua2luZy4gV2UgcmVzdG9y
ZSBvbmx5IGN1cnNvciBwb3NpdGlvbiBpbnN0ZWFkLgotICAgICAgICAgICAgLy8gRklYTUU6IGNv
bnNpZGVyIGFkZGluZyBzZWxlY3Rpb24gZGVjb3JhdGlvbiB0byBibHVycmVkIGVkaXRvci4KLSAg
ICAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3Rpb24gPSBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLmNy
ZWF0ZUZyb21Mb2NhdGlvbih0ZXh0UmFuZ2UuZW5kTGluZSwgdGV4dFJhbmdlLmVuZENvbHVtbik7
Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fZGVsZWdhdGUuc2VsZWN0aW9uQ2hhbmdlZCh0ZXh0
UmFuZ2UpOwotICAgIH0sCi0KICAgICAvKioKICAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3Iu
VGV4dFJhbmdlfQogICAgICAqLwpAQCAtNDYxLDcgKzQ3MCw3IEBAIFdlYkluc3BlY3Rvci5EZWZh
dWx0VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgbGFzdFNlbGVjdGlvbjog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RTZWxlY3Rpb247Cisg
ICAgICAgIHJldHVybiB0aGlzLl9tYWluUGFuZWwuX2xhc3RTZWxlY3Rpb247CiAgICAgfSwKIAog
ICAgIC8qKgpAQCAtNTQ5LDcgKzU1OCw3IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRv
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5yZWFkT25seSgpKQogICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZCh0aGlzLmVsZW1lbnQsIHRydWUpOwogCi0g
ICAgICAgIHRoaXMuX2JvdW5kU2VsZWN0aW9uQ2hhbmdlTGlzdGVuZXIgPSB0aGlzLl9oYW5kbGVT
ZWxlY3Rpb25DaGFuZ2UuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5fYm91bmRTZWxlY3Rpb25D
aGFuZ2VMaXN0ZW5lciA9IHRoaXMuX21haW5QYW5lbC5faGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJp
bmQodGhpcy5fbWFpblBhbmVsKTsKICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
c2VsZWN0aW9uY2hhbmdlIiwgdGhpcy5fYm91bmRTZWxlY3Rpb25DaGFuZ2VMaXN0ZW5lciwgZmFs
c2UpOwogICAgICAgICB0aGlzLl9tYWluUGFuZWwuX2F0dGFjaE11dGF0aW9uT2JzZXJ2ZXIoKTsK
ICAgICB9LApAQCAtMjEwMyw3ICsyMTEyLDg3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFp
blBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2NvbGxlY3RMaW5lc0Zyb21E
aXYobGluZXMsIGxpbmVSb3cpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gVHJ5IHRvIGRlY3Jl
YXNlIHRoZSByYW5nZSBiZWluZyByZXBsYWNlZCwgaWYgcG9zc2libGUuCisgICAgICAgIHZhciBl
ZGl0SW5mbyA9IHRoaXMuX2d1ZXNzRWRpdFJhbmdlQmFzZWRPblNlbGVjdGlvbihkaXJ0eUxpbmVz
LCBzdGFydExpbmUsIGVuZExpbmUsIGxpbmVzKTsKKyAgICAgICAgaWYgKCFlZGl0SW5mbykKKyAg
ICAgICAgICAgIGVkaXRJbmZvID0gdGhpcy5fZ3Vlc3NFZGl0UmFuZ2VCYXNlZE9uRGlmZihkaXJ0
eUxpbmVzLCBzdGFydExpbmUsIGVuZExpbmUsIGxpbmVzKTsKKworICAgICAgICBpZiAodGhpcy5f
dGV4dE1vZGVsLmNvcHlSYW5nZShlZGl0SW5mby5yYW5nZSkgPT09IGVkaXRJbmZvLnRleHQpCisg
ICAgICAgICAgICByZXR1cm47IC8vIE5vb3AKKworICAgICAgICB2YXIgc2VsZWN0aW9uID0gdGhp
cy5fZ2V0U2VsZWN0aW9uKCk7CisKKyAgICAgICAgLy8gVW5pbmRlbnQgYWZ0ZXIgYmxvY2sKKyAg
ICAgICAgaWYgKGVkaXRJbmZvLnRleHQgPT09ICJ9IiAmJiBlZGl0SW5mby5yYW5nZS5pc0VtcHR5
KCkgJiYgc2VsZWN0aW9uLmlzRW1wdHkoKSAmJiAhdGhpcy5fdGV4dE1vZGVsLmxpbmUoZWRpdElu
Zm8ucmFuZ2UuZW5kTGluZSkudHJpbSgpKSB7CisgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGhp
cy5fY2xvc2luZ0Jsb2NrT2Zmc2V0KGVkaXRJbmZvLnJhbmdlLCBzZWxlY3Rpb24pOworICAgICAg
ICAgICAgaWYgKG9mZnNldCA+PSAwKSB7CisgICAgICAgICAgICAgICAgZWRpdEluZm8ucmFuZ2Uu
c3RhcnRDb2x1bW4gPSBvZmZzZXQ7CisgICAgICAgICAgICAgICAgc2VsZWN0aW9uLnN0YXJ0Q29s
dW1uID0gb2Zmc2V0ICsgMTsKKyAgICAgICAgICAgICAgICBzZWxlY3Rpb24uZW5kQ29sdW1uID0g
b2Zmc2V0ICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3Rl
eHRNb2RlbC5lZGl0UmFuZ2UoZWRpdEluZm8ucmFuZ2UsIGVkaXRJbmZvLnRleHQpOworICAgICAg
ICB0aGlzLl9wYWludFNjaGVkdWxlZExpbmVzKHRydWUpOworICAgICAgICB0aGlzLl9yZXN0b3Jl
U2VsZWN0aW9uKHNlbGVjdGlvbik7CisgICAgICAgIHRoaXMuX2xhc3RTZWxlY3Rpb24gPSBzZWxl
Y3Rpb247CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkaXJ0eUxp
bmVzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0TGluZQorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBlbmRMaW5lCisgICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPn0gbGluZXMKKyAgICAg
KiBAcmV0dXJuIHs/V2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLkVkaXRJbmZvfQorICAg
ICAqLworICAgIF9ndWVzc0VkaXRSYW5nZUJhc2VkT25TZWxlY3Rpb246IGZ1bmN0aW9uKGRpcnR5
TGluZXMsIHN0YXJ0TGluZSwgZW5kTGluZSwgbGluZXMpCisgICAgeworICAgICAgICAvLyBDaGVj
ayB3aGV0aGVyIHJlcGxhY2luZyBsYXN0IHNlbGVjdGlvbiB3aXRoIHRleHRJbnB1dCBkYXRhIHJl
c3VsdHMgaW4gcHJlc2VudCBET00uCisgICAgICAgIC8vIElmIHRoYXQgaXMgc28sIHdlIGhhdmUg
cHJlY2lzZSBpbnB1dCBmb3IgdGhlIGVkaXRSYW5nZSBjYWxsLgorICAgICAgICB2YXIgdGV4dElu
cHV0RGF0YSA9IHRoaXMuX3RleHRJbnB1dERhdGE7CisgICAgICAgIGRlbGV0ZSB0aGlzLl90ZXh0
SW5wdXREYXRhOworICAgICAgICB2YXIgaXNCYWNrc3BhY2UgPSB0aGlzLl9rZXlEb3duQ29kZSA9
PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5CYWNrc3BhY2UuY29kZTsKKyAg
ICAgICAgZGVsZXRlIHRoaXMuX2tleURvd25Db2RlOworCisgICAgICAgIGlmICghdGV4dElucHV0
RGF0YSAmJiBpc0JhY2tzcGFjZSkKKyAgICAgICAgICAgIHRleHRJbnB1dERhdGEgPSAiIjsKKwor
ICAgICAgICBpZiAodHlwZW9mIHRleHRJbnB1dERhdGEgPT09ICJ1bmRlZmluZWQiIHx8ICF0aGlz
Ll9sYXN0U2VsZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIGlmIChk
aXJ0eUxpbmVzLnN0YXJ0ID4gdGhpcy5fbGFzdFNlbGVjdGlvbi5zdGFydExpbmUgfHwgZGlydHlM
aW5lcy5lbmQgPCB0aGlzLl9sYXN0U2VsZWN0aW9uLmVuZExpbmUpCisgICAgICAgICAgICByZXR1
cm4gbnVsbDsKKworICAgICAgICB0ZXh0SW5wdXREYXRhID0gdGV4dElucHV0RGF0YSB8fCAiIjsK
KyAgICAgICAgdmFyIHJhbmdlID0gdGhpcy5fbGFzdFNlbGVjdGlvbi5jbG9uZSgpOworICAgICAg
ICBpZiAoaXNCYWNrc3BhY2UgJiYgcmFuZ2UuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyBJ
bmNsdWRlIHByZXZpb3VzIGNoYXIgaWYgdGhlcmUgd2FzIG5vIHNlbGVjdGlvbi4KKyAgICAgICAg
ICAgIGlmIChyYW5nZS5zdGFydENvbHVtbikKKyAgICAgICAgICAgICAgICAtLXJhbmdlLnN0YXJ0
Q29sdW1uOworICAgICAgICAgICAgZWxzZSBpZiAocmFuZ2Uuc3RhcnRMaW5lKQorICAgICAgICAg
ICAgICAgIHJhbmdlLnN0YXJ0Q29sdW1uID0gdGhpcy5fdGV4dE1vZGVsLmxpbmUoLS1yYW5nZS5z
dGFydExpbmUpLmxlbmd0aDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIHdpbGwgY2xvbmUg
dGV4dCBtb2RlbCBhbmQgcmVwbGFjZSBsYXN0IHNlbGVjdGlvbiB3aXRoIHRleHQgaW5wdXQgZGF0
YSB0aGVyZS4KKyAgICAgICAgdmFyIGRvbU1vZGVsID0gdGhpcy5fdGV4dE1vZGVsLnNsaWNlKHN0
YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIGRvbU1vZGVsLmVkaXRSYW5nZShyYW5nZS5zaGlm
dCgtc3RhcnRMaW5lKSwgdGV4dElucHV0RGF0YSk7CisKKyAgICAgICAgLy8gVGhlbiB3ZSdsbCB0
ZXN0IGlmIHRoaXMgbmV3IG1vZGVsIG1hdGNoZXMgdGhlIERPTSBsaW5lcy4KKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7ICBpIDwgZG9tTW9kZWwubGluZXNDb3VudDsgKytpKSB7CisgICAgICAgICAg
ICBpZiAoZG9tTW9kZWwubGluZShpKSAhPT0gbGluZXNbaV0pCisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVm
YXVsdFRleHRFZGl0b3IuRWRpdEluZm8ocmFuZ2UsIHRleHRJbnB1dERhdGEpOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge09iamVjdH0gZGlydHlMaW5lcworICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBzdGFydExpbmUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kTGluZQorICAg
ICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz59IGxpbmVzCisgICAgICogQHJldHVybiB7V2ViSW5z
cGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLkVkaXRJbmZvfQorICAgICAqLworICAgIF9ndWVzc0Vk
aXRSYW5nZUJhc2VkT25EaWZmOiBmdW5jdGlvbihkaXJ0eUxpbmVzLCBzdGFydExpbmUsIGVuZExp
bmUsIGxpbmVzKQorICAgIHsKKyAgICAgICAgLy8gVHJ5IHRvIGRlY3JlYXNlIHRoZSByYW5nZSBi
ZWluZyByZXBsYWNlZCBieSBsaW5lcywgaWYgcG9zc2libGUuCiAgICAgICAgIHZhciBzdGFydE9m
ZnNldCA9IDA7CiAgICAgICAgIHdoaWxlIChzdGFydExpbmUgPCBkaXJ0eUxpbmVzLnN0YXJ0ICYm
IHN0YXJ0T2Zmc2V0IDwgbGluZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fdGV4
dE1vZGVsLmxpbmUoc3RhcnRMaW5lKSAhPT0gbGluZXNbc3RhcnRPZmZzZXRdKQpAQCAtMjE0Niwz
MiArMjIzNSwyMiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgc2VsZWN0aW9uID0g
dGhpcy5fZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIHZhciByYW5nZTsKICAgICAgICAgaWYgKGxp
bmVzLmxlbmd0aCA9PT0gMCAmJiBlbmRMaW5lIDwgdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291bnQp
Ci0gICAgICAgICAgICB2YXIgb2xkUmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShz
dGFydExpbmUsIDAsIGVuZExpbmUsIDApOworICAgICAgICAgICAgcmFuZ2UgPSBuZXcgV2ViSW5z
cGVjdG9yLlRleHRSYW5nZShzdGFydExpbmUsIDAsIGVuZExpbmUsIDApOwogICAgICAgICBlbHNl
IGlmIChsaW5lcy5sZW5ndGggPT09IDAgJiYgc3RhcnRMaW5lID4gMCkKLSAgICAgICAgICAgIHZh
ciBvbGRSYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKHN0YXJ0TGluZSAtIDEsIHRo
aXMuX3RleHRNb2RlbC5saW5lTGVuZ3RoKHN0YXJ0TGluZSAtIDEpLCBlbmRMaW5lIC0gMSwgdGhp
cy5fdGV4dE1vZGVsLmxpbmVMZW5ndGgoZW5kTGluZSAtIDEpKTsKKyAgICAgICAgICAgIHJhbmdl
ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uoc3RhcnRMaW5lIC0gMSwgdGhpcy5fdGV4dE1v
ZGVsLmxpbmVMZW5ndGgoc3RhcnRMaW5lIC0gMSksIGVuZExpbmUgLSAxLCB0aGlzLl90ZXh0TW9k
ZWwubGluZUxlbmd0aChlbmRMaW5lIC0gMSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2
YXIgb2xkUmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShzdGFydExpbmUsIHN0YXJ0
Q29sdW1uLCBlbmRMaW5lIC0gMSwgZW5kQ29sdW1uKTsKLQotICAgICAgICB2YXIgbmV3Q29udGVu
dCA9IGxpbmVzLmpvaW4oIlxuIik7Ci0gICAgICAgIGlmICh0aGlzLl90ZXh0TW9kZWwuY29weVJh
bmdlKG9sZFJhbmdlKSA9PT0gbmV3Q29udGVudCkKLSAgICAgICAgICAgIHJldHVybjsgLy8gTm9v
cAotCi0gICAgICAgIGlmIChsaW5lcy5sZW5ndGggPT09IDEgJiYgbGluZXNbMF0gPT09ICJ9IiAm
JiBvbGRSYW5nZS5pc0VtcHR5KCkgJiYgc2VsZWN0aW9uLmlzRW1wdHkoKSAmJiAhdGhpcy5fdGV4
dE1vZGVsLmxpbmUob2xkUmFuZ2UuZW5kTGluZSkudHJpbSgpKQotICAgICAgICAgICAgdGhpcy5f
dW5pbmRlbnRBZnRlckJsb2NrKG9sZFJhbmdlLCBzZWxlY3Rpb24pOwotCi0gICAgICAgIHRoaXMu
X3RleHRNb2RlbC5lZGl0UmFuZ2Uob2xkUmFuZ2UsIG5ld0NvbnRlbnQpOwotICAgICAgICB0aGlz
Ll9wYWludFNjaGVkdWxlZExpbmVzKHRydWUpOwotICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0
aW9uKHNlbGVjdGlvbik7Ci0KKyAgICAgICAgICAgIHJhbmdlID0gbmV3IFdlYkluc3BlY3Rvci5U
ZXh0UmFuZ2Uoc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSAtIDEsIGVuZENvbHVtbik7
CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLkVkaXRJ
bmZvKHJhbmdlLCBsaW5lcy5qb2luKCJcbiIpKTsKICAgICB9LAogCiAgICAgLyoqCiAgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSBvbGRSYW5nZQogICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0gc2VsZWN0aW9uCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGJsb2NrT2Zmc2V0CiAgICAgICovCi0gICAgX3VuaW5kZW50QWZ0ZXJCbG9jazogZnVuY3Rpb24o
b2xkUmFuZ2UsIHNlbGVjdGlvbikKKyAgICBfY2xvc2luZ0Jsb2NrT2Zmc2V0OiBmdW5jdGlvbihv
bGRSYW5nZSwgc2VsZWN0aW9uKQogICAgIHsKICAgICAgICAgdmFyIG5lc3RpbmdMZXZlbCA9IDE7
CiAgICAgICAgIGZvciAodmFyIGkgPSBvbGRSYW5nZS5lbmRMaW5lOyBpID49IDA7IC0taSkgewpA
QCAtMjE4NCwxOSArMjI2MywxNCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZVtjb2x1bW5dLnRva2Vu
VHlwZSA9PT0gImJsb2NrLXN0YXJ0IikgewogICAgICAgICAgICAgICAgICAgICBpZiAoISgtLW5l
c3RpbmdMZXZlbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaW5lQ29udGVudCA9
IHRoaXMuX3RleHRNb2RlbC5saW5lKGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJs
b2NrT2Zmc2V0ID0gbGluZUNvbnRlbnQubGVuZ3RoIC0gbGluZUNvbnRlbnQudHJpbUxlZnQoKS5s
ZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tPZmZzZXQgPCBvbGRSYW5n
ZS5zdGFydENvbHVtbikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFJhbmdlLnN0
YXJ0Q29sdW1uID0gYmxvY2tPZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
ZWN0aW9uLnN0YXJ0Q29sdW1uID0gYmxvY2tPZmZzZXQgKyAxOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGVjdGlvbi5lbmRDb2x1bW4gPSBibG9ja09mZnNldCArIDE7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGluZUNvbnRlbnQubGVuZ3RoIC0gbGluZUNvbnRl
bnQudHJpbUxlZnQoKS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZVtjb2x1bW5dLnRva2VuVHlwZSA9
PT0gImJsb2NrLWVuZCIpCiAgICAgICAgICAgICAgICAgICAgICsrbmVzdGluZ0xldmVsOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKICAgICB9LAogCiAgICAg
LyoqCkBAIC0yMzc5LDYgKzI0NTMsMTQgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgbGluZXMucHVzaCh0ZXh0Q29udGVudHNbaV0p
OwogICAgIH0sCiAKKyAgICBfaGFuZGxlU2VsZWN0aW9uQ2hhbmdlOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHZhciB0ZXh0UmFuZ2UgPSB0aGlzLl9nZXRTZWxlY3Rpb24oKTsKKyAg
ICAgICAgaWYgKHRleHRSYW5nZSkKKyAgICAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3Rpb24gPSB0
ZXh0UmFuZ2U7CisgICAgICAgIHRoaXMuX2RlbGVnYXRlLnNlbGVjdGlvbkNoYW5nZWQodGV4dFJh
bmdlKTsKKyAgICB9LAorCiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNo
dW5rZWRQYW5lbC5wcm90b3R5cGUKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JNb2RlbC5qcwppbmRleCBlZTViYjU4YjY2NWU4OWJi
NjFhNjhmNGFkMzIxOWQ2YThhNzlhZWQ2Li5mMGY1ZTNkNTVmM2U1Y2M4YWVhYmZhNWNkMGFmZTI1
MDJlNWI4ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RleHRFZGl0b3JNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RleHRFZGl0b3JNb2RlbC5qcwpAQCAtMTI2LDYgKzEyNiwxNSBAQCBXZWJJbnNwZWN0b3Iu
VGV4dFJhbmdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuc3RhcnRDb2x1bW4gPCBv
dGhlci5zdGFydENvbHVtbikKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgcmV0dXJu
IDA7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lT2Zmc2V0
CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0KKyAgICAgKi8KKyAgICBz
aGlmdDogZnVuY3Rpb24obGluZU9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLlRleHRSYW5nZSh0aGlzLnN0YXJ0TGluZSArIGxpbmVPZmZzZXQsIHRoaXMuc3Rh
cnRDb2x1bW4sIHRoaXMuZW5kTGluZSArIGxpbmVPZmZzZXQsIHRoaXMuZW5kQ29sdW1uKTsKICAg
ICB9CiB9CiAKQEAgLTU5Niw1ICs2MDUsMTggQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBuZXdSYW5nZTsKICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtudW1iZXI9fSBmcm9tCisgICAgICogQHBhcmFtIHtudW1iZXI9
fSB0bworICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWx9CisgICAg
ICovCisgICAgc2xpY2U6IGZ1bmN0aW9uKGZyb20sIHRvKQorICAgIHsKKyAgICAgICAgdmFyIHRl
eHRNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsKCk7CisgICAgICAgIHRl
eHRNb2RlbC5fbGluZXMgPSB0aGlzLl9saW5lcy5zbGljZShmcm9tLCB0byk7CisgICAgICAgIHRl
eHRNb2RlbC5fbGluZUJyZWFrID0gdGhpcy5fbGluZUJyZWFrOworICAgICAgICByZXR1cm4gdGV4
dE1vZGVsOworICAgIH0sCisKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJv
dG90eXBlCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173921</attachid>
            <date>2012-11-13 10:28:35 -0800</date>
            <delta_ts>2012-11-14 01:58:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101905-20121113222635.patch</filename>
            <type>text/plain</type>
            <size>13508</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY1NGYzNjQ2M2UxZTJi
MjA5YjdmMWU3YjgzYmVkZGU0ZDliMmQ5My4uYzMyMTEyMWI4ZTFmOTcyYTk1YzdlZDc4NzgxODg0
YmZiYjNlYWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTExLTEzICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBsYXN0IHNlbGVjdGlvbiBhcyBjb21wbGVtZW50YXJ5IHNpZ25hbCB3aGVuIGFwcGx5
aW5nIERPTSBjaGFuZ2VzIHRvIHRoZSB0ZXh0IG1vZGVsLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxOTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHdlIHVzZSBoZXVyaXN0aWNzIGZv
ciBkZXRlY3RpbmcgZGFtYWdlZCBtb2RlbCByYW5nZSB1cG9uIERPTSBtdXRhdGlvbi4KKyAgICAg
ICAgVGhpcyBjaGFuZ2UgYWRkcyBzaWduYWxzIGZyb20gdGhlIGxhc3Qgc2VsZWN0aW9uIGFuZCBr
ZXlib2FyZCBldmVudHMgaW4gb3JkZXIgdG8KKyAgICAgICAgZnVydGhlciBpbXByb3ZlIHRoZSBo
ZXVyaXN0aWNzIHF1YWxpdHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1
bHRUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9y
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5FZGl0SW5mbyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBlLl9oYW5kbGVU
ZXh0SW5wdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLnByb3Rv
dHlwZS5faGFuZGxlS2V5RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRF
ZGl0b3IucHJvdG90eXBlLmxhc3RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
ZmF1bHRUZXh0RWRpdG9yLnByb3RvdHlwZS53YXNTaG93bik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2FwcGx5RG9tVXBkYXRlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2d1ZXNzRWRp
dFJhbmdlQmFzZWRPblNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5wcm90b3R5cGUuX2d1ZXNzRWRpdFJhbmdlQmFzZWRPbkRpZmYpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9jbG9zaW5nQmxv
Y2tPZmZzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJv
dG90eXBlLl9oYW5kbGVTZWxlY3Rpb25DaGFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSYW5n
ZS5wcm90b3R5cGUuY29tcGFyZVRvKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uu
cHJvdG90eXBlLnNoaWZ0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwu
ZW5kc1dpdGhCcmFja2V0UmVnZXguKToKKwogMjAxMi0xMS0xMyAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjEzNDIwNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGVmYXVsdFRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCmluZGV4IGYxYjk4NGRiZDkyYmRhNmMzZjg1ZjMwYTc5
OTE1ZWFmMmFhYWI4Y2EuLjA3NDg5ZjVjZDNmMWQyNmEzYWFlZGM4MTJhODI0NGE3MTU4MWJkNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRl
eHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZh
dWx0VGV4dEVkaXRvci5qcwpAQCAtOTMsMTEgKzkzLDIzIEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0
VGV4dEVkaXRvciA9IGZ1bmN0aW9uKHVybCwgZGVsZWdhdGUpCiAgICAgdGhpcy5fZ3V0dGVyUGFu
ZWwuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgZm9yd2FyZFdoZWVsRXZl
bnQuYmluZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVLZXlEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKKyAg
ICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidGV4dElucHV0IiwgdGhpcy5faGFuZGxl
VGV4dElucHV0LmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9jb250ZXh0TWVudS5iaW5kKHRoaXMpLCB0cnVl
KTsKIAogICAgIHRoaXMuX3JlZ2lzdGVyU2hvcnRjdXRzKCk7CiB9CiAKKy8qKgorICogQGNvbnN0
cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCisgKiBAcGFy
YW0ge3N0cmluZ30gdGV4dAorICovCitXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IuRWRp
dEluZm8gPSBmdW5jdGlvbihyYW5nZSwgdGV4dCkKK3sKKyAgICB0aGlzLnJhbmdlID0gcmFuZ2U7
CisgICAgdGhpcy50ZXh0ID0gdGV4dDsKK30KKwogV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRp
dG9yLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5
cGUKQEAgLTM5NywxMyArNDA5LDIxIEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKKyAgICBfaGFuZGxl
VGV4dElucHV0OiBmdW5jdGlvbihlKQorICAgIHsKKyAgICAgICAgdGhpcy5fbWFpblBhbmVsLl90
ZXh0SW5wdXREYXRhID0gZS5kYXRhOworICAgIH0sCisKICAgICBfaGFuZGxlS2V5RG93bjogZnVu
Y3Rpb24oZSkKICAgICB7CiAgICAgICAgIHZhciBzaG9ydGN1dEtleSA9IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tRXZlbnQoZSk7CiAKICAgICAgICAgdmFyIGhhbmRs
ZXIgPSB0aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRLZXldOwotICAgICAgICBpZiAoaGFuZGxlciAm
JiBoYW5kbGVyKCkpCisgICAgICAgIGlmIChoYW5kbGVyICYmIGhhbmRsZXIoKSkgewogICAgICAg
ICAgICAgZS5jb25zdW1lKHRydWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIHRoaXMuX21haW5QYW5lbC5fa2V5RG93bkNvZGUgPSBlLmtleUNvZGU7CiAgICAgfSwK
IAogICAgIF9jb250ZXh0TWVudTogZnVuY3Rpb24oZXZlbnQpCkBAIC00MzcsMTcgKzQ1Nyw2IEBA
IFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX21haW5QYW5lbC5zY3JvbGxUb0xpbmUobGluZU51bWJlcik7CiAgICAgfSwKIAotICAgIF9o
YW5kbGVTZWxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFy
IHRleHRSYW5nZSA9IHRoaXMuX21haW5QYW5lbC5fZ2V0U2VsZWN0aW9uKCk7Ci0gICAgICAgIGlm
ICh0ZXh0UmFuZ2UpIHsKLSAgICAgICAgICAgIC8vIFdlIGRvIG5vdCByZXN0b3JlIHNlbGVjdGlv
biBhZnRlciBmb2N1cyBsb3N0IHRvIGF2b2lkIHNlbGVjdGlvbiBibGlua2luZy4gV2UgcmVzdG9y
ZSBvbmx5IGN1cnNvciBwb3NpdGlvbiBpbnN0ZWFkLgotICAgICAgICAgICAgLy8gRklYTUU6IGNv
bnNpZGVyIGFkZGluZyBzZWxlY3Rpb24gZGVjb3JhdGlvbiB0byBibHVycmVkIGVkaXRvci4KLSAg
ICAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3Rpb24gPSBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLmNy
ZWF0ZUZyb21Mb2NhdGlvbih0ZXh0UmFuZ2UuZW5kTGluZSwgdGV4dFJhbmdlLmVuZENvbHVtbik7
Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fZGVsZWdhdGUuc2VsZWN0aW9uQ2hhbmdlZCh0ZXh0
UmFuZ2UpOwotICAgIH0sCi0KICAgICAvKioKICAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3Iu
VGV4dFJhbmdlfQogICAgICAqLwpAQCAtNDYxLDcgKzQ3MCw3IEBAIFdlYkluc3BlY3Rvci5EZWZh
dWx0VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgbGFzdFNlbGVjdGlvbjog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RTZWxlY3Rpb247Cisg
ICAgICAgIHJldHVybiB0aGlzLl9tYWluUGFuZWwuX2xhc3RTZWxlY3Rpb247CiAgICAgfSwKIAog
ICAgIC8qKgpAQCAtNTQ5LDcgKzU1OCw3IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRv
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5yZWFkT25seSgpKQogICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZCh0aGlzLmVsZW1lbnQsIHRydWUpOwogCi0g
ICAgICAgIHRoaXMuX2JvdW5kU2VsZWN0aW9uQ2hhbmdlTGlzdGVuZXIgPSB0aGlzLl9oYW5kbGVT
ZWxlY3Rpb25DaGFuZ2UuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5fYm91bmRTZWxlY3Rpb25D
aGFuZ2VMaXN0ZW5lciA9IHRoaXMuX21haW5QYW5lbC5faGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJp
bmQodGhpcy5fbWFpblBhbmVsKTsKICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
c2VsZWN0aW9uY2hhbmdlIiwgdGhpcy5fYm91bmRTZWxlY3Rpb25DaGFuZ2VMaXN0ZW5lciwgZmFs
c2UpOwogICAgICAgICB0aGlzLl9tYWluUGFuZWwuX2F0dGFjaE11dGF0aW9uT2JzZXJ2ZXIoKTsK
ICAgICB9LApAQCAtMjEwMyw3ICsyMTEyLDg3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFp
blBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2NvbGxlY3RMaW5lc0Zyb21E
aXYobGluZXMsIGxpbmVSb3cpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gVHJ5IHRvIGRlY3Jl
YXNlIHRoZSByYW5nZSBiZWluZyByZXBsYWNlZCwgaWYgcG9zc2libGUuCisgICAgICAgIHZhciBl
ZGl0SW5mbyA9IHRoaXMuX2d1ZXNzRWRpdFJhbmdlQmFzZWRPblNlbGVjdGlvbihkaXJ0eUxpbmVz
LCBzdGFydExpbmUsIGVuZExpbmUsIGxpbmVzKTsKKyAgICAgICAgaWYgKCFlZGl0SW5mbykKKyAg
ICAgICAgICAgIGVkaXRJbmZvID0gdGhpcy5fZ3Vlc3NFZGl0UmFuZ2VCYXNlZE9uRGlmZihkaXJ0
eUxpbmVzLCBzdGFydExpbmUsIGVuZExpbmUsIGxpbmVzKTsKKworICAgICAgICBpZiAodGhpcy5f
dGV4dE1vZGVsLmNvcHlSYW5nZShlZGl0SW5mby5yYW5nZSkgPT09IGVkaXRJbmZvLnRleHQpCisg
ICAgICAgICAgICByZXR1cm47IC8vIE5vb3AKKworICAgICAgICB2YXIgc2VsZWN0aW9uID0gdGhp
cy5fZ2V0U2VsZWN0aW9uKCk7CisKKyAgICAgICAgLy8gVW5pbmRlbnQgYWZ0ZXIgYmxvY2sKKyAg
ICAgICAgaWYgKGVkaXRJbmZvLnRleHQgPT09ICJ9IiAmJiBlZGl0SW5mby5yYW5nZS5pc0VtcHR5
KCkgJiYgc2VsZWN0aW9uLmlzRW1wdHkoKSAmJiAhdGhpcy5fdGV4dE1vZGVsLmxpbmUoZWRpdElu
Zm8ucmFuZ2UuZW5kTGluZSkudHJpbSgpKSB7CisgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGhp
cy5fY2xvc2luZ0Jsb2NrT2Zmc2V0KGVkaXRJbmZvLnJhbmdlLCBzZWxlY3Rpb24pOworICAgICAg
ICAgICAgaWYgKG9mZnNldCA+PSAwKSB7CisgICAgICAgICAgICAgICAgZWRpdEluZm8ucmFuZ2Uu
c3RhcnRDb2x1bW4gPSBvZmZzZXQ7CisgICAgICAgICAgICAgICAgc2VsZWN0aW9uLnN0YXJ0Q29s
dW1uID0gb2Zmc2V0ICsgMTsKKyAgICAgICAgICAgICAgICBzZWxlY3Rpb24uZW5kQ29sdW1uID0g
b2Zmc2V0ICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3Rl
eHRNb2RlbC5lZGl0UmFuZ2UoZWRpdEluZm8ucmFuZ2UsIGVkaXRJbmZvLnRleHQpOworICAgICAg
ICB0aGlzLl9wYWludFNjaGVkdWxlZExpbmVzKHRydWUpOworICAgICAgICB0aGlzLl9yZXN0b3Jl
U2VsZWN0aW9uKHNlbGVjdGlvbik7CisgICAgICAgIHRoaXMuX2xhc3RTZWxlY3Rpb24gPSBzZWxl
Y3Rpb247CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkaXJ0eUxp
bmVzCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0TGluZQorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBlbmRMaW5lCisgICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPn0gbGluZXMKKyAgICAg
KiBAcmV0dXJuIHs/V2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLkVkaXRJbmZvfQorICAg
ICAqLworICAgIF9ndWVzc0VkaXRSYW5nZUJhc2VkT25TZWxlY3Rpb246IGZ1bmN0aW9uKGRpcnR5
TGluZXMsIHN0YXJ0TGluZSwgZW5kTGluZSwgbGluZXMpCisgICAgeworICAgICAgICAvLyBDaGVj
ayB3aGV0aGVyIHJlcGxhY2luZyBsYXN0IHNlbGVjdGlvbiB3aXRoIHRleHRJbnB1dCBkYXRhIHJl
c3VsdHMgaW4gcHJlc2VudCBET00uCisgICAgICAgIC8vIElmIHRoYXQgaXMgc28sIHdlIGhhdmUg
cHJlY2lzZSBpbnB1dCBmb3IgdGhlIGVkaXRSYW5nZSBjYWxsLgorICAgICAgICB2YXIgdGV4dElu
cHV0RGF0YSA9IHRoaXMuX3RleHRJbnB1dERhdGE7CisgICAgICAgIGRlbGV0ZSB0aGlzLl90ZXh0
SW5wdXREYXRhOworICAgICAgICB2YXIgaXNCYWNrc3BhY2UgPSB0aGlzLl9rZXlEb3duQ29kZSA9
PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5CYWNrc3BhY2UuY29kZTsKKyAg
ICAgICAgZGVsZXRlIHRoaXMuX2tleURvd25Db2RlOworCisgICAgICAgIGlmICghdGV4dElucHV0
RGF0YSAmJiBpc0JhY2tzcGFjZSkKKyAgICAgICAgICAgIHRleHRJbnB1dERhdGEgPSAiIjsKKwor
ICAgICAgICBpZiAodHlwZW9mIHRleHRJbnB1dERhdGEgPT09ICJ1bmRlZmluZWQiIHx8ICF0aGlz
Ll9sYXN0U2VsZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIGlmIChk
aXJ0eUxpbmVzLnN0YXJ0ID4gdGhpcy5fbGFzdFNlbGVjdGlvbi5zdGFydExpbmUgfHwgZGlydHlM
aW5lcy5lbmQgPCB0aGlzLl9sYXN0U2VsZWN0aW9uLmVuZExpbmUpCisgICAgICAgICAgICByZXR1
cm4gbnVsbDsKKworICAgICAgICB0ZXh0SW5wdXREYXRhID0gdGV4dElucHV0RGF0YSB8fCAiIjsK
KyAgICAgICAgdmFyIHJhbmdlID0gdGhpcy5fbGFzdFNlbGVjdGlvbi5jbG9uZSgpOworICAgICAg
ICBpZiAoaXNCYWNrc3BhY2UgJiYgcmFuZ2UuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyBJ
bmNsdWRlIHByZXZpb3VzIGNoYXIgaWYgdGhlcmUgd2FzIG5vIHNlbGVjdGlvbi4KKyAgICAgICAg
ICAgIGlmIChyYW5nZS5zdGFydENvbHVtbikKKyAgICAgICAgICAgICAgICAtLXJhbmdlLnN0YXJ0
Q29sdW1uOworICAgICAgICAgICAgZWxzZSBpZiAocmFuZ2Uuc3RhcnRMaW5lKQorICAgICAgICAg
ICAgICAgIHJhbmdlLnN0YXJ0Q29sdW1uID0gdGhpcy5fdGV4dE1vZGVsLmxpbmUoLS1yYW5nZS5z
dGFydExpbmUpLmxlbmd0aDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIHdpbGwgY2xvbmUg
dGV4dCBtb2RlbCBhbmQgcmVwbGFjZSBsYXN0IHNlbGVjdGlvbiB3aXRoIHRleHQgaW5wdXQgZGF0
YSB0aGVyZS4KKyAgICAgICAgdmFyIGRvbU1vZGVsID0gdGhpcy5fdGV4dE1vZGVsLnNsaWNlKHN0
YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIGRvbU1vZGVsLmVkaXRSYW5nZShyYW5nZS5zaGlm
dCgtc3RhcnRMaW5lKSwgdGV4dElucHV0RGF0YSk7CisKKyAgICAgICAgLy8gVGhlbiB3ZSdsbCB0
ZXN0IGlmIHRoaXMgbmV3IG1vZGVsIG1hdGNoZXMgdGhlIERPTSBsaW5lcy4KKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7ICBpIDwgZG9tTW9kZWwubGluZXNDb3VudDsgKytpKSB7CisgICAgICAgICAg
ICBpZiAoZG9tTW9kZWwubGluZShpKSAhPT0gbGluZXNbaV0pCisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVm
YXVsdFRleHRFZGl0b3IuRWRpdEluZm8ocmFuZ2UsIHRleHRJbnB1dERhdGEpOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge09iamVjdH0gZGlydHlMaW5lcworICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBzdGFydExpbmUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kTGluZQorICAg
ICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz59IGxpbmVzCisgICAgICogQHJldHVybiB7V2ViSW5z
cGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLkVkaXRJbmZvfQorICAgICAqLworICAgIF9ndWVzc0Vk
aXRSYW5nZUJhc2VkT25EaWZmOiBmdW5jdGlvbihkaXJ0eUxpbmVzLCBzdGFydExpbmUsIGVuZExp
bmUsIGxpbmVzKQorICAgIHsKKyAgICAgICAgLy8gVHJ5IHRvIGRlY3JlYXNlIHRoZSByYW5nZSBi
ZWluZyByZXBsYWNlZCBieSBsaW5lcywgaWYgcG9zc2libGUuCiAgICAgICAgIHZhciBzdGFydE9m
ZnNldCA9IDA7CiAgICAgICAgIHdoaWxlIChzdGFydExpbmUgPCBkaXJ0eUxpbmVzLnN0YXJ0ICYm
IHN0YXJ0T2Zmc2V0IDwgbGluZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fdGV4
dE1vZGVsLmxpbmUoc3RhcnRMaW5lKSAhPT0gbGluZXNbc3RhcnRPZmZzZXRdKQpAQCAtMjE0Niwz
MiArMjIzNSwyMiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgc2VsZWN0aW9uID0g
dGhpcy5fZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIHZhciByYW5nZTsKICAgICAgICAgaWYgKGxp
bmVzLmxlbmd0aCA9PT0gMCAmJiBlbmRMaW5lIDwgdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291bnQp
Ci0gICAgICAgICAgICB2YXIgb2xkUmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShz
dGFydExpbmUsIDAsIGVuZExpbmUsIDApOworICAgICAgICAgICAgcmFuZ2UgPSBuZXcgV2ViSW5z
cGVjdG9yLlRleHRSYW5nZShzdGFydExpbmUsIDAsIGVuZExpbmUsIDApOwogICAgICAgICBlbHNl
IGlmIChsaW5lcy5sZW5ndGggPT09IDAgJiYgc3RhcnRMaW5lID4gMCkKLSAgICAgICAgICAgIHZh
ciBvbGRSYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKHN0YXJ0TGluZSAtIDEsIHRo
aXMuX3RleHRNb2RlbC5saW5lTGVuZ3RoKHN0YXJ0TGluZSAtIDEpLCBlbmRMaW5lIC0gMSwgdGhp
cy5fdGV4dE1vZGVsLmxpbmVMZW5ndGgoZW5kTGluZSAtIDEpKTsKKyAgICAgICAgICAgIHJhbmdl
ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uoc3RhcnRMaW5lIC0gMSwgdGhpcy5fdGV4dE1v
ZGVsLmxpbmVMZW5ndGgoc3RhcnRMaW5lIC0gMSksIGVuZExpbmUgLSAxLCB0aGlzLl90ZXh0TW9k
ZWwubGluZUxlbmd0aChlbmRMaW5lIC0gMSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2
YXIgb2xkUmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShzdGFydExpbmUsIHN0YXJ0
Q29sdW1uLCBlbmRMaW5lIC0gMSwgZW5kQ29sdW1uKTsKLQotICAgICAgICB2YXIgbmV3Q29udGVu
dCA9IGxpbmVzLmpvaW4oIlxuIik7Ci0gICAgICAgIGlmICh0aGlzLl90ZXh0TW9kZWwuY29weVJh
bmdlKG9sZFJhbmdlKSA9PT0gbmV3Q29udGVudCkKLSAgICAgICAgICAgIHJldHVybjsgLy8gTm9v
cAotCi0gICAgICAgIGlmIChsaW5lcy5sZW5ndGggPT09IDEgJiYgbGluZXNbMF0gPT09ICJ9IiAm
JiBvbGRSYW5nZS5pc0VtcHR5KCkgJiYgc2VsZWN0aW9uLmlzRW1wdHkoKSAmJiAhdGhpcy5fdGV4
dE1vZGVsLmxpbmUob2xkUmFuZ2UuZW5kTGluZSkudHJpbSgpKQotICAgICAgICAgICAgdGhpcy5f
dW5pbmRlbnRBZnRlckJsb2NrKG9sZFJhbmdlLCBzZWxlY3Rpb24pOwotCi0gICAgICAgIHRoaXMu
X3RleHRNb2RlbC5lZGl0UmFuZ2Uob2xkUmFuZ2UsIG5ld0NvbnRlbnQpOwotICAgICAgICB0aGlz
Ll9wYWludFNjaGVkdWxlZExpbmVzKHRydWUpOwotICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0
aW9uKHNlbGVjdGlvbik7Ci0KKyAgICAgICAgICAgIHJhbmdlID0gbmV3IFdlYkluc3BlY3Rvci5U
ZXh0UmFuZ2Uoc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSAtIDEsIGVuZENvbHVtbik7
CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLkVkaXRJ
bmZvKHJhbmdlLCBsaW5lcy5qb2luKCJcbiIpKTsKICAgICB9LAogCiAgICAgLyoqCiAgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSBvbGRSYW5nZQogICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0gc2VsZWN0aW9uCisgICAgICogQHJldHVybiB7bnVtYmVy
fQogICAgICAqLwotICAgIF91bmluZGVudEFmdGVyQmxvY2s6IGZ1bmN0aW9uKG9sZFJhbmdlLCBz
ZWxlY3Rpb24pCisgICAgX2Nsb3NpbmdCbG9ja09mZnNldDogZnVuY3Rpb24ob2xkUmFuZ2UsIHNl
bGVjdGlvbikKICAgICB7CiAgICAgICAgIHZhciBuZXN0aW5nTGV2ZWwgPSAxOwogICAgICAgICBm
b3IgKHZhciBpID0gb2xkUmFuZ2UuZW5kTGluZTsgaSA+PSAwOyAtLWkpIHsKQEAgLTIxODQsMTkg
KzIyNjMsMTQgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVbY29sdW1uXS50b2tlblR5cGUgPT09ICJi
bG9jay1zdGFydCIpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCEoLS1uZXN0aW5nTGV2ZWwp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGluZUNvbnRlbnQgPSB0aGlzLl90ZXh0
TW9kZWwubGluZShpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBibG9ja09mZnNldCA9
IGxpbmVDb250ZW50Lmxlbmd0aCAtIGxpbmVDb250ZW50LnRyaW1MZWZ0KCkubGVuZ3RoOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrT2Zmc2V0IDwgb2xkUmFuZ2Uuc3RhcnRDb2x1
bW4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRSYW5nZS5zdGFydENvbHVtbiA9
IGJsb2NrT2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5zdGFy
dENvbHVtbiA9IGJsb2NrT2Zmc2V0ICsgMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxlY3Rpb24uZW5kQ29sdW1uID0gYmxvY2tPZmZzZXQgKyAxOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxpbmVDb250ZW50Lmxlbmd0aCAtIGxpbmVDb250ZW50LnRyaW1MZWZ0
KCkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVbY29sdW1uXS50b2tlblR5cGUgPT09ICJibG9jay1l
bmQiKQogICAgICAgICAgICAgICAgICAgICArK25lc3RpbmdMZXZlbDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMjM3
OSw2ICsyNDUzLDE0IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGxpbmVzLnB1c2godGV4dENvbnRlbnRzW2ldKTsKICAgICB9LAog
CisgICAgX2hhbmRsZVNlbGVjdGlvbkNoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICB2YXIgdGV4dFJhbmdlID0gdGhpcy5fZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIGlmICh0
ZXh0UmFuZ2UpCisgICAgICAgICAgICB0aGlzLl9sYXN0U2VsZWN0aW9uID0gdGV4dFJhbmdlOwor
ICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zZWxlY3Rpb25DaGFuZ2VkKHRleHRSYW5nZSk7CisgICAg
fSwKKwogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwu
cHJvdG90eXBlCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9UZXh0RWRpdG9yTW9kZWwuanMKaW5kZXggZWU1YmI1OGI2NjVlODliYjYxYTY4ZjRhZDMy
MTlkNmE4YTc5YWVkNi4uZjBmNWUzZDU1ZjNlNWNjOGFlYWJmYTVjZDBhZmUyNTAyZTViOGUxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9y
TW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRp
dG9yTW9kZWwuanMKQEAgLTEyNiw2ICsxMjYsMTUgQEAgV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnN0YXJ0Q29sdW1uIDwgb3RoZXIuc3RhcnRD
b2x1bW4pCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIHJldHVybiAwOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU9mZnNldAorICAgICAqIEBy
ZXR1cm4ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9CisgICAgICovCisgICAgc2hpZnQ6IGZ1bmN0
aW9uKGxpbmVPZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5U
ZXh0UmFuZ2UodGhpcy5zdGFydExpbmUgKyBsaW5lT2Zmc2V0LCB0aGlzLnN0YXJ0Q29sdW1uLCB0
aGlzLmVuZExpbmUgKyBsaW5lT2Zmc2V0LCB0aGlzLmVuZENvbHVtbik7CiAgICAgfQogfQogCkBA
IC01OTYsNSArNjA1LDE4IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gbmV3UmFuZ2U7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAq
IEBwYXJhbSB7bnVtYmVyPX0gZnJvbQorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gdG8KKyAgICAg
KiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsfQorICAgICAqLworICAgIHNs
aWNlOiBmdW5jdGlvbihmcm9tLCB0bykKKyAgICB7CisgICAgICAgIHZhciB0ZXh0TW9kZWwgPSBu
ZXcgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbCgpOworICAgICAgICB0ZXh0TW9kZWwuX2xp
bmVzID0gdGhpcy5fbGluZXMuc2xpY2UoZnJvbSwgdG8pOworICAgICAgICB0ZXh0TW9kZWwuX2xp
bmVCcmVhayA9IHRoaXMuX2xpbmVCcmVhazsKKyAgICAgICAgcmV0dXJuIHRleHRNb2RlbDsKKyAg
ICB9LAorCiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174114</attachid>
            <date>2012-11-14 01:58:52 -0800</date>
            <delta_ts>2012-11-14 05:09:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101905-20121114135651.patch</filename>
            <type>text/plain</type>
            <size>15494</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY1NGYzNjQ2M2UxZTJi
MjA5YjdmMWU3YjgzYmVkZGU0ZDliMmQ5My4uYzMyMTEyMWI4ZTFmOTcyYTk1YzdlZDc4NzgxODg0
YmZiYjNlYWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTExLTEzICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBsYXN0IHNlbGVjdGlvbiBhcyBjb21wbGVtZW50YXJ5IHNpZ25hbCB3aGVuIGFwcGx5
aW5nIERPTSBjaGFuZ2VzIHRvIHRoZSB0ZXh0IG1vZGVsLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxOTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHdlIHVzZSBoZXVyaXN0aWNzIGZv
ciBkZXRlY3RpbmcgZGFtYWdlZCBtb2RlbCByYW5nZSB1cG9uIERPTSBtdXRhdGlvbi4KKyAgICAg
ICAgVGhpcyBjaGFuZ2UgYWRkcyBzaWduYWxzIGZyb20gdGhlIGxhc3Qgc2VsZWN0aW9uIGFuZCBr
ZXlib2FyZCBldmVudHMgaW4gb3JkZXIgdG8KKyAgICAgICAgZnVydGhlciBpbXByb3ZlIHRoZSBo
ZXVyaXN0aWNzIHF1YWxpdHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1
bHRUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9y
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5FZGl0SW5mbyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBlLl9oYW5kbGVU
ZXh0SW5wdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLnByb3Rv
dHlwZS5faGFuZGxlS2V5RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRF
ZGl0b3IucHJvdG90eXBlLmxhc3RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
ZmF1bHRUZXh0RWRpdG9yLnByb3RvdHlwZS53YXNTaG93bik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2FwcGx5RG9tVXBkYXRlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2d1ZXNzRWRp
dFJhbmdlQmFzZWRPblNlbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5wcm90b3R5cGUuX2d1ZXNzRWRpdFJhbmdlQmFzZWRPbkRpZmYpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9jbG9zaW5nQmxv
Y2tPZmZzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJv
dG90eXBlLl9oYW5kbGVTZWxlY3Rpb25DaGFuZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSYW5n
ZS5wcm90b3R5cGUuY29tcGFyZVRvKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uu
cHJvdG90eXBlLnNoaWZ0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwu
ZW5kc1dpdGhCcmFja2V0UmVnZXguKToKKwogMjAxMi0xMS0xMyAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjEzNDIwNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGVmYXVsdFRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCmluZGV4IGYxYjk4NGRiZDkyYmRhNmMzZjg1ZjMwYTc5
OTE1ZWFmMmFhYWI4Y2EuLjliYWQ1N2NhODc3YjgzODE0NjdiYzM5OTdlOWIyNzdiOWQ3YjQ4OWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRl
eHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZh
dWx0VGV4dEVkaXRvci5qcwpAQCAtOTMsMTEgKzkzLDIzIEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0
VGV4dEVkaXRvciA9IGZ1bmN0aW9uKHVybCwgZGVsZWdhdGUpCiAgICAgdGhpcy5fZ3V0dGVyUGFu
ZWwuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgZm9yd2FyZFdoZWVsRXZl
bnQuYmluZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVLZXlEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKKyAg
ICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidGV4dElucHV0IiwgdGhpcy5faGFuZGxl
VGV4dElucHV0LmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9jb250ZXh0TWVudS5iaW5kKHRoaXMpLCB0cnVl
KTsKIAogICAgIHRoaXMuX3JlZ2lzdGVyU2hvcnRjdXRzKCk7CiB9CiAKKy8qKgorICogQGNvbnN0
cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCisgKiBAcGFy
YW0ge3N0cmluZ30gdGV4dAorICovCitXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IuRWRp
dEluZm8gPSBmdW5jdGlvbihyYW5nZSwgdGV4dCkKK3sKKyAgICB0aGlzLnJhbmdlID0gcmFuZ2U7
CisgICAgdGhpcy50ZXh0ID0gdGV4dDsKK30KKwogV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRp
dG9yLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5
cGUKQEAgLTM5NywxMyArNDA5LDIxIEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKKyAgICBfaGFuZGxl
VGV4dElucHV0OiBmdW5jdGlvbihlKQorICAgIHsKKyAgICAgICAgdGhpcy5fbWFpblBhbmVsLl90
ZXh0SW5wdXREYXRhID0gZS5kYXRhOworICAgIH0sCisKICAgICBfaGFuZGxlS2V5RG93bjogZnVu
Y3Rpb24oZSkKICAgICB7CiAgICAgICAgIHZhciBzaG9ydGN1dEtleSA9IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tRXZlbnQoZSk7CiAKICAgICAgICAgdmFyIGhhbmRs
ZXIgPSB0aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRLZXldOwotICAgICAgICBpZiAoaGFuZGxlciAm
JiBoYW5kbGVyKCkpCisgICAgICAgIGlmIChoYW5kbGVyICYmIGhhbmRsZXIoKSkgewogICAgICAg
ICAgICAgZS5jb25zdW1lKHRydWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIHRoaXMuX21haW5QYW5lbC5fa2V5RG93bkNvZGUgPSBlLmtleUNvZGU7CiAgICAgfSwK
IAogICAgIF9jb250ZXh0TWVudTogZnVuY3Rpb24oZXZlbnQpCkBAIC00MzcsMTcgKzQ1Nyw2IEBA
IFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX21haW5QYW5lbC5zY3JvbGxUb0xpbmUobGluZU51bWJlcik7CiAgICAgfSwKIAotICAgIF9o
YW5kbGVTZWxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFy
IHRleHRSYW5nZSA9IHRoaXMuX21haW5QYW5lbC5fZ2V0U2VsZWN0aW9uKCk7Ci0gICAgICAgIGlm
ICh0ZXh0UmFuZ2UpIHsKLSAgICAgICAgICAgIC8vIFdlIGRvIG5vdCByZXN0b3JlIHNlbGVjdGlv
biBhZnRlciBmb2N1cyBsb3N0IHRvIGF2b2lkIHNlbGVjdGlvbiBibGlua2luZy4gV2UgcmVzdG9y
ZSBvbmx5IGN1cnNvciBwb3NpdGlvbiBpbnN0ZWFkLgotICAgICAgICAgICAgLy8gRklYTUU6IGNv
bnNpZGVyIGFkZGluZyBzZWxlY3Rpb24gZGVjb3JhdGlvbiB0byBibHVycmVkIGVkaXRvci4KLSAg
ICAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3Rpb24gPSBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLmNy
ZWF0ZUZyb21Mb2NhdGlvbih0ZXh0UmFuZ2UuZW5kTGluZSwgdGV4dFJhbmdlLmVuZENvbHVtbik7
Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fZGVsZWdhdGUuc2VsZWN0aW9uQ2hhbmdlZCh0ZXh0
UmFuZ2UpOwotICAgIH0sCi0KICAgICAvKioKICAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3Iu
VGV4dFJhbmdlfQogICAgICAqLwpAQCAtNDYxLDcgKzQ3MCw3IEBAIFdlYkluc3BlY3Rvci5EZWZh
dWx0VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgbGFzdFNlbGVjdGlvbjog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RTZWxlY3Rpb247Cisg
ICAgICAgIHJldHVybiB0aGlzLl9tYWluUGFuZWwuX2xhc3RTZWxlY3Rpb247CiAgICAgfSwKIAog
ICAgIC8qKgpAQCAtNDY5LDcgKzQ3OCw3IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRv
ci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgc2V0U2VsZWN0aW9uOiBmdW5jdGlvbih0ZXh0
UmFuZ2UpCiAgICAgewotICAgICAgICB0aGlzLl9sYXN0U2VsZWN0aW9uID0gdGV4dFJhbmdlOwor
ICAgICAgICB0aGlzLl9tYWluUGFuZWwuX2xhc3RTZWxlY3Rpb24gPSB0ZXh0UmFuZ2U7CiAgICAg
ICAgIGlmICh0aGlzLmVsZW1lbnQuaXNBbmNlc3Rvcihkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkK
ICAgICAgICAgICAgIHRoaXMuX21haW5QYW5lbC5fcmVzdG9yZVNlbGVjdGlvbih0ZXh0UmFuZ2Up
OwogICAgIH0sCkBAIC01NDksMTUgKzU1OCwxNSBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRF
ZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXRoaXMucmVhZE9ubHkoKSkKICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5tYXJrQmVpbmdFZGl0ZWQodGhpcy5lbGVtZW50LCB0cnVlKTsK
IAotICAgICAgICB0aGlzLl9ib3VuZFNlbGVjdGlvbkNoYW5nZUxpc3RlbmVyID0gdGhpcy5faGFu
ZGxlU2VsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuX2JvdW5kU2VsZWN0
aW9uQ2hhbmdlTGlzdGVuZXIgPSB0aGlzLl9tYWluUGFuZWwuX2hhbmRsZVNlbGVjdGlvbkNoYW5n
ZS5iaW5kKHRoaXMuX21haW5QYW5lbCk7CiAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoInNlbGVjdGlvbmNoYW5nZSIsIHRoaXMuX2JvdW5kU2VsZWN0aW9uQ2hhbmdlTGlzdGVuZXIs
IGZhbHNlKTsKICAgICAgICAgdGhpcy5fbWFpblBhbmVsLl9hdHRhY2hNdXRhdGlvbk9ic2VydmVy
KCk7CiAgICAgfSwKIAogICAgIF9oYW5kbGVGb2N1c2VkOiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICBpZiAodGhpcy5fbGFzdFNlbGVjdGlvbikKLSAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0
aW9uKHRoaXMuX2xhc3RTZWxlY3Rpb24pOworICAgICAgICBpZiAodGhpcy5fbWFpblBhbmVsLl9s
YXN0U2VsZWN0aW9uKQorICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24odGhpcy5fbWFpblBh
bmVsLl9sYXN0U2VsZWN0aW9uKTsKICAgICB9LAogCiAgICAgd2lsbEhpZGU6IGZ1bmN0aW9uKCkK
QEAgLTE4MjAsNiArMTgyOSw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
KyAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGlvbiA9IHJhbmdlOwogICAgIH0sCiAKICAgICAvKioK
QEAgLTIxMDMsNyArMjExMyw4NCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9jb2xsZWN0TGluZXNGcm9tRGl2KGxpbmVz
LCBsaW5lUm93KTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFRyeSB0byBkZWNyZWFzZSB0aGUg
cmFuZ2UgYmVpbmcgcmVwbGFjZWQsIGlmIHBvc3NpYmxlLgorICAgICAgICB2YXIgZWRpdEluZm8g
PSB0aGlzLl9ndWVzc0VkaXRSYW5nZUJhc2VkT25TZWxlY3Rpb24oZGlydHlMaW5lcywgc3RhcnRM
aW5lLCBlbmRMaW5lLCBsaW5lcyk7CisgICAgICAgIGlmICghZWRpdEluZm8pCisgICAgICAgICAg
ICBlZGl0SW5mbyA9IHRoaXMuX2d1ZXNzRWRpdFJhbmdlQmFzZWRPbkRpZmYoZGlydHlMaW5lcywg
c3RhcnRMaW5lLCBlbmRMaW5lLCBsaW5lcyk7CisKKyAgICAgICAgaWYgKHRoaXMuX3RleHRNb2Rl
bC5jb3B5UmFuZ2UoZWRpdEluZm8ucmFuZ2UpID09PSBlZGl0SW5mby50ZXh0KQorICAgICAgICAg
ICAgcmV0dXJuOyAvLyBOb29wCisKKyAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMuX2dldFNl
bGVjdGlvbigpOworCisgICAgICAgIC8vIFVuaW5kZW50IGFmdGVyIGJsb2NrCisgICAgICAgIGlm
IChlZGl0SW5mby50ZXh0ID09PSAifSIgJiYgZWRpdEluZm8ucmFuZ2UuaXNFbXB0eSgpICYmIHNl
bGVjdGlvbi5pc0VtcHR5KCkgJiYgIXRoaXMuX3RleHRNb2RlbC5saW5lKGVkaXRJbmZvLnJhbmdl
LmVuZExpbmUpLnRyaW0oKSkgeworICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMuX2Nsb3Np
bmdCbG9ja09mZnNldChlZGl0SW5mby5yYW5nZSwgc2VsZWN0aW9uKTsKKyAgICAgICAgICAgIGlm
IChvZmZzZXQgPj0gMCkgeworICAgICAgICAgICAgICAgIGVkaXRJbmZvLnJhbmdlLnN0YXJ0Q29s
dW1uID0gb2Zmc2V0OworICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5zdGFydENvbHVtbiA9IG9m
ZnNldCArIDE7CisgICAgICAgICAgICAgICAgc2VsZWN0aW9uLmVuZENvbHVtbiA9IG9mZnNldCAr
IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl90ZXh0TW9kZWwu
ZWRpdFJhbmdlKGVkaXRJbmZvLnJhbmdlLCBlZGl0SW5mby50ZXh0KTsKKyAgICAgICAgdGhpcy5f
cGFpbnRTY2hlZHVsZWRMaW5lcyh0cnVlKTsKKyAgICAgICAgdGhpcy5fcmVzdG9yZVNlbGVjdGlv
bihzZWxlY3Rpb24pOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge09iamVjdH0g
ZGlydHlMaW5lcworICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydExpbmUKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gZW5kTGluZQorICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz59IGxpbmVz
CisgICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5FZGl0SW5m
b30KKyAgICAgKi8KKyAgICBfZ3Vlc3NFZGl0UmFuZ2VCYXNlZE9uU2VsZWN0aW9uOiBmdW5jdGlv
bihkaXJ0eUxpbmVzLCBzdGFydExpbmUsIGVuZExpbmUsIGxpbmVzKQorICAgIHsKKyAgICAgICAg
Ly8gQ2hlY2sgd2hldGhlciByZXBsYWNpbmcgbGFzdCBzZWxlY3Rpb24gd2l0aCB0ZXh0SW5wdXQg
ZGF0YSByZXN1bHRzIGluIHByZXNlbnQgRE9NLgorICAgICAgICAvLyBJZiB0aGF0IGlzIHNvLCB3
ZSBoYXZlIHByZWNpc2UgaW5wdXQgZm9yIHRoZSBlZGl0UmFuZ2UgY2FsbC4KKyAgICAgICAgdmFy
IHRleHRJbnB1dERhdGEgPSB0aGlzLl90ZXh0SW5wdXREYXRhOworICAgICAgICBkZWxldGUgdGhp
cy5fdGV4dElucHV0RGF0YTsKKyAgICAgICAgdmFyIGlzQmFja3NwYWNlID0gdGhpcy5fa2V5RG93
bkNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuQmFja3NwYWNlLmNv
ZGU7CisgICAgICAgIHZhciBpc0RlbGV0ZSA9IHRoaXMuX2tleURvd25Db2RlID09PSBXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlzLkRlbGV0ZS5jb2RlOworICAgICAgICBkZWxldGUg
dGhpcy5fa2V5RG93bkNvZGU7CisKKyAgICAgICAgaWYgKCF0ZXh0SW5wdXREYXRhICYmIChpc0Rl
bGV0ZSB8fCBpc0JhY2tzcGFjZSkpCisgICAgICAgICAgICB0ZXh0SW5wdXREYXRhID0gIiI7CisK
KyAgICAgICAgaWYgKHR5cGVvZiB0ZXh0SW5wdXREYXRhID09PSAidW5kZWZpbmVkIiB8fCAhdGhp
cy5fbGFzdFNlbGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICBpZiAo
ZGlydHlMaW5lcy5zdGFydCA+IHRoaXMuX2xhc3RTZWxlY3Rpb24uc3RhcnRMaW5lIHx8IGRpcnR5
TGluZXMuZW5kIDwgdGhpcy5fbGFzdFNlbGVjdGlvbi5lbmRMaW5lKQorICAgICAgICAgICAgcmV0
dXJuIG51bGw7CisKKyAgICAgICAgdGV4dElucHV0RGF0YSA9IHRleHRJbnB1dERhdGEgfHwgIiI7
CisgICAgICAgIHZhciByYW5nZSA9IHRoaXMuX2xhc3RTZWxlY3Rpb24ubm9ybWFsaXplKCk7Cisg
ICAgICAgIGlmIChpc0JhY2tzcGFjZSAmJiByYW5nZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBy
YW5nZSA9IHRoaXMuX3RleHRNb2RlbC5ncm93UmFuZ2VMZWZ0KHJhbmdlKTsKKyAgICAgICAgZWxz
ZSBpZiAoaXNEZWxldGUgJiYgcmFuZ2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmFuZ2UgPSB0
aGlzLl90ZXh0TW9kZWwuZ3Jvd1JhbmdlUmlnaHQocmFuZ2UpOworCisgICAgICAgIC8vIFdlIHdp
bGwgY2xvbmUgdGV4dCBtb2RlbCBhbmQgcmVwbGFjZSBsYXN0IHNlbGVjdGlvbiB3aXRoIHRleHQg
aW5wdXQgZGF0YSB0aGVyZS4KKyAgICAgICAgdmFyIGRvbU1vZGVsID0gdGhpcy5fdGV4dE1vZGVs
LnNsaWNlKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIGRvbU1vZGVsLmVkaXRSYW5nZShy
YW5nZS5zaGlmdCgtc3RhcnRMaW5lKSwgdGV4dElucHV0RGF0YSk7CisKKyAgICAgICAgLy8gVGhl
biB3ZSdsbCB0ZXN0IGlmIHRoaXMgbmV3IG1vZGVsIG1hdGNoZXMgdGhlIERPTSBsaW5lcy4KKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7ICBpIDwgZG9tTW9kZWwubGluZXNDb3VudDsgKytpKSB7Cisg
ICAgICAgICAgICBpZiAoZG9tTW9kZWwubGluZShpKSAhPT0gbGluZXNbaV0pCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IuRWRpdEluZm8ocmFuZ2UsIHRleHRJbnB1dERhdGEpOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge09iamVjdH0gZGlydHlMaW5lcworICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydExpbmUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5k
TGluZQorICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz59IGxpbmVzCisgICAgICogQHJldHVy
biB7V2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLkVkaXRJbmZvfQorICAgICAqLworICAg
IF9ndWVzc0VkaXRSYW5nZUJhc2VkT25EaWZmOiBmdW5jdGlvbihkaXJ0eUxpbmVzLCBzdGFydExp
bmUsIGVuZExpbmUsIGxpbmVzKQorICAgIHtjb25zb2xlLmxvZygxKTsKKyAgICAgICAgLy8gVHJ5
IHRvIGRlY3JlYXNlIHRoZSByYW5nZSBiZWluZyByZXBsYWNlZCBieSBsaW5lcywgaWYgcG9zc2li
bGUuCiAgICAgICAgIHZhciBzdGFydE9mZnNldCA9IDA7CiAgICAgICAgIHdoaWxlIChzdGFydExp
bmUgPCBkaXJ0eUxpbmVzLnN0YXJ0ICYmIHN0YXJ0T2Zmc2V0IDwgbGluZXMubGVuZ3RoKSB7CiAg
ICAgICAgICAgICBpZiAodGhpcy5fdGV4dE1vZGVsLmxpbmUoc3RhcnRMaW5lKSAhPT0gbGluZXNb
c3RhcnRPZmZzZXRdKQpAQCAtMjE0NiwzMiArMjIzMywyMiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICB2YXIgc2VsZWN0aW9uID0gdGhpcy5fZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIHZh
ciByYW5nZTsKICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMCAmJiBlbmRMaW5lIDwgdGhp
cy5fdGV4dE1vZGVsLmxpbmVzQ291bnQpCi0gICAgICAgICAgICB2YXIgb2xkUmFuZ2UgPSBuZXcg
V2ViSW5zcGVjdG9yLlRleHRSYW5nZShzdGFydExpbmUsIDAsIGVuZExpbmUsIDApOworICAgICAg
ICAgICAgcmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShzdGFydExpbmUsIDAsIGVu
ZExpbmUsIDApOwogICAgICAgICBlbHNlIGlmIChsaW5lcy5sZW5ndGggPT09IDAgJiYgc3RhcnRM
aW5lID4gMCkKLSAgICAgICAgICAgIHZhciBvbGRSYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4
dFJhbmdlKHN0YXJ0TGluZSAtIDEsIHRoaXMuX3RleHRNb2RlbC5saW5lTGVuZ3RoKHN0YXJ0TGlu
ZSAtIDEpLCBlbmRMaW5lIC0gMSwgdGhpcy5fdGV4dE1vZGVsLmxpbmVMZW5ndGgoZW5kTGluZSAt
IDEpKTsKKyAgICAgICAgICAgIHJhbmdlID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uoc3Rh
cnRMaW5lIC0gMSwgdGhpcy5fdGV4dE1vZGVsLmxpbmVMZW5ndGgoc3RhcnRMaW5lIC0gMSksIGVu
ZExpbmUgLSAxLCB0aGlzLl90ZXh0TW9kZWwubGluZUxlbmd0aChlbmRMaW5lIC0gMSkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB2YXIgb2xkUmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlRl
eHRSYW5nZShzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lIC0gMSwgZW5kQ29sdW1uKTsK
LQotICAgICAgICB2YXIgbmV3Q29udGVudCA9IGxpbmVzLmpvaW4oIlxuIik7Ci0gICAgICAgIGlm
ICh0aGlzLl90ZXh0TW9kZWwuY29weVJhbmdlKG9sZFJhbmdlKSA9PT0gbmV3Q29udGVudCkKLSAg
ICAgICAgICAgIHJldHVybjsgLy8gTm9vcAotCi0gICAgICAgIGlmIChsaW5lcy5sZW5ndGggPT09
IDEgJiYgbGluZXNbMF0gPT09ICJ9IiAmJiBvbGRSYW5nZS5pc0VtcHR5KCkgJiYgc2VsZWN0aW9u
LmlzRW1wdHkoKSAmJiAhdGhpcy5fdGV4dE1vZGVsLmxpbmUob2xkUmFuZ2UuZW5kTGluZSkudHJp
bSgpKQotICAgICAgICAgICAgdGhpcy5fdW5pbmRlbnRBZnRlckJsb2NrKG9sZFJhbmdlLCBzZWxl
Y3Rpb24pOwotCi0gICAgICAgIHRoaXMuX3RleHRNb2RlbC5lZGl0UmFuZ2Uob2xkUmFuZ2UsIG5l
d0NvbnRlbnQpOwotICAgICAgICB0aGlzLl9wYWludFNjaGVkdWxlZExpbmVzKHRydWUpOwotICAg
ICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0aW9uKHNlbGVjdGlvbik7Ci0KKyAgICAgICAgICAgIHJh
bmdlID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uoc3RhcnRMaW5lLCBzdGFydENvbHVtbiwg
ZW5kTGluZSAtIDEsIGVuZENvbHVtbik7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LkRlZmF1bHRUZXh0RWRpdG9yLkVkaXRJbmZvKHJhbmdlLCBsaW5lcy5qb2luKCJcbiIpKTsKICAg
ICB9LAogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSBv
bGRSYW5nZQogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0gc2VsZWN0aW9u
CisgICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICAqLwotICAgIF91bmluZGVudEFmdGVyQmxv
Y2s6IGZ1bmN0aW9uKG9sZFJhbmdlLCBzZWxlY3Rpb24pCisgICAgX2Nsb3NpbmdCbG9ja09mZnNl
dDogZnVuY3Rpb24ob2xkUmFuZ2UsIHNlbGVjdGlvbikKICAgICB7CiAgICAgICAgIHZhciBuZXN0
aW5nTGV2ZWwgPSAxOwogICAgICAgICBmb3IgKHZhciBpID0gb2xkUmFuZ2UuZW5kTGluZTsgaSA+
PSAwOyAtLWkpIHsKQEAgLTIxODQsMTkgKzIyNjEsMTQgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVb
Y29sdW1uXS50b2tlblR5cGUgPT09ICJibG9jay1zdGFydCIpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCEoLS1uZXN0aW5nTGV2ZWwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
bGluZUNvbnRlbnQgPSB0aGlzLl90ZXh0TW9kZWwubGluZShpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBibG9ja09mZnNldCA9IGxpbmVDb250ZW50Lmxlbmd0aCAtIGxpbmVDb250ZW50
LnRyaW1MZWZ0KCkubGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrT2Zm
c2V0IDwgb2xkUmFuZ2Uuc3RhcnRDb2x1bW4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvbGRSYW5nZS5zdGFydENvbHVtbiA9IGJsb2NrT2Zmc2V0OwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGVjdGlvbi5zdGFydENvbHVtbiA9IGJsb2NrT2Zmc2V0ICsgMTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24uZW5kQ29sdW1uID0gYmxvY2tPZmZzZXQg
KyAxOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVDb250ZW50Lmxlbmd0
aCAtIGxpbmVDb250ZW50LnRyaW1MZWZ0KCkubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVbY29sdW1u
XS50b2tlblR5cGUgPT09ICJibG9jay1lbmQiKQogICAgICAgICAgICAgICAgICAgICArK25lc3Rp
bmdMZXZlbDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CiAg
ICAgfSwKIAogICAgIC8qKgpAQCAtMjM3OSw2ICsyNDUxLDE0IEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGxpbmVzLnB1c2godGV4
dENvbnRlbnRzW2ldKTsKICAgICB9LAogCisgICAgX2hhbmRsZVNlbGVjdGlvbkNoYW5nZTogZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgdGV4dFJhbmdlID0gdGhpcy5fZ2V0U2Vs
ZWN0aW9uKCk7CisgICAgICAgIGlmICh0ZXh0UmFuZ2UpCisgICAgICAgICAgICB0aGlzLl9sYXN0
U2VsZWN0aW9uID0gdGV4dFJhbmdlOworICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zZWxlY3Rpb25D
aGFuZ2VkKHRleHRSYW5nZSk7CisgICAgfSwKKwogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanMKaW5kZXggZWU1
YmI1OGI2NjVlODliYjYxYTY4ZjRhZDMyMTlkNmE4YTc5YWVkNi4uZWIwYjFiNGE0OWNjMTI1ODBj
MjM3YTQyYjY2YmU4NmM0N2NmODk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanMKQEAgLTg3LDcgKzg3LDcgQEAgV2Vi
SW5zcGVjdG9yLlRleHRSYW5nZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnN0YXJ0
TGluZSA+IHRoaXMuZW5kTGluZSB8fCAodGhpcy5zdGFydExpbmUgPT09IHRoaXMuZW5kTGluZSAm
JiB0aGlzLnN0YXJ0Q29sdW1uID4gdGhpcy5lbmRDb2x1bW4pKQogICAgICAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKHRoaXMuZW5kTGluZSwgdGhpcy5lbmRDb2x1bW4s
IHRoaXMuc3RhcnRMaW5lLCB0aGlzLnN0YXJ0Q29sdW1uKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpOwogICAg
IH0sCiAKICAgICAvKioKQEAgLTEyNiw2ICsxMjYsMTUgQEAgV2ViSW5zcGVjdG9yLlRleHRSYW5n
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnN0YXJ0Q29sdW1uIDwgb3RoZXIuc3Rh
cnRDb2x1bW4pCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIHJldHVybiAwOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU9mZnNldAorICAgICAq
IEByZXR1cm4ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9CisgICAgICovCisgICAgc2hpZnQ6IGZ1
bmN0aW9uKGxpbmVPZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rv
ci5UZXh0UmFuZ2UodGhpcy5zdGFydExpbmUgKyBsaW5lT2Zmc2V0LCB0aGlzLnN0YXJ0Q29sdW1u
LCB0aGlzLmVuZExpbmUgKyBsaW5lT2Zmc2V0LCB0aGlzLmVuZENvbHVtbik7CiAgICAgfQogfQog
CkBAIC01OTYsNSArNjA1LDQ4IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJvdG90
eXBlID0gewogICAgICAgICByZXR1cm4gbmV3UmFuZ2U7CiAgICAgfSwKIAorICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7bnVtYmVyPX0gZnJvbQorICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gdG8KKyAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsfQorICAgICAqLworICAg
IHNsaWNlOiBmdW5jdGlvbihmcm9tLCB0bykKKyAgICB7CisgICAgICAgIHZhciB0ZXh0TW9kZWwg
PSBuZXcgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbCgpOworICAgICAgICB0ZXh0TW9kZWwu
X2xpbmVzID0gdGhpcy5fbGluZXMuc2xpY2UoZnJvbSwgdG8pOworICAgICAgICB0ZXh0TW9kZWwu
X2xpbmVCcmVhayA9IHRoaXMuX2xpbmVCcmVhazsKKyAgICAgICAgcmV0dXJuIHRleHRNb2RlbDsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdl
fSByYW5nZQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9CisgICAgICov
CisgICAgZ3Jvd1JhbmdlTGVmdDogZnVuY3Rpb24ocmFuZ2UpCisgICAgeworICAgICAgICB2YXIg
cmVzdWx0ID0gcmFuZ2UuY2xvbmUoKTsKKyAgICAgICAgaWYgKHJlc3VsdC5zdGFydENvbHVtbikK
KyAgICAgICAgICAgIC0tcmVzdWx0LnN0YXJ0Q29sdW1uOworICAgICAgICBlbHNlIGlmIChyZXN1
bHQuc3RhcnRMaW5lKQorICAgICAgICAgICAgcmVzdWx0LnN0YXJ0Q29sdW1uID0gdGhpcy5saW5l
TGVuZ3RoKC0tcmVzdWx0LnN0YXJ0TGluZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0gcmFu
Z2UKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfQorICAgICAqLworICAg
IGdyb3dSYW5nZVJpZ2h0OiBmdW5jdGlvbihyYW5nZSkKKyAgICB7CisgICAgICAgIHZhciByZXN1
bHQgPSByYW5nZS5jbG9uZSgpOworICAgICAgICBpZiAocmVzdWx0LmVuZENvbHVtbiA8IHRoaXMu
bGluZUxlbmd0aChyZXN1bHQuZW5kTGluZSkpCisgICAgICAgICAgICArK3Jlc3VsdC5lbmRDb2x1
bW47CisgICAgICAgIGVsc2UgaWYgKHJlc3VsdC5lbmRMaW5lIDwgdGhpcy5saW5lc0NvdW50KSB7
CisgICAgICAgICAgICByZXN1bHQuZW5kQ29sdW1uID0gMDsKKyAgICAgICAgICAgICsrcmVzdWx0
LmVuZExpbmU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCiAg
ICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZQogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>