<?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>124913</bug_id>
          
          <creation_ts>2013-11-26 21:10:17 -0800</creation_ts>
          <short_desc>Do bytecode validation as part of testing</short_desc>
          <delta_ts>2013-11-27 15:13:25 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>954450</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-26 21:10:17 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954453</commentid>
    <comment_count>1</comment_count>
      <attachid>217924</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-26 21:13:58 -0800</bug_when>
    <thetext>Created attachment 217924
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954458</commentid>
    <comment_count>2</comment_count>
    <who name="Nadav Rotem">nrotem</who>
    <bug_when>2013-11-26 21:38:36 -0800</bug_when>
    <thetext>LGTM.   The FastVector change can go as a separate patch. 

What is this change:

-  unsigned numberOfVariables = unlinkedCodeBlock-&gt;m_numVars + 
+ unsigned numberOfVariables =</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954460</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-26 21:45:07 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; LGTM.   The FastVector change can go as a separate patch. 

Yeah, it can land separately.  We often prefer not to land dead code - so if we add WTF methods that we use for feature X then the patch for feature X will usually include the WTF patch inside it.

I guess the theory is that if you branched WebKit at any arbitrary revision, not only would you expect to get a reasonably stable web engine, but also you would get one that didn&apos;t have unneeded code.

&gt; 
&gt; What is this change:
&gt; 
&gt; -  unsigned numberOfVariables = unlinkedCodeBlock-&gt;m_numVars + 
&gt; + unsigned numberOfVariables =

A bug I found by adding the bytecode liveness analysis verifier.  I was surprised by the number of bits in the bitvector.  It turns out that the liveness analysis had a benign bug where it assumed that the number of variables was the sum of numVars and numCalleeRegs.  In fact, numCalleeRegs is numVars + numTemps, so adding numVars is incorrect.  Prior to this patch it would have been a benign bug because it really doesn&apos;t matter if you create a bitvector that is larger than you need.  I mean, you waste some memory, but probably not a lot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954461</commentid>
    <comment_count>4</comment_count>
      <attachid>217924</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-26 21:57:35 -0800</bug_when>
    <thetext>Comment on attachment 217924
the patch

Attachment 217924 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/37828025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954574</commentid>
    <comment_count>5</comment_count>
      <attachid>217958</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-27 10:28:23 -0800</bug_when>
    <thetext>Created attachment 217958
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954614</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-27 15:13:25 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/159825</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217924</attachid>
            <date>2013-11-26 21:13:58 -0800</date>
            <delta_ts>2013-11-27 10:28:23 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>17294</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5ODAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBA
CisyMDEzLTExLTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RG8gYnl0ZWNvZGUgdmFsaWRhdGlvbiBhcyBwYXJ0IG9mIHRlc3RpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5l
c3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNz
Rml4cG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6dmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJlZ2lu
VmFsaWRhdGlvbkRpZEZhaWwpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuZFZhbGlkYXRp
b25EaWRGYWlsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpw
cmVwYXJlRm9yRXhlY3V0aW9uSW1wbCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisK
IDIwMTMtMTEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXN0cnVjdHVyZSBnbG9iYWwgdmFyaWFibGUgY29uc3RhbnQgaW5mZXJlbmNlIHNvIHRoYXQgaXQg
Y291bGQgd29yayBmb3IgYW55IGtpbmQgb2Ygc3ltYm9sIHRhYmxlIHZhcmlhYmxlCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcAkocmV2aXNpb24gMTU5Nzk0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDExICs0MiwxOSBAQCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2Rl
TGl2ZW5lCiAKIHN0YXRpYyBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBpbnQgb3BlcmFuZCkKIHsKKyAgICBpZiAoY29kZUJsb2NrLT5pc0NvbnN0
YW50UmVnaXN0ZXJJbmRleChvcGVyYW5kKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAog
ICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnKG9wZXJhbmQpOwotICAgIHJldHVybiAhY29k
ZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChvcGVyYW5kKSAvLyBEb24ndCBjYXJlIGFi
b3V0IGNvbnN0YW50cy4KLSAgICAgICAgJiYgdmlydHVhbFJlZy5pc0xvY2FsKCkgLy8gRG9uJ3Qg
Y2FyZSBhYm91dCBhcmd1bWVudHMuCi0gICAgICAgICYmICghY29kZUJsb2NrLT5jYXB0dXJlQ291
bnQoKSAvLyBJZiB3ZSBoYXZlIG5vIGNhcHR1cmVkIHZhcmlhYmxlcywgd2UncmUgZ29vZCB0byBn
by4KLSAgICAgICAgICAgIHx8ICh2aXJ0dWFsUmVnLm9mZnNldCgpID4gY29kZUJsb2NrLT5jYXB0
dXJlU3RhcnQoKSB8fCAodmlydHVhbFJlZy5vZmZzZXQoKSA8PSBjb2RlQmxvY2stPmNhcHR1cmVF
bmQoKSkpKTsKKyAgICBpZiAoIXZpcnR1YWxSZWcuaXNMb2NhbCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgaWYgKGNvZGVCbG9jay0+Y2FwdHVyZUNvdW50KCkKKyAgICAgICAg
JiYgb3BlcmFuZCA8PSBjb2RlQmxvY2stPmNhcHR1cmVTdGFydCgpCisgICAgICAgICYmIG9wZXJh
bmQgPiBjb2RlQmxvY2stPmNhcHR1cmVFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBzZXRGb3JPcGVyYW5kKENvZGVC
bG9jayogY29kZUJsb2NrLCBGYXN0Qml0VmVjdG9yJiBiaXRzLCBpbnQgb3BlcmFuZCkKQEAgLTU3
Miw3ICs1ODAsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrCiB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiB7CiAg
ICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbV9jb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCk7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxp
bmtlZENvZGVCbG9jay0+bV9udW1WYXJzICsgCisgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJs
ZXMgPQogICAgICAgICB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgLSBt
X2NvZGVCbG9jay0+Y2FwdHVyZUNvdW50KCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE1OTc5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNDIyLDQgKzM0MjIsNTggQEAgU3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZp
cnR1YQogICAgIHJldHVybiAiIjsKIH0KIAordm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKK3sK
KyAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7IC8vIENvbXB1dGUg
ZGlyZWN0bHkgZnJvbSBzY3JhdGNoIHNvIGl0IGRvZXNuJ3QgZWZmZWN0IENvZGVCbG9jayBmb290
cHJpbnQuCisgICAgCisgICAgRmFzdEJpdFZlY3RvciBsaXZlQXRIZWFkID0gbGl2ZW5lc3MuZ2V0
TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCgwKTsKKyAgICAKKyAgICBpZiAobGl2ZUF0SGVh
ZC5udW1CaXRzKCkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX251bUNhbGxlZVJlZ2lzdGVycykp
IHsKKyAgICAgICAgYmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpOworICAgICAgICBkYXRhTG9nKCIg
ICAgV3JvbmcgbnVtYmVyIG9mIGJpdHMgaW4gcmVzdWx0IVxuIik7CisgICAgICAgIGRhdGFMb2co
IiAgICBSZXN1bHQ6ICIsIGxpdmVBdEhlYWQsICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAg
Qml0IGNvdW50OiAiLCBsaXZlQXRIZWFkLm51bUJpdHMoKSwgIlxuIik7CisgICAgICAgIGVuZFZh
bGlkYXRpb25EaWRGYWlsKCk7CisgICAgfQorICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IG1f
bnVtQ2FsbGVlUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgIGJvb2wgaXNDYXB0dXJlZCA9IGZh
bHNlOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoaSk7CisgICAgICAgIAorICAgICAgICBpZiAoY2FwdHVyZUNvdW50KCkpCisgICAgICAgICAg
ICBpc0NhcHR1cmVkID0gcmVnLm9mZnNldCgpIDw9IGNhcHR1cmVTdGFydCgpICYmIHJlZy5vZmZz
ZXQoKSA+IGNhcHR1cmVFbmQoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0NhcHR1cmVkKSB7
CisgICAgICAgICAgICBpZiAoIWxpdmVBdEhlYWQuZ2V0KGkpKSB7CisgICAgICAgICAgICAgICAg
YmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBW
YXJpYWJsZSBsb2MiLCBpLCAiIGlzIGV4cGVjdGVkIHRvIGJlIGxpdmUgYmVjYXVzZSBpdCBpcyBj
YXB0dXJlZCwgYnV0IGl0IGlzbid0IGxpdmUuXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgUmVzdWx0OiAiLCBsaXZlQXRIZWFkLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBlbmRW
YWxpZGF0aW9uRGlkRmFpbCgpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKGxpdmVBdEhlYWQuZ2V0KGkpKSB7CisgICAgICAgICAgICAgICAgYmVnaW5W
YWxpZGF0aW9uRGlkRmFpbCgpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBWYXJpYWJs
ZSBsb2MiLCBpLCAiIGlzIGV4cGVjdGVkIHRvIGJlIGRlYWQuXG4iKTsKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgUmVzdWx0OiAiLCBsaXZlQXRIZWFkLCAiXG4iKTsKKyAgICAgICAgICAg
ICAgICBlbmRWYWxpZGF0aW9uRGlkRmFpbCgpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIENvZGVCbG9jazo6YmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpCit7Cisg
ICAgZGF0YUxvZygiVmFsaWRhdGlvbiBmYWlsdXJlIGluICIsICp0aGlzLCAiOlxuIik7CisgICAg
ZGF0YUxvZygiXG4iKTsKK30KKwordm9pZCBDb2RlQmxvY2s6OmVuZFZhbGlkYXRpb25EaWRGYWls
KCkKK3sKKyAgICBkYXRhTG9nKCJcbiIpOworICAgIGR1bXBCeXRlY29kZSgpOworICAgIGRhdGFM
b2coIlxuIik7CisgICAgZGF0YUxvZygiVmFsaWRhdGlvbiBmYWlsdXJlLlxuIik7CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAx
NTk3OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcwNCw2ICs3MDQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2xp
dmVuZXNzQW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cz4odGhpcyk7CiAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgIH0KKyAg
ICAKKyAgICB2b2lkIHZhbGlkYXRlKCk7CiAKICAgICAvLyBKdW1wIFRhYmxlcwogCkBAIC0xMDI4
LDYgKzEwMzAsOSBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAg
ICAgICBtX3JhcmVEYXRhID0gYWRvcHRQdHIobmV3IFJhcmVEYXRhKTsKICAgICB9CisgICAgCisg
ICAgdm9pZCBiZWdpblZhbGlkYXRpb25EaWRGYWlsKCk7CisgICAgTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCB2b2lkIGVuZFZhbGlkYXRpb25EaWRGYWlsKCk7CiAKICNpZiBFTkFCTEUoSklUKQogICAg
IHZvaWQgcmVzZXRTdHViSW50ZXJuYWwoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZv
Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAkocmV2aXNpb24gMTU5Nzk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw2ICsyOTgsOSBAQCBKU09iamVjdCog
U2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4CiAgICAgICAgIHJldHVybiBleGNlcHRpb247
CiAgICAgfQogICAgIAorICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUJ5dGVjb2RlKCkpCisgICAg
ICAgIGNvZGVCbG9jay0+dmFsaWRhdGUoKTsKKyAgICAKICAgICBib29sIHNob3VsZFVzZUxMSW50
OwogI2lmICFFTkFCTEUoSklUKQogICAgIC8vIE5vIEpJVCBpbXBsaWVzIHVzZSBvZiB0aGUgQyBM
b29wIExMSU5ULiBPdmVycmlkZSB0aGUgb3B0aW9ucyB0byByZWZsZWN0IHRoaXMuIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTU5Nzk0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDAsNiArMTAwLDcgQEAgdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRpb25SYW5nZTsKICAg
ICBcCiAgICAgdihib29sLCBkdW1wR2VuZXJhdGVkQnl0ZWNvZGVzLCBmYWxzZSkgXAogICAgIHYo
Ym9vbCwgZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzLCBmYWxzZSkgXAorICAgIHYoYm9vbCwg
dmFsaWRhdGVCeXRlY29kZSwgZmFsc2UpIFwKICAgICBcCiAgICAgLyogc2hvd0Rpc2Fzc2VtYmx5
IGltcGxpZXMgc2hvd0RGR0Rpc2Fzc2VtYmx5LiAqLyBcCiAgICAgdihib29sLCBzaG93RGlzYXNz
ZW1ibHksIGZhbHNlKSBcCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5ODA0KQorKysgU291cmNlL1dURi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0xMS0yNiAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERvIGJ5dGVjb2RlIHZhbGlk
YXRpb24gYXMgcGFydCBvZiB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjQ5MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RGLnZj
eHByb2ovV1RGLnZjeHByb2o6CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9GYXN0Qml0
VmVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OmR1bXApOgor
ICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0
b3I6OnJlc2l6ZSk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OmJpdENvdW50KToKKyAg
ICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6YXJyYXlMZW5ndGgpOgorCiAyMDEzLTExLTI2ICBE
cmV3IFlhbyAgPGF5YW9AYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OIHNob3VsZCBjcmFzaCBpbiBhIGRpc3RpbmN0IHdheS4KSW5kZXg6IFNvdXJj
ZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1OTc5NCkKKysrIFNvdXJjZS9XVEYvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCB3dGZfc291cmNlcyAr
PSBcCiAgICAgU291cmNlL1dURi93dGYvRW5jb2Rlci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9F
bnVtQ2xhc3MuaCBcCiAgICAgU291cmNlL1dURi93dGYvRXhwb3J0TWFjcm9zLmggXAorICAgIFNv
dXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GYXN0
Qml0VmVjdG9yLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwIFwKICAgICBT
b3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggXApJbmRleDogU291cmNlL1dURi9XVEYudmN4cHJv
ai9XVEYudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52
Y3hwcm9qCShyZXZpc2lvbiAxNTk3OTQpCisrKyBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52
Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlx3dGZcZHRvYVxmaXhlZC1kdG9hLmNjIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cd3RmXGR0b2Fcc3RydG9kLmNjIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cd3RmXER5bmFtaWNBbm5vdGF0aW9ucy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlx3dGZcRmFzdEJpdFZlY3Rvci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llx3dGZcRmFzdE1hbGxvYy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZc
RmlsZVByaW50U3RyZWFtLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxG
dW5jdGlvbkRpc3BhdGNoZXIuY3BwIiAvPgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTk3OTQpCisrKyBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAJ
CTBGMkI2NkE2MTdCNkI0RkIwMEE3QUUzRiAvKiBEZWZlcnJhYmxlUmVmQ291bnRlZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQjY2QTQxN0I2QjRG
NzAwQTdBRTNGIC8qIERlZmVycmFibGVSZWZDb3VudGVkLmggKi87IH07CiAJCTBGMkI2NkE3MTdC
NkI0RkQwMEE3QUUzRiAvKiBGbGlwQnl0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkE1MTdCNkI0RjcwMEE3QUUzRiAvKiBGbGlwQnl0ZXMu
aCAqLzsgfTsKIAkJMEY4NzEwNUExNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODcxMDU5MTY2NDNG
MTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggKi87IH07CisJCTBGODg1RTBGMTg0NUFFQTkwMEYx
RTNGQSAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGODg1RTBFMTg0NUFFOUYwMEYxRTNGQSAvKiBGYXN0Qml0VmVjdG9y
LmNwcCAqLzsgfTsKIAkJMEY4RjJCOTExNzJFMDBGQzAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhy
ZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhG
MkI5MDE3MkUwMEYwMDA3REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuaCAqLzsgfTsKIAkJMEY4
RjJCOTIxNzJFMDEwMzAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEYyQjhGMTcyRTAwRjAwMDdE
QkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgKi87IH07CiAJCTBGOEYyQjlDMTcyRjI1OTYw
MDdEQkRBNSAvKiBDb252ZXJzaW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY4RjJCOUIxNzJGMjU5NDAwN0RCREE1IC8qIENvbnZlcnNpb25N
b2RlLmggKi87IH07CkBAIC0yOTAsNiArMjkxLDcgQEAKIAkJMEYyQjY2QTQxN0I2QjRGNzAwQTdB
RTNGIC8qIERlZmVycmFibGVSZWZDb3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmVycmFibGVS
ZWZDb3VudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkI2NkE1MTdCNkI0
RjcwMEE3QUUzRiAvKiBGbGlwQnl0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxpcEJ5dGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAvKiBS
YXdQb2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhd1BvaW50ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4ODVFMEUxODQ1QUU5RjAwRjFFM0ZB
IC8qIEZhc3RCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmFzdEJpdFZlY3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOEYyQjhGMTcyRTAwRjAwMDdEQkRB
NSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21waWxhdGlv
blRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOEYyQjkwMTcyRTAw
RjAwMDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21waWxh
dGlvblRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhGMkI5QjE3MkYy
NTk0MDA3REJEQTUgLyogQ29udmVyc2lvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udmVyc2lv
bk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5NSw2ICs2OTcsNyBAQAog
CQkJCUE4QTQ3MjlFMTUxQTgyNUEwMDQxMjNGRiAvKiBFbmNvZGVyLmggKi8sCiAJCQkJNDRGNjYw
MDcxNzFBRkFBOTAwRTRBRDE5IC8qIEVudW1DbGFzcy5oICovLAogCQkJCUE4QTQ3MjlGMTUxQTgy
NUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQkwRjg4NUUwRTE4NDVBRTlGMDBG
MUUzRkEgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8sCiAJCQkJMEZEODFBQzQxNTRGQjIyRTAwOTgz
RTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYg
LyogRmFzdE1hbGxvYy5jcHAgKi8sCiAJCQkJQThBNDcyQTIxNTFBODI1QTAwNDEyM0ZGIC8qIEZh
c3RNYWxsb2MuaCAqLywKQEAgLTEyMjUsNiArMTIyOCw3IEBACiAJCQkJQThBNDczQUUxNTFBODI1
QjAwNDEyM0ZGIC8qIGRpeS1mcC5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0IwMTUxQTgy
NUIwMDQxMjNGRiAvKiBkb3VibGUtY29udmVyc2lvbi5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3M0JBMTUxQTgyNUIwMDQxMjNGRiAvKiBkdG9hLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
ODg1RTBGMTg0NUFFQTkwMEYxRTNGQSAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4QTQ3M0JDMTUxQTgyNUIwMDQxMjNGRiAvKiBEeW5hbWljQW5ub3RhdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjMxNTFBODI1QjAwNDEyM0ZGIC8qIGZhc3QtZHRv
YS5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0MzMTUxQTgyNUIwMDQxMjNGRiAvKiBGYXN0
TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDE1OTc5NCkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xNTYsNiArMTU2LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgRGF0ZU1hdGguY3Bw
CiAgICAgRGVjaW1hbE51bWJlci5jcHAKICAgICBEeW5hbWljQW5ub3RhdGlvbnMuY3BwCisgICAg
RmFzdEJpdFZlY3Rvci5jcHAKICAgICBGYXN0TWFsbG9jLmNwcAogICAgIEZpbGVQcmludFN0cmVh
bS5jcHAKICAgICBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9G
YXN0Qml0VmVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZh
c3RCaXRWZWN0b3IuaCIKKworI2luY2x1ZGUgIlByaW50U3RyZWFtLmgiCisKK25hbWVzcGFjZSBX
VEYgeworCit2b2lkIEZhc3RCaXRWZWN0b3I6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1CaXRzOyArK2kpCisgICAgICAg
IG91dC5wcmludChnZXQoaSkgPyAiMSIgOiAiLSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYK
KwpJbmRleDogU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAkocmV2aXNpb24gMTU5Nzk0KQorKysgU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMiw4IEBACiAK
IG5hbWVzcGFjZSBXVEYgewogCitjbGFzcyBQcmludFN0cmVhbTsKKwogY2xhc3MgRmFzdEJpdFZl
Y3RvciB7CiBwdWJsaWM6CiAgICAgRmFzdEJpdFZlY3RvcigpCkBAIC03Miw3ICs3NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgLy8gVXNlIGZhc3RDYWxsb2MgaW5zdGVhZCBvZiBmYXN0UmVhbGxvYyBi
ZWNhdXNlIHdlIGV4cGVjdCB0aGUgY29tbW9uCiAgICAgICAgIC8vIHVzZSBjYXNlIGZvciB0aGlz
IG1ldGhvZCB0byBiZSBpbml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJpdHZlY3Rvci4KICAg
ICAgICAgCi0gICAgICAgIHNpemVfdCBuZXdMZW5ndGggPSAobnVtQml0cyArIDMxKSA+PiA1Owor
ICAgICAgICBzaXplX3QgbmV3TGVuZ3RoID0gYXJyYXlMZW5ndGgobnVtQml0cyk7CiAgICAgICAg
IHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4oZmFzdENhbGxvYyhu
ZXdMZW5ndGgsIDQpKTsKICAgICAgICAgbWVtY3B5KG5ld0FycmF5LCBtX2FycmF5LCBhcnJheUxl
bmd0aCgpICogNCk7CiAgICAgICAgIGlmIChtX2FycmF5KQpAQCAtMTY2LDggKzE2OCwyMCBAQCBw
dWJsaWM6CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX251
bUJpdHMpOwogICAgICAgICByZXR1cm4gISEobV9hcnJheVtpID4+IDVdICYgKDEgPDwgKGkgJiAz
MSkpKTsKICAgICB9CisgICAgCisgICAgc2l6ZV90IGJpdENvdW50KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcnJh
eUxlbmd0aCgpOyBpLS07KQorICAgICAgICAgICAgcmVzdWx0ICs9IFdURjo6Yml0Q291bnQobV9h
cnJheVtpXSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAogcHJpdmF0ZToKLSAgICBzaXplX3QgYXJy
YXlMZW5ndGgoKSBjb25zdCB7IHJldHVybiAobV9udW1CaXRzICsgMzEpID4+IDU7IH0KKyAgICBz
dGF0aWMgc2l6ZV90IGFycmF5TGVuZ3RoKHNpemVfdCBudW1CaXRzKSB7IHJldHVybiAobnVtQml0
cyArIDMxKSA+PiA1OyB9CisgICAgc2l6ZV90IGFycmF5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
YXJyYXlMZW5ndGgobV9udW1CaXRzKTsgfQogICAgIAogICAgIHVpbnQzMl90KiBtX2FycmF5OyAv
LyBObywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4uCiAgICAg
c2l6ZV90IG1fbnVtQml0czsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTgwMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTExLTI2ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgRG8gYnl0ZWNvZGUgdmFsaWRhdGlvbiBhcyBwYXJ0
IG9mIHRlc3RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNDkxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKwogMjAxMy0xMS0yNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgcmVwbGF5IHBlcmZv
cm1hbmNlIHRlc3RzIGFzIGl0J3Mgbm90IGFjdGl2ZWx5IG1haW50YWluZWQKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkocmV2aXNpb24gMTU5ODAxKQorKysgVG9vbHMvU2NyaXB0
cy9ydW4tanNjLXN0cmVzcy10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtNDA2LDcgKzQwNiw3IEBA
IGRlZiBydW5Ob0NKSVQKIGVuZAogCiBkZWYgcnVuTm9DSklUVmFsaWRhdGVQaGFzZXMKLSAgICBy
dW4oIm5vLWNqaXQtdmFsaWRhdGUtcGhhc2VzIiwgIi0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxz
ZSIsICItLXZhbGlkYXRlR3JhcGhBdEVhY2hQaGFzZT10cnVlIikKKyAgICBydW4oIm5vLWNqaXQt
dmFsaWRhdGUtcGhhc2VzIiwgIi0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSIsICItLXZhbGlk
YXRlQnl0ZWNvZGU9dHJ1ZSIsICItLXZhbGlkYXRlR3JhcGhBdEVhY2hQaGFzZT10cnVlIikKIGVu
ZAogCiBkZWYgcnVuRGVmYXVsdEZUTAo=
</data>
<flag name="commit-queue"
          id="241163"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217958</attachid>
            <date>2013-11-27 10:28:23 -0800</date>
            <delta_ts>2013-11-27 12:27:37 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>19488</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5ODAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDEzLTExLTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RG8gYnl0ZWNvZGUgdmFsaWRhdGlvbiBhcyBwYXJ0IG9mIHRlc3RpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWxzbyBmaXggc29tZSBz
bWFsbCBidWdzIGluIHRoZSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0aGF0IEkgZm91bmQg
YnkgZG9pbmcKKyAgICAgICAgdGhpcyB2YWxpZGF0aW9uIHRoaW5neS4KKworICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OmlzVmFs
aWRSZWdpc3RlckZvckxpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbGlkYXRlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpiZWdpblZhbGlkYXRpb25EaWRGYWlsKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjplbmRWYWxpZGF0aW9uRGlkRmFpbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
U2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwpOgorICAgICAgICAqIHJ1
bnRpbWUvT3B0aW9ucy5oOgorCiAyMDEzLTExLTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVzdHJ1Y3R1cmUgZ2xvYmFsIHZhcmlhYmxlIGNvbnN0YW50IGlu
ZmVyZW5jZSBzbyB0aGF0IGl0IGNvdWxkIHdvcmsgZm9yIGFueSBraW5kIG9mIHN5bWJvbCB0YWJs
ZSB2YXJpYWJsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAJKHJldmlzaW9uIDE1OTc5NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMSArNDIsMTkgQEAgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpCeXRlY29kZUxpdmVuZQogCiBzdGF0aWMgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJG
b3JMaXZlbmVzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IG9wZXJhbmQpCiB7CisgICAgaWYg
KGNvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgob3BlcmFuZCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5k
KTsKLSAgICByZXR1cm4gIWNvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgob3BlcmFu
ZCkgLy8gRG9uJ3QgY2FyZSBhYm91dCBjb25zdGFudHMuCi0gICAgICAgICYmIHZpcnR1YWxSZWcu
aXNMb2NhbCgpIC8vIERvbid0IGNhcmUgYWJvdXQgYXJndW1lbnRzLgotICAgICAgICAmJiAoIWNv
ZGVCbG9jay0+Y2FwdHVyZUNvdW50KCkgLy8gSWYgd2UgaGF2ZSBubyBjYXB0dXJlZCB2YXJpYWJs
ZXMsIHdlJ3JlIGdvb2QgdG8gZ28uCi0gICAgICAgICAgICB8fCAodmlydHVhbFJlZy5vZmZzZXQo
KSA+IGNvZGVCbG9jay0+Y2FwdHVyZVN0YXJ0KCkgfHwgKHZpcnR1YWxSZWcub2Zmc2V0KCkgPD0g
Y29kZUJsb2NrLT5jYXB0dXJlRW5kKCkpKSk7CisgICAgaWYgKCF2aXJ0dWFsUmVnLmlzTG9jYWwo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmIChjb2RlQmxvY2stPmNhcHR1
cmVDb3VudCgpCisgICAgICAgICYmIG9wZXJhbmQgPD0gY29kZUJsb2NrLT5jYXB0dXJlU3RhcnQo
KQorICAgICAgICAmJiBvcGVyYW5kID4gY29kZUJsb2NrLT5jYXB0dXJlRW5kKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQg
c2V0Rm9yT3BlcmFuZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgRmFzdEJpdFZlY3RvciYgYml0cywg
aW50IG9wZXJhbmQpCkBAIC00NjUsMTQgKzQ3MywxNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlT2Zmc2V0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBvcF90
ZWFyX29mZl9hcmd1bWVudHM6IHsKLSAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVu
ZXNzKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kIC0gMSkpCi0gICAgICAgICAg
ICBzZXRGb3JPcGVyYW5kKGNvZGVCbG9jaywgZGVmcywgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
IC0gMSk7CisgICAgICAgIGludCBvcGVyYW5kID0gdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVy
KAorICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyKGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkp
Lm9mZnNldCgpOworICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJs
b2NrLCBvcGVyYW5kKSkKKyAgICAgICAgICAgIHNldEZvck9wZXJhbmQoY29kZUJsb2NrLCBkZWZz
LCBvcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIG9wX2VudGVyOiB7
CiAgICAgICAgIGRlZnMuc2V0QWxsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9IH0KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBzdGF0aWMgdW5zaWduZWQgZ2V0TGVh
ZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayhSZWZQdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNC
bG9jaykKQEAgLTU3Miw3ICs1ODMsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJsb2NrCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhw
b2ludCgpCiB7CiAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbV9j
b2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJp
YWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1WYXJzICsgCisgICAgdW5zaWduZWQgbnVt
YmVyT2ZWYXJpYWJsZXMgPQogICAgICAgICB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVS
ZWdpc3RlcnMgLSBtX2NvZGVCbG9jay0+Y2FwdHVyZUNvdW50KCk7CiAKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE1OTc5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNDIyLDQgKzM0MjIsNTggQEAgU3RyaW5nIENvZGVCbG9jazo6bmFtZUZv
clJlZ2lzdGVyKFZpcnR1YQogICAgIHJldHVybiAiIjsKIH0KIAordm9pZCBDb2RlQmxvY2s6OnZh
bGlkYXRlKCkKK3sKKyAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7
IC8vIENvbXB1dGUgZGlyZWN0bHkgZnJvbSBzY3JhdGNoIHNvIGl0IGRvZXNuJ3QgZWZmZWN0IENv
ZGVCbG9jayBmb290cHJpbnQuCisgICAgCisgICAgRmFzdEJpdFZlY3RvciBsaXZlQXRIZWFkID0g
bGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCgwKTsKKyAgICAKKyAgICBp
ZiAobGl2ZUF0SGVhZC5udW1CaXRzKCkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX251bUNhbGxl
ZVJlZ2lzdGVycykpIHsKKyAgICAgICAgYmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpOworICAgICAg
ICBkYXRhTG9nKCIgICAgV3JvbmcgbnVtYmVyIG9mIGJpdHMgaW4gcmVzdWx0IVxuIik7CisgICAg
ICAgIGRhdGFMb2coIiAgICBSZXN1bHQ6ICIsIGxpdmVBdEhlYWQsICJcbiIpOworICAgICAgICBk
YXRhTG9nKCIgICAgQml0IGNvdW50OiAiLCBsaXZlQXRIZWFkLm51bUJpdHMoKSwgIlxuIik7Cisg
ICAgICAgIGVuZFZhbGlkYXRpb25EaWRGYWlsKCk7CisgICAgfQorICAgIAorICAgIGZvciAodW5z
aWduZWQgaSA9IG1fbnVtQ2FsbGVlUmVnaXN0ZXJzOyBpLS07KSB7CisgICAgICAgIGJvb2wgaXND
YXB0dXJlZCA9IGZhbHNlOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaSk7CisgICAgICAgIAorICAgICAgICBpZiAoY2FwdHVyZUNvdW50KCkp
CisgICAgICAgICAgICBpc0NhcHR1cmVkID0gcmVnLm9mZnNldCgpIDw9IGNhcHR1cmVTdGFydCgp
ICYmIHJlZy5vZmZzZXQoKSA+IGNhcHR1cmVFbmQoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChp
c0NhcHR1cmVkKSB7CisgICAgICAgICAgICBpZiAoIWxpdmVBdEhlYWQuZ2V0KGkpKSB7CisgICAg
ICAgICAgICAgICAgYmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpOworICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBWYXJpYWJsZSBsb2MiLCBpLCAiIGlzIGV4cGVjdGVkIHRvIGJlIGxpdmUgYmVj
YXVzZSBpdCBpcyBjYXB0dXJlZCwgYnV0IGl0IGlzbid0IGxpdmUuXG4iKTsKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgUmVzdWx0OiAiLCBsaXZlQXRIZWFkLCAiXG4iKTsKKyAgICAgICAg
ICAgICAgICBlbmRWYWxpZGF0aW9uRGlkRmFpbCgpOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKGxpdmVBdEhlYWQuZ2V0KGkpKSB7CisgICAgICAgICAg
ICAgICAgYmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpOworICAgICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBWYXJpYWJsZSBsb2MiLCBpLCAiIGlzIGV4cGVjdGVkIHRvIGJlIGRlYWQuXG4iKTsKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgUmVzdWx0OiAiLCBsaXZlQXRIZWFkLCAiXG4iKTsK
KyAgICAgICAgICAgICAgICBlbmRWYWxpZGF0aW9uRGlkRmFpbCgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENvZGVCbG9jazo6YmVnaW5WYWxpZGF0aW9uRGlk
RmFpbCgpCit7CisgICAgZGF0YUxvZygiVmFsaWRhdGlvbiBmYWlsdXJlIGluICIsICp0aGlzLCAi
OlxuIik7CisgICAgZGF0YUxvZygiXG4iKTsKK30KKwordm9pZCBDb2RlQmxvY2s6OmVuZFZhbGlk
YXRpb25EaWRGYWlsKCkKK3sKKyAgICBkYXRhTG9nKCJcbiIpOworICAgIGR1bXBCeXRlY29kZSgp
OworICAgIGRhdGFMb2coIlxuIik7CisgICAgZGF0YUxvZygiVmFsaWRhdGlvbiBmYWlsdXJlLlxu
Iik7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CShyZXZpc2lvbiAxNTk3OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwNCw2ICs3MDQsOCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcz4odGhpcyk7CiAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lz
OwogICAgIH0KKyAgICAKKyAgICB2b2lkIHZhbGlkYXRlKCk7CiAKICAgICAvLyBKdW1wIFRhYmxl
cwogCkBAIC0xMDI4LDYgKzEwMzAsOSBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1fcmFyZURh
dGEpCiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gYWRvcHRQdHIobmV3IFJhcmVEYXRhKTsKICAg
ICB9CisgICAgCisgICAgdm9pZCBiZWdpblZhbGlkYXRpb25EaWRGYWlsKCk7CisgICAgTk9fUkVU
VVJOX0RVRV9UT19DUkFTSCB2b2lkIGVuZFZhbGlkYXRpb25EaWRGYWlsKCk7CiAKICNpZiBFTkFC
TEUoSklUKQogICAgIHZvaWQgcmVzZXRTdHViSW50ZXJuYWwoUmVwYXRjaEJ1ZmZlciYsIFN0cnVj
dHVyZVN0dWJJbmZvJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTU5Nzk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw2ICsyOTgsOSBA
QCBKU09iamVjdCogU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4CiAgICAgICAgIHJldHVy
biBleGNlcHRpb247CiAgICAgfQogICAgIAorICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUJ5dGVj
b2RlKCkpCisgICAgICAgIGNvZGVCbG9jay0+dmFsaWRhdGUoKTsKKyAgICAKICAgICBib29sIHNo
b3VsZFVzZUxMSW50OwogI2lmICFFTkFCTEUoSklUKQogICAgIC8vIE5vIEpJVCBpbXBsaWVzIHVz
ZSBvZiB0aGUgQyBMb29wIExMSU5ULiBPdmVycmlkZSB0aGUgb3B0aW9ucyB0byByZWZsZWN0IHRo
aXMuIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNp
b24gMTU5Nzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDcgQEAgdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRp
b25SYW5nZTsKICAgICBcCiAgICAgdihib29sLCBkdW1wR2VuZXJhdGVkQnl0ZWNvZGVzLCBmYWxz
ZSkgXAogICAgIHYoYm9vbCwgZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzLCBmYWxzZSkgXAor
ICAgIHYoYm9vbCwgdmFsaWRhdGVCeXRlY29kZSwgZmFsc2UpIFwKICAgICBcCiAgICAgLyogc2hv
d0Rpc2Fzc2VtYmx5IGltcGxpZXMgc2hvd0RGR0Rpc2Fzc2VtYmx5LiAqLyBcCiAgICAgdihib29s
LCBzaG93RGlzYXNzZW1ibHksIGZhbHNlKSBcCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5ODA0KQorKysg
U291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAx
My0xMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERvIGJ5
dGVjb2RlIHZhbGlkYXRpb24gYXMgcGFydCBvZiB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ5MTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2o6CisgICAgICAgICogV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IHd0Zi9GYXN0Qml0VmVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0
b3I6OmR1bXApOgorICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6
OkZhc3RCaXRWZWN0b3I6OnJlc2l6ZSk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OmJp
dENvdW50KToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6YXJyYXlMZW5ndGgpOgorCiAy
MDEzLTExLTI2ICBEcmV3IFlhbyAgPGF5YW9AYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OIHNob3VsZCBjcmFzaCBpbiBhIGRpc3RpbmN0IHdheS4K
SW5kZXg6IFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1OTc5NCkKKysrIFNvdXJjZS9X
VEYvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCB3
dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvRW5jb2Rlci5oIFwKICAgICBTb3Vy
Y2UvV1RGL3d0Zi9FbnVtQ2xhc3MuaCBcCiAgICAgU291cmNlL1dURi93dGYvRXhwb3J0TWFjcm9z
LmggXAorICAgIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3BwIFwKICAgICBTb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2Mu
Y3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggXApJbmRleDogU291cmNlL1dU
Ri9XVEYudmN4cHJvai9XVEYudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52
Y3hwcm9qL1dURi52Y3hwcm9qCShyZXZpc2lvbiAxNTk3OTQpCisrKyBTb3VyY2UvV1RGL1dURi52
Y3hwcm9qL1dURi52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcZHRvYVxmaXhlZC1kdG9hLmNjIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXGR0b2Fcc3RydG9kLmNjIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cd3RmXER5bmFtaWNBbm5vdGF0aW9ucy5jcHAiIC8+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlx3dGZcRmFzdEJpdFZlY3Rvci5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlx3dGZcRmFzdE1hbGxvYy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlx3dGZcRmlsZVByaW50U3RyZWFtLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHd0ZlxGdW5jdGlvbkRpc3BhdGNoZXIuY3BwIiAvPgpJbmRleDogU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTk3OTQpCisrKyBTb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2
ICsyNSw3IEBACiAJCTBGMkI2NkE2MTdCNkI0RkIwMEE3QUUzRiAvKiBEZWZlcnJhYmxlUmVmQ291
bnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
QjY2QTQxN0I2QjRGNzAwQTdBRTNGIC8qIERlZmVycmFibGVSZWZDb3VudGVkLmggKi87IH07CiAJ
CTBGMkI2NkE3MTdCNkI0RkQwMEE3QUUzRiAvKiBGbGlwQnl0ZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkI2NkE1MTdCNkI0RjcwMEE3QUUzRiAv
KiBGbGlwQnl0ZXMuaCAqLzsgfTsKIAkJMEY4NzEwNUExNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1Bv
aW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
ODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAvKiBSYXdQb2ludGVyLmggKi87IH07CisJCTBGODg1RTBG
MTg0NUFFQTkwMEYxRTNGQSAvKiBGYXN0Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODg1RTBFMTg0NUFFOUYwMEYxRTNGQSAvKiBG
YXN0Qml0VmVjdG9yLmNwcCAqLzsgfTsKIAkJMEY4RjJCOTExNzJFMDBGQzAwN0RCREE1IC8qIENv
bXBpbGF0aW9uVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjhGMkI5MDE3MkUwMEYwMDA3REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuaCAq
LzsgfTsKIAkJMEY4RjJCOTIxNzJFMDEwMzAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEYyQjhG
MTcyRTAwRjAwMDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgKi87IH07CiAJCTBGOEYy
QjlDMTcyRjI1OTYwMDdEQkRBNSAvKiBDb252ZXJzaW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4RjJCOUIxNzJGMjU5NDAwN0RCREE1IC8q
IENvbnZlcnNpb25Nb2RlLmggKi87IH07CkBAIC0yOTAsNiArMjkxLDcgQEAKIAkJMEYyQjY2QTQx
N0I2QjRGNzAwQTdBRTNGIC8qIERlZmVycmFibGVSZWZDb3VudGVkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERlZmVycmFibGVSZWZDb3VudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MkI2NkE1MTdCNkI0RjcwMEE3QUUzRiAvKiBGbGlwQnl0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxp
cEJ5dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODcxMDU5MTY2NDNGMTkw
MDkwQjBBRCAvKiBSYXdQb2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJhd1BvaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4ODVFMEUxODQ1
QUU5RjAwRjFFM0ZBIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmFz
dEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOEYyQjhGMTcy
RTAwRjAwMDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDb21waWxhdGlvblRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
OEYyQjkwMTcyRTAwRjAwMDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb21waWxhdGlvblRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjhGMkI5QjE3MkYyNTk0MDA3REJEQTUgLyogQ29udmVyc2lvbk1vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29udmVyc2lvbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5NSw2
ICs2OTcsNyBAQAogCQkJCUE4QTQ3MjlFMTUxQTgyNUEwMDQxMjNGRiAvKiBFbmNvZGVyLmggKi8s
CiAJCQkJNDRGNjYwMDcxNzFBRkFBOTAwRTRBRDE5IC8qIEVudW1DbGFzcy5oICovLAogCQkJCUE4
QTQ3MjlGMTUxQTgyNUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQkwRjg4NUUw
RTE4NDVBRTlGMDBGMUUzRkEgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8sCiAJCQkJMEZEODFBQzQx
NTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzJBMTE1MUE4
MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi8sCiAJCQkJQThBNDcyQTIxNTFBODI1QTAw
NDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLywKQEAgLTEyMjUsNiArMTIyOCw3IEBACiAJCQkJQThB
NDczQUUxNTFBODI1QjAwNDEyM0ZGIC8qIGRpeS1mcC5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3M0IwMTUxQTgyNUIwMDQxMjNGRiAvKiBkb3VibGUtY29udmVyc2lvbi5jYyBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0JBMTUxQTgyNUIwMDQxMjNGRiAvKiBkdG9hLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGODg1RTBGMTg0NUFFQTkwMEYxRTNGQSAvKiBGYXN0Qml0VmVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0JDMTUxQTgyNUIwMDQxMjNGRiAvKiBEeW5hbWljQW5u
b3RhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjMxNTFBODI1QjAwNDEyM0ZG
IC8qIGZhc3QtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0MzMTUxQTgyNUIwMDQx
MjNGRiAvKiBGYXN0TWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDE1OTc5NCkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAg
RGF0ZU1hdGguY3BwCiAgICAgRGVjaW1hbE51bWJlci5jcHAKICAgICBEeW5hbWljQW5ub3RhdGlv
bnMuY3BwCisgICAgRmFzdEJpdFZlY3Rvci5jcHAKICAgICBGYXN0TWFsbG9jLmNwcAogICAgIEZp
bGVQcmludFN0cmVhbS5jcHAKICAgICBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9GYXN0Qml0VmVjdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RC
aXRWZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkZhc3RCaXRWZWN0b3IuaCIKKworI2luY2x1ZGUgIlByaW50U3RyZWFtLmgiCisK
K25hbWVzcGFjZSBXVEYgeworCit2b2lkIEZhc3RCaXRWZWN0b3I6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1CaXRzOyAr
K2kpCisgICAgICAgIG91dC5wcmludChnZXQoaSkgPyAiMSIgOiAiLSIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAkocmV2aXNpb24gMTU5Nzk0
KQorKysgU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2
ICszMiw4IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitjbGFzcyBQcmludFN0cmVhbTsKKwogY2xh
c3MgRmFzdEJpdFZlY3RvciB7CiBwdWJsaWM6CiAgICAgRmFzdEJpdFZlY3RvcigpCkBAIC03Miw3
ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gVXNlIGZhc3RDYWxsb2MgaW5zdGVhZCBvZiBm
YXN0UmVhbGxvYyBiZWNhdXNlIHdlIGV4cGVjdCB0aGUgY29tbW9uCiAgICAgICAgIC8vIHVzZSBj
YXNlIGZvciB0aGlzIG1ldGhvZCB0byBiZSBpbml0aWFsaXppbmcgdGhlIHNpemUgb2YgdGhlIGJp
dHZlY3Rvci4KICAgICAgICAgCi0gICAgICAgIHNpemVfdCBuZXdMZW5ndGggPSAobnVtQml0cyAr
IDMxKSA+PiA1OworICAgICAgICBzaXplX3QgbmV3TGVuZ3RoID0gYXJyYXlMZW5ndGgobnVtQml0
cyk7CiAgICAgICAgIHVpbnQzMl90KiBuZXdBcnJheSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4o
ZmFzdENhbGxvYyhuZXdMZW5ndGgsIDQpKTsKICAgICAgICAgbWVtY3B5KG5ld0FycmF5LCBtX2Fy
cmF5LCBhcnJheUxlbmd0aCgpICogNCk7CiAgICAgICAgIGlmIChtX2FycmF5KQpAQCAtMTY2LDgg
KzE2OCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGkgPCBtX251bUJpdHMpOwogICAgICAgICByZXR1cm4gISEobV9hcnJheVtpID4+IDVdICYg
KDEgPDwgKGkgJiAzMSkpKTsKICAgICB9CisgICAgCisgICAgc2l6ZV90IGJpdENvdW50KCkgY29u
c3QKKyAgICB7CisgICAgICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBhcnJheUxlbmd0aCgpOyBpLS07KQorICAgICAgICAgICAgcmVzdWx0ICs9IFdURjo6
Yml0Q291bnQobV9hcnJheVtpXSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAg
IAorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsK
KyAgICAKIHByaXZhdGU6Ci0gICAgc2l6ZV90IGFycmF5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
KG1fbnVtQml0cyArIDMxKSA+PiA1OyB9CisgICAgc3RhdGljIHNpemVfdCBhcnJheUxlbmd0aChz
aXplX3QgbnVtQml0cykgeyByZXR1cm4gKG51bUJpdHMgKyAzMSkgPj4gNTsgfQorICAgIHNpemVf
dCBhcnJheUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGFycmF5TGVuZ3RoKG1fbnVtQml0cyk7IH0K
ICAgICAKICAgICB1aW50MzJfdCogbV9hcnJheTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3Rk
Ojp1bmlxdWVfcHRyPHVpbnQzMl90W10+LgogICAgIHNpemVfdCBtX251bUJpdHM7CkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NTk4MDMpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBA
QAorMjAxMy0xMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERvIGJ5dGVjb2RlIHZhbGlkYXRpb24gYXMgcGFydCBvZiB0ZXN0aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ5MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJl
c3MtdGVzdHM6CisKIDIwMTMtMTEtMjYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIHJlcGxheSBwZXJmb3JtYW5jZSB0ZXN0cyBhcyBpdCdzIG5vdCBh
Y3RpdmVseSBtYWludGFpbmVkCkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRl
c3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHJl
dmlzaW9uIDE1OTgwMSkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHdv
cmtpbmcgY29weSkKQEAgLTQwMSwxMiArNDAxLDEyIEBAIGRlZiBydW5Ob0xMSW50CiAgICAgcnVu
KCJuby1sbGludCIsICItLXVzZUxMSW50PWZhbHNlIikKIGVuZAogCi1kZWYgcnVuTm9DSklUCi0g
ICAgcnVuKCJuby1jaml0IiwgIi0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSIpCitkZWYgcnVu
Tm9DSklUVmFsaWRhdGUKKyAgICBydW4oIm5vLWNqaXQiLCAiLS1lbmFibGVDb25jdXJyZW50SklU
PWZhbHNlIiwgIi0tdmFsaWRhdGVCeXRlY29kZT10cnVlIiwgIi0tdmFsaWRhdGVHcmFwaD10cnVl
IikKIGVuZAogCiBkZWYgcnVuTm9DSklUVmFsaWRhdGVQaGFzZXMKLSAgICBydW4oIm5vLWNqaXQt
dmFsaWRhdGUtcGhhc2VzIiwgIi0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSIsICItLXZhbGlk
YXRlR3JhcGhBdEVhY2hQaGFzZT10cnVlIikKKyAgICBydW4oIm5vLWNqaXQtdmFsaWRhdGUtcGhh
c2VzIiwgIi0tZW5hYmxlQ29uY3VycmVudEpJVD1mYWxzZSIsICItLXZhbGlkYXRlQnl0ZWNvZGU9
dHJ1ZSIsICItLXZhbGlkYXRlR3JhcGhBdEVhY2hQaGFzZT10cnVlIikKIGVuZAogCiBkZWYgcnVu
RGVmYXVsdEZUTApAQCAtNDY4LDcgKzQ2OCw3IEBAIGVuZAogCiBkZWYgZGVmYXVsdFF1aWNrUnVu
CiAgICAgcnVuRGVmYXVsdAotICAgIHJ1bk5vQ0pJVAorICAgIHJ1bk5vQ0pJVFZhbGlkYXRlCiAg
ICAgaWYgJGVuYWJsZUZUTAogICAgICAgICBydW5EZWZhdWx0RlRMCiAgICAgICAgIHJ1bkZUTE5v
Q0pJVApAQCAtNTU4LDE1ICs1NTgsMTUgQEAgZGVmIHJ1bk1vemlsbGFUZXN0QmFzZWxpbmVKSVQo
bW9kZSwgKmV4dAogICAgIHJ1bk1vemlsbGFUZXN0KCJiYXNlbGluZSIsIG1vZGUsIGV4dHJhRmls
ZXMsICItLXVzZUxMSW50PWZhbHNlIiwgIi0tdXNlREZHSklUPWZhbHNlIikKIGVuZAogCi1kZWYg
cnVuTW96aWxsYVRlc3RERkdFYWdlck5vQ0pJVChtb2RlLCAqZXh0cmFGaWxlcykKLSAgICBydW5N
b3ppbGxhVGVzdCgiZGZnLWVhZ2VyLW5vLWNqaXQiLCBtb2RlLCBleHRyYUZpbGVzLCAiLS1lbmFi
bGVDb25jdXJyZW50SklUPWZhbHNlIiwgKkVBR0VSX09QVElPTlMpCitkZWYgcnVuTW96aWxsYVRl
c3RERkdFYWdlck5vQ0pJVFZhbGlkYXRlUGhhc2VzKG1vZGUsICpleHRyYUZpbGVzKQorICAgIHJ1
bk1vemlsbGFUZXN0KCJkZmctZWFnZXItbm8tY2ppdC12YWxpZGF0ZS1waGFzZXMiLCBtb2RlLCBl
eHRyYUZpbGVzLCAiLS1lbmFibGVDb25jdXJyZW50SklUPWZhbHNlIiwgIi0tdmFsaWRhdGVCeXRl
Y29kZT10cnVlIiwgIi0tdmFsaWRhdGVHcmFwaEF0RWFjaFBoYXNlPXRydWUiLCAqRUFHRVJfT1BU
SU9OUykKIGVuZAogCiBkZWYgZGVmYXVsdFJ1bk1vemlsbGFUZXN0KG1vZGUsICpleHRyYUZpbGVz
KQogICAgIHJ1bk1vemlsbGFUZXN0RGVmYXVsdChtb2RlLCAqZXh0cmFGaWxlcykKICAgICBydW5N
b3ppbGxhVGVzdExMSW50KG1vZGUsICpleHRyYUZpbGVzKQogICAgIHJ1bk1vemlsbGFUZXN0QmFz
ZWxpbmVKSVQobW9kZSwgKmV4dHJhRmlsZXMpCi0gICAgcnVuTW96aWxsYVRlc3RERkdFYWdlck5v
Q0pJVChtb2RlLCAqZXh0cmFGaWxlcykKKyAgICBydW5Nb3ppbGxhVGVzdERGR0VhZ2VyTm9DSklU
VmFsaWRhdGVQaGFzZXMobW9kZSwgKmV4dHJhRmlsZXMpCiBlbmQKIAogZGVmIHNraXAK
</data>
<flag name="review"
          id="241218"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>