<?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>126704</bug_id>
          
          <creation_ts>2014-01-09 09:12:23 -0800</creation_ts>
          <short_desc>REGRESSION(r161540): Caused assertion failures on multiple tests (Requested by ap on #webkit).</short_desc>
          <delta_ts>2014-01-09 09:17:05 -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>
          
          <blocked>126552</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>965933</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-09 09:12:23 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/161540 broke the build:
Caused assertion failures on multiple tests (Requested by ap on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965936</commentid>
    <comment_count>1</comment_count>
      <attachid>220744</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-09 09:12:49 -0800</bug_when>
    <thetext>Created attachment 220744
ROLLOUT of r161540

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965941</commentid>
    <comment_count>2</comment_count>
      <attachid>220744</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-09 09:17:03 -0800</bug_when>
    <thetext>Comment on attachment 220744
ROLLOUT of r161540

Clearing flags on attachment: 220744

Committed r161557: &lt;http://trac.webkit.org/changeset/161557&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965942</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-09 09:17:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220744</attachid>
            <date>2014-01-09 09:12:49 -0800</date>
            <delta_ts>2014-01-09 09:17:03 -0800</delta_ts>
            <desc>ROLLOUT of r161540</desc>
            <filename>bug-126704-20140109091248.patch</filename>
            <type>text/plain</type>
            <size>55032</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YjEyOGMyMTk5MzIyZGRhMmZkNGM3OTRjNTM3YjgyMDFmNDU0MjdkLi5iNGIyMzU3YzljZDlmNWZl
MmEwNTVlYWIxODdiMGI2OTk3ZGI0ZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAxNC0wMS0wOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE2MTU0MC4KKyAgICAg
ICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTYxNTQwCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY3MDQKKworICAgICAgICBDYXVz
ZWQgYXNzZXJ0aW9uIGZhaWx1cmVzIG9uIG11bHRpcGxlIHRlc3RzIChSZXF1ZXN0ZWQgYnkgYXAK
KyAgICAgICAgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjptYXJrKToK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9Db2RlQmxv
Y2tTZXQuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6OmFkZCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9ja1NldDo6dHJhY2VNYXJrZWQpOgorICAgICAgICAqIGhlYXAvQ29kZUJsb2Nr
U2V0Lmg6CisgICAgICAgICogaGVhcC9Db3BpZWRCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6Q29waWVkQmxvY2s6OnJlcG9ydExpdmVCeXRlcyk6CisgICAgICAgICogaGVhcC9Db3BpZWRT
cGFjZS5jcHA6CisgICAgICAgICogaGVhcC9Db3BpZWRTcGFjZS5oOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFw
OjpkaWRBYmFuZG9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6Y29weUJhY2tpbmdTdG9yZXMpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xs
ZWN0QWxsR2FyYmFnZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAo
SlNDOjpIZWFwOjpkaWRBbGxvY2F0ZSk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAg
IChKU0M6OkhlYXA6OnNob3VsZENvbGxlY3QpOgorICAgICAgICAoSlNDOjpIZWFwOjppc0NvbGxl
Y3RpbmcpOgorICAgICAgICAoSlNDOjpIZWFwOjppc1dyaXRlQmFycmllckVuYWJsZWQpOgorICAg
ICAgICAoSlNDOjpIZWFwOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAqIGhlYXAvSGVhcE9wZXJh
dGlvbi5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFy
a1N0YWNrQXJyYXk6On5NYXJrU3RhY2tBcnJheSk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2su
aDoKKyAgICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6Ok1h
cmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6dHJ5QWxsb2NhdGVIZWxwZXIpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6OmFk
ZEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpyZW1vdmVCbG9jayk6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxs
b2NhdG9yOjpNYXJrZWRBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpNYXJrZWRBbGxvY2F0b3I6
OnJlc2V0KToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKiBoZWFw
L01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpsYXN0Q2hhbmNlVG9G
aW5hbGl6ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpkaWRDb25zdW1lRW1wdHlGcmVl
TGlzdCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKToKKyAgICAgICAg
KiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6On5NYXJr
ZWRTcGFjZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpyZXNldEFsbG9jYXRvcnMpOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyk6CisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpyZWFwV2Vha1NldHMpOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2Uu
aDoKKyAgICAgICAgKEpTQzo6Q2xlYXJNYXJrczo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpjbGVhck1hcmtzKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6On5TbG90VmlzaXRvcik6CisgICAgICAgICog
aGVhcC9TbG90VmlzaXRvci5oOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6c2hhcmVkRGF0
YSk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
U2xvdFZpc2l0b3I6OmludGVybmFsQXBwZW5kKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6
OmNvcHlMYXRlcik6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpyZXBvcnRFeHRyYU1lbW9y
eVVzYWdlKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJl
RGF0YTo6c2V0RW51bWVyYXRpb25DYWNoZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5j
cHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVSYXJlRGF0YTo6c2V0UHJldmlvdXNJRCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVE
YXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBE
YXRhLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha01hcERhdGE6OnZpc2l0Q2hpbGRyZW4pOgorCiAy
MDE0LTAxLTA5ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBT
aHJpbmsgV2F0Y2hwb2ludFNldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMWE4Y2FkMjlmNjZkODVjMTIwODhmNjZkOTIyYzQx
MDViMGJiYjdlYS4uM2FmNGIzMmQzMDI3ZWE5YTZkNjBiMmMwM2RlZmVhZWE3MDg0ODg2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMS0wOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE2MTU0MC4K
KyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTYxNTQwCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY3MDQKKworICAgICAg
ICBDYXVzZWQgYXNzZXJ0aW9uIGZhaWx1cmVzIG9uIG11bHRpcGxlIHRlc3RzIChSZXF1ZXN0ZWQg
YnkgYXAKKyAgICAgICAgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiB3dGYvQml0bWFwLmg6Cisg
ICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y291bnQpOgorCiAyMDE0LTAxLTA3ICBNYXJrIEhhaG5l
bmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFya2luZyBzaG91bGQg
YmUgZ2VuZXJhdGlvbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDQ2MmMwNjI2ZDY5MjMyMjY2NzA3NTAzY2Y0ZGNhZWVjZjcxMDg0YWEuLmEy
YWFhMWQyMzFjODc1YjZkNmRhMjcxNzc0ZGIyZmY4YWQzZTU0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xOTU0LDE1ICsxOTU0LDE1IEBA
IHZvaWQgQ29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICBpZiAoQ29kZUJsb2NrKiBvdGhlckJsb2NrID0gc3BlY2lhbE9TUkVudHJ5QmxvY2tPck51bGwo
KSkKICAgICAgICAgb3RoZXJCbG9jay0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAKLSAgICB2
aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VXNhZ2Uob3duZXJFeGVjdXRhYmxlKCksIHNpemVvZihD
b2RlQmxvY2spKTsKKyAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VXNhZ2Uoc2l6ZW9mKENv
ZGVCbG9jaykpOwogICAgIGlmIChtX2ppdENvZGUpCi0gICAgICAgIHZpc2l0b3IucmVwb3J0RXh0
cmFNZW1vcnlVc2FnZShvd25lckV4ZWN1dGFibGUoKSwgbV9qaXRDb2RlLT5zaXplKCkpOworICAg
ICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VXNhZ2UobV9qaXRDb2RlLT5zaXplKCkpOwog
ICAgIGlmIChtX2luc3RydWN0aW9ucy5zaXplKCkpIHsKICAgICAgICAgLy8gRGl2aWRlIGJ5IHJl
ZkNvdW50KCkgYmVjYXVzZSBtX2luc3RydWN0aW9ucyBwb2ludHMgdG8gc29tZXRoaW5nIHRoYXQg
aXMgc2hhcmVkCiAgICAgICAgIC8vIGJ5IG11bHRpcGxlIENvZGVCbG9ja3MsIGFuZCB3ZSBvbmx5
IHdhbnQgdG8gY291bnQgaXQgdG93YXJkcyB0aGUgaGVhcCBzaXplIG9uY2UuCiAgICAgICAgIC8v
IEhhdmluZyBlYWNoIENvZGVCbG9jayByZXBvcnQgb25seSBpdHMgcHJvcG9ydGlvbmFsIHNoYXJl
IG9mIHRoZSBzaXplIGlzIG9uZSB3YXkKICAgICAgICAgLy8gb2YgYWNjb21wbGlzaGluZyB0aGlz
LgotICAgICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VXNhZ2Uob3duZXJFeGVjdXRhYmxl
KCksIG1faW5zdHJ1Y3Rpb25zLnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikgLyBtX2luc3Ry
dWN0aW9ucy5yZWZDb3VudCgpKTsKKyAgICAgICAgdmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVVz
YWdlKG1faW5zdHJ1Y3Rpb25zLnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikgLyBtX2luc3Ry
dWN0aW9ucy5yZWZDb3VudCgpKTsKICAgICB9CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmbV91bmxp
bmtlZENvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IDVlZGFkYmYzM2VmNGY2NmJkNGMyY2VlNmFlYTEyOWMwNWUzMzFmNWIuLjJmZjExYTljMDdi
NzkwY2QyNjA0OTA5NTEzMTg3ZWI5NTIyNGE0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTEyNjksNyArMTI2OSw2IEBAIGlubGluZSB2b2lkIENv
ZGVCbG9ja1NldDo6bWFyayh2b2lkKiBjYW5kaWRhdGVDb2RlQmxvY2spCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICAoKml0ZXIpLT5tX21heUJlRXhlY3V0aW5nID0gdHJ1ZTsKLSAgICBtX2N1
cnJlbnRseUV4ZWN1dGluZy5hcHBlbmQoc3RhdGljX2Nhc3Q8Q29kZUJsb2NrKj4oY2FuZGlkYXRl
Q29kZUJsb2NrKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggYjMxYjZmY2RjNDIyMjhmNzI5NzAwOWE3
ZTI3MzEwMGJmNTUzOGM2MS4uZWI2M2FlZTM2OGE1ZWFiOTg4OTRmYjg4YzhhYjY1ZmQxM2M4YzE3
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC04
NTAsNyArODUwLDYgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQnV0
dGVyZmx5VG9IYXZlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWwKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKICAgICBBU1NFUlQoIW9iamVjdC0+c3RydWN0
dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOwotICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFw
KTsKICAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IG9iamVjdC0+Z3Jvd091dE9mTGluZVN0b3JhZ2Uo
dm0sIDAsIGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSk7CiAgICAgb2JqZWN0LT5zZXRCdXR0ZXJm
bHlXaXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUodm0sIHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJlc3VsdCk7CkBAIC04NjEsNyArODYwLDYgQEAgY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVydHlTdG9y
YWdlKEV4ZWNTdGF0ZSoKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIERlZmVyR0MgZGVmZXJHQyh2bS5o
ZWFwKTsKICAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IG9iamVjdC0+Z3Jvd091dE9mTGluZVN0b3Jh
Z2Uodm0sIG9iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1NpemUp
OwogICAgIG9iamVjdC0+c2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0dXJlKHZtLCBy
ZXN1bHQpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAKaW5kZXggZjU5Njg3MjNj
ZTI2NDliOTE5ODZkOWYyYTZiYWUzZjNiZWM5MjQyNy4uYWUyNzQ4MDg3ZWE2ZDY5YmIzYjAwZWMy
Y2VkZjM5Y2U1YzQ0NzNkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29kZUJsb2NrU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxv
Y2tTZXQuY3BwCkBAIC00NSw4ICs0NSw3IEBAIENvZGVCbG9ja1NldDo6fkNvZGVCbG9ja1NldCgp
CiAKIHZvaWQgQ29kZUJsb2NrU2V0OjphZGQoUGFzc1JlZlB0cjxDb2RlQmxvY2s+IGNvZGVCbG9j
aykKIHsKLSAgICBDb2RlQmxvY2sqIGJsb2NrID0gY29kZUJsb2NrLmxlYWtSZWYoKTsKLSAgICBi
b29sIGlzTmV3RW50cnkgPSBtX3NldC5hZGQoYmxvY2spLmlzTmV3RW50cnk7CisgICAgYm9vbCBp
c05ld0VudHJ5ID0gbV9zZXQuYWRkKGNvZGVCbG9jay5sZWFrUmVmKCkpLmlzTmV3RW50cnk7CiAg
ICAgQVNTRVJUX1VOVVNFRChpc05ld0VudHJ5LCBpc05ld0VudHJ5KTsKIH0KIApAQCAtMTAyLDE2
ICsxMDEsOSBAQCB2b2lkIENvZGVCbG9ja1NldDo6dHJhY2VNYXJrZWQoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gKml0ZXI7CiAgICAgICAgIGlm
ICghY29kZUJsb2NrLT5tX21heUJlRXhlY3V0aW5nKQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnZpc2l0Q2hpbGRyZW4oY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgdmlzaXRvcik7CisgICAgICAgIGNvZGVCbG9jay0+dmlz
aXRBZ2dyZWdhdGUodmlzaXRvcik7CiAgICAgfQogfQogCi12b2lkIENvZGVCbG9ja1NldDo6cmVt
ZW1iZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKEhlYXAqIGhlYXApCi17Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2N1cnJlbnRseUV4ZWN1dGluZy5zaXplKCk7ICsraSkKLSAg
ICAgICAgaGVhcC0+YWRkVG9SZW1lbWJlcmVkU2V0KG1fY3VycmVudGx5RXhlY3V0aW5nW2ldLT5v
d25lckV4ZWN1dGFibGUoKSk7Ci0gICAgbV9jdXJyZW50bHlFeGVjdXRpbmcuY2xlYXIoKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvZGVCbG9ja1NldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJs
b2NrU2V0LmgKaW5kZXggYmI3ODZmMDY3MzY1N2UwOGM2ZWMxYzRhOTcyMzVmNzU1ZmUyMzQzMy4u
MmU0ZTYwNmZjOTAzODQyMTRjY2FiMmVmYzYzZjlkY2NmYmRiMTY1MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgKQEAgLTMwLDEyICszMCwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKLWNsYXNzIEhlYXA7CiBjbGFzcyBTbG90VmlzaXRv
cjsKIAogLy8gQ29kZUJsb2NrU2V0IHRyYWNrcyBhbGwgQ29kZUJsb2Nrcy4gRXZlcnkgQ29kZUJs
b2NrIHN0YXJ0cyBvdXQgd2l0aCBvbmUKQEAgLTY3LDE2ICs2NSwxMSBAQCBwdWJsaWM6CiAgICAg
Ly8gbWF5QmVFeGVjdXRpbmcuCiAgICAgdm9pZCB0cmFjZU1hcmtlZChTbG90VmlzaXRvciYpOwog
Ci0gICAgLy8gQWRkIGFsbCBjdXJyZW50bHkgZXhlY3V0aW5nIENvZGVCbG9ja3MgdG8gdGhlIHJl
bWVtYmVyZWQgc2V0IHRvIGJlIAotICAgIC8vIHJlLXNjYW5uZWQgZHVyaW5nIHRoZSBuZXh0IGNv
bGxlY3Rpb24uCi0gICAgdm9pZCByZW1lbWJlckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3Mo
SGVhcCopOwotCiBwcml2YXRlOgogICAgIC8vIFRoaXMgaXMgbm90IGEgc2V0IG9mIFJlZlB0cjxD
b2RlQmxvY2s+IGJlY2F1c2Ugd2UgbmVlZCB0byBiZSBhYmxlIHRvIGZpbmQKICAgICAvLyBhcmJp
dHJhcnkgYm9ndXMgcG9pbnRlcnMuIEkgY291bGQgaGF2ZSB3cml0dGVuIGEgdGhpbmd5IHRoYXQg
aGFkIHBlZWsgdHlwZXMKICAgICAvLyBhbmQgYWxsLCBidXQgdGhhdCBzZWVtZWQgbGlrZSBvdmVy
a2lsbC4KICAgICBIYXNoU2V0PENvZGVCbG9jayogPiBtX3NldDsKLSAgICBWZWN0b3I8Q29kZUJs
b2NrKj4gbV9jdXJyZW50bHlFeGVjdXRpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZEJsb2NrSW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQmxvY2tJbmxpbmVzLmgKaW5kZXgg
MTUwYjRjNzEwMzAyOTIxZmQ4NTM2NDVjOWNiNjA0NzgzYjM3N2YwZS4uNjE5OTZjZTM3MjcyYTA0
MGVlNGFlNTY2NTNiN2Q2MTIzNmE2Yjc5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29waWVkQmxvY2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29waWVkQmxvY2tJbmxpbmVzLmgKQEAgLTQyLDkgKzQyLDYgQEAgaW5saW5lIHZvaWQg
Q29waWVkQmxvY2s6OnJlcG9ydExpdmVCeXRlcyhKU0NlbGwqIG93bmVyLCBDb3B5VG9rZW4gdG9r
ZW4sIHVuc2lnbmUKICNlbmRpZgogICAgIG1fbGl2ZUJ5dGVzICs9IGJ5dGVzOwogCi0gICAgaWYg
KGlzUGlubmVkKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghc2hvdWxkRXZhY3VhdGUo
KSkgewogICAgICAgICBwaW4oKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQ29waWVkU3BhY2UuY3BwCmluZGV4IDk2MDE2MzRlYTQ2YmM1ZWRmM2FkMzQ2OGYz
ZmNhYTgyOWViZjQ0YjYuLmYwZTc3MjJhNWViZTNkZDU0YTNiZWIyODEzYjRjY2VlN2RlMTExMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5jcHAKQEAgLTMxNiwx
NyArMzE2LDQgQEAgYm9vbCBDb3BpZWRTcGFjZTo6aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUp
CiAgICAgICAgIHx8IGlzQmxvY2tMaXN0UGFnZWRPdXQoZGVhZGxpbmUsICZtX292ZXJzaXplQmxv
Y2tzKTsKIH0KIAotdm9pZCBDb3BpZWRTcGFjZTo6ZGlkU3RhcnRGdWxsQ29sbGVjdGlvbigpCi17
Ci0gICAgQVNTRVJUKGhlYXAoKS0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0
aW9uKTsKLQotICAgIEFTU0VSVChtX2Zyb21TcGFjZS0+aXNFbXB0eSgpKTsKLQotICAgIGZvciAo
Q29waWVkQmxvY2sqIGJsb2NrID0gbV90b1NwYWNlLT5oZWFkKCk7IGJsb2NrOyBibG9jayA9IGJs
b2NrLT5uZXh0KCkpCi0gICAgICAgIGJsb2NrLT5kaWRTdXJ2aXZlR0MoKTsKLQotICAgIGZvciAo
Q29waWVkQmxvY2sqIGJsb2NrID0gbV9vdmVyc2l6ZUJsb2Nrcy5oZWFkKCk7IGJsb2NrOyBibG9j
ayA9IGJsb2NrLT5uZXh0KCkpCi0gICAgICAgIGJsb2NrLT5kaWRTdXJ2aXZlR0MoKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db3BpZWRTcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2Uu
aAppbmRleCA1ZmNhNDVhOTEwZDg4NjgzMWQ1YThkNzE2Yjc5YzhlZDM4ZjI5ZDJmLi42NWNhMDRl
ZjY5M2I1OGMxN2QxN2Q5ZDdhZjgwNDYwYTc4MDJlZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvcGllZFNwYWNlLmgKQEAgLTYwLDggKzYwLDYgQEAgcHVibGljOgogICAgIAogICAg
IENvcGllZEFsbG9jYXRvciYgYWxsb2NhdG9yKCkgeyByZXR1cm4gbV9hbGxvY2F0b3I7IH0KIAot
ICAgIHZvaWQgZGlkU3RhcnRGdWxsQ29sbGVjdGlvbigpOwotCiAgICAgdm9pZCBzdGFydGVkQ29w
eWluZygpOwogICAgIHZvaWQgZG9uZUNvcHlpbmcoKTsKICAgICBib29sIGlzSW5Db3B5UGhhc2Uo
KSB7IHJldHVybiBtX2luQ29weWluZ1BoYXNlOyB9CkBAIC04Miw4ICs4MCw2IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBDb3BpZWRCbG9jayogYmxvY2tGb3Iodm9pZCopOwogCi0gICAgSGVhcCog
aGVhcCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhcDsgfQotCiBwcml2YXRlOgogICAgIHN0YXRpYyBi
b29sIGlzT3ZlcnNpemUoc2l6ZV90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApp
bmRleCBjZWI1NzA5MTA5YzkyY2E2MTA2NjAwOGNkZDU0NzYyZjlhMTU4NTZkLi4zMDdjMzBjMGZj
NzZkOThkMTRiZDQ2OTA4MzZjZmU0ZjgwNTM0YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcApAQCAtMjUzLDExICsyNTMsOSBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgLCBtX3JhbVNpemUocmFtU2l6ZSgpKQogICAgICwgbV9taW5CeXRlc1Bl
ckN5Y2xlKG1pbkhlYXBTaXplKG1faGVhcFR5cGUsIG1fcmFtU2l6ZSkpCiAgICAgLCBtX3NpemVB
ZnRlckxhc3RDb2xsZWN0KDApCi0gICAgLCBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlKDApCi0g
ICAgLCBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlKDApCi0gICAgLCBtX21heEVkZW5TaXplKG1f
bWluQnl0ZXNQZXJDeWNsZSkKLSAgICAsIG1fbWF4SGVhcFNpemUobV9taW5CeXRlc1BlckN5Y2xl
KQotICAgICwgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uKGZhbHNlKQorICAgICwgbV9ieXRlc0Fs
bG9jYXRlZExpbWl0KG1fbWluQnl0ZXNQZXJDeWNsZSkKKyAgICAsIG1fYnl0ZXNBbGxvY2F0ZWQo
MCkKKyAgICAsIG1fYnl0ZXNBYmFuZG9uZWQoMCkKICAgICAsIG1fdG90YWxCeXRlc1Zpc2l0ZWQo
MCkKICAgICAsIG1fdG90YWxCeXRlc0NvcGllZCgwKQogICAgICwgbV9vcGVyYXRpb25JblByb2dy
ZXNzKE5vT3BlcmF0aW9uKQpAQCAtMjcxLDcgKzI2OSw3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fY29weVZpc2l0b3IobV9zaGFyZWREYXRhKQogICAg
ICwgbV9oYW5kbGVTZXQodm0pCiAgICAgLCBtX2lzU2FmZVRvQ29sbGVjdChmYWxzZSkKLSAgICAs
IG1fd3JpdGVCYXJyaWVyQnVmZmVyKDI1NikKKyAgICAsIG1fd3JpdGVCYXJyaWVyQnVmZmVyKDEy
OCkKICAgICAsIG1fdm0odm0pCiAgICAgLCBtX2xhc3RHQ0xlbmd0aCgwKQogICAgICwgbV9sYXN0
Q29kZURpc2NhcmRUaW1lKFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpCkBAIC0z
MzQsOCArMzMyLDggQEAgdm9pZCBIZWFwOjpyZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFwaCgpCiB2
b2lkIEhlYXA6OmRpZEFiYW5kb24oc2l6ZV90IGJ5dGVzKQogewogICAgIGlmIChtX2FjdGl2aXR5
Q2FsbGJhY2spCi0gICAgICAgIG1fYWN0aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUobV9ieXRl
c0FsbG9jYXRlZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUpOwotICAgIG1f
Ynl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUgKz0gYnl0ZXM7CisgICAgICAgIG1fYWN0aXZpdHlDYWxs
YmFjay0+ZGlkQWxsb2NhdGUobV9ieXRlc0FsbG9jYXRlZCArIG1fYnl0ZXNBYmFuZG9uZWQpOwor
ICAgIG1fYnl0ZXNBYmFuZG9uZWQgKz0gYnl0ZXM7CiB9CiAKIHZvaWQgSGVhcDo6cHJvdGVjdChK
U1ZhbHVlIGspCkBAIC00ODksOSArNDg3LDYgQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogICAg
IHZpc2l0b3Iuc2V0dXAoKTsKICAgICBIZWFwUm9vdFZpc2l0b3IgaGVhcFJvb3RWaXNpdG9yKHZp
c2l0b3IpOwogCi0gICAgVmVjdG9yPGNvbnN0IEpTQ2VsbCo+IHJlbWVtYmVyZWRTZXQobV9zbG90
VmlzaXRvci5tYXJrU3RhY2soKS5zaXplKCkpOwotICAgIG1fc2xvdFZpc2l0b3IubWFya1N0YWNr
KCkuZmlsbFZlY3RvcihyZW1lbWJlcmVkU2V0KTsKLQogICAgIHsKICAgICAgICAgUGFyYWxsZWxN
b2RlRW5hYmxlciBlbmFibGVyKHZpc2l0b3IpOwogCkBAIC01OTUsMTQgKzU5MCw2IEBAIHZvaWQg
SGVhcDo6bWFya1Jvb3RzKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIHsKLSAgICAgICAgR0NQ
SEFTRShDbGVhclJlbWVtYmVyZWRTZXQpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmVtZW1iZXJlZFNldC5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgY29uc3QgSlNDZWxs
KiBjZWxsID0gcmVtZW1iZXJlZFNldFtpXTsKLSAgICAgICAgICAgIE1hcmtlZEJsb2NrOjpibG9j
a0ZvcihjZWxsKS0+Y2xlYXJSZW1lbWJlcmVkKGNlbGwpOwotICAgICAgICB9Ci0gICAgfQotCiAg
ICAgR0NDT1VOVEVSKFZpc2l0ZWRWYWx1ZUNvdW50LCB2aXNpdG9yLnZpc2l0Q291bnQoKSk7CiAK
ICAgICBtX3NoYXJlZERhdGEuZGlkRmluaXNoTWFya2luZygpOwpAQCAtNjE0LDE0ICs2MDEsOCBA
QCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAgICAgTUFSS19MT0dfTUVTU0FHRTIoIlxuTnVtYmVy
IG9mIGxpdmUgT2JqZWN0cyBhZnRlciBmdWxsIEdDICVsdSwgdG9vayAlLjZmIHNlY3NcbiIsIHZp
c2l0Q291bnQsIFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBnY1N0YXJ0VGlt
ZSk7CiAjZW5kaWYKIAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxl
Y3Rpb24pIHsKLSAgICAgICAgbV90b3RhbEJ5dGVzVmlzaXRlZCArPSB2aXNpdG9yLmJ5dGVzVmlz
aXRlZCgpOwotICAgICAgICBtX3RvdGFsQnl0ZXNDb3BpZWQgKz0gdmlzaXRvci5ieXRlc0NvcGll
ZCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gRnVsbENvbGxlY3Rpb24pOwotICAgICAgICBtX3RvdGFsQnl0ZXNWaXNpdGVkID0gdmlzaXRv
ci5ieXRlc1Zpc2l0ZWQoKTsKLSAgICAgICAgbV90b3RhbEJ5dGVzQ29waWVkID0gdmlzaXRvci5i
eXRlc0NvcGllZCgpOwotICAgIH0KKyAgICBtX3RvdGFsQnl0ZXNWaXNpdGVkID0gdmlzaXRvci5i
eXRlc1Zpc2l0ZWQoKTsKKyAgICBtX3RvdGFsQnl0ZXNDb3BpZWQgPSB2aXNpdG9yLmJ5dGVzQ29w
aWVkKCk7CiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQogICAgIG1fdG90YWxCeXRlc1Zpc2l0ZWQg
Kz0gbV9zaGFyZWREYXRhLmNoaWxkQnl0ZXNWaXNpdGVkKCk7CiAgICAgbV90b3RhbEJ5dGVzQ29w
aWVkICs9IG1fc2hhcmVkRGF0YS5jaGlsZEJ5dGVzQ29waWVkKCk7CkBAIC02MzQsMTIgKzYxNSw4
IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKICAgICBtX3NoYXJlZERhdGEucmVzZXQoKTsKIH0K
IAotdGVtcGxhdGUgPEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGU+CiB2b2lkIEhlYXA6OmNv
cHlCYWNraW5nU3RvcmVzKCkKIHsKLSAgICBpZiAoY29sbGVjdGlvblR5cGUgPT0gRWRlbkNvbGxl
Y3Rpb24pCi0gICAgICAgIHJldHVybjsKLQogICAgIG1fc3RvcmFnZVNwYWNlLnN0YXJ0ZWRDb3B5
aW5nKCk7CiAgICAgaWYgKG1fc3RvcmFnZVNwYWNlLnNob3VsZERvQ29weVBoYXNlKCkpIHsKICAg
ICAgICAgbV9zaGFyZWREYXRhLmRpZFN0YXJ0Q29weWluZygpOwpAQCAtNjUwLDcgKzYyNyw3IEBA
IHZvaWQgSGVhcDo6Y29weUJhY2tpbmdTdG9yZXMoKQogICAgICAgICAvLyBiZWZvcmUgc2lnbmFs
aW5nIHRoYXQgdGhlIHBoYXNlIGlzIGNvbXBsZXRlLgogICAgICAgICBtX3N0b3JhZ2VTcGFjZS5k
b25lQ29weWluZygpOwogICAgICAgICBtX3NoYXJlZERhdGEuZGlkRmluaXNoQ29weWluZygpOwot
ICAgIH0gZWxzZQorICAgIH0gZWxzZSAKICAgICAgICAgbV9zdG9yYWdlU3BhY2UuZG9uZUNvcHlp
bmcoKTsKIH0KIApAQCAtNzQ2LDIzICs3MjMsMTEgQEAgdm9pZCBIZWFwOjpkZWxldGVVbm1hcmtl
ZENvbXBpbGVkQ29kZSgpCiAgICAgbV9qaXRTdHViUm91dGluZXMuZGVsZXRlVW5tYXJrZWRKZXR0
aXNvbmVkU3R1YlJvdXRpbmVzKCk7CiB9CiAKLXZvaWQgSGVhcDo6YWRkVG9SZW1lbWJlcmVkU2V0
KGNvbnN0IEpTQ2VsbCogY2VsbCkKLXsKLSAgICBBU1NFUlQoY2VsbCk7Ci0gICAgQVNTRVJUKCFP
cHRpb25zOjplbmFibGVDb25jdXJyZW50SklUKCkgfHwgIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7
Ci0gICAgQVNTRVJUKGlzTWFya2VkKGNlbGwpKTsKLSAgICBpZiAoaXNJblJlbWVtYmVyZWRTZXQo
Y2VsbCkpCi0gICAgICAgIHJldHVybjsKLSAgICBNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCkt
PnNldFJlbWVtYmVyZWQoY2VsbCk7Ci0gICAgbV9zbG90VmlzaXRvci51bmNvbmRpdGlvbmFsbHlB
cHBlbmQoY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSk7Ci19Ci0KIHZvaWQgSGVhcDo6Y29sbGVj
dEFsbEdhcmJhZ2UoKQogewogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IHRydWU7CiAgICAgY29sbGVj
dCgpOwogCiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkdhcmJhZ2UgQ29sbGVj
dGlvbjogU3dlZXBpbmciKTsKQEAgLTc5OSwyOCArNzY0LDkgQEAgdm9pZCBIZWFwOjpjb2xsZWN0
KCkKICAgICAgICAgUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlIHNjb3BlKCp0aGlzKTsKICAgICAg
ICAgbV92bS0+cHJlcGFyZVRvRGlzY2FyZENvZGUoKTsKICAgICB9Ci0KLSAgICBib29sIGlzRnVs
bENvbGxlY3Rpb24gPSBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb247Ci0gICAgaWYgKGlzRnVsbENv
bGxlY3Rpb24pIHsKLSAgICAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gRnVsbENvbGxlY3Rp
b247Ci0gICAgICAgIG1fc2xvdFZpc2l0b3IuY2xlYXJNYXJrU3RhY2soKTsKLSAgICAgICAgbV9z
aG91bGREb0Z1bGxDb2xsZWN0aW9uID0gZmFsc2U7Ci0gICAgICAgIGlmIChPcHRpb25zOjpsb2dH
QygpKQotICAgICAgICAgICAgZGF0YUxvZygiRnVsbENvbGxlY3Rpb24sICIpOwotICAgIH0gZWxz
ZSB7Ci0jaWYgRU5BQkxFKEdHQykKLSAgICAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gRWRl
bkNvbGxlY3Rpb247Ci0gICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQotICAgICAgICAgICAg
ZGF0YUxvZygiRWRlbkNvbGxlY3Rpb24sICIpOwotI2Vsc2UKLSAgICAgICAgbV9vcGVyYXRpb25J
blByb2dyZXNzID0gRnVsbENvbGxlY3Rpb247Ci0gICAgICAgIG1fc2xvdFZpc2l0b3IuY2xlYXJN
YXJrU3RhY2soKTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCi0gICAgICAgICAgICBk
YXRhTG9nKCJGdWxsQ29sbGVjdGlvbiwgIik7Ci0jZW5kaWYKLSAgICB9Ci0gICAgaWYgKG1fb3Bl
cmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikKLSAgICAgICAgbV9leHRyYU1lbW9y
eVVzYWdlID0gMDsKKyAgICAKKyAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBDb2xsZWN0aW9u
OworICAgIG1fZXh0cmFNZW1vcnlVc2FnZSA9IDA7CiAKICAgICBpZiAobV9hY3Rpdml0eUNhbGxi
YWNrKQogICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CkBAIC04MzQs
MTYgKzc4MCw2IEBAIHZvaWQgSGVhcDo6Y29sbGVjdCgpCiAgICAgewogICAgICAgICBHQ1BIQVNF
KFN0b3BBbGxvY2F0aW9uKTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5zdG9wQWxsb2NhdGluZygp
OwotICAgICAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKQot
ICAgICAgICAgICAgbV9zdG9yYWdlU3BhY2UuZGlkU3RhcnRGdWxsQ29sbGVjdGlvbigpOwotICAg
IH0KLQotICAgIHsKLSAgICAgICAgR0NQSEFTRShGbHVzaFdyaXRlQmFycmllckJ1ZmZlcik7Ci0g
ICAgICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pCi0gICAg
ICAgICAgICBtX3dyaXRlQmFycmllckJ1ZmZlci5mbHVzaCgqdGhpcyk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fd3JpdGVCYXJyaWVyQnVmZmVyLnJlc2V0KCk7CiAgICAgfQogCiAgICAg
bWFya1Jvb3RzKCk7CkBAIC04NjAsMTYgKzc5NiwxMyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoKQog
ICAgICAgICBtX2FycmF5QnVmZmVycy5zd2VlcCgpOwogICAgIH0KIAotICAgIGlmIChtX29wZXJh
dGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICB7CiAgICAgICAgIG1fYmxv
Y2tTbmFwc2hvdC5yZXNpemUobV9vYmplY3RTcGFjZS5ibG9ja3MoKS5zZXQoKS5zaXplKCkpOwog
ICAgICAgICBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvciBmdW5jdG9yKG1fYmxvY2tTbmFwc2hv
dCk7CiAgICAgICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIH0K
IAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pCi0gICAg
ICAgIGNvcHlCYWNraW5nU3RvcmVzPEZ1bGxDb2xsZWN0aW9uPigpOwotICAgIGVsc2UKLSAgICAg
ICAgY29weUJhY2tpbmdTdG9yZXM8RWRlbkNvbGxlY3Rpb24+KCk7CisgICAgY29weUJhY2tpbmdT
dG9yZXMoKTsKIAogICAgIHsKICAgICAgICAgR0NQSEFTRShGaW5hbGl6ZVVuY29uZGl0aW9uYWxG
aW5hbGl6ZXJzKTsKQEAgLTg4NiwxNSArODE5LDggQEAgdm9pZCBIZWFwOjpjb2xsZWN0KCkKICAg
ICAgICAgbV92bS0+Y2xlYXJTb3VyY2VQcm92aWRlckNhY2hlcygpOwogICAgIH0KIAotICAgIGlm
IChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pCi0gICAgICAgIG1fc3dl
ZXBlci0+c3RhcnRTd2VlcGluZyhtX2Jsb2NrU25hcHNob3QpOwotCi0gICAgewotICAgICAgICBH
Q1BIQVNFKEFkZEN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3NUb1JlbWVtYmVyZWRTZXQpOwot
ICAgICAgICBtX2NvZGVCbG9ja3MucmVtZW1iZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tz
KHRoaXMpOwotICAgIH0KLQotICAgIG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUgPSAwOworICAg
IG1fc3dlZXBlci0+c3RhcnRTd2VlcGluZyhtX2Jsb2NrU25hcHNob3QpOworICAgIG1fYnl0ZXNB
YmFuZG9uZWQgPSAwOwogCiAgICAgewogICAgICAgICBHQ1BIQVNFKFJlc2V0QWxsb2NhdG9ycyk7
CkBAIC05MDUsMzIgKzgzMSwyMSBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoKQogICAgIGlmIChPcHRp
b25zOjpnY01heEhlYXBTaXplKCkgJiYgY3VycmVudEhlYXBTaXplID4gT3B0aW9uczo6Z2NNYXhI
ZWFwU2l6ZSgpKQogICAgICAgICBIZWFwU3RhdGlzdGljczo6ZXhpdFdpdGhGYWlsdXJlKCk7CiAK
LSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKSB7Ci0gICAg
ICAgIC8vIFRvIGF2b2lkIHBhdGhvbG9naWNhbCBHQyBjaHVybiBpbiB2ZXJ5IHNtYWxsIGFuZCB2
ZXJ5IGxhcmdlIGhlYXBzLCB3ZSBzZXQKLSAgICAgICAgLy8gdGhlIG5ldyBhbGxvY2F0aW9uIGxp
bWl0IGJhc2VkIG9uIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIGhlYXAsIHdpdGggYQotICAgICAg
ICAvLyBmaXhlZCBtaW5pbXVtLgotICAgICAgICBtX21heEhlYXBTaXplID0gbWF4KG1pbkhlYXBT
aXplKG1faGVhcFR5cGUsIG1fcmFtU2l6ZSksIHByb3BvcnRpb25hbEhlYXBTaXplKGN1cnJlbnRI
ZWFwU2l6ZSwgbV9yYW1TaXplKSk7Ci0gICAgICAgIG1fbWF4RWRlblNpemUgPSBtX21heEhlYXBT
aXplIC0gY3VycmVudEhlYXBTaXplOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChjdXJy
ZW50SGVhcFNpemUgPj0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCk7Ci0gICAgICAgIG1fbWF4RWRl
blNpemUgPSBtX21heEhlYXBTaXplIC0gY3VycmVudEhlYXBTaXplOwotICAgICAgICBkb3VibGUg
ZWRlblRvT2xkR2VuZXJhdGlvblJhdGlvID0gKGRvdWJsZSltX21heEVkZW5TaXplIC8gKGRvdWJs
ZSltX21heEhlYXBTaXplOwotICAgICAgICBkb3VibGUgbWluRWRlblRvT2xkR2VuZXJhdGlvblJh
dGlvID0gMS4wIC8gMy4wOwotICAgICAgICBpZiAoZWRlblRvT2xkR2VuZXJhdGlvblJhdGlvIDwg
bWluRWRlblRvT2xkR2VuZXJhdGlvblJhdGlvKQotICAgICAgICAgICAgbV9zaG91bGREb0Z1bGxD
b2xsZWN0aW9uID0gdHJ1ZTsKLSAgICAgICAgbV9tYXhIZWFwU2l6ZSArPSBjdXJyZW50SGVhcFNp
emUgLSBtX3NpemVBZnRlckxhc3RDb2xsZWN0OwotICAgICAgICBtX21heEVkZW5TaXplID0gbV9t
YXhIZWFwU2l6ZSAtIGN1cnJlbnRIZWFwU2l6ZTsKLSAgICB9Ci0KICAgICBtX3NpemVBZnRlckxh
c3RDb2xsZWN0ID0gY3VycmVudEhlYXBTaXplOwogCi0gICAgbV9ieXRlc0FsbG9jYXRlZFRoaXND
eWNsZSA9IDA7CisgICAgLy8gVG8gYXZvaWQgcGF0aG9sb2dpY2FsIEdDIGNodXJuIGluIHZlcnkg
c21hbGwgYW5kIHZlcnkgbGFyZ2UgaGVhcHMsIHdlIHNldAorICAgIC8vIHRoZSBuZXcgYWxsb2Nh
dGlvbiBsaW1pdCBiYXNlZCBvbiB0aGUgY3VycmVudCBzaXplIG9mIHRoZSBoZWFwLCB3aXRoIGEK
KyAgICAvLyBmaXhlZCBtaW5pbXVtLgorICAgIHNpemVfdCBtYXhIZWFwU2l6ZSA9IG1heChtaW5I
ZWFwU2l6ZShtX2hlYXBUeXBlLCBtX3JhbVNpemUpLCBwcm9wb3J0aW9uYWxIZWFwU2l6ZShjdXJy
ZW50SGVhcFNpemUsIG1fcmFtU2l6ZSkpOworICAgIG1fYnl0ZXNBbGxvY2F0ZWRMaW1pdCA9IG1h
eEhlYXBTaXplIC0gY3VycmVudEhlYXBTaXplOworCisgICAgbV9ieXRlc0FsbG9jYXRlZCA9IDA7
CiAgICAgZG91YmxlIGxhc3RHQ0VuZFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpOwogICAgIG1fbGFzdEdDTGVuZ3RoID0gbGFzdEdDRW5kVGltZSAtIGxhc3RHQ1N0YXJ0
VGltZTsKIAogICAgIGlmIChPcHRpb25zOjpyZWNvcmRHQ1BhdXNlVGltZXMoKSkKICAgICAgICAg
SGVhcFN0YXRpc3RpY3M6OnJlY29yZEdDUGF1c2VUaW1lKGxhc3RHQ1N0YXJ0VGltZSwgbGFzdEdD
RW5kVGltZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IEVk
ZW5Db2xsZWN0aW9uIHx8IG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbik7
CisgICAgUkVMRUFTRV9BU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IENvbGxlY3Rpb24p
OwogCiAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247CiAgICAgSkFWQVND
UklQVENPUkVfR0NfRU5EKCk7CkBAIC05NDgsNiArODYzLDEwIEBAIHZvaWQgSGVhcDo6Y29sbGVj
dCgpCiAgICAgICAgIGRvdWJsZSBhZnRlciA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICAgICAgZGF0
YUxvZyhhZnRlciAtIGJlZm9yZSwgIiBtcywgIiwgY3VycmVudEhlYXBTaXplIC8gMTAyNCwgIiBr
Yl1cbiIpOwogICAgIH0KKworI2lmIEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCisgICAgZGF0
YUxvZ0YoIkpTQyBHQyBmaW5pc2hpbmcgY29sbGVjdGlvbi5cbiIpOworI2VuZGlmCiB9CiAKIGJv
b2wgSGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpCkBAIC05OTcsOCArOTE2LDggQEAg
dm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChib29sIGVuYWJsZSkK
IHZvaWQgSGVhcDo6ZGlkQWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQogewogICAgIGlmIChtX2FjdGl2
aXR5Q2FsbGJhY2spCi0gICAgICAgIG1fYWN0aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUobV9i
eXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUpOwotICAg
IG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgKz0gYnl0ZXM7CisgICAgICAgIG1fYWN0aXZpdHlD
YWxsYmFjay0+ZGlkQWxsb2NhdGUobV9ieXRlc0FsbG9jYXRlZCArIG1fYnl0ZXNBYmFuZG9uZWQp
OworICAgIG1fYnl0ZXNBbGxvY2F0ZWQgKz0gYnl0ZXM7CiB9CiAKIGJvb2wgSGVhcDo6aXNWYWxp
ZEFsbG9jYXRpb24oc2l6ZV90KQpAQCAtMTA3NSwxNSArOTk0LDYgQEAgdm9pZCBIZWFwOjpkZWNy
ZW1lbnREZWZlcnJhbERlcHRoQW5kR0NJZk5lZWRlZCgpCiAgICAgY29sbGVjdElmTmVjZXNzYXJ5
T3JEZWZlcigpOwogfQogCi12b2lkIEhlYXA6OndyaXRlQmFycmllcihjb25zdCBKU0NlbGwqIGZy
b20pCi17Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9MT09LU19WQUxJRChjb25zdF9jYXN0PEpTQ2Vs
bCo+KGZyb20pKTsKLSAgICBpZiAoIWZyb20gfHwgIWlzTWFya2VkKGZyb20pKQotICAgICAgICBy
ZXR1cm47Ci0gICAgSGVhcCogaGVhcCA9IEhlYXA6OmhlYXAoZnJvbSk7Ci0gICAgaGVhcC0+YWRk
VG9SZW1lbWJlcmVkU2V0KGZyb20pOwotfQotCiB2b2lkIEhlYXA6OmZsdXNoV3JpdGVCYXJyaWVy
QnVmZmVyKEpTQ2VsbCogY2VsbCkKIHsKICNpZiBFTkFCTEUoR0dDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCmluZGV4IGFiNTgwYWExYjc1NGYwNzBkNzU2ZWU3YjVlMjE4MGMwN2E2YTZhOWMu
LmJhNGU4MDFhM2I5M2Y5ODEzMDdjNzUwMDZjMWU4MGQ5YTQ5YTUzNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKQEAgLTk0LDE3ICs5NCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHN0
YXRpYyB2b2lkIHNldE1hcmtlZChjb25zdCB2b2lkKik7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBhZGRUb1JlbWVtYmVyZWRTZXQoY29uc3QgSlNDZWxsKik7Ci0gICAgICAgIGJv
b2wgaXNJblJlbWVtYmVyZWRTZXQoY29uc3QgSlNDZWxsKiBjZWxsKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQoY2VsbCk7Ci0gICAgICAgICAgICBBU1NFUlQoIU9wdGlvbnM6
OmVuYWJsZUNvbmN1cnJlbnRKSVQoKSB8fCAhaXNDb21waWxhdGlvblRocmVhZCgpKTsKLSAgICAg
ICAgICAgIHJldHVybiBNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCktPmlzUmVtZW1iZXJlZChj
ZWxsKTsKLSAgICAgICAgfQogICAgICAgICBzdGF0aWMgYm9vbCBpc1dyaXRlQmFycmllckVuYWJs
ZWQoKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVy
KGNvbnN0IEpTQ2VsbCopOworICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3Qg
SlNDZWxsKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHdyaXRlQmFycmllcihjb25zdCBKU0NlbGwq
LCBKU1ZhbHVlKTsKICAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2Vs
bCosIEpTQ2VsbCopOworICAgICAgICBzdGF0aWMgdWludDhfdCogYWRkcmVzc09mQ2FyZEZvcihK
U0NlbGwqKTsKIAogICAgICAgICBXcml0ZUJhcnJpZXJCdWZmZXImIHdyaXRlQmFycmllckJ1ZmZl
cigpIHsgcmV0dXJuIG1fd3JpdGVCYXJyaWVyQnVmZmVyOyB9CiAgICAgICAgIHZvaWQgZmx1c2hX
cml0ZUJhcnJpZXJCdWZmZXIoSlNDZWxsKik7CkBAIC0xMjYsNyArMTIwLDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgLy8gdHJ1ZSBpZiBjb2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCiAg
ICAgICAgIGlubGluZSBib29sIGlzQ29sbGVjdGluZygpOwotICAgICAgICBpbmxpbmUgSGVhcE9w
ZXJhdGlvbiBvcGVyYXRpb25JblByb2dyZXNzKCkgeyByZXR1cm4gbV9vcGVyYXRpb25JblByb2dy
ZXNzOyB9CiAgICAgICAgIC8vIHRydWUgaWYgYW4gYWxsb2NhdGlvbiBvciBjb2xsZWN0aW9uIGlz
IGluIHByb2dyZXNzCiAgICAgICAgIGlubGluZSBib29sIGlzQnVzeSgpOwogICAgICAgICAKQEAg
LTI0Myw3ICsyMzYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBtYXJrUm9vdHMo
KTsKICAgICAgICAgdm9pZCBtYXJrUHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdFZpc2l0b3ImKTsK
ICAgICAgICAgdm9pZCBtYXJrVGVtcFNvcnRWZWN0b3JzKEhlYXBSb290VmlzaXRvciYpOwotICAg
ICAgICB0ZW1wbGF0ZSA8SGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZT4KICAgICAgICAgdm9p
ZCBjb3B5QmFja2luZ1N0b3JlcygpOwogICAgICAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNl
cygpOwogICAgICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKQEAg
LTI2NSwxMSArMjU3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBzaXplX3Qg
bV9taW5CeXRlc1BlckN5Y2xlOwogICAgICAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0Q29sbGVj
dDsKIAotICAgICAgICBzaXplX3QgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKLSAgICAgICAg
c2l6ZV90IG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGU7Ci0gICAgICAgIHNpemVfdCBtX21heEVk
ZW5TaXplOwotICAgICAgICBzaXplX3QgbV9tYXhIZWFwU2l6ZTsKLSAgICAgICAgYm9vbCBtX3No
b3VsZERvRnVsbENvbGxlY3Rpb247CisgICAgICAgIHNpemVfdCBtX2J5dGVzQWxsb2NhdGVkTGlt
aXQ7CisgICAgICAgIHNpemVfdCBtX2J5dGVzQWxsb2NhdGVkOworICAgICAgICBzaXplX3QgbV9i
eXRlc0FiYW5kb25lZDsKKwogICAgICAgICBzaXplX3QgbV90b3RhbEJ5dGVzVmlzaXRlZDsKICAg
ICAgICAgc2l6ZV90IG1fdG90YWxCeXRlc0NvcGllZDsKICAgICAgICAgCkBAIC0yODAsOCArMjcx
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0PEFy
cmF5QnVmZmVyPiBtX2FycmF5QnVmZmVyczsKICAgICAgICAgc2l6ZV90IG1fZXh0cmFNZW1vcnlV
c2FnZTsKIAotICAgICAgICBIYXNoU2V0PGNvbnN0IEpTQ2VsbCo+IG1fY29weWluZ1JlbWVtYmVy
ZWRTZXQ7Ci0KICAgICAgICAgUHJvdGVjdENvdW50U2V0IG1fcHJvdGVjdGVkVmFsdWVzOwogICAg
ICAgICBWZWN0b3I8VmVjdG9yPFZhbHVlU3RyaW5nUGFpciwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZs
b3c+KiA+IG1fdGVtcFNvcnRpbmdWZWN0b3JzOwogICAgICAgICBPd25QdHI8SGFzaFNldDxNYXJr
ZWRBcmd1bWVudEJ1ZmZlcio+PiBtX21hcmtMaXN0U2V0OwpAQCAtMzMzLDggKzMyMiw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBpZiAoaXNEZWZlcnJlZCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBpZiAoT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgPiBPcHRpb25zOjpnY01heEhl
YXBTaXplKCkgJiYgbV9pc1NhZmVUb0NvbGxlY3QgJiYgbV9vcGVyYXRpb25JblByb2dyZXNzID09
IE5vT3BlcmF0aW9uOwotICAgICAgICByZXR1cm4gbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA+
IG1fbWF4RWRlblNpemUgJiYgbV9pc1NhZmVUb0NvbGxlY3QgJiYgbV9vcGVyYXRpb25JblByb2dy
ZXNzID09IE5vT3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIG1fYnl0ZXNBbGxvY2F0ZWQg
PiBPcHRpb25zOjpnY01heEhlYXBTaXplKCkgJiYgbV9pc1NhZmVUb0NvbGxlY3QgJiYgbV9vcGVy
YXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uOworICAgICAgICByZXR1cm4gbV9ieXRlc0Fs
bG9jYXRlZCA+IG1fYnl0ZXNBbGxvY2F0ZWRMaW1pdCAmJiBtX2lzU2FmZVRvQ29sbGVjdCAmJiBt
X29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb247CiAgICAgfQogCiAgICAgYm9vbCBI
ZWFwOjppc0J1c3koKQpAQCAtMzQ0LDcgKzMzMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Ym9vbCBIZWFwOjppc0NvbGxlY3RpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbiB8fCBtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gRWRlbkNvbGxlY3Rpb247CisgICAgICAgIHJldHVybiBtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gQ29sbGVjdGlvbjsKICAgICB9CiAKICAgICBpbmxpbmUgSGVhcCogSGVhcDo6aGVhcChjb25z
dCBKU0NlbGwqIGNlbGwpCkBAIC0zODEsMzMgKzM3MCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGlubGluZSBib29sIEhlYXA6OmlzV3JpdGVCYXJyaWVyRW5hYmxlZCgpCiAgICAgewotI2lm
IEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykgfHwgRU5BQkxFKEdHQykKKyNpZiBFTkFC
TEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQg
SGVhcDo6d3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogZnJvbSwgSlNDZWxsKiB0bykKKyAgICBp
bmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKikKICAgICB7Ci0jaWYg
RU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogICAgICAgICBXcml0ZUJhcnJpZXJDb3Vu
dGVyczo6Y291bnRXcml0ZUJhcnJpZXIoKTsKLSNlbmRpZgotICAgICAgICBpZiAoIWZyb20gfHwg
IWlzTWFya2VkKGZyb20pKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoIXRvIHx8
IGlzTWFya2VkKHRvKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgSGVhcDo6aGVhcChm
cm9tKS0+YWRkVG9SZW1lbWJlcmVkU2V0KGZyb20pOwogICAgIH0KIAotICAgIGlubGluZSB2b2lk
IEhlYXA6OndyaXRlQmFycmllcihjb25zdCBKU0NlbGwqIGZyb20sIEpTVmFsdWUgdG8pCisgICAg
aW5saW5lIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopCisg
ICAgeworICAgICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6Y291bnRXcml0ZUJhcnJpZXIoKTsK
KyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxs
KiwgSlNWYWx1ZSkKICAgICB7Ci0jaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQog
ICAgICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6Y291bnRXcml0ZUJhcnJpZXIoKTsKLSNlbmRp
ZgotICAgICAgICBpZiAoIXRvLmlzQ2VsbCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB3cml0ZUJhcnJpZXIoZnJvbSwgdG8uYXNDZWxsKCkpOwogICAgIH0KIAogICAgIGlubGluZSB2
b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAppbmRleCA3NjkxMjdlODkwZmI3MjYwNTM0
ZjRlMzEzMjQ4OWUxMGUzNGMyMDZkLi44ZjBhMDIzMmExYTFjMjNhNTYyODcyYmNiMDU4ZTNmNDRl
YjNhY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9wZXJhdGlvbi5oCkBA
IC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEhlYXBPcGVyYXRpb24g
eyBOb09wZXJhdGlvbiwgQWxsb2NhdGlvbiwgRnVsbENvbGxlY3Rpb24sIEVkZW5Db2xsZWN0aW9u
IH07CitlbnVtIEhlYXBPcGVyYXRpb24geyBOb09wZXJhdGlvbiwgQWxsb2NhdGlvbiwgQ29sbGVj
dGlvbiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5jcHAKaW5kZXggNjg4ZGU0MmUzZTEyOWY4MTE5NTYwODIxNmVkZDg5OGMzYjhj
YTFiNy4uMzk5MDdjNzE1ZWRjNTZjOTI4YTljYzUxMTU3Y2RhOTMyMjQ0ODJjYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCkBAIC01NywyOSArNTcsOCBAQCBNYXJr
U3RhY2tBcnJheTo6TWFya1N0YWNrQXJyYXkoQmxvY2tBbGxvY2F0b3ImIGJsb2NrQWxsb2NhdG9y
KQogCiBNYXJrU3RhY2tBcnJheTo6fk1hcmtTdGFja0FycmF5KCkKIHsKLSAgICBBU1NFUlQobV9u
dW1iZXJPZlNlZ21lbnRzID09IDEpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAx
KTsKKyAgICBBU1NFUlQobV9udW1iZXJPZlNlZ21lbnRzID09IDEgJiYgbV9zZWdtZW50cy5zaXpl
KCkgPT0gMSk7CiAgICAgbV9ibG9ja0FsbG9jYXRvci5kZWFsbG9jYXRlKE1hcmtTdGFja1NlZ21l
bnQ6OmRlc3Ryb3kobV9zZWdtZW50cy5yZW1vdmVIZWFkKCkpKTsKLSAgICBtX251bWJlck9mU2Vn
bWVudHMtLTsKLSAgICBBU1NFUlQoIW1fbnVtYmVyT2ZTZWdtZW50cyk7Ci0gICAgQVNTRVJUKCFt
X3NlZ21lbnRzLnNpemUoKSk7Ci19Ci0KLXZvaWQgTWFya1N0YWNrQXJyYXk6OmNsZWFyKCkKLXsK
LSAgICBpZiAoIW1fc2VnbWVudHMuaGVhZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgTWFya1N0
YWNrU2VnbWVudCogbmV4dDsKLSAgICBmb3IgKE1hcmtTdGFja1NlZ21lbnQqIGN1cnJlbnQgPSBt
X3NlZ21lbnRzLmhlYWQoKTsgY3VycmVudC0+bmV4dCgpOyBjdXJyZW50ID0gbmV4dCkgewotICAg
ICAgICBuZXh0ID0gY3VycmVudC0+bmV4dCgpOwotICAgICAgICBtX3NlZ21lbnRzLnJlbW92ZShj
dXJyZW50KTsKLSAgICAgICAgbV9ibG9ja0FsbG9jYXRvci5kZWFsbG9jYXRlKE1hcmtTdGFja1Nl
Z21lbnQ6OmRlc3Ryb3koY3VycmVudCkpOwotICAgIH0KLSAgICBtX3RvcCA9IDA7Ci0gICAgbV9u
dW1iZXJPZlNlZ21lbnRzID0gMTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgbV9zZWdtZW50
cy5oZWFkKCktPm1fdG9wID0gMDsKLSNlbmRpZgogfQogCiB2b2lkIE1hcmtTdGFja0FycmF5Ojpl
eHBhbmQoKQpAQCAtMTg4LDI4ICsxNjcsNCBAQCB2b2lkIE1hcmtTdGFja0FycmF5OjpzdGVhbFNv
bWVDZWxsc0Zyb20oTWFya1N0YWNrQXJyYXkmIG90aGVyLCBzaXplX3QgaWRsZVRocmVhZAogICAg
ICAgICBhcHBlbmQob3RoZXIucmVtb3ZlTGFzdCgpKTsKIH0KIAotdm9pZCBNYXJrU3RhY2tBcnJh
eTo6ZmlsbFZlY3RvcihWZWN0b3I8Y29uc3QgSlNDZWxsKj4mIHZlY3RvcikKLXsKLSAgICBBU1NF
UlQodmVjdG9yLnNpemUoKSA9PSBzaXplKCkpOwotCi0gICAgTWFya1N0YWNrU2VnbWVudCogY3Vy
cmVudFNlZ21lbnQgPSBtX3NlZ21lbnRzLmhlYWQoKTsKLSAgICBpZiAoIWN1cnJlbnRTZWdtZW50
KQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fdG9wOyArK2kpIHsKLSAgICAgICAgQVNTRVJUKGN1cnJlbnRT
ZWdtZW50LT5kYXRhKClbaV0pOwotICAgICAgICB2ZWN0b3JbY291bnQrK10gPSBjdXJyZW50U2Vn
bWVudC0+ZGF0YSgpW2ldOwotICAgIH0KLQotICAgIGN1cnJlbnRTZWdtZW50ID0gY3VycmVudFNl
Z21lbnQtPm5leHQoKTsKLSAgICB3aGlsZSAoY3VycmVudFNlZ21lbnQpIHsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNfc2VnbWVudENhcGFjaXR5OyArK2kpIHsKLSAgICAgICAg
ICAgIEFTU0VSVChjdXJyZW50U2VnbWVudC0+ZGF0YSgpW2ldKTsKLSAgICAgICAgICAgIHZlY3Rv
cltjb3VudCsrXSA9IGN1cnJlbnRTZWdtZW50LT5kYXRhKClbaV07Ci0gICAgICAgIH0KLSAgICAg
ICAgY3VycmVudFNlZ21lbnQgPSBjdXJyZW50U2VnbWVudC0+bmV4dCgpOwotICAgIH0KLX0KLQog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCmlu
ZGV4IDY3MjliYWQyMjEyYzhhMmIzZDFjODgyYjQyZWY3YTRiOTJmZDU2NDIuLmM5N2I2YTczNTMx
NDE3ZTU5ODAwMTc0ODkwNGFiOWM1NTRkODgxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5oCkBAIC01Miw3ICs1Miw2IEBACiAKICNpbmNsdWRlICJIZWFwQmxvY2suaCIK
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTAxLDkgKzEwMCw2IEBAIHB1YmxpYzoKICAgICBzaXpl
X3Qgc2l6ZSgpOwogICAgIGJvb2wgaXNFbXB0eSgpOwogCi0gICAgdm9pZCBmaWxsVmVjdG9yKFZl
Y3Rvcjxjb25zdCBKU0NlbGwqPiYpOwotICAgIHZvaWQgY2xlYXIoKTsKLQogcHJpdmF0ZToKICAg
ICB0ZW1wbGF0ZSA8c2l6ZV90IHNpemU+IHN0cnVjdCBDYXBhY2l0eUZyb21TaXplIHsKICAgICAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCB2YWx1ZSA9IChzaXplIC0gc2l6ZW9mKE1hcmtTdGFja1Nl
Z21lbnQpKSAvIHNpemVvZihjb25zdCBKU0NlbGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCmluZGV4IGMyYjBmNzJkZWJlZDVlMmJmMzVjMWIx
NzI5NjNkNmMzOTJjMTc0Y2MuLjc0NDAyMDg3NTdlMjcxMjdlNzI0YWJiYTU1YWZhNjFlYjQ0MjFk
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNw
cApAQCAtMTAsMTAgKzEwLDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgYm9vbCBp
c0xpc3RQYWdlZE91dChkb3VibGUgZGVhZGxpbmUsIERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxv
Y2s+JiBsaXN0KQorYm9vbCBNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIGRlYWRs
aW5lKQogewogICAgIHVuc2lnbmVkIGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID0gMDsKLSAgICBN
YXJrZWRCbG9jayogYmxvY2sgPSBsaXN0LmhlYWQoKTsKKyAgICBNYXJrZWRCbG9jayogYmxvY2sg
PSBtX2Jsb2NrTGlzdC5oZWFkKCk7CiAgICAgd2hpbGUgKGJsb2NrKSB7CiAgICAgICAgIGJsb2Nr
ID0gYmxvY2stPm5leHQoKTsKICAgICAgICAgKytpdGVyc1NpbmNlTGFzdFRpbWVDaGVjazsKQEAg
LTI0LDEzICsyNCw3IEBAIHN0YXRpYyBib29sIGlzTGlzdFBhZ2VkT3V0KGRvdWJsZSBkZWFkbGlu
ZSwgRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4mIGxpc3QpCiAgICAgICAgICAgICBpdGVy
c1NpbmNlTGFzdFRpbWVDaGVjayA9IDA7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQogCi1ib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChkb3VibGUgZGVhZGxp
bmUpCi17Ci0gICAgaWYgKGlzTGlzdFBhZ2VkT3V0KGRlYWRsaW5lLCBtX2Jsb2NrTGlzdCkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDIsMjMgKzM2
LDE1IEBAIGlubGluZSB2b2lkKiBNYXJrZWRBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSGVscGVyKHNp
emVfdCBieXRlcykKICAgICB3aGlsZSAoIW1fZnJlZUxpc3QuaGVhZCkgewogICAgICAgICBEZWxh
eWVkUmVsZWFzZVNjb3BlIGRlbGF5ZWRSZWxlYXNlU2NvcGUoKm1fbWFya2VkU3BhY2UpOwogICAg
ICAgICBpZiAobV9jdXJyZW50QmxvY2spIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRC
bG9jayA9PSBtX25leHRCbG9ja1RvU3dlZXApOworICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVu
dEJsb2NrID09IG1fYmxvY2tzVG9Td2VlcCk7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+
ZGlkQ29uc3VtZUZyZWVMaXN0KCk7Ci0gICAgICAgICAgICBtX25leHRCbG9ja1RvU3dlZXAgPSBt
X2N1cnJlbnRCbG9jay0+bmV4dCgpOworICAgICAgICAgICAgbV9ibG9ja3NUb1N3ZWVwID0gbV9j
dXJyZW50QmxvY2stPm5leHQoKTsKICAgICAgICAgfQogCi0gICAgICAgIE1hcmtlZEJsb2NrKiBu
ZXh0OwotICAgICAgICBmb3IgKE1hcmtlZEJsb2NrKiYgYmxvY2sgPSBtX25leHRCbG9ja1RvU3dl
ZXA7IGJsb2NrOyBibG9jayA9IG5leHQpIHsKLSAgICAgICAgICAgIG5leHQgPSBibG9jay0+bmV4
dCgpOwotCisgICAgICAgIGZvciAoTWFya2VkQmxvY2sqJiBibG9jayA9IG1fYmxvY2tzVG9Td2Vl
cDsgYmxvY2s7IGJsb2NrID0gYmxvY2stPm5leHQoKSkgewogICAgICAgICAgICAgTWFya2VkQmxv
Y2s6OkZyZWVMaXN0IGZyZWVMaXN0ID0gYmxvY2stPnN3ZWVwKE1hcmtlZEJsb2NrOjpTd2VlcFRv
RnJlZUxpc3QpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWZyZWVMaXN0LmhlYWQp
IHsKICAgICAgICAgICAgICAgICBibG9jay0+ZGlkQ29uc3VtZUVtcHR5RnJlZUxpc3QoKTsKLSAg
ICAgICAgICAgICAgICBtX2Jsb2NrTGlzdC5yZW1vdmUoYmxvY2spOwotICAgICAgICAgICAgICAg
IG1fYmxvY2tMaXN0LnB1c2goYmxvY2spOwotICAgICAgICAgICAgICAgIGlmICghbV9sYXN0RnVs
bEJsb2NrKQotICAgICAgICAgICAgICAgICAgICBtX2xhc3RGdWxsQmxvY2sgPSBibG9jazsKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIApAQCAtODIsNyArNjgsNiBA
QCBpbmxpbmUgdm9pZCogTWFya2VkQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUhlbHBlcihzaXplX3Qg
Ynl0ZXMpCiAgICAgTWFya2VkQmxvY2s6OkZyZWVDZWxsKiBoZWFkID0gbV9mcmVlTGlzdC5oZWFk
OwogICAgIG1fZnJlZUxpc3QuaGVhZCA9IGhlYWQtPm5leHQ7CiAgICAgQVNTRVJUKGhlYWQpOwot
ICAgIG1fbWFya2VkU3BhY2UtPmRpZEFsbG9jYXRlSW5CbG9jayhtX2N1cnJlbnRCbG9jayk7CiAg
ICAgcmV0dXJuIGhlYWQ7CiB9CiAgICAgCkBAIC0xNTEsNyArMTM2LDcgQEAgdm9pZCBNYXJrZWRB
bGxvY2F0b3I6OmFkZEJsb2NrKE1hcmtlZEJsb2NrKiBibG9jaykKICAgICBBU1NFUlQoIW1fZnJl
ZUxpc3QuaGVhZCk7CiAgICAgCiAgICAgbV9ibG9ja0xpc3QuYXBwZW5kKGJsb2NrKTsKLSAgICBt
X25leHRCbG9ja1RvU3dlZXAgPSBtX2N1cnJlbnRCbG9jayA9IGJsb2NrOworICAgIG1fYmxvY2tz
VG9Td2VlcCA9IG1fY3VycmVudEJsb2NrID0gYmxvY2s7CiAgICAgbV9mcmVlTGlzdCA9IGJsb2Nr
LT5zd2VlcChNYXJrZWRCbG9jazo6U3dlZXBUb0ZyZWVMaXN0KTsKICAgICBtX21hcmtlZFNwYWNl
LT5kaWRBZGRCbG9jayhibG9jayk7CiB9CkBAIC0xNjIsMjcgKzE0Nyw5IEBAIHZvaWQgTWFya2Vk
QWxsb2NhdG9yOjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jayogYmxvY2spCiAgICAgICAgIG1fY3Vy
cmVudEJsb2NrID0gbV9jdXJyZW50QmxvY2stPm5leHQoKTsKICAgICAgICAgbV9mcmVlTGlzdCA9
IE1hcmtlZEJsb2NrOjpGcmVlTGlzdCgpOwogICAgIH0KLSAgICBpZiAobV9uZXh0QmxvY2tUb1N3
ZWVwID09IGJsb2NrKQotICAgICAgICBtX25leHRCbG9ja1RvU3dlZXAgPSBtX25leHRCbG9ja1Rv
U3dlZXAtPm5leHQoKTsKLQotICAgIGlmIChibG9jayA9PSBtX2xhc3RGdWxsQmxvY2spCi0gICAg
ICAgIG1fbGFzdEZ1bGxCbG9jayA9IG1fbGFzdEZ1bGxCbG9jay0+cHJldigpOwotICAgIAorICAg
IGlmIChtX2Jsb2Nrc1RvU3dlZXAgPT0gYmxvY2spCisgICAgICAgIG1fYmxvY2tzVG9Td2VlcCA9
IG1fYmxvY2tzVG9Td2VlcC0+bmV4dCgpOwogICAgIG1fYmxvY2tMaXN0LnJlbW92ZShibG9jayk7
CiB9CiAKLXZvaWQgTWFya2VkQWxsb2NhdG9yOjpyZXNldCgpCi17Ci0gICAgbV9sYXN0QWN0aXZl
QmxvY2sgPSAwOwotICAgIG1fY3VycmVudEJsb2NrID0gMDsKLSAgICBtX2ZyZWVMaXN0ID0gTWFy
a2VkQmxvY2s6OkZyZWVMaXN0KCk7Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVz
cygpID09IEZ1bGxDb2xsZWN0aW9uKQotICAgICAgICBtX2xhc3RGdWxsQmxvY2sgPSAwOwotCi0g
ICAgaWYgKG1fbGFzdEZ1bGxCbG9jaykKLSAgICAgICAgbV9uZXh0QmxvY2tUb1N3ZWVwID0gbV9s
YXN0RnVsbEJsb2NrLT5uZXh0KCkgPyBtX2xhc3RGdWxsQmxvY2stPm5leHQoKSA6IG1fbGFzdEZ1
bGxCbG9jazsKLSAgICBlbHNlCi0gICAgICAgIG1fbmV4dEJsb2NrVG9Td2VlcCA9IG1fYmxvY2tM
aXN0LmhlYWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCmluZGV4IGUwZDNlODkwMmE5ZmQzM2Q0NDBmMjEx
OWZkNWE2OGVjYmY3YjhiZGIuLjNhNjI5YzNlM2Y0Mzk0YWJlMzhlNjA0YTI1YWI4MjBjMGQ2OTE5
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCkBA
IC01Miw4ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgTWFya2VkQmxvY2s6OkZyZWVMaXN0IG1fZnJl
ZUxpc3Q7CiAgICAgTWFya2VkQmxvY2sqIG1fY3VycmVudEJsb2NrOwogICAgIE1hcmtlZEJsb2Nr
KiBtX2xhc3RBY3RpdmVCbG9jazsKLSAgICBNYXJrZWRCbG9jayogbV9uZXh0QmxvY2tUb1N3ZWVw
OwotICAgIE1hcmtlZEJsb2NrKiBtX2xhc3RGdWxsQmxvY2s7CisgICAgTWFya2VkQmxvY2sqIG1f
YmxvY2tzVG9Td2VlcDsKICAgICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiBtX2Jsb2Nr
TGlzdDsKICAgICBzaXplX3QgbV9jZWxsU2l6ZTsKICAgICBNYXJrZWRCbG9jazo6RGVzdHJ1Y3Rv
clR5cGUgbV9kZXN0cnVjdG9yVHlwZTsKQEAgLTY5LDggKzY4LDcgQEAgaW5saW5lIHB0cmRpZmZf
dCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkKIGlubGluZSBNYXJrZWRB
bGxvY2F0b3I6Ok1hcmtlZEFsbG9jYXRvcigpCiAgICAgOiBtX2N1cnJlbnRCbG9jaygwKQogICAg
ICwgbV9sYXN0QWN0aXZlQmxvY2soMCkKLSAgICAsIG1fbmV4dEJsb2NrVG9Td2VlcCgwKQotICAg
ICwgbV9sYXN0RnVsbEJsb2NrKDApCisgICAgLCBtX2Jsb2Nrc1RvU3dlZXAoMCkKICAgICAsIG1f
Y2VsbFNpemUoMCkKICAgICAsIG1fZGVzdHJ1Y3RvclR5cGUoTWFya2VkQmxvY2s6Ok5vbmUpCiAg
ICAgLCBtX2hlYXAoMCkKQEAgLTEwNCw2ICsxMDIsMTQgQEAgaW5saW5lIHZvaWQqIE1hcmtlZEFs
bG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQogICAgIHJldHVybiBoZWFkOwogfQogCitp
bmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnJlc2V0KCkKK3sKKyAgICBtX2xhc3RBY3RpdmVC
bG9jayA9IDA7CisgICAgbV9jdXJyZW50QmxvY2sgPSAwOworICAgIG1fZnJlZUxpc3QgPSBNYXJr
ZWRCbG9jazo6RnJlZUxpc3QoKTsKKyAgICBtX2Jsb2Nrc1RvU3dlZXAgPSBtX2Jsb2NrTGlzdC5o
ZWFkKCk7Cit9CisKIGlubGluZSB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmco
KQogewogICAgIEFTU0VSVCghbV9sYXN0QWN0aXZlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCmluZGV4IDM0YTA5MzFmMzlmZDNlOTEwMTdkNjk2YTc1
Y2Y1ZGYwNWUyYzJlNTcuLjEwODU4MDQyZDQyNjM0YWVhYWFhMzg4OWNjZDNkOWI1OTcxMzI4Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKQEAgLTE5Nyw0
NSArMTk3LDYgQEAgdm9pZCBNYXJrZWRCbG9jazo6c3RvcEFsbG9jYXRpbmcoY29uc3QgRnJlZUxp
c3QmIGZyZWVMaXN0KQogICAgIG1fc3RhdGUgPSBNYXJrZWQ7CiB9CiAKLXZvaWQgTWFya2VkQmxv
Y2s6OmNsZWFyTWFya3MoKQotewotICAgIGlmIChoZWFwKCktPm9wZXJhdGlvbkluUHJvZ3Jlc3Mo
KSA9PSBKU0M6OkVkZW5Db2xsZWN0aW9uKQotICAgICAgICB0aGlzLT5jbGVhck1hcmtzV2l0aENv
bGxlY3Rpb25UeXBlPEVkZW5Db2xsZWN0aW9uPigpOwotICAgIGVsc2UKLSAgICAgICAgdGhpcy0+
Y2xlYXJNYXJrc1dpdGhDb2xsZWN0aW9uVHlwZTxGdWxsQ29sbGVjdGlvbj4oKTsKLX0KLQotdm9p
ZCBNYXJrZWRCbG9jazo6Y2xlYXJSZW1lbWJlcmVkU2V0KCkKLXsKLSAgICBtX3JlbWVtYmVyZWRT
ZXQuY2xlYXJBbGwoKTsKLX0KLQotdGVtcGxhdGUgPEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5
cGU+Ci12b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzV2l0aENvbGxlY3Rpb25UeXBlKCkKLXsK
LSAgICBBU1NFUlQoY29sbGVjdGlvblR5cGUgPT0gRnVsbENvbGxlY3Rpb24gfHwgY29sbGVjdGlv
blR5cGUgPT0gRWRlbkNvbGxlY3Rpb24pOwotICAgIEhFQVBfTE9HX0JMT0NLX1NUQVRFX1RSQU5T
SVRJT04odGhpcyk7Ci0KLSAgICBBU1NFUlQobV9zdGF0ZSAhPSBOZXcgJiYgbV9zdGF0ZSAhPSBG
cmVlTGlzdGVkKTsKLSAgICBpZiAoY29sbGVjdGlvblR5cGUgPT0gRnVsbENvbGxlY3Rpb24pIHsK
LSAgICAgICAgbV9tYXJrcy5jbGVhckFsbCgpOwotICAgICAgICBtX3JlbWVtYmVyZWRTZXQuY2xl
YXJBbGwoKTsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIHdpbGwgYmVjb21lIHRydWUgYXQgdGhlIGVu
ZCBvZiB0aGUgbWFyayBwaGFzZS4gV2Ugc2V0IGl0IG5vdyB0bwotICAgIC8vIGF2b2lkIGFuIGV4
dHJhIHBhc3MgdG8gZG8gc28gbGF0ZXIuCi0gICAgbV9zdGF0ZSA9IE1hcmtlZDsKLX0KLQotdm9p
ZCBNYXJrZWRCbG9jazo6bGFzdENoYW5jZVRvRmluYWxpemUoKQotewotICAgIG1fd2Vha1NldC5s
YXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwotCi0gICAgY2xlYXJOZXdseUFsbG9jYXRlZCgpOwotICAg
IGNsZWFyTWFya3NXaXRoQ29sbGVjdGlvblR5cGU8RnVsbENvbGxlY3Rpb24+KCk7Ci0gICAgc3dl
ZXAoKTsKLX0KLQogTWFya2VkQmxvY2s6OkZyZWVMaXN0IE1hcmtlZEJsb2NrOjpyZXN1bWVBbGxv
Y2F0aW5nKCkKIHsKICAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggNzNmNTZjZDcyZjhh
MTliNTNhMTE4ZDRlOWY0M2Y0YzY2YzRmZmY3OS4uMmYxYmZiZDc4ZjhiODkwZDRiMWZjYTc3MjA0
NDYxYzY4ODYzOTUzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5o
CkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiQmxvY2tBbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJIZWFwQmxvY2suaCIKIAotI2luY2x1ZGUgIkhlYXBPcGVyYXRpb24uaCIKICNpbmNsdWRlICJX
ZWFrU2V0LmgiCiAjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9n
Lmg+CkBAIC03Myw3ICs3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGF0b21TaXplID0gMTY7IC8vIGJ5dGVzCisgICAgICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgYXRvbVNpemUgPSA4OyAvLyBieXRlcwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGF0b21TaGlmdEFtb3VudCA9IDQ7IC8vIGxvZ18yKGF0b21TaXplKSBGSVhNRTogQ2hhbmdl
IGF0b21TaXplIHRvIDE2LgogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9
IDY0ICogS0I7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYmxvY2tNYXNrID0gfihibG9j
a1NpemUgLSAxKTsgLy8gYmxvY2tTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28uCkBAIC0xNDEs
MTYgKzE0MCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzdG9wQWxsb2NhdGlu
Zyhjb25zdCBGcmVlTGlzdCYpOwogICAgICAgICBGcmVlTGlzdCByZXN1bWVBbGxvY2F0aW5nKCk7
IC8vIENhbGwgdGhpcyBpZiB5b3UgY2Fub25pY2FsaXplZCBhIGJsb2NrIGZvciBzb21lIG5vbi1j
b2xsZWN0aW9uIHJlbGF0ZWQgcHVycG9zZS4KICAgICAgICAgdm9pZCBkaWRDb25zdW1lRW1wdHlG
cmVlTGlzdCgpOyAvLyBDYWxsIHRoaXMgaWYgeW91IHN3ZWVwIGEgYmxvY2ssIGJ1dCB0aGUgcmV0
dXJuZWQgRnJlZUxpc3QgaXMgZW1wdHkuCi0gICAgICAgIHZvaWQgZGlkU3dlZXBUb05vQXZhaWwo
KTsgLy8gQ2FsbCB0aGlzIGlmIHlvdSBzd2VlcCBhIGJsb2NrIGFuZCBnZXQgYW4gZW1wdHkgZnJl
ZSBsaXN0IGJhY2suCiAKICAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSAibmV3bHkgYWxs
b2NhdGVkIiBiaXRtYXAgd2FzIG5vbi1udWxsIAogICAgICAgICAvLyBhbmQgd2FzIHN1Y2Nlc3Nm
dWxseSBjbGVhcmVkIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAgICAgICAgIGJvb2wgY2xlYXJOZXds
eUFsbG9jYXRlZCgpOwogICAgICAgICB2b2lkIGNsZWFyTWFya3MoKTsKLSAgICAgICAgdm9pZCBj
bGVhclJlbWVtYmVyZWRTZXQoKTsKLSAgICAgICAgdGVtcGxhdGUgPEhlYXBPcGVyYXRpb24gY29s
bGVjdGlvblR5cGU+Ci0gICAgICAgIHZvaWQgY2xlYXJNYXJrc1dpdGhDb2xsZWN0aW9uVHlwZSgp
OwotCiAgICAgICAgIHNpemVfdCBtYXJrQ291bnQoKTsKICAgICAgICAgYm9vbCBpc0VtcHR5KCk7
CiAKQEAgLTE2NywxMSArMTYxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0
TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBjbGVhck1hcmtlZChjb25zdCB2b2lk
Kik7CiAKLSAgICAgICAgdm9pZCBzZXRSZW1lbWJlcmVkKGNvbnN0IHZvaWQqKTsKLSAgICAgICAg
dm9pZCBjbGVhclJlbWVtYmVyZWQoY29uc3Qgdm9pZCopOwotICAgICAgICB2b2lkIGF0b21pY0Ns
ZWFyUmVtZW1iZXJlZChjb25zdCB2b2lkKik7Ci0gICAgICAgIGJvb2wgaXNSZW1lbWJlcmVkKGNv
bnN0IHZvaWQqKTsKLQogICAgICAgICBib29sIGlzTmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCop
OwogICAgICAgICB2b2lkIHNldE5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKICAgICAgICAg
dm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKQEAgLTIwMSwxMSArMTkwLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNpemVfdCBtX2F0b21zUGVyQ2VsbDsKICAgICAg
ICAgc2l6ZV90IG1fZW5kQXRvbTsgLy8gVGhpcyBpcyBhIGZ1enp5IGVuZC4gQWx3YXlzIHRlc3Qg
Zm9yIDwgbV9lbmRBdG9tLgogI2lmIEVOQUJMRShQQVJBTExFTF9HQykKLSAgICAgICAgV1RGOjpC
aXRtYXA8YXRvbXNQZXJCbG9jaywgV1RGOjpCaXRtYXBBdG9taWMsIHVpbnQ4X3Q+IG1fbWFya3M7
Ci0gICAgICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2ssIFdURjo6Qml0bWFwQXRvbWljLCB1
aW50OF90PiBtX3JlbWVtYmVyZWRTZXQ7CisgICAgICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxv
Y2ssIFdURjo6Qml0bWFwQXRvbWljPiBtX21hcmtzOwogI2Vsc2UKLSAgICAgICAgV1RGOjpCaXRt
YXA8YXRvbXNQZXJCbG9jaywgV1RGOjpCaXRtYXBOb3RBdG9taWMsIHVpbnQ4X3Q+IG1fbWFya3M7
Ci0gICAgICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2ssIFdURjo6Qml0bWFwTm90QXRvbWlj
LCB1aW50OF90PiBtX3JlbWVtYmVyZWRTZXQ7CisgICAgICAgIFdURjo6Qml0bWFwPGF0b21zUGVy
QmxvY2ssIFdURjo6Qml0bWFwTm90QXRvbWljPiBtX21hcmtzOwogI2VuZGlmCiAgICAgICAgIE93
blB0cjxXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPj4gbV9uZXdseUFsbG9jYXRlZDsKIApAQCAt
MjQ3LDYgKzIzNCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8TWFya2VkQmxvY2sqPihyZWludGVycHJldF9jYXN0PEJpdHM+KHApICYgYmxvY2tN
YXNrKTsKICAgICB9CiAKKyAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6bGFzdENoYW5jZVRv
RmluYWxpemUoKQorICAgIHsKKyAgICAgICAgbV93ZWFrU2V0Lmxhc3RDaGFuY2VUb0ZpbmFsaXpl
KCk7CisKKyAgICAgICAgY2xlYXJOZXdseUFsbG9jYXRlZCgpOworICAgICAgICBjbGVhck1hcmtz
KCk7CisgICAgICAgIHN3ZWVwKCk7CisgICAgfQorCiAgICAgaW5saW5lIE1hcmtlZEFsbG9jYXRv
ciogTWFya2VkQmxvY2s6OmFsbG9jYXRvcigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
bV9hbGxvY2F0b3I7CkBAIC0yOTUsMTAgKzI5MSwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSEVBUF9MT0dfQkxPQ0tfU1RBVEVfVFJBTlNJVElPTih0aGlzKTsKIAogICAgICAgICBBU1NF
UlQoIW1fbmV3bHlBbGxvY2F0ZWQpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKQor
ICAgICAgICAgICAgQVNTRVJUKG1fbWFya3MuZ2V0KGkpKTsKKyNlbmRpZgogICAgICAgICBBU1NF
UlQobV9zdGF0ZSA9PSBGcmVlTGlzdGVkKTsKICAgICAgICAgbV9zdGF0ZSA9IE1hcmtlZDsKICAg
ICB9CiAKKyAgICBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcygpCisgICAgewor
ICAgICAgICBIRUFQX0xPR19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOworCisgICAgICAg
IEFTU0VSVChtX3N0YXRlICE9IE5ldyAmJiBtX3N0YXRlICE9IEZyZWVMaXN0ZWQpOworICAgICAg
ICBtX21hcmtzLmNsZWFyQWxsKCk7CisKKyAgICAgICAgLy8gVGhpcyB3aWxsIGJlY29tZSB0cnVl
IGF0IHRoZSBlbmQgb2YgdGhlIG1hcmsgcGhhc2UuIFdlIHNldCBpdCBub3cgdG8KKyAgICAgICAg
Ly8gYXZvaWQgYW4gZXh0cmEgcGFzcyB0byBkbyBzbyBsYXRlci4KKyAgICAgICAgbV9zdGF0ZSA9
IE1hcmtlZDsKKyAgICB9CisKICAgICBpbmxpbmUgc2l6ZV90IE1hcmtlZEJsb2NrOjptYXJrQ291
bnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWFya3MuY291bnQoKTsKQEAgLTMzNCwyNiAr
MzQ2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2Fz
dDxCaXRzPihwKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Qml0cz4odGhpcykpIC8gYXRvbVNpemU7CiAg
ICAgfQogCi0gICAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OnNldFJlbWVtYmVyZWQoY29uc3Qg
dm9pZCogcCkKLSAgICB7Ci0gICAgICAgIG1fcmVtZW1iZXJlZFNldC5zZXQoYXRvbU51bWJlcihw
KSk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFyUmVtZW1iZXJl
ZChjb25zdCB2b2lkKiBwKQotICAgIHsKLSAgICAgICAgbV9yZW1lbWJlcmVkU2V0LmNsZWFyKGF0
b21OdW1iZXIocCkpOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjphdG9t
aWNDbGVhclJlbWVtYmVyZWQoY29uc3Qgdm9pZCogcCkKLSAgICB7Ci0gICAgICAgIG1fcmVtZW1i
ZXJlZFNldC5jb25jdXJyZW50VGVzdEFuZENsZWFyKGF0b21OdW1iZXIocCkpOwotICAgIH0KLQot
ICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc1JlbWVtYmVyZWQoY29uc3Qgdm9pZCogcCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX3JlbWVtYmVyZWRTZXQuZ2V0KGF0b21OdW1iZXIocCkp
OwotICAgIH0KLQogICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChjb25zdCB2
b2lkKiBwKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWFya3MuZ2V0KGF0b21OdW1iZXIocCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCmluZGV4IDRkZWNh
MTNhMDdiZmE4NzdhMzc2YTlmOGZhY2ZhNjY2Y2M1NDE4OTkuLjQ4NjQ4ZDI3YmQxMGVlMzQ0YWUy
YjFkYmI3ZDMwNjc0YTNmY2ZiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5jcHAKQEAgLTEwNSw3ICsxMDUsNiBAQCBNYXJrZWRTcGFjZTo6fk1hcmtlZFNwYWNl
KCkKIHsKICAgICBGcmVlIGZyZWUoRnJlZTo6RnJlZUFsbCwgdGhpcyk7CiAgICAgZm9yRWFjaEJs
b2NrKGZyZWUpOwotICAgIEFTU0VSVCghbV9ibG9ja3Muc2V0KCkuc2l6ZSgpKTsKIH0KIAogc3Ry
dWN0IExhc3RDaGFuY2VUb0ZpbmFsaXplIDogTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKQEAg
LTE0NCwyNyArMTQzLDE3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCiAg
ICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvci5yZXNldCgpOwogICAgIG1fbm9ybWFsRGVz
dHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLnJlc2V0KCk7CiAgICAgbV9pbW1vcnRhbFN0cnVj
dHVyZURlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5yZXNldCgpOwotCi0gICAgbV9ibG9j
a3NXaXRoTmV3T2JqZWN0cy5jbGVhcigpOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjp2aXNpdFdl
YWtTZXRzKEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQogewogICAgIFZpc2l0V2Vh
a1NldCB2aXNpdFdlYWtTZXQoaGVhcFJvb3RWaXNpdG9yKTsKLSAgICBpZiAobV9oZWFwLT5vcGVy
YXRpb25JblByb2dyZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fYmxvY2tzV2l0aE5ld09iamVjdHMuc2l6ZSgpOyArK2kpCi0gICAg
ICAgICAgICB2aXNpdFdlYWtTZXQobV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXSk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIGZvckVhY2hCbG9jayh2aXNpdFdlYWtTZXQpOworICAgIGZvckVhY2hCbG9j
ayh2aXNpdFdlYWtTZXQpOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjpyZWFwV2Vha1NldHMoKQog
ewotICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBFZGVuQ29sbGVjdGlv
bikgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ibG9ja3NXaXRoTmV3T2Jq
ZWN0cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fYmxvY2tzV2l0aE5ld09iamVjdHNbaV0t
PnJlYXBXZWFrU2V0KCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGZvckVhY2hCbG9jazxSZWFwV2Vh
a1NldD4oKTsKKyAgICBmb3JFYWNoQmxvY2s8UmVhcFdlYWtTZXQ+KCk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPgpAQCAtMzE2LDI0ICszMDUsNiBAQCB2b2lkIE1hcmtlZFNwYWNl
OjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKICNlbmRpZgogfQogCi0jaWZuZGVmIE5ERUJVRwotc3Ry
dWN0IFZlcmlmeU1hcmtlZCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgdm9pZCBv
cGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykgeyBBU1NFUlQoYmxvY2stPm5lZWRzU3dlZXBp
bmcoKSk7IH0KLX07Ci0jZW5kaWYKLQotdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJNYXJrcygpCi17
Ci0gICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEVkZW5Db2xsZWN0aW9u
KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jsb2Nrc1dpdGhOZXdPYmpl
Y3RzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9ibG9ja3NXaXRoTmV3T2JqZWN0c1tpXS0+
Y2xlYXJNYXJrcygpOwotICAgIH0gZWxzZQotICAgICAgICBmb3JFYWNoQmxvY2s8Q2xlYXJNYXJr
cz4oKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgZm9yRWFjaEJsb2NrPFZlcmlmeU1hcmtlZD4oKTsK
LSNlbmRpZgotfQotCiB2b2lkIE1hcmtlZFNwYWNlOjp3aWxsU3RhcnRJdGVyYXRpbmcoKQogewog
ICAgIEFTU0VSVCghaXNJdGVyYXRpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaAppbmRleCA5Yzk3ZmJkMWJhNGRmZDFhNDQzMzE0MmEyYzRmYmNiYjJiZWY3MmJh
Li45NjgwNjcwM2ZiOWEyODkxZWY5NTQzN2NhZWY3MDRkZWUxMzkzZGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKQEAgLTQ2LDE3ICs0Niw3IEBAIGNsYXNzIFdl
YWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwogCiBzdHJ1Y3QgQ2xlYXJNYXJrcyA6IE1h
cmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2Nr
KiBibG9jaykKLSAgICB7Ci0gICAgICAgIGJsb2NrLT5jbGVhck1hcmtzKCk7Ci0gICAgfQotfTsK
LQotc3RydWN0IENsZWFyUmVtZW1iZXJlZFNldCA6IE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7
Ci0gICAgdm9pZCBvcGVyYXRvcigpKE1hcmtlZEJsb2NrKiBibG9jaykKLSAgICB7Ci0gICAgICAg
IGJsb2NrLT5jbGVhclJlbWVtYmVyZWRTZXQoKTsKLSAgICB9CisgICAgdm9pZCBvcGVyYXRvcigp
KE1hcmtlZEJsb2NrKiBibG9jaykgeyBibG9jay0+Y2xlYXJNYXJrcygpOyB9CiB9OwogCiBzdHJ1
Y3QgU3dlZXAgOiBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewpAQCAtMTE1LDEwICsxMDUsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZEFkZEJsb2NrKE1hcmtlZEJsb2NrKik7CiAgICAgdm9p
ZCBkaWRDb25zdW1lRnJlZUxpc3QoTWFya2VkQmxvY2sqKTsKLSAgICB2b2lkIGRpZEFsbG9jYXRl
SW5CbG9jayhNYXJrZWRCbG9jayopOwogCiAgICAgdm9pZCBjbGVhck1hcmtzKCk7Ci0gICAgdm9p
ZCBjbGVhclJlbWVtYmVyZWRTZXQoKTsKICAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsK
ICAgICB2b2lkIHN3ZWVwKCk7CiAgICAgc2l6ZV90IG9iamVjdENvdW50KCk7CkBAIC0xNjIsNyAr
MTUwLDYgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9jYXBhY2l0eTsKICAgICBib29sIG1faXNJ
dGVyYXRpbmc7CiAgICAgTWFya2VkQmxvY2tTZXQgbV9ibG9ja3M7Ci0gICAgVmVjdG9yPE1hcmtl
ZEJsb2NrKj4gbV9ibG9ja3NXaXRoTmV3T2JqZWN0czsKIAogICAgIERlbGF5ZWRSZWxlYXNlU2Nv
cGUqIG1fY3VycmVudERlbGF5ZWRSZWxlYXNlU2NvcGU7CiB9OwpAQCAtMjc1LDE0ICsyNjIsOSBA
QCBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6ZGlkQWRkQmxvY2soTWFya2VkQmxvY2sqIGJsb2Nr
KQogICAgIG1fYmxvY2tzLmFkZChibG9jayk7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZFNwYWNl
OjpkaWRBbGxvY2F0ZUluQmxvY2soTWFya2VkQmxvY2sqIGJsb2NrKQotewotICAgIG1fYmxvY2tz
V2l0aE5ld09iamVjdHMuYXBwZW5kKGJsb2NrKTsKLX0KLQotaW5saW5lIHZvaWQgTWFya2VkU3Bh
Y2U6OmNsZWFyUmVtZW1iZXJlZFNldCgpCitpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Y2xlYXJN
YXJrcygpCiB7Ci0gICAgZm9yRWFjaEJsb2NrPENsZWFyUmVtZW1iZXJlZFNldD4oKTsKKyAgICBm
b3JFYWNoQmxvY2s8Q2xlYXJNYXJrcz4oKTsKIH0KIAogaW5saW5lIHNpemVfdCBNYXJrZWRTcGFj
ZTo6b2JqZWN0Q291bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U2xvdFZpc2l0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
Y3BwCmluZGV4IDA1ZmIwMDFhN2M1N2FkNTU2Y2VmMjczNzk0N2Y5YTVkNDY4ZGU3YTEuLmNkYTJi
NzlhMGY4YTBhYmNhZGM3MmZiZGVkNzg2YmJiYzIyMGJiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgU2xvdFZpc2l0b3I6
OlNsb3RWaXNpdG9yKEdDVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVkKQogCiBTbG90VmlzaXRvcjo6
flNsb3RWaXNpdG9yKCkKIHsKLSAgICBjbGVhck1hcmtTdGFjaygpOworICAgIEFTU0VSVChtX3N0
YWNrLmlzRW1wdHkoKSk7CiB9CiAKIHZvaWQgU2xvdFZpc2l0b3I6OnNldHVwKCkKQEAgLTYzLDEx
ICs2Myw2IEBAIHZvaWQgU2xvdFZpc2l0b3I6OnJlc2V0KCkKICAgICB9CiB9CiAKLXZvaWQgU2xv
dFZpc2l0b3I6OmNsZWFyTWFya1N0YWNrKCkKLXsKLSAgICBtX3N0YWNrLmNsZWFyKCk7Ci19Ci0K
IHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZChDb25zZXJ2YXRpdmVSb290cyYgY29uc2VydmF0aXZl
Um9vdHMpCiB7CiAgICAgU3RhY2tTdGF0czo6cHJvYmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvci5oCmluZGV4IDRhOGRjM2U5NzUzMDRlNjA0YmVkZTRmYTE1MWI1Zjcz
YTlhMWVkYWEuLmE0YWFjZGM1YmYwMzAzYzcwMDQ3NmU0NDE2YmQ0NTg5YTNiMWUyMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaApAQCAtNDksMTAgKzQ5LDYgQEAg
cHVibGljOgogICAgIFNsb3RWaXNpdG9yKEdDVGhyZWFkU2hhcmVkRGF0YSYpOwogICAgIH5TbG90
VmlzaXRvcigpOwogCi0gICAgTWFya1N0YWNrQXJyYXkmIG1hcmtTdGFjaygpIHsgcmV0dXJuIG1f
c3RhY2s7IH0KLQotICAgIEhlYXAqIGhlYXAoKSBjb25zdDsKLQogICAgIHZvaWQgYXBwZW5kKENv
bnNlcnZhdGl2ZVJvb3RzJik7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBh
cHBlbmQoSklUV3JpdGVCYXJyaWVyPFQ+Kik7CkBAIC02NSwxOSArNjEsMTcgQEAgcHVibGljOgog
ICAgIHZvaWQgYXBwZW5kVW5iYXJyaWVyZWRWYWx1ZShKU1ZhbHVlKik7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgICB2b2lkIGFwcGVuZFVuYmFycmllcmVkV2VhayhXZWFrPFQ+Kik7Ci0g
ICAgdm9pZCB1bmNvbmRpdGlvbmFsbHlBcHBlbmQoSlNDZWxsKik7CiAgICAgCiAgICAgdm9pZCBh
ZGRPcGFxdWVSb290KHZvaWQqKTsKICAgICBib29sIGNvbnRhaW5zT3BhcXVlUm9vdCh2b2lkKik7
CiAgICAgVHJpU3RhdGUgY29udGFpbnNPcGFxdWVSb290VHJpU3RhdGUodm9pZCopOwogICAgIGlu
dCBvcGFxdWVSb290Q291bnQoKTsKIAotICAgIEdDVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVkRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkOyB9CisgICAgR0NUaHJlYWRTaGFyZWREYXRhJiBz
aGFyZWREYXRhKCkgeyByZXR1cm4gbV9zaGFyZWQ7IH0KICAgICBib29sIGlzRW1wdHkoKSB7IHJl
dHVybiBtX3N0YWNrLmlzRW1wdHkoKTsgfQogCiAgICAgdm9pZCBzZXR1cCgpOwogICAgIHZvaWQg
cmVzZXQoKTsKLSAgICB2b2lkIGNsZWFyTWFya1N0YWNrKCk7CiAKICAgICBzaXplX3QgYnl0ZXNW
aXNpdGVkKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlc1Zpc2l0ZWQ7IH0KICAgICBzaXplX3QgYnl0
ZXNDb3BpZWQoKSBjb25zdCB7IHJldHVybiBtX2J5dGVzQ29waWVkOyB9CkBAIC05NSw3ICs4OSw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29weUxhdGVyKEpTQ2VsbCosIENvcHlUb2tlbiwgdm9p
ZCosIHNpemVfdCk7CiAgICAgCi0gICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeVVzYWdlKEpTQ2Vs
bCogb3duZXIsIHNpemVfdCk7CisgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeVVzYWdlKHNpemVf
dCBzaXplKTsKICAgICAKICAgICB2b2lkIGFkZFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIoV2Vha1Jl
ZmVyZW5jZUhhcnZlc3RlciopOwogICAgIHZvaWQgYWRkVW5jb25kaXRpb25hbEZpbmFsaXplcihV
bmNvbmRpdGlvbmFsRmluYWxpemVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TbG90VmlzaXRvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9ySW5saW5lcy5oCmluZGV4IGNkNjNhYjUwNDBiN2YyNjVlNDRjZTI3ZmEzZGNh
YWUyYmM0MTkyYzcuLmQ1MDNkMWM3MWZjMmRmY2ZlNTg3YmE4YTViM2Q1NDI0YzVmMGMyYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCkBA
IC0xMDUsMTQgKzEwNSw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6aW50ZXJu
YWxBcHBlbmQodm9pZCogZnJvbSwgSlNDZWxsKiBjZWxsKQogICAgICAgICAKICAgICBNQVJLX0xP
R19DSElMRCgqdGhpcywgY2VsbCk7CiAKLSAgICB1bmNvbmRpdGlvbmFsbHlBcHBlbmQoY2VsbCk7
Ci19Ci0KLUFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6dW5jb25kaXRpb25hbGx5QXBw
ZW5kKEpTQ2VsbCogY2VsbCkKLXsKLSAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwot
ICAgIG1fdmlzaXRDb3VudCsrOwotICAgICAgICAKICAgICAvLyBTaG91bGQgbmV2ZXIgYXR0ZW1w
dCB0byBtYXJrIHNvbWV0aGluZyB0aGF0IGlzIHphcHBlZC4KICAgICBBU1NFUlQoIWNlbGwtPmlz
WmFwcGVkKCkpOwogICAgICAgICAKQEAgLTIyNiw5ICsyMTgsNiBAQCBpbmxpbmUgdm9pZCBTbG90
VmlzaXRvcjo6ZG9uYXRlQW5kRHJhaW4oKQogaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmNvcHlM
YXRlcihKU0NlbGwqIG93bmVyLCBDb3B5VG9rZW4gdG9rZW4sIHZvaWQqIHB0ciwgc2l6ZV90IGJ5
dGVzKQogewogICAgIEFTU0VSVChieXRlcyk7Ci0gICAgLy8gV2UgZG9uJ3QgZG8gYW55IGNvcHlp
bmcgZHVyaW5nIEVkZW5Db2xsZWN0aW9ucy4KLSAgICBBU1NFUlQoaGVhcCgpLT5vcGVyYXRpb25J
blByb2dyZXNzKCkgIT0gRWRlbkNvbGxlY3Rpb24pOwotCiAgICAgbV9ieXRlc0NvcGllZCArPSBi
eXRlczsKIAogICAgIENvcGllZEJsb2NrKiBibG9jayA9IENvcGllZFNwYWNlOjpibG9ja0Zvcihw
dHIpOwpAQCAtMjM3LDE1ICsyMjYsMTQgQEAgaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmNvcHlM
YXRlcihKU0NlbGwqIG93bmVyLCBDb3B5VG9rZW4gdG9rZW4sIHZvaWQqIHB0ciwgc2kKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChibG9jay0+aXNQaW5uZWQoKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgYmxvY2stPnJlcG9ydExpdmVCeXRlcyhvd25lciwgdG9rZW4sIGJ5dGVz
KTsKIH0KICAgICAKLWlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjpyZXBvcnRFeHRyYU1lbW9yeVVz
YWdlKEpTQ2VsbCogb3duZXIsIHNpemVfdCBzaXplKQoraW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6
OnJlcG9ydEV4dHJhTWVtb3J5VXNhZ2Uoc2l6ZV90IHNpemUpCiB7Ci0gICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byBkb3VibGUtY291bnQgdGhlIGV4dHJhIG1lbW9yeSB0aGF0IHdhcyByZXBvcnRlZCBp
biBwcmV2aW91cyBjb2xsZWN0aW9ucy4KLSAgICBpZiAoaGVhcCgpLT5vcGVyYXRpb25JblByb2dy
ZXNzKCkgPT0gRWRlbkNvbGxlY3Rpb24gJiYgTWFya2VkQmxvY2s6OmJsb2NrRm9yKG93bmVyKS0+
aXNSZW1lbWJlcmVkKG93bmVyKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgc2l6ZV90KiBjb3Vu
dGVyID0gJm1fc2hhcmVkLm1fdm0tPmhlYXAubV9leHRyYU1lbW9yeVVzYWdlOwogICAgIAogI2lm
IEVOQUJMRShDT01QQVJFX0FORF9TV0FQKQpAQCAtMjU5LDExICsyNDcsNiBAQCBpbmxpbmUgdm9p
ZCBTbG90VmlzaXRvcjo6cmVwb3J0RXh0cmFNZW1vcnlVc2FnZShKU0NlbGwqIG93bmVyLCBzaXpl
X3Qgc2l6ZSkKICNlbmRpZgogfQogCi1pbmxpbmUgSGVhcCogU2xvdFZpc2l0b3I6OmhlYXAoKSBj
b25zdAotewotICAgIHJldHVybiAmc2hhcmVkRGF0YSgpLm1fdm0tPmhlYXA7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU2xvdFZpc2l0b3JJbmxpbmVzX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDVjOWFhOTY1ODY2MmE1MDZkNjk4YmRkNjJk
NGQ4NDBlMjBmNWJiOTcuLjNlMjlkYTUxODgwMDJmYWViYmJkOWUxNmE5MTFlNGNkNjRjZGFiNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtMzksNyArMzksNiBAQAog
I2luY2x1ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3QuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAi
U3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAi
VGh1bmtHZW5lcmF0b3JzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDZkYjg2
Mjc0YzNiODc0YWFhZGU1MTUxODk4MjY3MjZmYjEzNmMxNzMuLmU5MjBhYmVmZWZjMTNhYmVmOWJh
ZGM3ZGM4YjBkOTExYzdhZDk1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC00
NDcsNyArNDQ3LDcgQEAgdm9pZCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJgogICAgIH0KICAgICAgICAgCiAg
ICAgY2FzZSBPdmVyc2l6ZVR5cGVkQXJyYXk6IHsKLSAgICAgICAgdmlzaXRvci5yZXBvcnRFeHRy
YU1lbW9yeVVzYWdlKHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPmJ5dGVTaXplKCkpOworICAgICAg
ICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VXNhZ2UodGhpc09iamVjdC0+Ynl0ZVNpemUoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggZjQzNjJm
ZjM1NGVlNmE1MDIyMWJiNzMxZDFhMjYxMWU2ZGQ2MWJjMC4uNTkxNDAzMDQyYmM5NTY1NjQwZjdj
NGQ0ZTQxZGFhODUwMWJlZTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtMTA5LDkgKzEwOSw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbkNhY2hlLmdldCgpOwog
ICAgIH0KICAgICAKLSAgICBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0RW51bWVy
YXRpb25DYWNoZShWTSYgdm0sIGNvbnN0IFN0cnVjdHVyZSosIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IqIHZhbHVlKQorICAgIGlubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRFbnVtZXJh
dGlvbkNhY2hlKFZNJiB2bSwgY29uc3QgU3RydWN0dXJlKiBvd25lciwgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciogdmFsdWUpCiAgICAgewotICAgICAgICBtX2VudW1lcmF0aW9uQ2FjaGUuc2V0KHZt
LCB0aGlzLCB2YWx1ZSk7CisgICAgICAgIG1fZW51bWVyYXRpb25DYWNoZS5zZXQodm0sIG93bmVy
LCB2YWx1ZSk7CiAgICAgfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCAwOTliNjIzNDZjMzAzZjRkNWUyODNlZWI5
ZDY1N2QzMTZjZDgyNzUyLi5hNWJmZTI2NmRmMGJjMjhiNGUxNmQ1YmM4ZmM5MTk5MWQ5OWM1OWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC03Miw3
ICs3Miw3IEBAIHZvaWQgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nSW1wbCogaW1wbCA9
IHRoaXNPYmplY3QtPm1fdmFsdWUuaW1wbCgpOwogICAgICAgICBBU1NFUlQoaW1wbCk7Ci0gICAg
ICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlVc2FnZSh0aGlzT2JqZWN0LCBpbXBsLT5jb3N0
RHVyaW5nR0MoKSk7CisgICAgICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlVc2FnZShpbXBs
LT5jb3N0RHVyaW5nR0MoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCmluZGV4IDViMzli
YWQxZmE2ZmQ3ODRjNjU4NTVlY2YwNDQ5ZDgzY2IyYzA3Y2YuLjIwYjdmOGIxMmM1NDFkODMwNDhj
ZjczMmQxMjU4NTVmOTM0Y2QwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCkBAIC0zNSw5ICszNSw5IEBA
IGlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZVJhcmVEYXRhOjpwcmV2aW91c0lEKCkgY29uc3QK
ICAgICByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsKIH0KIAotaW5saW5lIHZvaWQgU3RydWN0dXJl
UmFyZURhdGE6OnNldFByZXZpb3VzSUQoVk0mIHZtLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKK2lubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRQcmV2aW91c0lEKFZN
JiB2bSwgU3RydWN0dXJlKiB0cmFuc2l0aW9uLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAg
ICBtX3ByZXZpb3VzLnNldCh2bSwgdGhpcywgc3RydWN0dXJlKTsKKyAgICBtX3ByZXZpb3VzLnNl
dCh2bSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlKTsKIH0KIAogaW5saW5lIHZvaWQgU3RydWN0dXJl
UmFyZURhdGE6OmNsZWFyUHJldmlvdXNJRCgpCkBAIC01MCw5ICs1MCw5IEBAIGlubGluZSBKU1N0
cmluZyogU3RydWN0dXJlUmFyZURhdGE6Om9iamVjdFRvU3RyaW5nVmFsdWUoKSBjb25zdAogICAg
IHJldHVybiBtX29iamVjdFRvU3RyaW5nVmFsdWUuZ2V0KCk7CiB9CiAKLWlubGluZSB2b2lkIFN0
cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKFZNJiB2bSwgY29uc3QgSlND
ZWxsKiwgSlNTdHJpbmcqIHZhbHVlKQoraW5saW5lIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNl
dE9iamVjdFRvU3RyaW5nVmFsdWUoVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBKU1N0cmlu
ZyogdmFsdWUpCiB7Ci0gICAgbV9vYmplY3RUb1N0cmluZ1ZhbHVlLnNldCh2bSwgdGhpcywgdmFs
dWUpOworICAgIG1fb2JqZWN0VG9TdHJpbmdWYWx1ZS5zZXQodm0sIG93bmVyLCB2YWx1ZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha01hcERhdGEuY3BwCmluZGV4IDIyNGJlOGE0NjY4ZmQzNGM5NDk1NGY1NTlkOTZjY2VhODhi
ZDhiM2EuLmNlNjBjOGMyOTRkN2QyZGI5N2Q1YTE2ZWFjNGQ4YzY0MmY0MjlhMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5jcHAKQEAgLTY0LDcgKzY0
LDcgQEAgdm9pZCBXZWFrTWFwRGF0YTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogICAgIC8vIFJvdWdoIGFwcHJveGltYXRpb24gb2YgdGhlIGV4dGVy
bmFsIHN0b3JhZ2UgbmVlZGVkIGZvciB0aGUgaGFzaHRhYmxlLgogICAgIC8vIFRoaXMgaXNuJ3Qg
ZXhhY3QsIGJ1dCBpdCBpcyBjbG9zZSBlbm91Z2gsIGFuZCBwcm9wb3J0aW9uYWwgdG8gdGhlIGFj
dHVhbAogICAgIC8vIGV4dGVybmFsIG1lcm1vcnkgdXNhZ2UuCi0gICAgdmlzaXRvci5yZXBvcnRF
eHRyYU1lbW9yeVVzYWdlKHRoaXNPYmosIHRoaXNPYmotPm1fbWFwLmNhcGFjaXR5KCkgKiAoc2l6
ZW9mKEpTT2JqZWN0KikgKyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkpOworICAgIHZp
c2l0b3IucmVwb3J0RXh0cmFNZW1vcnlVc2FnZSh0aGlzT2JqLT5tX21hcC5jYXBhY2l0eSgpICog
KHNpemVvZihKU09iamVjdCopICsgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpKTsKIH0K
IAogdm9pZCBXZWFrTWFwRGF0YTo6c2V0KFZNJiB2bSwgSlNPYmplY3QqIGtleSwgSlNWYWx1ZSB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5oIGIvU291cmNlL1dURi93
dGYvQml0bWFwLmgKaW5kZXggN2IyODhmOWVkYWRiMDQ1ZjYxMDhkN2EzNWJiNTk4YWJhZTczYjRj
Yi4uOTM2Y2NjMjRlM2Y2MGNhMmI3ZTcxZDE2MmQwYjJhNjk4MGI3OGZmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvQml0bWFwLmgKKysrIGIvU291cmNlL1dURi93dGYvQml0bWFwLmgKQEAg
LTE5Niw3ICsxOTYsNyBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxzaXplLCBhdG9taWNNb2RlLCBX
b3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29uc3QKICAgICAgICAgICAgICsrcmVzdWx0
OwogICAgIH0KICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnQgLyB3b3JkU2l6ZTsgaSA8IHdvcmRz
OyArK2kpCi0gICAgICAgIHJlc3VsdCArPSBXVEY6OmJpdENvdW50KHN0YXRpY19jYXN0PHVuc2ln
bmVkPihiaXRzW2ldKSk7CisgICAgICAgIHJlc3VsdCArPSBXVEY6OmJpdENvdW50KGJpdHNbaV0p
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>