<?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>191675</bug_id>
          
          <creation_ts>2018-11-14 23:46:30 -0800</creation_ts>
          <short_desc>[JSC] Drop ARM_TRADITIONAL support in LLInt, baseline JIT, and DFG</short_desc>
          <delta_ts>2018-11-21 21:48:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ggaren</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1478787</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-14 23:46:30 -0800</bug_when>
    <thetext>[JSC] Drop ARM_TRADITIONAL support in LLInt, baseline JIT, and DFG</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478789</commentid>
    <comment_count>1</comment_count>
      <attachid>354894</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-14 23:49:35 -0800</bug_when>
    <thetext>Created attachment 354894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478793</commentid>
    <comment_count>2</comment_count>
      <attachid>354897</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-15 00:03:57 -0800</bug_when>
    <thetext>Created attachment 354897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478794</commentid>
    <comment_count>3</comment_count>
      <attachid>354898</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-15 00:26:40 -0800</bug_when>
    <thetext>Created attachment 354898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478795</commentid>
    <comment_count>4</comment_count>
      <attachid>354899</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-15 00:40:52 -0800</bug_when>
    <thetext>Created attachment 354899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478803</commentid>
    <comment_count>5</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-11-15 02:12:18 -0800</bug_when>
    <thetext>Thanks for making the patch!
Should we wait until DFG support for Armv7 is back in the tree to test this properly?
In the meantime, I will test it over the patch in Bug 191548.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479896</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-17 01:52:58 -0800</bug_when>
    <thetext>(In reply to Guillaume Emont from comment #5)
&gt; Thanks for making the patch!
&gt; Should we wait until DFG support for Armv7 is back in the tree to test this
&gt; properly?
&gt; In the meantime, I will test it over the patch in Bug 191548.

I think this can be landed separately since ARM and ARMv7 are different architectures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480609</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-20 15:37:37 -0800</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480876</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-21 18:56:42 -0800</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480889</commentid>
    <comment_count>9</comment_count>
      <attachid>355456</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-21 19:35:12 -0800</bug_when>
    <thetext>Created attachment 355456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480903</commentid>
    <comment_count>10</comment_count>
      <attachid>355456</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-11-21 20:50:23 -0800</bug_when>
    <thetext>Comment on attachment 355456
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480907</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-21 21:47:11 -0800</bug_when>
    <thetext>Committed r238439: &lt;https://trac.webkit.org/changeset/238439&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480908</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-21 21:48:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/46207730&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354894</attachid>
            <date>2018-11-14 23:49:35 -0800</date>
            <delta_ts>2018-11-15 00:03:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191675-20181115164933.patch</filename>
            <type>text/plain</type>
            <size>180360</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODk4MjRlYjViZjc2MjdhOGMxMDEwMjI5N2JiNDM3NmNlMjMwMzhmLi43MzI2MDA3Y2IzZWExMzk5
N2I2NDU5ZjEwMTNkZTFkNjFlZTFjZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxOC0xMS0xNCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIERyb3AgQVJNX1RSQURJVElPTkFMIHN1cHBvcnQg
aW4gTExJbnQsIGJhc2VsaW5lIEpJVCwgYW5kIERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugbm8gbG9uZ2VyIG1haW50YWluIEFSTV9UUkFESVRJ
T05BTCBMTEludCBhbmQgSklUIGluIEpTQy4gVGhpcyBhcmNoaXRlY3R1cmUgd2lsbCB1c2UKKyAg
ICAgICAgQ0xvb3AgaW5zdGVhZC4gVGhpcyBwYXRjaCByZW1vdmVzIEFSTV9UUkFESVRJT05BTCBz
dXBwb3J0IGluIExMSW50IGFuZCBKSVQuCisKKyAgICAgICAgRGlzY3Vzc2VkIGluIGh0dHBzOi8v
bGlzdHMud2Via2l0Lm9yZy9waXBlcm1haWwvd2Via2l0LWRldi8yMDE4LU9jdG9iZXIvMDMwMjIw
Lmh0bWwuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxpbmtDb2RlKToKKyAg
ICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZHVtcENvZGUpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cGF0Y2hhYmxl
QnJhbmNoMzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6IFJlbW92ZWQu
CisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oOgorICAgICAgICAoSlNDOjpQcm9i
ZTo6Q1BVU3RhdGU6OnBjKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpmcCk6Cisg
ICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6c3ApOgorICAgICAgICAqIGFzc2VtYmxlci90
ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OmlzUEMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJv
YmVNb2RpZmllc1N0YWNrUG9pbnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVz
U3RhY2tWYWx1ZXMpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxl
ci5jcHA6CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNzZW1ibGUpOgorICAgICAgICAqIGppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmNwcDoKKyAgICAgICAgKiBqaXQvSklUTWF0aElDLmg6CisgICAg
ICAgIChKU0M6OmlzUHJvZmlsZUVtcHR5KToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3Bw
OgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycyk6
CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKToK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9yY2VJQ0ZhaWx1cmUpOgor
ICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc206CisgICAgICAgICogb2ZmbGluZWFzbS9hcm0ucmI6CisgICAgICAgICog
b2ZmbGluZWFzbS9iYWNrZW5kcy5yYjoKKwogMjAxOC0xMS0xNCAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBzY3JpcHRzIGZvciBEZXJpdmVkIGFuZCBV
bmlmaWVkIFNvdXJjZXMgdG8gZXh0ZXJuYWwgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDExZDlkZWY4YjEzOGI3MTEx
NjAxYWFiZWNhMzU4ZDgxMDEwMmE3Ny4uYzgyZGM0MzNiNmIyOWY5ZDgyZDdlYTM5MDc2MDg4ZThk
NDQ3YjgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMS0xNCAgWXVzdWtlIFN1enVraSAg
PHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIERyb3AgQVJNX1RS
QURJVElPTkFMIHN1cHBvcnQgaW4gTExJbnQsIGJhc2VsaW5lIEpJVCwgYW5kIERGRworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjc1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvSW5saW5lQVNN
Lmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTgtMTEtMTQgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAjZW5kIHZzLiAjZW5kaWYgdHlw
by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhYjg3MjU0MDJlMTBlY2Fm
MTM3YTdhZmQ4MmI5MTlmZWYyODJmOWYxLi4xOWE2NTU3YTM2ZTY4NGJlNzRjNzgxZjA2NTAzZTdh
OTYxM2ZlNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNDAsOCAr
MjQwLDYgQEAgZWxzZSAoKQogICAgICAgICBzZXQoT0ZGTElORV9BU01fQkFDS0VORCAiQVJNNjQi
KQogICAgIGVsc2VpZiAoQVJNX1RIVU1CMl9ERVRFQ1RFRCkKICAgICAgICAgc2V0KE9GRkxJTkVf
QVNNX0JBQ0tFTkQgIkFSTXY3IikKLSAgICBlbHNlaWYgKEFSTV9UUkFESVRJT05BTF9ERVRFQ1RF
RCkKLSAgICAgICAgc2V0KE9GRkxJTkVfQVNNX0JBQ0tFTkQgIkFSTXY3X1RSQURJVElPTkFMIikK
ICAgICBlbHNlaWYgKFdURl9DUFVfTUlQUykKICAgICAgICAgc2V0KE9GRkxJTkVfQVNNX0JBQ0tF
TkQgIk1JUFMiKQogICAgIGVuZGlmICgpCkBAIC00MzYsNyArNDM0LDYgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBhc3NlbWJsZXIvTGlua0J1ZmZl
ci5oCiAgICAgYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAogICAgIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCi0gICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKICAgICBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaAogICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBlZTQ1NzExZWU4ZWI3MzE2NDhlMjdhZWU3NzBhYjg5YTcxZGYz
NjZkLi45YzBlOGRiN2U5Yjk3YTdiZGU0OGIyYWQ5ZTNlYjQzMjMwZTQzMjQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIxMiw3ICsxMjEyLDYgQEAKIAkJODZEMjIyMUExNjdF
Rjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkQyMjIxOTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSAq
LzsgfTsKIAkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQzAxMDE1NkJE
RTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2RDNCMkM1MTAxNTZCREUwMDI4NjVFNyAvKiBBc3NlbWJs
ZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMTEwMTU2QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVm
ZmVyV2l0aENvbnN0YW50UG9vbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTg2RDNCMkM2MTAxNTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fzc2VtYmxl
ckFSTS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZE
M0IyQzIxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZEM0IzQzMxMDE1OUQ3RjAw
Mjg2NUU3IC8qIExpbmtCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2RDNCM0MxMTAxNTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZFMTE2QjEw
RkU3NUFDODAwQjUxMkJDIC8qIENvZGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFMTE2QjAwRkU3NUFDODAwQjUxMkJDIC8qIENvZGVM
b2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2RTNDNjEyMTY3QkFCRDcwMDZENzYwQSAvKiBKU1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUzQzYwNjE2N0JBQjg3MDA2RDc2MEEg
LyogSlNWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKQEAgLTM4NzAsNyArMzg2OSw2IEBACiAJCTg2QjU4MjZBMTREMzVENTEwMEE5QzMwNiAvKiBU
aWVyZWRNTWFwQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGllcmVk
TU1hcEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QkY2NDJBMTQ4REIy
QjUwMDRERTM2QSAvKiBJbnRyaW5zaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50cmluc2ljLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzM2RUU5MEVF
MTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyog
TWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
Y3JvQXNzZW1ibGVyTUlQUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkM1NjhE
RjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNSVBTQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2Q0M4NUEwMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTM4ODEsNyArMzg3OSw2IEBACiAJCTg2RDNCMkJGMTAxNTZCREUwMDI4NjVFNyAv
KiBBUk1Bc3NlbWJsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QVJNQXNzZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZEM0IyQzAx
MDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBUk1Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODZEM0IyQzExMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBv
b2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZW1ibGVyQnVmZmVyV2l0
aENvbnN0YW50UG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NkQzQjJDMjEw
MTU2QkRFMDAyODY1RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODZEM0IzQzExMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua0J1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVMb2NhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NkUzQzYwNjE2N0JBQjg3MDA2RDc2MEEgLyogSlNWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjM0LDggKzc2MzEsNiBAQAogCQkJCTg2RDNCM0MxMTAx
NTlEN0YwMDI4NjVFNyAvKiBMaW5rQnVmZmVyLmggKi8sCiAJCQkJMEZFQjNFQ0UxNjIzN0Y2NzAw
QUI2N0FEIC8qIE1hY3JvQXNzZW1ibGVyLmNwcCAqLywKIAkJCQk4NkMzNkVFOTBFRTEyODlEMDBC
M0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLywKLQkJCQk4NkM1NjhERDExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovLAotCQkJCTg2RDNCMkMyMTAxNTZCREUwMDI4
NjVFNyAvKiBNYWNyb0Fzc2VtYmxlckFSTS5oICovLAogCQkJCUZFQjEzNzU2MUJCMTFFRUUwMENE
NTEwMCAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmNwcCAqLywKIAkJCQk4NjQwOTIzQzE1NkVFRDNC
MDA1NjZDQjIgLyogTWFjcm9Bc3NlbWJsZXJBUk02NC5oICovLAogCQkJCUE3MjkwMDlCMTc5NzZD
NjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCAqLywKQEAgLTkzNTcsNyArOTM1
Miw2IEBACiAJCQkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNEI3MjNCODEyRDdEQTZGMDAzQkQ1RUQgLyogTWFjaGluZVN0
YWNrTWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkg
LyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTg2RDNCMkM2MTAxNTZCREUw
MDI4NjVFNyAvKiBNYWNyb0Fzc2VtYmxlckFSTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5
QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NjNCMjNFMDBGQzYxMTg5MDA3MDNBQTQgLyogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCAxYWQ5OWYwZTZlNzRiNzc5MzBhNDZjYzA1OTI2MGZkMjI3OWI3YWQ1Li5jYmE0YzRiYTYw
MDRmOTMwZDVjYTg1NjMzMTBhNjI0M2UzNjQ0OWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CkBAIC00MSwxMSArNDEsOSBAQCBBUEkvSlNXZWFrUHJpdmF0ZS5jcHAKIEFQSS9KU1dlYWtW
YWx1ZS5jcHAKIEFQSS9PcGFxdWVKU1N0cmluZy5jcHAKIAotYXNzZW1ibGVyL0FSTUFzc2VtYmxl
ci5jcHAKIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAogYXNzZW1ibGVyL0xp
bmtCdWZmZXIuY3BwCiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCi1hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwCiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAKIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmNwcAogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNQXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNz
ZW1ibGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTUyZjM3ZjY4MDk0NjA3
ZDAwZmQyMmNmMzM2YTQwOWJhYzcwYTJmNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2Vt
Ymxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFVOSVZFUlNJVFkg
T0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVU5JVkVSU0lUWSBP
RiBTWkVHRUQgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBD
UFUoQVJNX1RSQURJVElPTkFMKQotCi0jaW5jbHVkZSAiQVJNQXNzZW1ibGVyLmgiCi0KLW5hbWVz
cGFjZSBKU0MgewotCi0vLyBQYXRjaGluZyBoZWxwZXJzCi0KLXZvaWQgQVJNQXNzZW1ibGVyOjpw
YXRjaENvbnN0YW50UG9vbExvYWQodm9pZCogbG9hZEFkZHIsIHZvaWQqIGNvbnN0UG9vbEFkZHIp
Ci17Ci0gICAgQVJNV29yZCAqbGRyID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4obG9hZEFk
ZHIpOwotICAgIEFSTVdvcmQgZGlmZiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGNvbnN0
UG9vbEFkZHIpIC0gbGRyOwotICAgIEFSTVdvcmQgaW5kZXggPSAoKmxkciAmIDB4ZmZmKSA+PiAx
OwotCi0gICAgQVNTRVJUKGRpZmYgPj0gMSk7Ci0gICAgaWYgKGRpZmYgPj0gMiB8fCBpbmRleCA+
IDApIHsKLSAgICAgICAgZGlmZiA9IChkaWZmICsgaW5kZXggLSAyKSAqIHNpemVvZihBUk1Xb3Jk
KTsKLSAgICAgICAgQVNTRVJUKGRpZmYgPD0gMHhmZmYpOwotICAgICAgICAqbGRyID0gKCpsZHIg
JiB+MHhmZmYpIHwgZGlmZjsKLSAgICB9IGVsc2UKLSAgICAgICAgKmxkciA9ICgqbGRyICYgfigw
eGZmZiB8IEFSTUFzc2VtYmxlcjo6RGF0YVRyYW5zZmVyVXApKSB8IHNpemVvZihBUk1Xb3JkKTsK
LX0KLQotLy8gSGFuZGxlIGltbWVkaWF0ZXMKLQotQVJNV29yZCBBUk1Bc3NlbWJsZXI6OmdldE9w
MihBUk1Xb3JkIGltbSkKLXsKLSAgICBpbnQgcm9sOwotCi0gICAgaWYgKGltbSA8PSAweGZmKQot
ICAgICAgICByZXR1cm4gT3AySW1tZWRpYXRlIHwgaW1tOwotCi0gICAgaWYgKChpbW0gJiAweGZm
MDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgIGltbSA8PD0gODsKLSAgICAgICAgcm9sID0gODsKLSAg
ICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGltbSA9IChpbW0gPDwgMjQpIHwgKGltbSA+PiA4KTsK
LSAgICAgICAgcm9sID0gMDsKLSAgICB9Ci0KLSAgICBpZiAoKGltbSAmIDB4ZmYwMDAwMDApID09
IDApIHsKLSAgICAgICAgaW1tIDw8PSA4OwotICAgICAgICByb2wgKz0gNDsKLSAgICB9Ci0KLSAg
ICBpZiAoKGltbSAmIDB4ZjAwMDAwMDApID09IDApIHsKLSAgICAgICAgaW1tIDw8PSA0OwotICAg
ICAgICByb2wgKz0gMjsKLSAgICB9Ci0KLSAgICBpZiAoKGltbSAmIDB4YzAwMDAwMDApID09IDAp
IHsKLSAgICAgICAgaW1tIDw8PSAyOwotICAgICAgICByb2wgKz0gMTsKLSAgICB9Ci0KLSAgICBp
ZiAoKGltbSAmIDB4MDBmZmZmZmYpID09IDApCi0gICAgICAgIHJldHVybiBPcDJJbW1lZGlhdGUg
fCAoaW1tID4+IDI0KSB8IChyb2wgPDwgOCk7Ci0KLSAgICByZXR1cm4gSW52YWxpZEltbWVkaWF0
ZTsKLX0KLQotaW50IEFSTUFzc2VtYmxlcjo6Z2VuSW50KGludCByZWcsIEFSTVdvcmQgaW1tLCBi
b29sIHBvc2l0aXZlKQotewotICAgIC8vIFN0ZXAxOiBTZWFyY2ggYSBub24taW1tZWRpYXRlIHBh
cnQKLSAgICBBUk1Xb3JkIG1hc2s7Ci0gICAgQVJNV29yZCBpbW0xOwotICAgIEFSTVdvcmQgaW1t
MjsKLSAgICBpbnQgcm9sOwotCi0gICAgbWFzayA9IDB4ZmYwMDAwMDA7Ci0gICAgcm9sID0gODsK
LSAgICB3aGlsZSgxKSB7Ci0gICAgICAgIGlmICgoaW1tICYgbWFzaykgPT0gMCkgewotICAgICAg
ICAgICAgaW1tID0gKGltbSA8PCByb2wpIHwgKGltbSA+PiAoMzIgLSByb2wpKTsKLSAgICAgICAg
ICAgIHJvbCA9IDQgKyAocm9sID4+IDEpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgcm9sICs9IDI7Ci0gICAgICAgIG1hc2sgPj49IDI7Ci0gICAgICAgIGlmIChtYXNr
ICYgMHgzKSB7Ci0gICAgICAgICAgICAvLyByb2wgOAotICAgICAgICAgICAgaW1tID0gKGltbSA8
PCA4KSB8IChpbW0gPj4gMjQpOwotICAgICAgICAgICAgbWFzayA9IDB4ZmYwMDsKLSAgICAgICAg
ICAgIHJvbCA9IDI0OwotICAgICAgICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoKGltbSAmIG1hc2spID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgaW1tID0gKGltbSA8
PCByb2wpIHwgKGltbSA+PiAoMzIgLSByb2wpKTsKLSAgICAgICAgICAgICAgICAgICAgcm9sID0g
KHJvbCA+PiAxKSAtIDg7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICByb2wgKz0gMjsKLSAgICAgICAgICAgICAgICBtYXNrID4+
PSAyOwotICAgICAgICAgICAgICAgIGlmIChtYXNrICYgMHgzKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgQVNTRVJUKChpbW0gJiAweGZmKSA9PSAwKTsKLQotICAgIGlmICgoaW1t
ICYgMHhmZjAwMDAwMCkgPT0gMCkgewotICAgICAgICBpbW0xID0gT3AySW1tZWRpYXRlIHwgKChp
bW0gPj4gMTYpICYgMHhmZikgfCAoKChyb2wgKyA0KSAmIDB4ZikgPDwgOCk7Ci0gICAgICAgIGlt
bTIgPSBPcDJJbW1lZGlhdGUgfCAoKGltbSA+PiA4KSAmIDB4ZmYpIHwgKCgocm9sICsgOCkgJiAw
eGYpIDw8IDgpOwotICAgIH0gZWxzZSBpZiAoaW1tICYgMHhjMDAwMDAwMCkgewotICAgICAgICBp
bW0xID0gT3AySW1tZWRpYXRlIHwgKChpbW0gPj4gMjQpICYgMHhmZikgfCAoKHJvbCAmIDB4Zikg
PDwgOCk7Ci0gICAgICAgIGltbSA8PD0gODsKLSAgICAgICAgcm9sICs9IDQ7Ci0KLSAgICAgICAg
aWYgKChpbW0gJiAweGZmMDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgICAgICBpbW0gPDw9IDg7Ci0g
ICAgICAgICAgICByb2wgKz0gNDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgoaW1tICYgMHhm
MDAwMDAwMCkgPT0gMCkgewotICAgICAgICAgICAgaW1tIDw8PSA0OwotICAgICAgICAgICAgcm9s
ICs9IDI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoKGltbSAmIDB4YzAwMDAwMDApID09IDAp
IHsKLSAgICAgICAgICAgIGltbSA8PD0gMjsKLSAgICAgICAgICAgIHJvbCArPSAxOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKChpbW0gJiAweDAwZmZmZmZmKSA9PSAwKQotICAgICAgICAgICAg
aW1tMiA9IE9wMkltbWVkaWF0ZSB8IChpbW0gPj4gMjQpIHwgKChyb2wgJiAweGYpIDw8IDgpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAoKGltbSAmIDB4ZjAwMDAwMDApID09IDApIHsKLSAgICAgICAgICAgIGltbSA8PD0gNDsK
LSAgICAgICAgICAgIHJvbCArPSAyOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChpbW0gJiAw
eGMwMDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgICAgICBpbW0gPDw9IDI7Ci0gICAgICAgICAgICBy
b2wgKz0gMTsKLSAgICAgICAgfQotCi0gICAgICAgIGltbTEgPSBPcDJJbW1lZGlhdGUgfCAoKGlt
bSA+PiAyNCkgJiAweGZmKSB8ICgocm9sICYgMHhmKSA8PCA4KTsKLSAgICAgICAgaW1tIDw8PSA4
OwotICAgICAgICByb2wgKz0gNDsKLQotICAgICAgICBpZiAoKGltbSAmIDB4ZjAwMDAwMDApID09
IDApIHsKLSAgICAgICAgICAgIGltbSA8PD0gNDsKLSAgICAgICAgICAgIHJvbCArPSAyOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKChpbW0gJiAweGMwMDAwMDAwKSA9PSAwKSB7Ci0gICAgICAg
ICAgICBpbW0gPDw9IDI7Ci0gICAgICAgICAgICByb2wgKz0gMTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmICgoaW1tICYgMHgwMGZmZmZmZikgPT0gMCkKLSAgICAgICAgICAgIGltbTIgPSBPcDJJ
bW1lZGlhdGUgfCAoaW1tID4+IDI0KSB8ICgocm9sICYgMHhmKSA8PCA4KTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKHBvc2l0aXZlKSB7Ci0g
ICAgICAgIG1vdihyZWcsIGltbTEpOwotICAgICAgICBvcnIocmVnLCByZWcsIGltbTIpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIG12bihyZWcsIGltbTEpOwotICAgICAgICBiaWMocmVnLCByZWcs
IGltbTIpOwotICAgIH0KLQotICAgIHJldHVybiAxOwotfQotCi1BUk1Xb3JkIEFSTUFzc2VtYmxl
cjo6Z2V0SW1tKEFSTVdvcmQgaW1tLCBpbnQgdG1wUmVnLCBib29sIGludmVydCkKLXsKLSAgICBB
Uk1Xb3JkIHRtcDsKLQotICAgIC8vIERvIGl0IGJ5IDEgaW5zdHJ1Y3Rpb24KLSAgICB0bXAgPSBn
ZXRPcDIoaW1tKTsKLSAgICBpZiAodG1wICE9IEludmFsaWRJbW1lZGlhdGUpCi0gICAgICAgIHJl
dHVybiB0bXA7Ci0KLSAgICB0bXAgPSBnZXRPcDIofmltbSk7Ci0gICAgaWYgKHRtcCAhPSBJbnZh
bGlkSW1tZWRpYXRlKSB7Ci0gICAgICAgIGlmIChpbnZlcnQpCi0gICAgICAgICAgICByZXR1cm4g
dG1wIHwgT3AySW52ZXJ0ZWRJbW1lZGlhdGU7Ci0gICAgICAgIG12bih0bXBSZWcsIHRtcCk7Ci0g
ICAgICAgIHJldHVybiB0bXBSZWc7Ci0gICAgfQotCi0gICAgcmV0dXJuIGVuY29kZUNvbXBsZXhJ
bW0oaW1tLCB0bXBSZWcpOwotfQotCi12b2lkIEFSTUFzc2VtYmxlcjo6bW92ZUltbShBUk1Xb3Jk
IGltbSwgaW50IGRlc3QpCi17Ci0gICAgQVJNV29yZCB0bXA7Ci0KLSAgICAvLyBEbyBpdCBieSAx
IGluc3RydWN0aW9uCi0gICAgdG1wID0gZ2V0T3AyKGltbSk7Ci0gICAgaWYgKHRtcCAhPSBJbnZh
bGlkSW1tZWRpYXRlKSB7Ci0gICAgICAgIG1vdihkZXN0LCB0bXApOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgdG1wID0gZ2V0T3AyKH5pbW0pOwotICAgIGlmICh0bXAgIT0gSW52YWxp
ZEltbWVkaWF0ZSkgewotICAgICAgICBtdm4oZGVzdCwgdG1wKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGVuY29kZUNvbXBsZXhJbW0oaW1tLCBkZXN0KTsKLX0KLQotQVJNV29yZCBB
Uk1Bc3NlbWJsZXI6OmVuY29kZUNvbXBsZXhJbW0oQVJNV29yZCBpbW0sIGludCBkZXN0KQotewot
I2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQotICAgIEFSTVdvcmQgdG1wID0gZ2V0SW1tMTZP
cDIoaW1tKTsKLSAgICBpZiAodG1wICE9IEludmFsaWRJbW1lZGlhdGUpIHsKLSAgICAgICAgbW92
dyhkZXN0LCB0bXApOwotICAgICAgICByZXR1cm4gZGVzdDsKLSAgICB9Ci0gICAgbW92dyhkZXN0
LCBnZXRJbW0xNk9wMihpbW0gJiAweGZmZmYpKTsKLSAgICBtb3Z0KGRlc3QsIGdldEltbTE2T3Ay
KGltbSA+PiAxNikpOwotICAgIHJldHVybiBkZXN0OwotI2Vsc2UKLSAgICAvLyBEbyBpdCBieSAy
IGluc3RydWN0aW9uCi0gICAgaWYgKGdlbkludChkZXN0LCBpbW0sIHRydWUpKQotICAgICAgICBy
ZXR1cm4gZGVzdDsKLSAgICBpZiAoZ2VuSW50KGRlc3QsIH5pbW0sIGZhbHNlKSkKLSAgICAgICAg
cmV0dXJuIGRlc3Q7Ci0KLSAgICBsZHJJbW1lZGlhdGUoZGVzdCwgaW1tKTsKLSAgICByZXR1cm4g
ZGVzdDsKLSNlbmRpZgotfQotCi0vLyBNZW1vcnkgbG9hZC9zdG9yZSBoZWxwZXJzCi0KLXZvaWQg
QVJNQXNzZW1ibGVyOjpkYXRhVHJhbnNmZXIzMihEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5
cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KQot
ewotICAgIGlmIChvZmZzZXQgPj0gMCkgewotICAgICAgICBpZiAob2Zmc2V0IDw9IDB4ZmZmKQot
ICAgICAgICAgICAgZHRyVXAodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIG9mZnNldCk7Ci0g
ICAgICAgIGVsc2UgaWYgKG9mZnNldCA8PSAweGZmZmZmKSB7Ci0gICAgICAgICAgICBhZGQoQVJN
UmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+PiAxMikgfCAoMTAg
PDwgOCkpOwotICAgICAgICAgICAgZHRyVXAodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lz
dGVyczo6UzAsIChvZmZzZXQgJiAweGZmZikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAgICAgZHRyVXBS
ZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAob2Zmc2V0ID49IC0weGZmZikKLSAg
ICAgICAgICAgIGR0ckRvd24odHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIC1vZmZzZXQpOwot
ICAgICAgICBlbHNlIGlmIChvZmZzZXQgPj0gLTB4ZmZmZmYpIHsKLSAgICAgICAgICAgIHN1YihB
Uk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAoLW9mZnNldCA+PiAxMikgfCAo
MTAgPDwgOCkpOwotICAgICAgICAgICAgZHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJN
UmVnaXN0ZXJzOjpTMCwgKC1vZmZzZXQgJiAweGZmZikpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAgICAg
ZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpT
MCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhU
cmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwgUmVnaXN0ZXJJRCBzcmNE
c3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90
IG9mZnNldCkKLXsKLSAgICBBU1NFUlQoc2NhbGUgPj0gMCAmJiBzY2FsZSA8PSAzKTsKLSAgICBB
Uk1Xb3JkIG9wMiA9IGxzbChpbmRleCwgc2NhbGUpOwotCi0gICAgaWYgKCFvZmZzZXQpIHsKLSAg
ICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgb3AyKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChvZmZzZXQgPD0gMHhmZmZmZiAmJiBvZmZz
ZXQgPj0gLTB4ZmZmZmYpIHsKLSAgICAgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIG9w
Mik7Ci0gICAgICAgIGRhdGFUcmFuc2ZlcjMyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdp
c3RlcnM6OlMwLCBvZmZzZXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbW92ZUlt
bShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIGFkZChBUk1SZWdpc3RlcnM6OlMwLCBB
Uk1SZWdpc3RlcnM6OlMwLCBvcDIpOwotICAgIGR0clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBlLCBz
cmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwotfQotCi12b2lkIEFSTUFzc2VtYmxlcjo6
ZGF0YVRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBSZWdpc3RlcklE
IHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCkKLXsKLSAgICBpZiAob2Zm
c2V0ID49IDApIHsKLSAgICAgICAgaWYgKG9mZnNldCA8PSAweGZmKQotICAgICAgICAgICAgaGFs
ZkR0clVwKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBnZXRPcDJIYWxmKG9mZnNldCkpOwot
ICAgICAgICBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZmKSB7Ci0gICAgICAgICAgICBhZGQoQVJN
UmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+PiA4KSB8ICgxMiA8
PCA4KSk7Ci0gICAgICAgICAgICBoYWxmRHRyVXAodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJl
Z2lzdGVyczo6UzAsIGdldE9wMkhhbGYob2Zmc2V0ICYgMHhmZikpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAg
ICAgICAgaGFsZkR0clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJl
Z2lzdGVyczo6UzApOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG9mZnNl
dCA+PSAtMHhmZikKLSAgICAgICAgICAgIGhhbGZEdHJEb3duKHRyYW5zZmVyVHlwZSwgc3JjRHN0
LCBiYXNlLCBnZXRPcDJIYWxmKC1vZmZzZXQpKTsKLSAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID49
IC0weGZmZmYpIHsKLSAgICAgICAgICAgIHN1YihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJ
bW1lZGlhdGUgfCAoLW9mZnNldCA+PiA4KSB8ICgxMiA8PCA4KSk7Ci0gICAgICAgICAgICBoYWxm
RHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFs
Zigtb2Zmc2V0ICYgMHhmZikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZUlt
bShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAgICAgaGFsZkR0clVwUmVnaXN0
ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi12b2lkIEFSTUFzc2VtYmxlcjo6YmFzZUluZGV4VHJhbnNmZXIxNihE
YXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50MzJfdCBvZmZzZXQpCi17
Ci0gICAgaWYgKCFzY2FsZSAmJiAhb2Zmc2V0KSB7Ci0gICAgICAgIGhhbGZEdHJVcFJlZ2lzdGVy
KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBpbmRleCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBUk1Xb3JkIG9wMiA9IGxzbChpbmRleCwgc2NhbGUpOwotCi0gICAgaWYgKG9m
ZnNldCA8PSAweGZmZmYgJiYgb2Zmc2V0ID49IC0weGZmZmYpIHsKLSAgICAgICAgYWRkKEFSTVJl
Z2lzdGVyczo6UzAsIGJhc2UsIG9wMik7Ci0gICAgICAgIGRhdGFUcmFuc2ZlcjE2KHRyYW5zZmVy
VHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCBvZmZzZXQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIGFk
ZChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBvcDIpOwotICAgIGhhbGZEdHJV
cFJlZ2lzdGVyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsK
LX0KLQotdm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5
cGVGbG9hdCB0cmFuc2ZlclR5cGUsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFz
ZSwgaW50MzJfdCBvZmZzZXQpCi17Ci0gICAgLy8gVkZQIGNhbm5vdCBkaXJlY3RseSBhY2Nlc3Mg
bWVtb3J5IHRoYXQgaXMgbm90IGZvdXItYnl0ZS1hbGlnbmVkCi0gICAgaWYgKCEob2Zmc2V0ICYg
MHgzKSkgewotICAgICAgICBpZiAob2Zmc2V0IDw9IDB4M2ZmICYmIG9mZnNldCA+PSAwKSB7Ci0g
ICAgICAgICAgICBkb3VibGVEdHJVcCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0
ID4+IDIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChvZmZz
ZXQgPD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0gMCkgewotICAgICAgICAgICAgYWRkKEFSTVJlZ2lz
dGVyczo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8IChvZmZzZXQgPj4gMTApIHwgKDExIDw8IDgp
KTsKLSAgICAgICAgICAgIGRvdWJsZUR0clVwKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdp
c3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhmZik7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKLQotICAgICAgICBpZiAob2Zmc2V0
IDw9IDB4M2ZmICYmIG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBkb3VibGVEdHJEb3duKHRy
YW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBvZmZzZXQgPj4gMik7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG9mZnNldCA8PSAweDNmZmZmICYmIG9mZnNldCA+
PSAwKSB7Ci0gICAgICAgICAgICBzdWIoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRp
YXRlIHwgKG9mZnNldCA+PiAxMCkgfCAoMTEgPDwgOCkpOwotICAgICAgICAgICAgZG91YmxlRHRy
RG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNldCA+PiAy
KSAmIDB4ZmYpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG9mZnNl
dCA9IC1vZmZzZXQ7Ci0gICAgfQotCi0gICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6
UzApOwotICAgIGFkZChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBiYXNlKTsK
LSAgICBkb3VibGVEdHJVcCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwg
MCk7Ci19Ci0KLXZvaWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlckZsb2F0KERhdGFU
cmFuc2ZlclR5cGVGbG9hdCB0cmFuc2ZlclR5cGUsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkK
LXsKLSAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMSwgYmFzZSwgbHNsKGluZGV4LCBzY2FsZSkpOwot
ICAgIGRhdGFUcmFuc2ZlckZsb2F0KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6
OlMxLCBvZmZzZXQpOwotfQotCi12b2lkIEFSTUFzc2VtYmxlcjo6cHJlcGFyZUV4ZWN1dGFibGVD
b3B5KHZvaWQqIHRvKQotewotICAgIC8vIDY0LWJpdCBhbGlnbm1lbnQgaXMgcmVxdWlyZWQgZm9y
IG5leHQgY29uc3RhbnQgcG9vbCBhbmQgSklUIGNvZGUgYXMgd2VsbAotICAgIG1fYnVmZmVyLmZs
dXNoV2l0aG91dEJhcnJpZXIodHJ1ZSk7Ci0KLSAgICBjaGFyKiBkYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4obV9idWZmZXIuZGF0YSgpKTsKLSAgICBwdHJkaWZmX3QgZGVsdGEgPSByZWlu
dGVycHJldF9jYXN0PGNoYXIqPih0bykgLSBkYXRhOwotCi0gICAgZm9yIChKdW1wczo6SXRlcmF0
b3IgaXRlciA9IG1fanVtcHMuYmVnaW4oKTsgaXRlciAhPSBtX2p1bXBzLmVuZCgpOyArK2l0ZXIp
IHsKLSAgICAgICAgLy8gVGhlIGxhc3QgYml0IGlzIHNldCBpZiB0aGUgY29uc3RhbnQgbXVzdCBi
ZSBwbGFjZWQgb24gY29uc3RhbnQgcG9vbC4KLSAgICAgICAgaW50IHBvcyA9IChpdGVyLT5tX29m
ZnNldCkgJiAofjB4MSk7Ci0gICAgICAgIEFSTVdvcmQqIGxkckFkZHIgPSByZWludGVycHJldF9j
YXN0X3B0cjxBUk1Xb3JkKj4oZGF0YSArIHBvcyk7Ci0gICAgICAgIEFSTVdvcmQqIGFkZHIgPSBn
ZXRMZHJJbW1BZGRyZXNzKGxkckFkZHIpOwotICAgICAgICBpZiAoKmFkZHIgIT0gSW52YWxpZEJy
YW5jaFRhcmdldCkgewotICAgICAgICAgICAgaWYgKCEoaXRlci0+bV9vZmZzZXQgJiAxKSkgewot
ICAgICAgICAgICAgICAgIGludHB0cl90IGRpZmZlcmVuY2UgPSByZWludGVycHJldF9jYXN0X3B0
cjxBUk1Xb3JkKj4oZGF0YSArICphZGRyKSAtIChsZHJBZGRyICsgRGVmYXVsdFByZWZldGNoT2Zm
c2V0KTsKLQotICAgICAgICAgICAgICAgIGlmICgoZGlmZmVyZW5jZSA8PSBNYXhpbXVtQnJhbmNo
T2Zmc2V0RGlzdGFuY2UgJiYgZGlmZmVyZW5jZSA+PSBNaW5pbXVtQnJhbmNoT2Zmc2V0RGlzdGFu
Y2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgICpsZHJBZGRyID0gQiB8IGdldENvbmRpdGlvbmFs
RmllbGQoKmxkckFkZHIpIHwgKGRpZmZlcmVuY2UgJiBCcmFuY2hPZmZzZXRNYXNrKTsKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgKmFkZHIgPSByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGRhdGEgKyBk
ZWx0YSArICphZGRyKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwYjZkY2IyNDFjYTM1MWQ3ZjFkMGEzZTQ4M2M1ZDIw
ZDlmZGM4N2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEyNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBV
bml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KLSAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFVOSVZFUlNJVFkgT0YgU1pFR0VEIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
QVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQotCi0jaW5jbHVkZSAiQXNzZW1ibGVy
QnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIgotI2luY2x1ZGUgIkpJVENvbXBpbGF0aW9uRWZmb3J0
LmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLW5hbWVzcGFjZSBKU0MgewotCi0gICAg
dHlwZWRlZiB1aW50MzJfdCBBUk1Xb3JkOwotCi0gICAgbmFtZXNwYWNlIEFSTVJlZ2lzdGVycyB7
Ci0KLSAgICAgICAgdHlwZWRlZiBlbnVtIDogaW50OF90IHsKLSAgICAgICAgICAgIHIwLAotICAg
ICAgICAgICAgcjEsCi0gICAgICAgICAgICByMiwKLSAgICAgICAgICAgIHIzLAotICAgICAgICAg
ICAgcjQsCi0gICAgICAgICAgICByNSwKLSAgICAgICAgICAgIHI2LAotICAgICAgICAgICAgcjcs
Ci0gICAgICAgICAgICByOCwKLSAgICAgICAgICAgIHI5LAotICAgICAgICAgICAgcjEwLAotICAg
ICAgICAgICAgZnAsCi0gICAgICAgICAgICBpcCwKLSAgICAgICAgICAgIHNwLAotICAgICAgICAg
ICAgbHIsCi0gICAgICAgICAgICBwYywKLQotICAgICAgICAgICAgLy8gUHNldWRvbnltcyBmb3Ig
c29tZSBvZiB0aGUgcmVnaXN0ZXJzLgotICAgICAgICAgICAgUzAgPSByNiwKLSAgICAgICAgICAg
IHIxMSA9IGZwLCAvLyBmcmFtZSBwb2ludGVyCi0gICAgICAgICAgICByMTIgPSBpcCwgUzEgPSBp
cCwKLSAgICAgICAgICAgIHIxMyA9IHNwLAotICAgICAgICAgICAgcjE0ID0gbHIsCi0gICAgICAg
ICAgICByMTUgPSBwYywKLSAgICAgICAgICAgIEludmFsaWRHUFJSZWcgPSAtMSwKLSAgICAgICAg
fSBSZWdpc3RlcklEOwotCi0gICAgICAgIHR5cGVkZWYgZW51bSA6IGludDhfdCB7Ci0gICAgICAg
ICAgICBhcHNyLAotICAgICAgICAgICAgZnBzY3IKLSAgICAgICAgfSBTUFJlZ2lzdGVySUQ7Ci0K
LSAgICAgICAgdHlwZWRlZiBlbnVtIDogaW50OF90IHsKLSAgICAgICAgICAgIGQwLAotICAgICAg
ICAgICAgZDEsCi0gICAgICAgICAgICBkMiwKLSAgICAgICAgICAgIGQzLAotICAgICAgICAgICAg
ZDQsCi0gICAgICAgICAgICBkNSwKLSAgICAgICAgICAgIGQ2LAotICAgICAgICAgICAgZDcsCi0g
ICAgICAgICAgICBkOCwKLSAgICAgICAgICAgIGQ5LAotICAgICAgICAgICAgZDEwLAotICAgICAg
ICAgICAgZDExLAotICAgICAgICAgICAgZDEyLAotICAgICAgICAgICAgZDEzLAotICAgICAgICAg
ICAgZDE0LAotICAgICAgICAgICAgZDE1LAotI2lmIENQVShBUk1fTkVPTikgfHwgQ1BVKEFSTV9W
RlBfVjNfRDMyKQotICAgICAgICAgICAgZDE2LAotICAgICAgICAgICAgZDE3LAotICAgICAgICAg
ICAgZDE4LAotICAgICAgICAgICAgZDE5LAotICAgICAgICAgICAgZDIwLAotICAgICAgICAgICAg
ZDIxLAotICAgICAgICAgICAgZDIyLAotICAgICAgICAgICAgZDIzLAotICAgICAgICAgICAgZDI0
LAotICAgICAgICAgICAgZDI1LAotICAgICAgICAgICAgZDI2LAotICAgICAgICAgICAgZDI3LAot
ICAgICAgICAgICAgZDI4LAotICAgICAgICAgICAgZDI5LAotICAgICAgICAgICAgZDMwLAotICAg
ICAgICAgICAgZDMxLAotI2VuZGlmIC8vIENQVShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNf
RDMyKQotICAgICAgICAgICAgSW52YWxpZEZQUlJlZyA9IC0xLAotICAgICAgICB9IEZQUmVnaXN0
ZXJJRDsKLQotICAgIH0gLy8gbmFtZXNwYWNlIEFSTVJlZ2lzdGVycwotCi0gICAgY2xhc3MgQVJN
QXNzZW1ibGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgQVJNUmVnaXN0ZXJzOjpS
ZWdpc3RlcklEIFJlZ2lzdGVySUQ7Ci0gICAgICAgIHR5cGVkZWYgQVJNUmVnaXN0ZXJzOjpTUFJl
Z2lzdGVySUQgU1BSZWdpc3RlcklEOwotICAgICAgICB0eXBlZGVmIEFSTVJlZ2lzdGVyczo6RlBS
ZWdpc3RlcklEIEZQUmVnaXN0ZXJJRDsKLSAgICAgICAgdHlwZWRlZiBBc3NlbWJsZXJCdWZmZXJX
aXRoQ29uc3RhbnRQb29sPDIwNDgsIDQsIDQsIEFSTUFzc2VtYmxlcj4gQVJNQnVmZmVyOwotICAg
ICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3RvcjxBc3NlbWJsZXJMYWJlbCwgNjQ+IEp1bXBzOwot
Ci0gICAgICAgIEFSTUFzc2VtYmxlcigpCi0gICAgICAgICAgICA6IG1faW5kZXhPZlRhaWxPZkxh
c3RXYXRjaHBvaW50KDEpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIEFSTUJ1ZmZl
ciYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLQotICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIFJlZ2lzdGVySUQgZmlyc3RSZWdpc3RlcigpIHsgcmV0dXJuIEFSTVJlZ2lzdGVyczo6cjA7
IH0KLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxhc3RSZWdpc3RlcigpIHsg
cmV0dXJuIEFSTVJlZ2lzdGVyczo6cjE1OyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMoKSB7IHJldHVybiBsYXN0UmVnaXN0ZXIoKSAtIGZpcnN0
UmVnaXN0ZXIoKSArIDE7IH0KLQotICAgICAgICBzdGF0aWMgY29uc3RleHByIFNQUmVnaXN0ZXJJ
RCBmaXJzdFNQUmVnaXN0ZXIoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OmFwc3I7IH0KLSAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBTUFJlZ2lzdGVySUQgbGFzdFNQUmVnaXN0ZXIoKSB7IHJldHVy
biBBUk1SZWdpc3RlcnM6OmZwc2NyOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbnVtYmVyT2ZTUFJlZ2lzdGVycygpIHsgcmV0dXJuIGxhc3RTUFJlZ2lzdGVyKCkgLSBmaXJz
dFNQUmVnaXN0ZXIoKSArIDE7IH0KLQotICAgICAgICBzdGF0aWMgY29uc3RleHByIEZQUmVnaXN0
ZXJJRCBmaXJzdEZQUmVnaXN0ZXIoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OmQwOyB9Ci0jaWYg
Q1BVKEFSTV9ORU9OKSB8fCBDUFUoQVJNX1ZGUF9WM19EMzIpCi0gICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgRlBSZWdpc3RlcklEIGxhc3RGUFJlZ2lzdGVyKCkgeyByZXR1cm4gQVJNUmVnaXN0ZXJz
OjpkMzE7IH0KLSNlbHNlCi0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRlBSZWdpc3RlcklEIGxh
c3RGUFJlZ2lzdGVyKCkgeyByZXR1cm4gQVJNUmVnaXN0ZXJzOjpkMTU7IH0KLSNlbmRpZgotICAg
ICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mRlBSZWdpc3RlcnMoKSB7IHJl
dHVybiBsYXN0RlBSZWdpc3RlcigpIC0gZmlyc3RGUFJlZ2lzdGVyKCkgKyAxOyB9Ci0KLSAgICAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGdwck5hbWUoUmVnaXN0ZXJJRCBpZCkKLSAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKGlkID49IGZpcnN0UmVnaXN0ZXIoKSAmJiBpZCA8PSBsYXN0UmVn
aXN0ZXIoKSk7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgbmFtZUZvclJl
Z2lzdGVyW251bWJlck9mUmVnaXN0ZXJzKCldID0gewotICAgICAgICAgICAgICAgICJyMCIsICJy
MSIsICJyMiIsICJyMyIsCi0gICAgICAgICAgICAgICAgInI0IiwgInI1IiwgInI2IiwgInI3IiwK
LSAgICAgICAgICAgICAgICAicjgiLCAicjkiLCAicjEwIiwgImZwIiwKLSAgICAgICAgICAgICAg
ICAiaXAiLCAic3AiLCAibHIiLCAicGMiCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgcmV0
dXJuIG5hbWVGb3JSZWdpc3RlcltpZF07Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29u
c3QgY2hhciogc3ByTmFtZShTUFJlZ2lzdGVySUQgaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVChpZCA+PSBmaXJzdFNQUmVnaXN0ZXIoKSAmJiBpZCA8PSBsYXN0U1BSZWdpc3Rlcigp
KTsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBuYW1lRm9yUmVnaXN0ZXJb
bnVtYmVyT2ZTUFJlZ2lzdGVycygpXSA9IHsKLSAgICAgICAgICAgICAgICAiYXBzciIsICJmcHNj
ciIKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW2lk
XTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVn
aXN0ZXJJRCBpZCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGlkID49IGZpcnN0RlBS
ZWdpc3RlcigpICYmIGlkIDw9IGxhc3RGUFJlZ2lzdGVyKCkpOwotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IG5hbWVGb3JSZWdpc3RlcltudW1iZXJPZkZQUmVnaXN0ZXJzKCld
ID0gewotICAgICAgICAgICAgICAgICJkMCIsICJkMSIsICJkMiIsICJkMyIsCi0gICAgICAgICAg
ICAgICAgImQ0IiwgImQ1IiwgImQ2IiwgImQ3IiwKLSAgICAgICAgICAgICAgICAiZDgiLCAiZDki
LCAiZDEwIiwgImQxMSIsCi0gICAgICAgICAgICAgICAgImQxMiIsICJkMTMiLCAiZDE0IiwgImQx
NSIsCi0jaWYgQ1BVKEFSTV9ORU9OKSB8fCBDUFUoQVJNX1ZGUF9WM19EMzIpCi0gICAgICAgICAg
ICAgICAgImQxNiIsICJkMTciLCAiZDE4IiwgImQxOSIsCi0gICAgICAgICAgICAgICAgImQyMCIs
ICJkMjEiLCAiZDIyIiwgImQyMyIsCi0gICAgICAgICAgICAgICAgImQyNCIsICJkMjUiLCAiZDI2
IiwgImQyNyIsCi0gICAgICAgICAgICAgICAgImQyOCIsICJkMjkiLCAiZDMwIiwgImQzMSIKLSNl
bmRpZiAvLyBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikKLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW2lkXTsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIEFSTSBjb25kaXRpb25hbCBjb25zdGFudHMKLSAgICAgICAgdHlwZWRlZiBl
bnVtIHsKLSAgICAgICAgICAgIEVRID0gMHgwMDAwMDAwMCwgLy8gWmVybyAvIEVxdWFsLgotICAg
ICAgICAgICAgTkUgPSAweDEwMDAwMDAwLCAvLyBOb24temVybyAvIE5vdCBlcXVhbC4KLSAgICAg
ICAgICAgIENTID0gMHgyMDAwMDAwMCwgLy8gVW5zaWduZWQgaGlnaGVyIG9yIHNhbWUuCi0gICAg
ICAgICAgICBDQyA9IDB4MzAwMDAwMDAsIC8vIFVuc2lnbmVkIGxvd2VyLgotICAgICAgICAgICAg
TUkgPSAweDQwMDAwMDAwLCAvLyBOZWdhdGl2ZS4KLSAgICAgICAgICAgIFBMID0gMHg1MDAwMDAw
MCwgLy8gUG9zaXRpdmUgb3IgemVyby4KLSAgICAgICAgICAgIFZTID0gMHg2MDAwMDAwMCwgLy8g
T3ZlcmZsb3dlZC4KLSAgICAgICAgICAgIFZDID0gMHg3MDAwMDAwMCwgLy8gTm90IG92ZXJmbG93
ZWQuCi0gICAgICAgICAgICBISSA9IDB4ODAwMDAwMDAsIC8vIFVuc2lnbmVkIGhpZ2hlci4KLSAg
ICAgICAgICAgIExTID0gMHg5MDAwMDAwMCwgLy8gVW5zaWduZWQgbG93ZXIgb3Igc2FtZS4KLSAg
ICAgICAgICAgIEdFID0gMHhhMDAwMDAwMCwgLy8gU2lnbmVkIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bC4KLSAgICAgICAgICAgIExUID0gMHhiMDAwMDAwMCwgLy8gU2lnbmVkIGxlc3MgdGhhbi4KLSAg
ICAgICAgICAgIEdUID0gMHhjMDAwMDAwMCwgLy8gU2lnbmVkIGdyZWF0ZXIgdGhhbi4KLSAgICAg
ICAgICAgIExFID0gMHhkMDAwMDAwMCwgLy8gU2lnbmVkIGxlc3MgdGhhbiBvciBlcXVhbC4KLSAg
ICAgICAgICAgIEFMID0gMHhlMDAwMDAwMCAgLy8gVW5jb25kaXRpb25hbCAvIEFsd2F5cyBleGVj
dXRlLgotICAgICAgICB9IENvbmRpdGlvbjsKLQotICAgICAgICAvLyBBUk0gaW5zdHJ1Y3Rpb24g
Y29uc3RhbnRzCi0gICAgICAgIGVudW0gewotICAgICAgICAgICAgQU5EID0gKDB4MCA8PCAyMSks
Ci0gICAgICAgICAgICBFT1IgPSAoMHgxIDw8IDIxKSwKLSAgICAgICAgICAgIFNVQiA9ICgweDIg
PDwgMjEpLAotICAgICAgICAgICAgUlNCID0gKDB4MyA8PCAyMSksCi0gICAgICAgICAgICBBREQg
PSAoMHg0IDw8IDIxKSwKLSAgICAgICAgICAgIEFEQyA9ICgweDUgPDwgMjEpLAotICAgICAgICAg
ICAgU0JDID0gKDB4NiA8PCAyMSksCi0gICAgICAgICAgICBSU0MgPSAoMHg3IDw8IDIxKSwKLSAg
ICAgICAgICAgIFRTVCA9ICgweDggPDwgMjEpLAotICAgICAgICAgICAgVEVRID0gKDB4OSA8PCAy
MSksCi0gICAgICAgICAgICBDTVAgPSAoMHhhIDw8IDIxKSwKLSAgICAgICAgICAgIENNTiA9ICgw
eGIgPDwgMjEpLAotICAgICAgICAgICAgT1JSID0gKDB4YyA8PCAyMSksCi0gICAgICAgICAgICBN
T1YgPSAoMHhkIDw8IDIxKSwKLSAgICAgICAgICAgIEJJQyA9ICgweGUgPDwgMjEpLAotICAgICAg
ICAgICAgTVZOID0gKDB4ZiA8PCAyMSksCi0gICAgICAgICAgICBNVUwgPSAweDAwMDAwMDkwLAot
ICAgICAgICAgICAgTVVMTCA9IDB4MDBjMDAwOTAsCi0gICAgICAgICAgICBWTU9WX0Y2NCA9IDB4
MGViMDBiNDAsCi0gICAgICAgICAgICBWQUREX0Y2NCA9IDB4MGUzMDBiMDAsCi0gICAgICAgICAg
ICBWRElWX0Y2NCA9IDB4MGU4MDBiMDAsCi0gICAgICAgICAgICBWU1VCX0Y2NCA9IDB4MGUzMDBi
NDAsCi0gICAgICAgICAgICBWTVVMX0Y2NCA9IDB4MGUyMDBiMDAsCi0gICAgICAgICAgICBWQ01Q
X0Y2NCA9IDB4MGViNDBiNDAsCi0gICAgICAgICAgICBWU1FSVF9GNjQgPSAweDBlYjEwYmMwLAot
ICAgICAgICAgICAgVkFCU19GNjQgPSAweDBlYjAwYmMwLAotICAgICAgICAgICAgVk5FR19GNjQg
PSAweDBlYjEwYjQwLAotICAgICAgICAgICAgU1RNREIgPSAweDA5MjAwMDAwLAotICAgICAgICAg
ICAgTERNSUEgPSAweDA4YjAwMDAwLAotICAgICAgICAgICAgQiA9IDB4MGEwMDAwMDAsCi0gICAg
ICAgICAgICBCTCA9IDB4MGIwMDAwMDAsCi0gICAgICAgICAgICBCWCA9IDB4MDEyZmZmMTAsCi0g
ICAgICAgICAgICBWTU9WX1ZGUDY0ID0gMHgwYzQwMGExMCwKLSAgICAgICAgICAgIFZNT1ZfQVJN
NjQgPSAweDBjNTAwYTEwLAotICAgICAgICAgICAgVk1PVl9WRlAzMiA9IDB4MGUwMDBhMTAsCi0g
ICAgICAgICAgICBWTU9WX0FSTTMyID0gMHgwZTEwMGExMCwKLSAgICAgICAgICAgIFZDVlRfRjY0
X1MzMiA9IDB4MGViODBiYzAsCi0gICAgICAgICAgICBWQ1ZUX1MzMl9GNjQgPSAweDBlYmQwYmMw
LAotICAgICAgICAgICAgVkNWVF9VMzJfRjY0ID0gMHgwZWJjMGJjMCwKLSAgICAgICAgICAgIFZD
VlRfRjMyX0Y2NCA9IDB4MGViNzBiYzAsCi0gICAgICAgICAgICBWQ1ZUX0Y2NF9GMzIgPSAweDBl
YjcwYWMwLAotICAgICAgICAgICAgVk1SU19BUFNSID0gMHgwZWYxZmExMCwKLSAgICAgICAgICAg
IENMWiA9IDB4MDE2ZjBmMTAsCi0gICAgICAgICAgICBCS1BUID0gMHhlMTIwMDA3MCwKLSAgICAg
ICAgICAgIEJMWCA9IDB4MDEyZmZmMzAsCi0jaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDcpCi0g
ICAgICAgICAgICBNT1ZXID0gMHgwMzAwMDAwMCwKLSAgICAgICAgICAgIE1PVlQgPSAweDAzNDAw
MDAwLAotI2VuZGlmCi0gICAgICAgICAgICBOT1AgPSAweGUxYTAwMDAwLAotICAgICAgICAgICAg
RE1CX1NZID0gMHhmNTdmZjA1ZiwKLSAgICAgICAgICAgIERNQl9JU0hTVCA9IDB4ZjU3ZmYwNWEs
Ci0jaWYgSEFWRShBUk1fSURJVl9JTlNUUlVDVElPTlMpCi0gICAgICAgICAgICBTRElWID0gMHgw
NzEwZjAxMCwKLSAgICAgICAgICAgIFVESVYgPSAweDA3MzBmMDEwLAotI2VuZGlmCi0gICAgICAg
IH07Ci0KLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBPcDJJbW1lZGlhdGUgPSAoMSA8PCAy
NSksCi0gICAgICAgICAgICBJbW1lZGlhdGVGb3JIYWxmV29yZFRyYW5zZmVyID0gKDEgPDwgMjIp
LAotICAgICAgICAgICAgT3AySW52ZXJ0ZWRJbW1lZGlhdGUgPSAoMSA8PCAyNiksCi0gICAgICAg
ICAgICBTZXRDb25kaXRpb25hbENvZGVzID0gKDEgPDwgMjApLAotICAgICAgICAgICAgT3AySXNS
ZWdpc3RlckFyZ3VtZW50ID0gKDEgPDwgMjUpLAotICAgICAgICAgICAgLy8gRGF0YSB0cmFuc2Zl
ciBmbGFncy4KLSAgICAgICAgICAgIERhdGFUcmFuc2ZlclVwID0gKDEgPDwgMjMpLAotICAgICAg
ICAgICAgRGF0YVRyYW5zZmVyV3JpdGVCYWNrID0gKDEgPDwgMjEpLAotICAgICAgICAgICAgRGF0
YVRyYW5zZmVyUG9zdFVwZGF0ZSA9ICgxIDw8IDI0KSwKLSAgICAgICAgICAgIERhdGFUcmFuc2Zl
ckxvYWQgPSAoMSA8PCAyMCksCi0gICAgICAgICAgICBCeXRlRGF0YVRyYW5zZmVyID0gKDEgPDwg
MjIpLAotICAgICAgICB9OwotCi0gICAgICAgIGVudW0gRGF0YVRyYW5zZmVyVHlwZUEgewotICAg
ICAgICAgICAgTG9hZFVpbnQzMiA9IDB4MDUwMDAwMDAgfCBEYXRhVHJhbnNmZXJMb2FkLAotICAg
ICAgICAgICAgTG9hZFVpbnQ4ID0gMHgwNTQwMDAwMCB8IERhdGFUcmFuc2ZlckxvYWQsCi0gICAg
ICAgICAgICBTdG9yZVVpbnQzMiA9IDB4MDUwMDAwMDAsCi0gICAgICAgICAgICBTdG9yZVVpbnQ4
ID0gMHgwNTQwMDAwMCwKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIERhdGFUcmFuc2ZlclR5
cGVCIHsKLSAgICAgICAgICAgIExvYWRVaW50MTYgPSAweDAxMDAwMGIwIHwgRGF0YVRyYW5zZmVy
TG9hZCwKLSAgICAgICAgICAgIExvYWRJbnQxNiA9IDB4MDEwMDAwZjAgfCBEYXRhVHJhbnNmZXJM
b2FkLAotICAgICAgICAgICAgTG9hZEludDggPSAweDAxMDAwMGQwIHwgRGF0YVRyYW5zZmVyTG9h
ZCwKLSAgICAgICAgICAgIFN0b3JlVWludDE2ID0gMHgwMTAwMDBiMCwKLSAgICAgICAgfTsKLQot
ICAgICAgICBlbnVtIERhdGFUcmFuc2ZlclR5cGVGbG9hdCB7Ci0gICAgICAgICAgICBMb2FkRmxv
YXQgPSAweDBkMDAwYTAwIHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAgICAgICAgICAgIExvYWREb3Vi
bGUgPSAweDBkMDAwYjAwIHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAgICAgICAgICAgIFN0b3JlRmxv
YXQgPSAweDBkMDAwYTAwLAotICAgICAgICAgICAgU3RvcmVEb3VibGUgPSAweDBkMDAwYjAwLAot
ICAgICAgICB9OwotCi0gICAgICAgIC8vIE1hc2tzIG9mIEFSTSBpbnN0cnVjdGlvbnMKLSAgICAg
ICAgZW51bSB7Ci0gICAgICAgICAgICBCcmFuY2hPZmZzZXRNYXNrID0gMHgwMGZmZmZmZiwKLSAg
ICAgICAgICAgIENvbmRpdGlvbmFsRmllbGRNYXNrID0gMHhmMDAwMDAwMCwKLSAgICAgICAgICAg
IERhdGFUcmFuc2Zlck9mZnNldE1hc2sgPSAweGZmZiwKLSAgICAgICAgfTsKLQotICAgICAgICBl
bnVtIHsKLSAgICAgICAgICAgIE1pbmltdW1CcmFuY2hPZmZzZXREaXN0YW5jZSA9IC0weDAwODAw
MDAwLAotICAgICAgICAgICAgTWF4aW11bUJyYW5jaE9mZnNldERpc3RhbmNlID0gMHgwMDdmZmZm
ZiwKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIHBhZEZvckFsaWdu
OCAgPSAweDAwLAotICAgICAgICAgICAgcGFkRm9yQWxpZ24xNiA9IDB4MDAwMCwKLSAgICAgICAg
ICAgIHBhZEZvckFsaWduMzIgPSAweGUxMmZmZjdmIC8vICdia3B0IDB4ZmZmZicgaW5zdHJ1Y3Rp
b24uCi0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgSW52YWxpZElt
bWVkaWF0ZSA9IDB4ZjAwMDAwMDA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBBUk1Xb3JkIEludmFs
aWRCcmFuY2hUYXJnZXQgPSAweGZmZmZmZmZmOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IERl
ZmF1bHRQcmVmZXRjaE9mZnNldCA9IDI7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQg
Qmx4SW5zdHJ1Y3Rpb25NYXNrID0gMHgwMTJmZmYzMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IEFS
TVdvcmQgTGRyT3JBZGRJbnN0cnVjdGlvbk1hc2sgPSAweDBmZjAwMDAwOwotICAgICAgICBzdGF0
aWMgY29uc3QgQVJNV29yZCBMZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9uTWFzayA9IDB4MGY3ZjAw
MDA7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgQWRkSW1tZWRpYXRlSW5zdHJ1Y3Rp
b24gPSAweDAyODAwMDAwOwotICAgICAgICBzdGF0aWMgY29uc3QgQVJNV29yZCBCbHhJbnN0cnVj
dGlvbiA9IDB4MDEyZmZmMzA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBBUk1Xb3JkIExkckltbWVk
aWF0ZUluc3RydWN0aW9uID0gMHgwNTkwMDAwMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdv
cmQgTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbiA9IDB4MDUxZjAwMDA7Ci0KLSAgICAgICAgLy8g
SW5zdHJ1Y3Rpb24gZm9ybWF0aW5nCi0KLSAgICAgICAgdm9pZCBlbWl0SW5zdHJ1Y3Rpb24oQVJN
V29yZCBvcCwgaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQoKChvcDIgJiB+T3AySW1tZWRpYXRlKSA8PSAweGZmZikgfHwgKCgob3AyICYg
fkltbWVkaWF0ZUZvckhhbGZXb3JkVHJhbnNmZXIpIDw9IDB4ZmZmKSkpOwotICAgICAgICAgICAg
bV9idWZmZXIucHV0SW50KG9wIHwgUk4ocm4pIHwgUkQocmQpIHwgb3AyKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZvaWQgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKEFSTVdvcmQgb3As
IGludCBkZCwgaW50IGRuLCBpbnQgZG0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCgo
ZGQgPj0gMCAmJiBkZCA8PSAzMSkgJiYgKGRuID49IDAgJiYgZG4gPD0gMzEpICYmIChkbSA+PSAw
ICYmIGRtIDw9IDMxKSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQob3AgfCAoKGRkICYg
MHhmKSA8PCAxMikgfCAoKGRkICYgMHgxMCkgPDwgKDIyIC0gNCkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAoKGRuICYgMHhmKSA8PCAxNikgfCAoKGRuICYgMHgxMCkgPDwgKDcg
LSA0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChkbSAmIDB4ZikgfCAoKGRt
ICYgMHgxMCkgPDwgKDUgLSA0KSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBlbWl0U2lu
Z2xlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24oQVJNV29yZCBvcCwgaW50IHNkLCBpbnQgc24sIGludCBz
bSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKChzZCA+PSAwICYmIHNkIDw9IDMxKSAm
JiAoc24gPj0gMCAmJiBzbiA8PSAzMSkgJiYgKHNtID49IDAgJiYgc20gPD0gMzEpKTsKLSAgICAg
ICAgICAgIG1fYnVmZmVyLnB1dEludChvcCB8ICgoc2QgPj4gMSkgPDwgMTIpIHwgKChzZCAmIDB4
MSkgPDwgMjIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNuID4+IDEpIDw8
IDE2KSB8ICgoc24gJiAweDEpIDw8IDcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAoc20gPj4gMSkgfCAoKHNtICYgMHgxKSA8PCA1KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIGJpdEFuZChpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFM
KQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8
IEFORCwgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBiaXRBbmRzKGlu
dCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQU5EIHwgU2V0Q29u
ZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBl
b3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBFT1IsIHJk
LCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZW9ycyhpbnQgcmQsIGludCBy
biwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEVPUiB8IFNldENvbmRpdGlvbmFsQ29k
ZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgc3ViKGludCByZCwg
aW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgU1VCLCByZCwgcm4sIG9wMik7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHN1YnMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQg
b3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3Ry
dWN0aW9uKHRvQVJNV29yZChjYykgfCBTVUIgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4s
IG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHJzYihpbnQgcmQsIGludCBybiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0
SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFJTQiwgcmQsIHJuLCBvcDIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCByc2JzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0
aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FS
TVdvcmQoY2MpIHwgUlNCIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdm9pZCBhZGQoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBD
b25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9u
KHRvQVJNV29yZChjYykgfCBBREQsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgYWRkcyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFM
KQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8
IEFERCB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZvaWQgYWRjKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNj
ID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQo
Y2MpIHwgQURDLCByZCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGFkY3Mo
aW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBBREMgfCBTZXRD
b25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lk
IHNiYyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFNCQywg
cmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBzYmNzKGludCByZCwgaW50
IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgU0JDIHwgU2V0Q29uZGl0aW9uYWxD
b2RlcywgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCByc2MoaW50IHJk
LCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBSU0MsIHJkLCBybiwgb3Ay
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcnNjcyhpbnQgcmQsIGludCBybiwgQVJNV29y
ZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5z
dHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFJTQyB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBy
biwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdHN0KGludCBybiwgQVJNV29yZCBv
cDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFRTVCB8IFNldENvbmRpdGlvbmFsQ29kZXMsIDAsIHJuLCBv
cDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB0ZXEoaW50IHJuLCBBUk1Xb3JkIG9wMiwg
Q29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlv
bih0b0FSTVdvcmQoY2MpIHwgVEVRIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgMCwgcm4sIG9wMik7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNtcChpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25k
aXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRv
QVJNV29yZChjYykgfCBDTVAgfCBTZXRDb25kaXRpb25hbENvZGVzLCAwLCBybiwgb3AyKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZvaWQgY21uKGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlv
biBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1X
b3JkKGNjKSB8IENNTiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIDAsIHJuLCBvcDIpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdm9pZCBvcnIoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25k
aXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRv
QVJNV29yZChjYykgfCBPUlIsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgb3JycyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE9S
UiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgbW92KGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1PViwg
cmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7Ci0gICAgICAgIH0KLQotI2lmIFdURl9BUk1fQVJD
SF9BVF9MRUFTVCg3KQotICAgICAgICB2b2lkIG1vdncoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29u
ZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCgob3AyIHwgMHhm
MGZmZikgPT0gMHhmMGZmZik7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3Jk
KGNjKSB8IE1PVlcgfCBSRChyZCkgfCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBt
b3Z0KGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBBU1NFUlQoKG9wMiB8IDB4ZjBmZmYpID09IDB4ZjBmZmYpOwotICAgICAgICAg
ICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBNT1ZUIHwgUkQocmQpIHwgb3AyKTsK
LSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgdm9pZCBtb3ZzKGludCByZCwgQVJNV29yZCBv
cDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1PViB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBBUk1S
ZWdpc3RlcnM6OnIwLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBiaWMoaW50IHJk
LCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBCSUMsIHJkLCBybiwgb3Ay
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYmljcyhpbnQgcmQsIGludCBybiwgQVJNV29y
ZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5z
dHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEJJQyB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBy
biwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbXZuKGludCByZCwgQVJNV29yZCBv
cDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1WTiwgcmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2b2lkIG12bnMoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0
aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FS
TVdvcmQoY2MpIHwgTVZOIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIEFSTVJlZ2lzdGVyczo6
cjAsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG11bChpbnQgcmQsIGludCBybiwg
aW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZm
ZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBNVUwgfCBSTihyZCkgfCBSUyhybikgfCBSTShybSkp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtdWxzKGludCByZCwgaW50IHJuLCBpbnQgcm0s
IENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJ
bnQodG9BUk1Xb3JkKGNjKSB8IE1VTCB8IFNldENvbmRpdGlvbmFsQ29kZXMgfCBSTihyZCkgfCBS
UyhybikgfCBSTShybSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtdWxsKGludCByZGhp
LCBpbnQgcmRsbywgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7
Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IE1VTEwgfCBSTihy
ZGhpKSB8IFJEKHJkbG8pIHwgUlMocm4pIHwgUk0ocm0pKTsKLSAgICAgICAgfQotCi0jaWYgSEFW
RShBUk1fSURJVl9JTlNUUlVDVElPTlMpCi0gICAgICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4K
LSAgICAgICAgdm9pZCBzZGl2KGludCByZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9
IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KGRhdGFzaXplID09IDMy
LCAic2RpdiBkYXRhc2l6ZSBtdXN0IGJlIDMyIGZvciBhcm12N3MiKTsKLSAgICAgICAgICAgIEFT
U0VSVChyZCAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVChybiAhPSBB
Uk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVChybSAhPSBBUk1SZWdpc3RlcnM6
OnBjKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgU0RJViB8
IFJOKHJkKSB8IFJNKHJuKSB8IFJTKHJtKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHVk
aXYoaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVChyZCAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAg
IEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVChybSAh
PSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdv
cmQoY2MpIHwgVURJViB8IFJOKHJkKSB8IFJNKHJuKSB8IFJTKHJtKSk7Ci0gICAgICAgIH0KLSNl
bmRpZgotCi0gICAgICAgIHZvaWQgdm1vdl9mNjQoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBj
YyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZNT1ZfRjY0LCBkZCwgMCwgZG0pOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCB2YWRkX2Y2NChpbnQgZGQsIGludCBkbiwgaW50IGRtLCBDb25kaXRpb24g
Y2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3Ry
dWN0aW9uKHRvQVJNV29yZChjYykgfCBWQUREX0Y2NCwgZGQsIGRuLCBkbSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIHZkaXZfZjY0KGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlv
biBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5z
dHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZESVZfRjY0LCBkZCwgZG4sIGRtKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHZvaWQgdnN1Yl9mNjQoaW50IGRkLCBpbnQgZG4sIGludCBkbSwgQ29uZGl0
aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25J
bnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVlNVQl9GNjQsIGRkLCBkbiwgZG0pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdm9pZCB2bXVsX2Y2NChpbnQgZGQsIGludCBkbiwgaW50IGRtLCBDb25k
aXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lv
bkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWTVVMX0Y2NCwgZGQsIGRuLCBkbSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2b2lkIHZjbXBfZjY0KGludCBkZCwgaW50IGRtLCBDb25kaXRpb24g
Y2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3Ry
dWN0aW9uKHRvQVJNV29yZChjYykgfCBWQ01QX0Y2NCwgZGQsIDAsIGRtKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZvaWQgdnNxcnRfZjY0KGludCBkZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBB
TCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9u
KHRvQVJNV29yZChjYykgfCBWU1FSVF9GNjQsIGRkLCAwLCBkbSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB2b2lkIHZhYnNfZjY0KGludCBkZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJN
V29yZChjYykgfCBWQUJTX0Y2NCwgZGQsIDAsIGRtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgdm5lZ19mNjQoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7
Ci0gICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNj
KSB8IFZORUdfRjY0LCBkZCwgMCwgZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBsZHJJ
bW1lZGlhdGUoaW50IHJkLCBBUk1Xb3JkIGltbSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludFdpdGhDb25zdGFudEludCh0b0FSTVdvcmQo
Y2MpIHwgTG9hZFVpbnQzMiB8IERhdGFUcmFuc2ZlclVwIHwgUk4oQVJNUmVnaXN0ZXJzOjpwYykg
fCBSRChyZCksIGltbSwgdHJ1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGxkclVuaXF1
ZUltbWVkaWF0ZShpbnQgcmQsIEFSTVdvcmQgaW1tLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAg
ICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50V2l0aENvbnN0YW50SW50KHRvQVJNV29y
ZChjYykgfCBMb2FkVWludDMyIHwgRGF0YVRyYW5zZmVyVXAgfCBSTihBUk1SZWdpc3RlcnM6OnBj
KSB8IFJEKHJkKSwgaW1tKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZHRyVXAoRGF0YVRy
YW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENv
bmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24o
dG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSB8IERhdGFUcmFuc2ZlclVwLCByZCwgcmIsIG9w
Mik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGR0clVwUmVnaXN0ZXIoRGF0YVRyYW5zZmVy
VHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBDb25kaXRpb24gY2Mg
PSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChj
YykgfCB0cmFuc2ZlclR5cGUgfCBEYXRhVHJhbnNmZXJVcCB8IE9wMklzUmVnaXN0ZXJBcmd1bWVu
dCwgcmQsIHJiLCBybSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGR0ckRvd24oRGF0YVRy
YW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENv
bmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24o
dG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSwgcmQsIHJiLCBvcDIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCBkdHJEb3duUmVnaXN0ZXIoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJU
eXBlLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5
cGUgfCBPcDJJc1JlZ2lzdGVyQXJndW1lbnQsIHJkLCByYiwgcm0pOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdm9pZCBoYWxmRHRyVXAoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQg
cmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSB8
IERhdGFUcmFuc2ZlclVwLCByZCwgcmIsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lk
IGhhbGZEdHJVcFJlZ2lzdGVyKERhdGFUcmFuc2ZlclR5cGVCIHRyYW5zZmVyVHlwZSwgaW50IHJk
LCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJhbnNmZXJUeXBlIHwgRGF0YVRy
YW5zZmVyVXAsIHJkLCBybiwgcm0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBoYWxmRHRy
RG93bihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJiLCBBUk1X
b3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJ
bnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJhbnNmZXJUeXBlLCByZCwgcmIsIG9wMik7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2b2lkIGhhbGZEdHJEb3duUmVnaXN0ZXIoRGF0YVRyYW5zZmVy
VHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRpb24gY2Mg
PSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChj
YykgfCB0cmFuc2ZlclR5cGUsIHJkLCBybiwgcm0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9p
ZCBkb3VibGVEdHJVcChEYXRhVHJhbnNmZXJUeXBlRmxvYXQgdHlwZSwgaW50IHJkLCBpbnQgcmIs
IEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAg
QVNTRVJUKG9wMiA8PSAweGZmICYmIHJkIDw9IDE1KTsKLSAgICAgICAgICAgIC8qIE9ubHkgZDAt
ZDE1IGFuZCBzMCwgczIsIHM0IC4uLiBzMzAgYXJlIHN1cHBvcnRlZC4gKi8KLSAgICAgICAgICAg
IG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgRGF0YVRyYW5zZmVyVXAgfCB0eXBlIHwg
KHJkIDw8IDEyKSB8IFJOKHJiKSB8IG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRv
dWJsZUR0ckRvd24oRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHR5cGUsIGludCByZCwgaW50IHJiLCBB
Uk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVChvcDIgPD0gMHhmZiAmJiByZCA8PSAxNSk7Ci0gICAgICAgICAgICAvKiBPbmx5IGQwLWQx
NSBhbmQgczAsIHMyLCBzNCAuLi4gczMwIGFyZSBzdXBwb3J0ZWQuICovCi0gICAgICAgICAgICBt
X2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IHR5cGUgfCAocmQgPDwgMTIpIHwgUk4ocmIp
IHwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcHVzaChpbnQgcmVnLCBDb25kaXRp
b24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8
PSAweGYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBTdG9y
ZVVpbnQzMiB8IERhdGFUcmFuc2ZlcldyaXRlQmFjayB8IFJOKEFSTVJlZ2lzdGVyczo6c3ApIHwg
UkQocmVnKSB8IDB4NCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHBvcChpbnQgcmVnLCBD
b25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKEFSTVdvcmQo
cmVnKSA8PSAweGYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykg
fCAoTG9hZFVpbnQzMiBeIERhdGFUcmFuc2ZlclBvc3RVcGRhdGUpIHwgRGF0YVRyYW5zZmVyVXAg
fCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJEKHJlZykgfCAweDQpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaW5saW5lIHZvaWQgcG9rZShpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZHRyRG93bihTdG9yZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpzcCwg
MCwgcmVnLCBjYyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbmxpbmUgdm9pZCBwZWVrKGludCBy
ZWcsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBkdHJVcChMb2Fk
VWludDMyLCByZWcsIEFSTVJlZ2lzdGVyczo6c3AsIDAsIGNjKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgdm1vdl92ZnA2NChpbnQgc20sIGludCBydCwgaW50IHJ0MiwgQ29uZGl0aW9uIGNj
ID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChydCAhPSBydDIpOwotICAgICAg
ICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBWTU9WX1ZGUDY0IHwgUk4ocnQy
KSB8IFJEKHJ0KSB8IChzbSAmIDB4ZikgfCAoKHNtICYgMHgxMCkgPDwgKDUgLSA0KSkpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bW92X2FybTY0KGludCBydCwgaW50IHJ0MiwgaW50IHNt
LCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHJ0ICE9
IHJ0Mik7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IFZNT1Zf
QVJNNjQgfCBSTihydDIpIHwgUkQocnQpIHwgKHNtICYgMHhmKSB8ICgoc20gJiAweDEwKSA8PCAo
NSAtIDQpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZtb3ZfdmZwMzIoaW50IHNuLCBp
bnQgcnQsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQo
cnQgPD0gMTUpOwotICAgICAgICAgICAgZW1pdFNpbmdsZVByZWNpc2lvbkluc3RydWN0aW9uKHRv
QVJNV29yZChjYykgfCBWTU9WX1ZGUDMyLCBydCA8PCAxLCBzbiwgMCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIHZtb3ZfYXJtMzIoaW50IHJ0LCBpbnQgc24sIENvbmRpdGlvbiBjYyA9IEFM
KQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocnQgPD0gMTUpOwotICAgICAgICAgICAg
ZW1pdFNpbmdsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWTU9WX0FSTTMy
LCBydCA8PCAxLCBzbiwgMCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZjdnRfZjY0X3Mz
MihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFTU0VSVCghKHNtICYgMHgxKSk7IC8vIHNtIG11c3QgYmUgZGl2aXNpYmxlIGJ5IDIKLSAg
ICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwg
VkNWVF9GNjRfUzMyLCBkZCwgMCwgKHNtID4+IDEpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgdmN2dF9zMzJfZjY0KGludCBzZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKCEoc2QgJiAweDEpKTsgLy8gc2QgbXVzdCBiZSBkaXZp
c2libGUgYnkgMgotICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRv
QVJNV29yZChjYykgfCBWQ1ZUX1MzMl9GNjQsIChzZCA+PiAxKSwgMCwgZG0pOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCB2Y3Z0X3UzMl9mNjQoaW50IHNkLCBpbnQgZG0sIENvbmRpdGlvbiBj
YyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIShzZCAmIDB4MSkpOyAvLyBz
ZCBtdXN0IGJlIGRpdmlzaWJsZSBieSAyCi0gICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9u
SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZDVlRfVTMyX0Y2NCwgKHNkID4+IDEpLCAwLCBk
bSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZjdnRfZjY0X2YzMihpbnQgZGQsIGludCBz
bSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChkZCA8
PSAxNSAmJiBzbSA8PSAxNSk7Ci0gICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZDVlRfRjY0X0YzMiwgZGQsIDAsIHNtKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHZvaWQgdmN2dF9mMzJfZjY0KGludCBkZCwgaW50IHNtLCBDb25kaXRpb24g
Y2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGRkIDw9IDE1ICYmIHNtIDw9
IDE1KTsKLSAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdv
cmQoY2MpIHwgVkNWVF9GMzJfRjY0LCBkZCwgMCwgc20pOwotICAgICAgICB9Ci0KLSAgICAgICAg
dm9pZCB2bXJzX2Fwc3IoQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgVk1SU19BUFNSKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZvaWQgY2x6KGludCByZCwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAg
ICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBDTFog
fCBSRChyZCkgfCBSTShybSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBia3B0KEFSTVdv
cmQgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChCS1BUIHwg
KCh2YWx1ZSAmIDB4ZmYwKSA8PCA0KSB8ICh2YWx1ZSAmIDB4ZikpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc3RhdGljIGJvb2wgaXNCa3B0KHZvaWQqIGFkZHJlc3MpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEFSTVdvcmQgZXhwZWN0ZWQgPSBCS1BUOwotICAgICAgICAgICAgQVJNV29yZCBpbW1l
ZGlhdGVNYXNrID0gKDB4ZmYwIDw8IDQpIHwgMHhmOwotICAgICAgICAgICAgQVJNV29yZCBjYW5k
aWRhdGVJbnN0cnVjdGlvbiA9ICpyZWludGVycHJldF9jYXN0PEFSTVdvcmQqPihhZGRyZXNzKTsK
LSAgICAgICAgICAgIHJldHVybiAoY2FuZGlkYXRlSW5zdHJ1Y3Rpb24gJiB+aW1tZWRpYXRlTWFz
aykgPT0gZXhwZWN0ZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG5vcCgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChOT1ApOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvcHlGdW5jdGlvbj4KLSAgICAgICAgc3RhdGljIHZvaWQg
ZmlsbE5vcHModm9pZCogYmFzZSwgc2l6ZV90IHNpemUsIENvcHlGdW5jdGlvbiBjb3B5KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBVTlVTRURfUEFSQU0oY29weSk7Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCghKHNpemUgJSBzaXplb2YoaW50MzJfdCkpKTsKLQotICAgICAgICAgICAgaW50
MzJfdCogcHRyID0gc3RhdGljX2Nhc3Q8aW50MzJfdCo+KGJhc2UpOwotICAgICAgICAgICAgY29u
c3Qgc2l6ZV90IG51bTMycyA9IHNpemUgLyBzaXplb2YoaW50MzJfdCk7Ci0gICAgICAgICAgICBj
b25zdCBpbnQzMl90IGluc24gPSBOT1A7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bTMyczsgaSsrKQotICAgICAgICAgICAgICAgICpwdHIrKyA9IGluc247Ci0gICAgICAg
IH0KLQotICAgICAgICB2b2lkIGRtYlNZKCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZm
ZXIucHV0SW50KERNQl9TWSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRtYklTSFNUKCkK
LSAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KERNQl9JU0hTVCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2b2lkIGJ4KGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQlgsIDAs
IDAsIFJNKHJtKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3NlbWJsZXJMYWJlbCBibHgoaW50
IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3Ry
dWN0aW9uKHRvQVJNV29yZChjYykgfCBCTFgsIDAsIDAsIFJNKHJtKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1X
b3JkIGxzbChpbnQgcmVnLCBBUk1Xb3JkIHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAgICAgICAgQVNTRVJUKHZhbHVl
IDw9IDB4MWYpOwotICAgICAgICAgICAgcmV0dXJuIHJlZyB8ICh2YWx1ZSA8PCA3KSB8IDB4MDA7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJNV29yZCBsc3IoaW50IHJlZywgQVJNV29y
ZCB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHJlZyA8PSBBUk1SZWdpc3Rl
cnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSA8PSAweDFmKTsKLSAgICAgICAgICAg
IHJldHVybiByZWcgfCAodmFsdWUgPDwgNykgfCAweDIwOwotICAgICAgICB9Ci0KLSAgICAgICAg
c3RhdGljIEFSTVdvcmQgYXNyKGludCByZWcsIEFSTVdvcmQgdmFsdWUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICBB
U1NFUlQodmFsdWUgPD0gMHgxZik7Ci0gICAgICAgICAgICByZXR1cm4gcmVnIHwgKHZhbHVlIDw8
IDcpIHwgMHg0MDsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIGxzbFJlZ2lz
dGVyKGludCByZWcsIGludCBzaGlmdFJlZykKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJU
KHJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVChzaGlmdFJlZyA8
PSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIHJldHVybiByZWcgfCAoc2hpZnRSZWcg
PDwgOCkgfCAweDEwOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQgbHNyUmVn
aXN0ZXIoaW50IHJlZywgaW50IHNoaWZ0UmVnKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAgICAgICAgQVNTRVJUKHNoaWZ0UmVn
IDw9IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAgICAgICAgcmV0dXJuIHJlZyB8IChzaGlmdFJl
ZyA8PCA4KSB8IDB4MzA7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJNV29yZCBhc3JS
ZWdpc3RlcihpbnQgcmVnLCBpbnQgc2hpZnRSZWcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICBBU1NFUlQoc2hpZnRS
ZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICByZXR1cm4gcmVnIHwgKHNoaWZ0
UmVnIDw8IDgpIHwgMHg1MDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEdlbmVyYWwgaGVscGVy
cwotCi0gICAgICAgIHNpemVfdCBjb2RlU2l6ZSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBtX2J1ZmZlci5jb2RlU2l6ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9p
ZCBlbnN1cmVTcGFjZShpbnQgaW5zblNwYWNlLCBpbnQgY29uc3RTcGFjZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UoaW5zblNwYWNlLCBjb25zdFNwYWNlKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGludCBzaXplT2ZDb25zdGFudFBvb2woKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXIuc2l6ZU9mQ29uc3RhbnRQb29sKCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMo
KQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZUZvckFueUluc3Ry
dWN0aW9uKCk7Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlRm9yQW55SW5zdHJ1Y3Rpb24obWF4
SnVtcFJlcGxhY2VtZW50U2l6ZSgpIC8gc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgICAgIEFz
c2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7Ci0gICAgICAgICAgICBpZiAo
cmVzdWx0Lm1fb2Zmc2V0ICE9IChtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCAtIG1heEp1
bXBSZXBsYWNlbWVudFNpemUoKSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsK
LSAgICAgICAgICAgIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zm
c2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOwotICAgICAgICAgICAgcmV0dXJuIGxhYmVs
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IGxhYmVsSWdub3JpbmdXYXRj
aHBvaW50cygpOwotICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC5tX29mZnNldCArIDEgPCBtX2lu
ZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCkgewotICAgICAgICAgICAgICAgIG5vcCgpOwotICAg
ICAgICAgICAgICAgIC8vIFRoZSBhdmFpbGFibGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBhcmUg
ZW5zdXJlZCBieSBsYWJlbEZvcldhdGNocG9pbnQuCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0g
bV9idWZmZXIubGFiZWwoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25t
ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAoIW1fYnVmZmVyLmlzQWxpZ25lZChh
bGlnbm1lbnQpKQotICAgICAgICAgICAgICAgIG1vdihBUk1SZWdpc3RlcnM6OnIwLCBBUk1SZWdp
c3RlcnM6OnIwKTsKLQotICAgICAgICAgICAgcmV0dXJuIGxhYmVsKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBBc3NlbWJsZXJMYWJlbCBsb2FkQnJhbmNoVGFyZ2V0KGludCByZCwgQ29uZGl0aW9u
IGNjID0gQUwsIGludCB1c2VDb25zdGFudFBvb2wgPSAwKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBlbnN1cmVTcGFjZShzaXplb2YoQVJNV29yZCksIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAg
ICAgICBtX2p1bXBzLmFwcGVuZChtX2J1ZmZlci5jb2RlU2l6ZSgpIHwgKHVzZUNvbnN0YW50UG9v
bCAmIDB4MSkpOwotICAgICAgICAgICAgbGRyVW5pcXVlSW1tZWRpYXRlKHJkLCBJbnZhbGlkQnJh
bmNoVGFyZ2V0LCBjYyk7Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIEFzc2VtYmxlckxhYmVsIGptcChDb25kaXRpb24gY2MgPSBBTCwg
aW50IHVzZUNvbnN0YW50UG9vbCA9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBs
b2FkQnJhbmNoVGFyZ2V0KEFSTVJlZ2lzdGVyczo6cGMsIGNjLCB1c2VDb25zdGFudFBvb2wpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBwcmVwYXJlRXhlY3V0YWJsZUNvcHkodm9pZCogdG8p
OwotCi0gICAgICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuZGVi
dWdPZmZzZXQoKTsgfQotCi0gICAgICAgIC8vIERGRyBhc3NlbWJseSBoZWxwZXJzIGZvciBtb3Zp
bmcgZGF0YSBiZXR3ZWVuIGZwIGFuZCByZWdpc3RlcnMuCi0gICAgICAgIHZvaWQgdm1vdihSZWdp
c3RlcklEIHJkMSwgUmVnaXN0ZXJJRCByZDIsIEZQUmVnaXN0ZXJJRCBybikKLSAgICAgICAgewot
ICAgICAgICAgICAgdm1vdl9hcm02NChyZDEsIHJkMiwgcm4pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCB2bW92KEZQUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybjEsIFJlZ2lzdGVySUQg
cm4yKQotICAgICAgICB7Ci0gICAgICAgICAgICB2bW92X3ZmcDY0KHJkLCBybjEsIHJuMik7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBQYXRjaGluZyBoZWxwZXJzCi0KLSAgICAgICAgc3RhdGlj
IEFSTVdvcmQqIGdldExkckltbUFkZHJlc3MoQVJNV29yZCogaW5zbikKLSAgICAgICAgewotICAg
ICAgICAgICAgLy8gQ2hlY2sgZm9yIGNhbGwKLSAgICAgICAgICAgIGlmICgoKmluc24gJiBMZHJQ
Y0ltbWVkaWF0ZUluc3RydWN0aW9uTWFzaykgIT0gTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbikg
ewotICAgICAgICAgICAgICAgIC8vIE11c3QgYmUgQkxYCi0gICAgICAgICAgICAgICAgQVNTRVJU
KCgqaW5zbiAmIEJseEluc3RydWN0aW9uTWFzaykgPT0gQmx4SW5zdHJ1Y3Rpb24pOwotICAgICAg
ICAgICAgICAgIGluc24tLTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gTXVzdCBi
ZSBhbiBsZHIgLi4uLCBbcGMgKy8tIGltbV0KLSAgICAgICAgICAgIEFTU0VSVCgoKmluc24gJiBM
ZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9uTWFzaykgPT0gTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlv
bik7Ci0KLSAgICAgICAgICAgIEFSTVdvcmQgYWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29y
ZD4oaW5zbikgKyBEZWZhdWx0UHJlZmV0Y2hPZmZzZXQgKiBzaXplb2YoQVJNV29yZCk7Ci0gICAg
ICAgICAgICBpZiAoKmluc24gJiBEYXRhVHJhbnNmZXJVcCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oYWRkciArICgqaW5zbiAmIERhdGFUcmFuc2Zl
ck9mZnNldE1hc2spKTsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEFSTVdv
cmQqPihhZGRyIC0gKCppbnNuICYgRGF0YVRyYW5zZmVyT2Zmc2V0TWFzaykpOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQqIGdldExkckltbUFkZHJlc3NPblBvb2woQVJNV29y
ZCogaW5zbiwgdWludDMyX3QqIGNvbnN0UG9vbCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8g
TXVzdCBiZSBhbiBsZHIgLi4uLCBbcGMgKy8tIGltbV0KLSAgICAgICAgICAgIEFTU0VSVCgoKmlu
c24gJiBMZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9uTWFzaykgPT0gTGRyUGNJbW1lZGlhdGVJbnN0
cnVjdGlvbik7Ci0KLSAgICAgICAgICAgIGlmICgqaW5zbiAmIDB4MSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oY29uc3RQb29sICsgKCgqaW5zbiAm
IERhdGFUcmFuc2Zlck9mZnNldE1hc2spID4+IDEpKTsKLSAgICAgICAgICAgIHJldHVybiBnZXRM
ZHJJbW1BZGRyZXNzKGluc24pOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcGF0
Y2hQb2ludGVySW50ZXJuYWwoaW50cHRyX3QgZnJvbSwgdm9pZCogdG8pCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEFSTVdvcmQqIGluc24gPSByZWludGVycHJldF9jYXN0PEFSTVdvcmQqPihmcm9t
KTsKLSAgICAgICAgICAgIEFSTVdvcmQqIGFkZHIgPSBnZXRMZHJJbW1BZGRyZXNzKGluc24pOwot
ICAgICAgICAgICAgKmFkZHIgPSByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KHRvKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIHBhdGNoQ29uc3RhbnRQb29sTG9hZChBUk1X
b3JkIGxvYWQsIEFSTVdvcmQgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhbHVlID0g
KHZhbHVlIDw8IDEpICsgMTsKLSAgICAgICAgICAgIEFTU0VSVCghKHZhbHVlICYgfkRhdGFUcmFu
c2Zlck9mZnNldE1hc2spKTsKLSAgICAgICAgICAgIHJldHVybiAobG9hZCAmIH5EYXRhVHJhbnNm
ZXJPZmZzZXRNYXNrKSB8IHZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQg
cGF0Y2hDb25zdGFudFBvb2xMb2FkKHZvaWQqIGxvYWRBZGRyLCB2b2lkKiBjb25zdFBvb2xBZGRy
KTsKLQotICAgICAgICAvLyBSZWFkIHBvaW50ZXJzCi0gICAgICAgIHN0YXRpYyB2b2lkKiByZWFk
UG9pbnRlcih2b2lkKiBmcm9tKQotICAgICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBpbnN0
cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGZyb20pOwotICAgICAgICAgICAg
QVJNV29yZCogYWRkcmVzcyA9IGdldExkckltbUFkZHJlc3MoaW5zdHJ1Y3Rpb24pOwotICAgICAg
ICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oYWRkcmVzcyk7Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBQYXRjaCBwb2ludGVycwotCi0gICAgICAgIHN0YXRpYyB2b2lkIGxp
bmtQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRvKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChyZWludGVycHJldF9jYXN0
PGludHB0cl90Pihjb2RlKSArIGZyb20ubV9vZmZzZXQsIHRvKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hJbnQzMih2b2lkKiB3aGVyZSwgaW50MzJfdCB0bykKLSAg
ICAgICAgewotICAgICAgICAgICAgcGF0Y2hQb2ludGVySW50ZXJuYWwocmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4od2hlcmUpLCByZWludGVycHJldF9jYXN0PHZvaWQqPih0bykpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcmVwYXRjaENvbXBhY3Qodm9pZCogd2hlcmUsIGlu
dDMyX3QgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQqIGluc3RydWN0aW9u
ID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4od2hlcmUpOwotICAgICAgICAgICAgQVNTRVJU
KCgqaW5zdHJ1Y3Rpb24gJiAweDBmNzAwMDAwKSA9PSBMb2FkVWludDMyKTsKLSAgICAgICAgICAg
IGlmICh2YWx1ZSA+PSAwKQotICAgICAgICAgICAgICAgICppbnN0cnVjdGlvbiA9ICgqaW5zdHJ1
Y3Rpb24gJiAweGZmN2ZmMDAwKSB8IERhdGFUcmFuc2ZlclVwIHwgdmFsdWU7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgKmluc3RydWN0aW9uID0gKCppbnN0cnVjdGlvbiAmIDB4
ZmY3ZmYwMDApIHwgLXZhbHVlOwotICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwg
c2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlcGF0
Y2hQb2ludGVyKHZvaWQqIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBw
YXRjaFBvaW50ZXJJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGludHB0cl90Pihmcm9tKSwgdG8p
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTGlua2VycwotICAgICAgICBzdGF0aWMgaW50cHRy
X3QgZ2V0QWJzb2x1dGVKdW1wQWRkcmVzcyh2b2lkKiBiYXNlLCBpbnQgb2Zmc2V0ID0gMCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGJh
c2UpICsgb2Zmc2V0IC0gc2l6ZW9mKEFSTVdvcmQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9p
ZCBsaW5rSnVtcChBc3NlbWJsZXJMYWJlbCBmcm9tLCBBc3NlbWJsZXJMYWJlbCB0bykKLSAgICAg
ICAgewotICAgICAgICAgICAgQVJNV29yZCogaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29y
ZCo+KGdldEFic29sdXRlSnVtcEFkZHJlc3MobV9idWZmZXIuZGF0YSgpLCBmcm9tLm1fb2Zmc2V0
KSk7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBhZGRyID0gZ2V0TGRySW1tQWRkcmVzc09uUG9vbChp
bnNuLCBtX2J1ZmZlci5wb29sQWRkcmVzcygpKTsKLSAgICAgICAgICAgICphZGRyID0gdG9BUk1X
b3JkKHRvLm1fb2Zmc2V0KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB2b2lkIGxpbmtK
dW1wKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7
Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChnZXRBYnNvbHV0ZUp1bXBBZGRyZXNz
KGNvZGUsIGZyb20ubV9vZmZzZXQpLCB0byk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMg
dm9pZCByZWxpbmtKdW1wKHZvaWQqIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChnZXRBYnNvbHV0ZUp1bXBBZGRyZXNzKGZyb20pLCB0
byk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCByZWxpbmtKdW1wVG9Ob3Aodm9p
ZCogZnJvbSkKLSAgICAgICAgewotICAgICAgICAgICAgcmVsaW5rSnVtcChmcm9tLCBmcm9tKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB2b2lkIGxpbmtDYWxsKHZvaWQqIGNvZGUsIEFz
c2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRj
aFBvaW50ZXJJbnRlcm5hbChnZXRBYnNvbHV0ZUp1bXBBZGRyZXNzKGNvZGUsIGZyb20ubV9vZmZz
ZXQpLCB0byk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCByZWxpbmtDYWxsKHZv
aWQqIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJ
bnRlcm5hbChnZXRBYnNvbHV0ZUp1bXBBZGRyZXNzKGZyb20pLCB0byk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBzdGF0aWMgdm9pZCogcmVhZENhbGxUYXJnZXQodm9pZCogZnJvbSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlYWRQb2ludGVy
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEFic29sdXRlSnVtcEFkZHJlc3MoZnJvbSkpKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCog
aW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdv
cmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oaW5zdHJ1Y3Rpb25T
dGFydCk7Ci0gICAgICAgICAgICBpbnRwdHJfdCBkaWZmZXJlbmNlID0gcmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4odG8pIC0gKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluc3RydWN0aW9u
KSArIERlZmF1bHRQcmVmZXRjaE9mZnNldCAqIHNpemVvZihBUk1Xb3JkKSk7Ci0KLSAgICAgICAg
ICAgIGlmICghKGRpZmZlcmVuY2UgJiAxKSkgewotICAgICAgICAgICAgICAgIGRpZmZlcmVuY2Ug
Pj49IDI7Ci0gICAgICAgICAgICAgICAgaWYgKChkaWZmZXJlbmNlIDw9IE1heGltdW1CcmFuY2hP
ZmZzZXREaXN0YW5jZSAmJiBkaWZmZXJlbmNlID49IE1pbmltdW1CcmFuY2hPZmZzZXREaXN0YW5j
ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgIC8vIERpcmVjdCBicmFuY2guCi0gICAgICAgICAg
ICAgICAgICAgICBpbnN0cnVjdGlvblswXSA9IEIgfCBBTCB8IChkaWZmZXJlbmNlICYgQnJhbmNo
T2Zmc2V0TWFzayk7Ci0gICAgICAgICAgICAgICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9u
LCBzaXplb2YoQVJNV29yZCkpOwotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gTG9hZCB0YXJnZXQu
Ci0gICAgICAgICAgICBpbnN0cnVjdGlvblswXSA9IExvYWRVaW50MzIgfCBBTCB8IFJOKEFSTVJl
Z2lzdGVyczo6cGMpIHwgUkQoQVJNUmVnaXN0ZXJzOjpwYykgfCA0OwotICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25bMV0gPSByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KHRvKTsKLSAgICAgICAgICAg
IGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihBUk1Xb3JkKSAqIDIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHNpemVvZihBUk1Xb3JkKSAqIDI7Ci0gICAgICAg
IH0KLQotICAgICAgICBzdGF0aWMgY29uc3RleHByIHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6
ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzaXplb2YoQVJNV29yZCkgKiAzOwot
ICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGlu
c3RydWN0aW9uU3RhcnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQqIGluc3RydWN0
aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAg
ICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2YoQVJNV29yZCkpOwotCi0gICAg
ICAgICAgICBBU1NFUlQoKCppbnN0cnVjdGlvbiAmIExkck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSA9
PSBBZGRJbW1lZGlhdGVJbnN0cnVjdGlvbiB8fCAoKmluc3RydWN0aW9uICYgTGRyT3JBZGRJbnN0
cnVjdGlvbk1hc2spID09IExkckltbWVkaWF0ZUluc3RydWN0aW9uKTsKLSAgICAgICAgICAgIGlm
ICgoKmluc3RydWN0aW9uICYgTGRyT3JBZGRJbnN0cnVjdGlvbk1hc2spID09IEFkZEltbWVkaWF0
ZUluc3RydWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICppbnN0cnVjdGlvbiA9ICgqaW5zdHJ1
Y3Rpb24gJiB+TGRyT3JBZGRJbnN0cnVjdGlvbk1hc2spIHwgTGRySW1tZWRpYXRlSW5zdHJ1Y3Rp
b247Ci0gICAgICAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihBUk1X
b3JkKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCBy
ZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nh
c3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwotICAgICAgICAgICAgY2FjaGVGbHVzaChp
bnN0cnVjdGlvbiwgc2l6ZW9mKEFSTVdvcmQpKTsKLQotICAgICAgICAgICAgQVNTRVJUKCgqaW5z
dHJ1Y3Rpb24gJiBMZHJPckFkZEluc3RydWN0aW9uTWFzaykgPT0gQWRkSW1tZWRpYXRlSW5zdHJ1
Y3Rpb24gfHwgKCppbnN0cnVjdGlvbiAmIExkck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSA9PSBMZHJJ
bW1lZGlhdGVJbnN0cnVjdGlvbik7Ci0gICAgICAgICAgICBpZiAoKCppbnN0cnVjdGlvbiAmIExk
ck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSA9PSBMZHJJbW1lZGlhdGVJbnN0cnVjdGlvbikgewotICAg
ICAgICAgICAgICAgICAqaW5zdHJ1Y3Rpb24gPSAoKmluc3RydWN0aW9uICYgfkxkck9yQWRkSW5z
dHJ1Y3Rpb25NYXNrKSB8IEFkZEltbWVkaWF0ZUluc3RydWN0aW9uOwotICAgICAgICAgICAgICAg
ICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2YoQVJNV29yZCkpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0QnJhbmNoUHRyV2l0aFBh
dGNoKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcm4sIEFSTVdvcmQgaW1tKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0
X2Nhc3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwotCi0gICAgICAgICAgICBBU1NFUlQo
KGluc3RydWN0aW9uWzJdICYgTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbk1hc2spID09IExkclBj
SW1tZWRpYXRlSW5zdHJ1Y3Rpb24pOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSB0b0FS
TVdvcmQoQUwpIHwgKChpbnN0cnVjdGlvblsyXSAmIDB4MGZmZjBmZmYpICsgc2l6ZW9mKEFSTVdv
cmQpKSB8IFJEKEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICAgICAgKmdldExkckltbUFkZHJl
c3MoaW5zdHJ1Y3Rpb24pID0gaW1tOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSB0b0FS
TVdvcmQoQUwpIHwgQ01QIHwgU2V0Q29uZGl0aW9uYWxDb2RlcyB8IFJOKHJuKSB8IFJNKEFSTVJl
Z2lzdGVyczo6UzEpOwotICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgMiAqIHNp
emVvZihBUk1Xb3JkKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBZGRyZXNzIG9wZXJhdGlv
bnMKLQotICAgICAgICBzdGF0aWMgdm9pZCogZ2V0UmVsb2NhdGVkQWRkcmVzcyh2b2lkKiBjb2Rl
LCBBc3NlbWJsZXJMYWJlbCBsYWJlbCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvZGUpICsgbGFi
ZWwubV9vZmZzZXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWRkcmVzcyBkaWZmZXJlbmNl
cwotCi0gICAgICAgIHN0YXRpYyBpbnQgZ2V0RGlmZmVyZW5jZUJldHdlZW5MYWJlbHMoQXNzZW1i
bGVyTGFiZWwgYSwgQXNzZW1ibGVyTGFiZWwgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGIubV9vZmZzZXQgLSBhLm1fb2Zmc2V0OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGlj
IHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFiZWwgY2FsbCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGNhbGwubV9vZmZzZXQ7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBIYW5kbGUgaW1tZWRpYXRlcwotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIGdldE9w
MihBUk1Xb3JkIGltbSk7Ci0KLSAgICAgICAgLy8gRmFzdCBjYXNlIGlmIGltbSBpcyBrbm93biB0
byBiZSBiZXR3ZWVuIDAgYW5kIDB4ZmYKLSAgICAgICAgc3RhdGljIEFSTVdvcmQgZ2V0T3AyQnl0
ZShBUk1Xb3JkIGltbSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGltbSA8PSAweGZm
KTsKLSAgICAgICAgICAgIHJldHVybiBPcDJJbW1lZGlhdGUgfCBpbW07Ci0gICAgICAgIH0KLQot
ICAgICAgICBzdGF0aWMgQVJNV29yZCBnZXRPcDJIYWxmKEFSTVdvcmQgaW1tKQotICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQoaW1tIDw9IDB4ZmYpOwotICAgICAgICAgICAgcmV0dXJuIElt
bWVkaWF0ZUZvckhhbGZXb3JkVHJhbnNmZXIgfCAoaW1tICYgMHgwZikgfCAoKGltbSAmIDB4ZjAp
IDw8IDQpOwotICAgICAgICB9Ci0KLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNykKLSAgICAg
ICAgc3RhdGljIEFSTVdvcmQgZ2V0SW1tMTZPcDIoQVJNV29yZCBpbW0pCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChpbW0gPD0gMHhmZmZmKQotICAgICAgICAgICAgICAgIHJldHVybiAoaW1t
ICYgMHhmMDAwKSA8PCA0IHwgKGltbSAmIDB4ZmZmKTsKLSAgICAgICAgICAgIHJldHVybiBJbnZh
bGlkSW1tZWRpYXRlOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgQVJNV29yZCBnZXRJbW0o
QVJNV29yZCBpbW0sIGludCB0bXBSZWcsIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwotICAgICAgICB2
b2lkIG1vdmVJbW0oQVJNV29yZCBpbW0sIGludCBkZXN0KTsKLSAgICAgICAgQVJNV29yZCBlbmNv
ZGVDb21wbGV4SW1tKEFSTVdvcmQgaW1tLCBpbnQgZGVzdCk7Ci0KLSAgICAgICAgLy8gTWVtb3J5
IGxvYWQvc3RvcmUgaGVscGVycwotCi0gICAgICAgIHZvaWQgZGF0YVRyYW5zZmVyMzIoRGF0YVRy
YW5zZmVyVHlwZUEsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qg
b2Zmc2V0KTsKLSAgICAgICAgdm9pZCBiYXNlSW5kZXhUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5
cGVBLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4
LCBpbnQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0KTsKLSAgICAgICAgdm9pZCBkYXRhVHJhbnNmZXIx
NihEYXRhVHJhbnNmZXJUeXBlQiwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwg
aW50MzJfdCBvZmZzZXQpOwotICAgICAgICB2b2lkIGJhc2VJbmRleFRyYW5zZmVyMTYoRGF0YVRy
YW5zZmVyVHlwZUIsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVy
SUQgaW5kZXgsIGludCBzY2FsZSwgaW50MzJfdCBvZmZzZXQpOwotICAgICAgICB2b2lkIGRhdGFU
cmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCwgRlBSZWdpc3RlcklEIHNyY0RzdCwg
UmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCk7Ci0gICAgICAgIHZvaWQgYmFzZUluZGV4
VHJhbnNmZXJGbG9hdChEYXRhVHJhbnNmZXJUeXBlRmxvYXQsIEZQUmVnaXN0ZXJJRCBzcmNEc3Qs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9m
ZnNldCk7Ci0KLSAgICAgICAgLy8gQ29uc3RhbnQgcG9vbCBobmFkbGVycwotCi0gICAgICAgIHN0
YXRpYyBBUk1Xb3JkIHBsYWNlQ29uc3RhbnRQb29sQmFycmllcihpbnQgb2Zmc2V0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBvZmZzZXQgPSAob2Zmc2V0IC0gc2l6ZW9mKEFSTVdvcmQpKSA+PiAy
OwotICAgICAgICAgICAgQVNTRVJUKChvZmZzZXQgPD0gTWF4aW11bUJyYW5jaE9mZnNldERpc3Rh
bmNlICYmIG9mZnNldCA+PSBNaW5pbXVtQnJhbmNoT2Zmc2V0RGlzdGFuY2UpKTsKLSAgICAgICAg
ICAgIHJldHVybiBBTCB8IEIgfCAob2Zmc2V0ICYgQnJhbmNoT2Zmc2V0TWFzayk7Ci0gICAgICAg
IH0KLQotI2lmIE9TKExJTlVYKSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAg
c3RhdGljIGlubGluZSB2b2lkIGxpbnV4UGFnZUZsdXNoKHVpbnRwdHJfdCBiZWdpbiwgdWludHB0
cl90IGVuZCkKLSAgICAgICAgewotICAgICAgICAgICAgYXNtIHZvbGF0aWxlKAotICAgICAgICAg
ICAgICAgICJwdXNoICAgIHtyN31cbiIKLSAgICAgICAgICAgICAgICAibW92ICAgICByMCwgJTBc
biIKLSAgICAgICAgICAgICAgICAibW92ICAgICByMSwgJTFcbiIKLSAgICAgICAgICAgICAgICAi
bW92ICAgICByNywgIzB4ZjAwMDBcbiIKLSAgICAgICAgICAgICAgICAiYWRkICAgICByNywgcjcs
ICMweDJcbiIKLSAgICAgICAgICAgICAgICAibW92ICAgICByMiwgIzB4MFxuIgotICAgICAgICAg
ICAgICAgICJzdmMgICAgIDB4MFxuIgotICAgICAgICAgICAgICAgICJwb3AgICAgIHtyN31cbiIK
LSAgICAgICAgICAgICAgICA6Ci0gICAgICAgICAgICAgICAgOiAiciIgKGJlZ2luKSwgInIiIChl
bmQpCi0gICAgICAgICAgICAgICAgOiAicjAiLCAicjEiLCAicjIiKTsKLSAgICAgICAgfQotI2Vu
ZGlmCi0KLSAgICAgICAgc3RhdGljIHZvaWQgY2FjaGVGbHVzaCh2b2lkKiBjb2RlLCBzaXplX3Qg
c2l6ZSkKLSAgICAgICAgewotI2lmIE9TKExJTlVYKSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJM
RSkKLSAgICAgICAgICAgIHNpemVfdCBwYWdlID0gcGFnZVNpemUoKTsKLSAgICAgICAgICAgIHVp
bnRwdHJfdCBjdXJyZW50ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvZGUpOwotICAg
ICAgICAgICAgdWludHB0cl90IGVuZCA9IGN1cnJlbnQgKyBzaXplOwotICAgICAgICAgICAgdWlu
dHB0cl90IGZpcnN0UGFnZUVuZCA9IChjdXJyZW50ICYgfihwYWdlIC0gMSkpICsgcGFnZTsKLQot
ICAgICAgICAgICAgaWYgKGVuZCA8PSBmaXJzdFBhZ2VFbmQpIHsKLSAgICAgICAgICAgICAgICBs
aW51eFBhZ2VGbHVzaChjdXJyZW50LCBlbmQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgbGludXhQYWdlRmx1c2goY3VycmVudCwgZmlyc3RQ
YWdlRW5kKTsKLQotICAgICAgICAgICAgZm9yIChjdXJyZW50ID0gZmlyc3RQYWdlRW5kOyBjdXJy
ZW50ICsgcGFnZSA8IGVuZDsgY3VycmVudCArPSBwYWdlKQotICAgICAgICAgICAgICAgIGxpbnV4
UGFnZUZsdXNoKGN1cnJlbnQsIGN1cnJlbnQgKyBwYWdlKTsKLQotICAgICAgICAgICAgbGludXhQ
YWdlRmx1c2goY3VycmVudCwgZW5kKTsKLSNlbHNlCi0jZXJyb3IgIlRoZSBjYWNoZUZsdXNoIHN1
cHBvcnQgaXMgbWlzc2luZyBvbiB0aGlzIHBsYXRmb3JtLiIKLSNlbmRpZgotICAgICAgICB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgQVJNV29yZCBSTShpbnQgcmVnKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAg
ICAgICAgcmV0dXJuIHJlZzsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIFJT
KGludCByZWcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0
ZXJzOjpwYyk7Ci0gICAgICAgICAgICByZXR1cm4gcmVnIDw8IDg7Ci0gICAgICAgIH0KLQotICAg
ICAgICBzdGF0aWMgQVJNV29yZCBSRChpbnQgcmVnKQotICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAgICAgICAgcmV0dXJuIHJlZyA8
PCAxMjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIFJOKGludCByZWcpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0g
ICAgICAgICAgICByZXR1cm4gcmVnIDw8IDE2OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGlj
IEFSTVdvcmQgZ2V0Q29uZGl0aW9uYWxGaWVsZChBUk1Xb3JkIGkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBpICYgQ29uZGl0aW9uYWxGaWVsZE1hc2s7Ci0gICAgICAgIH0KLQotICAg
ICAgICBzdGF0aWMgQVJNV29yZCB0b0FSTVdvcmQoQ29uZGl0aW9uIGNjKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpOwotICAgICAgICB9Ci0K
LSAgICAgICAgc3RhdGljIEFSTVdvcmQgdG9BUk1Xb3JkKHVpbnQzMl90IHUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBUk1Xb3JkPih1KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGludCBnZW5JbnQoaW50IHJlZywgQVJNV29yZCBpbW0sIGJvb2wgcG9zaXRpdmUp
OwotCi0gICAgICAgIEFSTUJ1ZmZlciBtX2J1ZmZlcjsKLSAgICAgICAgSnVtcHMgbV9qdW1wczsK
LSAgICAgICAgdWludDMyX3QgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7Ci0gICAgfTsK
LQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKSAmJiBD
UFUoQVJNX1RSQURJVElPTkFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9MaW5rQnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TGlua0J1ZmZlci5jcHAKaW5kZXggZWExMDdmYjRkOTAzNTNiODBkNWYyOGE4NTk4OWUyZjViZDRk
MDdlNy4uYjIzNmE1YzgwMmNiNzc2YTJjYWRiYWE1ZWJjZmU2YmQxZmIzYTNmNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCkBAIC0yOTgsOSAr
Mjk4LDcgQEAgdm9pZCBMaW5rQnVmZmVyOjpsaW5rQ29kZShNYWNyb0Fzc2VtYmxlciYgbWFjcm9B
c3NlbWJsZXIsIHZvaWQqIG93bmVyVUlELCBKSVRDb20KICAgICBBU1NFUlQobV9jb2RlKTsKICAg
ICBBc3NlbWJsZXJCdWZmZXImIGJ1ZmZlciA9IG1hY3JvQXNzZW1ibGVyLm1fYXNzZW1ibGVyLmJ1
ZmZlcigpOwogICAgIHZvaWQqIGNvZGUgPSBtX2NvZGUuZGF0YUxvY2F0aW9uKCk7Ci0jaWYgQ1BV
KEFSTV9UUkFESVRJT05BTCkKLSAgICBtYWNyb0Fzc2VtYmxlci5tX2Fzc2VtYmxlci5wcmVwYXJl
RXhlY3V0YWJsZUNvcHkoY29kZSk7Ci0jZWxpZiBDUFUoQVJNNjQpCisjaWYgQ1BVKEFSTTY0KQog
ICAgIFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBUb011bHRpcGxlT2Y8QXNzZW1ibGVyOjppbnN0cnVj
dGlvblNpemU+KGNvZGUpID09IGNvZGUpOwogI2VuZGlmCiAgICAgcGVyZm9ybUpJVE1lbWNweShj
b2RlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuY29kZVNpemUoKSk7CkBAIC00MDAsMjMgKzM5OCw2
IEBAIHZvaWQgTGlua0J1ZmZlcjo6ZHVtcENvZGUodm9pZCogY29kZSwgc2l6ZV90IHNpemUpCiAg
ICAgICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0c2l6ZTsgaSsrKQogICAgICAg
ICBkYXRhTG9nRigiXHQuc2hvcnRcdDB4JXhcbiIsIHRjb2RlW2ldKTsKLSNlbGlmIENQVShBUk1f
VFJBRElUSU9OQUwpCi0gICAgLy8gICBnY2MgLWMgaml0LnMKLSAgICAvLyAgIG9iamR1bXAgLUQg
aml0Lm8KLSAgICBzdGF0aWMgdW5zaWduZWQgY29kZUNvdW50ID0gMDsKLSAgICB1bnNpZ25lZCBp
bnQqIHRjb2RlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Kj4oY29kZSk7Ci0gICAgc2l6ZV90
IHRzaXplID0gc2l6ZSAvIHNpemVvZih1bnNpZ25lZCBpbnQpOwotICAgIGNoYXIgbmFtZUJ1Zlsx
MjhdOwotICAgIHNucHJpbnRmKG5hbWVCdWYsIHNpemVvZihuYW1lQnVmKSwgIl9qc2Nfaml0JXUi
LCBjb2RlQ291bnQrKyk7Ci0gICAgZGF0YUxvZ0YoIlx0Lmdsb2JsXHQlc1xuIgotICAgICAgICAg
ICAgIlx0LmFsaWduIDRcbiIKLSAgICAgICAgICAgICJcdC5jb2RlIDMyXG4iCi0gICAgICAgICAg
ICAiXHQudGV4dFxuIgotICAgICAgICAgICAgIiMgJXBcbiIKLSAgICAgICAgICAgICIlczpcbiIs
IG5hbWVCdWYsIGNvZGUsIG5hbWVCdWYpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHRzaXplOyBpKyspCi0gICAgICAgIGRhdGFMb2dGKCJcdC5sb25nXHQweCV4XG4iLCB0Y29kZVtp
XSk7CiAjZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGNkMWI1NDU4MzI1MmE2ODA5ZmQ1NmZmMDlkOGFm
MzU4NmNkNTk0MDguLjNhNzJjMjc5MjI0MGFiNjg2NTY0NDU3MDk2MDUxMGU2ZTEwMjBkODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgK
QEAgLTQ1LDExICs0NSw2IEBAIG5hbWVzcGFjZSBKU0MgeyB0eXBlZGVmIE1hY3JvQXNzZW1ibGVy
QVJNdjcgTWFjcm9Bc3NlbWJsZXJCYXNlOyB9OwogI2RlZmluZSBUQVJHRVRfTUFDUk9BU1NFTUJM
RVIgTWFjcm9Bc3NlbWJsZXJBUk02NAogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQVJNNjQuaCIK
IAotI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSNkZWZpbmUgVEFSR0VUX0FTU0VNQkxFUiBB
Uk1Bc3NlbWJsZXIKLSNkZWZpbmUgVEFSR0VUX01BQ1JPQVNTRU1CTEVSIE1hY3JvQXNzZW1ibGVy
QVJNCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJBUk0uaCIKLQogI2VsaWYgQ1BVKE1JUFMpCiAj
ZGVmaW5lIFRBUkdFVF9BU1NFTUJMRVIgTUlQU0Fzc2VtYmxlcgogI2RlZmluZSBUQVJHRVRfTUFD
Uk9BU1NFTUJMRVIgTWFjcm9Bc3NlbWJsZXJNSVBTCkBAIC0xNDIsNyArMTM3LDcgQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKICAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlckJhc2U6OmFuZDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6
YnJhbmNoQWRkMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hNdWwzMjsK
LSNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFM
KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoTUlQUykKKyNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1f
VEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoTUlQUykKICAgICB1c2luZyBNYWNyb0Fzc2Vt
YmxlckJhc2U6OmJyYW5jaFB0cjsKICNlbmRpZgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6YnJhbmNoU3ViMzI7CkBAIC00MzQsNyArNDI5LDYgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIg
OiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKICAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1
bXAoYnJhbmNoMzJXaXRoUGF0Y2goY29uZCwgbGVmdCwgZGF0YUxhYmVsLCBpbml0aWFsUmlnaHRW
YWx1ZSkpOwogICAgIH0KIAotI2lmICFDUFUoQVJNX1RSQURJVElPTkFMKQogICAgIFBhdGNoYWJs
ZUp1bXAgcGF0Y2hhYmxlSnVtcCgpCiAgICAgewogICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVt
cChqdW1wKCkpOwpAQCAtNDU5LDcgKzQ1Myw2IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVi
bGljIE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAgICAgewogICAgICAgICByZXR1cm4gUGF0Y2hhYmxl
SnVtcChicmFuY2gzMihjb25kLCBhZGRyZXNzLCBpbW0pKTsKICAgICB9Ci0jZW5kaWYKICNlbmRp
ZgogCiAgICAgdm9pZCBqdW1wKExhYmVsIHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDk1NzRkNmMzNWYzMzMwNTQ1ZDk2MGJjNjNjZWRhZGE1MDdkMmVmMDgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw0NTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxl
IEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQotI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyLmgiCi0KLSNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvSW5s
aW5lQVNNLmg+Ci0KLSNpZiBPUyhMSU5VWCkKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNs
dWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+
Ci0jaW5jbHVkZSA8ZWxmLmg+Ci0jaW5jbHVkZSA8YXNtL2h3Y2FwLmg+Ci0jZW5kaWYKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLXN0YXRpYyBib29sIGlzVkZQUHJlc2VudCgpCi17Ci0jaWYgT1MoTElO
VVgpCi0gICAgaW50IGZkID0gb3BlbigiL3Byb2Mvc2VsZi9hdXh2IiwgT19SRE9OTFkpOwotICAg
IGlmIChmZCAhPSAtMSkgewotICAgICAgICBFbGYzMl9hdXh2X3QgYXV4OwotICAgICAgICB3aGls
ZSAocmVhZChmZCwgJmF1eCwgc2l6ZW9mKEVsZjMyX2F1eHZfdCkpKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV4LmFfdHlwZSA9PSBBVF9IV0NBUCkgewotICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gYXV4LmFfdW4uYV92YWwgJiBIV0NBUF9WRlA7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2xvc2UoZmQpOwotICAgIH0KLSNlbmRpZiAv
LyBPUyhMSU5VWCkKLQotI2lmIChDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgZGVmaW5lZChf
X1ZGUF9GUF9fKSkKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwot
I2VuZGlmCi19Ci0KLWNvbnN0IGJvb2wgTWFjcm9Bc3NlbWJsZXJBUk06OnNfaXNWRlBQcmVzZW50
ID0gaXNWRlBQcmVzZW50KCk7Ci0KLSNpZiBDUFUoQVJNVjVfT1JfTE9XRVIpCi0vKiBPbiBBUk12
NSBhbmQgYmVsb3csIG5hdHVyYWwgYWxpZ25tZW50IGlzIHJlcXVpcmVkLiAqLwotdm9pZCBNYWNy
b0Fzc2VtYmxlckFSTTo6bG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotewotICAgIEFSTVdvcmQgb3AyOwotCi0gICAgQVNTRVJU
KGFkZHJlc3Muc2NhbGUgPj0gMCAmJiBhZGRyZXNzLnNjYWxlIDw9IDMpOwotICAgIG9wMiA9IG1f
YXNzZW1ibGVyLmxzbChhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2Nh
bGUpKTsKLQotICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAwICYmIGFkZHJlc3Mub2Zmc2V0ICsg
MHgyIDw9IDB4ZmYpIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAs
IGFkZHJlc3MuYmFzZSwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuaGFsZkR0clVwKEFSTUFz
c2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVy
OjpnZXRPcDJIYWxmKGFkZHJlc3Mub2Zmc2V0KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmhhbGZE
dHJVcChBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lz
dGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZihhZGRyZXNzLm9mZnNldCArIDB4Mikp
OwotICAgIH0gZWxzZSBpZiAoYWRkcmVzcy5vZmZzZXQgPCAwICYmIGFkZHJlc3Mub2Zmc2V0ID49
IC0weGZmKSB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZChBUk1SZWdpc3RlcnM6OlMwLCBhZGRy
ZXNzLmJhc2UsIG9wMik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJEb3duKEFSTUFzc2Vt
Ymxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpn
ZXRPcDJIYWxmKC1hZGRyZXNzLm9mZnNldCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5oYWxmRHRy
RG93bihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lz
dGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZigtYWRkcmVzcy5vZmZzZXQgLSAweDIp
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlSW1tKGFkZHJlc3Mub2Zm
c2V0LCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lz
dGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIG9wMik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmhh
bGZEdHJVcFJlZ2lzdGVyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgYWRkcmVzcy5i
YXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lz
dGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6T3AySW1tZWRpYXRlIHwg
MHgyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuaGFsZkR0clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVy
OjpMb2FkVWludDE2LCBBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVy
czo6UzApOwotICAgIH0KLSAgICBtX2Fzc2VtYmxlci5vcnIoZGVzdCwgZGVzdCwgbV9hc3NlbWJs
ZXIubHNsKEFSTVJlZ2lzdGVyczo6UzAsIDE2KSk7Ci19Ci0jZW5kaWYgLy8gQ1BVKEFSTVY1X09S
X0xPV0VSKQotCi0jaWYgRU5BQkxFKE1BU01fUFJPQkUpCi0KLWV4dGVybiAiQyIgdm9pZCBjdGlN
YXNtUHJvYmVUcmFtcG9saW5lKCk7Ci0KLXVzaW5nIG5hbWVzcGFjZSBBUk1SZWdpc3RlcnM7Ci0K
LSNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLQotLy8gVGhlIGZvbGxvd2luZyBhcmUgb2Zm
c2V0cyBmb3IgUHJvYmU6OlN0YXRlIGZpZWxkcyBhY2Nlc3NlZAotLy8gYnkgdGhlIGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUgc3R1Yi4KLQotI2RlZmluZSBQVFJfU0laRSA0Ci0jZGVmaW5lIFBST0JF
X1BST0JFX0ZVTkNUSU9OX09GRlNFVCAoMCAqIFBUUl9TSVpFKQotI2RlZmluZSBQUk9CRV9BUkdf
T0ZGU0VUICgxICogUFRSX1NJWkUpCi0jZGVmaW5lIFBST0JFX0lOSVRfU1RBQ0tfRlVOQ1RJT05f
T0ZGU0VUICgyICogUFRSX1NJWkUpCi0jZGVmaW5lIFBST0JFX0lOSVRfU1RBQ0tfQVJHX09GRlNF
VCAoMyAqIFBUUl9TSVpFKQotCi0jZGVmaW5lIFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCAoNCAq
IFBUUl9TSVpFKQotCi0jZGVmaW5lIEdQUkVHX1NJWkUgNAotI2RlZmluZSBQUk9CRV9DUFVfUjBf
T0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMCAqIEdQUkVHX1NJWkUpKQotI2Rl
ZmluZSBQUk9CRV9DUFVfUjFfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMSAq
IEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjJfT0ZGU0VUIChQUk9CRV9GSVJTVF9H
UFJFR19PRkZTRVQgKyAoMiAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjNfT0ZG
U0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMyAqIEdQUkVHX1NJWkUpKQotI2RlZmlu
ZSBQUk9CRV9DUFVfUjRfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoNCAqIEdQ
UkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjVfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJF
R19PRkZTRVQgKyAoNSAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjZfT0ZGU0VU
IChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoNiAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQ
Uk9CRV9DUFVfUjdfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoNyAqIEdQUkVH
X1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjhfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19P
RkZTRVQgKyAoOCAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjlfT0ZGU0VUIChQ
Uk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoOSAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9C
RV9DUFVfUjEwX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDEwICogR1BSRUdf
U0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9SMTFfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19P
RkZTRVQgKyAoMTEgKiBHUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0lQX09GRlNFVCAo
UFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDEyICogR1BSRUdfU0laRSkpCi0jZGVmaW5lIFBS
T0JFX0NQVV9TUF9PRkZTRVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgxMyAqIEdQUkVH
X1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfTFJfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19P
RkZTRVQgKyAoMTQgKiBHUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX1BDX09GRlNFVCAo
UFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDE1ICogR1BSRUdfU0laRSkpCi0KLSNkZWZpbmUg
UFJPQkVfQ1BVX0FQU1JfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTYgKiBH
UFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0ZQU0NSX09GRlNFVCAoUFJPQkVfRklSU1Rf
R1BSRUdfT0ZGU0VUICsgKDE3ICogR1BSRUdfU0laRSkpCi0KLSNkZWZpbmUgUFJPQkVfRklSU1Rf
RlBSRUdfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTggKiBHUFJFR19TSVpF
KSkKLQotI2RlZmluZSBGUFJFR19TSVpFIDgKLSNkZWZpbmUgUFJPQkVfQ1BVX0QwX09GRlNFVCAo
UFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDAgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJP
QkVfQ1BVX0QxX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDEgKiBGUFJFR19T
SVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QyX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZG
U0VUICsgKDIgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QzX09GRlNFVCAoUFJP
QkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDMgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVf
Q1BVX0Q0X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDQgKiBGUFJFR19TSVpF
KSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q1X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VU
ICsgKDUgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q2X09GRlNFVCAoUFJPQkVf
RklSU1RfRlBSRUdfT0ZGU0VUICsgKDYgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BV
X0Q3X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDcgKiBGUFJFR19TSVpFKSkK
LSNkZWZpbmUgUFJPQkVfQ1BVX0Q4X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsg
KDggKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q5X09GRlNFVCAoUFJPQkVfRklS
U1RfRlBSRUdfT0ZGU0VUICsgKDkgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Qx
MF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgxMCAqIEZQUkVHX1NJWkUpKQot
I2RlZmluZSBQUk9CRV9DUFVfRDExX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsg
KDExICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMTJfT0ZGU0VUIChQUk9CRV9G
SVJTVF9GUFJFR19PRkZTRVQgKyAoMTIgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BV
X0QxM19PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgxMyAqIEZQUkVHX1NJWkUp
KQotI2RlZmluZSBQUk9CRV9DUFVfRDE0X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VU
ICsgKDE0ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMTVfT0ZGU0VUIChQUk9C
RV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTUgKiBGUFJFR19TSVpFKSkKLQotI2lmIENQVShBUk1f
TkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotI2RlZmluZSBQUk9CRV9DUFVfRDE2X09GRlNF
VCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDE2ICogRlBSRUdfU0laRSkpCi0jZGVmaW5l
IFBST0JFX0NQVV9EMTdfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTcgKiBG
UFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QxOF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQ
UkVHX09GRlNFVCArICgxOCAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDE5X09G
RlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDE5ICogRlBSRUdfU0laRSkpCi0jZGVm
aW5lIFBST0JFX0NQVV9EMjBfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjAg
KiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QyMV9PRkZTRVQgKFBST0JFX0ZJUlNU
X0ZQUkVHX09GRlNFVCArICgyMSAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDIy
X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDIyICogRlBSRUdfU0laRSkpCi0j
ZGVmaW5lIFBST0JFX0NQVV9EMjNfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAo
MjMgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QyNF9PRkZTRVQgKFBST0JFX0ZJ
UlNUX0ZQUkVHX09GRlNFVCArICgyNCAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVf
RDI1X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDI1ICogRlBSRUdfU0laRSkp
Ci0jZGVmaW5lIFBST0JFX0NQVV9EMjZfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQg
KyAoMjYgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QyN19PRkZTRVQgKFBST0JF
X0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyNyAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9D
UFVfRDI4X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDI4ICogRlBSRUdfU0la
RSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMjlfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZT
RVQgKyAoMjkgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QzMF9PRkZTRVQgKFBS
T0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgzMCAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9C
RV9DUFVfRDMxX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDMxICogRlBSRUdf
U0laRSkpCi0KLSNkZWZpbmUgUFJPQkVfU0laRSAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsg
KDMyICogRlBSRUdfU0laRSkpCi0jZWxzZQotI2RlZmluZSBQUk9CRV9TSVpFIChQUk9CRV9GSVJT
VF9GUFJFR19PRkZTRVQgKyAoMTYgKiBGUFJFR19TSVpFKSkKLSNlbmRpZiAvLyBDUFUoQVJNX05F
T04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikKLQotI2RlZmluZSBPVVRfU0laRSBHUFJFR19TSVpF
Ci0KLS8vIFRoZXNlIEFTU0VSVHMgcmVtaW5kIHlvdSB0aGF0IGlmIHlvdSBjaGFuZ2UgdGhlIGxh
eW91dCBvZiBQcm9iZTo6U3RhdGUsCi0vLyB5b3UgbmVlZCB0byBjaGFuZ2UgY3RpTWFzbVByb2Jl
VHJhbXBvbGluZSBvZmZzZXRzIGFib3ZlIHRvIG1hdGNoLgotI2RlZmluZSBQUk9CRV9PRkZTRVRP
Rih4KSBvZmZzZXRvZihzdHJ1Y3QgUHJvYmU6OlN0YXRlLCB4KQotc3RhdGljX2Fzc2VydChQUk9C
RV9PRkZTRVRPRihwcm9iZUZ1bmN0aW9uKSA9PSBQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQs
ICJQcm9iZTo6U3RhdGU6OnByb2JlRnVuY3Rpb24ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJv
YmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGFyZykgPT0gUFJP
QkVfQVJHX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6YXJnJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihpbml0aWFs
aXplU3RhY2tGdW5jdGlvbikgPT0gUFJPQkVfSU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQsICJQ
cm9iZTo6U3RhdGU6OmluaXRpYWxpemVTdGFja0Z1bmN0aW9uJ3Mgb2Zmc2V0IG1hdGNoZXMgY3Rp
TWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihpbml0
aWFsaXplU3RhY2tBcmcpID09IFBST0JFX0lOSVRfU1RBQ0tfQVJHX09GRlNFVCwgIlByb2JlOjpT
dGF0ZTo6aW5pdGlhbGl6ZVN0YWNrQXJnJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJh
bXBvbGluZSIpOwotCi1zdGF0aWNfYXNzZXJ0KCEoUFJPQkVfQ1BVX1IwX09GRlNFVCAmIDB4Myks
ICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3IwXSdzIG9mZnNldCBzaG91bGQgYmUgNCBieXRlIGFs
aWduZWQiKTsKLQotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdp
c3RlcnM6OnIwXSkgPT0gUFJPQkVfQ1BVX1IwX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1Lmdw
cnNbcjBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGlj
X2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIxXSkgPT0gUFJP
QkVfQ1BVX1IxX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjFdJ3Mgb2Zmc2V0IG1h
dGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZT
RVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIyXSkgPT0gUFJPQkVfQ1BVX1IyX09GRlNFVCwg
IlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjJdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2Jl
VHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1S
ZWdpc3RlcnM6OnIzXSkgPT0gUFJPQkVfQ1BVX1IzX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1
LmdwcnNbcjNdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3Rh
dGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI0XSkgPT0g
UFJPQkVfQ1BVX1I0X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjRdJ3Mgb2Zmc2V0
IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9P
RkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI1XSkgPT0gUFJPQkVfQ1BVX1I1X09GRlNF
VCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjVdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVBy
b2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tB
Uk1SZWdpc3RlcnM6OnI2XSkgPT0gUFJPQkVfQ1BVX1I2X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6
Y3B1LmdwcnNbcjZdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwot
c3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI3XSkg
PT0gUFJPQkVfQ1BVX1I3X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjddJ3Mgb2Zm
c2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9C
RV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI4XSkgPT0gUFJPQkVfQ1BVX1I4X09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjhdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3By
c1tBUk1SZWdpc3RlcnM6OnI5XSkgPT0gUFJPQkVfQ1BVX1I5X09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmdwcnNbcjldJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIp
Owotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIx
MF0pID09IFBST0JFX0NQVV9SMTBfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1tyMTBd
J3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2Vy
dChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIxMV0pID09IFBST0JFX0NQ
VV9SMTFfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1tyMTFdJ3Mgb2Zmc2V0IG1hdGNo
ZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRP
RihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OmlwXSkgPT0gUFJPQkVfQ1BVX0lQX09GRlNFVCwgIlBy
b2JlOjpTdGF0ZTo6Y3B1LmdwcnNbaXBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJh
bXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdp
c3RlcnM6OnNwXSkgPT0gUFJPQkVfQ1BVX1NQX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1Lmdw
cnNbc3BdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGlj
X2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OmxyXSkgPT0gUFJP
QkVfQ1BVX0xSX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbbHJdJ3Mgb2Zmc2V0IG1h
dGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZT
RVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnBjXSkgPT0gUFJPQkVfQ1BVX1BDX09GRlNFVCwg
IlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcGNdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2Jl
VHJhbXBvbGluZSIpOwotCi1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5zcHJzW0FS
TVJlZ2lzdGVyczo6YXBzcl0pID09IFBST0JFX0NQVV9BUFNSX09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LnNwcnNbYXBzcl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5l
Iik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5zcHJzW0FSTVJlZ2lzdGVyczo6
ZnBzY3JdKSA9PSBQUk9CRV9DUFVfRlBTQ1JfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuc3By
c1tmcHNjcl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci0KLXN0
YXRpY19hc3NlcnQoIShQUk9CRV9DUFVfRDBfT0ZGU0VUICYgMHg3KSwgIlByb2JlOjpTdGF0ZTo6
Y3B1LmZwcnNbZDBdJ3Mgb2Zmc2V0IHNob3VsZCBiZSA4IGJ5dGUgYWxpZ25lZCIpOwotCi1zdGF0
aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDBdKSA9PSBQ
Uk9CRV9DUFVfRDBfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkMF0ncyBvZmZzZXQg
bWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09G
RlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDFdKSA9PSBQUk9CRV9DUFVfRDFfT0ZGU0VU
LCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkMV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJv
YmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FS
TVJlZ2lzdGVyczo6ZDJdKSA9PSBQUk9CRV9DUFVfRDJfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpj
cHUuZnByc1tkMl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1z
dGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDNdKSA9
PSBQUk9CRV9DUFVfRDNfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkM10ncyBvZmZz
ZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JF
X09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDRdKSA9PSBQUk9CRV9DUFVfRDRfT0ZG
U0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkNF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNt
UHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJz
W0FSTVJlZ2lzdGVyczo6ZDVdKSA9PSBQUk9CRV9DUFVfRDVfT0ZGU0VULCAiUHJvYmU6OlN0YXRl
OjpjcHUuZnByc1tkNV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7
Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDZd
KSA9PSBQUk9CRV9DUFVfRDZfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkNl0ncyBv
ZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBS
T0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDddKSA9PSBQUk9CRV9DUFVfRDdf
T0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkN10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlN
YXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5m
cHJzW0FSTVJlZ2lzdGVyczo6ZDhdKSA9PSBQUk9CRV9DUFVfRDhfT0ZGU0VULCAiUHJvYmU6OlN0
YXRlOjpjcHUuZnByc1tkOF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5l
Iik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6
ZDldKSA9PSBQUk9CRV9DUFVfRDlfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkOV0n
cyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0
KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDEwXSkgPT0gUFJPQkVfQ1BV
X0QxMF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxMF0ncyBvZmZzZXQgbWF0Y2hl
cyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9G
KGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDExXSkgPT0gUFJPQkVfQ1BVX0QxMV9PRkZTRVQsICJQ
cm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxMV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVU
cmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJl
Z2lzdGVyczo6ZDEyXSkgPT0gUFJPQkVfQ1BVX0QxMl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNw
dS5mcHJzW2QxMl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1z
dGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDEzXSkg
PT0gUFJPQkVfQ1BVX0QxM19PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxM10ncyBv
ZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBS
T0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDE0XSkgPT0gUFJPQkVfQ1BVX0Qx
NF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxNF0ncyBvZmZzZXQgbWF0Y2hlcyBj
dGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNw
dS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDE1XSkgPT0gUFJPQkVfQ1BVX0QxNV9PRkZTRVQsICJQcm9i
ZTo6U3RhdGU6OmNwdS5mcHJzW2QxNV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFt
cG9saW5lIik7Ci0KLSNpZiBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikKLXN0
YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMTZdKSA9
PSBQUk9CRV9DUFVfRDE2X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDE2XSdzIG9m
ZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJP
QkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMTddKSA9PSBQUk9CRV9DUFVfRDE3
X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDE3XSdzIG9mZnNldCBtYXRjaGVzIGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1
LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMThdKSA9PSBQUk9CRV9DUFVfRDE4X09GRlNFVCwgIlByb2Jl
OjpTdGF0ZTo6Y3B1LmZwcnNbZDE4XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0
ZXJzOjpkMTldKSA9PSBQUk9CRV9DUFVfRDE5X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZw
cnNbZDE5XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRp
Y19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjBdKSA9PSBQ
Uk9CRV9DUFVfRDIwX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDIwXSdzIG9mZnNl
dCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVf
T0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjFdKSA9PSBQUk9CRV9DUFVfRDIxX09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDIxXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1h
c21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZw
cnNbQVJNUmVnaXN0ZXJzOjpkMjJdKSA9PSBQUk9CRV9DUFVfRDIyX09GRlNFVCwgIlByb2JlOjpT
dGF0ZTo6Y3B1LmZwcnNbZDIyXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJz
OjpkMjNdKSA9PSBQUk9CRV9DUFVfRDIzX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNb
ZDIzXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19h
c3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjRdKSA9PSBQUk9C
RV9DUFVfRDI0X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI0XSdzIG9mZnNldCBt
YXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZG
U0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjVdKSA9PSBQUk9CRV9DUFVfRDI1X09GRlNF
VCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI1XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNb
QVJNUmVnaXN0ZXJzOjpkMjZdKSA9PSBQUk9CRV9DUFVfRDI2X09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmZwcnNbZDI2XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUi
KTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpk
MjddKSA9PSBQUk9CRV9DUFVfRDI3X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI3
XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3Nl
cnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjhdKSA9PSBQUk9CRV9D
UFVfRDI4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI4XSdzIG9mZnNldCBtYXRj
aGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VU
T0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjldKSA9PSBQUk9CRV9DUFVfRDI5X09GRlNFVCwg
IlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI5XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJN
UmVnaXN0ZXJzOjpkMzBdKSA9PSBQUk9CRV9DUFVfRDMwX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6
Y3B1LmZwcnNbZDMwXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsK
LXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMzFd
KSA9PSBQUk9CRV9DUFVfRDMxX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDMxXSdz
IG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLSNlbmRpZiAvLyBDUFUo
QVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikKLQotc3RhdGljX2Fzc2VydChzaXplb2Yo
UHJvYmU6OlN0YXRlKSA9PSBQUk9CRV9TSVpFLCAiUHJvYmU6OlN0YXRlJ3Mgc2l6ZSBtYXRjaGVz
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLSN1bmRlZiBQUk9CRV9PRkZTRVRPRgotCi1zdHJ1
Y3QgSW5jb21pbmdSZWNvcmQgewotICAgIHVpbnRwdHJfdCBscjsKLSAgICB1aW50cHRyX3QgaXA7
Ci0gICAgdWludHB0cl90IHI2OwotICAgIHVpbnRwdHJfdCByMDsKLSAgICB1aW50cHRyX3QgcjE7
Ci0gICAgdWludHB0cl90IHIyOwotfTsKLQotI2RlZmluZSBJTl9MUl9PRkZTRVQgKDAgKiBQVFJf
U0laRSkKLSNkZWZpbmUgSU5fSVBfT0ZGU0VUICgxICogUFRSX1NJWkUpCi0jZGVmaW5lIElOX1I2
X09GRlNFVCAoMiAqIFBUUl9TSVpFKQotI2RlZmluZSBJTl9SMF9PRkZTRVQgKDMgKiBQVFJfU0la
RSkKLSNkZWZpbmUgSU5fUjFfT0ZGU0VUICg0ICogUFRSX1NJWkUpCi0jZGVmaW5lIElOX1IyX09G
RlNFVCAoNSAqIFBUUl9TSVpFKQotI2RlZmluZSBJTl9TSVpFICAgICAgKDYgKiBQVFJfU0laRSkK
LQotc3RhdGljX2Fzc2VydChJTl9MUl9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQs
IGxyKSwgIklOX0xSX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKLXN0YXRpY19hc3NlcnQoSU5fSVBf
T0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBpcCksICJJTl9JUF9PRkZTRVQgaXMg
aW5jb3JyZWN0Iik7Ci1zdGF0aWNfYXNzZXJ0KElOX1I2X09GRlNFVCA9PSBvZmZzZXRvZihJbmNv
bWluZ1JlY29yZCwgcjYpLCAiSU5fUjZfT0ZGU0VUIGlzIGluY29ycmVjdCIpOwotc3RhdGljX2Fz
c2VydChJTl9SMF9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHIwKSwgIklOX1Iw
X09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKLXN0YXRpY19hc3NlcnQoSU5fUjFfT0ZGU0VUID09IG9m
ZnNldG9mKEluY29taW5nUmVjb3JkLCByMSksICJJTl9SMV9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7
Ci1zdGF0aWNfYXNzZXJ0KElOX1IyX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwg
cjIpLCAiSU5fUjJfT0ZGU0VUIGlzIGluY29ycmVjdCIpOwotc3RhdGljX2Fzc2VydChJTl9TSVpF
ID09IHNpemVvZihJbmNvbWluZ1JlY29yZCksICJJTl9TSVpFIGlzIGluY29ycmVjdCIpOwotCi1h
c20gKAotICAgICIudGV4dCIgIlxuIgotICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU1h
c21Qcm9iZVRyYW1wb2xpbmUpICJcbiIKLSAgICBISURFX1NZTUJPTChjdGlNYXNtUHJvYmVUcmFt
cG9saW5lKSAiXG4iCi0gICAgSU5MSU5FX0FSTV9GVU5DVElPTihjdGlNYXNtUHJvYmVUcmFtcG9s
aW5lKSAiXG4iCi0gICAgU1lNQk9MX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiOiIg
IlxuIgotCi0gICAgLy8gTWFjcm9Bc3NlbWJsZXJBUk12Nzo6cHJvYmUoKSBoYXMgYWxyZWFkeSBn
ZW5lcmF0ZWQgY29kZSB0byBzdG9yZSBzb21lIHZhbHVlcy4KLSAgICAvLyBUaGUgdG9wIG9mIHN0
YWNrIG5vdyBjb250YWlucyB0aGUgSW5jb21pbmdSZWNvcmQuCi0gICAgLy8KLSAgICAvLyBJbmNv
bWluZyByZWdpc3RlciB2YWx1ZXM6Ci0gICAgLy8gICAgIHIwOiBwcm9iZSBmdW5jdGlvbgotICAg
IC8vICAgICByMTogcHJvYmUgYXJnCi0gICAgLy8gICAgIHIyOiBQcm9iZTo6ZXhlY3V0ZVByb2Jl
Ci0gICAgLy8gICAgIHI2OiBzY3JhdGNoCi0gICAgLy8gICAgIGlwOiBzY3JhdGNoLCB3YXMgY3Rp
TWFzbVByb2JlVHJhbXBvbGluZQotICAgIC8vICAgICBscjogcmV0dXJuIGFkZHJlc3MKLQotICAg
ICJtb3YgICAgICAgaXAsIHNwIiAiXG4iCi0gICAgIm1vdiAgICAgICByNiwgc3AiICJcbiIKLSAg
ICAic3ViICAgICAgIHI2LCByNiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBP
VVRfU0laRSkgIlxuIgotCi0gICAgLy8gVGhlIEFSTSBFQUJJIHNwZWNpZmllcyB0aGF0IHRoZSBz
dGFjayBuZWVkcyB0byBiZSAxNiBieXRlIGFsaWduZWQuCi0gICAgImJpYyAgICAgICByNiwgcjYs
ICMweGYiICJcbiIKLSAgICAibW92ICAgICAgIHNwLCByNiIgIlxuIiAvLyBTZXQgdGhlIHNwIHRv
IHByb3RlY3QgdGhlIFByb2JlOjpTdGF0ZSBmcm9tIGludGVycnVwdHMgYmVmb3JlIHdlIGluaXRp
YWxpemUgaXQuCi0KLSAgICAic3RyICAgICAgIHIwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICBy
MSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQVJHX09GRlNFVCkgIl0iICJcbiIK
LSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVf
UENfT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgImFkZCAgICAgICByMCwgaXAsICMiIFNUUklOR0la
RV9WQUxVRV9PRihJTl9TSVpFKSAiXG4iCi0gICAgInN0ciAgICAgICByMCwgW3NwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIKLQotICAgICJhZGQg
ICAgICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1IzX09GRlNFVCkg
IlxuIgotICAgICJzdG1pYSAgICAgbHIsIHsgcjMtcjUgfSIgIlxuIgotICAgICJhZGQgICAgICAg
bHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1I3X09GRlNFVCkgIlxuIgot
ICAgICJzdG1pYSAgICAgbHIsIHsgcjctcjExIH0iICJcbiIKLSAgICAibXJzICAgICAgIGxyLCBB
UFNSIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX0FQU1JfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJ2bXJzICAgICAgbHIsIEZQU0NS
IiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX0ZQU0NSX09GRlNFVCkgIl0iICJcbiIKLQotICAgICJsZHIgICAgICAgcjQsIFtpcCwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX0xSX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAg
ICAgIHI1LCBbaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9JUF9PRkZTRVQpICJdIiAiXG4i
Ci0gICAgImxkciAgICAgICByNiwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fUjZfT0ZG
U0VUKSAiXSIgIlxuIgotICAgICJsZHIgICAgICAgcjcsIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKElOX1IwX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIHI4LCBbaXAsICMiIFNU
UklOR0laRV9WQUxVRV9PRihJTl9SMV9PRkZTRVQpICJdIiAiXG4iCi0gICAgImxkciAgICAgICBy
OSwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fUjJfT0ZGU0VUKSAiXSIgIlxuIgotICAg
ICJzdHIgICAgICAgcjQsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9MUl9P
RkZTRVQpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICByNSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX0lQX09GRlNFVCkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIHI2LCBb
c3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjZfT0ZGU0VUKSAiXSIgIlxuIgot
ICAgICJzdHIgICAgICAgcjcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9S
MF9PRkZTRVQpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICByOCwgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX1IxX09GRlNFVCkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIHI5
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjJfT0ZGU0VUKSAiXSIgIlxu
IgotCi0gICAgImFkZCAgICAgICBpcCwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9D
UFVfRDBfT0ZGU0VUKSAiXG4iCi0gICAgInZzdG1pYS42NCBpcCEsIHsgZDAtZDE1IH0iICJcbiIK
LSNpZiBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikKLSAgICAidnN0bWlhLjY0
IGlwISwgeyBkMTYtZDMxIH0iICJcbiIKLSNlbmRpZgotCi0gICAgLy8gcjUgaXMgYSBjYWxsZWUg
c2F2ZWQgcmVnaXN0ZXIuIFdlJ2xsIHVzZSBpdCBmb3IgcHJlc2VydmluZyB0aGUgUHJvYmU6OlN0
YXRlKi4KLSAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjE0MTkv
YXJtLXRvLWMtY2FsbGluZy1jb252ZW50aW9uLXJlZ2lzdGVycy10by1zYXZlIzI2MTQ5NgotICAg
ICJtb3YgICAgICAgcjUsIHNwIiAiXG4iCi0KLSAgICAibW92ICAgICAgIHIwLCBzcCIgIlxuIiAv
LyB0aGUgUHJvYmU6OlN0YXRlKiBhcmcuCi0gICAgImJseCAgICAgICByMiIgIlxuIiAvLyBDYWxs
IFByb2JlOjpleGVjdXRlUHJvYmUuCi0KLSAgICAvLyBNYWtlIHN1cmUgdGhlIFByb2JlOjpTdGF0
ZSBpcyBlbnRpcmVseSBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBvaW50ZXIgc28KLSAgICAvLyB0
aGF0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2VydmVkIHdoZW4gd2UgY2FsbCB0aGUg
aW5pdGlhbGl6ZVN0YWNrCi0gICAgLy8gZnVuY3Rpb24uCi0gICAgImxkciAgICAgICByMSwgW3I1
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIgLy8g
UmVzdWx0IHNwLgotICAgICJhZGQgICAgICAgcjIsIHI1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfU0laRSArIE9VVF9TSVpFKSAiXG4iIC8vIEVuZCBvZiBQcm92ZUNvbnRleHQgKyBidWZm
ZXIuCi0gICAgImNtcCAgICAgICByMSwgcjIiICJcbiIKLSAgICAiYmdlICAgICAiIExPQ0FMX0xB
QkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lUHJvYmVTdGF0ZUlzU2FmZSkgIlxuIgot
Ci0gICAgLy8gQWxsb2NhdGUgYSBzYWZlIHBsYWNlIG9uIHRoZSBzdGFjayBiZWxvdyB0aGUgcmVz
dWx0IHN0YWNrIHBvaW50ZXIgdG8gc3Rhc2ggdGhlIFByb2JlOjpTdGF0ZS4KLSAgICAic3ViICAg
ICAgIHIxLCByMSwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkg
IlxuIgotICAgICJiaWMgICAgICAgcjEsIHIxLCAjMHhmIiAiXG4iIC8vIFRoZSBBUk0gRUFCSSBz
cGVjaWZpZXMgdGhhdCB0aGUgc3RhY2sgbmVlZHMgdG8gYmUgMTYgYnl0ZSBhbGlnbmVkLgotICAg
ICJtb3YgICAgICAgc3AsIHIxIiAiXG4iIC8vIFNldCB0aGUgbmV3IHNwIHRvIHByb3RlY3QgdGhh
dCBtZW1vcnkgZnJvbSBpbnRlcnJ1cHRzIGJlZm9yZSB3ZSBjb3B5IHRoZSBQcm9iZTo6U3RhdGUu
Ci0KLSAgICAvLyBDb3B5IHRoZSBQcm9iZTo6U3RhdGUgdG8gdGhlIHNhZmUgcGxhY2UuCi0gICAg
Ly8gTm90ZTogd2UgaGF2ZSB0byBjb3B5IGZyb20gbG93IGFkZHJlc3MgdG8gaGlnaGVyIGFkZHJl
c3MgYmVjYXVzZSB3ZSdyZSBtb3ZpbmcgdGhlCi0gICAgLy8gUHJvYmU6OlN0YXRlIHRvIGEgbG93
ZXIgYWRkcmVzcy4KLSAgICAiYWRkICAgICAgIHI3LCByNSwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX1NJWkUpICJcbiIKLQotICAgIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVU
cmFtcG9saW5lQ29weUxvb3ApICI6IiAiXG4iCi0gICAgImxkciAgICAgICByMywgW3I1XSwgIzQi
ICJcbiIKLSAgICAibGRyICAgICAgIHI0LCBbcjVdLCAjNCIgIlxuIgotICAgICJzdHIgICAgICAg
cjMsIFtyMV0sICM0IiAiXG4iCi0gICAgInN0ciAgICAgICByNCwgW3IxXSwgIzQiICJcbiIKLSAg
ICAiY21wICAgICAgIHI1LCByNyIgIlxuIgotICAgICJibHQgICAgICIgTE9DQUxfTEFCRUxfU1RS
SU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVDb3B5TG9vcCkgIlxuIgotCi0gICAgIm1vdiAgICAg
ICByNSwgc3AiICJcbiIKLQotICAgIC8vIENhbGwgaW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gaWYg
cHJlc2VudC4KLSAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVBy
b2JlU3RhdGVJc1NhZmUpICI6IiAiXG4iCi0gICAgImxkciAgICAgICByMiwgW3I1LCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfSU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4i
Ci0gICAgImNtcCAgICAgICByMiwgIzAiICJcbiIKLSAgICAiYmVxICAgICAiIExPQ0FMX0xBQkVM
X1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lUmVzdG9yZVJlZ2lzdGVycykgIlxuIgotCi0g
ICAgIm1vdiAgICAgICByMCwgcjUiICJcbiIgLy8gU2V0IHRoZSBQcm9iZTo6U3RhdGUqIGFyZy4K
LSAgICAiYmx4ICAgICAgIHIyIiAiXG4iIC8vIENhbGwgdGhlIGluaXRpYWxpemVTdGFja0Z1bmN0
aW9uIChsb2FkZWQgaW50byByMiBhYm92ZSkuCi0KLSAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3Rp
TWFzbVByb2JlVHJhbXBvbGluZVJlc3RvcmVSZWdpc3RlcnMpICI6IiAiXG4iCi0KLSAgICAibW92
ICAgICAgIHNwLCByNSIgIlxuIiAvLyBFbnN1cmUgdGhhdCBzcCBwb2ludHMgdG8gdGhlIFByb2Jl
OjpTdGF0ZSouCi0KLSAgICAvLyBUbyBlbmFibGUgcHJvYmVzIHRvIG1vZGlmeSByZWdpc3RlciBz
dGF0ZSwgd2UgY29weSBhbGwgcmVnaXN0ZXJzCi0gICAgLy8gb3V0IG9mIHRoZSBQcm9iZTo6U3Rh
dGUgYmVmb3JlIHJldHVybmluZy4KLQotI2lmIENQVShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBf
VjNfRDMyKQotICAgICJhZGQgICAgICAgaXAsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX0QzMV9PRkZTRVQgKyBGUFJFR19TSVpFKSAiXG4iCi0gICAgInZsZG1kYi42NCBpcCEs
IHsgZDE2LWQzMSB9IiAiXG4iCi0gICAgInZsZG1kYi42NCBpcCEsIHsgZDAtZDE1IH0iICJcbiIK
LSNlbHNlCi0gICAgImFkZCAgICAgICBpcCwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfRDE1X09GRlNFVCArIEZQUkVHX1NJWkUpICJcbiIKLSAgICAidmxkbWRiLjY0IGlwISwg
eyBkMC1kMTUgfSIgIlxuIgotI2VuZGlmCi0KLSAgICAiYWRkICAgICAgIGlwLCBzcCwgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMTFfT0ZGU0VUICsgR1BSRUdfU0laRSkgIlxuIgot
ICAgICJsZG1kYiAgICAgaXAsIHsgcjAtcjExIH0iICJcbiIKLSAgICAibGRyICAgICAgIGlwLCBb
c3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRlBTQ1JfT0ZGU0VUKSAiXSIgIlxu
IgotICAgICJ2bXNyICAgICAgRlBTQ1IsIGlwIiAiXG4iCi0KLSAgICAvLyBUaGVyZSBhcmUgNSBt
b3JlIHJlZ2lzdGVycyBsZWZ0IHRvIHJlc3RvcmU6IGlwLCBzcCwgbHIsIHBjLCBhbmQgYXBzci4K
LQotICAgIC8vIFNldCB1cCB0aGUgcmVzdG9yZSBhcmVhIGZvciBzcCBhbmQgcGMuCi0gICAgImxk
ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNF
VCkgIl0iICJcbiIKLQotICAgIC8vIFB1c2ggdGhlIHBjIG9uIHRvIHRoZSByZXN0b3JlIGFyZWEu
Ci0gICAgImxkciAgICAgICBpcCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BV
X1BDX09GRlNFVCkgIl0iICJcbiIKLSAgICAic3ViICAgICAgIGxyLCBsciwgIyIgU1RSSU5HSVpF
X1ZBTFVFX09GKE9VVF9TSVpFKSAiXG4iCi0gICAgInN0ciAgICAgICBpcCwgW2xyXSIgIlxuIgot
ICAgIC8vIFBvaW50IHNwIHRvIHRoZSByZXN0b3JlIGFyZWEuCi0gICAgInN0ciAgICAgICBsciwg
W3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIK
LQotICAgIC8vIEFsbCBkb25lIHdpdGggbWF0aCBpLmUuIHdvbid0IHRyYXNoIHRoZSBzdGF0dXMg
cmVnaXN0ZXIgKGFwc3IpIGFuZCBkb24ndCBuZWVkCi0gICAgLy8gc2NyYXRjaCByZWdpc3RlcnMg
KGxyIGFuZCBpcCkgYW55bW9yZS4gUmVzdG9yZSBhcHNyLCBsciwgYW5kIGlwLgotICAgICJsZHIg
ICAgICAgaXAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9BUFNSX09GRlNF
VCkgIl0iICJcbiIKLSAgICAibXNyICAgICAgIEFQU1IsIGlwIiAiXG4iCi0gICAgImxkciAgICAg
ICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0xSX09GRlNFVCkgIl0i
ICJcbiIKLSAgICAibGRyICAgICAgIGlwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfSVBfT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgLy8gUmVzdG9yZSB0aGUgc3AgYW5kIHBj
LgotICAgICJsZHIgICAgICAgc3AsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQ
VV9TUF9PRkZTRVQpICJdIiAiXG4iCi0gICAgInBvcCAgICAgICB7IHBjIH0iICJcbiIKLSk7Ci0j
ZW5kaWYgLy8gQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCi0KLXZvaWQgTWFjcm9Bc3NlbWJsZXI6
OnByb2JlKFByb2JlOjpGdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogYXJnKQotewotICAgIHN1YjMy
KFRydXN0ZWRJbW0zMihzaXplb2YoSW5jb21pbmdSZWNvcmQpKSwgc3ApOwotCi0gICAgc3RvcmUz
MihsciwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIGxyKSkpOwotICAgIHN0
b3JlMzIoaXAsIEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBpcCkpKTsKLSAg
ICBzdG9yZTMyKHI2LCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjYpKSk7
IC8vIFMwID09IHI2LgotICAgIHN0b3JlMzIocjAsIEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29t
aW5nUmVjb3JkLCByMCkpKTsKLSAgICBzdG9yZTMyKHIxLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJ
bmNvbWluZ1JlY29yZCwgcjEpKSk7Ci0gICAgc3RvcmUzMihyMiwgQWRkcmVzcyhzcCwgb2Zmc2V0
b2YoSW5jb21pbmdSZWNvcmQsIHIyKSkpOwotICAgIC8vIFRoZSBmb2xsb3dpbmcgdXNlcyBSZWdp
c3RlcklEOjpTMC4gU28sIHRoZXkgbXVzdCBjb21lIGFmdGVyIHdlIHByZXNlcnZlIFMwIGFib3Zl
LgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlv
bikpLCByMCk7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZyksIHIxKTsKLSAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oUHJvYmU6OmV4ZWN1dGVQcm9iZSkp
LCByMik7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmUpKSwgaXApOwotICAgIG1fYXNzZW1ibGVyLmJseChpcCk7Ci19
Ci0jZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0j
ZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE0ZGY1MTczNGE2ZDgxODljODMwZTc1MDM2
Y2IwYjczYWM1ZjlmZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwxNjc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAxOCBBcHBsZSBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgVW5pdmVyc2l0
eSBvZiBTemVnZWQKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEFTU0VN
QkxFUikgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLQotI2luY2x1ZGUgIkFSTUFzc2VtYmxlci5o
IgotI2luY2x1ZGUgIkFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIKLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLXVzaW5nIEFzc2VtYmxlciA9IFRBUkdFVF9BU1NFTUJMRVI7Ci0KLWNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7Ci0g
ICAgc3RhdGljIGNvbnN0IGludCBEb3VibGVDb25kaXRpb25NYXNrID0gMHgwZjsKLSAgICBzdGF0
aWMgY29uc3QgaW50IERvdWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwgPSAweDEwOwotICAgIENPTVBJ
TEVfQVNTRVJUKCEoRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCAmIERvdWJsZUNvbmRpdGlvbk1h
c2spLCBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFsX3Nob3VsZF9ub3RfaW50ZXJmZXJlX3dpdGhf
QVJNQXNzZW1ibGVyX0NvbmRpdGlvbl9jb2Rlcyk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG51bUdQUnMgPSAxNjsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtRlBS
cyA9IDE2OwotICAgIAotICAgIHR5cGVkZWYgQVJNUmVnaXN0ZXJzOjpGUFJlZ2lzdGVySUQgRlBS
ZWdpc3RlcklEOwotCi0gICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3Rl
ciA9IEFSTVJlZ2lzdGVyczo6aXA7Ci0gICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgYWRkcmVz
c1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjY7Ci0KLSAgICBzdGF0aWMgY29uc3QgQVJN
UmVnaXN0ZXJzOjpGUFJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmQ3
OwotCi0gICAgZW51bSBSZWxhdGlvbmFsQ29uZGl0aW9uIHsKLSAgICAgICAgRXF1YWwgPSBBUk1B
c3NlbWJsZXI6OkVRLAotICAgICAgICBOb3RFcXVhbCA9IEFSTUFzc2VtYmxlcjo6TkUsCi0gICAg
ICAgIEFib3ZlID0gQVJNQXNzZW1ibGVyOjpISSwKLSAgICAgICAgQWJvdmVPckVxdWFsID0gQVJN
QXNzZW1ibGVyOjpDUywKLSAgICAgICAgQmVsb3cgPSBBUk1Bc3NlbWJsZXI6OkNDLAotICAgICAg
ICBCZWxvd09yRXF1YWwgPSBBUk1Bc3NlbWJsZXI6OkxTLAotICAgICAgICBHcmVhdGVyVGhhbiA9
IEFSTUFzc2VtYmxlcjo6R1QsCi0gICAgICAgIEdyZWF0ZXJUaGFuT3JFcXVhbCA9IEFSTUFzc2Vt
Ymxlcjo6R0UsCi0gICAgICAgIExlc3NUaGFuID0gQVJNQXNzZW1ibGVyOjpMVCwKLSAgICAgICAg
TGVzc1RoYW5PckVxdWFsID0gQVJNQXNzZW1ibGVyOjpMRQotICAgIH07Ci0KLSAgICBlbnVtIFJl
c3VsdENvbmRpdGlvbiB7Ci0gICAgICAgIE92ZXJmbG93ID0gQVJNQXNzZW1ibGVyOjpWUywKLSAg
ICAgICAgU2lnbmVkID0gQVJNQXNzZW1ibGVyOjpNSSwKLSAgICAgICAgUG9zaXRpdmVPclplcm8g
PSBBUk1Bc3NlbWJsZXI6OlBMLAotICAgICAgICBaZXJvID0gQVJNQXNzZW1ibGVyOjpFUSwKLSAg
ICAgICAgTm9uWmVybyA9IEFSTUFzc2VtYmxlcjo6TkUKLSAgICB9OwotCi0gICAgZW51bSBEb3Vi
bGVDb25kaXRpb24gewotICAgICAgICAvLyBUaGVzZSBjb25kaXRpb25zIHdpbGwgb25seSBldmFs
dWF0ZSB0byB0cnVlIGlmIHRoZSBjb21wYXJpc29uIGlzIG9yZGVyZWQgLSBpLmUuIG5laXRoZXIg
b3BlcmFuZCBpcyBOYU4uCi0gICAgICAgIERvdWJsZUVxdWFsID0gQVJNQXNzZW1ibGVyOjpFUSwK
LSAgICAgICAgRG91YmxlTm90RXF1YWwgPSBBUk1Bc3NlbWJsZXI6Ok5FIHwgRG91YmxlQ29uZGl0
aW9uQml0U3BlY2lhbCwKLSAgICAgICAgRG91YmxlR3JlYXRlclRoYW4gPSBBUk1Bc3NlbWJsZXI6
OkdULAotICAgICAgICBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWwgPSBBUk1Bc3NlbWJsZXI6OkdF
LAotICAgICAgICBEb3VibGVMZXNzVGhhbiA9IEFSTUFzc2VtYmxlcjo6Q0MsCi0gICAgICAgIERv
dWJsZUxlc3NUaGFuT3JFcXVhbCA9IEFSTUFzc2VtYmxlcjo6TFMsCi0gICAgICAgIC8vIElmIGVp
dGhlciBvcGVyYW5kIGlzIE5hTiwgdGhlc2UgY29uZGl0aW9ucyBhbHdheXMgZXZhbHVhdGUgdG8g
dHJ1ZS4KLSAgICAgICAgRG91YmxlRXF1YWxPclVub3JkZXJlZCA9IEFSTUFzc2VtYmxlcjo6RVEg
fCBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFsLAotICAgICAgICBEb3VibGVOb3RFcXVhbE9yVW5v
cmRlcmVkID0gQVJNQXNzZW1ibGVyOjpORSwKLSAgICAgICAgRG91YmxlR3JlYXRlclRoYW5PclVu
b3JkZXJlZCA9IEFSTUFzc2VtYmxlcjo6SEksCi0gICAgICAgIERvdWJsZUdyZWF0ZXJUaGFuT3JF
cXVhbE9yVW5vcmRlcmVkID0gQVJNQXNzZW1ibGVyOjpDUywKLSAgICAgICAgRG91YmxlTGVzc1Ro
YW5PclVub3JkZXJlZCA9IEFSTUFzc2VtYmxlcjo6TFQsCi0gICAgICAgIERvdWJsZUxlc3NUaGFu
T3JFcXVhbE9yVW5vcmRlcmVkID0gQVJNQXNzZW1ibGVyOjpMRSwKLSAgICB9OwotCi0gICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgc3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6
OnNwOwotICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0g
QVJNUmVnaXN0ZXJzOjpmcDsKLSAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBsaW5rUmVnaXN0
ZXIgPSBBUk1SZWdpc3RlcnM6OmxyOwotCi0gICAgc3RhdGljIGNvbnN0IFNjYWxlIFNjYWxlUHRy
ID0gVGltZXNGb3VyOwotCi0gICAgdm9pZCBhZGQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkcyhkZXN0LCBkZXN0LCBzcmMp
OwotICAgIH0KLQotICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3Ay
LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGRzKGRlc3Qs
IG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgYWRkMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
c3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFk
ZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmFkZHMoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVl
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGQzMihBYnNvbHV0
ZUFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoc3JjLm1fcHRyKSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGF0YVRlbXBSZWdpc3RlciwgZGF0
YVRlbXBSZWdpc3RlciwgMCk7Ci0gICAgICAgIGFkZDMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3Qp
OwotICAgIH0KLQotICAgIHZvaWQgYWRkMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIGxvYWQzMihzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBh
ZGQzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZDMyKFJl
Z2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewot
ICAgICAgICBtX2Fzc2VtYmxlci5hZGRzKGRlc3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGlt
bS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7Ci0gICAgfQotCi0gICAgdm9pZCBnZXRF
ZmZlY3RpdmVBZGRyZXNzKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5hZGQoZGVzdCwgYWRkcmVzcy5iYXNlLCBtX2Fzc2VtYmxl
ci5sc2woYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSkpOwot
ICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQpCi0gICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1t
MzIoYWRkcmVzcy5vZmZzZXQpLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFuZDMyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5i
aXRBbmRzKGRlc3QsIGRlc3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBhbmQzMihSZWdpc3Rl
cklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmJpdEFuZHMoZGVzdCwgb3AxLCBvcDIpOwotICAgIH0KLQotICAgIHZvaWQg
YW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAg
QVJNV29yZCB3ID0gbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCB0cnVlKTsKLSAgICAgICAgaWYgKHcgJiBBUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVk
SW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmljcyhkZXN0LCBkZXN0LCB3ICYg
fkFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmRzKGRlc3QsIGRlc3QsIHcpOwotICAgIH0KLQotICAg
IHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIEFSTVdvcmQgdyA9IG1fYXNzZW1ibGVyLmdldEltbShpbW0u
bV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlciwgdHJ1ZSk7Ci0gICAgICAgIGlmICh3ICYgQVJN
QXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmJpY3MoZGVzdCwgc3JjLCB3ICYgfkFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmRzKGRlc3QsIHNy
Yywgdyk7Ci0gICAgfQotCi0gICAgdm9pZCBhbmQzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgIGFuZDMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgYW5k
MTYoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQxNihz
cmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBhbmQzMihkYXRhVGVtcFJlZ2lzdGVyLCBk
ZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxzaGlmdDMyKGRlc3QsIHNoaWZ0QW1v
dW50LCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBB
Uk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMHgxZik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmJpdEFuZChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBzaGlmdEFtb3VudCwgdyk7Ci0KLSAg
ICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxlci5sc2xSZWdpc3RlcihzcmMs
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGxzaGlmdDMyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
Lm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNsKGRlc3QsIGltbS5tX3ZhbHVlICYgMHgxZikpOwot
ICAgIH0KLQotICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVz
dCwgbV9hc3NlbWJsZXIubHNsKHNyYywgaW1tLm1fdmFsdWUgJiAweDFmKSk7Ci0gICAgfQotCi0g
ICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmIChvcDIgPT0gZGVzdCkgewotICAgICAgICAgICAgaWYg
KG9wMSA9PSBkZXN0KSB7Ci0gICAgICAgICAgICAgICAgbW92ZShvcDIsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOwotICAgICAgICAgICAgICAgIG9wMiA9IGFkZHJlc3NUZW1wUmVnaXN0ZXI7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIFN3YXAgdGhlIG9wZXJhbmRzLgot
ICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQgdG1wID0gb3AxOwotICAgICAgICAgICAgICAgIG9w
MSA9IG9wMjsKLSAgICAgICAgICAgICAgICBvcDIgPSB0bXA7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgbV9hc3NlbWJsZXIubXVscyhkZXN0LCBvcDEsIG9wMik7Ci0gICAgfQot
Ci0gICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgbXVsMzIoc3JjLCBkZXN0LCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIG11bDMy
KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAg
ewotICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLm11bHMoZGVzdCwgc3JjLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIG5lZzMyKFJlZ2lzdGVySUQgc3JjRGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLnJzYnMoc3JjRGVzdCwgc3JjRGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsK
LSAgICB9Ci0KLSAgICB2b2lkIG5lZzMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
Ci0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5yc2JzKGRlc3QsIHNyYywgQVJNQXNzZW1ibGVy
OjpnZXRPcDJCeXRlKDApKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm9ycnMoZGVzdCwg
ZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEFic29s
dXRlQWRkcmVzcyBkZXN0KQotICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3Qu
bV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbG9hZDMyKEFkZHJlc3MoYWRk
cmVzc1RlbXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBvcjMyKHNyYywg
ZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRk
cmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBp
bW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQotICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbG9hZDMyKEFk
ZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBv
cjMyKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7IC8vIEl0IHVzZXMgUzAgYXMgdGVtcG9yYXJ5IHJl
Z2lzdGVyLCB3ZSBuZWVkIHRvIHJlbG9hZCB0aGUgYWRkcmVzcy4KLSAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3Rv
cmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAg
ICAgICAgbG9hZDMyKGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBvcjMy
KGltbSwgYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IHN0b3JlMzIoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzcyk7Ci0gICAgfQotCi0gICAgdm9p
ZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChkZXN0ICE9IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5vcnJzKGRlc3QsIGRlc3QsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVz
c1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJU
KHNyYyAhPSBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIub3Jycyhk
ZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdp
c3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJ
RCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm9ycnMo
ZGVzdCwgb3AxLCBvcDIpOwotICAgIH0KLQotICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBz
aGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgcnNoaWZ0MzIoZGVz
dCwgc2hpZnRBbW91bnQsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgweDFmKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuYml0QW5kKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHNoaWZ0QW1vdW50
LCB3KTsKLQotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmFzclJl
Z2lzdGVyKHNyYywgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgcnNo
aWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAg
cnNoaWZ0MzIoZGVzdCwgaW1tLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHJzaGlmdDMyKFJl
Z2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewot
ICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3QpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1i
bGVyLmFzcihzcmMsIGltbS5tX3ZhbHVlICYgMHgxZikpOwotICAgIH0KLQotICAgIHZvaWQgdXJz
aGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIHVyc2hpZnQzMihkZXN0LCBzaGlmdEFtb3VudCwgZGVzdCk7Ci0gICAgfQotCi0gICAg
dm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6
Z2V0T3AyQnl0ZSgweDFmKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYml0QW5kKGFkZHJlc3NUZW1w
UmVnaXN0ZXIsIHNoaWZ0QW1vdW50LCB3KTsKLQotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRl
c3QsIG1fYXNzZW1ibGVyLmxzclJlZ2lzdGVyKHNyYywgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwot
ICAgIH0KLQotICAgIHZvaWQgdXJzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIu
bHNyKGRlc3QsIGltbS5tX3ZhbHVlICYgMHgxZikpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHVy
c2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQotICAgIHsKLSAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkKLSAgICAgICAgICAgIG1vdmUoc3Jj
LCBkZXN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0
LCBtX2Fzc2VtYmxlci5sc3Ioc3JjLCBpbW0ubV92YWx1ZSAmIDB4MWYpKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5zdWJzKGRlc3QsIGRlc3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9p
ZCBzdWIzMihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN1YnMoZGVzdCwgbGVmdCwgcmlnaHQpOwot
ICAgIH0KLQotICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3VicyhkZXN0LCBkZXN0LCBtX2Fzc2VtYmxl
ci5nZXRJbW0oaW1tLm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0g
ICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3ViMzIo
aW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkMzIoc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgc3ViMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBzdWIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3VicyhkZXN0LCBzcmMsIG1fYXNzZW1ibGVy
LmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAg
IHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmVvcnMoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQot
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZW9ycyhkZXN0LCBvcDEsIG9wMik7Ci0gICAgfQot
Ci0gICAgdm9pZCB4b3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgbG9hZDMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHhvcjMyKGRhdGFU
ZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubXZucyhkZXN0LCBkZXN0KTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZW9ycyhkZXN0LCBkZXN0LCBtX2Fzc2VtYmxl
ci5nZXRJbW0oaW1tLm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCi0gICAgewotICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCi0gICAgICAgICAg
ICBtX2Fzc2VtYmxlci5tdm5zKGRlc3QsIHNyYyk7Ci0gICAgICAgIGVsc2UgICAgCi0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5lb3JzKGRlc3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5t
X3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb3VudExl
YWRpbmdaZXJvczMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotI2lm
IFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KQotICAgICAgICBtX2Fzc2VtYmxlci5jbHooZGVzdCwg
c3JjKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShzcmMpOwotICAgICAgICBVTlVTRURf
UEFSQU0oZGVzdCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5k
aWYKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQ4KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIzMihB
Uk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNl
dCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihB
Uk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAg
fQotCi0gICAgdm9pZCBsb2FkOChjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qp
Ci0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGFkZHJlc3NUZW1w
UmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIzMihBUk1Bc3NlbWJs
ZXI6OkxvYWRVaW50OCwgZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgMCk7Ci0gICAgfQotCi0g
ICAgdm9pZCBsb2FkOFNpZ25lZEV4dGVuZFRvMzIoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIxNihBUk1Bc3Nl
bWJsZXI6OkxvYWRJbnQ4LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihCYXNlSW5kZXggYWRkcmVzcywg
UmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJh
bnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJbnQ4LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQxNihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVn
aXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyMTYo
QVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zm
c2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQxNihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0
ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIx
NihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwot
ICAgIH0KLQotICAgIHZvaWQgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihCYXNlSW5kZXggYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4
VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJbnQxNiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9m
ZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkMzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3Ms
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2Zl
cjMyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
Lm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5z
ZmVyMzIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJl
c3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0
KTsKLSAgICB9Ci0KLSNpZiBDUFUoQVJNVjVfT1JfTE9XRVIpCi0gICAgdm9pZCBsb2FkMzJXaXRo
VW5hbGlnbmVkSGFsZldvcmRzKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpOwot
I2Vsc2UKLSAgICB2b2lkIGxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMoQmFzZUluZGV4IGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBk
ZXN0KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHZvaWQgbG9hZDE2VW5hbGlnbmVkKEJhc2VJbmRl
eCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkMTYoYWRkcmVz
cywgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBhYm9ydFdpdGhSZWFzb24oQWJvcnRSZWFzb24g
cmVhc29uKQotICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIocmVhc29uKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGJyZWFrcG9pbnQoKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGFib3J0V2l0aFJlYXNvbihBYm9ydFJlYXNvbiByZWFzb24sIGludHB0cl90IG1pc2MpCi0gICAg
ewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihtaXNjKSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIGFib3J0V2l0aFJlYXNvbihyZWFzb24pOwotICAgIH0KLQotICAgIENvbnZlcnRpYmxl
TG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCh0aGlzKTsK
LSAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zmc2V0ID49IDAgJiYgYWRkcmVzcy5vZmZzZXQgPD0g
MjU1KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMy
LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICB9Ci0KLSAgICBEYXRhTGFiZWwzMiBsb2FkMzJXaXRoQWRkcmVzc09mZnNldFBh
dGNoKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgRGF0
YUxhYmVsMzIgZGF0YUxhYmVsKHRoaXMpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJ
bW1lZGlhdGUoYWRkcmVzc1RlbXBSZWdpc3RlciwgMCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0
clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwotICAgIH0K
LQotICAgIHN0YXRpYyBib29sIGlzQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KHB0cmRp
ZmZfdCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSA+PSAtNDA5NSAmJiB2YWx1
ZSA8PSA0MDk1OwotICAgIH0KLQotICAgIERhdGFMYWJlbENvbXBhY3QgbG9hZDMyV2l0aENvbXBh
Y3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBEYXRhTGFiZWxDb21wYWN0IGRhdGFMYWJlbCh0aGlzKTsKLSAgICAgICAg
QVNTRVJUKGlzQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KGFkZHJlc3Mub2Zmc2V0KSk7
Ci0gICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAwKQotICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3Mub2Zmc2V0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRy
RG93bihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
cy5vZmZzZXQpOwotICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwotICAgIH0KLQotICAgIERhdGFM
YWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShhZGRyZXNzVGVtcFJlZ2lz
dGVyLCAwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXBSZWdpc3RlcihBUk1Bc3NlbWJsZXI6
OlN0b3JlVWludDMyLCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIHJldHVybiBkYXRhTGFiZWw7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
YmFzZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDgsIHNyYywgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBh
ZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMs
IEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRy
VXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQ4LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5v
ZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2
b2lkKiBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3Mp
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNz
ZW1ibGVyOjpTdG9yZVVpbnQ4LCBzcmMsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApOwotICAgIH0K
LQotICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzKQotICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50OF90
PihpbW0ubV92YWx1ZSkpOwotICAgICAgICBtb3ZlKGltbTgsIGRhdGFUZW1wUmVnaXN0ZXIpOwot
ICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7Ci0gICAgfQotCi0gICAg
dm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgY29uc3Qgdm9pZCogYWRkcmVzcykKLSAgICB7
Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBpbW04KHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFs
dWUpKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxBUk1Xb3Jk
PihhZGRyZXNzKSksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtb3ZlKGltbTgsIGRh
dGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJVcChBUk1Bc3NlbWJsZXI6
OlN0b3JlVWludDgsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApOwot
ICAgIH0KLQotICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJl
c3MpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjE2KEFSTUFz
c2VtYmxlcjo6U3RvcmVVaW50MTYsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBz
dGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQot
Ci0gICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVz
cykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjE2KEFSTUFzc2VtYmxl
cjo6U3RvcmVVaW50MTYsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAg
fQotCi0gICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjMyKEFSTUFzc2Vt
Ymxlcjo6U3RvcmVVaW50MzIsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVz
cykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMzIoQVJNQXNz
ZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0
YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0K
LSAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJl
c3MpCi0gICAgewotICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7Ci0gICAgfQotCi0gICAgdm9pZCBz
dG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQotICAgIHsKLSAgICAg
ICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5iYXNl
SW5kZXhUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNz
LnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmUzMihSZWdp
c3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmxkclVuaXF1ZUltbWVkaWF0ZShhZGRyZXNzVGVtcFJlZ2lzdGVyLCByZWludGVycHJldF9j
YXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNz
ZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCAwKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgY29uc3Qgdm9pZCogYWRkcmVz
cykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShhZGRyZXNz
VGVtcFJlZ2lzdGVyLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIubW92ZUltbShpbW0ubV92YWx1ZSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIGRhdGFU
ZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApOwotICAgIH0KLQotICAgIHZvaWQg
cG9wKFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnBvcChkZXN0
KTsKLSAgICB9Ci0KLSAgICB2b2lkIHBvcFBhaXIoUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJ
RCBkZXN0MikKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnBvcChkZXN0MSk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLnBvcChkZXN0Mik7Ci0gICAgfQotCi0gICAgdm9pZCBwdXNoKFJlZ2lzdGVy
SUQgc3JjKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIucHVzaChzcmMpOwotICAgIH0KLQot
ICAgIHZvaWQgcHVzaChBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBsb2FkMzIoYWRk
cmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHB1c2goZGF0YVRlbXBSZWdpc3Rlcik7
Ci0gICAgfQotCi0gICAgdm9pZCBwdXNoKFRydXN0ZWRJbW0zMiBpbW0pCi0gICAgewotICAgICAg
ICBtb3ZlKGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHB1c2goYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBwdXNoUGFpcihSZWdpc3RlcklEIHNyYzEs
IFJlZ2lzdGVySUQgc3JjMikKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnB1c2goc3JjMik7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLnB1c2goc3JjMSk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3Zl
KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmVJbW0oaW1tLm1fdmFsdWUsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgbW92
ZShSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKHNy
YyAhPSBkZXN0KQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIHNyYyk7Ci0gICAg
fQotCi0gICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihpbW0pLCBkZXN0KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHN3YXAoUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIpCi0gICAgewotICAg
ICAgICBtb3ZlKHJlZzEsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtb3ZlKHJlZzIsIHJl
ZzEpOwotICAgICAgICBtb3ZlKGRhdGFUZW1wUmVnaXN0ZXIsIHJlZzIpOwotICAgIH0KLQotICAg
IHZvaWQgc3dhcChGUFJlZ2lzdGVySUQgZnIxLCBGUFJlZ2lzdGVySUQgZnIyKQotICAgIHsKLSAg
ICAgICAgbW92ZURvdWJsZShmcjEsIGZwVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZURvdWJs
ZShmcjIsIGZyMSk7Ci0gICAgICAgIG1vdmVEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGZyMik7Ci0g
ICAgfQotCi0gICAgdm9pZCBzaWduRXh0ZW5kMzJUb1B0cihSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAg
bW92ZShzcmMsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgemVyb0V4dGVuZDMyVG9QdHIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmIChzcmMgIT0g
ZGVzdCkKLSAgICAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJy
YW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0z
MiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2Vt
YmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBs
ZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRh
dGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2g4KFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkK
LSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgTWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRh
VGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVn
aXN0ZXIsIHJpZ2h0OCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKLSAg
ICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6
Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGxlZnQubV9wdHIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgTWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKGRh
dGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5j
aDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7Ci0gICAgfQotCi0gICAgSnVtcCBi
cmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgUmVnaXN0
ZXJJRCByaWdodCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVy
KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0
KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBpbnQgdXNlQ29uc3RhbnRQb29sID0g
MCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0LCByaWdodCk7Ci0gICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCksIHVzZUNvbnN0
YW50UG9vbCkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgaW50IHVzZUNvbnN0
YW50UG9vbCA9IDApCi0gICAgewotICAgICAgICBpbnRlcm5hbENvbXBhcmUzMihsZWZ0LCByaWdo
dCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29u
ZCksIHVzZUNvbnN0YW50UG9vbCkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQpCi0gICAg
ewotICAgICAgICBsb2FkMzIocmlnaHQsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1
cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAg
SnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgUmVn
aXN0ZXJJRCByaWdodCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJp
Z2h0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewotICAgICAgICBsb2Fk
MzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihjb25k
LCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gzMihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmln
aHQpCi0gICAgewotICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCk7Ci0gICAg
fQotCi0gICAgSnVtcCBicmFuY2gzMldpdGhVbmFsaWduZWRIYWxmV29yZHMoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQotICAgIHsK
LSAgICAgICAgbG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhsZWZ0LCBkYXRhVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJp
Z2h0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkK
LSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVy
czo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7Ci0gICAgICAgIE1hY3JvQXNz
ZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0
YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgbWFzazgpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRy
dXN0ZWRJbW0zMigtMSkpCi0gICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNy
b0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwot
ICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJy
YW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywg
VHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQotICAgIHsKLSAgICAgICAgVHJ1
c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBtYXNrKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3Mu
bV9wdHIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
Ojpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIp
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBk
YXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hUZXN0MzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBSZWdpc3RlcklEIG1hc2spCi0g
ICAgewotICAgICAgICBBU1NFUlQoY29uZCA9PSBaZXJvIHx8IGNvbmQgPT0gTm9uWmVybyB8fCBj
b25kID09IFNpZ25lZCB8fCBjb25kID09IFBvc2l0aXZlT3JaZXJvKTsKLSAgICAgICAgbV9hc3Nl
bWJsZXIudHN0KHJlZywgbWFzayk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpt
cChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFRlc3QzMihS
ZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJbW0zMiBtYXNrID0g
VHJ1c3RlZEltbTMyKC0xKSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjb25kID09IFplcm8gfHwg
Y29uZCA9PSBOb25aZXJvIHx8IGNvbmQgPT0gU2lnbmVkIHx8IGNvbmQgPT0gUG9zaXRpdmVPclpl
cm8pOwotICAgICAgICBBUk1Xb3JkIHcgPSBtX2Fzc2VtYmxlci5nZXRJbW0obWFzay5tX3ZhbHVl
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0cnVlKTsKLSAgICAgICAgaWYgKHcgJiBBUk1Bc3NlbWJs
ZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmljcyhh
ZGRyZXNzVGVtcFJlZ2lzdGVyLCByZWcsIHcgJiB+QVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZElt
bWVkaWF0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcs
IHcpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNv
bmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEp
KQotICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOwot
ICAgIH0KLQotICAgIEp1bXAgYnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBCYXNl
SW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQotICAg
IHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBy
ZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOwotICAgIH0K
LQotICAgIEp1bXAganVtcCgpCi0gICAgewotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxl
ci5qbXAoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBqdW1wKFJlZ2lzdGVySUQgdGFyZ2V0LCBQdHJU
YWcpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5ieCh0YXJnZXQpOwotICAgIH0KLQotICAg
IHZvaWQganVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKLSAgICB7Ci0gICAgICAgIGxvYWQz
MihhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGp1bXAoQWJz
b2x1dGVBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKLSAgICB7Ci0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGxv
YWQzMihBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApLCBBUk1SZWdpc3RlcnM6OnBjKTsK
LSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQganVtcChSZWdpc3RlcklEIHRhcmdldCwg
UmVnaXN0ZXJJRCBqdW1wVGFnKSB7IFVOVVNFRF9QQVJBTShqdW1wVGFnKSwganVtcCh0YXJnZXQs
IE5vUHRyVGFnKTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBqdW1wKEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCBqdW1wVGFnKSB7IFVOVVNFRF9QQVJBTShqdW1wVGFnKSwganVtcChhZGRy
ZXNzLCBOb1B0clRhZyk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQganVtcChBYnNvbHV0ZUFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBqdW1wVGFnKSB7IFVOVVNFRF9QQVJBTShqdW1wVGFn
KSwganVtcChhZGRyZXNzLCBOb1B0clRhZyk7IH0KLQotICAgIHZvaWQgbW92ZURvdWJsZVRvSW50
cyhGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQot
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0MSwgZGVzdDIsIHNyYyk7Ci0gICAg
fQotCi0gICAgdm9pZCBtb3ZlSW50c1RvRG91YmxlKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJ
RCBzcmMyLCBGUFJlZ2lzdGVySUQgZGVzdCwgRlBSZWdpc3RlcklEKQotICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIudm1vdihkZXN0LCBzcmMxLCBzcmMyKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJy
YW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29u
ZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pCi0gICAgICAgICAgICB8fCAoY29uZCA9PSBO
b25aZXJvKSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykpOwotICAgICAgICBhZGQzMihzcmMs
IGRlc3QpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9u
KGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25l
ZCkgfHwgKGNvbmQgPT0gWmVybykKLSAgICAgICAgICAgIHx8IChjb25kID09IE5vblplcm8pIHx8
IChjb25kID09IFBvc2l0aXZlT3JaZXJvKSk7Ci0gICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0
KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25k
KSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJv
KQotICAgICAgICAgICAgfHwgKGNvbmQgPT0gTm9uWmVybykgfHwgKGNvbmQgPT0gUG9zaXRpdmVP
clplcm8pKTsKLSAgICAgICAgYWRkMzIoaW1tLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAo
bV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIEp1bXAg
YnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQg
PT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykKLSAgICAg
ICAgICAgIHx8IChjb25kID09IE5vblplcm8pIHx8IChjb25kID09IFBvc2l0aXZlT3JaZXJvKSk7
Ci0gICAgICAgIGFkZDMyKHNyYywgaW1tLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9h
c3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJh
bmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRl
QWRkcmVzcyBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8
fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pCi0gICAgICAgICAgICB8fCAoY29u
ZCA9PSBOb25aZXJvKSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykpOwotICAgICAgICBhZGQz
MihpbW0sIGRlc3QpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29u
ZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25k
aXRpb24gY29uZCwgQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IGxvYWQzMihzcmMsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNo
QWRkMzIoY29uZCwgZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGVzdCk7Ci0gICAgfQotICAg
IHZvaWQgbXVsbDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBk
ZXN0KQotICAgIHsKLSAgICAgICAgaWYgKG9wMiA9PSBkZXN0KSB7Ci0gICAgICAgICAgICBpZiAo
b3AxID09IGRlc3QpIHsKLSAgICAgICAgICAgICAgICBtb3ZlKG9wMiwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7Ci0gICAgICAgICAgICAgICAgb3AyID0gYWRkcmVzc1RlbXBSZWdpc3RlcjsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gU3dhcCB0aGUgb3BlcmFuZHMuCi0g
ICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBvcDE7Ci0gICAgICAgICAgICAgICAgb3Ax
ID0gb3AyOwotICAgICAgICAgICAgICAgIG9wMiA9IHRtcDsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBtX2Fzc2VtYmxlci5tdWxsKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QsIG9w
MSwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wKGRhdGFUZW1wUmVnaXN0ZXIsIG1fYXNz
ZW1ibGVyLmFzcihkZXN0LCAzMSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdp
c3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8
IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykp
OwotICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewotICAgICAgICAgICAgbXVsbDMyKHNy
YzEsIHNyYzIsIGRlc3QpOwotICAgICAgICAgICAgY29uZCA9IE5vblplcm87Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgbXVsMzIoc3JjMSwgc3JjMiwgZGVzdCk7Ci0gICAg
ICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAg
ICB9Ci0KLSAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11
bDMyKGNvbmQsIHNyYywgZGVzdCwgZGVzdCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hNdWwz
MihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxv
dykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25a
ZXJvKSk7Ci0gICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7Ci0gICAgICAgICAgICBtb3Zl
KGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBtdWxsMzIoYWRkcmVzc1Rl
bXBSZWdpc3Rlciwgc3JjLCBkZXN0KTsKLSAgICAgICAgICAgIGNvbmQgPSBOb25aZXJvOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG11bDMyKGltbSwgc3JjLCBkZXN0KTsK
LSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkp
OwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNv
bmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwg
KGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBzdWIzMihzcmMsIGRlc3QpOwotICAgICAgICBy
ZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQot
Ci0gICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09IE92
ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09
IE5vblplcm8pKTsKLSAgICAgICAgc3ViMzIoaW1tLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1
bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIEp1
bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVz
dGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNv
bmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwg
KGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBzdWIzMihzcmMsIGltbSwgZGVzdCk7Ci0gICAg
ICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAg
ICB9Ci0KLSAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9
PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN1YnMo
ZGVzdCwgb3AxLCBvcDIpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJN
Q29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hOZWczMihSZXN1bHRD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNEZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJU
KChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8p
IHx8IChjb25kID09IE5vblplcm8pKTsKLSAgICAgICAgbmVnMzIoc3JjRGVzdCk7Ci0gICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9
Ci0KLSAgICBKdW1wIGJyYW5jaE9yMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gU2ln
bmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Ci0gICAgICAgIG9y
MzIoc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNv
bmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVt
cCgpCi0gICAgewotICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChtX2Fzc2VtYmxlci5qbXAo
QVJNQXNzZW1ibGVyOjpBTCwgMSkpOwotICAgIH0KLQotICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hh
YmxlQnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1
c3RlZEltbTMyIGltbSkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBpbW04ID0gTWFjcm9B
c3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBpbW0pOwotICAg
ICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gcGF0Y2hhYmxlQnJh
bmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgaW1tOCk7Ci0gICAgfQotCi0gICAgUGF0Y2hh
YmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgaW1tKQotICAgIHsKLSAgICAgICAgaW50ZXJuYWxDb21w
YXJlMzIocmVnLCBpbW0pOwotICAgICAgICBKdW1wIGp1bXAobV9hc3NlbWJsZXIubG9hZEJyYW5j
aFRhcmdldChkYXRhVGVtcFJlZ2lzdGVyLCBBUk1Db25kaXRpb24oY29uZCksIHRydWUpKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuYngoZGF0YVRlbXBSZWdpc3RlciwgQVJNQ29uZGl0aW9uKGNvbmQp
KTsKLSAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoanVtcCk7Ci0gICAgfQotCi0gICAgUGF0
Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSkKLSAgICB7Ci0gICAgICAgIGludGVybmFs
Q29tcGFyZTMyKGFkZHJlc3MsIGltbSk7Ci0gICAgICAgIEp1bXAganVtcChtX2Fzc2VtYmxlci5s
b2FkQnJhbmNoVGFyZ2V0KGRhdGFUZW1wUmVnaXN0ZXIsIEFSTUNvbmRpdGlvbihjb25kKSwgZmFs
c2UpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYngoZGF0YVRlbXBSZWdpc3RlciwgQVJNQ29uZGl0
aW9uKGNvbmQpKTsKLSAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoanVtcCk7Ci0gICAgfQot
Ci0gICAgdm9pZCBicmVha3BvaW50KCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJrcHQo
MCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNCcmVha3BvaW50KHZvaWQqIGFkZHJlc3Mp
IHsgcmV0dXJuIEFSTUFzc2VtYmxlcjo6aXNCa3B0KGFkZHJlc3MpOyB9Ci0KLSAgICBDYWxsIG5l
YXJDYWxsKCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRCcmFuY2hUYXJnZXQoZGF0
YVRlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpBTCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBD
YWxsKG1fYXNzZW1ibGVyLmJseChkYXRhVGVtcFJlZ2lzdGVyKSwgQ2FsbDo6TGlua2FibGVOZWFy
KTsKLSAgICB9Ci0KLSAgICBDYWxsIG5lYXJUYWlsQ2FsbCgpCi0gICAgewotICAgICAgICByZXR1
cm4gQ2FsbChtX2Fzc2VtYmxlci5qbXAoKSwgQ2FsbDo6TGlua2FibGVOZWFyVGFpbCk7Ci0gICAg
fQotCi0gICAgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFyZ2V0LCBQdHJUYWcpCi0gICAgewotICAg
ICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5ibHgodGFyZ2V0KSwgQ2FsbDo6Tm9uZSk7Ci0g
ICAgfQotCi0gICAgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQotICAgIHsKLSAg
ICAgICAgY2FsbDMyKGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAg
IHZvaWQgcmV0KCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJ4KGxpbmtSZWdpc3Rlcik7
Ci0gICAgfQotCi0gICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0LCByaWdodCk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOwotICAgICAgICBtX2Fz
c2VtYmxlci5tb3YoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRp
b24oY29uZCkpOwotICAgIH0KLQotICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0LCBtX2Fzc2VtYmxlci5n
ZXRJbW0ocmlnaHQubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgICAgICBtX2Fz
c2VtYmxlci5tb3YoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSwgQVJNQ29u
ZGl0aW9uKGNvbmQpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAg
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgY29tcGFyZTMyKGNvbmQsIGRhdGFUZW1wUmVn
aXN0ZXIsIHJpZ2h0OCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIHJlZyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnRzdChyZWcsIG1fYXNzZW1ibGVyLmdldEltbShtYXNrLm1fdmFsdWUsIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFz
c2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBB
Uk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSksIEFSTUNvbmRpdGlvbihjb25kKSk7Ci0gICAgfQot
Ci0gICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywg
VHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQz
MihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgdGVzdDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIG1hc2ssIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgdGVzdDgoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNz
ZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7Ci0gICAg
ICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwg
YWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHRlc3QzMihjb25kLCBkYXRhVGVt
cFJlZ2lzdGVyLCBtYXNrOCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGQzMihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkKGRlc3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3Zh
bHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGQzMihUcnVz
dGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxv
YWQzMihhZGRyZXNzLm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgYWRkMzIoaW1t
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzLm1fcHRyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0s
IEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgQVJNV29yZCB0bXA7Ci0K
LSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMy
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCAwKTsKLQotICAgICAgICBp
ZiAoKHRtcCA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyKGltbS5tX3ZhbHVlKSkgIT0gQVJNQXNzZW1i
bGVyOjpJbnZhbGlkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcyhhZGRy
ZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0bXApOwotICAgICAgICBlbHNl
IGlmICgodG1wID0gQVJNQXNzZW1ibGVyOjpnZXRPcDIoLWltbS5tX3ZhbHVlKSkgIT0gQVJNQXNz
ZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3Vicyhh
ZGRyZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0bXApOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHMoYWRkcmVzc1RlbXBSZWdpc3Rlciwg
YWRkcmVzc1RlbXBSZWdpc3RlciwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBkYXRh
VGVtcFJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5t
X3B0ciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICB9Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRh
dGFUZW1wUmVnaXN0ZXIsIDApOwotCi0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2Vt
Ymxlcjo6TG9hZFVpbnQzMiwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwg
c2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IDApCi0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5hZGMoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdp
c3RlciwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuc2JjKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRh
dGFUZW1wUmVnaXN0ZXIsIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWIz
MihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAg
ICAgIGxvYWQzMihhZGRyZXNzLm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3Vi
MzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLm1fcHRyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQzMihjb25zdCB2b2lk
KiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5s
ZHJVbmlxdWVJbW1lZGlhdGUoYWRkcmVzc1RlbXBSZWdpc3RlciwgcmVpbnRlcnByZXRfY2FzdDxB
Uk1Xb3JkPihhZGRyZXNzKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxl
cjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgMCk7Ci0gICAgfQotCi0g
ICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVz
cyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKGxlZnQubV9w
dHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0
YVRlbXBSZWdpc3RlciwgcmlnaHQpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJp
Z2h0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIp
OwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQp
OwotICAgIH0KLQotICAgIHZvaWQgcmVsYXRpdmVUYWJsZUp1bXAoUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHNjYWxlID49IDAgJiYgc2NhbGUgPD0g
MzEpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQoQVJNUmVnaXN0ZXJzOjpwYywgQVJNUmVnaXN0
ZXJzOjpwYywgbV9hc3NlbWJsZXIubHNsKGluZGV4LCBzY2FsZSkpOwotCi0gICAgICAgIC8vIE5P
UCB0aGUgZGVmYXVsdCBwcmVmZXRjaGluZwotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoQVJNUmVn
aXN0ZXJzOjpyMCwgQVJNUmVnaXN0ZXJzOjpyMCk7Ci0gICAgfQotCi0gICAgQ2FsbCBjYWxsKFB0
clRhZykKLSAgICB7Ci0gICAgICAgIGVuc3VyZVNwYWNlKDIgKiBzaXplb2YoQVJNV29yZCksIHNp
emVvZihBUk1Xb3JkKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRCcmFuY2hUYXJnZXQoZGF0
YVRlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpBTCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBD
YWxsKG1fYXNzZW1ibGVyLmJseChkYXRhVGVtcFJlZ2lzdGVyKSwgQ2FsbDo6TGlua2FibGUpOwot
ICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgY2FsbFRhZykg
eyByZXR1cm4gVU5VU0VEX1BBUkFNKGNhbGxUYWcpLCBjYWxsKE5vUHRyVGFnKTsgfQotICAgIEFM
V0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFyZ2V0LCBSZWdpc3RlcklEIGNhbGxU
YWcpIHsgcmV0dXJuIFVOVVNFRF9QQVJBTShjYWxsVGFnKSwgY2FsbCh0YXJnZXQsIE5vUHRyVGFn
KTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCBjYWxsVGFnKSB7IFVOVVNFRF9QQVJBTShjYWxsVGFnKSwgY2FsbChhZGRyZXNzLCBOb1B0
clRhZyk7IH0KLQotICAgIENhbGwgdGFpbFJlY3Vyc2l2ZUNhbGwoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIENhbGw6OmZyb21UYWlsSnVtcChqdW1wKCkpOwotICAgIH0KLQotICAgIENhbGwgbWFr
ZVRhaWxSZWN1cnNpdmVDYWxsKEp1bXAgb2xkSnVtcCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBD
YWxsOjpmcm9tVGFpbEp1bXAob2xkSnVtcCk7Ci0gICAgfQotCi0gICAgRGF0YUxhYmVsUHRyIG1v
dmVXaXRoUGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIERhdGFMYWJlbFB0ciBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShkZXN0LCByZWludGVycHJldF9jYXN0PEFSTVdv
cmQ+KGluaXRpYWxWYWx1ZS5tX3ZhbHVlKSk7Ci0gICAgICAgIHJldHVybiBkYXRhTGFiZWw7Ci0g
ICAgfQotCi0gICAgRGF0YUxhYmVsMzIgbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1tMzIgaW5pdGlh
bFZhbHVlLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBEYXRhTGFiZWwzMiBkYXRh
TGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShkZXN0
LCBzdGF0aWNfY2FzdDxBUk1Xb3JkPihpbml0aWFsVmFsdWUubV92YWx1ZSkpOwotICAgICAgICBy
ZXR1cm4gZGF0YUxhYmVsOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRh
dGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIo
bnVsbHB0cikpCi0gICAgewotICAgICAgICBlbnN1cmVTcGFjZSgzICogc2l6ZW9mKEFSTVdvcmQp
LCAyICogc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRj
aChpbml0aWFsUmlnaHRWYWx1ZSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIEp1bXAganVt
cCA9IGJyYW5jaDMyKGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIsIHRydWUpOwotICAgICAg
ICByZXR1cm4ganVtcDsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFi
ZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKG51bGxw
dHIpKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICBlbnN1cmVTcGFjZSgzICogc2l6ZW9mKEFSTVdvcmQpLCAyICogc2l6ZW9mKEFSTVdvcmQp
KTsKLSAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwg
YWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIEp1bXAganVtcCA9IGJyYW5jaDMyKGNvbmQs
IGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIHRydWUpOwotICAgICAgICBy
ZXR1cm4ganVtcDsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBU
cnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCi0gICAgewot
ICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGVuc3VyZVNw
YWNlKDMgKiBzaXplb2YoQVJNV29yZCksIDIgKiBzaXplb2YoQVJNV29yZCkpOwotICAgICAgICBk
YXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgSnVtcCBqdW1wID0gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBS
ZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBqdW1wOwot
ICAgIH0KLQotICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1tUHRy
IGluaXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBE
YXRhTGFiZWxQdHIgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsVmFsdWUsIGRhdGFU
ZW1wUmVnaXN0ZXIpOwotICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mp
OwotICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwotICAgIH0KLQotICAgIERhdGFMYWJlbFB0ciBz
dG9yZVB0cldpdGhQYXRjaChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAg
IHJldHVybiBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBhZGRyZXNz
KTsKLSAgICB9Ci0KLSAgICAvLyBGbG9hdGluZyBwb2ludCBvcGVyYXRvcnMKLSAgICBzdGF0aWMg
Ym9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHNfaXNW
RlBQcmVzZW50OwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2lu
dFRydW5jYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRTcXJ0KCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBzX2lzVkZQUHJlc2VudDsKLSAgICB9Ci0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9h
dGluZ1BvaW50QWJzKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLQotICAgIHZvaWQg
bG9hZEZsb2F0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6
TG9hZEZsb2F0LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0K
LSAgICB2b2lkIGxvYWRGbG9hdChCYXNlSW5kZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3Qp
Ci0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFSTUFz
c2VtYmxlcjo6TG9hZEZsb2F0LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0
YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0K
LSAgICB2b2lkIGxvYWREb3VibGUoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyRmxvYXQoQVJN
QXNzZW1ibGVyOjpMb2FkRG91YmxlLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWREb3VibGUoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVn
aXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNm
ZXJGbG9hdChBUk1Bc3NlbWJsZXI6OkxvYWREb3VibGUsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZz
ZXQpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZERvdWJsZShUcnVzdGVkSW1tUHRyIGFkZHJlc3Ms
IEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIocmVp
bnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fdmFsdWUpKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRvdWJsZUR0clVwKEFSTUFzc2VtYmxlcjo6TG9h
ZERvdWJsZSwgZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgMCk7Ci0gICAgfQotCi0gICAgTk9f
UkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGNlaWxEb3VibGUoRlBSZWdpc3RlcklELCBGUFJlZ2lz
dGVySUQpCi0gICAgewotICAgICAgICBBU1NFUlQoIXN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5k
aW5nKCkpOwotICAgICAgICBDUkFTSCgpOwotICAgIH0KLQotICAgIE5PX1JFVFVSTl9EVUVfVE9f
Q1JBU0ggdm9pZCBmbG9vckRvdWJsZShGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVCghc3VwcG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSk7Ci0gICAg
ICAgIENSQVNIKCk7Ci0gICAgfQotCi0gICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHJv
dW5kVG93YXJkWmVyb0RvdWJsZShGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVCghc3VwcG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSk7Ci0gICAgICAg
IENSQVNIKCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZUZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMs
IEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0
YVRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpTdG9yZUZsb2F0LCBzcmMsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVGbG9hdChGUFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmJhc2VJbmRleFRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpTdG9yZUZsb2F0LCBzcmMsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxl
KSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVEb3VibGUoRlBSZWdp
c3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBtX2Fz
c2VtYmxlci5kYXRhVHJhbnNmZXJGbG9hdChBUk1Bc3NlbWJsZXI6OlN0b3JlRG91YmxlLCBzcmMs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVE
b3VibGUoRlBSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCi0gICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6U3RvcmVE
b3VibGUsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+
KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9y
ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tUHRyIGFkZHJlc3MpCi0gICAgewot
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJl
c3MubV92YWx1ZSkpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
ZGF0YVRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpTdG9yZURvdWJsZSwgc3JjLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyLCAwKTsKLSAgICB9Ci0KLSAgICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3Rl
cklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBpZiAoc3JjICE9IGRl
c3QpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci52bW92X2Y2NChkZXN0LCBzcmMpOwotICAgIH0K
LQotICAgIHZvaWQgbW92ZVplcm9Ub0RvdWJsZShGUFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAg
ICAgICAgc3RhdGljIGRvdWJsZSB6ZXJvQ29uc3RhbnQgPSAwLjsKLSAgICAgICAgbG9hZERvdWJs
ZShUcnVzdGVkSW1tUHRyKCZ6ZXJvQ29uc3RhbnQpLCByZWcpOwotICAgIH0KLQotICAgIHZvaWQg
YWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIudmFkZF9mNjQoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZhZGRfZjY0KGRlc3Qs
IG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZERvdWJsZShBZGRyZXNzIHNyYywgRlBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVn
aXN0ZXIpOwotICAgICAgICBhZGREb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0K
LQotICAgIHZvaWQgYWRkRG91YmxlKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWREb3VibGUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
Lm1fcHRyKSwgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICBhZGREb3VibGUoZnBUZW1wUmVnaXN0
ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmRpdl9mNjQo
ZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lzdGVy
SUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLnZkaXZfZjY0KGRlc3QsIG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGRpdkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBVbnRlc3RlZAotICAgICAgICBs
b2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICBkaXZEb3VibGUoZnBUZW1w
UmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgc3ViRG91YmxlKEZQUmVnaXN0ZXJJ
RCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudnN1
Yl9mNjQoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YkRvdWJsZShGUFJl
Z2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZzdWJfZjY0KGRlc3QsIG9wMSwgb3AyKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHN1YkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAg
ewotICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICBzdWJE
b3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgbXVsRG91Ymxl
KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIudm11bF9mNjQoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIG11
bERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBs
b2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtdWxEb3VibGUoZnBUZW1w
UmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJ
RCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIudm11bF9mNjQoZGVzdCwgb3AxLCBvcDIpOwotICAgIH0KLQotICAgIHZv
aWQgc3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZzcXJ0X2Y2NChkZXN0LCBzcmMpOwotICAgIH0KLSAgICAK
LSAgICB2b2lkIGFic0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZhYnNfZjY0KGRlc3QsIHNyYyk7Ci0gICAgfQot
Ci0gICAgdm9pZCBuZWdhdGVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRl
c3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci52bmVnX2Y2NChkZXN0LCBzcmMpOwotICAg
IH0KLQotICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVn
aXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdl92ZnAzMihkZXN0
IDw8IDEsIHNyYyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfZjY0X3MzMihkZXN0LCBkZXN0
IDw8IDEpOwotICAgIH0KLQotICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoQWRkcmVzcyBz
cmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKHNyYywgZGF0YVRl
bXBSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKGRhdGFUZW1wUmVnaXN0
ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoQWJzb2x1
dGVBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQz
MihBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
Y29udmVydEludDMyVG9Eb3VibGUoZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7Ci0gICAgfQotCi0g
ICAgdm9pZCBjb252ZXJ0RmxvYXRUb0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVy
SUQgZHN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9mNjRfZjMyKGRzdCwgc3Jj
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbnZlcnREb3VibGVUb0Zsb2F0KEZQUmVnaXN0ZXJJRCBz
cmMsIEZQUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2Yz
Ml9mNjQoZHN0LCBzcmMpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoRG91YmxlKERvdWJsZUNv
bmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0KQotICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmNtcF9mNjQobGVmdCwgcmlnaHQpOwotICAgICAgICBt
X2Fzc2VtYmxlci52bXJzX2Fwc3IoKTsKLSAgICAgICAgaWYgKGNvbmQgJiBEb3VibGVDb25kaXRp
b25CaXRTcGVjaWFsKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wKGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIEFSTUFzc2VtYmxlcjo6VlMpOwotICAgICAgICBy
ZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoc3RhdGljX2Nhc3Q8QVJNQXNzZW1ibGVyOjpDb25k
aXRpb24+KGNvbmQgJiB+RG91YmxlQ29uZGl0aW9uTWFzaykpKTsKLSAgICB9Ci0KLSAgICAvLyBU
cnVuY2F0ZXMgJ3NyYycgdG8gYW4gaW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nICdk
ZXN0Jy4KLSAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgMzIg
Yml0IHZhbHVlLCBicmFuY2guCi0gICAgLy8gTWF5IGFsc28gYnJhbmNoIGZvciBzb21lIHZhbHVl
cyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJpdHMKLSAgICAvLyAoc3BlY2lmaWNhbGx5
LCBpbiB0aGlzIGNhc2UsIElOVF9NSU4pLgotICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsg
QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCwgQnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKLSAg
ICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVu
Y2F0ZUZhaWxlZCkKLSAgICB7Ci0gICAgICAgIHRydW5jYXRlRG91YmxlVG9JbnQzMihzcmMsIGRl
c3QpOwotCi0gICAgICAgIG1fYXNzZW1ibGVyLmFkZChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkZXN0
LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkpOwotICAgICAgICBtX2Fzc2VtYmxlci5iaWMo
YWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpn
ZXRPcDJCeXRlKDEpKTsKLQotICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9w
MigweDgwMDAwMDAwKTsKLSAgICAgICAgQVNTRVJUKHcgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlk
SW1tZWRpYXRlKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wKGFkZHJlc3NUZW1wUmVnaXN0ZXIs
IHcpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoYnJhbmNoVHlwZSA9PSBC
cmFuY2hJZlRydW5jYXRlRmFpbGVkID8gQVJNQXNzZW1ibGVyOjpFUSA6IEFSTUFzc2VtYmxlcjo6
TkUpKTsKLSAgICB9Ci0KLSAgICAvLyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSB2YWx1ZSBp
cyBvdXRzaWRlIG9mIHRoZSBpbnRlZ2VyIHJhbmdlLgotICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVU
b0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLnZjdnRfczMyX2Y2NChmcFRlbXBSZWdpc3RlciA8PCAxLCBzcmMpOwotICAg
ICAgICBtX2Fzc2VtYmxlci52bW92X2FybTMyKGRlc3QsIGZwVGVtcFJlZ2lzdGVyIDw8IDEpOwot
ICAgIH0KLQotICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3UzMl9m
NjQoZnBUZW1wUmVnaXN0ZXIgPDwgMSwgc3JjKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9h
cm0zMihkZXN0LCBmcFRlbXBSZWdpc3RlciA8PCAxKTsKLSAgICB9Ci0KLSAgICAvLyBDb252ZXJ0
ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCi0g
ICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1
ZSwgYnJhbmNoLgotICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBh
cmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCi0gICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhp
cyBjYXNlLCAwKS4KLSAgICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdp
c3RlcklELCBib29sIG5lZ1plcm9DaGVjayA9IHRydWUpCi0gICAgewotICAgICAgICBtX2Fzc2Vt
Ymxlci52Y3Z0X3MzMl9mNjQoZnBUZW1wUmVnaXN0ZXIgPDwgMSwgc3JjKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIudm1vdl9hcm0zMihkZXN0LCBmcFRlbXBSZWdpc3RlciA8PCAxKTsKLQotICAgICAg
ICAvLyBDb252ZXJ0IHRoZSBpbnRlZ2VyIHJlc3VsdCBiYWNrIHRvIGZsb2F0ICYgY29tcGFyZSB0
byB0aGUgb3JpZ2luYWwgdmFsdWUgLSBpZiBub3QgZXF1YWwgb3IgdW5vcmRlcmVkIChOYU4pIHRo
ZW4ganVtcC4KLSAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9mNjRfczMyKGZwVGVtcFJlZ2lzdGVy
LCBmcFRlbXBSZWdpc3RlciA8PCAxKTsKLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFu
Y2hEb3VibGUoRG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgc3JjLCBmcFRlbXBSZWdpc3Rlcikp
OwotCi0gICAgICAgIC8vIElmIHRoZSByZXN1bHQgaXMgemVybywgaXQgbWlnaHQgaGF2ZSBiZWVu
IC0wLjAsIGFuZCAwLjAgZXF1YWxzIHRvIC0wLjAKLSAgICAgICAgaWYgKG5lZ1plcm9DaGVjaykK
LSAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIGRlc3Qp
KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJl
ZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3Yo
YWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAg
ICAgY29udmVydEludDMyVG9Eb3VibGUoYWRkcmVzc1RlbXBSZWdpc3Rlciwgc2NyYXRjaCk7Ci0g
ICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWwsIHJlZywgc2NyYXRjaCk7
Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hEb3VibGVaZXJvT3JOYU4oRlBSZWdpc3RlcklEIHJl
ZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3Yo
YWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAg
ICAgY29udmVydEludDMyVG9Eb3VibGUoYWRkcmVzc1RlbXBSZWdpc3Rlciwgc2NyYXRjaCk7Ci0g
ICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlRXF1YWxPclVub3JkZXJlZCwgcmVnLCBz
Y3JhdGNoKTsKLSAgICB9Ci0KLSAgICAvLyBJbnZlcnQgYSByZWxhdGlvbmFsIGNvbmRpdGlvbiwg
ZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4KLSAgICBzdGF0aWMgUmVsYXRp
b25hbENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKChzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29uZCAmIDB4MGZmZmZmZmYpKSA9
PSAwICYmIHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb25kKSA8IHN0YXRpY19jYXN0PHVpbnQzMl90
PihBUk1Bc3NlbWJsZXI6OkFMKSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlv
bmFsQ29uZGl0aW9uPihjb25kIF4gMHgxMDAwMDAwMCk7Ci0gICAgfQotCi0gICAgdm9pZCBub3Ao
KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Ci0gICAgfQotCi0gICAgdm9pZCBt
ZW1vcnlGZW5jZSgpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kbWJTWSgpOwotICAgIH0K
LQotICAgIHZvaWQgc3RvcmVGZW5jZSgpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kbWJJ
U0hTVCgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPFB0clRhZyByZXN1bHRUYWcsIFB0clRhZyBs
b2NhdGlvblRhZz4KLSAgICBzdGF0aWMgRnVuY3Rpb25QdHI8cmVzdWx0VGFnPiByZWFkQ2FsbFRh
cmdldChDb2RlTG9jYXRpb25DYWxsPGxvY2F0aW9uVGFnPiBjYWxsKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIEZ1bmN0aW9uUHRyPHJlc3VsdFRhZz4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+
KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgc3RhcnRUYWcsIFB0clRhZyBkZXN0VGFnPgotICAg
IHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbDxzdGFydFRhZz4g
aW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWw8ZGVzdFRhZz4gZGVzdGluYXRpb24p
Ci0gICAgewotICAgICAgICBBUk1Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlv
blN0YXJ0LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7Ci0gICAg
fQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCi0g
ICAgewotICAgICAgICByZXR1cm4gQVJNQXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXpl
KCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCi0g
ICAgewotICAgICAgICByZXR1cm4gQVJNQXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOwot
ICAgIH0KLQotICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRy
V2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVw
bGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAg
IHRlbXBsYXRlPFB0clRhZyB0YWc+Ci0gICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsPHRhZz4g
c3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRh
dGFMYWJlbDMyPHRhZz4pCi0gICAgewotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0o
KTsKLSAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsPHRhZz4oKTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbDx0YWc+
IHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9u
RGF0YUxhYmVsUHRyPHRhZz4pCi0gICAgewotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKLSAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsPHRhZz4oKTsKLSAgICB9Ci0K
LSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbDx0
YWc+IHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFM
YWJlbFB0cjx0YWc+IGxhYmVsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGxhYmVsLmxhYmVsQXRP
ZmZzZXQoMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KLSAgICBzdGF0aWMg
dm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRp
b25MYWJlbDx0YWc+IGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmVnLCB2b2lkKiBpbml0
aWFsVmFsdWUpCi0gICAgewotICAgICAgICBBUk1Bc3NlbWJsZXI6OnJldmVydEJyYW5jaFB0cldp
dGhQYXRjaChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCByZWcsIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pihpbml0aWFsVmFsdWUpICYgMHhmZmZmKTsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVu
dFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWw8dGFnPiwgQWRk
cmVzcywgaW50MzJfdCkKLSAgICB7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OwotICAgIH0KLQotICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+Ci0gICAgc3RhdGljIHZvaWQgcmV2
ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0
aW9uTGFiZWw8dGFnPiwgQWRkcmVzcywgdm9pZCopCi0gICAgewotICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgY2FsbFRhZywg
UHRyVGFnIGRlc3RUYWc+Ci0gICAgc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0aW9u
Q2FsbDxjYWxsVGFnPiBjYWxsLCBDb2RlTG9jYXRpb25MYWJlbDxkZXN0VGFnPiBkZXN0aW5hdGlv
bikKLSAgICB7Ci0gICAgICAgIEFSTUFzc2VtYmxlcjo6cmVsaW5rQ2FsbChjYWxsLmRhdGFMb2Nh
dGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZTxQdHJUYWcgY2FsbFRhZywgUHRyVGFnIGRlc3RUYWc+Ci0gICAgc3RhdGljIHZvaWQg
cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxjYWxsVGFnPiBjYWxsLCBGdW5jdGlvblB0cjxk
ZXN0VGFnPiBkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAgICAgIEFSTUFzc2VtYmxlcjo6cmVsaW5r
Q2FsbChjYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygp
KTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1D
b25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEFSTUFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKTsKLSAgICB9Ci0KLSAg
ICBBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVzdWx0Q29uZGl0aW9uIGNv
bmQpCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QVJNQXNzZW1ibGVyOjpDb25k
aXRpb24+KGNvbmQpOwotICAgIH0KLQotICAgIHZvaWQgZW5zdXJlU3BhY2UoaW50IGluc25TcGFj
ZSwgaW50IGNvbnN0U3BhY2UpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5lbnN1cmVTcGFj
ZShpbnNuU3BhY2UsIGNvbnN0U3BhY2UpOwotICAgIH0KLQotICAgIGludCBzaXplT2ZDb25zdGFu
dFBvb2woKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXNzZW1ibGVyLnNpemVPZkNvbnN0YW50
UG9vbCgpOwotICAgIH0KLQotICAgIHZvaWQgY2FsbDMyKFJlZ2lzdGVySUQgYmFzZSwgaW50MzJf
dCBvZmZzZXQpCi0gICAgewotICAgICAgICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBvZmZzZXQpLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmx4KGRhdGFUZW1wUmVnaXN0
ZXIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKLQot
ICAgIHZvaWQgaW50ZXJuYWxDb21wYXJlMzIoUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQpCi0gICAgewotICAgICAgICBBUk1Xb3JkIHRtcCA9ICghcmlnaHQubV92YWx1ZSB8fCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocmlnaHQubV92YWx1ZSkgPT0gMHg4MDAwMDAwMCkgPyBBUk1B
c3NlbWJsZXI6OkludmFsaWRJbW1lZGlhdGUgOiBtX2Fzc2VtYmxlci5nZXRPcDIoLXJpZ2h0Lm1f
dmFsdWUpOwotICAgICAgICBpZiAodG1wICE9IEFSTUFzc2VtYmxlcjo6SW52YWxpZEltbWVkaWF0
ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtbihsZWZ0LCB0bXApOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXAobGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJp
Z2h0Lm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGlu
dGVybmFsQ29tcGFyZTMyKEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQotICAgIHsK
LSAgICAgICAgQVJNV29yZCB0bXAgPSAoIXJpZ2h0Lm1fdmFsdWUgfHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHJpZ2h0Lm1fdmFsdWUpID09IDB4ODAwMDAwMDApID8gQVJNQXNzZW1ibGVyOjpJbnZh
bGlkSW1tZWRpYXRlIDogbV9hc3NlbWJsZXIuZ2V0T3AyKC1yaWdodC5tX3ZhbHVlKTsKLSAgICAg
ICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBpZiAodG1wICE9IEFS
TUFzc2VtYmxlcjo6SW52YWxpZEltbWVkaWF0ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNt
bihkYXRhVGVtcFJlZ2lzdGVyLCB0bXApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5jbXAoZGF0YVRlbXBSZWdpc3RlciwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1f
dmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJU
YWcgdGFnPgotICAgIHN0YXRpYyB2b2lkIGxpbmtDYWxsKHZvaWQqIGNvZGUsIENhbGwgY2FsbCwg
RnVuY3Rpb25QdHI8dGFnPiBmdW5jdGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChjYWxsLmlzRmxh
Z1NldChDYWxsOjpUYWlsKSkKLSAgICAgICAgICAgIEFSTUFzc2VtYmxlcjo6bGlua0p1bXAoY29k
ZSwgY2FsbC5tX2xhYmVsLCBmdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgQVJNQXNzZW1ibGVyOjpsaW5rQ2FsbChjb2RlLCBjYWxsLm1fbGFi
ZWwsIGZ1bmN0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBj
b25zdCBib29sIHNfaXNWRlBQcmVzZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNl
bmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgKaW5kZXggNGVlNmVl
YThlNzNiOTEyYmFlNmFkZTAwYzliYjhiM2Q4MmE4MTIwYy4uN2Y1MTkxZDUwYmZlMTRmNzVkYmIw
NWQ4MmZiZDlmYjE4YTgwZjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Qcm9iZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlQ29udGV4dC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgaW5saW5lIHZvaWQqJiBDUFVT
dGF0ZTo6cGMoKQogICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZzcHIoWDg2
UmVnaXN0ZXJzOjplaXApKTsKICNlbGlmIENQVShBUk02NCkKICAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmc3ByKEFSTTY0UmVnaXN0ZXJzOjpwYykpOwotI2VsaWYgQ1BVKEFS
TV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCisjZWxpZiBDUFUoQVJNX1RIVU1CMikK
ICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKEFSTVJlZ2lzdGVyczo6
cGMpKTsKICNlbGlmIENQVShNSVBTKQogICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kio+KCZzcHIoTUlQU1JlZ2lzdGVyczo6cGMpKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBpbmxpbmUg
dm9pZComIENQVVN0YXRlOjpmcCgpCiAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQq
Kj4oJmdwcihYODZSZWdpc3RlcnM6OmVicCkpOwogI2VsaWYgQ1BVKEFSTTY0KQogICAgIHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNNjRSZWdpc3RlcnM6OmZwKSk7Ci0j
ZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyNlbGlmIENQVShB
Uk1fVEhVTUIyKQogICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJN
UmVnaXN0ZXJzOjpmcCkpOwogI2VsaWYgQ1BVKE1JUFMpCiAgICAgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PHZvaWQqKj4oJmdwcihNSVBTUmVnaXN0ZXJzOjpmcCkpOwpAQCAtMTQyLDcgKzE0Miw3
IEBAIGlubGluZSB2b2lkKiYgQ1BVU3RhdGU6OnNwKCkKICAgICByZXR1cm4gKnJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCoqPigmZ3ByKFg4NlJlZ2lzdGVyczo6ZXNwKSk7CiAjZWxpZiBDUFUoQVJNNjQp
CiAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihBUk02NFJlZ2lzdGVy
czo6c3ApKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKQor
I2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQq
Kj4oJmdwcihBUk1SZWdpc3RlcnM6OnNwKSk7CiAjZWxpZiBDUFUoTUlQUykKICAgICByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKE1JUFNSZWdpc3RlcnM6OnNwKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCmluZGV4IDFkNzdkODA4
YmMwYTFmMDljMWJlMTI4MDBjOTQxOWFhNzFhNmFlYmQuLjNlNzU1NzRiMjFkMGUwZDcyZmU4Yzg3
YTY1ZDU2NzI4ZTU0ODI0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
dGVzdG1hc20uY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBu
ZXh0SUQoVCBpZCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oaWQgKyAxKTsgfQogI2lmIEVOQUJM
RShNQVNNX1BST0JFKQogYm9vbCBpc1BDKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGlkKQog
ewotI2lmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKQorI2lmIENQVShB
Uk1fVEhVTUIyKQogICAgIHJldHVybiBpZCA9PSBBUk1SZWdpc3RlcnM6OnBjOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oaWQpOwpAQCAtNTczLDcgKzU3Myw3IEBAIHZvaWQgdGVzdFByb2JlTW9k
aWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBj
b21wdXRlCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICBhdXRvIGZsYWdzU1BSID0g
WDg2UmVnaXN0ZXJzOjplZmxhZ3M7CiAgICAgdWludHB0cl90IGZsYWdzTWFzayA9IDB4YzU7Ci0j
ZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyNlbGlmIENQVShB
Uk1fVEhVTUIyKQogICAgIGF1dG8gZmxhZ3NTUFIgPSBBUk1SZWdpc3RlcnM6OmFwc3I7CiAgICAg
dWludHB0cl90IGZsYWdzTWFzayA9IDB4ZjgwMDAwMDA7CiAjZWxpZiBDUFUoQVJNNjQpCkBAIC03
NTMsNyArNzUzLDcgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNrVmFsdWVzKCkKICNpZiBD
UFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAgIE1hY3JvQXNzZW1ibGVyOjpTUFJlZ2lzdGVySUQg
ZmxhZ3NTUFIgPSBYODZSZWdpc3RlcnM6OmVmbGFnczsKICAgICB1aW50cHRyX3QgZmxhZ3NNYXNr
ID0gMHhjNTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKQor
I2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgTWFjcm9Bc3NlbWJsZXI6OlNQUmVnaXN0ZXJJRCBm
bGFnc1NQUiA9IEFSTVJlZ2lzdGVyczo6YXBzcjsKICAgICB1aW50cHRyX3QgZmxhZ3NNYXNrID0g
MHhmODAwMDAwMDsKICNlbGlmIENQVShBUk02NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kaXNhc3NlbWJsZXIvQ2Fwc3RvbmVEaXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxlci5jcHAKaW5kZXgg
YTZmZjIyNzEwZjA5OWU4N2QxOWNmY2QyMTU4MDI3YmZiYjVlYWE4MS4uNjhkZDY0Y2I3ODQ5NTU4
ZGYzZDMwMjE0OWUwNmJkMDAyZjdhODQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Rpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxlci5jcHAKQEAgLTQ0
LDkgKzQ0LDYgQEAgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVQdHIsIHMKICNlbGlmIENQVShYODZfNjQpCiAg
ICAgaWYgKGNzX29wZW4oQ1NfQVJDSF9YODYsIENTX01PREVfNjQsICZoYW5kbGUpICE9IENTX0VS
Ul9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkK
LSAgICBpZiAoY3Nfb3BlbihDU19BUkNIX0FSTSwgQ1NfTU9ERV9BUk0sICZoYW5kbGUpICE9IENT
X0VSUl9PSykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAg
ICAgaWYgKGNzX29wZW4oQ1NfQVJDSF9BUk0sIENTX01PREVfVEhVTUIsICZoYW5kbGUpICE9IENT
X0VSUl9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKaW5kZXggOTVjY2NmYjM0ZDYzMDhmNTll
MjAyNzllNzY0MmI3YmI5M2QzNDBkMS4uYTIyYzQwZDExMzMzM2ViNTQ0YjllMjc1ZmQ5MjI0MzNh
YjA5OWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJl
dHVyblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwCkBAIC04NSwxNyArODUsNiBAQCBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICI6IiAiXG4iCiAgICAgImIgIiBMT0NBTF9SRUZFUkVOQ0UoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKICk7CiAKLSNlbGlmIENPTVBJTEVSKEdD
Q19DT01QQVRJQkxFKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQotYXNtICgKLSIudGV4dCIgIlxu
IgotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgot
SElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSU5MSU5FX0FSTV9GVU5D
VElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKQotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJzdWIgcjAsIHNwLCAjOCIgIlxuIgotICAgICJiICIg
TE9DQUxfUkVGRVJFTkNFKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4i
Ci0pOwotCiAjZWxpZiBDUFUoQVJNNjQpCiBhc20gKAogIi50ZXh0IiAiXG4iCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRNYXRoSUMuaAppbmRleCA2ZTc4NTlkNTI2ZjAwZGJmZGRlZTFiNjk4NWY4
MWQzNjA2MjExOTVlLi5jODg3NmQwZGI4NjI3OTU5NmFkYmZiMjY5YzJlMTBmZGQ0MjNhZmVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKQEAgLTY4LDEzICs2OCw2IEBAIGNs
YXNzIEpJVE1hdGhJQyB7CiAKICAgICBib29sIGdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYg
aml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBib29sIHNob3VsZEVtaXRQcm9maWxp
bmcgPSB0cnVlKQogICAgIHsKLSNpZiBDUFUoQVJNX1RSQURJVElPTkFMKQotICAgICAgICAvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIHRoZSBwcm9wZXIgZml4ZXMgYXJlIGxh
bmRlZC4KLSAgICAgICAgLy8gW0FSTV0gRGlzYWJsZSBJbmxpbmUgQ2FjaGluZyBvbiBBUk12NyB0
cmFkaXRpb25hbCB1bnRpbCBwcm9wZXIgZml4Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk3NTkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2Vu
ZGlmCi0KICAgICAgICAgc3RhdGUuZmFzdFBhdGhTdGFydCA9IGppdC5sYWJlbCgpOwogICAgICAg
ICBzaXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKaW5kZXggYTNlZTc0
NzM3ZGE3M2JkZTJmNWFkYTcyZmZlM2ZlOWY0MTgxMDY5My4uYzUwMDlkMjMxMWYwMmQyMzE0Njk2
YTNiNjZlNzg3YWUyOWUxYzk0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZWdpc3RlclNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3Rl
clNldC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OnJlc2Vy
dmVkSGFyZHdhcmVSZWdpc3RlcnMoKQogI2Vsc2UKICAgICByZXR1cm4gUmVnaXN0ZXJTZXQoQVJN
NjRSZWdpc3RlcnM6OmxyKTsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQotI2VsaWYg
Q1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCisjZWxpZiBDUFUoQVJNX1RI
VU1CMikKICAgICByZXR1cm4gUmVnaXN0ZXJTZXQoQVJNUmVnaXN0ZXJzOjpsciwgQVJNUmVnaXN0
ZXJzOjpwYyk7CiAjZWxzZQogICAgIHJldHVybiB7IH07CkBAIC0xMzcsMTUgKzEzNyw2IEBAIFJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkKICNlbmRpZgogICAg
IHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyMTApOwogICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0
ZXJzOjpyMTEpOwotI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAgICByZXN1bHQuc2V0KEFS
TVJlZ2lzdGVyczo6cjQpOwotICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyNSk7Ci0gICAg
cmVzdWx0LnNldChBUk1SZWdpc3RlcnM6OnI2KTsKLSAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVy
czo6cjcpOwotICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyOCk7Ci0gICAgcmVzdWx0LnNl
dChBUk1SZWdpc3RlcnM6OnI5KTsKLSAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjEwKTsK
LSAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjExKTsKICNlbGlmIENQVShBUk02NCkKICAg
ICAvLyBXZSBkb24ndCBpbmNsdWRlIExSIGluIHRoZSBzZXQgb2YgY2FsbGVlLXNhdmUgcmVnaXN0
ZXJzIGV2ZW4gdGhvdWdoIGl0IHRlY2huaWNhbGx5IGJlbG9uZ3MKICAgICAvLyB0aGVyZS4gVGhp
cyBpcyBiZWNhdXNlIHdlIHVzZSB0aGlzIHNldCB0byBkZXNjcmliZSB0aGUgc2V0IG9mIHJlZ2lz
dGVycyB0aGF0IG5lZWQgdG8gYmUgc2F2ZWQKQEAgLTIzNyw3ICsyMjgsNiBAQCBSZWdpc3RlclNl
dCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKQogI2VuZGlm
CiAjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7
Ci0jZWxpZiBDUFUoQVJNX1RSQURJVElPTkFMKQogI2VsaWYgQ1BVKEFSTTY0KQogICAgIHJlc3Vs
dC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNyk7
CkBAIC0yNzQsNyArMjY0LDYgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNh
dmVSZWdpc3RlcnMoKQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKICNlbmRpZgog
I2VsaWYgQ1BVKEFSTV9USFVNQjIpCi0jZWxpZiBDUFUoQVJNX1RSQURJVElPTkFMKQogI2VsaWYg
Q1BVKEFSTTY0KQogICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyKTsKICAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86
OnRhZ01hc2tSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRl
eCA2Njg2ZGYwMTE3YjBlNWZkN2RiMWUwMDg2MDY5YjEzYjc2YTRlYzg1Li43MzExYTZkNTYzMzg5
NWQxMjZjYTE0NDYzYzcxM2RkY2E3MDRhMmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKQEAgLTEzMCwxNCArMTMwLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIGFj
dGlvbkZvckNlbGwoVk0mIHZtLCBKU0NlbGwqIGNlbGwpCiAKIHN0YXRpYyBib29sIGZvcmNlSUNG
YWlsdXJlKEV4ZWNTdGF0ZSopCiB7Ci0jaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAgICAvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIHRoZSBwcm9wZXIgZml4ZXMgYXJlIGxh
bmRlZC4KLSAgICAvLyBbQVJNXSBEaXNhYmxlIElubGluZSBDYWNoaW5nIG9uIEFSTXY3IHRyYWRp
dGlvbmFsIHVudGlsIHByb3BlciBmaXgKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU5NzU5Ci0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQogICAgIHJldHVy
biBPcHRpb25zOjpmb3JjZUlDRmFpbHVyZSgpOwotI2VuZGlmCiB9CiAKIEFMV0FZU19JTkxJTkUg
c3RhdGljIHZvaWQgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQoVk0mIHZtLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVCbG9jayogY29kZUJsb2NrLCBBY2Nlc3NH
ZW5lcmF0aW9uUmVzdWx0JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggNmI5Yjc5ODc2ZWNlYTY1NmM0MmE2
NTk1NjRlYTU0ODA4MjcwMDNkZS4uMjg0ODVhOTVjMGE0NDU0MmZiNGVjZjRlNDlhNTIwMzc0ZDc1
ZWIxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGlu
ZUFzbUNvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxp
bmVBc21Db25maWcuaApAQCAtMzQsOSArMzQsNyBAQAogI2RlZmluZSBPRkZMSU5FX0FTTV9DX0xP
T1AgMQogI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMAogI2RlZmluZSBPRkZMSU5FX0FTTV9YODZf
V0lOIDAKLSNkZWZpbmUgT0ZGTElORV9BU01fQVJNIDAKICNkZWZpbmUgT0ZGTElORV9BU01fQVJN
djcgMAotI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12N19UUkFESVRJT05BTCAwCiAjZGVmaW5lIE9G
RkxJTkVfQVNNX0FSTTY0IDAKICNkZWZpbmUgT0ZGTElORV9BU01fQVJNNjRFIDAKICNkZWZpbmUg
T0ZGTElORV9BU01fWDg2XzY0IDAKQEAgLTc5LDE5ICs3Nyw2IEBACiAjZGVmaW5lIE9GRkxJTkVf
QVNNX0FSTXY3IDAKICNlbmRpZgogCi0jaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSNpZiBXVEZf
QVJNX0FSQ0hfQVRfTEVBU1QoNykKLSNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjdfVFJBRElUSU9O
QUwgMQotI2RlZmluZSBPRkZMSU5FX0FTTV9BUk0gMAotI2Vsc2UKLSNkZWZpbmUgT0ZGTElORV9B
U01fQVJNIDEKLSNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjdfVFJBRElUSU9OQUwgMAotI2VuZGlm
Ci0jZWxzZQotI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12N19UUkFESVRJT05BTCAwCi0jZGVmaW5l
IE9GRkxJTkVfQVNNX0FSTSAwCi0jZW5kaWYKLQogI2lmIENQVShYODZfNjQpICYmICFDT01QSUxF
UihNU1ZDKQogI2RlZmluZSBPRkZMSU5FX0FTTV9YODZfNjQgMQogI2Vsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA0
MTZmM2JhNzNhOGU0YWY2MGNhZmUxMGYxMmNhZmUzZDZmMmYyMmUxLi40M2Q1ZjczZDA2OGY5Zjc1
MmJmY2M1OTUyMTNkOTkyNDM5Yzk3NmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC03MSwxMSArNzEsMTAgQEAKICMg
IFRoZXkgYXJlIGNhbGxlZS1zYXZlIHJlZ2lzdGVycywgYW5kIGd1YXJhbnRlZWQgdG8gYmUgZGlz
dGluY3QgZnJvbSBhbGwgb3RoZXIKICMgIHJlZ2lzdGVycyBvbiBhbGwgYXJjaGl0ZWN0dXJlcy4K
ICMKLSMgIC0gbHIgaXMgZGVmaW5lZCBvbiBub24tWDg2IGFyY2hpdGVjdHVyZXMgKEFSTTY0LCBB
Uk02NEUsIEFSTXY3LCBBUk0sCi0jICBBUk12N19UUkFESVRJT05BTCwgTUlQUyBhbmQgQ0xPT1Ap
IGFuZCBob2xkcyB0aGUgcmV0dXJuIFBDCisjICAtIGxyIGlzIGRlZmluZWQgb24gbm9uLVg4NiBh
cmNoaXRlY3R1cmVzIChBUk02NCwgQVJNNjRFLCBBUk12NywgTUlQUyBhbmQgQ0xPT1ApCisjICBh
bmQgaG9sZHMgdGhlIHJldHVybiBQQwogIwotIyAgLSBwYyBob2xkcyB0aGUgKG5hdGl2ZSkgcHJv
Z3JhbSBjb3VudGVyIG9uIDMyLWJpdHMgQVJNIGFyY2hpdGVjdHVyZXMgKEFSTSwKLSMgIEFSTXY3
LCBBUk12N19UUkFESVRJT05BTCkKKyMgIC0gcGMgaG9sZHMgdGhlIChuYXRpdmUpIHByb2dyYW0g
Y291bnRlciBvbiAzMi1iaXRzIEFSTSBhcmNoaXRlY3R1cmVzIChBUk12NykKICMKICMgIC0gdDAs
IHQxLCB0MiwgdDMsIHQ0IGFuZCBvcHRpb25hbGx5IHQ1IGFyZSB0ZW1wb3JhcnkgcmVnaXN0ZXJz
IHRoYXQgY2FuIGdldCB0cmFzaGVkIG9uCiAjICBjYWxscywgYW5kIGFyZSBwYWlyd2lzZSBkaXN0
aW5jdCByZWdpc3RlcnMuIHQ0IGhvbGRzIHRoZSBKUyBwcm9ncmFtIGNvdW50ZXIsIHNvIHVzZQpA
QCAtNjA4LDcgKzYwNyw3IEBAIG1hY3JvIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHRlbXBS
ZWcsIGxvY2F0aW9uKQogICAgICAgICAgICAgIyBDX0xPT1AgZG9lcyBub3QgbmVlZCB0aGUgYWxp
Z25tZW50LCBhbmQgY2FuIHVzZSBhIGxpdHRsZSBwZXJmCiAgICAgICAgICAgICAjIGltcHJvdmVt
ZW50IGZyb20gYXZvaWRpbmcgdXNlbGVzcyB3b3JrLgogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwKKyAgICAgICAgICAgIGlmIEFS
TXY3CiAgICAgICAgICAgICAgICAgIyBBUk0gY2FuJ3QgZG8gbG9naWNhbCBvcHMgd2l0aCB0aGUg
c3AgYXMgYSBzb3VyY2UKICAgICAgICAgICAgICAgICBtb3ZlIHNwLCB0ZW1wUmVnCiAgICAgICAg
ICAgICAgICAgYW5kcCBTdGFja0FsaWdubWVudE1hc2ssIHRlbXBSZWcKQEAgLTYyNSw3ICs2MjQs
NyBAQCBlbmQKIAogaWYgQ19MT09QIG9yIEFSTTY0IG9yIEFSTTY0RSBvciBYODZfNjQgb3IgWDg2
XzY0X1dJTgogICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50ID0gMAotZWxzaWYgQVJN
IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIEFSTXY3CitlbHNpZiBBUk12NwogICAgIGNvbnN0IENh
bGxlZVNhdmVSZWdpc3RlckNvdW50ID0gNwogZWxzaWYgTUlQUwogICAgIGNvbnN0IENhbGxlZVNh
dmVSZWdpc3RlckNvdW50ID0gMQpAQCAtNjQxLDggKzY0MCw2IEBAIGNvbnN0IFZNRW50cnlUb3Rh
bEZyYW1lU2l6ZSA9IChDYWxsZWVSZWdpc3RlclNhdmVTaXplICsgc2l6ZW9mIFZNRW50cnlSZWNv
cmQgKyBTCiAKIG1hY3JvIHB1c2hDYWxsZWVTYXZlcygpCiAgICAgaWYgQ19MT09QIG9yIEFSTTY0
IG9yIEFSTTY0RSBvciBYODZfNjQgb3IgWDg2XzY0X1dJTgotICAgIGVsc2lmIEFSTSBvciBBUk12
N19UUkFESVRJT05BTAotICAgICAgICBlbWl0ICJwdXNoIHtyNC1yMTB9IgogICAgIGVsc2lmIEFS
TXY3CiAgICAgICAgIGVtaXQgInB1c2gge3I0LXI2LCByOC1yMTF9IgogICAgIGVsc2lmIE1JUFMK
QEAgLTY2Myw4ICs2NjAsNiBAQCBlbmQKIAogbWFjcm8gcG9wQ2FsbGVlU2F2ZXMoKQogICAgIGlm
IENfTE9PUCBvciBBUk02NCBvciBBUk02NEUgb3IgWDg2XzY0IG9yIFg4Nl82NF9XSU4KLSAgICBl
bHNpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwKLSAgICAgICAgZW1pdCAicG9wIHtyNC1yMTB9
IgogICAgIGVsc2lmIEFSTXY3CiAgICAgICAgIGVtaXQgInBvcCB7cjQtcjYsIHI4LXIxMX0iCiAg
ICAgZWxzaWYgTUlQUwpAQCAtNjgyLDcgKzY3Nyw3IEBAIG1hY3JvIHBvcENhbGxlZVNhdmVzKCkK
IGVuZAogCiBtYWNybyBwcmVzZXJ2ZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICBpZiBDX0xPT1Agb3Ig
QVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMKKyAgICBpZiBDX0xPT1Ag
b3IgQVJNdjcgb3IgTUlQUwogICAgICAgICBwdXNoIGxyCiAgICAgICAgIHB1c2ggY2ZyCiAgICAg
ZWxzaWYgWDg2IG9yIFg4Nl9XSU4gb3IgWDg2XzY0IG9yIFg4Nl82NF9XSU4KQEAgLTY5Nyw3ICs2
OTIsNyBAQCBlbmQKIAogbWFjcm8gcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKICAgICBtb3ZlIGNm
ciwgc3AKLSAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFM
IG9yIE1JUFMKKyAgICBpZiBDX0xPT1Agb3IgQVJNdjcgb3IgTUlQUwogICAgICAgICBwb3AgY2Zy
CiAgICAgICAgIHBvcCBscgogICAgIGVsc2lmIFg4NiBvciBYODZfV0lOIG9yIFg4Nl82NCBvciBY
ODZfNjRfV0lOCkBAIC03MTEsNyArNzA2LDYgQEAgbWFjcm8gcHJlc2VydmVDYWxsZWVTYXZlc1Vz
ZWRCeUxMSW50KCkKICAgICBzdWJwIENhbGxlZVNhdmVTcGFjZVN0YWNrQWxpZ25lZCwgc3AKICAg
ICBpZiBDX0xPT1AKICAgICAgICAgc3RvcmVwIG1ldGFkYXRhVGFibGUsIC1QdHJTaXplW2Nmcl0K
LSAgICBlbHNpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwKICAgICBlbHNpZiBBUk12NwogICAg
ICAgICBzdG9yZXAgbWV0YWRhdGFUYWJsZSwgLTRbY2ZyXQogICAgIGVsc2lmIEFSTTY0IG9yIEFS
TTY0RQpAQCAtNzM2LDcgKzczMCw2IEBAIGVuZAogbWFjcm8gcmVzdG9yZUNhbGxlZVNhdmVzVXNl
ZEJ5TExJbnQoKQogICAgIGlmIENfTE9PUAogICAgICAgICBsb2FkcCAtUHRyU2l6ZVtjZnJdLCBt
ZXRhZGF0YVRhYmxlCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3X1RSQURJVElPTkFMCiAgICAgZWxz
aWYgQVJNdjcKICAgICAgICAgbG9hZHAgLTRbY2ZyXSwgbWV0YWRhdGFUYWJsZQogICAgIGVsc2lm
IEFSTTY0IG9yIEFSTTY0RQpAQCAtODQzLDcgKzgzNiw3IEBAIG1hY3JvIHJlc3RvcmVDYWxsZWVT
YXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSwgdGVtcCkKIGVuZAogCiBt
YWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikK
LSAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIEFS
TTY0IG9yIEFSTTY0RSBvciBNSVBTCisgICAgaWYgQ19MT09QIG9yIEFSTXY3IG9yIEFSTTY0IG9y
IEFSTTY0RSBvciBNSVBTCiAgICAgICAgICMgSW4gQ19MT09QIGNhc2UsIHdlJ3JlIG9ubHkgcHJl
c2VydmluZyB0aGUgYnl0ZWNvZGUgdlBDLgogICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJl
Z2lzdGVyCiAgICAgZWxzaWYgWDg2IG9yIFg4Nl9XSU4gb3IgWDg2XzY0IG9yIFg4Nl82NF9XSU4K
QEAgLTg2Niw3ICs4NTksNyBAQCBtYWNybyBmdW5jdGlvblByb2xvZ3VlKCkKICAgICAgICAgcHVz
aCBjZnIKICAgICBlbHNpZiBBUk02NCBvciBBUk02NEUKICAgICAgICAgcHVzaCBjZnIsIGxyCi0g
ICAgZWxzaWYgQ19MT09QIG9yIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBN
SVBTCisgICAgZWxzaWYgQ19MT09QIG9yIEFSTXY3IG9yIE1JUFMKICAgICAgICAgcHVzaCBscgog
ICAgICAgICBwdXNoIGNmcgogICAgIGVuZApAQCAtODc4LDcgKzg3MSw3IEBAIG1hY3JvIGZ1bmN0
aW9uRXBpbG9ndWUoKQogICAgICAgICBwb3AgY2ZyCiAgICAgZWxzaWYgQVJNNjQgb3IgQVJNNjRF
CiAgICAgICAgIHBvcCBsciwgY2ZyCi0gICAgZWxzaWYgQ19MT09QIG9yIEFSTSBvciBBUk12NyBv
ciBBUk12N19UUkFESVRJT05BTCBvciBNSVBTCisgICAgZWxzaWYgQ19MT09QIG9yIEFSTXY3IG9y
IE1JUFMKICAgICAgICAgcG9wIGNmcgogICAgICAgICBwb3AgbHIKICAgICBlbmQKQEAgLTk1MCw3
ICs5NDMsNyBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIs
IHRlbXAzLCBjYWxsUHRyVGFnKQogICAgIGFkZGkgU3RhY2tBbGlnbm1lbnQgLSAxICsgQ2FsbEZy
YW1lSGVhZGVyU2l6ZSwgdGVtcDIKICAgICBhbmRpIH5TdGFja0FsaWdubWVudE1hc2ssIHRlbXAy
CiAKLSAgICBpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgQVJNdjcgb3IgQVJNNjQgb3Ig
QVJNNjRFIG9yIENfTE9PUCBvciBNSVBTCisgICAgaWYgQVJNdjcgb3IgQVJNNjQgb3IgQVJNNjRF
IG9yIENfTE9PUCBvciBNSVBTCiAgICAgICAgIGFkZHAgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNw
CiAgICAgICAgIHN1YmkgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHRlbXAyCiAgICAgICAgIGxvYWRw
IENhbGxlckZyYW1lQW5kUEM6OnJldHVyblBDW2Nmcl0sIGxyCkBAIC0xMTA5LDcgKzExMDIsNyBA
QCBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xv
d1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAgICAgIGlmIEFSTTY0IG9yIEFSTTY0RQogICAgICAg
ICAgICAgcG9wIGxyLCBjZnIKICAgICAgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyBzcAotICAg
ICAgICBlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUworICAg
ICAgICBlbHNpZiBBUk12NyBvciBNSVBTCiAgICAgICAgICAgICBwb3AgY2ZyCiAgICAgICAgICAg
ICBwb3AgbHIKICAgICAgICAgZWxzZQpAQCAtMTMyMiwxMCArMTMxNSw2IEBAIGVsc2UKICAgICAg
ICAgX3JlbGF0aXZlUENCYXNlOgogICAgICAgICAgICAgbW92ZSBwYywgcGNCYXNlCiAgICAgICAg
ICAgICBzdWJwIDMsIHBjQmFzZSAgICMgTmVlZCB0byBiYWNrIHVwIHRoZSBQQyBhbmQgc2V0IHRo
ZSBUaHVtYjIgYml0Ci0gICAgICAgIGVsc2lmIEFSTSBvciBBUk12N19UUkFESVRJT05BTAotICAg
ICAgICBfcmVsYXRpdmVQQ0Jhc2U6Ci0gICAgICAgICAgICBtb3ZlIHBjLCBwY0Jhc2UKLSAgICAg
ICAgICAgIHN1YnAgOCwgcGNCYXNlCiAgICAgICAgIGVsc2lmIE1JUFMKICAgICAgICAgICAgIGxh
IF9yZWxhdGl2ZVBDQmFzZSwgcGNCYXNlCiAgICAgICAgICAgICBzZXRjYWxscmVnIHBjQmFzZSAj
IG5lZWRlZCB0byBzZXQgJHQ5IHRvIHRoZSByaWdodCB2YWx1ZSBmb3IgdGhlIC5jcGxvYWQgY3Jl
YXRlZCBieSB0aGUgbGFiZWwuCkBAIC0xMzU2LDcgKzEzNDUsNyBAQCBtYWNybyBzZXRFbnRyeUFk
ZHJlc3NDb21tb24oaW5kZXgsIGxhYmVsLCBtYXApCiAgICAgICAgIHBjcnRvYWRkciBsYWJlbCwg
dDIKICAgICAgICAgbW92ZSBpbmRleCwgdDQKICAgICAgICAgc3RvcmVwIHQyLCBbbWFwLCB0NCwg
UHRyU2l6ZV0KLSAgICBlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwKKyAg
ICBlbHNpZiBBUk12NwogICAgICAgICBtdmxibCAobGFiZWwgLSBfcmVsYXRpdmVQQ0Jhc2UpLCB0
NAogICAgICAgICBhZGRwIHQ0LCB0MiwgdDQKICAgICAgICAgbW92ZSBpbmRleCwgdDMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KaW5kZXggODFlMjAzYjI2OTQ1Y2MwNTlmMjRjYjQwMGE2NjUzZmY4MzMzNTgzNC4u
MjVhZmI5YjFhOThkNmYwOWQwNTkwM2U4MjlhNWI1MThiNDA2MWRmMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KQEAgLTg4LDcgKzg4LDcgQEAgbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3AsIGRp
c3BhdGNoKQogZW5kCiAKIG1hY3JvIGNDYWxsMihmdW5jdGlvbikKLSAgICBpZiBBUk0gb3IgQVJN
djcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUworICAgIGlmIEFSTXY3IG9yIE1JUFMKICAg
ICAgICAgY2FsbCBmdW5jdGlvbgogICAgIGVsc2lmIFg4NiBvciBYODZfV0lOCiAgICAgICAgIHN1
YnAgOCwgc3AKQEAgLTExMiw3ICsxMTIsNyBAQCBtYWNybyBjQ2FsbDJWb2lkKGZ1bmN0aW9uKQog
ZW5kCiAKIG1hY3JvIGNDYWxsNChmdW5jdGlvbikKLSAgICBpZiBBUk0gb3IgQVJNdjcgb3IgQVJN
djdfVFJBRElUSU9OQUwgb3IgTUlQUworICAgIGlmIEFSTXY3IG9yIE1JUFMKICAgICAgICAgY2Fs
bCBmdW5jdGlvbgogICAgIGVsc2lmIFg4NiBvciBYODZfV0lOCiAgICAgICAgIHB1c2ggYTMKQEAg
LTE3NCwxNSArMTc0LDExIEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKICAgICAgICAgYWRk
cCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHNwLCB0MwogICAgICAgICBhbmRwIH5T
dGFja0FsaWdubWVudE1hc2ssIHQzCiAgICAgICAgIHN1YnAgdDMsIENhbGxGcmFtZUFsaWduU2xv
dHMgKiBTbG90U2l6ZSwgc3AKLSAgICBlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElU
SU9OQUwKKyAgICBlbHNpZiBBUk12NwogICAgICAgICBhZGRwIENhbGxGcmFtZUFsaWduU2xvdHMg
KiBTbG90U2l6ZSwgc3AsIHQzCiAgICAgICAgIGNscmJwIHQzLCBTdGFja0FsaWdubWVudE1hc2ss
IHQzCi0gICAgICAgIGlmIEFSTXY3Ci0gICAgICAgICAgICBzdWJwIHQzLCBDYWxsRnJhbWVBbGln
blNsb3RzICogU2xvdFNpemUsIHQzCi0gICAgICAgICAgICBtb3ZlIHQzLCBzcAotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBzdWJwIHQzLCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUs
IHNwCi0gICAgICAgIGVuZAorICAgICAgICBzdWJwIHQzLCBDYWxsRnJhbWVBbGlnblNsb3RzICog
U2xvdFNpemUsIHQzCisgICAgICAgIG1vdmUgdDMsIHNwCiAgICAgZW5kCiAKICAgICBsb2FkaSBQ
cm90b0NhbGxGcmFtZTo6cGFkZGVkQXJnQ291bnRbcHJvdG9DYWxsRnJhbWVdLCB0NApAQCAtMjAz
OCw3ICsyMDM0LDcgQEAgbWFjcm8gbmF0aXZlQ2FsbFRyYW1wb2xpbmUoZXhlY3V0YWJsZU9mZnNl
dFRvRnVuY3Rpb24pCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MwogICAgICAgICBs
b2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1b
dDNdLCB0MwogICAgICAgICBhZGRwIDgsIHNwCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3IG9yIEFS
TXY3X1RSQURJVElPTkFMIG9yIENfTE9PUCBvciBNSVBTCisgICAgZWxzaWYgQVJNdjcgb3IgQ19M
T09QIG9yIE1JUFMKICAgICAgICAgaWYgTUlQUwogICAgICAgICAjIGNhbGxpbmcgY29udmVudGlv
biBzYXlzIHRvIHNhdmUgc3RhY2sgc3BhY2UgZm9yIDQgZmlyc3QgcmVnaXN0ZXJzIGluCiAgICAg
ICAgICMgYWxsIGNhc2VzLiBUbyBtYXRjaCBvdXIgMTYtYnl0ZSBhbGlnbm1lbnQsIHRoYXQgbWVh
bnMgd2UgbmVlZCB0bwpAQCAtMjEwNSw3ICsyMTAxLDcgQEAgbWFjcm8gaW50ZXJuYWxGdW5jdGlv
bkNhbGxUcmFtcG9saW5lKG9mZnNldE9mRnVuY3Rpb24pCiAgICAgICAgIGFuZHAgTWFya2VkQmxv
Y2tNYXNrLCB0MwogICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1hcmtl
ZEJsb2NrOjpGb290ZXI6Om1fdm1bdDNdLCB0MwogICAgICAgICBhZGRwIDgsIHNwCi0gICAgZWxz
aWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIENfTE9PUCBvciBNSVBTCisg
ICAgZWxzaWYgQVJNdjcgb3IgQ19MT09QIG9yIE1JUFMKICAgICAgICAgc3VicCA4LCBzcCAjIGFs
aWduIHN0YWNrIHBvaW50ZXIKICAgICAgICAgIyB0MSBhbHJlYWR5IGNvbnRhaW5zIHRoZSBDYWxs
ZWUuCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXJtLnJiCmluZGV4IDgyNDRiYmFjMmM4MDRmOTA2ZmViYjM0YTRmMjkwNGFh
M2Y3Y2I5N2MuLmIwYzMzNjI3ZDEwODcyMjc5ZTA4MTFjNGY0YTdlY2FkNDFlNWZjNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKQEAgLTU5LDE5ICs1OSw2IEBAIGRl
ZiBpc0FSTXY3CiAgICAgY2FzZSAkYWN0aXZlQmFja2VuZAogICAgIHdoZW4gIkFSTXY3IgogICAg
ICAgICB0cnVlCi0gICAgd2hlbiAiQVJNdjdfVFJBRElUSU9OQUwiLCAiQVJNIgotICAgICAgICBm
YWxzZQotICAgIGVsc2UKLSAgICAgICAgcmFpc2UgImJhZCB2YWx1ZSBmb3IgJGFjdGl2ZUJhY2tl
bmQ6ICN7JGFjdGl2ZUJhY2tlbmR9IgotICAgIGVuZAotZW5kCi0KLWRlZiBpc0FSTXY3VHJhZGl0
aW9uYWwKLSAgICBjYXNlICRhY3RpdmVCYWNrZW5kCi0gICAgd2hlbiAiQVJNdjdfVFJBRElUSU9O
QUwiCi0gICAgICAgIHRydWUKLSAgICB3aGVuICJBUk12NyIsICJBUk0iCi0gICAgICAgIGZhbHNl
CiAgICAgZWxzZQogICAgICAgICByYWlzZSAiYmFkIHZhbHVlIGZvciAkYWN0aXZlQmFja2VuZDog
I3skYWN0aXZlQmFja2VuZH0iCiAgICAgZW5kCkBAIC0xMDQsNyArOTEsNyBAQCBkZWYgYXJtTW92
ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0ZXIpCiAgICAgICAgICRhc20ucHV0cyAibW92ICN7cmVn
aXN0ZXIuYXJtT3BlcmFuZH0sIFwjI3t2YWx1ZX0iCiAgICAgZWxzaWYgKH52YWx1ZSkgPj0gMCAm
JiAofnZhbHVlKSA8IDI1NgogICAgICAgICAkYXNtLnB1dHMgIm12biAje3JlZ2lzdGVyLmFybU9w
ZXJhbmR9LCBcIyN7fnZhbHVlfSIKLSAgICBlbHNpZiBpc0FSTXY3IG9yIGlzQVJNdjdUcmFkaXRp
b25hbAorICAgIGVsc2lmIGlzQVJNdjcKICAgICAgICAgJGFzbS5wdXRzICJtb3Z3ICN7cmVnaXN0
ZXIuYXJtT3BlcmFuZH0sIFwjI3t2YWx1ZSAmIDB4ZmZmZn0iCiAgICAgICAgIGlmICh2YWx1ZSAm
IDB4ZmZmZjAwMDApICE9IDAKICAgICAgICAgICAgICRhc20ucHV0cyAibW92dCAje3JlZ2lzdGVy
LmFybU9wZXJhbmR9LCBcIyN7KHZhbHVlID4+IDE2KSAmIDB4ZmZmZn0iCkBAIC0zMDEsMjEgKzI4
OCwxMSBAQCBkZWYgYXJtTG93ZXJMYWJlbFJlZmVyZW5jZXMobGlzdCkKIGVuZAogCiBjbGFzcyBT
ZXF1ZW5jZQotICAgIGRlZiBnZXRNb2RpZmllZExpc3RBUk0KLSAgICAgICAgcmFpc2UgdW5sZXNz
ICRhY3RpdmVCYWNrZW5kID09ICJBUk0iCi0gICAgICAgIGdldE1vZGlmaWVkTGlzdEFSTUNvbW1v
bgotICAgIGVuZAotCiAgICAgZGVmIGdldE1vZGlmaWVkTGlzdEFSTXY3CiAgICAgICAgIHJhaXNl
IHVubGVzcyAkYWN0aXZlQmFja2VuZCA9PSAiQVJNdjciCiAgICAgICAgIGdldE1vZGlmaWVkTGlz
dEFSTUNvbW1vbgogICAgIGVuZAogCi0gICAgZGVmIGdldE1vZGlmaWVkTGlzdEFSTXY3X1RSQURJ
VElPTkFMCi0gICAgICAgIHJhaXNlIHVubGVzcyAkYWN0aXZlQmFja2VuZCA9PSAiQVJNdjdfVFJB
RElUSU9OQUwiCi0gICAgICAgIGdldE1vZGlmaWVkTGlzdEFSTUNvbW1vbgotICAgIGVuZAotCiAg
ICAgZGVmIGdldE1vZGlmaWVkTGlzdEFSTUNvbW1vbgogICAgICAgICByZXN1bHQgPSBAbGlzdAog
ICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJTaW1wbGVCcmFuY2hPcHMocmVzdWx0KQpAQCAtNDE0
LDIxICszOTEsMTEgQEAgZGVmIGVtaXRBcm1UZXN0U2V0KG9wZXJhbmRzLCBjb2RlKQogZW5kCiAK
IGNsYXNzIEluc3RydWN0aW9uCi0gICAgZGVmIGxvd2VyQVJNCi0gICAgICAgIHJhaXNlIHVubGVz
cyAkYWN0aXZlQmFja2VuZCA9PSAiQVJNIgotICAgICAgICBsb3dlckFSTUNvbW1vbgotICAgIGVu
ZAotCiAgICAgZGVmIGxvd2VyQVJNdjcKICAgICAgICAgcmFpc2UgdW5sZXNzICRhY3RpdmVCYWNr
ZW5kID09ICJBUk12NyIKICAgICAgICAgbG93ZXJBUk1Db21tb24KICAgICBlbmQKIAotICAgIGRl
ZiBsb3dlckFSTXY3X1RSQURJVElPTkFMCi0gICAgICAgIHJhaXNlIHVubGVzcyAkYWN0aXZlQmFj
a2VuZCA9PSAiQVJNdjdfVFJBRElUSU9OQUwiCi0gICAgICAgIGxvd2VyQVJNQ29tbW9uCi0gICAg
ZW5kCi0KICAgICBkZWYgbG93ZXJBUk1Db21tb24KICAgICAgICAgY2FzZSBvcGNvZGUKICAgICAg
ICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFkZGlzIiwgImFkZHBzIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgppbmRleCBmZjA2NWQ1MzkyZGZjZGQzMjg1
NmFhZDdmMDZhYzIxOGQ1MmQwOGMxLi5jNmNjNWFjMTZlMTIzZGM1ZTYwNjkyZGE0ZmE4NDQ1YjI4
MWFmOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNr
ZW5kcy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5y
YgpAQCAtNDAsOSArNDAsNyBAQAogICAgICAiWDg2X1dJTiIsCiAgICAgICJYODZfNjQiLAogICAg
ICAiWDg2XzY0X1dJTiIsCi0gICAgICJBUk0iLAogICAgICAiQVJNdjciLAotICAgICAiQVJNdjdf
VFJBRElUSU9OQUwiLAogICAgICAiQVJNNjQiLAogICAgICAiQVJNNjRFIiwKICAgICAgIk1JUFMi
LApAQCAtNjAsOSArNTgsNyBAQAogICAgICAiWDg2X1dJTiIsCiAgICAgICJYODZfNjQiLAogICAg
ICAiWDg2XzY0X1dJTiIsCi0gICAgICJBUk0iLAogICAgICAiQVJNdjciLAotICAgICAiQVJNdjdf
VFJBRElUSU9OQUwiLAogICAgICAiQVJNNjQiLAogICAgICAiQVJNNjRFIiwKICAgICAgIk1JUFMi
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW5saW5lQVNNLmggYi9Tb3VyY2UvV1RGL3d0
Zi9JbmxpbmVBU00uaAppbmRleCAzM2MxYTJiNzAzYTM2Njg4YTVlMWMxODc2ZDRhYmI2YWYxMThm
ZTJhLi44Mzc5YTY5NjU5MTU0MzEyZmIxZmZlMzE3MDRjYWFiYzI1MjJkMzRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbmxpbmVB
U00uaApAQCAtOTMsNyArOTMsNyBAQAogI2RlZmluZSBMT0NBTF9MQUJFTF9TVFJJTkcobmFtZSkg
Ii5MIiAjbmFtZQogI2VuZGlmCiAKLSNpZiAoQ1BVKEFSTV9UUkFESVRJT05BTCkgJiYgKGRlZmlu
ZWQodGh1bWIyKSB8fCBkZWZpbmVkKF9fdGh1bWIyX18pIHx8IGRlZmluZWQoX190aHVtYikgfHwg
ZGVmaW5lZChfX3RodW1iX18pKSkgfHwgQ1BVKEFSTV9USFVNQjIpCisjaWYgQ1BVKEFSTV9USFVN
QjIpCiAjZGVmaW5lIElOTElORV9BUk1fRlVOQ1RJT04obmFtZSkgIi50aHVtYiIgIlxuIiAiLnRo
dW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKG5hbWUpICJcbiIKICNlbHNlCiAjZGVmaW5lIElO
TElORV9BUk1fRlVOQ1RJT04obmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGUyZWI3NWJjZGIzM2E3MzEz
NjQwMmRjZDAxMmRhMDc2M2ZlNjhkNmUuLmE2NjdmODRlZmFmNjU5OTQ3M2M0ZDBmOGUzOTNiZDQ0
ZGVkNmQxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtODEzLDEwICs4MTMsNiBAQAogI2lmIChDUFUoQVJN
X1RIVU1CMikgfHwgQ1BVKEFSTTY0KSkgJiYgKFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IE9TKExJ
TlVYKSB8fCBPUyhGUkVFQlNEKSkKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCi0v
KiBFbmFibGUgdGhlIERGRyBKSVQgb24gQVJNLiAqLwotI2lmIENQVShBUk1fVFJBRElUSU9OQUwp
Ci0jZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKLSNlbmRpZgogLyogRW5hYmxlIHRoZSBERkcgSklU
IG9uIE1JUFMuICovCiAjaWYgQ1BVKE1JUFMpCiAjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKQEAg
LTgzOSw3ICs4MzUsNyBAQAogI2RlZmluZSBFTkFCTEVfRkFTVF9UTFNfSklUIDEKICNlbmRpZgog
Ci0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkgfHwgQ1BVKE1JUFMpCisjaWYgQ1BVKFg4Nikg
fHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkgfHwgQ1BVKE1J
UFMpCiAjZGVmaW5lIEVOQUJMRV9NQVNNX1BST0JFIDEKICNlbHNlCiAjZGVmaW5lIEVOQUJMRV9N
QVNNX1BST0JFIDAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354897</attachid>
            <date>2018-11-15 00:03:57 -0800</date>
            <delta_ts>2018-11-15 00:26:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191675-20181115170356.patch</filename>
            <type>text/plain</type>
            <size>182487</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODk4MjRlYjViZjc2MjdhOGMxMDEwMjI5N2JiNDM3NmNlMjMwMzhmLi4wNWMwOWI2MjdmYzljOGVk
NzhkOGY2NmZhYzVhZmUyZmEzMjM1OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxOC0xMS0xNSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIERyb3AgQVJNX1RSQURJVElPTkFMIHN1cHBvcnQg
aW4gTExJbnQsIGJhc2VsaW5lIEpJVCwgYW5kIERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugbm8gbG9uZ2VyIG1haW50YWluIEFSTV9UUkFESVRJ
T05BTCBMTEludCBhbmQgSklUIGluIEpTQy4gVGhpcyBhcmNoaXRlY3R1cmUgd2lsbCB1c2UKKyAg
ICAgICAgQ0xvb3AgaW5zdGVhZC4gVGhpcyBwYXRjaCByZW1vdmVzIEFSTV9UUkFESVRJT05BTCBz
dXBwb3J0IGluIExMSW50IGFuZCBKSVQuCisKKyAgICAgICAgRGlzY3Vzc2VkIGluIGh0dHBzOi8v
bGlzdHMud2Via2l0Lm9yZy9waXBlcm1haWwvd2Via2l0LWRldi8yMDE4LU9jdG9iZXIvMDMwMjIw
Lmh0bWwuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxpbmtDb2RlKToKKyAg
ICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZHVtcENvZGUpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cGF0Y2hhYmxl
QnJhbmNoMzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6IFJlbW92ZWQu
CisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oOgorICAgICAgICAoSlNDOjpQcm9i
ZTo6Q1BVU3RhdGU6OnBjKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRlOjpmcCk6Cisg
ICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6c3ApOgorICAgICAgICAqIGFzc2VtYmxlci90
ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OmlzUEMpOgorICAgICAgICAoSlNDOjp0ZXN0UHJv
YmVNb2RpZmllc1N0YWNrUG9pbnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9iZU1vZGlmaWVz
U3RhY2tWYWx1ZXMpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxl
ci5jcHA6CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNzZW1ibGUpOgorICAgICAgICAqIGppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmNwcDoKKyAgICAgICAgKiBqaXQvSklUTWF0aElDLmg6CisgICAg
ICAgIChKU0M6OmlzUHJvZmlsZUVtcHR5KToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3Bw
OgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJlZ2lzdGVycyk6
CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKToK
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9yY2VJQ0ZhaWx1cmUpOgor
ICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc206CisgICAgICAgICogb2ZmbGluZWFzbS9hcm0ucmI6CisgICAgICAgICog
b2ZmbGluZWFzbS9iYWNrZW5kcy5yYjoKKwogMjAxOC0xMS0xNCAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBzY3JpcHRzIGZvciBEZXJpdmVkIGFuZCBV
bmlmaWVkIFNvdXJjZXMgdG8gZXh0ZXJuYWwgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDExZDlkZWY4YjEzOGI3MTEx
NjAxYWFiZWNhMzU4ZDgxMDEwMmE3Ny4uZWFiNTM5MzJiOGQ1OTFkYTUxZGI3ZjI5NmIyNjliYTlk
NGRjZDhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMS0xNSAgWXVzdWtlIFN1enVraSAg
PHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIERyb3AgQVJNX1RS
QURJVElPTkFMIHN1cHBvcnQgaW4gTExJbnQsIGJhc2VsaW5lIEpJVCwgYW5kIERGRworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjc1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvSW5saW5lQVNN
Lmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTgtMTEtMTQgIEtlaXRoIFJvbGxp
biAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAjZW5kIHZzLiAjZW5kaWYgdHlw
by4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhYjg3MjU0MDJlMTBlY2Fm
MTM3YTdhZmQ4MmI5MTlmZWYyODJmOWYxLi43OWNhYjBiOTc4YmI5YzhlYmNkY2M2NGNlMmM5M2Iw
OWMzNDk1M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNDAsOCAr
MjQwLDYgQEAgZWxzZSAoKQogICAgICAgICBzZXQoT0ZGTElORV9BU01fQkFDS0VORCAiQVJNNjQi
KQogICAgIGVsc2VpZiAoQVJNX1RIVU1CMl9ERVRFQ1RFRCkKICAgICAgICAgc2V0KE9GRkxJTkVf
QVNNX0JBQ0tFTkQgIkFSTXY3IikKLSAgICBlbHNlaWYgKEFSTV9UUkFESVRJT05BTF9ERVRFQ1RF
RCkKLSAgICAgICAgc2V0KE9GRkxJTkVfQVNNX0JBQ0tFTkQgIkFSTXY3X1RSQURJVElPTkFMIikK
ICAgICBlbHNlaWYgKFdURl9DUFVfTUlQUykKICAgICAgICAgc2V0KE9GRkxJTkVfQVNNX0JBQ0tF
TkQgIk1JUFMiKQogICAgIGVuZGlmICgpCkBAIC00MjQsNyArNDIyLDYgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBBUEkvT3BhcXVlSlNTdHJpbmcu
aAogCiAgICAgYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKLSAgICBhc3NlbWJsZXIvQVJNQXNz
ZW1ibGVyLmgKICAgICBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAogICAgIGFzc2VtYmxlci9B
Ym9ydFJlYXNvbi5oCiAgICAgYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAt
NDM2LDcgKzQzMyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAogICAgIGFzc2VtYmxlci9NSVBTQXNzZW1i
bGVyLmgKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAotICAgIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTS5oCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAogICAg
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWU0NTcxMWVl
OGViNzMxNjQ4ZTI3YWVlNzcwYWI4OWE3MWRmMzY2ZC4uYzI3N2ViZjE4OWZlZjE1MTFjNDk5ZGQ3
Mjk4NWI3MjYzZDM4NjZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMTAs
OSArMTIxMCw3IEBACiAJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkNDODVBMDBF
RTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oICovOyB9OwogCQk4NkNDRUZERTBGNDEzRjg5
MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZDQ0VGREQwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkQyMjIxQTE2N0VG
OTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tICov
OyB9OwotCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMDEwMTU2QkRF
MDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZEM0IyQzUxMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxl
ckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMxMTAxNTZCREUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZm
ZXJXaXRoQ29uc3RhbnRQb29sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJODZEM0IyQzYxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVy
QVJNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQz
QjJDMjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkQzQjNDMzEwMTU5RDdGMDAy
ODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZEM0IzQzExMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkUxMTZCMTBG
RTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxv
Y2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODZFM0M2MTIxNjdCQUJENzAwNkQ3NjBBIC8qIEpTVmFsdWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTNDNjA2MTY3QkFCODcwMDZENzYwQSAv
KiBKU1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9
OwpAQCAtMzg3MCw3ICszODY4LDYgQEAKIAkJODZCNTgyNkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRp
ZXJlZE1NYXBBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaWVyZWRN
TWFwQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCRjY0MkExNDhEQjJC
NTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRyaW5zaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZDMzZFRTkwRUUx
Mjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBN
YWNyb0Fzc2VtYmxlck1JUFMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFj
cm9Bc3NlbWJsZXJNSVBTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzU2OERG
MTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1JUFNBc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODZDQzg1QTAwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSklUSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzg3OCwxMCArMzg3NSw3IEBACiAJCTg2Q0M4NUMzMEVFN0E4OTQwMDI4ODY4MiAv
KiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2Q0NFRkREMEY0MTNGODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpJVENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmls
ZUVuY29kaW5nID0gNDsgbmFtZSA9IHRlc3RhcGkubW07IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFw
aS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODZEM0IyQkYxMDE1NkJERTAwMjg2
NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBUk1Bc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NkQz
QjJDMDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFSTUFzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NkQzQjJDMTEwMTU2QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0
YW50UG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3NlbWJsZXJCdWZm
ZXJXaXRoQ29uc3RhbnRQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2RDNC
MkMyMTAxNTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fzc2VtYmxlckFSTS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NkQzQjNDMTEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5rQnVmZmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2RTExNkIwMEZFNzVBQzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUxvY2F0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RTNDNjA2MTY3QkFCODcwMDZENzYwQSAvKiBK
U1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MjEsOCArNzYxNSw2IEBACiAJCQkJMEYzNzMw
OTAxQzBDRDcwQzAwMDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oICov
LAogCQkJCUFENDEyQjM1MUU3QjU3QzAwMDhBRjE1NyAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2VJZi5oICovLAogCQkJCTg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFz
c2VtYmxlci5oICovLAotCQkJCTg2RDNCMkJGMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJs
ZXIuY3BwICovLAotCQkJCTg2RDNCMkMwMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIu
aCAqLywKIAkJCQk4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAq
LywKIAkJCQk5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmggKi8s
CiAJCQkJODZEM0IyQzExMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25z
dGFudFBvb2wuaCAqLywKQEAgLTc2MzQsOCArNzYyNiw2IEBACiAJCQkJODZEM0IzQzExMDE1OUQ3
RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLywKIAkJCQkwRkVCM0VDRTE2MjM3RjY3MDBBQjY3
QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwICovLAogCQkJCTg2QzM2RUU5MEVFMTI4OUQwMEIzREY1
OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovLAotCQkJCTg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAv
KiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgKi8sCi0JCQkJODZEM0IyQzIxMDE1NkJERTAwMjg2NUU3
IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggKi8sCiAJCQkJRkVCMTM3NTYxQkIxMUVFRTAwQ0Q1MTAw
IC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuY3BwICovLAogCQkJCTg2NDA5MjNDMTU2RUVEM0IwMDU2
NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi8sCiAJCQkJQTcyOTAwOUIxNzk3NkM2MDAw
MzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3BwICovLApAQCAtODM3MSw3ICs4MzYxLDYg
QEAKIAkJCQk3OUEyMjgzNjFEMzVENzFGMDBEOEUwNjcgLyogQXJpdGhQcm9maWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8q
IEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZF
RUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgzMzVCODE2MzlD
MUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTkzNTcsNyArOTM0Niw2IEBACiAJCQkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8q
IE1hY2hpbmVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEI3MjNCODEyRDdEQTZGMDAz
QkQ1RUQgLyogTWFjaGluZVN0YWNrTWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkMzNkVF
QTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTg2RDNCMkM2MTAxNTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fzc2VtYmxlckFSTS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJN
NjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNy
b0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjNCMjNFMDBGQzYxMTg5MDA3
MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAxYWQ5OWYwZTZlNzRiNzc5MzBhNDZjYzA1OTI2MGZkMjI3
OWI3YWQ1Li5jYmE0YzRiYTYwMDRmOTMwZDVjYTg1NjMzMTBhNjI0M2UzNjQ0OWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC00MSwxMSArNDEsOSBAQCBBUEkvSlNXZWFrUHJpdmF0
ZS5jcHAKIEFQSS9KU1dlYWtWYWx1ZS5jcHAKIEFQSS9PcGFxdWVKU1N0cmluZy5jcHAKIAotYXNz
ZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAKIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmNwcAogYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
Y3BwCi1hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwCiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5jcHAKIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmNwcAogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTUyZjM3ZjY4MDk0NjA3ZDAwZmQyMmNmMzM2YTQwOWJhYzcwYTJmNS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MjMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQotCi0jaW5jbHVkZSAiQVJNQXNz
ZW1ibGVyLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi0vLyBQYXRjaGluZyBoZWxwZXJzCi0KLXZv
aWQgQVJNQXNzZW1ibGVyOjpwYXRjaENvbnN0YW50UG9vbExvYWQodm9pZCogbG9hZEFkZHIsIHZv
aWQqIGNvbnN0UG9vbEFkZHIpCi17Ci0gICAgQVJNV29yZCAqbGRyID0gcmVpbnRlcnByZXRfY2Fz
dDxBUk1Xb3JkKj4obG9hZEFkZHIpOwotICAgIEFSTVdvcmQgZGlmZiA9IHJlaW50ZXJwcmV0X2Nh
c3Q8QVJNV29yZCo+KGNvbnN0UG9vbEFkZHIpIC0gbGRyOwotICAgIEFSTVdvcmQgaW5kZXggPSAo
KmxkciAmIDB4ZmZmKSA+PiAxOwotCi0gICAgQVNTRVJUKGRpZmYgPj0gMSk7Ci0gICAgaWYgKGRp
ZmYgPj0gMiB8fCBpbmRleCA+IDApIHsKLSAgICAgICAgZGlmZiA9IChkaWZmICsgaW5kZXggLSAy
KSAqIHNpemVvZihBUk1Xb3JkKTsKLSAgICAgICAgQVNTRVJUKGRpZmYgPD0gMHhmZmYpOwotICAg
ICAgICAqbGRyID0gKCpsZHIgJiB+MHhmZmYpIHwgZGlmZjsKLSAgICB9IGVsc2UKLSAgICAgICAg
KmxkciA9ICgqbGRyICYgfigweGZmZiB8IEFSTUFzc2VtYmxlcjo6RGF0YVRyYW5zZmVyVXApKSB8
IHNpemVvZihBUk1Xb3JkKTsKLX0KLQotLy8gSGFuZGxlIGltbWVkaWF0ZXMKLQotQVJNV29yZCBB
Uk1Bc3NlbWJsZXI6OmdldE9wMihBUk1Xb3JkIGltbSkKLXsKLSAgICBpbnQgcm9sOwotCi0gICAg
aWYgKGltbSA8PSAweGZmKQotICAgICAgICByZXR1cm4gT3AySW1tZWRpYXRlIHwgaW1tOwotCi0g
ICAgaWYgKChpbW0gJiAweGZmMDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgIGltbSA8PD0gODsKLSAg
ICAgICAgcm9sID0gODsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGltbSA9IChpbW0gPDwg
MjQpIHwgKGltbSA+PiA4KTsKLSAgICAgICAgcm9sID0gMDsKLSAgICB9Ci0KLSAgICBpZiAoKGlt
bSAmIDB4ZmYwMDAwMDApID09IDApIHsKLSAgICAgICAgaW1tIDw8PSA4OwotICAgICAgICByb2wg
Kz0gNDsKLSAgICB9Ci0KLSAgICBpZiAoKGltbSAmIDB4ZjAwMDAwMDApID09IDApIHsKLSAgICAg
ICAgaW1tIDw8PSA0OwotICAgICAgICByb2wgKz0gMjsKLSAgICB9Ci0KLSAgICBpZiAoKGltbSAm
IDB4YzAwMDAwMDApID09IDApIHsKLSAgICAgICAgaW1tIDw8PSAyOwotICAgICAgICByb2wgKz0g
MTsKLSAgICB9Ci0KLSAgICBpZiAoKGltbSAmIDB4MDBmZmZmZmYpID09IDApCi0gICAgICAgIHJl
dHVybiBPcDJJbW1lZGlhdGUgfCAoaW1tID4+IDI0KSB8IChyb2wgPDwgOCk7Ci0KLSAgICByZXR1
cm4gSW52YWxpZEltbWVkaWF0ZTsKLX0KLQotaW50IEFSTUFzc2VtYmxlcjo6Z2VuSW50KGludCBy
ZWcsIEFSTVdvcmQgaW1tLCBib29sIHBvc2l0aXZlKQotewotICAgIC8vIFN0ZXAxOiBTZWFyY2gg
YSBub24taW1tZWRpYXRlIHBhcnQKLSAgICBBUk1Xb3JkIG1hc2s7Ci0gICAgQVJNV29yZCBpbW0x
OwotICAgIEFSTVdvcmQgaW1tMjsKLSAgICBpbnQgcm9sOwotCi0gICAgbWFzayA9IDB4ZmYwMDAw
MDA7Ci0gICAgcm9sID0gODsKLSAgICB3aGlsZSgxKSB7Ci0gICAgICAgIGlmICgoaW1tICYgbWFz
aykgPT0gMCkgewotICAgICAgICAgICAgaW1tID0gKGltbSA8PCByb2wpIHwgKGltbSA+PiAoMzIg
LSByb2wpKTsKLSAgICAgICAgICAgIHJvbCA9IDQgKyAocm9sID4+IDEpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcm9sICs9IDI7Ci0gICAgICAgIG1hc2sgPj49IDI7
Ci0gICAgICAgIGlmIChtYXNrICYgMHgzKSB7Ci0gICAgICAgICAgICAvLyByb2wgOAotICAgICAg
ICAgICAgaW1tID0gKGltbSA8PCA4KSB8IChpbW0gPj4gMjQpOwotICAgICAgICAgICAgbWFzayA9
IDB4ZmYwMDsKLSAgICAgICAgICAgIHJvbCA9IDI0OwotICAgICAgICAgICAgd2hpbGUgKDEpIHsK
LSAgICAgICAgICAgICAgICBpZiAoKGltbSAmIG1hc2spID09IDApIHsKLSAgICAgICAgICAgICAg
ICAgICAgaW1tID0gKGltbSA8PCByb2wpIHwgKGltbSA+PiAoMzIgLSByb2wpKTsKLSAgICAgICAg
ICAgICAgICAgICAgcm9sID0gKHJvbCA+PiAxKSAtIDg7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByb2wgKz0gMjsKLSAgICAg
ICAgICAgICAgICBtYXNrID4+PSAyOwotICAgICAgICAgICAgICAgIGlmIChtYXNrICYgMHgzKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUKChpbW0gJiAweGZmKSA9PSAw
KTsKLQotICAgIGlmICgoaW1tICYgMHhmZjAwMDAwMCkgPT0gMCkgewotICAgICAgICBpbW0xID0g
T3AySW1tZWRpYXRlIHwgKChpbW0gPj4gMTYpICYgMHhmZikgfCAoKChyb2wgKyA0KSAmIDB4Zikg
PDwgOCk7Ci0gICAgICAgIGltbTIgPSBPcDJJbW1lZGlhdGUgfCAoKGltbSA+PiA4KSAmIDB4ZmYp
IHwgKCgocm9sICsgOCkgJiAweGYpIDw8IDgpOwotICAgIH0gZWxzZSBpZiAoaW1tICYgMHhjMDAw
MDAwMCkgewotICAgICAgICBpbW0xID0gT3AySW1tZWRpYXRlIHwgKChpbW0gPj4gMjQpICYgMHhm
ZikgfCAoKHJvbCAmIDB4ZikgPDwgOCk7Ci0gICAgICAgIGltbSA8PD0gODsKLSAgICAgICAgcm9s
ICs9IDQ7Ci0KLSAgICAgICAgaWYgKChpbW0gJiAweGZmMDAwMDAwKSA9PSAwKSB7Ci0gICAgICAg
ICAgICBpbW0gPDw9IDg7Ci0gICAgICAgICAgICByb2wgKz0gNDsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmICgoaW1tICYgMHhmMDAwMDAwMCkgPT0gMCkgewotICAgICAgICAgICAgaW1tIDw8PSA0
OwotICAgICAgICAgICAgcm9sICs9IDI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoKGltbSAm
IDB4YzAwMDAwMDApID09IDApIHsKLSAgICAgICAgICAgIGltbSA8PD0gMjsKLSAgICAgICAgICAg
IHJvbCArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChpbW0gJiAweDAwZmZmZmZmKSA9
PSAwKQotICAgICAgICAgICAgaW1tMiA9IE9wMkltbWVkaWF0ZSB8IChpbW0gPj4gMjQpIHwgKChy
b2wgJiAweGYpIDw8IDgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICB9IGVsc2UgewotICAgICAgICBpZiAoKGltbSAmIDB4ZjAwMDAwMDApID09IDApIHsKLSAgICAg
ICAgICAgIGltbSA8PD0gNDsKLSAgICAgICAgICAgIHJvbCArPSAyOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKChpbW0gJiAweGMwMDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgICAgICBpbW0gPDw9
IDI7Ci0gICAgICAgICAgICByb2wgKz0gMTsKLSAgICAgICAgfQotCi0gICAgICAgIGltbTEgPSBP
cDJJbW1lZGlhdGUgfCAoKGltbSA+PiAyNCkgJiAweGZmKSB8ICgocm9sICYgMHhmKSA8PCA4KTsK
LSAgICAgICAgaW1tIDw8PSA4OwotICAgICAgICByb2wgKz0gNDsKLQotICAgICAgICBpZiAoKGlt
bSAmIDB4ZjAwMDAwMDApID09IDApIHsKLSAgICAgICAgICAgIGltbSA8PD0gNDsKLSAgICAgICAg
ICAgIHJvbCArPSAyOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChpbW0gJiAweGMwMDAwMDAw
KSA9PSAwKSB7Ci0gICAgICAgICAgICBpbW0gPDw9IDI7Ci0gICAgICAgICAgICByb2wgKz0gMTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmICgoaW1tICYgMHgwMGZmZmZmZikgPT0gMCkKLSAgICAg
ICAgICAgIGltbTIgPSBPcDJJbW1lZGlhdGUgfCAoaW1tID4+IDI0KSB8ICgocm9sICYgMHhmKSA8
PCA4KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAg
aWYgKHBvc2l0aXZlKSB7Ci0gICAgICAgIG1vdihyZWcsIGltbTEpOwotICAgICAgICBvcnIocmVn
LCByZWcsIGltbTIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG12bihyZWcsIGltbTEpOwotICAg
ICAgICBiaWMocmVnLCByZWcsIGltbTIpOwotICAgIH0KLQotICAgIHJldHVybiAxOwotfQotCi1B
Uk1Xb3JkIEFSTUFzc2VtYmxlcjo6Z2V0SW1tKEFSTVdvcmQgaW1tLCBpbnQgdG1wUmVnLCBib29s
IGludmVydCkKLXsKLSAgICBBUk1Xb3JkIHRtcDsKLQotICAgIC8vIERvIGl0IGJ5IDEgaW5zdHJ1
Y3Rpb24KLSAgICB0bXAgPSBnZXRPcDIoaW1tKTsKLSAgICBpZiAodG1wICE9IEludmFsaWRJbW1l
ZGlhdGUpCi0gICAgICAgIHJldHVybiB0bXA7Ci0KLSAgICB0bXAgPSBnZXRPcDIofmltbSk7Ci0g
ICAgaWYgKHRtcCAhPSBJbnZhbGlkSW1tZWRpYXRlKSB7Ci0gICAgICAgIGlmIChpbnZlcnQpCi0g
ICAgICAgICAgICByZXR1cm4gdG1wIHwgT3AySW52ZXJ0ZWRJbW1lZGlhdGU7Ci0gICAgICAgIG12
bih0bXBSZWcsIHRtcCk7Ci0gICAgICAgIHJldHVybiB0bXBSZWc7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGVuY29kZUNvbXBsZXhJbW0oaW1tLCB0bXBSZWcpOwotfQotCi12b2lkIEFSTUFzc2VtYmxl
cjo6bW92ZUltbShBUk1Xb3JkIGltbSwgaW50IGRlc3QpCi17Ci0gICAgQVJNV29yZCB0bXA7Ci0K
LSAgICAvLyBEbyBpdCBieSAxIGluc3RydWN0aW9uCi0gICAgdG1wID0gZ2V0T3AyKGltbSk7Ci0g
ICAgaWYgKHRtcCAhPSBJbnZhbGlkSW1tZWRpYXRlKSB7Ci0gICAgICAgIG1vdihkZXN0LCB0bXAp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdG1wID0gZ2V0T3AyKH5pbW0pOwotICAg
IGlmICh0bXAgIT0gSW52YWxpZEltbWVkaWF0ZSkgewotICAgICAgICBtdm4oZGVzdCwgdG1wKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGVuY29kZUNvbXBsZXhJbW0oaW1tLCBkZXN0
KTsKLX0KLQotQVJNV29yZCBBUk1Bc3NlbWJsZXI6OmVuY29kZUNvbXBsZXhJbW0oQVJNV29yZCBp
bW0sIGludCBkZXN0KQotewotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQotICAgIEFSTVdv
cmQgdG1wID0gZ2V0SW1tMTZPcDIoaW1tKTsKLSAgICBpZiAodG1wICE9IEludmFsaWRJbW1lZGlh
dGUpIHsKLSAgICAgICAgbW92dyhkZXN0LCB0bXApOwotICAgICAgICByZXR1cm4gZGVzdDsKLSAg
ICB9Ci0gICAgbW92dyhkZXN0LCBnZXRJbW0xNk9wMihpbW0gJiAweGZmZmYpKTsKLSAgICBtb3Z0
KGRlc3QsIGdldEltbTE2T3AyKGltbSA+PiAxNikpOwotICAgIHJldHVybiBkZXN0OwotI2Vsc2UK
LSAgICAvLyBEbyBpdCBieSAyIGluc3RydWN0aW9uCi0gICAgaWYgKGdlbkludChkZXN0LCBpbW0s
IHRydWUpKQotICAgICAgICByZXR1cm4gZGVzdDsKLSAgICBpZiAoZ2VuSW50KGRlc3QsIH5pbW0s
IGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIGRlc3Q7Ci0KLSAgICBsZHJJbW1lZGlhdGUoZGVzdCwg
aW1tKTsKLSAgICByZXR1cm4gZGVzdDsKLSNlbmRpZgotfQotCi0vLyBNZW1vcnkgbG9hZC9zdG9y
ZSBoZWxwZXJzCi0KLXZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJhbnNmZXIzMihEYXRhVHJhbnNm
ZXJUeXBlQSB0cmFuc2ZlclR5cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2Us
IGludDMyX3Qgb2Zmc2V0KQotewotICAgIGlmIChvZmZzZXQgPj0gMCkgewotICAgICAgICBpZiAo
b2Zmc2V0IDw9IDB4ZmZmKQotICAgICAgICAgICAgZHRyVXAodHJhbnNmZXJUeXBlLCBzcmNEc3Qs
IGJhc2UsIG9mZnNldCk7Ci0gICAgICAgIGVsc2UgaWYgKG9mZnNldCA8PSAweGZmZmZmKSB7Ci0g
ICAgICAgICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9m
ZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOwotICAgICAgICAgICAgZHRyVXAodHJhbnNmZXJUeXBl
LCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIChvZmZzZXQgJiAweGZmZikpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwot
ICAgICAgICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgQVJN
UmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAob2Zm
c2V0ID49IC0weGZmZikKLSAgICAgICAgICAgIGR0ckRvd24odHJhbnNmZXJUeXBlLCBzcmNEc3Qs
IGJhc2UsIC1vZmZzZXQpOwotICAgICAgICBlbHNlIGlmIChvZmZzZXQgPj0gLTB4ZmZmZmYpIHsK
LSAgICAgICAgICAgIHN1YihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAo
LW9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOwotICAgICAgICAgICAgZHRyRG93bih0cmFuc2Zl
clR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKC1vZmZzZXQgJiAweGZmZikpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6
UzApOwotICAgICAgICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFz
ZSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgQVJNQXNz
ZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGVBIHRyYW5zZmVyVHlw
ZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkKLXsKLSAgICBBU1NFUlQoc2NhbGUgPj0gMCAmJiBz
Y2FsZSA8PSAzKTsKLSAgICBBUk1Xb3JkIG9wMiA9IGxzbChpbmRleCwgc2NhbGUpOwotCi0gICAg
aWYgKCFvZmZzZXQpIHsKLSAgICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNyY0Rz
dCwgYmFzZSwgb3AyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChvZmZzZXQg
PD0gMHhmZmZmZiAmJiBvZmZzZXQgPj0gLTB4ZmZmZmYpIHsKLSAgICAgICAgYWRkKEFSTVJlZ2lz
dGVyczo6UzAsIGJhc2UsIG9wMik7Ci0gICAgICAgIGRhdGFUcmFuc2ZlcjMyKHRyYW5zZmVyVHlw
ZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCBvZmZzZXQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIGFkZChB
Uk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBvcDIpOwotICAgIGR0clVwUmVnaXN0
ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwotfQotCi12
b2lkIEFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNm
ZXJUeXBlLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNl
dCkKLXsKLSAgICBpZiAob2Zmc2V0ID49IDApIHsKLSAgICAgICAgaWYgKG9mZnNldCA8PSAweGZm
KQotICAgICAgICAgICAgaGFsZkR0clVwKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBnZXRP
cDJIYWxmKG9mZnNldCkpOwotICAgICAgICBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZmKSB7Ci0g
ICAgICAgICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9m
ZnNldCA+PiA4KSB8ICgxMiA8PCA4KSk7Ci0gICAgICAgICAgICBoYWxmRHRyVXAodHJhbnNmZXJU
eXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIGdldE9wMkhhbGYob2Zmc2V0ICYgMHhmZikp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lz
dGVyczo6UzApOwotICAgICAgICAgICAgaGFsZkR0clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBlLCBz
cmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgaWYgKG9mZnNldCA+PSAtMHhmZikKLSAgICAgICAgICAgIGhhbGZEdHJEb3duKHRy
YW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBnZXRPcDJIYWxmKC1vZmZzZXQpKTsKLSAgICAgICAg
ZWxzZSBpZiAob2Zmc2V0ID49IC0weGZmZmYpIHsKLSAgICAgICAgICAgIHN1YihBUk1SZWdpc3Rl
cnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAoLW9mZnNldCA+PiA4KSB8ICgxMiA8PCA4KSk7
Ci0gICAgICAgICAgICBoYWxmRHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0
ZXJzOjpTMCwgZ2V0T3AySGFsZigtb2Zmc2V0ICYgMHhmZikpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAg
ICAgaGFsZkR0clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lz
dGVyczo6UzApOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEFSTUFzc2VtYmxlcjo6YmFz
ZUluZGV4VHJhbnNmZXIxNihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIFJlZ2lzdGVy
SUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwg
aW50MzJfdCBvZmZzZXQpCi17Ci0gICAgaWYgKCFzY2FsZSAmJiAhb2Zmc2V0KSB7Ci0gICAgICAg
IGhhbGZEdHJVcFJlZ2lzdGVyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBpbmRleCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBUk1Xb3JkIG9wMiA9IGxzbChpbmRleCwgc2Nh
bGUpOwotCi0gICAgaWYgKG9mZnNldCA8PSAweGZmZmYgJiYgb2Zmc2V0ID49IC0weGZmZmYpIHsK
LSAgICAgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIG9wMik7Ci0gICAgICAgIGRhdGFU
cmFuc2ZlcjE2KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCBvZmZzZXQp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lz
dGVyczo6UzApOwotICAgIGFkZChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBv
cDIpOwotICAgIGhhbGZEdHJVcFJlZ2lzdGVyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBB
Uk1SZWdpc3RlcnM6OlMwKTsKLX0KLQotdm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFUcmFuc2ZlckZs
b2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0cmFuc2ZlclR5cGUsIEZQUmVnaXN0ZXJJRCBzcmNE
c3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpCi17Ci0gICAgLy8gVkZQIGNhbm5v
dCBkaXJlY3RseSBhY2Nlc3MgbWVtb3J5IHRoYXQgaXMgbm90IGZvdXItYnl0ZS1hbGlnbmVkCi0g
ICAgaWYgKCEob2Zmc2V0ICYgMHgzKSkgewotICAgICAgICBpZiAob2Zmc2V0IDw9IDB4M2ZmICYm
IG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBkb3VibGVEdHJVcCh0cmFuc2ZlclR5cGUsIHNy
Y0RzdCwgYmFzZSwgb2Zmc2V0ID4+IDIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0gMCkgewotICAgICAg
ICAgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8IChvZmZzZXQg
Pj4gMTApIHwgKDExIDw8IDgpKTsKLSAgICAgICAgICAgIGRvdWJsZUR0clVwKHRyYW5zZmVyVHlw
ZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhmZik7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKLQot
ICAgICAgICBpZiAob2Zmc2V0IDw9IDB4M2ZmICYmIG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAg
ICBkb3VibGVEdHJEb3duKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBvZmZzZXQgPj4gMik7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG9mZnNldCA8PSAw
eDNmZmZmICYmIG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBzdWIoQVJNUmVnaXN0ZXJzOjpT
MCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+PiAxMCkgfCAoMTEgPDwgOCkpOwotICAg
ICAgICAgICAgZG91YmxlRHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJz
OjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7Ci0gICAgfQotCi0gICAgbW92ZUltbShvZmZz
ZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIGFkZChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdp
c3RlcnM6OlMwLCBiYXNlKTsKLSAgICBkb3VibGVEdHJVcCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwg
QVJNUmVnaXN0ZXJzOjpTMCwgMCk7Ci19Ci0KLXZvaWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhU
cmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0cmFuc2ZlclR5cGUsIEZQUmVnaXN0
ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxl
LCBpbnQzMl90IG9mZnNldCkKLXsKLSAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMSwgYmFzZSwgbHNs
KGluZGV4LCBzY2FsZSkpOwotICAgIGRhdGFUcmFuc2ZlckZsb2F0KHRyYW5zZmVyVHlwZSwgc3Jj
RHN0LCBBUk1SZWdpc3RlcnM6OlMxLCBvZmZzZXQpOwotfQotCi12b2lkIEFSTUFzc2VtYmxlcjo6
cHJlcGFyZUV4ZWN1dGFibGVDb3B5KHZvaWQqIHRvKQotewotICAgIC8vIDY0LWJpdCBhbGlnbm1l
bnQgaXMgcmVxdWlyZWQgZm9yIG5leHQgY29uc3RhbnQgcG9vbCBhbmQgSklUIGNvZGUgYXMgd2Vs
bAotICAgIG1fYnVmZmVyLmZsdXNoV2l0aG91dEJhcnJpZXIodHJ1ZSk7Ci0KLSAgICBjaGFyKiBk
YXRhID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9idWZmZXIuZGF0YSgpKTsKLSAgICBwdHJk
aWZmX3QgZGVsdGEgPSByZWludGVycHJldF9jYXN0PGNoYXIqPih0bykgLSBkYXRhOwotCi0gICAg
Zm9yIChKdW1wczo6SXRlcmF0b3IgaXRlciA9IG1fanVtcHMuYmVnaW4oKTsgaXRlciAhPSBtX2p1
bXBzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgLy8gVGhlIGxhc3QgYml0IGlzIHNldCBpZiB0
aGUgY29uc3RhbnQgbXVzdCBiZSBwbGFjZWQgb24gY29uc3RhbnQgcG9vbC4KLSAgICAgICAgaW50
IHBvcyA9IChpdGVyLT5tX29mZnNldCkgJiAofjB4MSk7Ci0gICAgICAgIEFSTVdvcmQqIGxkckFk
ZHIgPSByZWludGVycHJldF9jYXN0X3B0cjxBUk1Xb3JkKj4oZGF0YSArIHBvcyk7Ci0gICAgICAg
IEFSTVdvcmQqIGFkZHIgPSBnZXRMZHJJbW1BZGRyZXNzKGxkckFkZHIpOwotICAgICAgICBpZiAo
KmFkZHIgIT0gSW52YWxpZEJyYW5jaFRhcmdldCkgewotICAgICAgICAgICAgaWYgKCEoaXRlci0+
bV9vZmZzZXQgJiAxKSkgewotICAgICAgICAgICAgICAgIGludHB0cl90IGRpZmZlcmVuY2UgPSBy
ZWludGVycHJldF9jYXN0X3B0cjxBUk1Xb3JkKj4oZGF0YSArICphZGRyKSAtIChsZHJBZGRyICsg
RGVmYXVsdFByZWZldGNoT2Zmc2V0KTsKLQotICAgICAgICAgICAgICAgIGlmICgoZGlmZmVyZW5j
ZSA8PSBNYXhpbXVtQnJhbmNoT2Zmc2V0RGlzdGFuY2UgJiYgZGlmZmVyZW5jZSA+PSBNaW5pbXVt
QnJhbmNoT2Zmc2V0RGlzdGFuY2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgICpsZHJBZGRyID0g
QiB8IGdldENvbmRpdGlvbmFsRmllbGQoKmxkckFkZHIpIHwgKGRpZmZlcmVuY2UgJiBCcmFuY2hP
ZmZzZXRNYXNrKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgKmFkZHIgPSByZWludGVycHJldF9jYXN0
PEFSTVdvcmQ+KGRhdGEgKyBkZWx0YSArICphZGRyKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
fSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUo
QVJNX1RSQURJVElPTkFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BUk1Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
QXNzZW1ibGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwYjZkY2IyNDFjYTM1
MWQ3ZjFkMGEzZTQ4M2M1ZDIwZDlmZGM4N2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3Nl
bWJsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSwgMjAxMCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVOSVZFUlNJVFkgT0YgU1pFR0VEIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQotCi0j
aW5jbHVkZSAiQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIgotI2luY2x1ZGUgIkpJ
VENvbXBpbGF0aW9uRWZmb3J0LmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLW5hbWVz
cGFjZSBKU0MgewotCi0gICAgdHlwZWRlZiB1aW50MzJfdCBBUk1Xb3JkOwotCi0gICAgbmFtZXNw
YWNlIEFSTVJlZ2lzdGVycyB7Ci0KLSAgICAgICAgdHlwZWRlZiBlbnVtIDogaW50OF90IHsKLSAg
ICAgICAgICAgIHIwLAotICAgICAgICAgICAgcjEsCi0gICAgICAgICAgICByMiwKLSAgICAgICAg
ICAgIHIzLAotICAgICAgICAgICAgcjQsCi0gICAgICAgICAgICByNSwKLSAgICAgICAgICAgIHI2
LAotICAgICAgICAgICAgcjcsCi0gICAgICAgICAgICByOCwKLSAgICAgICAgICAgIHI5LAotICAg
ICAgICAgICAgcjEwLAotICAgICAgICAgICAgZnAsCi0gICAgICAgICAgICBpcCwKLSAgICAgICAg
ICAgIHNwLAotICAgICAgICAgICAgbHIsCi0gICAgICAgICAgICBwYywKLQotICAgICAgICAgICAg
Ly8gUHNldWRvbnltcyBmb3Igc29tZSBvZiB0aGUgcmVnaXN0ZXJzLgotICAgICAgICAgICAgUzAg
PSByNiwKLSAgICAgICAgICAgIHIxMSA9IGZwLCAvLyBmcmFtZSBwb2ludGVyCi0gICAgICAgICAg
ICByMTIgPSBpcCwgUzEgPSBpcCwKLSAgICAgICAgICAgIHIxMyA9IHNwLAotICAgICAgICAgICAg
cjE0ID0gbHIsCi0gICAgICAgICAgICByMTUgPSBwYywKLSAgICAgICAgICAgIEludmFsaWRHUFJS
ZWcgPSAtMSwKLSAgICAgICAgfSBSZWdpc3RlcklEOwotCi0gICAgICAgIHR5cGVkZWYgZW51bSA6
IGludDhfdCB7Ci0gICAgICAgICAgICBhcHNyLAotICAgICAgICAgICAgZnBzY3IKLSAgICAgICAg
fSBTUFJlZ2lzdGVySUQ7Ci0KLSAgICAgICAgdHlwZWRlZiBlbnVtIDogaW50OF90IHsKLSAgICAg
ICAgICAgIGQwLAotICAgICAgICAgICAgZDEsCi0gICAgICAgICAgICBkMiwKLSAgICAgICAgICAg
IGQzLAotICAgICAgICAgICAgZDQsCi0gICAgICAgICAgICBkNSwKLSAgICAgICAgICAgIGQ2LAot
ICAgICAgICAgICAgZDcsCi0gICAgICAgICAgICBkOCwKLSAgICAgICAgICAgIGQ5LAotICAgICAg
ICAgICAgZDEwLAotICAgICAgICAgICAgZDExLAotICAgICAgICAgICAgZDEyLAotICAgICAgICAg
ICAgZDEzLAotICAgICAgICAgICAgZDE0LAotICAgICAgICAgICAgZDE1LAotI2lmIENQVShBUk1f
TkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotICAgICAgICAgICAgZDE2LAotICAgICAgICAg
ICAgZDE3LAotICAgICAgICAgICAgZDE4LAotICAgICAgICAgICAgZDE5LAotICAgICAgICAgICAg
ZDIwLAotICAgICAgICAgICAgZDIxLAotICAgICAgICAgICAgZDIyLAotICAgICAgICAgICAgZDIz
LAotICAgICAgICAgICAgZDI0LAotICAgICAgICAgICAgZDI1LAotICAgICAgICAgICAgZDI2LAot
ICAgICAgICAgICAgZDI3LAotICAgICAgICAgICAgZDI4LAotICAgICAgICAgICAgZDI5LAotICAg
ICAgICAgICAgZDMwLAotICAgICAgICAgICAgZDMxLAotI2VuZGlmIC8vIENQVShBUk1fTkVPTikg
fHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotICAgICAgICAgICAgSW52YWxpZEZQUlJlZyA9IC0xLAot
ICAgICAgICB9IEZQUmVnaXN0ZXJJRDsKLQotICAgIH0gLy8gbmFtZXNwYWNlIEFSTVJlZ2lzdGVy
cwotCi0gICAgY2xhc3MgQVJNQXNzZW1ibGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVk
ZWYgQVJNUmVnaXN0ZXJzOjpSZWdpc3RlcklEIFJlZ2lzdGVySUQ7Ci0gICAgICAgIHR5cGVkZWYg
QVJNUmVnaXN0ZXJzOjpTUFJlZ2lzdGVySUQgU1BSZWdpc3RlcklEOwotICAgICAgICB0eXBlZGVm
IEFSTVJlZ2lzdGVyczo6RlBSZWdpc3RlcklEIEZQUmVnaXN0ZXJJRDsKLSAgICAgICAgdHlwZWRl
ZiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sPDIwNDgsIDQsIDQsIEFSTUFzc2VtYmxl
cj4gQVJNQnVmZmVyOwotICAgICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3RvcjxBc3NlbWJsZXJM
YWJlbCwgNjQ+IEp1bXBzOwotCi0gICAgICAgIEFSTUFzc2VtYmxlcigpCi0gICAgICAgICAgICA6
IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KDEpCi0gICAgICAgIHsKLSAgICAgICAgfQot
Ci0gICAgICAgIEFSTUJ1ZmZlciYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLQotICAg
ICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZmlyc3RSZWdpc3RlcigpIHsgcmV0dXJu
IEFSTVJlZ2lzdGVyczo6cjA7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IGxhc3RSZWdpc3RlcigpIHsgcmV0dXJuIEFSTVJlZ2lzdGVyczo6cjE1OyB9Ci0gICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMoKSB7IHJldHVybiBsYXN0
UmVnaXN0ZXIoKSAtIGZpcnN0UmVnaXN0ZXIoKSArIDE7IH0KLQotICAgICAgICBzdGF0aWMgY29u
c3RleHByIFNQUmVnaXN0ZXJJRCBmaXJzdFNQUmVnaXN0ZXIoKSB7IHJldHVybiBBUk1SZWdpc3Rl
cnM6OmFwc3I7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBTUFJlZ2lzdGVySUQgbGFzdFNQ
UmVnaXN0ZXIoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OmZwc2NyOyB9Ci0gICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZTUFJlZ2lzdGVycygpIHsgcmV0dXJuIGxhc3RT
UFJlZ2lzdGVyKCkgLSBmaXJzdFNQUmVnaXN0ZXIoKSArIDE7IH0KLQotICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEZQUmVnaXN0ZXJJRCBmaXJzdEZQUmVnaXN0ZXIoKSB7IHJldHVybiBBUk1SZWdp
c3RlcnM6OmQwOyB9Ci0jaWYgQ1BVKEFSTV9ORU9OKSB8fCBDUFUoQVJNX1ZGUF9WM19EMzIpCi0g
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRlBSZWdpc3RlcklEIGxhc3RGUFJlZ2lzdGVyKCkgeyBy
ZXR1cm4gQVJNUmVnaXN0ZXJzOjpkMzE7IH0KLSNlbHNlCi0gICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgRlBSZWdpc3RlcklEIGxhc3RGUFJlZ2lzdGVyKCkgeyByZXR1cm4gQVJNUmVnaXN0ZXJzOjpk
MTU7IH0KLSNlbmRpZgotICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9m
RlBSZWdpc3RlcnMoKSB7IHJldHVybiBsYXN0RlBSZWdpc3RlcigpIC0gZmlyc3RGUFJlZ2lzdGVy
KCkgKyAxOyB9Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGdwck5hbWUoUmVnaXN0ZXJJ
RCBpZCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGlkID49IGZpcnN0UmVnaXN0ZXIo
KSAmJiBpZCA8PSBsYXN0UmVnaXN0ZXIoKSk7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgbmFtZUZvclJlZ2lzdGVyW251bWJlck9mUmVnaXN0ZXJzKCldID0gewotICAgICAg
ICAgICAgICAgICJyMCIsICJyMSIsICJyMiIsICJyMyIsCi0gICAgICAgICAgICAgICAgInI0Iiwg
InI1IiwgInI2IiwgInI3IiwKLSAgICAgICAgICAgICAgICAicjgiLCAicjkiLCAicjEwIiwgImZw
IiwKLSAgICAgICAgICAgICAgICAiaXAiLCAic3AiLCAibHIiLCAicGMiCi0gICAgICAgICAgICB9
OwotICAgICAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltpZF07Ci0gICAgICAgIH0KLQot
ICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc3ByTmFtZShTUFJlZ2lzdGVySUQgaWQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChpZCA+PSBmaXJzdFNQUmVnaXN0ZXIoKSAmJiBpZCA8
PSBsYXN0U1BSZWdpc3RlcigpKTsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBuYW1lRm9yUmVnaXN0ZXJbbnVtYmVyT2ZTUFJlZ2lzdGVycygpXSA9IHsKLSAgICAgICAgICAg
ICAgICAiYXBzciIsICJmcHNjciIKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICByZXR1cm4g
bmFtZUZvclJlZ2lzdGVyW2lkXTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBmcHJOYW1lKEZQUmVnaXN0ZXJJRCBpZCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKGlkID49IGZpcnN0RlBSZWdpc3RlcigpICYmIGlkIDw9IGxhc3RGUFJlZ2lzdGVyKCkpOwot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWVGb3JSZWdpc3RlcltudW1i
ZXJPZkZQUmVnaXN0ZXJzKCldID0gewotICAgICAgICAgICAgICAgICJkMCIsICJkMSIsICJkMiIs
ICJkMyIsCi0gICAgICAgICAgICAgICAgImQ0IiwgImQ1IiwgImQ2IiwgImQ3IiwKLSAgICAgICAg
ICAgICAgICAiZDgiLCAiZDkiLCAiZDEwIiwgImQxMSIsCi0gICAgICAgICAgICAgICAgImQxMiIs
ICJkMTMiLCAiZDE0IiwgImQxNSIsCi0jaWYgQ1BVKEFSTV9ORU9OKSB8fCBDUFUoQVJNX1ZGUF9W
M19EMzIpCi0gICAgICAgICAgICAgICAgImQxNiIsICJkMTciLCAiZDE4IiwgImQxOSIsCi0gICAg
ICAgICAgICAgICAgImQyMCIsICJkMjEiLCAiZDIyIiwgImQyMyIsCi0gICAgICAgICAgICAgICAg
ImQyNCIsICJkMjUiLCAiZDI2IiwgImQyNyIsCi0gICAgICAgICAgICAgICAgImQyOCIsICJkMjki
LCAiZDMwIiwgImQzMSIKLSNlbmRpZiAvLyBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1Yz
X0QzMikKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVy
W2lkXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFSTSBjb25kaXRpb25hbCBjb25zdGFudHMK
LSAgICAgICAgdHlwZWRlZiBlbnVtIHsKLSAgICAgICAgICAgIEVRID0gMHgwMDAwMDAwMCwgLy8g
WmVybyAvIEVxdWFsLgotICAgICAgICAgICAgTkUgPSAweDEwMDAwMDAwLCAvLyBOb24temVybyAv
IE5vdCBlcXVhbC4KLSAgICAgICAgICAgIENTID0gMHgyMDAwMDAwMCwgLy8gVW5zaWduZWQgaGln
aGVyIG9yIHNhbWUuCi0gICAgICAgICAgICBDQyA9IDB4MzAwMDAwMDAsIC8vIFVuc2lnbmVkIGxv
d2VyLgotICAgICAgICAgICAgTUkgPSAweDQwMDAwMDAwLCAvLyBOZWdhdGl2ZS4KLSAgICAgICAg
ICAgIFBMID0gMHg1MDAwMDAwMCwgLy8gUG9zaXRpdmUgb3IgemVyby4KLSAgICAgICAgICAgIFZT
ID0gMHg2MDAwMDAwMCwgLy8gT3ZlcmZsb3dlZC4KLSAgICAgICAgICAgIFZDID0gMHg3MDAwMDAw
MCwgLy8gTm90IG92ZXJmbG93ZWQuCi0gICAgICAgICAgICBISSA9IDB4ODAwMDAwMDAsIC8vIFVu
c2lnbmVkIGhpZ2hlci4KLSAgICAgICAgICAgIExTID0gMHg5MDAwMDAwMCwgLy8gVW5zaWduZWQg
bG93ZXIgb3Igc2FtZS4KLSAgICAgICAgICAgIEdFID0gMHhhMDAwMDAwMCwgLy8gU2lnbmVkIGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbC4KLSAgICAgICAgICAgIExUID0gMHhiMDAwMDAwMCwgLy8gU2ln
bmVkIGxlc3MgdGhhbi4KLSAgICAgICAgICAgIEdUID0gMHhjMDAwMDAwMCwgLy8gU2lnbmVkIGdy
ZWF0ZXIgdGhhbi4KLSAgICAgICAgICAgIExFID0gMHhkMDAwMDAwMCwgLy8gU2lnbmVkIGxlc3Mg
dGhhbiBvciBlcXVhbC4KLSAgICAgICAgICAgIEFMID0gMHhlMDAwMDAwMCAgLy8gVW5jb25kaXRp
b25hbCAvIEFsd2F5cyBleGVjdXRlLgotICAgICAgICB9IENvbmRpdGlvbjsKLQotICAgICAgICAv
LyBBUk0gaW5zdHJ1Y3Rpb24gY29uc3RhbnRzCi0gICAgICAgIGVudW0gewotICAgICAgICAgICAg
QU5EID0gKDB4MCA8PCAyMSksCi0gICAgICAgICAgICBFT1IgPSAoMHgxIDw8IDIxKSwKLSAgICAg
ICAgICAgIFNVQiA9ICgweDIgPDwgMjEpLAotICAgICAgICAgICAgUlNCID0gKDB4MyA8PCAyMSks
Ci0gICAgICAgICAgICBBREQgPSAoMHg0IDw8IDIxKSwKLSAgICAgICAgICAgIEFEQyA9ICgweDUg
PDwgMjEpLAotICAgICAgICAgICAgU0JDID0gKDB4NiA8PCAyMSksCi0gICAgICAgICAgICBSU0Mg
PSAoMHg3IDw8IDIxKSwKLSAgICAgICAgICAgIFRTVCA9ICgweDggPDwgMjEpLAotICAgICAgICAg
ICAgVEVRID0gKDB4OSA8PCAyMSksCi0gICAgICAgICAgICBDTVAgPSAoMHhhIDw8IDIxKSwKLSAg
ICAgICAgICAgIENNTiA9ICgweGIgPDwgMjEpLAotICAgICAgICAgICAgT1JSID0gKDB4YyA8PCAy
MSksCi0gICAgICAgICAgICBNT1YgPSAoMHhkIDw8IDIxKSwKLSAgICAgICAgICAgIEJJQyA9ICgw
eGUgPDwgMjEpLAotICAgICAgICAgICAgTVZOID0gKDB4ZiA8PCAyMSksCi0gICAgICAgICAgICBN
VUwgPSAweDAwMDAwMDkwLAotICAgICAgICAgICAgTVVMTCA9IDB4MDBjMDAwOTAsCi0gICAgICAg
ICAgICBWTU9WX0Y2NCA9IDB4MGViMDBiNDAsCi0gICAgICAgICAgICBWQUREX0Y2NCA9IDB4MGUz
MDBiMDAsCi0gICAgICAgICAgICBWRElWX0Y2NCA9IDB4MGU4MDBiMDAsCi0gICAgICAgICAgICBW
U1VCX0Y2NCA9IDB4MGUzMDBiNDAsCi0gICAgICAgICAgICBWTVVMX0Y2NCA9IDB4MGUyMDBiMDAs
Ci0gICAgICAgICAgICBWQ01QX0Y2NCA9IDB4MGViNDBiNDAsCi0gICAgICAgICAgICBWU1FSVF9G
NjQgPSAweDBlYjEwYmMwLAotICAgICAgICAgICAgVkFCU19GNjQgPSAweDBlYjAwYmMwLAotICAg
ICAgICAgICAgVk5FR19GNjQgPSAweDBlYjEwYjQwLAotICAgICAgICAgICAgU1RNREIgPSAweDA5
MjAwMDAwLAotICAgICAgICAgICAgTERNSUEgPSAweDA4YjAwMDAwLAotICAgICAgICAgICAgQiA9
IDB4MGEwMDAwMDAsCi0gICAgICAgICAgICBCTCA9IDB4MGIwMDAwMDAsCi0gICAgICAgICAgICBC
WCA9IDB4MDEyZmZmMTAsCi0gICAgICAgICAgICBWTU9WX1ZGUDY0ID0gMHgwYzQwMGExMCwKLSAg
ICAgICAgICAgIFZNT1ZfQVJNNjQgPSAweDBjNTAwYTEwLAotICAgICAgICAgICAgVk1PVl9WRlAz
MiA9IDB4MGUwMDBhMTAsCi0gICAgICAgICAgICBWTU9WX0FSTTMyID0gMHgwZTEwMGExMCwKLSAg
ICAgICAgICAgIFZDVlRfRjY0X1MzMiA9IDB4MGViODBiYzAsCi0gICAgICAgICAgICBWQ1ZUX1Mz
Ml9GNjQgPSAweDBlYmQwYmMwLAotICAgICAgICAgICAgVkNWVF9VMzJfRjY0ID0gMHgwZWJjMGJj
MCwKLSAgICAgICAgICAgIFZDVlRfRjMyX0Y2NCA9IDB4MGViNzBiYzAsCi0gICAgICAgICAgICBW
Q1ZUX0Y2NF9GMzIgPSAweDBlYjcwYWMwLAotICAgICAgICAgICAgVk1SU19BUFNSID0gMHgwZWYx
ZmExMCwKLSAgICAgICAgICAgIENMWiA9IDB4MDE2ZjBmMTAsCi0gICAgICAgICAgICBCS1BUID0g
MHhlMTIwMDA3MCwKLSAgICAgICAgICAgIEJMWCA9IDB4MDEyZmZmMzAsCi0jaWYgV1RGX0FSTV9B
UkNIX0FUX0xFQVNUKDcpCi0gICAgICAgICAgICBNT1ZXID0gMHgwMzAwMDAwMCwKLSAgICAgICAg
ICAgIE1PVlQgPSAweDAzNDAwMDAwLAotI2VuZGlmCi0gICAgICAgICAgICBOT1AgPSAweGUxYTAw
MDAwLAotICAgICAgICAgICAgRE1CX1NZID0gMHhmNTdmZjA1ZiwKLSAgICAgICAgICAgIERNQl9J
U0hTVCA9IDB4ZjU3ZmYwNWEsCi0jaWYgSEFWRShBUk1fSURJVl9JTlNUUlVDVElPTlMpCi0gICAg
ICAgICAgICBTRElWID0gMHgwNzEwZjAxMCwKLSAgICAgICAgICAgIFVESVYgPSAweDA3MzBmMDEw
LAotI2VuZGlmCi0gICAgICAgIH07Ci0KLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBPcDJJ
bW1lZGlhdGUgPSAoMSA8PCAyNSksCi0gICAgICAgICAgICBJbW1lZGlhdGVGb3JIYWxmV29yZFRy
YW5zZmVyID0gKDEgPDwgMjIpLAotICAgICAgICAgICAgT3AySW52ZXJ0ZWRJbW1lZGlhdGUgPSAo
MSA8PCAyNiksCi0gICAgICAgICAgICBTZXRDb25kaXRpb25hbENvZGVzID0gKDEgPDwgMjApLAot
ICAgICAgICAgICAgT3AySXNSZWdpc3RlckFyZ3VtZW50ID0gKDEgPDwgMjUpLAotICAgICAgICAg
ICAgLy8gRGF0YSB0cmFuc2ZlciBmbGFncy4KLSAgICAgICAgICAgIERhdGFUcmFuc2ZlclVwID0g
KDEgPDwgMjMpLAotICAgICAgICAgICAgRGF0YVRyYW5zZmVyV3JpdGVCYWNrID0gKDEgPDwgMjEp
LAotICAgICAgICAgICAgRGF0YVRyYW5zZmVyUG9zdFVwZGF0ZSA9ICgxIDw8IDI0KSwKLSAgICAg
ICAgICAgIERhdGFUcmFuc2ZlckxvYWQgPSAoMSA8PCAyMCksCi0gICAgICAgICAgICBCeXRlRGF0
YVRyYW5zZmVyID0gKDEgPDwgMjIpLAotICAgICAgICB9OwotCi0gICAgICAgIGVudW0gRGF0YVRy
YW5zZmVyVHlwZUEgewotICAgICAgICAgICAgTG9hZFVpbnQzMiA9IDB4MDUwMDAwMDAgfCBEYXRh
VHJhbnNmZXJMb2FkLAotICAgICAgICAgICAgTG9hZFVpbnQ4ID0gMHgwNTQwMDAwMCB8IERhdGFU
cmFuc2ZlckxvYWQsCi0gICAgICAgICAgICBTdG9yZVVpbnQzMiA9IDB4MDUwMDAwMDAsCi0gICAg
ICAgICAgICBTdG9yZVVpbnQ4ID0gMHgwNTQwMDAwMCwKLSAgICAgICAgfTsKLQotICAgICAgICBl
bnVtIERhdGFUcmFuc2ZlclR5cGVCIHsKLSAgICAgICAgICAgIExvYWRVaW50MTYgPSAweDAxMDAw
MGIwIHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAgICAgICAgICAgIExvYWRJbnQxNiA9IDB4MDEwMDAw
ZjAgfCBEYXRhVHJhbnNmZXJMb2FkLAotICAgICAgICAgICAgTG9hZEludDggPSAweDAxMDAwMGQw
IHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAgICAgICAgICAgIFN0b3JlVWludDE2ID0gMHgwMTAwMDBi
MCwKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIERhdGFUcmFuc2ZlclR5cGVGbG9hdCB7Ci0g
ICAgICAgICAgICBMb2FkRmxvYXQgPSAweDBkMDAwYTAwIHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAg
ICAgICAgICAgIExvYWREb3VibGUgPSAweDBkMDAwYjAwIHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAg
ICAgICAgICAgIFN0b3JlRmxvYXQgPSAweDBkMDAwYTAwLAotICAgICAgICAgICAgU3RvcmVEb3Vi
bGUgPSAweDBkMDAwYjAwLAotICAgICAgICB9OwotCi0gICAgICAgIC8vIE1hc2tzIG9mIEFSTSBp
bnN0cnVjdGlvbnMKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBCcmFuY2hPZmZzZXRNYXNr
ID0gMHgwMGZmZmZmZiwKLSAgICAgICAgICAgIENvbmRpdGlvbmFsRmllbGRNYXNrID0gMHhmMDAw
MDAwMCwKLSAgICAgICAgICAgIERhdGFUcmFuc2Zlck9mZnNldE1hc2sgPSAweGZmZiwKLSAgICAg
ICAgfTsKLQotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE1pbmltdW1CcmFuY2hPZmZzZXRE
aXN0YW5jZSA9IC0weDAwODAwMDAwLAotICAgICAgICAgICAgTWF4aW11bUJyYW5jaE9mZnNldERp
c3RhbmNlID0gMHgwMDdmZmZmZiwKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIHsKLSAgICAg
ICAgICAgIHBhZEZvckFsaWduOCAgPSAweDAwLAotICAgICAgICAgICAgcGFkRm9yQWxpZ24xNiA9
IDB4MDAwMCwKLSAgICAgICAgICAgIHBhZEZvckFsaWduMzIgPSAweGUxMmZmZjdmIC8vICdia3B0
IDB4ZmZmZicgaW5zdHJ1Y3Rpb24uCi0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0
IEFSTVdvcmQgSW52YWxpZEltbWVkaWF0ZSA9IDB4ZjAwMDAwMDA7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBBUk1Xb3JkIEludmFsaWRCcmFuY2hUYXJnZXQgPSAweGZmZmZmZmZmOwotICAgICAgICBz
dGF0aWMgY29uc3QgaW50IERlZmF1bHRQcmVmZXRjaE9mZnNldCA9IDI7Ci0KLSAgICAgICAgc3Rh
dGljIGNvbnN0IEFSTVdvcmQgQmx4SW5zdHJ1Y3Rpb25NYXNrID0gMHgwMTJmZmYzMDsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgTGRyT3JBZGRJbnN0cnVjdGlvbk1hc2sgPSAweDBmZjAw
MDAwOwotICAgICAgICBzdGF0aWMgY29uc3QgQVJNV29yZCBMZHJQY0ltbWVkaWF0ZUluc3RydWN0
aW9uTWFzayA9IDB4MGY3ZjAwMDA7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgQWRk
SW1tZWRpYXRlSW5zdHJ1Y3Rpb24gPSAweDAyODAwMDAwOwotICAgICAgICBzdGF0aWMgY29uc3Qg
QVJNV29yZCBCbHhJbnN0cnVjdGlvbiA9IDB4MDEyZmZmMzA7Ci0gICAgICAgIHN0YXRpYyBjb25z
dCBBUk1Xb3JkIExkckltbWVkaWF0ZUluc3RydWN0aW9uID0gMHgwNTkwMDAwMDsKLSAgICAgICAg
c3RhdGljIGNvbnN0IEFSTVdvcmQgTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbiA9IDB4MDUxZjAw
MDA7Ci0KLSAgICAgICAgLy8gSW5zdHJ1Y3Rpb24gZm9ybWF0aW5nCi0KLSAgICAgICAgdm9pZCBl
bWl0SW5zdHJ1Y3Rpb24oQVJNV29yZCBvcCwgaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoKChvcDIgJiB+T3AySW1tZWRpYXRlKSA8PSAw
eGZmZikgfHwgKCgob3AyICYgfkltbWVkaWF0ZUZvckhhbGZXb3JkVHJhbnNmZXIpIDw9IDB4ZmZm
KSkpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KG9wIHwgUk4ocm4pIHwgUkQocmQpIHwg
b3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZW1pdERvdWJsZVByZWNpc2lvbkluc3Ry
dWN0aW9uKEFSTVdvcmQgb3AsIGludCBkZCwgaW50IGRuLCBpbnQgZG0pCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEFTU0VSVCgoZGQgPj0gMCAmJiBkZCA8PSAzMSkgJiYgKGRuID49IDAgJiYgZG4g
PD0gMzEpICYmIChkbSA+PSAwICYmIGRtIDw9IDMxKSk7Ci0gICAgICAgICAgICBtX2J1ZmZlci5w
dXRJbnQob3AgfCAoKGRkICYgMHhmKSA8PCAxMikgfCAoKGRkICYgMHgxMCkgPDwgKDIyIC0gNCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGRuICYgMHhmKSA8PCAxNikgfCAo
KGRuICYgMHgxMCkgPDwgKDcgLSA0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IChkbSAmIDB4ZikgfCAoKGRtICYgMHgxMCkgPDwgKDUgLSA0KSkpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdm9pZCBlbWl0U2luZ2xlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24oQVJNV29yZCBvcCwgaW50
IHNkLCBpbnQgc24sIGludCBzbSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKChzZCA+
PSAwICYmIHNkIDw9IDMxKSAmJiAoc24gPj0gMCAmJiBzbiA8PSAzMSkgJiYgKHNtID49IDAgJiYg
c20gPD0gMzEpKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChvcCB8ICgoc2QgPj4gMSkg
PDwgMTIpIHwgKChzZCAmIDB4MSkgPDwgMjIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAoKHNuID4+IDEpIDw8IDE2KSB8ICgoc24gJiAweDEpIDw8IDcpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAoc20gPj4gMSkgfCAoKHNtICYgMHgxKSA8PCA1KSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2b2lkIGJpdEFuZChpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIs
IENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rp
b24odG9BUk1Xb3JkKGNjKSB8IEFORCwgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCBiaXRBbmRzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNj
ID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQo
Y2MpIHwgQU5EIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCBlb3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRp
b24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJN
V29yZChjYykgfCBFT1IsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
ZW9ycyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEVPUiB8
IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgc3ViKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwg
U1VCLCByZCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHN1YnMoaW50IHJk
LCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBTVUIgfCBTZXRDb25kaXRp
b25hbENvZGVzLCByZCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHJzYihp
bnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7
Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFJTQiwgcmQsIHJu
LCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCByc2JzKGludCByZCwgaW50IHJuLCBB
Uk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVt
aXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgUlNCIHwgU2V0Q29uZGl0aW9uYWxDb2Rlcywg
cmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBhZGQoaW50IHJkLCBpbnQg
cm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBBREQsIHJkLCBybiwgb3AyKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZvaWQgYWRkcyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIs
IENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rp
b24odG9BUk1Xb3JkKGNjKSB8IEFERCB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3Ay
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYWRjKGludCByZCwgaW50IHJuLCBBUk1Xb3Jk
IG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0
cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQURDLCByZCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIGFkY3MoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24g
Y2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29y
ZChjYykgfCBBREMgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7Ci0gICAgICAg
IH0KLQotICAgICAgICB2b2lkIHNiYyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRp
dGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9B
Uk1Xb3JkKGNjKSB8IFNCQywgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9p
ZCBzYmNzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgU0JD
IHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCByc2MoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBB
TCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykg
fCBSU0MsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcnNjcyhpbnQg
cmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFJTQyB8IFNldENvbmRp
dGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdHN0
KGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFRTVCB8IFNldENvbmRpdGlv
bmFsQ29kZXMsIDAsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB0ZXEoaW50
IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVEVRIHwgU2V0Q29uZGl0aW9uYWxD
b2RlcywgMCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNtcChpbnQgcm4s
IEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBDTVAgfCBTZXRDb25kaXRpb25hbENvZGVz
LCAwLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY21uKGludCBybiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0
SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IENNTiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIDAs
IHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBvcnIoaW50IHJkLCBpbnQgcm4s
IEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBPUlIsIHJkLCBybiwgb3AyKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgb3JycyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENv
bmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24o
dG9BUk1Xb3JkKGNjKSB8IE9SUiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbW92KGludCByZCwgQVJNV29yZCBvcDIsIENvbmRp
dGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9B
Uk1Xb3JkKGNjKSB8IE1PViwgcmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7Ci0gICAgICAgIH0K
LQotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQotICAgICAgICB2b2lkIG1vdncoaW50IHJk
LCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVCgob3AyIHwgMHhmMGZmZikgPT0gMHhmMGZmZik7Ci0gICAgICAgICAgICBtX2J1ZmZl
ci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IE1PVlcgfCBSRChyZCkgfCBvcDIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCBtb3Z0KGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9
IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoKG9wMiB8IDB4ZjBmZmYpID09IDB4
ZjBmZmYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBNT1ZU
IHwgUkQocmQpIHwgb3AyKTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgdm9pZCBtb3Zz
KGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1PViB8IFNldENvbmRpdGlv
bmFsQ29kZXMsIHJkLCBBUk1SZWdpc3RlcnM6OnIwLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCBiaWMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBB
TCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykg
fCBCSUMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYmljcyhpbnQg
cmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEJJQyB8IFNldENvbmRp
dGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbXZu
KGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1WTiwgcmQsIEFSTVJlZ2lz
dGVyczo6cjAsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG12bnMoaW50IHJkLCBB
Uk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVt
aXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgTVZOIHwgU2V0Q29uZGl0aW9uYWxDb2Rlcywg
cmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG11
bChpbnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewot
ICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBNVUwgfCBSTihyZCkg
fCBSUyhybikgfCBSTShybSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtdWxzKGludCBy
ZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IE1VTCB8IFNldENvbmRpdGlvbmFs
Q29kZXMgfCBSTihyZCkgfCBSUyhybikgfCBSTShybSkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dm9pZCBtdWxsKGludCByZGhpLCBpbnQgcmRsbywgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBj
YyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3Jk
KGNjKSB8IE1VTEwgfCBSTihyZGhpKSB8IFJEKHJkbG8pIHwgUlMocm4pIHwgUk0ocm0pKTsKLSAg
ICAgICAgfQotCi0jaWYgSEFWRShBUk1fSURJVl9JTlNUUlVDVElPTlMpCi0gICAgICAgIHRlbXBs
YXRlPGludCBkYXRhc2l6ZT4KLSAgICAgICAgdm9pZCBzZGl2KGludCByZCwgaW50IHJuLCBpbnQg
cm0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWNfYXNz
ZXJ0KGRhdGFzaXplID09IDMyLCAic2RpdiBkYXRhc2l6ZSBtdXN0IGJlIDMyIGZvciBhcm12N3Mi
KTsKLSAgICAgICAgICAgIEFTU0VSVChyZCAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAg
ICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVChy
bSAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FS
TVdvcmQoY2MpIHwgU0RJViB8IFJOKHJkKSB8IFJNKHJuKSB8IFJTKHJtKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIHVkaXYoaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNj
ID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZCAhPSBBUk1SZWdpc3RlcnM6
OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAg
ICAgICAgIEFTU0VSVChybSAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIG1fYnVm
ZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgVURJViB8IFJOKHJkKSB8IFJNKHJuKSB8IFJTKHJt
KSk7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgIHZvaWQgdm1vdl9mNjQoaW50IGRkLCBp
bnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0RG91
YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZNT1ZfRjY0LCBkZCwgMCwg
ZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2YWRkX2Y2NChpbnQgZGQsIGludCBkbiwg
aW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdERv
dWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQUREX0Y2NCwgZGQsIGRu
LCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZkaXZfZjY0KGludCBkZCwgaW50IGRu
LCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0
RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZESVZfRjY0LCBkZCwg
ZG4sIGRtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdnN1Yl9mNjQoaW50IGRkLCBpbnQg
ZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVt
aXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVlNVQl9GNjQsIGRk
LCBkbiwgZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bXVsX2Y2NChpbnQgZGQsIGlu
dCBkbiwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWTVVMX0Y2NCwg
ZGQsIGRuLCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZjbXBfZjY0KGludCBkZCwg
aW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdERv
dWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQ01QX0Y2NCwgZGQsIDAs
IGRtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdnNxcnRfZjY0KGludCBkZCwgaW50IGRt
LCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdERvdWJsZVBy
ZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWU1FSVF9GNjQsIGRkLCAwLCBkbSk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZhYnNfZjY0KGludCBkZCwgaW50IGRtLCBDb25k
aXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lv
bkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQUJTX0Y2NCwgZGQsIDAsIGRtKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgdm5lZ19mNjQoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBj
YyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZORUdfRjY0LCBkZCwgMCwgZG0pOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCBsZHJJbW1lZGlhdGUoaW50IHJkLCBBUk1Xb3JkIGltbSwgQ29uZGl0aW9u
IGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludFdpdGhDb25z
dGFudEludCh0b0FSTVdvcmQoY2MpIHwgTG9hZFVpbnQzMiB8IERhdGFUcmFuc2ZlclVwIHwgUk4o
QVJNUmVnaXN0ZXJzOjpwYykgfCBSRChyZCksIGltbSwgdHJ1ZSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB2b2lkIGxkclVuaXF1ZUltbWVkaWF0ZShpbnQgcmQsIEFSTVdvcmQgaW1tLCBDb25kaXRp
b24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50V2l0aENv
bnN0YW50SW50KHRvQVJNV29yZChjYykgfCBMb2FkVWludDMyIHwgRGF0YVRyYW5zZmVyVXAgfCBS
TihBUk1SZWdpc3RlcnM6OnBjKSB8IFJEKHJkKSwgaW1tKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgZHRyVXAoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCBy
YiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSB8IERhdGFUcmFu
c2ZlclVwLCByZCwgcmIsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGR0clVwUmVn
aXN0ZXIoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgaW50
IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3Ry
dWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUgfCBEYXRhVHJhbnNmZXJVcCB8IE9w
MklzUmVnaXN0ZXJBcmd1bWVudCwgcmQsIHJiLCBybSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIGR0ckRvd24oRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCBy
YiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSwgcmQsIHJiLCBv
cDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkdHJEb3duUmVnaXN0ZXIoRGF0YVRyYW5z
ZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBDb25kaXRpb24g
Y2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29y
ZChjYykgfCB0cmFuc2ZlclR5cGUgfCBPcDJJc1JlZ2lzdGVyQXJndW1lbnQsIHJkLCByYiwgcm0p
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBoYWxmRHRyVXAoRGF0YVRyYW5zZmVyVHlwZUIg
dHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9
IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNj
KSB8IHRyYW5zZmVyVHlwZSB8IERhdGFUcmFuc2ZlclVwLCByZCwgcmIsIG9wMik7Ci0gICAgICAg
IH0KLQotICAgICAgICB2b2lkIGhhbGZEdHJVcFJlZ2lzdGVyKERhdGFUcmFuc2ZlclR5cGVCIHRy
YW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJh
bnNmZXJUeXBlIHwgRGF0YVRyYW5zZmVyVXAsIHJkLCBybiwgcm0pOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdm9pZCBoYWxmRHRyRG93bihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUsIGlu
dCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJhbnNmZXJUeXBl
LCByZCwgcmIsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGhhbGZEdHJEb3duUmVn
aXN0ZXIoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCBybiwgaW50
IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3Ry
dWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUsIHJkLCBybiwgcm0pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdm9pZCBkb3VibGVEdHJVcChEYXRhVHJhbnNmZXJUeXBlRmxvYXQgdHlw
ZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKG9wMiA8PSAweGZmICYmIHJkIDw9IDE1KTsKLSAgICAg
ICAgICAgIC8qIE9ubHkgZDAtZDE1IGFuZCBzMCwgczIsIHM0IC4uLiBzMzAgYXJlIHN1cHBvcnRl
ZC4gKi8KLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgRGF0YVRy
YW5zZmVyVXAgfCB0eXBlIHwgKHJkIDw8IDEyKSB8IFJOKHJiKSB8IG9wMik7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIGRvdWJsZUR0ckRvd24oRGF0YVRyYW5zZmVyVHlwZUZsb2F0IHR5cGUs
IGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChvcDIgPD0gMHhmZiAmJiByZCA8PSAxNSk7Ci0gICAgICAg
ICAgICAvKiBPbmx5IGQwLWQxNSBhbmQgczAsIHMyLCBzNCAuLi4gczMwIGFyZSBzdXBwb3J0ZWQu
ICovCi0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IHR5cGUgfCAo
cmQgPDwgMTIpIHwgUk4ocmIpIHwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcHVz
aChpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKEFSTVdvcmQocmVnKSA8PSAweGYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRv
QVJNV29yZChjYykgfCBTdG9yZVVpbnQzMiB8IERhdGFUcmFuc2ZlcldyaXRlQmFjayB8IFJOKEFS
TVJlZ2lzdGVyczo6c3ApIHwgUkQocmVnKSB8IDB4NCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIHBvcChpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8PSAweGYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0
SW50KHRvQVJNV29yZChjYykgfCAoTG9hZFVpbnQzMiBeIERhdGFUcmFuc2ZlclBvc3RVcGRhdGUp
IHwgRGF0YVRyYW5zZmVyVXAgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJEKHJlZykgfCAweDQp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaW5saW5lIHZvaWQgcG9rZShpbnQgcmVnLCBDb25kaXRp
b24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZHRyRG93bihTdG9yZVVpbnQzMiwg
QVJNUmVnaXN0ZXJzOjpzcCwgMCwgcmVnLCBjYyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbmxp
bmUgdm9pZCBwZWVrKGludCByZWcsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBkdHJVcChMb2FkVWludDMyLCByZWcsIEFSTVJlZ2lzdGVyczo6c3AsIDAsIGNjKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdm1vdl92ZnA2NChpbnQgc20sIGludCBydCwgaW50
IHJ0MiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChy
dCAhPSBydDIpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBW
TU9WX1ZGUDY0IHwgUk4ocnQyKSB8IFJEKHJ0KSB8IChzbSAmIDB4ZikgfCAoKHNtICYgMHgxMCkg
PDwgKDUgLSA0KSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bW92X2FybTY0KGludCBy
dCwgaW50IHJ0MiwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKHJ0ICE9IHJ0Mik7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9B
Uk1Xb3JkKGNjKSB8IFZNT1ZfQVJNNjQgfCBSTihydDIpIHwgUkQocnQpIHwgKHNtICYgMHhmKSB8
ICgoc20gJiAweDEwKSA8PCAoNSAtIDQpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZt
b3ZfdmZwMzIoaW50IHNuLCBpbnQgcnQsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBBU1NFUlQocnQgPD0gMTUpOwotICAgICAgICAgICAgZW1pdFNpbmdsZVByZWNp
c2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWTU9WX1ZGUDMyLCBydCA8PCAxLCBzbiwg
MCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZtb3ZfYXJtMzIoaW50IHJ0LCBpbnQgc24s
IENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocnQgPD0g
MTUpOwotICAgICAgICAgICAgZW1pdFNpbmdsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29y
ZChjYykgfCBWTU9WX0FSTTMyLCBydCA8PCAxLCBzbiwgMCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2b2lkIHZjdnRfZjY0X3MzMihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNjID0gQUwpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghKHNtICYgMHgxKSk7IC8vIHNtIG11c3QgYmUg
ZGl2aXNpYmxlIGJ5IDIKLSAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlv
bih0b0FSTVdvcmQoY2MpIHwgVkNWVF9GNjRfUzMyLCBkZCwgMCwgKHNtID4+IDEpKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgdmN2dF9zMzJfZjY0KGludCBzZCwgaW50IGRtLCBDb25kaXRp
b24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCEoc2QgJiAweDEpKTsg
Ly8gc2QgbXVzdCBiZSBkaXZpc2libGUgYnkgMgotICAgICAgICAgICAgZW1pdERvdWJsZVByZWNp
c2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQ1ZUX1MzMl9GNjQsIChzZCA+PiAxKSwg
MCwgZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2Y3Z0X3UzMl9mNjQoaW50IHNkLCBp
bnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQo
IShzZCAmIDB4MSkpOyAvLyBzZCBtdXN0IGJlIGRpdmlzaWJsZSBieSAyCi0gICAgICAgICAgICBl
bWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZDVlRfVTMyX0Y2
NCwgKHNkID4+IDEpLCAwLCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZjdnRfZjY0
X2YzMihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEFTU0VSVChkZCA8PSAxNSAmJiBzbSA8PSAxNSk7Ci0gICAgICAgICAgICBlbWl0RG91
YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZDVlRfRjY0X0YzMiwgZGQs
IDAsIHNtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdmN2dF9mMzJfZjY0KGludCBkZCwg
aW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJU
KGRkIDw9IDE1ICYmIHNtIDw9IDE1KTsKLSAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25J
bnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVkNWVF9GMzJfRjY0LCBkZCwgMCwgc20pOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bXJzX2Fwc3IoQ29uZGl0aW9uIGNjID0gQUwpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgVk1SU19B
UFNSKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2x6KGludCByZCwgaW50IHJtLCBDb25k
aXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRv
QVJNV29yZChjYykgfCBDTFogfCBSRChyZCkgfCBSTShybSkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCBia3B0KEFSTVdvcmQgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVm
ZmVyLnB1dEludChCS1BUIHwgKCh2YWx1ZSAmIDB4ZmYwKSA8PCA0KSB8ICh2YWx1ZSAmIDB4Zikp
OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgaXNCa3B0KHZvaWQqIGFkZHJlc3Mp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQgZXhwZWN0ZWQgPSBCS1BUOwotICAgICAg
ICAgICAgQVJNV29yZCBpbW1lZGlhdGVNYXNrID0gKDB4ZmYwIDw8IDQpIHwgMHhmOwotICAgICAg
ICAgICAgQVJNV29yZCBjYW5kaWRhdGVJbnN0cnVjdGlvbiA9ICpyZWludGVycHJldF9jYXN0PEFS
TVdvcmQqPihhZGRyZXNzKTsKLSAgICAgICAgICAgIHJldHVybiAoY2FuZGlkYXRlSW5zdHJ1Y3Rp
b24gJiB+aW1tZWRpYXRlTWFzaykgPT0gZXhwZWN0ZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIG5vcCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChOT1ApOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvcHlGdW5jdGlvbj4KLSAg
ICAgICAgc3RhdGljIHZvaWQgZmlsbE5vcHModm9pZCogYmFzZSwgc2l6ZV90IHNpemUsIENvcHlG
dW5jdGlvbiBjb3B5KQotICAgICAgICB7Ci0gICAgICAgICAgICBVTlVTRURfUEFSQU0oY29weSk7
Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHNpemUgJSBzaXplb2YoaW50MzJfdCkpKTsK
LQotICAgICAgICAgICAgaW50MzJfdCogcHRyID0gc3RhdGljX2Nhc3Q8aW50MzJfdCo+KGJhc2Up
OwotICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bTMycyA9IHNpemUgLyBzaXplb2YoaW50MzJf
dCk7Ci0gICAgICAgICAgICBjb25zdCBpbnQzMl90IGluc24gPSBOT1A7Ci0gICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bTMyczsgaSsrKQotICAgICAgICAgICAgICAgICpwdHIr
KyA9IGluc247Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRtYlNZKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KERNQl9TWSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2b2lkIGRtYklTSFNUKCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50
KERNQl9JU0hTVCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGJ4KGludCBybSwgQ29uZGl0
aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FS
TVdvcmQoY2MpIHwgQlgsIDAsIDAsIFJNKHJtKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3Nl
bWJsZXJMYWJlbCBibHgoaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBCTFgsIDAsIDAsIFJNKHJt
KSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHN0YXRpYyBBUk1Xb3JkIGxzbChpbnQgcmVnLCBBUk1Xb3JkIHZhbHVlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAg
ICAgICAgQVNTRVJUKHZhbHVlIDw9IDB4MWYpOwotICAgICAgICAgICAgcmV0dXJuIHJlZyB8ICh2
YWx1ZSA8PCA3KSB8IDB4MDA7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJNV29yZCBs
c3IoaW50IHJlZywgQVJNV29yZCB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJU
KHJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSA8PSAw
eDFmKTsKLSAgICAgICAgICAgIHJldHVybiByZWcgfCAodmFsdWUgPDwgNykgfCAweDIwOwotICAg
ICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQgYXNyKGludCByZWcsIEFSTVdvcmQgdmFs
dWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpw
Yyk7Ci0gICAgICAgICAgICBBU1NFUlQodmFsdWUgPD0gMHgxZik7Ci0gICAgICAgICAgICByZXR1
cm4gcmVnIHwgKHZhbHVlIDw8IDcpIHwgMHg0MDsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRp
YyBBUk1Xb3JkIGxzbFJlZ2lzdGVyKGludCByZWcsIGludCBzaGlmdFJlZykKLSAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKHJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAg
IEFTU0VSVChzaGlmdFJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIHJldHVy
biByZWcgfCAoc2hpZnRSZWcgPDwgOCkgfCAweDEwOwotICAgICAgICB9Ci0KLSAgICAgICAgc3Rh
dGljIEFSTVdvcmQgbHNyUmVnaXN0ZXIoaW50IHJlZywgaW50IHNoaWZ0UmVnKQotICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAgICAg
ICAgQVNTRVJUKHNoaWZ0UmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAgICAgICAgcmV0
dXJuIHJlZyB8IChzaGlmdFJlZyA8PCA4KSB8IDB4MzA7Ci0gICAgICAgIH0KLQotICAgICAgICBz
dGF0aWMgQVJNV29yZCBhc3JSZWdpc3RlcihpbnQgcmVnLCBpbnQgc2hpZnRSZWcpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAg
ICAgICBBU1NFUlQoc2hpZnRSZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVnIHwgKHNoaWZ0UmVnIDw8IDgpIHwgMHg1MDsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIEdlbmVyYWwgaGVscGVycwotCi0gICAgICAgIHNpemVfdCBjb2RlU2l6ZSgpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2J1ZmZlci5jb2RlU2l6ZSgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdm9pZCBlbnN1cmVTcGFjZShpbnQgaW5zblNwYWNlLCBpbnQgY29uc3RT
cGFjZSkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UoaW5zblNw
YWNlLCBjb25zdFNwYWNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBzaXplT2ZDb25zdGFu
dFBvb2woKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXIuc2l6ZU9mQ29u
c3RhbnRQb29sKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbEln
bm9yaW5nV2F0Y2hwb2ludHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5lbnN1
cmVTcGFjZUZvckFueUluc3RydWN0aW9uKCk7Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXIu
bGFiZWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0
Y2hwb2ludCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlRm9y
QW55SW5zdHJ1Y3Rpb24obWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpIC8gc2l6ZW9mKEFSTVdvcmQp
KTsKLSAgICAgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7
Ci0gICAgICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IChtX2luZGV4T2ZUYWlsT2ZMYXN0
V2F0Y2hwb2ludCAtIG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSkpCi0gICAgICAgICAgICAgICAg
cmVzdWx0ID0gbGFiZWwoKTsKLSAgICAgICAgICAgIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBv
aW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOwotICAgICAg
ICAgICAgcmV0dXJuIGxhYmVsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3NlbWJsZXJMYWJl
bCBsYWJlbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9
IGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwotICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC5t
X29mZnNldCArIDEgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCkgewotICAgICAgICAg
ICAgICAgIG5vcCgpOwotICAgICAgICAgICAgICAgIC8vIFRoZSBhdmFpbGFibGUgbnVtYmVyIG9m
IGluc3RydWN0aW9ucyBhcmUgZW5zdXJlZCBieSBsYWJlbEZvcldhdGNocG9pbnQuCi0gICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3NlbWJsZXJMYWJl
bCBhbGlnbihpbnQgYWxpZ25tZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAoIW1f
YnVmZmVyLmlzQWxpZ25lZChhbGlnbm1lbnQpKQotICAgICAgICAgICAgICAgIG1vdihBUk1SZWdp
c3RlcnM6OnIwLCBBUk1SZWdpc3RlcnM6OnIwKTsKLQotICAgICAgICAgICAgcmV0dXJuIGxhYmVs
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3NlbWJsZXJMYWJlbCBsb2FkQnJhbmNoVGFyZ2V0
KGludCByZCwgQ29uZGl0aW9uIGNjID0gQUwsIGludCB1c2VDb25zdGFudFBvb2wgPSAwKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBlbnN1cmVTcGFjZShzaXplb2YoQVJNV29yZCksIHNpemVvZihB
Uk1Xb3JkKSk7Ci0gICAgICAgICAgICBtX2p1bXBzLmFwcGVuZChtX2J1ZmZlci5jb2RlU2l6ZSgp
IHwgKHVzZUNvbnN0YW50UG9vbCAmIDB4MSkpOwotICAgICAgICAgICAgbGRyVW5pcXVlSW1tZWRp
YXRlKHJkLCBJbnZhbGlkQnJhbmNoVGFyZ2V0LCBjYyk7Ci0gICAgICAgICAgICByZXR1cm4gbV9i
dWZmZXIubGFiZWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFzc2VtYmxlckxhYmVsIGptcChD
b25kaXRpb24gY2MgPSBBTCwgaW50IHVzZUNvbnN0YW50UG9vbCA9IDApCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBsb2FkQnJhbmNoVGFyZ2V0KEFSTVJlZ2lzdGVyczo6cGMsIGNjLCB1
c2VDb25zdGFudFBvb2wpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBwcmVwYXJlRXhlY3V0
YWJsZUNvcHkodm9pZCogdG8pOwotCi0gICAgICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyBy
ZXR1cm4gbV9idWZmZXIuZGVidWdPZmZzZXQoKTsgfQotCi0gICAgICAgIC8vIERGRyBhc3NlbWJs
eSBoZWxwZXJzIGZvciBtb3ZpbmcgZGF0YSBiZXR3ZWVuIGZwIGFuZCByZWdpc3RlcnMuCi0gICAg
ICAgIHZvaWQgdm1vdihSZWdpc3RlcklEIHJkMSwgUmVnaXN0ZXJJRCByZDIsIEZQUmVnaXN0ZXJJ
RCBybikKLSAgICAgICAgewotICAgICAgICAgICAgdm1vdl9hcm02NChyZDEsIHJkMiwgcm4pOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bW92KEZQUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJ
RCBybjEsIFJlZ2lzdGVySUQgcm4yKQotICAgICAgICB7Ci0gICAgICAgICAgICB2bW92X3ZmcDY0
KHJkLCBybjEsIHJuMik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQYXRjaGluZyBoZWxwZXJz
Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQqIGdldExkckltbUFkZHJlc3MoQVJNV29yZCogaW5z
bikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNhbGwKLSAgICAgICAgICAg
IGlmICgoKmluc24gJiBMZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9uTWFzaykgIT0gTGRyUGNJbW1l
ZGlhdGVJbnN0cnVjdGlvbikgewotICAgICAgICAgICAgICAgIC8vIE11c3QgYmUgQkxYCi0gICAg
ICAgICAgICAgICAgQVNTRVJUKCgqaW5zbiAmIEJseEluc3RydWN0aW9uTWFzaykgPT0gQmx4SW5z
dHJ1Y3Rpb24pOwotICAgICAgICAgICAgICAgIGluc24tLTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgLy8gTXVzdCBiZSBhbiBsZHIgLi4uLCBbcGMgKy8tIGltbV0KLSAgICAgICAgICAg
IEFTU0VSVCgoKmluc24gJiBMZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9uTWFzaykgPT0gTGRyUGNJ
bW1lZGlhdGVJbnN0cnVjdGlvbik7Ci0KLSAgICAgICAgICAgIEFSTVdvcmQgYWRkciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oaW5zbikgKyBEZWZhdWx0UHJlZmV0Y2hPZmZzZXQgKiBzaXpl
b2YoQVJNV29yZCk7Ci0gICAgICAgICAgICBpZiAoKmluc24gJiBEYXRhVHJhbnNmZXJVcCkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oYWRkciArICgq
aW5zbiAmIERhdGFUcmFuc2Zlck9mZnNldE1hc2spKTsKLSAgICAgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PEFSTVdvcmQqPihhZGRyIC0gKCppbnNuICYgRGF0YVRyYW5zZmVyT2Zmc2V0
TWFzaykpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQqIGdldExkckltbUFk
ZHJlc3NPblBvb2woQVJNV29yZCogaW5zbiwgdWludDMyX3QqIGNvbnN0UG9vbCkKLSAgICAgICAg
ewotICAgICAgICAgICAgLy8gTXVzdCBiZSBhbiBsZHIgLi4uLCBbcGMgKy8tIGltbV0KLSAgICAg
ICAgICAgIEFTU0VSVCgoKmluc24gJiBMZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9uTWFzaykgPT0g
TGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbik7Ci0KLSAgICAgICAgICAgIGlmICgqaW5zbiAmIDB4
MSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oY29u
c3RQb29sICsgKCgqaW5zbiAmIERhdGFUcmFuc2Zlck9mZnNldE1hc2spID4+IDEpKTsKLSAgICAg
ICAgICAgIHJldHVybiBnZXRMZHJJbW1BZGRyZXNzKGluc24pOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc3RhdGljIHZvaWQgcGF0Y2hQb2ludGVySW50ZXJuYWwoaW50cHRyX3QgZnJvbSwgdm9pZCog
dG8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQqIGluc24gPSByZWludGVycHJldF9j
YXN0PEFSTVdvcmQqPihmcm9tKTsKLSAgICAgICAgICAgIEFSTVdvcmQqIGFkZHIgPSBnZXRMZHJJ
bW1BZGRyZXNzKGluc24pOwotICAgICAgICAgICAgKmFkZHIgPSByZWludGVycHJldF9jYXN0PEFS
TVdvcmQ+KHRvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIHBhdGNoQ29u
c3RhbnRQb29sTG9hZChBUk1Xb3JkIGxvYWQsIEFSTVdvcmQgdmFsdWUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHZhbHVlID0gKHZhbHVlIDw8IDEpICsgMTsKLSAgICAgICAgICAgIEFTU0VSVCgh
KHZhbHVlICYgfkRhdGFUcmFuc2Zlck9mZnNldE1hc2spKTsKLSAgICAgICAgICAgIHJldHVybiAo
bG9hZCAmIH5EYXRhVHJhbnNmZXJPZmZzZXRNYXNrKSB8IHZhbHVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc3RhdGljIHZvaWQgcGF0Y2hDb25zdGFudFBvb2xMb2FkKHZvaWQqIGxvYWRBZGRyLCB2
b2lkKiBjb25zdFBvb2xBZGRyKTsKLQotICAgICAgICAvLyBSZWFkIHBvaW50ZXJzCi0gICAgICAg
IHN0YXRpYyB2b2lkKiByZWFkUG9pbnRlcih2b2lkKiBmcm9tKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGZy
b20pOwotICAgICAgICAgICAgQVJNV29yZCogYWRkcmVzcyA9IGdldExkckltbUFkZHJlc3MoaW5z
dHJ1Y3Rpb24pOwotICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4o
YWRkcmVzcyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQYXRjaCBwb2ludGVycwotCi0gICAg
ICAgIHN0YXRpYyB2b2lkIGxpbmtQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZy
b20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5h
bChyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb2RlKSArIGZyb20ubV9vZmZzZXQsIHRvKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hJbnQzMih2b2lkKiB3aGVy
ZSwgaW50MzJfdCB0bykKLSAgICAgICAgewotICAgICAgICAgICAgcGF0Y2hQb2ludGVySW50ZXJu
YWwocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4od2hlcmUpLCByZWludGVycHJldF9jYXN0PHZv
aWQqPih0bykpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcmVwYXRjaENvbXBh
Y3Qodm9pZCogd2hlcmUsIGludDMyX3QgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFS
TVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4od2hlcmUpOwot
ICAgICAgICAgICAgQVNTRVJUKCgqaW5zdHJ1Y3Rpb24gJiAweDBmNzAwMDAwKSA9PSBMb2FkVWlu
dDMyKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA+PSAwKQotICAgICAgICAgICAgICAgICppbnN0
cnVjdGlvbiA9ICgqaW5zdHJ1Y3Rpb24gJiAweGZmN2ZmMDAwKSB8IERhdGFUcmFuc2ZlclVwIHwg
dmFsdWU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKmluc3RydWN0aW9uID0g
KCppbnN0cnVjdGlvbiAmIDB4ZmY3ZmYwMDApIHwgLXZhbHVlOwotICAgICAgICAgICAgY2FjaGVG
bHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHN0YXRpYyB2b2lkIHJlcGF0Y2hQb2ludGVyKHZvaWQqIGZyb20sIHZvaWQqIHRvKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGlu
dHB0cl90Pihmcm9tKSwgdG8pOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTGlua2VycwotICAg
ICAgICBzdGF0aWMgaW50cHRyX3QgZ2V0QWJzb2x1dGVKdW1wQWRkcmVzcyh2b2lkKiBiYXNlLCBp
bnQgb2Zmc2V0ID0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGJhc2UpICsgb2Zmc2V0IC0gc2l6ZW9mKEFSTVdvcmQpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdm9pZCBsaW5rSnVtcChBc3NlbWJsZXJMYWJlbCBmcm9tLCBBc3NlbWJs
ZXJMYWJlbCB0bykKLSAgICAgICAgewotICAgICAgICAgICAgQVJNV29yZCogaW5zbiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGdldEFic29sdXRlSnVtcEFkZHJlc3MobV9idWZmZXIuZGF0
YSgpLCBmcm9tLm1fb2Zmc2V0KSk7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBhZGRyID0gZ2V0TGRy
SW1tQWRkcmVzc09uUG9vbChpbnNuLCBtX2J1ZmZlci5wb29sQWRkcmVzcygpKTsKLSAgICAgICAg
ICAgICphZGRyID0gdG9BUk1Xb3JkKHRvLm1fb2Zmc2V0KTsKLSAgICAgICAgfQotCi0gICAgICAg
IHN0YXRpYyB2b2lkIGxpbmtKdW1wKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZv
aWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChnZXRB
YnNvbHV0ZUp1bXBBZGRyZXNzKGNvZGUsIGZyb20ubV9vZmZzZXQpLCB0byk7Ci0gICAgICAgIH0K
LQotICAgICAgICBzdGF0aWMgdm9pZCByZWxpbmtKdW1wKHZvaWQqIGZyb20sIHZvaWQqIHRvKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChnZXRBYnNvbHV0ZUp1
bXBBZGRyZXNzKGZyb20pLCB0byk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCBy
ZWxpbmtKdW1wVG9Ob3Aodm9pZCogZnJvbSkKLSAgICAgICAgewotICAgICAgICAgICAgcmVsaW5r
SnVtcChmcm9tLCBmcm9tKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB2b2lkIGxpbmtD
YWxsKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7
Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChnZXRBYnNvbHV0ZUp1bXBBZGRyZXNz
KGNvZGUsIGZyb20ubV9vZmZzZXQpLCB0byk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMg
dm9pZCByZWxpbmtDYWxsKHZvaWQqIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChnZXRBYnNvbHV0ZUp1bXBBZGRyZXNzKGZyb20pLCB0
byk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCogcmVhZENhbGxUYXJnZXQodm9p
ZCogZnJvbSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KHJlYWRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEFic29sdXRlSnVt
cEFkZHJlc3MoZnJvbSkpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCByZXBs
YWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEFSTVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1X
b3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAgICAgICBpbnRwdHJfdCBkaWZmZXJlbmNl
ID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pIC0gKHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGluc3RydWN0aW9uKSArIERlZmF1bHRQcmVmZXRjaE9mZnNldCAqIHNpemVvZihBUk1X
b3JkKSk7Ci0KLSAgICAgICAgICAgIGlmICghKGRpZmZlcmVuY2UgJiAxKSkgewotICAgICAgICAg
ICAgICAgIGRpZmZlcmVuY2UgPj49IDI7Ci0gICAgICAgICAgICAgICAgaWYgKChkaWZmZXJlbmNl
IDw9IE1heGltdW1CcmFuY2hPZmZzZXREaXN0YW5jZSAmJiBkaWZmZXJlbmNlID49IE1pbmltdW1C
cmFuY2hPZmZzZXREaXN0YW5jZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgIC8vIERpcmVjdCBi
cmFuY2guCi0gICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvblswXSA9IEIgfCBBTCB8IChk
aWZmZXJlbmNlICYgQnJhbmNoT2Zmc2V0TWFzayk7Ci0gICAgICAgICAgICAgICAgICAgICBjYWNo
ZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2YoQVJNV29yZCkpOwotICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgLy8gTG9hZCB0YXJnZXQuCi0gICAgICAgICAgICBpbnN0cnVjdGlvblswXSA9IExvYWRVaW50
MzIgfCBBTCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQoQVJNUmVnaXN0ZXJzOjpwYykgfCA0
OwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+
KHRvKTsKLSAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihBUk1Xb3Jk
KSAqIDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVw
bGFjZW1lbnRTaXplKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHNpemVvZihBUk1X
b3JkKSAqIDI7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3RleHByIHB0cmRpZmZf
dCBwYXRjaGFibGVKdW1wU2l6ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzaXpl
b2YoQVJNV29yZCkgKiAzOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFSTVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oaW5zdHJ1
Y3Rpb25TdGFydCk7Ci0gICAgICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2Yo
QVJNV29yZCkpOwotCi0gICAgICAgICAgICBBU1NFUlQoKCppbnN0cnVjdGlvbiAmIExkck9yQWRk
SW5zdHJ1Y3Rpb25NYXNrKSA9PSBBZGRJbW1lZGlhdGVJbnN0cnVjdGlvbiB8fCAoKmluc3RydWN0
aW9uICYgTGRyT3JBZGRJbnN0cnVjdGlvbk1hc2spID09IExkckltbWVkaWF0ZUluc3RydWN0aW9u
KTsKLSAgICAgICAgICAgIGlmICgoKmluc3RydWN0aW9uICYgTGRyT3JBZGRJbnN0cnVjdGlvbk1h
c2spID09IEFkZEltbWVkaWF0ZUluc3RydWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICppbnN0
cnVjdGlvbiA9ICgqaW5zdHJ1Y3Rpb24gJiB+TGRyT3JBZGRJbnN0cnVjdGlvbk1hc2spIHwgTGRy
SW1tZWRpYXRlSW5zdHJ1Y3Rpb247Ci0gICAgICAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1
Y3Rpb24sIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg
ICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2b2lkKiBpbnN0
cnVjdGlvblN0YXJ0KQotICAgICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlv
biA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwotICAgICAg
ICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKEFSTVdvcmQpKTsKLQotICAgICAg
ICAgICAgQVNTRVJUKCgqaW5zdHJ1Y3Rpb24gJiBMZHJPckFkZEluc3RydWN0aW9uTWFzaykgPT0g
QWRkSW1tZWRpYXRlSW5zdHJ1Y3Rpb24gfHwgKCppbnN0cnVjdGlvbiAmIExkck9yQWRkSW5zdHJ1
Y3Rpb25NYXNrKSA9PSBMZHJJbW1lZGlhdGVJbnN0cnVjdGlvbik7Ci0gICAgICAgICAgICBpZiAo
KCppbnN0cnVjdGlvbiAmIExkck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSA9PSBMZHJJbW1lZGlhdGVJ
bnN0cnVjdGlvbikgewotICAgICAgICAgICAgICAgICAqaW5zdHJ1Y3Rpb24gPSAoKmluc3RydWN0
aW9uICYgfkxkck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSB8IEFkZEltbWVkaWF0ZUluc3RydWN0aW9u
OwotICAgICAgICAgICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2YoQVJNV29y
ZCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcmV2
ZXJ0QnJhbmNoUHRyV2l0aFBhdGNoKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQg
cm4sIEFSTVdvcmQgaW1tKQotICAgICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBpbnN0cnVj
dGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwotCi0g
ICAgICAgICAgICBBU1NFUlQoKGluc3RydWN0aW9uWzJdICYgTGRyUGNJbW1lZGlhdGVJbnN0cnVj
dGlvbk1hc2spID09IExkclBjSW1tZWRpYXRlSW5zdHJ1Y3Rpb24pOwotICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25bMF0gPSB0b0FSTVdvcmQoQUwpIHwgKChpbnN0cnVjdGlvblsyXSAmIDB4MGZmZjBm
ZmYpICsgc2l6ZW9mKEFSTVdvcmQpKSB8IFJEKEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICAg
ICAgKmdldExkckltbUFkZHJlc3MoaW5zdHJ1Y3Rpb24pID0gaW1tOwotICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25bMV0gPSB0b0FSTVdvcmQoQUwpIHwgQ01QIHwgU2V0Q29uZGl0aW9uYWxDb2RlcyB8
IFJOKHJuKSB8IFJNKEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICAgICAgY2FjaGVGbHVzaChp
bnN0cnVjdGlvbiwgMiAqIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBBZGRyZXNzIG9wZXJhdGlvbnMKLQotICAgICAgICBzdGF0aWMgdm9pZCogZ2V0UmVsb2NhdGVk
QWRkcmVzcyh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBsYWJlbCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvZGUpICsgbGFiZWwubV9vZmZzZXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
QWRkcmVzcyBkaWZmZXJlbmNlcwotCi0gICAgICAgIHN0YXRpYyBpbnQgZ2V0RGlmZmVyZW5jZUJl
dHdlZW5MYWJlbHMoQXNzZW1ibGVyTGFiZWwgYSwgQXNzZW1ibGVyTGFiZWwgYikKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGIubV9vZmZzZXQgLSBhLm1fb2Zmc2V0OwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVy
TGFiZWwgY2FsbCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNhbGwubV9vZmZzZXQ7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBIYW5kbGUgaW1tZWRpYXRlcwotCi0gICAgICAgIHN0
YXRpYyBBUk1Xb3JkIGdldE9wMihBUk1Xb3JkIGltbSk7Ci0KLSAgICAgICAgLy8gRmFzdCBjYXNl
IGlmIGltbSBpcyBrbm93biB0byBiZSBiZXR3ZWVuIDAgYW5kIDB4ZmYKLSAgICAgICAgc3RhdGlj
IEFSTVdvcmQgZ2V0T3AyQnl0ZShBUk1Xb3JkIGltbSkKLSAgICAgICAgewotICAgICAgICAgICAg
QVNTRVJUKGltbSA8PSAweGZmKTsKLSAgICAgICAgICAgIHJldHVybiBPcDJJbW1lZGlhdGUgfCBp
bW07Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJNV29yZCBnZXRPcDJIYWxmKEFSTVdv
cmQgaW1tKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoaW1tIDw9IDB4ZmYpOwotICAg
ICAgICAgICAgcmV0dXJuIEltbWVkaWF0ZUZvckhhbGZXb3JkVHJhbnNmZXIgfCAoaW1tICYgMHgw
ZikgfCAoKGltbSAmIDB4ZjApIDw8IDQpOwotICAgICAgICB9Ci0KLSNpZiBXVEZfQVJNX0FSQ0hf
QVRfTEVBU1QoNykKLSAgICAgICAgc3RhdGljIEFSTVdvcmQgZ2V0SW1tMTZPcDIoQVJNV29yZCBp
bW0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpbW0gPD0gMHhmZmZmKQotICAgICAgICAg
ICAgICAgIHJldHVybiAoaW1tICYgMHhmMDAwKSA8PCA0IHwgKGltbSAmIDB4ZmZmKTsKLSAgICAg
ICAgICAgIHJldHVybiBJbnZhbGlkSW1tZWRpYXRlOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAg
ICAgQVJNV29yZCBnZXRJbW0oQVJNV29yZCBpbW0sIGludCB0bXBSZWcsIGJvb2wgaW52ZXJ0ID0g
ZmFsc2UpOwotICAgICAgICB2b2lkIG1vdmVJbW0oQVJNV29yZCBpbW0sIGludCBkZXN0KTsKLSAg
ICAgICAgQVJNV29yZCBlbmNvZGVDb21wbGV4SW1tKEFSTVdvcmQgaW1tLCBpbnQgZGVzdCk7Ci0K
LSAgICAgICAgLy8gTWVtb3J5IGxvYWQvc3RvcmUgaGVscGVycwotCi0gICAgICAgIHZvaWQgZGF0
YVRyYW5zZmVyMzIoRGF0YVRyYW5zZmVyVHlwZUEsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3Rl
cklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KTsKLSAgICAgICAgdm9pZCBiYXNlSW5kZXhUcmFuc2Zl
cjMyKERhdGFUcmFuc2ZlclR5cGVBLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0KTsKLSAgICAgICAg
dm9pZCBkYXRhVHJhbnNmZXIxNihEYXRhVHJhbnNmZXJUeXBlQiwgUmVnaXN0ZXJJRCBzcmNEc3Qs
IFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpOwotICAgICAgICB2b2lkIGJhc2VJbmRl
eFRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlwZUIsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50MzJfdCBvZmZzZXQpOwot
ICAgICAgICB2b2lkIGRhdGFUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCwgRlBS
ZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCk7Ci0gICAg
ICAgIHZvaWQgYmFzZUluZGV4VHJhbnNmZXJGbG9hdChEYXRhVHJhbnNmZXJUeXBlRmxvYXQsIEZQ
UmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlLCBpbnQzMl90IG9mZnNldCk7Ci0KLSAgICAgICAgLy8gQ29uc3RhbnQgcG9vbCBobmFk
bGVycwotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIHBsYWNlQ29uc3RhbnRQb29sQmFycmllcihp
bnQgb2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBvZmZzZXQgPSAob2Zmc2V0IC0gc2l6
ZW9mKEFSTVdvcmQpKSA+PiAyOwotICAgICAgICAgICAgQVNTRVJUKChvZmZzZXQgPD0gTWF4aW11
bUJyYW5jaE9mZnNldERpc3RhbmNlICYmIG9mZnNldCA+PSBNaW5pbXVtQnJhbmNoT2Zmc2V0RGlz
dGFuY2UpKTsKLSAgICAgICAgICAgIHJldHVybiBBTCB8IEIgfCAob2Zmc2V0ICYgQnJhbmNoT2Zm
c2V0TWFzayk7Ci0gICAgICAgIH0KLQotI2lmIE9TKExJTlVYKSAmJiBDT01QSUxFUihHQ0NfQ09N
UEFUSUJMRSkKLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIGxpbnV4UGFnZUZsdXNoKHVpbnRw
dHJfdCBiZWdpbiwgdWludHB0cl90IGVuZCkKLSAgICAgICAgewotICAgICAgICAgICAgYXNtIHZv
bGF0aWxlKAotICAgICAgICAgICAgICAgICJwdXNoICAgIHtyN31cbiIKLSAgICAgICAgICAgICAg
ICAibW92ICAgICByMCwgJTBcbiIKLSAgICAgICAgICAgICAgICAibW92ICAgICByMSwgJTFcbiIK
LSAgICAgICAgICAgICAgICAibW92ICAgICByNywgIzB4ZjAwMDBcbiIKLSAgICAgICAgICAgICAg
ICAiYWRkICAgICByNywgcjcsICMweDJcbiIKLSAgICAgICAgICAgICAgICAibW92ICAgICByMiwg
IzB4MFxuIgotICAgICAgICAgICAgICAgICJzdmMgICAgIDB4MFxuIgotICAgICAgICAgICAgICAg
ICJwb3AgICAgIHtyN31cbiIKLSAgICAgICAgICAgICAgICA6Ci0gICAgICAgICAgICAgICAgOiAi
ciIgKGJlZ2luKSwgInIiIChlbmQpCi0gICAgICAgICAgICAgICAgOiAicjAiLCAicjEiLCAicjIi
KTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgc3RhdGljIHZvaWQgY2FjaGVGbHVzaCh2
b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKLSAgICAgICAgewotI2lmIE9TKExJTlVYKSAmJiBDT01Q
SUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgICAgIHNpemVfdCBwYWdlID0gcGFnZVNpemUo
KTsKLSAgICAgICAgICAgIHVpbnRwdHJfdCBjdXJyZW50ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGNvZGUpOwotICAgICAgICAgICAgdWludHB0cl90IGVuZCA9IGN1cnJlbnQgKyBzaXpl
OwotICAgICAgICAgICAgdWludHB0cl90IGZpcnN0UGFnZUVuZCA9IChjdXJyZW50ICYgfihwYWdl
IC0gMSkpICsgcGFnZTsKLQotICAgICAgICAgICAgaWYgKGVuZCA8PSBmaXJzdFBhZ2VFbmQpIHsK
LSAgICAgICAgICAgICAgICBsaW51eFBhZ2VGbHVzaChjdXJyZW50LCBlbmQpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbGludXhQYWdlRmx1
c2goY3VycmVudCwgZmlyc3RQYWdlRW5kKTsKLQotICAgICAgICAgICAgZm9yIChjdXJyZW50ID0g
Zmlyc3RQYWdlRW5kOyBjdXJyZW50ICsgcGFnZSA8IGVuZDsgY3VycmVudCArPSBwYWdlKQotICAg
ICAgICAgICAgICAgIGxpbnV4UGFnZUZsdXNoKGN1cnJlbnQsIGN1cnJlbnQgKyBwYWdlKTsKLQot
ICAgICAgICAgICAgbGludXhQYWdlRmx1c2goY3VycmVudCwgZW5kKTsKLSNlbHNlCi0jZXJyb3Ig
IlRoZSBjYWNoZUZsdXNoIHN1cHBvcnQgaXMgbWlzc2luZyBvbiB0aGlzIHBsYXRmb3JtLiIKLSNl
bmRpZgotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgQVJNV29yZCBS
TShpbnQgcmVnKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lz
dGVyczo6cGMpOwotICAgICAgICAgICAgcmV0dXJuIHJlZzsKLSAgICAgICAgfQotCi0gICAgICAg
IHN0YXRpYyBBUk1Xb3JkIFJTKGludCByZWcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VS
VChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICByZXR1cm4gcmVnIDw8IDg7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJNV29yZCBSRChpbnQgcmVnKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAg
ICAgICAgcmV0dXJuIHJlZyA8PCAxMjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1X
b3JkIFJOKGludCByZWcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJN
UmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICByZXR1cm4gcmVnIDw8IDE2OwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQgZ2V0Q29uZGl0aW9uYWxGaWVsZChBUk1Xb3JkIGkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpICYgQ29uZGl0aW9uYWxGaWVsZE1hc2s7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJNV29yZCB0b0FSTVdvcmQoQ29uZGl0aW9u
IGNjKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QVJNV29yZD4o
Y2MpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQgdG9BUk1Xb3JkKHVpbnQz
Ml90IHUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBUk1Xb3Jk
Pih1KTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBnZW5JbnQoaW50IHJlZywgQVJNV29yZCBp
bW0sIGJvb2wgcG9zaXRpdmUpOwotCi0gICAgICAgIEFSTUJ1ZmZlciBtX2J1ZmZlcjsKLSAgICAg
ICAgSnVtcHMgbV9qdW1wczsKLSAgICAgICAgdWludDMyX3QgbV9pbmRleE9mVGFpbE9mTGFzdFdh
dGNocG9pbnQ7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFC
TEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKaW5kZXggZWExMDdmYjRkOTAzNTNiODBk
NWYyOGE4NTk4OWUyZjViZDRkMDdlNy4uYjIzNmE1YzgwMmNiNzc2YTJjYWRiYWE1ZWJjZmU2YmQx
ZmIzYTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5r
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuY3BwCkBAIC0yOTgsOSArMjk4LDcgQEAgdm9pZCBMaW5rQnVmZmVyOjpsaW5rQ29kZShNYWNy
b0Fzc2VtYmxlciYgbWFjcm9Bc3NlbWJsZXIsIHZvaWQqIG93bmVyVUlELCBKSVRDb20KICAgICBB
U1NFUlQobV9jb2RlKTsKICAgICBBc3NlbWJsZXJCdWZmZXImIGJ1ZmZlciA9IG1hY3JvQXNzZW1i
bGVyLm1fYXNzZW1ibGVyLmJ1ZmZlcigpOwogICAgIHZvaWQqIGNvZGUgPSBtX2NvZGUuZGF0YUxv
Y2F0aW9uKCk7Ci0jaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAgICBtYWNyb0Fzc2VtYmxlci5t
X2Fzc2VtYmxlci5wcmVwYXJlRXhlY3V0YWJsZUNvcHkoY29kZSk7Ci0jZWxpZiBDUFUoQVJNNjQp
CisjaWYgQ1BVKEFSTTY0KQogICAgIFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBUb011bHRpcGxlT2Y8
QXNzZW1ibGVyOjppbnN0cnVjdGlvblNpemU+KGNvZGUpID09IGNvZGUpOwogI2VuZGlmCiAgICAg
cGVyZm9ybUpJVE1lbWNweShjb2RlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuY29kZVNpemUoKSk7
CkBAIC00MDAsMjMgKzM5OCw2IEBAIHZvaWQgTGlua0J1ZmZlcjo6ZHVtcENvZGUodm9pZCogY29k
ZSwgc2l6ZV90IHNpemUpCiAgICAgICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
c2l6ZTsgaSsrKQogICAgICAgICBkYXRhTG9nRigiXHQuc2hvcnRcdDB4JXhcbiIsIHRjb2RlW2ld
KTsKLSNlbGlmIENQVShBUk1fVFJBRElUSU9OQUwpCi0gICAgLy8gICBnY2MgLWMgaml0LnMKLSAg
ICAvLyAgIG9iamR1bXAgLUQgaml0Lm8KLSAgICBzdGF0aWMgdW5zaWduZWQgY29kZUNvdW50ID0g
MDsKLSAgICB1bnNpZ25lZCBpbnQqIHRjb2RlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Kj4o
Y29kZSk7Ci0gICAgc2l6ZV90IHRzaXplID0gc2l6ZSAvIHNpemVvZih1bnNpZ25lZCBpbnQpOwot
ICAgIGNoYXIgbmFtZUJ1ZlsxMjhdOwotICAgIHNucHJpbnRmKG5hbWVCdWYsIHNpemVvZihuYW1l
QnVmKSwgIl9qc2Nfaml0JXUiLCBjb2RlQ291bnQrKyk7Ci0gICAgZGF0YUxvZ0YoIlx0Lmdsb2Js
XHQlc1xuIgotICAgICAgICAgICAgIlx0LmFsaWduIDRcbiIKLSAgICAgICAgICAgICJcdC5jb2Rl
IDMyXG4iCi0gICAgICAgICAgICAiXHQudGV4dFxuIgotICAgICAgICAgICAgIiMgJXBcbiIKLSAg
ICAgICAgICAgICIlczpcbiIsIG5hbWVCdWYsIGNvZGUsIG5hbWVCdWYpOwotCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHRzaXplOyBpKyspCi0gICAgICAgIGRhdGFMb2dGKCJcdC5sb25n
XHQweCV4XG4iLCB0Y29kZVtpXSk7CiAjZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGNkMWI1NDU4MzI1
MmE2ODA5ZmQ1NmZmMDlkOGFmMzU4NmNkNTk0MDguLjNhNzJjMjc5MjI0MGFiNjg2NTY0NDU3MDk2
MDUxMGU2ZTEwMjBkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmgKQEAgLTQ1LDExICs0NSw2IEBAIG5hbWVzcGFjZSBKU0MgeyB0eXBl
ZGVmIE1hY3JvQXNzZW1ibGVyQVJNdjcgTWFjcm9Bc3NlbWJsZXJCYXNlOyB9OwogI2RlZmluZSBU
QVJHRVRfTUFDUk9BU1NFTUJMRVIgTWFjcm9Bc3NlbWJsZXJBUk02NAogI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyQVJNNjQuaCIKIAotI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSNkZWZpbmUg
VEFSR0VUX0FTU0VNQkxFUiBBUk1Bc3NlbWJsZXIKLSNkZWZpbmUgVEFSR0VUX01BQ1JPQVNTRU1C
TEVSIE1hY3JvQXNzZW1ibGVyQVJNCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJBUk0uaCIKLQog
I2VsaWYgQ1BVKE1JUFMpCiAjZGVmaW5lIFRBUkdFVF9BU1NFTUJMRVIgTUlQU0Fzc2VtYmxlcgog
I2RlZmluZSBUQVJHRVRfTUFDUk9BU1NFTUJMRVIgTWFjcm9Bc3NlbWJsZXJNSVBTCkBAIC0xNDIs
NyArMTM3LDcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJC
YXNlIHsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmFuZDMyOwogICAgIHVzaW5nIE1h
Y3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoQWRkMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJC
YXNlOjpicmFuY2hNdWwzMjsKLSNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoQVJNX1RSQURJVElPTkFMKSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoTUlQUykKKyNpZiBDUFUo
QVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoTUlQUykKICAg
ICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaFB0cjsKICNlbmRpZgogICAgIHVzaW5n
IE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoU3ViMzI7CkBAIC00MzQsNyArNDI5LDYgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKICAgICAgICAg
cmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNoMzJXaXRoUGF0Y2goY29uZCwgbGVmdCwgZGF0YUxh
YmVsLCBpbml0aWFsUmlnaHRWYWx1ZSkpOwogICAgIH0KIAotI2lmICFDUFUoQVJNX1RSQURJVElP
TkFMKQogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gUGF0Y2hhYmxlSnVtcChqdW1wKCkpOwpAQCAtNDU5LDcgKzQ1Myw2IEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAgICAgewogICAgICAg
ICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFuY2gzMihjb25kLCBhZGRyZXNzLCBpbW0pKTsKICAg
ICB9Ci0jZW5kaWYKICNlbmRpZgogCiAgICAgdm9pZCBqdW1wKExhYmVsIHRhcmdldCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1NzRkNmMzNWYzMzMwNTQ1ZDk2MGJj
NjNjZWRhZGE1MDdkMmVmMDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE3IEFwcGxlIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBVbml2ZXJzaXR5
IG9mIFN6ZWdlZAotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQot
I2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCi0KLSNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIK
LSNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+Ci0KLSNpZiBPUyhMSU5VWCkKLSNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0j
aW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8ZWxmLmg+Ci0jaW5jbHVkZSA8YXNtL2h3Y2Fw
Lmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXN0YXRpYyBib29sIGlzVkZQUHJlc2Vu
dCgpCi17Ci0jaWYgT1MoTElOVVgpCi0gICAgaW50IGZkID0gb3BlbigiL3Byb2Mvc2VsZi9hdXh2
IiwgT19SRE9OTFkpOwotICAgIGlmIChmZCAhPSAtMSkgewotICAgICAgICBFbGYzMl9hdXh2X3Qg
YXV4OwotICAgICAgICB3aGlsZSAocmVhZChmZCwgJmF1eCwgc2l6ZW9mKEVsZjMyX2F1eHZfdCkp
KSB7Ci0gICAgICAgICAgICBpZiAoYXV4LmFfdHlwZSA9PSBBVF9IV0NBUCkgewotICAgICAgICAg
ICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gYXV4LmFfdW4uYV92YWwg
JiBIV0NBUF9WRlA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2xvc2UoZmQp
OwotICAgIH0KLSNlbmRpZiAvLyBPUyhMSU5VWCkKLQotI2lmIChDT01QSUxFUihHQ0NfQ09NUEFU
SUJMRSkgJiYgZGVmaW5lZChfX1ZGUF9GUF9fKSkKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0g
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLWNvbnN0IGJvb2wgTWFjcm9Bc3NlbWJsZXJB
Uk06OnNfaXNWRlBQcmVzZW50ID0gaXNWRlBQcmVzZW50KCk7Ci0KLSNpZiBDUFUoQVJNVjVfT1Jf
TE9XRVIpCi0vKiBPbiBBUk12NSBhbmQgYmVsb3csIG5hdHVyYWwgYWxpZ25tZW50IGlzIHJlcXVp
cmVkLiAqLwotdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZX
b3JkcyhCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotewotICAgIEFSTVdvcmQg
b3AyOwotCi0gICAgQVNTRVJUKGFkZHJlc3Muc2NhbGUgPj0gMCAmJiBhZGRyZXNzLnNjYWxlIDw9
IDMpOwotICAgIG9wMiA9IG1fYXNzZW1ibGVyLmxzbChhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2Fz
dDxpbnQ+KGFkZHJlc3Muc2NhbGUpKTsKLQotICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAwICYm
IGFkZHJlc3Mub2Zmc2V0ICsgMHgyIDw9IDB4ZmYpIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRk
KEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3MuYmFzZSwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuaGFsZkR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgQVJNUmVnaXN0ZXJz
OjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxmKGFkZHJlc3Mub2Zmc2V0KSk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmhhbGZEdHJVcChBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIEFSTVJlZ2lz
dGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZihhZGRy
ZXNzLm9mZnNldCArIDB4MikpOwotICAgIH0gZWxzZSBpZiAoYWRkcmVzcy5vZmZzZXQgPCAwICYm
IGFkZHJlc3Mub2Zmc2V0ID49IC0weGZmKSB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZChBUk1S
ZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIG9wMik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmhh
bGZEdHJEb3duKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpT
MCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxmKC1hZGRyZXNzLm9mZnNldCkpOwotICAgICAgICBt
X2Fzc2VtYmxlci5oYWxmRHRyRG93bihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIEFSTVJlZ2lz
dGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AySGFsZigtYWRk
cmVzcy5vZmZzZXQgLSAweDIpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZlSW1tKGFkZHJlc3Mub2Zmc2V0LCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIG9wMik7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJVcFJlZ2lzdGVyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQx
NiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxl
cjo6T3AySW1tZWRpYXRlIHwgMHgyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuaGFsZkR0clVwUmVn
aXN0ZXIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNz
LmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIH0KLSAgICBtX2Fzc2VtYmxlci5vcnIoZGVz
dCwgZGVzdCwgbV9hc3NlbWJsZXIubHNsKEFSTVJlZ2lzdGVyczo6UzAsIDE2KSk7Ci19Ci0jZW5k
aWYgLy8gQ1BVKEFSTVY1X09SX0xPV0VSKQotCi0jaWYgRU5BQkxFKE1BU01fUFJPQkUpCi0KLWV4
dGVybiAiQyIgdm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKCk7Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBBUk1SZWdpc3RlcnM7Ci0KLSNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLQotLy8gVGhl
IGZvbGxvd2luZyBhcmUgb2Zmc2V0cyBmb3IgUHJvYmU6OlN0YXRlIGZpZWxkcyBhY2Nlc3NlZAot
Ly8gYnkgdGhlIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUgc3R1Yi4KLQotI2RlZmluZSBQVFJfU0la
RSA0Ci0jZGVmaW5lIFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCAoMCAqIFBUUl9TSVpFKQot
I2RlZmluZSBQUk9CRV9BUkdfT0ZGU0VUICgxICogUFRSX1NJWkUpCi0jZGVmaW5lIFBST0JFX0lO
SVRfU1RBQ0tfRlVOQ1RJT05fT0ZGU0VUICgyICogUFRSX1NJWkUpCi0jZGVmaW5lIFBST0JFX0lO
SVRfU1RBQ0tfQVJHX09GRlNFVCAoMyAqIFBUUl9TSVpFKQotCi0jZGVmaW5lIFBST0JFX0ZJUlNU
X0dQUkVHX09GRlNFVCAoNCAqIFBUUl9TSVpFKQotCi0jZGVmaW5lIEdQUkVHX1NJWkUgNAotI2Rl
ZmluZSBQUk9CRV9DUFVfUjBfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMCAq
IEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjFfT0ZGU0VUIChQUk9CRV9GSVJTVF9H
UFJFR19PRkZTRVQgKyAoMSAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjJfT0ZG
U0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMiAqIEdQUkVHX1NJWkUpKQotI2RlZmlu
ZSBQUk9CRV9DUFVfUjNfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMyAqIEdQ
UkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjRfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJF
R19PRkZTRVQgKyAoNCAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjVfT0ZGU0VU
IChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoNSAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQ
Uk9CRV9DUFVfUjZfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoNiAqIEdQUkVH
X1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjdfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19P
RkZTRVQgKyAoNyAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjhfT0ZGU0VUIChQ
Uk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoOCAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9C
RV9DUFVfUjlfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoOSAqIEdQUkVHX1NJ
WkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjEwX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZG
U0VUICsgKDEwICogR1BSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9SMTFfT0ZGU0VUIChQ
Uk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTEgKiBHUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJP
QkVfQ1BVX0lQX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDEyICogR1BSRUdf
U0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9TUF9PRkZTRVQgKFBST0JFX0ZJUlNUX0dQUkVHX09G
RlNFVCArICgxMyAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfTFJfT0ZGU0VUIChQ
Uk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTQgKiBHUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJP
QkVfQ1BVX1BDX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDE1ICogR1BSRUdf
U0laRSkpCi0KLSNkZWZpbmUgUFJPQkVfQ1BVX0FQU1JfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJF
R19PRkZTRVQgKyAoMTYgKiBHUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0ZQU0NSX09G
RlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDE3ICogR1BSRUdfU0laRSkpCi0KLSNk
ZWZpbmUgUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQg
KyAoMTggKiBHUFJFR19TSVpFKSkKLQotI2RlZmluZSBGUFJFR19TSVpFIDgKLSNkZWZpbmUgUFJP
QkVfQ1BVX0QwX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDAgKiBGUFJFR19T
SVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QxX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZG
U0VUICsgKDEgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QyX09GRlNFVCAoUFJP
QkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDIgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVf
Q1BVX0QzX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDMgKiBGUFJFR19TSVpF
KSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q0X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VU
ICsgKDQgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q1X09GRlNFVCAoUFJPQkVf
RklSU1RfRlBSRUdfT0ZGU0VUICsgKDUgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BV
X0Q2X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDYgKiBGUFJFR19TSVpFKSkK
LSNkZWZpbmUgUFJPQkVfQ1BVX0Q3X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsg
KDcgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q4X09GRlNFVCAoUFJPQkVfRklS
U1RfRlBSRUdfT0ZGU0VUICsgKDggKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q5
X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDkgKiBGUFJFR19TSVpFKSkKLSNk
ZWZpbmUgUFJPQkVfQ1BVX0QxMF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgx
MCAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDExX09GRlNFVCAoUFJPQkVfRklS
U1RfRlBSRUdfT0ZGU0VUICsgKDExICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9E
MTJfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTIgKiBGUFJFR19TSVpFKSkK
LSNkZWZpbmUgUFJPQkVfQ1BVX0QxM19PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCAr
ICgxMyAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDE0X09GRlNFVCAoUFJPQkVf
RklSU1RfRlBSRUdfT0ZGU0VUICsgKDE0ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQ
VV9EMTVfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTUgKiBGUFJFR19TSVpF
KSkKLQotI2lmIENQVShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotI2RlZmluZSBQ
Uk9CRV9DUFVfRDE2X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDE2ICogRlBS
RUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMTdfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJF
R19PRkZTRVQgKyAoMTcgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QxOF9PRkZT
RVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgxOCAqIEZQUkVHX1NJWkUpKQotI2RlZmlu
ZSBQUk9CRV9DUFVfRDE5X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDE5ICog
RlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMjBfT0ZGU0VUIChQUk9CRV9GSVJTVF9G
UFJFR19PRkZTRVQgKyAoMjAgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QyMV9P
RkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyMSAqIEZQUkVHX1NJWkUpKQotI2Rl
ZmluZSBQUk9CRV9DUFVfRDIyX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDIy
ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMjNfT0ZGU0VUIChQUk9CRV9GSVJT
VF9GUFJFR19PRkZTRVQgKyAoMjMgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Qy
NF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyNCAqIEZQUkVHX1NJWkUpKQot
I2RlZmluZSBQUk9CRV9DUFVfRDI1X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsg
KDI1ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMjZfT0ZGU0VUIChQUk9CRV9G
SVJTVF9GUFJFR19PRkZTRVQgKyAoMjYgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BV
X0QyN19PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyNyAqIEZQUkVHX1NJWkUp
KQotI2RlZmluZSBQUk9CRV9DUFVfRDI4X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VU
ICsgKDI4ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMjlfT0ZGU0VUIChQUk9C
RV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjkgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVf
Q1BVX0QzMF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgzMCAqIEZQUkVHX1NJ
WkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDMxX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZG
U0VUICsgKDMxICogRlBSRUdfU0laRSkpCi0KLSNkZWZpbmUgUFJPQkVfU0laRSAoUFJPQkVfRklS
U1RfRlBSRUdfT0ZGU0VUICsgKDMyICogRlBSRUdfU0laRSkpCi0jZWxzZQotI2RlZmluZSBQUk9C
RV9TSVpFIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTYgKiBGUFJFR19TSVpFKSkKLSNl
bmRpZiAvLyBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikKLQotI2RlZmluZSBP
VVRfU0laRSBHUFJFR19TSVpFCi0KLS8vIFRoZXNlIEFTU0VSVHMgcmVtaW5kIHlvdSB0aGF0IGlm
IHlvdSBjaGFuZ2UgdGhlIGxheW91dCBvZiBQcm9iZTo6U3RhdGUsCi0vLyB5b3UgbmVlZCB0byBj
aGFuZ2UgY3RpTWFzbVByb2JlVHJhbXBvbGluZSBvZmZzZXRzIGFib3ZlIHRvIG1hdGNoLgotI2Rl
ZmluZSBQUk9CRV9PRkZTRVRPRih4KSBvZmZzZXRvZihzdHJ1Y3QgUHJvYmU6OlN0YXRlLCB4KQot
c3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihwcm9iZUZ1bmN0aW9uKSA9PSBQUk9CRV9QUk9C
RV9GVU5DVElPTl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OnByb2JlRnVuY3Rpb24ncyBvZmZzZXQg
bWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09G
RlNFVE9GKGFyZykgPT0gUFJPQkVfQVJHX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6YXJnJ3Mgb2Zm
c2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9C
RV9PRkZTRVRPRihpbml0aWFsaXplU3RhY2tGdW5jdGlvbikgPT0gUFJPQkVfSU5JVF9TVEFDS19G
VU5DVElPTl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmluaXRpYWxpemVTdGFja0Z1bmN0aW9uJ3Mg
b2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQ
Uk9CRV9PRkZTRVRPRihpbml0aWFsaXplU3RhY2tBcmcpID09IFBST0JFX0lOSVRfU1RBQ0tfQVJH
X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6aW5pdGlhbGl6ZVN0YWNrQXJnJ3Mgb2Zmc2V0IG1hdGNo
ZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotCi1zdGF0aWNfYXNzZXJ0KCEoUFJPQkVfQ1BV
X1IwX09GRlNFVCAmIDB4MyksICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3IwXSdzIG9mZnNldCBz
aG91bGQgYmUgNCBieXRlIGFsaWduZWQiKTsKLQotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRP
RihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIwXSkgPT0gUFJPQkVfQ1BVX1IwX09GRlNFVCwgIlBy
b2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJh
bXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdp
c3RlcnM6OnIxXSkgPT0gUFJPQkVfQ1BVX1IxX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1Lmdw
cnNbcjFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGlj
X2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIyXSkgPT0gUFJP
QkVfQ1BVX1IyX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjJdJ3Mgb2Zmc2V0IG1h
dGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZT
RVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIzXSkgPT0gUFJPQkVfQ1BVX1IzX09GRlNFVCwg
IlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjNdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2Jl
VHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1S
ZWdpc3RlcnM6OnI0XSkgPT0gUFJPQkVfQ1BVX1I0X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1
LmdwcnNbcjRdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3Rh
dGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI1XSkgPT0g
UFJPQkVfQ1BVX1I1X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjVdJ3Mgb2Zmc2V0
IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9P
RkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI2XSkgPT0gUFJPQkVfQ1BVX1I2X09GRlNF
VCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjZdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVBy
b2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tB
Uk1SZWdpc3RlcnM6OnI3XSkgPT0gUFJPQkVfQ1BVX1I3X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6
Y3B1LmdwcnNbcjddJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwot
c3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI4XSkg
PT0gUFJPQkVfQ1BVX1I4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjhdJ3Mgb2Zm
c2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9C
RV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI5XSkgPT0gUFJPQkVfQ1BVX1I5X09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjldJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3By
c1tBUk1SZWdpc3RlcnM6OnIxMF0pID09IFBST0JFX0NQVV9SMTBfT0ZGU0VULCAiUHJvYmU6OlN0
YXRlOjpjcHUuZ3Byc1tyMTBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGlu
ZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6
OnIxMV0pID09IFBST0JFX0NQVV9SMTFfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1ty
MTFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fz
c2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OmlwXSkgPT0gUFJPQkVf
Q1BVX0lQX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbaXBdJ3Mgb2Zmc2V0IG1hdGNo
ZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRP
RihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnNwXSkgPT0gUFJPQkVfQ1BVX1NQX09GRlNFVCwgIlBy
b2JlOjpTdGF0ZTo6Y3B1LmdwcnNbc3BdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJh
bXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdp
c3RlcnM6OmxyXSkgPT0gUFJPQkVfQ1BVX0xSX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1Lmdw
cnNbbHJdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGlj
X2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnBjXSkgPT0gUFJP
QkVfQ1BVX1BDX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcGNdJ3Mgb2Zmc2V0IG1h
dGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotCi1zdGF0aWNfYXNzZXJ0KFBST0JFX09G
RlNFVE9GKGNwdS5zcHJzW0FSTVJlZ2lzdGVyczo6YXBzcl0pID09IFBST0JFX0NQVV9BUFNSX09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LnNwcnNbYXBzcl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlN
YXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5z
cHJzW0FSTVJlZ2lzdGVyczo6ZnBzY3JdKSA9PSBQUk9CRV9DUFVfRlBTQ1JfT0ZGU0VULCAiUHJv
YmU6OlN0YXRlOjpjcHUuc3Byc1tmcHNjcl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVU
cmFtcG9saW5lIik7Ci0KLXN0YXRpY19hc3NlcnQoIShQUk9CRV9DUFVfRDBfT0ZGU0VUICYgMHg3
KSwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDBdJ3Mgb2Zmc2V0IHNob3VsZCBiZSA4IGJ5dGUg
YWxpZ25lZCIpOwotCi1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJl
Z2lzdGVyczo6ZDBdKSA9PSBQUk9CRV9DUFVfRDBfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUu
ZnByc1tkMF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0
aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDFdKSA9PSBQ
Uk9CRV9DUFVfRDFfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkMV0ncyBvZmZzZXQg
bWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09G
RlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDJdKSA9PSBQUk9CRV9DUFVfRDJfT0ZGU0VU
LCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkMl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJv
YmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FS
TVJlZ2lzdGVyczo6ZDNdKSA9PSBQUk9CRV9DUFVfRDNfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpj
cHUuZnByc1tkM10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1z
dGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDRdKSA9
PSBQUk9CRV9DUFVfRDRfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkNF0ncyBvZmZz
ZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JF
X09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDVdKSA9PSBQUk9CRV9DUFVfRDVfT0ZG
U0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkNV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNt
UHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJz
W0FSTVJlZ2lzdGVyczo6ZDZdKSA9PSBQUk9CRV9DUFVfRDZfT0ZGU0VULCAiUHJvYmU6OlN0YXRl
OjpjcHUuZnByc1tkNl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7
Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDdd
KSA9PSBQUk9CRV9DUFVfRDdfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkN10ncyBv
ZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBS
T0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDhdKSA9PSBQUk9CRV9DUFVfRDhf
T0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkOF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlN
YXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5m
cHJzW0FSTVJlZ2lzdGVyczo6ZDldKSA9PSBQUk9CRV9DUFVfRDlfT0ZGU0VULCAiUHJvYmU6OlN0
YXRlOjpjcHUuZnByc1tkOV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5l
Iik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6
ZDEwXSkgPT0gUFJPQkVfQ1BVX0QxMF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2Qx
MF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNz
ZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDExXSkgPT0gUFJPQkVf
Q1BVX0QxMV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxMV0ncyBvZmZzZXQgbWF0
Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNF
VE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDEyXSkgPT0gUFJPQkVfQ1BVX0QxMl9PRkZTRVQs
ICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxMl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJv
YmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FS
TVJlZ2lzdGVyczo6ZDEzXSkgPT0gUFJPQkVfQ1BVX0QxM19PRkZTRVQsICJQcm9iZTo6U3RhdGU6
OmNwdS5mcHJzW2QxM10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7
Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDE0
XSkgPT0gUFJPQkVfQ1BVX0QxNF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxNF0n
cyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0
KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDE1XSkgPT0gUFJPQkVfQ1BV
X0QxNV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxNV0ncyBvZmZzZXQgbWF0Y2hl
cyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci0KLSNpZiBDUFUoQVJNX05FT04pIHx8IENQVShB
Uk1fVkZQX1YzX0QzMikKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJN
UmVnaXN0ZXJzOjpkMTZdKSA9PSBQUk9CRV9DUFVfRDE2X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6
Y3B1LmZwcnNbZDE2XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsK
LXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMTdd
KSA9PSBQUk9CRV9DUFVfRDE3X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDE3XSdz
IG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQo
UFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMThdKSA9PSBQUk9CRV9DUFVf
RDE4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDE4XSdzIG9mZnNldCBtYXRjaGVz
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0Yo
Y3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMTldKSA9PSBQUk9CRV9DUFVfRDE5X09GRlNFVCwgIlBy
b2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDE5XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVn
aXN0ZXJzOjpkMjBdKSA9PSBQUk9CRV9DUFVfRDIwX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1
LmZwcnNbZDIwXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0
YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjFdKSA9
PSBQUk9CRV9DUFVfRDIxX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDIxXSdzIG9m
ZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJP
QkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjJdKSA9PSBQUk9CRV9DUFVfRDIy
X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDIyXSdzIG9mZnNldCBtYXRjaGVzIGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1
LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjNdKSA9PSBQUk9CRV9DUFVfRDIzX09GRlNFVCwgIlByb2Jl
OjpTdGF0ZTo6Y3B1LmZwcnNbZDIzXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0
ZXJzOjpkMjRdKSA9PSBQUk9CRV9DUFVfRDI0X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZw
cnNbZDI0XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRp
Y19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjVdKSA9PSBQ
Uk9CRV9DUFVfRDI1X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI1XSdzIG9mZnNl
dCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVf
T0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjZdKSA9PSBQUk9CRV9DUFVfRDI2X09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI2XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1h
c21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZw
cnNbQVJNUmVnaXN0ZXJzOjpkMjddKSA9PSBQUk9CRV9DUFVfRDI3X09GRlNFVCwgIlByb2JlOjpT
dGF0ZTo6Y3B1LmZwcnNbZDI3XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJz
OjpkMjhdKSA9PSBQUk9CRV9DUFVfRDI4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNb
ZDI4XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19h
c3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjldKSA9PSBQUk9C
RV9DUFVfRDI5X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI5XSdzIG9mZnNldCBt
YXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZG
U0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMzBdKSA9PSBQUk9CRV9DUFVfRDMwX09GRlNF
VCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDMwXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNb
QVJNUmVnaXN0ZXJzOjpkMzFdKSA9PSBQUk9CRV9DUFVfRDMxX09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmZwcnNbZDMxXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUi
KTsKLSNlbmRpZiAvLyBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikKLQotc3Rh
dGljX2Fzc2VydChzaXplb2YoUHJvYmU6OlN0YXRlKSA9PSBQUk9CRV9TSVpFLCAiUHJvYmU6OlN0
YXRlJ3Mgc2l6ZSBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLSN1bmRlZiBQUk9C
RV9PRkZTRVRPRgotCi1zdHJ1Y3QgSW5jb21pbmdSZWNvcmQgewotICAgIHVpbnRwdHJfdCBscjsK
LSAgICB1aW50cHRyX3QgaXA7Ci0gICAgdWludHB0cl90IHI2OwotICAgIHVpbnRwdHJfdCByMDsK
LSAgICB1aW50cHRyX3QgcjE7Ci0gICAgdWludHB0cl90IHIyOwotfTsKLQotI2RlZmluZSBJTl9M
Ul9PRkZTRVQgKDAgKiBQVFJfU0laRSkKLSNkZWZpbmUgSU5fSVBfT0ZGU0VUICgxICogUFRSX1NJ
WkUpCi0jZGVmaW5lIElOX1I2X09GRlNFVCAoMiAqIFBUUl9TSVpFKQotI2RlZmluZSBJTl9SMF9P
RkZTRVQgKDMgKiBQVFJfU0laRSkKLSNkZWZpbmUgSU5fUjFfT0ZGU0VUICg0ICogUFRSX1NJWkUp
Ci0jZGVmaW5lIElOX1IyX09GRlNFVCAoNSAqIFBUUl9TSVpFKQotI2RlZmluZSBJTl9TSVpFICAg
ICAgKDYgKiBQVFJfU0laRSkKLQotc3RhdGljX2Fzc2VydChJTl9MUl9PRkZTRVQgPT0gb2Zmc2V0
b2YoSW5jb21pbmdSZWNvcmQsIGxyKSwgIklOX0xSX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKLXN0
YXRpY19hc3NlcnQoSU5fSVBfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBpcCks
ICJJTl9JUF9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7Ci1zdGF0aWNfYXNzZXJ0KElOX1I2X09GRlNF
VCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjYpLCAiSU5fUjZfT0ZGU0VUIGlzIGluY29y
cmVjdCIpOwotc3RhdGljX2Fzc2VydChJTl9SMF9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdS
ZWNvcmQsIHIwKSwgIklOX1IwX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKLXN0YXRpY19hc3NlcnQo
SU5fUjFfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByMSksICJJTl9SMV9PRkZT
RVQgaXMgaW5jb3JyZWN0Iik7Ci1zdGF0aWNfYXNzZXJ0KElOX1IyX09GRlNFVCA9PSBvZmZzZXRv
ZihJbmNvbWluZ1JlY29yZCwgcjIpLCAiSU5fUjJfT0ZGU0VUIGlzIGluY29ycmVjdCIpOwotc3Rh
dGljX2Fzc2VydChJTl9TSVpFID09IHNpemVvZihJbmNvbWluZ1JlY29yZCksICJJTl9TSVpFIGlz
IGluY29ycmVjdCIpOwotCi1hc20gKAotICAgICIudGV4dCIgIlxuIgotICAgICIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpICJcbiIKLSAgICBISURFX1NZTUJP
TChjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiXG4iCi0gICAgSU5MSU5FX0FSTV9GVU5DVElPTihj
dGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiXG4iCi0gICAgU1lNQk9MX1NUUklORyhjdGlNYXNtUHJv
YmVUcmFtcG9saW5lKSAiOiIgIlxuIgotCi0gICAgLy8gTWFjcm9Bc3NlbWJsZXJBUk12Nzo6cHJv
YmUoKSBoYXMgYWxyZWFkeSBnZW5lcmF0ZWQgY29kZSB0byBzdG9yZSBzb21lIHZhbHVlcy4KLSAg
ICAvLyBUaGUgdG9wIG9mIHN0YWNrIG5vdyBjb250YWlucyB0aGUgSW5jb21pbmdSZWNvcmQuCi0g
ICAgLy8KLSAgICAvLyBJbmNvbWluZyByZWdpc3RlciB2YWx1ZXM6Ci0gICAgLy8gICAgIHIwOiBw
cm9iZSBmdW5jdGlvbgotICAgIC8vICAgICByMTogcHJvYmUgYXJnCi0gICAgLy8gICAgIHIyOiBQ
cm9iZTo6ZXhlY3V0ZVByb2JlCi0gICAgLy8gICAgIHI2OiBzY3JhdGNoCi0gICAgLy8gICAgIGlw
OiBzY3JhdGNoLCB3YXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZQotICAgIC8vICAgICBscjogcmV0
dXJuIGFkZHJlc3MKLQotICAgICJtb3YgICAgICAgaXAsIHNwIiAiXG4iCi0gICAgIm1vdiAgICAg
ICByNiwgc3AiICJcbiIKLSAgICAic3ViICAgICAgIHI2LCByNiwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkgIlxuIgotCi0gICAgLy8gVGhlIEFSTSBFQUJJIHNw
ZWNpZmllcyB0aGF0IHRoZSBzdGFjayBuZWVkcyB0byBiZSAxNiBieXRlIGFsaWduZWQuCi0gICAg
ImJpYyAgICAgICByNiwgcjYsICMweGYiICJcbiIKLSAgICAibW92ICAgICAgIHNwLCByNiIgIlxu
IiAvLyBTZXQgdGhlIHNwIHRvIHByb3RlY3QgdGhlIFByb2JlOjpTdGF0ZSBmcm9tIGludGVycnVw
dHMgYmVmb3JlIHdlIGluaXRpYWxpemUgaXQuCi0KLSAgICAic3RyICAgICAgIHIwLCBbc3AsICMi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4i
Ci0gICAgInN0ciAgICAgICByMSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQVJH
X09GRlNFVCkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNUUklOR0laRV9W
QUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgImFkZCAgICAgICBy
MCwgaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9TSVpFKSAiXG4iCi0gICAgInN0ciAgICAg
ICByMCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0i
ICJcbiIKLQotICAgICJhZGQgICAgICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX1IzX09GRlNFVCkgIlxuIgotICAgICJzdG1pYSAgICAgbHIsIHsgcjMtcjUgfSIgIlxu
IgotICAgICJhZGQgICAgICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BV
X1I3X09GRlNFVCkgIlxuIgotICAgICJzdG1pYSAgICAgbHIsIHsgcjctcjExIH0iICJcbiIKLSAg
ICAibXJzICAgICAgIGxyLCBBUFNSIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0FQU1JfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJ2
bXJzICAgICAgbHIsIEZQU0NSIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0ZQU0NSX09GRlNFVCkgIl0iICJcbiIKLQotICAgICJs
ZHIgICAgICAgcjQsIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX0xSX09GRlNFVCkgIl0i
ICJcbiIKLSAgICAibGRyICAgICAgIHI1LCBbaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9J
UF9PRkZTRVQpICJdIiAiXG4iCi0gICAgImxkciAgICAgICByNiwgW2lwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoSU5fUjZfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJsZHIgICAgICAgcjcsIFtpcCwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1IwX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAg
ICAgIHI4LCBbaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9SMV9PRkZTRVQpICJdIiAiXG4i
Ci0gICAgImxkciAgICAgICByOSwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fUjJfT0ZG
U0VUKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgcjQsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX0NQVV9MUl9PRkZTRVQpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICByNSwgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0lQX09GRlNFVCkgIl0iICJcbiIKLSAg
ICAic3RyICAgICAgIHI2LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjZf
T0ZGU0VUKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgcjcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9SMF9PRkZTRVQpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICByOCwg
W3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1IxX09GRlNFVCkgIl0iICJcbiIK
LSAgICAic3RyICAgICAgIHI5LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVf
UjJfT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgImFkZCAgICAgICBpcCwgc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfRDBfT0ZGU0VUKSAiXG4iCi0gICAgInZzdG1pYS42NCBpcCEs
IHsgZDAtZDE1IH0iICJcbiIKLSNpZiBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0Qz
MikKLSAgICAidnN0bWlhLjY0IGlwISwgeyBkMTYtZDMxIH0iICJcbiIKLSNlbmRpZgotCi0gICAg
Ly8gcjUgaXMgYSBjYWxsZWUgc2F2ZWQgcmVnaXN0ZXIuIFdlJ2xsIHVzZSBpdCBmb3IgcHJlc2Vy
dmluZyB0aGUgUHJvYmU6OlN0YXRlKi4KLSAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29t
L3F1ZXN0aW9ucy8yNjE0MTkvYXJtLXRvLWMtY2FsbGluZy1jb252ZW50aW9uLXJlZ2lzdGVycy10
by1zYXZlIzI2MTQ5NgotICAgICJtb3YgICAgICAgcjUsIHNwIiAiXG4iCi0KLSAgICAibW92ICAg
ICAgIHIwLCBzcCIgIlxuIiAvLyB0aGUgUHJvYmU6OlN0YXRlKiBhcmcuCi0gICAgImJseCAgICAg
ICByMiIgIlxuIiAvLyBDYWxsIFByb2JlOjpleGVjdXRlUHJvYmUuCi0KLSAgICAvLyBNYWtlIHN1
cmUgdGhlIFByb2JlOjpTdGF0ZSBpcyBlbnRpcmVseSBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBv
aW50ZXIgc28KLSAgICAvLyB0aGF0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RpbGwgcHJlc2VydmVk
IHdoZW4gd2UgY2FsbCB0aGUgaW5pdGlhbGl6ZVN0YWNrCi0gICAgLy8gZnVuY3Rpb24uCi0gICAg
ImxkciAgICAgICByMSwgW3I1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09G
RlNFVCkgIl0iICJcbiIgLy8gUmVzdWx0IHNwLgotICAgICJhZGQgICAgICAgcjIsIHI1LCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSArIE9VVF9TSVpFKSAiXG4iIC8vIEVuZCBvZiBQ
cm92ZUNvbnRleHQgKyBidWZmZXIuCi0gICAgImNtcCAgICAgICByMSwgcjIiICJcbiIKLSAgICAi
YmdlICAgICAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lUHJvYmVT
dGF0ZUlzU2FmZSkgIlxuIgotCi0gICAgLy8gQWxsb2NhdGUgYSBzYWZlIHBsYWNlIG9uIHRoZSBz
dGFjayBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBvaW50ZXIgdG8gc3Rhc2ggdGhlIFByb2JlOjpT
dGF0ZS4KLSAgICAic3ViICAgICAgIHIxLCByMSwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JF
X1NJWkUgKyBPVVRfU0laRSkgIlxuIgotICAgICJiaWMgICAgICAgcjEsIHIxLCAjMHhmIiAiXG4i
IC8vIFRoZSBBUk0gRUFCSSBzcGVjaWZpZXMgdGhhdCB0aGUgc3RhY2sgbmVlZHMgdG8gYmUgMTYg
Ynl0ZSBhbGlnbmVkLgotICAgICJtb3YgICAgICAgc3AsIHIxIiAiXG4iIC8vIFNldCB0aGUgbmV3
IHNwIHRvIHByb3RlY3QgdGhhdCBtZW1vcnkgZnJvbSBpbnRlcnJ1cHRzIGJlZm9yZSB3ZSBjb3B5
IHRoZSBQcm9iZTo6U3RhdGUuCi0KLSAgICAvLyBDb3B5IHRoZSBQcm9iZTo6U3RhdGUgdG8gdGhl
IHNhZmUgcGxhY2UuCi0gICAgLy8gTm90ZTogd2UgaGF2ZSB0byBjb3B5IGZyb20gbG93IGFkZHJl
c3MgdG8gaGlnaGVyIGFkZHJlc3MgYmVjYXVzZSB3ZSdyZSBtb3ZpbmcgdGhlCi0gICAgLy8gUHJv
YmU6OlN0YXRlIHRvIGEgbG93ZXIgYWRkcmVzcy4KLSAgICAiYWRkICAgICAgIHI3LCByNSwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUpICJcbiIKLQotICAgIExPQ0FMX0xBQkVMX1NU
UklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lQ29weUxvb3ApICI6IiAiXG4iCi0gICAgImxkciAg
ICAgICByMywgW3I1XSwgIzQiICJcbiIKLSAgICAibGRyICAgICAgIHI0LCBbcjVdLCAjNCIgIlxu
IgotICAgICJzdHIgICAgICAgcjMsIFtyMV0sICM0IiAiXG4iCi0gICAgInN0ciAgICAgICByNCwg
W3IxXSwgIzQiICJcbiIKLSAgICAiY21wICAgICAgIHI1LCByNyIgIlxuIgotICAgICJibHQgICAg
ICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVDb3B5TG9vcCkgIlxu
IgotCi0gICAgIm1vdiAgICAgICByNSwgc3AiICJcbiIKLQotICAgIC8vIENhbGwgaW5pdGlhbGl6
ZVN0YWNrRnVuY3Rpb24gaWYgcHJlc2VudC4KLSAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFz
bVByb2JlVHJhbXBvbGluZVByb2JlU3RhdGVJc1NhZmUpICI6IiAiXG4iCi0gICAgImxkciAgICAg
ICByMiwgW3I1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfSU5JVF9TVEFDS19GVU5DVElP
Tl9PRkZTRVQpICJdIiAiXG4iCi0gICAgImNtcCAgICAgICByMiwgIzAiICJcbiIKLSAgICAiYmVx
ICAgICAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lUmVzdG9yZVJl
Z2lzdGVycykgIlxuIgotCi0gICAgIm1vdiAgICAgICByMCwgcjUiICJcbiIgLy8gU2V0IHRoZSBQ
cm9iZTo6U3RhdGUqIGFyZy4KLSAgICAiYmx4ICAgICAgIHIyIiAiXG4iIC8vIENhbGwgdGhlIGlu
aXRpYWxpemVTdGFja0Z1bmN0aW9uIChsb2FkZWQgaW50byByMiBhYm92ZSkuCi0KLSAgICBMT0NB
TF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVJlc3RvcmVSZWdpc3RlcnMpICI6
IiAiXG4iCi0KLSAgICAibW92ICAgICAgIHNwLCByNSIgIlxuIiAvLyBFbnN1cmUgdGhhdCBzcCBw
b2ludHMgdG8gdGhlIFByb2JlOjpTdGF0ZSouCi0KLSAgICAvLyBUbyBlbmFibGUgcHJvYmVzIHRv
IG1vZGlmeSByZWdpc3RlciBzdGF0ZSwgd2UgY29weSBhbGwgcmVnaXN0ZXJzCi0gICAgLy8gb3V0
IG9mIHRoZSBQcm9iZTo6U3RhdGUgYmVmb3JlIHJldHVybmluZy4KLQotI2lmIENQVShBUk1fTkVP
TikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotICAgICJhZGQgICAgICAgaXAsIHNwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0QzMV9PRkZTRVQgKyBGUFJFR19TSVpFKSAiXG4iCi0g
ICAgInZsZG1kYi42NCBpcCEsIHsgZDE2LWQzMSB9IiAiXG4iCi0gICAgInZsZG1kYi42NCBpcCEs
IHsgZDAtZDE1IH0iICJcbiIKLSNlbHNlCi0gICAgImFkZCAgICAgICBpcCwgc3AsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRDE1X09GRlNFVCArIEZQUkVHX1NJWkUpICJcbiIKLSAg
ICAidmxkbWRiLjY0IGlwISwgeyBkMC1kMTUgfSIgIlxuIgotI2VuZGlmCi0KLSAgICAiYWRkICAg
ICAgIGlwLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMTFfT0ZGU0VUICsg
R1BSRUdfU0laRSkgIlxuIgotICAgICJsZG1kYiAgICAgaXAsIHsgcjAtcjExIH0iICJcbiIKLSAg
ICAibGRyICAgICAgIGlwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRlBT
Q1JfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJ2bXNyICAgICAgRlBTQ1IsIGlwIiAiXG4iCi0KLSAg
ICAvLyBUaGVyZSBhcmUgNSBtb3JlIHJlZ2lzdGVycyBsZWZ0IHRvIHJlc3RvcmU6IGlwLCBzcCwg
bHIsIHBjLCBhbmQgYXBzci4KLQotICAgIC8vIFNldCB1cCB0aGUgcmVzdG9yZSBhcmVhIGZvciBz
cCBhbmQgcGMuCi0gICAgImxkciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIKLQotICAgIC8vIFB1c2ggdGhlIHBjIG9uIHRv
IHRoZSByZXN0b3JlIGFyZWEuCi0gICAgImxkciAgICAgICBpcCwgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIl0iICJcbiIKLSAgICAic3ViICAgICAgIGxy
LCBsciwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9TSVpFKSAiXG4iCi0gICAgInN0ciAgICAg
ICBpcCwgW2xyXSIgIlxuIgotICAgIC8vIFBvaW50IHNwIHRvIHRoZSByZXN0b3JlIGFyZWEuCi0g
ICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQ
X09GRlNFVCkgIl0iICJcbiIKLQotICAgIC8vIEFsbCBkb25lIHdpdGggbWF0aCBpLmUuIHdvbid0
IHRyYXNoIHRoZSBzdGF0dXMgcmVnaXN0ZXIgKGFwc3IpIGFuZCBkb24ndCBuZWVkCi0gICAgLy8g
c2NyYXRjaCByZWdpc3RlcnMgKGxyIGFuZCBpcCkgYW55bW9yZS4gUmVzdG9yZSBhcHNyLCBsciwg
YW5kIGlwLgotICAgICJsZHIgICAgICAgaXAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX0NQVV9BUFNSX09GRlNFVCkgIl0iICJcbiIKLSAgICAibXNyICAgICAgIEFQU1IsIGlwIiAi
XG4iCi0gICAgImxkciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX0xSX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIGlwLCBbc3AsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfSVBfT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgLy8gUmVz
dG9yZSB0aGUgc3AgYW5kIHBjLgotICAgICJsZHIgICAgICAgc3AsIFtzcCwgIyIgU1RSSU5HSVpF
X1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJdIiAiXG4iCi0gICAgInBvcCAgICAgICB7
IHBjIH0iICJcbiIKLSk7Ci0jZW5kaWYgLy8gQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCi0KLXZv
aWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKFByb2JlOjpGdW5jdGlvbiBmdW5jdGlvbiwgdm9pZCog
YXJnKQotewotICAgIHN1YjMyKFRydXN0ZWRJbW0zMihzaXplb2YoSW5jb21pbmdSZWNvcmQpKSwg
c3ApOwotCi0gICAgc3RvcmUzMihsciwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNv
cmQsIGxyKSkpOwotICAgIHN0b3JlMzIoaXAsIEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5n
UmVjb3JkLCBpcCkpKTsKLSAgICBzdG9yZTMyKHI2LCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNv
bWluZ1JlY29yZCwgcjYpKSk7IC8vIFMwID09IHI2LgotICAgIHN0b3JlMzIocjAsIEFkZHJlc3Mo
c3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByMCkpKTsKLSAgICBzdG9yZTMyKHIxLCBBZGRy
ZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjEpKSk7Ci0gICAgc3RvcmUzMihyMiwg
QWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHIyKSkpOwotICAgIC8vIFRoZSBm
b2xsb3dpbmcgdXNlcyBSZWdpc3RlcklEOjpTMC4gU28sIHRoZXkgbXVzdCBjb21lIGFmdGVyIHdl
IHByZXNlcnZlIFMwIGFib3ZlLgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9j
YXN0PHZvaWQqPihmdW5jdGlvbikpLCByMCk7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZyks
IHIxKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oUHJv
YmU6OmV4ZWN1dGVQcm9iZSkpLCByMik7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpKSwgaXApOwotICAgIG1fYXNz
ZW1ibGVyLmJseChpcCk7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCi0KLX0gLy8g
bmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKEFSTV9U
UkFESVRJT05BTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE0ZGY1MTcz
NGE2ZDgxODljODMwZTc1MDM2Y2IwYjczYWM1ZjlmZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjc2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLQotI2luY2x1
ZGUgIkFSTUFzc2VtYmxlci5oIgotI2luY2x1ZGUgIkFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIK
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLXVzaW5nIEFzc2VtYmxlciA9IFRBUkdFVF9BU1NFTUJMRVI7
Ci0KLWNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXI8QXNzZW1ibGVyPiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBEb3VibGVDb25kaXRpb25NYXNr
ID0gMHgwZjsKLSAgICBzdGF0aWMgY29uc3QgaW50IERvdWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwg
PSAweDEwOwotICAgIENPTVBJTEVfQVNTRVJUKCEoRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCAm
IERvdWJsZUNvbmRpdGlvbk1hc2spLCBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFsX3Nob3VsZF9u
b3RfaW50ZXJmZXJlX3dpdGhfQVJNQXNzZW1ibGVyX0NvbmRpdGlvbl9jb2Rlcyk7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bUdQUnMgPSAxNjsKLSAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbnVtRlBScyA9IDE2OwotICAgIAotICAgIHR5cGVkZWYgQVJNUmVnaXN0ZXJz
OjpGUFJlZ2lzdGVySUQgRlBSZWdpc3RlcklEOwotCi0gICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6aXA7Ci0gICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjY7Ci0KLSAg
ICBzdGF0aWMgY29uc3QgQVJNUmVnaXN0ZXJzOjpGUFJlZ2lzdGVySUQgZnBUZW1wUmVnaXN0ZXIg
PSBBUk1SZWdpc3RlcnM6OmQ3OwotCi0gICAgZW51bSBSZWxhdGlvbmFsQ29uZGl0aW9uIHsKLSAg
ICAgICAgRXF1YWwgPSBBUk1Bc3NlbWJsZXI6OkVRLAotICAgICAgICBOb3RFcXVhbCA9IEFSTUFz
c2VtYmxlcjo6TkUsCi0gICAgICAgIEFib3ZlID0gQVJNQXNzZW1ibGVyOjpISSwKLSAgICAgICAg
QWJvdmVPckVxdWFsID0gQVJNQXNzZW1ibGVyOjpDUywKLSAgICAgICAgQmVsb3cgPSBBUk1Bc3Nl
bWJsZXI6OkNDLAotICAgICAgICBCZWxvd09yRXF1YWwgPSBBUk1Bc3NlbWJsZXI6OkxTLAotICAg
ICAgICBHcmVhdGVyVGhhbiA9IEFSTUFzc2VtYmxlcjo6R1QsCi0gICAgICAgIEdyZWF0ZXJUaGFu
T3JFcXVhbCA9IEFSTUFzc2VtYmxlcjo6R0UsCi0gICAgICAgIExlc3NUaGFuID0gQVJNQXNzZW1i
bGVyOjpMVCwKLSAgICAgICAgTGVzc1RoYW5PckVxdWFsID0gQVJNQXNzZW1ibGVyOjpMRQotICAg
IH07Ci0KLSAgICBlbnVtIFJlc3VsdENvbmRpdGlvbiB7Ci0gICAgICAgIE92ZXJmbG93ID0gQVJN
QXNzZW1ibGVyOjpWUywKLSAgICAgICAgU2lnbmVkID0gQVJNQXNzZW1ibGVyOjpNSSwKLSAgICAg
ICAgUG9zaXRpdmVPclplcm8gPSBBUk1Bc3NlbWJsZXI6OlBMLAotICAgICAgICBaZXJvID0gQVJN
QXNzZW1ibGVyOjpFUSwKLSAgICAgICAgTm9uWmVybyA9IEFSTUFzc2VtYmxlcjo6TkUKLSAgICB9
OwotCi0gICAgZW51bSBEb3VibGVDb25kaXRpb24gewotICAgICAgICAvLyBUaGVzZSBjb25kaXRp
b25zIHdpbGwgb25seSBldmFsdWF0ZSB0byB0cnVlIGlmIHRoZSBjb21wYXJpc29uIGlzIG9yZGVy
ZWQgLSBpLmUuIG5laXRoZXIgb3BlcmFuZCBpcyBOYU4uCi0gICAgICAgIERvdWJsZUVxdWFsID0g
QVJNQXNzZW1ibGVyOjpFUSwKLSAgICAgICAgRG91YmxlTm90RXF1YWwgPSBBUk1Bc3NlbWJsZXI6
Ok5FIHwgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCwKLSAgICAgICAgRG91YmxlR3JlYXRlclRo
YW4gPSBBUk1Bc3NlbWJsZXI6OkdULAotICAgICAgICBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWwg
PSBBUk1Bc3NlbWJsZXI6OkdFLAotICAgICAgICBEb3VibGVMZXNzVGhhbiA9IEFSTUFzc2VtYmxl
cjo6Q0MsCi0gICAgICAgIERvdWJsZUxlc3NUaGFuT3JFcXVhbCA9IEFSTUFzc2VtYmxlcjo6TFMs
Ci0gICAgICAgIC8vIElmIGVpdGhlciBvcGVyYW5kIGlzIE5hTiwgdGhlc2UgY29uZGl0aW9ucyBh
bHdheXMgZXZhbHVhdGUgdG8gdHJ1ZS4KLSAgICAgICAgRG91YmxlRXF1YWxPclVub3JkZXJlZCA9
IEFSTUFzc2VtYmxlcjo6RVEgfCBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFsLAotICAgICAgICBE
b3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkID0gQVJNQXNzZW1ibGVyOjpORSwKLSAgICAgICAgRG91
YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZCA9IEFSTUFzc2VtYmxlcjo6SEksCi0gICAgICAgIERv
dWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkID0gQVJNQXNzZW1ibGVyOjpDUywKLSAg
ICAgICAgRG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCA9IEFSTUFzc2VtYmxlcjo6TFQsCi0gICAg
ICAgIERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkID0gQVJNQXNzZW1ibGVyOjpMRSwK
LSAgICB9OwotCi0gICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgc3RhY2tQb2ludGVyUmVnaXN0
ZXIgPSBBUk1SZWdpc3RlcnM6OnNwOwotICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZyYW1l
UG9pbnRlclJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpmcDsKLSAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCBsaW5rUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmxyOwotCi0gICAgc3RhdGljIGNv
bnN0IFNjYWxlIFNjYWxlUHRyID0gVGltZXNGb3VyOwotCi0gICAgdm9pZCBhZGQzMihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRk
cyhkZXN0LCBkZXN0LCBzcmMpOwotICAgIH0KLQotICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBv
cDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fz
c2VtYmxlci5hZGRzKGRlc3QsIG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihh
ZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgYWRkMzIoaW1tLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZHMoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIu
Z2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7Ci0gICAgfQotCi0gICAg
dm9pZCBhZGQzMihBYnNvbHV0ZUFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewot
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgZGF0YVRlbXBSZWdpc3Rlcik7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGF0
YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgMCk7Ci0gICAgICAgIGFkZDMyKGRhdGFU
ZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgYWRkMzIoQWRkcmVzcyBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihzcmMsIGRhdGFUZW1wUmVn
aXN0ZXIpOwotICAgICAgICBhZGQzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKLSAgICB9Ci0K
LSAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGRzKGRlc3QsIHNyYywgbV9h
c3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7Ci0gICAg
fQotCi0gICAgdm9pZCBnZXRFZmZlY3RpdmVBZGRyZXNzKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGQoZGVzdCwgYWRkcmVz
cy5iYXNlLCBtX2Fzc2VtYmxlci5sc2woYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50Pihh
ZGRyZXNzLnNjYWxlKSkpOwotICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQpCi0gICAgICAgICAg
ICBhZGQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBkZXN0KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5iaXRBbmRzKGRlc3QsIGRlc3QsIHNyYyk7Ci0gICAgfQotCi0gICAg
dm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJpdEFuZHMoZGVzdCwgb3AxLCBvcDIpOwot
ICAgIH0KLQotICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQotICAgIHsKLSAgICAgICAgQVJNV29yZCB3ID0gbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3Zh
bHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0cnVlKTsKLSAgICAgICAgaWYgKHcgJiBBUk1Bc3Nl
bWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmlj
cyhkZXN0LCBkZXN0LCB3ICYgfkFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmRzKGRlc3QsIGRlc3Qs
IHcpOwotICAgIH0KLQotICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFSTVdvcmQgdyA9IG1fYXNz
ZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlciwgdHJ1ZSk7Ci0g
ICAgICAgIGlmICh3ICYgQVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSkKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmJpY3MoZGVzdCwgc3JjLCB3ICYgfkFSTUFzc2VtYmxlcjo6T3Ay
SW52ZXJ0ZWRJbW1lZGlhdGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxl
ci5iaXRBbmRzKGRlc3QsIHNyYywgdyk7Ci0gICAgfQotCi0gICAgdm9pZCBhbmQzMihBZGRyZXNz
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKHNyYywgZGF0YVRl
bXBSZWdpc3Rlcik7Ci0gICAgICAgIGFuZDMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAg
IH0KLQotICAgIHZvaWQgYW5kMTYoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIGxvYWQxNihzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBhbmQzMihk
YXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxzaGlmdDMyKFJlZ2lz
dGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxzaGlm
dDMyKGRlc3QsIHNoaWZ0QW1vdW50LCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxzaGlmdDMy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3Qp
Ci0gICAgewotICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMHgx
Zik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJpdEFuZChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBzaGlm
dEFtb3VudCwgdyk7Ci0KLSAgICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxl
ci5sc2xSZWdpc3RlcihzcmMsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNsKGRlc3QsIGltbS5t
X3ZhbHVlICYgMHgxZikpOwotICAgIH0KLQotICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBz
cmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNsKHNyYywgaW1tLm1fdmFsdWUgJiAw
eDFmKSk7Ci0gICAgfQotCi0gICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJ
RCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmIChvcDIgPT0gZGVzdCkg
ewotICAgICAgICAgICAgaWYgKG9wMSA9PSBkZXN0KSB7Ci0gICAgICAgICAgICAgICAgbW92ZShv
cDIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIG9wMiA9IGFkZHJlc3NU
ZW1wUmVnaXN0ZXI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIFN3
YXAgdGhlIG9wZXJhbmRzLgotICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQgdG1wID0gb3AxOwot
ICAgICAgICAgICAgICAgIG9wMSA9IG9wMjsKLSAgICAgICAgICAgICAgICBvcDIgPSB0bXA7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbV9hc3NlbWJsZXIubXVscyhkZXN0LCBv
cDEsIG9wMik7Ci0gICAgfQotCi0gICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbXVsMzIoc3JjLCBkZXN0LCBkZXN0KTsKLSAgICB9
Ci0KLSAgICB2b2lkIG11bDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm11bHMoZGVzdCwgc3JjLCBhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIG5lZzMyKFJlZ2lzdGVySUQgc3JjRGVzdCkKLSAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLnJzYnMoc3JjRGVzdCwgc3JjRGVzdCwgQVJNQXNzZW1ibGVy
OjpnZXRPcDJCeXRlKDApKTsKLSAgICB9Ci0KLSAgICB2b2lkIG5lZzMyKFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5yc2JzKGRlc3Qs
IHNyYywgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9y
MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLm9ycnMoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9yMzIoUmVn
aXN0ZXJJRCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQotICAgIHsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
bG9hZDMyKEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIpOwot
ICAgICAgICBvcjMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlMzIoZGF0
YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBv
cjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQotICAgIHsKLSAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgbG9hZDMyKEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGRhdGFUZW1wUmVn
aXN0ZXIpOwotICAgICAgICBvcjMyKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7IC8vIEl0IHVzZXMg
UzAgYXMgdGVtcG9yYXJ5IHJlZ2lzdGVyLCB3ZSBuZWVkIHRvIHJlbG9hZCB0aGUgYWRkcmVzcy4K
LSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBh
ZGRyZXNzKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOwotICAgICAgICBvcjMyKGltbSwgYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlMzIoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzcyk7
Ci0gICAgfQotCi0gICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChkZXN0ICE9IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5vcnJzKGRlc3QsIGRlc3QsIG1fYXNzZW1ibGVyLmdldEltbShp
bW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgb3Iz
MihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAg
IHsKLSAgICAgICAgQVNTRVJUKHNyYyAhPSBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIub3JycyhkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1
ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgb3IzMihSZWdpc3Rl
cklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLm9ycnMoZGVzdCwgb3AxLCBvcDIpOwotICAgIH0KLQotICAgIHZvaWQgcnNo
aWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgcnNoaWZ0MzIoZGVzdCwgc2hpZnRBbW91bnQsIGRlc3QpOwotICAgIH0KLQotICAgIHZv
aWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0
T3AyQnl0ZSgweDFmKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYml0QW5kKGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIHNoaWZ0QW1vdW50LCB3KTsKLQotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3Qs
IG1fYXNzZW1ibGVyLmFzclJlZ2lzdGVyKHNyYywgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAg
IH0KLQotICAgIHZvaWQgcnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQotICAgIHsKLSAgICAgICAgcnNoaWZ0MzIoZGVzdCwgaW1tLCBkZXN0KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKQotICAgICAgICAgICAg
bW92ZShzcmMsIGRlc3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmFzcihzcmMsIGltbS5tX3ZhbHVlICYgMHgxZikpOwotICAg
IH0KLQotICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVy
SUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIHVyc2hpZnQzMihkZXN0LCBzaGlmdEFtb3VudCwgZGVz
dCk7Ci0gICAgfQotCi0gICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFSTVdvcmQg
dyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgweDFmKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
Yml0QW5kKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHNoaWZ0QW1vdW50LCB3KTsKLQotICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmxzclJlZ2lzdGVyKHNyYywgYWRkcmVz
c1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgdXJzaGlmdDMyKFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnMo
ZGVzdCwgbV9hc3NlbWJsZXIubHNyKGRlc3QsIGltbS5tX3ZhbHVlICYgMHgxZikpOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkKLSAg
ICAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9h
c3NlbWJsZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxlci5sc3Ioc3JjLCBpbW0ubV92YWx1ZSAmIDB4
MWYpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdWJzKGRlc3QsIGRlc3QsIHNyYyk7
Ci0gICAgfQotCi0gICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmln
aHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN1YnMoZGVz
dCwgbGVmdCwgcmlnaHQpOwotICAgIH0KLQotICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3VicyhkZXN0
LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
YWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVy
KTsKLSAgICAgICAgc3ViMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUz
MihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YjMyKEFk
ZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkMzIoc3JjLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3ViMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7
Ci0gICAgfQotCi0gICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3VicyhkZXN0
LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3Rl
cikpOwotICAgIH0KLQotICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmVvcnMoZGVzdCwgZGVzdCwgc3JjKTsK
LSAgICB9Ci0KLSAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwg
UmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZW9ycyhkZXN0LCBv
cDEsIG9wMik7Ci0gICAgfQotCi0gICAgdm9pZCB4b3IzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIHhvcjMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQg
eG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAg
aWYgKGltbS5tX3ZhbHVlID09IC0xKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubXZucyhkZXN0
LCBkZXN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZW9ycyhkZXN0
LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBpZiAoaW1tLm1fdmFsdWUg
PT0gLTEpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tdm5zKGRlc3QsIHNyYyk7Ci0gICAgICAg
IGVsc2UgICAgCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5lb3JzKGRlc3QsIHNyYywgbV9hc3Nl
bWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7Ci0gICAgfQot
Ci0gICAgdm9pZCBjb3VudExlYWRpbmdaZXJvczMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCi0gICAgewotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KQotICAgICAgICBtX2Fz
c2VtYmxlci5jbHooZGVzdCwgc3JjKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShzcmMp
OwotICAgICAgICBVTlVTRURfUEFSQU0oZGVzdCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQ4KEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5kYXRhVHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOChCYXNlSW5kZXgg
YWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFz
ZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRy
ZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOChjb25zdCB2b2lkKiBhZGRyZXNz
LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRk
cmVzcyksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJh
bnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3Rl
ciwgMCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOFNpZ25lZEV4dGVuZFRvMzIoQWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kYXRh
VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJbnQ4LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJbnQ4LCBkZXN0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2Fs
ZSksIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQxNihJbXBsaWNpdEFk
ZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuZGF0YVRyYW5zZmVyMTYoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBkZXN0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQxNihCYXNlSW5k
ZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
YmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIGRlc3QsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwg
YWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZDE2U2lnbmVkRXh0ZW5kVG8z
MihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJbnQxNiwgZGVz
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Mu
c2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkMzIoSW1wbGlj
aXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmRhdGFUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkMzIoQmFz
ZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmJhc2VJbmRleFRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2Fs
ZSksIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSNpZiBDUFUoQVJNVjVfT1JfTE9XRVIpCi0g
ICAgdm9pZCBsb2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKEJhc2VJbmRleCBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpOwotI2Vsc2UKLSAgICB2b2lkIGxvYWQzMldpdGhVbmFsaWduZWRIYWxm
V29yZHMoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IGxvYWQzMihhZGRyZXNzLCBkZXN0KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHZvaWQgbG9hZDE2
VW5hbGlnbmVkKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBsb2FkMTYoYWRkcmVzcywgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBhYm9ydFdpdGhS
ZWFzb24oQWJvcnRSZWFzb24gcmVhc29uKQotICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1t
MzIocmVhc29uKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGJyZWFrcG9pbnQoKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihBYm9ydFJlYXNvbiByZWFzb24sIGlu
dHB0cl90IG1pc2MpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihtaXNjKSwgZGF0
YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGFib3J0V2l0aFJlYXNvbihyZWFzb24pOwotICAgIH0K
LQotICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIENvbnZlcnRpYmxlTG9hZExh
YmVsIHJlc3VsdCh0aGlzKTsKLSAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zmc2V0ID49IDAgJiYg
YWRkcmVzcy5vZmZzZXQgPD0gMjU1KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNz
ZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBEYXRhTGFiZWwzMiBsb2FkMzJX
aXRoQWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQot
ICAgIHsKLSAgICAgICAgRGF0YUxhYmVsMzIgZGF0YUxhYmVsKHRoaXMpOwotICAgICAgICBtX2Fz
c2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoYWRkcmVzc1RlbXBSZWdpc3RlciwgMCk7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmR0clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBk
ZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4g
ZGF0YUxhYmVsOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzQ29tcGFjdFB0ckFsaWduZWRB
ZGRyZXNzT2Zmc2V0KHB0cmRpZmZfdCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB2YWx1
ZSA+PSAtNDA5NSAmJiB2YWx1ZSA8PSA0MDk1OwotICAgIH0KLQotICAgIERhdGFMYWJlbENvbXBh
Y3QgbG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBEYXRhTGFiZWxDb21wYWN0IGRhdGFMYWJl
bCh0aGlzKTsKLSAgICAgICAgQVNTRVJUKGlzQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0
KGFkZHJlc3Mub2Zmc2V0KSk7Ci0gICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAwKQotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuZHRyRG93bihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwot
ICAgIH0KLQotICAgIERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJl
Z2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBEYXRhTGFiZWwz
MiBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0
ZShhZGRyZXNzVGVtcFJlZ2lzdGVyLCAwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXBSZWdp
c3RlcihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBkYXRhTGFiZWw7Ci0gICAgfQotCi0gICAg
dm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQotICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OlN0b3Jl
VWludDgsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+
KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9y
ZTgoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQ4LCBzcmMsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmU4KFJlZ2lz
dGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGFkZHJlc3MpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQ4LCBzcmMsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIDApOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIGltbTgo
c3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSkpOwotICAgICAgICBtb3ZlKGltbTgsIGRh
dGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVz
cyk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgY29uc3Qgdm9p
ZCogYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBpbW04KHN0YXRpY19jYXN0
PGludDhfdD4oaW1tLm1fdmFsdWUpKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIocmVpbnRl
cnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICBtb3ZlKGltbTgsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5k
dHJVcChBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDgsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIsIDApOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNy
YywgQmFzZUluZGV4IGFkZHJlc3MpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5k
ZXhUcmFuc2ZlcjE2KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MTYsIHNyYywgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNz
Lm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBJbXBs
aWNpdEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFu
c2ZlcjE2KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MTYsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRhdGFU
cmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIHNyYywgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRl
eFRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mu
b2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgSW1w
bGljaXRBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7Ci0g
ICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRy
ZXNzKQotICAgIHsKLSAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50
MzIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGlj
X2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAg
IHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVzcykKLSAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShhZGRyZXNzVGVtcFJlZ2lz
dGVyLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCAwKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwg
Y29uc3Qgdm9pZCogYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1
ZUltbWVkaWF0ZShhZGRyZXNzVGVtcFJlZ2lzdGVyLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+
KGFkZHJlc3MpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92ZUltbShpbW0ubV92YWx1ZSwgZGF0
YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6
U3RvcmVVaW50MzIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApOwot
ICAgIH0KLQotICAgIHZvaWQgcG9wKFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLnBvcChkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHBvcFBhaXIoUmVnaXN0ZXJJ
RCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnBv
cChkZXN0MSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnBvcChkZXN0Mik7Ci0gICAgfQotCi0gICAg
dm9pZCBwdXNoKFJlZ2lzdGVySUQgc3JjKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIucHVz
aChzcmMpOwotICAgIH0KLQotICAgIHZvaWQgcHVzaChBZGRyZXNzIGFkZHJlc3MpCi0gICAgewot
ICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHB1c2go
ZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBwdXNoKFRydXN0ZWRJbW0zMiBp
bW0pCi0gICAgewotICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgIHB1c2goYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBwdXNoUGFp
cihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMikKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLnB1c2goc3JjMik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnB1c2goc3JjMSk7Ci0gICAg
fQotCi0gICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmVJbW0oaW1tLm1fdmFsdWUsIGRlc3QpOwotICAg
IH0KLQotICAgIHZvaWQgbW92ZShSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAg
IHsKLSAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92
KGRlc3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW1QdHIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihpbW0pLCBk
ZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAoUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklE
IHJlZzIpCi0gICAgewotICAgICAgICBtb3ZlKHJlZzEsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICBtb3ZlKHJlZzIsIHJlZzEpOwotICAgICAgICBtb3ZlKGRhdGFUZW1wUmVnaXN0ZXIsIHJl
ZzIpOwotICAgIH0KLQotICAgIHZvaWQgc3dhcChGUFJlZ2lzdGVySUQgZnIxLCBGUFJlZ2lzdGVy
SUQgZnIyKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShmcjEsIGZwVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgbW92ZURvdWJsZShmcjIsIGZyMSk7Ci0gICAgICAgIG1vdmVEb3VibGUoZnBUZW1w
UmVnaXN0ZXIsIGZyMik7Ci0gICAgfQotCi0gICAgdm9pZCBzaWduRXh0ZW5kMzJUb1B0cihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKHNyYyAhPSBk
ZXN0KQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgemVy
b0V4dGVuZDMyVG9QdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAg
ICB9Ci0KLSAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNz
IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBy
aWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIHJpZ2h0KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJu
IGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7Ci0gICAgfQotCi0gICAg
SnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRy
dXN0ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0
KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlz
LCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMy
KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFu
Y2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0
ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNy
b0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsK
LSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGxlZnQubV9wdHIpLCBkYXRhVGVtcFJlZ2lzdGVy
KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlz
LCBjb25kLCBBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAg
ICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7Ci0g
ICAgfQotCi0gICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNl
SW5kZXggbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihsZWZ0
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBpbnQg
dXNlQ29uc3RhbnRQb29sID0gMCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0
LCByaWdodCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRp
b24oY29uZCksIHVzZUNvbnN0YW50UG9vbCkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoMzIo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiBy
aWdodCwgaW50IHVzZUNvbnN0YW50UG9vbCA9IDApCi0gICAgewotICAgICAgICBpbnRlcm5hbENv
bXBhcmUzMihsZWZ0LCByaWdodCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpt
cChBUk1Db25kaXRpb24oY29uZCksIHVzZUNvbnN0YW50UG9vbCkpOwotICAgIH0KLQotICAgIEp1
bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFk
ZHJlc3MgcmlnaHQpCi0gICAgewotICAgICAgICBsb2FkMzIocmlnaHQsIGRhdGFUZW1wUmVnaXN0
ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rl
cik7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihs
ZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRh
dGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaDMyKFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0g
ICAgewotICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCk7Ci0gICAgfQotCi0g
ICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0
LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewotICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRl
bXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lz
dGVyLCByaWdodCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gzMldpdGhVbmFsaWduZWRIYWxm
V29yZHMoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZElt
bTMyIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3Jkcyhs
ZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRh
dGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFRlc3Q4KFJl
c3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0g
VHJ1c3RlZEltbTMyKC0xKSkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1h
Y3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7
Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywg
Y29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2hU
ZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOwotICAgIH0KLQotICAgIEp1bXAg
YnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVz
dGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCi0gICAgewotICAgICAgICBUcnVzdGVk
SW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIG1hc2spOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKLSAg
ICB9Ci0KLSAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0
ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQot
ICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
OjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKLSAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNz
KGRhdGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJy
YW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7Ci0gICAgfQotCi0gICAg
SnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBS
ZWdpc3RlcklEIG1hc2spCi0gICAgewotICAgICAgICBBU1NFUlQoY29uZCA9PSBaZXJvIHx8IGNv
bmQgPT0gTm9uWmVybyB8fCBjb25kID09IFNpZ25lZCB8fCBjb25kID09IFBvc2l0aXZlT3JaZXJv
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIudHN0KHJlZywgbWFzayk7Ci0gICAgICAgIHJldHVybiBK
dW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBK
dW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRy
dXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChjb25kID09IFplcm8gfHwgY29uZCA9PSBOb25aZXJvIHx8IGNvbmQgPT0gU2lnbmVkIHx8IGNv
bmQgPT0gUG9zaXRpdmVPclplcm8pOwotICAgICAgICBBUk1Xb3JkIHcgPSBtX2Fzc2VtYmxlci5n
ZXRJbW0obWFzay5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0cnVlKTsKLSAgICAgICAg
aWYgKHcgJiBBUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKQotICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYmljcyhhZGRyZXNzVGVtcFJlZ2lzdGVyLCByZWcsIHcgJiB+QVJNQXNzZW1i
bGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnRzdChyZWcsIHcpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5q
bXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hUZXN0MzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sg
PSBUcnVzdGVkSW1tMzIoLTEpKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRhdGFU
ZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1w
UmVnaXN0ZXIsIG1hc2spOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoVGVzdDMyKFJlc3VsdENv
bmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVz
dGVkSW1tMzIoLTEpKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRhdGFUZW1wUmVn
aXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0
ZXIsIG1hc2spOwotICAgIH0KLQotICAgIEp1bXAganVtcCgpCi0gICAgewotICAgICAgICByZXR1
cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBqdW1wKFJlZ2lz
dGVySUQgdGFyZ2V0LCBQdHJUYWcpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5ieCh0YXJn
ZXQpOwotICAgIH0KLQotICAgIHZvaWQganVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKLSAg
ICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKLSAgICB7Ci0g
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApLCBB
Uk1SZWdpc3RlcnM6OnBjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQganVtcChS
ZWdpc3RlcklEIHRhcmdldCwgUmVnaXN0ZXJJRCBqdW1wVGFnKSB7IFVOVVNFRF9QQVJBTShqdW1w
VGFnKSwganVtcCh0YXJnZXQsIE5vUHRyVGFnKTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBq
dW1wKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBqdW1wVGFnKSB7IFVOVVNFRF9QQVJBTShq
dW1wVGFnKSwganVtcChhZGRyZXNzLCBOb1B0clRhZyk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQganVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBqdW1wVGFnKSB7IFVO
VVNFRF9QQVJBTShqdW1wVGFnKSwganVtcChhZGRyZXNzLCBOb1B0clRhZyk7IH0KLQotICAgIHZv
aWQgbW92ZURvdWJsZVRvSW50cyhGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBS
ZWdpc3RlcklEIGRlc3QyKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0MSwg
ZGVzdDIsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3ZlSW50c1RvRG91YmxlKFJlZ2lzdGVy
SUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBGUFJlZ2lzdGVySUQgZGVzdCwgRlBSZWdpc3RlcklE
KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0LCBzcmMxLCBzcmMyKTsKLSAg
ICB9Ci0KLSAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09
IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pCi0gICAgICAg
ICAgICB8fCAoY29uZCA9PSBOb25aZXJvKSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykpOwot
ICAgICAgICBhZGQzMihzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxl
ci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hBZGQz
MihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cp
IHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykKLSAgICAgICAgICAgIHx8IChj
b25kID09IE5vblplcm8pIHx8IChjb25kID09IFBvc2l0aXZlT3JaZXJvKSk7Ci0gICAgICAgIGFk
ZDMyKG9wMSwgb3AyLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1w
KEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVk
KSB8fCAoY29uZCA9PSBaZXJvKQotICAgICAgICAgICAgfHwgKGNvbmQgPT0gTm9uWmVybykgfHwg
KGNvbmQgPT0gUG9zaXRpdmVPclplcm8pKTsKLSAgICAgICAgYWRkMzIoaW1tLCBkZXN0KTsKLSAg
ICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwot
ICAgIH0KLQotICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNv
bmQgPT0gWmVybykKLSAgICAgICAgICAgIHx8IChjb25kID09IE5vblplcm8pIHx8IChjb25kID09
IFBvc2l0aXZlT3JaZXJvKSk7Ci0gICAgICAgIGFkZDMyKHNyYywgaW1tLCBkZXN0KTsKLSAgICAg
ICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAg
IH0KLQotICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJ
bW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChj
b25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pCi0g
ICAgICAgICAgICB8fCAoY29uZCA9PSBOb25aZXJvKSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVy
bykpOwotICAgICAgICBhZGQzMihpbW0sIGRlc3QpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFu
Y2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihzcmMsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3Rlciwg
ZGVzdCk7Ci0gICAgfQotICAgIHZvaWQgbXVsbDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklE
IG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKG9wMiA9PSBkZXN0KSB7
Ci0gICAgICAgICAgICBpZiAob3AxID09IGRlc3QpIHsKLSAgICAgICAgICAgICAgICBtb3ZlKG9w
MiwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgb3AyID0gYWRkcmVzc1Rl
bXBSZWdpc3RlcjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gU3dh
cCB0aGUgb3BlcmFuZHMuCi0gICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBvcDE7Ci0g
ICAgICAgICAgICAgICAgb3AxID0gb3AyOwotICAgICAgICAgICAgICAgIG9wMiA9IHRtcDsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtX2Fzc2VtYmxlci5tdWxsKGRhdGFUZW1w
UmVnaXN0ZXIsIGRlc3QsIG9wMSwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wKGRhdGFU
ZW1wUmVnaXN0ZXIsIG1fYXNzZW1ibGVyLmFzcihkZXN0LCAzMSkpOwotICAgIH0KLQotICAgIEp1
bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVn
aXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNv
bmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwg
KGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewotICAg
ICAgICAgICAgbXVsbDMyKHNyYzEsIHNyYzIsIGRlc3QpOwotICAgICAgICAgICAgY29uZCA9IE5v
blplcm87Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbXVsMzIoc3JjMSwg
c3JjMiwgZGVzdCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25k
aXRpb24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIHNyYywgZGVzdCwgZGVzdCk7Ci0gICAgfQotCi0g
ICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMs
IFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJv
KSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Ci0gICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7
Ci0gICAgICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAg
ICBtdWxsMzIoYWRkcmVzc1RlbXBSZWdpc3Rlciwgc3JjLCBkZXN0KTsKLSAgICAgICAgICAgIGNv
bmQgPSBOb25aZXJvOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG11bDMy
KGltbSwgc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFS
TUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewot
ICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwg
KGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBzdWIzMihzcmMs
IGRlc3QpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9u
KGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24g
Y29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAg
QVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09
IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLSAgICAgICAgc3ViMzIoaW1tLCBkZXN0KTsK
LSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkp
OwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewot
ICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwg
KGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBzdWIzMihzcmMs
IGltbSwgZGVzdCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25k
aXRpb24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0g
U2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLnN1YnMoZGVzdCwgb3AxLCBvcDIpOwotICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBi
cmFuY2hOZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNEZXN0KQotICAg
IHsKLSAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQp
IHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLSAgICAgICAgbmVnMzIo
c3JjRGVzdCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRp
b24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaE9yMzIoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBB
U1NFUlQoKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25a
ZXJvKSk7Ci0gICAgICAgIG9yMzIoc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9h
c3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIFBhdGNoYWJs
ZUp1bXAgcGF0Y2hhYmxlSnVtcCgpCi0gICAgewotICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVt
cChtX2Fzc2VtYmxlci5qbXAoQVJNQXNzZW1ibGVyOjpBTCwgMSkpOwotICAgIH0KLQotICAgIFBh
dGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJ
bW0zMiBpbW04ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlz
LCBjb25kLCBpbW0pOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBy
ZXR1cm4gcGF0Y2hhYmxlQnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgaW1tOCk7Ci0g
ICAgfQotCi0gICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgaW1tKQotICAgIHsKLSAg
ICAgICAgaW50ZXJuYWxDb21wYXJlMzIocmVnLCBpbW0pOwotICAgICAgICBKdW1wIGp1bXAobV9h
c3NlbWJsZXIubG9hZEJyYW5jaFRhcmdldChkYXRhVGVtcFJlZ2lzdGVyLCBBUk1Db25kaXRpb24o
Y29uZCksIHRydWUpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYngoZGF0YVRlbXBSZWdpc3Rlciwg
QVJNQ29uZGl0aW9uKGNvbmQpKTsKLSAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoanVtcCk7
Ci0gICAgfQotCi0gICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSkKLSAgICB7
Ci0gICAgICAgIGludGVybmFsQ29tcGFyZTMyKGFkZHJlc3MsIGltbSk7Ci0gICAgICAgIEp1bXAg
anVtcChtX2Fzc2VtYmxlci5sb2FkQnJhbmNoVGFyZ2V0KGRhdGFUZW1wUmVnaXN0ZXIsIEFSTUNv
bmRpdGlvbihjb25kKSwgZmFsc2UpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYngoZGF0YVRlbXBS
ZWdpc3RlciwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKLSAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1
bXAoanVtcCk7Ci0gICAgfQotCi0gICAgdm9pZCBicmVha3BvaW50KCkKLSAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmJrcHQoMCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNCcmVha3Bv
aW50KHZvaWQqIGFkZHJlc3MpIHsgcmV0dXJuIEFSTUFzc2VtYmxlcjo6aXNCa3B0KGFkZHJlc3Mp
OyB9Ci0KLSAgICBDYWxsIG5lYXJDYWxsKCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxv
YWRCcmFuY2hUYXJnZXQoZGF0YVRlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpBTCwgdHJ1ZSk7
Ci0gICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmJseChkYXRhVGVtcFJlZ2lzdGVyKSwg
Q2FsbDo6TGlua2FibGVOZWFyKTsKLSAgICB9Ci0KLSAgICBDYWxsIG5lYXJUYWlsQ2FsbCgpCi0g
ICAgewotICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5qbXAoKSwgQ2FsbDo6TGlua2Fi
bGVOZWFyVGFpbCk7Ci0gICAgfQotCi0gICAgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFyZ2V0LCBQ
dHJUYWcpCi0gICAgewotICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5ibHgodGFyZ2V0
KSwgQ2FsbDo6Tm9uZSk7Ci0gICAgfQotCi0gICAgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywg
UHRyVGFnKQotICAgIHsKLSAgICAgICAgY2FsbDMyKGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZz
ZXQpOwotICAgIH0KLQotICAgIHZvaWQgcmV0KCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmJ4KGxpbmtSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0LCByaWdodCk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUo
MCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJC
eXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOwotICAgIH0KLQotICAgIHZvaWQgY29tcGFyZTMy
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcChs
ZWZ0LCBtX2Fzc2VtYmxlci5nZXRJbW0ocmlnaHQubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3Rl
cikpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJC
eXRlKDApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0
T3AyQnl0ZSgxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbXBh
cmU4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdo
dDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IHJpZ2h0KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgY29tcGFyZTMy
KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9p
ZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1t
MzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKG1hc2subV92YWx1
ZSA9PSAtMSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIHJlZyk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIG1fYXNzZW1ibGVyLmdldElt
bShtYXNrLm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIubW92KGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSksIEFSTUNvbmRpdGlv
bihjb25kKSk7Ci0gICAgfQotCi0gICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKLSAg
ICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
dGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2ssIGRlc3QpOwotICAgIH0KLQotICAg
IHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3Rl
ZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0z
MiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywg
Y29uZCwgbWFzayk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRp
dGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHRl
c3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCwgZGVzdCk7Ci0gICAgfQotCi0gICAg
dm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRlc3QsIHNyYywgbV9hc3NlbWJs
ZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7Ci0gICAgfQotCi0g
ICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykK
LSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgYWRkMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihk
YXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZDY0
KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAg
ICAgQVJNV29yZCB0bXA7Ci0KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9w
dHIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNz
ZW1ibGVyOjpMb2FkVWludDMyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVy
LCAwKTsKLQotICAgICAgICBpZiAoKHRtcCA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyKGltbS5tX3Zh
bHVlKSkgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYWRkcyhhZGRyZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0
bXApOwotICAgICAgICBlbHNlIGlmICgodG1wID0gQVJNQXNzZW1ibGVyOjpnZXRPcDIoLWltbS5t
X3ZhbHVlKSkgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKQotICAgICAgICAgICAg
bV9hc3NlbWJsZXIuc3VicyhhZGRyZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVy
LCB0bXApOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHMoYWRk
cmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbV9hc3NlbWJsZXIuZ2V0SW1t
KGltbS5tX3ZhbHVlLCBkYXRhVGVtcFJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICB9Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIDApOwotCi0gICAgICAgIG1fYXNzZW1i
bGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgYWRkcmVzc1RlbXBSZWdpc3Rlciwg
ZGF0YVRlbXBSZWdpc3Rlciwgc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgaWYgKGltbS5tX3Zh
bHVlID49IDApCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGMoYWRkcmVzc1RlbXBSZWdpc3Rl
ciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2JjKGFkZHJlc3NUZW1wUmVnaXN0
ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAg
fQotCi0gICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRk
cmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLm1fcHRyLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgc3ViMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3Rv
cmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGxvYWQzMihjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoYWRkcmVzc1RlbXBSZWdpc3Rlciwg
cmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3Rl
ciwgMCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQotICAgIHsKLSAgICAg
ICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4g
YnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOwotICAgIH0KLQotICAgIEp1
bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVm
dCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIs
IGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgcmlnaHQpOwotICAgIH0KLQotICAgIHZvaWQgcmVsYXRpdmVUYWJsZUp1bXAo
UmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHNjYWxl
ID49IDAgJiYgc2NhbGUgPD0gMzEpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQoQVJNUmVnaXN0
ZXJzOjpwYywgQVJNUmVnaXN0ZXJzOjpwYywgbV9hc3NlbWJsZXIubHNsKGluZGV4LCBzY2FsZSkp
OwotCi0gICAgICAgIC8vIE5PUCB0aGUgZGVmYXVsdCBwcmVmZXRjaGluZwotICAgICAgICBtX2Fz
c2VtYmxlci5tb3YoQVJNUmVnaXN0ZXJzOjpyMCwgQVJNUmVnaXN0ZXJzOjpyMCk7Ci0gICAgfQot
Ci0gICAgQ2FsbCBjYWxsKFB0clRhZykKLSAgICB7Ci0gICAgICAgIGVuc3VyZVNwYWNlKDIgKiBz
aXplb2YoQVJNV29yZCksIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxv
YWRCcmFuY2hUYXJnZXQoZGF0YVRlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpBTCwgdHJ1ZSk7
Ci0gICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmJseChkYXRhVGVtcFJlZ2lzdGVyKSwg
Q2FsbDo6TGlua2FibGUpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJl
Z2lzdGVySUQgY2FsbFRhZykgeyByZXR1cm4gVU5VU0VEX1BBUkFNKGNhbGxUYWcpLCBjYWxsKE5v
UHRyVGFnKTsgfQotICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFyZ2V0
LCBSZWdpc3RlcklEIGNhbGxUYWcpIHsgcmV0dXJuIFVOVVNFRF9QQVJBTShjYWxsVGFnKSwgY2Fs
bCh0YXJnZXQsIE5vUHRyVGFnKTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsKEFkZHJl
c3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBjYWxsVGFnKSB7IFVOVVNFRF9QQVJBTShjYWxsVGFnKSwg
Y2FsbChhZGRyZXNzLCBOb1B0clRhZyk7IH0KLQotICAgIENhbGwgdGFpbFJlY3Vyc2l2ZUNhbGwo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIENhbGw6OmZyb21UYWlsSnVtcChqdW1wKCkpOwotICAg
IH0KLQotICAgIENhbGwgbWFrZVRhaWxSZWN1cnNpdmVDYWxsKEp1bXAgb2xkSnVtcCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBDYWxsOjpmcm9tVGFpbEp1bXAob2xkSnVtcCk7Ci0gICAgfQotCi0g
ICAgRGF0YUxhYmVsUHRyIG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIERhdGFMYWJlbFB0ciBkYXRhTGFiZWwo
dGhpcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShkZXN0LCByZWlu
dGVycHJldF9jYXN0PEFSTVdvcmQ+KGluaXRpYWxWYWx1ZS5tX3ZhbHVlKSk7Ci0gICAgICAgIHJl
dHVybiBkYXRhTGFiZWw7Ci0gICAgfQotCi0gICAgRGF0YUxhYmVsMzIgbW92ZVdpdGhQYXRjaChU
cnVzdGVkSW1tMzIgaW5pdGlhbFZhbHVlLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAg
ICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVu
aXF1ZUltbWVkaWF0ZShkZXN0LCBzdGF0aWNfY2FzdDxBUk1Xb3JkPihpbml0aWFsVmFsdWUubV92
YWx1ZSkpOwotICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwotICAgIH0KLQotICAgIEp1bXAgYnJh
bmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1
ZSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cikpCi0gICAgewotICAgICAgICBlbnN1cmVTcGFjZSgz
ICogc2l6ZW9mKEFSTVdvcmQpLCAyICogc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgZGF0YUxh
YmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgZGF0YVRlbXBSZWdpc3Rlcik7
Ci0gICAgICAgIEp1bXAganVtcCA9IGJyYW5jaDMyKGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0
ZXIsIHRydWUpOwotICAgICAgICByZXR1cm4ganVtcDsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5j
aFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0
YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBU
cnVzdGVkSW1tUHRyKG51bGxwdHIpKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFU
ZW1wUmVnaXN0ZXIpOwotICAgICAgICBlbnN1cmVTcGFjZSgzICogc2l6ZW9mKEFSTVdvcmQpLCAy
ICogc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChp
bml0aWFsUmlnaHRWYWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIEp1bXAganVt
cCA9IGJyYW5jaDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIs
IHRydWUpOwotICAgICAgICByZXR1cm4ganVtcDsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaDMy
V2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFi
ZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVk
SW1tMzIoMCkpCi0gICAgewotICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7
Ci0gICAgICAgIGVuc3VyZVNwYWNlKDMgKiBzaXplb2YoQVJNV29yZCksIDIgKiBzaXplb2YoQVJN
V29yZCkpOwotICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZh
bHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgSnVtcCBqdW1wID0gYnJhbmNoMzIo
Y29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgdHJ1ZSk7Ci0gICAg
ICAgIHJldHVybiBqdW1wOwotICAgIH0KLQotICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQ
YXRjaChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3Mp
Ci0gICAgewotICAgICAgICBEYXRhTGFiZWxQdHIgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChp
bml0aWFsVmFsdWUsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBzdG9yZTMyKGRhdGFUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MpOwotICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwotICAgIH0KLQot
ICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChJbXBsaWNpdEFkZHJlc3MgYWRkcmVz
cykKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBhZGRyZXNzKTsKLSAgICB9Ci0KLSAgICAvLyBGbG9hdGluZyBwb2ludCBvcGVy
YXRvcnMKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHNfaXNWRlBQcmVzZW50OwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRTcXJ0KCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBzX2lzVkZQUHJlc2VudDsKLSAgICB9Ci0gICAgc3RhdGlj
IGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50QWJzKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0KLQotICAgIHZvaWQgbG9hZEZsb2F0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBGUFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlckZs
b2F0KEFSTUFzc2VtYmxlcjo6TG9hZEZsb2F0LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
b2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWRGbG9hdChCYXNlSW5kZXggYWRkcmVzcywg
RlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhU
cmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6TG9hZEZsb2F0LCBkZXN0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mu
b2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWREb3VibGUoSW1wbGljaXRBZGRyZXNzIGFk
ZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0
YVRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpMb2FkRG91YmxlLCBkZXN0LCBhZGRyZXNzLmJh
c2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWREb3VibGUoQmFzZUlu
ZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuYmFzZUluZGV4VHJhbnNmZXJGbG9hdChBUk1Bc3NlbWJsZXI6OkxvYWREb3VibGUsIGRlc3Qs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNj
YWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZERvdWJsZShUcnVz
dGVkSW1tUHRyIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbW92
ZShUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzLm1fdmFsdWUp
KSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRvdWJsZUR0clVw
KEFSTUFzc2VtYmxlcjo6TG9hZERvdWJsZSwgZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgMCk7
Ci0gICAgfQotCi0gICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGNlaWxEb3VibGUoRlBS
ZWdpc3RlcklELCBGUFJlZ2lzdGVySUQpCi0gICAgewotICAgICAgICBBU1NFUlQoIXN1cHBvcnRz
RmxvYXRpbmdQb2ludFJvdW5kaW5nKCkpOwotICAgICAgICBDUkFTSCgpOwotICAgIH0KLQotICAg
IE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBmbG9vckRvdWJsZShGUFJlZ2lzdGVySUQsIEZQ
UmVnaXN0ZXJJRCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghc3VwcG9ydHNGbG9hdGluZ1BvaW50
Um91bmRpbmcoKSk7Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgfQotCi0gICAgTk9fUkVUVVJOX0RV
RV9UT19DUkFTSCB2b2lkIHJvdW5kVG93YXJkWmVyb0RvdWJsZShGUFJlZ2lzdGVySUQsIEZQUmVn
aXN0ZXJJRCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghc3VwcG9ydHNGbG9hdGluZ1BvaW50Um91
bmRpbmcoKSk7Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZUZsb2F0
KEZQUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpTdG9yZUZsb2F0
LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQg
c3RvcmVGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKLSAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpT
dG9yZUZsb2F0LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8
aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQg
c3RvcmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCi0g
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXJGbG9hdChBUk1Bc3NlbWJsZXI6
OlN0b3JlRG91YmxlLCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0K
LQotICAgIHZvaWQgc3RvcmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJl
c3MpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFS
TUFzc2VtYmxlcjo6U3RvcmVEb3VibGUsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4
LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAg
fQotCi0gICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tUHRy
IGFkZHJlc3MpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWludGVycHJldF9j
YXN0PEFSTVdvcmQ+KGFkZHJlc3MubV92YWx1ZSkpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpTdG9yZURv
dWJsZSwgc3JjLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCAwKTsKLSAgICB9Ci0KLSAgICB2b2lkIG1v
dmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBpZiAoc3JjICE9IGRlc3QpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci52bW92X2Y2NChk
ZXN0LCBzcmMpOwotICAgIH0KLQotICAgIHZvaWQgbW92ZVplcm9Ub0RvdWJsZShGUFJlZ2lzdGVy
SUQgcmVnKQotICAgIHsKLSAgICAgICAgc3RhdGljIGRvdWJsZSB6ZXJvQ29uc3RhbnQgPSAwLjsK
LSAgICAgICAgbG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZ6ZXJvQ29uc3RhbnQpLCByZWcpOwot
ICAgIH0KLQotICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmFkZF9mNjQoZGVzdCwgZGVzdCwg
c3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJl
Z2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLnZhZGRfZjY0KGRlc3QsIG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZERvdWJs
ZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkRG91
YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICBhZGREb3VibGUoZnBUZW1wUmVnaXN0
ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgYWRkRG91YmxlKEFic29sdXRlQWRkcmVzcyBh
ZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWREb3VibGUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICBhZGRE
b3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgZGl2RG91Ymxl
KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIudmRpdl9mNjQoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRp
dkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZkaXZfZjY0KGRlc3QsIG9wMSwgb3Ay
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpdkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklE
IGRlc3QpCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBV
bnRlc3RlZAotICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICBkaXZEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgc3Vi
RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIudnN1Yl9mNjQoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZzdWJfZjY0KGRlc3QsIG9w
MSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0
ZXIpOwotICAgICAgICBzdWJEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQot
ICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQot
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm11bF9mNjQoZGVzdCwgZGVzdCwgc3JjKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIG11bERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3Qp
Ci0gICAgewotICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICBtdWxEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgbXVs
RG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm11bF9mNjQoZGVzdCwgb3AxLCBvcDIp
OwotICAgIH0KLQotICAgIHZvaWQgc3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZzcXJ0X2Y2NChkZXN0LCBz
cmMpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFic0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBG
UFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZhYnNfZjY0KGRl
c3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBuZWdhdGVEb3VibGUoRlBSZWdpc3RlcklEIHNy
YywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci52bmVnX2Y2
NChkZXN0LCBzcmMpOwotICAgIH0KLQotICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoUmVn
aXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJs
ZXIudm1vdl92ZnAzMihkZXN0IDw8IDEsIHNyYyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZjdnRf
ZjY0X3MzMihkZXN0LCBkZXN0IDw8IDEpOwotICAgIH0KLQotICAgIHZvaWQgY29udmVydEludDMy
VG9Eb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAg
bG9hZDMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnZlcnRJbnQzMlRvRG91
YmxlKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgY29udmVydElu
dDMyVG9Eb3VibGUoQWJzb2x1dGVBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAg
ewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgZGF0YVRlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoZGF0YVRlbXBSZWdpc3Rlciwg
ZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBjb252ZXJ0RmxvYXRUb0RvdWJsZShGUFJlZ2lzdGVy
SUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmN2
dF9mNjRfZjMyKGRzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbnZlcnREb3VibGVUb0Zs
b2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICBt
X2Fzc2VtYmxlci52Y3Z0X2YzMl9mNjQoZHN0LCBzcmMpOwotICAgIH0KLQotICAgIEp1bXAgYnJh
bmNoRG91YmxlKERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVmdCwgRlBSZWdp
c3RlcklEIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmNtcF9mNjQobGVmdCwg
cmlnaHQpOwotICAgICAgICBtX2Fzc2VtYmxlci52bXJzX2Fwc3IoKTsKLSAgICAgICAgaWYgKGNv
bmQgJiBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFsKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
Y21wKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIEFSTUFzc2VtYmxl
cjo6VlMpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoc3RhdGljX2Nhc3Q8
QVJNQXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQgJiB+RG91YmxlQ29uZGl0aW9uTWFzaykpKTsK
LSAgICB9Ci0KLSAgICAvLyBUcnVuY2F0ZXMgJ3NyYycgdG8gYW4gaW50ZWdlciwgYW5kIHBsYWNl
cyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KLSAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5vdCByZXBy
ZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCi0gICAgLy8gTWF5IGFsc28gYnJh
bmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJpdHMKLSAg
ICAvLyAoc3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIElOVF9NSU4pLgotICAgIGVudW0gQnJh
bmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCwgQnJhbmNoSWZUcnVuY2F0
ZVN1Y2Nlc3NmdWwgfTsKLSAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hU
eXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKLSAgICB7Ci0gICAgICAgIHRydW5jYXRlRG91
YmxlVG9JbnQzMihzcmMsIGRlc3QpOwotCi0gICAgICAgIG1fYXNzZW1ibGVyLmFkZChhZGRyZXNz
VGVtcFJlZ2lzdGVyLCBkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkpOwotICAgICAg
ICBtX2Fzc2VtYmxlci5iaWMoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rl
ciwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsKLQotICAgICAgICBBUk1Xb3JkIHcgPSBB
Uk1Bc3NlbWJsZXI6OmdldE9wMigweDgwMDAwMDAwKTsKLSAgICAgICAgQVNTRVJUKHcgIT0gQVJN
QXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wKGFk
ZHJlc3NUZW1wUmVnaXN0ZXIsIHcpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5q
bXAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkID8gQVJNQXNzZW1ibGVyOjpF
USA6IEFSTUFzc2VtYmxlcjo6TkUpKTsKLSAgICB9Ci0KLSAgICAvLyBSZXN1bHQgaXMgdW5kZWZp
bmVkIGlmIHRoZSB2YWx1ZSBpcyBvdXRzaWRlIG9mIHRoZSBpbnRlZ2VyIHJhbmdlLgotICAgIHZv
aWQgdHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfczMyX2Y2NChmcFRlbXBSZWdpc3Rl
ciA8PCAxLCBzcmMpOwotICAgICAgICBtX2Fzc2VtYmxlci52bW92X2FybTMyKGRlc3QsIGZwVGVt
cFJlZ2lzdGVyIDw8IDEpOwotICAgIH0KLQotICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQz
MihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fz
c2VtYmxlci52Y3Z0X3UzMl9mNjQoZnBUZW1wUmVnaXN0ZXIgPDwgMSwgc3JjKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIudm1vdl9hcm0zMihkZXN0LCBmcFRlbXBSZWdpc3RlciA8PCAxKTsKLSAgICB9
Ci0KLSAgICAvLyBDb252ZXJ0ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJl
c3VsdGluZyAnZGVzdCcuCi0gICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJs
ZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgotICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Ig
c29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCi0gICAgLy8gKHNw
ZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCAwKS4KLSAgICB2b2lkIGJyYW5jaENvbnZlcnREb3Vi
bGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZh
aWx1cmVDYXNlcywgRlBSZWdpc3RlcklELCBib29sIG5lZ1plcm9DaGVjayA9IHRydWUpCi0gICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3MzMl9mNjQoZnBUZW1wUmVnaXN0ZXIgPDwgMSwg
c3JjKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMihkZXN0LCBmcFRlbXBSZWdpc3Rl
ciA8PCAxKTsKLQotICAgICAgICAvLyBDb252ZXJ0IHRoZSBpbnRlZ2VyIHJlc3VsdCBiYWNrIHRv
IGZsb2F0ICYgY29tcGFyZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUgLSBpZiBub3QgZXF1YWwgb3Ig
dW5vcmRlcmVkIChOYU4pIHRoZW4ganVtcC4KLSAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9mNjRf
czMyKGZwVGVtcFJlZ2lzdGVyLCBmcFRlbXBSZWdpc3RlciA8PCAxKTsKLSAgICAgICAgZmFpbHVy
ZUNhc2VzLmFwcGVuZChicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWxPclVub3JkZXJlZCwgc3Jj
LCBmcFRlbXBSZWdpc3RlcikpOwotCi0gICAgICAgIC8vIElmIHRoZSByZXN1bHQgaXMgemVybywg
aXQgbWlnaHQgaGF2ZSBiZWVuIC0wLjAsIGFuZCAwLjAgZXF1YWxzIHRvIC0wLjAKLSAgICAgICAg
aWYgKG5lZ1plcm9DaGVjaykKLSAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNo
VGVzdDMyKFplcm8sIGRlc3QpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaERvdWJsZU5vblpl
cm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCi0gICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5tb3YoYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpnZXRP
cDJCeXRlKDApKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoYWRkcmVzc1RlbXBSZWdp
c3Rlciwgc2NyYXRjaCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlTm90RXF1
YWwsIHJlZywgc2NyYXRjaCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hEb3VibGVaZXJvT3JO
YU4oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCi0gICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5tb3YoYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpnZXRP
cDJCeXRlKDApKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoYWRkcmVzc1RlbXBSZWdp
c3Rlciwgc2NyYXRjaCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlRXF1YWxP
clVub3JkZXJlZCwgcmVnLCBzY3JhdGNoKTsKLSAgICB9Ci0KLSAgICAvLyBJbnZlcnQgYSByZWxh
dGlvbmFsIGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4K
LSAgICBzdGF0aWMgUmVsYXRpb25hbENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kKQotICAgIHsKLSAgICAgICAgQVNTRVJUKChzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29u
ZCAmIDB4MGZmZmZmZmYpKSA9PSAwICYmIHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb25kKSA8IHN0
YXRpY19jYXN0PHVpbnQzMl90PihBUk1Bc3NlbWJsZXI6OkFMKSk7Ci0gICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxSZWxhdGlvbmFsQ29uZGl0aW9uPihjb25kIF4gMHgxMDAwMDAwMCk7Ci0gICAg
fQotCi0gICAgdm9pZCBub3AoKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBtZW1vcnlGZW5jZSgpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5kbWJTWSgpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVGZW5jZSgpCi0gICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5kbWJJU0hTVCgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPFB0clRhZyBy
ZXN1bHRUYWcsIFB0clRhZyBsb2NhdGlvblRhZz4KLSAgICBzdGF0aWMgRnVuY3Rpb25QdHI8cmVz
dWx0VGFnPiByZWFkQ2FsbFRhcmdldChDb2RlTG9jYXRpb25DYWxsPGxvY2F0aW9uVGFnPiBjYWxs
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyPHJlc3VsdFRhZz4ocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRh
TG9jYXRpb24oKSkpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgc3RhcnRUYWcsIFB0
clRhZyBkZXN0VGFnPgotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRp
b25MYWJlbDxzdGFydFRhZz4gaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWw8ZGVz
dFRhZz4gZGVzdGluYXRpb24pCi0gICAgewotICAgICAgICBBUk1Bc3NlbWJsZXI6OnJlcGxhY2VX
aXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5kYXRh
TG9jYXRpb24oKSk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gQVJNQXNzZW1ibGVyOjptYXhK
dW1wUmVwbGFjZW1lbnRTaXplKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHB0cmRpZmZfdCBwYXRj
aGFibGVKdW1wU2l6ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gQVJNQXNzZW1ibGVyOjpwYXRj
aGFibGVKdW1wU2l6ZSgpOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNl
UGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0
aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1
cm4gZmFsc2U7IH0KLQotICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+Ci0gICAgc3RhdGljIENvZGVM
b2NhdGlvbkxhYmVsPHRhZz4gc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRy
ZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyPHRhZz4pCi0gICAgewotICAgICAgICBVTlJFQUNI
QUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsPHRh
Zz4oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRpYyBDb2Rl
TG9jYXRpb25MYWJlbDx0YWc+IHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFk
ZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPHRhZz4pCi0gICAgewotICAgICAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVs
PHRhZz4oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRpYyBD
b2RlTG9jYXRpb25MYWJlbDx0YWc+IHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVy
KENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjx0YWc+IGxhYmVsKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGxhYmVsLmxhYmVsQXRPZmZzZXQoMCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8UHRyVGFn
IHRhZz4KLSAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldp
dGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbDx0YWc+IGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVy
SUQgcmVnLCB2b2lkKiBpbml0aWFsVmFsdWUpCi0gICAgewotICAgICAgICBBUk1Bc3NlbWJsZXI6
OnJldmVydEJyYW5jaFB0cldpdGhQYXRjaChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigp
LCByZWcsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihpbml0aWFsVmFsdWUpICYgMHhmZmZm
KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRpYyB2b2lkIHJl
dmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0
aW9uTGFiZWw8dGFnPiwgQWRkcmVzcywgaW50MzJfdCkKLSAgICB7Ci0gICAgICAgIFVOUkVBQ0hB
QkxFX0ZPUl9QTEFURk9STSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+Ci0g
ICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJX
aXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWw8dGFnPiwgQWRkcmVzcywgdm9pZCopCi0gICAgewot
ICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0
ZTxQdHJUYWcgY2FsbFRhZywgUHRyVGFnIGRlc3RUYWc+Ci0gICAgc3RhdGljIHZvaWQgcmVwYXRj
aENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxjYWxsVGFnPiBjYWxsLCBDb2RlTG9jYXRpb25MYWJlbDxk
ZXN0VGFnPiBkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAgICAgIEFSTUFzc2VtYmxlcjo6cmVsaW5r
Q2FsbChjYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygp
KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgY2FsbFRhZywgUHRyVGFnIGRlc3RUYWc+
Ci0gICAgc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxjYWxsVGFnPiBj
YWxsLCBGdW5jdGlvblB0cjxkZXN0VGFnPiBkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAgICAgIEFS
TUFzc2VtYmxlcjo6cmVsaW5rQ2FsbChjYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5l
eGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBBUk1Bc3NlbWJs
ZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFSTUFzc2VtYmxlcjo6Q29uZGl0aW9uPihj
b25kKTsKLSAgICB9Ci0KLSAgICBBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24o
UmVzdWx0Q29uZGl0aW9uIGNvbmQpCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
QVJNQXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOwotICAgIH0KLQotICAgIHZvaWQgZW5zdXJl
U3BhY2UoaW50IGluc25TcGFjZSwgaW50IGNvbnN0U3BhY2UpCi0gICAgewotICAgICAgICBtX2Fz
c2VtYmxlci5lbnN1cmVTcGFjZShpbnNuU3BhY2UsIGNvbnN0U3BhY2UpOwotICAgIH0KLQotICAg
IGludCBzaXplT2ZDb25zdGFudFBvb2woKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXNzZW1i
bGVyLnNpemVPZkNvbnN0YW50UG9vbCgpOwotICAgIH0KLQotICAgIHZvaWQgY2FsbDMyKFJlZ2lz
dGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpCi0gICAgewotICAgICAgICBsb2FkMzIoQWRkcmVz
cyhiYXNlLCBvZmZzZXQpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
Ymx4KGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xh
c3MgTGlua0J1ZmZlcjsKLQotICAgIHZvaWQgaW50ZXJuYWxDb21wYXJlMzIoUmVnaXN0ZXJJRCBs
ZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewotICAgICAgICBBUk1Xb3JkIHRtcCA9ICgh
cmlnaHQubV92YWx1ZSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmlnaHQubV92YWx1ZSkgPT0g
MHg4MDAwMDAwMCkgPyBBUk1Bc3NlbWJsZXI6OkludmFsaWRJbW1lZGlhdGUgOiBtX2Fzc2VtYmxl
ci5nZXRPcDIoLXJpZ2h0Lm1fdmFsdWUpOwotICAgICAgICBpZiAodG1wICE9IEFSTUFzc2VtYmxl
cjo6SW52YWxpZEltbWVkaWF0ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtbihsZWZ0LCB0
bXApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXAobGVmdCwgbV9h
c3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGludGVybmFsQ29tcGFyZTMyKEFkZHJlc3MgbGVmdCwgVHJ1c3RlZElt
bTMyIHJpZ2h0KQotICAgIHsKLSAgICAgICAgQVJNV29yZCB0bXAgPSAoIXJpZ2h0Lm1fdmFsdWUg
fHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJpZ2h0Lm1fdmFsdWUpID09IDB4ODAwMDAwMDApID8g
QVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlIDogbV9hc3NlbWJsZXIuZ2V0T3AyKC1yaWdo
dC5tX3ZhbHVlKTsKLSAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICBpZiAodG1wICE9IEFSTUFzc2VtYmxlcjo6SW52YWxpZEltbWVkaWF0ZSkKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtbihkYXRhVGVtcFJlZ2lzdGVyLCB0bXApOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXAoZGF0YVRlbXBSZWdpc3RlciwgbV9hc3NlbWJs
ZXIuZ2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0K
LSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRpYyB2b2lkIGxpbmtDYWxsKHZvaWQq
IGNvZGUsIENhbGwgY2FsbCwgRnVuY3Rpb25QdHI8dGFnPiBmdW5jdGlvbikKLSAgICB7Ci0gICAg
ICAgIGlmIChjYWxsLmlzRmxhZ1NldChDYWxsOjpUYWlsKSkKLSAgICAgICAgICAgIEFSTUFzc2Vt
Ymxlcjo6bGlua0p1bXAoY29kZSwgY2FsbC5tX2xhYmVsLCBmdW5jdGlvbi5leGVjdXRhYmxlQWRk
cmVzcygpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQVJNQXNzZW1ibGVyOjpsaW5rQ2Fs
bChjb2RlLCBjYWxsLm1fbGFiZWwsIGZ1bmN0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwotICAg
IH0KLQotICAgIHN0YXRpYyBjb25zdCBib29sIHNfaXNWRlBQcmVzZW50OwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RS
QURJVElPTkFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Q
cm9iZUNvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250
ZXh0LmgKaW5kZXggNGVlNmVlYThlNzNiOTEyYmFlNmFkZTAwYzliYjhiM2Q4MmE4MTIwYy4uN2Y1
MTkxZDUwYmZlMTRmNzVkYmIwNWQ4MmZiZDlmYjE4YTgwZjhjNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oCkBAIC0xMTIsNyArMTEyLDcgQEAg
aW5saW5lIHZvaWQqJiBDUFVTdGF0ZTo6cGMoKQogICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KCZzcHIoWDg2UmVnaXN0ZXJzOjplaXApKTsKICNlbGlmIENQVShBUk02NCkKICAg
ICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmc3ByKEFSTTY0UmVnaXN0ZXJzOjpw
YykpOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCisjZWxp
ZiBDUFUoQVJNX1RIVU1CMikKICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigm
Z3ByKEFSTVJlZ2lzdGVyczo6cGMpKTsKICNlbGlmIENQVShNSVBTKQogICAgIHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZzcHIoTUlQU1JlZ2lzdGVyczo6cGMpKTsKQEAgLTEyNyw3
ICsxMjcsNyBAQCBpbmxpbmUgdm9pZComIENQVVN0YXRlOjpmcCgpCiAgICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihYODZSZWdpc3RlcnM6OmVicCkpOwogI2VsaWYgQ1BV
KEFSTTY0KQogICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNNjRS
ZWdpc3RlcnM6OmZwKSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJ
T05BTCkKKyNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KCZncHIoQVJNUmVnaXN0ZXJzOjpmcCkpOwogI2VsaWYgQ1BVKE1JUFMpCiAgICAg
cmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihNSVBTUmVnaXN0ZXJzOjpmcCkp
OwpAQCAtMTQyLDcgKzE0Miw3IEBAIGlubGluZSB2b2lkKiYgQ1BVU3RhdGU6OnNwKCkKICAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKFg4NlJlZ2lzdGVyczo6ZXNwKSk7
CiAjZWxpZiBDUFUoQVJNNjQpCiAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4o
JmdwcihBUk02NFJlZ2lzdGVyczo6c3ApKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUo
QVJNX1RSQURJVElPTkFMKQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihBUk1SZWdpc3RlcnM6OnNwKSk7CiAjZWxpZiBDUFUo
TUlQUykKICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKE1JUFNSZWdp
c3RlcnM6OnNwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20u
Y3BwCmluZGV4IDFkNzdkODA4YmMwYTFmMDljMWJlMTI4MDBjOTQxOWFhNzFhNmFlYmQuLjNlNzU1
NzRiMjFkMGUwZDcyZmU4Yzg3YTY1ZDU2NzI4ZTU0ODI0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gVCBuZXh0SUQoVCBpZCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oaWQg
KyAxKTsgfQogI2lmIEVOQUJMRShNQVNNX1BST0JFKQogYm9vbCBpc1BDKE1hY3JvQXNzZW1ibGVy
OjpSZWdpc3RlcklEIGlkKQogewotI2lmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJ
VElPTkFMKQorI2lmIENQVShBUk1fVEhVTUIyKQogICAgIHJldHVybiBpZCA9PSBBUk1SZWdpc3Rl
cnM6OnBjOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaWQpOwpAQCAtNTczLDcgKzU3Myw3IEBA
IHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQ
cm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAg
ICBhdXRvIGZsYWdzU1BSID0gWDg2UmVnaXN0ZXJzOjplZmxhZ3M7CiAgICAgdWludHB0cl90IGZs
YWdzTWFzayA9IDB4YzU7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJ
T05BTCkKKyNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgIGF1dG8gZmxhZ3NTUFIgPSBBUk1SZWdp
c3RlcnM6OmFwc3I7CiAgICAgdWludHB0cl90IGZsYWdzTWFzayA9IDB4ZjgwMDAwMDA7CiAjZWxp
ZiBDUFUoQVJNNjQpCkBAIC03NTMsNyArNzUzLDcgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0
YWNrVmFsdWVzKCkKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAgIE1hY3JvQXNzZW1i
bGVyOjpTUFJlZ2lzdGVySUQgZmxhZ3NTUFIgPSBYODZSZWdpc3RlcnM6OmVmbGFnczsKICAgICB1
aW50cHRyX3QgZmxhZ3NNYXNrID0gMHhjNTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUo
QVJNX1RSQURJVElPTkFMKQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlNQUmVnaXN0ZXJJRCBmbGFnc1NQUiA9IEFSTVJlZ2lzdGVyczo6YXBzcjsKICAgICB1aW50
cHRyX3QgZmxhZ3NNYXNrID0gMHhmODAwMDAwMDsKICNlbGlmIENQVShBUk02NCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQ2Fwc3RvbmVEaXNhc3NlbWJs
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fz
c2VtYmxlci5jcHAKaW5kZXggYTZmZjIyNzEwZjA5OWU4N2QxOWNmY2QyMTU4MDI3YmZiYjVlYWE4
MS4uNjhkZDY0Y2I3ODQ5NTU4ZGYzZDMwMjE0OWUwNmJkMDAyZjdhODQ5OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fz
c2VtYmxlci5jcHAKQEAgLTQ0LDkgKzQ0LDYgQEAgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVQdHIsIHMKICNl
bGlmIENQVShYODZfNjQpCiAgICAgaWYgKGNzX29wZW4oQ1NfQVJDSF9YODYsIENTX01PREVfNjQs
ICZoYW5kbGUpICE9IENTX0VSUl9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VsaWYgQ1BV
KEFSTV9UUkFESVRJT05BTCkKLSAgICBpZiAoY3Nfb3BlbihDU19BUkNIX0FSTSwgQ1NfTU9ERV9B
Uk0sICZoYW5kbGUpICE9IENTX0VSUl9PSykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VsaWYg
Q1BVKEFSTV9USFVNQjIpCiAgICAgaWYgKGNzX29wZW4oQ1NfQVJDSF9BUk0sIENTX01PREVfVEhV
TUIsICZoYW5kbGUpICE9IENTX0VSUl9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKaW5kZXgg
OTVjY2NmYjM0ZDYzMDhmNTllMjAyNzllNzY0MmI3YmI5M2QzNDBkMS4uYTIyYzQwZDExMzMzM2Vi
NTQ0YjllMjc1ZmQ5MjI0MzNhYjA5OWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCkBAIC04NSwxNyArODUsNiBAQCBTWU1CT0xf
U1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCiAgICAgImIgIiBMT0NBTF9S
RUZFUkVOQ0UoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKICk7CiAK
LSNlbGlmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQot
YXNtICgKLSIudGV4dCIgIlxuIgotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxu
IgotSU5MSU5FX0FSTV9GVU5DVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKQotU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJzdWIgcjAsIHNwLCAj
OCIgIlxuIgotICAgICJiICIgTE9DQUxfUkVGRVJFTkNFKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVX
aXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotCiAjZWxpZiBDUFUoQVJNNjQpCiBhc20gKAogIi50ZXh0
IiAiXG4iCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAppbmRleCA2ZTc4NTlkNTI2
ZjAwZGJmZGRlZTFiNjk4NWY4MWQzNjA2MjExOTVlLi5jODg3NmQwZGI4NjI3OTU5NmFkYmZiMjY5
YzJlMTBmZGQ0MjNhZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE1hdGhJQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKQEAg
LTY4LDEzICs2OCw2IEBAIGNsYXNzIEpJVE1hdGhJQyB7CiAKICAgICBib29sIGdlbmVyYXRlSW5s
aW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBib29s
IHNob3VsZEVtaXRQcm9maWxpbmcgPSB0cnVlKQogICAgIHsKLSNpZiBDUFUoQVJNX1RSQURJVElP
TkFMKQotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIHRoZSBw
cm9wZXIgZml4ZXMgYXJlIGxhbmRlZC4KLSAgICAgICAgLy8gW0FSTV0gRGlzYWJsZSBJbmxpbmUg
Q2FjaGluZyBvbiBBUk12NyB0cmFkaXRpb25hbCB1bnRpbCBwcm9wZXIgZml4Ci0gICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk3NTkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KICAgICAgICAgc3RhdGUuZmFzdFBhdGhTdGFydCA9IGpp
dC5sYWJlbCgpOwogICAgICAgICBzaXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1
ZmZlcigpLmNvZGVTaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVnaXN0ZXJTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNl
dC5jcHAKaW5kZXggYTNlZTc0NzM3ZGE3M2JkZTJmNWFkYTcyZmZlM2ZlOWY0MTgxMDY5My4uYzUw
MDlkMjMxMWYwMmQyMzE0Njk2YTNiNjZlNzg3YWUyOWUxYzk0NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVnaXN0ZXJTZXQg
UmVnaXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKQogI2Vsc2UKICAgICByZXR1
cm4gUmVnaXN0ZXJTZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKICNlbmRpZiAvLyBQTEFURk9STShJ
T1NfRkFNSUxZKQotI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwp
CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICByZXR1cm4gUmVnaXN0ZXJTZXQoQVJNUmVnaXN0
ZXJzOjpsciwgQVJNUmVnaXN0ZXJzOjpwYyk7CiAjZWxzZQogICAgIHJldHVybiB7IH07CkBAIC0x
MzcsMTUgKzEzNyw2IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0
ZXJzKCkKICNlbmRpZgogICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyMTApOwogICAgIHJl
c3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyMTEpOwotI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkK
LSAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjQpOwotICAgIHJlc3VsdC5zZXQoQVJNUmVn
aXN0ZXJzOjpyNSk7Ci0gICAgcmVzdWx0LnNldChBUk1SZWdpc3RlcnM6OnI2KTsKLSAgICByZXN1
bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjcpOwotICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpy
OCk7Ci0gICAgcmVzdWx0LnNldChBUk1SZWdpc3RlcnM6OnI5KTsKLSAgICByZXN1bHQuc2V0KEFS
TVJlZ2lzdGVyczo6cjEwKTsKLSAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjExKTsKICNl
bGlmIENQVShBUk02NCkKICAgICAvLyBXZSBkb24ndCBpbmNsdWRlIExSIGluIHRoZSBzZXQgb2Yg
Y2FsbGVlLXNhdmUgcmVnaXN0ZXJzIGV2ZW4gdGhvdWdoIGl0IHRlY2huaWNhbGx5IGJlbG9uZ3MK
ICAgICAvLyB0aGVyZS4gVGhpcyBpcyBiZWNhdXNlIHdlIHVzZSB0aGlzIHNldCB0byBkZXNjcmli
ZSB0aGUgc2V0IG9mIHJlZ2lzdGVycyB0aGF0IG5lZWQgdG8gYmUgc2F2ZWQKQEAgLTIzNyw3ICsy
MjgsNiBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVS
ZWdpc3RlcnMoKQogI2VuZGlmCiAjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTMCk7Ci0jZWxpZiBDUFUoQVJNX1RSQURJVElPTkFMKQogI2VsaWYgQ1BV
KEFSTTY0KQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKICAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTNyk7CkBAIC0yNzQsNyArMjY0LDYgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1M2KTsKICNlbmRpZgogI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi0jZWxpZiBDUFUoQVJNX1RS
QURJVElPTkFMKQogI2VsaWYgQ1BVKEFSTTY0KQogICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzgg
PT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICBBU1NFUlQoR1BSSW5mbzo6
cmVnQ1M5ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAppbmRleCA2Njg2ZGYwMTE3YjBlNWZkN2RiMWUwMDg2MDY5YjEzYjc2YTRl
Yzg1Li43MzExYTZkNTYzMzg5NWQxMjZjYTE0NDYzYzcxM2RkY2E3MDRhMmIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEzMCwxNCArMTMwLDcgQEAgc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIGFjdGlvbkZvckNlbGwoVk0mIHZtLCBKU0NlbGwqIGNlbGwpCiAKIHN0
YXRpYyBib29sIGZvcmNlSUNGYWlsdXJlKEV4ZWNTdGF0ZSopCiB7Ci0jaWYgQ1BVKEFSTV9UUkFE
SVRJT05BTCkKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIHRoZSBw
cm9wZXIgZml4ZXMgYXJlIGxhbmRlZC4KLSAgICAvLyBbQVJNXSBEaXNhYmxlIElubGluZSBDYWNo
aW5nIG9uIEFSTXY3IHRyYWRpdGlvbmFsIHVudGlsIHByb3BlciBmaXgKLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NzU5Ci0gICAgcmV0dXJuIHRydWU7
Ci0jZWxzZQogICAgIHJldHVybiBPcHRpb25zOjpmb3JjZUlDRmFpbHVyZSgpOwotI2VuZGlmCiB9
CiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHVi
SWZOZWVkZWQoVk0mIHZtLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVCbG9jayog
Y29kZUJsb2NrLCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0JiByZXN1bHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggNmI5
Yjc5ODc2ZWNlYTY1NmM0MmE2NTk1NjRlYTU0ODA4MjcwMDNkZS4uMjg0ODVhOTVjMGE0NDU0MmZi
NGVjZjRlNDlhNTIwMzc0ZDc1ZWIxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaApAQCAtMzQsOSArMzQsNyBAQAogI2RlZmlu
ZSBPRkZMSU5FX0FTTV9DX0xPT1AgMQogI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMAogI2RlZmlu
ZSBPRkZMSU5FX0FTTV9YODZfV0lOIDAKLSNkZWZpbmUgT0ZGTElORV9BU01fQVJNIDAKICNkZWZp
bmUgT0ZGTElORV9BU01fQVJNdjcgMAotI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12N19UUkFESVRJ
T05BTCAwCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTTY0IDAKICNkZWZpbmUgT0ZGTElORV9BU01f
QVJNNjRFIDAKICNkZWZpbmUgT0ZGTElORV9BU01fWDg2XzY0IDAKQEAgLTc5LDE5ICs3Nyw2IEBA
CiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKICNlbmRpZgogCi0jaWYgQ1BVKEFSTV9UUkFE
SVRJT05BTCkKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNykKLSNkZWZpbmUgT0ZGTElORV9B
U01fQVJNdjdfVFJBRElUSU9OQUwgMQotI2RlZmluZSBPRkZMSU5FX0FTTV9BUk0gMAotI2Vsc2UK
LSNkZWZpbmUgT0ZGTElORV9BU01fQVJNIDEKLSNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjdfVFJB
RElUSU9OQUwgMAotI2VuZGlmCi0jZWxzZQotI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12N19UUkFE
SVRJT05BTCAwCi0jZGVmaW5lIE9GRkxJTkVfQVNNX0FSTSAwCi0jZW5kaWYKLQogI2lmIENQVShY
ODZfNjQpICYmICFDT01QSUxFUihNU1ZDKQogI2RlZmluZSBPRkZMSU5FX0FTTV9YODZfNjQgMQog
I2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQppbmRleCA0MTZmM2JhNzNhOGU0YWY2MGNhZmUxMGYxMmNhZmUzZDZmMmYyMmUx
Li40M2Q1ZjczZDA2OGY5Zjc1MmJmY2M1OTUyMTNkOTkyNDM5Yzk3NmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC03
MSwxMSArNzEsMTAgQEAKICMgIFRoZXkgYXJlIGNhbGxlZS1zYXZlIHJlZ2lzdGVycywgYW5kIGd1
YXJhbnRlZWQgdG8gYmUgZGlzdGluY3QgZnJvbSBhbGwgb3RoZXIKICMgIHJlZ2lzdGVycyBvbiBh
bGwgYXJjaGl0ZWN0dXJlcy4KICMKLSMgIC0gbHIgaXMgZGVmaW5lZCBvbiBub24tWDg2IGFyY2hp
dGVjdHVyZXMgKEFSTTY0LCBBUk02NEUsIEFSTXY3LCBBUk0sCi0jICBBUk12N19UUkFESVRJT05B
TCwgTUlQUyBhbmQgQ0xPT1ApIGFuZCBob2xkcyB0aGUgcmV0dXJuIFBDCisjICAtIGxyIGlzIGRl
ZmluZWQgb24gbm9uLVg4NiBhcmNoaXRlY3R1cmVzIChBUk02NCwgQVJNNjRFLCBBUk12NywgTUlQ
UyBhbmQgQ0xPT1ApCisjICBhbmQgaG9sZHMgdGhlIHJldHVybiBQQwogIwotIyAgLSBwYyBob2xk
cyB0aGUgKG5hdGl2ZSkgcHJvZ3JhbSBjb3VudGVyIG9uIDMyLWJpdHMgQVJNIGFyY2hpdGVjdHVy
ZXMgKEFSTSwKLSMgIEFSTXY3LCBBUk12N19UUkFESVRJT05BTCkKKyMgIC0gcGMgaG9sZHMgdGhl
IChuYXRpdmUpIHByb2dyYW0gY291bnRlciBvbiAzMi1iaXRzIEFSTSBhcmNoaXRlY3R1cmVzIChB
Uk12NykKICMKICMgIC0gdDAsIHQxLCB0MiwgdDMsIHQ0IGFuZCBvcHRpb25hbGx5IHQ1IGFyZSB0
ZW1wb3JhcnkgcmVnaXN0ZXJzIHRoYXQgY2FuIGdldCB0cmFzaGVkIG9uCiAjICBjYWxscywgYW5k
IGFyZSBwYWlyd2lzZSBkaXN0aW5jdCByZWdpc3RlcnMuIHQ0IGhvbGRzIHRoZSBKUyBwcm9ncmFt
IGNvdW50ZXIsIHNvIHVzZQpAQCAtNjA4LDcgKzYwNyw3IEBAIG1hY3JvIGNoZWNrU3RhY2tQb2lu
dGVyQWxpZ25tZW50KHRlbXBSZWcsIGxvY2F0aW9uKQogICAgICAgICAgICAgIyBDX0xPT1AgZG9l
cyBub3QgbmVlZCB0aGUgYWxpZ25tZW50LCBhbmQgY2FuIHVzZSBhIGxpdHRsZSBwZXJmCiAgICAg
ICAgICAgICAjIGltcHJvdmVtZW50IGZyb20gYXZvaWRpbmcgdXNlbGVzcyB3b3JrLgogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwK
KyAgICAgICAgICAgIGlmIEFSTXY3CiAgICAgICAgICAgICAgICAgIyBBUk0gY2FuJ3QgZG8gbG9n
aWNhbCBvcHMgd2l0aCB0aGUgc3AgYXMgYSBzb3VyY2UKICAgICAgICAgICAgICAgICBtb3ZlIHNw
LCB0ZW1wUmVnCiAgICAgICAgICAgICAgICAgYW5kcCBTdGFja0FsaWdubWVudE1hc2ssIHRlbXBS
ZWcKQEAgLTYyNSw3ICs2MjQsNyBAQCBlbmQKIAogaWYgQ19MT09QIG9yIEFSTTY0IG9yIEFSTTY0
RSBvciBYODZfNjQgb3IgWDg2XzY0X1dJTgogICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNv
dW50ID0gMAotZWxzaWYgQVJNIG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIEFSTXY3CitlbHNpZiBB
Uk12NwogICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50ID0gNwogZWxzaWYgTUlQUwog
ICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50ID0gMQpAQCAtNjQxLDggKzY0MCw2IEBA
IGNvbnN0IFZNRW50cnlUb3RhbEZyYW1lU2l6ZSA9IChDYWxsZWVSZWdpc3RlclNhdmVTaXplICsg
c2l6ZW9mIFZNRW50cnlSZWNvcmQgKyBTCiAKIG1hY3JvIHB1c2hDYWxsZWVTYXZlcygpCiAgICAg
aWYgQ19MT09QIG9yIEFSTTY0IG9yIEFSTTY0RSBvciBYODZfNjQgb3IgWDg2XzY0X1dJTgotICAg
IGVsc2lmIEFSTSBvciBBUk12N19UUkFESVRJT05BTAotICAgICAgICBlbWl0ICJwdXNoIHtyNC1y
MTB9IgogICAgIGVsc2lmIEFSTXY3CiAgICAgICAgIGVtaXQgInB1c2gge3I0LXI2LCByOC1yMTF9
IgogICAgIGVsc2lmIE1JUFMKQEAgLTY2Myw4ICs2NjAsNiBAQCBlbmQKIAogbWFjcm8gcG9wQ2Fs
bGVlU2F2ZXMoKQogICAgIGlmIENfTE9PUCBvciBBUk02NCBvciBBUk02NEUgb3IgWDg2XzY0IG9y
IFg4Nl82NF9XSU4KLSAgICBlbHNpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwKLSAgICAgICAg
ZW1pdCAicG9wIHtyNC1yMTB9IgogICAgIGVsc2lmIEFSTXY3CiAgICAgICAgIGVtaXQgInBvcCB7
cjQtcjYsIHI4LXIxMX0iCiAgICAgZWxzaWYgTUlQUwpAQCAtNjgyLDcgKzY3Nyw3IEBAIG1hY3Jv
IHBvcENhbGxlZVNhdmVzKCkKIGVuZAogCiBtYWNybyBwcmVzZXJ2ZUNhbGxlclBDQW5kQ0ZSKCkK
LSAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIE1J
UFMKKyAgICBpZiBDX0xPT1Agb3IgQVJNdjcgb3IgTUlQUwogICAgICAgICBwdXNoIGxyCiAgICAg
ICAgIHB1c2ggY2ZyCiAgICAgZWxzaWYgWDg2IG9yIFg4Nl9XSU4gb3IgWDg2XzY0IG9yIFg4Nl82
NF9XSU4KQEAgLTY5Nyw3ICs2OTIsNyBAQCBlbmQKIAogbWFjcm8gcmVzdG9yZUNhbGxlclBDQW5k
Q0ZSKCkKICAgICBtb3ZlIGNmciwgc3AKLSAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9y
IEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMKKyAgICBpZiBDX0xPT1Agb3IgQVJNdjcgb3IgTUlQ
UwogICAgICAgICBwb3AgY2ZyCiAgICAgICAgIHBvcCBscgogICAgIGVsc2lmIFg4NiBvciBYODZf
V0lOIG9yIFg4Nl82NCBvciBYODZfNjRfV0lOCkBAIC03MTEsNyArNzA2LDYgQEAgbWFjcm8gcHJl
c2VydmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKICAgICBzdWJwIENhbGxlZVNhdmVTcGFjZVN0
YWNrQWxpZ25lZCwgc3AKICAgICBpZiBDX0xPT1AKICAgICAgICAgc3RvcmVwIG1ldGFkYXRhVGFi
bGUsIC1QdHJTaXplW2Nmcl0KLSAgICBlbHNpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwKICAg
ICBlbHNpZiBBUk12NwogICAgICAgICBzdG9yZXAgbWV0YWRhdGFUYWJsZSwgLTRbY2ZyXQogICAg
IGVsc2lmIEFSTTY0IG9yIEFSTTY0RQpAQCAtNzM2LDcgKzczMCw2IEBAIGVuZAogbWFjcm8gcmVz
dG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogICAgIGlmIENfTE9PUAogICAgICAgICBsb2Fk
cCAtUHRyU2l6ZVtjZnJdLCBtZXRhZGF0YVRhYmxlCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3X1RS
QURJVElPTkFMCiAgICAgZWxzaWYgQVJNdjcKICAgICAgICAgbG9hZHAgLTRbY2ZyXSwgbWV0YWRh
dGFUYWJsZQogICAgIGVsc2lmIEFSTTY0IG9yIEFSTTY0RQpAQCAtODQzLDcgKzgzNiw3IEBAIG1h
Y3JvIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2
bSwgdGVtcCkKIGVuZAogCiBtYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVz
dGluYXRpb25SZWdpc3RlcikKLSAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3
X1RSQURJVElPTkFMIG9yIEFSTTY0IG9yIEFSTTY0RSBvciBNSVBTCisgICAgaWYgQ19MT09QIG9y
IEFSTXY3IG9yIEFSTTY0IG9yIEFSTTY0RSBvciBNSVBTCiAgICAgICAgICMgSW4gQ19MT09QIGNh
c2UsIHdlJ3JlIG9ubHkgcHJlc2VydmluZyB0aGUgYnl0ZWNvZGUgdlBDLgogICAgICAgICBtb3Zl
IGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCiAgICAgZWxzaWYgWDg2IG9yIFg4Nl9XSU4gb3IgWDg2
XzY0IG9yIFg4Nl82NF9XSU4KQEAgLTg2Niw3ICs4NTksNyBAQCBtYWNybyBmdW5jdGlvblByb2xv
Z3VlKCkKICAgICAgICAgcHVzaCBjZnIKICAgICBlbHNpZiBBUk02NCBvciBBUk02NEUKICAgICAg
ICAgcHVzaCBjZnIsIGxyCi0gICAgZWxzaWYgQ19MT09QIG9yIEFSTSBvciBBUk12NyBvciBBUk12
N19UUkFESVRJT05BTCBvciBNSVBTCisgICAgZWxzaWYgQ19MT09QIG9yIEFSTXY3IG9yIE1JUFMK
ICAgICAgICAgcHVzaCBscgogICAgICAgICBwdXNoIGNmcgogICAgIGVuZApAQCAtODc4LDcgKzg3
MSw3IEBAIG1hY3JvIGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgICAgICBwb3AgY2ZyCiAgICAgZWxz
aWYgQVJNNjQgb3IgQVJNNjRFCiAgICAgICAgIHBvcCBsciwgY2ZyCi0gICAgZWxzaWYgQ19MT09Q
IG9yIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBNSVBTCisgICAgZWxzaWYg
Q19MT09QIG9yIEFSTXY3IG9yIE1JUFMKICAgICAgICAgcG9wIGNmcgogICAgICAgICBwb3AgbHIK
ICAgICBlbmQKQEAgLTk1MCw3ICs5NDMsNyBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2Fs
bGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQogICAgIGFkZGkgU3RhY2tBbGln
bm1lbnQgLSAxICsgQ2FsbEZyYW1lSGVhZGVyU2l6ZSwgdGVtcDIKICAgICBhbmRpIH5TdGFja0Fs
aWdubWVudE1hc2ssIHRlbXAyCiAKLSAgICBpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwgb3Ig
QVJNdjcgb3IgQVJNNjQgb3IgQVJNNjRFIG9yIENfTE9PUCBvciBNSVBTCisgICAgaWYgQVJNdjcg
b3IgQVJNNjQgb3IgQVJNNjRFIG9yIENfTE9PUCBvciBNSVBTCiAgICAgICAgIGFkZHAgQ2FsbGVy
RnJhbWVBbmRQQ1NpemUsIHNwCiAgICAgICAgIHN1YmkgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHRl
bXAyCiAgICAgICAgIGxvYWRwIENhbGxlckZyYW1lQW5kUEM6OnJldHVyblBDW2Nmcl0sIGxyCkBA
IC0xMTA5LDcgKzExMDIsNyBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVC
bG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAgICAgIGlmIEFSTTY0
IG9yIEFSTTY0RQogICAgICAgICAgICAgcG9wIGxyLCBjZnIKICAgICAgICAgICAgIHVudGFnUmV0
dXJuQWRkcmVzcyBzcAotICAgICAgICBlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElU
SU9OQUwgb3IgTUlQUworICAgICAgICBlbHNpZiBBUk12NyBvciBNSVBTCiAgICAgICAgICAgICBw
b3AgY2ZyCiAgICAgICAgICAgICBwb3AgbHIKICAgICAgICAgZWxzZQpAQCAtMTMyMiwxMCArMTMx
NSw2IEBAIGVsc2UKICAgICAgICAgX3JlbGF0aXZlUENCYXNlOgogICAgICAgICAgICAgbW92ZSBw
YywgcGNCYXNlCiAgICAgICAgICAgICBzdWJwIDMsIHBjQmFzZSAgICMgTmVlZCB0byBiYWNrIHVw
IHRoZSBQQyBhbmQgc2V0IHRoZSBUaHVtYjIgYml0Ci0gICAgICAgIGVsc2lmIEFSTSBvciBBUk12
N19UUkFESVRJT05BTAotICAgICAgICBfcmVsYXRpdmVQQ0Jhc2U6Ci0gICAgICAgICAgICBtb3Zl
IHBjLCBwY0Jhc2UKLSAgICAgICAgICAgIHN1YnAgOCwgcGNCYXNlCiAgICAgICAgIGVsc2lmIE1J
UFMKICAgICAgICAgICAgIGxhIF9yZWxhdGl2ZVBDQmFzZSwgcGNCYXNlCiAgICAgICAgICAgICBz
ZXRjYWxscmVnIHBjQmFzZSAjIG5lZWRlZCB0byBzZXQgJHQ5IHRvIHRoZSByaWdodCB2YWx1ZSBm
b3IgdGhlIC5jcGxvYWQgY3JlYXRlZCBieSB0aGUgbGFiZWwuCkBAIC0xMzU2LDcgKzEzNDUsNyBA
QCBtYWNybyBzZXRFbnRyeUFkZHJlc3NDb21tb24oaW5kZXgsIGxhYmVsLCBtYXApCiAgICAgICAg
IHBjcnRvYWRkciBsYWJlbCwgdDIKICAgICAgICAgbW92ZSBpbmRleCwgdDQKICAgICAgICAgc3Rv
cmVwIHQyLCBbbWFwLCB0NCwgUHRyU2l6ZV0KLSAgICBlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJN
djdfVFJBRElUSU9OQUwKKyAgICBlbHNpZiBBUk12NwogICAgICAgICBtdmxibCAobGFiZWwgLSBf
cmVsYXRpdmVQQ0Jhc2UpLCB0NAogICAgICAgICBhZGRwIHQ0LCB0MiwgdDQKICAgICAgICAgbW92
ZSBpbmRleCwgdDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggODFlMjAzYjI2OTQ1Y2MwNTlmMjRjYjQw
MGE2NjUzZmY4MzMzNTgzNC4uMjVhZmI5YjFhOThkNmYwOWQwNTkwM2U4MjlhNWI1MThiNDA2MWRm
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTg4LDcgKzg4LDcgQEAgbWFjcm8gZGlzcGF0Y2hBZnRl
ckNhbGwoc2l6ZSwgb3AsIGRpc3BhdGNoKQogZW5kCiAKIG1hY3JvIGNDYWxsMihmdW5jdGlvbikK
LSAgICBpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUworICAgIGlm
IEFSTXY3IG9yIE1JUFMKICAgICAgICAgY2FsbCBmdW5jdGlvbgogICAgIGVsc2lmIFg4NiBvciBY
ODZfV0lOCiAgICAgICAgIHN1YnAgOCwgc3AKQEAgLTExMiw3ICsxMTIsNyBAQCBtYWNybyBjQ2Fs
bDJWb2lkKGZ1bmN0aW9uKQogZW5kCiAKIG1hY3JvIGNDYWxsNChmdW5jdGlvbikKLSAgICBpZiBB
Uk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUworICAgIGlmIEFSTXY3IG9y
IE1JUFMKICAgICAgICAgY2FsbCBmdW5jdGlvbgogICAgIGVsc2lmIFg4NiBvciBYODZfV0lOCiAg
ICAgICAgIHB1c2ggYTMKQEAgLTE3NCwxNSArMTc0LDExIEBAIG1hY3JvIGRvVk1FbnRyeShtYWtl
Q2FsbCkKICAgICAgICAgYWRkcCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHNwLCB0
MwogICAgICAgICBhbmRwIH5TdGFja0FsaWdubWVudE1hc2ssIHQzCiAgICAgICAgIHN1YnAgdDMs
IENhbGxGcmFtZUFsaWduU2xvdHMgKiBTbG90U2l6ZSwgc3AKLSAgICBlbHNpZiBBUk0gb3IgQVJN
djcgb3IgQVJNdjdfVFJBRElUSU9OQUwKKyAgICBlbHNpZiBBUk12NwogICAgICAgICBhZGRwIENh
bGxGcmFtZUFsaWduU2xvdHMgKiBTbG90U2l6ZSwgc3AsIHQzCiAgICAgICAgIGNscmJwIHQzLCBT
dGFja0FsaWdubWVudE1hc2ssIHQzCi0gICAgICAgIGlmIEFSTXY3Ci0gICAgICAgICAgICBzdWJw
IHQzLCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHQzCi0gICAgICAgICAgICBtb3Zl
IHQzLCBzcAotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdWJwIHQzLCBDYWxsRnJhbWVBbGln
blNsb3RzICogU2xvdFNpemUsIHNwCi0gICAgICAgIGVuZAorICAgICAgICBzdWJwIHQzLCBDYWxs
RnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHQzCisgICAgICAgIG1vdmUgdDMsIHNwCiAgICAg
ZW5kCiAKICAgICBsb2FkaSBQcm90b0NhbGxGcmFtZTo6cGFkZGVkQXJnQ291bnRbcHJvdG9DYWxs
RnJhbWVdLCB0NApAQCAtMjAzOCw3ICsyMDM0LDcgQEAgbWFjcm8gbmF0aXZlQ2FsbFRyYW1wb2xp
bmUoZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tN
YXNrLCB0MwogICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1hcmtlZEJs
b2NrOjpGb290ZXI6Om1fdm1bdDNdLCB0MwogICAgICAgICBhZGRwIDgsIHNwCi0gICAgZWxzaWYg
QVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIENfTE9PUCBvciBNSVBTCisgICAg
ZWxzaWYgQVJNdjcgb3IgQ19MT09QIG9yIE1JUFMKICAgICAgICAgaWYgTUlQUwogICAgICAgICAj
IGNhbGxpbmcgY29udmVudGlvbiBzYXlzIHRvIHNhdmUgc3RhY2sgc3BhY2UgZm9yIDQgZmlyc3Qg
cmVnaXN0ZXJzIGluCiAgICAgICAgICMgYWxsIGNhc2VzLiBUbyBtYXRjaCBvdXIgMTYtYnl0ZSBh
bGlnbm1lbnQsIHRoYXQgbWVhbnMgd2UgbmVlZCB0bwpAQCAtMjEwNSw3ICsyMTAxLDcgQEAgbWFj
cm8gaW50ZXJuYWxGdW5jdGlvbkNhbGxUcmFtcG9saW5lKG9mZnNldE9mRnVuY3Rpb24pCiAgICAg
ICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MwogICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zv
b3Rlck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDNdLCB0MwogICAgICAgICBh
ZGRwIDgsIHNwCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9y
IENfTE9PUCBvciBNSVBTCisgICAgZWxzaWYgQVJNdjcgb3IgQ19MT09QIG9yIE1JUFMKICAgICAg
ICAgc3VicCA4LCBzcCAjIGFsaWduIHN0YWNrIHBvaW50ZXIKICAgICAgICAgIyB0MSBhbHJlYWR5
IGNvbnRhaW5zIHRoZSBDYWxsZWUuCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtLnJiIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtLnJiCmluZGV4IDgyNDRiYmFjMmM4MDRm
OTA2ZmViYjM0YTRmMjkwNGFhM2Y3Y2I5N2MuLmIwYzMzNjI3ZDEwODcyMjc5ZTA4MTFjNGY0YTdl
Y2FkNDFlNWZjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2FybS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKQEAg
LTU5LDE5ICs1OSw2IEBAIGRlZiBpc0FSTXY3CiAgICAgY2FzZSAkYWN0aXZlQmFja2VuZAogICAg
IHdoZW4gIkFSTXY3IgogICAgICAgICB0cnVlCi0gICAgd2hlbiAiQVJNdjdfVFJBRElUSU9OQUwi
LCAiQVJNIgotICAgICAgICBmYWxzZQotICAgIGVsc2UKLSAgICAgICAgcmFpc2UgImJhZCB2YWx1
ZSBmb3IgJGFjdGl2ZUJhY2tlbmQ6ICN7JGFjdGl2ZUJhY2tlbmR9IgotICAgIGVuZAotZW5kCi0K
LWRlZiBpc0FSTXY3VHJhZGl0aW9uYWwKLSAgICBjYXNlICRhY3RpdmVCYWNrZW5kCi0gICAgd2hl
biAiQVJNdjdfVFJBRElUSU9OQUwiCi0gICAgICAgIHRydWUKLSAgICB3aGVuICJBUk12NyIsICJB
Uk0iCi0gICAgICAgIGZhbHNlCiAgICAgZWxzZQogICAgICAgICByYWlzZSAiYmFkIHZhbHVlIGZv
ciAkYWN0aXZlQmFja2VuZDogI3skYWN0aXZlQmFja2VuZH0iCiAgICAgZW5kCkBAIC0xMDQsNyAr
OTEsNyBAQCBkZWYgYXJtTW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0ZXIpCiAgICAgICAgICRh
c20ucHV0cyAibW92ICN7cmVnaXN0ZXIuYXJtT3BlcmFuZH0sIFwjI3t2YWx1ZX0iCiAgICAgZWxz
aWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgogICAgICAgICAkYXNtLnB1dHMgIm12
biAje3JlZ2lzdGVyLmFybU9wZXJhbmR9LCBcIyN7fnZhbHVlfSIKLSAgICBlbHNpZiBpc0FSTXY3
IG9yIGlzQVJNdjdUcmFkaXRpb25hbAorICAgIGVsc2lmIGlzQVJNdjcKICAgICAgICAgJGFzbS5w
dXRzICJtb3Z3ICN7cmVnaXN0ZXIuYXJtT3BlcmFuZH0sIFwjI3t2YWx1ZSAmIDB4ZmZmZn0iCiAg
ICAgICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9IDAKICAgICAgICAgICAgICRhc20ucHV0
cyAibW92dCAje3JlZ2lzdGVyLmFybU9wZXJhbmR9LCBcIyN7KHZhbHVlID4+IDE2KSAmIDB4ZmZm
Zn0iCkBAIC0zMDEsMjEgKzI4OCwxMSBAQCBkZWYgYXJtTG93ZXJMYWJlbFJlZmVyZW5jZXMobGlz
dCkKIGVuZAogCiBjbGFzcyBTZXF1ZW5jZQotICAgIGRlZiBnZXRNb2RpZmllZExpc3RBUk0KLSAg
ICAgICAgcmFpc2UgdW5sZXNzICRhY3RpdmVCYWNrZW5kID09ICJBUk0iCi0gICAgICAgIGdldE1v
ZGlmaWVkTGlzdEFSTUNvbW1vbgotICAgIGVuZAotCiAgICAgZGVmIGdldE1vZGlmaWVkTGlzdEFS
TXY3CiAgICAgICAgIHJhaXNlIHVubGVzcyAkYWN0aXZlQmFja2VuZCA9PSAiQVJNdjciCiAgICAg
ICAgIGdldE1vZGlmaWVkTGlzdEFSTUNvbW1vbgogICAgIGVuZAogCi0gICAgZGVmIGdldE1vZGlm
aWVkTGlzdEFSTXY3X1RSQURJVElPTkFMCi0gICAgICAgIHJhaXNlIHVubGVzcyAkYWN0aXZlQmFj
a2VuZCA9PSAiQVJNdjdfVFJBRElUSU9OQUwiCi0gICAgICAgIGdldE1vZGlmaWVkTGlzdEFSTUNv
bW1vbgotICAgIGVuZAotCiAgICAgZGVmIGdldE1vZGlmaWVkTGlzdEFSTUNvbW1vbgogICAgICAg
ICByZXN1bHQgPSBAbGlzdAogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJTaW1wbGVCcmFuY2hP
cHMocmVzdWx0KQpAQCAtNDE0LDIxICszOTEsMTEgQEAgZGVmIGVtaXRBcm1UZXN0U2V0KG9wZXJh
bmRzLCBjb2RlKQogZW5kCiAKIGNsYXNzIEluc3RydWN0aW9uCi0gICAgZGVmIGxvd2VyQVJNCi0g
ICAgICAgIHJhaXNlIHVubGVzcyAkYWN0aXZlQmFja2VuZCA9PSAiQVJNIgotICAgICAgICBsb3dl
ckFSTUNvbW1vbgotICAgIGVuZAotCiAgICAgZGVmIGxvd2VyQVJNdjcKICAgICAgICAgcmFpc2Ug
dW5sZXNzICRhY3RpdmVCYWNrZW5kID09ICJBUk12NyIKICAgICAgICAgbG93ZXJBUk1Db21tb24K
ICAgICBlbmQKIAotICAgIGRlZiBsb3dlckFSTXY3X1RSQURJVElPTkFMCi0gICAgICAgIHJhaXNl
IHVubGVzcyAkYWN0aXZlQmFja2VuZCA9PSAiQVJNdjdfVFJBRElUSU9OQUwiCi0gICAgICAgIGxv
d2VyQVJNQ29tbW9uCi0gICAgZW5kCi0KICAgICBkZWYgbG93ZXJBUk1Db21tb24KICAgICAgICAg
Y2FzZSBvcGNvZGUKICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFkZGlzIiwgImFkZHBz
IgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMu
cmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgppbmRleCBm
ZjA2NWQ1MzkyZGZjZGQzMjg1NmFhZDdmMDZhYzIxOGQ1MmQwOGMxLi5jNmNjNWFjMTZlMTIzZGM1
ZTYwNjkyZGE0ZmE4NDQ1YjI4MWFmOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9iYWNrZW5kcy5yYgpAQCAtNDAsOSArNDAsNyBAQAogICAgICAiWDg2X1dJTiIsCiAg
ICAgICJYODZfNjQiLAogICAgICAiWDg2XzY0X1dJTiIsCi0gICAgICJBUk0iLAogICAgICAiQVJN
djciLAotICAgICAiQVJNdjdfVFJBRElUSU9OQUwiLAogICAgICAiQVJNNjQiLAogICAgICAiQVJN
NjRFIiwKICAgICAgIk1JUFMiLApAQCAtNjAsOSArNTgsNyBAQAogICAgICAiWDg2X1dJTiIsCiAg
ICAgICJYODZfNjQiLAogICAgICAiWDg2XzY0X1dJTiIsCi0gICAgICJBUk0iLAogICAgICAiQVJN
djciLAotICAgICAiQVJNdjdfVFJBRElUSU9OQUwiLAogICAgICAiQVJNNjQiLAogICAgICAiQVJN
NjRFIiwKICAgICAgIk1JUFMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW5saW5lQVNN
LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaAppbmRleCAzM2MxYTJiNzAzYTM2Njg4YTVl
MWMxODc2ZDRhYmI2YWYxMThmZTJhLi44Mzc5YTY5NjU5MTU0MzEyZmIxZmZlMzE3MDRjYWFiYzI1
MjJkMzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9JbmxpbmVBU00uaApAQCAtOTMsNyArOTMsNyBAQAogI2RlZmluZSBMT0NBTF9M
QUJFTF9TVFJJTkcobmFtZSkgIi5MIiAjbmFtZQogI2VuZGlmCiAKLSNpZiAoQ1BVKEFSTV9UUkFE
SVRJT05BTCkgJiYgKGRlZmluZWQodGh1bWIyKSB8fCBkZWZpbmVkKF9fdGh1bWIyX18pIHx8IGRl
ZmluZWQoX190aHVtYikgfHwgZGVmaW5lZChfX3RodW1iX18pKSkgfHwgQ1BVKEFSTV9USFVNQjIp
CisjaWYgQ1BVKEFSTV9USFVNQjIpCiAjZGVmaW5lIElOTElORV9BUk1fRlVOQ1RJT04obmFtZSkg
Ii50aHVtYiIgIlxuIiAiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKG5hbWUpICJcbiIK
ICNlbHNlCiAjZGVmaW5lIElOTElORV9BUk1fRlVOQ1RJT04obmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4
IGUyZWI3NWJjZGIzM2E3MzEzNjQwMmRjZDAxMmRhMDc2M2ZlNjhkNmUuLmE2NjdmODRlZmFmNjU5
OTQ3M2M0ZDBmOGUzOTNiZDQ0ZGVkNmQxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtODEzLDEwICs4MTMs
NiBAQAogI2lmIChDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTTY0KSkgJiYgKFBMQVRGT1JNKElP
U19GQU1JTFkpIHx8IE9TKExJTlVYKSB8fCBPUyhGUkVFQlNEKSkKICNkZWZpbmUgRU5BQkxFX0RG
R19KSVQgMQogI2VuZGlmCi0vKiBFbmFibGUgdGhlIERGRyBKSVQgb24gQVJNLiAqLwotI2lmIENQ
VShBUk1fVFJBRElUSU9OQUwpCi0jZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKLSNlbmRpZgogLyog
RW5hYmxlIHRoZSBERkcgSklUIG9uIE1JUFMuICovCiAjaWYgQ1BVKE1JUFMpCiAjZGVmaW5lIEVO
QUJMRV9ERkdfSklUIDEKQEAgLTgzOSw3ICs4MzUsNyBAQAogI2RlZmluZSBFTkFCTEVfRkFTVF9U
TFNfSklUIDEKICNlbmRpZgogCi0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFS
TV9USFVNQjIpIHx8IENQVShBUk02NCkgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkgfHwgQ1BVKE1J
UFMpCisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQ
VShBUk02NCkgfHwgQ1BVKE1JUFMpCiAjZGVmaW5lIEVOQUJMRV9NQVNNX1BST0JFIDEKICNlbHNl
CiAjZGVmaW5lIEVOQUJMRV9NQVNNX1BST0JFIDAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354898</attachid>
            <date>2018-11-15 00:26:40 -0800</date>
            <delta_ts>2018-11-15 00:40:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191675-20181115172638.patch</filename>
            <type>text/plain</type>
            <size>183406</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODk4MjRlYjViZjc2MjdhOGMxMDEwMjI5N2JiNDM3NmNlMjMwMzhmLi45MTQ3OWIyZjRlYTk4ZjY1
YTZkMWEwYWU5MTdhODA4ODNjMTRhYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxOC0xMS0xNSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIERyb3AgQVJNX1RSQURJVElPTkFMIHN1cHBvcnQg
aW4gTExJbnQsIGJhc2VsaW5lIEpJVCwgYW5kIERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugbm8gbG9uZ2VyIG1haW50YWluIEFSTV9UUkFESVRJ
T05BTCBMTEludCBhbmQgSklUIGluIEpTQy4gVGhpcyBhcmNoaXRlY3R1cmUgd2lsbCB1c2UKKyAg
ICAgICAgQ0xvb3AgaW5zdGVhZC4gVGhpcyBwYXRjaCByZW1vdmVzIEFSTV9UUkFESVRJT05BTCBz
dXBwb3J0IGluIExMSW50IGFuZCBKSVQuCisKKyAgICAgICAgRGlzY3Vzc2VkIGluIGh0dHBzOi8v
bGlzdHMud2Via2l0Lm9yZy9waXBlcm1haWwvd2Via2l0LWRldi8yMDE4LU9jdG9iZXIvMDMwMjIw
Lmh0bWwuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxpbmtDb2RlKToKKyAg
ICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZHVtcENvZGUpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cGF0Y2hhYmxl
QnJhbmNoMzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6IFJlbW92ZWQu
CisgICAgICAgICogYXNzZW1ibGVyL1BlcmZMb2cuY3BwOgorICAgICAgICAqIGFzc2VtYmxlci9Q
ZXJmTG9nLmg6CisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oOgorICAgICAgICAo
SlNDOjpQcm9iZTo6Q1BVU3RhdGU6OnBjKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRl
OjpmcCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6c3ApOgorICAgICAgICAqIGFz
c2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OmlzUEMpOgorICAgICAgICAoSlND
Ojp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9i
ZU1vZGlmaWVzU3RhY2tWYWx1ZXMpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9DYXBzdG9uZURp
c2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNzZW1ibGUpOgorICAgICAg
ICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcDoKKyAgICAgICAgKiBqaXQvSklUTWF0aElD
Lmg6CisgICAgICAgIChKU0M6OmlzUHJvZmlsZUVtcHR5KToKKyAgICAgICAgKiBqaXQvUmVnaXN0
ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJl
Z2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJz
KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVn
aXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3Rl
cnMpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9yY2VJQ0Zh
aWx1cmUpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogb2ZmbGluZWFzbS9hcm0ucmI6Cisg
ICAgICAgICogb2ZmbGluZWFzbS9iYWNrZW5kcy5yYjoKKwogMjAxOC0xMS0xNCAgS2VpdGggUm9s
bGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBzY3JpcHRzIGZvciBEZXJp
dmVkIGFuZCBVbmlmaWVkIFNvdXJjZXMgdG8gZXh0ZXJuYWwgZmlsZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDExZDlkZWY4
YjEzOGI3MTExNjAxYWFiZWNhMzU4ZDgxMDEwMmE3Ny4uZWFiNTM5MzJiOGQ1OTFkYTUxZGI3ZjI5
NmIyNjliYTlkNGRjZDhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMS0xNSAgWXVzdWtl
IFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIERy
b3AgQVJNX1RSQURJVElPTkFMIHN1cHBvcnQgaW4gTExJbnQsIGJhc2VsaW5lIEpJVCwgYW5kIERG
RworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjc1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
SW5saW5lQVNNLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTgtMTEtMTQgIEtl
aXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAjZW5kIHZzLiAj
ZW5kaWYgdHlwby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhYjg3MjU0
MDJlMTBlY2FmMTM3YTdhZmQ4MmI5MTlmZWYyODJmOWYxLi43OWNhYjBiOTc4YmI5YzhlYmNkY2M2
NGNlMmM5M2IwOWMzNDk1M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNDAsOCArMjQwLDYgQEAgZWxzZSAoKQogICAgICAgICBzZXQoT0ZGTElORV9BU01fQkFDS0VO
RCAiQVJNNjQiKQogICAgIGVsc2VpZiAoQVJNX1RIVU1CMl9ERVRFQ1RFRCkKICAgICAgICAgc2V0
KE9GRkxJTkVfQVNNX0JBQ0tFTkQgIkFSTXY3IikKLSAgICBlbHNlaWYgKEFSTV9UUkFESVRJT05B
TF9ERVRFQ1RFRCkKLSAgICAgICAgc2V0KE9GRkxJTkVfQVNNX0JBQ0tFTkQgIkFSTXY3X1RSQURJ
VElPTkFMIikKICAgICBlbHNlaWYgKFdURl9DUFVfTUlQUykKICAgICAgICAgc2V0KE9GRkxJTkVf
QVNNX0JBQ0tFTkQgIk1JUFMiKQogICAgIGVuZGlmICgpCkBAIC00MjQsNyArNDIyLDYgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBBUEkvT3BhcXVl
SlNTdHJpbmcuaAogCiAgICAgYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKLSAgICBhc3NlbWJs
ZXIvQVJNQXNzZW1ibGVyLmgKICAgICBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAogICAgIGFz
c2VtYmxlci9BYm9ydFJlYXNvbi5oCiAgICAgYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuaApAQCAtNDM2LDcgKzQzMyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAogICAgIGFzc2VtYmxlci9N
SVBTQXNzZW1ibGVyLmgKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAotICAgIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAogICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKICAgICBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZWU0NTcxMWVlOGViNzMxNjQ4ZTI3YWVlNzcwYWI4OWE3MWRmMzY2ZC4uYzI3N2ViZjE4OWZlZjE1
MTFjNDk5ZGQ3Mjk4NWI3MjYzZDM4NjZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyMTAsOSArMTIxMCw3IEBACiAJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkNDODVBMDBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oICovOyB9OwogCQk4NkNDRUZE
RTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQ0VGREQwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkQy
MjIxQTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0
YXBpLm1tICovOyB9OwotCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJD
MDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZEM0IyQzUxMDE1NkJERTAwMjg2NUU3IC8q
IEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMxMTAxNTZCREUwMDI4NjVFNyAvKiBBc3Nl
bWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODZEM0IyQzYxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3Jv
QXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkQzQjNDMzEw
MTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IzQzExMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZm
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4
NkUxMTZCMTBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMg
LyogQ29kZUxvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODZFM0M2MTIxNjdCQUJENzAwNkQ3NjBBIC8qIEpTVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTNDNjA2MTY3QkFCODcw
MDZENzYwQSAvKiBKU1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OwpAQCAtMzg3MCw3ICszODY4LDYgQEAKIAkJODZCNTgyNkExNEQzNUQ1MTAwQTlD
MzA2IC8qIFRpZXJlZE1NYXBBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUaWVyZWRNTWFwQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCRjY0
MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnRyaW5zaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZD
MzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFS
TS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzU2OERFMTFBMjEzRUUwMDA3
RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWFjcm9Bc3NlbWJsZXJNSVBTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1JUFNBc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODZDQzg1QTAwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUSW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzg3OCwxMCArMzg3NSw3IEBACiAJCTg2Q0M4NUMzMEVFN0E4OTQw
MDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2Q0NFRkREMEY0MTNGODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IHRlc3RhcGkubW07IHBhdGggPSBBUEkvdGVz
dHMvdGVzdGFwaS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODZEM0IyQkYxMDE1
NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBUk1Bc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFSTUFzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NkQzQjJDMTEwMTU2QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVy
V2l0aENvbnN0YW50UG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3Nl
bWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTg2RDNCMkMyMTAxNTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fzc2VtYmxlckFSTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NkQzQjNDMTEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1
ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5rQnVmZmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RTExNkIwMEZFNzVBQzgwMEI1MTJCQyAvKiBD
b2RlTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUxvY2F0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RTNDNjA2MTY3QkFCODcwMDZE
NzYwQSAvKiBKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MjEsOCArNzYxNSw2IEBACiAJ
CQkJMEYzNzMwOTAxQzBDRDcwQzAwMDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZS5oICovLAogCQkJCUFENDEyQjM1MUU3QjU3QzAwMDhBRjE1NyAvKiBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2VJZi5oICovLAogCQkJCTg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAv
KiBBUk02NEFzc2VtYmxlci5oICovLAotCQkJCTg2RDNCMkJGMTAxNTZCREUwMDI4NjVFNyAvKiBB
Uk1Bc3NlbWJsZXIuY3BwICovLAotCQkJCTg2RDNCMkMwMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1B
c3NlbWJsZXIuaCAqLywKIAkJCQk4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3Nl
bWJsZXIuaCAqLywKIAkJCQk5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVm
ZmVyLmggKi8sCiAJCQkJODZEM0IyQzExMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZl
cldpdGhDb25zdGFudFBvb2wuaCAqLywKQEAgLTc2MzQsOCArNzYyNiw2IEBACiAJCQkJODZEM0Iz
QzExMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLywKIAkJCQkwRkVCM0VDRTE2MjM3
RjY3MDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwICovLAogCQkJCTg2QzM2RUU5MEVFMTI4
OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovLAotCQkJCTg2QzU2OEREMTFBMjEzRUUw
MDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgKi8sCi0JCQkJODZEM0IyQzIxMDE1NkJE
RTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggKi8sCiAJCQkJRkVCMTM3NTYxQkIxMUVF
RTAwQ0Q1MTAwIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuY3BwICovLAogCQkJCTg2NDA5MjNDMTU2
RUVEM0IwMDU2NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi8sCiAJCQkJQTcyOTAwOUIx
Nzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3BwICovLApAQCAtODM3MSw3
ICs4MzYxLDYgQEAKIAkJCQk3OUEyMjgzNjFEMzVENzFGMDBEOEUwNjcgLyogQXJpdGhQcm9maWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlD
aGVja01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAv
KiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODZEM0IyQzQxMDE1NkJERTAw
Mjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDUwRkRE
RUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgz
MzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTkzNTcsNyArOTM0Niw2IEBACiAJCQkJOTgxRUQ4MjMyODIzNEQ5MUJB
RUNDQURFIC8qIE1hY2hpbmVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEI3MjNCODEy
RDdEQTZGMDAzQkQ1RUQgLyogTWFjaGluZVN0YWNrTWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTg2RDNCMkM2MTAxNTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fzc2VtYmxlckFSTS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNz
ZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVD
MiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjNCMjNFMDBG
QzYxMTg5MDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAxYWQ5OWYwZTZlNzRiNzc5MzBhNDZjYzA1
OTI2MGZkMjI3OWI3YWQ1Li5jYmE0YzRiYTYwMDRmOTMwZDVjYTg1NjMzMTBhNjI0M2UzNjQ0OWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC00MSwxMSArNDEsOSBAQCBBUEkvSlNX
ZWFrUHJpdmF0ZS5jcHAKIEFQSS9KU1dlYWtWYWx1ZS5jcHAKIEFQSS9PcGFxdWVKU1N0cmluZy5j
cHAKIAotYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAKIGFzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAogYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXIuY3BwCi1hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwCiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAKIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmNw
cAogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTUyZjM3ZjY4MDk0NjA3ZDAwZmQyMmNmMzM2YTQwOWJhYzcwYTJmNS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0
MjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBVbml2ZXJzaXR5IG9mIFN6ZWdl
ZAotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0K
LSNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQotCi0jaW5jbHVk
ZSAiQVJNQXNzZW1ibGVyLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi0vLyBQYXRjaGluZyBoZWxw
ZXJzCi0KLXZvaWQgQVJNQXNzZW1ibGVyOjpwYXRjaENvbnN0YW50UG9vbExvYWQodm9pZCogbG9h
ZEFkZHIsIHZvaWQqIGNvbnN0UG9vbEFkZHIpCi17Ci0gICAgQVJNV29yZCAqbGRyID0gcmVpbnRl
cnByZXRfY2FzdDxBUk1Xb3JkKj4obG9hZEFkZHIpOwotICAgIEFSTVdvcmQgZGlmZiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGNvbnN0UG9vbEFkZHIpIC0gbGRyOwotICAgIEFSTVdvcmQg
aW5kZXggPSAoKmxkciAmIDB4ZmZmKSA+PiAxOwotCi0gICAgQVNTRVJUKGRpZmYgPj0gMSk7Ci0g
ICAgaWYgKGRpZmYgPj0gMiB8fCBpbmRleCA+IDApIHsKLSAgICAgICAgZGlmZiA9IChkaWZmICsg
aW5kZXggLSAyKSAqIHNpemVvZihBUk1Xb3JkKTsKLSAgICAgICAgQVNTRVJUKGRpZmYgPD0gMHhm
ZmYpOwotICAgICAgICAqbGRyID0gKCpsZHIgJiB+MHhmZmYpIHwgZGlmZjsKLSAgICB9IGVsc2UK
LSAgICAgICAgKmxkciA9ICgqbGRyICYgfigweGZmZiB8IEFSTUFzc2VtYmxlcjo6RGF0YVRyYW5z
ZmVyVXApKSB8IHNpemVvZihBUk1Xb3JkKTsKLX0KLQotLy8gSGFuZGxlIGltbWVkaWF0ZXMKLQot
QVJNV29yZCBBUk1Bc3NlbWJsZXI6OmdldE9wMihBUk1Xb3JkIGltbSkKLXsKLSAgICBpbnQgcm9s
OwotCi0gICAgaWYgKGltbSA8PSAweGZmKQotICAgICAgICByZXR1cm4gT3AySW1tZWRpYXRlIHwg
aW1tOwotCi0gICAgaWYgKChpbW0gJiAweGZmMDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgIGltbSA8
PD0gODsKLSAgICAgICAgcm9sID0gODsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGltbSA9
IChpbW0gPDwgMjQpIHwgKGltbSA+PiA4KTsKLSAgICAgICAgcm9sID0gMDsKLSAgICB9Ci0KLSAg
ICBpZiAoKGltbSAmIDB4ZmYwMDAwMDApID09IDApIHsKLSAgICAgICAgaW1tIDw8PSA4OwotICAg
ICAgICByb2wgKz0gNDsKLSAgICB9Ci0KLSAgICBpZiAoKGltbSAmIDB4ZjAwMDAwMDApID09IDAp
IHsKLSAgICAgICAgaW1tIDw8PSA0OwotICAgICAgICByb2wgKz0gMjsKLSAgICB9Ci0KLSAgICBp
ZiAoKGltbSAmIDB4YzAwMDAwMDApID09IDApIHsKLSAgICAgICAgaW1tIDw8PSAyOwotICAgICAg
ICByb2wgKz0gMTsKLSAgICB9Ci0KLSAgICBpZiAoKGltbSAmIDB4MDBmZmZmZmYpID09IDApCi0g
ICAgICAgIHJldHVybiBPcDJJbW1lZGlhdGUgfCAoaW1tID4+IDI0KSB8IChyb2wgPDwgOCk7Ci0K
LSAgICByZXR1cm4gSW52YWxpZEltbWVkaWF0ZTsKLX0KLQotaW50IEFSTUFzc2VtYmxlcjo6Z2Vu
SW50KGludCByZWcsIEFSTVdvcmQgaW1tLCBib29sIHBvc2l0aXZlKQotewotICAgIC8vIFN0ZXAx
OiBTZWFyY2ggYSBub24taW1tZWRpYXRlIHBhcnQKLSAgICBBUk1Xb3JkIG1hc2s7Ci0gICAgQVJN
V29yZCBpbW0xOwotICAgIEFSTVdvcmQgaW1tMjsKLSAgICBpbnQgcm9sOwotCi0gICAgbWFzayA9
IDB4ZmYwMDAwMDA7Ci0gICAgcm9sID0gODsKLSAgICB3aGlsZSgxKSB7Ci0gICAgICAgIGlmICgo
aW1tICYgbWFzaykgPT0gMCkgewotICAgICAgICAgICAgaW1tID0gKGltbSA8PCByb2wpIHwgKGlt
bSA+PiAoMzIgLSByb2wpKTsKLSAgICAgICAgICAgIHJvbCA9IDQgKyAocm9sID4+IDEpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcm9sICs9IDI7Ci0gICAgICAgIG1h
c2sgPj49IDI7Ci0gICAgICAgIGlmIChtYXNrICYgMHgzKSB7Ci0gICAgICAgICAgICAvLyByb2wg
OAotICAgICAgICAgICAgaW1tID0gKGltbSA8PCA4KSB8IChpbW0gPj4gMjQpOwotICAgICAgICAg
ICAgbWFzayA9IDB4ZmYwMDsKLSAgICAgICAgICAgIHJvbCA9IDI0OwotICAgICAgICAgICAgd2hp
bGUgKDEpIHsKLSAgICAgICAgICAgICAgICBpZiAoKGltbSAmIG1hc2spID09IDApIHsKLSAgICAg
ICAgICAgICAgICAgICAgaW1tID0gKGltbSA8PCByb2wpIHwgKGltbSA+PiAoMzIgLSByb2wpKTsK
LSAgICAgICAgICAgICAgICAgICAgcm9sID0gKHJvbCA+PiAxKSAtIDg7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByb2wgKz0g
MjsKLSAgICAgICAgICAgICAgICBtYXNrID4+PSAyOwotICAgICAgICAgICAgICAgIGlmIChtYXNr
ICYgMHgzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUKChpbW0gJiAw
eGZmKSA9PSAwKTsKLQotICAgIGlmICgoaW1tICYgMHhmZjAwMDAwMCkgPT0gMCkgewotICAgICAg
ICBpbW0xID0gT3AySW1tZWRpYXRlIHwgKChpbW0gPj4gMTYpICYgMHhmZikgfCAoKChyb2wgKyA0
KSAmIDB4ZikgPDwgOCk7Ci0gICAgICAgIGltbTIgPSBPcDJJbW1lZGlhdGUgfCAoKGltbSA+PiA4
KSAmIDB4ZmYpIHwgKCgocm9sICsgOCkgJiAweGYpIDw8IDgpOwotICAgIH0gZWxzZSBpZiAoaW1t
ICYgMHhjMDAwMDAwMCkgewotICAgICAgICBpbW0xID0gT3AySW1tZWRpYXRlIHwgKChpbW0gPj4g
MjQpICYgMHhmZikgfCAoKHJvbCAmIDB4ZikgPDwgOCk7Ci0gICAgICAgIGltbSA8PD0gODsKLSAg
ICAgICAgcm9sICs9IDQ7Ci0KLSAgICAgICAgaWYgKChpbW0gJiAweGZmMDAwMDAwKSA9PSAwKSB7
Ci0gICAgICAgICAgICBpbW0gPDw9IDg7Ci0gICAgICAgICAgICByb2wgKz0gNDsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmICgoaW1tICYgMHhmMDAwMDAwMCkgPT0gMCkgewotICAgICAgICAgICAg
aW1tIDw8PSA0OwotICAgICAgICAgICAgcm9sICs9IDI7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoKGltbSAmIDB4YzAwMDAwMDApID09IDApIHsKLSAgICAgICAgICAgIGltbSA8PD0gMjsKLSAg
ICAgICAgICAgIHJvbCArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChpbW0gJiAweDAw
ZmZmZmZmKSA9PSAwKQotICAgICAgICAgICAgaW1tMiA9IE9wMkltbWVkaWF0ZSB8IChpbW0gPj4g
MjQpIHwgKChyb2wgJiAweGYpIDw8IDgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoKGltbSAmIDB4ZjAwMDAwMDApID09IDAp
IHsKLSAgICAgICAgICAgIGltbSA8PD0gNDsKLSAgICAgICAgICAgIHJvbCArPSAyOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKChpbW0gJiAweGMwMDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgICAg
ICBpbW0gPDw9IDI7Ci0gICAgICAgICAgICByb2wgKz0gMTsKLSAgICAgICAgfQotCi0gICAgICAg
IGltbTEgPSBPcDJJbW1lZGlhdGUgfCAoKGltbSA+PiAyNCkgJiAweGZmKSB8ICgocm9sICYgMHhm
KSA8PCA4KTsKLSAgICAgICAgaW1tIDw8PSA4OwotICAgICAgICByb2wgKz0gNDsKLQotICAgICAg
ICBpZiAoKGltbSAmIDB4ZjAwMDAwMDApID09IDApIHsKLSAgICAgICAgICAgIGltbSA8PD0gNDsK
LSAgICAgICAgICAgIHJvbCArPSAyOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChpbW0gJiAw
eGMwMDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgICAgICBpbW0gPDw9IDI7Ci0gICAgICAgICAgICBy
b2wgKz0gMTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgoaW1tICYgMHgwMGZmZmZmZikgPT0g
MCkKLSAgICAgICAgICAgIGltbTIgPSBPcDJJbW1lZGlhdGUgfCAoaW1tID4+IDI0KSB8ICgocm9s
ICYgMHhmKSA8PCA4KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotCi0gICAgaWYgKHBvc2l0aXZlKSB7Ci0gICAgICAgIG1vdihyZWcsIGltbTEpOwotICAgICAg
ICBvcnIocmVnLCByZWcsIGltbTIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG12bihyZWcsIGlt
bTEpOwotICAgICAgICBiaWMocmVnLCByZWcsIGltbTIpOwotICAgIH0KLQotICAgIHJldHVybiAx
OwotfQotCi1BUk1Xb3JkIEFSTUFzc2VtYmxlcjo6Z2V0SW1tKEFSTVdvcmQgaW1tLCBpbnQgdG1w
UmVnLCBib29sIGludmVydCkKLXsKLSAgICBBUk1Xb3JkIHRtcDsKLQotICAgIC8vIERvIGl0IGJ5
IDEgaW5zdHJ1Y3Rpb24KLSAgICB0bXAgPSBnZXRPcDIoaW1tKTsKLSAgICBpZiAodG1wICE9IElu
dmFsaWRJbW1lZGlhdGUpCi0gICAgICAgIHJldHVybiB0bXA7Ci0KLSAgICB0bXAgPSBnZXRPcDIo
fmltbSk7Ci0gICAgaWYgKHRtcCAhPSBJbnZhbGlkSW1tZWRpYXRlKSB7Ci0gICAgICAgIGlmIChp
bnZlcnQpCi0gICAgICAgICAgICByZXR1cm4gdG1wIHwgT3AySW52ZXJ0ZWRJbW1lZGlhdGU7Ci0g
ICAgICAgIG12bih0bXBSZWcsIHRtcCk7Ci0gICAgICAgIHJldHVybiB0bXBSZWc7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGVuY29kZUNvbXBsZXhJbW0oaW1tLCB0bXBSZWcpOwotfQotCi12b2lkIEFS
TUFzc2VtYmxlcjo6bW92ZUltbShBUk1Xb3JkIGltbSwgaW50IGRlc3QpCi17Ci0gICAgQVJNV29y
ZCB0bXA7Ci0KLSAgICAvLyBEbyBpdCBieSAxIGluc3RydWN0aW9uCi0gICAgdG1wID0gZ2V0T3Ay
KGltbSk7Ci0gICAgaWYgKHRtcCAhPSBJbnZhbGlkSW1tZWRpYXRlKSB7Ci0gICAgICAgIG1vdihk
ZXN0LCB0bXApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdG1wID0gZ2V0T3AyKH5p
bW0pOwotICAgIGlmICh0bXAgIT0gSW52YWxpZEltbWVkaWF0ZSkgewotICAgICAgICBtdm4oZGVz
dCwgdG1wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGVuY29kZUNvbXBsZXhJbW0o
aW1tLCBkZXN0KTsKLX0KLQotQVJNV29yZCBBUk1Bc3NlbWJsZXI6OmVuY29kZUNvbXBsZXhJbW0o
QVJNV29yZCBpbW0sIGludCBkZXN0KQotewotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQot
ICAgIEFSTVdvcmQgdG1wID0gZ2V0SW1tMTZPcDIoaW1tKTsKLSAgICBpZiAodG1wICE9IEludmFs
aWRJbW1lZGlhdGUpIHsKLSAgICAgICAgbW92dyhkZXN0LCB0bXApOwotICAgICAgICByZXR1cm4g
ZGVzdDsKLSAgICB9Ci0gICAgbW92dyhkZXN0LCBnZXRJbW0xNk9wMihpbW0gJiAweGZmZmYpKTsK
LSAgICBtb3Z0KGRlc3QsIGdldEltbTE2T3AyKGltbSA+PiAxNikpOwotICAgIHJldHVybiBkZXN0
OwotI2Vsc2UKLSAgICAvLyBEbyBpdCBieSAyIGluc3RydWN0aW9uCi0gICAgaWYgKGdlbkludChk
ZXN0LCBpbW0sIHRydWUpKQotICAgICAgICByZXR1cm4gZGVzdDsKLSAgICBpZiAoZ2VuSW50KGRl
c3QsIH5pbW0sIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIGRlc3Q7Ci0KLSAgICBsZHJJbW1lZGlh
dGUoZGVzdCwgaW1tKTsKLSAgICByZXR1cm4gZGVzdDsKLSNlbmRpZgotfQotCi0vLyBNZW1vcnkg
bG9hZC9zdG9yZSBoZWxwZXJzCi0KLXZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJhbnNmZXIzMihE
YXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3Rl
cklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KQotewotICAgIGlmIChvZmZzZXQgPj0gMCkgewotICAg
ICAgICBpZiAob2Zmc2V0IDw9IDB4ZmZmKQotICAgICAgICAgICAgZHRyVXAodHJhbnNmZXJUeXBl
LCBzcmNEc3QsIGJhc2UsIG9mZnNldCk7Ci0gICAgICAgIGVsc2UgaWYgKG9mZnNldCA8PSAweGZm
ZmZmKSB7Ci0gICAgICAgICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRp
YXRlIHwgKG9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOwotICAgICAgICAgICAgZHRyVXAodHJh
bnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIChvZmZzZXQgJiAweGZmZikpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVy
czo6UzApOwotICAgICAgICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNyY0RzdCwg
YmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAob2Zmc2V0ID49IC0weGZmZikKLSAgICAgICAgICAgIGR0ckRvd24odHJhbnNmZXJUeXBl
LCBzcmNEc3QsIGJhc2UsIC1vZmZzZXQpOwotICAgICAgICBlbHNlIGlmIChvZmZzZXQgPj0gLTB4
ZmZmZmYpIHsKLSAgICAgICAgICAgIHN1YihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1l
ZGlhdGUgfCAoLW9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOwotICAgICAgICAgICAgZHRyRG93
bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKC1vZmZzZXQgJiAweGZm
ZikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJl
Z2lzdGVyczo6UzApOwotICAgICAgICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNy
Y0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZv
aWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGVBIHRy
YW5zZmVyVHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkKLXsKLSAgICBBU1NFUlQoc2NhbGUg
Pj0gMCAmJiBzY2FsZSA8PSAzKTsKLSAgICBBUk1Xb3JkIG9wMiA9IGxzbChpbmRleCwgc2NhbGUp
OwotCi0gICAgaWYgKCFvZmZzZXQpIHsKLSAgICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5
cGUsIHNyY0RzdCwgYmFzZSwgb3AyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChvZmZzZXQgPD0gMHhmZmZmZiAmJiBvZmZzZXQgPj0gLTB4ZmZmZmYpIHsKLSAgICAgICAgYWRk
KEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIG9wMik7Ci0gICAgICAgIGRhdGFUcmFuc2ZlcjMyKHRy
YW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCBvZmZzZXQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwot
ICAgIGFkZChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBvcDIpOwotICAgIGR0
clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzAp
OwotfQotCi12b2lkIEFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlw
ZUIgdHJhbnNmZXJUeXBlLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQz
Ml90IG9mZnNldCkKLXsKLSAgICBpZiAob2Zmc2V0ID49IDApIHsKLSAgICAgICAgaWYgKG9mZnNl
dCA8PSAweGZmKQotICAgICAgICAgICAgaGFsZkR0clVwKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBi
YXNlLCBnZXRPcDJIYWxmKG9mZnNldCkpOwotICAgICAgICBlbHNlIGlmIChvZmZzZXQgPD0gMHhm
ZmZmKSB7Ci0gICAgICAgICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRp
YXRlIHwgKG9mZnNldCA+PiA4KSB8ICgxMiA8PCA4KSk7Ci0gICAgICAgICAgICBoYWxmRHRyVXAo
dHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIGdldE9wMkhhbGYob2Zmc2V0
ICYgMHhmZikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZUltbShvZmZzZXQs
IEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAgICAgaGFsZkR0clVwUmVnaXN0ZXIodHJhbnNm
ZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICB9Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgaWYgKG9mZnNldCA+PSAtMHhmZikKLSAgICAgICAgICAgIGhhbGZE
dHJEb3duKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBnZXRPcDJIYWxmKC1vZmZzZXQpKTsK
LSAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID49IC0weGZmZmYpIHsKLSAgICAgICAgICAgIHN1YihB
Uk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAoLW9mZnNldCA+PiA4KSB8ICgx
MiA8PCA4KSk7Ci0gICAgICAgICAgICBoYWxmRHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwg
QVJNUmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZigtb2Zmc2V0ICYgMHhmZikpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwot
ICAgICAgICAgICAgaGFsZkR0clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2Us
IEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEFSTUFzc2Vt
Ymxlcjo6YmFzZUluZGV4VHJhbnNmZXIxNihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUs
IFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSwgaW50MzJfdCBvZmZzZXQpCi17Ci0gICAgaWYgKCFzY2FsZSAmJiAhb2Zmc2V0KSB7
Ci0gICAgICAgIGhhbGZEdHJVcFJlZ2lzdGVyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBp
bmRleCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBUk1Xb3JkIG9wMiA9IGxzbChp
bmRleCwgc2NhbGUpOwotCi0gICAgaWYgKG9mZnNldCA8PSAweGZmZmYgJiYgb2Zmc2V0ID49IC0w
eGZmZmYpIHsKLSAgICAgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIG9wMik7Ci0gICAg
ICAgIGRhdGFUcmFuc2ZlcjE2KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMw
LCBvZmZzZXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbW92ZUltbShvZmZzZXQs
IEFSTVJlZ2lzdGVyczo6UzApOwotICAgIGFkZChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3Rl
cnM6OlMwLCBvcDIpOwotICAgIGhhbGZEdHJVcFJlZ2lzdGVyKHRyYW5zZmVyVHlwZSwgc3JjRHN0
LCBiYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKLX0KLQotdm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFU
cmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0cmFuc2ZlclR5cGUsIEZQUmVnaXN0
ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpCi17Ci0gICAgLy8g
VkZQIGNhbm5vdCBkaXJlY3RseSBhY2Nlc3MgbWVtb3J5IHRoYXQgaXMgbm90IGZvdXItYnl0ZS1h
bGlnbmVkCi0gICAgaWYgKCEob2Zmc2V0ICYgMHgzKSkgewotICAgICAgICBpZiAob2Zmc2V0IDw9
IDB4M2ZmICYmIG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBkb3VibGVEdHJVcCh0cmFuc2Zl
clR5cGUsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0ID4+IDIpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0gMCkg
ewotICAgICAgICAgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8
IChvZmZzZXQgPj4gMTApIHwgKDExIDw8IDgpKTsKLSAgICAgICAgICAgIGRvdWJsZUR0clVwKHRy
YW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhm
Zik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgb2Zmc2V0ID0gLW9m
ZnNldDsKLQotICAgICAgICBpZiAob2Zmc2V0IDw9IDB4M2ZmICYmIG9mZnNldCA+PSAwKSB7Ci0g
ICAgICAgICAgICBkb3VibGVEdHJEb3duKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBvZmZz
ZXQgPj4gMik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG9m
ZnNldCA8PSAweDNmZmZmICYmIG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBzdWIoQVJNUmVn
aXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+PiAxMCkgfCAoMTEgPDwg
OCkpOwotICAgICAgICAgICAgZG91YmxlRHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJN
UmVnaXN0ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7Ci0gICAgfQotCi0gICAgbW92
ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIGFkZChBUk1SZWdpc3RlcnM6OlMw
LCBBUk1SZWdpc3RlcnM6OlMwLCBiYXNlKTsKLSAgICBkb3VibGVEdHJVcCh0cmFuc2ZlclR5cGUs
IHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7Ci19Ci0KLXZvaWQgQVJNQXNzZW1ibGVyOjpi
YXNlSW5kZXhUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0cmFuc2ZlclR5cGUs
IEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkKLXsKLSAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMSwg
YmFzZSwgbHNsKGluZGV4LCBzY2FsZSkpOwotICAgIGRhdGFUcmFuc2ZlckZsb2F0KHRyYW5zZmVy
VHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMxLCBvZmZzZXQpOwotfQotCi12b2lkIEFSTUFz
c2VtYmxlcjo6cHJlcGFyZUV4ZWN1dGFibGVDb3B5KHZvaWQqIHRvKQotewotICAgIC8vIDY0LWJp
dCBhbGlnbm1lbnQgaXMgcmVxdWlyZWQgZm9yIG5leHQgY29uc3RhbnQgcG9vbCBhbmQgSklUIGNv
ZGUgYXMgd2VsbAotICAgIG1fYnVmZmVyLmZsdXNoV2l0aG91dEJhcnJpZXIodHJ1ZSk7Ci0KLSAg
ICBjaGFyKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9idWZmZXIuZGF0YSgpKTsK
LSAgICBwdHJkaWZmX3QgZGVsdGEgPSByZWludGVycHJldF9jYXN0PGNoYXIqPih0bykgLSBkYXRh
OwotCi0gICAgZm9yIChKdW1wczo6SXRlcmF0b3IgaXRlciA9IG1fanVtcHMuYmVnaW4oKTsgaXRl
ciAhPSBtX2p1bXBzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgLy8gVGhlIGxhc3QgYml0IGlz
IHNldCBpZiB0aGUgY29uc3RhbnQgbXVzdCBiZSBwbGFjZWQgb24gY29uc3RhbnQgcG9vbC4KLSAg
ICAgICAgaW50IHBvcyA9IChpdGVyLT5tX29mZnNldCkgJiAofjB4MSk7Ci0gICAgICAgIEFSTVdv
cmQqIGxkckFkZHIgPSByZWludGVycHJldF9jYXN0X3B0cjxBUk1Xb3JkKj4oZGF0YSArIHBvcyk7
Ci0gICAgICAgIEFSTVdvcmQqIGFkZHIgPSBnZXRMZHJJbW1BZGRyZXNzKGxkckFkZHIpOwotICAg
ICAgICBpZiAoKmFkZHIgIT0gSW52YWxpZEJyYW5jaFRhcmdldCkgewotICAgICAgICAgICAgaWYg
KCEoaXRlci0+bV9vZmZzZXQgJiAxKSkgewotICAgICAgICAgICAgICAgIGludHB0cl90IGRpZmZl
cmVuY2UgPSByZWludGVycHJldF9jYXN0X3B0cjxBUk1Xb3JkKj4oZGF0YSArICphZGRyKSAtIChs
ZHJBZGRyICsgRGVmYXVsdFByZWZldGNoT2Zmc2V0KTsKLQotICAgICAgICAgICAgICAgIGlmICgo
ZGlmZmVyZW5jZSA8PSBNYXhpbXVtQnJhbmNoT2Zmc2V0RGlzdGFuY2UgJiYgZGlmZmVyZW5jZSA+
PSBNaW5pbXVtQnJhbmNoT2Zmc2V0RGlzdGFuY2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgICps
ZHJBZGRyID0gQiB8IGdldENvbmRpdGlvbmFsRmllbGQoKmxkckFkZHIpIHwgKGRpZmZlcmVuY2Ug
JiBCcmFuY2hPZmZzZXRNYXNrKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgKmFkZHIgPSByZWludGVy
cHJldF9jYXN0PEFSTVdvcmQ+KGRhdGEgKyBkZWx0YSArICphZGRyKTsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVS
KSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQVJNQXNzZW1ibGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwYjZk
Y2IyNDFjYTM1MWQ3ZjFkMGEzZTQ4M2M1ZDIwZDlmZGM4N2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BUk1Bc3NlbWJsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNTkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdF
RCBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVOSVZFUlNJVFkgT0YgU1pFR0VE
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElP
TkFMKQotCi0jaW5jbHVkZSAiQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIgotI2lu
Y2x1ZGUgIkpJVENvbXBpbGF0aW9uRWZmb3J0LmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KLW5hbWVzcGFjZSBKU0MgewotCi0gICAgdHlwZWRlZiB1aW50MzJfdCBBUk1Xb3JkOwotCi0g
ICAgbmFtZXNwYWNlIEFSTVJlZ2lzdGVycyB7Ci0KLSAgICAgICAgdHlwZWRlZiBlbnVtIDogaW50
OF90IHsKLSAgICAgICAgICAgIHIwLAotICAgICAgICAgICAgcjEsCi0gICAgICAgICAgICByMiwK
LSAgICAgICAgICAgIHIzLAotICAgICAgICAgICAgcjQsCi0gICAgICAgICAgICByNSwKLSAgICAg
ICAgICAgIHI2LAotICAgICAgICAgICAgcjcsCi0gICAgICAgICAgICByOCwKLSAgICAgICAgICAg
IHI5LAotICAgICAgICAgICAgcjEwLAotICAgICAgICAgICAgZnAsCi0gICAgICAgICAgICBpcCwK
LSAgICAgICAgICAgIHNwLAotICAgICAgICAgICAgbHIsCi0gICAgICAgICAgICBwYywKLQotICAg
ICAgICAgICAgLy8gUHNldWRvbnltcyBmb3Igc29tZSBvZiB0aGUgcmVnaXN0ZXJzLgotICAgICAg
ICAgICAgUzAgPSByNiwKLSAgICAgICAgICAgIHIxMSA9IGZwLCAvLyBmcmFtZSBwb2ludGVyCi0g
ICAgICAgICAgICByMTIgPSBpcCwgUzEgPSBpcCwKLSAgICAgICAgICAgIHIxMyA9IHNwLAotICAg
ICAgICAgICAgcjE0ID0gbHIsCi0gICAgICAgICAgICByMTUgPSBwYywKLSAgICAgICAgICAgIElu
dmFsaWRHUFJSZWcgPSAtMSwKLSAgICAgICAgfSBSZWdpc3RlcklEOwotCi0gICAgICAgIHR5cGVk
ZWYgZW51bSA6IGludDhfdCB7Ci0gICAgICAgICAgICBhcHNyLAotICAgICAgICAgICAgZnBzY3IK
LSAgICAgICAgfSBTUFJlZ2lzdGVySUQ7Ci0KLSAgICAgICAgdHlwZWRlZiBlbnVtIDogaW50OF90
IHsKLSAgICAgICAgICAgIGQwLAotICAgICAgICAgICAgZDEsCi0gICAgICAgICAgICBkMiwKLSAg
ICAgICAgICAgIGQzLAotICAgICAgICAgICAgZDQsCi0gICAgICAgICAgICBkNSwKLSAgICAgICAg
ICAgIGQ2LAotICAgICAgICAgICAgZDcsCi0gICAgICAgICAgICBkOCwKLSAgICAgICAgICAgIGQ5
LAotICAgICAgICAgICAgZDEwLAotICAgICAgICAgICAgZDExLAotICAgICAgICAgICAgZDEyLAot
ICAgICAgICAgICAgZDEzLAotICAgICAgICAgICAgZDE0LAotICAgICAgICAgICAgZDE1LAotI2lm
IENQVShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotICAgICAgICAgICAgZDE2LAot
ICAgICAgICAgICAgZDE3LAotICAgICAgICAgICAgZDE4LAotICAgICAgICAgICAgZDE5LAotICAg
ICAgICAgICAgZDIwLAotICAgICAgICAgICAgZDIxLAotICAgICAgICAgICAgZDIyLAotICAgICAg
ICAgICAgZDIzLAotICAgICAgICAgICAgZDI0LAotICAgICAgICAgICAgZDI1LAotICAgICAgICAg
ICAgZDI2LAotICAgICAgICAgICAgZDI3LAotICAgICAgICAgICAgZDI4LAotICAgICAgICAgICAg
ZDI5LAotICAgICAgICAgICAgZDMwLAotICAgICAgICAgICAgZDMxLAotI2VuZGlmIC8vIENQVShB
Uk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotICAgICAgICAgICAgSW52YWxpZEZQUlJl
ZyA9IC0xLAotICAgICAgICB9IEZQUmVnaXN0ZXJJRDsKLQotICAgIH0gLy8gbmFtZXNwYWNlIEFS
TVJlZ2lzdGVycwotCi0gICAgY2xhc3MgQVJNQXNzZW1ibGVyIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIHR5cGVkZWYgQVJNUmVnaXN0ZXJzOjpSZWdpc3RlcklEIFJlZ2lzdGVySUQ7Ci0gICAgICAg
IHR5cGVkZWYgQVJNUmVnaXN0ZXJzOjpTUFJlZ2lzdGVySUQgU1BSZWdpc3RlcklEOwotICAgICAg
ICB0eXBlZGVmIEFSTVJlZ2lzdGVyczo6RlBSZWdpc3RlcklEIEZQUmVnaXN0ZXJJRDsKLSAgICAg
ICAgdHlwZWRlZiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sPDIwNDgsIDQsIDQsIEFS
TUFzc2VtYmxlcj4gQVJNQnVmZmVyOwotICAgICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3RvcjxB
c3NlbWJsZXJMYWJlbCwgNjQ+IEp1bXBzOwotCi0gICAgICAgIEFSTUFzc2VtYmxlcigpCi0gICAg
ICAgICAgICA6IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KDEpCi0gICAgICAgIHsKLSAg
ICAgICAgfQotCi0gICAgICAgIEFSTUJ1ZmZlciYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7
IH0KLQotICAgICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZmlyc3RSZWdpc3Rlcigp
IHsgcmV0dXJuIEFSTVJlZ2lzdGVyczo6cjA7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBS
ZWdpc3RlcklEIGxhc3RSZWdpc3RlcigpIHsgcmV0dXJuIEFSTVJlZ2lzdGVyczo6cjE1OyB9Ci0g
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMoKSB7IHJl
dHVybiBsYXN0UmVnaXN0ZXIoKSAtIGZpcnN0UmVnaXN0ZXIoKSArIDE7IH0KLQotICAgICAgICBz
dGF0aWMgY29uc3RleHByIFNQUmVnaXN0ZXJJRCBmaXJzdFNQUmVnaXN0ZXIoKSB7IHJldHVybiBB
Uk1SZWdpc3RlcnM6OmFwc3I7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBTUFJlZ2lzdGVy
SUQgbGFzdFNQUmVnaXN0ZXIoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OmZwc2NyOyB9Ci0gICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZTUFJlZ2lzdGVycygpIHsgcmV0
dXJuIGxhc3RTUFJlZ2lzdGVyKCkgLSBmaXJzdFNQUmVnaXN0ZXIoKSArIDE7IH0KLQotICAgICAg
ICBzdGF0aWMgY29uc3RleHByIEZQUmVnaXN0ZXJJRCBmaXJzdEZQUmVnaXN0ZXIoKSB7IHJldHVy
biBBUk1SZWdpc3RlcnM6OmQwOyB9Ci0jaWYgQ1BVKEFSTV9ORU9OKSB8fCBDUFUoQVJNX1ZGUF9W
M19EMzIpCi0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRlBSZWdpc3RlcklEIGxhc3RGUFJlZ2lz
dGVyKCkgeyByZXR1cm4gQVJNUmVnaXN0ZXJzOjpkMzE7IH0KLSNlbHNlCi0gICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgRlBSZWdpc3RlcklEIGxhc3RGUFJlZ2lzdGVyKCkgeyByZXR1cm4gQVJNUmVn
aXN0ZXJzOjpkMTU7IH0KLSNlbmRpZgotICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG51bWJlck9mRlBSZWdpc3RlcnMoKSB7IHJldHVybiBsYXN0RlBSZWdpc3RlcigpIC0gZmlyc3RG
UFJlZ2lzdGVyKCkgKyAxOyB9Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGdwck5hbWUo
UmVnaXN0ZXJJRCBpZCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGlkID49IGZpcnN0
UmVnaXN0ZXIoKSAmJiBpZCA8PSBsYXN0UmVnaXN0ZXIoKSk7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgbmFtZUZvclJlZ2lzdGVyW251bWJlck9mUmVnaXN0ZXJzKCldID0g
ewotICAgICAgICAgICAgICAgICJyMCIsICJyMSIsICJyMiIsICJyMyIsCi0gICAgICAgICAgICAg
ICAgInI0IiwgInI1IiwgInI2IiwgInI3IiwKLSAgICAgICAgICAgICAgICAicjgiLCAicjkiLCAi
cjEwIiwgImZwIiwKLSAgICAgICAgICAgICAgICAiaXAiLCAic3AiLCAibHIiLCAicGMiCi0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltpZF07Ci0gICAg
ICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc3ByTmFtZShTUFJlZ2lzdGVySUQg
aWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChpZCA+PSBmaXJzdFNQUmVnaXN0ZXIo
KSAmJiBpZCA8PSBsYXN0U1BSZWdpc3RlcigpKTsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBuYW1lRm9yUmVnaXN0ZXJbbnVtYmVyT2ZTUFJlZ2lzdGVycygpXSA9IHsKLSAg
ICAgICAgICAgICAgICAiYXBzciIsICJmcHNjciIKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW2lkXTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVnaXN0ZXJJRCBpZCkKLSAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKGlkID49IGZpcnN0RlBSZWdpc3RlcigpICYmIGlkIDw9IGxhc3RGUFJlZ2lz
dGVyKCkpOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWVGb3JSZWdp
c3RlcltudW1iZXJPZkZQUmVnaXN0ZXJzKCldID0gewotICAgICAgICAgICAgICAgICJkMCIsICJk
MSIsICJkMiIsICJkMyIsCi0gICAgICAgICAgICAgICAgImQ0IiwgImQ1IiwgImQ2IiwgImQ3IiwK
LSAgICAgICAgICAgICAgICAiZDgiLCAiZDkiLCAiZDEwIiwgImQxMSIsCi0gICAgICAgICAgICAg
ICAgImQxMiIsICJkMTMiLCAiZDE0IiwgImQxNSIsCi0jaWYgQ1BVKEFSTV9ORU9OKSB8fCBDUFUo
QVJNX1ZGUF9WM19EMzIpCi0gICAgICAgICAgICAgICAgImQxNiIsICJkMTciLCAiZDE4IiwgImQx
OSIsCi0gICAgICAgICAgICAgICAgImQyMCIsICJkMjEiLCAiZDIyIiwgImQyMyIsCi0gICAgICAg
ICAgICAgICAgImQyNCIsICJkMjUiLCAiZDI2IiwgImQyNyIsCi0gICAgICAgICAgICAgICAgImQy
OCIsICJkMjkiLCAiZDMwIiwgImQzMSIKLSNlbmRpZiAvLyBDUFUoQVJNX05FT04pIHx8IENQVShB
Uk1fVkZQX1YzX0QzMikKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICByZXR1cm4gbmFtZUZv
clJlZ2lzdGVyW2lkXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFSTSBjb25kaXRpb25hbCBj
b25zdGFudHMKLSAgICAgICAgdHlwZWRlZiBlbnVtIHsKLSAgICAgICAgICAgIEVRID0gMHgwMDAw
MDAwMCwgLy8gWmVybyAvIEVxdWFsLgotICAgICAgICAgICAgTkUgPSAweDEwMDAwMDAwLCAvLyBO
b24temVybyAvIE5vdCBlcXVhbC4KLSAgICAgICAgICAgIENTID0gMHgyMDAwMDAwMCwgLy8gVW5z
aWduZWQgaGlnaGVyIG9yIHNhbWUuCi0gICAgICAgICAgICBDQyA9IDB4MzAwMDAwMDAsIC8vIFVu
c2lnbmVkIGxvd2VyLgotICAgICAgICAgICAgTUkgPSAweDQwMDAwMDAwLCAvLyBOZWdhdGl2ZS4K
LSAgICAgICAgICAgIFBMID0gMHg1MDAwMDAwMCwgLy8gUG9zaXRpdmUgb3IgemVyby4KLSAgICAg
ICAgICAgIFZTID0gMHg2MDAwMDAwMCwgLy8gT3ZlcmZsb3dlZC4KLSAgICAgICAgICAgIFZDID0g
MHg3MDAwMDAwMCwgLy8gTm90IG92ZXJmbG93ZWQuCi0gICAgICAgICAgICBISSA9IDB4ODAwMDAw
MDAsIC8vIFVuc2lnbmVkIGhpZ2hlci4KLSAgICAgICAgICAgIExTID0gMHg5MDAwMDAwMCwgLy8g
VW5zaWduZWQgbG93ZXIgb3Igc2FtZS4KLSAgICAgICAgICAgIEdFID0gMHhhMDAwMDAwMCwgLy8g
U2lnbmVkIGdyZWF0ZXIgdGhhbiBvciBlcXVhbC4KLSAgICAgICAgICAgIExUID0gMHhiMDAwMDAw
MCwgLy8gU2lnbmVkIGxlc3MgdGhhbi4KLSAgICAgICAgICAgIEdUID0gMHhjMDAwMDAwMCwgLy8g
U2lnbmVkIGdyZWF0ZXIgdGhhbi4KLSAgICAgICAgICAgIExFID0gMHhkMDAwMDAwMCwgLy8gU2ln
bmVkIGxlc3MgdGhhbiBvciBlcXVhbC4KLSAgICAgICAgICAgIEFMID0gMHhlMDAwMDAwMCAgLy8g
VW5jb25kaXRpb25hbCAvIEFsd2F5cyBleGVjdXRlLgotICAgICAgICB9IENvbmRpdGlvbjsKLQot
ICAgICAgICAvLyBBUk0gaW5zdHJ1Y3Rpb24gY29uc3RhbnRzCi0gICAgICAgIGVudW0gewotICAg
ICAgICAgICAgQU5EID0gKDB4MCA8PCAyMSksCi0gICAgICAgICAgICBFT1IgPSAoMHgxIDw8IDIx
KSwKLSAgICAgICAgICAgIFNVQiA9ICgweDIgPDwgMjEpLAotICAgICAgICAgICAgUlNCID0gKDB4
MyA8PCAyMSksCi0gICAgICAgICAgICBBREQgPSAoMHg0IDw8IDIxKSwKLSAgICAgICAgICAgIEFE
QyA9ICgweDUgPDwgMjEpLAotICAgICAgICAgICAgU0JDID0gKDB4NiA8PCAyMSksCi0gICAgICAg
ICAgICBSU0MgPSAoMHg3IDw8IDIxKSwKLSAgICAgICAgICAgIFRTVCA9ICgweDggPDwgMjEpLAot
ICAgICAgICAgICAgVEVRID0gKDB4OSA8PCAyMSksCi0gICAgICAgICAgICBDTVAgPSAoMHhhIDw8
IDIxKSwKLSAgICAgICAgICAgIENNTiA9ICgweGIgPDwgMjEpLAotICAgICAgICAgICAgT1JSID0g
KDB4YyA8PCAyMSksCi0gICAgICAgICAgICBNT1YgPSAoMHhkIDw8IDIxKSwKLSAgICAgICAgICAg
IEJJQyA9ICgweGUgPDwgMjEpLAotICAgICAgICAgICAgTVZOID0gKDB4ZiA8PCAyMSksCi0gICAg
ICAgICAgICBNVUwgPSAweDAwMDAwMDkwLAotICAgICAgICAgICAgTVVMTCA9IDB4MDBjMDAwOTAs
Ci0gICAgICAgICAgICBWTU9WX0Y2NCA9IDB4MGViMDBiNDAsCi0gICAgICAgICAgICBWQUREX0Y2
NCA9IDB4MGUzMDBiMDAsCi0gICAgICAgICAgICBWRElWX0Y2NCA9IDB4MGU4MDBiMDAsCi0gICAg
ICAgICAgICBWU1VCX0Y2NCA9IDB4MGUzMDBiNDAsCi0gICAgICAgICAgICBWTVVMX0Y2NCA9IDB4
MGUyMDBiMDAsCi0gICAgICAgICAgICBWQ01QX0Y2NCA9IDB4MGViNDBiNDAsCi0gICAgICAgICAg
ICBWU1FSVF9GNjQgPSAweDBlYjEwYmMwLAotICAgICAgICAgICAgVkFCU19GNjQgPSAweDBlYjAw
YmMwLAotICAgICAgICAgICAgVk5FR19GNjQgPSAweDBlYjEwYjQwLAotICAgICAgICAgICAgU1RN
REIgPSAweDA5MjAwMDAwLAotICAgICAgICAgICAgTERNSUEgPSAweDA4YjAwMDAwLAotICAgICAg
ICAgICAgQiA9IDB4MGEwMDAwMDAsCi0gICAgICAgICAgICBCTCA9IDB4MGIwMDAwMDAsCi0gICAg
ICAgICAgICBCWCA9IDB4MDEyZmZmMTAsCi0gICAgICAgICAgICBWTU9WX1ZGUDY0ID0gMHgwYzQw
MGExMCwKLSAgICAgICAgICAgIFZNT1ZfQVJNNjQgPSAweDBjNTAwYTEwLAotICAgICAgICAgICAg
Vk1PVl9WRlAzMiA9IDB4MGUwMDBhMTAsCi0gICAgICAgICAgICBWTU9WX0FSTTMyID0gMHgwZTEw
MGExMCwKLSAgICAgICAgICAgIFZDVlRfRjY0X1MzMiA9IDB4MGViODBiYzAsCi0gICAgICAgICAg
ICBWQ1ZUX1MzMl9GNjQgPSAweDBlYmQwYmMwLAotICAgICAgICAgICAgVkNWVF9VMzJfRjY0ID0g
MHgwZWJjMGJjMCwKLSAgICAgICAgICAgIFZDVlRfRjMyX0Y2NCA9IDB4MGViNzBiYzAsCi0gICAg
ICAgICAgICBWQ1ZUX0Y2NF9GMzIgPSAweDBlYjcwYWMwLAotICAgICAgICAgICAgVk1SU19BUFNS
ID0gMHgwZWYxZmExMCwKLSAgICAgICAgICAgIENMWiA9IDB4MDE2ZjBmMTAsCi0gICAgICAgICAg
ICBCS1BUID0gMHhlMTIwMDA3MCwKLSAgICAgICAgICAgIEJMWCA9IDB4MDEyZmZmMzAsCi0jaWYg
V1RGX0FSTV9BUkNIX0FUX0xFQVNUKDcpCi0gICAgICAgICAgICBNT1ZXID0gMHgwMzAwMDAwMCwK
LSAgICAgICAgICAgIE1PVlQgPSAweDAzNDAwMDAwLAotI2VuZGlmCi0gICAgICAgICAgICBOT1Ag
PSAweGUxYTAwMDAwLAotICAgICAgICAgICAgRE1CX1NZID0gMHhmNTdmZjA1ZiwKLSAgICAgICAg
ICAgIERNQl9JU0hTVCA9IDB4ZjU3ZmYwNWEsCi0jaWYgSEFWRShBUk1fSURJVl9JTlNUUlVDVElP
TlMpCi0gICAgICAgICAgICBTRElWID0gMHgwNzEwZjAxMCwKLSAgICAgICAgICAgIFVESVYgPSAw
eDA3MzBmMDEwLAotI2VuZGlmCi0gICAgICAgIH07Ci0KLSAgICAgICAgZW51bSB7Ci0gICAgICAg
ICAgICBPcDJJbW1lZGlhdGUgPSAoMSA8PCAyNSksCi0gICAgICAgICAgICBJbW1lZGlhdGVGb3JI
YWxmV29yZFRyYW5zZmVyID0gKDEgPDwgMjIpLAotICAgICAgICAgICAgT3AySW52ZXJ0ZWRJbW1l
ZGlhdGUgPSAoMSA8PCAyNiksCi0gICAgICAgICAgICBTZXRDb25kaXRpb25hbENvZGVzID0gKDEg
PDwgMjApLAotICAgICAgICAgICAgT3AySXNSZWdpc3RlckFyZ3VtZW50ID0gKDEgPDwgMjUpLAot
ICAgICAgICAgICAgLy8gRGF0YSB0cmFuc2ZlciBmbGFncy4KLSAgICAgICAgICAgIERhdGFUcmFu
c2ZlclVwID0gKDEgPDwgMjMpLAotICAgICAgICAgICAgRGF0YVRyYW5zZmVyV3JpdGVCYWNrID0g
KDEgPDwgMjEpLAotICAgICAgICAgICAgRGF0YVRyYW5zZmVyUG9zdFVwZGF0ZSA9ICgxIDw8IDI0
KSwKLSAgICAgICAgICAgIERhdGFUcmFuc2ZlckxvYWQgPSAoMSA8PCAyMCksCi0gICAgICAgICAg
ICBCeXRlRGF0YVRyYW5zZmVyID0gKDEgPDwgMjIpLAotICAgICAgICB9OwotCi0gICAgICAgIGVu
dW0gRGF0YVRyYW5zZmVyVHlwZUEgewotICAgICAgICAgICAgTG9hZFVpbnQzMiA9IDB4MDUwMDAw
MDAgfCBEYXRhVHJhbnNmZXJMb2FkLAotICAgICAgICAgICAgTG9hZFVpbnQ4ID0gMHgwNTQwMDAw
MCB8IERhdGFUcmFuc2ZlckxvYWQsCi0gICAgICAgICAgICBTdG9yZVVpbnQzMiA9IDB4MDUwMDAw
MDAsCi0gICAgICAgICAgICBTdG9yZVVpbnQ4ID0gMHgwNTQwMDAwMCwKLSAgICAgICAgfTsKLQot
ICAgICAgICBlbnVtIERhdGFUcmFuc2ZlclR5cGVCIHsKLSAgICAgICAgICAgIExvYWRVaW50MTYg
PSAweDAxMDAwMGIwIHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAgICAgICAgICAgIExvYWRJbnQxNiA9
IDB4MDEwMDAwZjAgfCBEYXRhVHJhbnNmZXJMb2FkLAotICAgICAgICAgICAgTG9hZEludDggPSAw
eDAxMDAwMGQwIHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAgICAgICAgICAgIFN0b3JlVWludDE2ID0g
MHgwMTAwMDBiMCwKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIERhdGFUcmFuc2ZlclR5cGVG
bG9hdCB7Ci0gICAgICAgICAgICBMb2FkRmxvYXQgPSAweDBkMDAwYTAwIHwgRGF0YVRyYW5zZmVy
TG9hZCwKLSAgICAgICAgICAgIExvYWREb3VibGUgPSAweDBkMDAwYjAwIHwgRGF0YVRyYW5zZmVy
TG9hZCwKLSAgICAgICAgICAgIFN0b3JlRmxvYXQgPSAweDBkMDAwYTAwLAotICAgICAgICAgICAg
U3RvcmVEb3VibGUgPSAweDBkMDAwYjAwLAotICAgICAgICB9OwotCi0gICAgICAgIC8vIE1hc2tz
IG9mIEFSTSBpbnN0cnVjdGlvbnMKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBCcmFuY2hP
ZmZzZXRNYXNrID0gMHgwMGZmZmZmZiwKLSAgICAgICAgICAgIENvbmRpdGlvbmFsRmllbGRNYXNr
ID0gMHhmMDAwMDAwMCwKLSAgICAgICAgICAgIERhdGFUcmFuc2Zlck9mZnNldE1hc2sgPSAweGZm
ZiwKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE1pbmltdW1CcmFu
Y2hPZmZzZXREaXN0YW5jZSA9IC0weDAwODAwMDAwLAotICAgICAgICAgICAgTWF4aW11bUJyYW5j
aE9mZnNldERpc3RhbmNlID0gMHgwMDdmZmZmZiwKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVt
IHsKLSAgICAgICAgICAgIHBhZEZvckFsaWduOCAgPSAweDAwLAotICAgICAgICAgICAgcGFkRm9y
QWxpZ24xNiA9IDB4MDAwMCwKLSAgICAgICAgICAgIHBhZEZvckFsaWduMzIgPSAweGUxMmZmZjdm
IC8vICdia3B0IDB4ZmZmZicgaW5zdHJ1Y3Rpb24uCi0gICAgICAgIH07Ci0KLSAgICAgICAgc3Rh
dGljIGNvbnN0IEFSTVdvcmQgSW52YWxpZEltbWVkaWF0ZSA9IDB4ZjAwMDAwMDA7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBBUk1Xb3JkIEludmFsaWRCcmFuY2hUYXJnZXQgPSAweGZmZmZmZmZmOwot
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IERlZmF1bHRQcmVmZXRjaE9mZnNldCA9IDI7Ci0KLSAg
ICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgQmx4SW5zdHJ1Y3Rpb25NYXNrID0gMHgwMTJmZmYz
MDsKLSAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgTGRyT3JBZGRJbnN0cnVjdGlvbk1hc2sg
PSAweDBmZjAwMDAwOwotICAgICAgICBzdGF0aWMgY29uc3QgQVJNV29yZCBMZHJQY0ltbWVkaWF0
ZUluc3RydWN0aW9uTWFzayA9IDB4MGY3ZjAwMDA7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEFS
TVdvcmQgQWRkSW1tZWRpYXRlSW5zdHJ1Y3Rpb24gPSAweDAyODAwMDAwOwotICAgICAgICBzdGF0
aWMgY29uc3QgQVJNV29yZCBCbHhJbnN0cnVjdGlvbiA9IDB4MDEyZmZmMzA7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBBUk1Xb3JkIExkckltbWVkaWF0ZUluc3RydWN0aW9uID0gMHgwNTkwMDAwMDsK
LSAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbiA9
IDB4MDUxZjAwMDA7Ci0KLSAgICAgICAgLy8gSW5zdHJ1Y3Rpb24gZm9ybWF0aW5nCi0KLSAgICAg
ICAgdm9pZCBlbWl0SW5zdHJ1Y3Rpb24oQVJNV29yZCBvcCwgaW50IHJkLCBpbnQgcm4sIEFSTVdv
cmQgb3AyKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoKChvcDIgJiB+T3AySW1tZWRp
YXRlKSA8PSAweGZmZikgfHwgKCgob3AyICYgfkltbWVkaWF0ZUZvckhhbGZXb3JkVHJhbnNmZXIp
IDw9IDB4ZmZmKSkpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KG9wIHwgUk4ocm4pIHwg
UkQocmQpIHwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZW1pdERvdWJsZVByZWNp
c2lvbkluc3RydWN0aW9uKEFSTVdvcmQgb3AsIGludCBkZCwgaW50IGRuLCBpbnQgZG0pCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCgoZGQgPj0gMCAmJiBkZCA8PSAzMSkgJiYgKGRuID49
IDAgJiYgZG4gPD0gMzEpICYmIChkbSA+PSAwICYmIGRtIDw9IDMxKSk7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5wdXRJbnQob3AgfCAoKGRkICYgMHhmKSA8PCAxMikgfCAoKGRkICYgMHgxMCkgPDwg
KDIyIC0gNCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGRuICYgMHhmKSA8
PCAxNikgfCAoKGRuICYgMHgxMCkgPDwgKDcgLSA0KSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IChkbSAmIDB4ZikgfCAoKGRtICYgMHgxMCkgPDwgKDUgLSA0KSkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdm9pZCBlbWl0U2luZ2xlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24oQVJNV29y
ZCBvcCwgaW50IHNkLCBpbnQgc24sIGludCBzbSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKChzZCA+PSAwICYmIHNkIDw9IDMxKSAmJiAoc24gPj0gMCAmJiBzbiA8PSAzMSkgJiYgKHNt
ID49IDAgJiYgc20gPD0gMzEpKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChvcCB8ICgo
c2QgPj4gMSkgPDwgMTIpIHwgKChzZCAmIDB4MSkgPDwgMjIpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAoKHNuID4+IDEpIDw8IDE2KSB8ICgoc24gJiAweDEpIDw8IDcpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc20gPj4gMSkgfCAoKHNtICYgMHgxKSA8PCA1
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGJpdEFuZChpbnQgcmQsIGludCBybiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0
SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEFORCwgcmQsIHJuLCBvcDIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCBiaXRBbmRzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29u
ZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0
b0FSTVdvcmQoY2MpIHwgQU5EIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBlb3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3Ay
LCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0
aW9uKHRvQVJNV29yZChjYykgfCBFT1IsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgZW9ycyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9
IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNj
KSB8IEVPUiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZvaWQgc3ViKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9u
IGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdv
cmQoY2MpIHwgU1VCLCByZCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHN1
YnMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBTVUIgfCBT
ZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIHJzYihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFJT
QiwgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCByc2JzKGludCByZCwg
aW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgUlNCIHwgU2V0Q29uZGl0aW9u
YWxDb2RlcywgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBhZGQoaW50
IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBBREQsIHJkLCBybiwg
b3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYWRkcyhpbnQgcmQsIGludCBybiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0
SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEFERCB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJk
LCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYWRjKGludCByZCwgaW50IHJu
LCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQURDLCByZCwgcm4sIG9wMik7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2b2lkIGFkY3MoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBD
b25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9u
KHRvQVJNV29yZChjYykgfCBBREMgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHNiYyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBv
cDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFNCQywgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdm9pZCBzYmNzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNj
ID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQo
Y2MpIHwgU0JDIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCByc2MoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRp
b24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJN
V29yZChjYykgfCBSU0MsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
cnNjcyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFJTQyB8
IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgdHN0KGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFRTVCB8IFNl
dENvbmRpdGlvbmFsQ29kZXMsIDAsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9p
ZCB0ZXEoaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVEVRIHwgU2V0Q29u
ZGl0aW9uYWxDb2RlcywgMCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNt
cChpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBDTVAgfCBTZXRDb25kaXRp
b25hbENvZGVzLCAwLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY21uKGlu
dCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IENNTiB8IFNldENvbmRpdGlvbmFs
Q29kZXMsIDAsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBvcnIoaW50IHJk
LCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBPUlIsIHJkLCBybiwgb3Ay
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgb3JycyhpbnQgcmQsIGludCBybiwgQVJNV29y
ZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5z
dHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE9SUiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBy
biwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbW92KGludCByZCwgQVJNV29yZCBv
cDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1PViwgcmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7Ci0g
ICAgICAgIH0KLQotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQotICAgICAgICB2b2lkIG1v
dncoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEFTU0VSVCgob3AyIHwgMHhmMGZmZikgPT0gMHhmMGZmZik7Ci0gICAgICAgICAg
ICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IE1PVlcgfCBSRChyZCkgfCBvcDIpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtb3Z0KGludCByZCwgQVJNV29yZCBvcDIsIENvbmRp
dGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoKG9wMiB8IDB4ZjBm
ZmYpID09IDB4ZjBmZmYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChj
YykgfCBNT1ZUIHwgUkQocmQpIHwgb3AyKTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAg
dm9pZCBtb3ZzKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1PViB8IFNl
dENvbmRpdGlvbmFsQ29kZXMsIHJkLCBBUk1SZWdpc3RlcnM6OnIwLCBvcDIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCBiaWMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRp
b24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJN
V29yZChjYykgfCBCSUMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
YmljcyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEJJQyB8
IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgbXZuKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1WTiwgcmQs
IEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG12bnMo
aW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgTVZOIHwgU2V0Q29uZGl0aW9u
YWxDb2RlcywgcmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2b2lkIG11bChpbnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAg
ICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBNVUwg
fCBSTihyZCkgfCBSUyhybikgfCBSTShybSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBt
dWxzKGludCByZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7
Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IE1VTCB8IFNldENv
bmRpdGlvbmFsQ29kZXMgfCBSTihyZCkgfCBSUyhybikgfCBSTShybSkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCBtdWxsKGludCByZGhpLCBpbnQgcmRsbywgaW50IHJuLCBpbnQgcm0sIENv
bmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQo
dG9BUk1Xb3JkKGNjKSB8IE1VTEwgfCBSTihyZGhpKSB8IFJEKHJkbG8pIHwgUlMocm4pIHwgUk0o
cm0pKTsKLSAgICAgICAgfQotCi0jaWYgSEFWRShBUk1fSURJVl9JTlNUUlVDVElPTlMpCi0gICAg
ICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KLSAgICAgICAgdm9pZCBzZGl2KGludCByZCwgaW50
IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWNfYXNzZXJ0KGRhdGFzaXplID09IDMyLCAic2RpdiBkYXRhc2l6ZSBtdXN0IGJlIDMyIGZv
ciBhcm12N3MiKTsKLSAgICAgICAgICAgIEFTU0VSVChyZCAhPSBBUk1SZWdpc3RlcnM6OnBjKTsK
LSAgICAgICAgICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAg
IEFTU0VSVChybSAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1
dEludCh0b0FSTVdvcmQoY2MpIHwgU0RJViB8IFJOKHJkKSB8IFJNKHJuKSB8IFJTKHJtKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2b2lkIHVkaXYoaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29u
ZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZCAhPSBBUk1S
ZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBj
KTsKLSAgICAgICAgICAgIEFTU0VSVChybSAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAg
ICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgVURJViB8IFJOKHJkKSB8IFJNKHJu
KSB8IFJTKHJtKSk7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgIHZvaWQgdm1vdl9mNjQo
aW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZNT1ZfRjY0
LCBkZCwgMCwgZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2YWRkX2Y2NChpbnQgZGQs
IGludCBkbiwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQUREX0Y2
NCwgZGQsIGRuLCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZkaXZfZjY0KGludCBk
ZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZESVZf
RjY0LCBkZCwgZG4sIGRtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdnN1Yl9mNjQoaW50
IGRkLCBpbnQgZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVlNV
Ql9GNjQsIGRkLCBkbiwgZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bXVsX2Y2NChp
bnQgZGQsIGludCBkbiwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBW
TVVMX0Y2NCwgZGQsIGRuLCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZjbXBfZjY0
KGludCBkZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQ01QX0Y2
NCwgZGQsIDAsIGRtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdnNxcnRfZjY0KGludCBk
ZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1p
dERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWU1FSVF9GNjQsIGRk
LCAwLCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZhYnNfZjY0KGludCBkZCwgaW50
IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdERvdWJs
ZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQUJTX0Y2NCwgZGQsIDAsIGRt
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdm5lZ19mNjQoaW50IGRkLCBpbnQgZG0sIENv
bmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lz
aW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZORUdfRjY0LCBkZCwgMCwgZG0pOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdm9pZCBsZHJJbW1lZGlhdGUoaW50IHJkLCBBUk1Xb3JkIGltbSwg
Q29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dElu
dFdpdGhDb25zdGFudEludCh0b0FSTVdvcmQoY2MpIHwgTG9hZFVpbnQzMiB8IERhdGFUcmFuc2Zl
clVwIHwgUk4oQVJNUmVnaXN0ZXJzOjpwYykgfCBSRChyZCksIGltbSwgdHJ1ZSk7Ci0gICAgICAg
IH0KLQotICAgICAgICB2b2lkIGxkclVuaXF1ZUltbWVkaWF0ZShpbnQgcmQsIEFSTVdvcmQgaW1t
LCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0
SW50V2l0aENvbnN0YW50SW50KHRvQVJNV29yZChjYykgfCBMb2FkVWludDMyIHwgRGF0YVRyYW5z
ZmVyVXAgfCBSTihBUk1SZWdpc3RlcnM6OnBjKSB8IFJEKHJkKSwgaW1tKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZvaWQgZHRyVXAoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQg
cmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSB8
IERhdGFUcmFuc2ZlclVwLCByZCwgcmIsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lk
IGR0clVwUmVnaXN0ZXIoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGlu
dCByYiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUgfCBEYXRhVHJhbnNm
ZXJVcCB8IE9wMklzUmVnaXN0ZXJBcmd1bWVudCwgcmQsIHJiLCBybSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIGR0ckRvd24oRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQg
cmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSwg
cmQsIHJiLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkdHJEb3duUmVnaXN0ZXIo
RGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBD
b25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9u
KHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUgfCBPcDJJc1JlZ2lzdGVyQXJndW1lbnQsIHJk
LCByYiwgcm0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBoYWxmRHRyVXAoRGF0YVRyYW5z
ZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRp
dGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9B
Uk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSB8IERhdGFUcmFuc2ZlclVwLCByZCwgcmIsIG9wMik7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGhhbGZEdHJVcFJlZ2lzdGVyKERhdGFUcmFuc2Zl
clR5cGVCIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNj
ID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQo
Y2MpIHwgdHJhbnNmZXJUeXBlIHwgRGF0YVRyYW5zZmVyVXAsIHJkLCBybiwgcm0pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdm9pZCBoYWxmRHRyRG93bihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2Zl
clR5cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJh
bnNmZXJUeXBlLCByZCwgcmIsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGhhbGZE
dHJEb3duUmVnaXN0ZXIoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGlu
dCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUsIHJkLCBybiwgcm0p
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkb3VibGVEdHJVcChEYXRhVHJhbnNmZXJUeXBl
RmxvYXQgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBB
TCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG9wMiA8PSAweGZmICYmIHJkIDw9IDE1
KTsKLSAgICAgICAgICAgIC8qIE9ubHkgZDAtZDE1IGFuZCBzMCwgczIsIHM0IC4uLiBzMzAgYXJl
IHN1cHBvcnRlZC4gKi8KLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2Mp
IHwgRGF0YVRyYW5zZmVyVXAgfCB0eXBlIHwgKHJkIDw8IDEyKSB8IFJOKHJiKSB8IG9wMik7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2b2lkIGRvdWJsZUR0ckRvd24oRGF0YVRyYW5zZmVyVHlwZUZs
b2F0IHR5cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChvcDIgPD0gMHhmZiAmJiByZCA8PSAxNSk7
Ci0gICAgICAgICAgICAvKiBPbmx5IGQwLWQxNSBhbmQgczAsIHMyLCBzNCAuLi4gczMwIGFyZSBz
dXBwb3J0ZWQuICovCi0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8
IHR5cGUgfCAocmQgPDwgMTIpIHwgUk4ocmIpIHwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgcHVzaChpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8PSAweGYpOwotICAgICAgICAgICAgbV9idWZmZXIu
cHV0SW50KHRvQVJNV29yZChjYykgfCBTdG9yZVVpbnQzMiB8IERhdGFUcmFuc2ZlcldyaXRlQmFj
ayB8IFJOKEFSTVJlZ2lzdGVyczo6c3ApIHwgUkQocmVnKSB8IDB4NCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIHBvcChpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8PSAweGYpOwotICAgICAgICAgICAgbV9i
dWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCAoTG9hZFVpbnQzMiBeIERhdGFUcmFuc2ZlclBv
c3RVcGRhdGUpIHwgRGF0YVRyYW5zZmVyVXAgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJEKHJl
ZykgfCAweDQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW5saW5lIHZvaWQgcG9rZShpbnQgcmVn
LCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZHRyRG93bihTdG9y
ZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpzcCwgMCwgcmVnLCBjYyk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpbmxpbmUgdm9pZCBwZWVrKGludCByZWcsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBkdHJVcChMb2FkVWludDMyLCByZWcsIEFSTVJlZ2lzdGVyczo6c3As
IDAsIGNjKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdm1vdl92ZnA2NChpbnQgc20sIGlu
dCBydCwgaW50IHJ0MiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVChydCAhPSBydDIpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29y
ZChjYykgfCBWTU9WX1ZGUDY0IHwgUk4ocnQyKSB8IFJEKHJ0KSB8IChzbSAmIDB4ZikgfCAoKHNt
ICYgMHgxMCkgPDwgKDUgLSA0KSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bW92X2Fy
bTY0KGludCBydCwgaW50IHJ0MiwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKHJ0ICE9IHJ0Mik7Ci0gICAgICAgICAgICBtX2J1ZmZlci5w
dXRJbnQodG9BUk1Xb3JkKGNjKSB8IFZNT1ZfQVJNNjQgfCBSTihydDIpIHwgUkQocnQpIHwgKHNt
ICYgMHhmKSB8ICgoc20gJiAweDEwKSA8PCAoNSAtIDQpKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2b2lkIHZtb3ZfdmZwMzIoaW50IHNuLCBpbnQgcnQsIENvbmRpdGlvbiBjYyA9IEFMKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocnQgPD0gMTUpOwotICAgICAgICAgICAgZW1pdFNp
bmdsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWTU9WX1ZGUDMyLCBydCA8
PCAxLCBzbiwgMCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZtb3ZfYXJtMzIoaW50IHJ0
LCBpbnQgc24sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQocnQgPD0gMTUpOwotICAgICAgICAgICAgZW1pdFNpbmdsZVByZWNpc2lvbkluc3RydWN0aW9u
KHRvQVJNV29yZChjYykgfCBWTU9WX0FSTTMyLCBydCA8PCAxLCBzbiwgMCk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIHZjdnRfZjY0X3MzMihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNj
ID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghKHNtICYgMHgxKSk7IC8vIHNt
IG11c3QgYmUgZGl2aXNpYmxlIGJ5IDIKLSAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25J
bnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVkNWVF9GNjRfUzMyLCBkZCwgMCwgKHNtID4+IDEp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdmN2dF9zMzJfZjY0KGludCBzZCwgaW50IGRt
LCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCEoc2Qg
JiAweDEpKTsgLy8gc2QgbXVzdCBiZSBkaXZpc2libGUgYnkgMgotICAgICAgICAgICAgZW1pdERv
dWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQ1ZUX1MzMl9GNjQsIChz
ZCA+PiAxKSwgMCwgZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2Y3Z0X3UzMl9mNjQo
aW50IHNkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQoIShzZCAmIDB4MSkpOyAvLyBzZCBtdXN0IGJlIGRpdmlzaWJsZSBieSAyCi0gICAg
ICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZD
VlRfVTMyX0Y2NCwgKHNkID4+IDEpLCAwLCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lk
IHZjdnRfZjY0X2YzMihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChkZCA8PSAxNSAmJiBzbSA8PSAxNSk7Ci0gICAgICAgICAg
ICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZDVlRfRjY0
X0YzMiwgZGQsIDAsIHNtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdmN2dF9mMzJfZjY0
KGludCBkZCwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKGRkIDw9IDE1ICYmIHNtIDw9IDE1KTsKLSAgICAgICAgICAgIGVtaXREb3VibGVQ
cmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVkNWVF9GMzJfRjY0LCBkZCwgMCwg
c20pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bXJzX2Fwc3IoQ29uZGl0aW9uIGNjID0g
QUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2Mp
IHwgVk1SU19BUFNSKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2x6KGludCByZCwgaW50
IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIu
cHV0SW50KHRvQVJNV29yZChjYykgfCBDTFogfCBSRChyZCkgfCBSTShybSkpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCBia3B0KEFSTVdvcmQgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG1fYnVmZmVyLnB1dEludChCS1BUIHwgKCh2YWx1ZSAmIDB4ZmYwKSA8PCA0KSB8ICh2YWx1
ZSAmIDB4ZikpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgaXNCa3B0KHZvaWQq
IGFkZHJlc3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQgZXhwZWN0ZWQgPSBCS1BU
OwotICAgICAgICAgICAgQVJNV29yZCBpbW1lZGlhdGVNYXNrID0gKDB4ZmYwIDw8IDQpIHwgMHhm
OwotICAgICAgICAgICAgQVJNV29yZCBjYW5kaWRhdGVJbnN0cnVjdGlvbiA9ICpyZWludGVycHJl
dF9jYXN0PEFSTVdvcmQqPihhZGRyZXNzKTsKLSAgICAgICAgICAgIHJldHVybiAoY2FuZGlkYXRl
SW5zdHJ1Y3Rpb24gJiB+aW1tZWRpYXRlTWFzaykgPT0gZXhwZWN0ZWQ7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIG5vcCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dElu
dChOT1ApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvcHlGdW5j
dGlvbj4KLSAgICAgICAgc3RhdGljIHZvaWQgZmlsbE5vcHModm9pZCogYmFzZSwgc2l6ZV90IHNp
emUsIENvcHlGdW5jdGlvbiBjb3B5KQotICAgICAgICB7Ci0gICAgICAgICAgICBVTlVTRURfUEFS
QU0oY29weSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHNpemUgJSBzaXplb2YoaW50
MzJfdCkpKTsKLQotICAgICAgICAgICAgaW50MzJfdCogcHRyID0gc3RhdGljX2Nhc3Q8aW50MzJf
dCo+KGJhc2UpOwotICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bTMycyA9IHNpemUgLyBzaXpl
b2YoaW50MzJfdCk7Ci0gICAgICAgICAgICBjb25zdCBpbnQzMl90IGluc24gPSBOT1A7Ci0gICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bTMyczsgaSsrKQotICAgICAgICAgICAg
ICAgICpwdHIrKyA9IGluc247Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRtYlNZKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KERNQl9TWSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIGRtYklTSFNUKCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZm
ZXIucHV0SW50KERNQl9JU0hTVCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGJ4KGludCBy
bSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVj
dGlvbih0b0FSTVdvcmQoY2MpIHwgQlgsIDAsIDAsIFJNKHJtKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBBc3NlbWJsZXJMYWJlbCBibHgoaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBCTFgsIDAs
IDAsIFJNKHJtKSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIGxzbChpbnQgcmVnLCBBUk1Xb3JkIHZhbHVl
KQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMp
OwotICAgICAgICAgICAgQVNTRVJUKHZhbHVlIDw9IDB4MWYpOwotICAgICAgICAgICAgcmV0dXJu
IHJlZyB8ICh2YWx1ZSA8PCA3KSB8IDB4MDA7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMg
QVJNV29yZCBsc3IoaW50IHJlZywgQVJNV29yZCB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKHJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVCh2
YWx1ZSA8PSAweDFmKTsKLSAgICAgICAgICAgIHJldHVybiByZWcgfCAodmFsdWUgPDwgNykgfCAw
eDIwOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQgYXNyKGludCByZWcsIEFS
TVdvcmQgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVn
aXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICBBU1NFUlQodmFsdWUgPD0gMHgxZik7Ci0gICAgICAg
ICAgICByZXR1cm4gcmVnIHwgKHZhbHVlIDw8IDcpIHwgMHg0MDsKLSAgICAgICAgfQotCi0gICAg
ICAgIHN0YXRpYyBBUk1Xb3JkIGxzbFJlZ2lzdGVyKGludCByZWcsIGludCBzaGlmdFJlZykKLSAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAg
ICAgICAgICAgIEFTU0VSVChzaGlmdFJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAg
ICAgIHJldHVybiByZWcgfCAoc2hpZnRSZWcgPDwgOCkgfCAweDEwOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc3RhdGljIEFSTVdvcmQgbHNyUmVnaXN0ZXIoaW50IHJlZywgaW50IHNoaWZ0UmVnKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwot
ICAgICAgICAgICAgQVNTRVJUKHNoaWZ0UmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAg
ICAgICAgcmV0dXJuIHJlZyB8IChzaGlmdFJlZyA8PCA4KSB8IDB4MzA7Ci0gICAgICAgIH0KLQot
ICAgICAgICBzdGF0aWMgQVJNV29yZCBhc3JSZWdpc3RlcihpbnQgcmVnLCBpbnQgc2hpZnRSZWcp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7
Ci0gICAgICAgICAgICBBU1NFUlQoc2hpZnRSZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAg
ICAgICAgICByZXR1cm4gcmVnIHwgKHNoaWZ0UmVnIDw8IDgpIHwgMHg1MDsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIEdlbmVyYWwgaGVscGVycwotCi0gICAgICAgIHNpemVfdCBjb2RlU2l6ZSgp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2J1ZmZlci5jb2RlU2l6ZSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBlbnN1cmVTcGFjZShpbnQgaW5zblNwYWNlLCBp
bnQgY29uc3RTcGFjZSkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3Bh
Y2UoaW5zblNwYWNlLCBjb25zdFNwYWNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBzaXpl
T2ZDb25zdGFudFBvb2woKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXIu
c2l6ZU9mQ29uc3RhbnRQb29sKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3NlbWJsZXJMYWJl
bCBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1
ZmZlci5lbnN1cmVTcGFjZUZvckFueUluc3RydWN0aW9uKCk7Ci0gICAgICAgICAgICByZXR1cm4g
bV9idWZmZXIubGFiZWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFzc2VtYmxlckxhYmVsIGxh
YmVsRm9yV2F0Y2hwb2ludCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3Vy
ZVNwYWNlRm9yQW55SW5zdHJ1Y3Rpb24obWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpIC8gc2l6ZW9m
KEFSTVdvcmQpKTsKLSAgICAgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVy
LmxhYmVsKCk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IChtX2luZGV4T2ZU
YWlsT2ZMYXN0V2F0Y2hwb2ludCAtIG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSkpCi0gICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKLSAgICAgICAgICAgIG1faW5kZXhPZlRhaWxPZkxh
c3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
OwotICAgICAgICAgICAgcmV0dXJuIGxhYmVsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3Nl
bWJsZXJMYWJlbCBsYWJlbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFzc2VtYmxlckxhYmVs
IHJlc3VsdCA9IGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwotICAgICAgICAgICAgd2hpbGUg
KHJlc3VsdC5tX29mZnNldCArIDEgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCkgewot
ICAgICAgICAgICAgICAgIG5vcCgpOwotICAgICAgICAgICAgICAgIC8vIFRoZSBhdmFpbGFibGUg
bnVtYmVyIG9mIGluc3RydWN0aW9ucyBhcmUgZW5zdXJlZCBieSBsYWJlbEZvcldhdGNocG9pbnQu
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3Nl
bWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB3
aGlsZSAoIW1fYnVmZmVyLmlzQWxpZ25lZChhbGlnbm1lbnQpKQotICAgICAgICAgICAgICAgIG1v
dihBUk1SZWdpc3RlcnM6OnIwLCBBUk1SZWdpc3RlcnM6OnIwKTsKLQotICAgICAgICAgICAgcmV0
dXJuIGxhYmVsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3NlbWJsZXJMYWJlbCBsb2FkQnJh
bmNoVGFyZ2V0KGludCByZCwgQ29uZGl0aW9uIGNjID0gQUwsIGludCB1c2VDb25zdGFudFBvb2wg
PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbnN1cmVTcGFjZShzaXplb2YoQVJNV29yZCks
IHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAgICAgICBtX2p1bXBzLmFwcGVuZChtX2J1ZmZlci5j
b2RlU2l6ZSgpIHwgKHVzZUNvbnN0YW50UG9vbCAmIDB4MSkpOwotICAgICAgICAgICAgbGRyVW5p
cXVlSW1tZWRpYXRlKHJkLCBJbnZhbGlkQnJhbmNoVGFyZ2V0LCBjYyk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFzc2VtYmxlckxh
YmVsIGptcChDb25kaXRpb24gY2MgPSBBTCwgaW50IHVzZUNvbnN0YW50UG9vbCA9IDApCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsb2FkQnJhbmNoVGFyZ2V0KEFSTVJlZ2lzdGVyczo6
cGMsIGNjLCB1c2VDb25zdGFudFBvb2wpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBwcmVw
YXJlRXhlY3V0YWJsZUNvcHkodm9pZCogdG8pOwotCi0gICAgICAgIHVuc2lnbmVkIGRlYnVnT2Zm
c2V0KCkgeyByZXR1cm4gbV9idWZmZXIuZGVidWdPZmZzZXQoKTsgfQotCi0gICAgICAgIC8vIERG
RyBhc3NlbWJseSBoZWxwZXJzIGZvciBtb3ZpbmcgZGF0YSBiZXR3ZWVuIGZwIGFuZCByZWdpc3Rl
cnMuCi0gICAgICAgIHZvaWQgdm1vdihSZWdpc3RlcklEIHJkMSwgUmVnaXN0ZXJJRCByZDIsIEZQ
UmVnaXN0ZXJJRCBybikKLSAgICAgICAgewotICAgICAgICAgICAgdm1vdl9hcm02NChyZDEsIHJk
Miwgcm4pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bW92KEZQUmVnaXN0ZXJJRCByZCwg
UmVnaXN0ZXJJRCBybjEsIFJlZ2lzdGVySUQgcm4yKQotICAgICAgICB7Ci0gICAgICAgICAgICB2
bW92X3ZmcDY0KHJkLCBybjEsIHJuMik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQYXRjaGlu
ZyBoZWxwZXJzCi0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQqIGdldExkckltbUFkZHJlc3MoQVJN
V29yZCogaW5zbikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNhbGwKLSAg
ICAgICAgICAgIGlmICgoKmluc24gJiBMZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9uTWFzaykgIT0g
TGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbikgewotICAgICAgICAgICAgICAgIC8vIE11c3QgYmUg
QkxYCi0gICAgICAgICAgICAgICAgQVNTRVJUKCgqaW5zbiAmIEJseEluc3RydWN0aW9uTWFzaykg
PT0gQmx4SW5zdHJ1Y3Rpb24pOwotICAgICAgICAgICAgICAgIGluc24tLTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgLy8gTXVzdCBiZSBhbiBsZHIgLi4uLCBbcGMgKy8tIGltbV0KLSAg
ICAgICAgICAgIEFTU0VSVCgoKmluc24gJiBMZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9uTWFzaykg
PT0gTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbik7Ci0KLSAgICAgICAgICAgIEFSTVdvcmQgYWRk
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oaW5zbikgKyBEZWZhdWx0UHJlZmV0Y2hPZmZz
ZXQgKiBzaXplb2YoQVJNV29yZCk7Ci0gICAgICAgICAgICBpZiAoKmluc24gJiBEYXRhVHJhbnNm
ZXJVcCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4o
YWRkciArICgqaW5zbiAmIERhdGFUcmFuc2Zlck9mZnNldE1hc2spKTsKLSAgICAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEFSTVdvcmQqPihhZGRyIC0gKCppbnNuICYgRGF0YVRyYW5z
ZmVyT2Zmc2V0TWFzaykpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQqIGdl
dExkckltbUFkZHJlc3NPblBvb2woQVJNV29yZCogaW5zbiwgdWludDMyX3QqIGNvbnN0UG9vbCkK
LSAgICAgICAgewotICAgICAgICAgICAgLy8gTXVzdCBiZSBhbiBsZHIgLi4uLCBbcGMgKy8tIGlt
bV0KLSAgICAgICAgICAgIEFTU0VSVCgoKmluc24gJiBMZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9u
TWFzaykgPT0gTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbik7Ci0KLSAgICAgICAgICAgIGlmICgq
aW5zbiAmIDB4MSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUk1X
b3JkKj4oY29uc3RQb29sICsgKCgqaW5zbiAmIERhdGFUcmFuc2Zlck9mZnNldE1hc2spID4+IDEp
KTsKLSAgICAgICAgICAgIHJldHVybiBnZXRMZHJJbW1BZGRyZXNzKGluc24pOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hQb2ludGVySW50ZXJuYWwoaW50cHRyX3QgZnJv
bSwgdm9pZCogdG8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQqIGluc24gPSByZWlu
dGVycHJldF9jYXN0PEFSTVdvcmQqPihmcm9tKTsKLSAgICAgICAgICAgIEFSTVdvcmQqIGFkZHIg
PSBnZXRMZHJJbW1BZGRyZXNzKGluc24pOwotICAgICAgICAgICAgKmFkZHIgPSByZWludGVycHJl
dF9jYXN0PEFSTVdvcmQ+KHRvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3Jk
IHBhdGNoQ29uc3RhbnRQb29sTG9hZChBUk1Xb3JkIGxvYWQsIEFSTVdvcmQgdmFsdWUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHZhbHVlID0gKHZhbHVlIDw8IDEpICsgMTsKLSAgICAgICAgICAg
IEFTU0VSVCghKHZhbHVlICYgfkRhdGFUcmFuc2Zlck9mZnNldE1hc2spKTsKLSAgICAgICAgICAg
IHJldHVybiAobG9hZCAmIH5EYXRhVHJhbnNmZXJPZmZzZXRNYXNrKSB8IHZhbHVlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hDb25zdGFudFBvb2xMb2FkKHZvaWQqIGxv
YWRBZGRyLCB2b2lkKiBjb25zdFBvb2xBZGRyKTsKLQotICAgICAgICAvLyBSZWFkIHBvaW50ZXJz
Ci0gICAgICAgIHN0YXRpYyB2b2lkKiByZWFkUG9pbnRlcih2b2lkKiBmcm9tKQotICAgICAgICB7
Ci0gICAgICAgICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJN
V29yZCo+KGZyb20pOwotICAgICAgICAgICAgQVJNV29yZCogYWRkcmVzcyA9IGdldExkckltbUFk
ZHJlc3MoaW5zdHJ1Y3Rpb24pOwotICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PHZvaWQqKj4oYWRkcmVzcyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQYXRjaCBwb2ludGVy
cwotCi0gICAgICAgIHN0YXRpYyB2b2lkIGxpbmtQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxl
ckxhYmVsIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50
ZXJJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb2RlKSArIGZyb20ubV9vZmZz
ZXQsIHRvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hJbnQzMih2
b2lkKiB3aGVyZSwgaW50MzJfdCB0bykKLSAgICAgICAgewotICAgICAgICAgICAgcGF0Y2hQb2lu
dGVySW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4od2hlcmUpLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPih0bykpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcmVw
YXRjaENvbXBhY3Qodm9pZCogd2hlcmUsIGludDMyX3QgdmFsdWUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEFSTVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4o
d2hlcmUpOwotICAgICAgICAgICAgQVNTRVJUKCgqaW5zdHJ1Y3Rpb24gJiAweDBmNzAwMDAwKSA9
PSBMb2FkVWludDMyKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA+PSAwKQotICAgICAgICAgICAg
ICAgICppbnN0cnVjdGlvbiA9ICgqaW5zdHJ1Y3Rpb24gJiAweGZmN2ZmMDAwKSB8IERhdGFUcmFu
c2ZlclVwIHwgdmFsdWU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKmluc3Ry
dWN0aW9uID0gKCppbnN0cnVjdGlvbiAmIDB4ZmY3ZmYwMDApIHwgLXZhbHVlOwotICAgICAgICAg
ICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hQb2ludGVyKHZvaWQqIGZyb20sIHZvaWQqIHRv
KQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChyZWludGVycHJl
dF9jYXN0PGludHB0cl90Pihmcm9tKSwgdG8pOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTGlu
a2VycwotICAgICAgICBzdGF0aWMgaW50cHRyX3QgZ2V0QWJzb2x1dGVKdW1wQWRkcmVzcyh2b2lk
KiBiYXNlLCBpbnQgb2Zmc2V0ID0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGJhc2UpICsgb2Zmc2V0IC0gc2l6ZW9mKEFSTVdvcmQp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBsaW5rSnVtcChBc3NlbWJsZXJMYWJlbCBmcm9t
LCBBc3NlbWJsZXJMYWJlbCB0bykKLSAgICAgICAgewotICAgICAgICAgICAgQVJNV29yZCogaW5z
biA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGdldEFic29sdXRlSnVtcEFkZHJlc3MobV9i
dWZmZXIuZGF0YSgpLCBmcm9tLm1fb2Zmc2V0KSk7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBhZGRy
ID0gZ2V0TGRySW1tQWRkcmVzc09uUG9vbChpbnNuLCBtX2J1ZmZlci5wb29sQWRkcmVzcygpKTsK
LSAgICAgICAgICAgICphZGRyID0gdG9BUk1Xb3JkKHRvLm1fb2Zmc2V0KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGxpbmtKdW1wKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVs
IGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRl
cm5hbChnZXRBYnNvbHV0ZUp1bXBBZGRyZXNzKGNvZGUsIGZyb20ubV9vZmZzZXQpLCB0byk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCByZWxpbmtKdW1wKHZvaWQqIGZyb20sIHZv
aWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChnZXRB
YnNvbHV0ZUp1bXBBZGRyZXNzKGZyb20pLCB0byk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0
aWMgdm9pZCByZWxpbmtKdW1wVG9Ob3Aodm9pZCogZnJvbSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmVsaW5rSnVtcChmcm9tLCBmcm9tKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB2
b2lkIGxpbmtDYWxsKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRvKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChnZXRBYnNvbHV0ZUp1
bXBBZGRyZXNzKGNvZGUsIGZyb20ubV9vZmZzZXQpLCB0byk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzdGF0aWMgdm9pZCByZWxpbmtDYWxsKHZvaWQqIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7
Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChnZXRBYnNvbHV0ZUp1bXBBZGRyZXNz
KGZyb20pLCB0byk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCogcmVhZENhbGxU
YXJnZXQodm9pZCogZnJvbSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHJlYWRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEFi
c29sdXRlSnVtcEFkZHJlc3MoZnJvbSkpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMg
dm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRf
Y2FzdDxBUk1Xb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAgICAgICBpbnRwdHJfdCBk
aWZmZXJlbmNlID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pIC0gKHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGluc3RydWN0aW9uKSArIERlZmF1bHRQcmVmZXRjaE9mZnNldCAqIHNp
emVvZihBUk1Xb3JkKSk7Ci0KLSAgICAgICAgICAgIGlmICghKGRpZmZlcmVuY2UgJiAxKSkgewot
ICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UgPj49IDI7Ci0gICAgICAgICAgICAgICAgaWYgKChk
aWZmZXJlbmNlIDw9IE1heGltdW1CcmFuY2hPZmZzZXREaXN0YW5jZSAmJiBkaWZmZXJlbmNlID49
IE1pbmltdW1CcmFuY2hPZmZzZXREaXN0YW5jZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgIC8v
IERpcmVjdCBicmFuY2guCi0gICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvblswXSA9IEIg
fCBBTCB8IChkaWZmZXJlbmNlICYgQnJhbmNoT2Zmc2V0TWFzayk7Ci0gICAgICAgICAgICAgICAg
ICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2YoQVJNV29yZCkpOwotICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgLy8gTG9hZCB0YXJnZXQuCi0gICAgICAgICAgICBpbnN0cnVjdGlvblswXSA9
IExvYWRVaW50MzIgfCBBTCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQoQVJNUmVnaXN0ZXJz
OjpwYykgfCA0OwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSByZWludGVycHJldF9jYXN0
PEFSTVdvcmQ+KHRvKTsKLSAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVv
ZihBUk1Xb3JkKSAqIDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBt
YXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHNp
emVvZihBUk1Xb3JkKSAqIDI7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3RleHBy
IHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBzaXplb2YoQVJNV29yZCkgKiAzOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZv
aWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEFSTVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3Jk
Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9u
LCBzaXplb2YoQVJNV29yZCkpOwotCi0gICAgICAgICAgICBBU1NFUlQoKCppbnN0cnVjdGlvbiAm
IExkck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSA9PSBBZGRJbW1lZGlhdGVJbnN0cnVjdGlvbiB8fCAo
Kmluc3RydWN0aW9uICYgTGRyT3JBZGRJbnN0cnVjdGlvbk1hc2spID09IExkckltbWVkaWF0ZUlu
c3RydWN0aW9uKTsKLSAgICAgICAgICAgIGlmICgoKmluc3RydWN0aW9uICYgTGRyT3JBZGRJbnN0
cnVjdGlvbk1hc2spID09IEFkZEltbWVkaWF0ZUluc3RydWN0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgICppbnN0cnVjdGlvbiA9ICgqaW5zdHJ1Y3Rpb24gJiB+TGRyT3JBZGRJbnN0cnVjdGlvbk1h
c2spIHwgTGRySW1tZWRpYXRlSW5zdHJ1Y3Rpb247Ci0gICAgICAgICAgICAgICAgIGNhY2hlRmx1
c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2
b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQotICAgICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBp
bnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3RhcnQp
OwotICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKEFSTVdvcmQpKTsK
LQotICAgICAgICAgICAgQVNTRVJUKCgqaW5zdHJ1Y3Rpb24gJiBMZHJPckFkZEluc3RydWN0aW9u
TWFzaykgPT0gQWRkSW1tZWRpYXRlSW5zdHJ1Y3Rpb24gfHwgKCppbnN0cnVjdGlvbiAmIExkck9y
QWRkSW5zdHJ1Y3Rpb25NYXNrKSA9PSBMZHJJbW1lZGlhdGVJbnN0cnVjdGlvbik7Ci0gICAgICAg
ICAgICBpZiAoKCppbnN0cnVjdGlvbiAmIExkck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSA9PSBMZHJJ
bW1lZGlhdGVJbnN0cnVjdGlvbikgewotICAgICAgICAgICAgICAgICAqaW5zdHJ1Y3Rpb24gPSAo
Kmluc3RydWN0aW9uICYgfkxkck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSB8IEFkZEltbWVkaWF0ZUlu
c3RydWN0aW9uOwotICAgICAgICAgICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXpl
b2YoQVJNV29yZCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGlj
IHZvaWQgcmV2ZXJ0QnJhbmNoUHRyV2l0aFBhdGNoKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIFJl
Z2lzdGVySUQgcm4sIEFSTVdvcmQgaW1tKQotICAgICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3Jk
KiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3Rh
cnQpOwotCi0gICAgICAgICAgICBBU1NFUlQoKGluc3RydWN0aW9uWzJdICYgTGRyUGNJbW1lZGlh
dGVJbnN0cnVjdGlvbk1hc2spID09IExkclBjSW1tZWRpYXRlSW5zdHJ1Y3Rpb24pOwotICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSB0b0FSTVdvcmQoQUwpIHwgKChpbnN0cnVjdGlvblsyXSAm
IDB4MGZmZjBmZmYpICsgc2l6ZW9mKEFSTVdvcmQpKSB8IFJEKEFSTVJlZ2lzdGVyczo6UzEpOwot
ICAgICAgICAgICAgKmdldExkckltbUFkZHJlc3MoaW5zdHJ1Y3Rpb24pID0gaW1tOwotICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSB0b0FSTVdvcmQoQUwpIHwgQ01QIHwgU2V0Q29uZGl0aW9u
YWxDb2RlcyB8IFJOKHJuKSB8IFJNKEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICAgICAgY2Fj
aGVGbHVzaChpbnN0cnVjdGlvbiwgMiAqIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBBZGRyZXNzIG9wZXJhdGlvbnMKLQotICAgICAgICBzdGF0aWMgdm9pZCogZ2V0
UmVsb2NhdGVkQWRkcmVzcyh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBsYWJlbCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNvZGUpICsgbGFiZWwubV9vZmZzZXQpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gQWRkcmVzcyBkaWZmZXJlbmNlcwotCi0gICAgICAgIHN0YXRpYyBpbnQgZ2V0RGlm
ZmVyZW5jZUJldHdlZW5MYWJlbHMoQXNzZW1ibGVyTGFiZWwgYSwgQXNzZW1ibGVyTGFiZWwgYikK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGIubV9vZmZzZXQgLSBhLm1fb2Zmc2V0Owot
ICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQo
QXNzZW1ibGVyTGFiZWwgY2FsbCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNhbGwu
bV9vZmZzZXQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBIYW5kbGUgaW1tZWRpYXRlcwotCi0g
ICAgICAgIHN0YXRpYyBBUk1Xb3JkIGdldE9wMihBUk1Xb3JkIGltbSk7Ci0KLSAgICAgICAgLy8g
RmFzdCBjYXNlIGlmIGltbSBpcyBrbm93biB0byBiZSBiZXR3ZWVuIDAgYW5kIDB4ZmYKLSAgICAg
ICAgc3RhdGljIEFSTVdvcmQgZ2V0T3AyQnl0ZShBUk1Xb3JkIGltbSkKLSAgICAgICAgewotICAg
ICAgICAgICAgQVNTRVJUKGltbSA8PSAweGZmKTsKLSAgICAgICAgICAgIHJldHVybiBPcDJJbW1l
ZGlhdGUgfCBpbW07Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJNV29yZCBnZXRPcDJI
YWxmKEFSTVdvcmQgaW1tKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoaW1tIDw9IDB4
ZmYpOwotICAgICAgICAgICAgcmV0dXJuIEltbWVkaWF0ZUZvckhhbGZXb3JkVHJhbnNmZXIgfCAo
aW1tICYgMHgwZikgfCAoKGltbSAmIDB4ZjApIDw8IDQpOwotICAgICAgICB9Ci0KLSNpZiBXVEZf
QVJNX0FSQ0hfQVRfTEVBU1QoNykKLSAgICAgICAgc3RhdGljIEFSTVdvcmQgZ2V0SW1tMTZPcDIo
QVJNV29yZCBpbW0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpbW0gPD0gMHhmZmZmKQot
ICAgICAgICAgICAgICAgIHJldHVybiAoaW1tICYgMHhmMDAwKSA8PCA0IHwgKGltbSAmIDB4ZmZm
KTsKLSAgICAgICAgICAgIHJldHVybiBJbnZhbGlkSW1tZWRpYXRlOwotICAgICAgICB9Ci0jZW5k
aWYKLSAgICAgICAgQVJNV29yZCBnZXRJbW0oQVJNV29yZCBpbW0sIGludCB0bXBSZWcsIGJvb2wg
aW52ZXJ0ID0gZmFsc2UpOwotICAgICAgICB2b2lkIG1vdmVJbW0oQVJNV29yZCBpbW0sIGludCBk
ZXN0KTsKLSAgICAgICAgQVJNV29yZCBlbmNvZGVDb21wbGV4SW1tKEFSTVdvcmQgaW1tLCBpbnQg
ZGVzdCk7Ci0KLSAgICAgICAgLy8gTWVtb3J5IGxvYWQvc3RvcmUgaGVscGVycwotCi0gICAgICAg
IHZvaWQgZGF0YVRyYW5zZmVyMzIoRGF0YVRyYW5zZmVyVHlwZUEsIFJlZ2lzdGVySUQgc3JjRHN0
LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KTsKLSAgICAgICAgdm9pZCBiYXNlSW5k
ZXhUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGVBLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0KTsK
LSAgICAgICAgdm9pZCBkYXRhVHJhbnNmZXIxNihEYXRhVHJhbnNmZXJUeXBlQiwgUmVnaXN0ZXJJ
RCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpOwotICAgICAgICB2b2lk
IGJhc2VJbmRleFRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlwZUIsIFJlZ2lzdGVySUQgc3JjRHN0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50MzJfdCBv
ZmZzZXQpOwotICAgICAgICB2b2lkIGRhdGFUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVG
bG9hdCwgRlBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNl
dCk7Ci0gICAgICAgIHZvaWQgYmFzZUluZGV4VHJhbnNmZXJGbG9hdChEYXRhVHJhbnNmZXJUeXBl
RmxvYXQsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCk7Ci0KLSAgICAgICAgLy8gQ29uc3RhbnQg
cG9vbCBobmFkbGVycwotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIHBsYWNlQ29uc3RhbnRQb29s
QmFycmllcihpbnQgb2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBvZmZzZXQgPSAob2Zm
c2V0IC0gc2l6ZW9mKEFSTVdvcmQpKSA+PiAyOwotICAgICAgICAgICAgQVNTRVJUKChvZmZzZXQg
PD0gTWF4aW11bUJyYW5jaE9mZnNldERpc3RhbmNlICYmIG9mZnNldCA+PSBNaW5pbXVtQnJhbmNo
T2Zmc2V0RGlzdGFuY2UpKTsKLSAgICAgICAgICAgIHJldHVybiBBTCB8IEIgfCAob2Zmc2V0ICYg
QnJhbmNoT2Zmc2V0TWFzayk7Ci0gICAgICAgIH0KLQotI2lmIE9TKExJTlVYKSAmJiBDT01QSUxF
UihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIGxpbnV4UGFnZUZs
dXNoKHVpbnRwdHJfdCBiZWdpbiwgdWludHB0cl90IGVuZCkKLSAgICAgICAgewotICAgICAgICAg
ICAgYXNtIHZvbGF0aWxlKAotICAgICAgICAgICAgICAgICJwdXNoICAgIHtyN31cbiIKLSAgICAg
ICAgICAgICAgICAibW92ICAgICByMCwgJTBcbiIKLSAgICAgICAgICAgICAgICAibW92ICAgICBy
MSwgJTFcbiIKLSAgICAgICAgICAgICAgICAibW92ICAgICByNywgIzB4ZjAwMDBcbiIKLSAgICAg
ICAgICAgICAgICAiYWRkICAgICByNywgcjcsICMweDJcbiIKLSAgICAgICAgICAgICAgICAibW92
ICAgICByMiwgIzB4MFxuIgotICAgICAgICAgICAgICAgICJzdmMgICAgIDB4MFxuIgotICAgICAg
ICAgICAgICAgICJwb3AgICAgIHtyN31cbiIKLSAgICAgICAgICAgICAgICA6Ci0gICAgICAgICAg
ICAgICAgOiAiciIgKGJlZ2luKSwgInIiIChlbmQpCi0gICAgICAgICAgICAgICAgOiAicjAiLCAi
cjEiLCAicjIiKTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgc3RhdGljIHZvaWQgY2Fj
aGVGbHVzaCh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKLSAgICAgICAgewotI2lmIE9TKExJTlVY
KSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgICAgIHNpemVfdCBwYWdlID0g
cGFnZVNpemUoKTsKLSAgICAgICAgICAgIHVpbnRwdHJfdCBjdXJyZW50ID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KGNvZGUpOwotICAgICAgICAgICAgdWludHB0cl90IGVuZCA9IGN1cnJl
bnQgKyBzaXplOwotICAgICAgICAgICAgdWludHB0cl90IGZpcnN0UGFnZUVuZCA9IChjdXJyZW50
ICYgfihwYWdlIC0gMSkpICsgcGFnZTsKLQotICAgICAgICAgICAgaWYgKGVuZCA8PSBmaXJzdFBh
Z2VFbmQpIHsKLSAgICAgICAgICAgICAgICBsaW51eFBhZ2VGbHVzaChjdXJyZW50LCBlbmQpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbGlu
dXhQYWdlRmx1c2goY3VycmVudCwgZmlyc3RQYWdlRW5kKTsKLQotICAgICAgICAgICAgZm9yIChj
dXJyZW50ID0gZmlyc3RQYWdlRW5kOyBjdXJyZW50ICsgcGFnZSA8IGVuZDsgY3VycmVudCArPSBw
YWdlKQotICAgICAgICAgICAgICAgIGxpbnV4UGFnZUZsdXNoKGN1cnJlbnQsIGN1cnJlbnQgKyBw
YWdlKTsKLQotICAgICAgICAgICAgbGludXhQYWdlRmx1c2goY3VycmVudCwgZW5kKTsKLSNlbHNl
Ci0jZXJyb3IgIlRoZSBjYWNoZUZsdXNoIHN1cHBvcnQgaXMgbWlzc2luZyBvbiB0aGlzIHBsYXRm
b3JtLiIKLSNlbmRpZgotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMg
QVJNV29yZCBSTShpbnQgcmVnKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9
IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAgICAgICAgcmV0dXJuIHJlZzsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIFJTKGludCByZWcpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICByZXR1cm4g
cmVnIDw8IDg7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJNV29yZCBSRChpbnQgcmVn
KQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMp
OwotICAgICAgICAgICAgcmV0dXJuIHJlZyA8PCAxMjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0
YXRpYyBBUk1Xb3JkIFJOKGludCByZWcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChy
ZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICByZXR1cm4gcmVnIDw8IDE2Owot
ICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQgZ2V0Q29uZGl0aW9uYWxGaWVsZChB
Uk1Xb3JkIGkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpICYgQ29uZGl0aW9uYWxG
aWVsZE1hc2s7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJNV29yZCB0b0FSTVdvcmQo
Q29uZGl0aW9uIGNjKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
QVJNV29yZD4oY2MpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQgdG9BUk1X
b3JkKHVpbnQzMl90IHUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxBUk1Xb3JkPih1KTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBnZW5JbnQoaW50IHJlZywg
QVJNV29yZCBpbW0sIGJvb2wgcG9zaXRpdmUpOwotCi0gICAgICAgIEFSTUJ1ZmZlciBtX2J1ZmZl
cjsKLSAgICAgICAgSnVtcHMgbV9qdW1wczsKLSAgICAgICAgdWludDMyX3QgbV9pbmRleE9mVGFp
bE9mTGFzdFdhdGNocG9pbnQ7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKaW5kZXggZWExMDdmYjRk
OTAzNTNiODBkNWYyOGE4NTk4OWUyZjViZDRkMDdlNy4uYjIzNmE1YzgwMmNiNzc2YTJjYWRiYWE1
ZWJjZmU2YmQxZmIzYTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9MaW5rQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwCkBAIC0yOTgsOSArMjk4LDcgQEAgdm9pZCBMaW5rQnVmZmVyOjpsaW5r
Q29kZShNYWNyb0Fzc2VtYmxlciYgbWFjcm9Bc3NlbWJsZXIsIHZvaWQqIG93bmVyVUlELCBKSVRD
b20KICAgICBBU1NFUlQobV9jb2RlKTsKICAgICBBc3NlbWJsZXJCdWZmZXImIGJ1ZmZlciA9IG1h
Y3JvQXNzZW1ibGVyLm1fYXNzZW1ibGVyLmJ1ZmZlcigpOwogICAgIHZvaWQqIGNvZGUgPSBtX2Nv
ZGUuZGF0YUxvY2F0aW9uKCk7Ci0jaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAgICBtYWNyb0Fz
c2VtYmxlci5tX2Fzc2VtYmxlci5wcmVwYXJlRXhlY3V0YWJsZUNvcHkoY29kZSk7Ci0jZWxpZiBD
UFUoQVJNNjQpCisjaWYgQ1BVKEFSTTY0KQogICAgIFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBUb011
bHRpcGxlT2Y8QXNzZW1ibGVyOjppbnN0cnVjdGlvblNpemU+KGNvZGUpID09IGNvZGUpOwogI2Vu
ZGlmCiAgICAgcGVyZm9ybUpJVE1lbWNweShjb2RlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuY29k
ZVNpemUoKSk7CkBAIC00MDAsMjMgKzM5OCw2IEBAIHZvaWQgTGlua0J1ZmZlcjo6ZHVtcENvZGUo
dm9pZCogY29kZSwgc2l6ZV90IHNpemUpCiAgICAgICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0c2l6ZTsgaSsrKQogICAgICAgICBkYXRhTG9nRigiXHQuc2hvcnRcdDB4JXhcbiIs
IHRjb2RlW2ldKTsKLSNlbGlmIENQVShBUk1fVFJBRElUSU9OQUwpCi0gICAgLy8gICBnY2MgLWMg
aml0LnMKLSAgICAvLyAgIG9iamR1bXAgLUQgaml0Lm8KLSAgICBzdGF0aWMgdW5zaWduZWQgY29k
ZUNvdW50ID0gMDsKLSAgICB1bnNpZ25lZCBpbnQqIHRjb2RlID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50Kj4oY29kZSk7Ci0gICAgc2l6ZV90IHRzaXplID0gc2l6ZSAvIHNpemVvZih1bnNpZ25l
ZCBpbnQpOwotICAgIGNoYXIgbmFtZUJ1ZlsxMjhdOwotICAgIHNucHJpbnRmKG5hbWVCdWYsIHNp
emVvZihuYW1lQnVmKSwgIl9qc2Nfaml0JXUiLCBjb2RlQ291bnQrKyk7Ci0gICAgZGF0YUxvZ0Yo
Ilx0Lmdsb2JsXHQlc1xuIgotICAgICAgICAgICAgIlx0LmFsaWduIDRcbiIKLSAgICAgICAgICAg
ICJcdC5jb2RlIDMyXG4iCi0gICAgICAgICAgICAiXHQudGV4dFxuIgotICAgICAgICAgICAgIiMg
JXBcbiIKLSAgICAgICAgICAgICIlczpcbiIsIG5hbWVCdWYsIGNvZGUsIG5hbWVCdWYpOwotCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRzaXplOyBpKyspCi0gICAgICAgIGRhdGFMb2dG
KCJcdC5sb25nXHQweCV4XG4iLCB0Y29kZVtpXSk7CiAjZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGNk
MWI1NDU4MzI1MmE2ODA5ZmQ1NmZmMDlkOGFmMzU4NmNkNTk0MDguLjNhNzJjMjc5MjI0MGFiNjg2
NTY0NDU3MDk2MDUxMGU2ZTEwMjBkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTQ1LDExICs0NSw2IEBAIG5hbWVzcGFjZSBK
U0MgeyB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQVJNdjcgTWFjcm9Bc3NlbWJsZXJCYXNlOyB9Owog
I2RlZmluZSBUQVJHRVRfTUFDUk9BU1NFTUJMRVIgTWFjcm9Bc3NlbWJsZXJBUk02NAogI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyQVJNNjQuaCIKIAotI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkK
LSNkZWZpbmUgVEFSR0VUX0FTU0VNQkxFUiBBUk1Bc3NlbWJsZXIKLSNkZWZpbmUgVEFSR0VUX01B
Q1JPQVNTRU1CTEVSIE1hY3JvQXNzZW1ibGVyQVJNCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJB
Uk0uaCIKLQogI2VsaWYgQ1BVKE1JUFMpCiAjZGVmaW5lIFRBUkdFVF9BU1NFTUJMRVIgTUlQU0Fz
c2VtYmxlcgogI2RlZmluZSBUQVJHRVRfTUFDUk9BU1NFTUJMRVIgTWFjcm9Bc3NlbWJsZXJNSVBT
CkBAIC0xNDIsNyArMTM3LDcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9B
c3NlbWJsZXJCYXNlIHsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmFuZDMyOwogICAg
IHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoQWRkMzI7CiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hNdWwzMjsKLSNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhV
TUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoTUlQUykK
KyNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUo
TUlQUykKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaFB0cjsKICNlbmRpZgog
ICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoU3ViMzI7CkBAIC00MzQsNyArNDI5
LDYgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsK
ICAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNoMzJXaXRoUGF0Y2goY29uZCwgbGVm
dCwgZGF0YUxhYmVsLCBpbml0aWFsUmlnaHRWYWx1ZSkpOwogICAgIH0KIAotI2lmICFDUFUoQVJN
X1RSQURJVElPTkFMKQogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChqdW1wKCkpOwpAQCAtNDU5LDcgKzQ1Myw2IEBA
IGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAgICAg
ewogICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFuY2gzMihjb25kLCBhZGRyZXNzLCBp
bW0pKTsKICAgICB9Ci0jZW5kaWYKICNlbmRpZgogCiAgICAgdm9pZCBqdW1wKExhYmVsIHRhcmdl
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1NzRkNmMzNWYzMzMw
NTQ1ZDk2MGJjNjNjZWRhZGE1MDdkMmVmMDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NTMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBV
bml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJ
VElPTkFMKQotI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCi0KLSNpbmNsdWRlICJQcm9iZUNv
bnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+Ci0KLSNpZiBPUyhMSU5VWCkKLSNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPGZj
bnRsLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8ZWxmLmg+Ci0jaW5jbHVkZSA8
YXNtL2h3Y2FwLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXN0YXRpYyBib29sIGlz
VkZQUHJlc2VudCgpCi17Ci0jaWYgT1MoTElOVVgpCi0gICAgaW50IGZkID0gb3BlbigiL3Byb2Mv
c2VsZi9hdXh2IiwgT19SRE9OTFkpOwotICAgIGlmIChmZCAhPSAtMSkgewotICAgICAgICBFbGYz
Ml9hdXh2X3QgYXV4OwotICAgICAgICB3aGlsZSAocmVhZChmZCwgJmF1eCwgc2l6ZW9mKEVsZjMy
X2F1eHZfdCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV4LmFfdHlwZSA9PSBBVF9IV0NBUCkgewot
ICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gYXV4LmFf
dW4uYV92YWwgJiBIV0NBUF9WRlA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
Y2xvc2UoZmQpOwotICAgIH0KLSNlbmRpZiAvLyBPUyhMSU5VWCkKLQotI2lmIChDT01QSUxFUihH
Q0NfQ09NUEFUSUJMRSkgJiYgZGVmaW5lZChfX1ZGUF9GUF9fKSkKLSAgICByZXR1cm4gdHJ1ZTsK
LSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLWNvbnN0IGJvb2wgTWFjcm9B
c3NlbWJsZXJBUk06OnNfaXNWRlBQcmVzZW50ID0gaXNWRlBQcmVzZW50KCk7Ci0KLSNpZiBDUFUo
QVJNVjVfT1JfTE9XRVIpCi0vKiBPbiBBUk12NSBhbmQgYmVsb3csIG5hdHVyYWwgYWxpZ25tZW50
IGlzIHJlcXVpcmVkLiAqLwotdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZDMyV2l0aFVuYWxp
Z25lZEhhbGZXb3JkcyhCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotewotICAg
IEFSTVdvcmQgb3AyOwotCi0gICAgQVNTRVJUKGFkZHJlc3Muc2NhbGUgPj0gMCAmJiBhZGRyZXNz
LnNjYWxlIDw9IDMpOwotICAgIG9wMiA9IG1fYXNzZW1ibGVyLmxzbChhZGRyZXNzLmluZGV4LCBz
dGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpKTsKLQotICAgIGlmIChhZGRyZXNzLm9mZnNl
dCA+PSAwICYmIGFkZHJlc3Mub2Zmc2V0ICsgMHgyIDw9IDB4ZmYpIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3MuYmFzZSwgb3AyKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuaGFsZkR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgQVJN
UmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxmKGFkZHJlc3Mub2Zmc2V0KSk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJVcChBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYs
IEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
SGFsZihhZGRyZXNzLm9mZnNldCArIDB4MikpOwotICAgIH0gZWxzZSBpZiAoYWRkcmVzcy5vZmZz
ZXQgPCAwICYmIGFkZHJlc3Mub2Zmc2V0ID49IC0weGZmKSB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmFkZChBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIG9wMik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmhhbGZEdHJEb3duKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgQVJNUmVn
aXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxmKC1hZGRyZXNzLm9mZnNldCkpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5oYWxmRHRyRG93bihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYs
IEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
SGFsZigtYWRkcmVzcy5vZmZzZXQgLSAweDIpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZlSW1tKGFkZHJlc3Mub2Zmc2V0LCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIG9w
Mik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJVcFJlZ2lzdGVyKEFSTUFzc2VtYmxlcjo6
TG9hZFVpbnQxNiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFS
TUFzc2VtYmxlcjo6T3AySW1tZWRpYXRlIHwgMHgyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuaGFs
ZkR0clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBBUk1SZWdpc3RlcnM6OlMw
LCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIH0KLSAgICBtX2Fzc2VtYmxl
ci5vcnIoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIubHNsKEFSTVJlZ2lzdGVyczo6UzAsIDE2KSk7
Ci19Ci0jZW5kaWYgLy8gQ1BVKEFSTVY1X09SX0xPV0VSKQotCi0jaWYgRU5BQkxFKE1BU01fUFJP
QkUpCi0KLWV4dGVybiAiQyIgdm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKCk7Ci0KLXVzaW5n
IG5hbWVzcGFjZSBBUk1SZWdpc3RlcnM7Ci0KLSNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkK
LQotLy8gVGhlIGZvbGxvd2luZyBhcmUgb2Zmc2V0cyBmb3IgUHJvYmU6OlN0YXRlIGZpZWxkcyBh
Y2Nlc3NlZAotLy8gYnkgdGhlIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUgc3R1Yi4KLQotI2RlZmlu
ZSBQVFJfU0laRSA0Ci0jZGVmaW5lIFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCAoMCAqIFBU
Ul9TSVpFKQotI2RlZmluZSBQUk9CRV9BUkdfT0ZGU0VUICgxICogUFRSX1NJWkUpCi0jZGVmaW5l
IFBST0JFX0lOSVRfU1RBQ0tfRlVOQ1RJT05fT0ZGU0VUICgyICogUFRSX1NJWkUpCi0jZGVmaW5l
IFBST0JFX0lOSVRfU1RBQ0tfQVJHX09GRlNFVCAoMyAqIFBUUl9TSVpFKQotCi0jZGVmaW5lIFBS
T0JFX0ZJUlNUX0dQUkVHX09GRlNFVCAoNCAqIFBUUl9TSVpFKQotCi0jZGVmaW5lIEdQUkVHX1NJ
WkUgNAotI2RlZmluZSBQUk9CRV9DUFVfUjBfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZT
RVQgKyAoMCAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjFfT0ZGU0VUIChQUk9C
RV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMSAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9D
UFVfUjJfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMiAqIEdQUkVHX1NJWkUp
KQotI2RlZmluZSBQUk9CRV9DUFVfUjNfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQg
KyAoMyAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjRfT0ZGU0VUIChQUk9CRV9G
SVJTVF9HUFJFR19PRkZTRVQgKyAoNCAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVf
UjVfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoNSAqIEdQUkVHX1NJWkUpKQot
I2RlZmluZSBQUk9CRV9DUFVfUjZfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAo
NiAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjdfT0ZGU0VUIChQUk9CRV9GSVJT
VF9HUFJFR19PRkZTRVQgKyAoNyAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjhf
T0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoOCAqIEdQUkVHX1NJWkUpKQotI2Rl
ZmluZSBQUk9CRV9DUFVfUjlfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoOSAq
IEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjEwX09GRlNFVCAoUFJPQkVfRklSU1Rf
R1BSRUdfT0ZGU0VUICsgKDEwICogR1BSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9SMTFf
T0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTEgKiBHUFJFR19TSVpFKSkKLSNk
ZWZpbmUgUFJPQkVfQ1BVX0lQX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDEy
ICogR1BSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9TUF9PRkZTRVQgKFBST0JFX0ZJUlNU
X0dQUkVHX09GRlNFVCArICgxMyAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfTFJf
T0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTQgKiBHUFJFR19TSVpFKSkKLSNk
ZWZpbmUgUFJPQkVfQ1BVX1BDX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDE1
ICogR1BSRUdfU0laRSkpCi0KLSNkZWZpbmUgUFJPQkVfQ1BVX0FQU1JfT0ZGU0VUIChQUk9CRV9G
SVJTVF9HUFJFR19PRkZTRVQgKyAoMTYgKiBHUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BV
X0ZQU0NSX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDE3ICogR1BSRUdfU0la
RSkpCi0KLSNkZWZpbmUgUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJF
R19PRkZTRVQgKyAoMTggKiBHUFJFR19TSVpFKSkKLQotI2RlZmluZSBGUFJFR19TSVpFIDgKLSNk
ZWZpbmUgUFJPQkVfQ1BVX0QwX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDAg
KiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QxX09GRlNFVCAoUFJPQkVfRklSU1Rf
RlBSRUdfT0ZGU0VUICsgKDEgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QyX09G
RlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDIgKiBGUFJFR19TSVpFKSkKLSNkZWZp
bmUgUFJPQkVfQ1BVX0QzX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDMgKiBG
UFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q0X09GRlNFVCAoUFJPQkVfRklSU1RfRlBS
RUdfT0ZGU0VUICsgKDQgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q1X09GRlNF
VCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDUgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUg
UFJPQkVfQ1BVX0Q2X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDYgKiBGUFJF
R19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q3X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdf
T0ZGU0VUICsgKDcgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q4X09GRlNFVCAo
UFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDggKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJP
QkVfQ1BVX0Q5X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDkgKiBGUFJFR19T
SVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QxMF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09G
RlNFVCArICgxMCAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDExX09GRlNFVCAo
UFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDExICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBS
T0JFX0NQVV9EMTJfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTIgKiBGUFJF
R19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QxM19PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVH
X09GRlNFVCArICgxMyAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDE0X09GRlNF
VCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDE0ICogRlBSRUdfU0laRSkpCi0jZGVmaW5l
IFBST0JFX0NQVV9EMTVfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTUgKiBG
UFJFR19TSVpFKSkKLQotI2lmIENQVShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQot
I2RlZmluZSBQUk9CRV9DUFVfRDE2X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsg
KDE2ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMTdfT0ZGU0VUIChQUk9CRV9G
SVJTVF9GUFJFR19PRkZTRVQgKyAoMTcgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BV
X0QxOF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgxOCAqIEZQUkVHX1NJWkUp
KQotI2RlZmluZSBQUk9CRV9DUFVfRDE5X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VU
ICsgKDE5ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMjBfT0ZGU0VUIChQUk9C
RV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjAgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVf
Q1BVX0QyMV9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyMSAqIEZQUkVHX1NJ
WkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDIyX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZG
U0VUICsgKDIyICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMjNfT0ZGU0VUIChQ
Uk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjMgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJP
QkVfQ1BVX0QyNF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyNCAqIEZQUkVH
X1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDI1X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdf
T0ZGU0VUICsgKDI1ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMjZfT0ZGU0VU
IChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjYgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUg
UFJPQkVfQ1BVX0QyN19PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyNyAqIEZQ
UkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDI4X09GRlNFVCAoUFJPQkVfRklSU1RfRlBS
RUdfT0ZGU0VUICsgKDI4ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMjlfT0ZG
U0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjkgKiBGUFJFR19TSVpFKSkKLSNkZWZp
bmUgUFJPQkVfQ1BVX0QzMF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgzMCAq
IEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDMxX09GRlNFVCAoUFJPQkVfRklSU1Rf
RlBSRUdfT0ZGU0VUICsgKDMxICogRlBSRUdfU0laRSkpCi0KLSNkZWZpbmUgUFJPQkVfU0laRSAo
UFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDMyICogRlBSRUdfU0laRSkpCi0jZWxzZQotI2Rl
ZmluZSBQUk9CRV9TSVpFIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTYgKiBGUFJFR19T
SVpFKSkKLSNlbmRpZiAvLyBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikKLQot
I2RlZmluZSBPVVRfU0laRSBHUFJFR19TSVpFCi0KLS8vIFRoZXNlIEFTU0VSVHMgcmVtaW5kIHlv
dSB0aGF0IGlmIHlvdSBjaGFuZ2UgdGhlIGxheW91dCBvZiBQcm9iZTo6U3RhdGUsCi0vLyB5b3Ug
bmVlZCB0byBjaGFuZ2UgY3RpTWFzbVByb2JlVHJhbXBvbGluZSBvZmZzZXRzIGFib3ZlIHRvIG1h
dGNoLgotI2RlZmluZSBQUk9CRV9PRkZTRVRPRih4KSBvZmZzZXRvZihzdHJ1Y3QgUHJvYmU6OlN0
YXRlLCB4KQotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihwcm9iZUZ1bmN0aW9uKSA9PSBQ
Uk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OnByb2JlRnVuY3Rpb24n
cyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0
KFBST0JFX09GRlNFVE9GKGFyZykgPT0gUFJPQkVfQVJHX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6
YXJnJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fz
c2VydChQUk9CRV9PRkZTRVRPRihpbml0aWFsaXplU3RhY2tGdW5jdGlvbikgPT0gUFJPQkVfSU5J
VF9TVEFDS19GVU5DVElPTl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmluaXRpYWxpemVTdGFja0Z1
bmN0aW9uJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGlj
X2Fzc2VydChQUk9CRV9PRkZTRVRPRihpbml0aWFsaXplU3RhY2tBcmcpID09IFBST0JFX0lOSVRf
U1RBQ0tfQVJHX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6aW5pdGlhbGl6ZVN0YWNrQXJnJ3Mgb2Zm
c2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotCi1zdGF0aWNfYXNzZXJ0KCEo
UFJPQkVfQ1BVX1IwX09GRlNFVCAmIDB4MyksICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3IwXSdz
IG9mZnNldCBzaG91bGQgYmUgNCBieXRlIGFsaWduZWQiKTsKLQotc3RhdGljX2Fzc2VydChQUk9C
RV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIwXSkgPT0gUFJPQkVfQ1BVX1IwX09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3By
c1tBUk1SZWdpc3RlcnM6OnIxXSkgPT0gUFJPQkVfQ1BVX1IxX09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmdwcnNbcjFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIp
Owotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIy
XSkgPT0gUFJPQkVfQ1BVX1IyX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjJdJ3Mg
b2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQ
Uk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIzXSkgPT0gUFJPQkVfQ1BVX1Iz
X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjNdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3Rp
TWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUu
Z3Byc1tBUk1SZWdpc3RlcnM6OnI0XSkgPT0gUFJPQkVfQ1BVX1I0X09GRlNFVCwgIlByb2JlOjpT
dGF0ZTo6Y3B1LmdwcnNbcjRdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGlu
ZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6
OnI1XSkgPT0gUFJPQkVfQ1BVX1I1X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjVd
J3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2Vy
dChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI2XSkgPT0gUFJPQkVfQ1BV
X1I2X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjZdJ3Mgb2Zmc2V0IG1hdGNoZXMg
Y3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihj
cHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI3XSkgPT0gUFJPQkVfQ1BVX1I3X09GRlNFVCwgIlByb2Jl
OjpTdGF0ZTo6Y3B1LmdwcnNbcjddJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBv
bGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3Rl
cnM6OnI4XSkgPT0gUFJPQkVfQ1BVX1I4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNb
cjhdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fz
c2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI5XSkgPT0gUFJPQkVf
Q1BVX1I5X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjldJ3Mgb2Zmc2V0IG1hdGNo
ZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRP
RihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIxMF0pID09IFBST0JFX0NQVV9SMTBfT0ZGU0VULCAi
UHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1tyMTBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2Jl
VHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1S
ZWdpc3RlcnM6OnIxMV0pID09IFBST0JFX0NQVV9SMTFfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpj
cHUuZ3Byc1tyMTFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwot
c3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OmlwXSkg
PT0gUFJPQkVfQ1BVX0lQX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbaXBdJ3Mgb2Zm
c2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9C
RV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnNwXSkgPT0gUFJPQkVfQ1BVX1NQX09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbc3BdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3By
c1tBUk1SZWdpc3RlcnM6OmxyXSkgPT0gUFJPQkVfQ1BVX0xSX09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmdwcnNbbHJdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIp
Owotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnBj
XSkgPT0gUFJPQkVfQ1BVX1BDX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcGNdJ3Mg
b2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotCi1zdGF0aWNfYXNzZXJ0
KFBST0JFX09GRlNFVE9GKGNwdS5zcHJzW0FSTVJlZ2lzdGVyczo6YXBzcl0pID09IFBST0JFX0NQ
VV9BUFNSX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LnNwcnNbYXBzcl0ncyBvZmZzZXQgbWF0
Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNF
VE9GKGNwdS5zcHJzW0FSTVJlZ2lzdGVyczo6ZnBzY3JdKSA9PSBQUk9CRV9DUFVfRlBTQ1JfT0ZG
U0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuc3Byc1tmcHNjcl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlN
YXNtUHJvYmVUcmFtcG9saW5lIik7Ci0KLXN0YXRpY19hc3NlcnQoIShQUk9CRV9DUFVfRDBfT0ZG
U0VUICYgMHg3KSwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDBdJ3Mgb2Zmc2V0IHNob3VsZCBi
ZSA4IGJ5dGUgYWxpZ25lZCIpOwotCi1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5m
cHJzW0FSTVJlZ2lzdGVyczo6ZDBdKSA9PSBQUk9CRV9DUFVfRDBfT0ZGU0VULCAiUHJvYmU6OlN0
YXRlOjpjcHUuZnByc1tkMF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5l
Iik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6
ZDFdKSA9PSBQUk9CRV9DUFVfRDFfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkMV0n
cyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0
KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDJdKSA9PSBQUk9CRV9DUFVf
RDJfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkMl0ncyBvZmZzZXQgbWF0Y2hlcyBj
dGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNw
dS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDNdKSA9PSBQUk9CRV9DUFVfRDNfT0ZGU0VULCAiUHJvYmU6
OlN0YXRlOjpjcHUuZnByc1tkM10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9s
aW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVy
czo6ZDRdKSA9PSBQUk9CRV9DUFVfRDRfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tk
NF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNz
ZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDVdKSA9PSBQUk9CRV9D
UFVfRDVfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkNV0ncyBvZmZzZXQgbWF0Y2hl
cyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9G
KGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDZdKSA9PSBQUk9CRV9DUFVfRDZfT0ZGU0VULCAiUHJv
YmU6OlN0YXRlOjpjcHUuZnByc1tkNl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFt
cG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lz
dGVyczo6ZDddKSA9PSBQUk9CRV9DUFVfRDdfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnBy
c1tkN10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNf
YXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDhdKSA9PSBQUk9C
RV9DUFVfRDhfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkOF0ncyBvZmZzZXQgbWF0
Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNF
VE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDldKSA9PSBQUk9CRV9DUFVfRDlfT0ZGU0VULCAi
UHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkOV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVU
cmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJl
Z2lzdGVyczo6ZDEwXSkgPT0gUFJPQkVfQ1BVX0QxMF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNw
dS5mcHJzW2QxMF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1z
dGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDExXSkg
PT0gUFJPQkVfQ1BVX0QxMV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxMV0ncyBv
ZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBS
T0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDEyXSkgPT0gUFJPQkVfQ1BVX0Qx
Ml9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxMl0ncyBvZmZzZXQgbWF0Y2hlcyBj
dGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNw
dS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDEzXSkgPT0gUFJPQkVfQ1BVX0QxM19PRkZTRVQsICJQcm9i
ZTo6U3RhdGU6OmNwdS5mcHJzW2QxM10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFt
cG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lz
dGVyczo6ZDE0XSkgPT0gUFJPQkVfQ1BVX0QxNF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5m
cHJzW2QxNF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0
aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDE1XSkgPT0g
UFJPQkVfQ1BVX0QxNV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxNV0ncyBvZmZz
ZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci0KLSNpZiBDUFUoQVJNX05FT04p
IHx8IENQVShBUk1fVkZQX1YzX0QzMikKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1
LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMTZdKSA9PSBQUk9CRV9DUFVfRDE2X09GRlNFVCwgIlByb2Jl
OjpTdGF0ZTo6Y3B1LmZwcnNbZDE2XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0
ZXJzOjpkMTddKSA9PSBQUk9CRV9DUFVfRDE3X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZw
cnNbZDE3XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRp
Y19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMThdKSA9PSBQ
Uk9CRV9DUFVfRDE4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDE4XSdzIG9mZnNl
dCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVf
T0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMTldKSA9PSBQUk9CRV9DUFVfRDE5X09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDE5XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1h
c21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZw
cnNbQVJNUmVnaXN0ZXJzOjpkMjBdKSA9PSBQUk9CRV9DUFVfRDIwX09GRlNFVCwgIlByb2JlOjpT
dGF0ZTo6Y3B1LmZwcnNbZDIwXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJz
OjpkMjFdKSA9PSBQUk9CRV9DUFVfRDIxX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNb
ZDIxXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19h
c3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjJdKSA9PSBQUk9C
RV9DUFVfRDIyX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDIyXSdzIG9mZnNldCBt
YXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZG
U0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjNdKSA9PSBQUk9CRV9DUFVfRDIzX09GRlNF
VCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDIzXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNb
QVJNUmVnaXN0ZXJzOjpkMjRdKSA9PSBQUk9CRV9DUFVfRDI0X09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmZwcnNbZDI0XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUi
KTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpk
MjVdKSA9PSBQUk9CRV9DUFVfRDI1X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI1
XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3Nl
cnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjZdKSA9PSBQUk9CRV9D
UFVfRDI2X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI2XSdzIG9mZnNldCBtYXRj
aGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VU
T0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjddKSA9PSBQUk9CRV9DUFVfRDI3X09GRlNFVCwg
IlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI3XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJN
UmVnaXN0ZXJzOjpkMjhdKSA9PSBQUk9CRV9DUFVfRDI4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6
Y3B1LmZwcnNbZDI4XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsK
LXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjld
KSA9PSBQUk9CRV9DUFVfRDI5X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI5XSdz
IG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQo
UFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMzBdKSA9PSBQUk9CRV9DUFVf
RDMwX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDMwXSdzIG9mZnNldCBtYXRjaGVz
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0Yo
Y3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMzFdKSA9PSBQUk9CRV9DUFVfRDMxX09GRlNFVCwgIlBy
b2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDMxXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmUiKTsKLSNlbmRpZiAvLyBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0Qz
MikKLQotc3RhdGljX2Fzc2VydChzaXplb2YoUHJvYmU6OlN0YXRlKSA9PSBQUk9CRV9TSVpFLCAi
UHJvYmU6OlN0YXRlJ3Mgc2l6ZSBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLSN1
bmRlZiBQUk9CRV9PRkZTRVRPRgotCi1zdHJ1Y3QgSW5jb21pbmdSZWNvcmQgewotICAgIHVpbnRw
dHJfdCBscjsKLSAgICB1aW50cHRyX3QgaXA7Ci0gICAgdWludHB0cl90IHI2OwotICAgIHVpbnRw
dHJfdCByMDsKLSAgICB1aW50cHRyX3QgcjE7Ci0gICAgdWludHB0cl90IHIyOwotfTsKLQotI2Rl
ZmluZSBJTl9MUl9PRkZTRVQgKDAgKiBQVFJfU0laRSkKLSNkZWZpbmUgSU5fSVBfT0ZGU0VUICgx
ICogUFRSX1NJWkUpCi0jZGVmaW5lIElOX1I2X09GRlNFVCAoMiAqIFBUUl9TSVpFKQotI2RlZmlu
ZSBJTl9SMF9PRkZTRVQgKDMgKiBQVFJfU0laRSkKLSNkZWZpbmUgSU5fUjFfT0ZGU0VUICg0ICog
UFRSX1NJWkUpCi0jZGVmaW5lIElOX1IyX09GRlNFVCAoNSAqIFBUUl9TSVpFKQotI2RlZmluZSBJ
Tl9TSVpFICAgICAgKDYgKiBQVFJfU0laRSkKLQotc3RhdGljX2Fzc2VydChJTl9MUl9PRkZTRVQg
PT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIGxyKSwgIklOX0xSX09GRlNFVCBpcyBpbmNvcnJl
Y3QiKTsKLXN0YXRpY19hc3NlcnQoSU5fSVBfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVj
b3JkLCBpcCksICJJTl9JUF9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7Ci1zdGF0aWNfYXNzZXJ0KElO
X1I2X09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjYpLCAiSU5fUjZfT0ZGU0VU
IGlzIGluY29ycmVjdCIpOwotc3RhdGljX2Fzc2VydChJTl9SMF9PRkZTRVQgPT0gb2Zmc2V0b2Yo
SW5jb21pbmdSZWNvcmQsIHIwKSwgIklOX1IwX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKLXN0YXRp
Y19hc3NlcnQoSU5fUjFfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByMSksICJJ
Tl9SMV9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7Ci1zdGF0aWNfYXNzZXJ0KElOX1IyX09GRlNFVCA9
PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjIpLCAiSU5fUjJfT0ZGU0VUIGlzIGluY29ycmVj
dCIpOwotc3RhdGljX2Fzc2VydChJTl9TSVpFID09IHNpemVvZihJbmNvbWluZ1JlY29yZCksICJJ
Tl9TSVpFIGlzIGluY29ycmVjdCIpOwotCi1hc20gKAotICAgICIudGV4dCIgIlxuIgotICAgICIu
Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpICJcbiIKLSAgICBI
SURFX1NZTUJPTChjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiXG4iCi0gICAgSU5MSU5FX0FSTV9G
VU5DVElPTihjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiXG4iCi0gICAgU1lNQk9MX1NUUklORyhj
dGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiOiIgIlxuIgotCi0gICAgLy8gTWFjcm9Bc3NlbWJsZXJB
Uk12Nzo6cHJvYmUoKSBoYXMgYWxyZWFkeSBnZW5lcmF0ZWQgY29kZSB0byBzdG9yZSBzb21lIHZh
bHVlcy4KLSAgICAvLyBUaGUgdG9wIG9mIHN0YWNrIG5vdyBjb250YWlucyB0aGUgSW5jb21pbmdS
ZWNvcmQuCi0gICAgLy8KLSAgICAvLyBJbmNvbWluZyByZWdpc3RlciB2YWx1ZXM6Ci0gICAgLy8g
ICAgIHIwOiBwcm9iZSBmdW5jdGlvbgotICAgIC8vICAgICByMTogcHJvYmUgYXJnCi0gICAgLy8g
ICAgIHIyOiBQcm9iZTo6ZXhlY3V0ZVByb2JlCi0gICAgLy8gICAgIHI2OiBzY3JhdGNoCi0gICAg
Ly8gICAgIGlwOiBzY3JhdGNoLCB3YXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZQotICAgIC8vICAg
ICBscjogcmV0dXJuIGFkZHJlc3MKLQotICAgICJtb3YgICAgICAgaXAsIHNwIiAiXG4iCi0gICAg
Im1vdiAgICAgICByNiwgc3AiICJcbiIKLSAgICAic3ViICAgICAgIHI2LCByNiwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkgIlxuIgotCi0gICAgLy8gVGhlIEFS
TSBFQUJJIHNwZWNpZmllcyB0aGF0IHRoZSBzdGFjayBuZWVkcyB0byBiZSAxNiBieXRlIGFsaWdu
ZWQuCi0gICAgImJpYyAgICAgICByNiwgcjYsICMweGYiICJcbiIKLSAgICAibW92ICAgICAgIHNw
LCByNiIgIlxuIiAvLyBTZXQgdGhlIHNwIHRvIHByb3RlY3QgdGhlIFByb2JlOjpTdGF0ZSBmcm9t
IGludGVycnVwdHMgYmVmb3JlIHdlIGluaXRpYWxpemUgaXQuCi0KLSAgICAic3RyICAgICAgIHIw
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQp
ICJdIiAiXG4iCi0gICAgInN0ciAgICAgICByMSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQVJHX09GRlNFVCkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgImFk
ZCAgICAgICByMCwgaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9TSVpFKSAiXG4iCi0gICAg
InN0ciAgICAgICByMCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09G
RlNFVCkgIl0iICJcbiIKLQotICAgICJhZGQgICAgICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX1IzX09GRlNFVCkgIlxuIgotICAgICJzdG1pYSAgICAgbHIsIHsgcjMt
cjUgfSIgIlxuIgotICAgICJhZGQgICAgICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX1I3X09GRlNFVCkgIlxuIgotICAgICJzdG1pYSAgICAgbHIsIHsgcjctcjExIH0i
ICJcbiIKLSAgICAibXJzICAgICAgIGxyLCBBUFNSIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwg
W3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0FQU1JfT0ZGU0VUKSAiXSIgIlxu
IgotICAgICJ2bXJzICAgICAgbHIsIEZQU0NSIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0ZQU0NSX09GRlNFVCkgIl0iICJcbiIK
LQotICAgICJsZHIgICAgICAgcjQsIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX0xSX09G
RlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIHI1LCBbaXAsICMiIFNUUklOR0laRV9WQUxV
RV9PRihJTl9JUF9PRkZTRVQpICJdIiAiXG4iCi0gICAgImxkciAgICAgICByNiwgW2lwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoSU5fUjZfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJsZHIgICAgICAg
cjcsIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1IwX09GRlNFVCkgIl0iICJcbiIKLSAg
ICAibGRyICAgICAgIHI4LCBbaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9SMV9PRkZTRVQp
ICJdIiAiXG4iCi0gICAgImxkciAgICAgICByOSwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
SU5fUjJfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgcjQsIFtzcCwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0NQVV9MUl9PRkZTRVQpICJdIiAiXG4iCi0gICAgInN0ciAgICAg
ICByNSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0lQX09GRlNFVCkgIl0i
ICJcbiIKLSAgICAic3RyICAgICAgIHI2LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfUjZfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgcjcsIFtzcCwgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMF9PRkZTRVQpICJdIiAiXG4iCi0gICAgInN0ciAg
ICAgICByOCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1IxX09GRlNFVCkg
Il0iICJcbiIKLSAgICAic3RyICAgICAgIHI5LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQ
Uk9CRV9DUFVfUjJfT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgImFkZCAgICAgICBpcCwgc3AsICMi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRDBfT0ZGU0VUKSAiXG4iCi0gICAgInZzdG1p
YS42NCBpcCEsIHsgZDAtZDE1IH0iICJcbiIKLSNpZiBDUFUoQVJNX05FT04pIHx8IENQVShBUk1f
VkZQX1YzX0QzMikKLSAgICAidnN0bWlhLjY0IGlwISwgeyBkMTYtZDMxIH0iICJcbiIKLSNlbmRp
ZgotCi0gICAgLy8gcjUgaXMgYSBjYWxsZWUgc2F2ZWQgcmVnaXN0ZXIuIFdlJ2xsIHVzZSBpdCBm
b3IgcHJlc2VydmluZyB0aGUgUHJvYmU6OlN0YXRlKi4KLSAgICAvLyBodHRwczovL3N0YWNrb3Zl
cmZsb3cuY29tL3F1ZXN0aW9ucy8yNjE0MTkvYXJtLXRvLWMtY2FsbGluZy1jb252ZW50aW9uLXJl
Z2lzdGVycy10by1zYXZlIzI2MTQ5NgotICAgICJtb3YgICAgICAgcjUsIHNwIiAiXG4iCi0KLSAg
ICAibW92ICAgICAgIHIwLCBzcCIgIlxuIiAvLyB0aGUgUHJvYmU6OlN0YXRlKiBhcmcuCi0gICAg
ImJseCAgICAgICByMiIgIlxuIiAvLyBDYWxsIFByb2JlOjpleGVjdXRlUHJvYmUuCi0KLSAgICAv
LyBNYWtlIHN1cmUgdGhlIFByb2JlOjpTdGF0ZSBpcyBlbnRpcmVseSBiZWxvdyB0aGUgcmVzdWx0
IHN0YWNrIHBvaW50ZXIgc28KLSAgICAvLyB0aGF0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RpbGwg
cHJlc2VydmVkIHdoZW4gd2UgY2FsbCB0aGUgaW5pdGlhbGl6ZVN0YWNrCi0gICAgLy8gZnVuY3Rp
b24uCi0gICAgImxkciAgICAgICByMSwgW3I1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX1NQX09GRlNFVCkgIl0iICJcbiIgLy8gUmVzdWx0IHNwLgotICAgICJhZGQgICAgICAgcjIs
IHI1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSArIE9VVF9TSVpFKSAiXG4iIC8v
IEVuZCBvZiBQcm92ZUNvbnRleHQgKyBidWZmZXIuCi0gICAgImNtcCAgICAgICByMSwgcjIiICJc
biIKLSAgICAiYmdlICAgICAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9s
aW5lUHJvYmVTdGF0ZUlzU2FmZSkgIlxuIgotCi0gICAgLy8gQWxsb2NhdGUgYSBzYWZlIHBsYWNl
IG9uIHRoZSBzdGFjayBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBvaW50ZXIgdG8gc3Rhc2ggdGhl
IFByb2JlOjpTdGF0ZS4KLSAgICAic3ViICAgICAgIHIxLCByMSwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkgIlxuIgotICAgICJiaWMgICAgICAgcjEsIHIxLCAj
MHhmIiAiXG4iIC8vIFRoZSBBUk0gRUFCSSBzcGVjaWZpZXMgdGhhdCB0aGUgc3RhY2sgbmVlZHMg
dG8gYmUgMTYgYnl0ZSBhbGlnbmVkLgotICAgICJtb3YgICAgICAgc3AsIHIxIiAiXG4iIC8vIFNl
dCB0aGUgbmV3IHNwIHRvIHByb3RlY3QgdGhhdCBtZW1vcnkgZnJvbSBpbnRlcnJ1cHRzIGJlZm9y
ZSB3ZSBjb3B5IHRoZSBQcm9iZTo6U3RhdGUuCi0KLSAgICAvLyBDb3B5IHRoZSBQcm9iZTo6U3Rh
dGUgdG8gdGhlIHNhZmUgcGxhY2UuCi0gICAgLy8gTm90ZTogd2UgaGF2ZSB0byBjb3B5IGZyb20g
bG93IGFkZHJlc3MgdG8gaGlnaGVyIGFkZHJlc3MgYmVjYXVzZSB3ZSdyZSBtb3ZpbmcgdGhlCi0g
ICAgLy8gUHJvYmU6OlN0YXRlIHRvIGEgbG93ZXIgYWRkcmVzcy4KLSAgICAiYWRkICAgICAgIHI3
LCByNSwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUpICJcbiIKLQotICAgIExPQ0FM
X0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lQ29weUxvb3ApICI6IiAiXG4iCi0g
ICAgImxkciAgICAgICByMywgW3I1XSwgIzQiICJcbiIKLSAgICAibGRyICAgICAgIHI0LCBbcjVd
LCAjNCIgIlxuIgotICAgICJzdHIgICAgICAgcjMsIFtyMV0sICM0IiAiXG4iCi0gICAgInN0ciAg
ICAgICByNCwgW3IxXSwgIzQiICJcbiIKLSAgICAiY21wICAgICAgIHI1LCByNyIgIlxuIgotICAg
ICJibHQgICAgICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVDb3B5
TG9vcCkgIlxuIgotCi0gICAgIm1vdiAgICAgICByNSwgc3AiICJcbiIKLQotICAgIC8vIENhbGwg
aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gaWYgcHJlc2VudC4KLSAgICBMT0NBTF9MQUJFTF9TVFJJ
TkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVByb2JlU3RhdGVJc1NhZmUpICI6IiAiXG4iCi0gICAg
ImxkciAgICAgICByMiwgW3I1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfSU5JVF9TVEFD
S19GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCi0gICAgImNtcCAgICAgICByMiwgIzAiICJcbiIK
LSAgICAiYmVxICAgICAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5l
UmVzdG9yZVJlZ2lzdGVycykgIlxuIgotCi0gICAgIm1vdiAgICAgICByMCwgcjUiICJcbiIgLy8g
U2V0IHRoZSBQcm9iZTo6U3RhdGUqIGFyZy4KLSAgICAiYmx4ICAgICAgIHIyIiAiXG4iIC8vIENh
bGwgdGhlIGluaXRpYWxpemVTdGFja0Z1bmN0aW9uIChsb2FkZWQgaW50byByMiBhYm92ZSkuCi0K
LSAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVJlc3RvcmVSZWdp
c3RlcnMpICI6IiAiXG4iCi0KLSAgICAibW92ICAgICAgIHNwLCByNSIgIlxuIiAvLyBFbnN1cmUg
dGhhdCBzcCBwb2ludHMgdG8gdGhlIFByb2JlOjpTdGF0ZSouCi0KLSAgICAvLyBUbyBlbmFibGUg
cHJvYmVzIHRvIG1vZGlmeSByZWdpc3RlciBzdGF0ZSwgd2UgY29weSBhbGwgcmVnaXN0ZXJzCi0g
ICAgLy8gb3V0IG9mIHRoZSBQcm9iZTo6U3RhdGUgYmVmb3JlIHJldHVybmluZy4KLQotI2lmIENQ
VShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotICAgICJhZGQgICAgICAgaXAsIHNw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0QzMV9PRkZTRVQgKyBGUFJFR19TSVpF
KSAiXG4iCi0gICAgInZsZG1kYi42NCBpcCEsIHsgZDE2LWQzMSB9IiAiXG4iCi0gICAgInZsZG1k
Yi42NCBpcCEsIHsgZDAtZDE1IH0iICJcbiIKLSNlbHNlCi0gICAgImFkZCAgICAgICBpcCwgc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRDE1X09GRlNFVCArIEZQUkVHX1NJWkUp
ICJcbiIKLSAgICAidmxkbWRiLjY0IGlwISwgeyBkMC1kMTUgfSIgIlxuIgotI2VuZGlmCi0KLSAg
ICAiYWRkICAgICAgIGlwLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMTFf
T0ZGU0VUICsgR1BSRUdfU0laRSkgIlxuIgotICAgICJsZG1kYiAgICAgaXAsIHsgcjAtcjExIH0i
ICJcbiIKLSAgICAibGRyICAgICAgIGlwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfRlBTQ1JfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJ2bXNyICAgICAgRlBTQ1IsIGlwIiAi
XG4iCi0KLSAgICAvLyBUaGVyZSBhcmUgNSBtb3JlIHJlZ2lzdGVycyBsZWZ0IHRvIHJlc3RvcmU6
IGlwLCBzcCwgbHIsIHBjLCBhbmQgYXBzci4KLQotICAgIC8vIFNldCB1cCB0aGUgcmVzdG9yZSBh
cmVhIGZvciBzcCBhbmQgcGMuCi0gICAgImxkciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIKLQotICAgIC8vIFB1c2ggdGhl
IHBjIG9uIHRvIHRoZSByZXN0b3JlIGFyZWEuCi0gICAgImxkciAgICAgICBpcCwgW3NwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIl0iICJcbiIKLSAgICAic3Vi
ICAgICAgIGxyLCBsciwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9TSVpFKSAiXG4iCi0gICAg
InN0ciAgICAgICBpcCwgW2xyXSIgIlxuIgotICAgIC8vIFBvaW50IHNwIHRvIHRoZSByZXN0b3Jl
IGFyZWEuCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIKLQotICAgIC8vIEFsbCBkb25lIHdpdGggbWF0aCBp
LmUuIHdvbid0IHRyYXNoIHRoZSBzdGF0dXMgcmVnaXN0ZXIgKGFwc3IpIGFuZCBkb24ndCBuZWVk
Ci0gICAgLy8gc2NyYXRjaCByZWdpc3RlcnMgKGxyIGFuZCBpcCkgYW55bW9yZS4gUmVzdG9yZSBh
cHNyLCBsciwgYW5kIGlwLgotICAgICJsZHIgICAgICAgaXAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9BUFNSX09GRlNFVCkgIl0iICJcbiIKLSAgICAibXNyICAgICAgIEFQ
U1IsIGlwIiAiXG4iCi0gICAgImxkciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX0xSX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIGlwLCBbc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfSVBfT0ZGU0VUKSAiXSIgIlxuIgotCi0g
ICAgLy8gUmVzdG9yZSB0aGUgc3AgYW5kIHBjLgotICAgICJsZHIgICAgICAgc3AsIFtzcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJdIiAiXG4iCi0gICAgInBv
cCAgICAgICB7IHBjIH0iICJcbiIKLSk7Ci0jZW5kaWYgLy8gQ09NUElMRVIoR0NDX0NPTVBBVElC
TEUpCi0KLXZvaWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKFByb2JlOjpGdW5jdGlvbiBmdW5jdGlv
biwgdm9pZCogYXJnKQotewotICAgIHN1YjMyKFRydXN0ZWRJbW0zMihzaXplb2YoSW5jb21pbmdS
ZWNvcmQpKSwgc3ApOwotCi0gICAgc3RvcmUzMihsciwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5j
b21pbmdSZWNvcmQsIGxyKSkpOwotICAgIHN0b3JlMzIoaXAsIEFkZHJlc3Moc3AsIG9mZnNldG9m
KEluY29taW5nUmVjb3JkLCBpcCkpKTsKLSAgICBzdG9yZTMyKHI2LCBBZGRyZXNzKHNwLCBvZmZz
ZXRvZihJbmNvbWluZ1JlY29yZCwgcjYpKSk7IC8vIFMwID09IHI2LgotICAgIHN0b3JlMzIocjAs
IEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByMCkpKTsKLSAgICBzdG9yZTMy
KHIxLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjEpKSk7Ci0gICAgc3Rv
cmUzMihyMiwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHIyKSkpOwotICAg
IC8vIFRoZSBmb2xsb3dpbmcgdXNlcyBSZWdpc3RlcklEOjpTMC4gU28sIHRoZXkgbXVzdCBjb21l
IGFmdGVyIHdlIHByZXNlcnZlIFMwIGFib3ZlLgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpLCByMCk7Ci0gICAgbW92ZShUcnVzdGVkSW1t
UHRyKGFyZyksIHIxKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oUHJvYmU6OmV4ZWN1dGVQcm9iZSkpLCByMik7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRy
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpKSwgaXApOwot
ICAgIG1fYXNzZW1ibGVyLmJseChpcCk7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUp
Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikgJiYg
Q1BVKEFSTV9UUkFESVRJT05BTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZmE0ZGY1MTczNGE2ZDgxODljODMwZTc1MDM2Y2IwYjczYWM1ZjlmZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjc2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKLSAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkK
LQotI2luY2x1ZGUgIkFSTUFzc2VtYmxlci5oIgotI2luY2x1ZGUgIkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXVzaW5nIEFzc2VtYmxlciA9IFRBUkdFVF9B
U1NFTUJMRVI7Ci0KLWNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBEb3VibGVDb25k
aXRpb25NYXNrID0gMHgwZjsKLSAgICBzdGF0aWMgY29uc3QgaW50IERvdWJsZUNvbmRpdGlvbkJp
dFNwZWNpYWwgPSAweDEwOwotICAgIENPTVBJTEVfQVNTRVJUKCEoRG91YmxlQ29uZGl0aW9uQml0
U3BlY2lhbCAmIERvdWJsZUNvbmRpdGlvbk1hc2spLCBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFs
X3Nob3VsZF9ub3RfaW50ZXJmZXJlX3dpdGhfQVJNQXNzZW1ibGVyX0NvbmRpdGlvbl9jb2Rlcyk7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bUdQUnMgPSAxNjsKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbnVtRlBScyA9IDE2OwotICAgIAotICAgIHR5cGVkZWYgQVJN
UmVnaXN0ZXJzOjpGUFJlZ2lzdGVySUQgRlBSZWdpc3RlcklEOwotCi0gICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6aXA7Ci0gICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6
cjY7Ci0KLSAgICBzdGF0aWMgY29uc3QgQVJNUmVnaXN0ZXJzOjpGUFJlZ2lzdGVySUQgZnBUZW1w
UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmQ3OwotCi0gICAgZW51bSBSZWxhdGlvbmFsQ29uZGl0
aW9uIHsKLSAgICAgICAgRXF1YWwgPSBBUk1Bc3NlbWJsZXI6OkVRLAotICAgICAgICBOb3RFcXVh
bCA9IEFSTUFzc2VtYmxlcjo6TkUsCi0gICAgICAgIEFib3ZlID0gQVJNQXNzZW1ibGVyOjpISSwK
LSAgICAgICAgQWJvdmVPckVxdWFsID0gQVJNQXNzZW1ibGVyOjpDUywKLSAgICAgICAgQmVsb3cg
PSBBUk1Bc3NlbWJsZXI6OkNDLAotICAgICAgICBCZWxvd09yRXF1YWwgPSBBUk1Bc3NlbWJsZXI6
OkxTLAotICAgICAgICBHcmVhdGVyVGhhbiA9IEFSTUFzc2VtYmxlcjo6R1QsCi0gICAgICAgIEdy
ZWF0ZXJUaGFuT3JFcXVhbCA9IEFSTUFzc2VtYmxlcjo6R0UsCi0gICAgICAgIExlc3NUaGFuID0g
QVJNQXNzZW1ibGVyOjpMVCwKLSAgICAgICAgTGVzc1RoYW5PckVxdWFsID0gQVJNQXNzZW1ibGVy
OjpMRQotICAgIH07Ci0KLSAgICBlbnVtIFJlc3VsdENvbmRpdGlvbiB7Ci0gICAgICAgIE92ZXJm
bG93ID0gQVJNQXNzZW1ibGVyOjpWUywKLSAgICAgICAgU2lnbmVkID0gQVJNQXNzZW1ibGVyOjpN
SSwKLSAgICAgICAgUG9zaXRpdmVPclplcm8gPSBBUk1Bc3NlbWJsZXI6OlBMLAotICAgICAgICBa
ZXJvID0gQVJNQXNzZW1ibGVyOjpFUSwKLSAgICAgICAgTm9uWmVybyA9IEFSTUFzc2VtYmxlcjo6
TkUKLSAgICB9OwotCi0gICAgZW51bSBEb3VibGVDb25kaXRpb24gewotICAgICAgICAvLyBUaGVz
ZSBjb25kaXRpb25zIHdpbGwgb25seSBldmFsdWF0ZSB0byB0cnVlIGlmIHRoZSBjb21wYXJpc29u
IGlzIG9yZGVyZWQgLSBpLmUuIG5laXRoZXIgb3BlcmFuZCBpcyBOYU4uCi0gICAgICAgIERvdWJs
ZUVxdWFsID0gQVJNQXNzZW1ibGVyOjpFUSwKLSAgICAgICAgRG91YmxlTm90RXF1YWwgPSBBUk1B
c3NlbWJsZXI6Ok5FIHwgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCwKLSAgICAgICAgRG91Ymxl
R3JlYXRlclRoYW4gPSBBUk1Bc3NlbWJsZXI6OkdULAotICAgICAgICBEb3VibGVHcmVhdGVyVGhh
bk9yRXF1YWwgPSBBUk1Bc3NlbWJsZXI6OkdFLAotICAgICAgICBEb3VibGVMZXNzVGhhbiA9IEFS
TUFzc2VtYmxlcjo6Q0MsCi0gICAgICAgIERvdWJsZUxlc3NUaGFuT3JFcXVhbCA9IEFSTUFzc2Vt
Ymxlcjo6TFMsCi0gICAgICAgIC8vIElmIGVpdGhlciBvcGVyYW5kIGlzIE5hTiwgdGhlc2UgY29u
ZGl0aW9ucyBhbHdheXMgZXZhbHVhdGUgdG8gdHJ1ZS4KLSAgICAgICAgRG91YmxlRXF1YWxPclVu
b3JkZXJlZCA9IEFSTUFzc2VtYmxlcjo6RVEgfCBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFsLAot
ICAgICAgICBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkID0gQVJNQXNzZW1ibGVyOjpORSwKLSAg
ICAgICAgRG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZCA9IEFSTUFzc2VtYmxlcjo6SEksCi0g
ICAgICAgIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkID0gQVJNQXNzZW1ibGVy
OjpDUywKLSAgICAgICAgRG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCA9IEFSTUFzc2VtYmxlcjo6
TFQsCi0gICAgICAgIERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkID0gQVJNQXNzZW1i
bGVyOjpMRSwKLSAgICB9OwotCi0gICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgc3RhY2tQb2lu
dGVyUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnNwOwotICAgIHN0YXRpYyBjb25zdCBSZWdpc3Rl
cklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpmcDsKLSAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBsaW5rUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmxyOwotCi0gICAg
c3RhdGljIGNvbnN0IFNjYWxlIFNjYWxlUHRyID0gVGltZXNGb3VyOwotCi0gICAgdm9pZCBhZGQz
MihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkcyhkZXN0LCBkZXN0LCBzcmMpOwotICAgIH0KLQotICAgIHZvaWQgYWRkMzIoUmVn
aXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5hZGRzKGRlc3QsIG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAg
IGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgYWRkMzIoaW1tLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZHMoZGVzdCwgZGVzdCwgbV9h
c3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7Ci0gICAg
fQotCi0gICAgdm9pZCBhZGQzMihBYnNvbHV0ZUFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
Ci0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgZGF0YVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVp
bnQzMiwgZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgMCk7Ci0gICAgICAgIGFk
ZDMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgYWRkMzIoQWRk
cmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihzcmMsIGRh
dGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBhZGQzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsK
LSAgICB9Ci0KLSAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGRzKGRlc3Qs
IHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVy
KSk7Ci0gICAgfQotCi0gICAgdm9pZCBnZXRFZmZlY3RpdmVBZGRyZXNzKEJhc2VJbmRleCBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGQoZGVz
dCwgYWRkcmVzcy5iYXNlLCBtX2Fzc2VtYmxlci5sc2woYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nh
c3Q8aW50PihhZGRyZXNzLnNjYWxlKSkpOwotICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQpCi0g
ICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBkZXN0KTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmRzKGRlc3QsIGRlc3QsIHNyYyk7Ci0gICAg
fQotCi0gICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJpdEFuZHMoZGVzdCwgb3Ax
LCBvcDIpOwotICAgIH0KLQotICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgQVJNV29yZCB3ID0gbV9hc3NlbWJsZXIuZ2V0SW1t
KGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0cnVlKTsKLSAgICAgICAgaWYgKHcg
JiBBUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYmljcyhkZXN0LCBkZXN0LCB3ICYgfkFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1l
ZGlhdGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmRzKGRl
c3QsIGRlc3QsIHcpOwotICAgIH0KLQotICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFSTVdvcmQg
dyA9IG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3Rlciwg
dHJ1ZSk7Ci0gICAgICAgIGlmICh3ICYgQVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0
ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJpY3MoZGVzdCwgc3JjLCB3ICYgfkFSTUFzc2Vt
Ymxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5iaXRBbmRzKGRlc3QsIHNyYywgdyk7Ci0gICAgfQotCi0gICAgdm9pZCBhbmQz
MihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKHNy
YywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGFuZDMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRl
c3QpOwotICAgIH0KLQotICAgIHZvaWQgYW5kMTYoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIGxvYWQxNihzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICBhbmQzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxzaGlm
dDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIGxzaGlmdDMyKGRlc3QsIHNoaWZ0QW1vdW50LCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lk
IGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9w
MkJ5dGUoMHgxZik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJpdEFuZChhZGRyZXNzVGVtcFJlZ2lz
dGVyLCBzaGlmdEFtb3VudCwgdyk7Ci0KLSAgICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0LCBt
X2Fzc2VtYmxlci5sc2xSZWdpc3RlcihzcmMsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNsKGRl
c3QsIGltbS5tX3ZhbHVlICYgMHgxZikpOwotICAgIH0KLQotICAgIHZvaWQgbHNoaWZ0MzIoUmVn
aXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNsKHNyYywgaW1tLm1f
dmFsdWUgJiAweDFmKSk7Ci0gICAgfQotCi0gICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIG9wMSwg
UmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmIChvcDIg
PT0gZGVzdCkgewotICAgICAgICAgICAgaWYgKG9wMSA9PSBkZXN0KSB7Ci0gICAgICAgICAgICAg
ICAgbW92ZShvcDIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIG9wMiA9
IGFkZHJlc3NUZW1wUmVnaXN0ZXI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIC8vIFN3YXAgdGhlIG9wZXJhbmRzLgotICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQgdG1w
ID0gb3AxOwotICAgICAgICAgICAgICAgIG9wMSA9IG9wMjsKLSAgICAgICAgICAgICAgICBvcDIg
PSB0bXA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbV9hc3NlbWJsZXIubXVs
cyhkZXN0LCBvcDEsIG9wMik7Ci0gICAgfQotCi0gICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbXVsMzIoc3JjLCBkZXN0LCBkZXN0
KTsKLSAgICB9Ci0KLSAgICB2b2lkIG11bDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm11bHMoZGVzdCwgc3JjLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIG5lZzMyKFJlZ2lzdGVySUQgc3JjRGVz
dCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnJzYnMoc3JjRGVzdCwgc3JjRGVzdCwgQVJN
QXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICB9Ci0KLSAgICB2b2lkIG5lZzMyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5y
c2JzKGRlc3QsIHNyYywgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm9ycnMoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lk
IG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQotICAgIHsKLSAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgbG9hZDMyKEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGRhdGFUZW1wUmVn
aXN0ZXIpOwotICAgICAgICBvcjMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHN0
b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0g
ICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQotICAg
IHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgbG9hZDMyKEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGRh
dGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBvcjMyKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7IC8v
IEl0IHVzZXMgUzAgYXMgdGVtcG9yYXJ5IHJlZ2lzdGVyLCB3ZSBuZWVkIHRvIHJlbG9hZCB0aGUg
YWRkcmVzcy4KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwg
QWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOwotICAgICAgICBvcjMyKGltbSwgYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRk
cmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlMzIoYWRkcmVzc1RlbXBSZWdpc3Rlciwg
YWRkcmVzcyk7Ci0gICAgfQotCi0gICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChkZXN0ICE9IGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5vcnJzKGRlc3QsIGRlc3QsIG1fYXNzZW1ibGVy
LmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAg
IHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHNyYyAhPSBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIub3JycyhkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShp
bW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgb3Iz
MihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLm9ycnMoZGVzdCwgb3AxLCBvcDIpOwotICAgIH0KLQotICAg
IHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQot
ICAgIHsKLSAgICAgICAgcnNoaWZ0MzIoZGVzdCwgc2hpZnRBbW91bnQsIGRlc3QpOwotICAgIH0K
LQotICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91
bnQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2Vt
Ymxlcjo6Z2V0T3AyQnl0ZSgweDFmKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYml0QW5kKGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIHNoaWZ0QW1vdW50LCB3KTsKLQotICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmFzclJlZ2lzdGVyKHNyYywgYWRkcmVzc1RlbXBSZWdpc3Rl
cikpOwotICAgIH0KLQotICAgIHZvaWQgcnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgcnNoaWZ0MzIoZGVzdCwgaW1tLCBkZXN0KTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKQotICAg
ICAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmFzcihzcmMsIGltbS5tX3ZhbHVlICYgMHgx
ZikpOwotICAgIH0KLQotICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIHVyc2hpZnQzMihkZXN0LCBzaGlmdEFt
b3VudCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgweDFmKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYml0QW5kKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHNoaWZ0QW1vdW50LCB3KTsKLQot
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmxzclJlZ2lzdGVyKHNy
YywgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgdXJzaGlmdDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNyKGRlc3QsIGltbS5tX3ZhbHVlICYgMHgxZikp
OwotICAgIH0KLSAgICAKLSAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKCFpbW0ubV92
YWx1ZSkKLSAgICAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxlci5sc3Ioc3JjLCBpbW0ubV92
YWx1ZSAmIDB4MWYpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdWJzKGRlc3QsIGRl
c3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIGxlZnQsIFJlZ2lz
dGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LnN1YnMoZGVzdCwgbGVmdCwgcmlnaHQpOwotICAgIH0KLQotICAgIHZvaWQgc3ViMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
c3VicyhkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0s
IEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKLSAgICAgICAgc3ViMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHN1YjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2Fk
MzIoc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3ViMzIoZGF0YVRlbXBSZWdpc3Rl
ciwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
c3VicyhkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1Rl
bXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmVvcnMoZGVzdCwgZGVz
dCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3Rl
cklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZW9y
cyhkZXN0LCBvcDEsIG9wMik7Ci0gICAgfQotCi0gICAgdm9pZCB4b3IzMihBZGRyZXNzIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKHNyYywgZGF0YVRlbXBSZWdp
c3Rlcik7Ci0gICAgICAgIHhvcjMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQot
ICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bXZucyhkZXN0LCBkZXN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
ZW9ycyhkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBpZiAoaW1t
Lm1fdmFsdWUgPT0gLTEpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tdm5zKGRlc3QsIHNyYyk7
Ci0gICAgICAgIGVsc2UgICAgCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5lb3JzKGRlc3QsIHNy
YywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7
Ci0gICAgfQotCi0gICAgdm9pZCBjb3VudExlYWRpbmdaZXJvczMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KQotICAg
ICAgICBtX2Fzc2VtYmxlci5jbHooZGVzdCwgc3JjKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9Q
QVJBTShzcmMpOwotICAgICAgICBVTlVTRURfUEFSQU0oZGVzdCk7Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQ4KElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOChC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2Nh
bGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOChjb25zdCB2b2lk
KiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYWRkcmVzcyksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5kYXRhVHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgMCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOFNpZ25lZEV4dGVuZFRvMzIo
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2Vt
Ymxlci5kYXRhVHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJbnQ4LCBkZXN0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQ4U2lnbmVkRXh0
ZW5kVG8zMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJbnQ4
LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRk
cmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQxNihJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyMTYoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQx
NihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIGRl
c3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNz
LnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZDE2U2lnbmVk
RXh0ZW5kVG8zMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJ
bnQxNiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+
KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2Fk
MzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwg
ZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBs
b2FkMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMy
LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRk
cmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSNpZiBDUFUoQVJNVjVfT1Jf
TE9XRVIpCi0gICAgdm9pZCBsb2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKEJhc2VJbmRleCBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpOwotI2Vsc2UKLSAgICB2b2lkIGxvYWQzMldpdGhVbmFs
aWduZWRIYWxmV29yZHMoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkZXN0KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHZv
aWQgbG9hZDE2VW5hbGlnbmVkKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBsb2FkMTYoYWRkcmVzcywgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBh
Ym9ydFdpdGhSZWFzb24oQWJvcnRSZWFzb24gcmVhc29uKQotICAgIHsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tMzIocmVhc29uKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGJyZWFr
cG9pbnQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihBYm9ydFJlYXNvbiBy
ZWFzb24sIGludHB0cl90IG1pc2MpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMiht
aXNjKSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGFib3J0V2l0aFJlYXNvbihyZWFzb24p
OwotICAgIH0KLQotICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihB
ZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIENvbnZlcnRp
YmxlTG9hZExhYmVsIHJlc3VsdCh0aGlzKTsKLSAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zmc2V0
ID49IDAgJiYgYWRkcmVzcy5vZmZzZXQgPD0gMjU1KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRy
VXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
b2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBEYXRhTGFiZWwz
MiBsb2FkMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgRGF0YUxhYmVsMzIgZGF0YUxhYmVsKHRoaXMpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoYWRkcmVzc1RlbXBSZWdpc3Rlciwg
MCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVyOjpMb2Fk
VWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICByZXR1cm4gZGF0YUxhYmVsOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzQ29tcGFjdFB0
ckFsaWduZWRBZGRyZXNzT2Zmc2V0KHB0cmRpZmZfdCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB2YWx1ZSA+PSAtNDA5NSAmJiB2YWx1ZSA8PSA0MDk1OwotICAgIH0KLQotICAgIERhdGFM
YWJlbENvbXBhY3QgbG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBEYXRhTGFiZWxDb21wYWN0
IGRhdGFMYWJlbCh0aGlzKTsKLSAgICAgICAgQVNTRVJUKGlzQ29tcGFjdFB0ckFsaWduZWRBZGRy
ZXNzT2Zmc2V0KGFkZHJlc3Mub2Zmc2V0KSk7Ci0gICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCA+
PSAwKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWlu
dDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyRG93bihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIs
IGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgICAgICByZXR1cm4gZGF0
YUxhYmVsOwotICAgIH0KLQotICAgIERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09mZnNl
dFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBE
YXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1
ZUltbWVkaWF0ZShhZGRyZXNzVGVtcFJlZ2lzdGVyLCAwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
ZHRyVXBSZWdpc3RlcihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBzcmMsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBkYXRhTGFiZWw7Ci0gICAg
fQotCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQot
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJs
ZXI6OlN0b3JlVWludDgsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNf
Y2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAg
dm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQ4LCBz
cmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgc3Rv
cmU4KFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQotICAgIHsKLSAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQ4LCBzcmMsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIDApOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0z
MiBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgVHJ1c3RlZElt
bTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSkpOwotICAgICAgICBtb3Zl
KGltbTgsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3Rl
ciwgYWRkcmVzcyk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwg
Y29uc3Qgdm9pZCogYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBpbW04KHN0
YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1t
MzIocmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSksIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOwotICAgICAgICBtb3ZlKGltbTgsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fz
c2VtYmxlci5kdHJVcChBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDgsIGRhdGFUZW1wUmVnaXN0ZXIs
IGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmUxNihSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5iYXNlSW5kZXhUcmFuc2ZlcjE2KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MTYsIHNyYywgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUp
LCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQg
c3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmRhdGFUcmFuc2ZlcjE2KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MTYsIHNyYywgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVy
SUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmRhdGFUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIHNyYywgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmJhc2VJbmRleFRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSks
IGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMy
IGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBtb3ZlKGltbSwg
ZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRk
cmVzcyk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIp
OwotICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6
U3RvcmVVaW50MzIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAg
IH0KLQotICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVz
cykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShhZGRyZXNz
VGVtcFJlZ2lzdGVyLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyLCAwKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZElt
bTMyIGltbSwgY29uc3Qgdm9pZCogYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmxkclVuaXF1ZUltbWVkaWF0ZShhZGRyZXNzVGVtcFJlZ2lzdGVyLCByZWludGVycHJldF9jYXN0
PEFSTVdvcmQ+KGFkZHJlc3MpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92ZUltbShpbW0ubV92
YWx1ZSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFz
c2VtYmxlcjo6U3RvcmVVaW50MzIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIsIDApOwotICAgIH0KLQotICAgIHZvaWQgcG9wKFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLnBvcChkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHBvcFBhaXIo
UmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLnBvcChkZXN0MSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnBvcChkZXN0Mik7Ci0gICAg
fQotCi0gICAgdm9pZCBwdXNoKFJlZ2lzdGVySUQgc3JjKQotICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIucHVzaChzcmMpOwotICAgIH0KLQotICAgIHZvaWQgcHVzaChBZGRyZXNzIGFkZHJlc3Mp
Ci0gICAgewotICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgIHB1c2goZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBwdXNoKFRydXN0
ZWRJbW0zMiBpbW0pCi0gICAgewotICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIHB1c2goYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgdm9p
ZCBwdXNoUGFpcihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMikKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLnB1c2goc3JjMik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnB1c2goc3Jj
MSk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmVJbW0oaW1tLm1fdmFsdWUsIGRl
c3QpOwotICAgIH0KLQotICAgIHZvaWQgbW92ZShSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQotICAgIHsKLSAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubW92KGRlc3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW1Q
dHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihpbW0pLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAoUmVnaXN0ZXJJRCByZWcxLCBS
ZWdpc3RlcklEIHJlZzIpCi0gICAgewotICAgICAgICBtb3ZlKHJlZzEsIGRhdGFUZW1wUmVnaXN0
ZXIpOwotICAgICAgICBtb3ZlKHJlZzIsIHJlZzEpOwotICAgICAgICBtb3ZlKGRhdGFUZW1wUmVn
aXN0ZXIsIHJlZzIpOwotICAgIH0KLQotICAgIHZvaWQgc3dhcChGUFJlZ2lzdGVySUQgZnIxLCBG
UFJlZ2lzdGVySUQgZnIyKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShmcjEsIGZwVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgbW92ZURvdWJsZShmcjIsIGZyMSk7Ci0gICAgICAgIG1vdmVEb3Vi
bGUoZnBUZW1wUmVnaXN0ZXIsIGZyMik7Ci0gICAgfQotCi0gICAgdm9pZCBzaWduRXh0ZW5kMzJU
b1B0cihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYg
KHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAgIH0KLQotICAg
IHZvaWQgemVyb0V4dGVuZDMyVG9QdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1vdmUoc3JjLCBk
ZXN0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRydXN0
ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7Ci0gICAg
fQotCi0gICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4
IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBy
aWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIHJpZ2h0KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJu
IGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7Ci0gICAgfQotCi0gICAg
SnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxl
ZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdo
dDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IHJpZ2h0KTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGxlZnQubV9wdHIpLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJp
Z2h0OCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBCYXNlSW5kZXggbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKLSAgICB7Ci0gICAgICAgIGxv
YWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNv
bmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaDMy
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJp
Z2h0LCBpbnQgdXNlQ29uc3RhbnRQb29sID0gMCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmNtcChsZWZ0LCByaWdodCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChB
Uk1Db25kaXRpb24oY29uZCksIHVzZUNvbnN0YW50UG9vbCkpOwotICAgIH0KLQotICAgIEp1bXAg
YnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0
ZWRJbW0zMiByaWdodCwgaW50IHVzZUNvbnN0YW50UG9vbCA9IDApCi0gICAgewotICAgICAgICBp
bnRlcm5hbENvbXBhcmUzMihsZWZ0LCByaWdodCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNz
ZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCksIHVzZUNvbnN0YW50UG9vbCkpOwotICAgIH0K
LQotICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGxlZnQsIEFkZHJlc3MgcmlnaHQpCi0gICAgewotICAgICAgICBsb2FkMzIocmlnaHQsIGRhdGFU
ZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgZGF0YVRl
bXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKLSAgICB7Ci0gICAgICAg
IGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMy
KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5j
aDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQpCi0gICAgewotICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCk7Ci0g
ICAgfQotCi0gICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJ
bmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewotICAgICAgICBsb2FkMzIobGVm
dCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRh
VGVtcFJlZ2lzdGVyLCByaWdodCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gzMldpdGhVbmFs
aWduZWRIYWxmV29yZHMoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwg
VHJ1c3RlZEltbTMyIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbG9hZDMyV2l0aFVuYWxpZ25lZEhh
bGZXb3JkcyhsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMy
KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5j
aFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0z
MiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBt
YXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29u
ZCwgbWFzayk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVy
biBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOwotICAgIH0KLQot
ICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRy
ZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCi0gICAgewotICAgICAg
ICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6
OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIp
OwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1h
c2s4KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1t
MzIoLTEpKQotICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKLSAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25k
LCBBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
cmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7Ci0gICAg
fQotCi0gICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgcmVnLCBSZWdpc3RlcklEIG1hc2spCi0gICAgewotICAgICAgICBBU1NFUlQoY29uZCA9PSBa
ZXJvIHx8IGNvbmQgPT0gTm9uWmVybyB8fCBjb25kID09IFNpZ25lZCB8fCBjb25kID09IFBvc2l0
aXZlT3JaZXJvKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudHN0KHJlZywgbWFzayk7Ci0gICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9
Ci0KLSAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCByZWcsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChjb25kID09IFplcm8gfHwgY29uZCA9PSBOb25aZXJvIHx8IGNvbmQgPT0gU2ln
bmVkIHx8IGNvbmQgPT0gUG9zaXRpdmVPclplcm8pOwotICAgICAgICBBUk1Xb3JkIHcgPSBtX2Fz
c2VtYmxlci5nZXRJbW0obWFzay5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0cnVlKTsK
LSAgICAgICAgaWYgKHcgJiBBUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKQotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYmljcyhhZGRyZXNzVGVtcFJlZ2lzdGVyLCByZWcsIHcgJiB+
QVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIHcpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFu
Y2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZElt
bTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJl
c3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQs
IGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoVGVzdDMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1h
c2sgPSBUcnVzdGVkSW1tMzIoLTEpKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRh
dGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIG1hc2spOwotICAgIH0KLQotICAgIEp1bXAganVtcCgpCi0gICAgewotICAg
ICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBq
dW1wKFJlZ2lzdGVySUQgdGFyZ2V0LCBQdHJUYWcpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5ieCh0YXJnZXQpOwotICAgIH0KLQotICAgIHZvaWQganVtcChBZGRyZXNzIGFkZHJlc3MsIFB0
clRhZykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OnBjKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykK
LSAgICB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0
ZXIsIDApLCBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQganVtcChSZWdpc3RlcklEIHRhcmdldCwgUmVnaXN0ZXJJRCBqdW1wVGFnKSB7IFVOVVNFRF9Q
QVJBTShqdW1wVGFnKSwganVtcCh0YXJnZXQsIE5vUHRyVGFnKTsgfQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBqdW1wKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBqdW1wVGFnKSB7IFVOVVNF
RF9QQVJBTShqdW1wVGFnKSwganVtcChhZGRyZXNzLCBOb1B0clRhZyk7IH0KLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQganVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBqdW1w
VGFnKSB7IFVOVVNFRF9QQVJBTShqdW1wVGFnKSwganVtcChhZGRyZXNzLCBOb1B0clRhZyk7IH0K
LQotICAgIHZvaWQgbW92ZURvdWJsZVRvSW50cyhGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1v
dihkZXN0MSwgZGVzdDIsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3ZlSW50c1RvRG91Ymxl
KFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBGUFJlZ2lzdGVySUQgZGVzdCwgRlBS
ZWdpc3RlcklEKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0LCBzcmMxLCBz
cmMyKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJU
KChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8p
Ci0gICAgICAgICAgICB8fCAoY29uZCA9PSBOb25aZXJvKSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9y
WmVybykpOwotICAgICAgICBhZGQzMihzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBi
cmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVy
SUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0g
T3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykKLSAgICAgICAg
ICAgIHx8IChjb25kID09IE5vblplcm8pIHx8IChjb25kID09IFBvc2l0aXZlT3JaZXJvKSk7Ci0g
ICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3Nl
bWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNo
QWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQg
PT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKQotICAgICAgICAgICAgfHwgKGNvbmQgPT0gTm9u
WmVybykgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pKTsKLSAgICAgICAgYWRkMzIoaW1tLCBk
ZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihj
b25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25l
ZCkgfHwgKGNvbmQgPT0gWmVybykKLSAgICAgICAgICAgIHx8IChjb25kID09IE5vblplcm8pIHx8
IChjb25kID09IFBvc2l0aXZlT3JaZXJvKSk7Ci0gICAgICAgIGFkZDMyKHNyYywgaW1tLCBkZXN0
KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25k
KSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQotICAgIHsKLSAgICAgICAg
QVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09
IFplcm8pCi0gICAgICAgICAgICB8fCAoY29uZCA9PSBOb25aZXJvKSB8fCAoY29uZCA9PSBQb3Np
dGl2ZU9yWmVybykpOwotICAgICAgICBhZGQzMihpbW0sIGRlc3QpOwotICAgICAgICByZXR1cm4g
SnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAg
SnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihzcmMsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgZGVzdCwgYWRkcmVzc1RlbXBS
ZWdpc3RlciwgZGVzdCk7Ci0gICAgfQotICAgIHZvaWQgbXVsbDMyKFJlZ2lzdGVySUQgb3AxLCBS
ZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKG9wMiA9
PSBkZXN0KSB7Ci0gICAgICAgICAgICBpZiAob3AxID09IGRlc3QpIHsKLSAgICAgICAgICAgICAg
ICBtb3ZlKG9wMiwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgb3AyID0g
YWRkcmVzc1RlbXBSZWdpc3RlcjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgLy8gU3dhcCB0aGUgb3BlcmFuZHMuCi0gICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCB0bXAg
PSBvcDE7Ci0gICAgICAgICAgICAgICAgb3AxID0gb3AyOwotICAgICAgICAgICAgICAgIG9wMiA9
IHRtcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtX2Fzc2VtYmxlci5tdWxs
KGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QsIG9wMSwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
Y21wKGRhdGFUZW1wUmVnaXN0ZXIsIG1fYXNzZW1ibGVyLmFzcihkZXN0LCAzMSkpOwotICAgIH0K
LQotICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
c3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBB
U1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0g
WmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxv
dykgewotICAgICAgICAgICAgbXVsbDMyKHNyYzEsIHNyYzIsIGRlc3QpOwotICAgICAgICAgICAg
Y29uZCA9IE5vblplcm87Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbXVs
MzIoc3JjMSwgc3JjMiwgZGVzdCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpt
cChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaE11bDMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIHNyYywgZGVzdCwgZGVzdCk7Ci0g
ICAgfQotCi0gICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29u
ZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Ci0gICAgICAgIGlmIChjb25kID09IE92
ZXJmbG93KSB7Ci0gICAgICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgICAgICBtdWxsMzIoYWRkcmVzc1RlbXBSZWdpc3Rlciwgc3JjLCBkZXN0KTsKLSAgICAg
ICAgICAgIGNvbmQgPSBOb25aZXJvOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG11bDMyKGltbSwgc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoU3Vi
MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
Ci0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNp
Z25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBz
dWIzMihzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJN
Q29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRD
b25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8
IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLSAgICAgICAgc3ViMzIoaW1t
LCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlv
bihjb25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
Ci0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNp
Z25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBz
dWIzMihzcmMsIGltbSwgZGVzdCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpt
cChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFN1YjMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwg
KGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN1YnMoZGVzdCwgb3AxLCBvcDIpOwotICAgICAgICByZXR1
cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0g
ICAgSnVtcCBicmFuY2hOZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNE
ZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9
PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLSAgICAg
ICAgbmVnMzIoc3JjRGVzdCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChB
Uk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaE9yMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewot
ICAgICAgICBBU1NFUlQoKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29u
ZCA9PSBOb25aZXJvKSk7Ci0gICAgICAgIG9yMzIoc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJu
IEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAg
IFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCgpCi0gICAgewotICAgICAgICByZXR1cm4gUGF0
Y2hhYmxlSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQXNzZW1ibGVyOjpBTCwgMSkpOwotICAgIH0K
LQotICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSkKLSAgICB7Ci0gICAgICAg
IFRydXN0ZWRJbW0zMiBpbW04ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBpbW0pOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Omxv
YWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwot
ICAgICAgICByZXR1cm4gcGF0Y2hhYmxlQnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwg
aW1tOCk7Ci0gICAgfQotCi0gICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMihSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgaW1tKQot
ICAgIHsKLSAgICAgICAgaW50ZXJuYWxDb21wYXJlMzIocmVnLCBpbW0pOwotICAgICAgICBKdW1w
IGp1bXAobV9hc3NlbWJsZXIubG9hZEJyYW5jaFRhcmdldChkYXRhVGVtcFJlZ2lzdGVyLCBBUk1D
b25kaXRpb24oY29uZCksIHRydWUpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYngoZGF0YVRlbXBS
ZWdpc3RlciwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKLSAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1
bXAoanVtcCk7Ci0gICAgfQotCi0gICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGlt
bSkKLSAgICB7Ci0gICAgICAgIGludGVybmFsQ29tcGFyZTMyKGFkZHJlc3MsIGltbSk7Ci0gICAg
ICAgIEp1bXAganVtcChtX2Fzc2VtYmxlci5sb2FkQnJhbmNoVGFyZ2V0KGRhdGFUZW1wUmVnaXN0
ZXIsIEFSTUNvbmRpdGlvbihjb25kKSwgZmFsc2UpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYngo
ZGF0YVRlbXBSZWdpc3RlciwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKLSAgICAgICAgcmV0dXJuIFBh
dGNoYWJsZUp1bXAoanVtcCk7Ci0gICAgfQotCi0gICAgdm9pZCBicmVha3BvaW50KCkKLSAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJrcHQoMCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wg
aXNCcmVha3BvaW50KHZvaWQqIGFkZHJlc3MpIHsgcmV0dXJuIEFSTUFzc2VtYmxlcjo6aXNCa3B0
KGFkZHJlc3MpOyB9Ci0KLSAgICBDYWxsIG5lYXJDYWxsKCkKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmxvYWRCcmFuY2hUYXJnZXQoZGF0YVRlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpB
TCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmJseChkYXRhVGVtcFJl
Z2lzdGVyKSwgQ2FsbDo6TGlua2FibGVOZWFyKTsKLSAgICB9Ci0KLSAgICBDYWxsIG5lYXJUYWls
Q2FsbCgpCi0gICAgewotICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5qbXAoKSwgQ2Fs
bDo6TGlua2FibGVOZWFyVGFpbCk7Ci0gICAgfQotCi0gICAgQ2FsbCBjYWxsKFJlZ2lzdGVySUQg
dGFyZ2V0LCBQdHJUYWcpCi0gICAgewotICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5i
bHgodGFyZ2V0KSwgQ2FsbDo6Tm9uZSk7Ci0gICAgfQotCi0gICAgdm9pZCBjYWxsKEFkZHJlc3Mg
YWRkcmVzcywgUHRyVGFnKQotICAgIHsKLSAgICAgICAgY2FsbDMyKGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgcmV0KCkKLSAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmJ4KGxpbmtSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBjb21wYXJlMzIo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmln
aHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0
LCByaWdodCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6Omdl
dE9wMkJ5dGUoMCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNQXNzZW1ibGVy
OjpnZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOwotICAgIH0KLQotICAgIHZvaWQg
Y29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVz
dGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmNtcChsZWZ0LCBtX2Fzc2VtYmxlci5nZXRJbW0ocmlnaHQubV92YWx1ZSwgYWRkcmVzc1Rl
bXBSZWdpc3RlcikpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNQXNzZW1ibGVy
OjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFzc2Vt
Ymxlcjo6Z2V0T3AyQnl0ZSgxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVz
dGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJ
bW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
Y29tcGFyZTMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCwgZGVzdCk7Ci0gICAgfQot
Ci0gICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBU
cnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKG1h
c2subV92YWx1ZSA9PSAtMSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIHJlZyk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIG1fYXNzZW1i
bGVyLmdldEltbShtYXNrLm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSksIEFS
TUNvbmRpdGlvbihjb25kKSk7Ci0gICAgfQotCi0gICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgdGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2ssIGRlc3QpOwotICAg
IH0KLQotICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVz
cywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIFRy
dXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgbWFzayk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9h
ZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIHRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCwgZGVzdCk7Ci0gICAg
fQotCi0gICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRlc3QsIHNyYywg
bV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7Ci0g
ICAgfQotCi0gICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLm1fcHRyLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgYWRkMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
c3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQotICAg
IHsKLSAgICAgICAgQVJNV29yZCB0bXA7Ci0KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFk
ZHJlc3MubV9wdHIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRy
VXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVt
cFJlZ2lzdGVyLCAwKTsKLQotICAgICAgICBpZiAoKHRtcCA9IEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
KGltbS5tX3ZhbHVlKSkgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKQotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkcyhhZGRyZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCB0bXApOwotICAgICAgICBlbHNlIGlmICgodG1wID0gQVJNQXNzZW1ibGVyOjpnZXRP
cDIoLWltbS5tX3ZhbHVlKSkgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKQotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc3VicyhhZGRyZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyLCB0bXApOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmFkZHMoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbV9hc3NlbWJs
ZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBkYXRhVGVtcFJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICB9Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50
MzIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIDApOwotCi0gICAgICAg
IG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgYWRkcmVzc1RlbXBS
ZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgaWYg
KGltbS5tX3ZhbHVlID49IDApCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGMoYWRkcmVzc1Rl
bXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRl
KDApKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2JjKGFkZHJlc3NU
ZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0
ZSgwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50
MzIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIHNpemVvZihBUk1Xb3Jk
KSk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFk
ZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLm1fcHRyLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3ViMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAg
ICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGxvYWQzMihjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoYWRkcmVzc1RlbXBS
ZWdpc3RlciwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgMCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQotICAg
IHsKLSAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOwotICAgIH0K
LQotICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFk
ZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKGxl
ZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29u
ZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOwotICAgIH0KLQotICAgIHZvaWQgcmVsYXRpdmVU
YWJsZUp1bXAoUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKHNjYWxlID49IDAgJiYgc2NhbGUgPD0gMzEpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQo
QVJNUmVnaXN0ZXJzOjpwYywgQVJNUmVnaXN0ZXJzOjpwYywgbV9hc3NlbWJsZXIubHNsKGluZGV4
LCBzY2FsZSkpOwotCi0gICAgICAgIC8vIE5PUCB0aGUgZGVmYXVsdCBwcmVmZXRjaGluZwotICAg
ICAgICBtX2Fzc2VtYmxlci5tb3YoQVJNUmVnaXN0ZXJzOjpyMCwgQVJNUmVnaXN0ZXJzOjpyMCk7
Ci0gICAgfQotCi0gICAgQ2FsbCBjYWxsKFB0clRhZykKLSAgICB7Ci0gICAgICAgIGVuc3VyZVNw
YWNlKDIgKiBzaXplb2YoQVJNV29yZCksIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmxvYWRCcmFuY2hUYXJnZXQoZGF0YVRlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpB
TCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmJseChkYXRhVGVtcFJl
Z2lzdGVyKSwgQ2FsbDo6TGlua2FibGUpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgQ2Fs
bCBjYWxsKFJlZ2lzdGVySUQgY2FsbFRhZykgeyByZXR1cm4gVU5VU0VEX1BBUkFNKGNhbGxUYWcp
LCBjYWxsKE5vUHRyVGFnKTsgfQotICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVy
SUQgdGFyZ2V0LCBSZWdpc3RlcklEIGNhbGxUYWcpIHsgcmV0dXJuIFVOVVNFRF9QQVJBTShjYWxs
VGFnKSwgY2FsbCh0YXJnZXQsIE5vUHRyVGFnKTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBj
YWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBjYWxsVGFnKSB7IFVOVVNFRF9QQVJBTShj
YWxsVGFnKSwgY2FsbChhZGRyZXNzLCBOb1B0clRhZyk7IH0KLQotICAgIENhbGwgdGFpbFJlY3Vy
c2l2ZUNhbGwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIENhbGw6OmZyb21UYWlsSnVtcChqdW1w
KCkpOwotICAgIH0KLQotICAgIENhbGwgbWFrZVRhaWxSZWN1cnNpdmVDYWxsKEp1bXAgb2xkSnVt
cCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBDYWxsOjpmcm9tVGFpbEp1bXAob2xkSnVtcCk7Ci0g
ICAgfQotCi0gICAgRGF0YUxhYmVsUHRyIG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0
aWFsVmFsdWUsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIERhdGFMYWJlbFB0ciBk
YXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShk
ZXN0LCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGluaXRpYWxWYWx1ZS5tX3ZhbHVlKSk7Ci0g
ICAgICAgIHJldHVybiBkYXRhTGFiZWw7Ci0gICAgfQotCi0gICAgRGF0YUxhYmVsMzIgbW92ZVdp
dGhQYXRjaChUcnVzdGVkSW1tMzIgaW5pdGlhbFZhbHVlLCBSZWdpc3RlcklEIGRlc3QpCi0gICAg
ewotICAgICAgICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmxkclVuaXF1ZUltbWVkaWF0ZShkZXN0LCBzdGF0aWNfY2FzdDxBUk1Xb3JkPihpbml0aWFs
VmFsdWUubV92YWx1ZSkpOwotICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwotICAgIH0KLQotICAg
IEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFs
UmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cikpCi0gICAgewotICAgICAgICBlbnN1
cmVTcGFjZSgzICogc2l6ZW9mKEFSTVdvcmQpLCAyICogc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAg
ICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgZGF0YVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIEp1bXAganVtcCA9IGJyYW5jaDMyKGNvbmQsIGxlZnQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIHRydWUpOwotICAgICAgICByZXR1cm4ganVtcDsKLSAgICB9Ci0KLSAgICBK
dW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3Mg
bGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0
VmFsdWUgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGxl
ZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBlbnN1cmVTcGFjZSgzICogc2l6ZW9mKEFS
TVdvcmQpLCAyICogc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdp
dGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IEp1bXAganVtcCA9IGJyYW5jaDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1w
UmVnaXN0ZXIsIHRydWUpOwotICAgICAgICByZXR1cm4ganVtcDsKLSAgICB9Ci0KLSAgICBKdW1w
IGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0
LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUg
PSBUcnVzdGVkSW1tMzIoMCkpCi0gICAgewotICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIGVuc3VyZVNwYWNlKDMgKiBzaXplb2YoQVJNV29yZCksIDIgKiBz
aXplb2YoQVJNV29yZCkpOwotICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRp
YWxSaWdodFZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgSnVtcCBqdW1wID0g
YnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgdHJ1
ZSk7Ci0gICAgICAgIHJldHVybiBqdW1wOwotICAgIH0KLQotICAgIERhdGFMYWJlbFB0ciBzdG9y
ZVB0cldpdGhQYXRjaChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRyZXNz
IGFkZHJlc3MpCi0gICAgewotICAgICAgICBEYXRhTGFiZWxQdHIgZGF0YUxhYmVsID0gbW92ZVdp
dGhQYXRjaChpbml0aWFsVmFsdWUsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBzdG9yZTMy
KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOwotICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwot
ICAgIH0KLQotICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChJbXBsaWNpdEFkZHJl
c3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdG9yZVB0cldpdGhQYXRjaChUcnVz
dGVkSW1tUHRyKG51bGxwdHIpLCBhZGRyZXNzKTsKLSAgICB9Ci0KLSAgICAvLyBGbG9hdGluZyBw
b2ludCBvcGVyYXRvcnMKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHNfaXNWRlBQcmVzZW50OwotICAgIH0KLQotICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9p
bnRTcXJ0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzX2lzVkZQUHJlc2VudDsKLSAgICB9Ci0g
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50QWJzKCkgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0KLQotICAgIHZvaWQgbG9hZEZsb2F0KEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRhdGFU
cmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6TG9hZEZsb2F0LCBkZXN0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWRGbG9hdChCYXNlSW5kZXgg
YWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5i
YXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6TG9hZEZsb2F0LCBkZXN0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSks
IGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWREb3VibGUoSW1wbGljaXRB
ZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuZGF0YVRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpMb2FkRG91YmxlLCBkZXN0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWREb3Vi
bGUoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXJGbG9hdChBUk1Bc3NlbWJsZXI6OkxvYWREb3Vi
bGUsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50Pihh
ZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZERv
dWJsZShUcnVzdGVkSW1tUHRyIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgbW92ZShUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNz
Lm1fdmFsdWUpKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRv
dWJsZUR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZERvdWJsZSwgZGVzdCwgYWRkcmVzc1RlbXBSZWdp
c3RlciwgMCk7Ci0gICAgfQotCi0gICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGNlaWxE
b3VibGUoRlBSZWdpc3RlcklELCBGUFJlZ2lzdGVySUQpCi0gICAgewotICAgICAgICBBU1NFUlQo
IXN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkpOwotICAgICAgICBDUkFTSCgpOwotICAg
IH0KLQotICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBmbG9vckRvdWJsZShGUFJlZ2lz
dGVySUQsIEZQUmVnaXN0ZXJJRCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghc3VwcG9ydHNGbG9h
dGluZ1BvaW50Um91bmRpbmcoKSk7Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgfQotCi0gICAgTk9f
UkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHJvdW5kVG93YXJkWmVyb0RvdWJsZShGUFJlZ2lzdGVy
SUQsIEZQUmVnaXN0ZXJJRCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghc3VwcG9ydHNGbG9hdGlu
Z1BvaW50Um91bmRpbmcoKSk7Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgfQotCi0gICAgdm9pZCBz
dG9yZUZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpT
dG9yZUZsb2F0LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQot
ICAgIHZvaWQgc3RvcmVGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykK
LSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyRmxvYXQoQVJNQXNz
ZW1ibGVyOjpTdG9yZUZsb2F0LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3Rh
dGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQot
ICAgIHZvaWQgc3RvcmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFk
ZHJlc3MpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXJGbG9hdChBUk1B
c3NlbWJsZXI6OlN0b3JlRG91YmxlLCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQp
OwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgQmFzZUlu
ZGV4IGFkZHJlc3MpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2Zl
ckZsb2F0KEFSTUFzc2VtYmxlcjo6U3RvcmVEb3VibGUsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNl
dCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBUcnVz
dGVkSW1tUHRyIGFkZHJlc3MpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWlu
dGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MubV92YWx1ZSkpLCBhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVy
OjpTdG9yZURvdWJsZSwgc3JjLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCAwKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBpZiAoc3JjICE9IGRlc3QpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci52
bW92X2Y2NChkZXN0LCBzcmMpOwotICAgIH0KLQotICAgIHZvaWQgbW92ZVplcm9Ub0RvdWJsZShG
UFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgc3RhdGljIGRvdWJsZSB6ZXJvQ29uc3Rh
bnQgPSAwLjsKLSAgICAgICAgbG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZ6ZXJvQ29uc3RhbnQp
LCByZWcpOwotICAgIH0KLQotICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmFkZF9mNjQoZGVz
dCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQg
b3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLnZhZGRfZjY0KGRlc3QsIG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGFkZERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAg
ICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICBhZGREb3VibGUoZnBU
ZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgYWRkRG91YmxlKEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWRE
b3VibGUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgZnBUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICBhZGREb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQg
ZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIudmRpdl9mNjQoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZkaXZfZjY0KGRlc3Qs
IG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpdkRvdWJsZShBZGRyZXNzIHNyYywgRlBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyAvLyBVbnRlc3RlZAotICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIp
OwotICAgICAgICBkaXZEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAg
IHZvaWQgc3ViRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIudnN1Yl9mNjQoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3Ay
LCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZzdWJfZjY0
KGRlc3QsIG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YkRvdWJsZShBZGRyZXNzIHNy
YywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBU
ZW1wUmVnaXN0ZXIpOwotICAgICAgICBzdWJEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwot
ICAgIH0KLQotICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm11bF9mNjQoZGVzdCwgZGVzdCwg
c3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIG11bERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIp
OwotICAgICAgICBtdWxEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAg
IHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVn
aXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm11bF9mNjQoZGVzdCwg
b3AxLCBvcDIpOwotICAgIH0KLQotICAgIHZvaWQgc3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3Jj
LCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZzcXJ0X2Y2
NChkZXN0LCBzcmMpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFic0RvdWJsZShGUFJlZ2lzdGVy
SUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZh
YnNfZjY0KGRlc3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBuZWdhdGVEb3VibGUoRlBSZWdp
c3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci52bmVnX2Y2NChkZXN0LCBzcmMpOwotICAgIH0KLQotICAgIHZvaWQgY29udmVydEludDMyVG9E
b3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIudm1vdl92ZnAzMihkZXN0IDw8IDEsIHNyYyk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLnZjdnRfZjY0X3MzMihkZXN0LCBkZXN0IDw8IDEpOwotICAgIH0KLQotICAgIHZvaWQgY29u
dmVydEludDMyVG9Eb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgbG9hZDMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnZlcnRJ
bnQzMlRvRG91YmxlKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQg
Y29udmVydEludDMyVG9Eb3VibGUoQWJzb2x1dGVBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRl
c3QpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgZGF0YVRl
bXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIpLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoZGF0YVRlbXBS
ZWdpc3RlciwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBjb252ZXJ0RmxvYXRUb0RvdWJsZShG
UFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIudmN2dF9mNjRfZjMyKGRzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbnZlcnRE
b3VibGVUb0Zsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCi0gICAgewot
ICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2YzMl9mNjQoZHN0LCBzcmMpOwotICAgIH0KLQotICAg
IEp1bXAgYnJhbmNoRG91YmxlKERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVm
dCwgRlBSZWdpc3RlcklEIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmNtcF9m
NjQobGVmdCwgcmlnaHQpOwotICAgICAgICBtX2Fzc2VtYmxlci52bXJzX2Fwc3IoKTsKLSAgICAg
ICAgaWYgKGNvbmQgJiBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFsKQotICAgICAgICAgICAgbV9h
c3NlbWJsZXIuY21wKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIEFS
TUFzc2VtYmxlcjo6VlMpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoc3Rh
dGljX2Nhc3Q8QVJNQXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQgJiB+RG91YmxlQ29uZGl0aW9u
TWFzaykpKTsKLSAgICB9Ci0KLSAgICAvLyBUcnVuY2F0ZXMgJ3NyYycgdG8gYW4gaW50ZWdlciwg
YW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KLSAgICAvLyBJZiB0aGUgcmVzdWx0IGlz
IG5vdCByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCi0gICAgLy8gTWF5
IGFsc28gYnJhbmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMy
IGJpdHMKLSAgICAvLyAoc3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIElOVF9NSU4pLgotICAg
IGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCwgQnJhbmNo
SWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKLSAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9J
bnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlw
ZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKLSAgICB7Ci0gICAgICAgIHRy
dW5jYXRlRG91YmxlVG9JbnQzMihzcmMsIGRlc3QpOwotCi0gICAgICAgIG1fYXNzZW1ibGVyLmFk
ZChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkp
OwotICAgICAgICBtX2Fzc2VtYmxlci5iaWMoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsKLQotICAgICAgICBBUk1X
b3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMigweDgwMDAwMDAwKTsKLSAgICAgICAgQVNTRVJU
KHcgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuY21wKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHcpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qbXAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkID8gQVJNQXNz
ZW1ibGVyOjpFUSA6IEFSTUFzc2VtYmxlcjo6TkUpKTsKLSAgICB9Ci0KLSAgICAvLyBSZXN1bHQg
aXMgdW5kZWZpbmVkIGlmIHRoZSB2YWx1ZSBpcyBvdXRzaWRlIG9mIHRoZSBpbnRlZ2VyIHJhbmdl
LgotICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfczMyX2Y2NChmcFRl
bXBSZWdpc3RlciA8PCAxLCBzcmMpOwotICAgICAgICBtX2Fzc2VtYmxlci52bW92X2FybTMyKGRl
c3QsIGZwVGVtcFJlZ2lzdGVyIDw8IDEpOwotICAgIH0KLQotICAgIHZvaWQgdHJ1bmNhdGVEb3Vi
bGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci52Y3Z0X3UzMl9mNjQoZnBUZW1wUmVnaXN0ZXIgPDwgMSwgc3JjKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMihkZXN0LCBmcFRlbXBSZWdpc3RlciA8PCAx
KTsKLSAgICB9Ci0KLSAgICAvLyBDb252ZXJ0ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFj
ZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCi0gICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVw
cmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgotICAgIC8vIE1heSBhbHNvIGJy
YW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCi0g
ICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCAwKS4KLSAgICB2b2lkIGJyYW5jaENv
bnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVt
cExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklELCBib29sIG5lZ1plcm9DaGVjayA9IHRy
dWUpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3MzMl9mNjQoZnBUZW1wUmVnaXN0
ZXIgPDwgMSwgc3JjKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMihkZXN0LCBmcFRl
bXBSZWdpc3RlciA8PCAxKTsKLQotICAgICAgICAvLyBDb252ZXJ0IHRoZSBpbnRlZ2VyIHJlc3Vs
dCBiYWNrIHRvIGZsb2F0ICYgY29tcGFyZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUgLSBpZiBub3Qg
ZXF1YWwgb3IgdW5vcmRlcmVkIChOYU4pIHRoZW4ganVtcC4KLSAgICAgICAgbV9hc3NlbWJsZXIu
dmN2dF9mNjRfczMyKGZwVGVtcFJlZ2lzdGVyLCBmcFRlbXBSZWdpc3RlciA8PCAxKTsKLSAgICAg
ICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWxPclVub3Jk
ZXJlZCwgc3JjLCBmcFRlbXBSZWdpc3RlcikpOwotCi0gICAgICAgIC8vIElmIHRoZSByZXN1bHQg
aXMgemVybywgaXQgbWlnaHQgaGF2ZSBiZWVuIC0wLjAsIGFuZCAwLjAgZXF1YWxzIHRvIC0wLjAK
LSAgICAgICAgaWYgKG5lZ1plcm9DaGVjaykKLSAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBl
bmQoYnJhbmNoVGVzdDMyKFplcm8sIGRlc3QpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaERv
dWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCi0gICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1i
bGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoYWRkcmVz
c1RlbXBSZWdpc3Rlciwgc2NyYXRjaCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91
YmxlTm90RXF1YWwsIHJlZywgc2NyYXRjaCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hEb3Vi
bGVaZXJvT3JOYU4oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCi0gICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1i
bGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoYWRkcmVz
c1RlbXBSZWdpc3Rlciwgc2NyYXRjaCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91
YmxlRXF1YWxPclVub3JkZXJlZCwgcmVnLCBzY3JhdGNoKTsKLSAgICB9Ci0KLSAgICAvLyBJbnZl
cnQgYSByZWxhdGlvbmFsIGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMg
Pj0sIGV0Yy4KLSAgICBzdGF0aWMgUmVsYXRpb25hbENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kKQotICAgIHsKLSAgICAgICAgQVNTRVJUKChzdGF0aWNfY2FzdDx1aW50
MzJfdD4oY29uZCAmIDB4MGZmZmZmZmYpKSA9PSAwICYmIHN0YXRpY19jYXN0PHVpbnQzMl90Pihj
b25kKSA8IHN0YXRpY19jYXN0PHVpbnQzMl90PihBUk1Bc3NlbWJsZXI6OkFMKSk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbmFsQ29uZGl0aW9uPihjb25kIF4gMHgxMDAwMDAw
MCk7Ci0gICAgfQotCi0gICAgdm9pZCBub3AoKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bm9wKCk7Ci0gICAgfQotCi0gICAgdm9pZCBtZW1vcnlGZW5jZSgpCi0gICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5kbWJTWSgpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVGZW5jZSgpCi0gICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5kbWJJU0hTVCgpOwotICAgIH0KLQotICAgIHRlbXBsYXRl
PFB0clRhZyByZXN1bHRUYWcsIFB0clRhZyBsb2NhdGlvblRhZz4KLSAgICBzdGF0aWMgRnVuY3Rp
b25QdHI8cmVzdWx0VGFnPiByZWFkQ2FsbFRhcmdldChDb2RlTG9jYXRpb25DYWxsPGxvY2F0aW9u
VGFnPiBjYWxsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyPHJlc3VsdFRhZz4o
cmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQo
Y2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgc3Rh
cnRUYWcsIFB0clRhZyBkZXN0VGFnPgotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChD
b2RlTG9jYXRpb25MYWJlbDxzdGFydFRhZz4gaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9u
TGFiZWw8ZGVzdFRhZz4gZGVzdGluYXRpb24pCi0gICAgewotICAgICAgICBBUk1Bc3NlbWJsZXI6
OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5h
dGlvbi5kYXRhTG9jYXRpb24oKSk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qg
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gQVJNQXNzZW1i
bGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHB0cmRp
ZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gQVJNQXNzZW1i
bGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGNhbkp1
bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNo
KCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+Ci0gICAgc3Rh
dGljIENvZGVMb2NhdGlvbkxhYmVsPHRhZz4gc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBh
dGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyPHRhZz4pCi0gICAgewotICAgICAg
ICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlv
bkxhYmVsPHRhZz4oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0
YXRpYyBDb2RlTG9jYXRpb25MYWJlbDx0YWc+IHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRo
UGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPHRhZz4pCi0gICAgewotICAg
ICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICAgICAgcmV0dXJuIENvZGVMb2Nh
dGlvbkxhYmVsPHRhZz4oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAg
IHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbDx0YWc+IHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hP
blJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjx0YWc+IGxhYmVsKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGxhYmVsLmxhYmVsQXRPZmZzZXQoMCk7Ci0gICAgfQotCi0gICAgdGVtcGxh
dGU8UHRyVGFnIHRhZz4KLSAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0Jy
YW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbDx0YWc+IGluc3RydWN0aW9uU3RhcnQs
IFJlZ2lzdGVySUQgcmVnLCB2b2lkKiBpbml0aWFsVmFsdWUpCi0gICAgewotICAgICAgICBBUk1B
c3NlbWJsZXI6OnJldmVydEJyYW5jaFB0cldpdGhQYXRjaChpbnN0cnVjdGlvblN0YXJ0LmRhdGFM
b2NhdGlvbigpLCByZWcsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihpbml0aWFsVmFsdWUp
ICYgMHhmZmZmKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRp
YyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2go
Q29kZUxvY2F0aW9uTGFiZWw8dGFnPiwgQWRkcmVzcywgaW50MzJfdCkKLSAgICB7Ci0gICAgICAg
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPFB0clRh
ZyB0YWc+Ci0gICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWw8dGFnPiwgQWRkcmVzcywgdm9pZCop
Ci0gICAgewotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZTxQdHJUYWcgY2FsbFRhZywgUHRyVGFnIGRlc3RUYWc+Ci0gICAgc3RhdGljIHZv
aWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxjYWxsVGFnPiBjYWxsLCBDb2RlTG9jYXRp
b25MYWJlbDxkZXN0VGFnPiBkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAgICAgIEFSTUFzc2VtYmxl
cjo6cmVsaW5rQ2FsbChjYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxl
QWRkcmVzcygpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgY2FsbFRhZywgUHRyVGFn
IGRlc3RUYWc+Ci0gICAgc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxj
YWxsVGFnPiBjYWxsLCBGdW5jdGlvblB0cjxkZXN0VGFnPiBkZXN0aW5hdGlvbikKLSAgICB7Ci0g
ICAgICAgIEFSTUFzc2VtYmxlcjo6cmVsaW5rQ2FsbChjYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0
aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBB
Uk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFSTUFzc2VtYmxlcjo6Q29u
ZGl0aW9uPihjb25kKTsKLSAgICB9Ci0KLSAgICBBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1D
b25kaXRpb24oUmVzdWx0Q29uZGl0aW9uIGNvbmQpCi0gICAgewotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QVJNQXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOwotICAgIH0KLQotICAgIHZv
aWQgZW5zdXJlU3BhY2UoaW50IGluc25TcGFjZSwgaW50IGNvbnN0U3BhY2UpCi0gICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5lbnN1cmVTcGFjZShpbnNuU3BhY2UsIGNvbnN0U3BhY2UpOwotICAg
IH0KLQotICAgIGludCBzaXplT2ZDb25zdGFudFBvb2woKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXNzZW1ibGVyLnNpemVPZkNvbnN0YW50UG9vbCgpOwotICAgIH0KLQotICAgIHZvaWQgY2Fs
bDMyKFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpCi0gICAgewotICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhiYXNlLCBvZmZzZXQpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYmx4KGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBm
cmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKLQotICAgIHZvaWQgaW50ZXJuYWxDb21wYXJlMzIoUmVn
aXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewotICAgICAgICBBUk1Xb3Jk
IHRtcCA9ICghcmlnaHQubV92YWx1ZSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmlnaHQubV92
YWx1ZSkgPT0gMHg4MDAwMDAwMCkgPyBBUk1Bc3NlbWJsZXI6OkludmFsaWRJbW1lZGlhdGUgOiBt
X2Fzc2VtYmxlci5nZXRPcDIoLXJpZ2h0Lm1fdmFsdWUpOwotICAgICAgICBpZiAodG1wICE9IEFS
TUFzc2VtYmxlcjo6SW52YWxpZEltbWVkaWF0ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNt
bihsZWZ0LCB0bXApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXAo
bGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGludGVybmFsQ29tcGFyZTMyKEFkZHJlc3MgbGVmdCwg
VHJ1c3RlZEltbTMyIHJpZ2h0KQotICAgIHsKLSAgICAgICAgQVJNV29yZCB0bXAgPSAoIXJpZ2h0
Lm1fdmFsdWUgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJpZ2h0Lm1fdmFsdWUpID09IDB4ODAw
MDAwMDApID8gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlIDogbV9hc3NlbWJsZXIuZ2V0
T3AyKC1yaWdodC5tX3ZhbHVlKTsKLSAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0
ZXIpOwotICAgICAgICBpZiAodG1wICE9IEFSTUFzc2VtYmxlcjo6SW52YWxpZEltbWVkaWF0ZSkK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtbihkYXRhVGVtcFJlZ2lzdGVyLCB0bXApOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXAoZGF0YVRlbXBSZWdpc3Rlciwg
bV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRpYyB2b2lkIGxpbmtD
YWxsKHZvaWQqIGNvZGUsIENhbGwgY2FsbCwgRnVuY3Rpb25QdHI8dGFnPiBmdW5jdGlvbikKLSAg
ICB7Ci0gICAgICAgIGlmIChjYWxsLmlzRmxhZ1NldChDYWxsOjpUYWlsKSkKLSAgICAgICAgICAg
IEFSTUFzc2VtYmxlcjo6bGlua0p1bXAoY29kZSwgY2FsbC5tX2xhYmVsLCBmdW5jdGlvbi5leGVj
dXRhYmxlQWRkcmVzcygpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQVJNQXNzZW1ibGVy
OjpsaW5rQ2FsbChjb2RlLCBjYWxsLm1fbGFiZWwsIGZ1bmN0aW9uLmV4ZWN1dGFibGVBZGRyZXNz
KCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBib29sIHNfaXNWRlBQcmVzZW50OwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKSAmJiBD
UFUoQVJNX1RSQURJVElPTkFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9QZXJmTG9nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUGVy
ZkxvZy5jcHAKaW5kZXggNWM5NDM5MTcxODczZDdmZmRjZDcwZmZjNzNmZWU2NGUyMjc3ZDk1NC4u
ZGU5NjU1NDE2M2E2Njk5ODU4ZTZhNjZiMjM5MmJlM2JkNjUzMjA1MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9QZXJmTG9nLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1BlcmZMb2cuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bmNsdWRlIDxlbGYuaD4KICNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPG11dGV4PgogI2lu
Y2x1ZGUgPHN5cy9tbWFuLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMv
c3lzY2FsbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Q
ZXJmTG9nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1BlcmZMb2cuaAppbmRl
eCA5YzZiYWIzM2U4MmM2YWZiYWRhZGYwOWYwYzkzMTYyZmNmMjdlNmI1Li44ZjI0ZThmYThhM2Ux
YjZiYzk2ZDU5OGI1ZDBmMjUxNTBhN2ZmNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1BlcmZMb2cuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1BlcmZMb2cuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4K
ICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvUHJvYmVDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1By
b2JlQ29udGV4dC5oCmluZGV4IDRlZTZlZWE4ZTczYjkxMmJhZTZhZGUwMGM5YmI4YjNkODJhODEy
MGMuLjdmNTE5MWQ1MGJmZTE0Zjc1ZGJiMDVkODJmYmQ5ZmIxOGE4MGY4YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaApAQCAtMTEyLDcgKzEx
Miw3IEBAIGlubGluZSB2b2lkKiYgQ1BVU3RhdGU6OnBjKCkKICAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmc3ByKFg4NlJlZ2lzdGVyczo6ZWlwKSk7CiAjZWxpZiBDUFUoQVJN
NjQpCiAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnNwcihBUk02NFJlZ2lz
dGVyczo6cGMpKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFM
KQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZv
aWQqKj4oJmdwcihBUk1SZWdpc3RlcnM6OnBjKSk7CiAjZWxpZiBDUFUoTUlQUykKICAgICByZXR1
cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmc3ByKE1JUFNSZWdpc3RlcnM6OnBjKSk7CkBA
IC0xMjcsNyArMTI3LDcgQEAgaW5saW5lIHZvaWQqJiBDUFVTdGF0ZTo6ZnAoKQogICAgIHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoWDg2UmVnaXN0ZXJzOjplYnApKTsKICNl
bGlmIENQVShBUk02NCkKICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3By
KEFSTTY0UmVnaXN0ZXJzOjpmcCkpOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1f
VFJBRElUSU9OQUwpCisjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKEFSTVJlZ2lzdGVyczo6ZnApKTsKICNlbGlmIENQVShNSVBT
KQogICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoTUlQU1JlZ2lzdGVy
czo6ZnApKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBpbmxpbmUgdm9pZComIENQVVN0YXRlOjpzcCgp
CiAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihYODZSZWdpc3RlcnM6
OmVzcCkpOwogI2VsaWYgQ1BVKEFSTTY0KQogICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KCZncHIoQVJNNjRSZWdpc3RlcnM6OnNwKSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikg
fHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgIHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNUmVnaXN0ZXJzOjpzcCkpOwogI2Vs
aWYgQ1BVKE1JUFMpCiAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihN
SVBTUmVnaXN0ZXJzOjpzcCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcAppbmRleCAxZDc3ZDgwOGJjMGExZjA5YzFiZTEyODAwYzk0MTlhYTcxYTZhZWJk
Li4zZTc1NTc0YjIxZDBlMGQ3MmZlOGM4N2E2NWQ1NjcyOGU1NDgyNDA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMTExLDcgKzExMSw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgbmV4dElEKFQgaWQpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PFQ+KGlkICsgMSk7IH0KICNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKIGJvb2wgaXNQQyhNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCBpZCkKIHsKLSNpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFS
TV9UUkFESVRJT05BTCkKKyNpZiBDUFUoQVJNX1RIVU1CMikKICAgICByZXR1cm4gaWQgPT0gQVJN
UmVnaXN0ZXJzOjpwYzsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGlkKTsKQEAgLTU3Myw3ICs1
NzMsNyBAQCB2b2lkIHRlc3RQcm9iZU1vZGlmaWVzU3RhY2tQb2ludGVyKFdURjo6RnVuY3Rpb248
dm9pZCooUHJvYmU6OkNvbnRleHQmKT4gY29tcHV0ZQogI2lmIENQVShYODYpIHx8IENQVShYODZf
NjQpCiAgICAgYXV0byBmbGFnc1NQUiA9IFg4NlJlZ2lzdGVyczo6ZWZsYWdzOwogICAgIHVpbnRw
dHJfdCBmbGFnc01hc2sgPSAweGM1OwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1f
VFJBRElUSU9OQUwpCisjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICBhdXRvIGZsYWdzU1BSID0g
QVJNUmVnaXN0ZXJzOjphcHNyOwogICAgIHVpbnRwdHJfdCBmbGFnc01hc2sgPSAweGY4MDAwMDAw
OwogI2VsaWYgQ1BVKEFSTTY0KQpAQCAtNzUzLDcgKzc1Myw3IEBAIHZvaWQgdGVzdFByb2JlTW9k
aWZpZXNTdGFja1ZhbHVlcygpCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICBNYWNy
b0Fzc2VtYmxlcjo6U1BSZWdpc3RlcklEIGZsYWdzU1BSID0gWDg2UmVnaXN0ZXJzOjplZmxhZ3M7
CiAgICAgdWludHB0cl90IGZsYWdzTWFzayA9IDB4YzU7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikg
fHwgQ1BVKEFSTV9UUkFESVRJT05BTCkKKyNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgIE1hY3Jv
QXNzZW1ibGVyOjpTUFJlZ2lzdGVySUQgZmxhZ3NTUFIgPSBBUk1SZWdpc3RlcnM6OmFwc3I7CiAg
ICAgdWludHB0cl90IGZsYWdzTWFzayA9IDB4ZjgwMDAwMDA7CiAjZWxpZiBDUFUoQVJNNjQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0NhcHN0b25lRGlz
YXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQ2Fwc3Rv
bmVEaXNhc3NlbWJsZXIuY3BwCmluZGV4IGE2ZmYyMjcxMGYwOTllODdkMTljZmNkMjE1ODAyN2Jm
YmI1ZWFhODEuLjY4ZGQ2NGNiNzg0OTU1OGRmM2QzMDIxNDllMDZiZDAwMmY3YTg0OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQ2Fwc3RvbmVEaXNhc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQ2Fwc3Rv
bmVEaXNhc3NlbWJsZXIuY3BwCkBAIC00NCw5ICs0NCw2IEBAIGJvb2wgdHJ5VG9EaXNhc3NlbWJs
ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2RlUHRy
LCBzCiAjZWxpZiBDUFUoWDg2XzY0KQogICAgIGlmIChjc19vcGVuKENTX0FSQ0hfWDg2LCBDU19N
T0RFXzY0LCAmaGFuZGxlKSAhPSBDU19FUlJfT0spCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNl
bGlmIENQVShBUk1fVFJBRElUSU9OQUwpCi0gICAgaWYgKGNzX29wZW4oQ1NfQVJDSF9BUk0sIENT
X01PREVfQVJNLCAmaGFuZGxlKSAhPSBDU19FUlJfT0spCi0gICAgICAgIHJldHVybiBmYWxzZTsK
ICNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgIGlmIChjc19vcGVuKENTX0FSQ0hfQVJNLCBDU19N
T0RFX1RIVU1CLCAmaGFuZGxlKSAhPSBDU19FUlJfT0spCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3Bw
CmluZGV4IDk1Y2NjZmIzNGQ2MzA4ZjU5ZTIwMjc5ZTc2NDJiN2JiOTNkMzQwZDEuLmEyMmM0MGQx
MTMzMzNlYjU0NGI5ZTI3NWZkOTIyNDMzYWIwOTlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcApAQCAtODUsMTcgKzg1LDYgQEAg
U1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgogICAgICJiICIg
TE9DQUxfUkVGRVJFTkNFKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4i
CiApOwogCi0jZWxpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgQ1BVKEFSTV9UUkFESVRJ
T05BTCkKLWFzbSAoCi0iLnRleHQiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICJcbiIKLUlOTElORV9BUk1fRlVOQ1RJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkKLVNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAic3ViIHIw
LCBzcCwgIzgiICJcbiIKLSAgICAiYiAiIExPQ0FMX1JFRkVSRU5DRShnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLQogI2VsaWYgQ1BVKEFSTTY0KQogYXNtICgK
ICIudGV4dCIgIlxuIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRN
YXRoSUMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKaW5kZXggNmU3
ODU5ZDUyNmYwMGRiZmRkZWUxYjY5ODVmODFkMzYwNjIxMTk1ZS4uYzg4NzZkMGRiODYyNzk1OTZh
ZGJmYjI2OWMyZTEwZmRkNDIzYWZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRNYXRoSUMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJ
Qy5oCkBAIC02OCwxMyArNjgsNiBAQCBjbGFzcyBKSVRNYXRoSUMgewogCiAgICAgYm9vbCBnZW5l
cmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSwgYm9vbCBzaG91bGRFbWl0UHJvZmlsaW5nID0gdHJ1ZSkKICAgICB7Ci0jaWYgQ1BVKEFSTV9U
UkFESVRJT05BTCkKLSAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdvcmthcm91bmQgb25j
ZSB0aGUgcHJvcGVyIGZpeGVzIGFyZSBsYW5kZWQuCi0gICAgICAgIC8vIFtBUk1dIERpc2FibGUg
SW5saW5lIENhY2hpbmcgb24gQVJNdjcgdHJhZGl0aW9uYWwgdW50aWwgcHJvcGVyIGZpeAotICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NzU5Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCiAgICAgICAgIHN0YXRlLmZhc3RQYXRoU3Rh
cnQgPSBqaXQubGFiZWwoKTsKICAgICAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2Vt
Ymxlci5idWZmZXIoKS5jb2RlU2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVn
aXN0ZXJTZXQuY3BwCmluZGV4IGEzZWU3NDczN2RhNzNiZGUyZjVhZGE3MmZmZTNmZTlmNDE4MTA2
OTMuLmM1MDA5ZDIzMTFmMDJkMjMxNDY5NmEzYjY2ZTc4N2FlMjllMWM5NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFJlZ2lz
dGVyU2V0IFJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkKICNlbHNlCiAg
ICAgcmV0dXJuIFJlZ2lzdGVyU2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CiAjZW5kaWYgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJ
VElPTkFMKQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgcmV0dXJuIFJlZ2lzdGVyU2V0KEFS
TVJlZ2lzdGVyczo6bHIsIEFSTVJlZ2lzdGVyczo6cGMpOwogI2Vsc2UKICAgICByZXR1cm4geyB9
OwpAQCAtMTM3LDE1ICsxMzcsNiBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2
ZVJlZ2lzdGVycygpCiAjZW5kaWYKICAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjEwKTsK
ICAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjExKTsKLSNlbGlmIENQVShBUk1fVFJBRElU
SU9OQUwpCi0gICAgcmVzdWx0LnNldChBUk1SZWdpc3RlcnM6OnI0KTsKLSAgICByZXN1bHQuc2V0
KEFSTVJlZ2lzdGVyczo6cjUpOwotICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyNik7Ci0g
ICAgcmVzdWx0LnNldChBUk1SZWdpc3RlcnM6OnI3KTsKLSAgICByZXN1bHQuc2V0KEFSTVJlZ2lz
dGVyczo6cjgpOwotICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyOSk7Ci0gICAgcmVzdWx0
LnNldChBUk1SZWdpc3RlcnM6OnIxMCk7Ci0gICAgcmVzdWx0LnNldChBUk1SZWdpc3RlcnM6OnIx
MSk7CiAjZWxpZiBDUFUoQVJNNjQpCiAgICAgLy8gV2UgZG9uJ3QgaW5jbHVkZSBMUiBpbiB0aGUg
c2V0IG9mIGNhbGxlZS1zYXZlIHJlZ2lzdGVycyBldmVuIHRob3VnaCBpdCB0ZWNobmljYWxseSBi
ZWxvbmdzCiAgICAgLy8gdGhlcmUuIFRoaXMgaXMgYmVjYXVzZSB3ZSB1c2UgdGhpcyBzZXQgdG8g
ZGVzY3JpYmUgdGhlIHNldCBvZiByZWdpc3RlcnMgdGhhdCBuZWVkIHRvIGJlIHNhdmVkCkBAIC0y
MzcsNyArMjI4LDYgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxs
ZWVTYXZlUmVnaXN0ZXJzKCkKICNlbmRpZgogI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwotI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKICNl
bGlmIENQVShBUk02NCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CiAgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwpAQCAtMjc0LDcgKzI2NCw2IEBAIFJlZ2lzdGVyU2V0
IFJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKICAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTNik7CiAjZW5kaWYKICNlbGlmIENQVShBUk1fVEhVTUIyKQotI2VsaWYgQ1BV
KEFSTV9UUkFESVRJT05BTCkKICNlbGlmIENQVShBUk02NCkKICAgICBBU1NFUlQoR1BSSW5mbzo6
cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgQVNTRVJUKEdQ
UkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggNjY4NmRmMDExN2IwZTVmZDdkYjFlMDA4NjA2OWIx
M2I3NmE0ZWM4NS4uNzMxMWE2ZDU2MzM4OTVkMTI2Y2ExNDQ2M2M3MTNkZGNhNzA0YTJiMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0xMzAsMTQgKzEzMCw3IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiBhY3Rpb25Gb3JDZWxsKFZNJiB2bSwgSlNDZWxsKiBjZWxs
KQogCiBzdGF0aWMgYm9vbCBmb3JjZUlDRmFpbHVyZShFeGVjU3RhdGUqKQogewotI2lmIENQVShB
Uk1fVFJBRElUSU9OQUwpCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdvcmthcm91bmQgb25j
ZSB0aGUgcHJvcGVyIGZpeGVzIGFyZSBsYW5kZWQuCi0gICAgLy8gW0FSTV0gRGlzYWJsZSBJbmxp
bmUgQ2FjaGluZyBvbiBBUk12NyB0cmFkaXRpb25hbCB1bnRpbCBwcm9wZXIgZml4Ci0gICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTc1OQotICAgIHJldHVy
biB0cnVlOwotI2Vsc2UKICAgICByZXR1cm4gT3B0aW9uczo6Zm9yY2VJQ0ZhaWx1cmUoKTsKLSNl
bmRpZgogfQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGZpcmVXYXRjaHBvaW50c0FuZENs
ZWFyU3R1YklmTmVlZGVkKFZNJiB2bSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCYgcmVzdWx0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCmlu
ZGV4IDZiOWI3OTg3NmVjZWE2NTZjNDJhNjU5NTY0ZWE1NDgwODI3MDAzZGUuLjI4NDg1YTk1YzBh
NDQ1NDJmYjRlY2Y0ZTQ5YTUyMDM3NGQ3NWViMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKQEAgLTM0LDkgKzM0LDcgQEAK
ICNkZWZpbmUgT0ZGTElORV9BU01fQ19MT09QIDEKICNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAK
ICNkZWZpbmUgT0ZGTElORV9BU01fWDg2X1dJTiAwCi0jZGVmaW5lIE9GRkxJTkVfQVNNX0FSTSAw
CiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKLSNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjdf
VFJBRElUSU9OQUwgMAogI2RlZmluZSBPRkZMSU5FX0FTTV9BUk02NCAwCiAjZGVmaW5lIE9GRkxJ
TkVfQVNNX0FSTTY0RSAwCiAjZGVmaW5lIE9GRkxJTkVfQVNNX1g4Nl82NCAwCkBAIC03OSwxOSAr
NzcsNiBAQAogI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCiAjZW5kaWYKIAotI2lmIENQVShB
Uk1fVFJBRElUSU9OQUwpCi0jaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDcpCi0jZGVmaW5lIE9G
RkxJTkVfQVNNX0FSTXY3X1RSQURJVElPTkFMIDEKLSNkZWZpbmUgT0ZGTElORV9BU01fQVJNIDAK
LSNlbHNlCi0jZGVmaW5lIE9GRkxJTkVfQVNNX0FSTSAxCi0jZGVmaW5lIE9GRkxJTkVfQVNNX0FS
TXY3X1RSQURJVElPTkFMIDAKLSNlbmRpZgotI2Vsc2UKLSNkZWZpbmUgT0ZGTElORV9BU01fQVJN
djdfVFJBRElUSU9OQUwgMAotI2RlZmluZSBPRkZMSU5FX0FTTV9BUk0gMAotI2VuZGlmCi0KICNp
ZiBDUFUoWDg2XzY0KSAmJiAhQ09NUElMRVIoTVNWQykKICNkZWZpbmUgT0ZGTElORV9BU01fWDg2
XzY0IDEKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNDE2ZjNiYTczYThlNGFmNjBjYWZlMTBmMTJjYWZlM2Q2
ZjJmMjJlMS4uNDNkNWY3M2QwNjhmOWY3NTJiZmNjNTk1MjEzZDk5MjQzOWM5NzZjOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQpAQCAtNzEsMTEgKzcxLDEwIEBACiAjICBUaGV5IGFyZSBjYWxsZWUtc2F2ZSByZWdpc3RlcnMs
IGFuZCBndWFyYW50ZWVkIHRvIGJlIGRpc3RpbmN0IGZyb20gYWxsIG90aGVyCiAjICByZWdpc3Rl
cnMgb24gYWxsIGFyY2hpdGVjdHVyZXMuCiAjCi0jICAtIGxyIGlzIGRlZmluZWQgb24gbm9uLVg4
NiBhcmNoaXRlY3R1cmVzIChBUk02NCwgQVJNNjRFLCBBUk12NywgQVJNLAotIyAgQVJNdjdfVFJB
RElUSU9OQUwsIE1JUFMgYW5kIENMT09QKSBhbmQgaG9sZHMgdGhlIHJldHVybiBQQworIyAgLSBs
ciBpcyBkZWZpbmVkIG9uIG5vbi1YODYgYXJjaGl0ZWN0dXJlcyAoQVJNNjQsIEFSTTY0RSwgQVJN
djcsIE1JUFMgYW5kIENMT09QKQorIyAgYW5kIGhvbGRzIHRoZSByZXR1cm4gUEMKICMKLSMgIC0g
cGMgaG9sZHMgdGhlIChuYXRpdmUpIHByb2dyYW0gY291bnRlciBvbiAzMi1iaXRzIEFSTSBhcmNo
aXRlY3R1cmVzIChBUk0sCi0jICBBUk12NywgQVJNdjdfVFJBRElUSU9OQUwpCisjICAtIHBjIGhv
bGRzIHRoZSAobmF0aXZlKSBwcm9ncmFtIGNvdW50ZXIgb24gMzItYml0cyBBUk0gYXJjaGl0ZWN0
dXJlcyAoQVJNdjcpCiAjCiAjICAtIHQwLCB0MSwgdDIsIHQzLCB0NCBhbmQgb3B0aW9uYWxseSB0
NSBhcmUgdGVtcG9yYXJ5IHJlZ2lzdGVycyB0aGF0IGNhbiBnZXQgdHJhc2hlZCBvbgogIyAgY2Fs
bHMsIGFuZCBhcmUgcGFpcndpc2UgZGlzdGluY3QgcmVnaXN0ZXJzLiB0NCBob2xkcyB0aGUgSlMg
cHJvZ3JhbSBjb3VudGVyLCBzbyB1c2UKQEAgLTYwOCw3ICs2MDcsNyBAQCBtYWNybyBjaGVja1N0
YWNrUG9pbnRlckFsaWdubWVudCh0ZW1wUmVnLCBsb2NhdGlvbikKICAgICAgICAgICAgICMgQ19M
T09QIGRvZXMgbm90IG5lZWQgdGhlIGFsaWdubWVudCwgYW5kIGNhbiB1c2UgYSBsaXR0bGUgcGVy
ZgogICAgICAgICAgICAgIyBpbXByb3ZlbWVudCBmcm9tIGF2b2lkaW5nIHVzZWxlc3Mgd29yay4K
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJ
VElPTkFMCisgICAgICAgICAgICBpZiBBUk12NwogICAgICAgICAgICAgICAgICMgQVJNIGNhbid0
IGRvIGxvZ2ljYWwgb3BzIHdpdGggdGhlIHNwIGFzIGEgc291cmNlCiAgICAgICAgICAgICAgICAg
bW92ZSBzcCwgdGVtcFJlZwogICAgICAgICAgICAgICAgIGFuZHAgU3RhY2tBbGlnbm1lbnRNYXNr
LCB0ZW1wUmVnCkBAIC02MjUsNyArNjI0LDcgQEAgZW5kCiAKIGlmIENfTE9PUCBvciBBUk02NCBv
ciBBUk02NEUgb3IgWDg2XzY0IG9yIFg4Nl82NF9XSU4KICAgICBjb25zdCBDYWxsZWVTYXZlUmVn
aXN0ZXJDb3VudCA9IDAKLWVsc2lmIEFSTSBvciBBUk12N19UUkFESVRJT05BTCBvciBBUk12Nwor
ZWxzaWYgQVJNdjcKICAgICBjb25zdCBDYWxsZWVTYXZlUmVnaXN0ZXJDb3VudCA9IDcKIGVsc2lm
IE1JUFMKICAgICBjb25zdCBDYWxsZWVTYXZlUmVnaXN0ZXJDb3VudCA9IDEKQEAgLTY0MSw4ICs2
NDAsNiBAQCBjb25zdCBWTUVudHJ5VG90YWxGcmFtZVNpemUgPSAoQ2FsbGVlUmVnaXN0ZXJTYXZl
U2l6ZSArIHNpemVvZiBWTUVudHJ5UmVjb3JkICsgUwogCiBtYWNybyBwdXNoQ2FsbGVlU2F2ZXMo
KQogICAgIGlmIENfTE9PUCBvciBBUk02NCBvciBBUk02NEUgb3IgWDg2XzY0IG9yIFg4Nl82NF9X
SU4KLSAgICBlbHNpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwKLSAgICAgICAgZW1pdCAicHVz
aCB7cjQtcjEwfSIKICAgICBlbHNpZiBBUk12NwogICAgICAgICBlbWl0ICJwdXNoIHtyNC1yNiwg
cjgtcjExfSIKICAgICBlbHNpZiBNSVBTCkBAIC02NjMsOCArNjYwLDYgQEAgZW5kCiAKIG1hY3Jv
IHBvcENhbGxlZVNhdmVzKCkKICAgICBpZiBDX0xPT1Agb3IgQVJNNjQgb3IgQVJNNjRFIG9yIFg4
Nl82NCBvciBYODZfNjRfV0lOCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3X1RSQURJVElPTkFMCi0g
ICAgICAgIGVtaXQgInBvcCB7cjQtcjEwfSIKICAgICBlbHNpZiBBUk12NwogICAgICAgICBlbWl0
ICJwb3Age3I0LXI2LCByOC1yMTF9IgogICAgIGVsc2lmIE1JUFMKQEAgLTY4Miw3ICs2NzcsNyBA
QCBtYWNybyBwb3BDYWxsZWVTYXZlcygpCiBlbmQKIAogbWFjcm8gcHJlc2VydmVDYWxsZXJQQ0Fu
ZENGUigpCi0gICAgaWYgQ19MT09QIG9yIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05B
TCBvciBNSVBTCisgICAgaWYgQ19MT09QIG9yIEFSTXY3IG9yIE1JUFMKICAgICAgICAgcHVzaCBs
cgogICAgICAgICBwdXNoIGNmcgogICAgIGVsc2lmIFg4NiBvciBYODZfV0lOIG9yIFg4Nl82NCBv
ciBYODZfNjRfV0lOCkBAIC02OTcsNyArNjkyLDcgQEAgZW5kCiAKIG1hY3JvIHJlc3RvcmVDYWxs
ZXJQQ0FuZENGUigpCiAgICAgbW92ZSBjZnIsIHNwCi0gICAgaWYgQ19MT09QIG9yIEFSTSBvciBB
Uk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBNSVBTCisgICAgaWYgQ19MT09QIG9yIEFSTXY3
IG9yIE1JUFMKICAgICAgICAgcG9wIGNmcgogICAgICAgICBwb3AgbHIKICAgICBlbHNpZiBYODYg
b3IgWDg2X1dJTiBvciBYODZfNjQgb3IgWDg2XzY0X1dJTgpAQCAtNzExLDcgKzcwNiw2IEBAIG1h
Y3JvIHByZXNlcnZlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludCgpCiAgICAgc3VicCBDYWxsZWVTYXZl
U3BhY2VTdGFja0FsaWduZWQsIHNwCiAgICAgaWYgQ19MT09QCiAgICAgICAgIHN0b3JlcCBtZXRh
ZGF0YVRhYmxlLCAtUHRyU2l6ZVtjZnJdCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3X1RSQURJVElP
TkFMCiAgICAgZWxzaWYgQVJNdjcKICAgICAgICAgc3RvcmVwIG1ldGFkYXRhVGFibGUsIC00W2Nm
cl0KICAgICBlbHNpZiBBUk02NCBvciBBUk02NEUKQEAgLTczNiw3ICs3MzAsNiBAQCBlbmQKIG1h
Y3JvIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKICAgICBpZiBDX0xPT1AKICAgICAg
ICAgbG9hZHAgLVB0clNpemVbY2ZyXSwgbWV0YWRhdGFUYWJsZQotICAgIGVsc2lmIEFSTSBvciBB
Uk12N19UUkFESVRJT05BTAogICAgIGVsc2lmIEFSTXY3CiAgICAgICAgIGxvYWRwIC00W2Nmcl0s
IG1ldGFkYXRhVGFibGUKICAgICBlbHNpZiBBUk02NCBvciBBUk02NEUKQEAgLTg0Myw3ICs4MzYs
NyBAQCBtYWNybyByZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIodm0sIHRlbXApCiBlbmQKIAogbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCi0gICAgaWYgQ19MT09QIG9yIEFSTSBvciBBUk12NyBv
ciBBUk12N19UUkFESVRJT05BTCBvciBBUk02NCBvciBBUk02NEUgb3IgTUlQUworICAgIGlmIENf
TE9PUCBvciBBUk12NyBvciBBUk02NCBvciBBUk02NEUgb3IgTUlQUwogICAgICAgICAjIEluIENf
TE9PUCBjYXNlLCB3ZSdyZSBvbmx5IHByZXNlcnZpbmcgdGhlIGJ5dGVjb2RlIHZQQy4KICAgICAg
ICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgogICAgIGVsc2lmIFg4NiBvciBYODZfV0lO
IG9yIFg4Nl82NCBvciBYODZfNjRfV0lOCkBAIC04NjYsNyArODU5LDcgQEAgbWFjcm8gZnVuY3Rp
b25Qcm9sb2d1ZSgpCiAgICAgICAgIHB1c2ggY2ZyCiAgICAgZWxzaWYgQVJNNjQgb3IgQVJNNjRF
CiAgICAgICAgIHB1c2ggY2ZyLCBscgotICAgIGVsc2lmIENfTE9PUCBvciBBUk0gb3IgQVJNdjcg
b3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUworICAgIGVsc2lmIENfTE9PUCBvciBBUk12NyBv
ciBNSVBTCiAgICAgICAgIHB1c2ggbHIKICAgICAgICAgcHVzaCBjZnIKICAgICBlbmQKQEAgLTg3
OCw3ICs4NzEsNyBAQCBtYWNybyBmdW5jdGlvbkVwaWxvZ3VlKCkKICAgICAgICAgcG9wIGNmcgog
ICAgIGVsc2lmIEFSTTY0IG9yIEFSTTY0RQogICAgICAgICBwb3AgbHIsIGNmcgotICAgIGVsc2lm
IENfTE9PUCBvciBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUworICAg
IGVsc2lmIENfTE9PUCBvciBBUk12NyBvciBNSVBTCiAgICAgICAgIHBvcCBjZnIKICAgICAgICAg
cG9wIGxyCiAgICAgZW5kCkBAIC05NTAsNyArOTQzLDcgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxD
YWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBhZGRpIFN0
YWNrQWxpZ25tZW50IC0gMSArIENhbGxGcmFtZUhlYWRlclNpemUsIHRlbXAyCiAgICAgYW5kaSB+
U3RhY2tBbGlnbm1lbnRNYXNrLCB0ZW1wMgogCi0gICAgaWYgQVJNIG9yIEFSTXY3X1RSQURJVElP
TkFMIG9yIEFSTXY3IG9yIEFSTTY0IG9yIEFSTTY0RSBvciBDX0xPT1Agb3IgTUlQUworICAgIGlm
IEFSTXY3IG9yIEFSTTY0IG9yIEFSTTY0RSBvciBDX0xPT1Agb3IgTUlQUwogICAgICAgICBhZGRw
IENhbGxlckZyYW1lQW5kUENTaXplLCBzcAogICAgICAgICBzdWJpIENhbGxlckZyYW1lQW5kUENT
aXplLCB0ZW1wMgogICAgICAgICBsb2FkcCBDYWxsZXJGcmFtZUFuZFBDOjpyZXR1cm5QQ1tjZnJd
LCBscgpAQCAtMTEwOSw3ICsxMTAyLDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVy
LCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQogICAgICAgICBp
ZiBBUk02NCBvciBBUk02NEUKICAgICAgICAgICAgIHBvcCBsciwgY2ZyCiAgICAgICAgICAgICB1
bnRhZ1JldHVybkFkZHJlc3Mgc3AKLSAgICAgICAgZWxzaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3
X1RSQURJVElPTkFMIG9yIE1JUFMKKyAgICAgICAgZWxzaWYgQVJNdjcgb3IgTUlQUwogICAgICAg
ICAgICAgcG9wIGNmcgogICAgICAgICAgICAgcG9wIGxyCiAgICAgICAgIGVsc2UKQEAgLTEzMjIs
MTAgKzEzMTUsNiBAQCBlbHNlCiAgICAgICAgIF9yZWxhdGl2ZVBDQmFzZToKICAgICAgICAgICAg
IG1vdmUgcGMsIHBjQmFzZQogICAgICAgICAgICAgc3VicCAzLCBwY0Jhc2UgICAjIE5lZWQgdG8g
YmFjayB1cCB0aGUgUEMgYW5kIHNldCB0aGUgVGh1bWIyIGJpdAotICAgICAgICBlbHNpZiBBUk0g
b3IgQVJNdjdfVFJBRElUSU9OQUwKLSAgICAgICAgX3JlbGF0aXZlUENCYXNlOgotICAgICAgICAg
ICAgbW92ZSBwYywgcGNCYXNlCi0gICAgICAgICAgICBzdWJwIDgsIHBjQmFzZQogICAgICAgICBl
bHNpZiBNSVBTCiAgICAgICAgICAgICBsYSBfcmVsYXRpdmVQQ0Jhc2UsIHBjQmFzZQogICAgICAg
ICAgICAgc2V0Y2FsbHJlZyBwY0Jhc2UgIyBuZWVkZWQgdG8gc2V0ICR0OSB0byB0aGUgcmlnaHQg
dmFsdWUgZm9yIHRoZSAuY3Bsb2FkIGNyZWF0ZWQgYnkgdGhlIGxhYmVsLgpAQCAtMTM1Niw3ICsx
MzQ1LDcgQEAgbWFjcm8gc2V0RW50cnlBZGRyZXNzQ29tbW9uKGluZGV4LCBsYWJlbCwgbWFwKQog
ICAgICAgICBwY3J0b2FkZHIgbGFiZWwsIHQyCiAgICAgICAgIG1vdmUgaW5kZXgsIHQ0CiAgICAg
ICAgIHN0b3JlcCB0MiwgW21hcCwgdDQsIFB0clNpemVdCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3
IG9yIEFSTXY3X1RSQURJVElPTkFMCisgICAgZWxzaWYgQVJNdjcKICAgICAgICAgbXZsYmwgKGxh
YmVsIC0gX3JlbGF0aXZlUENCYXNlKSwgdDQKICAgICAgICAgYWRkcCB0NCwgdDIsIHQ0CiAgICAg
ICAgIG1vdmUgaW5kZXgsIHQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDgxZTIwM2IyNjk0NWNjMDU5
ZjI0Y2I0MDBhNjY1M2ZmODMzMzU4MzQuLjI1YWZiOWIxYTk4ZDZmMDlkMDU5MDNlODI5YTViNTE4
YjQwNjFkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC04OCw3ICs4OCw3IEBAIG1hY3JvIGRpc3Bh
dGNoQWZ0ZXJDYWxsKHNpemUsIG9wLCBkaXNwYXRjaCkKIGVuZAogCiBtYWNybyBjQ2FsbDIoZnVu
Y3Rpb24pCi0gICAgaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMK
KyAgICBpZiBBUk12NyBvciBNSVBTCiAgICAgICAgIGNhbGwgZnVuY3Rpb24KICAgICBlbHNpZiBY
ODYgb3IgWDg2X1dJTgogICAgICAgICBzdWJwIDgsIHNwCkBAIC0xMTIsNyArMTEyLDcgQEAgbWFj
cm8gY0NhbGwyVm9pZChmdW5jdGlvbikKIGVuZAogCiBtYWNybyBjQ2FsbDQoZnVuY3Rpb24pCi0g
ICAgaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMKKyAgICBpZiBB
Uk12NyBvciBNSVBTCiAgICAgICAgIGNhbGwgZnVuY3Rpb24KICAgICBlbHNpZiBYODYgb3IgWDg2
X1dJTgogICAgICAgICBwdXNoIGEzCkBAIC0xNzQsMTUgKzE3NCwxMSBAQCBtYWNybyBkb1ZNRW50
cnkobWFrZUNhbGwpCiAgICAgICAgIGFkZHAgQ2FsbEZyYW1lQWxpZ25TbG90cyAqIFNsb3RTaXpl
LCBzcCwgdDMKICAgICAgICAgYW5kcCB+U3RhY2tBbGlnbm1lbnRNYXNrLCB0MwogICAgICAgICBz
dWJwIHQzLCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHNwCi0gICAgZWxzaWYgQVJN
IG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMCisgICAgZWxzaWYgQVJNdjcKICAgICAgICAg
YWRkcCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHNwLCB0MwogICAgICAgICBjbHJi
cCB0MywgU3RhY2tBbGlnbm1lbnRNYXNrLCB0MwotICAgICAgICBpZiBBUk12NwotICAgICAgICAg
ICAgc3VicCB0MywgQ2FsbEZyYW1lQWxpZ25TbG90cyAqIFNsb3RTaXplLCB0MwotICAgICAgICAg
ICAgbW92ZSB0Mywgc3AKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3VicCB0MywgQ2FsbEZy
YW1lQWxpZ25TbG90cyAqIFNsb3RTaXplLCBzcAotICAgICAgICBlbmQKKyAgICAgICAgc3VicCB0
MywgQ2FsbEZyYW1lQWxpZ25TbG90cyAqIFNsb3RTaXplLCB0MworICAgICAgICBtb3ZlIHQzLCBz
cAogICAgIGVuZAogCiAgICAgbG9hZGkgUHJvdG9DYWxsRnJhbWU6OnBhZGRlZEFyZ0NvdW50W3By
b3RvQ2FsbEZyYW1lXSwgdDQKQEAgLTIwMzgsNyArMjAzNCw3IEBAIG1hY3JvIG5hdGl2ZUNhbGxU
cmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKQogICAgICAgICBhbmRwIE1hcmtl
ZEJsb2NrTWFzaywgdDMKICAgICAgICAgbG9hZHAgTWFya2VkQmxvY2tGb290ZXJPZmZzZXQgKyBN
YXJrZWRCbG9jazo6Rm9vdGVyOjptX3ZtW3QzXSwgdDMKICAgICAgICAgYWRkcCA4LCBzcAotICAg
IGVsc2lmIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBDX0xPT1Agb3IgTUlQ
UworICAgIGVsc2lmIEFSTXY3IG9yIENfTE9PUCBvciBNSVBTCiAgICAgICAgIGlmIE1JUFMKICAg
ICAgICAgIyBjYWxsaW5nIGNvbnZlbnRpb24gc2F5cyB0byBzYXZlIHN0YWNrIHNwYWNlIGZvciA0
IGZpcnN0IHJlZ2lzdGVycyBpbgogICAgICAgICAjIGFsbCBjYXNlcy4gVG8gbWF0Y2ggb3VyIDE2
LWJ5dGUgYWxpZ25tZW50LCB0aGF0IG1lYW5zIHdlIG5lZWQgdG8KQEAgLTIxMDUsNyArMjEwMSw3
IEBAIG1hY3JvIGludGVybmFsRnVuY3Rpb25DYWxsVHJhbXBvbGluZShvZmZzZXRPZkZ1bmN0aW9u
KQogICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKICAgICAgICAgbG9hZHAgTWFya2Vk
QmxvY2tGb290ZXJPZmZzZXQgKyBNYXJrZWRCbG9jazo6Rm9vdGVyOjptX3ZtW3QzXSwgdDMKICAg
ICAgICAgYWRkcCA4LCBzcAotICAgIGVsc2lmIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJ
T05BTCBvciBDX0xPT1Agb3IgTUlQUworICAgIGVsc2lmIEFSTXY3IG9yIENfTE9PUCBvciBNSVBT
CiAgICAgICAgIHN1YnAgOCwgc3AgIyBhbGlnbiBzdGFjayBwb2ludGVyCiAgICAgICAgICMgdDEg
YWxyZWFkeSBjb250YWlucyB0aGUgQ2FsbGVlLgogICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFz
aywgdDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5y
YiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgppbmRleCA4MjQ0YmJh
YzJjODA0ZjkwNmZlYmIzNGE0ZjI5MDRhYTNmN2NiOTdjLi5iMGMzMzYyN2QxMDg3MjI3OWUwODEx
YzRmNGE3ZWNhZDQxZTVmYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hcm0ucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJt
LnJiCkBAIC01OSwxOSArNTksNiBAQCBkZWYgaXNBUk12NwogICAgIGNhc2UgJGFjdGl2ZUJhY2tl
bmQKICAgICB3aGVuICJBUk12NyIKICAgICAgICAgdHJ1ZQotICAgIHdoZW4gIkFSTXY3X1RSQURJ
VElPTkFMIiwgIkFSTSIKLSAgICAgICAgZmFsc2UKLSAgICBlbHNlCi0gICAgICAgIHJhaXNlICJi
YWQgdmFsdWUgZm9yICRhY3RpdmVCYWNrZW5kOiAjeyRhY3RpdmVCYWNrZW5kfSIKLSAgICBlbmQK
LWVuZAotCi1kZWYgaXNBUk12N1RyYWRpdGlvbmFsCi0gICAgY2FzZSAkYWN0aXZlQmFja2VuZAot
ICAgIHdoZW4gIkFSTXY3X1RSQURJVElPTkFMIgotICAgICAgICB0cnVlCi0gICAgd2hlbiAiQVJN
djciLCAiQVJNIgotICAgICAgICBmYWxzZQogICAgIGVsc2UKICAgICAgICAgcmFpc2UgImJhZCB2
YWx1ZSBmb3IgJGFjdGl2ZUJhY2tlbmQ6ICN7JGFjdGl2ZUJhY2tlbmR9IgogICAgIGVuZApAQCAt
MTA0LDcgKzkxLDcgQEAgZGVmIGFybU1vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQogICAg
ICAgICAkYXNtLnB1dHMgIm1vdiAje3JlZ2lzdGVyLmFybU9wZXJhbmR9LCBcIyN7dmFsdWV9Igog
ICAgIGVsc2lmICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKICAgICAgICAgJGFzbS5w
dXRzICJtdm4gI3tyZWdpc3Rlci5hcm1PcGVyYW5kfSwgXCMje352YWx1ZX0iCi0gICAgZWxzaWYg
aXNBUk12NyBvciBpc0FSTXY3VHJhZGl0aW9uYWwKKyAgICBlbHNpZiBpc0FSTXY3CiAgICAgICAg
ICRhc20ucHV0cyAibW92dyAje3JlZ2lzdGVyLmFybU9wZXJhbmR9LCBcIyN7dmFsdWUgJiAweGZm
ZmZ9IgogICAgICAgICBpZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCiAgICAgICAgICAgICAk
YXNtLnB1dHMgIm1vdnQgI3tyZWdpc3Rlci5hcm1PcGVyYW5kfSwgXCMjeyh2YWx1ZSA+PiAxNikg
JiAweGZmZmZ9IgpAQCAtMzAxLDIxICsyODgsMTEgQEAgZGVmIGFybUxvd2VyTGFiZWxSZWZlcmVu
Y2VzKGxpc3QpCiBlbmQKIAogY2xhc3MgU2VxdWVuY2UKLSAgICBkZWYgZ2V0TW9kaWZpZWRMaXN0
QVJNCi0gICAgICAgIHJhaXNlIHVubGVzcyAkYWN0aXZlQmFja2VuZCA9PSAiQVJNIgotICAgICAg
ICBnZXRNb2RpZmllZExpc3RBUk1Db21tb24KLSAgICBlbmQKLQogICAgIGRlZiBnZXRNb2RpZmll
ZExpc3RBUk12NwogICAgICAgICByYWlzZSB1bmxlc3MgJGFjdGl2ZUJhY2tlbmQgPT0gIkFSTXY3
IgogICAgICAgICBnZXRNb2RpZmllZExpc3RBUk1Db21tb24KICAgICBlbmQKIAotICAgIGRlZiBn
ZXRNb2RpZmllZExpc3RBUk12N19UUkFESVRJT05BTAotICAgICAgICByYWlzZSB1bmxlc3MgJGFj
dGl2ZUJhY2tlbmQgPT0gIkFSTXY3X1RSQURJVElPTkFMIgotICAgICAgICBnZXRNb2RpZmllZExp
c3RBUk1Db21tb24KLSAgICBlbmQKLQogICAgIGRlZiBnZXRNb2RpZmllZExpc3RBUk1Db21tb24K
ICAgICAgICAgcmVzdWx0ID0gQGxpc3QKICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyU2ltcGxl
QnJhbmNoT3BzKHJlc3VsdCkKQEAgLTQxNCwyMSArMzkxLDExIEBAIGRlZiBlbWl0QXJtVGVzdFNl
dChvcGVyYW5kcywgY29kZSkKIGVuZAogCiBjbGFzcyBJbnN0cnVjdGlvbgotICAgIGRlZiBsb3dl
ckFSTQotICAgICAgICByYWlzZSB1bmxlc3MgJGFjdGl2ZUJhY2tlbmQgPT0gIkFSTSIKLSAgICAg
ICAgbG93ZXJBUk1Db21tb24KLSAgICBlbmQKLQogICAgIGRlZiBsb3dlckFSTXY3CiAgICAgICAg
IHJhaXNlIHVubGVzcyAkYWN0aXZlQmFja2VuZCA9PSAiQVJNdjciCiAgICAgICAgIGxvd2VyQVJN
Q29tbW9uCiAgICAgZW5kCiAKLSAgICBkZWYgbG93ZXJBUk12N19UUkFESVRJT05BTAotICAgICAg
ICByYWlzZSB1bmxlc3MgJGFjdGl2ZUJhY2tlbmQgPT0gIkFSTXY3X1RSQURJVElPTkFMIgotICAg
ICAgICBsb3dlckFSTUNvbW1vbgotICAgIGVuZAotCiAgICAgZGVmIGxvd2VyQVJNQ29tbW9uCiAg
ICAgICAgIGNhc2Ugb3Bjb2RlCiAgICAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIsICJhZGRpcyIs
ICJhZGRwcyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Jh
Y2tlbmRzLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIK
aW5kZXggZmYwNjVkNTM5MmRmY2RkMzI4NTZhYWQ3ZjA2YWMyMThkNTJkMDhjMS4uYzZjYzVhYzE2
ZTEyM2RjNWU2MDY5MmRhNGZhODQ0NWIyODFhZjliYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIKQEAgLTQwLDkgKzQwLDcgQEAKICAgICAgIlg4Nl9X
SU4iLAogICAgICAiWDg2XzY0IiwKICAgICAgIlg4Nl82NF9XSU4iLAotICAgICAiQVJNIiwKICAg
ICAgIkFSTXY3IiwKLSAgICAgIkFSTXY3X1RSQURJVElPTkFMIiwKICAgICAgIkFSTTY0IiwKICAg
ICAgIkFSTTY0RSIsCiAgICAgICJNSVBTIiwKQEAgLTYwLDkgKzU4LDcgQEAKICAgICAgIlg4Nl9X
SU4iLAogICAgICAiWDg2XzY0IiwKICAgICAgIlg4Nl82NF9XSU4iLAotICAgICAiQVJNIiwKICAg
ICAgIkFSTXY3IiwKLSAgICAgIkFSTXY3X1RSQURJVElPTkFMIiwKICAgICAgIkFSTTY0IiwKICAg
ICAgIkFSTTY0RSIsCiAgICAgICJNSVBTIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0lu
bGluZUFTTS5oIGIvU291cmNlL1dURi93dGYvSW5saW5lQVNNLmgKaW5kZXggMzNjMWEyYjcwM2Ez
NjY4OGE1ZTFjMTg3NmQ0YWJiNmFmMTE4ZmUyYS4uODM3OWE2OTY1OTE1NDMxMmZiMWZmZTMxNzA0
Y2FhYmMyNTIyZDM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSW5saW5lQVNNLmgKKysr
IGIvU291cmNlL1dURi93dGYvSW5saW5lQVNNLmgKQEAgLTkzLDcgKzkzLDcgQEAKICNkZWZpbmUg
TE9DQUxfTEFCRUxfU1RSSU5HKG5hbWUpICIuTCIgI25hbWUKICNlbmRpZgogCi0jaWYgKENQVShB
Uk1fVFJBRElUSU9OQUwpICYmIChkZWZpbmVkKHRodW1iMikgfHwgZGVmaW5lZChfX3RodW1iMl9f
KSB8fCBkZWZpbmVkKF9fdGh1bWIpIHx8IGRlZmluZWQoX190aHVtYl9fKSkpIHx8IENQVShBUk1f
VEhVTUIyKQorI2lmIENQVShBUk1fVEhVTUIyKQogI2RlZmluZSBJTkxJTkVfQVJNX0ZVTkNUSU9O
KG5hbWUpICIudGh1bWIiICJcbiIgIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShuYW1l
KSAiXG4iCiAjZWxzZQogI2RlZmluZSBJTkxJTkVfQVJNX0ZVTkNUSU9OKG5hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aAppbmRleCBlMmViNzViY2RiMzNhNzMxMzY0MDJkY2QwMTJkYTA3NjNmZTY4ZDZlLi5hNjY3Zjg0
ZWZhZjY1OTk0NzNjNGQwZjhlMzkzYmQ0NGRlZDZkMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTgxMywx
MCArODEzLDYgQEAKICNpZiAoQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkpICYmIChQTEFU
Rk9STShJT1NfRkFNSUxZKSB8fCBPUyhMSU5VWCkgfHwgT1MoRlJFRUJTRCkpCiAjZGVmaW5lIEVO
QUJMRV9ERkdfSklUIDEKICNlbmRpZgotLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIEFSTS4gKi8K
LSNpZiBDUFUoQVJNX1RSQURJVElPTkFMKQotI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCi0jZW5k
aWYKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBNSVBTLiAqLwogI2lmIENQVShNSVBTKQogI2Rl
ZmluZSBFTkFCTEVfREZHX0pJVCAxCkBAIC04MzksNyArODM1LDcgQEAKICNkZWZpbmUgRU5BQkxF
X0ZBU1RfVExTX0pJVCAxCiAjZW5kaWYKIAotI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpIHx8
IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpIHx8
IENQVShNSVBTKQorI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk1fVEhVTUIy
KSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKQogI2RlZmluZSBFTkFCTEVfTUFTTV9QUk9CRSAx
CiAjZWxzZQogI2RlZmluZSBFTkFCTEVfTUFTTV9QUk9CRSAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354899</attachid>
            <date>2018-11-15 00:40:52 -0800</date>
            <delta_ts>2018-11-21 19:35:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191675-20181115174051.patch</filename>
            <type>text/plain</type>
            <size>183567</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODk4MjRlYjViZjc2MjdhOGMxMDEwMjI5N2JiNDM3NmNlMjMwMzhmLi45MTQ3OWIyZjRlYTk4ZjY1
YTZkMWEwYWU5MTdhODA4ODNjMTRhYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxOC0xMS0xNSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIERyb3AgQVJNX1RSQURJVElPTkFMIHN1cHBvcnQg
aW4gTExJbnQsIGJhc2VsaW5lIEpJVCwgYW5kIERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugbm8gbG9uZ2VyIG1haW50YWluIEFSTV9UUkFESVRJ
T05BTCBMTEludCBhbmQgSklUIGluIEpTQy4gVGhpcyBhcmNoaXRlY3R1cmUgd2lsbCB1c2UKKyAg
ICAgICAgQ0xvb3AgaW5zdGVhZC4gVGhpcyBwYXRjaCByZW1vdmVzIEFSTV9UUkFESVRJT05BTCBz
dXBwb3J0IGluIExMSW50IGFuZCBKSVQuCisKKyAgICAgICAgRGlzY3Vzc2VkIGluIGh0dHBzOi8v
bGlzdHMud2Via2l0Lm9yZy9waXBlcm1haWwvd2Via2l0LWRldi8yMDE4LU9jdG9iZXIvMDMwMjIw
Lmh0bWwuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxpbmtDb2RlKToKKyAg
ICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZHVtcENvZGUpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cGF0Y2hhYmxl
QnJhbmNoMzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6IFJlbW92ZWQu
CisgICAgICAgICogYXNzZW1ibGVyL1BlcmZMb2cuY3BwOgorICAgICAgICAqIGFzc2VtYmxlci9Q
ZXJmTG9nLmg6CisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oOgorICAgICAgICAo
SlNDOjpQcm9iZTo6Q1BVU3RhdGU6OnBjKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRl
OjpmcCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6c3ApOgorICAgICAgICAqIGFz
c2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OmlzUEMpOgorICAgICAgICAoSlND
Ojp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9i
ZU1vZGlmaWVzU3RhY2tWYWx1ZXMpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9DYXBzdG9uZURp
c2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNzZW1ibGUpOgorICAgICAg
ICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcDoKKyAgICAgICAgKiBqaXQvSklUTWF0aElD
Lmg6CisgICAgICAgIChKU0M6OmlzUHJvZmlsZUVtcHR5KToKKyAgICAgICAgKiBqaXQvUmVnaXN0
ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyZVJl
Z2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJz
KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVn
aXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3Rl
cnMpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9yY2VJQ0Zh
aWx1cmUpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogb2ZmbGluZWFzbS9hcm0ucmI6Cisg
ICAgICAgICogb2ZmbGluZWFzbS9iYWNrZW5kcy5yYjoKKwogMjAxOC0xMS0xNCAgS2VpdGggUm9s
bGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBzY3JpcHRzIGZvciBEZXJp
dmVkIGFuZCBVbmlmaWVkIFNvdXJjZXMgdG8gZXh0ZXJuYWwgZmlsZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZDExZDlkZWY4
YjEzOGI3MTExNjAxYWFiZWNhMzU4ZDgxMDEwMmE3Ny4uZWFiNTM5MzJiOGQ1OTFkYTUxZGI3ZjI5
NmIyNjliYTlkNGRjZDhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMS0xNSAgWXVzdWtl
IFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIERy
b3AgQVJNX1RSQURJVElPTkFMIHN1cHBvcnQgaW4gTExJbnQsIGJhc2VsaW5lIEpJVCwgYW5kIERG
RworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjc1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
SW5saW5lQVNNLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTgtMTEtMTQgIEtl
aXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAjZW5kIHZzLiAj
ZW5kaWYgdHlwby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhYjg3MjU0
MDJlMTBlY2FmMTM3YTdhZmQ4MmI5MTlmZWYyODJmOWYxLi43OWNhYjBiOTc4YmI5YzhlYmNkY2M2
NGNlMmM5M2IwOWMzNDk1M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yNDAsOCArMjQwLDYgQEAgZWxzZSAoKQogICAgICAgICBzZXQoT0ZGTElORV9BU01fQkFDS0VO
RCAiQVJNNjQiKQogICAgIGVsc2VpZiAoQVJNX1RIVU1CMl9ERVRFQ1RFRCkKICAgICAgICAgc2V0
KE9GRkxJTkVfQVNNX0JBQ0tFTkQgIkFSTXY3IikKLSAgICBlbHNlaWYgKEFSTV9UUkFESVRJT05B
TF9ERVRFQ1RFRCkKLSAgICAgICAgc2V0KE9GRkxJTkVfQVNNX0JBQ0tFTkQgIkFSTXY3X1RSQURJ
VElPTkFMIikKICAgICBlbHNlaWYgKFdURl9DUFVfTUlQUykKICAgICAgICAgc2V0KE9GRkxJTkVf
QVNNX0JBQ0tFTkQgIk1JUFMiKQogICAgIGVuZGlmICgpCkBAIC00MjQsNyArNDIyLDYgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBBUEkvT3BhcXVl
SlNTdHJpbmcuaAogCiAgICAgYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKLSAgICBhc3NlbWJs
ZXIvQVJNQXNzZW1ibGVyLmgKICAgICBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAogICAgIGFz
c2VtYmxlci9BYm9ydFJlYXNvbi5oCiAgICAgYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuaApAQCAtNDM2LDcgKzQzMyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAogICAgIGFzc2VtYmxlci9N
SVBTQXNzZW1ibGVyLmgKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAotICAgIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCiAgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAogICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKICAgICBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZWU0NTcxMWVlOGViNzMxNjQ4ZTI3YWVlNzcwYWI4OWE3MWRmMzY2ZC4uYzI3N2ViZjE4OWZlZjE1
MTFjNDk5ZGQ3Mjk4NWI3MjYzZDM4NjZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyMTAsOSArMTIxMCw3IEBACiAJCTg2Q0M4NUExMEVFNzlBNDcwMDI4ODY4MiAvKiBKSVRJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkNDODVBMDBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oICovOyB9OwogCQk4NkNDRUZE
RTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQ0VGREQwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkQy
MjIxQTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0
YXBpLm1tICovOyB9OwotCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJD
MDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZEM0IyQzUxMDE1NkJERTAwMjg2NUU3IC8q
IEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMxMTAxNTZCREUwMDI4NjVFNyAvKiBBc3Nl
bWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODZEM0IyQzYxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3Jv
QXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkQzQjNDMzEw
MTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IzQzExMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZm
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4
NkUxMTZCMTBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMg
LyogQ29kZUxvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODZFM0M2MTIxNjdCQUJENzAwNkQ3NjBBIC8qIEpTVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RTNDNjA2MTY3QkFCODcw
MDZENzYwQSAvKiBKU1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OwpAQCAtMzg3MCw3ICszODY4LDYgQEAKIAkJODZCNTgyNkExNEQzNUQ1MTAwQTlD
MzA2IC8qIFRpZXJlZE1NYXBBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUaWVyZWRNTWFwQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZCRjY0
MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnRyaW5zaWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZD
MzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFS
TS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzU2OERFMTFBMjEzRUUwMDA3
RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWFjcm9Bc3NlbWJsZXJNSVBTLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1JUFNBc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODZDQzg1QTAwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUSW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzg3OCwxMCArMzg3NSw3IEBACiAJCTg2Q0M4NUMzMEVFN0E4OTQw
MDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2Q0NFRkREMEY0MTNGODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IHRlc3RhcGkubW07IHBhdGggPSBBUEkvdGVz
dHMvdGVzdGFwaS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODZEM0IyQkYxMDE1
NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBUk1Bc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFSTUFzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NkQzQjJDMTEwMTU2QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVy
V2l0aENvbnN0YW50UG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3Nl
bWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTg2RDNCMkMyMTAxNTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fzc2VtYmxlckFSTS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NkQzQjNDMTEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1
ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5rQnVmZmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RTExNkIwMEZFNzVBQzgwMEI1MTJCQyAvKiBD
b2RlTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZUxvY2F0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RTNDNjA2MTY3QkFCODcwMDZE
NzYwQSAvKiBKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MjEsOCArNzYxNSw2IEBACiAJ
CQkJMEYzNzMwOTAxQzBDRDcwQzAwMDUyQkZBIC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZS5oICovLAogCQkJCUFENDEyQjM1MUU3QjU3QzAwMDhBRjE1NyAvKiBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2VJZi5oICovLAogCQkJCTg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAv
KiBBUk02NEFzc2VtYmxlci5oICovLAotCQkJCTg2RDNCMkJGMTAxNTZCREUwMDI4NjVFNyAvKiBB
Uk1Bc3NlbWJsZXIuY3BwICovLAotCQkJCTg2RDNCMkMwMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1B
c3NlbWJsZXIuaCAqLywKIAkJCQk4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3Nl
bWJsZXIuaCAqLywKIAkJCQk5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVm
ZmVyLmggKi8sCiAJCQkJODZEM0IyQzExMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZl
cldpdGhDb25zdGFudFBvb2wuaCAqLywKQEAgLTc2MzQsOCArNzYyNiw2IEBACiAJCQkJODZEM0Iz
QzExMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLywKIAkJCQkwRkVCM0VDRTE2MjM3
RjY3MDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwICovLAogCQkJCTg2QzM2RUU5MEVFMTI4
OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovLAotCQkJCTg2QzU2OEREMTFBMjEzRUUw
MDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgKi8sCi0JCQkJODZEM0IyQzIxMDE1NkJE
RTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggKi8sCiAJCQkJRkVCMTM3NTYxQkIxMUVF
RTAwQ0Q1MTAwIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuY3BwICovLAogCQkJCTg2NDA5MjNDMTU2
RUVEM0IwMDU2NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi8sCiAJCQkJQTcyOTAwOUIx
Nzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3BwICovLApAQCAtODM3MSw3
ICs4MzYxLDYgQEAKIAkJCQk3OUEyMjgzNjFEMzVENzFGMDBEOEUwNjcgLyogQXJpdGhQcm9maWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlD
aGVja01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAv
KiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODZEM0IyQzQxMDE1NkJERTAw
Mjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDUwRkRE
RUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgz
MzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTkzNTcsNyArOTM0Niw2IEBACiAJCQkJOTgxRUQ4MjMyODIzNEQ5MUJB
RUNDQURFIC8qIE1hY2hpbmVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEI3MjNCODEy
RDdEQTZGMDAzQkQ1RUQgLyogTWFjaGluZVN0YWNrTWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTg2RDNCMkM2MTAxNTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fzc2VtYmxlckFSTS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8qIE1hY3JvQXNz
ZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVD
MiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjNCMjNFMDBG
QzYxMTg5MDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAxYWQ5OWYwZTZlNzRiNzc5MzBhNDZjYzA1
OTI2MGZkMjI3OWI3YWQ1Li5jYmE0YzRiYTYwMDRmOTMwZDVjYTg1NjMzMTBhNjI0M2UzNjQ0OWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC00MSwxMSArNDEsOSBAQCBBUEkvSlNX
ZWFrUHJpdmF0ZS5jcHAKIEFQSS9KU1dlYWtWYWx1ZS5jcHAKIEFQSS9PcGFxdWVKU1N0cmluZy5j
cHAKIAotYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAKIGFzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmNwcAogYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXIuY3BwCi1hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwCiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAKIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmNw
cAogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTUyZjM3ZjY4MDk0NjA3ZDAwZmQyMmNmMzM2YTQwOWJhYzcwYTJmNS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0
MjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBVbml2ZXJzaXR5IG9mIFN6ZWdl
ZAotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0K
LSNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQotCi0jaW5jbHVk
ZSAiQVJNQXNzZW1ibGVyLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi0vLyBQYXRjaGluZyBoZWxw
ZXJzCi0KLXZvaWQgQVJNQXNzZW1ibGVyOjpwYXRjaENvbnN0YW50UG9vbExvYWQodm9pZCogbG9h
ZEFkZHIsIHZvaWQqIGNvbnN0UG9vbEFkZHIpCi17Ci0gICAgQVJNV29yZCAqbGRyID0gcmVpbnRl
cnByZXRfY2FzdDxBUk1Xb3JkKj4obG9hZEFkZHIpOwotICAgIEFSTVdvcmQgZGlmZiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGNvbnN0UG9vbEFkZHIpIC0gbGRyOwotICAgIEFSTVdvcmQg
aW5kZXggPSAoKmxkciAmIDB4ZmZmKSA+PiAxOwotCi0gICAgQVNTRVJUKGRpZmYgPj0gMSk7Ci0g
ICAgaWYgKGRpZmYgPj0gMiB8fCBpbmRleCA+IDApIHsKLSAgICAgICAgZGlmZiA9IChkaWZmICsg
aW5kZXggLSAyKSAqIHNpemVvZihBUk1Xb3JkKTsKLSAgICAgICAgQVNTRVJUKGRpZmYgPD0gMHhm
ZmYpOwotICAgICAgICAqbGRyID0gKCpsZHIgJiB+MHhmZmYpIHwgZGlmZjsKLSAgICB9IGVsc2UK
LSAgICAgICAgKmxkciA9ICgqbGRyICYgfigweGZmZiB8IEFSTUFzc2VtYmxlcjo6RGF0YVRyYW5z
ZmVyVXApKSB8IHNpemVvZihBUk1Xb3JkKTsKLX0KLQotLy8gSGFuZGxlIGltbWVkaWF0ZXMKLQot
QVJNV29yZCBBUk1Bc3NlbWJsZXI6OmdldE9wMihBUk1Xb3JkIGltbSkKLXsKLSAgICBpbnQgcm9s
OwotCi0gICAgaWYgKGltbSA8PSAweGZmKQotICAgICAgICByZXR1cm4gT3AySW1tZWRpYXRlIHwg
aW1tOwotCi0gICAgaWYgKChpbW0gJiAweGZmMDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgIGltbSA8
PD0gODsKLSAgICAgICAgcm9sID0gODsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGltbSA9
IChpbW0gPDwgMjQpIHwgKGltbSA+PiA4KTsKLSAgICAgICAgcm9sID0gMDsKLSAgICB9Ci0KLSAg
ICBpZiAoKGltbSAmIDB4ZmYwMDAwMDApID09IDApIHsKLSAgICAgICAgaW1tIDw8PSA4OwotICAg
ICAgICByb2wgKz0gNDsKLSAgICB9Ci0KLSAgICBpZiAoKGltbSAmIDB4ZjAwMDAwMDApID09IDAp
IHsKLSAgICAgICAgaW1tIDw8PSA0OwotICAgICAgICByb2wgKz0gMjsKLSAgICB9Ci0KLSAgICBp
ZiAoKGltbSAmIDB4YzAwMDAwMDApID09IDApIHsKLSAgICAgICAgaW1tIDw8PSAyOwotICAgICAg
ICByb2wgKz0gMTsKLSAgICB9Ci0KLSAgICBpZiAoKGltbSAmIDB4MDBmZmZmZmYpID09IDApCi0g
ICAgICAgIHJldHVybiBPcDJJbW1lZGlhdGUgfCAoaW1tID4+IDI0KSB8IChyb2wgPDwgOCk7Ci0K
LSAgICByZXR1cm4gSW52YWxpZEltbWVkaWF0ZTsKLX0KLQotaW50IEFSTUFzc2VtYmxlcjo6Z2Vu
SW50KGludCByZWcsIEFSTVdvcmQgaW1tLCBib29sIHBvc2l0aXZlKQotewotICAgIC8vIFN0ZXAx
OiBTZWFyY2ggYSBub24taW1tZWRpYXRlIHBhcnQKLSAgICBBUk1Xb3JkIG1hc2s7Ci0gICAgQVJN
V29yZCBpbW0xOwotICAgIEFSTVdvcmQgaW1tMjsKLSAgICBpbnQgcm9sOwotCi0gICAgbWFzayA9
IDB4ZmYwMDAwMDA7Ci0gICAgcm9sID0gODsKLSAgICB3aGlsZSgxKSB7Ci0gICAgICAgIGlmICgo
aW1tICYgbWFzaykgPT0gMCkgewotICAgICAgICAgICAgaW1tID0gKGltbSA8PCByb2wpIHwgKGlt
bSA+PiAoMzIgLSByb2wpKTsKLSAgICAgICAgICAgIHJvbCA9IDQgKyAocm9sID4+IDEpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcm9sICs9IDI7Ci0gICAgICAgIG1h
c2sgPj49IDI7Ci0gICAgICAgIGlmIChtYXNrICYgMHgzKSB7Ci0gICAgICAgICAgICAvLyByb2wg
OAotICAgICAgICAgICAgaW1tID0gKGltbSA8PCA4KSB8IChpbW0gPj4gMjQpOwotICAgICAgICAg
ICAgbWFzayA9IDB4ZmYwMDsKLSAgICAgICAgICAgIHJvbCA9IDI0OwotICAgICAgICAgICAgd2hp
bGUgKDEpIHsKLSAgICAgICAgICAgICAgICBpZiAoKGltbSAmIG1hc2spID09IDApIHsKLSAgICAg
ICAgICAgICAgICAgICAgaW1tID0gKGltbSA8PCByb2wpIHwgKGltbSA+PiAoMzIgLSByb2wpKTsK
LSAgICAgICAgICAgICAgICAgICAgcm9sID0gKHJvbCA+PiAxKSAtIDg7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByb2wgKz0g
MjsKLSAgICAgICAgICAgICAgICBtYXNrID4+PSAyOwotICAgICAgICAgICAgICAgIGlmIChtYXNr
ICYgMHgzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUKChpbW0gJiAw
eGZmKSA9PSAwKTsKLQotICAgIGlmICgoaW1tICYgMHhmZjAwMDAwMCkgPT0gMCkgewotICAgICAg
ICBpbW0xID0gT3AySW1tZWRpYXRlIHwgKChpbW0gPj4gMTYpICYgMHhmZikgfCAoKChyb2wgKyA0
KSAmIDB4ZikgPDwgOCk7Ci0gICAgICAgIGltbTIgPSBPcDJJbW1lZGlhdGUgfCAoKGltbSA+PiA4
KSAmIDB4ZmYpIHwgKCgocm9sICsgOCkgJiAweGYpIDw8IDgpOwotICAgIH0gZWxzZSBpZiAoaW1t
ICYgMHhjMDAwMDAwMCkgewotICAgICAgICBpbW0xID0gT3AySW1tZWRpYXRlIHwgKChpbW0gPj4g
MjQpICYgMHhmZikgfCAoKHJvbCAmIDB4ZikgPDwgOCk7Ci0gICAgICAgIGltbSA8PD0gODsKLSAg
ICAgICAgcm9sICs9IDQ7Ci0KLSAgICAgICAgaWYgKChpbW0gJiAweGZmMDAwMDAwKSA9PSAwKSB7
Ci0gICAgICAgICAgICBpbW0gPDw9IDg7Ci0gICAgICAgICAgICByb2wgKz0gNDsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmICgoaW1tICYgMHhmMDAwMDAwMCkgPT0gMCkgewotICAgICAgICAgICAg
aW1tIDw8PSA0OwotICAgICAgICAgICAgcm9sICs9IDI7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoKGltbSAmIDB4YzAwMDAwMDApID09IDApIHsKLSAgICAgICAgICAgIGltbSA8PD0gMjsKLSAg
ICAgICAgICAgIHJvbCArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChpbW0gJiAweDAw
ZmZmZmZmKSA9PSAwKQotICAgICAgICAgICAgaW1tMiA9IE9wMkltbWVkaWF0ZSB8IChpbW0gPj4g
MjQpIHwgKChyb2wgJiAweGYpIDw8IDgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoKGltbSAmIDB4ZjAwMDAwMDApID09IDAp
IHsKLSAgICAgICAgICAgIGltbSA8PD0gNDsKLSAgICAgICAgICAgIHJvbCArPSAyOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKChpbW0gJiAweGMwMDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgICAg
ICBpbW0gPDw9IDI7Ci0gICAgICAgICAgICByb2wgKz0gMTsKLSAgICAgICAgfQotCi0gICAgICAg
IGltbTEgPSBPcDJJbW1lZGlhdGUgfCAoKGltbSA+PiAyNCkgJiAweGZmKSB8ICgocm9sICYgMHhm
KSA8PCA4KTsKLSAgICAgICAgaW1tIDw8PSA4OwotICAgICAgICByb2wgKz0gNDsKLQotICAgICAg
ICBpZiAoKGltbSAmIDB4ZjAwMDAwMDApID09IDApIHsKLSAgICAgICAgICAgIGltbSA8PD0gNDsK
LSAgICAgICAgICAgIHJvbCArPSAyOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChpbW0gJiAw
eGMwMDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgICAgICBpbW0gPDw9IDI7Ci0gICAgICAgICAgICBy
b2wgKz0gMTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgoaW1tICYgMHgwMGZmZmZmZikgPT0g
MCkKLSAgICAgICAgICAgIGltbTIgPSBPcDJJbW1lZGlhdGUgfCAoaW1tID4+IDI0KSB8ICgocm9s
ICYgMHhmKSA8PCA4KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotCi0gICAgaWYgKHBvc2l0aXZlKSB7Ci0gICAgICAgIG1vdihyZWcsIGltbTEpOwotICAgICAg
ICBvcnIocmVnLCByZWcsIGltbTIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG12bihyZWcsIGlt
bTEpOwotICAgICAgICBiaWMocmVnLCByZWcsIGltbTIpOwotICAgIH0KLQotICAgIHJldHVybiAx
OwotfQotCi1BUk1Xb3JkIEFSTUFzc2VtYmxlcjo6Z2V0SW1tKEFSTVdvcmQgaW1tLCBpbnQgdG1w
UmVnLCBib29sIGludmVydCkKLXsKLSAgICBBUk1Xb3JkIHRtcDsKLQotICAgIC8vIERvIGl0IGJ5
IDEgaW5zdHJ1Y3Rpb24KLSAgICB0bXAgPSBnZXRPcDIoaW1tKTsKLSAgICBpZiAodG1wICE9IElu
dmFsaWRJbW1lZGlhdGUpCi0gICAgICAgIHJldHVybiB0bXA7Ci0KLSAgICB0bXAgPSBnZXRPcDIo
fmltbSk7Ci0gICAgaWYgKHRtcCAhPSBJbnZhbGlkSW1tZWRpYXRlKSB7Ci0gICAgICAgIGlmIChp
bnZlcnQpCi0gICAgICAgICAgICByZXR1cm4gdG1wIHwgT3AySW52ZXJ0ZWRJbW1lZGlhdGU7Ci0g
ICAgICAgIG12bih0bXBSZWcsIHRtcCk7Ci0gICAgICAgIHJldHVybiB0bXBSZWc7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGVuY29kZUNvbXBsZXhJbW0oaW1tLCB0bXBSZWcpOwotfQotCi12b2lkIEFS
TUFzc2VtYmxlcjo6bW92ZUltbShBUk1Xb3JkIGltbSwgaW50IGRlc3QpCi17Ci0gICAgQVJNV29y
ZCB0bXA7Ci0KLSAgICAvLyBEbyBpdCBieSAxIGluc3RydWN0aW9uCi0gICAgdG1wID0gZ2V0T3Ay
KGltbSk7Ci0gICAgaWYgKHRtcCAhPSBJbnZhbGlkSW1tZWRpYXRlKSB7Ci0gICAgICAgIG1vdihk
ZXN0LCB0bXApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdG1wID0gZ2V0T3AyKH5p
bW0pOwotICAgIGlmICh0bXAgIT0gSW52YWxpZEltbWVkaWF0ZSkgewotICAgICAgICBtdm4oZGVz
dCwgdG1wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGVuY29kZUNvbXBsZXhJbW0o
aW1tLCBkZXN0KTsKLX0KLQotQVJNV29yZCBBUk1Bc3NlbWJsZXI6OmVuY29kZUNvbXBsZXhJbW0o
QVJNV29yZCBpbW0sIGludCBkZXN0KQotewotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQot
ICAgIEFSTVdvcmQgdG1wID0gZ2V0SW1tMTZPcDIoaW1tKTsKLSAgICBpZiAodG1wICE9IEludmFs
aWRJbW1lZGlhdGUpIHsKLSAgICAgICAgbW92dyhkZXN0LCB0bXApOwotICAgICAgICByZXR1cm4g
ZGVzdDsKLSAgICB9Ci0gICAgbW92dyhkZXN0LCBnZXRJbW0xNk9wMihpbW0gJiAweGZmZmYpKTsK
LSAgICBtb3Z0KGRlc3QsIGdldEltbTE2T3AyKGltbSA+PiAxNikpOwotICAgIHJldHVybiBkZXN0
OwotI2Vsc2UKLSAgICAvLyBEbyBpdCBieSAyIGluc3RydWN0aW9uCi0gICAgaWYgKGdlbkludChk
ZXN0LCBpbW0sIHRydWUpKQotICAgICAgICByZXR1cm4gZGVzdDsKLSAgICBpZiAoZ2VuSW50KGRl
c3QsIH5pbW0sIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIGRlc3Q7Ci0KLSAgICBsZHJJbW1lZGlh
dGUoZGVzdCwgaW1tKTsKLSAgICByZXR1cm4gZGVzdDsKLSNlbmRpZgotfQotCi0vLyBNZW1vcnkg
bG9hZC9zdG9yZSBoZWxwZXJzCi0KLXZvaWQgQVJNQXNzZW1ibGVyOjpkYXRhVHJhbnNmZXIzMihE
YXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3Rl
cklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KQotewotICAgIGlmIChvZmZzZXQgPj0gMCkgewotICAg
ICAgICBpZiAob2Zmc2V0IDw9IDB4ZmZmKQotICAgICAgICAgICAgZHRyVXAodHJhbnNmZXJUeXBl
LCBzcmNEc3QsIGJhc2UsIG9mZnNldCk7Ci0gICAgICAgIGVsc2UgaWYgKG9mZnNldCA8PSAweGZm
ZmZmKSB7Ci0gICAgICAgICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRp
YXRlIHwgKG9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOwotICAgICAgICAgICAgZHRyVXAodHJh
bnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIChvZmZzZXQgJiAweGZmZikpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVy
czo6UzApOwotICAgICAgICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNyY0RzdCwg
YmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAob2Zmc2V0ID49IC0weGZmZikKLSAgICAgICAgICAgIGR0ckRvd24odHJhbnNmZXJUeXBl
LCBzcmNEc3QsIGJhc2UsIC1vZmZzZXQpOwotICAgICAgICBlbHNlIGlmIChvZmZzZXQgPj0gLTB4
ZmZmZmYpIHsKLSAgICAgICAgICAgIHN1YihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1l
ZGlhdGUgfCAoLW9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOwotICAgICAgICAgICAgZHRyRG93
bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKC1vZmZzZXQgJiAweGZm
ZikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJl
Z2lzdGVyczo6UzApOwotICAgICAgICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5cGUsIHNy
Y0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZv
aWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGVBIHRy
YW5zZmVyVHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkKLXsKLSAgICBBU1NFUlQoc2NhbGUg
Pj0gMCAmJiBzY2FsZSA8PSAzKTsKLSAgICBBUk1Xb3JkIG9wMiA9IGxzbChpbmRleCwgc2NhbGUp
OwotCi0gICAgaWYgKCFvZmZzZXQpIHsKLSAgICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2ZlclR5
cGUsIHNyY0RzdCwgYmFzZSwgb3AyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChvZmZzZXQgPD0gMHhmZmZmZiAmJiBvZmZzZXQgPj0gLTB4ZmZmZmYpIHsKLSAgICAgICAgYWRk
KEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIG9wMik7Ci0gICAgICAgIGRhdGFUcmFuc2ZlcjMyKHRy
YW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCBvZmZzZXQpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwot
ICAgIGFkZChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBvcDIpOwotICAgIGR0
clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzAp
OwotfQotCi12b2lkIEFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlw
ZUIgdHJhbnNmZXJUeXBlLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQz
Ml90IG9mZnNldCkKLXsKLSAgICBpZiAob2Zmc2V0ID49IDApIHsKLSAgICAgICAgaWYgKG9mZnNl
dCA8PSAweGZmKQotICAgICAgICAgICAgaGFsZkR0clVwKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBi
YXNlLCBnZXRPcDJIYWxmKG9mZnNldCkpOwotICAgICAgICBlbHNlIGlmIChvZmZzZXQgPD0gMHhm
ZmZmKSB7Ci0gICAgICAgICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRp
YXRlIHwgKG9mZnNldCA+PiA4KSB8ICgxMiA8PCA4KSk7Ci0gICAgICAgICAgICBoYWxmRHRyVXAo
dHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIGdldE9wMkhhbGYob2Zmc2V0
ICYgMHhmZikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZUltbShvZmZzZXQs
IEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAgICAgaGFsZkR0clVwUmVnaXN0ZXIodHJhbnNm
ZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICB9Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgaWYgKG9mZnNldCA+PSAtMHhmZikKLSAgICAgICAgICAgIGhhbGZE
dHJEb3duKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBnZXRPcDJIYWxmKC1vZmZzZXQpKTsK
LSAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID49IC0weGZmZmYpIHsKLSAgICAgICAgICAgIHN1YihB
Uk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAoLW9mZnNldCA+PiA4KSB8ICgx
MiA8PCA4KSk7Ci0gICAgICAgICAgICBoYWxmRHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwg
QVJNUmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZigtb2Zmc2V0ICYgMHhmZikpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwot
ICAgICAgICAgICAgaGFsZkR0clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2Us
IEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEFSTUFzc2Vt
Ymxlcjo6YmFzZUluZGV4VHJhbnNmZXIxNihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2ZlclR5cGUs
IFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSwgaW50MzJfdCBvZmZzZXQpCi17Ci0gICAgaWYgKCFzY2FsZSAmJiAhb2Zmc2V0KSB7
Ci0gICAgICAgIGhhbGZEdHJVcFJlZ2lzdGVyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBp
bmRleCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBUk1Xb3JkIG9wMiA9IGxzbChp
bmRleCwgc2NhbGUpOwotCi0gICAgaWYgKG9mZnNldCA8PSAweGZmZmYgJiYgb2Zmc2V0ID49IC0w
eGZmZmYpIHsKLSAgICAgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIG9wMik7Ci0gICAg
ICAgIGRhdGFUcmFuc2ZlcjE2KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMw
LCBvZmZzZXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbW92ZUltbShvZmZzZXQs
IEFSTVJlZ2lzdGVyczo6UzApOwotICAgIGFkZChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3Rl
cnM6OlMwLCBvcDIpOwotICAgIGhhbGZEdHJVcFJlZ2lzdGVyKHRyYW5zZmVyVHlwZSwgc3JjRHN0
LCBiYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKLX0KLQotdm9pZCBBUk1Bc3NlbWJsZXI6OmRhdGFU
cmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0cmFuc2ZlclR5cGUsIEZQUmVnaXN0
ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpCi17Ci0gICAgLy8g
VkZQIGNhbm5vdCBkaXJlY3RseSBhY2Nlc3MgbWVtb3J5IHRoYXQgaXMgbm90IGZvdXItYnl0ZS1h
bGlnbmVkCi0gICAgaWYgKCEob2Zmc2V0ICYgMHgzKSkgewotICAgICAgICBpZiAob2Zmc2V0IDw9
IDB4M2ZmICYmIG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBkb3VibGVEdHJVcCh0cmFuc2Zl
clR5cGUsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0ID4+IDIpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmZmZiAmJiBvZmZzZXQgPj0gMCkg
ewotICAgICAgICAgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIE9wMkltbWVkaWF0ZSB8
IChvZmZzZXQgPj4gMTApIHwgKDExIDw8IDgpKTsKLSAgICAgICAgICAgIGRvdWJsZUR0clVwKHRy
YW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zmc2V0ID4+IDIpICYgMHhm
Zik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgb2Zmc2V0ID0gLW9m
ZnNldDsKLQotICAgICAgICBpZiAob2Zmc2V0IDw9IDB4M2ZmICYmIG9mZnNldCA+PSAwKSB7Ci0g
ICAgICAgICAgICBkb3VibGVEdHJEb3duKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBvZmZz
ZXQgPj4gMik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG9m
ZnNldCA8PSAweDNmZmZmICYmIG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBzdWIoQVJNUmVn
aXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+PiAxMCkgfCAoMTEgPDwg
OCkpOwotICAgICAgICAgICAgZG91YmxlRHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJN
UmVnaXN0ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7Ci0gICAgfQotCi0gICAgbW92
ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIGFkZChBUk1SZWdpc3RlcnM6OlMw
LCBBUk1SZWdpc3RlcnM6OlMwLCBiYXNlKTsKLSAgICBkb3VibGVEdHJVcCh0cmFuc2ZlclR5cGUs
IHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7Ci19Ci0KLXZvaWQgQVJNQXNzZW1ibGVyOjpi
YXNlSW5kZXhUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0cmFuc2ZlclR5cGUs
IEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkKLXsKLSAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMSwg
YmFzZSwgbHNsKGluZGV4LCBzY2FsZSkpOwotICAgIGRhdGFUcmFuc2ZlckZsb2F0KHRyYW5zZmVy
VHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMxLCBvZmZzZXQpOwotfQotCi12b2lkIEFSTUFz
c2VtYmxlcjo6cHJlcGFyZUV4ZWN1dGFibGVDb3B5KHZvaWQqIHRvKQotewotICAgIC8vIDY0LWJp
dCBhbGlnbm1lbnQgaXMgcmVxdWlyZWQgZm9yIG5leHQgY29uc3RhbnQgcG9vbCBhbmQgSklUIGNv
ZGUgYXMgd2VsbAotICAgIG1fYnVmZmVyLmZsdXNoV2l0aG91dEJhcnJpZXIodHJ1ZSk7Ci0KLSAg
ICBjaGFyKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9idWZmZXIuZGF0YSgpKTsK
LSAgICBwdHJkaWZmX3QgZGVsdGEgPSByZWludGVycHJldF9jYXN0PGNoYXIqPih0bykgLSBkYXRh
OwotCi0gICAgZm9yIChKdW1wczo6SXRlcmF0b3IgaXRlciA9IG1fanVtcHMuYmVnaW4oKTsgaXRl
ciAhPSBtX2p1bXBzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgLy8gVGhlIGxhc3QgYml0IGlz
IHNldCBpZiB0aGUgY29uc3RhbnQgbXVzdCBiZSBwbGFjZWQgb24gY29uc3RhbnQgcG9vbC4KLSAg
ICAgICAgaW50IHBvcyA9IChpdGVyLT5tX29mZnNldCkgJiAofjB4MSk7Ci0gICAgICAgIEFSTVdv
cmQqIGxkckFkZHIgPSByZWludGVycHJldF9jYXN0X3B0cjxBUk1Xb3JkKj4oZGF0YSArIHBvcyk7
Ci0gICAgICAgIEFSTVdvcmQqIGFkZHIgPSBnZXRMZHJJbW1BZGRyZXNzKGxkckFkZHIpOwotICAg
ICAgICBpZiAoKmFkZHIgIT0gSW52YWxpZEJyYW5jaFRhcmdldCkgewotICAgICAgICAgICAgaWYg
KCEoaXRlci0+bV9vZmZzZXQgJiAxKSkgewotICAgICAgICAgICAgICAgIGludHB0cl90IGRpZmZl
cmVuY2UgPSByZWludGVycHJldF9jYXN0X3B0cjxBUk1Xb3JkKj4oZGF0YSArICphZGRyKSAtIChs
ZHJBZGRyICsgRGVmYXVsdFByZWZldGNoT2Zmc2V0KTsKLQotICAgICAgICAgICAgICAgIGlmICgo
ZGlmZmVyZW5jZSA8PSBNYXhpbXVtQnJhbmNoT2Zmc2V0RGlzdGFuY2UgJiYgZGlmZmVyZW5jZSA+
PSBNaW5pbXVtQnJhbmNoT2Zmc2V0RGlzdGFuY2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgICps
ZHJBZGRyID0gQiB8IGdldENvbmRpdGlvbmFsRmllbGQoKmxkckFkZHIpIHwgKGRpZmZlcmVuY2Ug
JiBCcmFuY2hPZmZzZXRNYXNrKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgKmFkZHIgPSByZWludGVy
cHJldF9jYXN0PEFSTVdvcmQ+KGRhdGEgKyBkZWx0YSArICphZGRyKTsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVS
KSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQVJNQXNzZW1ibGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwYjZk
Y2IyNDFjYTM1MWQ3ZjFkMGEzZTQ4M2M1ZDIwZDlmZGM4N2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BUk1Bc3NlbWJsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNTkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdF
RCBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVOSVZFUlNJVFkgT0YgU1pFR0VE
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElP
TkFMKQotCi0jaW5jbHVkZSAiQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIgotI2lu
Y2x1ZGUgIkpJVENvbXBpbGF0aW9uRWZmb3J0LmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KLW5hbWVzcGFjZSBKU0MgewotCi0gICAgdHlwZWRlZiB1aW50MzJfdCBBUk1Xb3JkOwotCi0g
ICAgbmFtZXNwYWNlIEFSTVJlZ2lzdGVycyB7Ci0KLSAgICAgICAgdHlwZWRlZiBlbnVtIDogaW50
OF90IHsKLSAgICAgICAgICAgIHIwLAotICAgICAgICAgICAgcjEsCi0gICAgICAgICAgICByMiwK
LSAgICAgICAgICAgIHIzLAotICAgICAgICAgICAgcjQsCi0gICAgICAgICAgICByNSwKLSAgICAg
ICAgICAgIHI2LAotICAgICAgICAgICAgcjcsCi0gICAgICAgICAgICByOCwKLSAgICAgICAgICAg
IHI5LAotICAgICAgICAgICAgcjEwLAotICAgICAgICAgICAgZnAsCi0gICAgICAgICAgICBpcCwK
LSAgICAgICAgICAgIHNwLAotICAgICAgICAgICAgbHIsCi0gICAgICAgICAgICBwYywKLQotICAg
ICAgICAgICAgLy8gUHNldWRvbnltcyBmb3Igc29tZSBvZiB0aGUgcmVnaXN0ZXJzLgotICAgICAg
ICAgICAgUzAgPSByNiwKLSAgICAgICAgICAgIHIxMSA9IGZwLCAvLyBmcmFtZSBwb2ludGVyCi0g
ICAgICAgICAgICByMTIgPSBpcCwgUzEgPSBpcCwKLSAgICAgICAgICAgIHIxMyA9IHNwLAotICAg
ICAgICAgICAgcjE0ID0gbHIsCi0gICAgICAgICAgICByMTUgPSBwYywKLSAgICAgICAgICAgIElu
dmFsaWRHUFJSZWcgPSAtMSwKLSAgICAgICAgfSBSZWdpc3RlcklEOwotCi0gICAgICAgIHR5cGVk
ZWYgZW51bSA6IGludDhfdCB7Ci0gICAgICAgICAgICBhcHNyLAotICAgICAgICAgICAgZnBzY3IK
LSAgICAgICAgfSBTUFJlZ2lzdGVySUQ7Ci0KLSAgICAgICAgdHlwZWRlZiBlbnVtIDogaW50OF90
IHsKLSAgICAgICAgICAgIGQwLAotICAgICAgICAgICAgZDEsCi0gICAgICAgICAgICBkMiwKLSAg
ICAgICAgICAgIGQzLAotICAgICAgICAgICAgZDQsCi0gICAgICAgICAgICBkNSwKLSAgICAgICAg
ICAgIGQ2LAotICAgICAgICAgICAgZDcsCi0gICAgICAgICAgICBkOCwKLSAgICAgICAgICAgIGQ5
LAotICAgICAgICAgICAgZDEwLAotICAgICAgICAgICAgZDExLAotICAgICAgICAgICAgZDEyLAot
ICAgICAgICAgICAgZDEzLAotICAgICAgICAgICAgZDE0LAotICAgICAgICAgICAgZDE1LAotI2lm
IENQVShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotICAgICAgICAgICAgZDE2LAot
ICAgICAgICAgICAgZDE3LAotICAgICAgICAgICAgZDE4LAotICAgICAgICAgICAgZDE5LAotICAg
ICAgICAgICAgZDIwLAotICAgICAgICAgICAgZDIxLAotICAgICAgICAgICAgZDIyLAotICAgICAg
ICAgICAgZDIzLAotICAgICAgICAgICAgZDI0LAotICAgICAgICAgICAgZDI1LAotICAgICAgICAg
ICAgZDI2LAotICAgICAgICAgICAgZDI3LAotICAgICAgICAgICAgZDI4LAotICAgICAgICAgICAg
ZDI5LAotICAgICAgICAgICAgZDMwLAotICAgICAgICAgICAgZDMxLAotI2VuZGlmIC8vIENQVShB
Uk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotICAgICAgICAgICAgSW52YWxpZEZQUlJl
ZyA9IC0xLAotICAgICAgICB9IEZQUmVnaXN0ZXJJRDsKLQotICAgIH0gLy8gbmFtZXNwYWNlIEFS
TVJlZ2lzdGVycwotCi0gICAgY2xhc3MgQVJNQXNzZW1ibGVyIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIHR5cGVkZWYgQVJNUmVnaXN0ZXJzOjpSZWdpc3RlcklEIFJlZ2lzdGVySUQ7Ci0gICAgICAg
IHR5cGVkZWYgQVJNUmVnaXN0ZXJzOjpTUFJlZ2lzdGVySUQgU1BSZWdpc3RlcklEOwotICAgICAg
ICB0eXBlZGVmIEFSTVJlZ2lzdGVyczo6RlBSZWdpc3RlcklEIEZQUmVnaXN0ZXJJRDsKLSAgICAg
ICAgdHlwZWRlZiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sPDIwNDgsIDQsIDQsIEFS
TUFzc2VtYmxlcj4gQVJNQnVmZmVyOwotICAgICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3RvcjxB
c3NlbWJsZXJMYWJlbCwgNjQ+IEp1bXBzOwotCi0gICAgICAgIEFSTUFzc2VtYmxlcigpCi0gICAg
ICAgICAgICA6IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KDEpCi0gICAgICAgIHsKLSAg
ICAgICAgfQotCi0gICAgICAgIEFSTUJ1ZmZlciYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7
IH0KLQotICAgICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQgZmlyc3RSZWdpc3Rlcigp
IHsgcmV0dXJuIEFSTVJlZ2lzdGVyczo6cjA7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBS
ZWdpc3RlcklEIGxhc3RSZWdpc3RlcigpIHsgcmV0dXJuIEFSTVJlZ2lzdGVyczo6cjE1OyB9Ci0g
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMoKSB7IHJl
dHVybiBsYXN0UmVnaXN0ZXIoKSAtIGZpcnN0UmVnaXN0ZXIoKSArIDE7IH0KLQotICAgICAgICBz
dGF0aWMgY29uc3RleHByIFNQUmVnaXN0ZXJJRCBmaXJzdFNQUmVnaXN0ZXIoKSB7IHJldHVybiBB
Uk1SZWdpc3RlcnM6OmFwc3I7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBTUFJlZ2lzdGVy
SUQgbGFzdFNQUmVnaXN0ZXIoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OmZwc2NyOyB9Ci0gICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZTUFJlZ2lzdGVycygpIHsgcmV0
dXJuIGxhc3RTUFJlZ2lzdGVyKCkgLSBmaXJzdFNQUmVnaXN0ZXIoKSArIDE7IH0KLQotICAgICAg
ICBzdGF0aWMgY29uc3RleHByIEZQUmVnaXN0ZXJJRCBmaXJzdEZQUmVnaXN0ZXIoKSB7IHJldHVy
biBBUk1SZWdpc3RlcnM6OmQwOyB9Ci0jaWYgQ1BVKEFSTV9ORU9OKSB8fCBDUFUoQVJNX1ZGUF9W
M19EMzIpCi0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRlBSZWdpc3RlcklEIGxhc3RGUFJlZ2lz
dGVyKCkgeyByZXR1cm4gQVJNUmVnaXN0ZXJzOjpkMzE7IH0KLSNlbHNlCi0gICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgRlBSZWdpc3RlcklEIGxhc3RGUFJlZ2lzdGVyKCkgeyByZXR1cm4gQVJNUmVn
aXN0ZXJzOjpkMTU7IH0KLSNlbmRpZgotICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG51bWJlck9mRlBSZWdpc3RlcnMoKSB7IHJldHVybiBsYXN0RlBSZWdpc3RlcigpIC0gZmlyc3RG
UFJlZ2lzdGVyKCkgKyAxOyB9Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGdwck5hbWUo
UmVnaXN0ZXJJRCBpZCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGlkID49IGZpcnN0
UmVnaXN0ZXIoKSAmJiBpZCA8PSBsYXN0UmVnaXN0ZXIoKSk7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgbmFtZUZvclJlZ2lzdGVyW251bWJlck9mUmVnaXN0ZXJzKCldID0g
ewotICAgICAgICAgICAgICAgICJyMCIsICJyMSIsICJyMiIsICJyMyIsCi0gICAgICAgICAgICAg
ICAgInI0IiwgInI1IiwgInI2IiwgInI3IiwKLSAgICAgICAgICAgICAgICAicjgiLCAicjkiLCAi
cjEwIiwgImZwIiwKLSAgICAgICAgICAgICAgICAiaXAiLCAic3AiLCAibHIiLCAicGMiCi0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltpZF07Ci0gICAg
ICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc3ByTmFtZShTUFJlZ2lzdGVySUQg
aWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChpZCA+PSBmaXJzdFNQUmVnaXN0ZXIo
KSAmJiBpZCA8PSBsYXN0U1BSZWdpc3RlcigpKTsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBuYW1lRm9yUmVnaXN0ZXJbbnVtYmVyT2ZTUFJlZ2lzdGVycygpXSA9IHsKLSAg
ICAgICAgICAgICAgICAiYXBzciIsICJmcHNjciIKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW2lkXTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVnaXN0ZXJJRCBpZCkKLSAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKGlkID49IGZpcnN0RlBSZWdpc3RlcigpICYmIGlkIDw9IGxhc3RGUFJlZ2lz
dGVyKCkpOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWVGb3JSZWdp
c3RlcltudW1iZXJPZkZQUmVnaXN0ZXJzKCldID0gewotICAgICAgICAgICAgICAgICJkMCIsICJk
MSIsICJkMiIsICJkMyIsCi0gICAgICAgICAgICAgICAgImQ0IiwgImQ1IiwgImQ2IiwgImQ3IiwK
LSAgICAgICAgICAgICAgICAiZDgiLCAiZDkiLCAiZDEwIiwgImQxMSIsCi0gICAgICAgICAgICAg
ICAgImQxMiIsICJkMTMiLCAiZDE0IiwgImQxNSIsCi0jaWYgQ1BVKEFSTV9ORU9OKSB8fCBDUFUo
QVJNX1ZGUF9WM19EMzIpCi0gICAgICAgICAgICAgICAgImQxNiIsICJkMTciLCAiZDE4IiwgImQx
OSIsCi0gICAgICAgICAgICAgICAgImQyMCIsICJkMjEiLCAiZDIyIiwgImQyMyIsCi0gICAgICAg
ICAgICAgICAgImQyNCIsICJkMjUiLCAiZDI2IiwgImQyNyIsCi0gICAgICAgICAgICAgICAgImQy
OCIsICJkMjkiLCAiZDMwIiwgImQzMSIKLSNlbmRpZiAvLyBDUFUoQVJNX05FT04pIHx8IENQVShB
Uk1fVkZQX1YzX0QzMikKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICByZXR1cm4gbmFtZUZv
clJlZ2lzdGVyW2lkXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFSTSBjb25kaXRpb25hbCBj
b25zdGFudHMKLSAgICAgICAgdHlwZWRlZiBlbnVtIHsKLSAgICAgICAgICAgIEVRID0gMHgwMDAw
MDAwMCwgLy8gWmVybyAvIEVxdWFsLgotICAgICAgICAgICAgTkUgPSAweDEwMDAwMDAwLCAvLyBO
b24temVybyAvIE5vdCBlcXVhbC4KLSAgICAgICAgICAgIENTID0gMHgyMDAwMDAwMCwgLy8gVW5z
aWduZWQgaGlnaGVyIG9yIHNhbWUuCi0gICAgICAgICAgICBDQyA9IDB4MzAwMDAwMDAsIC8vIFVu
c2lnbmVkIGxvd2VyLgotICAgICAgICAgICAgTUkgPSAweDQwMDAwMDAwLCAvLyBOZWdhdGl2ZS4K
LSAgICAgICAgICAgIFBMID0gMHg1MDAwMDAwMCwgLy8gUG9zaXRpdmUgb3IgemVyby4KLSAgICAg
ICAgICAgIFZTID0gMHg2MDAwMDAwMCwgLy8gT3ZlcmZsb3dlZC4KLSAgICAgICAgICAgIFZDID0g
MHg3MDAwMDAwMCwgLy8gTm90IG92ZXJmbG93ZWQuCi0gICAgICAgICAgICBISSA9IDB4ODAwMDAw
MDAsIC8vIFVuc2lnbmVkIGhpZ2hlci4KLSAgICAgICAgICAgIExTID0gMHg5MDAwMDAwMCwgLy8g
VW5zaWduZWQgbG93ZXIgb3Igc2FtZS4KLSAgICAgICAgICAgIEdFID0gMHhhMDAwMDAwMCwgLy8g
U2lnbmVkIGdyZWF0ZXIgdGhhbiBvciBlcXVhbC4KLSAgICAgICAgICAgIExUID0gMHhiMDAwMDAw
MCwgLy8gU2lnbmVkIGxlc3MgdGhhbi4KLSAgICAgICAgICAgIEdUID0gMHhjMDAwMDAwMCwgLy8g
U2lnbmVkIGdyZWF0ZXIgdGhhbi4KLSAgICAgICAgICAgIExFID0gMHhkMDAwMDAwMCwgLy8gU2ln
bmVkIGxlc3MgdGhhbiBvciBlcXVhbC4KLSAgICAgICAgICAgIEFMID0gMHhlMDAwMDAwMCAgLy8g
VW5jb25kaXRpb25hbCAvIEFsd2F5cyBleGVjdXRlLgotICAgICAgICB9IENvbmRpdGlvbjsKLQot
ICAgICAgICAvLyBBUk0gaW5zdHJ1Y3Rpb24gY29uc3RhbnRzCi0gICAgICAgIGVudW0gewotICAg
ICAgICAgICAgQU5EID0gKDB4MCA8PCAyMSksCi0gICAgICAgICAgICBFT1IgPSAoMHgxIDw8IDIx
KSwKLSAgICAgICAgICAgIFNVQiA9ICgweDIgPDwgMjEpLAotICAgICAgICAgICAgUlNCID0gKDB4
MyA8PCAyMSksCi0gICAgICAgICAgICBBREQgPSAoMHg0IDw8IDIxKSwKLSAgICAgICAgICAgIEFE
QyA9ICgweDUgPDwgMjEpLAotICAgICAgICAgICAgU0JDID0gKDB4NiA8PCAyMSksCi0gICAgICAg
ICAgICBSU0MgPSAoMHg3IDw8IDIxKSwKLSAgICAgICAgICAgIFRTVCA9ICgweDggPDwgMjEpLAot
ICAgICAgICAgICAgVEVRID0gKDB4OSA8PCAyMSksCi0gICAgICAgICAgICBDTVAgPSAoMHhhIDw8
IDIxKSwKLSAgICAgICAgICAgIENNTiA9ICgweGIgPDwgMjEpLAotICAgICAgICAgICAgT1JSID0g
KDB4YyA8PCAyMSksCi0gICAgICAgICAgICBNT1YgPSAoMHhkIDw8IDIxKSwKLSAgICAgICAgICAg
IEJJQyA9ICgweGUgPDwgMjEpLAotICAgICAgICAgICAgTVZOID0gKDB4ZiA8PCAyMSksCi0gICAg
ICAgICAgICBNVUwgPSAweDAwMDAwMDkwLAotICAgICAgICAgICAgTVVMTCA9IDB4MDBjMDAwOTAs
Ci0gICAgICAgICAgICBWTU9WX0Y2NCA9IDB4MGViMDBiNDAsCi0gICAgICAgICAgICBWQUREX0Y2
NCA9IDB4MGUzMDBiMDAsCi0gICAgICAgICAgICBWRElWX0Y2NCA9IDB4MGU4MDBiMDAsCi0gICAg
ICAgICAgICBWU1VCX0Y2NCA9IDB4MGUzMDBiNDAsCi0gICAgICAgICAgICBWTVVMX0Y2NCA9IDB4
MGUyMDBiMDAsCi0gICAgICAgICAgICBWQ01QX0Y2NCA9IDB4MGViNDBiNDAsCi0gICAgICAgICAg
ICBWU1FSVF9GNjQgPSAweDBlYjEwYmMwLAotICAgICAgICAgICAgVkFCU19GNjQgPSAweDBlYjAw
YmMwLAotICAgICAgICAgICAgVk5FR19GNjQgPSAweDBlYjEwYjQwLAotICAgICAgICAgICAgU1RN
REIgPSAweDA5MjAwMDAwLAotICAgICAgICAgICAgTERNSUEgPSAweDA4YjAwMDAwLAotICAgICAg
ICAgICAgQiA9IDB4MGEwMDAwMDAsCi0gICAgICAgICAgICBCTCA9IDB4MGIwMDAwMDAsCi0gICAg
ICAgICAgICBCWCA9IDB4MDEyZmZmMTAsCi0gICAgICAgICAgICBWTU9WX1ZGUDY0ID0gMHgwYzQw
MGExMCwKLSAgICAgICAgICAgIFZNT1ZfQVJNNjQgPSAweDBjNTAwYTEwLAotICAgICAgICAgICAg
Vk1PVl9WRlAzMiA9IDB4MGUwMDBhMTAsCi0gICAgICAgICAgICBWTU9WX0FSTTMyID0gMHgwZTEw
MGExMCwKLSAgICAgICAgICAgIFZDVlRfRjY0X1MzMiA9IDB4MGViODBiYzAsCi0gICAgICAgICAg
ICBWQ1ZUX1MzMl9GNjQgPSAweDBlYmQwYmMwLAotICAgICAgICAgICAgVkNWVF9VMzJfRjY0ID0g
MHgwZWJjMGJjMCwKLSAgICAgICAgICAgIFZDVlRfRjMyX0Y2NCA9IDB4MGViNzBiYzAsCi0gICAg
ICAgICAgICBWQ1ZUX0Y2NF9GMzIgPSAweDBlYjcwYWMwLAotICAgICAgICAgICAgVk1SU19BUFNS
ID0gMHgwZWYxZmExMCwKLSAgICAgICAgICAgIENMWiA9IDB4MDE2ZjBmMTAsCi0gICAgICAgICAg
ICBCS1BUID0gMHhlMTIwMDA3MCwKLSAgICAgICAgICAgIEJMWCA9IDB4MDEyZmZmMzAsCi0jaWYg
V1RGX0FSTV9BUkNIX0FUX0xFQVNUKDcpCi0gICAgICAgICAgICBNT1ZXID0gMHgwMzAwMDAwMCwK
LSAgICAgICAgICAgIE1PVlQgPSAweDAzNDAwMDAwLAotI2VuZGlmCi0gICAgICAgICAgICBOT1Ag
PSAweGUxYTAwMDAwLAotICAgICAgICAgICAgRE1CX1NZID0gMHhmNTdmZjA1ZiwKLSAgICAgICAg
ICAgIERNQl9JU0hTVCA9IDB4ZjU3ZmYwNWEsCi0jaWYgSEFWRShBUk1fSURJVl9JTlNUUlVDVElP
TlMpCi0gICAgICAgICAgICBTRElWID0gMHgwNzEwZjAxMCwKLSAgICAgICAgICAgIFVESVYgPSAw
eDA3MzBmMDEwLAotI2VuZGlmCi0gICAgICAgIH07Ci0KLSAgICAgICAgZW51bSB7Ci0gICAgICAg
ICAgICBPcDJJbW1lZGlhdGUgPSAoMSA8PCAyNSksCi0gICAgICAgICAgICBJbW1lZGlhdGVGb3JI
YWxmV29yZFRyYW5zZmVyID0gKDEgPDwgMjIpLAotICAgICAgICAgICAgT3AySW52ZXJ0ZWRJbW1l
ZGlhdGUgPSAoMSA8PCAyNiksCi0gICAgICAgICAgICBTZXRDb25kaXRpb25hbENvZGVzID0gKDEg
PDwgMjApLAotICAgICAgICAgICAgT3AySXNSZWdpc3RlckFyZ3VtZW50ID0gKDEgPDwgMjUpLAot
ICAgICAgICAgICAgLy8gRGF0YSB0cmFuc2ZlciBmbGFncy4KLSAgICAgICAgICAgIERhdGFUcmFu
c2ZlclVwID0gKDEgPDwgMjMpLAotICAgICAgICAgICAgRGF0YVRyYW5zZmVyV3JpdGVCYWNrID0g
KDEgPDwgMjEpLAotICAgICAgICAgICAgRGF0YVRyYW5zZmVyUG9zdFVwZGF0ZSA9ICgxIDw8IDI0
KSwKLSAgICAgICAgICAgIERhdGFUcmFuc2ZlckxvYWQgPSAoMSA8PCAyMCksCi0gICAgICAgICAg
ICBCeXRlRGF0YVRyYW5zZmVyID0gKDEgPDwgMjIpLAotICAgICAgICB9OwotCi0gICAgICAgIGVu
dW0gRGF0YVRyYW5zZmVyVHlwZUEgewotICAgICAgICAgICAgTG9hZFVpbnQzMiA9IDB4MDUwMDAw
MDAgfCBEYXRhVHJhbnNmZXJMb2FkLAotICAgICAgICAgICAgTG9hZFVpbnQ4ID0gMHgwNTQwMDAw
MCB8IERhdGFUcmFuc2ZlckxvYWQsCi0gICAgICAgICAgICBTdG9yZVVpbnQzMiA9IDB4MDUwMDAw
MDAsCi0gICAgICAgICAgICBTdG9yZVVpbnQ4ID0gMHgwNTQwMDAwMCwKLSAgICAgICAgfTsKLQot
ICAgICAgICBlbnVtIERhdGFUcmFuc2ZlclR5cGVCIHsKLSAgICAgICAgICAgIExvYWRVaW50MTYg
PSAweDAxMDAwMGIwIHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAgICAgICAgICAgIExvYWRJbnQxNiA9
IDB4MDEwMDAwZjAgfCBEYXRhVHJhbnNmZXJMb2FkLAotICAgICAgICAgICAgTG9hZEludDggPSAw
eDAxMDAwMGQwIHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAgICAgICAgICAgIFN0b3JlVWludDE2ID0g
MHgwMTAwMDBiMCwKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIERhdGFUcmFuc2ZlclR5cGVG
bG9hdCB7Ci0gICAgICAgICAgICBMb2FkRmxvYXQgPSAweDBkMDAwYTAwIHwgRGF0YVRyYW5zZmVy
TG9hZCwKLSAgICAgICAgICAgIExvYWREb3VibGUgPSAweDBkMDAwYjAwIHwgRGF0YVRyYW5zZmVy
TG9hZCwKLSAgICAgICAgICAgIFN0b3JlRmxvYXQgPSAweDBkMDAwYTAwLAotICAgICAgICAgICAg
U3RvcmVEb3VibGUgPSAweDBkMDAwYjAwLAotICAgICAgICB9OwotCi0gICAgICAgIC8vIE1hc2tz
IG9mIEFSTSBpbnN0cnVjdGlvbnMKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBCcmFuY2hP
ZmZzZXRNYXNrID0gMHgwMGZmZmZmZiwKLSAgICAgICAgICAgIENvbmRpdGlvbmFsRmllbGRNYXNr
ID0gMHhmMDAwMDAwMCwKLSAgICAgICAgICAgIERhdGFUcmFuc2Zlck9mZnNldE1hc2sgPSAweGZm
ZiwKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE1pbmltdW1CcmFu
Y2hPZmZzZXREaXN0YW5jZSA9IC0weDAwODAwMDAwLAotICAgICAgICAgICAgTWF4aW11bUJyYW5j
aE9mZnNldERpc3RhbmNlID0gMHgwMDdmZmZmZiwKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVt
IHsKLSAgICAgICAgICAgIHBhZEZvckFsaWduOCAgPSAweDAwLAotICAgICAgICAgICAgcGFkRm9y
QWxpZ24xNiA9IDB4MDAwMCwKLSAgICAgICAgICAgIHBhZEZvckFsaWduMzIgPSAweGUxMmZmZjdm
IC8vICdia3B0IDB4ZmZmZicgaW5zdHJ1Y3Rpb24uCi0gICAgICAgIH07Ci0KLSAgICAgICAgc3Rh
dGljIGNvbnN0IEFSTVdvcmQgSW52YWxpZEltbWVkaWF0ZSA9IDB4ZjAwMDAwMDA7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBBUk1Xb3JkIEludmFsaWRCcmFuY2hUYXJnZXQgPSAweGZmZmZmZmZmOwot
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IERlZmF1bHRQcmVmZXRjaE9mZnNldCA9IDI7Ci0KLSAg
ICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgQmx4SW5zdHJ1Y3Rpb25NYXNrID0gMHgwMTJmZmYz
MDsKLSAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgTGRyT3JBZGRJbnN0cnVjdGlvbk1hc2sg
PSAweDBmZjAwMDAwOwotICAgICAgICBzdGF0aWMgY29uc3QgQVJNV29yZCBMZHJQY0ltbWVkaWF0
ZUluc3RydWN0aW9uTWFzayA9IDB4MGY3ZjAwMDA7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEFS
TVdvcmQgQWRkSW1tZWRpYXRlSW5zdHJ1Y3Rpb24gPSAweDAyODAwMDAwOwotICAgICAgICBzdGF0
aWMgY29uc3QgQVJNV29yZCBCbHhJbnN0cnVjdGlvbiA9IDB4MDEyZmZmMzA7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBBUk1Xb3JkIExkckltbWVkaWF0ZUluc3RydWN0aW9uID0gMHgwNTkwMDAwMDsK
LSAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbiA9
IDB4MDUxZjAwMDA7Ci0KLSAgICAgICAgLy8gSW5zdHJ1Y3Rpb24gZm9ybWF0aW5nCi0KLSAgICAg
ICAgdm9pZCBlbWl0SW5zdHJ1Y3Rpb24oQVJNV29yZCBvcCwgaW50IHJkLCBpbnQgcm4sIEFSTVdv
cmQgb3AyKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoKChvcDIgJiB+T3AySW1tZWRp
YXRlKSA8PSAweGZmZikgfHwgKCgob3AyICYgfkltbWVkaWF0ZUZvckhhbGZXb3JkVHJhbnNmZXIp
IDw9IDB4ZmZmKSkpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KG9wIHwgUk4ocm4pIHwg
UkQocmQpIHwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZW1pdERvdWJsZVByZWNp
c2lvbkluc3RydWN0aW9uKEFSTVdvcmQgb3AsIGludCBkZCwgaW50IGRuLCBpbnQgZG0pCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCgoZGQgPj0gMCAmJiBkZCA8PSAzMSkgJiYgKGRuID49
IDAgJiYgZG4gPD0gMzEpICYmIChkbSA+PSAwICYmIGRtIDw9IDMxKSk7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5wdXRJbnQob3AgfCAoKGRkICYgMHhmKSA8PCAxMikgfCAoKGRkICYgMHgxMCkgPDwg
KDIyIC0gNCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGRuICYgMHhmKSA8
PCAxNikgfCAoKGRuICYgMHgxMCkgPDwgKDcgLSA0KSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IChkbSAmIDB4ZikgfCAoKGRtICYgMHgxMCkgPDwgKDUgLSA0KSkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdm9pZCBlbWl0U2luZ2xlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24oQVJNV29y
ZCBvcCwgaW50IHNkLCBpbnQgc24sIGludCBzbSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKChzZCA+PSAwICYmIHNkIDw9IDMxKSAmJiAoc24gPj0gMCAmJiBzbiA8PSAzMSkgJiYgKHNt
ID49IDAgJiYgc20gPD0gMzEpKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChvcCB8ICgo
c2QgPj4gMSkgPDwgMTIpIHwgKChzZCAmIDB4MSkgPDwgMjIpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAoKHNuID4+IDEpIDw8IDE2KSB8ICgoc24gJiAweDEpIDw8IDcpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc20gPj4gMSkgfCAoKHNtICYgMHgxKSA8PCA1
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGJpdEFuZChpbnQgcmQsIGludCBybiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0
SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEFORCwgcmQsIHJuLCBvcDIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCBiaXRBbmRzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29u
ZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0
b0FSTVdvcmQoY2MpIHwgQU5EIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBlb3IoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3Ay
LCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0
aW9uKHRvQVJNV29yZChjYykgfCBFT1IsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgZW9ycyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9
IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNj
KSB8IEVPUiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZvaWQgc3ViKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9u
IGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdv
cmQoY2MpIHwgU1VCLCByZCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHN1
YnMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBTVUIgfCBT
ZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIHJzYihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFJT
QiwgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCByc2JzKGludCByZCwg
aW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgUlNCIHwgU2V0Q29uZGl0aW9u
YWxDb2RlcywgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBhZGQoaW50
IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBBREQsIHJkLCBybiwg
b3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYWRkcyhpbnQgcmQsIGludCBybiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0
SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEFERCB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJk
LCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYWRjKGludCByZCwgaW50IHJu
LCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQURDLCByZCwgcm4sIG9wMik7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2b2lkIGFkY3MoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBD
b25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9u
KHRvQVJNV29yZChjYykgfCBBREMgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHNiYyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBv
cDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFNCQywgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdm9pZCBzYmNzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNj
ID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQo
Y2MpIHwgU0JDIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCByc2MoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRp
b24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJN
V29yZChjYykgfCBSU0MsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
cnNjcyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFJTQyB8
IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgdHN0KGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFRTVCB8IFNl
dENvbmRpdGlvbmFsQ29kZXMsIDAsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9p
ZCB0ZXEoaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVEVRIHwgU2V0Q29u
ZGl0aW9uYWxDb2RlcywgMCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNt
cChpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBDTVAgfCBTZXRDb25kaXRp
b25hbENvZGVzLCAwLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY21uKGlu
dCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IENNTiB8IFNldENvbmRpdGlvbmFs
Q29kZXMsIDAsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBvcnIoaW50IHJk
LCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBPUlIsIHJkLCBybiwgb3Ay
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgb3JycyhpbnQgcmQsIGludCBybiwgQVJNV29y
ZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5z
dHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE9SUiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBy
biwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbW92KGludCByZCwgQVJNV29yZCBv
cDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1
Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1PViwgcmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7Ci0g
ICAgICAgIH0KLQotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQotICAgICAgICB2b2lkIG1v
dncoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEFTU0VSVCgob3AyIHwgMHhmMGZmZikgPT0gMHhmMGZmZik7Ci0gICAgICAgICAg
ICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IE1PVlcgfCBSRChyZCkgfCBvcDIpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtb3Z0KGludCByZCwgQVJNV29yZCBvcDIsIENvbmRp
dGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoKG9wMiB8IDB4ZjBm
ZmYpID09IDB4ZjBmZmYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChj
YykgfCBNT1ZUIHwgUkQocmQpIHwgb3AyKTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAg
dm9pZCBtb3ZzKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1PViB8IFNl
dENvbmRpdGlvbmFsQ29kZXMsIHJkLCBBUk1SZWdpc3RlcnM6OnIwLCBvcDIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCBiaWMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRp
b24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJN
V29yZChjYykgfCBCSUMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
YmljcyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEJJQyB8
IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgbXZuKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1WTiwgcmQs
IEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG12bnMo
aW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgTVZOIHwgU2V0Q29uZGl0aW9u
YWxDb2RlcywgcmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2b2lkIG11bChpbnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAg
ICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBNVUwg
fCBSTihyZCkgfCBSUyhybikgfCBSTShybSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBt
dWxzKGludCByZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7
Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IE1VTCB8IFNldENv
bmRpdGlvbmFsQ29kZXMgfCBSTihyZCkgfCBSUyhybikgfCBSTShybSkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCBtdWxsKGludCByZGhpLCBpbnQgcmRsbywgaW50IHJuLCBpbnQgcm0sIENv
bmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQo
dG9BUk1Xb3JkKGNjKSB8IE1VTEwgfCBSTihyZGhpKSB8IFJEKHJkbG8pIHwgUlMocm4pIHwgUk0o
cm0pKTsKLSAgICAgICAgfQotCi0jaWYgSEFWRShBUk1fSURJVl9JTlNUUlVDVElPTlMpCi0gICAg
ICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KLSAgICAgICAgdm9pZCBzZGl2KGludCByZCwgaW50
IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWNfYXNzZXJ0KGRhdGFzaXplID09IDMyLCAic2RpdiBkYXRhc2l6ZSBtdXN0IGJlIDMyIGZv
ciBhcm12N3MiKTsKLSAgICAgICAgICAgIEFTU0VSVChyZCAhPSBBUk1SZWdpc3RlcnM6OnBjKTsK
LSAgICAgICAgICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAg
IEFTU0VSVChybSAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1
dEludCh0b0FSTVdvcmQoY2MpIHwgU0RJViB8IFJOKHJkKSB8IFJNKHJuKSB8IFJTKHJtKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2b2lkIHVkaXYoaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29u
ZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZCAhPSBBUk1S
ZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBj
KTsKLSAgICAgICAgICAgIEFTU0VSVChybSAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAg
ICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgVURJViB8IFJOKHJkKSB8IFJNKHJu
KSB8IFJTKHJtKSk7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgIHZvaWQgdm1vdl9mNjQo
aW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZNT1ZfRjY0
LCBkZCwgMCwgZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2YWRkX2Y2NChpbnQgZGQs
IGludCBkbiwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQUREX0Y2
NCwgZGQsIGRuLCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZkaXZfZjY0KGludCBk
ZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZESVZf
RjY0LCBkZCwgZG4sIGRtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdnN1Yl9mNjQoaW50
IGRkLCBpbnQgZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVlNV
Ql9GNjQsIGRkLCBkbiwgZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bXVsX2Y2NChp
bnQgZGQsIGludCBkbiwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBW
TVVMX0Y2NCwgZGQsIGRuLCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZjbXBfZjY0
KGludCBkZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQ01QX0Y2
NCwgZGQsIDAsIGRtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdnNxcnRfZjY0KGludCBk
ZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1p
dERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWU1FSVF9GNjQsIGRk
LCAwLCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZhYnNfZjY0KGludCBkZCwgaW50
IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdERvdWJs
ZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQUJTX0Y2NCwgZGQsIDAsIGRt
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdm5lZ19mNjQoaW50IGRkLCBpbnQgZG0sIENv
bmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lz
aW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZORUdfRjY0LCBkZCwgMCwgZG0pOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdm9pZCBsZHJJbW1lZGlhdGUoaW50IHJkLCBBUk1Xb3JkIGltbSwg
Q29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dElu
dFdpdGhDb25zdGFudEludCh0b0FSTVdvcmQoY2MpIHwgTG9hZFVpbnQzMiB8IERhdGFUcmFuc2Zl
clVwIHwgUk4oQVJNUmVnaXN0ZXJzOjpwYykgfCBSRChyZCksIGltbSwgdHJ1ZSk7Ci0gICAgICAg
IH0KLQotICAgICAgICB2b2lkIGxkclVuaXF1ZUltbWVkaWF0ZShpbnQgcmQsIEFSTVdvcmQgaW1t
LCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0
SW50V2l0aENvbnN0YW50SW50KHRvQVJNV29yZChjYykgfCBMb2FkVWludDMyIHwgRGF0YVRyYW5z
ZmVyVXAgfCBSTihBUk1SZWdpc3RlcnM6OnBjKSB8IFJEKHJkKSwgaW1tKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZvaWQgZHRyVXAoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQg
cmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSB8
IERhdGFUcmFuc2ZlclVwLCByZCwgcmIsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lk
IGR0clVwUmVnaXN0ZXIoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGlu
dCByYiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUgfCBEYXRhVHJhbnNm
ZXJVcCB8IE9wMklzUmVnaXN0ZXJBcmd1bWVudCwgcmQsIHJiLCBybSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIGR0ckRvd24oRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQg
cmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSwg
cmQsIHJiLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkdHJEb3duUmVnaXN0ZXIo
RGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBD
b25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9u
KHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUgfCBPcDJJc1JlZ2lzdGVyQXJndW1lbnQsIHJk
LCByYiwgcm0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBoYWxmRHRyVXAoRGF0YVRyYW5z
ZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRp
dGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9B
Uk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSB8IERhdGFUcmFuc2ZlclVwLCByZCwgcmIsIG9wMik7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGhhbGZEdHJVcFJlZ2lzdGVyKERhdGFUcmFuc2Zl
clR5cGVCIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcm4sIGludCBybSwgQ29uZGl0aW9uIGNj
ID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQo
Y2MpIHwgdHJhbnNmZXJUeXBlIHwgRGF0YVRyYW5zZmVyVXAsIHJkLCBybiwgcm0pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdm9pZCBoYWxmRHRyRG93bihEYXRhVHJhbnNmZXJUeXBlQiB0cmFuc2Zl
clR5cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgdHJh
bnNmZXJUeXBlLCByZCwgcmIsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGhhbGZE
dHJEb3duUmVnaXN0ZXIoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGlu
dCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUsIHJkLCBybiwgcm0p
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkb3VibGVEdHJVcChEYXRhVHJhbnNmZXJUeXBl
RmxvYXQgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBB
TCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG9wMiA8PSAweGZmICYmIHJkIDw9IDE1
KTsKLSAgICAgICAgICAgIC8qIE9ubHkgZDAtZDE1IGFuZCBzMCwgczIsIHM0IC4uLiBzMzAgYXJl
IHN1cHBvcnRlZC4gKi8KLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2Mp
IHwgRGF0YVRyYW5zZmVyVXAgfCB0eXBlIHwgKHJkIDw8IDEyKSB8IFJOKHJiKSB8IG9wMik7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2b2lkIGRvdWJsZUR0ckRvd24oRGF0YVRyYW5zZmVyVHlwZUZs
b2F0IHR5cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChvcDIgPD0gMHhmZiAmJiByZCA8PSAxNSk7
Ci0gICAgICAgICAgICAvKiBPbmx5IGQwLWQxNSBhbmQgczAsIHMyLCBzNCAuLi4gczMwIGFyZSBz
dXBwb3J0ZWQuICovCi0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8
IHR5cGUgfCAocmQgPDwgMTIpIHwgUk4ocmIpIHwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgcHVzaChpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8PSAweGYpOwotICAgICAgICAgICAgbV9idWZmZXIu
cHV0SW50KHRvQVJNV29yZChjYykgfCBTdG9yZVVpbnQzMiB8IERhdGFUcmFuc2ZlcldyaXRlQmFj
ayB8IFJOKEFSTVJlZ2lzdGVyczo6c3ApIHwgUkQocmVnKSB8IDB4NCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIHBvcChpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8PSAweGYpOwotICAgICAgICAgICAgbV9i
dWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCAoTG9hZFVpbnQzMiBeIERhdGFUcmFuc2ZlclBv
c3RVcGRhdGUpIHwgRGF0YVRyYW5zZmVyVXAgfCBSTihBUk1SZWdpc3RlcnM6OnNwKSB8IFJEKHJl
ZykgfCAweDQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW5saW5lIHZvaWQgcG9rZShpbnQgcmVn
LCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZHRyRG93bihTdG9y
ZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpzcCwgMCwgcmVnLCBjYyk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpbmxpbmUgdm9pZCBwZWVrKGludCByZWcsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBkdHJVcChMb2FkVWludDMyLCByZWcsIEFSTVJlZ2lzdGVyczo6c3As
IDAsIGNjKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdm1vdl92ZnA2NChpbnQgc20sIGlu
dCBydCwgaW50IHJ0MiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVChydCAhPSBydDIpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29y
ZChjYykgfCBWTU9WX1ZGUDY0IHwgUk4ocnQyKSB8IFJEKHJ0KSB8IChzbSAmIDB4ZikgfCAoKHNt
ICYgMHgxMCkgPDwgKDUgLSA0KSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bW92X2Fy
bTY0KGludCBydCwgaW50IHJ0MiwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKHJ0ICE9IHJ0Mik7Ci0gICAgICAgICAgICBtX2J1ZmZlci5w
dXRJbnQodG9BUk1Xb3JkKGNjKSB8IFZNT1ZfQVJNNjQgfCBSTihydDIpIHwgUkQocnQpIHwgKHNt
ICYgMHhmKSB8ICgoc20gJiAweDEwKSA8PCAoNSAtIDQpKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2b2lkIHZtb3ZfdmZwMzIoaW50IHNuLCBpbnQgcnQsIENvbmRpdGlvbiBjYyA9IEFMKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocnQgPD0gMTUpOwotICAgICAgICAgICAgZW1pdFNp
bmdsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWTU9WX1ZGUDMyLCBydCA8
PCAxLCBzbiwgMCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZtb3ZfYXJtMzIoaW50IHJ0
LCBpbnQgc24sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQocnQgPD0gMTUpOwotICAgICAgICAgICAgZW1pdFNpbmdsZVByZWNpc2lvbkluc3RydWN0aW9u
KHRvQVJNV29yZChjYykgfCBWTU9WX0FSTTMyLCBydCA8PCAxLCBzbiwgMCk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIHZjdnRfZjY0X3MzMihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNj
ID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghKHNtICYgMHgxKSk7IC8vIHNt
IG11c3QgYmUgZGl2aXNpYmxlIGJ5IDIKLSAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25J
bnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVkNWVF9GNjRfUzMyLCBkZCwgMCwgKHNtID4+IDEp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdmN2dF9zMzJfZjY0KGludCBzZCwgaW50IGRt
LCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCEoc2Qg
JiAweDEpKTsgLy8gc2QgbXVzdCBiZSBkaXZpc2libGUgYnkgMgotICAgICAgICAgICAgZW1pdERv
dWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQ1ZUX1MzMl9GNjQsIChz
ZCA+PiAxKSwgMCwgZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2Y3Z0X3UzMl9mNjQo
aW50IHNkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQoIShzZCAmIDB4MSkpOyAvLyBzZCBtdXN0IGJlIGRpdmlzaWJsZSBieSAyCi0gICAg
ICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZD
VlRfVTMyX0Y2NCwgKHNkID4+IDEpLCAwLCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lk
IHZjdnRfZjY0X2YzMihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChkZCA8PSAxNSAmJiBzbSA8PSAxNSk7Ci0gICAgICAgICAg
ICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZDVlRfRjY0
X0YzMiwgZGQsIDAsIHNtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdmN2dF9mMzJfZjY0
KGludCBkZCwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKGRkIDw9IDE1ICYmIHNtIDw9IDE1KTsKLSAgICAgICAgICAgIGVtaXREb3VibGVQ
cmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVkNWVF9GMzJfRjY0LCBkZCwgMCwg
c20pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bXJzX2Fwc3IoQ29uZGl0aW9uIGNjID0g
QUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2Mp
IHwgVk1SU19BUFNSKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2x6KGludCByZCwgaW50
IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIu
cHV0SW50KHRvQVJNV29yZChjYykgfCBDTFogfCBSRChyZCkgfCBSTShybSkpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCBia3B0KEFSTVdvcmQgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG1fYnVmZmVyLnB1dEludChCS1BUIHwgKCh2YWx1ZSAmIDB4ZmYwKSA8PCA0KSB8ICh2YWx1
ZSAmIDB4ZikpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgaXNCa3B0KHZvaWQq
IGFkZHJlc3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQgZXhwZWN0ZWQgPSBCS1BU
OwotICAgICAgICAgICAgQVJNV29yZCBpbW1lZGlhdGVNYXNrID0gKDB4ZmYwIDw8IDQpIHwgMHhm
OwotICAgICAgICAgICAgQVJNV29yZCBjYW5kaWRhdGVJbnN0cnVjdGlvbiA9ICpyZWludGVycHJl
dF9jYXN0PEFSTVdvcmQqPihhZGRyZXNzKTsKLSAgICAgICAgICAgIHJldHVybiAoY2FuZGlkYXRl
SW5zdHJ1Y3Rpb24gJiB+aW1tZWRpYXRlTWFzaykgPT0gZXhwZWN0ZWQ7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIG5vcCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dElu
dChOT1ApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvcHlGdW5j
dGlvbj4KLSAgICAgICAgc3RhdGljIHZvaWQgZmlsbE5vcHModm9pZCogYmFzZSwgc2l6ZV90IHNp
emUsIENvcHlGdW5jdGlvbiBjb3B5KQotICAgICAgICB7Ci0gICAgICAgICAgICBVTlVTRURfUEFS
QU0oY29weSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHNpemUgJSBzaXplb2YoaW50
MzJfdCkpKTsKLQotICAgICAgICAgICAgaW50MzJfdCogcHRyID0gc3RhdGljX2Nhc3Q8aW50MzJf
dCo+KGJhc2UpOwotICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bTMycyA9IHNpemUgLyBzaXpl
b2YoaW50MzJfdCk7Ci0gICAgICAgICAgICBjb25zdCBpbnQzMl90IGluc24gPSBOT1A7Ci0gICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bTMyczsgaSsrKQotICAgICAgICAgICAg
ICAgICpwdHIrKyA9IGluc247Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRtYlNZKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KERNQl9TWSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIGRtYklTSFNUKCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZm
ZXIucHV0SW50KERNQl9JU0hTVCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGJ4KGludCBy
bSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVj
dGlvbih0b0FSTVdvcmQoY2MpIHwgQlgsIDAsIDAsIFJNKHJtKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBBc3NlbWJsZXJMYWJlbCBibHgoaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBCTFgsIDAs
IDAsIFJNKHJtKSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIGxzbChpbnQgcmVnLCBBUk1Xb3JkIHZhbHVl
KQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMp
OwotICAgICAgICAgICAgQVNTRVJUKHZhbHVlIDw9IDB4MWYpOwotICAgICAgICAgICAgcmV0dXJu
IHJlZyB8ICh2YWx1ZSA8PCA3KSB8IDB4MDA7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMg
QVJNV29yZCBsc3IoaW50IHJlZywgQVJNV29yZCB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKHJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVCh2
YWx1ZSA8PSAweDFmKTsKLSAgICAgICAgICAgIHJldHVybiByZWcgfCAodmFsdWUgPDwgNykgfCAw
eDIwOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQgYXNyKGludCByZWcsIEFS
TVdvcmQgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVn
aXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICBBU1NFUlQodmFsdWUgPD0gMHgxZik7Ci0gICAgICAg
ICAgICByZXR1cm4gcmVnIHwgKHZhbHVlIDw8IDcpIHwgMHg0MDsKLSAgICAgICAgfQotCi0gICAg
ICAgIHN0YXRpYyBBUk1Xb3JkIGxzbFJlZ2lzdGVyKGludCByZWcsIGludCBzaGlmdFJlZykKLSAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAg
ICAgICAgICAgIEFTU0VSVChzaGlmdFJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAg
ICAgIHJldHVybiByZWcgfCAoc2hpZnRSZWcgPDwgOCkgfCAweDEwOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc3RhdGljIEFSTVdvcmQgbHNyUmVnaXN0ZXIoaW50IHJlZywgaW50IHNoaWZ0UmVnKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwot
ICAgICAgICAgICAgQVNTRVJUKHNoaWZ0UmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAg
ICAgICAgcmV0dXJuIHJlZyB8IChzaGlmdFJlZyA8PCA4KSB8IDB4MzA7Ci0gICAgICAgIH0KLQot
ICAgICAgICBzdGF0aWMgQVJNV29yZCBhc3JSZWdpc3RlcihpbnQgcmVnLCBpbnQgc2hpZnRSZWcp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7
Ci0gICAgICAgICAgICBBU1NFUlQoc2hpZnRSZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAg
ICAgICAgICByZXR1cm4gcmVnIHwgKHNoaWZ0UmVnIDw8IDgpIHwgMHg1MDsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIEdlbmVyYWwgaGVscGVycwotCi0gICAgICAgIHNpemVfdCBjb2RlU2l6ZSgp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2J1ZmZlci5jb2RlU2l6ZSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBlbnN1cmVTcGFjZShpbnQgaW5zblNwYWNlLCBp
bnQgY29uc3RTcGFjZSkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIuZW5zdXJlU3Bh
Y2UoaW5zblNwYWNlLCBjb25zdFNwYWNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBzaXpl
T2ZDb25zdGFudFBvb2woKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXIu
c2l6ZU9mQ29uc3RhbnRQb29sKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3NlbWJsZXJMYWJl
bCBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1
ZmZlci5lbnN1cmVTcGFjZUZvckFueUluc3RydWN0aW9uKCk7Ci0gICAgICAgICAgICByZXR1cm4g
bV9idWZmZXIubGFiZWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFzc2VtYmxlckxhYmVsIGxh
YmVsRm9yV2F0Y2hwb2ludCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLmVuc3Vy
ZVNwYWNlRm9yQW55SW5zdHJ1Y3Rpb24obWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpIC8gc2l6ZW9m
KEFSTVdvcmQpKTsKLSAgICAgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVy
LmxhYmVsKCk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IChtX2luZGV4T2ZU
YWlsT2ZMYXN0V2F0Y2hwb2ludCAtIG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSkpCi0gICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKLSAgICAgICAgICAgIG1faW5kZXhPZlRhaWxPZkxh
c3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
OwotICAgICAgICAgICAgcmV0dXJuIGxhYmVsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3Nl
bWJsZXJMYWJlbCBsYWJlbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFzc2VtYmxlckxhYmVs
IHJlc3VsdCA9IGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwotICAgICAgICAgICAgd2hpbGUg
KHJlc3VsdC5tX29mZnNldCArIDEgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCkgewot
ICAgICAgICAgICAgICAgIG5vcCgpOwotICAgICAgICAgICAgICAgIC8vIFRoZSBhdmFpbGFibGUg
bnVtYmVyIG9mIGluc3RydWN0aW9ucyBhcmUgZW5zdXJlZCBieSBsYWJlbEZvcldhdGNocG9pbnQu
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3Nl
bWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB3
aGlsZSAoIW1fYnVmZmVyLmlzQWxpZ25lZChhbGlnbm1lbnQpKQotICAgICAgICAgICAgICAgIG1v
dihBUk1SZWdpc3RlcnM6OnIwLCBBUk1SZWdpc3RlcnM6OnIwKTsKLQotICAgICAgICAgICAgcmV0
dXJuIGxhYmVsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3NlbWJsZXJMYWJlbCBsb2FkQnJh
bmNoVGFyZ2V0KGludCByZCwgQ29uZGl0aW9uIGNjID0gQUwsIGludCB1c2VDb25zdGFudFBvb2wg
PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbnN1cmVTcGFjZShzaXplb2YoQVJNV29yZCks
IHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAgICAgICBtX2p1bXBzLmFwcGVuZChtX2J1ZmZlci5j
b2RlU2l6ZSgpIHwgKHVzZUNvbnN0YW50UG9vbCAmIDB4MSkpOwotICAgICAgICAgICAgbGRyVW5p
cXVlSW1tZWRpYXRlKHJkLCBJbnZhbGlkQnJhbmNoVGFyZ2V0LCBjYyk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFzc2VtYmxlckxh
YmVsIGptcChDb25kaXRpb24gY2MgPSBBTCwgaW50IHVzZUNvbnN0YW50UG9vbCA9IDApCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsb2FkQnJhbmNoVGFyZ2V0KEFSTVJlZ2lzdGVyczo6
cGMsIGNjLCB1c2VDb25zdGFudFBvb2wpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBwcmVw
YXJlRXhlY3V0YWJsZUNvcHkodm9pZCogdG8pOwotCi0gICAgICAgIHVuc2lnbmVkIGRlYnVnT2Zm
c2V0KCkgeyByZXR1cm4gbV9idWZmZXIuZGVidWdPZmZzZXQoKTsgfQotCi0gICAgICAgIC8vIERG
RyBhc3NlbWJseSBoZWxwZXJzIGZvciBtb3ZpbmcgZGF0YSBiZXR3ZWVuIGZwIGFuZCByZWdpc3Rl
cnMuCi0gICAgICAgIHZvaWQgdm1vdihSZWdpc3RlcklEIHJkMSwgUmVnaXN0ZXJJRCByZDIsIEZQ
UmVnaXN0ZXJJRCBybikKLSAgICAgICAgewotICAgICAgICAgICAgdm1vdl9hcm02NChyZDEsIHJk
Miwgcm4pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bW92KEZQUmVnaXN0ZXJJRCByZCwg
UmVnaXN0ZXJJRCBybjEsIFJlZ2lzdGVySUQgcm4yKQotICAgICAgICB7Ci0gICAgICAgICAgICB2
bW92X3ZmcDY0KHJkLCBybjEsIHJuMik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQYXRjaGlu
ZyBoZWxwZXJzCi0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQqIGdldExkckltbUFkZHJlc3MoQVJN
V29yZCogaW5zbikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGNhbGwKLSAg
ICAgICAgICAgIGlmICgoKmluc24gJiBMZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9uTWFzaykgIT0g
TGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbikgewotICAgICAgICAgICAgICAgIC8vIE11c3QgYmUg
QkxYCi0gICAgICAgICAgICAgICAgQVNTRVJUKCgqaW5zbiAmIEJseEluc3RydWN0aW9uTWFzaykg
PT0gQmx4SW5zdHJ1Y3Rpb24pOwotICAgICAgICAgICAgICAgIGluc24tLTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgLy8gTXVzdCBiZSBhbiBsZHIgLi4uLCBbcGMgKy8tIGltbV0KLSAg
ICAgICAgICAgIEFTU0VSVCgoKmluc24gJiBMZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9uTWFzaykg
PT0gTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbik7Ci0KLSAgICAgICAgICAgIEFSTVdvcmQgYWRk
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oaW5zbikgKyBEZWZhdWx0UHJlZmV0Y2hPZmZz
ZXQgKiBzaXplb2YoQVJNV29yZCk7Ci0gICAgICAgICAgICBpZiAoKmluc24gJiBEYXRhVHJhbnNm
ZXJVcCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4o
YWRkciArICgqaW5zbiAmIERhdGFUcmFuc2Zlck9mZnNldE1hc2spKTsKLSAgICAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEFSTVdvcmQqPihhZGRyIC0gKCppbnNuICYgRGF0YVRyYW5z
ZmVyT2Zmc2V0TWFzaykpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQqIGdl
dExkckltbUFkZHJlc3NPblBvb2woQVJNV29yZCogaW5zbiwgdWludDMyX3QqIGNvbnN0UG9vbCkK
LSAgICAgICAgewotICAgICAgICAgICAgLy8gTXVzdCBiZSBhbiBsZHIgLi4uLCBbcGMgKy8tIGlt
bV0KLSAgICAgICAgICAgIEFTU0VSVCgoKmluc24gJiBMZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9u
TWFzaykgPT0gTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbik7Ci0KLSAgICAgICAgICAgIGlmICgq
aW5zbiAmIDB4MSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUk1X
b3JkKj4oY29uc3RQb29sICsgKCgqaW5zbiAmIERhdGFUcmFuc2Zlck9mZnNldE1hc2spID4+IDEp
KTsKLSAgICAgICAgICAgIHJldHVybiBnZXRMZHJJbW1BZGRyZXNzKGluc24pOwotICAgICAgICB9
Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hQb2ludGVySW50ZXJuYWwoaW50cHRyX3QgZnJv
bSwgdm9pZCogdG8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQqIGluc24gPSByZWlu
dGVycHJldF9jYXN0PEFSTVdvcmQqPihmcm9tKTsKLSAgICAgICAgICAgIEFSTVdvcmQqIGFkZHIg
PSBnZXRMZHJJbW1BZGRyZXNzKGluc24pOwotICAgICAgICAgICAgKmFkZHIgPSByZWludGVycHJl
dF9jYXN0PEFSTVdvcmQ+KHRvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3Jk
IHBhdGNoQ29uc3RhbnRQb29sTG9hZChBUk1Xb3JkIGxvYWQsIEFSTVdvcmQgdmFsdWUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHZhbHVlID0gKHZhbHVlIDw8IDEpICsgMTsKLSAgICAgICAgICAg
IEFTU0VSVCghKHZhbHVlICYgfkRhdGFUcmFuc2Zlck9mZnNldE1hc2spKTsKLSAgICAgICAgICAg
IHJldHVybiAobG9hZCAmIH5EYXRhVHJhbnNmZXJPZmZzZXRNYXNrKSB8IHZhbHVlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hDb25zdGFudFBvb2xMb2FkKHZvaWQqIGxv
YWRBZGRyLCB2b2lkKiBjb25zdFBvb2xBZGRyKTsKLQotICAgICAgICAvLyBSZWFkIHBvaW50ZXJz
Ci0gICAgICAgIHN0YXRpYyB2b2lkKiByZWFkUG9pbnRlcih2b2lkKiBmcm9tKQotICAgICAgICB7
Ci0gICAgICAgICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJN
V29yZCo+KGZyb20pOwotICAgICAgICAgICAgQVJNV29yZCogYWRkcmVzcyA9IGdldExkckltbUFk
ZHJlc3MoaW5zdHJ1Y3Rpb24pOwotICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PHZvaWQqKj4oYWRkcmVzcyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQYXRjaCBwb2ludGVy
cwotCi0gICAgICAgIHN0YXRpYyB2b2lkIGxpbmtQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxl
ckxhYmVsIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50
ZXJJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb2RlKSArIGZyb20ubV9vZmZz
ZXQsIHRvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hJbnQzMih2
b2lkKiB3aGVyZSwgaW50MzJfdCB0bykKLSAgICAgICAgewotICAgICAgICAgICAgcGF0Y2hQb2lu
dGVySW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4od2hlcmUpLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPih0bykpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcmVw
YXRjaENvbXBhY3Qodm9pZCogd2hlcmUsIGludDMyX3QgdmFsdWUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEFSTVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4o
d2hlcmUpOwotICAgICAgICAgICAgQVNTRVJUKCgqaW5zdHJ1Y3Rpb24gJiAweDBmNzAwMDAwKSA9
PSBMb2FkVWludDMyKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA+PSAwKQotICAgICAgICAgICAg
ICAgICppbnN0cnVjdGlvbiA9ICgqaW5zdHJ1Y3Rpb24gJiAweGZmN2ZmMDAwKSB8IERhdGFUcmFu
c2ZlclVwIHwgdmFsdWU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKmluc3Ry
dWN0aW9uID0gKCppbnN0cnVjdGlvbiAmIDB4ZmY3ZmYwMDApIHwgLXZhbHVlOwotICAgICAgICAg
ICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hQb2ludGVyKHZvaWQqIGZyb20sIHZvaWQqIHRv
KQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChyZWludGVycHJl
dF9jYXN0PGludHB0cl90Pihmcm9tKSwgdG8pOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTGlu
a2VycwotICAgICAgICBzdGF0aWMgaW50cHRyX3QgZ2V0QWJzb2x1dGVKdW1wQWRkcmVzcyh2b2lk
KiBiYXNlLCBpbnQgb2Zmc2V0ID0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGJhc2UpICsgb2Zmc2V0IC0gc2l6ZW9mKEFSTVdvcmQp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBsaW5rSnVtcChBc3NlbWJsZXJMYWJlbCBmcm9t
LCBBc3NlbWJsZXJMYWJlbCB0bykKLSAgICAgICAgewotICAgICAgICAgICAgQVJNV29yZCogaW5z
biA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGdldEFic29sdXRlSnVtcEFkZHJlc3MobV9i
dWZmZXIuZGF0YSgpLCBmcm9tLm1fb2Zmc2V0KSk7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBhZGRy
ID0gZ2V0TGRySW1tQWRkcmVzc09uUG9vbChpbnNuLCBtX2J1ZmZlci5wb29sQWRkcmVzcygpKTsK
LSAgICAgICAgICAgICphZGRyID0gdG9BUk1Xb3JkKHRvLm1fb2Zmc2V0KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGxpbmtKdW1wKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVs
IGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRl
cm5hbChnZXRBYnNvbHV0ZUp1bXBBZGRyZXNzKGNvZGUsIGZyb20ubV9vZmZzZXQpLCB0byk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCByZWxpbmtKdW1wKHZvaWQqIGZyb20sIHZv
aWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChnZXRB
YnNvbHV0ZUp1bXBBZGRyZXNzKGZyb20pLCB0byk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0
aWMgdm9pZCByZWxpbmtKdW1wVG9Ob3Aodm9pZCogZnJvbSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmVsaW5rSnVtcChmcm9tLCBmcm9tKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB2
b2lkIGxpbmtDYWxsKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRvKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChnZXRBYnNvbHV0ZUp1
bXBBZGRyZXNzKGNvZGUsIGZyb20ubV9vZmZzZXQpLCB0byk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzdGF0aWMgdm9pZCByZWxpbmtDYWxsKHZvaWQqIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7
Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChnZXRBYnNvbHV0ZUp1bXBBZGRyZXNz
KGZyb20pLCB0byk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCogcmVhZENhbGxU
YXJnZXQodm9pZCogZnJvbSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHJlYWRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEFi
c29sdXRlSnVtcEFkZHJlc3MoZnJvbSkpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMg
dm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRf
Y2FzdDxBUk1Xb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAgICAgICBpbnRwdHJfdCBk
aWZmZXJlbmNlID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pIC0gKHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGluc3RydWN0aW9uKSArIERlZmF1bHRQcmVmZXRjaE9mZnNldCAqIHNp
emVvZihBUk1Xb3JkKSk7Ci0KLSAgICAgICAgICAgIGlmICghKGRpZmZlcmVuY2UgJiAxKSkgewot
ICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UgPj49IDI7Ci0gICAgICAgICAgICAgICAgaWYgKChk
aWZmZXJlbmNlIDw9IE1heGltdW1CcmFuY2hPZmZzZXREaXN0YW5jZSAmJiBkaWZmZXJlbmNlID49
IE1pbmltdW1CcmFuY2hPZmZzZXREaXN0YW5jZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgIC8v
IERpcmVjdCBicmFuY2guCi0gICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvblswXSA9IEIg
fCBBTCB8IChkaWZmZXJlbmNlICYgQnJhbmNoT2Zmc2V0TWFzayk7Ci0gICAgICAgICAgICAgICAg
ICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2YoQVJNV29yZCkpOwotICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgLy8gTG9hZCB0YXJnZXQuCi0gICAgICAgICAgICBpbnN0cnVjdGlvblswXSA9
IExvYWRVaW50MzIgfCBBTCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwgUkQoQVJNUmVnaXN0ZXJz
OjpwYykgfCA0OwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSByZWludGVycHJldF9jYXN0
PEFSTVdvcmQ+KHRvKTsKLSAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVv
ZihBUk1Xb3JkKSAqIDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBt
YXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHNp
emVvZihBUk1Xb3JkKSAqIDI7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3RleHBy
IHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBzaXplb2YoQVJNV29yZCkgKiAzOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZv
aWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEFSTVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3Jk
Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9u
LCBzaXplb2YoQVJNV29yZCkpOwotCi0gICAgICAgICAgICBBU1NFUlQoKCppbnN0cnVjdGlvbiAm
IExkck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSA9PSBBZGRJbW1lZGlhdGVJbnN0cnVjdGlvbiB8fCAo
Kmluc3RydWN0aW9uICYgTGRyT3JBZGRJbnN0cnVjdGlvbk1hc2spID09IExkckltbWVkaWF0ZUlu
c3RydWN0aW9uKTsKLSAgICAgICAgICAgIGlmICgoKmluc3RydWN0aW9uICYgTGRyT3JBZGRJbnN0
cnVjdGlvbk1hc2spID09IEFkZEltbWVkaWF0ZUluc3RydWN0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgICppbnN0cnVjdGlvbiA9ICgqaW5zdHJ1Y3Rpb24gJiB+TGRyT3JBZGRJbnN0cnVjdGlvbk1h
c2spIHwgTGRySW1tZWRpYXRlSW5zdHJ1Y3Rpb247Ci0gICAgICAgICAgICAgICAgIGNhY2hlRmx1
c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2
b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQotICAgICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBp
bnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3RhcnQp
OwotICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKEFSTVdvcmQpKTsK
LQotICAgICAgICAgICAgQVNTRVJUKCgqaW5zdHJ1Y3Rpb24gJiBMZHJPckFkZEluc3RydWN0aW9u
TWFzaykgPT0gQWRkSW1tZWRpYXRlSW5zdHJ1Y3Rpb24gfHwgKCppbnN0cnVjdGlvbiAmIExkck9y
QWRkSW5zdHJ1Y3Rpb25NYXNrKSA9PSBMZHJJbW1lZGlhdGVJbnN0cnVjdGlvbik7Ci0gICAgICAg
ICAgICBpZiAoKCppbnN0cnVjdGlvbiAmIExkck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSA9PSBMZHJJ
bW1lZGlhdGVJbnN0cnVjdGlvbikgewotICAgICAgICAgICAgICAgICAqaW5zdHJ1Y3Rpb24gPSAo
Kmluc3RydWN0aW9uICYgfkxkck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSB8IEFkZEltbWVkaWF0ZUlu
c3RydWN0aW9uOwotICAgICAgICAgICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXpl
b2YoQVJNV29yZCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGlj
IHZvaWQgcmV2ZXJ0QnJhbmNoUHRyV2l0aFBhdGNoKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIFJl
Z2lzdGVySUQgcm4sIEFSTVdvcmQgaW1tKQotICAgICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3Jk
KiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGluc3RydWN0aW9uU3Rh
cnQpOwotCi0gICAgICAgICAgICBBU1NFUlQoKGluc3RydWN0aW9uWzJdICYgTGRyUGNJbW1lZGlh
dGVJbnN0cnVjdGlvbk1hc2spID09IExkclBjSW1tZWRpYXRlSW5zdHJ1Y3Rpb24pOwotICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSB0b0FSTVdvcmQoQUwpIHwgKChpbnN0cnVjdGlvblsyXSAm
IDB4MGZmZjBmZmYpICsgc2l6ZW9mKEFSTVdvcmQpKSB8IFJEKEFSTVJlZ2lzdGVyczo6UzEpOwot
ICAgICAgICAgICAgKmdldExkckltbUFkZHJlc3MoaW5zdHJ1Y3Rpb24pID0gaW1tOwotICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSB0b0FSTVdvcmQoQUwpIHwgQ01QIHwgU2V0Q29uZGl0aW9u
YWxDb2RlcyB8IFJOKHJuKSB8IFJNKEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICAgICAgY2Fj
aGVGbHVzaChpbnN0cnVjdGlvbiwgMiAqIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBBZGRyZXNzIG9wZXJhdGlvbnMKLQotICAgICAgICBzdGF0aWMgdm9pZCogZ2V0
UmVsb2NhdGVkQWRkcmVzcyh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBsYWJlbCkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNvZGUpICsgbGFiZWwubV9vZmZzZXQpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gQWRkcmVzcyBkaWZmZXJlbmNlcwotCi0gICAgICAgIHN0YXRpYyBpbnQgZ2V0RGlm
ZmVyZW5jZUJldHdlZW5MYWJlbHMoQXNzZW1ibGVyTGFiZWwgYSwgQXNzZW1ibGVyTGFiZWwgYikK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGIubV9vZmZzZXQgLSBhLm1fb2Zmc2V0Owot
ICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQo
QXNzZW1ibGVyTGFiZWwgY2FsbCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNhbGwu
bV9vZmZzZXQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBIYW5kbGUgaW1tZWRpYXRlcwotCi0g
ICAgICAgIHN0YXRpYyBBUk1Xb3JkIGdldE9wMihBUk1Xb3JkIGltbSk7Ci0KLSAgICAgICAgLy8g
RmFzdCBjYXNlIGlmIGltbSBpcyBrbm93biB0byBiZSBiZXR3ZWVuIDAgYW5kIDB4ZmYKLSAgICAg
ICAgc3RhdGljIEFSTVdvcmQgZ2V0T3AyQnl0ZShBUk1Xb3JkIGltbSkKLSAgICAgICAgewotICAg
ICAgICAgICAgQVNTRVJUKGltbSA8PSAweGZmKTsKLSAgICAgICAgICAgIHJldHVybiBPcDJJbW1l
ZGlhdGUgfCBpbW07Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJNV29yZCBnZXRPcDJI
YWxmKEFSTVdvcmQgaW1tKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoaW1tIDw9IDB4
ZmYpOwotICAgICAgICAgICAgcmV0dXJuIEltbWVkaWF0ZUZvckhhbGZXb3JkVHJhbnNmZXIgfCAo
aW1tICYgMHgwZikgfCAoKGltbSAmIDB4ZjApIDw8IDQpOwotICAgICAgICB9Ci0KLSNpZiBXVEZf
QVJNX0FSQ0hfQVRfTEVBU1QoNykKLSAgICAgICAgc3RhdGljIEFSTVdvcmQgZ2V0SW1tMTZPcDIo
QVJNV29yZCBpbW0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpbW0gPD0gMHhmZmZmKQot
ICAgICAgICAgICAgICAgIHJldHVybiAoaW1tICYgMHhmMDAwKSA8PCA0IHwgKGltbSAmIDB4ZmZm
KTsKLSAgICAgICAgICAgIHJldHVybiBJbnZhbGlkSW1tZWRpYXRlOwotICAgICAgICB9Ci0jZW5k
aWYKLSAgICAgICAgQVJNV29yZCBnZXRJbW0oQVJNV29yZCBpbW0sIGludCB0bXBSZWcsIGJvb2wg
aW52ZXJ0ID0gZmFsc2UpOwotICAgICAgICB2b2lkIG1vdmVJbW0oQVJNV29yZCBpbW0sIGludCBk
ZXN0KTsKLSAgICAgICAgQVJNV29yZCBlbmNvZGVDb21wbGV4SW1tKEFSTVdvcmQgaW1tLCBpbnQg
ZGVzdCk7Ci0KLSAgICAgICAgLy8gTWVtb3J5IGxvYWQvc3RvcmUgaGVscGVycwotCi0gICAgICAg
IHZvaWQgZGF0YVRyYW5zZmVyMzIoRGF0YVRyYW5zZmVyVHlwZUEsIFJlZ2lzdGVySUQgc3JjRHN0
LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KTsKLSAgICAgICAgdm9pZCBiYXNlSW5k
ZXhUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGVBLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0
ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0KTsK
LSAgICAgICAgdm9pZCBkYXRhVHJhbnNmZXIxNihEYXRhVHJhbnNmZXJUeXBlQiwgUmVnaXN0ZXJJ
RCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpOwotICAgICAgICB2b2lk
IGJhc2VJbmRleFRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlwZUIsIFJlZ2lzdGVySUQgc3JjRHN0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50MzJfdCBv
ZmZzZXQpOwotICAgICAgICB2b2lkIGRhdGFUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVG
bG9hdCwgRlBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNl
dCk7Ci0gICAgICAgIHZvaWQgYmFzZUluZGV4VHJhbnNmZXJGbG9hdChEYXRhVHJhbnNmZXJUeXBl
RmxvYXQsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBp
bmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCk7Ci0KLSAgICAgICAgLy8gQ29uc3RhbnQg
cG9vbCBobmFkbGVycwotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIHBsYWNlQ29uc3RhbnRQb29s
QmFycmllcihpbnQgb2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAgICAgICBvZmZzZXQgPSAob2Zm
c2V0IC0gc2l6ZW9mKEFSTVdvcmQpKSA+PiAyOwotICAgICAgICAgICAgQVNTRVJUKChvZmZzZXQg
PD0gTWF4aW11bUJyYW5jaE9mZnNldERpc3RhbmNlICYmIG9mZnNldCA+PSBNaW5pbXVtQnJhbmNo
T2Zmc2V0RGlzdGFuY2UpKTsKLSAgICAgICAgICAgIHJldHVybiBBTCB8IEIgfCAob2Zmc2V0ICYg
QnJhbmNoT2Zmc2V0TWFzayk7Ci0gICAgICAgIH0KLQotI2lmIE9TKExJTlVYKSAmJiBDT01QSUxF
UihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIGxpbnV4UGFnZUZs
dXNoKHVpbnRwdHJfdCBiZWdpbiwgdWludHB0cl90IGVuZCkKLSAgICAgICAgewotICAgICAgICAg
ICAgYXNtIHZvbGF0aWxlKAotICAgICAgICAgICAgICAgICJwdXNoICAgIHtyN31cbiIKLSAgICAg
ICAgICAgICAgICAibW92ICAgICByMCwgJTBcbiIKLSAgICAgICAgICAgICAgICAibW92ICAgICBy
MSwgJTFcbiIKLSAgICAgICAgICAgICAgICAibW92ICAgICByNywgIzB4ZjAwMDBcbiIKLSAgICAg
ICAgICAgICAgICAiYWRkICAgICByNywgcjcsICMweDJcbiIKLSAgICAgICAgICAgICAgICAibW92
ICAgICByMiwgIzB4MFxuIgotICAgICAgICAgICAgICAgICJzdmMgICAgIDB4MFxuIgotICAgICAg
ICAgICAgICAgICJwb3AgICAgIHtyN31cbiIKLSAgICAgICAgICAgICAgICA6Ci0gICAgICAgICAg
ICAgICAgOiAiciIgKGJlZ2luKSwgInIiIChlbmQpCi0gICAgICAgICAgICAgICAgOiAicjAiLCAi
cjEiLCAicjIiKTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgc3RhdGljIHZvaWQgY2Fj
aGVGbHVzaCh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKLSAgICAgICAgewotI2lmIE9TKExJTlVY
KSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgICAgIHNpemVfdCBwYWdlID0g
cGFnZVNpemUoKTsKLSAgICAgICAgICAgIHVpbnRwdHJfdCBjdXJyZW50ID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KGNvZGUpOwotICAgICAgICAgICAgdWludHB0cl90IGVuZCA9IGN1cnJl
bnQgKyBzaXplOwotICAgICAgICAgICAgdWludHB0cl90IGZpcnN0UGFnZUVuZCA9IChjdXJyZW50
ICYgfihwYWdlIC0gMSkpICsgcGFnZTsKLQotICAgICAgICAgICAgaWYgKGVuZCA8PSBmaXJzdFBh
Z2VFbmQpIHsKLSAgICAgICAgICAgICAgICBsaW51eFBhZ2VGbHVzaChjdXJyZW50LCBlbmQpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbGlu
dXhQYWdlRmx1c2goY3VycmVudCwgZmlyc3RQYWdlRW5kKTsKLQotICAgICAgICAgICAgZm9yIChj
dXJyZW50ID0gZmlyc3RQYWdlRW5kOyBjdXJyZW50ICsgcGFnZSA8IGVuZDsgY3VycmVudCArPSBw
YWdlKQotICAgICAgICAgICAgICAgIGxpbnV4UGFnZUZsdXNoKGN1cnJlbnQsIGN1cnJlbnQgKyBw
YWdlKTsKLQotICAgICAgICAgICAgbGludXhQYWdlRmx1c2goY3VycmVudCwgZW5kKTsKLSNlbHNl
Ci0jZXJyb3IgIlRoZSBjYWNoZUZsdXNoIHN1cHBvcnQgaXMgbWlzc2luZyBvbiB0aGlzIHBsYXRm
b3JtLiIKLSNlbmRpZgotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMg
QVJNV29yZCBSTShpbnQgcmVnKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9
IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAgICAgICAgcmV0dXJuIHJlZzsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIFJTKGludCByZWcpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICByZXR1cm4g
cmVnIDw8IDg7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJNV29yZCBSRChpbnQgcmVn
KQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMp
OwotICAgICAgICAgICAgcmV0dXJuIHJlZyA8PCAxMjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0
YXRpYyBBUk1Xb3JkIFJOKGludCByZWcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChy
ZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICByZXR1cm4gcmVnIDw8IDE2Owot
ICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQgZ2V0Q29uZGl0aW9uYWxGaWVsZChB
Uk1Xb3JkIGkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpICYgQ29uZGl0aW9uYWxG
aWVsZE1hc2s7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJNV29yZCB0b0FSTVdvcmQo
Q29uZGl0aW9uIGNjKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
QVJNV29yZD4oY2MpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQgdG9BUk1X
b3JkKHVpbnQzMl90IHUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxBUk1Xb3JkPih1KTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBnZW5JbnQoaW50IHJlZywg
QVJNV29yZCBpbW0sIGJvb2wgcG9zaXRpdmUpOwotCi0gICAgICAgIEFSTUJ1ZmZlciBtX2J1ZmZl
cjsKLSAgICAgICAgSnVtcHMgbV9qdW1wczsKLSAgICAgICAgdWludDMyX3QgbV9pbmRleE9mVGFp
bE9mTGFzdFdhdGNocG9pbnQ7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKaW5kZXggZWExMDdmYjRk
OTAzNTNiODBkNWYyOGE4NTk4OWUyZjViZDRkMDdlNy4uYjIzNmE1YzgwMmNiNzc2YTJjYWRiYWE1
ZWJjZmU2YmQxZmIzYTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9MaW5rQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwCkBAIC0yOTgsOSArMjk4LDcgQEAgdm9pZCBMaW5rQnVmZmVyOjpsaW5r
Q29kZShNYWNyb0Fzc2VtYmxlciYgbWFjcm9Bc3NlbWJsZXIsIHZvaWQqIG93bmVyVUlELCBKSVRD
b20KICAgICBBU1NFUlQobV9jb2RlKTsKICAgICBBc3NlbWJsZXJCdWZmZXImIGJ1ZmZlciA9IG1h
Y3JvQXNzZW1ibGVyLm1fYXNzZW1ibGVyLmJ1ZmZlcigpOwogICAgIHZvaWQqIGNvZGUgPSBtX2Nv
ZGUuZGF0YUxvY2F0aW9uKCk7Ci0jaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAgICBtYWNyb0Fz
c2VtYmxlci5tX2Fzc2VtYmxlci5wcmVwYXJlRXhlY3V0YWJsZUNvcHkoY29kZSk7Ci0jZWxpZiBD
UFUoQVJNNjQpCisjaWYgQ1BVKEFSTTY0KQogICAgIFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBUb011
bHRpcGxlT2Y8QXNzZW1ibGVyOjppbnN0cnVjdGlvblNpemU+KGNvZGUpID09IGNvZGUpOwogI2Vu
ZGlmCiAgICAgcGVyZm9ybUpJVE1lbWNweShjb2RlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuY29k
ZVNpemUoKSk7CkBAIC00MDAsMjMgKzM5OCw2IEBAIHZvaWQgTGlua0J1ZmZlcjo6ZHVtcENvZGUo
dm9pZCogY29kZSwgc2l6ZV90IHNpemUpCiAgICAgICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0c2l6ZTsgaSsrKQogICAgICAgICBkYXRhTG9nRigiXHQuc2hvcnRcdDB4JXhcbiIs
IHRjb2RlW2ldKTsKLSNlbGlmIENQVShBUk1fVFJBRElUSU9OQUwpCi0gICAgLy8gICBnY2MgLWMg
aml0LnMKLSAgICAvLyAgIG9iamR1bXAgLUQgaml0Lm8KLSAgICBzdGF0aWMgdW5zaWduZWQgY29k
ZUNvdW50ID0gMDsKLSAgICB1bnNpZ25lZCBpbnQqIHRjb2RlID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50Kj4oY29kZSk7Ci0gICAgc2l6ZV90IHRzaXplID0gc2l6ZSAvIHNpemVvZih1bnNpZ25l
ZCBpbnQpOwotICAgIGNoYXIgbmFtZUJ1ZlsxMjhdOwotICAgIHNucHJpbnRmKG5hbWVCdWYsIHNp
emVvZihuYW1lQnVmKSwgIl9qc2Nfaml0JXUiLCBjb2RlQ291bnQrKyk7Ci0gICAgZGF0YUxvZ0Yo
Ilx0Lmdsb2JsXHQlc1xuIgotICAgICAgICAgICAgIlx0LmFsaWduIDRcbiIKLSAgICAgICAgICAg
ICJcdC5jb2RlIDMyXG4iCi0gICAgICAgICAgICAiXHQudGV4dFxuIgotICAgICAgICAgICAgIiMg
JXBcbiIKLSAgICAgICAgICAgICIlczpcbiIsIG5hbWVCdWYsIGNvZGUsIG5hbWVCdWYpOwotCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRzaXplOyBpKyspCi0gICAgICAgIGRhdGFMb2dG
KCJcdC5sb25nXHQweCV4XG4iLCB0Y29kZVtpXSk7CiAjZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGNk
MWI1NDU4MzI1MmE2ODA5ZmQ1NmZmMDlkOGFmMzU4NmNkNTk0MDguLjNhNzJjMjc5MjI0MGFiNjg2
NTY0NDU3MDk2MDUxMGU2ZTEwMjBkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTQ1LDExICs0NSw2IEBAIG5hbWVzcGFjZSBK
U0MgeyB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQVJNdjcgTWFjcm9Bc3NlbWJsZXJCYXNlOyB9Owog
I2RlZmluZSBUQVJHRVRfTUFDUk9BU1NFTUJMRVIgTWFjcm9Bc3NlbWJsZXJBUk02NAogI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyQVJNNjQuaCIKIAotI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkK
LSNkZWZpbmUgVEFSR0VUX0FTU0VNQkxFUiBBUk1Bc3NlbWJsZXIKLSNkZWZpbmUgVEFSR0VUX01B
Q1JPQVNTRU1CTEVSIE1hY3JvQXNzZW1ibGVyQVJNCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJB
Uk0uaCIKLQogI2VsaWYgQ1BVKE1JUFMpCiAjZGVmaW5lIFRBUkdFVF9BU1NFTUJMRVIgTUlQU0Fz
c2VtYmxlcgogI2RlZmluZSBUQVJHRVRfTUFDUk9BU1NFTUJMRVIgTWFjcm9Bc3NlbWJsZXJNSVBT
CkBAIC0xNDIsNyArMTM3LDcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9B
c3NlbWJsZXJCYXNlIHsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmFuZDMyOwogICAg
IHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoQWRkMzI7CiAgICAgdXNpbmcgTWFjcm9B
c3NlbWJsZXJCYXNlOjpicmFuY2hNdWwzMjsKLSNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhV
TUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoTUlQUykK
KyNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUo
TUlQUykKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaFB0cjsKICNlbmRpZgog
ICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoU3ViMzI7CkBAIC00MzQsNyArNDI5
LDYgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsK
ICAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNoMzJXaXRoUGF0Y2goY29uZCwgbGVm
dCwgZGF0YUxhYmVsLCBpbml0aWFsUmlnaHRWYWx1ZSkpOwogICAgIH0KIAotI2lmICFDUFUoQVJN
X1RSQURJVElPTkFMKQogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChqdW1wKCkpOwpAQCAtNDU5LDcgKzQ1Myw2IEBA
IGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQmFzZSB7CiAgICAg
ewogICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFuY2gzMihjb25kLCBhZGRyZXNzLCBp
bW0pKTsKICAgICB9Ci0jZW5kaWYKICNlbmRpZgogCiAgICAgdm9pZCBqdW1wKExhYmVsIHRhcmdl
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1NzRkNmMzNWYzMzMw
NTQ1ZDk2MGJjNjNjZWRhZGE1MDdkMmVmMDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NTMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBV
bml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJ
VElPTkFMKQotI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCi0KLSNpbmNsdWRlICJQcm9iZUNv
bnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+Ci0KLSNpZiBPUyhMSU5VWCkKLSNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPGZj
bnRsLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8ZWxmLmg+Ci0jaW5jbHVkZSA8
YXNtL2h3Y2FwLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXN0YXRpYyBib29sIGlz
VkZQUHJlc2VudCgpCi17Ci0jaWYgT1MoTElOVVgpCi0gICAgaW50IGZkID0gb3BlbigiL3Byb2Mv
c2VsZi9hdXh2IiwgT19SRE9OTFkpOwotICAgIGlmIChmZCAhPSAtMSkgewotICAgICAgICBFbGYz
Ml9hdXh2X3QgYXV4OwotICAgICAgICB3aGlsZSAocmVhZChmZCwgJmF1eCwgc2l6ZW9mKEVsZjMy
X2F1eHZfdCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV4LmFfdHlwZSA9PSBBVF9IV0NBUCkgewot
ICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gYXV4LmFf
dW4uYV92YWwgJiBIV0NBUF9WRlA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
Y2xvc2UoZmQpOwotICAgIH0KLSNlbmRpZiAvLyBPUyhMSU5VWCkKLQotI2lmIChDT01QSUxFUihH
Q0NfQ09NUEFUSUJMRSkgJiYgZGVmaW5lZChfX1ZGUF9GUF9fKSkKLSAgICByZXR1cm4gdHJ1ZTsK
LSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLWNvbnN0IGJvb2wgTWFjcm9B
c3NlbWJsZXJBUk06OnNfaXNWRlBQcmVzZW50ID0gaXNWRlBQcmVzZW50KCk7Ci0KLSNpZiBDUFUo
QVJNVjVfT1JfTE9XRVIpCi0vKiBPbiBBUk12NSBhbmQgYmVsb3csIG5hdHVyYWwgYWxpZ25tZW50
IGlzIHJlcXVpcmVkLiAqLwotdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZDMyV2l0aFVuYWxp
Z25lZEhhbGZXb3JkcyhCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotewotICAg
IEFSTVdvcmQgb3AyOwotCi0gICAgQVNTRVJUKGFkZHJlc3Muc2NhbGUgPj0gMCAmJiBhZGRyZXNz
LnNjYWxlIDw9IDMpOwotICAgIG9wMiA9IG1fYXNzZW1ibGVyLmxzbChhZGRyZXNzLmluZGV4LCBz
dGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpKTsKLQotICAgIGlmIChhZGRyZXNzLm9mZnNl
dCA+PSAwICYmIGFkZHJlc3Mub2Zmc2V0ICsgMHgyIDw9IDB4ZmYpIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3MuYmFzZSwgb3AyKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuaGFsZkR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgQVJN
UmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxmKGFkZHJlc3Mub2Zmc2V0KSk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJVcChBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYs
IEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
SGFsZihhZGRyZXNzLm9mZnNldCArIDB4MikpOwotICAgIH0gZWxzZSBpZiAoYWRkcmVzcy5vZmZz
ZXQgPCAwICYmIGFkZHJlc3Mub2Zmc2V0ID49IC0weGZmKSB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmFkZChBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIG9wMik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmhhbGZEdHJEb3duKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgQVJNUmVn
aXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxmKC1hZGRyZXNzLm9mZnNldCkpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5oYWxmRHRyRG93bihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYs
IEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
SGFsZigtYWRkcmVzcy5vZmZzZXQgLSAweDIpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZlSW1tKGFkZHJlc3Mub2Zmc2V0LCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIG9w
Mik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJVcFJlZ2lzdGVyKEFSTUFzc2VtYmxlcjo6
TG9hZFVpbnQxNiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFS
TUFzc2VtYmxlcjo6T3AySW1tZWRpYXRlIHwgMHgyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuaGFs
ZkR0clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBBUk1SZWdpc3RlcnM6OlMw
LCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIH0KLSAgICBtX2Fzc2VtYmxl
ci5vcnIoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIubHNsKEFSTVJlZ2lzdGVyczo6UzAsIDE2KSk7
Ci19Ci0jZW5kaWYgLy8gQ1BVKEFSTVY1X09SX0xPV0VSKQotCi0jaWYgRU5BQkxFKE1BU01fUFJP
QkUpCi0KLWV4dGVybiAiQyIgdm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKCk7Ci0KLXVzaW5n
IG5hbWVzcGFjZSBBUk1SZWdpc3RlcnM7Ci0KLSNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkK
LQotLy8gVGhlIGZvbGxvd2luZyBhcmUgb2Zmc2V0cyBmb3IgUHJvYmU6OlN0YXRlIGZpZWxkcyBh
Y2Nlc3NlZAotLy8gYnkgdGhlIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUgc3R1Yi4KLQotI2RlZmlu
ZSBQVFJfU0laRSA0Ci0jZGVmaW5lIFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCAoMCAqIFBU
Ul9TSVpFKQotI2RlZmluZSBQUk9CRV9BUkdfT0ZGU0VUICgxICogUFRSX1NJWkUpCi0jZGVmaW5l
IFBST0JFX0lOSVRfU1RBQ0tfRlVOQ1RJT05fT0ZGU0VUICgyICogUFRSX1NJWkUpCi0jZGVmaW5l
IFBST0JFX0lOSVRfU1RBQ0tfQVJHX09GRlNFVCAoMyAqIFBUUl9TSVpFKQotCi0jZGVmaW5lIFBS
T0JFX0ZJUlNUX0dQUkVHX09GRlNFVCAoNCAqIFBUUl9TSVpFKQotCi0jZGVmaW5lIEdQUkVHX1NJ
WkUgNAotI2RlZmluZSBQUk9CRV9DUFVfUjBfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZT
RVQgKyAoMCAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjFfT0ZGU0VUIChQUk9C
RV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMSAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9D
UFVfUjJfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMiAqIEdQUkVHX1NJWkUp
KQotI2RlZmluZSBQUk9CRV9DUFVfUjNfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQg
KyAoMyAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjRfT0ZGU0VUIChQUk9CRV9G
SVJTVF9HUFJFR19PRkZTRVQgKyAoNCAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVf
UjVfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoNSAqIEdQUkVHX1NJWkUpKQot
I2RlZmluZSBQUk9CRV9DUFVfUjZfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAo
NiAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjdfT0ZGU0VUIChQUk9CRV9GSVJT
VF9HUFJFR19PRkZTRVQgKyAoNyAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjhf
T0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoOCAqIEdQUkVHX1NJWkUpKQotI2Rl
ZmluZSBQUk9CRV9DUFVfUjlfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoOSAq
IEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjEwX09GRlNFVCAoUFJPQkVfRklSU1Rf
R1BSRUdfT0ZGU0VUICsgKDEwICogR1BSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9SMTFf
T0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTEgKiBHUFJFR19TSVpFKSkKLSNk
ZWZpbmUgUFJPQkVfQ1BVX0lQX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDEy
ICogR1BSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9TUF9PRkZTRVQgKFBST0JFX0ZJUlNU
X0dQUkVHX09GRlNFVCArICgxMyAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfTFJf
T0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTQgKiBHUFJFR19TSVpFKSkKLSNk
ZWZpbmUgUFJPQkVfQ1BVX1BDX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDE1
ICogR1BSRUdfU0laRSkpCi0KLSNkZWZpbmUgUFJPQkVfQ1BVX0FQU1JfT0ZGU0VUIChQUk9CRV9G
SVJTVF9HUFJFR19PRkZTRVQgKyAoMTYgKiBHUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BV
X0ZQU0NSX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDE3ICogR1BSRUdfU0la
RSkpCi0KLSNkZWZpbmUgUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJF
R19PRkZTRVQgKyAoMTggKiBHUFJFR19TSVpFKSkKLQotI2RlZmluZSBGUFJFR19TSVpFIDgKLSNk
ZWZpbmUgUFJPQkVfQ1BVX0QwX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDAg
KiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QxX09GRlNFVCAoUFJPQkVfRklSU1Rf
RlBSRUdfT0ZGU0VUICsgKDEgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QyX09G
RlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDIgKiBGUFJFR19TSVpFKSkKLSNkZWZp
bmUgUFJPQkVfQ1BVX0QzX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDMgKiBG
UFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q0X09GRlNFVCAoUFJPQkVfRklSU1RfRlBS
RUdfT0ZGU0VUICsgKDQgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q1X09GRlNF
VCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDUgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUg
UFJPQkVfQ1BVX0Q2X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDYgKiBGUFJF
R19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q3X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdf
T0ZGU0VUICsgKDcgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q4X09GRlNFVCAo
UFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDggKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJP
QkVfQ1BVX0Q5X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDkgKiBGUFJFR19T
SVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QxMF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09G
RlNFVCArICgxMCAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDExX09GRlNFVCAo
UFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDExICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBS
T0JFX0NQVV9EMTJfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTIgKiBGUFJF
R19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QxM19PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVH
X09GRlNFVCArICgxMyAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDE0X09GRlNF
VCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDE0ICogRlBSRUdfU0laRSkpCi0jZGVmaW5l
IFBST0JFX0NQVV9EMTVfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTUgKiBG
UFJFR19TSVpFKSkKLQotI2lmIENQVShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQot
I2RlZmluZSBQUk9CRV9DUFVfRDE2X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsg
KDE2ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMTdfT0ZGU0VUIChQUk9CRV9G
SVJTVF9GUFJFR19PRkZTRVQgKyAoMTcgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BV
X0QxOF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgxOCAqIEZQUkVHX1NJWkUp
KQotI2RlZmluZSBQUk9CRV9DUFVfRDE5X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VU
ICsgKDE5ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMjBfT0ZGU0VUIChQUk9C
RV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjAgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVf
Q1BVX0QyMV9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyMSAqIEZQUkVHX1NJ
WkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDIyX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZG
U0VUICsgKDIyICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMjNfT0ZGU0VUIChQ
Uk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjMgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJP
QkVfQ1BVX0QyNF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyNCAqIEZQUkVH
X1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDI1X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdf
T0ZGU0VUICsgKDI1ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMjZfT0ZGU0VU
IChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjYgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUg
UFJPQkVfQ1BVX0QyN19PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgyNyAqIEZQ
UkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDI4X09GRlNFVCAoUFJPQkVfRklSU1RfRlBS
RUdfT0ZGU0VUICsgKDI4ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMjlfT0ZG
U0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjkgKiBGUFJFR19TSVpFKSkKLSNkZWZp
bmUgUFJPQkVfQ1BVX0QzMF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgzMCAq
IEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDMxX09GRlNFVCAoUFJPQkVfRklSU1Rf
RlBSRUdfT0ZGU0VUICsgKDMxICogRlBSRUdfU0laRSkpCi0KLSNkZWZpbmUgUFJPQkVfU0laRSAo
UFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDMyICogRlBSRUdfU0laRSkpCi0jZWxzZQotI2Rl
ZmluZSBQUk9CRV9TSVpFIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTYgKiBGUFJFR19T
SVpFKSkKLSNlbmRpZiAvLyBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikKLQot
I2RlZmluZSBPVVRfU0laRSBHUFJFR19TSVpFCi0KLS8vIFRoZXNlIEFTU0VSVHMgcmVtaW5kIHlv
dSB0aGF0IGlmIHlvdSBjaGFuZ2UgdGhlIGxheW91dCBvZiBQcm9iZTo6U3RhdGUsCi0vLyB5b3Ug
bmVlZCB0byBjaGFuZ2UgY3RpTWFzbVByb2JlVHJhbXBvbGluZSBvZmZzZXRzIGFib3ZlIHRvIG1h
dGNoLgotI2RlZmluZSBQUk9CRV9PRkZTRVRPRih4KSBvZmZzZXRvZihzdHJ1Y3QgUHJvYmU6OlN0
YXRlLCB4KQotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihwcm9iZUZ1bmN0aW9uKSA9PSBQ
Uk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OnByb2JlRnVuY3Rpb24n
cyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0
KFBST0JFX09GRlNFVE9GKGFyZykgPT0gUFJPQkVfQVJHX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6
YXJnJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fz
c2VydChQUk9CRV9PRkZTRVRPRihpbml0aWFsaXplU3RhY2tGdW5jdGlvbikgPT0gUFJPQkVfSU5J
VF9TVEFDS19GVU5DVElPTl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmluaXRpYWxpemVTdGFja0Z1
bmN0aW9uJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGlj
X2Fzc2VydChQUk9CRV9PRkZTRVRPRihpbml0aWFsaXplU3RhY2tBcmcpID09IFBST0JFX0lOSVRf
U1RBQ0tfQVJHX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6aW5pdGlhbGl6ZVN0YWNrQXJnJ3Mgb2Zm
c2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotCi1zdGF0aWNfYXNzZXJ0KCEo
UFJPQkVfQ1BVX1IwX09GRlNFVCAmIDB4MyksICJQcm9iZTo6U3RhdGU6OmNwdS5ncHJzW3IwXSdz
IG9mZnNldCBzaG91bGQgYmUgNCBieXRlIGFsaWduZWQiKTsKLQotc3RhdGljX2Fzc2VydChQUk9C
RV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIwXSkgPT0gUFJPQkVfQ1BVX1IwX09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3By
c1tBUk1SZWdpc3RlcnM6OnIxXSkgPT0gUFJPQkVfQ1BVX1IxX09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmdwcnNbcjFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIp
Owotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIy
XSkgPT0gUFJPQkVfQ1BVX1IyX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjJdJ3Mg
b2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQ
Uk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIzXSkgPT0gUFJPQkVfQ1BVX1Iz
X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjNdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3Rp
TWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUu
Z3Byc1tBUk1SZWdpc3RlcnM6OnI0XSkgPT0gUFJPQkVfQ1BVX1I0X09GRlNFVCwgIlByb2JlOjpT
dGF0ZTo6Y3B1LmdwcnNbcjRdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGlu
ZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6
OnI1XSkgPT0gUFJPQkVfQ1BVX1I1X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjVd
J3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2Vy
dChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI2XSkgPT0gUFJPQkVfQ1BV
X1I2X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjZdJ3Mgb2Zmc2V0IG1hdGNoZXMg
Y3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihj
cHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI3XSkgPT0gUFJPQkVfQ1BVX1I3X09GRlNFVCwgIlByb2Jl
OjpTdGF0ZTo6Y3B1LmdwcnNbcjddJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBv
bGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3Rl
cnM6OnI4XSkgPT0gUFJPQkVfQ1BVX1I4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNb
cjhdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fz
c2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI5XSkgPT0gUFJPQkVf
Q1BVX1I5X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjldJ3Mgb2Zmc2V0IG1hdGNo
ZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRP
RihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIxMF0pID09IFBST0JFX0NQVV9SMTBfT0ZGU0VULCAi
UHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1tyMTBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2Jl
VHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1S
ZWdpc3RlcnM6OnIxMV0pID09IFBST0JFX0NQVV9SMTFfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpj
cHUuZ3Byc1tyMTFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwot
c3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OmlwXSkg
PT0gUFJPQkVfQ1BVX0lQX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbaXBdJ3Mgb2Zm
c2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9C
RV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnNwXSkgPT0gUFJPQkVfQ1BVX1NQX09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbc3BdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3By
c1tBUk1SZWdpc3RlcnM6OmxyXSkgPT0gUFJPQkVfQ1BVX0xSX09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmdwcnNbbHJdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIp
Owotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnBj
XSkgPT0gUFJPQkVfQ1BVX1BDX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcGNdJ3Mg
b2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotCi1zdGF0aWNfYXNzZXJ0
KFBST0JFX09GRlNFVE9GKGNwdS5zcHJzW0FSTVJlZ2lzdGVyczo6YXBzcl0pID09IFBST0JFX0NQ
VV9BUFNSX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LnNwcnNbYXBzcl0ncyBvZmZzZXQgbWF0
Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNF
VE9GKGNwdS5zcHJzW0FSTVJlZ2lzdGVyczo6ZnBzY3JdKSA9PSBQUk9CRV9DUFVfRlBTQ1JfT0ZG
U0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuc3Byc1tmcHNjcl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlN
YXNtUHJvYmVUcmFtcG9saW5lIik7Ci0KLXN0YXRpY19hc3NlcnQoIShQUk9CRV9DUFVfRDBfT0ZG
U0VUICYgMHg3KSwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDBdJ3Mgb2Zmc2V0IHNob3VsZCBi
ZSA4IGJ5dGUgYWxpZ25lZCIpOwotCi1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5m
cHJzW0FSTVJlZ2lzdGVyczo6ZDBdKSA9PSBQUk9CRV9DUFVfRDBfT0ZGU0VULCAiUHJvYmU6OlN0
YXRlOjpjcHUuZnByc1tkMF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5l
Iik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6
ZDFdKSA9PSBQUk9CRV9DUFVfRDFfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkMV0n
cyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0
KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDJdKSA9PSBQUk9CRV9DUFVf
RDJfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkMl0ncyBvZmZzZXQgbWF0Y2hlcyBj
dGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNw
dS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDNdKSA9PSBQUk9CRV9DUFVfRDNfT0ZGU0VULCAiUHJvYmU6
OlN0YXRlOjpjcHUuZnByc1tkM10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9s
aW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVy
czo6ZDRdKSA9PSBQUk9CRV9DUFVfRDRfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tk
NF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNz
ZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDVdKSA9PSBQUk9CRV9D
UFVfRDVfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkNV0ncyBvZmZzZXQgbWF0Y2hl
cyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9G
KGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDZdKSA9PSBQUk9CRV9DUFVfRDZfT0ZGU0VULCAiUHJv
YmU6OlN0YXRlOjpjcHUuZnByc1tkNl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFt
cG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lz
dGVyczo6ZDddKSA9PSBQUk9CRV9DUFVfRDdfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnBy
c1tkN10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNf
YXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDhdKSA9PSBQUk9C
RV9DUFVfRDhfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkOF0ncyBvZmZzZXQgbWF0
Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNF
VE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDldKSA9PSBQUk9CRV9DUFVfRDlfT0ZGU0VULCAi
UHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkOV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVU
cmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJl
Z2lzdGVyczo6ZDEwXSkgPT0gUFJPQkVfQ1BVX0QxMF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNw
dS5mcHJzW2QxMF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1z
dGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDExXSkg
PT0gUFJPQkVfQ1BVX0QxMV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxMV0ncyBv
ZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBS
T0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDEyXSkgPT0gUFJPQkVfQ1BVX0Qx
Ml9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxMl0ncyBvZmZzZXQgbWF0Y2hlcyBj
dGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNw
dS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDEzXSkgPT0gUFJPQkVfQ1BVX0QxM19PRkZTRVQsICJQcm9i
ZTo6U3RhdGU6OmNwdS5mcHJzW2QxM10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFt
cG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lz
dGVyczo6ZDE0XSkgPT0gUFJPQkVfQ1BVX0QxNF9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5m
cHJzW2QxNF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0
aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDE1XSkgPT0g
UFJPQkVfQ1BVX0QxNV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxNV0ncyBvZmZz
ZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci0KLSNpZiBDUFUoQVJNX05FT04p
IHx8IENQVShBUk1fVkZQX1YzX0QzMikKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1
LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMTZdKSA9PSBQUk9CRV9DUFVfRDE2X09GRlNFVCwgIlByb2Jl
OjpTdGF0ZTo6Y3B1LmZwcnNbZDE2XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0
ZXJzOjpkMTddKSA9PSBQUk9CRV9DUFVfRDE3X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZw
cnNbZDE3XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRp
Y19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMThdKSA9PSBQ
Uk9CRV9DUFVfRDE4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDE4XSdzIG9mZnNl
dCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVf
T0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMTldKSA9PSBQUk9CRV9DUFVfRDE5X09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDE5XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1h
c21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZw
cnNbQVJNUmVnaXN0ZXJzOjpkMjBdKSA9PSBQUk9CRV9DUFVfRDIwX09GRlNFVCwgIlByb2JlOjpT
dGF0ZTo6Y3B1LmZwcnNbZDIwXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJz
OjpkMjFdKSA9PSBQUk9CRV9DUFVfRDIxX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNb
ZDIxXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19h
c3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjJdKSA9PSBQUk9C
RV9DUFVfRDIyX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDIyXSdzIG9mZnNldCBt
YXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZG
U0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjNdKSA9PSBQUk9CRV9DUFVfRDIzX09GRlNF
VCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDIzXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNb
QVJNUmVnaXN0ZXJzOjpkMjRdKSA9PSBQUk9CRV9DUFVfRDI0X09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmZwcnNbZDI0XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUi
KTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpk
MjVdKSA9PSBQUk9CRV9DUFVfRDI1X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI1
XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3Nl
cnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjZdKSA9PSBQUk9CRV9D
UFVfRDI2X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI2XSdzIG9mZnNldCBtYXRj
aGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VU
T0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjddKSA9PSBQUk9CRV9DUFVfRDI3X09GRlNFVCwg
IlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI3XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJN
UmVnaXN0ZXJzOjpkMjhdKSA9PSBQUk9CRV9DUFVfRDI4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6
Y3B1LmZwcnNbZDI4XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsK
LXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjld
KSA9PSBQUk9CRV9DUFVfRDI5X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI5XSdz
IG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQo
UFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMzBdKSA9PSBQUk9CRV9DUFVf
RDMwX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDMwXSdzIG9mZnNldCBtYXRjaGVz
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0Yo
Y3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMzFdKSA9PSBQUk9CRV9DUFVfRDMxX09GRlNFVCwgIlBy
b2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDMxXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmUiKTsKLSNlbmRpZiAvLyBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0Qz
MikKLQotc3RhdGljX2Fzc2VydChzaXplb2YoUHJvYmU6OlN0YXRlKSA9PSBQUk9CRV9TSVpFLCAi
UHJvYmU6OlN0YXRlJ3Mgc2l6ZSBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLSN1
bmRlZiBQUk9CRV9PRkZTRVRPRgotCi1zdHJ1Y3QgSW5jb21pbmdSZWNvcmQgewotICAgIHVpbnRw
dHJfdCBscjsKLSAgICB1aW50cHRyX3QgaXA7Ci0gICAgdWludHB0cl90IHI2OwotICAgIHVpbnRw
dHJfdCByMDsKLSAgICB1aW50cHRyX3QgcjE7Ci0gICAgdWludHB0cl90IHIyOwotfTsKLQotI2Rl
ZmluZSBJTl9MUl9PRkZTRVQgKDAgKiBQVFJfU0laRSkKLSNkZWZpbmUgSU5fSVBfT0ZGU0VUICgx
ICogUFRSX1NJWkUpCi0jZGVmaW5lIElOX1I2X09GRlNFVCAoMiAqIFBUUl9TSVpFKQotI2RlZmlu
ZSBJTl9SMF9PRkZTRVQgKDMgKiBQVFJfU0laRSkKLSNkZWZpbmUgSU5fUjFfT0ZGU0VUICg0ICog
UFRSX1NJWkUpCi0jZGVmaW5lIElOX1IyX09GRlNFVCAoNSAqIFBUUl9TSVpFKQotI2RlZmluZSBJ
Tl9TSVpFICAgICAgKDYgKiBQVFJfU0laRSkKLQotc3RhdGljX2Fzc2VydChJTl9MUl9PRkZTRVQg
PT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIGxyKSwgIklOX0xSX09GRlNFVCBpcyBpbmNvcnJl
Y3QiKTsKLXN0YXRpY19hc3NlcnQoSU5fSVBfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVj
b3JkLCBpcCksICJJTl9JUF9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7Ci1zdGF0aWNfYXNzZXJ0KElO
X1I2X09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjYpLCAiSU5fUjZfT0ZGU0VU
IGlzIGluY29ycmVjdCIpOwotc3RhdGljX2Fzc2VydChJTl9SMF9PRkZTRVQgPT0gb2Zmc2V0b2Yo
SW5jb21pbmdSZWNvcmQsIHIwKSwgIklOX1IwX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKLXN0YXRp
Y19hc3NlcnQoSU5fUjFfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByMSksICJJ
Tl9SMV9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7Ci1zdGF0aWNfYXNzZXJ0KElOX1IyX09GRlNFVCA9
PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjIpLCAiSU5fUjJfT0ZGU0VUIGlzIGluY29ycmVj
dCIpOwotc3RhdGljX2Fzc2VydChJTl9TSVpFID09IHNpemVvZihJbmNvbWluZ1JlY29yZCksICJJ
Tl9TSVpFIGlzIGluY29ycmVjdCIpOwotCi1hc20gKAotICAgICIudGV4dCIgIlxuIgotICAgICIu
Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpICJcbiIKLSAgICBI
SURFX1NZTUJPTChjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiXG4iCi0gICAgSU5MSU5FX0FSTV9G
VU5DVElPTihjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiXG4iCi0gICAgU1lNQk9MX1NUUklORyhj
dGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiOiIgIlxuIgotCi0gICAgLy8gTWFjcm9Bc3NlbWJsZXJB
Uk12Nzo6cHJvYmUoKSBoYXMgYWxyZWFkeSBnZW5lcmF0ZWQgY29kZSB0byBzdG9yZSBzb21lIHZh
bHVlcy4KLSAgICAvLyBUaGUgdG9wIG9mIHN0YWNrIG5vdyBjb250YWlucyB0aGUgSW5jb21pbmdS
ZWNvcmQuCi0gICAgLy8KLSAgICAvLyBJbmNvbWluZyByZWdpc3RlciB2YWx1ZXM6Ci0gICAgLy8g
ICAgIHIwOiBwcm9iZSBmdW5jdGlvbgotICAgIC8vICAgICByMTogcHJvYmUgYXJnCi0gICAgLy8g
ICAgIHIyOiBQcm9iZTo6ZXhlY3V0ZVByb2JlCi0gICAgLy8gICAgIHI2OiBzY3JhdGNoCi0gICAg
Ly8gICAgIGlwOiBzY3JhdGNoLCB3YXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZQotICAgIC8vICAg
ICBscjogcmV0dXJuIGFkZHJlc3MKLQotICAgICJtb3YgICAgICAgaXAsIHNwIiAiXG4iCi0gICAg
Im1vdiAgICAgICByNiwgc3AiICJcbiIKLSAgICAic3ViICAgICAgIHI2LCByNiwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkgIlxuIgotCi0gICAgLy8gVGhlIEFS
TSBFQUJJIHNwZWNpZmllcyB0aGF0IHRoZSBzdGFjayBuZWVkcyB0byBiZSAxNiBieXRlIGFsaWdu
ZWQuCi0gICAgImJpYyAgICAgICByNiwgcjYsICMweGYiICJcbiIKLSAgICAibW92ICAgICAgIHNw
LCByNiIgIlxuIiAvLyBTZXQgdGhlIHNwIHRvIHByb3RlY3QgdGhlIFByb2JlOjpTdGF0ZSBmcm9t
IGludGVycnVwdHMgYmVmb3JlIHdlIGluaXRpYWxpemUgaXQuCi0KLSAgICAic3RyICAgICAgIHIw
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQp
ICJdIiAiXG4iCi0gICAgInN0ciAgICAgICByMSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQVJHX09GRlNFVCkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIGxyLCBbc3AsICMiIFNU
UklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgImFk
ZCAgICAgICByMCwgaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9TSVpFKSAiXG4iCi0gICAg
InN0ciAgICAgICByMCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09G
RlNFVCkgIl0iICJcbiIKLQotICAgICJhZGQgICAgICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX1IzX09GRlNFVCkgIlxuIgotICAgICJzdG1pYSAgICAgbHIsIHsgcjMt
cjUgfSIgIlxuIgotICAgICJhZGQgICAgICAgbHIsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX1I3X09GRlNFVCkgIlxuIgotICAgICJzdG1pYSAgICAgbHIsIHsgcjctcjExIH0i
ICJcbiIKLSAgICAibXJzICAgICAgIGxyLCBBUFNSIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwg
W3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0FQU1JfT0ZGU0VUKSAiXSIgIlxu
IgotICAgICJ2bXJzICAgICAgbHIsIEZQU0NSIiAiXG4iCi0gICAgInN0ciAgICAgICBsciwgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0ZQU0NSX09GRlNFVCkgIl0iICJcbiIK
LQotICAgICJsZHIgICAgICAgcjQsIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX0xSX09G
RlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIHI1LCBbaXAsICMiIFNUUklOR0laRV9WQUxV
RV9PRihJTl9JUF9PRkZTRVQpICJdIiAiXG4iCi0gICAgImxkciAgICAgICByNiwgW2lwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoSU5fUjZfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJsZHIgICAgICAg
cjcsIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1IwX09GRlNFVCkgIl0iICJcbiIKLSAg
ICAibGRyICAgICAgIHI4LCBbaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9SMV9PRkZTRVQp
ICJdIiAiXG4iCi0gICAgImxkciAgICAgICByOSwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
SU5fUjJfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgcjQsIFtzcCwgIyIgU1RSSU5H
SVpFX1ZBTFVFX09GKFBST0JFX0NQVV9MUl9PRkZTRVQpICJdIiAiXG4iCi0gICAgInN0ciAgICAg
ICByNSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0lQX09GRlNFVCkgIl0i
ICJcbiIKLSAgICAic3RyICAgICAgIHI2LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfUjZfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgcjcsIFtzcCwgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMF9PRkZTRVQpICJdIiAiXG4iCi0gICAgInN0ciAg
ICAgICByOCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1IxX09GRlNFVCkg
Il0iICJcbiIKLSAgICAic3RyICAgICAgIHI5LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQ
Uk9CRV9DUFVfUjJfT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgImFkZCAgICAgICBpcCwgc3AsICMi
IFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRDBfT0ZGU0VUKSAiXG4iCi0gICAgInZzdG1p
YS42NCBpcCEsIHsgZDAtZDE1IH0iICJcbiIKLSNpZiBDUFUoQVJNX05FT04pIHx8IENQVShBUk1f
VkZQX1YzX0QzMikKLSAgICAidnN0bWlhLjY0IGlwISwgeyBkMTYtZDMxIH0iICJcbiIKLSNlbmRp
ZgotCi0gICAgLy8gcjUgaXMgYSBjYWxsZWUgc2F2ZWQgcmVnaXN0ZXIuIFdlJ2xsIHVzZSBpdCBm
b3IgcHJlc2VydmluZyB0aGUgUHJvYmU6OlN0YXRlKi4KLSAgICAvLyBodHRwczovL3N0YWNrb3Zl
cmZsb3cuY29tL3F1ZXN0aW9ucy8yNjE0MTkvYXJtLXRvLWMtY2FsbGluZy1jb252ZW50aW9uLXJl
Z2lzdGVycy10by1zYXZlIzI2MTQ5NgotICAgICJtb3YgICAgICAgcjUsIHNwIiAiXG4iCi0KLSAg
ICAibW92ICAgICAgIHIwLCBzcCIgIlxuIiAvLyB0aGUgUHJvYmU6OlN0YXRlKiBhcmcuCi0gICAg
ImJseCAgICAgICByMiIgIlxuIiAvLyBDYWxsIFByb2JlOjpleGVjdXRlUHJvYmUuCi0KLSAgICAv
LyBNYWtlIHN1cmUgdGhlIFByb2JlOjpTdGF0ZSBpcyBlbnRpcmVseSBiZWxvdyB0aGUgcmVzdWx0
IHN0YWNrIHBvaW50ZXIgc28KLSAgICAvLyB0aGF0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RpbGwg
cHJlc2VydmVkIHdoZW4gd2UgY2FsbCB0aGUgaW5pdGlhbGl6ZVN0YWNrCi0gICAgLy8gZnVuY3Rp
b24uCi0gICAgImxkciAgICAgICByMSwgW3I1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX1NQX09GRlNFVCkgIl0iICJcbiIgLy8gUmVzdWx0IHNwLgotICAgICJhZGQgICAgICAgcjIs
IHI1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSArIE9VVF9TSVpFKSAiXG4iIC8v
IEVuZCBvZiBQcm92ZUNvbnRleHQgKyBidWZmZXIuCi0gICAgImNtcCAgICAgICByMSwgcjIiICJc
biIKLSAgICAiYmdlICAgICAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9s
aW5lUHJvYmVTdGF0ZUlzU2FmZSkgIlxuIgotCi0gICAgLy8gQWxsb2NhdGUgYSBzYWZlIHBsYWNl
IG9uIHRoZSBzdGFjayBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBvaW50ZXIgdG8gc3Rhc2ggdGhl
IFByb2JlOjpTdGF0ZS4KLSAgICAic3ViICAgICAgIHIxLCByMSwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkgIlxuIgotICAgICJiaWMgICAgICAgcjEsIHIxLCAj
MHhmIiAiXG4iIC8vIFRoZSBBUk0gRUFCSSBzcGVjaWZpZXMgdGhhdCB0aGUgc3RhY2sgbmVlZHMg
dG8gYmUgMTYgYnl0ZSBhbGlnbmVkLgotICAgICJtb3YgICAgICAgc3AsIHIxIiAiXG4iIC8vIFNl
dCB0aGUgbmV3IHNwIHRvIHByb3RlY3QgdGhhdCBtZW1vcnkgZnJvbSBpbnRlcnJ1cHRzIGJlZm9y
ZSB3ZSBjb3B5IHRoZSBQcm9iZTo6U3RhdGUuCi0KLSAgICAvLyBDb3B5IHRoZSBQcm9iZTo6U3Rh
dGUgdG8gdGhlIHNhZmUgcGxhY2UuCi0gICAgLy8gTm90ZTogd2UgaGF2ZSB0byBjb3B5IGZyb20g
bG93IGFkZHJlc3MgdG8gaGlnaGVyIGFkZHJlc3MgYmVjYXVzZSB3ZSdyZSBtb3ZpbmcgdGhlCi0g
ICAgLy8gUHJvYmU6OlN0YXRlIHRvIGEgbG93ZXIgYWRkcmVzcy4KLSAgICAiYWRkICAgICAgIHI3
LCByNSwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUpICJcbiIKLQotICAgIExPQ0FM
X0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lQ29weUxvb3ApICI6IiAiXG4iCi0g
ICAgImxkciAgICAgICByMywgW3I1XSwgIzQiICJcbiIKLSAgICAibGRyICAgICAgIHI0LCBbcjVd
LCAjNCIgIlxuIgotICAgICJzdHIgICAgICAgcjMsIFtyMV0sICM0IiAiXG4iCi0gICAgInN0ciAg
ICAgICByNCwgW3IxXSwgIzQiICJcbiIKLSAgICAiY21wICAgICAgIHI1LCByNyIgIlxuIgotICAg
ICJibHQgICAgICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmVDb3B5
TG9vcCkgIlxuIgotCi0gICAgIm1vdiAgICAgICByNSwgc3AiICJcbiIKLQotICAgIC8vIENhbGwg
aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gaWYgcHJlc2VudC4KLSAgICBMT0NBTF9MQUJFTF9TVFJJ
TkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVByb2JlU3RhdGVJc1NhZmUpICI6IiAiXG4iCi0gICAg
ImxkciAgICAgICByMiwgW3I1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfSU5JVF9TVEFD
S19GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCi0gICAgImNtcCAgICAgICByMiwgIzAiICJcbiIK
LSAgICAiYmVxICAgICAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5l
UmVzdG9yZVJlZ2lzdGVycykgIlxuIgotCi0gICAgIm1vdiAgICAgICByMCwgcjUiICJcbiIgLy8g
U2V0IHRoZSBQcm9iZTo6U3RhdGUqIGFyZy4KLSAgICAiYmx4ICAgICAgIHIyIiAiXG4iIC8vIENh
bGwgdGhlIGluaXRpYWxpemVTdGFja0Z1bmN0aW9uIChsb2FkZWQgaW50byByMiBhYm92ZSkuCi0K
LSAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVJlc3RvcmVSZWdp
c3RlcnMpICI6IiAiXG4iCi0KLSAgICAibW92ICAgICAgIHNwLCByNSIgIlxuIiAvLyBFbnN1cmUg
dGhhdCBzcCBwb2ludHMgdG8gdGhlIFByb2JlOjpTdGF0ZSouCi0KLSAgICAvLyBUbyBlbmFibGUg
cHJvYmVzIHRvIG1vZGlmeSByZWdpc3RlciBzdGF0ZSwgd2UgY29weSBhbGwgcmVnaXN0ZXJzCi0g
ICAgLy8gb3V0IG9mIHRoZSBQcm9iZTo6U3RhdGUgYmVmb3JlIHJldHVybmluZy4KLQotI2lmIENQ
VShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotICAgICJhZGQgICAgICAgaXAsIHNw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0QzMV9PRkZTRVQgKyBGUFJFR19TSVpF
KSAiXG4iCi0gICAgInZsZG1kYi42NCBpcCEsIHsgZDE2LWQzMSB9IiAiXG4iCi0gICAgInZsZG1k
Yi42NCBpcCEsIHsgZDAtZDE1IH0iICJcbiIKLSNlbHNlCi0gICAgImFkZCAgICAgICBpcCwgc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRDE1X09GRlNFVCArIEZQUkVHX1NJWkUp
ICJcbiIKLSAgICAidmxkbWRiLjY0IGlwISwgeyBkMC1kMTUgfSIgIlxuIgotI2VuZGlmCi0KLSAg
ICAiYWRkICAgICAgIGlwLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMTFf
T0ZGU0VUICsgR1BSRUdfU0laRSkgIlxuIgotICAgICJsZG1kYiAgICAgaXAsIHsgcjAtcjExIH0i
ICJcbiIKLSAgICAibGRyICAgICAgIGlwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfRlBTQ1JfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJ2bXNyICAgICAgRlBTQ1IsIGlwIiAi
XG4iCi0KLSAgICAvLyBUaGVyZSBhcmUgNSBtb3JlIHJlZ2lzdGVycyBsZWZ0IHRvIHJlc3RvcmU6
IGlwLCBzcCwgbHIsIHBjLCBhbmQgYXBzci4KLQotICAgIC8vIFNldCB1cCB0aGUgcmVzdG9yZSBh
cmVhIGZvciBzcCBhbmQgcGMuCi0gICAgImxkciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIKLQotICAgIC8vIFB1c2ggdGhl
IHBjIG9uIHRvIHRoZSByZXN0b3JlIGFyZWEuCi0gICAgImxkciAgICAgICBpcCwgW3NwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIl0iICJcbiIKLSAgICAic3Vi
ICAgICAgIGxyLCBsciwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9TSVpFKSAiXG4iCi0gICAg
InN0ciAgICAgICBpcCwgW2xyXSIgIlxuIgotICAgIC8vIFBvaW50IHNwIHRvIHRoZSByZXN0b3Jl
IGFyZWEuCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJP
QkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIKLQotICAgIC8vIEFsbCBkb25lIHdpdGggbWF0aCBp
LmUuIHdvbid0IHRyYXNoIHRoZSBzdGF0dXMgcmVnaXN0ZXIgKGFwc3IpIGFuZCBkb24ndCBuZWVk
Ci0gICAgLy8gc2NyYXRjaCByZWdpc3RlcnMgKGxyIGFuZCBpcCkgYW55bW9yZS4gUmVzdG9yZSBh
cHNyLCBsciwgYW5kIGlwLgotICAgICJsZHIgICAgICAgaXAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9BUFNSX09GRlNFVCkgIl0iICJcbiIKLSAgICAibXNyICAgICAgIEFQ
U1IsIGlwIiAiXG4iCi0gICAgImxkciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX0xSX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIGlwLCBbc3As
ICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfSVBfT0ZGU0VUKSAiXSIgIlxuIgotCi0g
ICAgLy8gUmVzdG9yZSB0aGUgc3AgYW5kIHBjLgotICAgICJsZHIgICAgICAgc3AsIFtzcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJdIiAiXG4iCi0gICAgInBv
cCAgICAgICB7IHBjIH0iICJcbiIKLSk7Ci0jZW5kaWYgLy8gQ09NUElMRVIoR0NDX0NPTVBBVElC
TEUpCi0KLXZvaWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKFByb2JlOjpGdW5jdGlvbiBmdW5jdGlv
biwgdm9pZCogYXJnKQotewotICAgIHN1YjMyKFRydXN0ZWRJbW0zMihzaXplb2YoSW5jb21pbmdS
ZWNvcmQpKSwgc3ApOwotCi0gICAgc3RvcmUzMihsciwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5j
b21pbmdSZWNvcmQsIGxyKSkpOwotICAgIHN0b3JlMzIoaXAsIEFkZHJlc3Moc3AsIG9mZnNldG9m
KEluY29taW5nUmVjb3JkLCBpcCkpKTsKLSAgICBzdG9yZTMyKHI2LCBBZGRyZXNzKHNwLCBvZmZz
ZXRvZihJbmNvbWluZ1JlY29yZCwgcjYpKSk7IC8vIFMwID09IHI2LgotICAgIHN0b3JlMzIocjAs
IEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByMCkpKTsKLSAgICBzdG9yZTMy
KHIxLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjEpKSk7Ci0gICAgc3Rv
cmUzMihyMiwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHIyKSkpOwotICAg
IC8vIFRoZSBmb2xsb3dpbmcgdXNlcyBSZWdpc3RlcklEOjpTMC4gU28sIHRoZXkgbXVzdCBjb21l
IGFmdGVyIHdlIHByZXNlcnZlIFMwIGFib3ZlLgotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpLCByMCk7Ci0gICAgbW92ZShUcnVzdGVkSW1t
UHRyKGFyZyksIHIxKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oUHJvYmU6OmV4ZWN1dGVQcm9iZSkpLCByMik7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRy
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpKSwgaXApOwot
ICAgIG1fYXNzZW1ibGVyLmJseChpcCk7Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUp
Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikgJiYg
Q1BVKEFSTV9UUkFESVRJT05BTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZmE0ZGY1MTczNGE2ZDgxODljODMwZTc1MDM2Y2IwYjczYWM1ZjlmZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjc2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKLSAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkK
LQotI2luY2x1ZGUgIkFSTUFzc2VtYmxlci5oIgotI2luY2x1ZGUgIkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXVzaW5nIEFzc2VtYmxlciA9IFRBUkdFVF9B
U1NFTUJMRVI7Ci0KLWNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBEb3VibGVDb25k
aXRpb25NYXNrID0gMHgwZjsKLSAgICBzdGF0aWMgY29uc3QgaW50IERvdWJsZUNvbmRpdGlvbkJp
dFNwZWNpYWwgPSAweDEwOwotICAgIENPTVBJTEVfQVNTRVJUKCEoRG91YmxlQ29uZGl0aW9uQml0
U3BlY2lhbCAmIERvdWJsZUNvbmRpdGlvbk1hc2spLCBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFs
X3Nob3VsZF9ub3RfaW50ZXJmZXJlX3dpdGhfQVJNQXNzZW1ibGVyX0NvbmRpdGlvbl9jb2Rlcyk7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bUdQUnMgPSAxNjsKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbnVtRlBScyA9IDE2OwotICAgIAotICAgIHR5cGVkZWYgQVJN
UmVnaXN0ZXJzOjpGUFJlZ2lzdGVySUQgRlBSZWdpc3RlcklEOwotCi0gICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6aXA7Ci0gICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6
cjY7Ci0KLSAgICBzdGF0aWMgY29uc3QgQVJNUmVnaXN0ZXJzOjpGUFJlZ2lzdGVySUQgZnBUZW1w
UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmQ3OwotCi0gICAgZW51bSBSZWxhdGlvbmFsQ29uZGl0
aW9uIHsKLSAgICAgICAgRXF1YWwgPSBBUk1Bc3NlbWJsZXI6OkVRLAotICAgICAgICBOb3RFcXVh
bCA9IEFSTUFzc2VtYmxlcjo6TkUsCi0gICAgICAgIEFib3ZlID0gQVJNQXNzZW1ibGVyOjpISSwK
LSAgICAgICAgQWJvdmVPckVxdWFsID0gQVJNQXNzZW1ibGVyOjpDUywKLSAgICAgICAgQmVsb3cg
PSBBUk1Bc3NlbWJsZXI6OkNDLAotICAgICAgICBCZWxvd09yRXF1YWwgPSBBUk1Bc3NlbWJsZXI6
OkxTLAotICAgICAgICBHcmVhdGVyVGhhbiA9IEFSTUFzc2VtYmxlcjo6R1QsCi0gICAgICAgIEdy
ZWF0ZXJUaGFuT3JFcXVhbCA9IEFSTUFzc2VtYmxlcjo6R0UsCi0gICAgICAgIExlc3NUaGFuID0g
QVJNQXNzZW1ibGVyOjpMVCwKLSAgICAgICAgTGVzc1RoYW5PckVxdWFsID0gQVJNQXNzZW1ibGVy
OjpMRQotICAgIH07Ci0KLSAgICBlbnVtIFJlc3VsdENvbmRpdGlvbiB7Ci0gICAgICAgIE92ZXJm
bG93ID0gQVJNQXNzZW1ibGVyOjpWUywKLSAgICAgICAgU2lnbmVkID0gQVJNQXNzZW1ibGVyOjpN
SSwKLSAgICAgICAgUG9zaXRpdmVPclplcm8gPSBBUk1Bc3NlbWJsZXI6OlBMLAotICAgICAgICBa
ZXJvID0gQVJNQXNzZW1ibGVyOjpFUSwKLSAgICAgICAgTm9uWmVybyA9IEFSTUFzc2VtYmxlcjo6
TkUKLSAgICB9OwotCi0gICAgZW51bSBEb3VibGVDb25kaXRpb24gewotICAgICAgICAvLyBUaGVz
ZSBjb25kaXRpb25zIHdpbGwgb25seSBldmFsdWF0ZSB0byB0cnVlIGlmIHRoZSBjb21wYXJpc29u
IGlzIG9yZGVyZWQgLSBpLmUuIG5laXRoZXIgb3BlcmFuZCBpcyBOYU4uCi0gICAgICAgIERvdWJs
ZUVxdWFsID0gQVJNQXNzZW1ibGVyOjpFUSwKLSAgICAgICAgRG91YmxlTm90RXF1YWwgPSBBUk1B
c3NlbWJsZXI6Ok5FIHwgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCwKLSAgICAgICAgRG91Ymxl
R3JlYXRlclRoYW4gPSBBUk1Bc3NlbWJsZXI6OkdULAotICAgICAgICBEb3VibGVHcmVhdGVyVGhh
bk9yRXF1YWwgPSBBUk1Bc3NlbWJsZXI6OkdFLAotICAgICAgICBEb3VibGVMZXNzVGhhbiA9IEFS
TUFzc2VtYmxlcjo6Q0MsCi0gICAgICAgIERvdWJsZUxlc3NUaGFuT3JFcXVhbCA9IEFSTUFzc2Vt
Ymxlcjo6TFMsCi0gICAgICAgIC8vIElmIGVpdGhlciBvcGVyYW5kIGlzIE5hTiwgdGhlc2UgY29u
ZGl0aW9ucyBhbHdheXMgZXZhbHVhdGUgdG8gdHJ1ZS4KLSAgICAgICAgRG91YmxlRXF1YWxPclVu
b3JkZXJlZCA9IEFSTUFzc2VtYmxlcjo6RVEgfCBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFsLAot
ICAgICAgICBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkID0gQVJNQXNzZW1ibGVyOjpORSwKLSAg
ICAgICAgRG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZCA9IEFSTUFzc2VtYmxlcjo6SEksCi0g
ICAgICAgIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkID0gQVJNQXNzZW1ibGVy
OjpDUywKLSAgICAgICAgRG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCA9IEFSTUFzc2VtYmxlcjo6
TFQsCi0gICAgICAgIERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkID0gQVJNQXNzZW1i
bGVyOjpMRSwKLSAgICB9OwotCi0gICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgc3RhY2tQb2lu
dGVyUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnNwOwotICAgIHN0YXRpYyBjb25zdCBSZWdpc3Rl
cklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpmcDsKLSAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBsaW5rUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmxyOwotCi0gICAg
c3RhdGljIGNvbnN0IFNjYWxlIFNjYWxlUHRyID0gVGltZXNGb3VyOwotCi0gICAgdm9pZCBhZGQz
MihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkcyhkZXN0LCBkZXN0LCBzcmMpOwotICAgIH0KLQotICAgIHZvaWQgYWRkMzIoUmVn
aXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5hZGRzKGRlc3QsIG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAg
IGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgYWRkMzIoaW1tLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZHMoZGVzdCwgZGVzdCwgbV9h
c3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7Ci0gICAg
fQotCi0gICAgdm9pZCBhZGQzMihBYnNvbHV0ZUFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
Ci0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgZGF0YVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVp
bnQzMiwgZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgMCk7Ci0gICAgICAgIGFk
ZDMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgYWRkMzIoQWRk
cmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihzcmMsIGRh
dGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBhZGQzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsK
LSAgICB9Ci0KLSAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGRzKGRlc3Qs
IHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVy
KSk7Ci0gICAgfQotCi0gICAgdm9pZCBnZXRFZmZlY3RpdmVBZGRyZXNzKEJhc2VJbmRleCBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGQoZGVz
dCwgYWRkcmVzcy5iYXNlLCBtX2Fzc2VtYmxlci5sc2woYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nh
c3Q8aW50PihhZGRyZXNzLnNjYWxlKSkpOwotICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQpCi0g
ICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBkZXN0KTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmRzKGRlc3QsIGRlc3QsIHNyYyk7Ci0gICAg
fQotCi0gICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJpdEFuZHMoZGVzdCwgb3Ax
LCBvcDIpOwotICAgIH0KLQotICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgQVJNV29yZCB3ID0gbV9hc3NlbWJsZXIuZ2V0SW1t
KGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0cnVlKTsKLSAgICAgICAgaWYgKHcg
JiBBUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYmljcyhkZXN0LCBkZXN0LCB3ICYgfkFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1l
ZGlhdGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmRzKGRl
c3QsIGRlc3QsIHcpOwotICAgIH0KLQotICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFSTVdvcmQg
dyA9IG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3Rlciwg
dHJ1ZSk7Ci0gICAgICAgIGlmICh3ICYgQVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0
ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJpY3MoZGVzdCwgc3JjLCB3ICYgfkFSTUFzc2Vt
Ymxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5iaXRBbmRzKGRlc3QsIHNyYywgdyk7Ci0gICAgfQotCi0gICAgdm9pZCBhbmQz
MihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKHNy
YywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGFuZDMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRl
c3QpOwotICAgIH0KLQotICAgIHZvaWQgYW5kMTYoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIGxvYWQxNihzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICBhbmQzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxzaGlm
dDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIGxzaGlmdDMyKGRlc3QsIHNoaWZ0QW1vdW50LCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lk
IGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9w
MkJ5dGUoMHgxZik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJpdEFuZChhZGRyZXNzVGVtcFJlZ2lz
dGVyLCBzaGlmdEFtb3VudCwgdyk7Ci0KLSAgICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0LCBt
X2Fzc2VtYmxlci5sc2xSZWdpc3RlcihzcmMsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNsKGRl
c3QsIGltbS5tX3ZhbHVlICYgMHgxZikpOwotICAgIH0KLQotICAgIHZvaWQgbHNoaWZ0MzIoUmVn
aXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNsKHNyYywgaW1tLm1f
dmFsdWUgJiAweDFmKSk7Ci0gICAgfQotCi0gICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIG9wMSwg
UmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmIChvcDIg
PT0gZGVzdCkgewotICAgICAgICAgICAgaWYgKG9wMSA9PSBkZXN0KSB7Ci0gICAgICAgICAgICAg
ICAgbW92ZShvcDIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIG9wMiA9
IGFkZHJlc3NUZW1wUmVnaXN0ZXI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIC8vIFN3YXAgdGhlIG9wZXJhbmRzLgotICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQgdG1w
ID0gb3AxOwotICAgICAgICAgICAgICAgIG9wMSA9IG9wMjsKLSAgICAgICAgICAgICAgICBvcDIg
PSB0bXA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbV9hc3NlbWJsZXIubXVs
cyhkZXN0LCBvcDEsIG9wMik7Ci0gICAgfQotCi0gICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbXVsMzIoc3JjLCBkZXN0LCBkZXN0
KTsKLSAgICB9Ci0KLSAgICB2b2lkIG11bDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm11bHMoZGVzdCwgc3JjLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIG5lZzMyKFJlZ2lzdGVySUQgc3JjRGVz
dCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnJzYnMoc3JjRGVzdCwgc3JjRGVzdCwgQVJN
QXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICB9Ci0KLSAgICB2b2lkIG5lZzMyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5y
c2JzKGRlc3QsIHNyYywgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm9ycnMoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lk
IG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQotICAgIHsKLSAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgbG9hZDMyKEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGRhdGFUZW1wUmVn
aXN0ZXIpOwotICAgICAgICBvcjMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHN0
b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0g
ICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQotICAg
IHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgbG9hZDMyKEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciksIGRh
dGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBvcjMyKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7IC8v
IEl0IHVzZXMgUzAgYXMgdGVtcG9yYXJ5IHJlZ2lzdGVyLCB3ZSBuZWVkIHRvIHJlbG9hZCB0aGUg
YWRkcmVzcy4KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwg
QWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOwotICAgICAgICBvcjMyKGltbSwgYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRk
cmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlMzIoYWRkcmVzc1RlbXBSZWdpc3Rlciwg
YWRkcmVzcyk7Ci0gICAgfQotCi0gICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChkZXN0ICE9IGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5vcnJzKGRlc3QsIGRlc3QsIG1fYXNzZW1ibGVy
LmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAg
IHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHNyYyAhPSBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIub3JycyhkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShp
bW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgb3Iz
MihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLm9ycnMoZGVzdCwgb3AxLCBvcDIpOwotICAgIH0KLQotICAg
IHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQot
ICAgIHsKLSAgICAgICAgcnNoaWZ0MzIoZGVzdCwgc2hpZnRBbW91bnQsIGRlc3QpOwotICAgIH0K
LQotICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91
bnQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2Vt
Ymxlcjo6Z2V0T3AyQnl0ZSgweDFmKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYml0QW5kKGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIHNoaWZ0QW1vdW50LCB3KTsKLQotICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmFzclJlZ2lzdGVyKHNyYywgYWRkcmVzc1RlbXBSZWdpc3Rl
cikpOwotICAgIH0KLQotICAgIHZvaWQgcnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgcnNoaWZ0MzIoZGVzdCwgaW1tLCBkZXN0KTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKQotICAg
ICAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmFzcihzcmMsIGltbS5tX3ZhbHVlICYgMHgx
ZikpOwotICAgIH0KLQotICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIHVyc2hpZnQzMihkZXN0LCBzaGlmdEFt
b3VudCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgweDFmKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYml0QW5kKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHNoaWZ0QW1vdW50LCB3KTsKLQot
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmxzclJlZ2lzdGVyKHNy
YywgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgdXJzaGlmdDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNyKGRlc3QsIGltbS5tX3ZhbHVlICYgMHgxZikp
OwotICAgIH0KLSAgICAKLSAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKCFpbW0ubV92
YWx1ZSkKLSAgICAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxlci5sc3Ioc3JjLCBpbW0ubV92
YWx1ZSAmIDB4MWYpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdWJzKGRlc3QsIGRl
c3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIGxlZnQsIFJlZ2lz
dGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LnN1YnMoZGVzdCwgbGVmdCwgcmlnaHQpOwotICAgIH0KLQotICAgIHZvaWQgc3ViMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
c3VicyhkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0s
IEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKLSAgICAgICAgc3ViMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHN1YjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2Fk
MzIoc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3ViMzIoZGF0YVRlbXBSZWdpc3Rl
ciwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
c3VicyhkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1Rl
bXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmVvcnMoZGVzdCwgZGVz
dCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3Rl
cklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZW9y
cyhkZXN0LCBvcDEsIG9wMik7Ci0gICAgfQotCi0gICAgdm9pZCB4b3IzMihBZGRyZXNzIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKHNyYywgZGF0YVRlbXBSZWdp
c3Rlcik7Ci0gICAgICAgIHhvcjMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQot
ICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bXZucyhkZXN0LCBkZXN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
ZW9ycyhkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBpZiAoaW1t
Lm1fdmFsdWUgPT0gLTEpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tdm5zKGRlc3QsIHNyYyk7
Ci0gICAgICAgIGVsc2UgICAgCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5lb3JzKGRlc3QsIHNy
YywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7
Ci0gICAgfQotCi0gICAgdm9pZCBjb3VudExlYWRpbmdaZXJvczMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg1KQotICAg
ICAgICBtX2Fzc2VtYmxlci5jbHooZGVzdCwgc3JjKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9Q
QVJBTShzcmMpOwotICAgICAgICBVTlVTRURfUEFSQU0oZGVzdCk7Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQ4KElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOChC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2Nh
bGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOChjb25zdCB2b2lk
KiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYWRkcmVzcyksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5kYXRhVHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgMCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOFNpZ25lZEV4dGVuZFRvMzIo
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2Vt
Ymxlci5kYXRhVHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJbnQ4LCBkZXN0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQ4U2lnbmVkRXh0
ZW5kVG8zMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJbnQ4
LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRk
cmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQxNihJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyMTYoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQx
NihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MTYsIGRl
c3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNz
LnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZDE2U2lnbmVk
RXh0ZW5kVG8zMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJ
bnQxNiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+
KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2Fk
MzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwg
ZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBs
b2FkMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMy
LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRk
cmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSNpZiBDUFUoQVJNVjVfT1Jf
TE9XRVIpCi0gICAgdm9pZCBsb2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKEJhc2VJbmRleCBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpOwotI2Vsc2UKLSAgICB2b2lkIGxvYWQzMldpdGhVbmFs
aWduZWRIYWxmV29yZHMoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkZXN0KTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHZv
aWQgbG9hZDE2VW5hbGlnbmVkKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBsb2FkMTYoYWRkcmVzcywgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBh
Ym9ydFdpdGhSZWFzb24oQWJvcnRSZWFzb24gcmVhc29uKQotICAgIHsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tMzIocmVhc29uKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGJyZWFr
cG9pbnQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihBYm9ydFJlYXNvbiBy
ZWFzb24sIGludHB0cl90IG1pc2MpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMiht
aXNjKSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGFib3J0V2l0aFJlYXNvbihyZWFzb24p
OwotICAgIH0KLQotICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihB
ZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIENvbnZlcnRp
YmxlTG9hZExhYmVsIHJlc3VsdCh0aGlzKTsKLSAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zmc2V0
ID49IDAgJiYgYWRkcmVzcy5vZmZzZXQgPD0gMjU1KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRy
VXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mu
b2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBEYXRhTGFiZWwz
MiBsb2FkMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgRGF0YUxhYmVsMzIgZGF0YUxhYmVsKHRoaXMpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoYWRkcmVzc1RlbXBSZWdpc3Rlciwg
MCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVyOjpMb2Fk
VWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICByZXR1cm4gZGF0YUxhYmVsOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzQ29tcGFjdFB0
ckFsaWduZWRBZGRyZXNzT2Zmc2V0KHB0cmRpZmZfdCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB2YWx1ZSA+PSAtNDA5NSAmJiB2YWx1ZSA8PSA0MDk1OwotICAgIH0KLQotICAgIERhdGFM
YWJlbENvbXBhY3QgbG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBh
ZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBEYXRhTGFiZWxDb21wYWN0
IGRhdGFMYWJlbCh0aGlzKTsKLSAgICAgICAgQVNTRVJUKGlzQ29tcGFjdFB0ckFsaWduZWRBZGRy
ZXNzT2Zmc2V0KGFkZHJlc3Mub2Zmc2V0KSk7Ci0gICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCA+
PSAwKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWlu
dDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyRG93bihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIs
IGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgICAgICByZXR1cm4gZGF0
YUxhYmVsOwotICAgIH0KLQotICAgIERhdGFMYWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09mZnNl
dFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBE
YXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1
ZUltbWVkaWF0ZShhZGRyZXNzVGVtcFJlZ2lzdGVyLCAwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
ZHRyVXBSZWdpc3RlcihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBzcmMsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBkYXRhTGFiZWw7Ci0gICAg
fQotCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQot
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJs
ZXI6OlN0b3JlVWludDgsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNf
Y2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAg
dm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQ4LCBz
cmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgc3Rv
cmU4KFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQotICAgIHsKLSAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQ4LCBzcmMsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIDApOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0z
MiBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgVHJ1c3RlZElt
bTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSkpOwotICAgICAgICBtb3Zl
KGltbTgsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3Rl
ciwgYWRkcmVzcyk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwg
Y29uc3Qgdm9pZCogYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBpbW04KHN0
YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1t
MzIocmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSksIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOwotICAgICAgICBtb3ZlKGltbTgsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fz
c2VtYmxlci5kdHJVcChBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDgsIGRhdGFUZW1wUmVnaXN0ZXIs
IGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmUxNihSZWdp
c3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5iYXNlSW5kZXhUcmFuc2ZlcjE2KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MTYsIHNyYywgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUp
LCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQg
c3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmRhdGFUcmFuc2ZlcjE2KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MTYsIHNyYywgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVy
SUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmRhdGFUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIHNyYywgYWRkcmVz
cy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFJlZ2lz
dGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmJhc2VJbmRleFRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSks
IGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMy
IGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBtb3ZlKGltbSwg
ZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRk
cmVzcyk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIp
OwotICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6
U3RvcmVVaW50MzIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAg
IH0KLQotICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVz
cykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShhZGRyZXNz
VGVtcFJlZ2lzdGVyLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyLCAwKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZElt
bTMyIGltbSwgY29uc3Qgdm9pZCogYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmxkclVuaXF1ZUltbWVkaWF0ZShhZGRyZXNzVGVtcFJlZ2lzdGVyLCByZWludGVycHJldF9jYXN0
PEFSTVdvcmQ+KGFkZHJlc3MpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92ZUltbShpbW0ubV92
YWx1ZSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFz
c2VtYmxlcjo6U3RvcmVVaW50MzIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIsIDApOwotICAgIH0KLQotICAgIHZvaWQgcG9wKFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLnBvcChkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHBvcFBhaXIo
UmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLnBvcChkZXN0MSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnBvcChkZXN0Mik7Ci0gICAg
fQotCi0gICAgdm9pZCBwdXNoKFJlZ2lzdGVySUQgc3JjKQotICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIucHVzaChzcmMpOwotICAgIH0KLQotICAgIHZvaWQgcHVzaChBZGRyZXNzIGFkZHJlc3Mp
Ci0gICAgewotICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgIHB1c2goZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBwdXNoKFRydXN0
ZWRJbW0zMiBpbW0pCi0gICAgewotICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIHB1c2goYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgdm9p
ZCBwdXNoUGFpcihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMikKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLnB1c2goc3JjMik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnB1c2goc3Jj
MSk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmVJbW0oaW1tLm1fdmFsdWUsIGRl
c3QpOwotICAgIH0KLQotICAgIHZvaWQgbW92ZShSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQotICAgIHsKLSAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubW92KGRlc3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW1Q
dHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihpbW0pLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAoUmVnaXN0ZXJJRCByZWcxLCBS
ZWdpc3RlcklEIHJlZzIpCi0gICAgewotICAgICAgICBtb3ZlKHJlZzEsIGRhdGFUZW1wUmVnaXN0
ZXIpOwotICAgICAgICBtb3ZlKHJlZzIsIHJlZzEpOwotICAgICAgICBtb3ZlKGRhdGFUZW1wUmVn
aXN0ZXIsIHJlZzIpOwotICAgIH0KLQotICAgIHZvaWQgc3dhcChGUFJlZ2lzdGVySUQgZnIxLCBG
UFJlZ2lzdGVySUQgZnIyKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJsZShmcjEsIGZwVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgbW92ZURvdWJsZShmcjIsIGZyMSk7Ci0gICAgICAgIG1vdmVEb3Vi
bGUoZnBUZW1wUmVnaXN0ZXIsIGZyMik7Ci0gICAgfQotCi0gICAgdm9pZCBzaWduRXh0ZW5kMzJU
b1B0cihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYg
KHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAgIH0KLQotICAg
IHZvaWQgemVyb0V4dGVuZDMyVG9QdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1vdmUoc3JjLCBk
ZXN0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRydXN0
ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7Ci0gICAg
fQotCi0gICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4
IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBy
aWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIHJpZ2h0KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJu
IGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7Ci0gICAgfQotCi0gICAg
SnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxl
ZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdo
dDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IHJpZ2h0KTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGxlZnQubV9wdHIpLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJp
Z2h0OCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBCYXNlSW5kZXggbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKLSAgICB7Ci0gICAgICAgIGxv
YWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNv
bmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaDMy
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJp
Z2h0LCBpbnQgdXNlQ29uc3RhbnRQb29sID0gMCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmNtcChsZWZ0LCByaWdodCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChB
Uk1Db25kaXRpb24oY29uZCksIHVzZUNvbnN0YW50UG9vbCkpOwotICAgIH0KLQotICAgIEp1bXAg
YnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0
ZWRJbW0zMiByaWdodCwgaW50IHVzZUNvbnN0YW50UG9vbCA9IDApCi0gICAgewotICAgICAgICBp
bnRlcm5hbENvbXBhcmUzMihsZWZ0LCByaWdodCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNz
ZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCksIHVzZUNvbnN0YW50UG9vbCkpOwotICAgIH0K
LQotICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGxlZnQsIEFkZHJlc3MgcmlnaHQpCi0gICAgewotICAgICAgICBsb2FkMzIocmlnaHQsIGRhdGFU
ZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgZGF0YVRl
bXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKLSAgICB7Ci0gICAgICAg
IGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMy
KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5j
aDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQpCi0gICAgewotICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCk7Ci0g
ICAgfQotCi0gICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJ
bmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewotICAgICAgICBsb2FkMzIobGVm
dCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRh
VGVtcFJlZ2lzdGVyLCByaWdodCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gzMldpdGhVbmFs
aWduZWRIYWxmV29yZHMoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwg
VHJ1c3RlZEltbTMyIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbG9hZDMyV2l0aFVuYWxpZ25lZEhh
bGZXb3JkcyhsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMy
KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5j
aFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0z
MiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBt
YXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29u
ZCwgbWFzayk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVy
biBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOwotICAgIH0KLQot
ICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRy
ZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCi0gICAgewotICAgICAg
ICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6
OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIp
OwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1h
c2s4KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25k
LCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1t
MzIoLTEpKQotICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKLSAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25k
LCBBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
cmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7Ci0gICAg
fQotCi0gICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgcmVnLCBSZWdpc3RlcklEIG1hc2spCi0gICAgewotICAgICAgICBBU1NFUlQoY29uZCA9PSBa
ZXJvIHx8IGNvbmQgPT0gTm9uWmVybyB8fCBjb25kID09IFNpZ25lZCB8fCBjb25kID09IFBvc2l0
aXZlT3JaZXJvKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudHN0KHJlZywgbWFzayk7Ci0gICAgICAg
IHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9
Ci0KLSAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCByZWcsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChjb25kID09IFplcm8gfHwgY29uZCA9PSBOb25aZXJvIHx8IGNvbmQgPT0gU2ln
bmVkIHx8IGNvbmQgPT0gUG9zaXRpdmVPclplcm8pOwotICAgICAgICBBUk1Xb3JkIHcgPSBtX2Fz
c2VtYmxlci5nZXRJbW0obWFzay5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0cnVlKTsK
LSAgICAgICAgaWYgKHcgJiBBUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKQotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYmljcyhhZGRyZXNzVGVtcFJlZ2lzdGVyLCByZWcsIHcgJiB+
QVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIHcpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFu
Y2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZElt
bTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJl
c3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQs
IGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoVGVzdDMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1h
c2sgPSBUcnVzdGVkSW1tMzIoLTEpKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRh
dGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIG1hc2spOwotICAgIH0KLQotICAgIEp1bXAganVtcCgpCi0gICAgewotICAg
ICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBq
dW1wKFJlZ2lzdGVySUQgdGFyZ2V0LCBQdHJUYWcpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5ieCh0YXJnZXQpOwotICAgIH0KLQotICAgIHZvaWQganVtcChBZGRyZXNzIGFkZHJlc3MsIFB0
clRhZykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OnBjKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykK
LSAgICB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0
ZXIsIDApLCBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQganVtcChSZWdpc3RlcklEIHRhcmdldCwgUmVnaXN0ZXJJRCBqdW1wVGFnKSB7IFVOVVNFRF9Q
QVJBTShqdW1wVGFnKSwganVtcCh0YXJnZXQsIE5vUHRyVGFnKTsgfQotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBqdW1wKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBqdW1wVGFnKSB7IFVOVVNF
RF9QQVJBTShqdW1wVGFnKSwganVtcChhZGRyZXNzLCBOb1B0clRhZyk7IH0KLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQganVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBqdW1w
VGFnKSB7IFVOVVNFRF9QQVJBTShqdW1wVGFnKSwganVtcChhZGRyZXNzLCBOb1B0clRhZyk7IH0K
LQotICAgIHZvaWQgbW92ZURvdWJsZVRvSW50cyhGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1v
dihkZXN0MSwgZGVzdDIsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3ZlSW50c1RvRG91Ymxl
KFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBGUFJlZ2lzdGVySUQgZGVzdCwgRlBS
ZWdpc3RlcklEKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0LCBzcmMxLCBz
cmMyKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJU
KChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8p
Ci0gICAgICAgICAgICB8fCAoY29uZCA9PSBOb25aZXJvKSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9y
WmVybykpOwotICAgICAgICBhZGQzMihzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gSnVtcCht
X2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBi
cmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVy
SUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0g
T3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykKLSAgICAgICAg
ICAgIHx8IChjb25kID09IE5vblplcm8pIHx8IChjb25kID09IFBvc2l0aXZlT3JaZXJvKSk7Ci0g
ICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3Nl
bWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNo
QWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQg
PT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKQotICAgICAgICAgICAgfHwgKGNvbmQgPT0gTm9u
WmVybykgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pKTsKLSAgICAgICAgYWRkMzIoaW1tLCBk
ZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihj
b25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25l
ZCkgfHwgKGNvbmQgPT0gWmVybykKLSAgICAgICAgICAgIHx8IChjb25kID09IE5vblplcm8pIHx8
IChjb25kID09IFBvc2l0aXZlT3JaZXJvKSk7Ci0gICAgICAgIGFkZDMyKHNyYywgaW1tLCBkZXN0
KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25k
KSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQotICAgIHsKLSAgICAgICAg
QVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09
IFplcm8pCi0gICAgICAgICAgICB8fCAoY29uZCA9PSBOb25aZXJvKSB8fCAoY29uZCA9PSBQb3Np
dGl2ZU9yWmVybykpOwotICAgICAgICBhZGQzMihpbW0sIGRlc3QpOwotICAgICAgICByZXR1cm4g
SnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAg
SnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihzcmMsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgZGVzdCwgYWRkcmVzc1RlbXBS
ZWdpc3RlciwgZGVzdCk7Ci0gICAgfQotICAgIHZvaWQgbXVsbDMyKFJlZ2lzdGVySUQgb3AxLCBS
ZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKG9wMiA9
PSBkZXN0KSB7Ci0gICAgICAgICAgICBpZiAob3AxID09IGRlc3QpIHsKLSAgICAgICAgICAgICAg
ICBtb3ZlKG9wMiwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgb3AyID0g
YWRkcmVzc1RlbXBSZWdpc3RlcjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgLy8gU3dhcCB0aGUgb3BlcmFuZHMuCi0gICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCB0bXAg
PSBvcDE7Ci0gICAgICAgICAgICAgICAgb3AxID0gb3AyOwotICAgICAgICAgICAgICAgIG9wMiA9
IHRtcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtX2Fzc2VtYmxlci5tdWxs
KGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QsIG9wMSwgb3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
Y21wKGRhdGFUZW1wUmVnaXN0ZXIsIG1fYXNzZW1ibGVyLmFzcihkZXN0LCAzMSkpOwotICAgIH0K
LQotICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
c3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBB
U1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0g
WmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxv
dykgewotICAgICAgICAgICAgbXVsbDMyKHNyYzEsIHNyYzIsIGRlc3QpOwotICAgICAgICAgICAg
Y29uZCA9IE5vblplcm87Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbXVs
MzIoc3JjMSwgc3JjMiwgZGVzdCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpt
cChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaE11bDMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIHNyYywgZGVzdCwgZGVzdCk7Ci0g
ICAgfQotCi0gICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29u
ZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Ci0gICAgICAgIGlmIChjb25kID09IE92
ZXJmbG93KSB7Ci0gICAgICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgICAgICBtdWxsMzIoYWRkcmVzc1RlbXBSZWdpc3Rlciwgc3JjLCBkZXN0KTsKLSAgICAg
ICAgICAgIGNvbmQgPSBOb25aZXJvOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG11bDMyKGltbSwgc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoU3Vi
MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
Ci0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNp
Z25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBz
dWIzMihzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJN
Q29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRD
b25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8
IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLSAgICAgICAgc3ViMzIoaW1t
LCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlv
bihjb25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
Ci0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNp
Z25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBz
dWIzMihzcmMsIGltbSwgZGVzdCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpt
cChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFN1YjMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwg
KGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN1YnMoZGVzdCwgb3AxLCBvcDIpOwotICAgICAgICByZXR1
cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0g
ICAgSnVtcCBicmFuY2hOZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNE
ZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9
PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLSAgICAg
ICAgbmVnMzIoc3JjRGVzdCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChB
Uk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaE9yMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewot
ICAgICAgICBBU1NFUlQoKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29u
ZCA9PSBOb25aZXJvKSk7Ci0gICAgICAgIG9yMzIoc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJu
IEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAg
IFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCgpCi0gICAgewotICAgICAgICByZXR1cm4gUGF0
Y2hhYmxlSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQXNzZW1ibGVyOjpBTCwgMSkpOwotICAgIH0K
LQotICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSkKLSAgICB7Ci0gICAgICAg
IFRydXN0ZWRJbW0zMiBpbW04ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBpbW0pOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Omxv
YWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwot
ICAgICAgICByZXR1cm4gcGF0Y2hhYmxlQnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwg
aW1tOCk7Ci0gICAgfQotCi0gICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMihSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgaW1tKQot
ICAgIHsKLSAgICAgICAgaW50ZXJuYWxDb21wYXJlMzIocmVnLCBpbW0pOwotICAgICAgICBKdW1w
IGp1bXAobV9hc3NlbWJsZXIubG9hZEJyYW5jaFRhcmdldChkYXRhVGVtcFJlZ2lzdGVyLCBBUk1D
b25kaXRpb24oY29uZCksIHRydWUpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYngoZGF0YVRlbXBS
ZWdpc3RlciwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKLSAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1
bXAoanVtcCk7Ci0gICAgfQotCi0gICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGlt
bSkKLSAgICB7Ci0gICAgICAgIGludGVybmFsQ29tcGFyZTMyKGFkZHJlc3MsIGltbSk7Ci0gICAg
ICAgIEp1bXAganVtcChtX2Fzc2VtYmxlci5sb2FkQnJhbmNoVGFyZ2V0KGRhdGFUZW1wUmVnaXN0
ZXIsIEFSTUNvbmRpdGlvbihjb25kKSwgZmFsc2UpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYngo
ZGF0YVRlbXBSZWdpc3RlciwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKLSAgICAgICAgcmV0dXJuIFBh
dGNoYWJsZUp1bXAoanVtcCk7Ci0gICAgfQotCi0gICAgdm9pZCBicmVha3BvaW50KCkKLSAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJrcHQoMCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wg
aXNCcmVha3BvaW50KHZvaWQqIGFkZHJlc3MpIHsgcmV0dXJuIEFSTUFzc2VtYmxlcjo6aXNCa3B0
KGFkZHJlc3MpOyB9Ci0KLSAgICBDYWxsIG5lYXJDYWxsKCkKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmxvYWRCcmFuY2hUYXJnZXQoZGF0YVRlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpB
TCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmJseChkYXRhVGVtcFJl
Z2lzdGVyKSwgQ2FsbDo6TGlua2FibGVOZWFyKTsKLSAgICB9Ci0KLSAgICBDYWxsIG5lYXJUYWls
Q2FsbCgpCi0gICAgewotICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5qbXAoKSwgQ2Fs
bDo6TGlua2FibGVOZWFyVGFpbCk7Ci0gICAgfQotCi0gICAgQ2FsbCBjYWxsKFJlZ2lzdGVySUQg
dGFyZ2V0LCBQdHJUYWcpCi0gICAgewotICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5i
bHgodGFyZ2V0KSwgQ2FsbDo6Tm9uZSk7Ci0gICAgfQotCi0gICAgdm9pZCBjYWxsKEFkZHJlc3Mg
YWRkcmVzcywgUHRyVGFnKQotICAgIHsKLSAgICAgICAgY2FsbDMyKGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgcmV0KCkKLSAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmJ4KGxpbmtSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBjb21wYXJlMzIo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmln
aHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0
LCByaWdodCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6Omdl
dE9wMkJ5dGUoMCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNQXNzZW1ibGVy
OjpnZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOwotICAgIH0KLQotICAgIHZvaWQg
Y29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVz
dGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmNtcChsZWZ0LCBtX2Fzc2VtYmxlci5nZXRJbW0ocmlnaHQubV92YWx1ZSwgYWRkcmVzc1Rl
bXBSZWdpc3RlcikpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVzdCwgQVJNQXNzZW1ibGVy
OjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFzc2Vt
Ymxlcjo6Z2V0T3AyQnl0ZSgxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVz
dGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJ
bW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9u
Q29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
Y29tcGFyZTMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCwgZGVzdCk7Ci0gICAgfQot
Ci0gICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBU
cnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKG1h
c2subV92YWx1ZSA9PSAtMSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIHJlZyk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIG1fYXNzZW1i
bGVyLmdldEltbShtYXNrLm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSksIEFS
TUNvbmRpdGlvbihjb25kKSk7Ci0gICAgfQotCi0gICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgdGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2ssIGRlc3QpOwotICAg
IH0KLQotICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVz
cywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIFRy
dXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgbWFzayk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9h
ZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIHRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCwgZGVzdCk7Ci0gICAg
fQotCi0gICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkKGRlc3QsIHNyYywg
bV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7Ci0g
ICAgfQotCi0gICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLm1fcHRyLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgYWRkMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
c3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQotICAg
IHsKLSAgICAgICAgQVJNV29yZCB0bXA7Ci0KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFk
ZHJlc3MubV9wdHIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRy
VXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVt
cFJlZ2lzdGVyLCAwKTsKLQotICAgICAgICBpZiAoKHRtcCA9IEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
KGltbS5tX3ZhbHVlKSkgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKQotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkcyhhZGRyZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCB0bXApOwotICAgICAgICBlbHNlIGlmICgodG1wID0gQVJNQXNzZW1ibGVyOjpnZXRP
cDIoLWltbS5tX3ZhbHVlKSkgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKQotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc3VicyhhZGRyZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyLCB0bXApOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmFkZHMoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbV9hc3NlbWJs
ZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBkYXRhVGVtcFJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICB9Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50
MzIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIDApOwotCi0gICAgICAg
IG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgYWRkcmVzc1RlbXBS
ZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgaWYg
KGltbS5tX3ZhbHVlID49IDApCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGMoYWRkcmVzc1Rl
bXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRl
KDApKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2JjKGFkZHJlc3NU
ZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0
ZSgwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50
MzIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIHNpemVvZihBUk1Xb3Jk
KSk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFk
ZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLm1fcHRyLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3ViMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAg
ICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGxvYWQzMihjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoYWRkcmVzc1RlbXBS
ZWdpc3RlciwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgMCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQotICAg
IHsKLSAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOwotICAgIH0K
LQotICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFk
ZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKGxl
ZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29u
ZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOwotICAgIH0KLQotICAgIHZvaWQgcmVsYXRpdmVU
YWJsZUp1bXAoUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKHNjYWxlID49IDAgJiYgc2NhbGUgPD0gMzEpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGQo
QVJNUmVnaXN0ZXJzOjpwYywgQVJNUmVnaXN0ZXJzOjpwYywgbV9hc3NlbWJsZXIubHNsKGluZGV4
LCBzY2FsZSkpOwotCi0gICAgICAgIC8vIE5PUCB0aGUgZGVmYXVsdCBwcmVmZXRjaGluZwotICAg
ICAgICBtX2Fzc2VtYmxlci5tb3YoQVJNUmVnaXN0ZXJzOjpyMCwgQVJNUmVnaXN0ZXJzOjpyMCk7
Ci0gICAgfQotCi0gICAgQ2FsbCBjYWxsKFB0clRhZykKLSAgICB7Ci0gICAgICAgIGVuc3VyZVNw
YWNlKDIgKiBzaXplb2YoQVJNV29yZCksIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmxvYWRCcmFuY2hUYXJnZXQoZGF0YVRlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpB
TCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmJseChkYXRhVGVtcFJl
Z2lzdGVyKSwgQ2FsbDo6TGlua2FibGUpOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgQ2Fs
bCBjYWxsKFJlZ2lzdGVySUQgY2FsbFRhZykgeyByZXR1cm4gVU5VU0VEX1BBUkFNKGNhbGxUYWcp
LCBjYWxsKE5vUHRyVGFnKTsgfQotICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVy
SUQgdGFyZ2V0LCBSZWdpc3RlcklEIGNhbGxUYWcpIHsgcmV0dXJuIFVOVVNFRF9QQVJBTShjYWxs
VGFnKSwgY2FsbCh0YXJnZXQsIE5vUHRyVGFnKTsgfQotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBj
YWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBjYWxsVGFnKSB7IFVOVVNFRF9QQVJBTShj
YWxsVGFnKSwgY2FsbChhZGRyZXNzLCBOb1B0clRhZyk7IH0KLQotICAgIENhbGwgdGFpbFJlY3Vy
c2l2ZUNhbGwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIENhbGw6OmZyb21UYWlsSnVtcChqdW1w
KCkpOwotICAgIH0KLQotICAgIENhbGwgbWFrZVRhaWxSZWN1cnNpdmVDYWxsKEp1bXAgb2xkSnVt
cCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBDYWxsOjpmcm9tVGFpbEp1bXAob2xkSnVtcCk7Ci0g
ICAgfQotCi0gICAgRGF0YUxhYmVsUHRyIG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0
aWFsVmFsdWUsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIERhdGFMYWJlbFB0ciBk
YXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShk
ZXN0LCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGluaXRpYWxWYWx1ZS5tX3ZhbHVlKSk7Ci0g
ICAgICAgIHJldHVybiBkYXRhTGFiZWw7Ci0gICAgfQotCi0gICAgRGF0YUxhYmVsMzIgbW92ZVdp
dGhQYXRjaChUcnVzdGVkSW1tMzIgaW5pdGlhbFZhbHVlLCBSZWdpc3RlcklEIGRlc3QpCi0gICAg
ewotICAgICAgICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmxkclVuaXF1ZUltbWVkaWF0ZShkZXN0LCBzdGF0aWNfY2FzdDxBUk1Xb3JkPihpbml0aWFs
VmFsdWUubV92YWx1ZSkpOwotICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwotICAgIH0KLQotICAg
IEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFs
UmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cikpCi0gICAgewotICAgICAgICBlbnN1
cmVTcGFjZSgzICogc2l6ZW9mKEFSTVdvcmQpLCAyICogc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAg
ICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgZGF0YVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIEp1bXAganVtcCA9IGJyYW5jaDMyKGNvbmQsIGxlZnQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIHRydWUpOwotICAgICAgICByZXR1cm4ganVtcDsKLSAgICB9Ci0KLSAgICBK
dW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3Mg
bGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0
VmFsdWUgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGxl
ZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBlbnN1cmVTcGFjZSgzICogc2l6ZW9mKEFS
TVdvcmQpLCAyICogc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdp
dGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IEp1bXAganVtcCA9IGJyYW5jaDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1w
UmVnaXN0ZXIsIHRydWUpOwotICAgICAgICByZXR1cm4ganVtcDsKLSAgICB9Ci0KLSAgICBKdW1w
IGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0
LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUg
PSBUcnVzdGVkSW1tMzIoMCkpCi0gICAgewotICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIGVuc3VyZVNwYWNlKDMgKiBzaXplb2YoQVJNV29yZCksIDIgKiBz
aXplb2YoQVJNV29yZCkpOwotICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRp
YWxSaWdodFZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgSnVtcCBqdW1wID0g
YnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgdHJ1
ZSk7Ci0gICAgICAgIHJldHVybiBqdW1wOwotICAgIH0KLQotICAgIERhdGFMYWJlbFB0ciBzdG9y
ZVB0cldpdGhQYXRjaChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRyZXNz
IGFkZHJlc3MpCi0gICAgewotICAgICAgICBEYXRhTGFiZWxQdHIgZGF0YUxhYmVsID0gbW92ZVdp
dGhQYXRjaChpbml0aWFsVmFsdWUsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBzdG9yZTMy
KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOwotICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwot
ICAgIH0KLQotICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChJbXBsaWNpdEFkZHJl
c3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdG9yZVB0cldpdGhQYXRjaChUcnVz
dGVkSW1tUHRyKG51bGxwdHIpLCBhZGRyZXNzKTsKLSAgICB9Ci0KLSAgICAvLyBGbG9hdGluZyBw
b2ludCBvcGVyYXRvcnMKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHNfaXNWRlBQcmVzZW50OwotICAgIH0KLQotICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9p
bnRTcXJ0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzX2lzVkZQUHJlc2VudDsKLSAgICB9Ci0g
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50QWJzKCkgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0KLQotICAgIHZvaWQgbG9hZEZsb2F0KEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRhdGFU
cmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6TG9hZEZsb2F0LCBkZXN0LCBhZGRyZXNzLmJhc2Us
IGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWRGbG9hdChCYXNlSW5kZXgg
YWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5i
YXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6TG9hZEZsb2F0LCBkZXN0LCBhZGRy
ZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSks
IGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWREb3VibGUoSW1wbGljaXRB
ZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuZGF0YVRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpMb2FkRG91YmxlLCBkZXN0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWREb3Vi
bGUoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXJGbG9hdChBUk1Bc3NlbWJsZXI6OkxvYWREb3Vi
bGUsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50Pihh
ZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZERv
dWJsZShUcnVzdGVkSW1tUHRyIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgbW92ZShUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNz
Lm1fdmFsdWUpKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRv
dWJsZUR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZERvdWJsZSwgZGVzdCwgYWRkcmVzc1RlbXBSZWdp
c3RlciwgMCk7Ci0gICAgfQotCi0gICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGNlaWxE
b3VibGUoRlBSZWdpc3RlcklELCBGUFJlZ2lzdGVySUQpCi0gICAgewotICAgICAgICBBU1NFUlQo
IXN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkpOwotICAgICAgICBDUkFTSCgpOwotICAg
IH0KLQotICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBmbG9vckRvdWJsZShGUFJlZ2lz
dGVySUQsIEZQUmVnaXN0ZXJJRCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghc3VwcG9ydHNGbG9h
dGluZ1BvaW50Um91bmRpbmcoKSk7Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgfQotCi0gICAgTk9f
UkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHJvdW5kVG93YXJkWmVyb0RvdWJsZShGUFJlZ2lzdGVy
SUQsIEZQUmVnaXN0ZXJJRCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghc3VwcG9ydHNGbG9hdGlu
Z1BvaW50Um91bmRpbmcoKSk7Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgfQotCi0gICAgdm9pZCBz
dG9yZUZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpT
dG9yZUZsb2F0LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQot
ICAgIHZvaWQgc3RvcmVGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykK
LSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyRmxvYXQoQVJNQXNz
ZW1ibGVyOjpTdG9yZUZsb2F0LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3Rh
dGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQot
ICAgIHZvaWQgc3RvcmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFk
ZHJlc3MpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXJGbG9hdChBUk1B
c3NlbWJsZXI6OlN0b3JlRG91YmxlLCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQp
OwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgQmFzZUlu
ZGV4IGFkZHJlc3MpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2Zl
ckZsb2F0KEFSTUFzc2VtYmxlcjo6U3RvcmVEb3VibGUsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNl
dCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBUcnVz
dGVkSW1tUHRyIGFkZHJlc3MpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWlu
dGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MubV92YWx1ZSkpLCBhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVy
OjpTdG9yZURvdWJsZSwgc3JjLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCAwKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBpZiAoc3JjICE9IGRlc3QpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci52
bW92X2Y2NChkZXN0LCBzcmMpOwotICAgIH0KLQotICAgIHZvaWQgbW92ZVplcm9Ub0RvdWJsZShG
UFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgc3RhdGljIGRvdWJsZSB6ZXJvQ29uc3Rh
bnQgPSAwLjsKLSAgICAgICAgbG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZ6ZXJvQ29uc3RhbnQp
LCByZWcpOwotICAgIH0KLQotICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmFkZF9mNjQoZGVz
dCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQg
b3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLnZhZGRfZjY0KGRlc3QsIG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGFkZERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAg
ICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICBhZGREb3VibGUoZnBU
ZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgYWRkRG91YmxlKEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWRE
b3VibGUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgZnBUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICBhZGREb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQg
ZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIudmRpdl9mNjQoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZkaXZfZjY0KGRlc3Qs
IG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpdkRvdWJsZShBZGRyZXNzIHNyYywgRlBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyAvLyBVbnRlc3RlZAotICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIp
OwotICAgICAgICBkaXZEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAg
IHZvaWQgc3ViRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIudnN1Yl9mNjQoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3Ay
LCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZzdWJfZjY0
KGRlc3QsIG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YkRvdWJsZShBZGRyZXNzIHNy
YywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBU
ZW1wUmVnaXN0ZXIpOwotICAgICAgICBzdWJEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwot
ICAgIH0KLQotICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm11bF9mNjQoZGVzdCwgZGVzdCwg
c3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIG11bERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIp
OwotICAgICAgICBtdWxEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAg
IHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVn
aXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm11bF9mNjQoZGVzdCwg
b3AxLCBvcDIpOwotICAgIH0KLQotICAgIHZvaWQgc3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3Jj
LCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZzcXJ0X2Y2
NChkZXN0LCBzcmMpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFic0RvdWJsZShGUFJlZ2lzdGVy
SUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZh
YnNfZjY0KGRlc3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBuZWdhdGVEb3VibGUoRlBSZWdp
c3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci52bmVnX2Y2NChkZXN0LCBzcmMpOwotICAgIH0KLQotICAgIHZvaWQgY29udmVydEludDMyVG9E
b3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIudm1vdl92ZnAzMihkZXN0IDw8IDEsIHNyYyk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLnZjdnRfZjY0X3MzMihkZXN0LCBkZXN0IDw8IDEpOwotICAgIH0KLQotICAgIHZvaWQgY29u
dmVydEludDMyVG9Eb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgbG9hZDMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnZlcnRJ
bnQzMlRvRG91YmxlKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQg
Y29udmVydEludDMyVG9Eb3VibGUoQWJzb2x1dGVBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRl
c3QpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgZGF0YVRl
bXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIpLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoZGF0YVRlbXBS
ZWdpc3RlciwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBjb252ZXJ0RmxvYXRUb0RvdWJsZShG
UFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIudmN2dF9mNjRfZjMyKGRzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbnZlcnRE
b3VibGVUb0Zsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCi0gICAgewot
ICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2YzMl9mNjQoZHN0LCBzcmMpOwotICAgIH0KLQotICAg
IEp1bXAgYnJhbmNoRG91YmxlKERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVm
dCwgRlBSZWdpc3RlcklEIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmNtcF9m
NjQobGVmdCwgcmlnaHQpOwotICAgICAgICBtX2Fzc2VtYmxlci52bXJzX2Fwc3IoKTsKLSAgICAg
ICAgaWYgKGNvbmQgJiBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFsKQotICAgICAgICAgICAgbV9h
c3NlbWJsZXIuY21wKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIEFS
TUFzc2VtYmxlcjo6VlMpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoc3Rh
dGljX2Nhc3Q8QVJNQXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQgJiB+RG91YmxlQ29uZGl0aW9u
TWFzaykpKTsKLSAgICB9Ci0KLSAgICAvLyBUcnVuY2F0ZXMgJ3NyYycgdG8gYW4gaW50ZWdlciwg
YW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KLSAgICAvLyBJZiB0aGUgcmVzdWx0IGlz
IG5vdCByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCi0gICAgLy8gTWF5
IGFsc28gYnJhbmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMy
IGJpdHMKLSAgICAvLyAoc3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIElOVF9NSU4pLgotICAg
IGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCwgQnJhbmNo
SWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKLSAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9J
bnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlw
ZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKLSAgICB7Ci0gICAgICAgIHRy
dW5jYXRlRG91YmxlVG9JbnQzMihzcmMsIGRlc3QpOwotCi0gICAgICAgIG1fYXNzZW1ibGVyLmFk
ZChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSkp
OwotICAgICAgICBtX2Fzc2VtYmxlci5iaWMoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsKLQotICAgICAgICBBUk1X
b3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMigweDgwMDAwMDAwKTsKLSAgICAgICAgQVNTRVJU
KHcgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuY21wKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHcpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qbXAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkID8gQVJNQXNz
ZW1ibGVyOjpFUSA6IEFSTUFzc2VtYmxlcjo6TkUpKTsKLSAgICB9Ci0KLSAgICAvLyBSZXN1bHQg
aXMgdW5kZWZpbmVkIGlmIHRoZSB2YWx1ZSBpcyBvdXRzaWRlIG9mIHRoZSBpbnRlZ2VyIHJhbmdl
LgotICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfczMyX2Y2NChmcFRl
bXBSZWdpc3RlciA8PCAxLCBzcmMpOwotICAgICAgICBtX2Fzc2VtYmxlci52bW92X2FybTMyKGRl
c3QsIGZwVGVtcFJlZ2lzdGVyIDw8IDEpOwotICAgIH0KLQotICAgIHZvaWQgdHJ1bmNhdGVEb3Vi
bGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci52Y3Z0X3UzMl9mNjQoZnBUZW1wUmVnaXN0ZXIgPDwgMSwgc3JjKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMihkZXN0LCBmcFRlbXBSZWdpc3RlciA8PCAx
KTsKLSAgICB9Ci0KLSAgICAvLyBDb252ZXJ0ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFj
ZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCi0gICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVw
cmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgotICAgIC8vIE1heSBhbHNvIGJy
YW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCi0g
ICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCAwKS4KLSAgICB2b2lkIGJyYW5jaENv
bnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVt
cExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklELCBib29sIG5lZ1plcm9DaGVjayA9IHRy
dWUpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3MzMl9mNjQoZnBUZW1wUmVnaXN0
ZXIgPDwgMSwgc3JjKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMihkZXN0LCBmcFRl
bXBSZWdpc3RlciA8PCAxKTsKLQotICAgICAgICAvLyBDb252ZXJ0IHRoZSBpbnRlZ2VyIHJlc3Vs
dCBiYWNrIHRvIGZsb2F0ICYgY29tcGFyZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUgLSBpZiBub3Qg
ZXF1YWwgb3IgdW5vcmRlcmVkIChOYU4pIHRoZW4ganVtcC4KLSAgICAgICAgbV9hc3NlbWJsZXIu
dmN2dF9mNjRfczMyKGZwVGVtcFJlZ2lzdGVyLCBmcFRlbXBSZWdpc3RlciA8PCAxKTsKLSAgICAg
ICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWxPclVub3Jk
ZXJlZCwgc3JjLCBmcFRlbXBSZWdpc3RlcikpOwotCi0gICAgICAgIC8vIElmIHRoZSByZXN1bHQg
aXMgemVybywgaXQgbWlnaHQgaGF2ZSBiZWVuIC0wLjAsIGFuZCAwLjAgZXF1YWxzIHRvIC0wLjAK
LSAgICAgICAgaWYgKG5lZ1plcm9DaGVjaykKLSAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBl
bmQoYnJhbmNoVGVzdDMyKFplcm8sIGRlc3QpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaERv
dWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCi0gICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1i
bGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoYWRkcmVz
c1RlbXBSZWdpc3Rlciwgc2NyYXRjaCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91
YmxlTm90RXF1YWwsIHJlZywgc2NyYXRjaCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hEb3Vi
bGVaZXJvT3JOYU4oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCi0gICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1i
bGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoYWRkcmVz
c1RlbXBSZWdpc3Rlciwgc2NyYXRjaCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91
YmxlRXF1YWxPclVub3JkZXJlZCwgcmVnLCBzY3JhdGNoKTsKLSAgICB9Ci0KLSAgICAvLyBJbnZl
cnQgYSByZWxhdGlvbmFsIGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMg
Pj0sIGV0Yy4KLSAgICBzdGF0aWMgUmVsYXRpb25hbENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kKQotICAgIHsKLSAgICAgICAgQVNTRVJUKChzdGF0aWNfY2FzdDx1aW50
MzJfdD4oY29uZCAmIDB4MGZmZmZmZmYpKSA9PSAwICYmIHN0YXRpY19jYXN0PHVpbnQzMl90Pihj
b25kKSA8IHN0YXRpY19jYXN0PHVpbnQzMl90PihBUk1Bc3NlbWJsZXI6OkFMKSk7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbmFsQ29uZGl0aW9uPihjb25kIF4gMHgxMDAwMDAw
MCk7Ci0gICAgfQotCi0gICAgdm9pZCBub3AoKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bm9wKCk7Ci0gICAgfQotCi0gICAgdm9pZCBtZW1vcnlGZW5jZSgpCi0gICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5kbWJTWSgpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVGZW5jZSgpCi0gICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5kbWJJU0hTVCgpOwotICAgIH0KLQotICAgIHRlbXBsYXRl
PFB0clRhZyByZXN1bHRUYWcsIFB0clRhZyBsb2NhdGlvblRhZz4KLSAgICBzdGF0aWMgRnVuY3Rp
b25QdHI8cmVzdWx0VGFnPiByZWFkQ2FsbFRhcmdldChDb2RlTG9jYXRpb25DYWxsPGxvY2F0aW9u
VGFnPiBjYWxsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyPHJlc3VsdFRhZz4o
cmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQo
Y2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgc3Rh
cnRUYWcsIFB0clRhZyBkZXN0VGFnPgotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChD
b2RlTG9jYXRpb25MYWJlbDxzdGFydFRhZz4gaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9u
TGFiZWw8ZGVzdFRhZz4gZGVzdGluYXRpb24pCi0gICAgewotICAgICAgICBBUk1Bc3NlbWJsZXI6
OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5h
dGlvbi5kYXRhTG9jYXRpb24oKSk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qg
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gQVJNQXNzZW1i
bGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHB0cmRp
ZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gQVJNQXNzZW1i
bGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGNhbkp1
bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNo
KCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+Ci0gICAgc3Rh
dGljIENvZGVMb2NhdGlvbkxhYmVsPHRhZz4gc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBh
dGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyPHRhZz4pCi0gICAgewotICAgICAg
ICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlv
bkxhYmVsPHRhZz4oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0
YXRpYyBDb2RlTG9jYXRpb25MYWJlbDx0YWc+IHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRo
UGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPHRhZz4pCi0gICAgewotICAg
ICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICAgICAgcmV0dXJuIENvZGVMb2Nh
dGlvbkxhYmVsPHRhZz4oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAg
IHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbDx0YWc+IHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hP
blJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjx0YWc+IGxhYmVsKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGxhYmVsLmxhYmVsQXRPZmZzZXQoMCk7Ci0gICAgfQotCi0gICAgdGVtcGxh
dGU8UHRyVGFnIHRhZz4KLSAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0Jy
YW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbDx0YWc+IGluc3RydWN0aW9uU3RhcnQs
IFJlZ2lzdGVySUQgcmVnLCB2b2lkKiBpbml0aWFsVmFsdWUpCi0gICAgewotICAgICAgICBBUk1B
c3NlbWJsZXI6OnJldmVydEJyYW5jaFB0cldpdGhQYXRjaChpbnN0cnVjdGlvblN0YXJ0LmRhdGFM
b2NhdGlvbigpLCByZWcsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihpbml0aWFsVmFsdWUp
ICYgMHhmZmZmKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRp
YyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2go
Q29kZUxvY2F0aW9uTGFiZWw8dGFnPiwgQWRkcmVzcywgaW50MzJfdCkKLSAgICB7Ci0gICAgICAg
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPFB0clRh
ZyB0YWc+Ci0gICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWw8dGFnPiwgQWRkcmVzcywgdm9pZCop
Ci0gICAgewotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZTxQdHJUYWcgY2FsbFRhZywgUHRyVGFnIGRlc3RUYWc+Ci0gICAgc3RhdGljIHZv
aWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxjYWxsVGFnPiBjYWxsLCBDb2RlTG9jYXRp
b25MYWJlbDxkZXN0VGFnPiBkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAgICAgIEFSTUFzc2VtYmxl
cjo6cmVsaW5rQ2FsbChjYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxl
QWRkcmVzcygpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgY2FsbFRhZywgUHRyVGFn
IGRlc3RUYWc+Ci0gICAgc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxj
YWxsVGFnPiBjYWxsLCBGdW5jdGlvblB0cjxkZXN0VGFnPiBkZXN0aW5hdGlvbikKLSAgICB7Ci0g
ICAgICAgIEFSTUFzc2VtYmxlcjo6cmVsaW5rQ2FsbChjYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0
aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBB
Uk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFSTUFzc2VtYmxlcjo6Q29u
ZGl0aW9uPihjb25kKTsKLSAgICB9Ci0KLSAgICBBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1D
b25kaXRpb24oUmVzdWx0Q29uZGl0aW9uIGNvbmQpCi0gICAgewotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QVJNQXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOwotICAgIH0KLQotICAgIHZv
aWQgZW5zdXJlU3BhY2UoaW50IGluc25TcGFjZSwgaW50IGNvbnN0U3BhY2UpCi0gICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5lbnN1cmVTcGFjZShpbnNuU3BhY2UsIGNvbnN0U3BhY2UpOwotICAg
IH0KLQotICAgIGludCBzaXplT2ZDb25zdGFudFBvb2woKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYXNzZW1ibGVyLnNpemVPZkNvbnN0YW50UG9vbCgpOwotICAgIH0KLQotICAgIHZvaWQgY2Fs
bDMyKFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpCi0gICAgewotICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhiYXNlLCBvZmZzZXQpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYmx4KGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBm
cmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKLQotICAgIHZvaWQgaW50ZXJuYWxDb21wYXJlMzIoUmVn
aXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewotICAgICAgICBBUk1Xb3Jk
IHRtcCA9ICghcmlnaHQubV92YWx1ZSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmlnaHQubV92
YWx1ZSkgPT0gMHg4MDAwMDAwMCkgPyBBUk1Bc3NlbWJsZXI6OkludmFsaWRJbW1lZGlhdGUgOiBt
X2Fzc2VtYmxlci5nZXRPcDIoLXJpZ2h0Lm1fdmFsdWUpOwotICAgICAgICBpZiAodG1wICE9IEFS
TUFzc2VtYmxlcjo6SW52YWxpZEltbWVkaWF0ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNt
bihsZWZ0LCB0bXApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXAo
bGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGludGVybmFsQ29tcGFyZTMyKEFkZHJlc3MgbGVmdCwg
VHJ1c3RlZEltbTMyIHJpZ2h0KQotICAgIHsKLSAgICAgICAgQVJNV29yZCB0bXAgPSAoIXJpZ2h0
Lm1fdmFsdWUgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJpZ2h0Lm1fdmFsdWUpID09IDB4ODAw
MDAwMDApID8gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlIDogbV9hc3NlbWJsZXIuZ2V0
T3AyKC1yaWdodC5tX3ZhbHVlKTsKLSAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0
ZXIpOwotICAgICAgICBpZiAodG1wICE9IEFSTUFzc2VtYmxlcjo6SW52YWxpZEltbWVkaWF0ZSkK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtbihkYXRhVGVtcFJlZ2lzdGVyLCB0bXApOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXAoZGF0YVRlbXBSZWdpc3Rlciwg
bV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0YXRpYyB2b2lkIGxpbmtD
YWxsKHZvaWQqIGNvZGUsIENhbGwgY2FsbCwgRnVuY3Rpb25QdHI8dGFnPiBmdW5jdGlvbikKLSAg
ICB7Ci0gICAgICAgIGlmIChjYWxsLmlzRmxhZ1NldChDYWxsOjpUYWlsKSkKLSAgICAgICAgICAg
IEFSTUFzc2VtYmxlcjo6bGlua0p1bXAoY29kZSwgY2FsbC5tX2xhYmVsLCBmdW5jdGlvbi5leGVj
dXRhYmxlQWRkcmVzcygpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQVJNQXNzZW1ibGVy
OjpsaW5rQ2FsbChjb2RlLCBjYWxsLm1fbGFiZWwsIGZ1bmN0aW9uLmV4ZWN1dGFibGVBZGRyZXNz
KCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBib29sIHNfaXNWRlBQcmVzZW50OwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKSAmJiBD
UFUoQVJNX1RSQURJVElPTkFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9QZXJmTG9nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUGVy
ZkxvZy5jcHAKaW5kZXggNWM5NDM5MTcxODczZDdmZmRjZDcwZmZjNzNmZWU2NGUyMjc3ZDk1NC4u
MTQzYzQ2ZDgzMjM1MDBmN2EyY2M3ZGE4N2JmMmI5OWIxODdkN2U2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9QZXJmTG9nLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1BlcmZMb2cuY3BwCkBAIC0zMCwxMSArMzAsMTMgQEAKIAog
I2luY2x1ZGUgPGVsZi5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8bXV0ZXg+CiAj
aW5jbHVkZSA8c3lzL21tYW4uaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5
cy9zeXNjYWxsLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+
CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1BlcmZMb2cuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUGVyZkxvZy5oCmluZGV4IDljNmJhYjMz
ZTgyYzZhZmJhZGFkZjA5ZjBjOTMxNjJmY2YyN2U2YjUuLjhmMjRlOGZhOGEzZTFiNmJjOTZkNTk4
YjVkMGYyNTE1MGE3ZmY3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvUGVyZkxvZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUGVy
ZkxvZy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9i
ZUNvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVDb250ZXh0
LmgKaW5kZXggNGVlNmVlYThlNzNiOTEyYmFlNmFkZTAwYzliYjhiM2Q4MmE4MTIwYy4uN2Y1MTkx
ZDUwYmZlMTRmNzVkYmIwNWQ4MmZiZDlmYjE4YTgwZjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgaW5s
aW5lIHZvaWQqJiBDUFVTdGF0ZTo6cGMoKQogICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KCZzcHIoWDg2UmVnaXN0ZXJzOjplaXApKTsKICNlbGlmIENQVShBUk02NCkKICAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmc3ByKEFSTTY0UmVnaXN0ZXJzOjpwYykp
OwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCisjZWxpZiBD
UFUoQVJNX1RIVU1CMikKICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3By
KEFSTVJlZ2lzdGVyczo6cGMpKTsKICNlbGlmIENQVShNSVBTKQogICAgIHJldHVybiAqcmVpbnRl
cnByZXRfY2FzdDx2b2lkKio+KCZzcHIoTUlQU1JlZ2lzdGVyczo6cGMpKTsKQEAgLTEyNyw3ICsx
MjcsNyBAQCBpbmxpbmUgdm9pZComIENQVVN0YXRlOjpmcCgpCiAgICAgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PHZvaWQqKj4oJmdwcihYODZSZWdpc3RlcnM6OmVicCkpOwogI2VsaWYgQ1BVKEFS
TTY0KQogICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNNjRSZWdp
c3RlcnM6OmZwKSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05B
TCkKKyNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KCZncHIoQVJNUmVnaXN0ZXJzOjpmcCkpOwogI2VsaWYgQ1BVKE1JUFMpCiAgICAgcmV0
dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihNSVBTUmVnaXN0ZXJzOjpmcCkpOwpA
QCAtMTQyLDcgKzE0Miw3IEBAIGlubGluZSB2b2lkKiYgQ1BVU3RhdGU6OnNwKCkKICAgICByZXR1
cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKFg4NlJlZ2lzdGVyczo6ZXNwKSk7CiAj
ZWxpZiBDUFUoQVJNNjQpCiAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdw
cihBUk02NFJlZ2lzdGVyczo6c3ApKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJN
X1RSQURJVElPTkFMKQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PHZvaWQqKj4oJmdwcihBUk1SZWdpc3RlcnM6OnNwKSk7CiAjZWxpZiBDUFUoTUlQ
UykKICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKE1JUFNSZWdpc3Rl
cnM6OnNwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rl
c3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3Bw
CmluZGV4IDFkNzdkODA4YmMwYTFmMDljMWJlMTI4MDBjOTQxOWFhNzFhNmFlYmQuLjNlNzU1NzRi
MjFkMGUwZDcyZmU4Yzg3YTY1ZDU2NzI4ZTU0ODI0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gVCBuZXh0SUQoVCBpZCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oaWQgKyAx
KTsgfQogI2lmIEVOQUJMRShNQVNNX1BST0JFKQogYm9vbCBpc1BDKE1hY3JvQXNzZW1ibGVyOjpS
ZWdpc3RlcklEIGlkKQogewotI2lmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElP
TkFMKQorI2lmIENQVShBUk1fVEhVTUIyKQogICAgIHJldHVybiBpZCA9PSBBUk1SZWdpc3RlcnM6
OnBjOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaWQpOwpAQCAtNTczLDcgKzU3Myw3IEBAIHZv
aWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5jdGlvbjx2b2lkKihQcm9i
ZTo6Q29udGV4dCYpPiBjb21wdXRlCiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICBh
dXRvIGZsYWdzU1BSID0gWDg2UmVnaXN0ZXJzOjplZmxhZ3M7CiAgICAgdWludHB0cl90IGZsYWdz
TWFzayA9IDB4YzU7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05B
TCkKKyNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgIGF1dG8gZmxhZ3NTUFIgPSBBUk1SZWdpc3Rl
cnM6OmFwc3I7CiAgICAgdWludHB0cl90IGZsYWdzTWFzayA9IDB4ZjgwMDAwMDA7CiAjZWxpZiBD
UFUoQVJNNjQpCkBAIC03NTMsNyArNzUzLDcgQEAgdm9pZCB0ZXN0UHJvYmVNb2RpZmllc1N0YWNr
VmFsdWVzKCkKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAgIE1hY3JvQXNzZW1ibGVy
OjpTUFJlZ2lzdGVySUQgZmxhZ3NTUFIgPSBYODZSZWdpc3RlcnM6OmVmbGFnczsKICAgICB1aW50
cHRyX3QgZmxhZ3NNYXNrID0gMHhjNTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJN
X1RSQURJVElPTkFMKQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgTWFjcm9Bc3NlbWJsZXI6
OlNQUmVnaXN0ZXJJRCBmbGFnc1NQUiA9IEFSTVJlZ2lzdGVyczo6YXBzcjsKICAgICB1aW50cHRy
X3QgZmxhZ3NNYXNrID0gMHhmODAwMDAwMDsKICNlbGlmIENQVShBUk02NCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQ2Fwc3RvbmVEaXNhc3NlbWJsZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2Vt
Ymxlci5jcHAKaW5kZXggYTZmZjIyNzEwZjA5OWU4N2QxOWNmY2QyMTU4MDI3YmZiYjVlYWE4MS4u
NjhkZDY0Y2I3ODQ5NTU4ZGYzZDMwMjE0OWUwNmJkMDAyZjdhODQ5OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2Vt
Ymxlci5jcHAKQEAgLTQ0LDkgKzQ0LDYgQEAgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVQdHIsIHMKICNlbGlm
IENQVShYODZfNjQpCiAgICAgaWYgKGNzX29wZW4oQ1NfQVJDSF9YODYsIENTX01PREVfNjQsICZo
YW5kbGUpICE9IENTX0VSUl9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VsaWYgQ1BVKEFS
TV9UUkFESVRJT05BTCkKLSAgICBpZiAoY3Nfb3BlbihDU19BUkNIX0FSTSwgQ1NfTU9ERV9BUk0s
ICZoYW5kbGUpICE9IENTX0VSUl9PSykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VsaWYgQ1BV
KEFSTV9USFVNQjIpCiAgICAgaWYgKGNzX29wZW4oQ1NfQVJDSF9BUk0sIENTX01PREVfVEhVTUIs
ICZoYW5kbGUpICE9IENTX0VSUl9PSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKaW5kZXggOTVj
Y2NmYjM0ZDYzMDhmNTllMjAyNzllNzY0MmI3YmI5M2QzNDBkMS4uYTIyYzQwZDExMzMzM2ViNTQ0
YjllMjc1ZmQ5MjI0MzNhYjA5OWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCkBAIC04NSwxNyArODUsNiBAQCBTWU1CT0xfU1RS
SU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCiAgICAgImIgIiBMT0NBTF9SRUZF
UkVOQ0UoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKICk7CiAKLSNl
bGlmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQotYXNt
ICgKLSIudGV4dCIgIlxuIgotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgot
SU5MSU5FX0FSTV9GVU5DVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKQotU1lNQk9MX1NUUklO
RyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJzdWIgcjAsIHNwLCAjOCIg
IlxuIgotICAgICJiICIgTE9DQUxfUkVGRVJFTkNFKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKSAiXG4iCi0pOwotCiAjZWxpZiBDUFUoQVJNNjQpCiBhc20gKAogIi50ZXh0IiAi
XG4iCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAppbmRleCA2ZTc4NTlkNTI2ZjAw
ZGJmZGRlZTFiNjk4NWY4MWQzNjA2MjExOTVlLi5jODg3NmQwZGI4NjI3OTU5NmFkYmZiMjY5YzJl
MTBmZGQ0MjNhZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1h
dGhJQy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKQEAgLTY4
LDEzICs2OCw2IEBAIGNsYXNzIEpJVE1hdGhJQyB7CiAKICAgICBib29sIGdlbmVyYXRlSW5saW5l
KENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBib29sIHNo
b3VsZEVtaXRQcm9maWxpbmcgPSB0cnVlKQogICAgIHsKLSNpZiBDUFUoQVJNX1RSQURJVElPTkFM
KQotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIHRoZSBwcm9w
ZXIgZml4ZXMgYXJlIGxhbmRlZC4KLSAgICAgICAgLy8gW0FSTV0gRGlzYWJsZSBJbmxpbmUgQ2Fj
aGluZyBvbiBBUk12NyB0cmFkaXRpb25hbCB1bnRpbCBwcm9wZXIgZml4Ci0gICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk3NTkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotI2VuZGlmCi0KICAgICAgICAgc3RhdGUuZmFzdFBhdGhTdGFydCA9IGppdC5s
YWJlbCgpOwogICAgICAgICBzaXplX3Qgc3RhcnRTaXplID0gaml0Lm1fYXNzZW1ibGVyLmJ1ZmZl
cigpLmNvZGVTaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5j
cHAKaW5kZXggYTNlZTc0NzM3ZGE3M2JkZTJmNWFkYTcyZmZlM2ZlOWY0MTgxMDY5My4uYzUwMDlk
MjMxMWYwMmQyMzE0Njk2YTNiNjZlNzg3YWUyOWUxYzk0NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZWdpc3RlclNldC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVnaXN0ZXJTZXQgUmVn
aXN0ZXJTZXQ6OnJlc2VydmVkSGFyZHdhcmVSZWdpc3RlcnMoKQogI2Vsc2UKICAgICByZXR1cm4g
UmVnaXN0ZXJTZXQoQVJNNjRSZWdpc3RlcnM6OmxyKTsKICNlbmRpZiAvLyBQTEFURk9STShJT1Nf
RkFNSUxZKQotI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpCisj
ZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICByZXR1cm4gUmVnaXN0ZXJTZXQoQVJNUmVnaXN0ZXJz
OjpsciwgQVJNUmVnaXN0ZXJzOjpwYyk7CiAjZWxzZQogICAgIHJldHVybiB7IH07CkBAIC0xMzcs
MTUgKzEzNyw2IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJz
KCkKICNlbmRpZgogICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyMTApOwogICAgIHJlc3Vs
dC5zZXQoQVJNUmVnaXN0ZXJzOjpyMTEpOwotI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAg
ICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjQpOwotICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0
ZXJzOjpyNSk7Ci0gICAgcmVzdWx0LnNldChBUk1SZWdpc3RlcnM6OnI2KTsKLSAgICByZXN1bHQu
c2V0KEFSTVJlZ2lzdGVyczo6cjcpOwotICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyOCk7
Ci0gICAgcmVzdWx0LnNldChBUk1SZWdpc3RlcnM6OnI5KTsKLSAgICByZXN1bHQuc2V0KEFSTVJl
Z2lzdGVyczo6cjEwKTsKLSAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjExKTsKICNlbGlm
IENQVShBUk02NCkKICAgICAvLyBXZSBkb24ndCBpbmNsdWRlIExSIGluIHRoZSBzZXQgb2YgY2Fs
bGVlLXNhdmUgcmVnaXN0ZXJzIGV2ZW4gdGhvdWdoIGl0IHRlY2huaWNhbGx5IGJlbG9uZ3MKICAg
ICAvLyB0aGVyZS4gVGhpcyBpcyBiZWNhdXNlIHdlIHVzZSB0aGlzIHNldCB0byBkZXNjcmliZSB0
aGUgc2V0IG9mIHJlZ2lzdGVycyB0aGF0IG5lZWQgdG8gYmUgc2F2ZWQKQEAgLTIzNyw3ICsyMjgs
NiBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdp
c3RlcnMoKQogI2VuZGlmCiAjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTMCk7Ci0jZWxpZiBDUFUoQVJNX1RSQURJVElPTkFMKQogI2VsaWYgQ1BVKEFS
TTY0KQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKICAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTNyk7CkBAIC0yNzQsNyArMjY0LDYgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJT
ZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1M2KTsKICNlbmRpZgogI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi0jZWxpZiBDUFUoQVJNX1RSQURJ
VElPTkFMKQogI2VsaWYgQ1BVKEFSTTY0KQogICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0g
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICBBU1NFUlQoR1BSSW5mbzo6cmVn
Q1M5ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcAppbmRleCA2Njg2ZGYwMTE3YjBlNWZkN2RiMWUwMDg2MDY5YjEzYjc2YTRlYzg1
Li43MzExYTZkNTYzMzg5NWQxMjZjYTE0NDYzYzcxM2RkY2E3MDRhMmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEzMCwxNCArMTMwLDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIGFjdGlvbkZvckNlbGwoVk0mIHZtLCBKU0NlbGwqIGNlbGwpCiAKIHN0YXRp
YyBib29sIGZvcmNlSUNGYWlsdXJlKEV4ZWNTdGF0ZSopCiB7Ci0jaWYgQ1BVKEFSTV9UUkFESVRJ
T05BTCkKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIHRoZSBwcm9w
ZXIgZml4ZXMgYXJlIGxhbmRlZC4KLSAgICAvLyBbQVJNXSBEaXNhYmxlIElubGluZSBDYWNoaW5n
IG9uIEFSTXY3IHRyYWRpdGlvbmFsIHVudGlsIHByb3BlciBmaXgKLSAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NzU5Ci0gICAgcmV0dXJuIHRydWU7Ci0j
ZWxzZQogICAgIHJldHVybiBPcHRpb25zOjpmb3JjZUlDRmFpbHVyZSgpOwotI2VuZGlmCiB9CiAK
IEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZO
ZWVkZWQoVk0mIHZtLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVCbG9jayogY29k
ZUJsb2NrLCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggNmI5Yjc5
ODc2ZWNlYTY1NmM0MmE2NTk1NjRlYTU0ODA4MjcwMDNkZS4uMjg0ODVhOTVjMGE0NDU0MmZiNGVj
ZjRlNDlhNTIwMzc0ZDc1ZWIxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZmxpbmVBc21Db25maWcuaApAQCAtMzQsOSArMzQsNyBAQAogI2RlZmluZSBP
RkZMSU5FX0FTTV9DX0xPT1AgMQogI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMAogI2RlZmluZSBP
RkZMSU5FX0FTTV9YODZfV0lOIDAKLSNkZWZpbmUgT0ZGTElORV9BU01fQVJNIDAKICNkZWZpbmUg
T0ZGTElORV9BU01fQVJNdjcgMAotI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12N19UUkFESVRJT05B
TCAwCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTTY0IDAKICNkZWZpbmUgT0ZGTElORV9BU01fQVJN
NjRFIDAKICNkZWZpbmUgT0ZGTElORV9BU01fWDg2XzY0IDAKQEAgLTc5LDE5ICs3Nyw2IEBACiAj
ZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKICNlbmRpZgogCi0jaWYgQ1BVKEFSTV9UUkFESVRJ
T05BTCkKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNykKLSNkZWZpbmUgT0ZGTElORV9BU01f
QVJNdjdfVFJBRElUSU9OQUwgMQotI2RlZmluZSBPRkZMSU5FX0FTTV9BUk0gMAotI2Vsc2UKLSNk
ZWZpbmUgT0ZGTElORV9BU01fQVJNIDEKLSNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjdfVFJBRElU
SU9OQUwgMAotI2VuZGlmCi0jZWxzZQotI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12N19UUkFESVRJ
T05BTCAwCi0jZGVmaW5lIE9GRkxJTkVfQVNNX0FSTSAwCi0jZW5kaWYKLQogI2lmIENQVShYODZf
NjQpICYmICFDT01QSUxFUihNU1ZDKQogI2RlZmluZSBPRkZMSU5FX0FTTV9YODZfNjQgMQogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQppbmRleCA0MTZmM2JhNzNhOGU0YWY2MGNhZmUxMGYxMmNhZmUzZDZmMmYyMmUxLi40
M2Q1ZjczZDA2OGY5Zjc1MmJmY2M1OTUyMTNkOTkyNDM5Yzk3NmM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC03MSwx
MSArNzEsMTAgQEAKICMgIFRoZXkgYXJlIGNhbGxlZS1zYXZlIHJlZ2lzdGVycywgYW5kIGd1YXJh
bnRlZWQgdG8gYmUgZGlzdGluY3QgZnJvbSBhbGwgb3RoZXIKICMgIHJlZ2lzdGVycyBvbiBhbGwg
YXJjaGl0ZWN0dXJlcy4KICMKLSMgIC0gbHIgaXMgZGVmaW5lZCBvbiBub24tWDg2IGFyY2hpdGVj
dHVyZXMgKEFSTTY0LCBBUk02NEUsIEFSTXY3LCBBUk0sCi0jICBBUk12N19UUkFESVRJT05BTCwg
TUlQUyBhbmQgQ0xPT1ApIGFuZCBob2xkcyB0aGUgcmV0dXJuIFBDCisjICAtIGxyIGlzIGRlZmlu
ZWQgb24gbm9uLVg4NiBhcmNoaXRlY3R1cmVzIChBUk02NCwgQVJNNjRFLCBBUk12NywgTUlQUyBh
bmQgQ0xPT1ApCisjICBhbmQgaG9sZHMgdGhlIHJldHVybiBQQwogIwotIyAgLSBwYyBob2xkcyB0
aGUgKG5hdGl2ZSkgcHJvZ3JhbSBjb3VudGVyIG9uIDMyLWJpdHMgQVJNIGFyY2hpdGVjdHVyZXMg
KEFSTSwKLSMgIEFSTXY3LCBBUk12N19UUkFESVRJT05BTCkKKyMgIC0gcGMgaG9sZHMgdGhlIChu
YXRpdmUpIHByb2dyYW0gY291bnRlciBvbiAzMi1iaXRzIEFSTSBhcmNoaXRlY3R1cmVzIChBUk12
NykKICMKICMgIC0gdDAsIHQxLCB0MiwgdDMsIHQ0IGFuZCBvcHRpb25hbGx5IHQ1IGFyZSB0ZW1w
b3JhcnkgcmVnaXN0ZXJzIHRoYXQgY2FuIGdldCB0cmFzaGVkIG9uCiAjICBjYWxscywgYW5kIGFy
ZSBwYWlyd2lzZSBkaXN0aW5jdCByZWdpc3RlcnMuIHQ0IGhvbGRzIHRoZSBKUyBwcm9ncmFtIGNv
dW50ZXIsIHNvIHVzZQpAQCAtNjA4LDcgKzYwNyw3IEBAIG1hY3JvIGNoZWNrU3RhY2tQb2ludGVy
QWxpZ25tZW50KHRlbXBSZWcsIGxvY2F0aW9uKQogICAgICAgICAgICAgIyBDX0xPT1AgZG9lcyBu
b3QgbmVlZCB0aGUgYWxpZ25tZW50LCBhbmQgY2FuIHVzZSBhIGxpdHRsZSBwZXJmCiAgICAgICAg
ICAgICAjIGltcHJvdmVtZW50IGZyb20gYXZvaWRpbmcgdXNlbGVzcyB3b3JrLgogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwKKyAg
ICAgICAgICAgIGlmIEFSTXY3CiAgICAgICAgICAgICAgICAgIyBBUk0gY2FuJ3QgZG8gbG9naWNh
bCBvcHMgd2l0aCB0aGUgc3AgYXMgYSBzb3VyY2UKICAgICAgICAgICAgICAgICBtb3ZlIHNwLCB0
ZW1wUmVnCiAgICAgICAgICAgICAgICAgYW5kcCBTdGFja0FsaWdubWVudE1hc2ssIHRlbXBSZWcK
QEAgLTYyNSw3ICs2MjQsNyBAQCBlbmQKIAogaWYgQ19MT09QIG9yIEFSTTY0IG9yIEFSTTY0RSBv
ciBYODZfNjQgb3IgWDg2XzY0X1dJTgogICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50
ID0gMAotZWxzaWYgQVJNIG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIEFSTXY3CitlbHNpZiBBUk12
NwogICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50ID0gNwogZWxzaWYgTUlQUwogICAg
IGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50ID0gMQpAQCAtNjQxLDggKzY0MCw2IEBAIGNv
bnN0IFZNRW50cnlUb3RhbEZyYW1lU2l6ZSA9IChDYWxsZWVSZWdpc3RlclNhdmVTaXplICsgc2l6
ZW9mIFZNRW50cnlSZWNvcmQgKyBTCiAKIG1hY3JvIHB1c2hDYWxsZWVTYXZlcygpCiAgICAgaWYg
Q19MT09QIG9yIEFSTTY0IG9yIEFSTTY0RSBvciBYODZfNjQgb3IgWDg2XzY0X1dJTgotICAgIGVs
c2lmIEFSTSBvciBBUk12N19UUkFESVRJT05BTAotICAgICAgICBlbWl0ICJwdXNoIHtyNC1yMTB9
IgogICAgIGVsc2lmIEFSTXY3CiAgICAgICAgIGVtaXQgInB1c2gge3I0LXI2LCByOC1yMTF9Igog
ICAgIGVsc2lmIE1JUFMKQEAgLTY2Myw4ICs2NjAsNiBAQCBlbmQKIAogbWFjcm8gcG9wQ2FsbGVl
U2F2ZXMoKQogICAgIGlmIENfTE9PUCBvciBBUk02NCBvciBBUk02NEUgb3IgWDg2XzY0IG9yIFg4
Nl82NF9XSU4KLSAgICBlbHNpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwKLSAgICAgICAgZW1p
dCAicG9wIHtyNC1yMTB9IgogICAgIGVsc2lmIEFSTXY3CiAgICAgICAgIGVtaXQgInBvcCB7cjQt
cjYsIHI4LXIxMX0iCiAgICAgZWxzaWYgTUlQUwpAQCAtNjgyLDcgKzY3Nyw3IEBAIG1hY3JvIHBv
cENhbGxlZVNhdmVzKCkKIGVuZAogCiBtYWNybyBwcmVzZXJ2ZUNhbGxlclBDQW5kQ0ZSKCkKLSAg
ICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMK
KyAgICBpZiBDX0xPT1Agb3IgQVJNdjcgb3IgTUlQUwogICAgICAgICBwdXNoIGxyCiAgICAgICAg
IHB1c2ggY2ZyCiAgICAgZWxzaWYgWDg2IG9yIFg4Nl9XSU4gb3IgWDg2XzY0IG9yIFg4Nl82NF9X
SU4KQEAgLTY5Nyw3ICs2OTIsNyBAQCBlbmQKIAogbWFjcm8gcmVzdG9yZUNhbGxlclBDQW5kQ0ZS
KCkKICAgICBtb3ZlIGNmciwgc3AKLSAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFS
TXY3X1RSQURJVElPTkFMIG9yIE1JUFMKKyAgICBpZiBDX0xPT1Agb3IgQVJNdjcgb3IgTUlQUwog
ICAgICAgICBwb3AgY2ZyCiAgICAgICAgIHBvcCBscgogICAgIGVsc2lmIFg4NiBvciBYODZfV0lO
IG9yIFg4Nl82NCBvciBYODZfNjRfV0lOCkBAIC03MTEsNyArNzA2LDYgQEAgbWFjcm8gcHJlc2Vy
dmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKICAgICBzdWJwIENhbGxlZVNhdmVTcGFjZVN0YWNr
QWxpZ25lZCwgc3AKICAgICBpZiBDX0xPT1AKICAgICAgICAgc3RvcmVwIG1ldGFkYXRhVGFibGUs
IC1QdHJTaXplW2Nmcl0KLSAgICBlbHNpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwKICAgICBl
bHNpZiBBUk12NwogICAgICAgICBzdG9yZXAgbWV0YWRhdGFUYWJsZSwgLTRbY2ZyXQogICAgIGVs
c2lmIEFSTTY0IG9yIEFSTTY0RQpAQCAtNzM2LDcgKzczMCw2IEBAIGVuZAogbWFjcm8gcmVzdG9y
ZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogICAgIGlmIENfTE9PUAogICAgICAgICBsb2FkcCAt
UHRyU2l6ZVtjZnJdLCBtZXRhZGF0YVRhYmxlCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3X1RSQURJ
VElPTkFMCiAgICAgZWxzaWYgQVJNdjcKICAgICAgICAgbG9hZHAgLTRbY2ZyXSwgbWV0YWRhdGFU
YWJsZQogICAgIGVsc2lmIEFSTTY0IG9yIEFSTTY0RQpAQCAtODQzLDcgKzgzNiw3IEBAIG1hY3Jv
IHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSwg
dGVtcCkKIGVuZAogCiBtYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGlu
YXRpb25SZWdpc3RlcikKLSAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RS
QURJVElPTkFMIG9yIEFSTTY0IG9yIEFSTTY0RSBvciBNSVBTCisgICAgaWYgQ19MT09QIG9yIEFS
TXY3IG9yIEFSTTY0IG9yIEFSTTY0RSBvciBNSVBTCiAgICAgICAgICMgSW4gQ19MT09QIGNhc2Us
IHdlJ3JlIG9ubHkgcHJlc2VydmluZyB0aGUgYnl0ZWNvZGUgdlBDLgogICAgICAgICBtb3ZlIGxy
LCBkZXN0aW5hdGlvblJlZ2lzdGVyCiAgICAgZWxzaWYgWDg2IG9yIFg4Nl9XSU4gb3IgWDg2XzY0
IG9yIFg4Nl82NF9XSU4KQEAgLTg2Niw3ICs4NTksNyBAQCBtYWNybyBmdW5jdGlvblByb2xvZ3Vl
KCkKICAgICAgICAgcHVzaCBjZnIKICAgICBlbHNpZiBBUk02NCBvciBBUk02NEUKICAgICAgICAg
cHVzaCBjZnIsIGxyCi0gICAgZWxzaWYgQ19MT09QIG9yIEFSTSBvciBBUk12NyBvciBBUk12N19U
UkFESVRJT05BTCBvciBNSVBTCisgICAgZWxzaWYgQ19MT09QIG9yIEFSTXY3IG9yIE1JUFMKICAg
ICAgICAgcHVzaCBscgogICAgICAgICBwdXNoIGNmcgogICAgIGVuZApAQCAtODc4LDcgKzg3MSw3
IEBAIG1hY3JvIGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgICAgICBwb3AgY2ZyCiAgICAgZWxzaWYg
QVJNNjQgb3IgQVJNNjRFCiAgICAgICAgIHBvcCBsciwgY2ZyCi0gICAgZWxzaWYgQ19MT09QIG9y
IEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBNSVBTCisgICAgZWxzaWYgQ19M
T09QIG9yIEFSTXY3IG9yIE1JUFMKICAgICAgICAgcG9wIGNmcgogICAgICAgICBwb3AgbHIKICAg
ICBlbmQKQEAgLTk1MCw3ICs5NDMsNyBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVl
LCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQogICAgIGFkZGkgU3RhY2tBbGlnbm1l
bnQgLSAxICsgQ2FsbEZyYW1lSGVhZGVyU2l6ZSwgdGVtcDIKICAgICBhbmRpIH5TdGFja0FsaWdu
bWVudE1hc2ssIHRlbXAyCiAKLSAgICBpZiBBUk0gb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgQVJN
djcgb3IgQVJNNjQgb3IgQVJNNjRFIG9yIENfTE9PUCBvciBNSVBTCisgICAgaWYgQVJNdjcgb3Ig
QVJNNjQgb3IgQVJNNjRFIG9yIENfTE9PUCBvciBNSVBTCiAgICAgICAgIGFkZHAgQ2FsbGVyRnJh
bWVBbmRQQ1NpemUsIHNwCiAgICAgICAgIHN1YmkgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHRlbXAy
CiAgICAgICAgIGxvYWRwIENhbGxlckZyYW1lQW5kUEM6OnJldHVyblBDW2Nmcl0sIGxyCkBAIC0x
MTA5LDcgKzExMDIsNyBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9j
a1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAgICAgIGlmIEFSTTY0IG9y
IEFSTTY0RQogICAgICAgICAgICAgcG9wIGxyLCBjZnIKICAgICAgICAgICAgIHVudGFnUmV0dXJu
QWRkcmVzcyBzcAotICAgICAgICBlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9O
QUwgb3IgTUlQUworICAgICAgICBlbHNpZiBBUk12NyBvciBNSVBTCiAgICAgICAgICAgICBwb3Ag
Y2ZyCiAgICAgICAgICAgICBwb3AgbHIKICAgICAgICAgZWxzZQpAQCAtMTMyMiwxMCArMTMxNSw2
IEBAIGVsc2UKICAgICAgICAgX3JlbGF0aXZlUENCYXNlOgogICAgICAgICAgICAgbW92ZSBwYywg
cGNCYXNlCiAgICAgICAgICAgICBzdWJwIDMsIHBjQmFzZSAgICMgTmVlZCB0byBiYWNrIHVwIHRo
ZSBQQyBhbmQgc2V0IHRoZSBUaHVtYjIgYml0Ci0gICAgICAgIGVsc2lmIEFSTSBvciBBUk12N19U
UkFESVRJT05BTAotICAgICAgICBfcmVsYXRpdmVQQ0Jhc2U6Ci0gICAgICAgICAgICBtb3ZlIHBj
LCBwY0Jhc2UKLSAgICAgICAgICAgIHN1YnAgOCwgcGNCYXNlCiAgICAgICAgIGVsc2lmIE1JUFMK
ICAgICAgICAgICAgIGxhIF9yZWxhdGl2ZVBDQmFzZSwgcGNCYXNlCiAgICAgICAgICAgICBzZXRj
YWxscmVnIHBjQmFzZSAjIG5lZWRlZCB0byBzZXQgJHQ5IHRvIHRoZSByaWdodCB2YWx1ZSBmb3Ig
dGhlIC5jcGxvYWQgY3JlYXRlZCBieSB0aGUgbGFiZWwuCkBAIC0xMzU2LDcgKzEzNDUsNyBAQCBt
YWNybyBzZXRFbnRyeUFkZHJlc3NDb21tb24oaW5kZXgsIGxhYmVsLCBtYXApCiAgICAgICAgIHBj
cnRvYWRkciBsYWJlbCwgdDIKICAgICAgICAgbW92ZSBpbmRleCwgdDQKICAgICAgICAgc3RvcmVw
IHQyLCBbbWFwLCB0NCwgUHRyU2l6ZV0KLSAgICBlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdf
VFJBRElUSU9OQUwKKyAgICBlbHNpZiBBUk12NwogICAgICAgICBtdmxibCAobGFiZWwgLSBfcmVs
YXRpdmVQQ0Jhc2UpLCB0NAogICAgICAgICBhZGRwIHQ0LCB0MiwgdDQKICAgICAgICAgbW92ZSBp
bmRleCwgdDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggODFlMjAzYjI2OTQ1Y2MwNTlmMjRjYjQwMGE2
NjUzZmY4MzMzNTgzNC4uMjVhZmI5YjFhOThkNmYwOWQwNTkwM2U4MjlhNWI1MThiNDA2MWRmMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTg4LDcgKzg4LDcgQEAgbWFjcm8gZGlzcGF0Y2hBZnRlckNh
bGwoc2l6ZSwgb3AsIGRpc3BhdGNoKQogZW5kCiAKIG1hY3JvIGNDYWxsMihmdW5jdGlvbikKLSAg
ICBpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUworICAgIGlmIEFS
TXY3IG9yIE1JUFMKICAgICAgICAgY2FsbCBmdW5jdGlvbgogICAgIGVsc2lmIFg4NiBvciBYODZf
V0lOCiAgICAgICAgIHN1YnAgOCwgc3AKQEAgLTExMiw3ICsxMTIsNyBAQCBtYWNybyBjQ2FsbDJW
b2lkKGZ1bmN0aW9uKQogZW5kCiAKIG1hY3JvIGNDYWxsNChmdW5jdGlvbikKLSAgICBpZiBBUk0g
b3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUworICAgIGlmIEFSTXY3IG9yIE1J
UFMKICAgICAgICAgY2FsbCBmdW5jdGlvbgogICAgIGVsc2lmIFg4NiBvciBYODZfV0lOCiAgICAg
ICAgIHB1c2ggYTMKQEAgLTE3NCwxNSArMTc0LDExIEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2Fs
bCkKICAgICAgICAgYWRkcCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHNwLCB0Mwog
ICAgICAgICBhbmRwIH5TdGFja0FsaWdubWVudE1hc2ssIHQzCiAgICAgICAgIHN1YnAgdDMsIENh
bGxGcmFtZUFsaWduU2xvdHMgKiBTbG90U2l6ZSwgc3AKLSAgICBlbHNpZiBBUk0gb3IgQVJNdjcg
b3IgQVJNdjdfVFJBRElUSU9OQUwKKyAgICBlbHNpZiBBUk12NwogICAgICAgICBhZGRwIENhbGxG
cmFtZUFsaWduU2xvdHMgKiBTbG90U2l6ZSwgc3AsIHQzCiAgICAgICAgIGNscmJwIHQzLCBTdGFj
a0FsaWdubWVudE1hc2ssIHQzCi0gICAgICAgIGlmIEFSTXY3Ci0gICAgICAgICAgICBzdWJwIHQz
LCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHQzCi0gICAgICAgICAgICBtb3ZlIHQz
LCBzcAotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdWJwIHQzLCBDYWxsRnJhbWVBbGlnblNs
b3RzICogU2xvdFNpemUsIHNwCi0gICAgICAgIGVuZAorICAgICAgICBzdWJwIHQzLCBDYWxsRnJh
bWVBbGlnblNsb3RzICogU2xvdFNpemUsIHQzCisgICAgICAgIG1vdmUgdDMsIHNwCiAgICAgZW5k
CiAKICAgICBsb2FkaSBQcm90b0NhbGxGcmFtZTo6cGFkZGVkQXJnQ291bnRbcHJvdG9DYWxsRnJh
bWVdLCB0NApAQCAtMjAzOCw3ICsyMDM0LDcgQEAgbWFjcm8gbmF0aXZlQ2FsbFRyYW1wb2xpbmUo
ZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNr
LCB0MwogICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1hcmtlZEJsb2Nr
OjpGb290ZXI6Om1fdm1bdDNdLCB0MwogICAgICAgICBhZGRwIDgsIHNwCi0gICAgZWxzaWYgQVJN
IG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIENfTE9PUCBvciBNSVBTCisgICAgZWxz
aWYgQVJNdjcgb3IgQ19MT09QIG9yIE1JUFMKICAgICAgICAgaWYgTUlQUwogICAgICAgICAjIGNh
bGxpbmcgY29udmVudGlvbiBzYXlzIHRvIHNhdmUgc3RhY2sgc3BhY2UgZm9yIDQgZmlyc3QgcmVn
aXN0ZXJzIGluCiAgICAgICAgICMgYWxsIGNhc2VzLiBUbyBtYXRjaCBvdXIgMTYtYnl0ZSBhbGln
bm1lbnQsIHRoYXQgbWVhbnMgd2UgbmVlZCB0bwpAQCAtMjEwNSw3ICsyMTAxLDcgQEAgbWFjcm8g
aW50ZXJuYWxGdW5jdGlvbkNhbGxUcmFtcG9saW5lKG9mZnNldE9mRnVuY3Rpb24pCiAgICAgICAg
IGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MwogICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rl
ck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDNdLCB0MwogICAgICAgICBhZGRw
IDgsIHNwCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIENf
TE9PUCBvciBNSVBTCisgICAgZWxzaWYgQVJNdjcgb3IgQ19MT09QIG9yIE1JUFMKICAgICAgICAg
c3VicCA4LCBzcCAjIGFsaWduIHN0YWNrIHBvaW50ZXIKICAgICAgICAgIyB0MSBhbHJlYWR5IGNv
bnRhaW5zIHRoZSBDYWxsZWUuCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtLnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtLnJiCmluZGV4IDgyNDRiYmFjMmM4MDRmOTA2
ZmViYjM0YTRmMjkwNGFhM2Y3Y2I5N2MuLmIwYzMzNjI3ZDEwODcyMjc5ZTA4MTFjNGY0YTdlY2Fk
NDFlNWZjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fy
bS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm0ucmIKQEAgLTU5
LDE5ICs1OSw2IEBAIGRlZiBpc0FSTXY3CiAgICAgY2FzZSAkYWN0aXZlQmFja2VuZAogICAgIHdo
ZW4gIkFSTXY3IgogICAgICAgICB0cnVlCi0gICAgd2hlbiAiQVJNdjdfVFJBRElUSU9OQUwiLCAi
QVJNIgotICAgICAgICBmYWxzZQotICAgIGVsc2UKLSAgICAgICAgcmFpc2UgImJhZCB2YWx1ZSBm
b3IgJGFjdGl2ZUJhY2tlbmQ6ICN7JGFjdGl2ZUJhY2tlbmR9IgotICAgIGVuZAotZW5kCi0KLWRl
ZiBpc0FSTXY3VHJhZGl0aW9uYWwKLSAgICBjYXNlICRhY3RpdmVCYWNrZW5kCi0gICAgd2hlbiAi
QVJNdjdfVFJBRElUSU9OQUwiCi0gICAgICAgIHRydWUKLSAgICB3aGVuICJBUk12NyIsICJBUk0i
Ci0gICAgICAgIGZhbHNlCiAgICAgZWxzZQogICAgICAgICByYWlzZSAiYmFkIHZhbHVlIGZvciAk
YWN0aXZlQmFja2VuZDogI3skYWN0aXZlQmFja2VuZH0iCiAgICAgZW5kCkBAIC0xMDQsNyArOTEs
NyBAQCBkZWYgYXJtTW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0ZXIpCiAgICAgICAgICRhc20u
cHV0cyAibW92ICN7cmVnaXN0ZXIuYXJtT3BlcmFuZH0sIFwjI3t2YWx1ZX0iCiAgICAgZWxzaWYg
KH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgogICAgICAgICAkYXNtLnB1dHMgIm12biAj
e3JlZ2lzdGVyLmFybU9wZXJhbmR9LCBcIyN7fnZhbHVlfSIKLSAgICBlbHNpZiBpc0FSTXY3IG9y
IGlzQVJNdjdUcmFkaXRpb25hbAorICAgIGVsc2lmIGlzQVJNdjcKICAgICAgICAgJGFzbS5wdXRz
ICJtb3Z3ICN7cmVnaXN0ZXIuYXJtT3BlcmFuZH0sIFwjI3t2YWx1ZSAmIDB4ZmZmZn0iCiAgICAg
ICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9IDAKICAgICAgICAgICAgICRhc20ucHV0cyAi
bW92dCAje3JlZ2lzdGVyLmFybU9wZXJhbmR9LCBcIyN7KHZhbHVlID4+IDE2KSAmIDB4ZmZmZn0i
CkBAIC0zMDEsMjEgKzI4OCwxMSBAQCBkZWYgYXJtTG93ZXJMYWJlbFJlZmVyZW5jZXMobGlzdCkK
IGVuZAogCiBjbGFzcyBTZXF1ZW5jZQotICAgIGRlZiBnZXRNb2RpZmllZExpc3RBUk0KLSAgICAg
ICAgcmFpc2UgdW5sZXNzICRhY3RpdmVCYWNrZW5kID09ICJBUk0iCi0gICAgICAgIGdldE1vZGlm
aWVkTGlzdEFSTUNvbW1vbgotICAgIGVuZAotCiAgICAgZGVmIGdldE1vZGlmaWVkTGlzdEFSTXY3
CiAgICAgICAgIHJhaXNlIHVubGVzcyAkYWN0aXZlQmFja2VuZCA9PSAiQVJNdjciCiAgICAgICAg
IGdldE1vZGlmaWVkTGlzdEFSTUNvbW1vbgogICAgIGVuZAogCi0gICAgZGVmIGdldE1vZGlmaWVk
TGlzdEFSTXY3X1RSQURJVElPTkFMCi0gICAgICAgIHJhaXNlIHVubGVzcyAkYWN0aXZlQmFja2Vu
ZCA9PSAiQVJNdjdfVFJBRElUSU9OQUwiCi0gICAgICAgIGdldE1vZGlmaWVkTGlzdEFSTUNvbW1v
bgotICAgIGVuZAotCiAgICAgZGVmIGdldE1vZGlmaWVkTGlzdEFSTUNvbW1vbgogICAgICAgICBy
ZXN1bHQgPSBAbGlzdAogICAgICAgICByZXN1bHQgPSByaXNjTG93ZXJTaW1wbGVCcmFuY2hPcHMo
cmVzdWx0KQpAQCAtNDE0LDIxICszOTEsMTEgQEAgZGVmIGVtaXRBcm1UZXN0U2V0KG9wZXJhbmRz
LCBjb2RlKQogZW5kCiAKIGNsYXNzIEluc3RydWN0aW9uCi0gICAgZGVmIGxvd2VyQVJNCi0gICAg
ICAgIHJhaXNlIHVubGVzcyAkYWN0aXZlQmFja2VuZCA9PSAiQVJNIgotICAgICAgICBsb3dlckFS
TUNvbW1vbgotICAgIGVuZAotCiAgICAgZGVmIGxvd2VyQVJNdjcKICAgICAgICAgcmFpc2UgdW5s
ZXNzICRhY3RpdmVCYWNrZW5kID09ICJBUk12NyIKICAgICAgICAgbG93ZXJBUk1Db21tb24KICAg
ICBlbmQKIAotICAgIGRlZiBsb3dlckFSTXY3X1RSQURJVElPTkFMCi0gICAgICAgIHJhaXNlIHVu
bGVzcyAkYWN0aXZlQmFja2VuZCA9PSAiQVJNdjdfVFJBRElUSU9OQUwiCi0gICAgICAgIGxvd2Vy
QVJNQ29tbW9uCi0gICAgZW5kCi0KICAgICBkZWYgbG93ZXJBUk1Db21tb24KICAgICAgICAgY2Fz
ZSBvcGNvZGUKICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFkZGlzIiwgImFkZHBzIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgppbmRleCBmZjA2
NWQ1MzkyZGZjZGQzMjg1NmFhZDdmMDZhYzIxOGQ1MmQwOGMxLi5jNmNjNWFjMTZlMTIzZGM1ZTYw
NjkyZGE0ZmE4NDQ1YjI4MWFmOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9iYWNrZW5kcy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9iYWNrZW5kcy5yYgpAQCAtNDAsOSArNDAsNyBAQAogICAgICAiWDg2X1dJTiIsCiAgICAg
ICJYODZfNjQiLAogICAgICAiWDg2XzY0X1dJTiIsCi0gICAgICJBUk0iLAogICAgICAiQVJNdjci
LAotICAgICAiQVJNdjdfVFJBRElUSU9OQUwiLAogICAgICAiQVJNNjQiLAogICAgICAiQVJNNjRF
IiwKICAgICAgIk1JUFMiLApAQCAtNjAsOSArNTgsNyBAQAogICAgICAiWDg2X1dJTiIsCiAgICAg
ICJYODZfNjQiLAogICAgICAiWDg2XzY0X1dJTiIsCi0gICAgICJBUk0iLAogICAgICAiQVJNdjci
LAotICAgICAiQVJNdjdfVFJBRElUSU9OQUwiLAogICAgICAiQVJNNjQiLAogICAgICAiQVJNNjRF
IiwKICAgICAgIk1JUFMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW5saW5lQVNNLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaAppbmRleCAzM2MxYTJiNzAzYTM2Njg4YTVlMWMx
ODc2ZDRhYmI2YWYxMThmZTJhLi44Mzc5YTY5NjU5MTU0MzEyZmIxZmZlMzE3MDRjYWFiYzI1MjJk
MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9JbmxpbmVBU00uaApAQCAtOTMsNyArOTMsNyBAQAogI2RlZmluZSBMT0NBTF9MQUJF
TF9TVFJJTkcobmFtZSkgIi5MIiAjbmFtZQogI2VuZGlmCiAKLSNpZiAoQ1BVKEFSTV9UUkFESVRJ
T05BTCkgJiYgKGRlZmluZWQodGh1bWIyKSB8fCBkZWZpbmVkKF9fdGh1bWIyX18pIHx8IGRlZmlu
ZWQoX190aHVtYikgfHwgZGVmaW5lZChfX3RodW1iX18pKSkgfHwgQ1BVKEFSTV9USFVNQjIpCisj
aWYgQ1BVKEFSTV9USFVNQjIpCiAjZGVmaW5lIElOTElORV9BUk1fRlVOQ1RJT04obmFtZSkgIi50
aHVtYiIgIlxuIiAiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKG5hbWUpICJcbiIKICNl
bHNlCiAjZGVmaW5lIElOTElORV9BUk1fRlVOQ1RJT04obmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGUy
ZWI3NWJjZGIzM2E3MzEzNjQwMmRjZDAxMmRhMDc2M2ZlNjhkNmUuLmE2NjdmODRlZmFmNjU5OTQ3
M2M0ZDBmOGUzOTNiZDQ0ZGVkNmQxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtODEzLDEwICs4MTMsNiBA
QAogI2lmIChDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTTY0KSkgJiYgKFBMQVRGT1JNKElPU19G
QU1JTFkpIHx8IE9TKExJTlVYKSB8fCBPUyhGUkVFQlNEKSkKICNkZWZpbmUgRU5BQkxFX0RGR19K
SVQgMQogI2VuZGlmCi0vKiBFbmFibGUgdGhlIERGRyBKSVQgb24gQVJNLiAqLwotI2lmIENQVShB
Uk1fVFJBRElUSU9OQUwpCi0jZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKLSNlbmRpZgogLyogRW5h
YmxlIHRoZSBERkcgSklUIG9uIE1JUFMuICovCiAjaWYgQ1BVKE1JUFMpCiAjZGVmaW5lIEVOQUJM
RV9ERkdfSklUIDEKQEAgLTgzOSw3ICs4MzUsNyBAQAogI2RlZmluZSBFTkFCTEVfRkFTVF9UTFNf
SklUIDEKICNlbmRpZgogCi0jaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTV9U
SFVNQjIpIHx8IENQVShBUk02NCkgfHwgQ1BVKEFSTV9UUkFESVRJT05BTCkgfHwgQ1BVKE1JUFMp
CisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShB
Uk02NCkgfHwgQ1BVKE1JUFMpCiAjZGVmaW5lIEVOQUJMRV9NQVNNX1BST0JFIDEKICNlbHNlCiAj
ZGVmaW5lIEVOQUJMRV9NQVNNX1BST0JFIDAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355456</attachid>
            <date>2018-11-21 19:35:12 -0800</date>
            <delta_ts>2018-11-21 20:50:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191675-20181122123511.patch</filename>
            <type>text/plain</type>
            <size>195650</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
N2Q5ODk5MTFmMjU3NjU0ZmMwZGVjZDBiY2JhOTA4N2JlMjI4ODAzLi42ODM2MDYyZmZiMjNlZTE2
MDMyODUwZjExNjQxYjU0YmIwYmI5MGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxOC0xMS0yMSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIERyb3AgQVJNX1RSQURJVElPTkFMIHN1cHBvcnQg
aW4gTExJbnQsIGJhc2VsaW5lIEpJVCwgYW5kIERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugbm8gbG9uZ2VyIG1haW50YWluIEFSTV9UUkFESVRJ
T05BTCBMTEludCBhbmQgSklUIGluIEpTQy4gVGhpcyBhcmNoaXRlY3R1cmUgd2lsbCB1c2UKKyAg
ICAgICAgQ0xvb3AgaW5zdGVhZC4gVGhpcyBwYXRjaCByZW1vdmVzIEFSTV9UUkFESVRJT05BTCBz
dXBwb3J0IGluIExMSW50IGFuZCBKSVQuCisKKyAgICAgICAgRGlzY3Vzc2VkIGluIGh0dHBzOi8v
bGlzdHMud2Via2l0Lm9yZy9waXBlcm1haWwvd2Via2l0LWRldi8yMDE4LU9jdG9iZXIvMDMwMjIw
Lmh0bWwuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmxpbmtDb2RlKToKKyAg
ICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZHVtcENvZGUpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cGF0Y2hhYmxl
QnJhbmNoMzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6IFJlbW92ZWQu
CisgICAgICAgICogYXNzZW1ibGVyL1BlcmZMb2cuY3BwOgorICAgICAgICAqIGFzc2VtYmxlci9Q
ZXJmTG9nLmg6CisgICAgICAgICogYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oOgorICAgICAgICAo
SlNDOjpQcm9iZTo6Q1BVU3RhdGU6OnBjKToKKyAgICAgICAgKEpTQzo6UHJvYmU6OkNQVVN0YXRl
OjpmcCk6CisgICAgICAgIChKU0M6OlByb2JlOjpDUFVTdGF0ZTo6c3ApOgorICAgICAgICAqIGFz
c2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OmlzUEMpOgorICAgICAgICAoSlND
Ojp0ZXN0UHJvYmVNb2RpZmllc1N0YWNrUG9pbnRlcik6CisgICAgICAgIChKU0M6OnRlc3RQcm9i
ZU1vZGlmaWVzU3RhY2tWYWx1ZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5o
OgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnNpemVGb3JQcm9wZXJ0eUFjY2Vzcyk6Cisg
ICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6c2l6ZUZvclByb3BlcnR5UmVwbGFjZSk6CisgICAg
ICAgIChKU0M6OklubGluZUFjY2Vzczo6c2l6ZUZvckxlbmd0aEFjY2Vzcyk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGlzYXNzZW1ibGVyL0NhcHN0b25l
RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJsZSk6CisgICAg
ICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVs
cGVyczo6ZGVidWdDYWxsKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAg
ICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNl
dHVwQXJndW1lbnRzSW1wbCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cHJlcGFyZUZv
clRhaWxDYWxsU2xvdyk6CisgICAgICAgICogaml0L0NhbGxGcmFtZVNodWZmbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVGb3JUYWlsQ2FsbCk6CisgICAg
ICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOgorICAgICAgICAqIGppdC9KSVRNYXRo
SUMuaDoKKyAgICAgICAgKEpTQzo6aXNQcm9maWxlRW1wdHkpOgorICAgICAgICAqIGppdC9SZWdp
c3RlclNldC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpyZXNlcnZlZEhhcmR3YXJl
UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3Rl
cnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lz
dGVycyk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpmb3JjZUlD
RmFpbHVyZSk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChK
U0M6Om5hdGl2ZUZvckdlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBvZmZs
aW5lYXNtL2FybS5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOgorICAgICAg
ICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6
OmdlbmVyYXRlRW50ZXIpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpnZW5l
cmF0ZVJldHVybik6CisKIDIwMTgtMTEtMjEgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lA
c2xvd3N0YXJ0Lm9yZz4KIAogICAgICAgICBbSlNDXSBVc2UgUHJvdG9DYWxsRnJhbWU6Om51bWJl
ck9mUmVnaXN0ZXJzIGluc3RlYWQgb2YgcmF3IG51bWJlciBgNGAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYjY4ZDBhNjU3MDc0
ZDIwNDBkZGQ3M2RlZTVlYWQzMWE4NGJjNWVhYS4uMDAyZjdiMDlhNTdlYTFlZDdmNjM3YWVhYzdi
MGMzMGI0ZWVmMDU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMS0yMSAgWXVzdWtlIFN1
enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIERyb3Ag
QVJNX1RSQURJVElPTkFMIHN1cHBvcnQgaW4gTExJbnQsIGJhc2VsaW5lIEpJVCwgYW5kIERGRwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjc1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvSW5s
aW5lQVNNLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTgtMTEtMjEgIEFuZHkg
RXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQ3JlYXRlIGEgc29m
dC1saW5raW5nIGZpbGUgZm9yIFBhc3NLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBhYjg3MjU0MDJlMTBlY2FmMTM3YTdhZmQ4MmI5MTlmZWYyODJmOWYxLi43OWNhYjBi
OTc4YmI5YzhlYmNkY2M2NGNlMmM5M2IwOWMzNDk1M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0yNDAsOCArMjQwLDYgQEAgZWxzZSAoKQogICAgICAgICBzZXQoT0ZG
TElORV9BU01fQkFDS0VORCAiQVJNNjQiKQogICAgIGVsc2VpZiAoQVJNX1RIVU1CMl9ERVRFQ1RF
RCkKICAgICAgICAgc2V0KE9GRkxJTkVfQVNNX0JBQ0tFTkQgIkFSTXY3IikKLSAgICBlbHNlaWYg
KEFSTV9UUkFESVRJT05BTF9ERVRFQ1RFRCkKLSAgICAgICAgc2V0KE9GRkxJTkVfQVNNX0JBQ0tF
TkQgIkFSTXY3X1RSQURJVElPTkFMIikKICAgICBlbHNlaWYgKFdURl9DUFVfTUlQUykKICAgICAg
ICAgc2V0KE9GRkxJTkVfQVNNX0JBQ0tFTkQgIk1JUFMiKQogICAgIGVuZGlmICgpCkBAIC00MjQs
NyArNDIyLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBBUEkvT3BhcXVlSlNTdHJpbmcuaAogCiAgICAgYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVy
LmgKLSAgICBhc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgKICAgICBhc3NlbWJsZXIvQVJNdjdBc3Nl
bWJsZXIuaAogICAgIGFzc2VtYmxlci9BYm9ydFJlYXNvbi5oCiAgICAgYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtNDM2LDcgKzQzMyw2IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAog
ICAgIGFzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaAotICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCiAgICAgYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAogICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgK
ICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZWU0NTcxMWVlOGViNzMxNjQ4ZTI3YWVlNzcwYWI4OWE3MWRmMzY2ZC4u
YzI3N2ViZjE4OWZlZjE1MTFjNDk5ZGQ3Mjk4NWI3MjYzZDM4NjZiYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEyMTAsOSArMTIxMCw3IEBACiAJCTg2Q0M4NUExMEVFNzlBNDcw
MDI4ODY4MiAvKiBKSVRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkNDODVBMDBFRTc5QTQ3MDAyODg2ODIgLyogSklUSW5saW5lcy5oICov
OyB9OwogCQk4NkNDRUZERTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQ0VGREQwRjQxM0Y4OTAwRkQ3
RjlFIC8qIEpJVENvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NkQyMjIxQTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDIyMjE5MTY3RUY5NDQw
MDI0QzgwNCAvKiB0ZXN0YXBpLm1tICovOyB9OwotCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcg
LyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZEM0IyQzUxMDE1
NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMxMTAxNTZCREUw
MDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJODZEM0IyQzYxMDE1NkJERTAw
Mjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQzQjJDMjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9Bc3Nl
bWJsZXJBUk0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4NkQzQjNDMzEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1ZmZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IzQzExMDE1OUQ3RjAwMjg2
NUU3IC8qIExpbmtCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NkUxMTZCMTBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkUxMTZCMDBG
RTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZFM0M2MTIxNjdCQUJENzAwNkQ3NjBBIC8qIEpT
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
RTNDNjA2MTY3QkFCODcwMDZENzYwQSAvKiBKU1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtMzg3MCw3ICszODY4LDYgQEAKIAkJODZCNTgy
NkExNEQzNUQ1MTAwQTlDMzA2IC8qIFRpZXJlZE1NYXBBcnJheS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUaWVyZWRNTWFwQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODZCRjY0MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRyaW5zaWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNy
b0Fzc2VtYmxlckFSTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
YWNyb0Fzc2VtYmxlckFSTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QzU2
OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJNSVBTLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1JUFNBc3NlbWJsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZDQzg1QTAwRUU3OUE0NzAwMjg4NjgyIC8qIEpJ
VElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzg3OCwxMCArMzg3NSw3IEBACiAJCTg2
Q0M4NUMzMEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2Q0NFRkREMEY0MTNGODkwMEZEN0Y5RSAvKiBKSVRD
b2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvZGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8qIHRlc3Rh
cGkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IHRlc3RhcGkubW07
IHBhdGggPSBBUEkvdGVzdHMvdGVzdGFwaS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODZEM0IyQkYxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUk1Bc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1i
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFSTUFzc2VtYmxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkQzQjJDMTEwMTU2QkRFMDAyODY1RTcgLyog
QXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTg2RDNCMkMyMTAxNTZCREUwMDI4NjVFNyAvKiBNYWNyb0Fzc2Vt
YmxlckFSTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxl
ckFSTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkQzQjNDMTEwMTU5RDdGMDAy
ODY1RTcgLyogTGlua0J1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
aW5rQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RTExNkIwMEZFNzVB
QzgwMEI1MTJCQyAvKiBDb2RlTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29kZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RTND
NjA2MTY3QkFCODcwMDZENzYwQSAvKiBKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MjEs
OCArNzYxNSw2IEBACiAJCQkJMEYzNzMwOTAxQzBDRDcwQzAwMDUyQkZBIC8qIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZS5oICovLAogCQkJCUFENDEyQjM1MUU3QjU3QzAwMDhBRjE1NyAv
KiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oICovLAogCQkJCTg2NDA5MjNCMTU2
RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5oICovLAotCQkJCTg2RDNCMkJGMTAxNTZC
REUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwICovLAotCQkJCTg2RDNCMkMwMTAxNTZCREUw
MDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCAqLywKIAkJCQk4NkFERDE0MzBGRERFQTk4MDAwNkVF
QzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLywKIAkJCQk5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYg
LyogQXNzZW1ibGVyQnVmZmVyLmggKi8sCiAJCQkJODZEM0IyQzExMDE1NkJERTAwMjg2NUU3IC8q
IEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCAqLywKQEAgLTc2MzQsOCArNzYyNiw2
IEBACiAJCQkJODZEM0IzQzExMDE1OUQ3RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLywKIAkJ
CQkwRkVCM0VDRTE2MjM3RjY3MDBBQjY3QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwICovLAogCQkJ
CTg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovLAotCQkJCTg2
QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgKi8sCi0JCQkJ
ODZEM0IyQzIxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggKi8sCiAJCQkJ
RkVCMTM3NTYxQkIxMUVFRTAwQ0Q1MTAwIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuY3BwICovLAog
CQkJCTg2NDA5MjNDMTU2RUVEM0IwMDU2NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi8s
CiAJCQkJQTcyOTAwOUIxNzk3NkM2MDAwMzE3Mjk4IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuY3Bw
ICovLApAQCAtODM3MSw3ICs4MzYxLDYgQEAKIAkJCQk3OUEyMjgzNjFEMzVENzFGMDBEOEUwNjcg
LyogQXJpdGhQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4
NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgz
MUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODZE
M0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8qIEFy
cmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTkzNTcsNyArOTM0Niw2IEBACiAJCQkJOTgx
RUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVDb250ZXh0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNEI3MjNCODEyRDdEQTZGMDAzQkQ1RUQgLyogTWFjaGluZVN0YWNrTWFya2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTg2RDNCMkM2MTAxNTZCREUwMDI4NjVFNyAvKiBNYWNy
b0Fzc2VtYmxlckFSTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4
NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUREMTQ2
MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NjNCMjNFMDBGQzYxMTg5MDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAxYWQ5OWYwZTZl
NzRiNzc5MzBhNDZjYzA1OTI2MGZkMjI3OWI3YWQ1Li5jYmE0YzRiYTYwMDRmOTMwZDVjYTg1NjMz
MTBhNjI0M2UzNjQ0OWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC00MSwxMSAr
NDEsOSBAQCBBUEkvSlNXZWFrUHJpdmF0ZS5jcHAKIEFQSS9KU1dlYWtWYWx1ZS5jcHAKIEFQSS9P
cGFxdWVKU1N0cmluZy5jcHAKIAotYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAKIGFzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmNwcAogYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCi1hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0u
Y3BwCiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAKIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3LmNwcAogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTUyZjM3ZjY4MDk0NjA3ZDAwZmQyMmNmMzM2YTQw
OWJhYzcwYTJmNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw0MjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBVbml2
ZXJzaXR5IG9mIFN6ZWdlZAotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVU5JVkVSU0lUWSBPRiBTWkVHRUQgT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElP
TkFMKQotCi0jaW5jbHVkZSAiQVJNQXNzZW1ibGVyLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi0v
LyBQYXRjaGluZyBoZWxwZXJzCi0KLXZvaWQgQVJNQXNzZW1ibGVyOjpwYXRjaENvbnN0YW50UG9v
bExvYWQodm9pZCogbG9hZEFkZHIsIHZvaWQqIGNvbnN0UG9vbEFkZHIpCi17Ci0gICAgQVJNV29y
ZCAqbGRyID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4obG9hZEFkZHIpOwotICAgIEFSTVdv
cmQgZGlmZiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGNvbnN0UG9vbEFkZHIpIC0gbGRy
OwotICAgIEFSTVdvcmQgaW5kZXggPSAoKmxkciAmIDB4ZmZmKSA+PiAxOwotCi0gICAgQVNTRVJU
KGRpZmYgPj0gMSk7Ci0gICAgaWYgKGRpZmYgPj0gMiB8fCBpbmRleCA+IDApIHsKLSAgICAgICAg
ZGlmZiA9IChkaWZmICsgaW5kZXggLSAyKSAqIHNpemVvZihBUk1Xb3JkKTsKLSAgICAgICAgQVNT
RVJUKGRpZmYgPD0gMHhmZmYpOwotICAgICAgICAqbGRyID0gKCpsZHIgJiB+MHhmZmYpIHwgZGlm
ZjsKLSAgICB9IGVsc2UKLSAgICAgICAgKmxkciA9ICgqbGRyICYgfigweGZmZiB8IEFSTUFzc2Vt
Ymxlcjo6RGF0YVRyYW5zZmVyVXApKSB8IHNpemVvZihBUk1Xb3JkKTsKLX0KLQotLy8gSGFuZGxl
IGltbWVkaWF0ZXMKLQotQVJNV29yZCBBUk1Bc3NlbWJsZXI6OmdldE9wMihBUk1Xb3JkIGltbSkK
LXsKLSAgICBpbnQgcm9sOwotCi0gICAgaWYgKGltbSA8PSAweGZmKQotICAgICAgICByZXR1cm4g
T3AySW1tZWRpYXRlIHwgaW1tOwotCi0gICAgaWYgKChpbW0gJiAweGZmMDAwMDAwKSA9PSAwKSB7
Ci0gICAgICAgIGltbSA8PD0gODsKLSAgICAgICAgcm9sID0gODsKLSAgICB9Ci0gICAgZWxzZSB7
Ci0gICAgICAgIGltbSA9IChpbW0gPDwgMjQpIHwgKGltbSA+PiA4KTsKLSAgICAgICAgcm9sID0g
MDsKLSAgICB9Ci0KLSAgICBpZiAoKGltbSAmIDB4ZmYwMDAwMDApID09IDApIHsKLSAgICAgICAg
aW1tIDw8PSA4OwotICAgICAgICByb2wgKz0gNDsKLSAgICB9Ci0KLSAgICBpZiAoKGltbSAmIDB4
ZjAwMDAwMDApID09IDApIHsKLSAgICAgICAgaW1tIDw8PSA0OwotICAgICAgICByb2wgKz0gMjsK
LSAgICB9Ci0KLSAgICBpZiAoKGltbSAmIDB4YzAwMDAwMDApID09IDApIHsKLSAgICAgICAgaW1t
IDw8PSAyOwotICAgICAgICByb2wgKz0gMTsKLSAgICB9Ci0KLSAgICBpZiAoKGltbSAmIDB4MDBm
ZmZmZmYpID09IDApCi0gICAgICAgIHJldHVybiBPcDJJbW1lZGlhdGUgfCAoaW1tID4+IDI0KSB8
IChyb2wgPDwgOCk7Ci0KLSAgICByZXR1cm4gSW52YWxpZEltbWVkaWF0ZTsKLX0KLQotaW50IEFS
TUFzc2VtYmxlcjo6Z2VuSW50KGludCByZWcsIEFSTVdvcmQgaW1tLCBib29sIHBvc2l0aXZlKQot
ewotICAgIC8vIFN0ZXAxOiBTZWFyY2ggYSBub24taW1tZWRpYXRlIHBhcnQKLSAgICBBUk1Xb3Jk
IG1hc2s7Ci0gICAgQVJNV29yZCBpbW0xOwotICAgIEFSTVdvcmQgaW1tMjsKLSAgICBpbnQgcm9s
OwotCi0gICAgbWFzayA9IDB4ZmYwMDAwMDA7Ci0gICAgcm9sID0gODsKLSAgICB3aGlsZSgxKSB7
Ci0gICAgICAgIGlmICgoaW1tICYgbWFzaykgPT0gMCkgewotICAgICAgICAgICAgaW1tID0gKGlt
bSA8PCByb2wpIHwgKGltbSA+PiAoMzIgLSByb2wpKTsKLSAgICAgICAgICAgIHJvbCA9IDQgKyAo
cm9sID4+IDEpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcm9sICs9
IDI7Ci0gICAgICAgIG1hc2sgPj49IDI7Ci0gICAgICAgIGlmIChtYXNrICYgMHgzKSB7Ci0gICAg
ICAgICAgICAvLyByb2wgOAotICAgICAgICAgICAgaW1tID0gKGltbSA8PCA4KSB8IChpbW0gPj4g
MjQpOwotICAgICAgICAgICAgbWFzayA9IDB4ZmYwMDsKLSAgICAgICAgICAgIHJvbCA9IDI0Owot
ICAgICAgICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgICAgICAgICBpZiAoKGltbSAmIG1hc2sp
ID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgaW1tID0gKGltbSA8PCByb2wpIHwgKGltbSA+
PiAoMzIgLSByb2wpKTsKLSAgICAgICAgICAgICAgICAgICAgcm9sID0gKHJvbCA+PiAxKSAtIDg7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICByb2wgKz0gMjsKLSAgICAgICAgICAgICAgICBtYXNrID4+PSAyOwotICAgICAgICAg
ICAgICAgIGlmIChtYXNrICYgMHgzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
QVNTRVJUKChpbW0gJiAweGZmKSA9PSAwKTsKLQotICAgIGlmICgoaW1tICYgMHhmZjAwMDAwMCkg
PT0gMCkgewotICAgICAgICBpbW0xID0gT3AySW1tZWRpYXRlIHwgKChpbW0gPj4gMTYpICYgMHhm
ZikgfCAoKChyb2wgKyA0KSAmIDB4ZikgPDwgOCk7Ci0gICAgICAgIGltbTIgPSBPcDJJbW1lZGlh
dGUgfCAoKGltbSA+PiA4KSAmIDB4ZmYpIHwgKCgocm9sICsgOCkgJiAweGYpIDw8IDgpOwotICAg
IH0gZWxzZSBpZiAoaW1tICYgMHhjMDAwMDAwMCkgewotICAgICAgICBpbW0xID0gT3AySW1tZWRp
YXRlIHwgKChpbW0gPj4gMjQpICYgMHhmZikgfCAoKHJvbCAmIDB4ZikgPDwgOCk7Ci0gICAgICAg
IGltbSA8PD0gODsKLSAgICAgICAgcm9sICs9IDQ7Ci0KLSAgICAgICAgaWYgKChpbW0gJiAweGZm
MDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgICAgICBpbW0gPDw9IDg7Ci0gICAgICAgICAgICByb2wg
Kz0gNDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgoaW1tICYgMHhmMDAwMDAwMCkgPT0gMCkg
ewotICAgICAgICAgICAgaW1tIDw8PSA0OwotICAgICAgICAgICAgcm9sICs9IDI7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoKGltbSAmIDB4YzAwMDAwMDApID09IDApIHsKLSAgICAgICAgICAg
IGltbSA8PD0gMjsKLSAgICAgICAgICAgIHJvbCArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKChpbW0gJiAweDAwZmZmZmZmKSA9PSAwKQotICAgICAgICAgICAgaW1tMiA9IE9wMkltbWVk
aWF0ZSB8IChpbW0gPj4gMjQpIHwgKChyb2wgJiAweGYpIDw8IDgpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoKGltbSAmIDB4
ZjAwMDAwMDApID09IDApIHsKLSAgICAgICAgICAgIGltbSA8PD0gNDsKLSAgICAgICAgICAgIHJv
bCArPSAyOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChpbW0gJiAweGMwMDAwMDAwKSA9PSAw
KSB7Ci0gICAgICAgICAgICBpbW0gPDw9IDI7Ci0gICAgICAgICAgICByb2wgKz0gMTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGltbTEgPSBPcDJJbW1lZGlhdGUgfCAoKGltbSA+PiAyNCkgJiAweGZm
KSB8ICgocm9sICYgMHhmKSA8PCA4KTsKLSAgICAgICAgaW1tIDw8PSA4OwotICAgICAgICByb2wg
Kz0gNDsKLQotICAgICAgICBpZiAoKGltbSAmIDB4ZjAwMDAwMDApID09IDApIHsKLSAgICAgICAg
ICAgIGltbSA8PD0gNDsKLSAgICAgICAgICAgIHJvbCArPSAyOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKChpbW0gJiAweGMwMDAwMDAwKSA9PSAwKSB7Ci0gICAgICAgICAgICBpbW0gPDw9IDI7
Ci0gICAgICAgICAgICByb2wgKz0gMTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgoaW1tICYg
MHgwMGZmZmZmZikgPT0gMCkKLSAgICAgICAgICAgIGltbTIgPSBPcDJJbW1lZGlhdGUgfCAoaW1t
ID4+IDI0KSB8ICgocm9sICYgMHhmKSA8PCA4KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKHBvc2l0aXZlKSB7Ci0gICAgICAgIG1vdihyZWcs
IGltbTEpOwotICAgICAgICBvcnIocmVnLCByZWcsIGltbTIpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG12bihyZWcsIGltbTEpOwotICAgICAgICBiaWMocmVnLCByZWcsIGltbTIpOwotICAgIH0K
LQotICAgIHJldHVybiAxOwotfQotCi1BUk1Xb3JkIEFSTUFzc2VtYmxlcjo6Z2V0SW1tKEFSTVdv
cmQgaW1tLCBpbnQgdG1wUmVnLCBib29sIGludmVydCkKLXsKLSAgICBBUk1Xb3JkIHRtcDsKLQot
ICAgIC8vIERvIGl0IGJ5IDEgaW5zdHJ1Y3Rpb24KLSAgICB0bXAgPSBnZXRPcDIoaW1tKTsKLSAg
ICBpZiAodG1wICE9IEludmFsaWRJbW1lZGlhdGUpCi0gICAgICAgIHJldHVybiB0bXA7Ci0KLSAg
ICB0bXAgPSBnZXRPcDIofmltbSk7Ci0gICAgaWYgKHRtcCAhPSBJbnZhbGlkSW1tZWRpYXRlKSB7
Ci0gICAgICAgIGlmIChpbnZlcnQpCi0gICAgICAgICAgICByZXR1cm4gdG1wIHwgT3AySW52ZXJ0
ZWRJbW1lZGlhdGU7Ci0gICAgICAgIG12bih0bXBSZWcsIHRtcCk7Ci0gICAgICAgIHJldHVybiB0
bXBSZWc7Ci0gICAgfQotCi0gICAgcmV0dXJuIGVuY29kZUNvbXBsZXhJbW0oaW1tLCB0bXBSZWcp
OwotfQotCi12b2lkIEFSTUFzc2VtYmxlcjo6bW92ZUltbShBUk1Xb3JkIGltbSwgaW50IGRlc3Qp
Ci17Ci0gICAgQVJNV29yZCB0bXA7Ci0KLSAgICAvLyBEbyBpdCBieSAxIGluc3RydWN0aW9uCi0g
ICAgdG1wID0gZ2V0T3AyKGltbSk7Ci0gICAgaWYgKHRtcCAhPSBJbnZhbGlkSW1tZWRpYXRlKSB7
Ci0gICAgICAgIG1vdihkZXN0LCB0bXApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
dG1wID0gZ2V0T3AyKH5pbW0pOwotICAgIGlmICh0bXAgIT0gSW52YWxpZEltbWVkaWF0ZSkgewot
ICAgICAgICBtdm4oZGVzdCwgdG1wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGVu
Y29kZUNvbXBsZXhJbW0oaW1tLCBkZXN0KTsKLX0KLQotQVJNV29yZCBBUk1Bc3NlbWJsZXI6OmVu
Y29kZUNvbXBsZXhJbW0oQVJNV29yZCBpbW0sIGludCBkZXN0KQotewotI2lmIFdURl9BUk1fQVJD
SF9BVF9MRUFTVCg3KQotICAgIEFSTVdvcmQgdG1wID0gZ2V0SW1tMTZPcDIoaW1tKTsKLSAgICBp
ZiAodG1wICE9IEludmFsaWRJbW1lZGlhdGUpIHsKLSAgICAgICAgbW92dyhkZXN0LCB0bXApOwot
ICAgICAgICByZXR1cm4gZGVzdDsKLSAgICB9Ci0gICAgbW92dyhkZXN0LCBnZXRJbW0xNk9wMihp
bW0gJiAweGZmZmYpKTsKLSAgICBtb3Z0KGRlc3QsIGdldEltbTE2T3AyKGltbSA+PiAxNikpOwot
ICAgIHJldHVybiBkZXN0OwotI2Vsc2UKLSAgICAvLyBEbyBpdCBieSAyIGluc3RydWN0aW9uCi0g
ICAgaWYgKGdlbkludChkZXN0LCBpbW0sIHRydWUpKQotICAgICAgICByZXR1cm4gZGVzdDsKLSAg
ICBpZiAoZ2VuSW50KGRlc3QsIH5pbW0sIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIGRlc3Q7Ci0K
LSAgICBsZHJJbW1lZGlhdGUoZGVzdCwgaW1tKTsKLSAgICByZXR1cm4gZGVzdDsKLSNlbmRpZgot
fQotCi0vLyBNZW1vcnkgbG9hZC9zdG9yZSBoZWxwZXJzCi0KLXZvaWQgQVJNQXNzZW1ibGVyOjpk
YXRhVHJhbnNmZXIzMihEYXRhVHJhbnNmZXJUeXBlQSB0cmFuc2ZlclR5cGUsIFJlZ2lzdGVySUQg
c3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KQotewotICAgIGlmIChvZmZz
ZXQgPj0gMCkgewotICAgICAgICBpZiAob2Zmc2V0IDw9IDB4ZmZmKQotICAgICAgICAgICAgZHRy
VXAodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIG9mZnNldCk7Ci0gICAgICAgIGVsc2UgaWYg
KG9mZnNldCA8PSAweGZmZmZmKSB7Ci0gICAgICAgICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwg
YmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOwotICAgICAg
ICAgICAgZHRyVXAodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIChvZmZz
ZXQgJiAweGZmZikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZUltbShvZmZz
ZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAgICAgZHRyVXBSZWdpc3Rlcih0cmFuc2Zl
clR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIH0KLSAgICB9
IGVsc2UgewotICAgICAgICBpZiAob2Zmc2V0ID49IC0weGZmZikKLSAgICAgICAgICAgIGR0ckRv
d24odHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIC1vZmZzZXQpOwotICAgICAgICBlbHNlIGlm
IChvZmZzZXQgPj0gLTB4ZmZmZmYpIHsKLSAgICAgICAgICAgIHN1YihBUk1SZWdpc3RlcnM6OlMw
LCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAoLW9mZnNldCA+PiAxMikgfCAoMTAgPDwgOCkpOwotICAg
ICAgICAgICAgZHRyRG93bih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwg
KC1vZmZzZXQgJiAweGZmZikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZUlt
bShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAgICAgZHRyVXBSZWdpc3Rlcih0
cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLXZvaWQgQVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlcjMyKERhdGFU
cmFuc2ZlclR5cGVBIHRyYW5zZmVyVHlwZSwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkKLXsKLSAg
ICBBU1NFUlQoc2NhbGUgPj0gMCAmJiBzY2FsZSA8PSAzKTsKLSAgICBBUk1Xb3JkIG9wMiA9IGxz
bChpbmRleCwgc2NhbGUpOwotCi0gICAgaWYgKCFvZmZzZXQpIHsKLSAgICAgICAgZHRyVXBSZWdp
c3Rlcih0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgb3AyKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmIChvZmZzZXQgPD0gMHhmZmZmZiAmJiBvZmZzZXQgPj0gLTB4ZmZmZmYp
IHsKLSAgICAgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2UsIG9wMik7Ci0gICAgICAgIGRh
dGFUcmFuc2ZlcjMyKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCBvZmZz
ZXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbW92ZUltbShvZmZzZXQsIEFSTVJl
Z2lzdGVyczo6UzApOwotICAgIGFkZChBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMw
LCBvcDIpOwotICAgIGR0clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFS
TVJlZ2lzdGVyczo6UzApOwotfQotCi12b2lkIEFSTUFzc2VtYmxlcjo6ZGF0YVRyYW5zZmVyMTYo
RGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0
ZXJJRCBiYXNlLCBpbnQzMl90IG9mZnNldCkKLXsKLSAgICBpZiAob2Zmc2V0ID49IDApIHsKLSAg
ICAgICAgaWYgKG9mZnNldCA8PSAweGZmKQotICAgICAgICAgICAgaGFsZkR0clVwKHRyYW5zZmVy
VHlwZSwgc3JjRHN0LCBiYXNlLCBnZXRPcDJIYWxmKG9mZnNldCkpOwotICAgICAgICBlbHNlIGlm
IChvZmZzZXQgPD0gMHhmZmZmKSB7Ci0gICAgICAgICAgICBhZGQoQVJNUmVnaXN0ZXJzOjpTMCwg
YmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+PiA4KSB8ICgxMiA8PCA4KSk7Ci0gICAgICAg
ICAgICBoYWxmRHRyVXAodHJhbnNmZXJUeXBlLCBzcmNEc3QsIEFSTVJlZ2lzdGVyczo6UzAsIGdl
dE9wMkhhbGYob2Zmc2V0ICYgMHhmZikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
bW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAgICAgaGFsZkR0clVw
UmVnaXN0ZXIodHJhbnNmZXJUeXBlLCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG9mZnNldCA+PSAtMHhmZikKLSAg
ICAgICAgICAgIGhhbGZEdHJEb3duKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBnZXRPcDJI
YWxmKC1vZmZzZXQpKTsKLSAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID49IC0weGZmZmYpIHsKLSAg
ICAgICAgICAgIHN1YihBUk1SZWdpc3RlcnM6OlMwLCBiYXNlLCBPcDJJbW1lZGlhdGUgfCAoLW9m
ZnNldCA+PiA4KSB8ICgxMiA8PCA4KSk7Ci0gICAgICAgICAgICBoYWxmRHRyRG93bih0cmFuc2Zl
clR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgZ2V0T3AySGFsZigtb2Zmc2V0ICYgMHhm
ZikpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbW92ZUltbShvZmZzZXQsIEFSTVJl
Z2lzdGVyczo6UzApOwotICAgICAgICAgICAgaGFsZkR0clVwUmVnaXN0ZXIodHJhbnNmZXJUeXBl
LCBzcmNEc3QsIGJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci12b2lkIEFSTUFzc2VtYmxlcjo6YmFzZUluZGV4VHJhbnNmZXIxNihEYXRhVHJhbnNmZXJUeXBl
QiB0cmFuc2ZlclR5cGUsIFJlZ2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgaW5kZXgsIGludCBzY2FsZSwgaW50MzJfdCBvZmZzZXQpCi17Ci0gICAgaWYgKCFzY2Fs
ZSAmJiAhb2Zmc2V0KSB7Ci0gICAgICAgIGhhbGZEdHJVcFJlZ2lzdGVyKHRyYW5zZmVyVHlwZSwg
c3JjRHN0LCBiYXNlLCBpbmRleCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBUk1X
b3JkIG9wMiA9IGxzbChpbmRleCwgc2NhbGUpOwotCi0gICAgaWYgKG9mZnNldCA8PSAweGZmZmYg
JiYgb2Zmc2V0ID49IC0weGZmZmYpIHsKLSAgICAgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGJh
c2UsIG9wMik7Ci0gICAgICAgIGRhdGFUcmFuc2ZlcjE2KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBB
Uk1SZWdpc3RlcnM6OlMwLCBvZmZzZXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
bW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIGFkZChBUk1SZWdpc3RlcnM6
OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBvcDIpOwotICAgIGhhbGZEdHJVcFJlZ2lzdGVyKHRyYW5z
ZmVyVHlwZSwgc3JjRHN0LCBiYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKLX0KLQotdm9pZCBBUk1B
c3NlbWJsZXI6OmRhdGFUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9hdCB0cmFuc2Zl
clR5cGUsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZz
ZXQpCi17Ci0gICAgLy8gVkZQIGNhbm5vdCBkaXJlY3RseSBhY2Nlc3MgbWVtb3J5IHRoYXQgaXMg
bm90IGZvdXItYnl0ZS1hbGlnbmVkCi0gICAgaWYgKCEob2Zmc2V0ICYgMHgzKSkgewotICAgICAg
ICBpZiAob2Zmc2V0IDw9IDB4M2ZmICYmIG9mZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBkb3Vi
bGVEdHJVcCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgYmFzZSwgb2Zmc2V0ID4+IDIpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChvZmZzZXQgPD0gMHgzZmZmZiAm
JiBvZmZzZXQgPj0gMCkgewotICAgICAgICAgICAgYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGJhc2Us
IE9wMkltbWVkaWF0ZSB8IChvZmZzZXQgPj4gMTApIHwgKDExIDw8IDgpKTsKLSAgICAgICAgICAg
IGRvdWJsZUR0clVwKHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMwLCAob2Zm
c2V0ID4+IDIpICYgMHhmZik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgb2Zmc2V0ID0gLW9mZnNldDsKLQotICAgICAgICBpZiAob2Zmc2V0IDw9IDB4M2ZmICYmIG9m
ZnNldCA+PSAwKSB7Ci0gICAgICAgICAgICBkb3VibGVEdHJEb3duKHRyYW5zZmVyVHlwZSwgc3Jj
RHN0LCBiYXNlLCBvZmZzZXQgPj4gMik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKG9mZnNldCA8PSAweDNmZmZmICYmIG9mZnNldCA+PSAwKSB7Ci0gICAgICAg
ICAgICBzdWIoQVJNUmVnaXN0ZXJzOjpTMCwgYmFzZSwgT3AySW1tZWRpYXRlIHwgKG9mZnNldCA+
PiAxMCkgfCAoMTEgPDwgOCkpOwotICAgICAgICAgICAgZG91YmxlRHRyRG93bih0cmFuc2ZlclR5
cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgKG9mZnNldCA+PiAyKSAmIDB4ZmYpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7Ci0g
ICAgfQotCi0gICAgbW92ZUltbShvZmZzZXQsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIGFkZChB
Uk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBiYXNlKTsKLSAgICBkb3VibGVEdHJV
cCh0cmFuc2ZlclR5cGUsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7Ci19Ci0KLXZvaWQg
QVJNQXNzZW1ibGVyOjpiYXNlSW5kZXhUcmFuc2ZlckZsb2F0KERhdGFUcmFuc2ZlclR5cGVGbG9h
dCB0cmFuc2ZlclR5cGUsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgUmVn
aXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCkKLXsKLSAgICBhZGQoQVJN
UmVnaXN0ZXJzOjpTMSwgYmFzZSwgbHNsKGluZGV4LCBzY2FsZSkpOwotICAgIGRhdGFUcmFuc2Zl
ckZsb2F0KHRyYW5zZmVyVHlwZSwgc3JjRHN0LCBBUk1SZWdpc3RlcnM6OlMxLCBvZmZzZXQpOwot
fQotCi12b2lkIEFSTUFzc2VtYmxlcjo6cHJlcGFyZUV4ZWN1dGFibGVDb3B5KHZvaWQqIHRvKQot
ewotICAgIC8vIDY0LWJpdCBhbGlnbm1lbnQgaXMgcmVxdWlyZWQgZm9yIG5leHQgY29uc3RhbnQg
cG9vbCBhbmQgSklUIGNvZGUgYXMgd2VsbAotICAgIG1fYnVmZmVyLmZsdXNoV2l0aG91dEJhcnJp
ZXIodHJ1ZSk7Ci0KLSAgICBjaGFyKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9i
dWZmZXIuZGF0YSgpKTsKLSAgICBwdHJkaWZmX3QgZGVsdGEgPSByZWludGVycHJldF9jYXN0PGNo
YXIqPih0bykgLSBkYXRhOwotCi0gICAgZm9yIChKdW1wczo6SXRlcmF0b3IgaXRlciA9IG1fanVt
cHMuYmVnaW4oKTsgaXRlciAhPSBtX2p1bXBzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgLy8g
VGhlIGxhc3QgYml0IGlzIHNldCBpZiB0aGUgY29uc3RhbnQgbXVzdCBiZSBwbGFjZWQgb24gY29u
c3RhbnQgcG9vbC4KLSAgICAgICAgaW50IHBvcyA9IChpdGVyLT5tX29mZnNldCkgJiAofjB4MSk7
Ci0gICAgICAgIEFSTVdvcmQqIGxkckFkZHIgPSByZWludGVycHJldF9jYXN0X3B0cjxBUk1Xb3Jk
Kj4oZGF0YSArIHBvcyk7Ci0gICAgICAgIEFSTVdvcmQqIGFkZHIgPSBnZXRMZHJJbW1BZGRyZXNz
KGxkckFkZHIpOwotICAgICAgICBpZiAoKmFkZHIgIT0gSW52YWxpZEJyYW5jaFRhcmdldCkgewot
ICAgICAgICAgICAgaWYgKCEoaXRlci0+bV9vZmZzZXQgJiAxKSkgewotICAgICAgICAgICAgICAg
IGludHB0cl90IGRpZmZlcmVuY2UgPSByZWludGVycHJldF9jYXN0X3B0cjxBUk1Xb3JkKj4oZGF0
YSArICphZGRyKSAtIChsZHJBZGRyICsgRGVmYXVsdFByZWZldGNoT2Zmc2V0KTsKLQotICAgICAg
ICAgICAgICAgIGlmICgoZGlmZmVyZW5jZSA8PSBNYXhpbXVtQnJhbmNoT2Zmc2V0RGlzdGFuY2Ug
JiYgZGlmZmVyZW5jZSA+PSBNaW5pbXVtQnJhbmNoT2Zmc2V0RGlzdGFuY2UpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICpsZHJBZGRyID0gQiB8IGdldENvbmRpdGlvbmFsRmllbGQoKmxkckFkZHIp
IHwgKGRpZmZlcmVuY2UgJiBCcmFuY2hPZmZzZXRNYXNrKTsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
KmFkZHIgPSByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGRhdGEgKyBkZWx0YSArICphZGRyKTsK
LSAgICAgICAgfQotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBF
TkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDUwYjZkY2IyNDFjYTM1MWQ3ZjFkMGEzZTQ4M2M1ZDIwZDlmZGM4N2MuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BUk1Bc3NlbWJsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNTkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBVbml2ZXJzaXR5IG9mIFN6
ZWdlZAotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4KLSAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklW
RVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVOSVZF
UlNJVFkgT0YgU1pFR0VEIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBD
UFUoQVJNX1RSQURJVElPTkFMKQotCi0jaW5jbHVkZSAiQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0
YW50UG9vbC5oIgotI2luY2x1ZGUgIkpJVENvbXBpbGF0aW9uRWZmb3J0LmgiCi0jaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KLW5hbWVzcGFjZSBKU0MgewotCi0gICAgdHlwZWRlZiB1aW50MzJf
dCBBUk1Xb3JkOwotCi0gICAgbmFtZXNwYWNlIEFSTVJlZ2lzdGVycyB7Ci0KLSAgICAgICAgdHlw
ZWRlZiBlbnVtIDogaW50OF90IHsKLSAgICAgICAgICAgIHIwLAotICAgICAgICAgICAgcjEsCi0g
ICAgICAgICAgICByMiwKLSAgICAgICAgICAgIHIzLAotICAgICAgICAgICAgcjQsCi0gICAgICAg
ICAgICByNSwKLSAgICAgICAgICAgIHI2LAotICAgICAgICAgICAgcjcsCi0gICAgICAgICAgICBy
OCwKLSAgICAgICAgICAgIHI5LAotICAgICAgICAgICAgcjEwLAotICAgICAgICAgICAgZnAsCi0g
ICAgICAgICAgICBpcCwKLSAgICAgICAgICAgIHNwLAotICAgICAgICAgICAgbHIsCi0gICAgICAg
ICAgICBwYywKLQotICAgICAgICAgICAgLy8gUHNldWRvbnltcyBmb3Igc29tZSBvZiB0aGUgcmVn
aXN0ZXJzLgotICAgICAgICAgICAgUzAgPSByNiwKLSAgICAgICAgICAgIHIxMSA9IGZwLCAvLyBm
cmFtZSBwb2ludGVyCi0gICAgICAgICAgICByMTIgPSBpcCwgUzEgPSBpcCwKLSAgICAgICAgICAg
IHIxMyA9IHNwLAotICAgICAgICAgICAgcjE0ID0gbHIsCi0gICAgICAgICAgICByMTUgPSBwYywK
LSAgICAgICAgICAgIEludmFsaWRHUFJSZWcgPSAtMSwKLSAgICAgICAgfSBSZWdpc3RlcklEOwot
Ci0gICAgICAgIHR5cGVkZWYgZW51bSA6IGludDhfdCB7Ci0gICAgICAgICAgICBhcHNyLAotICAg
ICAgICAgICAgZnBzY3IKLSAgICAgICAgfSBTUFJlZ2lzdGVySUQ7Ci0KLSAgICAgICAgdHlwZWRl
ZiBlbnVtIDogaW50OF90IHsKLSAgICAgICAgICAgIGQwLAotICAgICAgICAgICAgZDEsCi0gICAg
ICAgICAgICBkMiwKLSAgICAgICAgICAgIGQzLAotICAgICAgICAgICAgZDQsCi0gICAgICAgICAg
ICBkNSwKLSAgICAgICAgICAgIGQ2LAotICAgICAgICAgICAgZDcsCi0gICAgICAgICAgICBkOCwK
LSAgICAgICAgICAgIGQ5LAotICAgICAgICAgICAgZDEwLAotICAgICAgICAgICAgZDExLAotICAg
ICAgICAgICAgZDEyLAotICAgICAgICAgICAgZDEzLAotICAgICAgICAgICAgZDE0LAotICAgICAg
ICAgICAgZDE1LAotI2lmIENQVShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotICAg
ICAgICAgICAgZDE2LAotICAgICAgICAgICAgZDE3LAotICAgICAgICAgICAgZDE4LAotICAgICAg
ICAgICAgZDE5LAotICAgICAgICAgICAgZDIwLAotICAgICAgICAgICAgZDIxLAotICAgICAgICAg
ICAgZDIyLAotICAgICAgICAgICAgZDIzLAotICAgICAgICAgICAgZDI0LAotICAgICAgICAgICAg
ZDI1LAotICAgICAgICAgICAgZDI2LAotICAgICAgICAgICAgZDI3LAotICAgICAgICAgICAgZDI4
LAotICAgICAgICAgICAgZDI5LAotICAgICAgICAgICAgZDMwLAotICAgICAgICAgICAgZDMxLAot
I2VuZGlmIC8vIENQVShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotICAgICAgICAg
ICAgSW52YWxpZEZQUlJlZyA9IC0xLAotICAgICAgICB9IEZQUmVnaXN0ZXJJRDsKLQotICAgIH0g
Ly8gbmFtZXNwYWNlIEFSTVJlZ2lzdGVycwotCi0gICAgY2xhc3MgQVJNQXNzZW1ibGVyIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgQVJNUmVnaXN0ZXJzOjpSZWdpc3RlcklEIFJlZ2lz
dGVySUQ7Ci0gICAgICAgIHR5cGVkZWYgQVJNUmVnaXN0ZXJzOjpTUFJlZ2lzdGVySUQgU1BSZWdp
c3RlcklEOwotICAgICAgICB0eXBlZGVmIEFSTVJlZ2lzdGVyczo6RlBSZWdpc3RlcklEIEZQUmVn
aXN0ZXJJRDsKLSAgICAgICAgdHlwZWRlZiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29s
PDIwNDgsIDQsIDQsIEFSTUFzc2VtYmxlcj4gQVJNQnVmZmVyOwotICAgICAgICB0eXBlZGVmIFNl
Z21lbnRlZFZlY3RvcjxBc3NlbWJsZXJMYWJlbCwgNjQ+IEp1bXBzOwotCi0gICAgICAgIEFSTUFz
c2VtYmxlcigpCi0gICAgICAgICAgICA6IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KDEp
Ci0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIEFSTUJ1ZmZlciYgYnVmZmVyKCkgeyBy
ZXR1cm4gbV9idWZmZXI7IH0KLQotICAgICAgICBzdGF0aWMgY29uc3RleHByIFJlZ2lzdGVySUQg
Zmlyc3RSZWdpc3RlcigpIHsgcmV0dXJuIEFSTVJlZ2lzdGVyczo6cjA7IH0KLSAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIGxhc3RSZWdpc3RlcigpIHsgcmV0dXJuIEFSTVJlZ2lz
dGVyczo6cjE1OyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZS
ZWdpc3RlcnMoKSB7IHJldHVybiBsYXN0UmVnaXN0ZXIoKSAtIGZpcnN0UmVnaXN0ZXIoKSArIDE7
IH0KLQotICAgICAgICBzdGF0aWMgY29uc3RleHByIFNQUmVnaXN0ZXJJRCBmaXJzdFNQUmVnaXN0
ZXIoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OmFwc3I7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBTUFJlZ2lzdGVySUQgbGFzdFNQUmVnaXN0ZXIoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6
OmZwc2NyOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZTUFJl
Z2lzdGVycygpIHsgcmV0dXJuIGxhc3RTUFJlZ2lzdGVyKCkgLSBmaXJzdFNQUmVnaXN0ZXIoKSAr
IDE7IH0KLQotICAgICAgICBzdGF0aWMgY29uc3RleHByIEZQUmVnaXN0ZXJJRCBmaXJzdEZQUmVn
aXN0ZXIoKSB7IHJldHVybiBBUk1SZWdpc3RlcnM6OmQwOyB9Ci0jaWYgQ1BVKEFSTV9ORU9OKSB8
fCBDUFUoQVJNX1ZGUF9WM19EMzIpCi0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRlBSZWdpc3Rl
cklEIGxhc3RGUFJlZ2lzdGVyKCkgeyByZXR1cm4gQVJNUmVnaXN0ZXJzOjpkMzE7IH0KLSNlbHNl
Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRlBSZWdpc3RlcklEIGxhc3RGUFJlZ2lzdGVyKCkg
eyByZXR1cm4gQVJNUmVnaXN0ZXJzOjpkMTU7IH0KLSNlbmRpZgotICAgICAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG51bWJlck9mRlBSZWdpc3RlcnMoKSB7IHJldHVybiBsYXN0RlBSZWdp
c3RlcigpIC0gZmlyc3RGUFJlZ2lzdGVyKCkgKyAxOyB9Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGdwck5hbWUoUmVnaXN0ZXJJRCBpZCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKGlkID49IGZpcnN0UmVnaXN0ZXIoKSAmJiBpZCA8PSBsYXN0UmVnaXN0ZXIoKSk7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgbmFtZUZvclJlZ2lzdGVyW251bWJlck9m
UmVnaXN0ZXJzKCldID0gewotICAgICAgICAgICAgICAgICJyMCIsICJyMSIsICJyMiIsICJyMyIs
Ci0gICAgICAgICAgICAgICAgInI0IiwgInI1IiwgInI2IiwgInI3IiwKLSAgICAgICAgICAgICAg
ICAicjgiLCAicjkiLCAicjEwIiwgImZwIiwKLSAgICAgICAgICAgICAgICAiaXAiLCAic3AiLCAi
bHIiLCAicGMiCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdp
c3RlcltpZF07Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc3ByTmFt
ZShTUFJlZ2lzdGVySUQgaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChpZCA+PSBm
aXJzdFNQUmVnaXN0ZXIoKSAmJiBpZCA8PSBsYXN0U1BSZWdpc3RlcigpKTsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBuYW1lRm9yUmVnaXN0ZXJbbnVtYmVyT2ZTUFJlZ2lz
dGVycygpXSA9IHsKLSAgICAgICAgICAgICAgICAiYXBzciIsICJmcHNjciIKLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW2lkXTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVnaXN0ZXJJRCBpZCkKLSAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGlkID49IGZpcnN0RlBSZWdpc3RlcigpICYmIGlk
IDw9IGxhc3RGUFJlZ2lzdGVyKCkpOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IG5hbWVGb3JSZWdpc3RlcltudW1iZXJPZkZQUmVnaXN0ZXJzKCldID0gewotICAgICAgICAg
ICAgICAgICJkMCIsICJkMSIsICJkMiIsICJkMyIsCi0gICAgICAgICAgICAgICAgImQ0IiwgImQ1
IiwgImQ2IiwgImQ3IiwKLSAgICAgICAgICAgICAgICAiZDgiLCAiZDkiLCAiZDEwIiwgImQxMSIs
Ci0gICAgICAgICAgICAgICAgImQxMiIsICJkMTMiLCAiZDE0IiwgImQxNSIsCi0jaWYgQ1BVKEFS
TV9ORU9OKSB8fCBDUFUoQVJNX1ZGUF9WM19EMzIpCi0gICAgICAgICAgICAgICAgImQxNiIsICJk
MTciLCAiZDE4IiwgImQxOSIsCi0gICAgICAgICAgICAgICAgImQyMCIsICJkMjEiLCAiZDIyIiwg
ImQyMyIsCi0gICAgICAgICAgICAgICAgImQyNCIsICJkMjUiLCAiZDI2IiwgImQyNyIsCi0gICAg
ICAgICAgICAgICAgImQyOCIsICJkMjkiLCAiZDMwIiwgImQzMSIKLSNlbmRpZiAvLyBDUFUoQVJN
X05FT04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW2lkXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFS
TSBjb25kaXRpb25hbCBjb25zdGFudHMKLSAgICAgICAgdHlwZWRlZiBlbnVtIHsKLSAgICAgICAg
ICAgIEVRID0gMHgwMDAwMDAwMCwgLy8gWmVybyAvIEVxdWFsLgotICAgICAgICAgICAgTkUgPSAw
eDEwMDAwMDAwLCAvLyBOb24temVybyAvIE5vdCBlcXVhbC4KLSAgICAgICAgICAgIENTID0gMHgy
MDAwMDAwMCwgLy8gVW5zaWduZWQgaGlnaGVyIG9yIHNhbWUuCi0gICAgICAgICAgICBDQyA9IDB4
MzAwMDAwMDAsIC8vIFVuc2lnbmVkIGxvd2VyLgotICAgICAgICAgICAgTUkgPSAweDQwMDAwMDAw
LCAvLyBOZWdhdGl2ZS4KLSAgICAgICAgICAgIFBMID0gMHg1MDAwMDAwMCwgLy8gUG9zaXRpdmUg
b3IgemVyby4KLSAgICAgICAgICAgIFZTID0gMHg2MDAwMDAwMCwgLy8gT3ZlcmZsb3dlZC4KLSAg
ICAgICAgICAgIFZDID0gMHg3MDAwMDAwMCwgLy8gTm90IG92ZXJmbG93ZWQuCi0gICAgICAgICAg
ICBISSA9IDB4ODAwMDAwMDAsIC8vIFVuc2lnbmVkIGhpZ2hlci4KLSAgICAgICAgICAgIExTID0g
MHg5MDAwMDAwMCwgLy8gVW5zaWduZWQgbG93ZXIgb3Igc2FtZS4KLSAgICAgICAgICAgIEdFID0g
MHhhMDAwMDAwMCwgLy8gU2lnbmVkIGdyZWF0ZXIgdGhhbiBvciBlcXVhbC4KLSAgICAgICAgICAg
IExUID0gMHhiMDAwMDAwMCwgLy8gU2lnbmVkIGxlc3MgdGhhbi4KLSAgICAgICAgICAgIEdUID0g
MHhjMDAwMDAwMCwgLy8gU2lnbmVkIGdyZWF0ZXIgdGhhbi4KLSAgICAgICAgICAgIExFID0gMHhk
MDAwMDAwMCwgLy8gU2lnbmVkIGxlc3MgdGhhbiBvciBlcXVhbC4KLSAgICAgICAgICAgIEFMID0g
MHhlMDAwMDAwMCAgLy8gVW5jb25kaXRpb25hbCAvIEFsd2F5cyBleGVjdXRlLgotICAgICAgICB9
IENvbmRpdGlvbjsKLQotICAgICAgICAvLyBBUk0gaW5zdHJ1Y3Rpb24gY29uc3RhbnRzCi0gICAg
ICAgIGVudW0gewotICAgICAgICAgICAgQU5EID0gKDB4MCA8PCAyMSksCi0gICAgICAgICAgICBF
T1IgPSAoMHgxIDw8IDIxKSwKLSAgICAgICAgICAgIFNVQiA9ICgweDIgPDwgMjEpLAotICAgICAg
ICAgICAgUlNCID0gKDB4MyA8PCAyMSksCi0gICAgICAgICAgICBBREQgPSAoMHg0IDw8IDIxKSwK
LSAgICAgICAgICAgIEFEQyA9ICgweDUgPDwgMjEpLAotICAgICAgICAgICAgU0JDID0gKDB4NiA8
PCAyMSksCi0gICAgICAgICAgICBSU0MgPSAoMHg3IDw8IDIxKSwKLSAgICAgICAgICAgIFRTVCA9
ICgweDggPDwgMjEpLAotICAgICAgICAgICAgVEVRID0gKDB4OSA8PCAyMSksCi0gICAgICAgICAg
ICBDTVAgPSAoMHhhIDw8IDIxKSwKLSAgICAgICAgICAgIENNTiA9ICgweGIgPDwgMjEpLAotICAg
ICAgICAgICAgT1JSID0gKDB4YyA8PCAyMSksCi0gICAgICAgICAgICBNT1YgPSAoMHhkIDw8IDIx
KSwKLSAgICAgICAgICAgIEJJQyA9ICgweGUgPDwgMjEpLAotICAgICAgICAgICAgTVZOID0gKDB4
ZiA8PCAyMSksCi0gICAgICAgICAgICBNVUwgPSAweDAwMDAwMDkwLAotICAgICAgICAgICAgTVVM
TCA9IDB4MDBjMDAwOTAsCi0gICAgICAgICAgICBWTU9WX0Y2NCA9IDB4MGViMDBiNDAsCi0gICAg
ICAgICAgICBWQUREX0Y2NCA9IDB4MGUzMDBiMDAsCi0gICAgICAgICAgICBWRElWX0Y2NCA9IDB4
MGU4MDBiMDAsCi0gICAgICAgICAgICBWU1VCX0Y2NCA9IDB4MGUzMDBiNDAsCi0gICAgICAgICAg
ICBWTVVMX0Y2NCA9IDB4MGUyMDBiMDAsCi0gICAgICAgICAgICBWQ01QX0Y2NCA9IDB4MGViNDBi
NDAsCi0gICAgICAgICAgICBWU1FSVF9GNjQgPSAweDBlYjEwYmMwLAotICAgICAgICAgICAgVkFC
U19GNjQgPSAweDBlYjAwYmMwLAotICAgICAgICAgICAgVk5FR19GNjQgPSAweDBlYjEwYjQwLAot
ICAgICAgICAgICAgU1RNREIgPSAweDA5MjAwMDAwLAotICAgICAgICAgICAgTERNSUEgPSAweDA4
YjAwMDAwLAotICAgICAgICAgICAgQiA9IDB4MGEwMDAwMDAsCi0gICAgICAgICAgICBCTCA9IDB4
MGIwMDAwMDAsCi0gICAgICAgICAgICBCWCA9IDB4MDEyZmZmMTAsCi0gICAgICAgICAgICBWTU9W
X1ZGUDY0ID0gMHgwYzQwMGExMCwKLSAgICAgICAgICAgIFZNT1ZfQVJNNjQgPSAweDBjNTAwYTEw
LAotICAgICAgICAgICAgVk1PVl9WRlAzMiA9IDB4MGUwMDBhMTAsCi0gICAgICAgICAgICBWTU9W
X0FSTTMyID0gMHgwZTEwMGExMCwKLSAgICAgICAgICAgIFZDVlRfRjY0X1MzMiA9IDB4MGViODBi
YzAsCi0gICAgICAgICAgICBWQ1ZUX1MzMl9GNjQgPSAweDBlYmQwYmMwLAotICAgICAgICAgICAg
VkNWVF9VMzJfRjY0ID0gMHgwZWJjMGJjMCwKLSAgICAgICAgICAgIFZDVlRfRjMyX0Y2NCA9IDB4
MGViNzBiYzAsCi0gICAgICAgICAgICBWQ1ZUX0Y2NF9GMzIgPSAweDBlYjcwYWMwLAotICAgICAg
ICAgICAgVk1SU19BUFNSID0gMHgwZWYxZmExMCwKLSAgICAgICAgICAgIENMWiA9IDB4MDE2ZjBm
MTAsCi0gICAgICAgICAgICBCS1BUID0gMHhlMTIwMDA3MCwKLSAgICAgICAgICAgIEJMWCA9IDB4
MDEyZmZmMzAsCi0jaWYgV1RGX0FSTV9BUkNIX0FUX0xFQVNUKDcpCi0gICAgICAgICAgICBNT1ZX
ID0gMHgwMzAwMDAwMCwKLSAgICAgICAgICAgIE1PVlQgPSAweDAzNDAwMDAwLAotI2VuZGlmCi0g
ICAgICAgICAgICBOT1AgPSAweGUxYTAwMDAwLAotICAgICAgICAgICAgRE1CX1NZID0gMHhmNTdm
ZjA1ZiwKLSAgICAgICAgICAgIERNQl9JU0hTVCA9IDB4ZjU3ZmYwNWEsCi0jaWYgSEFWRShBUk1f
SURJVl9JTlNUUlVDVElPTlMpCi0gICAgICAgICAgICBTRElWID0gMHgwNzEwZjAxMCwKLSAgICAg
ICAgICAgIFVESVYgPSAweDA3MzBmMDEwLAotI2VuZGlmCi0gICAgICAgIH07Ci0KLSAgICAgICAg
ZW51bSB7Ci0gICAgICAgICAgICBPcDJJbW1lZGlhdGUgPSAoMSA8PCAyNSksCi0gICAgICAgICAg
ICBJbW1lZGlhdGVGb3JIYWxmV29yZFRyYW5zZmVyID0gKDEgPDwgMjIpLAotICAgICAgICAgICAg
T3AySW52ZXJ0ZWRJbW1lZGlhdGUgPSAoMSA8PCAyNiksCi0gICAgICAgICAgICBTZXRDb25kaXRp
b25hbENvZGVzID0gKDEgPDwgMjApLAotICAgICAgICAgICAgT3AySXNSZWdpc3RlckFyZ3VtZW50
ID0gKDEgPDwgMjUpLAotICAgICAgICAgICAgLy8gRGF0YSB0cmFuc2ZlciBmbGFncy4KLSAgICAg
ICAgICAgIERhdGFUcmFuc2ZlclVwID0gKDEgPDwgMjMpLAotICAgICAgICAgICAgRGF0YVRyYW5z
ZmVyV3JpdGVCYWNrID0gKDEgPDwgMjEpLAotICAgICAgICAgICAgRGF0YVRyYW5zZmVyUG9zdFVw
ZGF0ZSA9ICgxIDw8IDI0KSwKLSAgICAgICAgICAgIERhdGFUcmFuc2ZlckxvYWQgPSAoMSA8PCAy
MCksCi0gICAgICAgICAgICBCeXRlRGF0YVRyYW5zZmVyID0gKDEgPDwgMjIpLAotICAgICAgICB9
OwotCi0gICAgICAgIGVudW0gRGF0YVRyYW5zZmVyVHlwZUEgewotICAgICAgICAgICAgTG9hZFVp
bnQzMiA9IDB4MDUwMDAwMDAgfCBEYXRhVHJhbnNmZXJMb2FkLAotICAgICAgICAgICAgTG9hZFVp
bnQ4ID0gMHgwNTQwMDAwMCB8IERhdGFUcmFuc2ZlckxvYWQsCi0gICAgICAgICAgICBTdG9yZVVp
bnQzMiA9IDB4MDUwMDAwMDAsCi0gICAgICAgICAgICBTdG9yZVVpbnQ4ID0gMHgwNTQwMDAwMCwK
LSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIERhdGFUcmFuc2ZlclR5cGVCIHsKLSAgICAgICAg
ICAgIExvYWRVaW50MTYgPSAweDAxMDAwMGIwIHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAgICAgICAg
ICAgIExvYWRJbnQxNiA9IDB4MDEwMDAwZjAgfCBEYXRhVHJhbnNmZXJMb2FkLAotICAgICAgICAg
ICAgTG9hZEludDggPSAweDAxMDAwMGQwIHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAgICAgICAgICAg
IFN0b3JlVWludDE2ID0gMHgwMTAwMDBiMCwKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIERh
dGFUcmFuc2ZlclR5cGVGbG9hdCB7Ci0gICAgICAgICAgICBMb2FkRmxvYXQgPSAweDBkMDAwYTAw
IHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAgICAgICAgICAgIExvYWREb3VibGUgPSAweDBkMDAwYjAw
IHwgRGF0YVRyYW5zZmVyTG9hZCwKLSAgICAgICAgICAgIFN0b3JlRmxvYXQgPSAweDBkMDAwYTAw
LAotICAgICAgICAgICAgU3RvcmVEb3VibGUgPSAweDBkMDAwYjAwLAotICAgICAgICB9OwotCi0g
ICAgICAgIC8vIE1hc2tzIG9mIEFSTSBpbnN0cnVjdGlvbnMKLSAgICAgICAgZW51bSB7Ci0gICAg
ICAgICAgICBCcmFuY2hPZmZzZXRNYXNrID0gMHgwMGZmZmZmZiwKLSAgICAgICAgICAgIENvbmRp
dGlvbmFsRmllbGRNYXNrID0gMHhmMDAwMDAwMCwKLSAgICAgICAgICAgIERhdGFUcmFuc2Zlck9m
ZnNldE1hc2sgPSAweGZmZiwKLSAgICAgICAgfTsKLQotICAgICAgICBlbnVtIHsKLSAgICAgICAg
ICAgIE1pbmltdW1CcmFuY2hPZmZzZXREaXN0YW5jZSA9IC0weDAwODAwMDAwLAotICAgICAgICAg
ICAgTWF4aW11bUJyYW5jaE9mZnNldERpc3RhbmNlID0gMHgwMDdmZmZmZiwKLSAgICAgICAgfTsK
LQotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIHBhZEZvckFsaWduOCAgPSAweDAwLAotICAg
ICAgICAgICAgcGFkRm9yQWxpZ24xNiA9IDB4MDAwMCwKLSAgICAgICAgICAgIHBhZEZvckFsaWdu
MzIgPSAweGUxMmZmZjdmIC8vICdia3B0IDB4ZmZmZicgaW5zdHJ1Y3Rpb24uCi0gICAgICAgIH07
Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgSW52YWxpZEltbWVkaWF0ZSA9IDB4ZjAw
MDAwMDA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBBUk1Xb3JkIEludmFsaWRCcmFuY2hUYXJnZXQg
PSAweGZmZmZmZmZmOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IERlZmF1bHRQcmVmZXRjaE9m
ZnNldCA9IDI7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgQmx4SW5zdHJ1Y3Rpb25N
YXNrID0gMHgwMTJmZmYzMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgTGRyT3JBZGRJ
bnN0cnVjdGlvbk1hc2sgPSAweDBmZjAwMDAwOwotICAgICAgICBzdGF0aWMgY29uc3QgQVJNV29y
ZCBMZHJQY0ltbWVkaWF0ZUluc3RydWN0aW9uTWFzayA9IDB4MGY3ZjAwMDA7Ci0KLSAgICAgICAg
c3RhdGljIGNvbnN0IEFSTVdvcmQgQWRkSW1tZWRpYXRlSW5zdHJ1Y3Rpb24gPSAweDAyODAwMDAw
OwotICAgICAgICBzdGF0aWMgY29uc3QgQVJNV29yZCBCbHhJbnN0cnVjdGlvbiA9IDB4MDEyZmZm
MzA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBBUk1Xb3JkIExkckltbWVkaWF0ZUluc3RydWN0aW9u
ID0gMHgwNTkwMDAwMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IEFSTVdvcmQgTGRyUGNJbW1lZGlh
dGVJbnN0cnVjdGlvbiA9IDB4MDUxZjAwMDA7Ci0KLSAgICAgICAgLy8gSW5zdHJ1Y3Rpb24gZm9y
bWF0aW5nCi0KLSAgICAgICAgdm9pZCBlbWl0SW5zdHJ1Y3Rpb24oQVJNV29yZCBvcCwgaW50IHJk
LCBpbnQgcm4sIEFSTVdvcmQgb3AyKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoKChv
cDIgJiB+T3AySW1tZWRpYXRlKSA8PSAweGZmZikgfHwgKCgob3AyICYgfkltbWVkaWF0ZUZvckhh
bGZXb3JkVHJhbnNmZXIpIDw9IDB4ZmZmKSkpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50
KG9wIHwgUk4ocm4pIHwgUkQocmQpIHwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
ZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKEFSTVdvcmQgb3AsIGludCBkZCwgaW50IGRu
LCBpbnQgZG0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCgoZGQgPj0gMCAmJiBkZCA8
PSAzMSkgJiYgKGRuID49IDAgJiYgZG4gPD0gMzEpICYmIChkbSA+PSAwICYmIGRtIDw9IDMxKSk7
Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQob3AgfCAoKGRkICYgMHhmKSA8PCAxMikgfCAo
KGRkICYgMHgxMCkgPDwgKDIyIC0gNCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAoKGRuICYgMHhmKSA8PCAxNikgfCAoKGRuICYgMHgxMCkgPDwgKDcgLSA0KSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IChkbSAmIDB4ZikgfCAoKGRtICYgMHgxMCkgPDwgKDUg
LSA0KSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBlbWl0U2luZ2xlUHJlY2lzaW9uSW5z
dHJ1Y3Rpb24oQVJNV29yZCBvcCwgaW50IHNkLCBpbnQgc24sIGludCBzbSkKLSAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKChzZCA+PSAwICYmIHNkIDw9IDMxKSAmJiAoc24gPj0gMCAmJiBz
biA8PSAzMSkgJiYgKHNtID49IDAgJiYgc20gPD0gMzEpKTsKLSAgICAgICAgICAgIG1fYnVmZmVy
LnB1dEludChvcCB8ICgoc2QgPj4gMSkgPDwgMTIpIHwgKChzZCAmIDB4MSkgPDwgMjIpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNuID4+IDEpIDw8IDE2KSB8ICgoc24gJiAw
eDEpIDw8IDcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc20gPj4gMSkgfCAo
KHNtICYgMHgxKSA8PCA1KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGJpdEFuZChpbnQg
cmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEFORCwgcmQsIHJuLCBv
cDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBiaXRBbmRzKGludCByZCwgaW50IHJuLCBB
Uk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVt
aXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQU5EIHwgU2V0Q29uZGl0aW9uYWxDb2Rlcywg
cmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBlb3IoaW50IHJkLCBpbnQg
cm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBFT1IsIHJkLCBybiwgb3AyKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZvaWQgZW9ycyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIs
IENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rp
b24odG9BUk1Xb3JkKGNjKSB8IEVPUiB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3Ay
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgc3ViKGludCByZCwgaW50IHJuLCBBUk1Xb3Jk
IG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0
cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgU1VCLCByZCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIHN1YnMoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24g
Y2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29y
ZChjYykgfCBTVUIgfCBTZXRDb25kaXRpb25hbENvZGVzLCByZCwgcm4sIG9wMik7Ci0gICAgICAg
IH0KLQotICAgICAgICB2b2lkIHJzYihpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRp
dGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9B
Uk1Xb3JkKGNjKSB8IFJTQiwgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9p
ZCByc2JzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgUlNC
IHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCBhZGQoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBB
TCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykg
fCBBREQsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYWRkcyhpbnQg
cmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IEFERCB8IFNldENvbmRp
dGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYWRj
KGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQURDLCByZCwg
cm4sIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGFkY3MoaW50IHJkLCBpbnQgcm4s
IEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBBREMgfCBTZXRDb25kaXRpb25hbENvZGVz
LCByZCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHNiYyhpbnQgcmQsIGlu
dCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFNCQywgcmQsIHJuLCBvcDIpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBzYmNzKGludCByZCwgaW50IHJuLCBBUk1Xb3JkIG9w
MiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVj
dGlvbih0b0FSTVdvcmQoY2MpIHwgU0JDIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIHJuLCBv
cDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCByc2MoaW50IHJkLCBpbnQgcm4sIEFSTVdv
cmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdElu
c3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBSU0MsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZvaWQgcnNjcyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlv
biBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1X
b3JkKGNjKSB8IFJTQyB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgdHN0KGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBj
YyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3Jk
KGNjKSB8IFRTVCB8IFNldENvbmRpdGlvbmFsQ29kZXMsIDAsIHJuLCBvcDIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCB0ZXEoaW50IHJuLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0g
QUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2Mp
IHwgVEVRIHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgMCwgcm4sIG9wMik7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIGNtcChpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
LSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBD
TVAgfCBTZXRDb25kaXRpb25hbENvZGVzLCAwLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgY21uKGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IENNTiB8
IFNldENvbmRpdGlvbmFsQ29kZXMsIDAsIHJuLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dm9pZCBvcnIoaW50IHJkLCBpbnQgcm4sIEFSTVdvcmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkK
LSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBP
UlIsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgb3JycyhpbnQgcmQs
IGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE9SUiB8IFNldENvbmRpdGlv
bmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbW92KGlu
dCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IE1PViwgcmQsIEFSTVJlZ2lzdGVy
czo6cjAsIG9wMik7Ci0gICAgICAgIH0KLQotI2lmIFdURl9BUk1fQVJDSF9BVF9MRUFTVCg3KQot
ICAgICAgICB2b2lkIG1vdncoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCgob3AyIHwgMHhmMGZmZikgPT0gMHhmMGZm
Zik7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IE1PVlcgfCBS
RChyZCkgfCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtb3Z0KGludCByZCwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQoKG9wMiB8IDB4ZjBmZmYpID09IDB4ZjBmZmYpOwotICAgICAgICAgICAgbV9idWZmZXIucHV0
SW50KHRvQVJNV29yZChjYykgfCBNT1ZUIHwgUkQocmQpIHwgb3AyKTsKLSAgICAgICAgfQotI2Vu
ZGlmCi0KLSAgICAgICAgdm9pZCBtb3ZzKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBj
YyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3Jk
KGNjKSB8IE1PViB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBBUk1SZWdpc3RlcnM6OnIwLCBv
cDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBiaWMoaW50IHJkLCBpbnQgcm4sIEFSTVdv
cmQgb3AyLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdElu
c3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBCSUMsIHJkLCBybiwgb3AyKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZvaWQgYmljcyhpbnQgcmQsIGludCBybiwgQVJNV29yZCBvcDIsIENvbmRpdGlv
biBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1X
b3JkKGNjKSB8IEJJQyB8IFNldENvbmRpdGlvbmFsQ29kZXMsIHJkLCBybiwgb3AyKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgbXZuKGludCByZCwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBj
YyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3Jk
KGNjKSB8IE1WTiwgcmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7Ci0gICAgICAgIH0KLQotICAg
ICAgICB2b2lkIG12bnMoaW50IHJkLCBBUk1Xb3JkIG9wMiwgQ29uZGl0aW9uIGNjID0gQUwpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgTVZO
IHwgU2V0Q29uZGl0aW9uYWxDb2RlcywgcmQsIEFSTVJlZ2lzdGVyczo6cjAsIG9wMik7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2b2lkIG11bChpbnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRp
b24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJN
V29yZChjYykgfCBNVUwgfCBSTihyZCkgfCBSUyhybikgfCBSTShybSkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCBtdWxzKGludCByZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9
IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNj
KSB8IE1VTCB8IFNldENvbmRpdGlvbmFsQ29kZXMgfCBSTihyZCkgfCBSUyhybikgfCBSTShybSkp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtdWxsKGludCByZGhpLCBpbnQgcmRsbywgaW50
IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBt
X2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IE1VTEwgfCBSTihyZGhpKSB8IFJEKHJkbG8p
IHwgUlMocm4pIHwgUk0ocm0pKTsKLSAgICAgICAgfQotCi0jaWYgSEFWRShBUk1fSURJVl9JTlNU
UlVDVElPTlMpCi0gICAgICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KLSAgICAgICAgdm9pZCBz
ZGl2KGludCByZCwgaW50IHJuLCBpbnQgcm0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KGRhdGFzaXplID09IDMyLCAic2RpdiBkYXRhc2l6
ZSBtdXN0IGJlIDMyIGZvciBhcm12N3MiKTsKLSAgICAgICAgICAgIEFTU0VSVChyZCAhPSBBUk1S
ZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVChybiAhPSBBUk1SZWdpc3RlcnM6OnBj
KTsKLSAgICAgICAgICAgIEFTU0VSVChybSAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAg
ICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgU0RJViB8IFJOKHJkKSB8IFJNKHJu
KSB8IFJTKHJtKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHVkaXYoaW50IHJkLCBpbnQg
cm4sIGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFT
U0VSVChyZCAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVChybiAhPSBB
Uk1SZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVChybSAhPSBBUk1SZWdpc3RlcnM6
OnBjKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludCh0b0FSTVdvcmQoY2MpIHwgVURJViB8
IFJOKHJkKSB8IFJNKHJuKSB8IFJTKHJtKSk7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAg
IHZvaWQgdm1vdl9mNjQoaW50IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3Jk
KGNjKSB8IFZNT1ZfRjY0LCBkZCwgMCwgZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2
YWRkX2Y2NChpbnQgZGQsIGludCBkbiwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29y
ZChjYykgfCBWQUREX0Y2NCwgZGQsIGRuLCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lk
IHZkaXZfZjY0KGludCBkZCwgaW50IGRuLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1X
b3JkKGNjKSB8IFZESVZfRjY0LCBkZCwgZG4sIGRtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgdnN1Yl9mNjQoaW50IGRkLCBpbnQgZG4sIGludCBkbSwgQ29uZGl0aW9uIGNjID0gQUwpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FS
TVdvcmQoY2MpIHwgVlNVQl9GNjQsIGRkLCBkbiwgZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAg
dm9pZCB2bXVsX2Y2NChpbnQgZGQsIGludCBkbiwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkK
LSAgICAgICAgewotICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRv
QVJNV29yZChjYykgfCBWTVVMX0Y2NCwgZGQsIGRuLCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2b2lkIHZjbXBfZjY0KGludCBkZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29y
ZChjYykgfCBWQ01QX0Y2NCwgZGQsIDAsIGRtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
dnNxcnRfZjY0KGludCBkZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykg
fCBWU1FSVF9GNjQsIGRkLCAwLCBkbSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZhYnNf
ZjY0KGludCBkZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWQUJT
X0Y2NCwgZGQsIDAsIGRtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdm5lZ19mNjQoaW50
IGRkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBl
bWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IFZORUdfRjY0LCBk
ZCwgMCwgZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBsZHJJbW1lZGlhdGUoaW50IHJk
LCBBUk1Xb3JkIGltbSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1fYnVmZmVyLnB1dEludFdpdGhDb25zdGFudEludCh0b0FSTVdvcmQoY2MpIHwgTG9hZFVpbnQz
MiB8IERhdGFUcmFuc2ZlclVwIHwgUk4oQVJNUmVnaXN0ZXJzOjpwYykgfCBSRChyZCksIGltbSwg
dHJ1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGxkclVuaXF1ZUltbWVkaWF0ZShpbnQg
cmQsIEFSTVdvcmQgaW1tLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAg
ICAgbV9idWZmZXIucHV0SW50V2l0aENvbnN0YW50SW50KHRvQVJNV29yZChjYykgfCBMb2FkVWlu
dDMyIHwgRGF0YVRyYW5zZmVyVXAgfCBSTihBUk1SZWdpc3RlcnM6OnBjKSB8IFJEKHJkKSwgaW1t
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZHRyVXAoRGF0YVRyYW5zZmVyVHlwZUEgdHJh
bnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFM
KQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8
IHRyYW5zZmVyVHlwZSB8IERhdGFUcmFuc2ZlclVwLCByZCwgcmIsIG9wMik7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIGR0clVwUmVnaXN0ZXIoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJU
eXBlLCBpbnQgcmQsIGludCByYiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5
cGUgfCBEYXRhVHJhbnNmZXJVcCB8IE9wMklzUmVnaXN0ZXJBcmd1bWVudCwgcmQsIHJiLCBybSk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGR0ckRvd24oRGF0YVRyYW5zZmVyVHlwZUEgdHJh
bnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJNV29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFM
KQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8
IHRyYW5zZmVyVHlwZSwgcmQsIHJiLCBvcDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBk
dHJEb3duUmVnaXN0ZXIoRGF0YVRyYW5zZmVyVHlwZUEgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGlu
dCByYiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5cGUgfCBPcDJJc1JlZ2lz
dGVyQXJndW1lbnQsIHJkLCByYiwgcm0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBoYWxm
RHRyVXAoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJUeXBlLCBpbnQgcmQsIGludCByYiwgQVJN
V29yZCBvcDIsIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbWl0
SW5zdHJ1Y3Rpb24odG9BUk1Xb3JkKGNjKSB8IHRyYW5zZmVyVHlwZSB8IERhdGFUcmFuc2ZlclVw
LCByZCwgcmIsIG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGhhbGZEdHJVcFJlZ2lz
dGVyKERhdGFUcmFuc2ZlclR5cGVCIHRyYW5zZmVyVHlwZSwgaW50IHJkLCBpbnQgcm4sIGludCBy
bSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVj
dGlvbih0b0FSTVdvcmQoY2MpIHwgdHJhbnNmZXJUeXBlIHwgRGF0YVRyYW5zZmVyVXAsIHJkLCBy
biwgcm0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBoYWxmRHRyRG93bihEYXRhVHJhbnNm
ZXJUeXBlQiB0cmFuc2ZlclR5cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29uZGl0
aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVtaXRJbnN0cnVjdGlvbih0b0FS
TVdvcmQoY2MpIHwgdHJhbnNmZXJUeXBlLCByZCwgcmIsIG9wMik7Ci0gICAgICAgIH0KLQotICAg
ICAgICB2b2lkIGhhbGZEdHJEb3duUmVnaXN0ZXIoRGF0YVRyYW5zZmVyVHlwZUIgdHJhbnNmZXJU
eXBlLCBpbnQgcmQsIGludCBybiwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCB0cmFuc2ZlclR5
cGUsIHJkLCBybiwgcm0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkb3VibGVEdHJVcChE
YXRhVHJhbnNmZXJUeXBlRmxvYXQgdHlwZSwgaW50IHJkLCBpbnQgcmIsIEFSTVdvcmQgb3AyLCBD
b25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG9wMiA8PSAw
eGZmICYmIHJkIDw9IDE1KTsKLSAgICAgICAgICAgIC8qIE9ubHkgZDAtZDE1IGFuZCBzMCwgczIs
IHM0IC4uLiBzMzAgYXJlIHN1cHBvcnRlZC4gKi8KLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dElu
dCh0b0FSTVdvcmQoY2MpIHwgRGF0YVRyYW5zZmVyVXAgfCB0eXBlIHwgKHJkIDw8IDEyKSB8IFJO
KHJiKSB8IG9wMik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRvdWJsZUR0ckRvd24oRGF0
YVRyYW5zZmVyVHlwZUZsb2F0IHR5cGUsIGludCByZCwgaW50IHJiLCBBUk1Xb3JkIG9wMiwgQ29u
ZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChvcDIgPD0gMHhm
ZiAmJiByZCA8PSAxNSk7Ci0gICAgICAgICAgICAvKiBPbmx5IGQwLWQxNSBhbmQgczAsIHMyLCBz
NCAuLi4gczMwIGFyZSBzdXBwb3J0ZWQuICovCi0gICAgICAgICAgICBtX2J1ZmZlci5wdXRJbnQo
dG9BUk1Xb3JkKGNjKSB8IHR5cGUgfCAocmQgPDwgMTIpIHwgUk4ocmIpIHwgb3AyKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgcHVzaChpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKLSAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8PSAweGYpOwotICAgICAg
ICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBTdG9yZVVpbnQzMiB8IERhdGFU
cmFuc2ZlcldyaXRlQmFjayB8IFJOKEFSTVJlZ2lzdGVyczo6c3ApIHwgUkQocmVnKSB8IDB4NCk7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHBvcChpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBB
TCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKEFSTVdvcmQocmVnKSA8PSAweGYpOwot
ICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCAoTG9hZFVpbnQzMiBe
IERhdGFUcmFuc2ZlclBvc3RVcGRhdGUpIHwgRGF0YVRyYW5zZmVyVXAgfCBSTihBUk1SZWdpc3Rl
cnM6OnNwKSB8IFJEKHJlZykgfCAweDQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW5saW5lIHZv
aWQgcG9rZShpbnQgcmVnLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZHRyRG93bihTdG9yZVVpbnQzMiwgQVJNUmVnaXN0ZXJzOjpzcCwgMCwgcmVnLCBjYyk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpbmxpbmUgdm9pZCBwZWVrKGludCByZWcsIENvbmRpdGlvbiBj
YyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBkdHJVcChMb2FkVWludDMyLCByZWcsIEFS
TVJlZ2lzdGVyczo6c3AsIDAsIGNjKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdm1vdl92
ZnA2NChpbnQgc20sIGludCBydCwgaW50IHJ0MiwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChydCAhPSBydDIpOwotICAgICAgICAgICAgbV9idWZmZXIu
cHV0SW50KHRvQVJNV29yZChjYykgfCBWTU9WX1ZGUDY0IHwgUk4ocnQyKSB8IFJEKHJ0KSB8IChz
bSAmIDB4ZikgfCAoKHNtICYgMHgxMCkgPDwgKDUgLSA0KSkpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCB2bW92X2FybTY0KGludCBydCwgaW50IHJ0MiwgaW50IHNtLCBDb25kaXRpb24gY2Mg
PSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHJ0ICE9IHJ0Mik7Ci0gICAgICAg
ICAgICBtX2J1ZmZlci5wdXRJbnQodG9BUk1Xb3JkKGNjKSB8IFZNT1ZfQVJNNjQgfCBSTihydDIp
IHwgUkQocnQpIHwgKHNtICYgMHhmKSB8ICgoc20gJiAweDEwKSA8PCAoNSAtIDQpKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2b2lkIHZtb3ZfdmZwMzIoaW50IHNuLCBpbnQgcnQsIENvbmRpdGlv
biBjYyA9IEFMKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocnQgPD0gMTUpOwotICAg
ICAgICAgICAgZW1pdFNpbmdsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBW
TU9WX1ZGUDMyLCBydCA8PCAxLCBzbiwgMCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZt
b3ZfYXJtMzIoaW50IHJ0LCBpbnQgc24sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBBU1NFUlQocnQgPD0gMTUpOwotICAgICAgICAgICAgZW1pdFNpbmdsZVByZWNp
c2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBWTU9WX0FSTTMyLCBydCA8PCAxLCBzbiwg
MCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHZjdnRfZjY0X3MzMihpbnQgZGQsIGludCBz
bSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghKHNt
ICYgMHgxKSk7IC8vIHNtIG11c3QgYmUgZGl2aXNpYmxlIGJ5IDIKLSAgICAgICAgICAgIGVtaXRE
b3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVkNWVF9GNjRfUzMyLCBk
ZCwgMCwgKHNtID4+IDEpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdmN2dF9zMzJfZjY0
KGludCBzZCwgaW50IGRtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKCEoc2QgJiAweDEpKTsgLy8gc2QgbXVzdCBiZSBkaXZpc2libGUgYnkgMgotICAg
ICAgICAgICAgZW1pdERvdWJsZVByZWNpc2lvbkluc3RydWN0aW9uKHRvQVJNV29yZChjYykgfCBW
Q1ZUX1MzMl9GNjQsIChzZCA+PiAxKSwgMCwgZG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9p
ZCB2Y3Z0X3UzMl9mNjQoaW50IHNkLCBpbnQgZG0sIENvbmRpdGlvbiBjYyA9IEFMKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQoIShzZCAmIDB4MSkpOyAvLyBzZCBtdXN0IGJlIGRpdmlz
aWJsZSBieSAyCi0gICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9B
Uk1Xb3JkKGNjKSB8IFZDVlRfVTMyX0Y2NCwgKHNkID4+IDEpLCAwLCBkbSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIHZjdnRfZjY0X2YzMihpbnQgZGQsIGludCBzbSwgQ29uZGl0aW9uIGNj
ID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChkZCA8PSAxNSAmJiBzbSA8PSAx
NSk7Ci0gICAgICAgICAgICBlbWl0RG91YmxlUHJlY2lzaW9uSW5zdHJ1Y3Rpb24odG9BUk1Xb3Jk
KGNjKSB8IFZDVlRfRjY0X0YzMiwgZGQsIDAsIHNtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgdmN2dF9mMzJfZjY0KGludCBkZCwgaW50IHNtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKGRkIDw9IDE1ICYmIHNtIDw9IDE1KTsKLSAgICAgICAg
ICAgIGVtaXREb3VibGVQcmVjaXNpb25JbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgVkNWVF9G
MzJfRjY0LCBkZCwgMCwgc20pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bXJzX2Fwc3Io
Q29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dElu
dCh0b0FSTVdvcmQoY2MpIHwgVk1SU19BUFNSKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
Y2x6KGludCByZCwgaW50IHJtLCBDb25kaXRpb24gY2MgPSBBTCkKLSAgICAgICAgewotICAgICAg
ICAgICAgbV9idWZmZXIucHV0SW50KHRvQVJNV29yZChjYykgfCBDTFogfCBSRChyZCkgfCBSTShy
bSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBia3B0KEFSTVdvcmQgdmFsdWUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIG1fYnVmZmVyLnB1dEludChCS1BUIHwgKCh2YWx1ZSAmIDB4ZmYw
KSA8PCA0KSB8ICh2YWx1ZSAmIDB4ZikpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJv
b2wgaXNCa3B0KHZvaWQqIGFkZHJlc3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQg
ZXhwZWN0ZWQgPSBCS1BUOwotICAgICAgICAgICAgQVJNV29yZCBpbW1lZGlhdGVNYXNrID0gKDB4
ZmYwIDw8IDQpIHwgMHhmOwotICAgICAgICAgICAgQVJNV29yZCBjYW5kaWRhdGVJbnN0cnVjdGlv
biA9ICpyZWludGVycHJldF9jYXN0PEFSTVdvcmQqPihhZGRyZXNzKTsKLSAgICAgICAgICAgIHJl
dHVybiAoY2FuZGlkYXRlSW5zdHJ1Y3Rpb24gJiB+aW1tZWRpYXRlTWFzaykgPT0gZXhwZWN0ZWQ7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG5vcCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1fYnVmZmVyLnB1dEludChOT1ApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIENvcHlGdW5jdGlvbj4KLSAgICAgICAgc3RhdGljIHZvaWQgZmlsbE5vcHModm9pZCog
YmFzZSwgc2l6ZV90IHNpemUsIENvcHlGdW5jdGlvbiBjb3B5KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBVTlVTRURfUEFSQU0oY29weSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKHNp
emUgJSBzaXplb2YoaW50MzJfdCkpKTsKLQotICAgICAgICAgICAgaW50MzJfdCogcHRyID0gc3Rh
dGljX2Nhc3Q8aW50MzJfdCo+KGJhc2UpOwotICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bTMy
cyA9IHNpemUgLyBzaXplb2YoaW50MzJfdCk7Ci0gICAgICAgICAgICBjb25zdCBpbnQzMl90IGlu
c24gPSBOT1A7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bTMyczsgaSsr
KQotICAgICAgICAgICAgICAgICpwdHIrKyA9IGluc247Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIGRtYlNZKCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9idWZmZXIucHV0SW50KERNQl9T
WSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGRtYklTSFNUKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgbV9idWZmZXIucHV0SW50KERNQl9JU0hTVCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2b2lkIGJ4KGludCBybSwgQ29uZGl0aW9uIGNjID0gQUwpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGVtaXRJbnN0cnVjdGlvbih0b0FSTVdvcmQoY2MpIHwgQlgsIDAsIDAsIFJNKHJtKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBBc3NlbWJsZXJMYWJlbCBibHgoaW50IHJtLCBDb25kaXRpb24g
Y2MgPSBBTCkKLSAgICAgICAgewotICAgICAgICAgICAgZW1pdEluc3RydWN0aW9uKHRvQVJNV29y
ZChjYykgfCBCTFgsIDAsIDAsIFJNKHJtKSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXIu
bGFiZWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIGxzbChpbnQgcmVn
LCBBUk1Xb3JkIHZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFS
TVJlZ2lzdGVyczo6cGMpOwotICAgICAgICAgICAgQVNTRVJUKHZhbHVlIDw9IDB4MWYpOwotICAg
ICAgICAgICAgcmV0dXJuIHJlZyB8ICh2YWx1ZSA8PCA3KSB8IDB4MDA7Ci0gICAgICAgIH0KLQot
ICAgICAgICBzdGF0aWMgQVJNV29yZCBsc3IoaW50IHJlZywgQVJNV29yZCB2YWx1ZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKHJlZyA8PSBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICAg
ICAgICAgIEFTU0VSVCh2YWx1ZSA8PSAweDFmKTsKLSAgICAgICAgICAgIHJldHVybiByZWcgfCAo
dmFsdWUgPDwgNykgfCAweDIwOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQg
YXNyKGludCByZWcsIEFSTVdvcmQgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VS
VChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICBBU1NFUlQodmFsdWUgPD0g
MHgxZik7Ci0gICAgICAgICAgICByZXR1cm4gcmVnIHwgKHZhbHVlIDw8IDcpIHwgMHg0MDsKLSAg
ICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIGxzbFJlZ2lzdGVyKGludCByZWcsIGlu
dCBzaGlmdFJlZykKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHJlZyA8PSBBUk1SZWdp
c3RlcnM6OnBjKTsKLSAgICAgICAgICAgIEFTU0VSVChzaGlmdFJlZyA8PSBBUk1SZWdpc3RlcnM6
OnBjKTsKLSAgICAgICAgICAgIHJldHVybiByZWcgfCAoc2hpZnRSZWcgPDwgOCkgfCAweDEwOwot
ICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQgbHNyUmVnaXN0ZXIoaW50IHJlZywg
aW50IHNoaWZ0UmVnKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFSTVJl
Z2lzdGVyczo6cGMpOwotICAgICAgICAgICAgQVNTRVJUKHNoaWZ0UmVnIDw9IEFSTVJlZ2lzdGVy
czo6cGMpOwotICAgICAgICAgICAgcmV0dXJuIHJlZyB8IChzaGlmdFJlZyA8PCA4KSB8IDB4MzA7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJNV29yZCBhc3JSZWdpc3RlcihpbnQgcmVn
LCBpbnQgc2hpZnRSZWcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJN
UmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICBBU1NFUlQoc2hpZnRSZWcgPD0gQVJNUmVnaXN0
ZXJzOjpwYyk7Ci0gICAgICAgICAgICByZXR1cm4gcmVnIHwgKHNoaWZ0UmVnIDw8IDgpIHwgMHg1
MDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEdlbmVyYWwgaGVscGVycwotCi0gICAgICAgIHNp
emVfdCBjb2RlU2l6ZSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2J1
ZmZlci5jb2RlU2l6ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBlbnN1cmVTcGFjZShp
bnQgaW5zblNwYWNlLCBpbnQgY29uc3RTcGFjZSkKLSAgICAgICAgewotICAgICAgICAgICAgbV9i
dWZmZXIuZW5zdXJlU3BhY2UoaW5zblNwYWNlLCBjb25zdFNwYWNlKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGludCBzaXplT2ZDb25zdGFudFBvb2woKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbV9idWZmZXIuc2l6ZU9mQ29uc3RhbnRQb29sKCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBBc3NlbWJsZXJMYWJlbCBsYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBtX2J1ZmZlci5lbnN1cmVTcGFjZUZvckFueUluc3RydWN0aW9uKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFz
c2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1fYnVmZmVyLmVuc3VyZVNwYWNlRm9yQW55SW5zdHJ1Y3Rpb24obWF4SnVtcFJlcGxhY2VtZW50
U2l6ZSgpIC8gc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgICAgIEFzc2VtYmxlckxhYmVsIHJl
c3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0
ICE9IChtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCAtIG1heEp1bXBSZXBsYWNlbWVudFNp
emUoKSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKLSAgICAgICAgICAgIG1f
aW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSgpOwotICAgICAgICAgICAgcmV0dXJuIGxhYmVsKCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpOwotICAg
ICAgICAgICAgd2hpbGUgKHJlc3VsdC5tX29mZnNldCArIDEgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0
V2F0Y2hwb2ludCkgewotICAgICAgICAgICAgICAgIG5vcCgpOwotICAgICAgICAgICAgICAgIC8v
IFRoZSBhdmFpbGFibGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBhcmUgZW5zdXJlZCBieSBsYWJl
bEZvcldhdGNocG9pbnQuCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0K
LQotICAgICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQotICAgICAgICB7
Ci0gICAgICAgICAgICB3aGlsZSAoIW1fYnVmZmVyLmlzQWxpZ25lZChhbGlnbm1lbnQpKQotICAg
ICAgICAgICAgICAgIG1vdihBUk1SZWdpc3RlcnM6OnIwLCBBUk1SZWdpc3RlcnM6OnIwKTsKLQot
ICAgICAgICAgICAgcmV0dXJuIGxhYmVsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBBc3NlbWJs
ZXJMYWJlbCBsb2FkQnJhbmNoVGFyZ2V0KGludCByZCwgQ29uZGl0aW9uIGNjID0gQUwsIGludCB1
c2VDb25zdGFudFBvb2wgPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbnN1cmVTcGFjZShz
aXplb2YoQVJNV29yZCksIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAgICAgICBtX2p1bXBzLmFw
cGVuZChtX2J1ZmZlci5jb2RlU2l6ZSgpIHwgKHVzZUNvbnN0YW50UG9vbCAmIDB4MSkpOwotICAg
ICAgICAgICAgbGRyVW5pcXVlSW1tZWRpYXRlKHJkLCBJbnZhbGlkQnJhbmNoVGFyZ2V0LCBjYyk7
Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIEFzc2VtYmxlckxhYmVsIGptcChDb25kaXRpb24gY2MgPSBBTCwgaW50IHVzZUNvbnN0YW50
UG9vbCA9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsb2FkQnJhbmNoVGFyZ2V0
KEFSTVJlZ2lzdGVyczo6cGMsIGNjLCB1c2VDb25zdGFudFBvb2wpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdm9pZCBwcmVwYXJlRXhlY3V0YWJsZUNvcHkodm9pZCogdG8pOwotCi0gICAgICAgIHVu
c2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuZGVidWdPZmZzZXQoKTsgfQot
Ci0gICAgICAgIC8vIERGRyBhc3NlbWJseSBoZWxwZXJzIGZvciBtb3ZpbmcgZGF0YSBiZXR3ZWVu
IGZwIGFuZCByZWdpc3RlcnMuCi0gICAgICAgIHZvaWQgdm1vdihSZWdpc3RlcklEIHJkMSwgUmVn
aXN0ZXJJRCByZDIsIEZQUmVnaXN0ZXJJRCBybikKLSAgICAgICAgewotICAgICAgICAgICAgdm1v
dl9hcm02NChyZDEsIHJkMiwgcm4pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB2bW92KEZQ
UmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybjEsIFJlZ2lzdGVySUQgcm4yKQotICAgICAgICB7
Ci0gICAgICAgICAgICB2bW92X3ZmcDY0KHJkLCBybjEsIHJuMik7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBQYXRjaGluZyBoZWxwZXJzCi0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQqIGdldExk
ckltbUFkZHJlc3MoQVJNV29yZCogaW5zbikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ2hl
Y2sgZm9yIGNhbGwKLSAgICAgICAgICAgIGlmICgoKmluc24gJiBMZHJQY0ltbWVkaWF0ZUluc3Ry
dWN0aW9uTWFzaykgIT0gTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbikgewotICAgICAgICAgICAg
ICAgIC8vIE11c3QgYmUgQkxYCi0gICAgICAgICAgICAgICAgQVNTRVJUKCgqaW5zbiAmIEJseElu
c3RydWN0aW9uTWFzaykgPT0gQmx4SW5zdHJ1Y3Rpb24pOwotICAgICAgICAgICAgICAgIGluc24t
LTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gTXVzdCBiZSBhbiBsZHIgLi4uLCBb
cGMgKy8tIGltbV0KLSAgICAgICAgICAgIEFTU0VSVCgoKmluc24gJiBMZHJQY0ltbWVkaWF0ZUlu
c3RydWN0aW9uTWFzaykgPT0gTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbik7Ci0KLSAgICAgICAg
ICAgIEFSTVdvcmQgYWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oaW5zbikgKyBEZWZh
dWx0UHJlZmV0Y2hPZmZzZXQgKiBzaXplb2YoQVJNV29yZCk7Ci0gICAgICAgICAgICBpZiAoKmlu
c24gJiBEYXRhVHJhbnNmZXJVcCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxBUk1Xb3JkKj4oYWRkciArICgqaW5zbiAmIERhdGFUcmFuc2Zlck9mZnNldE1hc2spKTsK
LSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEFSTVdvcmQqPihhZGRyIC0gKCpp
bnNuICYgRGF0YVRyYW5zZmVyT2Zmc2V0TWFzaykpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3Rh
dGljIEFSTVdvcmQqIGdldExkckltbUFkZHJlc3NPblBvb2woQVJNV29yZCogaW5zbiwgdWludDMy
X3QqIGNvbnN0UG9vbCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gTXVzdCBiZSBhbiBsZHIg
Li4uLCBbcGMgKy8tIGltbV0KLSAgICAgICAgICAgIEFTU0VSVCgoKmluc24gJiBMZHJQY0ltbWVk
aWF0ZUluc3RydWN0aW9uTWFzaykgPT0gTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbik7Ci0KLSAg
ICAgICAgICAgIGlmICgqaW5zbiAmIDB4MSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxBUk1Xb3JkKj4oY29uc3RQb29sICsgKCgqaW5zbiAmIERhdGFUcmFuc2Zlck9m
ZnNldE1hc2spID4+IDEpKTsKLSAgICAgICAgICAgIHJldHVybiBnZXRMZHJJbW1BZGRyZXNzKGlu
c24pOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hQb2ludGVySW50ZXJu
YWwoaW50cHRyX3QgZnJvbSwgdm9pZCogdG8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdv
cmQqIGluc24gPSByZWludGVycHJldF9jYXN0PEFSTVdvcmQqPihmcm9tKTsKLSAgICAgICAgICAg
IEFSTVdvcmQqIGFkZHIgPSBnZXRMZHJJbW1BZGRyZXNzKGluc24pOwotICAgICAgICAgICAgKmFk
ZHIgPSByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KHRvKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHN0YXRpYyBBUk1Xb3JkIHBhdGNoQ29uc3RhbnRQb29sTG9hZChBUk1Xb3JkIGxvYWQsIEFSTVdv
cmQgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhbHVlID0gKHZhbHVlIDw8IDEpICsg
MTsKLSAgICAgICAgICAgIEFTU0VSVCghKHZhbHVlICYgfkRhdGFUcmFuc2Zlck9mZnNldE1hc2sp
KTsKLSAgICAgICAgICAgIHJldHVybiAobG9hZCAmIH5EYXRhVHJhbnNmZXJPZmZzZXRNYXNrKSB8
IHZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hDb25zdGFudFBv
b2xMb2FkKHZvaWQqIGxvYWRBZGRyLCB2b2lkKiBjb25zdFBvb2xBZGRyKTsKLQotICAgICAgICAv
LyBSZWFkIHBvaW50ZXJzCi0gICAgICAgIHN0YXRpYyB2b2lkKiByZWFkUG9pbnRlcih2b2lkKiBm
cm9tKQotICAgICAgICB7Ci0gICAgICAgICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGZyb20pOwotICAgICAgICAgICAgQVJNV29yZCogYWRkcmVz
cyA9IGdldExkckltbUFkZHJlc3MoaW5zdHJ1Y3Rpb24pOwotICAgICAgICAgICAgcmV0dXJuICpy
ZWludGVycHJldF9jYXN0PHZvaWQqKj4oYWRkcmVzcyk7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyBQYXRjaCBwb2ludGVycwotCi0gICAgICAgIHN0YXRpYyB2b2lkIGxpbmtQb2ludGVyKHZvaWQq
IGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb2Rl
KSArIGZyb20ubV9vZmZzZXQsIHRvKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB2b2lk
IHJlcGF0Y2hJbnQzMih2b2lkKiB3aGVyZSwgaW50MzJfdCB0bykKLSAgICAgICAgewotICAgICAg
ICAgICAgcGF0Y2hQb2ludGVySW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4od2hl
cmUpLCByZWludGVycHJldF9jYXN0PHZvaWQqPih0bykpOwotICAgICAgICB9Ci0KLSAgICAgICAg
c3RhdGljIHZvaWQgcmVwYXRjaENvbXBhY3Qodm9pZCogd2hlcmUsIGludDMyX3QgdmFsdWUpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRf
Y2FzdDxBUk1Xb3JkKj4od2hlcmUpOwotICAgICAgICAgICAgQVNTRVJUKCgqaW5zdHJ1Y3Rpb24g
JiAweDBmNzAwMDAwKSA9PSBMb2FkVWludDMyKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA+PSAw
KQotICAgICAgICAgICAgICAgICppbnN0cnVjdGlvbiA9ICgqaW5zdHJ1Y3Rpb24gJiAweGZmN2Zm
MDAwKSB8IERhdGFUcmFuc2ZlclVwIHwgdmFsdWU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgKmluc3RydWN0aW9uID0gKCppbnN0cnVjdGlvbiAmIDB4ZmY3ZmYwMDApIHwgLXZh
bHVlOwotICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKEFSTVdvcmQp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hQb2ludGVyKHZvaWQq
IGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRl
cm5hbChyZWludGVycHJldF9jYXN0PGludHB0cl90Pihmcm9tKSwgdG8pOwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gTGlua2VycwotICAgICAgICBzdGF0aWMgaW50cHRyX3QgZ2V0QWJzb2x1dGVK
dW1wQWRkcmVzcyh2b2lkKiBiYXNlLCBpbnQgb2Zmc2V0ID0gMCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGJhc2UpICsgb2Zmc2V0IC0g
c2l6ZW9mKEFSTVdvcmQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBsaW5rSnVtcChBc3Nl
bWJsZXJMYWJlbCBmcm9tLCBBc3NlbWJsZXJMYWJlbCB0bykKLSAgICAgICAgewotICAgICAgICAg
ICAgQVJNV29yZCogaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGdldEFic29sdXRl
SnVtcEFkZHJlc3MobV9idWZmZXIuZGF0YSgpLCBmcm9tLm1fb2Zmc2V0KSk7Ci0gICAgICAgICAg
ICBBUk1Xb3JkKiBhZGRyID0gZ2V0TGRySW1tQWRkcmVzc09uUG9vbChpbnNuLCBtX2J1ZmZlci5w
b29sQWRkcmVzcygpKTsKLSAgICAgICAgICAgICphZGRyID0gdG9BUk1Xb3JkKHRvLm1fb2Zmc2V0
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyB2b2lkIGxpbmtKdW1wKHZvaWQqIGNvZGUs
IEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBw
YXRjaFBvaW50ZXJJbnRlcm5hbChnZXRBYnNvbHV0ZUp1bXBBZGRyZXNzKGNvZGUsIGZyb20ubV9v
ZmZzZXQpLCB0byk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCByZWxpbmtKdW1w
KHZvaWQqIGZyb20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50
ZXJJbnRlcm5hbChnZXRBYnNvbHV0ZUp1bXBBZGRyZXNzKGZyb20pLCB0byk7Ci0gICAgICAgIH0K
LQotICAgICAgICBzdGF0aWMgdm9pZCByZWxpbmtKdW1wVG9Ob3Aodm9pZCogZnJvbSkKLSAgICAg
ICAgewotICAgICAgICAgICAgcmVsaW5rSnVtcChmcm9tLCBmcm9tKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHN0YXRpYyB2b2lkIGxpbmtDYWxsKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIGZy
b20sIHZvaWQqIHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5h
bChnZXRBYnNvbHV0ZUp1bXBBZGRyZXNzKGNvZGUsIGZyb20ubV9vZmZzZXQpLCB0byk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCByZWxpbmtDYWxsKHZvaWQqIGZyb20sIHZvaWQq
IHRvKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXRjaFBvaW50ZXJJbnRlcm5hbChnZXRBYnNv
bHV0ZUp1bXBBZGRyZXNzKGZyb20pLCB0byk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMg
dm9pZCogcmVhZENhbGxUYXJnZXQodm9pZCogZnJvbSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlYWRQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGdldEFic29sdXRlSnVtcEFkZHJlc3MoZnJvbSkpKSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFy
dCwgdm9pZCogdG8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQqIGluc3RydWN0aW9u
ID0gcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAg
ICAgICBpbnRwdHJfdCBkaWZmZXJlbmNlID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8p
IC0gKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluc3RydWN0aW9uKSArIERlZmF1bHRQcmVm
ZXRjaE9mZnNldCAqIHNpemVvZihBUk1Xb3JkKSk7Ci0KLSAgICAgICAgICAgIGlmICghKGRpZmZl
cmVuY2UgJiAxKSkgewotICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UgPj49IDI7Ci0gICAgICAg
ICAgICAgICAgaWYgKChkaWZmZXJlbmNlIDw9IE1heGltdW1CcmFuY2hPZmZzZXREaXN0YW5jZSAm
JiBkaWZmZXJlbmNlID49IE1pbmltdW1CcmFuY2hPZmZzZXREaXN0YW5jZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgIC8vIERpcmVjdCBicmFuY2guCi0gICAgICAgICAgICAgICAgICAgICBpbnN0
cnVjdGlvblswXSA9IEIgfCBBTCB8IChkaWZmZXJlbmNlICYgQnJhbmNoT2Zmc2V0TWFzayk7Ci0g
ICAgICAgICAgICAgICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2YoQVJNV29y
ZCkpOwotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gTG9hZCB0YXJnZXQuCi0gICAgICAgICAgICBp
bnN0cnVjdGlvblswXSA9IExvYWRVaW50MzIgfCBBTCB8IFJOKEFSTVJlZ2lzdGVyczo6cGMpIHwg
UkQoQVJNUmVnaXN0ZXJzOjpwYykgfCA0OwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSBy
ZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KHRvKTsKLSAgICAgICAgICAgIGNhY2hlRmx1c2goaW5z
dHJ1Y3Rpb24sIHNpemVvZihBUk1Xb3JkKSAqIDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3Rh
dGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHNpemVvZihBUk1Xb3JkKSAqIDI7Ci0gICAgICAgIH0KLQotICAgICAgICBz
dGF0aWMgY29uc3RleHByIHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBzaXplb2YoQVJNV29yZCkgKiAzOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFSTVdvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnBy
ZXRfY2FzdDxBUk1Xb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAgICAgICBjYWNoZUZs
dXNoKGluc3RydWN0aW9uLCBzaXplb2YoQVJNV29yZCkpOwotCi0gICAgICAgICAgICBBU1NFUlQo
KCppbnN0cnVjdGlvbiAmIExkck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSA9PSBBZGRJbW1lZGlhdGVJ
bnN0cnVjdGlvbiB8fCAoKmluc3RydWN0aW9uICYgTGRyT3JBZGRJbnN0cnVjdGlvbk1hc2spID09
IExkckltbWVkaWF0ZUluc3RydWN0aW9uKTsKLSAgICAgICAgICAgIGlmICgoKmluc3RydWN0aW9u
ICYgTGRyT3JBZGRJbnN0cnVjdGlvbk1hc2spID09IEFkZEltbWVkaWF0ZUluc3RydWN0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgICppbnN0cnVjdGlvbiA9ICgqaW5zdHJ1Y3Rpb24gJiB+TGRyT3JB
ZGRJbnN0cnVjdGlvbk1hc2spIHwgTGRySW1tZWRpYXRlSW5zdHJ1Y3Rpb247Ci0gICAgICAgICAg
ICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFkZHJl
c3NDb21wdXRhdGlvbih2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+KGlu
c3RydWN0aW9uU3RhcnQpOwotICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgc2l6
ZW9mKEFSTVdvcmQpKTsKLQotICAgICAgICAgICAgQVNTRVJUKCgqaW5zdHJ1Y3Rpb24gJiBMZHJP
ckFkZEluc3RydWN0aW9uTWFzaykgPT0gQWRkSW1tZWRpYXRlSW5zdHJ1Y3Rpb24gfHwgKCppbnN0
cnVjdGlvbiAmIExkck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSA9PSBMZHJJbW1lZGlhdGVJbnN0cnVj
dGlvbik7Ci0gICAgICAgICAgICBpZiAoKCppbnN0cnVjdGlvbiAmIExkck9yQWRkSW5zdHJ1Y3Rp
b25NYXNrKSA9PSBMZHJJbW1lZGlhdGVJbnN0cnVjdGlvbikgewotICAgICAgICAgICAgICAgICAq
aW5zdHJ1Y3Rpb24gPSAoKmluc3RydWN0aW9uICYgfkxkck9yQWRkSW5zdHJ1Y3Rpb25NYXNrKSB8
IEFkZEltbWVkaWF0ZUluc3RydWN0aW9uOwotICAgICAgICAgICAgICAgICBjYWNoZUZsdXNoKGlu
c3RydWN0aW9uLCBzaXplb2YoQVJNV29yZCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0QnJhbmNoUHRyV2l0aFBhdGNoKHZvaWQqIGluc3Ry
dWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcm4sIEFSTVdvcmQgaW1tKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBBUk1Xb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZCo+
KGluc3RydWN0aW9uU3RhcnQpOwotCi0gICAgICAgICAgICBBU1NFUlQoKGluc3RydWN0aW9uWzJd
ICYgTGRyUGNJbW1lZGlhdGVJbnN0cnVjdGlvbk1hc2spID09IExkclBjSW1tZWRpYXRlSW5zdHJ1
Y3Rpb24pOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSB0b0FSTVdvcmQoQUwpIHwgKChp
bnN0cnVjdGlvblsyXSAmIDB4MGZmZjBmZmYpICsgc2l6ZW9mKEFSTVdvcmQpKSB8IFJEKEFSTVJl
Z2lzdGVyczo6UzEpOwotICAgICAgICAgICAgKmdldExkckltbUFkZHJlc3MoaW5zdHJ1Y3Rpb24p
ID0gaW1tOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSB0b0FSTVdvcmQoQUwpIHwgQ01Q
IHwgU2V0Q29uZGl0aW9uYWxDb2RlcyB8IFJOKHJuKSB8IFJNKEFSTVJlZ2lzdGVyczo6UzEpOwot
ICAgICAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgMiAqIHNpemVvZihBUk1Xb3JkKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBZGRyZXNzIG9wZXJhdGlvbnMKLQotICAgICAgICBz
dGF0aWMgdm9pZCogZ2V0UmVsb2NhdGVkQWRkcmVzcyh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJl
bCBsYWJlbCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvZGUpICsgbGFiZWwubV9vZmZzZXQpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWRkcmVzcyBkaWZmZXJlbmNlcwotCi0gICAgICAgIHN0
YXRpYyBpbnQgZ2V0RGlmZmVyZW5jZUJldHdlZW5MYWJlbHMoQXNzZW1ibGVyTGFiZWwgYSwgQXNz
ZW1ibGVyTGFiZWwgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGIubV9vZmZzZXQg
LSBhLm1fb2Zmc2V0OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGdldENh
bGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFiZWwgY2FsbCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGNhbGwubV9vZmZzZXQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBIYW5kbGUg
aW1tZWRpYXRlcwotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIGdldE9wMihBUk1Xb3JkIGltbSk7
Ci0KLSAgICAgICAgLy8gRmFzdCBjYXNlIGlmIGltbSBpcyBrbm93biB0byBiZSBiZXR3ZWVuIDAg
YW5kIDB4ZmYKLSAgICAgICAgc3RhdGljIEFSTVdvcmQgZ2V0T3AyQnl0ZShBUk1Xb3JkIGltbSkK
LSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGltbSA8PSAweGZmKTsKLSAgICAgICAgICAg
IHJldHVybiBPcDJJbW1lZGlhdGUgfCBpbW07Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMg
QVJNV29yZCBnZXRPcDJIYWxmKEFSTVdvcmQgaW1tKQotICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQoaW1tIDw9IDB4ZmYpOwotICAgICAgICAgICAgcmV0dXJuIEltbWVkaWF0ZUZvckhhbGZX
b3JkVHJhbnNmZXIgfCAoaW1tICYgMHgwZikgfCAoKGltbSAmIDB4ZjApIDw8IDQpOwotICAgICAg
ICB9Ci0KLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNykKLSAgICAgICAgc3RhdGljIEFSTVdv
cmQgZ2V0SW1tMTZPcDIoQVJNV29yZCBpbW0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChp
bW0gPD0gMHhmZmZmKQotICAgICAgICAgICAgICAgIHJldHVybiAoaW1tICYgMHhmMDAwKSA8PCA0
IHwgKGltbSAmIDB4ZmZmKTsKLSAgICAgICAgICAgIHJldHVybiBJbnZhbGlkSW1tZWRpYXRlOwot
ICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgQVJNV29yZCBnZXRJbW0oQVJNV29yZCBpbW0sIGlu
dCB0bXBSZWcsIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwotICAgICAgICB2b2lkIG1vdmVJbW0oQVJN
V29yZCBpbW0sIGludCBkZXN0KTsKLSAgICAgICAgQVJNV29yZCBlbmNvZGVDb21wbGV4SW1tKEFS
TVdvcmQgaW1tLCBpbnQgZGVzdCk7Ci0KLSAgICAgICAgLy8gTWVtb3J5IGxvYWQvc3RvcmUgaGVs
cGVycwotCi0gICAgICAgIHZvaWQgZGF0YVRyYW5zZmVyMzIoRGF0YVRyYW5zZmVyVHlwZUEsIFJl
Z2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIGludDMyX3Qgb2Zmc2V0KTsKLSAgICAg
ICAgdm9pZCBiYXNlSW5kZXhUcmFuc2ZlcjMyKERhdGFUcmFuc2ZlclR5cGVBLCBSZWdpc3RlcklE
IHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUsIGlu
dDMyX3Qgb2Zmc2V0KTsKLSAgICAgICAgdm9pZCBkYXRhVHJhbnNmZXIxNihEYXRhVHJhbnNmZXJU
eXBlQiwgUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQp
OwotICAgICAgICB2b2lkIGJhc2VJbmRleFRyYW5zZmVyMTYoRGF0YVRyYW5zZmVyVHlwZUIsIFJl
Z2lzdGVySUQgc3JjRHN0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSwgaW50MzJfdCBvZmZzZXQpOwotICAgICAgICB2b2lkIGRhdGFUcmFuc2ZlckZsb2F0KERh
dGFUcmFuc2ZlclR5cGVGbG9hdCwgRlBSZWdpc3RlcklEIHNyY0RzdCwgUmVnaXN0ZXJJRCBiYXNl
LCBpbnQzMl90IG9mZnNldCk7Ci0gICAgICAgIHZvaWQgYmFzZUluZGV4VHJhbnNmZXJGbG9hdChE
YXRhVHJhbnNmZXJUeXBlRmxvYXQsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBpbnQzMl90IG9mZnNldCk7Ci0KLSAgICAg
ICAgLy8gQ29uc3RhbnQgcG9vbCBobmFkbGVycwotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIHBs
YWNlQ29uc3RhbnRQb29sQmFycmllcihpbnQgb2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBvZmZzZXQgPSAob2Zmc2V0IC0gc2l6ZW9mKEFSTVdvcmQpKSA+PiAyOwotICAgICAgICAgICAg
QVNTRVJUKChvZmZzZXQgPD0gTWF4aW11bUJyYW5jaE9mZnNldERpc3RhbmNlICYmIG9mZnNldCA+
PSBNaW5pbXVtQnJhbmNoT2Zmc2V0RGlzdGFuY2UpKTsKLSAgICAgICAgICAgIHJldHVybiBBTCB8
IEIgfCAob2Zmc2V0ICYgQnJhbmNoT2Zmc2V0TWFzayk7Ci0gICAgICAgIH0KLQotI2lmIE9TKExJ
TlVYKSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgc3RhdGljIGlubGluZSB2
b2lkIGxpbnV4UGFnZUZsdXNoKHVpbnRwdHJfdCBiZWdpbiwgdWludHB0cl90IGVuZCkKLSAgICAg
ICAgewotICAgICAgICAgICAgYXNtIHZvbGF0aWxlKAotICAgICAgICAgICAgICAgICJwdXNoICAg
IHtyN31cbiIKLSAgICAgICAgICAgICAgICAibW92ICAgICByMCwgJTBcbiIKLSAgICAgICAgICAg
ICAgICAibW92ICAgICByMSwgJTFcbiIKLSAgICAgICAgICAgICAgICAibW92ICAgICByNywgIzB4
ZjAwMDBcbiIKLSAgICAgICAgICAgICAgICAiYWRkICAgICByNywgcjcsICMweDJcbiIKLSAgICAg
ICAgICAgICAgICAibW92ICAgICByMiwgIzB4MFxuIgotICAgICAgICAgICAgICAgICJzdmMgICAg
IDB4MFxuIgotICAgICAgICAgICAgICAgICJwb3AgICAgIHtyN31cbiIKLSAgICAgICAgICAgICAg
ICA6Ci0gICAgICAgICAgICAgICAgOiAiciIgKGJlZ2luKSwgInIiIChlbmQpCi0gICAgICAgICAg
ICAgICAgOiAicjAiLCAicjEiLCAicjIiKTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAg
c3RhdGljIHZvaWQgY2FjaGVGbHVzaCh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKLSAgICAgICAg
ewotI2lmIE9TKExJTlVYKSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLSAgICAgICAgICAg
IHNpemVfdCBwYWdlID0gcGFnZVNpemUoKTsKLSAgICAgICAgICAgIHVpbnRwdHJfdCBjdXJyZW50
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvZGUpOwotICAgICAgICAgICAgdWludHB0
cl90IGVuZCA9IGN1cnJlbnQgKyBzaXplOwotICAgICAgICAgICAgdWludHB0cl90IGZpcnN0UGFn
ZUVuZCA9IChjdXJyZW50ICYgfihwYWdlIC0gMSkpICsgcGFnZTsKLQotICAgICAgICAgICAgaWYg
KGVuZCA8PSBmaXJzdFBhZ2VFbmQpIHsKLSAgICAgICAgICAgICAgICBsaW51eFBhZ2VGbHVzaChj
dXJyZW50LCBlbmQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgbGludXhQYWdlRmx1c2goY3VycmVudCwgZmlyc3RQYWdlRW5kKTsKLQotICAg
ICAgICAgICAgZm9yIChjdXJyZW50ID0gZmlyc3RQYWdlRW5kOyBjdXJyZW50ICsgcGFnZSA8IGVu
ZDsgY3VycmVudCArPSBwYWdlKQotICAgICAgICAgICAgICAgIGxpbnV4UGFnZUZsdXNoKGN1cnJl
bnQsIGN1cnJlbnQgKyBwYWdlKTsKLQotICAgICAgICAgICAgbGludXhQYWdlRmx1c2goY3VycmVu
dCwgZW5kKTsKLSNlbHNlCi0jZXJyb3IgIlRoZSBjYWNoZUZsdXNoIHN1cHBvcnQgaXMgbWlzc2lu
ZyBvbiB0aGlzIHBsYXRmb3JtLiIKLSNlbmRpZgotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICBzdGF0aWMgQVJNV29yZCBSTShpbnQgcmVnKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQocmVnIDw9IEFSTVJlZ2lzdGVyczo6cGMpOwotICAgICAgICAgICAgcmV0dXJuIHJl
ZzsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIFJTKGludCByZWcpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAg
ICAgICAgICByZXR1cm4gcmVnIDw8IDg7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJN
V29yZCBSRChpbnQgcmVnKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVnIDw9IEFS
TVJlZ2lzdGVyczo6cGMpOwotICAgICAgICAgICAgcmV0dXJuIHJlZyA8PCAxMjsKLSAgICAgICAg
fQotCi0gICAgICAgIHN0YXRpYyBBUk1Xb3JkIFJOKGludCByZWcpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEFTU0VSVChyZWcgPD0gQVJNUmVnaXN0ZXJzOjpwYyk7Ci0gICAgICAgICAgICByZXR1
cm4gcmVnIDw8IDE2OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIEFSTVdvcmQgZ2V0Q29u
ZGl0aW9uYWxGaWVsZChBUk1Xb3JkIGkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBp
ICYgQ29uZGl0aW9uYWxGaWVsZE1hc2s7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgQVJN
V29yZCB0b0FSTVdvcmQoQ29uZGl0aW9uIGNjKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8QVJNV29yZD4oY2MpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGlj
IEFSTVdvcmQgdG9BUk1Xb3JkKHVpbnQzMl90IHUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxBUk1Xb3JkPih1KTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBn
ZW5JbnQoaW50IHJlZywgQVJNV29yZCBpbW0sIGJvb2wgcG9zaXRpdmUpOwotCi0gICAgICAgIEFS
TUJ1ZmZlciBtX2J1ZmZlcjsKLSAgICAgICAgSnVtcHMgbV9qdW1wczsKLSAgICAgICAgdWludDMy
X3QgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElP
TkFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAK
aW5kZXggZWExMDdmYjRkOTAzNTNiODBkNWYyOGE4NTk4OWUyZjViZDRkMDdlNy4uYjIzNmE1Yzgw
MmNiNzc2YTJjYWRiYWE1ZWJjZmU2YmQxZmIzYTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCkBAIC0yOTgsOSArMjk4LDcgQEAgdm9pZCBM
aW5rQnVmZmVyOjpsaW5rQ29kZShNYWNyb0Fzc2VtYmxlciYgbWFjcm9Bc3NlbWJsZXIsIHZvaWQq
IG93bmVyVUlELCBKSVRDb20KICAgICBBU1NFUlQobV9jb2RlKTsKICAgICBBc3NlbWJsZXJCdWZm
ZXImIGJ1ZmZlciA9IG1hY3JvQXNzZW1ibGVyLm1fYXNzZW1ibGVyLmJ1ZmZlcigpOwogICAgIHZv
aWQqIGNvZGUgPSBtX2NvZGUuZGF0YUxvY2F0aW9uKCk7Ci0jaWYgQ1BVKEFSTV9UUkFESVRJT05B
TCkKLSAgICBtYWNyb0Fzc2VtYmxlci5tX2Fzc2VtYmxlci5wcmVwYXJlRXhlY3V0YWJsZUNvcHko
Y29kZSk7Ci0jZWxpZiBDUFUoQVJNNjQpCisjaWYgQ1BVKEFSTTY0KQogICAgIFJFTEVBU0VfQVNT
RVJUKHJvdW5kVXBUb011bHRpcGxlT2Y8QXNzZW1ibGVyOjppbnN0cnVjdGlvblNpemU+KGNvZGUp
ID09IGNvZGUpOwogI2VuZGlmCiAgICAgcGVyZm9ybUpJVE1lbWNweShjb2RlLCBidWZmZXIuZGF0
YSgpLCBidWZmZXIuY29kZVNpemUoKSk7CkBAIC00MDAsMjMgKzM5OCw2IEBAIHZvaWQgTGlua0J1
ZmZlcjo6ZHVtcENvZGUodm9pZCogY29kZSwgc2l6ZV90IHNpemUpCiAgICAgICAgIAogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB0c2l6ZTsgaSsrKQogICAgICAgICBkYXRhTG9nRigiXHQu
c2hvcnRcdDB4JXhcbiIsIHRjb2RlW2ldKTsKLSNlbGlmIENQVShBUk1fVFJBRElUSU9OQUwpCi0g
ICAgLy8gICBnY2MgLWMgaml0LnMKLSAgICAvLyAgIG9iamR1bXAgLUQgaml0Lm8KLSAgICBzdGF0
aWMgdW5zaWduZWQgY29kZUNvdW50ID0gMDsKLSAgICB1bnNpZ25lZCBpbnQqIHRjb2RlID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50Kj4oY29kZSk7Ci0gICAgc2l6ZV90IHRzaXplID0gc2l6ZSAv
IHNpemVvZih1bnNpZ25lZCBpbnQpOwotICAgIGNoYXIgbmFtZUJ1ZlsxMjhdOwotICAgIHNucHJp
bnRmKG5hbWVCdWYsIHNpemVvZihuYW1lQnVmKSwgIl9qc2Nfaml0JXUiLCBjb2RlQ291bnQrKyk7
Ci0gICAgZGF0YUxvZ0YoIlx0Lmdsb2JsXHQlc1xuIgotICAgICAgICAgICAgIlx0LmFsaWduIDRc
biIKLSAgICAgICAgICAgICJcdC5jb2RlIDMyXG4iCi0gICAgICAgICAgICAiXHQudGV4dFxuIgot
ICAgICAgICAgICAgIiMgJXBcbiIKLSAgICAgICAgICAgICIlczpcbiIsIG5hbWVCdWYsIGNvZGUs
IG5hbWVCdWYpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRzaXplOyBpKyspCi0g
ICAgICAgIGRhdGFMb2dGKCJcdC5sb25nXHQweCV4XG4iLCB0Y29kZVtpXSk7CiAjZW5kaWYKIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCmluZGV4IGNkMWI1NDU4MzI1MmE2ODA5ZmQ1NmZmMDlkOGFmMzU4NmNkNTk0MDguLjNh
NzJjMjc5MjI0MGFiNjg2NTY0NDU3MDk2MDUxMGU2ZTEwMjBkODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTQ1LDExICs0NSw2
IEBAIG5hbWVzcGFjZSBKU0MgeyB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQVJNdjcgTWFjcm9Bc3Nl
bWJsZXJCYXNlOyB9OwogI2RlZmluZSBUQVJHRVRfTUFDUk9BU1NFTUJMRVIgTWFjcm9Bc3NlbWJs
ZXJBUk02NAogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQVJNNjQuaCIKIAotI2VsaWYgQ1BVKEFS
TV9UUkFESVRJT05BTCkKLSNkZWZpbmUgVEFSR0VUX0FTU0VNQkxFUiBBUk1Bc3NlbWJsZXIKLSNk
ZWZpbmUgVEFSR0VUX01BQ1JPQVNTRU1CTEVSIE1hY3JvQXNzZW1ibGVyQVJNCi0jaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXJBUk0uaCIKLQogI2VsaWYgQ1BVKE1JUFMpCiAjZGVmaW5lIFRBUkdFVF9B
U1NFTUJMRVIgTUlQU0Fzc2VtYmxlcgogI2RlZmluZSBUQVJHRVRfTUFDUk9BU1NFTUJMRVIgTWFj
cm9Bc3NlbWJsZXJNSVBTCkBAIC0xNDIsNyArMTM3LDcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIg
OiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJCYXNlIHsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJh
c2U6OmFuZDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoQWRkMzI7CiAg
ICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpicmFuY2hNdWwzMjsKLSNpZiBDUFUoQVJNNjQp
IHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKSB8fCBDUFUoWDg2XzY0
KSB8fCBDUFUoTUlQUykKKyNpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUo
WDg2XzY0KSB8fCBDUFUoTUlQUykKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5j
aFB0cjsKICNlbmRpZgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6YnJhbmNoU3ViMzI7
CkBAIC00MzQsNyArNDI5LDYgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXIgOiBwdWJsaWMgTWFjcm9B
c3NlbWJsZXJCYXNlIHsKICAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNoMzJXaXRo
UGF0Y2goY29uZCwgbGVmdCwgZGF0YUxhYmVsLCBpbml0aWFsUmlnaHRWYWx1ZSkpOwogICAgIH0K
IAotI2lmICFDUFUoQVJNX1RSQURJVElPTkFMKQogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxl
SnVtcCgpCiAgICAgewogICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChqdW1wKCkpOwpAQCAt
NDU5LDcgKzQ1Myw2IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyIDogcHVibGljIE1hY3JvQXNzZW1i
bGVyQmFzZSB7CiAgICAgewogICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFuY2gzMihj
b25kLCBhZGRyZXNzLCBpbW0pKTsKICAgICB9Ci0jZW5kaWYKICNlbmRpZgogCiAgICAgdm9pZCBq
dW1wKExhYmVsIHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDk1NzRkNmMzNWYzMzMwNTQ1ZDk2MGJjNjNjZWRhZGE1MDdkMmVmMDguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NTMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4KLSAqIENvcHly
aWdodCAoQykgMjAwOSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFVOSVZFUlNJ
VFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVU5JVkVSU0lU
WSBPRiBTWkVHRUQgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoQVNTRU1CTEVSKSAm
JiBDUFUoQVJNX1RSQURJVElPTkFMKQotI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCi0KLSNp
bmNsdWRlICJQcm9iZUNvbnRleHQuaCIKLSNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+Ci0KLSNp
ZiBPUyhMSU5VWCkKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5o
PgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8ZWxm
Lmg+Ci0jaW5jbHVkZSA8YXNtL2h3Y2FwLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LXN0YXRpYyBib29sIGlzVkZQUHJlc2VudCgpCi17Ci0jaWYgT1MoTElOVVgpCi0gICAgaW50IGZk
ID0gb3BlbigiL3Byb2Mvc2VsZi9hdXh2IiwgT19SRE9OTFkpOwotICAgIGlmIChmZCAhPSAtMSkg
ewotICAgICAgICBFbGYzMl9hdXh2X3QgYXV4OwotICAgICAgICB3aGlsZSAocmVhZChmZCwgJmF1
eCwgc2l6ZW9mKEVsZjMyX2F1eHZfdCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV4LmFfdHlwZSA9
PSBBVF9IV0NBUCkgewotICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gYXV4LmFfdW4uYV92YWwgJiBIV0NBUF9WRlA7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgY2xvc2UoZmQpOwotICAgIH0KLSNlbmRpZiAvLyBPUyhMSU5VWCkKLQot
I2lmIChDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgZGVmaW5lZChfX1ZGUF9GUF9fKSkKLSAg
ICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLWNv
bnN0IGJvb2wgTWFjcm9Bc3NlbWJsZXJBUk06OnNfaXNWRlBQcmVzZW50ID0gaXNWRlBQcmVzZW50
KCk7Ci0KLSNpZiBDUFUoQVJNVjVfT1JfTE9XRVIpCi0vKiBPbiBBUk12NSBhbmQgYmVsb3csIG5h
dHVyYWwgYWxpZ25tZW50IGlzIHJlcXVpcmVkLiAqLwotdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTo6
bG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJ
RCBkZXN0KQotewotICAgIEFSTVdvcmQgb3AyOwotCi0gICAgQVNTRVJUKGFkZHJlc3Muc2NhbGUg
Pj0gMCAmJiBhZGRyZXNzLnNjYWxlIDw9IDMpOwotICAgIG9wMiA9IG1fYXNzZW1ibGVyLmxzbChh
ZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpKTsKLQotICAgIGlm
IChhZGRyZXNzLm9mZnNldCA+PSAwICYmIGFkZHJlc3Mub2Zmc2V0ICsgMHgyIDw9IDB4ZmYpIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGFkZHJlc3MuYmFzZSwg
b3AyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuaGFsZkR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVp
bnQxNiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxmKGFk
ZHJlc3Mub2Zmc2V0KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJVcChBUk1Bc3NlbWJs
ZXI6OkxvYWRVaW50MTYsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFz
c2VtYmxlcjo6Z2V0T3AySGFsZihhZGRyZXNzLm9mZnNldCArIDB4MikpOwotICAgIH0gZWxzZSBp
ZiAoYWRkcmVzcy5vZmZzZXQgPCAwICYmIGFkZHJlc3Mub2Zmc2V0ID49IC0weGZmKSB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmFkZChBUk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIG9wMik7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJEb3duKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQx
NiwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJIYWxmKC1hZGRy
ZXNzLm9mZnNldCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5oYWxmRHRyRG93bihBUk1Bc3NlbWJs
ZXI6OkxvYWRVaW50MTYsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFz
c2VtYmxlcjo6Z2V0T3AySGFsZigtYWRkcmVzcy5vZmZzZXQgLSAweDIpKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlSW1tKGFkZHJlc3Mub2Zmc2V0LCBBUk1SZWdpc3Rl
cnM6OlMwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJl
Z2lzdGVyczo6UzAsIG9wMik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmhhbGZEdHJVcFJlZ2lzdGVy
KEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQxNiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3Rl
cnM6OlMwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJl
Z2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6T3AySW1tZWRpYXRlIHwgMHgyKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuaGFsZkR0clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDE2LCBB
Uk1SZWdpc3RlcnM6OlMwLCBhZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgIH0K
LSAgICBtX2Fzc2VtYmxlci5vcnIoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIubHNsKEFSTVJlZ2lz
dGVyczo6UzAsIDE2KSk7Ci19Ci0jZW5kaWYgLy8gQ1BVKEFSTVY1X09SX0xPV0VSKQotCi0jaWYg
RU5BQkxFKE1BU01fUFJPQkUpCi0KLWV4dGVybiAiQyIgdm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9s
aW5lKCk7Ci0KLXVzaW5nIG5hbWVzcGFjZSBBUk1SZWdpc3RlcnM7Ci0KLSNpZiBDT01QSUxFUihH
Q0NfQ09NUEFUSUJMRSkKLQotLy8gVGhlIGZvbGxvd2luZyBhcmUgb2Zmc2V0cyBmb3IgUHJvYmU6
OlN0YXRlIGZpZWxkcyBhY2Nlc3NlZAotLy8gYnkgdGhlIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUg
c3R1Yi4KLQotI2RlZmluZSBQVFJfU0laRSA0Ci0jZGVmaW5lIFBST0JFX1BST0JFX0ZVTkNUSU9O
X09GRlNFVCAoMCAqIFBUUl9TSVpFKQotI2RlZmluZSBQUk9CRV9BUkdfT0ZGU0VUICgxICogUFRS
X1NJWkUpCi0jZGVmaW5lIFBST0JFX0lOSVRfU1RBQ0tfRlVOQ1RJT05fT0ZGU0VUICgyICogUFRS
X1NJWkUpCi0jZGVmaW5lIFBST0JFX0lOSVRfU1RBQ0tfQVJHX09GRlNFVCAoMyAqIFBUUl9TSVpF
KQotCi0jZGVmaW5lIFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCAoNCAqIFBUUl9TSVpFKQotCi0j
ZGVmaW5lIEdQUkVHX1NJWkUgNAotI2RlZmluZSBQUk9CRV9DUFVfUjBfT0ZGU0VUIChQUk9CRV9G
SVJTVF9HUFJFR19PRkZTRVQgKyAoMCAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVf
UjFfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMSAqIEdQUkVHX1NJWkUpKQot
I2RlZmluZSBQUk9CRV9DUFVfUjJfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAo
MiAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjNfT0ZGU0VUIChQUk9CRV9GSVJT
VF9HUFJFR19PRkZTRVQgKyAoMyAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjRf
T0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoNCAqIEdQUkVHX1NJWkUpKQotI2Rl
ZmluZSBQUk9CRV9DUFVfUjVfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoNSAq
IEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjZfT0ZGU0VUIChQUk9CRV9GSVJTVF9H
UFJFR19PRkZTRVQgKyAoNiAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjdfT0ZG
U0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoNyAqIEdQUkVHX1NJWkUpKQotI2RlZmlu
ZSBQUk9CRV9DUFVfUjhfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoOCAqIEdQ
UkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjlfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJF
R19PRkZTRVQgKyAoOSAqIEdQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfUjEwX09GRlNF
VCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsgKDEwICogR1BSRUdfU0laRSkpCi0jZGVmaW5l
IFBST0JFX0NQVV9SMTFfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTEgKiBH
UFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0lQX09GRlNFVCAoUFJPQkVfRklSU1RfR1BS
RUdfT0ZGU0VUICsgKDEyICogR1BSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9TUF9PRkZT
RVQgKFBST0JFX0ZJUlNUX0dQUkVHX09GRlNFVCArICgxMyAqIEdQUkVHX1NJWkUpKQotI2RlZmlu
ZSBQUk9CRV9DUFVfTFJfT0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTQgKiBH
UFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX1BDX09GRlNFVCAoUFJPQkVfRklSU1RfR1BS
RUdfT0ZGU0VUICsgKDE1ICogR1BSRUdfU0laRSkpCi0KLSNkZWZpbmUgUFJPQkVfQ1BVX0FQU1Jf
T0ZGU0VUIChQUk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTYgKiBHUFJFR19TSVpFKSkKLSNk
ZWZpbmUgUFJPQkVfQ1BVX0ZQU0NSX09GRlNFVCAoUFJPQkVfRklSU1RfR1BSRUdfT0ZGU0VUICsg
KDE3ICogR1BSRUdfU0laRSkpCi0KLSNkZWZpbmUgUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUIChQ
Uk9CRV9GSVJTVF9HUFJFR19PRkZTRVQgKyAoMTggKiBHUFJFR19TSVpFKSkKLQotI2RlZmluZSBG
UFJFR19TSVpFIDgKLSNkZWZpbmUgUFJPQkVfQ1BVX0QwX09GRlNFVCAoUFJPQkVfRklSU1RfRlBS
RUdfT0ZGU0VUICsgKDAgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QxX09GRlNF
VCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDEgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUg
UFJPQkVfQ1BVX0QyX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDIgKiBGUFJF
R19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QzX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdf
T0ZGU0VUICsgKDMgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q0X09GRlNFVCAo
UFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDQgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJP
QkVfQ1BVX0Q1X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDUgKiBGUFJFR19T
SVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q2X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZG
U0VUICsgKDYgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q3X09GRlNFVCAoUFJP
QkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDcgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVf
Q1BVX0Q4X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDggKiBGUFJFR19TSVpF
KSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0Q5X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VU
ICsgKDkgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QxMF9PRkZTRVQgKFBST0JF
X0ZJUlNUX0ZQUkVHX09GRlNFVCArICgxMCAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9D
UFVfRDExX09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDExICogRlBSRUdfU0la
RSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMTJfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZT
RVQgKyAoMTIgKiBGUFJFR19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QxM19PRkZTRVQgKFBS
T0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgxMyAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9C
RV9DUFVfRDE0X09GRlNFVCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDE0ICogRlBSRUdf
U0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMTVfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19P
RkZTRVQgKyAoMTUgKiBGUFJFR19TSVpFKSkKLQotI2lmIENQVShBUk1fTkVPTikgfHwgQ1BVKEFS
TV9WRlBfVjNfRDMyKQotI2RlZmluZSBQUk9CRV9DUFVfRDE2X09GRlNFVCAoUFJPQkVfRklSU1Rf
RlBSRUdfT0ZGU0VUICsgKDE2ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9EMTdf
T0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMTcgKiBGUFJFR19TSVpFKSkKLSNk
ZWZpbmUgUFJPQkVfQ1BVX0QxOF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCArICgx
OCAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDE5X09GRlNFVCAoUFJPQkVfRklS
U1RfRlBSRUdfT0ZGU0VUICsgKDE5ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQVV9E
MjBfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjAgKiBGUFJFR19TSVpFKSkK
LSNkZWZpbmUgUFJPQkVfQ1BVX0QyMV9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNFVCAr
ICgyMSAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDIyX09GRlNFVCAoUFJPQkVf
RklSU1RfRlBSRUdfT0ZGU0VUICsgKDIyICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JFX0NQ
VV9EMjNfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjMgKiBGUFJFR19TSVpF
KSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QyNF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09GRlNF
VCArICgyNCAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDI1X09GRlNFVCAoUFJP
QkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDI1ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBST0JF
X0NQVV9EMjZfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjYgKiBGUFJFR19T
SVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QyN19PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVHX09G
RlNFVCArICgyNyAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDI4X09GRlNFVCAo
UFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDI4ICogRlBSRUdfU0laRSkpCi0jZGVmaW5lIFBS
T0JFX0NQVV9EMjlfT0ZGU0VUIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQgKyAoMjkgKiBGUFJF
R19TSVpFKSkKLSNkZWZpbmUgUFJPQkVfQ1BVX0QzMF9PRkZTRVQgKFBST0JFX0ZJUlNUX0ZQUkVH
X09GRlNFVCArICgzMCAqIEZQUkVHX1NJWkUpKQotI2RlZmluZSBQUk9CRV9DUFVfRDMxX09GRlNF
VCAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDMxICogRlBSRUdfU0laRSkpCi0KLSNkZWZp
bmUgUFJPQkVfU0laRSAoUFJPQkVfRklSU1RfRlBSRUdfT0ZGU0VUICsgKDMyICogRlBSRUdfU0la
RSkpCi0jZWxzZQotI2RlZmluZSBQUk9CRV9TSVpFIChQUk9CRV9GSVJTVF9GUFJFR19PRkZTRVQg
KyAoMTYgKiBGUFJFR19TSVpFKSkKLSNlbmRpZiAvLyBDUFUoQVJNX05FT04pIHx8IENQVShBUk1f
VkZQX1YzX0QzMikKLQotI2RlZmluZSBPVVRfU0laRSBHUFJFR19TSVpFCi0KLS8vIFRoZXNlIEFT
U0VSVHMgcmVtaW5kIHlvdSB0aGF0IGlmIHlvdSBjaGFuZ2UgdGhlIGxheW91dCBvZiBQcm9iZTo6
U3RhdGUsCi0vLyB5b3UgbmVlZCB0byBjaGFuZ2UgY3RpTWFzbVByb2JlVHJhbXBvbGluZSBvZmZz
ZXRzIGFib3ZlIHRvIG1hdGNoLgotI2RlZmluZSBQUk9CRV9PRkZTRVRPRih4KSBvZmZzZXRvZihz
dHJ1Y3QgUHJvYmU6OlN0YXRlLCB4KQotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihwcm9i
ZUZ1bmN0aW9uKSA9PSBQUk9CRV9QUk9CRV9GVU5DVElPTl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6
OnByb2JlRnVuY3Rpb24ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7
Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGFyZykgPT0gUFJPQkVfQVJHX09GRlNFVCwg
IlByb2JlOjpTdGF0ZTo6YXJnJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGlu
ZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihpbml0aWFsaXplU3RhY2tGdW5jdGlv
bikgPT0gUFJPQkVfSU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6Omlu
aXRpYWxpemVTdGFja0Z1bmN0aW9uJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBv
bGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihpbml0aWFsaXplU3RhY2tBcmcp
ID09IFBST0JFX0lOSVRfU1RBQ0tfQVJHX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6aW5pdGlhbGl6
ZVN0YWNrQXJnJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotCi1z
dGF0aWNfYXNzZXJ0KCEoUFJPQkVfQ1BVX1IwX09GRlNFVCAmIDB4MyksICJQcm9iZTo6U3RhdGU6
OmNwdS5ncHJzW3IwXSdzIG9mZnNldCBzaG91bGQgYmUgNCBieXRlIGFsaWduZWQiKTsKLQotc3Rh
dGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIwXSkgPT0g
UFJPQkVfQ1BVX1IwX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjBdJ3Mgb2Zmc2V0
IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9P
RkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIxXSkgPT0gUFJPQkVfQ1BVX1IxX09GRlNF
VCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVBy
b2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tB
Uk1SZWdpc3RlcnM6OnIyXSkgPT0gUFJPQkVfQ1BVX1IyX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6
Y3B1LmdwcnNbcjJdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwot
c3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIzXSkg
PT0gUFJPQkVfQ1BVX1IzX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjNdJ3Mgb2Zm
c2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9C
RV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI0XSkgPT0gUFJPQkVfQ1BVX1I0X09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjRdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3By
c1tBUk1SZWdpc3RlcnM6OnI1XSkgPT0gUFJPQkVfQ1BVX1I1X09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmdwcnNbcjVdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIp
Owotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI2
XSkgPT0gUFJPQkVfQ1BVX1I2X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjZdJ3Mg
b2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQ
Uk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnI3XSkgPT0gUFJPQkVfQ1BVX1I3
X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjddJ3Mgb2Zmc2V0IG1hdGNoZXMgY3Rp
TWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUu
Z3Byc1tBUk1SZWdpc3RlcnM6OnI4XSkgPT0gUFJPQkVfQ1BVX1I4X09GRlNFVCwgIlByb2JlOjpT
dGF0ZTo6Y3B1LmdwcnNbcjhdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGlu
ZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6
OnI5XSkgPT0gUFJPQkVfQ1BVX1I5X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbcjld
J3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2Vy
dChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIxMF0pID09IFBST0JFX0NQ
VV9SMTBfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1tyMTBdJ3Mgb2Zmc2V0IG1hdGNo
ZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRP
RihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnIxMV0pID09IFBST0JFX0NQVV9SMTFfT0ZGU0VULCAi
UHJvYmU6OlN0YXRlOjpjcHUuZ3Byc1tyMTFdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2Jl
VHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1S
ZWdpc3RlcnM6OmlwXSkgPT0gUFJPQkVfQ1BVX0lQX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1
LmdwcnNbaXBdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3Rh
dGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OnNwXSkgPT0g
UFJPQkVfQ1BVX1NQX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbc3BdJ3Mgb2Zmc2V0
IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9P
RkZTRVRPRihjcHUuZ3Byc1tBUk1SZWdpc3RlcnM6OmxyXSkgPT0gUFJPQkVfQ1BVX0xSX09GRlNF
VCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmdwcnNbbHJdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVBy
b2JlVHJhbXBvbGluZSIpOwotc3RhdGljX2Fzc2VydChQUk9CRV9PRkZTRVRPRihjcHUuZ3Byc1tB
Uk1SZWdpc3RlcnM6OnBjXSkgPT0gUFJPQkVfQ1BVX1BDX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6
Y3B1LmdwcnNbcGNdJ3Mgb2Zmc2V0IG1hdGNoZXMgY3RpTWFzbVByb2JlVHJhbXBvbGluZSIpOwot
Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5zcHJzW0FSTVJlZ2lzdGVyczo6YXBz
cl0pID09IFBST0JFX0NQVV9BUFNSX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LnNwcnNbYXBz
cl0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNz
ZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5zcHJzW0FSTVJlZ2lzdGVyczo6ZnBzY3JdKSA9PSBQUk9C
RV9DUFVfRlBTQ1JfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuc3Byc1tmcHNjcl0ncyBvZmZz
ZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci0KLXN0YXRpY19hc3NlcnQoIShQ
Uk9CRV9DUFVfRDBfT0ZGU0VUICYgMHg3KSwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDBdJ3Mg
b2Zmc2V0IHNob3VsZCBiZSA4IGJ5dGUgYWxpZ25lZCIpOwotCi1zdGF0aWNfYXNzZXJ0KFBST0JF
X09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDBdKSA9PSBQUk9CRV9DUFVfRDBfT0ZG
U0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkMF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNt
UHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJz
W0FSTVJlZ2lzdGVyczo6ZDFdKSA9PSBQUk9CRV9DUFVfRDFfT0ZGU0VULCAiUHJvYmU6OlN0YXRl
OjpjcHUuZnByc1tkMV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7
Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDJd
KSA9PSBQUk9CRV9DUFVfRDJfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkMl0ncyBv
ZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBS
T0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDNdKSA9PSBQUk9CRV9DUFVfRDNf
T0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkM10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlN
YXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5m
cHJzW0FSTVJlZ2lzdGVyczo6ZDRdKSA9PSBQUk9CRV9DUFVfRDRfT0ZGU0VULCAiUHJvYmU6OlN0
YXRlOjpjcHUuZnByc1tkNF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5l
Iik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6
ZDVdKSA9PSBQUk9CRV9DUFVfRDVfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkNV0n
cyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0
KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDZdKSA9PSBQUk9CRV9DUFVf
RDZfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkNl0ncyBvZmZzZXQgbWF0Y2hlcyBj
dGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNw
dS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDddKSA9PSBQUk9CRV9DUFVfRDdfT0ZGU0VULCAiUHJvYmU6
OlN0YXRlOjpjcHUuZnByc1tkN10ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9s
aW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVy
czo6ZDhdKSA9PSBQUk9CRV9DUFVfRDhfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tk
OF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNz
ZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDldKSA9PSBQUk9CRV9D
UFVfRDlfT0ZGU0VULCAiUHJvYmU6OlN0YXRlOjpjcHUuZnByc1tkOV0ncyBvZmZzZXQgbWF0Y2hl
cyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9G
KGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDEwXSkgPT0gUFJPQkVfQ1BVX0QxMF9PRkZTRVQsICJQ
cm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxMF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVU
cmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJl
Z2lzdGVyczo6ZDExXSkgPT0gUFJPQkVfQ1BVX0QxMV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNw
dS5mcHJzW2QxMV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1z
dGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDEyXSkg
PT0gUFJPQkVfQ1BVX0QxMl9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxMl0ncyBv
ZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBS
T0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDEzXSkgPT0gUFJPQkVfQ1BVX0Qx
M19PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5mcHJzW2QxM10ncyBvZmZzZXQgbWF0Y2hlcyBj
dGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNw
dS5mcHJzW0FSTVJlZ2lzdGVyczo6ZDE0XSkgPT0gUFJPQkVfQ1BVX0QxNF9PRkZTRVQsICJQcm9i
ZTo6U3RhdGU6OmNwdS5mcHJzW2QxNF0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFt
cG9saW5lIik7Ci1zdGF0aWNfYXNzZXJ0KFBST0JFX09GRlNFVE9GKGNwdS5mcHJzW0FSTVJlZ2lz
dGVyczo6ZDE1XSkgPT0gUFJPQkVfQ1BVX0QxNV9PRkZTRVQsICJQcm9iZTo6U3RhdGU6OmNwdS5m
cHJzW2QxNV0ncyBvZmZzZXQgbWF0Y2hlcyBjdGlNYXNtUHJvYmVUcmFtcG9saW5lIik7Ci0KLSNp
ZiBDUFUoQVJNX05FT04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikKLXN0YXRpY19hc3NlcnQoUFJP
QkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMTZdKSA9PSBQUk9CRV9DUFVfRDE2
X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDE2XSdzIG9mZnNldCBtYXRjaGVzIGN0
aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1
LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMTddKSA9PSBQUk9CRV9DUFVfRDE3X09GRlNFVCwgIlByb2Jl
OjpTdGF0ZTo6Y3B1LmZwcnNbZDE3XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0
ZXJzOjpkMThdKSA9PSBQUk9CRV9DUFVfRDE4X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZw
cnNbZDE4XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRp
Y19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMTldKSA9PSBQ
Uk9CRV9DUFVfRDE5X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDE5XSdzIG9mZnNl
dCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVf
T0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjBdKSA9PSBQUk9CRV9DUFVfRDIwX09G
RlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDIwXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1h
c21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZw
cnNbQVJNUmVnaXN0ZXJzOjpkMjFdKSA9PSBQUk9CRV9DUFVfRDIxX09GRlNFVCwgIlByb2JlOjpT
dGF0ZTo6Y3B1LmZwcnNbZDIxXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJz
OjpkMjJdKSA9PSBQUk9CRV9DUFVfRDIyX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNb
ZDIyXSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19h
c3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjNdKSA9PSBQUk9C
RV9DUFVfRDIzX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDIzXSdzIG9mZnNldCBt
YXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZG
U0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjRdKSA9PSBQUk9CRV9DUFVfRDI0X09GRlNF
VCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI0XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNb
QVJNUmVnaXN0ZXJzOjpkMjVdKSA9PSBQUk9CRV9DUFVfRDI1X09GRlNFVCwgIlByb2JlOjpTdGF0
ZTo6Y3B1LmZwcnNbZDI1XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUi
KTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpk
MjZdKSA9PSBQUk9CRV9DUFVfRDI2X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI2
XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3Nl
cnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjddKSA9PSBQUk9CRV9D
UFVfRDI3X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI3XSdzIG9mZnNldCBtYXRj
aGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VU
T0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMjhdKSA9PSBQUk9CRV9DUFVfRDI4X09GRlNFVCwg
IlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDI4XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJN
UmVnaXN0ZXJzOjpkMjldKSA9PSBQUk9CRV9DUFVfRDI5X09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6
Y3B1LmZwcnNbZDI5XSdzIG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsK
LXN0YXRpY19hc3NlcnQoUFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMzBd
KSA9PSBQUk9CRV9DUFVfRDMwX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDMwXSdz
IG9mZnNldCBtYXRjaGVzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLXN0YXRpY19hc3NlcnQo
UFJPQkVfT0ZGU0VUT0YoY3B1LmZwcnNbQVJNUmVnaXN0ZXJzOjpkMzFdKSA9PSBQUk9CRV9DUFVf
RDMxX09GRlNFVCwgIlByb2JlOjpTdGF0ZTo6Y3B1LmZwcnNbZDMxXSdzIG9mZnNldCBtYXRjaGVz
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUiKTsKLSNlbmRpZiAvLyBDUFUoQVJNX05FT04pIHx8IENQ
VShBUk1fVkZQX1YzX0QzMikKLQotc3RhdGljX2Fzc2VydChzaXplb2YoUHJvYmU6OlN0YXRlKSA9
PSBQUk9CRV9TSVpFLCAiUHJvYmU6OlN0YXRlJ3Mgc2l6ZSBtYXRjaGVzIGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmUiKTsKLSN1bmRlZiBQUk9CRV9PRkZTRVRPRgotCi1zdHJ1Y3QgSW5jb21pbmdSZWNv
cmQgewotICAgIHVpbnRwdHJfdCBscjsKLSAgICB1aW50cHRyX3QgaXA7Ci0gICAgdWludHB0cl90
IHI2OwotICAgIHVpbnRwdHJfdCByMDsKLSAgICB1aW50cHRyX3QgcjE7Ci0gICAgdWludHB0cl90
IHIyOwotfTsKLQotI2RlZmluZSBJTl9MUl9PRkZTRVQgKDAgKiBQVFJfU0laRSkKLSNkZWZpbmUg
SU5fSVBfT0ZGU0VUICgxICogUFRSX1NJWkUpCi0jZGVmaW5lIElOX1I2X09GRlNFVCAoMiAqIFBU
Ul9TSVpFKQotI2RlZmluZSBJTl9SMF9PRkZTRVQgKDMgKiBQVFJfU0laRSkKLSNkZWZpbmUgSU5f
UjFfT0ZGU0VUICg0ICogUFRSX1NJWkUpCi0jZGVmaW5lIElOX1IyX09GRlNFVCAoNSAqIFBUUl9T
SVpFKQotI2RlZmluZSBJTl9TSVpFICAgICAgKDYgKiBQVFJfU0laRSkKLQotc3RhdGljX2Fzc2Vy
dChJTl9MUl9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIGxyKSwgIklOX0xSX09G
RlNFVCBpcyBpbmNvcnJlY3QiKTsKLXN0YXRpY19hc3NlcnQoSU5fSVBfT0ZGU0VUID09IG9mZnNl
dG9mKEluY29taW5nUmVjb3JkLCBpcCksICJJTl9JUF9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7Ci1z
dGF0aWNfYXNzZXJ0KElOX1I2X09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjYp
LCAiSU5fUjZfT0ZGU0VUIGlzIGluY29ycmVjdCIpOwotc3RhdGljX2Fzc2VydChJTl9SMF9PRkZT
RVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIHIwKSwgIklOX1IwX09GRlNFVCBpcyBpbmNv
cnJlY3QiKTsKLXN0YXRpY19hc3NlcnQoSU5fUjFfT0ZGU0VUID09IG9mZnNldG9mKEluY29taW5n
UmVjb3JkLCByMSksICJJTl9SMV9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7Ci1zdGF0aWNfYXNzZXJ0
KElOX1IyX09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjIpLCAiSU5fUjJfT0ZG
U0VUIGlzIGluY29ycmVjdCIpOwotc3RhdGljX2Fzc2VydChJTl9TSVpFID09IHNpemVvZihJbmNv
bWluZ1JlY29yZCksICJJTl9TSVpFIGlzIGluY29ycmVjdCIpOwotCi1hc20gKAotICAgICIudGV4
dCIgIlxuIgotICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUpICJcbiIKLSAgICBISURFX1NZTUJPTChjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiXG4iCi0g
ICAgSU5MSU5FX0FSTV9GVU5DVElPTihjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiXG4iCi0gICAg
U1lNQk9MX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSAiOiIgIlxuIgotCi0gICAgLy8g
TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cHJvYmUoKSBoYXMgYWxyZWFkeSBnZW5lcmF0ZWQgY29kZSB0
byBzdG9yZSBzb21lIHZhbHVlcy4KLSAgICAvLyBUaGUgdG9wIG9mIHN0YWNrIG5vdyBjb250YWlu
cyB0aGUgSW5jb21pbmdSZWNvcmQuCi0gICAgLy8KLSAgICAvLyBJbmNvbWluZyByZWdpc3RlciB2
YWx1ZXM6Ci0gICAgLy8gICAgIHIwOiBwcm9iZSBmdW5jdGlvbgotICAgIC8vICAgICByMTogcHJv
YmUgYXJnCi0gICAgLy8gICAgIHIyOiBQcm9iZTo6ZXhlY3V0ZVByb2JlCi0gICAgLy8gICAgIHI2
OiBzY3JhdGNoCi0gICAgLy8gICAgIGlwOiBzY3JhdGNoLCB3YXMgY3RpTWFzbVByb2JlVHJhbXBv
bGluZQotICAgIC8vICAgICBscjogcmV0dXJuIGFkZHJlc3MKLQotICAgICJtb3YgICAgICAgaXAs
IHNwIiAiXG4iCi0gICAgIm1vdiAgICAgICByNiwgc3AiICJcbiIKLSAgICAic3ViICAgICAgIHI2
LCByNiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkgIlxuIgot
Ci0gICAgLy8gVGhlIEFSTSBFQUJJIHNwZWNpZmllcyB0aGF0IHRoZSBzdGFjayBuZWVkcyB0byBi
ZSAxNiBieXRlIGFsaWduZWQuCi0gICAgImJpYyAgICAgICByNiwgcjYsICMweGYiICJcbiIKLSAg
ICAibW92ICAgICAgIHNwLCByNiIgIlxuIiAvLyBTZXQgdGhlIHNwIHRvIHByb3RlY3QgdGhlIFBy
b2JlOjpTdGF0ZSBmcm9tIGludGVycnVwdHMgYmVmb3JlIHdlIGluaXRpYWxpemUgaXQuCi0KLSAg
ICAic3RyICAgICAgIHIwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9QUk9CRV9G
VU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCi0gICAgInN0ciAgICAgICByMSwgW3NwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQVJHX09GRlNFVCkgIl0iICJcbiIKLSAgICAic3RyICAgICAg
IGxyLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUENfT0ZGU0VUKSAiXSIg
IlxuIgotCi0gICAgImFkZCAgICAgICByMCwgaXAsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9T
SVpFKSAiXG4iCi0gICAgInN0ciAgICAgICByMCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIKLQotICAgICJhZGQgICAgICAgbHIsIHNwLCAj
IiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1IzX09GRlNFVCkgIlxuIgotICAgICJzdG1p
YSAgICAgbHIsIHsgcjMtcjUgfSIgIlxuIgotICAgICJhZGQgICAgICAgbHIsIHNwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1I3X09GRlNFVCkgIlxuIgotICAgICJzdG1pYSAgICAg
bHIsIHsgcjctcjExIH0iICJcbiIKLSAgICAibXJzICAgICAgIGxyLCBBUFNSIiAiXG4iCi0gICAg
InN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0FQU1Jf
T0ZGU0VUKSAiXSIgIlxuIgotICAgICJ2bXJzICAgICAgbHIsIEZQU0NSIiAiXG4iCi0gICAgInN0
ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0ZQU0NSX09G
RlNFVCkgIl0iICJcbiIKLQotICAgICJsZHIgICAgICAgcjQsIFtpcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKElOX0xSX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIHI1LCBbaXAsICMi
IFNUUklOR0laRV9WQUxVRV9PRihJTl9JUF9PRkZTRVQpICJdIiAiXG4iCi0gICAgImxkciAgICAg
ICByNiwgW2lwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fUjZfT0ZGU0VUKSAiXSIgIlxuIgot
ICAgICJsZHIgICAgICAgcjcsIFtpcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1IwX09GRlNF
VCkgIl0iICJcbiIKLSAgICAibGRyICAgICAgIHI4LCBbaXAsICMiIFNUUklOR0laRV9WQUxVRV9P
RihJTl9SMV9PRkZTRVQpICJdIiAiXG4iCi0gICAgImxkciAgICAgICByOSwgW2lwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoSU5fUjJfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAgcjQs
IFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9MUl9PRkZTRVQpICJdIiAiXG4i
Ci0gICAgInN0ciAgICAgICByNSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BV
X0lQX09GRlNFVCkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIHI2LCBbc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfUjZfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJzdHIgICAgICAg
cjcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9SMF9PRkZTRVQpICJdIiAi
XG4iCi0gICAgInN0ciAgICAgICByOCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVf
Q1BVX1IxX09GRlNFVCkgIl0iICJcbiIKLSAgICAic3RyICAgICAgIHI5LCBbc3AsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfUjJfT0ZGU0VUKSAiXSIgIlxuIgotCi0gICAgImFkZCAg
ICAgICBpcCwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRDBfT0ZGU0VUKSAi
XG4iCi0gICAgInZzdG1pYS42NCBpcCEsIHsgZDAtZDE1IH0iICJcbiIKLSNpZiBDUFUoQVJNX05F
T04pIHx8IENQVShBUk1fVkZQX1YzX0QzMikKLSAgICAidnN0bWlhLjY0IGlwISwgeyBkMTYtZDMx
IH0iICJcbiIKLSNlbmRpZgotCi0gICAgLy8gcjUgaXMgYSBjYWxsZWUgc2F2ZWQgcmVnaXN0ZXIu
IFdlJ2xsIHVzZSBpdCBmb3IgcHJlc2VydmluZyB0aGUgUHJvYmU6OlN0YXRlKi4KLSAgICAvLyBo
dHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjE0MTkvYXJtLXRvLWMtY2FsbGlu
Zy1jb252ZW50aW9uLXJlZ2lzdGVycy10by1zYXZlIzI2MTQ5NgotICAgICJtb3YgICAgICAgcjUs
IHNwIiAiXG4iCi0KLSAgICAibW92ICAgICAgIHIwLCBzcCIgIlxuIiAvLyB0aGUgUHJvYmU6OlN0
YXRlKiBhcmcuCi0gICAgImJseCAgICAgICByMiIgIlxuIiAvLyBDYWxsIFByb2JlOjpleGVjdXRl
UHJvYmUuCi0KLSAgICAvLyBNYWtlIHN1cmUgdGhlIFByb2JlOjpTdGF0ZSBpcyBlbnRpcmVseSBi
ZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBvaW50ZXIgc28KLSAgICAvLyB0aGF0IHJlZ2lzdGVyIHZh
bHVlcyBhcmUgc3RpbGwgcHJlc2VydmVkIHdoZW4gd2UgY2FsbCB0aGUgaW5pdGlhbGl6ZVN0YWNr
Ci0gICAgLy8gZnVuY3Rpb24uCi0gICAgImxkciAgICAgICByMSwgW3I1LCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIgLy8gUmVzdWx0IHNwLgotICAg
ICJhZGQgICAgICAgcjIsIHI1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRSArIE9V
VF9TSVpFKSAiXG4iIC8vIEVuZCBvZiBQcm92ZUNvbnRleHQgKyBidWZmZXIuCi0gICAgImNtcCAg
ICAgICByMSwgcjIiICJcbiIKLSAgICAiYmdlICAgICAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlN
YXNtUHJvYmVUcmFtcG9saW5lUHJvYmVTdGF0ZUlzU2FmZSkgIlxuIgotCi0gICAgLy8gQWxsb2Nh
dGUgYSBzYWZlIHBsYWNlIG9uIHRoZSBzdGFjayBiZWxvdyB0aGUgcmVzdWx0IHN0YWNrIHBvaW50
ZXIgdG8gc3Rhc2ggdGhlIFByb2JlOjpTdGF0ZS4KLSAgICAic3ViICAgICAgIHIxLCByMSwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUgKyBPVVRfU0laRSkgIlxuIgotICAgICJiaWMg
ICAgICAgcjEsIHIxLCAjMHhmIiAiXG4iIC8vIFRoZSBBUk0gRUFCSSBzcGVjaWZpZXMgdGhhdCB0
aGUgc3RhY2sgbmVlZHMgdG8gYmUgMTYgYnl0ZSBhbGlnbmVkLgotICAgICJtb3YgICAgICAgc3As
IHIxIiAiXG4iIC8vIFNldCB0aGUgbmV3IHNwIHRvIHByb3RlY3QgdGhhdCBtZW1vcnkgZnJvbSBp
bnRlcnJ1cHRzIGJlZm9yZSB3ZSBjb3B5IHRoZSBQcm9iZTo6U3RhdGUuCi0KLSAgICAvLyBDb3B5
IHRoZSBQcm9iZTo6U3RhdGUgdG8gdGhlIHNhZmUgcGxhY2UuCi0gICAgLy8gTm90ZTogd2UgaGF2
ZSB0byBjb3B5IGZyb20gbG93IGFkZHJlc3MgdG8gaGlnaGVyIGFkZHJlc3MgYmVjYXVzZSB3ZSdy
ZSBtb3ZpbmcgdGhlCi0gICAgLy8gUHJvYmU6OlN0YXRlIHRvIGEgbG93ZXIgYWRkcmVzcy4KLSAg
ICAiYWRkICAgICAgIHI3LCByNSwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkUpICJc
biIKLQotICAgIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNtUHJvYmVUcmFtcG9saW5lQ29weUxv
b3ApICI6IiAiXG4iCi0gICAgImxkciAgICAgICByMywgW3I1XSwgIzQiICJcbiIKLSAgICAibGRy
ICAgICAgIHI0LCBbcjVdLCAjNCIgIlxuIgotICAgICJzdHIgICAgICAgcjMsIFtyMV0sICM0IiAi
XG4iCi0gICAgInN0ciAgICAgICByNCwgW3IxXSwgIzQiICJcbiIKLSAgICAiY21wICAgICAgIHI1
LCByNyIgIlxuIgotICAgICJibHQgICAgICIgTE9DQUxfTEFCRUxfU1RSSU5HKGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmVDb3B5TG9vcCkgIlxuIgotCi0gICAgIm1vdiAgICAgICByNSwgc3AiICJcbiIK
LQotICAgIC8vIENhbGwgaW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gaWYgcHJlc2VudC4KLSAgICBM
T0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZVByb2JlU3RhdGVJc1NhZmUp
ICI6IiAiXG4iCi0gICAgImxkciAgICAgICByMiwgW3I1LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfSU5JVF9TVEFDS19GVU5DVElPTl9PRkZTRVQpICJdIiAiXG4iCi0gICAgImNtcCAgICAg
ICByMiwgIzAiICJcbiIKLSAgICAiYmVxICAgICAiIExPQ0FMX0xBQkVMX1NUUklORyhjdGlNYXNt
UHJvYmVUcmFtcG9saW5lUmVzdG9yZVJlZ2lzdGVycykgIlxuIgotCi0gICAgIm1vdiAgICAgICBy
MCwgcjUiICJcbiIgLy8gU2V0IHRoZSBQcm9iZTo6U3RhdGUqIGFyZy4KLSAgICAiYmx4ICAgICAg
IHIyIiAiXG4iIC8vIENhbGwgdGhlIGluaXRpYWxpemVTdGFja0Z1bmN0aW9uIChsb2FkZWQgaW50
byByMiBhYm92ZSkuCi0KLSAgICBMT0NBTF9MQUJFTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBv
bGluZVJlc3RvcmVSZWdpc3RlcnMpICI6IiAiXG4iCi0KLSAgICAibW92ICAgICAgIHNwLCByNSIg
IlxuIiAvLyBFbnN1cmUgdGhhdCBzcCBwb2ludHMgdG8gdGhlIFByb2JlOjpTdGF0ZSouCi0KLSAg
ICAvLyBUbyBlbmFibGUgcHJvYmVzIHRvIG1vZGlmeSByZWdpc3RlciBzdGF0ZSwgd2UgY29weSBh
bGwgcmVnaXN0ZXJzCi0gICAgLy8gb3V0IG9mIHRoZSBQcm9iZTo6U3RhdGUgYmVmb3JlIHJldHVy
bmluZy4KLQotI2lmIENQVShBUk1fTkVPTikgfHwgQ1BVKEFSTV9WRlBfVjNfRDMyKQotICAgICJh
ZGQgICAgICAgaXAsIHNwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0QzMV9PRkZT
RVQgKyBGUFJFR19TSVpFKSAiXG4iCi0gICAgInZsZG1kYi42NCBpcCEsIHsgZDE2LWQzMSB9IiAi
XG4iCi0gICAgInZsZG1kYi42NCBpcCEsIHsgZDAtZDE1IH0iICJcbiIKLSNlbHNlCi0gICAgImFk
ZCAgICAgICBpcCwgc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfRDE1X09GRlNF
VCArIEZQUkVHX1NJWkUpICJcbiIKLSAgICAidmxkbWRiLjY0IGlwISwgeyBkMC1kMTUgfSIgIlxu
IgotI2VuZGlmCi0KLSAgICAiYWRkICAgICAgIGlwLCBzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KFBST0JFX0NQVV9SMTFfT0ZGU0VUICsgR1BSRUdfU0laRSkgIlxuIgotICAgICJsZG1kYiAgICAg
aXAsIHsgcjAtcjExIH0iICJcbiIKLSAgICAibGRyICAgICAgIGlwLCBbc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfRlBTQ1JfT0ZGU0VUKSAiXSIgIlxuIgotICAgICJ2bXNyICAg
ICAgRlBTQ1IsIGlwIiAiXG4iCi0KLSAgICAvLyBUaGVyZSBhcmUgNSBtb3JlIHJlZ2lzdGVycyBs
ZWZ0IHRvIHJlc3RvcmU6IGlwLCBzcCwgbHIsIHBjLCBhbmQgYXBzci4KLQotICAgIC8vIFNldCB1
cCB0aGUgcmVzdG9yZSBhcmVhIGZvciBzcCBhbmQgcGMuCi0gICAgImxkciAgICAgICBsciwgW3Nw
LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIKLQot
ICAgIC8vIFB1c2ggdGhlIHBjIG9uIHRvIHRoZSByZXN0b3JlIGFyZWEuCi0gICAgImxkciAgICAg
ICBpcCwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1BDX09GRlNFVCkgIl0i
ICJcbiIKLSAgICAic3ViICAgICAgIGxyLCBsciwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKE9VVF9T
SVpFKSAiXG4iCi0gICAgInN0ciAgICAgICBpcCwgW2xyXSIgIlxuIgotICAgIC8vIFBvaW50IHNw
IHRvIHRoZSByZXN0b3JlIGFyZWEuCi0gICAgInN0ciAgICAgICBsciwgW3NwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1NQX09GRlNFVCkgIl0iICJcbiIKLQotICAgIC8vIEFsbCBk
b25lIHdpdGggbWF0aCBpLmUuIHdvbid0IHRyYXNoIHRoZSBzdGF0dXMgcmVnaXN0ZXIgKGFwc3Ip
IGFuZCBkb24ndCBuZWVkCi0gICAgLy8gc2NyYXRjaCByZWdpc3RlcnMgKGxyIGFuZCBpcCkgYW55
bW9yZS4gUmVzdG9yZSBhcHNyLCBsciwgYW5kIGlwLgotICAgICJsZHIgICAgICAgaXAsIFtzcCwg
IyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9BUFNSX09GRlNFVCkgIl0iICJcbiIKLSAg
ICAibXNyICAgICAgIEFQU1IsIGlwIiAiXG4iCi0gICAgImxkciAgICAgICBsciwgW3NwLCAjIiBT
VFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX0xSX09GRlNFVCkgIl0iICJcbiIKLSAgICAibGRy
ICAgICAgIGlwLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfSVBfT0ZGU0VU
KSAiXSIgIlxuIgotCi0gICAgLy8gUmVzdG9yZSB0aGUgc3AgYW5kIHBjLgotICAgICJsZHIgICAg
ICAgc3AsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9TUF9PRkZTRVQpICJd
IiAiXG4iCi0gICAgInBvcCAgICAgICB7IHBjIH0iICJcbiIKLSk7Ci0jZW5kaWYgLy8gQ09NUElM
RVIoR0NDX0NPTVBBVElCTEUpCi0KLXZvaWQgTWFjcm9Bc3NlbWJsZXI6OnByb2JlKFByb2JlOjpG
dW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogYXJnKQotewotICAgIHN1YjMyKFRydXN0ZWRJbW0zMihz
aXplb2YoSW5jb21pbmdSZWNvcmQpKSwgc3ApOwotCi0gICAgc3RvcmUzMihsciwgQWRkcmVzcyhz
cCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNvcmQsIGxyKSkpOwotICAgIHN0b3JlMzIoaXAsIEFkZHJl
c3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCBpcCkpKTsKLSAgICBzdG9yZTMyKHI2LCBB
ZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwgcjYpKSk7IC8vIFMwID09IHI2Lgot
ICAgIHN0b3JlMzIocjAsIEFkZHJlc3Moc3AsIG9mZnNldG9mKEluY29taW5nUmVjb3JkLCByMCkp
KTsKLSAgICBzdG9yZTMyKHIxLCBBZGRyZXNzKHNwLCBvZmZzZXRvZihJbmNvbWluZ1JlY29yZCwg
cjEpKSk7Ci0gICAgc3RvcmUzMihyMiwgQWRkcmVzcyhzcCwgb2Zmc2V0b2YoSW5jb21pbmdSZWNv
cmQsIHIyKSkpOwotICAgIC8vIFRoZSBmb2xsb3dpbmcgdXNlcyBSZWdpc3RlcklEOjpTMC4gU28s
IHRoZXkgbXVzdCBjb21lIGFmdGVyIHdlIHByZXNlcnZlIFMwIGFib3ZlLgotICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbikpLCByMCk7Ci0gICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFyZyksIHIxKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oUHJvYmU6OmV4ZWN1dGVQcm9iZSkpLCByMik7Ci0gICAgbW92
ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmUpKSwgaXApOwotICAgIG1fYXNzZW1ibGVyLmJseChpcCk7Ci19Ci0jZW5kaWYgLy8gRU5B
QkxFKE1BU01fUFJPQkUpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxF
KEFTU0VNQkxFUikgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZmE0ZGY1MTczNGE2ZDgxODljODMwZTc1MDM2Y2IwYjczYWM1ZjlmZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxNjc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJ
bmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKLSAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKEFS
TV9UUkFESVRJT05BTCkKLQotI2luY2x1ZGUgIkFSTUFzc2VtYmxlci5oIgotI2luY2x1ZGUgIkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXVzaW5nIEFzc2Vt
YmxlciA9IFRBUkdFVF9BU1NFTUJMRVI7Ci0KLWNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVi
bGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7Ci0gICAgc3RhdGljIGNvbnN0
IGludCBEb3VibGVDb25kaXRpb25NYXNrID0gMHgwZjsKLSAgICBzdGF0aWMgY29uc3QgaW50IERv
dWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwgPSAweDEwOwotICAgIENPTVBJTEVfQVNTRVJUKCEoRG91
YmxlQ29uZGl0aW9uQml0U3BlY2lhbCAmIERvdWJsZUNvbmRpdGlvbk1hc2spLCBEb3VibGVDb25k
aXRpb25CaXRTcGVjaWFsX3Nob3VsZF9ub3RfaW50ZXJmZXJlX3dpdGhfQVJNQXNzZW1ibGVyX0Nv
bmRpdGlvbl9jb2Rlcyk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bUdQ
UnMgPSAxNjsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtRlBScyA9IDE2OwotICAgIAot
ICAgIHR5cGVkZWYgQVJNUmVnaXN0ZXJzOjpGUFJlZ2lzdGVySUQgRlBSZWdpc3RlcklEOwotCi0g
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZGF0YVRlbXBSZWdpc3RlciA9IEFSTVJlZ2lzdGVy
czo6aXA7Ci0gICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9
IEFSTVJlZ2lzdGVyczo6cjY7Ci0KLSAgICBzdGF0aWMgY29uc3QgQVJNUmVnaXN0ZXJzOjpGUFJl
Z2lzdGVySUQgZnBUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmQ3OwotCi0gICAgZW51bSBS
ZWxhdGlvbmFsQ29uZGl0aW9uIHsKLSAgICAgICAgRXF1YWwgPSBBUk1Bc3NlbWJsZXI6OkVRLAot
ICAgICAgICBOb3RFcXVhbCA9IEFSTUFzc2VtYmxlcjo6TkUsCi0gICAgICAgIEFib3ZlID0gQVJN
QXNzZW1ibGVyOjpISSwKLSAgICAgICAgQWJvdmVPckVxdWFsID0gQVJNQXNzZW1ibGVyOjpDUywK
LSAgICAgICAgQmVsb3cgPSBBUk1Bc3NlbWJsZXI6OkNDLAotICAgICAgICBCZWxvd09yRXF1YWwg
PSBBUk1Bc3NlbWJsZXI6OkxTLAotICAgICAgICBHcmVhdGVyVGhhbiA9IEFSTUFzc2VtYmxlcjo6
R1QsCi0gICAgICAgIEdyZWF0ZXJUaGFuT3JFcXVhbCA9IEFSTUFzc2VtYmxlcjo6R0UsCi0gICAg
ICAgIExlc3NUaGFuID0gQVJNQXNzZW1ibGVyOjpMVCwKLSAgICAgICAgTGVzc1RoYW5PckVxdWFs
ID0gQVJNQXNzZW1ibGVyOjpMRQotICAgIH07Ci0KLSAgICBlbnVtIFJlc3VsdENvbmRpdGlvbiB7
Ci0gICAgICAgIE92ZXJmbG93ID0gQVJNQXNzZW1ibGVyOjpWUywKLSAgICAgICAgU2lnbmVkID0g
QVJNQXNzZW1ibGVyOjpNSSwKLSAgICAgICAgUG9zaXRpdmVPclplcm8gPSBBUk1Bc3NlbWJsZXI6
OlBMLAotICAgICAgICBaZXJvID0gQVJNQXNzZW1ibGVyOjpFUSwKLSAgICAgICAgTm9uWmVybyA9
IEFSTUFzc2VtYmxlcjo6TkUKLSAgICB9OwotCi0gICAgZW51bSBEb3VibGVDb25kaXRpb24gewot
ICAgICAgICAvLyBUaGVzZSBjb25kaXRpb25zIHdpbGwgb25seSBldmFsdWF0ZSB0byB0cnVlIGlm
IHRoZSBjb21wYXJpc29uIGlzIG9yZGVyZWQgLSBpLmUuIG5laXRoZXIgb3BlcmFuZCBpcyBOYU4u
Ci0gICAgICAgIERvdWJsZUVxdWFsID0gQVJNQXNzZW1ibGVyOjpFUSwKLSAgICAgICAgRG91Ymxl
Tm90RXF1YWwgPSBBUk1Bc3NlbWJsZXI6Ok5FIHwgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCwK
LSAgICAgICAgRG91YmxlR3JlYXRlclRoYW4gPSBBUk1Bc3NlbWJsZXI6OkdULAotICAgICAgICBE
b3VibGVHcmVhdGVyVGhhbk9yRXF1YWwgPSBBUk1Bc3NlbWJsZXI6OkdFLAotICAgICAgICBEb3Vi
bGVMZXNzVGhhbiA9IEFSTUFzc2VtYmxlcjo6Q0MsCi0gICAgICAgIERvdWJsZUxlc3NUaGFuT3JF
cXVhbCA9IEFSTUFzc2VtYmxlcjo6TFMsCi0gICAgICAgIC8vIElmIGVpdGhlciBvcGVyYW5kIGlz
IE5hTiwgdGhlc2UgY29uZGl0aW9ucyBhbHdheXMgZXZhbHVhdGUgdG8gdHJ1ZS4KLSAgICAgICAg
RG91YmxlRXF1YWxPclVub3JkZXJlZCA9IEFSTUFzc2VtYmxlcjo6RVEgfCBEb3VibGVDb25kaXRp
b25CaXRTcGVjaWFsLAotICAgICAgICBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkID0gQVJNQXNz
ZW1ibGVyOjpORSwKLSAgICAgICAgRG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZCA9IEFSTUFz
c2VtYmxlcjo6SEksCi0gICAgICAgIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVk
ID0gQVJNQXNzZW1ibGVyOjpDUywKLSAgICAgICAgRG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCA9
IEFSTUFzc2VtYmxlcjo6TFQsCi0gICAgICAgIERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRl
cmVkID0gQVJNQXNzZW1ibGVyOjpMRSwKLSAgICB9OwotCi0gICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgc3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnNwOwotICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIGZyYW1lUG9pbnRlclJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpm
cDsKLSAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBsaW5rUmVnaXN0ZXIgPSBBUk1SZWdpc3Rl
cnM6OmxyOwotCi0gICAgc3RhdGljIGNvbnN0IFNjYWxlIFNjYWxlUHRyID0gVGltZXNGb3VyOwot
Ci0gICAgdm9pZCBhZGQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIuYWRkcyhkZXN0LCBkZXN0LCBzcmMpOwotICAgIH0KLQotICAg
IHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRl
c3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGRzKGRlc3QsIG9wMSwgb3AyKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykK
LSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgYWRkMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVt
cFJlZ2lzdGVyLCBhZGRyZXNzKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZHMo
ZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyKSk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGQzMihBYnNvbHV0ZUFkZHJlc3Mgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1f
cHRyKSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFz
c2VtYmxlcjo6TG9hZFVpbnQzMiwgZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwg
MCk7Ci0gICAgICAgIGFkZDMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAg
IHZvaWQgYWRkMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IGxvYWQzMihzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBhZGQzMihkYXRhVGVtcFJl
Z2lzdGVyLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3JjLCBU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRzKGRlc3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyKSk7Ci0gICAgfQotCi0gICAgdm9pZCBnZXRFZmZlY3RpdmVBZGRyZXNz
KEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fz
c2VtYmxlci5hZGQoZGVzdCwgYWRkcmVzcy5iYXNlLCBtX2Fzc2VtYmxlci5sc2woYWRkcmVzcy5p
bmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSkpOwotICAgICAgICBpZiAoYWRk
cmVzcy5vZmZzZXQpCi0gICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZz
ZXQpLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmRzKGRlc3QsIGRl
c3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0
ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJp
dEFuZHMoZGVzdCwgb3AxLCBvcDIpOwotICAgIH0KLQotICAgIHZvaWQgYW5kMzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgQVJNV29yZCB3ID0gbV9h
c3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0cnVlKTsK
LSAgICAgICAgaWYgKHcgJiBBUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKQotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYmljcyhkZXN0LCBkZXN0LCB3ICYgfkFSTUFzc2VtYmxlcjo6
T3AySW52ZXJ0ZWRJbW1lZGlhdGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5iaXRBbmRzKGRlc3QsIGRlc3QsIHcpOwotICAgIH0KLQotICAgIHZvaWQgYW5kMzIoVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIEFSTVdvcmQgdyA9IG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVz
c1RlbXBSZWdpc3RlciwgdHJ1ZSk7Ci0gICAgICAgIGlmICh3ICYgQVJNQXNzZW1ibGVyOjpPcDJJ
bnZlcnRlZEltbWVkaWF0ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJpY3MoZGVzdCwgc3Jj
LCB3ICYgfkFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1lZGlhdGUpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmRzKGRlc3QsIHNyYywgdyk7Ci0gICAgfQot
Ci0gICAgdm9pZCBhbmQzMihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgbG9hZDMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGFuZDMyKGRhdGFU
ZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgYW5kMTYoQWRkcmVzcyBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQxNihzcmMsIGRhdGFUZW1wUmVn
aXN0ZXIpOwotICAgICAgICBhbmQzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKLSAgICB9Ci0K
LSAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIGxzaGlmdDMyKGRlc3QsIHNoaWZ0QW1vdW50LCBkZXN0KTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0
QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBUk1Xb3JkIHcgPSBBUk1B
c3NlbWJsZXI6OmdldE9wMkJ5dGUoMHgxZik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJpdEFuZChh
ZGRyZXNzVGVtcFJlZ2lzdGVyLCBzaGlmdEFtb3VudCwgdyk7Ci0KLSAgICAgICAgbV9hc3NlbWJs
ZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxlci5sc2xSZWdpc3RlcihzcmMsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9h
c3NlbWJsZXIubHNsKGRlc3QsIGltbS5tX3ZhbHVlICYgMHgxZikpOwotICAgIH0KLQotICAgIHZv
aWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIu
bHNsKHNyYywgaW1tLm1fdmFsdWUgJiAweDFmKSk7Ci0gICAgfQotCi0gICAgdm9pZCBtdWwzMihS
ZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIGlmIChvcDIgPT0gZGVzdCkgewotICAgICAgICAgICAgaWYgKG9wMSA9PSBkZXN0KSB7
Ci0gICAgICAgICAgICAgICAgbW92ZShvcDIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICAgICAgICAgIG9wMiA9IGFkZHJlc3NUZW1wUmVnaXN0ZXI7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIC8vIFN3YXAgdGhlIG9wZXJhbmRzLgotICAgICAgICAgICAgICAg
IFJlZ2lzdGVySUQgdG1wID0gb3AxOwotICAgICAgICAgICAgICAgIG9wMSA9IG9wMjsKLSAgICAg
ICAgICAgICAgICBvcDIgPSB0bXA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
bV9hc3NlbWJsZXIubXVscyhkZXN0LCBvcDEsIG9wMik7Ci0gICAgfQotCi0gICAgdm9pZCBtdWwz
MihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbXVsMzIo
c3JjLCBkZXN0LCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIG11bDMyKFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3Zl
KGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm11bHMoZGVz
dCwgc3JjLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIG5lZzMyKFJl
Z2lzdGVySUQgc3JjRGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnJzYnMoc3JjRGVz
dCwgc3JjRGVzdCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICB9Ci0KLSAgICB2
b2lkIG5lZzMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5yc2JzKGRlc3QsIHNyYywgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDAp
KTsKLSAgICB9Ci0KLSAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm9ycnMoZGVzdCwgZGVzdCwgc3JjKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0
KQotICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbG9hZDMyKEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3Rl
ciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBvcjMyKHNyYywgZGF0YVRlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rl
cik7Ci0gICAgfQotCi0gICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRk
cmVzcyBkZXN0KQotICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIp
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbG9hZDMyKEFkZHJlc3MoYWRkcmVzc1Rl
bXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBvcjMyKGltbSwgZGF0YVRl
bXBSZWdpc3Rlcik7IC8vIEl0IHVzZXMgUzAgYXMgdGVtcG9yYXJ5IHJlZ2lzdGVyLCB3ZSBuZWVk
IHRvIHJlbG9hZCB0aGUgYWRkcmVzcy4KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3Qu
bV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJl
Z2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9yMzIoVHJ1
c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbG9hZDMyKGFk
ZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBvcjMyKGltbSwgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlMzIoYWRkcmVz
c1RlbXBSZWdpc3RlciwgYWRkcmVzcyk7Ci0gICAgfQotCi0gICAgdm9pZCBvcjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChkZXN0ICE9
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5vcnJzKGRlc3QsIGRl
c3QsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcikp
OwotICAgIH0KLQotICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHNyYyAhPSBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIub3JycyhkZXN0LCBzcmMsIG1fYXNz
ZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0K
LQotICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVy
SUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm9ycnMoZGVzdCwgb3AxLCBvcDIp
OwotICAgIH0KLQotICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVn
aXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgcnNoaWZ0MzIoZGVzdCwgc2hpZnRBbW91bnQs
IGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFSTVdv
cmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgweDFmKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuYml0QW5kKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHNoaWZ0QW1vdW50LCB3KTsKLQotICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmFzclJlZ2lzdGVyKHNyYywgYWRk
cmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgcnNoaWZ0MzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgcnNoaWZ0MzIoZGVzdCwg
aW1tLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBpZiAoIWlt
bS5tX3ZhbHVlKQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVyLmFzcihzcmMsIGlt
bS5tX3ZhbHVlICYgMHgxZikpOwotICAgIH0KLQotICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVy
SUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIHVyc2hpZnQz
MihkZXN0LCBzaGlmdEFtb3VudCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCB1cnNoaWZ0MzIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIEFSTVdvcmQgdyA9IEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgweDFm
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYml0QW5kKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHNoaWZ0
QW1vdW50LCB3KTsKLQotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzKGRlc3QsIG1fYXNzZW1ibGVy
LmxzclJlZ2lzdGVyKHNyYywgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZv
aWQgdXJzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNyKGRlc3QsIGltbS5t
X3ZhbHVlICYgMHgxZikpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3Rl
cklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAg
ICAgaWYgKCFpbW0ubV92YWx1ZSkKLSAgICAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxlci5s
c3Ioc3JjLCBpbW0ubV92YWx1ZSAmIDB4MWYpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YjMyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5zdWJzKGRlc3QsIGRlc3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWIzMihSZWdpc3Rl
cklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLnN1YnMoZGVzdCwgbGVmdCwgcmlnaHQpOwotICAgIH0KLQotICAgIHZv
aWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuc3VicyhkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1f
dmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YjMyKFRy
dXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihh
ZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3ViMzIoaW1tLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHN1YjMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAg
ewotICAgICAgICBsb2FkMzIoc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3ViMzIo
ZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWIzMihSZWdpc3Rl
cklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuc3VicyhkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92
YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgIH0KLQotICAgIHZvaWQgeG9yMzIoUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmVvcnMoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIHhvcjMyKFJlZ2lzdGVy
SUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIuZW9ycyhkZXN0LCBvcDEsIG9wMik7Ci0gICAgfQotCi0gICAgdm9pZCB4b3Iz
MihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKHNy
YywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHhvcjMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRl
c3QpOwotICAgIH0KLQotICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubXZucyhkZXN0LCBkZXN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuZW9ycyhkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1f
dmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHhvcjMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewot
ICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5t
dm5zKGRlc3QsIHNyYyk7Ci0gICAgICAgIGVsc2UgICAgCi0gICAgICAgICAgICBtX2Fzc2VtYmxl
ci5lb3JzKGRlc3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKSk7Ci0gICAgfQotCi0gICAgdm9pZCBjb3VudExlYWRpbmdaZXJvczMyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotI2lmIFdURl9BUk1fQVJDSF9B
VF9MRUFTVCg1KQotICAgICAgICBtX2Fzc2VtYmxlci5jbHooZGVzdCwgc3JjKTsKLSNlbHNlCi0g
ICAgICAgIFVOVVNFRF9QQVJBTShzcmMpOwotICAgICAgICBVTlVTRURfUEFSQU0oZGVzdCk7Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAg
ICB2b2lkIGxvYWQ4KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6Okxv
YWRVaW50OCwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0g
ICAgdm9pZCBsb2FkOChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6Okxv
YWRVaW50OCwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxp
bnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBs
b2FkOChjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwg
ZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgMCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOFNp
Z25lZEV4dGVuZFRvMzIoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewot
ICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6OkxvYWRJbnQ4
LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lk
IGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0
KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3Nl
bWJsZXI6OkxvYWRJbnQ4LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRp
Y19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGxvYWQxNihJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQot
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyMTYoQVJNQXNzZW1ibGVyOjpM
b2FkVWludDE2LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0K
LSAgICB2b2lkIGxvYWQxNihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1Bc3NlbWJsZXI6
OkxvYWRVaW50MTYsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nh
c3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZv
aWQgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBk
ZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIxNihBUk1B
c3NlbWJsZXI6OkxvYWRJbnQxNiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBz
dGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQot
Ci0gICAgdm9pZCBsb2FkMzIoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjMyKEFSTUFzc2VtYmxl
cjo6TG9hZFVpbnQzMiwgZGVzdCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAg
fQotCi0gICAgdm9pZCBsb2FkMzIoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMzIoQVJNQXNzZW1i
bGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRp
Y19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSNp
ZiBDUFUoQVJNVjVfT1JfTE9XRVIpCi0gICAgdm9pZCBsb2FkMzJXaXRoVW5hbGlnbmVkSGFsZldv
cmRzKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpOwotI2Vsc2UKLSAgICB2b2lk
IGxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVy
SUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkZXN0KTsKLSAgICB9Ci0j
ZW5kaWYKLQotICAgIHZvaWQgbG9hZDE2VW5hbGlnbmVkKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkMTYoYWRkcmVzcywgZGVzdCk7Ci0gICAg
fQotCi0gICAgdm9pZCBhYm9ydFdpdGhSZWFzb24oQWJvcnRSZWFzb24gcmVhc29uKQotICAgIHsK
LSAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIocmVhc29uKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
Ci0gICAgICAgIGJyZWFrcG9pbnQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFib3J0V2l0aFJlYXNv
bihBYm9ydFJlYXNvbiByZWFzb24sIGludHB0cl90IG1pc2MpCi0gICAgewotICAgICAgICBtb3Zl
KFRydXN0ZWRJbW0zMihtaXNjKSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGFib3J0V2l0
aFJlYXNvbihyZWFzb24pOwotICAgIH0KLQotICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZl
cnRpYmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCh0aGlzKTsKLSAgICAgICAgQVNTRVJU
KGFkZHJlc3Mub2Zmc2V0ID49IDAgJiYgYWRkcmVzcy5vZmZzZXQgPD0gMjU1KTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0K
LSAgICBEYXRhTGFiZWwzMiBsb2FkMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MgYWRk
cmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgRGF0YUxhYmVsMzIgZGF0YUxh
YmVsKHRoaXMpOwotICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoYWRkcmVz
c1RlbXBSZWdpc3RlciwgMCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwUmVnaXN0ZXIoQVJN
QXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOwotICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwotICAgIH0KLQotICAgIHN0YXRpYyBi
b29sIGlzQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KHB0cmRpZmZfdCB2YWx1ZSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSA+PSAtNDA5NSAmJiB2YWx1ZSA8PSA0MDk1OwotICAg
IH0KLQotICAgIERhdGFMYWJlbENvbXBhY3QgbG9hZDMyV2l0aENvbXBhY3RBZGRyZXNzT2Zmc2V0
UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBE
YXRhTGFiZWxDb21wYWN0IGRhdGFMYWJlbCh0aGlzKTsKLSAgICAgICAgQVNTRVJUKGlzQ29tcGFj
dFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KGFkZHJlc3Mub2Zmc2V0KSk7Ci0gICAgICAgIGlmIChh
ZGRyZXNzLm9mZnNldCA+PSAwKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNz
ZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZHRyRG93bihBUk1Bc3NlbWJs
ZXI6OkxvYWRVaW50MzIsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAg
ICAgICByZXR1cm4gZGF0YUxhYmVsOwotICAgIH0KLQotICAgIERhdGFMYWJlbDMyIHN0b3JlMzJX
aXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCi0g
ICAgewotICAgICAgICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShhZGRyZXNzVGVtcFJlZ2lzdGVyLCAwKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuZHRyVXBSZWdpc3RlcihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBz
cmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBk
YXRhTGFiZWw7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJ
bmRleCBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNm
ZXIzMihBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDgsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7
Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVz
cyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVy
OjpTdG9yZVVpbnQ4LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0K
LQotICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQot
ICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVp
bnQ4LCBzcmMsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApOwotICAgIH0KLQotICAgIHZvaWQgc3Rv
cmU4KFRydXN0ZWRJbW0zMiBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAg
ICAgICAgVHJ1c3RlZEltbTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSkp
OwotICAgICAgICBtb3ZlKGltbTgsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBzdG9yZTgo
ZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTgoVHJ1
c3RlZEltbTMyIGltbSwgY29uc3Qgdm9pZCogYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIFRydXN0
ZWRJbW0zMiBpbW04KHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpKTsKLSAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSksIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtb3ZlKGltbTgsIGRhdGFUZW1wUmVnaXN0ZXIp
OwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJVcChBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDgsIGRh
dGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApOwotICAgIH0KLQotICAgIHZv
aWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCi0gICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjE2KEFSTUFzc2VtYmxlcjo6U3RvcmVV
aW50MTYsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+
KGFkZHJlc3Muc2NhbGUpLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9y
ZTE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjE2KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MTYs
IHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBz
dG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50
MzIsIHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5zZmVyMzIoQVJNQXNzZW1ibGVyOjpTdG9yZVVp
bnQzMiwgc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4o
YWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3Jl
MzIoVHJ1c3RlZEltbTMyIGltbSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAg
ICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlMzIoZGF0YVRl
bXBSZWdpc3RlciwgYWRkcmVzcyk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJ
bW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbW92ZShpbW0sIGRh
dGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlcjMy
KEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFz
ZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVz
cy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgY29u
c3Qgdm9pZCogYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUlt
bWVkaWF0ZShhZGRyZXNzVGVtcFJlZ2lzdGVyLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFk
ZHJlc3MpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVp
bnQzMiwgc3JjLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCAwKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0
b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgY29uc3Qgdm9pZCogYWRkcmVzcykKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShhZGRyZXNzVGVtcFJlZ2lzdGVyLCBy
ZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bW92ZUltbShpbW0ubV92YWx1ZSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIsIDApOwotICAgIH0KLQotICAgIHZvaWQgcG9wKFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnBvcChkZXN0KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHBvcFBhaXIoUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKLSAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLnBvcChkZXN0MSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnBv
cChkZXN0Mik7Ci0gICAgfQotCi0gICAgdm9pZCBwdXNoKFJlZ2lzdGVySUQgc3JjKQotICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIucHVzaChzcmMpOwotICAgIH0KLQotICAgIHZvaWQgcHVzaChB
ZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0YVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIHB1c2goZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAg
dm9pZCBwdXNoKFRydXN0ZWRJbW0zMiBpbW0pCi0gICAgewotICAgICAgICBtb3ZlKGltbSwgYWRk
cmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHB1c2goYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0g
ICAgfQotCi0gICAgdm9pZCBwdXNoUGFpcihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3Jj
MikKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnB1c2goc3JjMik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLnB1c2goc3JjMSk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmVJbW0o
aW1tLm1fdmFsdWUsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgbW92ZShSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBt
b3ZlKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBt
b3ZlKFRydXN0ZWRJbW0zMihpbW0pLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAoUmVn
aXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIpCi0gICAgewotICAgICAgICBtb3ZlKHJlZzEs
IGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtb3ZlKHJlZzIsIHJlZzEpOwotICAgICAgICBt
b3ZlKGRhdGFUZW1wUmVnaXN0ZXIsIHJlZzIpOwotICAgIH0KLQotICAgIHZvaWQgc3dhcChGUFJl
Z2lzdGVySUQgZnIxLCBGUFJlZ2lzdGVySUQgZnIyKQotICAgIHsKLSAgICAgICAgbW92ZURvdWJs
ZShmcjEsIGZwVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZURvdWJsZShmcjIsIGZyMSk7Ci0g
ICAgICAgIG1vdmVEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGZyMik7Ci0gICAgfQotCi0gICAgdm9p
ZCBzaWduRXh0ZW5kMzJUb1B0cihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAg
IHsKLSAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3Qp
OwotICAgIH0KLQotICAgIHZvaWQgemVyb0V4dGVuZDMyVG9QdHIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAg
ICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKLSAgICB7
Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1h
c2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIs
IHJpZ2h0OCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAg
IFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25k
aXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
Ojpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7
Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJz
b2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRy
dXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGxlZnQu
bV9wdHIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
Ojpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIp
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hQdHIoUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKLSAg
ICB7Ci0gICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKLSAgICB9Ci0KLSAg
ICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBSZWdpc3RlcklEIHJpZ2h0LCBpbnQgdXNlQ29uc3RhbnRQb29sID0gMCkKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0LCByaWdodCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1f
YXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCksIHVzZUNvbnN0YW50UG9vbCkpOwotICAg
IH0KLQotICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCwgaW50IHVzZUNvbnN0YW50UG9vbCA9IDApCi0g
ICAgewotICAgICAgICBpbnRlcm5hbENvbXBhcmUzMihsZWZ0LCByaWdodCk7Ci0gICAgICAgIHJl
dHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCksIHVzZUNvbnN0YW50
UG9vbCkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQpCi0gICAgewotICAgICAgICBsb2Fk
MzIocmlnaHQsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29u
ZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gzMihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkK
LSAgICB7Ci0gICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKLSAgICB9Ci0K
LSAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0
LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewotICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRl
bXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lz
dGVyLCByaWdodCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewotICAg
ICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFu
Y2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCk7Ci0gICAgfQotCi0gICAgSnVtcCBi
cmFuY2gzMldpdGhVbmFsaWduZWRIYWxmV29yZHMoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBC
YXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbG9hZDMy
V2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKLSAgICB9Ci0K
LSAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJl
c3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKLSAgICB7Ci0gICAgICAg
IFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRp
dGlvbigqdGhpcywgY29uZCwgbWFzayk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7
Ci0gICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFz
azgpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkp
Ci0gICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwotICAgICAgICBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRh
dGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIG1hc2s4KTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1h
c2sgPSBUcnVzdGVkSW1tMzIoLTEpKQotICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4
ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBt
YXNrKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVy
LCBtYXNrOCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBSZWdpc3RlcklEIG1hc2spCi0gICAgewotICAgICAgICBB
U1NFUlQoY29uZCA9PSBaZXJvIHx8IGNvbmQgPT0gTm9uWmVybyB8fCBjb25kID09IFNpZ25lZCB8
fCBjb25kID09IFBvc2l0aXZlT3JaZXJvKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudHN0KHJlZywg
bWFzayk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24o
Y29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0x
KSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjb25kID09IFplcm8gfHwgY29uZCA9PSBOb25aZXJv
IHx8IGNvbmQgPT0gU2lnbmVkIHx8IGNvbmQgPT0gUG9zaXRpdmVPclplcm8pOwotICAgICAgICBB
Uk1Xb3JkIHcgPSBtX2Fzc2VtYmxlci5nZXRJbW0obWFzay5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCB0cnVlKTsKLSAgICAgICAgaWYgKHcgJiBBUk1Bc3NlbWJsZXI6Ok9wMkludmVydGVk
SW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmljcyhhZGRyZXNzVGVtcFJlZ2lz
dGVyLCByZWcsIHcgJiB+QVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIHcpOwotICAgICAgICBy
ZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQot
Ci0gICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRk
cmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQotICAgIHsKLSAgICAg
ICAgbG9hZDMyKGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJh
bmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOwotICAgIH0KLQotICAgIEp1
bXAgYnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywg
VHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQotICAgIHsKLSAgICAgICAgbG9h
ZDMyKGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOwotICAgIH0KLQotICAgIEp1bXAganVt
cCgpCi0gICAgewotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoKSk7Ci0gICAg
fQotCi0gICAgdm9pZCBqdW1wKFJlZ2lzdGVySUQgdGFyZ2V0LCBQdHJUYWcpCi0gICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5ieCh0YXJnZXQpOwotICAgIH0KLQotICAgIHZvaWQganVtcChBZGRy
ZXNzIGFkZHJlc3MsIFB0clRhZykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBBUk1S
ZWdpc3RlcnM6OnBjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGp1bXAoQWJzb2x1dGVBZGRyZXNzIGFk
ZHJlc3MsIFB0clRhZykKLSAgICB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
Lm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKGFk
ZHJlc3NUZW1wUmVnaXN0ZXIsIDApLCBBUk1SZWdpc3RlcnM6OnBjKTsKLSAgICB9Ci0KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQganVtcChSZWdpc3RlcklEIHRhcmdldCwgUmVnaXN0ZXJJRCBqdW1w
VGFnKSB7IFVOVVNFRF9QQVJBTShqdW1wVGFnKSwganVtcCh0YXJnZXQsIE5vUHRyVGFnKTsgfQot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBqdW1wKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBq
dW1wVGFnKSB7IFVOVVNFRF9QQVJBTShqdW1wVGFnKSwganVtcChhZGRyZXNzLCBOb1B0clRhZyk7
IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQganVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywg
UmVnaXN0ZXJJRCBqdW1wVGFnKSB7IFVOVVNFRF9QQVJBTShqdW1wVGFnKSwganVtcChhZGRyZXNz
LCBOb1B0clRhZyk7IH0KLQotICAgIHZvaWQgbW92ZURvdWJsZVRvSW50cyhGUFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQotICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIudm1vdihkZXN0MSwgZGVzdDIsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBt
b3ZlSW50c1RvRG91YmxlKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBGUFJlZ2lz
dGVySUQgZGVzdCwgRlBSZWdpc3RlcklEKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1v
dihkZXN0LCBzcmMxLCBzcmMyKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8
IChjb25kID09IFplcm8pCi0gICAgICAgICAgICB8fCAoY29uZCA9PSBOb25aZXJvKSB8fCAoY29u
ZCA9PSBQb3NpdGl2ZU9yWmVybykpOwotICAgICAgICBhZGQzMihzcmMsIGRlc3QpOwotICAgICAg
ICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAg
fQotCi0gICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBB
U1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0g
WmVybykKLSAgICAgICAgICAgIHx8IChjb25kID09IE5vblplcm8pIHx8IChjb25kID09IFBvc2l0
aXZlT3JaZXJvKSk7Ci0gICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKLSAgICAgICAgcmV0
dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQot
ICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVy
ZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKQotICAgICAgICAgICAg
fHwgKGNvbmQgPT0gTm9uWmVybykgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pKTsKLSAgICAg
ICAgYWRkMzIoaW1tLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1w
KEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8
IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykKLSAgICAgICAgICAgIHx8IChjb25k
ID09IE5vblplcm8pIHx8IChjb25kID09IFBvc2l0aXZlT3JaZXJvKSk7Ci0gICAgICAgIGFkZDMy
KHNyYywgaW1tLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFS
TUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWdu
ZWQpIHx8IChjb25kID09IFplcm8pCi0gICAgICAgICAgICB8fCAoY29uZCA9PSBOb25aZXJvKSB8
fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykpOwotICAgICAgICBhZGQzMihpbW0sIGRlc3QpOwot
ICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7
Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihzcmMsIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgZGVz
dCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGVzdCk7Ci0gICAgfQotICAgIHZvaWQgbXVsbDMyKFJl
Z2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgaWYgKG9wMiA9PSBkZXN0KSB7Ci0gICAgICAgICAgICBpZiAob3AxID09IGRlc3QpIHsK
LSAgICAgICAgICAgICAgICBtb3ZlKG9wMiwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
ICAgICAgICAgb3AyID0gYWRkcmVzc1RlbXBSZWdpc3RlcjsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgLy8gU3dhcCB0aGUgb3BlcmFuZHMuCi0gICAgICAgICAgICAgICAg
UmVnaXN0ZXJJRCB0bXAgPSBvcDE7Ci0gICAgICAgICAgICAgICAgb3AxID0gb3AyOwotICAgICAg
ICAgICAgICAgIG9wMiA9IHRtcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBt
X2Fzc2VtYmxlci5tdWxsKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QsIG9wMSwgb3AyKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuY21wKGRhdGFUZW1wUmVnaXN0ZXIsIG1fYXNzZW1ibGVyLmFzcihkZXN0
LCAzMSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25l
ZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBpZiAo
Y29uZCA9PSBPdmVyZmxvdykgewotICAgICAgICAgICAgbXVsbDMyKHNyYzEsIHNyYzIsIGRlc3Qp
OwotICAgICAgICAgICAgY29uZCA9IE5vblplcm87Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbXVsMzIoc3JjMSwgc3JjMiwgZGVzdCk7Ci0gICAgICAgIHJldHVybiBKdW1w
KG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1w
IGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIHNyYywg
ZGVzdCwgZGVzdCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0g
U2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Ci0gICAgICAg
IGlmIChjb25kID09IE92ZXJmbG93KSB7Ci0gICAgICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBtdWxsMzIoYWRkcmVzc1RlbXBSZWdpc3Rlciwgc3Jj
LCBkZXN0KTsKLSAgICAgICAgICAgIGNvbmQgPSBOb25aZXJvOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG11bDMyKGltbSwgc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJu
IEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAg
IEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cp
IHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVy
bykpOwotICAgICAgICBzdWIzMihzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFu
Y2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29u
ZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLSAg
ICAgICAgc3ViMzIoaW1tLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIu
am1wKEFSTUNvbmRpdGlvbihjb25kKSkpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoU3ViMzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cp
IHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVy
bykpOwotICAgICAgICBzdWIzMihzcmMsIGltbSwgZGVzdCk7Ci0gICAgICAgIHJldHVybiBKdW1w
KG1fYXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1w
IGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0
ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9
PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29u
ZCA9PSBOb25aZXJvKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN1YnMoZGVzdCwgb3AxLCBvcDIp
OwotICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQp
KSk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hOZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBzcmNEZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJm
bG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5v
blplcm8pKTsKLSAgICAgICAgbmVnMzIoc3JjRGVzdCk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1f
YXNzZW1ibGVyLmptcChBUk1Db25kaXRpb24oY29uZCkpKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJy
YW5jaE9yMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9
PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Ci0gICAgICAgIG9yMzIoc3JjLCBkZXN0KTsK
LSAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam1wKEFSTUNvbmRpdGlvbihjb25kKSkp
OwotICAgIH0KLQotICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCgpCi0gICAgewotICAg
ICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQXNzZW1ibGVyOjpB
TCwgMSkpOwotICAgIH0KLQotICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoOChSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSkK
LSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBpbW04ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJz
OjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBpbW0pOwotICAgICAgICBNYWNyb0Fzc2Vt
YmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFU
ZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gcGF0Y2hhYmxlQnJhbmNoMzIoY29uZCwgZGF0
YVRlbXBSZWdpc3RlciwgaW1tOCk7Ci0gICAgfQotCi0gICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFi
bGVCcmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVz
dGVkSW1tMzIgaW1tKQotICAgIHsKLSAgICAgICAgaW50ZXJuYWxDb21wYXJlMzIocmVnLCBpbW0p
OwotICAgICAgICBKdW1wIGp1bXAobV9hc3NlbWJsZXIubG9hZEJyYW5jaFRhcmdldChkYXRhVGVt
cFJlZ2lzdGVyLCBBUk1Db25kaXRpb24oY29uZCksIHRydWUpKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuYngoZGF0YVRlbXBSZWdpc3RlciwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKLSAgICAgICAgcmV0
dXJuIFBhdGNoYWJsZUp1bXAoanVtcCk7Ci0gICAgfQotCi0gICAgUGF0Y2hhYmxlSnVtcCBwYXRj
aGFibGVCcmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywg
VHJ1c3RlZEltbTMyIGltbSkKLSAgICB7Ci0gICAgICAgIGludGVybmFsQ29tcGFyZTMyKGFkZHJl
c3MsIGltbSk7Ci0gICAgICAgIEp1bXAganVtcChtX2Fzc2VtYmxlci5sb2FkQnJhbmNoVGFyZ2V0
KGRhdGFUZW1wUmVnaXN0ZXIsIEFSTUNvbmRpdGlvbihjb25kKSwgZmFsc2UpKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuYngoZGF0YVRlbXBSZWdpc3RlciwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKLSAg
ICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoanVtcCk7Ci0gICAgfQotCi0gICAgdm9pZCBicmVh
a3BvaW50KCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJrcHQoMCk7Ci0gICAgfQotCi0g
ICAgc3RhdGljIGJvb2wgaXNCcmVha3BvaW50KHZvaWQqIGFkZHJlc3MpIHsgcmV0dXJuIEFSTUFz
c2VtYmxlcjo6aXNCa3B0KGFkZHJlc3MpOyB9Ci0KLSAgICBDYWxsIG5lYXJDYWxsKCkKLSAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRCcmFuY2hUYXJnZXQoZGF0YVRlbXBSZWdpc3Rlciwg
QVJNQXNzZW1ibGVyOjpBTCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVy
LmJseChkYXRhVGVtcFJlZ2lzdGVyKSwgQ2FsbDo6TGlua2FibGVOZWFyKTsKLSAgICB9Ci0KLSAg
ICBDYWxsIG5lYXJUYWlsQ2FsbCgpCi0gICAgewotICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2Vt
Ymxlci5qbXAoKSwgQ2FsbDo6TGlua2FibGVOZWFyVGFpbCk7Ci0gICAgfQotCi0gICAgQ2FsbCBj
YWxsKFJlZ2lzdGVySUQgdGFyZ2V0LCBQdHJUYWcpCi0gICAgewotICAgICAgICByZXR1cm4gQ2Fs
bChtX2Fzc2VtYmxlci5ibHgodGFyZ2V0KSwgQ2FsbDo6Tm9uZSk7Ci0gICAgfQotCi0gICAgdm9p
ZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQotICAgIHsKLSAgICAgICAgY2FsbDMyKGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgcmV0KCkKLSAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJ4KGxpbmtSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAg
dm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmNtcChsZWZ0LCByaWdodCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBB
Uk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVz
dCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpLCBBUk1Db25kaXRpb24oY29uZCkpOwotICAg
IH0KLQotICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0LCBtX2Fzc2VtYmxlci5nZXRJbW0ocmlnaHQubV92
YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoZGVz
dCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92
KGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4
T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgY29tcGFyZTMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCwg
ZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnRzdChyZWcsIHJlZyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRz
dChyZWcsIG1fYXNzZW1ibGVyLmdldEltbShtYXNrLm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3Ay
Qnl0ZSgwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6Omdl
dE9wMkJ5dGUoMSksIEFSTUNvbmRpdGlvbihjb25kKSk7Ci0gICAgfQotCi0gICAgdm9pZCB0ZXN0
MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1h
c2ssIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgdGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1h
c2ssIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKLSAg
ICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7Ci0gICAgICAgIE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRl
bXBSZWdpc3Rlcik7Ci0gICAgICAgIHRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNr
OCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
YWRkKGRlc3QsIHNyYywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKSk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBB
YnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLm1f
cHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgYWRkMzIoaW1tLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGFkZDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVz
cyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgQVJNV29yZCB0bXA7Ci0KLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCAwKTsKLQotICAgICAgICBpZiAoKHRtcCA9IEFSTUFz
c2VtYmxlcjo6Z2V0T3AyKGltbS5tX3ZhbHVlKSkgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1t
ZWRpYXRlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkcyhhZGRyZXNzVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0bXApOwotICAgICAgICBlbHNlIGlmICgodG1wID0gQVJN
QXNzZW1ibGVyOjpnZXRPcDIoLWltbS5tX3ZhbHVlKSkgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlk
SW1tZWRpYXRlKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VicyhhZGRyZXNzVGVtcFJlZ2lz
dGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0bXApOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHMoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdp
c3RlciwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBkYXRhVGVtcFJlZ2lzdGVyKSk7
Ci0gICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGRhdGFUZW1w
UmVnaXN0ZXIpOwotICAgICAgICB9Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2Vt
Ymxlcjo6U3RvcmVVaW50MzIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIs
IDApOwotCi0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQz
MiwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgc2l6ZW9mKEFSTVdvcmQp
KTsKLSAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IDApCi0gICAgICAgICAgICBtX2Fzc2VtYmxl
ci5hZGMoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1i
bGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuc2JjKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIEFSTUFzc2Vt
Ymxlcjo6Z2V0T3AyQnl0ZSgwKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2Vt
Ymxlcjo6U3RvcmVVaW50MzIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIs
IHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIg
aW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRy
ZXNzLm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3ViMzIoaW1tLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1f
cHRyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQzMihjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlh
dGUoYWRkcmVzc1RlbXBSZWdpc3RlciwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNz
KSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwg
ZGVzdCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgMCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gz
MihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3Rl
cklEIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVn
aXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwg
cmlnaHQpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQotICAgIHsKLSAg
ICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1
cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOwotICAgIH0KLQotICAg
IHZvaWQgcmVsYXRpdmVUYWJsZUp1bXAoUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKHNjYWxlID49IDAgJiYgc2NhbGUgPD0gMzEpOwotICAgICAgICBt
X2Fzc2VtYmxlci5hZGQoQVJNUmVnaXN0ZXJzOjpwYywgQVJNUmVnaXN0ZXJzOjpwYywgbV9hc3Nl
bWJsZXIubHNsKGluZGV4LCBzY2FsZSkpOwotCi0gICAgICAgIC8vIE5PUCB0aGUgZGVmYXVsdCBw
cmVmZXRjaGluZwotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoQVJNUmVnaXN0ZXJzOjpyMCwgQVJN
UmVnaXN0ZXJzOjpyMCk7Ci0gICAgfQotCi0gICAgQ2FsbCBjYWxsKFB0clRhZykKLSAgICB7Ci0g
ICAgICAgIGVuc3VyZVNwYWNlKDIgKiBzaXplb2YoQVJNV29yZCksIHNpemVvZihBUk1Xb3JkKSk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRCcmFuY2hUYXJnZXQoZGF0YVRlbXBSZWdpc3Rlciwg
QVJNQXNzZW1ibGVyOjpBTCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVy
LmJseChkYXRhVGVtcFJlZ2lzdGVyKSwgQ2FsbDo6TGlua2FibGUpOwotICAgIH0KLQotICAgIEFM
V0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgY2FsbFRhZykgeyByZXR1cm4gVU5VU0VE
X1BBUkFNKGNhbGxUYWcpLCBjYWxsKE5vUHRyVGFnKTsgfQotICAgIEFMV0FZU19JTkxJTkUgQ2Fs
bCBjYWxsKFJlZ2lzdGVySUQgdGFyZ2V0LCBSZWdpc3RlcklEIGNhbGxUYWcpIHsgcmV0dXJuIFVO
VVNFRF9QQVJBTShjYWxsVGFnKSwgY2FsbCh0YXJnZXQsIE5vUHRyVGFnKTsgfQotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBjYWxsVGFnKSB7
IFVOVVNFRF9QQVJBTShjYWxsVGFnKSwgY2FsbChhZGRyZXNzLCBOb1B0clRhZyk7IH0KLQotICAg
IENhbGwgdGFpbFJlY3Vyc2l2ZUNhbGwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIENhbGw6OmZy
b21UYWlsSnVtcChqdW1wKCkpOwotICAgIH0KLQotICAgIENhbGwgbWFrZVRhaWxSZWN1cnNpdmVD
YWxsKEp1bXAgb2xkSnVtcCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBDYWxsOjpmcm9tVGFpbEp1
bXAob2xkSnVtcCk7Ci0gICAgfQotCi0gICAgRGF0YUxhYmVsUHRyIG1vdmVXaXRoUGF0Y2goVHJ1
c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IERhdGFMYWJlbFB0ciBkYXRhTGFiZWwodGhpcyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxkclVu
aXF1ZUltbWVkaWF0ZShkZXN0LCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGluaXRpYWxWYWx1
ZS5tX3ZhbHVlKSk7Ci0gICAgICAgIHJldHVybiBkYXRhTGFiZWw7Ci0gICAgfQotCi0gICAgRGF0
YUxhYmVsMzIgbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1tMzIgaW5pdGlhbFZhbHVlLCBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBEYXRhTGFiZWwzMiBkYXRhTGFiZWwodGhpcyk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShkZXN0LCBzdGF0aWNfY2FzdDxB
Uk1Xb3JkPihpbml0aWFsVmFsdWUubV92YWx1ZSkpOwotICAgICAgICByZXR1cm4gZGF0YUxhYmVs
OwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3Rl
ZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cikpCi0gICAg
ewotICAgICAgICBlbnN1cmVTcGFjZSgzICogc2l6ZW9mKEFSTVdvcmQpLCAyICogc2l6ZW9mKEFS
TVdvcmQpKTsKLSAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRW
YWx1ZSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIEp1bXAganVtcCA9IGJyYW5jaDMyKGNv
bmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIsIHRydWUpOwotICAgICAgICByZXR1cm4ganVtcDsK
LSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1Q
dHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKQotICAgIHsKLSAg
ICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBlbnN1cmVTcGFj
ZSgzICogc2l6ZW9mKEFSTVdvcmQpLCAyICogc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgZGF0
YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7Ci0gICAgICAgIEp1bXAganVtcCA9IGJyYW5jaDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIHRydWUpOwotICAgICAgICByZXR1cm4ganVtcDsKLSAg
ICB9Ci0KLSAgICBKdW1wIGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5p
dGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCi0gICAgewotICAgICAgICBsb2FkMzIo
bGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGVuc3VyZVNwYWNlKDMgKiBzaXplb2Yo
QVJNV29yZCksIDIgKiBzaXplb2YoQVJNV29yZCkpOwotICAgICAgICBkYXRhTGFiZWwgPSBtb3Zl
V2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgSnVtcCBqdW1wID0gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRl
bXBSZWdpc3RlciwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiBqdW1wOwotICAgIH0KLQotICAgIERh
dGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwg
SW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBEYXRhTGFiZWxQdHIgZGF0
YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsVmFsdWUsIGRhdGFUZW1wUmVnaXN0ZXIpOwot
ICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOwotICAgICAgICByZXR1
cm4gZGF0YUxhYmVsOwotICAgIH0KLQotICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRj
aChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdG9yZVB0
cldpdGhQYXRjaChUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBhZGRyZXNzKTsKLSAgICB9Ci0KLSAg
ICAvLyBGbG9hdGluZyBwb2ludCBvcGVyYXRvcnMKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHNfaXNWRlBQcmVzZW50OwotICAg
IH0KLQotICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0c0Zsb2F0aW5nUG9pbnRTcXJ0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzX2lzVkZQUHJl
c2VudDsKLSAgICB9Ci0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50QWJzKCkg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRS
b3VuZGluZygpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLQotICAgIHZvaWQgbG9hZEZsb2F0KEltcGxp
Y2l0QWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmRhdGFUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6TG9hZEZsb2F0LCBkZXN0
LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWRG
bG9hdChCYXNlSW5kZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5iYXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6TG9hZEZs
b2F0LCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIHN0YXRpY19jYXN0PGludD4o
YWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWRE
b3VibGUoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpMb2Fk
RG91YmxlLCBkZXN0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3Mub2Zmc2V0KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGxvYWREb3VibGUoQmFzZUluZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQot
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXJGbG9hdChBUk1Bc3Nl
bWJsZXI6OkxvYWREb3VibGUsIGRlc3QsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3Rh
dGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQot
ICAgIHZvaWQgbG9hZERvdWJsZShUcnVzdGVkSW1tUHRyIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQotICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxB
Uk1Xb3JkPihhZGRyZXNzLm1fdmFsdWUpKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmRvdWJsZUR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZERvdWJsZSwgZGVzdCwg
YWRkcmVzc1RlbXBSZWdpc3RlciwgMCk7Ci0gICAgfQotCi0gICAgTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCB2b2lkIGNlaWxEb3VibGUoRlBSZWdpc3RlcklELCBGUFJlZ2lzdGVySUQpCi0gICAgewot
ICAgICAgICBBU1NFUlQoIXN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkpOwotICAgICAg
ICBDUkFTSCgpOwotICAgIH0KLQotICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBmbG9v
ckRvdWJsZShGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCghc3VwcG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSk7Ci0gICAgICAgIENSQVNIKCk7Ci0g
ICAgfQotCi0gICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHJvdW5kVG93YXJkWmVyb0Rv
dWJsZShGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
c3VwcG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSk7Ci0gICAgICAgIENSQVNIKCk7Ci0gICAg
fQotCi0gICAgdm9pZCBzdG9yZUZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVz
cyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyRmxvYXQo
QVJNQXNzZW1ibGVyOjpTdG9yZUZsb2F0LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5vZmZz
ZXQpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBCYXNl
SW5kZXggYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJhc2VJbmRleFRyYW5z
ZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpTdG9yZUZsb2F0LCBzcmMsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNzLnNjYWxlKSwgYWRkcmVzcy5vZmZz
ZXQpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgSW1w
bGljaXRBZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJh
bnNmZXJGbG9hdChBUk1Bc3NlbWJsZXI6OlN0b3JlRG91YmxlLCBzcmMsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5vZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVEb3VibGUoRlBSZWdpc3Rl
cklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5i
YXNlSW5kZXhUcmFuc2ZlckZsb2F0KEFSTUFzc2VtYmxlcjo6U3RvcmVEb3VibGUsIHNyYywgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KGFkZHJlc3Muc2NhbGUp
LCBhZGRyZXNzLm9mZnNldCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lz
dGVySUQgc3JjLCBUcnVzdGVkSW1tUHRyIGFkZHJlc3MpCi0gICAgewotICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMihyZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MubV92YWx1ZSkpLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRyYW5zZmVyRmxv
YXQoQVJNQXNzZW1ibGVyOjpTdG9yZURvdWJsZSwgc3JjLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCAw
KTsKLSAgICB9Ci0KLSAgICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBpZiAoc3JjICE9IGRlc3QpCi0gICAgICAgICAg
ICBtX2Fzc2VtYmxlci52bW92X2Y2NChkZXN0LCBzcmMpOwotICAgIH0KLQotICAgIHZvaWQgbW92
ZVplcm9Ub0RvdWJsZShGUFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgc3RhdGljIGRv
dWJsZSB6ZXJvQ29uc3RhbnQgPSAwLjsKLSAgICAgICAgbG9hZERvdWJsZShUcnVzdGVkSW1tUHRy
KCZ6ZXJvQ29uc3RhbnQpLCByZWcpOwotICAgIH0KLQotICAgIHZvaWQgYWRkRG91YmxlKEZQUmVn
aXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJs
ZXIudmFkZF9mNjQoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZERvdWJs
ZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZhZGRfZjY0KGRlc3QsIG9wMSwgb3AyKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGFkZERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3Qp
Ci0gICAgewotICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICBhZGREb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgYWRk
RG91YmxlKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIGxvYWREb3VibGUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgZnBUZW1w
UmVnaXN0ZXIpOwotICAgICAgICBhZGREb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAg
IH0KLQotICAgIHZvaWQgZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmRpdl9mNjQoZGVzdCwgZGVzdCwgc3Jj
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lz
dGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LnZkaXZfZjY0KGRlc3QsIG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpdkRvdWJsZShB
ZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBVbnRlc3RlZAotICAgICAgICBsb2FkRG91YmxlKHNyYywg
ZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICBkaXZEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3Qp
OwotICAgIH0KLQotICAgIHZvaWQgc3ViRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudnN1Yl9mNjQoZGVzdCwgZGVz
dCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBG
UFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLnZzdWJfZjY0KGRlc3QsIG9wMSwgb3AyKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YkRv
dWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2Fk
RG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICBzdWJEb3VibGUoZnBUZW1wUmVn
aXN0ZXIsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBz
cmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm11bF9m
NjQoZGVzdCwgZGVzdCwgc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIG11bERvdWJsZShBZGRyZXNz
IHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkRG91YmxlKHNyYywg
ZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtdWxEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3Qp
OwotICAgIH0KLQotICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0
ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
dm11bF9mNjQoZGVzdCwgb3AxLCBvcDIpOwotICAgIH0KLQotICAgIHZvaWQgc3FydERvdWJsZShG
UFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLnZzcXJ0X2Y2NChkZXN0LCBzcmMpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFic0Rv
dWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLnZhYnNfZjY0KGRlc3QsIHNyYyk7Ci0gICAgfQotCi0gICAgdm9pZCBuZWdh
dGVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci52bmVnX2Y2NChkZXN0LCBzcmMpOwotICAgIH0KLQotICAgIHZvaWQg
Y29udmVydEludDMyVG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQot
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdl92ZnAzMihkZXN0IDw8IDEsIHNyYyk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfZjY0X3MzMihkZXN0LCBkZXN0IDw8IDEpOwotICAgIH0K
LQotICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwotICAg
IH0KLQotICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoQWJzb2x1dGVBZGRyZXNzIHNyYywg
RlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3Jj
Lm1fcHRyKSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKGRhdGFU
ZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgY29udmVydEludDMyVG9E
b3VibGUoZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBjb252ZXJ0
RmxvYXRUb0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQotICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9mNjRfZjMyKGRzdCwgc3JjKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGNvbnZlcnREb3VibGVUb0Zsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X2YzMl9mNjQoZHN0LCBzcmMp
OwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoRG91YmxlKERvdWJsZUNvbmRpdGlvbiBjb25kLCBG
UFJlZ2lzdGVySUQgbGVmdCwgRlBSZWdpc3RlcklEIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIudmNtcF9mNjQobGVmdCwgcmlnaHQpOwotICAgICAgICBtX2Fzc2VtYmxlci52bXJz
X2Fwc3IoKTsKLSAgICAgICAgaWYgKGNvbmQgJiBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFsKQot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIsIEFSTUFzc2VtYmxlcjo6VlMpOwotICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qbXAoc3RhdGljX2Nhc3Q8QVJNQXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQgJiB+
RG91YmxlQ29uZGl0aW9uTWFzaykpKTsKLSAgICB9Ci0KLSAgICAvLyBUcnVuY2F0ZXMgJ3NyYycg
dG8gYW4gaW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KLSAgICAvLyBJ
ZiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFu
Y2guCi0gICAgLy8gTWF5IGFsc28gYnJhbmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXBy
ZXNlbnRhYmxlIGluIDMyIGJpdHMKLSAgICAvLyAoc3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2Us
IElOVF9NSU4pLgotICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZUcnVuY2F0
ZUZhaWxlZCwgQnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKLSAgICBKdW1wIGJyYW5jaFRy
dW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJy
YW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKLSAg
ICB7Ci0gICAgICAgIHRydW5jYXRlRG91YmxlVG9JbnQzMihzcmMsIGRlc3QpOwotCi0gICAgICAg
IG1fYXNzZW1ibGVyLmFkZChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkZXN0LCBBUk1Bc3NlbWJsZXI6
OmdldE9wMkJ5dGUoMSkpOwotICAgICAgICBtX2Fzc2VtYmxlci5iaWMoYWRkcmVzc1RlbXBSZWdp
c3RlciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsK
LQotICAgICAgICBBUk1Xb3JkIHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMigweDgwMDAwMDAwKTsK
LSAgICAgICAgQVNTRVJUKHcgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuY21wKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHcpOwotICAgICAgICBy
ZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRl
RmFpbGVkID8gQVJNQXNzZW1ibGVyOjpFUSA6IEFSTUFzc2VtYmxlcjo6TkUpKTsKLSAgICB9Ci0K
LSAgICAvLyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSB2YWx1ZSBpcyBvdXRzaWRlIG9mIHRo
ZSBpbnRlZ2VyIHJhbmdlLgotICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZj
dnRfczMyX2Y2NChmcFRlbXBSZWdpc3RlciA8PCAxLCBzcmMpOwotICAgICAgICBtX2Fzc2VtYmxl
ci52bW92X2FybTMyKGRlc3QsIGZwVGVtcFJlZ2lzdGVyIDw8IDEpOwotICAgIH0KLQotICAgIHZv
aWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3UzMl9mNjQoZnBUZW1wUmVnaXN0
ZXIgPDwgMSwgc3JjKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMihkZXN0LCBmcFRl
bXBSZWdpc3RlciA8PCAxKTsKLSAgICB9Ci0KLSAgICAvLyBDb252ZXJ0ICdzcmMnIHRvIGFuIGlu
dGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCi0gICAgLy8gSWYgdGhlIHJl
c3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgotICAg
IC8vIE1heSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJs
ZSBpbiAzMiBiaXRzCi0gICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCAwKS4KLSAg
ICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklELCBib29sIG5l
Z1plcm9DaGVjayA9IHRydWUpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3MzMl9m
NjQoZnBUZW1wUmVnaXN0ZXIgPDwgMSwgc3JjKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9h
cm0zMihkZXN0LCBmcFRlbXBSZWdpc3RlciA8PCAxKTsKLQotICAgICAgICAvLyBDb252ZXJ0IHRo
ZSBpbnRlZ2VyIHJlc3VsdCBiYWNrIHRvIGZsb2F0ICYgY29tcGFyZSB0byB0aGUgb3JpZ2luYWwg
dmFsdWUgLSBpZiBub3QgZXF1YWwgb3IgdW5vcmRlcmVkIChOYU4pIHRoZW4ganVtcC4KLSAgICAg
ICAgbV9hc3NlbWJsZXIudmN2dF9mNjRfczMyKGZwVGVtcFJlZ2lzdGVyLCBmcFRlbXBSZWdpc3Rl
ciA8PCAxKTsKLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hEb3VibGUoRG91Ymxl
Tm90RXF1YWxPclVub3JkZXJlZCwgc3JjLCBmcFRlbXBSZWdpc3RlcikpOwotCi0gICAgICAgIC8v
IElmIHRoZSByZXN1bHQgaXMgemVybywgaXQgbWlnaHQgaGF2ZSBiZWVuIC0wLjAsIGFuZCAwLjAg
ZXF1YWxzIHRvIC0wLjAKLSAgICAgICAgaWYgKG5lZ1plcm9DaGVjaykKLSAgICAgICAgICAgIGZh
aWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIGRlc3QpKTsKLSAgICB9Ci0KLSAg
ICBKdW1wIGJyYW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklE
IHNjcmF0Y2gpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoYWRkcmVzc1RlbXBSZWdp
c3RlciwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgY29udmVydEludDMy
VG9Eb3VibGUoYWRkcmVzc1RlbXBSZWdpc3Rlciwgc2NyYXRjaCk7Ci0gICAgICAgIHJldHVybiBi
cmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWwsIHJlZywgc2NyYXRjaCk7Ci0gICAgfQotCi0gICAg
SnVtcCBicmFuY2hEb3VibGVaZXJvT3JOYU4oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklE
IHNjcmF0Y2gpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tb3YoYWRkcmVzc1RlbXBSZWdp
c3RlciwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsKLSAgICAgICAgY29udmVydEludDMy
VG9Eb3VibGUoYWRkcmVzc1RlbXBSZWdpc3Rlciwgc2NyYXRjaCk7Ci0gICAgICAgIHJldHVybiBi
cmFuY2hEb3VibGUoRG91YmxlRXF1YWxPclVub3JkZXJlZCwgcmVnLCBzY3JhdGNoKTsKLSAgICB9
Ci0KLSAgICAvLyBJbnZlcnQgYSByZWxhdGlvbmFsIGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVz
ICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4KLSAgICBzdGF0aWMgUmVsYXRpb25hbENvbmRpdGlvbiBp
bnZlcnQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQotICAgIHsKLSAgICAgICAgQVNTRVJUKChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oY29uZCAmIDB4MGZmZmZmZmYpKSA9PSAwICYmIHN0YXRpY19j
YXN0PHVpbnQzMl90Pihjb25kKSA8IHN0YXRpY19jYXN0PHVpbnQzMl90PihBUk1Bc3NlbWJsZXI6
OkFMKSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbmFsQ29uZGl0aW9uPihj
b25kIF4gMHgxMDAwMDAwMCk7Ci0gICAgfQotCi0gICAgdm9pZCBub3AoKQotICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIubm9wKCk7Ci0gICAgfQotCi0gICAgdm9pZCBtZW1vcnlGZW5jZSgpCi0g
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kbWJTWSgpOwotICAgIH0KLQotICAgIHZvaWQgc3Rv
cmVGZW5jZSgpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kbWJJU0hTVCgpOwotICAgIH0K
LQotICAgIHRlbXBsYXRlPFB0clRhZyByZXN1bHRUYWcsIFB0clRhZyBsb2NhdGlvblRhZz4KLSAg
ICBzdGF0aWMgRnVuY3Rpb25QdHI8cmVzdWx0VGFnPiByZWFkQ2FsbFRhcmdldChDb2RlTG9jYXRp
b25DYWxsPGxvY2F0aW9uVGFnPiBjYWxsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9u
UHRyPHJlc3VsdFRhZz4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKCopKCk+KEFSTUFzc2VtYmxlcjo6
cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRpb24oKSkpKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZTxQdHJUYWcgc3RhcnRUYWcsIFB0clRhZyBkZXN0VGFnPgotICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbDxzdGFydFRhZz4gaW5zdHJ1Y3Rpb25TdGFy
dCwgQ29kZUxvY2F0aW9uTGFiZWw8ZGVzdFRhZz4gZGVzdGluYXRpb24pCi0gICAgewotICAgICAg
ICBBUk1Bc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2Nh
dGlvbigpLCBkZXN0aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7Ci0gICAgfQotICAgIAotICAgIHN0
YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gQVJNQXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7Ci0gICAgfQotCi0g
ICAgc3RhdGljIHB0cmRpZmZfdCBwYXRjaGFibGVKdW1wU2l6ZSgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gQVJNQXNzZW1ibGVyOjpwYXRjaGFibGVKdW1wU2l6ZSgpOwotICAgIH0KLQotICAgIHN0
YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJy
YW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHRlbXBsYXRlPFB0clRh
ZyB0YWc+Ci0gICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsPHRhZz4gc3RhcnRPZlBhdGNoYWJs
ZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyPHRhZz4p
Ci0gICAgewotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICAgICAgcmV0
dXJuIENvZGVMb2NhdGlvbkxhYmVsPHRhZz4oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJU
YWcgdGFnPgotICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbDx0YWc+IHN0YXJ0T2ZQYXRjaGFi
bGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyPHRh
Zz4pCi0gICAgewotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICAgICAg
cmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsPHRhZz4oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQ
dHJUYWcgdGFnPgotICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbDx0YWc+IHN0YXJ0T2ZCcmFu
Y2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cjx0YWc+IGxh
YmVsKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGxhYmVsLmxhYmVsQXRPZmZzZXQoMCk7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KLSAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1w
UmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbDx0YWc+IGlu
c3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmVnLCB2b2lkKiBpbml0aWFsVmFsdWUpCi0gICAg
ewotICAgICAgICBBUk1Bc3NlbWJsZXI6OnJldmVydEJyYW5jaFB0cldpdGhQYXRjaChpbnN0cnVj
dGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCByZWcsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
Pihpbml0aWFsVmFsdWUpICYgMHhmZmZmKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcg
dGFnPgotICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJh
bmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWw8dGFnPiwgQWRkcmVzcywgaW50MzJfdCkK
LSAgICB7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotICAgIH0KLQotICAg
IHRlbXBsYXRlPFB0clRhZyB0YWc+Ci0gICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2Vt
ZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWw8dGFnPiwg
QWRkcmVzcywgdm9pZCopCi0gICAgewotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0o
KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgY2FsbFRhZywgUHRyVGFnIGRlc3RUYWc+
Ci0gICAgc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxjYWxsVGFnPiBj
YWxsLCBDb2RlTG9jYXRpb25MYWJlbDxkZXN0VGFnPiBkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAg
ICAgIEFSTUFzc2VtYmxlcjo6cmVsaW5rQ2FsbChjYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5h
dGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcg
Y2FsbFRhZywgUHRyVGFnIGRlc3RUYWc+Ci0gICAgc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29k
ZUxvY2F0aW9uQ2FsbDxjYWxsVGFnPiBjYWxsLCBGdW5jdGlvblB0cjxkZXN0VGFnPiBkZXN0aW5h
dGlvbikKLSAgICB7Ci0gICAgICAgIEFSTUFzc2VtYmxlcjo6cmVsaW5rQ2FsbChjYWxsLmRhdGFM
b2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICB9Ci0KLXBy
b3RlY3RlZDoKLSAgICBBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFS
TUFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKTsKLSAgICB9Ci0KLSAgICBBUk1Bc3NlbWJsZXI6
OkNvbmRpdGlvbiBBUk1Db25kaXRpb24oUmVzdWx0Q29uZGl0aW9uIGNvbmQpCi0gICAgewotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QVJNQXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOwot
ICAgIH0KLQotICAgIHZvaWQgZW5zdXJlU3BhY2UoaW50IGluc25TcGFjZSwgaW50IGNvbnN0U3Bh
Y2UpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5lbnN1cmVTcGFjZShpbnNuU3BhY2UsIGNv
bnN0U3BhY2UpOwotICAgIH0KLQotICAgIGludCBzaXplT2ZDb25zdGFudFBvb2woKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fYXNzZW1ibGVyLnNpemVPZkNvbnN0YW50UG9vbCgpOwotICAgIH0K
LQotICAgIHZvaWQgY2FsbDMyKFJlZ2lzdGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpCi0gICAg
ewotICAgICAgICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBvZmZzZXQpLCBkYXRhVGVtcFJlZ2lzdGVy
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYmx4KGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKLQotICAgIHZvaWQgaW50ZXJu
YWxDb21wYXJlMzIoUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewot
ICAgICAgICBBUk1Xb3JkIHRtcCA9ICghcmlnaHQubV92YWx1ZSB8fCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocmlnaHQubV92YWx1ZSkgPT0gMHg4MDAwMDAwMCkgPyBBUk1Bc3NlbWJsZXI6OkludmFs
aWRJbW1lZGlhdGUgOiBtX2Fzc2VtYmxlci5nZXRPcDIoLXJpZ2h0Lm1fdmFsdWUpOwotICAgICAg
ICBpZiAodG1wICE9IEFSTUFzc2VtYmxlcjo6SW52YWxpZEltbWVkaWF0ZSkKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmNtbihsZWZ0LCB0bXApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5jbXAobGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGludGVybmFsQ29tcGFyZTMy
KEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQotICAgIHsKLSAgICAgICAgQVJNV29y
ZCB0bXAgPSAoIXJpZ2h0Lm1fdmFsdWUgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJpZ2h0Lm1f
dmFsdWUpID09IDB4ODAwMDAwMDApID8gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlIDog
bV9hc3NlbWJsZXIuZ2V0T3AyKC1yaWdodC5tX3ZhbHVlKTsKLSAgICAgICAgbG9hZDMyKGxlZnQs
IGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBpZiAodG1wICE9IEFSTUFzc2VtYmxlcjo6SW52
YWxpZEltbWVkaWF0ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtbihkYXRhVGVtcFJlZ2lz
dGVyLCB0bXApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXAoZGF0
YVRlbXBSZWdpc3RlciwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgotICAgIHN0
YXRpYyB2b2lkIGxpbmtDYWxsKHZvaWQqIGNvZGUsIENhbGwgY2FsbCwgRnVuY3Rpb25QdHI8dGFn
PiBmdW5jdGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChjYWxsLmlzRmxhZ1NldChDYWxsOjpUYWls
KSkKLSAgICAgICAgICAgIEFSTUFzc2VtYmxlcjo6bGlua0p1bXAoY29kZSwgY2FsbC5tX2xhYmVs
LCBmdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgQVJNQXNzZW1ibGVyOjpsaW5rQ2FsbChjb2RlLCBjYWxsLm1fbGFiZWwsIGZ1bmN0aW9uLmV4
ZWN1dGFibGVBZGRyZXNzKCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBib29sIHNfaXNW
RlBQcmVzZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKSAmJiBDUFUoQVJNX1RSQURJVElPTkFMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9QZXJmTG9nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvUGVyZkxvZy5jcHAKaW5kZXggNWM5NDM5MTcxODczZDdmZmRjZDcwZmZjNzNm
ZWU2NGUyMjc3ZDk1NC4uMTQzYzQ2ZDgzMjM1MDBmN2EyY2M3ZGE4N2JmMmI5OWIxODdkN2U2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9QZXJmTG9nLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1BlcmZMb2cuY3BwCkBAIC0zMCwx
MSArMzAsMTMgQEAKIAogI2luY2x1ZGUgPGVsZi5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5j
bHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5o
PgogI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5j
bHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYv
TW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KICNpbmNsdWRlIDx3
dGYvUHJvY2Vzc0lELmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1BlcmZMb2cuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUGVyZkxvZy5o
CmluZGV4IDljNmJhYjMzZTgyYzZhZmJhZGFkZjA5ZjBjOTMxNjJmY2YyN2U2YjUuLjhmMjRlOGZh
OGEzZTFiNmJjOTZkNTk4YjVkMGYyNTE1MGE3ZmY3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvUGVyZkxvZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvUGVyZkxvZy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxzdGRp
by5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvUHJvYmVDb250ZXh0LmgKaW5kZXggNGVlNmVlYThlNzNiOTEyYmFlNmFkZTAwYzliYjhiM2Q4
MmE4MTIwYy4uN2Y1MTkxZDUwYmZlMTRmNzVkYmIwNWQ4MmZiZDlmYjE4YTgwZjhjNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZUNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlQ29udGV4dC5oCkBAIC0xMTIs
NyArMTEyLDcgQEAgaW5saW5lIHZvaWQqJiBDUFVTdGF0ZTo6cGMoKQogICAgIHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZzcHIoWDg2UmVnaXN0ZXJzOjplaXApKTsKICNlbGlmIENQ
VShBUk02NCkKICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmc3ByKEFSTTY0
UmVnaXN0ZXJzOjpwYykpOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElU
SU9OQUwpCisjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCoqPigmZ3ByKEFSTVJlZ2lzdGVyczo6cGMpKTsKICNlbGlmIENQVShNSVBTKQogICAg
IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZzcHIoTUlQU1JlZ2lzdGVyczo6cGMp
KTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBpbmxpbmUgdm9pZComIENQVVN0YXRlOjpmcCgpCiAgICAg
cmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihYODZSZWdpc3RlcnM6OmVicCkp
OwogI2VsaWYgQ1BVKEFSTTY0KQogICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+
KCZncHIoQVJNNjRSZWdpc3RlcnM6OmZwKSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BV
KEFSTV9UUkFESVRJT05BTCkKKyNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgIHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KCZncHIoQVJNUmVnaXN0ZXJzOjpmcCkpOwogI2VsaWYgQ1BV
KE1JUFMpCiAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihNSVBTUmVn
aXN0ZXJzOjpmcCkpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIGlubGluZSB2b2lkKiYgQ1BVU3RhdGU6
OnNwKCkKICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ3ByKFg4NlJlZ2lz
dGVyczo6ZXNwKSk7CiAjZWxpZiBDUFUoQVJNNjQpCiAgICAgcmV0dXJuICpyZWludGVycHJldF9j
YXN0PHZvaWQqKj4oJmdwcihBUk02NFJlZ2lzdGVyczo6c3ApKTsKLSNlbGlmIENQVShBUk1fVEhV
TUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAg
cmV0dXJuICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4oJmdwcihBUk1SZWdpc3RlcnM6OnNwKSk7
CiAjZWxpZiBDUFUoTUlQUykKICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigm
Z3ByKE1JUFNSZWdpc3RlcnM6OnNwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvdGVzdG1hc20uY3BwCmluZGV4IDFkNzdkODA4YmMwYTFmMDljMWJlMTI4MDBjOTQxOWFhNzFh
NmFlYmQuLjNlNzU1NzRiMjFkMGUwZDcyZmU4Yzg3YTY1ZDU2NzI4ZTU0ODI0MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0xMTEsNyArMTEx
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBuZXh0SUQoVCBpZCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VD4oaWQgKyAxKTsgfQogI2lmIEVOQUJMRShNQVNNX1BST0JFKQogYm9vbCBpc1BDKE1h
Y3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGlkKQogewotI2lmIENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoQVJNX1RSQURJVElPTkFMKQorI2lmIENQVShBUk1fVEhVTUIyKQogICAgIHJldHVybiBpZCA9
PSBBUk1SZWdpc3RlcnM6OnBjOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaWQpOwpAQCAtNTcz
LDcgKzU3Myw3IEBAIHZvaWQgdGVzdFByb2JlTW9kaWZpZXNTdGFja1BvaW50ZXIoV1RGOjpGdW5j
dGlvbjx2b2lkKihQcm9iZTo6Q29udGV4dCYpPiBjb21wdXRlCiAjaWYgQ1BVKFg4NikgfHwgQ1BV
KFg4Nl82NCkKICAgICBhdXRvIGZsYWdzU1BSID0gWDg2UmVnaXN0ZXJzOjplZmxhZ3M7CiAgICAg
dWludHB0cl90IGZsYWdzTWFzayA9IDB4YzU7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BV
KEFSTV9UUkFESVRJT05BTCkKKyNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgIGF1dG8gZmxhZ3NT
UFIgPSBBUk1SZWdpc3RlcnM6OmFwc3I7CiAgICAgdWludHB0cl90IGZsYWdzTWFzayA9IDB4Zjgw
MDAwMDA7CiAjZWxpZiBDUFUoQVJNNjQpCkBAIC03NTMsNyArNzUzLDcgQEAgdm9pZCB0ZXN0UHJv
YmVNb2RpZmllc1N0YWNrVmFsdWVzKCkKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAg
IE1hY3JvQXNzZW1ibGVyOjpTUFJlZ2lzdGVySUQgZmxhZ3NTUFIgPSBYODZSZWdpc3RlcnM6OmVm
bGFnczsKICAgICB1aW50cHRyX3QgZmxhZ3NNYXNrID0gMHhjNTsKLSNlbGlmIENQVShBUk1fVEhV
TUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAg
TWFjcm9Bc3NlbWJsZXI6OlNQUmVnaXN0ZXJJRCBmbGFnc1NQUiA9IEFSTVJlZ2lzdGVyczo6YXBz
cjsKICAgICB1aW50cHRyX3QgZmxhZ3NNYXNrID0gMHhmODAwMDAwMDsKICNlbGlmIENQVShBUk02
NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nl
c3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuaAppbmRl
eCA4ZDA4NDZhZDdhZTc2OWU0ZWE5YTIzZjliM2U5MTVhMWZmMjAxZmZkLi45Yzk5ZGFkZjFmNDY5
N2VmODZmZjQ0NzQyNGYxOWYyOWQyNmM3ZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCkBAIC00OSwxMiArNDksOCBAQCBjbGFzcyBJbmxpbmVB
Y2Nlc3MgewogICAgICAgICByZXR1cm4gMjc7CiAjZWxpZiBDUFUoQVJNNjQpCiAgICAgICAgIHJl
dHVybiA0MDsKLSNlbGlmIENQVShBUk0pCi0jaWYgQ1BVKEFSTV9USFVNQjIpCisjZWxpZiBDUFUo
QVJNX1RIVU1CMikKICAgICAgICAgcmV0dXJuIDQ4OwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIDUy
OwotI2VuZGlmCiAjZWxpZiBDUFUoTUlQUykKICAgICAgICAgcmV0dXJuIDcyOwogI2Vsc2UKQEAg
LTcxLDEyICs2Nyw4IEBAIGNsYXNzIElubGluZUFjY2VzcyB7CiAgICAgICAgIHJldHVybiAyNzsK
ICNlbGlmIENQVShBUk02NCkKICAgICAgICAgcmV0dXJuIDQwOwotI2VsaWYgQ1BVKEFSTSkKLSNp
ZiBDUFUoQVJNX1RIVU1CMikKLSAgICAgICAgcmV0dXJuIDQ4OwotI2Vsc2UKKyNlbGlmIENQVShB
Uk1fVEhVTUIyKQogICAgICAgICByZXR1cm4gNDg7Ci0jZW5kaWYKICNlbGlmIENQVShNSVBTKQog
ICAgICAgICByZXR1cm4gNzI7CiAjZWxzZQpAQCAtOTYsMTIgKzg4LDggQEAgY2xhc3MgSW5saW5l
QWNjZXNzIHsKICAgICAgICAgc2l6ZV90IHNpemUgPSAyNzsKICNlbGlmIENQVShBUk02NCkKICAg
ICAgICAgc2l6ZV90IHNpemUgPSAzMjsKLSNlbGlmIENQVShBUk0pCi0jaWYgQ1BVKEFSTV9USFVN
QjIpCisjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgc2l6ZV90IHNpemUgPSAzMDsKLSNl
bHNlCi0gICAgICAgIHNpemVfdCBzaXplID0gMzI7Ci0jZW5kaWYKICNlbGlmIENQVShNSVBTKQog
ICAgICAgICBzaXplX3Qgc2l6ZSA9IDU2OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBmMzc1M2QzY2ZmZTQ5YWJiZGVkNmU2ZDBj
YzgyM2FkN2VjODFkM2NkLi5kNWU0N2MxZDBiN2JkYTg3ODlkNDJiZTJlNzBiZjc3NWYxMGNhYjYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBA
IC05ODMsNyArOTgzLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSAmJiAhQ1BV
KEFSTSkgJiYgIUNQVShNSVBTKQorI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk1fVEhV
TUIyKSAmJiAhQ1BVKE1JUFMpCiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCkKICAg
ICB7CiAgICAgICAgIC8vIFdlJ3JlIGFib3V0IHRvIGNhbGwgb3V0IHRvIGEgIm5hdGl2ZSIgaGVs
cGVyIGZ1bmN0aW9uLiBUaGUgaGVscGVyCkBAIC0xMDU5LDcgKzEwNTksNyBAQCBjbGFzcyBTcGVj
dWxhdGl2ZUpJVCB7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQotI2Vs
aWYgQ1BVKEFSTSkgJiYgIUNQVShBUk1fSEFSREZQKQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpICYm
ICFDUFUoQVJNX0hBUkRGUCkKICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVz
dWx0KGNvbnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24sIEZQUlJlZyBy
ZXN1bHQpCiAgICAgewogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bChmdW5jdGlvbik7CkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAgICAgICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS52bW92KHJlc3VsdCwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7CiAgICAgICAgIHJldHVybiBj
YWxsOwogICAgIH0KLSNlbHNlIC8vIENQVShYODZfNjQpIHx8IChDUFUoQVJNKSAmJiBDUFUoQVJN
X0hBUkRGUCkpIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpCisjZWxzZSAvLyBDUFUoWDg2XzY0
KSB8fCAoQ1BVKEFSTV9USFVNQjIpICYmIENQVShBUk1fSEFSREZQKSkgfHwgQ1BVKEFSTTY0KSB8
fCBDUFUoTUlQUykKICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsU2V0UmVzdWx0KGNv
bnN0IEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4gZnVuY3Rpb24sIEZQUlJlZyByZXN1bHQp
CiAgICAgewogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5j
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Nh
cHN0b25lRGlzYXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJs
ZXIvQ2Fwc3RvbmVEaXNhc3NlbWJsZXIuY3BwCmluZGV4IGE2ZmYyMjcxMGYwOTllODdkMTljZmNk
MjE1ODAyN2JmYmI1ZWFhODEuLjY4ZGQ2NGNiNzg0OTU1OGRmM2QzMDIxNDllMDZiZDAwMmY3YTg0
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQ2Fwc3Rv
bmVEaXNhc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJs
ZXIvQ2Fwc3RvbmVEaXNhc3NlbWJsZXIuY3BwCkBAIC00NCw5ICs0NCw2IEBAIGJvb2wgdHJ5VG9E
aXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQdHJUYWc+
JiBjb2RlUHRyLCBzCiAjZWxpZiBDUFUoWDg2XzY0KQogICAgIGlmIChjc19vcGVuKENTX0FSQ0hf
WDg2LCBDU19NT0RFXzY0LCAmaGFuZGxlKSAhPSBDU19FUlJfT0spCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSNlbGlmIENQVShBUk1fVFJBRElUSU9OQUwpCi0gICAgaWYgKGNzX29wZW4oQ1NfQVJD
SF9BUk0sIENTX01PREVfQVJNLCAmaGFuZGxlKSAhPSBDU19FUlJfT0spCi0gICAgICAgIHJldHVy
biBmYWxzZTsKICNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgIGlmIChjc19vcGVuKENTX0FSQ0hf
QVJNLCBDU19NT0RFX1RIVU1CLCAmaGFuZGxlKSAhPSBDU19FUlJfT0spCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNw
cAppbmRleCAxM2NiYTljMzczODIwNzVhNTM4MzhmMmE3ZGJmNTAzNDg3OWE0NjEyLi41ZjM4YjRm
NTYwMzhmMWMyYzU1N2Y3NzkyNGY3ZmIxM2FiMzI1NDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC05ODIsNyArOTgyLDcgQEAgdm9pZCBB
c3NlbWJseUhlbHBlcnM6OmRlYnVnQ2FsbChWTSYgdm0sIFZfRGVidWdPcGVyYXRpb25fRVBQIGZ1
bmN0aW9uLCB2b2lkKiBhcmcKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+
YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgc3RvcmVQdHIo
VHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSksIEdQUkluZm86OnJlZ1QwKTsKIAotI2lmIENQVShY
ODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpCisjaWYgQ1BVKFg4
Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpCiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAg
ICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggOWEz
NTJlMWZlZWQyOTBlNGIzYTdkOTg1Y2I4NWQ1MDBkODg2MmY4Ni4uZWMyOTViOWU4ZmFlYzNiNmFh
ZGE0OGE1ZDE1MTYzNmE3NTI3ZGZhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCkBAIC01MjEsNyArNTIxLDcgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJz
IDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICB9CiAjZW5kaWYgLy8gQ1BVKFg4Nl82NCkg
fHwgQ1BVKFg4NikKIAotI2lmIENQVShBUk0pIHx8IENQVShBUk02NCkKKyNpZiBDUFUoQVJNX1RI
VU1CMikgfHwgQ1BVKEFSTTY0KQogICAgIHN0YXRpYyBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50
ZXJEZWx0YSgpCiAgICAgewogICAgICAgICAvLyBQcm9sb2d1ZSBzYXZlcyB0aGUgZnJhbWVQb2lu
dGVyUmVnaXN0ZXIgYW5kIGxpbmtSZWdpc3RlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0Nh
bGxIZWxwZXJzLmgKaW5kZXggOThhODQ2ZDA5YmRlODI0MmE3YzQzNmM1ZDA4OWQ4ODBkYzIzNzM1
My4uNjEyMTAxOGVjZGI1OTAwOTAwYjUwNTJlYjI1MTU4YzhjNDZlNmI0OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC0xODMsNyArMTgzLDcgQEAgY2xhc3Mg
Q0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgICAgIH0KICAgICB9
CiAKLSNpZiBDUFUoTUlQUykgfHwgKENQVShBUk0pICYmICFDUFUoQVJNX0hBUkRGUCkpCisjaWYg
Q1BVKE1JUFMpIHx8IChDUFUoQVJNX1RIVU1CMikgJiYgIUNQVShBUk1fSEFSREZQKSkKICAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBOdW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIE51bWJlck9mUmVnaXN0
ZXJzPgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cFN0dWJDcm9zc0FyZ3Moc3RkOjphcnJh
eTxHUFJSZWcsIE51bWJlck9mUmVnaXN0ZXJzPiBkZXN0aW5hdGlvbnMsIHN0ZDo6YXJyYXk8RlBS
UmVnLCBOdW1iZXJPZlJlZ2lzdGVycz4gc291cmNlcykgewogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgTnVtQ3Jvc3NTb3VyY2VzOyBpKyspIHsKQEAgLTQ0OCw3ICs0NDgsNyBAQCBj
bGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgc2V0
dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCku
YWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICB9CiAKLSNlbGlmIENQVShBUk0pIHx8IENQVShNSVBT
KQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShNSVBTKQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1Nv
dXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKQEAgLTQ2Niw3ICs0NjYsNyBAQCBj
bGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgICAg
IHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncy5h
ZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0jZWxpZiBDUFUoQVJNKSAmJiBDUFUoQVJNX0hBUkRGUCkKKyNl
bGlmIENQVShBUk1fVEhVTUIyKSAmJiBDUFUoQVJNX0hBUkRGUCkKICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJzID0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJl
Z2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEZQQXJnQ291bnQgPSBhcmdTb3VyY2VS
ZWdzLmFyZ0NvdW50KGFyZyk7CiAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBjbGFzcyBDQ2FsbEhlbHBl
cnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBD
UFUoTUlQUykgfHwgKENQVShBUk0pICYmICFDUFUoQVJNX0hBUkRGUCkpCisjaWYgQ1BVKE1JUFMp
IHx8IChDUFUoQVJNX1RIVU1CMikgJiYgIUNQVShBUk1fSEFSREZQKSkKICAgICAgICAgLy8gT24g
TUlQUyBhbmQgQVJNLXNvZnRmcCBGUCBhcmd1bWVudHMgY2FuIGJlIHBhc3NlZCBpbiBHUCByZWdp
c3RlcnMuCiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9IEdQ
UkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJl
bnRHUEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChHUFJJbmZvOjpyZWdUMCk7CkBA
IC01OTIsNyArNTkyLDcgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVs
cGVycyB7CiAgICAgICAgICAgICBwb2tlQXJndW1lbnRzQWxpZ25lZDxPcGVyYXRpb25UeXBlPihh
cmdTb3VyY2VSZWdzLCBhcmcucGF5bG9hZEdQUigpLCBhcmcudGFnR1BSKCksIGFyZ3MuLi4pOwog
ICAgIH0KIAotI2VuZGlmIC8vIENQVShBUk0pIHx8IENQVShNSVBTKQorI2VuZGlmIC8vIENQVShB
Uk1fVEhVTUIyKSB8fCBDUFUoTUlQUykKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3Ms
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgpAQCAt
NjczLDcgKzY3Myw3IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBl
cnMgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+
OjpjQ2FsbEFyaXR5KCkgPT0gbnVtR1BSQXJncyArIG51bUZQUkFyZ3MgKyBleHRyYVBva2UsICJD
aGVjayB0aGUgQ0NhbGwgYXJpdHkiKTsKICNlbmRpZgogICAgICAgICBzZXR1cFN0dWJBcmdzPG51
bUdQUlNvdXJjZXMsIEdQUlJlZz4oY2xhbXBBcnJheVRvU2l6ZTxudW1HUFJTb3VyY2VzLCBHUFJS
ZWc+KGFyZ1NvdXJjZVJlZ3MuZ3ByRGVzdGluYXRpb25zKSwgY2xhbXBBcnJheVRvU2l6ZTxudW1H
UFJTb3VyY2VzLCBHUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuZ3ByU291cmNlcykpOwotI2lmIENQVShN
SVBTKSB8fCAoQ1BVKEFSTSkgJiYgIUNQVShBUk1fSEFSREZQKSkKKyNpZiBDUFUoTUlQUykgfHwg
KENQVShBUk1fVEhVTUIyKSAmJiAhQ1BVKEFSTV9IQVJERlApKQogICAgICAgICBzZXR1cFN0dWJD
cm9zc0FyZ3M8bnVtQ3Jvc3NTb3VyY2VzPihhcmdTb3VyY2VSZWdzLmNyb3NzRGVzdGluYXRpb25z
LCBhcmdTb3VyY2VSZWdzLmNyb3NzU291cmNlcyk7CiAjZWxzZQogICAgICAgICBzdGF0aWNfYXNz
ZXJ0KCFudW1Dcm9zc1NvdXJjZXMsICJzaG91bGRuJ3QgYmUgdXNlZCBvbiB0aGlzIGFyY2hpdGVj
dHVyZS4iKTsKQEAgLTgwMiw3ICs4MDIsNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKIAogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRoZSBjdXJyZW50
IGZyYW1lIGJleW9uZCB0aGlzIHBvaW50LiBNYXNxdWVyYWRlIGFzIG91cgogICAgICAgICAvLyBj
YWxsZXIuCi0jaWYgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KQorI2lmIENQVShBUk1fVEhVTUIyKSB8
fCBDUFUoQVJNNjQpCiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSwgbGlua1JlZ2lzdGVyKTsKICAgICAgICAg
c3ViUHRyKFRydXN0ZWRJbW0zMigyICogc2l6ZW9mKHZvaWQqKSksIG5ld0ZyYW1lU2l6ZUdQUik7
CiAjaWYgVVNFKFBPSU5URVJfUFJPRklMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NhbGxGcmFtZVNodWZmbGVyLmNwcAppbmRleCBkNTk4M2E1MzhmNWRjOWMyZTRlNzg3NjFi
YTFmMzc3ZWZmMWNmZjM3Li42ZGY4MWUxYTljYjg5ZDY2NTY5ZjU3Y2M5MGI3OGQ0NjYwMjM1Nzgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmNw
cApAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVGb3JU
YWlsQ2FsbCgpCiAgICAgLy8gc3Agd2lsbCBwb2ludCB0byBoZWFkMCBhbmQgd2Ugd2lsbCBtb3Zl
IGl0IHVwIGhhbGYgYSBzbG90CiAgICAgLy8gbWFudWFsbHkKICAgICBtX25ld0ZyYW1lT2Zmc2V0
ID0gMDsKLSNlbGlmIENQVShBUk0pIHx8IENQVShNSVBTKQorI2VsaWYgQ1BVKEFSTV9USFVNQjIp
IHx8IENQVShNSVBTKQogICAgIC8vIFdlIGxvYWQgdGhlIGZyYW1lIHBvaW50ZXIgYW5kIGxpbmsg
cmVnaXN0ZXIKICAgICAvLyBtYW51YWxseS4gV2UgY291bGQgYXNrIHRoZSBhbGdvcml0aG0gdG8g
bG9hZCB0aGVtIGZvciB1cywKICAgICAvLyBhbmQgaXQgd291bGQgYWxsb3cgdXMgdG8gdXNlIHRo
ZSBsaW5rIHJlZ2lzdGVyIGFzIGFuIGV4dHJhCkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBDYWxs
RnJhbWVTaHVmZmxlcjo6cHJlcGFyZUZvclRhaWxDYWxsKCkKICAgICAgICAgbV9uZXdGcmFtZUJh
c2UpOwogCiAgICAgLy8gV2UgbG9hZCB0aGUgbGluayByZWdpc3RlciBtYW51YWxseSBmb3IgYXJj
aGl0ZWN0dXJlcyB0aGF0IGhhdmUgb25lCi0jaWYgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KQorI2lm
IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENh
bGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpsaW5r
UmVnaXN0ZXIpOwogI2lmIFVTRShQT0lOVEVSX1BST0ZJTElORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCmluZGV4IDk1Y2NjZmIzNGQ2
MzA4ZjU5ZTIwMjc5ZTc2NDJiN2JiOTNkMzQwZDEuLmEyMmM0MGQxMTMzMzNlYjU0NGI5ZTI3NWZk
OTIyNDMzYWIwOTlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9z
dENhbGxSZXR1cm5WYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0
Q2FsbFJldHVyblZhbHVlLmNwcApAQCAtODUsMTcgKzg1LDYgQEAgU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgogICAgICJiICIgTE9DQUxfUkVGRVJFTkNFKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCiApOwogCi0jZWxpZiBDT01Q
SUxFUihHQ0NfQ09NUEFUSUJMRSkgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLWFzbSAoCi0iLnRl
eHQiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUlOTElORV9B
Uk1fRlVOQ1RJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkKLVNZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAic3ViIHIwLCBzcCwgIzgiICJcbiIKLSAg
ICAiYiAiIExPQ0FMX1JFRkVSRU5DRShnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0
ZSkgIlxuIgotKTsKLQogI2VsaWYgQ1BVKEFSTTY0KQogYXNtICgKICIudGV4dCIgIlxuIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKaW5kZXggNmU3ODU5ZDUyNmYwMGRiZmRkZWUx
YjY5ODVmODFkMzYwNjIxMTk1ZS4uYzg4NzZkMGRiODYyNzk1OTZhZGJmYjI2OWMyZTEwZmRkNDIz
YWZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCkBAIC02OCwxMyArNjgs
NiBAQCBjbGFzcyBKSVRNYXRoSUMgewogCiAgICAgYm9vbCBnZW5lcmF0ZUlubGluZShDQ2FsbEhl
bHBlcnMmIGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgYm9vbCBzaG91bGRFbWl0
UHJvZmlsaW5nID0gdHJ1ZSkKICAgICB7Ci0jaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAgICAg
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdvcmthcm91bmQgb25jZSB0aGUgcHJvcGVyIGZpeGVz
IGFyZSBsYW5kZWQuCi0gICAgICAgIC8vIFtBUk1dIERpc2FibGUgSW5saW5lIENhY2hpbmcgb24g
QVJNdjcgdHJhZGl0aW9uYWwgdW50aWwgcHJvcGVyIGZpeAotICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NzU5Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSNlbmRpZgotCiAgICAgICAgIHN0YXRlLmZhc3RQYXRoU3RhcnQgPSBqaXQubGFiZWwoKTsK
ICAgICAgICAgc2l6ZV90IHN0YXJ0U2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2Rl
U2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCmluZGV4
IDViYWQzZWYwNmY1ZmY0MmU3NDQ2ZTFkN2ZhN2Y4MWNiYTE0ZjU0N2MuLjdjOTQ4MDRhMTM0MWFm
ODY5NzNjYjg5YmNlNTJkOTU2NWM4ZjhjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0
OjpyZXNlcnZlZEhhcmR3YXJlUmVnaXN0ZXJzKCkKICNlbHNlCiAgICAgcmV0dXJuIFJlZ2lzdGVy
U2V0KEFSTTY0UmVnaXN0ZXJzOjpscik7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKQorI2VsaWYgQ1BV
KEFSTV9USFVNQjIpCiAgICAgcmV0dXJuIFJlZ2lzdGVyU2V0KEFSTVJlZ2lzdGVyczo6bHIsIEFS
TVJlZ2lzdGVyczo6cGMpOwogI2Vsc2UKICAgICByZXR1cm4geyB9OwpAQCAtMTM3LDE1ICsxMzcs
NiBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAjZW5k
aWYKICAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjEwKTsKICAgICByZXN1bHQuc2V0KEFS
TVJlZ2lzdGVyczo6cjExKTsKLSNlbGlmIENQVShBUk1fVFJBRElUSU9OQUwpCi0gICAgcmVzdWx0
LnNldChBUk1SZWdpc3RlcnM6OnI0KTsKLSAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjUp
OwotICAgIHJlc3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyNik7Ci0gICAgcmVzdWx0LnNldChBUk1S
ZWdpc3RlcnM6OnI3KTsKLSAgICByZXN1bHQuc2V0KEFSTVJlZ2lzdGVyczo6cjgpOwotICAgIHJl
c3VsdC5zZXQoQVJNUmVnaXN0ZXJzOjpyOSk7Ci0gICAgcmVzdWx0LnNldChBUk1SZWdpc3RlcnM6
OnIxMCk7Ci0gICAgcmVzdWx0LnNldChBUk1SZWdpc3RlcnM6OnIxMSk7CiAjZWxpZiBDUFUoQVJN
NjQpCiAgICAgLy8gV2UgZG9uJ3QgaW5jbHVkZSBMUiBpbiB0aGUgc2V0IG9mIGNhbGxlZS1zYXZl
IHJlZ2lzdGVycyBldmVuIHRob3VnaCBpdCB0ZWNobmljYWxseSBiZWxvbmdzCiAgICAgLy8gdGhl
cmUuIFRoaXMgaXMgYmVjYXVzZSB3ZSB1c2UgdGhpcyBzZXQgdG8gZGVzY3JpYmUgdGhlIHNldCBv
ZiByZWdpc3RlcnMgdGhhdCBuZWVkIHRvIGJlIHNhdmVkCkBAIC0yMzksNyArMjMwLDYgQEAgUmVn
aXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkK
ICNlbmRpZgogI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzApOwotI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKICNlbGlmIENQVShBUk02NCkKICAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzcpOwpAQCAtMjc2LDcgKzI2Niw2IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpkZmdD
YWxsZWVTYXZlUmVnaXN0ZXJzKCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CiAj
ZW5kaWYKICNlbGlmIENQVShBUk1fVEhVTUIyKQotI2VsaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkK
ICNlbGlmIENQVShBUk02NCkKICAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKaW5kZXggNjY4NmRmMDExN2IwZTVmZDdkYjFlMDA4NjA2OWIxM2I3NmE0ZWM4NS4uNzMxMWE2
ZDU2MzM4OTVkMTI2Y2ExNDQ2M2M3MTNkZGNhNzA0YTJiMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCkBAIC0xMzAsMTQgKzEzMCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiBhY3Rpb25Gb3JDZWxsKFZNJiB2bSwgSlNDZWxsKiBjZWxsKQogCiBzdGF0aWMgYm9vbCBm
b3JjZUlDRmFpbHVyZShFeGVjU3RhdGUqKQogewotI2lmIENQVShBUk1fVFJBRElUSU9OQUwpCi0g
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdvcmthcm91bmQgb25jZSB0aGUgcHJvcGVyIGZpeGVz
IGFyZSBsYW5kZWQuCi0gICAgLy8gW0FSTV0gRGlzYWJsZSBJbmxpbmUgQ2FjaGluZyBvbiBBUk12
NyB0cmFkaXRpb25hbCB1bnRpbCBwcm9wZXIgZml4Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTc1OQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKICAg
ICByZXR1cm4gT3B0aW9uczo6Zm9yY2VJQ0ZhaWx1cmUoKTsKLSNlbmRpZgogfQogCiBBTFdBWVNf
SU5MSU5FIHN0YXRpYyB2b2lkIGZpcmVXYXRjaHBvaW50c0FuZENsZWFyU3R1YklmTmVlZGVkKFZN
JiB2bSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDMxYWMzOWM0YzkxZmE2NjNiMDdkNWYxZTdm
ZWM0ZTQwNTgwOWM4MDIuLjA3Nzc3OTE1OTllYzM3ZjJjMDllY2JkMmM0YTcxYWMwMWI3OGIyMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAg
LTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBuYXRpdmVGb3JHZW5lcmF0b3IoVk0qIHZtLCBUaHVua0Z1bgogICAgIGppdC54b3I2NChB
Uk02NFJlZ2lzdGVyczo6eDEsIEFSTTY0UmVnaXN0ZXJzOjp4Mik7CiAgICAgaml0LmNhbGwoQVJN
NjRSZWdpc3RlcnM6OngyLCBKU0VudHJ5UHRyVGFnKTsKIAotI2VsaWYgQ1BVKEFSTSkgfHwgQ1BV
KE1JUFMpCisjZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKE1JUFMpCiAjaWYgQ1BVKE1JUFMp
CiAgICAgLy8gQWxsb2NhdGUgc3RhY2sgc3BhY2UgZm9yICh1bnVzZWQpIDE2IGJ5dGVzICg4LWJ5
dGUgYWxpZ25lZCkgZm9yIDQgYXJndW1lbnRzLgogICAgIGppdC5zdWJQdHIoSlNJbnRlcmZhY2VK
SVQ6OlRydXN0ZWRJbW0zMigxNiksIEpTSW50ZXJmYWNlSklUOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmgKaW5kZXggNmI5Yjc5ODc2ZWNlYTY1NmM0MmE2NTk1NjRlYTU0ODA4MjcwMDNkZS4u
Mjg0ODVhOTVjMGE0NDU0MmZiNGVjZjRlNDlhNTIwMzc0ZDc1ZWIxMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaApAQCAtMzQs
OSArMzQsNyBAQAogI2RlZmluZSBPRkZMSU5FX0FTTV9DX0xPT1AgMQogI2RlZmluZSBPRkZMSU5F
X0FTTV9YODYgMAogI2RlZmluZSBPRkZMSU5FX0FTTV9YODZfV0lOIDAKLSNkZWZpbmUgT0ZGTElO
RV9BU01fQVJNIDAKICNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAotI2RlZmluZSBPRkZMSU5F
X0FTTV9BUk12N19UUkFESVRJT05BTCAwCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTTY0IDAKICNk
ZWZpbmUgT0ZGTElORV9BU01fQVJNNjRFIDAKICNkZWZpbmUgT0ZGTElORV9BU01fWDg2XzY0IDAK
QEAgLTc5LDE5ICs3Nyw2IEBACiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKICNlbmRpZgog
Ci0jaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSNpZiBXVEZfQVJNX0FSQ0hfQVRfTEVBU1QoNykK
LSNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjdfVFJBRElUSU9OQUwgMQotI2RlZmluZSBPRkZMSU5F
X0FTTV9BUk0gMAotI2Vsc2UKLSNkZWZpbmUgT0ZGTElORV9BU01fQVJNIDEKLSNkZWZpbmUgT0ZG
TElORV9BU01fQVJNdjdfVFJBRElUSU9OQUwgMAotI2VuZGlmCi0jZWxzZQotI2RlZmluZSBPRkZM
SU5FX0FTTV9BUk12N19UUkFESVRJT05BTCAwCi0jZGVmaW5lIE9GRkxJTkVfQVNNX0FSTSAwCi0j
ZW5kaWYKLQogI2lmIENQVShYODZfNjQpICYmICFDT01QSUxFUihNU1ZDKQogI2RlZmluZSBPRkZM
SU5FX0FTTV9YODZfNjQgMQogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA2NWQ1ZThkMDNkNDhlZGVlNjYxMmNh
MGU0OTg2Yzc3YzY3OTI3N2QxLi5lYzJhMzJlODMzZDYyNmU3ODhmNDJlYTAyOWE2ZmI2NjcwMTYw
ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCkBAIC03MSwxMSArNzEsMTAgQEAKICMgIFRoZXkgYXJlIGNhbGxlZS1zYXZl
IHJlZ2lzdGVycywgYW5kIGd1YXJhbnRlZWQgdG8gYmUgZGlzdGluY3QgZnJvbSBhbGwgb3RoZXIK
ICMgIHJlZ2lzdGVycyBvbiBhbGwgYXJjaGl0ZWN0dXJlcy4KICMKLSMgIC0gbHIgaXMgZGVmaW5l
ZCBvbiBub24tWDg2IGFyY2hpdGVjdHVyZXMgKEFSTTY0LCBBUk02NEUsIEFSTXY3LCBBUk0sCi0j
ICBBUk12N19UUkFESVRJT05BTCwgTUlQUyBhbmQgQ0xPT1ApIGFuZCBob2xkcyB0aGUgcmV0dXJu
IFBDCisjICAtIGxyIGlzIGRlZmluZWQgb24gbm9uLVg4NiBhcmNoaXRlY3R1cmVzIChBUk02NCwg
QVJNNjRFLCBBUk12NywgTUlQUyBhbmQgQ0xPT1ApCisjICBhbmQgaG9sZHMgdGhlIHJldHVybiBQ
QwogIwotIyAgLSBwYyBob2xkcyB0aGUgKG5hdGl2ZSkgcHJvZ3JhbSBjb3VudGVyIG9uIDMyLWJp
dHMgQVJNIGFyY2hpdGVjdHVyZXMgKEFSTSwKLSMgIEFSTXY3LCBBUk12N19UUkFESVRJT05BTCkK
KyMgIC0gcGMgaG9sZHMgdGhlIChuYXRpdmUpIHByb2dyYW0gY291bnRlciBvbiAzMi1iaXRzIEFS
TSBhcmNoaXRlY3R1cmVzIChBUk12NykKICMKICMgIC0gdDAsIHQxLCB0MiwgdDMsIHQ0IGFuZCBv
cHRpb25hbGx5IHQ1IGFyZSB0ZW1wb3JhcnkgcmVnaXN0ZXJzIHRoYXQgY2FuIGdldCB0cmFzaGVk
IG9uCiAjICBjYWxscywgYW5kIGFyZSBwYWlyd2lzZSBkaXN0aW5jdCByZWdpc3RlcnMuIHQ0IGhv
bGRzIHRoZSBKUyBwcm9ncmFtIGNvdW50ZXIsIHNvIHVzZQpAQCAtNjEyLDcgKzYxMSw3IEBAIG1h
Y3JvIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KHRlbXBSZWcsIGxvY2F0aW9uKQogICAgICAg
ICAgICAgIyBDX0xPT1AgZG9lcyBub3QgbmVlZCB0aGUgYWxpZ25tZW50LCBhbmQgY2FuIHVzZSBh
IGxpdHRsZSBwZXJmCiAgICAgICAgICAgICAjIGltcHJvdmVtZW50IGZyb20gYXZvaWRpbmcgdXNl
bGVzcyB3b3JrLgogICAgICAgICBlbHNlCi0gICAgICAgICAgICBpZiBBUk0gb3IgQVJNdjcgb3Ig
QVJNdjdfVFJBRElUSU9OQUwKKyAgICAgICAgICAgIGlmIEFSTXY3CiAgICAgICAgICAgICAgICAg
IyBBUk0gY2FuJ3QgZG8gbG9naWNhbCBvcHMgd2l0aCB0aGUgc3AgYXMgYSBzb3VyY2UKICAgICAg
ICAgICAgICAgICBtb3ZlIHNwLCB0ZW1wUmVnCiAgICAgICAgICAgICAgICAgYW5kcCBTdGFja0Fs
aWdubWVudE1hc2ssIHRlbXBSZWcKQEAgLTYyOSw3ICs2MjgsNyBAQCBlbmQKIAogaWYgQ19MT09Q
IG9yIEFSTTY0IG9yIEFSTTY0RSBvciBYODZfNjQgb3IgWDg2XzY0X1dJTgogICAgIGNvbnN0IENh
bGxlZVNhdmVSZWdpc3RlckNvdW50ID0gMAotZWxzaWYgQVJNIG9yIEFSTXY3X1RSQURJVElPTkFM
IG9yIEFSTXY3CitlbHNpZiBBUk12NwogICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50
ID0gNwogZWxzaWYgTUlQUwogICAgIGNvbnN0IENhbGxlZVNhdmVSZWdpc3RlckNvdW50ID0gMQpA
QCAtNjQ1LDggKzY0NCw2IEBAIGNvbnN0IFZNRW50cnlUb3RhbEZyYW1lU2l6ZSA9IChDYWxsZWVS
ZWdpc3RlclNhdmVTaXplICsgc2l6ZW9mIFZNRW50cnlSZWNvcmQgKyBTCiAKIG1hY3JvIHB1c2hD
YWxsZWVTYXZlcygpCiAgICAgaWYgQ19MT09QIG9yIEFSTTY0IG9yIEFSTTY0RSBvciBYODZfNjQg
b3IgWDg2XzY0X1dJTgotICAgIGVsc2lmIEFSTSBvciBBUk12N19UUkFESVRJT05BTAotICAgICAg
ICBlbWl0ICJwdXNoIHtyNC1yMTB9IgogICAgIGVsc2lmIEFSTXY3CiAgICAgICAgIGVtaXQgInB1
c2gge3I0LXI2LCByOC1yMTF9IgogICAgIGVsc2lmIE1JUFMKQEAgLTY2Nyw4ICs2NjQsNiBAQCBl
bmQKIAogbWFjcm8gcG9wQ2FsbGVlU2F2ZXMoKQogICAgIGlmIENfTE9PUCBvciBBUk02NCBvciBB
Uk02NEUgb3IgWDg2XzY0IG9yIFg4Nl82NF9XSU4KLSAgICBlbHNpZiBBUk0gb3IgQVJNdjdfVFJB
RElUSU9OQUwKLSAgICAgICAgZW1pdCAicG9wIHtyNC1yMTB9IgogICAgIGVsc2lmIEFSTXY3CiAg
ICAgICAgIGVtaXQgInBvcCB7cjQtcjYsIHI4LXIxMX0iCiAgICAgZWxzaWYgTUlQUwpAQCAtNjg2
LDcgKzY4MSw3IEBAIG1hY3JvIHBvcENhbGxlZVNhdmVzKCkKIGVuZAogCiBtYWNybyBwcmVzZXJ2
ZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3
X1RSQURJVElPTkFMIG9yIE1JUFMKKyAgICBpZiBDX0xPT1Agb3IgQVJNdjcgb3IgTUlQUwogICAg
ICAgICBwdXNoIGxyCiAgICAgICAgIHB1c2ggY2ZyCiAgICAgZWxzaWYgWDg2IG9yIFg4Nl9XSU4g
b3IgWDg2XzY0IG9yIFg4Nl82NF9XSU4KQEAgLTcwMSw3ICs2OTYsNyBAQCBlbmQKIAogbWFjcm8g
cmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKICAgICBtb3ZlIGNmciwgc3AKLSAgICBpZiBDX0xPT1Ag
b3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMKKyAgICBpZiBDX0xP
T1Agb3IgQVJNdjcgb3IgTUlQUwogICAgICAgICBwb3AgY2ZyCiAgICAgICAgIHBvcCBscgogICAg
IGVsc2lmIFg4NiBvciBYODZfV0lOIG9yIFg4Nl82NCBvciBYODZfNjRfV0lOCkBAIC03MTUsNyAr
NzEwLDYgQEAgbWFjcm8gcHJlc2VydmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKICAgICBzdWJw
IENhbGxlZVNhdmVTcGFjZVN0YWNrQWxpZ25lZCwgc3AKICAgICBpZiBDX0xPT1AKICAgICAgICAg
c3RvcmVwIG1ldGFkYXRhVGFibGUsIC1QdHJTaXplW2Nmcl0KLSAgICBlbHNpZiBBUk0gb3IgQVJN
djdfVFJBRElUSU9OQUwKICAgICBlbHNpZiBBUk12NwogICAgICAgICBzdG9yZXAgbWV0YWRhdGFU
YWJsZSwgLTRbY2ZyXQogICAgIGVsc2lmIEFSTTY0IG9yIEFSTTY0RQpAQCAtNzQwLDcgKzczNCw2
IEBAIGVuZAogbWFjcm8gcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogICAgIGlmIENf
TE9PUAogICAgICAgICBsb2FkcCAtUHRyU2l6ZVtjZnJdLCBtZXRhZGF0YVRhYmxlCi0gICAgZWxz
aWYgQVJNIG9yIEFSTXY3X1RSQURJVElPTkFMCiAgICAgZWxzaWYgQVJNdjcKICAgICAgICAgbG9h
ZHAgLTRbY2ZyXSwgbWV0YWRhdGFUYWJsZQogICAgIGVsc2lmIEFSTTY0IG9yIEFSTTY0RQpAQCAt
ODUxLDcgKzg0NCw3IEBAIG1hY3JvIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21WTUVudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlcih2bSwgdGVtcCkKIGVuZAogCiBtYWNybyBwcmVzZXJ2ZVJldHVybkFk
ZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikKLSAgICBpZiBDX0xPT1Agb3IgQVJN
IG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIEFSTTY0IG9yIEFSTTY0RSBvciBNSVBT
CisgICAgaWYgQ19MT09QIG9yIEFSTXY3IG9yIEFSTTY0IG9yIEFSTTY0RSBvciBNSVBTCiAgICAg
ICAgICMgSW4gQ19MT09QIGNhc2UsIHdlJ3JlIG9ubHkgcHJlc2VydmluZyB0aGUgYnl0ZWNvZGUg
dlBDLgogICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCiAgICAgZWxzaWYgWDg2
IG9yIFg4Nl9XSU4gb3IgWDg2XzY0IG9yIFg4Nl82NF9XSU4KQEAgLTg3NCw3ICs4NjcsNyBAQCBt
YWNybyBmdW5jdGlvblByb2xvZ3VlKCkKICAgICAgICAgcHVzaCBjZnIKICAgICBlbHNpZiBBUk02
NCBvciBBUk02NEUKICAgICAgICAgcHVzaCBjZnIsIGxyCi0gICAgZWxzaWYgQ19MT09QIG9yIEFS
TSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBNSVBTCisgICAgZWxzaWYgQ19MT09Q
IG9yIEFSTXY3IG9yIE1JUFMKICAgICAgICAgcHVzaCBscgogICAgICAgICBwdXNoIGNmcgogICAg
IGVuZApAQCAtODg2LDcgKzg3OSw3IEBAIG1hY3JvIGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgICAg
ICBwb3AgY2ZyCiAgICAgZWxzaWYgQVJNNjQgb3IgQVJNNjRFCiAgICAgICAgIHBvcCBsciwgY2Zy
Ci0gICAgZWxzaWYgQ19MT09QIG9yIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBv
ciBNSVBTCisgICAgZWxzaWYgQ19MT09QIG9yIEFSTXY3IG9yIE1JUFMKICAgICAgICAgcG9wIGNm
cgogICAgICAgICBwb3AgbHIKICAgICBlbmQKQEAgLTk1OCw3ICs5NTEsNyBAQCBtYWNybyBwcmVw
YXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQog
ICAgIGFkZGkgU3RhY2tBbGlnbm1lbnQgLSAxICsgQ2FsbEZyYW1lSGVhZGVyU2l6ZSwgdGVtcDIK
ICAgICBhbmRpIH5TdGFja0FsaWdubWVudE1hc2ssIHRlbXAyCiAKLSAgICBpZiBBUk0gb3IgQVJN
djdfVFJBRElUSU9OQUwgb3IgQVJNdjcgb3IgQVJNNjQgb3IgQVJNNjRFIG9yIENfTE9PUCBvciBN
SVBTCisgICAgaWYgQVJNdjcgb3IgQVJNNjQgb3IgQVJNNjRFIG9yIENfTE9PUCBvciBNSVBTCiAg
ICAgICAgIGFkZHAgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNwCiAgICAgICAgIHN1YmkgQ2FsbGVy
RnJhbWVBbmRQQ1NpemUsIHRlbXAyCiAgICAgICAgIGxvYWRwIENhbGxlckZyYW1lQW5kUEM6OnJl
dHVyblBDW2Nmcl0sIGxyCkBAIC0xMTE3LDcgKzExMTAsNyBAQCBtYWNybyBwcm9sb2d1ZShjb2Rl
QmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgp
CiAgICAgICAgIGlmIEFSTTY0IG9yIEFSTTY0RQogICAgICAgICAgICAgcG9wIGxyLCBjZnIKICAg
ICAgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyBzcAotICAgICAgICBlbHNpZiBBUk0gb3IgQVJN
djcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUworICAgICAgICBlbHNpZiBBUk12NyBvciBN
SVBTCiAgICAgICAgICAgICBwb3AgY2ZyCiAgICAgICAgICAgICBwb3AgbHIKICAgICAgICAgZWxz
ZQpAQCAtMTMyNCwxMCArMTMxNyw2IEBAIGVsc2UKICAgICAgICAgX3JlbGF0aXZlUENCYXNlOgog
ICAgICAgICAgICAgbW92ZSBwYywgcGNCYXNlCiAgICAgICAgICAgICBzdWJwIDMsIHBjQmFzZSAg
ICMgTmVlZCB0byBiYWNrIHVwIHRoZSBQQyBhbmQgc2V0IHRoZSBUaHVtYjIgYml0Ci0gICAgICAg
IGVsc2lmIEFSTSBvciBBUk12N19UUkFESVRJT05BTAotICAgICAgICBfcmVsYXRpdmVQQ0Jhc2U6
Ci0gICAgICAgICAgICBtb3ZlIHBjLCBwY0Jhc2UKLSAgICAgICAgICAgIHN1YnAgOCwgcGNCYXNl
CiAgICAgICAgIGVsc2lmIE1JUFMKICAgICAgICAgICAgIGxhIF9yZWxhdGl2ZVBDQmFzZSwgcGNC
YXNlCiAgICAgICAgICAgICBzZXRjYWxscmVnIHBjQmFzZSAjIG5lZWRlZCB0byBzZXQgJHQ5IHRv
IHRoZSByaWdodCB2YWx1ZSBmb3IgdGhlIC5jcGxvYWQgY3JlYXRlZCBieSB0aGUgbGFiZWwuCkBA
IC0xMzU4LDcgKzEzNDcsNyBAQCBtYWNybyBzZXRFbnRyeUFkZHJlc3NDb21tb24oaW5kZXgsIGxh
YmVsLCBtYXApCiAgICAgICAgIHBjcnRvYWRkciBsYWJlbCwgdDIKICAgICAgICAgbW92ZSBpbmRl
eCwgdDQKICAgICAgICAgc3RvcmVwIHQyLCBbbWFwLCB0NCwgUHRyU2l6ZV0KLSAgICBlbHNpZiBB
Uk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwKKyAgICBlbHNpZiBBUk12NwogICAgICAg
ICBtdmxibCAobGFiZWwgLSBfcmVsYXRpdmVQQ0Jhc2UpLCB0NAogICAgICAgICBhZGRwIHQ0LCB0
MiwgdDQKICAgICAgICAgbW92ZSBpbmRleCwgdDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggODEyOGE0
MzZiZDNjZTllYmI5Yzk4YzFkMmM2NzE0NDIzM2RkNWZlMy4uNzEwMjAzODgzZTFhMjc5MGM3YWNj
OWM5YTExMDBkZGEzMGM1MGQzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTg4LDcgKzg4LDcgQEAg
bWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3AsIGRpc3BhdGNoKQogZW5kCiAKIG1hY3Jv
IGNDYWxsMihmdW5jdGlvbikKLSAgICBpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9O
QUwgb3IgTUlQUworICAgIGlmIEFSTXY3IG9yIE1JUFMKICAgICAgICAgY2FsbCBmdW5jdGlvbgog
ICAgIGVsc2lmIFg4NiBvciBYODZfV0lOCiAgICAgICAgIHN1YnAgOCwgc3AKQEAgLTExMiw3ICsx
MTIsNyBAQCBtYWNybyBjQ2FsbDJWb2lkKGZ1bmN0aW9uKQogZW5kCiAKIG1hY3JvIGNDYWxsNChm
dW5jdGlvbikKLSAgICBpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQ
UworICAgIGlmIEFSTXY3IG9yIE1JUFMKICAgICAgICAgY2FsbCBmdW5jdGlvbgogICAgIGVsc2lm
IFg4NiBvciBYODZfV0lOCiAgICAgICAgIHB1c2ggYTMKQEAgLTE3NCwxNSArMTc0LDExIEBAIG1h
Y3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKICAgICAgICAgYWRkcCBDYWxsRnJhbWVBbGlnblNsb3Rz
ICogU2xvdFNpemUsIHNwLCB0MwogICAgICAgICBhbmRwIH5TdGFja0FsaWdubWVudE1hc2ssIHQz
CiAgICAgICAgIHN1YnAgdDMsIENhbGxGcmFtZUFsaWduU2xvdHMgKiBTbG90U2l6ZSwgc3AKLSAg
ICBlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwKKyAgICBlbHNpZiBBUk12
NwogICAgICAgICBhZGRwIENhbGxGcmFtZUFsaWduU2xvdHMgKiBTbG90U2l6ZSwgc3AsIHQzCiAg
ICAgICAgIGNscmJwIHQzLCBTdGFja0FsaWdubWVudE1hc2ssIHQzCi0gICAgICAgIGlmIEFSTXY3
Ci0gICAgICAgICAgICBzdWJwIHQzLCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHQz
Ci0gICAgICAgICAgICBtb3ZlIHQzLCBzcAotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdWJw
IHQzLCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHNwCi0gICAgICAgIGVuZAorICAg
ICAgICBzdWJwIHQzLCBDYWxsRnJhbWVBbGlnblNsb3RzICogU2xvdFNpemUsIHQzCisgICAgICAg
IG1vdmUgdDMsIHNwCiAgICAgZW5kCiAKICAgICBsb2FkaSBQcm90b0NhbGxGcmFtZTo6cGFkZGVk
QXJnQ291bnRbcHJvdG9DYWxsRnJhbWVdLCB0NApAQCAtMjAzNSw3ICsyMDMxLDcgQEAgbWFjcm8g
bmF0aXZlQ2FsbFRyYW1wb2xpbmUoZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pCiAgICAgICAg
IGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MwogICAgICAgICBsb2FkcCBNYXJrZWRCbG9ja0Zvb3Rl
ck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1bdDNdLCB0MwogICAgICAgICBhZGRw
IDgsIHNwCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIENf
TE9PUCBvciBNSVBTCisgICAgZWxzaWYgQVJNdjcgb3IgQ19MT09QIG9yIE1JUFMKICAgICAgICAg
aWYgTUlQUwogICAgICAgICAjIGNhbGxpbmcgY29udmVudGlvbiBzYXlzIHRvIHNhdmUgc3RhY2sg
c3BhY2UgZm9yIDQgZmlyc3QgcmVnaXN0ZXJzIGluCiAgICAgICAgICMgYWxsIGNhc2VzLiBUbyBt
YXRjaCBvdXIgMTYtYnl0ZSBhbGlnbm1lbnQsIHRoYXQgbWVhbnMgd2UgbmVlZCB0bwpAQCAtMjEw
Miw3ICsyMDk4LDcgQEAgbWFjcm8gaW50ZXJuYWxGdW5jdGlvbkNhbGxUcmFtcG9saW5lKG9mZnNl
dE9mRnVuY3Rpb24pCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MwogICAgICAgICBs
b2FkcCBNYXJrZWRCbG9ja0Zvb3Rlck9mZnNldCArIE1hcmtlZEJsb2NrOjpGb290ZXI6Om1fdm1b
dDNdLCB0MwogICAgICAgICBhZGRwIDgsIHNwCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3IG9yIEFS
TXY3X1RSQURJVElPTkFMIG9yIENfTE9PUCBvciBNSVBTCisgICAgZWxzaWYgQVJNdjcgb3IgQ19M
T09QIG9yIE1JUFMKICAgICAgICAgc3VicCA4LCBzcCAjIGFsaWduIHN0YWNrIHBvaW50ZXIKICAg
ICAgICAgIyB0MSBhbHJlYWR5IGNvbnRhaW5zIHRoZSBDYWxsZWUuCiAgICAgICAgIGFuZHAgTWFy
a2VkQmxvY2tNYXNrLCB0MQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYXJtLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtLnJiCmlu
ZGV4IDgyNDRiYmFjMmM4MDRmOTA2ZmViYjM0YTRmMjkwNGFhM2Y3Y2I5N2MuLmIwYzMzNjI3ZDEw
ODcyMjc5ZTA4MTFjNGY0YTdlY2FkNDFlNWZjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2FybS5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hcm0ucmIKQEAgLTU5LDE5ICs1OSw2IEBAIGRlZiBpc0FSTXY3CiAgICAgY2FzZSAk
YWN0aXZlQmFja2VuZAogICAgIHdoZW4gIkFSTXY3IgogICAgICAgICB0cnVlCi0gICAgd2hlbiAi
QVJNdjdfVFJBRElUSU9OQUwiLCAiQVJNIgotICAgICAgICBmYWxzZQotICAgIGVsc2UKLSAgICAg
ICAgcmFpc2UgImJhZCB2YWx1ZSBmb3IgJGFjdGl2ZUJhY2tlbmQ6ICN7JGFjdGl2ZUJhY2tlbmR9
IgotICAgIGVuZAotZW5kCi0KLWRlZiBpc0FSTXY3VHJhZGl0aW9uYWwKLSAgICBjYXNlICRhY3Rp
dmVCYWNrZW5kCi0gICAgd2hlbiAiQVJNdjdfVFJBRElUSU9OQUwiCi0gICAgICAgIHRydWUKLSAg
ICB3aGVuICJBUk12NyIsICJBUk0iCi0gICAgICAgIGZhbHNlCiAgICAgZWxzZQogICAgICAgICBy
YWlzZSAiYmFkIHZhbHVlIGZvciAkYWN0aXZlQmFja2VuZDogI3skYWN0aXZlQmFja2VuZH0iCiAg
ICAgZW5kCkBAIC0xMDQsNyArOTEsNyBAQCBkZWYgYXJtTW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVn
aXN0ZXIpCiAgICAgICAgICRhc20ucHV0cyAibW92ICN7cmVnaXN0ZXIuYXJtT3BlcmFuZH0sIFwj
I3t2YWx1ZX0iCiAgICAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgogICAg
ICAgICAkYXNtLnB1dHMgIm12biAje3JlZ2lzdGVyLmFybU9wZXJhbmR9LCBcIyN7fnZhbHVlfSIK
LSAgICBlbHNpZiBpc0FSTXY3IG9yIGlzQVJNdjdUcmFkaXRpb25hbAorICAgIGVsc2lmIGlzQVJN
djcKICAgICAgICAgJGFzbS5wdXRzICJtb3Z3ICN7cmVnaXN0ZXIuYXJtT3BlcmFuZH0sIFwjI3t2
YWx1ZSAmIDB4ZmZmZn0iCiAgICAgICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9IDAKICAg
ICAgICAgICAgICRhc20ucHV0cyAibW92dCAje3JlZ2lzdGVyLmFybU9wZXJhbmR9LCBcIyN7KHZh
bHVlID4+IDE2KSAmIDB4ZmZmZn0iCkBAIC0zMDEsMjEgKzI4OCwxMSBAQCBkZWYgYXJtTG93ZXJM
YWJlbFJlZmVyZW5jZXMobGlzdCkKIGVuZAogCiBjbGFzcyBTZXF1ZW5jZQotICAgIGRlZiBnZXRN
b2RpZmllZExpc3RBUk0KLSAgICAgICAgcmFpc2UgdW5sZXNzICRhY3RpdmVCYWNrZW5kID09ICJB
Uk0iCi0gICAgICAgIGdldE1vZGlmaWVkTGlzdEFSTUNvbW1vbgotICAgIGVuZAotCiAgICAgZGVm
IGdldE1vZGlmaWVkTGlzdEFSTXY3CiAgICAgICAgIHJhaXNlIHVubGVzcyAkYWN0aXZlQmFja2Vu
ZCA9PSAiQVJNdjciCiAgICAgICAgIGdldE1vZGlmaWVkTGlzdEFSTUNvbW1vbgogICAgIGVuZAog
Ci0gICAgZGVmIGdldE1vZGlmaWVkTGlzdEFSTXY3X1RSQURJVElPTkFMCi0gICAgICAgIHJhaXNl
IHVubGVzcyAkYWN0aXZlQmFja2VuZCA9PSAiQVJNdjdfVFJBRElUSU9OQUwiCi0gICAgICAgIGdl
dE1vZGlmaWVkTGlzdEFSTUNvbW1vbgotICAgIGVuZAotCiAgICAgZGVmIGdldE1vZGlmaWVkTGlz
dEFSTUNvbW1vbgogICAgICAgICByZXN1bHQgPSBAbGlzdAogICAgICAgICByZXN1bHQgPSByaXNj
TG93ZXJTaW1wbGVCcmFuY2hPcHMocmVzdWx0KQpAQCAtNDE0LDIxICszOTEsMTEgQEAgZGVmIGVt
aXRBcm1UZXN0U2V0KG9wZXJhbmRzLCBjb2RlKQogZW5kCiAKIGNsYXNzIEluc3RydWN0aW9uCi0g
ICAgZGVmIGxvd2VyQVJNCi0gICAgICAgIHJhaXNlIHVubGVzcyAkYWN0aXZlQmFja2VuZCA9PSAi
QVJNIgotICAgICAgICBsb3dlckFSTUNvbW1vbgotICAgIGVuZAotCiAgICAgZGVmIGxvd2VyQVJN
djcKICAgICAgICAgcmFpc2UgdW5sZXNzICRhY3RpdmVCYWNrZW5kID09ICJBUk12NyIKICAgICAg
ICAgbG93ZXJBUk1Db21tb24KICAgICBlbmQKIAotICAgIGRlZiBsb3dlckFSTXY3X1RSQURJVElP
TkFMCi0gICAgICAgIHJhaXNlIHVubGVzcyAkYWN0aXZlQmFja2VuZCA9PSAiQVJNdjdfVFJBRElU
SU9OQUwiCi0gICAgICAgIGxvd2VyQVJNQ29tbW9uCi0gICAgZW5kCi0KICAgICBkZWYgbG93ZXJB
Uk1Db21tb24KICAgICAgICAgY2FzZSBvcGNvZGUKICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRw
IiwgImFkZGlzIiwgImFkZHBzIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYmFja2VuZHMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9i
YWNrZW5kcy5yYgppbmRleCBmZjA2NWQ1MzkyZGZjZGQzMjg1NmFhZDdmMDZhYzIxOGQ1MmQwOGMx
Li5jNmNjNWFjMTZlMTIzZGM1ZTYwNjkyZGE0ZmE4NDQ1YjI4MWFmOWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgpAQCAtNDAsOSArNDAsNyBAQAog
ICAgICAiWDg2X1dJTiIsCiAgICAgICJYODZfNjQiLAogICAgICAiWDg2XzY0X1dJTiIsCi0gICAg
ICJBUk0iLAogICAgICAiQVJNdjciLAotICAgICAiQVJNdjdfVFJBRElUSU9OQUwiLAogICAgICAi
QVJNNjQiLAogICAgICAiQVJNNjRFIiwKICAgICAgIk1JUFMiLApAQCAtNjAsOSArNTgsNyBAQAog
ICAgICAiWDg2X1dJTiIsCiAgICAgICJYODZfNjQiLAogICAgICAiWDg2XzY0X1dJTiIsCi0gICAg
ICJBUk0iLAogICAgICAiQVJNdjciLAotICAgICAiQVJNdjdfVFJBRElUSU9OQUwiLAogICAgICAi
QVJNNjQiLAogICAgICAiQVJNNjRFIiwKICAgICAgIk1JUFMiLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmNwcAppbmRleCA0N2RmYjk2ZDE1NDAzNjBmYzI0OThjOGQ1NWZmZTljZDU3
YjJlZTEzLi5mNDc3NTg3OWNkMzM4YjRlNTlkNDJmMTMwYzQ2NzI2NTg0MWVmY2I1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogdGVtcGxhdGU8WWFyckpJVENvbXBpbGVNb2RlIGNv
bXBpbGVNb2RlPgogY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJp
dmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKLSNpZiBDUFUoQVJNKQorI2lmIENQVShBUk1fVEhVTUIy
KQogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGlucHV0ID0gQVJNUmVnaXN0ZXJzOjpyMDsK
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBpbmRleCA9IEFSTVJlZ2lzdGVyczo6cjE7CiAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgbGVuZ3RoID0gQVJNUmVnaXN0ZXJzOjpyMjsKQEAg
LTM3MjMsNyArMzcyMyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAvLyBUaGUgQUJJIGRvZXNuJ3Qg
Z3VhcmFudGVlIHRoZSB1cHBlciBiaXRzIGFyZSB6ZXJvIG9uIHVuc2lnbmVkIGFyZ3VtZW50cywg
c28gY2xlYXIgdGhlbSBvdXJzZWx2ZXMuCiAgICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKGluZGV4
LCBpbmRleCk7CiAgICAgICAgIHplcm9FeHRlbmQzMlRvUHRyKGxlbmd0aCwgbGVuZ3RoKTsKLSNl
bGlmIENQVShBUk0pCisjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgcHVzaChBUk1SZWdp
c3RlcnM6OnI0KTsKICAgICAgICAgcHVzaChBUk1SZWdpc3RlcnM6OnI1KTsKICAgICAgICAgcHVz
aChBUk1SZWdpc3RlcnM6OnI2KTsKQEAgLTM3NzYsNyArMzc3Niw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogI2Vs
aWYgQ1BVKEFSTTY0KQogICAgICAgICBpZiAobV9kZWNvZGVTdXJyb2dhdGVQYWlycykKICAgICAg
ICAgICAgIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7Ci0jZWxp
ZiBDUFUoQVJNKQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIHBvcChBUk1SZWdpc3Rl
cnM6OnI4KTsKICAgICAgICAgcG9wKEFSTVJlZ2lzdGVyczo6cjYpOwogICAgICAgICBwb3AoQVJN
UmVnaXN0ZXJzOjpyNSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmxpbmVBU00uaCBi
L1NvdXJjZS9XVEYvd3RmL0lubGluZUFTTS5oCmluZGV4IDMzYzFhMmI3MDNhMzY2ODhhNWUxYzE4
NzZkNGFiYjZhZjExOGZlMmEuLjgzNzlhNjk2NTkxNTQzMTJmYjFmZmUzMTcwNGNhYWJjMjUyMmQz
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0lubGluZUFTTS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0lubGluZUFTTS5oCkBAIC05Myw3ICs5Myw3IEBACiAjZGVmaW5lIExPQ0FMX0xBQkVM
X1NUUklORyhuYW1lKSAiLkwiICNuYW1lCiAjZW5kaWYKIAotI2lmIChDUFUoQVJNX1RSQURJVElP
TkFMKSAmJiAoZGVmaW5lZCh0aHVtYjIpIHx8IGRlZmluZWQoX190aHVtYjJfXykgfHwgZGVmaW5l
ZChfX3RodW1iKSB8fCBkZWZpbmVkKF9fdGh1bWJfXykpKSB8fCBDUFUoQVJNX1RIVU1CMikKKyNp
ZiBDUFUoQVJNX1RIVU1CMikKICNkZWZpbmUgSU5MSU5FX0FSTV9GVU5DVElPTihuYW1lKSAiLnRo
dW1iIiAiXG4iICIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0obmFtZSkgIlxuIgogI2Vs
c2UKICNkZWZpbmUgSU5MSU5FX0FSTV9GVU5DVElPTihuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggYjIz
YTZlOWQxZWFmODUzMGZmYmViMTJjNTNmNDljZjJjODUzMmFkNi4uMzUzZjQ4NjcwOTBiOTI4YmY1
OTg2NzkwYzZhY2Y3NWI1NzllZDU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC04MjEsMTAgKzgyMSw2IEBA
CiAjaWYgKENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpKSAmJiAoUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgT1MoTElOVVgpIHx8IE9TKEZSRUVCU0QpKQogI2RlZmluZSBFTkFCTEVfREZHX0pJ
VCAxCiAjZW5kaWYKLS8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBBUk0uICovCi0jaWYgQ1BVKEFS
TV9UUkFESVRJT05BTCkKLSNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQotI2VuZGlmCiAvKiBFbmFi
bGUgdGhlIERGRyBKSVQgb24gTUlQUy4gKi8KICNpZiBDUFUoTUlQUykKICNkZWZpbmUgRU5BQkxF
X0RGR19KSVQgMQpAQCAtODQ3LDcgKzg0Myw3IEBACiAjZGVmaW5lIEVOQUJMRV9GQVNUX1RMU19K
SVQgMQogI2VuZGlmCiAKLSNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNX1RI
VU1CMikgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKSB8fCBDUFUoTUlQUykK
KyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFS
TTY0KSB8fCBDUFUoTUlQUykKICNkZWZpbmUgRU5BQkxFX01BU01fUFJPQkUgMQogI2Vsc2UKICNk
ZWZpbmUgRU5BQkxFX01BU01fUFJPQkUgMAo=
</data>
<flag name="review"
          id="372551"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>