<?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>54195</bug_id>
          
          <creation_ts>2011-02-10 05:28:03 -0800</creation_ts>
          <short_desc>Web Inspector: refactoring, extract SourceMapping from SourceFrameContent</short_desc>
          <delta_ts>2011-02-14 06:06:58 -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>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <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>348979</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-10 05:28:03 -0800</bug_when>
    <thetext>Web Inspector: refactoring, extract SourceMapping from SourceFrameContent.
This will allow supporting JS compiler source mappings without changing SourceFrameContent or SourceFrame code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348980</commentid>
    <comment_count>1</comment_count>
      <attachid>81957</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-10 05:31:42 -0800</bug_when>
    <thetext>Created attachment 81957
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349693</commentid>
    <comment_count>2</comment_count>
      <attachid>81957</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-02-11 02:04:48 -0800</bug_when>
    <thetext>Comment on attachment 81957
Patch.

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

&gt; Source/WebCore/inspector/front-end/ScriptFormatter.js:200
&gt; +    fromScriptLocation: function(lineNumber, columnNumber)

The method name is confusing, should be something like originalToFormattedLocation

&gt; Source/WebCore/inspector/front-end/ScriptFormatter.js:206
&gt; +    toScriptLocation: function(lineNumber, columnNumber)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350621</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-14 06:06:58 -0800</bug_when>
    <thetext>Committed r78472: &lt;http://trac.webkit.org/changeset/78472&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81957</attachid>
            <date>2011-02-10 05:31:42 -0800</date>
            <delta_ts>2011-02-11 02:04:48 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>26281</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZDZlMDM5Li4xMjVmYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTEtMDItMTAgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogcmVmYWN0b3JpbmcsIGV4dHJhY3QgU291cmNlTWFwcGluZyBmcm9tIFNvdXJjZUZy
YW1lQ29udGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU0MTk1CisKKyAgICAgICAgQWRkIFNvdXJjZU1hcHBpbmcgaW50ZXJmYWNlIHdpdGggdHdv
IGltcGxlbWVudGF0aW9ucyAtIElkZW50aWNhbFNvdXJjZU1hcHBpbmcgYW5kIFNvdXJjZU1hcHBp
bmdGb3JGb3JtYXR0ZWRTY3JpcHQuCisgICAgICAgIFJld3JpdGUgU291cmNlRnJhbWVDb250ZW50
IGJhc2VkIG9uIFNvdXJjZU1hcHBpbmcuIE1ha2UgU291cmNlRnJhbWUgdW5hd2FyZSBvZiBzb3Vy
Y2UgbWFwcGluZyBkZXRhaWxzLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJv
dmlkZXJGb3JSZXNvdXJjZS5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNjcmlwdEZvcm1hdHRlci5sb2NhdGlvblRvUG9zaXRpb24pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wb3NpdGlvblRvTG9jYXRpb24pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wcm90b3R5cGUuZm9ybWF0Q29udGVudC5kaWRGb3Jt
YXRDaHVua3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wcm90b3R5
cGUuZm9ybWF0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVy
LnByb3RvdHlwZS5fc3BsaXRDb250ZW50SW50b0NodW5rcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU291cmNlTWFwcGluZ0ZvckZvcm1hdHRlZFNjcmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU291cmNlTWFwcGluZ0ZvckZvcm1hdHRlZFNjcmlwdC5wcm90b3R5cGUuZnJvbVNjcmlwdExv
Y2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nRm9yRm9ybWF0dGVk
U2NyaXB0LnByb3RvdHlwZS50b1NjcmlwdExvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Tb3VyY2VNYXBwaW5nRm9yRm9ybWF0dGVkU2NyaXB0LnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0
aW9uVG9Gb3JtYXR0ZWRMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlTWFw
cGluZ0ZvckZvcm1hdHRlZFNjcmlwdC5wcm90b3R5cGUuX2NvbnZlcnRQb3NpdGlvbik6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JTY3JpcHQucHJvdG90eXBlLnJl
cXVlc3RDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1l
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fY3JlYXRl
VGV4dFZpZXdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBl
Ll9zaG91bGREaXNwbGF5QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNl
RnJhbWUucHJvdG90eXBlLnNldEV4ZWN1dGlvbkxpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNvdXJjZUZyYW1lLnByb3RvdHlwZS5jbGVhckV4ZWN1dGlvbkxpbmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fYnJlYWtwb2ludEFkZGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuZm9ybWF0U291cmNlLmRpZEZv
cm1hdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLmZvcm1h
dFNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9j
b250aW51ZVRvTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90
eXBlLl9zZXRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5w
cm90b3R5cGUuX2ZpbmRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VG
cmFtZUNvbnRlbnRQcm92aWRlci5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWVDb250ZW50LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291
cmNlRnJhbWVDb250ZW50LnByb3RvdHlwZS5zb3VyY2VGcmFtZUxpbmVOdW1iZXJUb1NjcmlwdExv
Y2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnQucHJvdG90
eXBlLnNjcmlwdExvY2F0aW9uVG9Tb3VyY2VGcmFtZUxpbmVOdW1iZXIpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudC5wcm90b3R5cGUuX3NvdXJjZUlERm9yU291cmNl
RnJhbWVMaW5lTnVtYmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nLnByb3RvdHlwZS5mcm9tU2NyaXB0
TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBpbmcucHJvdG90eXBl
LnRvU2NyaXB0TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLklkZW50aWNhbFNvdXJj
ZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLklkZW50aWNhbFNvdXJjZU1hcHBpbmcu
cHJvdG90eXBlLmZyb21TY3JpcHRMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSWRl
bnRpY2FsU291cmNlTWFwcGluZy5wcm90b3R5cGUudG9TY3JpcHRMb2NhdGlvbik6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanM6CisgICAgICAgIChTdHJpbmcucHJv
dG90eXBlLmxpbmVFbmRpbmdzKToKKwogMjAxMS0wMi0wOSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCmlu
ZGV4IGUzOGNkMGEuLjQ1M2E2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC0xMzcsMTcgKzEzNywyMCBAQCBXZWJJbnNw
ZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JSZXNvdXJjZS5EZWZhdWx0TUlNRVR5
cGVGb3JSZXNvdXJjZVR5cAogV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVy
Rm9yUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihj
YWxsYmFjaykKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoY29udGVudCkK
KyAgICAgICAgZnVuY3Rpb24gY29udGVudExvYWRlZCh0ZXh0KQogICAgICAgICB7CiAgICAgICAg
ICAgICB2YXIgbWltZVR5cGUgPSBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlk
ZXJGb3JSZXNvdXJjZS5EZWZhdWx0TUlNRVR5cGVGb3JSZXNvdXJjZVR5cGVbdGhpcy5fcmVzb3Vy
Y2UudHlwZV0gfHwgdGhpcy5fcmVzb3VyY2UubWltZVR5cGU7Ci0gICAgICAgICAgICBjYWxsYmFj
ayhtaW1lVHlwZSwgY29udGVudCk7CisgICAgICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UudHlw
ZSAhPT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0KSB7CisgICAgICAgICAgICAg
ICAgLy8gV2ViS2l0IGh0bWwgbGV4ZXIgbm9ybWFsaXplcyBsaW5lIGVuZGluZ3MgYW5kIHNjcmlw
dHMgYXJlIHBhc3NlZCB0byBWTSB3aXRoICJcbiIgbGluZSBlbmRpbmdzLgorICAgICAgICAgICAg
ICAgIC8vIEhvd2V2ZXIsIHJlc291cmNlIGNvbnRlbnQgaGFzIG9yaWdpbmFsIGxpbmUgZW5kaW5n
cywgc28gd2UgaGF2ZSB0byBub3JtYWxpemUgbGluZSBlbmRpbmdzIGhlcmUuCisgICAgICAgICAg
ICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvXHJcbi9nLCAiXG4iKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHZhciBzb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5JZGVudGlj
YWxTb3VyY2VNYXBwaW5nKCk7CisgICAgICAgICAgICB2YXIgc2NyaXB0cyA9IFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1vZGVsLnNjcmlwdHNGb3JVUkwodGhpcy5fcmVzb3VyY2UudXJsKTsKKyAgICAg
ICAgICAgIHZhciBzY3JpcHRSYW5nZXMgPSBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLmZp
bmRTY3JpcHRSYW5nZXModGV4dC5saW5lRW5kaW5ncygpLCBzY3JpcHRzKTsKKyAgICAgICAgICAg
IGNhbGxiYWNrKG1pbWVUeXBlLCBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudCh0
ZXh0LCBzb3VyY2VNYXBwaW5nLCBzY3JpcHRSYW5nZXMpKTsKICAgICAgICAgfQogICAgICAgICB0
aGlzLl9yZXNvdXJjZS5yZXF1ZXN0Q29udGVudChjb250ZW50TG9hZGVkLmJpbmQodGhpcykpOwot
ICAgIH0sCi0KLSAgICBzY3JpcHRzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0c0ZvclVSTCh0aGlzLl9yZXNvdXJjZS51
cmwpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRGb3JtYXR0ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdEZvcm1hdHRlci5qcwppbmRleCA1YzAwZTUxLi42NjUyMWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdEZvcm1hdHRlci5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdEZvcm1hdHRl
ci5qcwpAQCAtMzYsNiArMzYsMzggQEAgV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlciA9IGZ1
bmN0aW9uKCkKICAgICB0aGlzLl90YXNrcyA9IFtdOwogfQogCitXZWJJbnNwZWN0b3IuU2NyaXB0
Rm9ybWF0dGVyLmxvY2F0aW9uVG9Qb3NpdGlvbiA9IGZ1bmN0aW9uKGxpbmVFbmRpbmdzLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCit7CisgICAgdmFyIHBvc2l0aW9uID0gbGluZU51bWJlciA/
IGxpbmVFbmRpbmdzW2xpbmVOdW1iZXIgLSAxXSArIDEgOiAwOworICAgIHJldHVybiBwb3NpdGlv
biArIGNvbHVtbk51bWJlcjsKK30KKworV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wb3Np
dGlvblRvTG9jYXRpb24gPSBmdW5jdGlvbihsaW5lRW5kaW5ncywgcG9zaXRpb24pCit7CisgICAg
dmFyIGxvY2F0aW9uID0ge307CisgICAgbG9jYXRpb24ubGluZU51bWJlciA9IGxpbmVFbmRpbmdz
LnVwcGVyQm91bmQocG9zaXRpb24gLSAxKTsKKyAgICBpZiAoIWxvY2F0aW9uLmxpbmVOdW1iZXIp
CisgICAgICAgIGxvY2F0aW9uLmNvbHVtbk51bWJlciA9IHBvc2l0aW9uOworICAgIGVsc2UKKyAg
ICAgICAgbG9jYXRpb24uY29sdW1uTnVtYmVyID0gcG9zaXRpb24gLSBsaW5lRW5kaW5nc1tsb2Nh
dGlvbi5saW5lTnVtYmVyIC0gMV0gLSAxOworICAgIHJldHVybiBsb2NhdGlvbjsKK30KKworV2Vi
SW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5maW5kU2NyaXB0UmFuZ2VzID0gZnVuY3Rpb24obGlu
ZUVuZGluZ3MsIHNjcmlwdHMpCit7CisgICAgdmFyIHNjcmlwdFJhbmdlcyA9IFtdOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgc3Rh
cnQgPSB7IGxpbmVOdW1iZXI6IHNjcmlwdHNbaV0ubGluZU9mZnNldCwgY29sdW1uTnVtYmVyOiBz
Y3JpcHRzW2ldLmNvbHVtbk9mZnNldCB9OworICAgICAgICBzdGFydC5wb3NpdGlvbiA9IFdlYklu
c3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIubG9jYXRpb25Ub1Bvc2l0aW9uKGxpbmVFbmRpbmdzLCBz
dGFydC5saW5lTnVtYmVyLCBzdGFydC5jb2x1bW5OdW1iZXIpOworICAgICAgICB2YXIgZW5kUG9z
aXRpb24gPSBzdGFydC5wb3NpdGlvbiArIHNjcmlwdHNbaV0ubGVuZ3RoOworICAgICAgICB2YXIg
ZW5kID0gV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wb3NpdGlvblRvTG9jYXRpb24obGlu
ZUVuZGluZ3MsIGVuZFBvc2l0aW9uKTsKKyAgICAgICAgZW5kLnBvc2l0aW9uID0gZW5kUG9zaXRp
b247CisgICAgICAgIHNjcmlwdFJhbmdlcy5wdXNoKHsgc3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZCwg
c291cmNlSUQ6IHNjcmlwdHNbaV0uc291cmNlSUQgfSk7CisgICAgfQorICAgIHNjcmlwdFJhbmdl
cy5zb3J0KGZ1bmN0aW9uKHgsIHkpIHsgcmV0dXJuIHguc3RhcnQucG9zaXRpb24gLSB5LnN0YXJ0
LnBvc2l0aW9uOyB9KTsKKyAgICByZXR1cm4gc2NyaXB0UmFuZ2VzOworfQorCiBXZWJJbnNwZWN0
b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlwZSA9IHsKICAgICBmb3JtYXRDb250ZW50OiBmdW5j
dGlvbihjb250ZW50LCBjYWxsYmFjaykKICAgICB7CkBAIC00NCw3ICs3NiwxOCBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVuY3Rpb24gZGlk
Rm9ybWF0Q2h1bmtzKCkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMu
X2J1aWxkQ29udGVudEZyb21DaHVua3MoY2h1bmtzKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKG5l
dyBXZWJJbnNwZWN0b3IuRm9ybWF0dGVkU291cmNlRnJhbWVDb250ZW50KGNvbnRlbnQsIHJlc3Vs
dC50ZXh0LCByZXN1bHQubWFwcGluZykpOworCisgICAgICAgICAgICB2YXIgc291cmNlTWFwcGlu
ZyA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZ0ZvckZvcm1hdHRlZFNjcmlwdChjb250
ZW50LnRleHQubGluZUVuZGluZ3MoKSwgcmVzdWx0LnRleHQubGluZUVuZGluZ3MoKSwgcmVzdWx0
Lm1hcHBpbmcpOworICAgICAgICAgICAgdmFyIGZvcm1hdHRlZFNjcmlwdFJhbmdlcyA9IFtdOwor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb250ZW50LnNjcmlwdFJhbmdlcy5sZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBzY3JpcHRSYW5nZSA9IGNvbnRlbnQuc2Ny
aXB0UmFuZ2VzW2ldOworICAgICAgICAgICAgICAgIGZvcm1hdHRlZFNjcmlwdFJhbmdlID0ge307
CisgICAgICAgICAgICAgICAgZm9ybWF0dGVkU2NyaXB0UmFuZ2Uuc3RhcnQgPSBzb3VyY2VNYXBw
aW5nLm9yaWdpbmFsUG9zaXRpb25Ub0Zvcm1hdHRlZExvY2F0aW9uKHNjcmlwdFJhbmdlLnN0YXJ0
LnBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZWRTY3JpcHRSYW5nZS5lbmQgPSBz
b3VyY2VNYXBwaW5nLm9yaWdpbmFsUG9zaXRpb25Ub0Zvcm1hdHRlZExvY2F0aW9uKHNjcmlwdFJh
bmdlLmVuZC5wb3NpdGlvbik7CisgICAgICAgICAgICAgICAgZm9ybWF0dGVkU2NyaXB0UmFuZ2Uu
c291cmNlSUQgPSBzY3JpcHRSYW5nZS5zb3VyY2VJRDsKKyAgICAgICAgICAgICAgICBmb3JtYXR0
ZWRTY3JpcHRSYW5nZXMucHVzaChmb3JtYXR0ZWRTY3JpcHRSYW5nZSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBjYWxsYmFjayhuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVu
dChyZXN1bHQudGV4dCwgc291cmNlTWFwcGluZywgZm9ybWF0dGVkU2NyaXB0UmFuZ2VzKSk7CiAg
ICAgICAgIH0KICAgICAgICAgdGhpcy5fZm9ybWF0Q2h1bmtzKGNodW5rcywgMCwgZGlkRm9ybWF0
Q2h1bmtzLmJpbmQodGhpcykpOwogICAgIH0sCkBAIC02MywxMSArMTA2LDEyIEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRGb3JtYXR0ZXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgICAgIHZh
ciBjdXJyZW50UG9zaXRpb24gPSAwOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlw
dFJhbmdlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHNjcmlwdFJhbmdlID0gc2Ny
aXB0UmFuZ2VzW2ldOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbiA8IHNjcmlwdFJh
bmdlLnN0YXJ0KQotICAgICAgICAgICAgICAgIGFkZENodW5rKGN1cnJlbnRQb3NpdGlvbiwgc2Ny
aXB0UmFuZ2Uuc3RhcnQsIGZhbHNlKTsKLSAgICAgICAgICAgIGFkZENodW5rKHNjcmlwdFJhbmdl
LnN0YXJ0LCBzY3JpcHRSYW5nZS5lbmQsIHRydWUpOwotICAgICAgICAgICAgY3VycmVudFBvc2l0
aW9uID0gc2NyaXB0UmFuZ2UuZW5kOworICAgICAgICAgICAgdmFyIHN0YXJ0ID0gc2NyaXB0UmFu
Z2VzW2ldLnN0YXJ0LnBvc2l0aW9uOworICAgICAgICAgICAgdmFyIGVuZCA9IHNjcmlwdFJhbmdl
c1tpXS5lbmQucG9zaXRpb247CisgICAgICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9uIDwgc3Rh
cnQpCisgICAgICAgICAgICAgICAgYWRkQ2h1bmsoY3VycmVudFBvc2l0aW9uLCBzdGFydCwgZmFs
c2UpOworICAgICAgICAgICAgYWRkQ2h1bmsoc3RhcnQsIGVuZCwgdHJ1ZSk7CisgICAgICAgICAg
ICBjdXJyZW50UG9zaXRpb24gPSBlbmQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGN1cnJlbnRQ
b3NpdGlvbiA8IHRleHQubGVuZ3RoKQogICAgICAgICAgICAgYWRkQ2h1bmsoY3VycmVudFBvc2l0
aW9uLCB0ZXh0Lmxlbmd0aCwgZmFsc2UpOwpAQCAtMTQyLDMgKzE4Niw0OCBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGFzay5jYWxsYmFjayh0
YXNrLnNvdXJjZSwgeyBvcmlnaW5hbDogW10sIGZvcm1hdHRlZDogW10gfSk7CiAgICAgfQogfQor
CisKK1dlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nRm9yRm9ybWF0dGVkU2NyaXB0ID0gZnVuY3Rp
b24ob3JpZ2luYWxMaW5lRW5kaW5ncywgZm9ybWF0dGVkTGluZUVuZGluZ3MsIG1hcHBpbmcpCit7
CisgICAgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBpbmcuY2FsbCh0aGlzKTsKKyAgICB0aGlzLl9v
cmlnaW5hbExpbmVFbmRpbmdzID0gb3JpZ2luYWxMaW5lRW5kaW5nczsKKyAgICB0aGlzLl9mb3Jt
YXR0ZWRMaW5lRW5kaW5ncyA9IGZvcm1hdHRlZExpbmVFbmRpbmdzOworICAgIHRoaXMuX21hcHBp
bmcgPSBtYXBwaW5nOworfQorCitXZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZ0ZvckZvcm1hdHRl
ZFNjcmlwdC5wcm90b3R5cGUgPSB7CisgICAgZnJvbVNjcmlwdExvY2F0aW9uOiBmdW5jdGlvbihs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgeworICAgICAgICB2YXIgcG9zaXRpb24gPSBX
ZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLmxvY2F0aW9uVG9Qb3NpdGlvbih0aGlzLl9vcmln
aW5hbExpbmVFbmRpbmdzLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICByZXR1
cm4gdGhpcy5vcmlnaW5hbFBvc2l0aW9uVG9Gb3JtYXR0ZWRMb2NhdGlvbihwb3NpdGlvbik7Cisg
ICAgfSwKKworICAgIHRvU2NyaXB0TG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikKKyAgICB7CisgICAgICAgIHZhciBmb3JtYXR0ZWRQb3NpdGlvbiA9IFdlYkluc3Bl
Y3Rvci5TY3JpcHRGb3JtYXR0ZXIubG9jYXRpb25Ub1Bvc2l0aW9uKHRoaXMuX2Zvcm1hdHRlZExp
bmVFbmRpbmdzLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICB2YXIgcG9zaXRp
b24gPSB0aGlzLl9jb252ZXJ0UG9zaXRpb24odGhpcy5fbWFwcGluZy5mb3JtYXR0ZWQsIHRoaXMu
X21hcHBpbmcub3JpZ2luYWwsIGZvcm1hdHRlZFBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIucG9zaXRpb25Ub0xvY2F0aW9uKHRoaXMuX29yaWdp
bmFsTGluZUVuZGluZ3MsIHBvc2l0aW9uKTsKKyAgICB9LAorCisgICAgb3JpZ2luYWxQb3NpdGlv
blRvRm9ybWF0dGVkTG9jYXRpb246IGZ1bmN0aW9uKHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAg
dmFyIGZvcm1hdHRlZFBvc2l0aW9uID0gdGhpcy5fY29udmVydFBvc2l0aW9uKHRoaXMuX21hcHBp
bmcub3JpZ2luYWwsIHRoaXMuX21hcHBpbmcuZm9ybWF0dGVkLCBwb3NpdGlvbik7CisgICAgICAg
IHZhciBsb2NhdGlvbiA9IFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIucG9zaXRpb25Ub0xv
Y2F0aW9uKHRoaXMuX2Zvcm1hdHRlZExpbmVFbmRpbmdzLCBmb3JtYXR0ZWRQb3NpdGlvbik7Cisg
ICAgICAgIGxvY2F0aW9uLnBvc2l0aW9uID0gZm9ybWF0dGVkUG9zaXRpb247CisgICAgICAgIHJl
dHVybiBsb2NhdGlvbjsKKyAgICB9LAorCisgICAgX2NvbnZlcnRQb3NpdGlvbjogZnVuY3Rpb24o
cG9zaXRpb25zMSwgcG9zaXRpb25zMiwgcG9zaXRpb24pCisgICAgeworICAgICAgICB2YXIgaW5k
ZXggPSBwb3NpdGlvbnMxLnVwcGVyQm91bmQocG9zaXRpb24pOworICAgICAgICB2YXIgcmFuZ2Ux
ID0gcG9zaXRpb25zMVtpbmRleF0gLSBwb3NpdGlvbnMxW2luZGV4IC0gMV07CisgICAgICAgIHZh
ciByYW5nZTIgPSBwb3NpdGlvbnMyW2luZGV4XSAtIHBvc2l0aW9uczJbaW5kZXggLSAxXTsKKyAg
ICAgICAgdmFyIHBvc2l0aW9uMiA9IHBvc2l0aW9uczJbaW5kZXggLSAxXTsKKyAgICAgICAgaWYg
KHJhbmdlMSkKKyAgICAgICAgICAgIHBvc2l0aW9uMiArPSBNYXRoLnJvdW5kKChwb3NpdGlvbiAt
IHBvc2l0aW9uczFbaW5kZXggLSAxXSkgKiByYW5nZTIgLyByYW5nZTEpOworICAgICAgICByZXR1
cm4gcG9zaXRpb24yOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBpbmdGb3JG
b3JtYXR0ZWRTY3JpcHQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Tb3VyY2VN
YXBwaW5nLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggMjY0MjkxZi4uNGY1NTZjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTEw
NjIsMjkgKzEwNjIsMjEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVy
Rm9yU2NyaXB0ID0gZnVuY3Rpb24oc2NyaXB0KQogV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29u
dGVudFByb3ZpZGVyRm9yU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICByZXF1ZXN0Q29udGVudDog
ZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewotICAgICAgICBpZiAodGhpcy5fc2NyaXB0LnNvdXJj
ZSkgewotICAgICAgICAgICAgY2FsbGJhY2soInRleHQvamF2YXNjcmlwdCIsIHRoaXMuX3Njcmlw
dC5zb3VyY2UpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gZGlkUmVxdWVzdFNvdXJjZShjb250ZW50KQorICAgICAgICBmdW5jdGlvbiBkaWRSZXF1
ZXN0U291cmNlKHNvdXJjZSkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHNvdXJjZTsKLSAg
ICAgICAgICAgIGlmIChjb250ZW50KSB7CisgICAgICAgICAgICBpZiAoc291cmNlKSB7CiAgICAg
ICAgICAgICAgICAgdmFyIHByZWZpeCA9ICIiOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGhpcy5fc2NyaXB0LnN0YXJ0aW5nTGluZSAtIDE7ICsraSkKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NjcmlwdC5saW5lT2Zmc2V0OyArK2kpCiAg
ICAgICAgICAgICAgICAgICAgIHByZWZpeCArPSAiXG4iOwotICAgICAgICAgICAgICAgIHNvdXJj
ZSA9IHByZWZpeCArIGNvbnRlbnQ7CisgICAgICAgICAgICAgICAgc291cmNlID0gcHJlZml4ICsg
c291cmNlOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgc291cmNlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCI8c291cmNlIGlzIG5vdCBhdmFpbGFibGU+Iik7Ci0gICAgICAg
ICAgICBjYWxsYmFjaygidGV4dC9qYXZhc2NyaXB0Iiwgc291cmNlKTsKKworICAgICAgICAgICAg
dmFyIHNvdXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLklkZW50aWNhbFNvdXJjZU1hcHBp
bmcoKTsKKyAgICAgICAgICAgIHZhciBzY3JpcHRSYW5nZXMgPSBXZWJJbnNwZWN0b3IuU2NyaXB0
Rm9ybWF0dGVyLmZpbmRTY3JpcHRSYW5nZXMoc291cmNlLmxpbmVFbmRpbmdzKCksIFt0aGlzLl9z
Y3JpcHRdKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCJ0ZXh0L2phdmFzY3JpcHQiLCBuZXcgV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudChzb3VyY2UsIHNvdXJjZU1hcHBpbmcsIHNjcmlw
dFJhbmdlcykpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMuX3NjcmlwdC5yZXF1ZXN0U291cmNl
KGRpZFJlcXVlc3RTb3VyY2UuYmluZCh0aGlzKSk7Ci0gICAgfSwKLQotICAgIHNjcmlwdHM6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5fc2NyaXB0XTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNl
RnJhbWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1l
LmpzCmluZGV4IGFlZDFmNTQuLjRkNWJiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwpAQCAtMTcxLDEwICsxNzEsMTAgQEAgV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl9saW5lVG9IaWdobGlnaHQ7CiAgICAgfSwKIAotICAgIF9jcmVhdGVUZXh0Vmlld2VyOiBm
dW5jdGlvbihtaW1lVHlwZSwgdGV4dCkKKyAgICBfY3JlYXRlVGV4dFZpZXdlcjogZnVuY3Rpb24o
bWltZVR5cGUsIGNvbnRlbnQpCiAgICAgewotICAgICAgICB0aGlzLl9jb250ZW50ID0gbmV3IFdl
Ykluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnQodGV4dCwgdGhpcy5fY29udGVudFByb3ZpZGVy
LnNjcmlwdHMoKSk7Ci0gICAgICAgIHRoaXMuX3RleHRNb2RlbC5zZXRUZXh0KG51bGwsIHRleHQp
OworICAgICAgICB0aGlzLl9jb250ZW50ID0gY29udGVudDsKKyAgICAgICAgdGhpcy5fdGV4dE1v
ZGVsLnNldFRleHQobnVsbCwgY29udGVudC50ZXh0KTsKIAogICAgICAgICB0aGlzLl90ZXh0Vmll
d2VyID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyKHRoaXMuX3RleHRNb2RlbCwgV2ViSW5z
cGVjdG9yLnBsYXRmb3JtLCB0aGlzLl91cmwpOwogICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMu
X3RleHRWaWV3ZXIuZWxlbWVudDsKQEAgLTI0MCw3ICsyNDAsNyBAQCBXZWJJbnNwZWN0b3IuU291
cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3VybCkKICAg
ICAgICAgICAgIHJldHVybiB0aGlzLl91cmwgPT09IGJyZWFrcG9pbnQudXJsOwotICAgICAgICB2
YXIgc2NyaXB0cyA9IHRoaXMuX2NvbnRlbnRQcm92aWRlci5zY3JpcHRzKCk7CisgICAgICAgIHZh
ciBzY3JpcHRzID0gdGhpcy5fY29udGVudC5zY3JpcHRSYW5nZXM7CiAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgaWYgKGJyZWFr
cG9pbnQuc291cmNlSUQgPT09IHNjcmlwdHNbaV0uc291cmNlSUQpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0zNjYsNyArMzY2LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZXhlY3V0aW9uTGluZSA9IGxpbmVOdW1iZXI7
CiAgICAgICAgIGlmICghdGhpcy5fdGV4dFZpZXdlcikKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgdmFyIHRleHRWaWV3ZXJMaW5lTnVtYmVyID0gdGhpcy5fb3JpZ2luYWxMb2NhdGlvblRv
VGV4dFZpZXdlckxpbmVOdW1iZXIodGhpcy5fZXhlY3V0aW9uTGluZSAtIDEsIDApOworICAgICAg
ICB2YXIgdGV4dFZpZXdlckxpbmVOdW1iZXIgPSB0aGlzLl9jb250ZW50LnNjcmlwdExvY2F0aW9u
VG9Tb3VyY2VGcmFtZUxpbmVOdW1iZXIodGhpcy5fZXhlY3V0aW9uTGluZSAtIDEsIDApOwogICAg
ICAgICB0aGlzLl90ZXh0Vmlld2VyLmFkZERlY29yYXRpb24odGV4dFZpZXdlckxpbmVOdW1iZXIs
ICJ3ZWJraXQtZXhlY3V0aW9uLWxpbmUiKTsKICAgICB9LAogCkBAIC0zNzQsNyArMzc0LDcgQEAg
V2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlm
ICghdGhpcy5fdGV4dFZpZXdlcikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIHRl
eHRWaWV3ZXJMaW5lTnVtYmVyID0gdGhpcy5fb3JpZ2luYWxMb2NhdGlvblRvVGV4dFZpZXdlckxp
bmVOdW1iZXIodGhpcy5fZXhlY3V0aW9uTGluZSAtIDEsIDApOworICAgICAgICB2YXIgdGV4dFZp
ZXdlckxpbmVOdW1iZXIgPSB0aGlzLl9jb250ZW50LnNjcmlwdExvY2F0aW9uVG9Tb3VyY2VGcmFt
ZUxpbmVOdW1iZXIodGhpcy5fZXhlY3V0aW9uTGluZSAtIDEsIDApOwogICAgICAgICB0aGlzLl90
ZXh0Vmlld2VyLnJlbW92ZURlY29yYXRpb24odGV4dFZpZXdlckxpbmVOdW1iZXIsICJ3ZWJraXQt
ZXhlY3V0aW9uLWxpbmUiKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2V4ZWN1dGlvbkxpbmU7CiAg
ICAgfSwKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90
eXBlID0gewogICAgICAgICB2YXIgcmVzb2x2ZWQgPSBicmVha3BvaW50LmxvY2F0aW9ucy5sZW5n
dGg7CiAgICAgICAgIHZhciBsb2NhdGlvbiA9IHJlc29sdmVkID8gYnJlYWtwb2ludC5sb2NhdGlv
bnNbMF0gOiBicmVha3BvaW50OwogCi0gICAgICAgIHZhciB0ZXh0Vmlld2VyTGluZU51bWJlciA9
IHRoaXMuX29yaWdpbmFsTG9jYXRpb25Ub1RleHRWaWV3ZXJMaW5lTnVtYmVyKGxvY2F0aW9uLmxp
bmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlcik7CisgICAgICAgIHZhciB0ZXh0Vmlld2Vy
TGluZU51bWJlciA9IHRoaXMuX2NvbnRlbnQuc2NyaXB0TG9jYXRpb25Ub1NvdXJjZUZyYW1lTGlu
ZU51bWJlcihsb2NhdGlvbi5saW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwogICAg
ICAgICBpZiAodGV4dFZpZXdlckxpbmVOdW1iZXIgPj0gdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291
bnQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTg1MSw3ICs4NTEsNyBAQCBXZWJJbnNwZWN0
b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9uIGRpZEZvcm1h
dChmb3JtYXR0ZWRDb250ZW50KQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9mb3JtYXR0
ZWRDb250ZW50ID0gZm9ybWF0dGVkQ29udGVudDsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRlbnQg
PSBmb3JtYXR0ZWRDb250ZW50OwogICAgICAgICAgICAgdGhpcy5fdGV4dE1vZGVsLnNldFRleHQo
bnVsbCwgZm9ybWF0dGVkQ29udGVudC50ZXh0KTsKICAgICAgICAgICAgIHRoaXMuX3NldFRleHRW
aWV3ZXJEZWNvcmF0aW9ucygpOwogICAgICAgICB9CkBAIC04NjEsNyArODYxLDcgQEAgV2ViSW5z
cGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogICAgIF9jb250aW51ZVRvTGluZTog
ZnVuY3Rpb24obGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciBsb2NhdGlvbiA9IHRoaXMu
X3RleHRWaWV3ZXJMaW5lTnVtYmVyVG9TY3JpcHRMb2NhdGlvbihsaW5lTnVtYmVyKTsKKyAgICAg
ICAgdmFyIGxvY2F0aW9uID0gdGhpcy5fY29udGVudC5zb3VyY2VGcmFtZUxpbmVOdW1iZXJUb1Nj
cmlwdExvY2F0aW9uKGxpbmVOdW1iZXIpOwogICAgICAgICBpZiAobG9jYXRpb24uc291cmNlSUQp
CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jb250aW51ZVRvTGluZShs
b2NhdGlvbi5zb3VyY2VJRCwgbG9jYXRpb24ubGluZU51bWJlcik7CiAgICAgfSwKQEAgLTg3Niw3
ICs4NzYsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuOyAgLy8gRG8gbm90IHRyaWdnZXIgZWRpdGluZyBmcm9tIGxpbmUgbnVtYmVy
cy4KIAogICAgICAgICB2YXIgbGluZU51bWJlciA9IGxpbmVSb3cubGluZU51bWJlcjsKLSAgICAg
ICAgdmFyIGxvY2F0aW9uID0gdGhpcy5fdGV4dFZpZXdlckxpbmVOdW1iZXJUb1NjcmlwdExvY2F0
aW9uKGxpbmVOdW1iZXIpOworICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9jb250ZW50LnNv
dXJjZUZyYW1lTGluZU51bWJlclRvU2NyaXB0TG9jYXRpb24obGluZU51bWJlcik7CiAgICAgICAg
IGlmICghbG9jYXRpb24uc291cmNlSUQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTg5Nyw3
ICs4OTcsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogCiAgICAg
X3NldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCkK
ICAgICB7Ci0gICAgICAgIHZhciBsb2NhdGlvbiA9IHRoaXMuX3RleHRWaWV3ZXJMaW5lTnVtYmVy
VG9TY3JpcHRMb2NhdGlvbihsaW5lTnVtYmVyKTsKKyAgICAgICAgdmFyIGxvY2F0aW9uID0gdGhp
cy5fY29udGVudC5zb3VyY2VGcmFtZUxpbmVOdW1iZXJUb1NjcmlwdExvY2F0aW9uKGxpbmVOdW1i
ZXIpOwogICAgICAgICBpZiAodGhpcy5fdXJsKQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTW9kZWwuc2V0QnJlYWtwb2ludCh0aGlzLl91cmwsIGxvY2F0aW9uLmxpbmVOdW1iZXIs
IGxvY2F0aW9uLmNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBlbmFibGVkKTsKICAgICAgICAgZWxz
ZSBpZiAobG9jYXRpb24uc291cmNlSUQpCkBAIC05MTMsMjAgKzkxMyw2IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgYnJlYWtwb2lu
dElkID0gdGhpcy5fdGV4dFZpZXdlckxpbmVOdW1iZXJUb0JyZWFrcG9pbnRJZFt0ZXh0Vmlld2Vy
TGluZU51bWJlcl07CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5i
cmVha3BvaW50Rm9ySWQoYnJlYWtwb2ludElkKTsKLSAgICB9LAotCi0gICAgX29yaWdpbmFsTG9j
YXRpb25Ub1RleHRWaWV3ZXJMaW5lTnVtYmVyOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2Zvcm1hdHRlZENvbnRlbnQpCi0gICAg
ICAgICAgICByZXR1cm4gbGluZU51bWJlcjsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdHRl
ZENvbnRlbnQub3JpZ2luYWxMb2NhdGlvblRvRm9ybWF0dGVkTG9jYXRpb24obGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKS5saW5lTnVtYmVyOwotICAgIH0sCi0KLSAgICBfdGV4dFZpZXdlckxpbmVO
dW1iZXJUb1NjcmlwdExvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyKQotICAgIHsKLSAgICAg
ICAgaWYgKCF0aGlzLl9mb3JtYXR0ZWRDb250ZW50KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X2NvbnRlbnQuc2NyaXB0TG9jYXRpb25Gb3JMaW5lTnVtYmVyKGxpbmVOdW1iZXIpOwotICAgICAg
ICByZXR1cm4gdGhpcy5fZm9ybWF0dGVkQ29udGVudC5zY3JpcHRMb2NhdGlvbkZvckZvcm1hdHRl
ZExpbmVOdW1iZXIobGluZU51bWJlcik7CiAgICAgfQogfQogCkBAIC05NDEsMTAgKzkyNyw1IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7CiAg
ICAgcmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgLy8g
U2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKLQotICAgIHNjcmlw
dHM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBi
eSBzdWJjbGFzc2VzLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWVDb250ZW50LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZUNvbnRlbnQuanMKaW5kZXggZTRhNzRlYy4uOTg3
ZjBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3Vy
Y2VGcmFtZUNvbnRlbnQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Tb3VyY2VGcmFtZUNvbnRlbnQuanMKQEAgLTI4LDI0ICsyOCwxMSBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50ID0gZnVuY3Rpb24odGV4
dCwgc2NyaXB0cykKK1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnQgPSBmdW5jdGlvbih0
ZXh0LCBtYXBwaW5nLCBzY3JpcHRSYW5nZXMpCiB7Ci0gICAgaWYgKHNjcmlwdHMubGVuZ3RoICYm
IHNjcmlwdHNbMF0ubGVuZ3RoIDwgdGV4dC5sZW5ndGgpIHsKLSAgICAgICAgLy8gV2ViS2l0IGh0
bWwgbGV4ZXIgbm9ybWFsaXplcyBsaW5lIGVuZGluZ3MgYW5kIHNjcmlwdHMgYXJlIHBhc3NlZCB0
byBWTSB3aXRoICJcbiIgbGluZSBlbmRpbmdzLgotICAgICAgICAvLyBIb3dldmVyLCByZXNvdXJj
ZSBjb250ZW50IGhhcyBvcmlnaW5hbCBsaW5lIGVuZGluZ3MsIHNvIHdlIGhhdmUgdG8gbm9ybWFs
aXplIGxpbmUgZW5kaW5ncyBoZXJlLgotICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cclxu
L2csICJcbiIpOwotICAgIH0KICAgICB0aGlzLl90ZXh0ID0gdGV4dDsKLSAgICB0aGlzLl9saW5l
RW5kaW5ncyA9IHRleHQuZmluZEFsbCgiXG4iKTsKLSAgICB0aGlzLl9saW5lRW5kaW5ncy5wdXNo
KHRleHQubGVuZ3RoKTsKLQotICAgIHRoaXMuX3NjcmlwdFJhbmdlcyA9IFtdOwotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkgewotICAgICAgICB2YXIgc2NyaXB0
ID0gc2NyaXB0c1tpXTsKLSAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMubG9jYXRpb25Ub1Bvc2l0
aW9uKHNjcmlwdC5saW5lT2Zmc2V0LCBzY3JpcHQuY29sdW1uT2Zmc2V0KTsKLSAgICAgICAgdGhp
cy5fc2NyaXB0UmFuZ2VzLnB1c2goeyBzdGFydDogb2Zmc2V0LCBlbmQ6IG9mZnNldCArIHNjcmlw
dC5sZW5ndGgsIHNjcmlwdDogc2NyaXB0IH0pOwotICAgIH0KLSAgICB0aGlzLl9zY3JpcHRSYW5n
ZXMuc29ydChmdW5jdGlvbih4LCB5KSB7IHJldHVybiB4LnN0YXJ0IC0geS5zdGFydDsgfSk7Cisg
ICAgdGhpcy5fbWFwcGluZyA9IG1hcHBpbmc7CisgICAgdGhpcy5fc2NyaXB0UmFuZ2VzID0gc2Ny
aXB0UmFuZ2VzOwogfQogCiBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50LnByb3RvdHlw
ZSA9IHsKQEAgLTU5LDk1ICs0Niw3NyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdFJhbmdlczsKICAgICB9
LAogCi0gICAgbG9jYXRpb25Ub1Bvc2l0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCi0gICAgewotICAgICAgICB2YXIgcG9zaXRpb24gPSBsaW5lTnVtYmVyID8gdGhpcy5f
bGluZUVuZGluZ3NbbGluZU51bWJlciAtIDFdICsgMSA6IDA7Ci0gICAgICAgIHJldHVybiBwb3Np
dGlvbiArIGNvbHVtbk51bWJlcjsKLSAgICB9LAotCi0gICAgcG9zaXRpb25Ub0xvY2F0aW9uOiBm
dW5jdGlvbihwb3NpdGlvbikKKyAgICBzb3VyY2VGcmFtZUxpbmVOdW1iZXJUb1NjcmlwdExvY2F0
aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyKQogICAgIHsKLSAgICAgICAgdmFyIGxvY2F0aW9uID0g
e307Ci0gICAgICAgIGxvY2F0aW9uLmxpbmVOdW1iZXIgPSB0aGlzLl9saW5lRW5kaW5ncy51cHBl
ckJvdW5kKHBvc2l0aW9uIC0gMSk7Ci0gICAgICAgIGlmICghbG9jYXRpb24ubGluZU51bWJlcikK
LSAgICAgICAgICAgIGxvY2F0aW9uLmNvbHVtbk51bWJlciA9IHBvc2l0aW9uOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBsb2NhdGlvbi5jb2x1bW5OdW1iZXIgPSBwb3NpdGlvbiAtIHRoaXMu
X2xpbmVFbmRpbmdzW2xvY2F0aW9uLmxpbmVOdW1iZXIgLSAxXSAtIDE7CisgICAgICAgIC8vIFNj
cmlwdCBjb250ZW50IG1heSBzdGFydCByaWdodCBhZnRlciA8c2NyaXB0PiB0YWcgd2l0aG91dCBu
ZXcgbGluZSAoZS5nLiAiPHNjcmlwdD5mdW5jdGlvbiBmKCkuLi4iKS4KKyAgICAgICAgLy8gSW4g
dGhhdCBjYXNlLCBjb2x1bW4gbnVtYmVyIHNob3VsZCBiZSBlcXVhbCB0byBzY3JpcHQgY29sdW1u
IG9mZnNldC4KKyAgICAgICAgdmFyIGNvbHVtbk51bWJlciA9IDA7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGhpcy5fc2NyaXB0UmFuZ2VzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICB2YXIgc2NyaXB0UmFuZ2UgPSB0aGlzLl9zY3JpcHRSYW5nZXNbaV07CisgICAgICAgICAgICBp
ZiAoc2NyaXB0UmFuZ2Uuc3RhcnQubGluZU51bWJlciA8IGxpbmVOdW1iZXIpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoc2NyaXB0UmFuZ2Uuc3RhcnQubGluZU51
bWJlciA9PT0gbGluZU51bWJlcikKKyAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXIgPSBzY3Jp
cHRSYW5nZS5zdGFydC5jb2x1bW5OdW1iZXI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9tYXBwaW5nLnRvU2NyaXB0TG9jYXRpb24o
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKKyAgICAgICAgbG9jYXRpb24uc291cmNlSUQgPSB0
aGlzLl9zb3VyY2VJREZvclNvdXJjZUZyYW1lTGluZU51bWJlcihsaW5lTnVtYmVyKTsKICAgICAg
ICAgcmV0dXJuIGxvY2F0aW9uOwogICAgIH0sCiAKLSAgICBzY3JpcHRMb2NhdGlvbkZvckxpbmVO
dW1iZXI6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCi0gICAgewotICAgICAgICB2YXIgcmFuZ2UgPSB0
aGlzLmxpbmVOdW1iZXJUb1JhbmdlKGxpbmVOdW1iZXIpOwotICAgICAgICByZXR1cm4gdGhpcy5z
Y3JpcHRMb2NhdGlvbkZvclJhbmdlKHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpOwotICAgIH0sCi0K
LSAgICBzY3JpcHRMb2NhdGlvbkZvclJhbmdlOiBmdW5jdGlvbihzdGFydCwgZW5kKQorICAgIHNj
cmlwdExvY2F0aW9uVG9Tb3VyY2VGcmFtZUxpbmVOdW1iZXI6IGZ1bmN0aW9uKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciBwb3NpdGlvbiA9IHN0YXJ0OwotICAg
ICAgICB2YXIgc2NyaXB0UmFuZ2UgPSB0aGlzLl9pbnRlcnNlY3RpbmdTY3JpcHRSYW5nZShzdGFy
dCwgZW5kKTsKLSAgICAgICAgaWYgKHNjcmlwdFJhbmdlKQotICAgICAgICAgICAgcG9zaXRpb24g
PSBNYXRoLm1heChwb3NpdGlvbiwgc2NyaXB0UmFuZ2Uuc3RhcnQpOwotICAgICAgICB2YXIgc2Ny
aXB0TG9jYXRpb24gPSB0aGlzLnBvc2l0aW9uVG9Mb2NhdGlvbihwb3NpdGlvbik7Ci0gICAgICAg
IGlmIChzY3JpcHRSYW5nZSkKLSAgICAgICAgICAgIHNjcmlwdExvY2F0aW9uLnNvdXJjZUlEID0g
c2NyaXB0UmFuZ2Uuc2NyaXB0LnNvdXJjZUlEOwotICAgICAgICByZXR1cm4gc2NyaXB0TG9jYXRp
b247CisgICAgICAgIHJldHVybiB0aGlzLl9tYXBwaW5nLmZyb21TY3JpcHRMb2NhdGlvbihsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpLmxpbmVOdW1iZXI7CiAgICAgfSwKIAotICAgIGxpbmVOdW1i
ZXJUb1JhbmdlOiBmdW5jdGlvbihsaW5lTnVtYmVyKQotICAgIHsKLSAgICAgICAgdmFyIHByZXZp
b3VzTGluZUVuZCA9IHRoaXMuX2xpbmVFbmRpbmdzW2xpbmVOdW1iZXIgLSAxXSB8fCAwOwotICAg
ICAgICB2YXIgbGluZUVuZCA9IHRoaXMuX2xpbmVFbmRpbmdzW2xpbmVOdW1iZXJdOwotICAgICAg
ICByZXR1cm4geyBzdGFydDogcHJldmlvdXNMaW5lRW5kICsgMSwgZW5kOiBsaW5lRW5kIH07Ci0g
ICAgfSwKLQotICAgIF9pbnRlcnNlY3RpbmdTY3JpcHRSYW5nZTogZnVuY3Rpb24oc3RhcnQsIGVu
ZCkKKyAgICBfc291cmNlSURGb3JTb3VyY2VGcmFtZUxpbmVOdW1iZXI6IGZ1bmN0aW9uKGxpbmVO
dW1iZXIpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NjcmlwdFJh
bmdlcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIHNjcmlwdFJhbmdlID0gdGhpcy5f
c2NyaXB0UmFuZ2VzW2ldOwotICAgICAgICAgICAgaWYgKHN0YXJ0IDwgc2NyaXB0UmFuZ2UuZW5k
ICYmIGVuZCA+IHNjcmlwdFJhbmdlLnN0YXJ0KQotICAgICAgICAgICAgICAgIHJldHVybiBzY3Jp
cHRSYW5nZTsKKyAgICAgICAgICAgIGlmIChsaW5lTnVtYmVyIDwgc2NyaXB0UmFuZ2Uuc3RhcnQu
bGluZU51bWJlcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAobGlu
ZU51bWJlciA+IHNjcmlwdFJhbmdlLmVuZC5saW5lTnVtYmVyKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT09IHNjcmlwdFJhbmdlLmVuZC5s
aW5lTnVtYmVyICYmICFzY3JpcHRSYW5nZS5lbmQuY29sdW1uTnVtYmVyKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIHNjcmlwdFJhbmdlLnNvdXJjZUlEOwog
ICAgICAgICB9CiAgICAgfQogfQogCiAKLVdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRTb3VyY2VGcmFt
ZUNvbnRlbnQgPSBmdW5jdGlvbihvcmlnaW5hbENvbnRlbnQsIHRleHQsIG1hcHBpbmcpCitXZWJJ
bnNwZWN0b3IuU291cmNlTWFwcGluZyA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0aGlzLl9vcmlnaW5h
bENvbnRlbnQgPSBvcmlnaW5hbENvbnRlbnQ7Ci0gICAgdGhpcy5fZm9ybWF0dGVkQ29udGVudCA9
IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50KHRleHQsIFtdKTsKLSAgICB0aGlz
Ll9tYXBwaW5nID0gbWFwcGluZzsKIH0KIAotV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZUZy
YW1lQ29udGVudC5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IHRleHQoKQorV2ViSW5zcGVjdG9yLlNv
dXJjZU1hcHBpbmcucHJvdG90eXBlID0geworICAgIGZyb21TY3JpcHRMb2NhdGlvbjogZnVuY3Rp
b24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X2Zvcm1hdHRlZENvbnRlbnQudGV4dDsKKyAgICAgICAgLy8gU2hvdWxkIGJlIGltcGxlbWVudGVk
IGJ5IHN1YmNsYXNzZXMuCiAgICAgfSwKIAotICAgIG9yaWdpbmFsTG9jYXRpb25Ub0Zvcm1hdHRl
ZExvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgdG9TY3Jp
cHRMb2NhdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKLSAg
ICAgICAgdmFyIG9yaWdpbmFsUG9zaXRpb24gPSB0aGlzLl9vcmlnaW5hbENvbnRlbnQubG9jYXRp
b25Ub1Bvc2l0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Ci0gICAgICAgIHZhciBmb3Jt
YXR0ZWRQb3NpdGlvbiA9IHRoaXMuX2NvbnZlcnRQb3NpdGlvbih0aGlzLl9tYXBwaW5nLm9yaWdp
bmFsLCB0aGlzLl9tYXBwaW5nLmZvcm1hdHRlZCwgb3JpZ2luYWxQb3NpdGlvbik7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9mb3JtYXR0ZWRDb250ZW50LnBvc2l0aW9uVG9Mb2NhdGlvbihmb3JtYXR0
ZWRQb3NpdGlvbik7Ci0gICAgfSwKKyAgICAgICAgLy8gU2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzZXMuCisgICAgfQorfQorCisKK1dlYkluc3BlY3Rvci5JZGVudGljYWxTb3VyY2VN
YXBwaW5nID0gZnVuY3Rpb24oKQoreworICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nLmNh
bGwodGhpcyk7Cit9CiAKLSAgICBzY3JpcHRMb2NhdGlvbkZvckZvcm1hdHRlZExpbmVOdW1iZXI6
IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCitXZWJJbnNwZWN0b3IuSWRlbnRpY2FsU291cmNlTWFwcGlu
Zy5wcm90b3R5cGUgPSB7CisgICAgZnJvbVNjcmlwdExvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewotICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLl9mb3Jt
YXR0ZWRDb250ZW50LmxpbmVOdW1iZXJUb1JhbmdlKGxpbmVOdW1iZXIpOwotICAgICAgICB2YXIg
c3RhcnQgPSB0aGlzLl9jb252ZXJ0UG9zaXRpb24odGhpcy5fbWFwcGluZy5mb3JtYXR0ZWQsIHRo
aXMuX21hcHBpbmcub3JpZ2luYWwsIHJhbmdlLnN0YXJ0KTsKLSAgICAgICAgdmFyIGVuZCA9IHRo
aXMuX2NvbnZlcnRQb3NpdGlvbih0aGlzLl9tYXBwaW5nLmZvcm1hdHRlZCwgdGhpcy5fbWFwcGlu
Zy5vcmlnaW5hbCwgcmFuZ2UuZW5kKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX29yaWdpbmFsQ29u
dGVudC5zY3JpcHRMb2NhdGlvbkZvclJhbmdlKHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4g
eyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlcn07CiAg
ICAgfSwKIAotICAgIF9jb252ZXJ0UG9zaXRpb246IGZ1bmN0aW9uKHBvc2l0aW9uczEsIHBvc2l0
aW9uczIsIHBvc2l0aW9uKQorICAgIHRvU2NyaXB0TG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciBpbmRleCA9IHBvc2l0aW9uczEu
dXBwZXJCb3VuZChwb3NpdGlvbik7Ci0gICAgICAgIHZhciByYW5nZTEgPSBwb3NpdGlvbnMxW2lu
ZGV4XSAtIHBvc2l0aW9uczFbaW5kZXggLSAxXTsKLSAgICAgICAgdmFyIHJhbmdlMiA9IHBvc2l0
aW9uczJbaW5kZXhdIC0gcG9zaXRpb25zMltpbmRleCAtIDFdOwotICAgICAgICB2YXIgcG9zaXRp
b24yID0gcG9zaXRpb25zMltpbmRleCAtIDFdOwotICAgICAgICBpZiAocmFuZ2UxKQotICAgICAg
ICAgICAgcG9zaXRpb24yICs9IE1hdGgucm91bmQoKHBvc2l0aW9uIC0gcG9zaXRpb25zMVtpbmRl
eCAtIDFdKSAqIHJhbmdlMiAvIHJhbmdlMSk7Ci0gICAgICAgIHJldHVybiBwb3NpdGlvbjI7Cisg
ICAgICAgIHJldHVybiB7IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29s
dW1uTnVtYmVyfTsKICAgICB9CiB9CisKK1dlYkluc3BlY3Rvci5JZGVudGljYWxTb3VyY2VNYXBw
aW5nLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZy5wcm90
b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0
aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVz
LmpzCmluZGV4IDVlZDlhOGMuLmIxNzAyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCkBAIC0zOTksNiArMzk5LDE1IEBAIFN0cmluZy5w
cm90b3R5cGUuZmluZEFsbCA9IGZ1bmN0aW9uKHN0cmluZykKICAgICByZXR1cm4gbWF0Y2hlczsK
IH0KIAorU3RyaW5nLnByb3RvdHlwZS5saW5lRW5kaW5ncyA9IGZ1bmN0aW9uKCkKK3sKKyAgICBp
ZiAoIXRoaXMuX2xpbmVFbmRpbmdzKSB7CisgICAgICAgIHRoaXMuX2xpbmVFbmRpbmdzID0gdGhp
cy5maW5kQWxsKCJcbiIpOworICAgICAgICB0aGlzLl9saW5lRW5kaW5ncy5wdXNoKHRoaXMubGVu
Z3RoKTsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMuX2xpbmVFbmRpbmdzOworfQorCiBTdHJpbmcu
cHJvdG90eXBlLmFzUGFyc2VkVVJMID0gZnVuY3Rpb24oKQogewogICAgIC8vIFJlZ0V4cCBncm91
cHM6Cg==
</data>
<flag name="review"
          id="73572"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>