<?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>166640</bug_id>
          
          <creation_ts>2017-01-02 08:27:08 -0800</creation_ts>
          <short_desc>Remove sh4 specific code from JavaScriptCore</short_desc>
          <delta_ts>2017-01-03 00:17:40 -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>JavaScriptCore</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Brianceau">jbriance</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1263313</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2017-01-02 08:27:08 -0800</bug_when>
    <thetext>It seems that sh4 JIT code does not compile for a while (r189884 at least).

As nobody seems to have interest in this architecture anymore, let&apos;s remove this dead code and thus ease the burden for JSC maintainers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263314</commentid>
    <comment_count>1</comment_count>
      <attachid>297899</attachid>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2017-01-02 08:37:10 -0800</bug_when>
    <thetext>Created attachment 297899
Remove sh4 specific code from JavaScriptCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263327</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-02 11:01:12 -0800</bug_when>
    <thetext>I like this too!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263408</commentid>
    <comment_count>3</comment_count>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2017-01-03 00:17:40 -0800</bug_when>
    <thetext>Manually committed r210232: https://trac.webkit.org/changeset/210232</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297899</attachid>
            <date>2017-01-02 08:37:10 -0800</date>
            <delta_ts>2017-01-02 10:49:20 -0800</delta_ts>
            <desc>Remove sh4 specific code from JavaScriptCore</desc>
            <filename>bug-166640.patch</filename>
            <type>text/plain</type>
            <size>245351</size>
            <attacher name="Julien Brianceau">jbriance</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NjlhMTIzLi5jN2ZmZmIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDc4LDcgKzEwNzgsNiBAQCBz
ZXQoT0ZGTElORV9BU00KICAgICBvZmZsaW5lYXNtL3Jpc2MucmIKICAgICBvZmZsaW5lYXNtL3Nl
bGZfaGFzaC5yYgogICAgIG9mZmxpbmVhc20vc2V0dGluZ3MucmIKLSAgICBvZmZsaW5lYXNtL3No
NC5yYgogICAgIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiCiAgICAgb2ZmbGluZWFzbS94ODYucmIK
ICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDY5MjY2OTYuLmViNmUxNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE3LTAxLTAyICBKdWxpZW4gQnJp
YW5jZWF1ICA8amJyaWFuY2VAY2lzY28uY29tPgorCisgICAgICAgIFJlbW92ZSBzaDQgc3BlY2lm
aWMgY29kZSBmcm9tIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY2NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBzaDQtc3BlY2lmaWMgY29kZSBkb2VzIG5vdCBjb21waWxlIGZv
ciBhIHdoaWxlIChyMTg5ODg0IGF0IGxlYXN0KS4KKyAgICAgICAgQXMgbm9ib2R5IHNlZW1zIHRv
IGhhdmUgaW50ZXJlc3QgaW4gdGhpcyBhcmNoaXRlY3R1cmUgYW55bW9yZSwgbGV0J3MKKyAgICAg
ICAgcmVtb3ZlIHRoaXMgZGVhZCBjb2RlIGFuZCB0aHVzIGVhc2UgdGhlIGJ1cmRlbiBmb3IgSlND
IG1haW50YWluZXJzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpKdW1wOjpKdW1wKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcDo6bGluayk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogYXNzZW1ibGVyL01heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmg6CisgICAgICAg
ICogYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2Rl
L0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcDoKKyAgICAgICAgKEpTQzo6U2xv
d1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50czo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmRlYnVnQ2FsbCk6CisgICAgICAgICogaml0
L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6cHJlcGFyZUZv
clRhaWxDYWxsU2xvdyk6CisgICAgICAgICogaml0L0NhbGxGcmFtZVNodWZmbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVGb3JUYWlsQ2FsbCk6CisgICAg
ICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBqaXQvRlBSSW5mby5o
OgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2
ZUNhbGwpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQv
UmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bGxpbnRCYXNlbGlu
ZUNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6ZGZnQ2Fs
bGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6Cisg
ICAgICAgIChKU0M6Om5hdGl2ZUZvckdlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRE
YXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToK
KyAgICAgICAgKiBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDoKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6CisgICAg
ICAgICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6CisgICAgICAgICogb2ZmbGluZWFzbS9z
aDQucmI6IFJlbW92ZWQuCisgICAgICAgICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpT
Qzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Z2VuZXJhdGVFbnRlcik6CisgICAgICAgIChKU0M6Ollh
cnI6OllhcnJHZW5lcmF0b3I6OmdlbmVyYXRlUmV0dXJuKToKKwogMjAxNy0wMS0wMSAgSmVmZiBN
aWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHVzZXItdmlzaWJsZSBj
b3B5cmlnaHQgc3RyaW5ncyB0byBpbmNsdWRlIDIwMTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZDkzMjU2Yi4uZWMzMmExNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE0OTMsOCArMTQ5Myw2IEBACiAJCTg2QTkwRUQwMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRB
cml0aG1ldGljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QTkwRUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRBcml0aG1ldGljLmNwcCAqLzsgfTsK
IAkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAw
NkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4NkFERDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3Nl
bWJsZXJBUk12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4NkFFNjRBOTEz
NUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE2MTM1RTVFMUMwMDk2MzAxMiAvKiBN
YWNyb0Fzc2VtYmxlclNINC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTg2QUU2NEFBMTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QUU2NEE3MTM1
RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkI1ODI2NzE0RDI3OTZDMDBBOUMzMDYgLyogQ29k
ZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZCNTgyMkUxNEQyMzczQjAwQTlDMzA2IC8qIENvZGVQcm9maWxlLmNwcCAqLzsgfTsKIAkJ
ODZCNTgyNjkxNEQyNzk3MDAwQTlDMzA2IC8qIENvZGVQcm9maWxpbmcuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwM0NFRjIxNEM3NTQ2NDAwQUU1
OUUzIC8qIENvZGVQcm9maWxpbmcuY3BwICovOyB9OwogCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RG
NTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zOTUz
LDggKzM5NTEsNiBAQAogCQk4NkE5MEVDRjBFRTdENTFGMDBBQjM1MEQgLyogSklUQXJpdGhtZXRp
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBcml0aG1ldGlj
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZBREQxNDMwRkRERUE5ODAwMDZF
RUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFSTXY3QXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QUREMTQ0
MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyQVJNdjcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJODZBRTY0QTYxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVy
U0g0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyU0g0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2QUU2NEE3MTM1RTVFMUMwMDk2MzAx
MiAvKiBTSDRBc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU0g0
QXNzZW1ibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QjU4MjJDMTREMjJG
NUYwMEE5QzMwNiAvKiBQcm9maWxlVHJlZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJvZmlsZVRyZWVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2QjU4MjJFMTREMjM3M0IwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2RlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2QjU4MjJGMTREMjM3M0IwMEE5QzMwNiAvKiBDb2RlUHJvZmlsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlUHJvZmlsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE3MCwxNCArNzE2NiwxMiBAQAogCQkJCTg2QzU2OERF
MTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLywKIAkJCQlGRTY4QzYz
NTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCAqLywKIAkJCQlG
RTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggKi8sCi0J
CQkJODZBRTY0QTYxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggKi8sCiAJ
CQkJODYwMTYxRTAwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggKi8sCiAJ
CQkJODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8s
CiAJCQkJQTdBNEFFMDcxNzk3M0IyNjAwNTYxMkIxIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
LmNwcCAqLywKIAkJCQk4NjAxNjFFMjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaCAqLywKIAkJCQk2NTg2MDE3NzE4NUE4RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLywKIAkJCQk4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAg
LyogTUlQU0Fzc2VtYmxlci5oICovLAotCQkJCTg2QUU2NEE3MTM1RTVFMUMwMDk2MzAxMiAvKiBT
SDRBc3NlbWJsZXIuaCAqLywKIAkJCQk5Njg4Q0IxNDBFRDEyQjRFMDAxRDY0OUYgLyogWDg2QXNz
ZW1ibGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGFzc2VtYmxlcjsKQEAgLTg3MjMsNyArODcx
Nyw2IEBACiAJCQkJRTMyQUIyNDQxRENENzVGNDAwRDc1MzNBIC8qIE1hY3JvQXNzZW1ibGVySGVs
cGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1h
Y3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2OEM2MzcxQjkwREUwNDAw
NDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODZB
RTY0QTkxMzVFNUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2MDE2MUU1MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTg4OTEsNyAr
ODg4NCw2IEBACiAJCQkJQTc5MERENkUxODJGNDk5NzAwNTg4ODA3IC8qIFNldEl0ZXJhdG9yUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyog
U2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRF
OTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTg2QUU2NEFBMTM1
RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdF
ODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlEQzE3RTgxOTFDOUM5MURCMDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbklubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFy
cmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCmluZGV4IDM3YjIx
ZDhkLi5iNzkxZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtNTU3LDEyICs1NTcsNiBAQCBwdWJs
aWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCgodHlwZSA9PSBBUk02NEFzc2VtYmxl
cjo6SnVtcFRlc3RCaXQpIHx8ICh0eXBlID09IEFSTTY0QXNzZW1ibGVyOjpKdW1wVGVzdEJpdEZp
eGVkU2l6ZSkpOwogICAgICAgICB9Ci0jZWxpZiBDUFUoU0g0KQotICAgICAgICBKdW1wKEFzc2Vt
YmxlckxhYmVsIGptcCwgU0g0QXNzZW1ibGVyOjpKdW1wVHlwZSB0eXBlID0gU0g0QXNzZW1ibGVy
OjpKdW1wRmFyKQotICAgICAgICAgICAgOiBtX2xhYmVsKGptcCkKLSAgICAgICAgICAgICwgbV90
eXBlKHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgfQogI2Vsc2UKICAgICAgICAgSnVtcChBc3Nl
bWJsZXJMYWJlbCBqbXApICAgIAogICAgICAgICAgICAgOiBtX2xhYmVsKGptcCkKQEAgLTU5NCw4
ICs1ODgsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbWFzbS0+bV9hc3NlbWJsZXIubGlu
a0p1bXAobV9sYWJlbCwgbWFzbS0+bV9hc3NlbWJsZXIubGFiZWwoKSwgbV90eXBlLCBtX2NvbmRp
dGlvbiwgbV9iaXROdW1iZXIsIG1fY29tcGFyZVJlZ2lzdGVyKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBtYXNtLT5tX2Fzc2VtYmxlci5saW5rSnVtcChtX2xhYmVsLCBtYXNt
LT5tX2Fzc2VtYmxlci5sYWJlbCgpLCBtX3R5cGUsIG1fY29uZGl0aW9uKTsKLSNlbGlmIENQVShT
SDQpCi0gICAgICAgICAgICBtYXNtLT5tX2Fzc2VtYmxlci5saW5rSnVtcChtX2xhYmVsLCBtYXNt
LT5tX2Fzc2VtYmxlci5sYWJlbCgpLCBtX3R5cGUpOwogI2Vsc2UKICAgICAgICAgICAgIG1hc20t
Pm1fYXNzZW1ibGVyLmxpbmtKdW1wKG1fbGFiZWwsIG1hc20tPm1fYXNzZW1ibGVyLmxhYmVsKCkp
OwogI2VuZGlmCkBAIC02MzUsOSArNjI3LDYgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBt
X2JpdE51bWJlcjsKICAgICAgICAgQVJNNjRBc3NlbWJsZXI6OlJlZ2lzdGVySUQgbV9jb21wYXJl
UmVnaXN0ZXI7CiAjZW5kaWYKLSNpZiBDUFUoU0g0KQotICAgICAgICBTSDRBc3NlbWJsZXI6Okp1
bXBUeXBlIG1fdHlwZTsKLSNlbmRpZgogICAgIH07CiAKICAgICBzdHJ1Y3QgUGF0Y2hhYmxlSnVt
cCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKaW5kZXggNTI2Y2M4Mi4uYjZhYmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApAQCAtNTUsMTIgKzU1LDYgQEAgbmFtZXNwYWNl
IEpTQyB7IHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXJYODYgTWFjcm9Bc3NlbWJsZXJCYXNlOyB9Owog
I2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyWDg2XzY0LmgiCiBuYW1lc3BhY2UgSlNDIHsgdHlwZWRl
ZiBNYWNyb0Fzc2VtYmxlclg4Nl82NCBNYWNyb0Fzc2VtYmxlckJhc2U7IH07CiAKLSNlbGlmIENQ
VShTSDQpCi0jaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJTSDQuaCIKLW5hbWVzcGFjZSBKU0Mgewot
dHlwZWRlZiBNYWNyb0Fzc2VtYmxlclNINCBNYWNyb0Fzc2VtYmxlckJhc2U7Ci19OwotCiAjZWxz
ZQogI2Vycm9yICJUaGUgTWFjcm9Bc3NlbWJsZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBs
YXRmb3JtLiIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclNINC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclNINC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDky
YTQwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJTSDQuaAorKysgL2Rldi9udWxsCkBAIC0xLDI2NzEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBDaXNjbyBTeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKFNI
NCkKLQotI2luY2x1ZGUgIlNINEFzc2VtYmxlci5oIgotI2luY2x1ZGUgIkFic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi1uYW1lc3BhY2UgSlND
IHsKLQotY2xhc3MgTWFjcm9Bc3NlbWJsZXJTSDQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlcjxTSDRBc3NlbWJsZXIsIE1hY3JvQXNzZW1ibGVyU0g0PiB7Ci1wdWJsaWM6Ci0gICAgdHlw
ZWRlZiBTSDRBc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCBGUFJlZ2lzdGVySUQ7Ci0KLSAgICBzdGF0
aWMgY29uc3QgU2NhbGUgU2NhbGVQdHIgPSBUaW1lc0ZvdXI7Ci0gICAgc3RhdGljIGNvbnN0IEZQ
UmVnaXN0ZXJJRCBmc2NyYXRjaCA9IFNINFJlZ2lzdGVyczo6ZHIxMDsKLSAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCBzdGFja1BvaW50ZXJSZWdpc3RlciA9IFNINFJlZ2lzdGVyczo6c3A7Ci0g
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZnJhbWVQb2ludGVyUmVnaXN0ZXIgPSBTSDRSZWdp
c3RlcnM6OmZwOwotICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGxpbmtSZWdpc3RlciA9IFNI
NFJlZ2lzdGVyczo6cHI7Ci0gICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgc2NyYXRjaFJlZzMg
PSBTSDRSZWdpc3RlcnM6OnIxMzsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4aW11bUNvbXBh
Y3RQdHJBbGlnbmVkQWRkcmVzc09mZnNldCA9IDYwOwotCi0gICAgc3RhdGljIGJvb2wgaXNDb21w
YWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQocHRyZGlmZl90IHZhbHVlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuICh2YWx1ZSA+PSAwKSAmJiAodmFsdWUgPD0gTWF4aW11bUNvbXBhY3RQdHJBbGln
bmVkQWRkcmVzc09mZnNldCkgJiYgKCEodmFsdWUgJiAzKSk7Ci0gICAgfQotCi0gICAgZW51bSBS
ZWxhdGlvbmFsQ29uZGl0aW9uIHsKLSAgICAgICAgRXF1YWwgPSBTSDRBc3NlbWJsZXI6OkVRLAot
ICAgICAgICBOb3RFcXVhbCA9IFNINEFzc2VtYmxlcjo6TkUsCi0gICAgICAgIEFib3ZlID0gU0g0
QXNzZW1ibGVyOjpISSwKLSAgICAgICAgQWJvdmVPckVxdWFsID0gU0g0QXNzZW1ibGVyOjpIUywK
LSAgICAgICAgQmVsb3cgPSBTSDRBc3NlbWJsZXI6OkxJLAotICAgICAgICBCZWxvd09yRXF1YWwg
PSBTSDRBc3NlbWJsZXI6OkxTLAotICAgICAgICBHcmVhdGVyVGhhbiA9IFNINEFzc2VtYmxlcjo6
R1QsCi0gICAgICAgIEdyZWF0ZXJUaGFuT3JFcXVhbCA9IFNINEFzc2VtYmxlcjo6R0UsCi0gICAg
ICAgIExlc3NUaGFuID0gU0g0QXNzZW1ibGVyOjpMVCwKLSAgICAgICAgTGVzc1RoYW5PckVxdWFs
ID0gU0g0QXNzZW1ibGVyOjpMRQotICAgIH07Ci0KLSAgICBlbnVtIFJlc3VsdENvbmRpdGlvbiB7
Ci0gICAgICAgIE92ZXJmbG93ID0gU0g0QXNzZW1ibGVyOjpPRiwKLSAgICAgICAgU2lnbmVkID0g
U0g0QXNzZW1ibGVyOjpTSSwKLSAgICAgICAgUG9zaXRpdmVPclplcm8gPSBTSDRBc3NlbWJsZXI6
Ok5TLAotICAgICAgICBaZXJvID0gU0g0QXNzZW1ibGVyOjpFUSwKLSAgICAgICAgTm9uWmVybyA9
IFNINEFzc2VtYmxlcjo6TkUKLSAgICB9OwotCi0gICAgZW51bSBEb3VibGVDb25kaXRpb24gewot
ICAgICAgICAvLyBUaGVzZSBjb25kaXRpb25zIHdpbGwgb25seSBldmFsdWF0ZSB0byB0cnVlIGlm
IHRoZSBjb21wYXJpc29uIGlzIG9yZGVyZWQgLSBpLmUuIG5laXRoZXIgb3BlcmFuZCBpcyBOYU4u
Ci0gICAgICAgIERvdWJsZUVxdWFsID0gU0g0QXNzZW1ibGVyOjpFUSwKLSAgICAgICAgRG91Ymxl
Tm90RXF1YWwgPSBTSDRBc3NlbWJsZXI6Ok5FLAotICAgICAgICBEb3VibGVHcmVhdGVyVGhhbiA9
IFNINEFzc2VtYmxlcjo6R1QsCi0gICAgICAgIERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbCA9IFNI
NEFzc2VtYmxlcjo6R0UsCi0gICAgICAgIERvdWJsZUxlc3NUaGFuID0gU0g0QXNzZW1ibGVyOjpM
VCwKLSAgICAgICAgRG91YmxlTGVzc1RoYW5PckVxdWFsID0gU0g0QXNzZW1ibGVyOjpMRSwKLSAg
ICAgICAgLy8gSWYgZWl0aGVyIG9wZXJhbmQgaXMgTmFOLCB0aGVzZSBjb25kaXRpb25zIGFsd2F5
cyBldmFsdWF0ZSB0byB0cnVlLgotICAgICAgICBEb3VibGVFcXVhbE9yVW5vcmRlcmVkID0gU0g0
QXNzZW1ibGVyOjpFUVUsCi0gICAgICAgIERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQgPSBTSDRB
c3NlbWJsZXI6Ok5FVSwKLSAgICAgICAgRG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZCA9IFNI
NEFzc2VtYmxlcjo6R1RVLAotICAgICAgICBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVub3Jk
ZXJlZCA9IFNINEFzc2VtYmxlcjo6R0VVLAotICAgICAgICBEb3VibGVMZXNzVGhhbk9yVW5vcmRl
cmVkID0gU0g0QXNzZW1ibGVyOjpMVFUsCi0gICAgICAgIERvdWJsZUxlc3NUaGFuT3JFcXVhbE9y
VW5vcmRlcmVkID0gU0g0QXNzZW1ibGVyOjpMRVUsCi0gICAgfTsKLQotICAgIFJlZ2lzdGVySUQg
Y2xhaW1TY3JhdGNoKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Fzc2VtYmxlci5jbGFpbVNj
cmF0Y2goKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2VTY3JhdGNoKFJlZ2lzdGVySUQgcmVn
KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIucmVsZWFzZVNjcmF0Y2gocmVnKTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgUmVsYXRpb25hbENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChjb25kKSB7Ci0gICAgICAgIGNhc2Ug
RXF1YWw6Ci0gICAgICAgICAgICByZXR1cm4gTm90RXF1YWw7Ci0gICAgICAgIGNhc2UgTm90RXF1
YWw6Ci0gICAgICAgICAgICByZXR1cm4gRXF1YWw7Ci0gICAgICAgIGNhc2UgQWJvdmU6Ci0gICAg
ICAgICAgICByZXR1cm4gQmVsb3dPckVxdWFsOwotICAgICAgICBjYXNlIEFib3ZlT3JFcXVhbDoK
LSAgICAgICAgICAgIHJldHVybiBCZWxvdzsKLSAgICAgICAgY2FzZSBCZWxvdzoKLSAgICAgICAg
ICAgIHJldHVybiBBYm92ZU9yRXF1YWw7Ci0gICAgICAgIGNhc2UgQmVsb3dPckVxdWFsOgotICAg
ICAgICAgICAgcmV0dXJuIEFib3ZlOwotICAgICAgICBjYXNlIEdyZWF0ZXJUaGFuOgotICAgICAg
ICAgICAgcmV0dXJuIExlc3NUaGFuT3JFcXVhbDsKLSAgICAgICAgY2FzZSBHcmVhdGVyVGhhbk9y
RXF1YWw6Ci0gICAgICAgICAgICByZXR1cm4gTGVzc1RoYW47Ci0gICAgICAgIGNhc2UgTGVzc1Ro
YW46Ci0gICAgICAgICAgICByZXR1cm4gR3JlYXRlclRoYW5PckVxdWFsOwotICAgICAgICBjYXNl
IExlc3NUaGFuT3JFcXVhbDoKLSAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBJbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9ucwot
Ci0gICAgdm9pZCBhZGQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIuYWRkbFJlZ1JlZyhzcmMsIGRlc3QpOwotICAgIH0KLQotICAg
IHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmIChzcmMxID09IGRlc3QpCi0gICAgICAgICAgICBhZGQz
MihzcmMyLCBkZXN0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtb3ZlKHNyYzIsIGRl
c3QpOwotICAgICAgICAgICAgYWRkMzIoc3JjMSwgZGVzdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIGlmICghaW1tLm1fdmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgaWYgKG1fYXNzZW1ibGVyLmlzSW1tZWRpYXRlKGltbS5tX3ZhbHVlKSkgewotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKGltbS5tX3ZhbHVlLCBkZXN0KTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3Jh
dGNoKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChpbW0ubV92YWx1ZSwgc2Ny
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkbFJlZ1JlZyhzY3IsIGRlc3QpOwotICAgICAgICBy
ZWxlYXNlU2NyYXRjaChzY3IpOwotICAgIH0KLQotICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1v
dmUoc3JjLCBkZXN0KTsKLSAgICAgICAgYWRkMzIoaW1tLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2
b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAg
ICAgIGlmICghaW1tLm1fdmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUmVn
aXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIHNj
cik7Ci0gICAgICAgIGFkZDMyKGltbSwgc2NyKTsKLSAgICAgICAgc3RvcmUzMihzY3IsIGFkZHJl
c3MpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgIH0KLQotICAgIHZvaWQgYWRk
MzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVy
SUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIGxvYWQzMihzcmMsIHNjcik7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmFkZGxSZWdSZWcoc2NyLCBkZXN0KTsKLSAgICAgICAgcmVsZWFzZVNj
cmF0Y2goc2NyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZDMyKEFic29sdXRlQWRkcmVzcyBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1T
Y3JhdGNoKCk7Ci0gICAgICAgIGxvYWQzMihzcmMubV9wdHIsIHNjcik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmFkZGxSZWdSZWcoc2NyLCBkZXN0KTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2Ny
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hbmRsUmVnUmVnKHNyYywgZGVzdCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwg
UmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKHNyYzEgPT0gZGVzdCkKLSAgICAg
ICAgICAgIGFuZDMyKHNyYzIsIGRlc3QpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1v
dmUoc3JjMiwgZGVzdCk7Ci0gICAgICAgICAgICBhbmQzMihzcmMxLCBkZXN0KTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHZvaWQgYW5kMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAg
IGxvYWQzMihzcmMsIHNjcik7Ci0gICAgICAgIGFuZDMyKHNjciwgZGVzdCk7Ci0gICAgICAgIHJl
bGVhc2VTY3JhdGNoKHNjcik7Ci0gICAgfQotCi0gICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIg
aW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKSB7
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZJbW04KDAsIGRlc3QpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChpbW0ubV92YWx1ZSA8PSAyNTUpICYm
IChpbW0ubV92YWx1ZSA+PSAwKSAmJiAoZGVzdCA9PSBTSDRSZWdpc3RlcnM6OnIwKSkgewotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYW5kbEltbThyKGltbS5tX3ZhbHVlLCBkZXN0KTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xh
aW1TY3JhdGNoKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChpbW0ubV92YWx1
ZSwgc2NyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYW5kbFJlZ1JlZyhzY3IsIGRlc3QpOwotICAg
ICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgIH0KLQotICAgIHZvaWQgYW5kMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIGlmIChzcmMgIT0gZGVzdCkgewotICAgICAgICAgICAgbW92ZShpbW0sIGRlc3QpOwotICAg
ICAgICAgICAgYW5kMzIoc3JjLCBkZXN0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIGFuZDMyKGltbSwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBsc2hpZnQz
MihSZWdpc3RlcklEIHNoaWZ0YW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAg
ICBSZWdpc3RlcklEIHNoaWZ0VG1wID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmxvYWRDb25zdGFudCgweDFmLCBzaGlmdFRtcCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFu
ZGxSZWdSZWcoc2hpZnRhbW91bnQsIHNoaWZ0VG1wKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc2hs
ZFJlZ1JlZyhkZXN0LCBzaGlmdFRtcCk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNoaWZ0VG1w
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKHNyYywg
ZGVzdCk7Ci0gICAgICAgIGxzaGlmdDMyKHNoaWZ0QW1vdW50LCBkZXN0KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIGludCBpbW1NYXNrZWQgPSBpbW0ubV92YWx1ZSAmIDB4MWY7Ci0gICAgICAgIGlm
ICghaW1tTWFza2VkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICgoaW1tTWFz
a2VkID09IDEpIHx8IChpbW1NYXNrZWQgPT0gMikgfHwgKGltbU1hc2tlZCA9PSA4KSB8fCAoaW1t
TWFza2VkID09IDE2KSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2hsbEltbThyKGltbU1h
c2tlZCwgZGVzdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBS
ZWdpc3RlcklEIHNoaWZ0VG1wID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmxvYWRDb25zdGFudChpbW1NYXNrZWQsIHNoaWZ0VG1wKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
c2hsZFJlZ1JlZyhkZXN0LCBzaGlmdFRtcCk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNoaWZ0
VG1wKTsKLSAgICB9Ci0KLSAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVk
SW1tMzIgc2hpZnRhbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1vdmUo
c3JjLCBkZXN0KTsKLSAgICAgICAgbHNoaWZ0MzIoc2hpZnRhbW91bnQsIGRlc3QpOwotICAgIH0K
LQotICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIG11bDMyKHNyYywgZGVzdCwgZGVzdCk7ICAgIAotICAgIH0KLQotICAgIHZvaWQg
bXVsMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkK
LSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmltdWxsUmVnUmVnKHNyYzEsIHNyYzIpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5zdHNtYWNsKGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgbXVsMzIo
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7
Ci0gICAgICAgIGlmIChzcmMgPT0gZGVzdCkgewotICAgICAgICAgICAgUmVnaXN0ZXJJRCBpbW12
YWwgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgICAgIG1vdmUoaW1tLCBpbW12YWwpOwotICAg
ICAgICAgICAgbXVsMzIoaW1tdmFsLCBkZXN0KTsKLSAgICAgICAgICAgIHJlbGVhc2VTY3JhdGNo
KGltbXZhbCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtb3ZlKGltbSwgZGVzdCk7
Ci0gICAgICAgICAgICBtdWwzMihzcmMsIGRlc3QpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
dm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAg
ICBtX2Fzc2VtYmxlci5vcmxSZWdSZWcoc3JjLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIG9y
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYg
KChpbW0ubV92YWx1ZSA8PSAyNTUpICYmIChpbW0ubV92YWx1ZSA+PSAwKSAmJiAoZGVzdCA9PSBT
SDRSZWdpc3RlcnM6OnIwKSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JsSW1tOHIoaW1t
Lm1fdmFsdWUsIGRlc3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bG9hZENvbnN0YW50KGltbS5tX3ZhbHVlLCBzY3IpOwotICAgICAgICBtX2Fzc2VtYmxlci5vcmxS
ZWdSZWcoc2NyLCBkZXN0KTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICB9Ci0K
LSAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklE
IGRlc3QpCi0gICAgewotICAgICAgICBpZiAob3AxID09IG9wMikKLSAgICAgICAgICAgIG1vdmUo
b3AxLCBkZXN0KTsKLSAgICAgICAgZWxzZSBpZiAob3AxID09IGRlc3QpCi0gICAgICAgICAgICBv
cjMyKG9wMiwgZGVzdCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbW92ZShvcDIsIGRl
c3QpOwotICAgICAgICAgICAgb3IzMihvcDEsIGRlc3QpOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCi0gICAgewotICAgICAgICBpZiAoc3JjICE9IGRlc3QpIHsKLSAgICAgICAgICAgIG1v
dmUoaW1tLCBkZXN0KTsKLSAgICAgICAgICAgIG9yMzIoc3JjLCBkZXN0KTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIG9yMzIoaW1tLCBkZXN0KTsKLSAgICB9Ci0K
LSAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQot
ICAgIHsKLSAgICAgICAgUmVnaXN0ZXJJRCBkZXN0cHRyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgZGVzdHB0cik7Ci0gICAgICAg
IFJlZ2lzdGVySUQgZGVzdHZhbCA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZsTWVtUmVnKGRlc3RwdHIsIGRlc3R2YWwpOwotICAgICAgICBtX2Fzc2VtYmxlci5vcmxS
ZWdSZWcoc3JjLCBkZXN0dmFsKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92bFJlZ01lbShkZXN0
dmFsLCBkZXN0cHRyKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goZGVzdHZhbCk7Ci0gICAgICAg
IHJlbGVhc2VTY3JhdGNoKGRlc3RwdHIpOwotICAgIH0KLQotICAgIHZvaWQgeG9yMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIGlmIChzcmMgIT0gZGVzdCkgewotICAgICAgICAgICAgbW92ZShpbW0sIGRlc3QpOwotICAg
ICAgICAgICAgeG9yMzIoc3JjLCBkZXN0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHhvcjMyKGltbSwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCByc2hpZnQz
MihSZWdpc3RlcklEIHNoaWZ0YW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAg
ICBSZWdpc3RlcklEIHNoaWZ0VG1wID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmxvYWRDb25zdGFudCgweDFmLCBzaGlmdFRtcCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFu
ZGxSZWdSZWcoc2hpZnRhbW91bnQsIHNoaWZ0VG1wKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubmVn
KHNoaWZ0VG1wLCBzaGlmdFRtcCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnNoYWRSZWdSZWcoZGVz
dCwgc2hpZnRUbXApOwotICAgICAgICByZWxlYXNlU2NyYXRjaChzaGlmdFRtcCk7Ci0gICAgfQot
Ci0gICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3Vu
dCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAg
ICAgICByc2hpZnQzMihzaGlmdEFtb3VudCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCByc2hp
ZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBp
bnQgaW1tTWFza2VkID0gaW1tLm1fdmFsdWUgJiAweDFmOwotICAgICAgICBpZiAoIWltbU1hc2tl
ZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoaW1tTWFza2VkID09IDEpIHsK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNoYXJJbW04cihpbW1NYXNrZWQsIGRlc3QpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVnaXN0ZXJJRCBzaGlmdFRt
cCA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoLWlt
bU1hc2tlZCwgc2hpZnRUbXApOwotICAgICAgICBtX2Fzc2VtYmxlci5zaGFkUmVnUmVnKGRlc3Qs
IHNoaWZ0VG1wKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2hpZnRUbXApOwotICAgIH0KLQot
ICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgcnNo
aWZ0MzIoaW1tLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zdWJsUmVnUmVn
KHNyYywgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIGxlZnQsIFJl
Z2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmIChkZXN0
ID09IHJpZ2h0KSB7Ci0gICAgICAgICAgICBuZWczMihkZXN0KTsKLSAgICAgICAgICAgIGFkZDMy
KGxlZnQsIGRlc3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1v
dmUobGVmdCwgZGVzdCk7Ci0gICAgICAgIHN1YjMyKHJpZ2h0LCBkZXN0KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQot
ICAgIHsKLSAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBSZWdpc3RlcklEIHJlc3VsdCA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBSZWdp
c3RlcklEIHNjcmF0Y2hSZWcgPSBjbGFpbVNjcmF0Y2goKTsKLQotICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWcpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZsTWVtUmVnKHNjcmF0Y2hSZWcsIHJlc3VsdCk7Ci0KLSAgICAgICAgaWYgKG1fYXNzZW1i
bGVyLmlzSW1tZWRpYXRlKC1pbW0ubV92YWx1ZSkpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5h
ZGRsSW1tOHIoLWltbS5tX3ZhbHVlLCByZXN1bHQpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChpbW0ubV92YWx1ZSwgc2NyYXRjaFJlZzMpOwot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VibFJlZ1JlZyhzY3JhdGNoUmVnMywgcmVzdWx0KTsK
LSAgICAgICAgfQotCi0gICAgICAgIHN0b3JlMzIocmVzdWx0LCBzY3JhdGNoUmVnKTsKLSAgICAg
ICAgcmVsZWFzZVNjcmF0Y2gocmVzdWx0KTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyYXRj
aFJlZyk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCi0gICAgewotICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoLWltbS5tX3ZhbHVl
KSwgYWRkcmVzcyk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBB
YnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGlmICghaW1tLm1fdmFsdWUp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUmVnaXN0ZXJJRCByZXN1bHQgPSBjbGFp
bVNjcmF0Y2goKTsKLSAgICAgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnID0gY2xhaW1TY3JhdGNo
KCk7Ci0KLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNo
UmVnKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhzY3JhdGNoUmVnLCByZXN1bHQp
OwotCi0gICAgICAgIGlmIChtX2Fzc2VtYmxlci5pc0ltbWVkaWF0ZShpbW0ubV92YWx1ZSkpCi0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRsSW1tOHIoaW1tLm1fdmFsdWUsIHJlc3VsdCk7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KGltbS5t
X3ZhbHVlLCBzY3JhdGNoUmVnMyk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRsUmVnUmVn
KHNjcmF0Y2hSZWczLCByZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RvcmUzMihyZXN1
bHQsIHNjcmF0Y2hSZWcpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChyZXN1bHQpOwotICAgICAg
ICByZWxlYXNlU2NyYXRjaChzY3JhdGNoUmVnKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZDY0KFRy
dXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAg
UmVnaXN0ZXJJRCBzY3IxID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIFJlZ2lzdGVySUQgc2Ny
MiA9IGNsYWltU2NyYXRjaCgpOwotCi0gICAgICAgIC8vIEFkZCAzMi1iaXQgTFNCIGZpcnN0Lgot
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWczKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhzY3JhdGNoUmVnMywgc2NyMSk7IC8vIHNj
cjEgPSAzMi1iaXQgTFNCIG9mIGludDY0IEAgYWRkcmVzcwotICAgICAgICBtX2Fzc2VtYmxlci5s
b2FkQ29uc3RhbnQoaW1tLm1fdmFsdWUsIHNjcjIpOwotICAgICAgICBtX2Fzc2VtYmxlci5jbHJ0
KCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZGNsUmVnUmVnKHNjcjEsIHNjcjIpOwotICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZsUmVnTWVtKHNjcjIsIHNjcmF0Y2hSZWczKTsgLy8gVXBkYXRlIGFk
ZHJlc3Mgd2l0aCAzMi1iaXQgTFNCIHJlc3VsdC4KLQotICAgICAgICAvLyBUaGVuIGFkZCAzMi1i
aXQgTVNCLgotICAgICAgICBtX2Fzc2VtYmxlci5hZGRsSW1tOHIoNCwgc2NyYXRjaFJlZzMpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKHNjcmF0Y2hSZWczLCBzY3IxKTsgLy8gc2Ny
MSA9IDMyLWJpdCBNU0Igb2YgaW50NjQgQCBhZGRyZXNzCi0gICAgICAgIG1fYXNzZW1ibGVyLm1v
dnQoc2NyMik7Ci0gICAgICAgIGlmIChpbW0ubV92YWx1ZSA8IDApCi0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5hZGRsSW1tOHIoLTEsIHNjcjIpOyAvLyBTaWduIGV4dGVuZCBpbW0gdmFsdWUgaWYg
bmVlZGVkLgotICAgICAgICBtX2Fzc2VtYmxlci5hZGR2bFJlZ1JlZyhzY3IyLCBzY3IxKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIubW92bFJlZ01lbShzY3IxLCBzY3JhdGNoUmVnMyk7IC8vIFVwZGF0
ZSAoYWRkcmVzcyArIDQpIHdpdGggMzItYml0IE1TQiByZXN1bHQuCi0KLSAgICAgICAgcmVsZWFz
ZVNjcmF0Y2goc2NyMik7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcjEpOwotICAgIH0KLQot
ICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBpZiAobV9hc3NlbWJsZXIuaXNJbW1lZGlhdGUoLWltbS5tX3ZhbHVlKSkgewotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKC1pbW0ubV92YWx1ZSwgZGVzdCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2Ny
YXRjaCgpOwotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoaW1tLm1fdmFsdWUsIHNj
cik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN1YmxSZWdSZWcoc2NyLCBkZXN0KTsKLSAgICAgICAg
cmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1YjMyKEFkZHJlc3Mgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWlt
U2NyYXRjaCgpOwotICAgICAgICBsb2FkMzIoc3JjLCBzY3IpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5zdWJsUmVnUmVnKHNjciwgZGVzdCk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7Ci0g
ICAgfQotCi0gICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQot
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIueG9ybFJlZ1JlZyhzcmMsIGRlc3QpOwotICAgIH0K
LQotICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmIChzcmMxID09IGRlc3QpCi0gICAgICAgICAg
ICB4b3IzMihzcmMyLCBkZXN0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtb3ZlKHNy
YzIsIGRlc3QpOwotICAgICAgICAgICAgeG9yMzIoc3JjMSwgZGVzdCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVz
dCkKLSAgICB7Ci0gICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgewotICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm90bFJlZyhzcmNEZXN0LCBzcmNEZXN0KTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgoc3JjRGVzdCAhPSBTSDRSZWdpc3RlcnM6OnIw
KSB8fCAoaW1tLm1fdmFsdWUgPiAyNTUpIHx8IChpbW0ubV92YWx1ZSA8IDApKSB7Ci0gICAgICAg
ICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubG9hZENvbnN0YW50KGltbS5tX3ZhbHVlLCBzY3IpOwotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIueG9ybFJlZ1JlZyhzY3IsIHNyY0Rlc3QpOwotICAgICAgICAgICAgcmVsZWFzZVNjcmF0
Y2goc2NyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIG1fYXNz
ZW1ibGVyLnhvcmxJbW04cihpbW0ubV92YWx1ZSwgc3JjRGVzdCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBjb21wYXJlMzIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QsIFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCkKLSAgICB7Ci0gICAgICAgIGlmICgoKGNvbmQgPT0gRXF1YWwpIHx8IChjb25kID09IE5v
dEVxdWFsKSkgJiYgKGRzdCA9PSBTSDRSZWdpc3RlcnM6OnIwKSAmJiBtX2Fzc2VtYmxlci5pc0lt
bWVkaWF0ZShpbW0pKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBFcUltbVIwKGltbSwg
ZHN0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgoKGNv
bmQgPT0gRXF1YWwpIHx8IChjb25kID09IE5vdEVxdWFsKSkgJiYgIWltbSkgewotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIudGVzdGxSZWdSZWcoZHN0LCBkc3QpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KGltbSwgc2NyKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuY21wbFJlZ1JlZyhzY3IsIGRzdCwgU0g0Q29uZGl0aW9uKGNvbmQpKTsKLSAgICAg
ICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbXBhcmUzMihpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgbGVmdCwgUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kKQotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2go
KTsKLSAgICAgICAgaWYgKCFvZmZzZXQpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxN
ZW1SZWcoYmFzZSwgc2NyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2Ny
LCBsZWZ0LCBTSDRDb25kaXRpb24oY29uZCkpOwotICAgICAgICAgICAgcmVsZWFzZVNjcmF0Y2go
c2NyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgob2Zm
c2V0IDwgMCkgfHwgKG9mZnNldCA+PSA2NCkpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxv
YWRDb25zdGFudChvZmZzZXQsIHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRsUmVn
UmVnKGJhc2UsIHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKHNjciwg
c2NyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyLCBsZWZ0LCBTSDRD
b25kaXRpb24oY29uZCkpOwotICAgICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1S
ZWcob2Zmc2V0ID4+IDIsIGJhc2UsIHNjcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdS
ZWcoc2NyLCBsZWZ0LCBTSDRDb25kaXRpb24oY29uZCkpOwotICAgICAgICByZWxlYXNlU2NyYXRj
aChzY3IpOwotICAgIH0KLQotICAgIHZvaWQgdGVzdEltbShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2Ny
YXRjaCgpOwotICAgICAgICBsb2FkMzIoYmFzZSwgb2Zmc2V0LCBzY3IpOwotCi0gICAgICAgIFJl
Z2lzdGVySUQgc2NyMSA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0z
MihpbW0pLCBzY3IxKTsKLQotICAgICAgICBtX2Fzc2VtYmxlci50ZXN0bFJlZ1JlZyhzY3IsIHNj
cjEpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgICAgICByZWxlYXNlU2NyYXRj
aChzY3IxKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRlc3RsSW1tKGludCBpbW0sIFJlZ2lzdGVySUQg
ZHN0KQotICAgIHsKLSAgICAgICAgaWYgKChkc3QgPT0gU0g0UmVnaXN0ZXJzOjpyMCkgJiYgKGlt
bSA8PSAyNTUpICYmIChpbW0gPj0gMCkpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3Rs
SW1tOHIoaW1tLCBkc3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bG9hZENvbnN0YW50KGltbSwgc2NyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudGVzdGxSZWdSZWco
c2NyLCBkc3QpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgIH0KLQotICAgIHZv
aWQgY29tcGFyZTMyKFJlZ2lzdGVySUQgcmlnaHQsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQotICAgIHsKLSAgICAgICAgaWYgKCFvZmZzZXQp
IHsKLSAgICAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKGJhc2UsIHNjcik7Ci0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5jbXBsUmVnUmVnKHJpZ2h0LCBzY3IsIFNINENvbmRpdGlvbihjb25kKSk7Ci0gICAg
ICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKChvZmZzZXQgPCAwKSB8fCAob2Zmc2V0ID49IDY0KSkgewotICAg
ICAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmxvYWRDb25zdGFudChvZmZzZXQsIHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRsUmVnUmVnKGJhc2UsIHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Zs
TWVtUmVnKHNjciwgc2NyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcocmln
aHQsIHNjciwgU0g0Q29uZGl0aW9uKGNvbmQpKTsKLSAgICAgICAgICAgIHJlbGVhc2VTY3JhdGNo
KHNjcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBSZWdpc3Rl
cklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVn
KG9mZnNldCA+PiAyLCBiYXNlLCBzY3IpOwotICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVn
KHJpZ2h0LCBzY3IsIFNINENvbmRpdGlvbihjb25kKSk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNo
KHNjcik7Ci0gICAgfQotCi0gICAgdm9pZCBjb21wYXJlMzIoaW50IGltbSwgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCi0gICAgewotICAgICAg
ICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBsb2FkMzIoYmFzZSwg
b2Zmc2V0LCBzY3IpOwotCi0gICAgICAgIFJlZ2lzdGVySUQgc2NyMSA9IGNsYWltU2NyYXRjaCgp
OwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihpbW0pLCBzY3IxKTsKLQotICAgICAgICBtX2Fz
c2VtYmxlci5jbXBsUmVnUmVnKHNjcjEsIHNjciwgU0g0Q29uZGl0aW9uKGNvbmQpKTsKLQotICAg
ICAgICByZWxlYXNlU2NyYXRjaChzY3IxKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsK
LSAgICB9Ci0KLSAgICAvLyBNZW1vcnkgYWNjZXNzIG9wZXJhdGlvbgotCi0gICAgQUxXQVlTX0lO
TElORSB2b2lkIGxvYWRFZmZlY3RpdmVBZGRyZXNzKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3Rl
cklEIGRlc3QsIGludCBleHRyYW9mZnNldCA9IDApCi0gICAgewotICAgICAgICBpZiAoZGVzdCA9
PSBhZGRyZXNzLmJhc2UpIHsKLSAgICAgICAgICAgIFJlZ2lzdGVySUQgc2NhbGVkSW5kZXggPSBj
bGFpbVNjcmF0Y2goKTsKLSAgICAgICAgICAgIG1vdmUoYWRkcmVzcy5pbmRleCwgc2NhbGVkSW5k
ZXgpOwotICAgICAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBz
Y2FsZWRJbmRleCk7Ci0gICAgICAgICAgICBhZGQzMihzY2FsZWRJbmRleCwgZGVzdCk7Ci0gICAg
ICAgICAgICByZWxlYXNlU2NyYXRjaChzY2FsZWRJbmRleCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtb3ZlKGFkZHJlc3MuaW5kZXgsIGRlc3QpOwotICAgICAgICAgICAgbHNoaWZ0
MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBkZXN0KTsKLSAgICAgICAgICAgIGFkZDMy
KGFkZHJlc3MuYmFzZSwgZGVzdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBhZGQzMihUcnVzdGVk
SW1tMzIoYWRkcmVzcy5vZmZzZXQgKyBleHRyYW9mZnNldCksIGRlc3QpOwotICAgIH0KLQotICAg
IHZvaWQgbG9hZDMyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBsb2FkMzIoYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCwgZGVzdCk7
Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDgoYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9m
ZnNldCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOChCYXNlSW5kZXggYWRkcmVzcywg
UmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNj
cmF0Y2goKTsKLSAgICAgICAgbW92ZShhZGRyZXNzLmluZGV4LCBzY3IpOwotICAgICAgICBsc2hp
ZnQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5zY2FsZSksIHNjcik7Ci0gICAgICAgIGFkZDMyKGFk
ZHJlc3MuYmFzZSwgc2NyKTsKLSAgICAgICAgbG9hZDgoc2NyLCBhZGRyZXNzLm9mZnNldCwgZGVz
dCk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7Ci0gICAgfQotCi0gICAgdm9pZCBsb2Fk
OChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBkZXN0KTsKLSAgICAgICAgbV9h
c3NlbWJsZXIubW92Yk1lbVJlZyhkZXN0LCBkZXN0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZXh0
dWIoZGVzdCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkOChjb25zdCB2b2lkKiBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkOChBYnNvbHV0ZUFkZHJl
c3MoYWRkcmVzcyksIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZDhQb3N0SW5jKFJlZ2lz
dGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bW92Yk1lbVJlZ0luKGJhc2UsIGRlc3QpOwotICAgICAgICBtX2Fzc2VtYmxlci5leHR1YihkZXN0
LCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihCYXNlSW5k
ZXggYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJJRCBz
Y3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbW92ZShhZGRyZXNzLmluZGV4LCBzY3IpOwot
ICAgICAgICBsc2hpZnQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5zY2FsZSksIHNjcik7Ci0gICAg
ICAgIGFkZDMyKGFkZHJlc3MuYmFzZSwgc2NyKTsKLSAgICAgICAgbG9hZDhTaWduZWRFeHRlbmRU
bzMyKHNjciwgYWRkcmVzcy5vZmZzZXQsIGRlc3QpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChz
Y3IpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZDMyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgp
OwotICAgICAgICBtb3ZlKGFkZHJlc3MuaW5kZXgsIHNjcik7Ci0gICAgICAgIGxzaGlmdDMyKFRy
dXN0ZWRJbW0zMihhZGRyZXNzLnNjYWxlKSwgc2NyKTsKLSAgICAgICAgYWRkMzIoYWRkcmVzcy5i
YXNlLCBzY3IpOwotICAgICAgICBsb2FkMzIoc2NyLCBhZGRyZXNzLm9mZnNldCwgZGVzdCk7Ci0g
ICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkMzIoY29u
c3Qgdm9pZCogYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBkZXN0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92bE1l
bVJlZyhkZXN0LCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWQzMihSZWdpc3RlcklEIGJh
c2UsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmICghb2Zm
c2V0KSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKGJhc2UsIGRlc3QpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChvZmZzZXQgPj0g
MCkgJiYgKG9mZnNldCA8IDY0KSkgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJl
ZyhvZmZzZXQgPj4gMiwgYmFzZSwgZGVzdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBSZWdpc3RlcklEIHNjciA9IChkZXN0ID09IGJhc2UpID8gY2xhaW1TY3Jh
dGNoKCkgOiBkZXN0OwotCi0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChvZmZzZXQs
IHNjcik7Ci0gICAgICAgIGlmIChiYXNlID09IFNINFJlZ2lzdGVyczo6cjApCi0gICAgICAgICAg
ICBtX2Fzc2VtYmxlci5tb3ZsUjBtcihzY3IsIGRlc3QpOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZGxSZWdSZWcoYmFzZSwgc2NyKTsKLSAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm1vdmxNZW1SZWcoc2NyLCBkZXN0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChkZXN0ID09IGJhc2UpCi0gICAgICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgIH0K
LQotICAgIHZvaWQgbG9hZDhTaWduZWRFeHRlbmRUbzMyKFJlZ2lzdGVySUQgYmFzZSwgaW50IG9m
ZnNldCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKCFvZmZzZXQpIHsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJNZW1SZWcoYmFzZSwgZGVzdCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoKG9mZnNldCA+IDApICYmIChvZmZz
ZXQgPD0gMTUpICYmIChkZXN0ID09IFNINFJlZ2lzdGVyczo6cjApKSB7Ci0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZiTWVtUmVnKG9mZnNldCwgYmFzZSwgZGVzdCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBSZWdpc3RlcklEIHNjciA9IChkZXN0ID09IGJh
c2UpID8gY2xhaW1TY3JhdGNoKCkgOiBkZXN0OwotCi0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRD
b25zdGFudChvZmZzZXQsIHNjcik7Ci0gICAgICAgIGlmIChiYXNlID09IFNINFJlZ2lzdGVyczo6
cjApCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiUjBtcihzY3IsIGRlc3QpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxSZWdSZWcoYmFzZSwgc2NyKTsK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJNZW1SZWcoc2NyLCBkZXN0KTsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChkZXN0ID09IGJhc2UpCi0gICAgICAgICAgICByZWxlYXNlU2NyYXRj
aChzY3IpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZDgoUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zm
c2V0LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkOFNpZ25lZEV4dGVuZFRv
MzIoYmFzZSwgb2Zmc2V0LCBkZXN0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZXh0dWIoZGVzdCwg
ZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZHN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhzcmMsIGRzdCk7
Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkMTYoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQpIHsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdndNZW1SZWcoYWRkcmVzcy5iYXNlLCBkZXN0KTsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmV4dHV3KGRlc3QsIGRlc3QpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChhZGRyZXNzLm9mZnNldCA+IDApICYmIChhZGRy
ZXNzLm9mZnNldCA8PSAzMCkgJiYgKGRlc3QgPT0gU0g0UmVnaXN0ZXJzOjpyMCkpIHsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdndNZW1SZWcoYWRkcmVzcy5vZmZzZXQgPj4gMSwgYWRkcmVz
cy5iYXNlLCBkZXN0KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmV4dHV3KGRlc3QsIGRlc3Qp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVnaXN0ZXJJRCBz
Y3IgPSAoZGVzdCA9PSBhZGRyZXNzLmJhc2UpID8gY2xhaW1TY3JhdGNoKCkgOiBkZXN0OwotCi0g
ICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChhZGRyZXNzLm9mZnNldCwgc2NyKTsKLSAg
ICAgICAgaWYgKGFkZHJlc3MuYmFzZSA9PSBTSDRSZWdpc3RlcnM6OnIwKQotICAgICAgICAgICAg
bV9hc3NlbWJsZXIubW92d1IwbXIoc2NyLCBkZXN0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5hZGRsUmVnUmVnKGFkZHJlc3MuYmFzZSwgc2NyKTsKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdndNZW1SZWcoc2NyLCBkZXN0KTsKLSAgICAgICAgfQotICAgICAg
ICBtX2Fzc2VtYmxlci5leHR1dyhkZXN0LCBkZXN0KTsKLQotICAgICAgICBpZiAoZGVzdCA9PSBh
ZGRyZXNzLmJhc2UpCi0gICAgICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgIH0KLQot
ICAgIHZvaWQgbG9hZDE2VW5hbGlnbmVkKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotCi0g
ICAgICAgIGxvYWRFZmZlY3RpdmVBZGRyZXNzKGFkZHJlc3MsIHNjcik7Ci0KLSAgICAgICAgUmVn
aXN0ZXJJRCBzY3IxID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIGxvYWQ4UG9zdEluYyhzY3Is
IHNjcjEpOwotICAgICAgICBsb2FkOChzY3IsIGRlc3QpOwotICAgICAgICBtX2Fzc2VtYmxlci5z
aGxsSW1tOHIoOCwgZGVzdCk7Ci0gICAgICAgIG9yMzIoc2NyMSwgZGVzdCk7Ci0KLSAgICAgICAg
cmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyMSk7Ci0gICAg
fQotCi0gICAgdm9pZCBsb2FkMTYoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdndNZW1SZWcoc3JjLCBkZXN0KTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuZXh0dXcoZGVzdCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkMTZT
aWduZWRFeHRlbmRUbzMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewot
ICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3TWVtUmVnKHNyYywgZGVzdCk7Ci0gICAgfQotCi0gICAg
dm9pZCBsb2FkMTYoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoYWRkcmVzcywgZGVzdCk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmV4dHV3KGRlc3QsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZDE2UG9z
dEluYyhSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLm1vdndNZW1SZWdJbihiYXNlLCBkZXN0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
ZXh0dXcoZGVzdCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBsb2FkMTZTaWduZWRFeHRlbmRU
bzMyKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBS
ZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotCi0gICAgICAgIG1vdmUoYWRkcmVzcy5p
bmRleCwgc2NyKTsKLSAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUp
LCBzY3IpOwotICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBzY3Ip
OwotCi0gICAgICAgIGlmIChhZGRyZXNzLmJhc2UgPT0gU0g0UmVnaXN0ZXJzOjpyMCkKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdndSMG1yKHNjciwgZGVzdCk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgYWRkMzIoYWRkcmVzcy5iYXNlLCBzY3IpOwotICAgICAgICAgICAgbG9hZDE2
U2lnbmVkRXh0ZW5kVG8zMihzY3IsIGRlc3QpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVsZWFz
ZVNjcmF0Y2goc2NyKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywg
QmFzZUluZGV4IGFkZHJlc3MpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWlt
U2NyYXRjaCgpOwotCi0gICAgICAgIG1vdmUoYWRkcmVzcy5pbmRleCwgc2NyKTsKLSAgICAgICAg
bHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBzY3IpOwotICAgICAgICBhZGQz
MihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBzY3IpOwotCi0gICAgICAgIGlmIChhZGRy
ZXNzLmJhc2UgPT0gU0g0UmVnaXN0ZXJzOjpyMCkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1v
dmJSZWdNZW1yMChzcmMsIHNjcik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYWRkMzIo
YWRkcmVzcy5iYXNlLCBzY3IpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92YlJlZ01lbShz
cmMsIHNjcik7Ci0gICAgICAgIH0KLQotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAg
IH0KLQotICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCB2b2lkKiBhZGRyZXNzKQotICAg
IHsKLSAgICAgICAgUmVnaXN0ZXJJRCBkZXN0cHRyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgZGVzdHB0cik7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLm1vdmJSZWdNZW0oc3JjLCBkZXN0cHRyKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goZGVz
dHB0cik7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCog
YWRkcmVzcykKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBpbW04KHN0YXRpY19jYXN0PGlu
dDhfdD4oaW1tLm1fdmFsdWUpKTsKLSAgICAgICAgUmVnaXN0ZXJJRCBkc3RwdHIgPSBjbGFpbVNj
cmF0Y2goKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBkc3RwdHIpOwot
ICAgICAgICBSZWdpc3RlcklEIHNyY3ZhbCA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBtb3Zl
KGltbTgsIHNyY3ZhbCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmJSZWdNZW0oc3JjdmFsLCBk
c3RwdHIpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChkc3RwdHIpOwotICAgICAgICByZWxlYXNl
U2NyYXRjaChzcmN2YWwpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBp
bW0sIEFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBpbW04KHN0
YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpKTsKLSAgICAgICAgUmVnaXN0ZXJJRCBkc3Rw
dHIgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbW92ZShhZGRyZXNzLmJhc2UsIGRzdHB0cik7
Ci0gICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIGRzdHB0cik7Ci0g
ICAgICAgIFJlZ2lzdGVySUQgc3JjdmFsID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1vdmUo
aW1tOCwgc3JjdmFsKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92YlJlZ01lbShzcmN2YWwsIGRz
dHB0cik7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKGRzdHB0cik7Ci0gICAgICAgIHJlbGVhc2VT
Y3JhdGNoKHNyY3ZhbCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3Jj
LCBCYXNlSW5kZXggYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xh
aW1TY3JhdGNoKCk7Ci0KLSAgICAgICAgbW92ZShhZGRyZXNzLmluZGV4LCBzY3IpOwotICAgICAg
ICBsc2hpZnQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5zY2FsZSksIHNjcik7Ci0gICAgICAgIGFk
ZDMyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIHNjcik7Ci0KLSAgICAgICAgaWYgKGFk
ZHJlc3MuYmFzZSA9PSBTSDRSZWdpc3RlcnM6OnIwKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bW92d1JlZ01lbXIwKHNyYywgc2NyKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhZGQz
MihhZGRyZXNzLmJhc2UsIHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z3UmVnTWVt
KHNyYywgc2NyKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7Ci0g
ICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3Mg
YWRkcmVzcykKLSAgICB7Ci0gICAgICAgIGlmICghYWRkcmVzcy5vZmZzZXQpIHsKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdmxSZWdNZW0oc3JjLCBhZGRyZXNzLmJhc2UpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChhZGRyZXNzLm9mZnNldCA+PSAw
KSAmJiAoYWRkcmVzcy5vZmZzZXQgPCA2NCkpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1v
dmxSZWdNZW0oc3JjLCBhZGRyZXNzLm9mZnNldCA+PiAyLCBhZGRyZXNzLmJhc2UpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFp
bVNjcmF0Y2goKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KGFkZHJlc3Mub2Zm
c2V0LCBzY3IpOwotICAgICAgICBpZiAoYWRkcmVzcy5iYXNlID09IFNINFJlZ2lzdGVyczo6cjAp
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsUmVnTWVtcjAoc3JjLCBzY3IpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxSZWdSZWcoYWRkcmVzcy5iYXNl
LCBzY3IpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92bFJlZ01lbShzcmMsIHNjcik7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIubW92bFJlZ01lbShzcmMsIGRzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9y
ZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAg
ICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIubG9hZENvbnN0YW50KGltbS5tX3ZhbHVlLCBzY3IpOwotICAgICAgICBzdG9yZTMyKHNjciwg
YWRkcmVzcyk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7Ci0gICAgfQotCi0gICAgdm9p
ZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKLSAgICB7Ci0gICAg
ICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0KLSAgICAgICAgbW92ZShhZGRy
ZXNzLmluZGV4LCBzY3IpOwotICAgICAgICBsc2hpZnQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5z
Y2FsZSksIHNjcik7Ci0gICAgICAgIGFkZDMyKGFkZHJlc3MuYmFzZSwgc2NyKTsKLSAgICAgICAg
c3RvcmUzMihzcmMsIEFkZHJlc3Moc2NyLCBhZGRyZXNzLm9mZnNldCkpOwotCi0gICAgICAgIHJl
bGVhc2VTY3JhdGNoKHNjcik7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0z
MiBpbW0sIHZvaWQqIGFkZHJlc3MpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNs
YWltU2NyYXRjaCgpOwotICAgICAgICBSZWdpc3RlcklEIHNjcjEgPSBjbGFpbVNjcmF0Y2goKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KGltbS5tX3ZhbHVlLCBzY3IpOwotICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIHNjcjEpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZsUmVnTWVtKHNjciwgc2NyMSk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7
Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcjEpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmUz
MihSZWdpc3RlcklEIHNyYywgdm9pZCogYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVy
SUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRy
ZXNzKSwgc2NyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92bFJlZ01lbShzcmMsIHNjcik7Ci0g
ICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZTMyKFRy
dXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgUmVnaXN0
ZXJJRCBkZXN0cHRyID0gY2xhaW1TY3JhdGNoKCk7Ci0KLSAgICAgICAgbG9hZEVmZmVjdGl2ZUFk
ZHJlc3MoYWRkcmVzcywgZGVzdHB0cik7Ci0KLSAgICAgICAgUmVnaXN0ZXJJRCBzcmN2YWwgPSBj
bGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbW92ZShpbW0sIHNyY3ZhbCk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmxSZWdNZW0oc3JjdmFsLCBkZXN0cHRyKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0
Y2goc3JjdmFsKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goZGVzdHB0cik7Ci0gICAgfQotCi0g
ICAgRGF0YUxhYmVsMzIgbG9hZDMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJl
c3MsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xh
aW1TY3JhdGNoKCk7Ci0gICAgICAgIERhdGFMYWJlbDMyIGxhYmVsKHRoaXMpOwotICAgICAgICBt
X2Fzc2VtYmxlci5sb2FkQ29uc3RhbnRVblJldXNhYmxlKGFkZHJlc3Mub2Zmc2V0LCBzY3IpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5hZGRsUmVnUmVnKGFkZHJlc3MuYmFzZSwgc2NyKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhzY3IsIGRlc3QpOwotICAgICAgICByZWxlYXNlU2Ny
YXRjaChzY3IpOwotICAgICAgICByZXR1cm4gbGFiZWw7Ci0gICAgfQotICAgIAotICAgIERhdGFM
YWJlbDMyIHN0b3JlMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRy
ZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRj
aCgpOwotICAgICAgICBEYXRhTGFiZWwzMiBsYWJlbCh0aGlzKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIubG9hZENvbnN0YW50VW5SZXVzYWJsZShhZGRyZXNzLm9mZnNldCwgc2NyKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIuYWRkbFJlZ1JlZyhhZGRyZXNzLmJhc2UsIHNjcik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmxSZWdNZW0oc3JjLCBzY3IpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3Ip
OwotICAgICAgICByZXR1cm4gbGFiZWw7Ci0gICAgfQotCi0gICAgRGF0YUxhYmVsQ29tcGFjdCBs
b2FkMzJXaXRoQ29tcGFjdEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIERhdGFMYWJlbENvbXBhY3QgZGF0YUxhYmVsKHRo
aXMpOwotICAgICAgICBBU1NFUlQoaXNDb21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQoYWRk
cmVzcy5vZmZzZXQpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZ0NvbXBhY3QoYWRk
cmVzcy5vZmZzZXQgPj4gMiwgYWRkcmVzcy5iYXNlLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGRh
dGFMYWJlbDsKLSAgICB9Ci0KLSAgICBDb252ZXJ0aWJsZUxvYWRMYWJlbCBjb252ZXJ0aWJsZUxv
YWRQdHIoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBD
b252ZXJ0aWJsZUxvYWRMYWJlbCByZXN1bHQodGhpcyk7Ci0KLSAgICAgICAgUmVnaXN0ZXJJRCBz
Y3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92SW1tOChhZGRyZXNz
Lm9mZnNldCwgc2NyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkbFJlZ1JlZyhhZGRyZXNzLmJh
c2UsIHNjcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcoc2NyLCBkZXN0KTsKLSAg
ICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0KLQotICAgIC8vIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMKLQotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRTcXJ0KCkgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludEFicygpIHsgcmV0dXJuIHRydWU7
IH0KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpIHsgcmV0
dXJuIGZhbHNlOyB9Ci0KLSAgICB2b2lkIG1vdmVEb3VibGVUb0ludHMoRlBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKLSAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmZsZHNmcHVsKChGUFJlZ2lzdGVySUQpKHNyYyArIDEpKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuc3RzZnB1bFJlZyhkZXN0MSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmZsZHNmcHVs
KHNyYyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoZGVzdDIpOwotICAgIH0KLQot
ICAgIHZvaWQgbW92ZUludHNUb0RvdWJsZShSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3Jj
MiwgRlBSZWdpc3RlcklEIGRlc3QsIEZQUmVnaXN0ZXJJRCkKLSAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmxkc3JtZnB1bChzcmMxKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZnN0c2ZwdWwoKEZQ
UmVnaXN0ZXJJRCkoZGVzdCArIDEpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRzcm1mcHVsKHNy
YzIpOwotICAgICAgICBtX2Fzc2VtYmxlci5mc3RzZnB1bChkZXN0KTsKLSAgICB9Ci0KLSAgICB2
b2lkIG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAg
ewotICAgICAgICBpZiAoc3JjICE9IGRlc3QpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmZt
b3ZzUmVnUmVnKChGUFJlZ2lzdGVySUQpKHNyYyArIDEpLCAoRlBSZWdpc3RlcklEKShkZXN0ICsg
MSkpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZm1vdnNSZWdSZWcoc3JjLCBkZXN0KTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgc3dhcERvdWJsZShGUFJlZ2lzdGVySUQgZnIxLCBG
UFJlZ2lzdGVySUQgZnIyKQotICAgIHsKLSAgICAgICAgaWYgKGZyMSAhPSBmcjIpIHsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmZsZHNmcHVsKChGUFJlZ2lzdGVySUQpKGZyMSArIDEpKTsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmZtb3ZzUmVnUmVnKChGUFJlZ2lzdGVySUQpKGZyMiArIDEp
LCAoRlBSZWdpc3RlcklEKShmcjEgKyAxKSk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5mc3Rz
ZnB1bCgoRlBSZWdpc3RlcklEKShmcjIgKyAxKSk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5m
bGRzZnB1bChmcjEpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZm1vdnNSZWdSZWcoZnIyLCBm
cjEpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZnN0c2ZwdWwoZnIyKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHZvaWQgbG9hZEZsb2F0KEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7
Ci0KLSAgICAgICAgbG9hZEVmZmVjdGl2ZUFkZHJlc3MoYWRkcmVzcywgc2NyKTsKLQotICAgICAg
ICBtX2Fzc2VtYmxlci5mbW92c1JlYWRybShzY3IsIGRlc3QpOwotICAgICAgICByZWxlYXNlU2Ny
YXRjaChzY3IpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZERvdWJsZShCYXNlSW5kZXggYWRkcmVz
cywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNs
YWltU2NyYXRjaCgpOwotCi0gICAgICAgIGxvYWRFZmZlY3RpdmVBZGRyZXNzKGFkZHJlc3MsIHNj
cik7Ci0KLSAgICAgICAgbV9hc3NlbWJsZXIuZm1vdnNSZWFkcm1pbmMoc2NyLCAoRlBSZWdpc3Rl
cklEKShkZXN0ICsgMSkpOwotICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1JlYWRybShzY3IsIGRl
c3QpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgIH0KLQotICAgIHZvaWQgbG9h
ZERvdWJsZShJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAg
ewotICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotCi0gICAgICAgIG1f
YXNzZW1ibGVyLmxvYWRDb25zdGFudChhZGRyZXNzLm9mZnNldCwgc2NyKTsKLSAgICAgICAgaWYg
KGFkZHJlc3MuYmFzZSA9PSBTSDRSZWdpc3RlcnM6OnIwKSB7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5mbW92c1JlYWRyMHIoc2NyLCAoRlBSZWdpc3RlcklEKShkZXN0ICsgMSkpOwotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKDQsIHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5mbW92c1JlYWRyMHIoc2NyLCBkZXN0KTsKLSAgICAgICAgICAgIHJlbGVhc2VTY3JhdGNo
KHNjcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRsUmVnUmVnKGFkZHJlc3MuYmFzZSwgc2NyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
Zm1vdnNSZWFkcm1pbmMoc2NyLCAoRlBSZWdpc3RlcklEKShkZXN0ICsgMSkpOwotICAgICAgICBt
X2Fzc2VtYmxlci5mbW92c1JlYWRybShzY3IsIGRlc3QpOwotICAgICAgICByZWxlYXNlU2NyYXRj
aChzY3IpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZERvdWJsZShUcnVzdGVkSW1tUHRyIGFkZHJl
c3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBj
bGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbW92ZShhZGRyZXNzLCBzY3IpOwotICAgICAgICBtX2Fz
c2VtYmxlci5mbW92c1JlYWRybWluYyhzY3IsIChGUFJlZ2lzdGVySUQpKGRlc3QgKyAxKSk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmZtb3ZzUmVhZHJtKHNjciwgZGVzdCk7Ci0gICAgICAgIHJlbGVh
c2VTY3JhdGNoKHNjcik7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZUZsb2F0KEZQUmVnaXN0ZXJJ
RCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJJRCBzY3Ig
PSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbG9hZEVmZmVjdGl2ZUFkZHJlc3MoYWRkcmVzcywg
c2NyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZm1vdnNXcml0ZXJtKHNyYywgc2NyKTsKLSAgICAg
ICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3JlRG91YmxlKEZQ
UmVnaXN0ZXJJRCBzcmMsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAg
UmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9h
ZENvbnN0YW50KGFkZHJlc3Mub2Zmc2V0ICsgOCwgc2NyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
YWRkbFJlZ1JlZyhhZGRyZXNzLmJhc2UsIHNjcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmZtb3Zz
V3JpdGVybmRlYyhzcmMsIHNjcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmZtb3ZzV3JpdGVybmRl
YygoRlBSZWdpc3RlcklEKShzcmMgKyAxKSwgc2NyKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2go
c2NyKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3JlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEJh
c2VJbmRleCBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNj
cmF0Y2goKTsKLQotICAgICAgICBsb2FkRWZmZWN0aXZlQWRkcmVzcyhhZGRyZXNzLCBzY3IsIDgp
OwotCi0gICAgICAgIG1fYXNzZW1ibGVyLmZtb3ZzV3JpdGVybmRlYyhzcmMsIHNjcik7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmZtb3ZzV3JpdGVybmRlYygoRlBSZWdpc3RlcklEKShzcmMgKyAxKSwg
c2NyKTsKLQotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgIH0KLQotICAgIHZvaWQg
YWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKG9wMSA9PSBkZXN0KQotICAgICAgICAgICAgYWRk
RG91YmxlKG9wMiwgZGVzdCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbW92ZURvdWJs
ZShvcDIsIGRlc3QpOwotICAgICAgICAgICAgYWRkRG91YmxlKG9wMSwgZGVzdCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICB2b2lkIHN0b3JlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIFRydXN0
ZWRJbW1QdHIgYWRkcmVzcykKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1T
Y3JhdGNoKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChyZWludGVycHJldF9j
YXN0PHVpbnQzMl90Pihjb25zdF9jYXN0PHZvaWQqPihhZGRyZXNzLm1fdmFsdWUpKSArIDgsIHNj
cik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmZtb3ZzV3JpdGVybmRlYyhzcmMsIHNjcik7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmZtb3ZzV3JpdGVybmRlYygoRlBSZWdpc3RlcklEKShzcmMgKyAxKSwg
c2NyKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFk
ZERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmRhZGRSZWdSZWcoc3JjLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lk
IGFkZERvdWJsZShBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBsb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGZz
Y3JhdGNoKTsKLSAgICAgICAgYWRkRG91YmxlKGZzY3JhdGNoLCBkZXN0KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGFkZERvdWJsZShBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAg
IHsKLSAgICAgICAgbG9hZERvdWJsZShhZGRyZXNzLCBmc2NyYXRjaCk7Ci0gICAgICAgIGFkZERv
dWJsZShmc2NyYXRjaCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWJEb3VibGUoRlBSZWdp
c3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5kc3ViUmVnUmVnKHNyYywgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdWJEb3VibGUoRlBS
ZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAg
ewotICAgICAgICBpZiAob3AyID09IGRlc3QpIHsKLSAgICAgICAgICAgIG1vdmVEb3VibGUob3Ax
LCBmc2NyYXRjaCk7Ci0gICAgICAgICAgICBzdWJEb3VibGUob3AyLCBmc2NyYXRjaCk7Ci0gICAg
ICAgICAgICBtb3ZlRG91YmxlKGZzY3JhdGNoLCBkZXN0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIG1vdmVEb3VibGUob3AxLCBkZXN0KTsKLSAgICAgICAgICAgIHN1YkRvdWJsZShv
cDIsIGRlc3QpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBzdWJEb3VibGUoQWRkcmVz
cyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWREb3VibGUo
YWRkcmVzcywgZnNjcmF0Y2gpOwotICAgICAgICBzdWJEb3VibGUoZnNjcmF0Y2gsIGRlc3QpOwot
ICAgIH0KLQotICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZG11bFJlZ1JlZyhzcmMsIGRlc3Qp
OwotICAgIH0KLQotICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0
ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKG9wMSA9PSBk
ZXN0KQotICAgICAgICAgICAgbXVsRG91YmxlKG9wMiwgZGVzdCk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgbW92ZURvdWJsZShvcDIsIGRlc3QpOwotICAgICAgICAgICAgbXVsRG91Ymxl
KG9wMSwgZGVzdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIG11bERvdWJsZShBZGRy
ZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZERvdWJs
ZShhZGRyZXNzLCBmc2NyYXRjaCk7Ci0gICAgICAgIG11bERvdWJsZShmc2NyYXRjaCwgZGVzdCk7
Ci0gICAgfQotCi0gICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5kZGl2UmVnUmVnKHNyYywgZGVz
dCk7Ci0gICAgfQotCi0gICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdp
c3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBpZiAob3AyID09
IGRlc3QpIHsKLSAgICAgICAgICAgIG1vdmVEb3VibGUob3AxLCBmc2NyYXRjaCk7Ci0gICAgICAg
ICAgICBkaXZEb3VibGUob3AyLCBmc2NyYXRjaCk7Ci0gICAgICAgICAgICBtb3ZlRG91YmxlKGZz
Y3JhdGNoLCBkZXN0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1vdmVEb3VibGUo
b3AxLCBkZXN0KTsKLSAgICAgICAgICAgIGRpdkRvdWJsZShvcDIsIGRlc3QpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgdm9pZCBuZWdhdGVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlRG91YmxlKHNyYywgZGVzdCk7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmRuZWcoZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBjb252ZXJ0Rmxv
YXRUb0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuZmxkc2ZwdWwoc3JjKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGNu
dnNkKGRzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBjb252ZXJ0RG91YmxlVG9GbG9hdChGUFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
ZGNudmRzKHNyYyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmZzdHNmcHVsKGRzdCk7Ci0gICAgfQot
Ci0gICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHNybWZwdWwoc3JjKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuZmxvYXRmcHVsRHJlZyhkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lk
IGNvbnZlcnRJbnQzMlRvRG91YmxlKEFic29sdXRlQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAg
ICAgICAgbG9hZDMyKHNyYy5tX3B0ciwgc2NyKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3Vi
bGUoc2NyLCBkZXN0KTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAg
ICAgIGxvYWQzMihzcmMsIHNjcik7Ci0gICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKHNjciwg
ZGVzdCk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7Ci0gICAgfQotCi0gICAgdm9pZCBs
b2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklE
IGRlc3QpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwot
ICAgICAgICBKdW1wIG1fanVtcDsKLSAgICAgICAgSnVtcExpc3QgZW5kOwotCi0gICAgICAgIGxv
YWRFZmZlY3RpdmVBZGRyZXNzKGFkZHJlc3MsIHNjcik7Ci0KLSAgICAgICAgUmVnaXN0ZXJJRCBz
Y3IxID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIGlmIChkZXN0ICE9IFNINFJlZ2lzdGVyczo6
cjApCi0gICAgICAgICAgICBtb3ZlKFNINFJlZ2lzdGVyczo6cjAsIHNjcjEpOwotCi0gICAgICAg
IG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNlKG1fYXNzZW1ibGVyLm1heEluc3RydWN0aW9uU2l6ZSAr
IDU4LCBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgbW92ZShzY3IsIFNINFJlZ2lzdGVyczo6
cjApOwotICAgICAgICBtX2Fzc2VtYmxlci50ZXN0bEltbThyKDB4MywgU0g0UmVnaXN0ZXJzOjpy
MCk7Ci0gICAgICAgIG1fanVtcCA9IEp1bXAobV9hc3NlbWJsZXIuam5lKCksIFNINEFzc2VtYmxl
cjo6SnVtcE5lYXIpOwotCi0gICAgICAgIGlmIChkZXN0ICE9IFNINFJlZ2lzdGVyczo6cjApCi0g
ICAgICAgICAgICBtb3ZlKHNjcjEsIFNINFJlZ2lzdGVyczo6cjApOwotCi0gICAgICAgIGxvYWQz
MihzY3IsIGRlc3QpOwotICAgICAgICBlbmQuYXBwZW5kKEp1bXAobV9hc3NlbWJsZXIuYnJhKCks
IFNINEFzc2VtYmxlcjo6SnVtcE5lYXIpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Ci0g
ICAgICAgIG1fanVtcC5saW5rKHRoaXMpOwotICAgICAgICBtX2Fzc2VtYmxlci50ZXN0bEltbThy
KDB4MSwgU0g0UmVnaXN0ZXJzOjpyMCk7Ci0KLSAgICAgICAgaWYgKGRlc3QgIT0gU0g0UmVnaXN0
ZXJzOjpyMCkKLSAgICAgICAgICAgIG1vdmUoc2NyMSwgU0g0UmVnaXN0ZXJzOjpyMCk7Ci0KLSAg
ICAgICAgbV9qdW1wID0gSnVtcChtX2Fzc2VtYmxlci5qbmUoKSwgU0g0QXNzZW1ibGVyOjpKdW1w
TmVhcik7Ci0gICAgICAgIGxvYWQxNlBvc3RJbmMoc2NyLCBzY3IxKTsKLSAgICAgICAgbG9hZDE2
KHNjciwgZGVzdCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnNobGxJbW04cigxNiwgZGVzdCk7Ci0g
ICAgICAgIG9yMzIoc2NyMSwgZGVzdCk7Ci0gICAgICAgIGVuZC5hcHBlbmQoSnVtcChtX2Fzc2Vt
Ymxlci5icmEoKSwgU0g0QXNzZW1ibGVyOjpKdW1wTmVhcikpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5ub3AoKTsKLSAgICAgICAgbV9qdW1wLmxpbmsodGhpcyk7Ci0gICAgICAgIGxvYWQ4UG9zdElu
YyhzY3IsIHNjcjEpOwotICAgICAgICBsb2FkMTZQb3N0SW5jKHNjciwgZGVzdCk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLnNobGxJbW04cig4LCBkZXN0KTsKLSAgICAgICAgb3IzMihkZXN0LCBzY3Ix
KTsKLSAgICAgICAgbG9hZDgoc2NyLCBkZXN0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc2hsbElt
bThyKDgsIGRlc3QpOwotICAgICAgICBtX2Fzc2VtYmxlci5zaGxsSW1tOHIoMTYsIGRlc3QpOwot
ICAgICAgICBvcjMyKHNjcjEsIGRlc3QpOwotICAgICAgICBlbmQubGluayh0aGlzKTsKLQotICAg
ICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IxKTsK
LSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcyhSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0g
ICAgewotICAgICAgICBSZWdpc3RlcklEIHNjciA9IHNjcmF0Y2hSZWczOwotICAgICAgICBsb2Fk
MzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKGxlZnQsIHNjcik7Ci0gICAgICAgIGlmICgoKGNvbmQg
PT0gRXF1YWwpIHx8IChjb25kID09IE5vdEVxdWFsKSkgJiYgIXJpZ2h0Lm1fdmFsdWUpCi0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci50ZXN0bFJlZ1JlZyhzY3IsIHNjcik7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGNvbXBhcmUzMihyaWdodC5tX3ZhbHVlLCBzY3IsIGNvbmQpOwotCi0gICAg
ICAgIGlmIChjb25kID09IE5vdEVxdWFsKQotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNl
KCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFu
Y2hEb3VibGVOb25aZXJvKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQot
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92SW1tOCgwLCBzY3JhdGNoUmVnMyk7Ci0gICAg
ICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKHNjcmF0Y2hSZWczLCBzY3JhdGNoKTsKLSAgICAgICAg
cmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVhbCwgcmVnLCBzY3JhdGNoKTsKLSAgICB9
Ci0KLSAgICBKdW1wIGJyYW5jaERvdWJsZVplcm9Pck5hTihGUFJlZ2lzdGVySUQgcmVnLCBGUFJl
Z2lzdGVySUQgc2NyYXRjaCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdkltbTgoMCwg
c2NyYXRjaFJlZzMpOwotICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShzY3JhdGNoUmVnMywg
c2NyYXRjaCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlRXF1YWxPclVub3Jk
ZXJlZCwgcmVnLCBzY3JhdGNoKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaERvdWJsZShEb3Vi
bGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCkK
LSAgICB7Ci0gICAgICAgIGlmIChjb25kID09IERvdWJsZUVxdWFsKSB7Ci0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5kY21wcGVxKHJpZ2h0LCBsZWZ0KTsKLSAgICAgICAgICAgIHJldHVybiBicmFu
Y2hUcnVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29uZCA9PSBEb3VibGVOb3RFcXVh
bCkgewotICAgICAgICAgICAgSnVtcExpc3QgZW5kOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
ZGNtcHBlcShsZWZ0LCBsZWZ0KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNl
KG1fYXNzZW1ibGVyLm1heEluc3RydWN0aW9uU2l6ZSArIDIyLCBzaXplb2YodWludDMyX3QpKTsK
LSAgICAgICAgICAgIGVuZC5hcHBlbmQoSnVtcChtX2Fzc2VtYmxlci5qbmUoKSwgU0g0QXNzZW1i
bGVyOjpKdW1wTmVhcikpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZGNtcHBlcShyaWdodCwg
cmlnaHQpOwotICAgICAgICAgICAgZW5kLmFwcGVuZChKdW1wKG1fYXNzZW1ibGVyLmpuZSgpLCBT
SDRBc3NlbWJsZXI6Okp1bXBOZWFyKSk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5kY21wcGVx
KHJpZ2h0LCBsZWZ0KTsKLSAgICAgICAgICAgIEp1bXAgbV9qdW1wID0gYnJhbmNoRmFsc2UoKTsK
LSAgICAgICAgICAgIGVuZC5saW5rKHRoaXMpOwotICAgICAgICAgICAgcmV0dXJuIG1fanVtcDsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb25kID09IERvdWJsZUdyZWF0ZXJUaGFuKSB7Ci0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci5kY21wcGd0KHJpZ2h0LCBsZWZ0KTsKLSAgICAgICAgICAg
IHJldHVybiBicmFuY2hUcnVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29uZCA9PSBE
b3VibGVHcmVhdGVyVGhhbk9yRXF1YWwpIHsKLSAgICAgICAgICAgIEp1bXBMaXN0IGVuZDsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmRjbXBwZXEobGVmdCwgbGVmdCk7Ci0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5lbnN1cmVTcGFjZShtX2Fzc2VtYmxlci5tYXhJbnN0cnVjdGlvblNpemUgKyAy
Miwgc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgICAgICBlbmQuYXBwZW5kKEp1bXAobV9hc3Nl
bWJsZXIuam5lKCksIFNINEFzc2VtYmxlcjo6SnVtcE5lYXIpKTsKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmRjbXBwZXEocmlnaHQsIHJpZ2h0KTsKLSAgICAgICAgICAgIGVuZC5hcHBlbmQoSnVt
cChtX2Fzc2VtYmxlci5qbmUoKSwgU0g0QXNzZW1ibGVyOjpKdW1wTmVhcikpOwotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuZGNtcHBndChsZWZ0LCByaWdodCk7Ci0gICAgICAgICAgICBKdW1wIG1f
anVtcCA9IGJyYW5jaEZhbHNlKCk7Ci0gICAgICAgICAgICBlbmQubGluayh0aGlzKTsKLSAgICAg
ICAgICAgIHJldHVybiBtX2p1bXA7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29uZCA9PSBE
b3VibGVMZXNzVGhhbikgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZGNtcHBndChsZWZ0LCBy
aWdodCk7Ci0gICAgICAgICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGNvbmQgPT0gRG91YmxlTGVzc1RoYW5PckVxdWFsKSB7Ci0gICAgICAgICAgICBK
dW1wTGlzdCBlbmQ7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5kY21wcGVxKGxlZnQsIGxlZnQp
OwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIubWF4SW5z
dHJ1Y3Rpb25TaXplICsgMjIsIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICAgICAgZW5kLmFw
cGVuZChKdW1wKG1fYXNzZW1ibGVyLmpuZSgpLCBTSDRBc3NlbWJsZXI6Okp1bXBOZWFyKSk7Ci0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci5kY21wcGVxKHJpZ2h0LCByaWdodCk7Ci0gICAgICAgICAg
ICBlbmQuYXBwZW5kKEp1bXAobV9hc3NlbWJsZXIuam5lKCksIFNINEFzc2VtYmxlcjo6SnVtcE5l
YXIpKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmRjbXBwZ3QocmlnaHQsIGxlZnQpOwotICAg
ICAgICAgICAgSnVtcCBtX2p1bXAgPSBicmFuY2hGYWxzZSgpOwotICAgICAgICAgICAgZW5kLmxp
bmsodGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4gbV9qdW1wOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGNvbmQgPT0gRG91YmxlRXF1YWxPclVub3JkZXJlZCkgewotICAgICAgICAgICAgSnVt
cExpc3QgdGFrZUJyYW5jaDsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmRjbXBwZXEobGVmdCwg
bGVmdCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5lbnN1cmVTcGFjZShtX2Fzc2VtYmxlci5t
YXhJbnN0cnVjdGlvblNpemUgKyAyMiwgc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgICAgICB0
YWtlQnJhbmNoLmFwcGVuZChKdW1wKG1fYXNzZW1ibGVyLmpuZSgpLCBTSDRBc3NlbWJsZXI6Okp1
bXBOZWFyKSk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5kY21wcGVxKHJpZ2h0LCByaWdodCk7
Ci0gICAgICAgICAgICB0YWtlQnJhbmNoLmFwcGVuZChKdW1wKG1fYXNzZW1ibGVyLmpuZSgpLCBT
SDRBc3NlbWJsZXI6Okp1bXBOZWFyKSk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5kY21wcGVx
KGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJyYW5jaChCRl9PUENPREUs
IDIpOwotICAgICAgICAgICAgdGFrZUJyYW5jaC5saW5rKHRoaXMpOwotICAgICAgICAgICAgcmV0
dXJuIEp1bXAobV9hc3NlbWJsZXIuZXh0cmFJbnN0ckZvckJyYW5jaChzY3JhdGNoUmVnMykpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlR3JlYXRlclRoYW5PclVub3Jk
ZXJlZCkgewotICAgICAgICAgICAgSnVtcExpc3QgdGFrZUJyYW5jaDsKLSAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmRjbXBwZXEobGVmdCwgbGVmdCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5l
bnN1cmVTcGFjZShtX2Fzc2VtYmxlci5tYXhJbnN0cnVjdGlvblNpemUgKyAyMiwgc2l6ZW9mKHVp
bnQzMl90KSk7Ci0gICAgICAgICAgICB0YWtlQnJhbmNoLmFwcGVuZChKdW1wKG1fYXNzZW1ibGVy
LmpuZSgpLCBTSDRBc3NlbWJsZXI6Okp1bXBOZWFyKSk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxl
ci5kY21wcGVxKHJpZ2h0LCByaWdodCk7Ci0gICAgICAgICAgICB0YWtlQnJhbmNoLmFwcGVuZChK
dW1wKG1fYXNzZW1ibGVyLmpuZSgpLCBTSDRBc3NlbWJsZXI6Okp1bXBOZWFyKSk7Ci0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5kY21wcGd0KHJpZ2h0LCBsZWZ0KTsKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmJyYW5jaChCRl9PUENPREUsIDIpOwotICAgICAgICAgICAgdGFrZUJyYW5jaC5saW5r
KHRoaXMpOwotICAgICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuZXh0cmFJbnN0ckZv
ckJyYW5jaChzY3JhdGNoUmVnMykpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0g
RG91YmxlR3JlYXRlclRoYW5PckVxdWFsT3JVbm9yZGVyZWQpIHsKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmRjbXBwZ3QobGVmdCwgcmlnaHQpOwotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZh
bHNlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29uZCA9PSBEb3VibGVMZXNzVGhhbk9y
VW5vcmRlcmVkKSB7Ci0gICAgICAgICAgICBKdW1wTGlzdCB0YWtlQnJhbmNoOwotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuZGNtcHBlcShsZWZ0LCBsZWZ0KTsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmVuc3VyZVNwYWNlKG1fYXNzZW1ibGVyLm1heEluc3RydWN0aW9uU2l6ZSArIDIyLCBzaXpl
b2YodWludDMyX3QpKTsKLSAgICAgICAgICAgIHRha2VCcmFuY2guYXBwZW5kKEp1bXAobV9hc3Nl
bWJsZXIuam5lKCksIFNINEFzc2VtYmxlcjo6SnVtcE5lYXIpKTsKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmRjbXBwZXEocmlnaHQsIHJpZ2h0KTsKLSAgICAgICAgICAgIHRha2VCcmFuY2guYXBw
ZW5kKEp1bXAobV9hc3NlbWJsZXIuam5lKCksIFNINEFzc2VtYmxlcjo6SnVtcE5lYXIpKTsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmRjbXBwZ3QobGVmdCwgcmlnaHQpOwotICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYnJhbmNoKEJGX09QQ09ERSwgMik7Ci0gICAgICAgICAgICB0YWtlQnJhbmNo
LmxpbmsodGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5leHRyYUlu
c3RyRm9yQnJhbmNoKHNjcmF0Y2hSZWczKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29u
ZCA9PSBEb3VibGVMZXNzVGhhbk9yRXF1YWxPclVub3JkZXJlZCkgewotICAgICAgICAgICAgbV9h
c3NlbWJsZXIuZGNtcHBndChyaWdodCwgbGVmdCk7Ci0gICAgICAgICAgICByZXR1cm4gYnJhbmNo
RmFsc2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChjb25kID09IERvdWJsZU5vdEVx
dWFsT3JVbm9yZGVyZWQpOwotICAgICAgICBtX2Fzc2VtYmxlci5kY21wcGVxKHJpZ2h0LCBsZWZ0
KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFu
Y2hUcnVlKCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNlKG1fYXNzZW1i
bGVyLm1heEluc3RydWN0aW9uU2l6ZSArIDYsIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBt
X2Fzc2VtYmxlci5icmFuY2goQkZfT1BDT0RFLCAyKTsKLSAgICAgICAgcmV0dXJuIEp1bXAobV9h
c3NlbWJsZXIuZXh0cmFJbnN0ckZvckJyYW5jaChzY3JhdGNoUmVnMykpOwotICAgIH0KLQotICAg
IEp1bXAgYnJhbmNoRmFsc2UoKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuZW5zdXJlU3Bh
Y2UobV9hc3NlbWJsZXIubWF4SW5zdHJ1Y3Rpb25TaXplICsgNiwgc2l6ZW9mKHVpbnQzMl90KSk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYW5jaChCVF9PUENPREUsIDIpOwotICAgICAgICByZXR1
cm4gSnVtcChtX2Fzc2VtYmxlci5leHRyYUluc3RyRm9yQnJhbmNoKHNjcmF0Y2hSZWczKSk7Ci0g
ICAgfQotCi0gICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJ
bmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewotICAgICAgICBSZWdpc3RlcklE
IHNjciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBtb3ZlKGxlZnQuaW5kZXgsIHNjcik7Ci0g
ICAgICAgIGxzaGlmdDMyKFRydXN0ZWRJbW0zMihsZWZ0LnNjYWxlKSwgc2NyKTsKLSAgICAgICAg
YWRkMzIobGVmdC5iYXNlLCBzY3IpOwotICAgICAgICBsb2FkMzIoc2NyLCBsZWZ0Lm9mZnNldCwg
c2NyKTsKLSAgICAgICAgY29tcGFyZTMyKHJpZ2h0Lm1fdmFsdWUsIHNjciwgY29uZCk7Ci0gICAg
ICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0gTm90RXF1YWwp
Ci0gICAgICAgICAgICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKLSAgICAgICAgcmV0dXJuIGJyYW5j
aFRydWUoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNxcnREb3VibGUoRlBSZWdpc3RlcklEIHNyYywg
RlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlRG91YmxlKHNyYywgZGVzdCk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmRzcXJ0KGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2b2lk
IGFic0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIG1vdmVEb3VibGUoc3JjLCBkZXN0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZGFicyhk
ZXN0KTsKLSAgICB9Ci0KLSAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgY2VpbERvdWJs
ZShGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghc3Vw
cG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSk7Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgfQot
Ci0gICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGZsb29yRG91YmxlKEZQUmVnaXN0ZXJJ
RCwgRlBSZWdpc3RlcklEKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFzdXBwb3J0c0Zsb2F0aW5n
UG9pbnRSb3VuZGluZygpKTsKLSAgICAgICAgQ1JBU0goKTsKLSAgICB9Ci0KLSAgICBOT19SRVRV
Uk5fRFVFX1RPX0NSQVNIIHZvaWQgcm91bmRUb3dhcmRaZXJvRG91YmxlKEZQUmVnaXN0ZXJJRCwg
RlBSZWdpc3RlcklEKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFzdXBwb3J0c0Zsb2F0aW5nUG9p
bnRSb3VuZGluZygpKTsKLSAgICAgICAgQ1JBU0goKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5j
aFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0z
MiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBt
YXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29u
ZCwgbWFzayk7Ci0gICAgICAgIFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IGNsYWlt
U2NyYXRjaCgpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBK
dW1wIGptcCA9IGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrOCk7
Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBy
ZXR1cm4gam1wOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0z
MigtMSkpCi0gICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwotICAgICAgICBS
ZWdpc3RlcklEIGFkZHJlc3NUZW1wUmVnaXN0ZXIgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAg
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRy
ZXNzLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgSnVtcCBqbXAgPSBicmFuY2hUZXN0
MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzazgpOwotICAgICAgICByZWxlYXNlU2Ny
YXRjaChhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGptcDsKLSAgICB9Ci0K
LSAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJl
c3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQotICAgIHsK
LSAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNr
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNrKTsKLSAgICAgICAgUmVnaXN0ZXJJRCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIE1hY3Jv
QXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgQWRkcmVzcyhh
ZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIEp1bXAg
am1wID0gYnJhbmNoVGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKLSAg
ICAgICAgcmVsZWFzZVNjcmF0Y2goYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVy
biBqbXA7Ci0gICAgfQotCi0gICAgdm9pZCBzaWduRXh0ZW5kMzJUb1B0cihSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAg
IH0KLQotICAgIHZvaWQgemVyb0V4dGVuZDMyVG9QdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICB9Ci0KLSAgICBK
dW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0
ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNy
b0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsK
LSAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVyID0gY2xhaW1TY3JhdGNoKCk7
Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywg
Y29uZCwgbGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIEp1bXAgam1wID0gYnJh
bmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQ4KTsKLSAgICAgICAgcmVsZWFz
ZVNjcmF0Y2goYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBqbXA7Ci0gICAg
fQotCi0gICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVB
ZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJ
bW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgUmVnaXN0ZXJJRCBhZGRyZXNzVGVtcFJlZ2lzdGVy
ID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhP
bkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgIEp1bXAgam1wID0gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgcmlnaHQ4
KTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IHJldHVybiBqbXA7Ci0gICAgfQotCi0gICAgdm9pZCBjb21wYXJlOChSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRl
c3QpCi0gICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJI
ZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7Ci0gICAgICAgIFJl
Z2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxlZnQs
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBjb21wYXJlMzIoY29uZCwgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgcmlnaHQ4LCBkZXN0KTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goYWRkcmVz
c1RlbXBSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAgZW51bSBCcmFuY2hUcnVuY2F0ZVR5cGUgeyBC
cmFuY2hJZlRydW5jYXRlRmFpbGVkLCBCcmFuY2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCB9OwotICAg
IEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCwgQnJhbmNoVHJ1bmNhdGVUeXBlIGJyYW5jaFR5cGUgPSBCcmFuY2hJZlRydW5j
YXRlRmFpbGVkKQotICAgIHsKLSAgICAgICAgSnVtcCByZXN1bHQ7Ci0gICAgICAgIHRydW5jYXRl
RG91YmxlVG9JbnQzMihzcmMsIGRlc3QpOwotICAgICAgICBSZWdpc3RlcklEIGludHNjciA9IGNs
YWltU2NyYXRjaCgpOwotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoMHg3ZmZmZmZm
ZiwgaW50c2NyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkZXN0LCBpbnRzY3Is
IFNINENvbmRpdGlvbihFcXVhbCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5lbnN1cmVTcGFjZSht
X2Fzc2VtYmxlci5tYXhJbnN0cnVjdGlvblNpemUgKyAxMiwgc2l6ZW9mKHVpbnQzMl90KSk7Ci0g
ICAgICAgIGlmIChicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpIHsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmJyYW5jaChCVF9PUENPREUsIDIpOwotICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYWRkbEltbThyKDEsIGludHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5j
bXBsUmVnUmVnKGRlc3QsIGludHNjciwgU0g0Q29uZGl0aW9uKEVxdWFsKSk7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBicmFuY2hUcnVlKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBK
dW1wIG91dCA9IEp1bXAobV9hc3NlbWJsZXIuamUoKSwgU0g0QXNzZW1ibGVyOjpKdW1wTmVhcik7
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRsSW1tOHIoMSwgaW50c2NyKTsKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoZGVzdCwgaW50c2NyLCBTSDRDb25kaXRpb24oRXF1
YWwpKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGJyYW5jaEZhbHNlKCk7Ci0gICAgICAgICAgICBv
dXQubGluayh0aGlzKTsKLSAgICAgICAgfQotICAgICAgICByZWxlYXNlU2NyYXRjaChpbnRzY3Ip
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoVHJ1bmNh
dGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5j
aFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKLSAgICB7
Ci0gICAgICAgIEp1bXAgcmVzdWx0OwotICAgICAgICBSZWdpc3RlcklEIGludHNjciA9IGNsYWlt
U2NyYXRjaCgpOwotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoMHg4MDAwMDAwMCwg
aW50c2NyKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoaW50c2NyLCBmc2NyYXRjaCk7
Ci0gICAgICAgIGFkZERvdWJsZShzcmMsIGZzY3JhdGNoKTsKLSAgICAgICAgdHJ1bmNhdGVEb3Vi
bGVUb0ludDMyKGZzY3JhdGNoLCBkZXN0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1Jl
ZyhkZXN0LCBpbnRzY3IsIFNINENvbmRpdGlvbihFcXVhbCkpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5lbnN1cmVTcGFjZShtX2Fzc2VtYmxlci5tYXhJbnN0cnVjdGlvblNpemUgKyAxNiwgc2l6ZW9m
KHVpbnQzMl90KSk7Ci0gICAgICAgIGlmIChicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVG
YWlsZWQpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJyYW5jaChCVF9PUENPREUsIDQpOwot
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKC0xLCBpbnRzY3IpOwotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkZXN0LCBpbnRzY3IsIFNINENvbmRpdGlvbihFcXVh
bCkpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKDEsIGludHNjcik7Ci0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJsUmVnUmVnKGludHNjciwgZGVzdCk7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBicmFuY2hUcnVlKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBK
dW1wIG91dCA9IEp1bXAobV9hc3NlbWJsZXIuamUoKSwgU0g0QXNzZW1ibGVyOjpKdW1wTmVhcik7
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRsSW1tOHIoLTEsIGludHNjcik7Ci0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKGRlc3QsIGludHNjciwgU0g0Q29uZGl0aW9uKEVx
dWFsKSk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRsSW1tOHIoMSwgaW50c2NyKTsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxSZWdSZWcoaW50c2NyLCBkZXN0KTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IGJyYW5jaEZhbHNlKCk7Ci0gICAgICAgICAgICBvdXQubGluayh0aGlzKTsK
LSAgICAgICAgfQotICAgICAgICByZWxlYXNlU2NyYXRjaChpbnRzY3IpOwotICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgIH0KLQotICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmZ0cmNkcm1mcHVsKHNyYyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoZGVzdCk7
Ci0gICAgfQotCi0gICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVySUQgaW50c2NyID0g
Y2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudCgweDgwMDAw
MDAwLCBpbnRzY3IpOwotICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShpbnRzY3IsIGZzY3Jh
dGNoKTsKLSAgICAgICAgYWRkRG91YmxlKHNyYywgZnNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5mdHJjZHJtZnB1bChmc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxS
ZWcoZGVzdCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN1YmxSZWdSZWcoaW50c2NyLCBkZXN0KTsK
LSAgICAgICAgcmVsZWFzZVNjcmF0Y2goaW50c2NyKTsKLSAgICB9Ci0KLSAgICAvLyBTdGFjayBt
YW5pcHVsYXRpb24gb3BlcmF0aW9ucwotCi0gICAgdm9pZCBwb3AoUmVnaXN0ZXJJRCBkZXN0KQot
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIucG9wUmVnKGRlc3QpOwotICAgIH0KLQotICAgIHZv
aWQgcHVzaChSZWdpc3RlcklEIHNyYykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnB1c2hS
ZWcoc3JjKTsKLSAgICB9Ci0KLSAgICB2b2lkIHB1c2goVHJ1c3RlZEltbTMyIGltbSkKLSAgICB7
Ci0gICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmxvYWRDb25zdGFudChpbW0ubV92YWx1ZSwgc2NyKTsKLSAgICAgICAgcHVzaChzY3Ip
OwotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgIH0KLQotICAgIC8vIFJlZ2lzdGVy
IG1vdmUgb3BlcmF0aW9ucwotCi0gICAgdm9pZCBtb3ZlKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChpbW0u
bV92YWx1ZSwgZGVzdCk7Ci0gICAgfQotCi0gICAgRGF0YUxhYmVsUHRyIG1vdmVXaXRoUGF0Y2go
VHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNlKG1fYXNzZW1ibGVyLm1heEluc3RydWN0aW9uU2l6
ZSwgc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgIERhdGFMYWJlbFB0ciBkYXRhTGFiZWwodGhp
cyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudFVuUmV1c2FibGUocmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdD4oaW5pdGlhbFZhbHVlLm1fdmFsdWUpLCBkZXN0KTsKLSAgICAgICAg
cmV0dXJuIGRhdGFMYWJlbDsKLSAgICB9Ci0KLSAgICBEYXRhTGFiZWwzMiBtb3ZlV2l0aFBhdGNo
KFRydXN0ZWRJbW0zMiBpbml0aWFsVmFsdWUsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNlKG1fYXNzZW1ibGVyLm1heEluc3RydWN0aW9uU2l6
ZSwgc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgICAgIERhdGFMYWJlbDMyIGRhdGFMYWJlbCh0aGlz
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50VW5SZXVzYWJsZShzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oaW5pdGlhbFZhbHVlLm1fdmFsdWUpLCBkZXN0KTsKLSAgICAgICAgcmV0dXJu
IGRhdGFMYWJlbDsKLSAgICB9Ci0KLSAgICB2b2lkIG1vdmUoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdmxSZWdSZWcoc3JjLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIG1v
dmUoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmxvYWRDb25zdGFudChpbW0uYXNJbnRwdHIoKSwgZGVzdCk7Ci0gICAgfQotCi0g
ICAgdm9pZCBzd2FwKFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcyKQotICAgIHsKLSAg
ICAgICAgaWYgKHJlZzEgIT0gcmVnMikgewotICAgICAgICAgICAgeG9yMzIocmVnMSwgcmVnMik7
Ci0gICAgICAgICAgICB4b3IzMihyZWcyLCByZWcxKTsKLSAgICAgICAgICAgIHhvcjMyKHJlZzEs
IHJlZzIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lz
dGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcocmlnaHQs
IGxlZnQsIFNINENvbmRpdGlvbihjb25kKSk7Ci0gICAgICAgIGlmIChjb25kICE9IE5vdEVxdWFs
KSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Z0KGRlc3QpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9hc3NlbWJsZXIuZW5zdXJlU3BhY2UobV9hc3Nl
bWJsZXIubWF4SW5zdHJ1Y3Rpb25TaXplICsgNCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdklt
bTgoMCwgZGVzdCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYW5jaChCVF9PUENPREUsIDApOwot
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZJbW04KDEsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQg
Y29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVz
dGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmIChsZWZ0
ICE9IGRlc3QpIHsKLSAgICAgICAgICAgIG1vdmUocmlnaHQsIGRlc3QpOwotICAgICAgICAgICAg
Y29tcGFyZTMyKGNvbmQsIGxlZnQsIGRlc3QsIGRlc3QpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAg
ICAgICAgbW92ZShyaWdodCwgc2NyKTsKLSAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIHNj
ciwgZGVzdCk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7Ci0gICAgfQotCi0gICAgdm9p
ZCB0ZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1t
MzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09
IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLQotICAgICAgICBUcnVzdGVkSW1tMzIgbWFz
azggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IG1hc2spOwotCi0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgYWRkcmVzcywgZGVzdCk7Ci0gICAgICAgIGlmICgobWFzazgubV92YWx1
ZSAmIDB4ZmYpID09IDB4ZmYpCi0gICAgICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGlj
X2Nhc3Q8UmVsYXRpb25hbENvbmRpdGlvbj4oY29uZCkpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB0ZXN0bEltbShtYXNrOC5tX3ZhbHVlLCBkZXN0KTsKLSAgICAgICAgaWYgKGNvbmQgIT0g
Tm9uWmVybykgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92dChkZXN0KTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNl
KG1fYXNzZW1ibGVyLm1heEluc3RydWN0aW9uU2l6ZSArIDQpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZJbW04KDAsIGRlc3QpOwotICAgICAgICBtX2Fzc2VtYmxlci5icmFuY2goQlRfT1BDT0RF
LCAwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92SW1tOCgxLCBkZXN0KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVz
dGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLQotICAgICAgICBsb2FkMzIoYWRk
cmVzcywgZGVzdCk7Ci0gICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEpCi0gICAgICAgICAg
ICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGljX2Nhc3Q8UmVsYXRpb25hbENvbmRpdGlvbj4oY29u
ZCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0bEltbShtYXNrLm1fdmFsdWUsIGRl
c3QpOwotICAgICAgICBpZiAoY29uZCAhPSBOb25aZXJvKSB7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3Z0KGRlc3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgbV9hc3NlbWJsZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIubWF4SW5zdHJ1Y3Rpb25TaXpl
ICsgNCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdkltbTgoMCwgZGVzdCk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmJyYW5jaChCVF9PUENPREUsIDApOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZJ
bW04KDEsIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgbG9hZFB0ckxpbmtSZWcoSW1wbGljaXRB
ZGRyZXNzIGFkZHJlc3MpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2Ny
YXRjaCgpOwotICAgICAgICBsb2FkMzIoYWRkcmVzcywgc2NyKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIubGRzcHIoc2NyKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICB9Ci0KLSAg
ICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0
LCBSZWdpc3RlcklEIHJpZ2h0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1Jl
ZyhyaWdodCwgbGVmdCwgU0g0Q29uZGl0aW9uKGNvbmQpKTsKLSAgICAgICAgLyogQlQgbGFiZWwg
PT4gQkYgb2ZmCi0gICAgICAgICAgIG5vcCAgICAgICAgIExEUiByZWcKLSAgICAgICAgICAgbm9w
ICAgICAgICAgYnJhZiBAcmVnCi0gICAgICAgICAgIG5vcCAgICAgICAgIG5vcAotICAgICAgICAg
Ki8KLSAgICAgICAgaWYgKGNvbmQgPT0gTm90RXF1YWwpCi0gICAgICAgICAgICByZXR1cm4gYnJh
bmNoRmFsc2UoKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsKLSAgICB9Ci0KLSAgICBK
dW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBU
cnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewotICAgICAgICBpZiAoKChjb25kID09IEVxdWFsKSB8
fCAoY29uZCA9PSBOb3RFcXVhbCkpICYmICFyaWdodC5tX3ZhbHVlKQotICAgICAgICAgICAgbV9h
c3NlbWJsZXIudGVzdGxSZWdSZWcobGVmdCwgbGVmdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGNvbXBhcmUzMihyaWdodC5tX3ZhbHVlLCBsZWZ0LCBjb25kKTsKLQotICAgICAgICBpZiAo
Y29uZCA9PSBOb3RFcXVhbCkKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hGYWxzZSgpOwotICAg
ICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoMzIoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIEFkZHJlc3MgcmlnaHQpCi0g
ICAgewotICAgICAgICBjb21wYXJlMzIocmlnaHQub2Zmc2V0LCByaWdodC5iYXNlLCBsZWZ0LCBj
b25kKTsKLSAgICAgICAgaWYgKGNvbmQgPT0gTm90RXF1YWwpCi0gICAgICAgICAgICByZXR1cm4g
YnJhbmNoRmFsc2UoKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsKLSAgICB9Ci0KLSAg
ICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBS
ZWdpc3RlcklEIHJpZ2h0KQotICAgIHsKLSAgICAgICAgY29tcGFyZTMyKHJpZ2h0LCBsZWZ0Lm9m
ZnNldCwgbGVmdC5iYXNlLCBjb25kKTsKLSAgICAgICAgaWYgKGNvbmQgPT0gTm90RXF1YWwpCi0g
ICAgICAgICAgICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRy
dWUoKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewotICAgICAgICBjb21w
YXJlMzIocmlnaHQubV92YWx1ZSwgbGVmdC5vZmZzZXQsIGxlZnQuYmFzZSwgY29uZCk7Ci0gICAg
ICAgIGlmIChjb25kID09IE5vdEVxdWFsKQotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNl
KCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFu
Y2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdp
c3RlcklEIHJpZ2h0KQotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0
Y2goKTsKLQotICAgICAgICBsb2FkMzIobGVmdC5tX3B0ciwgc2NyKTsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuY21wbFJlZ1JlZyhyaWdodCwgc2NyLCBTSDRDb25kaXRpb24oY29uZCkpOwotICAgICAg
ICByZWxlYXNlU2NyYXRjaChzY3IpOwotCi0gICAgICAgIGlmIChjb25kID09IE5vdEVxdWFsKQot
ICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hU
cnVlKCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCi0gICAgewotICAg
ICAgICBSZWdpc3RlcklEIGFkZHJlc3NUZW1wUmVnaXN0ZXIgPSBjbGFpbVNjcmF0Y2goKTsKLQot
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobGVmdC5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0
ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKGFkZHJlc3NUZW1wUmVnaXN0ZXIs
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwotICAgICAgICBjb21wYXJlMzIocmlnaHQubV92YWx1ZSwg
YWRkcmVzc1RlbXBSZWdpc3RlciwgY29uZCk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKGFkZHJl
c3NUZW1wUmVnaXN0ZXIpOwotCi0gICAgICAgIGlmIChjb25kID09IE5vdEVxdWFsKQotICAgICAg
ICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7
Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFz
ZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKLSAgICB7Ci0gICAgICAgIFRydXN0ZWRJ
bW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgUmVnaXN0ZXJJRCBsZWZ0dG1wID0gY2xhaW1TY3Jh
dGNoKCk7Ci0KLSAgICAgICAgbG9hZEVmZmVjdGl2ZUFkZHJlc3MobGVmdCwgbGVmdHRtcCk7Ci0K
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBj
b25kLCBsZWZ0dG1wLCBsZWZ0dG1wKTsKLSAgICAgICAgUmVnaXN0ZXJJRCByaWdodHRtcCA9IGNs
YWltU2NyYXRjaCgpOwotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQocmlnaHQ4Lm1f
dmFsdWUsIHJpZ2h0dG1wKTsKLQotICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaDMyKGNvbmQs
IGxlZnR0bXAsIHJpZ2h0dG1wKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2gobGVmdHRtcCk7Ci0g
ICAgICAgIHJlbGVhc2VTY3JhdGNoKHJpZ2h0dG1wKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVn
aXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFzaykKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29u
ZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Ci0KLSAgICAgICAgbV9hc3NlbWJsZXIu
dGVzdGxSZWdSZWcocmVnLCBtYXNrKTsKLQotICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSAv
LyBOb3RFcXVhbAotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7Ci0gICAgICAgIHJl
dHVybiBicmFuY2hUcnVlKCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0
ZWRJbW0zMigtMSkpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gWmVybykgfHwgKGNv
bmQgPT0gTm9uWmVybykpOwotCi0gICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEpCi0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci50ZXN0bFJlZ1JlZyhyZWcsIHJlZyk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHRlc3RsSW1tKG1hc2subV92YWx1ZSwgcmVnKTsKLQotICAgICAgICBpZiAo
Y29uZCA9PSBOb25aZXJvKSAvLyBOb3RFcXVhbAotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZh
bHNlKCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7Ci0gICAgfQotCi0gICAgSnVtcCBi
cmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3Rl
ZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLQotICAgICAgICBpZiAobWFzay5t
X3ZhbHVlID09IC0xKQotICAgICAgICAgICAgY29tcGFyZTMyKDAsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIHN0YXRpY19jYXN0PFJlbGF0aW9uYWxDb25kaXRpb24+KGNvbmQpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgdGVzdEltbShtYXNrLm1fdmFsdWUsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOwotCi0gICAgICAgIGlmIChjb25kID09IE5vblplcm8pIC8vIE5v
dEVxdWFsCi0gICAgICAgICAgICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKLSAgICAgICAgcmV0dXJu
IGJyYW5jaFRydWUoKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25k
aXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29u
ZCA9PSBOb25aZXJvKSk7Ci0KLSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2go
KTsKLQotICAgICAgICBtb3ZlKGFkZHJlc3MuaW5kZXgsIHNjcik7Ci0gICAgICAgIGxzaGlmdDMy
KFRydXN0ZWRJbW0zMihhZGRyZXNzLnNjYWxlKSwgc2NyKTsKLSAgICAgICAgYWRkMzIoYWRkcmVz
cy5iYXNlLCBzY3IpOwotICAgICAgICBsb2FkMzIoc2NyLCBhZGRyZXNzLm9mZnNldCwgc2NyKTsK
LQotICAgICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0xKQotICAgICAgICAgICAgbV9hc3NlbWJs
ZXIudGVzdGxSZWdSZWcoc2NyLCBzY3IpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXN0
bEltbShtYXNrLm1fdmFsdWUsIHNjcik7Ci0KLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsK
LQotICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSAvLyBOb3RFcXVhbAotICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaEZhbHNlKCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7Ci0gICAg
fQotCi0gICAgSnVtcCBqdW1wKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1i
bGVyLmptcCgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQpCi0g
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci5qbXBSZWcodGFyZ2V0KTsKLSAgICB9Ci0KLSAgICB2
b2lkIGp1bXAoQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJJRCBzY3Ig
PSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIHNjcik7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmptcFJlZyhzY3IpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwot
ICAgIH0KLQotICAgIHZvaWQganVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKLSAgICB7Ci0g
ICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0KLSAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3IpOwotICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZsTWVtUmVnKHNjciwgc2NyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuam1wUmVnKHNjcik7Ci0g
ICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7Ci0gICAgfQotCi0gICAgLy8gQXJpdGhtZXRpYyBj
b250cm9sIGZsb3cgb3BlcmF0aW9ucwotCi0gICAgSnVtcCBicmFuY2hOZWczMihSZXN1bHRDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNEZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChj
b25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8
IChjb25kID09IE5vblplcm8pKTsKLQotICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykKLSAg
ICAgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBzcmNEZXN0LCBUcnVzdGVkSW1tMzIo
LTEpLCBzcmNEZXN0KTsKLQotICAgICAgICBuZWczMihzcmNEZXN0KTsKLQotICAgICAgICBpZiAo
Y29uZCA9PSBTaWduZWQpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHB6KHNyY0Rlc3Qp
OwotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjb21wYXJlMzIoMCwgc3JjRGVzdCwgRXF1YWwpOwotICAgICAgICByZXR1cm4gKGNvbmQgPT0g
Tm9uWmVybykgPyBicmFuY2hGYWxzZSgpIDogYnJhbmNoVHJ1ZSgpOwotICAgIH0KLQotICAgIEp1
bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8
IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHx8IChjb25kID09
IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLQotICAgICAgICBpZiAoY29uZCA9PSBPdmVy
ZmxvdykgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdmxSZWdSZWcoc3JjLCBkZXN0KTsK
LSAgICAgICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBt
X2Fzc2VtYmxlci5hZGRsUmVnUmVnKHNyYywgZGVzdCk7Ci0KLSAgICAgICAgaWYgKChjb25kID09
IFNpZ25lZCkgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pKSB7Ci0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5jbXBweihkZXN0KTsKLSAgICAgICAgICAgIHJldHVybiAoY29uZCA9PSBTaWduZWQp
ID8gYnJhbmNoRmFsc2UoKSA6IGJyYW5jaFRydWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNv
bXBhcmUzMigwLCBkZXN0LCBFcXVhbCk7Ci0gICAgICAgIHJldHVybiAoY29uZCA9PSBOb25aZXJv
KSA/IGJyYW5jaEZhbHNlKCkgOiBicmFuY2hUcnVlKCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFu
Y2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklE
IHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBP
dmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykg
fHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotCi0gICAgICAgIGlmIChj
b25kID09IE92ZXJmbG93KSB7Ci0gICAgICAgICAgICBpZiAoc3JjMSA9PSBkZXN0KQotICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHZsUmVnUmVnKHNyYzIsIGRlc3QpOwotICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbW92ZShzcmMyLCBkZXN0KTsKLSAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5hZGR2bFJlZ1JlZyhzcmMxLCBkZXN0KTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBh
ZGQzMihzcmMxLCBzcmMyLCBkZXN0KTsKLQotICAgICAgICBpZiAoKGNvbmQgPT0gU2lnbmVkKSB8
fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNt
cHB6KGRlc3QpOwotICAgICAgICAgICAgcmV0dXJuIChjb25kID09IFNpZ25lZCkgPyBicmFuY2hG
YWxzZSgpIDogYnJhbmNoVHJ1ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29tcGFyZTMyKDAs
IGRlc3QsIEVxdWFsKTsKLSAgICAgICAgcmV0dXJuIChjb25kID09IE5vblplcm8pID8gYnJhbmNo
RmFsc2UoKSA6IGJyYW5jaFRydWUoKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaEFkZDMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCi0g
ICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25l
ZCkgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHx8IChjb25kID09IFplcm8pIHx8IChjb25k
ID09IE5vblplcm8pKTsKLQotICAgICAgICBSZWdpc3RlcklEIGltbXZhbCA9IGNsYWltU2NyYXRj
aCgpOwotICAgICAgICBtb3ZlKGltbSwgaW1tdmFsKTsKLSAgICAgICAgSnVtcCByZXN1bHQgPSBi
cmFuY2hBZGQzMihjb25kLCBpbW12YWwsIGRlc3QpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChp
bW12YWwpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNo
QWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIg
aW1tLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3Zl
cmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHx8
IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLQotICAgICAgICBtb3ZlKHNy
YywgZGVzdCk7Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKLSAgICAgICAgICAg
IG1vdmUoaW1tLCBzY3JhdGNoUmVnMyk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR2bFJl
Z1JlZyhzY3JhdGNoUmVnMywgZGVzdCk7Ci0gICAgICAgICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgYWRkMzIoaW1tLCBkZXN0KTsKLQotICAgICAgICBpZiAo
KGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykpIHsKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcHB6KGRlc3QpOwotICAgICAgICAgICAgcmV0dXJuIChjb25kID09
IFNpZ25lZCkgPyBicmFuY2hGYWxzZSgpIDogYnJhbmNoVHJ1ZSgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgY29tcGFyZTMyKDAsIGRlc3QsIEVxdWFsKTsKLSAgICAgICAgcmV0dXJuIChjb25kID09
IE5vblplcm8pID8gYnJhbmNoRmFsc2UoKSA6IGJyYW5jaFRydWUoKTsKLSAgICB9Ci0KLSAgICBK
dW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBB
YnNvbHV0ZUFkZHJlc3MgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVy
ZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykgfHwg
KGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotICAgICAgICBib29sIHJlc3Vs
dDsKLQotICAgICAgICBtb3ZlKGltbSwgc2NyYXRjaFJlZzMpOwotICAgICAgICBSZWdpc3RlcklE
IGRlc3RwdHIgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgUmVnaXN0ZXJJRCBkZXN0dmFsID0g
Y2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihkZXN0Lm1fcHRyKSwg
ZGVzdHB0cik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcoZGVzdHB0ciwgZGVzdHZh
bCk7Ci0gICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGR2bFJlZ1JlZyhzY3JhdGNoUmVnMywgZGVzdHZhbCk7Ci0gICAgICAgICAgICByZXN1
bHQgPSB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
bFJlZ1JlZyhzY3JhdGNoUmVnMywgZGVzdHZhbCk7Ci0gICAgICAgICAgICBpZiAoKGNvbmQgPT0g
U2lnbmVkKSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykpIHsKLSAgICAgICAgICAgICAgICBt
X2Fzc2VtYmxlci5jbXBweihkZXN0dmFsKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAoY29u
ZCA9PSBQb3NpdGl2ZU9yWmVybyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnRlc3RsUmVnUmVnKGRlc3R2YWwsIGRlc3R2YWwpOwotICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IChjb25kICE9IE5vblplcm8pOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmxSZWdNZW0oZGVzdHZhbCwgZGVzdHB0cik7Ci0g
ICAgICAgIHJlbGVhc2VTY3JhdGNoKGRlc3R2YWwpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChk
ZXN0cHRyKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdCA/IGJyYW5jaFRydWUoKSA6IGJyYW5jaEZh
bHNlKCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgo
Y29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBQb3NpdGl2
ZU9yWmVybykgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotCi0gICAg
ICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7Ci0gICAgICAgICAgICBSZWdpc3RlcklEIHNyY1Zh
bCA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICAgICAgbG9hZDMyKHNyYywgc3JjVmFsKTsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHZsUmVnUmVnKHNyY1ZhbCwgZGVzdCk7Ci0gICAgICAg
ICAgICByZWxlYXNlU2NyYXRjaChzcmNWYWwpOwotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRy
dWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGFkZDMyKHNyYywgZGVzdCk7Ci0KLSAgICAgICAg
aWYgKChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pKSB7Ci0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci5jbXBweihkZXN0KTsKLSAgICAgICAgICAgIHJldHVybiAoY29u
ZCA9PSBTaWduZWQpID8gYnJhbmNoRmFsc2UoKSA6IGJyYW5jaFRydWUoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBFcXVhbCk7Ci0gICAgICAgIHJldHVybiAoY29u
ZCA9PSBOb25aZXJvKSA/IGJyYW5jaEZhbHNlKCkgOiBicmFuY2hUcnVlKCk7Ci0gICAgfQotCi0g
ICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxv
dykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25a
ZXJvKSk7Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKLSAgICAgICAgICAgIFJl
Z2lzdGVySUQgc2Nyc2lnbiA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICAgICAgUmVnaXN0ZXJJ
RCBtc2JyZXMgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmRtdWxz
bFJlZ1JlZyhzcmMsIGRlc3QpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RzbWFjbChkZXN0
KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHB6KGRlc3QpOwotICAgICAgICAgICAgbV9h
c3NlbWJsZXIubW92dChzY3JzaWduKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04
cigtMSwgc2Nyc2lnbik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHNtYWNoKG1zYnJlcyk7
Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKG1zYnJlcywgc2Nyc2lnbiwgU0g0
Q29uZGl0aW9uKEVxdWFsKSk7Ci0gICAgICAgICAgICByZWxlYXNlU2NyYXRjaChtc2JyZXMpOwot
ICAgICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2Nyc2lnbik7Ci0gICAgICAgICAgICByZXR1cm4g
YnJhbmNoRmFsc2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIG11bDMyKHNyYywgZGVzdCk7Ci0K
LSAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5j
bXBweihkZXN0KTsKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hGYWxzZSgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgY29tcGFyZTMyKDAsIGRlc3QsIHN0YXRpY19jYXN0PFJlbGF0aW9uYWxDb25k
aXRpb24+KGNvbmQpKTsKLSAgICAgICAgcmV0dXJuIChjb25kID09IE5vblplcm8pID8gYnJhbmNo
RmFsc2UoKSA6IGJyYW5jaFRydWUoKTsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaE11bDMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVn
aXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8
fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8p
KTsKLQotICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewotICAgICAgICAgICAgUmVnaXN0
ZXJJRCBzY3JzaWduID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgICAgICBSZWdpc3RlcklEIG1z
YnJlcyA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZG11bHNsUmVn
UmVnKHNyYzEsIHNyYzIpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RzbWFjbChkZXN0KTsK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcHB6KGRlc3QpOwotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubW92dChzY3JzaWduKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04cigt
MSwgc2Nyc2lnbik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zdHNtYWNoKG1zYnJlcyk7Ci0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKG1zYnJlcywgc2Nyc2lnbiwgU0g0Q29u
ZGl0aW9uKEVxdWFsKSk7Ci0gICAgICAgICAgICByZWxlYXNlU2NyYXRjaChtc2JyZXMpOwotICAg
ICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2Nyc2lnbik7Ci0gICAgICAgICAgICByZXR1cm4gYnJh
bmNoRmFsc2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3Qp
OwotCi0gICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgewotICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuY21wcHooZGVzdCk7Ci0gICAgICAgICAgICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBFcXVhbCk7Ci0gICAgICAgIHJldHVy
biAoY29uZCA9PSBOb25aZXJvKSA/IGJyYW5jaEZhbHNlKCkgOiBicmFuY2hUcnVlKCk7Ci0gICAg
fQotCi0gICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9
PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Ci0KLSAgICAgICAgaWYgKHNyYyA9PSBkZXN0
KSB7Ci0gICAgICAgICAgICBtb3ZlKGltbSwgc2NyYXRjaFJlZzMpOwotICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaE11bDMyKGNvbmQsIHNjcmF0Y2hSZWczLCBkZXN0KTsKLSAgICAgICAgfQotCi0g
ICAgICAgIG1vdmUoaW1tLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQs
IHNyYywgZGVzdCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9
PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0gT3Zl
cmZsb3cpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnZsUmVnUmVnKHNyYywgZGVzdCk7
Ci0gICAgICAgICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
c3ViMzIoc3JjLCBkZXN0KTsKLQotICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmNtcHB6KGRlc3QpOwotICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aEZhbHNlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGlj
X2Nhc3Q8UmVsYXRpb25hbENvbmRpdGlvbj4oY29uZCkpOwotICAgICAgICByZXR1cm4gKGNvbmQg
PT0gTm9uWmVybykgPyBicmFuY2hGYWxzZSgpIDogYnJhbmNoVHJ1ZSgpOwotICAgIH0KLQotICAg
IEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxv
dykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25a
ZXJvKSk7Ci0KLSAgICAgICAgUmVnaXN0ZXJJRCBpbW12YWwgPSBjbGFpbVNjcmF0Y2goKTsKLSAg
ICAgICAgbW92ZShpbW0sIGltbXZhbCk7Ci0gICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoU3Vi
MzIoY29uZCwgaW1tdmFsLCBkZXN0KTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goaW1tdmFsKTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBKdW1wIGJyYW5jaFN1YjMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8
fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8p
KTsKLQotICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hTdWIz
Mihjb25kLCBpbW0sIGRlc3QpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3Rl
cklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChj
b25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwot
Ci0gICAgICAgIGlmIChzcmMyICE9IGRlc3QpIHsKLSAgICAgICAgICAgIG1vdmUoc3JjMSwgZGVz
dCk7Ci0gICAgICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgc3JjMiwgZGVzdCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewotICAgICAgICAgICAg
UmVnaXN0ZXJJRCB0bXB2YWwgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgICAgIG1vdmUoc3Jj
MSwgdG1wdmFsKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnZsUmVnUmVnKHNyYzIsIHRt
cHZhbCk7Ci0gICAgICAgICAgICBtb3ZlKHRtcHZhbCwgZGVzdCk7Ci0gICAgICAgICAgICByZWxl
YXNlU2NyYXRjaCh0bXB2YWwpOwotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIFJlZ2lzdGVySUQgdG1wdmFsID0gY2xhaW1TY3JhdGNoKCk7Ci0g
ICAgICAgIG1vdmUoc3JjMSwgdG1wdmFsKTsKLSAgICAgICAgc3ViMzIoc3JjMiwgdG1wdmFsKTsK
LSAgICAgICAgbW92ZSh0bXB2YWwsIGRlc3QpOwotICAgICAgICByZWxlYXNlU2NyYXRjaCh0bXB2
YWwpOwotCi0gICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgewotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuY21wcHooZGVzdCk7Ci0gICAgICAgICAgICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBzdGF0aWNfY2FzdDxSZWxhdGlv
bmFsQ29uZGl0aW9uPihjb25kKSk7Ci0gICAgICAgIHJldHVybiAoY29uZCA9PSBOb25aZXJvKSA/
IGJyYW5jaEZhbHNlKCkgOiBicmFuY2hUcnVlKCk7Ci0gICAgfQotCi0gICAgSnVtcCBicmFuY2hP
cjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVy
bykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwotCi0gICAgICAgIG9yMzIoc3JjLCBkZXN0KTsKLQot
ICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNt
cHB6KGRlc3QpOwotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGljX2Nhc3Q8UmVsYXRpb25hbENvbmRp
dGlvbj4oY29uZCkpOwotICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hG
YWxzZSgpIDogYnJhbmNoVHJ1ZSgpOwotICAgIH0KLQotICAgIHZvaWQgYnJhbmNoQ29udmVydERv
dWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYg
ZmFpbHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQsIGJvb2wgbmVnWmVyb0NoZWNrID0gdHJ1ZSkKLSAg
ICB7Ci0gICAgICAgIHRydW5jYXRlRG91YmxlVG9JbnQzMihzcmMsIGRlc3QpOwotICAgICAgICBj
b252ZXJ0SW50MzJUb0RvdWJsZShkZXN0LCBmc2NyYXRjaCk7Ci0gICAgICAgIGZhaWx1cmVDYXNl
cy5hcHBlbmQoYnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGZzY3JhdGNo
LCBzcmMpKTsKLQotICAgICAgICBpZiAobmVnWmVyb0NoZWNrKQotICAgICAgICAgICAgZmFpbHVy
ZUNhc2VzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKSk7Ci0g
ICAgfQotCi0gICAgdm9pZCBuZWczMihSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLm5lZyhkc3QsIGRzdCk7Ci0gICAgfQotCi0gICAgdm9pZCB1cnNoaWZ0MzIoUmVn
aXN0ZXJJRCBzaGlmdGFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgUmVn
aXN0ZXJJRCBzaGlmdFRtcCA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBtX2Fzc2VtYmxlci5s
b2FkQ29uc3RhbnQoMHgxZiwgc2hpZnRUbXApOwotICAgICAgICBtX2Fzc2VtYmxlci5hbmRsUmVn
UmVnKHNoaWZ0YW1vdW50LCBzaGlmdFRtcCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm5lZyhzaGlm
dFRtcCwgc2hpZnRUbXApOwotICAgICAgICBtX2Fzc2VtYmxlci5zaGxkUmVnUmVnKGRlc3QsIHNo
aWZ0VG1wKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2hpZnRUbXApOwotICAgIH0KLQotICAg
IHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0gICAgICAg
IHVyc2hpZnQzMihzaGlmdEFtb3VudCwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCB1cnNoaWZ0
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaW50
IGltbU1hc2tlZCA9IGltbS5tX3ZhbHVlICYgMHgxZjsKLSAgICAgICAgaWYgKCFpbW1NYXNrZWQp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKChpbW1NYXNrZWQgPT0gMSkgfHwg
KGltbU1hc2tlZCA9PSAyKSB8fCAoaW1tTWFza2VkID09IDgpIHx8IChpbW1NYXNrZWQgPT0gMTYp
KSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zaGxySW1tOHIoaW1tTWFza2VkLCBkZXN0KTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFJlZ2lzdGVySUQgc2hp
ZnRUbXAgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50
KC1pbW1NYXNrZWQsIHNoaWZ0VG1wKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc2hsZFJlZ1JlZyhk
ZXN0LCBzaGlmdFRtcCk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNoaWZ0VG1wKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIHNoaWZ0
YW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBtb3ZlKHNyYywgZGVzdCk7
Ci0gICAgICAgIHVyc2hpZnQzMihzaGlmdGFtb3VudCwgZGVzdCk7Ci0gICAgfQotCi0gICAgQ2Fs
bCBjYWxsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmNhbGwoKSwg
Q2FsbDo6TGlua2FibGUpOwotICAgIH0KLQotICAgIENhbGwgbmVhclRhaWxDYWxsKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmp1bXAoKSwgQ2FsbDo6TGlua2FibGVO
ZWFyVGFpbCk7Ci0gICAgfQotCi0gICAgQ2FsbCBuZWFyQ2FsbCgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5jYWxsKCksIENhbGw6OkxpbmthYmxlTmVhcik7Ci0gICAg
fQotCi0gICAgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFyZ2V0KQotICAgIHsKLSAgICAgICAgcmV0
dXJuIENhbGwobV9hc3NlbWJsZXIuY2FsbCh0YXJnZXQpLCBDYWxsOjpOb25lKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGNhbGwoQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgUmVnaXN0ZXJJ
RCB0YXJnZXQgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5vZmZzZXQsIHRhcmdldCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNl
KG1fYXNzZW1ibGVyLm1heEluc3RydWN0aW9uU2l6ZSArIDIpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5icmFuY2goSlNSX09QQ09ERSwgdGFyZ2V0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHRhcmdldCk7Ci0gICAgfQotCi0gICAgdm9pZCBicmVh
a3BvaW50KCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNlKG1fYXNzZW1i
bGVyLm1heEluc3RydWN0aW9uU2l6ZSArIDIpOwotICAgICAgICBtX2Fzc2VtYmxlci5ia3B0KCk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoUHRy
V2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRh
TGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRy
dXN0ZWRJbW1QdHIoMCkpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIGRhdGFUZW1wUmVnaXN0
ZXIgPSBjbGFpbVNjcmF0Y2goKTsKLQotICAgICAgICBtX2Fzc2VtYmxlci5lbnN1cmVTcGFjZSht
X2Fzc2VtYmxlci5tYXhJbnN0cnVjdGlvblNpemUgKyAxMCwgMiAqIHNpemVvZih1aW50MzJfdCkp
OwotICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkYXRhVGVt
cFJlZ2lzdGVyLCBsZWZ0LCBTSDRDb25kaXRpb24oY29uZCkpOwotICAgICAgICByZWxlYXNlU2Ny
YXRjaChkYXRhVGVtcFJlZ2lzdGVyKTsKLQotICAgICAgICBpZiAoY29uZCA9PSBOb3RFcXVhbCkK
LSAgICAgICAgICAgIHJldHVybiBicmFuY2hGYWxzZSgpOwotICAgICAgICByZXR1cm4gYnJhbmNo
VHJ1ZSgpOwotICAgIH0KLQotICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1
c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCi0gICAgewot
ICAgICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotCi0gICAgICAgIG1fYXNz
ZW1ibGVyLmxvYWRDb25zdGFudChsZWZ0Lm9mZnNldCwgc2NyKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkbFJlZ1JlZyhsZWZ0LmJhc2UsIHNjcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmxN
ZW1SZWcoc2NyLCBzY3IpOwotICAgICAgICBSZWdpc3RlcklEIHNjcjEgPSBjbGFpbVNjcmF0Y2go
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIubWF4SW5zdHJ1
Y3Rpb25TaXplICsgMTAsIDIgKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgZGF0YUxhYmVs
ID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgc2NyMSk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmNtcGxSZWdSZWcoc2NyMSwgc2NyLCBTSDRDb25kaXRpb24oY29uZCkpOwotICAgICAg
ICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IxKTsKLQot
ICAgICAgICBpZiAoY29uZCA9PSBOb3RFcXVhbCkKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hG
YWxzZSgpOwotICAgICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgpOwotICAgIH0KLQotICAgIEp1bXAg
YnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQs
IERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9
IFRydXN0ZWRJbW0zMigwKSkKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1T
Y3JhdGNoKCk7Ci0KLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KGxlZnQub2Zmc2V0
LCBzY3IpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGRsUmVnUmVnKGxlZnQuYmFzZSwgc2NyKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhzY3IsIHNjcik7Ci0gICAgICAgIFJlZ2lz
dGVySUQgc2NyMSA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICBtX2Fzc2VtYmxlci5lbnN1cmVT
cGFjZShtX2Fzc2VtYmxlci5tYXhJbnN0cnVjdGlvblNpemUgKyAxMCwgMiAqIHNpemVvZih1aW50
MzJfdCkpOwotICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZh
bHVlLCBzY3IxKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3IxLCBzY3IsIFNI
NENvbmRpdGlvbihjb25kKSk7Ci0gICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7Ci0gICAgICAg
IHJlbGVhc2VTY3JhdGNoKHNjcjEpOwotCi0gICAgICAgIHJldHVybiAoY29uZCA9PSBOb3RFcXVh
bCkgPyBicmFuY2hGYWxzZSgpIDogYnJhbmNoVHJ1ZSgpOwotICAgIH0KLQotICAgIHZvaWQgcmV0
KCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnJldCgpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5ub3AoKTsKLSAgICB9Ci0KLSAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRoUGF0Y2goVHJ1
c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQotICAgIHsK
LSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgRGF0YUxh
YmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsVmFsdWUsIHNjcik7Ci0gICAgICAg
IHN0b3JlMzIoc2NyLCBhZGRyZXNzKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAg
ICAgICAgcmV0dXJuIGxhYmVsOwotICAgIH0KLQotICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldp
dGhQYXRjaChJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykgeyByZXR1cm4gc3RvcmVQdHJXaXRoUGF0
Y2goVHJ1c3RlZEltbVB0cigwKSwgYWRkcmVzcyk7IH0KLQotICAgIGludCBzaXplT2ZDb25zdGFu
dFBvb2woKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXNzZW1ibGVyLnNpemVPZkNvbnN0YW50
UG9vbCgpOwotICAgIH0KLQotICAgIENhbGwgdGFpbFJlY3Vyc2l2ZUNhbGwoKQotICAgIHsKLSAg
ICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKLQotICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2FkQ29uc3RhbnRVblJldXNhYmxlKDB4MCwgc2NyLCB0cnVlKTsKLSAgICAgICAgSnVt
cCBtX2p1bXAgPSBKdW1wKG1fYXNzZW1ibGVyLmptcChzY3IpKTsKLSAgICAgICAgcmVsZWFzZVNj
cmF0Y2goc2NyKTsKLQotICAgICAgICByZXR1cm4gQ2FsbDo6ZnJvbVRhaWxKdW1wKG1fanVtcCk7
Ci0gICAgfQotCi0gICAgQ2FsbCBtYWtlVGFpbFJlY3Vyc2l2ZUNhbGwoSnVtcCBvbGRKdW1wKQot
ICAgIHsKLSAgICAgICAgb2xkSnVtcC5saW5rKHRoaXMpOwotICAgICAgICByZXR1cm4gdGFpbFJl
Y3Vyc2l2ZUNhbGwoKTsKLSAgICB9Ci0KLSAgICB2b2lkIG5vcCgpCi0gICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5ub3AoKTsKLSAgICB9Ci0KLSAgICB2b2lkIG1lbW9yeUZlbmNlKCkKLSAgICB7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN5bmNvKCk7Ci0gICAgfQotCi0gICAgdm9pZCBhYm9ydFdp
dGhSZWFzb24oQWJvcnRSZWFzb24gcmVhc29uKQotICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVk
SW1tMzIocmVhc29uKSwgU0g0UmVnaXN0ZXJzOjpyMCk7Ci0gICAgICAgIGJyZWFrcG9pbnQoKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihBYm9ydFJlYXNvbiByZWFzb24sIGlu
dHB0cl90IG1pc2MpCi0gICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihtaXNjKSwgU0g0
UmVnaXN0ZXJzOjpyMSk7Ci0gICAgICAgIGFib3J0V2l0aFJlYXNvbihyZWFzb24pOwotICAgIH0K
LQotICAgIHN0YXRpYyBGdW5jdGlvblB0ciByZWFkQ2FsbFRhcmdldChDb2RlTG9jYXRpb25DYWxs
IGNhbGwpCi0gICAgewotICAgICAgICByZXR1cm4gRnVuY3Rpb25QdHIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKCopKCk+KFNINEFzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQoY2FsbC5kYXRhTG9jYXRp
b24oKSkpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRp
b24pCi0gICAgewotICAgICAgICBTSDRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVj
dGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7Ci0g
ICAgfQotICAgIAotICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gU0g0QXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRT
aXplKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgY2FuSnVtcFJlcGxhY2VQYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2goKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgc3RhdGljIGJvb2wg
Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0KLSAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZkJyYW5jaFB0cldpdGhQ
YXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGxhYmVsLmxhYmVsQXRPZmZzZXQoMCk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0
aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCByZCwgdm9pZCogaW5pdGlhbFZh
bHVlKQotICAgIHsKLSAgICAgICAgU0g0QXNzZW1ibGVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRU
b0JyYW5jaFB0cldpdGhQYXRjaChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCByZCwg
cmVpbnRlcnByZXRfY2FzdDxpbnQ+KGluaXRpYWxWYWx1ZSkpOwotICAgIH0KLQotICAgIHN0YXRp
YyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25B
ZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cikKLSAgICB7Ci0gICAgICAgIFVOUkVBQ0hB
QkxFX0ZPUl9QTEFURk9STSgpOwotICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uTGFiZWwoKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJy
YW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyKQotICAgIHsK
LSAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0gICAgICAgIHJldHVybiBDb2Rl
TG9jYXRpb25MYWJlbCgpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBs
YWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsLCBB
ZGRyZXNzLCB2b2lkKikKLSAgICB7Ci0gICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwsIEFkZHJlc3MsIGludDMyX3Qp
Ci0gICAgewotICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICB9Ci0KLXBy
b3RlY3RlZDoKLSAgICBTSDRBc3NlbWJsZXI6OkNvbmRpdGlvbiBTSDRDb25kaXRpb24oUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNI
NEFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKTsKLSAgICB9Ci0KLSAgICBTSDRBc3NlbWJsZXI6
OkNvbmRpdGlvbiBTSDRDb25kaXRpb24oUmVzdWx0Q29uZGl0aW9uIGNvbmQpCi0gICAgewotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U0g0QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpOwot
ICAgIH0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7Ci0KLSAgICBzdGF0
aWMgdm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBDYWxsIGNhbGwsIEZ1bmN0aW9uUHRyIGZ1bmN0
aW9uKQotICAgIHsKLSAgICAgICAgaWYgKGNhbGwuaXNGbGFnU2V0KENhbGw6OlRhaWwpKQotICAg
ICAgICAgICAgU0g0QXNzZW1ibGVyOjpsaW5rSnVtcChjb2RlLCBjYWxsLm1fbGFiZWwsIGZ1bmN0
aW9uLnZhbHVlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBTSDRBc3NlbWJsZXI6Omxp
bmtDYWxsKGNvZGUsIGNhbGwubV9sYWJlbCwgZnVuY3Rpb24udmFsdWUoKSk7Ci0gICAgfQotCi0g
ICAgc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbCBjYWxsLCBDb2RlTG9j
YXRpb25MYWJlbCBkZXN0aW5hdGlvbikKLSAgICB7Ci0gICAgICAgIFNINEFzc2VtYmxlcjo6cmVs
aW5rQ2FsbChjYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVz
cygpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25D
YWxsIGNhbGwsIEZ1bmN0aW9uUHRyIGRlc3RpbmF0aW9uKQotICAgIHsKLSAgICAgICAgU0g0QXNz
ZW1ibGVyOjpyZWxpbmtDYWxsKGNhbGwuZGF0YUxvY2F0aW9uKCksIGRlc3RpbmF0aW9uLmV4ZWN1
dGFibGVBZGRyZXNzKCkpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5k
aWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaAppbmRl
eCAwNGNhMGE3Li5jNmY1M2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oCkBAIC01
OCwxMCArNTgsNiBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEZyYW1lRXh0ZW50Rm9yU2xvd1Bh
dGhDYWxsID0gMDsKIC8vIEZpcnN0IGZvdXIgYXJncyBpbiByZWdpc3RlcnMsIHJlbWFpbmluZyA0
IGFyZ3Mgb24gc3RhY2suCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsID0gMjQ7CiAKLSNlbGlmIENQVShTSDQpCi0vLyBGaXJzdCBmb3VyIGFyZ3MgaW4g
cmVnaXN0ZXJzLCByZW1haW5pbmcgNCBhcmdzIG9uIHN0YWNrLgotc3RhdGljIGNvbnN0IHNpemVf
dCBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9IDI0OwotCiAjZWxpZiBDUFUoTUlQUykK
IC8vIFRob3VnaCBhcmdzIGFyZSBpbiByZWdpc3RlcnMsIHRoZXJlIG5lZWQgdG8gYmUgc3BhY2Ug
b24gdGhlIHN0YWNrIGZvciBhbGwgYXJncy4KIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwgPSA0MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1NINEFzc2VtYmxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjIx
N2Q4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNz
ZW1ibGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMjIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQ2lzY28gU3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDA5LTIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiBDUFUoU0g0KQotCi0jaW5jbHVkZSAi
QXNzZW1ibGVyQnVmZmVyLmgiCi0jaW5jbHVkZSAiQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50
UG9vbC5oIgotI2luY2x1ZGUgIkpJVENvbXBpbGF0aW9uRWZmb3J0LmgiCi0jaW5jbHVkZSA8bGlt
aXRzLmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVk
ZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9E
YXRhTG9nLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi0jaWZuZGVmIE5ERUJVRwotI2Rl
ZmluZSBTSDRfQVNTRU1CTEVSX1RSQUNJTkcKLSNlbmRpZgotCi1uYW1lc3BhY2UgSlNDIHsKLXR5
cGVkZWYgdWludDE2X3QgU0g0V29yZDsKLQotZW51bSB7Ci0gICAgSU5WQUxJRF9PUENPREUgPSAw
eGZmZmYsCi0gICAgQUREX09QQ09ERSA9IDB4MzAwYywKLSAgICBBRERJTU1fT1BDT0RFID0gMHg3
MDAwLAotICAgIEFERENfT1BDT0RFID0gMHgzMDBlLAotICAgIEFERFZfT1BDT0RFID0gMHgzMDBm
LAotICAgIEFORF9PUENPREUgPSAweDIwMDksCi0gICAgQU5ESU1NX09QQ09ERSA9IDB4YzkwMCwK
LSAgICBESVYwX09QQ09ERSA9IDB4MjAwNywKLSAgICBESVYxX09QQ09ERSA9IDB4MzAwNCwKLSAg
ICBCRl9PUENPREUgPSAweDhiMDAsCi0gICAgQkZTX09QQ09ERSA9IDB4OGYwMCwKLSAgICBCUkFf
T1BDT0RFID0gMHhhMDAwLAotICAgIEJSQUZfT1BDT0RFID0gMHgwMDIzLAotICAgIE5PUF9PUENP
REUgPSAweDAwMDksCi0gICAgQlNSX09QQ09ERSA9IDB4YjAwMCwKLSAgICBSVFNfT1BDT0RFID0g
MHgwMDBiLAotICAgIEJUX09QQ09ERSA9IDB4ODkwMCwKLSAgICBCVFNfT1BDT0RFID0gMHg4ZDAw
LAotICAgIEJTUkZfT1BDT0RFID0gMHgwMDAzLAotICAgIEJSS19PUENPREUgPSAweDAwM2IsCi0g
ICAgRlRSQ19PUENPREUgPSAweGYwM2QsCi0gICAgQ01QRVFfT1BDT0RFID0gMHgzMDAwLAotICAg
IENNUEVRSU1NX09QQ09ERSA9IDB4ODgwMCwKLSAgICBDTVBHRV9PUENPREUgPSAweDMwMDMsCi0g
ICAgQ01QR1RfT1BDT0RFID0gMHgzMDA3LAotICAgIENNUEhJX09QQ09ERSA9IDB4MzAwNiwKLSAg
ICBDTVBIU19PUENPREUgPSAweDMwMDIsCi0gICAgQ01QUExfT1BDT0RFID0gMHg0MDE1LAotICAg
IENNUFBaX09QQ09ERSA9IDB4NDAxMSwKLSAgICBDTVBTVFJfT1BDT0RFID0gMHgyMDBjLAotICAg
IERUX09QQ09ERSA9IDB4NDAxMCwKLSAgICBGQ01QRVFfT1BDT0RFID0gMHhmMDA0LAotICAgIEZD
TVBHVF9PUENPREUgPSAweGYwMDUsCi0gICAgRk1PVl9PUENPREUgPSAweGYwMGMsCi0gICAgRkFE
RF9PUENPREUgPSAweGYwMDAsCi0gICAgRk1VTF9PUENPREUgPSAweGYwMDIsCi0gICAgRlNVQl9P
UENPREUgPSAweGYwMDEsCi0gICAgRkRJVl9PUENPREUgPSAweGYwMDMsCi0gICAgRk5FR19PUENP
REUgPSAweGYwNGQsCi0gICAgSk1QX09QQ09ERSA9IDB4NDAyYiwKLSAgICBKU1JfT1BDT0RFID0g
MHg0MDBiLAotICAgIExEU1BSX09QQ09ERSA9IDB4NDAyYSwKLSAgICBMRFNMUFJfT1BDT0RFID0g
MHg0MDI2LAotICAgIE1PVl9PUENPREUgPSAweDYwMDMsCi0gICAgTU9WSU1NX09QQ09ERSA9IDB4
ZTAwMCwKLSAgICBNT1ZCX1dSSVRFX1JOX09QQ09ERSA9IDB4MjAwMCwKLSAgICBNT1ZCX1dSSVRF
X1JOREVDX09QQ09ERSA9IDB4MjAwNCwKLSAgICBNT1ZCX1dSSVRFX1IwUk5fT1BDT0RFID0gMHgw
MDA0LAotICAgIE1PVkJfV1JJVEVfT0ZGR0JSX09QQ09ERSA9IDB4YzAwMCwKLSAgICBNT1ZCX1dS
SVRFX09GRlJOX09QQ09ERSA9IDB4ODAwMCwKLSAgICBNT1ZCX1JFQURfUk1fT1BDT0RFID0gMHg2
MDAwLAotICAgIE1PVkJfUkVBRF9STUlOQ19PUENPREUgPSAweDYwMDQsCi0gICAgTU9WQl9SRUFE
X1IwUk1fT1BDT0RFID0gMHgwMDBjLAotICAgIE1PVkJfUkVBRF9PRkZHQlJfT1BDT0RFID0gMHhj
NDAwLAotICAgIE1PVkJfUkVBRF9PRkZSTV9PUENPREUgPSAweDg0MDAsCi0gICAgTU9WTF9XUklU
RV9STl9PUENPREUgPSAweDIwMDIsCi0gICAgTU9WTF9XUklURV9STkRFQ19PUENPREUgPSAweDIw
MDYsCi0gICAgTU9WTF9XUklURV9SMFJOX09QQ09ERSA9IDB4MDAwNiwKLSAgICBNT1ZMX1dSSVRF
X09GRkdCUl9PUENPREUgPSAweGMyMDAsCi0gICAgTU9WTF9XUklURV9PRkZSTl9PUENPREUgPSAw
eDEwMDAsCi0gICAgTU9WTF9SRUFEX1JNX09QQ09ERSA9IDB4NjAwMiwKLSAgICBNT1ZMX1JFQURf
Uk1JTkNfT1BDT0RFID0gMHg2MDA2LAotICAgIE1PVkxfUkVBRF9SMFJNX09QQ09ERSA9IDB4MDAw
ZSwKLSAgICBNT1ZMX1JFQURfT0ZGR0JSX09QQ09ERSA9IDB4YzYwMCwKLSAgICBNT1ZMX1JFQURf
T0ZGUENfT1BDT0RFID0gMHhkMDAwLAotICAgIE1PVkxfUkVBRF9PRkZSTV9PUENPREUgPSAweDUw
MDAsCi0gICAgTU9WV19XUklURV9STl9PUENPREUgPSAweDIwMDEsCi0gICAgTU9WV19XUklURV9S
MFJOX09QQ09ERSA9IDB4MDAwNSwKLSAgICBNT1ZXX1JFQURfUk1fT1BDT0RFID0gMHg2MDAxLAot
ICAgIE1PVldfUkVBRF9STUlOQ19PUENPREUgPSAweDYwMDUsCi0gICAgTU9WV19SRUFEX1IwUk1f
T1BDT0RFID0gMHgwMDBkLAotICAgIE1PVldfUkVBRF9PRkZSTV9PUENPREUgPSAweDg1MDAsCi0g
ICAgTU9WV19SRUFEX09GRlBDX09QQ09ERSA9IDB4OTAwMCwKLSAgICBNT1ZBX1JFQURfT0ZGUENf
T1BDT0RFID0gMHhjNzAwLAotICAgIE1PVlRfT1BDT0RFID0gMHgwMDI5LAotICAgIE1VTExfT1BD
T0RFID0gMHgwMDA3LAotICAgIERNVUxMX0xfT1BDT0RFID0gMHgzMDA1LAotICAgIFNUU01BQ0xf
T1BDT0RFID0gMHgwMDFhLAotICAgIFNUU01BQ0hfT1BDT0RFID0gMHgwMDBhLAotICAgIERNVUxT
TF9PUENPREUgPSAweDMwMGQsCi0gICAgTkVHX09QQ09ERSA9IDB4NjAwYiwKLSAgICBORUdDX09Q
Q09ERSA9IDB4NjAwYSwKLSAgICBOT1RfT1BDT0RFID0gMHg2MDA3LAotICAgIE9SX09QQ09ERSA9
IDB4MjAwYiwKLSAgICBPUklNTV9PUENPREUgPSAweGNiMDAsCi0gICAgT1JCSU1NX09QQ09ERSA9
IDB4Y2YwMCwKLSAgICBTRVRTX09QQ09ERSA9IDB4MDA1OCwKLSAgICBTRVRUX09QQ09ERSA9IDB4
MDAxOCwKLSAgICBTSEFEX09QQ09ERSA9IDB4NDAwYywKLSAgICBTSEFMX09QQ09ERSA9IDB4NDAy
MCwKLSAgICBTSEFSX09QQ09ERSA9IDB4NDAyMSwKLSAgICBTSExEX09QQ09ERSA9IDB4NDAwZCwK
LSAgICBTSExMX09QQ09ERSA9IDB4NDAwMCwKLSAgICBTSExMMl9PUENPREUgPSAweDQwMDgsCi0g
ICAgU0hMTDhfT1BDT0RFID0gMHg0MDE4LAotICAgIFNITEwxNl9PUENPREUgPSAweDQwMjgsCi0g
ICAgU0hMUl9PUENPREUgPSAweDQwMDEsCi0gICAgU0hMUjJfT1BDT0RFID0gMHg0MDA5LAotICAg
IFNITFI4X09QQ09ERSA9IDB4NDAxOSwKLSAgICBTSExSMTZfT1BDT0RFID0gMHg0MDI5LAotICAg
IFNUU1BSX09QQ09ERSA9IDB4MDAyYSwKLSAgICBTVFNMUFJfT1BDT0RFID0gMHg0MDIyLAotICAg
IEZMT0FUX09QQ09ERSA9IDB4ZjAyZCwKLSAgICBTVUJfT1BDT0RFID0gMHgzMDA4LAotICAgIFNV
QkNfT1BDT0RFID0gMHgzMDBhLAotICAgIFNVQlZfT1BDT0RFID0gMHgzMDBiLAotICAgIFRTVF9P
UENPREUgPSAweDIwMDgsCi0gICAgVFNUSU1NX09QQ09ERSA9IDB4YzgwMCwKLSAgICBUU1RCX09Q
Q09ERSA9IDB4Y2MwMCwKLSAgICBFWFRVQl9PUENPREUgPSAweDYwMGMsCi0gICAgRVhUVVdfT1BD
T0RFID0gMHg2MDBkLAotICAgIFhPUl9PUENPREUgPSAweDIwMGEsCi0gICAgWE9SSU1NX09QQ09E
RSA9IDB4Y2EwMCwKLSAgICBYT1JCX09QQ09ERSA9IDB4Y2UwMCwKLSAgICBGTU9WU19SRUFEX1JN
X0lOQ19PUENPREUgPSAweGYwMDksCi0gICAgRk1PVlNfUkVBRF9STV9PUENPREUgPSAweGYwMDgs
Ci0gICAgRk1PVlNfUkVBRF9SMFJNX09QQ09ERSA9IDB4ZjAwNiwKLSAgICBGTU9WU19XUklURV9S
Tl9PUENPREUgPSAweGYwMGEsCi0gICAgRk1PVlNfV1JJVEVfUk5fREVDX09QQ09ERSA9IDB4ZjAw
YiwKLSAgICBGTU9WU19XUklURV9SMFJOX09QQ09ERSA9IDB4ZjAwNywKLSAgICBGQ05WRFNfRFJN
X0ZQVUxfT1BDT0RFID0gMHhmMGJkLAotICAgIEZDTlZTRF9GUFVMX0RSTl9PUENPREUgPSAweGYw
YWQsCi0gICAgTERTX1JNX0ZQVUxfT1BDT0RFID0gMHg0MDVhLAotICAgIEZMRFNfRlJNX0ZQVUxf
T1BDT0RFID0gMHhmMDFkLAotICAgIFNUU19GUFVMX1JOX09QQ09ERSA9IDB4MDA1YSwKLSAgICBG
U1RTX0ZQVUxfRlJOX09QQ09ERSA9IDB4RjAwZCwKLSAgICBMRFNGUFNDUl9PUENPREUgPSAweDQw
NmEsCi0gICAgU1RTRlBTQ1JfT1BDT0RFID0gMHgwMDZhLAotICAgIExEU1JNRlBVTF9PUENPREUg
PSAweDQwNWEsCi0gICAgRlNUU0ZQVUxGUk5fT1BDT0RFID0gMHhmMDBkLAotICAgIEZBQlNfT1BD
T0RFID0gMHhmMDVkLAotICAgIEZTUVJUX09QQ09ERSA9IDB4ZjA2ZCwKLSAgICBGU0NIR19PUENP
REUgPSAweGYzZmQsCi0gICAgQ0xSVF9PUENPREUgPSA4LAotICAgIFNZTkNPX09QQ09ERSA9IDB4
MDBhYiwKLX07Ci0KLW5hbWVzcGFjZSBTSDRSZWdpc3RlcnMgewotdHlwZWRlZiBlbnVtIHsKLSAg
ICByMCwKLSAgICByMSwKLSAgICByMiwKLSAgICByMywKLSAgICByNCwKLSAgICByNSwKLSAgICBy
NiwKLSAgICByNywKLSAgICByOCwKLSAgICByOSwKLSAgICByMTAsCi0gICAgcjExLAotICAgIHIx
MiwKLSAgICByMTMsCi0gICAgcjE0LCBmcCA9IHIxNCwKLSAgICByMTUsIHNwID0gcjE1LAotICAg
IHBjLAotICAgIHByLAotfSBSZWdpc3RlcklEOwotCi10eXBlZGVmIGVudW0gewotICAgIGZyMCwg
ZHIwID0gZnIwLAotICAgIGZyMSwKLSAgICBmcjIsIGRyMiA9IGZyMiwKLSAgICBmcjMsCi0gICAg
ZnI0LCBkcjQgPSBmcjQsCi0gICAgZnI1LAotICAgIGZyNiwgZHI2ID0gZnI2LAotICAgIGZyNywK
LSAgICBmcjgsIGRyOCA9IGZyOCwKLSAgICBmcjksCi0gICAgZnIxMCwgZHIxMCA9IGZyMTAsCi0g
ICAgZnIxMSwKLSAgICBmcjEyLCBkcjEyID0gZnIxMiwKLSAgICBmcjEzLAotICAgIGZyMTQsIGRy
MTQgPSBmcjE0LAotICAgIGZyMTUsCi19IEZQUmVnaXN0ZXJJRDsKLX0KLQotaW5saW5lIHVpbnQx
Nl90IGdldE9wY29kZUdyb3VwMSh1aW50MTZfdCBvcGMsIGludCBybSwgaW50IHJuKQotewotICAg
IHJldHVybiAob3BjIHwgKChybSAmIDB4ZikgPDwgOCkgfCAoKHJuICYgMHhmKSA8PCA0KSk7Ci19
Ci0KLWlubGluZSB1aW50MTZfdCBnZXRPcGNvZGVHcm91cDIodWludDE2X3Qgb3BjLCBpbnQgcm0p
Ci17Ci0gICAgcmV0dXJuIChvcGMgfCAoKHJtICYgMHhmKSA8PCA4KSk7Ci19Ci0KLWlubGluZSB1
aW50MTZfdCBnZXRPcGNvZGVHcm91cDModWludDE2X3Qgb3BjLCBpbnQgcm0sIGludCBybikKLXsK
LSAgICByZXR1cm4gKG9wYyB8ICgocm0gJiAweGYpIDw8IDgpIHwgKHJuICYgMHhmZikpOwotfQot
Ci1pbmxpbmUgdWludDE2X3QgZ2V0T3Bjb2RlR3JvdXA0KHVpbnQxNl90IG9wYywgaW50IHJtLCBp
bnQgcm4sIGludCBvZmZzZXQpCi17Ci0gICAgcmV0dXJuIChvcGMgfCAoKHJtICYgMHhmKSA8PCA4
KSB8ICgocm4gJiAweGYpIDw8IDQpIHwgKG9mZnNldCAmIDB4ZikpOwotfQotCi1pbmxpbmUgdWlu
dDE2X3QgZ2V0T3Bjb2RlR3JvdXA1KHVpbnQxNl90IG9wYywgaW50IHJtKQotewotICAgIHJldHVy
biAob3BjIHwgKHJtICYgMHhmZikpOwotfQotCi1pbmxpbmUgdWludDE2X3QgZ2V0T3Bjb2RlR3Jv
dXA2KHVpbnQxNl90IG9wYywgaW50IHJtKQotewotICAgIHJldHVybiAob3BjIHwgKHJtICYgMHhm
ZmYpKTsKLX0KLQotaW5saW5lIHVpbnQxNl90IGdldE9wY29kZUdyb3VwNyh1aW50MTZfdCBvcGMs
IGludCBybSkKLXsKLSAgICByZXR1cm4gKG9wYyB8ICgocm0gJiAweDcpIDw8IDkpKTsKLX0KLQot
aW5saW5lIHVpbnQxNl90IGdldE9wY29kZUdyb3VwOCh1aW50MTZfdCBvcGMsIGludCBybSwgaW50
IHJuKQotewotICAgIHJldHVybiAob3BjIHwgKChybSAmIDB4NykgPDwgOSkgfCAoKHJuICYgMHg3
KSA8PCA1KSk7Ci19Ci0KLWlubGluZSB1aW50MTZfdCBnZXRPcGNvZGVHcm91cDkodWludDE2X3Qg
b3BjLCBpbnQgcm0sIGludCBybikKLXsKLSAgICByZXR1cm4gKG9wYyB8ICgocm0gJiAweGYpIDw8
IDgpIHwgKChybiAmIDB4NykgPDwgNSkpOwotfQotCi1pbmxpbmUgdWludDE2X3QgZ2V0T3Bjb2Rl
R3JvdXAxMCh1aW50MTZfdCBvcGMsIGludCBybSwgaW50IHJuKQotewotICAgIHJldHVybiAob3Bj
IHwgKChybSAmIDB4NykgPDwgOSkgfCAoKHJuICYgMHhmKSA8PCA0KSk7Ci19Ci0KLWlubGluZSB1
aW50MTZfdCBnZXRPcGNvZGVHcm91cDExKHVpbnQxNl90IG9wYywgaW50IHJtLCBpbnQgcm4pCi17
Ci0gICAgcmV0dXJuIChvcGMgfCAoKHJtICYgMHhmKSA8PCA0KSB8IChybiAmIDB4ZikpOwotfQot
Ci1pbmxpbmUgdWludDE2X3QgZ2V0Um4odWludDE2X3QgeCkKLXsKLSAgICByZXR1cm4gKCh4ICYg
MHhmMDApID4+IDgpOwotfQotCi1pbmxpbmUgdWludDE2X3QgZ2V0Um0odWludDE2X3QgeCkKLXsK
LSAgICByZXR1cm4gKCh4ICYgMHhmMCkgPj4gNCk7Ci19Ci0KLWlubGluZSB1aW50MTZfdCBnZXRE
aXNwKHVpbnQxNl90IHgpCi17Ci0gICAgcmV0dXJuICh4ICYgMHhmKTsKLX0KLQotaW5saW5lIHVp
bnQxNl90IGdldEltbTgodWludDE2X3QgeCkKLXsKLSAgICByZXR1cm4gKHggJiAweGZmKTsKLX0K
LQotaW5saW5lIHVpbnQxNl90IGdldEltbTEyKHVpbnQxNl90IHgpCi17Ci0gICAgcmV0dXJuICh4
ICYgMHhmZmYpOwotfQotCi1pbmxpbmUgdWludDE2X3QgZ2V0RFJuKHVpbnQxNl90IHgpCi17Ci0g
ICAgcmV0dXJuICgoeCAmIDB4ZTAwKSA+PiA5KTsKLX0KLQotaW5saW5lIHVpbnQxNl90IGdldERS
bSh1aW50MTZfdCB4KQotewotICAgIHJldHVybiAoKHggJiAweGUwKSA+PiA1KTsKLX0KLQotY2xh
c3MgU0g0QXNzZW1ibGVyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFNINFJlZ2lzdGVyczo6UmVn
aXN0ZXJJRCBSZWdpc3RlcklEOwotICAgIHR5cGVkZWYgU0g0UmVnaXN0ZXJzOjpGUFJlZ2lzdGVy
SUQgRlBSZWdpc3RlcklEOwotICAgIHR5cGVkZWYgQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50
UG9vbDw1MTIsIDQsIDIsIFNINEFzc2VtYmxlcj4gU0g0QnVmZmVyOwotICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIHNjcmF0Y2hSZWcxID0gU0g0UmVnaXN0ZXJzOjpyMzsKLSAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnMiA9IFNINFJlZ2lzdGVyczo6cjExOwotICAgIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBtYXhJbnN0cnVjdGlvblNpemUgPSAxNjsKLQotICAgIHN0YXRp
YyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBmaXJzdFJlZ2lzdGVyKCkgeyByZXR1cm4gU0g0UmVnaXN0
ZXJzOjpyMDsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBsYXN0UmVnaXN0ZXIo
KSB7IHJldHVybiBTSDRSZWdpc3RlcnM6OnIxNTsgfQotCi0gICAgc3RhdGljIGNvbnN0ZXhwciBG
UFJlZ2lzdGVySUQgZmlyc3RGUFJlZ2lzdGVyKCkgeyByZXR1cm4gU0g0UmVnaXN0ZXJzOjpkcjA7
IH0KLSAgICBzdGF0aWMgY29uc3RleHByIEZQUmVnaXN0ZXJJRCBsYXN0RlBSZWdpc3RlcigpIHsg
cmV0dXJuIFNINFJlZ2lzdGVyczo6ZHIxNDsgfQotCi0gICAgZW51bSB7Ci0gICAgICAgIHBhZEZv
ckFsaWduOCA9IDB4MDAsCi0gICAgICAgIHBhZEZvckFsaWduMTYgPSAweDAwMDksCi0gICAgICAg
IHBhZEZvckFsaWduMzIgPSAweDAwMDkwMDA5LAotICAgIH07Ci0KLSAgICBlbnVtIEp1bXBUeXBl
IHsKLSAgICAgICAgSnVtcEZhciwKLSAgICAgICAgSnVtcE5lYXIKLSAgICB9OwotCi0gICAgU0g0
QXNzZW1ibGVyKCkKLSAgICAgICAgOiBtX2NsYWltc2NyYXRjaFJlZygweDApCi0gICAgICAgICwg
bV9pbmRleE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKLSAgICAgICAgLCBtX2luZGV4T2ZUYWls
T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQotICAgIHsKLSAgICB9Ci0KLSAgICBTSDRCdWZmZXIm
IGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0KLSAgICAvLyBTSDQgY29uZGl0aW9uIGNv
ZGVzCi0gICAgdHlwZWRlZiBlbnVtIHsKLSAgICAgICAgRVEgPSAweDAsIC8vIEVxdWFsCi0gICAg
ICAgIE5FID0gMHgxLCAvLyBOb3QgRXF1YWwKLSAgICAgICAgSFMgPSAweDIsIC8vIFVuc2lnbmVk
IEdyZWF0ZXIgVGhhbiBlcXVhbAotICAgICAgICBISSA9IDB4MywgLy8gVW5zaWduZWQgR3JlYXRl
ciBUaGFuCi0gICAgICAgIExTID0gMHg0LCAvLyBVbnNpZ25lZCBMb3dlciBvciBTYW1lCi0gICAg
ICAgIExJID0gMHg1LCAvLyBVbnNpZ25lZCBMb3dlcgotICAgICAgICBHRSA9IDB4NiwgLy8gR3Jl
YXRlciBvciBFcXVhbAotICAgICAgICBMVCA9IDB4NywgLy8gTGVzcyBUaGFuCi0gICAgICAgIEdU
ID0gMHg4LCAvLyBHcmVhdGVyIFRoYW4KLSAgICAgICAgTEUgPSAweDksIC8vIExlc3Mgb3IgRXF1
YWwKLSAgICAgICAgT0YgPSAweGEsIC8vIE92ZXJGbG93Ci0gICAgICAgIFNJID0gMHhiLCAvLyBT
aWduZWQKLSAgICAgICAgTlMgPSAweGMsIC8vIE5vdCBTaWduZWQKLSAgICAgICAgRVFVPSAweGQs
IC8vIEVxdWFsIG9yIHVub3JkZXJlZChOYU4pCi0gICAgICAgIE5FVT0gMHhlLAotICAgICAgICBH
VFU9IDB4ZiwKLSAgICAgICAgR0VVPSAweDEwLAotICAgICAgICBMVFU9IDB4MTEsCi0gICAgICAg
IExFVT0gMHgxMiwKLSAgICB9IENvbmRpdGlvbjsKLQotICAgIC8vIE9wYXF1ZSBsYWJlbCB0eXBl
cwotcHVibGljOgotICAgIGJvb2wgaXNJbW1lZGlhdGUoaW50IGNvbnN0YW50KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuICgoY29uc3RhbnQgPD0gMTI3KSAmJiAoY29uc3RhbnQgPj0gLTEyOCkpOwot
ICAgIH0KLQotICAgIFJlZ2lzdGVySUQgY2xhaW1TY3JhdGNoKCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVCgobV9jbGFpbXNjcmF0Y2hSZWcgIT0gMHgzKSk7Ci0KLSAgICAgICAgaWYgKCEobV9jbGFp
bXNjcmF0Y2hSZWcgJiAweDEpKSB7Ci0gICAgICAgICAgICBtX2NsYWltc2NyYXRjaFJlZyA9ICht
X2NsYWltc2NyYXRjaFJlZyB8IDB4MSk7Ci0gICAgICAgICAgICByZXR1cm4gc2NyYXRjaFJlZzE7
Ci0gICAgICAgIH0KLQotICAgICAgICBtX2NsYWltc2NyYXRjaFJlZyA9IChtX2NsYWltc2NyYXRj
aFJlZyB8IDB4Mik7Ci0gICAgICAgIHJldHVybiBzY3JhdGNoUmVnMjsKLSAgICB9Ci0KLSAgICB2
b2lkIHJlbGVhc2VTY3JhdGNoKFJlZ2lzdGVySUQgc2NyYXRjaFIpCi0gICAgewotICAgICAgICBp
ZiAoc2NyYXRjaFIgPT0gc2NyYXRjaFJlZzEpCi0gICAgICAgICAgICBtX2NsYWltc2NyYXRjaFJl
ZyA9IChtX2NsYWltc2NyYXRjaFJlZyAmIDB4Mik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fY2xhaW1zY3JhdGNoUmVnID0gKG1fY2xhaW1zY3JhdGNoUmVnICYgMHgxKTsKLSAgICB9Ci0K
LSAgICAvLyBTdGFjayBvcGVyYXRpb25zCi0KLSAgICB2b2lkIHB1c2hSZWcoUmVnaXN0ZXJJRCBy
ZWcpCi0gICAgewotICAgICAgICBpZiAocmVnID09IFNINFJlZ2lzdGVyczo6cHIpIHsKLSAgICAg
ICAgICAgIG9uZVNob3J0T3AoZ2V0T3Bjb2RlR3JvdXAyKFNUU0xQUl9PUENPREUsIFNINFJlZ2lz
dGVyczo6c3ApKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIG9u
ZVNob3J0T3AoZ2V0T3Bjb2RlR3JvdXAxKE1PVkxfV1JJVEVfUk5ERUNfT1BDT0RFLCBTSDRSZWdp
c3RlcnM6OnNwLCByZWcpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHBvcFJlZyhSZWdpc3RlcklEIHJl
ZykKLSAgICB7Ci0gICAgICAgIGlmIChyZWcgPT0gU0g0UmVnaXN0ZXJzOjpwcikgewotICAgICAg
ICAgICAgb25lU2hvcnRPcChnZXRPcGNvZGVHcm91cDIoTERTTFBSX09QQ09ERSwgU0g0UmVnaXN0
ZXJzOjpzcCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgb25l
U2hvcnRPcChnZXRPcGNvZGVHcm91cDEoTU9WTF9SRUFEX1JNSU5DX09QQ09ERSwgcmVnLCBTSDRS
ZWdpc3RlcnM6OnNwKSk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3Z0KFJlZ2lzdGVySUQgZHN0KQot
ICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXAyKE1PVlRfT1BDT0RF
LCBkc3QpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgLy8gQXJpdGht
ZXRpYyBvcGVyYXRpb25zCi0KLSAgICB2b2lkIGFkZGxSZWdSZWcoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3Jv
dXAxKEFERF9PUENPREUsIGRzdCwgc3JjKTsKLSAgICAgICAgb25lU2hvcnRPcChvcGMpOwotICAg
IH0KLQotICAgIHZvaWQgYWRkY2xSZWdSZWcoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0
KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXAxKEFERENfT1BD
T0RFLCBkc3QsIHNyYyk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGFkZHZsUmVnUmVnKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0g
ICAgICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdyb3VwMShBRERWX09QQ09ERSwgZHN0LCBz
cmMpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBhZGRsSW1t
OHIoaW50IGltbTgsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChpbW04
IDw9IDEyNykgJiYgKGltbTggPj0gLTEyOCkpOwotCi0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdl
dE9wY29kZUdyb3VwMyhBRERJTU1fT1BDT0RFLCBkc3QsIGltbTgpOwotICAgICAgICBvbmVTaG9y
dE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBhbmRsUmVnUmVnKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdy
b3VwMShBTkRfT1BDT0RFLCBkc3QsIHNyYyk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGFuZGxJbW04cihpbnQgaW1tOCwgUmVnaXN0ZXJJRCBkc3QpCi0gICAg
ewotICAgICAgICBBU1NFUlQoKGltbTggPD0gMjU1KSAmJiAoaW1tOCA+PSAwKSk7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQoZHN0LCBkc3QgPT0gU0g0UmVnaXN0ZXJzOjpyMCk7Ci0KLSAgICAgICAg
dWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXA1KEFORElNTV9PUENPREUsIGltbTgpOwotICAg
ICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBkaXYxbFJlZ1JlZyhSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMg
PSBnZXRPcGNvZGVHcm91cDEoRElWMV9PUENPREUsIGRzdCwgc3JjKTsKLSAgICAgICAgb25lU2hv
cnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgZGl2MGxSZWdSZWcoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2Rl
R3JvdXAxKERJVjBfT1BDT0RFLCBkc3QsIHNyYyk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsK
LSAgICB9Ci0KLSAgICB2b2lkIG5vdGxSZWcoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0
KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXAxKE5PVF9PUENP
REUsIGRzdCwgc3JjKTsKLSAgICAgICAgb25lU2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZv
aWQgb3JsUmVnUmVnKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAg
ICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdyb3VwMShPUl9PUENPREUsIGRzdCwgc3JjKTsK
LSAgICAgICAgb25lU2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgb3JsSW1tOHIoaW50
IGltbTgsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChpbW04IDw9IDI1
NSkgJiYgKGltbTggPj0gMCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGRzdCwgZHN0ID09IFNI
NFJlZ2lzdGVyczo6cjApOwotCi0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdyb3Vw
NShPUklNTV9PUENPREUsIGltbTgpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQot
Ci0gICAgdm9pZCBzdWJsUmVnUmVnKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKLSAg
ICB7Ci0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdyb3VwMShTVUJfT1BDT0RFLCBk
c3QsIHNyYyk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN1
YnZsUmVnUmVnKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAg
IHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdyb3VwMShTVUJWX09QQ09ERSwgZHN0LCBzcmMpOwot
ICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCB4b3JsUmVnUmVnKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9w
YyA9IGdldE9wY29kZUdyb3VwMShYT1JfT1BDT0RFLCBkc3QsIHNyYyk7Ci0gICAgICAgIG9uZVNo
b3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIHhvcmxJbW04cihpbnQgaW1tOCwgUmVnaXN0
ZXJJRCBkc3QpCi0gICAgewotICAgICAgICBBU1NFUlQoKGltbTggPD0gMjU1KSAmJiAoaW1tOCA+
PSAwKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZHN0LCBkc3QgPT0gU0g0UmVnaXN0ZXJzOjpy
MCk7Ci0KLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXA1KFhPUklNTV9PUENP
REUsIGltbTgpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBz
aGxsSW1tOHIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICBzd2l0Y2gg
KGltbSkgewotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBvbmVTaG9ydE9wKGdldE9wY29k
ZUdyb3VwMihTSExMX09QQ09ERSwgZHN0KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSAyOgotICAgICAgICAgICAgb25lU2hvcnRPcChnZXRPcGNvZGVHcm91cDIoU0hMTDJfT1BD
T0RFLCBkc3QpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDg6Ci0gICAgICAg
ICAgICBvbmVTaG9ydE9wKGdldE9wY29kZUdyb3VwMihTSExMOF9PUENPREUsIGRzdCkpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMTY6Ci0gICAgICAgICAgICBvbmVTaG9ydE9w
KGdldE9wY29kZUdyb3VwMihTSExMMTZfT1BDT0RFLCBkc3QpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgbmVnKFJlZ2lzdGVySUQgZHN0LCBS
ZWdpc3RlcklEIHNyYykKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdy
b3VwMShORUdfT1BDT0RFLCBkc3QsIHNyYyk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHNobGRSZWdSZWcoUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQgclNo
aWZ0KQotICAgIHsKLSAgICAgICAgb25lU2hvcnRPcChnZXRPcGNvZGVHcm91cDEoU0hMRF9PUENP
REUsIGRzdCwgclNoaWZ0KSk7Ci0gICAgfQotCi0gICAgdm9pZCBzaGFkUmVnUmVnKFJlZ2lzdGVy
SUQgZHN0LCBSZWdpc3RlcklEIHJTaGlmdCkKLSAgICB7Ci0gICAgICAgIG9uZVNob3J0T3AoZ2V0
T3Bjb2RlR3JvdXAxKFNIQURfT1BDT0RFLCBkc3QsIHJTaGlmdCkpOwotICAgIH0KLQotICAgIHZv
aWQgc2hsckltbThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgc3dp
dGNoIChpbW0pIHsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgb25lU2hvcnRPcChnZXRP
cGNvZGVHcm91cDIoU0hMUl9PUENPREUsIGRzdCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgMjoKLSAgICAgICAgICAgIG9uZVNob3J0T3AoZ2V0T3Bjb2RlR3JvdXAyKFNITFIy
X09QQ09ERSwgZHN0KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA4OgotICAg
ICAgICAgICAgb25lU2hvcnRPcChnZXRPcGNvZGVHcm91cDIoU0hMUjhfT1BDT0RFLCBkc3QpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDE2OgotICAgICAgICAgICAgb25lU2hv
cnRPcChnZXRPcGNvZGVHcm91cDIoU0hMUjE2X09QQ09ERSwgZHN0KSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHNoYWxJbW04cihpbnQgaW1t
LCBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoaW1tKSB7Ci0gICAgICAg
IGNhc2UgMToKLSAgICAgICAgICAgIG9uZVNob3J0T3AoZ2V0T3Bjb2RlR3JvdXAyKFNIQUxfT1BD
T0RFLCBkc3QpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHZvaWQgc2hhckltbThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAg
ICAgc3dpdGNoIChpbW0pIHsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgb25lU2hvcnRP
cChnZXRPcGNvZGVHcm91cDIoU0hBUl9PUENPREUsIGRzdCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBpbXVsbFJlZ1JlZyhSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRP
cGNvZGVHcm91cDEoTVVMTF9PUENPREUsIGRzdCwgc3JjKTsKLSAgICAgICAgb25lU2hvcnRPcChv
cGMpOwotICAgIH0KLQotICAgIHZvaWQgZG11bGxSZWdSZWcoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXAx
KERNVUxMX0xfT1BDT0RFLCBkc3QsIHNyYyk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGRtdWxzbFJlZ1JlZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
c3QpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDEoRE1VTFNM
X09QQ09ERSwgZHN0LCBzcmMpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0g
ICAgdm9pZCBzdHNtYWNsKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgdWludDE2X3Qg
b3BjID0gZ2V0T3Bjb2RlR3JvdXAyKFNUU01BQ0xfT1BDT0RFLCByZWcpOwotICAgICAgICBvbmVT
aG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBzdHNtYWNoKFJlZ2lzdGVySUQgcmVnKQot
ICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXAyKFNUU01BQ0hfT1BD
T0RFLCByZWcpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgLy8gQ29t
cGFyaXNvbnMKLQotICAgIHZvaWQgY21wbFJlZ1JlZyhSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVy
SUQgcmlnaHQsIENvbmRpdGlvbiBjb25kKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChjb25kKSB7
Ci0gICAgICAgIGNhc2UgTkU6Ci0gICAgICAgICAgICBvbmVTaG9ydE9wKGdldE9wY29kZUdyb3Vw
MShDTVBFUV9PUENPREUsIHJpZ2h0LCBsZWZ0KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBHVDoKLSAgICAgICAgICAgIG9uZVNob3J0T3AoZ2V0T3Bjb2RlR3JvdXAxKENNUEdU
X09QQ09ERSwgcmlnaHQsIGxlZnQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEVROgotICAgICAgICAgICAgb25lU2hvcnRPcChnZXRPcGNvZGVHcm91cDEoQ01QRVFfT1BDT0RF
LCByaWdodCwgbGVmdCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0U6Ci0g
ICAgICAgICAgICBvbmVTaG9ydE9wKGdldE9wY29kZUdyb3VwMShDTVBHRV9PUENPREUsIHJpZ2h0
LCBsZWZ0KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIUzoKLSAgICAgICAg
ICAgIG9uZVNob3J0T3AoZ2V0T3Bjb2RlR3JvdXAxKENNUEhTX09QQ09ERSwgcmlnaHQsIGxlZnQp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEhJOgotICAgICAgICAgICAgb25l
U2hvcnRPcChnZXRPcGNvZGVHcm91cDEoQ01QSElfT1BDT0RFLCByaWdodCwgbGVmdCkpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTEk6Ci0gICAgICAgICAgICBvbmVTaG9ydE9w
KGdldE9wY29kZUdyb3VwMShDTVBISV9PUENPREUsIGxlZnQsIHJpZ2h0KSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBMUzoKLSAgICAgICAgICAgIG9uZVNob3J0T3AoZ2V0T3Bj
b2RlR3JvdXAxKENNUEhTX09QQ09ERSwgbGVmdCwgcmlnaHQpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIExFOgotICAgICAgICAgICAgb25lU2hvcnRPcChnZXRPcGNvZGVHcm91
cDEoQ01QR0VfT1BDT0RFLCBsZWZ0LCByaWdodCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgTFQ6Ci0gICAgICAgICAgICBvbmVTaG9ydE9wKGdldE9wY29kZUdyb3VwMShDTVBH
VF9PUENPREUsIGxlZnQsIHJpZ2h0KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICB2b2lkIGNtcHBsKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAg
ICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXAyKENNUFBMX09QQ09ERSwgcmVnKTsKLSAg
ICAgICAgb25lU2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgY21wcHooUmVnaXN0ZXJJ
RCByZWcpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDIoQ01Q
UFpfT1BDT0RFLCByZWcpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAg
dm9pZCBjbXBFcUltbVIwKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAg
QVNTRVJUX1VOVVNFRChkc3QsIGRzdCA9PSBTSDRSZWdpc3RlcnM6OnIwKTsKLSAgICAgICAgdWlu
dDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXA1KENNUEVRSU1NX09QQ09ERSwgaW1tKTsKLSAgICAg
ICAgb25lU2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgdGVzdGxSZWdSZWcoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0g
Z2V0T3Bjb2RlR3JvdXAxKFRTVF9PUENPREUsIGRzdCwgc3JjKTsKLSAgICAgICAgb25lU2hvcnRP
cChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgdGVzdGxJbW04cihpbnQgaW1tLCBSZWdpc3RlcklE
IGRzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoaW1tIDw9IDI1NSkgJiYgKGltbSA+PSAwKSk7
Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZHN0LCBkc3QgPT0gU0g0UmVnaXN0ZXJzOjpyMCk7Ci0K
LSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXA1KFRTVElNTV9PUENPREUsIGlt
bSk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIG5vcCgpCi0g
ICAgewotICAgICAgICBvbmVTaG9ydE9wKE5PUF9PUENPREUsIGZhbHNlKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHN5bmNvKCkKLSAgICB7Ci0gICAgICAgIG9uZVNob3J0T3AoU1lOQ09fT1BDT0RFKTsK
LSAgICB9Ci0KLSAgICB2b2lkIHNldHQoKQotICAgIHsKLSAgICAgICAgb25lU2hvcnRPcChTRVRU
X09QQ09ERSk7Ci0gICAgfQotCi0gICAgdm9pZCBjbHJ0KCkKLSAgICB7Ci0gICAgICAgIG9uZVNo
b3J0T3AoQ0xSVF9PUENPREUpOwotICAgIH0KLQotICAgIHZvaWQgZnNjaGcoKQotICAgIHsKLSAg
ICAgICAgb25lU2hvcnRPcChGU0NIR19PUENPREUpOwotICAgIH0KLQotICAgIHZvaWQgYmtwdCgp
Ci0gICAgewotICAgICAgICBvbmVTaG9ydE9wKEJSS19PUENPREUsIGZhbHNlKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGJyYW5jaCh1aW50MTZfdCBvcGMsIGludCBsYWJlbCkKLSAgICB7Ci0gICAgICAg
IHN3aXRjaCAob3BjKSB7Ci0gICAgICAgIGNhc2UgQlRfT1BDT0RFOgotICAgICAgICAgICAgQVNT
RVJUKChsYWJlbCA8PSAxMjcpICYmIChsYWJlbCA+PSAtMTI4KSk7Ci0gICAgICAgICAgICBvbmVT
aG9ydE9wKGdldE9wY29kZUdyb3VwNShCVF9PUENPREUsIGxhYmVsKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBCUkFfT1BDT0RFOgotICAgICAgICAgICAgQVNTRVJUKChsYWJl
bCA8PSAyMDQ3KSAmJiAobGFiZWwgPj0gLTIwNDgpKTsKLSAgICAgICAgICAgIG9uZVNob3J0T3Ao
Z2V0T3Bjb2RlR3JvdXA2KEJSQV9PUENPREUsIGxhYmVsKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBCRl9PUENPREU6Ci0gICAgICAgICAgICBBU1NFUlQoKGxhYmVsIDw9IDEy
NykgJiYgKGxhYmVsID49IC0xMjgpKTsKLSAgICAgICAgICAgIG9uZVNob3J0T3AoZ2V0T3Bjb2Rl
R3JvdXA1KEJGX09QQ09ERSwgbGFiZWwpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHZvaWQgYnJhbmNoKHVpbnQxNl90IG9wYywgUmVnaXN0ZXJJRCBy
ZWcpCi0gICAgewotICAgICAgICBzd2l0Y2ggKG9wYykgewotICAgICAgICBjYXNlIEJSQUZfT1BD
T0RFOgotICAgICAgICAgICAgb25lU2hvcnRPcChnZXRPcGNvZGVHcm91cDIoQlJBRl9PUENPREUs
IHJlZykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSk1QX09QQ09ERToKLSAg
ICAgICAgICAgIG9uZVNob3J0T3AoZ2V0T3Bjb2RlR3JvdXAyKEpNUF9PUENPREUsIHJlZykpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSlNSX09QQ09ERToKLSAgICAgICAgICAg
IG9uZVNob3J0T3AoZ2V0T3Bjb2RlR3JvdXAyKEpTUl9PUENPREUsIHJlZykpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQlNSRl9PUENPREU6Ci0gICAgICAgICAgICBvbmVTaG9y
dE9wKGdldE9wY29kZUdyb3VwMihCU1JGX09QQ09ERSwgcmVnKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIGxkc3ByKFJlZ2lzdGVySUQgcmVn
KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXAyKExEU1BSX09Q
Q09ERSwgcmVnKTsKLSAgICAgICAgb25lU2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQg
c3RzcHIoUmVnaXN0ZXJJRCByZWcpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRP
cGNvZGVHcm91cDIoU1RTUFJfT1BDT0RFLCByZWcpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7
Ci0gICAgfQotCi0gICAgdm9pZCBleHR1YihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3Qp
Ci0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDEoRVhUVUJfT1BD
T0RFLCBkc3QsIHNyYyk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0gICAgCi0g
ICAgdm9pZCBleHR1dyhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAg
ICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDEoRVhUVVdfT1BDT0RFLCBkc3QsIHNy
Yyk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICAvLyBmbG9hdCBvcGVy
YXRpb25zCi0KLSAgICB2b2lkIGxkc3JtZnB1bChSZWdpc3RlcklEIHNyYykKLSAgICB7Ci0gICAg
ICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdyb3VwMihMRFNfUk1fRlBVTF9PUENPREUsIHNy
Yyk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGZuZWcoRlBS
ZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdy
b3VwMihGTkVHX09QQ09ERSwgZHN0KTsKLSAgICAgICAgb25lU2hvcnRPcChvcGMsIHRydWUsIGZh
bHNlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGZzcXJ0KEZQUmVnaXN0ZXJJRCBkc3QpCi0gICAgewot
ICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDIoRlNRUlRfT1BDT0RFLCBkc3Qp
OwotICAgICAgICBvbmVTaG9ydE9wKG9wYywgdHJ1ZSwgZmFsc2UpOwotICAgIH0KLQotICAgIHZv
aWQgc3RzZnB1bFJlZyhSZWdpc3RlcklEIHNyYykKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9w
YyA9IGdldE9wY29kZUdyb3VwMihTVFNfRlBVTF9STl9PUENPREUsIHNyYyk7Ci0gICAgICAgIG9u
ZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGZsb2F0ZnB1bGZybihGUFJlZ2lzdGVy
SUQgc3JjKQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXAyKEZM
T0FUX09QQ09ERSwgc3JjKTsKLSAgICAgICAgb25lU2hvcnRPcChvcGMsIHRydWUsIGZhbHNlKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGZtdWxsKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBk
c3QpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDEoRk1VTF9P
UENPREUsIGRzdCwgc3JjKTsKLSAgICAgICAgb25lU2hvcnRPcChvcGMsIHRydWUsIGZhbHNlKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGZtb3ZzUmVnUmVnKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0
ZXJJRCBkc3QpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDEo
Rk1PVl9PUENPREUsIGRzdCwgc3JjKTsKLSAgICAgICAgb25lU2hvcnRPcChvcGMsIHRydWUsIGZh
bHNlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGZtb3ZzUmVhZHJtKFJlZ2lzdGVySUQgc3JjLCBGUFJl
Z2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3Jv
dXAxKEZNT1ZTX1JFQURfUk1fT1BDT0RFLCBkc3QsIHNyYyk7Ci0gICAgICAgIG9uZVNob3J0T3Ao
b3BjLCB0cnVlLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgdm9pZCBmbW92c1dyaXRlcm0oRlBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMg
PSBnZXRPcGNvZGVHcm91cDEoRk1PVlNfV1JJVEVfUk5fT1BDT0RFLCBkc3QsIHNyYyk7Ci0gICAg
ICAgIG9uZVNob3J0T3Aob3BjLCB0cnVlLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgdm9pZCBmbW92
c1dyaXRlcjByKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAg
ICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXAxKEZNT1ZTX1dSSVRFX1IwUk5fT1BDT0RF
LCBkc3QsIHNyYyk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjLCB0cnVlLCBmYWxzZSk7Ci0gICAg
fQotCi0gICAgdm9pZCBmbW92c1JlYWRyMHIoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBk
c3QpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDEoRk1PVlNf
UkVBRF9SMFJNX09QQ09ERSwgZHN0LCBzcmMpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYywgdHJ1
ZSwgZmFsc2UpOwotICAgIH0KLQotICAgIHZvaWQgZm1vdnNSZWFkcm1pbmMoUmVnaXN0ZXJJRCBz
cmMsIEZQUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRP
cGNvZGVHcm91cDEoRk1PVlNfUkVBRF9STV9JTkNfT1BDT0RFLCBkc3QsIHNyYyk7Ci0gICAgICAg
IG9uZVNob3J0T3Aob3BjLCB0cnVlLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgdm9pZCBmbW92c1dy
aXRlcm5kZWMoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAg
ICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDEoRk1PVlNfV1JJVEVfUk5fREVDX09QQ09E
RSwgZHN0LCBzcmMpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYywgdHJ1ZSwgZmFsc2UpOwotICAg
IH0KLQotICAgIHZvaWQgZnRyY1JlZ2ZwdWwoRlBSZWdpc3RlcklEIHNyYykKLSAgICB7Ci0gICAg
ICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdyb3VwMihGVFJDX09QQ09ERSwgc3JjKTsKLSAg
ICAgICAgb25lU2hvcnRPcChvcGMsIHRydWUsIGZhbHNlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGZs
ZHNmcHVsKEZQUmVnaXN0ZXJJRCBzcmMpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBn
ZXRPcGNvZGVHcm91cDIoRkxEU19GUk1fRlBVTF9PUENPREUsIHNyYyk7Ci0gICAgICAgIG9uZVNo
b3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGZzdHNmcHVsKEZQUmVnaXN0ZXJJRCBzcmMp
Ci0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDIoRlNUU19GUFVM
X0ZSTl9PUENPREUsIHNyYyk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGxkc2Zwc2NyKFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgdWludDE2X3Qg
b3BjID0gZ2V0T3Bjb2RlR3JvdXAyKExEU0ZQU0NSX09QQ09ERSwgcmVnKTsKLSAgICAgICAgb25l
U2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgc3RzZnBzY3IoUmVnaXN0ZXJJRCByZWcp
Ci0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDIoU1RTRlBTQ1Jf
T1BDT0RFLCByZWcpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgLy8g
ZG91YmxlIG9wZXJhdGlvbnMKLQotICAgIHZvaWQgZGNudmRzKEZQUmVnaXN0ZXJJRCBzcmMpCi0g
ICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDcoRkNOVkRTX0RSTV9G
UFVMX09QQ09ERSwgc3JjID4+IDEpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQot
Ci0gICAgdm9pZCBkY252c2QoRlBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHVpbnQx
Nl90IG9wYyA9IGdldE9wY29kZUdyb3VwNyhGQ05WU0RfRlBVTF9EUk5fT1BDT0RFLCBkc3QgPj4g
MSk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRjbXBwZXEo
RlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHVpbnQx
Nl90IG9wYyA9IGdldE9wY29kZUdyb3VwOChGQ01QRVFfT1BDT0RFLCBkc3QgPj4gMSwgc3JjID4+
IDEpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBkY21wcGd0
KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICB1aW50
MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDgoRkNNUEdUX09QQ09ERSwgZHN0ID4+IDEsIHNyYyA+
PiAxKTsKLSAgICAgICAgb25lU2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgZG11bFJl
Z1JlZyhGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAg
dWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXA4KEZNVUxfT1BDT0RFLCBkc3QgPj4gMSwgc3Jj
ID4+IDEpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBkc3Vi
UmVnUmVnKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAg
ICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDgoRlNVQl9PUENPREUsIGRzdCA+PiAxLCBz
cmMgPj4gMSk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGRh
ZGRSZWdSZWcoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAg
ICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdyb3VwOChGQUREX09QQ09ERSwgZHN0ID4+IDEs
IHNyYyA+PiAxKTsKLSAgICAgICAgb25lU2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQg
ZG1vdlJlZ1JlZyhGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAg
ICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXA4KEZNT1ZfT1BDT0RFLCBkc3QgPj4g
MSwgc3JjID4+IDEpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9p
ZCBkZGl2UmVnUmVnKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCi0gICAgewot
ICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDgoRkRJVl9PUENPREUsIGRzdCA+
PiAxLCBzcmMgPj4gMSk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGRhYnMoRlBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9wYyA9
IGdldE9wY29kZUdyb3VwNyhGQUJTX09QQ09ERSwgZHN0ID4+IDEpOwotICAgICAgICBvbmVTaG9y
dE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBkc3FydChGUFJlZ2lzdGVySUQgZHN0KQotICAg
IHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXA3KEZTUVJUX09QQ09ERSwg
ZHN0ID4+IDEpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBk
bmVnKEZQUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRP
cGNvZGVHcm91cDcoRk5FR19PUENPREUsIGRzdCA+PiAxKTsKLSAgICAgICAgb25lU2hvcnRPcChv
cGMpOwotICAgIH0KLQotICAgIHZvaWQgZm1vdlJlYWRybShSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdyb3Vw
MTAoRk1PVlNfUkVBRF9STV9PUENPREUsIGRzdCA+PiAxLCBzcmMpOwotICAgICAgICBvbmVTaG9y
dE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBmbW92V3JpdGVybShGUFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29k
ZUdyb3VwOShGTU9WU19XUklURV9STl9PUENPREUsIGRzdCwgc3JjID4+IDEpOwotICAgICAgICBv
bmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBmbW92V3JpdGVyMHIoRlBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBn
ZXRPcGNvZGVHcm91cDkoRk1PVlNfV1JJVEVfUjBSTl9PUENPREUsIGRzdCwgc3JjID4+IDEpOwot
ICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBmbW92UmVhZHIwcihS
ZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90
IG9wYyA9IGdldE9wY29kZUdyb3VwMTAoRk1PVlNfUkVBRF9SMFJNX09QQ09ERSwgZHN0ID4+IDEs
IHNyYyk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGZtb3ZS
ZWFkcm1pbmMoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAg
ICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDEwKEZNT1ZTX1JFQURfUk1fSU5DX09QQ09E
RSwgZHN0ID4+IDEsIHNyYyk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGZtb3ZXcml0ZXJuZGVjKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQot
ICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXA5KEZNT1ZTX1dSSVRF
X1JOX0RFQ19PUENPREUsIGRzdCwgc3JjID4+IDEpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7
Ci0gICAgfQotCi0gICAgdm9pZCBmbG9hdGZwdWxEcmVnKEZQUmVnaXN0ZXJJRCBzcmMpCi0gICAg
ewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDcoRkxPQVRfT1BDT0RFLCBz
cmMgPj4gMSk7Ci0gICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGZ0
cmNkcm1mcHVsKEZQUmVnaXN0ZXJJRCBzcmMpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMg
PSBnZXRPcGNvZGVHcm91cDcoRlRSQ19PUENPREUsIHNyYyA+PiAxKTsKLSAgICAgICAgb25lU2hv
cnRPcChvcGMpOwotICAgIH0KLQotICAgIC8vIFZhcmlvdXMgbW92ZSBvcHMKLQotICAgIHZvaWQg
bW92SW1tOChpbnQgaW1tOCwgUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICBBU1NFUlQo
KGltbTggPD0gMTI3KSAmJiAoaW1tOCA+PSAtMTI4KSk7Ci0KLSAgICAgICAgdWludDE2X3Qgb3Bj
ID0gZ2V0T3Bjb2RlR3JvdXAzKE1PVklNTV9PUENPREUsIGRzdCwgaW1tOCk7Ci0gICAgICAgIG9u
ZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIG1vdmxSZWdSZWcoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bj
b2RlR3JvdXAxKE1PVl9PUENPREUsIGRzdCwgc3JjKTsKLSAgICAgICAgb25lU2hvcnRPcChvcGMp
OwotICAgIH0KLQotICAgIHZvaWQgbW92d1JlZ01lbShSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkc3QpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDEoTU9W
V19XUklURV9STl9PUENPREUsIGRzdCwgc3JjKTsKLSAgICAgICAgb25lU2hvcnRPcChvcGMpOwot
ICAgIH0KLQotICAgIHZvaWQgbW92d01lbVJlZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
c3QpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDEoTU9WV19S
RUFEX1JNX09QQ09ERSwgZHN0LCBzcmMpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAg
fQotCi0gICAgdm9pZCBtb3Z3TWVtUmVnSW4oUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRz
dCkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdyb3VwMShNT1ZXX1JF
QURfUk1JTkNfT1BDT0RFLCBkc3QsIGJhc2UpOwotICAgICAgICBvbmVTaG9ydE9wKG9wYyk7Ci0g
ICAgfQotCi0gICAgdm9pZCBtb3Z3UENSZWcoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYmFzZSwgYmFzZSA9
PSBTSDRSZWdpc3RlcnM6OnBjKTsKLSAgICAgICAgQVNTRVJUKChvZmZzZXQgPD0gMjU1KSAmJiAo
b2Zmc2V0ID49IDApKTsKLQotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDMo
TU9WV19SRUFEX09GRlBDX09QQ09ERSwgZHN0LCBvZmZzZXQpOwotICAgICAgICBvbmVTaG9ydE9w
KG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3Z3TWVtUmVnKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGRz
dCwgZHN0ID09IFNINFJlZ2lzdGVyczo6cjApOwotCi0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdl
dE9wY29kZUdyb3VwMTEoTU9WV19SRUFEX09GRlJNX09QQ09ERSwgYmFzZSwgb2Zmc2V0KTsKLSAg
ICAgICAgb25lU2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgbW92d1IwbXIoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0g
Z2V0T3Bjb2RlR3JvdXAxKE1PVldfUkVBRF9SMFJNX09QQ09ERSwgZHN0LCBzcmMpOwotICAgICAg
ICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3Z3UmVnTWVtcjAoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0g
Z2V0T3Bjb2RlR3JvdXAxKE1PVldfV1JJVEVfUjBSTl9PUENPREUsIGRzdCwgc3JjKTsKLSAgICAg
ICAgb25lU2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgbW92bFJlZ01lbShSZWdpc3Rl
cklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKChvZmZzZXQgPD0gMTUpICYmIChvZmZzZXQgPj0gMCkpOwotCi0gICAgICAgIGlmICghb2Zm
c2V0KSB7Ci0gICAgICAgICAgICBvbmVTaG9ydE9wKGdldE9wY29kZUdyb3VwMShNT1ZMX1dSSVRF
X1JOX09QQ09ERSwgYmFzZSwgc3JjKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBvbmVTaG9ydE9wKGdldE9wY29kZUdyb3VwNChNT1ZMX1dSSVRFX09GRlJOX09Q
Q09ERSwgYmFzZSwgc3JjLCBvZmZzZXQpKTsKLSAgICB9Ci0KLSAgICB2b2lkIG1vdmxSZWdNZW0o
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgYmFzZSkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90
IG9wYyA9IGdldE9wY29kZUdyb3VwMShNT1ZMX1dSSVRFX1JOX09QQ09ERSwgYmFzZSwgc3JjKTsK
LSAgICAgICAgb25lU2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgbW92bE1lbVJlZyhp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAg
ICAgaWYgKGJhc2UgPT0gU0g0UmVnaXN0ZXJzOjpwYykgewotICAgICAgICAgICAgQVNTRVJUKChv
ZmZzZXQgPD0gMjU1KSAmJiAob2Zmc2V0ID49IDApKTsKLSAgICAgICAgICAgIG9uZVNob3J0T3Ao
Z2V0T3Bjb2RlR3JvdXAzKE1PVkxfUkVBRF9PRkZQQ19PUENPREUsIGRzdCwgb2Zmc2V0KSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQoKG9mZnNldCA8
PSAxNSkgJiYgKG9mZnNldCA+PSAwKSk7Ci0gICAgICAgIGlmICghb2Zmc2V0KSB7Ci0gICAgICAg
ICAgICBvbmVTaG9ydE9wKGdldE9wY29kZUdyb3VwMShNT1ZMX1JFQURfUk1fT1BDT0RFLCBkc3Qs
IGJhc2UpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIG9uZVNo
b3J0T3AoZ2V0T3Bjb2RlR3JvdXA0KE1PVkxfUkVBRF9PRkZSTV9PUENPREUsIGRzdCwgYmFzZSwg
b2Zmc2V0KSk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3ZsTWVtUmVnQ29tcGFjdChpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgb25lU2hv
cnRPcChnZXRPcGNvZGVHcm91cDQoTU9WTF9SRUFEX09GRlJNX09QQ09ERSwgZHN0LCBiYXNlLCBv
ZmZzZXQpKTsKLSAgICB9Ci0KLSAgICB2b2lkIG1vdmJSZWdNZW0oUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgYmFzZSkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdy
b3VwMShNT1ZCX1dSSVRFX1JOX09QQ09ERSwgYmFzZSwgc3JjKTsKLSAgICAgICAgb25lU2hvcnRP
cChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgbW92Yk1lbVJlZyhpbnQgb2Zmc2V0LCBSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChk
c3QsIGRzdCA9PSBTSDRSZWdpc3RlcnM6OnIwKTsKLQotICAgICAgICB1aW50MTZfdCBvcGMgPSBn
ZXRPcGNvZGVHcm91cDExKE1PVkJfUkVBRF9PRkZSTV9PUENPREUsIGJhc2UsIG9mZnNldCk7Ci0g
ICAgICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIG1vdmJSMG1yKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9wYyA9
IGdldE9wY29kZUdyb3VwMShNT1ZCX1JFQURfUjBSTV9PUENPREUsIGRzdCwgc3JjKTsKLSAgICAg
ICAgb25lU2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgbW92Yk1lbVJlZyhSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICB1aW50MTZfdCBvcGMgPSBn
ZXRPcGNvZGVHcm91cDEoTU9WQl9SRUFEX1JNX09QQ09ERSwgZHN0LCBzcmMpOwotICAgICAgICBv
bmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3ZiTWVtUmVnSW4oUmVnaXN0ZXJJ
RCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdl
dE9wY29kZUdyb3VwMShNT1ZCX1JFQURfUk1JTkNfT1BDT0RFLCBkc3QsIGJhc2UpOwotICAgICAg
ICBvbmVTaG9ydE9wKG9wYyk7Ci0gICAgfQotCi0gICAgdm9pZCBtb3ZiUmVnTWVtcjAoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0g
Z2V0T3Bjb2RlR3JvdXAxKE1PVkJfV1JJVEVfUjBSTl9PUENPREUsIGRzdCwgc3JjKTsKLSAgICAg
ICAgb25lU2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgbW92bE1lbVJlZyhSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0g
Z2V0T3Bjb2RlR3JvdXAxKE1PVkxfUkVBRF9STV9PUENPREUsIGRzdCwgYmFzZSk7Ci0gICAgICAg
IG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIG1vdmxNZW1SZWdJbihSZWdpc3Rl
cklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgdWludDE2X3Qgb3BjID0g
Z2V0T3Bjb2RlR3JvdXAxKE1PVkxfUkVBRF9STUlOQ19PUENPREUsIGRzdCwgYmFzZSk7Ci0gICAg
ICAgIG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIG1vdmxSMG1yKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdl
dE9wY29kZUdyb3VwMShNT1ZMX1JFQURfUjBSTV9PUENPREUsIGRzdCwgc3JjKTsKLSAgICAgICAg
b25lU2hvcnRPcChvcGMpOwotICAgIH0KLQotICAgIHZvaWQgbW92bFJlZ01lbXIwKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdl
dE9wY29kZUdyb3VwMShNT1ZMX1dSSVRFX1IwUk5fT1BDT0RFLCBkc3QsIHNyYyk7Ci0gICAgICAg
IG9uZVNob3J0T3Aob3BjKTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWRDb25zdGFudCh1aW50MzJf
dCBjb25zdGFudCwgUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICBpZiAoKChpbnQpY29u
c3RhbnQgPD0gMHg3ZikgJiYgKChpbnQpY29uc3RhbnQgPj0gLTB4ODApKSB7Ci0gICAgICAgICAg
ICBtb3ZJbW04KGNvbnN0YW50LCBkc3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXAzKE1PVklNTV9PUENPREUs
IGRzdCwgMCk7Ci0KLSAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25T
aXplLCBzaXplb2YodWludDMyX3QpKTsKLSAgICAgICAgcHJpbnRJbnN0cihnZXRPcGNvZGVHcm91
cDMoTU9WSU1NX09QQ09ERSwgZHN0LCBjb25zdGFudCksIG1fYnVmZmVyLmNvZGVTaXplKCkpOwot
ICAgICAgICBtX2J1ZmZlci5wdXRTaG9ydFdpdGhDb25zdGFudEludChvcGMsIGNvbnN0YW50LCB0
cnVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGxvYWRDb25zdGFudFVuUmV1c2FibGUodWludDMyX3Qg
Y29uc3RhbnQsIFJlZ2lzdGVySUQgZHN0LCBib29sIGVuc3VyZVNwYWNlID0gZmFsc2UpCi0gICAg
ewotICAgICAgICB1aW50MTZfdCBvcGMgPSBnZXRPcGNvZGVHcm91cDMoTU9WSU1NX09QQ09ERSwg
ZHN0LCAwKTsKLQotICAgICAgICBpZiAoZW5zdXJlU3BhY2UpCi0gICAgICAgICAgICBtX2J1ZmZl
ci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUsIHNpemVvZih1aW50MzJfdCkpOwotCi0g
ICAgICAgIHByaW50SW5zdHIoZ2V0T3Bjb2RlR3JvdXAzKE1PVklNTV9PUENPREUsIGRzdCwgY29u
c3RhbnQpLCBtX2J1ZmZlci5jb2RlU2l6ZSgpKTsKLSAgICAgICAgbV9idWZmZXIucHV0U2hvcnRX
aXRoQ29uc3RhbnRJbnQob3BjLCBjb25zdGFudCk7Ci0gICAgfQotCi0gICAgLy8gRmxvdyBjb250
cm9sCi0KLSAgICBBc3NlbWJsZXJMYWJlbCBjYWxsKCkKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVy
SUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1h
eEluc3RydWN0aW9uU2l6ZSArIDQsIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBsb2FkQ29u
c3RhbnRVblJldXNhYmxlKDB4MCwgc2NyKTsKLSAgICAgICAgYnJhbmNoKEpTUl9PUENPREUsIHNj
cik7Ci0gICAgICAgIG5vcCgpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgICAg
ICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKLSAgICB9Ci0KLSAgICBBc3NlbWJsZXJMYWJlbCBj
YWxsKFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2Uo
bWF4SW5zdHJ1Y3Rpb25TaXplICsgMik7Ci0gICAgICAgIGJyYW5jaChKU1JfT1BDT0RFLCBkc3Qp
OwotICAgICAgICBub3AoKTsKLSAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7Ci0gICAg
fQotCi0gICAgQXNzZW1ibGVyTGFiZWwgam1wKCkKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVySUQg
c2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNlKG1heElu
c3RydWN0aW9uU2l6ZSArIDQsIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBsb2FkQ29uc3Rh
bnRVblJldXNhYmxlKDB4MCwgc2NyKTsKLSAgICAgICAgYnJhbmNoKEJSQUZfT1BDT0RFLCBzY3Ip
OwotICAgICAgICBub3AoKTsKLSAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKLSAgICAgICAg
cmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7Ci0gICAgfQotCi0gICAgQXNzZW1ibGVyTGFiZWwgZXh0
cmFJbnN0ckZvckJyYW5jaChSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIGxvYWRDb25z
dGFudFVuUmV1c2FibGUoMHgwLCBkc3QpOwotICAgICAgICBicmFuY2goQlJBRl9PUENPREUsIGRz
dCk7Ci0gICAgICAgIG5vcCgpOwotICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKLSAg
ICB9Ci0KLSAgICBBc3NlbWJsZXJMYWJlbCBqbXAoUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAg
ICAgICBqbXBSZWcoZHN0KTsKLSAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7Ci0gICAg
fQotCi0gICAgdm9pZCBqbXBSZWcoUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICBtX2J1
ZmZlci5lbnN1cmVTcGFjZShtYXhJbnN0cnVjdGlvblNpemUgKyAyKTsKLSAgICAgICAgYnJhbmNo
KEpNUF9PUENPREUsIGRzdCk7Ci0gICAgICAgIG5vcCgpOwotICAgIH0KLQotICAgIEFzc2VtYmxl
ckxhYmVsIGpuZSgpCi0gICAgewotICAgICAgICBicmFuY2goQkZfT1BDT0RFLCAwKTsKLSAgICAg
ICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7Ci0gICAgfQotCi0gICAgQXNzZW1ibGVyTGFiZWwg
amUoKQotICAgIHsKLSAgICAgICAgYnJhbmNoKEJUX09QQ09ERSwgMCk7Ci0gICAgICAgIHJldHVy
biBtX2J1ZmZlci5sYWJlbCgpOwotICAgIH0KLQotICAgIEFzc2VtYmxlckxhYmVsIGJyYSgpCi0g
ICAgewotICAgICAgICBicmFuY2goQlJBX09QQ09ERSwgMCk7Ci0gICAgICAgIHJldHVybiBtX2J1
ZmZlci5sYWJlbCgpOwotICAgIH0KLQotICAgIHZvaWQgcmV0KCkKLSAgICB7Ci0gICAgICAgIG1f
YnVmZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSArIDIpOwotICAgICAgICBvbmVT
aG9ydE9wKFJUU19PUENPREUsIGZhbHNlKTsKLSAgICB9Ci0KLSAgICBBc3NlbWJsZXJMYWJlbCBs
YWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKQotICAgIHsKLSAgICAgICAgbV9idWZmZXIuZW5zdXJl
U3BhY2VGb3JBbnlJbnN0cnVjdGlvbigpOwotICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwo
KTsKLSAgICB9Ci0KLSAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbEZvcldhdGNocG9pbnQoKQotICAg
IHsKLSAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2VGb3JBbnlJbnN0cnVjdGlvbigpOwotICAg
ICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOwotICAgICAgICBp
ZiAoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxhc3RXYXRj
aHBvaW50KQotICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKLSAgICAgICAgbV9pbmRleE9m
TGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7Ci0gICAgICAgIG1faW5kZXhPZlRhaWxP
Zkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6
ZSgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIEFzc2VtYmxlckxhYmVs
IGxhYmVsKCkKLSAgICB7Ci0gICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IGxhYmVsSWdu
b3JpbmdXYXRjaHBvaW50cygpOwotICAgICAgICB3aGlsZSAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8
aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQpKSB7
Ci0gICAgICAgICAgICBub3AoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGxhYmVsSWdub3JpbmdX
YXRjaHBvaW50cygpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQot
Ci0gICAgaW50IHNpemVPZkNvbnN0YW50UG9vbCgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9i
dWZmZXIuc2l6ZU9mQ29uc3RhbnRQb29sKCk7Ci0gICAgfQotCi0gICAgQXNzZW1ibGVyTGFiZWwg
YWxpZ24oaW50IGFsaWdubWVudCkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNl
KG1heEluc3RydWN0aW9uU2l6ZSArIDIpOwotICAgICAgICB3aGlsZSAoIW1fYnVmZmVyLmlzQWxp
Z25lZChhbGlnbm1lbnQpKSB7Ci0gICAgICAgICAgICBub3AoKTsKLSAgICAgICAgICAgIG1fYnVm
ZmVyLmVuc3VyZVNwYWNlKG1heEluc3RydWN0aW9uU2l6ZSArIDIpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBsYWJlbCgpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGNoYW5nZVBDcmVs
YXRpdmVBZGRyZXNzKGludCBvZmZzZXQsIHVpbnQxNl90KiBpbnN0cnVjdGlvblB0ciwgdWludDMy
X3QgbmV3QWRkcmVzcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0g
JiAweGYwMDApID09IE1PVkxfUkVBRF9PRkZQQ19PUENPREUpOwotICAgICAgICB1aW50MzJfdCBh
ZGRyZXNzID0gKG9mZnNldCA8PCAyKSArICgocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oaW5z
dHJ1Y3Rpb25QdHIpICsgNCkgJih+MHgzKSk7Ci0gICAgICAgICpyZWludGVycHJldF9jYXN0PHVp
bnQzMl90Kj4oYWRkcmVzcykgPSBuZXdBZGRyZXNzOwotICAgIH0KLQotICAgIHN0YXRpYyB1aW50
MzJfdCByZWFkUENyZWxhdGl2ZUFkZHJlc3MoaW50IG9mZnNldCwgdWludDE2X3QqIGluc3RydWN0
aW9uUHRyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKChpbnN0cnVjdGlvblB0clswXSAmIDB4ZjAw
MCkgPT0gTU9WTF9SRUFEX09GRlBDX09QQ09ERSk7Ci0gICAgICAgIHVpbnQzMl90IGFkZHJlc3Mg
PSAob2Zmc2V0IDw8IDIpICsgKChyZWludGVycHJldF9jYXN0PHVpbnQzMl90PihpbnN0cnVjdGlv
blB0cikgKyA0KSAmKH4weDMpKTsKLSAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PHVp
bnQzMl90Kj4oYWRkcmVzcyk7Ci0gICAgfQotCi0gICAgc3RhdGljIHVpbnQxNl90KiBnZXRJbnN0
cnVjdGlvblB0cih2b2lkKiBjb2RlLCBpbnQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPiAocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4o
Y29kZSkgKyBvZmZzZXQpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGxpbmtKdW1wKHZvaWQq
IGNvZGUsIEFzc2VtYmxlckxhYmVsIGZyb20sIHZvaWQqIHRvKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGZyb20uaXNTZXQoKSk7Ci0KLSAgICAgICAgdWludDE2X3QqIGluc3RydWN0aW9uUHRyID0g
Z2V0SW5zdHJ1Y3Rpb25QdHIoY29kZSwgZnJvbS5tX29mZnNldCkgLSAzOwotICAgICAgICBpbnQg
b2Zmc2V0Qml0cyA9IChyZWludGVycHJldF9jYXN0PHVpbnQzMl90Pih0bykgLSByZWludGVycHJl
dF9jYXN0PHVpbnQzMl90Pihjb2RlKSkgLSBmcm9tLm1fb2Zmc2V0OwotCi0gICAgICAgIC8qIE1P
ViAjaW1tLCByZWcgPT4gTERSIHJlZwotICAgICAgICAgICBicmFmIEByZWcgICAgICAgIGJyYWYg
QHJlZwotICAgICAgICAgICBub3AgICAgICAgICAgICAgIG5vcAotICAgICAgICAqLwotICAgICAg
ICBBU1NFUlQoKGluc3RydWN0aW9uUHRyWzBdICYgMHhmMDAwKSA9PSBNT1ZMX1JFQURfT0ZGUENf
T1BDT0RFKTsKLSAgICAgICAgQVNTRVJUKChpbnN0cnVjdGlvblB0clsxXSAmIDB4ZjBmZikgPT0g
QlJBRl9PUENPREUpOwotICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcygoKmluc3RydWN0
aW9uUHRyICYgMHhmZiksIGluc3RydWN0aW9uUHRyLCBvZmZzZXRCaXRzKTsKLSAgICAgICAgcHJp
bnRJbnN0cigqaW5zdHJ1Y3Rpb25QdHIsIGZyb20ubV9vZmZzZXQgKyAyKTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgdm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCBmcm9tLCB2
b2lkKiB0bykKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90KiBpbnN0cnVjdGlvblB0ciA9IGdldElu
c3RydWN0aW9uUHRyKGNvZGUsIGZyb20ubV9vZmZzZXQpOwotICAgICAgICBpbnN0cnVjdGlvblB0
ciAtPSAzOwotICAgICAgICBBU1NFUlQoKGluc3RydWN0aW9uUHRyWzBdICYgMHhmMDAwKSA9PSBN
T1ZMX1JFQURfT0ZGUENfT1BDT0RFKTsKLSAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3Mo
KCppbnN0cnVjdGlvblB0ciAmIDB4ZmYpLCBpbnN0cnVjdGlvblB0ciwgcmVpbnRlcnByZXRfY2Fz
dDx1aW50MzJfdD4odG8pKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBsaW5rUG9pbnRlcih2
b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCB3aGVyZSwgdm9pZCogdmFsdWUpCi0gICAgewotICAg
ICAgICB1aW50MTZfdCogaW5zdHJ1Y3Rpb25QdHIgPSBnZXRJbnN0cnVjdGlvblB0cihjb2RlLCB3
aGVyZS5tX29mZnNldCk7Ci0gICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAweGYw
MDApID09IE1PVkxfUkVBRF9PRkZQQ19PUENPREUpOwotICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZl
QWRkcmVzcygoKmluc3RydWN0aW9uUHRyICYgMHhmZiksIGluc3RydWN0aW9uUHRyLCByZWludGVy
cHJldF9jYXN0PHVpbnQzMl90Pih2YWx1ZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyB1bnNpZ25l
ZCBnZXRDYWxsUmV0dXJuT2Zmc2V0KEFzc2VtYmxlckxhYmVsIGNhbGwpCi0gICAgewotICAgICAg
ICBBU1NFUlQoY2FsbC5pc1NldCgpKTsKLSAgICAgICAgcmV0dXJuIGNhbGwubV9vZmZzZXQ7Ci0g
ICAgfQotCi0gICAgc3RhdGljIHVpbnQzMl90KiBnZXRMZHJJbW1BZGRyZXNzT25Qb29sKFNINFdv
cmQqIGluc24sIHVpbnQzMl90KiBjb25zdFBvb2wpCi0gICAgewotICAgICAgICByZXR1cm4gKGNv
bnN0UG9vbCArICgqaW5zbiAmIDB4ZmYpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU0g0V29yZCBw
YXRjaENvbnN0YW50UG9vbExvYWQoU0g0V29yZCBsb2FkLCBpbnQgdmFsdWUpCi0gICAgewotICAg
ICAgICByZXR1cm4gKChsb2FkICYgfjB4ZmYpIHwgdmFsdWUpOwotICAgIH0KLQotICAgIHN0YXRp
YyBTSDRCdWZmZXI6OlR3b1Nob3J0cyBwbGFjZUNvbnN0YW50UG9vbEJhcnJpZXIoaW50IG9mZnNl
dCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgoKG9mZnNldCA+PiAxKSA8PSAyMDQ3KSAmJiAoKG9m
ZnNldCA+PiAxKSA+PSAtMjA0OCkpOwotCi0gICAgICAgIFNINEJ1ZmZlcjo6VHdvU2hvcnRzIG1f
YmFycmllcjsKLSAgICAgICAgbV9iYXJyaWVyLmhpZ2ggPSAoQlJBX09QQ09ERSB8IChvZmZzZXQg
Pj4gMSkpOwotICAgICAgICBtX2JhcnJpZXIubG93ID0gTk9QX09QQ09ERTsKLSAgICAgICAgcHJp
bnRJbnN0cigoKEJSQV9PUENPREUgfCAob2Zmc2V0ID4+IDEpKSksIDApOwotICAgICAgICBwcmlu
dEluc3RyKE5PUF9PUENPREUsIDApOwotICAgICAgICByZXR1cm4gbV9iYXJyaWVyOwotICAgIH0K
LQotICAgIHN0YXRpYyB2b2lkIHBhdGNoQ29uc3RhbnRQb29sTG9hZCh2b2lkKiBsb2FkQWRkciwg
dm9pZCogY29uc3RQb29sQWRkcikKLSAgICB7Ci0gICAgICAgIFNINFdvcmQqIGluc3RydWN0aW9u
UHRyID0gcmVpbnRlcnByZXRfY2FzdDxTSDRXb3JkKj4obG9hZEFkZHIpOwotICAgICAgICBTSDRX
b3JkIGluc3RydWN0aW9uID0gKmluc3RydWN0aW9uUHRyOwotICAgICAgICBTSDRXb3JkIGluZGV4
ID0gaW5zdHJ1Y3Rpb24gJiAweGZmOwotCi0gICAgICAgIGlmICgoaW5zdHJ1Y3Rpb24gJiAweGYw
MDApICE9IE1PVklNTV9PUENPREUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgQVNT
RVJUKCgoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGNvbnN0UG9vbEFkZHIpIC0gcmVpbnRl
cnByZXRfY2FzdDx1aW50MzJfdD4obG9hZEFkZHIpKSArIGluZGV4ICogNCkpIDwgMTAyNCk7Ci0K
LSAgICAgICAgaW50IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGNvbnN0UG9v
bEFkZHIpICsgKGluZGV4ICogNCkgLSAoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGluc3Ry
dWN0aW9uUHRyKSAmIH4weDAzKSArIDQpOwotICAgICAgICBpbnN0cnVjdGlvbiAmPSAweDBmMDA7
Ci0gICAgICAgIGluc3RydWN0aW9uIHw9IDB4ZDAwMDsKLSAgICAgICAgb2Zmc2V0ICY9IDB4MDNm
ZjsKLSAgICAgICAgaW5zdHJ1Y3Rpb24gfD0gKG9mZnNldCA+PiAyKTsKLSAgICAgICAgKmluc3Ry
dWN0aW9uUHRyID0gaW5zdHJ1Y3Rpb247Ci0gICAgICAgIHByaW50SW5zdHIoaW5zdHJ1Y3Rpb24s
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGxvYWRBZGRyKSk7Ci0gICAgfQotCi0gICAgc3Rh
dGljIHZvaWQgcmVwYXRjaFBvaW50ZXIodm9pZCogd2hlcmUsIHZvaWQqIHZhbHVlKQotICAgIHsK
LSAgICAgICAgcGF0Y2hQb2ludGVyKHdoZXJlLCB2YWx1ZSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IHZvaWQqIHJlYWRQb2ludGVyKHZvaWQqIGNvZGUpCi0gICAgewotICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZEludDMyKGNvZGUpKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgdm9pZCByZXBhdGNoSW50MzIodm9pZCogd2hlcmUsIGludDMyX3QgdmFsdWUpCi0gICAgewot
ICAgICAgICB1aW50MTZfdCogaW5zdHJ1Y3Rpb25QdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQx
Nl90Kj4od2hlcmUpOwotICAgICAgICBBU1NFUlQoKGluc3RydWN0aW9uUHRyWzBdICYgMHhmMDAw
KSA9PSBNT1ZMX1JFQURfT0ZGUENfT1BDT0RFKTsKLSAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFk
ZHJlc3MoKCppbnN0cnVjdGlvblB0ciAmIDB4ZmYpLCBpbnN0cnVjdGlvblB0ciwgdmFsdWUpOwot
ICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDb21wYWN0KHZvaWQqIHdoZXJlLCBpbnQz
Ml90IHZhbHVlKQotICAgIHsKLSAgICAgICAgdWludDE2X3QqIGluc3RydWN0aW9uUHRyID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KHdoZXJlKTsKLSAgICAgICAgQVNTRVJUKHZhbHVlID49
IDApOwotICAgICAgICBBU1NFUlQodmFsdWUgPD0gNjApOwotCi0gICAgICAgIC8vIEhhbmRsZSB0
aGUgdW5jb21tb24gY2FzZSB3aGVyZSBhIGZsdXNoQ29uc3RhbnRQb29sIG9jY3VyZWQgaW4gbW92
bE1lbVJlZ0NvbXBhY3QuCi0gICAgICAgIGlmICgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAweGYwMDAp
ID09IEJSQV9PUENPREUpCi0gICAgICAgICAgICBpbnN0cnVjdGlvblB0ciArPSAoaW5zdHJ1Y3Rp
b25QdHJbMF0gJiAweDBmZmYpICsgMjsKLQotICAgICAgICBBU1NFUlQoKGluc3RydWN0aW9uUHRy
WzBdICYgMHhmMDAwKSA9PSBNT1ZMX1JFQURfT0ZGUk1fT1BDT0RFKTsKLSAgICAgICAgaW5zdHJ1
Y3Rpb25QdHJbMF0gPSAoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAweGZmZjApIHwgKHZhbHVlID4+IDIp
OwotICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uUHRyLCBzaXplb2YodWludDE2X3QpKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWxpbmtDYWxsKHZvaWQqIGZyb20sIHZvaWQqIHRv
KQotICAgIHsKLSAgICAgICAgdWludDE2X3QqIGluc3RydWN0aW9uUHRyID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50MTZfdCo+KGZyb20pOwotICAgICAgICBpbnN0cnVjdGlvblB0ciAtPSAzOwotICAg
ICAgICBBU1NFUlQoKGluc3RydWN0aW9uUHRyWzBdICYgMHhmMDAwKSA9PSBNT1ZMX1JFQURfT0ZG
UENfT1BDT0RFKTsKLSAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3MoKCppbnN0cnVjdGlv
blB0ciAmIDB4ZmYpLCBpbnN0cnVjdGlvblB0ciwgcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4o
dG8pKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCByZWxpbmtKdW1wKHZvaWQqIGZyb20sIHZv
aWQqIHRvKQotICAgIHsKLSAgICAgICAgdWludDE2X3QqIGluc3RydWN0aW9uUHRyID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50MTZfdCo+IChmcm9tKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25QdHIgLT0g
MzsKLSAgICAgICAgQVNTRVJUKChpbnN0cnVjdGlvblB0clswXSAmIDB4ZjAwMCkgPT0gTU9WTF9S
RUFEX09GRlBDX09QQ09ERSk7Ci0gICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMV0gJiAw
eGYwZmYpID09IEJSQUZfT1BDT0RFKTsKLSAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3Mo
KCppbnN0cnVjdGlvblB0ciAmIDB4ZmYpLCBpbnN0cnVjdGlvblB0ciwgcmVpbnRlcnByZXRfY2Fz
dDx1aW50MzJfdD4odG8pIC0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oZnJvbSkpOwotICAg
IH0KLQotICAgIC8vIExpbmtpbmcgJiBwYXRjaGluZwotCi0gICAgc3RhdGljIHB0cmRpZmZfdCBt
YXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzaXplb2YoU0g0
V29yZCkgKiA2OwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lk
ICppbnN0cnVjdGlvblN0YXJ0LCB2b2lkICp0bykKLSAgICB7Ci0gICAgICAgIFNINFdvcmQqIGlu
c3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxTSDRXb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7
Ci0gICAgICAgIGludHB0cl90IGRpZmZlcmVuY2UgPSByZWludGVycHJldF9jYXN0PGludHB0cl90
Pih0bykgLSAocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5zdHJ1Y3Rpb24pICsgMyAqIHNp
emVvZihTSDRXb3JkKSk7Ci0KLSAgICAgICAgaWYgKChpbnN0cnVjdGlvblswXSAmIDB4ZjAwMCkg
PT0gTU9WTF9SRUFEX09GRlBDX09QQ09ERSkgewotICAgICAgICAgICAgLy8gV2UgaGF2ZSBhbiBl
bnRyeSBpbiBjb25zdGFudCBwb29sIGFuZCB3ZSBwb3RlbnRpYWxseSByZXBsYWNlIGEgYnJhbmNo
UHRyV2l0aFBhdGNoLCBzbyBsZXQncyBiYWNrdXAgd2hhdCB3b3VsZCBiZSB0aGUKLSAgICAgICAg
ICAgIC8vIGNvbmRpdGlvbiAoQ01QL3h4IGFuZCBCeCBvcGNvZGVzKSBmb3IgbGF0ZXIgdXNlIGlu
IHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoIGJlZm9yZSBwdXR0aW5n
IHRoZSBqdW1wLgotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bNF0gPSBpbnN0cnVjdGlvblsxXTsK
LSAgICAgICAgICAgIGluc3RydWN0aW9uWzVdID0gaW5zdHJ1Y3Rpb25bMl07Ci0gICAgICAgICAg
ICBpbnN0cnVjdGlvblsxXSA9IChCUkFGX09QQ09ERSB8IChpbnN0cnVjdGlvblswXSAmIDB4MGYw
MCkpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMl0gPSBOT1BfT1BDT0RFOwotICAgICAgICAg
ICAgY2FjaGVGbHVzaCgmaW5zdHJ1Y3Rpb25bMV0sIDIgKiBzaXplb2YoU0g0V29yZCkpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSBnZXRPcGNvZGVHcm91
cDMoTU9WTF9SRUFEX09GRlBDX09QQ09ERSwgU0g0UmVnaXN0ZXJzOjpyMTMsIDEpOwotICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSBnZXRPcGNvZGVHcm91cDIoQlJBRl9PUENPREUsIFNINFJl
Z2lzdGVyczo6cjEzKTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uWzJdID0gTk9QX09QQ09ERTsK
LSAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIDMgKiBzaXplb2YoU0g0V29yZCkp
OwotICAgICAgICB9Ci0KLSAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3MoaW5zdHJ1Y3Rp
b25bMF0gJiAweDAwZmYsIGluc3RydWN0aW9uLCBkaWZmZXJlbmNlKTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaCh2b2lk
KiBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklEIHJkLCBpbnQgaW1tKQotICAgIHsKLSAgICAg
ICAgU0g0V29yZCAqaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8U0g0V29yZCo+KGluc3RydWN0aW9u
U3RhcnQpOwotICAgICAgICBBU1NFUlQoKGluc25bMF0gJiAweGYwMDApID09IE1PVkxfUkVBRF9P
RkZQQ19PUENPREUpOwotICAgICAgICBBU1NFUlQoKGluc25bMF0gJiAweDAwZmYpICE9IDEpOwot
Ci0gICAgICAgIGluc25bMF0gPSBnZXRPcGNvZGVHcm91cDMoTU9WTF9SRUFEX09GRlBDX09QQ09E
RSwgU0g0UmVnaXN0ZXJzOjpyMTMsIGluc25bMF0gJiAweDAwZmYpOwotICAgICAgICBpZiAoKGlu
c25bMV0gJiAweGYwZmYpID09IEJSQUZfT1BDT0RFKSB7Ci0gICAgICAgICAgICBpbnNuWzFdID0g
KGluc25bNF0gJiAweGYwMGYpIHwgKHJkIDw8IDgpIHwgKFNINFJlZ2lzdGVyczo6cjEzIDw8IDQp
OyAvLyBSZXN0b3JlIENNUC94eCBvcGNvZGUuCi0gICAgICAgICAgICBpbnNuWzJdID0gaW5zbls1
XTsKLSAgICAgICAgICAgIEFTU0VSVCgoKGluc25bMl0gJiAweGZmMDApID09IEJUX09QQ09ERSkg
fHwgKChpbnNuWzJdICYgMHhmZjAwKSA9PSBCRl9PUENPREUpKTsKLSAgICAgICAgICAgIEFTU0VS
VCgoaW5zblszXSAmIDB4ZjAwMCkgPT0gTU9WTF9SRUFEX09GRlBDX09QQ09ERSk7Ci0gICAgICAg
ICAgICBpbnNuWzRdID0gKEJSQUZfT1BDT0RFIHwgKGluc25bM10gJiAweDBmMDApKTsKLSAgICAg
ICAgICAgIGluc25bNV0gPSBOT1BfT1BDT0RFOwotICAgICAgICAgICAgY2FjaGVGbHVzaChpbnNu
LCA2ICogc2l6ZW9mKFNINFdvcmQpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8v
IFRoZSBicmFuY2hQdHJXaXRoUGF0Y2ggaGFzIGFscmVhZHkgYmVlbiByZXN0b3JlZCwgc28gd2Ug
anVzdCBwYXRjaCB0aGUgaW1tZWRpYXRlIHZhbHVlIGFuZCBBU1NFUlQgYWxsIGlzIGFzIGV4cGVj
dGVkLgotICAgICAgICAgICAgQVNTRVJUKChpbnNuWzFdICYgMHhmMDAwKSA9PSAweDMwMDApOwot
ICAgICAgICAgICAgaW5zblsxXSA9IChpbnNuWzFdICYgMHhmMDBmKSB8IChyZCA8PCA4KSB8IChT
SDRSZWdpc3RlcnM6OnIxMyA8PCA0KTsKLSAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zbiwgMiAq
IHNpemVvZihTSDRXb3JkKSk7Ci0gICAgICAgICAgICBBU1NFUlQoKChpbnNuWzJdICYgMHhmZjAw
KSA9PSBCVF9PUENPREUpIHx8ICgoaW5zblsyXSAmIDB4ZmYwMCkgPT0gQkZfT1BDT0RFKSk7Ci0g
ICAgICAgICAgICBBU1NFUlQoKGluc25bM10gJiAweGYwMDApID09IE1PVkxfUkVBRF9PRkZQQ19P
UENPREUpOwotICAgICAgICAgICAgQVNTRVJUKGluc25bNV0gPT0gTk9QX09QQ09ERSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcyhpbnNuWzBdICYgMHgwMGZm
LCBpbnNuLCBpbW0pOwotICAgIH0KLQotICAgIHZvaWQgbGlua0p1bXAoQXNzZW1ibGVyTGFiZWwg
ZnJvbSwgQXNzZW1ibGVyTGFiZWwgdG8sIEp1bXBUeXBlIHR5cGUgPSBKdW1wRmFyKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKHRvLmlzU2V0KCkpOwotICAgICAgICBBU1NFUlQoZnJvbS5pc1NldCgp
KTsKLQotICAgICAgICB1aW50MTZfdCogaW5zdHJ1Y3Rpb25QdHIgPSBnZXRJbnN0cnVjdGlvblB0
cihkYXRhKCksIGZyb20ubV9vZmZzZXQpIC0gMTsKLSAgICAgICAgaW50IG9mZnNldEJpdHMgPSAo
dG8ubV9vZmZzZXQgLSBmcm9tLm1fb2Zmc2V0KTsKLQotICAgICAgICBpZiAodHlwZSA9PSBKdW1w
TmVhcikgewotICAgICAgICAgICAgdWludDE2X3QgaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvblB0
clswXTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAob2Zmc2V0Qml0cyAtIDIpOwotICAgICAg
ICAgICAgQVNTRVJUKCgoKGluc3RydWN0aW9uID09IEJUX09QQ09ERSkgfHwgKGluc3RydWN0aW9u
ID09IEJGX09QQ09ERSkpICYmIChvZmZzZXQgPj0gLTI1NikgJiYgKG9mZnNldCA8PSAyNTQpKQot
ICAgICAgICAgICAgICAgIHx8ICgoaW5zdHJ1Y3Rpb24gPT0gQlJBX09QQ09ERSkgJiYgKG9mZnNl
dCA+PSAtNDA5NikgJiYgKG9mZnNldCA8PSA0MDk0KSkpOwotICAgICAgICAgICAgKmluc3RydWN0
aW9uUHRyKysgPSBpbnN0cnVjdGlvbiB8IChvZmZzZXQgPj4gMSk7Ci0gICAgICAgICAgICBwcmlu
dEluc3RyKCppbnN0cnVjdGlvblB0ciwgZnJvbS5tX29mZnNldCArIDIpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogTU9WICMgaW1tLCByZWcgPT4gTERSIHJl
ZwotICAgICAgICAgICBicmFmIEByZWcgICAgICAgICBicmFmIEByZWcKLSAgICAgICAgICAgbm9w
ICAgICAgICAgICAgICAgbm9wCi0gICAgICAgICovCi0gICAgICAgIGluc3RydWN0aW9uUHRyIC09
IDI7Ci0gICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMV0gJiAweGYwZmYpID09IEJSQUZf
T1BDT0RFKTsKLQotICAgICAgICBpZiAoKGluc3RydWN0aW9uUHRyWzBdICYgMHhmMDAwKSA9PSBN
T1ZJTU1fT1BDT0RFKSB7Ci0gICAgICAgICAgICB1aW50MzJfdCogYWRkciA9IGdldExkckltbUFk
ZHJlc3NPblBvb2woaW5zdHJ1Y3Rpb25QdHIsIG1fYnVmZmVyLnBvb2xBZGRyZXNzKCkpOwotICAg
ICAgICAgICAgKmFkZHIgPSBvZmZzZXRCaXRzOwotICAgICAgICAgICAgcHJpbnRJbnN0cigqaW5z
dHJ1Y3Rpb25QdHIsIGZyb20ubV9vZmZzZXQgKyAyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAweGYwMDApID09
IE1PVkxfUkVBRF9PRkZQQ19PUENPREUpOwotICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVz
cygoKmluc3RydWN0aW9uUHRyICYgMHhmZiksIGluc3RydWN0aW9uUHRyLCBvZmZzZXRCaXRzKTsK
LSAgICAgICAgcHJpbnRJbnN0cigqaW5zdHJ1Y3Rpb25QdHIsIGZyb20ubV9vZmZzZXQgKyAyKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCogZ2V0UmVsb2NhdGVkQWRkcmVzcyh2b2lkKiBjb2Rl
LCBBc3NlbWJsZXJMYWJlbCBsYWJlbCkKLSAgICB7Ci0gICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqPihyZWludGVycHJldF9jYXN0PGNoYXIqPihjb2RlKSArIGxhYmVsLm1fb2Zm
c2V0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgaW50IGdldERpZmZlcmVuY2VCZXR3ZWVuTGFiZWxz
KEFzc2VtYmxlckxhYmVsIGEsIEFzc2VtYmxlckxhYmVsIGIpCi0gICAgewotICAgICAgICByZXR1
cm4gYi5tX29mZnNldCAtIGEubV9vZmZzZXQ7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgcGF0
Y2hQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIHdoZXJlLCB2b2lkKiB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIHBhdGNoUG9pbnRlcihyZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4o
Y29kZSkgKyB3aGVyZS5tX29mZnNldCwgdmFsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lk
IHBhdGNoUG9pbnRlcih2b2lkKiBjb2RlLCB2b2lkKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHBh
dGNoSW50MzIoY29kZSwgcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4odmFsdWUpKTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgdm9pZCBwYXRjaEludDMyKHZvaWQqIGNvZGUsIHVpbnQzMl90IHZhbHVl
KQotICAgIHsKLSAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3MoKCoocmVpbnRlcnByZXRf
Y2FzdDx1aW50MTZfdCo+KGNvZGUpKSAmIDB4ZmYpLCByZWludGVycHJldF9jYXN0PHVpbnQxNl90
Kj4oY29kZSksIHZhbHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdWludDMyX3QgcmVhZEludDMy
KHZvaWQqIGNvZGUpCi0gICAgewotICAgICAgICByZXR1cm4gcmVhZFBDcmVsYXRpdmVBZGRyZXNz
KCgqKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihjb2RlKSkgJiAweGZmKSwgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MTZfdCo+KGNvZGUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCogcmVh
ZENhbGxUYXJnZXQodm9pZCogZnJvbSkKLSAgICB7Ci0gICAgICAgIHVpbnQxNl90KiBpbnN0cnVj
dGlvblB0ciA9IHN0YXRpY19jYXN0PHVpbnQxNl90Kj4oZnJvbSk7Ci0gICAgICAgIGluc3RydWN0
aW9uUHRyIC09IDM7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWFk
UENyZWxhdGl2ZUFkZHJlc3MoKCppbnN0cnVjdGlvblB0ciAmIDB4ZmYpLCBpbnN0cnVjdGlvblB0
cikpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGNhY2hlRmx1c2godm9pZCogY29kZSwgc2l6
ZV90IHNpemUpCi0gICAgewotI2lmIE9TKExJTlVYKQotICAgICAgICAvLyBGbHVzaCBlYWNoIHBh
Z2Ugc2VwYXJhdGVseSwgb3RoZXJ3aXNlIHRoZSB3aG9sZSBmbHVzaCB3aWxsIGZhaWwgaWYgYW4g
dW5jb21taXRlZCBwYWdlIGlzIGluIHRoZSBhcmVhLgotICAgICAgICB1bnNpZ25lZCBjdXJyZW50
UGFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KGNvZGUpICYgfihwYWdlU2l6ZSgpIC0g
MSk7Ci0gICAgICAgIHVuc2lnbmVkIGxhc3RQYWdlID0gKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWdu
ZWQ+KGNvZGUpICsgc2l6ZSAtIDEpICYgfihwYWdlU2l6ZSgpIC0gMSk7Ci0gICAgICAgIGRvIHsK
LSNpZiBkZWZpbmVkIENBQ0hFRkxVU0hfRF9MMgotICAgICAgICAgICAgc3lzY2FsbChfX05SX2Nh
Y2hlZmx1c2gsIGN1cnJlbnRQYWdlLCBwYWdlU2l6ZSgpLCBDQUNIRUZMVVNIX0RfV0IgfCBDQUNI
RUZMVVNIX0kgfCBDQUNIRUZMVVNIX0RfTDIpOwotI2Vsc2UKLSAgICAgICAgICAgIHN5c2NhbGwo
X19OUl9jYWNoZWZsdXNoLCBjdXJyZW50UGFnZSwgcGFnZVNpemUoKSwgQ0FDSEVGTFVTSF9EX1dC
IHwgQ0FDSEVGTFVTSF9JKTsKLSNlbmRpZgotICAgICAgICAgICAgY3VycmVudFBhZ2UgKz0gcGFn
ZVNpemUoKTsKLSAgICAgICAgfSB3aGlsZSAobGFzdFBhZ2UgPj0gY3VycmVudFBhZ2UpOwotI2Vs
c2UKLSNlcnJvciAiVGhlIGNhY2hlRmx1c2ggc3VwcG9ydCBpcyBtaXNzaW5nIG9uIHRoaXMgcGxh
dGZvcm0uIgotI2VuZGlmCi0gICAgfQotCi0gICAgdm9pZCBwcmVmaXgodWludDE2X3QgcHJlKQot
ICAgIHsKLSAgICAgICAgbV9idWZmZXIucHV0Qnl0ZShwcmUpOwotICAgIH0KLQotICAgIHZvaWQg
b25lU2hvcnRPcCh1aW50MTZfdCBvcGNvZGUsIGJvb2wgY2hlY2tzaXplID0gdHJ1ZSwgYm9vbCBp
c0RvdWJsZSA9IHRydWUpCi0gICAgewotICAgICAgICBwcmludEluc3RyKG9wY29kZSwgbV9idWZm
ZXIuY29kZVNpemUoKSwgaXNEb3VibGUpOwotICAgICAgICBpZiAoY2hlY2tzaXplKQotICAgICAg
ICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UobWF4SW5zdHJ1Y3Rpb25TaXplKTsKLSAgICAgICAg
bV9idWZmZXIucHV0U2hvcnRVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGVu
c3VyZVNwYWNlKGludCBzcGFjZSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLmVuc3VyZVNwYWNl
KHNwYWNlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGVuc3VyZVNwYWNlKGludCBpbnNuU3BhY2UsIGlu
dCBjb25zdFNwYWNlKQotICAgIHsKLSAgICAgICAgbV9idWZmZXIuZW5zdXJlU3BhY2UoaW5zblNw
YWNlLCBjb25zdFNwYWNlKTsKLSAgICB9Ci0KLSAgICAvLyBBZG1pbmlzdHJhdGl2ZSBtZXRob2Rz
Ci0KLSAgICB2b2lkKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9Ci0g
ICAgc2l6ZV90IGNvZGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29kZVNpemUoKTsg
fQotCi0gICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5kZWJ1Z09m
ZnNldCgpOyB9Ci0KLSNpZmRlZiBTSDRfQVNTRU1CTEVSX1RSQUNJTkcKLSAgICBzdGF0aWMgdm9p
ZCBwcmludEluc3RyKHVpbnQxNl90IG9wYywgdW5zaWduZWQgc2l6ZSwgYm9vbCBpc2RvdWJsZUlu
c3QgPSB0cnVlKQotICAgIHsKLSAgICAgICAgaWYgKCFnZXRlbnYoIkphdmFTY3JpcHRDb3JlRHVt
cEpJVCIpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNvbnN0IGNoYXIgKmZvcm1h
dCA9IDA7Ci0gICAgICAgIHByaW50ZlN0ZG91dEluc3RyKCJvZmZzZXQ6IDB4JTguOHhcdCIsIHNp
emUpOwotICAgICAgICBzd2l0Y2ggKG9wYykgewotICAgICAgICBjYXNlIEJSS19PUENPREU6Ci0g
ICAgICAgICAgICBmb3JtYXQgPSAiICAgIEJSS1xuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIE5PUF9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIE5PUFxuIjsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJUU19PUENPREU6Ci0gICAgICAgICAg
ICBmb3JtYXQgPSIgICAgKlJUU1xuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFNFVFNfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBTRVRTXG4iOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU0VUVF9PUENPREU6Ci0gICAgICAgICAgICBmb3Jt
YXQgPSAiICAgIFNFVFRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDTFJU
X09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgQ0xSVFxuIjsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEZTQ0hHX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9
ICIgICAgRlNDSEdcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoZm9ybWF0KSB7Ci0gICAgICAgICAgICBwcmludGZTdGRvdXRJbnN0cihmb3JtYXQpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHN3aXRjaCAob3BjICYgMHhmMGZm
KSB7Ci0gICAgICAgIGNhc2UgQlJBRl9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAg
ICpCUkFGIFIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERUX09QQ09E
RToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgRFQgUiVkXG4iOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ01QUExfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAg
ICBDTVAvUEwgUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ01QUFpf
T1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBDTVAvUFogUiVkXG4iOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSk1QX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1h
dCA9ICIgICAgKkpNUCBAUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
SlNSX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgKkpTUiBAUiVkXG4iOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTERTUFJfT1BDT0RFOgotICAgICAgICAgICAg
Zm9ybWF0ID0gIiAgICBMRFMgUiVkLCBQUlxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIExEU0xQUl9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIExEUy5MIEBS
JWQrLCBQUlxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PVlRfT1BDT0RF
OgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBNT1ZUIFIlZFxuIjsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFNIQUxfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAg
ICBTSEFMIFIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNIQVJfT1BD
T0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBTSEFSIFIlZFxuIjsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFNITExfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0g
IiAgICBTSExMIFIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNITEwy
X09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgU0hMTDIgUiVkXG4iOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU0hMTDhfT1BDT0RFOgotICAgICAgICAgICAgZm9y
bWF0ID0gIiAgICBTSExMOCBSJWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBTSExMMTZfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBTSExMMTYgUiVkXG4i
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU0hMUl9PUENPREU6Ci0gICAgICAg
ICAgICBmb3JtYXQgPSAiICAgIFNITFIgUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgU0hMUjJfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBTSExSMiBS
JWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTSExSOF9PUENPREU6Ci0g
ICAgICAgICAgICBmb3JtYXQgPSAiICAgIFNITFI4IFIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFNITFIxNl9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAg
IFNITFIxNiBSJWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVFNQUl9P
UENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIFNUUyBQUiwgUiVkXG4iOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1RTTFBSX09QQ09ERToKLSAgICAgICAgICAgIGZv
cm1hdCA9ICIgICAgU1RTLkwgUFIsIEAtUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgTERTX1JNX0ZQVUxfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBM
RFMgUiVkLCBGUFVMXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1RTX0ZQ
VUxfUk5fT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBTVFMgRlBVTCwgUiVkIFxu
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZMRFNfRlJNX0ZQVUxfT1BDT0RF
OgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBGTERTIEZSJWQsIEZQVUxcbiI7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGU1RTX0ZQVUxfRlJOX09QQ09ERToKLSAgICAgICAg
ICAgIGZvcm1hdCA9ICIgICAgRlNUUyBGUFVMLCBSJWQgXG4iOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTERTRlBTQ1JfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAg
ICBMRFMgUiVkLCBGUFNDUiBcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
VFNGUFNDUl9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIFNUUyBGUFNDUiwgUiVk
IFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNUU01BQ0xfT1BDT0RFOgot
ICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBTVFMgTUFDTCwgUiVkIFxuIjsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFNUU01BQ0hfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0
ID0gIiAgICBTVFMgTUFDSCwgUiVkIFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEJTUkZfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICAqQlNSRiBSJWQiOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRlRSQ19PUENPREU6Ci0gICAgICAgICAg
ICBmb3JtYXQgPSAiICAgIEZUUkMgRlIlZCwgRlBVTFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChmb3JtYXQpIHsKLSAgICAgICAgICAgIHByaW50ZlN0ZG91
dEluc3RyKGZvcm1hdCwgZ2V0Um4ob3BjKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgc3dpdGNoIChvcGMgJiAweGYwZmYpIHsKLSAgICAgICAgY2FzZSBGTkVHX09Q
Q09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgRk5FRyBEUiVkXG4iOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRkxPQVRfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0
ID0gIiAgICBGTE9BVCBEUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
RlRSQ19PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIEZUUkMgRlIlZCwgRlBVTFxu
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZBQlNfT1BDT0RFOgotICAgICAg
ICAgICAgZm9ybWF0ID0gIiAgICBGQUJTIEZSJWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBGU1FSVF9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIEZTUVJU
IEZSJWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGQ05WRFNfRFJNX0ZQ
VUxfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBGQ05WRFMgRlIlZCwgRlBVTFxu
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZDTlZTRF9GUFVMX0RSTl9PUENP
REU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIEZDTlZTRCBGUFVMLCBGUiVkXG4iOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGZvcm1hdCkgewotICAgICAg
ICAgICAgaWYgKGlzZG91YmxlSW5zdCkKLSAgICAgICAgICAgICAgICBwcmludGZTdGRvdXRJbnN0
cihmb3JtYXQsIGdldERSbihvcGMpIDw8IDEpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHByaW50ZlN0ZG91dEluc3RyKGZvcm1hdCwgZ2V0Um4ob3BjKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChvcGMgJiAweGYwMGYpIHsKLSAg
ICAgICAgY2FzZSBBRERfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBBREQgUiVk
LCBSJWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBRERDX09QQ09ERToK
LSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgQUREQyBSJWQsIFIlZFxuIjsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEFERFZfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0g
IiAgICBBRERWIFIlZCwgUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
QU5EX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgQU5EIFIlZCwgUiVkXG4iOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRElWMV9PUENPREU6Ci0gICAgICAgICAg
ICBmb3JtYXQgPSAiICAgIERJVjEgUiVkLCBSJWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBDTVBFUV9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIENNUC9F
USBSJWQsIFIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENNUEdFX09Q
Q09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgQ01QL0dFIFIlZCwgUiVkXG4iOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ01QR1RfT1BDT0RFOgotICAgICAgICAgICAg
Zm9ybWF0ID0gIiAgICBDTVAvR1QgUiVkLCBSJWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBDTVBISV9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIENNUC9I
SSBSJWQsIFIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENNUEhTX09Q
Q09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgQ01QL0hTIFIlZCwgUiVkXG4iOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9WX09QQ09ERToKLSAgICAgICAgICAgIGZv
cm1hdCA9ICIgICAgTU9WIFIlZCwgUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgTU9WQl9XUklURV9STl9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIE1P
Vi5CIFIlZCwgQFIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PVkJf
V1JJVEVfUk5ERUNfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBNT1YuQiBSJWQs
IEAtUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9WQl9XUklURV9S
MFJOX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgTU9WLkIgUiVkLCBAKFIwLCBS
JWQpXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9WQl9SRUFEX1JNX09Q
Q09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgTU9WLkIgQFIlZCwgUiVkXG4iOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9WQl9SRUFEX1JNSU5DX09QQ09ERToKLSAg
ICAgICAgICAgIGZvcm1hdCA9ICIgICAgTU9WLkIgQFIlZCssIFIlZFxuIjsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIE1PVkJfUkVBRF9SMFJNX09QQ09ERToKLSAgICAgICAgICAg
IGZvcm1hdCA9ICIgICAgTU9WLkIgQChSMCwgUiVkKSwgUiVkXG4iOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTU9WTF9XUklURV9STl9PUENPREU6Ci0gICAgICAgICAgICBmb3Jt
YXQgPSAiICAgIE1PVi5MIFIlZCwgQFIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIE1PVkxfV1JJVEVfUk5ERUNfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAg
ICBNT1YuTCBSJWQsIEAtUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
TU9WTF9XUklURV9SMFJOX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgTU9WLkwg
UiVkLCBAKFIwLCBSJWQpXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9W
TF9SRUFEX1JNX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgTU9WLkwgQFIlZCwg
UiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9WTF9SRUFEX1JNSU5D
X09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgTU9WLkwgQFIlZCssIFIlZFxuIjsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PVkxfUkVBRF9SMFJNX09QQ09ERToK
LSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgTU9WLkwgQChSMCwgUiVkKSwgUiVkXG4iOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTVVMTF9PUENPREU6Ci0gICAgICAgICAgICBm
b3JtYXQgPSAiICAgIE1VTC5MIFIlZCwgUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgRE1VTExfTF9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIERNVUxV
LkwgUiVkLCBSJWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBETVVMU0xf
T1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBETVVMUy5MIFIlZCwgUiVkXG4iOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTkVHX09QQ09ERToKLSAgICAgICAgICAg
IGZvcm1hdCA9ICIgICAgTkVHIFIlZCwgUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgTkVHQ19PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIE5FR0MgUiVk
LCBSJWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOT1RfT1BDT0RFOgot
ICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBOT1QgUiVkLCBSJWRcbiI7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBPUl9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAg
IE9SIFIlZCwgUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU0hBRF9P
UENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIFNIQUQgUiVkLCBSJWRcbiI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTSExEX09QQ09ERToKLSAgICAgICAgICAgIGZv
cm1hdCA9ICIgICAgU0hMRCBSJWQsIFIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFNVQl9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIFNVQiBSJWQsIFIl
ZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNVQkNfT1BDT0RFOgotICAg
ICAgICAgICAgZm9ybWF0ID0gIiAgICBTVUJDIFIlZCwgUiVkXG4iOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgU1VCVl9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAg
IFNVQlYgUiVkLCBSJWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUU1Rf
T1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBUU1QgUiVkLCBSJWRcbiI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBYT1JfT1BDT0RFOgotICAgICAgICAgICAgZm9y
bWF0ID0gIiAgICBYT1IgUiVkLCBSJWRcbiI7YnJlYWs7Ci0gICAgICAgIGNhc2UgTU9WV19XUklU
RV9STl9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIE1PVi5XIFIlZCwgQFIlZFxu
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PVldfUkVBRF9STV9PUENPREU6
Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIE1PVi5XIEBSJWQsIFIlZFxuIjsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PVldfUkVBRF9STUlOQ19PUENPREU6Ci0gICAgICAg
ICAgICBmb3JtYXQgPSAiICAgIE1PVi5XIEBSJWQrLCBSJWRcbiI7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBNT1ZXX1JFQURfUjBSTV9PUENPREU6Ci0gICAgICAgICAgICBmb3Jt
YXQgPSAiICAgIE1PVi5XIEAoUjAsIFIlZCksIFIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE1PVldfV1JJVEVfUjBSTl9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQg
PSAiICAgIE1PVi5XIFIlZCwgQChSMCwgUiVkKVxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEVYVFVCX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgRVhUVS5C
IFIlZCwgUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVhUVVdfT1BD
T0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBFWFRVLlcgUiVkLCBSJWRcbiI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoZm9ybWF0KSB7Ci0gICAgICAg
ICAgICBwcmludGZTdGRvdXRJbnN0cihmb3JtYXQsIGdldFJtKG9wYyksIGdldFJuKG9wYykpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHN3aXRjaCAob3BjICYgMHhm
MDBmKSB7Ci0gICAgICAgIGNhc2UgRlNVQl9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAi
ICAgIEZTVUIgRlIlZCwgRlIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEZBRERfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBGQUREIEZSJWQsIEZSJWRc
biI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGRElWX09QQ09ERToKLSAgICAg
ICAgICAgIGZvcm1hdCA9ICIgICAgRkRJViBGUiVkLCBGUiVkXG4iOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRk1VTF9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAg
IERNVUxMIEZSJWQsIEZSJWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBG
TU9WX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgRk1PViBGUiVkLCBGUiVkXG4i
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRkNNUEVRX09QQ09ERToKLSAgICAg
ICAgICAgIGZvcm1hdCA9ICIgICAgRkNNUC9FUSBGUiVkLCBGUiVkXG4iOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRkNNUEdUX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9
ICIgICAgRkNNUC9HVCBGUiVkLCBGUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGZvcm1hdCkgewotICAgICAgICAgICAgaWYgKGlzZG91YmxlSW5zdCkK
LSAgICAgICAgICAgICAgICBwcmludGZTdGRvdXRJbnN0cihmb3JtYXQsIGdldERSbShvcGMpIDw8
IDEsIGdldERSbihvcGMpIDw8IDEpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHByaW50ZlN0ZG91dEluc3RyKGZvcm1hdCwgZ2V0Um0ob3BjKSwgZ2V0Um4ob3BjKSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChvcGMgJiAweGYwMGYp
IHsKLSAgICAgICAgY2FzZSBGTU9WU19XUklURV9STl9ERUNfT1BDT0RFOgotICAgICAgICAgICAg
Zm9ybWF0ID0gIiAgICAlcyBGUiVkLCBALVIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEZNT1ZTX1dSSVRFX1JOX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIg
ICAgJXMgRlIlZCwgQFIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZN
T1ZTX1dSSVRFX1IwUk5fT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICAlcyBGUiVk
LCBAKFIwLCBSJWQpXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGZvcm1hdCkgewotICAgICAgICAgICAgaWYgKGlzZG91YmxlSW5zdCkKLSAgICAgICAgICAg
ICAgICBwcmludGZTdGRvdXRJbnN0cihmb3JtYXQsICJGTU9WIiwgZ2V0RFJtKG9wYykgPDwgMSwg
Z2V0RFJuKG9wYykpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHByaW50ZlN0
ZG91dEluc3RyKGZvcm1hdCwgIkZNT1YuUyIsIGdldFJtKG9wYyksIGdldFJuKG9wYykpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHN3aXRjaCAob3BjICYgMHhmMDBm
KSB7Ci0gICAgICAgIGNhc2UgRk1PVlNfUkVBRF9STV9PUENPREU6Ci0gICAgICAgICAgICBmb3Jt
YXQgPSAiICAgICVzIEBSJWQsIEZSJWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBGTU9WU19SRUFEX1JNX0lOQ19PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAg
ICVzIEBSJWQrLCBGUiVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRk1P
VlNfUkVBRF9SMFJNX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgJXMgQChSMCwg
UiVkKSwgRlIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChmb3JtYXQpIHsKLSAgICAgICAgICAgIGlmIChpc2RvdWJsZUluc3QpCi0gICAgICAgICAgICAg
ICAgcHJpbnRmU3Rkb3V0SW5zdHIoZm9ybWF0LCAiRk1PViIsIGdldERSbShvcGMpLCBnZXREUm4o
b3BjKSA8PCAxKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwcmludGZTdGRv
dXRJbnN0cihmb3JtYXQsICJGTU9WLlMiLCBnZXRSbShvcGMpLCBnZXRSbihvcGMpKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBzd2l0Y2ggKG9wYyAmIDB4ZmYwMCkg
ewotICAgICAgICBjYXNlIEJGX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgQkYg
JWRcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCRlNfT1BDT0RFOgotICAg
ICAgICAgICAgZm9ybWF0ID0gIiAgICAqQkYvUyAlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEFORElNTV9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIEFO
RCAjJWQsIFIwXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQlRfT1BDT0RF
OgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBCVCAlZFxuIjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEJUU19PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgICpC
VC9TICVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ01QRVFJTU1fT1BD
T0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBDTVAvRVEgIyVkLCBSMFxuIjsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PVkJfV1JJVEVfT0ZGR0JSX09QQ09ERToKLSAg
ICAgICAgICAgIGZvcm1hdCA9ICIgICAgTU9WLkIgUjAsIEAoJWQsIEdCUilcbiI7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNT1ZCX1JFQURfT0ZGR0JSX09QQ09ERToKLSAgICAg
ICAgICAgIGZvcm1hdCA9ICIgICAgTU9WLkIgQCglZCwgR0JSKSwgUjBcbiI7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBNT1ZMX1dSSVRFX09GRkdCUl9PUENPREU6Ci0gICAgICAg
ICAgICBmb3JtYXQgPSAiICAgIE1PVi5MIFIwLCBAKCVkLCBHQlIpXG4iOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgTU9WTF9SRUFEX09GRkdCUl9PUENPREU6Ci0gICAgICAgICAg
ICBmb3JtYXQgPSAiICAgIE1PVi5MIEAoJWQsIEdCUiksIFIwXG4iOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTU9WQV9SRUFEX09GRlBDX09QQ09ERToKLSAgICAgICAgICAgIGZv
cm1hdCA9ICIgICAgTU9WQSBAKCVkLCBQQyksIFIwXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgT1JJTU1fT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBPUiAj
JWQsIFIwXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgT1JCSU1NX09QQ09E
RToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgT1IuQiAjJWQsIEAoUjAsIEdCUilcbiI7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUU1RJTU1fT1BDT0RFOgotICAgICAgICAg
ICAgZm9ybWF0ID0gIiAgICBUU1QgIyVkLCBSMFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFRTVEJfT1BDT0RFOgotICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBUU1QuQiAl
ZCwgQChSMCwgR0JSKVxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFhPUklN
TV9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIFhPUiAjJWQsIFIwXG4iOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgWE9SQl9PUENPREU6Ci0gICAgICAgICAgICBm
b3JtYXQgPSAiICAgIFhPUi5CICVkLCBAKFIwLCBHQlIpXG4iOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGZvcm1hdCkgewotICAgICAgICAgICAgcHJpbnRmU3Rk
b3V0SW5zdHIoZm9ybWF0LCBnZXRJbW04KG9wYykpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIHN3aXRjaCAob3BjICYgMHhmZjAwKSB7Ci0gICAgICAgIGNhc2UgTU9W
Ql9XUklURV9PRkZSTl9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIE1PVi5CIFIw
LCBAKCVkLCBSJWQpXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9WQl9S
RUFEX09GRlJNX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgTU9WLkIgQCglZCwg
UiVkKSwgUjBcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAo
Zm9ybWF0KSB7Ci0gICAgICAgICAgICBwcmludGZTdGRvdXRJbnN0cihmb3JtYXQsIGdldERpc3Ao
b3BjKSwgZ2V0Um0ob3BjKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgc3dpdGNoIChvcGMgJiAweGYwMDApIHsKLSAgICAgICAgY2FzZSBCUkFfT1BDT0RFOgotICAg
ICAgICAgICAgZm9ybWF0ID0gIiAgICAqQlJBICVkXG4iOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQlNSX09QQ09ERToKLSAgICAgICAgICAgIGZvcm1hdCA9ICIgICAgKkJTUiAl
ZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChmb3JtYXQp
IHsKLSAgICAgICAgICAgIHByaW50ZlN0ZG91dEluc3RyKGZvcm1hdCwgZ2V0SW1tMTIob3BjKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChvcGMgJiAw
eGYwMDApIHsKLSAgICAgICAgY2FzZSBNT1ZMX1JFQURfT0ZGUENfT1BDT0RFOgotICAgICAgICAg
ICAgZm9ybWF0ID0gIiAgICBNT1YuTCBAKCVkLCBQQyksIFIlZFxuIjsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEFERElNTV9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAi
ICAgIEFERCAjJWQsIFIlZFxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1P
VklNTV9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIE1PViAjJWQsIFIlZFxuIjsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PVldfUkVBRF9PRkZQQ19PUENPREU6
Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIE1PVi5XIEAoJWQsIFBDKSwgUiVkXG4iOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGZvcm1hdCkgewotICAgICAg
ICAgICAgcHJpbnRmU3Rkb3V0SW5zdHIoZm9ybWF0LCBnZXRJbW04KG9wYyksIGdldFJuKG9wYykp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHN3aXRjaCAob3BjICYg
MHhmMDAwKSB7Ci0gICAgICAgIGNhc2UgTU9WTF9XUklURV9PRkZSTl9PUENPREU6Ci0gICAgICAg
ICAgICBmb3JtYXQgPSAiICAgIE1PVi5MIFIlZCwgQCglZCwgUiVkKVxuIjsKLSAgICAgICAgICAg
IHByaW50ZlN0ZG91dEluc3RyKGZvcm1hdCwgZ2V0Um0ob3BjKSwgZ2V0RGlzcChvcGMpLCBnZXRS
bihvcGMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PVkxfUkVBRF9PRkZS
TV9PUENPREU6Ci0gICAgICAgICAgICBmb3JtYXQgPSAiICAgIE1PVi5MIEAoJWQsIFIlZCksIFIl
ZFxuIjsKLSAgICAgICAgICAgIHByaW50ZlN0ZG91dEluc3RyKGZvcm1hdCwgZ2V0RGlzcChvcGMp
LCBnZXRSbShvcGMpLCBnZXRSbihvcGMpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgcHJpbnRmU3Rkb3V0SW5zdHIoY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pCi0gICAgewotICAgICAgICBpZiAoZ2V0ZW52KCJKYXZhU2NyaXB0Q29yZUR1
bXBKSVQiKSkgewotICAgICAgICAgICAgdmFfbGlzdCBhcmdzOwotICAgICAgICAgICAgdmFfc3Rh
cnQoYXJncywgZm9ybWF0KTsKLSAgICAgICAgICAgIHZwcmludGZTdGRvdXRJbnN0cihmb3JtYXQs
IGFyZ3MpOwotICAgICAgICAgICAgdmFfZW5kKGFyZ3MpOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgc3RhdGljIHZvaWQgdnByaW50ZlN0ZG91dEluc3RyKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFf
bGlzdCBhcmdzKQotICAgIHsKLSAgICAgICAgaWYgKGdldGVudigiSmF2YVNjcmlwdENvcmVEdW1w
SklUIikpCi0gICAgICAgICAgICBXVEY6OmRhdGFMb2dGVihmb3JtYXQsIGFyZ3MpOwotICAgIH0K
LQotICAgIHN0YXRpYyB2b2lkIHByaW50QmxvY2tJbnN0cih1aW50MTZfdCogZmlyc3QsIHVuc2ln
bmVkIG9mZnNldCwgaW50IG5iSW5zdHIpCi0gICAgewotICAgICAgICBwcmludGZTdGRvdXRJbnN0
cigiPj4gcmVwYXRjaCBpbnN0cnVjdGlvbnMgYWZ0ZXIgbGlua1xuIik7Ci0gICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDw9IG5iSW5zdHI7IGkrKykKLSAgICAgICAgICAgIHByaW50SW5zdHIoKihm
aXJzdCArIGkpLCBvZmZzZXQgKyBpKTsKLSAgICAgICAgcHJpbnRmU3Rkb3V0SW5zdHIoIj4+IGVu
ZCByZXBhdGNoXG4iKTsKLSAgICB9Ci0jZWxzZQotICAgIHN0YXRpYyB2b2lkIHByaW50SW5zdHIo
dWludDE2X3QsIHVuc2lnbmVkLCBib29sID0gdHJ1ZSkgeyB9OwotICAgIHN0YXRpYyB2b2lkIHBy
aW50QmxvY2tJbnN0cih1aW50MTZfdCosIHVuc2lnbmVkLCBpbnQpIHsgfTsKLSNlbmRpZgotCi0g
ICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCi0g
ICAgewotICAgICAgICBTSDRXb3JkKiBpbnNQdHIgPSByZWludGVycHJldF9jYXN0PFNINFdvcmQq
PihpbnN0cnVjdGlvblN0YXJ0KTsKLQotICAgICAgICBpbnNQdHIgKz0gMjsgLy8gc2tpcCBNT1Yg
YW5kIEFERCBvcGNvZGVzCi0KLSAgICAgICAgaWYgKCgoKmluc1B0cikgJiAweGYwMGYpICE9IE1P
VkxfUkVBRF9STV9PUENPREUpIHsKLSAgICAgICAgICAgICppbnNQdHIgPSBNT1ZMX1JFQURfUk1f
T1BDT0RFIHwgKCppbnNQdHIgJiAweDBmZjApOwotICAgICAgICAgICAgY2FjaGVGbHVzaChpbnNQ
dHIsIHNpemVvZihTSDRXb3JkKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbih2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQot
ICAgIHsKLSAgICAgICAgU0g0V29yZCogaW5zUHRyID0gcmVpbnRlcnByZXRfY2FzdDxTSDRXb3Jk
Kj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0KLSAgICAgICAgaW5zUHRyICs9IDI7IC8vIHNraXAgTU9W
IGFuZCBBREQgb3Bjb2RlcwotCi0gICAgICAgIGlmICgoKCppbnNQdHIpICYgMHhmMDBmKSAhPSBN
T1ZfT1BDT0RFKSB7Ci0gICAgICAgICAgICAqaW5zUHRyID0gTU9WX09QQ09ERSB8ICgqaW5zUHRy
ICYgMHgwZmYwKTsKLSAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zUHRyLCBzaXplb2YoU0g0V29y
ZCkpOwotICAgICAgICB9Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFNINEJ1ZmZlciBtX2J1ZmZl
cjsKLSAgICBpbnQgbV9jbGFpbXNjcmF0Y2hSZWc7Ci0gICAgaW50IG1faW5kZXhPZkxhc3RXYXRj
aHBvaW50OwotICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKFNI
NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ET01KSVRBY2Nl
c3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwCmluZGV4IDk1ZTE0MDEuLjc5
MGQ5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ET01KSVRB
Y2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcApAQCAtNTksNyAr
NTksNyBAQCBwdWJsaWM6CiAKICAgICAgICAgaml0Lm1ha2VTcGFjZU9uU3RhY2tGb3JDQ2FsbCgp
OwogCi0gICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIGRvIG5vdCBjaGVjayBhbnkgQVJN
IEVBQkkgLyBTSDQgdGhpbmdzIGhlcmUuCisgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdl
IGRvIG5vdCBjaGVjayBhbnkgQVJNIEVBQkkgdGhpbmdzIGhlcmUuCiAgICAgICAgIC8vIEJ1dCBp
dCBpcyBPSyBiZWNhdXNlIGEgY29tcGlsZSBlcnJvciBoYXBwZW5zIHdoZW4geW91IHBhc3MgSlNW
YWx1ZVJlZ3MgYXMgYW4gYXJndW1lbnQuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMwOTkKICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShzdGQ6OmdldDxBcmd1bWVudHNJbmRleD4obV9hcmd1bWVudHMpLi4uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBkZTAw
NmNjLi5iMGYwZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCkBAIC0yMTUxLDEzICsyMTUxLDEzIEBAIHB1YmxpYzoKIAogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7Ci0g
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1Z
X0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSwgU0g0XzMyQklUX0RVTU1ZX0FS
RyBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSk7CisgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRH
UFIoKSwgYXJnMS50YWdHUFIoKSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCkpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlv
bl9FR0pKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdz
IGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCks
IFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCkpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXls
b2FkR1BSKCksIGFyZzIudGFnR1BSKCksIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigp
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0
aW9uX0VHUmVvSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMykKQEAgLTIxNzIsMjIgKzIxNzIsMjIgQEAgcHVibGljOgog
ICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VKSiBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSwgSlNW
YWx1ZVJlZ3MgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdH
UFIoKSwgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIo
KSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklU
X0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSwgYXJnMi5wYXlsb2Fk
R1BSKCksIGFyZzIudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdK
SiBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTVmFsdWVSZWdz
IGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCks
IFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCkpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMi5wYXls
b2FkR1BSKCksIGFyZzIudGFnR1BSKCksIGFyZzMucGF5bG9hZEdQUigpLCBhcmczLnRhZ0dQUigp
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQu
cGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEpTVmFsdWVS
ZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MiBpbW0pCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
RUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCksIFNI
NF8zMkJJVF9EVU1NWV9BUkcgaW1tLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVN
TVlfQVJHIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBpbW0sIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpJbnQzMlRhZykpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpK
IG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyIGltbSwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBpbW0sIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpJbnQzMlRhZyksIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMi5wYXlsb2FkR1BS
KCksIGFyZzIudGFnR1BSKCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgaW1tLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50
MzJUYWcpLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSk7CiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVz
dWx0LnRhZ0dQUigpKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSkpKIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1Zh
bHVlUmVncyBhcmcxLCBKU1ZhbHVlUmVncyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczKQpAQCAtMjI0
NywyMyArMjI0NywyMyBAQCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFZfSklUT3BlcmF0aW9uX0VQWkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIEpTVmFsdWVSZWdzIGFyZzMpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgU0g0XzMy
QklUX0RVTU1ZX0FSRyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSk7CisgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklU
X0RVTU1ZX0FSRyBhcmczLnBheWxvYWRHUFIoKSwgYXJnMy50YWdHUFIoKSk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT1pKIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczKQogICAgIHsKLSAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlf
QVJHIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCkp
OworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
RUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BSKCksIGFyZzMudGFnR1BSKCkpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPWkogb3BlcmF0aW9uLCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczVGFnLCBHUFJSZWcgYXJn
M1BheWxvYWQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgU0g0XzMyQklUX0RVTU1ZX0FSRyBh
cmczUGF5bG9hZCwgYXJnM1RhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJn
M1RhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9aSiBvcGVy
YXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBh
cmczUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBTSDRfMzJCSVRfRFVNTVlfQVJH
IGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2FkLCBh
cmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAK
QEAgLTIzMTQsNyArMjMxNCw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFM
VUUzMl82NCkKICAgICAKLSNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKSAmJiAhQ1BV
KE1JUFMpICYmICFDUFUoU0g0KQorI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk0pICYm
ICFDUFUoTUlQUykKICAgICB2b2lkIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKQogICAgIHsKICAg
ICAgICAgLy8gV2UncmUgYWJvdXQgdG8gY2FsbCBvdXQgdG8gYSAibmF0aXZlIiBoZWxwZXIgZnVu
Y3Rpb24uIFRoZSBoZWxwZXIKQEAgLTIzODQsNyArMjM4NCw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIG1faml0LmFzc2VtYmxlcigpLnZtb3YocmVzdWx0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
UiwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAg
fQotI2Vsc2UgLy8gQ1BVKFg4Nl82NCkgfHwgKENQVShBUk0pICYmIENQVShBUk1fSEFSREZQKSkg
fHwgQ1BVKEFSTTY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFNINCkKKyNlbHNlIC8vIENQVShYODZf
NjQpIHx8IChDUFUoQVJNKSAmJiBDUFUoQVJNX0hBUkRGUCkpIHx8IENQVShBUk02NCkgfHwgQ1BV
KE1JUFMpCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFNldFJlc3VsdChjb25zdCBG
dW5jdGlvblB0ciYgZnVuY3Rpb24sIEZQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCAzMzE4ZmY4Li5lZTc0MTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTUzNCw0
MyArNTM0LDYgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCi0jaWYgQ1BVKFNINCkKLSAgICBz
dGF0aWMgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQotICAgIHsKLSAgICAgICAg
Ly8gUHJvbG9ndWUgc2F2ZXMgdGhlIGZyYW1lUG9pbnRlclJlZ2lzdGVyIGFuZCBsaW5rIHJlZ2lz
dGVyCi0gICAgICAgIHJldHVybiAyICogc2l6ZW9mKHZvaWQqKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGVtaXRGdW5jdGlvblByb2xvZ3VlKCkKLSAgICB7Ci0gICAgICAgIHB1c2gobGlua1JlZ2lzdGVy
KTsKLSAgICAgICAgcHVzaChmcmFtZVBvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1vdmUoc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIGZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKCkKLSAgICB7Ci0gICAgICAgIG1vdmUoZnJhbWVQb2lu
dGVyUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgcG9wKGZyYW1lUG9p
bnRlclJlZ2lzdGVyKTsKLSAgICAgICAgcG9wKGxpbmtSZWdpc3Rlcik7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3Rl
cklEIHJlZykKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0c3ByKHJlZyk7Ci0gICAgfQot
Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJu
KFJlZ2lzdGVySUQgcmVnKQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRzcHIocmVnKTsK
LSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQotICAgIHsKLSAgICAgICAgbG9hZFB0ckxpbmtSZWco
YWRkcmVzcyk7Ci0gICAgfQotI2VuZGlmCi0KICAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1l
SGVhZGVyUHRyKGludCBlbnRyeSwgR1BSUmVnIHRvLCBHUFJSZWcgZnJvbSA9IEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyKQogICAgIHsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGZyb20sIGVu
dHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRvKTsKQEAgLTEwMjMsNyArOTg2LDcgQEAgcHVibGlj
OgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3Ro
UHRyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIo
c2NyYXRjaFNpemUpLCBHUFJJbmZvOjpyZWdUMCk7CiAKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUo
QVJNKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSB8fCBDUFUoU0g0KQorI2lmIENQVShYODZf
NjQpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpCiAgICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihidWZmZXIpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoYXJndW1lbnQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAg
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggMmUyZTgy
NC4uN2VlMjliMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBA
IC00OCwxNSArNDgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgRUFCSV8zMkJJVF9EVU1N
WV9BUkcKICNlbmRpZgogCi0vLyBKU1ZBTFVFMzJfNjQgaXMgYSA2NC1iaXQgaW50ZWdlciB0aGF0
IGNhbm5vdCBiZSBwdXQgaGFsZiBpbiBhbiBhcmd1bWVudCByZWdpc3RlciBhbmQgaGFsZiBvbiBz
dGFjayB3aGVuIHVzaW5nIFNINCBhcmNoaXRlY3R1cmUuCi0vLyBUbyBhdm9pZCB0aGlzLCBsZXQn
cyBvY2N1cHkgdGhlIDR0aCBhcmd1bWVudCByZWdpc3RlciAocjcpIHdpdGggYSBkdW1teSBhcmd1
bWVudCB3aGVuIG5lY2Vzc2FyeS4gVGhpcyBtdXN0IG9ubHkgYmUgZG9uZSB3aGVuIHRoZXJlCi0v
LyBpcyBubyBvdGhlciAzMi1iaXQgdmFsdWUgYXJndW1lbnQgYmVoaW5kIHRoaXMgNjQtYml0IEpT
VmFsdWUuCi0jaWYgQ1BVKFNINCkKLSNkZWZpbmUgU0g0XzMyQklUX0RVTU1ZX0FSRyAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDApLAotI2Vsc2UKLSNkZWZpbmUgU0g0XzMyQklUX0RV
TU1ZX0FSRwotI2VuZGlmCi0KIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhl
bHBlcnMgewogcHVibGljOgogICAgIENDYWxsSGVscGVycyhWTSogdm0sIENvZGVCbG9jayogY29k
ZUJsb2NrID0gMCkKQEAgLTEyMjksMzcgKzEyMjAsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnNCk7CiAgICAgfQot
I2VsaWYgQ1BVKFNINCkKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBS
UmVnIGFyZzEpCi0gICAgewotICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
KEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKLSAgICB7Ci0gICAgICAgIGlmIChhcmcyICE9IEZQ
UkluZm86OmFyZ3VtZW50RlBSMCkgewotICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjApOwotICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjEpOwotICAgICAgICB9IGVsc2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJn
dW1lbnRGUFIxKSB7Ci0gICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMSk7Ci0gICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50
RlBSMCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3dhcERvdWJsZShGUFJJbmZvOjph
cmd1bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7Ci0gICAgfQotCi0gICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIpCi0gICAgewotICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCk7Ci0gICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSAg
ICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCi0gICAgewot
ICAgICAgICBtb3ZlRG91YmxlKGFyZzMsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgICAg
IHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKLSAgICAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICB9CiAjZWxzZQog
I2Vycm9yICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgpAQCAt
MjQ2Miw3ICsyNDIyLDcgQEAgcHVibGljOgogCiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdGhl
IGN1cnJlbnQgZnJhbWUgYmV5b25kIHRoaXMgcG9pbnQuIE1hc3F1ZXJhZGUgYXMgb3VyCiAgICAg
ICAgIC8vIGNhbGxlci4KLSNpZiBDUFUoQVJNKSB8fCBDUFUoU0g0KSB8fCBDUFUoQVJNNjQpCisj
aWYgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KQogICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIHNpemVvZih2b2lkKikpLCBsaW5rUmVnaXN0ZXIpOwogICAgICAgICBz
dWJQdHIoVHJ1c3RlZEltbTMyKDIgKiBzaXplb2Yodm9pZCopKSwgbmV3RnJhbWVTaXplR1BSKTsK
ICNlbGlmIENQVShNSVBTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
YWxsRnJhbWVTaHVmZmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFt
ZVNodWZmbGVyLmNwcAppbmRleCA5MjAzZTQzLi5mZmJjN2U2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmNwcApAQCAtMzgzLDcgKzM4Myw3IEBA
IHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVGb3JUYWlsQ2FsbCgpCiAgICAgLy8gc3Ag
d2lsbCBwb2ludCB0byBoZWFkMCBhbmQgd2Ugd2lsbCBtb3ZlIGl0IHVwIGhhbGYgYSBzbG90CiAg
ICAgLy8gbWFudWFsbHkKICAgICBtX25ld0ZyYW1lT2Zmc2V0ID0gMDsKLSNlbGlmIENQVShBUk0p
IHx8IENQVShTSDQpIHx8IENQVShNSVBTKQorI2VsaWYgQ1BVKEFSTSkgfHwgQ1BVKE1JUFMpCiAg
ICAgLy8gV2UgbG9hZCB0aGUgdGhlIGZyYW1lIHBvaW50ZXIgYW5kIGxpbmsgcmVnaXN0ZXIKICAg
ICAvLyBtYW51YWxseS4gV2UgY291bGQgYXNrIHRoZSBhbGdvcml0aG0gdG8gbG9hZCB0aGVtIGZv
ciB1cywKICAgICAvLyBhbmQgaXQgd291bGQgYWxsb3cgdXMgdG8gdXNlIHRoZSBsaW5rIHJlZ2lz
dGVyIGFzIGFuIGV4dHJhCkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxl
cjo6cHJlcGFyZUZvclRhaWxDYWxsKCkKICAgICAgICAgbV9uZXdGcmFtZUJhc2UpOwogCiAgICAg
Ly8gV2UgbG9hZCB0aGUgbGluayByZWdpc3RlciBtYW51YWxseSBmb3IgYXJjaGl0ZWN0dXJlcyB0
aGF0IGhhdmUgb25lCi0jaWYgQ1BVKEFSTSkgfHwgQ1BVKFNINCkgfHwgQ1BVKEFSTTY0KQorI2lm
IENQVShBUk0pIHx8IENQVShBUk02NCkKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKHZv
aWQqKSksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpsaW5rUmVnaXN0ZXIpOwogI2VsaWYgQ1BV
KE1JUFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRv
ci5oCmluZGV4IDNkZjMzZjkuLjM5ZWEyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCkBAIC00NiwxMyArNDYsNiBAQAogI2luY2x1ZGUg
PHN5cy9jYWNoZWN0bC5oPgogI2VuZGlmCiAKLSNpZiBDUFUoU0g0KSAmJiBPUyhMSU5VWCkKLSNp
bmNsdWRlIDxhc20vY2FjaGVjdGwuaD4KLSNpbmNsdWRlIDxhc20vdW5pc3RkLmg+Ci0jaW5jbHVk
ZSA8c3lzL3N5c2NhbGwuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotCiAjZGVmaW5l
IEpJVF9BTExPQ0FUT1JfTEFSR0VfQUxMT0NfU0laRSAocGFnZVNpemUoKSAqIDQpCiAKICNkZWZp
bmUgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFIHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvRlBSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJ
bmZvLmgKaW5kZXggZjc2OTEzMy4uZWMwYWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9GUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJ
bmZvLmgKQEAgLTM0OSw2NyArMzQ5LDYgQEAgcHVibGljOgogCiAjZW5kaWYgLy8gQ1BVKE1JUFMp
CiAKLSNpZiBDUFUoU0g0KQotCi1jbGFzcyBGUFJJbmZvIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IEZQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9m
UmVnaXN0ZXJzID0gNjsKLQotICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCi0gICAgc3RhdGlj
IGNvbnN0IEZQUlJlZyBmcFJlZ1QwID0gU0g0UmVnaXN0ZXJzOjpkcjA7Ci0gICAgc3RhdGljIGNv
bnN0IEZQUlJlZyBmcFJlZ1QxID0gU0g0UmVnaXN0ZXJzOjpkcjI7Ci0gICAgc3RhdGljIGNvbnN0
IEZQUlJlZyBmcFJlZ1QyID0gU0g0UmVnaXN0ZXJzOjpkcjQ7Ci0gICAgc3RhdGljIGNvbnN0IEZQ
UlJlZyBmcFJlZ1QzID0gU0g0UmVnaXN0ZXJzOjpkcjY7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJl
ZyBmcFJlZ1Q0ID0gU0g0UmVnaXN0ZXJzOjpkcjg7Ci0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBm
cFJlZ1Q1ID0gU0g0UmVnaXN0ZXJzOjpkcjEwOwotCi0gICAgc3RhdGljIGNvbnN0IEZQUlJlZyBy
ZXR1cm5WYWx1ZUZQUiA9IFNINFJlZ2lzdGVyczo6ZHIwOwotCi0gICAgc3RhdGljIGNvbnN0IEZQ
UlJlZyBhcmd1bWVudEZQUjAgPSBTSDRSZWdpc3RlcnM6OmRyNDsKLSAgICBzdGF0aWMgY29uc3Qg
RlBSUmVnIGFyZ3VtZW50RlBSMSA9IFNINFJlZ2lzdGVyczo6ZHI2OwotCi0gICAgc3RhdGljIEZQ
UlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgc3RhdGljIGNv
bnN0IEZQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsKLSAgICAg
ICAgICAgIGZwUmVnVDAsIGZwUmVnVDEsIGZwUmVnVDIsIGZwUmVnVDMsIGZwUmVnVDQsIGZwUmVn
VDUgfTsKLQotICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7Ci0gICAg
ICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
dW5zaWduZWQgdG9JbmRleChGUFJSZWcgcmVnKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHJlZyAh
PSBJbnZhbGlkRlBSUmVnKTsKLSAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTZdID0gewotICAgICAgICAgICAg
MCwgSW52YWxpZEluZGV4LCAxLCBJbnZhbGlkSW5kZXgsCi0gICAgICAgICAgICAyLCBJbnZhbGlk
SW5kZXgsIDMsIEludmFsaWRJbmRleCwKLSAgICAgICAgICAgIDQsIEludmFsaWRJbmRleCwgNSwg
SW52YWxpZEluZGV4LAotICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIElu
dmFsaWRJbmRleCwgSW52YWxpZEluZGV4Ci0gICAgICAgIH07Ci0gICAgICAgIHVuc2lnbmVkIHJl
c3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEZQUlJlZyByZWcpCi0gICAg
ewotICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOwotICAgICAgICBBU1NFUlQo
cmVnIDwgMTYpOwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2
XSA9IHsKLSAgICAgICAgICAgICJkcjAiLCAiZnIxIiwgImRyMiIsICJmcjMiLAotICAgICAgICAg
ICAgImRyNCIsICJmcjUiLCAiZHI2IiwgImZyNyIsCi0gICAgICAgICAgICAiZHI4IiwgImZyOSIs
ICJkcjEwIiwgImZyMTEiLAotICAgICAgICAgICAgImRyMTIiLCAiZnIxMyIsICJkcjE0IiwgImZy
MTUiCi0gICAgICAgIH07Ci0gICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZm
ZjsKLX07Ci0KLSNlbmRpZiAvLyBDUFUoU0g0KQotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCmluZGV4IDNk
NmE0YzYuLmY3ZTRhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BS
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCkBAIC04MjMs
NzQgKzgyMyw2IEBAIHB1YmxpYzoKIAogI2VuZGlmIC8vIENQVShNSVBTKQogCi0jaWYgQ1BVKFNI
NCkKLSNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0dQotI2RlZmluZSBOVU1C
RVJfT0ZfQ0FMTEVFX1NBVkVTX1JFR0lTVEVSUyAwdQotCi1jbGFzcyBHUFJJbmZvIHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gMTA7Ci0KLSAgICAvLyBOb3RlOiByZWdUMyBpcyBy
ZXF1aXJlZCB0byBiZSBjYWxsZWUtcHJlc2VydmVkLgotCi0gICAgLy8gVGVtcG9yYXJ5IHJlZ2lz
dGVycy4KLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gU0g0UmVnaXN0ZXJzOjpyMDsK
LSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gU0g0UmVnaXN0ZXJzOjpyMTsKLSAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gU0g0UmVnaXN0ZXJzOjpyNjsKLSAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ1QzID0gU0g0UmVnaXN0ZXJzOjpyNzsKLSAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJlZ1Q0ID0gU0g0UmVnaXN0ZXJzOjpyMjsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1Q1ID0gU0g0UmVnaXN0ZXJzOjpyMzsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q2
ID0gU0g0UmVnaXN0ZXJzOjpyNDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q3ID0gU0g0
UmVnaXN0ZXJzOjpyNTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q4ID0gU0g0UmVnaXN0
ZXJzOjpyODsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q5ID0gU0g0UmVnaXN0ZXJzOjpy
OTsKLSAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4KLSAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gcmVnVDA7Ci0gICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlcjIgPSByZWdUMTsKLSAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gU0g0UmVnaXN0ZXJzOjpmcDsKLSAg
ICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1
cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgotICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgYXJndW1lbnRHUFIwID0gU0g0UmVnaXN0ZXJzOjpyNDsgLy8gcmVnVDYKLSAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IFNINFJlZ2lzdGVyczo6cjU7IC8vIHJl
Z1Q3Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBTSDRSZWdpc3RlcnM6
OnI2OyAvLyByZWdUMgotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gU0g0
UmVnaXN0ZXJzOjpyNzsgLy8gcmVnVDMKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQ
UjAgPSByZWdUNDsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVn
VDA7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKLSAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1QyOwot
Ci0gICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwotICAgICAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdU
MCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVnVDcsIHJlZ1Q4
LCByZWdUOSB9OwotICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07Ci0gICAg
fQotCi0gICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7Ci0gICAgICAgIEFTU0VSVChyZWcgPCAx
NCk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVyWzE0XSA9
IHsgMCwgMSwgNCwgNSwgNiwgNywgMiwgMywgOCwgOSwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5k
ZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4IH07Ci0gICAgICAgIHVuc2lnbmVkIHJlc3Vs
dCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCi0gICAgewot
ICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOwotICAgICAgICBBU1NFUlQocmVn
IDwgMTYpOwotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9
IHsKLSAgICAgICAgICAgICJyMCIsICJyMSIsICJyMiIsICJyMyIsICJyNCIsICJyNSIsICJyNiIs
ICJyNyIsCi0gICAgICAgICAgICAicjgiLCAicjkiLCAicjEwIiwgInIxMSIsICJyMTIiLCAicjEz
IiwgInIxNCIsICJyMTUiCi0gICAgICAgIH07Ci0gICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0
ZXJbcmVnXTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4
ID0gMHhmZmZmZmZmZjsKLX07Ci0KLSNlbmRpZiAvLyBDUFUoU0g0KQotCiAvLyBUaGUgYmFzZWxp
bmUgSklUIHVzZXMgImFjY3VtdWxhdG9yIiBzdHlsZSBleGVjdXRpb24gd2l0aCByZWdUMCAoZm9y
IDY0LWJpdCkKIC8vIGFuZCByZWdUMCArIHJlZ1QxIChmb3IgMzItYml0KSBzZXJ2aW5nIGFzIHRo
ZSBhY2N1bXVsYXRvciByZWdpc3RlcihzKSBmb3IKIC8vIHBhc3NpbmcgcmVzdWx0cyBvZiBvbmUg
b3Bjb2RlIHRvIHRoZSBuZXh0LiBIZW5jZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKaW5kZXggZWFkZTlhZi4uNWQyZDY4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKQEAgLTcwNiwyNSArNzA2LDI1IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSSBvcGVyYXRp
CiAKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJlZyBhcmcxVGFnLCBH
UFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCiB7
Ci0gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFy
ZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzJQYXlsb2FkLCBhcmcy
VGFnKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9B
UkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9u
LCBkc3QpOwogfQogCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpBcCBvcGVyYXRpb24sIGludCBkc3QsIEdQUlJl
ZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJn
MlBheWxvYWQsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQogewotICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRh
ZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZywgVHJ1c3RlZEltbVB0
cihhcnJheVByb2ZpbGUpKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8z
MkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFn
LCBUcnVzdGVkSW1tUHRyKGFycmF5UHJvZmlsZSkpOwogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChvcGVyYXRpb24sIGRzdCk7CiB9CiAKIEFM
V0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VKSkJ5IG9wZXJhdGlvbiwgaW50IGRzdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJl
ZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgQnlWYWxJ
bmZvKiBieVZhbEluZm8pCiB7Ci0gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklf
MzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJH
IGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tUHRyKGJ5VmFsSW5mbykpOworICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9h
ZCwgYXJnMVRhZywgYXJnMlBheWxvYWQsIGFyZzJUYWcsIFRydXN0ZWRJbW1QdHIoYnlWYWxJbmZv
KSk7CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVz
dWx0KG9wZXJhdGlvbiwgZHN0KTsKIH0KIAogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSklUOjpXaXRoUHJvZmlsZVRhZywgSl9KSVRPcGVyYXRp
b25fRUpKIG9wZXJhdGlvbiwgaW50IGRzdCwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5
bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKIHsKLSAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFy
ZzFUYWcsIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQsIGFyZzJUYWcpOworICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9h
ZCwgYXJnMVRhZywgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwogICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKG9wZXJhdGlvbiwg
ZHN0KTsKIH0KIApAQCAtNzQ4LDcgKzc0OCw3IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKSSBvcGVyYXRpCiAK
IEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFNf
SklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIFJlZ2lzdGVySUQgYXJnMVRhZywgUmVnaXN0ZXJJ
RCBhcmcxUGF5bG9hZCwgUmVnaXN0ZXJJRCBhcmcyVGFnLCBSZWdpc3RlcklEIGFyZzJQYXlsb2Fk
KQogewotICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FS
RyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwg
YXJnMlRhZyk7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVN
TVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CiAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIApAQCAt
NzkwLDE5ICs3OTAsMTkgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6
OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVNzaUpKSSBvcGUKIAogQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25f
RUpKSiBvcGVyYXRpb24sIFJlZ2lzdGVySUQgcmVnT3AxVGFnLCBSZWdpc3RlcklEIHJlZ09wMVBh
eWxvYWQsIFJlZ2lzdGVySUQgcmVnT3AyVGFnLCBSZWdpc3RlcklEIHJlZ09wMlBheWxvYWQsIFJl
Z2lzdGVySUQgcmVnT3AzVGFnLCBSZWdpc3RlcklEIHJlZ09wM1BheWxvYWQpCiB7Ci0gICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIHJlZ09wMVBheWxv
YWQsIHJlZ09wMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyByZWdPcDJQYXlsb2FkLCByZWdPcDJU
YWcsIHJlZ09wM1BheWxvYWQsIHJlZ09wM1RhZyk7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIHJlZ09wMVBheWxvYWQsIHJlZ09wMVRhZywgcmVn
T3AyUGF5bG9hZCwgcmVnT3AyVGFnLCByZWdPcDNQYXlsb2FkLCByZWdPcDNUYWcpOwogICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKIEFMV0FZ
U19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFZfSklUT3Bl
cmF0aW9uX0VKSkpBcCBvcGVyYXRpb24sIFJlZ2lzdGVySUQgcmVnT3AxVGFnLCBSZWdpc3RlcklE
IHJlZ09wMVBheWxvYWQsIFJlZ2lzdGVySUQgcmVnT3AyVGFnLCBSZWdpc3RlcklEIHJlZ09wMlBh
eWxvYWQsIFJlZ2lzdGVySUQgcmVnT3AzVGFnLCBSZWdpc3RlcklEIHJlZ09wM1BheWxvYWQsIEFy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQogewotICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyByZWdPcDFQYXlsb2FkLCByZWdPcDFUYWcsIFNINF8z
MkJJVF9EVU1NWV9BUkcgcmVnT3AyUGF5bG9hZCwgcmVnT3AyVGFnLCByZWdPcDNQYXlsb2FkLCBy
ZWdPcDNUYWcsIFRydXN0ZWRJbW1QdHIoYXJyYXlQcm9maWxlKSk7CisgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIHJlZ09wMVBheWxvYWQsIHJlZ09w
MVRhZywgcmVnT3AyUGF5bG9hZCwgcmVnT3AyVGFnLCByZWdPcDNQYXlsb2FkLCByZWdPcDNUYWcs
IFRydXN0ZWRJbW1QdHIoYXJyYXlQcm9maWxlKSk7CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIAogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSkJ5IG9wZXJh
dGlvbiwgUmVnaXN0ZXJJRCByZWdPcDFUYWcsIFJlZ2lzdGVySUQgcmVnT3AxUGF5bG9hZCwgUmVn
aXN0ZXJJRCByZWdPcDJUYWcsIFJlZ2lzdGVySUQgcmVnT3AyUGF5bG9hZCwgUmVnaXN0ZXJJRCBy
ZWdPcDNUYWcsIFJlZ2lzdGVySUQgcmVnT3AzUGF5bG9hZCwgQnlWYWxJbmZvKiBieVZhbEluZm8p
CiB7Ci0gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJH
IHJlZ09wMVBheWxvYWQsIHJlZ09wMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyByZWdPcDJQYXls
b2FkLCByZWdPcDJUYWcsIHJlZ09wM1BheWxvYWQsIHJlZ09wM1RhZywgVHJ1c3RlZEltbVB0cihi
eVZhbEluZm8pKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9E
VU1NWV9BUkcgcmVnT3AxUGF5bG9hZCwgcmVnT3AxVGFnLCByZWdPcDJQYXlsb2FkLCByZWdPcDJU
YWcsIHJlZ09wM1BheWxvYWQsIHJlZ09wM1RhZywgVHJ1c3RlZEltbVB0cihieVZhbEluZm8pKTsK
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXgg
NWIwNzFhZC4uMWQyMzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcApAQCAtNzAsNyArNzAsNyBAQCBKSVQ6OkNvZGVSZWYgSklUOjpwcml2YXRl
Q29tcGlsZUNUSU5hdGl2ZUNhbGwoVk0qIHZtLCBOYXRpdmVGdW5jdGlvbiBmdW5jKQogCiAgICAg
YWRkUHRyKFRydXN0ZWRJbW0zMig4KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0jZWxpZiBD
UFUoQVJNKSB8fCBDUFUoU0g0KSB8fCBDUFUoTUlQUykKKyNlbGlmIENQVShBUk0pIHx8IENQVShN
SVBTKQogI2lmIENQVShNSVBTKQogICAgIC8vIEFsbG9jYXRlIHN0YWNrIHNwYWNlIGZvciAodW51
c2VkKSAxNiBieXRlcyAoOC1ieXRlIGFsaWduZWQpIGZvciA0IGFyZ3VtZW50cy4KICAgICBzdWJQ
dHIoVHJ1c3RlZEltbTMyKDE2KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZWRlMDNhOS4uYjBlYzcwMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yODEx
LDI0ICsyODExLDYgQEAgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIg
IlxuIgogICAgICJiICIgTE9DQUxfUkVGRVJFTkNFKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKSAiXG4iCiApOwogCi0jZWxpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpICYmIENQ
VShTSDQpCi0KLSNkZWZpbmUgU0g0X1NDUkFUQ0hfUkVHSVNURVIgInIxMSIKLQotYXNtICgKLSIu
dGV4dCIgIlxuIgotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9M
X1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgcjE1LCBy
NCIgIlxuIgotICAgICJhZGQgLTgsIHI0IiAiXG4iCi0gICAgIm1vdi5sIDJmLCAiIFNINF9TQ1JB
VENIX1JFR0lTVEVSICJcbiIKLSAgICAiYnJhZiAiIFNINF9TQ1JBVENIX1JFR0lTVEVSICJcbiIK
LSAgICAibm9wIiAiXG4iCi0gICAgIjE6IC5iYWxpZ24gNCIgIlxuIgotICAgICIyOiAubG9uZyAi
IExPQ0FMX1JFRkVSRU5DRShnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIi0x
YlxuIgotKTsKLQogI2VsaWYgQ09NUElMRVIoTVNWQykgJiYgQ1BVKFg4NikKIGV4dGVybiAiQyIg
ewogICAgIF9fZGVjbHNwZWMobmFrZWQpIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5f
VkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyU2V0LmNwcAppbmRleCA3MjFhNGVhLi5lNmU3NzQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcApAQCAtMjIyLDcgKzIyMiw2IEBAIFJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1M5KTsKICNlbGlmIENQVShNSVBTKQotI2VsaWYgQ1BVKFNINCkKICNlbHNlCiAgICAg
VU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAjZW5kaWYKQEAgLTI1OCw3ICsyNTcsNiBAQCBS
ZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5
KTsKICNlbGlmIENQVShNSVBTKQotI2VsaWYgQ1BVKFNINCkKICNlbHNlCiAgICAgVU5SRUFDSEFC
TEVfRk9SX1BMQVRGT1JNKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA3ODExODQxLi41ZDRiMGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0zMTYsNyArMzE2LDcg
QEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JHZW5lcmF0b3IoVk0qIHZt
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGsKICAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVI
ZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCBBUk02NFJlZ2lzdGVyczo6eDEpOwogICAg
IGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0ZXJzOjp4MSwg
SlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBBUk02NFJlZ2lzdGVyczo6eDIpOwog
ICAgIGppdC5jYWxsKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0ZXJzOjp4Miwg
ZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pKTsKLSNlbGlmIENQVShBUk0pIHx8IENQVShTSDQp
IHx8IENQVShNSVBTKQorI2VsaWYgQ1BVKEFSTSkgfHwgQ1BVKE1JUFMpCiAjaWYgQ1BVKE1JUFMp
CiAgICAgLy8gQWxsb2NhdGUgc3RhY2sgc3BhY2UgZm9yICh1bnVzZWQpIDE2IGJ5dGVzICg4LWJ5
dGUgYWxpZ25lZCkgZm9yIDQgYXJndW1lbnRzLgogICAgIGppdC5zdWJQdHIoSlNJbnRlcmZhY2VK
SVQ6OlRydXN0ZWRJbW0zMigxNiksIEpTSW50ZXJmYWNlSklUOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IDc1NTM1
NzMuLmQyODJkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3Bw
CkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0p
CiAjZW5kaWYKICNpZiAoQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1MpKSB8fCBDUFUoQVJNNjQp
IHx8ICFFTkFCTEUoSklUKQogICAgIFNUQVRJQ19BU1NFUlQoIW1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsKTsKLSNlbGlmIENQVShBUk0pIHx8IENQVShTSDQpCisjZWxpZiBDUFUoQVJNKQog
ICAgIFNUQVRJQ19BU1NFUlQobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgPT0gMjQpOwog
I2VsaWYgQ1BVKFg4NikgfHwgQ1BVKE1JUFMpCiAgICAgU1RBVElDX0FTU0VSVChtYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbCA9PSA0MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKaW5kZXggMWIwOWVlNy4uZmNlMjI1NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21D
b25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmgKQEAgLTQyLDcgKzQyLDYgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjdrIDAK
ICNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjdzIDAKICNkZWZpbmUgT0ZGTElORV9BU01fTUlQUyAw
Ci0jZGVmaW5lIE9GRkxJTkVfQVNNX1NINCAwCiAKICNlbHNlIC8vIEVOQUJMRShKSVQpCiAKQEAg
LTEwOSwxMiArMTA4LDYgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fTUlQUyAwCiAjZW5kaWYKIAot
I2lmIENQVShTSDQpCi0jZGVmaW5lIE9GRkxJTkVfQVNNX1NINCAxCi0jZWxzZQotI2RlZmluZSBP
RkZMSU5FX0FTTV9TSDQgMAotI2VuZGlmCi0KICNpZiBDUFUoQVJNNjQpCiAjZGVmaW5lIE9GRkxJ
TkVfQVNNX0FSTTY0IDEKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYjM3OTc5Zi4uMWE0Y2MyYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQpAQCAtNzIsNyArNzIsNyBAQAogIyAgcmVnaXN0ZXJzIG9uIGFsbCBhcmNoaXRlY3R1cmVzLgog
IwogIyAgLSBsciBpcyBkZWZpbmVkIG9uIG5vbi1YODYgYXJjaGl0ZWN0dXJlcyAoQVJNNjQsIEFS
TXY3LCBBUk0sCi0jICBBUk12N19UUkFESVRJT05BTCwgTUlQUywgU0g0IGFuZCBDTE9PUCkgYW5k
IGhvbGRzIHRoZSByZXR1cm4gUEMKKyMgIEFSTXY3X1RSQURJVElPTkFMLCBNSVBTIGFuZCBDTE9P
UCkgYW5kIGhvbGRzIHRoZSByZXR1cm4gUEMKICMKICMgIC0gcGMgaG9sZHMgdGhlIChuYXRpdmUp
IHByb2dyYW0gY291bnRlciBvbiAzMi1iaXRzIEFSTSBhcmNoaXRlY3R1cmVzIChBUk0sCiAjICBB
Uk12NywgQVJNdjdfVFJBRElUSU9OQUwpCkBAIC0yMjUsNyArMjI1LDcgQEAgY29uc3QgQ2FsbE9w
Q29kZVNpemUgPSA5CiAKIGlmIFg4Nl82NCBvciBBUk02NCBvciBDX0xPT1AKICAgICBjb25zdCBt
YXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9IDAKLWVsc2lmIEFSTSBvciBBUk12N19UUkFE
SVRJT05BTCBvciBBUk12NyBvciBTSDQKK2Vsc2lmIEFSTSBvciBBUk12N19UUkFESVRJT05BTCBv
ciBBUk12NwogICAgIGNvbnN0IG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsID0gMjQKIGVs
c2lmIFg4NiBvciBYODZfV0lOCiAgICAgY29uc3QgbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwgPSA0MApAQCAtNDgzLDExICs0ODMsMTAgQEAgaWYgWDg2XzY0CiBlbmQKIAogbWFjcm8gY2hl
Y2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodGVtcFJlZywgbG9jYXRpb24pCi0gICAgaWYgQVJNNjQg
b3IgQ19MT09QIG9yIFNINAorICAgIGlmIEFSTTY0IG9yIENfTE9PUAogICAgICAgICAjIEFSTTY0
IHdpbGwgY2hlY2sgZm9yIHVzIQogICAgICAgICAjIENfTE9PUCBkb2VzIG5vdCBuZWVkIHRoZSBh
bGlnbm1lbnQsIGFuZCBjYW4gdXNlIGEgbGl0dGxlIHBlcmYKICAgICAgICAgIyBpbXByb3ZlbWVu
dCBmcm9tIGF2b2lkaW5nIHVzZWxlc3Mgd29yay4KLSAgICAgICAgIyBTSDQgZG9lcyBub3QgbmVl
ZCBzcGVjaWZpYyBhbGlnbm1lbnQgKDQgYnl0ZXMpLgogICAgIGVsc2UKICAgICAgICAgaWYgQVJN
IG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMCiAgICAgICAgICAgICAjIEFSTSBjYW4ndCBk
byBsb2dpY2FsIG9wcyB3aXRoIHRoZSBzcCBhcyBhIHNvdXJjZQpAQCAtNTA3LDggKzUwNiw2IEBA
IGlmIENfTE9PUCBvciBBUk02NCBvciBYODZfNjQgb3IgWDg2XzY0X1dJTgogICAgIGNvbnN0IENh
bGxlZVNhdmVSZWdpc3RlckNvdW50ID0gMAogZWxzaWYgQVJNIG9yIEFSTXY3X1RSQURJVElPTkFM
IG9yIEFSTXY3CiAgICAgY29uc3QgQ2FsbGVlU2F2ZVJlZ2lzdGVyQ291bnQgPSA3Ci1lbHNpZiBT
SDQKLSAgICBjb25zdCBDYWxsZWVTYXZlUmVnaXN0ZXJDb3VudCA9IDUKIGVsc2lmIE1JUFMKICAg
ICBjb25zdCBDYWxsZWVTYXZlUmVnaXN0ZXJDb3VudCA9IDEKIGVsc2lmIFg4NiBvciBYODZfV0lO
CkBAIC01MzIsMTIgKzUyOSw2IEBAIG1hY3JvIHB1c2hDYWxsZWVTYXZlcygpCiAgICAgICAgIGVt
aXQgInN3ICRzNCwgMCgkc3ApIgogICAgICAgICAjIHNhdmUgJGdwIHRvICRzNCBzbyB0aGF0IHdl
IGNhbiByZXN0b3JlIGl0IGFmdGVyIGEgZnVuY3Rpb24gY2FsbAogICAgICAgICBlbWl0ICJtb3Zl
ICRzNCwgJGdwIgotICAgIGVsc2lmIFNINAotICAgICAgICBlbWl0ICJtb3YubCByMTMsIEAtcjE1
IgotICAgICAgICBlbWl0ICJtb3YubCByMTEsIEAtcjE1IgotICAgICAgICBlbWl0ICJtb3YubCBy
MTAsIEAtcjE1IgotICAgICAgICBlbWl0ICJtb3YubCByOSwgQC1yMTUiCi0gICAgICAgIGVtaXQg
Im1vdi5sIHI4LCBALXIxNSIKICAgICBlbHNpZiBYODYKICAgICAgICAgZW1pdCAicHVzaCAlZXNp
IgogICAgICAgICBlbWl0ICJwdXNoICVlZGkiCkBAIC01NTgsMTIgKzU0OSw2IEBAIG1hY3JvIHBv
cENhbGxlZVNhdmVzKCkKICAgICBlbHNpZiBNSVBTCiAgICAgICAgIGVtaXQgImx3ICRzNCwgMCgk
c3ApIgogICAgICAgICBlbWl0ICJhZGRpdSAkc3AsICRzcCwgNCIKLSAgICBlbHNpZiBTSDQKLSAg
ICAgICAgZW1pdCAibW92LmwgQHIxNSssIHI4IgotICAgICAgICBlbWl0ICJtb3YubCBAcjE1Kywg
cjkiCi0gICAgICAgIGVtaXQgIm1vdi5sIEByMTUrLCByMTAiCi0gICAgICAgIGVtaXQgIm1vdi5s
IEByMTUrLCByMTEiCi0gICAgICAgIGVtaXQgIm1vdi5sIEByMTUrLCByMTMiCiAgICAgZWxzaWYg
WDg2CiAgICAgICAgIGVtaXQgInBvcCAlZWJ4IgogICAgICAgICBlbWl0ICJwb3AgJWVkaSIKQEAg
LTU3Niw3ICs1NjEsNyBAQCBtYWNybyBwb3BDYWxsZWVTYXZlcygpCiBlbmQKIAogbWFjcm8gcHJl
c2VydmVDYWxsZXJQQ0FuZENGUigpCi0gICAgaWYgQ19MT09QIG9yIEFSTSBvciBBUk12NyBvciBB
Uk12N19UUkFESVRJT05BTCBvciBNSVBTIG9yIFNINAorICAgIGlmIENfTE9PUCBvciBBUk0gb3Ig
QVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUwogICAgICAgICBwdXNoIGxyCiAgICAg
ICAgIHB1c2ggY2ZyCiAgICAgZWxzaWYgWDg2IG9yIFg4Nl9XSU4gb3IgWDg2XzY0IG9yIFg4Nl82
NF9XSU4KQEAgLTU5MSw3ICs1NzYsNyBAQCBlbmQKIAogbWFjcm8gcmVzdG9yZUNhbGxlclBDQW5k
Q0ZSKCkKICAgICBtb3ZlIGNmciwgc3AKLSAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9y
IEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMgb3IgU0g0CisgICAgaWYgQ19MT09QIG9yIEFSTSBv
ciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBNSVBTCiAgICAgICAgIHBvcCBjZnIKICAg
ICAgICAgcG9wIGxyCiAgICAgZWxzaWYgWDg2IG9yIFg4Nl9XSU4gb3IgWDg2XzY0IG9yIFg4Nl82
NF9XSU4KQEAgLTYxMCw3ICs1OTUsNiBAQCBtYWNybyBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5
TExJbnQoKQogICAgICAgICBlbWl0ICJzdHAgeDI3LCB4MjgsIFt4MjksICMtMTZdIgogICAgICAg
ICBlbWl0ICJzdHAgeHpyLCB4MjYsIFt4MjksICMtMzJdIgogICAgIGVsc2lmIE1JUFMKLSAgICBl
bHNpZiBTSDQKICAgICBlbHNpZiBYODYKICAgICBlbHNpZiBYODZfV0lOCiAgICAgZWxzaWYgWDg2
XzY0CkBAIC02MzIsNyArNjE2LDYgQEAgbWFjcm8gcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJ
bnQoKQogICAgICAgICBlbWl0ICJsZHAgeHpyLCB4MjYsIFt4MjksICMtMzJdIgogICAgICAgICBl
bWl0ICJsZHAgeDI3LCB4MjgsIFt4MjksICMtMTZdIgogICAgIGVsc2lmIE1JUFMKLSAgICBlbHNp
ZiBTSDQKICAgICBlbHNpZiBYODYKICAgICBlbHNpZiBYODZfV0lOCiAgICAgZWxzaWYgWDg2XzY0
CkBAIC03MzEsNyArNzE0LDcgQEAgbWFjcm8gcmVzdG9yZUNhbGxlZVNhdmVzRnJvbVZNRW50cnlG
cmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLCB0ZW1wKQogZW5kCiAKIG1hY3JvIHByZXNlcnZlUmV0
dXJuQWRkcmVzc0FmdGVyQ2FsbChkZXN0aW5hdGlvblJlZ2lzdGVyKQotICAgIGlmIENfTE9PUCBv
ciBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgQVJNNjQgb3IgTUlQUyBvciBT
SDQKKyAgICBpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9y
IEFSTTY0IG9yIE1JUFMKICAgICAgICAgIyBJbiBDX0xPT1AgY2FzZSwgd2UncmUgb25seSBwcmVz
ZXJ2aW5nIHRoZSBieXRlY29kZSB2UEMuCiAgICAgICAgIG1vdmUgbHIsIGRlc3RpbmF0aW9uUmVn
aXN0ZXIKICAgICBlbHNpZiBYODYgb3IgWDg2X1dJTiBvciBYODZfNjQgb3IgWDg2XzY0X1dJTgpA
QCAtNzQ2LDcgKzcyOSw3IEBAIG1hY3JvIGZ1bmN0aW9uUHJvbG9ndWUoKQogICAgICAgICBwdXNo
IGNmcgogICAgIGVsc2lmIEFSTTY0CiAgICAgICAgIHB1c2ggY2ZyLCBscgotICAgIGVsc2lmIENf
TE9PUCBvciBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUyBvciBTSDQK
KyAgICBlbHNpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9y
IE1JUFMKICAgICAgICAgcHVzaCBscgogICAgICAgICBwdXNoIGNmcgogICAgIGVuZApAQCAtNzU4
LDcgKzc0MSw3IEBAIG1hY3JvIGZ1bmN0aW9uRXBpbG9ndWUoKQogICAgICAgICBwb3AgY2ZyCiAg
ICAgZWxzaWYgQVJNNjQKICAgICAgICAgcG9wIGxyLCBjZnIKLSAgICBlbHNpZiBDX0xPT1Agb3Ig
QVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMgb3IgU0g0CisgICAgZWxz
aWYgQ19MT09QIG9yIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBNSVBTCiAg
ICAgICAgIHBvcCBjZnIKICAgICAgICAgcG9wIGxyCiAgICAgZW5kCkBAIC04NDQsNyArODI3LDcg
QEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMykK
ICAgICBhZGRpIFN0YWNrQWxpZ25tZW50IC0gMSArIENhbGxGcmFtZUhlYWRlclNpemUsIHRlbXAy
CiAgICAgYW5kaSB+U3RhY2tBbGlnbm1lbnRNYXNrLCB0ZW1wMgogCi0gICAgaWYgQVJNIG9yIEFS
TXY3X1RSQURJVElPTkFMIG9yIEFSTXY3IG9yIFNINCBvciBBUk02NCBvciBDX0xPT1Agb3IgTUlQ
UworICAgIGlmIEFSTSBvciBBUk12N19UUkFESVRJT05BTCBvciBBUk12NyBvciBBUk02NCBvciBD
X0xPT1Agb3IgTUlQUwogICAgICAgICBhZGRwIDIgKiBQdHJTaXplLCBzcAogICAgICAgICBzdWJp
IDIgKiBQdHJTaXplLCB0ZW1wMgogICAgICAgICBsb2FkcCBQdHJTaXplW2Nmcl0sIGxyCkBAIC05
ODQsNyArOTY3LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tT
ZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQogICAgICAgICAjIHBvcCB0aGUgY2Fs
bGVyRnJhbWUgc2luY2Ugd2Ugd2lsbCBqdW1wIHRvIGEgZnVuY3Rpb24gdGhhdCB3YW50cyB0byBz
YXZlIGl0CiAgICAgICAgIGlmIEFSTTY0CiAgICAgICAgICAgICBwb3AgbHIsIGNmcgotICAgICAg
ICBlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUyBvciBTSDQK
KyAgICAgICAgZWxzaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMK
ICAgICAgICAgICAgIHBvcCBjZnIKICAgICAgICAgICAgIHBvcCBscgogICAgICAgICBlbHNlCkBA
IC0xMTY1LDExICsxMTQ4LDYgQEAgZWxzZQogICAgICAgICAgICAgbGEgX3JlbGF0aXZlUENCYXNl
LCBwY0Jhc2UKICAgICAgICAgICAgIHNldGNhbGxyZWcgcGNCYXNlICMgbmVlZGVkIHRvIHNldCAk
dDkgdG8gdGhlIHJpZ2h0IHZhbHVlIGZvciB0aGUgLmNwbG9hZCBjcmVhdGVkIGJ5IHRoZSBsYWJl
bC4KICAgICAgICAgX3JlbGF0aXZlUENCYXNlOgotICAgICAgICBlbHNpZiBTSDQKLSAgICAgICAg
ICAgIG1vdmEgX3JlbGF0aXZlUENCYXNlLCB0MAotICAgICAgICAgICAgbW92ZSB0MCwgcGNCYXNl
Ci0gICAgICAgICAgICBhbGlnbmZvcm1vdmEKLSAgICAgICAgX3JlbGF0aXZlUENCYXNlOgogICAg
ICAgICBlbmQKIGVuZAogCkBAIC0xMTkzLDEyICsxMTcxLDYgQEAgbWFjcm8gc2V0RW50cnlBZGRy
ZXNzKGluZGV4LCBsYWJlbCkKICAgICAgICAgYWRkcCB0NCwgdDEsIHQ0CiAgICAgICAgIG1vdmUg
aW5kZXgsIHQzCiAgICAgICAgIHN0b3JlcCB0NCwgW2EwLCB0MywgNF0KLSAgICBlbHNpZiBTSDQK
LSAgICAgICAgbW92ZSAobGFiZWwgLSBfcmVsYXRpdmVQQ0Jhc2UpLCB0NAotICAgICAgICBhZGRw
IHQ0LCB0MSwgdDQKLSAgICAgICAgbW92ZSBpbmRleCwgdDMKLSAgICAgICAgc3RvcmVwIHQ0LCBb
YTAsIHQzLCA0XQotICAgICAgICBmbHVzaGNwICMgRm9yY2UgY29uc3RhbnQgcG9vbCBmbHVzaCB0
byBhdm9pZCAicGNyZWwgdG9vIGZhciIgbGluayBlcnJvci4KICAgICBlbHNpZiBNSVBTCiAgICAg
ICAgIGxhIGxhYmVsLCB0NAogICAgICAgICBsYSBfcmVsYXRpdmVQQ0Jhc2UsIHQzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCmluZGV4IDE3YzNiY2QuLjg4MDc5ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNDks
NyArNDksNyBAQCBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCiBlbmQKIAogbWFjcm8gY0NhbGwy
KGZ1bmN0aW9uKQotICAgIGlmIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBN
SVBTIG9yIFNINAorICAgIGlmIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBN
SVBTCiAgICAgICAgIGNhbGwgZnVuY3Rpb24KICAgICBlbHNpZiBYODYgb3IgWDg2X1dJTgogICAg
ICAgICBzdWJwIDgsIHNwCkBAIC03Myw3ICs3Myw3IEBAIG1hY3JvIGNDYWxsMlZvaWQoZnVuY3Rp
b24pCiBlbmQKIAogbWFjcm8gY0NhbGw0KGZ1bmN0aW9uKQotICAgIGlmIEFSTSBvciBBUk12NyBv
ciBBUk12N19UUkFESVRJT05BTCBvciBNSVBTIG9yIFNINAorICAgIGlmIEFSTSBvciBBUk12NyBv
ciBBUk12N19UUkFESVRJT05BTCBvciBNSVBTCiAgICAgICAgIGNhbGwgZnVuY3Rpb24KICAgICBl
bHNpZiBYODYgb3IgWDg2X1dJTgogICAgICAgICBwdXNoIGEzCkBAIC0yMDQ1LDcgKzIwNDUsNyBA
QCBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikK
ICAgICAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQzCiAgICAgICAgIGxvYWRwIE1hcmtlZEJs
b2NrOjptX3ZtW3QzXSwgdDMKICAgICAgICAgYWRkcCA4LCBzcAotICAgIGVsc2lmIEFSTSBvciBB
Uk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBDX0xPT1Agb3IgTUlQUyBvciBTSDQKKyAgICBl
bHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwgb3IgQ19MT09QIG9yIE1JUFMK
ICAgICAgICAgc3VicCA4LCBzcCAjIGFsaWduIHN0YWNrIHBvaW50ZXIKICAgICAgICAgIyB0MSBh
bHJlYWR5IGNvbnRhaW5zIHRoZSBDYWxsZWUuCiAgICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNr
LCB0MQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2Vu
ZHMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgppbmRl
eCBlYjMyNzU2Li5iYTE2MzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9iYWNrZW5kcy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9iYWNrZW5kcy5yYgpAQCAtMjcsNyArMjcsNiBAQCByZXF1aXJlICJhcm02NCIKIHJlcXVpcmUg
ImFzdCIKIHJlcXVpcmUgIng4NiIKIHJlcXVpcmUgIm1pcHMiCi1yZXF1aXJlICJzaDQiCiByZXF1
aXJlICJjbG9vcCIKIAogQkFDS0VORFMgPQpAQCAtNDEsNyArNDAsNiBAQCBCQUNLRU5EUyA9CiAg
ICAgICJBUk12N19UUkFESVRJT05BTCIsCiAgICAgICJBUk02NCIsCiAgICAgICJNSVBTIiwKLSAg
ICAgIlNINCIsCiAgICAgICJDX0xPT1AiCiAgICAgXQogCkBAIC02MSw3ICs1OSw2IEBAIFdPUktJ
TkdfQkFDS0VORFMgPQogICAgICAiQVJNdjdfVFJBRElUSU9OQUwiLAogICAgICAiQVJNNjQiLAog
ICAgICAiTUlQUyIsCi0gICAgICJTSDQiLAogICAgICAiQ19MT09QIgogICAgIF0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCmluZGV4IDI0
NDkyODcuLmJiZmNlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2luc3RydWN0aW9ucy5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9pbnN0cnVjdGlvbnMucmIKQEAgLTI5MCwyMyArMjkwLDYgQEAgTUlQU19JTlNUUlVDVElPTlMg
PQogICAgICJwaWNoZHIiCiAgICAgXQogCi1TSDRfSU5TVFJVQ1RJT05TID0KLSAgICBbCi0gICAg
ImZsdXNoY3AiLAotICAgICJhbGlnbmZvcm1vdmEiLAotICAgICJtb3ZhIiwKLSAgICAic2hsbHgi
LAotICAgICJzaGxyeCIsCi0gICAgInNobGQiLAotICAgICJzaGFkIiwKLSAgICAiYmRuYW4iLAot
ICAgICJsb2FkZFJldmVyc2VkQW5kSW5jcmVtZW50QWRkcmVzcyIsCi0gICAgInN0b3JlZFJldmVy
c2VkQW5kRGVjcmVtZW50QWRkcmVzcyIsCi0gICAgImxkc3ByIiwKLSAgICAic3RzcHIiLAotICAg
ICJzZXRhcmdzIgotICAgIF0KLQogQ1hYX0lOU1RSVUNUSU9OUyA9CiAgICAgWwogICAgICAiY2xv
b3BDcmFzaCIsICAgICAgICAgICAgICAjIG5vIG9wZXJhbmRzCkBAIC0zMjQsNyArMzA3LDcgQEAg
Q1hYX0lOU1RSVUNUSU9OUyA9CiAgICAgICJjbG9vcERvIiwgICAgICAgICAgICAgICMgbm8gb3Bl
cmFuZHMKICAgICBdCiAKLUlOU1RSVUNUSU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9J
TlNUUlVDVElPTlMgKyBBUk1fSU5TVFJVQ1RJT05TICsgQVJNNjRfSU5TVFJVQ1RJT05TICsgUklT
Q19JTlNUUlVDVElPTlMgKyBNSVBTX0lOU1RSVUNUSU9OUyArIFNINF9JTlNUUlVDVElPTlMgKyBD
WFhfSU5TVFJVQ1RJT05TCitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZf
SU5TVFJVQ1RJT05TICsgQVJNX0lOU1RSVUNUSU9OUyArIEFSTTY0X0lOU1RSVUNUSU9OUyArIFJJ
U0NfSU5TVFJVQ1RJT05TICsgTUlQU19JTlNUUlVDVElPTlMgKyBDWFhfSU5TVFJVQ1RJT05TCiAK
IElOU1RSVUNUSU9OX1NFVCA9IElOU1RSVUNUSU9OUy50b19zZXQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2g0LnJiIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vc2g0LnJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODQ3
ZDU2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NoNC5y
YgorKysgL2Rldi9udWxsCkBAIC0xLDExMjUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKEMpIDIwMTMgQ2lz
Y28gU3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIENJU0NPIFNZU1RFTVMsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIENJU0NPIFNZU1RFTVMsIElOQy4gT1IgSVRTCi0jIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotIyBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0jIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotIyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0jIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotcmVxdWlyZSAncmlzYycKLQotIyBHUFIgY29udmVudGlvbnMs
IHRvIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQKLSMKLSMgIHIwID0+IHQwLCByMAotIyAgcjEgPT4g
dDEsIHIxCi0jICByMiA9PiB0NAotIyAgcjMgPT4gdDUKLSMgIHI0ID0+ICAgICAgICAgYTAKLSMg
IHI1ID0+ICAgICAgICAgYTEKLSMgIHI2ID0+IHQyLCAgICAgYTIKLSMgIHI3ID0+IHQzLCAgICAg
YTMKLSMgcjEwID0+ICAgICAgICAgICAgKHNjcmF0Y2gpCi0jIHIxMSA9PiAgICAgICAgICAgIChz
Y3JhdGNoKQotIyByMTMgPT4gICAgICAgICAgICAoc2NyYXRjaCkKLSMgcjE0ID0+IGNmcgotIyBy
MTUgPT4gc3AKLSMgIHByID0+IGxyCi0KLSMgRlBSIGNvbnZlbnRpb25zLCB0byBtYXRjaCB0aGUg
YmFzZWxpbmUgSklUCi0jIFdlIGRvbid0IGhhdmUgZmEyIG9yIGZhMyEKLSMgIGRyMCA9PiBmdDAs
IGZyCi0jICBkcjIgPT4gZnQxCi0jICBkcjQgPT4gZnQyLCAgIGZhMAotIyAgZHI2ID0+IGZ0Mywg
ICBmYTEKLSMgIGRyOCA9PiBmdDQKLSMgZHIxMCA9PiBmdDUKLSMgZHIxMiA9PiAgICAgICAgICAg
ICAoc2NyYXRjaCkKLQotY2xhc3MgTm9kZQotICAgIGRlZiBzaDRTaW5nbGVIaQotICAgICAgICBk
b3VibGVPcGVyYW5kID0gc2g0T3BlcmFuZAotICAgICAgICByYWlzZSAiQm9ndXMgcmVnaXN0ZXIg
bmFtZSAje2RvdWJsZU9wZXJhbmR9IiB1bmxlc3MgZG91YmxlT3BlcmFuZCA9fiAvXmRyLwotICAg
ICAgICAiZnIiICsgKCR+LnBvc3RfbWF0Y2gudG9faSkudG9fcwotICAgIGVuZAotICAgIGRlZiBz
aDRTaW5nbGVMbwotICAgICAgICBkb3VibGVPcGVyYW5kID0gc2g0T3BlcmFuZAotICAgICAgICBy
YWlzZSAiQm9ndXMgcmVnaXN0ZXIgbmFtZSAje2RvdWJsZU9wZXJhbmR9IiB1bmxlc3MgZG91Ymxl
T3BlcmFuZCA9fiAvXmRyLwotICAgICAgICAiZnIiICsgKCR+LnBvc3RfbWF0Y2gudG9faSArIDEp
LnRvX3MKLSAgICBlbmQKLWVuZAotCi1jbGFzcyBTcGVjaWFsUmVnaXN0ZXIgPCBOb0NoaWxkcmVu
Ci0gICAgZGVmIHNoNE9wZXJhbmQKLSAgICAgICAgQG5hbWUKLSAgICBlbmQKLQotICAgIGRlZiBk
dW1wCi0gICAgICAgIEBuYW1lCi0gICAgZW5kCi0KLSAgICBkZWYgcmVnaXN0ZXI/Ci0gICAgICAg
IHRydWUKLSAgICBlbmQKLWVuZAotCi1TSDRfVE1QX0dQUlMgPSBbIFNwZWNpYWxSZWdpc3Rlci5u
ZXcoInIxMCIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMTEiKSwgU3BlY2lhbFJlZ2lzdGVyLm5l
dygicjEzIikgXQotU0g0X1RNUF9GUFJTID0gWyBTcGVjaWFsUmVnaXN0ZXIubmV3KCJkcjEyIikg
XQotCi1jbGFzcyBSZWdpc3RlcklECi0gICAgZGVmIHNoNE9wZXJhbmQKLSAgICAgICAgY2FzZSBu
YW1lCi0gICAgICAgIHdoZW4gImEwIgotICAgICAgICAgICAgInI0IgotICAgICAgICB3aGVuICJh
MSIKLSAgICAgICAgICAgICJyNSIKLSAgICAgICAgd2hlbiAicjAiLCAidDAiCi0gICAgICAgICAg
ICAicjAiCi0gICAgICAgIHdoZW4gInIxIiwgInQxIgotICAgICAgICAgICAgInIxIgotICAgICAg
ICB3aGVuICJhMiIsICJ0MiIKLSAgICAgICAgICAgICJyNiIKLSAgICAgICAgd2hlbiAiYTMiLCAi
dDMiCi0gICAgICAgICAgICAicjciCi0gICAgICAgIHdoZW4gInQ0IgotICAgICAgICAgICAgInIy
IgotICAgICAgICB3aGVuICJ0NSIKLSAgICAgICAgICAgICJyMyIKLSAgICAgICAgd2hlbiAiY2Zy
IgotICAgICAgICAgICAgInIxNCIKLSAgICAgICAgd2hlbiAic3AiCi0gICAgICAgICAgICAicjE1
IgotICAgICAgICB3aGVuICJsciIKLSAgICAgICAgICAgICJwciIKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZvciBTSDQgYXQgI3tjb2RlT3Jp
Z2luU3RyaW5nfSIKLSAgICAgICAgZW5kCi0gICAgZW5kCi1lbmQKLQotY2xhc3MgRlBSZWdpc3Rl
cklECi0gICAgZGVmIHNoNE9wZXJhbmQKLSAgICAgICAgY2FzZSBuYW1lCi0gICAgICAgIHdoZW4g
ImZ0MCIsICJmciIKLSAgICAgICAgICAgICJkcjAiCi0gICAgICAgIHdoZW4gImZ0MSIKLSAgICAg
ICAgICAgICJkcjIiCi0gICAgICAgIHdoZW4gImZ0MiIsICJmYTAiCi0gICAgICAgICAgICAiZHI0
IgotICAgICAgICB3aGVuICJmdDMiLCAiZmExIgotICAgICAgICAgICAgImRyNiIKLSAgICAgICAg
d2hlbiAiZnQ0IgotICAgICAgICAgICAgImRyOCIKLSAgICAgICAgd2hlbiAiZnQ1IgotICAgICAg
ICAgICAgImRyMTAiCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0
ZXIgI3tuYW1lfSBmb3IgU0g0IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCi0gICAgICAgIGVuZAot
ICAgIGVuZAotZW5kCi0KLWNsYXNzIEltbWVkaWF0ZQotICAgIGRlZiBzaDRPcGVyYW5kCi0gICAg
ICAgIHJhaXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSBhdCAje2NvZGVPcmlnaW5TdHJp
bmd9IiBpZiB2YWx1ZSA8IC0xMjggb3IgdmFsdWUgPiAxMjcKLSAgICAgICAgIiMje3ZhbHVlfSIK
LSAgICBlbmQKLWVuZAotCi1jbGFzcyBBZGRyZXNzCi0gICAgZGVmIHNoNE9wZXJhbmQKLSAgICAg
ICAgcmFpc2UgIkJhZCBvZmZzZXQgI3tvZmZzZXQudmFsdWV9IGF0ICN7Y29kZU9yaWdpblN0cmlu
Z30iIGlmIG9mZnNldC52YWx1ZSA8IDAgb3Igb2Zmc2V0LnZhbHVlID4gNjAKLSAgICAgICAgaWYg
b2Zmc2V0LnZhbHVlID09IDAKLSAgICAgICAgICAgICJAI3tiYXNlLnNoNE9wZXJhbmR9IgotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAiQCgje29mZnNldC52YWx1ZX0sICN7YmFzZS5zaDRPcGVy
YW5kfSkiCi0gICAgICAgIGVuZAotICAgIGVuZAotCi0gICAgZGVmIHNoNE9wZXJhbmRQb3N0SW5j
Ci0gICAgICAgIHJhaXNlICJCYWQgb2Zmc2V0ICN7b2Zmc2V0LnZhbHVlfSBmb3IgcG9zdCBpbmMg
YXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG9mZnNldC52YWx1ZSA9PSAwCi0gICAgICAg
ICJAI3tiYXNlLnNoNE9wZXJhbmR9KyIKLSAgICBlbmQKLQotICAgIGRlZiBzaDRPcGVyYW5kUHJl
RGVjCi0gICAgICAgIHJhaXNlICJCYWQgb2Zmc2V0ICN7b2Zmc2V0LnZhbHVlfSBmb3IgcHJlIGRl
YyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0LnZhbHVlID09IDAKLSAgICAg
ICAgIkAtI3tiYXNlLnNoNE9wZXJhbmR9IgotICAgIGVuZAotZW5kCi0KLWNsYXNzIEJhc2VJbmRl
eAotICAgIGRlZiBzaDRPcGVyYW5kCi0gICAgICAgIHJhaXNlICJVbmNvbnZlcnRlZCBiYXNlIGlu
ZGV4IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCi0gICAgZW5kCi1lbmQKLQotY2xhc3MgQWJzb2x1
dGVBZGRyZXNzCi0gICAgZGVmIHNoNE9wZXJhbmQKLSAgICAgICAgcmFpc2UgIlVuY29udmVydGVk
IGFic29sdXRlIGFkZHJlc3MgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKLSAgICBlbmQKLWVuZAot
Ci1jbGFzcyBMYWJlbFJlZmVyZW5jZQotICAgIGRlZiBzaDRPcGVyYW5kCi0gICAgICAgIHZhbHVl
Ci0gICAgZW5kCi1lbmQKLQotY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5vZGUKLSAgICBkZWYgc2g0
T3BlcmFuZAotICAgICAgICAiI3tAbGVmdC5zaDRPcGVyYW5kfSAtICN7QHJpZ2h0LnNoNE9wZXJh
bmR9IgotICAgIGVuZAotZW5kCi0KLWNsYXNzIENvbnN0UG9vbCA8IE5vZGUKLSAgICBhdHRyX3Jl
YWRlciA6c2l6ZQotICAgIGF0dHJfcmVhZGVyIDplbnRyaWVzCi0KLSAgICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBlbnRyaWVzLCBzaXplKQotICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQot
ICAgICAgICByYWlzZSAiSW52YWxpZCBzaXplICN7c2l6ZX0gZm9yIENvbnN0UG9vbCIgdW5sZXNz
IHNpemUgPT0gMTYgb3Igc2l6ZSA9PSAzMgotICAgICAgICBAc2l6ZSA9IHNpemUKLSAgICAgICAg
QGVudHJpZXMgPSBlbnRyaWVzCi0gICAgZW5kCi0gICAgCi0gICAgZGVmIGR1bXAKLSAgICAgICAg
IiN7c2l6ZX06ICN7ZW50cmllc30iCi0gICAgZW5kCi0gICAgCi0gICAgZGVmIGFkZHJlc3M/Ci0g
ICAgICAgIGZhbHNlCi0gICAgZW5kCi0gICAgCi0gICAgZGVmIGxhYmVsPwotICAgICAgICBmYWxz
ZQotICAgIGVuZAotICAgIAotICAgIGRlZiBpbW1lZGlhdGU/Ci0gICAgICAgIGZhbHNlCi0gICAg
ZW5kCi0gICAgCi0gICAgZGVmIHJlZ2lzdGVyPwotICAgICAgICBmYWxzZQotICAgIGVuZAotCi0g
ICAgZGVmIGxvd2VyU0g0Ci0gICAgICAgIGlmIHNpemUgPT0gMTYKLSAgICAgICAgICAgICRhc20u
cHV0cyAiLmJhbGlnbiAyIgotICAgICAgICBlbHNlCi0gICAgICAgICAgICAkYXNtLnB1dHMgIi5i
YWxpZ24gNCIKLSAgICAgICAgZW5kCi0gICAgICAgIGVudHJpZXMubWFwIHsKLSAgICAgICAgICAg
IHxlfAotICAgICAgICAgICAgZS5sYWJlbC5sb3dlcigiU0g0IikKLSAgICAgICAgICAgIGlmIGUu
c2l6ZSA9PSAxNgotICAgICAgICAgICAgICAgICRhc20ucHV0cyAiLndvcmQgI3tlLnZhbHVlfSIK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIi5sb25nICN7ZS52
YWx1ZX0iCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgfQotICAgIGVuZAotZW5kCi0KLWNsYXNz
IENvbnN0UG9vbEVudHJ5IDwgTm9kZQotICAgIGF0dHJfcmVhZGVyIDpzaXplCi0gICAgYXR0cl9y
ZWFkZXIgOnZhbHVlCi0gICAgYXR0cl9yZWFkZXIgOmxhYmVsCi0gICAgYXR0cl9yZWFkZXIgOmxh
YmVscmVmCi0gICAgCi0gICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFsdWUsIHNpemUp
Ci0gICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCi0gICAgICAgIHJhaXNlICJJbnZhbGlkIHNpemUg
I3tzaXplfSBmb3IgQ29uc3RQb29sRW50cnkiIHVubGVzcyBzaXplID09IDE2IG9yIHNpemUgPT0g
MzIKLSAgICAgICAgQHNpemUgPSBzaXplCi0gICAgICAgIEB2YWx1ZSA9IHZhbHVlCi0gICAgICAg
IEBsYWJlbCA9IExvY2FsTGFiZWwudW5pcXVlKCJjb25zdHBvb2wje3NpemV9IikKLSAgICAgICAg
QGxhYmVscmVmID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgbGFiZWwpCi0g
ICAgZW5kCi0gICAgCi0gICAgZGVmIGR1bXAKLSAgICAgICAgIiN7dmFsdWV9ICgje3NpemV9IEAg
I3tsYWJlbH0pIgotICAgIGVuZAotICAgIAotICAgIGRlZiA9PShvdGhlcikKLSAgICAgICAgb3Ro
ZXIuaXNfYT8gQ29uc3RQb29sRW50cnkgYW5kIG90aGVyLnZhbHVlID09IEB2YWx1ZQotICAgIGVu
ZAotICAgIAotICAgIGRlZiBhZGRyZXNzPwotICAgICAgICBmYWxzZQotICAgIGVuZAotICAgIAot
ICAgIGRlZiBsYWJlbD8KLSAgICAgICAgZmFsc2UKLSAgICBlbmQKLSAgICAKLSAgICBkZWYgaW1t
ZWRpYXRlPwotICAgICAgICBmYWxzZQotICAgIGVuZAotICAgIAotICAgIGRlZiByZWdpc3Rlcj8K
LSAgICAgICAgZmFsc2UKLSAgICBlbmQKLWVuZAotCi0KLSMKLSMgTG93ZXJpbmcgb2Ygc2hpZnQg
b3BzIGZvciBTSDQuIEZvciBleGFtcGxlOgotIwotIyByc2hpZnRpIGZvbywgYmFyCi0jCi0jIGJl
Y29tZXM6Ci0jCi0jIG5lZ2kgZm9vLCB0bXAKLSMgc2hhZCB0bXAsIGJhcgotIwotCi1kZWYgc2g0
TG93ZXJTaGlmdE9wcyhsaXN0KQotICAgIG5ld0xpc3QgPSBbXQotICAgIGxpc3QuZWFjaCB7Ci0g
ICAgICAgIHwgbm9kZSB8Ci0gICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KLSAgICAg
ICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKLSAgICAgICAgICAgIHdoZW4gInVsc2hpZnRpIiwgInVs
c2hpZnRwIiwgInVyc2hpZnRpIiwgInVyc2hpZnRwIiwgImxzaGlmdGkiLCAibHNoaWZ0cCIsICJy
c2hpZnRpIiwgInJzaGlmdHAiCi0gICAgICAgICAgICAgICAgaWYgbm9kZS5vcGNvZGVbMCwgMV0g
PT0gInUiCi0gICAgICAgICAgICAgICAgICAgIHR5cGUgPSAibCIKLSAgICAgICAgICAgICAgICAg
ICAgZGlyZWN0aW9uID0gbm9kZS5vcGNvZGVbMSwgMV0KLSAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIHR5cGUgPSAiYSIKLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0
aW9uID0gbm9kZS5vcGNvZGVbMCwgMV0KLSAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAg
ICAgICBpZiBub2RlLm9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQotICAgICAgICAgICAgICAg
ICAgICBtYXNrZWRJbW0gPSBJbW1lZGlhdGUubmV3KG5vZGUub3BlcmFuZHNbMF0uY29kZU9yaWdp
biwgbm9kZS5vcGVyYW5kc1swXS52YWx1ZSAmIDMxKQotICAgICAgICAgICAgICAgICAgICBpZiBt
YXNrZWRJbW0udmFsdWUgPT0gMAotICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGVyZSBpcyBu
b3RoaW5nIHRvIGRvIGhlcmUuCi0gICAgICAgICAgICAgICAgICAgIGVsc2lmIG1hc2tlZEltbS52
YWx1ZSA9PSAxIG9yICh0eXBlID09ICJsIiBhbmQgWzIsIDgsIDE2XS5pbmNsdWRlPyBtYXNrZWRJ
bW0udmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhub2RlLmNvZGVPcmlnaW4sICJzaCN7dHlwZX0je2RpcmVjdGlvbn14IiwgW21hc2tlZElt
bSwgbm9kZS5vcGVyYW5kc1sxXV0pCi0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgZGlyZWN0aW9uID09ICJsIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwg
Im1vdmUiLCBbbWFza2VkSW1tLCB0bXBdKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5v
ZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbSW1tZWRpYXRlLm5ldyhub2RlLm9wZXJhbmRzWzBdLmNv
ZGVPcmlnaW4sIC0xICogbWFza2VkSW1tLnZhbHVlKSwgdG1wXSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcobm9kZS5jb2RlT3JpZ2luLCAic2gje3R5cGV9ZCIsIFt0bXAsIG5vZGUub3BlcmFuZHNb
MV1dKQotICAgICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQotICAg
ICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sICJtb3ZlIiwgW0ltbWVkaWF0ZS5uZXcobm9kZS5vcGVyYW5kc1swXS5jb2RlT3JpZ2luLCAz
MSksIHRtcF0pCi0gICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgImFuZGkiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKLSAgICAg
ICAgICAgICAgICAgICAgaWYgZGlyZWN0aW9uID09ICJyIgotICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibmVnaSIsIFt0
bXAsIHRtcF0pCi0gICAgICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJzaCN7dHlwZX1kIiwg
W3RtcCwgbm9kZS5vcGVyYW5kc1sxXV0pCi0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCi0gICAgICAgICAgICBlbmQK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCi0gICAgICAgIGVuZAot
ICAgIH0KLSAgICBuZXdMaXN0Ci1lbmQKLQotCi0jCi0jIExvd2VyaW5nIG9mIHNpbXBsZSBicmFu
Y2ggb3BzIGZvciBTSDQuIEZvciBleGFtcGxlOgotIwotIyBiYWRkaXMgZm9vLCBiYXIsIGJhegot
IwotIyB3aWxsIGJlY29tZToKLSMKLSMgYWRkaSBmb28sIGJhcgotIyBicyBiYXIsIGJhegotIwot
Ci1kZWYgc2g0TG93ZXJTaW1wbGVCcmFuY2hPcHMobGlzdCkKLSAgICBuZXdMaXN0ID0gW10KLSAg
ICBsaXN0LmVhY2ggewotICAgICAgICB8IG5vZGUgfAotICAgICAgICBpZiBub2RlLmlzX2E/IElu
c3RydWN0aW9uCi0gICAgICAgICAgICBhbm5vdGF0aW9uID0gbm9kZS5hbm5vdGF0aW9uCi0gICAg
ICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCi0gICAgICAgICAgICB3aGVuIC9eYihhZGRpfHN1Yml8
b3JpfGFkZHApLwotICAgICAgICAgICAgICAgIG9wID0gJDEKLSAgICAgICAgICAgICAgICBiYyA9
ICR+LnBvc3RfbWF0Y2gKLQotICAgICAgICAgICAgICAgIGNhc2Ugb3AKLSAgICAgICAgICAgICAg
ICB3aGVuICJhZGRpIiwgImFkZHAiCi0gICAgICAgICAgICAgICAgICAgIG9wID0gImFkZGkiCi0g
ICAgICAgICAgICAgICAgd2hlbiAic3ViaSIsICJzdWJwIgotICAgICAgICAgICAgICAgICAgICBv
cCA9ICJzdWJpIgotICAgICAgICAgICAgICAgIHdoZW4gIm9yaSIsICJvcnAiCi0gICAgICAgICAg
ICAgICAgICAgIG9wID0gIm9yaSIKLSAgICAgICAgICAgICAgICBlbmQKLQotICAgICAgICAgICAg
ICAgIGlmIGJjID09ICJzIgotICAgICAgICAgICAgICAgICAgICByYWlzZSAiSW52YWxpZCBvcGVy
YW5kcyBudW1iZXIgKCN7bm9kZS5vcGVyYW5kcy5zaXplfSkiIHVubGVzcyBub2RlLm9wZXJhbmRz
LnNpemUgPT0gMwotICAgICAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzFdLmlzX2E/
IFJlZ2lzdGVySUQgb3Igbm9kZS5vcGVyYW5kc1sxXS5pc19hPyBTcGVjaWFsUmVnaXN0ZXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29k
ZU9yaWdpbiwgb3AsIG5vZGUub3BlcmFuZHNbMC4uMV0pCi0gICAgICAgICAgICAgICAgICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJicyIsIG5vZGUu
b3BlcmFuZHNbMS4uMl0pCi0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRtcFZhbCA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQotICAgICAg
ICAgICAgICAgICAgICAgICAgdG1wUHRyID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRyID0gQWRkcmVzcy5uZXcobm9kZS5jb2RlT3Jp
Z2luLCB0bXBQdHIsIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCAwKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwgImxlYXAiLCBbbm9kZS5vcGVyYW5kc1sxXSwgdG1wUHRyXSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgImxvYWRp
IiwgW2FkZHIsIHRtcFZhbF0pCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG9wLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1w
VmFsXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgInN0b3JlaSIsIFt0bXBWYWwsIGFkZHJdKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAi
YnMiLCBbdG1wVmFsLCBub2RlLm9wZXJhbmRzWzJdXSkKLSAgICAgICAgICAgICAgICAgICAgZW5k
Ci0gICAgICAgICAgICAgICAgZWxzaWYgYmMgPT0gIm56IgotICAgICAgICAgICAgICAgICAgICBy
YWlzZSAiSW52YWxpZCBvcGVyYW5kcyBudW1iZXIgKCN7bm9kZS5vcGVyYW5kcy5zaXplfSkiIHVu
bGVzcyBub2RlLm9wZXJhbmRzLnNpemUgPT0gMwotICAgICAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG9wLCBub2RlLm9wZXJhbmRzWzAu
LjFdKQotICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2Rl
LmNvZGVPcmlnaW4sICJidGlueiIsIG5vZGUub3BlcmFuZHNbMS4uMl0pCi0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKLSAgICAgICAgICAg
ICAgICBlbmQKLSAgICAgICAgICAgIHdoZW4gImJtdWxpbyIsICJibXVscG8iCi0gICAgICAgICAg
ICAgICAgcmFpc2UgIkludmFsaWQgb3BlcmFuZHMgbnVtYmVyICgje25vZGUub3BlcmFuZHMuc2l6
ZX0pIiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKLSAgICAgICAgICAgICAgICB0bXAx
ID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCi0gICAgICAgICAgICAgICAgdG1wMiA9
IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQotICAgICAgICAgICAgICAgIG5ld0xpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAxLCB0
bXAyXS5jb25jYXQobm9kZS5vcGVyYW5kcykpCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgbmV3TGlzdCA8PCBub2RlCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbmV3TGlzdCA8PCBub2RlCi0gICAgICAgIGVuZAotICAgIH0KLSAgICBuZXdMaXN0
Ci1lbmQKLQotCi0jCi0jIExvd2VyaW5nIG9mIGRvdWJsZSBhY2Nlc3NlcyBmb3IgU0g0LiBGb3Ig
ZXhhbXBsZToKLSMKLSMgbG9hZGQgW2ZvbywgYmFyLCA4XSwgYmF6Ci0jCi0jIGJlY29tZXM6Ci0j
Ci0jIGxlYXAgW2ZvbywgYmFyLCA4XSwgdG1wCi0jIGxvYWRkUmV2ZXJzZWRBbmRJbmNyZW1lbnRB
ZGRyZXNzIFt0bXBdLCBiYXoKLSMKLQotZGVmIHNoNExvd2VyRG91YmxlQWNjZXNzZXMobGlzdCkK
LSAgICBuZXdMaXN0ID0gW10KLSAgICBsaXN0LmVhY2ggewotICAgICAgICB8IG5vZGUgfAotICAg
ICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCi0gICAgICAgICAgICBjYXNlIG5vZGUub3Bj
b2RlCi0gICAgICAgICAgICB3aGVuICJsb2FkZCIKLSAgICAgICAgICAgICAgICB0bXAgPSBUbXAu
bmV3KGNvZGVPcmlnaW4sIDpncHIpCi0gICAgICAgICAgICAgICAgYWRkciA9IEFkZHJlc3MubmV3
KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKLSAgICAgICAg
ICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibGVhcCIsIFtu
b2RlLm9wZXJhbmRzWzBdLCB0bXBdKQotICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgImxvYWRkUmV2ZXJzZWRBbmRJbmNyZW1lbnRBZGRy
ZXNzIiwgW2FkZHIsIG5vZGUub3BlcmFuZHNbMV1dLCBub2RlLmFubm90YXRpb24pCi0gICAgICAg
ICAgICB3aGVuICJzdG9yZWQiCi0gICAgICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3Jp
Z2luLCA6Z3ByKQotICAgICAgICAgICAgICAgIGFkZHIgPSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2lu
LCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCi0gICAgICAgICAgICAgICAgbmV3
TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImxlYXAiLCBbbm9kZS5vcGVyYW5k
c1sxXS53aXRoT2Zmc2V0KDgpLCB0bXBdKQotICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInN0b3JlZFJldmVyc2VkQW5kRGVjcmVtZW50
QWRkcmVzcyIsIFtub2RlLm9wZXJhbmRzWzBdLCBhZGRyXSwgbm9kZS5hbm5vdGF0aW9uKQotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQotICAgICAgICAg
ICAgZW5kCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQotICAgICAg
ICBlbmQKLSAgICB9Ci0gICAgbmV3TGlzdAotZW5kCi0KLQotIwotIyBMb3dlcmluZyBvZiBkb3Vi
bGUgc3BlY2lhbHMgZm9yIFNINC4KLSMKLQotZGVmIHNoNExvd2VyRG91YmxlU3BlY2lhbHMobGlz
dCkKLSAgICBuZXdMaXN0ID0gW10KLSAgICBsaXN0LmVhY2ggewotICAgICAgICB8IG5vZGUgfAot
ICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCi0gICAgICAgICAgICBjYXNlIG5vZGUu
b3Bjb2RlCi0gICAgICAgICAgICB3aGVuICJiZGx0dW4iLCAiYmRndHVuIgotICAgICAgICAgICAg
ICAgICMgSGFuZGxlIHNwZWNpZmljIGZsb2F0aW5nIHBvaW50IHVub3JkZXJlZCBvcGNvZGVzLgot
ICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJi
ZG5hbiIsIFtub2RlLm9wZXJhbmRzWzBdLCBub2RlLm9wZXJhbmRzWzJdXSkKLSAgICAgICAgICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAiYmRuYW4iLCBbbm9k
ZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1syXV0pCi0gICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbm9kZS5vcGNvZGVbMC4uLTNdLCBub2Rl
Lm9wZXJhbmRzKQotICAgICAgICAgICAgd2hlbiAiYmRuZXF1biIsICJiZGd0ZXF1biIsICJiZGx0
ZXF1biIKLSAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3Jp
Z2luLCBub2RlLm9wY29kZVswLi4tM10sIG5vZGUub3BlcmFuZHMpCi0gICAgICAgICAgICB3aGVu
ICJiZG5lcSIsICJiZGd0ZXEiLCAiYmRsdGVxIgotICAgICAgICAgICAgICAgICMgSGFuZGxlIHNw
ZWNpZmljIGZsb2F0aW5nIHBvaW50IG9yZGVyZWQgb3Bjb2Rlcy4KLSAgICAgICAgICAgICAgICBv
dXRsYWJlbCA9IExvY2FsTGFiZWwudW5pcXVlKCJvdXRfI3tub2RlLm9wY29kZX0iKQotICAgICAg
ICAgICAgICAgIG91dHJlZiA9IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIG91
dGxhYmVsKQotICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVP
cmlnaW4sICJiZG5hbiIsIFtub2RlLm9wZXJhbmRzWzBdLCBvdXRyZWZdKQotICAgICAgICAgICAg
ICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJiZG5hbiIsIFtub2Rl
Lm9wZXJhbmRzWzFdLCBvdXRyZWZdKQotICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBub2RlLm9wZXJhbmRzKQotICAgICAg
ICAgICAgICAgIG5ld0xpc3QgPDwgb3V0bGFiZWwKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBuZXdMaXN0IDw8IG5vZGUKLSAgICAgICAgICAgIGVuZAotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKLSAgICAgICAgZW5kCi0gICAgfQotICAgIG5ld0xp
c3QKLWVuZAotCi0KLSMKLSMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGxhYmVscyBmb3IgU0g0Lgot
IwotCi1kZWYgc2g0TG93ZXJNaXNwbGFjZWRMYWJlbHMobGlzdCkKLSAgICBuZXdMaXN0ID0gW10K
LSAgICBsaXN0LmVhY2ggewotICAgICAgICB8IG5vZGUgfAotICAgICAgICBpZiBub2RlLmlzX2E/
IEluc3RydWN0aW9uCi0gICAgICAgICAgICBvcGVyYW5kcyA9IG5vZGUub3BlcmFuZHMKLSAgICAg
ICAgICAgIG5ld09wZXJhbmRzID0gW10KLSAgICAgICAgICAgIG9wZXJhbmRzLmVhY2ggewotICAg
ICAgICAgICAgICAgIHwgb3BlcmFuZCB8Ci0gICAgICAgICAgICAgICAgaWYgb3BlcmFuZC5pc19h
PyBMYWJlbFJlZmVyZW5jZSBhbmQgbm9kZS5vcGNvZGUgIT0gIm1vdmEiCi0gICAgICAgICAgICAg
ICAgICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQotICAgICAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4s
ICJtb3ZlIiwgW29wZXJhbmQsIHRtcF0pCi0gICAgICAgICAgICAgICAgICAgIG5ld09wZXJhbmRz
IDw8IHRtcAotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbmV3T3Bl
cmFuZHMgPDwgb3BlcmFuZAotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2Rl
Lm9wY29kZSwgbmV3T3BlcmFuZHMsIG5vZGUuYW5ub3RhdGlvbikKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbmV3TGlzdCA8PCBub2RlCi0gICAgICAgIGVuZAotICAgIH0KLSAgICBuZXdMaXN0
Ci1lbmQKLQotCi0jCi0jIExvd2VyaW5nIG9mIG1pc3BsYWNlZCBzcGVjaWFsIHJlZ2lzdGVycyBm
b3IgU0g0LiBGb3IgZXhhbXBsZToKLSMKLSMgc3RvcmVwIHByLCBmb28KLSMKLSMgYmVjb21lczoK
LSMKLSMgc3RzcHIgdG1wCi0jIHN0b3JlcCB0bXAsIGZvbwotIwotCi1kZWYgc2g0TG93ZXJNaXNw
bGFjZWRTcGVjaWFsUmVnaXN0ZXJzKGxpc3QpCi0gICAgbmV3TGlzdCA9IFtdCi0gICAgbGlzdC5l
YWNoIHsKLSAgICAgICAgfCBub2RlIHwKLSAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlv
bgotICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQotICAgICAgICAgICAgd2hlbiAibW92ZSIK
LSAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5k
IG5vZGUub3BlcmFuZHNbMF0uc2g0T3BlcmFuZCA9PSAicHIiCi0gICAgICAgICAgICAgICAgICAg
IG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJzdHNwciIsIFtub2RlLm9w
ZXJhbmRzWzFdXSkKLSAgICAgICAgICAgICAgICBlbHNpZiBub2RlLm9wZXJhbmRzWzFdLmlzX2E/
IFJlZ2lzdGVySUQgYW5kIG5vZGUub3BlcmFuZHNbMV0uc2g0T3BlcmFuZCA9PSAicHIiCi0gICAg
ICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJs
ZHNwciIsIFtub2RlLm9wZXJhbmRzWzBdXSkKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQotICAgICAgICAgICAgICAgIGVuZAotICAgICAg
ICAgICAgd2hlbiAibG9hZGkiLCAibG9hZGlzIiwgImxvYWRwIgotICAgICAgICAgICAgICAgIGlm
IG5vZGUub3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgbm9kZS5vcGVyYW5kc1sxXS5z
aDRPcGVyYW5kID09ICJwciIKLSAgICAgICAgICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhjb2Rl
T3JpZ2luLCA6Z3ByKQotICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhjb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW25vZGUub3BlcmFuZHNbMF0sIHRtcF0pCi0g
ICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4s
ICJsZHNwciIsIFt0bXBdKQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgbmV3TGlzdCA8PCBub2RlCi0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICB3aGVu
ICJzdG9yZWkiLCAic3RvcmVwIgotICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0u
aXNfYT8gUmVnaXN0ZXJJRCBhbmQgbm9kZS5vcGVyYW5kc1swXS5zaDRPcGVyYW5kID09ICJwciIK
LSAgICAgICAgICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQotICAg
ICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAi
c3RzcHIiLCBbdG1wXSkKLSAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcoY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3BlcmFuZHNbMV1dKQot
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2Rl
Ci0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBub2RlCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbmV3TGlzdCA8PCBub2RlCi0gICAgICAgIGVuZAotICAgIH0KLSAgICBuZXdMaXN0Ci1lbmQK
LQotCi0jCi0jIEdyb3VwIGltbWVkaWF0ZSB2YWx1ZXMgb3V0c2lkZSAtMTI4Li4xMjcgcmFuZ2Ug
aW50byBjb25zdGFudCBwb29scyBmb3IgU0g0LgotIyBUaGVzZSBjb25zdGFudCBwb29scyB3aWxs
IGJlIHBsYWNlZCBiZWhpbmQgbm9uLXJldHVybiBvcGNvZGVzIGptcCBhbmQgcmV0LCBmb3IgZXhh
bXBsZToKLSMKLSMgbW92ZSAxMDI0LCBmb28KLSMgLi4uCi0jIHJldAotIwotIyBiZWNvbWVzOgot
IwotIyBtb3ZlIFtsYWJlbF0sIGZvbwotIyAuLi4KLSMgcmV0Ci0jIGxhYmVsOiAxMDI0Ci0jCi0K
LWRlZiBzaDRMb3dlckNvbnN0UG9vbChsaXN0KQotICAgIG5ld0xpc3QgPSBbXQotICAgIGN1cnJl
bnRQb29sMTYgPSBbXQotICAgIGN1cnJlbnRQb29sMzIgPSBbXQotICAgIGxpc3QuZWFjaCB7Ci0g
ICAgICAgIHwgbm9kZSB8Ci0gICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KLSAgICAg
ICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKLSAgICAgICAgICAgIHdoZW4gImptcCIsICJyZXQiLCAi
Zmx1c2hjcCIKLSAgICAgICAgICAgICAgICBpZiBub2RlLm9wY29kZSA9PSAiZmx1c2hjcCIKLSAg
ICAgICAgICAgICAgICAgICAgb3V0bGFiZWwgPSBMb2NhbExhYmVsLnVuaXF1ZSgiZmx1c2hjcCIp
Ci0gICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmln
aW4sICJqbXAiLCBbTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3V0bGFiZWwp
XSkKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwg
bm9kZQotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgIGlmIG5vdCBjdXJyZW50
UG9vbDE2LmVtcHR5PwotICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IENvbnN0UG9vbC5u
ZXcoY29kZU9yaWdpbiwgY3VycmVudFBvb2wxNiwgMTYpCi0gICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRQb29sMTYgPSBbXQotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgIGlm
IG5vdCBjdXJyZW50UG9vbDMyLmVtcHR5PwotICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IENvbnN0UG9vbC5uZXcoY29kZU9yaWdpbiwgY3VycmVudFBvb2wzMiwgMzIpCi0gICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRQb29sMzIgPSBbXQotICAgICAgICAgICAgICAgIGVuZAotICAgICAg
ICAgICAgICAgIGlmIG5vZGUub3Bjb2RlID09ICJmbHVzaGNwIgotICAgICAgICAgICAgICAgICAg
ICBuZXdMaXN0IDw8IG91dGxhYmVsCi0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICB3
aGVuICJtb3ZlIgotICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0uaXNfYT8gSW1t
ZWRpYXRlIGFuZCBub3QgKC0xMjguLjEyNykuaW5jbHVkZT8gbm9kZS5vcGVyYW5kc1swXS52YWx1
ZQotICAgICAgICAgICAgICAgICAgICBwb29sRW50cnkgPSBuaWwKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKC0zMjc2OC4uMzI3NjcpLmluY2x1ZGU/IG5vZGUub3BlcmFuZHNbMF0udmFsdWUKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb29sMTYuZWFjaCB7IHxlfAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIGUudmFsdWUgPT0gbm9kZS5vcGVyYW5kc1swXS52YWx1ZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb29sRW50cnkgPSBlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAhcG9vbEVudHJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcG9vbEVudHJ5ID0gQ29uc3RQb29sRW50cnkubmV3KGNvZGVPcmlnaW4sIG5vZGUub3BlcmFu
ZHNbMF0udmFsdWUsIDE2KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb29s
MTYgPDwgcG9vbEVudHJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBvb2wzMi5lYWNo
IHsgfGV8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS52YWx1ZSA9PSBub2RlLm9w
ZXJhbmRzWzBdLnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvb2xFbnRy
eSA9IGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICFwb29sRW50cnkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb29sRW50cnkgPSBDb25zdFBvb2xFbnRyeS5uZXcoY29kZU9y
aWdpbiwgbm9kZS5vcGVyYW5kc1swXS52YWx1ZSwgMzIpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3VycmVudFBvb2wzMiA8PCBwb29sRW50cnkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGVuZAotICAgICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbcG9vbEVudHJ5LCBub2Rl
Lm9wZXJhbmRzWzFdXSkKLSAgICAgICAgICAgICAgICBlbHNpZiBub2RlLm9wZXJhbmRzWzBdLmlz
X2E/IExhYmVsUmVmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgIHBvb2xFbnRyeSA9IG5pbAot
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50UG9vbDMyLmVhY2ggeyB8ZXwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIGUudmFsdWUgPT0gbm9kZS5vcGVyYW5kc1swXS5hc21MYWJlbAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBvb2xFbnRyeSA9IGUKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGVuZAotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICFwb29sRW50cnkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvb2xFbnRyeSA9IENvbnN0UG9v
bEVudHJ5Lm5ldyhjb2RlT3JpZ2luLCBub2RlLm9wZXJhbmRzWzBdLmFzbUxhYmVsLCAzMikKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb29sMzIgPDwgcG9vbEVudHJ5Ci0gICAgICAg
ICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtwb29sRW50cnksIG5vZGUub3BlcmFuZHNbMV1d
KQotICAgICAgICAgICAgICAgIGVsc2lmIG5vZGUub3BlcmFuZHNbMF0uaXNfYT8gU3ViSW1tZWRp
YXRlcwotICAgICAgICAgICAgICAgICAgICBwb29sRW50cnkgPSBDb25zdFBvb2xFbnRyeS5uZXco
Y29kZU9yaWdpbiwgbm9kZS5vcGVyYW5kc1swXS5zaDRPcGVyYW5kLCAzMikKLSAgICAgICAgICAg
ICAgICAgICAgY3VycmVudFBvb2wzMiA8PCBwb29sRW50cnkKLSAgICAgICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbcG9vbEVudHJ5
LCBub2RlLm9wZXJhbmRzWzFdXSkKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgbm9kZQotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQotICAgICAgICAgICAgZW5kCi0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQotICAgICAgICBlbmQKLSAg
ICB9Ci0gICAgaWYgbm90IGN1cnJlbnRQb29sMTYuZW1wdHk/Ci0gICAgICAgIG5ld0xpc3QgPDwg
Q29uc3RQb29sLm5ldyhjb2RlT3JpZ2luLCBjdXJyZW50UG9vbDE2LCAxNikKLSAgICBlbmQKLSAg
ICBpZiBub3QgY3VycmVudFBvb2wzMi5lbXB0eT8KLSAgICAgICAgbmV3TGlzdCA8PCBDb25zdFBv
b2wubmV3KGNvZGVPcmlnaW4sIGN1cnJlbnRQb29sMzIsIDMyKQotICAgIGVuZAotICAgIG5ld0xp
c3QKLWVuZAotCi0KLSMKLSMgTG93ZXJpbmcgb2YgYXJndW1lbnQgc2V0dXAgZm9yIFNINC4KLSMg
VGhpcyBwaGFzZSBhdm9pZHMgYXJndW1lbnQgcmVnaXN0ZXIgdHJhbXBsaW5nLiBGb3IgZXhhbXBs
ZSwgaWYgYTAgPT0gdDQ6Ci0jCi0jIHNldGFyZ3MgdDEsIHQ0Ci0jCi0jIGJlY29tZXM6Ci0jCi0j
IG1vdmUgdDQsIGExCi0jIG1vdmUgdDEsIGEwCi0jCi0KLWRlZiBzaDRMb3dlckFyZ3VtZW50U2V0
dXAobGlzdCkKLSAgICBhMCA9IFJlZ2lzdGVySUQuZm9yTmFtZShjb2RlT3JpZ2luLCAiYTAiKQot
ICAgIGExID0gUmVnaXN0ZXJJRC5mb3JOYW1lKGNvZGVPcmlnaW4sICJhMSIpCi0gICAgYTIgPSBS
ZWdpc3RlcklELmZvck5hbWUoY29kZU9yaWdpbiwgImEyIikKLSAgICBhMyA9IFJlZ2lzdGVySUQu
Zm9yTmFtZShjb2RlT3JpZ2luLCAiYTMiKQotICAgIG5ld0xpc3QgPSBbXQotICAgIGxpc3QuZWFj
aCB7Ci0gICAgICAgIHwgbm9kZSB8Ci0gICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24K
LSAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKLSAgICAgICAgICAgIHdoZW4gInNldGFyZ3Mi
Ci0gICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kcy5zaXplID09IDIKLSAgICAgICAgICAg
ICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1sxXS5zaDRPcGVyYW5kICE9IGEwLnNoNE9wZXJhbmQK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVP
cmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0sIGEwXSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW25v
ZGUub3BlcmFuZHNbMV0sIGExXSkKLSAgICAgICAgICAgICAgICAgICAgZWxzaWYgbm9kZS5vcGVy
YW5kc1swXS5zaDRPcGVyYW5kICE9IGExLnNoNE9wZXJhbmQKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUu
b3BlcmFuZHNbMV0sIGExXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0sIGEwXSkK
LSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBBcyAo
b3BlcmFuZHNbMF0gPT0gYTEpIGFuZCAob3BlcmFuZHNbMV0gPT0gYTApLCB3ZSBqdXN0IG5lZWQg
dG8gc3dhcCBhMCBhbmQgYTEuCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAieG9yaSIsIFthMCwgYTFdKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgInhvcmki
LCBbYTEsIGEwXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KGNvZGVPcmlnaW4sICJ4b3JpIiwgW2EwLCBhMV0pCi0gICAgICAgICAgICAgICAgICAg
IGVuZAotICAgICAgICAgICAgICAgIGVsc2lmIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSA0Ci0gICAg
ICAgICAgICAgICAgICAgICMgRklYTUU6IFdlIGp1c3QgcmFpc2UgYW4gZXJyb3IgaWYgc29tZXRo
aW5nIGlzIGxpa2VseSB0byBnbyB3cm9uZyBmb3Igbm93LgotICAgICAgICAgICAgICAgICAgICAj
IEl0IHdvdWxkIGJlIGJldHRlciB0byBpbXBsZW1lbnQgYSByZWNvdmVyaW5nIGFsZ29yaXRobS4K
LSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUub3BlcmFuZHNbMF0uc2g0T3BlcmFuZCA9PSBh
MS5zaDRPcGVyYW5kKSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUub3BlcmFuZHNb
MF0uc2g0T3BlcmFuZCA9PSBhMi5zaDRPcGVyYW5kKSBvcgotICAgICAgICAgICAgICAgICAgICAg
ICAgKG5vZGUub3BlcmFuZHNbMF0uc2g0T3BlcmFuZCA9PSBhMy5zaDRPcGVyYW5kKSBvcgotICAg
ICAgICAgICAgICAgICAgICAgICAgKG5vZGUub3BlcmFuZHNbMV0uc2g0T3BlcmFuZCA9PSBhMC5z
aDRPcGVyYW5kKSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUub3BlcmFuZHNbMV0u
c2g0T3BlcmFuZCA9PSBhMi5zaDRPcGVyYW5kKSBvcgotICAgICAgICAgICAgICAgICAgICAgICAg
KG5vZGUub3BlcmFuZHNbMV0uc2g0T3BlcmFuZCA9PSBhMy5zaDRPcGVyYW5kKSBvcgotICAgICAg
ICAgICAgICAgICAgICAgICAgKG5vZGUub3BlcmFuZHNbMl0uc2g0T3BlcmFuZCA9PSBhMC5zaDRP
cGVyYW5kKSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUub3BlcmFuZHNbMl0uc2g0
T3BlcmFuZCA9PSBhMS5zaDRPcGVyYW5kKSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgKG5v
ZGUub3BlcmFuZHNbMl0uc2g0T3BlcmFuZCA9PSBhMy5zaDRPcGVyYW5kKSBvcgotICAgICAgICAg
ICAgICAgICAgICAgICAgKG5vZGUub3BlcmFuZHNbM10uc2g0T3BlcmFuZCA9PSBhMC5zaDRPcGVy
YW5kKSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUub3BlcmFuZHNbM10uc2g0T3Bl
cmFuZCA9PSBhMS5zaDRPcGVyYW5kKSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUu
b3BlcmFuZHNbM10uc2g0T3BlcmFuZCA9PSBhMi5zaDRPcGVyYW5kKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgIlBvdGVudGlhbCBhcmd1bWVudCByZWdpc3RlciB0cmFtcGxpbmcgZGV0
ZWN0ZWQuIgotICAgICAgICAgICAgICAgICAgICBlbmQKLQotICAgICAgICAgICAgICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJh
bmRzWzBdLCBhMF0pCi0gICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMV0sIGExXSkKLSAgICAgICAg
ICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUi
LCBbbm9kZS5vcGVyYW5kc1syXSwgYTJdKQotICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzNdLCBh
M10pCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByYWlzZSAiSW52
YWxpZCBvcGVyYW5kcyBudW1iZXIgKCN7bm9kZS5vcGVyYW5kcy5zaXplfSkgZm9yIHNldGFyZ3Mi
Ci0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBub2RlCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbmV3TGlzdCA8PCBub2RlCi0gICAgICAgIGVuZAotICAgIH0KLSAgICBuZXdMaXN0Ci1lbmQK
LQotCi1jbGFzcyBTZXF1ZW5jZQotICAgIGRlZiBnZXRNb2RpZmllZExpc3RTSDQKLSAgICAgICAg
cmVzdWx0ID0gQGxpc3QKLQotICAgICAgICAjIFZlcmlmeSB0aGF0IHdlIHdpbGwgb25seSBzZWUg
aW5zdHJ1Y3Rpb25zIGFuZCBsYWJlbHMuCi0gICAgICAgIHJlc3VsdC5lYWNoIHsKLSAgICAgICAg
ICAgIHwgbm9kZSB8Ci0gICAgICAgICAgICB1bmxlc3Mgbm9kZS5pc19hPyBJbnN0cnVjdGlvbiBv
cgotICAgICAgICAgICAgICAgICAgICBub2RlLmlzX2E/IExhYmVsIG9yCi0gICAgICAgICAgICAg
ICAgICAgIG5vZGUuaXNfYT8gTG9jYWxMYWJlbCBvcgotICAgICAgICAgICAgICAgICAgICBub2Rl
LmlzX2E/IFNraXAKLSAgICAgICAgICAgICAgICByYWlzZSAiVW5leHBlY3RlZCAje25vZGUuaW5z
cGVjdH0gYXQgI3tub2RlLmNvZGVPcmlnaW59IgotICAgICAgICAgICAgZW5kCi0gICAgICAgIH0K
LQotICAgICAgICByZXN1bHQgPSBzaDRMb3dlclNoaWZ0T3BzKHJlc3VsdCkKLSAgICAgICAgcmVz
dWx0ID0gc2g0TG93ZXJTaW1wbGVCcmFuY2hPcHMocmVzdWx0KQotICAgICAgICByZXN1bHQgPSBy
aXNjTG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMocmVzdWx0KSB7Ci0gICAgICAgICAgICB8IG5vZGUs
IGFkZHJlc3MgfAotICAgICAgICAgICAgaWYgYWRkcmVzcy5pc19hPyBBZGRyZXNzCi0gICAgICAg
ICAgICAgICAgY2FzZSBub2RlLm9wY29kZQotICAgICAgICAgICAgICAgIHdoZW4gImJ0YnoiLCAi
YnRibnoiLCAiY2JlcSIsICJiYmVxIiwgImJibmVxIiwgImJiYiIsICJsb2FkYiIsICJzdG9yZWIi
Ci0gICAgICAgICAgICAgICAgICAgICgwLi4xNSkuaW5jbHVkZT8gYWRkcmVzcy5vZmZzZXQudmFs
dWUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAoKG5vZGUub3BlcmFuZHNbMF0uaXNfYT8g
UmVnaXN0ZXJJRCBhbmQgbm9kZS5vcGVyYW5kc1swXS5zaDRPcGVyYW5kID09ICJyMCIpIG9yCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUub3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJ
RCBhbmQgbm9kZS5vcGVyYW5kc1sxXS5zaDRPcGVyYW5kID09ICJyMCIpKQotICAgICAgICAgICAg
ICAgIHdoZW4gImxvYWRoIgotICAgICAgICAgICAgICAgICAgICAoMC4uMzApLmluY2x1ZGU/IGFk
ZHJlc3Mub2Zmc2V0LnZhbHVlIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgKChub2RlLm9w
ZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIG5vZGUub3BlcmFuZHNbMF0uc2g0T3BlcmFu
ZCA9PSAicjAiKSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlLm9wZXJhbmRzWzFd
LmlzX2E/IFJlZ2lzdGVySUQgYW5kIG5vZGUub3BlcmFuZHNbMV0uc2g0T3BlcmFuZCA9PSAicjAi
KSkKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICgwLi42MCkuaW5j
bHVkZT8gYWRkcmVzcy5vZmZzZXQudmFsdWUKLSAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmYWxzZQotICAgICAgICAgICAgZW5kCi0gICAgICAg
IH0KLSAgICAgICAgcmVzdWx0ID0gc2g0TG93ZXJEb3VibGVBY2Nlc3NlcyhyZXN1bHQpCi0gICAg
ICAgIHJlc3VsdCA9IHNoNExvd2VyRG91YmxlU3BlY2lhbHMocmVzdWx0KQotICAgICAgICByZXN1
bHQgPSByaXNjTG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKHJlc3VsdCwgWyJzdG9yZWIiLCAic3Rv
cmVpIiwgInN0b3JlcCIsICJtdWxpIiwgIm11bHAiLCAiYW5kaSIsICJvcmkiLCAieG9yaSIsCi0g
ICAgICAgICAgICAiY2JlcSIsICJjaWVxIiwgImNwZXEiLCAiY2luZXEiLCAiY3BuZXEiLCAiY2li
IiwgImJhZGRpbyIsICJic3ViaW8iLCAiYm11bGlvIiwgImJhZGRpcyIsCi0gICAgICAgICAgICAi
YmJlcSIsICJiYm5lcSIsICJiYmIiLCAiYmllcSIsICJicGVxIiwgImJpbmVxIiwgImJwbmVxIiwg
ImJpYSIsICJicGEiLCAiYmlhZXEiLCAiYnBhZXEiLCAiYmliIiwgImJwYiIsCi0gICAgICAgICAg
ICAiYmlndGVxIiwgImJwZ3RlcSIsICJiaWx0IiwgImJwbHQiLCAiYmlndCIsICJicGd0IiwgImJp
bHRlcSIsICJicGx0ZXEiLCAiYnRpeiIsICJidHB6IiwgImJ0aW56IiwgImJ0cG56IiwgImJ0Ynoi
LCAiYnRibnoiXSkKLSAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRl
cyhyZXN1bHQsIC0xMjguLjEyNykKLSAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyTWlzcGxhY2Vk
QWRkcmVzc2VzKHJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gc2g0TG93ZXJNaXNwbGFjZWRMYWJl
bHMocmVzdWx0KQotICAgICAgICByZXN1bHQgPSBzaDRMb3dlck1pc3BsYWNlZFNwZWNpYWxSZWdp
c3RlcnMocmVzdWx0KQotCi0gICAgICAgIHJlc3VsdCA9IGFzc2lnblJlZ2lzdGVyc1RvVGVtcG9y
YXJpZXMocmVzdWx0LCA6Z3ByLCBTSDRfVE1QX0dQUlMpCi0gICAgICAgIHJlc3VsdCA9IGFzc2ln
blJlZ2lzdGVyc1RvVGVtcG9yYXJpZXMocmVzdWx0LCA6Z3ByLCBTSDRfVE1QX0ZQUlMpCi0KLSAg
ICAgICAgcmVzdWx0ID0gc2g0TG93ZXJDb25zdFBvb2wocmVzdWx0KQotICAgICAgICByZXN1bHQg
PSBzaDRMb3dlckFyZ3VtZW50U2V0dXAocmVzdWx0KQotCi0gICAgICAgIHJldHVybiByZXN1bHQK
LSAgICBlbmQKLWVuZAotCi1kZWYgc2g0T3BlcmFuZHMob3BlcmFuZHMpCi0gICAgb3BlcmFuZHMu
bWFwe3x2fCB2LnNoNE9wZXJhbmR9LmpvaW4oIiwgIikKLWVuZAotCi1kZWYgZW1pdFNINEJyYW5j
aChzaDRvcGNvZGUsIG9wZXJhbmQpCi0gICAgcmFpc2UgIkludmFsaWQgb3BlcmFuZCAje29wZXJh
bmR9IiB1bmxlc3Mgb3BlcmFuZC5pc19hPyBSZWdpc3RlcklEIG9yIG9wZXJhbmQuaXNfYT8gU3Bl
Y2lhbFJlZ2lzdGVyCi0gICAgJGFzbS5wdXRzICIje3NoNG9wY29kZX0gQCN7b3BlcmFuZC5zaDRP
cGVyYW5kfSIKLSAgICAkYXNtLnB1dHMgIm5vcCIKLWVuZAotCi1kZWYgZW1pdFNINFNoaWZ0SW1t
KHZhbCwgb3BlcmFuZCwgZGlyZWN0aW9uKQotICAgIHRtcCA9IHZhbAotICAgIHdoaWxlIHRtcCA+
IDAKLSAgICAgICAgaWYgdG1wID49IDE2Ci0gICAgICAgICAgICAkYXNtLnB1dHMgInNobCN7ZGly
ZWN0aW9ufTE2ICN7b3BlcmFuZC5zaDRPcGVyYW5kfSIKLSAgICAgICAgICAgIHRtcCAtPSAxNgot
ICAgICAgICBlbHNpZiB0bXAgPj0gOAotICAgICAgICAgICAgJGFzbS5wdXRzICJzaGwje2RpcmVj
dGlvbn04ICN7b3BlcmFuZC5zaDRPcGVyYW5kfSIKLSAgICAgICAgICAgIHRtcCAtPSA4Ci0gICAg
ICAgIGVsc2lmIHRtcCA+PSAyCi0gICAgICAgICAgICAkYXNtLnB1dHMgInNobCN7ZGlyZWN0aW9u
fTIgI3tvcGVyYW5kLnNoNE9wZXJhbmR9IgotICAgICAgICAgICAgdG1wIC09IDIKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgJGFzbS5wdXRzICJzaGwje2RpcmVjdGlvbn0gI3tvcGVyYW5kLnNo
NE9wZXJhbmR9IgotICAgICAgICAgICAgdG1wIC09IDEKLSAgICAgICAgZW5kCi0gICAgZW5kCi1l
bmQKLQotZGVmIGVtaXRTSDRCcmFuY2hJZlQoZGVzdCwgbmVnKQotICAgIG91dGxhYmVsID0gTG9j
YWxMYWJlbC51bmlxdWUoImJyYW5jaElmVCIpCi0gICAgc2g0b3Bjb2RlID0gbmVnID8gImJ0IiA6
ICJiZiIKLSAgICAkYXNtLnB1dHMgIiN7c2g0b3Bjb2RlfSAje0xvY2FsTGFiZWxSZWZlcmVuY2Uu
bmV3KGNvZGVPcmlnaW4sIG91dGxhYmVsKS5hc21MYWJlbH0iCi0gICAgaWYgZGVzdC5pc19hPyBM
b2NhbExhYmVsUmVmZXJlbmNlCi0gICAgICAgICRhc20ucHV0cyAiYnJhICN7ZGVzdC5hc21MYWJl
bH0iCi0gICAgICAgICRhc20ucHV0cyAibm9wIgotICAgIGVsc2UKLSAgICAgICAgZW1pdFNINEJy
YW5jaCgiam1wIiwgZGVzdCkKLSAgICBlbmQKLSAgICBvdXRsYWJlbC5sb3dlcigiU0g0IikKLWVu
ZAotCi1kZWYgZW1pdFNINEludENvbXBhcmUoY21wT3Bjb2RlLCBvcGVyYW5kcykKLSAgICAkYXNt
LnB1dHMgImNtcC8je2NtcE9wY29kZX0gI3tzaDRPcGVyYW5kcyhbb3BlcmFuZHNbMV0sIG9wZXJh
bmRzWzBdXSl9IgotZW5kCi0KLWRlZiBlbWl0U0g0Q29uZEJyYW5jaChjbXBPcGNvZGUsIG5lZywg
b3BlcmFuZHMpCi0gICAgZW1pdFNINEludENvbXBhcmUoY21wT3Bjb2RlLCBvcGVyYW5kcykKLSAg
ICBlbWl0U0g0QnJhbmNoSWZUKG9wZXJhbmRzWzJdLCBuZWcpCi1lbmQKLQotZGVmIGVtaXRTSDRD
b21wYXJlU2V0KGNtcE9wY29kZSwgbmVnLCBvcGVyYW5kcykKLSAgICBlbWl0U0g0SW50Q29tcGFy
ZShjbXBPcGNvZGUsIG9wZXJhbmRzKQotICAgIGlmICFuZWcKLSAgICAgICAgJGFzbS5wdXRzICJt
b3Z0ICN7b3BlcmFuZHNbMl0uc2g0T3BlcmFuZH0iCi0gICAgZWxzZQotICAgICAgICBvdXRsYWJl
bCA9IExvY2FsTGFiZWwudW5pcXVlKCJjb21wYXJlU2V0IikKLSAgICAgICAgJGFzbS5wdXRzICJt
b3YgIzAsICN7b3BlcmFuZHNbMl0uc2g0T3BlcmFuZH0iCi0gICAgICAgICRhc20ucHV0cyAiYnQg
I3tMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvdXRsYWJlbCkuYXNtTGFiZWx9
IgotICAgICAgICAkYXNtLnB1dHMgIm1vdiAjMSwgI3tvcGVyYW5kc1syXS5zaDRPcGVyYW5kfSIK
LSAgICAgICAgb3V0bGFiZWwubG93ZXIoIlNINCIpCi0gICAgZW5kCi1lbmQKLQotZGVmIGVtaXRT
SDRCcmFuY2hJZk5hTihvcGVyYW5kcykKLSAgICByYWlzZSAiSW52YWxpZCBvcGVyYW5kcyBudW1i
ZXIgKCN7b3BlcmFuZHMuc2l6ZX0pIiB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCi0gICAgJGFz
bS5wdXRzICJmY21wL2VxICN7c2g0T3BlcmFuZHMoW29wZXJhbmRzWzBdLCBvcGVyYW5kc1swXV0p
fSIKLSAgICAkYXNtLnB1dHMgImJmICN7b3BlcmFuZHNbMV0uYXNtTGFiZWx9IgotZW5kCi0KLWRl
ZiBlbWl0U0g0RG91YmxlQ29uZEJyYW5jaChjbXBPcGNvZGUsIG5lZywgb3BlcmFuZHMpCi0gICAg
aWYgY21wT3Bjb2RlID09ICJsdCIKLSAgICAgICAgJGFzbS5wdXRzICJmY21wL2d0ICN7c2g0T3Bl
cmFuZHMoW29wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXV0pfSIKLSAgICBlbHNlCi0gICAgICAgICRh
c20ucHV0cyAiZmNtcC8je2NtcE9wY29kZX0gI3tzaDRPcGVyYW5kcyhbb3BlcmFuZHNbMV0sIG9w
ZXJhbmRzWzBdXSl9IgotICAgIGVuZAotICAgIGVtaXRTSDRCcmFuY2hJZlQob3BlcmFuZHNbMl0s
IG5lZykKLWVuZAotCi1jbGFzcyBJbnN0cnVjdGlvbgotICAgIGRlZiBsb3dlclNINAotICAgICAg
ICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmluZwotICAgICAgICBjYXNlIG9wY29kZQotICAg
ICAgICB3aGVuICJhZGRpIiwgImFkZHAiCi0gICAgICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09
IDMKLSAgICAgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS5zaDRPcGVyYW5kID09IG9wZXJhbmRz
WzJdLnNoNE9wZXJhbmQKLSAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQgI3tzaDRP
cGVyYW5kcyhbb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdXSl9IgotICAgICAgICAgICAgICAgIGVs
c2lmIG9wZXJhbmRzWzFdLnNoNE9wZXJhbmQgPT0gb3BlcmFuZHNbMl0uc2g0T3BlcmFuZAotICAg
ICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCAje3NoNE9wZXJhbmRzKFtvcGVyYW5kc1sw
XSwgb3BlcmFuZHNbMl1dKX0iCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICAkYXNtLnB1dHMgIm1vdiAje3NoNE9wZXJhbmRzKFtvcGVyYW5kc1swXSwgb3BlcmFuZHNb
Ml1dKX0iCi0gICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkICN7c2g0T3BlcmFuZHMo
W29wZXJhbmRzWzFdLCBvcGVyYW5kc1syXV0pfSIKLSAgICAgICAgICAgICAgICBlbmQKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCAje3NoNE9wZXJhbmRz
KG9wZXJhbmRzKX0iCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgd2hlbiAic3ViaSIsICJzdWJw
IgotICAgICAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCi0gICAgICAgICAgICAgICAgaWYg
b3BlcmFuZHNbMV0uaXNfYT8gSW1tZWRpYXRlCi0gICAgICAgICAgICAgICAgICAgICRhc20ucHV0
cyAibW92ICN7c2g0T3BlcmFuZHMoW0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEgKiBvcGVy
YW5kc1sxXS52YWx1ZSksIG9wZXJhbmRzWzJdXSl9IgotICAgICAgICAgICAgICAgICAgICAkYXNt
LnB1dHMgImFkZCAje3NoNE9wZXJhbmRzKFtvcGVyYW5kc1swXSwgb3BlcmFuZHNbMl1dKX0iCi0g
ICAgICAgICAgICAgICAgZWxzaWYgb3BlcmFuZHNbMV0uc2g0T3BlcmFuZCA9PSBvcGVyYW5kc1sy
XS5zaDRPcGVyYW5kCi0gICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAibmVnICN7c2g0T3Bl
cmFuZHMoW29wZXJhbmRzWzJdLCBvcGVyYW5kc1syXV0pfSIKLSAgICAgICAgICAgICAgICAgICAg
JGFzbS5wdXRzICJhZGQgI3tzaDRPcGVyYW5kcyhbb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzJdXSl9
IgotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJt
b3YgI3tzaDRPcGVyYW5kcyhbb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzJdXSl9IgotICAgICAgICAg
ICAgICAgICAgICAkYXNtLnB1dHMgInN1YiAje3NoNE9wZXJhbmRzKFtvcGVyYW5kc1sxXSwgb3Bl
cmFuZHNbMl1dKX0iCi0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCi0gICAgICAgICAgICAg
ICAgICAgICRhc20ucHV0cyAiYWRkICN7c2g0T3BlcmFuZHMoW0ltbWVkaWF0ZS5uZXcoY29kZU9y
aWdpbiwgLTEgKiBvcGVyYW5kc1swXS52YWx1ZSksIG9wZXJhbmRzWzFdXSl9IgotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJzdWIgI3tzaDRPcGVy
YW5kcyhvcGVyYW5kcyl9IgotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgZW5kCi0g
ICAgICAgIHdoZW4gIm11bGkiLCAibXVscCIKLSAgICAgICAgICAgICRhc20ucHV0cyAibXVsLmwg
I3tzaDRPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgotICAgICAgICAgICAgJGFzbS5wdXRzICJz
dHMgbWFjbCwgI3tvcGVyYW5kc1stMV0uc2g0T3BlcmFuZH0iCi0gICAgICAgIHdoZW4gIm5lZ2ki
LCAibmVncCIKLSAgICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMgotICAgICAgICAgICAg
ICAgICRhc20ucHV0cyAibmVnICN7c2g0T3BlcmFuZHMob3BlcmFuZHMpfSIKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm5lZyAje3NoNE9wZXJhbmRzKFtvcGVy
YW5kc1swXSwgb3BlcmFuZHNbMF1dKX0iCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgd2hlbiAi
YW5kaSIsICJhbmRwIiwgIm9yaSIsICJvcnAiLCAieG9yaSIsICJ4b3JwIgotICAgICAgICAgICAg
cmFpc2UgIiN7b3Bjb2RlfSB3aXRoICN7b3BlcmFuZHMuc2l6ZX0gb3BlcmFuZHMgaXMgbm90IGhh
bmRsZWQgeWV0IiB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCi0gICAgICAgICAgICBzaDRvcGNv
ZGUgPSBvcGNvZGVbMC4uLTJdCi0gICAgICAgICAgICAkYXNtLnB1dHMgIiN7c2g0b3Bjb2RlfSAj
e3NoNE9wZXJhbmRzKG9wZXJhbmRzKX0iCi0gICAgICAgIHdoZW4gInNobGx4IiwgInNobHJ4Igot
ICAgICAgICAgICAgcmFpc2UgIlVuaGFuZGxlZCBwYXJhbWV0ZXJzIGZvciBvcGNvZGUgI3tvcGNv
ZGV9IiB1bmxlc3Mgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCi0gICAgICAgICAgICBpZiBv
cGVyYW5kc1swXS52YWx1ZSA9PSAxCi0gICAgICAgICAgICAgICAgJGFzbS5wdXRzICJzaGwje29w
Y29kZVszLCAxXX0gI3tvcGVyYW5kc1sxXS5zaDRPcGVyYW5kfSIKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAkYXNtLnB1dHMgInNobCN7b3Bjb2RlWzMsIDFdfSN7b3BlcmFuZHNb
MF0udmFsdWV9ICN7b3BlcmFuZHNbMV0uc2g0T3BlcmFuZH0iCi0gICAgICAgICAgICBlbmQKLSAg
ICAgICAgd2hlbiAic2hhbHgiLCAic2hhcngiCi0gICAgICAgICAgICByYWlzZSAiVW5oYW5kbGVk
IHBhcmFtZXRlcnMgZm9yIG9wY29kZSAje29wY29kZX0iIHVubGVzcyBvcGVyYW5kc1swXS5pc19h
PyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDEKLSAgICAgICAgICAgICRhc20u
cHV0cyAic2hhI3tvcGNvZGVbMywgMV19ICN7b3BlcmFuZHNbMV0uc2g0T3BlcmFuZH0iCi0gICAg
ICAgIHdoZW4gInNobGQiLCAic2hhZCIKLSAgICAgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9
ICN7c2g0T3BlcmFuZHMob3BlcmFuZHMpfSIKLSAgICAgICAgd2hlbiAibG9hZGRSZXZlcnNlZEFu
ZEluY3JlbWVudEFkZHJlc3MiCi0gICAgICAgICAgICAjIEFzIHdlIGFyZSBsaXR0bGUgZW5kaWFu
LCB3ZSBkb24ndCB1c2UgImZtb3YgQFJtLCBEUm4iIGhlcmUuCi0gICAgICAgICAgICAkYXNtLnB1
dHMgImZtb3YucyAje29wZXJhbmRzWzBdLnNoNE9wZXJhbmRQb3N0SW5jfSwgI3tvcGVyYW5kc1sx
XS5zaDRTaW5nbGVMb30iCi0gICAgICAgICAgICAkYXNtLnB1dHMgImZtb3YucyAje29wZXJhbmRz
WzBdLnNoNE9wZXJhbmRQb3N0SW5jfSwgI3tvcGVyYW5kc1sxXS5zaDRTaW5nbGVIaX0iCi0gICAg
ICAgIHdoZW4gInN0b3JlZFJldmVyc2VkQW5kRGVjcmVtZW50QWRkcmVzcyIKLSAgICAgICAgICAg
ICMgQXMgd2UgYXJlIGxpdHRsZSBlbmRpYW4sIHdlIGRvbid0IHVzZSAiZm1vdiBEUm0sIEBSbiIg
aGVyZS4KLSAgICAgICAgICAgICRhc20ucHV0cyAiZm1vdi5zICN7b3BlcmFuZHNbMF0uc2g0U2lu
Z2xlSGl9LCAje29wZXJhbmRzWzFdLnNoNE9wZXJhbmRQcmVEZWN9IgotICAgICAgICAgICAgJGFz
bS5wdXRzICJmbW92LnMgI3tvcGVyYW5kc1swXS5zaDRTaW5nbGVMb30sICN7b3BlcmFuZHNbMV0u
c2g0T3BlcmFuZFByZURlY30iCi0gICAgICAgIHdoZW4gImNpMmQiCi0gICAgICAgICAgICAkYXNt
LnB1dHMgImxkcyAje29wZXJhbmRzWzBdLnNoNE9wZXJhbmR9LCBmcHVsIgotICAgICAgICAgICAg
JGFzbS5wdXRzICJmbG9hdCBmcHVsLCAje29wZXJhbmRzWzFdLnNoNE9wZXJhbmR9IgotICAgICAg
ICB3aGVuICJmaWkyZCIKLSAgICAgICAgICAgICRhc20ucHV0cyAibGRzICN7b3BlcmFuZHNbMF0u
c2g0T3BlcmFuZH0sIGZwdWwiCi0gICAgICAgICAgICAkYXNtLnB1dHMgImZzdHMgZnB1bCwgI3tv
cGVyYW5kc1syXS5zaDRTaW5nbGVMb30iCi0gICAgICAgICAgICAkYXNtLnB1dHMgImxkcyAje29w
ZXJhbmRzWzFdLnNoNE9wZXJhbmR9LCBmcHVsIgotICAgICAgICAgICAgJGFzbS5wdXRzICJmc3Rz
IGZwdWwsICN7b3BlcmFuZHNbMl0uc2g0U2luZ2xlSGl9IgotICAgICAgICB3aGVuICJmZDJpaSIK
LSAgICAgICAgICAgICRhc20ucHV0cyAiZmxkcyAje29wZXJhbmRzWzBdLnNoNFNpbmdsZUxvfSwg
ZnB1bCIKLSAgICAgICAgICAgICRhc20ucHV0cyAic3RzIGZwdWwsICN7b3BlcmFuZHNbMV0uc2g0
T3BlcmFuZH0iCi0gICAgICAgICAgICAkYXNtLnB1dHMgImZsZHMgI3tvcGVyYW5kc1swXS5zaDRT
aW5nbGVIaX0sIGZwdWwiCi0gICAgICAgICAgICAkYXNtLnB1dHMgInN0cyBmcHVsLCAje29wZXJh
bmRzWzJdLnNoNE9wZXJhbmR9IgotICAgICAgICB3aGVuICJhZGRkIiwgInN1YmQiLCAibXVsZCIs
ICJkaXZkIgotICAgICAgICAgICAgc2g0b3Bjb2RlID0gb3Bjb2RlWzAuLi0yXQotICAgICAgICAg
ICAgJGFzbS5wdXRzICJmI3tzaDRvcGNvZGV9ICN7c2g0T3BlcmFuZHMob3BlcmFuZHMpfSIKLSAg
ICAgICAgd2hlbiAiYmNkMmkiCi0gICAgICAgICAgICAkYXNtLnB1dHMgImZ0cmMgI3tvcGVyYW5k
c1swXS5zaDRPcGVyYW5kfSwgZnB1bCIKLSAgICAgICAgICAgICRhc20ucHV0cyAic3RzIGZwdWws
ICN7b3BlcmFuZHNbMV0uc2g0T3BlcmFuZH0iCi0gICAgICAgICAgICAkYXNtLnB1dHMgImZsb2F0
IGZwdWwsICN7U0g0X1RNUF9GUFJTWzBdLnNoNE9wZXJhbmR9IgotICAgICAgICAgICAgJGFzbS5w
dXRzICJmY21wL2VxICN7c2g0T3BlcmFuZHMoW29wZXJhbmRzWzBdLCBTSDRfVE1QX0ZQUlNbMF1d
KX0iCi0gICAgICAgICAgICAkYXNtLnB1dHMgImJmICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9Igot
ICAgICAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tzaDRPcGVyYW5kcyhbb3BlcmFuZHNbMV0sIG9w
ZXJhbmRzWzFdXSl9IgotICAgICAgICAgICAgJGFzbS5wdXRzICJidCAje29wZXJhbmRzWzJdLmFz
bUxhYmVsfSIKLSAgICAgICAgd2hlbiAiYmRuYW4iCi0gICAgICAgICAgICBlbWl0U0g0QnJhbmNo
SWZOYU4ob3BlcmFuZHMpCi0gICAgICAgIHdoZW4gImJkbmVxIgotICAgICAgICAgICAgZW1pdFNI
NERvdWJsZUNvbmRCcmFuY2goImVxIiwgdHJ1ZSwgb3BlcmFuZHMpCi0gICAgICAgIHdoZW4gImJk
Z3RlcSIKLSAgICAgICAgICAgIGVtaXRTSDREb3VibGVDb25kQnJhbmNoKCJsdCIsIHRydWUsIG9w
ZXJhbmRzKQotICAgICAgICB3aGVuICJiZGx0IgotICAgICAgICAgICAgZW1pdFNINERvdWJsZUNv
bmRCcmFuY2goImx0IiwgZmFsc2UsIG9wZXJhbmRzKQotICAgICAgICB3aGVuICJiZGx0ZXEiCi0g
ICAgICAgICAgICBlbWl0U0g0RG91YmxlQ29uZEJyYW5jaCgiZ3QiLCB0cnVlLCBvcGVyYW5kcykK
LSAgICAgICAgd2hlbiAiYmRndCIKLSAgICAgICAgICAgIGVtaXRTSDREb3VibGVDb25kQnJhbmNo
KCJndCIsIGZhbHNlLCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAiYmFkZGlvIiwgImJhZGRwbyIs
ICJic3ViaW8iLCAiYnN1YnBvIgotICAgICAgICAgICAgcmFpc2UgIiN7b3Bjb2RlfSB3aXRoICN7
b3BlcmFuZHMuc2l6ZX0gb3BlcmFuZHMgaXMgbm90IGhhbmRsZWQgeWV0IiB1bmxlc3Mgb3BlcmFu
ZHMuc2l6ZSA9PSAzCi0gICAgICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlWzEsIDNdfXYgI3tz
aDRPcGVyYW5kcyhbb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdXSl9IgotICAgICAgICAgICAgJGFz
bS5wdXRzICJidCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKLSAgICAgICAgd2hlbiAiYm11bGlv
IiwgImJtdWxwbyIKLSAgICAgICAgICAgIHJhaXNlICJJbnZhbGlkIG9wZXJhbmRzIG51bWJlciAo
I3tvcGVyYW5kcy5zaXplfSkiIHVubGVzcyBvcGVyYW5kcy5zaXplID09IDUKLSAgICAgICAgICAg
ICRhc20ucHV0cyAiZG11bHMubCAje3NoNE9wZXJhbmRzKFtvcGVyYW5kc1syXSwgb3BlcmFuZHNb
M11dKX0iCi0gICAgICAgICAgICAkYXNtLnB1dHMgInN0cyBtYWNsLCAje29wZXJhbmRzWzNdLnNo
NE9wZXJhbmR9IgotICAgICAgICAgICAgJGFzbS5wdXRzICJjbXAvcHogI3tvcGVyYW5kc1szXS5z
aDRPcGVyYW5kfSIKLSAgICAgICAgICAgICRhc20ucHV0cyAibW92dCAje29wZXJhbmRzWzFdLnNo
NE9wZXJhbmR9IgotICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQgIy0xLCAje29wZXJhbmRzWzFd
LnNoNE9wZXJhbmR9IgotICAgICAgICAgICAgJGFzbS5wdXRzICJzdHMgbWFjaCwgI3tvcGVyYW5k
c1swXS5zaDRPcGVyYW5kfSIKLSAgICAgICAgICAgICRhc20ucHV0cyAiY21wL2VxICN7c2g0T3Bl
cmFuZHMoW29wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXV0pfSIKLSAgICAgICAgICAgICRhc20ucHV0
cyAiYmYgI3tvcGVyYW5kc1s0XS5hc21MYWJlbH0iCi0gICAgICAgIHdoZW4gImJ0aXoiLCAiYnRw
eiIsICJidGJ6IiwgImJ0aW56IiwgImJ0cG56IiwgImJ0Ym56IgotICAgICAgICAgICAgaWYgb3Bl
cmFuZHMuc2l6ZSA9PSAzCi0gICAgICAgICAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tzaDRPcGVy
YW5kcyhbb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdXSl9IgotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLnNoNE9wZXJhbmQgPT0gInIwIgotICAgICAgICAg
ICAgICAgICAgICAkYXNtLnB1dHMgImNtcC9lcSAjMCwgcjAiCi0gICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgInRzdCAje3NoNE9wZXJhbmRzKFtvcGVy
YW5kc1swXSwgb3BlcmFuZHNbMF1dKX0iCi0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAg
ICBlbmQKLSAgICAgICAgICAgIGVtaXRTSDRCcmFuY2hJZlQob3BlcmFuZHNbLTFdLCAob3Bjb2Rl
Wy0yLCAyXSA9PSAibnoiKSkKLSAgICAgICAgd2hlbiAiY2llcSIsICJjcGVxIiwgImNiZXEiCi0g
ICAgICAgICAgICBlbWl0U0g0Q29tcGFyZVNldCgiZXEiLCBmYWxzZSwgb3BlcmFuZHMpCi0gICAg
ICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIiwgImNibmVxIgotICAgICAgICAgICAgZW1pdFNINENv
bXBhcmVTZXQoImVxIiwgdHJ1ZSwgb3BlcmFuZHMpCi0gICAgICAgIHdoZW4gImNpYiIsICJjcGIi
LCAiY2JiIgotICAgICAgICAgICAgZW1pdFNINENvbXBhcmVTZXQoImhzIiwgdHJ1ZSwgb3BlcmFu
ZHMpCi0gICAgICAgIHdoZW4gImJpZXEiLCAiYnBlcSIsICJiYmVxIgotICAgICAgICAgICAgZW1p
dFNINENvbmRCcmFuY2goImVxIiwgZmFsc2UsIG9wZXJhbmRzKQotICAgICAgICB3aGVuICJiaW5l
cSIsICJicG5lcSIsICJiYm5lcSIKLSAgICAgICAgICAgIGVtaXRTSDRDb25kQnJhbmNoKCJlcSIs
IHRydWUsIG9wZXJhbmRzKQotICAgICAgICB3aGVuICJiaWIiLCAiYnBiIiwgImJiYiIKLSAgICAg
ICAgICAgIGVtaXRTSDRDb25kQnJhbmNoKCJocyIsIHRydWUsIG9wZXJhbmRzKQotICAgICAgICB3
aGVuICJiaWEiLCAiYnBhIiwgImJiYSIKLSAgICAgICAgICAgIGVtaXRTSDRDb25kQnJhbmNoKCJo
aSIsIGZhbHNlLCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAiYmliZXEiLCAiYnBiZXEiCi0gICAg
ICAgICAgICBlbWl0U0g0Q29uZEJyYW5jaCgiaGkiLCB0cnVlLCBvcGVyYW5kcykKLSAgICAgICAg
d2hlbiAiYmlhZXEiLCAiYnBhZXEiCi0gICAgICAgICAgICBlbWl0U0g0Q29uZEJyYW5jaCgiaHMi
LCBmYWxzZSwgb3BlcmFuZHMpCi0gICAgICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiLCAiYmJn
dGVxIgotICAgICAgICAgICAgZW1pdFNINENvbmRCcmFuY2goImdlIiwgZmFsc2UsIG9wZXJhbmRz
KQotICAgICAgICB3aGVuICJiaWx0IiwgImJwbHQiLCAiYmJsdCIKLSAgICAgICAgICAgIGVtaXRT
SDRDb25kQnJhbmNoKCJnZSIsIHRydWUsIG9wZXJhbmRzKQotICAgICAgICB3aGVuICJiaWd0Iiwg
ImJwZ3QiLCAiYmJndCIKLSAgICAgICAgICAgIGVtaXRTSDRDb25kQnJhbmNoKCJndCIsIGZhbHNl
LCBvcGVyYW5kcykKLSAgICAgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIsICJiYmx0ZXEiCi0g
ICAgICAgICAgICBlbWl0U0g0Q29uZEJyYW5jaCgiZ3QiLCB0cnVlLCBvcGVyYW5kcykKLSAgICAg
ICAgd2hlbiAiYnMiCi0gICAgICAgICAgICAkYXNtLnB1dHMgImNtcC9weiAje29wZXJhbmRzWzBd
LnNoNE9wZXJhbmR9IgotICAgICAgICAgICAgJGFzbS5wdXRzICJiZiAje29wZXJhbmRzWzFdLmFz
bUxhYmVsfSIKLSAgICAgICAgd2hlbiAiY2FsbCIKLSAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBd
LmlzX2E/IExvY2FsTGFiZWxSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImJz
ciAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKLSAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm5v
cCIKLSAgICAgICAgICAgIGVsc2lmIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgb3Igb3Bl
cmFuZHNbMF0uaXNfYT8gU3BlY2lhbFJlZ2lzdGVyCi0gICAgICAgICAgICAgICAgZW1pdFNINEJy
YW5jaCgianNyIiwgb3BlcmFuZHNbMF0pCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgcmFpc2UgIlVuaGFuZGxlZCBwYXJhbWV0ZXJzIGZvciBvcGNvZGUgI3tvcGNvZGV9IGF0ICN7
Y29kZU9yaWdpblN0cmluZ30iCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgd2hlbiAiam1wIgot
ICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gTG9jYWxMYWJlbFJlZmVyZW5jZQotICAg
ICAgICAgICAgICAgICRhc20ucHV0cyAiYnJhICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgotICAg
ICAgICAgICAgICAgICRhc20ucHV0cyAibm9wIgotICAgICAgICAgICAgZWxzaWYgb3BlcmFuZHNb
MF0uaXNfYT8gUmVnaXN0ZXJJRCBvciBvcGVyYW5kc1swXS5pc19hPyBTcGVjaWFsUmVnaXN0ZXIK
LSAgICAgICAgICAgICAgICBlbWl0U0g0QnJhbmNoKCJqbXAiLCBvcGVyYW5kc1swXSkKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByYWlzZSAiVW5oYW5kbGVkIHBhcmFtZXRlcnMg
Zm9yIG9wY29kZSAje29wY29kZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKLSAgICAgICAgICAg
IGVuZAotICAgICAgICB3aGVuICJyZXQiCi0gICAgICAgICAgICAkYXNtLnB1dHMgInJ0cyIKLSAg
ICAgICAgICAgICRhc20ucHV0cyAibm9wIgotICAgICAgICB3aGVuICJsb2FkYiIKLSAgICAgICAg
ICAgICRhc20ucHV0cyAibW92LmIgI3tzaDRPcGVyYW5kcyhvcGVyYW5kcyl9IgotICAgICAgICAg
ICAgJGFzbS5wdXRzICJleHR1LmIgI3tzaDRPcGVyYW5kcyhbb3BlcmFuZHNbMV0sIG9wZXJhbmRz
WzFdXSl9IgotICAgICAgICB3aGVuICJzdG9yZWIiCi0gICAgICAgICAgICAkYXNtLnB1dHMgIm1v
di5iICN7c2g0T3BlcmFuZHMob3BlcmFuZHMpfSIKLSAgICAgICAgd2hlbiAibG9hZGgiCi0gICAg
ICAgICAgICAkYXNtLnB1dHMgIm1vdi53ICN7c2g0T3BlcmFuZHMob3BlcmFuZHMpfSIKLSAgICAg
ICAgICAgICRhc20ucHV0cyAiZXh0dS53ICN7c2g0T3BlcmFuZHMoW29wZXJhbmRzWzFdLCBvcGVy
YW5kc1sxXV0pfSIKLSAgICAgICAgd2hlbiAibG9hZGkiLCAibG9hZGlzIiwgImxvYWRwIiwgInN0
b3JlaSIsICJzdG9yZXAiCi0gICAgICAgICAgICAkYXNtLnB1dHMgIm1vdi5sICN7c2g0T3BlcmFu
ZHMob3BlcmFuZHMpfSIKLSAgICAgICAgd2hlbiAiYWxpZ25mb3Jtb3ZhIgotICAgICAgICAgICAg
JGFzbS5wdXRzICIuYmFsaWduIDQiICMgQXMgYmFsaWduIGRpcmVjdGl2ZSBpcyBpbiBhIGNvZGUg
c2VjdGlvbiwgZmlsbCB2YWx1ZSBpcyAnbm9wJyBpbnN0cnVjdGlvbi4KLSAgICAgICAgd2hlbiAi
bW92YSIKLSAgICAgICAgICAgICRhc20ucHV0cyAibW92YSAje3NoNE9wZXJhbmRzKG9wZXJhbmRz
KX0iCi0gICAgICAgIHdoZW4gIm1vdmUiCi0gICAgICAgICAgICBpZiBvcGVyYW5kc1swXS5pc19h
PyBDb25zdFBvb2xFbnRyeQotICAgICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLnNpemUgPT0g
MTYKLSAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YudyAje29wZXJhbmRzWzBdLmxh
YmVscmVmLmFzbUxhYmVsfSwgI3tvcGVyYW5kc1sxXS5zaDRPcGVyYW5kfSIKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92LmwgI3tvcGVyYW5k
c1swXS5sYWJlbHJlZi5hc21MYWJlbH0sICN7b3BlcmFuZHNbMV0uc2g0T3BlcmFuZH0iCi0gICAg
ICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBlbHNpZiBvcGVyYW5kc1swXS5zaDRPcGVyYW5k
ICE9IG9wZXJhbmRzWzFdLnNoNE9wZXJhbmQKLSAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm1v
diAje3NoNE9wZXJhbmRzKG9wZXJhbmRzKX0iCi0gICAgICAgICAgICBlbmQKLSAgICAgICAgd2hl
biAibGVhcCIKLSAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEJhc2VJbmRleAotICAg
ICAgICAgICAgICAgIGJpb3AgPSBvcGVyYW5kc1swXQotICAgICAgICAgICAgICAgICRhc20ucHV0
cyAibW92ICN7c2g0T3BlcmFuZHMoW2Jpb3AuaW5kZXgsIG9wZXJhbmRzWzFdXSl9IgotICAgICAg
ICAgICAgICAgIGlmIGJpb3Auc2NhbGVTaGlmdCA+IDAKLSAgICAgICAgICAgICAgICAgICAgZW1p
dFNINFNoaWZ0SW1tKGJpb3Auc2NhbGVTaGlmdCwgb3BlcmFuZHNbMV0sICJsIikKLSAgICAgICAg
ICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCAje3NoNE9wZXJhbmRz
KFtiaW9wLmJhc2UsIG9wZXJhbmRzWzFdXSl9IgotICAgICAgICAgICAgICAgIGlmIGJpb3Aub2Zm
c2V0LnZhbHVlICE9IDAKLSAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGQgI3tzaDRP
cGVyYW5kcyhbYmlvcC5vZmZzZXQsIG9wZXJhbmRzWzFdXSl9IgotICAgICAgICAgICAgICAgIGVu
ZAotICAgICAgICAgICAgZWxzaWYgb3BlcmFuZHNbMF0uaXNfYT8gQWRkcmVzcwotICAgICAgICAg
ICAgICAgIGlmIG9wZXJhbmRzWzBdLmJhc2UgIT0gb3BlcmFuZHNbMV0KLSAgICAgICAgICAgICAg
ICAgICAgJGFzbS5wdXRzICJtb3YgI3tzaDRPcGVyYW5kcyhbb3BlcmFuZHNbMF0uYmFzZSwgb3Bl
cmFuZHNbMV1dKX0iCi0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgaWYgb3Bl
cmFuZHNbMF0ub2Zmc2V0LnZhbHVlICE9IDAKLSAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRz
ICJhZGQgI3tzaDRPcGVyYW5kcyhbb3BlcmFuZHNbMF0ub2Zmc2V0LCBvcGVyYW5kc1sxXV0pfSIK
LSAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
YWlzZSAiVW5oYW5kbGVkIHBhcmFtZXRlcnMgZm9yIG9wY29kZSAje29wY29kZX0gYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIKLSAgICAgICAgICAgIGVuZAotICAgICAgICB3aGVuICJsZHNwciIKLSAg
ICAgICAgICAgICRhc20ucHV0cyAibGRzICN7c2g0T3BlcmFuZHMob3BlcmFuZHMpfSwgcHIiCi0g
ICAgICAgIHdoZW4gInN0c3ByIgotICAgICAgICAgICAgJGFzbS5wdXRzICJzdHMgcHIsICN7c2g0
T3BlcmFuZHMob3BlcmFuZHMpfSIKLSAgICAgICAgd2hlbiAibWVtZmVuY2UiCi0gICAgICAgICAg
ICAkYXNtLnB1dHMgInN5bmNvIgotICAgICAgICB3aGVuICJwb3AiCi0gICAgICAgICAgICBpZiBv
cGVyYW5kc1swXS5zaDRPcGVyYW5kID09ICJwciIKLSAgICAgICAgICAgICAgICAkYXNtLnB1dHMg
Imxkcy5sIEByMTUrLCAje3NoNE9wZXJhbmRzKG9wZXJhbmRzKX0iCi0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YubCBAcjE1KywgI3tzaDRPcGVyYW5kcyhv
cGVyYW5kcyl9IgotICAgICAgICAgICAgZW5kCi0gICAgICAgIHdoZW4gInB1c2giCi0gICAgICAg
ICAgICBpZiBvcGVyYW5kc1swXS5zaDRPcGVyYW5kID09ICJwciIKLSAgICAgICAgICAgICAgICAk
YXNtLnB1dHMgInN0cy5sICN7c2g0T3BlcmFuZHMob3BlcmFuZHMpfSwgQC1yMTUiCi0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YubCAje3NoNE9wZXJhbmRz
KG9wZXJhbmRzKX0sIEAtcjE1IgotICAgICAgICAgICAgZW5kCi0gICAgICAgIHdoZW4gImJyZWFr
IgotICAgICAgICAgICAgIyBUaGlzIHNwZWNpYWwgb3Bjb2RlIGFsd2F5cyBnZW5lcmF0ZXMgYW4g
aWxsZWdhbCBpbnN0cnVjdGlvbiBleGNlcHRpb24uCi0gICAgICAgICAgICAkYXNtLnB1dHMgIi53
b3JkIDB4ZmZmZCIKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbG93ZXJEZWZhdWx0Ci0gICAg
ICAgIGVuZAotICAgIGVuZAotZW5kCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5j
cHAKaW5kZXggYmQ2Zjk3NC4uOWRkMzFlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckpJVC5jcHAKQEAgLTc1LDE3ICs3NSw2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKIAogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblJl
Z2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6djA7CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
cmV0dXJuUmVnaXN0ZXIyID0gTUlQU1JlZ2lzdGVyczo6djE7Ci0jZWxpZiBDUFUoU0g0KQotICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGlucHV0ID0gU0g0UmVnaXN0ZXJzOjpyNDsKLSAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBpbmRleCA9IFNINFJlZ2lzdGVyczo6cjU7Ci0gICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgbGVuZ3RoID0gU0g0UmVnaXN0ZXJzOjpyNjsKLSAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCBvdXRwdXQgPSBTSDRSZWdpc3RlcnM6OnI3OwotCi0gICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDAgPSBTSDRSZWdpc3RlcnM6OnIwOwotICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0gU0g0UmVnaXN0ZXJzOjpyMTsKLQotICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIHJldHVyblJlZ2lzdGVyID0gU0g0UmVnaXN0ZXJzOjpyMDsKLSAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5SZWdpc3RlcjIgPSBTSDRSZWdpc3RlcnM6
OnIxOwogI2VsaWYgQ1BVKFg4NikKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBpbnB1dCA9
IFg4NlJlZ2lzdGVyczo6ZWF4OwogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGluZGV4ID0g
WDg2UmVnaXN0ZXJzOjplZHg7CkBAIC0yNjEwLDkgKzI1OTksNiBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIHB1c2goQVJNUmVnaXN0ZXJz
OjpyNCk7CiAgICAgICAgIHB1c2goQVJNUmVnaXN0ZXJzOjpyNSk7CiAgICAgICAgIHB1c2goQVJN
UmVnaXN0ZXJzOjpyNik7Ci0jZWxpZiBDUFUoU0g0KQotICAgICAgICBwdXNoKFNINFJlZ2lzdGVy
czo6cjExKTsKLSAgICAgICAgcHVzaChTSDRSZWdpc3RlcnM6OnIxMyk7CiAjZWxpZiBDUFUoTUlQ
UykKICAgICAgICAgLy8gRG8gbm90aGluZy4KICNlbmRpZgpAQCAtMjY0Miw5ICsyNjI4LDYgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBw
b3AoQVJNUmVnaXN0ZXJzOjpyNik7CiAgICAgICAgIHBvcChBUk1SZWdpc3RlcnM6OnI1KTsKICAg
ICAgICAgcG9wKEFSTVJlZ2lzdGVyczo6cjQpOwotI2VsaWYgQ1BVKFNINCkKLSAgICAgICAgcG9w
KFNINFJlZ2lzdGVyczo6cjEzKTsKLSAgICAgICAgcG9wKFNINFJlZ2lzdGVyczo6cjExKTsKICNl
bGlmIENQVShNSVBTKQogICAgICAgICAvLyBEbyBub3RoaW5nCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYjcxY2Uw
Zi4uMDhlNDZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0wMS0wMiAgSnVsaWVuIEJyaWFu
Y2VhdSAgPGpicmlhbmNlQGNpc2NvLmNvbT4KKworICAgICAgICBSZW1vdmUgc2g0IHNwZWNpZmlj
IGNvZGUgZnJvbSBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NjQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNi0xMi0yMiAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRGUtZHVwbGljYXRlIGZpbmFsbHkg
YmxvY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggNmY5Mjc1OS4uN2M4NWY2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBA
IC03MzgsOCArNzM4LDggQEAKICNpZiAoQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkpICYm
IChQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSkKICNkZWZp
bmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCi0vKiBFbmFibGUgdGhlIERGRyBKSVQgb24gQVJN
LCBNSVBTIGFuZCBTSDQuICovCi0jaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkgfHwgQ1BVKE1JUFMp
IHx8IENQVShTSDQpCisvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gQVJNIGFuZCBNSVBTLiAqLwor
I2lmIENQVShBUk1fVFJBRElUSU9OQUwpIHx8IENQVShNSVBTKQogI2RlZmluZSBFTkFCTEVfREZH
X0pJVCAxCiAjZW5kaWYKICNlbmRpZgo=
</data>
<flag name="review"
          id="320166"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>