<?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>85148</bug_id>
          
          <creation_ts>2012-04-28 18:00:38 -0700</creation_ts>
          <short_desc>Factored threaded block allocation into a separate object</short_desc>
          <delta_ts>2012-04-28 18:43:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>levin+threading</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>612362</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-04-28 18:00:38 -0700</bug_when>
    <thetext>Factored threaded block allocation into a separate object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612364</commentid>
    <comment_count>1</comment_count>
      <attachid>139383</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-04-28 18:07:27 -0700</bug_when>
    <thetext>Created attachment 139383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612370</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-04-28 18:43:43 -0700</bug_when>
    <thetext>Committed r115590: &lt;http://trac.webkit.org/changeset/115590&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139383</attachid>
            <date>2012-04-28 18:07:27 -0700</date>
            <delta_ts>2012-04-28 18:30:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85148-20120428180722.patch</filename>
            <type>text/plain</type>
            <size>27728</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE1NTg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBA
CisyMDEyLTA0LTI4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRmFjdG9yZWQgdGhyZWFkZWQgYmxvY2sgYWxsb2NhdGlvbiBpbnRvIGEgc2VwYXJhdGUgb2Jq
ZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE0
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDk5JSBv
ZiB0aGlzIHBhdGNoIGp1c3QgbW92ZXMgZHVwbGljYXRlZCBibG9jayBhbGxvY2F0aW9uIGFuZCAK
KyAgICAgICAgZGVhbGxvY2F0aW9uIGNvZGUgaW50byBhIG5ldyBvYmplY3QgbmFtZWQgQmxvY2tB
bGxvY2F0b3IsIHdpdGggdGhlc2UgCisgICAgICAgIGV4Y2VwdGlvbnM6CisKKyAgICAgICAgKiBo
ZWFwL0Jsb2NrQWxsb2NhdG9yLmg6IEFkZGVkLgorICAgICAgICAoQmxvY2tBbGxvY2F0b3I6OkJs
b2NrQWxsb2NhdG9yKTogVGhlIG9yZGVyIG9mIGRlY2xhcmF0aW9ucyBoZXJlIG5vdyAKKyAgICAg
ICAgZ3VhcmRzIHVzIGFnYWluc3QgYW4gdW5saWtlbHkgcmFjZSBjb25kaXRpb24gZHVyaW5nIHN0
YXJ0dXAuCisKKyAgICAgICAgKiBoZWFwL0Jsb2NrQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgSlND
OjpCbG9ja0FsbG9jYXRvcjo6YmxvY2tGcmVlaW5nVGhyZWFkTWFpbik6IEFkZGVkIGEgRklYTUUg
dG8gCisgICAgICAgIGhpZ2hsaWdodCBhIGxhY2sgb2YgY2xhcml0eSB3ZSBoYXZlIGluIG91ciBi
bG9jayBkZWFsbG9jYXRpb24gcm91dGluZXMuCisKIDIwMTItMDQtMjggIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBUcnkgdG8gZml4IHRoZSBRdCBidWlsZC4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExNTU4NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtODUs
NiArODUsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9ERkdUaHVua3Mu
Y3BwCiAgICAgZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAKIAorICAg
IGhlYXAvQmxvY2tBbGxvY2F0b3IuY3BwCiAgICAgaGVhcC9Db3BpZWRTcGFjZS5jcHAKICAgICBo
ZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAogICAgIGhlYXAvREZHQ29kZUJsb2Nrcy5jcHAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
MTU1ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29y
a2luZyBjb3B5KQpAQCAtMjI2LDYgKzIyNiw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGFuZGxlVHlwZXMuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxv
Y2tBbGxvY2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9MaXN0YWJsZUhhbmRsZXIuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkocmV2aXNpb24gMTE1NTg2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQwMSw2ICs0
MDEsNyBAQAogICAgICAgICAgICAgJ2hlYXAvREZHQ29kZUJsb2Nrcy5jcHAnLAogICAgICAgICAg
ICAgJ2hlYXAvSGFuZGxlU2V0LmNwcCcsCiAgICAgICAgICAgICAnaGVhcC9IYW5kbGVTdGFjay5j
cHAnLAorICAgICAgICAgICAgJ2hlYXAvQmxvY2tBbGxvY2F0b3IuY3BwJywKICAgICAgICAgICAg
ICdoZWFwL0hlYXAuY3BwJywKICAgICAgICAgICAgICdoZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHAnLAogICAgICAgICAgICAgJ2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcCcsCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTE1NTg2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgaGVhcC9XZWFrQmxvY2suY3BwIFwKICAgICBoZWFwL0hhbmRsZVNldC5jcHAg
XAogICAgIGhlYXAvSGFuZGxlU3RhY2suY3BwIFwKKyAgICBoZWFwL0Jsb2NrQWxsb2NhdG9yLmNw
cCBcCiAgICAgaGVhcC9IZWFwLmNwcCBcCiAgICAgaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3Bw
IFwKICAgICBoZWFwL01hcmtTdGFjay5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDExNTU4
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcwLDYg
KzIxNzAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cLi5caGVhcFxCbG9ja0FsbG9jYXRvci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQmxvY2tBbGxvY2F0b3IuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxI
ZWFwLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTE1NTg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw2
ICsyOTgsOCBAQAogCQkxNDdGMzlENTEwN0VDMzc2MDA0MjdBNDggLyogSlNTdHJpbmcuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMkU5QjYwRTE4
NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLzsgfTsKIAkJMTQ3RjM5RDYxMDdFQzM3NjAw
NDI3QTQ4IC8qIEpTVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTVmFsdWUuY3BwICovOyB9
OwogCQkxNDdGMzlENzEwN0VDMzc2MDA0MjdBNDggLyogSlNWYXJpYWJsZU9iamVjdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIyQTM5QTBFMTZF
MTQ4MDBBRjIxQzggLyogSlNWYXJpYWJsZU9iamVjdC5jcHAgKi87IH07CisJCTE0ODE2RTFCMTU0
Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgxNkUxOTE1NENDNTZDMDBCODA1NEMgLyogQmxv
Y2tBbGxvY2F0b3IuY3BwICovOyB9OworCQkxNDgxNkUxQzE1NENDNTZDMDBCODA1NEMgLyogQmxv
Y2tBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0ODE2RTFBMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0ODJCNzRFMEE0MzAz
MjgwMDUxN0NGQyAvKiBKU1N0cmluZ1JlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgyQjc0QzBBNDMwMzI4MDA1MTdDRkMgLyogSlNTdHJpbmdS
ZWYuY3BwICovOyB9OwogCQkxNDgyQjdFNDBBNDMwNzYwMDA1MTdDRkMgLyogSlNPYmplY3RSZWYu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MkI3
RTIwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmNwcCAqLzsgfTsKIAkJMTQ4Q0QxRDgx
MDhDRjkwMjAwODE2M0M2IC8qIEpTQ29udGV4dFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0OENEMUQ3MTA4Q0Y5MDIwMDgxNjNDNiAv
KiBKU0NvbnRleHRSZWZQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTkxNSw2ICs5MTcsOCBAQAogCQkxNDdCODNBQTBFNkRCOEM5MDA0
Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3Qjg0NjIwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5
U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRQcm9wZXJ0eVNsb3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ4MERCOUIwRERDMjI3RjAwM0NGREYy
IC8qIERlYnVnZ2VyQ2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERlYnVnZ2VyQ2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0ODE2
RTE5MTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9ja0FsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE0ODE2RTFBMTU0Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0FsbG9jYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDgyQjZFQTBBNDMwMEIzMDA1MTdDRkMgLyog
SlNWYWx1ZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVlUmVm
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0ODJCNzRCMEE0MzAzMjgwMDUxN0NG
QyAvKiBKU1N0cmluZ1JlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0
cmluZ1JlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDgyQjc0QzBBNDMwMzI4
MDA1MTdDRkMgLyogSlNTdHJpbmdSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNTdHJpbmdSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTU2MCw2ICsxNTY0LDggQEAKIAkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhlYXAgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTE0ODE2RTE5MTU0
Q0M1NkMwMEI4MDU0QyAvKiBCbG9ja0FsbG9jYXRvci5jcHAgKi8sCisJCQkJMTQ4MTZFMUExNTRD
QzU2QzAwQjgwNTRDIC8qIEJsb2NrQWxsb2NhdG9yLmggKi8sCiAJCQkJQTc1MjFFMTIxNDI5MTY5
QTAwM0M4RDBDIC8qIENhcmRTZXQuaCAqLywKIAkJCQkxNDZCMTREQjEyRUI1QjEyMDAxQkVDMUIg
LyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICovLAogCQkJCTE0OURBQUYyMTJFQjU1OUQwMDgzQjEy
QiAvKiBDb25zZXJ2YXRpdmVSb290cy5oICovLApAQCAtMjU2Nyw2ICsyNTczLDcgQEAKIAkJCQkw
RjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYxRTNBNDcxNTM0Q0JCOTAwMEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE1MDEzMzE1NEJCMTNGMDA1RDhDOTggLyogV2Vh
a1NldElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0ODE2RTFDMTU0Q0M1NkMwMEI4MDU0
QyAvKiBCbG9ja0FsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zMTI5LDYgKzMxMzYsNyBA
QAogCQkJCTg2NDJDNTEwMTUxQzA2QTkwMDQ2RDRFRiAvKiBSZWdFeHBDYWNoZWRSZXN1bHQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODY0MkM1MTIxNTFDMDgzRDAwNDZENEVGIC8qIFJlZ0V4cE1h
dGNoZXNBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjNDNkQ5QzE1MjExMTFBMDA1ODVF
NEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ4MTZF
MUIxNTRDQzU2QzAwQjgwNTRDIC8qIEJsb2NrQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9y
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQmxvY2tBbGxvY2F0b3IuaCIKKworI2luY2x1ZGUgIk1h
cmtlZEJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitCbG9ja0FsbG9jYXRvcjo6QmxvY2tBbGxvY2F0b3IoKQorICAgIDogbV9udW1iZXJP
ZkZyZWVCbG9ja3MoMCkKKyAgICAsIG1fYmxvY2tGcmVlaW5nVGhyZWFkU2hvdWxkUXVpdChmYWxz
ZSkKKyAgICAsIG1fYmxvY2tGcmVlaW5nVGhyZWFkKGNyZWF0ZVRocmVhZChibG9ja0ZyZWVpbmdU
aHJlYWRTdGFydEZ1bmMsIHRoaXMsICJKYXZhU2NyaXB0Q29yZTo6QmxvY2tGcmVlIikpCit7Cisg
ICAgQVNTRVJUKG1fYmxvY2tGcmVlaW5nVGhyZWFkKTsKK30KKworQmxvY2tBbGxvY2F0b3I6On5C
bG9ja0FsbG9jYXRvcigpCit7CisgICAgcmVsZWFzZUZyZWVCbG9ja3MoKTsKKyAgICB7CisgICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2ZyZWVCbG9ja0xvY2spOworICAgICAgICBtX2Jsb2Nr
RnJlZWluZ1RocmVhZFNob3VsZFF1aXQgPSB0cnVlOworICAgICAgICBtX2ZyZWVCbG9ja0NvbmRp
dGlvbi5icm9hZGNhc3QoKTsKKyAgICB9CisgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV9i
bG9ja0ZyZWVpbmdUaHJlYWQpOworfQorCit2b2lkIEJsb2NrQWxsb2NhdG9yOjpyZWxlYXNlRnJl
ZUJsb2NrcygpCit7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgTWFya2VkQmxvY2sqIGJs
b2NrOworICAgICAgICB7CisgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9mcmVlQmxv
Y2tMb2NrKTsKKyAgICAgICAgICAgIGlmICghbV9udW1iZXJPZkZyZWVCbG9ja3MpCisgICAgICAg
ICAgICAgICAgYmxvY2sgPSAwOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IEhvdyBkbyB3ZSBrbm93IHRoaXMgaXMgYSBNYXJrZWRCbG9jaz8gSXQgY291bGQg
YmUgYSBDb3BpZWRCbG9jay4KKyAgICAgICAgICAgICAgICBibG9jayA9IHN0YXRpY19jYXN0PE1h
cmtlZEJsb2NrKj4obV9mcmVlQmxvY2tzLnJlbW92ZUhlYWQoKSk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKGJsb2NrKTsKKyAgICAgICAgICAgICAgICBtX251bWJlck9mRnJlZUJsb2Nrcy0tOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoIWJsb2NrKQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBNYXJrZWRCbG9jazo6ZGVzdHJv
eShibG9jayk7CisgICAgfQorfQorCit2b2lkIEJsb2NrQWxsb2NhdG9yOjp3YWl0Rm9yUmVsYXRp
dmVUaW1lV2hpbGVIb2xkaW5nTG9jayhkb3VibGUgcmVsYXRpdmUpCit7CisgICAgaWYgKG1fYmxv
Y2tGcmVlaW5nVGhyZWFkU2hvdWxkUXVpdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZnJlZUJs
b2NrQ29uZGl0aW9uLnRpbWVkV2FpdChtX2ZyZWVCbG9ja0xvY2ssIGN1cnJlbnRUaW1lKCkgKyBy
ZWxhdGl2ZSk7Cit9CisKK3ZvaWQgQmxvY2tBbGxvY2F0b3I6OndhaXRGb3JSZWxhdGl2ZVRpbWUo
ZG91YmxlIHJlbGF0aXZlKQoreworICAgIC8vIElmIHRoaXMgcmV0dXJucyBlYXJseSwgdGhhdCdz
IGZpbmUsIHNvIGxvbmcgYXMgaXQgZG9lc24ndCBkbyBpdCB0b28KKyAgICAvLyBmcmVxdWVudGx5
LiBJdCB3b3VsZCBvbmx5IGJlIGEgYnVnIGlmIHRoaXMgZnVuY3Rpb24gZmFpbGVkIHRvIHJldHVy
bgorICAgIC8vIHdoZW4gaXQgd2FzIGFza2VkIHRvIGRvIHNvLgorICAgIAorICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2ZyZWVCbG9ja0xvY2spOworICAgIHdhaXRGb3JSZWxhdGl2ZVRpbWVXaGls
ZUhvbGRpbmdMb2NrKHJlbGF0aXZlKTsKK30KKwordm9pZCBCbG9ja0FsbG9jYXRvcjo6YmxvY2tG
cmVlaW5nVGhyZWFkU3RhcnRGdW5jKHZvaWQqIGJsb2NrQWxsb2NhdG9yKQoreworICAgIHN0YXRp
Y19jYXN0PEJsb2NrQWxsb2NhdG9yKj4oYmxvY2tBbGxvY2F0b3IpLT5ibG9ja0ZyZWVpbmdUaHJl
YWRNYWluKCk7Cit9CisKK3ZvaWQgQmxvY2tBbGxvY2F0b3I6OmJsb2NrRnJlZWluZ1RocmVhZE1h
aW4oKQoreworICAgIHdoaWxlICghbV9ibG9ja0ZyZWVpbmdUaHJlYWRTaG91bGRRdWl0KSB7Cisg
ICAgICAgIC8vIEdlbmVyYWxseSB3YWl0IGZvciBvbmUgc2Vjb25kIGJlZm9yZSBzY2F2ZW5naW5n
IGZyZWUgYmxvY2tzLiBUaGlzCisgICAgICAgIC8vIG1heSByZXR1cm4gZWFybHksIHBhcnRpY3Vs
YXJseSB3aGVuIHdlJ3JlIGJlaW5nIGFza2VkIHRvIHF1aXQuCisgICAgICAgIHdhaXRGb3JSZWxh
dGl2ZVRpbWUoMS4wKTsKKyAgICAgICAgaWYgKG1fYmxvY2tGcmVlaW5nVGhyZWFkU2hvdWxkUXVp
dCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICAgICAgLy8gTm93IHByb2Nlc3Mg
dGhlIGxpc3Qgb2YgZnJlZSBibG9ja3MuIEtlZXAgZnJlZWluZyB1bnRpbCBoYWxmIG9mIHRoZQor
ICAgICAgICAvLyBibG9ja3MgdGhhdCBhcmUgY3VycmVudGx5IG9uIHRoZSBsaXN0IGFyZSBnb25l
LiBBc3N1bWUgdGhhdCBhIHNpemVfdAorICAgICAgICAvLyBmaWVsZCBjYW4gYmUgYWNjZXNzZWQg
YXRvbWljYWxseS4KKyAgICAgICAgc2l6ZV90IGN1cnJlbnROdW1iZXJPZkZyZWVCbG9ja3MgPSBt
X251bWJlck9mRnJlZUJsb2NrczsKKyAgICAgICAgaWYgKCFjdXJyZW50TnVtYmVyT2ZGcmVlQmxv
Y2tzKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBzaXplX3QgZGVz
aXJlZE51bWJlck9mRnJlZUJsb2NrcyA9IGN1cnJlbnROdW1iZXJPZkZyZWVCbG9ja3MgLyAyOwor
ICAgICAgICAKKyAgICAgICAgd2hpbGUgKCFtX2Jsb2NrRnJlZWluZ1RocmVhZFNob3VsZFF1aXQp
IHsKKyAgICAgICAgICAgIE1hcmtlZEJsb2NrKiBibG9jazsKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9mcmVlQmxvY2tMb2NrKTsKKyAgICAgICAg
ICAgICAgICBpZiAobV9udW1iZXJPZkZyZWVCbG9ja3MgPD0gZGVzaXJlZE51bWJlck9mRnJlZUJs
b2NrcykKKyAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSAwOworICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogSG93IGRvIHdlIGtub3cgdGhpcyBp
cyBhIE1hcmtlZEJsb2NrPyBJdCBjb3VsZCBiZSBhIENvcGllZEJsb2NrLgorICAgICAgICAgICAg
ICAgICAgICBibG9jayA9IHN0YXRpY19jYXN0PE1hcmtlZEJsb2NrKj4obV9mcmVlQmxvY2tzLnJl
bW92ZUhlYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChibG9jayk7CisgICAgICAg
ICAgICAgICAgICAgIG1fbnVtYmVyT2ZGcmVlQmxvY2tzLS07CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICAgICBNYXJrZWRCbG9j
azo6ZGVzdHJveShibG9jayk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0FsbG9jYXRvci5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0
b3IuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
QmxvY2tBbGxvY2F0b3JfaAorI2RlZmluZSBCbG9ja0FsbG9jYXRvcl9oCisKKyNpbmNsdWRlIDx3
dGYvRG91Ymx5TGlua2VkTGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSGVhcEJsb2Nr
OworCisvLyBTaW1wbGUgYWxsb2NhdG9yIHRvIHJlZHVjZSBWTSBjb3N0IGJ5IGhvbGRpbmcgb250
byBibG9ja3Mgb2YgbWVtb3J5IGZvcgorLy8gc2hvcnQgcGVyaW9kcyBvZiB0aW1lIGFuZCB0aGVu
IGZyZWVpbmcgdGhlbSBvbiBhIHNlY29uZGFyeSB0aHJlYWQuCisKK2NsYXNzIEJsb2NrQWxsb2Nh
dG9yIHsKK3B1YmxpYzoKKyAgICBCbG9ja0FsbG9jYXRvcigpOworICAgIH5CbG9ja0FsbG9jYXRv
cigpOworCisgICAgSGVhcEJsb2NrKiBhbGxvY2F0ZSgpOworICAgIHZvaWQgZGVhbGxvY2F0ZShI
ZWFwQmxvY2sqKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHdhaXRGb3JSZWxhdGl2ZVRpbWVXaGls
ZUhvbGRpbmdMb2NrKGRvdWJsZSByZWxhdGl2ZSk7CisgICAgdm9pZCB3YWl0Rm9yUmVsYXRpdmVU
aW1lKGRvdWJsZSByZWxhdGl2ZSk7CisKKyAgICB2b2lkIGJsb2NrRnJlZWluZ1RocmVhZE1haW4o
KTsKKyAgICBzdGF0aWMgdm9pZCBibG9ja0ZyZWVpbmdUaHJlYWRTdGFydEZ1bmModm9pZCogaGVh
cCk7CisKKyAgICB2b2lkIHJlbGVhc2VGcmVlQmxvY2tzKCk7CisKKyAgICBEb3VibHlMaW5rZWRM
aXN0PEhlYXBCbG9jaz4gbV9mcmVlQmxvY2tzOworICAgIHNpemVfdCBtX251bWJlck9mRnJlZUJs
b2NrczsKKyAgICBib29sIG1fYmxvY2tGcmVlaW5nVGhyZWFkU2hvdWxkUXVpdDsKKyAgICBNdXRl
eCBtX2ZyZWVCbG9ja0xvY2s7CisgICAgVGhyZWFkQ29uZGl0aW9uIG1fZnJlZUJsb2NrQ29uZGl0
aW9uOworICAgIFRocmVhZElkZW50aWZpZXIgbV9ibG9ja0ZyZWVpbmdUaHJlYWQ7Cit9OworCitp
bmxpbmUgSGVhcEJsb2NrKiBCbG9ja0FsbG9jYXRvcjo6YWxsb2NhdGUoKQoreworICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2ZyZWVCbG9ja0xvY2spOworICAgIGlmICghbV9udW1iZXJPZkZyZWVC
bG9ja3MpIHsKKyAgICAgICAgQVNTRVJUKG1fZnJlZUJsb2Nrcy5pc0VtcHR5KCkpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBBU1NFUlQoIW1fZnJlZUJsb2Nrcy5pc0VtcHR5KCkp
OworICAgIG1fbnVtYmVyT2ZGcmVlQmxvY2tzLS07CisgICAgcmV0dXJuIG1fZnJlZUJsb2Nrcy5y
ZW1vdmVIZWFkKCk7Cit9CisKK2lubGluZSB2b2lkIEJsb2NrQWxsb2NhdG9yOjpkZWFsbG9jYXRl
KEhlYXBCbG9jayogYmxvY2spCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZnJlZUJsb2Nr
TG9jayk7CisgICAgbV9mcmVlQmxvY2tzLnB1c2goYmxvY2spOworICAgIG1fbnVtYmVyT2ZGcmVl
QmxvY2tzKys7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQmxvY2tBbGxv
Y2F0b3JfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmNw
cAkocmV2aXNpb24gMTE1NTg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVk
U3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsMTEgKzE4OCw3IEBAIHZvaWQgQ29waWVk
U3BhY2U6OmRvbmVDb3B5aW5nKCkKICAgICAgICAgfQogCiAgICAgICAgIG1fdG9TcGFjZVNldC5y
ZW1vdmUoYmxvY2spOwotICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9oZWFwLT5tX2ZyZWVCbG9ja0xvY2spOwotICAgICAgICAgICAgbV9oZWFwLT5tX2ZyZWVCbG9j
a3MucHVzaChibG9jayk7Ci0gICAgICAgICAgICBtX2hlYXAtPm1fbnVtYmVyT2ZGcmVlQmxvY2tz
Kys7Ci0gICAgICAgIH0KKyAgICAgICAgbV9oZWFwLT5ibG9ja0FsbG9jYXRvcigpLmRlYWxsb2Nh
dGUoYmxvY2spOwogICAgIH0KIAogICAgIENvcGllZEJsb2NrKiBjdXJyID0gc3RhdGljX2Nhc3Q8
Q29waWVkQmxvY2sqPihtX292ZXJzaXplQmxvY2tzLmhlYWQoKSk7CkBAIC0yMTUsMTYgKzIxMSw4
IEBAIHZvaWQgQ29waWVkU3BhY2U6OmRvbmVDb3B5aW5nKCkKIAogQ2hlY2tlZEJvb2xlYW4gQ29w
aWVkU3BhY2U6OmdldEZyZXNoQmxvY2soQWxsb2NhdGlvbkVmZm9ydCBhbGxvY2F0aW9uRWZmb3J0
LCBDb3BpZWRCbG9jayoqIG91dEJsb2NrKQogewotICAgIEhlYXBCbG9jayogaGVhcEJsb2NrID0g
MDsKICAgICBDb3BpZWRCbG9jayogYmxvY2sgPSAwOwotICAgIHsKLSAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2NrKTsKLSAgICAgICAgaWYgKCFtX2hlYXAt
Pm1fZnJlZUJsb2Nrcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGhlYXBCbG9jayA9IG1faGVh
cC0+bV9mcmVlQmxvY2tzLnJlbW92ZUhlYWQoKTsKLSAgICAgICAgICAgIG1faGVhcC0+bV9udW1i
ZXJPZkZyZWVCbG9ja3MtLTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoaGVhcEJsb2NrKQor
ICAgIGlmIChIZWFwQmxvY2sqIGhlYXBCbG9jayA9IG1faGVhcC0+YmxvY2tBbGxvY2F0b3IoKS5h
bGxvY2F0ZSgpKQogICAgICAgICBibG9jayA9IG5ldyAoTm90TnVsbCwgaGVhcEJsb2NrKSBDb3Bp
ZWRCbG9jayhoZWFwQmxvY2stPm1fYWxsb2NhdGlvbik7CiAgICAgZWxzZSBpZiAoYWxsb2NhdGlv
bkVmZm9ydCA9PSBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQpIHsKICAgICAgICAgaWYgKCFhbGxvY2F0
ZU5ld0Jsb2NrKCZibG9jaykpIHsKQEAgLTI1MSwyNCArMjM5LDE0IEBAIENoZWNrZWRCb29sZWFu
IENvcGllZFNwYWNlOjpnZXRGcmVzaEJsb2MKIAogdm9pZCBDb3BpZWRTcGFjZTo6ZnJlZUFsbEJs
b2NrcygpCiB7Ci0gICAgd2hpbGUgKCFtX3RvU3BhY2UtPmlzRW1wdHkoKSkgewotICAgICAgICBD
b3BpZWRCbG9jayogYmxvY2sgPSBzdGF0aWNfY2FzdDxDb3BpZWRCbG9jayo+KG1fdG9TcGFjZS0+
cmVtb3ZlSGVhZCgpKTsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVl
QmxvY2tMb2NrKTsKLSAgICAgICAgbV9oZWFwLT5tX2ZyZWVCbG9ja3MuYXBwZW5kKGJsb2NrKTsK
LSAgICAgICAgbV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcysrOwotICAgIH0KKyAgICB3aGls
ZSAoIW1fdG9TcGFjZS0+aXNFbXB0eSgpKQorICAgICAgICBtX2hlYXAtPmJsb2NrQWxsb2NhdG9y
KCkuZGVhbGxvY2F0ZShtX3RvU3BhY2UtPnJlbW92ZUhlYWQoKSk7CiAKLSAgICB3aGlsZSAoIW1f
ZnJvbVNwYWNlLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgQ29waWVkQmxvY2sqIGJsb2NrID0gc3Rh
dGljX2Nhc3Q8Q29waWVkQmxvY2sqPihtX2Zyb21TcGFjZS0+cmVtb3ZlSGVhZCgpKTsKLSAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2NrKTsKLSAgICAgICAg
bV9oZWFwLT5tX2ZyZWVCbG9ja3MuYXBwZW5kKGJsb2NrKTsKLSAgICAgICAgbV9oZWFwLT5tX251
bWJlck9mRnJlZUJsb2NrcysrOwotICAgIH0KKyAgICB3aGlsZSAoIW1fZnJvbVNwYWNlLT5pc0Vt
cHR5KCkpCisgICAgICAgIG1faGVhcC0+YmxvY2tBbGxvY2F0b3IoKS5kZWFsbG9jYXRlKG1fZnJv
bVNwYWNlLT5yZW1vdmVIZWFkKCkpOwogCi0gICAgd2hpbGUgKCFtX292ZXJzaXplQmxvY2tzLmlz
RW1wdHkoKSkgewotICAgICAgICBDb3BpZWRCbG9jayogYmxvY2sgPSBzdGF0aWNfY2FzdDxDb3Bp
ZWRCbG9jayo+KG1fb3ZlcnNpemVCbG9ja3MucmVtb3ZlSGVhZCgpKTsKLSAgICAgICAgYmxvY2st
Pm1fYWxsb2NhdGlvbi5kZWFsbG9jYXRlKCk7Ci0gICAgfQorICAgIHdoaWxlICghbV9vdmVyc2l6
ZUJsb2Nrcy5pc0VtcHR5KCkpCisgICAgICAgIG1fb3ZlcnNpemVCbG9ja3MucmVtb3ZlSGVhZCgp
LT5tX2FsbG9jYXRpb24uZGVhbGxvY2F0ZSgpOwogfQogCiBzaXplX3QgQ29waWVkU3BhY2U6OnNp
emUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2VJbmxpbmVN
ZXRob2RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVk
U3BhY2VJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9uIDExNTU4NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlSW5saW5lTWV0aG9kcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MywxMSArNjMsNyBAQCBpbmxpbmUgdm9pZCBDb3BpZWRTcGFjZTo6c3RhcnRlZENvcHlpbmco
CiAKIGlubGluZSB2b2lkIENvcGllZFNwYWNlOjpyZWN5Y2xlQmxvY2soQ29waWVkQmxvY2sqIGJs
b2NrKQogewotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVl
QmxvY2tMb2NrKTsKLSAgICAgICAgbV9oZWFwLT5tX2ZyZWVCbG9ja3MucHVzaChibG9jayk7Ci0g
ICAgICAgIG1faGVhcC0+bV9udW1iZXJPZkZyZWVCbG9ja3MrKzsKLSAgICB9CisgICAgbV9oZWFw
LT5ibG9ja0FsbG9jYXRvcigpLmRlYWxsb2NhdGUoYmxvY2spOwogCiAgICAgewogICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIobV9sb2FuZWRCbG9ja3NMb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMTU1ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE5LDcgKzMxOSw2IEBAIEhl
YXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBIZWEKICAgICAsIG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyhOb09wZXJhdGlvbikKICAgICAsIG1fb2JqZWN0U3BhY2UodGhpcykKICAgICAs
IG1fc3RvcmFnZVNwYWNlKHRoaXMpCi0gICAgLCBtX2Jsb2NrRnJlZWluZ1RocmVhZFNob3VsZFF1
aXQoZmFsc2UpCiAgICAgLCBtX21hcmtMaXN0U2V0KDApCiAgICAgLCBtX2FjdGl2aXR5Q2FsbGJh
Y2soRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9tYWNo
aW5lVGhyZWFkcyh0aGlzKQpAQCAtMzMyLDEwICszMzEsNiBAQCBIZWFwOjpIZWFwKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgSGVhCiAgICAgLCBtX2xhc3RHQ0xlbmd0aCgwKQogICAgICwgbV9s
YXN0Q29kZURpc2NhcmRUaW1lKFdURjo6Y3VycmVudFRpbWUoKSkKIHsKLSAgICBtX251bWJlck9m
RnJlZUJsb2NrcyA9IDA7Ci0gICAgbV9ibG9ja0ZyZWVpbmdUaHJlYWQgPSBjcmVhdGVUaHJlYWQo
YmxvY2tGcmVlaW5nVGhyZWFkU3RhcnRGdW5jLCB0aGlzLCAiSmF2YVNjcmlwdENvcmU6OkJsb2Nr
RnJlZSIpOwotICAgIAotICAgIEFTU0VSVChtX2Jsb2NrRnJlZWluZ1RocmVhZCk7CiAgICAgbV9z
dG9yYWdlU3BhY2UuaW5pdCgpOwogfQogCkBAIC0zNDUsMTMgKzM0MCw2IEBAIEhlYXA6On5IZWFw
KCkKIAogICAgIG1fb2JqZWN0U3BhY2Uuc2hyaW5rKCk7CiAgICAgbV9zdG9yYWdlU3BhY2UuZnJl
ZUFsbEJsb2NrcygpOwotICAgIHJlbGVhc2VGcmVlQmxvY2tzKCk7Ci0gICAgewotICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIobV9mcmVlQmxvY2tMb2NrKTsKLSAgICAgICAgbV9ibG9ja0ZyZWVp
bmdUaHJlYWRTaG91bGRRdWl0ID0gdHJ1ZTsKLSAgICAgICAgbV9mcmVlQmxvY2tDb25kaXRpb24u
YnJvYWRjYXN0KCk7Ci0gICAgfQotICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fYmxvY2tG
cmVlaW5nVGhyZWFkKTsKIAogICAgIEFTU0VSVCghc2l6ZSgpKTsKICAgICBBU1NFUlQoIWNhcGFj
aXR5KCkpOwpAQCAtMzgwLDY3ICszNjgsNiBAQCB2b2lkIEhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFs
aXplKCkKICNlbmRpZgogfQogCi12b2lkIEhlYXA6OndhaXRGb3JSZWxhdGl2ZVRpbWVXaGlsZUhv
bGRpbmdMb2NrKGRvdWJsZSByZWxhdGl2ZSkKLXsKLSAgICBpZiAobV9ibG9ja0ZyZWVpbmdUaHJl
YWRTaG91bGRRdWl0KQotICAgICAgICByZXR1cm47Ci0gICAgbV9mcmVlQmxvY2tDb25kaXRpb24u
dGltZWRXYWl0KG1fZnJlZUJsb2NrTG9jaywgY3VycmVudFRpbWUoKSArIHJlbGF0aXZlKTsKLX0K
LQotdm9pZCBIZWFwOjp3YWl0Rm9yUmVsYXRpdmVUaW1lKGRvdWJsZSByZWxhdGl2ZSkKLXsKLSAg
ICAvLyBJZiB0aGlzIHJldHVybnMgZWFybHksIHRoYXQncyBmaW5lLCBzbyBsb25nIGFzIGl0IGRv
ZXNuJ3QgZG8gaXQgdG9vCi0gICAgLy8gZnJlcXVlbnRseS4gSXQgd291bGQgb25seSBiZSBhIGJ1
ZyBpZiB0aGlzIGZ1bmN0aW9uIGZhaWxlZCB0byByZXR1cm4KLSAgICAvLyB3aGVuIGl0IHdhcyBh
c2tlZCB0byBkbyBzby4KLSAgICAKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9mcmVlQmxvY2tM
b2NrKTsKLSAgICB3YWl0Rm9yUmVsYXRpdmVUaW1lV2hpbGVIb2xkaW5nTG9jayhyZWxhdGl2ZSk7
Ci19Ci0KLXZvaWQgSGVhcDo6YmxvY2tGcmVlaW5nVGhyZWFkU3RhcnRGdW5jKHZvaWQqIGhlYXAp
Ci17Ci0gICAgc3RhdGljX2Nhc3Q8SGVhcCo+KGhlYXApLT5ibG9ja0ZyZWVpbmdUaHJlYWRNYWlu
KCk7Ci19Ci0KLXZvaWQgSGVhcDo6YmxvY2tGcmVlaW5nVGhyZWFkTWFpbigpCi17Ci0gICAgd2hp
bGUgKCFtX2Jsb2NrRnJlZWluZ1RocmVhZFNob3VsZFF1aXQpIHsKLSAgICAgICAgLy8gR2VuZXJh
bGx5IHdhaXQgZm9yIG9uZSBzZWNvbmQgYmVmb3JlIHNjYXZlbmdpbmcgZnJlZSBibG9ja3MuIFRo
aXMKLSAgICAgICAgLy8gbWF5IHJldHVybiBlYXJseSwgcGFydGljdWxhcmx5IHdoZW4gd2UncmUg
YmVpbmcgYXNrZWQgdG8gcXVpdC4KLSAgICAgICAgd2FpdEZvclJlbGF0aXZlVGltZSgxLjApOwot
ICAgICAgICBpZiAobV9ibG9ja0ZyZWVpbmdUaHJlYWRTaG91bGRRdWl0KQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIAotICAgICAgICAvLyBOb3cgcHJvY2VzcyB0aGUgbGlzdCBvZiBmcmVl
IGJsb2Nrcy4gS2VlcCBmcmVlaW5nIHVudGlsIGhhbGYgb2YgdGhlCi0gICAgICAgIC8vIGJsb2Nr
cyB0aGF0IGFyZSBjdXJyZW50bHkgb24gdGhlIGxpc3QgYXJlIGdvbmUuIEFzc3VtZSB0aGF0IGEg
c2l6ZV90Ci0gICAgICAgIC8vIGZpZWxkIGNhbiBiZSBhY2Nlc3NlZCBhdG9taWNhbGx5LgotICAg
ICAgICBzaXplX3QgY3VycmVudE51bWJlck9mRnJlZUJsb2NrcyA9IG1fbnVtYmVyT2ZGcmVlQmxv
Y2tzOwotICAgICAgICBpZiAoIWN1cnJlbnROdW1iZXJPZkZyZWVCbG9ja3MpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIHNpemVfdCBkZXNpcmVkTnVtYmVyT2ZGcmVl
QmxvY2tzID0gY3VycmVudE51bWJlck9mRnJlZUJsb2NrcyAvIDI7Ci0gICAgICAgIAotICAgICAg
ICB3aGlsZSAoIW1fYmxvY2tGcmVlaW5nVGhyZWFkU2hvdWxkUXVpdCkgewotICAgICAgICAgICAg
TWFya2VkQmxvY2sqIGJsb2NrOwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX2ZyZWVCbG9ja0xvY2spOwotICAgICAgICAgICAgICAgIGlmIChtX251
bWJlck9mRnJlZUJsb2NrcyA8PSBkZXNpcmVkTnVtYmVyT2ZGcmVlQmxvY2tzKQotICAgICAgICAg
ICAgICAgICAgICBibG9jayA9IDA7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGJsb2NrID0gc3RhdGljX2Nhc3Q8TWFya2VkQmxvY2sqPihtX2ZyZWVCbG9ja3Mu
cmVtb3ZlSGVhZCgpKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGJsb2NrKTsKLSAgICAg
ICAgICAgICAgICAgICAgbV9udW1iZXJPZkZyZWVCbG9ja3MtLTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghYmxvY2spCi0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIE1hcmtlZEJs
b2NrOjpkZXN0cm95KGJsb2NrKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogdm9pZCBIZWFwOjpy
ZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93Q2FzZShzaXplX3QgY29zdCkKIHsKICAgICAvLyBPdXIg
ZnJlcXVlbmN5IG9mIGdhcmJhZ2UgY29sbGVjdGlvbiB0cmllcyB0byBiYWxhbmNlIG1lbW9yeSB1
c2UgYWdhaW5zdCBzcGVlZApAQCAtOTEyLDMzICs4MzksNiBAQCBib29sIEhlYXA6OmlzVmFsaWRB
bGxvY2F0aW9uKHNpemVfdCBieXRlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSGVhcDo6
ZnJlZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCkKLXsKLSAgICBtX29iamVjdFNwYWNlLmZyZWVC
bG9ja3MoaGVhZCk7Ci19Ci0KLXZvaWQgSGVhcDo6cmVsZWFzZUZyZWVCbG9ja3MoKQotewotICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIE1hcmtlZEJsb2NrKiBibG9jazsKLSAgICAgICAgewot
ICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZnJlZUJsb2NrTG9jayk7Ci0gICAgICAg
ICAgICBpZiAoIW1fbnVtYmVyT2ZGcmVlQmxvY2tzKQotICAgICAgICAgICAgICAgIGJsb2NrID0g
MDsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGJsb2NrID0gc3RhdGljX2Nh
c3Q8TWFya2VkQmxvY2sqPihtX2ZyZWVCbG9ja3MucmVtb3ZlSGVhZCgpKTsKLSAgICAgICAgICAg
ICAgICBBU1NFUlQoYmxvY2spOwotICAgICAgICAgICAgICAgIG1fbnVtYmVyT2ZGcmVlQmxvY2tz
LS07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICghYmxv
Y2spCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgICAgIE1hcmtlZEJsb2NrOjpk
ZXN0cm95KGJsb2NrKTsKLSAgICB9Ci19Ci0KIHZvaWQgSGVhcDo6YWRkRmluYWxpemVyKEpTQ2Vs
bCogY2VsbCwgRmluYWxpemVyIGZpbmFsaXplcikKIHsKICAgICBXZWFrU2V0OjphbGxvY2F0ZShj
ZWxsLCAmbV9maW5hbGl6ZXJPd25lciwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZmluYWxpemVy
KSk7IC8vIEJhbGFuY2VkIGJ5IEZpbmFsaXplck93bmVyOjpmaW5hbGl6ZSgpLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTE1NTg2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAj
aWZuZGVmIEhlYXBfaAogI2RlZmluZSBIZWFwX2gKIAorI2luY2x1ZGUgIkJsb2NrQWxsb2NhdG9y
LmgiCiAjaW5jbHVkZSAiREZHQ29kZUJsb2Nrcy5oIgogI2luY2x1ZGUgIkhhbmRsZVNldC5oIgog
I2luY2x1ZGUgIkhhbmRsZVN0YWNrLmgiCkBAIC0zMyw4ICszNCw2IEBACiAjaW5jbHVkZSAiV2Vh
a0hhbmRsZU93bmVyLmgiCiAjaW5jbHVkZSAiV2Vha1NldC5oIgogI2luY2x1ZGUgIldyaXRlQmFy
cmllclN1cHBvcnQuaCIKLSNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlzdC5oPgotI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KIApAQCAtMTg0LDcgKzE4Myw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGNhbm9uaWNhbGl6ZUNlbGxMaXZlbmVzc0RhdGEoKTsKIAogICAgICAg
ICB2b2lkIHJlc2V0QWxsb2NhdG9ycygpOwotICAgICAgICB2b2lkIGZyZWVCbG9ja3MoTWFya2Vk
QmxvY2sqKTsKIAogICAgICAgICB2b2lkIGNsZWFyTWFya3MoKTsKICAgICAgICAgdm9pZCBtYXJr
Um9vdHMoYm9vbCBmdWxsR0MpOwpAQCAtMTkzLDE2ICsxOTEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgICAgIHZvaWQgZmlu
YWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBy
ZWxlYXNlRnJlZUJsb2NrcygpOwogICAgICAgICB2b2lkIHN3ZWVwKCk7CiAKICAgICAgICAgUmVn
aXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKTsKKyAgICAgICAgQmxvY2tBbGxvY2F0b3ImIGJsb2Nr
QWxsb2NhdG9yKCk7CiAKLSAgICAgICAgdm9pZCB3YWl0Rm9yUmVsYXRpdmVUaW1lV2hpbGVIb2xk
aW5nTG9jayhkb3VibGUgcmVsYXRpdmUpOwotICAgICAgICB2b2lkIHdhaXRGb3JSZWxhdGl2ZVRp
bWUoZG91YmxlIHJlbGF0aXZlKTsKLSAgICAgICAgdm9pZCBibG9ja0ZyZWVpbmdUaHJlYWRNYWlu
KCk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGJsb2NrRnJlZWluZ1RocmVhZFN0YXJ0RnVuYyh2b2lk
KiBoZWFwKTsKLSAgICAgICAgCiAgICAgICAgIGNvbnN0IEhlYXBTaXplIG1faGVhcFNpemU7CiAg
ICAgICAgIGNvbnN0IHNpemVfdCBtX21pbkJ5dGVzUGVyQ3ljbGU7CiAgICAgICAgIHNpemVfdCBt
X3NpemVBZnRlckxhc3RDb2xsZWN0OwpAQCAtMjE0LDEzICsyMDcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgTWFya2VkU3BhY2UgbV9vYmplY3RTcGFjZTsKICAgICAgICAgQ29waWVkU3Bh
Y2UgbV9zdG9yYWdlU3BhY2U7CiAKLSAgICAgICAgRG91Ymx5TGlua2VkTGlzdDxIZWFwQmxvY2s+
IG1fZnJlZUJsb2NrczsKLSAgICAgICAgc2l6ZV90IG1fbnVtYmVyT2ZGcmVlQmxvY2tzOwotICAg
ICAgICAKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtX2Jsb2NrRnJlZWluZ1RocmVhZDsKLSAg
ICAgICAgTXV0ZXggbV9mcmVlQmxvY2tMb2NrOwotICAgICAgICBUaHJlYWRDb25kaXRpb24gbV9m
cmVlQmxvY2tDb25kaXRpb247Ci0gICAgICAgIGJvb2wgbV9ibG9ja0ZyZWVpbmdUaHJlYWRTaG91
bGRRdWl0OworICAgICAgICBCbG9ja0FsbG9jYXRvciBtX2Jsb2NrQWxsb2NhdG9yOwogCiAjaWYg
RU5BQkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykKICAgICAgICAgVlRhYmxlU3BlY3RydW0gbV9k
ZXN0cm95ZWRUeXBlQ291bnRzOwpAQCAtMzcyLDYgKzM1OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgcmV0dXJuIG1fc3RvcmFnZVNwYWNlLnRyeVJlYWxsb2NhdGUocHRyLCBvbGRTaXpl
LCBuZXdTaXplKTsKICAgICB9CiAKKyAgICBpbmxpbmUgQmxvY2tBbGxvY2F0b3ImIEhlYXA6OmJs
b2NrQWxsb2NhdG9yKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Jsb2NrQWxsb2NhdG9yOwor
ICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBIZWFwX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNp
b24gMTE1NTg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgyLDcgQEAgdm9pZCogTWFya2VkQWxsb2Nh
dG9yOjphbGxvY2F0ZVNsb3dDYXNlKAogICAgIAogTWFya2VkQmxvY2sqIE1hcmtlZEFsbG9jYXRv
cjo6YWxsb2NhdGVCbG9jayhBbGxvY2F0aW9uRWZmb3J0IGFsbG9jYXRpb25FZmZvcnQpCiB7Ci0g
ICAgTWFya2VkQmxvY2sqIGJsb2NrOwotICAgIAotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2NrKTsKLSAgICAgICAgaWYgKG1faGVhcC0+bV9u
dW1iZXJPZkZyZWVCbG9ja3MpIHsKLSAgICAgICAgICAgIGJsb2NrID0gc3RhdGljX2Nhc3Q8TWFy
a2VkQmxvY2sqPihtX2hlYXAtPm1fZnJlZUJsb2Nrcy5yZW1vdmVIZWFkKCkpOwotICAgICAgICAg
ICAgQVNTRVJUKGJsb2NrKTsKLSAgICAgICAgICAgIG1faGVhcC0+bV9udW1iZXJPZkZyZWVCbG9j
a3MtLTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBibG9jayA9IDA7Ci0gICAgfQorICAg
IE1hcmtlZEJsb2NrKiBibG9jayA9IHN0YXRpY19jYXN0PE1hcmtlZEJsb2NrKj4obV9oZWFwLT5i
bG9ja0FsbG9jYXRvcigpLmFsbG9jYXRlKCkpOwogICAgIGlmIChibG9jaykKICAgICAgICAgYmxv
Y2sgPSBNYXJrZWRCbG9jazo6cmVjeWNsZShibG9jaywgbV9oZWFwLCBtX2NlbGxTaXplLCBtX2Nl
bGxzTmVlZERlc3RydWN0aW9uKTsKICAgICBlbHNlIGlmIChhbGxvY2F0aW9uRWZmb3J0ID09IEFs
bG9jYXRpb25DYW5GYWlsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmNwcAkocmV2aXNpb24gMTE1NTg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw5ICs3OSw4IEBAIHZvaWQg
TWFya2VkU3BhY2U6OmZyZWVCbG9ja3MoTWFya2VkQmxvY2sKICAgICAgICAgCiAgICAgICAgIG1f
YmxvY2tzLnJlbW92ZShibG9jayk7CiAgICAgICAgIGJsb2NrLT5zd2VlcCgpOwotICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIobV9oZWFwLT5tX2ZyZWVCbG9ja0xvY2spOwotICAgICAgICBtX2hl
YXAtPm1fZnJlZUJsb2Nrcy5hcHBlbmQoYmxvY2spOwotICAgICAgICBtX2hlYXAtPm1fbnVtYmVy
T2ZGcmVlQmxvY2tzKys7CisKKyAgICAgICAgbV9oZWFwLT5ibG9ja0FsbG9jYXRvcigpLmRlYWxs
b2NhdGUoYmxvY2spOwogICAgIH0KIH0KIAo=
</data>
<flag name="review"
          id="144998"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>