<?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>51478</bug_id>
          
          <creation_ts>2010-12-22 09:59:58 -0800</creation_ts>
          <short_desc>Web Inspector: Inline HTML style property out of sync with element.style in Sidebar</short_desc>
          <delta_ts>2011-01-14 05:06:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</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>325533</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-12-22 09:59:58 -0800</bug_when>
    <thetext>Steps to Reproduce:

  1. Inspect &lt;body&gt; on webkit.org
  2. Add style in element.style &quot;height: 20px&quot; (commit with enter)
  3. Edit inline HTML style property to be &quot;height: 10px&quot; (commit with enter)
    =&gt; element.style in Sidebar was NOT updated

Results:

  Changes made via the sidebar update immediately in the inline style attribute.
  However, changes made via the inline style attribute, are not immediately
  reflected in the style sidebar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326546</commentid>
    <comment_count>1</comment_count>
      <attachid>77409</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-12-24 02:37:31 -0800</bug_when>
    <thetext>Created attachment 77409
[PATCH] Suggested fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326594</commentid>
    <comment_count>2</comment_count>
      <attachid>77409</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-24 05:25:02 -0800</bug_when>
    <thetext>Comment on attachment 77409
[PATCH] Suggested fix

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

&gt; LayoutTests/inspector/elements-delete-inline-style.html:3
&gt; +&lt;script src=&quot;../http/tests/inspector/inspector-test.js&quot;&gt;&lt;/script&gt;

Is it possible to rewrite this test using inspector-test2.js ?

&gt; LayoutTests/inspector/elements-delete-inline-style.html:29
&gt; +function frontend_dumpInspectedStyle(testController)

Method name is a bit misleading since the method does more than just dump style.

&gt; LayoutTests/inspector/elements-delete-inline-style.html:60
&gt; +Tests that the &quot;style&quot; attribute removal results in the Styles sidebar pane update (not a crash).

Description should contain link to the corresponding bug.

&gt; WebCore/ChangeLog:12
&gt; +        (StyledElement::m_inlineStyleDecl), while the code used to rely on it being immutable (hence a crash).

Please add a link to the bug, describing the crash.

&gt; WebCore/inspector/InspectorStyleSheet.h:240
&gt; +    void elementAttributeModified();

For consistency with the rest code I&apos;d rename this method to didModifyElementAtribute</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326610</commentid>
    <comment_count>3</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-12-24 07:47:25 -0800</bug_when>
    <thetext>This issue is somewhat related to bug 50868, in the sense that removing the &quot;style&quot; element property altogether results in a crash with the same stacktrace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326616</commentid>
    <comment_count>4</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-12-24 08:22:50 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 77409 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77409&amp;action=review
&gt; 
&gt; &gt; LayoutTests/inspector/elements-delete-inline-style.html:3
&gt; &gt; +&lt;script src=&quot;../http/tests/inspector/inspector-test.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; Is it possible to rewrite this test using inspector-test2.js ?

Done

&gt; &gt; LayoutTests/inspector/elements-delete-inline-style.html:29
&gt; &gt; +function frontend_dumpInspectedStyle(testController)
&gt; 
&gt; Method name is a bit misleading since the method does more than just dump style.

Done

&gt; &gt; LayoutTests/inspector/elements-delete-inline-style.html:60
&gt; &gt; +Tests that the &quot;style&quot; attribute removal results in the Styles sidebar pane update (not a crash).
&gt; 
&gt; Description should contain link to the corresponding bug.

Done

&gt; &gt; WebCore/ChangeLog:12
&gt; &gt; +        (StyledElement::m_inlineStyleDecl), while the code used to rely on it being immutable (hence a crash).
&gt; 
&gt; Please add a link to the bug, describing the crash.

Added a comment to this bug.

&gt; &gt; WebCore/inspector/InspectorStyleSheet.h:240
&gt; &gt; +    void elementAttributeModified();
&gt; 
&gt; For consistency with the rest code I&apos;d rename this method to didModifyElementAtribute

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326617</commentid>
    <comment_count>5</comment_count>
      <attachid>77415</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-12-24 08:23:39 -0800</bug_when>
    <thetext>Created attachment 77415
[PATCH] Comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326618</commentid>
    <comment_count>6</comment_count>
      <attachid>77415</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-12-24 08:29:39 -0800</bug_when>
    <thetext>Comment on attachment 77415
[PATCH] Comments addressed

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

Thanks!

&gt; LayoutTests/inspector/elements-delete-inline-style.html:54
&gt;  \ No newline at end of file

\ No newline at end of file

&gt; LayoutTests/inspector/elements-tests2.js:127
&gt;  \ No newline at end of file

\ No newline at end of file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326626</commentid>
    <comment_count>7</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-12-24 08:42:09 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
        M       LayoutTests/ChangeLog
        M       LayoutTests/http/tests/inspector/inspector-test2.js
        A       LayoutTests/inspector/elements-delete-inline-style-expected.txt
        A       LayoutTests/inspector/elements-delete-inline-style.html
        A       LayoutTests/inspector/elements-tests2.js
        M       LayoutTests/inspector/styles-add-blank-property.html
        M       WebCore/ChangeLog
        M       WebCore/inspector/InspectorCSSAgent.cpp
        M       WebCore/inspector/InspectorCSSAgent.h
        M       WebCore/inspector/InspectorDOMAgent.cpp
        M       WebCore/inspector/InspectorDOMAgent.h
        M       WebCore/inspector/InspectorStyleSheet.cpp
        M       WebCore/inspector/InspectorStyleSheet.h
        M       WebCore/inspector/front-end/ElementsTreeOutline.js
Committed r74634</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334246</commentid>
    <comment_count>8</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-01-14 05:06:39 -0800</bug_when>
    <thetext>*** Bug 35348 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77409</attachid>
            <date>2010-12-24 02:37:31 -0800</date>
            <delta_ts>2010-12-24 08:23:39 -0800</delta_ts>
            <desc>[PATCH] Suggested fix</desc>
            <filename>inlinestyleremove.patch</filename>
            <type>text/plain</type>
            <size>13755</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDNlNWQwMWE1NDMyNDY0NjkyZTg5OWM0ZTc2OGE1MzA4ZmZiOGY0N2MKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgRGVjIDIz
IDE4OjIxOjI4IDIwMTAgKzAzMDAKCiAgICBGaXggaW5saW5lIHN0eWxlIG91dC1vZi1zeW5jCgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGNjNGE5NDEuLjQ5OWY5OGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0xMi0y
NCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IElubGlu
ZSBIVE1MIHN0eWxlIHByb3BlcnR5IG91dCBvZiBzeW5jIHdpdGggZWxlbWVudC5zdHlsZSBpbiBT
aWRlYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MTQ3OAorCisgICAgICAgICogaW5zcGVjdG9yL2VsZW1lbnRzLWRlbGV0ZS1pbmxpbmUtc3R5bGUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMtZGVsZXRl
LWlubGluZS1zdHlsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzLWFk
ZC1ibGFuay1wcm9wZXJ0eS5odG1sOiBEcml2ZS1ieSByZW1vdmVkIGZyb250ZW5kX2NyZWF0ZUtl
eWJvYXJkRXZlbnQoKQorICAgICAgICAgICh3ZSd2ZSBnb3QgZnJvbnRlbmRfY3JlYXRlS2V5RXZl
bnQoKSBpbiBpbnNwZWN0b3ItdGVzdC5qcykuCisKIDIwMTAtMTItMjMgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgUXQg
c3BlY2lmaWMgZXhwZWN0ZWQgZmlsZSBhZnRlciByNzQ1MzkuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtZGVsZXRlLWlubGluZS1zdHlsZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtZGVsZXRlLWlubGluZS1zdHlsZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzIxYmJiOAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1kZWxldGUtaW5s
aW5lLXN0eWxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACitUZXN0cyB0aGF0IHRoZSAi
c3R5bGUiIGF0dHJpYnV0ZSByZW1vdmFsIHJlc3VsdHMgaW4gdGhlIFN0eWxlcyBzaWRlYmFyIHBh
bmUgdXBkYXRlIChub3QgYSBjcmFzaCkuCisKK0JlZm9yZSBzdHlsZSBwcm9wZXJ0eSByZW1vdmFs
OgorW2V4cGFuZGVkXSBlbGVtZW50LnN0eWxlIHsgKCkKK2NvbG9yOiByZWQ7CisKKz09PT09PT09
IE1hdGNoZWQgQ1NTIFJ1bGVzID09PT09PT09CitbZXhwYW5kZWRdIGRpdiB7ICh1c2VyIGFnZW50
IHN0eWxlc2hlZXQpCitkaXNwbGF5OiBibG9jazsKKworCitBZnRlciBzdHlsZSBwcm9wZXJ0eSBy
ZW1vdmFsOgorW2V4cGFuZGVkXSBlbGVtZW50LnN0eWxlIHsgKCkKKworPT09PT09PT0gTWF0Y2hl
ZCBDU1MgUnVsZXMgPT09PT09PT0KK1tleHBhbmRlZF0gZGl2IHsgKHVzZXIgYWdlbnQgc3R5bGVz
aGVldCkKK2Rpc3BsYXk6IGJsb2NrOworCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2VsZW1lbnRzLWRlbGV0ZS1pbmxpbmUtc3R5bGUuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9lbGVtZW50cy1kZWxldGUtaW5saW5lLXN0eWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMC4uZGQ3NjU4NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9lbGVtZW50cy1kZWxldGUtaW5saW5lLXN0eWxlLmh0bWwKQEAgLTAsMCAr
MSw2NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZWxlbWVudHMt
dGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGRvaXQoKQoreworICAgIGZ1
bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkKKyAgICB7CisgICAgICAgIGR1bXBBcnJheShyZXN1bHQp
OworICAgICAgICBub3RpZnlEb25lKCk7CisgICAgfQorICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0
b3IoImZyb250ZW5kX3J1blRlc3QiLCBjYWxsYmFjayk7Cit9CisKKy8vIEZyb250ZW5kIGZ1bmN0
aW9ucy4KKworZnVuY3Rpb24gZnJvbnRlbmRfcnVuVGVzdCh0ZXN0Q29udHJvbGxlcikKK3sKKyAg
ICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgZnJvbnRlbmRfZXhwYW5kRE9N
U3VidHJlZUFuZFJ1bih0ZXN0Q29udHJvbGxlciwgbnVsbCwgZnJvbnRlbmRfc2VsZWN0SW5zcGVj
dGVkRWxlbWVudCk7Cit9CisKK2Z1bmN0aW9uIGZyb250ZW5kX3NlbGVjdEluc3BlY3RlZEVsZW1l
bnQodGVzdENvbnRyb2xsZXIpCit7CisgICAgZnJvbnRlbmRfc2VsZWN0RWxlbWVudEFuZFJ1bih0
ZXN0Q29udHJvbGxlciwgImluc3BlY3RlZCIsIGZyb250ZW5kX2R1bXBJbnNwZWN0ZWRTdHlsZSk7
Cit9CisKK2Z1bmN0aW9uIGZyb250ZW5kX2R1bXBJbnNwZWN0ZWRTdHlsZSh0ZXN0Q29udHJvbGxl
cikKK3sKKyAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkJlZm9yZSBzdHlsZSBwcm9w
ZXJ0eSByZW1vdmFsOiIpOworICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMgPSB0ZXN0Q29udHJv
bGxlci5yZXN1bHRzLmNvbmNhdChmcm9udGVuZF9nZXRTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1
ZSkpOworCisgICAgdmFyIHRyZWVFbGVtZW50OworICAgIHZhciBpbm5lck1hcHBpbmcgPSBXZWJJ
bnNwZWN0b3IuZG9tQWdlbnQuX2lkVG9ET01Ob2RlOworICAgIGZvciAodmFyIG5vZGVJZCBpbiBp
bm5lck1hcHBpbmcpIHsKKyAgICAgICAgaWYgKGlubmVyTWFwcGluZ1tub2RlSWRdLm5vZGVOYW1l
ID09PSAiRElWIikgeworICAgICAgICAgICAgdHJlZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IucGFu
ZWxzLmVsZW1lbnRzLnRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChpbm5lck1hcHBpbmdbbm9k
ZUlkXSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICB2YXIgc3R5
bGVBdHRyRWxlbWVudCA9IHRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC1hdHRyaWJ1dGUiKVsxXTsKKyAgICB0cmVlRWxlbWVudC5f
c3RhcnRFZGl0aW5nVGFyZ2V0KHN0eWxlQXR0ckVsZW1lbnQpOworICAgIHZhciBlZGl0b3JFbGVt
ZW50ID0gd2luZG93LmdldFNlbGVjdGlvbigpLmFuY2hvck5vZGUucGFyZW50RWxlbWVudDsKKwor
ICAgIC8vIFJlbW92ZSB0aGUgInN0eWxlIiBhdHRyaWJ1dGUgYWx0b2dldGhlciAobm90IGp1c3Qg
Y2xlYXIgaXRzIHZhbHVlKS4KKyAgICBlZGl0b3JFbGVtZW50LnRleHRDb250ZW50ID0gIiI7Cisg
ICAgZWRpdG9yRWxlbWVudC5kaXNwYXRjaEV2ZW50KGZyb250ZW5kX2NyZWF0ZUtleUV2ZW50KCJF
bnRlciIpKTsKKyAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGZ1
bmN0aW9uKCkgeworICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkFmdGVyIHN0
eWxlIHByb3BlcnR5IHJlbW92YWw6Iik7CisgICAgICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMg
PSB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLmNvbmNhdChmcm9udGVuZF9nZXRTZWxlY3RlZEVsZW1l
bnRTdHlsZXModHJ1ZSkpOworICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKHRlc3RD
b250cm9sbGVyLnJlc3VsdHMpOworICAgIH0pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPHA+CitUZXN0cyB0aGF0IHRoZSAic3R5bGUiIGF0dHJp
YnV0ZSByZW1vdmFsIHJlc3VsdHMgaW4gdGhlIFN0eWxlcyBzaWRlYmFyIHBhbmUgdXBkYXRlIChu
b3QgYSBjcmFzaCkuCis8L3A+CisKKzxkaXYgaWQ9Imluc3BlY3RlZCIgc3R5bGU9ImNvbG9yOiBy
ZWQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtYWRkLWJsYW5rLXByb3Bl
cnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWFkZC1ibGFuay1wcm9wZXJ0
eS5odG1sCmluZGV4IGI2YjUwZTYuLmY0OTZiNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMtYWRkLWJsYW5rLXByb3BlcnR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy1hZGQtYmxhbmstcHJvcGVydHkuaHRtbApAQCAtMjcsMTMgKzI3LDYg
QEAgZnVuY3Rpb24gZnJvbnRlbmRfc2VsZWN0SW5zcGVjdGVkRWxlbWVudCh0ZXN0Q29udHJvbGxl
cikKICAgICBmcm9udGVuZF9zZWxlY3RFbGVtZW50QW5kUnVuKHRlc3RDb250cm9sbGVyLCAiaW5z
cGVjdGVkIiwgZnJvbnRlbmRfZHVtcEluc3BlY3RlZFN0eWxlKTsKIH0KIAotZnVuY3Rpb24gZnJv
bnRlbmRfY3JlYXRlS2V5Ym9hcmRFdmVudChldmVudE5hbWUsIGtleUlkZW50aWZpZXIpCi17Ci0g
ICAgdmFyIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJLZXlib2FyZEV2ZW50Iik7Ci0gICAg
ZXZ0LmluaXRLZXlib2FyZEV2ZW50KGV2ZW50TmFtZSwgdHJ1ZSAvKiBjYW4gYnViYmxlICovLCB0
cnVlIC8qIGNhbiBjYW5jZWwgKi8sIG51bGwgLyogdmlldyAqLywga2V5SWRlbnRpZmllciwgIiIp
OwotICAgIHJldHVybiBldnQ7Ci19Ci0KIGZ1bmN0aW9uIGZyb250ZW5kX2R1bXBJbnNwZWN0ZWRT
dHlsZSh0ZXN0Q29udHJvbGxlcikKIHsKICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2go
IkJlZm9yZSBhcHBlbmQ6Iik7CkBAIC00Miw4ICszNSw4IEBAIGZ1bmN0aW9uIGZyb250ZW5kX2R1
bXBJbnNwZWN0ZWRTdHlsZSh0ZXN0Q29udHJvbGxlcikKICAgICB2YXIgc2VjdGlvbiA9IFdlYklu
c3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2lkZWJhclBhbmVzLnN0eWxlcy5zZWN0aW9uc1swXVsx
XTsKICAgICBzZWN0aW9uLmV4cGFuZCgpOwogICAgIHZhciB0cmVlRWxlbWVudCA9IHNlY3Rpb24u
YWRkTmV3QmxhbmtQcm9wZXJ0eSgpOwotICAgIHZhciBlbnRlcktleURvd24gPSBmcm9udGVuZF9j
cmVhdGVLZXlib2FyZEV2ZW50KCJrZXlkb3duIiwgIkVudGVyIik7Ci0gICAgdmFyIGluY3JlbWVu
dEtleURvd24gPSBmcm9udGVuZF9jcmVhdGVLZXlib2FyZEV2ZW50KCJrZXlkb3duIiwgIlVwIik7
CisgICAgdmFyIGVudGVyS2V5RG93biA9IGZyb250ZW5kX2NyZWF0ZUtleUV2ZW50KCJFbnRlciIp
OworICAgIHZhciBpbmNyZW1lbnRLZXlEb3duID0gZnJvbnRlbmRfY3JlYXRlS2V5RXZlbnQoIlVw
Iik7CiAKICAgICBmdW5jdGlvbiByZW1vdmVFbXB0eSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYjVjZTNiLi41ZmIzOWYx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM0IEBACisyMDEwLTEyLTI0ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogSW5saW5lIEhUTUwgc3R5bGUgcHJvcGVydHkgb3V0IG9mIHN5
bmMgd2l0aCBlbGVtZW50LnN0eWxlIGluIFNpZGViYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNDc4CisKKyAgICAgICAgTm93IHRoZSBlbGVtZW50
IGF0dHJpYnV0ZSBtb2RpZmljYXRpb25zIChpbmNsdWRpbmcgInN0eWxlIikgYXJlIHRyYWNrZWQs
IHdoaWNoIHJlc3VsdHMgaW4gdGhlCisgICAgICAgIHNvdXJjZSBvZmZzZXRzIHVwZGF0ZSAoaW4g
dGhlIGJhY2tlbmQpIGFuZCBTdHlsZXMvTWV0cmljcyBwYW5lIHVwZGF0ZXMgKGluIHRoZSBmcm9u
dGVuZCkKKyAgICAgICAgb24gdGhlICJzdHlsZSIgYXR0cmlidXRlIG1vZGlmaWNhdGlvbiB0aHJv
dWdoIHRoZSBFbGVtZW50cyB0cmVlLiBBbHNvLCBpdCBhcHBlYXJzIHRoYXQKKyAgICAgICAgYSBj
b21wbGV0ZSAic3R5bGUiIGF0dHJpYnV0ZSByZW1vdmFsIGRlc3Ryb3lzIHRoZSBpbmxpbmUgc3R5
bGUgZGVjbGFyYXRpb24KKyAgICAgICAgKFN0eWxlZEVsZW1lbnQ6Om1faW5saW5lU3R5bGVEZWNs
KSwgd2hpbGUgdGhlIGNvZGUgdXNlZCB0byByZWx5IG9uIGl0IGJlaW5nIGltbXV0YWJsZSAoaGVu
Y2UgYSBjcmFzaCkuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2VsZW1lbnRzLWRlbGV0ZS1p
bmxpbmUtc3R5bGUuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRNb2RpZnlET01B
dHRyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmRpZE1vZGlmeURPTUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVT
dHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6ZWxlbWVudEF0dHJpYnV0ZU1v
ZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVT
dHlsZTo6dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGU6OnNldFN0eWxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmdldFN0eWxlQXR0cmlidXRlUmFuZ2VzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS5fYXR0cmlidXRlRWRpdGluZ0NvbW1pdHRlZCk6
CisKIDIwMTAtMTItMjMgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMzFkOTUxYS4uN2I3MTMxYSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNTQyLDYgKzU0MiwxOCBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCiAgICAgbV9ub2Rl
VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnJlbW92ZShub2RlKTsKIH0KIAordm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlmICgh
ZWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVl
dDo6aXRlcmF0b3IgaXQgPSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZmluZChlbGVtZW50
KTsKKyAgICBpZiAoaXQgPT0gbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LmVuZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpdC0+c2Vjb25kLT5lbGVtZW50QXR0cmlidXRlTW9kaWZpZWQo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmgg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IGY2N2Q1N2QuLjM4
N2M4OWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtOTcsNiArOTcs
NyBAQCBwcml2YXRlOgogICAgIC8vIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciBpbnRl
cmZhY2UKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRG9jdW1lbnQoRG9jdW1lbnQqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlKik7CisgICAgdmlydHVhbCB2b2lk
IGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCopOwogCiAgICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1f
ZG9tQWdlbnQ7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBj
YmJhNzVmLi5lNDJiZjJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC0xMTMyLDYgKzExMzIsOSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRNb2RpZnlE
T01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFpZCkKICAgICAgICAgcmV0dXJuOwog
CisgICAgaWYgKG1fZG9tTGlzdGVuZXIpCisgICAgICAgIG1fZG9tTGlzdGVuZXItPmRpZE1vZGlm
eURPTUF0dHIoZWxlbWVudCk7CisKICAgICBtX2Zyb250ZW5kLT5hdHRyaWJ1dGVzVXBkYXRlZChp
ZCwgYnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKGVsZW1lbnQpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggNTM0NzA5MC4uZTU3YmNlYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC04NSw2ICs4NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZW1vdmVEb2N1bWVudChEb2N1bWVudCopID0gMDsKICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZW1vdmVET01Ob2RlKE5vZGUqKSA9IDA7CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
TW9kaWZ5RE9NQXR0cihFbGVtZW50KikgPSAwOwogICAgICAgICB9OwogCiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3RvckRPTUFnZW50PiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRl
eCA2ZTNlYmU4Li41ZGEzZTBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcApAQCAtMTA5OSwxMSArMTA5OSwyOCBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShjb25zdCBTdHJpbgog
ewogICAgIEFTU0VSVChlbGVtZW50KTsKICAgICBtX2luc3BlY3RvclN0eWxlID0gSW5zcGVjdG9y
U3R5bGU6OmNyZWF0ZShJbnNwZWN0b3JDU1NJZChpZCwgMCksIGlubGluZVN0eWxlKCksIHRoaXMp
OworICAgIG1fc3R5bGVUZXh0ID0gbV9lbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSA/IG1fZWxl
bWVudC0+Z2V0QXR0cmlidXRlKCJzdHlsZSIpLnN0cmluZygpIDogU3RyaW5nKCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjplbGVtZW50QXR0cmlidXRlTW9k
aWZpZWQoKQoreworICAgIFN0cmluZyBuZXdTdHlsZVRleHQgPSBtX2VsZW1lbnQtPmdldEF0dHJp
YnV0ZSgic3R5bGUiKTsKKyAgICBib29sIHNob3VsZERyb3BTb3VyY2VEYXRhID0gZmFsc2U7Cisg
ICAgaWYgKG1fZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkgJiYgbV9lbGVtZW50LT5zdHlsZSgp
ICE9IG1faW5zcGVjdG9yU3R5bGUtPmNzc1N0eWxlKCkpIHsKKyAgICAgICAgbV9pbnNwZWN0b3JT
dHlsZSA9IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoaWQoKSwgMCksIGlu
bGluZVN0eWxlKCksIHRoaXMpOworICAgICAgICBzaG91bGREcm9wU291cmNlRGF0YSA9IHRydWU7
CisgICAgfQorICAgIGlmIChuZXdTdHlsZVRleHQgIT0gbV9zdHlsZVRleHQpIHsKKyAgICAgICAg
bV9zdHlsZVRleHQgPSBuZXdTdHlsZVRleHQ7CisgICAgICAgIHNob3VsZERyb3BTb3VyY2VEYXRh
ID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHNob3VsZERyb3BTb3VyY2VEYXRhKQorICAgICAgICBt
X3J1bGVTb3VyY2VEYXRhLmNsZWFyKCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldEZv
cklubGluZVN0eWxlOjp0ZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogewotICAgICpyZXN1bHQg
PSBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZSgic3R5bGUiKTsKKyAgICAqcmVzdWx0ID0gbV9zdHls
ZVRleHQ7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMTIsNiArMTEyOSw3IEBAIGJvb2wg
SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRleHQoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUsCiAgICAgQVNTRVJUX1VOVVNFRChzdHlsZSwgc3R5bGUgPT0gaW5s
aW5lU3R5bGUoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgbV9lbGVtZW50LT5z
ZXRBdHRyaWJ1dGUoInN0eWxlIiwgdGV4dCwgZWMpOworICAgIG1fc3R5bGVUZXh0ID0gdGV4dDsK
ICAgICBtX3J1bGVTb3VyY2VEYXRhLmNsZWFyKCk7CiAgICAgcmV0dXJuICFlYzsKIH0KQEAgLTEx
NDksMTMgKzExNjcsMTAgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogSW5zcGVjdG9yU3R5bGVTaGVl
dEZvcklubGluZVN0eWxlOjppbmxpbmVTdHlsZSgpIGNvbnN0CiAKIGJvb2wgSW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlOjpnZXRTdHlsZUF0dHJpYnV0ZVJhbmdlcyhSZWZQdHI8Q1NT
U3R5bGVTb3VyY2VEYXRhPiogcmVzdWx0KQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBzdHlsZUF0dHJpYnV0ZU5hbWUsICgic3R5bGUiKSk7Ci0KICAgICBpZiAoIW1fZWxlbWVu
dC0+aXNTdHlsZWRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmlu
ZyBzdHlsZVRleHQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4obV9lbGVtZW50KS0+Z2V0
QXR0cmlidXRlKHN0eWxlQXR0cmlidXRlTmFtZSk7Ci0gICAgaWYgKHN0eWxlVGV4dC5pc0VtcHR5
KCkpIHsKKyAgICBpZiAobV9zdHlsZVRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICgqcmVzdWx0
KS0+c3R5bGVCb2R5UmFuZ2Uuc3RhcnQgPSAwOwogICAgICAgICAoKnJlc3VsdCktPnN0eWxlQm9k
eVJhbmdlLmVuZCA9IDA7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTE2Myw3ICsxMTc4LDcg
QEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmdldFN0eWxlQXR0cmli
dXRlUmFuZ2VzKFJlZlB0cjxDU1NTdHlsZVMKIAogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbj4gdGVtcERlY2xhcmF0aW9uID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246
OmNyZWF0ZSgpOwogICAgIENTU1BhcnNlciBwOwotICAgIHAucGFyc2VEZWNsYXJhdGlvbih0ZW1w
RGVjbGFyYXRpb24uZ2V0KCksIHN0eWxlVGV4dCwgcmVzdWx0KTsKKyAgICBwLnBhcnNlRGVjbGFy
YXRpb24odGVtcERlY2xhcmF0aW9uLmdldCgpLCBtX3N0eWxlVGV4dCwgcmVzdWx0KTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmlu
ZGV4IGI2NDliZWQuLjJkZTQxODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmgKQEAgLTIzNyw2ICsyMzcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgSW5zcGVjdG9y
U3R5bGVTaGVldEZvcklubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgaWQsIEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKKyAgICB2b2lkIGVsZW1lbnRBdHRyaWJ1dGVNb2Rp
ZmllZCgpOwogICAgIHZpcnR1YWwgYm9vbCB0ZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdDsKICAg
ICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9y
Q1NTSWQmIGlkKSBjb25zdCB7IEFTU0VSVF9VTlVTRUQoaWQsICFpZC5vcmRpbmFsKCkpOyByZXR1
cm4gaW5saW5lU3R5bGUoKTsgfQogCkBAIC0yNTksNiArMjYwLDkgQEAgcHJpdmF0ZToKICAgICBF
bGVtZW50KiBtX2VsZW1lbnQ7CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBtX3J1bGVT
b3VyY2VEYXRhOwogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gbV9pbnNwZWN0b3JTdHlsZTsK
KworICAgIC8vIENvbnRhaW5zICJzdHlsZSIgYXR0cmlidXRlIHZhbHVlIGFuZCBzaG91bGQgYWx3
YXlzIGJlIHVwLXRvLWRhdGUuCisgICAgU3RyaW5nIG1fc3R5bGVUZXh0OwogfTsKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5l
LmpzCmluZGV4IGYyNWY4NTguLjY3ZDM0YjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC0xMDc3LDYgKzEwNzcsNyBAQCBX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
aWYgKCFwYXJzZUVsZW1lbnQuaGFzQXR0cmlidXRlcygpKSB7CiAgICAgICAgICAgICB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAg
ICAgIHRoaXMudHJlZU91dGxpbmUuZm9jdXNlZE5vZGVDaGFuZ2VkKHRydWUpOwogICAgICAgICAg
ICAgbW92ZVRvTmV4dEF0dHJpYnV0ZUlmTmVlZGVkLmNhbGwodGhpcyk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0K
</data>
<flag name="review"
          id="68538"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77415</attachid>
            <date>2010-12-24 08:23:39 -0800</date>
            <delta_ts>2010-12-24 08:29:39 -0800</delta_ts>
            <desc>[PATCH] Comments addressed</desc>
            <filename>inlinestyleremove.patch</filename>
            <type>text/plain</type>
            <size>20468</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDU4MWFiZGQ3Nzc1Mzg0YTRmNDI4MWVjNTlhMTI0NzJjNDk0Y2QwOTAKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgRGVjIDIz
IDE4OjIxOjI4IDIwMTAgKzAzMDAKCiAgICBGaXggaW5saW5lIHN0eWxlIG91dC1vZi1zeW5jCgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDk2ZGE1YWEuLjg5NGU0MWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0xMi0y
NCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5s
aW5lIEhUTUwgc3R5bGUgcHJvcGVydHkgb3V0IG9mIHN5bmMgd2l0aCBlbGVtZW50LnN0eWxlIGlu
IFNpZGViYXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUxNDc4CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIu
anM6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHRzKToKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVzdC5JbnNwZWN0b3JUZXN0
LmNyZWF0ZUtleUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMtZGVsZXRlLWlu
bGluZS1zdHlsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9lbGVt
ZW50cy1kZWxldGUtaW5saW5lLXN0eWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9lbGVtZW50cy10ZXN0czIuanM6IEFkZGVkLgorICAgICAgICAoaW5pdGlhbGl6ZV9FbGVtZW50
VGVzdC5JbnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1YnRyZWUucHJvY2Vzc0NoaWxkcmVuKToKKyAg
ICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3QuSW5zcGVjdG9yVGVzdC5leHBhbmRET01TdWJ0
cmVlKToKKyAgICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3QuSW5zcGVjdG9yVGVzdC5leHBh
bmRET01TdWJ0cmVlQW5kUnVuKToKKyAgICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3QuSW5z
cGVjdG9yVGVzdC5ub2RlRm9ySWQpOgorICAgICAgICAoaW5pdGlhbGl6ZV9FbGVtZW50VGVzdC5J
bnNwZWN0b3JUZXN0LnNlbGVjdEVsZW1lbnRBbmRSdW4pOgorICAgICAgICAoaW5pdGlhbGl6ZV9F
bGVtZW50VGVzdC5JbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMpOgorICAg
ICAgICAoaW5pdGlhbGl6ZV9FbGVtZW50VGVzdC5JbnNwZWN0b3JUZXN0LmdldFNlbGVjdGVkRWxl
bWVudFN0eWxlcyk6CisgICAgICAgIChpbml0aWFsaXplX0VsZW1lbnRUZXN0Lkluc3BlY3RvclRl
c3QuZ2V0RWxlbWVudFN0eWxlUHJvcGVydHlUcmVlSXRlbSk6CisgICAgICAgIChpbml0aWFsaXpl
X0VsZW1lbnRUZXN0Lkluc3BlY3RvclRlc3QuZHVtcFN0eWxlVHJlZU91dGxpbmUpOgorICAgICAg
ICAoaW5pdGlhbGl6ZV9FbGVtZW50VGVzdC5JbnNwZWN0b3JUZXN0LmR1bXBTdHlsZVRyZWVJdGVt
KToKKyAgICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3QpOgorICAgICAgICAqIGluc3BlY3Rv
ci9zdHlsZXMtYWRkLWJsYW5rLXByb3BlcnR5Lmh0bWw6IFJlbW92ZSB1bm5lY2Vzc2FyeSBmdW5j
dGlvbi4KKwogMjAxMC0xMi0yMyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QyLmpzCmluZGV4
IDlhMTMwZWUuLjMwMmNhZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMKQEAgLTU1LDYgKzU1LDE0IEBAIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0ID0gZnVuY3Rpb24odGV4dCkKICAgICB9CiB9CiAKK0luc3BlY3RvclRlc3Qu
YWRkUmVzdWx0cyA9IGZ1bmN0aW9uKHRleHRBcnJheSkKK3sKKyAgICBpZiAoIXRleHRBcnJheSkK
KyAgICAgICAgcmV0dXJuOworICAgIGZvciAodmFyIGkgPSAwLCBzaXplID0gdGV4dEFycmF5Lmxl
bmd0aDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQodGV4
dEFycmF5W2ldKTsKK30KKwogSW5zcGVjdG9yVGVzdC5hZGRPYmplY3QgPSBmdW5jdGlvbihvYmpl
Y3QsIG5vbmRldGVybWluaXN0aWNQcm9wcywgcHJlZml4LCBmaXJzdExpbmVQcmVmaXgpCiB7CiAg
ICAgcHJlZml4ID0gcHJlZml4IHx8ICIiOwpAQCAtMTE1LDYgKzEyMywxMyBAQCBJbnNwZWN0b3JU
ZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMgPSBmdW5jdGlvbihjYWxsYmFjaykKICAgICBX
ZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIucHJvdG90eXBlLnJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXMoY2FsbGJhY2spOwogfQogCitJbnNwZWN0b3JUZXN0LmNyZWF0ZUtleUV2ZW50ID0gZnVu
Y3Rpb24oa2V5SWRlbnRpZmllcikKK3sKKyAgICB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZl
bnQoIktleWJvYXJkRXZlbnQiKTsKKyAgICBldnQuaW5pdEtleWJvYXJkRXZlbnQoImtleWRvd24i
LCB0cnVlIC8qIGNhbiBidWJibGUgKi8sIHRydWUgLyogY2FuIGNhbmNlbCAqLywgbnVsbCAvKiB2
aWV3ICovLCBrZXlJZGVudGlmaWVyLCAiIik7CisgICAgcmV0dXJuIGV2dDsKK30KKwogSW5zcGVj
dG9yVGVzdC5maW5kRE9NTm9kZSA9IGZ1bmN0aW9uKHJvb3QsIGZpbHRlciwgY2FsbGJhY2spCiB7
CiAgICAgdmFyIGZvdW5kID0gZmFsc2U7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZWxlbWVudHMtZGVsZXRlLWlubGluZS1zdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZWxlbWVudHMtZGVsZXRlLWlubGluZS1zdHlsZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDk2M2RhMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy1kZWxldGUtaW5saW5lLXN0eWxlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACitUZXN0cyB0aGF0IHRoZSAic3R5bGUiIGF0dHJp
YnV0ZSByZW1vdmFsIHJlc3VsdHMgaW4gdGhlIFN0eWxlcyBzaWRlYmFyIHBhbmUgdXBkYXRlIChu
b3QgYSBjcmFzaCkuIEJ1ZyA1MTQ3OAorCitCZWZvcmUgc3R5bGUgcHJvcGVydHkgcmVtb3ZhbDoK
K1tleHBhbmRlZF0gZWxlbWVudC5zdHlsZSB7ICgpCitjb2xvcjogcmVkOworCis9PT09PT09PSBN
YXRjaGVkIENTUyBSdWxlcyA9PT09PT09PQorW2V4cGFuZGVkXSBkaXYgeyAodXNlciBhZ2VudCBz
dHlsZXNoZWV0KQorZGlzcGxheTogYmxvY2s7CisKKworQWZ0ZXIgc3R5bGUgcHJvcGVydHkgcmVt
b3ZhbDoKK1tleHBhbmRlZF0gZWxlbWVudC5zdHlsZSB7ICgpCisKKz09PT09PT09IE1hdGNoZWQg
Q1NTIFJ1bGVzID09PT09PT09CitbZXhwYW5kZWRdIGRpdiB7ICh1c2VyIGFnZW50IHN0eWxlc2hl
ZXQpCitkaXNwbGF5OiBibG9jazsKKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9lbGVtZW50cy1kZWxldGUtaW5saW5lLXN0eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMtZGVsZXRlLWlubGluZS1zdHlsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAuLjk1MGU3M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZWxlbWVudHMtZGVsZXRlLWlubGluZS1zdHlsZS5odG1sCkBAIC0wLDAgKzEs
NTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJlbGVtZW50cy10
ZXN0czIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
ZnVuY3Rpb24gc2VsZWN0SW5zcGVjdGVkRWxlbWVudCgpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LnNlbGVjdEVsZW1lbnRBbmRSdW4oImluc3BlY3RlZCIsIGV4ZWN1dGVUZXN0KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBleGVjdXRlVGVzdCgpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiQmVmb3JlIHN0eWxlIHByb3BlcnR5IHJlbW92YWw6Iik7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0cyhJbnNwZWN0b3JUZXN0LmdldFNlbGVjdGVkRWxl
bWVudFN0eWxlcyh0cnVlKSk7CisKKyAgICAgICAgdmFyIHRyZWVFbGVtZW50OworICAgICAgICB2
YXIgaW5uZXJNYXBwaW5nID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9pZFRvRE9NTm9kZTsKKyAg
ICAgICAgZm9yICh2YXIgbm9kZUlkIGluIGlubmVyTWFwcGluZykgeworICAgICAgICAgICAgaWYg
KGlubmVyTWFwcGluZ1tub2RlSWRdLm5vZGVOYW1lID09PSAiRElWIikgeworICAgICAgICAgICAg
ICAgIHRyZWVFbGVtZW50ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy50cmVlT3V0bGlu
ZS5maW5kVHJlZUVsZW1lbnQoaW5uZXJNYXBwaW5nW25vZGVJZF0pOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHZhciBzdHlsZUF0dHJF
bGVtZW50ID0gdHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoIndlYmtpdC1odG1sLWF0dHJpYnV0ZSIpWzFdOworICAgICAgICB0cmVlRWxlbWVudC5fc3Rh
cnRFZGl0aW5nVGFyZ2V0KHN0eWxlQXR0ckVsZW1lbnQpOworICAgICAgICB2YXIgZWRpdG9yRWxl
bWVudCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hbmNob3JOb2RlLnBhcmVudEVsZW1lbnQ7CisK
KyAgICAgICAgLy8gUmVtb3ZlIHRoZSAic3R5bGUiIGF0dHJpYnV0ZSBhbHRvZ2V0aGVyIChub3Qg
anVzdCBjbGVhciBpdHMgdmFsdWUpLgorICAgICAgICBlZGl0b3JFbGVtZW50LnRleHRDb250ZW50
ID0gIiI7CisgICAgICAgIGVkaXRvckVsZW1lbnQuZGlzcGF0Y2hFdmVudChJbnNwZWN0b3JUZXN0
LmNyZWF0ZUtleUV2ZW50KCJFbnRlciIpKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRl
clBlbmRpbmdEaXNwYXRjaGVzKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIkFmdGVyIHN0eWxlIHByb3BlcnR5IHJlbW92YWw6Iik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdHMoSW5zcGVjdG9yVGVzdC5nZXRTZWxlY3RlZEVsZW1l
bnRTdHlsZXModHJ1ZSkpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3Qo
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5leHBhbmRET01TdWJ0
cmVlQW5kUnVuKG51bGwsIHNlbGVjdEluc3BlY3RlZEVsZW1lbnQpOworfQorCis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgdGhhdCB0aGUg
InN0eWxlIiBhdHRyaWJ1dGUgcmVtb3ZhbCByZXN1bHRzIGluIHRoZSBTdHlsZXMgc2lkZWJhciBw
YW5lIHVwZGF0ZSAobm90IGEgY3Jhc2gpLiA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MTQ3OCI+QnVnIDUxNDc4PC9hPgorPC9wPgorCis8ZGl2IGlkPSJp
bnNwZWN0ZWQiIHN0eWxlPSJjb2xvcjogcmVkIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZWxlbWVudHMtdGVzdHMyLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRl
c3RzMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42YjEyYTE2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3RzMi5qcwpA
QCAtMCwwICsxLDEyNiBAQAordmFyIGluaXRpYWxpemVfRWxlbWVudFRlc3QgPSBmdW5jdGlvbigp
IHsKKworSW5zcGVjdG9yVGVzdC5leHBhbmRET01TdWJ0cmVlID0gZnVuY3Rpb24obm9kZSkKK3sK
KyAgICBub2RlID0gbm9kZSB8fCBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQ7CisgICAg
ZnVuY3Rpb24gcHJvY2Vzc0NoaWxkcmVuKGNoaWxkcmVuKQorICAgIHsKKyAgICAgICBmb3IgKHZh
ciBpID0gMDsgY2hpbGRyZW4gJiYgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKQorICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1YnRyZWUoY2hpbGRyZW5baV0pOworICAgIH0KKyAg
ICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZ2V0Q2hpbGROb2Rlc0FzeW5jKG5vZGUsIHByb2Nlc3ND
aGlsZHJlbik7Cit9OworCitJbnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1YnRyZWVBbmRSdW4gPSBm
dW5jdGlvbihub2RlLCBjYWxsYmFjaykKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmV4cGFuZERPTVN1
YnRyZWUobm9kZSk7CisgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVz
KGNhbGxiYWNrKTsKK307CisKK0luc3BlY3RvclRlc3Qubm9kZUZvcklkID0gZnVuY3Rpb24oaWRW
YWx1ZSkKK3sKKyAgICB2YXIgaW5uZXJNYXBwaW5nID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9p
ZFRvRE9NTm9kZTsKKyAgICBmb3IgKHZhciBub2RlSWQgaW4gaW5uZXJNYXBwaW5nKSB7CisgICAg
ICAgIHZhciBub2RlID0gaW5uZXJNYXBwaW5nW25vZGVJZF07CisgICAgICAgIGlmIChub2RlLmdl
dEF0dHJpYnV0ZSgiaWQiKSA9PT0gaWRWYWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBub2RlOwor
ICAgIH0KKyAgICByZXR1cm4gbnVsbDsKK307CisKK0luc3BlY3RvclRlc3Quc2VsZWN0RWxlbWVu
dEFuZFJ1biA9IGZ1bmN0aW9uKGlkVmFsdWUsIGNhbGxiYWNrKQoreworICAgIHZhciBub2RlID0g
SW5zcGVjdG9yVGVzdC5ub2RlRm9ySWQoaWRWYWx1ZSk7CisgICAgaWYgKCFub2RlKSB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFdlYkluc3BlY3Rvci51cGRhdGVGb2N1c2VkTm9kZShub2RlLmlkKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoY2FsbGJhY2spOworfTsKKwor
SW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzID0gZnVuY3Rpb24oKQorewor
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJEZWJ1Z2dlciB3YXMgZW5hYmxlZC4iKTsKKyAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0cyhJbnNwZWN0b3JUZXN0LmdldFNlbGVjdGVkRWxlbWVudFN0eWxlcyhmYWxzZSkpOworfTsK
KworSW5zcGVjdG9yVGVzdC5nZXRTZWxlY3RlZEVsZW1lbnRTdHlsZXMgPSBmdW5jdGlvbihleGNs
dWRlQ29tcHV0ZWQsIGV4Y2x1ZGVNYXRjaGVkKQoreworICAgIHZhciByZXN1bHQgPSBbXTsKKyAg
ICB2YXIgc3R5bGVTZWN0aW9ucyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2lkZWJh
clBhbmVzLnN0eWxlcy5zZWN0aW9uczsKKyAgICBmb3IgKHZhciBwc2V1ZG9JZCBpbiBzdHlsZVNl
Y3Rpb25zKSB7CisgICAgICAgIHZhciBwc2V1ZG9OYW1lID0gV2ViSW5zcGVjdG9yLlN0eWxlc1Np
ZGViYXJQYW5lLlBzZXVkb0lkTmFtZXNbcHNldWRvSWRdOworICAgICAgICB2YXIgc2VjdGlvbnMg
PSBzdHlsZVNlY3Rpb25zW3BzZXVkb0lkXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBz
ZWN0aW9ucy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBzZWN0aW9u
c1tpXTsKKyAgICAgICAgICAgIGlmIChzZWN0aW9uLmNvbXB1dGVkU3R5bGUgJiYgZXhjbHVkZUNv
bXB1dGVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHNlY3Rp
b24ucnVsZSAmJiBleGNsdWRlTWF0Y2hlZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGlmIChzZWN0aW9uLmVsZW1lbnQucHJldmlvdXNTaWJsaW5nICYmIHNlY3Rpb24u
ZWxlbWVudC5wcmV2aW91c1NpYmxpbmcuY2xhc3NOYW1lID09PSAic3R5bGVzLXNpZGViYXItc2Vw
YXJhdG9yIikKKyAgICAgICAgICAgICAgICByZXN1bHQucHVzaCgiPT09PT09PT0gIiArIHNlY3Rp
b24uZWxlbWVudC5wcmV2aW91c1NpYmxpbmcudGV4dENvbnRlbnQgKyAiID09PT09PT09Iik7Cisg
ICAgICAgICAgICByZXN1bHQucHVzaCgoc2VjdGlvbi5leHBhbmRlZCA/ICJbZXhwYW5kZWRdICIg
OiAiW2NvbGxhcHNlZF0gIikgKyBzZWN0aW9uLnRpdGxlRWxlbWVudC50ZXh0Q29udGVudCArICIg
KCIgKyBzZWN0aW9uLnN1YnRpdGxlQXNUZXh0Rm9yVGVzdCArICIpIik7CisgICAgICAgICAgICBz
ZWN0aW9uLmV4cGFuZCgpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGVUcmVl
T3V0bGluZShzZWN0aW9uLnByb3BlcnRpZXNUcmVlT3V0bGluZSwgcmVzdWx0KTsKKyAgICAgICAg
ICAgIHJlc3VsdC5wdXNoKCIiKTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQucHVzaCgiIik7
CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9OworCisvLyBGSVhNRTogdGhpcyByZXR1cm5z
IHRoZSBmaXJzdCB0cmVlIGl0ZW0gZm91bmQgKG1heSBmYWlsIGZvciBzYW1lLW5hbWVkIHByb3Bl
cnRpZXMgaW4gYSBzdHlsZSkuCitJbnNwZWN0b3JUZXN0LmdldEVsZW1lbnRTdHlsZVByb3BlcnR5
VHJlZUl0ZW0gPSBmdW5jdGlvbihwcm9wZXJ0eU5hbWUpCit7CisgICAgdmFyIHN0eWxlU2VjdGlv
bnMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGViYXJQYW5lcy5zdHlsZXMuc2Vj
dGlvbnNbMF07CisgICAgdmFyIGVsZW1lbnRTdHlsZVNlY3Rpb24gPSBzdHlsZVNlY3Rpb25zWzFd
OworICAgIHZhciBvdXRsaW5lID0gZWxlbWVudFN0eWxlU2VjdGlvbi5wcm9wZXJ0aWVzVHJlZU91
dGxpbmU7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRsaW5lLmNoaWxkcmVuLmxlbmd0aDsg
KytpKSB7CisgICAgICAgIHZhciB0cmVlSXRlbSA9IG91dGxpbmUuY2hpbGRyZW5baV07CisgICAg
ICAgIGlmICh0cmVlSXRlbS5uYW1lID09PSBwcm9wZXJ0eU5hbWUpCisgICAgICAgICAgICByZXR1
cm4gdHJlZUl0ZW07CisgICAgfQorICAgIHJldHVybiBudWxsOworfTsKKworSW5zcGVjdG9yVGVz
dC5kdW1wU3R5bGVUcmVlT3V0bGluZSA9IGZ1bmN0aW9uKHRyZWVJdGVtLCByZXN1bHQpCit7Cisg
ICAgdmFyIGNoaWxkcmVuID0gdHJlZUl0ZW0uY2hpbGRyZW47CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU3R5
bGVUcmVlSXRlbShjaGlsZHJlbltpXSwgcmVzdWx0LCAiIik7Cit9OworCitJbnNwZWN0b3JUZXN0
LmR1bXBTdHlsZVRyZWVJdGVtID0gZnVuY3Rpb24odHJlZUl0ZW0sIHJlc3VsdCwgcHJlZml4KQor
eworICAgIC8vIEZpbHRlciBvdXQgd2lkdGggYW5kIGhlaWdodCBwcm9wZXJ0aWVzIGluIG9yZGVy
IHRvIG1pbmltaXplCisgICAgLy8gcG90ZW50aWFsIGRpZmZzLgorICAgIGlmICghdHJlZUl0ZW0u
bGlzdEl0ZW1FbGVtZW50LnRleHRDb250ZW50LmluZGV4T2YoIndpZHRoIikgfHwKKyAgICAgICAg
IXRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC50ZXh0Q29udGVudC5pbmRleE9mKCJoZWlnaHQiKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC5oYXNT
dHlsZUNsYXNzKCJpbmhlcml0ZWQiKSkKKyAgICAgICAgcmV0dXJuOworICAgIHZhciB0eXBlUHJl
Zml4ID0gIiI7CisgICAgaWYgKHRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC5oYXNTdHlsZUNsYXNz
KCJvdmVybG9hZGVkIikpCisgICAgICAgIHR5cGVQcmVmaXggKz0gIi8tLSBvdmVybG9hZGVkIC0t
LyAiOworICAgIGlmICh0cmVlSXRlbS5saXN0SXRlbUVsZW1lbnQuaGFzU3R5bGVDbGFzcygiZGlz
YWJsZWQiKSkKKyAgICAgICAgdHlwZVByZWZpeCArPSAiLy0tIGRpc2FibGVkIC0tLyAiOworICAg
IHZhciB0ZXh0Q29udGVudCA9IHRyZWVJdGVtLmxpc3RJdGVtRWxlbWVudC50ZXh0Q29udGVudDsK
KworICAgIC8vIEFkZCBub24tc2VsZWN0YWJsZSB1cmwgdGV4dC4KKyAgICB2YXIgdGV4dERhdGEg
PSB0cmVlSXRlbS5saXN0SXRlbUVsZW1lbnQucXVlcnlTZWxlY3RvcigiW2RhdGEtdW5jb3B5YWJs
ZV0iKTsKKyAgICBpZiAodGV4dERhdGEpCisgICAgICAgIHRleHRDb250ZW50ICs9IHRleHREYXRh
LmdldEF0dHJpYnV0ZSgiZGF0YS11bmNvcHlhYmxlIik7CisKKyAgICByZXN1bHQucHVzaChwcmVm
aXggKyB0eXBlUHJlZml4ICsgdGV4dENvbnRlbnQpOworICAgIHRyZWVJdGVtLmV4cGFuZCgpOwor
ICAgIHZhciBjaGlsZHJlbiA9IHRyZWVJdGVtLmNoaWxkcmVuOworICAgIGZvciAodmFyIGkgPSAw
OyBjaGlsZHJlbiAmJiBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpCisgICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcFN0eWxlVHJlZUl0ZW0oY2hpbGRyZW5baV0sIHJlc3VsdCwgcHJlZml4ICsgIiAg
ICAiKTsKK307CisKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1hZGQtYmxhbmstcHJvcGVydHkuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtYWRkLWJsYW5rLXByb3BlcnR5Lmh0bWwKaW5kZXgg
YjZiNTBlNi4uZjQ5NmI1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy1hZGQtYmxhbmstcHJvcGVydHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzLWFkZC1ibGFuay1wcm9wZXJ0eS5odG1sCkBAIC0yNywxMyArMjcsNiBAQCBmdW5jdGlvbiBm
cm9udGVuZF9zZWxlY3RJbnNwZWN0ZWRFbGVtZW50KHRlc3RDb250cm9sbGVyKQogICAgIGZyb250
ZW5kX3NlbGVjdEVsZW1lbnRBbmRSdW4odGVzdENvbnRyb2xsZXIsICJpbnNwZWN0ZWQiLCBmcm9u
dGVuZF9kdW1wSW5zcGVjdGVkU3R5bGUpOwogfQogCi1mdW5jdGlvbiBmcm9udGVuZF9jcmVhdGVL
ZXlib2FyZEV2ZW50KGV2ZW50TmFtZSwga2V5SWRlbnRpZmllcikKLXsKLSAgICB2YXIgZXZ0ID0g
ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIktleWJvYXJkRXZlbnQiKTsKLSAgICBldnQuaW5pdEtleWJv
YXJkRXZlbnQoZXZlbnROYW1lLCB0cnVlIC8qIGNhbiBidWJibGUgKi8sIHRydWUgLyogY2FuIGNh
bmNlbCAqLywgbnVsbCAvKiB2aWV3ICovLCBrZXlJZGVudGlmaWVyLCAiIik7Ci0gICAgcmV0dXJu
IGV2dDsKLX0KLQogZnVuY3Rpb24gZnJvbnRlbmRfZHVtcEluc3BlY3RlZFN0eWxlKHRlc3RDb250
cm9sbGVyKQogewogICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiQmVmb3JlIGFwcGVu
ZDoiKTsKQEAgLTQyLDggKzM1LDggQEAgZnVuY3Rpb24gZnJvbnRlbmRfZHVtcEluc3BlY3RlZFN0
eWxlKHRlc3RDb250cm9sbGVyKQogICAgIHZhciBzZWN0aW9uID0gV2ViSW5zcGVjdG9yLnBhbmVs
cy5lbGVtZW50cy5zaWRlYmFyUGFuZXMuc3R5bGVzLnNlY3Rpb25zWzBdWzFdOwogICAgIHNlY3Rp
b24uZXhwYW5kKCk7CiAgICAgdmFyIHRyZWVFbGVtZW50ID0gc2VjdGlvbi5hZGROZXdCbGFua1By
b3BlcnR5KCk7Ci0gICAgdmFyIGVudGVyS2V5RG93biA9IGZyb250ZW5kX2NyZWF0ZUtleWJvYXJk
RXZlbnQoImtleWRvd24iLCAiRW50ZXIiKTsKLSAgICB2YXIgaW5jcmVtZW50S2V5RG93biA9IGZy
b250ZW5kX2NyZWF0ZUtleWJvYXJkRXZlbnQoImtleWRvd24iLCAiVXAiKTsKKyAgICB2YXIgZW50
ZXJLZXlEb3duID0gZnJvbnRlbmRfY3JlYXRlS2V5RXZlbnQoIkVudGVyIik7CisgICAgdmFyIGlu
Y3JlbWVudEtleURvd24gPSBmcm9udGVuZF9jcmVhdGVLZXlFdmVudCgiVXAiKTsKIAogICAgIGZ1
bmN0aW9uIHJlbW92ZUVtcHR5KCkKICAgICB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI4YjUxNGYuLmI4YjE3ZWQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTAtMTItMjQgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IElubGluZSBIVE1MIHN0eWxlIHByb3BlcnR5IG91dCBvZiBzeW5jIHdpdGggZWxl
bWVudC5zdHlsZSBpbiBTaWRlYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MTQ3OAorCisgICAgICAgIE5vdyB0aGUgZWxlbWVudCBhdHRyaWJ1dGUg
bW9kaWZpY2F0aW9ucyAoaW5jbHVkaW5nICJzdHlsZSIpIGFyZSB0cmFja2VkLCB3aGljaCByZXN1
bHRzIGluIHRoZQorICAgICAgICBzb3VyY2Ugb2Zmc2V0cyB1cGRhdGUgKGluIHRoZSBiYWNrZW5k
KSBhbmQgU3R5bGVzL01ldHJpY3MgcGFuZSB1cGRhdGVzIChpbiB0aGUgZnJvbnRlbmQpCisgICAg
ICAgIG9uIHRoZSAic3R5bGUiIGF0dHJpYnV0ZSBtb2RpZmljYXRpb24gdGhyb3VnaCB0aGUgRWxl
bWVudHMgdHJlZS4gQWxzbywgaXQgYXBwZWFycyB0aGF0CisgICAgICAgIGEgY29tcGxldGUgInN0
eWxlIiBhdHRyaWJ1dGUgcmVtb3ZhbCBkZXN0cm95cyB0aGUgaW5saW5lIHN0eWxlIGRlY2xhcmF0
aW9uCisgICAgICAgIChTdHlsZWRFbGVtZW50OjptX2lubGluZVN0eWxlRGVjbCksIHdoaWxlIHRo
ZSBjb2RlIHVzZWQgdG8gcmVseSBvbiBpdCBiZWluZyBpbW11dGFibGUgKGhlbmNlIGEgY3Jhc2gp
LgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9lbGVtZW50cy1kZWxldGUtaW5saW5lLXN0eWxl
Lmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cik6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpkaWRNb2RpZnlET01BdHRyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmRpZE1vZGlmeUVsZW1lbnRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjp0ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6
c2V0U3R5bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJ
bmxpbmVTdHlsZTo6Z2V0U3R5bGVBdHRyaWJ1dGVSYW5nZXMpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9F
bGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJl
ZUVsZW1lbnQucHJvdG90eXBlLl9hdHRyaWJ1dGVFZGl0aW5nQ29tbWl0dGVkKToKKwogMjAxMC0x
Mi0yNCAgTm9lbCBHb3Jkb24gIDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcAppbmRleCAzMWQ5NTFhLi42Nzk4MGY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCkBAIC01NDIsNiArNTQyLDE4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmRpZFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKICAgICBtX25vZGVUb0luc3BlY3RvclN0eWxl
U2hlZXQucmVtb3ZlKG5vZGUpOwogfQogCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRNb2Rp
ZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBOb2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0OjppdGVyYXRvciBpdCA9
IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5maW5kKGVsZW1lbnQpOworICAgIGlmIChpdCA9
PSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZW5kKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGl0LT5zZWNvbmQtPmRpZE1vZGlmeUVsZW1lbnRBdHRyaWJ1dGUoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IGY2N2Q1N2QuLjM4N2M4OWIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtOTcsNiArOTcsNyBAQCBwcml2YXRlOgog
ICAgIC8vIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciBpbnRlcmZhY2UKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVtb3ZlRG9jdW1lbnQoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVtb3ZlRE9NTm9kZShOb2RlKik7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vZGlmeURPTUF0
dHIoRWxlbWVudCopOwogCiAgICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1fZG9tQWdlbnQ7CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBjYmJhNzVmLi5lNDJiZjJh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMTMyLDYgKzEx
MzIsOSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQq
IGVsZW1lbnQpCiAgICAgaWYgKCFpZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fZG9t
TGlzdGVuZXIpCisgICAgICAgIG1fZG9tTGlzdGVuZXItPmRpZE1vZGlmeURPTUF0dHIoZWxlbWVu
dCk7CisKICAgICBtX2Zyb250ZW5kLT5hdHRyaWJ1dGVzVXBkYXRlZChpZCwgYnVpbGRBcnJheUZv
ckVsZW1lbnRBdHRyaWJ1dGVzKGVsZW1lbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKaW5kZXggNTM0NzA5MC4uZTU3YmNlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oCkBAIC04NSw2ICs4NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVEb2N1bWVudChE
b2N1bWVudCopID0gMDsKICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVET01Ob2Rl
KE5vZGUqKSA9IDA7CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihF
bGVtZW50KikgPSAwOwogICAgICAgICB9OwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
c3BlY3RvckRPTUFnZW50PiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA2ZTNlYmU4Li5mNTc1
YTUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMTA5
OSwxMSArMTA5OSwyOCBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShjb25zdCBTdHJpbgogewogICAgIEFTU0VSVChl
bGVtZW50KTsKICAgICBtX2luc3BlY3RvclN0eWxlID0gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShJ
bnNwZWN0b3JDU1NJZChpZCwgMCksIGlubGluZVN0eWxlKCksIHRoaXMpOworICAgIG1fc3R5bGVU
ZXh0ID0gbV9lbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSA/IG1fZWxlbWVudC0+Z2V0QXR0cmli
dXRlKCJzdHlsZSIpLnN0cmluZygpIDogU3RyaW5nKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlOjpkaWRNb2RpZnlFbGVtZW50QXR0cmlidXRlKCkKK3sKKyAg
ICBTdHJpbmcgbmV3U3R5bGVUZXh0ID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIik7
CisgICAgYm9vbCBzaG91bGREcm9wU291cmNlRGF0YSA9IGZhbHNlOworICAgIGlmIChtX2VsZW1l
bnQtPmlzU3R5bGVkRWxlbWVudCgpICYmIG1fZWxlbWVudC0+c3R5bGUoKSAhPSBtX2luc3BlY3Rv
clN0eWxlLT5jc3NTdHlsZSgpKSB7CisgICAgICAgIG1faW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0
b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKGlkKCksIDApLCBpbmxpbmVTdHlsZSgpLCB0
aGlzKTsKKyAgICAgICAgc2hvdWxkRHJvcFNvdXJjZURhdGEgPSB0cnVlOworICAgIH0KKyAgICBp
ZiAobmV3U3R5bGVUZXh0ICE9IG1fc3R5bGVUZXh0KSB7CisgICAgICAgIG1fc3R5bGVUZXh0ID0g
bmV3U3R5bGVUZXh0OworICAgICAgICBzaG91bGREcm9wU291cmNlRGF0YSA9IHRydWU7CisgICAg
fQorICAgIGlmIChzaG91bGREcm9wU291cmNlRGF0YSkKKyAgICAgICAgbV9ydWxlU291cmNlRGF0
YS5jbGVhcigpOwogfQogCiBib29sIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6
dGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QKIHsKLSAgICAqcmVzdWx0ID0gbV9lbGVtZW50LT5n
ZXRBdHRyaWJ1dGUoInN0eWxlIik7CisgICAgKnJlc3VsdCA9IG1fc3R5bGVUZXh0OwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0xMTEyLDYgKzExMjksNyBAQCBib29sIEluc3BlY3RvclN0eWxl
U2hlZXRGb3JJbmxpbmVTdHlsZTo6c2V0U3R5bGVUZXh0KENTU1N0eWxlRGVjbGFyYXRpb24qIHN0
eWxlLAogICAgIEFTU0VSVF9VTlVTRUQoc3R5bGUsIHN0eWxlID09IGlubGluZVN0eWxlKCkpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKCJz
dHlsZSIsIHRleHQsIGVjKTsKKyAgICBtX3N0eWxlVGV4dCA9IHRleHQ7CiAgICAgbV9ydWxlU291
cmNlRGF0YS5jbGVhcigpOwogICAgIHJldHVybiAhZWM7CiB9CkBAIC0xMTQ5LDEzICsxMTY3LDEw
IEBAIENTU1N0eWxlRGVjbGFyYXRpb24qIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHls
ZTo6aW5saW5lU3R5bGUoKSBjb25zdAogCiBib29sIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZTo6Z2V0U3R5bGVBdHRyaWJ1dGVSYW5nZXMoUmVmUHRyPENTU1N0eWxlU291cmNlRGF0
YT4qIHJlc3VsdCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3R5bGVBdHRy
aWJ1dGVOYW1lLCAoInN0eWxlIikpOwotCiAgICAgaWYgKCFtX2VsZW1lbnQtPmlzU3R5bGVkRWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgc3R5bGVUZXh0ID0g
c3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG1fZWxlbWVudCktPmdldEF0dHJpYnV0ZShzdHls
ZUF0dHJpYnV0ZU5hbWUpOwotICAgIGlmIChzdHlsZVRleHQuaXNFbXB0eSgpKSB7CisgICAgaWYg
KG1fc3R5bGVUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAoKnJlc3VsdCktPnN0eWxlQm9keVJh
bmdlLnN0YXJ0ID0gMDsKICAgICAgICAgKCpyZXN1bHQpLT5zdHlsZUJvZHlSYW5nZS5lbmQgPSAw
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNjMsNyArMTE3OCw3IEBAIGJvb2wgSW5zcGVj
dG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpnZXRTdHlsZUF0dHJpYnV0ZVJhbmdlcyhSZWZQ
dHI8Q1NTU3R5bGVTCiAKICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHRl
bXBEZWNsYXJhdGlvbiA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKICAg
ICBDU1NQYXJzZXIgcDsKLSAgICBwLnBhcnNlRGVjbGFyYXRpb24odGVtcERlY2xhcmF0aW9uLmdl
dCgpLCBzdHlsZVRleHQsIHJlc3VsdCk7CisgICAgcC5wYXJzZURlY2xhcmF0aW9uKHRlbXBEZWNs
YXJhdGlvbi5nZXQoKSwgbV9zdHlsZVRleHQsIHJlc3VsdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAppbmRleCBiNjQ5YmVkLi5l
YzI2NmNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCkBAIC0yMzcs
NiArMjM3LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJ
bmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGlkLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJp
bmcmIG9yaWdpbik7CisgICAgdm9pZCBkaWRNb2RpZnlFbGVtZW50QXR0cmlidXRlKCk7CiAgICAg
dmlydHVhbCBib29sIHRleHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIHZpcnR1YWwgQ1NT
U3R5bGVEZWNsYXJhdGlvbiogc3R5bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQpIGNv
bnN0IHsgQVNTRVJUX1VOVVNFRChpZCwgIWlkLm9yZGluYWwoKSk7IHJldHVybiBpbmxpbmVTdHls
ZSgpOyB9CiAKQEAgLTI1OSw2ICsyNjAsOSBAQCBwcml2YXRlOgogICAgIEVsZW1lbnQqIG1fZWxl
bWVudDsKICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IG1fcnVsZVNvdXJjZURhdGE7CiAg
ICAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBtX2luc3BlY3RvclN0eWxlOworCisgICAgLy8gQ29u
dGFpbnMgInN0eWxlIiBhdHRyaWJ1dGUgdmFsdWUgYW5kIHNob3VsZCBhbHdheXMgYmUgdXAtdG8t
ZGF0ZS4KKyAgICBTdHJpbmcgbV9zdHlsZVRleHQ7CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKaW5kZXggZjI1
Zjg1OC4uNjdkMzRiMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzVHJlZU91dGxpbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTEwNzcsNiArMTA3Nyw3IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXBhcnNlRWxl
bWVudC5oYXNBdHRyaWJ1dGVzKCkpIHsKICAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgICAgICAgICAgdGhpcy50cmVl
T3V0bGluZS5mb2N1c2VkTm9kZUNoYW5nZWQodHJ1ZSk7CiAgICAgICAgICAgICBtb3ZlVG9OZXh0
QXR0cmlidXRlSWZOZWVkZWQuY2FsbCh0aGlzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQo=
</data>
<flag name="review"
          id="68545"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>