<?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>128570</bug_id>
          
          <creation_ts>2014-02-10 18:03:42 -0800</creation_ts>
          <short_desc>Removing limitation on JSLock’s lockDropDepth</short_desc>
          <delta_ts>2014-02-10 20:44:15 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>979174</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-10 18:03:42 -0800</bug_when>
    <thetext>Now that we’ve switched to using the C stack, we no longer need to limit the lockDropDepth to 2.

For C loop builds which still uses the separate JSStack, The JSLock will enforce ordering for re-grabbing the lock after dropping it.  Ordering is achieved by JSLock::dropAllLocks() stashing away the JSLock:: m_lockDropDepth in its dropper’s DropAllLocks::m_dropDepth before unlocking the lock.  JSLock::grabAllLocks() will ensure that JSLocks::m_lockDropDepth equals its dropper’s DropAllLocks::m_dropDepth before allowing the lock to be re-grabbed.  Otherwise, it will yield and retry again later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979197</commentid>
    <comment_count>1</comment_count>
      <attachid>223785</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-10 18:45:12 -0800</bug_when>
    <thetext>Created attachment 223785
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979198</commentid>
    <comment_count>2</comment_count>
      <attachid>223785</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-10 18:47:22 -0800</bug_when>
    <thetext>Comment on attachment 223785
the patch.

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Now that weâve switched to using the C stack, we no longer need to limit

Will fix the non-ascii character.

&gt; Source/JavaScriptCore/ChangeLog:25
&gt; +        JSLock, yield, and the relock it again later before retrying the check.

typo: “the relock” ==&gt; “then relock”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979199</commentid>
    <comment_count>3</comment_count>
      <attachid>223786</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-10 18:48:51 -0800</bug_when>
    <thetext>Created attachment 223786
patch 2: fixed typos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979201</commentid>
    <comment_count>4</comment_count>
      <attachid>223787</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-10 18:55:55 -0800</bug_when>
    <thetext>Created attachment 223787
patch 3: rebased, and fixed more typo fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979236</commentid>
    <comment_count>5</comment_count>
      <attachid>223787</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-10 20:37:02 -0800</bug_when>
    <thetext>Comment on attachment 223787
patch 3: rebased, and fixed more typo fails.

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

r=me

&gt; Source/JavaScriptCore/runtime/JSLock.h:117
&gt; +            friend class JSLock;

Let&apos;s make the accessor functions public instead of making JSLock a friend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979237</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-10 20:44:15 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r163855: &lt;http://trac.webkit.org/r163855&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223785</attachid>
            <date>2014-02-10 18:45:12 -0800</date>
            <delta_ts>2014-02-10 18:48:51 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-128570.patch</filename>
            <type>text/plain</type>
            <size>13605</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzODQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE0LTAyLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmluZyBsaW1pdGF0aW9uIG9uIEpTTG9ja+KAmXMgbG9ja0Ryb3BEZXB0aC4KKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyODU3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgdGhhdCB3ZeKAmXZlIHN3aXRjaGVkIHRvIHVzaW5n
IHRoZSBDIHN0YWNrLCB3ZSBubyBsb25nZXIgbmVlZCB0byBsaW1pdAorICAgICAgICB0aGUgSlNM
b2NrOjpsb2NrRHJvcERlcHRoIHRvIDIuCisKKyAgICAgICAgRm9yIEMgbG9vcCBidWlsZHMgd2hp
Y2ggc3RpbGwgdXNlcyB0aGUgc2VwYXJhdGUgSlNTdGFjaywgVGhlIEpTTG9jayB3aWxsCisgICAg
ICAgIGVuZm9yY2Ugb3JkZXJpbmcgZm9yIHJlLWdyYWJiaW5nIHRoZSBsb2NrIGFmdGVyIGRyb3Bw
aW5nIGl0LiBSZS1ncmFiYmluZworICAgICAgICBtdXN0IG9jY3VyIGluIHRoZSByZXZlcnNlIG9y
ZGVyIG9mIHRoZSBkcm9wcGluZyBvZiB0aGUgbG9ja3MuCisKKyAgICAgICAgT3JkZXJpbmcgaXMg
YWNoaWV2ZWQgYnkgSlNMb2NrOjpkcm9wQWxsTG9ja3MoKSBzdGFzaGluZyBhd2F5IHRoZQorICAg
ICAgICBKU0xvY2s6OiBtX2xvY2tEcm9wRGVwdGggaW4gaXRzIERyb3BBbGxMb2NrcyBpbnN0YW5j
ZSdzIG1fZHJvcERlcHRoCisgICAgICAgIGJlZm9yZSB1bmxvY2tpbmcgdGhlIGxvY2suIFN1YnNl
cXVlbnRseSwgSlNMb2NrOjpncmFiQWxsTG9ja3MoKSB3aWxsCisgICAgICAgIGVuc3VyZSB0aGF0
IEpTTG9ja3M6Om1fbG9ja0Ryb3BEZXB0aCBlcXVhbHMgaXRzIERyb3BBbGxMb2NrcyBpbnN0YW5j
ZSdzCisgICAgICAgIG1fZHJvcERlcHRoIGJlZm9yZSBhbGxvd2luZyB0aGUgbG9jayB0byBiZSBy
ZS1ncmFiYmVkLiBPdGhlcndpc2UsIGl0CisgICAgICAgIHdpbGwgeWllbGQgZXhlY3V0aW9uIGFu
ZCByZXRyeSBhZ2FpbiBsYXRlci4KKworICAgICAgICBOb3RlOiBiZWNhdXNlIEpTTG9ja3M6Om1f
bG9ja0Ryb3BEZXB0aCBpcyBwcm90ZWN0ZWQgYnkgdGhlIEpTTG9jaydzCisgICAgICAgIG11dGV4
LCBncmFiQWxsTG9ja3MoKSB3aWxsIG9wdGltaXN0aWNhbGx5IGxvY2sgdGhlIEpTTG9jayBiZWZv
cmUgZG9pbmcKKyAgICAgICAgdGhlIGNoZWNrIG9uIG1fbG9ja0Ryb3BEZXB0aC4gSWYgdGhlIGNo
ZWNrIGZhaWxzLCBpdCB3aWxsIHVubG9jayB0aGUKKyAgICAgICAgSlNMb2NrLCB5aWVsZCwgYW5k
IHRoZSByZWxvY2sgaXQgYWdhaW4gbGF0ZXIgYmVmb3JlIHJldHJ5aW5nIHRoZSBjaGVjay4KKyAg
ICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgbV9sb2NrRHJvcERlcHRoIHJlbWFpbnMgdW5kZXIgdGhl
IHByb3RlY3Rpb24gb2YgdGhlCisgICAgICAgIEpTTG9jaydzIG11dGV4LgorCisgICAgICAgICog
cnVudGltZS9KU0xvY2suY3BwOgorICAgICAgICAoSlNDOjpKU0xvY2s6OmRyb3BBbGxMb2Nrcyk6
CisgICAgICAgIChKU0M6OkpTTG9jazo6Z3JhYkFsbExvY2tzKToKKyAgICAgICAgKEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2Nrcyk6CisgICAgICAgIChKU0M6OkpTTG9jazo6
RHJvcEFsbExvY2tzOjp+RHJvcEFsbExvY2tzKToKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5o
OgorICAgICAgICAoSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nrczo6c2V0RHJvcERlcHRoKToKKyAg
ICAgICAgKEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3M6OmRyb3BEZXB0aCk6CisKIDIwMTQtMDIt
MTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgT3Bl
cmF0aW9ucy5oIHRvIEpTQ0lubGluZXMuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xvY2suY3BwCShyZXZpc2lvbiAxNjM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw5IEBACiAj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorI2luY2x1ZGUgPHRo
cmVhZD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTY2LDk3ICsxNjksMzMgQEAg
Ym9vbCBKU0xvY2s6OmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKAogICAgIHJldHVybiBtX293
bmVyVGhyZWFkID09IFdURjo6Y3VycmVudFRocmVhZCgpOwogfQogCi0vLyBUaGlzIGlzIGZhaXJs
eSBuYXN0eS4gIFdlIGFsbG93IG11bHRpcGxlIHRocmVhZHMgdG8gcnVuIG9uIHRoZSBzYW1lCi0v
LyBjb250ZXh0LCBhbmQgd2UgZG8gbm90IHJlcXVpcmUgYW55IGxvY2tpbmcgc2VtYW50aWNzIGlu
IGRvaW5nIHNvIC0KLS8vIGNsaWVudHMgb2YgdGhlIEFQSSBtYXkgc2ltcGx5IHVzZSB0aGUgY29u
dGV4dCBmcm9tIG11bHRpcGxlIHRocmVhZHMKLS8vIGNvbmN1cmVudGx5LCBhbmQgYXNzdW1lIHRo
aXMgd2lsbCB3b3JrLiAgSW4gb3JkZXIgdG8gbWFrZSB0aGlzIHdvcmssCi0vLyBXZSBsb2NrIHRo
ZSBjb250ZXh0IHdoZW4gYSB0aHJlYWQgZW50ZXJzLCBhbmQgdW5sb2NrIGl0IHdoZW4gaXQgbGVh
dmVzLgotLy8gSG93ZXZlciB3ZSBkbyBub3Qgb25seSB1bmxvY2sgd2hlbiB0aGUgdGhyZWFkIHJl
dHVybnMgZnJvbSBpdHMKLS8vIGVudHJ5IHBvaW50IChldmFsdWF0ZSBzY3JpcHQgb3IgY2FsbCBm
dW5jdGlvbiksIHdlIGFsc28gdW5sb2NrIHRoZQotLy8gY29udGV4dCBpZiB0aGUgdGhyZWFkIGxl
YXZlcyBKU0MgYnkgbWFraW5nIGEgY2FsbCBvdXQgdG8gYW4gZXh0ZXJuYWwKLS8vIGZ1bmN0aW9u
IHRocm91Z2ggYSBjYWxsYmFjay4KLS8vCi0vLyBBbGwgdGhyZWFkcyB1c2luZyB0aGUgY29udGV4
dCBzaGFyZSB0aGUgc2FtZSBKUyBzdGFjayAodGhlIEpTU3RhY2spLgotLy8gV2hlbmV2ZXIgYSB0
aHJlYWQgY2FsbHMgaW50byBKU0MgaXQgc3RhcnRzIHVzaW5nIHRoZSBKU1N0YWNrIGZyb20gdGhl
Ci0vLyBwcmV2aW91cyAnaGlnaCB3YXRlciBtYXJrJyAtIHRoZSBtYXhpbXVtIHBvaW50IHRoZSBz
dGFjayBoYXMgZXZlciBncm93biB0bwotLy8gKHJldHVybmVkIGJ5IEpTU3RhY2s6OmVuZCgpKS4g
IFNvIGlmIGEgZmlyc3QgdGhyZWFkIGNhbGxzIG91dCB0byBhCi0vLyBjYWxsYmFjaywgYW5kIGEg
c2Vjb25kIHRocmVhZCBlbnRlcnMgSlNDLCB0aGVuIGFsc28gZXhpdHMgYnkgY2FsbGluZyBvdXQK
LS8vIHRvIGEgY2FsbGJhY2ssIHdlIGNhbiBiZSBsZWZ0IHdpdGggc3RhY2tmcmFtZXMgZnJvbSBi
b3RoIHRocmVhZHMgaW4gdGhlCi0vLyBKU1N0YWNrLiAgQXMgc3VjaCwgYSBwcm9ibGVtIG1heSBv
Y2N1ciBzaG91bGQgdGhlIGZpcnN0IHRocmVhZCdzCi0vLyBjYWxsYmFjayBjb21wbGV0ZSBmaXJz
dCwgYW5kIGF0dGVtcHQgdG8gcmV0dXJuIHRvIEpTQy4gIFdlcmUgd2UgdG8gYWxsb3cKLS8vIHRo
aXMgdG8gaGFwcGVuLCBhbmQgd2VyZSBpdHMgc3RhY2sgdG8gZ3JvdyBmdXJ0aGVyLCB0aGVuIGl0
IG1heSBwb3RlbnRpYWxseQotLy8gd3JpdGUgb3ZlciB0aGUgc2Vjb25kIHRocmVhZCdzIGNhbGwg
ZnJhbWVzLgotLy8KLS8vIFRvIGF2b2lkIEpTIHN0YWNrIGNvcnJ1cHRpb24gd2UgZW5mb3JjZSBh
IHBvbGljeSBvZiBvbmx5IGV2ZXIgYWxsb3dpbmcgdHdvCi0vLyB0aHJlYWRzIHRvIHVzZSBhIEpT
IGNvbnRleHQgY29uY3VycmVudGx5LCBhbmQgb25seSBhbGxvd2luZyB0aGUgc2Vjb25kIG9mCi0v
LyB0aGVzZSB0aHJlYWRzIHRvIGV4ZWN1dGUgdW50aWwgaXQgaGFzIGNvbXBsZXRlZCBhbmQgZnVs
bHkgcmV0dXJuZWQgZnJvbSBpdHMKLS8vIG91dGVybW9zdCBjYWxsIGludG8gSlNDLiAgV2UgZW5m
b3JjZSB0aGlzIHBvbGljeSB1c2luZyAnbG9ja0Ryb3BEZXB0aCcuICBUaGUKLS8vIGZpcnN0IHRp
bWUgYSB0aHJlYWQgZXhpdHMgaXQgd2lsbCBjYWxsIERyb3BBbGxMb2NrcyAtIHdoaWNoIHdpbGwg
ZG8gYXMgZXhwZWN0ZWQKLS8vIGFuZCBkcm9wIGxvY2tzIGFsbG93aW5nIGFub3RoZXIgdGhyZWFk
IHRvIGVudGVyLiAgU2hvdWxkIGFub3RoZXIgdGhyZWFkLCBvciB0aGUKLS8vIHNhbWUgdGhyZWFk
IGFnYWluLCBlbnRlciBKU0MgKHRocm91Z2ggZXZhbHVhdGUgc2NyaXB0IG9yIGNhbGwgZnVuY3Rp
b24pLCBhbmQgZXhpdAotLy8gYWdhaW4gdGhyb3VnaCBhIGNhbGxiYWNrLCB0aGVuIHRoZSBsb2Nr
cyB3aWxsIG5vdCBiZSBkcm9wcGVkIHdoZW4gRHJvcEFsbExvY2tzCi0vLyBpcyBjYWxsZWQgKHNp
bmNlIGxvY2tEcm9wRGVwdGggaXMgbm9uLXplcm8pLiAgU2luY2UgdGhpcyB0aHJlYWQgaXMgc3Rp
bGwgaG9sZGluZwotLy8gdGhlIGxvY2tzLCBvbmx5IGl0IHdpbGwgYmUgYWJsZSB0byByZS1lbnRl
ciBKU0MgKGVpdGhlciBiZSByZXR1cm5pbmcgZnJvbSB0aGUKLS8vIGNhbGxiYWNrLCBvciBieSBy
ZS1lbnRlcmluZyB0aHJvdWdoIGFub3RoZXIgY2FsbCB0byBldmF1bGF0ZSBzY3JpcHQgb3IgY2Fs
bAotLy8gZnVuY3Rpb24pLgotLy8KLS8vIFRoaXMgcG9saWN5IGlzIHNsaWdodGx5IG1vcmUgcmVz
dHJpY2l2ZSB0aGFuIGl0IG5lZWRzIHRvIGJlIGZvciBjb3JyZWN0bmVzcyAtCi0vLyB3ZSBjb3Vs
ZCB2YWxpZGx5IGFsbG93IGZ1dGhlciBlbnRyaWVzIGludG8gSlNDIGZyb20gb3RoZXIgdGhyZWFk
cywgd2Ugb25seQotLy8gbmVlZCBlbnN1cmUgdGhhdCBjYWxsYmFja3MgcmV0dXJuIGluIHRoZSBy
ZXZlcnNlIGNocm9ub2xvZ2ljYWwgb3JkZXIgb2YgdGhlCi0vLyBvcmRlciBpbiB3aGljaCB0aGV5
IHdlcmUgbWFkZSAtIHRob3VnaCBpbXBsZW1lbnRpbmcgdGhlIGxlc3MgcmVzdHJpY3RpdmUgcG9s
aWN5Ci0vLyB3b3VsZCBsaWtlbHkgaW5jcmVhc2UgY29tcGxleGl0eSBhbmQgb3ZlcmhlYWQuCi0v
LwotCiAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBsb2NrcyB0aGF0IHdl
cmUgZHJvcHBlZC4KLXVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKCkKK3Vuc2lnbmVkIEpT
TG9jazo6ZHJvcEFsbExvY2tzKERyb3BBbGxMb2NrcyogZHJvcHBlcikKIHsKICAgICAvLyBDaGVj
ayBpZiB0aGlzIHRocmVhZCBpcyBjdXJyZW50bHkgaG9sZGluZyB0aGUgbG9jay4KICAgICAvLyBG
SVhNRTogTWF5YmUgd2Ugd2FudCB0byByZXF1aXJlIHRoaXMsIGd1YXJkIHdpdGggYW4gQVNTRVJU
PwogICAgIGlmICghY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICAvLyBEb24ndCBkcm9wIHRoZSBsb2NrcyBpZiB0aGV5J3ZlIGFscmVhZHkgYmVl
biBkcm9wcGVkIG9uY2UuCi0gICAgLy8gKElmIHRoZSBwcmlvciBkcm9wIGNhbWUgZnJvbSBhbm90
aGVyIHRocmVhZCwgYW5kIGl0IHJlc3VtZWQgZmlyc3QsCi0gICAgLy8gaXQgY291bGQgdHJhc2gg
b3VyIHJlZ2lzdGVyIGZpbGUpLgotICAgIGlmIChtX2xvY2tEcm9wRGVwdGgpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEo
KTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KG1fdm0tPnN0
YWNrUG9pbnRlckF0Vk1FbnRyeSk7Ci0gICAgdGhyZWFkRGF0YS5zZXRTYXZlZExhc3RTdGFja1Rv
cChtX3ZtLT5sYXN0U3RhY2tUb3AoKSk7Ci0gICAgdGhyZWFkRGF0YS5zZXRTYXZlZFJlc2VydmVk
Wm9uZVNpemUobV92bS0+cmVzZXJ2ZWRab25lU2l6ZSgpKTsKLQotICAgIC8vIG1fbG9ja0Ryb3BE
ZXB0aCBpcyBvbmx5IGluY3JlbWVudGVkIGlmIGFueSBsb2NrcyB3ZXJlIGRyb3BwZWQuCiAgICAg
KyttX2xvY2tEcm9wRGVwdGg7CiAKLSAgICB1bnNpZ25lZCBkcm9wcGVkTG9ja0NvdW50ID0gbV9s
b2NrQ291bnQ7Ci0gICAgdW5sb2NrKGRyb3BwZWRMb2NrQ291bnQpOwotCi0gICAgcmV0dXJuIGRy
b3BwZWRMb2NrQ291bnQ7Ci19Ci0KLXVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzVW5jb25k
aXRpb25hbGx5KCkKLXsKLSAgICAvLyBDaGVjayBpZiB0aGlzIHRocmVhZCBpcyBjdXJyZW50bHkg
aG9sZGluZyB0aGUgbG9jay4KLSAgICAvLyBGSVhNRTogTWF5YmUgd2Ugd2FudCB0byByZXF1aXJl
IHRoaXMsIGd1YXJkIHdpdGggYW4gQVNTRVJUPwotICAgIGlmICghY3VycmVudFRocmVhZElzSG9s
ZGluZ0xvY2soKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgVU5VU0VEX1BBUkFNKGRyb3BwZXIp
OworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgZHJvcHBlci0+c2V0RHJvcERlcHRoKG1f
bG9ja0Ryb3BEZXB0aCk7CisjZW5kaWYKIAogICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEg
PSB3dGZUaHJlYWREYXRhKCk7CiAgICAgdGhyZWFkRGF0YS5zZXRTYXZlZFN0YWNrUG9pbnRlckF0
Vk1FbnRyeShtX3ZtLT5zdGFja1BvaW50ZXJBdFZNRW50cnkpOwogICAgIHRocmVhZERhdGEuc2V0
U2F2ZWRMYXN0U3RhY2tUb3AobV92bS0+bGFzdFN0YWNrVG9wKCkpOwogICAgIHRocmVhZERhdGEu
c2V0U2F2ZWRSZXNlcnZlZFpvbmVTaXplKG1fdm0tPnJlc2VydmVkWm9uZVNpemUoKSk7CiAKLSAg
ICAvLyBtX2xvY2tEcm9wRGVwdGggaXMgb25seSBpbmNyZW1lbnRlZCBpZiBhbnkgbG9ja3Mgd2Vy
ZSBkcm9wcGVkLgotICAgICsrbV9sb2NrRHJvcERlcHRoOwotCiAgICAgdW5zaWduZWQgZHJvcHBl
ZExvY2tDb3VudCA9IG1fbG9ja0NvdW50OwogICAgIHVubG9jayhkcm9wcGVkTG9ja0NvdW50KTsK
IAogICAgIHJldHVybiBkcm9wcGVkTG9ja0NvdW50OwogfQogCi12b2lkIEpTTG9jazo6Z3JhYkFs
bExvY2tzKHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291bnQpCit2b2lkIEpTTG9jazo6Z3JhYkFsbExv
Y2tzKERyb3BBbGxMb2NrcyogZHJvcHBlciwgdW5zaWduZWQgZHJvcHBlZExvY2tDb3VudCkKIHsK
ICAgICAvLyBJZiBubyBsb2NrcyB3ZXJlIGRyb3BwZWQsIG5vdGhpbmcgdG8gZG8hCiAgICAgaWYg
KCFkcm9wcGVkTG9ja0NvdW50KQpAQCAtMjY1LDYgKzIwNCwxNSBAQCB2b2lkIEpTTG9jazo6Z3Jh
YkFsbExvY2tzKHVuc2lnbmVkIGRyb3BwCiAgICAgQVNTRVJUKCFjdXJyZW50VGhyZWFkSXNIb2xk
aW5nTG9jaygpKTsKICAgICBsb2NrKGRyb3BwZWRMb2NrQ291bnQpOwogCisgICAgVU5VU0VEX1BB
UkFNKGRyb3BwZXIpOworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgd2hpbGUgKGRyb3Bw
ZXItPmRyb3BEZXB0aCgpICE9IG1fbG9ja0Ryb3BEZXB0aCkgeworICAgICAgICB1bmxvY2soZHJv
cHBlZExvY2tDb3VudCk7CisgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnlpZWxkKCk7CisgICAg
ICAgIGxvY2soZHJvcHBlZExvY2tDb3VudCk7CisgICAgfQorI2VuZGlmCisKICAgICAtLW1fbG9j
a0Ryb3BEZXB0aDsKIAogICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWRE
YXRhKCk7CkBAIC0yNzMsMzcgKzIyMSwyOSBAQCB2b2lkIEpTTG9jazo6Z3JhYkFsbExvY2tzKHVu
c2lnbmVkIGRyb3BwCiAgICAgbV92bS0+dXBkYXRlU3RhY2tMaW1pdFdpdGhSZXNlcnZlZFpvbmVT
aXplKHRocmVhZERhdGEuc2F2ZWRSZXNlcnZlZFpvbmVTaXplKCkpOwogfQogCi1KU0xvY2s6OkRy
b3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhlYywgQWx3YXlzRHJvcExvY2tz
VGFnIGFsd2F5c0Ryb3BMb2NrcykKK0pTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3Mo
RXhlY1N0YXRlKiBleGVjKQogICAgIDogbV9kcm9wcGVkTG9ja0NvdW50KDApCiAgICAgLCBtX3Zt
KGV4ZWMgPyAmZXhlYy0+dm0oKSA6IG51bGxwdHIpCiB7CiAgICAgaWYgKCFtX3ZtKQogICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoYWx3YXlzRHJvcExvY2tzKQotICAgICAgICBtX2Ryb3BwZWRM
b2NrQ291bnQgPSBtX3ZtLT5hcGlMb2NrKCkuZHJvcEFsbExvY2tzVW5jb25kaXRpb25hbGx5KCk7
Ci0gICAgZWxzZQotICAgICAgICBtX2Ryb3BwZWRMb2NrQ291bnQgPSBtX3ZtLT5hcGlMb2NrKCku
ZHJvcEFsbExvY2tzKCk7CisgICAgbV9kcm9wcGVkTG9ja0NvdW50ID0gbV92bS0+YXBpTG9jaygp
LmRyb3BBbGxMb2Nrcyh0aGlzKTsKIH0KIAotSlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxM
b2NrcyhWTSogdm0sIEFsd2F5c0Ryb3BMb2Nrc1RhZyBhbHdheXNEcm9wTG9ja3MpCitKU0xvY2s6
OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKFZNKiB2bSkKICAgICA6IG1fZHJvcHBlZExvY2tD
b3VudCgwKQogICAgICwgbV92bSh2bSkKIHsKICAgICBpZiAoIW1fdm0pCiAgICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChhbHdheXNEcm9wTG9ja3MpCi0gICAgICAgIG1fZHJvcHBlZExvY2tDb3Vu
dCA9IG1fdm0tPmFwaUxvY2soKS5kcm9wQWxsTG9ja3NVbmNvbmRpdGlvbmFsbHkoKTsKLSAgICBl
bHNlCi0gICAgICAgIG1fZHJvcHBlZExvY2tDb3VudCA9IG1fdm0tPmFwaUxvY2soKS5kcm9wQWxs
TG9ja3MoKTsKKyAgICBtX2Ryb3BwZWRMb2NrQ291bnQgPSBtX3ZtLT5hcGlMb2NrKCkuZHJvcEFs
bExvY2tzKHRoaXMpOwogfQogCiBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6fkRyb3BBbGxMb2Nrcygp
CiB7CiAgICAgaWYgKCFtX3ZtKQogICAgICAgICByZXR1cm47Ci0gICAgbV92bS0+YXBpTG9jaygp
LmdyYWJBbGxMb2NrcyhtX2Ryb3BwZWRMb2NrQ291bnQpOworICAgIG1fdm0tPmFwaUxvY2soKS5n
cmFiQWxsTG9ja3ModGhpcywgbV9kcm9wcGVkTG9ja0NvdW50KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNp
b24gMTYzODI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk5LDE2ICs5OSwyMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Y2xhc3MgRHJvcEFsbExvY2tzIHsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERy
b3BBbGxMb2Nrcyk7CiAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQs
IHdlIHJlbGVhc2UgYWxsIGxvY2tzIGNvbmRpdGlvbmFsbHkuIFNvbWUgY2xpZW50cywgc3VjaCBh
cyBNb2JpbGUgU2FmYXJpLAotICAgICAgICAgICAgLy8gbWF5IHJlcXVpcmUgdGhhdCB3ZSByZWxl
YXNlIGFsbCBsb2NrcyB1bmNvbmRpdGlvbmFsbHkuCi0gICAgICAgICAgICBlbnVtIEFsd2F5c0Ry
b3BMb2Nrc1RhZyB7IERvbnRBbHdheXNEcm9wTG9ja3MgPSAwLCBBbHdheXNEcm9wTG9ja3MgfTsK
LSAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERyb3BBbGxMb2NrcyhFeGVjU3RhdGUqLCBB
bHdheXNEcm9wTG9ja3NUYWcgPSBEb250QWx3YXlzRHJvcExvY2tzKTsKLSAgICAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIERyb3BBbGxMb2NrcyhWTSosIEFsd2F5c0Ryb3BMb2Nrc1RhZyA9IERv
bnRBbHdheXNEcm9wTG9ja3MpOworICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRHJvcEFs
bExvY2tzKEV4ZWNTdGF0ZSopOworICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRHJvcEFs
bExvY2tzKFZNKik7CiAgICAgICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+RHJvcEFsbExvY2tz
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgcHJpdmF0ZToKKyNpZiBFTkFCTEUoTExJTlRfQ19M
T09QKQorICAgICAgICAgICAgdm9pZCBzZXREcm9wRGVwdGgodW5zaWduZWQgZGVwdGgpIHsgbV9k
cm9wRGVwdGggPSBkZXB0aDsgfQorICAgICAgICAgICAgdW5zaWduZWQgZHJvcERlcHRoKCkgY29u
c3QgeyByZXR1cm4gbV9kcm9wRGVwdGg7IH0KKyNlbmRpZgorCiAgICAgICAgICAgICBpbnRwdHJf
dCBtX2Ryb3BwZWRMb2NrQ291bnQ7CiAgICAgICAgICAgICBSZWZQdHI8Vk0+IG1fdm07CisjaWYg
RU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgICAgIHVuc2lnbmVkIG1fZHJvcERlcHRoOwor
CisgICAgICAgICAgICBmcmllbmQgY2xhc3MgSlNMb2NrOworI2VuZGlmCiAgICAgICAgIH07CiAK
ICAgICBwcml2YXRlOgpAQCAtMTE2LDkgKzEyMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIHVubG9jayhpbnRwdHJfdCB1bmxvY2tDb3VudCk7CiAgICAgICAgIHZvaWQgc2V0T3du
ZXJUaHJlYWQoVGhyZWFkSWRlbnRpZmllciBvd25lcikgeyBtX293bmVyVGhyZWFkID0gb3duZXI7
IH0KIAotICAgICAgICB1bnNpZ25lZCBkcm9wQWxsTG9ja3MoKTsKLSAgICAgICAgdW5zaWduZWQg
ZHJvcEFsbExvY2tzVW5jb25kaXRpb25hbGx5KCk7Ci0gICAgICAgIHZvaWQgZ3JhYkFsbExvY2tz
KHVuc2lnbmVkIGxvY2tDb3VudCk7CisgICAgICAgIHVuc2lnbmVkIGRyb3BBbGxMb2NrcyhEcm9w
QWxsTG9ja3MqKTsKKyAgICAgICAgdm9pZCBncmFiQWxsTG9ja3MoRHJvcEFsbExvY2tzKiwgdW5z
aWduZWQgbG9ja0NvdW50KTsKIAogICAgICAgICBNdXRleCBtX2xvY2s7CiAgICAgICAgIFRocmVh
ZElkZW50aWZpZXIgbV9vd25lclRocmVhZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Mzg0
NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIwIEBACisyMDE0LTAyLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW1vdmluZyBsaW1pdGF0aW9uIG9uIEpTTG9ja+KAmXMgbG9ja0Ryb3BEZXB0aC4KKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyODU3MD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoU2VuZERlbGVn
YXRlTWVzc2FnZSk6CisgICAgICAgIChXZWJUaHJlYWRSdW5Pbk1haW5UaHJlYWQpOgorICAgICAg
ICAtIE5vIGxvbmdlciBuZWVkIHRvIHNwZWNpZnkgQWx3YXlzRHJvcExvY2tzLCBiZWNhdXNlIERy
b3BBbGxMb2NrcyBpcworICAgICAgICAgIG5vdyBhbHdheXMgdW5jb25kaXRpb25hbC4KKwogMjAx
NC0wMi0xMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGRy
ZXNzIHRoZSByZXZpZXcgY29tbWVudHMgZm9yIHIxNjM4MjUuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHJldmlz
aW9uIDE2MzgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wCiAgICAgQVNTRVJUKFdlYlRocmVhZElzTG9j
a2VkT3JEaXNhYmxlZCgpKTsKICAgICB7CiAgICAgICAgIGlmIChXZWJUaHJlYWRJc0VuYWJsZWQo
KSkKLSAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKFdl
YkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKSwgSlNDOjpKU0xvY2s6OkRyb3BBbGxM
b2Nrczo6QWx3YXlzRHJvcExvY2tzKTsKKyAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxs
TG9ja3MgZHJvcEFsbExvY2tzKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKSk7
CiAgICAgICAgIFdlYlJ1bkxvb3BFbmFibGVOZXN0ZWQoKTsKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCShyZXZp
c2lvbiAxNjM4MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVU
aHJlYWQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0aWMgdm9pZCBT
ZW5kRGVsZWdhdGVNZXNzYWdlKE5TSW52b2NhCiAKICAgICAgICAgewogICAgICAgICAgICAgLy8g
Q29kZSBibG9jayBjcmVhdGVkIHRvIHNjb3BlIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3Mgb3V0
c2lkZSBvZiBXZWJUaHJlYWRMb2NrKCkKLSAgICAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxs
TG9ja3MgZHJvcEFsbExvY2tzKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKSwg
SlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nrczo6QWx3YXlzRHJvcExvY2tzKTsKKyAgICAgICAgICAg
IEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKFdlYkNvcmU6OkpTRE9NV2lu
ZG93QmFzZTo6Y29tbW9uVk0oKSk7CiAgICAgICAgICAgICBfV2ViVGhyZWFkVW5sb2NrKCk7CiAK
ICAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChkZWxlZ2F0ZVNvdXJjZSk7CkBAIC0y
NDgsNyArMjQ4LDcgQEAgdm9pZCBXZWJUaHJlYWRSdW5Pbk1haW5UaHJlYWQodm9pZCheZGVsZQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBk
cm9wQWxsTG9ja3MoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpLCBKU0M6OkpT
TG9jazo6RHJvcEFsbExvY2tzOjpBbHdheXNEcm9wTG9ja3MpOworICAgIEpTQzo6SlNMb2NrOjpE
cm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29tbW9u
Vk0oKSk7CiAgICAgX1dlYlRocmVhZFVubG9jaygpOwogCiAgICAgdm9pZCAoXmRlbGVnYXRlQmxv
Y2tDb3B5KSgpID0gQmxvY2tfY29weShkZWxlZ2F0ZUJsb2NrKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223786</attachid>
            <date>2014-02-10 18:48:51 -0800</date>
            <delta_ts>2014-02-10 18:55:55 -0800</delta_ts>
            <desc>patch 2: fixed typos.</desc>
            <filename>bug-128570.patch</filename>
            <type>text/plain</type>
            <size>13604</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzODQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE0LTAyLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmluZyBsaW1pdGF0aW9uIG9uIEpTTG9ja+KAmXMgbG9ja0Ryb3BEZXB0aC4KKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyODU3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgdGhhdCB3ZSd2ZSBzd2l0Y2hlZCB0byB1c2luZyB0
aGUgQyBzdGFjaywgd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gbGltaXQKKyAgICAgICAgdGhlIEpTTG9j
azo6bG9ja0Ryb3BEZXB0aCB0byAyLgorCisgICAgICAgIEZvciBDIGxvb3AgYnVpbGRzIHdoaWNo
IHN0aWxsIHVzZXMgdGhlIHNlcGFyYXRlIEpTU3RhY2ssIFRoZSBKU0xvY2sgd2lsbAorICAgICAg
ICBlbmZvcmNlIG9yZGVyaW5nIGZvciByZS1ncmFiYmluZyB0aGUgbG9jayBhZnRlciBkcm9wcGlu
ZyBpdC4gUmUtZ3JhYmJpbmcKKyAgICAgICAgbXVzdCBvY2N1ciBpbiB0aGUgcmV2ZXJzZSBvcmRl
ciBvZiB0aGUgZHJvcHBpbmcgb2YgdGhlIGxvY2tzLgorCisgICAgICAgIE9yZGVyaW5nIGlzIGFj
aGlldmVkIGJ5IEpTTG9jazo6ZHJvcEFsbExvY2tzKCkgc3Rhc2hpbmcgYXdheSB0aGUKKyAgICAg
ICAgSlNMb2NrOjogbV9sb2NrRHJvcERlcHRoIGluIGl0cyBEcm9wQWxsTG9ja3MgaW5zdGFuY2Un
cyBtX2Ryb3BEZXB0aAorICAgICAgICBiZWZvcmUgdW5sb2NraW5nIHRoZSBsb2NrLiBTdWJzZXF1
ZW50bHksIEpTTG9jazo6Z3JhYkFsbExvY2tzKCkgd2lsbAorICAgICAgICBlbnN1cmUgdGhhdCBK
U0xvY2tzOjptX2xvY2tEcm9wRGVwdGggZXF1YWxzIGl0cyBEcm9wQWxsTG9ja3MgaW5zdGFuY2Un
cworICAgICAgICBtX2Ryb3BEZXB0aCBiZWZvcmUgYWxsb3dpbmcgdGhlIGxvY2sgdG8gYmUgcmUt
Z3JhYmJlZC4gT3RoZXJ3aXNlLCBpdAorICAgICAgICB3aWxsIHlpZWxkIGV4ZWN1dGlvbiBhbmQg
cmV0cnkgYWdhaW4gbGF0ZXIuCisKKyAgICAgICAgTm90ZTogYmVjYXVzZSBKU0xvY2tzOjptX2xv
Y2tEcm9wRGVwdGggaXMgcHJvdGVjdGVkIGJ5IHRoZSBKU0xvY2sncworICAgICAgICBtdXRleCwg
Z3JhYkFsbExvY2tzKCkgd2lsbCBvcHRpbWlzdGljYWxseSBsb2NrIHRoZSBKU0xvY2sgYmVmb3Jl
IGRvaW5nCisgICAgICAgIHRoZSBjaGVjayBvbiBtX2xvY2tEcm9wRGVwdGguIElmIHRoZSBjaGVj
ayBmYWlscywgaXQgd2lsbCB1bmxvY2sgdGhlCisgICAgICAgIEpTTG9jaywgeWllbGQsIGFuZCB0
aGVuIHJlbG9jayBpdCBhZ2FpbiBsYXRlciBiZWZvcmUgcmV0cnlpbmcgdGhlIGNoZWNrLgorICAg
ICAgICBUaGlzIGVuc3VyZXMgdGhhdCBtX2xvY2tEcm9wRGVwdGggcmVtYWlucyB1bmRlciB0aGUg
cHJvdGVjdGlvbiBvZiB0aGUKKyAgICAgICAgSlNMb2NrJ3MgbXV0ZXguCisKKyAgICAgICAgKiBy
dW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZHJvcEFsbExvY2tzKToK
KyAgICAgICAgKEpTQzo6SlNMb2NrOjpncmFiQWxsTG9ja3MpOgorICAgICAgICAoSlNDOjpKU0xv
Y2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpE
cm9wQWxsTG9ja3M6On5Ecm9wQWxsTG9ja3MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6
CisgICAgICAgIChKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjpzZXREcm9wRGVwdGgpOgorICAg
ICAgICAoSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nrczo6ZHJvcERlcHRoKToKKwogMjAxNC0wMi0x
MCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBPcGVy
YXRpb25zLmggdG8gSlNDSW5saW5lcy5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTG9jay5jcHAJKHJldmlzaW9uIDE2MzgyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDkgQEAKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisjaW5jbHVkZSA8dGhy
ZWFkPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNjYsOTcgKzE2OSwzMyBAQCBi
b29sIEpTTG9jazo6Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soCiAgICAgcmV0dXJuIG1fb3du
ZXJUaHJlYWQgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCk7CiB9CiAKLS8vIFRoaXMgaXMgZmFpcmx5
IG5hc3R5LiAgV2UgYWxsb3cgbXVsdGlwbGUgdGhyZWFkcyB0byBydW4gb24gdGhlIHNhbWUKLS8v
IGNvbnRleHQsIGFuZCB3ZSBkbyBub3QgcmVxdWlyZSBhbnkgbG9ja2luZyBzZW1hbnRpY3MgaW4g
ZG9pbmcgc28gLQotLy8gY2xpZW50cyBvZiB0aGUgQVBJIG1heSBzaW1wbHkgdXNlIHRoZSBjb250
ZXh0IGZyb20gbXVsdGlwbGUgdGhyZWFkcwotLy8gY29uY3VyZW50bHksIGFuZCBhc3N1bWUgdGhp
cyB3aWxsIHdvcmsuICBJbiBvcmRlciB0byBtYWtlIHRoaXMgd29yaywKLS8vIFdlIGxvY2sgdGhl
IGNvbnRleHQgd2hlbiBhIHRocmVhZCBlbnRlcnMsIGFuZCB1bmxvY2sgaXQgd2hlbiBpdCBsZWF2
ZXMuCi0vLyBIb3dldmVyIHdlIGRvIG5vdCBvbmx5IHVubG9jayB3aGVuIHRoZSB0aHJlYWQgcmV0
dXJucyBmcm9tIGl0cwotLy8gZW50cnkgcG9pbnQgKGV2YWx1YXRlIHNjcmlwdCBvciBjYWxsIGZ1
bmN0aW9uKSwgd2UgYWxzbyB1bmxvY2sgdGhlCi0vLyBjb250ZXh0IGlmIHRoZSB0aHJlYWQgbGVh
dmVzIEpTQyBieSBtYWtpbmcgYSBjYWxsIG91dCB0byBhbiBleHRlcm5hbAotLy8gZnVuY3Rpb24g
dGhyb3VnaCBhIGNhbGxiYWNrLgotLy8KLS8vIEFsbCB0aHJlYWRzIHVzaW5nIHRoZSBjb250ZXh0
IHNoYXJlIHRoZSBzYW1lIEpTIHN0YWNrICh0aGUgSlNTdGFjaykuCi0vLyBXaGVuZXZlciBhIHRo
cmVhZCBjYWxscyBpbnRvIEpTQyBpdCBzdGFydHMgdXNpbmcgdGhlIEpTU3RhY2sgZnJvbSB0aGUK
LS8vIHByZXZpb3VzICdoaWdoIHdhdGVyIG1hcmsnIC0gdGhlIG1heGltdW0gcG9pbnQgdGhlIHN0
YWNrIGhhcyBldmVyIGdyb3duIHRvCi0vLyAocmV0dXJuZWQgYnkgSlNTdGFjazo6ZW5kKCkpLiAg
U28gaWYgYSBmaXJzdCB0aHJlYWQgY2FsbHMgb3V0IHRvIGEKLS8vIGNhbGxiYWNrLCBhbmQgYSBz
ZWNvbmQgdGhyZWFkIGVudGVycyBKU0MsIHRoZW4gYWxzbyBleGl0cyBieSBjYWxsaW5nIG91dAot
Ly8gdG8gYSBjYWxsYmFjaywgd2UgY2FuIGJlIGxlZnQgd2l0aCBzdGFja2ZyYW1lcyBmcm9tIGJv
dGggdGhyZWFkcyBpbiB0aGUKLS8vIEpTU3RhY2suICBBcyBzdWNoLCBhIHByb2JsZW0gbWF5IG9j
Y3VyIHNob3VsZCB0aGUgZmlyc3QgdGhyZWFkJ3MKLS8vIGNhbGxiYWNrIGNvbXBsZXRlIGZpcnN0
LCBhbmQgYXR0ZW1wdCB0byByZXR1cm4gdG8gSlNDLiAgV2VyZSB3ZSB0byBhbGxvdwotLy8gdGhp
cyB0byBoYXBwZW4sIGFuZCB3ZXJlIGl0cyBzdGFjayB0byBncm93IGZ1cnRoZXIsIHRoZW4gaXQg
bWF5IHBvdGVudGlhbGx5Ci0vLyB3cml0ZSBvdmVyIHRoZSBzZWNvbmQgdGhyZWFkJ3MgY2FsbCBm
cmFtZXMuCi0vLwotLy8gVG8gYXZvaWQgSlMgc3RhY2sgY29ycnVwdGlvbiB3ZSBlbmZvcmNlIGEg
cG9saWN5IG9mIG9ubHkgZXZlciBhbGxvd2luZyB0d28KLS8vIHRocmVhZHMgdG8gdXNlIGEgSlMg
Y29udGV4dCBjb25jdXJyZW50bHksIGFuZCBvbmx5IGFsbG93aW5nIHRoZSBzZWNvbmQgb2YKLS8v
IHRoZXNlIHRocmVhZHMgdG8gZXhlY3V0ZSB1bnRpbCBpdCBoYXMgY29tcGxldGVkIGFuZCBmdWxs
eSByZXR1cm5lZCBmcm9tIGl0cwotLy8gb3V0ZXJtb3N0IGNhbGwgaW50byBKU0MuICBXZSBlbmZv
cmNlIHRoaXMgcG9saWN5IHVzaW5nICdsb2NrRHJvcERlcHRoJy4gIFRoZQotLy8gZmlyc3QgdGlt
ZSBhIHRocmVhZCBleGl0cyBpdCB3aWxsIGNhbGwgRHJvcEFsbExvY2tzIC0gd2hpY2ggd2lsbCBk
byBhcyBleHBlY3RlZAotLy8gYW5kIGRyb3AgbG9ja3MgYWxsb3dpbmcgYW5vdGhlciB0aHJlYWQg
dG8gZW50ZXIuICBTaG91bGQgYW5vdGhlciB0aHJlYWQsIG9yIHRoZQotLy8gc2FtZSB0aHJlYWQg
YWdhaW4sIGVudGVyIEpTQyAodGhyb3VnaCBldmFsdWF0ZSBzY3JpcHQgb3IgY2FsbCBmdW5jdGlv
biksIGFuZCBleGl0Ci0vLyBhZ2FpbiB0aHJvdWdoIGEgY2FsbGJhY2ssIHRoZW4gdGhlIGxvY2tz
IHdpbGwgbm90IGJlIGRyb3BwZWQgd2hlbiBEcm9wQWxsTG9ja3MKLS8vIGlzIGNhbGxlZCAoc2lu
Y2UgbG9ja0Ryb3BEZXB0aCBpcyBub24temVybykuICBTaW5jZSB0aGlzIHRocmVhZCBpcyBzdGls
bCBob2xkaW5nCi0vLyB0aGUgbG9ja3MsIG9ubHkgaXQgd2lsbCBiZSBhYmxlIHRvIHJlLWVudGVy
IEpTQyAoZWl0aGVyIGJlIHJldHVybmluZyBmcm9tIHRoZQotLy8gY2FsbGJhY2ssIG9yIGJ5IHJl
LWVudGVyaW5nIHRocm91Z2ggYW5vdGhlciBjYWxsIHRvIGV2YXVsYXRlIHNjcmlwdCBvciBjYWxs
Ci0vLyBmdW5jdGlvbikuCi0vLwotLy8gVGhpcyBwb2xpY3kgaXMgc2xpZ2h0bHkgbW9yZSByZXN0
cmljaXZlIHRoYW4gaXQgbmVlZHMgdG8gYmUgZm9yIGNvcnJlY3RuZXNzIC0KLS8vIHdlIGNvdWxk
IHZhbGlkbHkgYWxsb3cgZnV0aGVyIGVudHJpZXMgaW50byBKU0MgZnJvbSBvdGhlciB0aHJlYWRz
LCB3ZSBvbmx5Ci0vLyBuZWVkIGVuc3VyZSB0aGF0IGNhbGxiYWNrcyByZXR1cm4gaW4gdGhlIHJl
dmVyc2UgY2hyb25vbG9naWNhbCBvcmRlciBvZiB0aGUKLS8vIG9yZGVyIGluIHdoaWNoIHRoZXkg
d2VyZSBtYWRlIC0gdGhvdWdoIGltcGxlbWVudGluZyB0aGUgbGVzcyByZXN0cmljdGl2ZSBwb2xp
Y3kKLS8vIHdvdWxkIGxpa2VseSBpbmNyZWFzZSBjb21wbGV4aXR5IGFuZCBvdmVyaGVhZC4KLS8v
Ci0KIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGxvY2tzIHRoYXQgd2Vy
ZSBkcm9wcGVkLgotdW5zaWduZWQgSlNMb2NrOjpkcm9wQWxsTG9ja3MoKQordW5zaWduZWQgSlNM
b2NrOjpkcm9wQWxsTG9ja3MoRHJvcEFsbExvY2tzKiBkcm9wcGVyKQogewogICAgIC8vIENoZWNr
IGlmIHRoaXMgdGhyZWFkIGlzIGN1cnJlbnRseSBob2xkaW5nIHRoZSBsb2NrLgogICAgIC8vIEZJ
WE1FOiBNYXliZSB3ZSB3YW50IHRvIHJlcXVpcmUgdGhpcywgZ3VhcmQgd2l0aCBhbiBBU1NFUlQ/
CiAgICAgaWYgKCFjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIC8vIERvbid0IGRyb3AgdGhlIGxvY2tzIGlmIHRoZXkndmUgYWxyZWFkeSBiZWVu
IGRyb3BwZWQgb25jZS4KLSAgICAvLyAoSWYgdGhlIHByaW9yIGRyb3AgY2FtZSBmcm9tIGFub3Ro
ZXIgdGhyZWFkLCBhbmQgaXQgcmVzdW1lZCBmaXJzdCwKLSAgICAvLyBpdCBjb3VsZCB0cmFzaCBv
dXIgcmVnaXN0ZXIgZmlsZSkuCi0gICAgaWYgKG1fbG9ja0Ryb3BEZXB0aCkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgp
OwotICAgIHRocmVhZERhdGEuc2V0U2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkobV92bS0+c3Rh
Y2tQb2ludGVyQXRWTUVudHJ5KTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkTGFzdFN0YWNrVG9w
KG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKLSAgICB0aHJlYWREYXRhLnNldFNhdmVkUmVzZXJ2ZWRa
b25lU2l6ZShtX3ZtLT5yZXNlcnZlZFpvbmVTaXplKCkpOwotCi0gICAgLy8gbV9sb2NrRHJvcERl
cHRoIGlzIG9ubHkgaW5jcmVtZW50ZWQgaWYgYW55IGxvY2tzIHdlcmUgZHJvcHBlZC4KICAgICAr
K21fbG9ja0Ryb3BEZXB0aDsKIAotICAgIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291bnQgPSBtX2xv
Y2tDb3VudDsKLSAgICB1bmxvY2soZHJvcHBlZExvY2tDb3VudCk7Ci0KLSAgICByZXR1cm4gZHJv
cHBlZExvY2tDb3VudDsKLX0KLQotdW5zaWduZWQgSlNMb2NrOjpkcm9wQWxsTG9ja3NVbmNvbmRp
dGlvbmFsbHkoKQotewotICAgIC8vIENoZWNrIGlmIHRoaXMgdGhyZWFkIGlzIGN1cnJlbnRseSBo
b2xkaW5nIHRoZSBsb2NrLgotICAgIC8vIEZJWE1FOiBNYXliZSB3ZSB3YW50IHRvIHJlcXVpcmUg
dGhpcywgZ3VhcmQgd2l0aCBhbiBBU1NFUlQ/Ci0gICAgaWYgKCFjdXJyZW50VGhyZWFkSXNIb2xk
aW5nTG9jaygpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBVTlVTRURfUEFSQU0oZHJvcHBlcik7
CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICBkcm9wcGVyLT5zZXREcm9wRGVwdGgobV9s
b2NrRHJvcERlcHRoKTsKKyNlbmRpZgogCiAgICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9
IHd0ZlRocmVhZERhdGEoKTsKICAgICB0aHJlYWREYXRhLnNldFNhdmVkU3RhY2tQb2ludGVyQXRW
TUVudHJ5KG1fdm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeSk7CiAgICAgdGhyZWFkRGF0YS5zZXRT
YXZlZExhc3RTdGFja1RvcChtX3ZtLT5sYXN0U3RhY2tUb3AoKSk7CiAgICAgdGhyZWFkRGF0YS5z
ZXRTYXZlZFJlc2VydmVkWm9uZVNpemUobV92bS0+cmVzZXJ2ZWRab25lU2l6ZSgpKTsKIAotICAg
IC8vIG1fbG9ja0Ryb3BEZXB0aCBpcyBvbmx5IGluY3JlbWVudGVkIGlmIGFueSBsb2NrcyB3ZXJl
IGRyb3BwZWQuCi0gICAgKyttX2xvY2tEcm9wRGVwdGg7Ci0KICAgICB1bnNpZ25lZCBkcm9wcGVk
TG9ja0NvdW50ID0gbV9sb2NrQ291bnQ7CiAgICAgdW5sb2NrKGRyb3BwZWRMb2NrQ291bnQpOwog
CiAgICAgcmV0dXJuIGRyb3BwZWRMb2NrQ291bnQ7CiB9CiAKLXZvaWQgSlNMb2NrOjpncmFiQWxs
TG9ja3ModW5zaWduZWQgZHJvcHBlZExvY2tDb3VudCkKK3ZvaWQgSlNMb2NrOjpncmFiQWxsTG9j
a3MoRHJvcEFsbExvY2tzKiBkcm9wcGVyLCB1bnNpZ25lZCBkcm9wcGVkTG9ja0NvdW50KQogewog
ICAgIC8vIElmIG5vIGxvY2tzIHdlcmUgZHJvcHBlZCwgbm90aGluZyB0byBkbyEKICAgICBpZiAo
IWRyb3BwZWRMb2NrQ291bnQpCkBAIC0yNjUsNiArMjA0LDE1IEBAIHZvaWQgSlNMb2NrOjpncmFi
QWxsTG9ja3ModW5zaWduZWQgZHJvcHAKICAgICBBU1NFUlQoIWN1cnJlbnRUaHJlYWRJc0hvbGRp
bmdMb2NrKCkpOwogICAgIGxvY2soZHJvcHBlZExvY2tDb3VudCk7CiAKKyAgICBVTlVTRURfUEFS
QU0oZHJvcHBlcik7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICB3aGlsZSAoZHJvcHBl
ci0+ZHJvcERlcHRoKCkgIT0gbV9sb2NrRHJvcERlcHRoKSB7CisgICAgICAgIHVubG9jayhkcm9w
cGVkTG9ja0NvdW50KTsKKyAgICAgICAgc3RkOjp0aGlzX3RocmVhZDo6eWllbGQoKTsKKyAgICAg
ICAgbG9jayhkcm9wcGVkTG9ja0NvdW50KTsKKyAgICB9CisjZW5kaWYKKwogICAgIC0tbV9sb2Nr
RHJvcERlcHRoOwogCiAgICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERh
dGEoKTsKQEAgLTI3MywzNyArMjIxLDI5IEBAIHZvaWQgSlNMb2NrOjpncmFiQWxsTG9ja3ModW5z
aWduZWQgZHJvcHAKICAgICBtX3ZtLT51cGRhdGVTdGFja0xpbWl0V2l0aFJlc2VydmVkWm9uZVNp
emUodGhyZWFkRGF0YS5zYXZlZFJlc2VydmVkWm9uZVNpemUoKSk7CiB9CiAKLUpTTG9jazo6RHJv
cEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKiBleGVjLCBBbHdheXNEcm9wTG9ja3NU
YWcgYWx3YXlzRHJvcExvY2tzKQorSlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgOiBtX2Ryb3BwZWRMb2NrQ291bnQoMCkKICAgICAsIG1fdm0o
ZXhlYyA/ICZleGVjLT52bSgpIDogbnVsbHB0cikKIHsKICAgICBpZiAoIW1fdm0pCiAgICAgICAg
IHJldHVybjsKLQotICAgIGlmIChhbHdheXNEcm9wTG9ja3MpCi0gICAgICAgIG1fZHJvcHBlZExv
Y2tDb3VudCA9IG1fdm0tPmFwaUxvY2soKS5kcm9wQWxsTG9ja3NVbmNvbmRpdGlvbmFsbHkoKTsK
LSAgICBlbHNlCi0gICAgICAgIG1fZHJvcHBlZExvY2tDb3VudCA9IG1fdm0tPmFwaUxvY2soKS5k
cm9wQWxsTG9ja3MoKTsKKyAgICBtX2Ryb3BwZWRMb2NrQ291bnQgPSBtX3ZtLT5hcGlMb2NrKCku
ZHJvcEFsbExvY2tzKHRoaXMpOwogfQogCi1KU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExv
Y2tzKFZNKiB2bSwgQWx3YXlzRHJvcExvY2tzVGFnIGFsd2F5c0Ryb3BMb2NrcykKK0pTTG9jazo6
RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoVk0qIHZtKQogICAgIDogbV9kcm9wcGVkTG9ja0Nv
dW50KDApCiAgICAgLCBtX3ZtKHZtKQogewogICAgIGlmICghbV92bSkKICAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKGFsd2F5c0Ryb3BMb2NrcykKLSAgICAgICAgbV9kcm9wcGVkTG9ja0NvdW50
ID0gbV92bS0+YXBpTG9jaygpLmRyb3BBbGxMb2Nrc1VuY29uZGl0aW9uYWxseSgpOwotICAgIGVs
c2UKLSAgICAgICAgbV9kcm9wcGVkTG9ja0NvdW50ID0gbV92bS0+YXBpTG9jaygpLmRyb3BBbGxM
b2NrcygpOworICAgIG1fZHJvcHBlZExvY2tDb3VudCA9IG1fdm0tPmFwaUxvY2soKS5kcm9wQWxs
TG9ja3ModGhpcyk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tzOjp+RHJvcEFsbExvY2tzKCkK
IHsKICAgICBpZiAoIW1fdm0pCiAgICAgICAgIHJldHVybjsKLSAgICBtX3ZtLT5hcGlMb2NrKCku
Z3JhYkFsbExvY2tzKG1fZHJvcHBlZExvY2tDb3VudCk7CisgICAgbV92bS0+YXBpTG9jaygpLmdy
YWJBbGxMb2Nrcyh0aGlzLCBtX2Ryb3BwZWRMb2NrQ291bnQpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCShyZXZpc2lv
biAxNjM4MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtOTksMTYgKzk5LDIzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBj
bGFzcyBEcm9wQWxsTG9ja3MgewogICAgICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJv
cEFsbExvY2tzKTsKICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCwg
d2UgcmVsZWFzZSBhbGwgbG9ja3MgY29uZGl0aW9uYWxseS4gU29tZSBjbGllbnRzLCBzdWNoIGFz
IE1vYmlsZSBTYWZhcmksCi0gICAgICAgICAgICAvLyBtYXkgcmVxdWlyZSB0aGF0IHdlIHJlbGVh
c2UgYWxsIGxvY2tzIHVuY29uZGl0aW9uYWxseS4KLSAgICAgICAgICAgIGVudW0gQWx3YXlzRHJv
cExvY2tzVGFnIHsgRG9udEFsd2F5c0Ryb3BMb2NrcyA9IDAsIEFsd2F5c0Ryb3BMb2NrcyB9Owot
ICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSosIEFs
d2F5c0Ryb3BMb2Nrc1RhZyA9IERvbnRBbHdheXNEcm9wTG9ja3MpOwotICAgICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgRHJvcEFsbExvY2tzKFZNKiwgQWx3YXlzRHJvcExvY2tzVGFnID0gRG9u
dEFsd2F5c0Ryb3BMb2Nrcyk7CisgICAgICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEcm9wQWxs
TG9ja3MoRXhlY1N0YXRlKik7CisgICAgICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEcm9wQWxs
TG9ja3MoVk0qKTsKICAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Ecm9wQWxsTG9ja3Mo
KTsKICAgICAgICAgICAgIAogICAgICAgICBwcml2YXRlOgorI2lmIEVOQUJMRShMTElOVF9DX0xP
T1ApCisgICAgICAgICAgICB2b2lkIHNldERyb3BEZXB0aCh1bnNpZ25lZCBkZXB0aCkgeyBtX2Ry
b3BEZXB0aCA9IGRlcHRoOyB9CisgICAgICAgICAgICB1bnNpZ25lZCBkcm9wRGVwdGgoKSBjb25z
dCB7IHJldHVybiBtX2Ryb3BEZXB0aDsgfQorI2VuZGlmCisKICAgICAgICAgICAgIGludHB0cl90
IG1fZHJvcHBlZExvY2tDb3VudDsKICAgICAgICAgICAgIFJlZlB0cjxWTT4gbV92bTsKKyNpZiBF
TkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICAgICAgdW5zaWduZWQgbV9kcm9wRGVwdGg7CisK
KyAgICAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0xvY2s7CisjZW5kaWYKICAgICAgICAgfTsKIAog
ICAgIHByaXZhdGU6CkBAIC0xMTYsOSArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgdW5sb2NrKGludHB0cl90IHVubG9ja0NvdW50KTsKICAgICAgICAgdm9pZCBzZXRPd25l
clRocmVhZChUaHJlYWRJZGVudGlmaWVyIG93bmVyKSB7IG1fb3duZXJUaHJlYWQgPSBvd25lcjsg
fQogCi0gICAgICAgIHVuc2lnbmVkIGRyb3BBbGxMb2NrcygpOwotICAgICAgICB1bnNpZ25lZCBk
cm9wQWxsTG9ja3NVbmNvbmRpdGlvbmFsbHkoKTsKLSAgICAgICAgdm9pZCBncmFiQWxsTG9ja3Mo
dW5zaWduZWQgbG9ja0NvdW50KTsKKyAgICAgICAgdW5zaWduZWQgZHJvcEFsbExvY2tzKERyb3BB
bGxMb2NrcyopOworICAgICAgICB2b2lkIGdyYWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqLCB1bnNp
Z25lZCBsb2NrQ291bnQpOwogCiAgICAgICAgIE11dGV4IG1fbG9jazsKICAgICAgICAgVGhyZWFk
SWRlbnRpZmllciBtX293bmVyVGhyZWFkOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzODQ2
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTQtMDItMTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92aW5nIGxpbWl0YXRpb24gb24gSlNMb2Nr4oCZcyBsb2NrRHJvcERlcHRoLgorICAg
ICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTI4NTcwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW06CisgICAgICAgIChTZW5kRGVsZWdh
dGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZFJ1bk9uTWFpblRocmVhZCk6CisgICAgICAg
IC0gTm8gbG9uZ2VyIG5lZWQgdG8gc3BlY2lmeSBBbHdheXNEcm9wTG9ja3MsIGJlY2F1c2UgRHJv
cEFsbExvY2tzIGlzCisgICAgICAgICAgbm93IGFsd2F5cyB1bmNvbmRpdGlvbmFsLgorCiAyMDE0
LTAyLTEwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZHJl
c3MgdGhlIHJldmlldyBjb21tZW50cyBmb3IgcjE2MzgyNS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNp
b24gMTYzODI4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVn
U2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgUGFnZVNj
cmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3AKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNMb2Nr
ZWRPckRpc2FibGVkKCkpOwogICAgIHsKICAgICAgICAgaWYgKFdlYlRocmVhZElzRW5hYmxlZCgp
KQotICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2Vi
Q29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpLCBKU0M6OkpTTG9jazo6RHJvcEFsbExv
Y2tzOjpBbHdheXNEcm9wTG9ja3MpOworICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxM
b2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpKTsK
ICAgICAgICAgV2ViUnVuTG9vcEVuYWJsZU5lc3RlZCgpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0JKHJldmlz
aW9uIDE2MzgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjEwLDcgKzIxMCw3IEBAIHN0YXRpYyB2b2lkIFNl
bmREZWxlZ2F0ZU1lc3NhZ2UoTlNJbnZvY2EKIAogICAgICAgICB7CiAgICAgICAgICAgICAvLyBD
b2RlIGJsb2NrIGNyZWF0ZWQgdG8gc2NvcGUgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBvdXRz
aWRlIG9mIFdlYlRocmVhZExvY2soKQotICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxM
b2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpLCBK
U0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjpBbHdheXNEcm9wTG9ja3MpOworICAgICAgICAgICAg
SlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6SlNET01XaW5k
b3dCYXNlOjpjb21tb25WTSgpKTsKICAgICAgICAgICAgIF9XZWJUaHJlYWRVbmxvY2soKTsKIAog
ICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKGRlbGVnYXRlU291cmNlKTsKQEAgLTI0
OCw3ICsyNDgsNyBAQCB2b2lkIFdlYlRocmVhZFJ1bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRy
b3BBbGxMb2NrcyhXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCksIEpTQzo6SlNM
b2NrOjpEcm9wQWxsTG9ja3M6OkFsd2F5c0Ryb3BMb2Nrcyk7CisgICAgSlNDOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25W
TSgpKTsKICAgICBfV2ViVGhyZWFkVW5sb2NrKCk7CiAKICAgICB2b2lkICheZGVsZWdhdGVCbG9j
a0NvcHkpKCkgPSBCbG9ja19jb3B5KGRlbGVnYXRlQmxvY2spOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223787</attachid>
            <date>2014-02-10 18:55:55 -0800</date>
            <delta_ts>2014-02-10 20:37:01 -0800</delta_ts>
            <desc>patch 3: rebased, and fixed more typo fails.</desc>
            <filename>bug-128570.patch</filename>
            <type>text/plain</type>
            <size>13619</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzODU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE0LTAyLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmluZyBsaW1pdGF0aW9uIG9uIEpTTG9jaydzIGxvY2tEcm9wRGVwdGguCisgICAgICAgIDxo
dHRwczovL3dlYmtpdC5vcmcvYi8xMjg1NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQgd2UndmUgc3dpdGNoZWQgdG8gdXNpbmcgdGhl
IEMgc3RhY2ssIHdlIG5vIGxvbmdlciBuZWVkIHRvIGxpbWl0CisgICAgICAgIHRoZSBKU0xvY2s6
OmxvY2tEcm9wRGVwdGggdG8gMi4KKworICAgICAgICBGb3IgQyBsb29wIGJ1aWxkcyB3aGljaCBz
dGlsbCB1c2UgdGhlIHNlcGFyYXRlIEpTU3RhY2ssIHRoZSBKU0xvY2sgd2lsbAorICAgICAgICBl
bmZvcmNlIG9yZGVyaW5nIGZvciByZS1ncmFiYmluZyB0aGUgbG9jayBhZnRlciBkcm9wcGluZyBp
dC4gUmUtZ3JhYmJpbmcKKyAgICAgICAgbXVzdCBvY2N1ciBpbiB0aGUgcmV2ZXJzZSBvcmRlciBv
ZiB0aGUgZHJvcHBpbmcgb2YgdGhlIGxvY2tzLgorCisgICAgICAgIE9yZGVyaW5nIGlzIGFjaGll
dmVkIGJ5IEpTTG9jazo6ZHJvcEFsbExvY2tzKCkgc3Rhc2hpbmcgYXdheSB0aGUKKyAgICAgICAg
SlNMb2NrOjogbV9sb2NrRHJvcERlcHRoIGluIGl0cyBEcm9wQWxsTG9ja3MgaW5zdGFuY2UncyBt
X2Ryb3BEZXB0aAorICAgICAgICBiZWZvcmUgdW5sb2NraW5nIHRoZSBsb2NrLiBTdWJzZXF1ZW50
bHksIEpTTG9jazo6Z3JhYkFsbExvY2tzKCkgd2lsbAorICAgICAgICBlbnN1cmUgdGhhdCBKU0xv
Y2tzOjptX2xvY2tEcm9wRGVwdGggZXF1YWxzIGl0cyBEcm9wQWxsTG9ja3MgaW5zdGFuY2Uncwor
ICAgICAgICBtX2Ryb3BEZXB0aCBiZWZvcmUgYWxsb3dpbmcgdGhlIGxvY2sgdG8gYmUgcmUtZ3Jh
YmJlZC4gT3RoZXJ3aXNlLCBpdAorICAgICAgICB3aWxsIHlpZWxkIGV4ZWN1dGlvbiBhbmQgcmV0
cnkgYWdhaW4gbGF0ZXIuCisKKyAgICAgICAgTm90ZTogYmVjYXVzZSBKU0xvY2tzOjptX2xvY2tE
cm9wRGVwdGggaXMgcHJvdGVjdGVkIGJ5IHRoZSBKU0xvY2sncworICAgICAgICBtdXRleCwgZ3Jh
YkFsbExvY2tzKCkgd2lsbCBvcHRpbWlzdGljYWxseSBsb2NrIHRoZSBKU0xvY2sgYmVmb3JlIGRv
aW5nCisgICAgICAgIHRoZSBjaGVjayBvbiBtX2xvY2tEcm9wRGVwdGguIElmIHRoZSBjaGVjayBm
YWlscywgaXQgd2lsbCB1bmxvY2sgdGhlCisgICAgICAgIEpTTG9jaywgeWllbGQsIGFuZCB0aGVu
IHJlbG9jayBpdCBhZ2FpbiBsYXRlciBiZWZvcmUgcmV0cnlpbmcgdGhlIGNoZWNrLgorICAgICAg
ICBUaGlzIGVuc3VyZXMgdGhhdCBtX2xvY2tEcm9wRGVwdGggcmVtYWlucyB1bmRlciB0aGUgcHJv
dGVjdGlvbiBvZiB0aGUKKyAgICAgICAgSlNMb2NrJ3MgbXV0ZXguCisKKyAgICAgICAgKiBydW50
aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZHJvcEFsbExvY2tzKToKKyAg
ICAgICAgKEpTQzo6SlNMb2NrOjpncmFiQWxsTG9ja3MpOgorICAgICAgICAoSlNDOjpKU0xvY2s6
OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpEcm9w
QWxsTG9ja3M6On5Ecm9wQWxsTG9ja3MpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6Cisg
ICAgICAgIChKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjpzZXREcm9wRGVwdGgpOgorICAgICAg
ICAoSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2Nrczo6ZHJvcERlcHRoKToKKwogMjAxNC0wMi0xMCAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEZUTCBzaG91bGQgc3Vw
cG9ydCBUb1RoaXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNw
cAkocmV2aXNpb24gMTYzODU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOSBAQAogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyNpbmNsdWRlIDx0aHJlYWQ+CisjZW5kaWYK
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE2Niw5NyArMTY5LDMzIEBAIGJvb2wgSlNMb2NrOjpj
dXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygKICAgICByZXR1cm4gbV9vd25lclRocmVhZCA9PSBX
VEY6OmN1cnJlbnRUaHJlYWQoKTsKIH0KIAotLy8gVGhpcyBpcyBmYWlybHkgbmFzdHkuICBXZSBh
bGxvdyBtdWx0aXBsZSB0aHJlYWRzIHRvIHJ1biBvbiB0aGUgc2FtZQotLy8gY29udGV4dCwgYW5k
IHdlIGRvIG5vdCByZXF1aXJlIGFueSBsb2NraW5nIHNlbWFudGljcyBpbiBkb2luZyBzbyAtCi0v
LyBjbGllbnRzIG9mIHRoZSBBUEkgbWF5IHNpbXBseSB1c2UgdGhlIGNvbnRleHQgZnJvbSBtdWx0
aXBsZSB0aHJlYWRzCi0vLyBjb25jdXJlbnRseSwgYW5kIGFzc3VtZSB0aGlzIHdpbGwgd29yay4g
IEluIG9yZGVyIHRvIG1ha2UgdGhpcyB3b3JrLAotLy8gV2UgbG9jayB0aGUgY29udGV4dCB3aGVu
IGEgdGhyZWFkIGVudGVycywgYW5kIHVubG9jayBpdCB3aGVuIGl0IGxlYXZlcy4KLS8vIEhvd2V2
ZXIgd2UgZG8gbm90IG9ubHkgdW5sb2NrIHdoZW4gdGhlIHRocmVhZCByZXR1cm5zIGZyb20gaXRz
Ci0vLyBlbnRyeSBwb2ludCAoZXZhbHVhdGUgc2NyaXB0IG9yIGNhbGwgZnVuY3Rpb24pLCB3ZSBh
bHNvIHVubG9jayB0aGUKLS8vIGNvbnRleHQgaWYgdGhlIHRocmVhZCBsZWF2ZXMgSlNDIGJ5IG1h
a2luZyBhIGNhbGwgb3V0IHRvIGFuIGV4dGVybmFsCi0vLyBmdW5jdGlvbiB0aHJvdWdoIGEgY2Fs
bGJhY2suCi0vLwotLy8gQWxsIHRocmVhZHMgdXNpbmcgdGhlIGNvbnRleHQgc2hhcmUgdGhlIHNh
bWUgSlMgc3RhY2sgKHRoZSBKU1N0YWNrKS4KLS8vIFdoZW5ldmVyIGEgdGhyZWFkIGNhbGxzIGlu
dG8gSlNDIGl0IHN0YXJ0cyB1c2luZyB0aGUgSlNTdGFjayBmcm9tIHRoZQotLy8gcHJldmlvdXMg
J2hpZ2ggd2F0ZXIgbWFyaycgLSB0aGUgbWF4aW11bSBwb2ludCB0aGUgc3RhY2sgaGFzIGV2ZXIg
Z3Jvd24gdG8KLS8vIChyZXR1cm5lZCBieSBKU1N0YWNrOjplbmQoKSkuICBTbyBpZiBhIGZpcnN0
IHRocmVhZCBjYWxscyBvdXQgdG8gYQotLy8gY2FsbGJhY2ssIGFuZCBhIHNlY29uZCB0aHJlYWQg
ZW50ZXJzIEpTQywgdGhlbiBhbHNvIGV4aXRzIGJ5IGNhbGxpbmcgb3V0Ci0vLyB0byBhIGNhbGxi
YWNrLCB3ZSBjYW4gYmUgbGVmdCB3aXRoIHN0YWNrZnJhbWVzIGZyb20gYm90aCB0aHJlYWRzIGlu
IHRoZQotLy8gSlNTdGFjay4gIEFzIHN1Y2gsIGEgcHJvYmxlbSBtYXkgb2NjdXIgc2hvdWxkIHRo
ZSBmaXJzdCB0aHJlYWQncwotLy8gY2FsbGJhY2sgY29tcGxldGUgZmlyc3QsIGFuZCBhdHRlbXB0
IHRvIHJldHVybiB0byBKU0MuICBXZXJlIHdlIHRvIGFsbG93Ci0vLyB0aGlzIHRvIGhhcHBlbiwg
YW5kIHdlcmUgaXRzIHN0YWNrIHRvIGdyb3cgZnVydGhlciwgdGhlbiBpdCBtYXkgcG90ZW50aWFs
bHkKLS8vIHdyaXRlIG92ZXIgdGhlIHNlY29uZCB0aHJlYWQncyBjYWxsIGZyYW1lcy4KLS8vCi0v
LyBUbyBhdm9pZCBKUyBzdGFjayBjb3JydXB0aW9uIHdlIGVuZm9yY2UgYSBwb2xpY3kgb2Ygb25s
eSBldmVyIGFsbG93aW5nIHR3bwotLy8gdGhyZWFkcyB0byB1c2UgYSBKUyBjb250ZXh0IGNvbmN1
cnJlbnRseSwgYW5kIG9ubHkgYWxsb3dpbmcgdGhlIHNlY29uZCBvZgotLy8gdGhlc2UgdGhyZWFk
cyB0byBleGVjdXRlIHVudGlsIGl0IGhhcyBjb21wbGV0ZWQgYW5kIGZ1bGx5IHJldHVybmVkIGZy
b20gaXRzCi0vLyBvdXRlcm1vc3QgY2FsbCBpbnRvIEpTQy4gIFdlIGVuZm9yY2UgdGhpcyBwb2xp
Y3kgdXNpbmcgJ2xvY2tEcm9wRGVwdGgnLiAgVGhlCi0vLyBmaXJzdCB0aW1lIGEgdGhyZWFkIGV4
aXRzIGl0IHdpbGwgY2FsbCBEcm9wQWxsTG9ja3MgLSB3aGljaCB3aWxsIGRvIGFzIGV4cGVjdGVk
Ci0vLyBhbmQgZHJvcCBsb2NrcyBhbGxvd2luZyBhbm90aGVyIHRocmVhZCB0byBlbnRlci4gIFNo
b3VsZCBhbm90aGVyIHRocmVhZCwgb3IgdGhlCi0vLyBzYW1lIHRocmVhZCBhZ2FpbiwgZW50ZXIg
SlNDICh0aHJvdWdoIGV2YWx1YXRlIHNjcmlwdCBvciBjYWxsIGZ1bmN0aW9uKSwgYW5kIGV4aXQK
LS8vIGFnYWluIHRocm91Z2ggYSBjYWxsYmFjaywgdGhlbiB0aGUgbG9ja3Mgd2lsbCBub3QgYmUg
ZHJvcHBlZCB3aGVuIERyb3BBbGxMb2NrcwotLy8gaXMgY2FsbGVkIChzaW5jZSBsb2NrRHJvcERl
cHRoIGlzIG5vbi16ZXJvKS4gIFNpbmNlIHRoaXMgdGhyZWFkIGlzIHN0aWxsIGhvbGRpbmcKLS8v
IHRoZSBsb2Nrcywgb25seSBpdCB3aWxsIGJlIGFibGUgdG8gcmUtZW50ZXIgSlNDIChlaXRoZXIg
YmUgcmV0dXJuaW5nIGZyb20gdGhlCi0vLyBjYWxsYmFjaywgb3IgYnkgcmUtZW50ZXJpbmcgdGhy
b3VnaCBhbm90aGVyIGNhbGwgdG8gZXZhdWxhdGUgc2NyaXB0IG9yIGNhbGwKLS8vIGZ1bmN0aW9u
KS4KLS8vCi0vLyBUaGlzIHBvbGljeSBpcyBzbGlnaHRseSBtb3JlIHJlc3RyaWNpdmUgdGhhbiBp
dCBuZWVkcyB0byBiZSBmb3IgY29ycmVjdG5lc3MgLQotLy8gd2UgY291bGQgdmFsaWRseSBhbGxv
dyBmdXRoZXIgZW50cmllcyBpbnRvIEpTQyBmcm9tIG90aGVyIHRocmVhZHMsIHdlIG9ubHkKLS8v
IG5lZWQgZW5zdXJlIHRoYXQgY2FsbGJhY2tzIHJldHVybiBpbiB0aGUgcmV2ZXJzZSBjaHJvbm9s
b2dpY2FsIG9yZGVyIG9mIHRoZQotLy8gb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIG1hZGUgLSB0
aG91Z2ggaW1wbGVtZW50aW5nIHRoZSBsZXNzIHJlc3RyaWN0aXZlIHBvbGljeQotLy8gd291bGQg
bGlrZWx5IGluY3JlYXNlIGNvbXBsZXhpdHkgYW5kIG92ZXJoZWFkLgotLy8KLQogLy8gVGhpcyBm
dW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIgb2YgbG9ja3MgdGhhdCB3ZXJlIGRyb3BwZWQuCi11
bnNpZ25lZCBKU0xvY2s6OmRyb3BBbGxMb2NrcygpCit1bnNpZ25lZCBKU0xvY2s6OmRyb3BBbGxM
b2NrcyhEcm9wQWxsTG9ja3MqIGRyb3BwZXIpCiB7CiAgICAgLy8gQ2hlY2sgaWYgdGhpcyB0aHJl
YWQgaXMgY3VycmVudGx5IGhvbGRpbmcgdGhlIGxvY2suCiAgICAgLy8gRklYTUU6IE1heWJlIHdl
IHdhbnQgdG8gcmVxdWlyZSB0aGlzLCBndWFyZCB3aXRoIGFuIEFTU0VSVD8KICAgICBpZiAoIWN1
cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgLy8g
RG9uJ3QgZHJvcCB0aGUgbG9ja3MgaWYgdGhleSd2ZSBhbHJlYWR5IGJlZW4gZHJvcHBlZCBvbmNl
LgotICAgIC8vIChJZiB0aGUgcHJpb3IgZHJvcCBjYW1lIGZyb20gYW5vdGhlciB0aHJlYWQsIGFu
ZCBpdCByZXN1bWVkIGZpcnN0LAotICAgIC8vIGl0IGNvdWxkIHRyYXNoIG91ciByZWdpc3RlciBm
aWxlKS4KLSAgICBpZiAobV9sb2NrRHJvcERlcHRoKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7Ci0gICAgdGhyZWFk
RGF0YS5zZXRTYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeShtX3ZtLT5zdGFja1BvaW50ZXJBdFZN
RW50cnkpOwotICAgIHRocmVhZERhdGEuc2V0U2F2ZWRMYXN0U3RhY2tUb3AobV92bS0+bGFzdFN0
YWNrVG9wKCkpOwotICAgIHRocmVhZERhdGEuc2V0U2F2ZWRSZXNlcnZlZFpvbmVTaXplKG1fdm0t
PnJlc2VydmVkWm9uZVNpemUoKSk7Ci0KLSAgICAvLyBtX2xvY2tEcm9wRGVwdGggaXMgb25seSBp
bmNyZW1lbnRlZCBpZiBhbnkgbG9ja3Mgd2VyZSBkcm9wcGVkLgogICAgICsrbV9sb2NrRHJvcERl
cHRoOwogCi0gICAgdW5zaWduZWQgZHJvcHBlZExvY2tDb3VudCA9IG1fbG9ja0NvdW50OwotICAg
IHVubG9jayhkcm9wcGVkTG9ja0NvdW50KTsKLQotICAgIHJldHVybiBkcm9wcGVkTG9ja0NvdW50
OwotfQotCi11bnNpZ25lZCBKU0xvY2s6OmRyb3BBbGxMb2Nrc1VuY29uZGl0aW9uYWxseSgpCi17
Ci0gICAgLy8gQ2hlY2sgaWYgdGhpcyB0aHJlYWQgaXMgY3VycmVudGx5IGhvbGRpbmcgdGhlIGxv
Y2suCi0gICAgLy8gRklYTUU6IE1heWJlIHdlIHdhbnQgdG8gcmVxdWlyZSB0aGlzLCBndWFyZCB3
aXRoIGFuIEFTU0VSVD8KLSAgICBpZiAoIWN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpCi0g
ICAgICAgIHJldHVybiAwOworICAgIFVOVVNFRF9QQVJBTShkcm9wcGVyKTsKKyNpZiBFTkFCTEUo
TExJTlRfQ19MT09QKQorICAgIGRyb3BwZXItPnNldERyb3BEZXB0aChtX2xvY2tEcm9wRGVwdGgp
OworI2VuZGlmCiAKICAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0
YSgpOwogICAgIHRocmVhZERhdGEuc2V0U2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkobV92bS0+
c3RhY2tQb2ludGVyQXRWTUVudHJ5KTsKICAgICB0aHJlYWREYXRhLnNldFNhdmVkTGFzdFN0YWNr
VG9wKG1fdm0tPmxhc3RTdGFja1RvcCgpKTsKICAgICB0aHJlYWREYXRhLnNldFNhdmVkUmVzZXJ2
ZWRab25lU2l6ZShtX3ZtLT5yZXNlcnZlZFpvbmVTaXplKCkpOwogCi0gICAgLy8gbV9sb2NrRHJv
cERlcHRoIGlzIG9ubHkgaW5jcmVtZW50ZWQgaWYgYW55IGxvY2tzIHdlcmUgZHJvcHBlZC4KLSAg
ICArK21fbG9ja0Ryb3BEZXB0aDsKLQogICAgIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291bnQgPSBt
X2xvY2tDb3VudDsKICAgICB1bmxvY2soZHJvcHBlZExvY2tDb3VudCk7CiAKICAgICByZXR1cm4g
ZHJvcHBlZExvY2tDb3VudDsKIH0KIAotdm9pZCBKU0xvY2s6OmdyYWJBbGxMb2Nrcyh1bnNpZ25l
ZCBkcm9wcGVkTG9ja0NvdW50KQordm9pZCBKU0xvY2s6OmdyYWJBbGxMb2NrcyhEcm9wQWxsTG9j
a3MqIGRyb3BwZXIsIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291bnQpCiB7CiAgICAgLy8gSWYgbm8g
bG9ja3Mgd2VyZSBkcm9wcGVkLCBub3RoaW5nIHRvIGRvIQogICAgIGlmICghZHJvcHBlZExvY2tD
b3VudCkKQEAgLTI2NSw2ICsyMDQsMTUgQEAgdm9pZCBKU0xvY2s6OmdyYWJBbGxMb2Nrcyh1bnNp
Z25lZCBkcm9wcAogICAgIEFTU0VSVCghY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSk7CiAg
ICAgbG9jayhkcm9wcGVkTG9ja0NvdW50KTsKIAorICAgIFVOVVNFRF9QQVJBTShkcm9wcGVyKTsK
KyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIHdoaWxlIChkcm9wcGVyLT5kcm9wRGVwdGgo
KSAhPSBtX2xvY2tEcm9wRGVwdGgpIHsKKyAgICAgICAgdW5sb2NrKGRyb3BwZWRMb2NrQ291bnQp
OworICAgICAgICBzdGQ6OnRoaXNfdGhyZWFkOjp5aWVsZCgpOworICAgICAgICBsb2NrKGRyb3Bw
ZWRMb2NrQ291bnQpOworICAgIH0KKyNlbmRpZgorCiAgICAgLS1tX2xvY2tEcm9wRGVwdGg7CiAK
ICAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwpAQCAtMjcz
LDM3ICsyMjEsMjkgQEAgdm9pZCBKU0xvY2s6OmdyYWJBbGxMb2Nrcyh1bnNpZ25lZCBkcm9wcAog
ICAgIG1fdm0tPnVwZGF0ZVN0YWNrTGltaXRXaXRoUmVzZXJ2ZWRab25lU2l6ZSh0aHJlYWREYXRh
LnNhdmVkUmVzZXJ2ZWRab25lU2l6ZSgpKTsKIH0KIAotSlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRy
b3BBbGxMb2NrcyhFeGVjU3RhdGUqIGV4ZWMsIEFsd2F5c0Ryb3BMb2Nrc1RhZyBhbHdheXNEcm9w
TG9ja3MpCitKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhl
YykKICAgICA6IG1fZHJvcHBlZExvY2tDb3VudCgwKQogICAgICwgbV92bShleGVjID8gJmV4ZWMt
PnZtKCkgOiBudWxscHRyKQogewogICAgIGlmICghbV92bSkKICAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKGFsd2F5c0Ryb3BMb2NrcykKLSAgICAgICAgbV9kcm9wcGVkTG9ja0NvdW50ID0gbV92
bS0+YXBpTG9jaygpLmRyb3BBbGxMb2Nrc1VuY29uZGl0aW9uYWxseSgpOwotICAgIGVsc2UKLSAg
ICAgICAgbV9kcm9wcGVkTG9ja0NvdW50ID0gbV92bS0+YXBpTG9jaygpLmRyb3BBbGxMb2Nrcygp
OworICAgIG1fZHJvcHBlZExvY2tDb3VudCA9IG1fdm0tPmFwaUxvY2soKS5kcm9wQWxsTG9ja3Mo
dGhpcyk7CiB9CiAKLUpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9ja3MoVk0qIHZtLCBB
bHdheXNEcm9wTG9ja3NUYWcgYWx3YXlzRHJvcExvY2tzKQorSlNMb2NrOjpEcm9wQWxsTG9ja3M6
OkRyb3BBbGxMb2NrcyhWTSogdm0pCiAgICAgOiBtX2Ryb3BwZWRMb2NrQ291bnQoMCkKICAgICAs
IG1fdm0odm0pCiB7CiAgICAgaWYgKCFtX3ZtKQogICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
YWx3YXlzRHJvcExvY2tzKQotICAgICAgICBtX2Ryb3BwZWRMb2NrQ291bnQgPSBtX3ZtLT5hcGlM
b2NrKCkuZHJvcEFsbExvY2tzVW5jb25kaXRpb25hbGx5KCk7Ci0gICAgZWxzZQotICAgICAgICBt
X2Ryb3BwZWRMb2NrQ291bnQgPSBtX3ZtLT5hcGlMb2NrKCkuZHJvcEFsbExvY2tzKCk7CisgICAg
bV9kcm9wcGVkTG9ja0NvdW50ID0gbV92bS0+YXBpTG9jaygpLmRyb3BBbGxMb2Nrcyh0aGlzKTsK
IH0KIAogSlNMb2NrOjpEcm9wQWxsTG9ja3M6On5Ecm9wQWxsTG9ja3MoKQogewogICAgIGlmICgh
bV92bSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fdm0tPmFwaUxvY2soKS5ncmFiQWxsTG9ja3Mo
bV9kcm9wcGVkTG9ja0NvdW50KTsKKyAgICBtX3ZtLT5hcGlMb2NrKCkuZ3JhYkFsbExvY2tzKHRo
aXMsIG1fZHJvcHBlZExvY2tDb3VudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHJldmlzaW9uIDE2Mzg1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC05OSwxNiArOTksMjMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNsYXNzIERyb3BBbGxM
b2NrcyB7CiAgICAgICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcm9wQWxsTG9ja3MpOwog
ICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCB3ZSByZWxlYXNlIGFs
bCBsb2NrcyBjb25kaXRpb25hbGx5LiBTb21lIGNsaWVudHMsIHN1Y2ggYXMgTW9iaWxlIFNhZmFy
aSwKLSAgICAgICAgICAgIC8vIG1heSByZXF1aXJlIHRoYXQgd2UgcmVsZWFzZSBhbGwgbG9ja3Mg
dW5jb25kaXRpb25hbGx5LgotICAgICAgICAgICAgZW51bSBBbHdheXNEcm9wTG9ja3NUYWcgeyBE
b250QWx3YXlzRHJvcExvY2tzID0gMCwgQWx3YXlzRHJvcExvY2tzIH07Ci0gICAgICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBEcm9wQWxsTG9ja3MoRXhlY1N0YXRlKiwgQWx3YXlzRHJvcExvY2tz
VGFnID0gRG9udEFsd2F5c0Ryb3BMb2Nrcyk7Ci0gICAgICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBEcm9wQWxsTG9ja3MoVk0qLCBBbHdheXNEcm9wTG9ja3NUYWcgPSBEb250QWx3YXlzRHJvcExv
Y2tzKTsKKyAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERyb3BBbGxMb2NrcyhFeGVjU3Rh
dGUqKTsKKyAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERyb3BBbGxMb2NrcyhWTSopOwog
ICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkRyb3BBbGxMb2NrcygpOwogICAgICAgICAg
ICAgCiAgICAgICAgIHByaXZhdGU6CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAg
ICAgIHZvaWQgc2V0RHJvcERlcHRoKHVuc2lnbmVkIGRlcHRoKSB7IG1fZHJvcERlcHRoID0gZGVw
dGg7IH0KKyAgICAgICAgICAgIHVuc2lnbmVkIGRyb3BEZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZHJvcERlcHRoOyB9CisjZW5kaWYKKwogICAgICAgICAgICAgaW50cHRyX3QgbV9kcm9wcGVkTG9j
a0NvdW50OwogICAgICAgICAgICAgUmVmUHRyPFZNPiBtX3ZtOworI2lmIEVOQUJMRShMTElOVF9D
X0xPT1ApCisgICAgICAgICAgICB1bnNpZ25lZCBtX2Ryb3BEZXB0aDsKKworICAgICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpTTG9jazsKKyNlbmRpZgogICAgICAgICB9OwogCiAgICAgcHJpdmF0ZToK
QEAgLTExNiw5ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCB1bmxvY2so
aW50cHRyX3QgdW5sb2NrQ291bnQpOwogICAgICAgICB2b2lkIHNldE93bmVyVGhyZWFkKFRocmVh
ZElkZW50aWZpZXIgb3duZXIpIHsgbV9vd25lclRocmVhZCA9IG93bmVyOyB9CiAKLSAgICAgICAg
dW5zaWduZWQgZHJvcEFsbExvY2tzKCk7Ci0gICAgICAgIHVuc2lnbmVkIGRyb3BBbGxMb2Nrc1Vu
Y29uZGl0aW9uYWxseSgpOwotICAgICAgICB2b2lkIGdyYWJBbGxMb2Nrcyh1bnNpZ25lZCBsb2Nr
Q291bnQpOworICAgICAgICB1bnNpZ25lZCBkcm9wQWxsTG9ja3MoRHJvcEFsbExvY2tzKik7Cisg
ICAgICAgIHZvaWQgZ3JhYkFsbExvY2tzKERyb3BBbGxMb2NrcyosIHVuc2lnbmVkIGxvY2tDb3Vu
dCk7CiAKICAgICAgICAgTXV0ZXggbV9sb2NrOwogICAgICAgICBUaHJlYWRJZGVudGlmaWVyIG1f
b3duZXJUaHJlYWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjM4NTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNC0w
Mi0xMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zpbmcg
bGltaXRhdGlvbiBvbiBKU0xvY2vigJlzIGxvY2tEcm9wRGVwdGguCisgICAgICAgIDxodHRwczov
L3dlYmtpdC5vcmcvYi8xMjg1NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogYmluZGluZ3MvanMvUGFn
ZVNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFNlbmREZWxlZ2F0ZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViVGhyZWFkUnVuT25NYWluVGhyZWFkKToKKyAgICAgICAgLSBObyBsb25nZXIg
bmVlZCB0byBzcGVjaWZ5IEFsd2F5c0Ryb3BMb2NrcywgYmVjYXVzZSBEcm9wQWxsTG9ja3MgaXMK
KyAgICAgICAgICBub3cgYWx3YXlzIHVuY29uZGl0aW9uYWwuCisKIDIwMTQtMDItMTAgIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENsZWFuIHVwIE1h
cmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2Vy
dmVyLmNwcAkocmV2aXNpb24gMTYzODU0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
UGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDcgKzE5MCw3
IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3AKICAgICBBU1NFUlQo
V2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkpOwogICAgIHsKICAgICAgICAgaWYgKFdlYlRo
cmVhZElzRW5hYmxlZCgpKQotICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBk
cm9wQWxsTG9ja3MoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpLCBKU0M6OkpT
TG9jazo6RHJvcEFsbExvY2tzOjpBbHdheXNEcm9wTG9ja3MpOworICAgICAgICAgICAgSlNDOjpK
U0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
Ojpjb21tb25WTSgpKTsKICAgICAgICAgV2ViUnVuTG9vcEVuYWJsZU5lc3RlZCgpOwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVU
aHJlYWQubW0JKHJldmlzaW9uIDE2Mzg1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV2ViQ29yZVRocmVhZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjEwLDcgKzIxMCw3IEBA
IHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoTlNJbnZvY2EKIAogICAgICAgICB7CiAg
ICAgICAgICAgICAvLyBDb2RlIGJsb2NrIGNyZWF0ZWQgdG8gc2NvcGUgSlNDOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBvdXRzaWRlIG9mIFdlYlRocmVhZExvY2soKQotICAgICAgICAgICAgSlNDOjpK
U0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
Ojpjb21tb25WTSgpLCBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzOjpBbHdheXNEcm9wTG9ja3Mp
OworICAgICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2Vi
Q29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpKTsKICAgICAgICAgICAgIF9XZWJUaHJl
YWRVbmxvY2soKTsKIAogICAgICAgICAgICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKGRlbGVnYXRl
U291cmNlKTsKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFdlYlRocmVhZFJ1bk9uTWFpblRocmVh
ZCh2b2lkKF5kZWxlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKU0M6OkpTTG9jazo6
RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1v
blZNKCksIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3M6OkFsd2F5c0Ryb3BMb2Nrcyk7CisgICAg
SlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoV2ViQ29yZTo6SlNET01XaW5k
b3dCYXNlOjpjb21tb25WTSgpKTsKICAgICBfV2ViVGhyZWFkVW5sb2NrKCk7CiAKICAgICB2b2lk
ICheZGVsZWdhdGVCbG9ja0NvcHkpKCkgPSBCbG9ja19jb3B5KGRlbGVnYXRlQmxvY2spOwo=
</data>
<flag name="review"
          id="247859"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>