<?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>64118</bug_id>
          
          <creation_ts>2011-07-07 12:21:58 -0700</creation_ts>
          <short_desc>Move all code related to cachedSelection to HTMLTextFormControlElement</short_desc>
          <delta_ts>2011-07-07 14:37:31 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>47865</blocked>
    
    <blocked>60403</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>adele</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>433648</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-07 12:21:58 -0700</bug_when>
    <thetext>Right now, HTMLFormControlElement, HTMLInputElement, HTMLTextAreaElement, RenderTextControl, RenderTextControlSingleLine, and RenderTextControlMultipleLine are all aware of cachedSelection.  But this simply is an artifact of WML, and we should be able to push all methods and variables related to cachedSelection into HTMLFormControlElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433656</commentid>
    <comment_count>1</comment_count>
      <attachid>100020</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-07 12:43:17 -0700</bug_when>
    <thetext>Created attachment 100020
Removed lots of code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433680</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-07 13:41:29 -0700</bug_when>
    <thetext>Ping reviewers because I have a lot of cleanups to do and this patch is blocking my work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433686</commentid>
    <comment_count>3</comment_count>
      <attachid>100020</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-07-07 13:56:40 -0700</bug_when>
    <thetext>Comment on attachment 100020
Removed lots of code

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

&gt; Source/WebCore/html/HTMLFormControlElement.cpp:715
&gt; +    if (!renderer() || !isTextFormControl())

When is HTMLTextFormControlElement not a text form control?

&gt; Source/WebCore/html/HTMLFormControlElement.h:238
&gt; +    int m_cachedSelectionStart;
&gt; +    int m_cachedSelectionEnd;

What prevents these from being private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433687</commentid>
    <comment_count>4</comment_count>
      <attachid>100020</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-07 14:02:39 -0700</bug_when>
    <thetext>Comment on attachment 100020
Removed lots of code

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

Thanks for the review!

&gt;&gt; Source/WebCore/html/HTMLFormControlElement.cpp:715
&gt;&gt; +    if (!renderer() || !isTextFormControl())
&gt; 
&gt; When is HTMLTextFormControlElement not a text form control?

input[type=checkbox], input[type=radio], etc...

&gt;&gt; Source/WebCore/html/HTMLFormControlElement.h:238
&gt;&gt; +    int m_cachedSelectionEnd;
&gt; 
&gt; What prevents these from being private?

Oh, right.  Will make them private.  I had to make them protected when HTMLInputElement and HTMLTextAreaElement still access those variables directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433688</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-07 14:03:18 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt;&gt; Source/WebCore/html/HTMLFormControlElement.cpp:715
&gt; &gt;&gt; +    if (!renderer() || !isTextFormControl())
&gt; &gt; 
&gt; &gt; When is HTMLTextFormControlElement not a text form control?
&gt; 
&gt; input[type=checkbox], input[type=radio], etc...

I agree that it&apos;s very confusing and we should probably rename it to isTextField.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433710</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-07 14:37:31 -0700</bug_when>
    <thetext>Committed r90591: &lt;http://trac.webkit.org/changeset/90591&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100020</attachid>
            <date>2011-07-07 12:43:17 -0700</date>
            <delta_ts>2011-07-07 14:02:38 -0700</delta_ts>
            <desc>Removed lots of code</desc>
            <filename>bug-64118-20110707124316.patch</filename>
            <type>text/plain</type>
            <size>18332</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNTg0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDctMDcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBhbGwgY29kZSByZWxhdGVk
IHRvIGNhY2hlZFNlbGVjdGlvbiB0byBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQxMTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBtX2NhY2hlZFNl
bGVjdGlvblN0YXJ0IGFuZCBtX2NhY2hlZFNlbGVjdGlvbkVuZCBmcm9tIEhUTUxJbnB1dEVsZW1l
bnQKKyAgICAgICAgYW5kIEhUTUxUZXh0QXJlYUVsZW1lbnQgdG8gSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQKKworICAgICAgICBBbHNvIHJlbW92ZWQgY2FjaGVkIHNlbGVjdGlvbiByZWxhdGVk
IGZ1bmN0aW9ucyBmcm9tIFJlbmRlclRleHRDb250cm9sLAorICAgICAgICBSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUsIGFuZCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSBiZWNhdXNlIHRo
ZXkgd2VyZQorICAgICAgICBtZXJlbHkgcHJvdmlkaW5nIHdyYXBwZXIgZnVuY3Rpb25zIHRvIGVu
YWJsZSBwb2x5bW9ycGhpc20gYmV0d2VlbgorICAgICAgICBpbnB1dCBhbmQgdGV4dGFyZWEgZWxl
bWVudHMgYW5kIHRoZWlyIFdNTCBlcXVpdmFsZW50cy4KKworICAgICAgICAqIGVkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om5vdGlm
eVJlbmRlcmVyT2ZTZWxlY3Rpb25DaGFuZ2UpOiBDYWxscyBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudCdzCisgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgaW5zdGVhZCBvZiBSZW5kZXJUZXh0Q29u
dHJvbCdzLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQpOiBJbml0aWFsaXplCisgICAgICAgIG1fY2FjaGVkU2VsZWN0aW9uU3RhcnQg
YW5kIG1fY2FjaGVkU2VsZWN0aW9uRW5kLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cmVzdG9yZUNhY2hlZFNlbGVjdGlvbik6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVj
dGlvbkNoYW5nZWQpOiBFeHRyYWN0ZWQgZnJvbQorICAgICAgICBSZW5kZXJUZXh0Q29udHJvbDo6
c2VsZWN0aW9uQ2hhbmdlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpjYWNoZVNl
bGVjdGlvbik6IEV4dHJhY3RlZCBmcm9tIEhUTUxJbnB1dEVsZW1lbnQKKyAgICAgICAgYW5kIEhU
TUxUZXh0QXJlYUVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6aGFzQ2FjaGVkU2VsZWN0aW9uU3RhcnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpoYXNDYWNoZWRTZWxlY3Rpb25FbmQpOiBB
ZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UpOgorICAgICAgICAq
IGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpIVE1MVGV4
dEFyZWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVw
ZGF0ZUZvY3VzQXBwZWFyYW5jZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojppc0VtcHR5VmFsdWUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRTZWxlY3Rpb25SYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmg6CisKIDIw
MTEtMDctMDcgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBSb2IgQnVpcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCShyZXZpc2lvbiA5MDU3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjU4LDExICsxNjU4LDggQEAgdm9p
ZCBGcmFtZVNlbGVjdGlvbjo6bm90aWZ5UmVuZGVyZXJPZlNlbAogICAgIGlmICghcm9vdEVkaXRh
YmxlRWxlbWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gcm9vdEVkaXRhYmxlRWxlbWVudCgpLT5zaGFkb3dBbmNlc3Rvck5vZGUoKS0+cmVuZGVy
ZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNUZXh0Q29udHJvbCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICB0b1JlbmRlclRleHRDb250cm9sKHJlbmRlcmVyKS0+c2Vs
ZWN0aW9uQ2hhbmdlZCh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQpOworICAgIGlmIChI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogdGV4dENvbnRyb2wgPSBlbmNsb3NpbmdUZXh0Rm9y
bUNvbnRyb2woc3RhcnQoKSkpCisgICAgICAgIHRleHRDb250cm9sLT5zZWxlY3Rpb25DaGFuZ2Vk
KHVzZXJUcmlnZ2VyZWQgPT0gVXNlclRyaWdnZXJlZCk7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlv
biB0aGF0IHRlbGxzIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIG5vZGUgaXMgYW4gZWxlbWVudCB0aGF0
IGhhcyBhbiBlbnRpcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcAkocmV2aXNpb24gOTA1NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjQsNiArNTY0
LDggQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkZQogCiBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYywgSFRNTEZvcm1FbGVtZW50KiBmb3Jt
KQogICAgIDogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSh0YWdOYW1lLCBkb2MsIGZv
cm0pCisgICAgLCBtX2NhY2hlZFNlbGVjdGlvblN0YXJ0KC0xKQorICAgICwgbV9jYWNoZWRTZWxl
Y3Rpb25FbmQoLTEpCiB7CiB9CiAKQEAgLTY3OCw4ICs2ODAsOCBAQCBpbnQgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OnNlbGVjdGlvCiB7CiAgICAgaWYgKCFpc1RleHRGb3JtQ29udHJvbCgp
KQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSAh
PSB0aGlzICYmIGNhY2hlZFNlbGVjdGlvblN0YXJ0KCkgPj0gMCkKLSAgICAgICAgcmV0dXJuIGNh
Y2hlZFNlbGVjdGlvblN0YXJ0KCk7CisgICAgaWYgKGRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkg
IT0gdGhpcyAmJiBoYXNDYWNoZWRTZWxlY3Rpb25TdGFydCgpKQorICAgICAgICByZXR1cm4gbV9j
YWNoZWRTZWxlY3Rpb25TdGFydDsKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVy
biAwOwogICAgIHJldHVybiB0b1JlbmRlclRleHRDb250cm9sKHJlbmRlcmVyKCkpLT5zZWxlY3Rp
b25TdGFydCgpOwpAQCAtNjg5LDggKzY5MSw4IEBAIGludCBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2VsZWN0aW8KIHsKICAgICBpZiAoIWlzVGV4dEZvcm1Db250cm9sKCkpCiAgICAgICAg
IHJldHVybiAwOwotICAgIGlmIChkb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpICE9IHRoaXMgJiYg
Y2FjaGVkU2VsZWN0aW9uRW5kKCkgPj0gMCkKLSAgICAgICAgcmV0dXJuIGNhY2hlZFNlbGVjdGlv
bkVuZCgpOworICAgIGlmIChkb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpICE9IHRoaXMgJiYgaGFz
Q2FjaGVkU2VsZWN0aW9uRW5kKCkpCisgICAgICAgIHJldHVybiBtX2NhY2hlZFNlbGVjdGlvbkVu
ZDsKICAgICBpZiAoIXJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiB0
b1JlbmRlclRleHRDb250cm9sKHJlbmRlcmVyKCkpLT5zZWxlY3Rpb25FbmQoKTsKQEAgLTY5OCw5
ICs3MDAsMjggQEAgaW50IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3RpbwogCiBQ
YXNzUmVmUHRyPFJhbmdlPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uKCkg
Y29uc3QKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIWlzVGV4dEZvcm1Db250cm9sKCkgfHwg
Y2FjaGVkU2VsZWN0aW9uU3RhcnQoKSA8IDAgfHwgY2FjaGVkU2VsZWN0aW9uRW5kKCkgPCAwKQor
ICAgIGlmICghcmVuZGVyZXIoKSB8fCAhaXNUZXh0Rm9ybUNvbnRyb2woKSB8fCAhaGFzQ2FjaGVk
U2VsZWN0aW9uU3RhcnQoKSB8fCAhaGFzQ2FjaGVkU2VsZWN0aW9uRW5kKCkpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIHJldHVybiB0b1JlbmRlclRleHRDb250cm9sKHJlbmRlcmVyKCkpLT5zZWxl
Y3Rpb24oY2FjaGVkU2VsZWN0aW9uU3RhcnQoKSwgY2FjaGVkU2VsZWN0aW9uRW5kKCkpOworICAg
IHJldHVybiB0b1JlbmRlclRleHRDb250cm9sKHJlbmRlcmVyKCkpLT5zZWxlY3Rpb24obV9jYWNo
ZWRTZWxlY3Rpb25TdGFydCwgbV9jYWNoZWRTZWxlY3Rpb25FbmQpOworfQorCit2b2lkIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpyZXN0b3JlQ2FjaGVkU2VsZWN0aW9uKCkKK3sKKyAgICBX
ZWJDb3JlOjpzZXRTZWxlY3Rpb25SYW5nZSh0aGlzLCBtX2NhY2hlZFNlbGVjdGlvblN0YXJ0LCBt
X2NhY2hlZFNlbGVjdGlvbkVuZCk7Cit9CisKK3ZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OnNlbGVjdGlvbkNoYW5nZWQoYm9vbCB1c2VyVHJpZ2dlcmVkKQoreworICAgIGlmICghcmVu
ZGVyZXIoKSB8fCAhaXNUZXh0Rm9ybUNvbnRyb2woKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
UmVuZGVyVGV4dENvbnRyb2wqIHJlbmRlclRleHRDb250cm9sID0gdG9SZW5kZXJUZXh0Q29udHJv
bChyZW5kZXJlcigpKTsKKyAgICBjYWNoZVNlbGVjdGlvbihyZW5kZXJUZXh0Q29udHJvbC0+c2Vs
ZWN0aW9uU3RhcnQoKSwgcmVuZGVyVGV4dENvbnRyb2wtPnNlbGVjdGlvbkVuZCgpKTsKKworICAg
IGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7CisgICAgICAgIGlmIChm
cmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSAmJiB1c2VyVHJpZ2dlcmVkKQorICAgICAgICAg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zZWxlY3RFdmVudCwg
dHJ1ZSwgZmFsc2UpKTsKKyAgICB9CiB9CiAKIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCShyZXZpc2lvbiA5MDU3MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTMsNiArMjEzLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBtYXhM
ZW5ndGgoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCA9IDA7
CiAKKyAgICB2b2lkIGNhY2hlU2VsZWN0aW9uKGludCBzdGFydCwgaW50IGVuZCkKKyAgICB7Cisg
ICAgICAgIG1fY2FjaGVkU2VsZWN0aW9uU3RhcnQgPSBzdGFydDsKKyAgICAgICAgbV9jYWNoZWRT
ZWxlY3Rpb25FbmQgPSBlbmQ7CisgICAgfQorCisgICAgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKGJv
b2wgdXNlclRyaWdnZXJlZCk7CisKIHByb3RlY3RlZDoKICAgICBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQq
KTsKIApAQCAtMjIyLDE1ICsyMzAsMTkgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBzZXRUZXh0
QXNPZkxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBtX3Rl
eHRBc09mTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQgPSB0ZXh0OyB9CiAKKyAgICB2b2lkIHJl
c3RvcmVDYWNoZWRTZWxlY3Rpb24oKTsKKyAgICBib29sIGhhc0NhY2hlZFNlbGVjdGlvblN0YXJ0
KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTZWxlY3Rpb25TdGFydCA+PSAwOyB9CisgICAgYm9v
bCBoYXNDYWNoZWRTZWxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFNlbGVjdGlv
bkVuZCA+PSAwOyB9CisKKyAgICBpbnQgbV9jYWNoZWRTZWxlY3Rpb25TdGFydDsKKyAgICBpbnQg
bV9jYWNoZWRTZWxlY3Rpb25FbmQ7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRm9jdXNFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEJsdXJFdmVudCgpOwog
CiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyRW1wdHkoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgaW50
IGNhY2hlZFNlbGVjdGlvblN0YXJ0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgaW50IGNhY2hl
ZFNlbGVjdGlvbkVuZCgpIGNvbnN0ID0gMDsKLQogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB1c2Vy
LWVkaXRhYmxlIHZhbHVlIGlzIGVtcHR5LiBVc2VkIHRvIGNoZWNrIHBsYWNlaG9sZGVyIHZpc2li
aWxpdHkuCiAgICAgdmlydHVhbCBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgc3VnZ2VzdGVkIHZhbHVlIGlzIGVtcHR5LiBVc2VkIHRvIGNoZWNr
IHBsYWNlaG9sZGVyIHZpc2liaWxpdHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNTcxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsOCArNzgsNiBAQCBIVE1M
SW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVtZW50KGNvbnN0CiAgICAgOiBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkKICAgICAsIG1fc2l6ZShkZWZh
dWx0U2l6ZSkKICAgICAsIG1fbWF4TGVuZ3RoKG1heGltdW1MZW5ndGgpCi0gICAgLCBtX2NhY2hl
ZFNlbGVjdGlvblN0YXJ0KC0xKQotICAgICwgbV9jYWNoZWRTZWxlY3Rpb25FbmQoLTEpCiAjaWYg
RU5BQkxFKFdDU1MpCiAgICAgLCBtX2lucHV0Rm9ybWF0TWFzaygiKm0iKQogICAgICwgbV9tYXhJ
bnB1dENoYXJzQWxsb3dlZChtYXhpbXVtTGVuZ3RoKQpAQCAtNDczLDEyICs0NzEsMTAgQEAgYm9v
bCBIVE1MSW5wdXRFbGVtZW50Ojppc01vdXNlRm9jdXNhYmxlKAogdm9pZCBIVE1MSW5wdXRFbGVt
ZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24p
CiB7CiAgICAgaWYgKGlzVGV4dEZpZWxkKCkpIHsKLSAgICAgICAgaWYgKCFyZXN0b3JlUHJldmlv
dXNTZWxlY3Rpb24gfHwgbV9jYWNoZWRTZWxlY3Rpb25TdGFydCA9PSAtMSkKKyAgICAgICAgaWYg
KCFyZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24gfHwgIWhhc0NhY2hlZFNlbGVjdGlvblN0YXJ0KCkp
CiAgICAgICAgICAgICBzZWxlY3QoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBS
ZXN0b3JlIHRoZSBjYWNoZWQgc2VsZWN0aW9uLgotICAgICAgICAgICAgV2ViQ29yZTo6c2V0U2Vs
ZWN0aW9uUmFuZ2UodGhpcywgbV9jYWNoZWRTZWxlY3Rpb25TdGFydCwgbV9jYWNoZWRTZWxlY3Rp
b25FbmQpOwotICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3RvcmVDYWNo
ZWRTZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKGRvY3VtZW50KCktPmZyYW1lKCkpCiAgICAgICAg
ICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+cmV2ZWFsU2VsZWN0aW9uKCk7
CiAgICAgfSBlbHNlCkBAIC0xMzYzLDEyICsxMzU5LDYgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50
Ojppc1JlcXVpcmVkRm9ybUNvbgogICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9ydHNSZXF1
aXJlZCgpICYmIHJlcXVpcmVkKCk7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxlbWVudDo6Y2FjaGVT
ZWxlY3Rpb24oaW50IHN0YXJ0LCBpbnQgZW5kKQotewotICAgIG1fY2FjaGVkU2VsZWN0aW9uU3Rh
cnQgPSBzdGFydDsKLSAgICBtX2NhY2hlZFNlbGVjdGlvbkVuZCA9IGVuZDsKLX0KLQogdm9pZCBI
VE1MSW5wdXRFbGVtZW50OjphZGRTZWFyY2hSZXN1bHQoKQogewogICAgIEFTU0VSVChpc1NlYXJj
aEZpZWxkKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHJl
dmlzaW9uIDkwNTcxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIyOCw3ICsyMjgsNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAg
IGJvb2wgbGFzdENoYW5nZVdhc1VzZXJFZGl0KCkgY29uc3Q7Ci0gICAgdm9pZCBjYWNoZVNlbGVj
dGlvbihpbnQgc3RhcnQsIGludCBlbmQpOwogICAgIHZvaWQgbm90aWZ5Rm9ybVN0YXRlQ2hhbmdl
ZCgpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBtYXhpbXVtTGVuZ3RoOwpAQCAtMzA4LDggKzMw
Nyw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUZvY3VzRXZlbnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbEJsdXIoKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2
ZW50KCk7Ci0gICAgdmlydHVhbCBpbnQgY2FjaGVkU2VsZWN0aW9uU3RhcnQoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlZFNlbGVjdGlvblN0YXJ0OyB9Ci0gICAgdmlydHVhbCBpbnQgY2FjaGVkU2Vs
ZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTZWxlY3Rpb25FbmQ7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhaXNS
ZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1D
b250cm9sKCkgY29uc3Q7CkBAIC0zMzcsOCArMzM0LDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcg
bV9zdWdnZXN0ZWRWYWx1ZTsKICAgICBpbnQgbV9zaXplOwogICAgIGludCBtX21heExlbmd0aDsK
LSAgICBpbnQgbV9jYWNoZWRTZWxlY3Rpb25TdGFydDsKLSAgICBpbnQgbV9jYWNoZWRTZWxlY3Rp
b25FbmQ7CiAjaWYgRU5BQkxFKFdDU1MpCiAgICAgU3RyaW5nIG1faW5wdXRGb3JtYXRNYXNrOwog
ICAgIHVuc2lnbmVkIG1fbWF4SW5wdXRDaGFyc0FsbG93ZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNTcxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzAsOCArNzAsNiBAQCBIVE1MVGV4dEFyZWFFbGVtZW50OjpIVE1MVGV4dEFyZWFFbGVtZW50
CiAgICAgLCBtX3Jvd3MoZGVmYXVsdFJvd3MpCiAgICAgLCBtX2NvbHMoZGVmYXVsdENvbHMpCiAg
ICAgLCBtX3dyYXAoU29mdFdyYXApCi0gICAgLCBtX2NhY2hlZFNlbGVjdGlvblN0YXJ0KC0xKQot
ICAgICwgbV9jYWNoZWRTZWxlY3Rpb25FbmQoLTEpCiAgICAgLCBtX2lzRGlydHkoZmFsc2UpCiAg
ICAgLCBtX3dhc01vZGlmaWVkQnlVc2VyKGZhbHNlKQogewpAQCAtMjE1LDcgKzIxMyw3IEBAIHZv
aWQgSFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlRm9jdXNBcHAKICAgICBBU1NFUlQocmVuZGVy
ZXIoKSk7CiAgICAgQVNTRVJUKCFkb2N1bWVudCgpLT5jaGlsZE5lZWRzQW5kTm90SW5TdHlsZVJl
Y2FsYygpKTsKIAotICAgIGlmICghcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uIHx8IG1fY2FjaGVk
U2VsZWN0aW9uU3RhcnQgPCAwKSB7CisgICAgaWYgKCFyZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24g
fHwgIWhhc0NhY2hlZFNlbGVjdGlvblN0YXJ0KCkpIHsKICNpZiBFTkFCTEUoT05fRklSU1RfVEVY
VEFSRUFfRk9DVVNfU0VMRUNUX0FMTCkKICAgICAgICAgLy8gRGV2aWNlcyB3aXRoIHRyYWNrYmFs
bHMgb3IgZC1wYWRzIG1heSBmb2N1cyBvbiBhIHRleHRhcmVhIGluIHJvdXRlCiAgICAgICAgIC8v
IHRvIGFub3RoZXIgZm9jdXNhYmxlIG5vZGUuIEJ5IHNlbGVjdGluZyBhbGwgdGV4dCwgdGhlIG5l
eHQgbW92ZW1lbnQKQEAgLTIyNywxMCArMjI1LDggQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50
Ojp1cGRhdGVGb2N1c0FwcAogICAgICAgICAvLyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTc0NiNjMTUKICAgICAgICAgc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7CiAj
ZW5kaWYKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBSZXN0b3JlIHRoZSBjYWNoZWQgc2VsZWN0
aW9uLiAgVGhpcyBtYXRjaGVzIG90aGVyIGJyb3dzZXJzJyBiZWhhdmlvci4KLSAgICAgICAgc2V0
U2VsZWN0aW9uUmFuZ2UobV9jYWNoZWRTZWxlY3Rpb25TdGFydCwgbV9jYWNoZWRTZWxlY3Rpb25F
bmQpOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdG9yZUNhY2hlZFNlbGVjdGlvbigp
OwogCiAgICAgaWYgKGRvY3VtZW50KCktPmZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50KCktPmZy
YW1lKCktPnNlbGVjdGlvbigpLT5yZXZlYWxTZWxlY3Rpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCShyZXZpc2lvbiA5MDU3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OCw4ICs1OCw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbGFzdENoYW5nZVdhc1VzZXJFZGl0KCkg
Y29uc3Q7CiAKLSAgICB2b2lkIGNhY2hlU2VsZWN0aW9uKGludCBzLCBpbnQgZSkgeyBtX2NhY2hl
ZFNlbGVjdGlvblN0YXJ0ID0gczsgbV9jYWNoZWRTZWxlY3Rpb25FbmQgPSBlOyB9OwotCiBwcml2
YXRlOgogICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKQEAgLTc1LDggKzczLDYgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1
ZSgpLmlzRW1wdHkoKTsgfQotICAgIHZpcnR1YWwgaW50IGNhY2hlZFNlbGVjdGlvblN0YXJ0KCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRTZWxlY3Rpb25TdGFydDsgfQotICAgIHZpcnR1YWwgaW50
IGNhY2hlZFNlbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2VsZWN0aW9uRW5k
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3QgeyBy
ZXR1cm4gIWlzUmVxdWlyZWRGb3JtQ29udHJvbCgpOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVx
dWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIHJlcXVpcmVkKCk7IH0KQEAgLTEwOSw4
ICsxMDUsNiBAQCBwcml2YXRlOgogICAgIGludCBtX2NvbHM7CiAgICAgV3JhcE1ldGhvZCBtX3dy
YXA7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV92YWx1ZTsKLSAgICBpbnQgbV9jYWNoZWRTZWxlY3Rp
b25TdGFydDsKLSAgICBpbnQgbV9jYWNoZWRTZWxlY3Rpb25FbmQ7CiAgICAgbXV0YWJsZSBib29s
IG1faXNEaXJ0eTsKICAgICBib29sIG1fd2FzTW9kaWZpZWRCeVVzZXI7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShyZXZpc2lv
biA5MDU3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIHNldFNlbGVjdGlvblJh
bmdlKE5vZGUqIG5vZGUsIGludCBzCiAgICAgUmVuZGVyVGV4dENvbnRyb2wqIGNvbnRyb2wgPSB0
b1JlbmRlclRleHRDb250cm9sKG5vZGUtPnJlbmRlcmVyKCkpOwogCiAgICAgaWYgKGNvbnRyb2wt
Pmhhc1Zpc2libGVUZXh0QXJlYSgpKSB7Ci0gICAgICAgIGNvbnRyb2wtPmNhY2hlU2VsZWN0aW9u
KHN0YXJ0LCBlbmQpOworICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudCo+KG5vZGUpLT5jYWNoZVNlbGVjdGlvbihzdGFydCwgZW5kKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IGNvbnRyb2wtPnZp
c2libGVQb3NpdGlvbkZvckluZGV4KHN0YXJ0KTsKQEAgLTU3MywxNiArNTczLDYgQEAgdm9pZCBS
ZW5kZXJUZXh0Q29udHJvbDo6Y29tcHV0ZVByZWZlcnJlZAogICAgIHNldFByZWZlcnJlZExvZ2lj
YWxXaWR0aHNEaXJ0eShmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnNlbGVj
dGlvbkNoYW5nZWQoYm9vbCB1c2VyVHJpZ2dlcmVkKQotewotICAgIGNhY2hlU2VsZWN0aW9uKHNl
bGVjdGlvblN0YXJ0KCksIHNlbGVjdGlvbkVuZCgpKTsKLQotICAgIGlmIChGcmFtZSogZnJhbWUg
PSB0aGlzLT5mcmFtZSgpKSB7Ci0gICAgICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFu
Z2UoKSAmJiB1c2VyVHJpZ2dlcmVkKQotICAgICAgICAgICAgbm9kZSgpLT5kaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVjdEV2ZW50LCB0cnVlLCBmYWxzZSkpOwot
ICAgIH0KLX0KLQogdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgSW50UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQpCiB7
CiAgICAgaWYgKCFzaXplKCkuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJKHJldmlzaW9uIDkwNTcxKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdWJ0cmVlSGFzQ2hhbmdlZCgp
OwogICAgIFN0cmluZyB0ZXh0KCk7CiAgICAgU3RyaW5nIHRleHRXaXRoSGFyZExpbmVCcmVha3Mo
KTsKLSAgICB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoYm9vbCB1c2VyVHJpZ2dlcmVkKTsKIAogICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5kZXgpIGNvbnN0
OwogICAgIHN0YXRpYyBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oSFRNTEVsZW1lbnQqLCBj
b25zdCBWaXNpYmxlUG9zaXRpb24mKTsKQEAgLTc1LDcgKzc0LDYgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgZmxvYXQgZ2V0QXZnQ2hhcldpZHRoKEF0b21pY1N0cmluZyBmYW1pbHkpOwogICAg
IHZpcnR1YWwgaW50IHByZWZlcnJlZENvbnRlbnRXaWR0aChmbG9hdCBjaGFyV2lkdGgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0Q29udHJvbEhlaWdodEJhc2VkT25MaW5lSGVp
Z2h0KGludCBsaW5lSGVpZ2h0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNhY2hlU2VsZWN0aW9u
KGludCBzdGFydCwgaW50IGVuZCkgPSAwOwogICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIHRleHRC
YXNlU3R5bGUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1l
bnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lLmNwcAkocmV2aXNpb24gOTA1NzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTQsMTEgKzExNCw2IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6
OnVwZGF0ZUYKICAgICBzZXRJbm5lclRleHRWYWx1ZShzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFF
bGVtZW50Kj4obm9kZSgpKS0+dmFsdWUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmU6OmNhY2hlU2VsZWN0aW9uKGludCBzdGFydCwgaW50IGVuZCkKLXsKLSAgICBzdGF0
aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSgpKS0+Y2FjaGVTZWxlY3Rpb24oc3Rh
cnQsIGVuZCk7Ci19Ci0KIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm9s
TXVsdGlMaW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRT
dHlsZSkgY29uc3QKIHsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHRleHRCbG9ja1N0eWxlID0g
UmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgJKHJldmlzaW9uIDkwNTcxKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGlu
dCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIHZpcnR1
YWwgdm9pZCBjYWNoZVNlbGVjdGlvbihpbnQgc3RhcnQsIGludCBlbmQpOwogCiAgICAgdmlydHVh
bCBSZW5kZXJTdHlsZSogdGV4dEJhc2VTdHlsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUq
IHN0YXJ0U3R5bGUpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAJKHJldmlzaW9uIDkwNTcx
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMiwxMSArNTMyLDYgQEAgdm9pZCBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmU6OnVwZGF0ZQogICAgICAgICBtX3NlYXJjaFBvcHVwLT5wb3B1cE1l
bnUoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmU6OmNhY2hlU2VsZWN0aW9uKGludCBzdGFydCwgaW50IGVuZCkKLXsKLSAgICBpbnB1
dEVsZW1lbnQoKS0+Y2FjaGVTZWxlY3Rpb24oc3RhcnQsIGVuZCk7Ci19Ci0KIFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Y3JlYXRlSW5uZXJUZXh0
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0CiB7CiAgICAgUmVmUHRy
PFJlbmRlclN0eWxlPiB0ZXh0QmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsgICAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lLmgJKHJldmlzaW9uIDkwNTcxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw3ICs4NCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdENvbnRyb2xIZWln
aHRCYXNlZE9uTGluZUhlaWdodChpbnQgbGluZUhlaWdodCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRnJvbUVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FjaGVTZWxlY3Rpb24oaW50
IHN0YXJ0LCBpbnQgZW5kKTsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogCiAgICAgdmlydHVhbCBS
ZW5kZXJTdHlsZSogdGV4dEJhc2VTdHlsZSgpIGNvbnN0Owo=
</data>
<flag name="review"
          id="94633"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>