<?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>142049</bug_id>
          
          <creation_ts>2015-02-26 11:48:33 -0800</creation_ts>
          <short_desc>bmalloc: Refactored SegregatedFreeList and BoundaryTag::init</short_desc>
          <delta_ts>2015-02-26 12:47:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1072447</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-02-26 11:48:33 -0800</bug_when>
    <thetext>bmalloc: Refactored SegregatedFreeList and BoundaryTag::init</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072449</commentid>
    <comment_count>1</comment_count>
      <attachid>247435</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-02-26 11:50:00 -0800</bug_when>
    <thetext>Created attachment 247435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072451</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-26 11:51:34 -0800</bug_when>
    <thetext>Attachment 247435 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/VMHeap.cpp:26:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/bmalloc/bmalloc/FreeList.cpp:26:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/bmalloc/bmalloc/FreeList.cpp:28:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 3 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072456</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-02-26 12:05:30 -0800</bug_when>
    <thetext>Committed r180693: &lt;http://trac.webkit.org/changeset/180693&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072460</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-26 12:42:23 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Committed r180693: &lt;http://trac.webkit.org/changeset/180693&gt;

mac build fixed by http://trac.webkit.org/changeset/180694</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072461</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-26 12:42:44 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Committed r180693: &lt;http://trac.webkit.org/changeset/180693&gt;

cmake build fixed by http://trac.webkit.org/changeset/180695</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072462</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-26 12:47:34 -0800</bug_when>
    <thetext>Just out of curiosity, why is it funny to break the build, 
because you don&apos;t have 5-10 minutes for EWS bots?

And one more question: Is the WK2 owner model is valid from the 
brand new bmalloc too? If no, please don&apos;t break the build. Thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247435</attachid>
            <date>2015-02-26 11:50:00 -0800</date>
            <delta_ts>2015-02-26 11:57:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142049-20150226114947.patch</filename>
            <type>text/plain</type>
            <size>37978</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDY5MCkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE1LTAyLTI2ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYzogUmVmYWN0b3Jl
ZCBTZWdyZWdhdGVkRnJlZUxpc3QgYW5kIEJvdW5kYXJ5VGFnOjppbml0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwNDkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBvdXQgYSBGcmVlTGlzdCBj
bGFzcyBmcm9tIFNlZ3JlZ2F0ZWRGcmVlTGlzdC4gVGhpcyB3aWxsIG1ha2UgaXQKKyAgICAgICAg
ZWFzaWVyIHRvIGFkZCBiZWhhdmlvcnMgb24gZnJlZSBsaXN0IGluc2VydGlvbiBhbmQgcmVtb3Zh
bCAtLSBhbmQgaXQncworICAgICAgICBwcm9iYWJseSBob3cgSSBzaG91bGQgaGF2ZSBkZXNpZ25l
ZCB0aGluZ3MgYXQgdGhlIHN0YXJ0LgorCisgICAgICAgIE1vdmVkIEJvdW5kYXJ5VGFnOjppbml0
IGludG8gTGFyZ2VPYmplY3QsIHNpbmNlIGFsbCB0aGUgcmVsYXRlZCBsb2dpYworICAgICAgICBs
aXZlcyBpbiBMYXJnZU9iamVjdCBub3cgdG9vLCBhbmQgdGhpcyBhbGxvd3MgdXMgdG8gcmVtb3Zl
IEJvdW5kYXJ5VGFnSW5saW5lcy5oLgorCisgICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvQm91bmRhcnlUYWdJbmxpbmVzLmg6IFJl
bW92ZWQuCisgICAgICAgICogYm1hbGxvYy9GcmVlTGlzdC5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvU2VncmVnYXRlZEZyZWVMaXN0LmNwcC4KKyAgICAgICAgKGJtYWxs
b2M6OkZyZWVMaXN0Ojp0YWtlR3JlZWR5KToKKyAgICAgICAgKGJtYWxsb2M6OkZyZWVMaXN0Ojp0
YWtlKToKKyAgICAgICAgKGJtYWxsb2M6OlNlZ3JlZ2F0ZWRGcmVlTGlzdDo6U2VncmVnYXRlZEZy
ZWVMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OlNlZ3JlZ2F0ZWRGcmVlTGlzdDo6
aW5zZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OlNlZ3JlZ2F0ZWRGcmVlTGlzdDo6
dGFrZUdyZWVkeSk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpTZWdyZWdhdGVkRnJlZUxp
c3Q6OnRha2UpOiBEZWxldGVkLgorICAgICAgICAqIGJtYWxsb2MvRnJlZUxpc3QuaDogQ29waWVk
IGZyb20gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TZWdyZWdhdGVkRnJlZUxpc3QuaC4KKyAgICAg
ICAgKGJtYWxsb2M6OkZyZWVMaXN0OjpwdXNoKToKKyAgICAgICAgKiBibWFsbG9jL0xhcmdlT2Jq
ZWN0Lmg6CisgICAgICAgIChibWFsbG9jOjpMYXJnZU9iamVjdDo6aW5pdCk6CisgICAgICAgICog
Ym1hbGxvYy9TZWdyZWdhdGVkRnJlZUxpc3QuY3BwOgorICAgICAgICAoYm1hbGxvYzo6U2VncmVn
YXRlZEZyZWVMaXN0OjpTZWdyZWdhdGVkRnJlZUxpc3QpOgorICAgICAgICAoYm1hbGxvYzo6U2Vn
cmVnYXRlZEZyZWVMaXN0OjppbnNlcnQpOgorICAgICAgICAoYm1hbGxvYzo6U2VncmVnYXRlZEZy
ZWVMaXN0Ojp0YWtlR3JlZWR5KToKKyAgICAgICAgKGJtYWxsb2M6OlNlZ3JlZ2F0ZWRGcmVlTGlz
dDo6dGFrZSk6CisgICAgICAgICogYm1hbGxvYy9TZWdyZWdhdGVkRnJlZUxpc3QuaDoKKyAgICAg
ICAgKiBibWFsbG9jL1NpemVzLmg6CisgICAgICAgICogYm1hbGxvYy9WTUhlYXAuY3BwOgorICAg
ICAgICAoYm1hbGxvYzo6Vk1IZWFwOjpncm93KToKKwogMjAxNS0wMi0yNiAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIGJtYWxsb2M6IGZyZWUgdXAgYSBiaXQg
aW4gQm91bmRhcnlUYWcKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4MDY4NikKKysrIFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOSwx
MiArOSwxMyBAQAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAkJMTQwMDI3NDkx
OEY4OUMxMzAwMTE1Qzk3IC8qIEhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0REEzMjBDMTg4NzVCMDkwMDcyNjlFMCAvKiBIZWFwLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDI3NEExOEY4
OUMyMzAwMTE1Qzk3IC8qIFZNSGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ0RjdCRkMxOEJGQzUxNzAwMzUzN0YzIC8qIFZNSGVhcC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0MDAyNzRCMThG
ODlDM0QwMDExNUM5NyAvKiBCb3VuZGFyeVRhZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTA1RTdCMThEQkQ3QUYwMDNBMTA2RSAvKiBC
b3VuZGFyeVRhZ0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxNDAwMjc0QzE4Rjg5QzNEMDAxMTVDOTcgLyogU2VncmVnYXRlZEZyZWVM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDZC
RUUxRTE4Qzg0MUM1MDAwMkQ1QTIgLyogU2VncmVnYXRlZEZyZWVMaXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwRkEwMDMxOUNFNDI5QzAw
RkZEM0M4IC8qIEJ1bXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQwRkEwMDIxOUNFNDI5QzAwRkZEM0M4IC8qIEJ1bXBSYW5nZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MEZBMDA1MTlD
RTRCNjgwMEZGRDNDOCAvKiBMaW5lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEZBMDA0MTlDRTRCNjgwMEZGRDNDOCAvKiBMaW5lTWV0
YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxNDNDQjgxQzE5MDIyQkM5MDBCMTZBNDUgLyogU3RhdGljTXV0ZXguY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzQ0I4MUExOTAyMkJDOTAwQjE2
QTQ1IC8qIFN0YXRpY011dGV4LmNwcCAqLzsgfTsKIAkJMTQzQ0I4MUQxOTAyMkJDOTAwQjE2QTQ1
IC8qIFN0YXRpY011dGV4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDNDQjgxQjE5MDIyQkM5MDBCMTZBNDUgLyogU3RhdGljTXV0ZXguaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDNFRjlBRjFBOUZB
QkY2MDA0RjVDNzcgLyogRnJlZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQzRUY5QUQxQTlGQUJGNjAwNEY1Qzc3IC8qIEZyZWVMaXN0LmNw
cCAqLzsgfTsKKwkJMTQzRUY5QjAxQTlGQUJGNjAwNEY1Qzc3IC8qIEZyZWVMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNFRjlBRTFBOUZBQkY2
MDA0RjVDNzcgLyogRnJlZUxpc3QuaCAqLzsgfTsKIAkJMTQ0MEFGQzkxQTk1MTQyNDAwODM3RkFB
IC8qIFN1cGVyQ2h1bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0NDBBRkM4MUE5NTE0MjQwMDgzN0ZBQSAvKiBTdXBlckNodW5rLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0MEFGQ0IxQTk1MjYx
MTAwODM3RkFBIC8qIFpvbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0NDBBRkNBMUE5NTI2MTEwMDgzN0ZBQSAvKiBab25lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ0MEFGQ0QxQTk1MjdBRjAw
ODM3RkFBIC8qIFpvbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ0MEFGQ0MxQTk1MjdBRjAwODM3RkFBIC8qIFpvbmUuY3BwICovOyB9OwpAQCAt
ODAsNyArODEsNiBAQAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAJCTE0
MEZBMDAyMTlDRTQyOUMwMEZGRDNDOCAvKiBCdW1wUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQnVtcFJhbmdlLmg7IHBhdGggPSBibWFsbG9jL0J1bXBSYW5nZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDBGQTAwNDE5Q0U0QjY4MDBGRkQzQzggLyog
TGluZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpbmVNZXRh
ZGF0YS5oOyBwYXRoID0gYm1hbGxvYy9MaW5lTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMTQxMDVFN0IxOERCRDdBRjAwM0ExMDZFIC8qIEJvdW5kYXJ5VGFnSW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCb3VuZGFyeVRhZ0lubGluZXMu
aDsgcGF0aCA9IGJtYWxsb2MvQm91bmRhcnlUYWdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0MTA1RTgzMThFMTQzNzQwMDNBMTA2RSAvKiBPYmplY3RUeXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9iamVjdFR5cGUuY3BwOyBwYXRo
ID0gYm1hbGxvYy9PYmplY3RUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQxM0U0NjAxODlEQ0UxRTAwNTQ2RDY4IC8qIElubGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBJbmxpbmUuaDsgcGF0aCA9IGJtYWxsb2MvSW5saW5lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MTNFNDYyMTg5REUxQ0QwMDU0NkQ2OCAvKiBCdW1wQWxs
b2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUg
PSBCdW1wQWxsb2NhdG9yLmg7IHBhdGggPSBibWFsbG9jL0J1bXBBbGxvY2F0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0LDYgKzk0LDggQEAKIAkJMTQzQ0I4MUIxOTAyMkJD
OTAwQjE2QTQ1IC8qIFN0YXRpY011dGV4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFN0YXRpY011dGV4Lmg7IHBhdGggPSBibWFsbG9jL1N0YXRpY011dGV4Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0M0UyOUU5MThDQUU4QkUwMEZFOEEwRiAvKiBNZWRpdW1Q
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lZGl1bVBhZ2UuaDsgcGF0
aCA9IGJtYWxsb2MvTWVkaXVtUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NDNFMjlFRDE4Q0FFOTA1MDBGRThBMEYgLyogU21hbGxQYWdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFNtYWxsUGFnZS5oOyBwYXRoID0gYm1hbGxvYy9TbWFsbFBhZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQzRUY5QUQxQTlGQUJGNjAwNEY1Qzc3IC8q
IEZyZWVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZyZWVM
aXN0LmNwcDsgcGF0aCA9IGJtYWxsb2MvRnJlZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxNDNFRjlBRTFBOUZBQkY2MDA0RjVDNzcgLyogRnJlZUxpc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRnJlZUxpc3QuaDsgcGF0aCA9IGJtYWxsb2MvRnJl
ZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0MEFGQzgxQTk1MTQyNDAw
ODM3RkFBIC8qIFN1cGVyQ2h1bmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
U3VwZXJDaHVuay5oOyBwYXRoID0gYm1hbGxvYy9TdXBlckNodW5rLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0NDBBRkNBMUE5NTI2MTEwMDgzN0ZBQSAvKiBab25lLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFpvbmUuaDsgcGF0aCA9IGJtYWxsb2MvWm9uZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDQwQUZDQzFBOTUyN0FGMDA4MzdGQUEg
LyogWm9uZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBab25lLmNw
cDsgcGF0aCA9IGJtYWxsb2MvWm9uZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMTcsOCArMjE5LDkgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTE0MTdGNjQ1MThCNTRBNzAw
MDc2RkEzRiAvKiBCZWdpblRhZy5oICovLAogCQkJCTE0ODU2NTVFMThBNDNBRjkwMEVENjk0MiAv
KiBCb3VuZGFyeVRhZy5oICovLAotCQkJCTE0MTA1RTdCMThEQkQ3QUYwMDNBMTA2RSAvKiBCb3Vu
ZGFyeVRhZ0lubGluZXMuaCAqLywKIAkJCQkxNDE3RjY0NjE4QjU0QTcwMDA3NkZBM0YgLyogRW5k
VGFnLmggKi8sCisJCQkJMTQzRUY5QUQxQTlGQUJGNjAwNEY1Qzc3IC8qIEZyZWVMaXN0LmNwcCAq
LywKKwkJCQkxNDNFRjlBRTFBOUZBQkY2MDA0RjVDNzcgLyogRnJlZUxpc3QuaCAqLywKIAkJCQkx
NDdBQUE4ODE4Q0QxN0NFMDAyMjAxRTQgLyogTGFyZ2VDaHVuay5oICovLAogCQkJCTE0QzYyMTZF
MUE5QTlBNjIwMEU3MjI5MyAvKiBMYXJnZU9iamVjdC5oICovLAogCQkJCTE0NkJFRTIxMThDODQ1
QUUwMDAyRDVBMiAvKiBTZWdyZWdhdGVkRnJlZUxpc3QuY3BwICovLApAQCAtMzM0LDYgKzMzNyw3
IEBACiAJCQkJMTRERDc4QzcxOEY0OEQ3NTAwOTUwNzAyIC8qIEJBc3NlcnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0REQ3OEQwMThGNDhENzUwMDk1MDcwMiAvKiBWTUFsbG9jYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDQwQUZDOTFBOTUxNDI0MDA4MzdGQUEgLyogU3VwZXJDaHVuay5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMTQzRUY5QjAxQTlGQUJGNjAwNEY1Qzc3IC8qIEZyZWVMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDRTE4RjQ4RDc1MDA5NTA3MDIgLyogU3lzY2FsbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4QzYxOEY0OEQ3NTAwOTUwNzAyIC8qIEFzeW5jVGFz
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4QkExOEY0OEQ2QjAwOTUwNzAyIC8qIFBhZ2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMzQ2LDcgKzM1MCw2IEBACiAJCQkJMTQwRkEwMDMxOUNFNDI5
QzAwRkZEM0M4IC8qIEJ1bXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4QzUxOEY0
OEQ3NTAwOTUwNzAyIC8qIEFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4QkQx
OEY0OEQ2QjAwOTUwNzAyIC8qIFNtYWxsUGFnZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTQwMDI3
NEIxOEY4OUMzRDAwMTE1Qzk3IC8qIEJvdW5kYXJ5VGFnSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTRERDc4OEUxOEY0OENDRDAwOTUwNzAyIC8qIEJvdW5kYXJ5VGFnLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNERENzhDODE4RjQ4RDc1MDA5NTA3MDIgLyogRml4ZWRWZWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0REQ3OEI3MThGNDhENkIwMDk1MDcwMiAvKiBNZWRpdW1MaW5lLmgg
aW4gSGVhZGVycyAqLywKQEAgLTQzOSw2ICs0NDIsNyBAQAogCQkJCTE0RjI3MUM2MThFQTM5ODMw
MDhDMTUyRiAvKiBTZWdyZWdhdGVkRnJlZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRG
MjcxQzMxOEVBMzk3ODAwOEMxNTJGIC8qIEFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDg5NUQ5MTFBM0EzMTlDMDAwNjIzNUQgLyogRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMTQzRUY5QUYxQTlGQUJGNjAwNEY1Qzc3IC8qIEZyZWVMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0RjI3MUM3MThFQTM5OTAwMDhDMTUyRiAvKiBIZWFwLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0RjI3MUM5MThFQTM5OTAwMDhDMTUyRiAvKiBWTUhlYXAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTRGMjcxQzgxOEVBMzk5MDAwOEMxNTJGIC8qIE9iamVjdFR5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JvdW5kYXJ5VGFn
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQm91bmRhcnlU
YWdJbmxpbmVzLmgJKHJldmlzaW9uIDE4MDY4NikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
Qm91bmRhcnlUYWdJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVm
IEJvdW5kYXJ5VGFnSW5saW5lc19oCi0jZGVmaW5lIEJvdW5kYXJ5VGFnSW5saW5lc19oCi0KLSNp
bmNsdWRlICJSYW5nZS5oIgotI2luY2x1ZGUgIkJlZ2luVGFnLmgiCi0jaW5jbHVkZSAiRW5kVGFn
LmgiCi0jaW5jbHVkZSAiSW5saW5lLmgiCi0jaW5jbHVkZSAiTGFyZ2VDaHVuay5oIgotCi1uYW1l
c3BhY2UgYm1hbGxvYyB7Ci0KLWlubGluZSBSYW5nZSBCb3VuZGFyeVRhZzo6aW5pdChMYXJnZUNo
dW5rKiBjaHVuaykKLXsKLSAgICBSYW5nZSByYW5nZShjaHVuay0+YmVnaW4oKSwgY2h1bmstPmVu
ZCgpIC0gY2h1bmstPmJlZ2luKCkpOwotCi0gICAgQmVnaW5UYWcqIGJlZ2luVGFnID0gTGFyZ2VD
aHVuazo6YmVnaW5UYWcocmFuZ2UuYmVnaW4oKSk7Ci0gICAgYmVnaW5UYWctPnNldFJhbmdlKHJh
bmdlKTsKLSAgICBiZWdpblRhZy0+c2V0RnJlZSh0cnVlKTsKLSAgICBiZWdpblRhZy0+c2V0SGFz
UGh5c2ljYWxQYWdlcyhmYWxzZSk7Ci0KLSAgICBFbmRUYWcqIGVuZFRhZyA9IExhcmdlQ2h1bms6
OmVuZFRhZyhyYW5nZS5iZWdpbigpLCByYW5nZS5zaXplKCkpOwotICAgIGVuZFRhZy0+aW5pdChi
ZWdpblRhZyk7Ci0KLSAgICAvLyBNYXJrIHRoZSBsZWZ0IGFuZCByaWdodCBlZGdlcyBvZiBvdXIg
Y2h1bmsgYXMgYWxsb2NhdGVkLiBUaGlzIG5hdHVyYWxseQotICAgIC8vIHByZXZlbnRzIG1lcmdp
bmcgbG9naWMgZnJvbSBvdmVyZmxvd2luZyBiZXlvbmQgb3VyIGNodW5rLCB3aXRob3V0IHJlcXVp
cmluZwotICAgIC8vIHNwZWNpYWwtY2FzZSBjaGVja3MuCi0gICAgCi0gICAgRW5kVGFnKiBsZWZ0
U2VudGluZWwgPSBiZWdpblRhZy0+cHJldigpOwotICAgIEJBU1NFUlQobGVmdFNlbnRpbmVsID49
IHN0YXRpY19jYXN0PHZvaWQqPihjaHVuaykpOwotICAgIGxlZnRTZW50aW5lbC0+aW5pdFNlbnRp
bmVsKCk7Ci0KLSAgICBCZWdpblRhZyogcmlnaHRTZW50aW5lbCA9IGVuZFRhZy0+bmV4dCgpOwot
ICAgIEJBU1NFUlQocmlnaHRTZW50aW5lbCA8IHN0YXRpY19jYXN0PHZvaWQqPihyYW5nZS5iZWdp
bigpKSk7Ci0gICAgcmlnaHRTZW50aW5lbC0+aW5pdFNlbnRpbmVsKCk7Ci0gICAgCi0gICAgcmV0
dXJuIHJhbmdlOwotfQotCi19IC8vIG5hbWVzcGFjZSBibWFsbG9jCi0KLSNlbmRpZiAvLyBCb3Vu
ZGFyeVRhZ0lubGluZXNfaApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9GcmVlTGlzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9GcmVlTGlzdC5jcHAJKHJl
dmlzaW9uIDE4MDY4NikJKGZyb20gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TZWdyZWdhdGVkRnJl
ZUxpc3QuY3BwOjE4MDY4NikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRnJlZUxpc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJCZWdpblRhZy5oIgorI2lu
Y2x1ZGUgIkxhcmdlQ2h1bmsuaCIKKyNpbmNsdWRlICJTZWdyZWdhdGVkRnJlZUxpc3QuaCIKKyNp
bmNsdWRlICJWZWN0b3IuaCIKKworbmFtZXNwYWNlIGJtYWxsb2MgeworCitTZWdyZWdhdGVkRnJl
ZUxpc3Q6OlNlZ3JlZ2F0ZWRGcmVlTGlzdCgpCit7CisgICAgQkFTU0VSVChzdGF0aWNfY2FzdDxz
aXplX3Q+KCZzZWxlY3QobGFyZ2VNYXgpIC0gbV9saXN0cy5iZWdpbigpKSA9PSBtX2xpc3RzLnNp
emUoKSAtIDEpOworfQorCit2b2lkIFNlZ3JlZ2F0ZWRGcmVlTGlzdDo6aW5zZXJ0KGNvbnN0IExh
cmdlT2JqZWN0JiBsYXJnZU9iamVjdCkKK3sKKyAgICBCQVNTRVJUKGxhcmdlT2JqZWN0LmlzRnJl
ZSgpKTsKKyAgICBhdXRvJiBsaXN0ID0gc2VsZWN0KGxhcmdlT2JqZWN0LnNpemUoKSk7CisgICAg
bGlzdC5wdXNoKGxhcmdlT2JqZWN0LnJhbmdlKCkpOworfQorCitMYXJnZU9iamVjdCBTZWdyZWdh
dGVkRnJlZUxpc3Q6OnRha2VHcmVlZHkoc2l6ZV90IHNpemUpCit7CisgICAgZm9yIChzaXplX3Qg
aSA9IG1fbGlzdHMuc2l6ZSgpOyBpLS0gPiAwOyApIHsKKyAgICAgICAgTGFyZ2VPYmplY3QgbGFy
Z2VPYmplY3QgPSB0YWtlR3JlZWR5KG1fbGlzdHNbaV0sIHNpemUpOworICAgICAgICBpZiAoIWxh
cmdlT2JqZWN0KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmV0dXJuIGxhcmdl
T2JqZWN0OworICAgIH0KKyAgICByZXR1cm4gTGFyZ2VPYmplY3QoKTsKK30KKworTGFyZ2VPYmpl
Y3QgU2VncmVnYXRlZEZyZWVMaXN0Ojp0YWtlR3JlZWR5KExpc3QmIGxpc3QsIHNpemVfdCBzaXpl
KQoreworICAgIGZvciAoc2l6ZV90IGkgPSBsaXN0LnNpemUoKTsgaS0tID4gMDsgKSB7CisgICAg
ICAgIC8vIFdlIGRvbid0IGVhZ2VybHkgcmVtb3ZlIGl0ZW1zIHdoZW4gd2UgbWVyZ2UgYW5kL29y
IHNwbGl0IHJhbmdlcywKKyAgICAgICAgLy8gc28gd2UgbmVlZCB0byB2YWxpZGF0ZSBlYWNoIGZy
ZWUgbGlzdCBlbnRyeSBiZWZvcmUgdXNpbmcgaXQuCisgICAgICAgIExhcmdlT2JqZWN0IGxhcmdl
T2JqZWN0KExhcmdlT2JqZWN0OjpEb05vdFZhbGlkYXRlLCBsaXN0W2ldLmJlZ2luKCkpOworICAg
ICAgICBpZiAoIWxhcmdlT2JqZWN0LmlzVmFsaWRBbmRGcmVlKGxpc3RbaV0uc2l6ZSgpKSkgewor
ICAgICAgICAgICAgbGlzdC5wb3AoaSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChsYXJnZU9iamVjdC5zaXplKCkgPCBzaXplKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgbGlzdC5wb3AoaSk7CisgICAgICAgIHJldHVybiBsYXJnZU9i
amVjdDsKKyAgICB9CisKKyAgICByZXR1cm4gTGFyZ2VPYmplY3QoKTsKK30KKworTGFyZ2VPYmpl
Y3QgU2VncmVnYXRlZEZyZWVMaXN0Ojp0YWtlKHNpemVfdCBzaXplKQoreworICAgIGZvciAoYXV0
byogbGlzdCA9ICZzZWxlY3Qoc2l6ZSk7IGxpc3QgIT0gbV9saXN0cy5lbmQoKTsgKytsaXN0KSB7
CisgICAgICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0gdGFrZSgqbGlzdCwgc2l6ZSk7Cisg
ICAgICAgIGlmICghbGFyZ2VPYmplY3QpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICByZXR1cm4gbGFyZ2VPYmplY3Q7CisgICAgfQorICAgIHJldHVybiBMYXJnZU9iamVjdCgpOwor
fQorCitMYXJnZU9iamVjdCBTZWdyZWdhdGVkRnJlZUxpc3Q6OnRha2Uoc2l6ZV90IGFsaWdubWVu
dCwgc2l6ZV90IHNpemUsIHNpemVfdCB1bmFsaWduZWRTaXplKQoreworICAgIGZvciAoYXV0byog
bGlzdCA9ICZzZWxlY3Qoc2l6ZSk7IGxpc3QgIT0gbV9saXN0cy5lbmQoKTsgKytsaXN0KSB7Cisg
ICAgICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0gdGFrZSgqbGlzdCwgYWxpZ25tZW50LCBz
aXplLCB1bmFsaWduZWRTaXplKTsKKyAgICAgICAgaWYgKCFsYXJnZU9iamVjdCkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIHJldHVybiBsYXJnZU9iamVjdDsKKyAgICB9CisgICAg
cmV0dXJuIExhcmdlT2JqZWN0KCk7Cit9CisKK0lOTElORSBhdXRvIFNlZ3JlZ2F0ZWRGcmVlTGlz
dDo6c2VsZWN0KHNpemVfdCBzaXplKSAtPiBMaXN0JgoreworICAgIHNpemVfdCBhbGlnbkNvdW50
ID0gKHNpemUgLSBsYXJnZU1pbikgLyBsYXJnZUFsaWdubWVudDsKKyAgICBzaXplX3QgcmVzdWx0
ID0gMDsKKyAgICB3aGlsZSAoYWxpZ25Db3VudCkgeworICAgICAgICArK3Jlc3VsdDsKKyAgICAg
ICAgYWxpZ25Db3VudCA+Pj0gMTsKKyAgICB9CisgICAgcmV0dXJuIG1fbGlzdHNbcmVzdWx0XTsK
K30KKworSU5MSU5FIExhcmdlT2JqZWN0IFNlZ3JlZ2F0ZWRGcmVlTGlzdDo6dGFrZShMaXN0JiBs
aXN0LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBMYXJnZU9iamVjdCBmaXJzdDsKKyAgICBzaXplX3Qg
ZW5kID0gbGlzdC5zaXplKCkgPiBzZWdyZWdhdGVkRnJlZUxpc3RTZWFyY2hEZXB0aCA/IGxpc3Qu
c2l6ZSgpIC0gc2VncmVnYXRlZEZyZWVMaXN0U2VhcmNoRGVwdGggOiAwOworICAgIGZvciAoc2l6
ZV90IGkgPSBsaXN0LnNpemUoKTsgaS0tID4gZW5kOyApIHsKKyAgICAgICAgLy8gV2UgZG9uJ3Qg
ZWFnZXJseSByZW1vdmUgaXRlbXMgd2hlbiB3ZSBtZXJnZSBhbmQvb3Igc3BsaXQgcmFuZ2VzLCBz
bworICAgICAgICAvLyB3ZSBuZWVkIHRvIHZhbGlkYXRlIGVhY2ggZnJlZSBsaXN0IGVudHJ5IGJl
Zm9yZSB1c2luZyBpdC4KKyAgICAgICAgTGFyZ2VPYmplY3QgbGFyZ2VPYmplY3QoTGFyZ2VPYmpl
Y3Q6OkRvTm90VmFsaWRhdGUsIGxpc3RbaV0uYmVnaW4oKSk7CisgICAgICAgIGlmICghbGFyZ2VP
YmplY3QuaXNWYWxpZEFuZEZyZWUobGlzdFtpXS5zaXplKCkpKSB7CisgICAgICAgICAgICBsaXN0
LnBvcChpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGxhcmdlT2JqZWN0LnNpemUoKSA8IHNpemUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBpZiAoISFmaXJzdCAmJiBmaXJzdC5iZWdpbigpIDwgbGFyZ2VPYmplY3QuYmVnaW4oKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZpcnN0ID0gbGFyZ2VPYmplY3Q7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBmaXJzdDsKK30KKworSU5MSU5FIExhcmdlT2JqZWN0IFNl
Z3JlZ2F0ZWRGcmVlTGlzdDo6dGFrZShMaXN0JiBsaXN0LCBzaXplX3QgYWxpZ25tZW50LCBzaXpl
X3Qgc2l6ZSwgc2l6ZV90IHVuYWxpZ25lZFNpemUpCit7CisgICAgQkFTU0VSVChpc1Bvd2VyT2ZU
d28oYWxpZ25tZW50KSk7CisgICAgc2l6ZV90IGFsaWdubWVudE1hc2sgPSBhbGlnbm1lbnQgLSAx
OworCisgICAgTGFyZ2VPYmplY3QgZmlyc3Q7CisgICAgc2l6ZV90IGVuZCA9IGxpc3Quc2l6ZSgp
ID4gc2VncmVnYXRlZEZyZWVMaXN0U2VhcmNoRGVwdGggPyBsaXN0LnNpemUoKSAtIHNlZ3JlZ2F0
ZWRGcmVlTGlzdFNlYXJjaERlcHRoIDogMDsKKyAgICBmb3IgKHNpemVfdCBpID0gbGlzdC5zaXpl
KCk7IGktLSA+IGVuZDsgKSB7CisgICAgICAgIC8vIFdlIGRvbid0IGVhZ2VybHkgcmVtb3ZlIGl0
ZW1zIHdoZW4gd2UgbWVyZ2UgYW5kL29yIHNwbGl0IHJhbmdlcywgc28KKyAgICAgICAgLy8gd2Ug
bmVlZCB0byB2YWxpZGF0ZSBlYWNoIGZyZWUgbGlzdCBlbnRyeSBiZWZvcmUgdXNpbmcgaXQuCisg
ICAgICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0KExhcmdlT2JqZWN0OjpEb05vdFZhbGlkYXRl
LCBsaXN0W2ldLmJlZ2luKCkpOworICAgICAgICBpZiAoIWxhcmdlT2JqZWN0LmlzVmFsaWRBbmRG
cmVlKGxpc3RbaV0uc2l6ZSgpKSkgeworICAgICAgICAgICAgbGlzdC5wb3AoaSk7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsYXJnZU9iamVjdC5zaXpl
KCkgPCBzaXplKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHRlc3QobGFy
Z2VPYmplY3QuYmVnaW4oKSwgYWxpZ25tZW50TWFzaykgJiYgbGFyZ2VPYmplY3Quc2l6ZSgpIDwg
dW5hbGlnbmVkU2l6ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICghIWZp
cnN0ICYmIGZpcnN0LmJlZ2luKCkgPCBsYXJnZU9iamVjdC5iZWdpbigpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgZmlyc3QgPSBsYXJnZU9iamVjdDsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIGZpcnN0OworfQorCit9IC8vIG5hbWVzcGFjZSBibWFsbG9jCkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0ZyZWVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0ZyZWVMaXN0LmNwcAkod29ya2luZyBjb3B5KQorKysgU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9GcmVlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEwMSArMjUsNDIg
QEAKIAogI2luY2x1ZGUgIkJlZ2luVGFnLmgiCiAjaW5jbHVkZSAiTGFyZ2VDaHVuay5oIgotI2lu
Y2x1ZGUgIlNlZ3JlZ2F0ZWRGcmVlTGlzdC5oIgorI2luY2x1ZGUgIkZyZWVMaXN0LmgiCiAjaW5j
bHVkZSAiVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAotU2VncmVnYXRlZEZyZWVM
aXN0OjpTZWdyZWdhdGVkRnJlZUxpc3QoKQorTGFyZ2VPYmplY3QgRnJlZUxpc3Q6OnRha2VHcmVl
ZHkoc2l6ZV90IHNpemUpCiB7Ci0gICAgQkFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KCZzZWxl
Y3QobGFyZ2VNYXgpIC0gbV9saXN0cy5iZWdpbigpKSA9PSBtX2xpc3RzLnNpemUoKSAtIDEpOwot
fQotCi12b2lkIFNlZ3JlZ2F0ZWRGcmVlTGlzdDo6aW5zZXJ0KGNvbnN0IExhcmdlT2JqZWN0JiBs
YXJnZU9iamVjdCkKLXsKLSAgICBCQVNTRVJUKGxhcmdlT2JqZWN0LmlzRnJlZSgpKTsKLSAgICBh
dXRvJiBsaXN0ID0gc2VsZWN0KGxhcmdlT2JqZWN0LnNpemUoKSk7Ci0gICAgbGlzdC5wdXNoKGxh
cmdlT2JqZWN0LnJhbmdlKCkpOwotfQotCi1MYXJnZU9iamVjdCBTZWdyZWdhdGVkRnJlZUxpc3Q6
OnRha2VHcmVlZHkoc2l6ZV90IHNpemUpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IG1fbGlzdHMu
c2l6ZSgpOyBpLS0gPiAwOyApIHsKLSAgICAgICAgTGFyZ2VPYmplY3QgbGFyZ2VPYmplY3QgPSB0
YWtlR3JlZWR5KG1fbGlzdHNbaV0sIHNpemUpOwotICAgICAgICBpZiAoIWxhcmdlT2JqZWN0KQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgcmV0dXJuIGxhcmdlT2JqZWN0OwotICAg
IH0KLSAgICByZXR1cm4gTGFyZ2VPYmplY3QoKTsKLX0KLQotTGFyZ2VPYmplY3QgU2VncmVnYXRl
ZEZyZWVMaXN0Ojp0YWtlR3JlZWR5KExpc3QmIGxpc3QsIHNpemVfdCBzaXplKQotewotICAgIGZv
ciAoc2l6ZV90IGkgPSBsaXN0LnNpemUoKTsgaS0tID4gMDsgKSB7CisgICAgZm9yIChzaXplX3Qg
aSA9IG1fdmVjdG9yLnNpemUoKTsgaS0tID4gMDsgKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IGVh
Z2VybHkgcmVtb3ZlIGl0ZW1zIHdoZW4gd2UgbWVyZ2UgYW5kL29yIHNwbGl0IHJhbmdlcywKICAg
ICAgICAgLy8gc28gd2UgbmVlZCB0byB2YWxpZGF0ZSBlYWNoIGZyZWUgbGlzdCBlbnRyeSBiZWZv
cmUgdXNpbmcgaXQuCi0gICAgICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0KExhcmdlT2JqZWN0
OjpEb05vdFZhbGlkYXRlLCBsaXN0W2ldLmJlZ2luKCkpOwotICAgICAgICBpZiAoIWxhcmdlT2Jq
ZWN0LmlzVmFsaWRBbmRGcmVlKGxpc3RbaV0uc2l6ZSgpKSkgewotICAgICAgICAgICAgbGlzdC5w
b3AoaSk7CisgICAgICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0KExhcmdlT2JqZWN0OjpEb05v
dFZhbGlkYXRlLCBtX3ZlY3RvcltpXS5iZWdpbigpKTsKKyAgICAgICAgaWYgKCFsYXJnZU9iamVj
dC5pc1ZhbGlkQW5kRnJlZShtX3ZlY3RvcltpXS5zaXplKCkpKSB7CisgICAgICAgICAgICBtX3Zl
Y3Rvci5wb3AoaSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChsYXJnZU9iamVjdC5zaXplKCkgPCBzaXplKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgbGlzdC5wb3AoaSk7Ci0gICAgICAgIHJldHVybiBsYXJnZU9iamVjdDsKLSAgICB9
Ci0KLSAgICByZXR1cm4gTGFyZ2VPYmplY3QoKTsKLX0KLQotTGFyZ2VPYmplY3QgU2VncmVnYXRl
ZEZyZWVMaXN0Ojp0YWtlKHNpemVfdCBzaXplKQotewotICAgIGZvciAoYXV0byogbGlzdCA9ICZz
ZWxlY3Qoc2l6ZSk7IGxpc3QgIT0gbV9saXN0cy5lbmQoKTsgKytsaXN0KSB7Ci0gICAgICAgIExh
cmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0gdGFrZSgqbGlzdCwgc2l6ZSk7Ci0gICAgICAgIGlmICgh
bGFyZ2VPYmplY3QpCi0gICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICBtX3ZlY3Rvci5w
b3AoaSk7CiAgICAgICAgIHJldHVybiBsYXJnZU9iamVjdDsKICAgICB9Ci0gICAgcmV0dXJuIExh
cmdlT2JqZWN0KCk7Ci19CiAKLUxhcmdlT2JqZWN0IFNlZ3JlZ2F0ZWRGcmVlTGlzdDo6dGFrZShz
aXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IHVuYWxpZ25lZFNpemUpCi17Ci0g
ICAgZm9yIChhdXRvKiBsaXN0ID0gJnNlbGVjdChzaXplKTsgbGlzdCAhPSBtX2xpc3RzLmVuZCgp
OyArK2xpc3QpIHsKLSAgICAgICAgTGFyZ2VPYmplY3QgbGFyZ2VPYmplY3QgPSB0YWtlKCpsaXN0
LCBhbGlnbm1lbnQsIHNpemUsIHVuYWxpZ25lZFNpemUpOwotICAgICAgICBpZiAoIWxhcmdlT2Jq
ZWN0KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgcmV0dXJuIGxhcmdlT2JqZWN0
OwotICAgIH0KICAgICByZXR1cm4gTGFyZ2VPYmplY3QoKTsKIH0KIAotSU5MSU5FIGF1dG8gU2Vn
cmVnYXRlZEZyZWVMaXN0OjpzZWxlY3Qoc2l6ZV90IHNpemUpIC0+IExpc3QmCi17Ci0gICAgc2l6
ZV90IGFsaWduQ291bnQgPSAoc2l6ZSAtIGxhcmdlTWluKSAvIGxhcmdlQWxpZ25tZW50OwotICAg
IHNpemVfdCByZXN1bHQgPSAwOwotICAgIHdoaWxlIChhbGlnbkNvdW50KSB7Ci0gICAgICAgICsr
cmVzdWx0OwotICAgICAgICBhbGlnbkNvdW50ID4+PSAxOwotICAgIH0KLSAgICByZXR1cm4gbV9s
aXN0c1tyZXN1bHRdOwotfQotCi1JTkxJTkUgTGFyZ2VPYmplY3QgU2VncmVnYXRlZEZyZWVMaXN0
Ojp0YWtlKExpc3QmIGxpc3QsIHNpemVfdCBzaXplKQorTGFyZ2VPYmplY3QgRnJlZUxpc3Q6OnRh
a2Uoc2l6ZV90IHNpemUpCiB7CiAgICAgTGFyZ2VPYmplY3QgZmlyc3Q7Ci0gICAgc2l6ZV90IGVu
ZCA9IGxpc3Quc2l6ZSgpID4gc2VncmVnYXRlZEZyZWVMaXN0U2VhcmNoRGVwdGggPyBsaXN0LnNp
emUoKSAtIHNlZ3JlZ2F0ZWRGcmVlTGlzdFNlYXJjaERlcHRoIDogMDsKLSAgICBmb3IgKHNpemVf
dCBpID0gbGlzdC5zaXplKCk7IGktLSA+IGVuZDsgKSB7CisgICAgc2l6ZV90IGVuZCA9IG1fdmVj
dG9yLnNpemUoKSA+IGZyZWVMaXN0U2VhcmNoRGVwdGggPyBtX3ZlY3Rvci5zaXplKCkgLSBmcmVl
TGlzdFNlYXJjaERlcHRoIDogMDsKKyAgICBmb3IgKHNpemVfdCBpID0gbV92ZWN0b3Iuc2l6ZSgp
OyBpLS0gPiBlbmQ7ICkgewogICAgICAgICAvLyBXZSBkb24ndCBlYWdlcmx5IHJlbW92ZSBpdGVt
cyB3aGVuIHdlIG1lcmdlIGFuZC9vciBzcGxpdCByYW5nZXMsIHNvCiAgICAgICAgIC8vIHdlIG5l
ZWQgdG8gdmFsaWRhdGUgZWFjaCBmcmVlIGxpc3QgZW50cnkgYmVmb3JlIHVzaW5nIGl0LgotICAg
ICAgICBMYXJnZU9iamVjdCBsYXJnZU9iamVjdChMYXJnZU9iamVjdDo6RG9Ob3RWYWxpZGF0ZSwg
bGlzdFtpXS5iZWdpbigpKTsKLSAgICAgICAgaWYgKCFsYXJnZU9iamVjdC5pc1ZhbGlkQW5kRnJl
ZShsaXN0W2ldLnNpemUoKSkpIHsKLSAgICAgICAgICAgIGxpc3QucG9wKGkpOworICAgICAgICBM
YXJnZU9iamVjdCBsYXJnZU9iamVjdChMYXJnZU9iamVjdDo6RG9Ob3RWYWxpZGF0ZSwgbV92ZWN0
b3JbaV0uYmVnaW4oKSk7CisgICAgICAgIGlmICghbGFyZ2VPYmplY3QuaXNWYWxpZEFuZEZyZWUo
bV92ZWN0b3JbaV0uc2l6ZSgpKSkgeworICAgICAgICAgICAgbV92ZWN0b3IucG9wKGkpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtMTM1LDE5ICs3NiwxOSBAQCBJTkxJ
TkUgTGFyZ2VPYmplY3QgU2VncmVnYXRlZEZyZWVMaXN0Ojp0CiAgICAgcmV0dXJuIGZpcnN0Owog
fQogCi1JTkxJTkUgTGFyZ2VPYmplY3QgU2VncmVnYXRlZEZyZWVMaXN0Ojp0YWtlKExpc3QmIGxp
c3QsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplLCBzaXplX3QgdW5hbGlnbmVkU2l6ZSkK
K0xhcmdlT2JqZWN0IEZyZWVMaXN0Ojp0YWtlKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXpl
LCBzaXplX3QgdW5hbGlnbmVkU2l6ZSkKIHsKICAgICBCQVNTRVJUKGlzUG93ZXJPZlR3byhhbGln
bm1lbnQpKTsKICAgICBzaXplX3QgYWxpZ25tZW50TWFzayA9IGFsaWdubWVudCAtIDE7CiAKICAg
ICBMYXJnZU9iamVjdCBmaXJzdDsKLSAgICBzaXplX3QgZW5kID0gbGlzdC5zaXplKCkgPiBzZWdy
ZWdhdGVkRnJlZUxpc3RTZWFyY2hEZXB0aCA/IGxpc3Quc2l6ZSgpIC0gc2VncmVnYXRlZEZyZWVM
aXN0U2VhcmNoRGVwdGggOiAwOwotICAgIGZvciAoc2l6ZV90IGkgPSBsaXN0LnNpemUoKTsgaS0t
ID4gZW5kOyApIHsKKyAgICBzaXplX3QgZW5kID0gbV92ZWN0b3Iuc2l6ZSgpID4gZnJlZUxpc3RT
ZWFyY2hEZXB0aCA/IG1fdmVjdG9yLnNpemUoKSAtIGZyZWVMaXN0U2VhcmNoRGVwdGggOiAwOwor
ICAgIGZvciAoc2l6ZV90IGkgPSBtX3ZlY3Rvci5zaXplKCk7IGktLSA+IGVuZDsgKSB7CiAgICAg
ICAgIC8vIFdlIGRvbid0IGVhZ2VybHkgcmVtb3ZlIGl0ZW1zIHdoZW4gd2UgbWVyZ2UgYW5kL29y
IHNwbGl0IHJhbmdlcywgc28KICAgICAgICAgLy8gd2UgbmVlZCB0byB2YWxpZGF0ZSBlYWNoIGZy
ZWUgbGlzdCBlbnRyeSBiZWZvcmUgdXNpbmcgaXQuCi0gICAgICAgIExhcmdlT2JqZWN0IGxhcmdl
T2JqZWN0KExhcmdlT2JqZWN0OjpEb05vdFZhbGlkYXRlLCBsaXN0W2ldLmJlZ2luKCkpOwotICAg
ICAgICBpZiAoIWxhcmdlT2JqZWN0LmlzVmFsaWRBbmRGcmVlKGxpc3RbaV0uc2l6ZSgpKSkgewot
ICAgICAgICAgICAgbGlzdC5wb3AoaSk7CisgICAgICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0
KExhcmdlT2JqZWN0OjpEb05vdFZhbGlkYXRlLCBtX3ZlY3RvcltpXS5iZWdpbigpKTsKKyAgICAg
ICAgaWYgKCFsYXJnZU9iamVjdC5pc1ZhbGlkQW5kRnJlZShtX3ZlY3RvcltpXS5zaXplKCkpKSB7
CisgICAgICAgICAgICBtX3ZlY3Rvci5wb3AoaSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0ZyZWVMaXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9GcmVlTGlzdC5oCShyZXZpc2lvbiAxODA2
ODYpCShmcm9tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2VncmVnYXRlZEZyZWVMaXN0Lmg6MTgw
Njg2KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9GcmVlTGlzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBTZWdyZWdhdGVkRnJlZUxpc3RfaAorI2RlZmluZSBTZWdy
ZWdhdGVkRnJlZUxpc3RfaAorCisjaW5jbHVkZSAiTGFyZ2VPYmplY3QuaCIKKyNpbmNsdWRlICJW
ZWN0b3IuaCIKKyNpbmNsdWRlIDxhcnJheT4KKworbmFtZXNwYWNlIGJtYWxsb2MgeworCitjbGFz
cyBTZWdyZWdhdGVkRnJlZUxpc3QgeworcHVibGljOgorICAgIFNlZ3JlZ2F0ZWRGcmVlTGlzdCgp
OworCisgICAgdm9pZCBpbnNlcnQoY29uc3QgTGFyZ2VPYmplY3QmKTsKKworICAgIC8vIFJldHVy
bnMgYSByZWFzb25hYmxlIGZpdCBmb3IgdGhlIHByb3ZpZGVkIHNpemUsIG9yIExhcmdlT2JqZWN0
KCkgaWYgbm8gZml0CisgICAgLy8gaXMgZm91bmQuIE1heSByZXR1cm4gTGFyZ2VPYmplY3QoKSBz
cHVyaW91c2x5IGlmIHNlYXJjaGluZyB0YWtlcyB0b28gbG9uZy4KKyAgICAvLyBJbmNyZW1lbnRh
bGx5IHJlbW92ZXMgc3RhbGUgaXRlbXMgZnJvbSB0aGUgZnJlZSBsaXN0IHdoaWxlIHNlYXJjaGlu
Zy4KKyAgICAvLyBEb2VzIG5vdCBlYWdlcmx5IHJlbW92ZSB0aGUgcmV0dXJuZWQgb2JqZWN0IGZy
b20gdGhlIGZyZWUgbGlzdC4KKyAgICBMYXJnZU9iamVjdCB0YWtlKHNpemVfdCk7CisKKyAgICAv
LyBSZXR1cm5zIGEgcmVhc29uYWJsZSBmaXQgZm9yIHRoZSBwcm92aWRlZCBhbGlnbm1lbnQgYW5k
IHNpemUsIG9yCisgICAgLy8gYSByZWFzb25hYmxlIGZpdCBmb3IgdGhlIHByb3ZpZGVkIHVuYWxp
Z25lZCBzaXplLCBvciBMYXJnZU9iamVjdCgpIGlmIG5vCisgICAgLy8gZml0IGlzIGZvdW5kLiBN
YXkgcmV0dXJuIExhcmdlT2JqZWN0KCkgc3B1cmlvdXNseSBpZiBzZWFyY2hpbmcgdGFrZXMgdG9v
CisgICAgLy8gbG9uZy4gSW5jcmVtZW50YWxseSByZW1vdmVzIHN0YWxlIGl0ZW1zIGZyb20gdGhl
IGZyZWUgbGlzdCB3aGlsZQorICAgIC8vIHNlYXJjaGluZy4gRG9lcyBub3QgZWFnZXJseSByZW1v
dmUgdGhlIHJldHVybmVkIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgTGFyZ2VPYmpl
Y3QgdGFrZShzaXplX3QgYWxpZ25tZW50LCBzaXplX3QsIHNpemVfdCB1bmFsaWduZWRTaXplKTsK
KworICAgIC8vIFJldHVybnMgYW4gdW5yZWFzb25hYmxlIGZpdCBmb3IgdGhlIHByb3ZpZGVkIHNp
emUsIG9yIExhcmdlT2JqZWN0KCkgaWYgbm8KKyAgICAvLyBmaXQgaXMgZm91bmQuIE5ldmVyIHJl
dHVybnMgTGFyZ2VPYmplY3QoKSBzcHVyaW91c2x5LiBJbmNyZW1lbnRhbGx5CisgICAgLy8gcmVt
b3ZlcyBzdGFsZSBpdGVtcyBmcm9tIHRoZSBmcmVlIGxpc3Qgd2hpbGUgc2VhcmNoaW5nLiBFYWdl
cmx5IHJlbW92ZXMKKyAgICAvLyB0aGUgcmV0dXJuZWQgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlz
dC4KKyAgICBMYXJnZU9iamVjdCB0YWtlR3JlZWR5KHNpemVfdCk7CisgICAgCitwcml2YXRlOgor
ICAgIHR5cGVkZWYgVmVjdG9yPFJhbmdlPiBMaXN0OworCisgICAgTGlzdCYgc2VsZWN0KHNpemVf
dCk7CisgICAgTGFyZ2VPYmplY3QgdGFrZShMaXN0Jiwgc2l6ZV90KTsKKyAgICBMYXJnZU9iamVj
dCB0YWtlKExpc3QmLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3QsIHNpemVfdCB1bmFsaWduZWRT
aXplKTsKKyAgICBMYXJnZU9iamVjdCB0YWtlR3JlZWR5KExpc3QmLCBzaXplX3QpOworCisgICAg
c3RkOjphcnJheTxMaXN0LCAxOT4gbV9saXN0czsKK307CisKK30gLy8gbmFtZXNwYWNlIGJtYWxs
b2MKKworI2VuZGlmIC8vIFNlZ3JlZ2F0ZWRGcmVlTGlzdF9oCkluZGV4OiBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0ZyZWVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9GcmVlTGlzdC5oCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Zy
ZWVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDUxICsyMywzNCBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAgKi8KIAotI2lmbmRlZiBTZWdyZWdhdGVkRnJlZUxpc3RfaAotI2RlZmluZSBTZWdyZWdh
dGVkRnJlZUxpc3RfaAorI2lmbmRlZiBGcmVlTGlzdF9oCisjZGVmaW5lIEZyZWVMaXN0X2gKIAog
I2luY2x1ZGUgIkxhcmdlT2JqZWN0LmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCi0jaW5jbHVkZSA8
YXJyYXk+CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAotY2xhc3MgU2VncmVnYXRlZEZyZWVMaXN0
IHsKLXB1YmxpYzoKLSAgICBTZWdyZWdhdGVkRnJlZUxpc3QoKTsKKy8vIEhlbHBlciBvYmplY3Qg
Zm9yIFNlZ3JlZ2F0ZWRGcmVlTGlzdC4KIAotICAgIHZvaWQgaW5zZXJ0KGNvbnN0IExhcmdlT2Jq
ZWN0Jik7CitjbGFzcyBGcmVlTGlzdCB7CitwdWJsaWM6CisgICAgdm9pZCBwdXNoKGNvbnN0IExh
cmdlT2JqZWN0Jik7CiAKLSAgICAvLyBSZXR1cm5zIGEgcmVhc29uYWJsZSBmaXQgZm9yIHRoZSBw
cm92aWRlZCBzaXplLCBvciBMYXJnZU9iamVjdCgpIGlmIG5vIGZpdAotICAgIC8vIGlzIGZvdW5k
LiBNYXkgcmV0dXJuIExhcmdlT2JqZWN0KCkgc3B1cmlvdXNseSBpZiBzZWFyY2hpbmcgdGFrZXMg
dG9vIGxvbmcuCi0gICAgLy8gSW5jcmVtZW50YWxseSByZW1vdmVzIHN0YWxlIGl0ZW1zIGZyb20g
dGhlIGZyZWUgbGlzdCB3aGlsZSBzZWFyY2hpbmcuCi0gICAgLy8gRG9lcyBub3QgZWFnZXJseSBy
ZW1vdmUgdGhlIHJldHVybmVkIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCiAgICAgTGFyZ2VP
YmplY3QgdGFrZShzaXplX3QpOwotCi0gICAgLy8gUmV0dXJucyBhIHJlYXNvbmFibGUgZml0IGZv
ciB0aGUgcHJvdmlkZWQgYWxpZ25tZW50IGFuZCBzaXplLCBvcgotICAgIC8vIGEgcmVhc29uYWJs
ZSBmaXQgZm9yIHRoZSBwcm92aWRlZCB1bmFsaWduZWQgc2l6ZSwgb3IgTGFyZ2VPYmplY3QoKSBp
ZiBubwotICAgIC8vIGZpdCBpcyBmb3VuZC4gTWF5IHJldHVybiBMYXJnZU9iamVjdCgpIHNwdXJp
b3VzbHkgaWYgc2VhcmNoaW5nIHRha2VzIHRvbwotICAgIC8vIGxvbmcuIEluY3JlbWVudGFsbHkg
cmVtb3ZlcyBzdGFsZSBpdGVtcyBmcm9tIHRoZSBmcmVlIGxpc3Qgd2hpbGUKLSAgICAvLyBzZWFy
Y2hpbmcuIERvZXMgbm90IGVhZ2VybHkgcmVtb3ZlIHRoZSByZXR1cm5lZCBvYmplY3QgZnJvbSB0
aGUgZnJlZSBsaXN0LgogICAgIExhcmdlT2JqZWN0IHRha2Uoc2l6ZV90IGFsaWdubWVudCwgc2l6
ZV90LCBzaXplX3QgdW5hbGlnbmVkU2l6ZSk7Ci0KLSAgICAvLyBSZXR1cm5zIGFuIHVucmVhc29u
YWJsZSBmaXQgZm9yIHRoZSBwcm92aWRlZCBzaXplLCBvciBMYXJnZU9iamVjdCgpIGlmIG5vCi0g
ICAgLy8gZml0IGlzIGZvdW5kLiBOZXZlciByZXR1cm5zIExhcmdlT2JqZWN0KCkgc3B1cmlvdXNs
eS4gSW5jcmVtZW50YWxseQotICAgIC8vIHJlbW92ZXMgc3RhbGUgaXRlbXMgZnJvbSB0aGUgZnJl
ZSBsaXN0IHdoaWxlIHNlYXJjaGluZy4gRWFnZXJseSByZW1vdmVzCi0gICAgLy8gdGhlIHJldHVy
bmVkIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCiAgICAgTGFyZ2VPYmplY3QgdGFrZUdyZWVk
eShzaXplX3QpOwogICAgIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIFZlY3RvcjxSYW5nZT4gTGlz
dDsKLQotICAgIExpc3QmIHNlbGVjdChzaXplX3QpOwotICAgIExhcmdlT2JqZWN0IHRha2UoTGlz
dCYsIHNpemVfdCk7Ci0gICAgTGFyZ2VPYmplY3QgdGFrZShMaXN0Jiwgc2l6ZV90IGFsaWdubWVu
dCwgc2l6ZV90LCBzaXplX3QgdW5hbGlnbmVkU2l6ZSk7Ci0gICAgTGFyZ2VPYmplY3QgdGFrZUdy
ZWVkeShMaXN0Jiwgc2l6ZV90KTsKLQotICAgIHN0ZDo6YXJyYXk8TGlzdCwgMTk+IG1fbGlzdHM7
CisgICAgVmVjdG9yPFJhbmdlPiBtX3ZlY3RvcjsKIH07CiAKK2lubGluZSB2b2lkIEZyZWVMaXN0
OjpwdXNoKGNvbnN0IExhcmdlT2JqZWN0JiBsYXJnZU9iamVjdCkKK3sKKyAgICBCQVNTRVJUKGxh
cmdlT2JqZWN0LmlzRnJlZSgpKTsKKyAgICBtX3ZlY3Rvci5wdXNoKGxhcmdlT2JqZWN0LnJhbmdl
KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCiAKLSNlbmRpZiAvLyBTZWdyZWdhdGVk
RnJlZUxpc3RfaAorI2VuZGlmIC8vIEZyZWVMaXN0X2gKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvTGFyZ2VPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0xhcmdlT2JqZWN0LmgJKHJldmlzaW9uIDE4MDY4NikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvTGFyZ2VPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDE0IEBACiAjaW5j
bHVkZSAiQmVnaW5UYWcuaCIKICNpbmNsdWRlICJFbmRUYWcuaCIKICNpbmNsdWRlICJMYXJnZUNo
dW5rLmgiCisjaW5jbHVkZSAiUmFuZ2UuaCIKIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCiBjbGFz
cyBMYXJnZU9iamVjdCB7CiBwdWJsaWM6CisgICAgc3RhdGljIFJhbmdlIGluaXQoTGFyZ2VDaHVu
ayopOworCiAgICAgTGFyZ2VPYmplY3QoKTsKICAgICBMYXJnZU9iamVjdCh2b2lkKik7CiAKQEAg
LTIzNyw2ICsyNDAsMzMgQEAgaW5saW5lIHZvaWQgTGFyZ2VPYmplY3Q6OnZhbGlkYXRlKCkgY29u
cwogICAgIH0KIH0KIAoraW5saW5lIFJhbmdlIExhcmdlT2JqZWN0Ojppbml0KExhcmdlQ2h1bmsq
IGNodW5rKQoreworICAgIFJhbmdlIHJhbmdlKGNodW5rLT5iZWdpbigpLCBjaHVuay0+ZW5kKCkg
LSBjaHVuay0+YmVnaW4oKSk7CisKKyAgICBCZWdpblRhZyogYmVnaW5UYWcgPSBMYXJnZUNodW5r
OjpiZWdpblRhZyhyYW5nZS5iZWdpbigpKTsKKyAgICBiZWdpblRhZy0+c2V0UmFuZ2UocmFuZ2Up
OworICAgIGJlZ2luVGFnLT5zZXRGcmVlKHRydWUpOworICAgIGJlZ2luVGFnLT5zZXRIYXNQaHlz
aWNhbFBhZ2VzKGZhbHNlKTsKKworICAgIEVuZFRhZyogZW5kVGFnID0gTGFyZ2VDaHVuazo6ZW5k
VGFnKHJhbmdlLmJlZ2luKCksIHJhbmdlLnNpemUoKSk7CisgICAgZW5kVGFnLT5pbml0KGJlZ2lu
VGFnKTsKKworICAgIC8vIE1hcmsgdGhlIGxlZnQgYW5kIHJpZ2h0IGVkZ2VzIG9mIG91ciBjaHVu
ayBhcyBhbGxvY2F0ZWQuIFRoaXMgbmF0dXJhbGx5CisgICAgLy8gcHJldmVudHMgbWVyZ2luZyBs
b2dpYyBmcm9tIG92ZXJmbG93aW5nIGJleW9uZCBvdXIgY2h1bmssIHdpdGhvdXQgcmVxdWlyaW5n
CisgICAgLy8gc3BlY2lhbC1jYXNlIGNoZWNrcy4KKyAgICAKKyAgICBFbmRUYWcqIGxlZnRTZW50
aW5lbCA9IGJlZ2luVGFnLT5wcmV2KCk7CisgICAgQkFTU0VSVChsZWZ0U2VudGluZWwgPj0gc3Rh
dGljX2Nhc3Q8dm9pZCo+KGNodW5rKSk7CisgICAgbGVmdFNlbnRpbmVsLT5pbml0U2VudGluZWwo
KTsKKworICAgIEJlZ2luVGFnKiByaWdodFNlbnRpbmVsID0gZW5kVGFnLT5uZXh0KCk7CisgICAg
QkFTU0VSVChyaWdodFNlbnRpbmVsIDwgc3RhdGljX2Nhc3Q8dm9pZCo+KHJhbmdlLmJlZ2luKCkp
KTsKKyAgICByaWdodFNlbnRpbmVsLT5pbml0U2VudGluZWwoKTsKKyAgICAKKyAgICByZXR1cm4g
cmFuZ2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIAogI2VuZGlmIC8vIExhcmdlT2Jq
ZWN0X2gKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2VncmVnYXRlZEZyZWVMaXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NlZ3JlZ2F0ZWRGcmVlTGlz
dC5jcHAJKHJldmlzaW9uIDE4MDY4NikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2VncmVn
YXRlZEZyZWVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsMjkgKzIzLDI1IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jaW5jbHVkZSAiQmVnaW5UYWcuaCIKLSNpbmNsdWRlICJMYXJn
ZUNodW5rLmgiCiAjaW5jbHVkZSAiU2VncmVnYXRlZEZyZWVMaXN0LmgiCi0jaW5jbHVkZSAiVmVj
dG9yLmgiCiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogU2VncmVnYXRlZEZyZWVMaXN0OjpTZWdy
ZWdhdGVkRnJlZUxpc3QoKQogewotICAgIEJBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90Pigmc2Vs
ZWN0KGxhcmdlTWF4KSAtIG1fbGlzdHMuYmVnaW4oKSkgPT0gbV9saXN0cy5zaXplKCkgLSAxKTsK
KyAgICBCQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oJnNlbGVjdChsYXJnZU1heCkgLSBtX2Zy
ZWVMaXN0cy5iZWdpbigpKSA9PSBtX2ZyZWVMaXN0cy5zaXplKCkgLSAxKTsKIH0KIAogdm9pZCBT
ZWdyZWdhdGVkRnJlZUxpc3Q6Omluc2VydChjb25zdCBMYXJnZU9iamVjdCYgbGFyZ2VPYmplY3Qp
CiB7Ci0gICAgQkFTU0VSVChsYXJnZU9iamVjdC5pc0ZyZWUoKSk7CiAgICAgYXV0byYgbGlzdCA9
IHNlbGVjdChsYXJnZU9iamVjdC5zaXplKCkpOwotICAgIGxpc3QucHVzaChsYXJnZU9iamVjdC5y
YW5nZSgpKTsKKyAgICBsaXN0LnB1c2gobGFyZ2VPYmplY3QpOwogfQogCiBMYXJnZU9iamVjdCBT
ZWdyZWdhdGVkRnJlZUxpc3Q6OnRha2VHcmVlZHkoc2l6ZV90IHNpemUpCiB7Ci0gICAgZm9yIChz
aXplX3QgaSA9IG1fbGlzdHMuc2l6ZSgpOyBpLS0gPiAwOyApIHsKLSAgICAgICAgTGFyZ2VPYmpl
Y3QgbGFyZ2VPYmplY3QgPSB0YWtlR3JlZWR5KG1fbGlzdHNbaV0sIHNpemUpOworICAgIGZvciAo
c2l6ZV90IGkgPSBtX2ZyZWVMaXN0cy5zaXplKCk7IGktLSA+IDA7ICkgeworICAgICAgICBMYXJn
ZU9iamVjdCBsYXJnZU9iamVjdCA9IG1fZnJlZUxpc3RzW2ldLnRha2VHcmVlZHkoc2l6ZSk7CiAg
ICAgICAgIGlmICghbGFyZ2VPYmplY3QpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtNTQs
MzEgKzUwLDEwIEBAIExhcmdlT2JqZWN0IFNlZ3JlZ2F0ZWRGcmVlTGlzdDo6dGFrZUdyZWUKICAg
ICByZXR1cm4gTGFyZ2VPYmplY3QoKTsKIH0KIAotTGFyZ2VPYmplY3QgU2VncmVnYXRlZEZyZWVM
aXN0Ojp0YWtlR3JlZWR5KExpc3QmIGxpc3QsIHNpemVfdCBzaXplKQotewotICAgIGZvciAoc2l6
ZV90IGkgPSBsaXN0LnNpemUoKTsgaS0tID4gMDsgKSB7Ci0gICAgICAgIC8vIFdlIGRvbid0IGVh
Z2VybHkgcmVtb3ZlIGl0ZW1zIHdoZW4gd2UgbWVyZ2UgYW5kL29yIHNwbGl0IHJhbmdlcywKLSAg
ICAgICAgLy8gc28gd2UgbmVlZCB0byB2YWxpZGF0ZSBlYWNoIGZyZWUgbGlzdCBlbnRyeSBiZWZv
cmUgdXNpbmcgaXQuCi0gICAgICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0KExhcmdlT2JqZWN0
OjpEb05vdFZhbGlkYXRlLCBsaXN0W2ldLmJlZ2luKCkpOwotICAgICAgICBpZiAoIWxhcmdlT2Jq
ZWN0LmlzVmFsaWRBbmRGcmVlKGxpc3RbaV0uc2l6ZSgpKSkgewotICAgICAgICAgICAgbGlzdC5w
b3AoaSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChs
YXJnZU9iamVjdC5zaXplKCkgPCBzaXplKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgbGlzdC5wb3AoaSk7Ci0gICAgICAgIHJldHVybiBsYXJnZU9iamVjdDsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gTGFyZ2VPYmplY3QoKTsKLX0KLQogTGFyZ2VPYmplY3QgU2VncmVnYXRlZEZyZWVM
aXN0Ojp0YWtlKHNpemVfdCBzaXplKQogewotICAgIGZvciAoYXV0byogbGlzdCA9ICZzZWxlY3Qo
c2l6ZSk7IGxpc3QgIT0gbV9saXN0cy5lbmQoKTsgKytsaXN0KSB7Ci0gICAgICAgIExhcmdlT2Jq
ZWN0IGxhcmdlT2JqZWN0ID0gdGFrZSgqbGlzdCwgc2l6ZSk7CisgICAgZm9yIChhdXRvKiBsaXN0
ID0gJnNlbGVjdChzaXplKTsgbGlzdCAhPSBtX2ZyZWVMaXN0cy5lbmQoKTsgKytsaXN0KSB7Cisg
ICAgICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0gbGlzdC0+dGFrZShzaXplKTsKICAgICAg
ICAgaWYgKCFsYXJnZU9iamVjdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC04OSw4ICs2
NCw4IEBAIExhcmdlT2JqZWN0IFNlZ3JlZ2F0ZWRGcmVlTGlzdDo6dGFrZShzaXoKIAogTGFyZ2VP
YmplY3QgU2VncmVnYXRlZEZyZWVMaXN0Ojp0YWtlKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBz
aXplLCBzaXplX3QgdW5hbGlnbmVkU2l6ZSkKIHsKLSAgICBmb3IgKGF1dG8qIGxpc3QgPSAmc2Vs
ZWN0KHNpemUpOyBsaXN0ICE9IG1fbGlzdHMuZW5kKCk7ICsrbGlzdCkgewotICAgICAgICBMYXJn
ZU9iamVjdCBsYXJnZU9iamVjdCA9IHRha2UoKmxpc3QsIGFsaWdubWVudCwgc2l6ZSwgdW5hbGln
bmVkU2l6ZSk7CisgICAgZm9yIChhdXRvKiBsaXN0ID0gJnNlbGVjdChzaXplKTsgbGlzdCAhPSBt
X2ZyZWVMaXN0cy5lbmQoKTsgKytsaXN0KSB7CisgICAgICAgIExhcmdlT2JqZWN0IGxhcmdlT2Jq
ZWN0ID0gbGlzdC0+dGFrZShhbGlnbm1lbnQsIHNpemUsIHVuYWxpZ25lZFNpemUpOwogICAgICAg
ICBpZiAoIWxhcmdlT2JqZWN0KQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTk5LDcgKzc0
LDcgQEAgTGFyZ2VPYmplY3QgU2VncmVnYXRlZEZyZWVMaXN0Ojp0YWtlKHNpegogICAgIHJldHVy
biBMYXJnZU9iamVjdCgpOwogfQogCi1JTkxJTkUgYXV0byBTZWdyZWdhdGVkRnJlZUxpc3Q6OnNl
bGVjdChzaXplX3Qgc2l6ZSkgLT4gTGlzdCYKK0lOTElORSBhdXRvIFNlZ3JlZ2F0ZWRGcmVlTGlz
dDo6c2VsZWN0KHNpemVfdCBzaXplKSAtPiBGcmVlTGlzdCYKIHsKICAgICBzaXplX3QgYWxpZ25D
b3VudCA9IChzaXplIC0gbGFyZ2VNaW4pIC8gbGFyZ2VBbGlnbm1lbnQ7CiAgICAgc2l6ZV90IHJl
c3VsdCA9IDA7CkBAIC0xMDcsNjMgKzgyLDcgQEAgSU5MSU5FIGF1dG8gU2VncmVnYXRlZEZyZWVM
aXN0OjpzZWxlY3QocwogICAgICAgICArK3Jlc3VsdDsKICAgICAgICAgYWxpZ25Db3VudCA+Pj0g
MTsKICAgICB9Ci0gICAgcmV0dXJuIG1fbGlzdHNbcmVzdWx0XTsKLX0KLQotSU5MSU5FIExhcmdl
T2JqZWN0IFNlZ3JlZ2F0ZWRGcmVlTGlzdDo6dGFrZShMaXN0JiBsaXN0LCBzaXplX3Qgc2l6ZSkK
LXsKLSAgICBMYXJnZU9iamVjdCBmaXJzdDsKLSAgICBzaXplX3QgZW5kID0gbGlzdC5zaXplKCkg
PiBzZWdyZWdhdGVkRnJlZUxpc3RTZWFyY2hEZXB0aCA/IGxpc3Quc2l6ZSgpIC0gc2VncmVnYXRl
ZEZyZWVMaXN0U2VhcmNoRGVwdGggOiAwOwotICAgIGZvciAoc2l6ZV90IGkgPSBsaXN0LnNpemUo
KTsgaS0tID4gZW5kOyApIHsKLSAgICAgICAgLy8gV2UgZG9uJ3QgZWFnZXJseSByZW1vdmUgaXRl
bXMgd2hlbiB3ZSBtZXJnZSBhbmQvb3Igc3BsaXQgcmFuZ2VzLCBzbwotICAgICAgICAvLyB3ZSBu
ZWVkIHRvIHZhbGlkYXRlIGVhY2ggZnJlZSBsaXN0IGVudHJ5IGJlZm9yZSB1c2luZyBpdC4KLSAg
ICAgICAgTGFyZ2VPYmplY3QgbGFyZ2VPYmplY3QoTGFyZ2VPYmplY3Q6OkRvTm90VmFsaWRhdGUs
IGxpc3RbaV0uYmVnaW4oKSk7Ci0gICAgICAgIGlmICghbGFyZ2VPYmplY3QuaXNWYWxpZEFuZEZy
ZWUobGlzdFtpXS5zaXplKCkpKSB7Ci0gICAgICAgICAgICBsaXN0LnBvcChpKTsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxhcmdlT2JqZWN0LnNpemUo
KSA8IHNpemUpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoISFmaXJzdCAm
JiBmaXJzdC5iZWdpbigpIDwgbGFyZ2VPYmplY3QuYmVnaW4oKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIGZpcnN0ID0gbGFyZ2VPYmplY3Q7Ci0gICAgfQotICAgIAotICAgIHJl
dHVybiBmaXJzdDsKLX0KLQotSU5MSU5FIExhcmdlT2JqZWN0IFNlZ3JlZ2F0ZWRGcmVlTGlzdDo6
dGFrZShMaXN0JiBsaXN0LCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IHVu
YWxpZ25lZFNpemUpCi17Ci0gICAgQkFTU0VSVChpc1Bvd2VyT2ZUd28oYWxpZ25tZW50KSk7Ci0g
ICAgc2l6ZV90IGFsaWdubWVudE1hc2sgPSBhbGlnbm1lbnQgLSAxOwotCi0gICAgTGFyZ2VPYmpl
Y3QgZmlyc3Q7Ci0gICAgc2l6ZV90IGVuZCA9IGxpc3Quc2l6ZSgpID4gc2VncmVnYXRlZEZyZWVM
aXN0U2VhcmNoRGVwdGggPyBsaXN0LnNpemUoKSAtIHNlZ3JlZ2F0ZWRGcmVlTGlzdFNlYXJjaERl
cHRoIDogMDsKLSAgICBmb3IgKHNpemVfdCBpID0gbGlzdC5zaXplKCk7IGktLSA+IGVuZDsgKSB7
Ci0gICAgICAgIC8vIFdlIGRvbid0IGVhZ2VybHkgcmVtb3ZlIGl0ZW1zIHdoZW4gd2UgbWVyZ2Ug
YW5kL29yIHNwbGl0IHJhbmdlcywgc28KLSAgICAgICAgLy8gd2UgbmVlZCB0byB2YWxpZGF0ZSBl
YWNoIGZyZWUgbGlzdCBlbnRyeSBiZWZvcmUgdXNpbmcgaXQuCi0gICAgICAgIExhcmdlT2JqZWN0
IGxhcmdlT2JqZWN0KExhcmdlT2JqZWN0OjpEb05vdFZhbGlkYXRlLCBsaXN0W2ldLmJlZ2luKCkp
OwotICAgICAgICBpZiAoIWxhcmdlT2JqZWN0LmlzVmFsaWRBbmRGcmVlKGxpc3RbaV0uc2l6ZSgp
KSkgewotICAgICAgICAgICAgbGlzdC5wb3AoaSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChsYXJnZU9iamVjdC5zaXplKCkgPCBzaXplKQotICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKHRlc3QobGFyZ2VPYmplY3QuYmVnaW4oKSwg
YWxpZ25tZW50TWFzaykgJiYgbGFyZ2VPYmplY3Quc2l6ZSgpIDwgdW5hbGlnbmVkU2l6ZSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmICghIWZpcnN0ICYmIGZpcnN0LmJlZ2lu
KCkgPCBsYXJnZU9iamVjdC5iZWdpbigpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgZmlyc3QgPSBsYXJnZU9iamVjdDsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZpcnN0Owor
ICAgIHJldHVybiBtX2ZyZWVMaXN0c1tyZXN1bHRdOwogfQogCiB9IC8vIG5hbWVzcGFjZSBibWFs
bG9jCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NlZ3JlZ2F0ZWRGcmVlTGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2VncmVnYXRlZEZyZWVMaXN0LmgJ
KHJldmlzaW9uIDE4MDY4NikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2VncmVnYXRlZEZy
ZWVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDcgQEAKICNpZm5kZWYgU2VncmVn
YXRlZEZyZWVMaXN0X2gKICNkZWZpbmUgU2VncmVnYXRlZEZyZWVMaXN0X2gKIAotI2luY2x1ZGUg
IkxhcmdlT2JqZWN0LmgiCi0jaW5jbHVkZSAiVmVjdG9yLmgiCisjaW5jbHVkZSAiRnJlZUxpc3Qu
aCIKICNpbmNsdWRlIDxhcnJheT4KIAogbmFtZXNwYWNlIGJtYWxsb2MgewpAQCAtNTgsMTQgKzU3
LDkgQEAgcHVibGljOgogICAgIExhcmdlT2JqZWN0IHRha2VHcmVlZHkoc2l6ZV90KTsKICAgICAK
IHByaXZhdGU6Ci0gICAgdHlwZWRlZiBWZWN0b3I8UmFuZ2U+IExpc3Q7CisgICAgRnJlZUxpc3Qm
IHNlbGVjdChzaXplX3QpOwogCi0gICAgTGlzdCYgc2VsZWN0KHNpemVfdCk7Ci0gICAgTGFyZ2VP
YmplY3QgdGFrZShMaXN0Jiwgc2l6ZV90KTsKLSAgICBMYXJnZU9iamVjdCB0YWtlKExpc3QmLCBz
aXplX3QgYWxpZ25tZW50LCBzaXplX3QsIHNpemVfdCB1bmFsaWduZWRTaXplKTsKLSAgICBMYXJn
ZU9iamVjdCB0YWtlR3JlZWR5KExpc3QmLCBzaXplX3QpOwotCi0gICAgc3RkOjphcnJheTxMaXN0
LCAxOT4gbV9saXN0czsKKyAgICBzdGQ6OmFycmF5PEZyZWVMaXN0LCAxOT4gbV9mcmVlTGlzdHM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1NpemVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5o
CShyZXZpc2lvbiAxODA2ODgpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFNpemVzIHsKICAgICAKICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IHhMYXJnZUFsaWdubWVudCA9IHZtUGFnZVNpemU7CiAKLSAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNlZ3JlZ2F0ZWRGcmVlTGlzdFNlYXJjaERlcHRoID0gMTY7
CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBmcmVlTGlzdFNlYXJjaERlcHRoID0gMTY7CiAKICAg
ICBzdGF0aWMgY29uc3QgdWludHB0cl90IHR5cGVNYXNrID0gKHN1cGVyQ2h1bmtTaXplIC0gMSkg
JiB+KChzdXBlckNodW5rU2l6ZSAvIDQpIC0gMSk7IC8vIDQgdGFnZ2FibGUgY2h1bmtzCiAgICAg
c3RhdGljIGNvbnN0IHVpbnRwdHJfdCBzbWFsbFR5cGUgPSAoc3VwZXJDaHVua1NpemUgKyBzbWFs
bENodW5rT2Zmc2V0KSAmIHR5cGVNYXNrOwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9W
TUhlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmNw
cAkocmV2aXNpb24gMTgwNjg2KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwog
Ci0jaW5jbHVkZSAiQm91bmRhcnlUYWdJbmxpbmVzLmgiCi0jaW5jbHVkZSAiTGFyZ2VDaHVuay5o
IgorI2luY2x1ZGUgIkxhcmdlT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGluZS5oIgogI2luY2x1ZGUg
IlBlclByb2Nlc3MuaCIKICNpbmNsdWRlICJTdXBlckNodW5rLmgiCkBAIC01Myw3ICs1Miw3IEBA
IHZvaWQgVk1IZWFwOjpncm93KCkKICAgICAgICAgbV9tZWRpdW1QYWdlcy5wdXNoKGl0KTsKIAog
ICAgIExhcmdlQ2h1bmsqIGxhcmdlQ2h1bmsgPSBzdXBlckNodW5rLT5sYXJnZUNodW5rKCk7Ci0g
ICAgbV9sYXJnZU9iamVjdHMuaW5zZXJ0KExhcmdlT2JqZWN0KEJvdW5kYXJ5VGFnOjppbml0KGxh
cmdlQ2h1bmspLmJlZ2luKCkpKTsKKyAgICBtX2xhcmdlT2JqZWN0cy5pbnNlcnQoTGFyZ2VPYmpl
Y3QoTGFyZ2VPYmplY3Q6OmluaXQobGFyZ2VDaHVuaykuYmVnaW4oKSkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBibWFsbG9jCg==
</data>
<flag name="review"
          id="272367"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>