<?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>62413</bug_id>
          
          <creation_ts>2011-06-09 16:44:37 -0700</creation_ts>
          <short_desc>Factored MarkedBlock set management into a helper class with a fast case Bloom filter</short_desc>
          <delta_ts>2011-06-09 17:02:28 -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>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>418388</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-09 16:44:37 -0700</bug_when>
    <thetext>Factored MarkedBlock set management into a helper class with a fast case Bloom filter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418390</commentid>
    <comment_count>1</comment_count>
      <attachid>96663</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-09 16:54:08 -0700</bug_when>
    <thetext>Created attachment 96663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418396</commentid>
    <comment_count>2</comment_count>
      <attachid>96663</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-06-09 16:58:17 -0700</bug_when>
    <thetext>Comment on attachment 96663
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418399</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-06-09 17:02:28 -0700</bug_when>
    <thetext>Committed r88504: &lt;http://trac.webkit.org/changeset/88504&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96663</attachid>
            <date>2011-06-09 16:54:08 -0700</date>
            <delta_ts>2011-06-09 16:58:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62413-20110609165407.patch</filename>
            <type>text/plain</type>
            <size>22610</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODg1MDIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjMgQEAK
KzIwMTEtMDYtMDkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGYWN0b3JlZCBNYXJrZWRC
bG9jayBzZXQgbWFuYWdlbWVudCBpbnRvIGEgaGVscGVyIGNsYXNzIHdpdGggYSBmYXN0IGNhc2Ug
Qmxvb20gZmlsdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MjQxMworICAgICAgICAKKyAgICAgICAgU3VuU3BpZGVyIHJlcG9ydHMgYSBzbWFsbCBz
cGVlZHVwLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgaGF2
aW5nIENvbnNlcnZhdGl2ZVNldCBvcGVyYXRlIG9uIGFyYml0cmFyeQorICAgICAgICBzZXRzIG9m
IE1hcmtlZEJsb2NrcywgYW5kIGluIHByZXBhcmF0aW9uIGZvciBjb25zZXJ2YXRpdmUgc2Nhbm5p
bmcKKyAgICAgICAgYmVjb21pbmcgcHJvcG9ydGlvbmFsbHkgbW9yZSBpbXBvcnRhbnQgdGhhbiBv
dGhlciBHQyBhY3Rpdml0aWVzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEJ1aWxkLW8uCisKKyAgICAgICAgKiBoZWFwL0NvbnNl
cnZhdGl2ZVJvb3RzLmNwcDoKKyAgICAgICAgKEpTQzo6Q29uc2VydmF0aXZlUm9vdHM6OmFkZCk6
CisgICAgICAgICogaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oOgorICAgICAgICAoSlNDOjpDb25z
ZXJ2YXRpdmVSb290czo6Q29uc2VydmF0aXZlUm9vdHMpOiBPcGVyYXRlIG9uIGEgTWFya2VkQmxv
Y2tTZXQKKyAgICAgICAgZGlyZWN0bHksIGluc3RlYWQgb2YgYSBIZWFwLCBzbyB3ZSBjYW4gb3Bl
cmF0ZSBvbiBzdWJzZXRzIG9mIHRoZSBIZWFwCisgICAgICAgIGluc3RlYWQuCisgICAgICAgIAor
ICAgICAgICBVc2UgYSBUaW55Qmxvb21GaWx0ZXIgZm9yIHNpbmdsZS1jeWNsZSBleGNsdXNpb24g
b2YgbW9zdCBwb2ludGVycy4gVGhpcworICAgICAgICBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50
IHNpbmNlIHdlIGV4cGVjdCBub3QgdG8gZmluZCBvdXIgc3ViamVjdCBwb2ludGVyCisgICAgICAg
IGluIHRoZSBNYXJrZWRCbG9jayBoYXNoLCBhbmQgaGFzaCBtaXNzZXMgYXJlIG1vcmUgZXhwZW5z
aXZlIHRoYW4gdHlwaWNhbAorICAgICAgICBoYXNoIGxvb2t1cHMgYmVjYXVzZSB0aGV5IGhhdmUg
aGlnaCBjb2xsaXNpb24gcmF0ZXMuCisgICAgICAgIAorICAgICAgICBObyBuZWVkIGZvciBzaW5n
bGUtcG9pbnRlciBhZGQoKSB0byBiZSBwdWJsaWMgYW55bW9yZSwgc2luY2Ugbm9ib2R5IHVzZXMg
aXQuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJr
Um9vdHMpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjpmb3JF
YWNoQ2VsbCk6CisgICAgICAgIChKU0M6OkhlYXA6OmZvckVhY2hCbG9jayk6IFVzZSBNYXJrZWRC
bG9ja1NldCBzaW5jZSB0aGF0J3Mgd2hhdAorICAgICAgICBDb25zZXJ2YXRpdmVSb290cyByZWxp
ZXMgb24uCisgICAgICAgIAorICAgICAgICBOaXhlZCBjb250YWlucygpLCBzaW5jZSBub2JvZHkg
dXNlcyBpdCBhbnltb3JlLgorCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAg
ICAoV1RGOjpNYXJrZWRCbG9ja0hhc2g6Omhhc2gpOiBBZGRlZCBhIGZhc3RlciBoYXNoIHRha2lu
ZyBhZHZhbnRhZ2Ugb2YKKyAgICAgICAgdGhlIFZNIGxheW91dCBwcm9wZXJ0aWVzIG9mIE1hcmtl
ZEJsb2Nrcy4KKworICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2tTZXQuaDogQWRkZWQuCisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrU2V0OjphZGQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
a1NldDo6cmVtb3ZlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2tTZXQ6OnJlY29tcHV0ZUZp
bHRlcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrU2V0OjpmaWx0ZXIpOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9ja1NldDo6c2V0KToKKyAgICAgICAgKiBoZWFwL1RpbnlCbG9vbUZpbHRl
ci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGlueUJsb29tRmlsdGVyOjpUaW55Qmxvb21GaWx0
ZXIpOgorICAgICAgICAoSlNDOjpUaW55Qmxvb21GaWx0ZXI6OmFkZCk6CisgICAgICAgIChKU0M6
OlRpbnlCbG9vbUZpbHRlcjo6cnVsZU91dCk6IE5ldyBoZWxwZXIgY2xhc3MsIHVzZWQgYWJvdmUu
CisKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwOgorICAgICAgICAoSlND
OjpSZWdpc3RlckZpbGU6OmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKTogTm8gbmVlZCB0byBzcGVj
aWZpY2FsbHkKKyAgICAgICAgZXhjbHVkZSB2YWx1ZXMgYnkgdGFnIC0tIHRoZSB0aW55IGJsb29t
IGZpbHRlciBpcyBhbHJlYWR5IGEgcmVnaXN0ZXItcmVnaXN0ZXIKKyAgICAgICAgY29tcGFyZSwg
c28gYWRkaW5nIGFub3RoZXIgInJ1bGUgb3V0IiBmYWN0b3IganVzdCBzbG93cyB0aGluZ3MgZG93
bi4KKwogMjAxMS0wNi0wOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA4ODQ3MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiAr
MTE3LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcFJvb3RWaXNpdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tTZXQuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVGlueUJsb29tRmlsdGVyLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL05ld1NwYWNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTmV3U3BhY2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHJldmlz
aW9uIDg4NDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTMyMiw2ICszMjIsOCBAQAogICAgICAgICAgICAgJ2hlYXAvSGVh
cFJvb3RWaXNpdG9yLmgnLAogICAgICAgICAgICAgJ2hlYXAvTWFya2VkQmxvY2suY3BwJywKICAg
ICAgICAgICAgICdoZWFwL01hcmtlZEJsb2NrLmgnLAorICAgICAgICAgICAgJ2hlYXAvTWFya2Vk
QmxvY2tTZXQuaCcsCisgICAgICAgICAgICAnaGVhcC9UaW55Qmxvb21GaWx0ZXIuaCcsCiAgICAg
ICAgICAgICAnaGVhcC9OZXdTcGFjZS5jcHAnLAogICAgICAgICAgICAgJ2hlYXAvTmV3U3BhY2Uu
aCcsCiAgICAgICAgICAgICAnZGVidWdnZXIvRGVidWdnZXIuY3BwJywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA4ODQ3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw2ICs1Nyw4IEBACiAJCTE0MEQxN0Q3MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jh
c2VQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDBEMTdENjBFOEFENEE5MDAwQ0QxN0QgLyogSlNCYXNlUHJpdmF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MTIxMTMxMEE0ODc5NEQw
MDQ4MDI1NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyog
SmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQkxNDEyMTEzNDBBNDg3OTU4MDA0ODAy
NTUgLyogbWluaWRvbS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQxMjExMDIwQTQ4NzgwOTAwNDgwMjU1IC8qIG1pbmlkb20uYyAqLzsgfTsKKwkJMTQx
NDQ4Q0IxM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtlZEJsb2NrU2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE0NDhDQTEzQTE3NkVDMDBGNUJBMUEg
LyogTWFya2VkQmxvY2tTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkxNDE0NDhDRDEzQTE3ODM3MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE0NDhD
QzEzQTE3ODM3MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQyMEJFN0IxMEFBNkREQjAwRjQ1NUQy
IC8qIFdlYWtSYW5kb20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQyMTM1OUIwQTY3N0Y0
RjAwQTgxOTVFIC8qIEpTQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDIxMzU5QTBBNjc3RjRGMDBBODE5NUUgLyogSlNCYXNlLmNwcCAqLzsg
fTsKIAkJMTQyODA4MjMxMDdFQzAyQzAwMTNFN0IyIC8qIERlYnVnZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODU4MDI1NTU5N0QwMUZG
NjBGNyAvKiBEZWJ1Z2dlci5jcHAgKi87IH07CkBAIC03MjYsNiArNzI4LDggQEAKIAkJMTQxMjEx
MDIwQTQ4NzgwOTAwNDgwMjU1IC8qIG1pbmlkb20uYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5j
OyBuYW1lID0gbWluaWRvbS5jOyBwYXRoID0gdGVzdHMvbWluaWRvbS5jOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxNDEyMTEwRDBBNDg3ODg3MDA0ODAyNTUgLyogbWluaWRvbS5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IG1pbmlkb20uanM7IHBhdGgg
PSB0ZXN0cy9taW5pZG9tLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDEyMTEy
MDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVk
ZUluSW5kZXggPSAwOyBwYXRoID0gbWluaWRvbTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKKwkJMTQxNDQ4Q0ExM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtlZEJsb2NrU2V0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEJsb2NrU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MTQ0OENDMTNBMTc4MzcwMEY1QkExQSAvKiBUaW55
Qmxvb21GaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGlueUJsb29t
RmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MTlEMzJDMENFQTdDREUw
MEZGNTA3QSAvKiBSZWZDb3VudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlZkNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQyMEJFN0ExMEFB
NkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2Vha1JhbmRvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDIxMzU5
QTBBNjc3RjRGMDBBODE5NUUgLyogSlNCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTA1LDYgKzE1MDksOCBAQAogCQkJCTE0RDJGM0Q5MTM5RjRCRTIwMDQ5MTAzMSAvKiBOZXdTcGFj
ZS5oICovLAogCQkJCTE0MkUzMTMyMTM0RkYwQTYwMEFGQURCNSAvKiBTdHJvbmcuaCAqLywKIAkJ
CQkxNDJFMzEzMzEzNEZGMEE2MDBBRkFEQjUgLyogV2Vhay5oICovLAorCQkJCTE0MTQ0OENBMTNB
MTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oICovLAorCQkJCTE0MTQ0OENDMTNBMTc4
MzcwMEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaGVh
cDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNTUxLDYgKzI1NTcsOCBAQAogCQkJ
CTg2QkIwOUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzJGRkQ2NDEzOTk4NUE4MDBFNTM2NUEgLyogS2V5d29yZExvb2t1cC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTREMkYzREIxMzlGNEJFMjAwNDkxMDMxIC8qIE5ld1NwYWNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxNDE0NDhDQjEzQTE3NkVDMDBGNUJBMUEgLyogTWFya2VkQmxvY2tTZXQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTE0MTQ0OENEMTNBMTc4MzcwMEY1QkExQSAvKiBUaW55Qmxv
b21GaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAkocmV2aXNpb24gODg0NzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDYgKzQ0LDMyIEBAIHZvaWQgQ29uc2VydmF0aXZlUm9vdHM6Omdyb3coKQogICAg
IG1fcm9vdHMgPSBuZXdSb290czsKIH0KIAoraW5saW5lIHZvaWQgQ29uc2VydmF0aXZlUm9vdHM6
OmFkZCh2b2lkKiBwLCBUaW55Qmxvb21GaWx0ZXIgZmlsdGVyKQoreworICAgIE1hcmtlZEJsb2Nr
KiBjYW5kaWRhdGUgPSBNYXJrZWRCbG9jazo6YmxvY2tGb3IocCk7CisgICAgaWYgKGZpbHRlci5y
dWxlT3V0KHJlaW50ZXJwcmV0X2Nhc3Q8Qml0cz4oY2FuZGlkYXRlKSkpIHsKKyAgICAgICAgQVNT
RVJUKCFjYW5kaWRhdGUgfHwgIW1fYmxvY2tzLT5zZXQoKS5jb250YWlucyhjYW5kaWRhdGUpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghTWFya2VkQmxvY2s6OmlzQXRvbUFs
aWduZWQocCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9ibG9ja3MtPnNldCgpLmNv
bnRhaW5zKGNhbmRpZGF0ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBjb25zZXJ2
YXRpdmUgc2V0IGludmVydHMgdGhlIHR5cGljYWwgbWVhbmluZyBvZiBtYXJrIGJpdHM6IFdlIG9u
bHkKKyAgICAvLyB2aXNpdCBtYXJrZWQgcG9pbnRlcnMsIGFuZCBvdXIgdmlzaXQgY2xlYXJzIHRo
ZSBtYXJrIGJpdC4gVGhpcyBlZmZpY2llbnRseQorICAgIC8vIHNpZnRzIG91dCBwb2ludGVycyB0
byBkZWFkIG9iamVjdHMgYW5kIGR1cGxpY2F0ZSBwb2ludGVycy4KKyAgICBpZiAoIWNhbmRpZGF0
ZS0+dGVzdEFuZENsZWFyTWFya2VkKHApKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9z
aXplID09IG1fY2FwYWNpdHkpCisgICAgICAgIGdyb3coKTsKKworICAgIG1fcm9vdHNbbV9zaXpl
KytdID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4ocCk7Cit9CisKIHZvaWQgQ29uc2VydmF0aXZlUm9v
dHM6OmFkZCh2b2lkKiBiZWdpbiwgdm9pZCogZW5kKQogewogICAgIEFTU0VSVChiZWdpbiA8PSBl
bmQpOwpAQCAtNTEsOCArNzcsOSBAQCB2b2lkIENvbnNlcnZhdGl2ZVJvb3RzOjphZGQodm9pZCog
YmVnaW4sCiAgICAgQVNTRVJUKGlzUG9pbnRlckFsaWduZWQoYmVnaW4pKTsKICAgICBBU1NFUlQo
aXNQb2ludGVyQWxpZ25lZChlbmQpKTsKIAorICAgIFRpbnlCbG9vbUZpbHRlciBmaWx0ZXIgPSBt
X2Jsb2Nrcy0+ZmlsdGVyKCk7IC8vIE1ha2UgYSBsb2NhbCBjb3B5IG9mIGZpbHRlciB0byBzaG93
IHRoZSBjb21waWxlciBpdCB3b24ndCBhbGlhcywgYW5kIGNhbiBiZSByZWdpc3Rlci1hbGxvY2F0
ZWQuCiAgICAgZm9yIChjaGFyKiogaXQgPSBzdGF0aWNfY2FzdDxjaGFyKio+KGJlZ2luKTsgaXQg
IT0gc3RhdGljX2Nhc3Q8Y2hhcioqPihlbmQpOyArK2l0KQotICAgICAgICBhZGQoKml0KTsKKyAg
ICAgICAgYWRkKCppdCwgZmlsdGVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmgJKHJldmlz
aW9uIDg4NDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9v
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDkgQEAgY2xhc3MgSGVhcDsKIAogY2xh
c3MgQ29uc2VydmF0aXZlUm9vdHMgewogcHVibGljOgotICAgIENvbnNlcnZhdGl2ZVJvb3RzKEhl
YXAqKTsKKyAgICBDb25zZXJ2YXRpdmVSb290cyhjb25zdCBNYXJrZWRCbG9ja1NldCopOwogICAg
IH5Db25zZXJ2YXRpdmVSb290cygpOwogCi0gICAgdm9pZCBhZGQodm9pZCopOwogICAgIHZvaWQg
YWRkKHZvaWQqIGJlZ2luLCB2b2lkKiBlbmQpOwogICAgIAogICAgIHNpemVfdCBzaXplKCk7CkBA
IC01MCwyMCArNDksMjEgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5ID0gMTI4OwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgbm9uSW5saW5lQ2FwYWNp
dHkgPSA4MTkyIC8gc2l6ZW9mKEpTQ2VsbCopOwogICAgIAorICAgIHZvaWQgYWRkKHZvaWQqLCBU
aW55Qmxvb21GaWx0ZXIpOwogICAgIHZvaWQgZ3JvdygpOwogCi0gICAgSGVhcCogbV9oZWFwOwog
ICAgIEpTQ2VsbCoqIG1fcm9vdHM7CiAgICAgc2l6ZV90IG1fc2l6ZTsKICAgICBzaXplX3QgbV9j
YXBhY2l0eTsKKyAgICBjb25zdCBNYXJrZWRCbG9ja1NldCogbV9ibG9ja3M7CiAgICAgSlNDZWxs
KiBtX2lubGluZVJvb3RzW2lubGluZUNhcGFjaXR5XTsKIH07CiAKLWlubGluZSBDb25zZXJ2YXRp
dmVSb290czo6Q29uc2VydmF0aXZlUm9vdHMoSGVhcCogaGVhcCkKLSAgICA6IG1faGVhcChoZWFw
KQotICAgICwgbV9yb290cyhtX2lubGluZVJvb3RzKQoraW5saW5lIENvbnNlcnZhdGl2ZVJvb3Rz
OjpDb25zZXJ2YXRpdmVSb290cyhjb25zdCBNYXJrZWRCbG9ja1NldCogYmxvY2tzKQorICAgIDog
bV9yb290cyhtX2lubGluZVJvb3RzKQogICAgICwgbV9zaXplKDApCiAgICAgLCBtX2NhcGFjaXR5
KGlubGluZUNhcGFjaXR5KQorICAgICwgbV9ibG9ja3MoYmxvY2tzKQogewogfQogCkBAIC03Mywy
MyArNzMsNiBAQCBpbmxpbmUgQ29uc2VydmF0aXZlUm9vdHM6On5Db25zZXJ2YXRpdmVSCiAgICAg
ICAgIE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2UobV9yb290cywgbV9jYXBhY2l0eSAq
IHNpemVvZihKU0NlbGwqKSk7CiB9CiAKLWlubGluZSB2b2lkIENvbnNlcnZhdGl2ZVJvb3RzOjph
ZGQodm9pZCogcCkKLXsKLSAgICBpZiAoIW1faGVhcC0+Y29udGFpbnMocCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIFRoZSBjb25zZXJ2YXRpdmUgc2V0IGludmVydHMgdGhlIHR5cGljYWwg
bWVhbmluZyBvZiBtYXJrIGJpdHM6IFdlIG9ubHkKLSAgICAvLyB2aXNpdCBtYXJrZWQgcG9pbnRl
cnMsIGFuZCBvdXIgdmlzaXQgY2xlYXJzIHRoZSBtYXJrIGJpdC4gVGhpcyBlZmZpY2llbnRseQot
ICAgIC8vIHNpZnRzIG91dCBwb2ludGVycyB0byBkZWFkIG9iamVjdHMgYW5kIGR1cGxpY2F0ZSBw
b2ludGVycy4KLSAgICBpZiAoIW1faGVhcC0+dGVzdEFuZENsZWFyTWFya2VkKHApKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAobV9zaXplID09IG1fY2FwYWNpdHkpCi0gICAgICAgIGdyb3co
KTsKLQotICAgIG1fcm9vdHNbbV9zaXplKytdID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4ocCk7Ci19
Ci0KIGlubGluZSBzaXplX3QgQ29uc2VydmF0aXZlUm9vdHM6OnNpemUoKQogewogICAgIHJldHVy
biBtX3NpemU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24g
ODg0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDA0LDE5ICs0MDQsMTkgQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogCiAgICAg
dm9pZCogZHVtbXk7CiAKLSAgICBNYXJrU3RhY2smIHZpc2l0b3IgPSBtX21hcmtTdGFjazsKLSAg
ICBIZWFwUm9vdFZpc2l0b3IgaGVhcFJvb3RWaXNpdG9yKHZpc2l0b3IpOwotCiAgICAgLy8gV2Ug
Z2F0aGVyIGNvbnNlcnZhdGl2ZSByb290cyBiZWZvcmUgY2xlYXJpbmcgbWFyayBiaXRzIGJlY2F1
c2UgY29uc2VydmF0aXZlCiAgICAgLy8gZ2F0aGVyaW5nIHVzZXMgdGhlIG1hcmsgYml0cyB0byBk
ZXRlcm1pbmUgd2hldGhlciBhIHJlZmVyZW5jZSBpcyB2YWxpZC4KLSAgICBDb25zZXJ2YXRpdmVS
b290cyBtYWNoaW5lVGhyZWFkUm9vdHModGhpcyk7CisgICAgQ29uc2VydmF0aXZlUm9vdHMgbWFj
aGluZVRocmVhZFJvb3RzKCZtX2Jsb2Nrcyk7CiAgICAgbV9tYWNoaW5lVGhyZWFkcy5nYXRoZXJD
b25zZXJ2YXRpdmVSb290cyhtYWNoaW5lVGhyZWFkUm9vdHMsICZkdW1teSk7CiAKLSAgICBDb25z
ZXJ2YXRpdmVSb290cyByZWdpc3RlckZpbGVSb290cyh0aGlzKTsKKyAgICBDb25zZXJ2YXRpdmVS
b290cyByZWdpc3RlckZpbGVSb290cygmbV9ibG9ja3MpOwogICAgIHJlZ2lzdGVyRmlsZSgpLmdh
dGhlckNvbnNlcnZhdGl2ZVJvb3RzKHJlZ2lzdGVyRmlsZVJvb3RzKTsKIAogICAgIGNsZWFyTWFy
a3MoKTsKIAorICAgIE1hcmtTdGFjayYgdmlzaXRvciA9IG1fbWFya1N0YWNrOworICAgIEhlYXBS
b290VmlzaXRvciBoZWFwUm9vdFZpc2l0b3IodmlzaXRvcik7CisKICAgICB2aXNpdG9yLmFwcGVu
ZChtYWNoaW5lVGhyZWFkUm9vdHMpOwogICAgIHZpc2l0b3IuZHJhaW4oKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gODg0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNp
bmNsdWRlICJIYW5kbGVIZWFwLmgiCiAjaW5jbHVkZSAiSGFuZGxlU3RhY2suaCIKICNpbmNsdWRl
ICJNYXJrU3RhY2suaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9ja1NldC5oIgogI2luY2x1ZGUgIk5l
d1NwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENv
dW50ZWRTZXQuaD4KQEAgLTg5LDggKzkwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgcHJvdGVjdChKU1ZhbHVlKTsKICAgICAgICAgYm9vbCB1bnByb3RlY3QoSlNWYWx1ZSk7IC8v
IFRydWUgd2hlbiB0aGUgcHJvdGVjdCBjb3VudCBkcm9wcyB0byAwLgogCi0gICAgICAgIGJvb2wg
Y29udGFpbnMoY29uc3Qgdm9pZCopOwotCiAgICAgICAgIHNpemVfdCBzaXplKCk7CiAgICAgICAg
IHNpemVfdCBjYXBhY2l0eSgpOwogICAgICAgICBzaXplX3Qgb2JqZWN0Q291bnQoKTsKQEAgLTE0
NSw3ICsxNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBPcGVyYXRpb25JblByb2dy
ZXNzIG1fb3BlcmF0aW9uSW5Qcm9ncmVzczsKICAgICAgICAgTmV3U3BhY2UgbV9uZXdTcGFjZTsK
LSAgICAgICAgSGFzaFNldDxNYXJrZWRCbG9jayo+IG1fYmxvY2tzOworICAgICAgICBNYXJrZWRC
bG9ja1NldCBtX2Jsb2NrczsKIAogICAgICAgICBzaXplX3QgbV9leHRyYUNvc3Q7CiAKQEAgLTIw
OCwxOCArMjA3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBib29sIEhlYXA6OmNvbnRhaW5zKGNvbnN0IHZvaWQqIHgpCi0gICAgewotICAgICAgICBpZiAo
IU1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IE1hcmtlZEJsb2NrOjpibG9ja0Zvcih4
KTsKLSAgICAgICAgaWYgKCFibG9jayB8fCAhbV9ibG9ja3MuY29udGFpbnMoYmxvY2spKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQogICAgIGlubGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5Q29zdChz
aXplX3QgY29zdCkKICAgICB7CiAgICAgICAgIGlmIChjb3N0ID4gbWluRXh0cmFDb3N0KSAKQEAg
LTI0NCw4ICsyMzEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEhlYXA6OmZvckVh
Y2hDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBCbG9ja0l0ZXJhdG9yIGVu
ZCA9IG1fYmxvY2tzLmVuZCgpOwotICAgICAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Js
b2Nrcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIEJsb2NrSXRlcmF0b3IgZW5k
ID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7CisgICAgICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9
IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgICAgICgq
aXQpLT5mb3JFYWNoQ2VsbChmdW5jdG9yKTsKICAgICAgICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJu
VmFsdWUoKTsKICAgICB9CkBAIC0yNTgsOCArMjQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0
dXJuVHlwZSBIZWFwOjpmb3JFYWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAg
ICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3MuZW5kKCk7Ci0gICAgICAgIGZvciAoQmxv
Y2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAg
ICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKKyAgICAgICAgZm9y
IChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQogICAgICAgICAgICAgZnVuY3RvcigqaXQpOwogICAgICAgICByZXR1cm4gZnVuY3Rvci5y
ZXR1cm5WYWx1ZSgpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAkocmV2aXNpb24gODg0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNs
dWRlIDx3dGYvQml0bWFwLmg+CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYWdlQWxsb2NhdGlv
bkFsaWduZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTQ3LDYgKzQ4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAKICAgICAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBhdG9tU2l6ZSA9IHNpemVvZihkb3VibGUpOyAvLyBFbnN1cmVzIG5hdHVyYWwgYWxp
Z25tZW50IGZvciBhbGwgYnVpbHQtaW4gdHlwZXMuCisgICAgICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgYmxvY2tTaXplID0gMTYgKiBLQjsKIAogICAgICAgICBzdGF0aWMgTWFya2VkQmxvY2sqIGNy
ZWF0ZShIZWFwKiwgc2l6ZV90IGNlbGxTaXplKTsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShNYXJrZWRCbG9jayopOwpAQCAtODAsNyArODIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgZm9yRWFjaENlbGwoRnVuY3RvciYp
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja1NpemUg
PSAxNiAqIEtCOwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrTWFzayA9IH4oYmxv
Y2tTaXplIC0gMSk7IC8vIGJsb2NrU2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgogCiAgICAg
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbU1hc2sgPSB+KGF0b21TaXplIC0gMSk7IC8vIGF0
b21TaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCkBAIC0yMTUsNCArMjE2LDIyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKK25hbWVzcGFjZSBXVEYgewor
CisgICAgc3RydWN0IE1hcmtlZEJsb2NrSGFzaCA6IFB0ckhhc2g8SlNDOjpNYXJrZWRCbG9jayo+
IHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goSlNDOjpNYXJrZWRCbG9jayogY29uc3Qm
IGtleSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gQWxpZ25lZCBWTSByZWdpb25zIHRlbmQg
dG8gYmUgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGludGVnZXJzLAorICAgICAgICAgICAgLy8g
d2hpY2ggaXMgYSBncmVhdCBoYXNoIGZ1bmN0aW9uLCBidXQgd2UgaGF2ZSB0byByZW1vdmUgdGhl
IGxvdyBiaXRzLAorICAgICAgICAgICAgLy8gc2luY2UgdGhleSdyZSBhbHdheXMgemVybywgd2hp
Y2ggaXMgYSB0ZXJyaWJsZSBoYXNoIGZ1bmN0aW9uIQorICAgICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8SlNDOjpCaXRzPihrZXkpIC8gSlNDOjpNYXJrZWRCbG9jazo6YmxvY2tTaXpl
OworICAgICAgICB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNo
PEpTQzo6TWFya2VkQmxvY2sqPiB7CisgICAgICAgIHR5cGVkZWYgTWFya2VkQmxvY2tIYXNoIEhh
c2g7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAvLyBNYXJrZWRCbG9j
a19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja1NldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrU2V0LmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja1Nl
dC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBN
YXJrZWRCbG9ja1NldF9oCisjZGVmaW5lIE1hcmtlZEJsb2NrU2V0X2gKKworI2luY2x1ZGUgIk1h
cmtlZEJsb2NrLmgiCisjaW5jbHVkZSAiVGlueUJsb29tRmlsdGVyLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBNYXJrZWRCbG9jazsKKworY2xhc3MgTWFya2VkQmxvY2tTZXQgeworcHVi
bGljOgorICAgIHZvaWQgYWRkKE1hcmtlZEJsb2NrKik7CisgICAgdm9pZCByZW1vdmUoTWFya2Vk
QmxvY2sqKTsKKworICAgIFRpbnlCbG9vbUZpbHRlciBmaWx0ZXIoKSBjb25zdDsKKyAgICBjb25z
dCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4mIHNldCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIHZv
aWQgcmVjb21wdXRlRmlsdGVyKCk7CisKKyAgICBUaW55Qmxvb21GaWx0ZXIgbV9maWx0ZXI7Cisg
ICAgSGFzaFNldDxNYXJrZWRCbG9jayo+IG1fc2V0OworfTsKKworaW5saW5lIHZvaWQgTWFya2Vk
QmxvY2tTZXQ6OmFkZChNYXJrZWRCbG9jayogYmxvY2spCit7CisgICAgbV9maWx0ZXIuYWRkKHJl
aW50ZXJwcmV0X2Nhc3Q8Qml0cz4oYmxvY2spKTsKKyAgICBtX3NldC5hZGQoYmxvY2spOworfQor
CitpbmxpbmUgdm9pZCBNYXJrZWRCbG9ja1NldDo6cmVtb3ZlKE1hcmtlZEJsb2NrKiBibG9jaykK
K3sKKyAgICBpbnQgb2xkQ2FwYWNpdHkgPSBtX3NldC5jYXBhY2l0eSgpOworICAgIG1fc2V0LnJl
bW92ZShibG9jayk7CisgICAgaWYgKG1fc2V0LmNhcGFjaXR5KCkgIT0gb2xkQ2FwYWNpdHkpIC8v
IEluZGljYXRlcyB3ZSd2ZSByZW1vdmVkIGEgbG90IG9mIGJsb2Nrcy4KKyAgICAgICAgcmVjb21w
dXRlRmlsdGVyKCk7Cit9CisKK2lubGluZSB2b2lkIE1hcmtlZEJsb2NrU2V0OjpyZWNvbXB1dGVG
aWx0ZXIoKQoreworICAgIFRpbnlCbG9vbUZpbHRlciBmaWx0ZXI7CisgICAgZm9yIChIYXNoU2V0
PE1hcmtlZEJsb2NrKj46Oml0ZXJhdG9yIGl0ID0gbV9zZXQuYmVnaW4oKTsgaXQgIT0gbV9zZXQu
ZW5kKCk7ICsraXQpCisgICAgICAgIGZpbHRlci5hZGQocmVpbnRlcnByZXRfY2FzdDxCaXRzPigq
aXQpKTsKKyAgICBtX2ZpbHRlciA9IGZpbHRlcjsKK30KKworaW5saW5lIFRpbnlCbG9vbUZpbHRl
ciBNYXJrZWRCbG9ja1NldDo6ZmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9maWx0ZXI7
Cit9CisKK2lubGluZSBjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4mIE1hcmtlZEJsb2NrU2V0
OjpzZXQoKSBjb25zdAoreworICAgIHJldHVybiBtX3NldDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBNYXJrZWRCbG9ja1NldF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9UaW55Qmxvb21GaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9UaW55Qmxvb21GaWx0ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1RpbnlCbG9vbUZpbHRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUaW55Qmxvb21GaWx0ZXJfaAorI2RlZmlu
ZSBUaW55Qmxvb21GaWx0ZXJfaAorCituYW1lc3BhY2UgSlNDIHsKKwordHlwZWRlZiB1aW50cHRy
X3QgQml0czsKKworY2xhc3MgVGlueUJsb29tRmlsdGVyIHsKK3B1YmxpYzoKKyAgICBUaW55Qmxv
b21GaWx0ZXIoKTsKKworICAgIHZvaWQgYWRkKEJpdHMpOworICAgIGJvb2wgcnVsZU91dChCaXRz
KSBjb25zdDsgLy8gVHJ1ZSBmb3IgMC4KKworcHJpdmF0ZToKKyAgICBCaXRzIG1fYml0czsKK307
CisKK2lubGluZSBUaW55Qmxvb21GaWx0ZXI6OlRpbnlCbG9vbUZpbHRlcigpCisgICAgOiBtX2Jp
dHMoMCkKK3sKK30KKworaW5saW5lIHZvaWQgVGlueUJsb29tRmlsdGVyOjphZGQoQml0cyBiaXRz
KQoreworICAgIG1fYml0cyB8PSBiaXRzOworfQorCitpbmxpbmUgYm9vbCBUaW55Qmxvb21GaWx0
ZXI6OnJ1bGVPdXQoQml0cyBiaXRzKSBjb25zdAoreworICAgIGlmICghYml0cykKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBpZiAoKGJpdHMgJiBtX2JpdHMpICE9IGJpdHMpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIFRpbnlCbG9vbUZpbHRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcAkocmV2aXNpb24gODg0
NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTIgKzU0LDcgQEAgUmVnaXN0ZXJGaWxlOjp+UmVnaXN0
ZXJGaWxlKCkKIAogdm9pZCBSZWdpc3RlckZpbGU6OmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENv
bnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVSb290cykKIHsKLSAgICBmb3IgKFJlZ2lzdGVy
KiBpdCA9IHN0YXJ0KCk7IGl0ICE9IGVuZCgpOyArK2l0KSB7Ci0gICAgICAgIEpTVmFsdWUgdiA9
IGl0LT5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmICghdi5pc0NlbGwoKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBjb25zZXJ2YXRpdmVSb290cy5hZGQodi5hc0NlbGwoKSk7Ci0gICAg
fQorICAgIGNvbnNlcnZhdGl2ZVJvb3RzLmFkZChzdGFydCgpLCBlbmQoKSk7CiB9CiAKIHZvaWQg
UmVnaXN0ZXJGaWxlOjpyZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKQo=
</data>
<flag name="review"
          id="90413"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>