<?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>177675</bug_id>
          
          <creation_ts>2017-09-29 11:46:30 -0700</creation_ts>
          <short_desc>REGRESSION(r222563): &quot;It causes a crash when playing youtube videos&quot; (Requested by saamyjoon on #webkit).</short_desc>
          <delta_ts>2017-09-29 11:50:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175823</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1354626</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-29 11:46:30 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/222563 broke the build:
&quot;It causes a crash when playing youtube videos&quot; (Requested by saamyjoon 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>1354629</commentid>
    <comment_count>1</comment_count>
      <attachid>322218</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-29 11:46:43 -0700</bug_when>
    <thetext>Created attachment 322218
ROLLOUT of r222563

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>1354633</commentid>
    <comment_count>2</comment_count>
      <attachid>322218</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-29 11:49:41 -0700</bug_when>
    <thetext>Comment on attachment 322218
ROLLOUT of r222563

Clearing flags on attachment: 322218

Committed r222658: &lt;http://trac.webkit.org/changeset/222658&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354634</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-29 11:49:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354635</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-29 11:50:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/34744206&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322218</attachid>
            <date>2017-09-29 11:46:43 -0700</date>
            <delta_ts>2017-09-29 11:49:41 -0700</delta_ts>
            <desc>ROLLOUT of r222563</desc>
            <filename>bug-177675-20170929144642.patch</filename>
            <type>text/plain</type>
            <size>79527</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjBlOTBmYmYyNjg1NTVkMGVhMGFiZTU3NWNiNTc1ODJiODQ0YzFkLi5iYjIxNmI0ODRhNWQxNjgw
OTA0NTE0OWRkMmQzODY1YTRmMTczMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyNyBAQAogMjAxNy0wOS0yOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMjU2MywgcjIyMjU2
NSwgYW5kIHIyMjI1ODEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzc2NzUKKworICAgICAgICAiSXQgY2F1c2VzIGEgY3Jhc2ggd2hlbiBwbGF5aW5n
IHlvdXR1YmUgdmlkZW9zIiAoUmVxdWVzdGVkIGJ5CisgICAgICAgIHNhYW15am9vbiBvbiAjd2Vi
a2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJbREZHXSBT
dXBwb3J0IEFycmF5UHVzaCB3aXRoIG11bHRpcGxlIGFyZ3MiCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU4MjMKKyAgICAgICAgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjIyNTYzCisKKyAgICAgICAgIlVucmV2aWV3ZWQsIGJ1aWxk
IGZpeCBhZnRlciByMjIyNTYzIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc1ODIzCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzIyMjU2NQorCisgICAgICAgICJVbnJldmlld2VkLCBmaXggeDg2IGJyZWFraW5nIGR1ZSB0
byBleGhhdXN0ZWQgcmVnaXN0ZXJzIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1ODIzCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzIyMjU4MQorCisyMDE3LTA5LTI5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KKwogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIyNjI1Lgog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjY0CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggM2FmMGY4ZGJjNDQ1YTJkMmRlNWMxZTBkNzM0ZTEzNDdjYzI0NjRmNi4uOWVlYzE0ZjJkZmFl
NmNmNWFiNTM2ODk4NjI4OTllNzJkNTI0MjZjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTIzMzQsMTQgKzIzMzQsNyBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJl
c3VsdE9wZXJhbmQsIEludHJpbgogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheVB1c2hJ
bnRyaW5zaWM6IHsKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBpZiAoaXNYODYoKSB8
fCBpc01JUFMoKSkgewotICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ID4gMikKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSNlbmRpZgot
Ci0gICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpCisgICAgICAgIGlmIChhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAKICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShtX2N1cnJlbnRJ
bnN0cnVjdGlvbltPUENPREVfTEVOR1RIKG9wX2NhbGwpIC0gMl0udS5hcnJheVByb2ZpbGUpOwpA
QCAtMjM1MywxMSArMjM0Niw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgIGNh
c2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZTog
ewogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7Ci0KLSAgICAgICAgICAgIGFkZFZhckFyZ0No
aWxkKG51bGxwdHIpOyAvLyBGb3Igc3RvcmFnZS4KLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkKLSAgICAgICAgICAgICAgICBh
ZGRWYXJBcmdDaGlsZChnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJP
ZmZzZXQpKSk7Ci0gICAgICAgICAgICBOb2RlKiBhcnJheVB1c2ggPSBhZGRUb0dyYXBoKE5vZGU6
OlZhckFyZywgQXJyYXlQdXNoLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKHBy
ZWRpY3Rpb24pKTsKKyAgICAgICAgICAgIE5vZGUqIGFycmF5UHVzaCA9IGFkZFRvR3JhcGgoQXJy
YXlQdXNoLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBn
ZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0KHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOwogICAgICAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYXJyYXlQdXNoKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBmYWU4ZmRmYTQ3NDM2OTNiNjY0ZWE4ZjBlY2U2
YmFmMjU3ZWExYzMzLi4yODRhMjQ5M2M0MjUzMWRiMjkxZjFlMjY1MThjYmQ0MjY3ZWI3MTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEwMDgs
NTMgKzEwMDgsMjggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIGlnbm9yZWQuIFRoYXQncyBi
ZWNhdXNlIEFycmF5UHVzaCBjYW4ndCBoYW5kbGUgYW55IGFycmF5IG1vZGVzIHRoYXQgYXJlbid0
CiAgICAgICAgICAgICAvLyBhcnJheS1yZWxhdGVkIC0gc28gaWYgcmVmaW5lKCkgdHVybmVkIHRo
aXMgaW50byBhICJHZW5lcmljIiBBcnJheVB1c2ggdGhlbgogICAgICAgICAgICAgLy8gdGhhdCB3
b3VsZCBicmVhayB0aGluZ3MuCi0gICAgICAgICAgICBFZGdlJiBzdG9yYWdlRWRnZSA9IG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgMCk7Ci0gICAgICAgICAgICBFZGdlJiBhcnJheUVkZ2UgPSBt
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpOwotICAgICAgICAgICAgdW5zaWduZWQgZWxlbWVu
dE9mZnNldCA9IDI7Ci0gICAgICAgICAgICB1bnNpZ25lZCBlbGVtZW50Q291bnQgPSBub2RlLT5u
dW1DaGlsZHJlbigpIC0gZWxlbWVudE9mZnNldDsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7ICsraSkgewotICAgICAgICAgICAgICAgIEVkZ2UmIGVs
ZW1lbnQgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGkgKyBlbGVtZW50T2Zmc2V0KTsKLSAg
ICAgICAgICAgICAgICBub2RlLT5zZXRBcnJheU1vZGUoCi0gICAgICAgICAgICAgICAgICAgIG5v
ZGUtPmFycmF5TW9kZSgpLnJlZmluZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgs
IG5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBhcnJheUVkZ2UtPnByZWRpY3Rpb24oKSAm
IFNwZWNDZWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgU3BlY0ludDMyT25seSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW1lbnQtPnByZWRpY3Rpb24oKSkpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYmxlc3NBcnJheU9wZXJhdGlvbihhcnJheUVkZ2UsIEVkZ2UoKSwgc3Rv
cmFnZUVkZ2UpOwotICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KGFycmF5RWRnZSk7
Ci0KLSAgICAgICAgICAgIC8vIENvbnZlcnQgYGFycmF5LnB1c2goKWAgdG8gR2V0QXJyYXlMZW5n
dGguCi0gICAgICAgICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkuc3VwcG9ydHNTZWxmTGVu
Z3RoKCkpOwotICAgICAgICAgICAgaWYgKCFlbGVtZW50Q291bnQpIHsKLSAgICAgICAgICAgICAg
ICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhHZXRBcnJheUxlbmd0aCk7Ci0gICAgICAgICAg
ICAgICAgbm9kZS0+Y2hpbGQxKCkgPSBhcnJheUVkZ2U7Ci0gICAgICAgICAgICAgICAgbm9kZS0+
Y2hpbGQyKCkgPSBzdG9yYWdlRWRnZTsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2Vs
bFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0QXJyYXlNb2RlKAor
ICAgICAgICAgICAgICAgIG5vZGUtPmFycmF5TW9kZSgpLnJlZmluZSgKKyAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaCwgbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkt
PnByZWRpY3Rpb24oKSAmIFNwZWNDZWxsLAorICAgICAgICAgICAgICAgICAgICBTcGVjSW50MzJP
bmx5LAorICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDIoKS0+cHJlZGljdGlvbigpKSk7
CisgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUtPmNoaWxkMSgpLCBFZGdlKCks
IG5vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJy
YXlNb2RlKCkudHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CisgICAgICAgICAg
ICAgICAgZml4RWRnZTxEb3VibGVSZXBSZWFsVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgorICAg
ICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgorICAgICAgICAgICAgICAgIHNwZWN1
bGF0ZUZvckJhcnJpZXIobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGVyZm9ybSBvc3IgZXhpdCBh
bmQgcmV0cnkgZm9yIEFycmF5UHVzaC4gV2UgaW5zZXJ0IENoZWNrIHdpdGggYXBwcm9wcmlhdGUg
dHlwZSwKLSAgICAgICAgICAgIC8vIGFuZCBBcnJheVB1c2ggdXNlcyB0aGUgZWRnZSBhcyBrbm93
biB0eXBlZCBlZGdlLiBUaGVyZWZvcmUsIEFycmF5UHVzaCBkbyBub3QgbmVlZCB0byBwZXJmb3Jt
IHR5cGUgY2hlY2tzLgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1l
bnRDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgRWRnZSYgZWxlbWVudCA9IG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgaSArIGVsZW1lbnRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHN3
aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBB
cnJheTo6SW50MzI6Ci0gICAgICAgICAgICAgICAgICAgIGluc2VydENoZWNrPEludDMyVXNlPihl
bGVtZW50Lm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25JbnQzMlVz
ZT4oZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgQXJyYXk6OkRvdWJsZToKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8RG91
YmxlUmVwUmVhbFVzZT4oZWxlbWVudC5ub2RlKCkpOwotICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPERvdWJsZVJlcFVzZT4oZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6Ci0gICAgICAgICAgICAgICAg
Y2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGVG
b3JCYXJyaWVyKGVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBBU1NFUlQoc2hv
dWxkTm90SGF2ZVR5cGVDaGVjayhlbGVtZW50LnVzZUtpbmQoKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAppbmRleCAzNTRhZDM3OTRlNDY4MzQ1ZGYyMDk2N2MzZWNkZjFjYjllMGRkYzlh
Li4yZWIxYWFjNmUxY2U3MmZhZTRhNjdiOTkwNDNlZjU0ODMzYTRiZGU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yNjUsNyArMjY1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEF0b21pY3NYb3IsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIFwKICAgICAvKiBP
cHRpbWl6YXRpb25zIGZvciBhcnJheSBtdXRhdGlvbi4gKi9cCi0gICAgbWFjcm8oQXJyYXlQdXNo
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKKyAg
ICBtYWNybyhBcnJheVB1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhBcnJheVBvcCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEFycmF5U2xpY2UsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
SGFzVmFyQXJncykgXAogICAgIG1hY3JvKEFycmF5SW5kZXhPZiwgTm9kZVJlc3VsdEludDMyIHwg
Tm9kZUhhc1ZhckFyZ3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCmluZGV4IDI4MDYwZmIwZTgwZGVjZDVhNGY1M2E5YWFhMjA0YzE4YThmZjA0YjIuLmFl
ZDJlMGE3YmJiYmU4ZjM0YjU4NmU5NWFlM2I2Njg2OGM0Nzc2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtODY5LDcgKzg2OSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAgICBhcnJheS0+cHVzaElu
bGluZShleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CisgICAgYXJyYXktPnB1
c2goZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdW1iZXIoYXJyYXktPmxlbmd0aCgpKSk7CiB9CiAKQEAgLTg3OCw1MSAr
ODc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2hE
b3VibGUoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgdmEKICAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICAKLSAg
ICBhcnJheS0+cHVzaElubGluZShleGVjLCBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91Ymxl
LCB2YWx1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYXJyYXktPmxl
bmd0aCgpKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJy
YXlQdXNoTXVsdGlwbGUoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgdm9pZCogYnVm
ZmVyLCBpbnQzMl90IGVsZW1lbnRDb3VudCkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICAvLyBXZSBhc3N1bWUgdGhhdCBt
dWx0aXBsZSBKU0FycmF5OjpwdXNoIGNhbGxzIHdpdGggQXJyYXlXaXRoSW50MzIvQXJyYXlXaXRo
Q29udGlndW91cyBkbyBub3QgY2F1c2UgSlMgdHJhcHMuCi0gICAgLy8gSWYgaXQgY2FuIGNhdXNl
IGFueSBKUyBpbnRlcmFjdGlvbnMsIHdlIGNhbiBjYWxsIHRoZSBjYWxsZXIgSlMgZnVuY3Rpb24g
b2YgdGhpcyBmdW5jdGlvbiBhbmQgb3ZlcndyaXRlIHRoZQotICAgIC8vIGNvbnRlbnQgb2YgU2Ny
YXRjaEJ1ZmZlci4gSWYgdGhlIEluZGV4aW5nVHlwZSBpcyBub3cgQXJyYXlXaXRoSW50MzIvQXJy
YXlXaXRoQ29udGlndW91cywgd2UgY2FuIGVuc3VyZQotICAgIC8vIHRoYXQgdGhlcmUgaXMgbm8g
aW5kZXhlZCBhY2Nlc3NvcnMgaW4gdGhpcyBvYmplY3QgYW5kIGl0cyBwcm90b3R5cGUgY2hhaW4u
Ci0gICAgLy8KLSAgICAvLyBBcnJheVdpdGhBcnJheVN0b3JhZ2UgaXMgYWxzbyBPSy4gSXQgY2Fu
IGhhdmUgaW5kZXhlZCBhY2Nlc3NvcnMuIEJ1dCBpZiB5b3UgZGVmaW5lIGFuIGluZGV4ZWQgYWNj
ZXNzb3IsIHRoZSBhcnJheSdzIGxlbmd0aAotICAgIC8vIGJlY29tZXMgbGFyZ2VyIHRoYW4gdGhh
dCBpbmRleC4gU28gQXJyYXkjcHVzaCBuZXZlciBvdmVybGFwcyB3aXRoIHRoaXMgYWNjZXNzb3Iu
IFNvIGFjY2Vzc29ycyBhcmUgbmV2ZXIgY2FsbGVkIHVubGVzcwotICAgIC8vIHRoZSBJbmRleGlu
Z1R5cGUgaXMgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSB3aGljaCBjb3VsZCBoYXZlIGFu
IGluZGV4ZWQgYWNjZXNzb3IgaW4gYSBwcm90b3R5cGUgY2hhaW4uCi0gICAgUkVMRUFTRV9BU1NF
UlQoIXNob3VsZFVzZVNsb3dQdXQoYXJyYXktPmluZGV4aW5nVHlwZSgpKSk7Ci0KLSAgICBFbmNv
ZGVkSlNWYWx1ZSogdmFsdWVzID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihidWZmZXIp
OwotICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgKytpKSB7Ci0gICAg
ICAgIGFycmF5LT5wdXNoSW5saW5lKGV4ZWMsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsK
LSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgfQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYXJyYXktPmxlbmd0aCgp
KSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNo
RG91YmxlTXVsdGlwbGUoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgdm9pZCogYnVm
ZmVyLCBpbnQzMl90IGVsZW1lbnRDb3VudCkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICAvLyBXZSBhc3N1bWUgdGhhdCBt
dWx0aXBsZSBKU0FycmF5OjpwdXNoIGNhbGxzIHdpdGggQXJyYXlXaXRoRG91YmxlIGRvIG5vdCBj
YXVzZSBKUyB0cmFwcy4KLSAgICAvLyBJZiBpdCBjYW4gY2F1c2UgYW55IEpTIGludGVyYWN0aW9u
cywgd2UgY2FuIGNhbGwgdGhlIGNhbGxlciBKUyBmdW5jdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGFu
ZCBvdmVyd3JpdGUgdGhlCi0gICAgLy8gY29udGVudCBvZiBTY3JhdGNoQnVmZmVyLiBJZiB0aGUg
SW5kZXhpbmdUeXBlIGlzIG5vdyBBcnJheVdpdGhEb3VibGUsIHdlIGNhbiBlbnN1cmUKLSAgICAv
LyB0aGF0IHRoZXJlIGlzIG5vIGluZGV4ZWQgYWNjZXNzb3JzIGluIHRoaXMgb2JqZWN0IGFuZCBp
dHMgcHJvdG90eXBlIGNoYWluLgotICAgIEFTU0VSVChhcnJheS0+aW5kZXhpbmdUeXBlKCkgPT0g
QXJyYXlXaXRoRG91YmxlKTsKLQotICAgIGRvdWJsZSogdmFsdWVzID0gc3RhdGljX2Nhc3Q8ZG91
YmxlKj4oYnVmZmVyKTsKLSAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7
ICsraSkgewotICAgICAgICBhcnJheS0+cHVzaElubGluZShleGVjLCBKU1ZhbHVlKEpTVmFsdWU6
OkVuY29kZUFzRG91YmxlLCB2YWx1ZXNbaV0pKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgfQorICAgIGFycmF5LT5wdXNoKGV4ZWMs
IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIHZhbHVlKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihhcnJheS0+bGVuZ3RoKCkpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCBlMGRhODA4OGVkNGM1NzI1ODk0
MDkzNjI1MGM0OGZmM2YyYTQ5Y2E4Li45OTc4OTk5MTI1ZWVlZDNlMjhjNmE5ZGQwNTNiOWQ4NWZi
MThjM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAt
MTM2LDkgKzEzNiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWZpbmVBY2Nlc3Nv
clByb3BlcnR5U3RyaW5nKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nSWRlbnQoRXhlY1N0YXRlKiwg
SlNPYmplY3QqLCBVbmlxdWVkU3RyaW5nSW1wbCosIEpTT2JqZWN0KiwgSlNPYmplY3QqLCBpbnQz
Ml90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5lQWNj
ZXNzb3JQcm9wZXJ0eVN5bWJvbChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN5bWJvbCosIEpTT2Jq
ZWN0KiwgSlNPYmplY3QqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlKEV4ZWNTdGF0ZSosIEpTQXJy
YXkqLCB2b2lkKiBidWZmZXIsIGludDMyX3QgZWxlbWVudENvdW50KSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZShFeGVj
U3RhdGUqLCBkb3VibGUgdmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZU11bHRpcGxlKEV4ZWNT
dGF0ZSosIEpTQXJyYXkqLCB2b2lkKiBidWZmZXIsIGludDMyX3QgZWxlbWVudENvdW50KSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UG9w
KEV4ZWNTdGF0ZSosIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UG9wQW5kUmVjb3Zlckxlbmd0aChFeGVjU3RhdGUqLCBK
U0FycmF5KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25SZWdFeHBFeGVjU3RyaW5nKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhw
T2JqZWN0KiwgSlNTdHJpbmcqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGQxZGNiMTU5NTE4MDZjM2VkZWZl
Njk1N2YyMWU2ZTM5MTkyYjZlN2YuLjkxN2NlNjk1MDQ5MjA1ZmY3MmFjY2U5MjU3MDlhMzZlZTJk
NGYxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC03ODcxLDI3OCArNzg3MSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcnJheUluZGV4T2YoTm9kZSogbm9kZSkKICAgICB9CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlQobm9kZS0+YXJy
YXlNb2RlKCkuaXNKU0FycmF5KCkpOwotCi0gICAgRWRnZSYgc3RvcmFnZUVkZ2UgPSBtX2ppdC5n
cmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApOwotICAgIEVkZ2UmIGFycmF5RWRnZSA9IG1faml0
LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7Ci0KLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIGFycmF5RWRnZSk7Ci0gICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2VMZW5ndGgo
dGhpcyk7Ci0KLSAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0gICAgR1BSUmVnIHN0
b3JhZ2VMZW5ndGhHUFIgPSBzdG9yYWdlTGVuZ3RoLmdwcigpOwotCi0gICAgU3RvcmFnZU9wZXJh
bmQgc3RvcmFnZSh0aGlzLCBzdG9yYWdlRWRnZSk7Ci0gICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBz
dG9yYWdlLmdwcigpOwotICAgIHVuc2lnbmVkIGVsZW1lbnRPZmZzZXQgPSAyOwotICAgIHVuc2ln
bmVkIGVsZW1lbnRDb3VudCA9IG5vZGUtPm51bUNoaWxkcmVuKCkgLSBlbGVtZW50T2Zmc2V0Owot
Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBHUFJUZW1wb3JhcnkgdGFnKHRoaXMpOwotICAg
IEdQUlJlZyB0YWdHUFIgPSB0YWcuZ3ByKCk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyB7
IHRhZ0dQUiwgc3RvcmFnZUxlbmd0aEdQUiB9OwotI2Vsc2UKLSAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzIHsgc3RvcmFnZUxlbmd0aEdQUiB9OwotI2VuZGlmCi0KLSAgICBhdXRvIGdldFN0b3Jh
Z2VCdWZmZXJBZGRyZXNzID0gWyZdIChHUFJSZWcgc3RvcmFnZUdQUiwgR1BSUmVnIGluZGV4R1BS
LCBpbnQzMl90IG9mZnNldCwgR1BSUmVnIGJ1ZmZlckdQUikgewotI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCi0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEpTVmFsdWUpID09IDggJiYgMSA8PCAz
ID09IDgsICJUaGlzIGlzIHN0cm9uZ2x5IGFzc3VtZWQgaW4gdGhlIGNvZGUgYmVsb3cuIik7Ci0g
ICAgICAgIG1faml0Lm1vdmUoaW5kZXhHUFIsIGJ1ZmZlckdQUik7Ci0gICAgICAgIG1faml0Lmxz
aGlmdDMyKFRydXN0ZWRJbW0zMigzKSwgYnVmZmVyR1BSKTsKLSAgICAgICAgbV9qaXQuYWRkMzIo
c3RvcmFnZUdQUiwgYnVmZmVyR1BSKTsKLSAgICAgICAgaWYgKG9mZnNldCkKLSAgICAgICAgICAg
IG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMihvZmZzZXQpLCBidWZmZXJHUFIpOwotI2Vsc2UKLSAg
ICAgICAgbV9qaXQuZ2V0RWZmZWN0aXZlQWRkcmVzczY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoc3RvcmFnZUdQUiwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBvZmZz
ZXQpLCBidWZmZXJHUFIpOwotI2VuZGlmCi0gICAgfTsKLQotICAgIHN3aXRjaCAobm9kZS0+YXJy
YXlNb2RlKCkudHlwZSgpKSB7Ci0gICAgY2FzZSBBcnJheTo6SW50MzI6Ci0gICAgY2FzZSBBcnJh
eTo6Q29udGlndW91czogewotICAgICAgICBpZiAoZWxlbWVudENvdW50ID09IDEpIHsKLSAgICAg
ICAgICAgIEVkZ2UmIGVsZW1lbnQgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIGVs
ZW1lbnRPZmZzZXQpOwotICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgZWxl
bWVudCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgICAgIEpTVmFsdWVSZWdz
IHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7Ci0KLSAgICAgICAgICAgIGlmIChub2Rl
LT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkludDMyKQotICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlbGVtZW50LCBTcGVjSW50MzJPbmx5KSk7Ci0K
LSAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdl
R1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpLCBzdG9yYWdlTGVuZ3RoR1BS
KTsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoID0gbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc3RvcmFnZUxlbmd0aEdQUiwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rv
ckxlbmd0aCgpKSk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZVZhbHVlKHZhbHVlUmVncywgTWFj
cm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BSLCBNYWNy
b0Fzc2VtYmxlcjo6VGltZXNFaWdodCkpOwotICAgICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3Rl
ZEltbTMyKDEpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlMzIo
c3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0
dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7Ci0gICAgICAgICAgICBtX2ppdC5ib3hJ
bnQzMihzdG9yYWdlTGVuZ3RoR1BSLCByZXN1bHRSZWdzKTsKLQotICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25BcnJheVB1c2gsIHJlc3VsdFJlZ3MsIHZhbHVlUmVncywgYmFzZUdQUikp
OwotCi0gICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgR1BSVGVtcG9yYXJ5IGJ1ZmZlcih0
aGlzKTsKLSAgICAgICAgR1BSUmVnIGJ1ZmZlckdQUiA9IGJ1ZmZlci5ncHIoKTsKLQotICAgICAg
ICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVy
Zmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgc3RvcmFnZUxlbmd0aEdQUik7Ci0gICAgICAg
IG1faml0Lm1vdmUoc3RvcmFnZUxlbmd0aEdQUiwgYnVmZmVyR1BSKTsKLSAgICAgICAgbV9qaXQu
YWRkMzIoVHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCksIGJ1ZmZlckdQUik7Ci0gICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlLCBidWZmZXJHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIs
IEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwotCi0gICAgICAgIG1faml0LnN0
b3JlMzIoYnVmZmVyR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0
ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKLSAgICAgICAgZ2V0U3RvcmFnZUJ1ZmZl
ckFkZHJlc3Moc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQUiwgMCwgYnVmZmVyR1BSKTsKLSAg
ICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCksIHN0b3JhZ2VMZW5n
dGhHUFIpOwotICAgICAgICBtX2ppdC5ib3hJbnQzMihzdG9yYWdlTGVuZ3RoR1BSLCByZXN1bHRS
ZWdzKTsKLSAgICAgICAgYXV0byBzdG9yYWdlRG9uZSA9IG1faml0Lmp1bXAoKTsKLQotICAgICAg
ICBzbG93UGF0aC5saW5rKCZtX2ppdCk7Ci0KLSAgICAgICAgc2l6ZV90IHNjcmF0Y2hTaXplID0g
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIGVsZW1lbnRDb3VudDsKLSAgICAgICAgU2NyYXRjaEJ1
ZmZlciogc2NyYXRjaEJ1ZmZlciA9IG1faml0LnZtKCktPnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNj
cmF0Y2hTaXplKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0
PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSksIGJ1ZmZlckdQ
Uik7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRy
ZXNzT2ZBY3RpdmVMZW5ndGgoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwotICAgICAgICBtX2ppdC5z
dG9yZVB0cihUcnVzdGVkSW1tUHRyKHNjcmF0Y2hTaXplKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZUxlbmd0aEdQUikpOwotCi0gICAgICAgIHN0b3JhZ2VEb25lLmxpbmsoJm1faml0
KTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBlbGVtZW50SW5kZXggPSAwOyBlbGVtZW50SW5kZXgg
PCBlbGVtZW50Q291bnQ7ICsrZWxlbWVudEluZGV4KSB7Ci0gICAgICAgICAgICBFZGdlJiBlbGVt
ZW50ID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCBlbGVtZW50SW5kZXggKyBlbGVt
ZW50T2Zmc2V0KTsKLSAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGVsZW1l
bnQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgICAgICBKU1ZhbHVlUmVncyB2
YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwotCi0gICAgICAgICAgICBpZiAobm9kZS0+
YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpJbnQzMikKLSAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCghbmVlZHNUeXBlQ2hlY2soZWxlbWVudCwgU3BlY0ludDMyT25seSkpOwotCi0g
ICAgICAgICAgICBtX2ppdC5zdG9yZVZhbHVlKHZhbHVlUmVncywgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYnVmZmVyR1BSLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogZWxlbWVudEluZGV4KSk7
Ci0gICAgICAgICAgICB2YWx1ZS51c2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGZhc3RQYXRoID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PEVuY29kZWRKU1Zh
bHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSkpOwotCi0gICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChtX2ppdC5qdW1wKCksIHRoaXMsIG9wZXJhdGlvbkFy
cmF5UHVzaE11bHRpcGxlLCByZXN1bHRSZWdzLCBiYXNlR1BSLCBidWZmZXJHUFIsIFRydXN0ZWRJ
bW0zMihlbGVtZW50Q291bnQpKSk7Ci0KLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSwgYnVmZmVyR1BSKTsKLSAg
ICAgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYnVmZmVyR1BSKSk7Ci0KLSAgICAgICAgYmFzZS51c2UoKTsKLSAgICAgICAg
c3RvcmFnZS51c2UoKTsKLQotICAgICAgICBmYXN0UGF0aC5saW5rKCZtX2ppdCk7Ci0gICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJl
bkNhbGxlZEV4cGxpY2l0bHkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBB
cnJheTo6RG91YmxlOiB7Ci0gICAgICAgIGlmIChlbGVtZW50Q291bnQgPT0gMSkgewotICAgICAg
ICAgICAgRWRnZSYgZWxlbWVudCA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgZWxl
bWVudE9mZnNldCk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlKHRo
aXMsIGVsZW1lbnQpOwotICAgICAgICAgICAgRlBSUmVnIHZhbHVlRlBSID0gdmFsdWUuZnByKCk7
Ci0KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFuZWVkc1R5cGVDaGVjayhlbGVtZW50LCBT
cGVjRG91YmxlUmVhbCkpOwotCi0gICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgp
KSwgc3RvcmFnZUxlbmd0aEdQUik7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBz
bG93UGF0aCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHN0
b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRl
cmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwotICAgICAgICAgICAgbV9qaXQuc3RvcmVE
b3VibGUodmFsdWVGUFIsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgc3Rv
cmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpKTsKLSAgICAgICAgICAg
IG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgc3RvcmFnZUxlbmd0aEdQUik7Ci0gICAgICAg
ICAgICBtX2ppdC5zdG9yZTMyKHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwotICAg
ICAgICAgICAgbV9qaXQuYm94SW50MzIoc3RvcmFnZUxlbmd0aEdQUiwgcmVzdWx0UmVncyk7Ci0K
LSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlLCByZXN1bHRS
ZWdzLCB2YWx1ZUZQUiwgYmFzZUdQUikpOwotCi0gICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgR1BSVGVtcG9yYXJ5IGJ1ZmZlcih0aGlzKTsKLSAgICAgICAgR1BSUmVnIGJ1ZmZlckdQUiA9
IGJ1ZmZlci5ncHIoKTsKLQotICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgc3Rv
cmFnZUxlbmd0aEdQUik7Ci0gICAgICAgIG1faml0Lm1vdmUoc3RvcmFnZUxlbmd0aEdQUiwgYnVm
ZmVyR1BSKTsKLSAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCks
IGJ1ZmZlckdQUik7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoID0gbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBidWZmZXJHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgo
KSkpOwotCi0gICAgICAgIG1faml0LnN0b3JlMzIoYnVmZmVyR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsK
LSAgICAgICAgZ2V0U3RvcmFnZUJ1ZmZlckFkZHJlc3Moc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0
aEdQUiwgMCwgYnVmZmVyR1BSKTsKLSAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKGVs
ZW1lbnRDb3VudCksIHN0b3JhZ2VMZW5ndGhHUFIpOwotICAgICAgICBtX2ppdC5ib3hJbnQzMihz
dG9yYWdlTGVuZ3RoR1BSLCByZXN1bHRSZWdzKTsKLSAgICAgICAgYXV0byBzdG9yYWdlRG9uZSA9
IG1faml0Lmp1bXAoKTsKLQotICAgICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7Ci0KLSAgICAg
ICAgc2l6ZV90IHNjcmF0Y2hTaXplID0gc2l6ZW9mKGRvdWJsZSkgKiBlbGVtZW50Q291bnQ7Ci0g
ICAgICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSBtX2ppdC52bSgpLT5zY3JhdGNo
QnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cihzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZm
ZXIoKSkpLCBidWZmZXJHUFIpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoc2Ny
YXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsK
LSAgICAgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VMZW5ndGhHUFIpKTsKLQotICAgICAgICBzdG9yYWdl
RG9uZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgZWxlbWVudEluZGV4ID0g
MDsgZWxlbWVudEluZGV4IDwgZWxlbWVudENvdW50OyArK2VsZW1lbnRJbmRleCkgewotICAgICAg
ICAgICAgRWRnZSYgZWxlbWVudCA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgZWxl
bWVudEluZGV4ICsgZWxlbWVudE9mZnNldCk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIHZhbHVlKHRoaXMsIGVsZW1lbnQpOwotICAgICAgICAgICAgRlBSUmVnIHZhbHVlRlBS
ID0gdmFsdWUuZnByKCk7Ci0KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFuZWVkc1R5cGVD
aGVjayhlbGVtZW50LCBTcGVjRG91YmxlUmVhbCkpOwotCi0gICAgICAgICAgICBtX2ppdC5zdG9y
ZURvdWJsZSh2YWx1ZUZQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYnVmZmVyR1BSLCBzaXpl
b2YoZG91YmxlKSAqIGVsZW1lbnRJbmRleCkpOwotICAgICAgICAgICAgdmFsdWUudXNlKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYXN0UGF0aCA9IG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGJ1ZmZlckdQUiwgVHJ1c3RlZElt
bVB0cihzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZm
ZXIoKSkpKTsKLQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobV9q
aXQuanVtcCgpLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hEb3VibGVNdWx0aXBsZSwgcmVzdWx0
UmVncywgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxlbWVudENvdW50KSkpOwot
Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNz
T2ZBY3RpdmVMZW5ndGgoKSksIGJ1ZmZlckdQUik7Ci0gICAgICAgIG1faml0LnN0b3JlUHRyKFRy
dXN0ZWRJbW1QdHIobnVsbHB0ciksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJ1ZmZlckdQUikp
OwotCi0gICAgICAgIGJhc2UudXNlKCk7Ci0gICAgICAgIHN0b3JhZ2UudXNlKCk7Ci0KLSAgICAg
ICAgZmFzdFBhdGgubGluaygmbV9qaXQpOwotICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJl
Z3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZTogewot
ICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgcmVzdWx0IG9mIEFycmF5UHVzaCBpcyBJ
bnQzMiBpbiBBSS4KLSAgICAgICAgaW50MzJfdCBsYXJnZXN0UG9zaXRpdmVJbnQzMkxlbmd0aCA9
IDB4N2ZmZmZmZmYgLSBlbGVtZW50Q291bnQ7Ci0gICAgICAgIGlmIChlbGVtZW50Q291bnQgPT0g
MSkgewotICAgICAgICAgICAgRWRnZSYgZWxlbWVudCA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hp
bGQobm9kZSwgZWxlbWVudE9mZnNldCk7Ci0gICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBlbGVtZW50KTsKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZh
bHVlLmpzVmFsdWVSZWdzKCk7Ci0KLSAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBBcnJheVN0b3JhZ2U6Omxlbmd0aE9mZnNldCgpKSwg
c3RvcmFnZUxlbmd0aEdQUik7Ci0KLSAgICAgICAgICAgIC8vIFJlZnVzZSB0byBoYW5kbGUgYml6
YXJyZSBsZW5ndGhzLgotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBz
dG9yYWdlTGVuZ3RoR1BSLCBUcnVzdGVkSW1tMzIobGFyZ2VzdFBvc2l0aXZlSW50MzJMZW5ndGgp
KSk7Ci0KLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoID0gbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc3RvcmFnZUxlbmd0aEdQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JM
ZW5ndGhPZmZzZXQoKSkpOwotCi0gICAgICAgICAgICBtX2ppdC5zdG9yZVZhbHVlKHZhbHVlUmVn
cywgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQo
KSkpOwotCi0gICAgICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIHN0b3JhZ2VM
ZW5ndGhHUFIpOwotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzdG9yYWdlTGVuZ3RoR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBBcnJheVN0b3JhZ2U6Omxlbmd0aE9m
ZnNldCgpKSk7Ci0gICAgICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3Jh
Z2UsIG1fbnVtVmFsdWVzSW5WZWN0b3IpKSk7Ci0gICAgICAgICAgICBtX2ppdC5ib3hJbnQzMihz
dG9yYWdlTGVuZ3RoR1BSLCByZXN1bHRSZWdzKTsKLQotICAgICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBv
cGVyYXRpb25BcnJheVB1c2gsIHJlc3VsdFJlZ3MsIHZhbHVlUmVncywgYmFzZUdQUikpOwotCi0g
ICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgR1BSVGVtcG9yYXJ5IGJ1ZmZlcih0aGlzKTsK
LSAgICAgICAgR1BSUmVnIGJ1ZmZlckdQUiA9IGJ1ZmZlci5ncHIoKTsKLQotICAgICAgICBtX2pp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQXJyYXlTdG9yYWdl
OjpsZW5ndGhPZmZzZXQoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwotCi0gICAgICAgIC8vIFJlZnVz
ZSB0byBoYW5kbGUgYml6YXJyZSBsZW5ndGhzLgotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6QWJvdmUsIHN0b3JhZ2VMZW5ndGhHUFIsIFRydXN0ZWRJbW0zMihsYXJnZXN0UG9zaXRpdmVJ
bnQzMkxlbmd0aCkpKTsKLQotICAgICAgICBtX2ppdC5tb3ZlKHN0b3JhZ2VMZW5ndGhHUFIsIGJ1
ZmZlckdQUik7Ci0gICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMihlbGVtZW50Q291bnQp
LCBidWZmZXJHUFIpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aCA9IG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgYnVmZmVyR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNl
dCgpKSk7Ci0KLSAgICAgICAgbV9qaXQuc3RvcmUzMihidWZmZXJHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEFycmF5U3RvcmFnZTo6bGVuZ3RoT2Zmc2V0KCkpKTsKLSAg
ICAgICAgZ2V0U3RvcmFnZUJ1ZmZlckFkZHJlc3Moc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQ
UiwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSwgYnVmZmVyR1BSKTsKLSAgICAgICAgbV9q
aXQuYWRkMzIoVHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCksIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbnVtVmFsdWVz
SW5WZWN0b3IpKSk7Ci0gICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMihlbGVtZW50Q291
bnQpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKLSAgICAgICAgbV9qaXQuYm94SW50MzIoc3RvcmFnZUxl
bmd0aEdQUiwgcmVzdWx0UmVncyk7Ci0gICAgICAgIGF1dG8gc3RvcmFnZURvbmUgPSBtX2ppdC5q
dW1wKCk7Ci0KLSAgICAgICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwotCi0gICAgICAgIHNpemVf
dCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBlbGVtZW50Q291bnQ7Ci0g
ICAgICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIgPSBtX2ppdC52bSgpLT5zY3JhdGNo
QnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cihzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZm
ZXIoKSkpLCBidWZmZXJHUFIpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoc2Ny
YXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsK
LSAgICAgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VMZW5ndGhHUFIpKTsKLQotICAgICAgICBzdG9yYWdl
RG9uZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgZWxlbWVudEluZGV4ID0g
MDsgZWxlbWVudEluZGV4IDwgZWxlbWVudENvdW50OyArK2VsZW1lbnRJbmRleCkgewotICAgICAg
ICAgICAgRWRnZSYgZWxlbWVudCA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgZWxl
bWVudEluZGV4ICsgZWxlbWVudE9mZnNldCk7Ci0gICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBlbGVtZW50KTsKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9
IHZhbHVlLmpzVmFsdWVSZWdzKCk7Ci0KLSAgICAgICAgICAgIG1faml0LnN0b3JlVmFsdWUodmFs
dWVSZWdzLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhidWZmZXJHUFIsIHNpemVvZihFbmNvZGVk
SlNWYWx1ZSkgKiBlbGVtZW50SW5kZXgpKTsKLSAgICAgICAgICAgIHZhbHVlLnVzZSgpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFzdFBhdGggPSBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBidWZmZXJHUFIsIFRydXN0ZWRJbW1Q
dHIoc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVy
KCkpKSk7Ci0KLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICBzbG93
UGF0aENhbGwobV9qaXQuanVtcCgpLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hNdWx0aXBsZSwg
cmVzdWx0UmVncywgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxlbWVudENvdW50
KSkpOwotCi0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5h
ZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIGJ1ZmZlckdQUik7Ci0gICAgICAgIG1faml0LnN0b3Jl
UHRyKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJ1ZmZl
ckdQUikpOwotCi0gICAgICAgIGJhc2UudXNlKCk7Ci0gICAgICAgIHN0b3JhZ2UudXNlKCk7Ci0K
LSAgICAgICAgZmFzdFBhdGgubGluaygmbV9qaXQpOwotICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTm90aWZ5V3JpdGUoTm9kZSogbm9kZSkKIHsKICAgICBXYXRjaHBvaW50U2V0KiBz
ZXQgPSBub2RlLT53YXRjaHBvaW50U2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggMTEyNzZiZjBiYWM2OTk0YzFjMDU4MjZiYzAxY2Jh
MmZkY2M3ZTY0MC4uNWE4MDUxN2MyZTQ1MGUyMzk2ZThkOTJmODViMWQ1YjllMTMxOTY4MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTYx
MywxNCArMTYxMyw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpBIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0
LCBKU1ZhbHVlUmVncyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKQSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLmdwcigpLCBhcmcyKTsKLSAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpKTsKLSAgICB9
Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkEg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcxLCBHUFJSZWcgYXJnMikK
LSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLmdw
cigpLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKQEAg
LTE3OTQsMTYgKzE3ODksNiBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBUFogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyBy
ZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMpCi0gICAg
ewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
YXJnMyk7Ci0gICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0LnBheWxvYWRHUFIoKSk7Ci0gICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUFQWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMpCi0gICAgewotICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Ci0gICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKLSAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkog
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7
CkBAIC0yMTI5LDExICsyMTE0LDYgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigp
KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FQVBaIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczKQotICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwotICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3Vs
dC50YWdHUFIoKSk7Ci0gICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBh
cmcxKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEpOwpAQCAtMjk0OCw3ICsyOTI4LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldFJl
c3RMZW5ndGgoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUFycmF5U2xpY2UoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUFycmF5SW5kZXhPZihOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlQXJyYXlQ
dXNoKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOb3RpZnlXcml0ZShOb2RlKik7CiAgICAgYm9v
bCBjb21waWxlUmVnRXhwRXhlYyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSXNPYmplY3RPck51
bGwoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKaW5kZXggYTIzYjhhMTg5YjU1OTcwMWQxYjBiZDEzOTRmNDI0YmM0
YjRhNTYwMC4uYWFlNzgxNjJhYzRhOWIzYzBkMjEwNjRjNjRjMTdiOWEyOGMzZTQwMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCkBAIC0zMzg0LDcgKzMzODQsMTE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOiB7Ci0gICAg
ICAgIGNvbXBpbGVBcnJheVB1c2gobm9kZSk7CisgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1v
ZGUoKS5pc0pTQXJyYXkoKSk7CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3Jh
Z2VMZW5ndGgodGhpcyk7CisgICAgICAgIAorICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CisgICAgICAgIEdQUlJlZyBzdG9yYWdlTGVuZ3RoR1BSID0gc3RvcmFnZUxlbmd0aC5n
cHIoKTsKKyAgICAgICAgCisgICAgICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbm9k
ZS0+Y2hpbGQzKCkpOworICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7
CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewor
ICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjogeworICAgICAgICAgICAgU3BlY3VsYXRlSW50MzJP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIEdQUlJlZyB2
YWx1ZVBheWxvYWRHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
bV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZs
eTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOworICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGggPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzdG9yYWdlTGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsK
KyAgICAgICAgICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFn
KSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUu
YXNCaXRzLnRhZykpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWVQYXlsb2FkR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5h
c0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigx
KSwgc3RvcmFnZUxlbmd0aEdQUik7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHN0b3JhZ2VM
ZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6
b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLCBzdG9yYWdlR1BSKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgc2xvd1BhdGhD
YWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQ
dXNoLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhzdG9yYWdlR1BSLCBzdG9yYWdl
TGVuZ3RoR1BSKSwKKyAgICAgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Oklu
dDMyVGFnKSwgdmFsdWVQYXlsb2FkR1BSLCBiYXNlR1BSKSk7CisgICAgICAgIAorICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdChzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BSLCBub2RlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBB
cnJheTo6Q29udGlndW91czogeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gdmFs
dWUudGFnR1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkR1BSID0gdmFsdWUu
cGF5bG9hZEdQUigpOworCisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwg
c3RvcmFnZUxlbmd0aEdQUik7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93
UGF0aCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHN0b3Jh
Z2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZs
eTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih2
YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzdG9yYWdl
TGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnRhZykpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWVQ
YXlsb2FkR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIHN0b3JhZ2VM
ZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNW
YWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgICAgIG1faml0LmFkZDMyKFRydXN0
ZWRJbW0zMigxKSwgc3RvcmFnZUxlbmd0aEdQUik7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMy
KHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1
dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOworICAgICAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLCBzdG9yYWdlR1BSKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uQXJyYXlQdXNoLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhzdG9yYWdlR1BS
LCBzdG9yYWdlTGVuZ3RoR1BSKSwKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFs
dWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIGJhc2VHUFIpKTsKKyAgICAgICAgCisgICAgICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHN0b3JhZ2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIsIG5vZGUpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IEFycmF5OjpEb3VibGU6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFs
dWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgRlBSUmVnIHZhbHVlRlBSID0g
dmFsdWUuZnByKCk7CisKKyAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAorICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKCksIG5vZGUtPmNoaWxkMigpLCBTcGVjRG91YmxlUmVhbCwKKyAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVx
dWFsT3JVbm9yZGVyZWQsIHZhbHVlRlBSLCB2YWx1ZUZQUikpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwg
QnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgc3RvcmFnZUxlbmd0aEdQUik7Cisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aCA9IG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5n
dGgoKSkpOworICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUodmFsdWVGUFIsIE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OlRpbWVzRWlnaHQpKTsKKyAgICAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0z
MigxKSwgc3RvcmFnZUxlbmd0aEdQUik7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHN0b3Jh
Z2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZs
eTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLCBzdG9yYWdlR1BSKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsKAorICAgICAgICAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJy
YXlQdXNoRG91YmxlLAorICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhzdG9yYWdlR1BS
LCBzdG9yYWdlTGVuZ3RoR1BSKSwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVGUFIsIGJhc2VH
UFIpKTsKKyAgICAgICAgCisgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHN0b3JhZ2VHUFIsIHN0
b3JhZ2VMZW5ndGhHUFIsIG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6IHsKKyAgICAgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOworICAgICAgICAgICAgR1BS
UmVnIHZhbHVlUGF5bG9hZEdQUiA9IHZhbHVlLnBheWxvYWRHUFIoKTsKKworICAgICAgICAgICAg
bV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEFycmF5U3Rv
cmFnZTo6bGVuZ3RoT2Zmc2V0KCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKKyAgICAgICAgCisgICAg
ICAgICAgICAvLyBSZWZ1c2UgdG8gaGFuZGxlIGJpemFycmUgbGVuZ3Rocy4KKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgc3RvcmFnZUxlbmd0aEdQUiwgVHJ1c3RlZElt
bTMyKDB4N2ZmZmZmZmUpKSk7CisgICAgICAgIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgc2xvd1BhdGggPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBzdG9yYWdlTGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BS
LCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSk7CisgICAgICAgIAorICAgICAg
ICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRl
eChzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdo
dCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVl
LCB1LmFzQml0cy50YWcpKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlUGF5bG9h
ZEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3Ro
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JPZmZz
ZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOworICAg
ICAgICAKKyAgICAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgc3RvcmFnZUxl
bmd0aEdQUik7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHN0b3JhZ2VMZW5ndGhHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEFycmF5U3RvcmFnZTo6bGVuZ3RoT2Zm
c2V0KCkpKTsKKyAgICAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFn
ZSwgbV9udW1WYWx1ZXNJblZlY3RvcikpKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgc3RvcmFnZUdQUik7CisgICAgICAgIAorICAgICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBv
cGVyYXRpb25BcnJheVB1c2gsIEpTVmFsdWVSZWdzKHN0b3JhZ2VHUFIsIHN0b3JhZ2VMZW5ndGhH
UFIpLAorICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxv
YWRHUFIpLCBiYXNlR1BSKSk7CisgICAgICAgIAorICAgICAgICAgICAganNWYWx1ZVJlc3VsdChz
dG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BSLCBub2RlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIENS
QVNIKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKaW5kZXggZGEwMWEyNWM0OThhYzllMWY4M2ExYjRhNGM5MzNkNzk0ZGZk
ZTk1ZS4uMjljYjJiZjAyZTQwODQyOWVlOTBmZmY5Y2I4ZGNjMjMyZDI2YWJjNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0z
NjYzLDcgKzM2NjMsMTAxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQdXNoOiB7Ci0gICAgICAgIGNvbXBp
bGVBcnJheVB1c2gobm9kZSk7CisgICAgICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS5pc0pT
QXJyYXkoKSk7CisgICAgICAgIAorICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2VMZW5ndGgo
dGhpcyk7CisgICAgICAgIAorICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Cisg
ICAgICAgIEdQUlJlZyBzdG9yYWdlTGVuZ3RoR1BSID0gc3RvcmFnZUxlbmd0aC5ncHIoKTsKKyAg
ICAgICAgCisgICAgICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbm9kZS0+Y2hpbGQz
KCkpOworICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CisKKyAgICAg
ICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBBcnJh
eTo6SW50MzI6CisgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6IHsKKyAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworICAgICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7
CisKKyAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6Oklu
dDMyKSB7CisgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCisgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNJbnQzMk9ubHks
CisgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KAorICAgICAgICAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1faml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9m
UHVibGljTGVuZ3RoKCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlT3JFcXVhbCwgc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Rv
cmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7CisgICAgICAgICAg
ICBtX2ppdC5zdG9yZTY0KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3Jh
Z2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSk7Cisg
ICAgICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIHN0b3JhZ2VMZW5ndGhHUFIp
OworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzdG9yYWdlTGVuZ3RoR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpKTsKKyAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyLCBzdG9yYWdlTGVuZ3RoR1BSKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAg
ICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoLCBzdG9yYWdlTGVu
Z3RoR1BSLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZUdQUiwgYmFzZUdQUikpOworICAgICAg
ICAKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQoc3RvcmFnZUxlbmd0aEdQUiwgbm9kZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
QXJyYXk6OkRvdWJsZTogeworICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBGUFJSZWcgdmFsdWVGUFIgPSB2
YWx1ZS5mcHIoKTsKKworICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCisgICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MoKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNEb3VibGVSZWFsLAorICAgICAg
ICAgICAgICAgIG1faml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1
YWxPclVub3JkZXJlZCwgdmFsdWVGUFIsIHZhbHVlRlBSKSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBC
dXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0
aCgpKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZURvdWJsZSh2YWx1ZUZQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6VGltZXNFaWdodCkpOworICAgICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMy
KDEpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc3RvcmFn
ZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5
OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CisgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwgc3RvcmFnZUxlbmd0aEdQUik7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlv
bkFycmF5UHVzaERvdWJsZSwgc3RvcmFnZUxlbmd0aEdQUiwKKyAgICAgICAgICAgICAgICAgICAg
dmFsdWVGUFIsIGJhc2VHUFIpKTsKKyAgICAgICAgCisgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0
KHN0b3JhZ2VMZW5ndGhHUFIsIG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6IHsKKyAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworCisgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQXJyYXlTdG9yYWdl
OjpsZW5ndGhPZmZzZXQoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOworICAgICAgICAKKyAgICAgICAg
ICAgIC8vIFJlZnVzZSB0byBoYW5kbGUgYml6YXJyZSBsZW5ndGhzLgorICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzdG9yYWdlTGVuZ3RoR1BSLCBUcnVzdGVkSW1tMzIo
MHg3ZmZmZmZmZSkpKTsKKyAgICAgICAgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBzbG93UGF0aCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEFy
cmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKTsKKyAgICAgICAgCisgICAgICAgICAg
ICBtX2ppdC5zdG9yZTY0KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3Jh
Z2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJh
eVN0b3JhZ2U6OnZlY3Rvck9mZnNldCgpKSk7CisgICAgICAgIAorICAgICAgICAgICAgbV9qaXQu
YWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKKyAgICAgICAgICAgIG1f
aml0LnN0b3JlMzIoc3RvcmFnZUxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Rv
cmFnZUdQUiwgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSkpOworICAgICAgICAgICAgbV9q
aXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdl
R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX251bVZhbHVlc0luVmVjdG9yKSkp
OworICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IHN0b3JhZ2VMZW5ndGhHUFIpOworICAgICAgICAKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKAorICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICAg
ICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaCwgTm9SZXN1bHQsIHN0b3JhZ2VM
ZW5ndGhHUFIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlR1BSLCBiYXNlR1BSKSk7CisgICAg
ICAgIAorICAgICAgICAgICAganNWYWx1ZVJlc3VsdChzdG9yYWdlTGVuZ3RoR1BSLCBub2RlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggMTQ1
Y2U2NmYwMDA4OTk0Zjc4NDA3OGU0ZTViOGRiMzMyOGQ4MGIzMS4uYjVlMmMzNTBiMTgxZjliMDYz
OTMyMTVhNDJhYWFkNzZiNjVlZDg0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTI1MCwx
NiArMjUwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgQXJyYXlQdXNoOiB7CiAgICAg
ICAgICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAg
ICAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6Ci0gICAgICAgICAgICAgICAgY2FzZSBB
cnJheTo6QXJyYXlTdG9yYWdlOiB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGVsZW1l
bnRPZmZzZXQgPSAyOwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBlbGVtZW50Q291bnQg
PSBtX25vZGUtPm51bUNoaWxkcmVuKCkgLSBlbGVtZW50T2Zmc2V0OwotICAgICAgICAgICAgICAg
ICAgICBFZGdlJiBhcnJheUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50Q291bnQ7
ICsraSkgewotICAgICAgICAgICAgICAgICAgICAgICAgRWRnZSYgZWxlbWVudCA9IG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobV9ub2RlLCBpICsgZWxlbWVudE9mZnNldCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjb25zaWRlckJhcnJpZXIoYXJyYXlFZGdlLCBlbGVtZW50KTsKLSAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZToKKyAg
ICAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCmluZGV4IDBmMTJhMzdmYmY0NTU2NGE0ZTEzOTUxZDNkODllYzZiN2Q2YjI0
MGIuLjRkNDliZGY0NzFhYjBkNjNlMjlhMmFmYjdmYmJlZDE4ZGQzMTA4YTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQwODgsMTM0ICs0
MDg4LDY4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXJyYXlQdXNoKCkKICAg
ICB7Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgMSkpOwotICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGxvd1N0b3JhZ2UobV9ncmFwaC52
YXJBcmdDaGlsZChtX25vZGUsIDApKTsKLSAgICAgICAgdW5zaWduZWQgZWxlbWVudE9mZnNldCA9
IDI7Ci0gICAgICAgIHVuc2lnbmVkIGVsZW1lbnRDb3VudCA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4o
KSAtIGVsZW1lbnRPZmZzZXQ7Ci0KKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGxvd1N0b3JhZ2UobV9ub2Rl
LT5jaGlsZDMoKSk7CisgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+YXJyYXlNb2Rl
KCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgogICAgICAgICBjYXNlIEFy
cmF5OjpDb250aWd1b3VzOgogICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6IHsKLSAgICAgICAg
ICAgIEluZGV4ZWRBYnN0cmFjdEhlYXAmIGhlYXAgPSBtX2hlYXBzLmZvckFycmF5VHlwZShtX25v
ZGUtPmFycmF5TW9kZSgpLnR5cGUoKSk7Ci0KLSAgICAgICAgICAgIGlmIChlbGVtZW50Q291bnQg
PT0gMSkgewotICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZTsKLSAgICAgICAgICAgICAgICBP
dXRwdXQ6OlN0b3JlVHlwZSBzdG9yZVR5cGU7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgRWRnZSYgZWxlbWVudCA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCBlbGVtZW50
T2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkg
IT0gQXJyYXk6OkRvdWJsZSkgewotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGxvd0pTVmFs
dWUoZWxlbWVudCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpJbnQzMikKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2ludGVycHJldGVyLm5lZWRzVHlw
ZUNoZWNrKGVsZW1lbnQsIFNwZWNJbnQzMk9ubHkpKTsKLSAgICAgICAgICAgICAgICAgICAgc3Rv
cmVUeXBlID0gT3V0cHV0OjpTdG9yZTY0OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gbG93RG91YmxlKGVsZW1lbnQpOwotICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlbGVt
ZW50LCBTcGVjRG91YmxlUmVhbCkpOwotICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBP
dXRwdXQ6OlN0b3JlRG91YmxlOworICAgICAgICAgICAgTFZhbHVlIHZhbHVlOworICAgICAgICAg
ICAgT3V0cHV0OjpTdG9yZVR5cGUgc3RvcmVUeXBlOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgIT0gQXJyYXk6OkRvdWJsZSkgeworICAg
ICAgICAgICAgICAgIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9k
ZSgpLnR5cGUoKSA9PSBBcnJheTo6SW50MzIpIHsKKyAgICAgICAgICAgICAgICAgICAgRlRMX1RZ
UEVfQ0hFQ0soCisgICAgICAgICAgICAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUodmFsdWUpLCBt
X25vZGUtPmNoaWxkMigpLCBTcGVjSW50MzJPbmx5LCBpc05vdEludDMyKHZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgTFZhbHVlIHByZXZMZW5ndGggPSBtX291
dC5sb2FkMzIoc3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBmYXN0UGF0aCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291
dC5uZXdCbG9jaygpOwotICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9
IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKAotICAgICAgICAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwcmV2TGVuZ3RoLCBtX291dC5sb2FkMzIoc3RvcmFnZSwgbV9o
ZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKSksCi0gICAgICAgICAgICAgICAgICAgIHVuc3Vy
ZShzbG93UGF0aCksIHVuc3VyZShmYXN0UGF0aCkpOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oZmFzdFBhdGgs
IHNsb3dQYXRoKTsKLSAgICAgICAgICAgICAgICBtX291dC5zdG9yZSgKLSAgICAgICAgICAgICAg
ICAgICAgdmFsdWUsIG1fb3V0LmJhc2VJbmRleChoZWFwLCBzdG9yYWdlLCBtX291dC56ZXJvRXh0
UHRyKHByZXZMZW5ndGgpKSwgc3RvcmVUeXBlKTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgbmV3
TGVuZ3RoID0gbV9vdXQuYWRkKHByZXZMZW5ndGgsIG1fb3V0LmludDMyT25lKTsKLSAgICAgICAg
ICAgICAgICBtX291dC5zdG9yZTMyKG5ld0xlbmd0aCwgc3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJm
bHlfcHVibGljTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBWYWx1
ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGJveEludDMyKG5ld0xlbmd0aCkp
OwotICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0
aW9uKTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgb3BlcmF0aW9uOwotICAgICAgICAgICAgICAg
IGlmIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSAhPSBBcnJheTo6RG91YmxlKQotICAgICAg
ICAgICAgICAgICAgICBvcGVyYXRpb24gPSBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQXJyYXlQ
dXNoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG9wZXJhdGlv
biA9IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25BcnJheVB1c2hEb3VibGUpOwotICAgICAgICAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0gICAgICAg
ICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uLCBtX2NhbGxGcmFtZSwgdmFsdWUs
IGJhc2UpKTsKLSAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQs
IGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgc3RvcmVUeXBlID0gT3V0cHV0OjpTdG9yZTY0OworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgICAgICBGVExfVFlQRV9DSEVDSygKKyAgICAgICAgICAgICAgICAgICAg
ZG91YmxlVmFsdWUodmFsdWUpLCBtX25vZGUtPmNoaWxkMigpLCBTcGVjRG91YmxlUmVhbCwKKyAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCh2YWx1ZSwg
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0b3JlRG91Ymxl
OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBJbmRleGVkQWJzdHJh
Y3RIZWFwJiBoZWFwID0gbV9oZWFwcy5mb3JBcnJheVR5cGUobV9ub2RlLT5hcnJheU1vZGUoKS50
eXBlKCkpOwogCiAgICAgICAgICAgICBMVmFsdWUgcHJldkxlbmd0aCA9IG1fb3V0LmxvYWQzMihz
dG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOwotICAgICAgICAgICAgTFZh
bHVlIG5ld0xlbmd0aCA9IG1fb3V0LmFkZChwcmV2TGVuZ3RoLCBtX291dC5jb25zdEludDMyKGVs
ZW1lbnRDb3VudCkpOwotCisgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGZh
c3RQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQ
YXRoID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNldHVwID0g
bV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYWxsUGF0aCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24g
PSBtX291dC5uZXdCbG9jaygpOwotCi0gICAgICAgICAgICBMVmFsdWUgYmV5b25kVmVjdG9yTGVu
Z3RoID0gbV9vdXQuYWJvdmUobmV3TGVuZ3RoLCBtX291dC5sb2FkMzIoc3RvcmFnZSwgbV9oZWFw
cy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKSk7Ci0KLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaChi
ZXlvbmRWZWN0b3JMZW5ndGgsIHVuc3VyZShzbG93UGF0aCksIHVuc3VyZShmYXN0UGF0aCkpOwot
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgICAg
ICBtX291dC5hYm92ZU9yRXF1YWwoCisgICAgICAgICAgICAgICAgICAgIHByZXZMZW5ndGgsIG1f
b3V0LmxvYWQzMihzdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV92ZWN0b3JMZW5ndGgpKSwKKyAg
ICAgICAgICAgICAgICB1bnN1cmUoc2xvd1BhdGgpLCB1bnN1cmUoZmFzdFBhdGgpKTsKKyAgICAg
ICAgICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhmYXN0UGF0aCwgc2xvd1BhdGgpOworICAgICAgICAgICAgbV9vdXQuc3RvcmUoCisgICAgICAg
ICAgICAgICAgdmFsdWUsIG1fb3V0LmJhc2VJbmRleChoZWFwLCBzdG9yYWdlLCBtX291dC56ZXJv
RXh0UHRyKHByZXZMZW5ndGgpKSwgc3RvcmVUeXBlKTsKKyAgICAgICAgICAgIExWYWx1ZSBuZXdM
ZW5ndGggPSBtX291dC5hZGQocHJldkxlbmd0aCwgbV9vdXQuaW50MzJPbmUpOwogICAgICAgICAg
ICAgbV9vdXQuc3RvcmUzMihuZXdMZW5ndGgsIHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5X3B1
YmxpY0xlbmd0aCk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0QnVmZmVyUmVzdWx0
ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJhc2VJbmRleChzdG9yYWdlLCBtX291dC56ZXJvRXh0UHRy
KHByZXZMZW5ndGgpLCBTY2FsZUVpZ2h0KSk7Ci0gICAgICAgICAgICBtX291dC5qdW1wKHNldHVw
KTsKLQotICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIHNldHVwKTsKLSAgICAg
ICAgICAgIHNpemVfdCBzY3JhdGNoU2l6ZSA9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBlbGVt
ZW50Q291bnQ7Ci0gICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkgPT0gc2l6ZW9mKGRvdWJsZSksICIiKTsKLSAgICAgICAgICAgIEFTU0VSVChzY3JhdGNoU2l6
ZSk7Ci0gICAgICAgICAgICBTY3JhdGNoQnVmZmVyKiBzY3JhdGNoQnVmZmVyID0gdm0oKS5zY3Jh
dGNoQnVmZmVyRm9yU2l6ZShzY3JhdGNoU2l6ZSk7Ci0gICAgICAgICAgICBtX291dC5zdG9yZVB0
cihtX291dC5jb25zdEludFB0cihzY3JhdGNoU2l6ZSksIG1fb3V0LmFic29sdXRlKHNjcmF0Y2hC
dWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBzbG93QnVmZmVyUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNvbnN0SW50UHRyKHN0
YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSkp
OwotICAgICAgICAgICAgbV9vdXQuanVtcChzZXR1cCk7Ci0KLSAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKHNldHVwLCBzbG93Q2FsbFBhdGgpOwotICAgICAgICAgICAgTFZhbHVlIGJ1ZmZlciA9
IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0QnVmZmVyUmVzdWx0LCBzbG93QnVmZmVyUmVz
dWx0KTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgZWxlbWVudEluZGV4ID0gMDsgZWxlbWVu
dEluZGV4IDwgZWxlbWVudENvdW50OyArK2VsZW1lbnRJbmRleCkgewotICAgICAgICAgICAgICAg
IEVkZ2UmIGVsZW1lbnQgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgZWxlbWVudEluZGV4
ICsgZWxlbWVudE9mZnNldCk7Ci0KLSAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWU7Ci0gICAg
ICAgICAgICAgICAgT3V0cHV0OjpTdG9yZVR5cGUgc3RvcmVUeXBlOwotICAgICAgICAgICAgICAg
IGlmIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSAhPSBBcnJheTo6RG91YmxlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gbG93SlNWYWx1ZShlbGVtZW50LCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOwotICAgICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUo
KS50eXBlKCkgPT0gQXJyYXk6OkludDMyKQotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWxlbWVudCwgU3BlY0ludDMy
T25seSkpOwotICAgICAgICAgICAgICAgICAgICBzdG9yZVR5cGUgPSBPdXRwdXQ6OlN0b3JlNjQ7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBs
b3dEb3VibGUoZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
X2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVsZW1lbnQsIFNwZWNEb3VibGVSZWFsKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0b3JlVHlwZSA9IE91dHB1dDo6U3RvcmVEb3VibGU7Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUodmFsdWUsIG1fb3V0
LmJhc2VJbmRleChoZWFwLCBidWZmZXIsIG1fb3V0LmNvbnN0SW50MzIoZWxlbWVudEluZGV4KSwg
anNOdW1iZXIoZWxlbWVudEluZGV4KSksIHN0b3JlVHlwZSk7Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICAKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5h
bmNob3IoYm94SW50MzIobmV3TGVuZ3RoKSk7Ci0KLSAgICAgICAgICAgIG1fb3V0LmJyYW5jaChi
ZXlvbmRWZWN0b3JMZW5ndGgsIHVuc3VyZShzbG93Q2FsbFBhdGgpLCB1bnN1cmUoY29udGludWF0
aW9uKSk7Ci0KLSAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYWxsUGF0aCwgY29udGlu
dWF0aW9uKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7
CiAgICAgICAgICAgICBMVmFsdWUgb3BlcmF0aW9uOwogICAgICAgICAgICAgaWYgKG1fbm9kZS0+
YXJyYXlNb2RlKCkudHlwZSgpICE9IEFycmF5OjpEb3VibGUpCi0gICAgICAgICAgICAgICAgb3Bl
cmF0aW9uID0gbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlKTsKKyAg
ICAgICAgICAgICAgICBvcGVyYXRpb24gPSBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQXJyYXlQ
dXNoKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlTXVsdGlwbGUpOwotICAgICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQs
IG9wZXJhdGlvbiwgbV9jYWxsRnJhbWUsIGJhc2UsIGJ1ZmZlciwgbV9vdXQuY29uc3RJbnQzMihl
bGVtZW50Q291bnQpKSk7Ci0gICAgICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdElu
dFB0cigwKSwgbV9vdXQuYWJzb2x1dGUoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVu
Z3RoKCkpKTsKKyAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uQXJyYXlQdXNoRG91YmxlKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dS
ZXN1bHQgPSBtX291dC5hbmNob3IoCisgICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBvcGVy
YXRpb24sIG1fY2FsbEZyYW1lLCB2YWx1ZSwgYmFzZSkpOwogICAgICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwotCisgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotCisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgYXJyYXkgdHlwZSIpOwogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApp
bmRleCBjMGFjMmVmNmE2OGU0NTAxYzZkMjQ2MzBiY2JiZGQ4YWJjOGEwNmM2Li42NjlmMzA0MmNm
NWE4Mjg0M2RjZjg0ZDdhMGI3MGI4ZjhjZjJjZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTQxLDcgKzE0MSw2IEBAIHR5cGVkZWYgRW5jb2RlZEpT
VmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJh
dGlvbl9FSlopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKIHR5cGVkZWYg
RW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VKQykoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQ2VsbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAo
SklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpBKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgSlNBcnJheSopOwotdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAq
Sl9KSVRPcGVyYXRpb25fRUFQWikoRXhlY1N0YXRlKiwgSlNBcnJheSosIHZvaWQqLCBpbnQzMl90
KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9u
X0VKQXJwKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgQXJpdGhQcm9maWxlKik7CiB0eXBl
ZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FSkkpKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBF
bmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUpKKShFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDY2Yzk2ZTRlMzI1ODVl
MGMyYjExOTQwYTQyMjJmYjcwMDJkNjY4N2UuLjJlNzE3ZDgwMDVhOWNiMDY3MTVmNWUwZmQ5YTk4
NzI0YzZmNTZkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKQEAgLTc2NCwxMCArNzY0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQdXNoKEV4ZWNTdGF0ZSogZXhlYykKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CiAKLSAgICBpZiAoTElL
RUxZKGlzSlNBcnJheSh0aGlzVmFsdWUpICYmIGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAxKSkg
eworICAgIGlmIChpc0pTQXJyYXkodGhpc1ZhbHVlKSAmJiBleGVjLT5hcmd1bWVudENvdW50KCkg
PT0gMSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc1ZhbHVlKTsKICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBhcnJheS0+cHVzaElubGluZShleGVjLCBl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgICAgIGFycmF5LT5wdXNoKGV4ZWMsIGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcihhcnJheS0+bGVuZ3RoKCkpKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDYyYWM2MDQ2NDJhNTYzNWM1NjJiZmEy
YjczN2FlNzk0ZWJkNzJlYWQuLjVkY2ZlZDI5NTc0ZmZhMzc0YWQwZTFiNjJmZDRmYzY3NGUwYzQz
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC00MCw3
ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25z
dCBjaGFyKiBjb25zdCBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yID0g
Ikxlbmd0aCBleGNlZWRlZCB0aGUgbWF4aW11bSBhcnJheSBsZW5ndGgiOworc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IgPSAi
TGVuZ3RoIGV4Y2VlZGVkIHRoZSBtYXhpbXVtIGFycmF5IGxlbmd0aCI7CiAKIFNUQVRJQ19BU1NF
UlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShKU0FycmF5KTsKIApAQCAtNzI1LDkgKzcyNSwx
NTMgQEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogLy8gUHVzaCAmIHB1
dEluZGV4IGFyZSBhbG1vc3QgaWRlbnRpY2FsLCB3aXRoIHR3byBzbWFsbCBkaWZmZXJlbmNlcy4K
IC8vICAtIHdlIGFsd2F5cyBhcmUgd3JpdGluZyBiZXlvbmQgdGhlIGN1cnJlbnQgYXJyYXkgYm91
bmRzLCBzbyBpdCBpcyBhbHdheXMgbmVjZXNzYXJ5IHRvIHVwZGF0ZSBtX2xlbmd0aCAmIG1fbnVt
VmFsdWVzSW5WZWN0b3IuCiAvLyAgLSBwdXNoaW5nIHRvIGFuIGFycmF5IG9mIGxlbmd0aCAyXjMy
LTEgc3RvcmVzIHRoZSBwcm9wZXJ0eSwgYnV0IHRocm93cyBhIHJhbmdlIGVycm9yLgotTkVWRVJf
SU5MSU5FIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
Cit2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewot
ICAgIHB1c2hJbmxpbmUoZXhlYywgdmFsdWUpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQnV0dGVyZmx5
KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXRNYXlCZU51bGwoKTsKKyAgICAKKyAgICBzd2l0
Y2ggKGluZGV4aW5nVHlwZSgpKSB7CisgICAgY2FzZSBBcnJheUNsYXNzOiB7CisgICAgICAgIGNy
ZWF0ZUluaXRpYWxVbmRlY2lkZWQodm0sIDApOworICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9
CisgICAgICAgIAorICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNpZGVkOiB7CisgICAgICAgIGNvbnZl
cnRVbmRlY2lkZWRGb3JWYWx1ZSh2bSwgdmFsdWUpOworICAgICAgICBzY29wZS5yZWxlYXNlKCk7
CisgICAgICAgIHB1c2goZXhlYywgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
ICAgICAKKyAgICBjYXNlIEFycmF5V2l0aEludDMyOiB7CisgICAgICAgIGlmICghdmFsdWUuaXNJ
bnQzMigpKSB7CisgICAgICAgICAgICBjb252ZXJ0SW50MzJGb3JWYWx1ZSh2bSwgdmFsdWUpOwor
ICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICAgICAgcHVzaChleGVjLCB2YWx1
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOworICAgICAgICBBU1NFUlQobGVuZ3Ro
IDw9IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOworICAgICAgICBpZiAobGVuZ3RoIDwgYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkgeworICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1
b3VzSW50MzIoKVtsZW5ndGhdLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodmFsdWUpOworICAgICAg
ICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgobGVuZ3RoICsgMSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChVTkxJS0VMWShsZW5n
dGggPiBNQVhfQVJSQVlfSU5ERVgpKSB7CisgICAgICAgICAgICBtZXRob2RUYWJsZSh2bSktPnB1
dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBp
ZiAoIXNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChMZW5ndGhFeGNl
ZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yKSkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICBwdXRCeUluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8SW50MzJTaGFwZT4oZXhlYywgbGVu
Z3RoLCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIEFycmF5V2l0
aENvbnRpZ3VvdXM6IHsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYnV0dGVyZmx5LT5wdWJs
aWNMZW5ndGgoKTsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCA8PSBidXR0ZXJmbHktPnZlY3Rvckxl
bmd0aCgpKTsKKyAgICAgICAgaWYgKGxlbmd0aCA8IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkp
IHsKKyAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpW2xlbmd0aF0uc2V0KHZtLCB0
aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChsZW5n
dGggKyAxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IE1BWF9BUlJBWV9JTkRFWCkpIHsKKyAgICAgICAgICAg
IG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0
cnVlKTsKKyAgICAgICAgICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkpCisgICAgICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IpKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzY29wZS5yZWxlYXNlKCk7
CisgICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlczxD
b250aWd1b3VzU2hhcGU+KGV4ZWMsIGxlbmd0aCwgdmFsdWUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgICAgICAKKyAgICBjYXNlIEFycmF5V2l0aERvdWJsZTogeworICAgICAgICBpZiAo
IXZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3Vv
dXModm0pOworICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICAgICAgcHVzaChl
eGVjLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZG91
YmxlIHZhbHVlQXNEb3VibGUgPSB2YWx1ZS5hc051bWJlcigpOworICAgICAgICBpZiAodmFsdWVB
c0RvdWJsZSAhPSB2YWx1ZUFzRG91YmxlKSB7CisgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9D
b250aWd1b3VzKHZtKTsKKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgICAg
IHB1c2goZXhlYywgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKKyAgICAg
ICAgQVNTRVJUKGxlbmd0aCA8PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKKyAgICAgICAg
aWYgKGxlbmd0aCA8IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGJ1
dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2xlbmd0aF0gPSB2YWx1ZUFzRG91YmxlOworICAg
ICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgobGVuZ3RoICsgMSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChVTkxJS0VMWShs
ZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpKSB7CisgICAgICAgICAgICBtZXRob2RUYWJsZSh2bSkt
PnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAg
ICBpZiAoIXNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChMZW5ndGhF
eGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yKSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICBwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KGV4ZWMs
IGxlbmd0aCwgdmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBj
YXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6IHsKKyAgICAgICAgdW5zaWduZWQgb2xk
TGVuZ3RoID0gbGVuZ3RoKCk7CisgICAgICAgIGJvb2wgcHV0UmVzdWx0ID0gZmFsc2U7CisgICAg
ICAgIGlmIChhdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlKGV4ZWMsIG9sZExlbmd0
aCwgdmFsdWUsIHRydWUsIHB1dFJlc3VsdCkpIHsKKyAgICAgICAgICAgIGlmICghc2NvcGUuZXhj
ZXB0aW9uKCkgJiYgb2xkTGVuZ3RoIDwgMHhGRkZGRkZGRnUpIHsKKyAgICAgICAgICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgc2V0TGVuZ3RoKGV4ZWMsIG9sZExlbmd0
aCArIDEsIHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBBcnJh
eVdpdGhBcnJheVN0b3JhZ2U6IHsKKyAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gYnV0
dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKKworICAgICAgICAvLyBGYXN0IGNhc2UgLSBwdXNoIHdp
dGhpbiB2ZWN0b3IsIGFsd2F5cyB1cGRhdGUgbV9sZW5ndGggJiBtX251bVZhbHVlc0luVmVjdG9y
LgorICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdG9yYWdlLT5sZW5ndGgoKTsKKyAgICAgICAg
aWYgKGxlbmd0aCA8IHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpKSB7CisgICAgICAgICAgICBzdG9y
YWdlLT5tX3ZlY3RvcltsZW5ndGhdLnNldCh2bSwgdGhpcywgdmFsdWUpOworICAgICAgICAgICAg
c3RvcmFnZS0+c2V0TGVuZ3RoKGxlbmd0aCArIDEpOworICAgICAgICAgICAgKytzdG9yYWdlLT5t
X251bVZhbHVlc0luVmVjdG9yOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gUHVzaGluZyB0byBhbiBhcnJheSBvZiBpbnZhbGlkIGxlbmd0aCAoMl4zMS0xKSBz
dG9yZXMgdGhlIHByb3BlcnR5LCBidXQgdGhyb3dzIGEgcmFuZ2UgZXJyb3IuCisgICAgICAgIGlm
IChVTkxJS0VMWShzdG9yYWdlLT5sZW5ndGgoKSA+IE1BWF9BUlJBWV9JTkRFWCkpIHsKKyAgICAg
ICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBzdG9yYWdlLT5s
ZW5ndGgoKSwgdmFsdWUsIHRydWUpOworICAgICAgICAgICAgLy8gUGVyIEVTNS4xIDE1LjQuNC43
IHN0ZXAgNiAmIDE1LjQuNS4xIHN0ZXAgMy5kLgorICAgICAgICAgICAgaWYgKCFzY29wZS5leGNl
cHRpb24oKSkKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVt
QXJyYXlMZW5ndGhFcnJvcikpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEhhbmRsZWQgdGhlIHNhbWUgYXMgcHV0SW5kZXguCisgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKKyAgICAgICAgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0
b3JhZ2UoZXhlYywgc3RvcmFnZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVlLCBzdG9yYWdlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiB9CiAKIEpTQXJyYXkqIEpTQXJyYXk6
OmZhc3RTbGljZShFeGVjU3RhdGUmIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVk
IGNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IGFiZjRl
YTFjZmVlMjkzZTg4ZmU0NzBmZjJhMGQyOGM0NTM5NTk4NWIuLjFhMWE0MGUyZWIxZDE3ZGM1MjNi
ODdiYmJmODM4NzFiMDQ5Y2UzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgKQEAgLTMxLDggKzMxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU0FycmF5Owog
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi1leHRlcm4gY29uc3QgY2hhciogY29uc3Qg
TGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvcjsKLQogY2xhc3MgSlNBcnJh
eSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CkBAIC05Miw3ICs5MCw2IEBA
IHB1YmxpYzoKICAgICAvLyBPSyB0byB1c2Ugb24gbmV3IGFycmF5cywgYnV0IG5vdCBpZiBpdCBt
aWdodCBiZSBhIFJlZ0V4cE1hdGNoQXJyYXkgb3IgUnVudGltZUFycmF5LgogICAgIEpTX0VYUE9S
VF9QUklWQVRFIGJvb2wgc2V0TGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBib29sIHRocm93
RXhjZXB0aW9uID0gZmFsc2UpOwogCi0gICAgdm9pZCBwdXNoSW5saW5lKEV4ZWNTdGF0ZSosIEpT
VmFsdWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHVzaChFeGVjU3RhdGUqLCBKU1Zh
bHVlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHBvcChFeGVjU3RhdGUqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJbmxpbmVzLmgKaW5kZXgg
NzZmZTBmNWE2YzMwY2UyMWVjOTkwMmU0OWRiYWM4ZjMwZWRmZTE5Mi4uNzgxNTM2OThiMjY1NjNm
OTc0M2YxMDMzMjhhODkzOGFhNGRiMDBmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5SW5saW5lcy5oCkBAIC0xOSw3ICsxOSw2IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgpAQCAtODMsMTUzICs4Miw0
IEBAIEFMV0FZU19JTkxJTkUgZG91YmxlIHRvTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIG9iaikKICAgICByZXR1cm4gbGVuZ3RoVmFsdWUudG9MZW5ndGgoZXhlYyk7CiB9CiAKLUFM
V0FZU19JTkxJTkUgdm9pZCBKU0FycmF5OjpwdXNoSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0g
bV9idXR0ZXJmbHkuZ2V0TWF5QmVOdWxsKCk7Ci0KLSAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgp
KSB7Ci0gICAgY2FzZSBBcnJheUNsYXNzOiB7Ci0gICAgICAgIGNyZWF0ZUluaXRpYWxVbmRlY2lk
ZWQodm0sIDApOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICB9Ci0KLSAgICBjYXNlIEFycmF5
V2l0aFVuZGVjaWRlZDogewotICAgICAgICBjb252ZXJ0VW5kZWNpZGVkRm9yVmFsdWUodm0sIHZh
bHVlKTsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBwdXNoKGV4ZWMsIHZhbHVl
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6IHsK
LSAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpIHsKLSAgICAgICAgICAgIGNvbnZlcnRJbnQz
MkZvclZhbHVlKHZtLCB2YWx1ZSk7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
ICAgICAgICBwdXNoKGV4ZWMsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7
Ci0gICAgICAgIEFTU0VSVChsZW5ndGggPD0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0g
ICAgICAgIGlmIChsZW5ndGggPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKSB7Ci0gICAgICAg
ICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpW2xlbmd0aF0uc2V0V2l0aG91dFdyaXRl
QmFycmllcih2YWx1ZSk7Ci0gICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChs
ZW5ndGggKyAxKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChVTkxJS0VMWShsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpKSB7Ci0gICAgICAgICAgICBtZXRo
b2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7
Ci0gICAgICAgICAgICBpZiAoIXNjb3BlLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbChMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yKSkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8SW50MzJT
aGFwZT4oZXhlYywgbGVuZ3RoLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6IHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0g
YnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKLSAgICAgICAgQVNTRVJUKGxlbmd0aCA8PSBidXR0
ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgaWYgKGxlbmd0aCA8IGJ1dHRlcmZseS0+
dmVjdG9yTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpW2xl
bmd0aF0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Ci0gICAgICAgICAgICBidXR0ZXJmbHktPnNldFB1
YmxpY0xlbmd0aChsZW5ndGggKyAxKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChVTkxJS0VMWShsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpKSB7Ci0gICAg
ICAgICAgICBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2
YWx1ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBpZiAoIXNjb3BlLmV4Y2VwdGlvbigpKQotICAgICAg
ICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbChMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9y
KSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJp
YnV0ZXM8Q29udGlndW91c1NoYXBlPihleGVjLCBsZW5ndGgsIHZhbHVlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOiB7Ci0gICAgICAgIGlmICgh
dmFsdWUuaXNOdW1iZXIoKSkgewotICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91
cyh2bSk7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBwdXNoKGV4
ZWMsIHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBkb3Vi
bGUgdmFsdWVBc0RvdWJsZSA9IHZhbHVlLmFzTnVtYmVyKCk7Ci0gICAgICAgIGlmICh2YWx1ZUFz
RG91YmxlICE9IHZhbHVlQXNEb3VibGUpIHsKLSAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0Nv
bnRpZ3VvdXModm0pOwotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAg
cHVzaChleGVjLCB2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggPSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwotICAgICAg
ICBBU1NFUlQobGVuZ3RoIDw9IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBp
ZiAobGVuZ3RoIDwgYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkgewotICAgICAgICAgICAgYnV0
dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbbGVuZ3RoXSA9IHZhbHVlQXNEb3VibGU7Ci0gICAg
ICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChsZW5ndGggKyAxKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChVTkxJS0VMWShsZW5ndGggPiBN
QVhfQVJSQVlfSU5ERVgpKSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5k
ZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBpZiAoIXNj
b3BlLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChMZW5ndGhFeGNlZWRlZFRo
ZU1heGltdW1BcnJheUxlbmd0aEVycm9yKSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXM8RG91YmxlU2hhcGU+KGV4ZWMsIGxlbmd0aCwg
dmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBBcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlOiB7Ci0gICAgICAgIHVuc2lnbmVkIG9sZExlbmd0aCA9IGxlbmd0aCgp
OwotICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOwotICAgICAgICBpZiAoYXR0ZW1wdFRv
SW50ZXJjZXB0UHV0QnlJbmRleE9uSG9sZShleGVjLCBvbGRMZW5ndGgsIHZhbHVlLCB0cnVlLCBw
dXRSZXN1bHQpKSB7Ci0gICAgICAgICAgICBpZiAoIXNjb3BlLmV4Y2VwdGlvbigpICYmIG9sZExl
bmd0aCA8IDB4RkZGRkZGRkZ1KSB7Ci0gICAgICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgICAgICAgICAgICAgIHNldExlbmd0aChleGVjLCBvbGRMZW5ndGggKyAxLCB0cnVlKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBGQUxM
VEhST1VHSDsKLSAgICB9Ci0KLSAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZTogewotICAg
ICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwot
Ci0gICAgICAgIC8vIEZhc3QgY2FzZSAtIHB1c2ggd2l0aGluIHZlY3RvciwgYWx3YXlzIHVwZGF0
ZSBtX2xlbmd0aCAmIG1fbnVtVmFsdWVzSW5WZWN0b3IuCi0gICAgICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHN0b3JhZ2UtPmxlbmd0aCgpOwotICAgICAgICBpZiAobGVuZ3RoIDwgc3RvcmFnZS0+dmVj
dG9yTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2xlbmd0aF0uc2V0
KHZtLCB0aGlzLCB2YWx1ZSk7Ci0gICAgICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgobGVuZ3Ro
ICsgMSk7Ci0gICAgICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQdXNoaW5nIHRvIGFuIGFy
cmF5IG9mIGludmFsaWQgbGVuZ3RoICgyXjMxLTEpIHN0b3JlcyB0aGUgcHJvcGVydHksIGJ1dCB0
aHJvd3MgYSByYW5nZSBlcnJvci4KLSAgICAgICAgaWYgKFVOTElLRUxZKHN0b3JhZ2UtPmxlbmd0
aCgpID4gTUFYX0FSUkFZX0lOREVYKSkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUodm0pLT5w
dXRCeUluZGV4KHRoaXMsIGV4ZWMsIHN0b3JhZ2UtPmxlbmd0aCgpLCB2YWx1ZSwgdHJ1ZSk7Ci0g
ICAgICAgICAgICAvLyBQZXIgRVM1LjEgMTUuNC40Ljcgc3RlcCA2ICYgMTUuNC41LjEgc3RlcCAz
LmQuCi0gICAgICAgICAgICBpZiAoIXNjb3BlLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAg
IHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbChMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yKSkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSGFuZGxlZCB0aGUgc2Ft
ZSBhcyBwdXRJbmRleC4KLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShleGVjLCBzdG9yYWdlLT5sZW5n
dGgoKSwgdmFsdWUsIHRydWUsIHN0b3JhZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBiZWM5ODI2YzM5ZTk4ZjA4M2NhZTk5NWE2ZGZkODYw
MjM4MTBlYTU4Li44MzBkZmY5ZmNjZWIyZjRmZGNlNDM0NjVmOGM2MzBkY2YwNDQ5YjkyIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDE3LTA5LTI5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0
Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIyNTYzLCByMjIyNTY1
LCBhbmQgcjIyMjU4MS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NzY3NQorCisgICAgICAgICJJdCBjYXVzZXMgYSBjcmFzaCB3aGVuIHBsYXlpbmcg
eW91dHViZSB2aWRlb3MiIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgc2FhbXlqb29uIG9uICN3ZWJr
aXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIltERkddIFN1
cHBvcnQgQXJyYXlQdXNoIHdpdGggbXVsdGlwbGUgYXJncyIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTgyMworICAgICAgICBodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8yMjI1NjMKKworICAgICAgICAiVW5yZXZpZXdlZCwgYnVpbGQg
Zml4IGFmdGVyIHIyMjI1NjMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzU4MjMKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMjIyNTY1CisKKyAgICAgICAgIlVucmV2aWV3ZWQsIGZpeCB4ODYgYnJlYWtpbmcgZHVlIHRv
IGV4aGF1c3RlZCByZWdpc3RlcnMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzU4MjMKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMjIyNTgxCisKIDIwMTctMDktMjggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIHRlc3QyNjI6IFVuZXhwZWN0ZWQgcGFzc2VzIGFmdGVyIHIyMjI2MTcgYW5k
IHIyMjI2MTguCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9hcnJheS1wdXNo
LTAuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9hcnJheS1wdXNoLTAuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3YmNkZDEwMDZkYzRlMmQ3Mzc2OGZkMzE5OTJlODM0MzNk
MGEzNjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvYXJyYXktcHVzaC0wLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
OSArMCwwIEBACi1mdW5jdGlvbiBhcnJheVB1c2gwKCkgewotICB2YXIgcmV0ID0gWzFdOwotICBy
ZXQucHVzaCgpOwotICByZXR1cm4gcmV0OwotfQotbm9JbmxpbmUoYXJyYXlQdXNoMCk7Ci0KLWZv
ciAodmFyIGkgPSAwOyBpIDwgMWU3OyArK2kpCi0gICAgYXJyYXlQdXNoMCgpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvYXJyYXktcHVzaC0xLmpzIGIvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvYXJyYXktcHVzaC0xLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1ZTZkOWU2YmE3OTQ2ZmM4ZWNkNGJmZTJlMjc3YmIwNmI3NWMyODA1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2FycmF5LXB1c2gtMS5qcworKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotZnVuY3Rpb24g
YXJyYXlQdXNoMSgpIHsKLSAgdmFyIHJldCA9IFsxXTsKLSAgcmV0LnB1c2goMSk7Ci0gIHJldHVy
biByZXQ7Ci19Ci1ub0lubGluZShhcnJheVB1c2gxKTsKLQotZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTc7ICsraSkKLSAgICBhcnJheVB1c2gxKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9hcnJheS1wdXNoLTIuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9hcnJheS1w
dXNoLTIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmZDhmOGE4MjIzODU0NjJj
ZjI1NTJmYzgxYmZlMzliYjVlMGIwODcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvYXJyYXktcHVzaC0yLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1mdW5jdGlvbiBhcnJheVB1c2gyKCkgewotICB2
YXIgcmV0ID0gWzFdOwotICByZXQucHVzaCgxLCAyKTsKLSAgcmV0dXJuIHJldDsKLX0KLW5vSW5s
aW5lKGFycmF5UHVzaDIpOwotCi1mb3IgKHZhciBpID0gMDsgaSA8IDFlNzsgKytpKQotICAgIGFy
cmF5UHVzaDIoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2FycmF5LXB1
c2gtMy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2FycmF5LXB1c2gtMy5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGMzNjk0ZGIwYjkxNWRkMzQzMGQ4MWJlOGI0YTI5YzY4
NjFlNTYzZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9hcnJheS1wdXNoLTMuanMKKysrIC9kZXYvbnVsbApAQCAt
MSw5ICswLDAgQEAKLWZ1bmN0aW9uIGFycmF5UHVzaDMoKSB7Ci0gIHZhciByZXQgPSBbMV07Ci0g
IHJldC5wdXNoKDEsIDIsIDMpOwotICByZXR1cm4gcmV0OwotfQotbm9JbmxpbmUoYXJyYXlQdXNo
Myk7Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgMWU3OyArK2kpCi0gICAgYXJyYXlQdXNoMygpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1tdWx0aXBsZS1jb250aWd1b3Vz
LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1tdWx0aXBsZS1jb250aWd1b3VzLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzM2YjNkOTBiYmQ3YzNmNTJjZWQyYTZkOWZh
N2VjYTU0MWM3YTM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LXB1c2gtbXVsdGlwbGUtY29udGlndW91cy5qcworKysg
L2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLWZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpCi17Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKLX0KLQotZnVuY3Rpb24gdGVzdChhcnJh
eSwgdmFsMSwgdmFsMiwgdmFsMykKLXsKLSAgICByZXR1cm4gYXJyYXkucHVzaCh2YWwxLCB2YWwy
LCB2YWwzKTsKLX0KLW5vSW5saW5lKHRlc3QpOwotCi1mb3IgKHZhciBpID0gMDsgaSA8IDFlNTsg
KytpKSB7Ci0gICAgdmFyIGFycmF5ID0gW107Ci0gICAgc2hvdWxkQmUodGVzdChhcnJheSwgIkNv
Y29hIiwgIkNhcHB1Y2Npbm8iLCAiTWF0Y2hhIiksIDMpOwotICAgIHNob3VsZEJlKGFycmF5WzBd
LCAiQ29jb2EiKTsKLSAgICBzaG91bGRCZShhcnJheVsxXSwgIkNhcHB1Y2Npbm8iKTsKLSAgICBz
aG91bGRCZShhcnJheVsyXSwgIk1hdGNoYSIpOwotfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvYXJyYXktcHVzaC1tdWx0aXBsZS1kb3VibGUtbmFuLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJy
YXktcHVzaC1tdWx0aXBsZS1kb3VibGUtbmFuLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5ZDE2YjhmZDI1ODA5ZjFlNDZiOGFlODdkYWE2ZjQwODFmOTg0NTIwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvc3RyZXNzL2FycmF5
LXB1c2gtbXVsdGlwbGUtZG91YmxlLW5hbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAg
QEAKLWZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCi17Ci0gICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKLX0KLQotZnVuY3Rpb24gdGVzdChhcnJheSwgdmFsMSwgdmFsMiwgdmFsMykKLXsK
LSAgICByZXR1cm4gYXJyYXkucHVzaCh2YWwxLCB2YWwyLCB2YWwzKTsKLX0KLW5vSW5saW5lKHRl
c3QpOwotCi1mb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7Ci0gICAgdmFyIGFycmF5ID0g
W107Ci0gICAgdmFyIHZhbHVlID0gMy4zOwotICAgIGlmIChpID09PSAxZTUgLSAxKQotICAgICAg
ICB2YWx1ZSA9IE5hTjsKLSAgICBzaG91bGRCZSh0ZXN0KGFycmF5LCAxLjEsIDIuMiwgdmFsdWUp
LCAzKTsKLSAgICBzaG91bGRCZShhcnJheVswXSwgMS4xKTsKLSAgICBzaG91bGRCZShhcnJheVsx
XSwgMi4yKTsKLSAgICBpZiAoaSA9PT0gMWU1IC0gMSkKLSAgICAgICAgc2hvdWxkQmUoTnVtYmVy
LmlzTmFOKGFycmF5WzJdKSwgdHJ1ZSk7Ci0gICAgZWxzZQotICAgICAgICBzaG91bGRCZShhcnJh
eVsyXSwgMy4zKTsKLX0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LXB1c2gtbXVs
dGlwbGUtZG91YmxlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1tdWx0aXBsZS1kb3Vi
bGUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZWVkMjYwMmY1ZmQ0Y2ZlYTZm
ZWE1Zjg5MWY0Mzg0NWY3N2I3ZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1tdWx0aXBsZS1kb3VibGUuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1mdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKQotewotICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3Qo
YXJyYXksIHZhbDEsIHZhbDIsIHZhbDMpCi17Ci0gICAgcmV0dXJuIGFycmF5LnB1c2godmFsMSwg
dmFsMiwgdmFsMyk7Ci19Ci1ub0lubGluZSh0ZXN0KTsKLQotZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTU7ICsraSkgewotICAgIHZhciBhcnJheSA9IFtdOwotICAgIHNob3VsZEJlKHRlc3QoYXJyYXks
IDEuMSwgMi4yLCAzLjMpLCAzKTsKLSAgICBzaG91bGRCZShhcnJheVswXSwgMS4xKTsKLSAgICBz
aG91bGRCZShhcnJheVsxXSwgMi4yKTsKLSAgICBzaG91bGRCZShhcnJheVsyXSwgMy4zKTsKLX0K
LQotZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgewotICAgIHZhciBhcnJheSA9IFtdOwot
ICAgIHNob3VsZEJlKHRlc3QoYXJyYXksIDEuMSwgMi4yLCA0KSwgMyk7Ci0gICAgc2hvdWxkQmUo
YXJyYXlbMF0sIDEuMSk7Ci0gICAgc2hvdWxkQmUoYXJyYXlbMV0sIDIuMik7Ci0gICAgc2hvdWxk
QmUoYXJyYXlbMl0sIDQpOwotfQotdmFyIGFycmF5ID0gW107Ci1zaG91bGRCZSh0ZXN0KGFycmF5
LCAxLjEsIDIuMiwgIlN0cmluZyIpLCAzKTsKLXNob3VsZEJlKGFycmF5WzBdLCAxLjEpOwotc2hv
dWxkQmUoYXJyYXlbMV0sIDIuMik7Ci1zaG91bGRCZShhcnJheVsyXSwgIlN0cmluZyIpOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1tdWx0aXBsZS1pbnQzMi5qcyBiL0pT
VGVzdHMvc3RyZXNzL2FycmF5LXB1c2gtbXVsdGlwbGUtaW50MzIuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDU1M2VlNThiNTVkMmY0MWRmYjhhY2QyZmRiMjI3NzdmMzhiMjJmMzcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9z
dHJlc3MvYXJyYXktcHVzaC1tdWx0aXBsZS1pbnQzMi5qcworKysgL2Rldi9udWxsCkBAIC0xLDI0
ICswLDAgQEAKLWZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCi17Ci0gICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVl
OiAnICsgYWN0dWFsKTsKLX0KLQotZnVuY3Rpb24gdGVzdChhcnJheSwgdmFsMSwgdmFsMiwgdmFs
MykKLXsKLSAgICByZXR1cm4gYXJyYXkucHVzaCh2YWwxLCB2YWwyLCB2YWwzKTsKLX0KLW5vSW5s
aW5lKHRlc3QpOwotCi1mb3IgKHZhciBpID0gMDsgaSA8IDFlNzsgKytpKSB7Ci0gICAgdmFyIGFy
cmF5ID0gW107Ci0gICAgc2hvdWxkQmUodGVzdChhcnJheSwgMSwgMiwgMyksIDMpOwotICAgIHNo
b3VsZEJlKGFycmF5WzBdLCAxKTsKLSAgICBzaG91bGRCZShhcnJheVsxXSwgMik7Ci0gICAgc2hv
dWxkQmUoYXJyYXlbMl0sIDMpOwotfQotdmFyIGFycmF5ID0gW107Ci1zaG91bGRCZSh0ZXN0KGFy
cmF5LCAxLCAyLCAzLjMpLCAzKTsKLXNob3VsZEJlKGFycmF5WzBdLCAxKTsKLXNob3VsZEJlKGFy
cmF5WzFdLCAyKTsKLXNob3VsZEJlKGFycmF5WzJdLCAzLjMpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvYXJyYXktcHVzaC1tdWx0aXBsZS1tYW55LWNvbnRpZ3VvdXMuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9hcnJheS1wdXNoLW11bHRpcGxlLW1hbnktY29udGlndW91cy5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOTA2YmU5OWEyZjczNDQ0MWFlMGRkZDRlYzY4ZjgwNDI5ODJh
ZWMxZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rl
c3RzL3N0cmVzcy9hcnJheS1wdXNoLW11bHRpcGxlLW1hbnktY29udGlndW91cy5qcworKysgL2Rl
di9udWxsCkBAIC0xLDIwICswLDAgQEAKLWZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpCi17Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKLX0KLQotZnVuY3Rpb24gdGVzdChhcnJheSwg
dmFsMSwgdmFsMiwgdmFsMywgdmFsNCwgdmFsNSwgdmFsNiwgdmFsNywgdmFsOCwgdmFsOSwgdmFs
MTAsIHZhbDExLCB2YWwxMikKLXsKLSAgICByZXR1cm4gYXJyYXkucHVzaCh2YWwxLCB2YWwyLCB2
YWwzLCB2YWw0LCB2YWw1LCB2YWw2LCB2YWw3LCB2YWw4LCB2YWw5LCB2YWwxMCwgdmFsMTEsIHZh
bDEyKTsKLX0KLW5vSW5saW5lKHRlc3QpOwotCi12YXIgdmFsdWVzID0gWyAiQUIiLCAiQkMiLCAi
Q0QiLCAiREUiLCAiRUYiLCAiRkciLCAiR0giLCAiSEkiLCAiSUoiLCAiSksiLCAiS0wiLCAiTE0i
IF07Ci1zaG91bGRCZSh2YWx1ZXMubGVuZ3RoLCAxMik7Ci1mb3IgKHZhciBpID0gMDsgaSA8IDFl
NTsgKytpKSB7Ci0gICAgdmFyIGFycmF5ID0gW107Ci0gICAgc2hvdWxkQmUodGVzdChhcnJheSwg
dmFsdWVzWzBdLCB2YWx1ZXNbMV0sIHZhbHVlc1syXSwgdmFsdWVzWzNdLCB2YWx1ZXNbNF0sIHZh
bHVlc1s1XSwgdmFsdWVzWzZdLCB2YWx1ZXNbN10sIHZhbHVlc1s4XSwgdmFsdWVzWzldLCB2YWx1
ZXNbMTBdLCB2YWx1ZXNbMTFdKSwgMTIpOwotICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsdWVz
Lmxlbmd0aDsgKytqKQotICAgICAgICBzaG91bGRCZShhcnJheVtqXSwgdmFsdWVzW2pdKTsKLX0K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LXB1c2gtbXVsdGlwbGUtbWFueS1kb3Vi
bGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNoLW11bHRpcGxlLW1hbnktZG91YmxlLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmU4OWYyNTliODc4ZDdjYTM2Yzg4Y2Fl
ZTg4MmI2MzI4NTc3MTU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LXB1c2gtbXVsdGlwbGUtbWFueS1kb3VibGUuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1mdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKQotewotICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3Qo
YXJyYXksIHZhbDEsIHZhbDIsIHZhbDMsIHZhbDQsIHZhbDUsIHZhbDYsIHZhbDcsIHZhbDgsIHZh
bDksIHZhbDEwLCB2YWwxMSwgdmFsMTIpCi17Ci0gICAgcmV0dXJuIGFycmF5LnB1c2godmFsMSwg
dmFsMiwgdmFsMywgdmFsNCwgdmFsNSwgdmFsNiwgdmFsNywgdmFsOCwgdmFsOSwgdmFsMTAsIHZh
bDExLCB2YWwxMik7Ci19Ci1ub0lubGluZSh0ZXN0KTsKLQotdmFyIHZhbHVlcyA9IFsgMS4xLCAx
LjIsIDEuMywgMS40LCAxLjUsIDEuNiwgMS43LCAxLjgsIDEuOSwgMi4wLCAyLjEsIDIuMiBdOwot
c2hvdWxkQmUodmFsdWVzLmxlbmd0aCwgMTIpOwotZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsr
aSkgewotICAgIHZhciBhcnJheSA9IFtdOwotICAgIHNob3VsZEJlKHRlc3QoYXJyYXksIHZhbHVl
c1swXSwgdmFsdWVzWzFdLCB2YWx1ZXNbMl0sIHZhbHVlc1szXSwgdmFsdWVzWzRdLCB2YWx1ZXNb
NV0sIHZhbHVlc1s2XSwgdmFsdWVzWzddLCB2YWx1ZXNbOF0sIHZhbHVlc1s5XSwgdmFsdWVzWzEw
XSwgdmFsdWVzWzExXSksIDEyKTsKLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhbHVlcy5sZW5n
dGg7ICsraikKLSAgICAgICAgc2hvdWxkQmUoYXJyYXlbal0sIHZhbHVlc1tqXSk7Ci19CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNoLW11bHRpcGxlLW1hbnktaW50MzIuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNoLW11bHRpcGxlLW1hbnktaW50MzIuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMTE1NzMzOWJiYjQxMzdkMzdiZjhkYTVlNTcwMTJh
M2IyNTRlMzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
SlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1tdWx0aXBsZS1tYW55LWludDMyLmpzCisrKyAvZGV2
L251bGwKQEAgLTEsMjAgKzAsMCBAQAotZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkKLXsKLSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKLSAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwotfQotCi1mdW5jdGlvbiB0ZXN0KGFycmF5LCB2
YWwxLCB2YWwyLCB2YWwzLCB2YWw0LCB2YWw1LCB2YWw2LCB2YWw3LCB2YWw4LCB2YWw5LCB2YWwx
MCwgdmFsMTEsIHZhbDEyKQotewotICAgIHJldHVybiBhcnJheS5wdXNoKHZhbDEsIHZhbDIsIHZh
bDMsIHZhbDQsIHZhbDUsIHZhbDYsIHZhbDcsIHZhbDgsIHZhbDksIHZhbDEwLCB2YWwxMSwgdmFs
MTIpOwotfQotbm9JbmxpbmUodGVzdCk7Ci0KLXZhciB2YWx1ZXMgPSBbIDEsIDIsIDMsIDQsIDUs
IDYsIDcsIDgsIDksIDEwLCAxMSwgMTIgXTsKLXNob3VsZEJlKHZhbHVlcy5sZW5ndGgsIDEyKTsK
LWZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKLSAgICB2YXIgYXJyYXkgPSBbXTsKLSAg
ICBzaG91bGRCZSh0ZXN0KGFycmF5LCB2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgdmFsdWVzWzJdLCB2
YWx1ZXNbM10sIHZhbHVlc1s0XSwgdmFsdWVzWzVdLCB2YWx1ZXNbNl0sIHZhbHVlc1s3XSwgdmFs
dWVzWzhdLCB2YWx1ZXNbOV0sIHZhbHVlc1sxMF0sIHZhbHVlc1sxMV0pLCAxMik7Ci0gICAgZm9y
ICh2YXIgaiA9IDA7IGogPCB2YWx1ZXMubGVuZ3RoOyArK2opCi0gICAgICAgIHNob3VsZEJlKGFy
cmF5W2pdLCB2YWx1ZXNbal0pOwotfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJyYXkt
cHVzaC1tdWx0aXBsZS1tYW55LXN0b3JhZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNo
LW11bHRpcGxlLW1hbnktc3RvcmFnZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
N2EyOTM5ZmYxNzYyNzYzYjc0YWI2OGQ4YTJiODRiMTkxMzJhMjY1Ny4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNo
LW11bHRpcGxlLW1hbnktc3RvcmFnZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAK
LWZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCi17Ci0gICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKLX0KLQotZnVuY3Rpb24gdGVzdChhcnJheSwgdmFsMSwgdmFsMiwgdmFsMywgdmFsNCwg
dmFsNSwgdmFsNiwgdmFsNywgdmFsOCwgdmFsOSwgdmFsMTAsIHZhbDExLCB2YWwxMikKLXsKLSAg
ICByZXR1cm4gYXJyYXkucHVzaCh2YWwxLCB2YWwyLCB2YWwzLCB2YWw0LCB2YWw1LCB2YWw2LCB2
YWw3LCB2YWw4LCB2YWw5LCB2YWwxMCwgdmFsMTEsIHZhbDEyKTsKLX0KLW5vSW5saW5lKHRlc3Qp
OwotCi12YXIgdmFsdWVzID0gWyAiQUIiLCAiQkMiLCAiQ0QiLCAiREUiLCAiRUYiLCAiRkciLCAi
R0giLCAiSEkiLCAiSUoiLCAiSksiLCAiS0wiLCAiTE0iIF07Ci1zaG91bGRCZSh2YWx1ZXMubGVu
Z3RoLCAxMik7Ci1mb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7Ci0gICAgdmFyIGFycmF5
ID0gW107Ci0gICAgZW5zdXJlQXJyYXlTdG9yYWdlKGFycmF5KTsKLSAgICBzaG91bGRCZSh0ZXN0
KGFycmF5LCB2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgdmFsdWVzWzJdLCB2YWx1ZXNbM10sIHZhbHVl
c1s0XSwgdmFsdWVzWzVdLCB2YWx1ZXNbNl0sIHZhbHVlc1s3XSwgdmFsdWVzWzhdLCB2YWx1ZXNb
OV0sIHZhbHVlc1sxMF0sIHZhbHVlc1sxMV0pLCAxMik7Ci0gICAgZm9yICh2YXIgaiA9IDA7IGog
PCB2YWx1ZXMubGVuZ3RoOyArK2opCi0gICAgICAgIHNob3VsZEJlKGFycmF5W2pdLCB2YWx1ZXNb
al0pOwotfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1tdWx0aXBsZS1z
dG9yYWdlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1tdWx0aXBsZS1zdG9yYWdlLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWZlNDQ1MGE0YzRkMDZjNDlmOTkxNjEx
OWY5MjliODI3NzdhYjk0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LXB1c2gtbXVsdGlwbGUtc3RvcmFnZS5qcworKysg
L2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLWZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpCi17Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKLX0KLQotZnVuY3Rpb24gdGVzdChhcnJh
eSwgdmFsMSwgdmFsMiwgdmFsMykKLXsKLSAgICByZXR1cm4gYXJyYXkucHVzaCh2YWwxLCB2YWwy
LCB2YWwzKTsKLX0KLW5vSW5saW5lKHRlc3QpOwotCi1mb3IgKHZhciBpID0gMDsgaSA8IDFlNTsg
KytpKSB7Ci0gICAgdmFyIGFycmF5ID0gW107Ci0gICAgZW5zdXJlQXJyYXlTdG9yYWdlKGFycmF5
KTsKLSAgICBzaG91bGRCZSh0ZXN0KGFycmF5LCAiQ29jb2EiLCAiQ2FwcHVjY2lubyIsICJNYXRj
aGEiKSwgMyk7Ci0gICAgc2hvdWxkQmUoYXJyYXlbMF0sICJDb2NvYSIpOwotICAgIHNob3VsZEJl
KGFycmF5WzFdLCAiQ2FwcHVjY2lubyIpOwotICAgIHNob3VsZEJlKGFycmF5WzJdLCAiTWF0Y2hh
Iik7Ci19Ci1mb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7Ci0gICAgdmFyIGFycmF5ID0g
WzBdOwotICAgIGVuc3VyZUFycmF5U3RvcmFnZShhcnJheSk7Ci0gICAgc2hvdWxkQmUodGVzdChh
cnJheSwgIkNvY29hIiwgIkNhcHB1Y2Npbm8iLCAiTWF0Y2hhIiksIDQpOwotICAgIHNob3VsZEJl
KGFycmF5WzBdLCAwKTsKLSAgICBzaG91bGRCZShhcnJheVsxXSwgIkNvY29hIik7Ci0gICAgc2hv
dWxkQmUoYXJyYXlbMl0sICJDYXBwdWNjaW5vIik7Ci0gICAgc2hvdWxkQmUoYXJyYXlbM10sICJN
YXRjaGEiKTsKLX0K
</data>

          </attachment>
      

    </bug>

</bugzilla>