<?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>136843</bug_id>
          
          <creation_ts>2014-09-15 16:12:15 -0700</creation_ts>
          <short_desc>bmalloc: allocate small and medium objects using the same bump pointer class</short_desc>
          <delta_ts>2014-09-15 19:24:45 -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>barraclough</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1035329</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-15 16:12:15 -0700</bug_when>
    <thetext>bmalloc: allocate small and medium objects using the same bump pointer class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035331</commentid>
    <comment_count>1</comment_count>
      <attachid>238146</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-15 16:17:36 -0700</bug_when>
    <thetext>Created attachment 238146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035349</commentid>
    <comment_count>2</comment_count>
      <attachid>238146</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-09-15 18:05:00 -0700</bug_when>
    <thetext>Comment on attachment 238146
Patch

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

r+, but guessing you don&apos;t mean to enable in this patch.

&gt; Source/WTF/wtf/FastMalloc.cpp:109
&gt; +#define USE_BMALLOC 1

Was this intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035360</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-15 19:24:03 -0700</bug_when>
    <thetext>&gt; &gt; Source/WTF/wtf/FastMalloc.cpp:109
&gt; &gt; +#define USE_BMALLOC 1
&gt; 
&gt; Was this intentional?

Sorry for the confusion.

For EWS purposes, I&apos;ve been submitting patches with bmalloc enabled -- but I&apos;ll remove before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035361</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-15 19:24:45 -0700</bug_when>
    <thetext>Committed r173645: &lt;http://trac.webkit.org/changeset/173645&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238146</attachid>
            <date>2014-09-15 16:17:36 -0700</date>
            <delta_ts>2014-09-15 18:05:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136843-20140915161733.patch</filename>
            <type>text/plain</type>
            <size>25142</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCShyZXZpc2lvbiAxNzM1NDApCisrKyBTb3VyY2UvV1RG
L3d0Zi9GYXN0TWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSwxMCBAQAog
I2RlZmluZSBVU0VfQk1BTExPQyAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShDT0NPQSkgJiYg
KENQVShYODZfNjQpIHx8IENQVShBUk02NCkpKQorI2RlZmluZSBVU0VfQk1BTExPQyAxCisjZW5k
aWYKKwogI2lmICEoZGVmaW5lZChVU0VfU1lTVEVNX01BTExPQykgJiYgVVNFX1NZU1RFTV9NQUxM
T0MpICYmIGRlZmluZWQoTkRFQlVHKQogI2RlZmluZSBGT1JDRV9TWVNURU1fTUFMTE9DIDAKICNl
bHNlCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L2JtYWxsb2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzM2MzYpCisrKyBTb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2OCBAQAorMjAxNC0wOS0xNSAgR2Vv
ZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIGJtYWxsb2M6IGFsbG9j
YXRlIHNtYWxsIGFuZCBtZWRpdW0gb2JqZWN0cyB1c2luZyB0aGUgc2FtZSBidW1wIHBvaW50ZXIg
Y2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
Njg0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDQl
IHNwZWVkdXAgb24gTWFsbG9jQmVuY2guCisKKyAgICAgICAgTm93IHRoYXQgbWVkaXVtLXNpemVk
IG9iamVjdHMgaGF2ZSBkZWRpY2F0ZWQgcGVyLXNpemUgYWxsb2NhdG9ycywgdGhleQorICAgICAg
ICBkb24ndCBuZWVkIHRvIHVzZSBhbiBhcmJpdHJhcnkgYnVtcCBwb2ludGVyIGFsbG9jYXRvci4g
VGhpcyBtZWFucyB0aGF0CisgICAgICAgIGV2ZXJ5IGFsbG9jYXRvciBrbm93cyBob3cgbWFueSBv
YmplY3RzIGl0IHdpbGwgYWxsb2NhdGUgZnJvbSB0aGUgc3RhcnQsCisgICAgICAgIGFuZCB3ZSBk
b24ndCBuZWVkIGEgcG9zdC1wcm9jZXNzaW5nIHN0ZXAgdG8gYWRqdXN0IHJlZmNvdW50cyBiYXNl
ZCBvbgorICAgICAgICByZWFsIGFsbG9jYXRpb24gY291bnQuCisKKyAgICAgICAgKiBibWFsbG9j
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbmFtZWQgU21hbGxBbGxvY2F0b3IgdG8gQnVt
cEFsbG9jYXRvcgorICAgICAgICBzaW5jZSBpdCdzIHVzZWQgZm9yIHNtYWxsIGFuZCBtZWRpdW0g
b2JqZWN0cyBub3cuCisKKyAgICAgICAgKiBibWFsbG9jL0FsbG9jYXRvci5jcHA6CisgICAgICAg
IChibWFsbG9jOjpBbGxvY2F0b3I6OkFsbG9jYXRvcik6IFVwZGF0ZWQgdG8gdXNlIG5ldyBpbnRl
cmZhY2UuCisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6OnNjYXZlbmdlKTogVG8gInJldGly
ZSIgYW4gYWxsb2NhdG9yLCB3ZSBqdXN0IG5lZWQKKyAgICAgICAgdG8gbWFrZSBzdXJlIHRoYXQg
d2UgZmluaXNoIGFsbG9jYXRpbmcgYWxsIHRoZSBvYmplY3RzIGluIGl0LgorCisgICAgICAgIChi
bWFsbG9jOjpBbGxvY2F0b3I6OmFsbG9jYXRlTWVkaXVtKToKKyAgICAgICAgKGJtYWxsb2M6OkFs
bG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZSk6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6
OnJldGlyZSk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6OnByb2Nlc3NT
bWFsbEFsbG9jYXRvckxvZyk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6
OnByb2Nlc3NNZWRpdW1BbGxvY2F0b3JMb2cpOiBEZWxldGVkLgorICAgICAgICAqIGJtYWxsb2Mv
QWxsb2NhdG9yLmg6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0b3I6OmFsbG9jYXRlRmFzdENh
c2UpOiBSZW1vdmVkIGFic3RyYWN0aW9ucyBhbmQgZGF0YQorICAgICAgICB1c2VkIHRvIHBvc3Qt
cHJvY2VzcyBhbiBhbGxvY2F0b3IgYmFzZWQgb24gaG93IG1hbnkgb2JqZWN0cyBpdCBhbGxvY2F0
ZWQuCisKKyAgICAgICAgKiBibWFsbG9jL0J1bXBBbGxvY2F0b3IuaDogQ29waWVkIGZyb20gU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbEFsbG9jYXRvci5oLgorICAgICAgICAoYm1hbGxvYzo6
QnVtcEFsbG9jYXRvcjo6QnVtcEFsbG9jYXRvcik6CisgICAgICAgIChibWFsbG9jOjpCdW1wQWxs
b2NhdG9yOjppbml0KToKKyAgICAgICAgKGJtYWxsb2M6OkJ1bXBBbGxvY2F0b3I6OmxpbmUpOgor
ICAgICAgICAoYm1hbGxvYzo6QnVtcEFsbG9jYXRvcjo6dmFsaWRhdGUpOgorICAgICAgICAoYm1h
bGxvYzo6QnVtcEFsbG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAoYm1hbGxvYzo6QnVtcEFs
bG9jYXRvcjo6cmVmaWxsKToKKyAgICAgICAgKGJtYWxsb2M6OkJ1bXBBbGxvY2F0b3I6OmNsZWFy
KTogVXBkYXRlZCB0aGVzZSBmdW5jdGlvbnMgdG8gYmUgYWdub3N0aWMKKyAgICAgICAgYWJvdXQg
dGhlIGtpbmRzIG9mIGxpbmVzIHRoZXkgYWxsb2NhdGUgaW50by4gSW4gc29tZSBjYXNlcywgdGhl
IGxpbmUKKyAgICAgICAgdHlwZSBtdXN0IGJlIHByb3ZpZGVkIGFzIGEgdGVtcGxhdGUgcGFyYW1l
dGVyIGJ5IHRoZSBjYWxsZXIuCisKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsQWxsb2NhdG9yOjpT
bWFsbEFsbG9jYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpTbWFsbEFsbG9jYXRv
cjo6bGluZSk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpTbWFsbEFsbG9jYXRvcjo6YWxs
b2NhdGUpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6U21hbGxBbGxvY2F0b3I6Om9iamVj
dENvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsQWxsb2NhdG9yOjpkZXJl
ZkNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsQWxsb2NhdG9yOjpyZWZp
bGwpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxvYzo6U21hbGxBbGxvY2F0b3I6OmNsZWFyKTog
RGVsZXRlZC4KKworICAgICAgICAqIGJtYWxsb2MvT2JqZWN0VHlwZS5oOgorICAgICAgICAoYm1h
bGxvYzo6aXNNZWRpdW0pOgorCisgICAgICAgICogYm1hbGxvYy9TbWFsbEFsbG9jYXRvci5oOgor
ICAgICAgICAoYm1hbGxvYzo6U21hbGxBbGxvY2F0b3I6OmlzTnVsbCk6IERlbGV0ZWQuCisgICAg
ICAgIChibWFsbG9jOjpTbWFsbEFsbG9jYXRvcjo6Y2FuQWxsb2NhdGUpOiBEZWxldGVkLgorICAg
ICAgICAoYm1hbGxvYzo6U21hbGxBbGxvY2F0b3I6OlNtYWxsQWxsb2NhdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKGJtYWxsb2M6OlNtYWxsQWxsb2NhdG9yOjpsaW5lKTogRGVsZXRlZC4KKyAgICAg
ICAgKGJtYWxsb2M6OlNtYWxsQWxsb2NhdG9yOjphbGxvY2F0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChibWFsbG9jOjpTbWFsbEFsbG9jYXRvcjo6b2JqZWN0Q291bnQpOiBEZWxldGVkLgorICAgICAg
ICAoYm1hbGxvYzo6U21hbGxBbGxvY2F0b3I6OmRlcmVmQ291bnQpOiBEZWxldGVkLgorICAgICAg
ICAoYm1hbGxvYzo6U21hbGxBbGxvY2F0b3I6OnJlZmlsbCk6IERlbGV0ZWQuCisgICAgICAgIChi
bWFsbG9jOjpTbWFsbEFsbG9jYXRvcjo6Y2xlYXIpOiBEZWxldGVkLgorCiAyMDE0LTA5LTEyICBH
ZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4ZWQgYSBnb29m
IGluIGJtYWxsb2MgVmVjdG9yIHNpemluZwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTczNTMwKQorKysgU291
cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiAJCTE0REQ3ODk5MThGNDhENEEwMDk1MDcwMiAvKiBDYWNo
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0NDY5
RTUxN0E0NkJGRTAwRjlFQTFEIC8qIENhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRERDc4OUExOEY0OEQ0QTAwOTUwNzAyIC8qIERlYWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDVGNjg1QTE3OURDOTAyMDBENjU1OTggLyogRGVhbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNERENzg5QjE4RjQ4RDRBMDA5NTA3
MDIgLyogTWVkaXVtQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDEzRTQ3MDE4QTA2NjE3MDA1NDZENjggLyogTWVkaXVtQWxsb2NhdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMTRE
RDc4OUMxOEY0OEQ0QTAwOTUwNzAyIC8qIFNtYWxsQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEzRTQ2MjE4OURFMUNEMDA1NDZENjgg
LyogU21hbGxBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkxNERENzg5QzE4RjQ4RDRBMDA5NTA3MDIgLyogQnVtcEFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQxM0U0NjIx
ODlERTFDRDAwNTQ2RDY4IC8qIEJ1bXBBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNERENzhCNDE4RjQ4RDZCMDA5NTA3MDIgLyog
Q2h1bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
N0FBQTk0MThDRTVDQTYwMDIyMDFFNCAvKiBDaHVuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0REQ3OEI1MThGNDhENkIwMDk1MDcwMiAvKiBM
aW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNERB
MzIwNzE4ODVGOUU2MDA3MjY5RTAgLyogTGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0REQ3OEI2MThGNDhENkIwMDk1MDcwMiAvKiBNZWRp
dW1DaHVuay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQ3QUFBOEUxOENEODlFMzAwMjIwMUU0IC8qIE1lZGl1bUNodW5rLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1LDcgKzc1LDcgQEAKIAkJMTQx
MDVFN0IxOERCRDdBRjAwM0ExMDZFIC8qIEJvdW5kYXJ5VGFnSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBCb3VuZGFyeVRhZ0lubGluZXMuaDsgcGF0aCA9IGJtYWxs
b2MvQm91bmRhcnlUYWdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
MTA1RTgzMThFMTQzNzQwMDNBMTA2RSAvKiBPYmplY3RUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9iamVjdFR5cGUuY3BwOyBwYXRoID0gYm1hbGxvYy9PYmpl
Y3RUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQxM0U0NjAxODlEQ0Ux
RTAwNTQ2RDY4IC8qIElubGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJ
bmxpbmUuaDsgcGF0aCA9IGJtYWxsb2MvSW5saW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTE0MTNFNDYyMTg5REUxQ0QwMDU0NkQ2OCAvKiBTbWFsbEFsbG9jYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gU21hbGxBbGxvY2F0
b3IuaDsgcGF0aCA9IGJtYWxsb2MvU21hbGxBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTQxM0U0NjIxODlERTFDRDAwNTQ2RDY4IC8qIEJ1bXBBbGxvY2F0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IEJ1bXBBbGxv
Y2F0b3IuaDsgcGF0aCA9IGJtYWxsb2MvQnVtcEFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDEzRTQ2ODE4OUVFREU0MDA1NDZENjggLyogQkFzc2VydC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCQXNzZXJ0Lmg7IHBhdGggPSBibWFsbG9jL0JB
c3NlcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQxM0U0NzAxOEEwNjYxNzAw
NTQ2RDY4IC8qIE1lZGl1bUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBNZWRpdW1BbGxvY2F0b3IuaDsgcGF0aCA9IGJtYWxsb2MvTWVkaXVtQWxsb2NhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MTdGNjQ1MThCNTRBNzAwMDc2RkEzRiAv
KiBCZWdpblRhZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCZWdpblRhZy5o
OyBwYXRoID0gYm1hbGxvYy9CZWdpblRhZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjM2LDcgKzIzNiw3IEBACiAJCQkJMTQ1RjY4NTkxNzlEQzkwMjAwRDY1NTk4IC8qIERlYWxs
b2NhdG9yLmNwcCAqLywKIAkJCQkxNDVGNjg1QTE3OURDOTAyMDBENjU1OTggLyogRGVhbGxvY2F0
b3IuaCAqLywKIAkJCQkxNDEzRTQ3MDE4QTA2NjE3MDA1NDZENjggLyogTWVkaXVtQWxsb2NhdG9y
LmggKi8sCi0JCQkJMTQxM0U0NjIxODlERTFDRDAwNTQ2RDY4IC8qIFNtYWxsQWxsb2NhdG9yLmgg
Ki8sCisJCQkJMTQxM0U0NjIxODlERTFDRDAwNTQ2RDY4IC8qIEJ1bXBBbGxvY2F0b3IuaCAqLywK
IAkJCSk7CiAJCQluYW1lID0gY2FjaGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
MzA3LDcgKzMwNyw3IEBACiAJCQkJMTQwMDI3NEMxOEY4OUMzRDAwMTE1Qzk3IC8qIFNlZ3JlZ2F0
ZWRGcmVlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OEQxOEY0OENDNjAwOTUwNzAy
IC8qIEJlZ2luVGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDRDE4RjQ4RDc1MDA5NTA3
MDIgLyogUmFuZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTE0REQ3ODlDMThGNDhENEEwMDk1MDcw
MiAvKiBTbWFsbEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRERDc4OUMxOEY0OEQ0
QTAwOTUwNzAyIC8qIEJ1bXBBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3ODk5
MThGNDhENEEwMDk1MDcwMiAvKiBDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OUIx
OEY0OEQ0QTAwOTUwNzAyIC8qIE1lZGl1bUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTRERDc4QkUxOEY0OEQ2QjAwOTUwNzAyIC8qIFNtYWxsVHJhaXRzLmggaW4gSGVhZGVycyAqLywK
SW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAJKHJldmlzaW9uIDE3MzUzOCkK
KysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsMTYgKzM3LDEyIEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogQWxsb2NhdG9yOjpBbGxv
Y2F0b3IoRGVhbGxvY2F0b3ImIGRlYWxsb2NhdG9yKQogICAgIDogbV9kZWFsbG9jYXRvcihkZWFs
bG9jYXRvcikKLSAgICAsIG1fc21hbGxBbGxvY2F0b3JzKCkKLSAgICAsIG1fbWVkaXVtQWxsb2Nh
dG9ycygpCi0gICAgLCBtX3NtYWxsQWxsb2NhdG9yTG9nKCkKLSAgICAsIG1fbWVkaXVtQWxsb2Nh
dG9yTG9nKCkKIHsKLSAgICB1bnNpZ25lZCBzaG9ydCBzaXplID0gYWxpZ25tZW50OwotICAgIGZv
ciAoYXV0byYgYWxsb2NhdG9yIDogbV9zbWFsbEFsbG9jYXRvcnMpIHsKLSAgICAgICAgYWxsb2Nh
dG9yID0gU21hbGxBbGxvY2F0b3Ioc2l6ZSk7Ci0gICAgICAgIHNpemUgKz0gYWxpZ25tZW50Owot
ICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIHNob3J0IGkgPSBhbGlnbm1lbnQ7IGkgPD0gc21hbGxN
YXg7IGkgKz0gYWxpZ25tZW50KQorICAgICAgICBtX3NtYWxsQWxsb2NhdG9yc1tzbWFsbFNpemVD
bGFzc0ZvcihpKV0uaW5pdDxTbWFsbExpbmU+KGkpOworCisgICAgZm9yICh1bnNpZ25lZCBzaG9y
dCBpID0gc21hbGxNYXggKyBhbGlnbm1lbnQ7IGkgPD0gbWVkaXVtTWF4OyBpICs9IGFsaWdubWVu
dCkKKyAgICAgICAgbV9tZWRpdW1BbGxvY2F0b3JzW21lZGl1bVNpemVDbGFzc0ZvcihpKV0uaW5p
dDxNZWRpdW1MaW5lPihpKTsKIH0KIAogQWxsb2NhdG9yOjp+QWxsb2NhdG9yKCkKQEAgLTU3LDYy
ICs1MywxNiBAQCBBbGxvY2F0b3I6On5BbGxvY2F0b3IoKQogdm9pZCBBbGxvY2F0b3I6OnNjYXZl
bmdlKCkKIHsKICAgICBmb3IgKGF1dG8mIGFsbG9jYXRvciA6IG1fc21hbGxBbGxvY2F0b3JzKSB7
Ci0gICAgICAgIHJldGlyZShhbGxvY2F0b3IpOworICAgICAgICB3aGlsZSAoYWxsb2NhdG9yLmNh
bkFsbG9jYXRlKCkpCisgICAgICAgICAgICBtX2RlYWxsb2NhdG9yLmRlYWxsb2NhdGUoYWxsb2Nh
dG9yLmFsbG9jYXRlKCkpOwogICAgICAgICBhbGxvY2F0b3IuY2xlYXIoKTsKICAgICB9Ci0gICAg
cHJvY2Vzc1NtYWxsQWxsb2NhdG9yTG9nKCk7CiAKICAgICBmb3IgKGF1dG8mIGFsbG9jYXRvciA6
IG1fbWVkaXVtQWxsb2NhdG9ycykgewotICAgICAgICByZXRpcmUoYWxsb2NhdG9yKTsKKyAgICAg
ICAgd2hpbGUgKGFsbG9jYXRvci5jYW5BbGxvY2F0ZSgpKQorICAgICAgICAgICAgbV9kZWFsbG9j
YXRvci5kZWFsbG9jYXRlKGFsbG9jYXRvci5hbGxvY2F0ZSgpKTsKICAgICAgICAgYWxsb2NhdG9y
LmNsZWFyKCk7CiAgICAgfQotICAgIHByb2Nlc3NNZWRpdW1BbGxvY2F0b3JMb2coKTsKLX0KLQot
dm9pZCBBbGxvY2F0b3I6OnJldGlyZShTbWFsbEFsbG9jYXRvciYgYWxsb2NhdG9yKQotewotICAg
IGlmIChtX3NtYWxsQWxsb2NhdG9yTG9nLnNpemUoKSA9PSBtX3NtYWxsQWxsb2NhdG9yTG9nLmNh
cGFjaXR5KCkpCi0gICAgICAgIHByb2Nlc3NTbWFsbEFsbG9jYXRvckxvZygpOwotICAgIAotICAg
IGlmIChhbGxvY2F0b3IuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc21hbGxB
bGxvY2F0b3JMb2cucHVzaChzdGQ6Om1ha2VfcGFpcihhbGxvY2F0b3IubGluZSgpLCBhbGxvY2F0
b3IuZGVyZWZDb3VudCgpKSk7Ci19Ci0KLXZvaWQgQWxsb2NhdG9yOjpwcm9jZXNzU21hbGxBbGxv
Y2F0b3JMb2coKQotewotICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4gbG9jayhQZXJQ
cm9jZXNzPEhlYXA+OjptdXRleCgpKTsKLQotICAgIGZvciAoYXV0byYgbG9nRW50cnkgOiBtX3Nt
YWxsQWxsb2NhdG9yTG9nKSB7Ci0gICAgICAgIGlmICghbG9nRW50cnkuZmlyc3QtPmRlcmVmKGxv
Y2ssIGxvZ0VudHJ5LnNlY29uZCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9k
ZWFsbG9jYXRvci5kZWFsbG9jYXRlU21hbGxMaW5lKGxvY2ssIGxvZ0VudHJ5LmZpcnN0KTsKLSAg
ICB9Ci0gICAgbV9zbWFsbEFsbG9jYXRvckxvZy5jbGVhcigpOwotfQotCi12b2lkIEFsbG9jYXRv
cjo6cmV0aXJlKE1lZGl1bUFsbG9jYXRvciYgYWxsb2NhdG9yKQotewotICAgIGlmIChtX21lZGl1
bUFsbG9jYXRvckxvZy5zaXplKCkgPT0gbV9tZWRpdW1BbGxvY2F0b3JMb2cuY2FwYWNpdHkoKSkK
LSAgICAgICAgcHJvY2Vzc01lZGl1bUFsbG9jYXRvckxvZygpOwotCi0gICAgaWYgKGFsbG9jYXRv
ci5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9tZWRpdW1BbGxvY2F0b3JMb2cu
cHVzaChzdGQ6Om1ha2VfcGFpcihhbGxvY2F0b3IubGluZSgpLCBhbGxvY2F0b3IuZGVyZWZDb3Vu
dCgpKSk7Ci19Ci0KLXZvaWQgQWxsb2NhdG9yOjpwcm9jZXNzTWVkaXVtQWxsb2NhdG9yTG9nKCkK
LXsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+IGxvY2soUGVyUHJvY2VzczxIZWFw
Pjo6bXV0ZXgoKSk7Ci0KLSAgICBmb3IgKGF1dG8mIGxvZ0VudHJ5IDogbV9tZWRpdW1BbGxvY2F0
b3JMb2cpIHsKLSAgICAgICAgaWYgKCFsb2dFbnRyeS5maXJzdC0+ZGVyZWYobG9jaywgbG9nRW50
cnkuc2Vjb25kKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2RlYWxsb2NhdG9y
LmRlYWxsb2NhdGVNZWRpdW1MaW5lKGxvY2ssIGxvZ0VudHJ5LmZpcnN0KTsKLSAgICB9Ci0gICAg
bV9tZWRpdW1BbGxvY2F0b3JMb2cuY2xlYXIoKTsKIH0KIAogdm9pZCogQWxsb2NhdG9yOjphbGxv
Y2F0ZUxhcmdlKHNpemVfdCBzaXplKQpAQCAtMTMxLDE2ICs4MSwxMSBAQCB2b2lkKiBBbGxvY2F0
b3I6OmFsbG9jYXRlWExhcmdlKHNpemVfdCBzCiAKIHZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGVN
ZWRpdW0oc2l6ZV90IHNpemUpCiB7Ci0gICAgTWVkaXVtQWxsb2NhdG9yJiBhbGxvY2F0b3IgPSBt
X21lZGl1bUFsbG9jYXRvcnNbbWVkaXVtU2l6ZUNsYXNzRm9yKHNpemUpXTsKLSAgICBzaXplID0g
cm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnQ+KHNpemUpOworICAgIEJ1bXBBbGxvY2F0b3Im
IGFsbG9jYXRvciA9IG1fbWVkaXVtQWxsb2NhdG9yc1ttZWRpdW1TaXplQ2xhc3NGb3Ioc2l6ZSld
OwogCi0gICAgdm9pZCogb2JqZWN0OwotICAgIGlmIChhbGxvY2F0b3IuYWxsb2NhdGUoc2l6ZSwg
b2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIG9iamVjdDsKLQotICAgIHJldGlyZShhbGxvY2F0b3Ip
OwotICAgIGFsbG9jYXRvci5yZWZpbGwobV9kZWFsbG9jYXRvci5hbGxvY2F0ZU1lZGl1bUxpbmUo
KSk7Ci0gICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0ZShzaXplKTsKKyAgICBpZiAoIWFsbG9j
YXRvci5jYW5BbGxvY2F0ZSgpKQorICAgICAgICBhbGxvY2F0b3IucmVmaWxsKG1fZGVhbGxvY2F0
b3IuYWxsb2NhdGVNZWRpdW1MaW5lKCkpOworICAgIHJldHVybiBhbGxvY2F0b3IuYWxsb2NhdGUo
KTsKIH0KIAogdm9pZCogQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKHNpemVfdCBzaXplKQpA
QCAtMTUxLDggKzk2LDcgQEAgSUZfREVCVUcoCiApCiAgICAgaWYgKHNpemUgPD0gc21hbGxNYXgp
IHsKICAgICAgICAgc2l6ZV90IHNtYWxsU2l6ZUNsYXNzID0gc21hbGxTaXplQ2xhc3NGb3Ioc2l6
ZSk7Ci0gICAgICAgIFNtYWxsQWxsb2NhdG9yJiBhbGxvY2F0b3IgPSBtX3NtYWxsQWxsb2NhdG9y
c1tzbWFsbFNpemVDbGFzc107Ci0gICAgICAgIHJldGlyZShhbGxvY2F0b3IpOworICAgICAgICBC
dW1wQWxsb2NhdG9yJiBhbGxvY2F0b3IgPSBtX3NtYWxsQWxsb2NhdG9yc1tzbWFsbFNpemVDbGFz
c107CiAgICAgICAgIGFsbG9jYXRvci5yZWZpbGwobV9kZWFsbG9jYXRvci5hbGxvY2F0ZVNtYWxs
TGluZShzbWFsbFNpemVDbGFzcykpOwogICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRl
KCk7CiAgICAgfQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5oCShyZXZpc2lvbiAx
NzM1MzgpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpZm5kZWYgQWxsb2NhdG9yX2gKICNkZWZpbmUgQWxs
b2NhdG9yX2gKIAorI2luY2x1ZGUgIkJ1bXBBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJGaXhlZFZl
Y3Rvci5oIgogI2luY2x1ZGUgIk1lZGl1bUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIlNpemVzLmgi
Ci0jaW5jbHVkZSAiU21hbGxBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJTbWFsbExpbmUuaCIKICNp
bmNsdWRlIDxhcnJheT4KIAogbmFtZXNwYWNlIGJtYWxsb2MgewpAQCAtNTAsMjUgKzUxLDE2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNjYXZlbmdlKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCogYWxs
b2NhdGVGYXN0Q2FzZShTbWFsbEFsbG9jYXRvciYpOworICAgIHZvaWQqIGFsbG9jYXRlRmFzdENh
c2UoQnVtcEFsbG9jYXRvciYpOwogCiAgICAgdm9pZCogYWxsb2NhdGVNZWRpdW0oc2l6ZV90KTsK
ICAgICB2b2lkKiBhbGxvY2F0ZUxhcmdlKHNpemVfdCk7CiAgICAgdm9pZCogYWxsb2NhdGVYTGFy
Z2Uoc2l6ZV90KTsKICAgICAKLSAgICB2b2lkIHJldGlyZShTbWFsbEFsbG9jYXRvciYpOwotICAg
IHZvaWQgcmV0aXJlKE1lZGl1bUFsbG9jYXRvciYpOwotCi0gICAgdm9pZCBwcm9jZXNzU21hbGxB
bGxvY2F0b3JMb2coKTsKLSAgICB2b2lkIHByb2Nlc3NNZWRpdW1BbGxvY2F0b3JMb2coKTsKLQog
ICAgIERlYWxsb2NhdG9yJiBtX2RlYWxsb2NhdG9yOwogCi0gICAgc3RkOjphcnJheTxTbWFsbEFs
bG9jYXRvciwgc21hbGxNYXggLyBhbGlnbm1lbnQ+IG1fc21hbGxBbGxvY2F0b3JzOwotICAgIHN0
ZDo6YXJyYXk8TWVkaXVtQWxsb2NhdG9yLCBtZWRpdW1NYXggLyBhbGlnbm1lbnQ+IG1fbWVkaXVt
QWxsb2NhdG9yczsKLQotICAgIEZpeGVkVmVjdG9yPHN0ZDo6cGFpcjxTbWFsbExpbmUqLCB1bnNp
Z25lZCBjaGFyPiwgc21hbGxBbGxvY2F0b3JMb2dDYXBhY2l0eT4gbV9zbWFsbEFsbG9jYXRvckxv
ZzsKLSAgICBGaXhlZFZlY3RvcjxzdGQ6OnBhaXI8TWVkaXVtTGluZSosIHVuc2lnbmVkIGNoYXI+
LCBtZWRpdW1BbGxvY2F0b3JMb2dDYXBhY2l0eT4gbV9tZWRpdW1BbGxvY2F0b3JMb2c7CisgICAg
c3RkOjphcnJheTxCdW1wQWxsb2NhdG9yLCBzbWFsbE1heCAvIGFsaWdubWVudD4gbV9zbWFsbEFs
bG9jYXRvcnM7CisgICAgc3RkOjphcnJheTxCdW1wQWxsb2NhdG9yLCBtZWRpdW1NYXggLyBhbGln
bm1lbnQ+IG1fbWVkaXVtQWxsb2NhdG9yczsKIH07CiAKIGlubGluZSBib29sIEFsbG9jYXRvcjo6
YWxsb2NhdGVGYXN0Q2FzZShzaXplX3Qgc2l6ZSwgdm9pZComIG9iamVjdCkKQEAgLTc2LDcgKzY4
LDcgQEAgaW5saW5lIGJvb2wgQWxsb2NhdG9yOjphbGxvY2F0ZUZhc3RDYXNlKAogICAgIGlmIChz
aXplID4gc21hbGxNYXgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNtYWxsQWxsb2Nh
dG9yJiBhbGxvY2F0b3IgPSBtX3NtYWxsQWxsb2NhdG9yc1tzbWFsbFNpemVDbGFzc0ZvcihzaXpl
KV07CisgICAgQnVtcEFsbG9jYXRvciYgYWxsb2NhdG9yID0gbV9zbWFsbEFsbG9jYXRvcnNbc21h
bGxTaXplQ2xhc3NGb3Ioc2l6ZSldOwogICAgIGlmICghYWxsb2NhdG9yLmNhbkFsbG9jYXRlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9C
dW1wQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CdW1w
QWxsb2NhdG9yLmgJKHJldmlzaW9uIDE3MzUzMCkJKGZyb20gU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9TbWFsbEFsbG9jYXRvci5oOjE3MzUzMCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQnVt
cEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU21hbGxBbGxvY2F0
b3JfaAorI2RlZmluZSBTbWFsbEFsbG9jYXRvcl9oCisKKyNpbmNsdWRlICJCQXNzZXJ0LmgiCisj
aW5jbHVkZSAiU21hbGxDaHVuay5oIgorI2luY2x1ZGUgIlNtYWxsTGluZS5oIgorCituYW1lc3Bh
Y2UgYm1hbGxvYyB7CisKKy8vIEhlbHBlciBvYmplY3QgZm9yIGFsbG9jYXRpbmcgc21hbGwgb2Jq
ZWN0cy4KKworY2xhc3MgU21hbGxBbGxvY2F0b3IgeworcHVibGljOgorICAgIFNtYWxsQWxsb2Nh
dG9yKCk7CisgICAgU21hbGxBbGxvY2F0b3Ioc2l6ZV90KTsKKyAgICAKKyAgICBib29sIGlzTnVs
bCgpIHsgcmV0dXJuICFtX3B0cjsgfQorICAgIFNtYWxsTGluZSogbGluZSgpOworCisgICAgYm9v
bCBjYW5BbGxvY2F0ZSgpIHsgcmV0dXJuICEhbV9yZW1haW5pbmc7IH0KKyAgICB2b2lkKiBhbGxv
Y2F0ZSgpOworCisgICAgdW5zaWduZWQgc2hvcnQgb2JqZWN0Q291bnQoKTsKKyAgICB1bnNpZ25l
ZCBjaGFyIGRlcmVmQ291bnQoKTsKKworICAgIHZvaWQgcmVmaWxsKFNtYWxsTGluZSopOworICAg
IHZvaWQgY2xlYXIoKTsKKworcHJpdmF0ZToKKyAgICBjaGFyKiBtX3B0cjsKKyAgICB1bnNpZ25l
ZCBzaG9ydCBtX3NpemU7CisgICAgdW5zaWduZWQgY2hhciBtX3JlbWFpbmluZzsKKyAgICB1bnNp
Z25lZCBjaGFyIG1fbWF4T2JqZWN0Q291bnQ7Cit9OworCitpbmxpbmUgU21hbGxBbGxvY2F0b3I6
OlNtYWxsQWxsb2NhdG9yKCkKKyAgICA6IG1fcHRyKCkKKyAgICAsIG1fc2l6ZSgpCisgICAgLCBt
X3JlbWFpbmluZygpCisgICAgLCBtX21heE9iamVjdENvdW50KCkKK3sKK30KKworaW5saW5lIFNt
YWxsQWxsb2NhdG9yOjpTbWFsbEFsbG9jYXRvcihzaXplX3Qgc2l6ZSkKKyAgICA6IG1fcHRyKCkK
KyAgICAsIG1fc2l6ZShzaXplKQorICAgICwgbV9yZW1haW5pbmcoKQorICAgICwgbV9tYXhPYmpl
Y3RDb3VudChzbWFsbExpbmVTaXplIC8gc2l6ZSkKK3sKK30KKworaW5saW5lIFNtYWxsTGluZSog
U21hbGxBbGxvY2F0b3I6OmxpbmUoKQoreworICAgIHJldHVybiBTbWFsbExpbmU6OmdldChjYW5B
bGxvY2F0ZSgpID8gbV9wdHIgOiBtX3B0ciAtIDEpOworfQorCitpbmxpbmUgdm9pZCogU21hbGxB
bGxvY2F0b3I6OmFsbG9jYXRlKCkKK3sKKyAgICBCQVNTRVJUKG1fcmVtYWluaW5nKTsKKyAgICBC
QVNTRVJUKG1fc2l6ZSA+PSBTbWFsbExpbmU6Om1pbmltdW1PYmplY3RTaXplKTsKKworICAgIC0t
bV9yZW1haW5pbmc7CisgICAgY2hhciogcmVzdWx0ID0gbV9wdHI7CisgICAgbV9wdHIgKz0gbV9z
aXplOworICAgIEJBU1NFUlQoaXNTbWFsbChyZXN1bHQpKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitpbmxpbmUgdW5zaWduZWQgc2hvcnQgU21hbGxBbGxvY2F0b3I6Om9iamVjdENvdW50KCkK
K3sKKyAgICByZXR1cm4gbV9tYXhPYmplY3RDb3VudCAtIG1fcmVtYWluaW5nOworfQorCitpbmxp
bmUgdW5zaWduZWQgY2hhciBTbWFsbEFsbG9jYXRvcjo6ZGVyZWZDb3VudCgpCit7CisgICAgcmV0
dXJuIFNtYWxsTGluZTo6bWF4UmVmQ291bnQgLSBvYmplY3RDb3VudCgpOworfQorCitpbmxpbmUg
dm9pZCBTbWFsbEFsbG9jYXRvcjo6cmVmaWxsKFNtYWxsTGluZSogbGluZSkKK3sKKyAgICBCQVNT
RVJUKCFjYW5BbGxvY2F0ZSgpKTsKKyAgICBsaW5lLT5jb25jdXJyZW50UmVmKFNtYWxsTGluZTo6
bWF4UmVmQ291bnQpOworICAgIG1fcHRyID0gbGluZS0+YmVnaW4oKTsKKyAgICBtX3JlbWFpbmlu
ZyA9IG1fbWF4T2JqZWN0Q291bnQ7Cit9CisKK2lubGluZSB2b2lkIFNtYWxsQWxsb2NhdG9yOjpj
bGVhcigpCit7CisgICAgbV9wdHIgPSBudWxscHRyOworICAgIG1fcmVtYWluaW5nID0gMDsKK30K
KworfSAvLyBuYW1lc3BhY2UgYm1hbGxvYworCisjZW5kaWYgLy8gU21hbGxBbGxvY2F0b3JfaApJ
bmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CdW1wQWxsb2NhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CdW1wQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkK
KysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQnVtcEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw0MiArMjMsNDAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgU21h
bGxBbGxvY2F0b3JfaAotI2RlZmluZSBTbWFsbEFsbG9jYXRvcl9oCisjaWZuZGVmIEJ1bXBBbGxv
Y2F0b3JfaAorI2RlZmluZSBCdW1wQWxsb2NhdG9yX2gKIAogI2luY2x1ZGUgIkJBc3NlcnQuaCIK
LSNpbmNsdWRlICJTbWFsbENodW5rLmgiCi0jaW5jbHVkZSAiU21hbGxMaW5lLmgiCisjaW5jbHVk
ZSAiT2JqZWN0VHlwZS5oIgogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKLS8vIEhlbHBlciBvYmpl
Y3QgZm9yIGFsbG9jYXRpbmcgc21hbGwgb2JqZWN0cy4KKy8vIEhlbHBlciBvYmplY3QgZm9yIGFs
bG9jYXRpbmcgc21hbGwgYW5kIG1lZGl1bSBvYmplY3RzLgogCi1jbGFzcyBTbWFsbEFsbG9jYXRv
ciB7CitjbGFzcyBCdW1wQWxsb2NhdG9yIHsKIHB1YmxpYzoKLSAgICBTbWFsbEFsbG9jYXRvcigp
OwotICAgIFNtYWxsQWxsb2NhdG9yKHNpemVfdCk7CisgICAgQnVtcEFsbG9jYXRvcigpOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIExpbmU+IHZvaWQgaW5pdChzaXplX3QpOwogICAgIAogICAgIGJv
b2wgaXNOdWxsKCkgeyByZXR1cm4gIW1fcHRyOyB9Ci0gICAgU21hbGxMaW5lKiBsaW5lKCk7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgTGluZT4gTGluZSogbGluZSgpOwogCiAgICAgYm9vbCBjYW5B
bGxvY2F0ZSgpIHsgcmV0dXJuICEhbV9yZW1haW5pbmc7IH0KICAgICB2b2lkKiBhbGxvY2F0ZSgp
OwogCi0gICAgdW5zaWduZWQgc2hvcnQgb2JqZWN0Q291bnQoKTsKLSAgICB1bnNpZ25lZCBjaGFy
IGRlcmVmQ291bnQoKTsKLQotICAgIHZvaWQgcmVmaWxsKFNtYWxsTGluZSopOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIExpbmU+IHZvaWQgcmVmaWxsKExpbmUqKTsKICAgICB2b2lkIGNsZWFyKCk7
CiAKIHByaXZhdGU6CisgICAgdm9pZCB2YWxpZGF0ZSh2b2lkKik7CisKICAgICBjaGFyKiBtX3B0
cjsKICAgICB1bnNpZ25lZCBzaG9ydCBtX3NpemU7CiAgICAgdW5zaWduZWQgY2hhciBtX3JlbWFp
bmluZzsKICAgICB1bnNpZ25lZCBjaGFyIG1fbWF4T2JqZWN0Q291bnQ7CiB9OwogCi1pbmxpbmUg
U21hbGxBbGxvY2F0b3I6OlNtYWxsQWxsb2NhdG9yKCkKK2lubGluZSBCdW1wQWxsb2NhdG9yOjpC
dW1wQWxsb2NhdG9yKCkKICAgICA6IG1fcHRyKCkKICAgICAsIG1fc2l6ZSgpCiAgICAgLCBtX3Jl
bWFpbmluZygpCkBAIC02Niw1MCArNjQsNTYgQEAgaW5saW5lIFNtYWxsQWxsb2NhdG9yOjpTbWFs
bEFsbG9jYXRvcigpCiB7CiB9CiAKLWlubGluZSBTbWFsbEFsbG9jYXRvcjo6U21hbGxBbGxvY2F0
b3Ioc2l6ZV90IHNpemUpCi0gICAgOiBtX3B0cigpCi0gICAgLCBtX3NpemUoc2l6ZSkKLSAgICAs
IG1fcmVtYWluaW5nKCkKLSAgICAsIG1fbWF4T2JqZWN0Q291bnQoc21hbGxMaW5lU2l6ZSAvIHNp
emUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBMaW5lPgoraW5saW5lIHZvaWQgQnVtcEFsbG9jYXRvcjo6
aW5pdChzaXplX3Qgc2l6ZSkKIHsKKyAgICBCQVNTRVJUKHNpemUgPj0gTGluZTo6bWluaW11bU9i
amVjdFNpemUpOworCisgICAgbV9wdHIgPSBudWxscHRyOworICAgIG1fc2l6ZSA9IHNpemU7Cisg
ICAgbV9yZW1haW5pbmcgPSAwOworICAgIG1fbWF4T2JqZWN0Q291bnQgPSBMaW5lOjpsaW5lU2l6
ZSAvIHNpemU7CiB9CiAKLWlubGluZSBTbWFsbExpbmUqIFNtYWxsQWxsb2NhdG9yOjpsaW5lKCkK
K3RlbXBsYXRlPHR5cGVuYW1lIExpbmU+CitpbmxpbmUgTGluZSogQnVtcEFsbG9jYXRvcjo6bGlu
ZSgpCiB7Ci0gICAgcmV0dXJuIFNtYWxsTGluZTo6Z2V0KGNhbkFsbG9jYXRlKCkgPyBtX3B0ciA6
IG1fcHRyIC0gMSk7CisgICAgcmV0dXJuIExpbmU6OmdldChjYW5BbGxvY2F0ZSgpID8gbV9wdHIg
OiBtX3B0ciAtIDEpOwogfQogCi1pbmxpbmUgdm9pZCogU21hbGxBbGxvY2F0b3I6OmFsbG9jYXRl
KCkKK2lubGluZSB2b2lkIEJ1bXBBbGxvY2F0b3I6OnZhbGlkYXRlKHZvaWQqIHB0cikKK3sKKyAg
ICBVTlVTRUQocHRyKTsKKyAgICBpZiAobV9zaXplIDw9IHNtYWxsTWF4KSB7CisgICAgICAgIEJB
U1NFUlQoaXNTbWFsbChwdHIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBC
QVNTRVJUKG1fc2l6ZSA8PSBtZWRpdW1NYXgpOworICAgIEJBU1NFUlQoaXNNZWRpdW0ocHRyKSk7
Cit9CisKK2lubGluZSB2b2lkKiBCdW1wQWxsb2NhdG9yOjphbGxvY2F0ZSgpCiB7CiAgICAgQkFT
U0VSVChtX3JlbWFpbmluZyk7Ci0gICAgQkFTU0VSVChtX3NpemUgPj0gU21hbGxMaW5lOjptaW5p
bXVtT2JqZWN0U2l6ZSk7CiAKICAgICAtLW1fcmVtYWluaW5nOwogICAgIGNoYXIqIHJlc3VsdCA9
IG1fcHRyOwogICAgIG1fcHRyICs9IG1fc2l6ZTsKLSAgICBCQVNTRVJUKGlzU21hbGwocmVzdWx0
KSk7CisgICAgdmFsaWRhdGUocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxp
bmUgdW5zaWduZWQgc2hvcnQgU21hbGxBbGxvY2F0b3I6Om9iamVjdENvdW50KCkKLXsKLSAgICBy
ZXR1cm4gbV9tYXhPYmplY3RDb3VudCAtIG1fcmVtYWluaW5nOwotfQotCi1pbmxpbmUgdW5zaWdu
ZWQgY2hhciBTbWFsbEFsbG9jYXRvcjo6ZGVyZWZDb3VudCgpCi17Ci0gICAgcmV0dXJuIFNtYWxs
TGluZTo6bWF4UmVmQ291bnQgLSBvYmplY3RDb3VudCgpOwotfQotCi1pbmxpbmUgdm9pZCBTbWFs
bEFsbG9jYXRvcjo6cmVmaWxsKFNtYWxsTGluZSogbGluZSkKK3RlbXBsYXRlPHR5cGVuYW1lIExp
bmU+CitpbmxpbmUgdm9pZCBCdW1wQWxsb2NhdG9yOjpyZWZpbGwoTGluZSogbGluZSkKIHsKICAg
ICBCQVNTRVJUKCFjYW5BbGxvY2F0ZSgpKTsKLSAgICBsaW5lLT5jb25jdXJyZW50UmVmKFNtYWxs
TGluZTo6bWF4UmVmQ291bnQpOworICAgIGxpbmUtPmNvbmN1cnJlbnRSZWYobV9tYXhPYmplY3RD
b3VudCk7CiAgICAgbV9wdHIgPSBsaW5lLT5iZWdpbigpOwogICAgIG1fcmVtYWluaW5nID0gbV9t
YXhPYmplY3RDb3VudDsKIH0KIAotaW5saW5lIHZvaWQgU21hbGxBbGxvY2F0b3I6OmNsZWFyKCkK
K2lubGluZSB2b2lkIEJ1bXBBbGxvY2F0b3I6OmNsZWFyKCkKIHsKICAgICBtX3B0ciA9IG51bGxw
dHI7CiAgICAgbV9yZW1haW5pbmcgPSAwOwpAQCAtMTE3LDQgKzEyMSw0IEBAIGlubGluZSB2b2lk
IFNtYWxsQWxsb2NhdG9yOjpjbGVhcigpCiAKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIAotI2Vu
ZGlmIC8vIFNtYWxsQWxsb2NhdG9yX2gKKyNlbmRpZiAvLyBCdW1wQWxsb2NhdG9yX2gKSW5kZXg6
IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5oCShyZXZpc2lvbiAxNzM1MzApCisrKyBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiAr
NDYsMTEgQEAgaW5saW5lIGJvb2wgaXNTbWFsbCh2b2lkKiBzbWFsbE9yTWVkaXVtKQogICAgIHJl
dHVybiB0ZXN0KHNtYWxsT3JNZWRpdW0sIHNtYWxsT3JNZWRpdW1TbWFsbFR5cGVNYXNrKTsKIH0K
IAoraW5saW5lIGJvb2wgaXNNZWRpdW0odm9pZCogc21hbGxPck1lZGl1bSkKK3sKKyAgICByZXR1
cm4gIWlzU21hbGwoc21hbGxPck1lZGl1bSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MK
IAogI2VuZGlmIC8vIE9iamVjdFR5cGVfaApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9T
bWFsbEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21h
bGxBbGxvY2F0b3IuaAkocmV2aXNpb24gMTczNTMwKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9TbWFsbEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyMCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgU21hbGxB
bGxvY2F0b3JfaAotI2RlZmluZSBTbWFsbEFsbG9jYXRvcl9oCi0KLSNpbmNsdWRlICJCQXNzZXJ0
LmgiCi0jaW5jbHVkZSAiU21hbGxDaHVuay5oIgotI2luY2x1ZGUgIlNtYWxsTGluZS5oIgotCi1u
YW1lc3BhY2UgYm1hbGxvYyB7Ci0KLS8vIEhlbHBlciBvYmplY3QgZm9yIGFsbG9jYXRpbmcgc21h
bGwgb2JqZWN0cy4KLQotY2xhc3MgU21hbGxBbGxvY2F0b3IgewotcHVibGljOgotICAgIFNtYWxs
QWxsb2NhdG9yKCk7Ci0gICAgU21hbGxBbGxvY2F0b3Ioc2l6ZV90KTsKLSAgICAKLSAgICBib29s
IGlzTnVsbCgpIHsgcmV0dXJuICFtX3B0cjsgfQotICAgIFNtYWxsTGluZSogbGluZSgpOwotCi0g
ICAgYm9vbCBjYW5BbGxvY2F0ZSgpIHsgcmV0dXJuICEhbV9yZW1haW5pbmc7IH0KLSAgICB2b2lk
KiBhbGxvY2F0ZSgpOwotCi0gICAgdW5zaWduZWQgc2hvcnQgb2JqZWN0Q291bnQoKTsKLSAgICB1
bnNpZ25lZCBjaGFyIGRlcmVmQ291bnQoKTsKLQotICAgIHZvaWQgcmVmaWxsKFNtYWxsTGluZSop
OwotICAgIHZvaWQgY2xlYXIoKTsKLQotcHJpdmF0ZToKLSAgICBjaGFyKiBtX3B0cjsKLSAgICB1
bnNpZ25lZCBzaG9ydCBtX3NpemU7Ci0gICAgdW5zaWduZWQgY2hhciBtX3JlbWFpbmluZzsKLSAg
ICB1bnNpZ25lZCBjaGFyIG1fbWF4T2JqZWN0Q291bnQ7Ci19OwotCi1pbmxpbmUgU21hbGxBbGxv
Y2F0b3I6OlNtYWxsQWxsb2NhdG9yKCkKLSAgICA6IG1fcHRyKCkKLSAgICAsIG1fc2l6ZSgpCi0g
ICAgLCBtX3JlbWFpbmluZygpCi0gICAgLCBtX21heE9iamVjdENvdW50KCkKLXsKLX0KLQotaW5s
aW5lIFNtYWxsQWxsb2NhdG9yOjpTbWFsbEFsbG9jYXRvcihzaXplX3Qgc2l6ZSkKLSAgICA6IG1f
cHRyKCkKLSAgICAsIG1fc2l6ZShzaXplKQotICAgICwgbV9yZW1haW5pbmcoKQotICAgICwgbV9t
YXhPYmplY3RDb3VudChzbWFsbExpbmVTaXplIC8gc2l6ZSkKLXsKLX0KLQotaW5saW5lIFNtYWxs
TGluZSogU21hbGxBbGxvY2F0b3I6OmxpbmUoKQotewotICAgIHJldHVybiBTbWFsbExpbmU6Omdl
dChjYW5BbGxvY2F0ZSgpID8gbV9wdHIgOiBtX3B0ciAtIDEpOwotfQotCi1pbmxpbmUgdm9pZCog
U21hbGxBbGxvY2F0b3I6OmFsbG9jYXRlKCkKLXsKLSAgICBCQVNTRVJUKG1fcmVtYWluaW5nKTsK
LSAgICBCQVNTRVJUKG1fc2l6ZSA+PSBTbWFsbExpbmU6Om1pbmltdW1PYmplY3RTaXplKTsKLQot
ICAgIC0tbV9yZW1haW5pbmc7Ci0gICAgY2hhciogcmVzdWx0ID0gbV9wdHI7Ci0gICAgbV9wdHIg
Kz0gbV9zaXplOwotICAgIEJBU1NFUlQoaXNTbWFsbChyZXN1bHQpKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi1pbmxpbmUgdW5zaWduZWQgc2hvcnQgU21hbGxBbGxvY2F0b3I6Om9iamVjdENv
dW50KCkKLXsKLSAgICByZXR1cm4gbV9tYXhPYmplY3RDb3VudCAtIG1fcmVtYWluaW5nOwotfQot
Ci1pbmxpbmUgdW5zaWduZWQgY2hhciBTbWFsbEFsbG9jYXRvcjo6ZGVyZWZDb3VudCgpCi17Ci0g
ICAgcmV0dXJuIFNtYWxsTGluZTo6bWF4UmVmQ291bnQgLSBvYmplY3RDb3VudCgpOwotfQotCi1p
bmxpbmUgdm9pZCBTbWFsbEFsbG9jYXRvcjo6cmVmaWxsKFNtYWxsTGluZSogbGluZSkKLXsKLSAg
ICBCQVNTRVJUKCFjYW5BbGxvY2F0ZSgpKTsKLSAgICBsaW5lLT5jb25jdXJyZW50UmVmKFNtYWxs
TGluZTo6bWF4UmVmQ291bnQpOwotICAgIG1fcHRyID0gbGluZS0+YmVnaW4oKTsKLSAgICBtX3Jl
bWFpbmluZyA9IG1fbWF4T2JqZWN0Q291bnQ7Ci19Ci0KLWlubGluZSB2b2lkIFNtYWxsQWxsb2Nh
dG9yOjpjbGVhcigpCi17Ci0gICAgbV9wdHIgPSBudWxscHRyOwotICAgIG1fcmVtYWluaW5nID0g
MDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwotCi0jZW5kaWYgLy8gU21hbGxBbGxvY2F0
b3JfaAo=
</data>
<flag name="review"
          id="262911"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>