<?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>30132</bug_id>
          
          <creation_ts>2009-10-06 10:38:50 -0700</creation_ts>
          <short_desc>Make beforeload work with link/xml-stylesheet elements</short_desc>
          <delta_ts>2009-10-06 15:28:07 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>152784</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-10-06 10:38:50 -0700</bug_when>
    <thetext>Make beforeload work with stylesheet loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152824</commentid>
    <comment_count>1</comment_count>
      <attachid>40737</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-10-06 12:50:37 -0700</bug_when>
    <thetext>Created attachment 40737
Add support for beforeload for stylesheet loads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152832</commentid>
    <comment_count>2</comment_count>
      <attachid>40738</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-10-06 13:03:08 -0700</bug_when>
    <thetext>Created attachment 40738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152837</commentid>
    <comment_count>3</comment_count>
      <attachid>40738</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-10-06 13:12:03 -0700</bug_when>
    <thetext>Comment on attachment 40738
Patch

It would be good to add comments/tests for the bug fixes you made to ProcessingInstruction and HTMLLinkElement. It would also be good to add a test that uses ProcessingInstruction!

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152859</commentid>
    <comment_count>4</comment_count>
      <attachid>40743</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-10-06 14:23:42 -0700</bug_when>
    <thetext>Created attachment 40743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152871</commentid>
    <comment_count>5</comment_count>
      <attachid>40743</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-10-06 14:59:44 -0700</bug_when>
    <thetext>Comment on attachment 40743
Patch

&gt;  void ProcessingInstruction::setData(const String&amp; data, ExceptionCode&amp;)
&gt;  {
&gt; -    int oldLength = m_data.length();
&gt;      m_data = data;
&gt; -    document()-&gt;textRemoved(this, 0, oldLength);
&gt; +    checkStyleSheet();
&gt;  }

Why don&apos;t we need to call textRemoved anymore? Was it buggy? Is there anything we need to do for PIs that are not stylesheets? You should address at least some of these questions in your ChangeLog.

You should add your new test to your ChangeLogs.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152879</commentid>
    <comment_count>6</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-10-06 15:28:07 -0700</bug_when>
    <thetext>Fixed in r49208.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40737</attachid>
            <date>2009-10-06 12:50:37 -0700</date>
            <delta_ts>2009-10-06 13:03:08 -0700</delta_ts>
            <desc>Add support for beforeload for stylesheet loads</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>14861</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTIwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDktMTAtMDYgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTMyLCBtYWtlIGJlZm9yZWxvYWQg
d29yayB3aXRoIDxsaW5rPiBlbGVtZW50cyBhbmQKKyAgICAgICAgWE1MIHByb2Nlc3NpbmcgaW5z
dHJ1Y3Rpb25zLgorCisgICAgICAgIEFkZGVkIGZhc3QvZG9tL2JlZm9yZWxvYWQvbGluay1iZWZv
cmUtbG9hZC5odG1sCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCk6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hl
Y2tTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFbGVtZW50RGF0YTo6cmVxdWVzdFNjcmlwdCk6CisgICAgICAgICog
ZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vWE1MVG9rZW5pemVyTGlieG1sMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OmVuZEVsZW1lbnROcyk6CisgICAg
ICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExp
bmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmZvckF0dHJpYnV0ZVZh
bHVlKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50Lmg6
CisKIDIwMDktMTAtMDYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhdmUgS2lsemVyLgpJbmRleDogV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJl
dmlzaW9uIDQ5MTkzKQorKysgV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
b250YWluZXJOb2RlLmgiCiAKKyNpbmNsdWRlICJCZWZvcmVMb2FkRXZlbnQuaCIKICNpbmNsdWRl
ICJDYWNoZS5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgiCiAjaW5jbHVk
ZSAiRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIgpAQCAtOTA5LDQgKzkxMCwxMiBAQCBzdGF0aWMg
dm9pZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhOCiAgICAgfQogfQogCitib29sIENvbnRh
aW5lck5vZGU6OmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQoreworICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVm
UHRyPEJlZm9yZUxvYWRFdmVudD4gYmVmb3JlTG9hZEV2ZW50ID0gQmVmb3JlTG9hZEV2ZW50Ojpj
cmVhdGUoc291cmNlVVJMKTsKKyAgICBkaXNwYXRjaEV2ZW50KGJlZm9yZUxvYWRFdmVudC5nZXQo
KSk7CisgICAgcmV0dXJuIGluRG9jdW1lbnQoKSAmJiAhYmVmb3JlTG9hZEV2ZW50LT5kZWZhdWx0
UHJldmVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmgJKHJldmlzaW9uIDQ5MTkzKQorKysgV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUFs
bENoaWxkcmVuKCk7CiAKICAgICB2b2lkIGNsb25lQ2hpbGROb2RlcyhDb250YWluZXJOb2RlKiBj
bG9uZSk7CisgICAgCisgICAgYm9vbCBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCk7CiAKIHByb3RlY3RlZDoKICAgICBDb250YWluZXJOb2RlKERvY3VtZW50
KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CkluZGV4OiBXZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAJKHJldmlzaW9uIDQ5MTkzKQorKysgV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDEzICsxNDIs
MjMgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaAogICAgICAgICAg
ICAgfQogI2VuZGlmCiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobV9jYWNoZWRT
aGVldCkgeworICAgICAgICAgICAgICAgIGlmIChtX2xvYWRpbmcpCisgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50KCktPnJlbW92ZVBlbmRpbmdTaGVldCgpOworICAgICAgICAgICAgICAgIG1f
Y2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hl
ZFNoZWV0ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3Ry
aW5nIHVybCA9IGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGhyZWYpLnN0cmluZygpOworICAgICAg
ICAgICAgaWYgKCFkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCh1cmwpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKICAg
ICAgICAgICAgIGRvY3VtZW50KCktPmFkZFBlbmRpbmdTaGVldCgpOwotICAgICAgICAgICAgaWYg
KG1fY2FjaGVkU2hlZXQpCi0gICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldC0+cmVtb3ZlQ2xp
ZW50KHRoaXMpOworICAgICAgICAgICAgCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgICAgICAgICBp
ZiAobV9pc1hTTCkKLSAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS0+
ZG9jTG9hZGVyKCktPnJlcXVlc3RYU0xTdHlsZVNoZWV0KGRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KGhyZWYpLnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1l
bnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RYU0xTdHlsZVNoZWV0KHVybCk7CiAgICAgICAgICAg
ICBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgIHsKQEAgLTE1NiwxMCArMTY2LDE1IEBAIHZvaWQg
UHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2gKICAgICAgICAgICAgICAgICBpZiAo
Y2hhcnNldC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBkb2N1bWVu
dCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+ZW5jb2RpbmcoKTsKIAotICAgICAgICAgICAgICAgIG1f
Y2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdENTU1N0eWxlU2hl
ZXQoZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoaHJlZikuc3RyaW5nKCksIGNoYXJzZXQpOworICAg
ICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVx
dWVzdENTU1N0eWxlU2hlZXQodXJsLCBjaGFyc2V0KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQtPmFk
ZENsaWVudCh0aGlzKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRo
ZSByZXF1ZXN0IG1heSBoYXZlIGJlZW4gZGVuaWVkIGlmIChmb3IgZXhhbXBsZSkgdGhlIHN0eWxl
c2hlZXQgaXMgbG9jYWwgYW5kIHRoZSBkb2N1bWVudCBpcyByZW1vdGUuCisgICAgICAgICAgICAg
ICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3Zl
UGVuZGluZ1NoZWV0KCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4
OiBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gNDkxOTQpCisrKyBXZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgU2Ny
aXB0RWxlbWVudERhdGE6OnJlcXVlc3RTY3JpcHQoY28KICAgICBpZiAoIWRvY3VtZW50LT5mcmFt
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fc2NyaXB0RWxlbWVudC0+ZGlzcGF0
Y2hCZWZvcmVMb2FkRXZlbnQoc291cmNlVXJsKSkKKyAgICBpZiAoIW1fZWxlbWVudC0+ZGlzcGF0
Y2hCZWZvcmVMb2FkRXZlbnQoc291cmNlVXJsKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNT
RVJUKCFtX2NhY2hlZFNjcmlwdCk7CkluZGV4OiBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiA0OTE5
NCkKKysrIFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NyArNDQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2VBdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBmb3JBdHRyaWJ1dGVWYWx1ZSgp
IGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExv
YWRFdmVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCkgPSAw
OwogCkluZGV4OiBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcAkocmV2aXNpb24gNDkxOTQp
CisrKyBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODUxLDcgKzg1MSw3IEBAIHZvaWQgWE1MVG9rZW5pemVyOjplbmRFbGVtZW50TnMoKQogICAg
ICAgICBpZiAoIXNjcmlwdEhyZWYuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyB3ZSBoYXZl
IGEgc3JjIGF0dHJpYnV0ZSAKICAgICAgICAgICAgIFN0cmluZyBzY3JpcHRDaGFyc2V0ID0gc2Ny
aXB0RWxlbWVudC0+c2NyaXB0Q2hhcnNldCgpOwotICAgICAgICAgICAgaWYgKHNjcmlwdEVsZW1l
bnQtPmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHNjcmlwdEhyZWYpICYmCisgICAgICAgICAgICBp
ZiAoZWxlbWVudC0+ZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoc2NyaXB0SHJlZikgJiYKICAgICAg
ICAgICAgICAgICAobV9wZW5kaW5nU2NyaXB0ID0gbV9kb2MtPmRvY0xvYWRlcigpLT5yZXF1ZXN0
U2NyaXB0KHNjcmlwdEhyZWYsIHNjcmlwdENoYXJzZXQpKSkgewogICAgICAgICAgICAgICAgIG1f
c2NyaXB0RWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0
LT5hZGRDbGllbnQodGhpcyk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNp
b24gNDkxOTMpCisrKyBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUg
Ik1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTEyNiw3ICsxMjcsOSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1CiAgICAgICAgIHByb2Nlc3MoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBkaXNhYmxlZEF0dHIpIHsKICAgICAgICAgc2V0RGlzYWJsZWRTdGF0ZSghYXR0ci0+
aXNOdWxsKCkpOwotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
b25iZWZvcmVsb2FkQXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRo
aXMsIGF0dHIpKTsKKyAgICBlbHNlIHsKICAgICAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB0aXRs
ZUF0dHIgJiYgbV9zaGVldCkKICAgICAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKGF0dHItPnZh
bHVlKCkpOwogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7
CkBAIC0xODcsMTEgKzE5MCw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAg
ICAvLyBUaGlzIHdhcyBidWdneSBhbmQgd291bGQgaW5jb3JyZWN0bHkgbWF0Y2ggPGxpbmsgcmVs
PSJhbHRlcm5hdGUiPiwgd2hpY2ggaGFzIGEgZGlmZmVyZW50IHNwZWNpZmllZCBtZWFuaW5nLiAt
ZHdoCiAgICAgaWYgKG1fZGlzYWJsZWRTdGF0ZSAhPSAyICYmIChtX2lzU3R5bGVTaGVldCB8fCBh
Y2NlcHRJZlR5cGVDb250YWluc1RleHRDU1MgJiYgdHlwZS5jb250YWlucygidGV4dC9jc3MiKSkg
JiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBtX3VybC5pc1ZhbGlkKCkpIHsKICAgICAgICAgLy8g
YWxzbywgZG9uJ3QgbG9hZCBzdHlsZSBzaGVldHMgZm9yIHN0YW5kYWxvbmUgZG9jdW1lbnRzCi0g
ICAgICAgIC8vIEFkZCBvdXJzZWx2ZXMgYXMgYSBwZW5kaW5nIHNoZWV0LCBidXQgb25seSBpZiB3
ZSBhcmVuJ3QgYW4gYWx0ZXJuYXRlIAotICAgICAgICAvLyBzdHlsZXNoZWV0LiAgQWx0ZXJuYXRl
IHN0eWxlc2hlZXRzIGRvbid0IGhvbGQgdXAgcmVuZGVyIHRyZWUgY29uc3RydWN0aW9uLgotICAg
ICAgICBpZiAoIWlzQWx0ZXJuYXRlKCkpCi0gICAgICAgICAgICBkb2N1bWVudCgpLT5hZGRQZW5k
aW5nU2hlZXQoKTsKLQorICAgICAgICAKICAgICAgICAgU3RyaW5nIGNoYXJzZXQgPSBnZXRBdHRy
aWJ1dGUoY2hhcnNldEF0dHIpOwogICAgICAgICBpZiAoY2hhcnNldC5pc0VtcHR5KCkgJiYgZG9j
dW1lbnQoKS0+ZnJhbWUoKSkKICAgICAgICAgICAgIGNoYXJzZXQgPSBkb2N1bWVudCgpLT5mcmFt
ZSgpLT5sb2FkZXIoKS0+ZW5jb2RpbmcoKTsKQEAgLTIwMCwxNCArMTk5LDI4IEBAIHZvaWQgSFRN
TExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICAgICAgICAgIGlmIChtX2xvYWRpbmcpCiAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlUGVuZGluZ1NoZWV0KCk7CiAgICAgICAgICAg
ICBtX2NhY2hlZFNoZWV0LT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgICAgICAgICBtX2NhY2hl
ZFNoZWV0ID0gMDsKICAgICAgICAgfQorCisgICAgICAgIGlmICghZGlzcGF0Y2hCZWZvcmVMb2Fk
RXZlbnQobV91cmwpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKICAgICAgICAgbV9s
b2FkaW5nID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIC8vIEFkZCBvdXJzZWx2ZXMgYXMgYSBw
ZW5kaW5nIHNoZWV0LCBidXQgb25seSBpZiB3ZSBhcmVuJ3QgYW4gYWx0ZXJuYXRlIAorICAgICAg
ICAvLyBzdHlsZXNoZWV0LiAgQWx0ZXJuYXRlIHN0eWxlc2hlZXRzIGRvbid0IGhvbGQgdXAgcmVu
ZGVyIHRyZWUgY29uc3RydWN0aW9uLgorICAgICAgICBpZiAoIWlzQWx0ZXJuYXRlKCkpCisgICAg
ICAgICAgICBkb2N1bWVudCgpLT5hZGRQZW5kaW5nU2hlZXQoKTsKKwogICAgICAgICBtX2NhY2hl
ZFNoZWV0ID0gZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RDU1NTdHlsZVNoZWV0KG1f
dXJsLCBjaGFyc2V0KTsKKyAgICAgICAgCiAgICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAg
ICAgICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xpZW50KHRoaXMpOwotICAgICAgICBlbHNlIGlm
ICghaXNBbHRlcm5hdGUoKSkgeyAvLyBUaGUgcmVxdWVzdCBtYXkgaGF2ZSBiZWVuIGRlbmllZCBp
ZiBzdHlsZXNoZWV0IGlzIGxvY2FsIGFuZCBkb2N1bWVudCBpcyByZW1vdGUuCisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgLy8gVGhlIHJlcXVlc3QgbWF5IGhhdmUgYmVlbiBkZW5pZWQgaWYg
KGZvciBleGFtcGxlKSB0aGUgc3R5bGVzaGVldCBpcyBsb2NhbCBhbmQgdGhlIGRvY3VtZW50IGlz
IHJlbW90ZS4KICAgICAgICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOwotICAgICAgICAgICAgZG9j
dW1lbnQoKS0+cmVtb3ZlUGVuZGluZ1NoZWV0KCk7CisgICAgICAgICAgICBpZiAoIWlzQWx0ZXJu
YXRlKCkpCisgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlUGVuZGluZ1NoZWV0KCk7
CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fc2hlZXQpIHsKICAgICAgICAgLy8gd2Ugbm8g
bG9uZ2VyIGNvbnRhaW4gYSBzdHlsZXNoZWV0LCBlLmcuIHBlcmhhcHMgcmVsIG9yIHR5cGUgd2Fz
IGNoYW5nZWQKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gNDkx
OTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTFNj
cmlwdEVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkJlZm9yZUxvYWRFdmVudC5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CkBAIC0yMjAsMTQgKzIxOSw2IEBAIFN0cmluZyBIVE1MU2NyaXB0RWxlbWVudDo6Zm9yQXR0cmli
dXRlVmEKIHsKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGZvckF0dHIpLnN0cmluZygpOwogfQot
IAotYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpCi17Ci0gICAgUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBwcm90
ZWN0b3IodGhpcyk7Ci0gICAgUmVmUHRyPEJlZm9yZUxvYWRFdmVudD4gYmVmb3JlTG9hZEV2ZW50
ID0gQmVmb3JlTG9hZEV2ZW50OjpjcmVhdGUoc291cmNlVVJMKTsKLSAgICBkaXNwYXRjaEV2ZW50
KGJlZm9yZUxvYWRFdmVudC5nZXQoKSk7Ci0gICAgcmV0dXJuIGluRG9jdW1lbnQoKSAmJiAhYmVm
b3JlTG9hZEV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7Ci19CiAKIHZvaWQgSFRNTFNjcmlwdEVs
ZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50KCkKIHsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVu
dC5oCShyZXZpc2lvbiA0OTE5NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw4ICs3Nyw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGF2
ZUZpcmVkTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmhhdmVGaXJlZExvYWRFdmVu
dCgpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpOwotCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBTdHJpbmcgc291
cmNlQXR0cmlidXRlVmFsdWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBjaGFyc2V0QXR0
cmlidXRlVmFsdWUoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCShyZXZp
c2lvbiA0OTE5NCkKKysrIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdT
Y3JpcHRFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJCZWZvcmVMb2FkRXZlbnQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgpAQCAtMTgxLDE0ICsxODAsNiBAQCBTdHJpbmcgU1ZHU2NyaXB0RWxlbWVudDo6Zm9yQXR0cmli
dXRlVmFsCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1ib29sIFNWR1NjcmlwdEVsZW1lbnQ6
OmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQotewotICAg
IFJlZlB0cjxTVkdTY3JpcHRFbGVtZW50PiBwcm90ZWN0b3IodGhpcyk7Ci0gICAgUmVmUHRyPEJl
Zm9yZUxvYWRFdmVudD4gYmVmb3JlTG9hZEV2ZW50ID0gQmVmb3JlTG9hZEV2ZW50OjpjcmVhdGUo
c291cmNlVVJMKTsKLSAgICBkaXNwYXRjaEV2ZW50KGJlZm9yZUxvYWRFdmVudC5nZXQoKSk7Ci0g
ICAgcmV0dXJuIGluRG9jdW1lbnQoKSAmJiAhYmVmb3JlTG9hZEV2ZW50LT5kZWZhdWx0UHJldmVu
dGVkKCk7Ci19Ci0KIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQog
ewogICAgIGJvb2wgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWRCYXNlVmFsdWUoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHJldmlzaW9u
IDQ5MTk0KQorKysgV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw3ICs2OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBT
dHJpbmcgbGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFN0
cmluZyBmb3JBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBk
aXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ5MjAzKQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDkt
MTAtMDYgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMwMTMyLCBtYWtlIGJlZm9yZWxvYWQgd29yayB3aXRoIENTUyBzdHlsZXNo
ZWV0cyBsb2FkZWQgZnJvbQorICAgICAgICA8bGluaz4gZWxlbWVudHMgYW5kIFhNTCBwcm9jZXNz
aW5nIGluc3RydWN0aW9ucy4KKworICAgICAgICAqIGZhc3QvZG9tL2JlZm9yZWxvYWQvbGluay1i
ZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2JlZm9y
ZWxvYWQvbGluay1iZWZvcmUtbG9hZC5odG1sOiBBZGRlZC4KKwogMjAwOS0xMC0wNiAgRGFuaWVs
IEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL2xpbmstYmVmb3Jl
LWxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2Jl
Zm9yZWxvYWQvbGluay1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL2xpbmstYmVmb3JlLWxvYWQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1RoaXMgcGFnZSB0ZXN0cyB0aGUgYmVm
b3JlbG9hZCBldmVudCBvbiBsaW5rIGVsZW1lbnRzLiBZb3Ugc2hvdWxkIHNlZSB0aGUgd29yZCBQ
QVNTIGJlbG93IHVuZGVybmVhdGggYSBncmVlbiBzcXVhcmUuCisKK1BBU1MKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvbGluay1iZWZvcmUtbG9hZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvbGluay1iZWZvcmUtbG9hZC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVmb3JlbG9hZC9saW5r
LWJlZm9yZS1sb2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c3R5bGU+CisuYmxvY2sgeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAw
cHg7CisgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzxsaW5rIG9uYmVm
b3JlbG9hZD0icmV0dXJuIGZhbHNlIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9m
YWlsLmNzcyI+Cis8c2NyaXB0PgorZnVuY3Rpb24gcHJpbnQobWVzc2FnZSwgY29sb3IpIAorewor
ICAgIHZhciBwYXJhZ3JhcGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBw
YXJhZ3JhcGguYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwor
ICAgIHBhcmFncmFwaC5zdHlsZS5mb250RmFtaWx5ID0gIm1vbm9zcGFjZSI7CisgICAgaWYgKGNv
bG9yKQorICAgICAgICBwYXJhZ3JhcGguc3R5bGUuY29sb3IgPSBjb2xvcjsKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKHBhcmFncmFwaCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGlmIChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmxvY2snKS5vZmZzZXRXaWR0aCA9PSAxMDApCisgICAg
ICAgIHByaW50KCJQQVNTIiwgImdyZWVuIik7CisgICAgZWxzZQorICAgICAgICBwcmludCgiRkFJ
TCIsICJyZWQiKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCki
PgorPHA+VGhpcyBwYWdlIHRlc3RzIHRoZSBiZWZvcmVsb2FkIGV2ZW50IG9uIGxpbmsgZWxlbWVu
dHMuICBZb3Ugc2hvdWxkIHNlZSB0aGUgd29yZCBQQVNTIGJlbG93IHVuZGVybmVhdGggYSBncmVl
biBzcXVhcmUuPC9wPgorPGhyPgorPGRpdiBpZD0iYmxvY2siIGNsYXNzPSJibG9jayI+PC9kaXY+
Cis8aHI+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2JlZm9yZWxvYWQvcmVzb3VyY2VzL2ZhaWwuY3NzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvcmVzb3VyY2VzL2ZhaWwuY3NzCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVmb3JlbG9hZC9yZXNvdXJjZXMvZmFpbC5jc3MJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorLmJsb2NrIHsKKyAgYmFja2dyb3VuZC1jb2xvcjpy
ZWQ7CisgIHdpZHRoOiAyMDBweDsKKyAgaGVpZ2h0OjIwMHB4OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40738</attachid>
            <date>2009-10-06 13:03:08 -0700</date>
            <delta_ts>2009-10-06 14:23:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>14774</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTIwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDktMTAtMDYgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTMyLCBtYWtlIGJlZm9yZWxvYWQg
d29yayB3aXRoIDxsaW5rPiBlbGVtZW50cyBhbmQKKyAgICAgICAgWE1MIHByb2Nlc3NpbmcgaW5z
dHJ1Y3Rpb25zLgorCisgICAgICAgIEFkZGVkIGZhc3QvZG9tL2JlZm9yZWxvYWQvbGluay1iZWZv
cmUtbG9hZC5odG1sCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCk6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hl
Y2tTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFbGVtZW50RGF0YTo6cmVxdWVzdFNjcmlwdCk6CisgICAgICAgICog
ZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vWE1MVG9rZW5pemVyTGlieG1sMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OmVuZEVsZW1lbnROcyk6CisgICAg
ICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExp
bmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmZvckF0dHJpYnV0ZVZh
bHVlKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50Lmg6
CisKIDIwMDktMTAtMDYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhdmUgS2lsemVyLgpJbmRleDogV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJl
dmlzaW9uIDQ5MTkzKQorKysgV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
b250YWluZXJOb2RlLmgiCiAKKyNpbmNsdWRlICJCZWZvcmVMb2FkRXZlbnQuaCIKICNpbmNsdWRl
ICJDYWNoZS5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgiCiAjaW5jbHVk
ZSAiRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIgpAQCAtOTA5LDQgKzkxMCwxMiBAQCBzdGF0aWMg
dm9pZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhOCiAgICAgfQogfQogCitib29sIENvbnRh
aW5lck5vZGU6OmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQoreworICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVm
UHRyPEJlZm9yZUxvYWRFdmVudD4gYmVmb3JlTG9hZEV2ZW50ID0gQmVmb3JlTG9hZEV2ZW50Ojpj
cmVhdGUoc291cmNlVVJMKTsKKyAgICBkaXNwYXRjaEV2ZW50KGJlZm9yZUxvYWRFdmVudC5nZXQo
KSk7CisgICAgcmV0dXJuIGluRG9jdW1lbnQoKSAmJiAhYmVmb3JlTG9hZEV2ZW50LT5kZWZhdWx0
UHJldmVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmgJKHJldmlzaW9uIDQ5MTkzKQorKysgV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUFs
bENoaWxkcmVuKCk7CiAKICAgICB2b2lkIGNsb25lQ2hpbGROb2RlcyhDb250YWluZXJOb2RlKiBj
bG9uZSk7CisgICAgCisgICAgYm9vbCBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCk7CiAKIHByb3RlY3RlZDoKICAgICBDb250YWluZXJOb2RlKERvY3VtZW50
KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CkluZGV4OiBXZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAJKHJldmlzaW9uIDQ5MTkzKQorKysgV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDEzICsxNDIs
MjEgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaAogICAgICAgICAg
ICAgfQogI2VuZGlmCiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobV9jYWNoZWRT
aGVldCkgeworICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudCh0aGlz
KTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gMDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgU3RyaW5nIHVybCA9IGRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKGhyZWYpLnN0cmluZygpOworICAgICAgICAgICAgaWYgKCFkaXNwYXRjaEJlZm9yZUxvYWRF
dmVudCh1cmwpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIGRvY3VtZW50KCktPmFkZFBlbmRp
bmdTaGVldCgpOwotICAgICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCi0gICAgICAgICAgICAg
ICAgbV9jYWNoZWRTaGVldC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICAgICAgCiAjaWYg
RU5BQkxFKFhTTFQpCiAgICAgICAgICAgICBpZiAobV9pc1hTTCkKLSAgICAgICAgICAgICAgICBt
X2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RYU0xTdHlsZVNo
ZWV0KGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGhyZWYpLnN0cmluZygpKTsKKyAgICAgICAgICAg
ICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RYU0xT
dHlsZVNoZWV0KHVybCk7CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgIHsK
QEAgLTE1NiwxMCArMTY0LDE1IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0
eWxlU2gKICAgICAgICAgICAgICAgICBpZiAoY2hhcnNldC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICAgICAgICAgIGNoYXJzZXQgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+ZW5jb2Rp
bmcoKTsKIAotICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLT5kb2NM
b2FkZXIoKS0+cmVxdWVzdENTU1N0eWxlU2hlZXQoZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoaHJl
Zikuc3RyaW5nKCksIGNoYXJzZXQpOworICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBk
b2N1bWVudCgpLT5kb2NMb2FkZXIoKS0+cmVxdWVzdENTU1N0eWxlU2hlZXQodXJsLCBjaGFyc2V0
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAg
ICAgICAgICAgIG1fY2FjaGVkU2hlZXQtPmFkZENsaWVudCh0aGlzKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIC8vIFRoZSByZXF1ZXN0IG1heSBoYXZlIGJlZW4gZGVuaWVk
IGlmIChmb3IgZXhhbXBsZSkgdGhlIHN0eWxlc2hlZXQgaXMgbG9jYWwgYW5kIHRoZSBkb2N1bWVu
dCBpcyByZW1vdGUuCisgICAgICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlUGVuZGluZ1NoZWV0KCk7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24g
NDkxOTQpCisrKyBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudERhdGE6OnJlcXVlc3RTY3JpcHQo
Y28KICAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoIW1fc2NyaXB0RWxlbWVudC0+ZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoc291cmNlVXJsKSkK
KyAgICBpZiAoIW1fZWxlbWVudC0+ZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoc291cmNlVXJsKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2NhY2hlZFNjcmlwdCk7CkluZGV4OiBX
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5oCShyZXZpc2lvbiA0OTE5NCkKKysrIFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBTdHJpbmcgbGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFN0cmluZyBmb3JBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgYm9v
bCBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hFcnJvckV2ZW50KCkgPSAwOwogCkluZGV4OiBXZWJDb3JlL2RvbS9YTUxUb2tl
bml6ZXJMaWJ4bWwyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJM
aWJ4bWwyLmNwcAkocmV2aXNpb24gNDkxOTQpCisrKyBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJM
aWJ4bWwyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUxLDcgKzg1MSw3IEBAIHZvaWQgWE1MVG9r
ZW5pemVyOjplbmRFbGVtZW50TnMoKQogICAgICAgICBpZiAoIXNjcmlwdEhyZWYuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAvLyB3ZSBoYXZlIGEgc3JjIGF0dHJpYnV0ZSAKICAgICAgICAgICAg
IFN0cmluZyBzY3JpcHRDaGFyc2V0ID0gc2NyaXB0RWxlbWVudC0+c2NyaXB0Q2hhcnNldCgpOwot
ICAgICAgICAgICAgaWYgKHNjcmlwdEVsZW1lbnQtPmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHNj
cmlwdEhyZWYpICYmCisgICAgICAgICAgICBpZiAoZWxlbWVudC0+ZGlzcGF0Y2hCZWZvcmVMb2Fk
RXZlbnQoc2NyaXB0SHJlZikgJiYKICAgICAgICAgICAgICAgICAobV9wZW5kaW5nU2NyaXB0ID0g
bV9kb2MtPmRvY0xvYWRlcigpLT5yZXF1ZXN0U2NyaXB0KHNjcmlwdEhyZWYsIHNjcmlwdENoYXJz
ZXQpKSkgewogICAgICAgICAgICAgICAgIG1fc2NyaXB0RWxlbWVudCA9IGVsZW1lbnQ7CiAgICAg
ICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0LT5hZGRDbGllbnQodGhpcyk7CkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gNDkxOTMpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNs
dWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEyNiw3ICsxMjcsOSBAQCB2
b2lkIEhUTUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgICAgIHByb2Nlc3Mo
KTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkaXNhYmxlZEF0dHIpIHsKICAgICAg
ICAgc2V0RGlzYWJsZWRTdGF0ZSghYXR0ci0+aXNOdWxsKCkpOwotICAgIH0gZWxzZSB7CisgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25iZWZvcmVsb2FkQXR0cikKKyAgICAgICAgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVh
dGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKKyAgICBlbHNlIHsKICAgICAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSB0aXRsZUF0dHIgJiYgbV9zaGVldCkKICAgICAgICAgICAg
IG1fc2hlZXQtPnNldFRpdGxlKGF0dHItPnZhbHVlKCkpOwogICAgICAgICBIVE1MRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CkBAIC0xODcsMTEgKzE5MCw3IEBAIHZvaWQgSFRN
TExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICAvLyBUaGlzIHdhcyBidWdneSBhbmQgd291bGQg
aW5jb3JyZWN0bHkgbWF0Y2ggPGxpbmsgcmVsPSJhbHRlcm5hdGUiPiwgd2hpY2ggaGFzIGEgZGlm
ZmVyZW50IHNwZWNpZmllZCBtZWFuaW5nLiAtZHdoCiAgICAgaWYgKG1fZGlzYWJsZWRTdGF0ZSAh
PSAyICYmIChtX2lzU3R5bGVTaGVldCB8fCBhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1MgJiYg
dHlwZS5jb250YWlucygidGV4dC9jc3MiKSkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBtX3Vy
bC5pc1ZhbGlkKCkpIHsKICAgICAgICAgLy8gYWxzbywgZG9uJ3QgbG9hZCBzdHlsZSBzaGVldHMg
Zm9yIHN0YW5kYWxvbmUgZG9jdW1lbnRzCi0gICAgICAgIC8vIEFkZCBvdXJzZWx2ZXMgYXMgYSBw
ZW5kaW5nIHNoZWV0LCBidXQgb25seSBpZiB3ZSBhcmVuJ3QgYW4gYWx0ZXJuYXRlIAotICAgICAg
ICAvLyBzdHlsZXNoZWV0LiAgQWx0ZXJuYXRlIHN0eWxlc2hlZXRzIGRvbid0IGhvbGQgdXAgcmVu
ZGVyIHRyZWUgY29uc3RydWN0aW9uLgotICAgICAgICBpZiAoIWlzQWx0ZXJuYXRlKCkpCi0gICAg
ICAgICAgICBkb2N1bWVudCgpLT5hZGRQZW5kaW5nU2hlZXQoKTsKLQorICAgICAgICAKICAgICAg
ICAgU3RyaW5nIGNoYXJzZXQgPSBnZXRBdHRyaWJ1dGUoY2hhcnNldEF0dHIpOwogICAgICAgICBp
ZiAoY2hhcnNldC5pc0VtcHR5KCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSkKICAgICAgICAgICAg
IGNoYXJzZXQgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+ZW5jb2RpbmcoKTsKQEAg
LTIwMCwxNCArMTk5LDI4IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICAg
ICAgICAgIGlmIChtX2xvYWRpbmcpCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3Zl
UGVuZGluZ1NoZWV0KCk7CiAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0LT5yZW1vdmVDbGllbnQo
dGhpcyk7CisgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gMDsKICAgICAgICAgfQorCisgICAg
ICAgIGlmICghZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQobV91cmwpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAKICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKKyAgICAgICAgCisgICAg
ICAgIC8vIEFkZCBvdXJzZWx2ZXMgYXMgYSBwZW5kaW5nIHNoZWV0LCBidXQgb25seSBpZiB3ZSBh
cmVuJ3QgYW4gYWx0ZXJuYXRlIAorICAgICAgICAvLyBzdHlsZXNoZWV0LiAgQWx0ZXJuYXRlIHN0
eWxlc2hlZXRzIGRvbid0IGhvbGQgdXAgcmVuZGVyIHRyZWUgY29uc3RydWN0aW9uLgorICAgICAg
ICBpZiAoIWlzQWx0ZXJuYXRlKCkpCisgICAgICAgICAgICBkb2N1bWVudCgpLT5hZGRQZW5kaW5n
U2hlZXQoKTsKKwogICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS0+ZG9jTG9hZGVy
KCktPnJlcXVlc3RDU1NTdHlsZVNoZWV0KG1fdXJsLCBjaGFyc2V0KTsKKyAgICAgICAgCiAgICAg
ICAgIGlmIChtX2NhY2hlZFNoZWV0KQogICAgICAgICAgICAgbV9jYWNoZWRTaGVldC0+YWRkQ2xp
ZW50KHRoaXMpOwotICAgICAgICBlbHNlIGlmICghaXNBbHRlcm5hdGUoKSkgeyAvLyBUaGUgcmVx
dWVzdCBtYXkgaGF2ZSBiZWVuIGRlbmllZCBpZiBzdHlsZXNoZWV0IGlzIGxvY2FsIGFuZCBkb2N1
bWVudCBpcyByZW1vdGUuCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gVGhlIHJlcXVl
c3QgbWF5IGhhdmUgYmVlbiBkZW5pZWQgaWYgKGZvciBleGFtcGxlKSB0aGUgc3R5bGVzaGVldCBp
cyBsb2NhbCBhbmQgdGhlIGRvY3VtZW50IGlzIHJlbW90ZS4KICAgICAgICAgICAgIG1fbG9hZGlu
ZyA9IGZhbHNlOwotICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlUGVuZGluZ1NoZWV0KCk7
CisgICAgICAgICAgICBpZiAoIWlzQWx0ZXJuYXRlKCkpCisgICAgICAgICAgICAgICAgZG9jdW1l
bnQoKS0+cmVtb3ZlUGVuZGluZ1NoZWV0KCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1f
c2hlZXQpIHsKICAgICAgICAgLy8gd2Ugbm8gbG9uZ2VyIGNvbnRhaW4gYSBzdHlsZXNoZWV0LCBl
LmcuIHBlcmhhcHMgcmVsIG9yIHR5cGUgd2FzIGNoYW5nZWQKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTY3Jp
cHRFbGVtZW50LmNwcAkocmV2aXNpb24gNDkxOTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdEVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkJl
Zm9yZUxvYWRFdmVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQu
aCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC0yMjAsMTQgKzIxOSw2IEBAIFN0cmluZyBI
VE1MU2NyaXB0RWxlbWVudDo6Zm9yQXR0cmlidXRlVmEKIHsKICAgICByZXR1cm4gZ2V0QXR0cmli
dXRlKGZvckF0dHIpLnN0cmluZygpOwogfQotIAotYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6ZGlz
cGF0Y2hCZWZvcmVMb2FkRXZlbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCi17Ci0gICAgUmVm
UHRyPEhUTUxTY3JpcHRFbGVtZW50PiBwcm90ZWN0b3IodGhpcyk7Ci0gICAgUmVmUHRyPEJlZm9y
ZUxvYWRFdmVudD4gYmVmb3JlTG9hZEV2ZW50ID0gQmVmb3JlTG9hZEV2ZW50OjpjcmVhdGUoc291
cmNlVVJMKTsKLSAgICBkaXNwYXRjaEV2ZW50KGJlZm9yZUxvYWRFdmVudC5nZXQoKSk7Ci0gICAg
cmV0dXJuIGluRG9jdW1lbnQoKSAmJiAhYmVmb3JlTG9hZEV2ZW50LT5kZWZhdWx0UHJldmVudGVk
KCk7Ci19CiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50KCkKIHsK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiA0OTE5NCkKKysrIFdlYkNv
cmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw4ICs3Nyw2
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGF2ZUZpcmVkTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLmhhdmVGaXJlZExvYWRFdmVudCgpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZGlz
cGF0Y2hCZWZvcmVMb2FkRXZlbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwotCiBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNlQXR0cmlidXRlVmFsdWUoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIFN0cmluZyBjaGFyc2V0QXR0cmlidXRlVmFsdWUoKSBjb25zdDsKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA0OTE5NCkKKysrIFdlYkNvcmUvc3ZnL1NW
R1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAjaWYg
RU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdTY3JpcHRFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJC
ZWZvcmVMb2FkRXZlbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtMTgxLDE0ICsxODAsNiBAQCBTdHJpbmcg
U1ZHU2NyaXB0RWxlbWVudDo6Zm9yQXR0cmlidXRlVmFsCiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCi1ib29sIFNWR1NjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIFJlZlB0cjxTVkdTY3JpcHRFbGVtZW50PiBwcm90
ZWN0b3IodGhpcyk7Ci0gICAgUmVmUHRyPEJlZm9yZUxvYWRFdmVudD4gYmVmb3JlTG9hZEV2ZW50
ID0gQmVmb3JlTG9hZEV2ZW50OjpjcmVhdGUoc291cmNlVVJMKTsKLSAgICBkaXNwYXRjaEV2ZW50
KGJlZm9yZUxvYWRFdmVudC5nZXQoKSk7Ci0gICAgcmV0dXJuIGluRG9jdW1lbnQoKSAmJiAhYmVm
b3JlTG9hZEV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7Ci19Ci0KIHZvaWQgU1ZHU2NyaXB0RWxl
bWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogewogICAgIGJvb2wgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCA9IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKTsKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdTY3JpcHRFbGVtZW50LmgJKHJldmlzaW9uIDQ5MTk0KQorKysgV2ViQ29yZS9zdmcvU1ZHU2Ny
aXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2VBdHRyaWJ1dGVWYWx1ZSgp
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBmb3JBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0
OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRFdmVu
dCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDQ5MjAzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTAtMDYgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTMyLCBtYWtlIGJlZm9y
ZWxvYWQgd29yayB3aXRoIENTUyBzdHlsZXNoZWV0cyBsb2FkZWQgZnJvbQorICAgICAgICA8bGlu
az4gZWxlbWVudHMgYW5kIFhNTCBwcm9jZXNzaW5nIGluc3RydWN0aW9ucy4KKworICAgICAgICAq
IGZhc3QvZG9tL2JlZm9yZWxvYWQvbGluay1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2JlZm9yZWxvYWQvbGluay1iZWZvcmUtbG9hZC5odG1sOiBB
ZGRlZC4KKwogMjAwOS0xMC0wNiAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9iZWZvcmVsb2FkL2xpbmstYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvbGluay1iZWZvcmUtbG9hZC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2Fk
L2xpbmstYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMg
QEAKK1RoaXMgcGFnZSB0ZXN0cyB0aGUgYmVmb3JlbG9hZCBldmVudCBvbiBsaW5rIGVsZW1lbnRz
LiBZb3Ugc2hvdWxkIHNlZSB0aGUgd29yZCBQQVNTIGJlbG93IHVuZGVybmVhdGggYSBncmVlbiBz
cXVhcmUuCisKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvbGlu
ay1iZWZvcmUtbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2Jl
Zm9yZWxvYWQvbGluay1iZWZvcmUtbG9hZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vYmVmb3JlbG9hZC9saW5rLWJlZm9yZS1sb2FkLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisuYmxvY2sgeworICB3
aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91bmQtY29sb3I6IGdyZWVu
OworfQorPC9zdHlsZT4KKzxsaW5rIG9uYmVmb3JlbG9hZD0icmV0dXJuIGZhbHNlIiByZWw9InN0
eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9mYWlsLmNzcyI+Cis8c2NyaXB0PgorZnVuY3Rpb24g
cHJpbnQobWVzc2FnZSwgY29sb3IpIAoreworICAgIHZhciBwYXJhZ3JhcGggPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIHBhcmFncmFwaC5zdHlsZS5mb250RmFtaWx5
ID0gIm1vbm9zcGFjZSI7CisgICAgaWYgKGNvbG9yKQorICAgICAgICBwYXJhZ3JhcGguc3R5bGUu
Y29sb3IgPSBjb2xvcjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFw
cGVuZENoaWxkKHBhcmFncmFwaCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKworICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmxvY2sn
KS5vZmZzZXRXaWR0aCA9PSAxMDApCisgICAgICAgIHByaW50KCJQQVNTIiwgImdyZWVuIik7Cisg
ICAgZWxzZQorICAgICAgICBwcmludCgiRkFJTCIsICJyZWQiKTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+VGhpcyBwYWdlIHRlc3RzIHRoZSBiZWZv
cmVsb2FkIGV2ZW50IG9uIGxpbmsgZWxlbWVudHMuICBZb3Ugc2hvdWxkIHNlZSB0aGUgd29yZCBQ
QVNTIGJlbG93IHVuZGVybmVhdGggYSBncmVlbiBzcXVhcmUuPC9wPgorPGhyPgorPGRpdiBpZD0i
YmxvY2siIGNsYXNzPSJibG9jayI+PC9kaXY+Cis8aHI+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvcmVzb3VyY2VzL2ZhaWwu
Y3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQvcmVzb3Vy
Y2VzL2ZhaWwuY3NzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVmb3Jl
bG9hZC9yZXNvdXJjZXMvZmFpbC5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorLmJs
b2NrIHsKKyAgYmFja2dyb3VuZC1jb2xvcjpyZWQ7CisgIHdpZHRoOiAyMDBweDsKKyAgaGVpZ2h0
OjIwMHB4OworfQo=
</data>
<flag name="review"
          id="22005"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40743</attachid>
            <date>2009-10-06 14:23:42 -0700</date>
            <delta_ts>2009-10-06 14:59:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>16939</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTIwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDktMTAtMDYgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTMyLCBtYWtlIGJlZm9yZWxvYWQg
d29yayB3aXRoIDxsaW5rPiBlbGVtZW50cyBhbmQKKyAgICAgICAgWE1MIHByb2Nlc3NpbmcgaW5z
dHJ1Y3Rpb25zLgorCisgICAgICAgIEFkZGVkIGZhc3QvZG9tL2JlZm9yZWxvYWQvbGluay1iZWZv
cmUtbG9hZC5odG1sCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCk6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hl
Y2tTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFbGVtZW50RGF0YTo6cmVxdWVzdFNjcmlwdCk6CisgICAgICAgICog
ZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vWE1MVG9rZW5pemVyTGlieG1sMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OmVuZEVsZW1lbnROcyk6CisgICAg
ICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExp
bmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmZvckF0dHJpYnV0ZVZh
bHVlKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50Lmg6
CisKIDIwMDktMTAtMDYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhdmUgS2lsemVyLgpJbmRleDogV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJl
dmlzaW9uIDQ5MTkzKQorKysgV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
b250YWluZXJOb2RlLmgiCiAKKyNpbmNsdWRlICJCZWZvcmVMb2FkRXZlbnQuaCIKICNpbmNsdWRl
ICJDYWNoZS5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgiCiAjaW5jbHVk
ZSAiRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIgpAQCAtOTA5LDQgKzkxMCwxMiBAQCBzdGF0aWMg
dm9pZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhOCiAgICAgfQogfQogCitib29sIENvbnRh
aW5lck5vZGU6OmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQoreworICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVm
UHRyPEJlZm9yZUxvYWRFdmVudD4gYmVmb3JlTG9hZEV2ZW50ID0gQmVmb3JlTG9hZEV2ZW50Ojpj
cmVhdGUoc291cmNlVVJMKTsKKyAgICBkaXNwYXRjaEV2ZW50KGJlZm9yZUxvYWRFdmVudC5nZXQo
KSk7CisgICAgcmV0dXJuIGluRG9jdW1lbnQoKSAmJiAhYmVmb3JlTG9hZEV2ZW50LT5kZWZhdWx0
UHJldmVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmgJKHJldmlzaW9uIDQ5MTkzKQorKysgV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUFs
bENoaWxkcmVuKCk7CiAKICAgICB2b2lkIGNsb25lQ2hpbGROb2RlcyhDb250YWluZXJOb2RlKiBj
bG9uZSk7CisgICAgCisgICAgYm9vbCBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCk7CiAKIHByb3RlY3RlZDoKICAgICBDb250YWluZXJOb2RlKERvY3VtZW50
KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CkluZGV4OiBXZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAJKHJldmlzaW9uIDQ5MTkzKQorKysgV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsOSArNjEsOCBA
QCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246On5Qcm9jZXNzaW5nSW5zdHJ1CiAKIHZvaWQgUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgZGF0YSwgRXhjZXB0aW9uQ29k
ZSYpCiB7Ci0gICAgaW50IG9sZExlbmd0aCA9IG1fZGF0YS5sZW5ndGgoKTsKICAgICBtX2RhdGEg
PSBkYXRhOwotICAgIGRvY3VtZW50KCktPnRleHRSZW1vdmVkKHRoaXMsIDAsIG9sZExlbmd0aCk7
CisgICAgY2hlY2tTdHlsZVNoZWV0KCk7CiB9CiAKIFN0cmluZyBQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b246Om5vZGVOYW1lKCkgY29uc3QKQEAgLTE0MiwxMyArMTQxLDIxIEBAIHZvaWQgUHJvY2Vzc2lu
Z0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2gKICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpIHsKKyAgICAgICAgICAg
ICAgICBtX2NhY2hlZFNoZWV0LT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgICAgICAgICAgICAg
bV9jYWNoZWRTaGVldCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIFN0cmluZyB1cmwgPSBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChocmVmKS5zdHJpbmcoKTsK
KyAgICAgICAgICAgIGlmICghZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQodXJsKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKICAgICAgICAgICAgIG1fbG9hZGluZyA9IHRy
dWU7CiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hZGRQZW5kaW5nU2hlZXQoKTsKLSAgICAgICAg
ICAgIGlmIChtX2NhY2hlZFNoZWV0KQotICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQtPnJl
bW92ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgICAgIAogI2lmIEVOQUJMRShYU0xUKQogICAgICAg
ICAgICAgaWYgKG1faXNYU0wpCi0gICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3Vt
ZW50KCktPmRvY0xvYWRlcigpLT5yZXF1ZXN0WFNMU3R5bGVTaGVldChkb2N1bWVudCgpLT5jb21w
bGV0ZVVSTChocmVmKS5zdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9
IGRvY3VtZW50KCktPmRvY0xvYWRlcigpLT5yZXF1ZXN0WFNMU3R5bGVTaGVldCh1cmwpOwogICAg
ICAgICAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgICAgICB7CkBAIC0xNTYsMTAgKzE2MywxNSBA
QCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoCiAgICAgICAgICAgICAg
ICAgaWYgKGNoYXJzZXQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0g
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPmVuY29kaW5nKCk7CiAKLSAgICAgICAgICAg
ICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS0+ZG9jTG9hZGVyKCktPnJlcXVlc3RDU1NT
dHlsZVNoZWV0KGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGhyZWYpLnN0cmluZygpLCBjaGFyc2V0
KTsKKyAgICAgICAgICAgICAgICBtX2NhY2hlZFNoZWV0ID0gZG9jdW1lbnQoKS0+ZG9jTG9hZGVy
KCktPnJlcXVlc3RDU1NTdHlsZVNoZWV0KHVybCwgY2hhcnNldCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAobV9jYWNoZWRTaGVldCkKICAgICAgICAgICAgICAgICBtX2NhY2hlZFNo
ZWV0LT5hZGRDbGllbnQodGhpcyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAvLyBUaGUgcmVxdWVzdCBtYXkgaGF2ZSBiZWVuIGRlbmllZCBpZiAoZm9yIGV4YW1wbGUpIHRo
ZSBzdHlsZXNoZWV0IGlzIGxvY2FsIGFuZCB0aGUgZG9jdW1lbnQgaXMgcmVtb3RlLgorICAgICAg
ICAgICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgIGRvY3VtZW50KCkt
PnJlbW92ZVBlbmRpbmdTaGVldCgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
fQpJbmRleDogV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDQ5MTk0KQorKysgV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCB2
b2lkIFNjcmlwdEVsZW1lbnREYXRhOjpyZXF1ZXN0U2NyaXB0KGNvCiAgICAgaWYgKCFkb2N1bWVu
dC0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3NjcmlwdEVsZW1lbnQt
PmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHNvdXJjZVVybCkpCisgICAgaWYgKCFtX2VsZW1lbnQt
PmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHNvdXJjZVVybCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEFTU0VSVCghbV9jYWNoZWRTY3JpcHQpOwpJbmRleDogV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAkocmV2aXNp
b24gNDkxOTQpCisrKyBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDcgKzQ0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdlQXR0
cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZm9yQXR0cmlidXRl
VmFsdWUoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hCZWZvcmVMb2Fk
RXZlbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hMb2FkRXZlbnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRXJyb3JFdmVu
dCgpID0gMDsKIApJbmRleDogV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGlieG1sMi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGlieG1sMi5jcHAJKHJldmlzaW9u
IDQ5MTk0KQorKysgV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGlieG1sMi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg1MSw3ICs4NTEsNyBAQCB2b2lkIFhNTFRva2VuaXplcjo6ZW5kRWxlbWVudE5z
KCkKICAgICAgICAgaWYgKCFzY3JpcHRIcmVmLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8g
d2UgaGF2ZSBhIHNyYyBhdHRyaWJ1dGUgCiAgICAgICAgICAgICBTdHJpbmcgc2NyaXB0Q2hhcnNl
dCA9IHNjcmlwdEVsZW1lbnQtPnNjcmlwdENoYXJzZXQoKTsKLSAgICAgICAgICAgIGlmIChzY3Jp
cHRFbGVtZW50LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudChzY3JpcHRIcmVmKSAmJgorICAgICAg
ICAgICAgaWYgKGVsZW1lbnQtPmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHNjcmlwdEhyZWYpICYm
CiAgICAgICAgICAgICAgICAgKG1fcGVuZGluZ1NjcmlwdCA9IG1fZG9jLT5kb2NMb2FkZXIoKS0+
cmVxdWVzdFNjcmlwdChzY3JpcHRIcmVmLCBzY3JpcHRDaGFyc2V0KSkpIHsKICAgICAgICAgICAg
ICAgICBtX3NjcmlwdEVsZW1lbnQgPSBlbGVtZW50OwogICAgICAgICAgICAgICAgIG1fcGVuZGlu
Z1NjcmlwdC0+YWRkQ2xpZW50KHRoaXMpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDQ5MTkzKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNp
bmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0xMjYsNyArMTI3LDkgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidQogICAgICAgICBwcm9jZXNzKCk7CiAgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gZGlzYWJsZWRBdHRyKSB7CiAgICAgICAgIHNldERpc2FibGVkU3RhdGUo
IWF0dHItPmlzTnVsbCgpKTsKLSAgICB9IGVsc2UgeworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IG9uYmVmb3JlbG9hZEF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0
ZW5lcih0aGlzLCBhdHRyKSk7CisgICAgZWxzZSB7CiAgICAgICAgIGlmIChhdHRyLT5uYW1lKCkg
PT0gdGl0bGVBdHRyICYmIG1fc2hlZXQpCiAgICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShh
dHRyLT52YWx1ZSgpKTsKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpOwpAQCAtMTg3LDExICsxOTAsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2Vz
cygpCiAgICAgLy8gVGhpcyB3YXMgYnVnZ3kgYW5kIHdvdWxkIGluY29ycmVjdGx5IG1hdGNoIDxs
aW5rIHJlbD0iYWx0ZXJuYXRlIj4sIHdoaWNoIGhhcyBhIGRpZmZlcmVudCBzcGVjaWZpZWQgbWVh
bmluZy4gLWR3aAogICAgIGlmIChtX2Rpc2FibGVkU3RhdGUgIT0gMiAmJiAobV9pc1N0eWxlU2hl
ZXQgfHwgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTICYmIHR5cGUuY29udGFpbnMoInRleHQv
Y3NzIikpICYmIGRvY3VtZW50KCktPmZyYW1lKCkgJiYgbV91cmwuaXNWYWxpZCgpKSB7CiAgICAg
ICAgIC8vIGFsc28sIGRvbid0IGxvYWQgc3R5bGUgc2hlZXRzIGZvciBzdGFuZGFsb25lIGRvY3Vt
ZW50cwotICAgICAgICAvLyBBZGQgb3Vyc2VsdmVzIGFzIGEgcGVuZGluZyBzaGVldCwgYnV0IG9u
bHkgaWYgd2UgYXJlbid0IGFuIGFsdGVybmF0ZSAKLSAgICAgICAgLy8gc3R5bGVzaGVldC4gIEFs
dGVybmF0ZSBzdHlsZXNoZWV0cyBkb24ndCBob2xkIHVwIHJlbmRlciB0cmVlIGNvbnN0cnVjdGlv
bi4KLSAgICAgICAgaWYgKCFpc0FsdGVybmF0ZSgpKQotICAgICAgICAgICAgZG9jdW1lbnQoKS0+
YWRkUGVuZGluZ1NoZWV0KCk7Ci0KKyAgICAgICAgCiAgICAgICAgIFN0cmluZyBjaGFyc2V0ID0g
Z2V0QXR0cmlidXRlKGNoYXJzZXRBdHRyKTsKICAgICAgICAgaWYgKGNoYXJzZXQuaXNFbXB0eSgp
ICYmIGRvY3VtZW50KCktPmZyYW1lKCkpCiAgICAgICAgICAgICBjaGFyc2V0ID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKS0+bG9hZGVyKCktPmVuY29kaW5nKCk7CkBAIC0yMDAsMTQgKzE5OSwyOCBAQCB2
b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAgICAgICAgICAgICBpZiAobV9sb2FkaW5n
KQogICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZVBlbmRpbmdTaGVldCgpOwogICAg
ICAgICAgICAgbV9jYWNoZWRTaGVldC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICAgICAg
bV9jYWNoZWRTaGVldCA9IDA7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoIWRpc3BhdGNoQmVm
b3JlTG9hZEV2ZW50KG1fdXJsKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCiAgICAg
ICAgIG1fbG9hZGluZyA9IHRydWU7CisgICAgICAgIAorICAgICAgICAvLyBBZGQgb3Vyc2VsdmVz
IGFzIGEgcGVuZGluZyBzaGVldCwgYnV0IG9ubHkgaWYgd2UgYXJlbid0IGFuIGFsdGVybmF0ZSAK
KyAgICAgICAgLy8gc3R5bGVzaGVldC4gIEFsdGVybmF0ZSBzdHlsZXNoZWV0cyBkb24ndCBob2xk
IHVwIHJlbmRlciB0cmVlIGNvbnN0cnVjdGlvbi4KKyAgICAgICAgaWYgKCFpc0FsdGVybmF0ZSgp
KQorICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRkUGVuZGluZ1NoZWV0KCk7CisKICAgICAgICAg
bV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCktPmRvY0xvYWRlcigpLT5yZXF1ZXN0Q1NTU3R5bGVT
aGVldChtX3VybCwgY2hhcnNldCk7CisgICAgICAgIAogICAgICAgICBpZiAobV9jYWNoZWRTaGVl
dCkKICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQtPmFkZENsaWVudCh0aGlzKTsKLSAgICAgICAg
ZWxzZSBpZiAoIWlzQWx0ZXJuYXRlKCkpIHsgLy8gVGhlIHJlcXVlc3QgbWF5IGhhdmUgYmVlbiBk
ZW5pZWQgaWYgc3R5bGVzaGVldCBpcyBsb2NhbCBhbmQgZG9jdW1lbnQgaXMgcmVtb3RlLgorICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoZSByZXF1ZXN0IG1heSBoYXZlIGJlZW4gZGVu
aWVkIGlmIChmb3IgZXhhbXBsZSkgdGhlIHN0eWxlc2hlZXQgaXMgbG9jYWwgYW5kIHRoZSBkb2N1
bWVudCBpcyByZW1vdGUuCiAgICAgICAgICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKLSAgICAgICAg
ICAgIGRvY3VtZW50KCktPnJlbW92ZVBlbmRpbmdTaGVldCgpOworICAgICAgICAgICAgaWYgKCFp
c0FsdGVybmF0ZSgpKQorICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZVBlbmRpbmdT
aGVldCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX3NoZWV0KSB7CiAgICAgICAgIC8v
IHdlIG5vIGxvbmdlciBjb250YWluIGEgc3R5bGVzaGVldCwgZS5nLiBwZXJoYXBzIHJlbCBvciB0
eXBlIHdhcyBjaGFuZ2VkCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDQ5MTk0KQorKysgV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkhUTUxTY3JpcHRFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJCZWZvcmVMb2FkRXZlbnQuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgpAQCAtMjIwLDE0ICsyMTksNiBAQCBTdHJpbmcgSFRNTFNjcmlwdEVsZW1lbnQ6OmZv
ckF0dHJpYnV0ZVZhCiB7CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShmb3JBdHRyKS5zdHJpbmco
KTsKIH0KLSAKLWJvb2wgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50
KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIFJlZlB0cjxIVE1MU2NyaXB0RWxlbWVu
dD4gcHJvdGVjdG9yKHRoaXMpOwotICAgIFJlZlB0cjxCZWZvcmVMb2FkRXZlbnQ+IGJlZm9yZUxv
YWRFdmVudCA9IEJlZm9yZUxvYWRFdmVudDo6Y3JlYXRlKHNvdXJjZVVSTCk7Ci0gICAgZGlzcGF0
Y2hFdmVudChiZWZvcmVMb2FkRXZlbnQuZ2V0KCkpOwotICAgIHJldHVybiBpbkRvY3VtZW50KCkg
JiYgIWJlZm9yZUxvYWRFdmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwotfQogCiB2b2lkIEhUTUxT
Y3JpcHRFbGVtZW50OjpkaXNwYXRjaExvYWRFdmVudCgpCiB7CkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuaAkocmV2aXNpb24gNDkxOTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsOCArNzcsNiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGhhdmVGaXJlZExvYWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5oYXZlRmlyZWRM
b2FkRXZlbnQoKTsgfQogCi0gICAgdmlydHVhbCBib29sIGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50
KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLQogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgU3Ry
aW5nIHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgY2hh
cnNldEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNw
cAkocmV2aXNpb24gNDkxOTQpCisrKyBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVk
ZSAiU1ZHU2NyaXB0RWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQmVmb3JlTG9hZEV2ZW50LmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKQEAgLTE4MSwxNCArMTgwLDYgQEAgU3RyaW5nIFNWR1NjcmlwdEVsZW1lbnQ6OmZv
ckF0dHJpYnV0ZVZhbAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotYm9vbCBTVkdTY3JpcHRF
bGVtZW50OjpkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkK
LXsKLSAgICBSZWZQdHI8U1ZHU2NyaXB0RWxlbWVudD4gcHJvdGVjdG9yKHRoaXMpOwotICAgIFJl
ZlB0cjxCZWZvcmVMb2FkRXZlbnQ+IGJlZm9yZUxvYWRFdmVudCA9IEJlZm9yZUxvYWRFdmVudDo6
Y3JlYXRlKHNvdXJjZVVSTCk7Ci0gICAgZGlzcGF0Y2hFdmVudChiZWZvcmVMb2FkRXZlbnQuZ2V0
KCkpOwotICAgIHJldHVybiBpbkRvY3VtZW50KCkgJiYgIWJlZm9yZUxvYWRFdmVudC0+ZGVmYXVs
dFByZXZlbnRlZCgpOwotfQotCiB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2
ZW50KCkKIHsKICAgICBib29sIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgPSBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCShy
ZXZpc2lvbiA0OTE5NCkKKysrIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNyArNjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgU3RyaW5nIGxhbmd1YWdlQXR0cmlidXRlVmFsdWUoKSBjb25zdDsKICAgICAgICAgdmly
dHVhbCBTdHJpbmcgZm9yQXR0cmlidXRlVmFsdWUoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFs
IGJvb2wgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0OTIwMykK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDA5LTEwLTA2ICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMDEzMiwgbWFrZSBiZWZvcmVsb2FkIHdvcmsgd2l0aCBDU1Mg
c3R5bGVzaGVldHMgbG9hZGVkIGZyb20KKyAgICAgICAgPGxpbms+IGVsZW1lbnRzIGFuZCBYTUwg
cHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9iZWZvcmVsb2Fk
L2xpbmstYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9iZWZvcmVsb2FkL2xpbmstYmVmb3JlLWxvYWQuaHRtbDogQWRkZWQuCisKIDIwMDktMTAtMDYg
IERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVmb3JlbG9hZC9saW5r
LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9iZWZvcmVsb2FkL2xpbmstYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVmb3JlbG9hZC9saW5rLWJlZm9yZS1sb2FkLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIHBhZ2UgdGVzdHMg
dGhlIGJlZm9yZWxvYWQgZXZlbnQgb24gbGluayBlbGVtZW50cy4gWW91IHNob3VsZCBzZWUgdGhl
IHdvcmQgUEFTUyBiZWxvdyB1bmRlcm5lYXRoIGEgZ3JlZW4gc3F1YXJlLgorCitQQVNTCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL2xpbmstYmVmb3JlLWxvYWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL2xpbmstYmVmb3Jl
LWxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxv
YWQvbGluay1iZWZvcmUtbG9hZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACis8
aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLmJsb2NrIHsKKyAgd2lkdGg6IDEwMHB4OworICBoZWln
aHQ6IDEwMHB4OworICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+Cis8bGlu
ayBvbmJlZm9yZWxvYWQ9InJldHVybiBmYWxzZSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvZmFpbC5jc3MiPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHByaW50KG1lc3NhZ2UsIGNvbG9y
KSAKK3sKKyAgICB2YXIgcGFyYWdyYXBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3Nh
Z2UpKTsKKyAgICBwYXJhZ3JhcGguc3R5bGUuZm9udEZhbWlseSA9ICJtb25vc3BhY2UiOworICAg
IGlmIChjb2xvcikKKyAgICAgICAgcGFyYWdyYXBoLnN0eWxlLmNvbG9yID0gY29sb3I7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChwYXJhZ3JhcGgp
OworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAg
ICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jsb2NrJykub2Zmc2V0V2lkdGggPT0gMTAw
KQorICAgICAgICBwcmludCgiUEFTUyIsICJncmVlbiIpOworICAgIGVsc2UKKyAgICAgICAgcHJp
bnQoIkZBSUwiLCAicmVkIik7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
dGVzdCgpIj4KKzxwPlRoaXMgcGFnZSB0ZXN0cyB0aGUgYmVmb3JlbG9hZCBldmVudCBvbiBsaW5r
IGVsZW1lbnRzLiAgWW91IHNob3VsZCBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdyB1bmRlcm5lYXRo
IGEgZ3JlZW4gc3F1YXJlLjwvcD4KKzxocj4KKzxkaXYgaWQ9ImJsb2NrIiBjbGFzcz0iYmxvY2si
PjwvZGl2PgorPGhyPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9iZWZvcmVsb2FkL3BpLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL3BpLWJlZm9yZS1sb2FkLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxv
YWQvcGktYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBA
CitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL3BpLWJlZm9yZS1s
b2FkLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2JlZm9yZWxvYWQv
cGktYmVmb3JlLWxvYWQueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9iZWZvcmVsb2FkL3BpLWJlZm9yZS1sb2FkLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDUwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8c3R5bGU+CisuYmxv
Y2sgeworICB3aWR0aDogMTAwcHg7CisgIGhlaWdodDogMTAwcHg7CisgIGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBwcmludChtZXNzYWdl
LCBjb2xvcikgCit7CisgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShtZXNzYWdlKSk7CisgICAgcGFyYWdyYXBoLnN0eWxlLmZvbnRGYW1pbHkgPSAibW9ub3NwYWNl
IjsKKyAgICBpZiAoY29sb3IpCisgICAgICAgIHBhcmFncmFwaC5zdHlsZS5jb2xvciA9IGNvbG9y
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQocGFy
YWdyYXBoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdibG9jaycpLm9mZnNldFdpZHRo
ID09IDEwMCkKKyAgICAgICAgcHJpbnQoIlBBU1MiLCAiZ3JlZW4iKTsKKyAgICBlbHNlCisgICAg
ICAgIHByaW50KCJGQUlMIiwgInJlZCIpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InRlc3QoKSI+Cis8ZGl2IGlkPSJibG9jayIgY2xhc3M9ImJsb2NrIj48L2Rpdj4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBiZWZvcmVMb2FkRnVuYygpCit7CisgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlbG9hZCIsIGJl
Zm9yZUxvYWRGdW5jLCB0cnVlKTsKKwordmFyIHBpID0gZG9jdW1lbnQuY3JlYXRlUHJvY2Vzc2lu
Z0luc3RydWN0aW9uKCJ4bWwtc3R5bGVzaGVldCIsICJ0eXBlPVwidGV4dC9jc3NcIiBocmVmPVwi
cmVzb3VyY2VzL2ZhaWwuY3NzXCIiKTsKK2RvY3VtZW50Lmluc2VydEJlZm9yZShwaSwgZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50KTsKKzwvc2NyaXB0PgorPGhyLz4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vYmVm
b3JlbG9hZC9yZXNvdXJjZXMvZmFpbC5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vYmVmb3JlbG9hZC9yZXNvdXJjZXMvZmFpbC5jc3MJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9iZWZvcmVsb2FkL3Jlc291cmNlcy9mYWlsLmNzcwkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1IEBACisuYmxvY2sgeworICBiYWNrZ3JvdW5kLWNvbG9yOnJlZCAhaW1w
b3J0YW50OworICB3aWR0aDogMjAwcHggIWltcG9ydGFudDsKKyAgaGVpZ2h0OjIwMHB4ICFpbXBv
cnRhbnQ7Cit9Cg==
</data>
<flag name="review"
          id="22010"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>