<?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>140732</bug_id>
          
          <creation_ts>2015-01-21 10:50:28 -0800</creation_ts>
          <short_desc>bmalloc: support aligned allocation</short_desc>
          <delta_ts>2015-01-21 14:49:39 -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>commit-queue</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1063096</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-21 10:50:28 -0800</bug_when>
    <thetext>bmalloc: support aligned allocation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063121</commentid>
    <comment_count>1</comment_count>
      <attachid>245073</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-21 11:45:41 -0800</bug_when>
    <thetext>Created attachment 245073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063124</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-21 11:48:57 -0800</bug_when>
    <thetext>Attachment 245073 did not pass style-queue:


ERROR: PerformanceTests/MallocBench/MallocBench/stress_aligned.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: PerformanceTests/MallocBench/MallocBench/stress_aligned.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]
ERROR: PerformanceTests/MallocBench/MallocBench/stress_aligned.cpp:37:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/stress_aligned.cpp:140:  benchmark_stress_aligned is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/memalign.cpp:43:  benchmark_memalign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: PerformanceTests/MallocBench/MallocBench/stress_aligned.h:29:  benchmark_stress_aligned is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 6 in 16 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>1063151</commentid>
    <comment_count>3</comment_count>
      <attachid>245073</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-21 13:42:28 -0800</bug_when>
    <thetext>Comment on attachment 245073
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063190</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-21 14:49:39 -0800</bug_when>
    <thetext>Committed r178861: &lt;http://trac.webkit.org/changeset/178861&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245073</attachid>
            <date>2015-01-21 11:45:41 -0800</date>
            <delta_ts>2015-01-21 13:42:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140732-20150121114548.patch</filename>
            <type>text/plain</type>
            <size>37264</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzg4NDYpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE1LTAxLTIxICBH
ZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYzogc3Vw
cG9ydCBhbGlnbmVkIGFsbG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MDczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBNYWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9CZW5jaG1hcmsu
Y3BwOgorICAgICAgICAqIE1hbGxvY0JlbmNoL01hbGxvY0JlbmNoL21lbWFsaWduLmNwcDoKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAoYmVuY2htYXJrX21lbWFsaWduKTogQWRkZWQgYSB0ZXN0
IGZvciBzcGVjaWZpYyBpbnRlcmVzdGluZyBtZW1hbGlnbiB2YWx1ZXMuCisKKyAgICAgICAgKiBN
YWxsb2NCZW5jaC9NYWxsb2NCZW5jaC9zdHJlc3NfYWxpZ25lZC5jcHA6IEFkZGVkLgorICAgICAg
ICAoYmVuY2htYXJrX3N0cmVzc19hbGlnbmVkKToKKyAgICAgICAgKiBNYWxsb2NCZW5jaC9NYWxs
b2NCZW5jaC9zdHJlc3NfYWxpZ25lZC5oOiBBZGRlZC4gQWRkZWQgYSBzdHJlc3MgdGVzdAorICAg
ICAgICBmb3IgYXJiaXRyYXJ5IG1lbWFsaWduIHZhbHVlcy4KKwogMjAxNS0wMS0xNiAgR2VvZmZy
ZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIGJtYWxsb2M6IGFkZGVkIHRo
ZSB0aW5pZXN0IGJpdCBvZiB0ZXN0aW5nIGZvciBhbGlnbmVkIGFsbG9jYXRpb24KSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxv
Y0JlbmNoLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3ODcyNykKKysrIFBl
cmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogCQkxNENDMzkzQzE4RUE4
MTJCMDA0QUZFMzQgLyogbGlibWJtYWxsb2MuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNENDMzkzODE4RUE4MTFGMDA0QUZFMzQgLyogbGli
bWJtYWxsb2MuZHlsaWIgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUmVxdWlyZWQsICk7
IH07IH07CiAJCTE0Q0MzOTNGMThFQTgxODQwMDRBRkUzNCAvKiBtYm1hbGxvYy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNENDMzkxQzE4RUE2NzU5
MDA0QUZFMzQgLyogbWJtYWxsb2MuY3BwICovOyB9OwogCQkxNENFNEE2MDE3QkQzNTU4MDAyODhE
QUEgLyogYmlnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0Q0U0QTVFMTdCRDM1NTgwMDI4OERBQSAvKiBiaWcuY3BwICovOyB9OworCQkxNEQwQkZG
MzFBNkY0RDNCMDAxMDlGMzEgLyogc3RyZXNzX2FsaWduZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREMEJGRjExQTZGNEQzQjAwMTA5RjMxIC8q
IHN0cmVzc19hbGlnbmVkLmNwcCAqLzsgfTsKIAkJMTRENjMyMkUxQTY5QkUwQjAwQThGODRGIC8q
IG1lbWFsaWduLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0RDYzMjJDMUE2OUJFMEIwMEE4Rjg0RiAvKiBtZW1hbGlnbi5jcHAgKi87IH07CiAJCTE0
RTExOTMyMTc3RUNDOEIwMDNBOEQxNSAvKiBDUFVDb3VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEUxMTkzMDE3N0VDQzhCMDAzQThEMTUgLyog
Q1BVQ291bnQuY3BwICovOyB9OwogCQkxNEZDQTM2MTE5QTdDOTE3MDAxQ0ZEQTkgLyogc3RyZXNz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RkNB
MzVGMTlBN0M5MTcwMDFDRkRBOSAvKiBzdHJlc3MuY3BwICovOyB9OwpAQCAtMTA0LDYgKzEwNSw4
IEBACiAJCTE0Q0MzOTM4MThFQTgxMUYwMDRBRkUzNCAvKiBsaWJtYm1hbGxvYy5keWxpYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5keWxpYiI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYm1ibWFsbG9jLmR5bGli
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxNENFNEE1RTE3QkQzNTU4
MDAyODhEQUEgLyogYmlnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IGJpZy5jcHA7IHBhdGggPSBNYWxsb2NCZW5jaC9iaWcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNENFNEE1RjE3QkQzNTU4MDAyODhEQUEgLyogYmlnLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGJpZy5oOyBwYXRoID0gTWFsbG9jQmVuY2gvYmlnLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RDBCRkYxMUE2RjREM0IwMDEwOUYzMSAvKiBz
dHJlc3NfYWxpZ25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBz
dHJlc3NfYWxpZ25lZC5jcHA7IHBhdGggPSBNYWxsb2NCZW5jaC9zdHJlc3NfYWxpZ25lZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RDBCRkYyMUE2RjREM0IwMDEwOUYzMSAv
KiBzdHJlc3NfYWxpZ25lZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBzdHJl
c3NfYWxpZ25lZC5oOyBwYXRoID0gTWFsbG9jQmVuY2gvc3RyZXNzX2FsaWduZWQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRENjMyMkMxQTY5QkUwQjAwQThGODRGIC8qIG1lbWFs
aWduLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IG1lbWFsaWduLmNw
cDsgcGF0aCA9IE1hbGxvY0JlbmNoL21lbWFsaWduLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTRENjMyMkQxQTY5QkUwQjAwQThGODRGIC8qIG1lbWFsaWduLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IG1lbWFsaWduLmg7IHBhdGggPSBNYWxsb2NCZW5jaC9t
ZW1hbGlnbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEUxMTkzMDE3N0VDQzhC
MDAzQThEMTUgLyogQ1BVQ291bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ1BVQ291bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIwLDYg
KzIyMyw4IEBACiAJCQkJMTQ0N0FFOEMxOEZCNTg0MjAwQjNEN0ZGIC8qIHJlZGRpdC5vcHMgKi8s
CiAJCQkJMTRGQ0EzNUYxOUE3QzkxNzAwMUNGREE5IC8qIHN0cmVzcy5jcHAgKi8sCiAJCQkJMTRG
Q0EzNjAxOUE3QzkxNzAwMUNGREE5IC8qIHN0cmVzcy5oICovLAorCQkJCTE0RDBCRkYxMUE2RjRE
M0IwMDEwOUYzMSAvKiBzdHJlc3NfYWxpZ25lZC5jcHAgKi8sCisJCQkJMTREMEJGRjIxQTZGNEQz
QjAwMTA5RjMxIC8qIHN0cmVzc19hbGlnbmVkLmggKi8sCiAJCQkJMTQ0N0FFOTgxOEZCNTlEOTAw
QjNEN0ZGIC8qIHRoZXZlcmdlX21lbW9yeV93YXJuaW5nLm9wcyAqLywKIAkJCQkxNDQ3QUU4RDE4
RkI1ODQyMDBCM0Q3RkYgLyogdGhldmVyZ2UuY3BwICovLAogCQkJCTE0NDdBRThFMThGQjU4NDIw
MEIzRDdGRiAvKiB0aGV2ZXJnZS5oICovLApAQCAtMzIwLDYgKzMyNSw3IEBACiAJCQkJMTQ5NzZF
QzgxNzdFMzY0OTAwNkI4MTlBIC8qIGxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ5NzZF
Q0MxNzdFM0M4NzAwNkI4MTlBIC8qIENvbW1hbmRMaW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0NDdBRTkyMThGQjU4NDIwMEIzRDdGRiAvKiB0aGV2ZXJnZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkxNEQwQkZGMzFBNkY0RDNCMDAxMDlGMzEgLyogc3RyZXNzX2FsaWduZWQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ1MUZBRUQxOEIxNEI3MTAwREI2RDQ3IC8qIG1lZGl1bS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNEM1MDA5MzE4NDAzREEwMDA3QTUzMUQgLyogSW50ZXJwcmV0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0N0FFOTExOEZCNTg0MjAwQjNEN0ZGIC8qIHJlZGRp
dC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gv
TWFsbG9jQmVuY2gvQmVuY2htYXJrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL0JlbmNobWFyay5jcHAJKHJldmlzaW9uIDE3ODcyNykK
KysrIFBlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvQmVuY2htYXJrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgInJlZGRpdC5oIgog
I2luY2x1ZGUgInJlYWxsb2MuaCIKICNpbmNsdWRlICJzdHJlc3MuaCIKKyNpbmNsdWRlICJzdHJl
c3NfYWxpZ25lZC5oIgogI2luY2x1ZGUgInRoZXZlcmdlLmgiCiAjaW5jbHVkZSAidHJlZS5oIgog
I2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CkBAIC03OCw2ICs3OSw3IEBAIHN0YXRpYyBj
b25zdCBCZW5jaG1hcmtQYWlyIGJlbmNobWFya1BhaXIKICAgICB7ICJyZWRkaXQiLCBiZW5jaG1h
cmtfcmVkZGl0IH0sCiAgICAgeyAicmVkZGl0X21lbW9yeV93YXJuaW5nIiwgYmVuY2htYXJrX3Jl
ZGRpdF9tZW1vcnlfd2FybmluZyB9LAogICAgIHsgInN0cmVzcyIsIGJlbmNobWFya19zdHJlc3Mg
fSwKKyAgICB7ICJzdHJlc3NfYWxpZ25lZCIsIGJlbmNobWFya19zdHJlc3NfYWxpZ25lZCB9LAog
ICAgIHsgInRoZXZlcmdlIiwgYmVuY2htYXJrX3RoZXZlcmdlIH0sCiAgICAgeyAidGhldmVyZ2Vf
bWVtb3J5X3dhcm5pbmciLCBiZW5jaG1hcmtfdGhldmVyZ2VfbWVtb3J5X3dhcm5pbmcgfSwKICAg
ICB7ICJ0cmVlX2FsbG9jYXRlIiwgYmVuY2htYXJrX3RyZWVfYWxsb2NhdGUgfSwKSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbWVtYWxpZ24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gvbWVtYWxp
Z24uY3BwCShyZXZpc2lvbiAxNzg3MjcpCisrKyBQZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNo
L01hbGxvY0JlbmNoL21lbWFsaWduLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMjcgKzMwLDI3
IEBACiAKICNpbmNsdWRlICJtYm1hbGxvYy5oIgogCi12b2lkIGJlbmNobWFya19tZW1hbGlnbihi
b29sIGlzUGFyYWxsZWwpCit2b2lkIHRlc3Qoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUp
CiB7Ci0gICAgewotICAgICAgICBzaXplX3QgYWxpZ25tZW50ID0gMTI4OwotICAgICAgICBzaXpl
X3Qgc2l6ZSA9IDg7Ci0gICAgICAgIHZvaWQqIHJlc3VsdCA9IG1ibWVtYWxpZ24oYWxpZ25tZW50
LCBzaXplKTsKKyAgICB2b2lkKiByZXN1bHQgPSBtYm1lbWFsaWduKGFsaWdubWVudCwgc2l6ZSk7
CiAKLSAgICAgICAgYXNzZXJ0KHJlc3VsdCk7Ci0gICAgICAgIGFzc2VydCgoKHVpbnRwdHJfdCly
ZXN1bHQgJiAoYWxpZ25tZW50IC0gMSkpID09IDApOwotICAgICAgICAKLSAgICAgICAgbWJmcmVl
KHJlc3VsdCwgc2l6ZSk7Ci0gICAgfQorICAgIGFzc2VydChyZXN1bHQpOworICAgIGFzc2VydCgh
KCh1aW50cHRyX3QpcmVzdWx0ICYgKGFsaWdubWVudCAtIDEpKSk7CiAgICAgCi0gICAgewotICAg
ICAgICBzaXplX3QgYWxpZ25tZW50ID0gMjA0OCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBzaXpl
X3Qgc2l6ZSA9IDg7Ci0gICAgICAgIHZvaWQqIHJlc3VsdCA9IG1ibWVtYWxpZ24oYWxpZ25tZW50
LCBzaXplKTsKKyAgICBtYmZyZWUocmVzdWx0LCBzaXplKTsKK30KIAotICAgICAgICBhc3NlcnQo
cmVzdWx0KTsKLSAgICAgICAgYXNzZXJ0KCgodWludHB0cl90KXJlc3VsdCAmIChhbGlnbm1lbnQg
LSAxKSkgPT0gMCk7Ci0gICAgICAgIAotICAgICAgICBtYmZyZWUocmVzdWx0LCBzaXplKTsKK3Zv
aWQgYmVuY2htYXJrX21lbWFsaWduKGJvb2wgaXNQYXJhbGxlbCkKK3sKKyAgICBmb3IgKHNpemVf
dCBhbGlnbm1lbnQgPSAyOyBhbGlnbm1lbnQgPCA0MDk2OyBhbGlnbm1lbnQgKj0gMikgeworICAg
ICAgICBmb3IgKHNpemVfdCBzaXplID0gMDsgc2l6ZSA8IDQwOTY7ICsrc2l6ZSkKKyAgICAgICAg
ICAgIHRlc3QoYWxpZ25tZW50LCBzaXplKTsKICAgICB9CisKKyAgICB0ZXN0KDEgKiAxMDI0ICog
MTAyNCwgOCk7CisgICAgdGVzdCg4ICogMTAyNCAqIDEwMjQsIDgpOworICAgIHRlc3QoMzIgKiAx
MDI0ICogMTAyNCwgOCk7CisgICAgdGVzdCg2NCAqIDEwMjQgKiAxMDI0LCA4KTsKKyAgICB0ZXN0
KDEgKiAxMDI0ICogMTAyNCwgOCAqIDEwMjQgKiAxMDI0KTsKKyAgICB0ZXN0KDEgKiAxMDI0ICog
MTAyNCwgMTYgKiAxMDI0ICogMTAyNCk7CiB9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL01hbGxv
Y0JlbmNoL01hbGxvY0JlbmNoL3N0cmVzc19hbGlnbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL3N0cmVzc19hbGlnbmVkLmNwcAko
cmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvTWFsbG9jQmVuY2gvTWFsbG9jQmVuY2gv
c3RyZXNzX2FsaWduZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJCZW5j
aG1hcmsuaCIKKyNpbmNsdWRlICJDUFVDb3VudC5oIgorI2luY2x1ZGUgInN0cmVzc19hbGlnbmVk
LmgiCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8Y2hyb25vPgorI2luY2x1ZGUgPGNtYXRo
PgorI2luY2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHN0ZGRl
Zi5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgIm1ibWFsbG9jLmgiCisKK25hbWVz
cGFjZSB7CisKK3N0YXRpYyBjb25zdCBzaXplX3Qga0IgPSAxMDI0Oworc3RhdGljIGNvbnN0IHNp
emVfdCBNQiA9IGtCICoga0I7CisKK3N0cnVjdCBPYmplY3QgeworICAgIE9iamVjdCh2b2lkKiBw
b2ludGVyLCBzaXplX3Qgc2l6ZSwgbG9uZyB1dWlkKQorICAgICAgICA6IHBvaW50ZXIocG9pbnRl
cikKKyAgICAgICAgLCBzaXplKHNpemUpCisgICAgICAgICwgdXVpZCh1dWlkKQorICAgIHsKKyAg
ICB9CisKKyAgICB2b2lkKiBwb2ludGVyOworICAgIHNpemVfdCBzaXplOworICAgIGxvbmcgdXVp
ZDsKK307CisKK2NsYXNzIFNpemVTdHJlYW0geworcHVibGljOgorICAgIFNpemVTdHJlYW0oKQor
ICAgICAgICA6IG1fc3RhdGUoU21hbGwpCisgICAgICAgICwgbV9jb3VudCgwKQorICAgIHsKKyAg
ICB9CisKKyAgICBzaXplX3QgbmV4dCgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG1fc3RhdGUp
IHsKKyAgICAgICAgY2FzZSBTbWFsbDogeworICAgICAgICAgICAgaWYgKCsrbV9jb3VudCA9PSBz
bWFsbENvdW50KSB7CisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IE1lZGl1bTsKKyAgICAgICAg
ICAgICAgICBtX2NvdW50ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBy
YW5kb20oKSAlIHNtYWxsTWF4OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBNZWRpdW06IHsK
KyAgICAgICAgICAgIGlmICgrK21fY291bnQgPT0gbWVkaXVtQ291bnQpIHsKKyAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gTGFyZ2U7CisgICAgICAgICAgICAgICAgbV9jb3VudCA9IDA7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmFuZG9tKCkgJSBtZWRpdW1NYXg7CisgICAg
ICAgIH0KKworICAgICAgICBjYXNlIExhcmdlOiB7CisgICAgICAgICAgICBpZiAoKyttX2NvdW50
ID09IGxhcmdlQ291bnQpIHsKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gU21hbGw7CisgICAg
ICAgICAgICAgICAgbV9jb3VudCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gcmFuZG9tKCkgJSBsYXJnZU1heDsKKyAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCitw
cml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxDb3VudCA9IDEwMDA7CisgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbE1heCA9IDE2ICoga0I7CisKKyAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IG1lZGl1bUNvdW50ID0gMTAwOworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWVk
aXVtTWF4ID0gNTEyICoga0I7CisgICAgCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZUNv
dW50ID0gMTA7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZU1heCA9IDQgKiBNQjsKKwor
ICAgIGVudW0geyBTbWFsbCwgTWVkaXVtLCBMYXJnZSB9IG1fc3RhdGU7CisgICAgc2l6ZV90IG1f
Y291bnQ7Cit9OworCitPYmplY3QgYWxsb2NhdGUoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNp
emUpCit7CisgICAgT2JqZWN0IG9iamVjdChtYm1lbWFsaWduKGFsaWdubWVudCwgc2l6ZSksIHNp
emUsIHJhbmRvbSgpKTsKKyAgICBpZiAoKHVpbnRwdHJfdClvYmplY3QucG9pbnRlciAmIChhbGln
bm1lbnQgLSAxKSkKKyAgICAgICAgYWJvcnQoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemUgLyBzaXplb2YobG9uZyk7ICsraSkKKyAgICAgICAgKHN0YXRpY19jYXN0PGxvbmcqPihv
YmplY3QucG9pbnRlcikpW2ldID0gb2JqZWN0LnV1aWQ7CisgICAgcmV0dXJuIG9iamVjdDsKK30K
Kwordm9pZCBkZWFsbG9jYXRlKGNvbnN0IE9iamVjdCYgb2JqZWN0KQoreworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb2JqZWN0LnNpemUgLyBzaXplb2YobG9uZyk7ICsraSkgeworICAgICAg
ICBpZiAoKHN0YXRpY19jYXN0PGxvbmcqPihvYmplY3QucG9pbnRlcikpW2ldICE9IG9iamVjdC51
dWlkKQorICAgICAgICAgICAgYWJvcnQoKTsKKyAgICB9CisKKyAgICBtYmZyZWUob2JqZWN0LnBv
aW50ZXIsIG9iamVjdC5zaXplKTsKK30KKworc2l6ZV90IHJhbmRvbUFsaWdubWVudCgpCit7Cisg
ICAgc3dpdGNoIChyYW5kb20oKSAlIDMyKSB7CisgICAgY2FzZSAwOgorICAgICAgICByZXR1cm4g
cG93KDIsIHJhbmRvbSgpICUgMjYpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBwb3co
MiwgcmFuZG9tKCkgJSAxNCk7CisgICAgfQorfQorCit9CisKK3ZvaWQgYmVuY2htYXJrX3N0cmVz
c19hbGlnbmVkKGJvb2wgaXNQYXJhbGxlbCkKK3sKKyAgICBjb25zdCBzaXplX3QgaGVhcFNpemUg
PSAxMDAgKiBNQjsKKyAgICBjb25zdCBzaXplX3QgY2h1cm5TaXplID0gLjA1ICogaGVhcFNpemU7
CisgICAgY29uc3Qgc2l6ZV90IGNodXJuQ291bnQgPSAxMDA7CisgICAgCisgICAgc3JhbmRvbSgx
KTsgLy8gRm9yIGNvbnNpc3RlbmN5IGJldHdlZW4gcnVucy4KKworICAgIHN0ZDo6dmVjdG9yPE9i
amVjdD4gb2JqZWN0czsKKyAgICAKKyAgICBTaXplU3RyZWFtIHNpemVTdHJlYW07CisgICAgCisg
ICAgc2l6ZV90IHNpemUgPSAwOworICAgIGZvciAoc2l6ZV90IHJlbWFpbmluZyA9IGhlYXBTaXpl
OyByZW1haW5pbmc7IHJlbWFpbmluZyAtPSBzdGQ6Om1pbihyZW1haW5pbmcsIHNpemUpKSB7Cisg
ICAgICAgIHNpemUgPSBzaXplU3RyZWFtLm5leHQoKTsKKyAgICAgICAgb2JqZWN0cy5wdXNoX2Jh
Y2soYWxsb2NhdGUocmFuZG9tQWxpZ25tZW50KCksIHNpemUpKTsKKyAgICB9CisgICAgCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaHVybkNvdW50OyArK2kpIHsKKyAgICAgICAgc3RkOjp2
ZWN0b3I8T2JqZWN0PiBvYmplY3RzVG9GcmVlOworICAgICAgICBmb3IgKHNpemVfdCByZW1haW5p
bmcgPSBjaHVyblNpemU7IHJlbWFpbmluZzsgcmVtYWluaW5nIC09IHN0ZDo6bWluKHJlbWFpbmlu
Zywgc2l6ZSkpIHsKKyAgICAgICAgICAgIHNpemUgPSBzaXplU3RyZWFtLm5leHQoKTsKKyAgICAg
ICAgICAgIE9iamVjdCBvYmplY3QgPSBhbGxvY2F0ZShyYW5kb21BbGlnbm1lbnQoKSwgc2l6ZSk7
CisKKyAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IHJhbmRvbSgpICUgb2JqZWN0cy5zaXplKCk7
CisgICAgICAgICAgICBvYmplY3RzVG9GcmVlLnB1c2hfYmFjayhvYmplY3RzW2luZGV4XSk7Cisg
ICAgICAgICAgICBvYmplY3RzW2luZGV4XSA9IG9iamVjdDsKKyAgICAgICAgfQorCisgICAgICAg
IGZvciAoYXV0byYgb2JqZWN0IDogb2JqZWN0c1RvRnJlZSkKKyAgICAgICAgICAgIGRlYWxsb2Nh
dGUob2JqZWN0KTsKKyAgICAgICAgCisgICAgICAgIG1ic2NhdmVuZ2UoKTsKKyAgICB9CisgICAg
CisgICAgZm9yIChhdXRvJiBvYmplY3QgOiBvYmplY3RzKQorICAgICAgICBtYmZyZWUob2JqZWN0
LnBvaW50ZXIsIG9iamVjdC5zaXplKTsKK30KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvTWFsbG9j
QmVuY2gvTWFsbG9jQmVuY2gvc3RyZXNzX2FsaWduZWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL3N0cmVzc19hbGlnbmVkLmgJKHJldmlz
aW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL01hbGxvY0JlbmNoL01hbGxvY0JlbmNoL3N0cmVz
c19hbGlnbmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIHN0cmVzc19hbGlnbmVk
X2gKKyNkZWZpbmUgc3RyZXNzX2FsaWduZWRfaAorCit2b2lkIGJlbmNobWFya19zdHJlc3NfYWxp
Z25lZChib29sIGlzUGFyYWxsZWwpOworCisjZW5kaWYgLy8gc3RyZXNzX2FsaWduZWRfaApJbmRl
eDogU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9j
L0NoYW5nZUxvZwkocmV2aXNpb24gMTc4ODQ2KQorKysgU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTUtMDEtMjEgIEdlb2ZmcmV5IEdh
cmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBibWFsbG9jOiBzdXBwb3J0IGFsaWdu
ZWQgYWxsb2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQwNzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBibWFsbG9jL0FsbG9jYXRvci5jcHA6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0
b3I6OmFsbG9jYXRlKTogTmV3IGZ1bmN0aW9uIGZvciBhbGlnbmVkIGFsbG9jYXRpb24uCisKKyAg
ICAgICAgU21hbGwgYW5kIG1lZGl1bSByZXF1ZXN0cyBqdXN0IGFsbG9jYXRlIGFuZCBmcmVlIHVu
dGlsIHRoZXkgZmluZCBhbgorICAgICAgICBhbGlnbmVkIHBvaW50ZXIuIFRoaXMgaXMgc2xpZ2h0
bHkgaW5lZmZpY2llbnQgaW4gdGhlIHdvcnN0IGNhc2UsIGJ1dAorICAgICAgICBzdGlsbCBjb25z
dGFudC10aW1lIHdpdGggbGl0dGxlLXRvLW5vIHNwYWNlIG92ZXJoZWFkLgorCisgICAgICAgIExh
cmdlIHJlcXVlc3RzIHVzZSBhIG5ldyBBUEkgdGhhdCByZXF1aXJlcyB0aGUgY2xpZW50IHRvIHNw
ZWNpZnkgYm90aAorICAgICAgICBpdHMgaWRlYWwgc2l6ZSBhbmQgYWxpZ25tZW50LCBhbmQgdGhl
IHdvcnN0LWNhc2Ugc2l6ZSB5b3Ugd291bGQgaGF2ZSB0bworICAgICAgICBhbGxvY2F0ZSBpbiBv
cmRlciB0byBwcm9kdWNlIHNvbWUgaW50ZXJpb3IgcG9pbnRlciBvZiB0aGUgcmVxdWVzdGVkIHNp
emUKKyAgICAgICAgYW5kIGFsaWdubWVudC4gV2UgcHV0IHRoZSBidXJkZW4gb2YgdGhpcyBjYWxj
dWxhdGlvbiBvbiB0aGUgY2xpZW50CisgICAgICAgIGJlY2F1c2UgaXQgc2ltcGxpZmllcyB0aGlu
Z3MgaWYgd2UgZ3VhcmFudGVlIHRoYXQgYWxsb2NhdGlvbiB3b24ndCBmYWlsLgorCisgICAgICAg
IFhMYXJnZSByZXF1ZXN0cyBhcmUgZWFzeTogd2UganVzdCBmb3J3YXJkIHRoZW0gdG8gdm1BbGxv
Y2F0ZSwgd2hpY2gKKyAgICAgICAgYWxyZWFkeSBzdXBwb3J0ZWQgYWxpZ25lZCByZXF1ZXN0cy4K
KworICAgICAgICAqIGJtYWxsb2MvQm91bmRhcnlUYWcuaDoKKyAgICAgICAgKiBibWFsbG9jL0Jv
dW5kYXJ5VGFnSW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6Qm91bmRhcnlUYWc6Om1lcmdl
TGVmdCk6CisgICAgICAgIChibWFsbG9jOjpCb3VuZGFyeVRhZzo6bWVyZ2VSaWdodCk6CisgICAg
ICAgIChibWFsbG9jOjpCb3VuZGFyeVRhZzo6bWVyZ2UpOgorICAgICAgICAoYm1hbGxvYzo6Qm91
bmRhcnlUYWc6OmRlYWxsb2NhdGUpOgorICAgICAgICAoYm1hbGxvYzo6Qm91bmRhcnlUYWc6OnNw
bGl0KToKKyAgICAgICAgKGJtYWxsb2M6OkJvdW5kYXJ5VGFnOjphbGxvY2F0ZSk6IE5vIGJlaGF2
aW9yIGNoYW5nZSBoZXJlLiBJIGp1c3QKKyAgICAgICAgcmVmYWN0b3JlZCB0aGUgaW50ZXJmYWNl
IHRvIHJlbW92ZSBzb21lIHJlZmVyZW5jZSBvdXQgcGFyYW1ldGVycyBpbgorICAgICAgICBvcmRl
ciB0byBjbGFyaWZ5IHdoYXQgY2hhbmdlcyBhbmQgd2hhdCBkb2Vzbid0LgorCisgICAgICAgICog
Ym1hbGxvYy9IZWFwLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlWExhcmdl
KTogQWRkZWQgYW4gYWxpZ25tZW50IEFQSS4KKworICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxs
b2NhdGVMYXJnZSk6CisgICAgICAgICogYm1hbGxvYy9IZWFwLmg6IEFkZGVkIGFuIGFsaWdubWVu
dCBBUEkuIEkgc3BsaXQgb3V0IGFsbG9jYXRlTGFyZ2UgaW50bworICAgICAgICBhIGZldyB2YXJp
YW50cywgc28gYWxpZ25lZCBhbmQgdW5hbGlnbmVkIGFsbG9jYXRpb24gY291bGQgc2hhcmUgc29t
ZSBjb2RlLgorCisgICAgICAgICogYm1hbGxvYy9TZWdyZWdhdGVkRnJlZUxpc3QuY3BwOgorICAg
ICAgICAoYm1hbGxvYzo6U2VncmVnYXRlZEZyZWVMaXN0Ojp0YWtlKToKKyAgICAgICAgKiBibWFs
bG9jL1NlZ3JlZ2F0ZWRGcmVlTGlzdC5oOiBDaGFuZ2VkIHRvIHVzZSBhIHNlcGFyYXRlLCBleHBs
aWNpdCBBUEkKKyAgICAgICAgZm9yIGFsaWduZWQgYWxsb2NhdGlvbi4gSXQgdHVybnMgb3V0IHRo
YXQgdGhlIGFsaWduZWQgcGF0aCBpcyBwcmV0dHkKKyAgICAgICAgZGlmZmVyZW50LCBzaW5jZSBp
dCBlbmRzIHVwIHNlYXJjaGluZyBmb3IgdHdvIHBvdGVudGlhbCB3YXlzIHRvIHNhdGlzZnkKKyAg
ICAgICAgYW4gYWxsb2NhdGlvbjogZWl0aGVyIGxhcmdlIGVub3VnaCBhbmQgYWxpZ25lZCwgb3Ig
bGFyZ2UgZW5vdWdoIHRvIHNwbGl0CisgICAgICAgIGludG8gc29tZXRoaW5nIG5vdCBhbGlnbmVk
IGFuZCBzb21ldGhpbmcgbGFyZ2UgZW5vdWdoIGFuZCBhbGlnbmVkLgorCisgICAgICAgICogYm1h
bGxvYy9WTUFsbG9jYXRlLmg6CisgICAgICAgIChibWFsbG9jOjp2bUFsbG9jYXRlKTogU3dpdGNo
ZWQgYWxpZ25tZW50IHRvIGNvbWUgYmVmb3JlIHNpemUgYmVjYXVzZQorICAgICAgICB0aGF0J3Mg
aG93IHRoZSBtZW1hbGlnbiBBUEkgc3BlY2lmaWVzIGl0LgorCisgICAgICAgICogYm1hbGxvYy9W
TUhlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6OlZNSGVhcDo6YWxsb2NhdGVMYXJnZVJhbmdlKTog
QWRkZWQgYW4gYWxpZ25tZW50IEFQSS4KKwogMjAxNS0wMS0yMCAgR2VvZmZyZXkgR2FyZW4gIDxn
Z2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIGJtYWxsb2M6IGEgbGl0dGxlIGJpdCBvZiBjbGVh
bnVwCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxNzg3
MjcpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDE0ICs1Miw0NSBAQCBBbGxvY2F0b3I6On5BbGxvY2F0b3IoKQogCiB2b2lkKiBB
bGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQogeworICAg
IEJBU1NFUlQoaXNQb3dlck9mVHdvKGFsaWdubWVudCkpOworCiAgICAgaWYgKCFtX2lzQm1hbGxv
Y0VuYWJsZWQpIHsKICAgICAgICAgdm9pZCogcmVzdWx0ID0gbnVsbHB0cjsKICAgICAgICAgcG9z
aXhfbWVtYWxpZ24oJnJlc3VsdCwgYWxpZ25tZW50LCBzaXplKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAgICAgCi0gICAgQkFTU0VSVChpc1Bvd2VyT2ZUd28oYWxpZ25tZW50KSk7
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKHNpemUgPD0gc21hbGxNYXggJiYgYWxpZ25t
ZW50IDw9IHNtYWxsTGluZVNpemUpIHsKKyAgICAgICAgc2l6ZV90IGFsaWdubWVudE1hc2sgPSBh
bGlnbm1lbnQgLSAxOworICAgICAgICB3aGlsZSAodm9pZCogcCA9IGFsbG9jYXRlKHNpemUpKSB7
CisgICAgICAgICAgICBpZiAoIXRlc3QocCwgYWxpZ25tZW50TWFzaykpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHA7CisgICAgICAgICAgICBtX2RlYWxsb2NhdG9yLmRlYWxsb2NhdGUocCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc2l6ZSA8PSBtZWRpdW1NYXggJiYgYWxpZ25tZW50
IDw9IG1lZGl1bUxpbmVTaXplKSB7CisgICAgICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCBzbWFs
bE1heCArIFNpemVzOjphbGlnbm1lbnQpOworICAgICAgICBzaXplX3QgYWxpZ25tZW50TWFzayA9
IGFsaWdubWVudCAtIDE7CisgICAgICAgIHdoaWxlICh2b2lkKiBwID0gYWxsb2NhdGUoc2l6ZSkp
IHsKKyAgICAgICAgICAgIGlmICghdGVzdChwLCBhbGlnbm1lbnRNYXNrKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcDsKKyAgICAgICAgICAgIG1fZGVhbGxvY2F0b3IuZGVhbGxvY2F0ZShwKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHNpemUgPSBzdGQ6Om1heChsYXJnZU1pbiwgcm91bmRV
cFRvTXVsdGlwbGVPZjxsYXJnZUFsaWdubWVudD4oc2l6ZSkpOworICAgIGFsaWdubWVudCA9IHJv
dW5kVXBUb011bHRpcGxlT2Y8bGFyZ2VBbGlnbm1lbnQ+KGFsaWdubWVudCk7CisgICAgc2l6ZV90
IHVuYWxpZ25lZFNpemUgPSBsYXJnZU1pbiArIGFsaWdubWVudCArIHNpemU7CisgICAgaWYgKHVu
YWxpZ25lZFNpemUgPD0gbGFyZ2VNYXggJiYgYWxpZ25tZW50IDw9IGxhcmdlQ2h1bmtTaXplIC8g
MikgeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+IGxvY2soUGVyUHJvY2Vz
czxIZWFwPjo6bXV0ZXgoKSk7CisgICAgICAgIHJldHVybiBQZXJQcm9jZXNzPEhlYXA+OjpnZXRG
YXN0Q2FzZSgpLT5hbGxvY2F0ZUxhcmdlKGxvY2ssIGFsaWdubWVudCwgc2l6ZSwgdW5hbGlnbmVk
U2l6ZSk7CisgICAgfQorCisgICAgc2l6ZSA9IHJvdW5kVXBUb011bHRpcGxlT2Y8eExhcmdlQWxp
Z25tZW50PihzaXplKTsKKyAgICBhbGlnbm1lbnQgPSBzdGQ6Om1heChzdXBlckNodW5rU2l6ZSwg
YWxpZ25tZW50KTsKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+IGxvY2soUGVyUHJv
Y2VzczxIZWFwPjo6bXV0ZXgoKSk7CisgICAgcmV0dXJuIFBlclByb2Nlc3M8SGVhcD46OmdldEZh
c3RDYXNlKCktPmFsbG9jYXRlWExhcmdlKGxvY2ssIGFsaWdubWVudCwgc2l6ZSk7CiB9CiAKIHZv
aWQqIEFsbG9jYXRvcjo6cmVhbGxvY2F0ZSh2b2lkKiBvYmplY3QsIHNpemVfdCBuZXdTaXplKQpJ
bmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Cb3VuZGFyeVRhZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQm91bmRhcnlUYWcuaAkocmV2aXNpb24gMTc4NzI3KQor
KysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Cb3VuZGFyeVRhZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw3ICs0MSw3IEBAIGNsYXNzIEJvdW5kYXJ5VGFnIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmFuZ2UgaW5pdChMYXJnZUNodW5rKik7CiAgICAgc3RhdGljIFJhbmdlIGRlYWxsb2NhdGUodm9p
ZCopOwotICAgIHN0YXRpYyB2b2lkIGFsbG9jYXRlKHNpemVfdCwgUmFuZ2UmLCBSYW5nZSYgbGVm
dG92ZXIsIGJvb2wmIGhhc1BoeXNpY2FsUGFnZXMpOworICAgIHN0YXRpYyB2b2lkIGFsbG9jYXRl
KGNvbnN0IFJhbmdlJiwgc2l6ZV90LCBSYW5nZSYgbGVmdG92ZXIsIGJvb2wmIGhhc1BoeXNpY2Fs
UGFnZXMpOwogICAgIHN0YXRpYyB1bnNpZ25lZCBjb21wYWN0QmVnaW4oY29uc3QgUmFuZ2UmKTsK
IAogICAgIGJvb2wgaXNGcmVlKCkgeyByZXR1cm4gbV9pc0ZyZWU7IH0KQEAgLTcyLDEwICs3Miwx
MCBAQCBwcml2YXRlOgogICAgIHN0YXRpY19hc3NlcnQoKDEgPDwgY29tcGFjdEJlZ2luQml0cykg
LSAxID49IGxhcmdlTWluIC8gbGFyZ2VBbGlnbm1lbnQsICJjb21wYWN0QmVnaW4gbXVzdCBiZSBl
bmNvZGFibGUgaW4gYSBCb3VuZGFyeVRhZy4iKTsKICAgICBzdGF0aWNfYXNzZXJ0KCgxIDw8IHNp
emVCaXRzKSAtIDEgPj0gbGFyZ2VNYXgsICJsYXJnZU1heCBtdXN0IGJlIGVuY29kYWJsZSBpbiBh
IEJvdW5kYXJ5VGFnLiIpOwogCi0gICAgc3RhdGljIHZvaWQgc3BsaXQoQmVnaW5UYWcqLCBzaXpl
X3QsIEVuZFRhZyomLCBSYW5nZSYsIFJhbmdlJiBsZWZ0b3Zlcik7Ci0gICAgc3RhdGljIHZvaWQg
bWVyZ2VMZWZ0KEVuZFRhZyomIHByZXYsIEJlZ2luVGFnKiYsIFJhbmdlJiwgYm9vbCYgaGFzUGh5
c2ljYWxQYWdlcyk7Ci0gICAgc3RhdGljIHZvaWQgbWVyZ2VSaWdodChFbmRUYWcqJiwgQmVnaW5U
YWcqJiBuZXh0LCBSYW5nZSYsIGJvb2wmIGhhc1BoeXNpY2FsUGFnZXMpOwotICAgIHN0YXRpYyB2
b2lkIG1lcmdlKEJlZ2luVGFnKiYsIEVuZFRhZyomLCBSYW5nZSYpOworICAgIHN0YXRpYyB2b2lk
IHNwbGl0KGNvbnN0IFJhbmdlJiwgc2l6ZV90LCBCZWdpblRhZyosIEVuZFRhZyomLCBSYW5nZSYg
bGVmdG92ZXIpOworICAgIHN0YXRpYyBSYW5nZSBtZXJnZUxlZnQoY29uc3QgUmFuZ2UmLCBCZWdp
blRhZyomLCBFbmRUYWcqIHByZXYsIGJvb2wmIGhhc1BoeXNpY2FsUGFnZXMpOworICAgIHN0YXRp
YyBSYW5nZSBtZXJnZVJpZ2h0KGNvbnN0IFJhbmdlJiwgRW5kVGFnKiYsIEJlZ2luVGFnKiBuZXh0
LCBib29sJiBoYXNQaHlzaWNhbFBhZ2VzKTsKKyAgICBzdGF0aWMgUmFuZ2UgbWVyZ2UoY29uc3Qg
UmFuZ2UmLCBCZWdpblRhZyomLCBFbmRUYWcqJik7CiAKICAgICBib29sIG1faXNGcmVlOiAxOwog
ICAgIGJvb2wgbV9pc0VuZDogMTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQm91bmRh
cnlUYWdJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Cb3Vu
ZGFyeVRhZ0lubGluZXMuaAkocmV2aXNpb24gMTc4NzI3KQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Cb3VuZGFyeVRhZ0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDU2ICsxMDUs
NTkgQEAgaW5saW5lIFJhbmdlIEJvdW5kYXJ5VGFnOjppbml0KExhcmdlQ2h1bgogICAgIHJldHVy
biByYW5nZTsKIH0KIAotaW5saW5lIHZvaWQgQm91bmRhcnlUYWc6Om1lcmdlTGVmdChFbmRUYWcq
JiBwcmV2LCBCZWdpblRhZyomIGJlZ2luVGFnLCBSYW5nZSYgcmFuZ2UsIGJvb2wmIGhhc1BoeXNp
Y2FsUGFnZXMpCitpbmxpbmUgUmFuZ2UgQm91bmRhcnlUYWc6Om1lcmdlTGVmdChjb25zdCBSYW5n
ZSYgcmFuZ2UsIEJlZ2luVGFnKiYgYmVnaW5UYWcsIEVuZFRhZyogcHJldiwgYm9vbCYgaGFzUGh5
c2ljYWxQYWdlcykKIHsKICAgICBSYW5nZSBsZWZ0KHJhbmdlLmJlZ2luKCkgLSBwcmV2LT5zaXpl
KCksIHByZXYtPnNpemUoKSk7CisgICAgUmFuZ2UgbWVyZ2VkKGxlZnQuYmVnaW4oKSwgbGVmdC5z
aXplKCkgKyByYW5nZS5zaXplKCkpOwogCiAgICAgaGFzUGh5c2ljYWxQYWdlcyAmPSBwcmV2LT5o
YXNQaHlzaWNhbFBhZ2VzKCk7CiAKLSAgICByYW5nZSA9IFJhbmdlKGxlZnQuYmVnaW4oKSwgbGVm
dC5zaXplKCkgKyByYW5nZS5zaXplKCkpOwotCiAgICAgcHJldi0+Y2xlYXIoKTsKICAgICBiZWdp
blRhZy0+Y2xlYXIoKTsKIAotICAgIGJlZ2luVGFnID0gTGFyZ2VDaHVuazo6YmVnaW5UYWcocmFu
Z2UuYmVnaW4oKSk7CisgICAgYmVnaW5UYWcgPSBMYXJnZUNodW5rOjpiZWdpblRhZyhtZXJnZWQu
YmVnaW4oKSk7CisgICAgcmV0dXJuIG1lcmdlZDsKIH0KIAotaW5saW5lIHZvaWQgQm91bmRhcnlU
YWc6Om1lcmdlUmlnaHQoRW5kVGFnKiYgZW5kVGFnLCBCZWdpblRhZyomIG5leHQsIFJhbmdlJiBy
YW5nZSwgYm9vbCYgaGFzUGh5c2ljYWxQYWdlcykKK2lubGluZSBSYW5nZSBCb3VuZGFyeVRhZzo6
bWVyZ2VSaWdodChjb25zdCBSYW5nZSYgcmFuZ2UsIEVuZFRhZyomIGVuZFRhZywgQmVnaW5UYWcq
IG5leHQsIGJvb2wmIGhhc1BoeXNpY2FsUGFnZXMpCiB7CiAgICAgUmFuZ2UgcmlnaHQocmFuZ2Uu
ZW5kKCksIG5leHQtPnNpemUoKSk7CisgICAgUmFuZ2UgbWVyZ2VkKHJhbmdlLmJlZ2luKCksIHJh
bmdlLnNpemUoKSArIHJpZ2h0LnNpemUoKSk7CiAKICAgICBoYXNQaHlzaWNhbFBhZ2VzICY9IG5l
eHQtPmhhc1BoeXNpY2FsUGFnZXMoKTsKIAotICAgIHJhbmdlID0gUmFuZ2UocmFuZ2UuYmVnaW4o
KSwgcmFuZ2Uuc2l6ZSgpICsgcmlnaHQuc2l6ZSgpKTsKLQogICAgIGVuZFRhZy0+Y2xlYXIoKTsK
ICAgICBuZXh0LT5jbGVhcigpOwogCi0gICAgZW5kVGFnID0gTGFyZ2VDaHVuazo6ZW5kVGFnKHJh
bmdlLmJlZ2luKCksIHJhbmdlLnNpemUoKSk7CisgICAgZW5kVGFnID0gTGFyZ2VDaHVuazo6ZW5k
VGFnKG1lcmdlZC5iZWdpbigpLCBtZXJnZWQuc2l6ZSgpKTsKKyAgICByZXR1cm4gbWVyZ2VkOwog
fQogCi1JTkxJTkUgdm9pZCBCb3VuZGFyeVRhZzo6bWVyZ2UoQmVnaW5UYWcqJiBiZWdpblRhZywg
RW5kVGFnKiYgZW5kVGFnLCBSYW5nZSYgcmFuZ2UpCitJTkxJTkUgUmFuZ2UgQm91bmRhcnlUYWc6
Om1lcmdlKGNvbnN0IFJhbmdlJiByYW5nZSwgQmVnaW5UYWcqJiBiZWdpblRhZywgRW5kVGFnKiYg
ZW5kVGFnKQogewogICAgIEVuZFRhZyogcHJldiA9IGJlZ2luVGFnLT5wcmV2KCk7CiAgICAgQmVn
aW5UYWcqIG5leHQgPSBlbmRUYWctPm5leHQoKTsKICAgICBib29sIGhhc1BoeXNpY2FsUGFnZXMg
PSBiZWdpblRhZy0+aGFzUGh5c2ljYWxQYWdlcygpOwogCiAgICAgdmFsaWRhdGUocHJldiwgcmFu
Z2UsIG5leHQpOworICAgIAorICAgIFJhbmdlIG1lcmdlZCA9IHJhbmdlOwogCiAgICAgaWYgKHBy
ZXYtPmlzRnJlZSgpKQotICAgICAgICBtZXJnZUxlZnQocHJldiwgYmVnaW5UYWcsIHJhbmdlLCBo
YXNQaHlzaWNhbFBhZ2VzKTsKKyAgICAgICAgbWVyZ2VkID0gbWVyZ2VMZWZ0KG1lcmdlZCwgYmVn
aW5UYWcsIHByZXYsIGhhc1BoeXNpY2FsUGFnZXMpOwogCiAgICAgaWYgKG5leHQtPmlzRnJlZSgp
KQotICAgICAgICBtZXJnZVJpZ2h0KGVuZFRhZywgbmV4dCwgcmFuZ2UsIGhhc1BoeXNpY2FsUGFn
ZXMpOworICAgICAgICBtZXJnZWQgPSBtZXJnZVJpZ2h0KG1lcmdlZCwgZW5kVGFnLCBuZXh0LCBo
YXNQaHlzaWNhbFBhZ2VzKTsKIAotICAgIGJlZ2luVGFnLT5zZXRSYW5nZShyYW5nZSk7CisgICAg
YmVnaW5UYWctPnNldFJhbmdlKG1lcmdlZCk7CiAgICAgYmVnaW5UYWctPnNldEZyZWUodHJ1ZSk7
CiAgICAgYmVnaW5UYWctPnNldEhhc1BoeXNpY2FsUGFnZXMoaGFzUGh5c2ljYWxQYWdlcyk7CiAK
ICAgICBpZiAoZW5kVGFnICE9IHN0YXRpY19jYXN0PEJvdW5kYXJ5VGFnKj4oYmVnaW5UYWcpKQog
ICAgICAgICAqZW5kVGFnID0gKmJlZ2luVGFnOwogCi0gICAgdmFsaWRhdGUoYmVnaW5UYWctPnBy
ZXYoKSwgcmFuZ2UsIGVuZFRhZy0+bmV4dCgpKTsKKyAgICB2YWxpZGF0ZShiZWdpblRhZy0+cHJl
digpLCBtZXJnZWQsIGVuZFRhZy0+bmV4dCgpKTsKKyAgICByZXR1cm4gbWVyZ2VkOwogfQogCiBp
bmxpbmUgUmFuZ2UgQm91bmRhcnlUYWc6OmRlYWxsb2NhdGUodm9pZCogb2JqZWN0KQpAQCAtMTY0
LDE5ICsxNjcsMTcgQEAgaW5saW5lIFJhbmdlIEJvdW5kYXJ5VGFnOjpkZWFsbG9jYXRlKHZvaQog
CiAgICAgUmFuZ2UgcmFuZ2Uob2JqZWN0LCBiZWdpblRhZy0+c2l6ZSgpKTsKICAgICBFbmRUYWcq
IGVuZFRhZyA9IExhcmdlQ2h1bms6OmVuZFRhZyhyYW5nZS5iZWdpbigpLCByYW5nZS5zaXplKCkp
OwotICAgIG1lcmdlKGJlZ2luVGFnLCBlbmRUYWcsIHJhbmdlKTsKLSAgICAKLSAgICByZXR1cm4g
cmFuZ2U7CisgICAgcmV0dXJuIG1lcmdlKHJhbmdlLCBiZWdpblRhZywgZW5kVGFnKTsKIH0KIAot
SU5MSU5FIHZvaWQgQm91bmRhcnlUYWc6OnNwbGl0KEJlZ2luVGFnKiBiZWdpblRhZywgc2l6ZV90
IHNpemUsIEVuZFRhZyomIGVuZFRhZywgUmFuZ2UmIHJhbmdlLCBSYW5nZSYgbGVmdG92ZXIpCitJ
TkxJTkUgdm9pZCBCb3VuZGFyeVRhZzo6c3BsaXQoY29uc3QgUmFuZ2UmIHJhbmdlLCBzaXplX3Qg
c2l6ZSwgQmVnaW5UYWcqIGJlZ2luVGFnLCBFbmRUYWcqJiBlbmRUYWcsIFJhbmdlJiBsZWZ0b3Zl
cikKIHsKICAgICBsZWZ0b3ZlciA9IFJhbmdlKHJhbmdlLmJlZ2luKCkgKyBzaXplLCByYW5nZS5z
aXplKCkgLSBzaXplKTsKLSAgICByYW5nZSA9IFJhbmdlKHJhbmdlLmJlZ2luKCksIHNpemUpOwor
ICAgIFJhbmdlIHNwbGl0KHJhbmdlLmJlZ2luKCksIHNpemUpOwogCi0gICAgYmVnaW5UYWctPnNl
dFJhbmdlKHJhbmdlKTsKKyAgICBiZWdpblRhZy0+c2V0UmFuZ2Uoc3BsaXQpOwogCi0gICAgRW5k
VGFnKiBzcGxpdEVuZFRhZyA9IExhcmdlQ2h1bms6OmVuZFRhZyhyYW5nZS5iZWdpbigpLCBzaXpl
KTsKKyAgICBFbmRUYWcqIHNwbGl0RW5kVGFnID0gTGFyZ2VDaHVuazo6ZW5kVGFnKHNwbGl0LmJl
Z2luKCksIHNpemUpOwogICAgIGlmIChzcGxpdEVuZFRhZyAhPSBzdGF0aWNfY2FzdDxCb3VuZGFy
eVRhZyo+KGJlZ2luVGFnKSkKICAgICAgICAgKnNwbGl0RW5kVGFnID0gKmJlZ2luVGFnOwogCkBA
IC0xODgsMTMgKzE4OSwxMyBAQCBJTkxJTkUgdm9pZCBCb3VuZGFyeVRhZzo6c3BsaXQoQmVnaW5U
YWcqCiAgICAgaWYgKGxlZnRvdmVyQmVnaW5UYWcgIT0gc3RhdGljX2Nhc3Q8Qm91bmRhcnlUYWcq
PihlbmRUYWcpKQogICAgICAgICAqZW5kVGFnID0gKmxlZnRvdmVyQmVnaW5UYWc7CiAKLSAgICB2
YWxpZGF0ZShiZWdpblRhZy0+cHJldigpLCByYW5nZSwgbGVmdG92ZXJCZWdpblRhZyk7CisgICAg
dmFsaWRhdGUoYmVnaW5UYWctPnByZXYoKSwgc3BsaXQsIGxlZnRvdmVyQmVnaW5UYWcpOwogICAg
IHZhbGlkYXRlKGxlZnRvdmVyQmVnaW5UYWctPnByZXYoKSwgbGVmdG92ZXIsIGVuZFRhZy0+bmV4
dCgpKTsKIAogICAgIGVuZFRhZyA9IHNwbGl0RW5kVGFnOwogfQogCi1JTkxJTkUgdm9pZCBCb3Vu
ZGFyeVRhZzo6YWxsb2NhdGUoc2l6ZV90IHNpemUsIFJhbmdlJiByYW5nZSwgUmFuZ2UmIGxlZnRv
dmVyLCBib29sJiBoYXNQaHlzaWNhbFBhZ2VzKQorSU5MSU5FIHZvaWQgQm91bmRhcnlUYWc6OmFs
bG9jYXRlKGNvbnN0IFJhbmdlJiByYW5nZSwgc2l6ZV90IHNpemUsIFJhbmdlJiBsZWZ0b3Zlciwg
Ym9vbCYgaGFzUGh5c2ljYWxQYWdlcykKIHsKICAgICBCZWdpblRhZyogYmVnaW5UYWcgPSBMYXJn
ZUNodW5rOjpiZWdpblRhZyhyYW5nZS5iZWdpbigpKTsKICAgICBFbmRUYWcqIGVuZFRhZyA9IExh
cmdlQ2h1bms6OmVuZFRhZyhyYW5nZS5iZWdpbigpLCByYW5nZS5zaXplKCkpOwpAQCAtMjAzLDcg
KzIwNCw3IEBAIElOTElORSB2b2lkIEJvdW5kYXJ5VGFnOjphbGxvY2F0ZShzaXplX3QKICAgICB2
YWxpZGF0ZShiZWdpblRhZy0+cHJldigpLCByYW5nZSwgZW5kVGFnLT5uZXh0KCkpOwogCiAgICAg
aWYgKHJhbmdlLnNpemUoKSAtIHNpemUgPiBsYXJnZU1pbikKLSAgICAgICAgc3BsaXQoYmVnaW5U
YWcsIHNpemUsIGVuZFRhZywgcmFuZ2UsIGxlZnRvdmVyKTsKKyAgICAgICAgc3BsaXQocmFuZ2Us
IHNpemUsIGJlZ2luVGFnLCBlbmRUYWcsIGxlZnRvdmVyKTsKIAogICAgIGhhc1BoeXNpY2FsUGFn
ZXMgPSBiZWdpblRhZy0+aGFzUGh5c2ljYWxQYWdlcygpOwogCkluZGV4OiBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SGVhcC5jcHAJKHJldmlzaW9uIDE3ODcyNykKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVh
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxOSwxNSArMzE5LDI0IEBAIHZvaWQgSGVhcDo6ZGVh
bGxvY2F0ZU1lZGl1bUxpbmUoc3RkOjpsb2MKICAgICB9CiB9CiAKLXZvaWQqIEhlYXA6OmFsbG9j
YXRlWExhcmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3Qgc2l6ZSkKK3Zv
aWQqIEhlYXA6OmFsbG9jYXRlWExhcmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBz
aXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKIHsKKyAgICBCQVNTRVJUKGlzUG93ZXJPZlR3
byhhbGlnbm1lbnQpKTsKKyAgICBCQVNTRVJUKGFsaWdubWVudCA+PSB4TGFyZ2VBbGlnbm1lbnQp
OworICAgIEJBU1NFUlQoc2l6ZSA9PSByb3VuZFVwVG9NdWx0aXBsZU9mPHhMYXJnZUFsaWdubWVu
dD4oc2l6ZSkpOworCiAgICAgbV9pc0FsbG9jYXRpbmdQYWdlcyA9IHRydWU7CiAKLSAgICB2b2lk
KiByZXN1bHQgPSB2bUFsbG9jYXRlKHNpemUsIHN1cGVyQ2h1bmtTaXplKTsKKyAgICB2b2lkKiBy
ZXN1bHQgPSB2bUFsbG9jYXRlKGFsaWdubWVudCwgc2l6ZSk7CiAgICAgbV94TGFyZ2VSYW5nZXMu
cHVzaChSYW5nZShyZXN1bHQsIHNpemUpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lk
KiBIZWFwOjphbGxvY2F0ZVhMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2Nr
LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gYWxsb2NhdGVYTGFyZ2UobG9jaywgc3VwZXJD
aHVua1NpemUsIHNpemUpOworfQorCiBSYW5nZSBIZWFwOjpmaW5kWExhcmdlKHN0ZDo6bG9ja19n
dWFyZDxTdGF0aWNNdXRleD4mLCB2b2lkKiBvYmplY3QpCiB7CiAgICAgZm9yIChhdXRvJiByYW5n
ZSA6IG1feExhcmdlUmFuZ2VzKSB7CkBAIC0zNTUsMjggKzM2NCw3MyBAQCB2b2lkIEhlYXA6OmRl
YWxsb2NhdGVYTGFyZ2Uoc3RkOjp1bmlxdWVfCiAgICAgfQogfQogCi12b2lkKiBIZWFwOjphbGxv
Y2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3Qgc2l6ZSkKK3Zv
aWQgSGVhcDo6YWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgY29u
c3QgUmFuZ2UmIHJhbmdlLCBzaXplX3Qgc2l6ZSwgUmFuZ2UmIGxlZnRvdmVyKQoreworICAgIGJv
b2wgaGFzUGh5c2ljYWxQYWdlczsKKyAgICBCb3VuZGFyeVRhZzo6YWxsb2NhdGUocmFuZ2UsIHNp
emUsIGxlZnRvdmVyLCBoYXNQaHlzaWNhbFBhZ2VzKTsKKworICAgIGlmICghaGFzUGh5c2ljYWxQ
YWdlcykKKyAgICAgICAgdm1BbGxvY2F0ZVBoeXNpY2FsUGFnZXNTbG9wcHkocmFuZ2UuYmVnaW4o
KSwgcmFuZ2Uuc2l6ZSgpKTsKK30KKwordm9pZCogSGVhcDo6YWxsb2NhdGVMYXJnZShzdGQ6Omxv
Y2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBjb25zdCBSYW5nZSYgcmFuZ2UsIHNpemVfdCBz
aXplKQoreworICAgIFJhbmdlIGxlZnRvdmVyOworICAgIGFsbG9jYXRlTGFyZ2UobG9jaywgcmFu
Z2UsIHNpemUsIGxlZnRvdmVyKTsKKworICAgIGlmICghIWxlZnRvdmVyKQorICAgICAgICBtX2xh
cmdlUmFuZ2VzLmluc2VydChsZWZ0b3Zlcik7CisgICAgCisgICAgcmV0dXJuIHJhbmdlLmJlZ2lu
KCk7Cit9CisKK3ZvaWQqIEhlYXA6OmFsbG9jYXRlTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRp
Y011dGV4PiYgbG9jaywgc2l6ZV90IHNpemUpCiB7CiAgICAgQkFTU0VSVChzaXplIDw9IGxhcmdl
TWF4KTsKICAgICBCQVNTRVJUKHNpemUgPj0gbGFyZ2VNaW4pOworICAgIEJBU1NFUlQoc2l6ZSA9
PSByb3VuZFVwVG9NdWx0aXBsZU9mPGxhcmdlQWxpZ25tZW50PihzaXplKSk7CiAgICAgCiAgICAg
bV9pc0FsbG9jYXRpbmdQYWdlcyA9IHRydWU7CiAKICAgICBSYW5nZSByYW5nZSA9IG1fbGFyZ2VS
YW5nZXMudGFrZShzaXplKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByYW5nZSA9IG1fdm1I
ZWFwLmFsbG9jYXRlTGFyZ2VSYW5nZShzaXplKTsKLSAgICAKLSAgICBSYW5nZSBsZWZ0b3ZlcjsK
LSAgICBib29sIGhhc1BoeXNpY2FsUGFnZXM7Ci0gICAgQm91bmRhcnlUYWc6OmFsbG9jYXRlKHNp
emUsIHJhbmdlLCBsZWZ0b3ZlciwgaGFzUGh5c2ljYWxQYWdlcyk7CiAKLSAgICBpZiAoISFsZWZ0
b3ZlcikKLSAgICAgICAgbV9sYXJnZVJhbmdlcy5pbnNlcnQobGVmdG92ZXIpOwotICAgIAotICAg
IGlmICghaGFzUGh5c2ljYWxQYWdlcykKLSAgICAgICAgdm1BbGxvY2F0ZVBoeXNpY2FsUGFnZXNT
bG9wcHkocmFuZ2UuYmVnaW4oKSwgcmFuZ2Uuc2l6ZSgpKTsKKyAgICByZXR1cm4gYWxsb2NhdGVM
YXJnZShsb2NrLCByYW5nZSwgc2l6ZSk7Cit9CiAKLSAgICByZXR1cm4gcmFuZ2UuYmVnaW4oKTsK
K3ZvaWQqIEhlYXA6OmFsbG9jYXRlTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYg
bG9jaywgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUsIHNpemVfdCB1bmFsaWduZWRTaXpl
KQoreworICAgIEJBU1NFUlQoc2l6ZSA8PSBsYXJnZU1heCk7CisgICAgQkFTU0VSVChzaXplID49
IGxhcmdlTWluKTsKKyAgICBCQVNTRVJUKHNpemUgPT0gcm91bmRVcFRvTXVsdGlwbGVPZjxsYXJn
ZUFsaWdubWVudD4oc2l6ZSkpOworICAgIEJBU1NFUlQodW5hbGlnbmVkU2l6ZSA8PSBsYXJnZU1h
eCk7CisgICAgQkFTU0VSVCh1bmFsaWduZWRTaXplID49IGxhcmdlTWluKTsKKyAgICBCQVNTRVJU
KHVuYWxpZ25lZFNpemUgPT0gcm91bmRVcFRvTXVsdGlwbGVPZjxsYXJnZUFsaWdubWVudD4odW5h
bGlnbmVkU2l6ZSkpOworICAgIEJBU1NFUlQoYWxpZ25tZW50IDw9IGxhcmdlQ2h1bmtTaXplIC8g
Mik7CisgICAgQkFTU0VSVChhbGlnbm1lbnQgPj0gbGFyZ2VBbGlnbm1lbnQpOworICAgIEJBU1NF
UlQoaXNQb3dlck9mVHdvKGFsaWdubWVudCkpOworCisgICAgbV9pc0FsbG9jYXRpbmdQYWdlcyA9
IHRydWU7CisKKyAgICBSYW5nZSByYW5nZSA9IG1fbGFyZ2VSYW5nZXMudGFrZShhbGlnbm1lbnQs
IHNpemUsIHVuYWxpZ25lZFNpemUpOworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJhbmdlID0g
bV92bUhlYXAuYWxsb2NhdGVMYXJnZVJhbmdlKGFsaWdubWVudCwgc2l6ZSwgdW5hbGlnbmVkU2l6
ZSk7CisKKyAgICBzaXplX3QgYWxpZ25tZW50TWFzayA9IGFsaWdubWVudCAtIDE7CisgICAgaWYg
KHRlc3QocmFuZ2UuYmVnaW4oKSwgYWxpZ25tZW50TWFzaykpIHsKKyAgICAgICAgLy8gQmVjYXVz
ZSB3ZSBhbGxvY2F0ZSBsZWZ0LXRvLXJpZ2h0LCB3ZSBtdXN0IGV4cGxpY2l0bHkgYWxsb2NhdGUg
dGhlCisgICAgICAgIC8vIHVuYWxpZ25lZCBzcGFjZSBvbiB0aGUgbGVmdCBpbiBvcmRlciB0byBi
cmVhayBvZmYgdGhlIGFsaWduZWQgc3BhY2UKKyAgICAgICAgLy8gd2Ugd2FudCBpbiB0aGUgbWlk
ZGxlLgorICAgICAgICBSYW5nZSBhbGlnbmVkOworICAgICAgICBzaXplX3QgdW5hbGlnbmVkU2l6
ZSA9IHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25tZW50LCByYW5nZS5iZWdpbigpICsgbGFyZ2VN
aW4pIC0gcmFuZ2UuYmVnaW4oKTsKKyAgICAgICAgYWxsb2NhdGVMYXJnZShsb2NrLCByYW5nZSwg
dW5hbGlnbmVkU2l6ZSwgYWxpZ25lZCk7CisgICAgICAgIGFsbG9jYXRlTGFyZ2UobG9jaywgYWxp
Z25lZCwgc2l6ZSk7CisgICAgICAgIGRlYWxsb2NhdGVMYXJnZShsb2NrLCByYW5nZS5iZWdpbigp
KTsKKyAgICAgICAgcmV0dXJuIGFsaWduZWQuYmVnaW4oKTsKKyAgICB9CisKKyAgICByZXR1cm4g
YWxsb2NhdGVMYXJnZShsb2NrLCByYW5nZSwgc2l6ZSk7CiB9CiAKIHZvaWQgSGVhcDo6ZGVhbGxv
Y2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCB2b2lkKiBvYmplY3QpCklu
ZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0hlYXAuaAkocmV2aXNpb24gMTc4NzI3KQorKysgU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDkgKzYwLDExIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlcmVmTWVkaXVtTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+
JiwgTWVkaXVtTGluZSopOwogCiAgICAgdm9pZCogYWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3Vh
cmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90KTsKKyAgICB2b2lkKiBhbGxvY2F0ZUxhcmdlKHN0ZDo6
bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3QsIHNpemVf
dCB1bmFsaWduZWRTaXplKTsKICAgICB2b2lkIGRlYWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3Vh
cmQ8U3RhdGljTXV0ZXg+Jiwgdm9pZCopOwogCiAgICAgdm9pZCogYWxsb2NhdGVYTGFyZ2Uoc3Rk
Ojpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHNpemVfdCk7CisgICAgdm9pZCogYWxsb2NhdGVY
TGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHNpemVfdCBhbGlnbm1lbnQsIHNp
emVfdCk7CiAgICAgUmFuZ2UgZmluZFhMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+
Jiwgdm9pZCopOwogICAgIHZvaWQgZGVhbGxvY2F0ZVhMYXJnZShzdGQ6OnVuaXF1ZV9sb2NrPFN0
YXRpY011dGV4PiYsIHZvaWQqKTsKIApAQCAtNzksNyArODEsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGVhbGxvY2F0ZVNtYWxsTGluZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgU21h
bGxMaW5lKik7CiAgICAgdm9pZCBkZWFsbG9jYXRlTWVkaXVtTGluZShzdGQ6OmxvY2tfZ3VhcmQ8
U3RhdGljTXV0ZXg+JiwgTWVkaXVtTGluZSopOwogCi0gICAgdm9pZCogYWxsb2NhdGVMYXJnZShS
YW5nZSwgc2l6ZV90KTsKKyAgICB2b2lkKiBhbGxvY2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyZDxT
dGF0aWNNdXRleD4mLCBjb25zdCBSYW5nZSYsIHNpemVfdCk7CisgICAgdm9pZCBhbGxvY2F0ZUxh
cmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBjb25zdCBSYW5nZSYsIHNpemVfdCwg
UmFuZ2UmIGxlZnRvdmVyKTsKICAgICBSYW5nZSBhbGxvY2F0ZUxhcmdlQ2h1bmsoKTsKIAogICAg
IHZvaWQgc3BsaXRMYXJnZShCZWdpblRhZyosIHNpemVfdCwgRW5kVGFnKiYsIFJhbmdlJik7Cklu
ZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NlZ3JlZ2F0ZWRGcmVlTGlzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TZWdyZWdhdGVkRnJlZUxpc3QuY3BwCShy
ZXZpc2lvbiAxNzg3MjcpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NlZ3JlZ2F0ZWRGcmVl
TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDEwICs4MSwyMiBAQCBSYW5nZSBTZWdyZWdh
dGVkRnJlZUxpc3Q6OnRha2VHcmVlZHkoTGlzCiAgICAgcmV0dXJuIFJhbmdlKCk7CiB9CiAKLVJh
bmdlIFNlZ3JlZ2F0ZWRGcmVlTGlzdDo6dGFrZShzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVu
dE1hc2spCitSYW5nZSBTZWdyZWdhdGVkRnJlZUxpc3Q6OnRha2Uoc2l6ZV90IHNpemUpCiB7CiAg
ICAgZm9yIChhdXRvKiBsaXN0ID0gJnNlbGVjdChzaXplKTsgbGlzdCAhPSBtX2xpc3RzLmVuZCgp
OyArK2xpc3QpIHsKLSAgICAgICAgUmFuZ2UgcmFuZ2UgPSB0YWtlKCpsaXN0LCBzaXplLCBhbGln
bm1lbnRNYXNrKTsKKyAgICAgICAgUmFuZ2UgcmFuZ2UgPSB0YWtlKCpsaXN0LCBzaXplKTsKKyAg
ICAgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHJldHVy
biByYW5nZTsKKyAgICB9CisgICAgcmV0dXJuIFJhbmdlKCk7Cit9CisKK1JhbmdlIFNlZ3JlZ2F0
ZWRGcmVlTGlzdDo6dGFrZShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IHVu
YWxpZ25lZFNpemUpCit7CisgICAgZm9yIChhdXRvKiBsaXN0ID0gJnNlbGVjdChzaXplKTsgbGlz
dCAhPSBtX2xpc3RzLmVuZCgpOyArK2xpc3QpIHsKKyAgICAgICAgUmFuZ2UgcmFuZ2UgPSB0YWtl
KCpsaXN0LCBhbGlnbm1lbnQsIHNpemUsIHVuYWxpZ25lZFNpemUpOwogICAgICAgICBpZiAoIXJh
bmdlKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTEwNCw3ICsxMTYsNyBAQCBJTkxJTkUg
YXV0byBTZWdyZWdhdGVkRnJlZUxpc3Q6OnNlbGVjdChzCiAgICAgcmV0dXJuIG1fbGlzdHNbcmVz
dWx0XTsKIH0KIAotSU5MSU5FIFJhbmdlIFNlZ3JlZ2F0ZWRGcmVlTGlzdDo6dGFrZShMaXN0JiBs
aXN0LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudE1hc2spCitJTkxJTkUgUmFuZ2UgU2Vn
cmVnYXRlZEZyZWVMaXN0Ojp0YWtlKExpc3QmIGxpc3QsIHNpemVfdCBzaXplKQogewogICAgIFJh
bmdlIGZpcnN0OwogICAgIHNpemVfdCBlbmQgPSBsaXN0LnNpemUoKSA+IHNlZ3JlZ2F0ZWRGcmVl
TGlzdFNlYXJjaERlcHRoID8gbGlzdC5zaXplKCkgLSBzZWdyZWdhdGVkRnJlZUxpc3RTZWFyY2hE
ZXB0aCA6IDA7CkBAIC0xMjIsNyArMTM0LDM3IEBAIElOTElORSBSYW5nZSBTZWdyZWdhdGVkRnJl
ZUxpc3Q6OnRha2UoTGkKICAgICAgICAgaWYgKHJhbmdlLnNpemUoKSA8IHNpemUpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAodGVzdChyYW5nZS5iZWdpbigpLCBhbGlnbm1l
bnRNYXNrKSkKKyAgICAgICAgaWYgKCEhZmlyc3QgJiYgZmlyc3QgPCByYW5nZSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIGZpcnN0ID0gcmFuZ2U7CisgICAgfQorICAgIAorICAg
IHJldHVybiBmaXJzdDsKK30KKworSU5MSU5FIFJhbmdlIFNlZ3JlZ2F0ZWRGcmVlTGlzdDo6dGFr
ZShMaXN0JiBsaXN0LCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwgc2l6ZV90IHVuYWxp
Z25lZFNpemUpCit7CisgICAgQkFTU0VSVChpc1Bvd2VyT2ZUd28oYWxpZ25tZW50KSk7CisgICAg
c2l6ZV90IGFsaWdubWVudE1hc2sgPSBhbGlnbm1lbnQgLSAxOworCisgICAgUmFuZ2UgZmlyc3Q7
CisgICAgc2l6ZV90IGVuZCA9IGxpc3Quc2l6ZSgpID4gc2VncmVnYXRlZEZyZWVMaXN0U2VhcmNo
RGVwdGggPyBsaXN0LnNpemUoKSAtIHNlZ3JlZ2F0ZWRGcmVlTGlzdFNlYXJjaERlcHRoIDogMDsK
KyAgICBmb3IgKHNpemVfdCBpID0gbGlzdC5zaXplKCk7IGktLSA+IGVuZDsgKSB7CisgICAgICAg
IFJhbmdlIHJhbmdlID0gbGlzdFtpXTsKKworICAgICAgICAvLyBXZSBkb24ndCBlYWdlcmx5IHJl
bW92ZSBpdGVtcyB3aGVuIHdlIG1lcmdlIGFuZC9vciBzcGxpdCByYW5nZXMsIHNvCisgICAgICAg
IC8vIHdlIG5lZWQgdG8gdmFsaWRhdGUgZWFjaCBmcmVlIGxpc3QgZW50cnkgYmVmb3JlIHVzaW5n
IGl0LgorICAgICAgICBCZWdpblRhZyogYmVnaW5UYWcgPSBMYXJnZUNodW5rOjpiZWdpblRhZyhy
YW5nZS5iZWdpbigpKTsKKyAgICAgICAgaWYgKCFiZWdpblRhZy0+aXNJbkZyZWVMaXN0KHJhbmdl
KSkgeworICAgICAgICAgICAgbGlzdC5wb3AoaSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChyYW5nZS5zaXplKCkgPCBzaXplKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgaWYgKHRlc3QocmFuZ2UuYmVnaW4oKSwgYWxpZ25tZW50TWFz
aykgJiYgcmFuZ2Uuc2l6ZSgpIDwgdW5hbGlnbmVkU2l6ZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGlmICghIWZpcnN0ICYmIGZpcnN0IDwgcmFuZ2UpCkluZGV4OiBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL1NlZ3JlZ2F0ZWRGcmVlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvU2VncmVnYXRlZEZyZWVMaXN0LmgJKHJldmlzaW9uIDE3ODcyNykK
KysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2VncmVnYXRlZEZyZWVMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDEyICszOCwxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluc2VydChjb25z
dCBSYW5nZSYpOwogCi0gICAgLy8gUmV0dXJucyBhIHJlYXNvbmFibGUgZml0IGZvciB0aGUgcHJv
dmlkZWQgc2l6ZSBhbmQgb3B0aW9uYWwgYWxpZ25tZW50Ci0gICAgLy8gbWFzaywgb3IgUmFuZ2Uo
KSBpZiBubyBmaXQgaXMgZm91bmQuIE1heSByZXR1cm4gUmFuZ2UoKSBzcHVyaW91c2x5IGlmCi0g
ICAgLy8gc2VhcmNoaW5nIHRha2VzIHRvbyBsb25nLiBJbmNyZW1lbnRhbGx5IHJlbW92ZXMgc3Rh
bGUgaXRlbXMgZnJvbSB0aGUKLSAgICAvLyBmcmVlIGxpc3Qgd2hpbGUgc2VhcmNoaW5nLiBEb2Vz
IG5vdCBlYWdlcmx5IHJlbW92ZSB0aGUgcmV0dXJuZWQgcmFuZ2UKLSAgICAvLyBmcm9tIHRoZSBm
cmVlIGxpc3QuCi0gICAgUmFuZ2UgdGFrZShzaXplX3QsIHNpemVfdCBhbGlnbm1lbnRNYXNrID0g
MCk7CisgICAgLy8gUmV0dXJucyBhIHJlYXNvbmFibGUgZml0IGZvciB0aGUgcHJvdmlkZWQgc2l6
ZSwgb3IgUmFuZ2UoKSBpZiBubyBmaXQKKyAgICAvLyBpcyBmb3VuZC4gTWF5IHJldHVybiBSYW5n
ZSgpIHNwdXJpb3VzbHkgaWYgc2VhcmNoaW5nIHRha2VzIHRvbyBsb25nLgorICAgIC8vIEluY3Jl
bWVudGFsbHkgcmVtb3ZlcyBzdGFsZSBpdGVtcyBmcm9tIHRoZSBmcmVlIGxpc3Qgd2hpbGUgc2Vh
cmNoaW5nLgorICAgIC8vIERvZXMgbm90IGVhZ2VybHkgcmVtb3ZlIHRoZSByZXR1cm5lZCByYW5n
ZSBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgUmFuZ2UgdGFrZShzaXplX3QpOworCisgICAgLy8g
UmV0dXJucyBhIHJlYXNvbmFibGUgZml0IGZvciB0aGUgcHJvdmlkZWQgYWxpZ25tZW50IGFuZCBz
aXplLCBvcgorICAgIC8vIGEgcmVhc29uYWJsZSBmaXQgZm9yIHRoZSBwcm92aWRlZCB1bmFsaWdu
ZWQgc2l6ZSwgb3IgUmFuZ2UoKSBpZiBubyBmaXQKKyAgICAvLyBpcyBmb3VuZC4gTWF5IHJldHVy
biBSYW5nZSgpIHNwdXJpb3VzbHkgaWYgc2VhcmNoaW5nIHRha2VzIHRvbyBsb25nLgorICAgIC8v
IEluY3JlbWVudGFsbHkgcmVtb3ZlcyBzdGFsZSBpdGVtcyBmcm9tIHRoZSBmcmVlIGxpc3Qgd2hp
bGUgc2VhcmNoaW5nLgorICAgIC8vIERvZXMgbm90IGVhZ2VybHkgcmVtb3ZlIHRoZSByZXR1cm5l
ZCByYW5nZSBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgUmFuZ2UgdGFrZShzaXplX3QgYWxpZ25t
ZW50LCBzaXplX3QsIHNpemVfdCB1bmFsaWduZWRTaXplKTsKIAogICAgIC8vIFJldHVybnMgYW4g
dW5yZWFzb25hYmxlIGZpdCBmb3IgdGhlIHByb3ZpZGVkIHNpemUsIG9yIFJhbmdlKCkgaWYgbm8g
Zml0CiAgICAgLy8gaXMgZm91bmQuIE5ldmVyIHJldHVybnMgUmFuZ2UoKSBzcHVyaW91c2x5LgpA
QCAtNTUsNyArNjEsOCBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgVmVjdG9yPFJhbmdlPiBMaXN0
OwogCiAgICAgTGlzdCYgc2VsZWN0KHNpemVfdCk7Ci0gICAgUmFuZ2UgdGFrZShMaXN0Jiwgc2l6
ZV90LCBzaXplX3QgYWxpZ25tZW50TWFzayk7CisgICAgUmFuZ2UgdGFrZShMaXN0Jiwgc2l6ZV90
KTsKKyAgICBSYW5nZSB0YWtlKExpc3QmLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3QsIHNpemVf
dCB1bmFsaWduZWRTaXplKTsKICAgICBSYW5nZSB0YWtlR3JlZWR5KExpc3QmLCBzaXplX3QpOwog
CiAgICAgc3RkOjphcnJheTxMaXN0LCAxOT4gbV9saXN0czsKSW5kZXg6IFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvVk1BbGxvY2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvVk1BbGxvY2F0ZS5oCShyZXZpc2lvbiAxNzg3MjcpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1ZNQWxsb2NhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBpbmxpbmUg
dm9pZCB2bURlYWxsb2NhdGUodm9pZCogcCwgc2l6ZV90CiAvLyBBbGxvY2F0ZXMgdm1TaXplIGJ5
dGVzIGF0IGEgc3BlY2lmaWVkIHBvd2VyLW9mLXR3byBhbGlnbm1lbnQuCiAvLyBVc2UgdGhpcyBm
dW5jdGlvbiB0byBjcmVhdGUgbWFza2FibGUgbWVtb3J5IHJlZ2lvbnMuCiAKLWlubGluZSB2b2lk
KiB2bUFsbG9jYXRlKHNpemVfdCB2bVNpemUsIHNpemVfdCB2bUFsaWdubWVudCkKK2lubGluZSB2
b2lkKiB2bUFsbG9jYXRlKHNpemVfdCB2bUFsaWdubWVudCwgc2l6ZV90IHZtU2l6ZSkKIHsKICAg
ICB2bVZhbGlkYXRlKHZtU2l6ZSk7CiAgICAgdm1WYWxpZGF0ZSh2bUFsaWdubWVudCk7CkluZGV4
OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvVk1IZWFwLmgJKHJldmlzaW9uIDE3ODcyNykKKysrIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvVk1IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVi
bGljOgogICAgIFNtYWxsUGFnZSogYWxsb2NhdGVTbWFsbFBhZ2UoKTsKICAgICBNZWRpdW1QYWdl
KiBhbGxvY2F0ZU1lZGl1bVBhZ2UoKTsKICAgICBSYW5nZSBhbGxvY2F0ZUxhcmdlUmFuZ2Uoc2l6
ZV90KTsKKyAgICBSYW5nZSBhbGxvY2F0ZUxhcmdlUmFuZ2Uoc2l6ZV90IGFsaWdubWVudCwgc2l6
ZV90LCBzaXplX3QgdW5hbGlnbmVkU2l6ZSk7CiAKICAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbFBh
Z2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mLCBTbWFsbFBhZ2UqKTsKICAgICB2b2lk
IGRlYWxsb2NhdGVNZWRpdW1QYWdlKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+JiwgTWVk
aXVtUGFnZSopOwpAQCAtODgsNiArODksMTcgQEAgaW5saW5lIFJhbmdlIFZNSGVhcDo6YWxsb2Nh
dGVMYXJnZVJhbmdlKAogICAgIHJldHVybiByYW5nZTsKIH0KIAoraW5saW5lIFJhbmdlIFZNSGVh
cDo6YWxsb2NhdGVMYXJnZVJhbmdlKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplLCBzaXpl
X3QgdW5hbGlnbmVkU2l6ZSkKK3sKKyAgICBSYW5nZSByYW5nZSA9IG1fbGFyZ2VSYW5nZXMudGFr
ZShhbGlnbm1lbnQsIHNpemUsIHVuYWxpZ25lZFNpemUpOworICAgIGlmICghcmFuZ2UpIHsKKyAg
ICAgICAgYWxsb2NhdGVTdXBlckNodW5rKCk7CisgICAgICAgIHJhbmdlID0gbV9sYXJnZVJhbmdl
cy50YWtlKGFsaWdubWVudCwgc2l6ZSwgdW5hbGlnbmVkU2l6ZSk7CisgICAgICAgIEJBU1NFUlQo
cmFuZ2UpOworICAgIH0KKyAgICByZXR1cm4gcmFuZ2U7Cit9CisKIGlubGluZSB2b2lkIFZNSGVh
cDo6ZGVhbGxvY2F0ZVNtYWxsUGFnZShzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYgbG9j
aywgU21hbGxQYWdlKiBwYWdlKQogewogICAgIGxvY2sudW5sb2NrKCk7Cg==
</data>
<flag name="review"
          id="270019"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>