<?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>50015</bug_id>
          
          <creation_ts>2010-11-24 04:43:47 -0800</creation_ts>
          <short_desc>Move regex parsing and fallback handling to runtime/RegExp.cpp</short_desc>
          <delta_ts>2010-12-02 05:39:36 -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="Peter Varga">pvarga</reporter>
          <assigned_to name="Peter Varga">pvarga</assigned_to>
          <cc>abecsi</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>msaboff</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>313229</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Varga">pvarga</who>
    <bug_when>2010-11-24 04:43:47 -0800</bug_when>
    <thetext>Since the pcre is removed from YARR the parsing of regexes by YARR is always needed either in JIT or Interpreter case.
Therefore the moving of the parsing process to runtime/RegExp.cpp is sensible and it avoids the code duplication.

On the other hand the moving of the fallback handling to the runtime/RegExp.cpp from the YARR JIT reduces
the code complexity and the code of JIT and Interpreter is seperated (JIT doesn&apos;t need to call interpret()).

These modifications make compile() and execute()/interpret() functions of YARR more simple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313232</commentid>
    <comment_count>1</comment_count>
      <attachid>74747</attachid>
    <who name="Peter Varga">pvarga</who>
    <bug_when>2010-11-24 04:50:34 -0800</bug_when>
    <thetext>Created attachment 74747
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314876</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-11-29 23:37:13 -0800</bug_when>
    <thetext>Hi Peter,

A couple of cosmetic things, we should probably remove the compile method (this can now just fold back up into the constructor, since PCRE is gone, and we should probably also remove the following comment from the header:
  // FIXME: Just decompile m_regExp instead of storing this.
(not a direction I think we&apos;re headed in).

There is one way I think you could improve this patch though, see what you think.  Checks like this seem a little over complicated, particularly on a hot path:
&gt; if (!!m_representation-&gt;m_regExpJITCode || (m_useInterpreter &amp;&amp; m_representation-&gt;m_regExpBytecode))
(okay, it&apos;s just a couple more branches, but it could be simpler).
I&apos;d suggest instead of adding m_useInterpreter to add an enum to track the state of the regex.  At the point of construction the RegExp always goes into one of three states - either (A) it has a parse error, or (B) if the JIT is enabled &amp; the regex is supported it will be JIT compiled, else (C) it will be byte-compiled.  In match that if check becomes something like &apos;if (m_state != ParseError)&apos;

In the longer term, it would be nice to only construct RegExp objects after successfully parsing, and have RegExp::create just return 0 on failure (with an error string as an output parameter).  Having duff RegExp objects that can&apos;t actually be run seems odd, and I think in all cases, at least within the JS languages use, errors should be reported (an thrown immediately) at construction time anyway, so there is likely no way to get a handle to a JS object that is referencing a RegExp that failed to compile.  Anyway, this would be a bigger change &amp; is not important now.

What do you think of adding an enum to explicitly delineate the states?

cheers, G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314999</commentid>
    <comment_count>3</comment_count>
      <attachid>75138</attachid>
    <who name="Peter Varga">pvarga</who>
    <bug_when>2010-11-30 06:44:23 -0800</bug_when>
    <thetext>Created attachment 75138
proposed patch v2

Hi Gavin,

&gt; What do you think of adding an enum to explicitly delineate the states?
Adding an enum instead of m_useInterpreter variable is sensible and it mades the code clearer.
I updated the patch.

&gt; we should probably remove the compile method
I didn&apos;t remove the compile method. I think it makes the code seperatable and now it makes the logic of handling
RegExp states flexible.

&gt; we should probably also remove the following comment from the header
I removed this comment. At first the solving of the FIXME looked pointless and I didn&apos;t modify it.

Your suggestion about the modification of RegExp::create needs more investigation because It needs changes
in those classes which implement the handling of regular expressions in runtime.

Regards,
Peter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315725</commentid>
    <comment_count>4</comment_count>
      <attachid>75138</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-12-01 10:30:12 -0800</bug_when>
    <thetext>Comment on attachment 75138
proposed patch v2

&gt; &gt; we should probably remove the compile method
&gt; I didn&apos;t remove the compile method. I think it makes the code seperatable and now it makes
&gt; the logic of handling RegExp states flexible.

Fine, I&apos;m happy with that decision Peter.  Patch looks great, r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316059</commentid>
    <comment_count>5</comment_count>
      <attachid>75138</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-02 02:47:38 -0800</bug_when>
    <thetext>Comment on attachment 75138
proposed patch v2

Rejecting patch 75138 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=abarth-cq-sl&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=both&apos;]&quot; exit_code: 2
Last 500 characters of output:
.build/Debug/testapi.build/Script-14D857B50A469C100032146C.sh


=== BUILD AGGREGATE TARGET All OF PROJECT JavaScriptCore WITH CONFIGURATION Debug ===
Check dependencies
** BUILD FAILED **


The following build commands failed:
JavaScriptCore:
	CompileC /Users/abarth/git/webkit-queue/WebKitBuild/JavaScriptCore.build/Debug/JavaScriptCore.build/Objects-normal/x86_64/RegexJIT.o /Users/abarth/git/webkit-queue/JavaScriptCore/yarr/RegexJIT.cpp normal x86_64 c++ com.apple.compilers.gcc.4_2
(1 failure)


Full output: http://queues.webkit.org/results/6779006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316093</commentid>
    <comment_count>6</comment_count>
      <attachid>75138</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-12-02 05:38:20 -0800</bug_when>
    <thetext>Comment on attachment 75138
proposed patch v2

Landed in http://trac.webkit.org/changeset/73124, clearing flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316094</commentid>
    <comment_count>7</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2010-12-02 05:39:36 -0800</bug_when>
    <thetext>Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74747</attachid>
            <date>2010-11-24 04:50:34 -0800</date>
            <delta_ts>2010-11-30 06:44:23 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-move-fallback-v1.patch</filename>
            <type>text/plain</type>
            <size>13958</size>
            <attacher name="Peter Varga">pvarga</attacher>
            
              <data encoding="base64">RnJvbSBiZDQ1Zjc4YWNlYmZiN2JkMThlMzI3ODQ2NDM5ZmE0Zjg1ZjQwNjJjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBWYXJnYSA8cHZhcmdhQGluZi51LXN6ZWdlZC5odT4K
RGF0ZTogV2VkLCAyNCBOb3YgMjAxMCAwNDo0OToyMiAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIG1v
dmUgZmFsbGJhY2sgdjEKCi0tLQogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICB8ICAgMjYgKysrKysrKysrKysrKysrKwogSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuY3BwICAgICAgICB8ICAgNDggKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmggICAgICAgICAgfCAgICA4ICsrKystCiBKYXZhU2Ny
aXB0Q29yZS95YXJyL1JlZ2V4SW50ZXJwcmV0ZXIuY3BwIHwgICAxNCAtLS0tLS0tLS0KIEphdmFT
Y3JpcHRDb3JlL3lhcnIvUmVnZXhJbnRlcnByZXRlci5oICAgfCAgICAxIC0KIEphdmFTY3JpcHRD
b3JlL3lhcnIvUmVnZXhKSVQuY3BwICAgICAgICAgfCAgIDI2ICsrKy0tLS0tLS0tLS0tLS0KIEph
dmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhKSVQuaCAgICAgICAgICAgfCAgIDIzICsrKystLS0tLS0t
LS0tCiA3IGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlMmM4N2I5Li5lMzBkZjZiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTAtMTEtMjQgIFBldGVyIFZhcmdhICA8cHZhcmdhQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHJlZ2V4
IHBhcnNpbmcgYW5kIGZhbGxiYWNrIGhhbmRsaW5nIHRvIHJ1bnRpbWUvUmVnRXhwLmNwcAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwMTUKKworICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpSZWdFeHAp
OgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6
Y29tcGlsZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2gpOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6cGF0dGVybik6CisgICAgICAgICog
eWFyci9SZWdleEludGVycHJldGVyLmNwcDoKKyAgICAgICAgKiB5YXJyL1JlZ2V4SW50ZXJwcmV0
ZXIuaDoKKyAgICAgICAgKiB5YXJyL1JlZ2V4SklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6
UmVnZXhHZW5lcmF0b3I6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpqaXRDb21waWxl
UmVnZXgpOgorICAgICAgICAqIHlhcnIvUmVnZXhKSVQuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6
UmVnZXhDb2RlQmxvY2s6OlJlZ2V4Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6WWFycjo6UmVn
ZXhDb2RlQmxvY2s6OnNldEZhbGxCYWNrKToKKyAgICAgICAgKEpTQzo6WWFycjo6UmVnZXhDb2Rl
QmxvY2s6OmlzRmFsbEJhY2spOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleENvZGVCbG9jazo6
b3BlcmF0b3IhKToKKyAgICAgICAgKEpTQzo6WWFycjo6ZXhlY3V0ZVJlZ2V4KToKKwogMjAxMC0x
MS0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCmluZGV4IGEz
M2ZhOTEuLjMzN2JlNjQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTIsNiArMiw3
IEBACiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEsIDIwMDQgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIElu
Yy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgUGV0ZXIgVmFyZ2EgKHB2YXJnYUBpbmYudS1zemVn
ZWQuaHUpLCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjks
MjQgKzMwLDIxIEBACiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAKICNpbmNsdWRlICJ5
YXJyL1JlZ2V4Q29tcGlsZXIuaCIKLSNpZiBFTkFCTEUoWUFSUl9KSVQpCiAjaW5jbHVkZSAieWFy
ci9SZWdleEpJVC5oIgotI2Vsc2UKICNpbmNsdWRlICJ5YXJyL1JlZ2V4SW50ZXJwcmV0ZXIuaCIK
LSNlbmRpZgorI2luY2x1ZGUgInlhcnIvUmVnZXhQYXR0ZXJuLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBzdHJ1Y3QgUmVnRXhwUmVwcmVzZW50YXRpb24gewogI2lmIEVOQUJMRShZQVJSX0pJVCkK
ICAgICBZYXJyOjpSZWdleENvZGVCbG9jayBtX3JlZ0V4cEpJVENvZGU7Ci0jZWxzZQotICAgIE93
blB0cjxZYXJyOjpCeXRlY29kZVBhdHRlcm4+IG1fcmVnRXhwQnl0ZWNvZGU7CiAjZW5kaWYKKyAg
ICBPd25QdHI8WWFycjo6Qnl0ZWNvZGVQYXR0ZXJuPiBtX3JlZ0V4cEJ5dGVjb2RlOwogfTsKIAot
aW5saW5lIFJlZ0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0
cmluZyYgcGF0dGVybiwgY29uc3QgVVN0cmluZyYgZmxhZ3MpCi0gICAgOiBtX3BhdHRlcm4ocGF0
dGVybikKK2lubGluZSBSZWdFeHA6OlJlZ0V4cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNv
bnN0IFVTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIGNvbnN0IFVTdHJpbmcmIGZsYWdzKQorICAgIDog
bV9wYXR0ZXJuU3RyaW5nKHBhdHRlcm5TdHJpbmcpCiAgICAgLCBtX2ZsYWdCaXRzKDApCiAgICAg
LCBtX2NvbnN0cnVjdGlvbkVycm9yKDApCiAgICAgLCBtX251bVN1YnBhdHRlcm5zKDApCkBAIC01
NSw2ICs1Myw5IEBAIGlubGluZSBSZWdFeHA6OlJlZ0V4cChKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFVTCiAgICAgLCBtX3J0TWF0Y2hGb3Vu
ZENvdW50KDApCiAjZW5kaWYKICAgICAsIG1fcmVwcmVzZW50YXRpb24oYWRvcHRQdHIobmV3IFJl
Z0V4cFJlcHJlc2VudGF0aW9uKSkKKyNpZiBFTkFCTEUoWUFSUl9KSVQpCisgICAgLCBtX3VzZUlu
dGVycHJldGVyKHRydWUpCisjZW5kaWYKIHsKICAgICAvLyBOT1RFOiBUaGUgZ2xvYmFsIGZsYWcg
aXMgaGFuZGxlZCBvbiBhIGNhc2UtYnktY2FzZSBiYXNpcyBieSBmdW5jdGlvbnMgbGlrZQogICAg
IC8vIFN0cmluZzo6bWF0Y2ggYW5kIFJlZ0V4cE9iamVjdDo6bWF0Y2guCkBAIC03Myw5ICs3NCw5
IEBAIFJlZ0V4cDo6flJlZ0V4cCgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8UmVnRXhwPiBSZWdFeHA6
OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4s
IGNvbnN0IFVTdHJpbmcmIGZsYWdzKQorUGFzc1JlZlB0cjxSZWdFeHA+IFJlZ0V4cDo6Y3JlYXRl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZywg
Y29uc3QgVVN0cmluZyYgZmxhZ3MpCiB7Ci0gICAgUmVmUHRyPFJlZ0V4cD4gcmVzID0gYWRvcHRS
ZWYobmV3IFJlZ0V4cChnbG9iYWxEYXRhLCBwYXR0ZXJuLCBmbGFncykpOworICAgIFJlZlB0cjxS
ZWdFeHA+IHJlcyA9IGFkb3B0UmVmKG5ldyBSZWdFeHAoZ2xvYmFsRGF0YSwgcGF0dGVyblN0cmlu
ZywgZmxhZ3MpKTsKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgZ2xvYmFsRGF0YS0+
YWRkUmVnRXhwVG9UcmFjZShyZXMpOwogI2VuZGlmCkBAIC04NCwxMSArODUsMjIgQEAgUGFzc1Jl
ZlB0cjxSZWdFeHA+IFJlZ0V4cDo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgVVN0cmluZyYgcGF0dGUKIAogdm9pZCBSZWdFeHA6OmNvbXBpbGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQogeworICAgIFlhcnI6OlJlZ2V4UGF0dGVybiBwYXR0ZXJuKGlnbm9yZUNhc2Uo
KSwgbXVsdGlsaW5lKCkpOworCisgICAgaWYgKChtX2NvbnN0cnVjdGlvbkVycm9yID0gWWFycjo6
Y29tcGlsZVJlZ2V4KG1fcGF0dGVyblN0cmluZywgcGF0dGVybikpKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX251bVN1YnBhdHRlcm5zID0gcGF0dGVybi5tX251bVN1YnBhdHRlcm5zOworCiAj
aWYgRU5BQkxFKFlBUlJfSklUKQotICAgIFlhcnI6OmppdENvbXBpbGVSZWdleChnbG9iYWxEYXRh
LCBtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cEpJVENvZGUsIG1fcGF0dGVybiwgbV9udW1TdWJw
YXR0ZXJucywgbV9jb25zdHJ1Y3Rpb25FcnJvciwgJmdsb2JhbERhdGEtPm1fcmVnZXhBbGxvY2F0
b3IsIGlnbm9yZUNhc2UoKSwgbXVsdGlsaW5lKCkpOwotI2Vsc2UKLSAgICBtX3JlcHJlc2VudGF0
aW9uLT5tX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNvbXBpbGVSZWdleChtX3BhdHRlcm4s
IG1fbnVtU3VicGF0dGVybnMsIG1fY29uc3RydWN0aW9uRXJyb3IsICZnbG9iYWxEYXRhLT5tX3Jl
Z2V4QWxsb2NhdG9yLCBpZ25vcmVDYXNlKCksIG11bHRpbGluZSgpKTsKKyAgICBpZiAoIXBhdHRl
cm4ubV9jb250YWluc0JhY2tyZWZlcmVuY2VzICYmIGdsb2JhbERhdGEtPmNhblVzZUpJVCgpKSB7
CisgICAgICAgIFlhcnI6OmppdENvbXBpbGVSZWdleChwYXR0ZXJuLCBnbG9iYWxEYXRhLCBtX3Jl
cHJlc2VudGF0aW9uLT5tX3JlZ0V4cEpJVENvZGUpOworICAgICAgICBtX3VzZUludGVycHJldGVy
ID0gbV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHBKSVRDb2RlLmlzRmFsbEJhY2soKTsKKyAgICB9
CisKKyAgICBpZiAobV91c2VJbnRlcnByZXRlcikKICNlbmRpZgorICAgICAgICBtX3JlcHJlc2Vu
dGF0aW9uLT5tX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNvbXBpbGVSZWdleChwYXR0ZXJu
LCAmZ2xvYmFsRGF0YS0+bV9yZWdleEFsbG9jYXRvcik7CiB9CiAKIGludCBSZWdFeHA6Om1hdGNo
KGNvbnN0IFVTdHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVj
dG9yKQpAQCAtMTA0LDcgKzExNiw3IEBAIGludCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcm
IHMsIGludCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVjdG9yKQogICAgICAgICBy
ZXR1cm4gLTE7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVQpCi0gICAgaWYgKCEhbV9yZXByZXNlbnRh
dGlvbi0+bV9yZWdFeHBKSVRDb2RlKSB7CisgICAgaWYgKCEhbV9yZXByZXNlbnRhdGlvbi0+bV9y
ZWdFeHBKSVRDb2RlIHx8IChtX3VzZUludGVycHJldGVyICYmIG1fcmVwcmVzZW50YXRpb24tPm1f
cmVnRXhwQnl0ZWNvZGUpKSB7CiAjZWxzZQogICAgIGlmIChtX3JlcHJlc2VudGF0aW9uLT5tX3Jl
Z0V4cEJ5dGVjb2RlKSB7CiAjZW5kaWYKQEAgLTEyNiwxMSArMTM4LDEzIEBAIGludCBSZWdFeHA6
Om1hdGNoKGNvbnN0IFVTdHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+
KiBvdmVjdG9yKQogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwLCBpID0gMDsgaSA8IG1fbnVt
U3VicGF0dGVybnMgKyAxOyBqICs9IDIsIGkrKykgICAgICAgICAgICAKICAgICAgICAgICAgIG9m
ZnNldFZlY3RvcltqXSA9IC0xOwogCisgICAgICAgIGludCByZXN1bHQ7CiAjaWYgRU5BQkxFKFlB
UlJfSklUKQotICAgICAgICBpbnQgcmVzdWx0ID0gWWFycjo6ZXhlY3V0ZVJlZ2V4KG1fcmVwcmVz
ZW50YXRpb24tPm1fcmVnRXhwSklUQ29kZSwgcy5jaGFyYWN0ZXJzKCksIHN0YXJ0T2Zmc2V0LCBz
Lmxlbmd0aCgpLCBvZmZzZXRWZWN0b3IpOwotI2Vsc2UKLSAgICAgICAgaW50IHJlc3VsdCA9IFlh
cnI6OmludGVycHJldFJlZ2V4KG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwQnl0ZWNvZGUuZ2V0
KCksIHMuY2hhcmFjdGVycygpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9y
KTsKKyAgICAgICAgaWYgKCFtX3VzZUludGVycHJldGVyKQorICAgICAgICAgICAgcmVzdWx0ID0g
WWFycjo6ZXhlY3V0ZVJlZ2V4KG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwSklUQ29kZSwgcy5j
aGFyYWN0ZXJzKCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3IpOworICAg
ICAgICBlbHNlCiAjZW5kaWYKKyAgICAgICAgICAgIHJlc3VsdCA9IFlhcnI6OmludGVycHJldFJl
Z2V4KG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwQnl0ZWNvZGUuZ2V0KCksIHMuY2hhcmFjdGVy
cygpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yKTsKIAogICAgICAgICBB
U1NFUlQocmVzdWx0ID49IC0xKTs7CiAgICAgICAgIApAQCAtMTYyLDcgKzE3Niw3IEBAIGludCBS
ZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgVmVjdG9yPGlu
dCwgMzI+KiBvdmVjdG9yKQogICAgICAgICBZYXJyOjpSZWdleENvZGVCbG9jayYgY29kZUJsb2Nr
ID0gbV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHBKSVRDb2RlOwogCiAgICAgICAgIGNoYXIgaml0
QWRkclsyMF07Ci0gICAgICAgIGlmIChjb2RlQmxvY2suZ2V0RmFsbGJhY2soKSkKKyAgICAgICAg
aWYgKG1fdXNlSW50ZXJwcmV0ZXIpCiAgICAgICAgICAgICBzcHJpbnRmKGppdEFkZHIsICJmYWxs
YmFjayIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzcHJpbnRmKGppdEFkZHIsICIweCUw
MTRseCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgbG9uZyBpbnQ+KGNvZGVCbG9jay5nZXRB
ZGRyKCkpKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmggYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IGU2ZTJmYmMuLmE5MTMzNTIgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgYm9vbCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnQml0cyAmIEln
bm9yZUNhc2U7IH0KICAgICAgICAgYm9vbCBtdWx0aWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2Zs
YWdCaXRzICYgTXVsdGlsaW5lOyB9CiAKLSAgICAgICAgY29uc3QgVVN0cmluZyYgcGF0dGVybigp
IGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybjsgfQorICAgICAgICBjb25zdCBVU3RyaW5nJiBwYXR0
ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuU3RyaW5nOyB9CiAKICAgICAgICAgYm9vbCBp
c1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gIW1fY29uc3RydWN0aW9uRXJyb3I7IH0KICAgICAgICAg
Y29uc3QgY2hhciogZXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25F
cnJvcjsgfQpAQCAtNjAsNyArNjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBlbnVt
IEZsYWdCaXRzIHsgR2xvYmFsID0gMSwgSWdub3JlQ2FzZSA9IDIsIE11bHRpbGluZSA9IDQgfTsK
IAotICAgICAgICBVU3RyaW5nIG1fcGF0dGVybjsgLy8gRklYTUU6IEp1c3QgZGVjb21waWxlIG1f
cmVnRXhwIGluc3RlYWQgb2Ygc3RvcmluZyB0aGlzLgorICAgICAgICBVU3RyaW5nIG1fcGF0dGVy
blN0cmluZzsgLy8gRklYTUU6IEp1c3QgZGVjb21waWxlIG1fcmVnRXhwIGluc3RlYWQgb2Ygc3Rv
cmluZyB0aGlzLgogICAgICAgICBpbnQgbV9mbGFnQml0czsKICAgICAgICAgY29uc3QgY2hhciog
bV9jb25zdHJ1Y3Rpb25FcnJvcjsKICAgICAgICAgdW5zaWduZWQgbV9udW1TdWJwYXR0ZXJuczsK
QEAgLTcwLDYgKzcwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICAgICAgT3du
UHRyPFJlZ0V4cFJlcHJlc2VudGF0aW9uPiBtX3JlcHJlc2VudGF0aW9uOworCisjaWYgRU5BQkxF
KFlBUlJfSklUKQorICAgICAgICBib29sIG1fdXNlSW50ZXJwcmV0ZXI7CisjZW5kaWYKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3lhcnIv
UmVnZXhJbnRlcnByZXRlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4SW50ZXJwcmV0
ZXIuY3BwCmluZGV4IDZkNzcwYTUuLmMyZjU5YzcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3lhcnIvUmVnZXhJbnRlcnByZXRlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUveWFyci9SZWdl
eEludGVycHJldGVyLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlJlZ2V4SW50ZXJwcmV0ZXIuaCIKIAotI2luY2x1ZGUgIlJlZ2V4Q29tcGlsZXIu
aCIKICNpbmNsdWRlICJSZWdleFBhdHRlcm4uaCIKICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJB
bGxvY2F0b3IuaD4KIApAQCAtMTcyNiwxOSArMTcyNSw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PEJ5dGVEaXNqdW5jdGlvbio+IG1fYWxsUGFyZW50aGVzZXNJbmZvOwogfTsKIAotCi1QYXNzT3du
UHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGVSZWdleChjb25zdCBVU3RyaW5nJiBwYXR0
ZXJuU3RyaW5nLCB1bnNpZ25lZCYgbnVtU3VicGF0dGVybnMsIGNvbnN0IGNoYXIqJiBlcnJvciwg
QnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRvciwgYm9vbCBpZ25vcmVDYXNlLCBib29sIG11
bHRpbGluZSkKLXsKLSAgICBSZWdleFBhdHRlcm4gcGF0dGVybihpZ25vcmVDYXNlLCBtdWx0aWxp
bmUpOwotCi0gICAgaWYgKChlcnJvciA9IGNvbXBpbGVSZWdleChwYXR0ZXJuU3RyaW5nLCBwYXR0
ZXJuKSkpCi0gICAgICAgIHJldHVybiBQYXNzT3duUHRyPEJ5dGVjb2RlUGF0dGVybj4oKTsKLQot
ICAgIG51bVN1YnBhdHRlcm5zID0gcGF0dGVybi5tX251bVN1YnBhdHRlcm5zOwotCi0gICAgcmV0
dXJuIEJ5dGVDb21waWxlcihwYXR0ZXJuKS5jb21waWxlKGFsbG9jYXRvcik7Ci19Ci0KIFBhc3NP
d25QdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZVJlZ2V4KFJlZ2V4UGF0dGVybiYgcGF0
dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICByZXR1cm4gQnl0
ZUNvbXBpbGVyKHBhdHRlcm4pLmNvbXBpbGUoYWxsb2NhdG9yKTsKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3lhcnIvUmVnZXhJbnRlcnByZXRlci5oIGIvSmF2YVNjcmlwdENvcmUveWFyci9S
ZWdleEludGVycHJldGVyLmgKaW5kZXggZjc2MWNjYy4uZDk2OWYyOSAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUveWFyci9SZWdleEludGVycHJldGVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
eWFyci9SZWdleEludGVycHJldGVyLmgKQEAgLTM2Miw3ICszNjIsNiBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxDaGFyYWN0ZXJDbGFzcyo+IG1fdXNlckNoYXJhY3RlckNsYXNzZXM7CiB9OwogCi1Q
YXNzT3duUHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGVSZWdleChjb25zdCBVU3RyaW5n
JiBwYXR0ZXJuLCB1bnNpZ25lZCYgbnVtU3VicGF0dGVybnMsIGNvbnN0IGNoYXIqJiBlcnJvciwg
QnVtcFBvaW50ZXJBbGxvY2F0b3IqLCBib29sIGlnbm9yZUNhc2UgPSBmYWxzZSwgYm9vbCBtdWx0
aWxpbmUgPSBmYWxzZSk7CiBQYXNzT3duUHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGVS
ZWdleChSZWdleFBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxsb2NhdG9yKik7CiBpbnQg
aW50ZXJwcmV0UmVnZXgoQnl0ZWNvZGVQYXR0ZXJuKiB2X3JlZ2V4LCBjb25zdCBVQ2hhciogaW5w
dXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0KTsKIApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUveWFyci9SZWdleEpJVC5jcHAgYi9KYXZhU2NyaXB0Q29y
ZS95YXJyL1JlZ2V4SklULmNwcAppbmRleCBjMmJlMDU2Li5lZDFlYzg2IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4SklULmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS95YXJy
L1JlZ2V4SklULmNwcApAQCAtMzAsOCArMzAsNiBAQAogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5o
IgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgot
I2luY2x1ZGUgIlJlZ2V4Q29tcGlsZXIuaCIKLSNpbmNsdWRlICJSZWdleEludGVycHJldGVyLmgi
IC8vIHRlbXBvcmFyeSwgcmVtb3ZlIHdoZW4gZmFsbGJhY2sgaXMgcmVtb3ZlZC4KIAogI2lmIEVO
QUJMRShZQVJSX0pJVCkKIApAQCAtMTUxOCwxMSArMTUxNiw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHBhdGNoQnVmZmVyLnBhdGNoKG1fYmFja3RyYWNrUmVjb3Jkc1tpXS5kYXRhTGFiZWwsIHBh
dGNoQnVmZmVyLmxvY2F0aW9uT2YobV9iYWNrdHJhY2tSZWNvcmRzW2ldLmJhY2t0cmFja0xvY2F0
aW9uKSk7CiAKICAgICAgICAgaml0T2JqZWN0LnNldChwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUo
KSk7Ci0gICAgfQotCi0gICAgYm9vbCBzaG91bGRGYWxsQmFjaygpCi0gICAgewotICAgICAgICBy
ZXR1cm4gbV9zaG91bGRGYWxsQmFjazsKKyAgICAgICAgaml0T2JqZWN0LnNldEZhbGxCYWNrKG1f
c2hvdWxkRmFsbEJhY2spOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE1MzEsMjMgKzE1MjUsMTMg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8QWx0ZXJuYXRpdmVCYWNrdHJhY2tSZWNvcmQ+IG1fYmFj
a3RyYWNrUmVjb3JkczsKIH07CiAKLXZvaWQgaml0Q29tcGlsZVJlZ2V4KEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgUmVnZXhDb2RlQmxvY2smIGppdE9iamVjdCwgY29uc3QgVVN0cmluZyYgcGF0
dGVyblN0cmluZywgdW5zaWduZWQmIG51bVN1YnBhdHRlcm5zLCBjb25zdCBjaGFyKiYgZXJyb3Is
IEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGJvb2wgaWdub3JlQ2FzZSwgYm9vbCBt
dWx0aWxpbmUpCit2b2lkIGppdENvbXBpbGVSZWdleChSZWdleFBhdHRlcm4mIHBhdHRlcm4sIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgUmVnZXhDb2RlQmxvY2smIGppdE9iamVjdCkKIHsKLSAg
ICBSZWdleFBhdHRlcm4gcGF0dGVybihpZ25vcmVDYXNlLCBtdWx0aWxpbmUpOwotICAgIGlmICgo
ZXJyb3IgPSBjb21waWxlUmVnZXgocGF0dGVyblN0cmluZywgcGF0dGVybikpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbnVtU3VicGF0dGVybnMgPSBwYXR0ZXJuLm1fbnVtU3VicGF0dGVybnM7Ci0K
LSAgICBpZiAoIXBhdHRlcm4ubV9jb250YWluc0JhY2tyZWZlcmVuY2VzICYmIGdsb2JhbERhdGEt
PmNhblVzZUpJVCgpKSB7Ci0gICAgICAgIFJlZ2V4R2VuZXJhdG9yIGdlbmVyYXRvcihwYXR0ZXJu
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmNvbXBpbGUoZ2xvYmFsRGF0YSwgaml0T2JqZWN0KTsKLSAg
ICAgICAgaWYgKCFnZW5lcmF0b3Iuc2hvdWxkRmFsbEJhY2soKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBqaXRPYmplY3Quc2V0RmFsbGJhY2soYnl0ZUNvbXBpbGVSZWdleChw
YXR0ZXJuLCBhbGxvY2F0b3IpKTsKKyAgICBSZWdleEdlbmVyYXRvciBnZW5lcmF0b3IocGF0dGVy
bik7CisgICAgZ2VuZXJhdG9yLmNvbXBpbGUoZ2xvYmFsRGF0YSwgaml0T2JqZWN0KTsKIH0KIAor
CiB9fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhKSVQu
aCBiL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhKSVQuaAppbmRleCBjNGMzODJjLi5kZDliMzg0
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4SklULmgKKysrIGIvSmF2YVNj
cmlwdENvcmUveWFyci9SZWdleEpJVC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKFlB
UlJfSklUKQogCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKLSNpbmNsdWRlICJSZWdleElu
dGVycHJldGVyLmgiIC8vIHRlbXBvcmFyeSwgcmVtb3ZlIHdoZW4gZmFsbGJhY2sgaXMgcmVtb3Zl
ZC4KICNpbmNsdWRlICJSZWdleFBhdHRlcm4uaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCiAKQEAg
LTUxLDcgKzUwLDcgQEAgY2xhc3MgUmVnZXhDb2RlQmxvY2sgewogCiBwdWJsaWM6CiAgICAgUmVn
ZXhDb2RlQmxvY2soKQotICAgICAgICA6IG1fbmVlZEZhbGxiYWNrKGZhbHNlKQorICAgICAgICA6
IG1fbmVlZEZhbGxCYWNrKGZhbHNlKQogICAgIHsKICAgICB9CiAKQEAgLTU5LDE1ICs1OCw5IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgQnl0ZWNvZGVQYXR0ZXJuKiBnZXRGYWxsYmFj
aygpIHsgcmV0dXJuIG1fZmFsbGJhY2suZ2V0KCk7IH0KLSAgICBib29sIGlzRmFsbGJhY2soKSB7
IHJldHVybiBtX25lZWRGYWxsYmFjazsgfQotICAgIHZvaWQgc2V0RmFsbGJhY2soUGFzc093blB0
cjxCeXRlY29kZVBhdHRlcm4+IGZhbGxiYWNrKQotICAgIHsKLSAgICAgICAgbV9mYWxsYmFjayA9
IGZhbGxiYWNrOwotICAgICAgICBtX25lZWRGYWxsYmFjayA9IHRydWU7Ci0gICAgfQotCi0gICAg
Ym9vbCBvcGVyYXRvciEoKSB7IHJldHVybiAoIW1fcmVmLm1fY29kZS5leGVjdXRhYmxlQWRkcmVz
cygpICYmICFtX2ZhbGxiYWNrKTsgfQorICAgIHZvaWQgc2V0RmFsbEJhY2soYm9vbCBmYWxsYmFj
aykgeyBtX25lZWRGYWxsQmFjayA9IGZhbGxiYWNrOyB9CisgICAgYm9vbCBpc0ZhbGxCYWNrKCkg
eyByZXR1cm4gbV9uZWVkRmFsbEJhY2s7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIHsgcmV0dXJu
ICghbV9yZWYubV9jb2RlLmV4ZWN1dGFibGVBZGRyZXNzKCkpOyB9CiAgICAgdm9pZCBzZXQoTWFj
cm9Bc3NlbWJsZXI6OkNvZGVSZWYgcmVmKSB7IG1fcmVmID0gcmVmOyB9CiAKICAgICBpbnQgZXhl
Y3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgs
IGludCogb3V0cHV0KQpAQCAtODEsMTcgKzc0LDEzIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q29kZVJlZiBtX3JlZjsKLSAgICBPd25QdHI8WWFycjo6Qnl0ZWNv
ZGVQYXR0ZXJuPiBtX2ZhbGxiYWNrOwotICAgIGJvb2wgbV9uZWVkRmFsbGJhY2s7CisgICAgYm9v
bCBtX25lZWRGYWxsQmFjazsKIH07CiAKLXZvaWQgaml0Q29tcGlsZVJlZ2V4KEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgUmVnZXhDb2RlQmxvY2smIGppdE9iamVjdCwgY29uc3QgVVN0cmluZyYg
cGF0dGVybiwgdW5zaWduZWQmIG51bVN1YnBhdHRlcm5zLCBjb25zdCBjaGFyKiYgZXJyb3IsIEJ1
bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGJvb2wgaWdub3JlQ2FzZSA9IGZhbHNlLCBi
b29sIG11bHRpbGluZSA9IGZhbHNlKTsKK3ZvaWQgaml0Q29tcGlsZVJlZ2V4KFJlZ2V4UGF0dGVy
biYgcGF0dGVybiwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBSZWdleENvZGVCbG9jayYgaml0
T2JqZWN0KTsKIAogaW5saW5lIGludCBleGVjdXRlUmVnZXgoUmVnZXhDb2RlQmxvY2smIGppdE9i
amVjdCwgY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3Ro
LCBpbnQqIG91dHB1dCkKIHsKLSAgICBpZiAoaml0T2JqZWN0LmlzRmFsbGJhY2soKSkKLSAgICAg
ICAgcmV0dXJuIChpbnRlcnByZXRSZWdleChqaXRPYmplY3QuZ2V0RmFsbGJhY2soKSwgaW5wdXQs
IHN0YXJ0LCBsZW5ndGgsIG91dHB1dCkpOwotCiAgICAgcmV0dXJuIGppdE9iamVjdC5leGVjdXRl
KGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQpOwogfQogCi0tIAoxLjcuMi4yCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75138</attachid>
            <date>2010-11-30 06:44:23 -0800</date>
            <delta_ts>2010-12-02 05:38:19 -0800</delta_ts>
            <desc>proposed patch v2</desc>
            <filename>0001-move-fallback-v2.patch</filename>
            <type>text/plain</type>
            <size>14047</size>
            <attacher name="Peter Varga">pvarga</attacher>
            
              <data encoding="base64">RnJvbSAwYzNkMjU1NGRjMTg1NTgzNWUyMTU2ZTEyNDU2NjU0MTg5YTU1Yzg2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBWYXJnYSA8cHZhcmdhQGluZi51LXN6ZWdlZC5odT4K
RGF0ZTogVHVlLCAzMCBOb3YgMjAxMCAwNjo0MTozNCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIG1v
dmUgZmFsbGJhY2sgdjIKCi0tLQogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICB8ICAgMjYgKysrKysrKysrKysrKysKIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmNwcCAgICAgICAgfCAgIDU1ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oICAgICAgICAgIHwgICAxMyArKysrKy0tCiBKYXZhU2Ny
aXB0Q29yZS95YXJyL1JlZ2V4SW50ZXJwcmV0ZXIuY3BwIHwgICAxNCAtLS0tLS0tCiBKYXZhU2Ny
aXB0Q29yZS95YXJyL1JlZ2V4SW50ZXJwcmV0ZXIuaCAgIHwgICAgMSAtCiBKYXZhU2NyaXB0Q29y
ZS95YXJyL1JlZ2V4SklULmNwcCAgICAgICAgIHwgICAyNiArKystLS0tLS0tLS0tLQogSmF2YVNj
cmlwdENvcmUveWFyci9SZWdleEpJVC5oICAgICAgICAgICB8ICAgMjIgKysrLS0tLS0tLS0tCiA3
IGZpbGVzIGNoYW5nZWQsIDc3IGluc2VydGlvbnMoKyksIDgwIGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwppbmRleCA4YzY4NWNkLi5kY2FlOTVhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIw
MTAtMTEtMzAgIFBldGVyIFZhcmdhICA8cHZhcmdhQGluZi51LXN6ZWdlZC5odT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHJlZ2V4IHBhcnNp
bmcgYW5kIGZhbGxiYWNrIGhhbmRsaW5nIHRvIHJ1bnRpbWUvUmVnRXhwLmNwcAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwMTUKKworICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpSZWdFeHApOgorICAg
ICAgICAoSlNDOjpSZWdFeHA6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGls
ZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0Y2gpOgorICAgICAgICAoSlNDOjpSZWdFeHA6
OnByaW50VHJhY2VEYXRhKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAo
SlNDOjpSZWdFeHA6OnBhdHRlcm4pOgorICAgICAgICAqIHlhcnIvUmVnZXhJbnRlcnByZXRlci5j
cHA6CisgICAgICAgICogeWFyci9SZWdleEludGVycHJldGVyLmg6CisgICAgICAgICogeWFyci9S
ZWdleEpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4R2VuZXJhdG9yOjpjb21waWxl
KToKKyAgICAgICAgKEpTQzo6WWFycjo6aml0Q29tcGlsZVJlZ2V4KToKKyAgICAgICAgKiB5YXJy
L1JlZ2V4SklULmg6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4Q29kZUJsb2NrOjpSZWdleENv
ZGVCbG9jayk6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4Q29kZUJsb2NrOjpzZXRGYWxsQmFj
ayk6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4Q29kZUJsb2NrOjppc0ZhbGxCYWNrKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6ZXhlY3V0ZVJlZ2V4KToKKwogMjAxMC0xMS0yOSAgU3RldmUgRmFs
a2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4
IChwYXJ0IDEpLiBVc2UgY29ycmVjdCBlbnZpcm9ubWVudCB2YXJpYWJsZSBzeW50YXggaW4gY21k
IGZpbGVzLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCmluZGV4IGEzM2ZhOTEuLjliMmUzZjMg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTIsNiArMiw3IEBACiAgKiAgQ29weXJp
Z2h0IChDKSAxOTk5LTIwMDEsIDIwMDQgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAq
ICBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMTAgUGV0ZXIgVmFyZ2EgKHB2YXJnYUBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJz
aXR5IG9mIFN6ZWdlZAogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjksMjQgKzMwLDIxIEBACiAj
aW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAKICNpbmNsdWRlICJ5YXJyL1JlZ2V4Q29tcGls
ZXIuaCIKLSNpZiBFTkFCTEUoWUFSUl9KSVQpCiAjaW5jbHVkZSAieWFyci9SZWdleEpJVC5oIgot
I2Vsc2UKICNpbmNsdWRlICJ5YXJyL1JlZ2V4SW50ZXJwcmV0ZXIuaCIKLSNlbmRpZgorI2luY2x1
ZGUgInlhcnIvUmVnZXhQYXR0ZXJuLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgUmVn
RXhwUmVwcmVzZW50YXRpb24gewogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICBZYXJyOjpSZWdl
eENvZGVCbG9jayBtX3JlZ0V4cEpJVENvZGU7Ci0jZWxzZQotICAgIE93blB0cjxZYXJyOjpCeXRl
Y29kZVBhdHRlcm4+IG1fcmVnRXhwQnl0ZWNvZGU7CiAjZW5kaWYKKyAgICBPd25QdHI8WWFycjo6
Qnl0ZWNvZGVQYXR0ZXJuPiBtX3JlZ0V4cEJ5dGVjb2RlOwogfTsKIAotaW5saW5lIFJlZ0V4cDo6
UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwg
Y29uc3QgVVN0cmluZyYgZmxhZ3MpCi0gICAgOiBtX3BhdHRlcm4ocGF0dGVybikKK2lubGluZSBS
ZWdFeHA6OlJlZ0V4cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBh
dHRlcm5TdHJpbmcsIGNvbnN0IFVTdHJpbmcmIGZsYWdzKQorICAgIDogbV9wYXR0ZXJuU3RyaW5n
KHBhdHRlcm5TdHJpbmcpCiAgICAgLCBtX2ZsYWdCaXRzKDApCiAgICAgLCBtX2NvbnN0cnVjdGlv
bkVycm9yKDApCiAgICAgLCBtX251bVN1YnBhdHRlcm5zKDApCkBAIC02NiwyOSArNjQsNDIgQEAg
aW5saW5lIFJlZ0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0
cmluZyYgcGF0dGVybiwgY29uc3QgVVMKICAgICAgICAgaWYgKGZsYWdzLmZpbmQoJ20nKSAhPSBu
b3RGb3VuZCkKICAgICAgICAgICAgIG1fZmxhZ0JpdHMgfD0gTXVsdGlsaW5lOwogICAgIH0KLSAg
ICBjb21waWxlKGdsb2JhbERhdGEpOworCisgICAgbV9zdGF0ZSA9IGNvbXBpbGUoZ2xvYmFsRGF0
YSk7CiB9CiAKIFJlZ0V4cDo6flJlZ0V4cCgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8UmVnRXhwPiBS
ZWdFeHA6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBh
dHRlcm4sIGNvbnN0IFVTdHJpbmcmIGZsYWdzKQorUGFzc1JlZlB0cjxSZWdFeHA+IFJlZ0V4cDo6
Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVyblN0
cmluZywgY29uc3QgVVN0cmluZyYgZmxhZ3MpCiB7Ci0gICAgUmVmUHRyPFJlZ0V4cD4gcmVzID0g
YWRvcHRSZWYobmV3IFJlZ0V4cChnbG9iYWxEYXRhLCBwYXR0ZXJuLCBmbGFncykpOworICAgIFJl
ZlB0cjxSZWdFeHA+IHJlcyA9IGFkb3B0UmVmKG5ldyBSZWdFeHAoZ2xvYmFsRGF0YSwgcGF0dGVy
blN0cmluZywgZmxhZ3MpKTsKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgZ2xvYmFs
RGF0YS0+YWRkUmVnRXhwVG9UcmFjZShyZXMpOwogI2VuZGlmCiAgICAgcmV0dXJuIHJlcy5yZWxl
YXNlKCk7CiB9CiAKLXZvaWQgUmVnRXhwOjpjb21waWxlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSkKK1JlZ0V4cDo6UmVnRXhwU3RhdGUgUmVnRXhwOjpjb21waWxlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKIHsKKyAgICBZYXJyOjpSZWdleFBhdHRlcm4gcGF0dGVybihpZ25vcmVDYXNlKCks
IG11bHRpbGluZSgpKTsKKworICAgIGlmICgobV9jb25zdHJ1Y3Rpb25FcnJvciA9IFlhcnI6OmNv
bXBpbGVSZWdleChtX3BhdHRlcm5TdHJpbmcsIHBhdHRlcm4pKSkKKyAgICAgICAgcmV0dXJuIFBh
cnNlRXJyb3I7CisKKyAgICBtX251bVN1YnBhdHRlcm5zID0gcGF0dGVybi5tX251bVN1YnBhdHRl
cm5zOworCiAjaWYgRU5BQkxFKFlBUlJfSklUKQotICAgIFlhcnI6OmppdENvbXBpbGVSZWdleChn
bG9iYWxEYXRhLCBtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cEpJVENvZGUsIG1fcGF0dGVybiwg
bV9udW1TdWJwYXR0ZXJucywgbV9jb25zdHJ1Y3Rpb25FcnJvciwgJmdsb2JhbERhdGEtPm1fcmVn
ZXhBbGxvY2F0b3IsIGlnbm9yZUNhc2UoKSwgbXVsdGlsaW5lKCkpOwotI2Vsc2UKLSAgICBtX3Jl
cHJlc2VudGF0aW9uLT5tX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNvbXBpbGVSZWdleCht
X3BhdHRlcm4sIG1fbnVtU3VicGF0dGVybnMsIG1fY29uc3RydWN0aW9uRXJyb3IsICZnbG9iYWxE
YXRhLT5tX3JlZ2V4QWxsb2NhdG9yLCBpZ25vcmVDYXNlKCksIG11bHRpbGluZSgpKTsKKyAgICBp
ZiAoIXBhdHRlcm4ubV9jb250YWluc0JhY2tyZWZlcmVuY2VzICYmIGdsb2JhbERhdGEtPmNhblVz
ZUpJVCgpKSB7CisgICAgICAgIFlhcnI6OmppdENvbXBpbGVSZWdleChwYXR0ZXJuLCBnbG9iYWxE
YXRhLCBtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cEpJVENvZGUpOworICAgICAgICBpZiAoIW1f
cmVwcmVzZW50YXRpb24tPm1fcmVnRXhwSklUQ29kZS5pc0ZhbGxCYWNrKCkpCisgICAgICAgICAg
ICByZXR1cm4gSklUQ29kZTsKKyAgICB9CiAjZW5kaWYKKworICAgIG1fcmVwcmVzZW50YXRpb24t
Pm1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZVJlZ2V4KHBhdHRlcm4sICZnbG9i
YWxEYXRhLT5tX3JlZ2V4QWxsb2NhdG9yKTsKKyAgICByZXR1cm4gQnl0ZUNvZGU7CiB9CiAKIGlu
dCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgVmVjdG9y
PGludCwgMzI+KiBvdmVjdG9yKQpAQCAtMTAzLDExICsxMTQsNyBAQCBpbnQgUmVnRXhwOjptYXRj
aChjb25zdCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiogb3Zl
Y3RvcikKICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSA+IHMubGVu
Z3RoKCkgfHwgcy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0jaWYgRU5BQkxFKFlB
UlJfSklUKQotICAgIGlmICghIW1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwSklUQ29kZSkgewot
I2Vsc2UKLSAgICBpZiAobV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHBCeXRlY29kZSkgewotI2Vu
ZGlmCisgICAgaWYgKG1fc3RhdGUgIT0gUGFyc2VFcnJvcikgewogICAgICAgICBpbnQgb2Zmc2V0
VmVjdG9yU2l6ZSA9IChtX251bVN1YnBhdHRlcm5zICsgMSkgKiAyOwogICAgICAgICBpbnQqIG9m
ZnNldFZlY3RvcjsKICAgICAgICAgVmVjdG9yPGludCwgMzI+IG5vblJldHVybmVkT3ZlY3RvcjsK
QEAgLTEyNiwxMSArMTMzLDEzIEBAIGludCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcmIHMs
IGludCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVjdG9yKQogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGogPSAwLCBpID0gMDsgaSA8IG1fbnVtU3VicGF0dGVybnMgKyAxOyBqICs9IDIs
IGkrKykgICAgICAgICAgICAKICAgICAgICAgICAgIG9mZnNldFZlY3RvcltqXSA9IC0xOwogCisg
ICAgICAgIGludCByZXN1bHQ7CiAjaWYgRU5BQkxFKFlBUlJfSklUKQotICAgICAgICBpbnQgcmVz
dWx0ID0gWWFycjo6ZXhlY3V0ZVJlZ2V4KG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwSklUQ29k
ZSwgcy5jaGFyYWN0ZXJzKCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3Ip
OwotI2Vsc2UKLSAgICAgICAgaW50IHJlc3VsdCA9IFlhcnI6OmludGVycHJldFJlZ2V4KG1fcmVw
cmVzZW50YXRpb24tPm1fcmVnRXhwQnl0ZWNvZGUuZ2V0KCksIHMuY2hhcmFjdGVycygpLCBzdGFy
dE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yKTsKKyAgICAgICAgaWYgKG1fc3RhdGUg
PT0gSklUQ29kZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IFlhcnI6OmV4ZWN1dGVSZWdleChtX3Jl
cHJlc2VudGF0aW9uLT5tX3JlZ0V4cEpJVENvZGUsIHMuY2hhcmFjdGVycygpLCBzdGFydE9mZnNl
dCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yKTsKKyAgICAgICAgZWxzZQogI2VuZGlmCisgICAg
ICAgICAgICByZXN1bHQgPSBZYXJyOjppbnRlcnByZXRSZWdleChtX3JlcHJlc2VudGF0aW9uLT5t
X3JlZ0V4cEJ5dGVjb2RlLmdldCgpLCBzLmNoYXJhY3RlcnMoKSwgc3RhcnRPZmZzZXQsIHMubGVu
Z3RoKCksIG9mZnNldFZlY3Rvcik7CiAKICAgICAgICAgQVNTRVJUKHJlc3VsdCA+PSAtMSk7Owog
ICAgICAgICAKQEAgLTE2Miw3ICsxNzEsNyBAQCBpbnQgUmVnRXhwOjptYXRjaChjb25zdCBVU3Ry
aW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiogb3ZlY3RvcikKICAgICAg
ICAgWWFycjo6UmVnZXhDb2RlQmxvY2smIGNvZGVCbG9jayA9IG1fcmVwcmVzZW50YXRpb24tPm1f
cmVnRXhwSklUQ29kZTsKIAogICAgICAgICBjaGFyIGppdEFkZHJbMjBdOwotICAgICAgICBpZiAo
Y29kZUJsb2NrLmdldEZhbGxiYWNrKCkpCisgICAgICAgIGlmIChtX3N0YXRlID09IEpJVENvZGUp
CiAgICAgICAgICAgICBzcHJpbnRmKGppdEFkZHIsICJmYWxsYmFjayIpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBzcHJpbnRmKGppdEFkZHIsICIweCUwMTRseCIsIHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQgbG9uZyBpbnQ+KGNvZGVCbG9jay5nZXRBZGRyKCkpKTsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5oCmluZGV4IGU2ZTJmYmMuLjhmMzNmNTcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
aApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpZ25vcmVD
YXNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnQml0cyAmIElnbm9yZUNhc2U7IH0KICAgICAgICAg
Ym9vbCBtdWx0aWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdCaXRzICYgTXVsdGlsaW5lOyB9
CiAKLSAgICAgICAgY29uc3QgVVN0cmluZyYgcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fcGF0
dGVybjsgfQorICAgICAgICBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4g
bV9wYXR0ZXJuU3RyaW5nOyB9CiAKICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gIW1fY29uc3RydWN0aW9uRXJyb3I7IH0KICAgICAgICAgY29uc3QgY2hhciogZXJyb3JNZXNz
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25FcnJvcjsgfQpAQCAtNTYsMTEgKzU2
LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ0V4cChKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFVTdHJp
bmcmIGZsYWdzKTsKIAotICAgICAgICB2b2lkIGNvbXBpbGUoSlNHbG9iYWxEYXRhKik7CisgICAg
ICAgIGVudW0gUmVnRXhwU3RhdGUgeworICAgICAgICAgICAgUGFyc2VFcnJvciwKKyAgICAgICAg
ICAgIEpJVENvZGUsCisgICAgICAgICAgICBCeXRlQ29kZQorICAgICAgICB9IG1fc3RhdGU7CiAK
LSAgICAgICAgZW51bSBGbGFnQml0cyB7IEdsb2JhbCA9IDEsIElnbm9yZUNhc2UgPSAyLCBNdWx0
aWxpbmUgPSA0IH07CisgICAgICAgIFJlZ0V4cFN0YXRlIGNvbXBpbGUoSlNHbG9iYWxEYXRhKik7
CiAKLSAgICAgICAgVVN0cmluZyBtX3BhdHRlcm47IC8vIEZJWE1FOiBKdXN0IGRlY29tcGlsZSBt
X3JlZ0V4cCBpbnN0ZWFkIG9mIHN0b3JpbmcgdGhpcy4KKyAgICAgICAgZW51bSBGbGFnQml0cyB7
IEdsb2JhbCA9IDEsIElnbm9yZUNhc2UgPSAyLCBNdWx0aWxpbmUgPSA0IH07CisgICAgICAgIFVT
dHJpbmcgbV9wYXR0ZXJuU3RyaW5nOwogICAgICAgICBpbnQgbV9mbGFnQml0czsKICAgICAgICAg
Y29uc3QgY2hhciogbV9jb25zdHJ1Y3Rpb25FcnJvcjsKICAgICAgICAgdW5zaWduZWQgbV9udW1T
dWJwYXR0ZXJuczsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhJbnRlcnBy
ZXRlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4SW50ZXJwcmV0ZXIuY3BwCmluZGV4
IDE2NDE1OGUuLjljNmU0ODggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhJ
bnRlcnByZXRlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUveWFyci9SZWdleEludGVycHJldGVy
LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJl
Z2V4SW50ZXJwcmV0ZXIuaCIKIAotI2luY2x1ZGUgIlJlZ2V4Q29tcGlsZXIuaCIKICNpbmNsdWRl
ICJSZWdleFBhdHRlcm4uaCIKICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4K
IApAQCAtMTg4NSwxOSArMTg4NCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPEJ5dGVEaXNqdW5j
dGlvbio+IG1fYWxsUGFyZW50aGVzZXNJbmZvOwogfTsKIAotCi1QYXNzT3duUHRyPEJ5dGVjb2Rl
UGF0dGVybj4gYnl0ZUNvbXBpbGVSZWdleChjb25zdCBVU3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCB1
bnNpZ25lZCYgbnVtU3VicGF0dGVybnMsIGNvbnN0IGNoYXIqJiBlcnJvciwgQnVtcFBvaW50ZXJB
bGxvY2F0b3IqIGFsbG9jYXRvciwgYm9vbCBpZ25vcmVDYXNlLCBib29sIG11bHRpbGluZSkKLXsK
LSAgICBSZWdleFBhdHRlcm4gcGF0dGVybihpZ25vcmVDYXNlLCBtdWx0aWxpbmUpOwotCi0gICAg
aWYgKChlcnJvciA9IGNvbXBpbGVSZWdleChwYXR0ZXJuU3RyaW5nLCBwYXR0ZXJuKSkpCi0gICAg
ICAgIHJldHVybiBQYXNzT3duUHRyPEJ5dGVjb2RlUGF0dGVybj4oKTsKLQotICAgIG51bVN1YnBh
dHRlcm5zID0gcGF0dGVybi5tX251bVN1YnBhdHRlcm5zOwotCi0gICAgcmV0dXJuIEJ5dGVDb21w
aWxlcihwYXR0ZXJuKS5jb21waWxlKGFsbG9jYXRvcik7Ci19Ci0KIFBhc3NPd25QdHI8Qnl0ZWNv
ZGVQYXR0ZXJuPiBieXRlQ29tcGlsZVJlZ2V4KFJlZ2V4UGF0dGVybiYgcGF0dGVybiwgQnVtcFBv
aW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICByZXR1cm4gQnl0ZUNvbXBpbGVyKHBh
dHRlcm4pLmNvbXBpbGUoYWxsb2NhdG9yKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3lh
cnIvUmVnZXhJbnRlcnByZXRlci5oIGIvSmF2YVNjcmlwdENvcmUveWFyci9SZWdleEludGVycHJl
dGVyLmgKaW5kZXggMmUyMzQ3Mi4uMzk4MGFiOSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
eWFyci9SZWdleEludGVycHJldGVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUveWFyci9SZWdleElu
dGVycHJldGVyLmgKQEAgLTM2NCw3ICszNjQsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxDaGFy
YWN0ZXJDbGFzcyo+IG1fdXNlckNoYXJhY3RlckNsYXNzZXM7CiB9OwogCi1QYXNzT3duUHRyPEJ5
dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGVSZWdleChjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCB1
bnNpZ25lZCYgbnVtU3VicGF0dGVybnMsIGNvbnN0IGNoYXIqJiBlcnJvciwgQnVtcFBvaW50ZXJB
bGxvY2F0b3IqLCBib29sIGlnbm9yZUNhc2UgPSBmYWxzZSwgYm9vbCBtdWx0aWxpbmUgPSBmYWxz
ZSk7CiBQYXNzT3duUHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGVSZWdleChSZWdleFBh
dHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxsb2NhdG9yKik7CiBpbnQgaW50ZXJwcmV0UmVn
ZXgoQnl0ZWNvZGVQYXR0ZXJuKiB2X3JlZ2V4LCBjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0KTsKIApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUveWFyci9SZWdleEpJVC5jcHAgYi9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4
SklULmNwcAppbmRleCBhY2JkNDU4Li45ZDAyMmY1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1JlZ2V4SklULmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4SklULmNw
cApAQCAtMzAsOCArMzAsNiBAQAogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUg
IkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgotI2luY2x1ZGUgIlJl
Z2V4Q29tcGlsZXIuaCIKLSNpbmNsdWRlICJSZWdleEludGVycHJldGVyLmgiIC8vIHRlbXBvcmFy
eSwgcmVtb3ZlIHdoZW4gZmFsbGJhY2sgaXMgcmVtb3ZlZC4KIAogI2lmIEVOQUJMRShZQVJSX0pJ
VCkKIApAQCAtMTQ5NiwxMSArMTQ5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHBhdGNoQnVm
ZmVyLnBhdGNoKG1fYmFja3RyYWNrUmVjb3Jkc1tpXS5kYXRhTGFiZWwsIHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2YobV9iYWNrdHJhY2tSZWNvcmRzW2ldLmJhY2t0cmFja0xvY2F0aW9uKSk7CiAKICAg
ICAgICAgaml0T2JqZWN0LnNldChwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKSk7Ci0gICAgfQot
Ci0gICAgYm9vbCBzaG91bGRGYWxsQmFjaygpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zaG91
bGRGYWxsQmFjazsKKyAgICAgICAgaml0T2JqZWN0LnNldEZhbGxCYWNrKG1fc2hvdWxkRmFsbEJh
Y2spOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE1MDksMjMgKzE1MDMsMTMgQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8QWx0ZXJuYXRpdmVCYWNrdHJhY2tSZWNvcmQ+IG1fYmFja3RyYWNrUmVjb3Jk
czsKIH07CiAKLXZvaWQgaml0Q29tcGlsZVJlZ2V4KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
UmVnZXhDb2RlQmxvY2smIGppdE9iamVjdCwgY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZywg
dW5zaWduZWQmIG51bVN1YnBhdHRlcm5zLCBjb25zdCBjaGFyKiYgZXJyb3IsIEJ1bXBQb2ludGVy
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGJvb2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUpCit2
b2lkIGppdENvbXBpbGVSZWdleChSZWdleFBhdHRlcm4mIHBhdHRlcm4sIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgUmVnZXhDb2RlQmxvY2smIGppdE9iamVjdCkKIHsKLSAgICBSZWdleFBhdHRl
cm4gcGF0dGVybihpZ25vcmVDYXNlLCBtdWx0aWxpbmUpOwotICAgIGlmICgoZXJyb3IgPSBjb21w
aWxlUmVnZXgocGF0dGVyblN0cmluZywgcGF0dGVybikpKQotICAgICAgICByZXR1cm47Ci0gICAg
bnVtU3VicGF0dGVybnMgPSBwYXR0ZXJuLm1fbnVtU3VicGF0dGVybnM7Ci0KLSAgICBpZiAoIXBh
dHRlcm4ubV9jb250YWluc0JhY2tyZWZlcmVuY2VzICYmIGdsb2JhbERhdGEtPmNhblVzZUpJVCgp
KSB7Ci0gICAgICAgIFJlZ2V4R2VuZXJhdG9yIGdlbmVyYXRvcihwYXR0ZXJuKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmNvbXBpbGUoZ2xvYmFsRGF0YSwgaml0T2JqZWN0KTsKLSAgICAgICAgaWYgKCFn
ZW5lcmF0b3Iuc2hvdWxkRmFsbEJhY2soKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBqaXRPYmplY3Quc2V0RmFsbGJhY2soYnl0ZUNvbXBpbGVSZWdleChwYXR0ZXJuLCBhbGxv
Y2F0b3IpKTsKKyAgICBSZWdleEdlbmVyYXRvciBnZW5lcmF0b3IocGF0dGVybik7CisgICAgZ2Vu
ZXJhdG9yLmNvbXBpbGUoZ2xvYmFsRGF0YSwgaml0T2JqZWN0KTsKIH0KIAorCiB9fQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhKSVQuaCBiL0phdmFTY3Jp
cHRDb3JlL3lhcnIvUmVnZXhKSVQuaAppbmRleCBjNGMzODJjLi41ZTNkY2ExIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ2V4SklULmgKKysrIGIvSmF2YVNjcmlwdENvcmUveWFy
ci9SZWdleEpJVC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKFlBUlJfSklUKQogCiAj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKLSNpbmNsdWRlICJSZWdleEludGVycHJldGVyLmgi
IC8vIHRlbXBvcmFyeSwgcmVtb3ZlIHdoZW4gZmFsbGJhY2sgaXMgcmVtb3ZlZC4KICNpbmNsdWRl
ICJSZWdleFBhdHRlcm4uaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCiAKQEAgLTUxLDcgKzUwLDcg
QEAgY2xhc3MgUmVnZXhDb2RlQmxvY2sgewogCiBwdWJsaWM6CiAgICAgUmVnZXhDb2RlQmxvY2so
KQotICAgICAgICA6IG1fbmVlZEZhbGxiYWNrKGZhbHNlKQorICAgICAgICA6IG1fbmVlZEZhbGxC
YWNrKGZhbHNlKQogICAgIHsKICAgICB9CiAKQEAgLTU5LDE1ICs1OCw4IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgQnl0ZWNvZGVQYXR0ZXJuKiBnZXRGYWxsYmFjaygpIHsgcmV0dXJu
IG1fZmFsbGJhY2suZ2V0KCk7IH0KLSAgICBib29sIGlzRmFsbGJhY2soKSB7IHJldHVybiBtX25l
ZWRGYWxsYmFjazsgfQotICAgIHZvaWQgc2V0RmFsbGJhY2soUGFzc093blB0cjxCeXRlY29kZVBh
dHRlcm4+IGZhbGxiYWNrKQotICAgIHsKLSAgICAgICAgbV9mYWxsYmFjayA9IGZhbGxiYWNrOwot
ICAgICAgICBtX25lZWRGYWxsYmFjayA9IHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRv
ciEoKSB7IHJldHVybiAoIW1fcmVmLm1fY29kZS5leGVjdXRhYmxlQWRkcmVzcygpICYmICFtX2Zh
bGxiYWNrKTsgfQorICAgIHZvaWQgc2V0RmFsbEJhY2soYm9vbCBmYWxsYmFjaykgeyBtX25lZWRG
YWxsQmFjayA9IGZhbGxiYWNrOyB9CisgICAgYm9vbCBpc0ZhbGxCYWNrKCkgeyByZXR1cm4gbV9u
ZWVkRmFsbEJhY2s7IH0KICAgICB2b2lkIHNldChNYWNyb0Fzc2VtYmxlcjo6Q29kZVJlZiByZWYp
IHsgbV9yZWYgPSByZWY7IH0KIAogICAgIGludCBleGVjdXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQpCkBAIC04MSwxNyAr
NzMsMTMgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1hY3JvQXNzZW1ibGVyOjpDb2RlUmVm
IG1fcmVmOwotICAgIE93blB0cjxZYXJyOjpCeXRlY29kZVBhdHRlcm4+IG1fZmFsbGJhY2s7Ci0g
ICAgYm9vbCBtX25lZWRGYWxsYmFjazsKKyAgICBib29sIG1fbmVlZEZhbGxCYWNrOwogfTsKIAot
dm9pZCBqaXRDb21waWxlUmVnZXgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBSZWdleENvZGVC
bG9jayYgaml0T2JqZWN0LCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCB1bnNpZ25lZCYgbnVtU3Vi
cGF0dGVybnMsIGNvbnN0IGNoYXIqJiBlcnJvciwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9j
YXRvciwgYm9vbCBpZ25vcmVDYXNlID0gZmFsc2UsIGJvb2wgbXVsdGlsaW5lID0gZmFsc2UpOwor
dm9pZCBqaXRDb21waWxlUmVnZXgoUmVnZXhQYXR0ZXJuJiBwYXR0ZXJuLCBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIFJlZ2V4Q29kZUJsb2NrJiBqaXRPYmplY3QpOwogCiBpbmxpbmUgaW50IGV4
ZWN1dGVSZWdleChSZWdleENvZGVCbG9jayYgaml0T2JqZWN0LCBjb25zdCBVQ2hhciogaW5wdXQs
IHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0KQogewotICAgIGlm
IChqaXRPYmplY3QuaXNGYWxsYmFjaygpKQotICAgICAgICByZXR1cm4gKGludGVycHJldFJlZ2V4
KGppdE9iamVjdC5nZXRGYWxsYmFjaygpLCBpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0KSk7
Ci0KICAgICByZXR1cm4gaml0T2JqZWN0LmV4ZWN1dGUoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91
dHB1dCk7CiB9CiAKLS0gCjEuNy4yLjIKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>