<?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>56931</bug_id>
          
          <creation_ts>2011-03-23 09:41:07 -0700</creation_ts>
          <short_desc>Web Inspector: fix breakpoints positions in formatted scripts.</short_desc>
          <delta_ts>2011-03-28 05:00:42 -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>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>372204</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-23 09:41:07 -0700</bug_when>
    <thetext>Web Inspector: fix breakpoints positions in formatted scripts.

Add async requestMapping method to SourceFile interface as required for populating breakpoints sidebar pane when in &quot;format all scripts&quot; mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372205</commentid>
    <comment_count>1</comment_count>
      <attachid>86629</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-23 09:41:38 -0700</bug_when>
    <thetext>Created attachment 86629
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373447</commentid>
    <comment_count>2</comment_count>
      <attachid>86629</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-25 05:34:06 -0700</bug_when>
    <thetext>Comment on attachment 86629
Patch.

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

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:276
&gt; +        function loadSnippet(callback)

Can you turn it into a method on the PresentationBreakpoint? We don&apos;t usually set closures as object methods.

&gt; Source/WebCore/inspector/front-end/SourceFile.js:65
&gt; +    requestMapping: function(callback)

It&apos;s not clear from the method name what kind of mapping is requested, consider renaming it to requestPosistionMapping or requestSourceMapping.

Also why is this a request and not a synchronous getter?

&gt; Source/WebCore/inspector/front-end/SourceFile.js:190
&gt; +    this._scripts = scripts;

You lean on the fact that the scripts are sorted, can you use a name reflecting this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374410</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-28 04:57:55 -0700</bug_when>
    <thetext>Committed r82103: &lt;http://trac.webkit.org/changeset/82103&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374412</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-28 05:00:42 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 86629 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86629&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:276
&gt; &gt; +        function loadSnippet(callback)
&gt; 
&gt; Can you turn it into a method on the PresentationBreakpoint? We don&apos;t usually set closures as object methods.

Done.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/SourceFile.js:65
&gt; &gt; +    requestMapping: function(callback)
&gt; 
&gt; It&apos;s not clear from the method name what kind of mapping is requested, consider renaming it to requestPosistionMapping or requestSourceMapping.

Done.

&gt; 
&gt; Also why is this a request and not a synchronous getter?

When we are in formatted scripts mode, we need to format the script to obtain source mapping which is done asynchronously.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/SourceFile.js:190
&gt; &gt; +    this._scripts = scripts;
&gt; 
&gt; You lean on the fact that the scripts are sorted, can you use a name reflecting this?

Done.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86629</attachid>
            <date>2011-03-23 09:41:38 -0700</date>
            <delta_ts>2011-03-25 05:34:06 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18276</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MDZhYTU4Li4wZTg3MGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTEtMDMtMjMgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogZml4IGJyZWFrcG9pbnRzIHBvc2l0aW9ucyBpbiBmb3JtYXR0ZWQgc2NyaXB0cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTMxCisK
KyAgICAgICAgQWRkIGFzeW5jIHJlcXVlc3RNYXBwaW5nIG1ldGhvZCB0byBTb3VyY2VGaWxlIGlu
dGVyZmFjZSBhcyByZXF1aXJlZCBmb3IgcG9wdWxhdGluZworICAgICAgICBicmVha3BvaW50cyBz
aWRlYmFyIHBhbmUgd2hlbiBpbiAiZm9ybWF0IGFsbCBzY3JpcHRzIiBtb2RlLgorCisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLmNv
bnRpbnVlVG9MaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZS5zZXRCcmVha3BvaW50LmRpZFJlcXVlc3RNYXBwaW5nKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5zZXRC
cmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnByb3RvdHlwZS5fYnJlYWtwb2ludEFkZGVkLmRpZFJlcXVlc3RNYXBwaW5nKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fYnJl
YWtwb2ludEFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZS5fYnJlYWtwb2ludEFkZGVkVG9Mb2NhdGlvbi5sb2FkU25pcHBldC5k
aWRSZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRBZGRlZFRvTG9jYXRpb24ubG9hZFNuaXBw
ZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlLl9icmVha3BvaW50QWRkZWRUb0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5zZXQgc2VsZWN0ZWRDYWxsRnJh
bWUuZGlkUmVxdWVzdE1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwucHJvdG90eXBlLnNldCBzZWxlY3RlZENhbGxGcmFtZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRGb3JtYXR0ZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlwZS5mb3JtYXRDb250ZW50LmRpZEZvcm1h
dENodW5rcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlw
ZS5mb3JtYXRDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZp
bGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRmlsZS5wcm90b3R5cGUucmVxdWVz
dE1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZUZpbGUucHJv
dG90eXBlLnJlcXVlc3RNYXBwaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRT
b3VyY2VGaWxlLnByb3RvdHlwZS5fZGlkUmVxdWVzdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBp
bmcucHJvdG90eXBlLnNjcmlwdExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZy5wcm90b3R5cGUuc291cmNlTG9jYXRpb25Ub1Njcmlw
dExvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5n
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5nLnByb3RvdHlw
ZS5zY3JpcHRMb2NhdGlvblRvU291cmNlTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcucHJvdG90eXBlLnNvdXJjZUxvY2F0aW9uVG9TY3JpcHRM
b2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRm9ybWF0dGVkU291cmNlTWFwcGluZy5w
cm90b3R5cGUuX2NvbnZlcnRQb3NpdGlvbik6CisKIDIwMTEtMDMtMjEgIFBhdmVsIFBvZGl2aWxv
diAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBT
ZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwppbmRleCBlNmQ1NmZhLi5h
YTg5ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0xNjYsOSArMTY2LDEy
IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsK
IAogICAgIGNvbnRpbnVlVG9MaW5lOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIp
CiAgICAgewotICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VG
aWxlSWRdLnNvdXJjZUxvY2F0aW9uVG9TY3JpcHRMb2NhdGlvbihsaW5lTnVtYmVyLCAwKTsKLSAg
ICAgICAgaWYgKGxvY2F0aW9uKQorICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0TWFwcGluZyht
YXBwaW5nKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbG9jYXRpb24gPSBtYXBwaW5nLnNv
dXJjZUxvY2F0aW9uVG9TY3JpcHRMb2NhdGlvbihsaW5lTnVtYmVyLCAwKTsKICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNvbnRpbnVlVG9Mb2NhdGlvbihsb2NhdGlvbi5z
Y3JpcHRJZCwgbG9jYXRpb24ubGluZU51bWJlciwgbG9jYXRpb24uY29sdW1uTnVtYmVyKTsKKyAg
ICAgICAgfQorICAgICAgICB0aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VGaWxlSWRdLnJlcXVlc3RN
YXBwaW5nKGRpZFJlcXVlc3RNYXBwaW5nLmJpbmQodGhpcykpOwogICAgIH0sCiAKICAgICBicmVh
a3BvaW50c0ZvclNvdXJjZUZpbGVJZDogZnVuY3Rpb24oc291cmNlRmlsZUlkKQpAQCAtMTkyLDE0
ICsxOTUsMTYgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdmFyIGxvY2F0aW9u
ID0gdGhpcy5fc291cmNlRmlsZXNbc291cmNlRmlsZUlkXS5zb3VyY2VMb2NhdGlvblRvU2NyaXB0
TG9jYXRpb24obGluZU51bWJlciwgMCk7Ci0gICAgICAgIGlmICghbG9jYXRpb24pCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
b2RlbC5zY3JpcHRGb3JTb3VyY2VJRChsb2NhdGlvbi5zY3JpcHRJZCk7Ci0gICAgICAgIGlmIChz
Y3JpcHQuc291cmNlVVJMKQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
c2V0QnJlYWtwb2ludChzY3JpcHQuc291cmNlVVJMLCBsb2NhdGlvbi5saW5lTnVtYmVyLCBsb2Nh
dGlvbi5jb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCwgZGlkU2V0QnJlYWtwb2ludC5i
aW5kKHRoaXMpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTW9kZWwuc2V0QnJlYWtwb2ludEJ5U291cmNlSWQoc2NyaXB0LnNvdXJjZUlELCBsb2NhdGlv
bi5saW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCwg
ZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKKyAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVz
dE1hcHBpbmcobWFwcGluZykKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0g
bWFwcGluZy5zb3VyY2VMb2NhdGlvblRvU2NyaXB0TG9jYXRpb24obGluZU51bWJlciwgMCk7Cisg
ICAgICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0
Rm9yU291cmNlSUQobG9jYXRpb24uc2NyaXB0SWQpOworICAgICAgICAgICAgaWYgKHNjcmlwdC5z
b3VyY2VVUkwpCisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2V0
QnJlYWtwb2ludChzY3JpcHQuc291cmNlVVJMLCBsb2NhdGlvbi5saW5lTnVtYmVyLCBsb2NhdGlv
bi5jb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCwgZGlkU2V0QnJlYWtwb2ludC5iaW5k
KHRoaXMpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNb2RlbC5zZXRCcmVha3BvaW50QnlTb3VyY2VJZChzY3JpcHQuc291cmNlSUQsIGxv
Y2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBlbmFi
bGVkLCBkaWRTZXRCcmVha3BvaW50LmJpbmQodGhpcykpOworICAgICAgICB9CisgICAgICAgIHRo
aXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF0ucmVxdWVzdE1hcHBpbmcoZGlkUmVxdWVzdE1h
cHBpbmcuYmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIHNldEJyZWFrcG9pbnRFbmFibGVkOiBm
dW5jdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIsIGVuYWJsZWQpCkBAIC0yNDAsOSArMjQ1
LDE4IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAg
ZnVuY3Rpb24gZGlkUmVxdWVzdE1hcHBpbmcobWFwcGluZykKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHNjcmlwdExvY2F0aW9uID0gYnJlYWtwb2ludC5sb2NhdGlvbnMubGVuZ3RoID8gYnJl
YWtwb2ludC5sb2NhdGlvbnNbMF0gOiBicmVha3BvaW50OworICAgICAgICAgICAgdmFyIHNvdXJj
ZUxvY2F0aW9uID0gbWFwcGluZy5zY3JpcHRMb2NhdGlvblRvU291cmNlTG9jYXRpb24oc2NyaXB0
TG9jYXRpb24ubGluZU51bWJlciwgc2NyaXB0TG9jYXRpb24uY29sdW1uTnVtYmVyKTsKKyAgICAg
ICAgICAgIHRoaXMuX2JyZWFrcG9pbnRBZGRlZFRvTG9jYXRpb24oYnJlYWtwb2ludCwgc291cmNl
TG9jYXRpb24sIHNvdXJjZUZpbGUpOworICAgICAgICB9CiAgICAgICAgIHZhciBzb3VyY2VGaWxl
ID0gdGhpcy5fc291cmNlRmlsZUZvclNjcmlwdChzY3JpcHQpOwotICAgICAgICB2YXIgbG9jYXRp
b24gPSBicmVha3BvaW50LmxvY2F0aW9ucy5sZW5ndGggPyBicmVha3BvaW50LmxvY2F0aW9uc1sw
XSA6IGJyZWFrcG9pbnQ7Ci0gICAgICAgIHZhciBzb3VyY2VMb2NhdGlvbiA9IHNvdXJjZUZpbGUu
c2NyaXB0TG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uKGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0
aW9uLmNvbHVtbk51bWJlcik7CisgICAgICAgIHNvdXJjZUZpbGUucmVxdWVzdE1hcHBpbmcoZGlk
UmVxdWVzdE1hcHBpbmcuYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIF9icmVha3BvaW50QWRk
ZWRUb0xvY2F0aW9uOiBmdW5jdGlvbihicmVha3BvaW50LCBzb3VyY2VMb2NhdGlvbiwgc291cmNl
RmlsZSkKKyAgICB7CiAgICAgICAgIGlmICh0aGlzLmZpbmRCcmVha3BvaW50KHNvdXJjZUZpbGUu
aWQsIHNvdXJjZUxvY2F0aW9uLmxpbmVOdW1iZXIpKSB7CiAgICAgICAgICAgICAvLyBXZSBjYW4n
dCBzaG93IG1vcmUgdGhhbiBvbmUgYnJlYWtwb2ludCBvbiBhIHNpbmdsZSBzb3VyY2UgZmlsZSBs
aW5lLgogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwucmVtb3ZlQnJlYWtw
b2ludChicmVha3BvaW50LmlkKTsKQEAgLTI1OCwxMCArMjcyLDE3IEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGVuYWJs
ZWQ6IGJyZWFrcG9pbnQuZW5hYmxlZCwKICAgICAgICAgICAgIF9pZDogYnJlYWtwb2ludC5pZAog
ICAgICAgICB9OwotICAgICAgICBpZiAobG9jYXRpb24uc291cmNlSUQpIHsKLSAgICAgICAgICAg
IHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JTb3VyY2VJ
RChsb2NhdGlvbi5zb3VyY2VJRCk7Ci0gICAgICAgICAgICBwcmVzZW50YXRpb25CcmVha3BvaW50
LmxvYWRTbmlwcGV0ID0gc2NyaXB0LnNvdXJjZUxpbmUuYmluZChzY3JpcHQsIGxvY2F0aW9uLmxp
bmVOdW1iZXIpOworCisgICAgICAgIGZ1bmN0aW9uIGxvYWRTbmlwcGV0KGNhbGxiYWNrKQorICAg
ICAgICB7CisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudChtaW1lVHlwZSwg
Y29udGVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGluZUVuZGluZ3Mg
PSBjb250ZW50LmxpbmVFbmRpbmdzKCk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soY29udGVu
dC5zdWJzdHJpbmcobGluZUVuZGluZ3Nbc291cmNlTG9jYXRpb24ubGluZU51bWJlciAtIDFdLCBs
aW5lRW5kaW5nc1tzb3VyY2VMb2NhdGlvbi5saW5lTnVtYmVyXSkpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgc291cmNlRmlsZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudCk7
CiAgICAgICAgIH0KKyAgICAgICAgcHJlc2VudGF0aW9uQnJlYWtwb2ludC5sb2FkU25pcHBldCA9
IGxvYWRTbmlwcGV0OwogCiAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbkJyZWFrcG9pbnRzW2Jy
ZWFrcG9pbnQuaWRdID0gcHJlc2VudGF0aW9uQnJlYWtwb2ludDsKICAgICAgICAgc291cmNlRmls
ZS5icmVha3BvaW50c1tzb3VyY2VMb2NhdGlvbi5saW5lTnVtYmVyXSA9IHByZXNlbnRhdGlvbkJy
ZWFrcG9pbnQ7CkBAIC0zMjUsMTQgKzM0NiwxNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghY2FsbEZyYW1lKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNb2RlbC5zY3JpcHRGb3JTb3VyY2VJRChjYWxsRnJhbWUuc291cmNlSUQpOwotICAgICAg
ICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVGb3JTY3JpcHQoc2NyaXB0KTsKLSAg
ICAgICAgaWYgKHNvdXJjZUZpbGUpIHsKLSAgICAgICAgICAgIHNvdXJjZUZpbGUuZm9yY2VMb2Fk
Q29udGVudChzY3JpcHQpOwotICAgICAgICAgICAgY2FsbEZyYW1lLnNvdXJjZUxvY2F0aW9uID0g
c291cmNlRmlsZS5zY3JpcHRMb2NhdGlvblRvU291cmNlTG9jYXRpb24oY2FsbEZyYW1lLmxpbmUs
IGNhbGxGcmFtZS5jb2x1bW4pOworICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0TWFwcGluZyht
YXBwaW5nKQorICAgICAgICB7CisgICAgICAgICAgICBjYWxsRnJhbWUuc291cmNlTG9jYXRpb24g
PSBtYXBwaW5nLnNjcmlwdExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbihjYWxsRnJhbWUubGluZSwg
Y2FsbEZyYW1lLmNvbHVtbik7CiAgICAgICAgICAgICBjYWxsRnJhbWUuc291cmNlTG9jYXRpb24u
c291cmNlRmlsZUlkID0gc291cmNlRmlsZS5pZDsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2
ZW50cy5DYWxsRnJhbWVTZWxlY3RlZCwgY2FsbEZyYW1lKTsKICAgICAgICAgfQotICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5FdmVudHMuQ2FsbEZyYW1lU2VsZWN0ZWQsIGNhbGxGcmFtZSk7CisgICAgICAg
IHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JTb3VyY2VJ
RChjYWxsRnJhbWUuc291cmNlSUQpOworICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3Nv
dXJjZUZpbGVGb3JTY3JpcHQoc2NyaXB0KTsKKyAgICAgICAgc291cmNlRmlsZS5yZXF1ZXN0TWFw
cGluZyhkaWRSZXF1ZXN0TWFwcGluZy5iaW5kKHRoaXMpKTsKKyAgICAgICAgc291cmNlRmlsZS5m
b3JjZUxvYWRDb250ZW50KHNjcmlwdCk7CiAgICAgfSwKIAogICAgIGdldCBzZWxlY3RlZENhbGxG
cmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdEZvcm1hdHRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0Rm9ybWF0dGVyLmpzCmluZGV4IGZiODA5Y2MuLjJlMTY2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzCkBAIC03
NywxMCArNzcsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgZnVuY3Rpb24gZGlkRm9ybWF0Q2h1bmtzKCkKICAgICAgICAgewogICAgICAgICAg
ICAgdmFyIHJlc3VsdCA9IHRoaXMuX2J1aWxkQ29udGVudEZyb21DaHVua3MoY2h1bmtzKTsKLSAg
ICAgICAgICAgIHZhciBzb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBw
aW5nRm9yRm9ybWF0dGVkU2NyaXB0KHRleHQubGluZUVuZGluZ3MoKSwgcmVzdWx0LnRleHQubGlu
ZUVuZGluZ3MoKSwgcmVzdWx0Lm1hcHBpbmcpOwotICAgICAgICAgICAgdmFyIG9yaWdpbmFsVG9G
b3JtYXR0ZWQgPSBzb3VyY2VNYXBwaW5nLmFjdHVhbExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbi5i
aW5kKHNvdXJjZU1hcHBpbmcpOwotICAgICAgICAgICAgdmFyIGZvcm1hdHRlZFRvT3JpZ2luYWwg
PSBzb3VyY2VNYXBwaW5nLnNvdXJjZUxvY2F0aW9uVG9BY3R1YWxMb2NhdGlvbi5iaW5kKHNvdXJj
ZU1hcHBpbmcpOwotICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0LnRleHQsIG9yaWdpbmFsVG9G
b3JtYXR0ZWQsIGZvcm1hdHRlZFRvT3JpZ2luYWwpOworICAgICAgICAgICAgY2FsbGJhY2socmVz
dWx0LnRleHQsIHJlc3VsdC5tYXBwaW5nKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLl9mb3Jt
YXRDaHVua3MoY2h1bmtzLCAwLCBkaWRGb3JtYXRDaHVua3MuYmluZCh0aGlzKSk7CiAgICAgfSwK
QEAgLTE3OSw0OCArMTc2LDMgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRhc2suY2FsbGJhY2sodGFzay5zb3VyY2UsIHsgb3JpZ2luYWw6IFtd
LCBmb3JtYXR0ZWQ6IFtdIH0pOwogICAgIH0KIH0KLQotCi1XZWJJbnNwZWN0b3IuU291cmNlTWFw
cGluZ0ZvckZvcm1hdHRlZFNjcmlwdCA9IGZ1bmN0aW9uKG9yaWdpbmFsTGluZUVuZGluZ3MsIGZv
cm1hdHRlZExpbmVFbmRpbmdzLCBtYXBwaW5nKQotewotICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VN
YXBwaW5nLmNhbGwodGhpcyk7Ci0gICAgdGhpcy5fb3JpZ2luYWxMaW5lRW5kaW5ncyA9IG9yaWdp
bmFsTGluZUVuZGluZ3M7Ci0gICAgdGhpcy5fZm9ybWF0dGVkTGluZUVuZGluZ3MgPSBmb3JtYXR0
ZWRMaW5lRW5kaW5nczsKLSAgICB0aGlzLl9tYXBwaW5nID0gbWFwcGluZzsKLX0KLQotV2ViSW5z
cGVjdG9yLlNvdXJjZU1hcHBpbmdGb3JGb3JtYXR0ZWRTY3JpcHQucHJvdG90eXBlID0gewotICAg
IGFjdHVhbExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgY29s
dW1uTnVtYmVyKQotICAgIHsKLSAgICAgICAgdmFyIHBvc2l0aW9uID0gV2ViSW5zcGVjdG9yLlNj
cmlwdEZvcm1hdHRlci5sb2NhdGlvblRvUG9zaXRpb24odGhpcy5fb3JpZ2luYWxMaW5lRW5kaW5n
cywgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKLSAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2lu
YWxQb3NpdGlvblRvRm9ybWF0dGVkTG9jYXRpb24ocG9zaXRpb24pOwotICAgIH0sCi0KLSAgICBz
b3VyY2VMb2NhdGlvblRvQWN0dWFsTG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikKLSAgICB7Ci0gICAgICAgIHZhciBmb3JtYXR0ZWRQb3NpdGlvbiA9IFdlYkluc3Bl
Y3Rvci5TY3JpcHRGb3JtYXR0ZXIubG9jYXRpb25Ub1Bvc2l0aW9uKHRoaXMuX2Zvcm1hdHRlZExp
bmVFbmRpbmdzLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwotICAgICAgICB2YXIgcG9zaXRp
b24gPSB0aGlzLl9jb252ZXJ0UG9zaXRpb24odGhpcy5fbWFwcGluZy5mb3JtYXR0ZWQsIHRoaXMu
X21hcHBpbmcub3JpZ2luYWwsIGZvcm1hdHRlZFBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIucG9zaXRpb25Ub0xvY2F0aW9uKHRoaXMuX29yaWdp
bmFsTGluZUVuZGluZ3MsIHBvc2l0aW9uKTsKLSAgICB9LAotCi0gICAgb3JpZ2luYWxQb3NpdGlv
blRvRm9ybWF0dGVkTG9jYXRpb246IGZ1bmN0aW9uKHBvc2l0aW9uKQotICAgIHsKLSAgICAgICAg
dmFyIGZvcm1hdHRlZFBvc2l0aW9uID0gdGhpcy5fY29udmVydFBvc2l0aW9uKHRoaXMuX21hcHBp
bmcub3JpZ2luYWwsIHRoaXMuX21hcHBpbmcuZm9ybWF0dGVkLCBwb3NpdGlvbik7Ci0gICAgICAg
IHZhciBsb2NhdGlvbiA9IFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIucG9zaXRpb25Ub0xv
Y2F0aW9uKHRoaXMuX2Zvcm1hdHRlZExpbmVFbmRpbmdzLCBmb3JtYXR0ZWRQb3NpdGlvbik7Ci0g
ICAgICAgIGxvY2F0aW9uLnBvc2l0aW9uID0gZm9ybWF0dGVkUG9zaXRpb247Ci0gICAgICAgIHJl
dHVybiBsb2NhdGlvbjsKLSAgICB9LAotCi0gICAgX2NvbnZlcnRQb3NpdGlvbjogZnVuY3Rpb24o
cG9zaXRpb25zMSwgcG9zaXRpb25zMiwgcG9zaXRpb24pCi0gICAgewotICAgICAgICB2YXIgaW5k
ZXggPSBwb3NpdGlvbnMxLnVwcGVyQm91bmQocG9zaXRpb24pOwotICAgICAgICB2YXIgcmFuZ2Ux
ID0gcG9zaXRpb25zMVtpbmRleF0gLSBwb3NpdGlvbnMxW2luZGV4IC0gMV07Ci0gICAgICAgIHZh
ciByYW5nZTIgPSBwb3NpdGlvbnMyW2luZGV4XSAtIHBvc2l0aW9uczJbaW5kZXggLSAxXTsKLSAg
ICAgICAgdmFyIHBvc2l0aW9uMiA9IHBvc2l0aW9uczJbaW5kZXggLSAxXTsKLSAgICAgICAgaWYg
KHJhbmdlMSkKLSAgICAgICAgICAgIHBvc2l0aW9uMiArPSBNYXRoLnJvdW5kKChwb3NpdGlvbiAt
IHBvc2l0aW9uczFbaW5kZXggLSAxXSkgKiByYW5nZTIgLyByYW5nZTEpOwotICAgICAgICByZXR1
cm4gcG9zaXRpb24yOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBpbmdGb3JG
b3JtYXR0ZWRTY3JpcHQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Tb3VyY2VN
YXBwaW5nLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU291cmNlRmlsZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlRmlsZS5qcwppbmRleCA0ODg4OWUwLi5mYzNiMmFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzCkBAIC02Miw2ICs2Miwx
MyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRmlsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3JlcXVlc3RDb250ZW50KCk7CiAgICAgfSwKIAorICAgIHJlcXVlc3RNYXBwaW5nOiBmdW5jdGlv
bihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fbWFwcGluZykKKyAgICAgICAg
ICAgIHRoaXMuX21hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBpbmcodGhpcy5f
c2NyaXB0cyk7CisgICAgICAgIGNhbGxiYWNrKHRoaXMuX21hcHBpbmcpOworICAgIH0sCisKICAg
ICBmb3JjZUxvYWRDb250ZW50OiBmdW5jdGlvbihzY3JpcHQpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX2hhc1BlbmRpbmdSZXNvdXJjZSgpKQpAQCAtOTMsMjMgKzEwMCw2IEBAIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGaWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RD
b250ZW50KCk7CiAgICAgfSwKIAotICAgIHNjcmlwdExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbjog
ZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHsgbGluZU51bWJlcjogbGluZU51bWJlciwgY29sdW1uTnVtYmVyOiBjb2x1bW5OdW1iZXIgfTsK
LSAgICB9LAotCi0gICAgc291cmNlTG9jYXRpb25Ub1NjcmlwdExvY2F0aW9uOiBmdW5jdGlvbihs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCi0gICAgewotICAgICAgICB2YXIgY2xvc2VzdFNjcmlw
dCA9IHRoaXMuX3NjcmlwdHNbMF07Ci0gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdGhpcy5f
c2NyaXB0cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgc2NyaXB0ID0gdGhpcy5fc2NyaXB0
c1tpXTsKLSAgICAgICAgICAgIGlmIChzY3JpcHQubGluZU9mZnNldCA+IGxpbmVOdW1iZXIgfHwg
KHNjcmlwdC5saW5lT2Zmc2V0ID09PSBsaW5lTnVtYmVyICYmIHNjcmlwdC5jb2x1bW5PZmZzZXQg
PiBjb2x1bW5OdW1iZXIpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2xv
c2VzdFNjcmlwdCA9IHNjcmlwdDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4geyBzY3JpcHRJ
ZDogY2xvc2VzdFNjcmlwdC5zb3VyY2VJRCwgbGluZU51bWJlcjogbGluZU51bWJlciwgY29sdW1u
TnVtYmVyOiBjb2x1bW5OdW1iZXIgfTsKLSAgICB9LAotCiAgICAgX3JlcXVlc3RDb250ZW50OiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fY29udGVudFJlcXVlc3RlZCkKQEAg
LTE3MywzMyArMTYzLDg2IEBAIFdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRTb3VyY2VGaWxlID0gZnVu
Y3Rpb24oc291cmNlRmlsZUlkLCBzY3JpcHQsIGNvbnRlbnRDaGFuZ2VkCiB9CiAKIFdlYkluc3Bl
Y3Rvci5Gb3JtYXR0ZWRTb3VyY2VGaWxlLnByb3RvdHlwZSA9IHsKLSAgICBzY3JpcHRMb2NhdGlv
blRvU291cmNlTG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKLSAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiB0aGlzIG1ldGhvZCBzaG91bGQgZm9yY2UgY29udGVudCBm
b3JtYXR0aW5nIHRvIG9idGFpbiB0aGUgbWFwcGluZy4KLSAgICAgICAgaWYgKCF0aGlzLl9vcmln
aW5hbFRvRm9ybWF0dGVkKQotICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Tb3VyY2VG
aWxlLnByb3RvdHlwZS5zY3JpcHRMb2NhdGlvblRvU291cmNlTG9jYXRpb24uY2FsbCh0aGlzLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwotICAgICAgICByZXR1cm4gdGhpcy5fb3JpZ2luYWxU
b0Zvcm1hdHRlZChsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwotICAgIH0sCi0KLSAgICBzb3Vy
Y2VMb2NhdGlvblRvU2NyaXB0TG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKKyAgICByZXF1ZXN0TWFwcGluZzogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewotICAg
ICAgICAvLyBGSVhNRTogdGhpcyBtZXRob2Qgc2hvdWxkIGZvcmNlIGNvbnRlbnQgZm9ybWF0dGlu
ZyB0byBvYnRhaW4gdGhlIG1hcHBpbmcuCi0gICAgICAgIGlmICghdGhpcy5fZm9ybWF0dGVkVG9P
cmlnaW5hbCkKLSAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuU291cmNlRmlsZS5wcm90
b3R5cGUuc291cmNlTG9jYXRpb25Ub1NjcmlwdExvY2F0aW9uLmNhbGwodGhpcywgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKTsKLSAgICAgICAgdmFyIGxvY2F0aW9uID0gdGhpcy5fZm9ybWF0dGVk
VG9PcmlnaW5hbChsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwotICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlNvdXJjZUZpbGUucHJvdG90eXBlLnNvdXJjZUxvY2F0aW9uVG9TY3JpcHRMb2Nh
dGlvbi5jYWxsKHRoaXMsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJl
cik7CisgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50KCkKKyAgICAgICAgeworICAg
ICAgICAgICAgY2FsbGJhY2sodGhpcy5fbWFwcGluZyk7CisgICAgICAgIH0KKyAgICAgICAgdGhp
cy5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudC5iaW5kKHRoaXMpKTsKICAgICB9LAog
CiAgICAgX2RpZFJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihtaW1lVHlwZSwgdGV4dCkKICAgICB7
Ci0gICAgICAgIGZ1bmN0aW9uIGRpZEZvcm1hdENvbnRlbnQodGV4dCwgb3JpZ2luYWxUb0Zvcm1h
dHRlZCwgZm9ybWF0dGVkVG9PcmlnaW5hbCkKKyAgICAgICAgZnVuY3Rpb24gZGlkRm9ybWF0Q29u
dGVudChmb3JtYXR0ZWRUZXh0LCBtYXBwaW5nKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlz
Ll9vcmlnaW5hbFRvRm9ybWF0dGVkID0gb3JpZ2luYWxUb0Zvcm1hdHRlZDsKLSAgICAgICAgICAg
IHRoaXMuX2Zvcm1hdHRlZFRvT3JpZ2luYWwgPSBmb3JtYXR0ZWRUb09yaWdpbmFsOwotICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUucHJvdG90eXBlLl9kaWRSZXF1ZXN0Q29udGVu
dC5jYWxsKHRoaXMsIG1pbWVUeXBlLCB0ZXh0KTsKKyAgICAgICAgICAgIHRoaXMuX21hcHBpbmcg
PSBuZXcgV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcodGhpcy5fc2NyaXB0cywg
dGV4dCwgZm9ybWF0dGVkVGV4dCwgbWFwcGluZyk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
U291cmNlRmlsZS5wcm90b3R5cGUuX2RpZFJlcXVlc3RDb250ZW50LmNhbGwodGhpcywgbWltZVR5
cGUsIGZvcm1hdHRlZFRleHQpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMuX2Zvcm1hdHRlci5m
b3JtYXRDb250ZW50KHRleHQsIHRoaXMuX3NjcmlwdHMsIGRpZEZvcm1hdENvbnRlbnQuYmluZCh0
aGlzKSk7CiAgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuRm9ybWF0dGVkU291cmNlRmlsZS5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUucHJvdG90eXBlOworCitX
ZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZyA9IGZ1bmN0aW9uKHNjcmlwdHMpCit7CisgICAgdGhp
cy5fc2NyaXB0cyA9IHNjcmlwdHM7Cit9CisKK1dlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nLnBy
b3RvdHlwZSA9IHsKKyAgICBzY3JpcHRMb2NhdGlvblRvU291cmNlTG9jYXRpb246IGZ1bmN0aW9u
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAgICB7CisgICAgICAgIHJldHVybiB7IGxpbmVO
dW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVyIH07CisgICAgfSwK
KworICAgIHNvdXJjZUxvY2F0aW9uVG9TY3JpcHRMb2NhdGlvbjogZnVuY3Rpb24obGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKQorICAgIHsKKyAgICAgICAgdmFyIGNsb3Nlc3RTY3JpcHQgPSB0aGlz
Ll9zY3JpcHRzWzBdOworICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHRoaXMuX3NjcmlwdHMu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHNjcmlwdCA9IHRoaXMuX3NjcmlwdHNbaV07Cisg
ICAgICAgICAgICBpZiAoc2NyaXB0LmxpbmVPZmZzZXQgPiBsaW5lTnVtYmVyIHx8IChzY3JpcHQu
bGluZU9mZnNldCA9PT0gbGluZU51bWJlciAmJiBzY3JpcHQuY29sdW1uT2Zmc2V0ID4gY29sdW1u
TnVtYmVyKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNsb3Nlc3RTY3Jp
cHQgPSBzY3JpcHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgc2NyaXB0SWQ6IGNsb3Nl
c3RTY3JpcHQuc291cmNlSUQsIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjog
Y29sdW1uTnVtYmVyIH07CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRm9ybWF0dGVkU291cmNl
TWFwcGluZyA9IGZ1bmN0aW9uKHNjcmlwdHMsIG9yaWdpbmFsVGV4dCwgZm9ybWF0dGVkVGV4dCwg
bWFwcGluZykKK3sKKyAgICBXZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZy5jYWxsKHRoaXMsIHNj
cmlwdHMpOworICAgIHRoaXMuX29yaWdpbmFsTGluZUVuZGluZ3MgPSBvcmlnaW5hbFRleHQubGlu
ZUVuZGluZ3MoKTsKKyAgICB0aGlzLl9mb3JtYXR0ZWRMaW5lRW5kaW5ncyA9IGZvcm1hdHRlZFRl
eHQubGluZUVuZGluZ3MoKTsKKyAgICB0aGlzLl9tYXBwaW5nID0gbWFwcGluZzsKK30KKworV2Vi
SW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0geworICAgIHNjcmlw
dExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQorICAgIHsKKyAgICAgICAgdmFyIG9yaWdpbmFsUG9zaXRpb24gPSBXZWJJbnNwZWN0b3Iu
U2NyaXB0Rm9ybWF0dGVyLmxvY2F0aW9uVG9Qb3NpdGlvbih0aGlzLl9vcmlnaW5hbExpbmVFbmRp
bmdzLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICB2YXIgZm9ybWF0dGVkUG9z
aXRpb24gPSB0aGlzLl9jb252ZXJ0UG9zaXRpb24odGhpcy5fbWFwcGluZy5vcmlnaW5hbCwgdGhp
cy5fbWFwcGluZy5mb3JtYXR0ZWQsIG9yaWdpbmFsUG9zaXRpb24pOworICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wb3NpdGlvblRvTG9jYXRpb24odGhpcy5fZm9y
bWF0dGVkTGluZUVuZGluZ3MsIGZvcm1hdHRlZFBvc2l0aW9uKTsKKyAgICB9LAorCisgICAgc291
cmNlTG9jYXRpb25Ub1NjcmlwdExvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCisgICAgeworICAgICAgICB2YXIgZm9ybWF0dGVkUG9zaXRpb24gPSBXZWJJbnNwZWN0
b3IuU2NyaXB0Rm9ybWF0dGVyLmxvY2F0aW9uVG9Qb3NpdGlvbih0aGlzLl9mb3JtYXR0ZWRMaW5l
RW5kaW5ncywgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKKyAgICAgICAgdmFyIG9yaWdpbmFs
UG9zaXRpb24gPSB0aGlzLl9jb252ZXJ0UG9zaXRpb24odGhpcy5fbWFwcGluZy5mb3JtYXR0ZWQs
IHRoaXMuX21hcHBpbmcub3JpZ2luYWwsIGZvcm1hdHRlZFBvc2l0aW9uKTsKKyAgICAgICAgdmFy
IG9yaWdpbmFsTG9jYXRpb24gPSBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnBvc2l0aW9u
VG9Mb2NhdGlvbih0aGlzLl9vcmlnaW5hbExpbmVFbmRpbmdzLCBvcmlnaW5hbFBvc2l0aW9uKTsK
KyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nLnByb3RvdHlwZS5zb3Vy
Y2VMb2NhdGlvblRvU2NyaXB0TG9jYXRpb24uY2FsbCh0aGlzLCBvcmlnaW5hbExvY2F0aW9uLmxp
bmVOdW1iZXIsIG9yaWdpbmFsTG9jYXRpb24uY29sdW1uTnVtYmVyKTsKKyAgICB9LAorCisgICAg
X2NvbnZlcnRQb3NpdGlvbjogZnVuY3Rpb24ocG9zaXRpb25zMSwgcG9zaXRpb25zMiwgcG9zaXRp
b24pCisgICAgeworICAgICAgICB2YXIgaW5kZXggPSBwb3NpdGlvbnMxLnVwcGVyQm91bmQocG9z
aXRpb24pOworICAgICAgICB2YXIgcmFuZ2UxID0gcG9zaXRpb25zMVtpbmRleF0gLSBwb3NpdGlv
bnMxW2luZGV4IC0gMV07CisgICAgICAgIHZhciByYW5nZTIgPSBwb3NpdGlvbnMyW2luZGV4XSAt
IHBvc2l0aW9uczJbaW5kZXggLSAxXTsKKyAgICAgICAgdmFyIHBvc2l0aW9uMiA9IHBvc2l0aW9u
czJbaW5kZXggLSAxXTsKKyAgICAgICAgaWYgKHJhbmdlMSkKKyAgICAgICAgICAgIHBvc2l0aW9u
MiArPSBNYXRoLnJvdW5kKChwb3NpdGlvbiAtIHBvc2l0aW9uczFbaW5kZXggLSAxXSkgKiByYW5n
ZTIgLyByYW5nZTEpOworICAgICAgICByZXR1cm4gcG9zaXRpb24yOworICAgIH0KK30KKworV2Vi
SW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nLnByb3RvdHlwZTsK
</data>
<flag name="review"
          id="78932"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>