<?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>109549</bug_id>
          
          <creation_ts>2013-02-11 23:40:55 -0800</creation_ts>
          <short_desc>Turn avoidIntersectionWithNode into Editor member functions to encapsulate delete button controller</short_desc>
          <delta_ts>2013-02-12 20:11:17 -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>New Bugs</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>
          <dependson>109534</dependson>
          <blocked>109550</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>benjamin</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enrica</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>leviw</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tony</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>830606</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-11 23:40:55 -0800</bug_when>
    <thetext>Turn avoidIntersectionWithNode into Editor member functions to encapsulate delete button controller</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830611</commentid>
    <comment_count>1</comment_count>
      <attachid>187785</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-11 23:53:02 -0800</bug_when>
    <thetext>Created attachment 187785
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830619</commentid>
    <comment_count>2</comment_count>
      <attachid>187785</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-02-12 00:02:53 -0800</bug_when>
    <thetext>Comment on attachment 187785
Cleanup

Attachment 187785 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16521010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830621</commentid>
    <comment_count>3</comment_count>
      <attachid>187785</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-12 00:03:06 -0800</bug_when>
    <thetext>Comment on attachment 187785
Cleanup

Attachment 187785 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16454065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830624</commentid>
    <comment_count>4</comment_count>
      <attachid>187785</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-12 00:03:38 -0800</bug_when>
    <thetext>Comment on attachment 187785
Cleanup

Attachment 187785 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16521009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830625</commentid>
    <comment_count>5</comment_count>
      <attachid>187785</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-02-12 00:04:45 -0800</bug_when>
    <thetext>Comment on attachment 187785
Cleanup

Attachment 187785 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/16520008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830635</commentid>
    <comment_count>6</comment_count>
      <attachid>187785</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 00:13:07 -0800</bug_when>
    <thetext>Comment on attachment 187785
Cleanup

Attachment 187785 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16439063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830637</commentid>
    <comment_count>7</comment_count>
      <attachid>187785</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 00:14:37 -0800</bug_when>
    <thetext>Comment on attachment 187785
Cleanup

Attachment 187785 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16515011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830642</commentid>
    <comment_count>8</comment_count>
      <attachid>187785</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-02-12 00:24:48 -0800</bug_when>
    <thetext>Comment on attachment 187785
Cleanup

Attachment 187785 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16520006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830646</commentid>
    <comment_count>9</comment_count>
      <attachid>187792</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-12 00:27:06 -0800</bug_when>
    <thetext>Created attachment 187792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830648</commentid>
    <comment_count>10</comment_count>
      <attachid>187792</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-12 00:32:55 -0800</bug_when>
    <thetext>Comment on attachment 187792
Patch

Attachment 187792 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16444087</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830651</commentid>
    <comment_count>11</comment_count>
      <attachid>187792</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-12 00:36:19 -0800</bug_when>
    <thetext>Comment on attachment 187792
Patch

Attachment 187792 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16519022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830656</commentid>
    <comment_count>12</comment_count>
      <attachid>187792</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-02-12 00:38:48 -0800</bug_when>
    <thetext>Comment on attachment 187792
Patch

Attachment 187792 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16444090</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830661</commentid>
    <comment_count>13</comment_count>
      <attachid>187798</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-12 00:45:05 -0800</bug_when>
    <thetext>Created attachment 187798
Fixed build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831097</commentid>
    <comment_count>14</comment_count>
      <attachid>187798</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-02-12 11:06:24 -0800</bug_when>
    <thetext>Comment on attachment 187798
Fixed build

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

&gt; Source/WebCore/editing/Editor.h:105
&gt; +    PassRefPtr&lt;Range&gt; avoidIntersectionWithDeleteButtonController(const Range* range) const { return range ? range-&gt;cloneRange(ASSERT_NO_EXCEPTION) : 0; }

Maybe mention why we need to clone the range in the ChangeLog?

&gt; Source/WebCore/editing/markup.cpp:642
&gt; +    // Disable the delete button so it&apos;s elements are not serialized into the markup,

Nit: it&apos;s -&gt; its</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831169</commentid>
    <comment_count>15</comment_count>
      <attachid>187798</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-12 12:56:03 -0800</bug_when>
    <thetext>Comment on attachment 187798
Fixed build

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

Thanks for the review!

&gt;&gt; Source/WebCore/editing/Editor.h:105
&gt;&gt; +    PassRefPtr&lt;Range&gt; avoidIntersectionWithDeleteButtonController(const Range* range) const { return range ? range-&gt;cloneRange(ASSERT_NO_EXCEPTION) : 0; }
&gt; 
&gt; Maybe mention why we need to clone the range in the ChangeLog?

The only reason I need it is because we take const Range* :( But this code is never used because the only caller is createMarkup and
the code is wrapped inside if-def ENABLE(DELETION_UI) so I&apos;m gonna just delete this function for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831517</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-12 18:40:53 -0800</bug_when>
    <thetext>Committed r142705: &lt;http://trac.webkit.org/changeset/142705&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831558</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-12 20:11:17 -0800</bug_when>
    <thetext>Apparently there was one more caller of Range* function :( Landed a crude fix in http://trac.webkit.org/changeset/142711.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187785</attachid>
            <date>2013-02-11 23:53:02 -0800</date>
            <delta_ts>2013-02-12 00:27:03 -0800</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-109549-20130211234934.patch</filename>
            <type>text/plain</type>
            <size>16273</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjU4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTExICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFR1cm4gYXZvaWRJbnRlcnNlY3Rp
b25XaXRoTm9kZSBpbnRvIEVkaXRvciBtZW1iZXIgZnVuY3Rpb25zIHRvIGVuY2Fwc3VsYXRlIGRl
bGV0ZSBidXR0b24gY29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA5NTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVuYW1lZCBhdm9pZEludGVyc2VjdGlvbldpdGhOb2RlIHRvIEVkaXRv
cjo6YXZvaWRJbnRlcnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJvbGxlciBhbmQgYWRkZWQg
dHJpdmlhbAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgd2hlbiBkZWxldGUgYnV0dG9uIGNvbnRy
b2xsZXJzIGFyZSBkaXNhYmxlZCAoRU5BQkxFX0RFTEVUSU9OX1VJIGlzIDApLgorCisgICAgICAg
ICogZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kOjpFZGl0Q29t
bWFuZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjphdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKTogTW92
ZWQgZnJvbSBodG1sZWRpdGluZy5jcHAgYW5kIHJlbmFtZWQuCisgICAgICAgIFRoZSB2ZXJzaW9u
IHRoYXQgdGFrZXMgVmlzaWJsZVNlbGVjdGlvbiBoYXMgYmVlbiB1cGRhdGVkIHRvIHVzZSB1cGRh
dGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsIHRvIHNoYXJlCisgICAgICAgIG1vZGUgY29kZSB3aXRo
IHRoYXQgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJhbmdlRm9yUG9pbnQp
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIpOiBBZGRlZDsgdHJp
dmlhbCBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6
CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorICAgICAgICAqIGVkaXRpbmcvbWFy
a3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hcmt1cEludGVybmFsKTogRXh0cmFj
dGVkIGZyb20gY3JlYXRlTWFya3VwLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKToK
KwogMjAxMy0wMi0xMSAgVmlhdGNoZXNsYXYgT3N0YXBlbmtvICA8c2wub3N0YXBlbmtvQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtRdF1bRUZMXVtXZWJHTF0gTWlub3IgcmVmYWN0b3Jpbmcgb2Yg
R3JhcGhpY3NTdXJmYWNlL0dyYXBoaWNzU3VyZmFjZUdMWApJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDE0MjU3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsyNyw2IEBA
CiAjaW5jbHVkZSAiRWRpdENvbW1hbmQuaCIKIAogI2luY2x1ZGUgIkNvbXBvc2l0ZUVkaXRDb21t
YW5kLmgiCi0jaWYgRU5BQkxFKERFTEVUSU9OX1VJKQotI2luY2x1ZGUgIkRlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXIuaCIKLSNlbmRpZgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgpAQCAtNDgsMTEgKzQ1LDcgQEAgRWRpdENvbW1h
bmQ6OkVkaXRDb21tYW5kKERvY3VtZW50KiBkb2N1bQogewogICAgIEFTU0VSVChtX2RvY3VtZW50
KTsKICAgICBBU1NFUlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7Ci0jaWYgRU5BQkxFKERFTEVUSU9O
X1VJKQotICAgIHNldFN0YXJ0aW5nU2VsZWN0aW9uKGF2b2lkSW50ZXJzZWN0aW9uV2l0aE5vZGUo
bV9kb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLCBtX2RvY3VtZW50
LT5mcmFtZSgpLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5jb250YWluZXJF
bGVtZW50KCkpKTsKLSNlbHNlCi0gICAgc2V0U3RhcnRpbmdTZWxlY3Rpb24obV9kb2N1bWVudC0+
ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKLSNlbmRpZgorICAgIHNldFN0YXJ0
aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5hdm9pZEludGVyc2Vj
dGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKG1fZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVj
dGlvbigpLT5zZWxlY3Rpb24oKSkpOwogICAgIHNldEVuZGluZ1NlbGVjdGlvbihtX3N0YXJ0aW5n
U2VsZWN0aW9uKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNp
b24gMTQyNTc2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsNiArMTA0LDYzIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1
c2luZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CiAKK1Bhc3NSZWZQ
dHI8UmFuZ2U+IEVkaXRvcjo6YXZvaWRJbnRlcnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJv
bGxlcihjb25zdCBSYW5nZSogcmFuZ2UpIGNvbnN0Cit7CisgICAgRGVsZXRlQnV0dG9uQ29udHJv
bGxlciogY29udHJvbGxlciA9IGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKTsKKyAgICBpZiAoIXJh
bmdlIHx8ICFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHJhbmdlLT5vd25lckRvY3VtZW50KCk7CisKKyAgICBOb2RlKiBzdGFydENvbnRh
aW5lciA9IHJhbmdlLT5zdGFydENvbnRhaW5lcigpOworICAgIGludCBzdGFydE9mZnNldCA9IHJh
bmdlLT5zdGFydE9mZnNldCgpOworICAgIE5vZGUqIGVuZENvbnRhaW5lciA9IHJhbmdlLT5lbmRD
b250YWluZXIoKTsKKyAgICBpbnQgZW5kT2Zmc2V0ID0gcmFuZ2UtPmVuZE9mZnNldCgpOworCisg
ICAgaWYgKCFzdGFydENvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQo
ZW5kQ29udGFpbmVyKTsKKworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBjb250cm9sbGVyLT5jb250
YWluZXJFbGVtZW50KCk7CisgICAgaWYgKHN0YXJ0Q29udGFpbmVyID09IGVsZW1lbnQgfHwgc3Rh
cnRDb250YWluZXItPmlzRGVzY2VuZGFudE9mKGVsZW1lbnQpKSB7CisgICAgICAgIEFTU0VSVChl
bGVtZW50LT5wYXJlbnROb2RlKCkpOworICAgICAgICBzdGFydENvbnRhaW5lciA9IGVsZW1lbnQt
PnBhcmVudE5vZGUoKTsKKyAgICAgICAgc3RhcnRPZmZzZXQgPSBlbGVtZW50LT5ub2RlSW5kZXgo
KTsKKyAgICB9CisgICAgaWYgKGVuZENvbnRhaW5lciA9PSBlbGVtZW50IHx8IGVuZENvbnRhaW5l
ci0+aXNEZXNjZW5kYW50T2YoZWxlbWVudCkpIHsKKyAgICAgICAgQVNTRVJUKGVsZW1lbnQtPnBh
cmVudE5vZGUoKSk7CisgICAgICAgIGVuZENvbnRhaW5lciA9IGVsZW1lbnQtPnBhcmVudE5vZGUo
KTsKKyAgICAgICAgZW5kT2Zmc2V0ID0gZWxlbWVudC0+bm9kZUluZGV4KCk7CisgICAgfQorCisg
ICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHN0YXJ0Q29udGFpbmVyLCBzdGFydE9m
ZnNldCwgZW5kQ29udGFpbmVyLCBlbmRPZmZzZXQpOworfQorCitWaXNpYmxlU2VsZWN0aW9uIEVk
aXRvcjo6YXZvaWRJbnRlcnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJvbGxlcihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pIGNvbnN0Cit7CisgICAgRGVsZXRlQnV0dG9uQ29u
dHJvbGxlciogY29udHJvbGxlciA9IGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKTsKKyAgICBpZiAo
c2VsZWN0aW9uLmlzTm9uZSgpIHx8ICFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gc2VsZWN0
aW9uOworCisgICAgRWxlbWVudCogZWxlbWVudCA9IGNvbnRyb2xsZXItPmNvbnRhaW5lckVsZW1l
bnQoKTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBzZWxlY3Rpb247CisgICAg
VmlzaWJsZVNlbGVjdGlvbiB1cGRhdGVkU2VsZWN0aW9uID0gc2VsZWN0aW9uOworCisgICAgUG9z
aXRpb24gdXBkYXRlZEJhc2UgPSBzZWxlY3Rpb24uYmFzZSgpOworICAgIHVwZGF0ZVBvc2l0aW9u
Rm9yTm9kZVJlbW92YWwodXBkYXRlZEJhc2UsIGVsZW1lbnQpOworICAgIGlmICh1cGRhdGVkQmFz
ZSAhPSBzZWxlY3Rpb24uYmFzZSgpKQorICAgICAgICB1cGRhdGVkU2VsZWN0aW9uLnNldEJhc2Uo
dXBkYXRlZEJhc2UpOworCisgICAgUG9zaXRpb24gdXBkYXRlZEV4dGVudCA9IHNlbGVjdGlvbi5i
YXNlKCk7CisgICAgdXBkYXRlUG9zaXRpb25Gb3JOb2RlUmVtb3ZhbCh1cGRhdGVkRXh0ZW50LCBl
bGVtZW50KTsKKyAgICBpZiAodXBkYXRlZEV4dGVudCAhPSBzZWxlY3Rpb24uZXh0ZW50KCkpCisg
ICAgICAgIHVwZGF0ZWRTZWxlY3Rpb24uc2V0RXh0ZW50KHVwZGF0ZWRFeHRlbnQpOworCisgICAg
cmV0dXJuIHVwZGF0ZWRTZWxlY3Rpb247Cit9CisKIC8vIFdoZW4gYW4gZXZlbnQgaGFuZGxlciBo
YXMgbW92ZWQgdGhlIHNlbGVjdGlvbiBvdXRzaWRlIG9mIGEgdGV4dCBjb250cm9sCiAvLyB3ZSBz
aG91bGQgdXNlIHRoZSB0YXJnZXQgY29udHJvbCdzIHNlbGVjdGlvbiBmb3IgdGhpcyBlZGl0aW5n
IG9wZXJhdGlvbi4KIFZpc2libGVTZWxlY3Rpb24gRWRpdG9yOjpzZWxlY3Rpb25Gb3JDb21tYW5k
KEV2ZW50KiBldmVudCkKQEAgLTIzODcsMTEgKzI0NDQsOCBAQCBQYXNzUmVmUHRyPFJhbmdlPiBF
ZGl0b3I6OnJhbmdlRm9yUG9pbnQoCiAgICAgICAgIHJldHVybiAwOwogICAgIEludFBvaW50IGZy
YW1lUG9pbnQgPSBmcmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMod2luZG93UG9pbnQpOwogICAg
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKGZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2lu
dChmcmFtZVBvaW50KSk7Ci0jaWYgRU5BQkxFKERFTEVUSU9OX1VJKQotICAgIHJldHVybiBhdm9p
ZEludGVyc2VjdGlvbldpdGhOb2RlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgp
LCBtX2RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmNvbnRhaW5lckVsZW1lbnQoKSk7Ci0jZWxzZQot
ICAgIHJldHVybiBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSNlbmRpZgorCisgICAg
cmV0dXJuIGF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoc2VsZWN0
aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogfQogCiB2b2lkIEVkaXRvcjo6cmV2ZWFs
U2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxp
Z25tZW50LCBSZXZlYWxFeHRlbnRPcHRpb24gcmV2ZWFsRXh0ZW50T3B0aW9uKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiAxNDI1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw5ICs5NiwxNiBAQCBwdWJsaWM6
CiAgICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgY29uc3Q7CiAKICAgICBGcmFt
ZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CisKICNpZiBFTkFCTEUoREVMRVRJ
T05fVUkpCiAgICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0dG9uQ29udHJvbGxl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZXRlQnV0dG9uQ29udHJvbGxlci5nZXQoKTsgfQorICAg
IFBhc3NSZWZQdHI8UmFuZ2U+IGF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRy
b2xsZXIoY29uc3QgUmFuZ2UqKSBjb25zdDsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIGF2b2lkSW50
ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYpIGNvbnN0OworI2Vsc2UKKyAgICBQYXNzUmVmUHRyPFJhbmdlPiBhdm9pZEludGVyc2VjdGlv
bldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKGNvbnN0IFJhbmdlKiByYW5nZSkgY29uc3QgeyBy
ZXR1cm4gcmFuZ2U7IH0KKyAgICBWaXNpYmxlU2VsZWN0aW9uIGF2b2lkSW50ZXJzZWN0aW9uV2l0
aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
KSBjb25zdCB7IHJldHVybiBzZWxlY3Rpb247IH0KICNlbmRpZgorCiAgICAgQ29tcG9zaXRlRWRp
dENvbW1hbmQqIGxhc3RFZGl0Q29tbWFuZCgpIHsgcmV0dXJuIG1fbGFzdEVkaXRDb21tYW5kLmdl
dCgpOyB9CiAKICAgICB2b2lkIGhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHJldmlzaW9uIDE0MjU3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgyLDYzICsxMTgyLDYgQEAgYm9vbCBpc05vblRhYmxlQ2VsbEhUTUxCbG9ja0Vs
ZW1lbnQoY29ucwogICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGg0VGFnKQogICAgICAgICB8
fCBub2RlLT5oYXNUYWdOYW1lKGg1VGFnKTsKIH0KLQotI2lmIEVOQUJMRShERUxFVElPTl9VSSkK
LVBhc3NSZWZQdHI8UmFuZ2U+IGF2b2lkSW50ZXJzZWN0aW9uV2l0aE5vZGUoY29uc3QgUmFuZ2Uq
IHJhbmdlLCBOb2RlKiBub2RlKQotewotICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcmFuZ2UtPm93bmVyRG9jdW1lbnQoKTsKLQot
ICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAg
aW50IHN0YXJ0T2Zmc2V0ID0gcmFuZ2UtPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgTm9kZSogZW5kQ29u
dGFpbmVyID0gcmFuZ2UtPmVuZENvbnRhaW5lcigpOwotICAgIGludCBlbmRPZmZzZXQgPSByYW5n
ZS0+ZW5kT2Zmc2V0KCk7Ci0KLSAgICBpZiAoIXN0YXJ0Q29udGFpbmVyKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIEFTU0VSVChlbmRDb250YWluZXIpOwotCi0gICAgaWYgKHN0YXJ0Q29udGFp
bmVyID09IG5vZGUgfHwgc3RhcnRDb250YWluZXItPmlzRGVzY2VuZGFudE9mKG5vZGUpKSB7Ci0g
ICAgICAgIEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCkpOwotICAgICAgICBzdGFydENvbnRhaW5l
ciA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgc3RhcnRPZmZzZXQgPSBub2RlLT5ub2Rl
SW5kZXgoKTsKLSAgICB9Ci0gICAgaWYgKGVuZENvbnRhaW5lciA9PSBub2RlIHx8IGVuZENvbnRh
aW5lci0+aXNEZXNjZW5kYW50T2Yobm9kZSkpIHsKLSAgICAgICAgQVNTRVJUKG5vZGUtPnBhcmVu
dE5vZGUoKSk7Ci0gICAgICAgIGVuZENvbnRhaW5lciA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAg
ICAgICAgZW5kT2Zmc2V0ID0gbm9kZS0+bm9kZUluZGV4KCk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHN0YXJ0Q29udGFpbmVyLCBzdGFydE9mZnNldCwgZW5k
Q29udGFpbmVyLCBlbmRPZmZzZXQpOwotfQotCi1WaXNpYmxlU2VsZWN0aW9uIGF2b2lkSW50ZXJz
ZWN0aW9uV2l0aE5vZGUoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBOb2RlKiBu
b2RlKQotewotICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCi0gICAgICAgIHJldHVybiBWaXNp
YmxlU2VsZWN0aW9uKHNlbGVjdGlvbik7Ci0KLSAgICBWaXNpYmxlU2VsZWN0aW9uIHVwZGF0ZWRT
ZWxlY3Rpb24oc2VsZWN0aW9uKTsKLSAgICBOb2RlKiBiYXNlID0gc2VsZWN0aW9uLmJhc2UoKS5k
ZXByZWNhdGVkTm9kZSgpOwotICAgIE5vZGUqIGV4dGVudCA9IHNlbGVjdGlvbi5leHRlbnQoKS5k
ZXByZWNhdGVkTm9kZSgpOwotICAgIEFTU0VSVChiYXNlKTsKLSAgICBBU1NFUlQoZXh0ZW50KTsK
LQotICAgIGlmIChiYXNlID09IG5vZGUgfHwgYmFzZS0+aXNEZXNjZW5kYW50T2Yobm9kZSkpIHsK
LSAgICAgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7Ci0gICAgICAgIHVwZGF0ZWRTZWxl
Y3Rpb24uc2V0QmFzZShwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShub2RlKSk7Ci0gICAgfQot
Ci0gICAgaWYgKGV4dGVudCA9PSBub2RlIHx8IGV4dGVudC0+aXNEZXNjZW5kYW50T2Yobm9kZSkp
IHsKLSAgICAgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7Ci0gICAgICAgIHVwZGF0ZWRT
ZWxlY3Rpb24uc2V0RXh0ZW50KHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gdXBkYXRlZFNlbGVjdGlvbjsKLX0KLSNlbmRpZgogICAgIAogUG9z
aXRpb24gYWRqdXN0ZWRTZWxlY3Rpb25TdGFydEZvclN0eWxlQ29tcHV0YXRpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9odG1sZWRpdGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRt
bGVkaXRpbmcuaAkocmV2aXNpb24gMTQyNTc1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9o
dG1sZWRpdGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsOSArMTkyLDYgQEAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KAogCiBQYXNzUmVmUHRyPFJhbmdlPiBjcmVh
dGVSYW5nZShQYXNzUmVmUHRyPERvY3VtZW50PiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFy
dCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmQsIEV4Y2VwdGlvbkNvZGUmKTsKIFBhc3NSZWZQ
dHI8UmFuZ2U+IGV4dGVuZFJhbmdlVG9XcmFwcGluZ05vZGVzKFBhc3NSZWZQdHI8UmFuZ2U+IHJh
bmdlVG9FeHRlbmQsIGNvbnN0IFJhbmdlKiBtYXhpbXVtUmFuZ2UsIGNvbnN0IE5vZGUqIHJvb3RO
b2RlKTsKLSNpZiBFTkFCTEUoREVMRVRJT05fVUkpCi1QYXNzUmVmUHRyPFJhbmdlPiBhdm9pZElu
dGVyc2VjdGlvbldpdGhOb2RlKGNvbnN0IFJhbmdlKiwgTm9kZSopOwotI2VuZGlmCiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIC8vIEhUTUxFbGVtZW50CkBAIC0yMzcsOSArMjM0LDYgQEAgYm9vbCBj
YW5NZXJnZUxpc3RzKEVsZW1lbnQqIGZpcnN0TGlzdCwgRQogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiAvLyBGdW5jdGlvbnMgcmV0dXJuaW5nIFZpc2libGVTZWxlY3Rpb24KLSNpZiBFTkFCTEUoREVM
RVRJT05fVUkpCi1WaXNpYmxlU2VsZWN0aW9uIGF2b2lkSW50ZXJzZWN0aW9uV2l0aE5vZGUoY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYsIE5vZGUqKTsKLSNlbmRpZgogVmlzaWJsZVNlbGVjdGlvbiBz
ZWxlY3Rpb25Gb3JQYXJhZ3JhcGhJdGVyYXRpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwog
CiBQb3NpdGlvbiBhZGp1c3RlZFNlbGVjdGlvblN0YXJ0Rm9yU3R5bGVDb21wdXRhdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShy
ZXZpc2lvbiAxNDI1NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU0NCwzOCArNTQ0LDIwIEBAIHN0YXRpYyBOb2RlKiBoaWdoZXN0QW5j
ZXN0b3JUb1dyYXBNYXJrdXAKIAogLy8gRklYTUU6IFNob3VsZG4ndCB3ZSBvbWl0IHN0eWxlIGlu
Zm8gd2hlbiBhbm5vdGF0ZSA9PSBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2U/IAogLy8gRklY
TUU6IEF0IGxlYXN0LCBhbm5vdGF0aW9uIGFuZCBzdHlsZSBpbmZvIHNob3VsZCBwcm9iYWJseSBu
b3QgYmUgaW5jbHVkZWQgaW4gcmFuZ2UubWFya3VwU3RyaW5nKCkKLVN0cmluZyBjcmVhdGVNYXJr
dXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFubm90YXRlRm9y
SW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywg
RUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcykKK3N0YXRpYyBTdHJpbmcgY3JlYXRlTWFy
a3VwSW50ZXJuYWwoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBSYW5nZSogcmFuZ2UsIGNvbnN0
IFJhbmdlKiB1cGRhdGVkUmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVzLAorICAgIEVBbm5vdGF0
ZUZvckludGVyY2hhbmdlIHNob3VsZEFubm90YXRlLCBib29sIGNvbnZlcnRCbG9ja3NUb0lubGlu
ZXMsIEVBYnNvbHV0ZVVSTHMgc2hvdWxkUmVzb2x2ZVVSTHMpCiB7CisgICAgQVNTRVJUKGRvY3Vt
ZW50KTsKKyAgICBBU1NFUlQocmFuZ2UpOworICAgIEFTU0VSVCh1cGRhdGVkUmFuZ2UpOwogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBpbnRlcmNoYW5nZU5ld2xpbmVTdHJp
bmcsIChBU0NJSUxpdGVyYWwoIjxiciBjbGFzcz1cIiIgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUg
IlwiPiIpKSk7CiAKLSAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm4gIiI7Ci0KLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSByYW5nZS0+b3duZXJEb2N1bWVudCgpOwotICAgIGlmICghZG9j
dW1lbnQpCi0gICAgICAgIHJldHVybiAiIjsKLQotICAgIC8vIERpc2FibGUgdGhlIGRlbGV0ZSBi
dXR0b24gc28gaXQncyBlbGVtZW50cyBhcmUgbm90IHNlcmlhbGl6ZWQgaW50byB0aGUgbWFya3Vw
LAotICAgIC8vIGJ1dCBtYWtlIHN1cmUgbmVpdGhlciBlbmRwb2ludCBpcyBpbnNpZGUgdGhlIGRl
bGV0ZSB1c2VyIGludGVyZmFjZS4KLSAgICBSZWZQdHI8UmFuZ2U+IHVwZGF0ZWRSYW5nZTsKLSNp
ZiBFTkFCTEUoREVMRVRJT05fVUkpCi0gICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1l
KCk7Ci0gICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0dG9uID0gZnJhbWUgPyBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKSA6IDA7Ci0gICAgdXBkYXRl
ZFJhbmdlID0gYXZvaWRJbnRlcnNlY3Rpb25XaXRoTm9kZShyYW5nZSwgZGVsZXRlQnV0dG9uID8g
ZGVsZXRlQnV0dG9uLT5jb250YWluZXJFbGVtZW50KCkgOiAwKTsKLSAgICBpZiAoIXVwZGF0ZWRS
YW5nZSkKLSAgICAgICAgcmV0dXJuICIiOwotICAgIGlmIChkZWxldGVCdXR0b24pCi0gICAgICAg
IGRlbGV0ZUJ1dHRvbi0+ZGlzYWJsZSgpOwotI2Vsc2UKLSAgICB1cGRhdGVkUmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKHJhbmdlLT5vd25lckRvY3VtZW50KCksIHJhbmdlLT5zdGFydENvbnRhaW5lcigp
LCByYW5nZS0+c3RhcnRPZmZzZXQoKSwgcmFuZ2UtPmVuZENvbnRhaW5lcigpLCByYW5nZS0+ZW5k
T2Zmc2V0KCkpOwotI2VuZGlmCi0KICAgICBib29sIGNvbGxhcHNlZCA9IHVwZGF0ZWRSYW5nZS0+
Y29sbGFwc2VkKEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIGlmIChjb2xsYXBzZWQpCi0gICAg
ICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgTm9kZSog
Y29tbW9uQW5jZXN0b3IgPSB1cGRhdGVkUmFuZ2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKEFT
U0VSVF9OT19FWENFUFRJT04pOwogICAgIGlmICghY29tbW9uQW5jZXN0b3IpCi0gICAgICAgIHJl
dHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBkb2N1bWVudC0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKQEAgLTU4NCwzMiArNTY2
LDIyIEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAKICAgICAvLyBG
SVhNRTogRG8gdGhpcyBmb3IgYWxsIGZ1bGx5IHNlbGVjdGVkIGJsb2Nrcywgbm90IGp1c3QgdGhl
IGJvZHkuCiAgICAgaWYgKGJvZHkgJiYgYXJlUmFuZ2VzRXF1YWwoVmlzaWJsZVNlbGVjdGlvbjo6
c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKGJvZHkpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0
KCksIHJhbmdlKSkKICAgICAgICAgZnVsbHlTZWxlY3RlZFJvb3QgPSBib2R5OwotICAgIE5vZGUq
IHNwZWNpYWxDb21tb25BbmNlc3RvciA9IGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1hcmt1cCh1cGRh
dGVkUmFuZ2UuZ2V0KCksIHNob3VsZEFubm90YXRlKTsKLSAgICBTdHlsZWRNYXJrdXBBY2N1bXVs
YXRvciBhY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHNob3VsZEFubm90YXRl
LCB1cGRhdGVkUmFuZ2UuZ2V0KCksIHNwZWNpYWxDb21tb25BbmNlc3Rvcik7CisgICAgTm9kZSog
c3BlY2lhbENvbW1vbkFuY2VzdG9yID0gaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKHVwZGF0
ZWRSYW5nZSwgc2hvdWxkQW5ub3RhdGUpOworICAgIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yIGFj
Y3VtdWxhdG9yKG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcywgc2hvdWxkQW5ub3RhdGUsIHVwZGF0
ZWRSYW5nZSwgc3BlY2lhbENvbW1vbkFuY2VzdG9yKTsKICAgICBOb2RlKiBwYXN0RW5kID0gdXBk
YXRlZFJhbmdlLT5wYXN0TGFzdE5vZGUoKTsKIAogICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHVwZGF0
ZWRSYW5nZS0+Zmlyc3ROb2RlKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydCh1
cGRhdGVkUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgVlBfREVGQVVMVF9BRkZJTklUWSk7CiAgICAg
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQodXBkYXRlZFJhbmdlLT5lbmRQb3NpdGlvbigpLCBW
UF9ERUZBVUxUX0FGRklOSVRZKTsKICAgICBpZiAoc2hvdWxkQW5ub3RhdGUgPT0gQW5ub3RhdGVG
b3JJbnRlcmNoYW5nZSAmJiBuZWVkSW50ZXJjaGFuZ2VOZXdsaW5lQWZ0ZXIodmlzaWJsZVN0YXJ0
KSkgewotICAgICAgICBpZiAodmlzaWJsZVN0YXJ0ID09IHZpc2libGVFbmQucHJldmlvdXMoKSkg
ewotI2lmIEVOQUJMRShERUxFVElPTl9VSSkKLSAgICAgICAgICAgIGlmIChkZWxldGVCdXR0b24p
Ci0gICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uLT5lbmFibGUoKTsKLSNlbmRpZgorICAgICAg
ICBpZiAodmlzaWJsZVN0YXJ0ID09IHZpc2libGVFbmQucHJldmlvdXMoKSkKICAgICAgICAgICAg
IHJldHVybiBpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmc7Ci0gICAgICAgIH0KIAogICAgICAgICBh
Y2N1bXVsYXRvci5hcHBlbmRTdHJpbmcoaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKTsKICAgICAg
ICAgc3RhcnROb2RlID0gdmlzaWJsZVN0YXJ0Lm5leHQoKS5kZWVwRXF1aXZhbGVudCgpLmRlcHJl
Y2F0ZWROb2RlKCk7CiAKLSAgICAgICAgaWYgKHBhc3RFbmQgJiYgUmFuZ2U6OmNvbXBhcmVCb3Vu
ZGFyeVBvaW50cyhzdGFydE5vZGUsIDAsIHBhc3RFbmQsIDAsIEFTU0VSVF9OT19FWENFUFRJT04p
ID49IDApIHsKLSNpZiBFTkFCTEUoREVMRVRJT05fVUkpCi0gICAgICAgICAgICBpZiAoZGVsZXRl
QnV0dG9uKQotICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbi0+ZW5hYmxlKCk7Ci0jZW5kaWYK
KyAgICAgICAgaWYgKHBhc3RFbmQgJiYgUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhzdGFy
dE5vZGUsIDAsIHBhc3RFbmQsIDAsIEFTU0VSVF9OT19FWENFUFRJT04pID49IDApCiAgICAgICAg
ICAgICByZXR1cm4gaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nOwotICAgICAgICB9CiAgICAgfQog
CiAgICAgTm9kZSogbGFzdENsb3NlZCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKHN0YXJ0
Tm9kZSwgcGFzdEVuZCk7CkBAIC02NTUsMTEgKzYyNywzNyBAQCBTdHJpbmcgY3JlYXRlTWFya3Vw
KGNvbnN0IFJhbmdlKiByYW5nZSwgCiAgICAgaWYgKHNob3VsZEFubm90YXRlID09IEFubm90YXRl
Rm9ySW50ZXJjaGFuZ2UgJiYgbmVlZEludGVyY2hhbmdlTmV3bGluZUFmdGVyKHZpc2libGVFbmQu
cHJldmlvdXMoKSkpCiAgICAgICAgIGFjY3VtdWxhdG9yLmFwcGVuZFN0cmluZyhpbnRlcmNoYW5n
ZU5ld2xpbmVTdHJpbmcpOwogCisgICAgcmV0dXJuIGFjY3VtdWxhdG9yLnRha2VSZXN1bHRzKCk7
Cit9CisKK1N0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8Tm9k
ZSo+KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsIGJvb2wg
Y29udmVydEJsb2Nrc1RvSW5saW5lcywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcykK
K3sKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHJhbmdlLT5vd25lckRvY3VtZW50KCk7CisgICAgaWYgKCFk
b2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICAvLyBEaXNhYmxl
IHRoZSBkZWxldGUgYnV0dG9uIHNvIGl0J3MgZWxlbWVudHMgYXJlIG5vdCBzZXJpYWxpemVkIGlu
dG8gdGhlIG1hcmt1cCwKKyAgICAvLyBidXQgbWFrZSBzdXJlIG5laXRoZXIgZW5kcG9pbnQgaXMg
aW5zaWRlIHRoZSBkZWxldGUgdXNlciBpbnRlcmZhY2UuCiAjaWYgRU5BQkxFKERFTEVUSU9OX1VJ
KQotICAgIGlmIChkZWxldGVCdXR0b24pCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZy
YW1lKCk7CisgICAgaWYgKERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIqIGRlbGV0ZUJ1dHRvbiA9IGZy
YW1lID8gZnJhbWUtPmVkaXRvcigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCkgOiAwKSB7Cisg
ICAgICAgIFJlZlB0cjxSYW5nZT4gdXBkYXRlZFJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5hdm9p
ZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKHJhbmdlKTsKKyAgICAgICAg
aWYgKCF1cGRhdGVkUmFuZ2UpCisgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKwor
ICAgICAgICBkZWxldGVCdXR0b24tPmRpc2FibGUoKTsKKworICAgICAgICBTdHJpbmcgcmVzdWx0
ID0gY3JlYXRlTWFya3VwSW50ZXJuYWwoZG9jdW1lbnQsIHJhbmdlLCB1cGRhdGVkUmFuZ2UuZ2V0
KCksIG5vZGVzLCBzaG91bGRBbm5vdGF0ZSwgY29udmVydEJsb2Nrc1RvSW5saW5lcywgc2hvdWxk
UmVzb2x2ZVVSTHMpOworCiAgICAgICAgIGRlbGV0ZUJ1dHRvbi0+ZW5hYmxlKCk7CisKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAjZW5kaWYKLSAgICByZXR1cm4gYWNjdW11bGF0b3Iu
dGFrZVJlc3VsdHMoKTsKKyAgICByZXR1cm4gY3JlYXRlTWFya3VwSW50ZXJuYWwoZG9jdW1lbnQs
IHJhbmdlLCByYW5nZSwgbm9kZXMsIHNob3VsZEFubm90YXRlLCBjb252ZXJ0QmxvY2tzVG9Jbmxp
bmVzLCBzaG91bGRSZXNvbHZlVVJMcyk7CiB9CiAKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJt
aXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187792</attachid>
            <date>2013-02-12 00:27:06 -0800</date>
            <delta_ts>2013-02-12 00:45:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109549-20130212002338.patch</filename>
            <type>text/plain</type>
            <size>16318</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjU4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTExICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFR1cm4gYXZvaWRJbnRlcnNlY3Rp
b25XaXRoTm9kZSBpbnRvIEVkaXRvciBtZW1iZXIgZnVuY3Rpb25zIHRvIGVuY2Fwc3VsYXRlIGRl
bGV0ZSBidXR0b24gY29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA5NTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVuYW1lZCBhdm9pZEludGVyc2VjdGlvbldpdGhOb2RlIHRvIEVkaXRv
cjo6YXZvaWRJbnRlcnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJvbGxlciBhbmQgYWRkZWQg
dHJpdmlhbAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgd2hlbiBkZWxldGUgYnV0dG9uIGNvbnRy
b2xsZXJzIGFyZSBkaXNhYmxlZCAoRU5BQkxFX0RFTEVUSU9OX1VJIGlzIDApLgorCisgICAgICAg
ICogZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kOjpFZGl0Q29t
bWFuZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjphdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKTogTW92
ZWQgZnJvbSBodG1sZWRpdGluZy5jcHAgYW5kIHJlbmFtZWQuCisgICAgICAgIFRoZSB2ZXJzaW9u
IHRoYXQgdGFrZXMgVmlzaWJsZVNlbGVjdGlvbiBoYXMgYmVlbiB1cGRhdGVkIHRvIHVzZSB1cGRh
dGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsIHRvIHNoYXJlCisgICAgICAgIG1vZGUgY29kZSB3aXRo
IHRoYXQgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJhbmdlRm9yUG9pbnQp
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIpOiBBZGRlZDsgdHJp
dmlhbCBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6
CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorICAgICAgICAqIGVkaXRpbmcvbWFy
a3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hcmt1cEludGVybmFsKTogRXh0cmFj
dGVkIGZyb20gY3JlYXRlTWFya3VwLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKToK
KwogMjAxMy0wMi0xMSAgVmlhdGNoZXNsYXYgT3N0YXBlbmtvICA8c2wub3N0YXBlbmtvQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtRdF1bRUZMXVtXZWJHTF0gTWlub3IgcmVmYWN0b3Jpbmcgb2Yg
R3JhcGhpY3NTdXJmYWNlL0dyYXBoaWNzU3VyZmFjZUdMWApJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDE0MjU3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsyNyw2IEBA
CiAjaW5jbHVkZSAiRWRpdENvbW1hbmQuaCIKIAogI2luY2x1ZGUgIkNvbXBvc2l0ZUVkaXRDb21t
YW5kLmgiCi0jaWYgRU5BQkxFKERFTEVUSU9OX1VJKQotI2luY2x1ZGUgIkRlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXIuaCIKLSNlbmRpZgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgpAQCAtNDgsMTEgKzQ1LDcgQEAgRWRpdENvbW1h
bmQ6OkVkaXRDb21tYW5kKERvY3VtZW50KiBkb2N1bQogewogICAgIEFTU0VSVChtX2RvY3VtZW50
KTsKICAgICBBU1NFUlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7Ci0jaWYgRU5BQkxFKERFTEVUSU9O
X1VJKQotICAgIHNldFN0YXJ0aW5nU2VsZWN0aW9uKGF2b2lkSW50ZXJzZWN0aW9uV2l0aE5vZGUo
bV9kb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLCBtX2RvY3VtZW50
LT5mcmFtZSgpLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5jb250YWluZXJF
bGVtZW50KCkpKTsKLSNlbHNlCi0gICAgc2V0U3RhcnRpbmdTZWxlY3Rpb24obV9kb2N1bWVudC0+
ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKLSNlbmRpZgorICAgIHNldFN0YXJ0
aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5hdm9pZEludGVyc2Vj
dGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKG1fZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVj
dGlvbigpLT5zZWxlY3Rpb24oKSkpOwogICAgIHNldEVuZGluZ1NlbGVjdGlvbihtX3N0YXJ0aW5n
U2VsZWN0aW9uKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNp
b24gMTQyNTc2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsNiArMTA0LDYzIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1
c2luZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CiAKK1Bhc3NSZWZQ
dHI8UmFuZ2U+IEVkaXRvcjo6YXZvaWRJbnRlcnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJv
bGxlcihjb25zdCBSYW5nZSogcmFuZ2UpIGNvbnN0Cit7CisgICAgRGVsZXRlQnV0dG9uQ29udHJv
bGxlciogY29udHJvbGxlciA9IGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKTsKKyAgICBpZiAoIXJh
bmdlIHx8ICFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHJhbmdlLT5vd25lckRvY3VtZW50KCk7CisKKyAgICBOb2RlKiBzdGFydENvbnRh
aW5lciA9IHJhbmdlLT5zdGFydENvbnRhaW5lcigpOworICAgIGludCBzdGFydE9mZnNldCA9IHJh
bmdlLT5zdGFydE9mZnNldCgpOworICAgIE5vZGUqIGVuZENvbnRhaW5lciA9IHJhbmdlLT5lbmRD
b250YWluZXIoKTsKKyAgICBpbnQgZW5kT2Zmc2V0ID0gcmFuZ2UtPmVuZE9mZnNldCgpOworCisg
ICAgaWYgKCFzdGFydENvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQo
ZW5kQ29udGFpbmVyKTsKKworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBjb250cm9sbGVyLT5jb250
YWluZXJFbGVtZW50KCk7CisgICAgaWYgKHN0YXJ0Q29udGFpbmVyID09IGVsZW1lbnQgfHwgc3Rh
cnRDb250YWluZXItPmlzRGVzY2VuZGFudE9mKGVsZW1lbnQpKSB7CisgICAgICAgIEFTU0VSVChl
bGVtZW50LT5wYXJlbnROb2RlKCkpOworICAgICAgICBzdGFydENvbnRhaW5lciA9IGVsZW1lbnQt
PnBhcmVudE5vZGUoKTsKKyAgICAgICAgc3RhcnRPZmZzZXQgPSBlbGVtZW50LT5ub2RlSW5kZXgo
KTsKKyAgICB9CisgICAgaWYgKGVuZENvbnRhaW5lciA9PSBlbGVtZW50IHx8IGVuZENvbnRhaW5l
ci0+aXNEZXNjZW5kYW50T2YoZWxlbWVudCkpIHsKKyAgICAgICAgQVNTRVJUKGVsZW1lbnQtPnBh
cmVudE5vZGUoKSk7CisgICAgICAgIGVuZENvbnRhaW5lciA9IGVsZW1lbnQtPnBhcmVudE5vZGUo
KTsKKyAgICAgICAgZW5kT2Zmc2V0ID0gZWxlbWVudC0+bm9kZUluZGV4KCk7CisgICAgfQorCisg
ICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHN0YXJ0Q29udGFpbmVyLCBzdGFydE9m
ZnNldCwgZW5kQ29udGFpbmVyLCBlbmRPZmZzZXQpOworfQorCitWaXNpYmxlU2VsZWN0aW9uIEVk
aXRvcjo6YXZvaWRJbnRlcnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJvbGxlcihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pIGNvbnN0Cit7CisgICAgRGVsZXRlQnV0dG9uQ29u
dHJvbGxlciogY29udHJvbGxlciA9IGRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKTsKKyAgICBpZiAo
c2VsZWN0aW9uLmlzTm9uZSgpIHx8ICFjb250cm9sbGVyKQorICAgICAgICByZXR1cm4gc2VsZWN0
aW9uOworCisgICAgRWxlbWVudCogZWxlbWVudCA9IGNvbnRyb2xsZXItPmNvbnRhaW5lckVsZW1l
bnQoKTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBzZWxlY3Rpb247CisgICAg
VmlzaWJsZVNlbGVjdGlvbiB1cGRhdGVkU2VsZWN0aW9uID0gc2VsZWN0aW9uOworCisgICAgUG9z
aXRpb24gdXBkYXRlZEJhc2UgPSBzZWxlY3Rpb24uYmFzZSgpOworICAgIHVwZGF0ZVBvc2l0aW9u
Rm9yTm9kZVJlbW92YWwodXBkYXRlZEJhc2UsIGVsZW1lbnQpOworICAgIGlmICh1cGRhdGVkQmFz
ZSAhPSBzZWxlY3Rpb24uYmFzZSgpKQorICAgICAgICB1cGRhdGVkU2VsZWN0aW9uLnNldEJhc2Uo
dXBkYXRlZEJhc2UpOworCisgICAgUG9zaXRpb24gdXBkYXRlZEV4dGVudCA9IHNlbGVjdGlvbi5i
YXNlKCk7CisgICAgdXBkYXRlUG9zaXRpb25Gb3JOb2RlUmVtb3ZhbCh1cGRhdGVkRXh0ZW50LCBl
bGVtZW50KTsKKyAgICBpZiAodXBkYXRlZEV4dGVudCAhPSBzZWxlY3Rpb24uZXh0ZW50KCkpCisg
ICAgICAgIHVwZGF0ZWRTZWxlY3Rpb24uc2V0RXh0ZW50KHVwZGF0ZWRFeHRlbnQpOworCisgICAg
cmV0dXJuIHVwZGF0ZWRTZWxlY3Rpb247Cit9CisKIC8vIFdoZW4gYW4gZXZlbnQgaGFuZGxlciBo
YXMgbW92ZWQgdGhlIHNlbGVjdGlvbiBvdXRzaWRlIG9mIGEgdGV4dCBjb250cm9sCiAvLyB3ZSBz
aG91bGQgdXNlIHRoZSB0YXJnZXQgY29udHJvbCdzIHNlbGVjdGlvbiBmb3IgdGhpcyBlZGl0aW5n
IG9wZXJhdGlvbi4KIFZpc2libGVTZWxlY3Rpb24gRWRpdG9yOjpzZWxlY3Rpb25Gb3JDb21tYW5k
KEV2ZW50KiBldmVudCkKQEAgLTIzODcsMTEgKzI0NDQsOCBAQCBQYXNzUmVmUHRyPFJhbmdlPiBF
ZGl0b3I6OnJhbmdlRm9yUG9pbnQoCiAgICAgICAgIHJldHVybiAwOwogICAgIEludFBvaW50IGZy
YW1lUG9pbnQgPSBmcmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMod2luZG93UG9pbnQpOwogICAg
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKGZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2lu
dChmcmFtZVBvaW50KSk7Ci0jaWYgRU5BQkxFKERFTEVUSU9OX1VJKQotICAgIHJldHVybiBhdm9p
ZEludGVyc2VjdGlvbldpdGhOb2RlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgp
LCBtX2RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXItPmNvbnRhaW5lckVsZW1lbnQoKSk7Ci0jZWxzZQot
ICAgIHJldHVybiBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSNlbmRpZgorCisgICAg
cmV0dXJuIGF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoc2VsZWN0
aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogfQogCiB2b2lkIEVkaXRvcjo6cmV2ZWFs
U2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxp
Z25tZW50LCBSZXZlYWxFeHRlbnRPcHRpb24gcmV2ZWFsRXh0ZW50T3B0aW9uKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiAxNDI1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw5ICs5NiwxNiBAQCBwdWJsaWM6
CiAgICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgY29uc3Q7CiAKICAgICBGcmFt
ZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CisKICNpZiBFTkFCTEUoREVMRVRJ
T05fVUkpCiAgICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0dG9uQ29udHJvbGxl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZXRlQnV0dG9uQ29udHJvbGxlci5nZXQoKTsgfQorICAg
IFBhc3NSZWZQdHI8UmFuZ2U+IGF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRy
b2xsZXIoY29uc3QgUmFuZ2UqKSBjb25zdDsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIGF2b2lkSW50
ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYpIGNvbnN0OworI2Vsc2UKKyAgICBQYXNzUmVmUHRyPFJhbmdlPiBhdm9pZEludGVyc2VjdGlv
bldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKGNvbnN0IFJhbmdlKiByYW5nZSkgY29uc3QgeyBy
ZXR1cm4gcmFuZ2UgPyByYW5nZS0+Y2xvbmVSYW5nZShBU1NFUlRfTk9fRVhDRVBUSU9OKSA6IDA7
IH0KKyAgICBWaXNpYmxlU2VsZWN0aW9uIGF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKSBjb25zdCB7IHJl
dHVybiBzZWxlY3Rpb247IH0KICNlbmRpZgorCiAgICAgQ29tcG9zaXRlRWRpdENvbW1hbmQqIGxh
c3RFZGl0Q29tbWFuZCgpIHsgcmV0dXJuIG1fbGFzdEVkaXRDb21tYW5kLmdldCgpOyB9CiAKICAg
ICB2b2lkIGhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHJldmlzaW9uIDE0MjU3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgy
LDYzICsxMTgyLDYgQEAgYm9vbCBpc05vblRhYmxlQ2VsbEhUTUxCbG9ja0VsZW1lbnQoY29ucwog
ICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGg0VGFnKQogICAgICAgICB8fCBub2RlLT5oYXNU
YWdOYW1lKGg1VGFnKTsKIH0KLQotI2lmIEVOQUJMRShERUxFVElPTl9VSSkKLVBhc3NSZWZQdHI8
UmFuZ2U+IGF2b2lkSW50ZXJzZWN0aW9uV2l0aE5vZGUoY29uc3QgUmFuZ2UqIHJhbmdlLCBOb2Rl
KiBub2RlKQotewotICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gcmFuZ2UtPm93bmVyRG9jdW1lbnQoKTsKLQotICAgIE5vZGUqIHN0
YXJ0Q29udGFpbmVyID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgaW50IHN0YXJ0T2Zm
c2V0ID0gcmFuZ2UtPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgTm9kZSogZW5kQ29udGFpbmVyID0gcmFu
Z2UtPmVuZENvbnRhaW5lcigpOwotICAgIGludCBlbmRPZmZzZXQgPSByYW5nZS0+ZW5kT2Zmc2V0
KCk7Ci0KLSAgICBpZiAoIXN0YXJ0Q29udGFpbmVyKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IEFTU0VSVChlbmRDb250YWluZXIpOwotCi0gICAgaWYgKHN0YXJ0Q29udGFpbmVyID09IG5vZGUg
fHwgc3RhcnRDb250YWluZXItPmlzRGVzY2VuZGFudE9mKG5vZGUpKSB7Ci0gICAgICAgIEFTU0VS
VChub2RlLT5wYXJlbnROb2RlKCkpOwotICAgICAgICBzdGFydENvbnRhaW5lciA9IG5vZGUtPnBh
cmVudE5vZGUoKTsKLSAgICAgICAgc3RhcnRPZmZzZXQgPSBub2RlLT5ub2RlSW5kZXgoKTsKLSAg
ICB9Ci0gICAgaWYgKGVuZENvbnRhaW5lciA9PSBub2RlIHx8IGVuZENvbnRhaW5lci0+aXNEZXNj
ZW5kYW50T2Yobm9kZSkpIHsKLSAgICAgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7Ci0g
ICAgICAgIGVuZENvbnRhaW5lciA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgZW5kT2Zm
c2V0ID0gbm9kZS0+bm9kZUluZGV4KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQsIHN0YXJ0Q29udGFpbmVyLCBzdGFydE9mZnNldCwgZW5kQ29udGFpbmVyLCBl
bmRPZmZzZXQpOwotfQotCi1WaXNpYmxlU2VsZWN0aW9uIGF2b2lkSW50ZXJzZWN0aW9uV2l0aE5v
ZGUoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBOb2RlKiBub2RlKQotewotICAg
IGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCi0gICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9u
KHNlbGVjdGlvbik7Ci0KLSAgICBWaXNpYmxlU2VsZWN0aW9uIHVwZGF0ZWRTZWxlY3Rpb24oc2Vs
ZWN0aW9uKTsKLSAgICBOb2RlKiBiYXNlID0gc2VsZWN0aW9uLmJhc2UoKS5kZXByZWNhdGVkTm9k
ZSgpOwotICAgIE5vZGUqIGV4dGVudCA9IHNlbGVjdGlvbi5leHRlbnQoKS5kZXByZWNhdGVkTm9k
ZSgpOwotICAgIEFTU0VSVChiYXNlKTsKLSAgICBBU1NFUlQoZXh0ZW50KTsKLQotICAgIGlmIChi
YXNlID09IG5vZGUgfHwgYmFzZS0+aXNEZXNjZW5kYW50T2Yobm9kZSkpIHsKLSAgICAgICAgQVNT
RVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7Ci0gICAgICAgIHVwZGF0ZWRTZWxlY3Rpb24uc2V0QmFz
ZShwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShub2RlKSk7Ci0gICAgfQotCi0gICAgaWYgKGV4
dGVudCA9PSBub2RlIHx8IGV4dGVudC0+aXNEZXNjZW5kYW50T2Yobm9kZSkpIHsKLSAgICAgICAg
QVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7Ci0gICAgICAgIHVwZGF0ZWRTZWxlY3Rpb24uc2V0
RXh0ZW50KHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdXBkYXRlZFNlbGVjdGlvbjsKLX0KLSNlbmRpZgogICAgIAogUG9zaXRpb24gYWRqdXN0
ZWRTZWxlY3Rpb25TdGFydEZvclN0eWxlQ29tcHV0YXRpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGlu
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAko
cmV2aXNpb24gMTQyNTc1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsOSArMTkyLDYgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbkZvckluZGV4KAogCiBQYXNzUmVmUHRyPFJhbmdlPiBjcmVhdGVSYW5nZShQYXNz
UmVmUHRyPERvY3VtZW50PiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydCwgY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBlbmQsIEV4Y2VwdGlvbkNvZGUmKTsKIFBhc3NSZWZQdHI8UmFuZ2U+IGV4
dGVuZFJhbmdlVG9XcmFwcGluZ05vZGVzKFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlVG9FeHRlbmQs
IGNvbnN0IFJhbmdlKiBtYXhpbXVtUmFuZ2UsIGNvbnN0IE5vZGUqIHJvb3ROb2RlKTsKLSNpZiBF
TkFCTEUoREVMRVRJT05fVUkpCi1QYXNzUmVmUHRyPFJhbmdlPiBhdm9pZEludGVyc2VjdGlvbldp
dGhOb2RlKGNvbnN0IFJhbmdlKiwgTm9kZSopOwotI2VuZGlmCiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIC8vIEhUTUxFbGVtZW50CkBAIC0yMzcsOSArMjM0LDYgQEAgYm9vbCBjYW5NZXJnZUxpc3Rz
KEVsZW1lbnQqIGZpcnN0TGlzdCwgRQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBGdW5jdGlv
bnMgcmV0dXJuaW5nIFZpc2libGVTZWxlY3Rpb24KLSNpZiBFTkFCTEUoREVMRVRJT05fVUkpCi1W
aXNpYmxlU2VsZWN0aW9uIGF2b2lkSW50ZXJzZWN0aW9uV2l0aE5vZGUoY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYsIE5vZGUqKTsKLSNlbmRpZgogVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Gb3JQ
YXJhZ3JhcGhJdGVyYXRpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogCiBQb3NpdGlvbiBh
ZGp1c3RlZFNlbGVjdGlvblN0YXJ0Rm9yU3R5bGVDb21wdXRhdGlvbihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiAxNDI1
NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0NCwzOCArNTQ0LDIwIEBAIHN0YXRpYyBOb2RlKiBoaWdoZXN0QW5jZXN0b3JUb1dyYXBN
YXJrdXAKIAogLy8gRklYTUU6IFNob3VsZG4ndCB3ZSBvbWl0IHN0eWxlIGluZm8gd2hlbiBhbm5v
dGF0ZSA9PSBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2U/IAogLy8gRklYTUU6IEF0IGxlYXN0
LCBhbm5vdGF0aW9uIGFuZCBzdHlsZSBpbmZvIHNob3VsZCBwcm9iYWJseSBub3QgYmUgaW5jbHVk
ZWQgaW4gcmFuZ2UubWFya3VwU3RyaW5nKCkKLVN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFu
Z2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ug
c2hvdWxkQW5ub3RhdGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgRUFic29sdXRlVVJM
cyBzaG91bGRSZXNvbHZlVVJMcykKK3N0YXRpYyBTdHJpbmcgY3JlYXRlTWFya3VwSW50ZXJuYWwo
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBSYW5nZSogcmFuZ2UsIGNvbnN0IFJhbmdlKiB1cGRh
dGVkUmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVzLAorICAgIEVBbm5vdGF0ZUZvckludGVyY2hh
bmdlIHNob3VsZEFubm90YXRlLCBib29sIGNvbnZlcnRCbG9ja3NUb0lubGluZXMsIEVBYnNvbHV0
ZVVSTHMgc2hvdWxkUmVzb2x2ZVVSTHMpCiB7CisgICAgQVNTRVJUKGRvY3VtZW50KTsKKyAgICBB
U1NFUlQocmFuZ2UpOworICAgIEFTU0VSVCh1cGRhdGVkUmFuZ2UpOwogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RyaW5nLCBpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcsIChBU0NJSUxp
dGVyYWwoIjxiciBjbGFzcz1cIiIgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUgIlwiPiIpKSk7CiAK
LSAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm4gIiI7Ci0KLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSByYW5nZS0+b3duZXJEb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAg
ICAgIHJldHVybiAiIjsKLQotICAgIC8vIERpc2FibGUgdGhlIGRlbGV0ZSBidXR0b24gc28gaXQn
cyBlbGVtZW50cyBhcmUgbm90IHNlcmlhbGl6ZWQgaW50byB0aGUgbWFya3VwLAotICAgIC8vIGJ1
dCBtYWtlIHN1cmUgbmVpdGhlciBlbmRwb2ludCBpcyBpbnNpZGUgdGhlIGRlbGV0ZSB1c2VyIGlu
dGVyZmFjZS4KLSAgICBSZWZQdHI8UmFuZ2U+IHVwZGF0ZWRSYW5nZTsKLSNpZiBFTkFCTEUoREVM
RVRJT05fVUkpCi0gICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7Ci0gICAgRGVs
ZXRlQnV0dG9uQ29udHJvbGxlciogZGVsZXRlQnV0dG9uID0gZnJhbWUgPyBmcmFtZS0+ZWRpdG9y
KCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKSA6IDA7Ci0gICAgdXBkYXRlZFJhbmdlID0gYXZv
aWRJbnRlcnNlY3Rpb25XaXRoTm9kZShyYW5nZSwgZGVsZXRlQnV0dG9uID8gZGVsZXRlQnV0dG9u
LT5jb250YWluZXJFbGVtZW50KCkgOiAwKTsKLSAgICBpZiAoIXVwZGF0ZWRSYW5nZSkKLSAgICAg
ICAgcmV0dXJuICIiOwotICAgIGlmIChkZWxldGVCdXR0b24pCi0gICAgICAgIGRlbGV0ZUJ1dHRv
bi0+ZGlzYWJsZSgpOwotI2Vsc2UKLSAgICB1cGRhdGVkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHJh
bmdlLT5vd25lckRvY3VtZW50KCksIHJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3Rh
cnRPZmZzZXQoKSwgcmFuZ2UtPmVuZENvbnRhaW5lcigpLCByYW5nZS0+ZW5kT2Zmc2V0KCkpOwot
I2VuZGlmCi0KICAgICBib29sIGNvbGxhcHNlZCA9IHVwZGF0ZWRSYW5nZS0+Y29sbGFwc2VkKEFT
U0VSVF9OT19FWENFUFRJT04pOwogICAgIGlmIChjb2xsYXBzZWQpCi0gICAgICAgIHJldHVybiAi
IjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgTm9kZSogY29tbW9uQW5jZXN0
b3IgPSB1cGRhdGVkUmFuZ2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKEFTU0VSVF9OT19FWENF
UFRJT04pOwogICAgIGlmICghY29tbW9uQW5jZXN0b3IpCi0gICAgICAgIHJldHVybiAiIjsKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKQEAgLTU4NCwzMiArNTY2LDIyIEBAIFN0cmlu
ZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAKICAgICAvLyBGSVhNRTogRG8gdGhp
cyBmb3IgYWxsIGZ1bGx5IHNlbGVjdGVkIGJsb2Nrcywgbm90IGp1c3QgdGhlIGJvZHkuCiAgICAg
aWYgKGJvZHkgJiYgYXJlUmFuZ2VzRXF1YWwoVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJv
bUNvbnRlbnRzT2ZOb2RlKGJvZHkpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIHJhbmdlKSkK
ICAgICAgICAgZnVsbHlTZWxlY3RlZFJvb3QgPSBib2R5OwotICAgIE5vZGUqIHNwZWNpYWxDb21t
b25BbmNlc3RvciA9IGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1hcmt1cCh1cGRhdGVkUmFuZ2UuZ2V0
KCksIHNob3VsZEFubm90YXRlKTsKLSAgICBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvciBhY2N1bXVs
YXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHNob3VsZEFubm90YXRlLCB1cGRhdGVkUmFu
Z2UuZ2V0KCksIHNwZWNpYWxDb21tb25BbmNlc3Rvcik7CisgICAgTm9kZSogc3BlY2lhbENvbW1v
bkFuY2VzdG9yID0gaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKHVwZGF0ZWRSYW5nZSwgc2hv
dWxkQW5ub3RhdGUpOworICAgIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yIGFjY3VtdWxhdG9yKG5v
ZGVzLCBzaG91bGRSZXNvbHZlVVJMcywgc2hvdWxkQW5ub3RhdGUsIHVwZGF0ZWRSYW5nZSwgc3Bl
Y2lhbENvbW1vbkFuY2VzdG9yKTsKICAgICBOb2RlKiBwYXN0RW5kID0gdXBkYXRlZFJhbmdlLT5w
YXN0TGFzdE5vZGUoKTsKIAogICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHVwZGF0ZWRSYW5nZS0+Zmly
c3ROb2RlKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydCh1cGRhdGVkUmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSwgVlBfREVGQVVMVF9BRkZJTklUWSk7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVFbmQodXBkYXRlZFJhbmdlLT5lbmRQb3NpdGlvbigpLCBWUF9ERUZBVUxUX0FG
RklOSVRZKTsKICAgICBpZiAoc2hvdWxkQW5ub3RhdGUgPT0gQW5ub3RhdGVGb3JJbnRlcmNoYW5n
ZSAmJiBuZWVkSW50ZXJjaGFuZ2VOZXdsaW5lQWZ0ZXIodmlzaWJsZVN0YXJ0KSkgewotICAgICAg
ICBpZiAodmlzaWJsZVN0YXJ0ID09IHZpc2libGVFbmQucHJldmlvdXMoKSkgewotI2lmIEVOQUJM
RShERUxFVElPTl9VSSkKLSAgICAgICAgICAgIGlmIChkZWxldGVCdXR0b24pCi0gICAgICAgICAg
ICAgICAgZGVsZXRlQnV0dG9uLT5lbmFibGUoKTsKLSNlbmRpZgorICAgICAgICBpZiAodmlzaWJs
ZVN0YXJ0ID09IHZpc2libGVFbmQucHJldmlvdXMoKSkKICAgICAgICAgICAgIHJldHVybiBpbnRl
cmNoYW5nZU5ld2xpbmVTdHJpbmc7Ci0gICAgICAgIH0KIAogICAgICAgICBhY2N1bXVsYXRvci5h
cHBlbmRTdHJpbmcoaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKTsKICAgICAgICAgc3RhcnROb2Rl
ID0gdmlzaWJsZVN0YXJ0Lm5leHQoKS5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCk7
CiAKLSAgICAgICAgaWYgKHBhc3RFbmQgJiYgUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhz
dGFydE5vZGUsIDAsIHBhc3RFbmQsIDAsIEFTU0VSVF9OT19FWENFUFRJT04pID49IDApIHsKLSNp
ZiBFTkFCTEUoREVMRVRJT05fVUkpCi0gICAgICAgICAgICBpZiAoZGVsZXRlQnV0dG9uKQotICAg
ICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbi0+ZW5hYmxlKCk7Ci0jZW5kaWYKKyAgICAgICAgaWYg
KHBhc3RFbmQgJiYgUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhzdGFydE5vZGUsIDAsIHBh
c3RFbmQsIDAsIEFTU0VSVF9OT19FWENFUFRJT04pID49IDApCiAgICAgICAgICAgICByZXR1cm4g
aW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nOwotICAgICAgICB9CiAgICAgfQogCiAgICAgTm9kZSog
bGFzdENsb3NlZCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKHN0YXJ0Tm9kZSwgcGFzdEVu
ZCk7CkBAIC02NTUsMTEgKzYyNywzNyBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdl
KiByYW5nZSwgCiAgICAgaWYgKHNob3VsZEFubm90YXRlID09IEFubm90YXRlRm9ySW50ZXJjaGFu
Z2UgJiYgbmVlZEludGVyY2hhbmdlTmV3bGluZUFmdGVyKHZpc2libGVFbmQucHJldmlvdXMoKSkp
CiAgICAgICAgIGFjY3VtdWxhdG9yLmFwcGVuZFN0cmluZyhpbnRlcmNoYW5nZU5ld2xpbmVTdHJp
bmcpOwogCisgICAgcmV0dXJuIGFjY3VtdWxhdG9yLnRha2VSZXN1bHRzKCk7Cit9CisKK1N0cmlu
ZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+KiBub2Rlcywg
RUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsIGJvb2wgY29udmVydEJsb2Nr
c1RvSW5saW5lcywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcykKK3sKKyAgICBpZiAo
IXJhbmdlKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHJhbmdlLT5vd25lckRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICAvLyBEaXNhYmxlIHRoZSBkZWxldGUg
YnV0dG9uIHNvIGl0J3MgZWxlbWVudHMgYXJlIG5vdCBzZXJpYWxpemVkIGludG8gdGhlIG1hcmt1
cCwKKyAgICAvLyBidXQgbWFrZSBzdXJlIG5laXRoZXIgZW5kcG9pbnQgaXMgaW5zaWRlIHRoZSBk
ZWxldGUgdXNlciBpbnRlcmZhY2UuCiAjaWYgRU5BQkxFKERFTEVUSU9OX1VJKQotICAgIGlmIChk
ZWxldGVCdXR0b24pCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CisgICAg
aWYgKERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIqIGRlbGV0ZUJ1dHRvbiA9IGZyYW1lID8gZnJhbWUt
PmVkaXRvcigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCkgOiAwKSB7CisgICAgICAgIFJlZlB0
cjxSYW5nZT4gdXBkYXRlZFJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5hdm9pZEludGVyc2VjdGlv
bldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKHJhbmdlKTsKKyAgICAgICAgaWYgKCF1cGRhdGVk
UmFuZ2UpCisgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgICAgICBkZWxl
dGVCdXR0b24tPmRpc2FibGUoKTsKKworICAgICAgICBTdHJpbmcgcmVzdWx0ID0gY3JlYXRlTWFy
a3VwSW50ZXJuYWwoZG9jdW1lbnQsIHJhbmdlLCB1cGRhdGVkUmFuZ2UuZ2V0KCksIG5vZGVzLCBz
aG91bGRBbm5vdGF0ZSwgY29udmVydEJsb2Nrc1RvSW5saW5lcywgc2hvdWxkUmVzb2x2ZVVSTHMp
OworCiAgICAgICAgIGRlbGV0ZUJ1dHRvbi0+ZW5hYmxlKCk7CisKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CiAjZW5kaWYKLSAgICByZXR1cm4gYWNjdW11bGF0b3IudGFrZVJlc3VsdHMo
KTsKKyAgICByZXR1cm4gY3JlYXRlTWFya3VwSW50ZXJuYWwoZG9jdW1lbnQsIHJhbmdlLCByYW5n
ZSwgbm9kZXMsIHNob3VsZEFubm90YXRlLCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCBzaG91bGRS
ZXNvbHZlVVJMcyk7CiB9CiAKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJh
Z21lbnRGcm9tTWFya3VwKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtYXJrdXAs
IGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlw
dGluZ1Blcm1pc3Npb24pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187798</attachid>
            <date>2013-02-12 00:45:05 -0800</date>
            <delta_ts>2013-02-12 12:56:03 -0800</delta_ts>
            <desc>Fixed build</desc>
            <filename>bug-109549-20130212004138.patch</filename>
            <type>text/plain</type>
            <size>16351</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjU4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTExICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFR1cm4gYXZvaWRJbnRlcnNlY3Rp
b25XaXRoTm9kZSBpbnRvIEVkaXRvciBtZW1iZXIgZnVuY3Rpb25zIHRvIGVuY2Fwc3VsYXRlIGRl
bGV0ZSBidXR0b24gY29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA5NTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVuYW1lZCBhdm9pZEludGVyc2VjdGlvbldpdGhOb2RlIHRvIEVkaXRv
cjo6YXZvaWRJbnRlcnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJvbGxlciBhbmQgYWRkZWQg
dHJpdmlhbAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgd2hlbiBkZWxldGUgYnV0dG9uIGNvbnRy
b2xsZXJzIGFyZSBkaXNhYmxlZCAoRU5BQkxFX0RFTEVUSU9OX1VJIGlzIDApLgorCisgICAgICAg
ICogZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kOjpFZGl0Q29t
bWFuZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjphdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKTogTW92
ZWQgZnJvbSBodG1sZWRpdGluZy5jcHAgYW5kIHJlbmFtZWQuCisgICAgICAgIFRoZSB2ZXJzaW9u
IHRoYXQgdGFrZXMgVmlzaWJsZVNlbGVjdGlvbiBoYXMgYmVlbiB1cGRhdGVkIHRvIHVzZSB1cGRh
dGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsIHRvIHNoYXJlCisgICAgICAgIG1vZGUgY29kZSB3aXRo
IHRoYXQgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJhbmdlRm9yUG9pbnQp
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIpOiBBZGRlZDsgdHJp
dmlhbCBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6
CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorICAgICAgICAqIGVkaXRpbmcvbWFy
a3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hcmt1cEludGVybmFsKTogRXh0cmFj
dGVkIGZyb20gY3JlYXRlTWFya3VwLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKToK
KwogMjAxMy0wMi0xMSAgVmlhdGNoZXNsYXYgT3N0YXBlbmtvICA8c2wub3N0YXBlbmtvQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtRdF1bRUZMXVtXZWJHTF0gTWlub3IgcmVmYWN0b3Jpbmcgb2Yg
R3JhcGhpY3NTdXJmYWNlL0dyYXBoaWNzU3VyZmFjZUdMWApJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDE0MjU3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsyNyw2IEBA
CiAjaW5jbHVkZSAiRWRpdENvbW1hbmQuaCIKIAogI2luY2x1ZGUgIkNvbXBvc2l0ZUVkaXRDb21t
YW5kLmgiCi0jaWYgRU5BQkxFKERFTEVUSU9OX1VJKQotI2luY2x1ZGUgIkRlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXIuaCIKLSNlbmRpZgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgpAQCAtNDgsMTEgKzQ1LDcgQEAgRWRpdENvbW1h
bmQ6OkVkaXRDb21tYW5kKERvY3VtZW50KiBkb2N1bQogewogICAgIEFTU0VSVChtX2RvY3VtZW50
KTsKICAgICBBU1NFUlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7Ci0jaWYgRU5BQkxFKERFTEVUSU9O
X1VJKQotICAgIHNldFN0YXJ0aW5nU2VsZWN0aW9uKGF2b2lkSW50ZXJzZWN0aW9uV2l0aE5vZGUo
bV9kb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLCBtX2RvY3VtZW50
LT5mcmFtZSgpLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5jb250YWluZXJF
bGVtZW50KCkpKTsKLSNlbHNlCi0gICAgc2V0U3RhcnRpbmdTZWxlY3Rpb24obV9kb2N1bWVudC0+
ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKLSNlbmRpZgorICAgIHNldFN0YXJ0
aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5hdm9pZEludGVyc2Vj
dGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKG1fZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVj
dGlvbigpLT5zZWxlY3Rpb24oKSkpOwogICAgIHNldEVuZGluZ1NlbGVjdGlvbihtX3N0YXJ0aW5n
U2VsZWN0aW9uKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNp
b24gMTQyNTc2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQsNiArMTA0LDY1IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1
c2luZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CiAKKyNpZiBFTkFC
TEUoREVMRVRJT05fVUkpCitQYXNzUmVmUHRyPFJhbmdlPiBFZGl0b3I6OmF2b2lkSW50ZXJzZWN0
aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoY29uc3QgUmFuZ2UqIHJhbmdlKSBjb25zdAor
eworICAgIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBkZWxldGVCdXR0b25D
b250cm9sbGVyKCk7CisgICAgaWYgKCFyYW5nZSB8fCAhY29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSByYW5nZS0+b3duZXJEb2N1bWVudCgp
OworCisgICAgTm9kZSogc3RhcnRDb250YWluZXIgPSByYW5nZS0+c3RhcnRDb250YWluZXIoKTsK
KyAgICBpbnQgc3RhcnRPZmZzZXQgPSByYW5nZS0+c3RhcnRPZmZzZXQoKTsKKyAgICBOb2RlKiBl
bmRDb250YWluZXIgPSByYW5nZS0+ZW5kQ29udGFpbmVyKCk7CisgICAgaW50IGVuZE9mZnNldCA9
IHJhbmdlLT5lbmRPZmZzZXQoKTsKKworICAgIGlmICghc3RhcnRDb250YWluZXIpCisgICAgICAg
IHJldHVybiAwOworCisgICAgQVNTRVJUKGVuZENvbnRhaW5lcik7CisKKyAgICBFbGVtZW50KiBl
bGVtZW50ID0gY29udHJvbGxlci0+Y29udGFpbmVyRWxlbWVudCgpOworICAgIGlmIChzdGFydENv
bnRhaW5lciA9PSBlbGVtZW50IHx8IHN0YXJ0Q29udGFpbmVyLT5pc0Rlc2NlbmRhbnRPZihlbGVt
ZW50KSkgeworICAgICAgICBBU1NFUlQoZWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKKyAgICAgICAg
c3RhcnRDb250YWluZXIgPSBlbGVtZW50LT5wYXJlbnROb2RlKCk7CisgICAgICAgIHN0YXJ0T2Zm
c2V0ID0gZWxlbWVudC0+bm9kZUluZGV4KCk7CisgICAgfQorICAgIGlmIChlbmRDb250YWluZXIg
PT0gZWxlbWVudCB8fCBlbmRDb250YWluZXItPmlzRGVzY2VuZGFudE9mKGVsZW1lbnQpKSB7Cisg
ICAgICAgIEFTU0VSVChlbGVtZW50LT5wYXJlbnROb2RlKCkpOworICAgICAgICBlbmRDb250YWlu
ZXIgPSBlbGVtZW50LT5wYXJlbnROb2RlKCk7CisgICAgICAgIGVuZE9mZnNldCA9IGVsZW1lbnQt
Pm5vZGVJbmRleCgpOworICAgIH0KKworICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50
LCBzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQsIGVuZENvbnRhaW5lciwgZW5kT2Zmc2V0KTsK
K30KKworVmlzaWJsZVNlbGVjdGlvbiBFZGl0b3I6OmF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKSBjb25z
dAoreworICAgIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBkZWxldGVCdXR0
b25Db250cm9sbGVyKCk7CisgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSB8fCAhY29udHJvbGxl
cikKKyAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjsKKworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBj
b250cm9sbGVyLT5jb250YWluZXJFbGVtZW50KCk7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAg
ICByZXR1cm4gc2VsZWN0aW9uOworICAgIFZpc2libGVTZWxlY3Rpb24gdXBkYXRlZFNlbGVjdGlv
biA9IHNlbGVjdGlvbjsKKworICAgIFBvc2l0aW9uIHVwZGF0ZWRCYXNlID0gc2VsZWN0aW9uLmJh
c2UoKTsKKyAgICB1cGRhdGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsKHVwZGF0ZWRCYXNlLCBlbGVt
ZW50KTsKKyAgICBpZiAodXBkYXRlZEJhc2UgIT0gc2VsZWN0aW9uLmJhc2UoKSkKKyAgICAgICAg
dXBkYXRlZFNlbGVjdGlvbi5zZXRCYXNlKHVwZGF0ZWRCYXNlKTsKKworICAgIFBvc2l0aW9uIHVw
ZGF0ZWRFeHRlbnQgPSBzZWxlY3Rpb24uYmFzZSgpOworICAgIHVwZGF0ZVBvc2l0aW9uRm9yTm9k
ZVJlbW92YWwodXBkYXRlZEV4dGVudCwgZWxlbWVudCk7CisgICAgaWYgKHVwZGF0ZWRFeHRlbnQg
IT0gc2VsZWN0aW9uLmV4dGVudCgpKQorICAgICAgICB1cGRhdGVkU2VsZWN0aW9uLnNldEV4dGVu
dCh1cGRhdGVkRXh0ZW50KTsKKworICAgIHJldHVybiB1cGRhdGVkU2VsZWN0aW9uOworfQorI2Vu
ZGlmCisKIC8vIFdoZW4gYW4gZXZlbnQgaGFuZGxlciBoYXMgbW92ZWQgdGhlIHNlbGVjdGlvbiBv
dXRzaWRlIG9mIGEgdGV4dCBjb250cm9sCiAvLyB3ZSBzaG91bGQgdXNlIHRoZSB0YXJnZXQgY29u
dHJvbCdzIHNlbGVjdGlvbiBmb3IgdGhpcyBlZGl0aW5nIG9wZXJhdGlvbi4KIFZpc2libGVTZWxl
Y3Rpb24gRWRpdG9yOjpzZWxlY3Rpb25Gb3JDb21tYW5kKEV2ZW50KiBldmVudCkKQEAgLTIzODcs
MTEgKzI0NDYsOCBAQCBQYXNzUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlRm9yUG9pbnQoCiAg
ICAgICAgIHJldHVybiAwOwogICAgIEludFBvaW50IGZyYW1lUG9pbnQgPSBmcmFtZVZpZXctPndp
bmRvd1RvQ29udGVudHMod2luZG93UG9pbnQpOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0
aW9uKGZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChmcmFtZVBvaW50KSk7Ci0jaWYgRU5B
QkxFKERFTEVUSU9OX1VJKQotICAgIHJldHVybiBhdm9pZEludGVyc2VjdGlvbldpdGhOb2RlKHNl
bGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBtX2RlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXItPmNvbnRhaW5lckVsZW1lbnQoKSk7Ci0jZWxzZQotICAgIHJldHVybiBzZWxlY3Rpb24udG9O
b3JtYWxpemVkUmFuZ2UoKTsKLSNlbmRpZgorCisgICAgcmV0dXJuIGF2b2lkSW50ZXJzZWN0aW9u
V2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCkpOwogfQogCiB2b2lkIEVkaXRvcjo6cmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3Bl
cmF0aW9uKGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25tZW50LCBSZXZlYWxFeHRlbnRPcHRp
b24gcmV2ZWFsRXh0ZW50T3B0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZp
c2lvbiAxNDI1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Niw5ICs5NiwxNiBAQCBwdWJsaWM6CiAgICAgVGV4dENoZWNrZXJDbGllbnQq
IHRleHRDaGVja2VyKCkgY29uc3Q7CiAKICAgICBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lOyB9CisKICNpZiBFTkFCTEUoREVMRVRJT05fVUkpCiAgICAgRGVsZXRlQnV0dG9u
Q29udHJvbGxlciogZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5nZXQoKTsgfQorICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGF2b2lk
SW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoY29uc3QgUmFuZ2UqKSBjb25z
dDsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIGF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGNvbnN0OworI2Vsc2UKKyAgICBQ
YXNzUmVmUHRyPFJhbmdlPiBhdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9s
bGVyKGNvbnN0IFJhbmdlKiByYW5nZSkgY29uc3QgeyByZXR1cm4gcmFuZ2UgPyByYW5nZS0+Y2xv
bmVSYW5nZShBU1NFUlRfTk9fRVhDRVBUSU9OKSA6IDA7IH0KKyAgICBWaXNpYmxlU2VsZWN0aW9u
IGF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uKSBjb25zdCB7IHJldHVybiBzZWxlY3Rpb247IH0KICNlbmRp
ZgorCiAgICAgQ29tcG9zaXRlRWRpdENvbW1hbmQqIGxhc3RFZGl0Q29tbWFuZCgpIHsgcmV0dXJu
IG1fbGFzdEVkaXRDb21tYW5kLmdldCgpOyB9CiAKICAgICB2b2lkIGhhbmRsZUtleWJvYXJkRXZl
bnQoS2V5Ym9hcmRFdmVudCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGlu
Zy5jcHAJKHJldmlzaW9uIDE0MjU3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgyLDYzICsxMTgyLDYgQEAgYm9vbCBpc05v
blRhYmxlQ2VsbEhUTUxCbG9ja0VsZW1lbnQoY29ucwogICAgICAgICB8fCBub2RlLT5oYXNUYWdO
YW1lKGg0VGFnKQogICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGg1VGFnKTsKIH0KLQotI2lm
IEVOQUJMRShERUxFVElPTl9VSSkKLVBhc3NSZWZQdHI8UmFuZ2U+IGF2b2lkSW50ZXJzZWN0aW9u
V2l0aE5vZGUoY29uc3QgUmFuZ2UqIHJhbmdlLCBOb2RlKiBub2RlKQotewotICAgIGlmICghcmFu
Z2UpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcmFuZ2Ut
Pm93bmVyRG9jdW1lbnQoKTsKLQotICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyID0gcmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCk7Ci0gICAgaW50IHN0YXJ0T2Zmc2V0ID0gcmFuZ2UtPnN0YXJ0T2Zmc2V0
KCk7Ci0gICAgTm9kZSogZW5kQ29udGFpbmVyID0gcmFuZ2UtPmVuZENvbnRhaW5lcigpOwotICAg
IGludCBlbmRPZmZzZXQgPSByYW5nZS0+ZW5kT2Zmc2V0KCk7Ci0KLSAgICBpZiAoIXN0YXJ0Q29u
dGFpbmVyKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEFTU0VSVChlbmRDb250YWluZXIpOwot
Ci0gICAgaWYgKHN0YXJ0Q29udGFpbmVyID09IG5vZGUgfHwgc3RhcnRDb250YWluZXItPmlzRGVz
Y2VuZGFudE9mKG5vZGUpKSB7Ci0gICAgICAgIEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCkpOwot
ICAgICAgICBzdGFydENvbnRhaW5lciA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgc3Rh
cnRPZmZzZXQgPSBub2RlLT5ub2RlSW5kZXgoKTsKLSAgICB9Ci0gICAgaWYgKGVuZENvbnRhaW5l
ciA9PSBub2RlIHx8IGVuZENvbnRhaW5lci0+aXNEZXNjZW5kYW50T2Yobm9kZSkpIHsKLSAgICAg
ICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7Ci0gICAgICAgIGVuZENvbnRhaW5lciA9IG5v
ZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgZW5kT2Zmc2V0ID0gbm9kZS0+bm9kZUluZGV4KCk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHN0YXJ0Q29udGFp
bmVyLCBzdGFydE9mZnNldCwgZW5kQ29udGFpbmVyLCBlbmRPZmZzZXQpOwotfQotCi1WaXNpYmxl
U2VsZWN0aW9uIGF2b2lkSW50ZXJzZWN0aW9uV2l0aE5vZGUoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uLCBOb2RlKiBub2RlKQotewotICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkp
Ci0gICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKHNlbGVjdGlvbik7Ci0KLSAgICBWaXNp
YmxlU2VsZWN0aW9uIHVwZGF0ZWRTZWxlY3Rpb24oc2VsZWN0aW9uKTsKLSAgICBOb2RlKiBiYXNl
ID0gc2VsZWN0aW9uLmJhc2UoKS5kZXByZWNhdGVkTm9kZSgpOwotICAgIE5vZGUqIGV4dGVudCA9
IHNlbGVjdGlvbi5leHRlbnQoKS5kZXByZWNhdGVkTm9kZSgpOwotICAgIEFTU0VSVChiYXNlKTsK
LSAgICBBU1NFUlQoZXh0ZW50KTsKLQotICAgIGlmIChiYXNlID09IG5vZGUgfHwgYmFzZS0+aXNE
ZXNjZW5kYW50T2Yobm9kZSkpIHsKLSAgICAgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7
Ci0gICAgICAgIHVwZGF0ZWRTZWxlY3Rpb24uc2V0QmFzZShwb3NpdGlvbkluUGFyZW50QmVmb3Jl
Tm9kZShub2RlKSk7Ci0gICAgfQotCi0gICAgaWYgKGV4dGVudCA9PSBub2RlIHx8IGV4dGVudC0+
aXNEZXNjZW5kYW50T2Yobm9kZSkpIHsKLSAgICAgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUo
KSk7Ci0gICAgICAgIHVwZGF0ZWRTZWxlY3Rpb24uc2V0RXh0ZW50KHBvc2l0aW9uSW5QYXJlbnRC
ZWZvcmVOb2RlKG5vZGUpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdXBkYXRlZFNlbGVjdGlvbjsK
LX0KLSNlbmRpZgogICAgIAogUG9zaXRpb24gYWRqdXN0ZWRTZWxlY3Rpb25TdGFydEZvclN0eWxl
Q29tcHV0YXRpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkocmV2aXNpb24gMTQyNTc1KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIs
OSArMTkyLDYgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KAogCiBQ
YXNzUmVmUHRyPFJhbmdlPiBjcmVhdGVSYW5nZShQYXNzUmVmUHRyPERvY3VtZW50PiwgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiBzdGFydCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmQsIEV4Y2Vw
dGlvbkNvZGUmKTsKIFBhc3NSZWZQdHI8UmFuZ2U+IGV4dGVuZFJhbmdlVG9XcmFwcGluZ05vZGVz
KFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlVG9FeHRlbmQsIGNvbnN0IFJhbmdlKiBtYXhpbXVtUmFu
Z2UsIGNvbnN0IE5vZGUqIHJvb3ROb2RlKTsKLSNpZiBFTkFCTEUoREVMRVRJT05fVUkpCi1QYXNz
UmVmUHRyPFJhbmdlPiBhdm9pZEludGVyc2VjdGlvbldpdGhOb2RlKGNvbnN0IFJhbmdlKiwgTm9k
ZSopOwotI2VuZGlmCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIEhUTUxFbGVtZW50CkBAIC0y
MzcsOSArMjM0LDYgQEAgYm9vbCBjYW5NZXJnZUxpc3RzKEVsZW1lbnQqIGZpcnN0TGlzdCwgRQog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBGdW5jdGlvbnMgcmV0dXJuaW5nIFZpc2libGVTZWxl
Y3Rpb24KLSNpZiBFTkFCTEUoREVMRVRJT05fVUkpCi1WaXNpYmxlU2VsZWN0aW9uIGF2b2lkSW50
ZXJzZWN0aW9uV2l0aE5vZGUoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIE5vZGUqKTsKLSNlbmRp
ZgogVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Gb3JQYXJhZ3JhcGhJdGVyYXRpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYpOwogCiBQb3NpdGlvbiBhZGp1c3RlZFNlbGVjdGlvblN0YXJ0Rm9y
U3R5bGVDb21wdXRhdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiAxNDI1NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0NCwzOCArNTQ0LDIwIEBAIHN0
YXRpYyBOb2RlKiBoaWdoZXN0QW5jZXN0b3JUb1dyYXBNYXJrdXAKIAogLy8gRklYTUU6IFNob3Vs
ZG4ndCB3ZSBvbWl0IHN0eWxlIGluZm8gd2hlbiBhbm5vdGF0ZSA9PSBEb05vdEFubm90YXRlRm9y
SW50ZXJjaGFuZ2U/IAogLy8gRklYTUU6IEF0IGxlYXN0LCBhbm5vdGF0aW9uIGFuZCBzdHlsZSBp
bmZvIHNob3VsZCBwcm9iYWJseSBub3QgYmUgaW5jbHVkZWQgaW4gcmFuZ2UubWFya3VwU3RyaW5n
KCkKLVN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+
KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsIGJvb2wgY29u
dmVydEJsb2Nrc1RvSW5saW5lcywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcykKK3N0
YXRpYyBTdHJpbmcgY3JlYXRlTWFya3VwSW50ZXJuYWwoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBSYW5nZSogcmFuZ2UsIGNvbnN0IFJhbmdlKiB1cGRhdGVkUmFuZ2UsIFZlY3RvcjxOb2RlKj4q
IG5vZGVzLAorICAgIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIHNob3VsZEFubm90YXRlLCBib29s
IGNvbnZlcnRCbG9ja3NUb0lubGluZXMsIEVBYnNvbHV0ZVVSTHMgc2hvdWxkUmVzb2x2ZVVSTHMp
CiB7CisgICAgQVNTRVJUKGRvY3VtZW50KTsKKyAgICBBU1NFUlQocmFuZ2UpOworICAgIEFTU0VS
VCh1cGRhdGVkUmFuZ2UpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBp
bnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcsIChBU0NJSUxpdGVyYWwoIjxiciBjbGFzcz1cIiIgQXBw
bGVJbnRlcmNoYW5nZU5ld2xpbmUgIlwiPiIpKSk7CiAKLSAgICBpZiAoIXJhbmdlKQotICAgICAg
ICByZXR1cm4gIiI7Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSByYW5nZS0+b3duZXJEb2N1
bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiAiIjsKLQotICAgIC8v
IERpc2FibGUgdGhlIGRlbGV0ZSBidXR0b24gc28gaXQncyBlbGVtZW50cyBhcmUgbm90IHNlcmlh
bGl6ZWQgaW50byB0aGUgbWFya3VwLAotICAgIC8vIGJ1dCBtYWtlIHN1cmUgbmVpdGhlciBlbmRw
b2ludCBpcyBpbnNpZGUgdGhlIGRlbGV0ZSB1c2VyIGludGVyZmFjZS4KLSAgICBSZWZQdHI8UmFu
Z2U+IHVwZGF0ZWRSYW5nZTsKLSNpZiBFTkFCTEUoREVMRVRJT05fVUkpCi0gICAgRnJhbWUqIGZy
YW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7Ci0gICAgRGVsZXRlQnV0dG9uQ29udHJvbGxlciogZGVs
ZXRlQnV0dG9uID0gZnJhbWUgPyBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIoKSA6IDA7Ci0gICAgdXBkYXRlZFJhbmdlID0gYXZvaWRJbnRlcnNlY3Rpb25XaXRoTm9kZShy
YW5nZSwgZGVsZXRlQnV0dG9uID8gZGVsZXRlQnV0dG9uLT5jb250YWluZXJFbGVtZW50KCkgOiAw
KTsKLSAgICBpZiAoIXVwZGF0ZWRSYW5nZSkKLSAgICAgICAgcmV0dXJuICIiOwotICAgIGlmIChk
ZWxldGVCdXR0b24pCi0gICAgICAgIGRlbGV0ZUJ1dHRvbi0+ZGlzYWJsZSgpOwotI2Vsc2UKLSAg
ICB1cGRhdGVkUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHJhbmdlLT5vd25lckRvY3VtZW50KCksIHJh
bmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQoKSwgcmFuZ2UtPmVuZENv
bnRhaW5lcigpLCByYW5nZS0+ZW5kT2Zmc2V0KCkpOwotI2VuZGlmCi0KICAgICBib29sIGNvbGxh
cHNlZCA9IHVwZGF0ZWRSYW5nZS0+Y29sbGFwc2VkKEFTU0VSVF9OT19FWENFUFRJT04pOwogICAg
IGlmIChjb2xsYXBzZWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAgICAgTm9kZSogY29tbW9uQW5jZXN0b3IgPSB1cGRhdGVkUmFuZ2UtPmNvbW1v
bkFuY2VzdG9yQ29udGFpbmVyKEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIGlmICghY29tbW9u
QW5jZXN0b3IpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CiAKICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CiAKQEAgLTU4NCwzMiArNTY2LDIyIEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFu
Z2UqIHJhbmdlLCAKICAgICAvLyBGSVhNRTogRG8gdGhpcyBmb3IgYWxsIGZ1bGx5IHNlbGVjdGVk
IGJsb2Nrcywgbm90IGp1c3QgdGhlIGJvZHkuCiAgICAgaWYgKGJvZHkgJiYgYXJlUmFuZ2VzRXF1
YWwoVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKGJvZHkpLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIHJhbmdlKSkKICAgICAgICAgZnVsbHlTZWxlY3RlZFJv
b3QgPSBib2R5OwotICAgIE5vZGUqIHNwZWNpYWxDb21tb25BbmNlc3RvciA9IGhpZ2hlc3RBbmNl
c3RvclRvV3JhcE1hcmt1cCh1cGRhdGVkUmFuZ2UuZ2V0KCksIHNob3VsZEFubm90YXRlKTsKLSAg
ICBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvciBhY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2
ZVVSTHMsIHNob3VsZEFubm90YXRlLCB1cGRhdGVkUmFuZ2UuZ2V0KCksIHNwZWNpYWxDb21tb25B
bmNlc3Rvcik7CisgICAgTm9kZSogc3BlY2lhbENvbW1vbkFuY2VzdG9yID0gaGlnaGVzdEFuY2Vz
dG9yVG9XcmFwTWFya3VwKHVwZGF0ZWRSYW5nZSwgc2hvdWxkQW5ub3RhdGUpOworICAgIFN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yIGFjY3VtdWxhdG9yKG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcywg
c2hvdWxkQW5ub3RhdGUsIHVwZGF0ZWRSYW5nZSwgc3BlY2lhbENvbW1vbkFuY2VzdG9yKTsKICAg
ICBOb2RlKiBwYXN0RW5kID0gdXBkYXRlZFJhbmdlLT5wYXN0TGFzdE5vZGUoKTsKIAogICAgIE5v
ZGUqIHN0YXJ0Tm9kZSA9IHVwZGF0ZWRSYW5nZS0+Zmlyc3ROb2RlKCk7CiAgICAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVTdGFydCh1cGRhdGVkUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgVlBfREVG
QVVMVF9BRkZJTklUWSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQodXBkYXRlZFJh
bmdlLT5lbmRQb3NpdGlvbigpLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKICAgICBpZiAoc2hvdWxk
QW5ub3RhdGUgPT0gQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSAmJiBuZWVkSW50ZXJjaGFuZ2VOZXds
aW5lQWZ0ZXIodmlzaWJsZVN0YXJ0KSkgewotICAgICAgICBpZiAodmlzaWJsZVN0YXJ0ID09IHZp
c2libGVFbmQucHJldmlvdXMoKSkgewotI2lmIEVOQUJMRShERUxFVElPTl9VSSkKLSAgICAgICAg
ICAgIGlmIChkZWxldGVCdXR0b24pCi0gICAgICAgICAgICAgICAgZGVsZXRlQnV0dG9uLT5lbmFi
bGUoKTsKLSNlbmRpZgorICAgICAgICBpZiAodmlzaWJsZVN0YXJ0ID09IHZpc2libGVFbmQucHJl
dmlvdXMoKSkKICAgICAgICAgICAgIHJldHVybiBpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmc7Ci0g
ICAgICAgIH0KIAogICAgICAgICBhY2N1bXVsYXRvci5hcHBlbmRTdHJpbmcoaW50ZXJjaGFuZ2VO
ZXdsaW5lU3RyaW5nKTsKICAgICAgICAgc3RhcnROb2RlID0gdmlzaWJsZVN0YXJ0Lm5leHQoKS5k
ZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCk7CiAKLSAgICAgICAgaWYgKHBhc3RFbmQg
JiYgUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhzdGFydE5vZGUsIDAsIHBhc3RFbmQsIDAs
IEFTU0VSVF9OT19FWENFUFRJT04pID49IDApIHsKLSNpZiBFTkFCTEUoREVMRVRJT05fVUkpCi0g
ICAgICAgICAgICBpZiAoZGVsZXRlQnV0dG9uKQotICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRv
bi0+ZW5hYmxlKCk7Ci0jZW5kaWYKKyAgICAgICAgaWYgKHBhc3RFbmQgJiYgUmFuZ2U6OmNvbXBh
cmVCb3VuZGFyeVBvaW50cyhzdGFydE5vZGUsIDAsIHBhc3RFbmQsIDAsIEFTU0VSVF9OT19FWENF
UFRJT04pID49IDApCiAgICAgICAgICAgICByZXR1cm4gaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5n
OwotICAgICAgICB9CiAgICAgfQogCiAgICAgTm9kZSogbGFzdENsb3NlZCA9IGFjY3VtdWxhdG9y
LnNlcmlhbGl6ZU5vZGVzKHN0YXJ0Tm9kZSwgcGFzdEVuZCk7CkBAIC02NTUsMTEgKzYyNywzNyBA
QCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAgICAgaWYgKHNob3Vs
ZEFubm90YXRlID09IEFubm90YXRlRm9ySW50ZXJjaGFuZ2UgJiYgbmVlZEludGVyY2hhbmdlTmV3
bGluZUFmdGVyKHZpc2libGVFbmQucHJldmlvdXMoKSkpCiAgICAgICAgIGFjY3VtdWxhdG9yLmFw
cGVuZFN0cmluZyhpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcpOwogCisgICAgcmV0dXJuIGFjY3Vt
dWxhdG9yLnRha2VSZXN1bHRzKCk7Cit9CisKK1N0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFu
Z2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ug
c2hvdWxkQW5ub3RhdGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgRUFic29sdXRlVVJM
cyBzaG91bGRSZXNvbHZlVVJMcykKK3sKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHJhbmdlLT5vd25lckRv
Y3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CisKKyAgICAvLyBEaXNhYmxlIHRoZSBkZWxldGUgYnV0dG9uIHNvIGl0J3MgZWxlbWVudHMg
YXJlIG5vdCBzZXJpYWxpemVkIGludG8gdGhlIG1hcmt1cCwKKyAgICAvLyBidXQgbWFrZSBzdXJl
IG5laXRoZXIgZW5kcG9pbnQgaXMgaW5zaWRlIHRoZSBkZWxldGUgdXNlciBpbnRlcmZhY2UuCiAj
aWYgRU5BQkxFKERFTEVUSU9OX1VJKQotICAgIGlmIChkZWxldGVCdXR0b24pCisgICAgRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgaWYgKERlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIqIGRlbGV0ZUJ1dHRvbiA9IGZyYW1lID8gZnJhbWUtPmVkaXRvcigpLT5kZWxldGVCdXR0b25D
b250cm9sbGVyKCkgOiAwKSB7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gdXBkYXRlZFJhbmdlID0g
ZnJhbWUtPmVkaXRvcigpLT5hdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9s
bGVyKHJhbmdlKTsKKyAgICAgICAgaWYgKCF1cGRhdGVkUmFuZ2UpCisgICAgICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKKworICAgICAgICBkZWxldGVCdXR0b24tPmRpc2FibGUoKTsKKwor
ICAgICAgICBTdHJpbmcgcmVzdWx0ID0gY3JlYXRlTWFya3VwSW50ZXJuYWwoZG9jdW1lbnQsIHJh
bmdlLCB1cGRhdGVkUmFuZ2UuZ2V0KCksIG5vZGVzLCBzaG91bGRBbm5vdGF0ZSwgY29udmVydEJs
b2Nrc1RvSW5saW5lcywgc2hvdWxkUmVzb2x2ZVVSTHMpOworCiAgICAgICAgIGRlbGV0ZUJ1dHRv
bi0+ZW5hYmxlKCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAjZW5kaWYKLSAg
ICByZXR1cm4gYWNjdW11bGF0b3IudGFrZVJlc3VsdHMoKTsKKyAgICByZXR1cm4gY3JlYXRlTWFy
a3VwSW50ZXJuYWwoZG9jdW1lbnQsIHJhbmdlLCByYW5nZSwgbm9kZXMsIHNob3VsZEFubm90YXRl
LCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCBzaG91bGRSZXNvbHZlVVJMcyk7CiB9CiAKIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKERvY3VtZW50
KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwg
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCg==
</data>
<flag name="review"
          id="207724"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>