<?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>101842</bug_id>
          
          <creation_ts>2012-11-10 10:08:32 -0800</creation_ts>
          <short_desc>Web Inspector: move indentation logic into TextEditorModel</short_desc>
          <delta_ts>2012-11-13 00:49:17 -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>dglazkov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>763673</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-10 10:08:32 -0800</bug_when>
    <thetext>I&apos;d like to move as much headless logic into the TextEditorModel as possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763674</commentid>
    <comment_count>1</comment_count>
      <attachid>173457</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-10 10:11:24 -0800</bug_when>
    <thetext>Created attachment 173457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763681</commentid>
    <comment_count>2</comment_count>
      <attachid>173457</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-10 11:04:07 -0800</bug_when>
    <thetext>Comment on attachment 173457
Patch

Attachment 173457 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14794396

New failing tests:
inspector/editor/indentation.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763689</commentid>
    <comment_count>3</comment_count>
      <attachid>173461</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-10 11:36:53 -0800</bug_when>
    <thetext>Created attachment 173461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763794</commentid>
    <comment_count>4</comment_count>
      <attachid>173489</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-10 23:32:41 -0800</bug_when>
    <thetext>Created attachment 173489
[Patch] rebaselined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763834</commentid>
    <comment_count>5</comment_count>
      <attachid>173502</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-11 05:59:41 -0800</bug_when>
    <thetext>Created attachment 173502
[Patch] rebaselined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765363</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-13 00:49:17 -0800</bug_when>
    <thetext>Committed r134382: &lt;http://trac.webkit.org/changeset/134382&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173457</attachid>
            <date>2012-11-10 10:11:24 -0800</date>
            <delta_ts>2012-11-10 11:36:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101842-20121110220928.patch</filename>
            <type>text/plain</type>
            <size>18962</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU1YzMwZjU2ZDcwOTEx
YjhmN2Q0ZGE4NDE1MTNlMDAyNTQ3YzVmMi4uZGUzZWYxN2U5MDBlNzViM2JhOWI3YzU4OGE3MGEw
ZWZlZmI1MjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTExLTEwICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1vdmUgaW5kZW50YXRpb24gbG9naWMgaW50byBUZXh0RWRpdG9yTW9kZWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTg0MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEknZCBsaWtlIHRvIG1vdmUg
YXMgbXVjaCBoZWFkbGVzcyBsb2dpYyBpbnRvIHRoZSBUZXh0RWRpdG9yTW9kZWwgYXMgcG9zc2li
bGUuCisgICAgICAgIERyaXZlIGJ5OiByZW1vdmVkIHNvbWUgZGVhZCBjb2RlLCBjb252ZXJ0ZWQg
Z2V0dGVyIGludG8gZnVuY3Rpb24gYW5kIG1vdmVkIHVuZG8KKyAgICAgICAgbWFyayBzdGF0ZSBp
bnRvIHRoZSBtb2RlbCBhcyB3ZWxsLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZWZhdWx0VGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVk
aXRvci5wcm90b3R5cGUuZWRpdFJhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0
VGV4dEVkaXRvci5wcm90b3R5cGUuX3N5bmNEZWNvcmF0aW9uc0ZvckxpbmUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLl9zcGxpdENodW5r
T25BTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90
b3R5cGUuaGFuZGxlRW50ZXJLZXkuZ2V0IHZhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuaGFuZGxlRW50ZXJLZXkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9hcHBseURvbVVwZGF0ZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl91
cGRhdGVDaHVua3NGb3JSYW5nZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluQ2h1bmspOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsucHJv
dG90eXBlLmlzRGVjb3JhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFp
bkNodW5rLnByb3RvdHlwZS5zZXQgZXhwYW5kZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNb2RlbC5lbmRzV2l0aEJyYWNrZXRSZWdleC4pOgorCiAyMDEyLTExLTA5ICBEZWFuIEphY2tz
b24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGxpc3Qgb2YgdHJhY2tzIGlu
IGNhcHRpb24gbWVkaWEgY29udHJvbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCmluZGV4IDVjNjgwMWU4Y2Q1Y2Rm
MGRmNWYwNzY2MGUxOWVmOWQ3ZWFjNzE1MGEuLmVhOWQ4MmFjZTQxMjNiZTdlMGY0YTQzODYzM2E1
OTY2YjU0MzI1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGVmYXVsdFRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwpAQCAtMzIxLDcgKzMyMSw2IEBAIFdlYkluc3Bl
Y3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgZWRpdFJhbmdlOiBmdW5j
dGlvbihyYW5nZSwgdGV4dCkKICAgICB7CiAgICAgICAgIHRoaXMuX2VudGVySW50ZXJuYWxUZXh0
Q2hhbmdlTW9kZSgpOwotICAgICAgICB0aGlzLl90ZXh0TW9kZWwubWFya1VuZG9hYmxlU3RhdGUo
KTsKICAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhpcy5fdGV4dE1vZGVsLmVkaXRSYW5nZShyYW5n
ZSwgdGV4dCk7CiAgICAgICAgIHRoaXMuX2V4aXRJbnRlcm5hbFRleHRDaGFuZ2VNb2RlKHJhbmdl
LCBuZXdSYW5nZSk7CiAgICAgICAgIHJldHVybiBuZXdSYW5nZTsKQEAgLTM2OSw3ICszNjgsNyBA
QCBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBtYWluQ2h1bmsgPSB0aGlzLl9tYWluUGFuZWwuY2h1
bmtGb3JMaW5lKGxpbmVOdW1iZXIpOwotICAgICAgICBpZiAobWFpbkNodW5rLmxpbmVzQ291bnQg
PT09IDEgJiYgbWFpbkNodW5rLmRlY29yYXRlZCkgeworICAgICAgICBpZiAobWFpbkNodW5rLmxp
bmVzQ291bnQgPT09IDEgJiYgbWFpbkNodW5rLmlzRGVjb3JhdGVkKCkpIHsKICAgICAgICAgICAg
IHZhciBndXR0ZXJDaHVuayA9IHRoaXMuX2d1dHRlclBhbmVsLm1ha2VMaW5lQUNodW5rKGxpbmVO
dW1iZXIpOwogICAgICAgICAgICAgdmFyIGhlaWdodCA9IG1haW5DaHVuay5oZWlnaHQ7CiAgICAg
ICAgICAgICBpZiAoaGVpZ2h0KQpAQCAtNzI5LDcgKzcyOCw2IEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gUHJlZml4IGNodW5r
LgogICAgICAgICBpZiAobGluZU51bWJlciA+IG9sZENodW5rLnN0YXJ0TGluZSkgewogICAgICAg
ICAgICAgdmFyIHByZWZpeENodW5rID0gdGhpcy5fY3JlYXRlTmV3Q2h1bmsob2xkQ2h1bmsuc3Rh
cnRMaW5lLCBsaW5lTnVtYmVyKTsKLSAgICAgICAgICAgIHByZWZpeENodW5rLnJlYWRPbmx5ID0g
b2xkQ2h1bmsucmVhZE9ubHk7CiAgICAgICAgICAgICB0aGlzLl90ZXh0Q2h1bmtzLnNwbGljZShp
bnNlcnRJbmRleCsrLCAwLCBwcmVmaXhDaHVuayk7CiAgICAgICAgICAgICB0aGlzLl9jb250YWlu
ZXIuaW5zZXJ0QmVmb3JlKHByZWZpeENodW5rLmVsZW1lbnQsIG9sZENodW5rLmVsZW1lbnQpOwog
ICAgICAgICB9CkBAIC03MzcsMTQgKzczNSwxMiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNo
dW5rZWRQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIExpbmUgY2h1bmsuCiAgICAgICAg
IHZhciBlbmRMaW5lID0gY3JlYXRlU3VmZml4Q2h1bmsgPyBsaW5lTnVtYmVyICsgMSA6IG9sZENo
dW5rLnN0YXJ0TGluZSArIG9sZENodW5rLmxpbmVzQ291bnQ7CiAgICAgICAgIHZhciBsaW5lQ2h1
bmsgPSB0aGlzLl9jcmVhdGVOZXdDaHVuayhsaW5lTnVtYmVyLCBlbmRMaW5lKTsKLSAgICAgICAg
bGluZUNodW5rLnJlYWRPbmx5ID0gb2xkQ2h1bmsucmVhZE9ubHk7CiAgICAgICAgIHRoaXMuX3Rl
eHRDaHVua3Muc3BsaWNlKGluc2VydEluZGV4KyssIDAsIGxpbmVDaHVuayk7CiAgICAgICAgIHRo
aXMuX2NvbnRhaW5lci5pbnNlcnRCZWZvcmUobGluZUNodW5rLmVsZW1lbnQsIG9sZENodW5rLmVs
ZW1lbnQpOwogCiAgICAgICAgIC8vIFN1ZmZpeCBjaHVuay4KICAgICAgICAgaWYgKG9sZENodW5r
LnN0YXJ0TGluZSArIG9sZENodW5rLmxpbmVzQ291bnQgPiBlbmRMaW5lKSB7CiAgICAgICAgICAg
ICB2YXIgc3VmZml4Q2h1bmsgPSB0aGlzLl9jcmVhdGVOZXdDaHVuayhlbmRMaW5lLCBvbGRDaHVu
ay5zdGFydExpbmUgKyBvbGRDaHVuay5saW5lc0NvdW50KTsKLSAgICAgICAgICAgIHN1ZmZpeENo
dW5rLnJlYWRPbmx5ID0gb2xkQ2h1bmsucmVhZE9ubHk7CiAgICAgICAgICAgICB0aGlzLl90ZXh0
Q2h1bmtzLnNwbGljZShpbnNlcnRJbmRleCwgMCwgc3VmZml4Q2h1bmspOwogICAgICAgICAgICAg
dGhpcy5fY29udGFpbmVyLmluc2VydEJlZm9yZShzdWZmaXhDaHVuay5lbGVtZW50LCBvbGRDaHVu
ay5lbGVtZW50KTsKICAgICAgICAgfQpAQCAtMTM1NCw0NyArMTM1MCw2IEBAIFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0g
ICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0TGluZQotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBl
bmRMaW5lCi0gICAgICovCi0gICAgc2V0RWRpdGFibGVSYW5nZTogZnVuY3Rpb24oc3RhcnRMaW5l
LCBlbmRMaW5lKQotICAgIHsKLSAgICAgICAgdGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKLQotICAg
ICAgICB2YXIgZmlyc3RDaHVua051bWJlciA9IHRoaXMuX2NodW5rTnVtYmVyRm9yTGluZShzdGFy
dExpbmUpOwotICAgICAgICB2YXIgZmlyc3RDaHVuayA9IHRoaXMuX3RleHRDaHVua3NbZmlyc3RD
aHVua051bWJlcl07Ci0gICAgICAgIGlmIChmaXJzdENodW5rLnN0YXJ0TGluZSAhPT0gc3RhcnRM
aW5lKSB7Ci0gICAgICAgICAgICB0aGlzLl9zcGxpdENodW5rT25BTGluZShzdGFydExpbmUsIGZp
cnN0Q2h1bmtOdW1iZXIpOwotICAgICAgICAgICAgZmlyc3RDaHVua051bWJlciArPSAxOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdmFyIGxhc3RDaHVua051bWJlciA9IHRoaXMuX3RleHRDaHVua3Mu
bGVuZ3RoOwotICAgICAgICBpZiAoZW5kTGluZSAhPT0gdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291
bnQpIHsKLSAgICAgICAgICAgIGxhc3RDaHVua051bWJlciA9IHRoaXMuX2NodW5rTnVtYmVyRm9y
TGluZShlbmRMaW5lKTsKLSAgICAgICAgICAgIHZhciBsYXN0Q2h1bmsgPSB0aGlzLl90ZXh0Q2h1
bmtzW2xhc3RDaHVua051bWJlcl07Ci0gICAgICAgICAgICBpZiAobGFzdENodW5rICYmIGxhc3RD
aHVuay5zdGFydExpbmUgIT09IGVuZExpbmUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9zcGxp
dENodW5rT25BTGluZShlbmRMaW5lLCBsYXN0Q2h1bmtOdW1iZXIpOwotICAgICAgICAgICAgICAg
IGxhc3RDaHVua051bWJlciArPSAxOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgZm9yICh2YXIgY2h1bmtOdW1iZXIgPSAwOyBjaHVua051bWJlciA8IGZpcnN0Q2h1bmtOdW1i
ZXI7ICsrY2h1bmtOdW1iZXIpCi0gICAgICAgICAgICB0aGlzLl90ZXh0Q2h1bmtzW2NodW5rTnVt
YmVyXS5yZWFkT25seSA9IHRydWU7Ci0gICAgICAgIGZvciAodmFyIGNodW5rTnVtYmVyID0gZmly
c3RDaHVua051bWJlcjsgY2h1bmtOdW1iZXIgPCBsYXN0Q2h1bmtOdW1iZXI7ICsrY2h1bmtOdW1i
ZXIpCi0gICAgICAgICAgICB0aGlzLl90ZXh0Q2h1bmtzW2NodW5rTnVtYmVyXS5yZWFkT25seSA9
IGZhbHNlOwotICAgICAgICBmb3IgKHZhciBjaHVua051bWJlciA9IGxhc3RDaHVua051bWJlcjsg
Y2h1bmtOdW1iZXIgPCB0aGlzLl90ZXh0Q2h1bmtzLmxlbmd0aDsgKytjaHVua051bWJlcikKLSAg
ICAgICAgICAgIHRoaXMuX3RleHRDaHVua3NbY2h1bmtOdW1iZXJdLnJlYWRPbmx5ID0gdHJ1ZTsK
LQotICAgICAgICB0aGlzLmVuZERvbVVwZGF0ZXMoKTsKLSAgICB9LAotCi0gICAgY2xlYXJFZGl0
YWJsZVJhbmdlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBmb3IgKHZhciBjaHVua051bWJl
ciA9IDA7IGNodW5rTnVtYmVyIDwgdGhpcy5fdGV4dENodW5rcy5sZW5ndGg7ICsrY2h1bmtOdW1i
ZXIpCi0gICAgICAgICAgICB0aGlzLl90ZXh0Q2h1bmtzW2NodW5rTnVtYmVyXS5yZWFkT25seSA9
IGZhbHNlOwotICAgIH0sCi0KLSAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5U
ZXh0UmFuZ2V9IHJhbmdlCiAgICAgICovCiAgICAgbWFya0FuZFJldmVhbFJhbmdlOiBmdW5jdGlv
bihyYW5nZSkKQEAgLTE1MTMsMTIgKzE0NjgsMTIgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgbmV3UmFuZ2U7CiAgICAgICAgIHZh
ciByYW5nZVdhc0VtcHR5ID0gcmFuZ2UuaXNFbXB0eSgpOwogICAgICAgICBpZiAoc2hpZnRLZXkp
Ci0gICAgICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX3VuaW5kZW50TGluZXMocmFuZ2UpOworICAg
ICAgICAgICAgbmV3UmFuZ2UgPSB0aGlzLl90ZXh0TW9kZWwudW5pbmRlbnRMaW5lcyhyYW5nZSk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKHJhbmdlV2FzRW1wdHkpCi0gICAgICAg
ICAgICAgICAgbmV3UmFuZ2UgPSB0aGlzLl9lZGl0UmFuZ2UocmFuZ2UsIFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy50ZXh0RWRpdG9ySW5kZW50LmdldCgpKTsKKyAgICAgICAgICAgICAgICBuZXdSYW5n
ZSA9IHRoaXMuX3RleHRNb2RlbC5lZGl0UmFuZ2UocmFuZ2UsIFdlYkluc3BlY3Rvci5zZXR0aW5n
cy50ZXh0RWRpdG9ySW5kZW50LmdldCgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBuZXdSYW5nZSA9IHRoaXMuX2luZGVudExpbmVzKHJhbmdlKTsKKyAgICAgICAgICAgICAg
ICBuZXdSYW5nZSA9IHRoaXMuX3RleHRNb2RlbC5pbmRlbnRMaW5lcyhyYW5nZSk7CiAgICAgICAg
IH0KIAogICAgICAgICB0aGlzLl9leGl0VGV4dENoYW5nZU1vZGUocmFuZ2UsIG5ld1JhbmdlKTsK
QEAgLTE1MjksNzggKzE0ODQsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKLSAgICAvKioKLSAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCi0gICAgICovCi0gICAg
X2luZGVudExpbmVzOiBmdW5jdGlvbihyYW5nZSkKLSAgICB7Ci0gICAgICAgIHZhciBpbmRlbnQg
PSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MudGV4dEVkaXRvckluZGVudC5nZXQoKTsKLQotICAgICAg
ICBpZiAodGhpcy5fbGFzdEVkaXRlZFJhbmdlKQotICAgICAgICAgICAgdGhpcy5fdGV4dE1vZGVs
Lm1hcmtVbmRvYWJsZVN0YXRlKCk7Ci0KLSAgICAgICAgdmFyIG5ld1JhbmdlID0gcmFuZ2UuY2xv
bmUoKTsKLQotICAgICAgICAvLyBEbyBub3QgY2hhbmdlIGEgc2VsZWN0aW9uIHN0YXJ0IHBvc2l0
aW9uIHdoZW4gaXQgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUKLSAgICAgICAgaWYgKHJh
bmdlLnN0YXJ0Q29sdW1uKQotICAgICAgICAgICAgbmV3UmFuZ2Uuc3RhcnRDb2x1bW4gKz0gaW5k
ZW50Lmxlbmd0aDsKLQotICAgICAgICB2YXIgaW5kZW50RW5kTGluZSA9IHJhbmdlLmVuZExpbmU7
Ci0gICAgICAgIGlmIChyYW5nZS5lbmRDb2x1bW4pCi0gICAgICAgICAgICBuZXdSYW5nZS5lbmRD
b2x1bW4gKz0gaW5kZW50Lmxlbmd0aDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaW5kZW50
RW5kTGluZS0tOwotCi0gICAgICAgIGZvciAodmFyIGxpbmVOdW1iZXIgPSByYW5nZS5zdGFydExp
bmU7IGxpbmVOdW1iZXIgPD0gaW5kZW50RW5kTGluZTsgbGluZU51bWJlcisrKQotICAgICAgICAg
ICAgdGhpcy5fdGV4dE1vZGVsLmVkaXRSYW5nZShXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLmNyZWF0
ZUZyb21Mb2NhdGlvbihsaW5lTnVtYmVyLCAwKSwgaW5kZW50KTsKLQotICAgICAgICB0aGlzLl9s
YXN0RWRpdGVkUmFuZ2UgPSBuZXdSYW5nZTsKLQotICAgICAgICByZXR1cm4gbmV3UmFuZ2U7Ci0g
ICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0g
cmFuZ2UKLSAgICAgKi8KLSAgICBfdW5pbmRlbnRMaW5lczogZnVuY3Rpb24ocmFuZ2UpCi0gICAg
ewotICAgICAgICBpZiAodGhpcy5fbGFzdEVkaXRlZFJhbmdlKQotICAgICAgICAgICAgdGhpcy5f
dGV4dE1vZGVsLm1hcmtVbmRvYWJsZVN0YXRlKCk7Ci0KLSAgICAgICAgdmFyIGluZGVudCA9IFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy50ZXh0RWRpdG9ySW5kZW50LmdldCgpOwotICAgICAgICB2YXIg
aW5kZW50TGVuZ3RoID0gaW5kZW50ID09PSBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLklu
ZGVudC5UYWJDaGFyYWN0ZXIgPyA0IDogaW5kZW50Lmxlbmd0aDsKLSAgICAgICAgdmFyIGxpbmVJ
bmRlbnRSZWdleCA9IG5ldyBSZWdFeHAoIl4gezEsIiArIGluZGVudExlbmd0aCArICJ9Iik7Ci0g
ICAgICAgIHZhciBuZXdSYW5nZSA9IHJhbmdlLmNsb25lKCk7Ci0KLSAgICAgICAgdmFyIGluZGVu
dEVuZExpbmUgPSByYW5nZS5lbmRMaW5lOwotICAgICAgICBpZiAoIXJhbmdlLmVuZENvbHVtbikK
LSAgICAgICAgICAgIGluZGVudEVuZExpbmUtLTsKLQotICAgICAgICBmb3IgKHZhciBsaW5lTnVt
YmVyID0gcmFuZ2Uuc3RhcnRMaW5lOyBsaW5lTnVtYmVyIDw9IGluZGVudEVuZExpbmU7IGxpbmVO
dW1iZXIrKykgewotICAgICAgICAgICAgdmFyIGxpbmUgPSB0aGlzLl90ZXh0TW9kZWwubGluZShs
aW5lTnVtYmVyKTsKLSAgICAgICAgICAgIHZhciBmaXJzdENoYXJhY3RlciA9IGxpbmUuY2hhckF0
KDApOwotICAgICAgICAgICAgdmFyIGxpbmVJbmRlbnRMZW5ndGg7Ci0KLSAgICAgICAgICAgIGlm
IChmaXJzdENoYXJhY3RlciA9PT0gIiAiKQotICAgICAgICAgICAgICAgIGxpbmVJbmRlbnRMZW5n
dGggPSBsaW5lLm1hdGNoKGxpbmVJbmRlbnRSZWdleClbMF0ubGVuZ3RoOwotICAgICAgICAgICAg
ZWxzZSBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09ICJcdCIpCi0gICAgICAgICAgICAgICAgbGluZUlu
ZGVudExlbmd0aCA9IDE7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgICAgIHRoaXMuX3RleHRNb2RlbC5lZGl0UmFuZ2UobmV3IFdlYkluc3Bl
Y3Rvci5UZXh0UmFuZ2UobGluZU51bWJlciwgMCwgbGluZU51bWJlciwgbGluZUluZGVudExlbmd0
aCksICIiKTsKLQotICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT09IHJhbmdlLnN0YXJ0TGlu
ZSkKLSAgICAgICAgICAgICAgICBuZXdSYW5nZS5zdGFydENvbHVtbiA9IE1hdGgubWF4KDAsIG5l
d1JhbmdlLnN0YXJ0Q29sdW1uIC0gbGluZUluZGVudExlbmd0aCk7Ci0gICAgICAgICAgICBpZiAo
bGluZU51bWJlciA9PT0gcmFuZ2UuZW5kTGluZSkKLSAgICAgICAgICAgICAgICBuZXdSYW5nZS5l
bmRDb2x1bW4gPSBNYXRoLm1heCgwLCBuZXdSYW5nZS5lbmRDb2x1bW4gLSBsaW5lSW5kZW50TGVu
Z3RoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2xhc3RFZGl0ZWRSYW5nZSA9IG5ld1Jh
bmdlOwotCi0gICAgICAgIHJldHVybiBuZXdSYW5nZTsKLSAgICB9LAotCiAgICAgaGFuZGxlRW50
ZXJLZXk6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KCkpCkBA
IC0xNjQwLDExICsxNTIzLDExIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIC8vIHsKICAgICAgICAgICAgIC8vICAgICB8CiAgICAg
ICAgICAgICAvLyB9Ci0gICAgICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX2VkaXRSYW5nZShyYW5n
ZSwgbGluZUJyZWFrICsgaW5kZW50ICsgbGluZUJyZWFrICsgY3VycmVudEluZGVudCk7CisgICAg
ICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX3RleHRNb2RlbC5lZGl0UmFuZ2UocmFuZ2UsIGxpbmVC
cmVhayArIGluZGVudCArIGxpbmVCcmVhayArIGN1cnJlbnRJbmRlbnQpOwogICAgICAgICAgICAg
bmV3UmFuZ2UuZW5kTGluZS0tOwogICAgICAgICAgICAgbmV3UmFuZ2UuZW5kQ29sdW1uICs9IHRl
eHRFZGl0b3JJbmRlbnQubGVuZ3RoOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG5ld1Jh
bmdlID0gdGhpcy5fZWRpdFJhbmdlKHJhbmdlLCBsaW5lQnJlYWsgKyBpbmRlbnQpOworICAgICAg
ICAgICAgbmV3UmFuZ2UgPSB0aGlzLl90ZXh0TW9kZWwuZWRpdFJhbmdlKHJhbmdlLCBsaW5lQnJl
YWsgKyBpbmRlbnQpOwogCiAgICAgICAgIHRoaXMuX2V4aXRUZXh0Q2hhbmdlTW9kZShyYW5nZSwg
bmV3UmFuZ2UpOwogICAgICAgICB0aGlzLmVuZFVwZGF0ZXMoKTsKQEAgLTIzMDcsNyArMjE5MCw3
IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBkZWxldGUgdGhpcy5fZGlydHlMaW5lczsKIAotICAgICAgICB2YXIgbmV3UmFuZ2UgPSB0
aGlzLl9lZGl0UmFuZ2Uob2xkUmFuZ2UsIG5ld0NvbnRlbnQpOworICAgICAgICB2YXIgbmV3UmFu
Z2UgPSB0aGlzLl90ZXh0TW9kZWwuZWRpdFJhbmdlKG9sZFJhbmdlLCBuZXdDb250ZW50KTsKIAog
ICAgICAgICB0aGlzLl9wYWludFNjaGVkdWxlZExpbmVzKHRydWUpOwogICAgICAgICB0aGlzLl9y
ZXN0b3JlU2VsZWN0aW9uKHNlbGVjdGlvbik7CkBAIC0yMzYyLDIxICsyMjQ1LDYgQEAgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgLyoqCiAgICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSByYW5nZQotICAgICAqIEBwYXJhbSB7
c3RyaW5nfSB0ZXh0Ci0gICAgICovCi0gICAgX2VkaXRSYW5nZTogZnVuY3Rpb24ocmFuZ2UsIHRl
eHQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fbGFzdEVkaXRlZFJhbmdlICYmICghdGV4dCB8
fCB0ZXh0LmluZGV4T2YoIlxuIikgIT09IC0xIHx8IHRoaXMuX2xhc3RFZGl0ZWRSYW5nZS5lbmRM
aW5lICE9PSByYW5nZS5zdGFydExpbmUgfHwgdGhpcy5fbGFzdEVkaXRlZFJhbmdlLmVuZENvbHVt
biAhPT0gcmFuZ2Uuc3RhcnRDb2x1bW4pKQotICAgICAgICAgICAgdGhpcy5fdGV4dE1vZGVsLm1h
cmtVbmRvYWJsZVN0YXRlKCk7Ci0KLSAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhpcy5fdGV4dE1v
ZGVsLmVkaXRSYW5nZShyYW5nZSwgdGV4dCk7Ci0gICAgICAgIHRoaXMuX2xhc3RFZGl0ZWRSYW5n
ZSA9IG5ld1JhbmdlOwotCi0gICAgICAgIHJldHVybiBuZXdSYW5nZTsKLSAgICB9LAotCi0gICAg
LyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSByYW5nZQogICAgICAq
LwogICAgIF9yZW1vdmVEZWNvcmF0aW9uc0luUmFuZ2U6IGZ1bmN0aW9uKHJhbmdlKQogICAgIHsK
QEAgLTI0NDgsNyArMjMxNiw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgLy8gTWF5YmUgbWVyZ2Ugd2l0aCB0aGUgbmV4dCBjaHVuaywg
c28gdGhhdCB3ZSBzaG91bGQgbm90IGNyZWF0ZSAxLXNpemVkIGNodW5rcyB3aGVuIGFwcGVuZGlu
ZyBuZXcgbGluZXMgb25lIGJ5IG9uZS4KICAgICAgICAgdmFyIGNodW5rID0gdGhpcy5fdGV4dENo
dW5rc1tsYXN0Q2h1bmtOdW1iZXIgKyAxXTsKICAgICAgICAgdmFyIGxpbmVzSW5MYXN0Q2h1bmsg
PSBsaW5lc0NvdW50ICUgdGhpcy5fZGVmYXVsdENodW5rU2l6ZTsKLSAgICAgICAgaWYgKGNodW5r
ICYmICFjaHVuay5kZWNvcmF0ZWQgJiYgbGluZXNJbkxhc3RDaHVuayA+IDAgJiYgbGluZXNJbkxh
c3RDaHVuayArIGNodW5rLmxpbmVzQ291bnQgPD0gdGhpcy5fZGVmYXVsdENodW5rU2l6ZSkgewor
ICAgICAgICBpZiAoY2h1bmsgJiYgIWNodW5rLmlzRGVjb3JhdGVkKCkgJiYgbGluZXNJbkxhc3RD
aHVuayA+IDAgJiYgbGluZXNJbkxhc3RDaHVuayArIGNodW5rLmxpbmVzQ291bnQgPD0gdGhpcy5f
ZGVmYXVsdENodW5rU2l6ZSkgewogICAgICAgICAgICAgKytsYXN0Q2h1bmtOdW1iZXI7CiAgICAg
ICAgICAgICBsaW5lc0NvdW50ICs9IGNodW5rLmxpbmVzQ291bnQ7CiAgICAgICAgIH0KQEAgLTI1
NTAsNyArMjQxOCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlw
ZSA9IHsKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWx9IGNo
dW5rZWRQYW5lbAogICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0TGluZQogICogQHBhcmFtIHtudW1i
ZXJ9IGVuZExpbmUKLSovCisgKi8KIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rID0g
ZnVuY3Rpb24oY2h1bmtlZFBhbmVsLCBzdGFydExpbmUsIGVuZExpbmUpCiB7CiAgICAgdGhpcy5f
Y2h1bmtlZFBhbmVsID0gY2h1bmtlZFBhbmVsOwpAQCAtMjU2NSw3ICsyNDMzLDYgQEAgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsgPSBmdW5jdGlvbihjaHVua2VkUGFuZWwsIHN0YXJ0
TGluZSwgZW5kTGluZSkKICAgICB0aGlzLmxpbmVzQ291bnQgPSBlbmRMaW5lIC0gc3RhcnRMaW5l
OwogCiAgICAgdGhpcy5fZXhwYW5kZWQgPSBmYWxzZTsKLSAgICB0aGlzLl9yZWFkT25seSA9IGZh
bHNlOwogCiAgICAgdGhpcy51cGRhdGVDb2xsYXBzZWRMaW5lUm93KCk7CiB9CkBAIC0yNjE0LDcg
KzI0ODEsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuay5wcm90b3R5cGUgPSB7
CiAgICAgLyoqCiAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgKi8KLSAgICBnZXQgZGVj
b3JhdGVkKCkKKyAgICBpc0RlY29yYXRlZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgIT09ICJ3ZWJraXQtbGluZS1jb250ZW50IiB8fCAh
ISh0aGlzLmVsZW1lbnQuZGVjb3JhdGlvbnNFbGVtZW50ICYmIHRoaXMuZWxlbWVudC5kZWNvcmF0
aW9uc0VsZW1lbnQuZmlyc3RDaGlsZCk7CiAgICAgfSwKQEAgLTI2NjUsNyArMjUzMiw2IEBAIFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHZhciBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQ7CiAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gdGhpcy5zdGFydExpbmU7IGkgPCB0aGlzLnN0YXJ0TGluZSArIHRo
aXMubGluZXNDb3VudDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdmFyIGxpbmVSb3cgPSB0aGlz
Ll9jcmVhdGVSb3coaSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRWxlbWVudFJlYWRP
bmx5U3RhdGUobGluZVJvdyk7CiAgICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC5pbnNlcnRC
ZWZvcmUobGluZVJvdywgdGhpcy5lbGVtZW50KTsKICAgICAgICAgICAgICAgICB0aGlzLl9leHBh
bmRlZExpbmVSb3dzLnB1c2gobGluZVJvdyk7CiAgICAgICAgICAgICB9CkBAIC0yNjkxLDM1ICsy
NTU3LDYgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9jaHVua2VkUGFuZWwuZW5kRG9tVXBkYXRlcygpOwogICAgIH0sCiAKLSAg
ICBzZXQgcmVhZE9ubHkocmVhZE9ubHkpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcmVhZE9u
bHkgPT09IHJlYWRPbmx5KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3Jl
YWRPbmx5ID0gcmVhZE9ubHk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnRSZWFkT25seVN0
YXRlKHRoaXMuZWxlbWVudCk7Ci0gICAgICAgIGlmICh0aGlzLl9leHBhbmRlZExpbmVSb3dzKSB7
Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2V4cGFuZGVkTGluZVJvd3Mu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRWxlbWVudFJlYWRPbmx5
U3RhdGUodGhpcy5fZXhwYW5kZWRMaW5lUm93c1tpXSk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0g
ICAgLyoqCi0gICAgICogQHJldHVybiB7Ym9vbGVhbn0KLSAgICAgKi8KLSAgICBnZXQgcmVhZE9u
bHkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5OwotICAgIH0sCi0KLSAg
ICBfdXBkYXRlRWxlbWVudFJlYWRPbmx5U3RhdGU6IGZ1bmN0aW9uKGVsZW1lbnQpCi0gICAgewot
ICAgICAgICBpZiAodGhpcy5fcmVhZE9ubHkpCi0gICAgICAgICAgICBlbGVtZW50LmFkZFN0eWxl
Q2xhc3MoInRleHQtZWRpdG9yLXJlYWQtb25seSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInRleHQtZWRpdG9yLXJlYWQtb25seSIpOwotICAg
IH0sCi0KICAgICAvKioKICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JNb2RlbC5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpz
CmluZGV4IDZhOGIyZGVhZDBlYmE5YjE2ZjA4OWZkMTJhYmYxMmIwZTgzMDIwNTEuLmQ4YWMyYmQz
ZDBkZjM1NzQ5MTg2MjAzYjEwNjExNWYyMjYzNzgyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzCkBAIC0yMzgsMTIg
KzIzOCwyNSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfQogICAgICAqLwogICAgIGVkaXRS
YW5nZTogZnVuY3Rpb24ocmFuZ2UsIHRleHQpCisgICAgeyAgIAorICAgICAgICBpZiAodGhpcy5f
bGFzdEVkaXRlZFJhbmdlICYmICghdGV4dCB8fCB0ZXh0LmluZGV4T2YoIlxuIikgIT09IC0xIHx8
IHRoaXMuX2xhc3RFZGl0ZWRSYW5nZS5lbmRMaW5lICE9PSByYW5nZS5zdGFydExpbmUgfHwgdGhp
cy5fbGFzdEVkaXRlZFJhbmdlLmVuZENvbHVtbiAhPT0gcmFuZ2Uuc3RhcnRDb2x1bW4pKQorICAg
ICAgICAgICAgdGhpcy5fbWFya1VuZG9hYmxlU3RhdGUoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2lubmVyRWRpdFJhbmdlKHJhbmdlLCB0ZXh0KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSByYW5nZQorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSB0ZXh0CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0KKyAgICAg
Ki8KKyAgICBfaW5uZXJFZGl0UmFuZ2U6IGZ1bmN0aW9uKHJhbmdlLCB0ZXh0KQogICAgIHsKICAg
ICAgICAgdmFyIG9yaWdpbmFsVGV4dCA9IHRoaXMuY29weVJhbmdlKHJhbmdlKTsKICAgICAgICAg
aWYgKHRleHQgPT09IG9yaWdpbmFsVGV4dCkKICAgICAgICAgICAgIHJldHVybiByYW5nZTsgLy8g
Tm9vcAogCiAgICAgICAgIHZhciBuZXdSYW5nZSA9IHRoaXMuX2lubmVyU2V0VGV4dChyYW5nZSwg
dGV4dCk7CisgICAgICAgIHRoaXMuX2xhc3RFZGl0ZWRSYW5nZSA9IG5ld1JhbmdlOwogICAgICAg
ICB0aGlzLl9wdXNoVW5kb2FibGVDb21tYW5kKG5ld1JhbmdlLCBvcmlnaW5hbFRleHQpOwogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1vZGVsLkV2ZW50cy5UZXh0Q2hhbmdlZCwgeyBvbGRSYW5nZTogcmFuZ2UsIG5ld1JhbmdlOiBu
ZXdSYW5nZSB9KTsKICAgICAgICAgcmV0dXJuIG5ld1JhbmdlOwpAQCAtNDc3LDcgKzQ5MCw3IEBA
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9yZWRvU3RhY2sgfHwgIXRoaXMuX3JlZG9TdGFjay5sZW5ndGgpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgdGhpcy5tYXJrVW5kb2FibGVTdGF0ZSgpOwor
ICAgICAgICB0aGlzLl9tYXJrVW5kb2FibGVTdGF0ZSgpOwogCiAgICAgICAgIHRoaXMuX2luUmVk
byA9IHRydWU7CiAgICAgICAgIHZhciByYW5nZSA9IHRoaXMuX2RvVW5kbyh0aGlzLl9yZWRvU3Rh
Y2ssIGJlZm9yZUNhbGxiYWNrLCBhZnRlckNhbGxiYWNrKTsKQEAgLTUwMiw3ICs1MTUsNyBAQCBX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlm
IChiZWZvcmVDYWxsYmFjaykKICAgICAgICAgICAgICAgICBiZWZvcmVDYWxsYmFjaygpOwogCi0g
ICAgICAgICAgICByYW5nZSA9IHRoaXMuZWRpdFJhbmdlKGNvbW1hbmQubmV3UmFuZ2UsIGNvbW1h
bmQub3JpZ2luYWxUZXh0KTsKKyAgICAgICAgICAgIHJhbmdlID0gdGhpcy5faW5uZXJFZGl0UmFu
Z2UoY29tbWFuZC5uZXdSYW5nZSwgY29tbWFuZC5vcmlnaW5hbFRleHQpOwogCiAgICAgICAgICAg
ICBpZiAoYWZ0ZXJDYWxsYmFjaykKICAgICAgICAgICAgICAgICBhZnRlckNhbGxiYWNrKGNvbW1h
bmQubmV3UmFuZ2UsIHJhbmdlKTsKQEAgLTUxMyw3ICs1MjYsNyBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0s
CiAKLSAgICBtYXJrVW5kb2FibGVTdGF0ZTogZnVuY3Rpb24oKQorICAgIF9tYXJrVW5kb2FibGVT
dGF0ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3VuZG9TdGFjay5sZW5n
dGgpCiAgICAgICAgICAgICB0aGlzLl91bmRvU3RhY2tbdGhpcy5fdW5kb1N0YWNrLmxlbmd0aCAt
IDFdLmV4cGxpY2l0ID0gdHJ1ZTsKQEAgLTUzMCw1ICs1NDMsNzEgQEAgV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VuZG9TdGFjayA9IFtd
OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFu
Z2V9IHJhbmdlCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0KKyAgICAg
Ki8KKyAgICBpbmRlbnRMaW5lczogZnVuY3Rpb24ocmFuZ2UpCisgICAgeworICAgICAgICB0aGlz
Ll9tYXJrVW5kb2FibGVTdGF0ZSgpOworCisgICAgICAgIHZhciBpbmRlbnQgPSBXZWJJbnNwZWN0
b3Iuc2V0dGluZ3MudGV4dEVkaXRvckluZGVudC5nZXQoKTsKKyAgICAgICAgdmFyIG5ld1Jhbmdl
ID0gcmFuZ2UuY2xvbmUoKTsKKyAgICAgICAgLy8gRG8gbm90IGNoYW5nZSBhIHNlbGVjdGlvbiBz
dGFydCBwb3NpdGlvbiB3aGVuIGl0IGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lCisgICAg
ICAgIGlmIChyYW5nZS5zdGFydENvbHVtbikKKyAgICAgICAgICAgIG5ld1JhbmdlLnN0YXJ0Q29s
dW1uICs9IGluZGVudC5sZW5ndGg7CisKKyAgICAgICAgdmFyIGluZGVudEVuZExpbmUgPSByYW5n
ZS5lbmRMaW5lOworICAgICAgICBpZiAocmFuZ2UuZW5kQ29sdW1uKQorICAgICAgICAgICAgbmV3
UmFuZ2UuZW5kQ29sdW1uICs9IGluZGVudC5sZW5ndGg7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGluZGVudEVuZExpbmUtLTsKKworICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gcmFu
Z2Uuc3RhcnRMaW5lOyBsaW5lTnVtYmVyIDw9IGluZGVudEVuZExpbmU7IGxpbmVOdW1iZXIrKykK
KyAgICAgICAgICAgIHRoaXMuX2lubmVyRWRpdFJhbmdlKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uu
Y3JlYXRlRnJvbUxvY2F0aW9uKGxpbmVOdW1iZXIsIDApLCBpbmRlbnQpOworCisgICAgICAgIHJl
dHVybiBuZXdSYW5nZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuVGV4dFJhbmdlfSByYW5nZQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5UZXh0
UmFuZ2V9CisgICAgICovCisgICAgdW5pbmRlbnRMaW5lczogZnVuY3Rpb24ocmFuZ2UpCisgICAg
eworICAgICAgICB0aGlzLl9tYXJrVW5kb2FibGVTdGF0ZSgpOworCisgICAgICAgIHZhciBpbmRl
bnQgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MudGV4dEVkaXRvckluZGVudC5nZXQoKTsKKyAgICAg
ICAgdmFyIGluZGVudExlbmd0aCA9IGluZGVudCA9PT0gV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
b2RlbC5JbmRlbnQuVGFiQ2hhcmFjdGVyID8gNCA6IGluZGVudC5sZW5ndGg7CisgICAgICAgIHZh
ciBsaW5lSW5kZW50UmVnZXggPSBuZXcgUmVnRXhwKCJeIHsxLCIgKyBpbmRlbnRMZW5ndGggKyAi
fSIpOworICAgICAgICB2YXIgbmV3UmFuZ2UgPSByYW5nZS5jbG9uZSgpOworCisgICAgICAgIHZh
ciBpbmRlbnRFbmRMaW5lID0gcmFuZ2UuZW5kTGluZTsKKyAgICAgICAgaWYgKCFyYW5nZS5lbmRD
b2x1bW4pCisgICAgICAgICAgICBpbmRlbnRFbmRMaW5lLS07CisKKyAgICAgICAgZm9yICh2YXIg
bGluZU51bWJlciA9IHJhbmdlLnN0YXJ0TGluZTsgbGluZU51bWJlciA8PSBpbmRlbnRFbmRMaW5l
OyBsaW5lTnVtYmVyKyspIHsKKyAgICAgICAgICAgIHZhciBsaW5lID0gdGhpcy5saW5lKGxpbmVO
dW1iZXIpOworICAgICAgICAgICAgdmFyIGZpcnN0Q2hhcmFjdGVyID0gbGluZS5jaGFyQXQoMCk7
CisgICAgICAgICAgICB2YXIgbGluZUluZGVudExlbmd0aDsKKworICAgICAgICAgICAgaWYgKGZp
cnN0Q2hhcmFjdGVyID09PSAiICIpCisgICAgICAgICAgICAgICAgbGluZUluZGVudExlbmd0aCA9
IGxpbmUubWF0Y2gobGluZUluZGVudFJlZ2V4KVswXS5sZW5ndGg7CisgICAgICAgICAgICBlbHNl
IGlmIChmaXJzdENoYXJhY3RlciA9PT0gIlx0IikKKyAgICAgICAgICAgICAgICBsaW5lSW5kZW50
TGVuZ3RoID0gMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgdGhpcy5faW5uZXJFZGl0UmFuZ2UobmV3IFdlYkluc3BlY3Rvci5UZXh0
UmFuZ2UobGluZU51bWJlciwgMCwgbGluZU51bWJlciwgbGluZUluZGVudExlbmd0aCksICIiKTsK
KworICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT09IHJhbmdlLnN0YXJ0TGluZSkKKyAgICAg
ICAgICAgICAgICBuZXdSYW5nZS5zdGFydENvbHVtbiA9IE1hdGgubWF4KDAsIG5ld1JhbmdlLnN0
YXJ0Q29sdW1uIC0gbGluZUluZGVudExlbmd0aCk7CisgICAgICAgICAgICBpZiAobGluZU51bWJl
ciA9PT0gcmFuZ2UuZW5kTGluZSkKKyAgICAgICAgICAgICAgICBuZXdSYW5nZS5lbmRDb2x1bW4g
PSBNYXRoLm1heCgwLCBuZXdSYW5nZS5lbmRDb2x1bW4gLSBsaW5lSW5kZW50TGVuZ3RoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXdSYW5nZTsKKyAgICB9LAorCiAgICAgX19wcm90
b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173461</attachid>
            <date>2012-11-10 11:36:53 -0800</date>
            <delta_ts>2012-11-10 23:32:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101842-20121110233457.patch</filename>
            <type>text/plain</type>
            <size>21673</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU1YzMwZjU2ZDcwOTEx
YjhmN2Q0ZGE4NDE1MTNlMDAyNTQ3YzVmMi4uZGUzZWYxN2U5MDBlNzViM2JhOWI3YzU4OGE3MGEw
ZWZlZmI1MjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTExLTEwICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1vdmUgaW5kZW50YXRpb24gbG9naWMgaW50byBUZXh0RWRpdG9yTW9kZWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTg0MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEknZCBsaWtlIHRvIG1vdmUg
YXMgbXVjaCBoZWFkbGVzcyBsb2dpYyBpbnRvIHRoZSBUZXh0RWRpdG9yTW9kZWwgYXMgcG9zc2li
bGUuCisgICAgICAgIERyaXZlIGJ5OiByZW1vdmVkIHNvbWUgZGVhZCBjb2RlLCBjb252ZXJ0ZWQg
Z2V0dGVyIGludG8gZnVuY3Rpb24gYW5kIG1vdmVkIHVuZG8KKyAgICAgICAgbWFyayBzdGF0ZSBp
bnRvIHRoZSBtb2RlbCBhcyB3ZWxsLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZWZhdWx0VGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVk
aXRvci5wcm90b3R5cGUuZWRpdFJhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0
VGV4dEVkaXRvci5wcm90b3R5cGUuX3N5bmNEZWNvcmF0aW9uc0ZvckxpbmUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLl9zcGxpdENodW5r
T25BTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90
b3R5cGUuaGFuZGxlRW50ZXJLZXkuZ2V0IHZhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuaGFuZGxlRW50ZXJLZXkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9hcHBseURvbVVwZGF0ZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl91
cGRhdGVDaHVua3NGb3JSYW5nZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluQ2h1bmspOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsucHJv
dG90eXBlLmlzRGVjb3JhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFp
bkNodW5rLnByb3RvdHlwZS5zZXQgZXhwYW5kZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNb2RlbC5lbmRzV2l0aEJyYWNrZXRSZWdleC4pOgorCiAyMDEyLTExLTA5ICBEZWFuIEphY2tz
b24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGxpc3Qgb2YgdHJhY2tzIGlu
IGNhcHRpb24gbWVkaWEgY29udHJvbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCmluZGV4IDVjNjgwMWU4Y2Q1Y2Rm
MGRmNWYwNzY2MGUxOWVmOWQ3ZWFjNzE1MGEuLmVhOWQ4MmFjZTQxMjNiZTdlMGY0YTQzODYzM2E1
OTY2YjU0MzI1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGVmYXVsdFRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwpAQCAtMzIxLDcgKzMyMSw2IEBAIFdlYkluc3Bl
Y3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgZWRpdFJhbmdlOiBmdW5j
dGlvbihyYW5nZSwgdGV4dCkKICAgICB7CiAgICAgICAgIHRoaXMuX2VudGVySW50ZXJuYWxUZXh0
Q2hhbmdlTW9kZSgpOwotICAgICAgICB0aGlzLl90ZXh0TW9kZWwubWFya1VuZG9hYmxlU3RhdGUo
KTsKICAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhpcy5fdGV4dE1vZGVsLmVkaXRSYW5nZShyYW5n
ZSwgdGV4dCk7CiAgICAgICAgIHRoaXMuX2V4aXRJbnRlcm5hbFRleHRDaGFuZ2VNb2RlKHJhbmdl
LCBuZXdSYW5nZSk7CiAgICAgICAgIHJldHVybiBuZXdSYW5nZTsKQEAgLTM2OSw3ICszNjgsNyBA
QCBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBtYWluQ2h1bmsgPSB0aGlzLl9tYWluUGFuZWwuY2h1
bmtGb3JMaW5lKGxpbmVOdW1iZXIpOwotICAgICAgICBpZiAobWFpbkNodW5rLmxpbmVzQ291bnQg
PT09IDEgJiYgbWFpbkNodW5rLmRlY29yYXRlZCkgeworICAgICAgICBpZiAobWFpbkNodW5rLmxp
bmVzQ291bnQgPT09IDEgJiYgbWFpbkNodW5rLmlzRGVjb3JhdGVkKCkpIHsKICAgICAgICAgICAg
IHZhciBndXR0ZXJDaHVuayA9IHRoaXMuX2d1dHRlclBhbmVsLm1ha2VMaW5lQUNodW5rKGxpbmVO
dW1iZXIpOwogICAgICAgICAgICAgdmFyIGhlaWdodCA9IG1haW5DaHVuay5oZWlnaHQ7CiAgICAg
ICAgICAgICBpZiAoaGVpZ2h0KQpAQCAtNzI5LDcgKzcyOCw2IEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gUHJlZml4IGNodW5r
LgogICAgICAgICBpZiAobGluZU51bWJlciA+IG9sZENodW5rLnN0YXJ0TGluZSkgewogICAgICAg
ICAgICAgdmFyIHByZWZpeENodW5rID0gdGhpcy5fY3JlYXRlTmV3Q2h1bmsob2xkQ2h1bmsuc3Rh
cnRMaW5lLCBsaW5lTnVtYmVyKTsKLSAgICAgICAgICAgIHByZWZpeENodW5rLnJlYWRPbmx5ID0g
b2xkQ2h1bmsucmVhZE9ubHk7CiAgICAgICAgICAgICB0aGlzLl90ZXh0Q2h1bmtzLnNwbGljZShp
bnNlcnRJbmRleCsrLCAwLCBwcmVmaXhDaHVuayk7CiAgICAgICAgICAgICB0aGlzLl9jb250YWlu
ZXIuaW5zZXJ0QmVmb3JlKHByZWZpeENodW5rLmVsZW1lbnQsIG9sZENodW5rLmVsZW1lbnQpOwog
ICAgICAgICB9CkBAIC03MzcsMTQgKzczNSwxMiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNo
dW5rZWRQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIExpbmUgY2h1bmsuCiAgICAgICAg
IHZhciBlbmRMaW5lID0gY3JlYXRlU3VmZml4Q2h1bmsgPyBsaW5lTnVtYmVyICsgMSA6IG9sZENo
dW5rLnN0YXJ0TGluZSArIG9sZENodW5rLmxpbmVzQ291bnQ7CiAgICAgICAgIHZhciBsaW5lQ2h1
bmsgPSB0aGlzLl9jcmVhdGVOZXdDaHVuayhsaW5lTnVtYmVyLCBlbmRMaW5lKTsKLSAgICAgICAg
bGluZUNodW5rLnJlYWRPbmx5ID0gb2xkQ2h1bmsucmVhZE9ubHk7CiAgICAgICAgIHRoaXMuX3Rl
eHRDaHVua3Muc3BsaWNlKGluc2VydEluZGV4KyssIDAsIGxpbmVDaHVuayk7CiAgICAgICAgIHRo
aXMuX2NvbnRhaW5lci5pbnNlcnRCZWZvcmUobGluZUNodW5rLmVsZW1lbnQsIG9sZENodW5rLmVs
ZW1lbnQpOwogCiAgICAgICAgIC8vIFN1ZmZpeCBjaHVuay4KICAgICAgICAgaWYgKG9sZENodW5r
LnN0YXJ0TGluZSArIG9sZENodW5rLmxpbmVzQ291bnQgPiBlbmRMaW5lKSB7CiAgICAgICAgICAg
ICB2YXIgc3VmZml4Q2h1bmsgPSB0aGlzLl9jcmVhdGVOZXdDaHVuayhlbmRMaW5lLCBvbGRDaHVu
ay5zdGFydExpbmUgKyBvbGRDaHVuay5saW5lc0NvdW50KTsKLSAgICAgICAgICAgIHN1ZmZpeENo
dW5rLnJlYWRPbmx5ID0gb2xkQ2h1bmsucmVhZE9ubHk7CiAgICAgICAgICAgICB0aGlzLl90ZXh0
Q2h1bmtzLnNwbGljZShpbnNlcnRJbmRleCwgMCwgc3VmZml4Q2h1bmspOwogICAgICAgICAgICAg
dGhpcy5fY29udGFpbmVyLmluc2VydEJlZm9yZShzdWZmaXhDaHVuay5lbGVtZW50LCBvbGRDaHVu
ay5lbGVtZW50KTsKICAgICAgICAgfQpAQCAtMTM1NCw0NyArMTM1MCw2IEBAIFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0g
ICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0TGluZQotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBl
bmRMaW5lCi0gICAgICovCi0gICAgc2V0RWRpdGFibGVSYW5nZTogZnVuY3Rpb24oc3RhcnRMaW5l
LCBlbmRMaW5lKQotICAgIHsKLSAgICAgICAgdGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKLQotICAg
ICAgICB2YXIgZmlyc3RDaHVua051bWJlciA9IHRoaXMuX2NodW5rTnVtYmVyRm9yTGluZShzdGFy
dExpbmUpOwotICAgICAgICB2YXIgZmlyc3RDaHVuayA9IHRoaXMuX3RleHRDaHVua3NbZmlyc3RD
aHVua051bWJlcl07Ci0gICAgICAgIGlmIChmaXJzdENodW5rLnN0YXJ0TGluZSAhPT0gc3RhcnRM
aW5lKSB7Ci0gICAgICAgICAgICB0aGlzLl9zcGxpdENodW5rT25BTGluZShzdGFydExpbmUsIGZp
cnN0Q2h1bmtOdW1iZXIpOwotICAgICAgICAgICAgZmlyc3RDaHVua051bWJlciArPSAxOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdmFyIGxhc3RDaHVua051bWJlciA9IHRoaXMuX3RleHRDaHVua3Mu
bGVuZ3RoOwotICAgICAgICBpZiAoZW5kTGluZSAhPT0gdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291
bnQpIHsKLSAgICAgICAgICAgIGxhc3RDaHVua051bWJlciA9IHRoaXMuX2NodW5rTnVtYmVyRm9y
TGluZShlbmRMaW5lKTsKLSAgICAgICAgICAgIHZhciBsYXN0Q2h1bmsgPSB0aGlzLl90ZXh0Q2h1
bmtzW2xhc3RDaHVua051bWJlcl07Ci0gICAgICAgICAgICBpZiAobGFzdENodW5rICYmIGxhc3RD
aHVuay5zdGFydExpbmUgIT09IGVuZExpbmUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9zcGxp
dENodW5rT25BTGluZShlbmRMaW5lLCBsYXN0Q2h1bmtOdW1iZXIpOwotICAgICAgICAgICAgICAg
IGxhc3RDaHVua051bWJlciArPSAxOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgZm9yICh2YXIgY2h1bmtOdW1iZXIgPSAwOyBjaHVua051bWJlciA8IGZpcnN0Q2h1bmtOdW1i
ZXI7ICsrY2h1bmtOdW1iZXIpCi0gICAgICAgICAgICB0aGlzLl90ZXh0Q2h1bmtzW2NodW5rTnVt
YmVyXS5yZWFkT25seSA9IHRydWU7Ci0gICAgICAgIGZvciAodmFyIGNodW5rTnVtYmVyID0gZmly
c3RDaHVua051bWJlcjsgY2h1bmtOdW1iZXIgPCBsYXN0Q2h1bmtOdW1iZXI7ICsrY2h1bmtOdW1i
ZXIpCi0gICAgICAgICAgICB0aGlzLl90ZXh0Q2h1bmtzW2NodW5rTnVtYmVyXS5yZWFkT25seSA9
IGZhbHNlOwotICAgICAgICBmb3IgKHZhciBjaHVua051bWJlciA9IGxhc3RDaHVua051bWJlcjsg
Y2h1bmtOdW1iZXIgPCB0aGlzLl90ZXh0Q2h1bmtzLmxlbmd0aDsgKytjaHVua051bWJlcikKLSAg
ICAgICAgICAgIHRoaXMuX3RleHRDaHVua3NbY2h1bmtOdW1iZXJdLnJlYWRPbmx5ID0gdHJ1ZTsK
LQotICAgICAgICB0aGlzLmVuZERvbVVwZGF0ZXMoKTsKLSAgICB9LAotCi0gICAgY2xlYXJFZGl0
YWJsZVJhbmdlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBmb3IgKHZhciBjaHVua051bWJl
ciA9IDA7IGNodW5rTnVtYmVyIDwgdGhpcy5fdGV4dENodW5rcy5sZW5ndGg7ICsrY2h1bmtOdW1i
ZXIpCi0gICAgICAgICAgICB0aGlzLl90ZXh0Q2h1bmtzW2NodW5rTnVtYmVyXS5yZWFkT25seSA9
IGZhbHNlOwotICAgIH0sCi0KLSAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5U
ZXh0UmFuZ2V9IHJhbmdlCiAgICAgICovCiAgICAgbWFya0FuZFJldmVhbFJhbmdlOiBmdW5jdGlv
bihyYW5nZSkKQEAgLTE1MTMsMTIgKzE0NjgsMTIgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgbmV3UmFuZ2U7CiAgICAgICAgIHZh
ciByYW5nZVdhc0VtcHR5ID0gcmFuZ2UuaXNFbXB0eSgpOwogICAgICAgICBpZiAoc2hpZnRLZXkp
Ci0gICAgICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX3VuaW5kZW50TGluZXMocmFuZ2UpOworICAg
ICAgICAgICAgbmV3UmFuZ2UgPSB0aGlzLl90ZXh0TW9kZWwudW5pbmRlbnRMaW5lcyhyYW5nZSk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKHJhbmdlV2FzRW1wdHkpCi0gICAgICAg
ICAgICAgICAgbmV3UmFuZ2UgPSB0aGlzLl9lZGl0UmFuZ2UocmFuZ2UsIFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy50ZXh0RWRpdG9ySW5kZW50LmdldCgpKTsKKyAgICAgICAgICAgICAgICBuZXdSYW5n
ZSA9IHRoaXMuX3RleHRNb2RlbC5lZGl0UmFuZ2UocmFuZ2UsIFdlYkluc3BlY3Rvci5zZXR0aW5n
cy50ZXh0RWRpdG9ySW5kZW50LmdldCgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBuZXdSYW5nZSA9IHRoaXMuX2luZGVudExpbmVzKHJhbmdlKTsKKyAgICAgICAgICAgICAg
ICBuZXdSYW5nZSA9IHRoaXMuX3RleHRNb2RlbC5pbmRlbnRMaW5lcyhyYW5nZSk7CiAgICAgICAg
IH0KIAogICAgICAgICB0aGlzLl9leGl0VGV4dENoYW5nZU1vZGUocmFuZ2UsIG5ld1JhbmdlKTsK
QEAgLTE1MjksNzggKzE0ODQsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKLSAgICAvKioKLSAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCi0gICAgICovCi0gICAg
X2luZGVudExpbmVzOiBmdW5jdGlvbihyYW5nZSkKLSAgICB7Ci0gICAgICAgIHZhciBpbmRlbnQg
PSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MudGV4dEVkaXRvckluZGVudC5nZXQoKTsKLQotICAgICAg
ICBpZiAodGhpcy5fbGFzdEVkaXRlZFJhbmdlKQotICAgICAgICAgICAgdGhpcy5fdGV4dE1vZGVs
Lm1hcmtVbmRvYWJsZVN0YXRlKCk7Ci0KLSAgICAgICAgdmFyIG5ld1JhbmdlID0gcmFuZ2UuY2xv
bmUoKTsKLQotICAgICAgICAvLyBEbyBub3QgY2hhbmdlIGEgc2VsZWN0aW9uIHN0YXJ0IHBvc2l0
aW9uIHdoZW4gaXQgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUKLSAgICAgICAgaWYgKHJh
bmdlLnN0YXJ0Q29sdW1uKQotICAgICAgICAgICAgbmV3UmFuZ2Uuc3RhcnRDb2x1bW4gKz0gaW5k
ZW50Lmxlbmd0aDsKLQotICAgICAgICB2YXIgaW5kZW50RW5kTGluZSA9IHJhbmdlLmVuZExpbmU7
Ci0gICAgICAgIGlmIChyYW5nZS5lbmRDb2x1bW4pCi0gICAgICAgICAgICBuZXdSYW5nZS5lbmRD
b2x1bW4gKz0gaW5kZW50Lmxlbmd0aDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaW5kZW50
RW5kTGluZS0tOwotCi0gICAgICAgIGZvciAodmFyIGxpbmVOdW1iZXIgPSByYW5nZS5zdGFydExp
bmU7IGxpbmVOdW1iZXIgPD0gaW5kZW50RW5kTGluZTsgbGluZU51bWJlcisrKQotICAgICAgICAg
ICAgdGhpcy5fdGV4dE1vZGVsLmVkaXRSYW5nZShXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLmNyZWF0
ZUZyb21Mb2NhdGlvbihsaW5lTnVtYmVyLCAwKSwgaW5kZW50KTsKLQotICAgICAgICB0aGlzLl9s
YXN0RWRpdGVkUmFuZ2UgPSBuZXdSYW5nZTsKLQotICAgICAgICByZXR1cm4gbmV3UmFuZ2U7Ci0g
ICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0g
cmFuZ2UKLSAgICAgKi8KLSAgICBfdW5pbmRlbnRMaW5lczogZnVuY3Rpb24ocmFuZ2UpCi0gICAg
ewotICAgICAgICBpZiAodGhpcy5fbGFzdEVkaXRlZFJhbmdlKQotICAgICAgICAgICAgdGhpcy5f
dGV4dE1vZGVsLm1hcmtVbmRvYWJsZVN0YXRlKCk7Ci0KLSAgICAgICAgdmFyIGluZGVudCA9IFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy50ZXh0RWRpdG9ySW5kZW50LmdldCgpOwotICAgICAgICB2YXIg
aW5kZW50TGVuZ3RoID0gaW5kZW50ID09PSBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLklu
ZGVudC5UYWJDaGFyYWN0ZXIgPyA0IDogaW5kZW50Lmxlbmd0aDsKLSAgICAgICAgdmFyIGxpbmVJ
bmRlbnRSZWdleCA9IG5ldyBSZWdFeHAoIl4gezEsIiArIGluZGVudExlbmd0aCArICJ9Iik7Ci0g
ICAgICAgIHZhciBuZXdSYW5nZSA9IHJhbmdlLmNsb25lKCk7Ci0KLSAgICAgICAgdmFyIGluZGVu
dEVuZExpbmUgPSByYW5nZS5lbmRMaW5lOwotICAgICAgICBpZiAoIXJhbmdlLmVuZENvbHVtbikK
LSAgICAgICAgICAgIGluZGVudEVuZExpbmUtLTsKLQotICAgICAgICBmb3IgKHZhciBsaW5lTnVt
YmVyID0gcmFuZ2Uuc3RhcnRMaW5lOyBsaW5lTnVtYmVyIDw9IGluZGVudEVuZExpbmU7IGxpbmVO
dW1iZXIrKykgewotICAgICAgICAgICAgdmFyIGxpbmUgPSB0aGlzLl90ZXh0TW9kZWwubGluZShs
aW5lTnVtYmVyKTsKLSAgICAgICAgICAgIHZhciBmaXJzdENoYXJhY3RlciA9IGxpbmUuY2hhckF0
KDApOwotICAgICAgICAgICAgdmFyIGxpbmVJbmRlbnRMZW5ndGg7Ci0KLSAgICAgICAgICAgIGlm
IChmaXJzdENoYXJhY3RlciA9PT0gIiAiKQotICAgICAgICAgICAgICAgIGxpbmVJbmRlbnRMZW5n
dGggPSBsaW5lLm1hdGNoKGxpbmVJbmRlbnRSZWdleClbMF0ubGVuZ3RoOwotICAgICAgICAgICAg
ZWxzZSBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09ICJcdCIpCi0gICAgICAgICAgICAgICAgbGluZUlu
ZGVudExlbmd0aCA9IDE7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgICAgIHRoaXMuX3RleHRNb2RlbC5lZGl0UmFuZ2UobmV3IFdlYkluc3Bl
Y3Rvci5UZXh0UmFuZ2UobGluZU51bWJlciwgMCwgbGluZU51bWJlciwgbGluZUluZGVudExlbmd0
aCksICIiKTsKLQotICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT09IHJhbmdlLnN0YXJ0TGlu
ZSkKLSAgICAgICAgICAgICAgICBuZXdSYW5nZS5zdGFydENvbHVtbiA9IE1hdGgubWF4KDAsIG5l
d1JhbmdlLnN0YXJ0Q29sdW1uIC0gbGluZUluZGVudExlbmd0aCk7Ci0gICAgICAgICAgICBpZiAo
bGluZU51bWJlciA9PT0gcmFuZ2UuZW5kTGluZSkKLSAgICAgICAgICAgICAgICBuZXdSYW5nZS5l
bmRDb2x1bW4gPSBNYXRoLm1heCgwLCBuZXdSYW5nZS5lbmRDb2x1bW4gLSBsaW5lSW5kZW50TGVu
Z3RoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2xhc3RFZGl0ZWRSYW5nZSA9IG5ld1Jh
bmdlOwotCi0gICAgICAgIHJldHVybiBuZXdSYW5nZTsKLSAgICB9LAotCiAgICAgaGFuZGxlRW50
ZXJLZXk6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KCkpCkBA
IC0xNjQwLDExICsxNTIzLDExIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIC8vIHsKICAgICAgICAgICAgIC8vICAgICB8CiAgICAg
ICAgICAgICAvLyB9Ci0gICAgICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX2VkaXRSYW5nZShyYW5n
ZSwgbGluZUJyZWFrICsgaW5kZW50ICsgbGluZUJyZWFrICsgY3VycmVudEluZGVudCk7CisgICAg
ICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX3RleHRNb2RlbC5lZGl0UmFuZ2UocmFuZ2UsIGxpbmVC
cmVhayArIGluZGVudCArIGxpbmVCcmVhayArIGN1cnJlbnRJbmRlbnQpOwogICAgICAgICAgICAg
bmV3UmFuZ2UuZW5kTGluZS0tOwogICAgICAgICAgICAgbmV3UmFuZ2UuZW5kQ29sdW1uICs9IHRl
eHRFZGl0b3JJbmRlbnQubGVuZ3RoOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG5ld1Jh
bmdlID0gdGhpcy5fZWRpdFJhbmdlKHJhbmdlLCBsaW5lQnJlYWsgKyBpbmRlbnQpOworICAgICAg
ICAgICAgbmV3UmFuZ2UgPSB0aGlzLl90ZXh0TW9kZWwuZWRpdFJhbmdlKHJhbmdlLCBsaW5lQnJl
YWsgKyBpbmRlbnQpOwogCiAgICAgICAgIHRoaXMuX2V4aXRUZXh0Q2hhbmdlTW9kZShyYW5nZSwg
bmV3UmFuZ2UpOwogICAgICAgICB0aGlzLmVuZFVwZGF0ZXMoKTsKQEAgLTIzMDcsNyArMjE5MCw3
IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBkZWxldGUgdGhpcy5fZGlydHlMaW5lczsKIAotICAgICAgICB2YXIgbmV3UmFuZ2UgPSB0
aGlzLl9lZGl0UmFuZ2Uob2xkUmFuZ2UsIG5ld0NvbnRlbnQpOworICAgICAgICB2YXIgbmV3UmFu
Z2UgPSB0aGlzLl90ZXh0TW9kZWwuZWRpdFJhbmdlKG9sZFJhbmdlLCBuZXdDb250ZW50KTsKIAog
ICAgICAgICB0aGlzLl9wYWludFNjaGVkdWxlZExpbmVzKHRydWUpOwogICAgICAgICB0aGlzLl9y
ZXN0b3JlU2VsZWN0aW9uKHNlbGVjdGlvbik7CkBAIC0yMzYyLDIxICsyMjQ1LDYgQEAgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgLyoqCiAgICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSByYW5nZQotICAgICAqIEBwYXJhbSB7
c3RyaW5nfSB0ZXh0Ci0gICAgICovCi0gICAgX2VkaXRSYW5nZTogZnVuY3Rpb24ocmFuZ2UsIHRl
eHQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fbGFzdEVkaXRlZFJhbmdlICYmICghdGV4dCB8
fCB0ZXh0LmluZGV4T2YoIlxuIikgIT09IC0xIHx8IHRoaXMuX2xhc3RFZGl0ZWRSYW5nZS5lbmRM
aW5lICE9PSByYW5nZS5zdGFydExpbmUgfHwgdGhpcy5fbGFzdEVkaXRlZFJhbmdlLmVuZENvbHVt
biAhPT0gcmFuZ2Uuc3RhcnRDb2x1bW4pKQotICAgICAgICAgICAgdGhpcy5fdGV4dE1vZGVsLm1h
cmtVbmRvYWJsZVN0YXRlKCk7Ci0KLSAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhpcy5fdGV4dE1v
ZGVsLmVkaXRSYW5nZShyYW5nZSwgdGV4dCk7Ci0gICAgICAgIHRoaXMuX2xhc3RFZGl0ZWRSYW5n
ZSA9IG5ld1JhbmdlOwotCi0gICAgICAgIHJldHVybiBuZXdSYW5nZTsKLSAgICB9LAotCi0gICAg
LyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSByYW5nZQogICAgICAq
LwogICAgIF9yZW1vdmVEZWNvcmF0aW9uc0luUmFuZ2U6IGZ1bmN0aW9uKHJhbmdlKQogICAgIHsK
QEAgLTI0NDgsNyArMjMxNiw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgLy8gTWF5YmUgbWVyZ2Ugd2l0aCB0aGUgbmV4dCBjaHVuaywg
c28gdGhhdCB3ZSBzaG91bGQgbm90IGNyZWF0ZSAxLXNpemVkIGNodW5rcyB3aGVuIGFwcGVuZGlu
ZyBuZXcgbGluZXMgb25lIGJ5IG9uZS4KICAgICAgICAgdmFyIGNodW5rID0gdGhpcy5fdGV4dENo
dW5rc1tsYXN0Q2h1bmtOdW1iZXIgKyAxXTsKICAgICAgICAgdmFyIGxpbmVzSW5MYXN0Q2h1bmsg
PSBsaW5lc0NvdW50ICUgdGhpcy5fZGVmYXVsdENodW5rU2l6ZTsKLSAgICAgICAgaWYgKGNodW5r
ICYmICFjaHVuay5kZWNvcmF0ZWQgJiYgbGluZXNJbkxhc3RDaHVuayA+IDAgJiYgbGluZXNJbkxh
c3RDaHVuayArIGNodW5rLmxpbmVzQ291bnQgPD0gdGhpcy5fZGVmYXVsdENodW5rU2l6ZSkgewor
ICAgICAgICBpZiAoY2h1bmsgJiYgIWNodW5rLmlzRGVjb3JhdGVkKCkgJiYgbGluZXNJbkxhc3RD
aHVuayA+IDAgJiYgbGluZXNJbkxhc3RDaHVuayArIGNodW5rLmxpbmVzQ291bnQgPD0gdGhpcy5f
ZGVmYXVsdENodW5rU2l6ZSkgewogICAgICAgICAgICAgKytsYXN0Q2h1bmtOdW1iZXI7CiAgICAg
ICAgICAgICBsaW5lc0NvdW50ICs9IGNodW5rLmxpbmVzQ291bnQ7CiAgICAgICAgIH0KQEAgLTI1
NTAsNyArMjQxOCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlw
ZSA9IHsKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWx9IGNo
dW5rZWRQYW5lbAogICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0TGluZQogICogQHBhcmFtIHtudW1i
ZXJ9IGVuZExpbmUKLSovCisgKi8KIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rID0g
ZnVuY3Rpb24oY2h1bmtlZFBhbmVsLCBzdGFydExpbmUsIGVuZExpbmUpCiB7CiAgICAgdGhpcy5f
Y2h1bmtlZFBhbmVsID0gY2h1bmtlZFBhbmVsOwpAQCAtMjU2NSw3ICsyNDMzLDYgQEAgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsgPSBmdW5jdGlvbihjaHVua2VkUGFuZWwsIHN0YXJ0
TGluZSwgZW5kTGluZSkKICAgICB0aGlzLmxpbmVzQ291bnQgPSBlbmRMaW5lIC0gc3RhcnRMaW5l
OwogCiAgICAgdGhpcy5fZXhwYW5kZWQgPSBmYWxzZTsKLSAgICB0aGlzLl9yZWFkT25seSA9IGZh
bHNlOwogCiAgICAgdGhpcy51cGRhdGVDb2xsYXBzZWRMaW5lUm93KCk7CiB9CkBAIC0yNjE0LDcg
KzI0ODEsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuay5wcm90b3R5cGUgPSB7
CiAgICAgLyoqCiAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgKi8KLSAgICBnZXQgZGVj
b3JhdGVkKCkKKyAgICBpc0RlY29yYXRlZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgIT09ICJ3ZWJraXQtbGluZS1jb250ZW50IiB8fCAh
ISh0aGlzLmVsZW1lbnQuZGVjb3JhdGlvbnNFbGVtZW50ICYmIHRoaXMuZWxlbWVudC5kZWNvcmF0
aW9uc0VsZW1lbnQuZmlyc3RDaGlsZCk7CiAgICAgfSwKQEAgLTI2NjUsNyArMjUzMiw2IEBAIFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5rLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHZhciBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQ7CiAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gdGhpcy5zdGFydExpbmU7IGkgPCB0aGlzLnN0YXJ0TGluZSArIHRo
aXMubGluZXNDb3VudDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdmFyIGxpbmVSb3cgPSB0aGlz
Ll9jcmVhdGVSb3coaSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRWxlbWVudFJlYWRP
bmx5U3RhdGUobGluZVJvdyk7CiAgICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC5pbnNlcnRC
ZWZvcmUobGluZVJvdywgdGhpcy5lbGVtZW50KTsKICAgICAgICAgICAgICAgICB0aGlzLl9leHBh
bmRlZExpbmVSb3dzLnB1c2gobGluZVJvdyk7CiAgICAgICAgICAgICB9CkBAIC0yNjkxLDM1ICsy
NTU3LDYgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9jaHVua2VkUGFuZWwuZW5kRG9tVXBkYXRlcygpOwogICAgIH0sCiAKLSAg
ICBzZXQgcmVhZE9ubHkocmVhZE9ubHkpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcmVhZE9u
bHkgPT09IHJlYWRPbmx5KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3Jl
YWRPbmx5ID0gcmVhZE9ubHk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnRSZWFkT25seVN0
YXRlKHRoaXMuZWxlbWVudCk7Ci0gICAgICAgIGlmICh0aGlzLl9leHBhbmRlZExpbmVSb3dzKSB7
Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2V4cGFuZGVkTGluZVJvd3Mu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRWxlbWVudFJlYWRPbmx5
U3RhdGUodGhpcy5fZXhwYW5kZWRMaW5lUm93c1tpXSk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0g
ICAgLyoqCi0gICAgICogQHJldHVybiB7Ym9vbGVhbn0KLSAgICAgKi8KLSAgICBnZXQgcmVhZE9u
bHkoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5OwotICAgIH0sCi0KLSAg
ICBfdXBkYXRlRWxlbWVudFJlYWRPbmx5U3RhdGU6IGZ1bmN0aW9uKGVsZW1lbnQpCi0gICAgewot
ICAgICAgICBpZiAodGhpcy5fcmVhZE9ubHkpCi0gICAgICAgICAgICBlbGVtZW50LmFkZFN0eWxl
Q2xhc3MoInRleHQtZWRpdG9yLXJlYWQtb25seSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoInRleHQtZWRpdG9yLXJlYWQtb25seSIpOwotICAg
IH0sCi0KICAgICAvKioKICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JNb2RlbC5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpz
CmluZGV4IDZhOGIyZGVhZDBlYmE5YjE2ZjA4OWZkMTJhYmYxMmIwZTgzMDIwNTEuLmQ4YWMyYmQz
ZDBkZjM1NzQ5MTg2MjAzYjEwNjExNWYyMjYzNzgyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzCkBAIC0yMzgsMTIg
KzIzOCwyNSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfQogICAgICAqLwogICAgIGVkaXRS
YW5nZTogZnVuY3Rpb24ocmFuZ2UsIHRleHQpCisgICAgeyAgIAorICAgICAgICBpZiAodGhpcy5f
bGFzdEVkaXRlZFJhbmdlICYmICghdGV4dCB8fCB0ZXh0LmluZGV4T2YoIlxuIikgIT09IC0xIHx8
IHRoaXMuX2xhc3RFZGl0ZWRSYW5nZS5lbmRMaW5lICE9PSByYW5nZS5zdGFydExpbmUgfHwgdGhp
cy5fbGFzdEVkaXRlZFJhbmdlLmVuZENvbHVtbiAhPT0gcmFuZ2Uuc3RhcnRDb2x1bW4pKQorICAg
ICAgICAgICAgdGhpcy5fbWFya1VuZG9hYmxlU3RhdGUoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2lubmVyRWRpdFJhbmdlKHJhbmdlLCB0ZXh0KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSByYW5nZQorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSB0ZXh0CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0KKyAgICAg
Ki8KKyAgICBfaW5uZXJFZGl0UmFuZ2U6IGZ1bmN0aW9uKHJhbmdlLCB0ZXh0KQogICAgIHsKICAg
ICAgICAgdmFyIG9yaWdpbmFsVGV4dCA9IHRoaXMuY29weVJhbmdlKHJhbmdlKTsKICAgICAgICAg
aWYgKHRleHQgPT09IG9yaWdpbmFsVGV4dCkKICAgICAgICAgICAgIHJldHVybiByYW5nZTsgLy8g
Tm9vcAogCiAgICAgICAgIHZhciBuZXdSYW5nZSA9IHRoaXMuX2lubmVyU2V0VGV4dChyYW5nZSwg
dGV4dCk7CisgICAgICAgIHRoaXMuX2xhc3RFZGl0ZWRSYW5nZSA9IG5ld1JhbmdlOwogICAgICAg
ICB0aGlzLl9wdXNoVW5kb2FibGVDb21tYW5kKG5ld1JhbmdlLCBvcmlnaW5hbFRleHQpOwogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1vZGVsLkV2ZW50cy5UZXh0Q2hhbmdlZCwgeyBvbGRSYW5nZTogcmFuZ2UsIG5ld1JhbmdlOiBu
ZXdSYW5nZSB9KTsKICAgICAgICAgcmV0dXJuIG5ld1JhbmdlOwpAQCAtNDc3LDcgKzQ5MCw3IEBA
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9yZWRvU3RhY2sgfHwgIXRoaXMuX3JlZG9TdGFjay5sZW5ndGgpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgdGhpcy5tYXJrVW5kb2FibGVTdGF0ZSgpOwor
ICAgICAgICB0aGlzLl9tYXJrVW5kb2FibGVTdGF0ZSgpOwogCiAgICAgICAgIHRoaXMuX2luUmVk
byA9IHRydWU7CiAgICAgICAgIHZhciByYW5nZSA9IHRoaXMuX2RvVW5kbyh0aGlzLl9yZWRvU3Rh
Y2ssIGJlZm9yZUNhbGxiYWNrLCBhZnRlckNhbGxiYWNrKTsKQEAgLTUwMiw3ICs1MTUsNyBAQCBX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlm
IChiZWZvcmVDYWxsYmFjaykKICAgICAgICAgICAgICAgICBiZWZvcmVDYWxsYmFjaygpOwogCi0g
ICAgICAgICAgICByYW5nZSA9IHRoaXMuZWRpdFJhbmdlKGNvbW1hbmQubmV3UmFuZ2UsIGNvbW1h
bmQub3JpZ2luYWxUZXh0KTsKKyAgICAgICAgICAgIHJhbmdlID0gdGhpcy5faW5uZXJFZGl0UmFu
Z2UoY29tbWFuZC5uZXdSYW5nZSwgY29tbWFuZC5vcmlnaW5hbFRleHQpOwogCiAgICAgICAgICAg
ICBpZiAoYWZ0ZXJDYWxsYmFjaykKICAgICAgICAgICAgICAgICBhZnRlckNhbGxiYWNrKGNvbW1h
bmQubmV3UmFuZ2UsIHJhbmdlKTsKQEAgLTUxMyw3ICs1MjYsNyBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0s
CiAKLSAgICBtYXJrVW5kb2FibGVTdGF0ZTogZnVuY3Rpb24oKQorICAgIF9tYXJrVW5kb2FibGVT
dGF0ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3VuZG9TdGFjay5sZW5n
dGgpCiAgICAgICAgICAgICB0aGlzLl91bmRvU3RhY2tbdGhpcy5fdW5kb1N0YWNrLmxlbmd0aCAt
IDFdLmV4cGxpY2l0ID0gdHJ1ZTsKQEAgLTUzMCw1ICs1NDMsNzEgQEAgV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VuZG9TdGFjayA9IFtd
OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFu
Z2V9IHJhbmdlCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0KKyAgICAg
Ki8KKyAgICBpbmRlbnRMaW5lczogZnVuY3Rpb24ocmFuZ2UpCisgICAgeworICAgICAgICB0aGlz
Ll9tYXJrVW5kb2FibGVTdGF0ZSgpOworCisgICAgICAgIHZhciBpbmRlbnQgPSBXZWJJbnNwZWN0
b3Iuc2V0dGluZ3MudGV4dEVkaXRvckluZGVudC5nZXQoKTsKKyAgICAgICAgdmFyIG5ld1Jhbmdl
ID0gcmFuZ2UuY2xvbmUoKTsKKyAgICAgICAgLy8gRG8gbm90IGNoYW5nZSBhIHNlbGVjdGlvbiBz
dGFydCBwb3NpdGlvbiB3aGVuIGl0IGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lCisgICAg
ICAgIGlmIChyYW5nZS5zdGFydENvbHVtbikKKyAgICAgICAgICAgIG5ld1JhbmdlLnN0YXJ0Q29s
dW1uICs9IGluZGVudC5sZW5ndGg7CisKKyAgICAgICAgdmFyIGluZGVudEVuZExpbmUgPSByYW5n
ZS5lbmRMaW5lOworICAgICAgICBpZiAocmFuZ2UuZW5kQ29sdW1uKQorICAgICAgICAgICAgbmV3
UmFuZ2UuZW5kQ29sdW1uICs9IGluZGVudC5sZW5ndGg7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGluZGVudEVuZExpbmUtLTsKKworICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gcmFu
Z2Uuc3RhcnRMaW5lOyBsaW5lTnVtYmVyIDw9IGluZGVudEVuZExpbmU7IGxpbmVOdW1iZXIrKykK
KyAgICAgICAgICAgIHRoaXMuX2lubmVyRWRpdFJhbmdlKFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uu
Y3JlYXRlRnJvbUxvY2F0aW9uKGxpbmVOdW1iZXIsIDApLCBpbmRlbnQpOworCisgICAgICAgIHJl
dHVybiBuZXdSYW5nZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuVGV4dFJhbmdlfSByYW5nZQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5UZXh0
UmFuZ2V9CisgICAgICovCisgICAgdW5pbmRlbnRMaW5lczogZnVuY3Rpb24ocmFuZ2UpCisgICAg
eworICAgICAgICB0aGlzLl9tYXJrVW5kb2FibGVTdGF0ZSgpOworCisgICAgICAgIHZhciBpbmRl
bnQgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MudGV4dEVkaXRvckluZGVudC5nZXQoKTsKKyAgICAg
ICAgdmFyIGluZGVudExlbmd0aCA9IGluZGVudCA9PT0gV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
b2RlbC5JbmRlbnQuVGFiQ2hhcmFjdGVyID8gNCA6IGluZGVudC5sZW5ndGg7CisgICAgICAgIHZh
ciBsaW5lSW5kZW50UmVnZXggPSBuZXcgUmVnRXhwKCJeIHsxLCIgKyBpbmRlbnRMZW5ndGggKyAi
fSIpOworICAgICAgICB2YXIgbmV3UmFuZ2UgPSByYW5nZS5jbG9uZSgpOworCisgICAgICAgIHZh
ciBpbmRlbnRFbmRMaW5lID0gcmFuZ2UuZW5kTGluZTsKKyAgICAgICAgaWYgKCFyYW5nZS5lbmRD
b2x1bW4pCisgICAgICAgICAgICBpbmRlbnRFbmRMaW5lLS07CisKKyAgICAgICAgZm9yICh2YXIg
bGluZU51bWJlciA9IHJhbmdlLnN0YXJ0TGluZTsgbGluZU51bWJlciA8PSBpbmRlbnRFbmRMaW5l
OyBsaW5lTnVtYmVyKyspIHsKKyAgICAgICAgICAgIHZhciBsaW5lID0gdGhpcy5saW5lKGxpbmVO
dW1iZXIpOworICAgICAgICAgICAgdmFyIGZpcnN0Q2hhcmFjdGVyID0gbGluZS5jaGFyQXQoMCk7
CisgICAgICAgICAgICB2YXIgbGluZUluZGVudExlbmd0aDsKKworICAgICAgICAgICAgaWYgKGZp
cnN0Q2hhcmFjdGVyID09PSAiICIpCisgICAgICAgICAgICAgICAgbGluZUluZGVudExlbmd0aCA9
IGxpbmUubWF0Y2gobGluZUluZGVudFJlZ2V4KVswXS5sZW5ndGg7CisgICAgICAgICAgICBlbHNl
IGlmIChmaXJzdENoYXJhY3RlciA9PT0gIlx0IikKKyAgICAgICAgICAgICAgICBsaW5lSW5kZW50
TGVuZ3RoID0gMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgdGhpcy5faW5uZXJFZGl0UmFuZ2UobmV3IFdlYkluc3BlY3Rvci5UZXh0
UmFuZ2UobGluZU51bWJlciwgMCwgbGluZU51bWJlciwgbGluZUluZGVudExlbmd0aCksICIiKTsK
KworICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT09IHJhbmdlLnN0YXJ0TGluZSkKKyAgICAg
ICAgICAgICAgICBuZXdSYW5nZS5zdGFydENvbHVtbiA9IE1hdGgubWF4KDAsIG5ld1JhbmdlLnN0
YXJ0Q29sdW1uIC0gbGluZUluZGVudExlbmd0aCk7CisgICAgICAgICAgICBpZiAobGluZU51bWJl
ciA9PT0gcmFuZ2UuZW5kTGluZSkKKyAgICAgICAgICAgICAgICBuZXdSYW5nZS5lbmRDb2x1bW4g
PSBNYXRoLm1heCgwLCBuZXdSYW5nZS5lbmRDb2x1bW4gLSBsaW5lSW5kZW50TGVuZ3RoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXdSYW5nZTsKKyAgICB9LAorCiAgICAgX19wcm90
b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkyYmIzOGNiMTE3
YmIyNTJkMzU1Y2JmZjJhNmJjMGRmODA3OGZhYzUuLjY4MGRhZjRiY2RlMjBlNTA0MWNkZTExNjhi
ZjMyMDNiMzZhOTRhNzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0xMS0xMCAgUGF2ZWwg
RmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBtb3ZlIGluZGVudGF0aW9uIGxvZ2ljIGludG8gVGV4dEVkaXRvck1vZGVsCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE4NDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9lZGl0b3Iv
aW5kZW50YXRpb24uaHRtbDoKKwogMjAxMi0xMS0wOSAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFNob3VsZCBvbmx5IGZpcmUgYSBzaW5nbGUgc2V0IG9mIG1vdXNl
IGV2ZW50cyBhbmQgdXBkYXRlIGhvdmVyIHN0YXRlIG9uY2Ugd2hlbiBzY3JvbGxpbmcgaXMgZG9u
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9pbmRlbnRhdGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9pbmRlbnRhdGlvbi5odG1sCmluZGV4
IGU1MWEwZDUxNjU5ODcwZmQzYzhlN2E2NzgxYzI3NzQ3OWE0NzkwZDYuLjU4YjE3YzkzYjNhMWNh
NGMzNjk1NmU4MmRhY2IwMjA3NDg5Y2YyNGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9lZGl0b3IvaW5kZW50YXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZWRpdG9yL2luZGVudGF0aW9uLmh0bWwKQEAgLTExLDggKzExLDYgQEAgZnVuY3Rpb24gdGVzdCgp
CiAKICAgICB2YXIgbW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbCgpOwog
ICAgIG1vZGVsLnNldFRleHQoc3JjKTsKLSAgICBmdW5jdGlvbiBub29wKCkge30KLSAgICB2YXIg
dGV4dEVkaXRvck1haW5QYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5l
bChudWxsLCBtb2RlbCwgJycsIG5vb3AsIG5vb3AsIG5vb3AsIG5vb3ApOwogCiAgICAgdmFyIHNl
bGVjdGlvbjsKICAgICBmdW5jdGlvbiBkdW1wVGV4dE1vZGVsKG1zZykKQEAgLTIyLDE5ICsyMCwx
OSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoJ1Nl
bGVjdGlvbiAnICsgc2VsZWN0aW9uLnN0YXJ0TGluZSArICcsJyArIHNlbGVjdGlvbi5zdGFydENv
bHVtbiAgKyAnICcgKyBzZWxlY3Rpb24uZW5kTGluZSArICcsJyArIHNlbGVjdGlvbi5lbmRDb2x1
bW4gKyAnXG4nKTsKICAgICB9CiAKLSAgICBzZWxlY3Rpb24gPSB0ZXh0RWRpdG9yTWFpblBhbmVs
Ll9pbmRlbnRMaW5lcyhuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSgwLCAwLCAxLCAwKSk7Cisg
ICAgc2VsZWN0aW9uID0gbW9kZWwuaW5kZW50TGluZXMobmV3IFdlYkluc3BlY3Rvci5UZXh0UmFu
Z2UoMCwgMCwgMSwgMCkpOwogICAgIGR1bXBUZXh0TW9kZWwoIkFmdGVyIGluZGVudGluZyBmaXJz
dCBmdWxseSBzZWxlY3RlZCBsaW5lIik7CiAKLSAgICBzZWxlY3Rpb24gPSB0ZXh0RWRpdG9yTWFp
blBhbmVsLl9pbmRlbnRMaW5lcyhuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSgwLCA1LCAxLCAw
KSk7CisgICAgc2VsZWN0aW9uID0gbW9kZWwuaW5kZW50TGluZXMobmV3IFdlYkluc3BlY3Rvci5U
ZXh0UmFuZ2UoMCwgNSwgMSwgMCkpOwogICAgIGR1bXBUZXh0TW9kZWwoIkFmdGVyIGluZGVudGlu
ZyBmaXJzdCBwYXJ0aWFsbHkgc2VsZWN0ZWQgbGluZSIpOwogCi0gICAgc2VsZWN0aW9uID0gdGV4
dEVkaXRvck1haW5QYW5lbC5fdW5pbmRlbnRMaW5lcyhuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5n
ZSgwLCAwLCAyLCAwKSk7CisgICAgc2VsZWN0aW9uID0gbW9kZWwudW5pbmRlbnRMaW5lcyhuZXcg
V2ViSW5zcGVjdG9yLlRleHRSYW5nZSgwLCAwLCAyLCAwKSk7CiAgICAgZHVtcFRleHRNb2RlbCgi
QWZ0ZXIgdW5pbmRlbnRpbmcgdHdvIGZ1bGx5IHNlbGVjdGVkIGxpbmVzIik7CiAKLSAgICBzZWxl
Y3Rpb24gPSB0ZXh0RWRpdG9yTWFpblBhbmVsLl91bmluZGVudExpbmVzKG5ldyBXZWJJbnNwZWN0
b3IuVGV4dFJhbmdlKDAsIDUsIDEsIDYpKTsKKyAgICBzZWxlY3Rpb24gPSBtb2RlbC51bmluZGVu
dExpbmVzKG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDAsIDUsIDEsIDYpKTsKICAgICBkdW1w
VGV4dE1vZGVsKCJBZnRlciB1bmluZGVudGluZyB0d28gcGFydGlhbGx5IHNlbGVjdGVkIGxpbmVz
IChidWcgOTc0NjIpIik7CiAKLSAgICBzZWxlY3Rpb24gPSB0ZXh0RWRpdG9yTWFpblBhbmVsLl91
bmluZGVudExpbmVzKG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDAsIDAsIDIsIDMpKTsKKyAg
ICBzZWxlY3Rpb24gPSBtb2RlbC51bmluZGVudExpbmVzKG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJh
bmdlKDAsIDAsIDIsIDMpKTsKICAgICBkdW1wVGV4dE1vZGVsKCJBZnRlciB1bmluZGVudGluZyB0
aHJlZSBwYXJ0aWFsbHkgc2VsZWN0ZWQgbGluZXMiKTsKIAogICAgIEluc3BlY3RvclRlc3QuY29t
cGxldGVUZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173489</attachid>
            <date>2012-11-10 23:32:41 -0800</date>
            <delta_ts>2012-11-11 05:59:35 -0800</delta_ts>
            <desc>[Patch] rebaselined</desc>
            <filename>bug-101842-20121111113045.patch</filename>
            <type>text/plain</type>
            <size>21858</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTljNmU2YjUwZmZmODZi
NmJmOGZiMTI4OWY5MGZlMmJjZWRjMTMwZS4uY2M0MjJlMzYyNWE0N2Q5NDE0NzI2NmM0MDQ5MzVl
MDE4MjdmZjU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDEyLTExLTEwICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1vdmUgaW5kZW50YXRpb24gbG9naWMgaW50byBUZXh0RWRpdG9yTW9kZWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTg0MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEknZCBsaWtlIHRvIG1vdmUg
YXMgbXVjaCBoZWFkbGVzcyBsb2dpYyBpbnRvIHRoZSBUZXh0RWRpdG9yTW9kZWwgYXMgcG9zc2li
bGUuCisgICAgICAgIERyaXZlIGJ5OiByZW1vdmVkIHNvbWUgZGVhZCBjb2RlLCBjb252ZXJ0ZWQg
Z2V0dGVyIGludG8gZnVuY3Rpb24gYW5kIG1vdmVkIHVuZG8KKyAgICAgICAgbWFyayBzdGF0ZSBp
bnRvIHRoZSBtb2RlbCBhcyB3ZWxsLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZWZhdWx0VGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVk
aXRvci5wcm90b3R5cGUuZWRpdFJhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0
VGV4dEVkaXRvci5wcm90b3R5cGUuX3N5bmNEZWNvcmF0aW9uc0ZvckxpbmUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLl9zcGxpdENodW5r
T25BTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90
b3R5cGUuaGFuZGxlRW50ZXJLZXkuZ2V0IHZhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuaGFuZGxlRW50ZXJLZXkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9hcHBseURvbVVwZGF0ZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl91
cGRhdGVDaHVua3NGb3JSYW5nZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluQ2h1bmspOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsucHJv
dG90eXBlLmlzRGVjb3JhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFp
bkNodW5rLnByb3RvdHlwZS5zZXQgZXhwYW5kZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNb2RlbC5lbmRzV2l0aEJyYWNrZXRSZWdleC4pOgorCisyMDEyLTExLTEwICBQYXZlbCBGZWxk
bWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1p
Z3JhdGUgdGV4dCBlZGl0b3IgdG8gbXV0YXRpb24gb2JzZXJ2ZXJzCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE4NDEKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKaW5k
ZXggZDc4YWY4YzA5ZThiYmVjMGQ5NzI3OGE3Nzk1NmQ2NjNiODU2ZTQxYy4uNmFmNjVhM2EyY2Vm
ZjBjOTkxZjQ5NGI5YjRmYzUxYzhmN2Y2ZWYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCkBAIC0zMjEsNyAr
MzIxLDYgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAg
ICBlZGl0UmFuZ2U6IGZ1bmN0aW9uKHJhbmdlLCB0ZXh0KQogICAgIHsKICAgICAgICAgdGhpcy5f
ZW50ZXJJbnRlcm5hbFRleHRDaGFuZ2VNb2RlKCk7Ci0gICAgICAgIHRoaXMuX3RleHRNb2RlbC5t
YXJrVW5kb2FibGVTdGF0ZSgpOwogICAgICAgICB2YXIgbmV3UmFuZ2UgPSB0aGlzLl90ZXh0TW9k
ZWwuZWRpdFJhbmdlKHJhbmdlLCB0ZXh0KTsKICAgICAgICAgdGhpcy5fZXhpdEludGVybmFsVGV4
dENoYW5nZU1vZGUocmFuZ2UsIG5ld1JhbmdlKTsKICAgICAgICAgcmV0dXJuIG5ld1JhbmdlOwpA
QCAtMzY5LDcgKzM2OCw3IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFyIG1haW5DaHVuayA9IHRo
aXMuX21haW5QYW5lbC5jaHVua0ZvckxpbmUobGluZU51bWJlcik7Ci0gICAgICAgIGlmIChtYWlu
Q2h1bmsubGluZXNDb3VudCA9PT0gMSAmJiBtYWluQ2h1bmsuZGVjb3JhdGVkKSB7CisgICAgICAg
IGlmIChtYWluQ2h1bmsubGluZXNDb3VudCA9PT0gMSAmJiBtYWluQ2h1bmsuaXNEZWNvcmF0ZWQo
KSkgewogICAgICAgICAgICAgdmFyIGd1dHRlckNodW5rID0gdGhpcy5fZ3V0dGVyUGFuZWwubWFr
ZUxpbmVBQ2h1bmsobGluZU51bWJlcik7CiAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gbWFpbkNo
dW5rLmhlaWdodDsKICAgICAgICAgICAgIGlmIChoZWlnaHQpCkBAIC03MjksNyArNzI4LDYgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICAvLyBQcmVmaXggY2h1bmsuCiAgICAgICAgIGlmIChsaW5lTnVtYmVyID4gb2xkQ2h1bmsuc3Rh
cnRMaW5lKSB7CiAgICAgICAgICAgICB2YXIgcHJlZml4Q2h1bmsgPSB0aGlzLl9jcmVhdGVOZXdD
aHVuayhvbGRDaHVuay5zdGFydExpbmUsIGxpbmVOdW1iZXIpOwotICAgICAgICAgICAgcHJlZml4
Q2h1bmsucmVhZE9ubHkgPSBvbGRDaHVuay5yZWFkT25seTsKICAgICAgICAgICAgIHRoaXMuX3Rl
eHRDaHVua3Muc3BsaWNlKGluc2VydEluZGV4KyssIDAsIHByZWZpeENodW5rKTsKICAgICAgICAg
ICAgIHRoaXMuX2NvbnRhaW5lci5pbnNlcnRCZWZvcmUocHJlZml4Q2h1bmsuZWxlbWVudCwgb2xk
Q2h1bmsuZWxlbWVudCk7CiAgICAgICAgIH0KQEAgLTczNywxNCArNzM1LDEyIEBAIFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gTGlu
ZSBjaHVuay4KICAgICAgICAgdmFyIGVuZExpbmUgPSBjcmVhdGVTdWZmaXhDaHVuayA/IGxpbmVO
dW1iZXIgKyAxIDogb2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1bmsubGluZXNDb3VudDsKICAg
ICAgICAgdmFyIGxpbmVDaHVuayA9IHRoaXMuX2NyZWF0ZU5ld0NodW5rKGxpbmVOdW1iZXIsIGVu
ZExpbmUpOwotICAgICAgICBsaW5lQ2h1bmsucmVhZE9ubHkgPSBvbGRDaHVuay5yZWFkT25seTsK
ICAgICAgICAgdGhpcy5fdGV4dENodW5rcy5zcGxpY2UoaW5zZXJ0SW5kZXgrKywgMCwgbGluZUNo
dW5rKTsKICAgICAgICAgdGhpcy5fY29udGFpbmVyLmluc2VydEJlZm9yZShsaW5lQ2h1bmsuZWxl
bWVudCwgb2xkQ2h1bmsuZWxlbWVudCk7CiAKICAgICAgICAgLy8gU3VmZml4IGNodW5rLgogICAg
ICAgICBpZiAob2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1bmsubGluZXNDb3VudCA+IGVuZExp
bmUpIHsKICAgICAgICAgICAgIHZhciBzdWZmaXhDaHVuayA9IHRoaXMuX2NyZWF0ZU5ld0NodW5r
KGVuZExpbmUsIG9sZENodW5rLnN0YXJ0TGluZSArIG9sZENodW5rLmxpbmVzQ291bnQpOwotICAg
ICAgICAgICAgc3VmZml4Q2h1bmsucmVhZE9ubHkgPSBvbGRDaHVuay5yZWFkT25seTsKICAgICAg
ICAgICAgIHRoaXMuX3RleHRDaHVua3Muc3BsaWNlKGluc2VydEluZGV4LCAwLCBzdWZmaXhDaHVu
ayk7CiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXIuaW5zZXJ0QmVmb3JlKHN1ZmZpeENodW5r
LmVsZW1lbnQsIG9sZENodW5rLmVsZW1lbnQpOwogICAgICAgICB9CkBAIC0xMzUwLDQ3ICsxMzQ2
LDYgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAg
IH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRMaW5lCi0gICAgICog
QHBhcmFtIHtudW1iZXJ9IGVuZExpbmUKLSAgICAgKi8KLSAgICBzZXRFZGl0YWJsZVJhbmdlOiBm
dW5jdGlvbihzdGFydExpbmUsIGVuZExpbmUpCi0gICAgewotICAgICAgICB0aGlzLmJlZ2luRG9t
VXBkYXRlcygpOwotCi0gICAgICAgIHZhciBmaXJzdENodW5rTnVtYmVyID0gdGhpcy5fY2h1bmtO
dW1iZXJGb3JMaW5lKHN0YXJ0TGluZSk7Ci0gICAgICAgIHZhciBmaXJzdENodW5rID0gdGhpcy5f
dGV4dENodW5rc1tmaXJzdENodW5rTnVtYmVyXTsKLSAgICAgICAgaWYgKGZpcnN0Q2h1bmsuc3Rh
cnRMaW5lICE9PSBzdGFydExpbmUpIHsKLSAgICAgICAgICAgIHRoaXMuX3NwbGl0Q2h1bmtPbkFM
aW5lKHN0YXJ0TGluZSwgZmlyc3RDaHVua051bWJlcik7Ci0gICAgICAgICAgICBmaXJzdENodW5r
TnVtYmVyICs9IDE7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgbGFzdENodW5rTnVtYmVyID0g
dGhpcy5fdGV4dENodW5rcy5sZW5ndGg7Ci0gICAgICAgIGlmIChlbmRMaW5lICE9PSB0aGlzLl90
ZXh0TW9kZWwubGluZXNDb3VudCkgewotICAgICAgICAgICAgbGFzdENodW5rTnVtYmVyID0gdGhp
cy5fY2h1bmtOdW1iZXJGb3JMaW5lKGVuZExpbmUpOwotICAgICAgICAgICAgdmFyIGxhc3RDaHVu
ayA9IHRoaXMuX3RleHRDaHVua3NbbGFzdENodW5rTnVtYmVyXTsKLSAgICAgICAgICAgIGlmIChs
YXN0Q2h1bmsgJiYgbGFzdENodW5rLnN0YXJ0TGluZSAhPT0gZW5kTGluZSkgewotICAgICAgICAg
ICAgICAgIHRoaXMuX3NwbGl0Q2h1bmtPbkFMaW5lKGVuZExpbmUsIGxhc3RDaHVua051bWJlcik7
Ci0gICAgICAgICAgICAgICAgbGFzdENodW5rTnVtYmVyICs9IDE7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICBmb3IgKHZhciBjaHVua051bWJlciA9IDA7IGNodW5rTnVtYmVy
IDwgZmlyc3RDaHVua051bWJlcjsgKytjaHVua051bWJlcikKLSAgICAgICAgICAgIHRoaXMuX3Rl
eHRDaHVua3NbY2h1bmtOdW1iZXJdLnJlYWRPbmx5ID0gdHJ1ZTsKLSAgICAgICAgZm9yICh2YXIg
Y2h1bmtOdW1iZXIgPSBmaXJzdENodW5rTnVtYmVyOyBjaHVua051bWJlciA8IGxhc3RDaHVua051
bWJlcjsgKytjaHVua051bWJlcikKLSAgICAgICAgICAgIHRoaXMuX3RleHRDaHVua3NbY2h1bmtO
dW1iZXJdLnJlYWRPbmx5ID0gZmFsc2U7Ci0gICAgICAgIGZvciAodmFyIGNodW5rTnVtYmVyID0g
bGFzdENodW5rTnVtYmVyOyBjaHVua051bWJlciA8IHRoaXMuX3RleHRDaHVua3MubGVuZ3RoOyAr
K2NodW5rTnVtYmVyKQotICAgICAgICAgICAgdGhpcy5fdGV4dENodW5rc1tjaHVua051bWJlcl0u
cmVhZE9ubHkgPSB0cnVlOwotCi0gICAgICAgIHRoaXMuZW5kRG9tVXBkYXRlcygpOwotICAgIH0s
Ci0KLSAgICBjbGVhckVkaXRhYmxlUmFuZ2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZv
ciAodmFyIGNodW5rTnVtYmVyID0gMDsgY2h1bmtOdW1iZXIgPCB0aGlzLl90ZXh0Q2h1bmtzLmxl
bmd0aDsgKytjaHVua051bWJlcikKLSAgICAgICAgICAgIHRoaXMuX3RleHRDaHVua3NbY2h1bmtO
dW1iZXJdLnJlYWRPbmx5ID0gZmFsc2U7Ci0gICAgfSwKLQotICAgIC8qKgogICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0gcmFuZ2UKICAgICAgKi8KICAgICBtYXJrQW5kUmV2
ZWFsUmFuZ2U6IGZ1bmN0aW9uKHJhbmdlKQpAQCAtMTUwMCwxMiArMTQ1NSwxMiBAQCBXZWJJbnNw
ZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBuZXdS
YW5nZTsKICAgICAgICAgdmFyIHJhbmdlV2FzRW1wdHkgPSByYW5nZS5pc0VtcHR5KCk7CiAgICAg
ICAgIGlmIChzaGlmdEtleSkKLSAgICAgICAgICAgIG5ld1JhbmdlID0gdGhpcy5fdW5pbmRlbnRM
aW5lcyhyYW5nZSk7CisgICAgICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX3RleHRNb2RlbC51bmlu
ZGVudExpbmVzKHJhbmdlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAocmFuZ2VX
YXNFbXB0eSkKLSAgICAgICAgICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX2VkaXRSYW5nZShyYW5n
ZSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnRleHRFZGl0b3JJbmRlbnQuZ2V0KCkpOworICAgICAg
ICAgICAgICAgIG5ld1JhbmdlID0gdGhpcy5fdGV4dE1vZGVsLmVkaXRSYW5nZShyYW5nZSwgV2Vi
SW5zcGVjdG9yLnNldHRpbmdzLnRleHRFZGl0b3JJbmRlbnQuZ2V0KCkpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIG5ld1JhbmdlID0gdGhpcy5faW5kZW50TGluZXMocmFuZ2Up
OworICAgICAgICAgICAgICAgIG5ld1JhbmdlID0gdGhpcy5fdGV4dE1vZGVsLmluZGVudExpbmVz
KHJhbmdlKTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2V4aXRUZXh0Q2hhbmdlTW9kZShy
YW5nZSwgbmV3UmFuZ2UpOwpAQCAtMTUxNiw3OCArMTQ3MSw2IEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0gcmFu
Z2UKLSAgICAgKi8KLSAgICBfaW5kZW50TGluZXM6IGZ1bmN0aW9uKHJhbmdlKQotICAgIHsKLSAg
ICAgICAgdmFyIGluZGVudCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy50ZXh0RWRpdG9ySW5kZW50
LmdldCgpOwotCi0gICAgICAgIGlmICh0aGlzLl9sYXN0RWRpdGVkUmFuZ2UpCi0gICAgICAgICAg
ICB0aGlzLl90ZXh0TW9kZWwubWFya1VuZG9hYmxlU3RhdGUoKTsKLQotICAgICAgICB2YXIgbmV3
UmFuZ2UgPSByYW5nZS5jbG9uZSgpOwotCi0gICAgICAgIC8vIERvIG5vdCBjaGFuZ2UgYSBzZWxl
Y3Rpb24gc3RhcnQgcG9zaXRpb24gd2hlbiBpdCBpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGlu
ZQotICAgICAgICBpZiAocmFuZ2Uuc3RhcnRDb2x1bW4pCi0gICAgICAgICAgICBuZXdSYW5nZS5z
dGFydENvbHVtbiArPSBpbmRlbnQubGVuZ3RoOwotCi0gICAgICAgIHZhciBpbmRlbnRFbmRMaW5l
ID0gcmFuZ2UuZW5kTGluZTsKLSAgICAgICAgaWYgKHJhbmdlLmVuZENvbHVtbikKLSAgICAgICAg
ICAgIG5ld1JhbmdlLmVuZENvbHVtbiArPSBpbmRlbnQubGVuZ3RoOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBpbmRlbnRFbmRMaW5lLS07Ci0KLSAgICAgICAgZm9yICh2YXIgbGluZU51bWJl
ciA9IHJhbmdlLnN0YXJ0TGluZTsgbGluZU51bWJlciA8PSBpbmRlbnRFbmRMaW5lOyBsaW5lTnVt
YmVyKyspCi0gICAgICAgICAgICB0aGlzLl90ZXh0TW9kZWwuZWRpdFJhbmdlKFdlYkluc3BlY3Rv
ci5UZXh0UmFuZ2UuY3JlYXRlRnJvbUxvY2F0aW9uKGxpbmVOdW1iZXIsIDApLCBpbmRlbnQpOwot
Ci0gICAgICAgIHRoaXMuX2xhc3RFZGl0ZWRSYW5nZSA9IG5ld1JhbmdlOwotCi0gICAgICAgIHJl
dHVybiBuZXdSYW5nZTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuVGV4dFJhbmdlfSByYW5nZQotICAgICAqLwotICAgIF91bmluZGVudExpbmVzOiBmdW5j
dGlvbihyYW5nZSkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9sYXN0RWRpdGVkUmFuZ2UpCi0g
ICAgICAgICAgICB0aGlzLl90ZXh0TW9kZWwubWFya1VuZG9hYmxlU3RhdGUoKTsKLQotICAgICAg
ICB2YXIgaW5kZW50ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLnRleHRFZGl0b3JJbmRlbnQuZ2V0
KCk7Ci0gICAgICAgIHZhciBpbmRlbnRMZW5ndGggPSBpbmRlbnQgPT09IFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yTW9kZWwuSW5kZW50LlRhYkNoYXJhY3RlciA/IDQgOiBpbmRlbnQubGVuZ3RoOwot
ICAgICAgICB2YXIgbGluZUluZGVudFJlZ2V4ID0gbmV3IFJlZ0V4cCgiXiB7MSwiICsgaW5kZW50
TGVuZ3RoICsgIn0iKTsKLSAgICAgICAgdmFyIG5ld1JhbmdlID0gcmFuZ2UuY2xvbmUoKTsKLQot
ICAgICAgICB2YXIgaW5kZW50RW5kTGluZSA9IHJhbmdlLmVuZExpbmU7Ci0gICAgICAgIGlmICgh
cmFuZ2UuZW5kQ29sdW1uKQotICAgICAgICAgICAgaW5kZW50RW5kTGluZS0tOwotCi0gICAgICAg
IGZvciAodmFyIGxpbmVOdW1iZXIgPSByYW5nZS5zdGFydExpbmU7IGxpbmVOdW1iZXIgPD0gaW5k
ZW50RW5kTGluZTsgbGluZU51bWJlcisrKSB7Ci0gICAgICAgICAgICB2YXIgbGluZSA9IHRoaXMu
X3RleHRNb2RlbC5saW5lKGxpbmVOdW1iZXIpOwotICAgICAgICAgICAgdmFyIGZpcnN0Q2hhcmFj
dGVyID0gbGluZS5jaGFyQXQoMCk7Ci0gICAgICAgICAgICB2YXIgbGluZUluZGVudExlbmd0aDsK
LQotICAgICAgICAgICAgaWYgKGZpcnN0Q2hhcmFjdGVyID09PSAiICIpCi0gICAgICAgICAgICAg
ICAgbGluZUluZGVudExlbmd0aCA9IGxpbmUubWF0Y2gobGluZUluZGVudFJlZ2V4KVswXS5sZW5n
dGg7Ci0gICAgICAgICAgICBlbHNlIGlmIChmaXJzdENoYXJhY3RlciA9PT0gIlx0IikKLSAgICAg
ICAgICAgICAgICBsaW5lSW5kZW50TGVuZ3RoID0gMTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdGhpcy5fdGV4dE1vZGVsLmVkaXRS
YW5nZShuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShsaW5lTnVtYmVyLCAwLCBsaW5lTnVtYmVy
LCBsaW5lSW5kZW50TGVuZ3RoKSwgIiIpOwotCi0gICAgICAgICAgICBpZiAobGluZU51bWJlciA9
PT0gcmFuZ2Uuc3RhcnRMaW5lKQotICAgICAgICAgICAgICAgIG5ld1JhbmdlLnN0YXJ0Q29sdW1u
ID0gTWF0aC5tYXgoMCwgbmV3UmFuZ2Uuc3RhcnRDb2x1bW4gLSBsaW5lSW5kZW50TGVuZ3RoKTsK
LSAgICAgICAgICAgIGlmIChsaW5lTnVtYmVyID09PSByYW5nZS5lbmRMaW5lKQotICAgICAgICAg
ICAgICAgIG5ld1JhbmdlLmVuZENvbHVtbiA9IE1hdGgubWF4KDAsIG5ld1JhbmdlLmVuZENvbHVt
biAtIGxpbmVJbmRlbnRMZW5ndGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fbGFzdEVk
aXRlZFJhbmdlID0gbmV3UmFuZ2U7Ci0KLSAgICAgICAgcmV0dXJuIG5ld1JhbmdlOwotICAgIH0s
Ci0KICAgICBoYW5kbGVFbnRlcktleTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMucmVhZE9ubHkoKSkKQEAgLTE2MjQsMTEgKzE1MDcsMTEgQEAgV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gewogICAgICAgICAg
ICAgLy8gICAgIHwKICAgICAgICAgICAgIC8vIH0KLSAgICAgICAgICAgIG5ld1JhbmdlID0gdGhp
cy5fZWRpdFJhbmdlKHJhbmdlLCBsaW5lQnJlYWsgKyBpbmRlbnQgKyBsaW5lQnJlYWsgKyBjdXJy
ZW50SW5kZW50KTsKKyAgICAgICAgICAgIG5ld1JhbmdlID0gdGhpcy5fdGV4dE1vZGVsLmVkaXRS
YW5nZShyYW5nZSwgbGluZUJyZWFrICsgaW5kZW50ICsgbGluZUJyZWFrICsgY3VycmVudEluZGVu
dCk7CiAgICAgICAgICAgICBuZXdSYW5nZS5lbmRMaW5lLS07CiAgICAgICAgICAgICBuZXdSYW5n
ZS5lbmRDb2x1bW4gKz0gdGV4dEVkaXRvckluZGVudC5sZW5ndGg7CiAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgbmV3UmFuZ2UgPSB0aGlzLl9lZGl0UmFuZ2UocmFuZ2UsIGxpbmVCcmVhayAr
IGluZGVudCk7CisgICAgICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX3RleHRNb2RlbC5lZGl0UmFu
Z2UocmFuZ2UsIGxpbmVCcmVhayArIGluZGVudCk7CiAKICAgICAgICAgdGhpcy5fZXhpdFRleHRD
aGFuZ2VNb2RlKHJhbmdlLCBuZXdSYW5nZSk7CiAgICAgICAgIHRoaXMuZW5kVXBkYXRlcygpOwpA
QCAtMjI4OCw3ICsyMTcxLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICAvLyBUaGlzIGlzIGEgImZvcmVpZ24iIGNhbGwgb3V0c2lkZSBv
ZiB0aGlzIGNsYXNzLiBTaG91bGQgYmUgYmVmb3JlIHdlIGRlbGV0ZSB0aGUgZGlydHkgbGluZXMg
ZmxhZy4KICAgICAgICAgdGhpcy5fZW50ZXJUZXh0Q2hhbmdlTW9kZSgpOwogCi0gICAgICAgIHZh
ciBuZXdSYW5nZSA9IHRoaXMuX2VkaXRSYW5nZShvbGRSYW5nZSwgbmV3Q29udGVudCk7CisgICAg
ICAgIHZhciBuZXdSYW5nZSA9IHRoaXMuX3RleHRNb2RlbC5lZGl0UmFuZ2Uob2xkUmFuZ2UsIG5l
d0NvbnRlbnQpOwogCiAgICAgICAgIHRoaXMuX3BhaW50U2NoZWR1bGVkTGluZXModHJ1ZSk7CiAg
ICAgICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3Rpb24oc2VsZWN0aW9uKTsKQEAgLTIzNDMsMjEgKzIy
MjYsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAK
ICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQKLSAgICAgKi8KLSAgICBfZWRpdFJhbmdlOiBmdW5j
dGlvbihyYW5nZSwgdGV4dCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9sYXN0RWRpdGVkUmFu
Z2UgJiYgKCF0ZXh0IHx8IHRleHQuaW5kZXhPZigiXG4iKSAhPT0gLTEgfHwgdGhpcy5fbGFzdEVk
aXRlZFJhbmdlLmVuZExpbmUgIT09IHJhbmdlLnN0YXJ0TGluZSB8fCB0aGlzLl9sYXN0RWRpdGVk
UmFuZ2UuZW5kQ29sdW1uICE9PSByYW5nZS5zdGFydENvbHVtbikpCi0gICAgICAgICAgICB0aGlz
Ll90ZXh0TW9kZWwubWFya1VuZG9hYmxlU3RhdGUoKTsKLQotICAgICAgICB2YXIgbmV3UmFuZ2Ug
PSB0aGlzLl90ZXh0TW9kZWwuZWRpdFJhbmdlKHJhbmdlLCB0ZXh0KTsKLSAgICAgICAgdGhpcy5f
bGFzdEVkaXRlZFJhbmdlID0gbmV3UmFuZ2U7Ci0KLSAgICAgICAgcmV0dXJuIG5ld1JhbmdlOwot
ICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9
IHJhbmdlCiAgICAgICovCiAgICAgX3JlbW92ZURlY29yYXRpb25zSW5SYW5nZTogZnVuY3Rpb24o
cmFuZ2UpCiAgICAgewpAQCAtMjQyOSw3ICsyMjk3LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAvLyBNYXliZSBtZXJnZSB3aXRoIHRo
ZSBuZXh0IGNodW5rLCBzbyB0aGF0IHdlIHNob3VsZCBub3QgY3JlYXRlIDEtc2l6ZWQgY2h1bmtz
IHdoZW4gYXBwZW5kaW5nIG5ldyBsaW5lcyBvbmUgYnkgb25lLgogICAgICAgICB2YXIgY2h1bmsg
PSB0aGlzLl90ZXh0Q2h1bmtzW2xhc3RDaHVua051bWJlciArIDFdOwogICAgICAgICB2YXIgbGlu
ZXNJbkxhc3RDaHVuayA9IGxpbmVzQ291bnQgJSB0aGlzLl9kZWZhdWx0Q2h1bmtTaXplOwotICAg
ICAgICBpZiAoY2h1bmsgJiYgIWNodW5rLmRlY29yYXRlZCAmJiBsaW5lc0luTGFzdENodW5rID4g
MCAmJiBsaW5lc0luTGFzdENodW5rICsgY2h1bmsubGluZXNDb3VudCA8PSB0aGlzLl9kZWZhdWx0
Q2h1bmtTaXplKSB7CisgICAgICAgIGlmIChjaHVuayAmJiAhY2h1bmsuaXNEZWNvcmF0ZWQoKSAm
JiBsaW5lc0luTGFzdENodW5rID4gMCAmJiBsaW5lc0luTGFzdENodW5rICsgY2h1bmsubGluZXND
b3VudCA8PSB0aGlzLl9kZWZhdWx0Q2h1bmtTaXplKSB7CiAgICAgICAgICAgICArK2xhc3RDaHVu
a051bWJlcjsKICAgICAgICAgICAgIGxpbmVzQ291bnQgKz0gY2h1bmsubGluZXNDb3VudDsKICAg
ICAgICAgfQpAQCAtMjUzMSw3ICsyMzk5LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWlu
UGFuZWwucHJvdG90eXBlID0gewogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNo
dW5rZWRQYW5lbH0gY2h1bmtlZFBhbmVsCiAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRMaW5lCiAg
KiBAcGFyYW0ge251bWJlcn0gZW5kTGluZQotKi8KKyAqLwogV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluQ2h1bmsgPSBmdW5jdGlvbihjaHVua2VkUGFuZWwsIHN0YXJ0TGluZSwgZW5kTGluZSkK
IHsKICAgICB0aGlzLl9jaHVua2VkUGFuZWwgPSBjaHVua2VkUGFuZWw7CkBAIC0yNTQ2LDcgKzI0
MTQsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuayA9IGZ1bmN0aW9uKGNodW5r
ZWRQYW5lbCwgc3RhcnRMaW5lLCBlbmRMaW5lKQogICAgIHRoaXMubGluZXNDb3VudCA9IGVuZExp
bmUgLSBzdGFydExpbmU7CiAKICAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNlOwotICAgIHRoaXMu
X3JlYWRPbmx5ID0gZmFsc2U7CiAKICAgICB0aGlzLnVwZGF0ZUNvbGxhcHNlZExpbmVSb3coKTsK
IH0KQEAgLTI1OTUsNyArMjQ2Miw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5r
LnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAq
LwotICAgIGdldCBkZWNvcmF0ZWQoKQorICAgIGlzRGVjb3JhdGVkOiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTmFtZSAhPT0gIndlYmtpdC1saW5l
LWNvbnRlbnQiIHx8ICEhKHRoaXMuZWxlbWVudC5kZWNvcmF0aW9uc0VsZW1lbnQgJiYgdGhpcy5l
bGVtZW50LmRlY29yYXRpb25zRWxlbWVudC5maXJzdENoaWxkKTsKICAgICB9LApAQCAtMjY0Niw3
ICsyNTEzLDYgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdmFyIHBhcmVudEVsZW1lbnQgPSB0aGlzLmVsZW1lbnQucGFyZW50RWxl
bWVudDsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLnN0YXJ0TGluZTsgaSA8IHRoaXMu
c3RhcnRMaW5lICsgdGhpcy5saW5lc0NvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICB2YXIg
bGluZVJvdyA9IHRoaXMuX2NyZWF0ZVJvdyhpKTsKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRh
dGVFbGVtZW50UmVhZE9ubHlTdGF0ZShsaW5lUm93KTsKICAgICAgICAgICAgICAgICBwYXJlbnRF
bGVtZW50Lmluc2VydEJlZm9yZShsaW5lUm93LCB0aGlzLmVsZW1lbnQpOwogICAgICAgICAgICAg
ICAgIHRoaXMuX2V4cGFuZGVkTGluZVJvd3MucHVzaChsaW5lUm93KTsKICAgICAgICAgICAgIH0K
QEAgLTI2NzIsMzUgKzI1MzgsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuay5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NodW5rZWRQYW5lbC5lbmREb21VcGRhdGVzKCk7
CiAgICAgfSwKIAotICAgIHNldCByZWFkT25seShyZWFkT25seSkKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl9yZWFkT25seSA9PT0gcmVhZE9ubHkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgdGhpcy5fcmVhZE9ubHkgPSByZWFkT25seTsKLSAgICAgICAgdGhpcy5fdXBkYXRlRWxl
bWVudFJlYWRPbmx5U3RhdGUodGhpcy5lbGVtZW50KTsKLSAgICAgICAgaWYgKHRoaXMuX2V4cGFu
ZGVkTGluZVJvd3MpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZXhw
YW5kZWRMaW5lUm93cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVF
bGVtZW50UmVhZE9ubHlTdGF0ZSh0aGlzLl9leHBhbmRlZExpbmVSb3dzW2ldKTsKLSAgICAgICAg
fQotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAgICAqLwot
ICAgIGdldCByZWFkT25seSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHk7
Ci0gICAgfSwKLQotICAgIF91cGRhdGVFbGVtZW50UmVhZE9ubHlTdGF0ZTogZnVuY3Rpb24oZWxl
bWVudCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZWFkT25seSkKLSAgICAgICAgICAgIGVs
ZW1lbnQuYWRkU3R5bGVDbGFzcygidGV4dC1lZGl0b3ItcmVhZC1vbmx5Iik7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygidGV4dC1lZGl0b3ItcmVh
ZC1vbmx5Iik7Ci0gICAgfSwKLQogICAgIC8qKgogICAgICAqIEByZXR1cm4ge251bWJlcn0KICAg
ICAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4
dEVkaXRvck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0
RWRpdG9yTW9kZWwuanMKaW5kZXggNmE4YjJkZWFkMGViYTliMTZmMDg5ZmQxMmFiZjEyYjBlODMw
MjA1MS4uZDhhYzJiZDNkMGRmMzU3NDkxODYyMDNiMTA2MTE1ZjIyNjM3ODI3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwu
anMKQEAgLTIzOCwxMiArMjM4LDI1IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJv
dG90eXBlID0gewogICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9CiAgICAg
ICovCiAgICAgZWRpdFJhbmdlOiBmdW5jdGlvbihyYW5nZSwgdGV4dCkKKyAgICB7ICAgCisgICAg
ICAgIGlmICh0aGlzLl9sYXN0RWRpdGVkUmFuZ2UgJiYgKCF0ZXh0IHx8IHRleHQuaW5kZXhPZigi
XG4iKSAhPT0gLTEgfHwgdGhpcy5fbGFzdEVkaXRlZFJhbmdlLmVuZExpbmUgIT09IHJhbmdlLnN0
YXJ0TGluZSB8fCB0aGlzLl9sYXN0RWRpdGVkUmFuZ2UuZW5kQ29sdW1uICE9PSByYW5nZS5zdGFy
dENvbHVtbikpCisgICAgICAgICAgICB0aGlzLl9tYXJrVW5kb2FibGVTdGF0ZSgpOworICAgICAg
ICByZXR1cm4gdGhpcy5faW5uZXJFZGl0UmFuZ2UocmFuZ2UsIHRleHQpOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IHRleHQKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4
dFJhbmdlfQorICAgICAqLworICAgIF9pbm5lckVkaXRSYW5nZTogZnVuY3Rpb24ocmFuZ2UsIHRl
eHQpCiAgICAgewogICAgICAgICB2YXIgb3JpZ2luYWxUZXh0ID0gdGhpcy5jb3B5UmFuZ2UocmFu
Z2UpOwogICAgICAgICBpZiAodGV4dCA9PT0gb3JpZ2luYWxUZXh0KQogICAgICAgICAgICAgcmV0
dXJuIHJhbmdlOyAvLyBOb29wCiAKICAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhpcy5faW5uZXJT
ZXRUZXh0KHJhbmdlLCB0ZXh0KTsKKyAgICAgICAgdGhpcy5fbGFzdEVkaXRlZFJhbmdlID0gbmV3
UmFuZ2U7CiAgICAgICAgIHRoaXMuX3B1c2hVbmRvYWJsZUNvbW1hbmQobmV3UmFuZ2UsIG9yaWdp
bmFsVGV4dCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yTW9kZWwuRXZlbnRzLlRleHRDaGFuZ2VkLCB7IG9sZFJhbmdlOiByYW5n
ZSwgbmV3UmFuZ2U6IG5ld1JhbmdlIH0pOwogICAgICAgICByZXR1cm4gbmV3UmFuZ2U7CkBAIC00
NzcsNyArNDkwLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3JlZG9TdGFjayB8fCAhdGhpcy5fcmVkb1N0YWNr
Lmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB0aGlzLm1hcmtVbmRv
YWJsZVN0YXRlKCk7CisgICAgICAgIHRoaXMuX21hcmtVbmRvYWJsZVN0YXRlKCk7CiAKICAgICAg
ICAgdGhpcy5faW5SZWRvID0gdHJ1ZTsKICAgICAgICAgdmFyIHJhbmdlID0gdGhpcy5fZG9VbmRv
KHRoaXMuX3JlZG9TdGFjaywgYmVmb3JlQ2FsbGJhY2ssIGFmdGVyQ2FsbGJhY2spOwpAQCAtNTAy
LDcgKzUxNSw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgaWYgKGJlZm9yZUNhbGxiYWNrKQogICAgICAgICAgICAgICAgIGJlZm9yZUNh
bGxiYWNrKCk7CiAKLSAgICAgICAgICAgIHJhbmdlID0gdGhpcy5lZGl0UmFuZ2UoY29tbWFuZC5u
ZXdSYW5nZSwgY29tbWFuZC5vcmlnaW5hbFRleHQpOworICAgICAgICAgICAgcmFuZ2UgPSB0aGlz
Ll9pbm5lckVkaXRSYW5nZShjb21tYW5kLm5ld1JhbmdlLCBjb21tYW5kLm9yaWdpbmFsVGV4dCk7
CiAKICAgICAgICAgICAgIGlmIChhZnRlckNhbGxiYWNrKQogICAgICAgICAgICAgICAgIGFmdGVy
Q2FsbGJhY2soY29tbWFuZC5uZXdSYW5nZSwgcmFuZ2UpOwpAQCAtNTEzLDcgKzUyNiw3IEBAIFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
cmFuZ2U7CiAgICAgfSwKIAotICAgIG1hcmtVbmRvYWJsZVN0YXRlOiBmdW5jdGlvbigpCisgICAg
X21hcmtVbmRvYWJsZVN0YXRlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
dW5kb1N0YWNrLmxlbmd0aCkKICAgICAgICAgICAgIHRoaXMuX3VuZG9TdGFja1t0aGlzLl91bmRv
U3RhY2subGVuZ3RoIC0gMV0uZXhwbGljaXQgPSB0cnVlOwpAQCAtNTMwLDUgKzU0Myw3MSBAQCBX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
dW5kb1N0YWNrID0gW107CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlRleHRSYW5nZX0gcmFuZ2UKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4
dFJhbmdlfQorICAgICAqLworICAgIGluZGVudExpbmVzOiBmdW5jdGlvbihyYW5nZSkKKyAgICB7
CisgICAgICAgIHRoaXMuX21hcmtVbmRvYWJsZVN0YXRlKCk7CisKKyAgICAgICAgdmFyIGluZGVu
dCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy50ZXh0RWRpdG9ySW5kZW50LmdldCgpOworICAgICAg
ICB2YXIgbmV3UmFuZ2UgPSByYW5nZS5jbG9uZSgpOworICAgICAgICAvLyBEbyBub3QgY2hhbmdl
IGEgc2VsZWN0aW9uIHN0YXJ0IHBvc2l0aW9uIHdoZW4gaXQgaXMgYXQgdGhlIGJlZ2lubmluZyBv
ZiBhIGxpbmUKKyAgICAgICAgaWYgKHJhbmdlLnN0YXJ0Q29sdW1uKQorICAgICAgICAgICAgbmV3
UmFuZ2Uuc3RhcnRDb2x1bW4gKz0gaW5kZW50Lmxlbmd0aDsKKworICAgICAgICB2YXIgaW5kZW50
RW5kTGluZSA9IHJhbmdlLmVuZExpbmU7CisgICAgICAgIGlmIChyYW5nZS5lbmRDb2x1bW4pCisg
ICAgICAgICAgICBuZXdSYW5nZS5lbmRDb2x1bW4gKz0gaW5kZW50Lmxlbmd0aDsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgaW5kZW50RW5kTGluZS0tOworCisgICAgICAgIGZvciAodmFyIGxp
bmVOdW1iZXIgPSByYW5nZS5zdGFydExpbmU7IGxpbmVOdW1iZXIgPD0gaW5kZW50RW5kTGluZTsg
bGluZU51bWJlcisrKQorICAgICAgICAgICAgdGhpcy5faW5uZXJFZGl0UmFuZ2UoV2ViSW5zcGVj
dG9yLlRleHRSYW5nZS5jcmVhdGVGcm9tTG9jYXRpb24obGluZU51bWJlciwgMCksIGluZGVudCk7
CisKKyAgICAgICAgcmV0dXJuIG5ld1JhbmdlOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCisgICAgICogQHJldHVybiB7V2Vi
SW5zcGVjdG9yLlRleHRSYW5nZX0KKyAgICAgKi8KKyAgICB1bmluZGVudExpbmVzOiBmdW5jdGlv
bihyYW5nZSkKKyAgICB7CisgICAgICAgIHRoaXMuX21hcmtVbmRvYWJsZVN0YXRlKCk7CisKKyAg
ICAgICAgdmFyIGluZGVudCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy50ZXh0RWRpdG9ySW5kZW50
LmdldCgpOworICAgICAgICB2YXIgaW5kZW50TGVuZ3RoID0gaW5kZW50ID09PSBXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvck1vZGVsLkluZGVudC5UYWJDaGFyYWN0ZXIgPyA0IDogaW5kZW50Lmxlbmd0
aDsKKyAgICAgICAgdmFyIGxpbmVJbmRlbnRSZWdleCA9IG5ldyBSZWdFeHAoIl4gezEsIiArIGlu
ZGVudExlbmd0aCArICJ9Iik7CisgICAgICAgIHZhciBuZXdSYW5nZSA9IHJhbmdlLmNsb25lKCk7
CisKKyAgICAgICAgdmFyIGluZGVudEVuZExpbmUgPSByYW5nZS5lbmRMaW5lOworICAgICAgICBp
ZiAoIXJhbmdlLmVuZENvbHVtbikKKyAgICAgICAgICAgIGluZGVudEVuZExpbmUtLTsKKworICAg
ICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gcmFuZ2Uuc3RhcnRMaW5lOyBsaW5lTnVtYmVyIDw9
IGluZGVudEVuZExpbmU7IGxpbmVOdW1iZXIrKykgeworICAgICAgICAgICAgdmFyIGxpbmUgPSB0
aGlzLmxpbmUobGluZU51bWJlcik7CisgICAgICAgICAgICB2YXIgZmlyc3RDaGFyYWN0ZXIgPSBs
aW5lLmNoYXJBdCgwKTsKKyAgICAgICAgICAgIHZhciBsaW5lSW5kZW50TGVuZ3RoOworCisgICAg
ICAgICAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09ICIgIikKKyAgICAgICAgICAgICAgICBsaW5l
SW5kZW50TGVuZ3RoID0gbGluZS5tYXRjaChsaW5lSW5kZW50UmVnZXgpWzBdLmxlbmd0aDsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGZpcnN0Q2hhcmFjdGVyID09PSAiXHQiKQorICAgICAgICAgICAg
ICAgIGxpbmVJbmRlbnRMZW5ndGggPSAxOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB0aGlzLl9pbm5lckVkaXRSYW5nZShuZXcgV2Vi
SW5zcGVjdG9yLlRleHRSYW5nZShsaW5lTnVtYmVyLCAwLCBsaW5lTnVtYmVyLCBsaW5lSW5kZW50
TGVuZ3RoKSwgIiIpOworCisgICAgICAgICAgICBpZiAobGluZU51bWJlciA9PT0gcmFuZ2Uuc3Rh
cnRMaW5lKQorICAgICAgICAgICAgICAgIG5ld1JhbmdlLnN0YXJ0Q29sdW1uID0gTWF0aC5tYXgo
MCwgbmV3UmFuZ2Uuc3RhcnRDb2x1bW4gLSBsaW5lSW5kZW50TGVuZ3RoKTsKKyAgICAgICAgICAg
IGlmIChsaW5lTnVtYmVyID09PSByYW5nZS5lbmRMaW5lKQorICAgICAgICAgICAgICAgIG5ld1Jh
bmdlLmVuZENvbHVtbiA9IE1hdGgubWF4KDAsIG5ld1JhbmdlLmVuZENvbHVtbiAtIGxpbmVJbmRl
bnRMZW5ndGgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ld1JhbmdlOworICAgIH0s
CisKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlCiB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggOTJiYjM4Y2IxMTdiYjI1MmQzNTVjYmZmMmE2YmMwZGY4MDc4ZmFjNS4uNjgwZGFmNGJjZGUy
MGU1MDQxY2RlMTE2OGJmMzIwM2IzNmE5NGE3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEy
LTExLTEwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IG1vdmUgaW5kZW50YXRpb24gbG9naWMgaW50byBUZXh0RWRpdG9yTW9k
ZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTg0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL2VkaXRvci9pbmRlbnRhdGlvbi5odG1sOgorCiAyMDEyLTExLTA5ICBPamFuIFZhZmFp
ICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2hvdWxkIG9ubHkgZmlyZSBhIHNpbmds
ZSBzZXQgb2YgbW91c2UgZXZlbnRzIGFuZCB1cGRhdGUgaG92ZXIgc3RhdGUgb25jZSB3aGVuIHNj
cm9sbGluZyBpcyBkb25lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9y
L2luZGVudGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2luZGVudGF0
aW9uLmh0bWwKaW5kZXggZTUxYTBkNTE2NTk4NzBmZDNjOGU3YTY3ODFjMjc3NDc5YTQ3OTBkNi4u
NThiMTdjOTNiM2ExY2E0YzM2OTU2ZTgyZGFjYjAyMDc0ODljZjI0ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9pbmRlbnRhdGlvbi5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9lZGl0b3IvaW5kZW50YXRpb24uaHRtbApAQCAtMTEsOCArMTEsNiBAQCBm
dW5jdGlvbiB0ZXN0KCkKIAogICAgIHZhciBtb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvck1vZGVsKCk7CiAgICAgbW9kZWwuc2V0VGV4dChzcmMpOwotICAgIGZ1bmN0aW9uIG5vb3Ao
KSB7fQotICAgIHZhciB0ZXh0RWRpdG9yTWFpblBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsKG51bGwsIG1vZGVsLCAnJywgbm9vcCwgbm9vcCwgbm9vcCwgbm9vcCk7
CiAKICAgICB2YXIgc2VsZWN0aW9uOwogICAgIGZ1bmN0aW9uIGR1bXBUZXh0TW9kZWwobXNnKQpA
QCAtMjIsMTkgKzIwLDE5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgnU2VsZWN0aW9uICcgKyBzZWxlY3Rpb24uc3RhcnRMaW5lICsgJywnICsgc2Vs
ZWN0aW9uLnN0YXJ0Q29sdW1uICArICcgJyArIHNlbGVjdGlvbi5lbmRMaW5lICsgJywnICsgc2Vs
ZWN0aW9uLmVuZENvbHVtbiArICdcbicpOwogICAgIH0KIAotICAgIHNlbGVjdGlvbiA9IHRleHRF
ZGl0b3JNYWluUGFuZWwuX2luZGVudExpbmVzKG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDAs
IDAsIDEsIDApKTsKKyAgICBzZWxlY3Rpb24gPSBtb2RlbC5pbmRlbnRMaW5lcyhuZXcgV2ViSW5z
cGVjdG9yLlRleHRSYW5nZSgwLCAwLCAxLCAwKSk7CiAgICAgZHVtcFRleHRNb2RlbCgiQWZ0ZXIg
aW5kZW50aW5nIGZpcnN0IGZ1bGx5IHNlbGVjdGVkIGxpbmUiKTsKIAotICAgIHNlbGVjdGlvbiA9
IHRleHRFZGl0b3JNYWluUGFuZWwuX2luZGVudExpbmVzKG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJh
bmdlKDAsIDUsIDEsIDApKTsKKyAgICBzZWxlY3Rpb24gPSBtb2RlbC5pbmRlbnRMaW5lcyhuZXcg
V2ViSW5zcGVjdG9yLlRleHRSYW5nZSgwLCA1LCAxLCAwKSk7CiAgICAgZHVtcFRleHRNb2RlbCgi
QWZ0ZXIgaW5kZW50aW5nIGZpcnN0IHBhcnRpYWxseSBzZWxlY3RlZCBsaW5lIik7CiAKLSAgICBz
ZWxlY3Rpb24gPSB0ZXh0RWRpdG9yTWFpblBhbmVsLl91bmluZGVudExpbmVzKG5ldyBXZWJJbnNw
ZWN0b3IuVGV4dFJhbmdlKDAsIDAsIDIsIDApKTsKKyAgICBzZWxlY3Rpb24gPSBtb2RlbC51bmlu
ZGVudExpbmVzKG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDAsIDAsIDIsIDApKTsKICAgICBk
dW1wVGV4dE1vZGVsKCJBZnRlciB1bmluZGVudGluZyB0d28gZnVsbHkgc2VsZWN0ZWQgbGluZXMi
KTsKIAotICAgIHNlbGVjdGlvbiA9IHRleHRFZGl0b3JNYWluUGFuZWwuX3VuaW5kZW50TGluZXMo
bmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UoMCwgNSwgMSwgNikpOworICAgIHNlbGVjdGlvbiA9
IG1vZGVsLnVuaW5kZW50TGluZXMobmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UoMCwgNSwgMSwg
NikpOwogICAgIGR1bXBUZXh0TW9kZWwoIkFmdGVyIHVuaW5kZW50aW5nIHR3byBwYXJ0aWFsbHkg
c2VsZWN0ZWQgbGluZXMgKGJ1ZyA5NzQ2MikiKTsKIAotICAgIHNlbGVjdGlvbiA9IHRleHRFZGl0
b3JNYWluUGFuZWwuX3VuaW5kZW50TGluZXMobmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UoMCwg
MCwgMiwgMykpOworICAgIHNlbGVjdGlvbiA9IG1vZGVsLnVuaW5kZW50TGluZXMobmV3IFdlYklu
c3BlY3Rvci5UZXh0UmFuZ2UoMCwgMCwgMiwgMykpOwogICAgIGR1bXBUZXh0TW9kZWwoIkFmdGVy
IHVuaW5kZW50aW5nIHRocmVlIHBhcnRpYWxseSBzZWxlY3RlZCBsaW5lcyIpOwogCiAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173502</attachid>
            <date>2012-11-11 05:59:41 -0800</date>
            <delta_ts>2012-11-13 00:38:46 -0800</delta_ts>
            <desc>[Patch] rebaselined</desc>
            <filename>bug-101842-20121111175744.patch</filename>
            <type>text/plain</type>
            <size>21858</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTljNmU2YjUwZmZmODZi
NmJmOGZiMTI4OWY5MGZlMmJjZWRjMTMwZS4uY2M0MjJlMzYyNWE0N2Q5NDE0NzI2NmM0MDQ5MzVl
MDE4MjdmZjU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDEyLTExLTEwICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1vdmUgaW5kZW50YXRpb24gbG9naWMgaW50byBUZXh0RWRpdG9yTW9kZWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTg0MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEknZCBsaWtlIHRvIG1vdmUg
YXMgbXVjaCBoZWFkbGVzcyBsb2dpYyBpbnRvIHRoZSBUZXh0RWRpdG9yTW9kZWwgYXMgcG9zc2li
bGUuCisgICAgICAgIERyaXZlIGJ5OiByZW1vdmVkIHNvbWUgZGVhZCBjb2RlLCBjb252ZXJ0ZWQg
Z2V0dGVyIGludG8gZnVuY3Rpb24gYW5kIG1vdmVkIHVuZG8KKyAgICAgICAgbWFyayBzdGF0ZSBp
bnRvIHRoZSBtb2RlbCBhcyB3ZWxsLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZWZhdWx0VGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVk
aXRvci5wcm90b3R5cGUuZWRpdFJhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0
VGV4dEVkaXRvci5wcm90b3R5cGUuX3N5bmNEZWNvcmF0aW9uc0ZvckxpbmUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLl9zcGxpdENodW5r
T25BTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90
b3R5cGUuaGFuZGxlRW50ZXJLZXkuZ2V0IHZhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuaGFuZGxlRW50ZXJLZXkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9hcHBseURvbVVwZGF0ZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl91
cGRhdGVDaHVua3NGb3JSYW5nZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluQ2h1bmspOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsucHJv
dG90eXBlLmlzRGVjb3JhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFp
bkNodW5rLnByb3RvdHlwZS5zZXQgZXhwYW5kZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvVGV4dEVkaXRvck1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNb2RlbC5lbmRzV2l0aEJyYWNrZXRSZWdleC4pOgorCisyMDEyLTExLTEwICBQYXZlbCBGZWxk
bWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1p
Z3JhdGUgdGV4dCBlZGl0b3IgdG8gbXV0YXRpb24gb2JzZXJ2ZXJzCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE4NDEKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKaW5k
ZXggOTYyYmU5NTY4MDQyYWI2NjAwZjUyMWJmYjg4Mjc5YmVjYWFhNDllMi4uOTFmY2NkOTkwZjgy
NzY5NGZhZWRiYTEwOTM5ZWIzY2ZlYWEwODlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCkBAIC0zMjEsNyAr
MzIxLDYgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAg
ICBlZGl0UmFuZ2U6IGZ1bmN0aW9uKHJhbmdlLCB0ZXh0KQogICAgIHsKICAgICAgICAgdGhpcy5f
ZW50ZXJJbnRlcm5hbFRleHRDaGFuZ2VNb2RlKCk7Ci0gICAgICAgIHRoaXMuX3RleHRNb2RlbC5t
YXJrVW5kb2FibGVTdGF0ZSgpOwogICAgICAgICB2YXIgbmV3UmFuZ2UgPSB0aGlzLl90ZXh0TW9k
ZWwuZWRpdFJhbmdlKHJhbmdlLCB0ZXh0KTsKICAgICAgICAgdGhpcy5fZXhpdEludGVybmFsVGV4
dENoYW5nZU1vZGUocmFuZ2UsIG5ld1JhbmdlKTsKICAgICAgICAgcmV0dXJuIG5ld1JhbmdlOwpA
QCAtMzY5LDcgKzM2OCw3IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFyIG1haW5DaHVuayA9IHRo
aXMuX21haW5QYW5lbC5jaHVua0ZvckxpbmUobGluZU51bWJlcik7Ci0gICAgICAgIGlmIChtYWlu
Q2h1bmsubGluZXNDb3VudCA9PT0gMSAmJiBtYWluQ2h1bmsuZGVjb3JhdGVkKSB7CisgICAgICAg
IGlmIChtYWluQ2h1bmsubGluZXNDb3VudCA9PT0gMSAmJiBtYWluQ2h1bmsuaXNEZWNvcmF0ZWQo
KSkgewogICAgICAgICAgICAgdmFyIGd1dHRlckNodW5rID0gdGhpcy5fZ3V0dGVyUGFuZWwubWFr
ZUxpbmVBQ2h1bmsobGluZU51bWJlcik7CiAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gbWFpbkNo
dW5rLmhlaWdodDsKICAgICAgICAgICAgIGlmIChoZWlnaHQpCkBAIC03MjksNyArNzI4LDYgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICAvLyBQcmVmaXggY2h1bmsuCiAgICAgICAgIGlmIChsaW5lTnVtYmVyID4gb2xkQ2h1bmsuc3Rh
cnRMaW5lKSB7CiAgICAgICAgICAgICB2YXIgcHJlZml4Q2h1bmsgPSB0aGlzLl9jcmVhdGVOZXdD
aHVuayhvbGRDaHVuay5zdGFydExpbmUsIGxpbmVOdW1iZXIpOwotICAgICAgICAgICAgcHJlZml4
Q2h1bmsucmVhZE9ubHkgPSBvbGRDaHVuay5yZWFkT25seTsKICAgICAgICAgICAgIHRoaXMuX3Rl
eHRDaHVua3Muc3BsaWNlKGluc2VydEluZGV4KyssIDAsIHByZWZpeENodW5rKTsKICAgICAgICAg
ICAgIHRoaXMuX2NvbnRhaW5lci5pbnNlcnRCZWZvcmUocHJlZml4Q2h1bmsuZWxlbWVudCwgb2xk
Q2h1bmsuZWxlbWVudCk7CiAgICAgICAgIH0KQEAgLTczNywxNCArNzM1LDEyIEBAIFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gTGlu
ZSBjaHVuay4KICAgICAgICAgdmFyIGVuZExpbmUgPSBjcmVhdGVTdWZmaXhDaHVuayA/IGxpbmVO
dW1iZXIgKyAxIDogb2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1bmsubGluZXNDb3VudDsKICAg
ICAgICAgdmFyIGxpbmVDaHVuayA9IHRoaXMuX2NyZWF0ZU5ld0NodW5rKGxpbmVOdW1iZXIsIGVu
ZExpbmUpOwotICAgICAgICBsaW5lQ2h1bmsucmVhZE9ubHkgPSBvbGRDaHVuay5yZWFkT25seTsK
ICAgICAgICAgdGhpcy5fdGV4dENodW5rcy5zcGxpY2UoaW5zZXJ0SW5kZXgrKywgMCwgbGluZUNo
dW5rKTsKICAgICAgICAgdGhpcy5fY29udGFpbmVyLmluc2VydEJlZm9yZShsaW5lQ2h1bmsuZWxl
bWVudCwgb2xkQ2h1bmsuZWxlbWVudCk7CiAKICAgICAgICAgLy8gU3VmZml4IGNodW5rLgogICAg
ICAgICBpZiAob2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1bmsubGluZXNDb3VudCA+IGVuZExp
bmUpIHsKICAgICAgICAgICAgIHZhciBzdWZmaXhDaHVuayA9IHRoaXMuX2NyZWF0ZU5ld0NodW5r
KGVuZExpbmUsIG9sZENodW5rLnN0YXJ0TGluZSArIG9sZENodW5rLmxpbmVzQ291bnQpOwotICAg
ICAgICAgICAgc3VmZml4Q2h1bmsucmVhZE9ubHkgPSBvbGRDaHVuay5yZWFkT25seTsKICAgICAg
ICAgICAgIHRoaXMuX3RleHRDaHVua3Muc3BsaWNlKGluc2VydEluZGV4LCAwLCBzdWZmaXhDaHVu
ayk7CiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXIuaW5zZXJ0QmVmb3JlKHN1ZmZpeENodW5r
LmVsZW1lbnQsIG9sZENodW5rLmVsZW1lbnQpOwogICAgICAgICB9CkBAIC0xMzUwLDQ3ICsxMzQ2
LDYgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAg
IH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRMaW5lCi0gICAgICog
QHBhcmFtIHtudW1iZXJ9IGVuZExpbmUKLSAgICAgKi8KLSAgICBzZXRFZGl0YWJsZVJhbmdlOiBm
dW5jdGlvbihzdGFydExpbmUsIGVuZExpbmUpCi0gICAgewotICAgICAgICB0aGlzLmJlZ2luRG9t
VXBkYXRlcygpOwotCi0gICAgICAgIHZhciBmaXJzdENodW5rTnVtYmVyID0gdGhpcy5fY2h1bmtO
dW1iZXJGb3JMaW5lKHN0YXJ0TGluZSk7Ci0gICAgICAgIHZhciBmaXJzdENodW5rID0gdGhpcy5f
dGV4dENodW5rc1tmaXJzdENodW5rTnVtYmVyXTsKLSAgICAgICAgaWYgKGZpcnN0Q2h1bmsuc3Rh
cnRMaW5lICE9PSBzdGFydExpbmUpIHsKLSAgICAgICAgICAgIHRoaXMuX3NwbGl0Q2h1bmtPbkFM
aW5lKHN0YXJ0TGluZSwgZmlyc3RDaHVua051bWJlcik7Ci0gICAgICAgICAgICBmaXJzdENodW5r
TnVtYmVyICs9IDE7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgbGFzdENodW5rTnVtYmVyID0g
dGhpcy5fdGV4dENodW5rcy5sZW5ndGg7Ci0gICAgICAgIGlmIChlbmRMaW5lICE9PSB0aGlzLl90
ZXh0TW9kZWwubGluZXNDb3VudCkgewotICAgICAgICAgICAgbGFzdENodW5rTnVtYmVyID0gdGhp
cy5fY2h1bmtOdW1iZXJGb3JMaW5lKGVuZExpbmUpOwotICAgICAgICAgICAgdmFyIGxhc3RDaHVu
ayA9IHRoaXMuX3RleHRDaHVua3NbbGFzdENodW5rTnVtYmVyXTsKLSAgICAgICAgICAgIGlmIChs
YXN0Q2h1bmsgJiYgbGFzdENodW5rLnN0YXJ0TGluZSAhPT0gZW5kTGluZSkgewotICAgICAgICAg
ICAgICAgIHRoaXMuX3NwbGl0Q2h1bmtPbkFMaW5lKGVuZExpbmUsIGxhc3RDaHVua051bWJlcik7
Ci0gICAgICAgICAgICAgICAgbGFzdENodW5rTnVtYmVyICs9IDE7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICBmb3IgKHZhciBjaHVua051bWJlciA9IDA7IGNodW5rTnVtYmVy
IDwgZmlyc3RDaHVua051bWJlcjsgKytjaHVua051bWJlcikKLSAgICAgICAgICAgIHRoaXMuX3Rl
eHRDaHVua3NbY2h1bmtOdW1iZXJdLnJlYWRPbmx5ID0gdHJ1ZTsKLSAgICAgICAgZm9yICh2YXIg
Y2h1bmtOdW1iZXIgPSBmaXJzdENodW5rTnVtYmVyOyBjaHVua051bWJlciA8IGxhc3RDaHVua051
bWJlcjsgKytjaHVua051bWJlcikKLSAgICAgICAgICAgIHRoaXMuX3RleHRDaHVua3NbY2h1bmtO
dW1iZXJdLnJlYWRPbmx5ID0gZmFsc2U7Ci0gICAgICAgIGZvciAodmFyIGNodW5rTnVtYmVyID0g
bGFzdENodW5rTnVtYmVyOyBjaHVua051bWJlciA8IHRoaXMuX3RleHRDaHVua3MubGVuZ3RoOyAr
K2NodW5rTnVtYmVyKQotICAgICAgICAgICAgdGhpcy5fdGV4dENodW5rc1tjaHVua051bWJlcl0u
cmVhZE9ubHkgPSB0cnVlOwotCi0gICAgICAgIHRoaXMuZW5kRG9tVXBkYXRlcygpOwotICAgIH0s
Ci0KLSAgICBjbGVhckVkaXRhYmxlUmFuZ2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZv
ciAodmFyIGNodW5rTnVtYmVyID0gMDsgY2h1bmtOdW1iZXIgPCB0aGlzLl90ZXh0Q2h1bmtzLmxl
bmd0aDsgKytjaHVua051bWJlcikKLSAgICAgICAgICAgIHRoaXMuX3RleHRDaHVua3NbY2h1bmtO
dW1iZXJdLnJlYWRPbmx5ID0gZmFsc2U7Ci0gICAgfSwKLQotICAgIC8qKgogICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0gcmFuZ2UKICAgICAgKi8KICAgICBtYXJrQW5kUmV2
ZWFsUmFuZ2U6IGZ1bmN0aW9uKHJhbmdlKQpAQCAtMTUwMCwxMiArMTQ1NSwxMiBAQCBXZWJJbnNw
ZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBuZXdS
YW5nZTsKICAgICAgICAgdmFyIHJhbmdlV2FzRW1wdHkgPSByYW5nZS5pc0VtcHR5KCk7CiAgICAg
ICAgIGlmIChzaGlmdEtleSkKLSAgICAgICAgICAgIG5ld1JhbmdlID0gdGhpcy5fdW5pbmRlbnRM
aW5lcyhyYW5nZSk7CisgICAgICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX3RleHRNb2RlbC51bmlu
ZGVudExpbmVzKHJhbmdlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAocmFuZ2VX
YXNFbXB0eSkKLSAgICAgICAgICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX2VkaXRSYW5nZShyYW5n
ZSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnRleHRFZGl0b3JJbmRlbnQuZ2V0KCkpOworICAgICAg
ICAgICAgICAgIG5ld1JhbmdlID0gdGhpcy5fdGV4dE1vZGVsLmVkaXRSYW5nZShyYW5nZSwgV2Vi
SW5zcGVjdG9yLnNldHRpbmdzLnRleHRFZGl0b3JJbmRlbnQuZ2V0KCkpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIG5ld1JhbmdlID0gdGhpcy5faW5kZW50TGluZXMocmFuZ2Up
OworICAgICAgICAgICAgICAgIG5ld1JhbmdlID0gdGhpcy5fdGV4dE1vZGVsLmluZGVudExpbmVz
KHJhbmdlKTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2V4aXRUZXh0Q2hhbmdlTW9kZShy
YW5nZSwgbmV3UmFuZ2UpOwpAQCAtMTUxNiw3OCArMTQ3MSw2IEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0gcmFu
Z2UKLSAgICAgKi8KLSAgICBfaW5kZW50TGluZXM6IGZ1bmN0aW9uKHJhbmdlKQotICAgIHsKLSAg
ICAgICAgdmFyIGluZGVudCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy50ZXh0RWRpdG9ySW5kZW50
LmdldCgpOwotCi0gICAgICAgIGlmICh0aGlzLl9sYXN0RWRpdGVkUmFuZ2UpCi0gICAgICAgICAg
ICB0aGlzLl90ZXh0TW9kZWwubWFya1VuZG9hYmxlU3RhdGUoKTsKLQotICAgICAgICB2YXIgbmV3
UmFuZ2UgPSByYW5nZS5jbG9uZSgpOwotCi0gICAgICAgIC8vIERvIG5vdCBjaGFuZ2UgYSBzZWxl
Y3Rpb24gc3RhcnQgcG9zaXRpb24gd2hlbiBpdCBpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGlu
ZQotICAgICAgICBpZiAocmFuZ2Uuc3RhcnRDb2x1bW4pCi0gICAgICAgICAgICBuZXdSYW5nZS5z
dGFydENvbHVtbiArPSBpbmRlbnQubGVuZ3RoOwotCi0gICAgICAgIHZhciBpbmRlbnRFbmRMaW5l
ID0gcmFuZ2UuZW5kTGluZTsKLSAgICAgICAgaWYgKHJhbmdlLmVuZENvbHVtbikKLSAgICAgICAg
ICAgIG5ld1JhbmdlLmVuZENvbHVtbiArPSBpbmRlbnQubGVuZ3RoOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBpbmRlbnRFbmRMaW5lLS07Ci0KLSAgICAgICAgZm9yICh2YXIgbGluZU51bWJl
ciA9IHJhbmdlLnN0YXJ0TGluZTsgbGluZU51bWJlciA8PSBpbmRlbnRFbmRMaW5lOyBsaW5lTnVt
YmVyKyspCi0gICAgICAgICAgICB0aGlzLl90ZXh0TW9kZWwuZWRpdFJhbmdlKFdlYkluc3BlY3Rv
ci5UZXh0UmFuZ2UuY3JlYXRlRnJvbUxvY2F0aW9uKGxpbmVOdW1iZXIsIDApLCBpbmRlbnQpOwot
Ci0gICAgICAgIHRoaXMuX2xhc3RFZGl0ZWRSYW5nZSA9IG5ld1JhbmdlOwotCi0gICAgICAgIHJl
dHVybiBuZXdSYW5nZTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuVGV4dFJhbmdlfSByYW5nZQotICAgICAqLwotICAgIF91bmluZGVudExpbmVzOiBmdW5j
dGlvbihyYW5nZSkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9sYXN0RWRpdGVkUmFuZ2UpCi0g
ICAgICAgICAgICB0aGlzLl90ZXh0TW9kZWwubWFya1VuZG9hYmxlU3RhdGUoKTsKLQotICAgICAg
ICB2YXIgaW5kZW50ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLnRleHRFZGl0b3JJbmRlbnQuZ2V0
KCk7Ci0gICAgICAgIHZhciBpbmRlbnRMZW5ndGggPSBpbmRlbnQgPT09IFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yTW9kZWwuSW5kZW50LlRhYkNoYXJhY3RlciA/IDQgOiBpbmRlbnQubGVuZ3RoOwot
ICAgICAgICB2YXIgbGluZUluZGVudFJlZ2V4ID0gbmV3IFJlZ0V4cCgiXiB7MSwiICsgaW5kZW50
TGVuZ3RoICsgIn0iKTsKLSAgICAgICAgdmFyIG5ld1JhbmdlID0gcmFuZ2UuY2xvbmUoKTsKLQot
ICAgICAgICB2YXIgaW5kZW50RW5kTGluZSA9IHJhbmdlLmVuZExpbmU7Ci0gICAgICAgIGlmICgh
cmFuZ2UuZW5kQ29sdW1uKQotICAgICAgICAgICAgaW5kZW50RW5kTGluZS0tOwotCi0gICAgICAg
IGZvciAodmFyIGxpbmVOdW1iZXIgPSByYW5nZS5zdGFydExpbmU7IGxpbmVOdW1iZXIgPD0gaW5k
ZW50RW5kTGluZTsgbGluZU51bWJlcisrKSB7Ci0gICAgICAgICAgICB2YXIgbGluZSA9IHRoaXMu
X3RleHRNb2RlbC5saW5lKGxpbmVOdW1iZXIpOwotICAgICAgICAgICAgdmFyIGZpcnN0Q2hhcmFj
dGVyID0gbGluZS5jaGFyQXQoMCk7Ci0gICAgICAgICAgICB2YXIgbGluZUluZGVudExlbmd0aDsK
LQotICAgICAgICAgICAgaWYgKGZpcnN0Q2hhcmFjdGVyID09PSAiICIpCi0gICAgICAgICAgICAg
ICAgbGluZUluZGVudExlbmd0aCA9IGxpbmUubWF0Y2gobGluZUluZGVudFJlZ2V4KVswXS5sZW5n
dGg7Ci0gICAgICAgICAgICBlbHNlIGlmIChmaXJzdENoYXJhY3RlciA9PT0gIlx0IikKLSAgICAg
ICAgICAgICAgICBsaW5lSW5kZW50TGVuZ3RoID0gMTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdGhpcy5fdGV4dE1vZGVsLmVkaXRS
YW5nZShuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShsaW5lTnVtYmVyLCAwLCBsaW5lTnVtYmVy
LCBsaW5lSW5kZW50TGVuZ3RoKSwgIiIpOwotCi0gICAgICAgICAgICBpZiAobGluZU51bWJlciA9
PT0gcmFuZ2Uuc3RhcnRMaW5lKQotICAgICAgICAgICAgICAgIG5ld1JhbmdlLnN0YXJ0Q29sdW1u
ID0gTWF0aC5tYXgoMCwgbmV3UmFuZ2Uuc3RhcnRDb2x1bW4gLSBsaW5lSW5kZW50TGVuZ3RoKTsK
LSAgICAgICAgICAgIGlmIChsaW5lTnVtYmVyID09PSByYW5nZS5lbmRMaW5lKQotICAgICAgICAg
ICAgICAgIG5ld1JhbmdlLmVuZENvbHVtbiA9IE1hdGgubWF4KDAsIG5ld1JhbmdlLmVuZENvbHVt
biAtIGxpbmVJbmRlbnRMZW5ndGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fbGFzdEVk
aXRlZFJhbmdlID0gbmV3UmFuZ2U7Ci0KLSAgICAgICAgcmV0dXJuIG5ld1JhbmdlOwotICAgIH0s
Ci0KICAgICBoYW5kbGVFbnRlcktleTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMucmVhZE9ubHkoKSkKQEAgLTE2MjQsMTEgKzE1MDcsMTEgQEAgV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gewogICAgICAgICAg
ICAgLy8gICAgIHwKICAgICAgICAgICAgIC8vIH0KLSAgICAgICAgICAgIG5ld1JhbmdlID0gdGhp
cy5fZWRpdFJhbmdlKHJhbmdlLCBsaW5lQnJlYWsgKyBpbmRlbnQgKyBsaW5lQnJlYWsgKyBjdXJy
ZW50SW5kZW50KTsKKyAgICAgICAgICAgIG5ld1JhbmdlID0gdGhpcy5fdGV4dE1vZGVsLmVkaXRS
YW5nZShyYW5nZSwgbGluZUJyZWFrICsgaW5kZW50ICsgbGluZUJyZWFrICsgY3VycmVudEluZGVu
dCk7CiAgICAgICAgICAgICBuZXdSYW5nZS5lbmRMaW5lLS07CiAgICAgICAgICAgICBuZXdSYW5n
ZS5lbmRDb2x1bW4gKz0gdGV4dEVkaXRvckluZGVudC5sZW5ndGg7CiAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgbmV3UmFuZ2UgPSB0aGlzLl9lZGl0UmFuZ2UocmFuZ2UsIGxpbmVCcmVhayAr
IGluZGVudCk7CisgICAgICAgICAgICBuZXdSYW5nZSA9IHRoaXMuX3RleHRNb2RlbC5lZGl0UmFu
Z2UocmFuZ2UsIGxpbmVCcmVhayArIGluZGVudCk7CiAKICAgICAgICAgdGhpcy5fZXhpdFRleHRD
aGFuZ2VNb2RlKHJhbmdlLCBuZXdSYW5nZSk7CiAgICAgICAgIHRoaXMuZW5kVXBkYXRlcygpOwpA
QCAtMjMwNyw3ICsyMTkwLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICAvLyBUaGlzIGlzIGEgImZvcmVpZ24iIGNhbGwgb3V0c2lkZSBv
ZiB0aGlzIGNsYXNzLiBTaG91bGQgYmUgYmVmb3JlIHdlIGRlbGV0ZSB0aGUgZGlydHkgbGluZXMg
ZmxhZy4KICAgICAgICAgdGhpcy5fZW50ZXJUZXh0Q2hhbmdlTW9kZSgpOwogCi0gICAgICAgIHZh
ciBuZXdSYW5nZSA9IHRoaXMuX2VkaXRSYW5nZShvbGRSYW5nZSwgbmV3Q29udGVudCk7CisgICAg
ICAgIHZhciBuZXdSYW5nZSA9IHRoaXMuX3RleHRNb2RlbC5lZGl0UmFuZ2Uob2xkUmFuZ2UsIG5l
d0NvbnRlbnQpOwogCiAgICAgICAgIHRoaXMuX3BhaW50U2NoZWR1bGVkTGluZXModHJ1ZSk7CiAg
ICAgICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3Rpb24oc2VsZWN0aW9uKTsKQEAgLTIzNjQsMjEgKzIy
NDcsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAK
ICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQKLSAgICAgKi8KLSAgICBfZWRpdFJhbmdlOiBmdW5j
dGlvbihyYW5nZSwgdGV4dCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9sYXN0RWRpdGVkUmFu
Z2UgJiYgKCF0ZXh0IHx8IHRleHQuaW5kZXhPZigiXG4iKSAhPT0gLTEgfHwgdGhpcy5fbGFzdEVk
aXRlZFJhbmdlLmVuZExpbmUgIT09IHJhbmdlLnN0YXJ0TGluZSB8fCB0aGlzLl9sYXN0RWRpdGVk
UmFuZ2UuZW5kQ29sdW1uICE9PSByYW5nZS5zdGFydENvbHVtbikpCi0gICAgICAgICAgICB0aGlz
Ll90ZXh0TW9kZWwubWFya1VuZG9hYmxlU3RhdGUoKTsKLQotICAgICAgICB2YXIgbmV3UmFuZ2Ug
PSB0aGlzLl90ZXh0TW9kZWwuZWRpdFJhbmdlKHJhbmdlLCB0ZXh0KTsKLSAgICAgICAgdGhpcy5f
bGFzdEVkaXRlZFJhbmdlID0gbmV3UmFuZ2U7Ci0KLSAgICAgICAgcmV0dXJuIG5ld1JhbmdlOwot
ICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9
IHJhbmdlCiAgICAgICovCiAgICAgX3JlbW92ZURlY29yYXRpb25zSW5SYW5nZTogZnVuY3Rpb24o
cmFuZ2UpCiAgICAgewpAQCAtMjQ1MCw3ICsyMzE4LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAvLyBNYXliZSBtZXJnZSB3aXRoIHRo
ZSBuZXh0IGNodW5rLCBzbyB0aGF0IHdlIHNob3VsZCBub3QgY3JlYXRlIDEtc2l6ZWQgY2h1bmtz
IHdoZW4gYXBwZW5kaW5nIG5ldyBsaW5lcyBvbmUgYnkgb25lLgogICAgICAgICB2YXIgY2h1bmsg
PSB0aGlzLl90ZXh0Q2h1bmtzW2xhc3RDaHVua051bWJlciArIDFdOwogICAgICAgICB2YXIgbGlu
ZXNJbkxhc3RDaHVuayA9IGxpbmVzQ291bnQgJSB0aGlzLl9kZWZhdWx0Q2h1bmtTaXplOwotICAg
ICAgICBpZiAoY2h1bmsgJiYgIWNodW5rLmRlY29yYXRlZCAmJiBsaW5lc0luTGFzdENodW5rID4g
MCAmJiBsaW5lc0luTGFzdENodW5rICsgY2h1bmsubGluZXNDb3VudCA8PSB0aGlzLl9kZWZhdWx0
Q2h1bmtTaXplKSB7CisgICAgICAgIGlmIChjaHVuayAmJiAhY2h1bmsuaXNEZWNvcmF0ZWQoKSAm
JiBsaW5lc0luTGFzdENodW5rID4gMCAmJiBsaW5lc0luTGFzdENodW5rICsgY2h1bmsubGluZXND
b3VudCA8PSB0aGlzLl9kZWZhdWx0Q2h1bmtTaXplKSB7CiAgICAgICAgICAgICArK2xhc3RDaHVu
a051bWJlcjsKICAgICAgICAgICAgIGxpbmVzQ291bnQgKz0gY2h1bmsubGluZXNDb3VudDsKICAg
ICAgICAgfQpAQCAtMjU1Miw3ICsyNDIwLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWlu
UGFuZWwucHJvdG90eXBlID0gewogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNo
dW5rZWRQYW5lbH0gY2h1bmtlZFBhbmVsCiAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRMaW5lCiAg
KiBAcGFyYW0ge251bWJlcn0gZW5kTGluZQotKi8KKyAqLwogV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JNYWluQ2h1bmsgPSBmdW5jdGlvbihjaHVua2VkUGFuZWwsIHN0YXJ0TGluZSwgZW5kTGluZSkK
IHsKICAgICB0aGlzLl9jaHVua2VkUGFuZWwgPSBjaHVua2VkUGFuZWw7CkBAIC0yNTY3LDcgKzI0
MzUsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuayA9IGZ1bmN0aW9uKGNodW5r
ZWRQYW5lbCwgc3RhcnRMaW5lLCBlbmRMaW5lKQogICAgIHRoaXMubGluZXNDb3VudCA9IGVuZExp
bmUgLSBzdGFydExpbmU7CiAKICAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNlOwotICAgIHRoaXMu
X3JlYWRPbmx5ID0gZmFsc2U7CiAKICAgICB0aGlzLnVwZGF0ZUNvbGxhcHNlZExpbmVSb3coKTsK
IH0KQEAgLTI2MTYsNyArMjQ4Myw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpbkNodW5r
LnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAq
LwotICAgIGdldCBkZWNvcmF0ZWQoKQorICAgIGlzRGVjb3JhdGVkOiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTmFtZSAhPT0gIndlYmtpdC1saW5l
LWNvbnRlbnQiIHx8ICEhKHRoaXMuZWxlbWVudC5kZWNvcmF0aW9uc0VsZW1lbnQgJiYgdGhpcy5l
bGVtZW50LmRlY29yYXRpb25zRWxlbWVudC5maXJzdENoaWxkKTsKICAgICB9LApAQCAtMjY2Nyw3
ICsyNTM0LDYgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluQ2h1bmsucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdmFyIHBhcmVudEVsZW1lbnQgPSB0aGlzLmVsZW1lbnQucGFyZW50RWxl
bWVudDsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLnN0YXJ0TGluZTsgaSA8IHRoaXMu
c3RhcnRMaW5lICsgdGhpcy5saW5lc0NvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICB2YXIg
bGluZVJvdyA9IHRoaXMuX2NyZWF0ZVJvdyhpKTsKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRh
dGVFbGVtZW50UmVhZE9ubHlTdGF0ZShsaW5lUm93KTsKICAgICAgICAgICAgICAgICBwYXJlbnRF
bGVtZW50Lmluc2VydEJlZm9yZShsaW5lUm93LCB0aGlzLmVsZW1lbnQpOwogICAgICAgICAgICAg
ICAgIHRoaXMuX2V4cGFuZGVkTGluZVJvd3MucHVzaChsaW5lUm93KTsKICAgICAgICAgICAgIH0K
QEAgLTI2OTMsMzUgKzI1NTksNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5DaHVuay5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NodW5rZWRQYW5lbC5lbmREb21VcGRhdGVzKCk7
CiAgICAgfSwKIAotICAgIHNldCByZWFkT25seShyZWFkT25seSkKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl9yZWFkT25seSA9PT0gcmVhZE9ubHkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgdGhpcy5fcmVhZE9ubHkgPSByZWFkT25seTsKLSAgICAgICAgdGhpcy5fdXBkYXRlRWxl
bWVudFJlYWRPbmx5U3RhdGUodGhpcy5lbGVtZW50KTsKLSAgICAgICAgaWYgKHRoaXMuX2V4cGFu
ZGVkTGluZVJvd3MpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZXhw
YW5kZWRMaW5lUm93cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVF
bGVtZW50UmVhZE9ubHlTdGF0ZSh0aGlzLl9leHBhbmRlZExpbmVSb3dzW2ldKTsKLSAgICAgICAg
fQotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAgICAqLwot
ICAgIGdldCByZWFkT25seSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHk7
Ci0gICAgfSwKLQotICAgIF91cGRhdGVFbGVtZW50UmVhZE9ubHlTdGF0ZTogZnVuY3Rpb24oZWxl
bWVudCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZWFkT25seSkKLSAgICAgICAgICAgIGVs
ZW1lbnQuYWRkU3R5bGVDbGFzcygidGV4dC1lZGl0b3ItcmVhZC1vbmx5Iik7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygidGV4dC1lZGl0b3ItcmVh
ZC1vbmx5Iik7Ci0gICAgfSwKLQogICAgIC8qKgogICAgICAqIEByZXR1cm4ge251bWJlcn0KICAg
ICAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4
dEVkaXRvck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0
RWRpdG9yTW9kZWwuanMKaW5kZXggNmE4YjJkZWFkMGViYTliMTZmMDg5ZmQxMmFiZjEyYjBlODMw
MjA1MS4uZDhhYzJiZDNkMGRmMzU3NDkxODYyMDNiMTA2MTE1ZjIyNjM3ODI3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwu
anMKQEAgLTIzOCwxMiArMjM4LDI1IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJv
dG90eXBlID0gewogICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9CiAgICAg
ICovCiAgICAgZWRpdFJhbmdlOiBmdW5jdGlvbihyYW5nZSwgdGV4dCkKKyAgICB7ICAgCisgICAg
ICAgIGlmICh0aGlzLl9sYXN0RWRpdGVkUmFuZ2UgJiYgKCF0ZXh0IHx8IHRleHQuaW5kZXhPZigi
XG4iKSAhPT0gLTEgfHwgdGhpcy5fbGFzdEVkaXRlZFJhbmdlLmVuZExpbmUgIT09IHJhbmdlLnN0
YXJ0TGluZSB8fCB0aGlzLl9sYXN0RWRpdGVkUmFuZ2UuZW5kQ29sdW1uICE9PSByYW5nZS5zdGFy
dENvbHVtbikpCisgICAgICAgICAgICB0aGlzLl9tYXJrVW5kb2FibGVTdGF0ZSgpOworICAgICAg
ICByZXR1cm4gdGhpcy5faW5uZXJFZGl0UmFuZ2UocmFuZ2UsIHRleHQpOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IHRleHQKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4
dFJhbmdlfQorICAgICAqLworICAgIF9pbm5lckVkaXRSYW5nZTogZnVuY3Rpb24ocmFuZ2UsIHRl
eHQpCiAgICAgewogICAgICAgICB2YXIgb3JpZ2luYWxUZXh0ID0gdGhpcy5jb3B5UmFuZ2UocmFu
Z2UpOwogICAgICAgICBpZiAodGV4dCA9PT0gb3JpZ2luYWxUZXh0KQogICAgICAgICAgICAgcmV0
dXJuIHJhbmdlOyAvLyBOb29wCiAKICAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhpcy5faW5uZXJT
ZXRUZXh0KHJhbmdlLCB0ZXh0KTsKKyAgICAgICAgdGhpcy5fbGFzdEVkaXRlZFJhbmdlID0gbmV3
UmFuZ2U7CiAgICAgICAgIHRoaXMuX3B1c2hVbmRvYWJsZUNvbW1hbmQobmV3UmFuZ2UsIG9yaWdp
bmFsVGV4dCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yTW9kZWwuRXZlbnRzLlRleHRDaGFuZ2VkLCB7IG9sZFJhbmdlOiByYW5n
ZSwgbmV3UmFuZ2U6IG5ld1JhbmdlIH0pOwogICAgICAgICByZXR1cm4gbmV3UmFuZ2U7CkBAIC00
NzcsNyArNDkwLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3JlZG9TdGFjayB8fCAhdGhpcy5fcmVkb1N0YWNr
Lmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB0aGlzLm1hcmtVbmRv
YWJsZVN0YXRlKCk7CisgICAgICAgIHRoaXMuX21hcmtVbmRvYWJsZVN0YXRlKCk7CiAKICAgICAg
ICAgdGhpcy5faW5SZWRvID0gdHJ1ZTsKICAgICAgICAgdmFyIHJhbmdlID0gdGhpcy5fZG9VbmRv
KHRoaXMuX3JlZG9TdGFjaywgYmVmb3JlQ2FsbGJhY2ssIGFmdGVyQ2FsbGJhY2spOwpAQCAtNTAy
LDcgKzUxNSw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgaWYgKGJlZm9yZUNhbGxiYWNrKQogICAgICAgICAgICAgICAgIGJlZm9yZUNh
bGxiYWNrKCk7CiAKLSAgICAgICAgICAgIHJhbmdlID0gdGhpcy5lZGl0UmFuZ2UoY29tbWFuZC5u
ZXdSYW5nZSwgY29tbWFuZC5vcmlnaW5hbFRleHQpOworICAgICAgICAgICAgcmFuZ2UgPSB0aGlz
Ll9pbm5lckVkaXRSYW5nZShjb21tYW5kLm5ld1JhbmdlLCBjb21tYW5kLm9yaWdpbmFsVGV4dCk7
CiAKICAgICAgICAgICAgIGlmIChhZnRlckNhbGxiYWNrKQogICAgICAgICAgICAgICAgIGFmdGVy
Q2FsbGJhY2soY29tbWFuZC5uZXdSYW5nZSwgcmFuZ2UpOwpAQCAtNTEzLDcgKzUyNiw3IEBAIFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
cmFuZ2U7CiAgICAgfSwKIAotICAgIG1hcmtVbmRvYWJsZVN0YXRlOiBmdW5jdGlvbigpCisgICAg
X21hcmtVbmRvYWJsZVN0YXRlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
dW5kb1N0YWNrLmxlbmd0aCkKICAgICAgICAgICAgIHRoaXMuX3VuZG9TdGFja1t0aGlzLl91bmRv
U3RhY2subGVuZ3RoIC0gMV0uZXhwbGljaXQgPSB0cnVlOwpAQCAtNTMwLDUgKzU0Myw3MSBAQCBX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
dW5kb1N0YWNrID0gW107CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlRleHRSYW5nZX0gcmFuZ2UKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4
dFJhbmdlfQorICAgICAqLworICAgIGluZGVudExpbmVzOiBmdW5jdGlvbihyYW5nZSkKKyAgICB7
CisgICAgICAgIHRoaXMuX21hcmtVbmRvYWJsZVN0YXRlKCk7CisKKyAgICAgICAgdmFyIGluZGVu
dCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy50ZXh0RWRpdG9ySW5kZW50LmdldCgpOworICAgICAg
ICB2YXIgbmV3UmFuZ2UgPSByYW5nZS5jbG9uZSgpOworICAgICAgICAvLyBEbyBub3QgY2hhbmdl
IGEgc2VsZWN0aW9uIHN0YXJ0IHBvc2l0aW9uIHdoZW4gaXQgaXMgYXQgdGhlIGJlZ2lubmluZyBv
ZiBhIGxpbmUKKyAgICAgICAgaWYgKHJhbmdlLnN0YXJ0Q29sdW1uKQorICAgICAgICAgICAgbmV3
UmFuZ2Uuc3RhcnRDb2x1bW4gKz0gaW5kZW50Lmxlbmd0aDsKKworICAgICAgICB2YXIgaW5kZW50
RW5kTGluZSA9IHJhbmdlLmVuZExpbmU7CisgICAgICAgIGlmIChyYW5nZS5lbmRDb2x1bW4pCisg
ICAgICAgICAgICBuZXdSYW5nZS5lbmRDb2x1bW4gKz0gaW5kZW50Lmxlbmd0aDsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgaW5kZW50RW5kTGluZS0tOworCisgICAgICAgIGZvciAodmFyIGxp
bmVOdW1iZXIgPSByYW5nZS5zdGFydExpbmU7IGxpbmVOdW1iZXIgPD0gaW5kZW50RW5kTGluZTsg
bGluZU51bWJlcisrKQorICAgICAgICAgICAgdGhpcy5faW5uZXJFZGl0UmFuZ2UoV2ViSW5zcGVj
dG9yLlRleHRSYW5nZS5jcmVhdGVGcm9tTG9jYXRpb24obGluZU51bWJlciwgMCksIGluZGVudCk7
CisKKyAgICAgICAgcmV0dXJuIG5ld1JhbmdlOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCisgICAgICogQHJldHVybiB7V2Vi
SW5zcGVjdG9yLlRleHRSYW5nZX0KKyAgICAgKi8KKyAgICB1bmluZGVudExpbmVzOiBmdW5jdGlv
bihyYW5nZSkKKyAgICB7CisgICAgICAgIHRoaXMuX21hcmtVbmRvYWJsZVN0YXRlKCk7CisKKyAg
ICAgICAgdmFyIGluZGVudCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy50ZXh0RWRpdG9ySW5kZW50
LmdldCgpOworICAgICAgICB2YXIgaW5kZW50TGVuZ3RoID0gaW5kZW50ID09PSBXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvck1vZGVsLkluZGVudC5UYWJDaGFyYWN0ZXIgPyA0IDogaW5kZW50Lmxlbmd0
aDsKKyAgICAgICAgdmFyIGxpbmVJbmRlbnRSZWdleCA9IG5ldyBSZWdFeHAoIl4gezEsIiArIGlu
ZGVudExlbmd0aCArICJ9Iik7CisgICAgICAgIHZhciBuZXdSYW5nZSA9IHJhbmdlLmNsb25lKCk7
CisKKyAgICAgICAgdmFyIGluZGVudEVuZExpbmUgPSByYW5nZS5lbmRMaW5lOworICAgICAgICBp
ZiAoIXJhbmdlLmVuZENvbHVtbikKKyAgICAgICAgICAgIGluZGVudEVuZExpbmUtLTsKKworICAg
ICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gcmFuZ2Uuc3RhcnRMaW5lOyBsaW5lTnVtYmVyIDw9
IGluZGVudEVuZExpbmU7IGxpbmVOdW1iZXIrKykgeworICAgICAgICAgICAgdmFyIGxpbmUgPSB0
aGlzLmxpbmUobGluZU51bWJlcik7CisgICAgICAgICAgICB2YXIgZmlyc3RDaGFyYWN0ZXIgPSBs
aW5lLmNoYXJBdCgwKTsKKyAgICAgICAgICAgIHZhciBsaW5lSW5kZW50TGVuZ3RoOworCisgICAg
ICAgICAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09ICIgIikKKyAgICAgICAgICAgICAgICBsaW5l
SW5kZW50TGVuZ3RoID0gbGluZS5tYXRjaChsaW5lSW5kZW50UmVnZXgpWzBdLmxlbmd0aDsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGZpcnN0Q2hhcmFjdGVyID09PSAiXHQiKQorICAgICAgICAgICAg
ICAgIGxpbmVJbmRlbnRMZW5ndGggPSAxOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB0aGlzLl9pbm5lckVkaXRSYW5nZShuZXcgV2Vi
SW5zcGVjdG9yLlRleHRSYW5nZShsaW5lTnVtYmVyLCAwLCBsaW5lTnVtYmVyLCBsaW5lSW5kZW50
TGVuZ3RoKSwgIiIpOworCisgICAgICAgICAgICBpZiAobGluZU51bWJlciA9PT0gcmFuZ2Uuc3Rh
cnRMaW5lKQorICAgICAgICAgICAgICAgIG5ld1JhbmdlLnN0YXJ0Q29sdW1uID0gTWF0aC5tYXgo
MCwgbmV3UmFuZ2Uuc3RhcnRDb2x1bW4gLSBsaW5lSW5kZW50TGVuZ3RoKTsKKyAgICAgICAgICAg
IGlmIChsaW5lTnVtYmVyID09PSByYW5nZS5lbmRMaW5lKQorICAgICAgICAgICAgICAgIG5ld1Jh
bmdlLmVuZENvbHVtbiA9IE1hdGgubWF4KDAsIG5ld1JhbmdlLmVuZENvbHVtbiAtIGxpbmVJbmRl
bnRMZW5ndGgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ld1JhbmdlOworICAgIH0s
CisKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlCiB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggOTJiYjM4Y2IxMTdiYjI1MmQzNTVjYmZmMmE2YmMwZGY4MDc4ZmFjNS4uNjgwZGFmNGJjZGUy
MGU1MDQxY2RlMTE2OGJmMzIwM2IzNmE5NGE3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEy
LTExLTEwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IG1vdmUgaW5kZW50YXRpb24gbG9naWMgaW50byBUZXh0RWRpdG9yTW9k
ZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTg0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL2VkaXRvci9pbmRlbnRhdGlvbi5odG1sOgorCiAyMDEyLTExLTA5ICBPamFuIFZhZmFp
ICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2hvdWxkIG9ubHkgZmlyZSBhIHNpbmds
ZSBzZXQgb2YgbW91c2UgZXZlbnRzIGFuZCB1cGRhdGUgaG92ZXIgc3RhdGUgb25jZSB3aGVuIHNj
cm9sbGluZyBpcyBkb25lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9y
L2luZGVudGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2luZGVudGF0
aW9uLmh0bWwKaW5kZXggZTUxYTBkNTE2NTk4NzBmZDNjOGU3YTY3ODFjMjc3NDc5YTQ3OTBkNi4u
NThiMTdjOTNiM2ExY2E0YzM2OTU2ZTgyZGFjYjAyMDc0ODljZjI0ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9pbmRlbnRhdGlvbi5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9lZGl0b3IvaW5kZW50YXRpb24uaHRtbApAQCAtMTEsOCArMTEsNiBAQCBm
dW5jdGlvbiB0ZXN0KCkKIAogICAgIHZhciBtb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvck1vZGVsKCk7CiAgICAgbW9kZWwuc2V0VGV4dChzcmMpOwotICAgIGZ1bmN0aW9uIG5vb3Ao
KSB7fQotICAgIHZhciB0ZXh0RWRpdG9yTWFpblBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsKG51bGwsIG1vZGVsLCAnJywgbm9vcCwgbm9vcCwgbm9vcCwgbm9vcCk7
CiAKICAgICB2YXIgc2VsZWN0aW9uOwogICAgIGZ1bmN0aW9uIGR1bXBUZXh0TW9kZWwobXNnKQpA
QCAtMjIsMTkgKzIwLDE5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgnU2VsZWN0aW9uICcgKyBzZWxlY3Rpb24uc3RhcnRMaW5lICsgJywnICsgc2Vs
ZWN0aW9uLnN0YXJ0Q29sdW1uICArICcgJyArIHNlbGVjdGlvbi5lbmRMaW5lICsgJywnICsgc2Vs
ZWN0aW9uLmVuZENvbHVtbiArICdcbicpOwogICAgIH0KIAotICAgIHNlbGVjdGlvbiA9IHRleHRF
ZGl0b3JNYWluUGFuZWwuX2luZGVudExpbmVzKG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDAs
IDAsIDEsIDApKTsKKyAgICBzZWxlY3Rpb24gPSBtb2RlbC5pbmRlbnRMaW5lcyhuZXcgV2ViSW5z
cGVjdG9yLlRleHRSYW5nZSgwLCAwLCAxLCAwKSk7CiAgICAgZHVtcFRleHRNb2RlbCgiQWZ0ZXIg
aW5kZW50aW5nIGZpcnN0IGZ1bGx5IHNlbGVjdGVkIGxpbmUiKTsKIAotICAgIHNlbGVjdGlvbiA9
IHRleHRFZGl0b3JNYWluUGFuZWwuX2luZGVudExpbmVzKG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJh
bmdlKDAsIDUsIDEsIDApKTsKKyAgICBzZWxlY3Rpb24gPSBtb2RlbC5pbmRlbnRMaW5lcyhuZXcg
V2ViSW5zcGVjdG9yLlRleHRSYW5nZSgwLCA1LCAxLCAwKSk7CiAgICAgZHVtcFRleHRNb2RlbCgi
QWZ0ZXIgaW5kZW50aW5nIGZpcnN0IHBhcnRpYWxseSBzZWxlY3RlZCBsaW5lIik7CiAKLSAgICBz
ZWxlY3Rpb24gPSB0ZXh0RWRpdG9yTWFpblBhbmVsLl91bmluZGVudExpbmVzKG5ldyBXZWJJbnNw
ZWN0b3IuVGV4dFJhbmdlKDAsIDAsIDIsIDApKTsKKyAgICBzZWxlY3Rpb24gPSBtb2RlbC51bmlu
ZGVudExpbmVzKG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDAsIDAsIDIsIDApKTsKICAgICBk
dW1wVGV4dE1vZGVsKCJBZnRlciB1bmluZGVudGluZyB0d28gZnVsbHkgc2VsZWN0ZWQgbGluZXMi
KTsKIAotICAgIHNlbGVjdGlvbiA9IHRleHRFZGl0b3JNYWluUGFuZWwuX3VuaW5kZW50TGluZXMo
bmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UoMCwgNSwgMSwgNikpOworICAgIHNlbGVjdGlvbiA9
IG1vZGVsLnVuaW5kZW50TGluZXMobmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UoMCwgNSwgMSwg
NikpOwogICAgIGR1bXBUZXh0TW9kZWwoIkFmdGVyIHVuaW5kZW50aW5nIHR3byBwYXJ0aWFsbHkg
c2VsZWN0ZWQgbGluZXMgKGJ1ZyA5NzQ2MikiKTsKIAotICAgIHNlbGVjdGlvbiA9IHRleHRFZGl0
b3JNYWluUGFuZWwuX3VuaW5kZW50TGluZXMobmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UoMCwg
MCwgMiwgMykpOworICAgIHNlbGVjdGlvbiA9IG1vZGVsLnVuaW5kZW50TGluZXMobmV3IFdlYklu
c3BlY3Rvci5UZXh0UmFuZ2UoMCwgMCwgMiwgMykpOwogICAgIGR1bXBUZXh0TW9kZWwoIkFmdGVy
IHVuaW5kZW50aW5nIHRocmVlIHBhcnRpYWxseSBzZWxlY3RlZCBsaW5lcyIpOwogCiAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsK
</data>
<flag name="review"
          id="188209"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>