<?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>57036</bug_id>
          
          <creation_ts>2011-03-24 10:31:13 -0700</creation_ts>
          <short_desc>Web Inspector: fix call frames positions for formatted scripts.</short_desc>
          <delta_ts>2011-03-31 06:42:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>aandrey</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>372907</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-24 10:31:13 -0700</bug_when>
    <thetext>Web Inspector: fix call frames positions for formatted scripts.

Introduce PresentationCallFrame class that encapsulates source mapping details from UI components.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372909</commentid>
    <comment_count>1</comment_count>
      <attachid>86795</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-24 10:31:54 -0700</bug_when>
    <thetext>Created attachment 86795
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374483</commentid>
    <comment_count>2</comment_count>
      <attachid>87142</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-28 07:46:44 -0700</bug_when>
    <thetext>Created attachment 87142
Rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374494</commentid>
    <comment_count>3</comment_count>
      <attachid>86795</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-28 08:07:47 -0700</bug_when>
    <thetext>Comment on attachment 86795
Patch.

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

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:401
&gt; +    _wrapCallFrames: function(callFrames)

_wrapCallFrames -&gt; _createPresentationCallFrames ?

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:485
&gt; +                callback(WebInspector.RemoteObject.fromPayload(result));

The callback should be called in any case even if there is an error.

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:352
&gt; +            selectedCallFrame.evaluate(code, objectGroup, includeCommandLineAPI, callback);

You should report to the caller an error, otherwise the callback will not be invoked in some cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375209</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-29 05:29:00 -0700</bug_when>
    <thetext>Committed r82234: &lt;http://trac.webkit.org/changeset/82234&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377114</commentid>
    <comment_count>5</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2011-03-31 06:42:05 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=87142&amp;action=review

&gt; Source/WebCore/inspector/front-end/DebuggerModel.js:188
&gt; +        this._debuggerPausedDetails.callFrames = callFrames;

FYI. I keep seeing callFrames coming as an array of length 0, thus the first call of this callback is fine, but it sets a zero-length array to the this._debuggerPausedDetails.callFrames, which will cause an exception on a subsequent live edit commit. Here is a &quot;pseudo&quot; stack trace:

In the DebuggerPresentationModel.js @editScriptSource

  if (WebInspector.debuggerModel.callFrames)
    this._debuggerPaused();

This will fire an exception:
  callFrames[0].sourceLocation(didGetSourceLocation.bind(this));

because callFrames is defined, but of zero length.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86795</attachid>
            <date>2011-03-24 10:31:54 -0700</date>
            <delta_ts>2011-03-28 08:07:47 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>24738</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZDNhMTQ2Li44N2E0YzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsNTkg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBXZWIg
SW5zcGVjdG9yOiBmaXggY2FsbCBmcmFtZXMgcG9zaXRpb25zIGZvciBmb3JtYXR0ZWQgc2NyaXB0
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MDM2
CisKKyAgICAgICAgSW50cm9kdWNlIFByZXNlbnRhdGlvbkNhbGxGcmFtZSBjbGFzcyB0aGF0IGVu
Y2Fwc3VsYXRlcyBzb3VyY2UgbWFwcGluZyBkZXRhaWxzIGZyb20gVUkgY29tcG9uZW50cy4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBl
Ll9jcmVhdGVQbGFjYXJkLmRpZEdldFNvdXJjZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2NyZWF0ZVBsYWNhcmQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5fY29udGV4
dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3Rv
dHlwZS5fY29weVN0YWNrVHJhY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVi
dWdnZXJNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5yZXNldCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuX2RpZEVkaXRTY3JpcHRT
b3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLl9w
YXVzZWRTY3JpcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90
eXBlLl9yZXN1bWVkU2NyaXB0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUuZWRpdFNjcmlwdFNvdXJjZS5kaWRFZGl0U2NyaXB0U291cmNl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3Rv
dHlwZS5lZGl0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fZGVidWdnZXJQYXVzZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9kZWJ1Z2dlclJl
c3VtZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
cHJvdG90eXBlLnNldCBzZWxlY3RlZENhbGxGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3dyYXBDYWxsRnJhbWVzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5f
cmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByZXNlbmF0aW9uQ2FsbEZyYW1lKTogQ2Fs
bCBmcmFtZSB3cmFwcGVyIGZvciBVSSBjb21wb25lbnRzLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlByZXNlbmF0aW9uQ2FsbEZyYW1lLnByb3RvdHlwZS5nZXQgZnVuY3Rpb25OYW1lKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5QcmVzZW5hdGlvbkNhbGxGcmFtZS5wcm90b3R5cGUuZ2V0IHR5cGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByZXNlbmF0aW9uQ2FsbEZyYW1lLnByb3RvdHlwZS5n
ZXQgaXNJbnRlcm5hbFNjcmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJlc2VuYXRpb25D
YWxsRnJhbWUucHJvdG90eXBlLmdldCB1cmwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByZXNl
bmF0aW9uQ2FsbEZyYW1lLnByb3RvdHlwZS5nZXQgc2NvcGVDaGFpbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUHJlc2VuYXRpb25DYWxsRnJhbWUucHJvdG90eXBlLnNlbGVjdCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUHJlc2VuYXRpb25DYWxsRnJhbWUucHJvdG90eXBlLmV2YWx1YXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5QcmVzZW5hdGlvbkNhbGxGcmFtZS5wcm90b3R5cGUuc291
cmNlTG9jYXRpb24uZGlkUmVxdWVzdE1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBy
ZXNlbmF0aW9uQ2FsbEZyYW1lLnByb3RvdHlwZS5zb3VyY2VMb2NhdGlvbik6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlLmV2YWx1YXRlSW5TZWxlY3RlZENhbGxGcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fZGVidWdnZXJQYXVzZWQuZWxzZS5kaWRHZXRTb3Vy
Y2VMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlw
ZS5fZGVidWdnZXJQYXVzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5w
cm90b3R5cGUuX3NvdXJjZUZyYW1lTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwucHJvdG90eXBlLl9jYWxsRnJhbWVTZWxlY3RlZC5kaWRHZXRTb3VyY2VMb2NhdGlv
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fY2FsbEZy
YW1lU2VsZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9jcmVhdGVU
ZXh0Vmlld2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUu
c2V0RXhlY3V0aW9uTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJv
dG90eXBlLmNsZWFyRXhlY3V0aW9uTGluZSk6CisKKzIwMTEtMDMtMjQgIFBhdmVsIFBvZGl2aWxv
diAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBsaXZlIGVkaXQgY2Fs
bGJhY2sgdG8gc291cmNlIGZyYW1lIGRlbGVnYXRlLgogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcwMDMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMKaW5kZXgg
NzQwYmIxYy4uM2YwMjc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzCkBAIC0zNyw3ICszNyw2IEBA
IFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuYm9keUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgICAgICB0aGlzLnBsYWNh
cmRzID0gW107Ci0gICAgICAgIHRoaXMuX3RleHQgPSAiIjsKIAogICAgICAgICBpZiAoIWRldGFp
bHMpIHsKICAgICAgICAgICAgIHZhciBpbmZvRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwpAQCAtNDgsNDEgKzQ3LDEwIEBAIFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRl
YmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgY2FsbEZyYW1l
cyA9IGRldGFpbHMuY2FsbEZyYW1lczsKLSAgICAgICAgdmFyIHRpdGxlOwotICAgICAgICB2YXIg
c3VidGl0bGU7Ci0gICAgICAgIHZhciBzY3JpcHQ7Ci0KICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjYWxsRnJhbWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgY2FsbEZyYW1l
ID0gY2FsbEZyYW1lc1tpXTsKLSAgICAgICAgICAgIHN3aXRjaCAoY2FsbEZyYW1lLnR5cGUpIHsK
LSAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKLSAgICAgICAgICAgICAgICB0aXRsZSA9IGNh
bGxGcmFtZS5mdW5jdGlvbk5hbWUgfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoYW5vbnltb3Vz
IGZ1bmN0aW9uKSIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAi
cHJvZ3JhbSI6Ci0gICAgICAgICAgICAgICAgdGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Iihwcm9ncmFtKSIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JT
b3VyY2VJRChjYWxsRnJhbWUuc291cmNlSUQpOwotICAgICAgICAgICAgaWYgKHNjcmlwdCkKLSAg
ICAgICAgICAgICAgICBzdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChz
Y3JpcHQuc291cmNlVVJMKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzdWJ0
aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGludGVybmFsIHNjcmlwdCkiKTsKLQotICAg
ICAgICAgICAgaWYgKHN1YnRpdGxlKQotICAgICAgICAgICAgICAgIHN1YnRpdGxlICs9ICI6IiAr
IChjYWxsRnJhbWUubGluZSArIDEpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJsaW5lICVkIiwgY2FsbEZyYW1lLmxp
bmUgKyAxKTsKLQotICAgICAgICAgICAgdmFyIHBsYWNhcmQgPSBuZXcgV2ViSW5zcGVjdG9yLlBs
YWNhcmQodGl0bGUsIHN1YnRpdGxlKTsKLSAgICAgICAgICAgIHBsYWNhcmQuY2FsbEZyYW1lID0g
Y2FsbEZyYW1lOwotCi0gICAgICAgICAgICBwbGFjYXJkLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl9wbGFjYXJkU2VsZWN0ZWQuYmluZCh0aGlzKSwgZmFsc2UpOwotCisg
ICAgICAgICAgICB2YXIgcGxhY2FyZCA9IHRoaXMuX2NyZWF0ZVBsYWNhcmQoY2FsbEZyYW1lc1tp
XSk7CiAgICAgICAgICAgICB0aGlzLnBsYWNhcmRzLnB1c2gocGxhY2FyZCk7CiAgICAgICAgICAg
ICB0aGlzLmJvZHlFbGVtZW50LmFwcGVuZENoaWxkKHBsYWNhcmQuZWxlbWVudCk7Ci0KLSAgICAg
ICAgICAgIHRoaXMuX3RleHQgKz0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcygpIGF0ICVzIiwg
aSArIDEsIHRpdGxlLCBzdWJ0aXRsZSkgKyAiXG4iOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGRldGFpbHMuZXZlbnRUeXBlID09PSBXZWJJbnNwZWN0b3IuRGVidWdnZXJFdmVudFR5cGVzLk5h
dGl2ZUJyZWFrcG9pbnQpIHsKQEAgLTkxLDYgKzU5LDQyIEBAIFdlYkluc3BlY3Rvci5DYWxsU3Rh
Y2tTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisgICAgX2Ny
ZWF0ZVBsYWNhcmQ6IGZ1bmN0aW9uKGNhbGxGcmFtZSkKKyAgICB7CisgICAgICAgIHZhciB0aXRs
ZTsKKyAgICAgICAgc3dpdGNoIChjYWxsRnJhbWUudHlwZSkgeworICAgICAgICBjYXNlICJmdW5j
dGlvbiI6CisgICAgICAgICAgICB0aXRsZSA9IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWUgfHwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCIoYW5vbnltb3VzIGZ1bmN0aW9uKSIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgInByb2dyYW0iOgorICAgICAgICAgICAgdGl0bGUgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIihwcm9ncmFtKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICB2YXIgc3VidGl0bGU7CisgICAgICAgIGlmICghY2FsbEZyYW1lLmlz
SW50ZXJuYWxTY3JpcHQpCisgICAgICAgICAgICBzdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5kaXNw
bGF5TmFtZUZvclVSTChjYWxsRnJhbWUudXJsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
c3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihpbnRlcm5hbCBzY3JpcHQpIik7CisK
KyAgICAgICAgdmFyIHBsYWNhcmQgPSBuZXcgV2ViSW5zcGVjdG9yLlBsYWNhcmQodGl0bGUsIHN1
YnRpdGxlKTsKKyAgICAgICAgcGxhY2FyZC5jYWxsRnJhbWUgPSBjYWxsRnJhbWU7CisgICAgICAg
IHBsYWNhcmQuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3BsYWNhcmRT
ZWxlY3RlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CisKKyAgICAgICAgZnVuY3Rpb24gZGlkR2V0U291
cmNlTG9jYXRpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChzdWJ0aXRsZSkKKyAgICAgICAgICAgICAgICBzdWJ0aXRs
ZSArPSAiOiIgKyAobGluZU51bWJlciArIDEpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJsaW5lICVkIiwgbGluZU51
bWJlciArIDEpOworICAgICAgICAgICAgcGxhY2FyZC5zdWJ0aXRsZSA9IHN1YnRpdGxlOworICAg
ICAgICAgICAgcGxhY2FyZC5fdGV4dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMoKSBhdCAl
cyIsIHRpdGxlLCBzdWJ0aXRsZSk7CisgICAgICAgIH0KKyAgICAgICAgY2FsbEZyYW1lLnNvdXJj
ZUxvY2F0aW9uKGRpZEdldFNvdXJjZUxvY2F0aW9uLmJpbmQodGhpcykpOworCisgICAgICAgIHJl
dHVybiBwbGFjYXJkOworICAgIH0sCisKICAgICBzZXQgc2VsZWN0ZWRDYWxsRnJhbWUoeCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX21vZGVsLnNlbGVjdGVkQ2FsbEZyYW1lID0geDsKQEAgLTE1NSwx
NCArMTU5LDIyIEBAIFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5wcm90b3R5cGUg
PSB7CiAKICAgICBfY29udGV4dE1lbnU6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAg
aWYgKCF0aGlzLl90ZXh0KQorICAgICAgICBpZiAoIXRoaXMucGxhY2FyZHMubGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnUoKTsKLSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgU3RhY2sgVHJhY2UiKSwgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNvcHlUZXh0LmJpbmQoSW5zcGVjdG9yRnJvbnRlbmRIb3N0LCB0aGlzLl90ZXh0KSk7Cisg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb3B5
IFN0YWNrIFRyYWNlIiksIHRoaXMuX2NvcHlTdGFja1RyYWNlLmJpbmQodGhpcykpOwogICAgICAg
ICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKICAgICB9LAogCisgICAgX2NvcHlTdGFja1RyYWNl
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgdGV4dCA9ICIiOworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMucGxhY2FyZHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0
ZXh0ICs9IHRoaXMucGxhY2FyZHNbaV0uX3RleHQ7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5k
SG9zdC5jb3B5VGV4dCh0ZXh0KTsKKyAgICB9LAorCiAgICAgcmVnaXN0ZXJTaG9ydGN1dHM6IGZ1
bmN0aW9uKHNlY3Rpb24pCiAgICAgewogICAgICAgICB0aGlzLl9zaG9ydGN1dHMgPSB7fTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2Rl
bC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5q
cwppbmRleCAxMDgwNTVlLi43MjcwYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCkBAIC0zMCw3ICszMCw2IEBACiAKIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsID0gZnVuY3Rpb24oKQogewotICAgIHRoaXMuX2RlYnVn
Z2VyUGF1c2VkRGV0YWlscyA9IHt9OwogICAgIHRoaXMuX2JyZWFrcG9pbnRzID0ge307CiAgICAg
dGhpcy5fc2NyaXB0cyA9IHt9OwogCkBAIC0xMzYsNyArMTM1LDYgQEAgV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIHRoaXMuX2RlYnVnZ2VyUGF1c2VkRGV0YWlscyA9IHt9OwogICAgICAgICBmb3Ig
KHZhciBpZCBpbiB0aGlzLl9icmVha3BvaW50cykgewogICAgICAgICAgICAgdmFyIGJyZWFrcG9p
bnQgPSB0aGlzLl9icmVha3BvaW50c1tpZF07CiAgICAgICAgICAgICBpZiAoIWJyZWFrcG9pbnQu
dXJsKQpAQCAtMTgxLDMxICsxNzksMjAgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJv
dG90eXBlID0gewogCiAgICAgX2RpZEVkaXRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKHNvdXJjZUlE
LCBjYWxsYmFjaywgZXJyb3IsIHN1Y2Nlc3MsIG5ld0JvZHlPckVycm9yTWVzc2FnZSwgY2FsbEZy
YW1lcykKICAgICB7Ci0gICAgICAgIGNhbGxiYWNrKHN1Y2Nlc3MsIG5ld0JvZHlPckVycm9yTWVz
c2FnZSk7CisgICAgICAgIGNhbGxiYWNrKHN1Y2Nlc3MsIG5ld0JvZHlPckVycm9yTWVzc2FnZSwg
Y2FsbEZyYW1lcyk7CiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgdGhpcy5fc2NyaXB0c1tzb3VyY2VJRF0uc291cmNlID0gbmV3Qm9keU9yRXJyb3JN
ZXNzYWdlOwotICAgICAgICBpZiAoY2FsbEZyYW1lcyAmJiBjYWxsRnJhbWVzLmxlbmd0aCkgewot
ICAgICAgICAgICAgdGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxzLmNhbGxGcmFtZXMgPSBjYWxs
RnJhbWVzOwotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUGF1c2VkLCB0aGlzLl9kZWJ1Z2dl
clBhdXNlZERldGFpbHMpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIGdldCBjYWxsRnJhbWVz
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFpbHMuY2Fs
bEZyYW1lczsKICAgICB9LAogCiAgICAgX3BhdXNlZFNjcmlwdDogZnVuY3Rpb24oZGV0YWlscykK
ICAgICB7Ci0gICAgICAgIHRoaXMuX2RlYnVnZ2VyUGF1c2VkRGV0YWlscyA9IGRldGFpbHM7CiAg
ICAgICAgIGRldGFpbHMuYnJlYWtwb2ludCA9IHRoaXMuX2JyZWFrcG9pbnRGb3JDYWxsRnJhbWUo
ZGV0YWlscy5jYWxsRnJhbWVzWzBdKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUGF1c2VkLCBk
ZXRhaWxzKTsKICAgICB9LAogCiAgICAgX3Jlc3VtZWRTY3JpcHQ6IGZ1bmN0aW9uKCkKICAgICB7
Ci0gICAgICAgIHRoaXMuX2RlYnVnZ2VyUGF1c2VkRGV0YWlscyA9IHt9OwogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVu
dHMuRGVidWdnZXJSZXN1bWVkKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
anMKaW5kZXggNzU4YjczYS4uZTMyZGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5q
cwpAQCAtMzIsMTEgKzMyLDE0IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX3NvdXJjZUZpbGVzID0ge307CiAgICAgdGhp
cy5fcHJlc2VudGF0aW9uQnJlYWtwb2ludHMgPSB7fTsKKyAgICB0aGlzLl9kZWJ1Z2dlclBhdXNl
ZERldGFpbHMgPSB7fTsKIAogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyV2FzRW5h
YmxlZCwgdGhpcy5fZGVidWdnZXJXYXNFbmFibGVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVs
LkV2ZW50cy5QYXJzZWRTY3JpcHRTb3VyY2UsIHRoaXMuX3BhcnNlZFNjcmlwdFNvdXJjZSwgdGhp
cyk7CiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZSwg
dGhpcy5fZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZSwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5FdmVudHMuQnJlYWtwb2ludFJlc29sdmVkLCB0aGlzLl9icmVha3BvaW50UmVzb2x2ZWQsIHRo
aXMpOworICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUGF1c2VkLCB0aGlzLl9kZWJ1
Z2dlclBhdXNlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRGVidWdnZXJSZXN1
bWVkLCB0aGlzLl9kZWJ1Z2dlclJlc3VtZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZl
bnRzLlJlc2V0LCB0aGlzLl9yZXNldCwgdGhpcyk7CiB9CiAKQEAgLTQ0LDcgKzQ3LDEwIEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cyA9IHsKICAgICBTb3Vy
Y2VGaWxlQWRkZWQ6ICJzb3VyY2UtZmlsZS1hZGRlZCIsCiAgICAgU291cmNlRmlsZUNoYW5nZWQ6
ICJzb3VyY2UtZmlsZS1jaGFuZ2VkIiwKICAgICBCcmVha3BvaW50QWRkZWQ6ICJicmVha3BvaW50
LWFkZGVkIiwKLSAgICBCcmVha3BvaW50UmVtb3ZlZDogImJyZWFrcG9pbnQtcmVtb3ZlZCIKKyAg
ICBCcmVha3BvaW50UmVtb3ZlZDogImJyZWFrcG9pbnQtcmVtb3ZlZCIsCisgICAgRGVidWdnZXJQ
YXVzZWQ6ICJkZWJ1Z2dlci1wYXVzZWQiLAorICAgIERlYnVnZ2VyUmVzdW1lZDogImRlYnVnZ2Vy
LXJlc3VtZWQiLAorICAgIENhbGxGcmFtZVNlbGVjdGVkOiAiY2FsbC1mcmFtZS1zZWxlY3RlZCIK
IH0KIAogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0g
ewpAQCAtMTE3LDcgKzEyMyw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLl9zY3Jp
cHRGb3JTb3VyY2VGaWxlSWQoc291cmNlRmlsZUlkKTsKICAgICAgICAgdmFyIG9sZFNvdXJjZSA9
IHNjcmlwdC5zb3VyY2U7Ci0gICAgICAgIGZ1bmN0aW9uIGRpZEVkaXRTY3JpcHRTb3VyY2Uoc3Vj
Y2VzcywgbmV3Qm9keU9yRXJyb3JNZXNzYWdlKQorICAgICAgICBmdW5jdGlvbiBkaWRFZGl0U2Ny
aXB0U291cmNlKHN1Y2Nlc3MsIG5ld0JvZHlPckVycm9yTWVzc2FnZSwgY2FsbEZyYW1lcykKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soZmFsc2UsIG5ld0JvZHlPckVycm9yTWVzc2FnZSk7CkBAIC0xMzUsNiArMTQxLDExIEBA
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSwgbmV3U291cmNlKTsKKwor
ICAgICAgICAgICAgaWYgKGNhbGxGcmFtZXMgJiYgY2FsbEZyYW1lcy5sZW5ndGgpIHsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFpbHMuY2FsbEZyYW1lcyA9IHRoaXMu
X3dyYXBDYWxsRnJhbWVzKGNhbGxGcmFtZXMpOworICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5EZWJ1
Z2dlclBhdXNlZCwgdGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxzKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5lZGl0U2NyaXB0
U291cmNlKHNjcmlwdC5zb3VyY2VJRCwgdGV4dCwgZGlkRWRpdFNjcmlwdFNvdXJjZS5iaW5kKHRo
aXMpKTsKICAgICB9LApAQCAtMzU5LDIyICszNzAsMjcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0
dGluZ3MuYnJlYWtwb2ludHMgPSBzZXJpYWxpemVkQnJlYWtwb2ludHM7CiAgICAgfSwKIAorICAg
IF9kZWJ1Z2dlclBhdXNlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9k
ZWJ1Z2dlclBhdXNlZERldGFpbHMgPSBldmVudC5kYXRhOworICAgICAgICB0aGlzLl9kZWJ1Z2dl
clBhdXNlZERldGFpbHMuY2FsbEZyYW1lcyA9IHRoaXMuX3dyYXBDYWxsRnJhbWVzKGV2ZW50LmRh
dGEuY2FsbEZyYW1lcyk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5EZWJ1Z2dlclBhdXNl
ZCwgdGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxzKTsKKyAgICB9LAorCisgICAgX2RlYnVnZ2Vy
UmVzdW1lZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9kZWJ1Z2dlclBh
dXNlZERldGFpbHMgPSB7fTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUmVz
dW1lZCk7CisgICAgfSwKKwogICAgIHNldCBzZWxlY3RlZENhbGxGcmFtZShjYWxsRnJhbWUpCiAg
ICAgewogICAgICAgICB0aGlzLl9zZWxlY3RlZENhbGxGcmFtZSA9IGNhbGxGcmFtZTsKICAgICAg
ICAgaWYgKCFjYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZnVuY3Rp
b24gZGlkUmVxdWVzdE1hcHBpbmcobWFwcGluZykKLSAgICAgICAgewotICAgICAgICAgICAgY2Fs
bEZyYW1lLnNvdXJjZUxvY2F0aW9uID0gbWFwcGluZy5zY3JpcHRMb2NhdGlvblRvU291cmNlTG9j
YXRpb24oY2FsbEZyYW1lLmxpbmUsIGNhbGxGcmFtZS5jb2x1bW4pOwotICAgICAgICAgICAgY2Fs
bEZyYW1lLnNvdXJjZUxvY2F0aW9uLnNvdXJjZUZpbGVJZCA9IHNvdXJjZUZpbGUuaWQ7Ci0gICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQ2FsbEZyYW1lU2VsZWN0ZWQsIGNhbGxGcmFtZSk7
Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1v
ZGVsLnNjcmlwdEZvclNvdXJjZUlEKGNhbGxGcmFtZS5zb3VyY2VJRCk7Ci0gICAgICAgIHZhciBz
b3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmlsZUZvclNjcmlwdChzY3JpcHQpOwotICAgICAgICBz
b3VyY2VGaWxlLnJlcXVlc3RNYXBwaW5nKGRpZFJlcXVlc3RNYXBwaW5nLmJpbmQodGhpcykpOwot
ICAgICAgICBzb3VyY2VGaWxlLmZvcmNlTG9hZENvbnRlbnQoc2NyaXB0KTsKKyAgICAgICAgY2Fs
bEZyYW1lLnNlbGVjdCgpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQ2FsbEZyYW1lU2Vs
ZWN0ZWQsIGNhbGxGcmFtZSk7CiAgICAgfSwKIAogICAgIGdldCBzZWxlY3RlZENhbGxGcmFtZSgp
CkBAIC0zODIsNiArMzk4LDIwIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1l
OwogICAgIH0sCiAKKyAgICBfd3JhcENhbGxGcmFtZXM6IGZ1bmN0aW9uKGNhbGxGcmFtZXMpCisg
ICAgeworICAgICAgICB2YXIgcHJlc2VudGF0aW9uQ2FsbEZyYW1lcyA9IFtdOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGNhbGxGcmFtZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IHZhciBjYWxsRnJhbWUgPSBjYWxsRnJhbWVzW2ldOworICAgICAgICAgICAgdmFyIHNvdXJjZUZp
bGU7CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
c2NyaXB0Rm9yU291cmNlSUQoY2FsbEZyYW1lLnNvdXJjZUlEKTsKKyAgICAgICAgICAgIGlmIChz
Y3JpcHQpCisgICAgICAgICAgICAgICAgc291cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVGb3JT
Y3JpcHQoc2NyaXB0KTsKKyAgICAgICAgICAgIHByZXNlbnRhdGlvbkNhbGxGcmFtZXMucHVzaChu
ZXcgV2ViSW5zcGVjdG9yLlByZXNlbmF0aW9uQ2FsbEZyYW1lKGNhbGxGcmFtZSwgc291cmNlRmls
ZSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwcmVzZW50YXRpb25DYWxsRnJhbWVzOwor
ICAgIH0sCisKICAgICBfc291cmNlRmlsZUZvclNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUZpbGVzW3NjcmlwdC5zb3VyY2VVUkwgfHwg
c2NyaXB0LnNvdXJjZUlEXTsKQEAgLTQwMCw3ICs0MzAsNzUgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhpcy5f
c291cmNlRmlsZXMgPSB7fTsKICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uQnJlYWtwb2ludHMg
PSB7fTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxzID0ge307CiAgICAgfQog
fQogCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisKKworV2ViSW5zcGVjdG9y
LlByZXNlbmF0aW9uQ2FsbEZyYW1lID0gZnVuY3Rpb24oY2FsbEZyYW1lLCBzb3VyY2VGaWxlKQor
eworICAgIHRoaXMuX2NhbGxGcmFtZSA9IGNhbGxGcmFtZTsKKyAgICB0aGlzLl9zb3VyY2VGaWxl
ID0gc291cmNlRmlsZTsKKyAgICB0aGlzLl9zY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
b2RlbC5zY3JpcHRGb3JTb3VyY2VJRChjYWxsRnJhbWUuc291cmNlSUQpOworfQorCitXZWJJbnNw
ZWN0b3IuUHJlc2VuYXRpb25DYWxsRnJhbWUucHJvdG90eXBlID0geworICAgIGdldCBmdW5jdGlv
bk5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxGcmFtZS5mdW5jdGlvbk5h
bWU7CisgICAgfSwKKworICAgIGdldCB0eXBlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9jYWxsRnJhbWUudHlwZTsKKyAgICB9LAorCisgICAgZ2V0IGlzSW50ZXJuYWxTY3JpcHQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICF0aGlzLl9zY3JpcHQ7CisgICAgfSwKKworICAgIGdldCB1
cmwoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUZpbGUpCisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fc291cmNlRmlsZS51cmw7CisgICAgfSwKKworICAgIGdldCBzY29wZUNoYWlu
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jYWxsRnJhbWUuc2NvcGVDaGFpbjsKKyAg
ICB9LAorCisgICAgc2VsZWN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5f
c291cmNlRmlsZSkKKyAgICAgICAgICAgIHRoaXMuX3NvdXJjZUZpbGUuZm9yY2VMb2FkQ29udGVu
dCh0aGlzLl9zY3JpcHQpOworICAgIH0sCisKKyAgICBldmFsdWF0ZTogZnVuY3Rpb24oY29kZSwg
b2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY2FsbGJhY2spCisgICAgeworICAg
ICAgICBmdW5jdGlvbiBkaWRFdmFsdWF0ZU9uQ2FsbEZyYW1lKGVycm9yLCByZXN1bHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghZXJyb3IgJiYgcmVzdWx0KQorICAgICAgICAgICAgICAg
IGNhbGxiYWNrKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0KSk7
CisgICAgICAgIH0KKyAgICAgICAgRGVidWdnZXJBZ2VudC5ldmFsdWF0ZU9uQ2FsbEZyYW1lKHRo
aXMuX2NhbGxGcmFtZS5pZCwgY29kZSwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQ
SSwgZGlkRXZhbHVhdGVPbkNhbGxGcmFtZS5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgc291
cmNlTG9jYXRpb246IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlz
Ll9zb3VyY2VGaWxlKSB7CisgICAgICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQsIHRoaXMuX2Nh
bGxGcmFtZS5saW5lLCB0aGlzLl9jYWxsRnJhbWUuY29sdW1uKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RNYXBwaW5nKG1hcHBp
bmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzb3VyY2VMb2NhdGlvbiA9IG1hcHBpbmcu
c2NyaXB0TG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uKHRoaXMuX2NhbGxGcmFtZS5saW5lLCB0aGlz
Ll9jYWxsRnJhbWUuY29sdW1uKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX3NvdXJjZUZp
bGUuaWQsIHNvdXJjZUxvY2F0aW9uLmxpbmVOdW1iZXIsIHNvdXJjZUxvY2F0aW9uLmNvbHVtbk51
bWJlcik7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fc291cmNlRmlsZS5yZXF1ZXN0TWFwcGlu
ZyhkaWRSZXF1ZXN0TWFwcGluZy5iaW5kKHRoaXMpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDIzYjAz
MWQuLjRlZWFhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0xODcsMTMgKzE4NywxMyBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRGVidWdn
ZXJXYXNFbmFibGVkLCB0aGlzLl9kZWJ1Z2dlcldhc0VuYWJsZWQsIHRoaXMpOwogICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyV2FzRGlzYWJsZWQsIHRoaXMuX2RlYnVnZ2VyV2FzRGlz
YWJsZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUGF1c2VkLCB0
aGlzLl9kZWJ1Z2dlclBhdXNlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9k
ZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRGVi
dWdnZXJSZXN1bWVkLCB0aGlzLl9kZWJ1Z2dlclJlc3VtZWQsIHRoaXMpOwogCiAgICAgdGhpcy5f
cHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5FdmVudHMuU291cmNlRmlsZUFkZGVkLCB0aGlzLl9zb3VyY2VGaWxl
QWRkZWQsIHRoaXMpCiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuU291cmNlRmls
ZUNoYW5nZWQsIHRoaXMuX3NvdXJjZUZpbGVDaGFuZ2VkLCB0aGlzKTsKICAgICB0aGlzLl9wcmVz
ZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLkV2ZW50cy5CcmVha3BvaW50QWRkZWQsIHRoaXMuX2JyZWFrcG9pbnRBZGRl
ZCwgdGhpcyk7CiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2ludFJl
bW92ZWQsIHRoaXMuX2JyZWFrcG9pbnRSZW1vdmVkLCB0aGlzKTsKKyAgICB0aGlzLl9wcmVzZW50
YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLkV2ZW50cy5EZWJ1Z2dlclBhdXNlZCwgdGhpcy5fZGVidWdnZXJQYXVzZWQsIHRo
aXMpOworICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUmVzdW1lZCwg
dGhpcy5fZGVidWdnZXJSZXN1bWVkLCB0aGlzKTsKICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2Rl
bC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LkV2ZW50cy5DYWxsRnJhbWVTZWxlY3RlZCwgdGhpcy5fY2FsbEZyYW1lU2VsZWN0ZWQsIHRoaXMp
OwogCiAgICAgdmFyIGVuYWJsZURlYnVnZ2VyID0gUHJlZmVyZW5jZXMuZGVidWdnZXJBbHdheXNF
bmFibGVkIHx8IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5kZWJ1Z2dlckVuYWJsZWQ7CkBAIC0zNDgs
MTUgKzM0OCw4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAg
IGV2YWx1YXRlSW5TZWxlY3RlZENhbGxGcmFtZTogZnVuY3Rpb24oY29kZSwgb2JqZWN0R3JvdXAs
IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgc2Vs
ZWN0ZWRDYWxsRnJhbWUgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5zZWxlY3RlZENhbGxGcmFt
ZTsKLSAgICAgICAgaWYgKCF0aGlzLl9wYXVzZWQgfHwgIXNlbGVjdGVkQ2FsbEZyYW1lKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0aW5nQ2FsbGJhY2tXcmFw
cGVyKGVycm9yLCByZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZXJyb3IgJiYg
cmVzdWx0KQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QuZnJvbVBheWxvYWQocmVzdWx0KSk7Ci0gICAgICAgIH0KLSAgICAgICAgRGVidWdnZXJBZ2Vu
dC5ldmFsdWF0ZU9uQ2FsbEZyYW1lKHNlbGVjdGVkQ2FsbEZyYW1lLmlkLCBjb2RlLCBvYmplY3RH
cm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCB1cGRhdGluZ0NhbGxiYWNrV3JhcHBlci5iaW5k
KHRoaXMpKTsKKyAgICAgICAgaWYgKHNlbGVjdGVkQ2FsbEZyYW1lKQorICAgICAgICAgICAgc2Vs
ZWN0ZWRDYWxsRnJhbWUuZXZhbHVhdGUoY29kZSwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgY2FsbGJhY2spOwogICAgIH0sCiAKICAgICBfZGVidWdnZXJQYXVzZWQ6IGZ1bmN0
aW9uKGV2ZW50KQpAQCAtMzg3LDkgKzM4MCwxMiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBzdGF0dXMgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlBhdXNlZCBvbiBhIFhNTEh0dHBSZXF1ZXN0LiIpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIHNvdXJjZUxvY2F0aW9uID0gdGhpcy5fcHJl
c2VudGF0aW9uTW9kZWwuc2VsZWN0ZWRDYWxsRnJhbWUuc291cmNlTG9jYXRpb247Ci0gICAgICAg
ICAgICBpZiAoc291cmNlTG9jYXRpb24pCi0gICAgICAgICAgICAgICAgdGhpcy5zaWRlYmFyUGFu
ZXMuanNCcmVha3BvaW50cy5oaWdobGlnaHRCcmVha3BvaW50KHNvdXJjZUxvY2F0aW9uLnNvdXJj
ZUZpbGVJZCwgc291cmNlTG9jYXRpb24ubGluZU51bWJlcik7CisgICAgICAgICAgICBmdW5jdGlv
biBkaWRHZXRTb3VyY2VMb2NhdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlRmlsZUlkKQor
ICAgICAgICAgICAgICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5qc0JyZWFrcG9pbnRzLmhpZ2hs
aWdodEJyZWFrcG9pbnQoc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGNhbGxGcmFtZXNbMF0uc291cmNlTG9jYXRpb24oZGlkR2V0U291cmNlTG9j
YXRpb24uYmluZCh0aGlzKSk7CiAgICAgICAgICAgICBpZiAoZGV0YWlscy5icmVha3BvaW50KQog
ICAgICAgICAgICAgICAgIHN0YXR1cyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGF1c2VkIG9u
IGEgSmF2YVNjcmlwdCBicmVha3BvaW50LiIpOwogICAgICAgICB9CkBAIC01ODksMTIgKzU4NSw2
IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSBicmVha3BvaW50c1tpXTsKICAgICAgICAgICAgIHNvdXJjZUZyYW1l
LmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludC5saW5lTnVtYmVyLCBicmVha3BvaW50LnJlc29sdmVk
LCBicmVha3BvaW50LmNvbmRpdGlvbiwgYnJlYWtwb2ludC5lbmFibGVkKTsKICAgICAgICAgfQot
Ci0gICAgICAgIHZhciBzZWxlY3RlZENhbGxGcmFtZSA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVs
LnNlbGVjdGVkQ2FsbEZyYW1lOwotICAgICAgICBpZiAoc2VsZWN0ZWRDYWxsRnJhbWUgJiYgc2Vs
ZWN0ZWRDYWxsRnJhbWUuc291cmNlTG9jYXRpb24gJiYgc2VsZWN0ZWRDYWxsRnJhbWUuc291cmNl
TG9jYXRpb24uc291cmNlRmlsZUlkID09PSBzb3VyY2VGaWxlSWQpIHsKLSAgICAgICAgICAgIHNv
dXJjZUZyYW1lLnNldEV4ZWN1dGlvbkxpbmUoc2VsZWN0ZWRDYWxsRnJhbWUuc291cmNlTG9jYXRp
b24ubGluZU51bWJlcik7Ci0gICAgICAgICAgICB0aGlzLl9leGVjdXRpb25Tb3VyY2VGcmFtZSA9
IHNvdXJjZUZyYW1lOwotICAgICAgICB9CiAgICAgfSwKIAogICAgIF9jbGVhckN1cnJlbnRFeGVj
dXRpb25MaW5lOiBmdW5jdGlvbigpCkBAIC02MTYsMTkgKzYwNiwyMCBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMuc2Nv
cGVjaGFpbi51cGRhdGUoY2FsbEZyYW1lKTsKICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMud2F0
Y2hFeHByZXNzaW9ucy5yZWZyZXNoRXhwcmVzc2lvbnMoKTsKIAotICAgICAgICBpZiAoIWNhbGxG
cmFtZS5zb3VyY2VMb2NhdGlvbikKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZnVuY3Rp
b24gZGlkR2V0U291cmNlTG9jYXRpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghc291cmNlRmlsZUlkKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgc291cmNlRmlsZUlkID0gY2FsbEZyYW1l
LnNvdXJjZUxvY2F0aW9uLnNvdXJjZUZpbGVJZDsKLSAgICAgICAgaWYgKCEoc291cmNlRmlsZUlk
IGluIHRoaXMuX3NvdXJjZUZpbGVJZFRvRmlsZXNTZWxlY3RPcHRpb24pKSB7Ci0gICAgICAgICAg
ICAvLyBBbm9ueW1vdXMgc2NyaXB0cyBhcmUgbm90IGFkZGVkIHRvIGZpbGVzIHNlbGVjdCBieSBk
ZWZhdWx0LgotICAgICAgICAgICAgdGhpcy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdChzb3VyY2VG
aWxlSWQpOwotICAgICAgICB9Ci0gICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IHRoaXMuX3Nob3dT
b3VyY2VGcmFtZUFuZEFkZFRvSGlzdG9yeShzb3VyY2VGaWxlSWQpOwotICAgICAgICBpZiAoc291
cmNlRnJhbWUubG9hZGVkKSB7Ci0gICAgICAgICAgICBzb3VyY2VGcmFtZS5zZXRFeGVjdXRpb25M
aW5lKGNhbGxGcmFtZS5zb3VyY2VMb2NhdGlvbi5saW5lTnVtYmVyKTsKKyAgICAgICAgICAgIGlm
ICghKHNvdXJjZUZpbGVJZCBpbiB0aGlzLl9zb3VyY2VGaWxlSWRUb0ZpbGVzU2VsZWN0T3B0aW9u
KSkgeworICAgICAgICAgICAgICAgIC8vIEFub255bW91cyBzY3JpcHRzIGFyZSBub3QgYWRkZWQg
dG8gZmlsZXMgc2VsZWN0IGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgdGhpcy5fYWRkT3B0
aW9uVG9GaWxlc1NlbGVjdChzb3VyY2VGaWxlSWQpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fc2hvd1NvdXJjZUZyYW1lQW5kQWRkVG9IaXN0b3J5
KHNvdXJjZUZpbGVJZCk7CisgICAgICAgICAgICBzb3VyY2VGcmFtZS5zZXRFeGVjdXRpb25MaW5l
KGxpbmVOdW1iZXIpOwogICAgICAgICAgICAgdGhpcy5fZXhlY3V0aW9uU291cmNlRnJhbWUgPSBz
b3VyY2VGcmFtZTsKICAgICAgICAgfQorICAgICAgICBjYWxsRnJhbWUuc291cmNlTG9jYXRpb24o
ZGlkR2V0U291cmNlTG9jYXRpb24uYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIF9maWxlc1Nl
bGVjdENoYW5nZWQ6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCmluZGV4IGJmOTYzOGMuLjJkNzY3YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwpAQCAt
MjE0LDYgKzIxNCw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX3RleHRWaWV3ZXIubWltZVR5cGUgPSBtaW1lVHlwZTsKICAgICAgICAgdGhp
cy5fc2V0VGV4dFZpZXdlckRlY29yYXRpb25zKCk7CiAKKyAgICAgICAgaWYgKHRoaXMuX2V4ZWN1
dGlvbkxpbmVOdW1iZXIpCisgICAgICAgICAgICB0aGlzLnNldEV4ZWN1dGlvbkxpbmUodGhpcy5f
ZXhlY3V0aW9uTGluZU51bWJlcik7CisKICAgICAgICAgaWYgKHRoaXMuX2xpbmVOdW1iZXJUb1Jl
dmVhbCkgewogICAgICAgICAgICAgdGhpcy5yZXZlYWxMaW5lKHRoaXMuX2xpbmVOdW1iZXJUb1Jl
dmVhbCk7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGluZU51bWJlclRvUmV2ZWFsOwpAQCAt
MzY1LDEzICszNjgsMTYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsK
ICAgICBzZXRFeGVjdXRpb25MaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyKQogICAgIHsKICAgICAg
ICAgdGhpcy5fZXhlY3V0aW9uTGluZU51bWJlciA9IGxpbmVOdW1iZXI7Ci0gICAgICAgIHRoaXMu
X3RleHRWaWV3ZXIuYWRkRGVjb3JhdGlvbihsaW5lTnVtYmVyLCAid2Via2l0LWV4ZWN1dGlvbi1s
aW5lIik7Ci0gICAgICAgIHRoaXMuX3RleHRWaWV3ZXIucmV2ZWFsTGluZShsaW5lTnVtYmVyKTsK
KyAgICAgICAgaWYgKHRoaXMuX3RleHRWaWV3ZXIpIHsKKyAgICAgICAgICAgIHRoaXMuX3RleHRW
aWV3ZXIuYWRkRGVjb3JhdGlvbihsaW5lTnVtYmVyLCAid2Via2l0LWV4ZWN1dGlvbi1saW5lIik7
CisgICAgICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLnJldmVhbExpbmUobGluZU51bWJlcik7Cisg
ICAgICAgIH0KICAgICB9LAogCiAgICAgY2xlYXJFeGVjdXRpb25MaW5lOiBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLnJlbW92ZURlY29yYXRpb24odGhpcy5fZXhl
Y3V0aW9uTGluZU51bWJlciwgIndlYmtpdC1leGVjdXRpb24tbGluZSIpOworICAgICAgICBpZiAo
dGhpcy5fdGV4dFZpZXdlcikKKyAgICAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIucmVtb3ZlRGVj
b3JhdGlvbih0aGlzLl9leGVjdXRpb25MaW5lTnVtYmVyLCAid2Via2l0LWV4ZWN1dGlvbi1saW5l
Iik7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9leGVjdXRpb25MaW5lTnVtYmVyOwogICAgIH0sCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87142</attachid>
            <date>2011-03-28 07:46:44 -0700</date>
            <delta_ts>2011-03-28 08:08:04 -0700</delta_ts>
            <desc>Rebase.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25843</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMWJiOTM0Li41NjAwNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTEtMDMtMjggIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogZml4IGNhbGwgZnJhbWVzIHBvc2l0aW9ucyBmb3IgZm9ybWF0dGVkIHNjcmlwdHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzAzNgor
CisgICAgICAgIEludHJvZHVjZSBQcmVzZW50YXRpb25DYWxsRnJhbWUgY2xhc3MgdGhhdCBlbmNh
cHN1bGF0ZXMgc291cmNlIG1hcHBpbmcgZGV0YWlscyBmcm9tIFVJIGNvbXBvbmVudHMuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUu
ZGlkR2V0U291cmNlTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1Np
ZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxT
dGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5zZXQgc2VsZWN0ZWRDYWxsRnJhbWUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5fcGxhY2FyZFNl
bGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5wcm90
b3R5cGUuX2NvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRl
YmFyUGFuZS5wcm90b3R5cGUuX2NvcHlTdGFja1RyYWNlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5wcm90b3R5cGUuX2RpZEVkaXRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLmdldCBkZWJ1Z2dlclBhdXNlZERldGFpbHMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLl9wYXVzZWRT
Y3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnBy
b3RvdHlwZS5lZGl0U2NyaXB0U291cmNlLmRpZEVkaXRTY3JpcHRTb3VyY2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLmVkaXRTY3Jp
cHRTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwucHJvdG90eXBlLnRvZ2dsZUZvcm1hdFNvdXJjZUZpbGVzKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fZGVidWdnZXJQYXVzZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90
eXBlLl9kZWJ1Z2dlclJlc3VtZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwucHJvdG90eXBlLnNldCBzZWxlY3RlZENhbGxGcmFtZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuZ2V0IHNl
bGVjdGVkQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLnByb3RvdHlwZS5fcmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByZXNl
bmF0aW9uQ2FsbEZyYW1lKTogQ2FsbCBmcmFtZSB3cmFwcGVyIGZvciBVSS4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90
b3R5cGUuZXZhbHVhdGVJblNlbGVjdGVkQ2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9kZWJ1Z2dlclBhdXNlZC5lbHNlLmRpZEdldFNvdXJj
ZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBl
Ll9kZWJ1Z2dlclBhdXNlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZS5fZGVidWdnZXJSZXN1bWVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwucHJvdG90eXBlLl9zb3VyY2VGcmFtZUxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fY2FsbEZyYW1lU2VsZWN0ZWQuZGlkR2V0U291cmNl
TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUu
X2NhbGxGcmFtZVNlbGVjdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJj
ZUZpbGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRmlsZS5wcm90b3R5cGUuZ2V0
IGNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9jcmVhdGVUZXh0
Vmlld2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuc2V0
RXhlY3V0aW9uTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90
eXBlLmNsZWFyRXhlY3V0aW9uTGluZSk6CisKIDIwMTEtMDMtMjQgIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1p
a2hhdHNreS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q2FsbFN0YWNrU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzCmluZGV4IDc0MGJiMWMuLjIwZmYyZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJh
clBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DYWxsU3Rh
Y2tTaWRlYmFyUGFuZS5qcwpAQCAtMzcsNyArMzcsNiBAQCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNr
U2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmJvZHlFbGVtZW50LnJlbW92
ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgdGhpcy5wbGFjYXJkcyA9IFtdOwotICAgICAgICB0aGlz
Ll90ZXh0ID0gIiI7CiAKICAgICAgICAgaWYgKCFkZXRhaWxzKSB7CiAgICAgICAgICAgICB2YXIg
aW5mb0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAgLTYzLDI2ICs2
MiwyOCBAQCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzY3Jp
cHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JTb3VyY2VJRChjYWxsRnJh
bWUuc291cmNlSUQpOwotICAgICAgICAgICAgaWYgKHNjcmlwdCkKLSAgICAgICAgICAgICAgICBz
dWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChzY3JpcHQuc291cmNlVVJM
KTsKKyAgICAgICAgICAgIHZhciBzdWJ0aXRsZTsKKyAgICAgICAgICAgIGlmICghY2FsbEZyYW1l
LmlzSW50ZXJuYWxTY3JpcHQpCisgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBXZWJJbnNwZWN0
b3IuZGlzcGxheU5hbWVGb3JVUkwoY2FsbEZyYW1lLnVybCk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihpbnRlcm5h
bCBzY3JpcHQpIik7CiAKLSAgICAgICAgICAgIGlmIChzdWJ0aXRsZSkKLSAgICAgICAgICAgICAg
ICBzdWJ0aXRsZSArPSAiOiIgKyAoY2FsbEZyYW1lLmxpbmUgKyAxKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygibGlu
ZSAlZCIsIGNhbGxGcmFtZS5saW5lICsgMSk7Ci0KICAgICAgICAgICAgIHZhciBwbGFjYXJkID0g
bmV3IFdlYkluc3BlY3Rvci5QbGFjYXJkKHRpdGxlLCBzdWJ0aXRsZSk7CiAgICAgICAgICAgICBw
bGFjYXJkLmNhbGxGcmFtZSA9IGNhbGxGcmFtZTsKLQogICAgICAgICAgICAgcGxhY2FyZC5lbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcGxhY2FyZFNlbGVjdGVkLmJpbmQo
dGhpcyksIGZhbHNlKTsKIAorICAgICAgICAgICAgZnVuY3Rpb24gZGlkR2V0U291cmNlTG9jYXRp
b24ocGxhY2FyZCwgc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHBsYWNhcmQuc3VidGl0bGUpCisgICAgICAg
ICAgICAgICAgICAgIHBsYWNhcmQuc3VidGl0bGUgKz0gIjoiICsgKGxpbmVOdW1iZXIgKyAxKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHBsYWNhcmQuc3VidGl0
bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoImxpbmUgJWQiLCBsaW5lTnVtYmVyICsgMSk7Cisg
ICAgICAgICAgICAgICAgcGxhY2FyZC5fdGV4dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMo
KSBhdCAlcyIsIHBsYWNhcmQudGl0bGUsIHBsYWNhcmQuc3VidGl0bGUpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgY2FsbEZyYW1lLnNvdXJjZUxvY2F0aW9uKGRpZEdldFNvdXJjZUxvY2F0
aW9uLmJpbmQodGhpcywgcGxhY2FyZCkpOworCiAgICAgICAgICAgICB0aGlzLnBsYWNhcmRzLnB1
c2gocGxhY2FyZCk7CiAgICAgICAgICAgICB0aGlzLmJvZHlFbGVtZW50LmFwcGVuZENoaWxkKHBs
YWNhcmQuZWxlbWVudCk7Ci0KLSAgICAgICAgICAgIHRoaXMuX3RleHQgKz0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCIlcygpIGF0ICVzIiwgaSArIDEsIHRpdGxlLCBzdWJ0aXRsZSkgKyAiXG4iOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGRldGFpbHMuZXZlbnRUeXBlID09PSBXZWJJbnNwZWN0
b3IuRGVidWdnZXJFdmVudFR5cGVzLk5hdGl2ZUJyZWFrcG9pbnQpIHsKQEAgLTkzLDggKzk0LDYg
QEAgV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKIAogICAg
IHNldCBzZWxlY3RlZENhbGxGcmFtZSh4KQogICAgIHsKLSAgICAgICAgdGhpcy5fbW9kZWwuc2Vs
ZWN0ZWRDYWxsRnJhbWUgPSB4OwotCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5w
bGFjYXJkcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIHBsYWNhcmQgPSB0aGlzLnBs
YWNhcmRzW2ldOwogICAgICAgICAgICAgcGxhY2FyZC5zZWxlY3RlZCA9IChwbGFjYXJkLmNhbGxG
cmFtZSA9PT0geCk7CkBAIC0xNTAsMTkgKzE0OSwyNyBAQCBXZWJJbnNwZWN0b3IuQ2FsbFN0YWNr
U2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgIF9wbGFjYXJkU2VsZWN0ZWQ6IGZ1bmN0aW9u
KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHBsYWNhcmRFbGVtZW50ID0gZXZlbnQudGFyZ2V0
LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoInBsYWNhcmQiKTsKLSAgICAgICAgdGhpcy5z
ZWxlY3RlZENhbGxGcmFtZSA9IHBsYWNhcmRFbGVtZW50LnBsYWNhcmQuY2FsbEZyYW1lOworICAg
ICAgICB0aGlzLl9tb2RlbC5zZWxlY3RlZENhbGxGcmFtZSA9IHBsYWNhcmRFbGVtZW50LnBsYWNh
cmQuY2FsbEZyYW1lOwogICAgIH0sCiAKICAgICBfY29udGV4dE1lbnU6IGZ1bmN0aW9uKGV2ZW50
KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl90ZXh0KQorICAgICAgICBpZiAoIXRoaXMucGxh
Y2FyZHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBjb250ZXh0
TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKLSAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvcHkgU3RhY2sgVHJhY2UiKSwg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNvcHlUZXh0LmJpbmQoSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LCB0aGlzLl90ZXh0KSk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDb3B5IFN0YWNrIFRyYWNlIiksIHRoaXMuX2NvcHlTdGFja1RyYWNlLmJp
bmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKICAgICB9LAogCisg
ICAgX2NvcHlTdGFja1RyYWNlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgdGV4dCA9
ICIiOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucGxhY2FyZHMubGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICB0ZXh0ICs9IHRoaXMucGxhY2FyZHNbaV0uX3RleHQ7CisgICAgICAg
IEluc3BlY3RvckZyb250ZW5kSG9zdC5jb3B5VGV4dCh0ZXh0KTsKKyAgICB9LAorCiAgICAgcmVn
aXN0ZXJTaG9ydGN1dHM6IGZ1bmN0aW9uKHNlY3Rpb24pCiAgICAgewogICAgICAgICB0aGlzLl9z
aG9ydGN1dHMgPSB7fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRGVidWdnZXJNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGVidWdnZXJNb2RlbC5qcwppbmRleCAxMDgwNTVlLi5mMjY2Y2U2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCkBAIC0x
ODUsMTAgKzE4NSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlz
Ll9zY3JpcHRzW3NvdXJjZUlEXS5zb3VyY2UgPSBuZXdCb2R5T3JFcnJvck1lc3NhZ2U7Ci0gICAg
ICAgIGlmIChjYWxsRnJhbWVzICYmIGNhbGxGcmFtZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICB0
aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFpbHMuY2FsbEZyYW1lcyA9IGNhbGxGcmFtZXM7Ci0gICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5FdmVudHMuRGVidWdnZXJQYXVzZWQsIHRoaXMuX2RlYnVnZ2VyUGF1c2VkRGV0YWls
cyk7Ci0gICAgICAgIH0KKyAgICAgICAgdGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxzLmNhbGxG
cmFtZXMgPSBjYWxsRnJhbWVzOwogICAgIH0sCiAKICAgICBnZXQgY2FsbEZyYW1lcygpCkBAIC0x
OTYsMTAgKzE5MywxNCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9kZWJ1Z2dlclBhdXNlZERldGFpbHMuY2FsbEZyYW1lczsK
ICAgICB9LAogCisgICAgZ2V0IGRlYnVnZ2VyUGF1c2VkRGV0YWlscygpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fZGVidWdnZXJQYXVzZWREZXRhaWxzOworICAgIH0sCisKICAgICBfcGF1
c2VkU2NyaXB0OiBmdW5jdGlvbihkZXRhaWxzKQogICAgIHsKICAgICAgICAgdGhpcy5fZGVidWdn
ZXJQYXVzZWREZXRhaWxzID0gZGV0YWlsczsKLSAgICAgICAgZGV0YWlscy5icmVha3BvaW50ID0g
dGhpcy5fYnJlYWtwb2ludEZvckNhbGxGcmFtZShkZXRhaWxzLmNhbGxGcmFtZXNbMF0pOwogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJN
b2RlbC5FdmVudHMuRGVidWdnZXJQYXVzZWQsIGRldGFpbHMpOwogICAgIH0sCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5qcwppbmRleCAxNTFjNmUzLi41ZmI4ZmI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0zMywxMSArMzMsMTUgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fc291cmNlRmlsZXMg
PSB7fTsKICAgICB0aGlzLl9tZXNzYWdlcyA9IFtdOwogICAgIHRoaXMuX3ByZXNlbnRhdGlvbkJy
ZWFrcG9pbnRzID0ge307CisgICAgdGhpcy5fcHJlc2VudGF0aW9uQ2FsbEZyYW1lcyA9IFtdOwor
ICAgIHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lSW5kZXggPSAwOwogCiAgICAgV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5FdmVudHMuRGVidWdnZXJXYXNFbmFibGVkLCB0aGlzLl9kZWJ1Z2dlcldhc0VuYWJsZWQsIHRo
aXMpOwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLlBhcnNlZFNjcmlwdFNvdXJjZSwgdGhpcy5f
cGFyc2VkU2NyaXB0U291cmNlLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2Rl
bC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5GYWls
ZWRUb1BhcnNlU2NyaXB0U291cmNlLCB0aGlzLl9mYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlLCB0
aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5CcmVha3BvaW50UmVzb2x2ZWQsIHRoaXMu
X2JyZWFrcG9pbnRSZXNvbHZlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9k
ZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRGVi
dWdnZXJQYXVzZWQsIHRoaXMuX2RlYnVnZ2VyUGF1c2VkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1v
ZGVsLkV2ZW50cy5EZWJ1Z2dlclJlc3VtZWQsIHRoaXMuX2RlYnVnZ2VyUmVzdW1lZCwgdGhpcyk7
CiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuUmVzZXQsIHRoaXMuX3Jlc2V0LCB0aGlzKTsKIH0K
IApAQCAtNDYsNyArNTAsMTAgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuRXZlbnRzID0gewogICAgIFNvdXJjZUZpbGVDaGFuZ2VkOiAic291cmNlLWZpbGUtY2hhbmdl
ZCIsCiAgICAgQ29uc29sZU1lc3NhZ2VBZGRlZDogImNvbnNvbGUtbWVzc2FnZS1hZGRlZCIsCiAg
ICAgQnJlYWtwb2ludEFkZGVkOiAiYnJlYWtwb2ludC1hZGRlZCIsCi0gICAgQnJlYWtwb2ludFJl
bW92ZWQ6ICJicmVha3BvaW50LXJlbW92ZWQiCisgICAgQnJlYWtwb2ludFJlbW92ZWQ6ICJicmVh
a3BvaW50LXJlbW92ZWQiLAorICAgIERlYnVnZ2VyUGF1c2VkOiAiZGVidWdnZXItcGF1c2VkIiwK
KyAgICBEZWJ1Z2dlclJlc3VtZWQ6ICJkZWJ1Z2dlci1yZXN1bWVkIiwKKyAgICBDYWxsRnJhbWVT
ZWxlY3RlZDogImNhbGwtZnJhbWUtc2VsZWN0ZWQiCiB9CiAKIFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKQEAgLTExOCw3ICsxMjUsOCBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgZWRp
dFNjcmlwdFNvdXJjZTogZnVuY3Rpb24oc291cmNlRmlsZUlkLCB0ZXh0LCBjYWxsYmFjaykKICAg
ICB7CiAgICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JTb3VyY2VGaWxlSWQoc291
cmNlRmlsZUlkKTsKLSAgICAgICAgdmFyIG9sZFNvdXJjZSA9IHNjcmlwdC5zb3VyY2U7CisgICAg
ICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmlsZXNbc291cmNlRmlsZUlkXTsKKyAg
ICAgICAgdmFyIG9sZFNvdXJjZSA9IHNvdXJjZUZpbGUuY29udGVudDsKICAgICAgICAgZnVuY3Rp
b24gZGlkRWRpdFNjcmlwdFNvdXJjZShzdWNjZXNzLCBuZXdCb2R5T3JFcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghc3VjY2VzcykgewpAQCAtMTMxLDEyICsxMzksMTQg
QEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewog
CiAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwo
c2NyaXB0LnNvdXJjZVVSTCk7CiAgICAgICAgICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAg
ICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF07
CiAgICAgICAgICAgICAgICAgdmFyIHJldmVydEhhbmRsZSA9IHRoaXMuZWRpdFNjcmlwdFNvdXJj
ZS5iaW5kKHRoaXMsIHNvdXJjZUZpbGVJZCwgb2xkU291cmNlLCBzb3VyY2VGaWxlLnJlbG9hZC5i
aW5kKHNvdXJjZUZpbGUpKTsKICAgICAgICAgICAgICAgICByZXNvdXJjZS5zZXRDb250ZW50KG5l
d1NvdXJjZSwgcmV2ZXJ0SGFuZGxlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2Fs
bGJhY2sodHJ1ZSwgbmV3U291cmNlKTsKKworICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlck1vZGVsLmNhbGxGcmFtZXMpCisgICAgICAgICAgICAgICAgdGhpcy5fZGVidWdnZXJQ
YXVzZWQoKTsKICAgICAgICAgfQogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5l
ZGl0U2NyaXB0U291cmNlKHNjcmlwdC5zb3VyY2VJRCwgdGV4dCwgZGlkRWRpdFNjcmlwdFNvdXJj
ZS5iaW5kKHRoaXMpKTsKICAgICB9LApAQCAtMTc4LDggKzE4OCw5IEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
X2Zvcm1hdHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyKCk7CiAKICAgICAg
ICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5fbWVzc2FnZXM7Ci0KLSAgICAgICAgdGhpcy5fcmVzZXQo
KTsKKyAgICAgICAgdGhpcy5fc291cmNlRmlsZXMgPSB7fTsKKyAgICAgICAgdGhpcy5fbWVzc2Fn
ZXMgPSBbXTsKKyAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uQnJlYWtwb2ludHMgPSB7fTsKIAog
ICAgICAgICB2YXIgc2NyaXB0cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdHM7
CiAgICAgICAgIGZvciAodmFyIGlkIGluIHNjcmlwdHMpCkBAIC0xODksNiArMjAwLDkgQEAgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdGhpcy5hZGRDb25zb2xlTWVzc2FnZShtZXNzYWdlc1tpXSk7CiAKICAgICAgICAgdGhp
cy5fcmVmcmVzaEJyZWFrcG9pbnRzKCk7CisKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1vZGVsLmNhbGxGcmFtZXMpCisgICAgICAgICAgICB0aGlzLl9kZWJ1Z2dlclBhdXNlZCgp
OwogICAgIH0sCiAKICAgICBhZGRDb25zb2xlTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSkKQEAg
LTM3MiwyNyArMzg2LDQxIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmJyZWFrcG9pbnRz
ID0gc2VyaWFsaXplZEJyZWFrcG9pbnRzOwogICAgIH0sCiAKLSAgICBzZXQgc2VsZWN0ZWRDYWxs
RnJhbWUoY2FsbEZyYW1lKQorICAgIF9kZWJ1Z2dlclBhdXNlZDogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgdGhpcy5fc2VsZWN0ZWRDYWxsRnJhbWUgPSBjYWxsRnJhbWU7Ci0gICAgICAgIGlm
ICghY2FsbEZyYW1lKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZ1bmN0aW9uIGRp
ZFJlcXVlc3RTb3VyY2VNYXBwaW5nKG1hcHBpbmcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNh
bGxGcmFtZS5zb3VyY2VMb2NhdGlvbiA9IG1hcHBpbmcuc2NyaXB0TG9jYXRpb25Ub1NvdXJjZUxv
Y2F0aW9uKGNhbGxGcmFtZS5saW5lLCBjYWxsRnJhbWUuY29sdW1uKTsKLSAgICAgICAgICAgIGNh
bGxGcmFtZS5zb3VyY2VMb2NhdGlvbi5zb3VyY2VGaWxlSWQgPSBzb3VyY2VGaWxlLmlkOwotICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkNhbGxGcmFtZVNlbGVjdGVkLCBjYWxsRnJhbWUp
OworICAgICAgICB2YXIgY2FsbEZyYW1lcyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNh
bGxGcmFtZXM7CisgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbkNhbGxGcmFtZXMgPSBbXTsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsRnJhbWVzLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICB2YXIgY2FsbEZyYW1lID0gY2FsbEZyYW1lc1tpXTsKKyAgICAgICAgICAgIHZhciBz
b3VyY2VGaWxlOworICAgICAgICAgICAgdmFyIHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1vZGVsLnNjcmlwdEZvclNvdXJjZUlEKGNhbGxGcmFtZS5zb3VyY2VJRCk7CisgICAgICAgICAg
ICBpZiAoc2NyaXB0KQorICAgICAgICAgICAgICAgIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VG
aWxlRm9yU2NyaXB0KHNjcmlwdCk7CisgICAgICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25DYWxs
RnJhbWVzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5QcmVzZW5hdGlvbkNhbGxGcmFtZShjYWxsRnJh
bWUsIGksIHNvdXJjZUZpbGUpKTsKICAgICAgICAgfQotICAgICAgICB2YXIgc2NyaXB0ID0gV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9yU291cmNlSUQoY2FsbEZyYW1lLnNvdXJj
ZUlEKTsKLSAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlRm9yU2NyaXB0
KHNjcmlwdCk7Ci0gICAgICAgIHNvdXJjZUZpbGUucmVxdWVzdFNvdXJjZU1hcHBpbmcoZGlkUmVx
dWVzdFNvdXJjZU1hcHBpbmcuYmluZCh0aGlzKSk7Ci0gICAgICAgIHNvdXJjZUZpbGUuZm9yY2VM
b2FkQ29udGVudChzY3JpcHQpOworICAgICAgICB2YXIgZGV0YWlscyA9IFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlck1vZGVsLmRlYnVnZ2VyUGF1c2VkRGV0YWlsczsKKyAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
RXZlbnRzLkRlYnVnZ2VyUGF1c2VkLCB7IGNhbGxGcmFtZXM6IHRoaXMuX3ByZXNlbnRhdGlvbkNh
bGxGcmFtZXMsIGRldGFpbHM6IGRldGFpbHMgfSk7CisKKyAgICAgICAgdGhpcy5zZWxlY3RlZENh
bGxGcmFtZSA9IHRoaXMuX3ByZXNlbnRhdGlvbkNhbGxGcmFtZXNbdGhpcy5fc2VsZWN0ZWRDYWxs
RnJhbWVJbmRleF07CisgICAgfSwKKworICAgIF9kZWJ1Z2dlclJlc3VtZWQ6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbkNhbGxGcmFtZXMgPSBbXTsKKyAgICAg
ICAgdGhpcy5fc2VsZWN0ZWRDYWxsRnJhbWVJbmRleCA9IDA7CisgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LkV2ZW50cy5EZWJ1Z2dlclJlc3VtZWQpOworICAgIH0sCisKKyAgICBzZXQgc2VsZWN0ZWRDYWxs
RnJhbWUoY2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRDYWxsRnJhbWVJ
bmRleCA9IGNhbGxGcmFtZS5pbmRleDsKKyAgICAgICAgY2FsbEZyYW1lLnNlbGVjdCgpOworICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQ2FsbEZyYW1lU2VsZWN0ZWQsIGNhbGxGcmFtZSk7CiAg
ICAgfSwKIAogICAgIGdldCBzZWxlY3RlZENhbGxGcmFtZSgpCiAgICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fc2VsZWN0ZWRDYWxsRnJhbWU7CisgICAgICAgIHJldHVybiB0aGlzLl9wcmVzZW50
YXRpb25DYWxsRnJhbWVzW3RoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lSW5kZXhdOwogICAgIH0sCiAK
ICAgICBfc291cmNlRmlsZUZvclNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQpAQCAtNDE5LDYgKzQ0
Nyw4IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fc291cmNlRmlsZXMgPSB7fTsKICAgICAgICAgdGhpcy5fbWVzc2Fn
ZXMgPSBbXTsKICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uQnJlYWtwb2ludHMgPSB7fTsKKyAg
ICAgICAgdGhpcy5fcHJlc2VudGF0aW9uQ2FsbEZyYW1lcyA9IFtdOworICAgICAgICB0aGlzLl9z
ZWxlY3RlZENhbGxGcmFtZUluZGV4ID0gMDsKICAgICB9CiB9CiAKQEAgLTQ3NSwzICs1MDUsNzUg
QEAgV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9zb3VyY2VGaWxlLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50LmJp
bmQodGhpcykpOwogICAgIH0KIH0KKworV2ViSW5zcGVjdG9yLlByZXNlbmF0aW9uQ2FsbEZyYW1l
ID0gZnVuY3Rpb24oY2FsbEZyYW1lLCBpbmRleCwgc291cmNlRmlsZSkKK3sKKyAgICB0aGlzLl9j
YWxsRnJhbWUgPSBjYWxsRnJhbWU7CisgICAgdGhpcy5faW5kZXggPSBpbmRleDsKKyAgICB0aGlz
Ll9zb3VyY2VGaWxlID0gc291cmNlRmlsZTsKKyAgICB0aGlzLl9zY3JpcHQgPSBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JTb3VyY2VJRChjYWxsRnJhbWUuc291cmNlSUQpOwor
fQorCitXZWJJbnNwZWN0b3IuUHJlc2VuYXRpb25DYWxsRnJhbWUucHJvdG90eXBlID0geworICAg
IGdldCBmdW5jdGlvbk5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxGcmFt
ZS5mdW5jdGlvbk5hbWU7CisgICAgfSwKKworICAgIGdldCB0eXBlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9jYWxsRnJhbWUudHlwZTsKKyAgICB9LAorCisgICAgZ2V0IGlzSW50ZXJu
YWxTY3JpcHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICF0aGlzLl9zY3JpcHQ7CisgICAgfSwK
KworICAgIGdldCB1cmwoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUZpbGUpCisg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlRmlsZS51cmw7CisgICAgfSwKKworICAgIGdl
dCBzY29wZUNoYWluKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jYWxsRnJhbWUuc2Nv
cGVDaGFpbjsKKyAgICB9LAorCisgICAgZ2V0IGluZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9pbmRleDsKKyAgICB9LAorCisgICAgc2VsZWN0OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBpZiAodGhpcy5fc291cmNlRmlsZSkKKyAgICAgICAgICAgIHRoaXMuX3NvdXJjZUZp
bGUuZm9yY2VMb2FkQ29udGVudCh0aGlzLl9zY3JpcHQpOworICAgIH0sCisKKyAgICBldmFsdWF0
ZTogZnVuY3Rpb24oY29kZSwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY2Fs
bGJhY2spCisgICAgeworICAgICAgICBmdW5jdGlvbiBkaWRFdmFsdWF0ZU9uQ2FsbEZyYW1lKGVy
cm9yLCByZXN1bHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghZXJyb3IgJiYgcmVzdWx0
KQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJv
bVBheWxvYWQocmVzdWx0KSk7CisgICAgICAgIH0KKyAgICAgICAgRGVidWdnZXJBZ2VudC5ldmFs
dWF0ZU9uQ2FsbEZyYW1lKHRoaXMuX2NhbGxGcmFtZS5pZCwgY29kZSwgb2JqZWN0R3JvdXAsIGlu
Y2x1ZGVDb21tYW5kTGluZUFQSSwgZGlkRXZhbHVhdGVPbkNhbGxGcmFtZS5iaW5kKHRoaXMpKTsK
KyAgICB9LAorCisgICAgc291cmNlTG9jYXRpb246IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgaWYgKCF0aGlzLl9zb3VyY2VGaWxlKSB7CisgICAgICAgICAgICBjYWxsYmFjayh1
bmRlZmluZWQsIHRoaXMuX2NhbGxGcmFtZS5saW5lLCB0aGlzLl9jYWxsRnJhbWUuY29sdW1uKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRpZFJl
cXVlc3RTb3VyY2VNYXBwaW5nKG1hcHBpbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBz
b3VyY2VMb2NhdGlvbiA9IG1hcHBpbmcuc2NyaXB0TG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uKHRo
aXMuX2NhbGxGcmFtZS5saW5lLCB0aGlzLl9jYWxsRnJhbWUuY29sdW1uKTsKKyAgICAgICAgICAg
IGNhbGxiYWNrKHRoaXMuX3NvdXJjZUZpbGUuaWQsIHNvdXJjZUxvY2F0aW9uLmxpbmVOdW1iZXIs
IHNvdXJjZUxvY2F0aW9uLmNvbHVtbk51bWJlcik7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5f
c291cmNlRmlsZS5yZXF1ZXN0U291cmNlTWFwcGluZyhkaWRSZXF1ZXN0U291cmNlTWFwcGluZy5i
aW5kKHRoaXMpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDllNjhkNjIuLjAxZmFmYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBA
IC0xODcsMTQgKzE4NywxNCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24o
KQogCiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRGVidWdnZXJXYXNFbmFibGVkLCB0aGlzLl9k
ZWJ1Z2dlcldhc0VuYWJsZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVs
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVn
Z2VyV2FzRGlzYWJsZWQsIHRoaXMuX2RlYnVnZ2VyV2FzRGlzYWJsZWQsIHRoaXMpOwotICAgIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUGF1c2VkLCB0aGlzLl9kZWJ1Z2dlclBhdXNlZCwg
dGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRGVidWdnZXJSZXN1bWVkLCB0aGlzLl9k
ZWJ1Z2dlclJlc3VtZWQsIHRoaXMpOwogCiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVu
dHMuU291cmNlRmlsZUFkZGVkLCB0aGlzLl9zb3VyY2VGaWxlQWRkZWQsIHRoaXMpCiAgICAgdGhp
cy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuU291cmNlRmlsZUNoYW5nZWQsIHRoaXMuX3NvdXJj
ZUZpbGVDaGFuZ2VkLCB0aGlzKTsKICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5D
b25zb2xlTWVzc2FnZUFkZGVkLCB0aGlzLl9jb25zb2xlTWVzc2FnZUFkZGVkLCB0aGlzKTsKICAg
ICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5CcmVha3BvaW50QWRkZWQsIHRoaXMuX2Jy
ZWFrcG9pbnRBZGRlZCwgdGhpcyk7CiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMu
QnJlYWtwb2ludFJlbW92ZWQsIHRoaXMuX2JyZWFrcG9pbnRSZW1vdmVkLCB0aGlzKTsKKyAgICB0
aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5EZWJ1Z2dlclBhdXNlZCwgdGhpcy5fZGVidWdn
ZXJQYXVzZWQsIHRoaXMpOworICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkRlYnVn
Z2VyUmVzdW1lZCwgdGhpcy5fZGVidWdnZXJSZXN1bWVkLCB0aGlzKTsKICAgICB0aGlzLl9wcmVz
ZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLkV2ZW50cy5DYWxsRnJhbWVTZWxlY3RlZCwgdGhpcy5fY2FsbEZyYW1lU2Vs
ZWN0ZWQsIHRoaXMpOwogCiAgICAgdmFyIGVuYWJsZURlYnVnZ2VyID0gUHJlZmVyZW5jZXMuZGVi
dWdnZXJBbHdheXNFbmFibGVkIHx8IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5kZWJ1Z2dlckVuYWJs
ZWQ7CkBAIC0zNTYsMTUgKzM1Niw4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90
eXBlID0gewogICAgIGV2YWx1YXRlSW5TZWxlY3RlZENhbGxGcmFtZTogZnVuY3Rpb24oY29kZSwg
b2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY2FsbGJhY2spCiAgICAgewogICAg
ICAgICB2YXIgc2VsZWN0ZWRDYWxsRnJhbWUgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5zZWxl
Y3RlZENhbGxGcmFtZTsKLSAgICAgICAgaWYgKCF0aGlzLl9wYXVzZWQgfHwgIXNlbGVjdGVkQ2Fs
bEZyYW1lKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZ1bmN0aW9uIHVwZGF0aW5n
Q2FsbGJhY2tXcmFwcGVyKGVycm9yLCByZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghZXJyb3IgJiYgcmVzdWx0KQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0KSk7Ci0gICAgICAgIH0KLSAgICAgICAg
RGVidWdnZXJBZ2VudC5ldmFsdWF0ZU9uQ2FsbEZyYW1lKHNlbGVjdGVkQ2FsbEZyYW1lLmlkLCBj
b2RlLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCB1cGRhdGluZ0NhbGxiYWNr
V3JhcHBlci5iaW5kKHRoaXMpKTsKKyAgICAgICAgaWYgKHNlbGVjdGVkQ2FsbEZyYW1lKQorICAg
ICAgICAgICAgc2VsZWN0ZWRDYWxsRnJhbWUuZXZhbHVhdGUoY29kZSwgb2JqZWN0R3JvdXAsIGlu
Y2x1ZGVDb21tYW5kTGluZUFQSSwgY2FsbGJhY2spOwogICAgIH0sCiAKICAgICBfZGVidWdnZXJQ
YXVzZWQ6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMzgxLDcgKzM3NCw3IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudFBh
bmVsID0gdGhpczsKIAogICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5jYWxsc3RhY2sudXBkYXRl
KGV2ZW50LmRhdGEpOwotICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5jYWxsc3RhY2suc2VsZWN0
ZWRDYWxsRnJhbWUgPSBjYWxsRnJhbWVzWzBdOworICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5j
YWxsc3RhY2suc2VsZWN0ZWRDYWxsRnJhbWUgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5zZWxl
Y3RlZENhbGxGcmFtZTsKIAogICAgICAgICB2YXIgc3RhdHVzOwogICAgICAgICBpZiAoZGV0YWls
cy5ldmVudFR5cGUgPT09IFdlYkluc3BlY3Rvci5EZWJ1Z2dlckV2ZW50VHlwZXMuTmF0aXZlQnJl
YWtwb2ludCkgewpAQCAtMzk1LDExICszODgsMTQgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgc3RhdHVzID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJQYXVzZWQgb24gYSBYTUxIdHRwUmVxdWVzdC4iKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBzb3VyY2VMb2NhdGlvbiA9IHRoaXMuX3By
ZXNlbnRhdGlvbk1vZGVsLnNlbGVjdGVkQ2FsbEZyYW1lLnNvdXJjZUxvY2F0aW9uOwotICAgICAg
ICAgICAgaWYgKHNvdXJjZUxvY2F0aW9uKQotICAgICAgICAgICAgICAgIHRoaXMuc2lkZWJhclBh
bmVzLmpzQnJlYWtwb2ludHMuaGlnaGxpZ2h0QnJlYWtwb2ludChzb3VyY2VMb2NhdGlvbi5zb3Vy
Y2VGaWxlSWQsIHNvdXJjZUxvY2F0aW9uLmxpbmVOdW1iZXIpOwotICAgICAgICAgICAgaWYgKGRl
dGFpbHMuYnJlYWtwb2ludCkKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZEdldFNvdXJjZUxvY2F0
aW9uKHNvdXJjZUZpbGVJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGlmICghc291cmNlRmlsZUlkIHx8ICF0aGlzLl9wcmVzZW50YXRp
b25Nb2RlbC5maW5kQnJlYWtwb2ludChzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgdGhpcy5zaWRlYmFyUGFuZXMu
anNCcmVha3BvaW50cy5oaWdobGlnaHRCcmVha3BvaW50KHNvdXJjZUZpbGVJZCwgbGluZU51bWJl
cik7CiAgICAgICAgICAgICAgICAgc3RhdHVzID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYXVz
ZWQgb24gYSBKYXZhU2NyaXB0IGJyZWFrcG9pbnQuIik7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYWxsRnJhbWVzWzBdLnNvdXJjZUxvY2F0aW9uKGRpZEdldFNvdXJjZUxvY2F0aW9uLmJp
bmQodGhpcykpOwogICAgICAgICB9CiAgICAgICAgIGlmIChzdGF0dXMpCiAgICAgICAgICAgICB0
aGlzLnNpZGViYXJQYW5lcy5jYWxsc3RhY2suc2V0U3RhdHVzKHN0YXR1cyk7CkBAIC00MTAsOCAr
NDA2LDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBf
ZGVidWdnZXJSZXN1bWVkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9wcmVzZW50
YXRpb25Nb2RlbC5zZWxlY3RlZENhbGxGcmFtZSA9IG51bGw7Ci0KICAgICAgICAgdGhpcy5fcGF1
c2VkID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3dhaXRpbmdUb1BhdXNlID0gZmFsc2U7CiAgICAg
ICAgIHRoaXMuX3N0ZXBwaW5nID0gZmFsc2U7CkBAIC01OTcsMTIgKzU5MSw2IEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIGJyZWFrcG9p
bnQgPSBicmVha3BvaW50c1tpXTsKICAgICAgICAgICAgIHNvdXJjZUZyYW1lLmFkZEJyZWFrcG9p
bnQoYnJlYWtwb2ludC5saW5lTnVtYmVyLCBicmVha3BvaW50LnJlc29sdmVkLCBicmVha3BvaW50
LmNvbmRpdGlvbiwgYnJlYWtwb2ludC5lbmFibGVkKTsKICAgICAgICAgfQotCi0gICAgICAgIHZh
ciBzZWxlY3RlZENhbGxGcmFtZSA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnNlbGVjdGVkQ2Fs
bEZyYW1lOwotICAgICAgICBpZiAoc2VsZWN0ZWRDYWxsRnJhbWUgJiYgc2VsZWN0ZWRDYWxsRnJh
bWUuc291cmNlTG9jYXRpb24gJiYgc2VsZWN0ZWRDYWxsRnJhbWUuc291cmNlTG9jYXRpb24uc291
cmNlRmlsZUlkID09PSBzb3VyY2VGaWxlSWQpIHsKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lLnNl
dEV4ZWN1dGlvbkxpbmUoc2VsZWN0ZWRDYWxsRnJhbWUuc291cmNlTG9jYXRpb24ubGluZU51bWJl
cik7Ci0gICAgICAgICAgICB0aGlzLl9leGVjdXRpb25Tb3VyY2VGcmFtZSA9IHNvdXJjZUZyYW1l
OwotICAgICAgICB9CiAgICAgfSwKIAogICAgIF9jbGVhckN1cnJlbnRFeGVjdXRpb25MaW5lOiBm
dW5jdGlvbigpCkBAIC02MjMsMjAgKzYxMSwyMiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5zY29wZWNoYWluLnVw
ZGF0ZShjYWxsRnJhbWUpOwogICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy53YXRjaEV4cHJlc3Np
b25zLnJlZnJlc2hFeHByZXNzaW9ucygpOworICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5jYWxs
c3RhY2suc2VsZWN0ZWRDYWxsRnJhbWUgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5zZWxlY3Rl
ZENhbGxGcmFtZTsKIAotICAgICAgICBpZiAoIWNhbGxGcmFtZS5zb3VyY2VMb2NhdGlvbikKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZnVuY3Rpb24gZGlkR2V0U291cmNlTG9jYXRpb24o
c291cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghc291cmNlRmlsZUlkKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICB2YXIgc291cmNlRmlsZUlkID0gY2FsbEZyYW1lLnNvdXJjZUxvY2F0aW9uLnNvdXJjZUZp
bGVJZDsKLSAgICAgICAgaWYgKCEoc291cmNlRmlsZUlkIGluIHRoaXMuX3NvdXJjZUZpbGVJZFRv
RmlsZXNTZWxlY3RPcHRpb24pKSB7Ci0gICAgICAgICAgICAvLyBBbm9ueW1vdXMgc2NyaXB0cyBh
cmUgbm90IGFkZGVkIHRvIGZpbGVzIHNlbGVjdCBieSBkZWZhdWx0LgotICAgICAgICAgICAgdGhp
cy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdChzb3VyY2VGaWxlSWQpOwotICAgICAgICB9Ci0gICAg
ICAgIHZhciBzb3VyY2VGcmFtZSA9IHRoaXMuX3Nob3dTb3VyY2VGcmFtZUFuZEFkZFRvSGlzdG9y
eShzb3VyY2VGaWxlSWQpOwotICAgICAgICBpZiAoc291cmNlRnJhbWUubG9hZGVkKSB7Ci0gICAg
ICAgICAgICBzb3VyY2VGcmFtZS5zZXRFeGVjdXRpb25MaW5lKGNhbGxGcmFtZS5zb3VyY2VMb2Nh
dGlvbi5saW5lTnVtYmVyKTsKKyAgICAgICAgICAgIGlmICghKHNvdXJjZUZpbGVJZCBpbiB0aGlz
Ll9zb3VyY2VGaWxlSWRUb0ZpbGVzU2VsZWN0T3B0aW9uKSkgeworICAgICAgICAgICAgICAgIC8v
IEFub255bW91cyBzY3JpcHRzIGFyZSBub3QgYWRkZWQgdG8gZmlsZXMgc2VsZWN0IGJ5IGRlZmF1
bHQuCisgICAgICAgICAgICAgICAgdGhpcy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdChzb3VyY2VG
aWxlSWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhp
cy5fc2hvd1NvdXJjZUZyYW1lQW5kQWRkVG9IaXN0b3J5KHNvdXJjZUZpbGVJZCk7CisgICAgICAg
ICAgICBzb3VyY2VGcmFtZS5zZXRFeGVjdXRpb25MaW5lKGxpbmVOdW1iZXIpOwogICAgICAgICAg
ICAgdGhpcy5fZXhlY3V0aW9uU291cmNlRnJhbWUgPSBzb3VyY2VGcmFtZTsKICAgICAgICAgfQor
ICAgICAgICBjYWxsRnJhbWUuc291cmNlTG9jYXRpb24oZGlkR2V0U291cmNlTG9jYXRpb24uYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIF9maWxlc1NlbGVjdENoYW5nZWQ6IGZ1bmN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmls
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcwpp
bmRleCA1N2NkYzg1Li40ZjU2YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzCkBAIC02Myw2ICs2MywxMSBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlRmlsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3JlcXVlc3RDb250ZW50KCk7
CiAgICAgfSwKIAorICAgIGdldCBjb250ZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9jb250ZW50OworICAgIH0sCisKICAgICByZXF1ZXN0U291cmNlTWFwcGluZzogZnVuY3Rpb24o
Y2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX21hcHBpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwppbmRleCAzMDll
MDMzLi43MmMwNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NvdXJjZUZyYW1lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlRnJhbWUuanMKQEAgLTIxMSw2ICsyMTEsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNl
RnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLm1pbWVUeXBlID0g
bWltZVR5cGU7CiAgICAgICAgIHRoaXMuX3NldFRleHRWaWV3ZXJEZWNvcmF0aW9ucygpOwogCisg
ICAgICAgIGlmICh0aGlzLl9leGVjdXRpb25MaW5lTnVtYmVyKQorICAgICAgICAgICAgdGhpcy5z
ZXRFeGVjdXRpb25MaW5lKHRoaXMuX2V4ZWN1dGlvbkxpbmVOdW1iZXIpOworCiAgICAgICAgIGlm
ICh0aGlzLl9saW5lTnVtYmVyVG9SZXZlYWwpIHsKICAgICAgICAgICAgIHRoaXMucmV2ZWFsTGlu
ZSh0aGlzLl9saW5lTnVtYmVyVG9SZXZlYWwpOwogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2xp
bmVOdW1iZXJUb1JldmVhbDsKQEAgLTM2MiwxMyArMzY1LDE2IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgc2V0RXhlY3V0aW9uTGluZTogZnVuY3Rpb24obGlu
ZU51bWJlcikKICAgICB7CiAgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkxpbmVOdW1iZXIgPSBsaW5l
TnVtYmVyOwotICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmFkZERlY29yYXRpb24obGluZU51bWJl
ciwgIndlYmtpdC1leGVjdXRpb24tbGluZSIpOwotICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLnJl
dmVhbExpbmUobGluZU51bWJlcik7CisgICAgICAgIGlmICh0aGlzLl90ZXh0Vmlld2VyKSB7Cisg
ICAgICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmFkZERlY29yYXRpb24obGluZU51bWJlciwgIndl
YmtpdC1leGVjdXRpb24tbGluZSIpOworICAgICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5yZXZl
YWxMaW5lKGxpbmVOdW1iZXIpOworICAgICAgICB9CiAgICAgfSwKIAogICAgIGNsZWFyRXhlY3V0
aW9uTGluZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5yZW1v
dmVEZWNvcmF0aW9uKHRoaXMuX2V4ZWN1dGlvbkxpbmVOdW1iZXIsICJ3ZWJraXQtZXhlY3V0aW9u
LWxpbmUiKTsKKyAgICAgICAgaWYgKHRoaXMuX3RleHRWaWV3ZXIpCisgICAgICAgICAgICB0aGlz
Ll90ZXh0Vmlld2VyLnJlbW92ZURlY29yYXRpb24odGhpcy5fZXhlY3V0aW9uTGluZU51bWJlciwg
IndlYmtpdC1leGVjdXRpb24tbGluZSIpOwogICAgICAgICBkZWxldGUgdGhpcy5fZXhlY3V0aW9u
TGluZU51bWJlcjsKICAgICB9LAogCg==
</data>
<flag name="review"
          id="79548"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>