<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>39933</bug_id>
          
          <creation_ts>2021-04-13 18:28:39 +0300</creation_ts>
          <short_desc>добавить в ffmpeg патч с SIMD оптимизациями для Эльбруса</short_desc>
          <delta_ts>2021-05-31 18:28:57 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>ffmpeg</component>
          <version>unstable</version>
          <rep_platform>e2k</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>ilyakurdyukov</reporter>
          <assigned_to name="Anton Farygin">rider</assigned_to>
          <cc>bircoph</cc>
    
    <cc>darktemplar</cc>
    
    <cc>mike</cc>
    
    <cc>placeholder</cc>
    
    <cc>rider</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>197890</commentid>
    <comment_count>0</comment_count>
      <attachid>9302</attachid>
    <who name="">ilyakurdyukov</who>
    <bug_when>2021-04-13 18:28:39 +0300</bug_when>
    <thetext>Created attachment 9302
0001-Added-SIMD-patch-for-Elbrus.patch

Нужно добавить в ffmpeg патч с SIMD оптимизациями для Эльбруса. Приложен к багу, это патч для последнего 4.3.2-alt1 в ffmpeg.git, проверено что собирается в hasher на Эльбрусе.

Также я планирую добавить такой же патч в libx264 (там acl @everybody).

С применением патча есть два варианта:

1) Применять только на Эльрусах, тогда на других архитектурах точно ничего не меняется:

 %prep
 %setup
 %patch -p1
+%ifarch %e2k
+%patch2000 -p1
+%endif

(Как в прилагаемом к багу патче.)

2) Или вы можете убрать %ifarch %e2k:

 %prep
 %setup
 %patch -p1
+# e2k-simd
+%patch2000 -p1

Чтобы патч применялся на любых архитектурах (он добавляет архитектуру e2k, на других не должен ничего ломать), тогда вы можете оперативно сообщить (мне/mike/bircoph), когда он перестанет подходить к ffmpeg, если туда внесут заметные изменения.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197891</commentid>
    <comment_count>1</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2021-04-13 18:38:10 +0300</bug_when>
    <thetext>Илья, сделайте пожалуйста сборочное задание.

Это будет правильнее.

патч лучше прикладывать для архитектуры.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198810</commentid>
    <comment_count>2</comment_count>
    <who name="">ilyakurdyukov</who>
    <bug_when>2021-05-31 18:28:57 +0300</bug_when>
    <thetext>Патч добавлен.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9302</attachid>
            <date>2021-04-13 18:28:39 +0300</date>
            <delta_ts>2021-04-13 18:28:39 +0300</delta_ts>
            <desc>0001-Added-SIMD-patch-for-Elbrus.patch</desc>
            <filename>0001-Added-SIMD-patch-for-Elbrus.patch</filename>
            <type>text/plain</type>
            <size>495157</size>
            <attacher>ilyakurdyukov</attacher>
            
              <data encoding="base64">RnJvbSA4MTI4MTgwZTFjOWY4NzcxMGIyYzJkNTMyODAyMzgwYzQ2NDcxMDk0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJbHlhIEt1cmR5dWtvdiA8aWx5YWt1cmR5dWtvdkBhbHRsaW51
eC5vcmc+CkRhdGU6IFR1ZSwgMTMgQXByIDIwMjEgMTM6MzA6MjUgKzAwMDAKU3ViamVjdDogW1BB
VENIIDEvMV0gQWRkZWQgU0lNRCBwYXRjaCBmb3IgRWxicnVzCgotLS0KIC5nZWFyL2ZmbXBlZy1l
Mmstc2ltZC5wYXRjaCB8IDEyODg0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK
IC5nZWFyL2ZmbXBlZy5zcGVjICAgICAgICAgICB8ICAgIDE2ICstCiAuZ2Vhci9ydWxlcyAgICAg
ICAgICAgICAgICAgfCAgICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDEyODk5IGluc2VydGlvbnMo
KyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgLmdlYXIvZmZtcGVnLWUyay1z
aW1kLnBhdGNoCgpkaWZmIC0tZ2l0IGEvLmdlYXIvZmZtcGVnLWUyay1zaW1kLnBhdGNoIGIvLmdl
YXIvZmZtcGVnLWUyay1zaW1kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAuLjg4YmY4MjEyODcKLS0tIC9kZXYvbnVsbAorKysgYi8uZ2Vhci9mZm1wZWctZTJrLXNp
bWQucGF0Y2gKQEAgLTAsMCArMSwxMjg4NCBAQAorRnJvbSAyMzY4YjU5YTgxMDAzY2I4Nzg2OWE4
ZjAxNjE1ZTI4YmJmODMyNmJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSWx5YSBL
dXJkeXVrb3YgPGpwZWdxc0BnbWFpbC5jb20+CitEYXRlOiBGcmksIDI2IE1hciAyMDIxIDE0OjU3
OjU3ICswNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGZmbXBlZy00LjMuMSBlMmsgc3VwcG9ydAorCist
LS0KKyBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIwICstCisgbGli
YXZjb2RlYy9hdWRpb2RzcC5jICAgICAgICAgICAgICAgIHwgICAgMiArCisgbGliYXZjb2RlYy9h
dWRpb2RzcC5oICAgICAgICAgICAgICAgIHwgICAgMSArCisgbGliYXZjb2RlYy9ibG9ja2RzcC5j
ICAgICAgICAgICAgICAgIHwgICAgMiArCisgbGliYXZjb2RlYy9ibG9ja2RzcC5oICAgICAgICAg
ICAgICAgIHwgICAgMSArCisgbGliYXZjb2RlYy9lMmsvTWFrZWZpbGUgICAgICAgICAgICAgIHwg
ICAzMSArCisgbGliYXZjb2RlYy9lMmsvYXVkaW9kc3AuYyAgICAgICAgICAgIHwgICA2MiArCisg
bGliYXZjb2RlYy9lMmsvYmxvY2tkc3AuYyAgICAgICAgICAgIHwgICA3MiArCisgbGliYXZjb2Rl
Yy9lMmsvZGN0ZHNwLmggICAgICAgICAgICAgIHwgICAyNyArCisgbGliYXZjb2RlYy9lMmsvZmRj
dGRzcC5jICAgICAgICAgICAgIHwgIDM4OSArKysrKworIGxpYmF2Y29kZWMvZTJrL2ZmdC5jICAg
ICAgICAgICAgICAgICB8IDEwNDMgKysrKysrKysrKysrKworIGxpYmF2Y29kZWMvZTJrL2ZmdC5o
ICAgICAgICAgICAgICAgICB8ICAgMjkgKworIGxpYmF2Y29kZWMvZTJrL2ZmdF9pbml0LmMgICAg
ICAgICAgICB8ICAxNTIgKysKKyBsaWJhdmNvZGVjL2Uyay9mbXRjb252ZXJ0LmMgICAgICAgICAg
fCAgIDU1ICsKKyBsaWJhdmNvZGVjL2Uyay9oMjY0Y2hyb21hLmMgICAgICAgICAgfCAgIDYzICsK
KyBsaWJhdmNvZGVjL2Uyay9oMjY0Y2hyb21hX3RlbXBsYXRlLmMgfCAgMTEzICsrCisgbGliYXZj
b2RlYy9lMmsvaDI2NGRzcC5jICAgICAgICAgICAgIHwgIDgyMCArKysrKysrKysrKworIGxpYmF2
Y29kZWMvZTJrL2gyNjRxcGVsLmMgICAgICAgICAgICB8ICAyNTUgKysrKworIGxpYmF2Y29kZWMv
ZTJrL2gyNjRxcGVsX3RlbXBsYXRlLmMgICB8ICAzNTQgKysrKysKKyBsaWJhdmNvZGVjL2Uyay9o
ZXZjZHNwLmMgICAgICAgICAgICAgfCAgIDk0ICsrCisgbGliYXZjb2RlYy9lMmsvaHBlbGRzcC5j
ICAgICAgICAgICAgIHwgIDMwMiArKysrCisgbGliYXZjb2RlYy9lMmsvaHBlbGRzcC5oICAgICAg
ICAgICAgIHwgICAzMCArCisgbGliYXZjb2RlYy9lMmsvaWRjdGRzcC5jICAgICAgICAgICAgIHwg
IDIzNyArKysKKyBsaWJhdmNvZGVjL2Uyay9sb3NzbGVzc19hdWRpb2RzcC5jICAgfCAgIDc1ICsK
KyBsaWJhdmNvZGVjL2Uyay9sb3NzbGVzc192aWRlb2RzcC5jICAgfCAgIDU5ICsKKyBsaWJhdmNv
ZGVjL2Uyay9tZGN0MTUuYyAgICAgICAgICAgICAgfCAgMTg3ICsrKworIGxpYmF2Y29kZWMvZTJr
L21lX2NtcC5jICAgICAgICAgICAgICB8ICA0NjEgKysrKysrCisgbGliYXZjb2RlYy9lMmsvbXBl
Z2F1ZGlvZHNwLmMgICAgICAgIHwgIDE0MiArKworIGxpYmF2Y29kZWMvZTJrL21wZWd2aWRlby5j
ICAgICAgICAgICB8ICAxMDAgKysKKyBsaWJhdmNvZGVjL2Uyay9tcGVndmlkZW9kc3AuYyAgICAg
ICAgfCAgIDg2ICsrCisgbGliYXZjb2RlYy9lMmsvbXBlZ3ZpZGVvZW5jZHNwLmMgICAgIHwgICA3
NSArCisgbGliYXZjb2RlYy9lMmsvcGl4YmxvY2tkc3AuYyAgICAgICAgIHwgICA4MyArKworIGxp
YmF2Y29kZWMvZTJrL3N2cTFlbmMuYyAgICAgICAgICAgICB8ICAgNjggKworIGxpYmF2Y29kZWMv
ZTJrL3ZjMWRzcC5jICAgICAgICAgICAgICB8ICAzMDMgKysrKworIGxpYmF2Y29kZWMvZTJrL3Zp
ZGVvZHNwLmMgICAgICAgICAgICB8ICAgMzYgKworIGxpYmF2Y29kZWMvZTJrL3ZvcmJpc2RzcC5j
ICAgICAgICAgICB8ICAgNjIgKworIGxpYmF2Y29kZWMvZTJrL3ZwM2RzcC5jICAgICAgICAgICAg
ICB8ICAxNjkgKysrCisgbGliYXZjb2RlYy9lMmsvdnA4ZHNwLmMgICAgICAgICAgICAgIHwgIDQy
OCArKysrKysKKyBsaWJhdmNvZGVjL2Uyay92cDlkc3AuYyAgICAgICAgICAgICAgfCAxNzQwICsr
KysrKysrKysrKysrKysrKysrKysKKyBsaWJhdmNvZGVjL2ZkY3Rkc3AuYyAgICAgICAgICAgICAg
ICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL2ZkY3Rkc3AuaCAgICAgICAgICAgICAgICAgfCAgICAy
ICsKKyBsaWJhdmNvZGVjL2ZmdC5oICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKKyBsaWJh
dmNvZGVjL2ZmdF90ZW1wbGF0ZS5jICAgICAgICAgICAgfCAgICAxICsKKyBsaWJhdmNvZGVjL2Zt
dGNvbnZlcnQuYyAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL2ZtdGNvbnZlcnQu
aCAgICAgICAgICAgICAgfCAgICAxICsKKyBsaWJhdmNvZGVjL2gyNjRjaHJvbWEuYyAgICAgICAg
ICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL2gyNjRjaHJvbWEuaCAgICAgICAgICAgICAgfCAg
ICAxICsKKyBsaWJhdmNvZGVjL2gyNjRkc3AuYyAgICAgICAgICAgICAgICAgfCAgICAxICsKKyBs
aWJhdmNvZGVjL2gyNjRkc3AuaCAgICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVj
L2gyNjRxcGVsLmMgICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL2gyNjRxcGVs
LmggICAgICAgICAgICAgICAgfCAgICAxICsKKyBsaWJhdmNvZGVjL2hldmNkc3AuYyAgICAgICAg
ICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL2hldmNkc3AuaCAgICAgICAgICAgICAgICAg
fCAgICAxICsKKyBsaWJhdmNvZGVjL2hwZWxkc3AuYyAgICAgICAgICAgICAgICAgfCAgICAyICsK
KyBsaWJhdmNvZGVjL2hwZWxkc3AuaCAgICAgICAgICAgICAgICAgfCAgICAxICsKKyBsaWJhdmNv
ZGVjL2lkY3Rkc3AuYyAgICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL2lkY3Rk
c3AuaCAgICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL2xvc3NsZXNzX2F1ZGlv
ZHNwLmMgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL2xvc3NsZXNzX2F1ZGlvZHNwLmggICAg
ICAgfCAgICAxICsKKyBsaWJhdmNvZGVjL2xvc3NsZXNzX3ZpZGVvZHNwLmMgICAgICAgfCAgICAy
ICsKKyBsaWJhdmNvZGVjL2xvc3NsZXNzX3ZpZGVvZHNwLmggICAgICAgfCAgICAxICsKKyBsaWJh
dmNvZGVjL21kY3QxNS5jICAgICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL21k
Y3QxNS5oICAgICAgICAgICAgICAgICAgfCAgICAxICsKKyBsaWJhdmNvZGVjL21lX2NtcC5jICAg
ICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL21lX2NtcC5oICAgICAgICAgICAg
ICAgICAgfCAgICAxICsKKyBsaWJhdmNvZGVjL21wZWdhdWRpb2RzcC5jICAgICAgICAgICAgfCAg
ICAxICsKKyBsaWJhdmNvZGVjL21wZWdhdWRpb2RzcC5oICAgICAgICAgICAgfCAgICAxICsKKyBs
aWJhdmNvZGVjL21wZWd2aWRlby5jICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVj
L21wZWd2aWRlby5oICAgICAgICAgICAgICAgfCAgICAxICsKKyBsaWJhdmNvZGVjL21wZWd2aWRl
b2RzcC5jICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL21wZWd2aWRlb2RzcC5oICAg
ICAgICAgICAgfCAgICAxICsKKyBsaWJhdmNvZGVjL21wZWd2aWRlb2VuY2RzcC5jICAgICAgICAg
fCAgICAyICsKKyBsaWJhdmNvZGVjL21wZWd2aWRlb2VuY2RzcC5oICAgICAgICAgfCAgICAyICsK
KyBsaWJhdmNvZGVjL3BpeGJsb2NrZHNwLmMgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNv
ZGVjL3BpeGJsb2NrZHNwLmggICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL3N2cTFl
bmMuYyAgICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL3N2cTFlbmMuaCAgICAg
ICAgICAgICAgICAgfCAgICAxICsKKyBsaWJhdmNvZGVjL3Rlc3RzL2RjdC5jICAgICAgICAgICAg
ICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL3Rlc3RzL2Uyay9kY3QuYyAgICAgICAgICAgfCAgIDMx
ICsKKyBsaWJhdmNvZGVjL3ZjMWRzcC5jICAgICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJh
dmNvZGVjL3ZjMWRzcC5oICAgICAgICAgICAgICAgICAgfCAgICAxICsKKyBsaWJhdmNvZGVjL3Zp
ZGVvZHNwLmMgICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL3ZpZGVvZHNwLmgg
ICAgICAgICAgICAgICAgfCAgICAxICsKKyBsaWJhdmNvZGVjL3ZvcmJpc2RzcC5jICAgICAgICAg
ICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL3ZvcmJpc2RzcC5oICAgICAgICAgICAgICAgfCAg
ICAxICsKKyBsaWJhdmNvZGVjL3ZwM2RzcC5jICAgICAgICAgICAgICAgICAgfCAgICAyICsKKyBs
aWJhdmNvZGVjL3ZwM2RzcC5oICAgICAgICAgICAgICAgICAgfCAgICAxICsKKyBsaWJhdmNvZGVj
L3ZwOGRzcC5jICAgICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdmNvZGVjL3ZwOGRzcC5o
ICAgICAgICAgICAgICAgICAgfCAgICAxICsKKyBsaWJhdmNvZGVjL3ZwOWRzcC5jICAgICAgICAg
ICAgICAgICAgfCAgICAxICsKKyBsaWJhdmNvZGVjL3ZwOWRzcC5oICAgICAgICAgICAgICAgICAg
fCAgICAxICsKKyBsaWJhdnV0aWwvY3B1LmMgICAgICAgICAgICAgICAgICAgICAgfCAgICA4ICsK
KyBsaWJhdnV0aWwvY3B1LmggICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdnV0
aWwvY3B1X2ludGVybmFsLmggICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdnV0aWwvZTJrL01h
a2VmaWxlICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdnV0aWwvZTJrL2NwdS5jICAgICAg
ICAgICAgICAgICAgfCAgIDQxICsKKyBsaWJhdnV0aWwvZTJrL2NwdS5oICAgICAgICAgICAgICAg
ICAgfCAgIDI3ICsKKyBsaWJhdnV0aWwvZTJrL2Zsb2F0X2RzcC5jICAgICAgICAgICAgfCAgMTg4
ICsrKworIGxpYmF2dXRpbC9lMmsvaW50cmVhZHdyaXRlLmggICAgICAgICB8ICAgNTQgKworIGxp
YmF2dXRpbC9lMmsvdGltZXIuaCAgICAgICAgICAgICAgICB8ICAgMzUgKworIGxpYmF2dXRpbC9l
MmsvdXRpbF9lMmsuaCAgICAgICAgICAgICB8ICAxNDYgKysKKyBsaWJhdnV0aWwvZmxvYXRfZHNw
LmMgICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJhdnV0aWwvZmxvYXRfZHNwLmggICAgICAg
ICAgICAgICAgfCAgICAxICsKKyBsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmggICAgICAgICAgICAg
fCAgICAyICsKKyBsaWJhdnV0aWwvdGVzdHMvY3B1LmMgICAgICAgICAgICAgICAgfCAgICAyICsK
KyBsaWJhdnV0aWwvdGltZXIuaCAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJzd3Jl
c2FtcGxlL2F1ZGlvY29udmVydC5jICAgICAgICAgfCAgICAxICsKKyBsaWJzd3Jlc2FtcGxlL2Uy
ay9NYWtlZmlsZSAgICAgICAgICAgfCAgICAxICsKKyBsaWJzd3Jlc2FtcGxlL2Uyay9hdWRpb19j
b252ZXJ0LmMgICAgfCAgMTEwICsrCisgbGlic3dyZXNhbXBsZS9zd3Jlc2FtcGxlX2ludGVybmFs
LmggIHwgICAgNCArCisgbGlic3dzY2FsZS9lMmsvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAg
MyArCisgbGlic3dzY2FsZS9lMmsvc3dzY2FsZS5jICAgICAgICAgICAgIHwgMjA0NiArKysrKysr
KysrKysrKysrKysrKysrKysrKworIGxpYnN3c2NhbGUvZTJrL3l1djJyZ2IuYyAgICAgICAgICAg
ICB8ICAyNDggKysrKworIGxpYnN3c2NhbGUvZTJrL3l1djJyZ2IuaCAgICAgICAgICAgICB8ICAg
NTIgKworIGxpYnN3c2NhbGUvZTJrL3l1djJ5dXYuYyAgICAgICAgICAgICB8ICAxNDYgKysKKyBs
aWJzd3NjYWxlL3N3c2NhbGUuYyAgICAgICAgICAgICAgICAgfCAgICAyICsKKyBsaWJzd3NjYWxl
L3N3c2NhbGVfaW50ZXJuYWwuaCAgICAgICAgfCAgICA1ICsKKyBsaWJzd3NjYWxlL3N3c2NhbGVf
dW5zY2FsZWQuYyAgICAgICAgfCAgICAyICsKKyBsaWJzd3NjYWxlL3V0aWxzLmMgICAgICAgICAg
ICAgICAgICAgfCAgIDEzICsKKyBsaWJzd3NjYWxlL3l1djJyZ2IuYyAgICAgICAgICAgICAgICAg
fCAgICAyICsKKyB0ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5jICAgICAgICAgICAgfCAgICAyICsK
KyB0ZXN0cy9jaGVja2FzbS9odWZmeXV2ZHNwLmMgICAgICAgICAgfCAgICA4ICstCisgMTIyIGZp
bGVzIGNoYW5nZWQsIDExNDkxIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisgY3JlYXRl
IG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvZTJrL01ha2VmaWxlCisgY3JlYXRlIG1vZGUgMTAwNjQ0
IGxpYmF2Y29kZWMvZTJrL2F1ZGlvZHNwLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2Rl
Yy9lMmsvYmxvY2tkc3AuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2Uyay9kY3Rk
c3AuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2Uyay9mZGN0ZHNwLmMKKyBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9lMmsvZmZ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQg
bGliYXZjb2RlYy9lMmsvZmZ0LmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9lMmsv
ZmZ0X2luaXQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2Uyay9mbXRjb252ZXJ0
LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9lMmsvaDI2NGNocm9tYS5jCisgY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvZTJrL2gyNjRjaHJvbWFfdGVtcGxhdGUuYworIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2Uyay9oMjY0ZHNwLmMKKyBjcmVhdGUgbW9kZSAx
MDA2NDQgbGliYXZjb2RlYy9lMmsvaDI2NHFwZWwuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJh
dmNvZGVjL2Uyay9oMjY0cXBlbF90ZW1wbGF0ZS5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2
Y29kZWMvZTJrL2hldmNkc3AuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2Uyay9o
cGVsZHNwLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9lMmsvaHBlbGRzcC5oCisg
Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvZTJrL2lkY3Rkc3AuYworIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBsaWJhdmNvZGVjL2Uyay9sb3NzbGVzc19hdWRpb2RzcC5jCisgY3JlYXRlIG1vZGUg
MTAwNjQ0IGxpYmF2Y29kZWMvZTJrL2xvc3NsZXNzX3ZpZGVvZHNwLmMKKyBjcmVhdGUgbW9kZSAx
MDA2NDQgbGliYXZjb2RlYy9lMmsvbWRjdDE1LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZj
b2RlYy9lMmsvbWVfY21wLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9lMmsvbXBl
Z2F1ZGlvZHNwLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9lMmsvbXBlZ3ZpZGVv
LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9lMmsvbXBlZ3ZpZGVvZHNwLmMKKyBj
cmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9lMmsvbXBlZ3ZpZGVvZW5jZHNwLmMKKyBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9lMmsvcGl4YmxvY2tkc3AuYworIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBsaWJhdmNvZGVjL2Uyay9zdnExZW5jLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGli
YXZjb2RlYy9lMmsvdmMxZHNwLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9lMmsv
dmlkZW9kc3AuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2Uyay92b3JiaXNkc3Au
YworIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2Uyay92cDNkc3AuYworIGNyZWF0ZSBt
b2RlIDEwMDY0NCBsaWJhdmNvZGVjL2Uyay92cDhkc3AuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBs
aWJhdmNvZGVjL2Uyay92cDlkc3AuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3Rl
c3RzL2Uyay9kY3QuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdnV0aWwvZTJrL01ha2VmaWxl
CisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2dXRpbC9lMmsvY3B1LmMKKyBjcmVhdGUgbW9kZSAx
MDA2NDQgbGliYXZ1dGlsL2Uyay9jcHUuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdnV0aWwv
ZTJrL2Zsb2F0X2RzcC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2dXRpbC9lMmsvaW50cmVh
ZHdyaXRlLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZ1dGlsL2Uyay90aW1lci5oCisgY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYmF2dXRpbC9lMmsvdXRpbF9lMmsuaAorIGNyZWF0ZSBtb2RlIDEw
MDY0NCBsaWJzd3Jlc2FtcGxlL2Uyay9NYWtlZmlsZQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJz
d3Jlc2FtcGxlL2Uyay9hdWRpb19jb252ZXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3dz
Y2FsZS9lMmsvTWFrZWZpbGUKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3dzY2FsZS9lMmsvc3dz
Y2FsZS5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN3c2NhbGUvZTJrL3l1djJyZ2IuYworIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBsaWJzd3NjYWxlL2Uyay95dXYycmdiLmgKKyBjcmVhdGUgbW9kZSAx
MDA2NDQgbGlic3dzY2FsZS9lMmsveXV2Mnl1di5jCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUg
Yi9jb25maWd1cmUKK2luZGV4IDE5YzE4NjUuLjNjMmE5YWIgMTAwNzU1CistLS0gYS9jb25maWd1
cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTE5ODksNiArMTk4OSw3IEBAIEFSQ0hfTElTVD0iCisg
ICAgIHBhcmlzYworICAgICBwcGMKKyAgICAgcHBjNjQKKysgICAgZTJrCisgICAgIHMzOTAKKyAg
ICAgc2g0CisgICAgIHNwYXJjCitAQCAtMjA2MCw2ICsyMDYxLDEwIEBAIEFSQ0hfRVhUX0xJU1Rf
UFBDPSIKKyAgICAgdnN4CisgIgorIAorK0FSQ0hfRVhUX0xJU1RfRTJLPSIKKysgICAgZTJrCisr
IgorKworIEFSQ0hfRVhUX0xJU1RfWDg2PSIKKyAgICAgJEFSQ0hfRVhUX0xJU1RfWDg2X1NJTUQK
KyAgICAgY3B1bm9wCitAQCAtMjA2OSw2ICsyMDc0LDcgQEAgQVJDSF9FWFRfTElTVF9YODY9Igor
IEFSQ0hfRVhUX0xJU1Q9IgorICAgICAkQVJDSF9FWFRfTElTVF9BUk0KKyAgICAgJEFSQ0hfRVhU
X0xJU1RfUFBDCisrICAgICRBUkNIX0VYVF9MSVNUX0UySworICAgICAkQVJDSF9FWFRfTElTVF9Y
ODYKKyAgICAgJEFSQ0hfRVhUX0xJU1RfTUlQUworICAgICAkQVJDSF9FWFRfTElTVF9MT09OR1NP
TgorQEAgLTI1OTQsMTAgKzI2MDAsMTAgQEAgZm9yIGV4dCBpbiAkKGZpbHRlcl9vdXQgbW14ICRB
UkNIX0VYVF9MSVNUX1g4Nl9TSU1EKTsgZG8KKyBkb25lCisgCisgYWxpZ25lZF9zdGFja19pZl9h
bnk9ImFhcmNoNjQgcHBjIHg4NiIKKy1mYXN0XzY0Yml0X2lmX2FueT0iYWFyY2g2NCBhbHBoYSBp
YTY0IG1pcHM2NCBwYXJpc2M2NCBwcGM2NCBzcGFyYzY0IHg4Nl82NCIKKy1mYXN0X2Nsel9pZl9h
bnk9ImFhcmNoNjQgYWxwaGEgYXZyMzIgbWlwcyBwcGMgeDg2IgorK2Zhc3RfNjRiaXRfaWZfYW55
PSJhYXJjaDY0IGFscGhhIGlhNjQgbWlwczY0IHBhcmlzYzY0IHBwYzY0IGUyayBzcGFyYzY0IHg4
Nl82NCIKKytmYXN0X2Nsel9pZl9hbnk9ImFhcmNoNjQgYWxwaGEgYXZyMzIgbWlwcyBwcGMgZTJr
IHg4NiIKKyBmYXN0X3VuYWxpZ25lZF9pZl9hbnk9ImFhcmNoNjQgcHBjIHg4NiIKKy1zaW1kX2Fs
aWduXzE2X2lmX2FueT0iYWx0aXZlYyBuZW9uIHNzZSIKKytzaW1kX2FsaWduXzE2X2lmX2FueT0i
YWx0aXZlYyBlMmsgbmVvbiBzc2UiCisgc2ltZF9hbGlnbl8zMl9pZl9hbnk9ImF2eCIKKyBzaW1k
X2FsaWduXzY0X2lmX2FueT0iYXZ4NTEyIgorIAorQEAgLTQ4ODksNiArNDg5NSw5IEBAIGNhc2Ug
IiRhcmNoIiBpbgorICAgICAiUG93ZXIgTWFjaW50b3NoInxwcGMqfHBvd2VycGMqKQorICAgICAg
ICAgYXJjaD0icHBjIgorICAgICA7OworKyAgICBlMmt8ZWxicnVzKQorKyAgICAgICAgYXJjaD0i
ZTJrIgorKyAgICA7OworICAgICBzMzkwfHMzOTB4KQorICAgICAgICAgYXJjaD0iczM5MCIKKyAg
ICAgOzsKK0BAIC01MTc3LDYgKzUxODYsMTEgQEAgZWxpZiBlbmFibGVkIHBwYzsgdGhlbgorICAg
ICAgICAgOzsKKyAgICAgZXNhYworIAorK2VsaWYgZW5hYmxlZCBlMms7IHRoZW4KKysKKysgICAg
Y3B1PSJlMmsiCisrICAgIGNwdWZsYWdzPSItbXNzZTQuMSAtbW5vLWF2eCIKKysKKyBlbGlmIGVu
YWJsZWQgc3BhcmM7IHRoZW4KKyAKKyAgICAgY2FzZSAkY3B1IGluCitkaWZmIC0tZ2l0IGEvbGli
YXZjb2RlYy9hdWRpb2RzcC5jIGIvbGliYXZjb2RlYy9hdWRpb2RzcC5jCitpbmRleCBlZmNiMGE4
Li4zNmI4NTI4IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy9hdWRpb2RzcC5jCisrKysgYi9saWJh
dmNvZGVjL2F1ZGlvZHNwLmMKK0BAIC0xMTMsNiArMTEzLDggQEAgYXZfY29sZCB2b2lkIGZmX2F1
ZGlvZHNwX2luaXQoQXVkaW9EU1BDb250ZXh0ICpjKQorICAgICAgICAgZmZfYXVkaW9kc3BfaW5p
dF9hcm0oYyk7CisgICAgIGlmIChBUkNIX1BQQykKKyAgICAgICAgIGZmX2F1ZGlvZHNwX2luaXRf
cHBjKGMpOworKyAgICBpZiAoQVJDSF9FMkspCisrICAgICAgICBmZl9hdWRpb2RzcF9pbml0X2Uy
ayhjKTsKKyAgICAgaWYgKEFSQ0hfWDg2KQorICAgICAgICAgZmZfYXVkaW9kc3BfaW5pdF94ODYo
Yyk7CisgfQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYXVkaW9kc3AuaCBiL2xpYmF2Y29kZWMv
YXVkaW9kc3AuaAoraW5kZXggYWE2ZmE3OC4uOWMwNWUyOCAxMDA2NDQKKy0tLSBhL2xpYmF2Y29k
ZWMvYXVkaW9kc3AuaAorKysrIGIvbGliYXZjb2RlYy9hdWRpb2RzcC5oCitAQCAtNTUsNiArNTUs
NyBAQCB0eXBlZGVmIHN0cnVjdCBBdWRpb0RTUENvbnRleHQgeworIHZvaWQgZmZfYXVkaW9kc3Bf
aW5pdChBdWRpb0RTUENvbnRleHQgKmMpOworIHZvaWQgZmZfYXVkaW9kc3BfaW5pdF9hcm0oQXVk
aW9EU1BDb250ZXh0ICpjKTsKKyB2b2lkIGZmX2F1ZGlvZHNwX2luaXRfcHBjKEF1ZGlvRFNQQ29u
dGV4dCAqYyk7Cisrdm9pZCBmZl9hdWRpb2RzcF9pbml0X2UyayhBdWRpb0RTUENvbnRleHQgKmMp
OworIHZvaWQgZmZfYXVkaW9kc3BfaW5pdF94ODYoQXVkaW9EU1BDb250ZXh0ICpjKTsKKyAKKyAj
ZW5kaWYgLyogQVZDT0RFQ19BVURJT0RTUF9IICovCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9i
bG9ja2RzcC5jIGIvbGliYXZjb2RlYy9ibG9ja2RzcC5jCitpbmRleCBjN2VmZTdlLi43MDRjNzIz
IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy9ibG9ja2RzcC5jCisrKysgYi9saWJhdmNvZGVjL2Js
b2NrZHNwLmMKK0BAIC03MSw2ICs3MSw4IEBAIGF2X2NvbGQgdm9pZCBmZl9ibG9ja2RzcF9pbml0
KEJsb2NrRFNQQ29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQorICAgICAgICAgZmZf
YmxvY2tkc3BfaW5pdF9hcm0oYyk7CisgICAgIGlmIChBUkNIX1BQQykKKyAgICAgICAgIGZmX2Js
b2NrZHNwX2luaXRfcHBjKGMpOworKyAgICBpZiAoQVJDSF9FMkspCisrICAgICAgICBmZl9ibG9j
a2RzcF9pbml0X2UyayhjKTsKKyAgICAgaWYgKEFSQ0hfWDg2KQorICAgICAgICAgZmZfYmxvY2tk
c3BfaW5pdF94ODYoYywgYXZjdHgpOworICAgICBpZiAoQVJDSF9NSVBTKQorZGlmZiAtLWdpdCBh
L2xpYmF2Y29kZWMvYmxvY2tkc3AuaCBiL2xpYmF2Y29kZWMvYmxvY2tkc3AuaAoraW5kZXggMjZm
YzJlYS4uOGVjY2I0NyAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvYmxvY2tkc3AuaAorKysrIGIv
bGliYXZjb2RlYy9ibG9ja2RzcC5oCitAQCAtNDQsNiArNDQsNyBAQCB2b2lkIGZmX2Jsb2NrZHNw
X2luaXQoQmxvY2tEU1BDb250ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgpOworIHZvaWQg
ZmZfYmxvY2tkc3BfaW5pdF9hbHBoYShCbG9ja0RTUENvbnRleHQgKmMpOworIHZvaWQgZmZfYmxv
Y2tkc3BfaW5pdF9hcm0oQmxvY2tEU1BDb250ZXh0ICpjKTsKKyB2b2lkIGZmX2Jsb2NrZHNwX2lu
aXRfcHBjKEJsb2NrRFNQQ29udGV4dCAqYyk7Cisrdm9pZCBmZl9ibG9ja2RzcF9pbml0X2UyayhC
bG9ja0RTUENvbnRleHQgKmMpOworIHZvaWQgZmZfYmxvY2tkc3BfaW5pdF94ODYoQmxvY2tEU1BD
b250ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgpOworIHZvaWQgZmZfYmxvY2tkc3BfaW5p
dF9taXBzKEJsb2NrRFNQQ29udGV4dCAqYyk7CisgCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9l
MmsvTWFrZWZpbGUgYi9saWJhdmNvZGVjL2Uyay9NYWtlZmlsZQorbmV3IGZpbGUgbW9kZSAxMDA2
NDQKK2luZGV4IDAwMDAwMDAuLjM1NjRiOTcKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29k
ZWMvZTJrL01ha2VmaWxlCitAQCAtMCwwICsxLDMxIEBACisrIyBzdWJzeXN0ZW1zCisrT0JKUy0k
KENPTkZJR19BVURJT0RTUCkgICAgICAgICAgICAgICAgKz0gZTJrL2F1ZGlvZHNwLm8KKytPQkpT
LSQoQ09ORklHX0JMT0NLRFNQKSAgICAgICAgICAgICAgICArPSBlMmsvYmxvY2tkc3AubworK09C
SlMtJChDT05GSUdfRkZUKSAgICAgICAgICAgICAgICAgICAgICs9IGUyay9mZnRfaW5pdC5vIGUy
ay9mZnQubworK09CSlMtJChDT05GSUdfRkRDVERTUCkgICAgICAgICAgICAgICAgICs9IGUyay9m
ZGN0ZHNwLm8KKytPQkpTLSQoQ09ORklHX0ZNVENPTlZFUlQpICAgICAgICAgICAgICArPSBlMmsv
Zm10Y29udmVydC5vCisrT0JKUy0kKENPTkZJR19IMjY0Q0hST01BKSAgICAgICAgICAgICAgKz0g
ZTJrL2gyNjRjaHJvbWEubworK09CSlMtJChDT05GSUdfSDI2NERTUCkgICAgICAgICAgICAgICAg
ICs9IGUyay9oMjY0ZHNwLm8gZTJrL2hwZWxkc3AubworK09CSlMtJChDT05GSUdfSDI2NFFQRUwp
ICAgICAgICAgICAgICAgICs9IGUyay9oMjY0cXBlbC5vCisrT0JKUy0kKENPTkZJR19IUEVMRFNQ
KSAgICAgICAgICAgICAgICAgKz0gZTJrL2hwZWxkc3AubworK09CSlMtJChDT05GSUdfSURDVERT
UCkgICAgICAgICAgICAgICAgICs9IGUyay9pZGN0ZHNwLm8KKytPQkpTLSQoQ09ORklHX0xMVklE
RFNQKSAgICAgICAgICAgICAgICArPSBlMmsvbG9zc2xlc3NfdmlkZW9kc3AubworK09CSlMtJChD
T05GSUdfTURDVDE1KSAgICAgICAgICAgICAgICAgICs9IGUyay9tZGN0MTUubworK09CSlMtJChD
T05GSUdfTUVfQ01QKSAgICAgICAgICAgICAgICAgICs9IGUyay9tZV9jbXAubworK09CSlMtJChD
T05GSUdfTVBFR0FVRElPRFNQKSAgICAgICAgICAgICs9IGUyay9tcGVnYXVkaW9kc3AubworK09C
SlMtJChDT05GSUdfTVBFR1ZJREVPKSAgICAgICAgICAgICAgICs9IGUyay9tcGVndmlkZW8ubyBl
MmsvbXBlZ3ZpZGVvZHNwLm8KKytPQkpTLSQoQ09ORklHX01QRUdWSURFT0VOQykgICAgICAgICAg
ICArPSBlMmsvbXBlZ3ZpZGVvZW5jZHNwLm8KKytPQkpTLSQoQ09ORklHX1BJWEJMT0NLRFNQKSAg
ICAgICAgICAgICArPSBlMmsvcGl4YmxvY2tkc3AubworK09CSlMtJChDT05GSUdfVkMxRFNQKSAg
ICAgICAgICAgICAgICAgICs9IGUyay92YzFkc3AubworK09CSlMtJChDT05GSUdfVklERU9EU1Ap
ICAgICAgICAgICAgICAgICs9IGUyay92aWRlb2RzcC5vCisrT0JKUy0kKENPTkZJR19WUDNEU1Ap
ICAgICAgICAgICAgICAgICAgKz0gZTJrL3ZwM2RzcC5vCisrT0JKUy0kKENPTkZJR19WUDhEU1Ap
ICAgICAgICAgICAgICAgICAgKz0gZTJrL3ZwOGRzcC5vCisrCisrIyBkZWNvZGVycy9lbmNvZGVy
cworK09CSlMtJChDT05GSUdfSEVWQ19ERUNPREVSKSAgICAgICAgICAgICs9IGUyay9oZXZjZHNw
Lm8KKytPQkpTLSQoQ09ORklHX0xMQVVERFNQKSAgICAgICAgICAgICAgICArPSBlMmsvbG9zc2xl
c3NfYXVkaW9kc3AubworK09CSlMtJChDT05GSUdfU1ZRMV9FTkNPREVSKSAgICAgICAgICAgICs9
IGUyay9zdnExZW5jLm8KKytPQkpTLSQoQ09ORklHX1ZPUkJJU19ERUNPREVSKSAgICAgICAgICAr
PSBlMmsvdm9yYmlzZHNwLm8KKytPQkpTLSQoQ09ORklHX1ZQN19ERUNPREVSKSAgICAgICAgICAg
ICArPSBlMmsvdnA4ZHNwLm8KKytPQkpTLSQoQ09ORklHX1ZQOV9ERUNPREVSKSAgICAgICAgICAg
ICArPSBlMmsvdnA5ZHNwLm8KKysKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Uyay9hdWRpb2Rz
cC5jIGIvbGliYXZjb2RlYy9lMmsvYXVkaW9kc3AuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu
ZGV4IDAwMDAwMDAuLmMyZTQ0MzMKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29kZWMvZTJr
L2F1ZGlvZHNwLmMKK0BAIC0wLDAgKzEsNjIgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAy
MSBJbHlhIEt1cmR5dWtvdiA8anBlZ3FzQGdtYWlsLmNvbT4gZm9yIEJhc2VBTFQsIEx0ZAorKyAq
IENvcHlyaWdodCAoYykgMjAwNyBMdWNhIEJhcmJhdG8gPGx1X3plcm9AZ2VudG9vLm9yZz4KKysg
KgorKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKysgKgorKyAqIEZGbXBlZyBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisrICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisr
ICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgor
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorKyAqLworKwor
Ky8qKgorKyAqIEBmaWxlCisrICogbWlzY2VsbGFuZW91cyBhdWRpbyBvcGVyYXRpb25zCisrICov
CisrCisrI2luY2x1ZGUgImNvbmZpZy5oIgorKworKyNpbmNsdWRlICJsaWJhdnV0aWwvYXR0cmli
dXRlcy5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvY3B1LmgiCisrI2luY2x1ZGUgImxpYmF2dXRp
bC9lMmsvY3B1LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsvdXRpbF9lMmsuaCIKKysKKysj
aW5jbHVkZSAibGliYXZjb2RlYy9hdWRpb2RzcC5oIgorKworK3N0YXRpYyBpbnQzMl90IHNjYWxh
cnByb2R1Y3RfaW50MTZfZTJrKGNvbnN0IGludDE2X3QgKnYxLCBjb25zdCBpbnQxNl90ICp2Miwg
aW50IG9yZGVyKQorK3sKKysgICAgaW50IGk7CisrICAgIHZlY19zMTYgdmVjMSwgdmVjMjsKKysg
ICAgdmVjX3MzMiByZXMgPSBfbW1fc2V0emVyb19zaTEyOCgpLCB0bXA7CisrCisrICAgIFBSQUdN
QV9FMksoIml2ZGVwIikKKysgICAgZm9yIChpID0gMDsgaSA8IG9yZGVyOyBpICs9IDgpIHsKKysg
ICAgICAgIHZlYzEgPSBWRUNfTEQodjEpOworKyAgICAgICAgdmVjMiA9IFZFQ19MRCh2Mik7Cisr
ICAgICAgICB0bXAgPSBfbW1fbWFkZF9lcGkxNih2ZWMxLCB2ZWMyKTsKKysgICAgICAgIHJlcyA9
IF9tbV9hZGRfZXBpMzIocmVzLCB0bXApOworKyAgICAgICAgdjEgKz0gODsKKysgICAgICAgIHYy
ICs9IDg7CisrICAgIH0KKysKKysgICAgcmVzID0gX21tX2hhZGRfZXBpMzIocmVzLCByZXMpOwor
KyAgICByZXR1cm4gX21tX2V4dHJhY3RfZXBpMzIocmVzLCAwKSArIF9tbV9leHRyYWN0X2VwaTMy
KHJlcywgMSk7CisrfQorKworK2F2X2NvbGQgdm9pZCBmZl9hdWRpb2RzcF9pbml0X2UyayhBdWRp
b0RTUENvbnRleHQgKmMpCisreworKyAgICBpZiAoIUUyS19CQVNFKGF2X2dldF9jcHVfZmxhZ3Mo
KSkpCisrICAgICAgICByZXR1cm47CisrCisrICAgIGMtPnNjYWxhcnByb2R1Y3RfaW50MTYgPSBz
Y2FsYXJwcm9kdWN0X2ludDE2X2UyazsKKyt9CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9lMmsv
YmxvY2tkc3AuYyBiL2xpYmF2Y29kZWMvZTJrL2Jsb2NrZHNwLmMKK25ldyBmaWxlIG1vZGUgMTAw
NjQ0CitpbmRleCAwMDAwMDAwLi5mODVkY2UxCistLS0gL2Rldi9udWxsCisrKysgYi9saWJhdmNv
ZGVjL2Uyay9ibG9ja2RzcC5jCitAQCAtMCwwICsxLDcyIEBACisrLyoKKysgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgSWx5YSBLdXJkeXVrb3YgPGpwZWdxc0BnbWFpbC5jb20+IGZvciBCYXNlQUxULCBM
dGQKKysgKiBDb3B5cmlnaHQgKGMpIDIwMDIgQnJpYW4gRm9sZXkKKysgKiBDb3B5cmlnaHQgKGMp
IDIwMDIgRGlldGVyIFNoaXJsZXkKKysgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNCBSb21haW4g
RG9sYmVhdSA8cm9tYWluQGRvbGJlYXUub3JnPgorKyAqCisrICogVGhpcyBmaWxlIGlzIHBhcnQg
b2YgRkZtcGVnLgorKyAqCisrICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgor
KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2Ug
YWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysg
KiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BIDAyMTEwLTEzMDEgVVNBCisrICovCisrCisrI2luY2x1ZGUgImNvbmZpZy5oIgorKwor
KyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMu
aCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvbWVt
LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsvY3B1LmgiCisrI2luY2x1ZGUgImxpYmF2dXRp
bC9lMmsvdXRpbF9lMmsuaCIKKysKKysjaW5jbHVkZSAibGliYXZjb2RlYy9ibG9ja2RzcC5oIgor
KworK3N0YXRpYyB2b2lkIGNsZWFyX2Jsb2NrX2UyayhpbnQxNl90ICpibG9jaykKKyt7CisrICAg
IExPQURfWkVSTzsKKysgICAgVkVDX1NUKGJsb2NrLCB6ZXJvdik7CisrICAgIFZFQ19TVChibG9j
ayArIDgsIHplcm92KTsKKysgICAgVkVDX1NUKGJsb2NrICsgOCAqIDIsIHplcm92KTsKKysgICAg
VkVDX1NUKGJsb2NrICsgOCAqIDMsIHplcm92KTsKKysgICAgVkVDX1NUKGJsb2NrICsgOCAqIDQs
IHplcm92KTsKKysgICAgVkVDX1NUKGJsb2NrICsgOCAqIDUsIHplcm92KTsKKysgICAgVkVDX1NU
KGJsb2NrICsgOCAqIDYsIHplcm92KTsKKysgICAgVkVDX1NUKGJsb2NrICsgOCAqIDcsIHplcm92
KTsKKyt9CisrCisrc3RhdGljIHZvaWQgY2xlYXJfYmxvY2tzX2UyayhpbnQxNl90ICpibG9ja3Mp
CisreworKyAgICBpbnQgaTsKKysgICAgTE9BRF9aRVJPOworKyAgICBmb3IgKGkgPSAwOyBpIDwg
NjsgaSsrLCBibG9ja3MgKz0gNjQpIHsKKysgICAgICAgIFZFQ19TVChibG9ja3MsIHplcm92KTsK
KysgICAgICAgIFZFQ19TVChibG9ja3MgKyA4LCB6ZXJvdik7CisrICAgICAgICBWRUNfU1QoYmxv
Y2tzICsgOCAqIDIsIHplcm92KTsKKysgICAgICAgIFZFQ19TVChibG9ja3MgKyA4ICogMywgemVy
b3YpOworKyAgICAgICAgVkVDX1NUKGJsb2NrcyArIDggKiA0LCB6ZXJvdik7CisrICAgICAgICBW
RUNfU1QoYmxvY2tzICsgOCAqIDUsIHplcm92KTsKKysgICAgICAgIFZFQ19TVChibG9ja3MgKyA4
ICogNiwgemVyb3YpOworKyAgICAgICAgVkVDX1NUKGJsb2NrcyArIDggKiA3LCB6ZXJvdik7Cisr
ICAgIH0KKyt9CisrCisrYXZfY29sZCB2b2lkIGZmX2Jsb2NrZHNwX2luaXRfZTJrKEJsb2NrRFNQ
Q29udGV4dCAqYykKKyt7CisrICAgIGlmICghRTJLX0JBU0UoYXZfZ2V0X2NwdV9mbGFncygpKSkK
KysgICAgICAgIHJldHVybjsKKysKKysgICAgYy0+Y2xlYXJfYmxvY2sgPSBjbGVhcl9ibG9ja19l
Mms7CisrICAgIGMtPmNsZWFyX2Jsb2NrcyA9IGNsZWFyX2Jsb2Nrc19lMms7CisrfQorZGlmZiAt
LWdpdCBhL2xpYmF2Y29kZWMvZTJrL2RjdGRzcC5oIGIvbGliYXZjb2RlYy9lMmsvZGN0ZHNwLmgK
K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xMjgxZGM3CistLS0gL2Rldi9u
dWxsCisrKysgYi9saWJhdmNvZGVjL2Uyay9kY3Rkc3AuaAorQEAgLTAsMCArMSwyNyBAQAorKy8q
CisrICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorKyAqCisrICogRkZtcGVnIGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysg
KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisr
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisrICovCisrCisr
I2lmbmRlZiBBVkNPREVDX0UyS19EQ1REU1BfSAorKyNkZWZpbmUgQVZDT0RFQ19FMktfRENURFNQ
X0gKKysKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrCisrdm9pZCBmZl9mZGN0X2UyayhpbnQxNl90
ICpibG9jayk7Cisrdm9pZCBmZl9pZGN0X2UyayhpbnQxNl90ICpibG9jayk7CisrCisrI2VuZGlm
IC8qIEFWQ09ERUNfRTJLX0RDVERTUF9IICovCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9lMmsv
ZmRjdGRzcC5jIGIvbGliYXZjb2RlYy9lMmsvZmRjdGRzcC5jCituZXcgZmlsZSBtb2RlIDEwMDY0
NAoraW5kZXggMDAwMDAwMC4uNTY4YTY3ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvbGliYXZjb2Rl
Yy9lMmsvZmRjdGRzcC5jCitAQCAtMCwwICsxLDM4OSBAQAorKy8qCisrICogQ29weXJpZ2h0IChD
KSAyMDIxIElseWEgS3VyZHl1a292IDxqcGVncXNAZ21haWwuY29tPiBmb3IgQmFzZUFMVCwgTHRk
CisrICogQ29weXJpZ2h0IChDKSAyMDAzICBKYW1lcyBLbGljbWFuIDxqYW1lc0BrbGljbWFuLm9y
Zz4KKysgKgorKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKysgKgorKyAqIEZGbXBl
ZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisrICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisrICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorKyAq
LworKworKyNpbmNsdWRlICJjb25maWcuaCIKKysKKysjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJp
YnV0ZXMuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0
aWwvZTJrL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL3V0aWxfZTJrLmgiCisrCisr
I2luY2x1ZGUgImxpYmF2Y29kZWMvZmRjdGRzcC5oIgorKworKyNpbmNsdWRlICJkY3Rkc3AuaCIK
KysKKysjZGVmaW5lIEMxICAgICAwLjk4MDc4NTI4MDQwMzIzMDQ0OTEyNjE4MjI0IC8qIGNvcygx
ICogUEkgLyAxNikgKi8KKysjZGVmaW5lIEMyICAgICAwLjkyMzg3OTUzMjUxMTI4Njc1NjEyODE4
MzE5IC8qIGNvcygyICogUEkgLyAxNikgKi8KKysjZGVmaW5lIEMzICAgICAwLjgzMTQ2OTYxMjMw
MjU0NTIzNzA3ODc4ODM4IC8qIGNvcygzICogUEkgLyAxNikgKi8KKysjZGVmaW5lIEM0ICAgICAw
LjcwNzEwNjc4MTE4NjU0NzUyNDQwMDg0NDM2IC8qIGNvcyg0ICogUEkgLyAxNikgKi8KKysjZGVm
aW5lIEM1ICAgICAwLjU1NTU3MDIzMzAxOTYwMjIyNDc0MjgzMDgxIC8qIGNvcyg1ICogUEkgLyAx
NikgKi8KKysjZGVmaW5lIEM2ICAgICAwLjM4MjY4MzQzMjM2NTA4OTc3MTcyODQ1OTk4IC8qIGNv
cyg2ICogUEkgLyAxNikgKi8KKysjZGVmaW5lIEM3ICAgICAwLjE5NTA5MDMyMjAxNjEyODI2Nzg0
ODI4NDg3IC8qIGNvcyg3ICogUEkgLyAxNikgKi8KKysKKysjZGVmaW5lIFcwIC0oMiAqIEMyKQor
KyNkZWZpbmUgVzEgICgyICogQzYpCisrI2RlZmluZSBXMiAoTV9TUVJUMiAqIEM2KQorKyNkZWZp
bmUgVzMgKE1fU1FSVDIgKiBDMykKKysjZGVmaW5lIFc0IChNX1NRUlQyICogKC1DMSArIEMzICsg
QzUgLSBDNykpCisrI2RlZmluZSBXNSAoTV9TUVJUMiAqICAoQzEgKyBDMyAtIEM1ICsgQzcpKQor
KyNkZWZpbmUgVzYgKE1fU1FSVDIgKiAgKEMxICsgQzMgKyBDNSAtIEM3KSkKKysjZGVmaW5lIFc3
IChNX1NRUlQyICogIChDMSArIEMzIC0gQzUgLSBDNykpCisrI2RlZmluZSBXOCAoTV9TUVJUMiAq
ICAoQzcgLSBDMykpCisrI2RlZmluZSBXOSAoTV9TUVJUMiAqICgtQzEgLSBDMykpCisrI2RlZmlu
ZSBXQSAoTV9TUVJUMiAqICgtQzMgLSBDNSkpCisrI2RlZmluZSBXQiAoTV9TUVJUMiAqICAoQzUg
LSBDMykpCisrCisrI2RlZmluZSBMRF9XMCBfbW1fc2V0MV9wcyhXMCkKKysjZGVmaW5lIExEX1cx
IF9tbV9zZXQxX3BzKFcxKQorKyNkZWZpbmUgTERfVzIgX21tX3NldDFfcHMoVzIpCisrI2RlZmlu
ZSBMRF9XMyBfbW1fc2V0MV9wcyhXMykKKysjZGVmaW5lIExEX1c0IF9tbV9zZXQxX3BzKFc0KQor
KyNkZWZpbmUgTERfVzUgX21tX3NldDFfcHMoVzUpCisrI2RlZmluZSBMRF9XNiBfbW1fc2V0MV9w
cyhXNikKKysjZGVmaW5lIExEX1c3IF9tbV9zZXQxX3BzKFc3KQorKyNkZWZpbmUgTERfVzggX21t
X3NldDFfcHMoVzgpCisrI2RlZmluZSBMRF9XOSBfbW1fc2V0MV9wcyhXOSkKKysjZGVmaW5lIExE
X1dBIF9tbV9zZXQxX3BzKFdBKQorKyNkZWZpbmUgTERfV0IgX21tX3NldDFfcHMoV0IpCisrCisr
I2RlZmluZSBfbW1fbWFkZF9wcyhhLCBiLCBjKSBfbW1fYWRkX3BzKF9tbV9tdWxfcHMoYSwgYiks
IGMpCisrCisrI2RlZmluZSBGRENUUk9XKGIwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNykg
Lyoge3t7ICovICAgICAgICAgICBcCisrICAgIHgwID0gX21tX2FkZF9wcyhiMCwgYjcpOyAgICAg
ICAgICAgIC8qIHgwID0gYjAgKyBiNzsgKi8gICAgICAgICBcCisrICAgIHg3ID0gX21tX3N1Yl9w
cyhiMCwgYjcpOyAgICAgICAgICAgIC8qIHg3ID0gYjAgLSBiNzsgKi8gICAgICAgICBcCisrICAg
IHgxID0gX21tX2FkZF9wcyhiMSwgYjYpOyAgICAgICAgICAgIC8qIHgxID0gYjEgKyBiNjsgKi8g
ICAgICAgICBcCisrICAgIHg2ID0gX21tX3N1Yl9wcyhiMSwgYjYpOyAgICAgICAgICAgIC8qIHg2
ID0gYjEgLSBiNjsgKi8gICAgICAgICBcCisrICAgIHgyID0gX21tX2FkZF9wcyhiMiwgYjUpOyAg
ICAgICAgICAgIC8qIHgyID0gYjIgKyBiNTsgKi8gICAgICAgICBcCisrICAgIHg1ID0gX21tX3N1
Yl9wcyhiMiwgYjUpOyAgICAgICAgICAgIC8qIHg1ID0gYjIgLSBiNTsgKi8gICAgICAgICBcCisr
ICAgIHgzID0gX21tX2FkZF9wcyhiMywgYjQpOyAgICAgICAgICAgIC8qIHgzID0gYjMgKyBiNDsg
Ki8gICAgICAgICBcCisrICAgIHg0ID0gX21tX3N1Yl9wcyhiMywgYjQpOyAgICAgICAgICAgIC8q
IHg0ID0gYjMgLSBiNDsgKi8gICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGI3ID0gX21t
X2FkZF9wcyh4MCwgeDMpOyAgICAgICAgICAgIC8qIGI3ID0geDAgKyB4MzsgKi8gICAgICAgICBc
CisrICAgIGIxID0gX21tX2FkZF9wcyh4MSwgeDIpOyAgICAgICAgICAgIC8qIGIxID0geDEgKyB4
MjsgKi8gICAgICAgICBcCisrICAgIGIwID0gX21tX2FkZF9wcyhiNywgYjEpOyAgICAgICAgICAg
IC8qIGIwID0gYjcgKyBiMTsgKi8gICAgICAgICBcCisrICAgIGI0ID0gX21tX3N1Yl9wcyhiNywg
YjEpOyAgICAgICAgICAgIC8qIGI0ID0gYjcgLSBiMTsgKi8gICAgICAgICBcCisrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisrICAgIGIyICAgPSBfbW1fc3ViX3BzKHgwLCB4Myk7ICAgICAgICAgIC8qIGIyID0geDAg
LSB4MzsgKi8gICAgICAgICBcCisrICAgIGI2ICAgPSBfbW1fc3ViX3BzKHgxLCB4Mik7ICAgICAg
ICAgIC8qIGI2ID0geDEgLSB4MjsgKi8gICAgICAgICBcCisrICAgIGI1ICAgPSBfbW1fYWRkX3Bz
KGI2LCBiMik7ICAgICAgICAgIC8qIGI1ID0gYjYgKyBiMjsgKi8gICAgICAgICBcCisrICAgIGNu
c3QgPSBMRF9XMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisrICAgIGI1ICAgPSBfbW1fbXVsX3BzKGNuc3QsIGI1KTsgICAgICAgIC8qIGI1ID0g
YjUgKiBXMjsgKi8gICAgICAgICBcCisrICAgIGNuc3QgPSBMRF9XMTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGIyICAgPSBfbW1fbWFk
ZF9wcyhjbnN0LCBiMiwgYjUpOyAgIC8qIGIyID0gYjUgKyBiMiAqIFcxOyAqLyAgICBcCisrICAg
IGNuc3QgPSBMRF9XMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisrICAgIGI2ICAgPSBfbW1fbWFkZF9wcyhjbnN0LCBiNiwgYjUpOyAgIC8qIGI2
ID0gYjUgKyBiNiAqIFcwOyAqLyAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHgwICAgPSBfbW1f
YWRkX3BzKHg0LCB4Nyk7ICAgICAgICAgIC8qIHgwID0geDQgKyB4NzsgKi8gICAgICAgICBcCisr
ICAgIHgxICAgPSBfbW1fYWRkX3BzKHg1LCB4Nik7ICAgICAgICAgIC8qIHgxID0geDUgKyB4Njsg
Ki8gICAgICAgICBcCisrICAgIHgyICAgPSBfbW1fYWRkX3BzKHg0LCB4Nik7ICAgICAgICAgIC8q
IHgyID0geDQgKyB4NjsgKi8gICAgICAgICBcCisrICAgIHgzICAgPSBfbW1fYWRkX3BzKHg1LCB4
Nyk7ICAgICAgICAgIC8qIHgzID0geDUgKyB4NzsgKi8gICAgICAgICBcCisrICAgIHg4ICAgPSBf
bW1fYWRkX3BzKHgyLCB4Myk7ICAgICAgICAgIC8qIHg4ID0geDIgKyB4MzsgKi8gICAgICAgICBc
CisrICAgIGNuc3QgPSBMRF9XMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisrICAgIHg4ICAgPSBfbW1fbXVsX3BzKGNuc3QsIHg4KTsgICAgICAg
IC8qIHg4ID0geDggKiBXMzsgKi8gICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGNuc3Qg
PSBMRF9XODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisrICAgIHgwICAgPSBfbW1fbXVsX3BzKGNuc3QsIHgwKTsgICAgICAgIC8qIHgwICo9IFc4
OyAqLyAgICAgICAgICAgICBcCisrICAgIGNuc3QgPSBMRF9XOTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHgxICAgPSBfbW1fbXVsX3Bz
KGNuc3QsIHgxKTsgICAgICAgIC8qIHgxICo9IFc5OyAqLyAgICAgICAgICAgICBcCisrICAgIGNu
c3QgPSBMRF9XQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisrICAgIHgyICAgPSBfbW1fbWFkZF9wcyhjbnN0LCB4MiwgeDgpOyAgIC8qIHgyID0g
eDIgKiBXQSArIHg4OyAqLyAgICBcCisrICAgIGNuc3QgPSBMRF9XQjsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHgzICAgPSBfbW1fbWFk
ZF9wcyhjbnN0LCB4MywgeDgpOyAgIC8qIHgzID0geDMgKiBXQiArIHg4OyAqLyAgICBcCisrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisrICAgIGNuc3QgPSBMRF9XNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGI3ICAgPSBfbW1fbWFkZF9wcyhjbnN0LCB4
NCwgeDApOyAgIC8qIGI3ID0geDQgKiBXNCArIHgwOyAqLyAgICBcCisrICAgIGNuc3QgPSBMRF9X
NTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr
ICAgIGI1ICAgPSBfbW1fbWFkZF9wcyhjbnN0LCB4NSwgeDEpOyAgIC8qIGI1ID0geDUgKiBXNSAr
IHgxOyAqLyAgICBcCisrICAgIGNuc3QgPSBMRF9XNjsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGIzICAgPSBfbW1fbWFkZF9wcyhjbnN0
LCB4NiwgeDEpOyAgIC8qIGIzID0geDYgKiBXNiArIHgxOyAqLyAgICBcCisrICAgIGNuc3QgPSBM
RF9XNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisrICAgIGIxICAgPSBfbW1fbWFkZF9wcyhjbnN0LCB4NywgeDApOyAgIC8qIGIxID0geDcgKiBX
NyArIHgwOyAqLyAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGI3ID0gX21tX2FkZF9wcyhiNywg
eDIpOyAgICAgICAgICAgIC8qIGI3ID0gYjcgKyB4MjsgKi8gICAgICAgICBcCisrICAgIGI1ID0g
X21tX2FkZF9wcyhiNSwgeDMpOyAgICAgICAgICAgIC8qIGI1ID0gYjUgKyB4MzsgKi8gICAgICAg
ICBcCisrICAgIGIzID0gX21tX2FkZF9wcyhiMywgeDIpOyAgICAgICAgICAgIC8qIGIzID0gYjMg
KyB4MjsgKi8gICAgICAgICBcCisrICAgIGIxID0gX21tX2FkZF9wcyhiMSwgeDMpICAgICAgICAg
ICAgIC8qIGIxID0gYjEgKyB4MzsgKi8gICAgICAgICBcCisrICAgIC8qIH19fSAqLworKworKyNk
ZWZpbmUgRkRDVENPTChiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcpIC8qIHt7eyAqLyAg
ICAgICAgICAgXAorKyAgICB4MCA9IF9tbV9hZGRfcHMoYjAsIGI3KTsgICAgICAgICAgICAvKiB4
MCA9IGIwICsgYjc7ICovICAgICAgICAgXAorKyAgICB4NyA9IF9tbV9zdWJfcHMoYjAsIGI3KTsg
ICAgICAgICAgICAvKiB4NyA9IGIwIC0gYjc7ICovICAgICAgICAgXAorKyAgICB4MSA9IF9tbV9h
ZGRfcHMoYjEsIGI2KTsgICAgICAgICAgICAvKiB4MSA9IGIxICsgYjY7ICovICAgICAgICAgXAor
KyAgICB4NiA9IF9tbV9zdWJfcHMoYjEsIGI2KTsgICAgICAgICAgICAvKiB4NiA9IGIxIC0gYjY7
ICovICAgICAgICAgXAorKyAgICB4MiA9IF9tbV9hZGRfcHMoYjIsIGI1KTsgICAgICAgICAgICAv
KiB4MiA9IGIyICsgYjU7ICovICAgICAgICAgXAorKyAgICB4NSA9IF9tbV9zdWJfcHMoYjIsIGI1
KTsgICAgICAgICAgICAvKiB4NSA9IGIyIC0gYjU7ICovICAgICAgICAgXAorKyAgICB4MyA9IF9t
bV9hZGRfcHMoYjMsIGI0KTsgICAgICAgICAgICAvKiB4MyA9IGIzICsgYjQ7ICovICAgICAgICAg
XAorKyAgICB4NCA9IF9tbV9zdWJfcHMoYjMsIGI0KTsgICAgICAgICAgICAvKiB4NCA9IGIzIC0g
YjQ7ICovICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBiNyA9IF9tbV9hZGRfcHMoeDAs
IHgzKTsgICAgICAgICAgICAvKiBiNyA9IHgwICsgeDM7ICovICAgICAgICAgXAorKyAgICBiMSA9
IF9tbV9hZGRfcHMoeDEsIHgyKTsgICAgICAgICAgICAvKiBiMSA9IHgxICsgeDI7ICovICAgICAg
ICAgXAorKyAgICBiMCA9IF9tbV9hZGRfcHMoYjcsIGIxKTsgICAgICAgICAgICAvKiBiMCA9IGI3
ICsgYjE7ICovICAgICAgICAgXAorKyAgICBiNCA9IF9tbV9zdWJfcHMoYjcsIGIxKTsgICAgICAg
ICAgICAvKiBiNCA9IGI3IC0gYjE7ICovICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBi
MiAgID0gX21tX3N1Yl9wcyh4MCwgeDMpOyAgICAgICAgICAvKiBiMiA9IHgwIC0geDM7ICovICAg
ICAgICAgXAorKyAgICBiNiAgID0gX21tX3N1Yl9wcyh4MSwgeDIpOyAgICAgICAgICAvKiBiNiA9
IHgxIC0geDI7ICovICAgICAgICAgXAorKyAgICBiNSAgID0gX21tX2FkZF9wcyhiNiwgYjIpOyAg
ICAgICAgICAvKiBiNSA9IGI2ICsgYjI7ICovICAgICAgICAgXAorKyAgICBjbnN0ID0gTERfVzI7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAg
ICBiNSAgID0gX21tX211bF9wcyhjbnN0LCBiNSk7ICAgICAgICAvKiBiNSA9IGI1ICogVzI7ICov
ICAgICAgICAgXAorKyAgICBjbnN0ID0gTERfVzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBiMiAgID0gX21tX21hZGRfcHMoY25zdCwg
YjIsIGI1KTsgICAvKiBiMiA9IGI1ICsgYjIgKiBXMTsgKi8gICAgXAorKyAgICBjbnN0ID0gTERf
VzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
KyAgICBiNiAgID0gX21tX21hZGRfcHMoY25zdCwgYjYsIGI1KTsgICAvKiBiNiA9IGI1ICsgYjYg
KiBXMDsgKi8gICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB4MCAgID0gX21tX2FkZF9wcyh4NCwg
eDcpOyAgICAgICAgICAvKiB4MCA9IHg0ICsgeDc7ICovICAgICAgICAgXAorKyAgICB4MSAgID0g
X21tX2FkZF9wcyh4NSwgeDYpOyAgICAgICAgICAvKiB4MSA9IHg1ICsgeDY7ICovICAgICAgICAg
XAorKyAgICB4MiAgID0gX21tX2FkZF9wcyh4NCwgeDYpOyAgICAgICAgICAvKiB4MiA9IHg0ICsg
eDY7ICovICAgICAgICAgXAorKyAgICB4MyAgID0gX21tX2FkZF9wcyh4NSwgeDcpOyAgICAgICAg
ICAvKiB4MyA9IHg1ICsgeDc7ICovICAgICAgICAgXAorKyAgICB4OCAgID0gX21tX2FkZF9wcyh4
MiwgeDMpOyAgICAgICAgICAvKiB4OCA9IHgyICsgeDM7ICovICAgICAgICAgXAorKyAgICBjbnN0
ID0gTERfVzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorKyAgICB4OCAgID0gX21tX211bF9wcyhjbnN0LCB4OCk7ICAgICAgICAvKiB4OCA9IHg4
ICogVzM7ICovICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBjbnN0ID0gTERfVzg7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB4
MCAgID0gX21tX211bF9wcyhjbnN0LCB4MCk7ICAgICAgICAvKiB4MCAqPSBXODsgKi8gICAgICAg
ICAgICAgXAorKyAgICBjbnN0ID0gTERfVzk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB4MSAgID0gX21tX211bF9wcyhjbnN0LCB4MSk7
ICAgICAgICAvKiB4MSAqPSBXOTsgKi8gICAgICAgICAgICAgXAorKyAgICBjbnN0ID0gTERfV0E7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAg
ICB4MiAgID0gX21tX21hZGRfcHMoY25zdCwgeDIsIHg4KTsgICAvKiB4MiA9IHgyICogV0EgKyB4
ODsgKi8gICAgXAorKyAgICBjbnN0ID0gTERfV0I7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB4MyAgID0gX21tX21hZGRfcHMoY25zdCwg
eDMsIHg4KTsgICAvKiB4MyA9IHgzICogV0IgKyB4ODsgKi8gICAgXAorKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
KyAgICBjbnN0ID0gTERfVzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorKyAgICBiNyAgID0gX21tX21hZGRfcHMoY25zdCwgeDQsIHgwKTsgICAv
KiBiNyA9IHg0ICogVzQgKyB4MDsgKi8gICAgXAorKyAgICBjbnN0ID0gTERfVzU7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBiNSAgID0g
X21tX21hZGRfcHMoY25zdCwgeDUsIHgxKTsgICAvKiBiNSA9IHg1ICogVzUgKyB4MTsgKi8gICAg
XAorKyAgICBjbnN0ID0gTERfVzY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorKyAgICBiMyAgID0gX21tX21hZGRfcHMoY25zdCwgeDYsIHgxKTsg
ICAvKiBiMyA9IHg2ICogVzYgKyB4MTsgKi8gICAgXAorKyAgICBjbnN0ID0gTERfVzc7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBiMSAg
ID0gX21tX21hZGRfcHMoY25zdCwgeDcsIHgwKTsgICAvKiBiMSA9IHg3ICogVzcgKyB4MDsgKi8g
ICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorKyAgICBiNyA9IF9tbV9hZGRfcHMoYjcsIHgyKTsgICAgICAg
ICAgICAvKiBiNyArPSB4MjsgKi8gICAgICAgICAgICAgXAorKyAgICBiNSA9IF9tbV9hZGRfcHMo
YjUsIHgzKTsgICAgICAgICAgICAvKiBiNSArPSB4MzsgKi8gICAgICAgICAgICAgXAorKyAgICBi
MyA9IF9tbV9hZGRfcHMoYjMsIHgyKTsgICAgICAgICAgICAvKiBiMyArPSB4MjsgKi8gICAgICAg
ICAgICAgXAorKyAgICBiMSA9IF9tbV9hZGRfcHMoYjEsIHgzKSAgICAgICAgICAgICAvKiBiMSAr
PSB4MzsgKi8gICAgICAgICAgICAgXAorKyAgICAvKiB9fX0gKi8KKysKKysvKiB0d28gZGltZW5z
aW9uYWwgZGlzY3JldGUgY29zaW5lIHRyYW5zZm9ybSAqLworK3ZvaWQgZmZfZmRjdF9lMmsoaW50
MTZfdCAqYmxvY2spCisreworKyAgICB2ZWNfZiBiMDAsIGIxMCwgYjIwLCBiMzAsIGI0MCwgYjUw
LCBiNjAsIGI3MDsKKysgICAgdmVjX2YgYjAxLCBiMTEsIGIyMSwgYjMxLCBiNDEsIGI1MSwgYjYx
LCBiNzE7CisrICAgIHZlY19mIGNuc3Q7CisrICAgIHZlY19mIHgwLCB4MSwgeDIsIHgzLCB4NCwg
eDUsIHg2LCB4NywgeDg7CisrICAgIHZlY19zMTYgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYs
IGE3OworKyAgICB2ZWNfczE2IHowLCB6MSwgejIsIHozLCB6NCwgejUsIHo2LCB6NzsKKysKKysg
ICAgYTAgPSBWRUNfTEQoYmxvY2sgKyA4ICogMCk7CisrICAgIGE0ID0gVkVDX0xEKGJsb2NrICsg
OCAqIDQpOworKyAgICBhMSA9IFZFQ19MRChibG9jayArIDggKiAxKTsKKysgICAgYTUgPSBWRUNf
TEQoYmxvY2sgKyA4ICogNSk7CisrICAgIGEyID0gVkVDX0xEKGJsb2NrICsgOCAqIDIpOworKyAg
ICBhNiA9IFZFQ19MRChibG9jayArIDggKiA2KTsKKysgICAgYTMgPSBWRUNfTEQoYmxvY2sgKyA4
ICogMyk7CisrICAgIGE3ID0gVkVDX0xEKGJsb2NrICsgOCAqIDcpOworKworKyAgICBUUkFOU1BP
U0U4KGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7CisrCisrICAgIC8qIFNvbWUgb2Yg
dGhlIGluaXRpYWwgY2FsY3VsYXRpb25zIGNhbiBiZSBkb25lIGFzIHZlY3RvciBzaG9ydAorKyAg
ICAgKiBiZWZvcmUgY29udmVyc2lvbiB0byB2ZWNfZi4gIFRoZSBmb2xsb3dpbmcgY29kZSBzZWN0
aW9uCisrICAgICAqIHRha2VzIGFkdmFudGFnZSBvZiB0aGlzLiAqLworKworKyAgICAvKiBmZGN0
IHJvd3Mge3t7ICovCisrICAgIHowID0gX21tX2FkZF9lcGkxNihhMCwgYTcpOworKyAgICB6NyA9
IF9tbV9zdWJfZXBpMTYoYTAsIGE3KTsKKysgICAgejEgPSBfbW1fYWRkX2VwaTE2KGExLCBhNik7
CisrICAgIHo2ID0gX21tX3N1Yl9lcGkxNihhMSwgYTYpOworKyAgICB6MiA9IF9tbV9hZGRfZXBp
MTYoYTIsIGE1KTsKKysgICAgejUgPSBfbW1fc3ViX2VwaTE2KGEyLCBhNSk7CisrICAgIHozID0g
X21tX2FkZF9lcGkxNihhMywgYTQpOworKyAgICB6NCA9IF9tbV9zdWJfZXBpMTYoYTMsIGE0KTsK
KysKKysjZGVmaW5lIENURjAobikgXAorKyAgICBiIyNuIyMwID0gX21tX2N2dGVwaTMyX3BzKF9t
bV9zcmFpX2VwaTMyKF9tbV91bnBhY2tsb19lcGkxNihhIyNuLCBhIyNuKSwgMTYpKTtcCisrICAg
IGIjI24jIzEgPSBfbW1fY3Z0ZXBpMzJfcHMoX21tX3NyYWlfZXBpMzIoX21tX3VucGFja2hpX2Vw
aTE2KGEjI24sIGEjI24pLCAxNikpOworKworKyAgICBhNyA9IF9tbV9hZGRfZXBpMTYoejAsIHoz
KTsKKysgICAgYTEgPSBfbW1fYWRkX2VwaTE2KHoxLCB6Mik7CisrICAgIGEwID0gX21tX2FkZF9l
cGkxNihhNywgYTEpOworKyAgICBhNCA9IF9tbV9zdWJfZXBpMTYoYTcsIGExKTsKKysgICAgQ1RG
MCgwKTsKKysgICAgQ1RGMCg0KTsKKysKKysgICAgYTIgPSBfbW1fc3ViX2VwaTE2KHowLCB6Myk7
CisrICAgIGE2ID0gX21tX3N1Yl9lcGkxNih6MSwgejIpOworKyAgICBDVEYwKDIpOworKyAgICBD
VEYwKDYpOworKworKyN1bmRlZiBDVEYwCisrCisrICAgIHgwID0gX21tX2FkZF9wcyhiNjAsIGIy
MCk7CisrICAgIHgxID0gX21tX2FkZF9wcyhiNjEsIGIyMSk7CisrCisrICAgIGNuc3QgPSBMRF9X
MjsKKysgICAgeDAgICA9IF9tbV9tdWxfcHMoY25zdCwgeDApOworKyAgICB4MSAgID0gX21tX211
bF9wcyhjbnN0LCB4MSk7CisrICAgIGNuc3QgPSBMRF9XMTsKKysgICAgYjIwICA9IF9tbV9tYWRk
X3BzKGNuc3QsIGIyMCwgeDApOworKyAgICBiMjEgID0gX21tX21hZGRfcHMoY25zdCwgYjIxLCB4
MSk7CisrICAgIGNuc3QgPSBMRF9XMDsKKysgICAgYjYwICA9IF9tbV9tYWRkX3BzKGNuc3QsIGI2
MCwgeDApOworKyAgICBiNjEgID0gX21tX21hZGRfcHMoY25zdCwgYjYxLCB4MSk7CisrCisrI2Rl
ZmluZSBDVEZYKHgsIGIpIFwKKysgICAgYiMjMCA9IF9tbV9jdnRlcGkzMl9wcyhfbW1fc3JhaV9l
cGkzMihfbW1fdW5wYWNrbG9fZXBpMTYoeCwgeCksIDE2KSk7IFwKKysgICAgYiMjMSA9IF9tbV9j
dnRlcGkzMl9wcyhfbW1fc3JhaV9lcGkzMihfbW1fdW5wYWNraGlfZXBpMTYoeCwgeCksIDE2KSk7
CisrCisrICAgIENURlgoejQsIGI3KTsKKysgICAgQ1RGWCh6NSwgYjUpOworKyAgICBDVEZYKHo2
LCBiMyk7CisrICAgIENURlgoejcsIGIxKTsKKysKKysjdW5kZWYgQ1RGWAorKworKyAgICB4MCAg
ID0gX21tX2FkZF9wcyhiNzAsIGIxMCk7CisrICAgIHgxICAgPSBfbW1fYWRkX3BzKGI1MCwgYjMw
KTsKKysgICAgeDIgICA9IF9tbV9hZGRfcHMoYjcwLCBiMzApOworKyAgICB4MyAgID0gX21tX2Fk
ZF9wcyhiNTAsIGIxMCk7CisrICAgIHg4ICAgPSBfbW1fYWRkX3BzKHgyLCB4Myk7CisrICAgIGNu
c3QgPSBMRF9XMzsKKysgICAgeDggICA9IF9tbV9tdWxfcHMoY25zdCwgeDgpOworKworKyAgICBj
bnN0ID0gTERfVzg7CisrICAgIHgwICAgPSBfbW1fbXVsX3BzKGNuc3QsIHgwKTsKKysgICAgY25z
dCA9IExEX1c5OworKyAgICB4MSAgID0gX21tX211bF9wcyhjbnN0LCB4MSk7CisrICAgIGNuc3Qg
PSBMRF9XQTsKKysgICAgeDIgICA9IF9tbV9tYWRkX3BzKGNuc3QsIHgyLCB4OCk7CisrICAgIGNu
c3QgPSBMRF9XQjsKKysgICAgeDMgICA9IF9tbV9tYWRkX3BzKGNuc3QsIHgzLCB4OCk7CisrCisr
ICAgIGNuc3QgPSBMRF9XNDsKKysgICAgYjcwICA9IF9tbV9tYWRkX3BzKGNuc3QsIGI3MCwgeDAp
OworKyAgICBjbnN0ID0gTERfVzU7CisrICAgIGI1MCAgPSBfbW1fbWFkZF9wcyhjbnN0LCBiNTAs
IHgxKTsKKysgICAgY25zdCA9IExEX1c2OworKyAgICBiMzAgID0gX21tX21hZGRfcHMoY25zdCwg
YjMwLCB4MSk7CisrICAgIGNuc3QgPSBMRF9XNzsKKysgICAgYjEwICA9IF9tbV9tYWRkX3BzKGNu
c3QsIGIxMCwgeDApOworKworKyAgICBiNzAgPSBfbW1fYWRkX3BzKGI3MCwgeDIpOworKyAgICBi
NTAgPSBfbW1fYWRkX3BzKGI1MCwgeDMpOworKyAgICBiMzAgPSBfbW1fYWRkX3BzKGIzMCwgeDIp
OworKyAgICBiMTAgPSBfbW1fYWRkX3BzKGIxMCwgeDMpOworKworKyAgICB4MCAgID0gX21tX2Fk
ZF9wcyhiNzEsIGIxMSk7CisrICAgIHgxICAgPSBfbW1fYWRkX3BzKGI1MSwgYjMxKTsKKysgICAg
eDIgICA9IF9tbV9hZGRfcHMoYjcxLCBiMzEpOworKyAgICB4MyAgID0gX21tX2FkZF9wcyhiNTEs
IGIxMSk7CisrICAgIHg4ICAgPSBfbW1fYWRkX3BzKHgyLCB4Myk7CisrICAgIGNuc3QgPSBMRF9X
MzsKKysgICAgeDggICA9IF9tbV9tdWxfcHMoY25zdCwgeDgpOworKworKyAgICBjbnN0ID0gTERf
Vzg7CisrICAgIHgwICAgPSBfbW1fbXVsX3BzKGNuc3QsIHgwKTsKKysgICAgY25zdCA9IExEX1c5
OworKyAgICB4MSAgID0gX21tX211bF9wcyhjbnN0LCB4MSk7CisrICAgIGNuc3QgPSBMRF9XQTsK
KysgICAgeDIgICA9IF9tbV9tYWRkX3BzKGNuc3QsIHgyLCB4OCk7CisrICAgIGNuc3QgPSBMRF9X
QjsKKysgICAgeDMgICA9IF9tbV9tYWRkX3BzKGNuc3QsIHgzLCB4OCk7CisrCisrICAgIGNuc3Qg
PSBMRF9XNDsKKysgICAgYjcxICA9IF9tbV9tYWRkX3BzKGNuc3QsIGI3MSwgeDApOworKyAgICBj
bnN0ID0gTERfVzU7CisrICAgIGI1MSAgPSBfbW1fbWFkZF9wcyhjbnN0LCBiNTEsIHgxKTsKKysg
ICAgY25zdCA9IExEX1c2OworKyAgICBiMzEgID0gX21tX21hZGRfcHMoY25zdCwgYjMxLCB4MSk7
CisrICAgIGNuc3QgPSBMRF9XNzsKKysgICAgYjExICA9IF9tbV9tYWRkX3BzKGNuc3QsIGIxMSwg
eDApOworKworKyAgICBiNzEgPSBfbW1fYWRkX3BzKGI3MSwgeDIpOworKyAgICBiNTEgPSBfbW1f
YWRkX3BzKGI1MSwgeDMpOworKyAgICBiMzEgPSBfbW1fYWRkX3BzKGIzMSwgeDIpOworKyAgICBi
MTEgPSBfbW1fYWRkX3BzKGIxMSwgeDMpOworKyAgICAvKiB9fX0gKi8KKysKKysgICAgLyogOHg4
IG1hdHJpeCB0cmFuc3Bvc2UgKHZlY19mWzhdWzJdKSB7e3sgKi8KKysgICAgeDAgPSBfbW1fdW5w
YWNrbG9fcHMoYjAwLCBiMTApOworKyAgICB4MSA9IF9tbV91bnBhY2toaV9wcyhiMDAsIGIxMCk7
CisrICAgIHgyID0gX21tX3VucGFja2xvX3BzKGIyMCwgYjMwKTsKKysgICAgeDMgPSBfbW1fdW5w
YWNraGlfcHMoYjIwLCBiMzApOworKyAgICBiMDAgPSBfbW1fdW5wYWNrbG9fcHMyKHgwLCB4Mik7
CisrICAgIGIxMCA9IF9tbV91bnBhY2toaV9wczIoeDAsIHgyKTsKKysgICAgYjIwID0gX21tX3Vu
cGFja2xvX3BzMih4MSwgeDMpOworKyAgICBiMzAgPSBfbW1fdW5wYWNraGlfcHMyKHgxLCB4Myk7
CisrCisrICAgIHg0ID0gX21tX3VucGFja2xvX3BzKGI0MSwgYjUxKTsKKysgICAgeDUgPSBfbW1f
dW5wYWNraGlfcHMoYjQxLCBiNTEpOworKyAgICB4NiA9IF9tbV91bnBhY2tsb19wcyhiNjEsIGI3
MSk7CisrICAgIHg3ID0gX21tX3VucGFja2hpX3BzKGI2MSwgYjcxKTsKKysgICAgYjQxID0gX21t
X3VucGFja2xvX3BzMih4NCwgeDYpOworKyAgICBiNTEgPSBfbW1fdW5wYWNraGlfcHMyKHg0LCB4
Nik7CisrICAgIGI2MSA9IF9tbV91bnBhY2tsb19wczIoeDUsIHg3KTsKKysgICAgYjcxID0gX21t
X3VucGFja2hpX3BzMih4NSwgeDcpOworKworKyAgICB4MCA9IF9tbV91bnBhY2tsb19wcyhiMDEs
IGIxMSk7CisrICAgIHgxID0gX21tX3VucGFja2hpX3BzKGIwMSwgYjExKTsKKysgICAgeDIgPSBf
bW1fdW5wYWNrbG9fcHMoYjIxLCBiMzEpOworKyAgICB4MyA9IF9tbV91bnBhY2toaV9wcyhiMjEs
IGIzMSk7CisrICAgIHg0ID0gX21tX3VucGFja2xvX3BzKGI0MCwgYjUwKTsKKysgICAgeDUgPSBf
bW1fdW5wYWNraGlfcHMoYjQwLCBiNTApOworKyAgICB4NiA9IF9tbV91bnBhY2tsb19wcyhiNjAs
IGI3MCk7CisrICAgIHg3ID0gX21tX3VucGFja2hpX3BzKGI2MCwgYjcwKTsKKysgICAgYjQwID0g
X21tX3VucGFja2xvX3BzMih4MCwgeDIpOworKyAgICBiNTAgPSBfbW1fdW5wYWNraGlfcHMyKHgw
LCB4Mik7CisrICAgIGI2MCA9IF9tbV91bnBhY2tsb19wczIoeDEsIHgzKTsKKysgICAgYjcwID0g
X21tX3VucGFja2hpX3BzMih4MSwgeDMpOworKyAgICBiMDEgPSBfbW1fdW5wYWNrbG9fcHMyKHg0
LCB4Nik7CisrICAgIGIxMSA9IF9tbV91bnBhY2toaV9wczIoeDQsIHg2KTsKKysgICAgYjIxID0g
X21tX3VucGFja2xvX3BzMih4NSwgeDcpOworKyAgICBiMzEgPSBfbW1fdW5wYWNraGlfcHMyKHg1
LCB4Nyk7CisrICAgIC8qIH19fSAqLworKworKyAgICBGRENUQ09MKGIwMCwgYjEwLCBiMjAsIGIz
MCwgYjQwLCBiNTAsIGI2MCwgYjcwKTsKKysgICAgRkRDVENPTChiMDEsIGIxMSwgYjIxLCBiMzEs
IGI0MSwgYjUxLCBiNjEsIGI3MSk7CisrCisrICAgIC8qIHJvdW5kLCBjb252ZXJ0IGJhY2sgdG8g
c2hvcnQgKi8KKysjZGVmaW5lIENUUyhuKSBcCisrICAgIGEjI24gPSBfbW1fcGFja3NfZXBpMzIo
X21tX2N2dHBzX2VwaTMyKGIjI24jIzApLCBfbW1fY3Z0cHNfZXBpMzIoYiMjbiMjMSkpOyBcCisr
ICAgIFZFQ19TVChibG9jayArIDggKiBuLCBhIyNuKQorKworKyAgICBDVFMoMCk7IENUUygxKTsg
Q1RTKDIpOyBDVFMoMyk7CisrICAgIENUUyg0KTsgQ1RTKDUpOyBDVFMoNik7IENUUyg3KTsKKysK
KysjdW5kZWYgQ1RTCisrfQorKworK2F2X2NvbGQgdm9pZCBmZl9mZGN0ZHNwX2luaXRfZTJrKEZE
Q1REU1BDb250ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaGlnaF9iaXRfZGVwdGgpCisreworKyAgICBpZiAo
IUUyS19CQVNFKGF2X2dldF9jcHVfZmxhZ3MoKSkpCisrICAgICAgICByZXR1cm47CisrCisrICAg
IC8vICFjaGVja2FzbQorKyAgICAvLyBsaWJhdmNvZGVjL3Rlc3RzL2RjdAorKworKyAgICBpZiAo
IWhpZ2hfYml0X2RlcHRoKSB7CisrICAgICAgICBpZiAoYXZjdHgtPmRjdF9hbGdvID09IEZGX0RD
VF9BVVRPIHx8CisrICAgICAgICAgICAgYXZjdHgtPmRjdF9hbGdvID09IEZGX0RDVF9BTFRJVkVD
KSB7CisrICAgICAgICAgICAgYy0+ZmRjdCA9IGZmX2ZkY3RfZTJrOworKyAgICAgICAgfQorKyAg
ICB9CisrfQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZTJrL2ZmdC5jIGIvbGliYXZjb2RlYy9l
MmsvZmZ0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi41YjU4MjAyCist
LS0gL2Rldi9udWxsCisrKysgYi9saWJhdmNvZGVjL2Uyay9mZnQuYworQEAgLTAsMCArMSwxMDQz
IEBACisrLyoKKysgKiBGRlQgdHJhbnNmb3JtCisrICogQ29weXJpZ2h0IChDKSAyMDIxIElseWEg
S3VyZHl1a292IDxqcGVncXNAZ21haWwuY29tPiBmb3IgQmFzZUFMVCwgTHRkCisrICogQ29weXJp
Z2h0IChjKSAyMDE0IFJvbmcgWWFuCisrICogQ29weXJpZ2h0IChjKSAyMDA5IExvcmVuIE1lcnJp
dHQKKysgKgorKyAqIFRoaXMgYWxnb3JpdGhtICh0aG91Z2ggbm90IGFueSBvZiB0aGUgaW1wbGVt
ZW50YXRpb24gZGV0YWlscykgaXMKKysgKiBiYXNlZCBvbiBsaWJkamJmZnQgYnkgRC4gSi4gQmVy
bnN0ZWluLgorKyAqCisrICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorKyAqCisrICog
RkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIEZGbXBlZyBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNB
CisrICovCisrCisrCisrI2luY2x1ZGUgImNvbmZpZy5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwv
Y3B1LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsvdXRpbF9lMmsuaCIKKysjaW5jbHVkZSAi
bGliYXZjb2RlYy9mZnQuaCIKKysjaW5jbHVkZSAibGliYXZjb2RlYy9mZnQtaW50ZXJuYWwuaCIK
KysjaW5jbHVkZSAiZmZ0LmgiCisrCisrI2RlZmluZSBfbW1fbWFkZF9wcyhhLCBiLCBjKSBfbW1f
YWRkX3BzKF9tbV9tdWxfcHMoYSwgYiksIGMpCisrI2RlZmluZSBfbW1fbXN1Yl9wcyhhLCBiLCBj
KSBfbW1fc3ViX3BzKF9tbV9tdWxfcHMoYSwgYiksIGMpCisrI2RlZmluZSBfbW1fbm1zdWJfcHMo
YSwgYiwgYykgX21tX3N1Yl9wcyhjLCBfbW1fbXVsX3BzKGEsIGIpKQorKworK3N0YXRpYyBhdl9h
bHdheXNfaW5saW5lCisrdm9pZCBwYXNzX2Uya19pbnRlcmxlYXZlKEZGVENvbXBsZXggKnosIGNv
bnN0IEZGVFNhbXBsZSAqd3JlLCB1bnNpZ25lZCBpbnQgbikKKyt7CisrICAgIGludCBpMSA9IG4g
KiA0LCBpMiA9IG4gKiA4LCBpMyA9IG4gKiAxMjsKKysgICAgRkZUU2FtcGxlICpvdXQgPSAoRkZU
U2FtcGxlKil6OworKyAgICBjb25zdCBGRlRTYW1wbGUgKndpbSA9IHdyZSArIG4gKiAyOworKyAg
ICB2ZWNfZiB2ejAsIHZ6bzEsIHZ6bzIsIHZ6bzM7CisrICAgIHZlY19mIHgwLCB4MSwgeDIsIHgz
OworKyAgICB2ZWNfZiB4NCwgeDUsIHg2LCB4NzsKKysgICAgdmVjX2YgeDgsIHg5LCB4MTAsIHgx
MTsKKysgICAgdmVjX2YgeDEyLCB4MTMsIHgxNCwgeDE1OworKyAgICB2ZWNfZiB4MTYsIHgxNywg
eDE4LCB4MTk7CisrICAgIHZlY19mIHgyMCwgeDIxLCB4MjIsIHgyMzsKKysgICAgdmVjX2Ygdnow
cGx1czEsIHZ6bzFwbHVzMSwgdnpvMnBsdXMxLCB2em8zcGx1czE7CisrICAgIHZlY19mIHkwLCB5
MSwgeTIsIHkzOworKyAgICB2ZWNfZiB5NCwgeTUsIHk4LCB5OTsKKysgICAgdmVjX2YgeTEwLCB5
MTMsIHkxNCwgeTE1OworKyAgICB2ZWNfZiB5MTYsIHkxNywgeTE4LCB5MTk7CisrICAgIHZlY19m
IHkyMCwgeTIxLCB5MjIsIHkyMzsKKysgICAgdmVjX2Ygd3IxLCB3aTEsIHdyMCwgd2kwOworKyAg
ICB2ZWNfZiB3cjIsIHdpMiwgd3IzLCB3aTM7CisrICAgIHZlY19mIHhtdWx3aTAsIHhtdWx3aTEs
IHltdWx3aTIsIHltdWx3aTM7CisrCisrICAgIG4gPSBuIC0gMjsKKysgICAgdnpvMiA9IF9tbV9s
b2FkdV9wcyhvdXQgKyBpMik7ICAvLyB6bzIuciAgem8yLmkgIHoobzIrMSkuciAgeihvMisxKS5p
CisrICAgIHZ6bzJwbHVzMSA9IF9tbV9sb2FkdV9wcyhvdXQgKyBpMiArIDQpOworKyAgICB2em8z
ID0gX21tX2xvYWR1X3BzKG91dCArIGkzKTsgIC8vIHpvMy5yICB6bzMuaSAgeihvMysxKS5yICB6
KG8zKzEpLmkKKysgICAgdnpvM3BsdXMxID0gX21tX2xvYWR1X3BzKG91dCArIGkzICsgNCk7Cisr
ICAgIHZ6MCA9IF9tbV9sb2FkdV9wcyhvdXQpOyAgICAvLyB6MC5yICB6MC5pICB6MS5yICB6MS5p
CisrICAgIHZ6MHBsdXMxID0gX21tX2xvYWR1X3BzKG91dCArIDQpOworKyAgICB2em8xID0gX21t
X2xvYWR1X3BzKG91dCArIGkxKTsgIC8vIHpvMS5yICB6bzEuaSAgeihvMSsxKS5yICB6KG8xKzEp
LmkKKysgICAgdnpvMXBsdXMxID0gX21tX2xvYWR1X3BzKG91dCArIGkxICsgNCk7CisrCisrICAg
IHgwID0gX21tX2FkZF9wcyh2em8yLCB2em8zKTsKKysgICAgeDEgPSBfbW1fc3ViX3BzKHZ6bzIs
IHZ6bzMpOworKyAgICB5MCA9IF9tbV9hZGRfcHModnpvMnBsdXMxLCB2em8zcGx1czEpOworKyAg
ICB5MSA9IF9tbV9zdWJfcHModnpvMnBsdXMxLCB2em8zcGx1czEpOworKworKyAgICB3cjEgPSBf
bW1fc2V0MV9wcyh3cmVbMV0pOworKyAgICB3aTEgPSBfbW1fc2V0MV9wcyh3aW1bLTFdKTsKKysg
ICAgd2kyID0gX21tX3NldDFfcHMod2ltWy0yXSk7CisrICAgIHdpMyA9IF9tbV9zZXQxX3BzKHdp
bVstM10pOworKyAgICB3cjIgPSBfbW1fc2V0MV9wcyh3cmVbMl0pOworKyAgICB3cjMgPSBfbW1f
c2V0MV9wcyh3cmVbM10pOworKworKyAgICB4MiA9IF9tbV91bnBhY2toaV9wcyh4MCwgeDEpOwor
KyAgICB4MyA9IF9tbV9zaHVmZmxlX3BzKHgyLCB4MiwgMHgxYik7CisrCisrICAgIHkyID0gX21t
X3VucGFja2xvX3BzKHkwLCB5MSk7CisrICAgIHkzID0gX21tX3VucGFja2hpX3BzKHkwLCB5MSk7
CisrICAgIHk0ID0gX21tX3NodWZmbGVfcHMoeTIsIHkyLCAweDFiKTsKKysgICAgeTUgPSBfbW1f
c2h1ZmZsZV9wcyh5MywgeTMsIDB4MWIpOworKworKyAgICB5bXVsd2kyID0gX21tX211bF9wcyh5
NCwgd2kyKTsKKysgICAgeW11bHdpMyA9IF9tbV9tdWxfcHMoeTUsIHdpMyk7CisrICAgIHg0ID0g
X21tX211bF9wcyh4Miwgd3IxKTsKKysgICAgeDUgPSBfbW1fbXVsX3BzKHgzLCB3aTEpOworKyAg
ICB5OCA9IF9tbV9tYWRkX3BzKHkyLCB3cjIsIHltdWx3aTIpOworKyAgICB5OSA9IF9tbV9tc3Vi
X3BzKHkyLCB3cjIsIHltdWx3aTIpOworKyAgICB4NiA9IF9tbV9hZGRfcHMoeDQsIHg1KTsKKysg
ICAgeDcgPSBfbW1fc3ViX3BzKHg0LCB4NSk7CisrICAgIHkxMyA9IF9tbV9tYWRkX3BzKHkzLCB3
cjMsIHltdWx3aTMpOworKyAgICB5MTQgPSBfbW1fbXN1Yl9wcyh5Mywgd3IzLCB5bXVsd2kzKTsK
KysKKysgICAgeDggPSBfbW1fc2h1ZmZsZV9wcyh4NiwgeDcsIDB4ZTQpOworKyAgICB5MTAgPSBf
bW1fc2h1ZmZsZV9wcyh5OCwgeTksIDB4ZTQpOworKyAgICB5MTUgPSBfbW1fc2h1ZmZsZV9wcyh5
MTMsIHkxNCwgMHhlNCk7CisrCisrICAgIHg5ID0gX21tX3NodWZmbGVfcHMoeDAsIHg4LCAweDg0
KTsKKysgICAgeDEwID0gX21tX3NodWZmbGVfcHMoeDEsIHg4LCAweDcxKTsKKysKKysgICAgeTE2
ID0gX21tX3NodWZmbGVfcHMoeTEwLCB5MTUsIDB4ODgpOworKyAgICB5MTcgPSBfbW1fc2h1ZmZs
ZV9wcyh5MTAsIHkxNSwgMHg3Nyk7CisrCisrICAgIHgxMSA9IF9tbV9hZGRfcHModnowLCB4OSk7
CisrICAgIHgxMiA9IF9tbV9zdWJfcHModnowLCB4OSk7CisrICAgIHgxMyA9IF9tbV9hZGRfcHMo
dnpvMSwgeDEwKTsKKysgICAgeDE0ID0gX21tX3N1Yl9wcyh2em8xLCB4MTApOworKworKyAgICB5
MTggPSBfbW1fYWRkX3BzKHZ6MHBsdXMxLCB5MTYpOworKyAgICB5MTkgPSBfbW1fc3ViX3BzKHZ6
MHBsdXMxLCB5MTYpOworKyAgICB5MjAgPSBfbW1fYWRkX3BzKHZ6bzFwbHVzMSwgeTE3KTsKKysg
ICAgeTIxID0gX21tX3N1Yl9wcyh2em8xcGx1czEsIHkxNyk7CisrCisrICAgIHgxNSA9IF9tbV9i
bGVuZF9wcyh4MTMsIHgxNCwgMHhhKTsKKysgICAgeDE2ID0gX21tX2JsZW5kX3BzKHgxNCwgeDEz
LCAweGEpOworKyAgICB5MjIgPSBfbW1fYmxlbmRfcHMoeTIwLCB5MjEsIDB4YSk7CisrICAgIHky
MyA9IF9tbV9ibGVuZF9wcyh5MjEsIHkyMCwgMHhhKTsKKysKKysgICAgX21tX3N0b3JldV9wcyhv
dXQsIHgxMSk7CisrICAgIF9tbV9zdG9yZXVfcHMob3V0ICsgNCwgeTE4KTsKKysgICAgX21tX3N0
b3JldV9wcyhvdXQgKyBpMSwgeDE1KTsKKysgICAgX21tX3N0b3JldV9wcyhvdXQgKyBpMSArIDQs
IHkyMik7CisrICAgIF9tbV9zdG9yZXVfcHMob3V0ICsgaTIsIHgxMik7CisrICAgIF9tbV9zdG9y
ZXVfcHMob3V0ICsgaTIgKyA0LCB5MTkpOworKyAgICBfbW1fc3RvcmV1X3BzKG91dCArIGkzLCB4
MTYpOworKyAgICBfbW1fc3RvcmV1X3BzKG91dCArIGkzICsgNCwgeTIzKTsKKysKKysgICAgZG8g
eworKyAgICAgICAgb3V0ICs9IDg7CisrICAgICAgICB3cmUgKz0gNDsKKysgICAgICAgIHdpbSAt
PSA0OworKyAgICAgICAgd3IwID0gX21tX3NldDFfcHMod3JlWzBdKTsKKysgICAgICAgIHdyMSA9
IF9tbV9zZXQxX3BzKHdyZVsxXSk7CisrICAgICAgICB3aTAgPSBfbW1fc2V0MV9wcyh3aW1bMF0p
OworKyAgICAgICAgd2kxID0gX21tX3NldDFfcHMod2ltWy0xXSk7CisrCisrICAgICAgICB3cjIg
PSBfbW1fc2V0MV9wcyh3cmVbMl0pOworKyAgICAgICAgd3IzID0gX21tX3NldDFfcHMod3JlWzNd
KTsKKysgICAgICAgIHdpMiA9IF9tbV9zZXQxX3BzKHdpbVstMl0pOworKyAgICAgICAgd2kzID0g
X21tX3NldDFfcHMod2ltWy0zXSk7CisrCisrICAgICAgICB2em8yID0gX21tX2xvYWR1X3BzKG91
dCArIGkyKTsgIC8vIHpvMi5yICB6bzIuaSAgeihvMisxKS5yICB6KG8yKzEpLmkKKysgICAgICAg
IHZ6bzJwbHVzMSA9IF9tbV9sb2FkdV9wcyhvdXQgKyBpMiArIDQpOworKyAgICAgICAgdnpvMyA9
IF9tbV9sb2FkdV9wcyhvdXQgKyBpMyk7ICAvLyB6bzMuciAgem8zLmkgIHoobzMrMSkuciAgeihv
MysxKS5pCisrICAgICAgICB2em8zcGx1czEgPSBfbW1fbG9hZHVfcHMob3V0ICsgaTMgKyA0KTsK
KysgICAgICAgIHZ6MCA9IF9tbV9sb2FkdV9wcyhvdXQgKyAwKTsgICAgLy8gejAuciAgejAuaSAg
ejEuciAgejEuaQorKyAgICAgICAgdnowcGx1czEgPSBfbW1fbG9hZHVfcHMob3V0ICsgNCk7Cisr
ICAgICAgICB2em8xID0gX21tX2xvYWR1X3BzKG91dCArIGkxKTsgLy8gem8xLnIgIHpvMS5pICB6
KG8xKzEpLnIgIHoobzErMSkuaQorKyAgICAgICAgdnpvMXBsdXMxID0gX21tX2xvYWR1X3BzKG91
dCArIGkxICsgNCk7CisrCisrICAgICAgICB4MCA9IF9tbV9hZGRfcHModnpvMiwgdnpvMyk7Cisr
ICAgICAgICB4MSA9IF9tbV9zdWJfcHModnpvMiwgdnpvMyk7CisrCisrICAgICAgICB5MCA9IF9t
bV9hZGRfcHModnpvMnBsdXMxLCB2em8zcGx1czEpOworKyAgICAgICAgeTEgPSBfbW1fc3ViX3Bz
KHZ6bzJwbHVzMSwgdnpvM3BsdXMxKTsKKysKKysgICAgICAgIHgyID0gX21tX3VucGFja2xvX3Bz
KHgwLCB4MSk7CisrICAgICAgICB4MyA9IF9tbV91bnBhY2toaV9wcyh4MCwgeDEpOworKyAgICAg
ICAgeDQgPSBfbW1fc2h1ZmZsZV9wcyh4MiwgeDIsIDB4MWIpOworKyAgICAgICAgeDUgPSBfbW1f
c2h1ZmZsZV9wcyh4MywgeDMsIDB4MWIpOworKworKyAgICAgICAgeTIgPSBfbW1fdW5wYWNrbG9f
cHMoeTAsIHkxKTsKKysgICAgICAgIHkzID0gX21tX3VucGFja2hpX3BzKHkwLCB5MSk7CisrICAg
ICAgICB5NCA9IF9tbV9zaHVmZmxlX3BzKHkyLCB5MiwgMHgxYik7CisrICAgICAgICB5NSA9IF9t
bV9zaHVmZmxlX3BzKHkzLCB5MywgMHgxYik7CisrCisrICAgICAgICB4bXVsd2kwID0gX21tX211
bF9wcyh4NCwgd2kwKTsKKysgICAgICAgIHhtdWx3aTEgPSBfbW1fbXVsX3BzKHg1LCB3aTEpOwor
KyAgICAgICAgeDggPSBfbW1fbWFkZF9wcyh4Miwgd3IwLCB4bXVsd2kwKTsKKysgICAgICAgIHg5
ID0gX21tX21zdWJfcHMoeDIsIHdyMCwgeG11bHdpMCk7CisrCisrICAgICAgICB5bXVsd2kyID0g
X21tX211bF9wcyh5NCwgd2kyKTsKKysgICAgICAgIHltdWx3aTMgPSBfbW1fbXVsX3BzKHk1LCB3
aTMpOworKyAgICAgICAgeDEzID0gX21tX21hZGRfcHMoeDMsIHdyMSwgeG11bHdpMSk7CisrICAg
ICAgICB4MTQgPSBfbW1fbXN1Yl9wcyh4Mywgd3IxLCB4bXVsd2kxKTsKKysKKysgICAgICAgIHk4
ID0gX21tX21hZGRfcHMoeTIsIHdyMiwgeW11bHdpMik7CisrICAgICAgICB5OSA9IF9tbV9tc3Vi
X3BzKHkyLCB3cjIsIHltdWx3aTIpOworKyAgICAgICAgeTEzID0gX21tX21hZGRfcHMoeTMsIHdy
MywgeW11bHdpMyk7CisrICAgICAgICB5MTQgPSBfbW1fbXN1Yl9wcyh5Mywgd3IzLCB5bXVsd2kz
KTsKKysKKysgICAgICAgIHgxMCA9IF9tbV9zaHVmZmxlX3BzKHg4LCB4OSwgMHhlNCk7CisrICAg
ICAgICB4MTUgPSBfbW1fc2h1ZmZsZV9wcyh4MTMsIHgxNCwgMHhlNCk7CisrCisrICAgICAgICB5
MTAgPSBfbW1fc2h1ZmZsZV9wcyh5OCwgeTksIDB4ZTQpOworKyAgICAgICAgeTE1ID0gX21tX3No
dWZmbGVfcHMoeTEzLCB5MTQsIDB4ZTQpOworKworKyAgICAgICAgeDE2ID0gX21tX3NodWZmbGVf
cHMoeDEwLCB4MTUsIDB4ODgpOworKyAgICAgICAgeDE3ID0gX21tX3NodWZmbGVfcHMoeDEwLCB4
MTUsIDB4NzcpOworKworKyAgICAgICAgeTE2ID0gX21tX3NodWZmbGVfcHMoeTEwLCB5MTUsIDB4
ODgpOworKyAgICAgICAgeTE3ID0gX21tX3NodWZmbGVfcHMoeTEwLCB5MTUsIDB4NzcpOworKwor
KyAgICAgICAgeDE4ID0gX21tX2FkZF9wcyh2ejAsIHgxNik7CisrICAgICAgICB4MTkgPSBfbW1f
c3ViX3BzKHZ6MCwgeDE2KTsKKysgICAgICAgIHgyMCA9IF9tbV9hZGRfcHModnpvMSwgeDE3KTsK
KysgICAgICAgIHgyMSA9IF9tbV9zdWJfcHModnpvMSwgeDE3KTsKKysKKysgICAgICAgIHkxOCA9
IF9tbV9hZGRfcHModnowcGx1czEsIHkxNik7CisrICAgICAgICB5MTkgPSBfbW1fc3ViX3BzKHZ6
MHBsdXMxLCB5MTYpOworKyAgICAgICAgeTIwID0gX21tX2FkZF9wcyh2em8xcGx1czEsIHkxNyk7
CisrICAgICAgICB5MjEgPSBfbW1fc3ViX3BzKHZ6bzFwbHVzMSwgeTE3KTsKKysKKysgICAgICAg
IHgyMiA9IF9tbV9ibGVuZF9wcyh4MjAsIHgyMSwgMHhhKTsKKysgICAgICAgIHgyMyA9IF9tbV9i
bGVuZF9wcyh4MjEsIHgyMCwgMHhhKTsKKysgICAgICAgIHkyMiA9IF9tbV9ibGVuZF9wcyh5MjAs
IHkyMSwgMHhhKTsKKysgICAgICAgIHkyMyA9IF9tbV9ibGVuZF9wcyh5MjEsIHkyMCwgMHhhKTsK
KysKKysgICAgICAgIF9tbV9zdG9yZXVfcHMob3V0LCB4MTgpOworKyAgICAgICAgX21tX3N0b3Jl
dV9wcyhvdXQgKyA0LCB5MTgpOworKyAgICAgICAgX21tX3N0b3JldV9wcyhvdXQgKyBpMSwgeDIy
KTsKKysgICAgICAgIF9tbV9zdG9yZXVfcHMob3V0ICsgaTEgKyA0LCB5MjIpOworKyAgICAgICAg
X21tX3N0b3JldV9wcyhvdXQgKyBpMiwgeDE5KTsKKysgICAgICAgIF9tbV9zdG9yZXVfcHMob3V0
ICsgaTIgKyA0LCB5MTkpOworKyAgICAgICAgX21tX3N0b3JldV9wcyhvdXQgKyBpMywgeDIzKTsK
KysgICAgICAgIF9tbV9zdG9yZXVfcHMob3V0ICsgaTMgKyA0LCB5MjMpOworKyAgICB9IHdoaWxl
IChuIC09IDIpOworK30KKysKKytzdGF0aWMgYXZfYWx3YXlzX2lubGluZQorK3ZvaWQgZmZ0Ml9l
MmtfaW50ZXJsZWF2ZShGRlRDb21wbGV4ICp6KQorK3sKKysjaWYgMQorKyAgICB2ZWNfZiBhLCBi
LCBjOworKyAgICBmbG9hdCAqb3V0ID0gKGZsb2F0Kil6OworKyAgICB2ZWNfZiBzaWduID0gX21t
X2Nhc3RzaTEyOF9wcyhfbW1fc2V0MV9lcGkzMigtMSA8PCAzMSkpOworKworKyAgICBhID0gX21t
X2xvYWR1X3BzKG91dCk7CisrICAgIGIgPSBfbW1fdW5wYWNrbG9fcHMyKGEsIGEpOworKyAgICBj
ID0gX21tX3VucGFja2hpX3BzMihhLCBfbW1feG9yX3BzKGEsIHNpZ24pKTsKKysgICAgYSA9IF9t
bV9hZGRfcHMoYiwgYyk7CisrICAgIF9tbV9zdG9yZXVfcHMob3V0LCBhKTsKKysjZWxzZQorKyAg
ICBGRlRTYW1wbGUgcjAsIGkwLCByMSwgaTE7CisrICAgIHIwID0gelswXS5yZTsgaTAgPSB6WzBd
LmltOworKyAgICByMSA9IHpbMV0ucmU7IGkxID0gelsxXS5pbTsKKysgICAgelswXS5yZSA9IHIw
ICsgcjE7CisrICAgIHpbMF0uaW0gPSBpMCArIGkxOworKyAgICB6WzFdLnJlID0gcjAgLSByMTsK
KysgICAgelsxXS5pbSA9IGkwIC0gaTE7CisrI2VuZGlmCisrfQorKworK3N0YXRpYyBhdl9hbHdh
eXNfaW5saW5lCisrdm9pZCBmZnQ0X2Uya19pbnRlcmxlYXZlKEZGVENvbXBsZXggKnopCisrewor
KyAgICB2ZWNfZiBhLCBiLCBjLCBkOworKyAgICBmbG9hdCAqb3V0ID0gKGZsb2F0Kil6OworKyAg
ICBhID0gX21tX2xvYWR1X3BzKG91dCk7CisrICAgIGIgPSBfbW1fbG9hZHVfcHMob3V0ICsgNCk7
CisrCisrICAgIGMgPSBfbW1fc2h1ZmZsZV9wcyhhLCBiLCAweDY0KTsKKysgICAgZCA9IF9tbV9z
aHVmZmxlX3BzKGEsIGIsIDB4Y2UpOworKyAgICBhID0gX21tX2FkZF9wcyhjLCBkKTsKKysgICAg
YiA9IF9tbV9zdWJfcHMoYywgZCk7CisrCisrICAgIGMgPSBfbW1fdW5wYWNrbG9fcHMyKGEsIGIp
OworKyAgICBkID0gX21tX3NodWZmbGVfcHMoYSwgYiwgMHhiZSk7CisrCisrICAgIGEgPSBfbW1f
YWRkX3BzKGMsIGQpOworKyAgICBiID0gX21tX3N1Yl9wcyhjLCBkKTsKKysgICAgX21tX3N0b3Jl
dV9wcyhvdXQsIGEpOworKyAgICBfbW1fc3RvcmV1X3BzKG91dCArIDQsIGIpOworK30KKysKKytz
dGF0aWMgYXZfYWx3YXlzX2lubGluZQorK3ZvaWQgZmZ0OF9lMmtfaW50ZXJsZWF2ZShGRlRDb21w
bGV4ICp6KQorK3sKKysgICAgdmVjX2YgdnowLCB2ejEsIHZ6MiwgdnozOworKyAgICB2ZWNfZiB4
MCwgeDEsIHgyLCB4MzsKKysgICAgdmVjX2YgeDQsIHg1LCB4NiwgeDc7CisrICAgIHZlY19mIHg4
LCB4OSwgeDEwLCB4MTE7CisrICAgIHZlY19mIHgxMiwgeDEzLCB4MTQsIHgxNTsKKysgICAgdmVj
X2YgeDE2LCB4MTcsIHgxOCwgeDE5OworKyAgICB2ZWNfZiB4MjAsIHgyMSwgeDIyLCB4MjM7Cisr
ICAgIHZlY19mIHgyNCwgeDI1LCB4MjYsIHgyNzsKKysgICAgdmVjX2YgeDI4LCB4MjksIHgzMCwg
eDMxOworKyAgICB2ZWNfZiB4MzIsIHgzMywgeDM0OworKworKyAgICBmbG9hdCAqb3V0ID0gKGZs
b2F0Kil6OworKyAgICB2ZWNfZiB2YzEgPSBfbW1fc2V0MV9wcyhzcXJ0aGFsZik7CisrCisrICAg
IHZ6MCA9IF9tbV9sb2FkdV9wcyhvdXQpOworKyAgICB2ejEgPSBfbW1fbG9hZHVfcHMob3V0ICsg
NCk7CisrICAgIHZ6MiA9IF9tbV9sb2FkdV9wcyhvdXQgKyA4KTsKKysgICAgdnozID0gX21tX2xv
YWR1X3BzKG91dCArIDEyKTsKKysKKysgICAgeDAgPSBfbW1fc2h1ZmZsZV9wcyh2ejAsIHZ6MSwg
MHg2NCk7CisrICAgIHgxID0gX21tX3NodWZmbGVfcHModnowLCB2ejEsIDB4Y2UpOworKyAgICB4
MiA9IF9tbV9zaHVmZmxlX3BzKHZ6MiwgdnozLCAweDQ2KTsKKysgICAgeDMgPSBfbW1fc2h1ZmZs
ZV9wcyh2ejIsIHZ6MywgMHhlYyk7CisrCisrICAgIHg0ID0gX21tX2FkZF9wcyh4MCwgeDEpOwor
KyAgICB4NSA9IF9tbV9zdWJfcHMoeDAsIHgxKTsKKysgICAgeDYgPSBfbW1fYWRkX3BzKHgyLCB4
Myk7CisrICAgIHg3ID0gX21tX3N1Yl9wcyh4MiwgeDMpOworKworKyAgICB4OCA9IF9tbV91bnBh
Y2tsb19wczIoeDQsIHg1KTsKKysgICAgeDkgPSBfbW1fc2h1ZmZsZV9wcyh4NCwgeDUsIDB4YmUp
OworKyAgICB4MTAgPSBfbW1fc2h1ZmZsZV9wcyh4NiwgeDcsIDB4NjYpOworKyAgICB4MTEgPSBf
bW1fc2h1ZmZsZV9wcyh4NiwgeDcsIDB4Y2MpOworKworKyAgICB4MTIgPSBfbW1fYWRkX3BzKHg4
LCB4OSk7CisrICAgIHgxMyA9IF9tbV9zdWJfcHMoeDgsIHg5KTsKKysgICAgeDE0ID0gX21tX2Fk
ZF9wcyh4MTAsIHgxMSk7CisrICAgIHgxNSA9IF9tbV9zdWJfcHMoeDEwLCB4MTEpOworKyAgICB4
MTYgPSBfbW1fdW5wYWNrbG9fcHMoeDEyLCB4MTMpOworKyAgICB4MTcgPSBfbW1fdW5wYWNrbG9f
cHMoeDE0LCB4MTUpOworKyAgICB4MTggPSBfbW1fc2h1ZmZsZV9wcyh4MTcsIHgxNywgMHg2Yyk7
CisrICAgIHgxOSA9IF9tbV9hZGRfcHMoeDE2LCB4MTgpOyAvLyB6MC5yICB6Mi5yICB6MC5pICB6
Mi5pCisrICAgIHgyMCA9IF9tbV9zdWJfcHMoeDE2LCB4MTgpOyAvLyB6NC5yICB6Ni5yICB6NC5p
ICB6Ni5pCisrCisrICAgIHgyMSA9IF9tbV91bnBhY2toaV9wcyh4MTIsIHgxMyk7CisrICAgIHgy
MiA9IF9tbV91bnBhY2toaV9wcyh4MTQsIHgxNSk7CisrICAgIHgyMyA9IF9tbV91bnBhY2toaV9w
czIoeDIyLCB4MjIpOworKyAgICB4MjQgPSBfbW1fYWRkX3BzKHgyMiwgeDIzKTsKKysgICAgeDI1
ID0gX21tX3N1Yl9wcyh4MjIsIHgyMyk7CisrCisrICAgIHgyNiA9IF9tbV91bnBhY2tsb19wczIo
eDI0LCB4MjUpOworKyAgICB4MjYgPSBfbW1fbXVsX3BzKF9tbV9zaHVmZmxlX3BzKHgyNiwgeDI2
LCAweDhkKSwgdmMxKTsgLy8gMSxzMSwwLHMwCisrCisrICAgIHgyNyA9IF9tbV9hZGRfcHMoeDIx
LCB4MjYpOyAvLyB6MS5yICB6Ny5yICB6MS5pICB6My5pCisrICAgIHgyOCA9IF9tbV9zdWJfcHMo
eDIxLCB4MjYpOyAvLyB6NS5yICB6My5yICB6NS5pICB6Ny5pCisrCisrICAgIHgyOSA9IF9tbV9z
aHVmZmxlX3BzKHgxOSwgeDI3LCAweDg4KTsgLy8gejAuciAgejAuaSAgejEuciAgejEuaQorKyAg
ICB4MzAgPSBfbW1fc2h1ZmZsZV9wcyh4MTksIHgyNywgMHhkZCk7IC8vIHoyLnIgIHoyLmkgIHo3
LnIgIHozLmkKKysgICAgeDMxID0gX21tX3NodWZmbGVfcHMoeDIwLCB4MjgsIDB4ODgpOyAvLyB6
NC5yICB6NC5pICB6NS5yICB6NS5pCisrICAgIHgzMiA9IF9tbV9zaHVmZmxlX3BzKHgyMCwgeDI4
LCAweGRkKTsgLy8gejYuciAgejYuaSAgejMuciAgejcuaQorKyAgICB4MzMgPSBfbW1fYmxlbmRf
cHMoeDMwLCB4MzIsIDB4NCk7IC8vIHoyLnIgIHoyLmkgIHozLnIgIHozLmkKKysgICAgeDM0ID0g
X21tX2JsZW5kX3BzKHgzMiwgeDMwLCAweDQpOyAvLyB6Ni5yICB6Ni5pICB6Ny5yICB6Ny5pCisr
CisrICAgIF9tbV9zdG9yZXVfcHMob3V0LCB4MjkpOworKyAgICBfbW1fc3RvcmV1X3BzKG91dCAr
IDQsIHgzMyk7CisrICAgIF9tbV9zdG9yZXVfcHMob3V0ICsgOCwgeDMxKTsKKysgICAgX21tX3N0
b3JldV9wcyhvdXQgKyAxMiwgeDM0KTsKKyt9CisrCisrc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUK
Kyt2b2lkIGZmdDE2X2Uya19pbnRlcmxlYXZlKEZGVENvbXBsZXggKnopCisreworKyAgICBmbG9h
dCAqb3V0ID0gKGZsb2F0Kil6OworKyAgICB2ZWNfZiB2YzAgPSBfbW1fc2V0MV9wcyhzcXJ0aGFs
Zik7CisrICAgIHZlY19mIHZjMSA9IF9tbV9zZXQxX3BzKGZmX2Nvc18xNlsxXSk7CisrICAgIHZl
Y19mIHZjMiA9IF9tbV9zZXQxX3BzKGZmX2Nvc18xNlszXSk7CisrICAgIHZlY19mIHZ6MCwgdnox
LCB2ejIsIHZ6MzsKKysgICAgdmVjX2Ygdno0LCB2ejUsIHZ6Niwgdno3OworKyAgICB2ZWNfZiB4
MCwgeDEsIHgyLCB4MzsKKysgICAgdmVjX2YgeDQsIHg1LCB4NiwgeDc7CisrICAgIHZlY19mIHg4
LCB4OSwgeDEwLCB4MTE7CisrICAgIHZlY19mIHgxMiwgeDEzLCB4MTQsIHgxNTsKKysgICAgdmVj
X2YgeDE2LCB4MTcsIHgxOCwgeDE5OworKyAgICB2ZWNfZiB4MjAsIHgyMSwgeDIyLCB4MjM7Cisr
ICAgIHZlY19mIHgyNCwgeDI1LCB4MjYsIHgyNzsKKysgICAgdmVjX2YgeDI4LCB4MjksIHgzMCwg
eDMxOworKyAgICB2ZWNfZiB4MzIsIHgzMywgeDM0LCB4MzU7CisrICAgIHZlY19mIHgzNiwgeDM3
LCB4MzgsIHgzOTsKKysgICAgdmVjX2YgeDQwLCB4NDEsIHg0MiwgeDQzOworKyAgICB2ZWNfZiB4
NDQsIHg0NSwgeDQ2LCB4NDc7CisrICAgIHZlY19mIHg0OCwgeDQ5LCB4NTAsIHg1MTsKKysgICAg
dmVjX2YgeDUyLCB4NTMsIHg1NCwgeDU1OworKyAgICB2ZWNfZiB4NTYsIHg1NywgeDU4LCB4NTk7
CisrICAgIHZlY19mIHg2MCwgeDYxLCB4NjIsIHg2MzsKKysgICAgdmVjX2YgeDY0LCB4NjUsIHg2
NiwgeDY3OworKyAgICB2ZWNfZiB4NjgsIHg2OSwgeDcwLCB4NzE7CisrICAgIHZlY19mIHg3Miwg
eDczLCB4NzQsIHg3NTsKKysgICAgdmVjX2YgeDc2LCB4NzcsIHg3OCwgeDc5OworKyAgICB2ZWNf
ZiB4ODAsIHg4MSwgeDgyLCB4ODM7CisrICAgIHZlY19mIHg4NCwgeDg1LCB4ODY7CisrCisrICAg
IHZ6MCA9IF9tbV9sb2FkdV9wcyhvdXQpOworKyAgICB2ejEgPSBfbW1fbG9hZHVfcHMob3V0ICsg
NCk7CisrICAgIHZ6MiA9IF9tbV9sb2FkdV9wcyhvdXQgKyA4KTsKKysgICAgdnozID0gX21tX2xv
YWR1X3BzKG91dCArIDEyKTsKKysgICAgdno0ID0gX21tX2xvYWR1X3BzKG91dCArIDE2KTsKKysg
ICAgdno1ID0gX21tX2xvYWR1X3BzKG91dCArIDIwKTsKKysgICAgdno2ID0gX21tX2xvYWR1X3Bz
KG91dCArIDI0KTsKKysgICAgdno3ID0gX21tX2xvYWR1X3BzKG91dCArIDI4KTsKKysKKysgICAg
eDAgPSBfbW1fc2h1ZmZsZV9wcyh2ejAsIHZ6MSwgMHg2NCk7CisrICAgIHgxID0gX21tX3NodWZm
bGVfcHModnowLCB2ejEsIDB4Y2UpOworKyAgICB4MiA9IF9tbV91bnBhY2tsb19wczIodnoyLCB2
ejMpOworKyAgICB4MyA9IF9tbV91bnBhY2toaV9wczIodnoyLCB2ejMpOworKworKyAgICB4NCA9
IF9tbV9zaHVmZmxlX3BzKHZ6NCwgdno1LCAweDY0KTsKKysgICAgeDUgPSBfbW1fc2h1ZmZsZV9w
cyh2ejQsIHZ6NSwgMHhjZSk7CisrICAgIHg2ID0gX21tX3NodWZmbGVfcHModno2LCB2ejcsIDB4
NjQpOworKyAgICB4NyA9IF9tbV9zaHVmZmxlX3BzKHZ6Niwgdno3LCAweGNlKTsKKysKKysgICAg
eDggPSBfbW1fYWRkX3BzKHgwLCB4MSk7CisrICAgIHg5ID0gX21tX3N1Yl9wcyh4MCwgeDEpOwor
KyAgICB4MTAgPSBfbW1fYWRkX3BzKHgyLCB4Myk7CisrICAgIHgxMSA9IF9tbV9zdWJfcHMoeDIs
IHgzKTsKKysKKysgICAgeDEyID0gX21tX2FkZF9wcyh4NCwgeDUpOworKyAgICB4MTMgPSBfbW1f
c3ViX3BzKHg0LCB4NSk7CisrICAgIHgxNCA9IF9tbV9hZGRfcHMoeDYsIHg3KTsKKysgICAgeDE1
ID0gX21tX3N1Yl9wcyh4NiwgeDcpOworKworKyAgICB4MTYgPSBfbW1fdW5wYWNrbG9fcHMyKHg4
LCB4OSk7CisrICAgIHgxNyA9IF9tbV9zaHVmZmxlX3BzKHg4LCB4OSwgMHhiZSk7CisrICAgIHgx
OCA9IF9tbV9zaHVmZmxlX3BzKHgxMCwgeDExLCAweDk2KTsKKysgICAgeDE5ID0gX21tX3NodWZm
bGVfcHMoeDEwLCB4MTEsIDB4Y2MpOworKyAgICB4MjAgPSBfbW1fdW5wYWNrbG9fcHMyKHgxMiwg
eDE0KTsKKysgICAgeDIxID0gX21tX3VucGFja2hpX3BzMih4MTIsIHgxNCk7CisrICAgIHgyMiA9
IF9tbV91bnBhY2tsb19wczIoeDEzLCB4MTUpOworKyAgICB4MjMgPSBfbW1fc2h1ZmZsZV9wcyh4
MTMsIHgxNSwgMHhiYik7CisrCisrICAgIHgyNCA9IF9tbV9hZGRfcHMoeDE2LCB4MTcpOworKyAg
ICB4MjUgPSBfbW1fc3ViX3BzKHgxNiwgeDE3KTsKKysgICAgeDI2ID0gX21tX2FkZF9wcyh4MTgs
IHgxOSk7CisrICAgIHgyNyA9IF9tbV9zdWJfcHMoeDE4LCB4MTkpOworKyAgICB4MjggPSBfbW1f
YWRkX3BzKHgyMCwgeDIxKTsKKysgICAgeDI5ID0gX21tX3N1Yl9wcyh4MjAsIHgyMSk7CisrICAg
IHgzMCA9IF9tbV9hZGRfcHMoeDIyLCB4MjMpOworKyAgICB4MzEgPSBfbW1fc3ViX3BzKHgyMiwg
eDIzKTsKKysKKysgICAgeDMyID0gX21tX2FkZF9wcyh4MjQsIHgyNik7CisrICAgIHgzMyA9IF9t
bV9zdWJfcHMoeDI0LCB4MjYpOworKyAgICB4MzQgPSBfbW1fdW5wYWNrbG9fcHMyKHgzMiwgeDMz
KTsKKysKKysgICAgeDM1ID0gX21tX3NodWZmbGVfcHMoeDI4LCB4MjksIDB4OTYpOworKyAgICB4
MzYgPSBfbW1fc2h1ZmZsZV9wcyh4MjgsIHgyOSwgMHhjYyk7CisrICAgIHgzNyA9IF9tbV9hZGRf
cHMoeDM1LCB4MzYpOworKyAgICB4MzggPSBfbW1fc3ViX3BzKHgzNSwgeDM2KTsKKysgICAgeDM5
ID0gX21tX3NodWZmbGVfcHMoeDM3LCB4MzgsIDB4MTQpOworKworKyAgICB4NDAgPSBfbW1fc2h1
ZmZsZV9wcyh4MjcsIHgzOCwgMHhlYik7CisrICAgIHg0MSA9IF9tbV9zaHVmZmxlX3BzKHgyNiwg
eDM3LCAweGJlKTsKKysgICAgeDQyID0gX21tX2FkZF9wcyh4NDAsIHg0MSk7CisrICAgIHg0MyA9
IF9tbV9zdWJfcHMoeDQwLCB4NDEpOworKyAgICB4NDQgPSBfbW1fbXVsX3BzKHg0MiwgdmMwKTsK
KysgICAgeDQ1ID0gX21tX211bF9wcyh4NDMsIHZjMCk7CisrCisrICAgIHg0NiA9IF9tbV9hZGRf
cHMoeDM0LCB4MzkpOyAgLy8gejAuciAgejAuaSAgejQuciAgejQuaQorKyAgICB4NDcgPSBfbW1f
c3ViX3BzKHgzNCwgeDM5KTsgIC8vIHo4LnIgIHo4LmkgIHoxMi5yICB6MTIuaQorKworKyAgICB4
NDggPSBfbW1fc2h1ZmZsZV9wcyh4MzAsIHgzMSwgMHg5Nik7CisrICAgIHg0OSA9IF9tbV9zaHVm
ZmxlX3BzKHgzMCwgeDMxLCAweDNjKTsKKysgICAgeDUwID0gX21tX2FkZF9wcyh4NDgsIHg0OSk7
CisrICAgIHg1MSA9IF9tbV9zdWJfcHMoeDQ4LCB4NDkpOworKyAgICB4NTIgPSBfbW1fbXVsX3Bz
KHg1MCwgdmMxKTsKKysgICAgeDUzID0gX21tX211bF9wcyh4NTAsIHZjMik7CisrICAgIHg1NCA9
IF9tbV9tdWxfcHMoeDUxLCB2YzEpOworKyAgICB4NTUgPSBfbW1fbXVsX3BzKHg1MSwgdmMyKTsK
KysKKysgICAgeDU2ID0gX21tX3VucGFja2hpX3BzMih4MjQsIHgyNSk7CisrICAgIHg1NyA9IF9t
bV9zaHVmZmxlX3BzKHg0NCwgeDQ1LCAweDE0KTsKKysgICAgeDU4ID0gX21tX2FkZF9wcyh4NTYs
IHg1Nyk7CisrICAgIHg1OSA9IF9tbV9zdWJfcHMoeDU2LCB4NTcpOworKworKyAgICB4NjAgPSBf
bW1fc2h1ZmZsZV9wcyh4NTQsIHg1NCwgMHhiMSk7CisrICAgIHg2MSA9IF9tbV9zaHVmZmxlX3Bz
KHg1NSwgeDU1LCAweGIxKTsKKysgICAgeDYyID0gX21tX2FkZF9wcyh4NTIsIHg2MSk7CisrICAg
IHg2MyA9IF9tbV9zdWJfcHMoeDUyLCB4NjEpOworKyAgICB4NjQgPSBfbW1fYWRkX3BzKHg2MCwg
eDUzKTsKKysgICAgeDY1ID0gX21tX3N1Yl9wcyh4NjAsIHg1Myk7CisrICAgIHg2NiA9IF9tbV9z
aHVmZmxlX3BzKHg2MiwgeDY0LCAweGI0KTsKKysgICAgeDY3ID0gX21tX3NodWZmbGVfcHMoeDY1
LCB4NjMsIDB4YjQpOworKworKyAgICB4NjggPSBfbW1fYWRkX3BzKHg1OCwgeDY2KTsgLy8gejEu
ciAgICB6MS5pICB6My5yICAgIHozLmkKKysgICAgeDY5ID0gX21tX3N1Yl9wcyh4NTgsIHg2Nik7
IC8vIHo5LnIgICAgejkuaSAgejExLnIgIHoxMS5pCisrICAgIHg3MCA9IF9tbV9hZGRfcHMoeDU5
LCB4NjcpOyAvLyB6NS5yICAgIHo1LmkgIHoxNS5yICB6MTUuaQorKyAgICB4NzEgPSBfbW1fc3Vi
X3BzKHg1OSwgeDY3KTsgLy8gejEzLnIgIHoxMy5pIHo3LnIgICB6Ny5pCisrCisrICAgIHg3MiA9
IF9tbV9zaHVmZmxlX3BzKHgyNywgeDI3LCAweGUxKTsKKysgICAgeDczID0gX21tX2FkZF9wcyh4
MjUsIHg3Mik7CisrICAgIHg3NCA9IF9tbV9zdWJfcHMoeDI1LCB4NzIpOworKyAgICB4NzUgPSBf
bW1fdW5wYWNrbG9fcHMyKHg3MywgeDc0KTsKKysgICAgeDc2ID0gX21tX3NodWZmbGVfcHMoeDQ0
LCB4NDUsIDB4ZWIpOworKyAgICB4NzcgPSBfbW1fYWRkX3BzKHg3NSwgeDc2KTsgLy8gejIuciAg
IHoyLmkgICAgejYuciAgICB6Ni5pCisrICAgIHg3OCA9IF9tbV9zdWJfcHMoeDc1LCB4NzYpOyAv
LyB6MTAuciAgejEwLmkgIHoxNC5yICB6MTQuaQorKworKyAgICB4NzkgPSBfbW1fdW5wYWNrbG9f
cHMyKHg0NiwgeDY4KTsgLy8gejAuciAgejAuaSAgejEuciAgejEuaQorKyAgICB4ODAgPSBfbW1f
c2h1ZmZsZV9wcyh4NzcsIHg2OCwgMHhlNCk7IC8vIHoyLnIgIHoyLmkgIHozLnIgIHozLmkKKysg
ICAgeDgxID0gX21tX3NodWZmbGVfcHMoeDQ2LCB4NzAsIDB4NGUpOyAvLyB6NC5yICB6NC5pICB6
NS5yICB6NS5pCisrICAgIHg4MiA9IF9tbV91bnBhY2toaV9wczIoeDc3LCB4NzEpOyAvLyB6Ni5y
ICB6Ni5pICB6Ny5yICB6Ny5pCisrICAgIF9tbV9zdG9yZXVfcHMob3V0LCB4NzkpOworKyAgICBf
bW1fc3RvcmV1X3BzKG91dCArIDQsIHg4MCk7CisrICAgIF9tbV9zdG9yZXVfcHMob3V0ICsgOCwg
eDgxKTsKKysgICAgX21tX3N0b3JldV9wcyhvdXQgKyAxMiwgeDgyKTsKKysgICAgeDgzID0gX21t
X3VucGFja2xvX3BzMih4NDcsIHg2OSk7IC8vIHo4LnIgIHo4LmkgIHo5LnIgIHo5LmkKKysgICAg
eDg0ID0gX21tX3NodWZmbGVfcHMoeDc4LCB4NjksIDB4ZTQpOyAvLyB6MTAuciAgejEwLmkgIHox
MS5yICB6MTEuaQorKyAgICB4ODUgPSBfbW1fc2h1ZmZsZV9wcyh4NDcsIHg3MSwgMHg0ZSk7IC8v
IHoxMi5yICB6MTIuaSAgejEzLnIgIHoxMy5pCisrICAgIHg4NiA9IF9tbV91bnBhY2toaV9wczIo
eDc4LCB4NzApOyAvLyB6MTQuciAgejE0LmkgIHoxNS5yICB6MTUuaQorKyAgICBfbW1fc3RvcmV1
X3BzKG91dCArIDE2LCB4ODMpOworKyAgICBfbW1fc3RvcmV1X3BzKG91dCArIDIwLCB4ODQpOwor
KyAgICBfbW1fc3RvcmV1X3BzKG91dCArIDI0LCB4ODUpOworKyAgICBfbW1fc3RvcmV1X3BzKG91
dCArIDI4LCB4ODYpOworK30KKysKKytzdGF0aWMgYXZfYWx3YXlzX2lubGluZQorK3ZvaWQgZmZ0
NF9lMmsoRkZUQ29tcGxleCAqeikKKyt7CisrICAgIHZlY19mIGEsIGIsIGMsIGQ7CisrICAgIGZs
b2F0ICpvdXQgPSAoZmxvYXQqKXo7CisrICAgIGEgPSBfbW1fbG9hZHVfcHMob3V0KTsKKysgICAg
YiA9IF9tbV9sb2FkdV9wcyhvdXQgKyA0KTsKKysKKysgICAgYyA9IF9tbV9zaHVmZmxlX3BzKGEs
IGIsIDB4NjQpOworKyAgICBkID0gX21tX3NodWZmbGVfcHMoYSwgYiwgMHhjZSk7CisrICAgIGEg
PSBfbW1fYWRkX3BzKGMsIGQpOworKyAgICBiID0gX21tX3N1Yl9wcyhjLCBkKTsKKysKKysgICAg
YyA9IF9tbV91bnBhY2tsb19wcyhhLCBiKTsKKysgICAgZCA9IF9tbV91bnBhY2toaV9wcyhhLCBf
bW1fc2h1ZmZsZV9wcyhiLCBiLCAweGIxKSk7CisrCisrICAgIGEgPSBfbW1fYWRkX3BzKGMsIGQp
OworKyAgICBiID0gX21tX3N1Yl9wcyhjLCBkKTsKKysKKysgICAgYyA9IF9tbV91bnBhY2tsb19w
czIoYSwgYik7CisrICAgIGQgPSBfbW1fdW5wYWNraGlfcHMyKGEsIGIpOworKworKyAgICBfbW1f
c3RvcmV1X3BzKG91dCwgYyk7CisrICAgIF9tbV9zdG9yZXVfcHMob3V0ICsgNCwgZCk7CisrfQor
KworK3N0YXRpYyBhdl9hbHdheXNfaW5saW5lCisrdm9pZCBmZnQ4X2UyayhGRlRDb21wbGV4ICp6
KQorK3sKKysgICAgdmVjX2YgdnowLCB2ejEsIHZ6MiwgdnozOworKyAgICB2ZWNfZiB2ejQsIHZ6
NSwgdno2LCB2ejcsIHZ6ODsKKysKKysgICAgZmxvYXQgKm91dCA9IChmbG9hdCopejsKKysgICAg
dmVjX2YgdmMwID0gX21tX3NldHplcm9fcHMoKTsKKysgICAgdmVjX2YgdmMxID0gX21tX3NldHJf
cHMoLXNxcnRoYWxmLCBzcXJ0aGFsZiwgc3FydGhhbGYsIC1zcXJ0aGFsZik7CisrICAgIHZlY19m
IHZjMiA9IF9tbV9zZXQxX3BzKHNxcnRoYWxmKTsKKysKKysgICAgdnowID0gX21tX2xvYWR1X3Bz
KG91dCk7CisrICAgIHZ6MSA9IF9tbV9sb2FkdV9wcyhvdXQgKyA0KTsKKysgICAgdnoyID0gX21t
X2xvYWR1X3BzKG91dCArIDgpOworKyAgICB2ejMgPSBfbW1fbG9hZHVfcHMob3V0ICsgMTIpOwor
KworKyAgICB2ejYgPSBfbW1fdW5wYWNrbG9fcHModnoyLCB2ejMpOworKyAgICB2ejcgPSBfbW1f
dW5wYWNraGlfcHModnoyLCB2ejMpOworKyAgICB2ejQgPSBfbW1fc2h1ZmZsZV9wcyh2ejAsIHZ6
MSwgMHg2NCk7CisrICAgIHZ6NSA9IF9tbV9zaHVmZmxlX3BzKHZ6MCwgdnoxLCAweGNlKTsKKysK
KysgICAgdnoyID0gX21tX2FkZF9wcyh2ejYsIHZ6Nyk7CisrICAgIHZ6MyA9IF9tbV9zdWJfcHMo
dno2LCB2ejcpOworKyAgICB2ejggPSBfbW1fc2h1ZmZsZV9wcyh2ejMsIHZ6MywgMHg0ZSk7Cisr
CisrICAgIHZ6MCA9IF9tbV9hZGRfcHModno0LCB2ejUpOworKyAgICB2ejEgPSBfbW1fc3ViX3Bz
KHZ6NCwgdno1KTsKKysKKysgICAgdnozID0gX21tX21hZGRfcHModnozLCB2YzEsIHZjMCk7Cisr
ICAgIHZ6MyA9IF9tbV9tYWRkX3BzKHZ6OCwgdmMyLCB2ejMpOworKworKyAgICB2ejQgPSBfbW1f
dW5wYWNrbG9fcHModnowLCB2ejEpOworKyAgICB2ejUgPSBfbW1fdW5wYWNraGlfcHModnowLCBf
bW1fc2h1ZmZsZV9wcyh2ejEsIHZ6MSwgMHhiMSkpOworKyAgICB2ejYgPSBfbW1fc2h1ZmZsZV9w
cyh2ejIsIHZ6MywgMHgzOSk7CisrICAgIHZ6NyA9IF9tbV9zaHVmZmxlX3BzKHZ6MiwgdnozLCAw
eDZjKTsKKysKKysgICAgdnowID0gX21tX2FkZF9wcyh2ejQsIHZ6NSk7CisrICAgIHZ6MSA9IF9t
bV9zdWJfcHModno0LCB2ejUpOworKyAgICB2ejIgPSBfbW1fYWRkX3BzKHZ6Niwgdno3KTsKKysg
ICAgdnozID0gX21tX3N1Yl9wcyh2ejYsIHZ6Nyk7CisrCisrICAgIHZ6NCA9IF9tbV91bnBhY2ts
b19wczIodnowLCB2ejEpOworKyAgICB2ejUgPSBfbW1fdW5wYWNraGlfcHMyKHZ6MCwgdnoxKTsK
KysgICAgdno2ID0gX21tX3NodWZmbGVfcHModnoyLCB2ejMsIDB4ZDgpOworKyAgICB2ejcgPSBf
bW1fc2h1ZmZsZV9wcyh2ejIsIHZ6MywgMHg4ZCk7CisrCisrICAgIHZ6MiA9IF9tbV9zdWJfcHMo
dno0LCB2ejYpOworKyAgICB2ejMgPSBfbW1fc3ViX3BzKHZ6NSwgdno3KTsKKysKKysgICAgdnow
ID0gX21tX2FkZF9wcyh2ejQsIHZ6Nik7CisrICAgIHZ6MSA9IF9tbV9hZGRfcHModno1LCB2ejcp
OworKworKyAgICBfbW1fc3RvcmV1X3BzKG91dCwgdnowKTsKKysgICAgX21tX3N0b3JldV9wcyhv
dXQgKyA0LCB2ejEpOworKyAgICBfbW1fc3RvcmV1X3BzKG91dCArIDgsIHZ6Mik7CisrICAgIF9t
bV9zdG9yZXVfcHMob3V0ICsgMTIsIHZ6Myk7CisrfQorKworK3N0YXRpYyBhdl9hbHdheXNfaW5s
aW5lCisrdm9pZCBmZnQxNl9lMmsoRkZUQ29tcGxleCAqeikKKyt7CisrICAgIGZsb2F0ICpvdXQg
PSAoZmxvYXQqKXo7CisrICAgIHZlY19mIHZjMCA9IF9tbV9zZXR6ZXJvX3BzKCk7CisrICAgIHZl
Y19mIHZjMSA9IF9tbV9zZXRyX3BzKC1zcXJ0aGFsZiwgc3FydGhhbGYsIHNxcnRoYWxmLCAtc3Fy
dGhhbGYpOworKyAgICB2ZWNfZiB2YzIgPSBfbW1fc2V0MV9wcyhzcXJ0aGFsZik7CisrICAgIHZl
Y19mIHZjMyA9IF9tbV9zZXRyX3BzKDEuMCwgMC45MjM4Nzk1Mywgc3FydGhhbGYsIDAuMzgyNjgz
NDMpOworKyAgICB2ZWNfZiB2YzQgPSBfbW1fc2V0cl9wcygwLjAsIDAuMzgyNjgzNDMsIHNxcnRo
YWxmLCAwLjkyMzg3OTUzKTsKKysgICAgdmVjX2YgdmM1ID0gX21tX3NldHJfcHMoLTAuMCwgLTAu
MzgyNjgzNDMsIC1zcXJ0aGFsZiwgLTAuOTIzODc5NTMpOworKworKyAgICB2ZWNfZiB2ejAsIHZ6
MSwgdnoyLCB2ejM7CisrICAgIHZlY19mIHZ6NCwgdno1LCB2ejYsIHZ6NzsKKysgICAgdmVjX2Yg
dno4LCB2ejksIHZ6MTAsIHZ6MTE7CisrICAgIHZlY19mIHZ6MTIsIHZ6MTM7CisrCisrICAgIHZ6
MCA9IF9tbV9sb2FkdV9wcyhvdXQgKyAxNik7CisrICAgIHZ6MSA9IF9tbV9sb2FkdV9wcyhvdXQg
KyAyMCk7CisrICAgIHZ6MiA9IF9tbV9sb2FkdV9wcyhvdXQgKyAyNCk7CisrICAgIHZ6MyA9IF9t
bV9sb2FkdV9wcyhvdXQgKyAyOCk7CisrCisrICAgIHZ6NCA9IF9tbV9zaHVmZmxlX3BzKHZ6MCwg
dnoxLCAweDY0KTsKKysgICAgdno1ID0gX21tX3NodWZmbGVfcHModnowLCB2ejEsIDB4Y2UpOwor
KyAgICB2ejYgPSBfbW1fc2h1ZmZsZV9wcyh2ejIsIHZ6MywgMHg2NCk7CisrICAgIHZ6NyA9IF9t
bV9zaHVmZmxlX3BzKHZ6MiwgdnozLCAweGNlKTsKKysKKysgICAgdnowID0gX21tX2FkZF9wcyh2
ejQsIHZ6NSk7CisrICAgIHZ6MT0gX21tX3N1Yl9wcyh2ejQsIHZ6NSk7CisrICAgIHZ6MiA9IF9t
bV9hZGRfcHModno2LCB2ejcpOworKyAgICB2ejMgPSBfbW1fc3ViX3BzKHZ6Niwgdno3KTsKKysK
KysgICAgdno0ID0gX21tX3VucGFja2xvX3BzKHZ6MCwgdnoxKTsKKysgICAgdno1ID0gX21tX3Vu
cGFja2hpX3BzKHZ6MCwgX21tX3NodWZmbGVfcHModnoxLCB2ejEsIDB4YjEpKTsKKysgICAgdno2
ID0gX21tX3VucGFja2xvX3BzKHZ6MiwgdnozKTsKKysgICAgdno3ID0gX21tX3VucGFja2hpX3Bz
KHZ6MiwgX21tX3NodWZmbGVfcHModnozLCB2ejMsIDB4YjEpKTsKKysKKysgICAgdnowID0gX21t
X2FkZF9wcyh2ejQsIHZ6NSk7CisrICAgIHZ6MSA9IF9tbV9zdWJfcHModno0LCB2ejUpOworKyAg
ICB2ejIgPSBfbW1fYWRkX3BzKHZ6Niwgdno3KTsKKysgICAgdnozID0gX21tX3N1Yl9wcyh2ejYs
IHZ6Nyk7CisrCisrICAgIHZ6NCA9IF9tbV91bnBhY2tsb19wczIodnowLCB2ejEpOworKyAgICB2
ejUgPSBfbW1fdW5wYWNraGlfcHMyKHZ6MCwgdnoxKTsKKysKKysgICAgdno2ID0gX21tX3VucGFj
a2xvX3BzMih2ejIsIHZ6Myk7CisrICAgIHZ6NyA9IF9tbV91bnBhY2toaV9wczIodnoyLCB2ejMp
OworKworKyAgICB2ejAgPSBfbW1fbG9hZHVfcHMob3V0KTsKKysgICAgdnoxID0gX21tX2xvYWR1
X3BzKG91dCArIDQpOworKyAgICB2ejIgPSBfbW1fbG9hZHVfcHMob3V0ICsgOCk7CisrICAgIHZ6
MyA9IF9tbV9sb2FkdV9wcyhvdXQgKyAxMik7CisrICAgIHZ6MTAgPSBfbW1fdW5wYWNrbG9fcHMo
dnoyLCB2ejMpOworKyAgICB2ejExID0gX21tX3VucGFja2hpX3BzKHZ6MiwgdnozKTsKKysgICAg
dno4ID0gX21tX3NodWZmbGVfcHModnowLCB2ejEsIDB4NjQpOworKyAgICB2ejkgPSBfbW1fc2h1
ZmZsZV9wcyh2ejAsIHZ6MSwgMHhjZSk7CisrCisrICAgIHZ6MiA9IF9tbV9hZGRfcHModnoxMCwg
dnoxMSk7CisrICAgIHZ6MyA9IF9tbV9zdWJfcHModnoxMCwgdnoxMSk7CisrICAgIHZ6MTIgPSBf
bW1fc2h1ZmZsZV9wcyh2ejMsIHZ6MywgMHg0ZSk7CisrICAgIHZ6MCA9IF9tbV9hZGRfcHModno4
LCB2ejkpOworKyAgICB2ejEgPSBfbW1fc3ViX3BzKHZ6OCwgdno5KTsKKysKKysgICAgdnozID0g
X21tX21hZGRfcHModnozLCB2YzEsIHZjMCk7CisrICAgIHZ6MyA9IF9tbV9tYWRkX3BzKHZ6MTIs
IHZjMiwgdnozKTsKKysgICAgdno4ID0gX21tX3VucGFja2xvX3BzKHZ6MCwgdnoxKTsKKysgICAg
dno5ID0gX21tX3VucGFja2hpX3BzKHZ6MCwgX21tX3NodWZmbGVfcHModnoxLCB2ejEsIDB4YjEp
KTsKKysgICAgdnoxMCA9IF9tbV9zaHVmZmxlX3BzKHZ6MiwgdnozLCAweDM5KTsKKysgICAgdnox
MSA9IF9tbV9zaHVmZmxlX3BzKHZ6MiwgdnozLCAweDZjKTsKKysKKysgICAgdnowID0gX21tX2Fk
ZF9wcyh2ejgsIHZ6OSk7CisrICAgIHZ6MSA9IF9tbV9zdWJfcHModno4LCB2ejkpOworKyAgICB2
ejIgPSBfbW1fYWRkX3BzKHZ6MTAsIHZ6MTEpOworKyAgICB2ejMgPSBfbW1fc3ViX3BzKHZ6MTAs
IHZ6MTEpOworKworKyAgICB2ejggPSBfbW1fdW5wYWNrbG9fcHMyKHZ6MCwgdnoxKTsKKysgICAg
dno5ID0gX21tX3VucGFja2hpX3BzMih2ejAsIHZ6MSk7CisrICAgIHZ6MTAgPSBfbW1fc2h1ZmZs
ZV9wcyh2ejIsIHZ6MywgMHhkOCk7CisrICAgIHZ6MTEgPSBfbW1fc2h1ZmZsZV9wcyh2ejIsIHZ6
MywgMHg4ZCk7CisrCisrICAgIHZ6MiA9IF9tbV9zdWJfcHModno4LCB2ejEwKTsKKysgICAgdnoz
ID0gX21tX3N1Yl9wcyh2ejksIHZ6MTEpOworKyAgICB2ejAgPSBfbW1fYWRkX3BzKHZ6OCwgdnox
MCk7CisrICAgIHZ6MSA9IF9tbV9hZGRfcHModno5LCB2ejExKTsKKysKKysgICAgdno4ID0gX21t
X21hZGRfcHModno0LCB2YzMsIHZjMCk7CisrICAgIHZ6OSA9IF9tbV9tYWRkX3BzKHZ6NSwgdmMz
LCB2YzApOworKyAgICB2ejEwID0gX21tX21hZGRfcHModno2LCB2YzMsIHZjMCk7CisrICAgIHZ6
MTEgPSBfbW1fbWFkZF9wcyh2ejcsIHZjMywgdmMwKTsKKysKKysgICAgdno4ID0gX21tX21hZGRf
cHModno1LCB2YzQsIHZ6OCk7CisrICAgIHZ6OSA9IF9tbV9tYWRkX3BzKHZ6NCwgdmM1LCB2ejkp
OworKyAgICB2ejEwID0gX21tX21hZGRfcHModno3LCB2YzUsIHZ6MTApOworKyAgICB2ejExID0g
X21tX21hZGRfcHModno2LCB2YzQsIHZ6MTEpOworKworKyAgICB2ejEyID0gX21tX3N1Yl9wcyh2
ejEwLCB2ejgpOworKyAgICB2ejEwID0gX21tX2FkZF9wcyh2ejEwLCB2ejgpOworKworKyAgICB2
ejEzID0gX21tX3N1Yl9wcyh2ejksIHZ6MTEpOworKyAgICB2ejExID0gX21tX2FkZF9wcyh2ejks
IHZ6MTEpOworKworKyAgICB2ejQgPSBfbW1fc3ViX3BzKHZ6MCwgdnoxMCk7CisrICAgIHZ6MCA9
IF9tbV9hZGRfcHModnowLCB2ejEwKTsKKysKKysgICAgdno3ID0gX21tX3N1Yl9wcyh2ejMsIHZ6
MTIpOworKyAgICB2ejMgPSBfbW1fYWRkX3BzKHZ6MywgdnoxMik7CisrCisrICAgIHZ6NSA9IF9t
bV9zdWJfcHModnoxLCB2ejExKTsKKysgICAgdnoxID0gX21tX2FkZF9wcyh2ejEsIHZ6MTEpOwor
KworKyAgICB2ejYgPSBfbW1fc3ViX3BzKHZ6MiwgdnoxMyk7CisrICAgIHZ6MiA9IF9tbV9hZGRf
cHModnoyLCB2ejEzKTsKKysKKysgICAgX21tX3N0b3JldV9wcyhvdXQsIHZ6MCk7CisrICAgIF9t
bV9zdG9yZXVfcHMob3V0ICsgNCwgdnoxKTsKKysgICAgX21tX3N0b3JldV9wcyhvdXQgKyA4LCB2
ejIpOworKyAgICBfbW1fc3RvcmV1X3BzKG91dCArIDEyLCB2ejMpOworKyAgICBfbW1fc3RvcmV1
X3BzKG91dCArIDE2LCB2ejQpOworKyAgICBfbW1fc3RvcmV1X3BzKG91dCArIDIwLCB2ejUpOwor
KyAgICBfbW1fc3RvcmV1X3BzKG91dCArIDI0LCB2ejYpOworKyAgICBfbW1fc3RvcmV1X3BzKG91
dCArIDI4LCB2ejcpOworK30KKysKKytzdGF0aWMgYXZfYWx3YXlzX2lubGluZQorK3ZvaWQgcGFz
c19lMmsoRkZUQ29tcGxleCAqeiwgY29uc3QgRkZUU2FtcGxlICp3cmUsIHVuc2lnbmVkIGludCBu
KQorK3sKKysgICAgaW50IGkxID0gbiAqIDQsIGkyID0gbiAqIDgsIGkzID0gbiAqIDEyOworKyAg
ICBGRlRTYW1wbGUgKm91dCA9IChGRlRTYW1wbGUqKXo7CisrICAgIGNvbnN0IEZGVFNhbXBsZSAq
d2ltID0gd3JlICsgbiAqIDI7CisrICAgIHZlY19mIHYwLCB2MSwgdjIsIHYzOworKyAgICB2ZWNf
ZiB2NCwgdjUsIHY2LCB2NzsKKysgICAgdmVjX2YgdjgsIHY5LCB2MTAsIHYxMTsKKysgICAgdmVj
X2YgdjEyLCB2MTM7CisrCisrICAgIG4gPSBuIC0gMjsKKysKKysgICAgdjggPSBfbW1fbG9hZHVf
cHMod3JlKTsKKysjaWYgMAorKyAgICB2OSA9IF9tbV9sb2FkdV9wcyh3aW0gLSAzKTsKKysjZWxz
ZQorKyAgICB2MTAgPSBfbW1fbG9hZHVfcHMod2ltKTsKKysgICAgdjkgPSBfbW1fbG9hZHVfcHMo
d2ltIC0gNCk7CisrICAgIHY5ID0gX21tX2Nhc3RzaTEyOF9wcyhfbW1fYWxpZ25yX2VwaTgoX21t
X2Nhc3Rwc19zaTEyOCh2MTApLCBfbW1fY2FzdHBzX3NpMTI4KHY5KSwgNCkpOworKyNlbmRpZgor
KyAgICB2OSA9IF9tbV9zaHVmZmxlX3BzKHY5LCB2OSwgMHgxYik7CisrCisrICAgIHY0ID0gX21t
X2xvYWR1X3BzKG91dCArIGkyKTsKKysgICAgdjUgPSBfbW1fbG9hZHVfcHMob3V0ICsgaTIgKyA0
KTsKKysgICAgdjYgPSBfbW1fbG9hZHVfcHMob3V0ICsgaTMpOworKyAgICB2NyA9IF9tbV9sb2Fk
dV9wcyhvdXQgKyBpMyArIDQpOworKyAgICB2MTAgPSBfbW1fbXVsX3BzKHY0LCB2OCk7IC8vIHIy
KndyZQorKyAgICB2MTEgPSBfbW1fbXVsX3BzKHY1LCB2OCk7IC8vIGkyKndyZQorKyAgICB2MTIg
PSBfbW1fbXVsX3BzKHY2LCB2OCk7IC8vIHIzKndyZQorKyAgICB2MTMgPSBfbW1fbXVsX3BzKHY3
LCB2OCk7IC8vIGkzKndyZQorKworKyAgICB2MCA9IF9tbV9sb2FkdV9wcyhvdXQpOyAvLyByMAor
KyAgICB2MyA9IF9tbV9sb2FkdV9wcyhvdXQgKyBpMSArIDQpOyAvLyBpMQorKyAgICB2MTAgPSBf
bW1fbWFkZF9wcyh2NSwgdjksIHYxMCk7IC8vIHIyKndpbQorKyAgICB2MTEgPSBfbW1fbm1zdWJf
cHModjQsIHY5LCB2MTEpOyAvLyBpMip3aW0KKysgICAgdjEyID0gX21tX25tc3ViX3BzKHY3LCB2
OSwgdjEyKTsgLy8gcjMqd2ltCisrICAgIHYxMyA9IF9tbV9tYWRkX3BzKHY2LCB2OSwgdjEzKTsg
Ly8gaTMqd2ltCisrCisrICAgIHYxID0gX21tX2xvYWR1X3BzKG91dCArIDQpOyAvLyBpMAorKyAg
ICB2MiA9IF9tbV9sb2FkdV9wcyhvdXQgKyBpMSk7IC8vIHIxCisrICAgIHY4ID0gX21tX3N1Yl9w
cyh2MTIsIHYxMCk7CisrICAgIHYxMiA9IF9tbV9hZGRfcHModjEyLCB2MTApOworKyAgICB2OSA9
IF9tbV9zdWJfcHModjExLCB2MTMpOworKyAgICB2MTMgPSBfbW1fYWRkX3BzKHYxMSwgdjEzKTsK
KysgICAgdjQgPSBfbW1fc3ViX3BzKHYwLCB2MTIpOworKyAgICB2MCA9IF9tbV9hZGRfcHModjAs
IHYxMik7CisrICAgIHY3ID0gX21tX3N1Yl9wcyh2MywgdjgpOworKyAgICB2MyA9IF9tbV9hZGRf
cHModjMsIHY4KTsKKysKKysgICAgX21tX3N0b3JldV9wcyhvdXQsIHYwKTsgLy8gcjAKKysgICAg
X21tX3N0b3JldV9wcyhvdXQgKyBpMSArIDQsIHYzKTsgLy8gaTEKKysgICAgX21tX3N0b3JldV9w
cyhvdXQgKyBpMiwgdjQpOyAvLyByMgorKyAgICBfbW1fc3RvcmV1X3BzKG91dCArIGkzICsgNCwg
djcpOy8vIGkzCisrCisrICAgIHY1ID0gX21tX3N1Yl9wcyh2MSwgdjEzKTsKKysgICAgdjEgPSBf
bW1fYWRkX3BzKHYxLCB2MTMpOworKyAgICB2NiA9IF9tbV9zdWJfcHModjIsIHY5KTsKKysgICAg
djIgPSBfbW1fYWRkX3BzKHYyLCB2OSk7CisrCisrICAgIF9tbV9zdG9yZXVfcHMob3V0ICsgNCwg
djEpOyAvLyBpMAorKyAgICBfbW1fc3RvcmV1X3BzKG91dCArIGkxLCB2Mik7IC8vIHIxCisrICAg
IF9tbV9zdG9yZXVfcHMob3V0ICsgaTIgKyA0LCB2NSk7IC8vIGkyCisrICAgIF9tbV9zdG9yZXVf
cHMob3V0ICsgaTMsIHY2KTsgLy8gcjMKKysKKysgICAgZG8geworKyAgICAgICAgb3V0ICs9IDg7
CisrICAgICAgICB3cmUgKz0gNDsKKysgICAgICAgIHdpbSAtPSA0OworKworKyAgICAgICAgdjgg
PSBfbW1fbG9hZHVfcHMod3JlKTsKKysjaWYgMAorKyAgICAgICAgdjkgPSBfbW1fbG9hZHVfcHMo
d2ltIC0gMyk7CisrI2Vsc2UKKysgICAgICAgIHYxMCA9IF9tbV9sb2FkdV9wcyh3aW0pOworKyAg
ICAgICAgdjkgPSBfbW1fbG9hZHVfcHMod2ltIC0gNCk7CisrICAgICAgICB2OSA9IF9tbV9jYXN0
c2kxMjhfcHMoX21tX2FsaWducl9lcGk4KF9tbV9jYXN0cHNfc2kxMjgodjEwKSwgX21tX2Nhc3Rw
c19zaTEyOCh2OSksIDQpKTsKKysjZW5kaWYKKysgICAgICAgIHY5ID0gX21tX3NodWZmbGVfcHMo
djksIHY5LCAweDFiKTsKKysKKysgICAgICAgIHY0ID0gX21tX2xvYWR1X3BzKG91dCArIGkyKTsg
Ly8gcjIKKysgICAgICAgIHY1ID0gX21tX2xvYWR1X3BzKG91dCArIGkyICsgNCk7IC8vIGkyCisr
ICAgICAgICB2NiA9IF9tbV9sb2FkdV9wcyhvdXQgKyBpMyk7IC8vIHIzCisrICAgICAgICB2NyA9
IF9tbV9sb2FkdV9wcyhvdXQgKyBpMyArIDQpOy8vIGkzCisrICAgICAgICB2MTAgPSBfbW1fbXVs
X3BzKHY0LCB2OCk7IC8vIHIyKndyZQorKyAgICAgICAgdjExID0gX21tX211bF9wcyh2NSwgdjgp
OyAvLyBpMip3cmUKKysgICAgICAgIHYxMiA9IF9tbV9tdWxfcHModjYsIHY4KTsgLy8gcjMqd3Jl
CisrICAgICAgICB2MTMgPSBfbW1fbXVsX3BzKHY3LCB2OCk7IC8vIGkzKndyZQorKworKyAgICAg
ICAgdjAgPSBfbW1fbG9hZHVfcHMob3V0KTsgLy8gcjAKKysgICAgICAgIHYzID0gX21tX2xvYWR1
X3BzKG91dCArIGkxICsgNCk7IC8vIGkxCisrICAgICAgICB2MTAgPSBfbW1fbWFkZF9wcyh2NSwg
djksIHYxMCk7IC8vIHIyKndpbQorKyAgICAgICAgdjExID0gX21tX25tc3ViX3BzKHY0LCB2OSwg
djExKTsgLy8gaTIqd2ltCisrICAgICAgICB2MTIgPSBfbW1fbm1zdWJfcHModjcsIHY5LCB2MTIp
OyAvLyByMyp3aW0KKysgICAgICAgIHYxMyA9IF9tbV9tYWRkX3BzKHY2LCB2OSwgdjEzKTsgLy8g
aTMqd2ltCisrCisrICAgICAgICB2MSA9IF9tbV9sb2FkdV9wcyhvdXQgKyA0KTsgLy8gaTAKKysg
ICAgICAgIHYyID0gX21tX2xvYWR1X3BzKG91dCArIGkxKTsgLy8gcjEKKysgICAgICAgIHY4ID0g
X21tX3N1Yl9wcyh2MTIsIHYxMCk7CisrICAgICAgICB2MTIgPSBfbW1fYWRkX3BzKHYxMiwgdjEw
KTsKKysgICAgICAgIHY5ID0gX21tX3N1Yl9wcyh2MTEsIHYxMyk7CisrICAgICAgICB2MTMgPSBf
bW1fYWRkX3BzKHYxMSwgdjEzKTsKKysgICAgICAgIHY0ID0gX21tX3N1Yl9wcyh2MCwgdjEyKTsK
KysgICAgICAgIHYwID0gX21tX2FkZF9wcyh2MCwgdjEyKTsKKysgICAgICAgIHY3ID0gX21tX3N1
Yl9wcyh2MywgdjgpOworKyAgICAgICAgdjMgPSBfbW1fYWRkX3BzKHYzLCB2OCk7CisrCisrICAg
ICAgICBfbW1fc3RvcmV1X3BzKG91dCwgdjApOyAvLyByMAorKyAgICAgICAgX21tX3N0b3JldV9w
cyhvdXQgKyBpMSArIDQsIHYzKTsgLy8gaTEKKysgICAgICAgIF9tbV9zdG9yZXVfcHMob3V0ICsg
aTIsIHY0KTsgLy8gcjIKKysgICAgICAgIF9tbV9zdG9yZXVfcHMob3V0ICsgaTMgKyA0LCB2Nyk7
IC8vIGkzCisrCisrICAgICAgICB2NSA9IF9tbV9zdWJfcHModjEsIHYxMyk7CisrICAgICAgICB2
MSA9IF9tbV9hZGRfcHModjEsIHYxMyk7CisrICAgICAgICB2NiA9IF9tbV9zdWJfcHModjIsIHY5
KTsKKysgICAgICAgIHYyID0gX21tX2FkZF9wcyh2MiwgdjkpOworKworKyAgICAgICAgX21tX3N0
b3JldV9wcyhvdXQgKyA0LCB2MSk7IC8vIGkwCisrICAgICAgICBfbW1fc3RvcmV1X3BzKG91dCAr
IGkxLCB2Mik7IC8vIHIxCisrICAgICAgICBfbW1fc3RvcmV1X3BzKG91dCArIGkyICsgNCwgdjUp
OyAvLyBpMgorKyAgICAgICAgX21tX3N0b3JldV9wcyhvdXQgKyBpMywgdjYpOyAvLyByMworKyAg
ICB9IHdoaWxlIChuIC09IDIpOworK30KKysKKytzdGF0aWMgdm9pZCBmZnQzMl9lMmtfaW50ZXJs
ZWF2ZShGRlRDb21wbGV4ICp6KQorK3sKKysgICAgZmZ0MTZfZTJrX2ludGVybGVhdmUoeik7Cisr
ICAgIGZmdDhfZTJrX2ludGVybGVhdmUoeisxNik7CisrICAgIGZmdDhfZTJrX2ludGVybGVhdmUo
eisyNCk7CisrICAgIHBhc3NfZTJrX2ludGVybGVhdmUoeixmZl9jb3NfMzIsNCk7CisrfQorKwor
K3N0YXRpYyB2b2lkIGZmdDY0X2Uya19pbnRlcmxlYXZlKEZGVENvbXBsZXggKnopCisreworKyAg
ICBmZnQzMl9lMmtfaW50ZXJsZWF2ZSh6KTsKKysgICAgZmZ0MTZfZTJrX2ludGVybGVhdmUoeisz
Mik7CisrICAgIGZmdDE2X2Uya19pbnRlcmxlYXZlKHorNDgpOworKyAgICBwYXNzX2Uya19pbnRl
cmxlYXZlKHosZmZfY29zXzY0LCA4KTsKKyt9CisrCisrc3RhdGljIHZvaWQgZmZ0MTI4X2Uya19p
bnRlcmxlYXZlKEZGVENvbXBsZXggKnopCisreworKyAgICBmZnQ2NF9lMmtfaW50ZXJsZWF2ZSh6
KTsKKysgICAgZmZ0MzJfZTJrX2ludGVybGVhdmUoeis2NCk7CisrICAgIGZmdDMyX2Uya19pbnRl
cmxlYXZlKHorOTYpOworKyAgICBwYXNzX2Uya19pbnRlcmxlYXZlKHosZmZfY29zXzEyOCwxNik7
CisrfQorKworK3N0YXRpYyB2b2lkIGZmdDI1Nl9lMmtfaW50ZXJsZWF2ZShGRlRDb21wbGV4ICp6
KQorK3sKKysgICAgZmZ0MTI4X2Uya19pbnRlcmxlYXZlKHopOworKyAgICBmZnQ2NF9lMmtfaW50
ZXJsZWF2ZSh6KzEyOCk7CisrICAgIGZmdDY0X2Uya19pbnRlcmxlYXZlKHorMTkyKTsKKysgICAg
cGFzc19lMmtfaW50ZXJsZWF2ZSh6LGZmX2Nvc18yNTYsMzIpOworK30KKysKKytzdGF0aWMgdm9p
ZCBmZnQ1MTJfZTJrX2ludGVybGVhdmUoRkZUQ29tcGxleCAqeikKKyt7CisrICAgIGZmdDI1Nl9l
MmtfaW50ZXJsZWF2ZSh6KTsKKysgICAgZmZ0MTI4X2Uya19pbnRlcmxlYXZlKHorMjU2KTsKKysg
ICAgZmZ0MTI4X2Uya19pbnRlcmxlYXZlKHorMzg0KTsKKysgICAgcGFzc19lMmtfaW50ZXJsZWF2
ZSh6LGZmX2Nvc181MTIsNjQpOworK30KKysKKytzdGF0aWMgdm9pZCBmZnQxMDI0X2Uya19pbnRl
cmxlYXZlKEZGVENvbXBsZXggKnopCisreworKyAgICBmZnQ1MTJfZTJrX2ludGVybGVhdmUoeik7
CisrICAgIGZmdDI1Nl9lMmtfaW50ZXJsZWF2ZSh6KzUxMik7CisrICAgIGZmdDI1Nl9lMmtfaW50
ZXJsZWF2ZSh6Kzc2OCk7CisrICAgIHBhc3NfZTJrX2ludGVybGVhdmUoeixmZl9jb3NfMTAyNCwx
MjgpOworK30KKysKKytzdGF0aWMgdm9pZCBmZnQyMDQ4X2Uya19pbnRlcmxlYXZlKEZGVENvbXBs
ZXggKnopCisreworKyAgICBmZnQxMDI0X2Uya19pbnRlcmxlYXZlKHopOworKyAgICBmZnQ1MTJf
ZTJrX2ludGVybGVhdmUoeisxMDI0KTsKKysgICAgZmZ0NTEyX2Uya19pbnRlcmxlYXZlKHorMTUz
Nik7CisrICAgIHBhc3NfZTJrX2ludGVybGVhdmUoeixmZl9jb3NfMjA0OCwyNTYpOworK30KKysK
KytzdGF0aWMgdm9pZCBmZnQ0MDk2X2Uya19pbnRlcmxlYXZlKEZGVENvbXBsZXggKnopCisrewor
KyAgICBmZnQyMDQ4X2Uya19pbnRlcmxlYXZlKHopOworKyAgICBmZnQxMDI0X2Uya19pbnRlcmxl
YXZlKHorMjA0OCk7CisrICAgIGZmdDEwMjRfZTJrX2ludGVybGVhdmUoeiszMDcyKTsKKysgICAg
cGFzc19lMmtfaW50ZXJsZWF2ZSh6LGZmX2Nvc180MDk2LCA1MTIpOworK30KKysKKytzdGF0aWMg
dm9pZCBmZnQ4MTkyX2Uya19pbnRlcmxlYXZlKEZGVENvbXBsZXggKnopCisreworKyAgICBmZnQ0
MDk2X2Uya19pbnRlcmxlYXZlKHopOworKyAgICBmZnQyMDQ4X2Uya19pbnRlcmxlYXZlKHorNDA5
Nik7CisrICAgIGZmdDIwNDhfZTJrX2ludGVybGVhdmUoeis2MTQ0KTsKKysgICAgcGFzc19lMmtf
aW50ZXJsZWF2ZSh6LGZmX2Nvc184MTkyLDEwMjQpOworK30KKysKKytzdGF0aWMgdm9pZCBmZnQx
NjM4NF9lMmtfaW50ZXJsZWF2ZShGRlRDb21wbGV4ICp6KQorK3sKKysgICAgZmZ0ODE5Ml9lMmtf
aW50ZXJsZWF2ZSh6KTsKKysgICAgZmZ0NDA5Nl9lMmtfaW50ZXJsZWF2ZSh6KzgxOTIpOworKyAg
ICBmZnQ0MDk2X2Uya19pbnRlcmxlYXZlKHorMTIyODgpOworKyAgICBwYXNzX2Uya19pbnRlcmxl
YXZlKHosZmZfY29zXzE2Mzg0LDIwNDgpOworK30KKysKKytzdGF0aWMgdm9pZCBmZnQzMjc2OF9l
MmtfaW50ZXJsZWF2ZShGRlRDb21wbGV4ICp6KQorK3sKKysgICAgZmZ0MTYzODRfZTJrX2ludGVy
bGVhdmUoeik7CisrICAgIGZmdDgxOTJfZTJrX2ludGVybGVhdmUoeisxNjM4NCk7CisrICAgIGZm
dDgxOTJfZTJrX2ludGVybGVhdmUoeisyNDU3Nik7CisrICAgIHBhc3NfZTJrX2ludGVybGVhdmUo
eixmZl9jb3NfMzI3NjgsNDA5Nik7CisrfQorKworK3N0YXRpYyB2b2lkIGZmdDY1NTM2X2Uya19p
bnRlcmxlYXZlKEZGVENvbXBsZXggKnopCisreworKyAgICBmZnQzMjc2OF9lMmtfaW50ZXJsZWF2
ZSh6KTsKKysgICAgZmZ0MTYzODRfZTJrX2ludGVybGVhdmUoeiszMjc2OCk7CisrICAgIGZmdDE2
Mzg0X2Uya19pbnRlcmxlYXZlKHorNDkxNTIpOworKyAgICBwYXNzX2Uya19pbnRlcmxlYXZlKHos
ZmZfY29zXzY1NTM2LDgxOTIpOworK30KKysKKytzdGF0aWMgdm9pZCBmZnQzMl9lMmsoRkZUQ29t
cGxleCAqeikKKyt7CisrICAgIGZmdDE2X2Uyayh6KTsKKysgICAgZmZ0OF9lMmsoeisxNik7Cisr
ICAgIGZmdDhfZTJrKHorMjQpOworKyAgICBwYXNzX2Uyayh6LGZmX2Nvc18zMiw0KTsKKyt9Cisr
Cisrc3RhdGljIHZvaWQgZmZ0NjRfZTJrKEZGVENvbXBsZXggKnopCisreworKyAgICBmZnQzMl9l
Mmsoeik7CisrICAgIGZmdDE2X2Uyayh6KzMyKTsKKysgICAgZmZ0MTZfZTJrKHorNDgpOworKyAg
ICBwYXNzX2Uyayh6LGZmX2Nvc182NCwgOCk7CisrfQorKworK3N0YXRpYyB2b2lkIGZmdDEyOF9l
MmsoRkZUQ29tcGxleCAqeikKKyt7CisrICAgIGZmdDY0X2Uyayh6KTsKKysgICAgZmZ0MzJfZTJr
KHorNjQpOworKyAgICBmZnQzMl9lMmsoeis5Nik7CisrICAgIHBhc3NfZTJrKHosZmZfY29zXzEy
OCwxNik7CisrfQorKworK3N0YXRpYyB2b2lkIGZmdDI1Nl9lMmsoRkZUQ29tcGxleCAqeikKKyt7
CisrICAgIGZmdDEyOF9lMmsoeik7CisrICAgIGZmdDY0X2Uyayh6KzEyOCk7CisrICAgIGZmdDY0
X2Uyayh6KzE5Mik7CisrICAgIHBhc3NfZTJrKHosZmZfY29zXzI1NiwzMik7CisrfQorKworK3N0
YXRpYyB2b2lkIGZmdDUxMl9lMmsoRkZUQ29tcGxleCAqeikKKyt7CisrICAgIGZmdDI1Nl9lMmso
eik7CisrICAgIGZmdDEyOF9lMmsoeisyNTYpOworKyAgICBmZnQxMjhfZTJrKHorMzg0KTsKKysg
ICAgcGFzc19lMmsoeixmZl9jb3NfNTEyLDY0KTsKKyt9CisrCisrc3RhdGljIHZvaWQgZmZ0MTAy
NF9lMmsoRkZUQ29tcGxleCAqeikKKyt7CisrICAgIGZmdDUxMl9lMmsoeik7CisrICAgIGZmdDI1
Nl9lMmsoeis1MTIpOworKyAgICBmZnQyNTZfZTJrKHorNzY4KTsKKysgICAgcGFzc19lMmsoeixm
Zl9jb3NfMTAyNCwxMjgpOworKworK30KKysKKytzdGF0aWMgdm9pZCBmZnQyMDQ4X2UyayhGRlRD
b21wbGV4ICp6KQorK3sKKysgICAgZmZ0MTAyNF9lMmsoeik7CisrICAgIGZmdDUxMl9lMmsoeisx
MDI0KTsKKysgICAgZmZ0NTEyX2Uyayh6KzE1MzYpOworKyAgICBwYXNzX2Uyayh6LGZmX2Nvc18y
MDQ4LDI1Nik7CisrfQorKworK3N0YXRpYyB2b2lkIGZmdDQwOTZfZTJrKEZGVENvbXBsZXggKnop
CisreworKyAgICBmZnQyMDQ4X2Uyayh6KTsKKysgICAgZmZ0MTAyNF9lMmsoeisyMDQ4KTsKKysg
ICAgZmZ0MTAyNF9lMmsoeiszMDcyKTsKKysgICAgcGFzc19lMmsoeixmZl9jb3NfNDA5NiwgNTEy
KTsKKyt9CisrCisrc3RhdGljIHZvaWQgZmZ0ODE5Ml9lMmsoRkZUQ29tcGxleCAqeikKKyt7Cisr
ICAgIGZmdDQwOTZfZTJrKHopOworKyAgICBmZnQyMDQ4X2Uyayh6KzQwOTYpOworKyAgICBmZnQy
MDQ4X2Uyayh6KzYxNDQpOworKyAgICBwYXNzX2Uyayh6LGZmX2Nvc184MTkyLDEwMjQpOworK30K
KysKKytzdGF0aWMgdm9pZCBmZnQxNjM4NF9lMmsoRkZUQ29tcGxleCAqeikKKyt7CisrICAgIGZm
dDgxOTJfZTJrKHopOworKyAgICBmZnQ0MDk2X2Uyayh6KzgxOTIpOworKyAgICBmZnQ0MDk2X2Uy
ayh6KzEyMjg4KTsKKysgICAgcGFzc19lMmsoeixmZl9jb3NfMTYzODQsMjA0OCk7CisrfQorKwor
K3N0YXRpYyB2b2lkIGZmdDMyNzY4X2UyayhGRlRDb21wbGV4ICp6KQorK3sKKysgICAgZmZ0MTYz
ODRfZTJrKHopOworKyAgICBmZnQ4MTkyX2Uyayh6KzE2Mzg0KTsKKysgICAgZmZ0ODE5Ml9lMmso
eisyNDU3Nik7CisrICAgIHBhc3NfZTJrKHosZmZfY29zXzMyNzY4LDQwOTYpOworK30KKysKKytz
dGF0aWMgdm9pZCBmZnQ2NTUzNl9lMmsoRkZUQ29tcGxleCAqeikKKyt7CisrICAgIGZmdDMyNzY4
X2Uyayh6KTsKKysgICAgZmZ0MTYzODRfZTJrKHorMzI3NjgpOworKyAgICBmZnQxNjM4NF9lMmso
eis0OTE1Mik7CisrICAgIHBhc3NfZTJrKHosZmZfY29zXzY1NTM2LDgxOTIpOworK30KKysKKytz
dGF0aWMgdm9pZCAoKiBjb25zdCBmZnRfZGlzcGF0Y2hfZTJrW10pKEZGVENvbXBsZXgqKSA9IHsK
KysgICAgZmZ0NF9lMmssIGZmdDhfZTJrLCBmZnQxNl9lMmssIGZmdDMyX2UyaywgZmZ0NjRfZTJr
LCBmZnQxMjhfZTJrLCBmZnQyNTZfZTJrLCBmZnQ1MTJfZTJrLCBmZnQxMDI0X2UyaywKKysgICAg
ZmZ0MjA0OF9lMmssIGZmdDQwOTZfZTJrLCBmZnQ4MTkyX2UyaywgZmZ0MTYzODRfZTJrLCBmZnQz
Mjc2OF9lMmssIGZmdDY1NTM2X2UyaywKKyt9OworKworK3N0YXRpYyB2b2lkICgqIGNvbnN0IGZm
dF9kaXNwYXRjaF9lMmtfaW50ZXJsZWF2ZVtdKShGRlRDb21wbGV4KikgPSB7CisrICAgIGZmdDRf
ZTJrX2ludGVybGVhdmUsIGZmdDhfZTJrX2ludGVybGVhdmUsIGZmdDE2X2Uya19pbnRlcmxlYXZl
LCBmZnQzMl9lMmtfaW50ZXJsZWF2ZSwgZmZ0NjRfZTJrX2ludGVybGVhdmUsCisrICAgIGZmdDEy
OF9lMmtfaW50ZXJsZWF2ZSwgZmZ0MjU2X2Uya19pbnRlcmxlYXZlLCBmZnQ1MTJfZTJrX2ludGVy
bGVhdmUsIGZmdDEwMjRfZTJrX2ludGVybGVhdmUsCisrICAgIGZmdDIwNDhfZTJrX2ludGVybGVh
dmUsIGZmdDQwOTZfZTJrX2ludGVybGVhdmUsIGZmdDgxOTJfZTJrX2ludGVybGVhdmUsIGZmdDE2
Mzg0X2Uya19pbnRlcmxlYXZlLCBmZnQzMjc2OF9lMmtfaW50ZXJsZWF2ZSwgZmZ0NjU1MzZfZTJr
X2ludGVybGVhdmUsCisrfTsKKysKKyt2b2lkIGZmX2ZmdF9jYWxjX2ludGVybGVhdmVfZTJrKEZG
VENvbnRleHQgKnMsIEZGVENvbXBsZXggKnopCisreworKyAgICAgZmZ0X2Rpc3BhdGNoX2Uya19p
bnRlcmxlYXZlW3MtPm5iaXRzLTJdKHopOworK30KKysKKyt2b2lkIGZmX2ZmdF9jYWxjX2UyayhG
RlRDb250ZXh0ICpzLCBGRlRDb21wbGV4ICp6KQorK3sKKysgICAgIGZmdF9kaXNwYXRjaF9lMmtb
cy0+bmJpdHMtMl0oeik7CisrfQorKworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZTJrL2ZmdC5o
IGIvbGliYXZjb2RlYy9lMmsvZmZ0LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw
MDAwLi42MmFlMmYzCistLS0gL2Rldi9udWxsCisrKysgYi9saWJhdmNvZGVjL2Uyay9mZnQuaAor
QEAgLTAsMCArMSwyOSBAQAorKy8qCisrICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgor
KyAqCisrICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIEZGbXBlZyBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBG
Rm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEw
LTEzMDEgVVNBCisrICovCisrCisrI2lmbmRlZiBBVkNPREVDX0UyS19GRlRfSAorKyNkZWZpbmUg
QVZDT0RFQ19FMktfRkZUX0gKKysKKysjaW5jbHVkZSAiY29uZmlnLmgiCisrI2luY2x1ZGUgImxp
YmF2Y29kZWMvZmZ0LmgiCisrI2luY2x1ZGUgImxpYmF2Y29kZWMvZmZ0LWludGVybmFsLmgiCisr
Cisrdm9pZCBmZl9mZnRfY2FsY19pbnRlcmxlYXZlX2UyayhGRlRDb250ZXh0ICpzLCBGRlRDb21w
bGV4ICp6KTsKKyt2b2lkIGZmX2ZmdF9jYWxjX2UyayhGRlRDb250ZXh0ICpzLCBGRlRDb21wbGV4
ICp6KTsKKysKKysjZW5kaWYgLyogQVZDT0RFQ19FMktfRkZUX0ggKi8KK2RpZmYgLS1naXQgYS9s
aWJhdmNvZGVjL2Uyay9mZnRfaW5pdC5jIGIvbGliYXZjb2RlYy9lMmsvZmZ0X2luaXQuYworbmV3
IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjExNjIzNmQKKy0tLSAvZGV2L251bGwK
KysrKyBiL2xpYmF2Y29kZWMvZTJrL2ZmdF9pbml0LmMKK0BAIC0wLDAgKzEsMTUyIEBACisrLyoK
KysgKiBGRlQvSUZGVCB0cmFuc2Zvcm1zCisrICogQ29weXJpZ2h0IChDKSAyMDIxIElseWEgS3Vy
ZHl1a292IDxqcGVncXNAZ21haWwuY29tPiBmb3IgQmFzZUFMVCwgTHRkCisrICogQ29weXJpZ2h0
IChjKSAyMDA5IExvcmVuIE1lcnJpdHQKKysgKgorKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZG
bXBlZy4KKysgKgorKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAyLjEgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBG
Rm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25n
IHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAwMjExMC0xMzAxIFVTQQorKyAqLworKworKyNpbmNsdWRlICJjb25maWcuaCIKKysjaW5jbHVk
ZSAibGliYXZ1dGlsL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL2NwdS5oIgorKyNp
bmNsdWRlICJsaWJhdnV0aWwvZTJrL3V0aWxfZTJrLmgiCisrI2luY2x1ZGUgImxpYmF2Y29kZWMv
ZmZ0LmgiCisrCisrI2luY2x1ZGUgImZmdC5oIgorKworKy8qKgorKyAqIERvIGEgY29tcGxleCBG
RlQgd2l0aCB0aGUgcGFyYW1ldGVycyBkZWZpbmVkIGluIGZmX2ZmdF9pbml0KCkuCisrICogVGhl
IGlucHV0IGRhdGEgbXVzdCBiZSBwZXJtdXRlZCBiZWZvcmUgd2l0aCBzLT5yZXZ0YWIgdGFibGUu
CisrICogTm8gMS4wIC8gc3FydChuKSBub3JtYWxpemF0aW9uIGlzIGRvbmUuCisrICoKKysgKiBU
aGlzIGNvZGUgYXNzdW1lcyB0aGF0IHRoZSAneicgcG9pbnRlciBpcyAxNiBieXRlcy1hbGlnbmVk
LgorKyAqIEl0IGFsc28gYXNzdW1lcyBhbGwgRkZUQ29tcGxleCBhcmUgOCBieXRlcy1hbGlnbmVk
IHBhaXJzIG9mIGZsb2F0cy4KKysgKi8KKysKKytzdGF0aWMgdm9pZCBpbWRjdF9oYWxmX2UyayhG
RlRDb250ZXh0ICpzLCBGRlRTYW1wbGUgKm91dHB1dCwgY29uc3QgRkZUU2FtcGxlICppbnB1dCkK
Kyt7CisrICAgIGludCBqLCBrOworKyAgICBpbnQgbiA9IDEgPDwgcy0+bWRjdF9iaXRzOworKyAg
ICBpbnQgbjQgPSBuID4+IDI7CisrICAgIGludCBuOCA9IG4gPj4gMzsKKysgICAgaW50IG4zMiA9
IG4gPj4gNTsKKysgICAgY29uc3QgdWludDE2X3QgKnJldnRhYmogPSBzLT5yZXZ0YWI7CisrICAg
IGNvbnN0IHVpbnQxNl90ICpyZXZ0YWJrID0gcy0+cmV2dGFiICsgbjQ7CisrICAgIGNvbnN0IHZl
Y19mICp0Y29zID0gKGNvbnN0IHZlY19mKikocy0+dGNvcyArIG44KTsKKysgICAgY29uc3QgdmVj
X2YgKnRzaW4gPSAoY29uc3QgdmVjX2YqKShzLT50c2luICsgbjgpOworKyAgICBjb25zdCB2ZWNf
ZiAqcGluID0gKGNvbnN0IHZlY19mKikoaW5wdXQgKyBuNCk7CisrICAgIHZlY19mICpwb3V0ID0g
KHZlY19mKikob3V0cHV0ICsgbjQpOworKworKyAgICAvKiBwcmUgcm90YXRpb24gKi8KKysgICAg
ayA9IG4zMiAtIDE7CisrICAgIGRvIHsKKysgICAgICAgIHZlY19mIGNvcywgc2luLCBjb3MwLCBz
aW4wLCBjb3MxLCBzaW4xOworKyAgICAgICAgdmVjX2YgcmUsIGltLCByMCwgaTAsIHIxLCBpMSwg
YSwgYjsKKysjZGVmaW5lIENNVUxBKHAsIHBlcm0pIFwKKysgICAgYSA9IHBpblsgayoyK3BdOyAg
ICAgICAgICAgICAgICAgLyogeyB6W2tdLnJlLCAgICB6W2tdLmltLCAgICB6W2srMV0ucmUsICB6
W2srMV0uaW0gIH0gKi8gXAorKyAgICBiID0gcGluWy1rKjItcC0xXTsgICAgICAgICAgICAgICAv
KiB7IHpbLWstMl0ucmUsIHpbLWstMl0uaW0sIHpbLWstMV0ucmUsIHpbLWstMV0uaW0gfSAqLyBc
CisrICAgIHJlID0gX21tX3NodWZmbGVfcHMoYSwgYiwgMHg4OCk7IC8qIHsgeltrXS5yZSwgICAg
eltrKzFdLnJlLCAgelstay0yXS5yZSwgelstay0xXS5yZSB9ICovIFwKKysgICAgaW0gPSBfbW1f
c2h1ZmZsZV9wcyhiLCBhLCAweDc3KTsgLyogeyB6Wy1rLTFdLmltLCB6Wy1rLTJdLmltLCB6W2sr
MV0uaW0sICB6W2tdLmltICAgIH0gKi8gXAorKyAgICBjb3MgPSBfbW1fc2h1ZmZsZV9wcyhjb3Mw
LCBjb3MxLCBwZXJtKTsgIC8qIHsgY29zW2tdLCBjb3NbaysxXSwgY29zWy1rLTJdLCBjb3NbLWst
MV0gfSAqLyBcCisrICAgIHNpbiA9IF9tbV9zaHVmZmxlX3BzKHNpbjAsIHNpbjEsIHBlcm0pOyBc
CisrICAgIHIjI3AgPSBfbW1fc3ViX3BzKF9tbV9tdWxfcHMoaW0sIGNvcyksIF9tbV9tdWxfcHMo
cmUsIHNpbikpOyBcCisrICAgIGkjI3AgPSBfbW1fYWRkX3BzKF9tbV9tdWxfcHMocmUsIGNvcyks
IF9tbV9tdWxfcHMoaW0sIHNpbikpOworKyNkZWZpbmUgU1RPUkUyKEwsIHYsIGRzdCkgXAorKyAg
ICBWRUNfU1QjI0wob3V0cHV0ICsgZHN0ICogMiwgX21tX2Nhc3Rwc19zaTEyOCh2KSk7CisrI2Rl
ZmluZSBTVE9SRTgocCkgXAorKyAgICBhID0gX21tX3VucGFja2xvX3BzKHIjI3AsIGkjI3ApOyBc
CisrICAgIGIgPSBfbW1fdW5wYWNraGlfcHMociMjcCwgaSMjcCk7IFwKKysgICAgU1RPUkUyKEws
IGEsIHJldnRhYmtbIHAqMi00XSk7IFwKKysgICAgU1RPUkUyKEgsIGEsIHJldnRhYmtbIHAqMi0z
XSk7IFwKKysgICAgU1RPUkUyKEwsIGIsIHJldnRhYmpbLXAqMisyXSk7IFwKKysgICAgU1RPUkUy
KEgsIGIsIHJldnRhYmpbLXAqMiszXSk7CisrCisrICAgICAgICBjb3MwID0gdGNvc1trXTsKKysg
ICAgICAgIHNpbjAgPSB0c2luW2tdOworKyAgICAgICAgY29zMSA9IHRjb3NbLWstMV07CisrICAg
ICAgICBzaW4xID0gdHNpblstay0xXTsKKysgICAgICAgIENNVUxBKDAsIDB4ZTQpOworKyAgICAg
ICAgQ01VTEEoMSwgMHg0ZSk7CisrICAgICAgICBTVE9SRTgoMCk7CisrICAgICAgICBTVE9SRTgo
MSk7CisrICAgICAgICByZXZ0YWJqICs9IDQ7CisrICAgICAgICByZXZ0YWJrIC09IDQ7CisrICAg
ICAgICBrLS07CisrICAgIH0gd2hpbGUgKGsgPj0gMCk7CisrCisrICAgIGZmX2ZmdF9jYWxjX2Uy
ayhzLCAoRkZUQ29tcGxleCopb3V0cHV0KTsKKysKKysgICAgLyogcG9zdCByb3RhdGlvbiArIHJl
b3JkZXJpbmcgKi8KKysgICAgaiA9IC1uMzI7CisrICAgIGsgPSBuMzIgLSAxOworKyAgICBkbyB7
CisrICAgICAgICB2ZWNfZiBjb3MsIHNpbiwgcmUsIGltLCBhLCBiLCBjLCBkOworKyNkZWZpbmUg
Q01VTEIoZDAsIGQxLCBvKSAgICAgICAgICAgICAgICAgIFwKKysgICAgcmUgPSBwb3V0W28qMl07
IGltID0gcG91dFtvKjIrMV07IFwKKysgICAgY29zID0gdGNvc1tvXTsgIHNpbiA9IHRzaW5bb107
ICAgIFwKKysgICAgZDAgPSBfbW1fc3ViX3BzKF9tbV9tdWxfcHMoaW0sIHNpbiksIF9tbV9tdWxf
cHMocmUsIGNvcykpOyBcCisrICAgIGQxID0gX21tX2FkZF9wcyhfbW1fbXVsX3BzKHJlLCBzaW4p
LCBfbW1fbXVsX3BzKGltLCBjb3MpKTsKKysKKysgICAgICAgIENNVUxCKGEsIGIsIGopOworKyAg
ICAgICAgQ01VTEIoYywgZCwgayk7CisrICAgICAgICBkID0gX21tX3NodWZmbGVfcHMoZCwgZCwg
MHgxYik7CisrICAgICAgICBiID0gX21tX3NodWZmbGVfcHMoYiwgYiwgMHgxYik7CisrICAgICAg
ICBwb3V0WzIqal0gICA9IF9tbV91bnBhY2tsb19wcyhhLCBkKTsKKysgICAgICAgIHBvdXRbMipq
KzFdID0gX21tX3VucGFja2hpX3BzKGEsIGQpOworKyAgICAgICAgcG91dFsyKmtdICAgPSBfbW1f
dW5wYWNrbG9fcHMoYywgYik7CisrICAgICAgICBwb3V0WzIqaysxXSA9IF9tbV91bnBhY2toaV9w
cyhjLCBiKTsKKysgICAgICAgIGorKzsKKysgICAgICAgIGstLTsKKysgICAgfSB3aGlsZSAoayA+
PSAwKTsKKyt9CisrCisrc3RhdGljIHZvaWQgaW1kY3RfY2FsY19lMmsoRkZUQ29udGV4dCAqcywg
RkZUU2FtcGxlICpvdXRwdXQsIGNvbnN0IEZGVFNhbXBsZSAqaW5wdXQpCisreworKyAgICBpbnQg
azsKKysgICAgaW50IG4gPSAxIDw8IHMtPm1kY3RfYml0czsKKysgICAgaW50IG40ID0gbiA+PiAy
OworKyAgICBpbnQgbjE2ID0gbiA+PiA0OworKyAgICB2ZWNfdTMyIHNpZ24gPSBfbW1fc2V0MV9l
cGkzMigtMSA8PCAzMSk7CisrICAgIHZlY191MzIgKnAwID0gKHZlY191MzIqKShvdXRwdXQgKyBu
NCk7CisrICAgIHZlY191MzIgKnAxID0gKHZlY191MzIqKShvdXRwdXQgKyBuNCAqIDMpOworKwor
KyAgICBpbWRjdF9oYWxmX2UyayhzLCBvdXRwdXQgKyBuNCwgaW5wdXQpOworKworKyAgICBmb3Ig
KGsgPSAwOyBrIDwgbjE2OyBrKyspIHsKKysgICAgICAgIHZlY191MzIgYSA9IHAwW2tdIF4gc2ln
bjsKKysgICAgICAgIHZlY191MzIgYiA9IHAxWy0xIC0ga107CisrICAgICAgICBwMFstMSAtIGtd
ID0gX21tX3NodWZmbGVfZXBpMzIoYSwgMHgxYik7CisrICAgICAgICBwMVtrXSAgICAgID0gX21t
X3NodWZmbGVfZXBpMzIoYiwgMHgxYik7CisrICAgIH0KKyt9CisrCisrYXZfY29sZCB2b2lkIGZm
X2ZmdF9pbml0X2UyayhGRlRDb250ZXh0ICpzKQorK3sKKysgICAgaWYgKCFFMktfQkFTRShhdl9n
ZXRfY3B1X2ZsYWdzKCkpKQorKyAgICAgICAgcmV0dXJuOworKworKyAgICAvLyAhY2hlY2thc20K
KysgICAgLy8gbGliYXZjb2RlYy90ZXN0cy9mZnQgLW4gMi4uMTQgWy1pXQorKyAgICAvLyBsaWJh
dmNvZGVjL3Rlc3RzL2ZmdCAte218ZHxyfSAtbiA0Li4xNCBbLWldCisrCisrICAgIHMtPmZmdF9j
YWxjID0gZmZfZmZ0X2NhbGNfaW50ZXJsZWF2ZV9lMms7CisrCisrICAgIGlmIChzLT5tZGN0X2Jp
dHMgPj0gNSkgeworKyAgICAgICAgcy0+aW1kY3RfY2FsYyA9IGltZGN0X2NhbGNfZTJrOworKyAg
ICAgICAgcy0+aW1kY3RfaGFsZiA9IGltZGN0X2hhbGZfZTJrOworKyAgICB9CisrfQorZGlmZiAt
LWdpdCBhL2xpYmF2Y29kZWMvZTJrL2ZtdGNvbnZlcnQuYyBiL2xpYmF2Y29kZWMvZTJrL2ZtdGNv
bnZlcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmJmZDljYjUKKy0t
LSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29kZWMvZTJrL2ZtdGNvbnZlcnQuYworQEAgLTAsMCAr
MSw1NSBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDIxIElseWEgS3VyZHl1a292IDxqcGVn
cXNAZ21haWwuY29tPiBmb3IgQmFzZUFMVCwgTHRkCisrICogQ29weXJpZ2h0IChjKSAyMDA2IEx1
Y2EgQmFyYmF0byA8bHVfemVyb0BnZW50b28ub3JnPgorKyAqCisrICogVGhpcyBmaWxlIGlzIHBh
cnQgb2YgRkZtcGVnLgorKyAqCisrICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysg
KgorKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vu
c2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisrICovCisrCisrI2luY2x1ZGUgImNvbmZpZy5oIgor
KyNpbmNsdWRlICJsaWJhdnV0aWwvYXR0cmlidXRlcy5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwv
Y3B1LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9tZW0uaCIKKysjaW5jbHVkZSAibGliYXZ1dGls
L2Uyay9jcHUuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Uyay91dGlsX2Uyay5oIgorKyNpbmNs
dWRlICJsaWJhdmNvZGVjL2ZtdGNvbnZlcnQuaCIKKysKKytzdGF0aWMgdm9pZCBpbnQzMl90b19m
bG9hdF9mbXVsX3NjYWxhcl9lMmsoZmxvYXQgKmRzdCwgY29uc3QgaW50MzJfdCAqc3JjLAorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBtdWwsIGludCBs
ZW4pCisreworKyAgICBpbnQgaTsKKysgICAgX19tMTI4IHNyYzEsIHNyYzIsIGRzdDEsIGRzdDIs
IG11bF92OworKyAgICBtdWxfdiA9IF9tbV9zZXQxX3BzKG11bCk7CisrCisrICAgIFBSQUdNQV9F
MksoIml2ZGVwIikKKysgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7CisrICAgICAg
ICBzcmMxID0gX21tX2N2dGVwaTMyX3BzKFZFQ19MRChzcmMgKyBpKSk7CisrICAgICAgICBzcmMy
ID0gX21tX2N2dGVwaTMyX3BzKFZFQ19MRChzcmMgKyBpICsgNCkpOworKyAgICAgICAgZHN0MSA9
IF9tbV9tdWxfcHMoc3JjMSwgbXVsX3YpOworKyAgICAgICAgZHN0MiA9IF9tbV9tdWxfcHMoc3Jj
MiwgbXVsX3YpOworKyAgICAgICAgX21tX3N0b3JldV9wcyhkc3QgKyBpLCBkc3QxKTsKKysgICAg
ICAgIF9tbV9zdG9yZXVfcHMoZHN0ICsgaSArIDQsIGRzdDIpOworKyAgICB9CisrfQorKworK2F2
X2NvbGQgdm9pZCBmZl9mbXRfY29udmVydF9pbml0X2UyayhGbXRDb252ZXJ0Q29udGV4dCAqYywK
KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZDb2RlY0NvbnRleHQgKmF2
Y3R4KQorK3sKKysgICAgaWYgKCFFMktfQkFTRShhdl9nZXRfY3B1X2ZsYWdzKCkpKQorKyAgICAg
ICAgcmV0dXJuOworKworKyAgICBjLT5pbnQzMl90b19mbG9hdF9mbXVsX3NjYWxhciA9IGludDMy
X3RvX2Zsb2F0X2ZtdWxfc2NhbGFyX2UyazsKKyt9CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9l
MmsvaDI2NGNocm9tYS5jIGIvbGliYXZjb2RlYy9lMmsvaDI2NGNocm9tYS5jCituZXcgZmlsZSBt
b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uODAyYTI2YworLS0tIC9kZXYvbnVsbAorKysrIGIv
bGliYXZjb2RlYy9lMmsvaDI2NGNocm9tYS5jCitAQCAtMCwwICsxLDYzIEBACisrLyoKKysgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgSWx5YSBLdXJkeXVrb3YgPGpwZWdxc0BnbWFpbC5jb20+IGZvciBC
YXNlQUxULCBMdGQKKysgKiBDb3B5cmlnaHQgKGMpIDIwMDQgUm9tYWluIERvbGJlYXUgPHJvbWFp
bkBkb2xiZWF1Lm9yZz4KKysgKgorKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKysg
KgorKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBGRm1wZWcgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZt
cGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0x
MzAxIFVTQQorKyAqLworKworKyNpbmNsdWRlICJjb25maWcuaCIKKysKKysjaW5jbHVkZSAibGli
YXZ1dGlsL2F0dHJpYnV0ZXMuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2NwdS5oIgorKyNpbmNs
dWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsv
Y3B1LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsvdXRpbF9lMmsuaCIKKysKKysjaW5jbHVk
ZSAibGliYXZjb2RlYy9oMjY0Y2hyb21hLmgiCisrCisrI2RlZmluZSBQVVRfT1BfVThfRTJLKGQs
IHMsIGRzdCkgZCA9IHMKKysjZGVmaW5lIEFWR19PUF9VOF9FMksoZCwgcywgZHN0KSBkID0gX21t
X2F2Z19lcHU4KGRzdCwgcykKKysKKysjZGVmaW5lIE9QX1U4X0UySyAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFVUX09QX1U4X0UySworKyNkZWZpbmUgUFJFRklYX2gyNjRfY2hyb21hX21jOF9l
MmsgICAgICAgICBwdXRfaDI2NF9jaHJvbWFfbWM4X2UyaworKyNkZWZpbmUgUFJFRklYX2gyNjRf
Y2hyb21hX21jOF9udW0gICAgICAgICBlMmtfcHV0X2gyNjRfY2hyb21hX21jOF9udW0KKysjaW5j
bHVkZSAiaDI2NGNocm9tYV90ZW1wbGF0ZS5jIgorKyN1bmRlZiBPUF9VOF9FMksKKysjdW5kZWYg
UFJFRklYX2gyNjRfY2hyb21hX21jOF9lMmsKKysjdW5kZWYgUFJFRklYX2gyNjRfY2hyb21hX21j
OF9udW0KKysKKysjZGVmaW5lIE9QX1U4X0UySyAgICAgICAgICAgICAgICAgICAgICAgICAgQVZH
X09QX1U4X0UySworKyNkZWZpbmUgUFJFRklYX2gyNjRfY2hyb21hX21jOF9lMmsgICAgICAgICBh
dmdfaDI2NF9jaHJvbWFfbWM4X2UyaworKyNkZWZpbmUgUFJFRklYX2gyNjRfY2hyb21hX21jOF9u
dW0gICAgICAgICBlMmtfYXZnX2gyNjRfY2hyb21hX21jOF9udW0KKysjaW5jbHVkZSAiaDI2NGNo
cm9tYV90ZW1wbGF0ZS5jIgorKyN1bmRlZiBPUF9VOF9FMksKKysjdW5kZWYgUFJFRklYX2gyNjRf
Y2hyb21hX21jOF9lMmsKKysjdW5kZWYgUFJFRklYX2gyNjRfY2hyb21hX21jOF9udW0KKysKKyth
dl9jb2xkIHZvaWQgZmZfaDI2NGNocm9tYV9pbml0X2UyayhIMjY0Q2hyb21hQ29udGV4dCAqYywg
aW50IGJpdF9kZXB0aCkKKyt7CisrICAgIGNvbnN0IGludCBoaWdoX2JpdF9kZXB0aCA9IGJpdF9k
ZXB0aCA+IDg7CisrCisrICAgIGlmICghRTJLX0JBU0UoYXZfZ2V0X2NwdV9mbGFncygpKSkKKysg
ICAgICAgIHJldHVybjsKKysKKysgICAgLy8gIWNoZWNrYXNtCisrICAgIGlmICghaGlnaF9iaXRf
ZGVwdGgpIHsKKysgICAgICAgIGMtPnB1dF9oMjY0X2Nocm9tYV9waXhlbHNfdGFiWzBdID0gcHV0
X2gyNjRfY2hyb21hX21jOF9lMms7CisrICAgICAgICBjLT5hdmdfaDI2NF9jaHJvbWFfcGl4ZWxz
X3RhYlswXSA9IGF2Z19oMjY0X2Nocm9tYV9tYzhfZTJrOworKyAgICB9CisrfQorZGlmZiAtLWdp
dCBhL2xpYmF2Y29kZWMvZTJrL2gyNjRjaHJvbWFfdGVtcGxhdGUuYyBiL2xpYmF2Y29kZWMvZTJr
L2gyNjRjaHJvbWFfdGVtcGxhdGUuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw
MDAuLjYyM2UwYjIKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29kZWMvZTJrL2gyNjRjaHJv
bWFfdGVtcGxhdGUuYworQEAgLTAsMCArMSwxMTMgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykg
MjAyMSBJbHlhIEt1cmR5dWtvdiA8anBlZ3FzQGdtYWlsLmNvbT4gZm9yIEJhc2VBTFQsIEx0ZAor
KyAqIENvcHlyaWdodCAoYykgMjAwNCBSb21haW4gRG9sYmVhdSA8cm9tYWluQGRvbGJlYXUub3Jn
PgorKyAqCisrICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorKyAqCisrICogRkZtcGVn
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
KyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisrICov
CisrCisrI2luY2x1ZGUgImxpYmF2dXRpbC9tZW0uaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Uy
ay91dGlsX2Uyay5oIgorKworKy8qIHRoaXMgY29kZSBhc3N1bWUgdGhhdCBzdHJpZGUgJSAxNiA9
PSAwICovCisrCisrI2RlZmluZSBDSFJPTUFfTUM4X0UyS19DT1JFKCkgXAorKyAgICB2MSA9IF9t
bV9hZGRfZXBpMTYoX21tX21hZGR1YnNfZXBpMTYodjAsIHZBKSwgYmlhcyk7IFwKKysgICAgdjEg
PSBfbW1fYWRkX2VwaTE2KF9tbV9tYWRkdWJzX2VwaTE2KHYyLCB2QiksIHYxKTsgXAorKyAgICB2
MSA9IF9tbV9zcmFpX2VwaTE2KHYxLCA2KTsgXAorKyAgICB2MSA9IF9tbV9wYWNrdXNfZXBpMTYo
djEsIHYxKTsgXAorKyAgICBPUF9VOF9FMksodjEsIHYxLCBWRUNfTEQ4KGRzdCkpOyBcCisrICAg
IFZFQ19TVEwoZHN0LCB2MSk7IGRzdCArPSBzdHJpZGU7IFwKKysgICAgdjAgPSB2MjsKKysKKysj
ZGVmaW5lIENIUk9NQV9NQzhfRTJLX0NPUkVfU0lNUExFKHYxKSBcCisrICAgIHYxID0gX21tX2Fk
ZF9lcGkxNihfbW1fbWFkZHVic19lcGkxNih2MSwgdkEpLCBiaWFzKTsgXAorKyAgICB2MSA9IF9t
bV9zcmFpX2VwaTE2KHYxLCA2KTsgXAorKyAgICB2MSA9IF9tbV9wYWNrdXNfZXBpMTYodjEsIHYx
KTsgXAorKyAgICBPUF9VOF9FMksodjEsIHYxLCBWRUNfTEQ4KGRzdCkpOyBcCisrICAgIFZFQ19T
VEwoZHN0LCB2MSk7IGRzdCArPSBzdHJpZGU7CisrCisrI2RlZmluZSBHRVRfVlNSQzEodjApIHYw
ID0gVkVDX0xEOChzcmMpOyBzcmMgKz0gc3RyaWRlOworKyNkZWZpbmUgR0VUX1ZTUkMyKHYwLCB2
MSkgXAorKyAgICB2MCA9IFZFQ19MRDgoc3JjKTsgXAorKyAgICB2MSA9IFZFQ19MRDgoc3JjICsg
MSk7IFwKKysgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpOCh2MCwgdjEpOyBzcmMgKz0gc3RyaWRl
OworKworKyNpZmRlZiBQUkVGSVhfaDI2NF9jaHJvbWFfbWM4X2UyaworK3N0YXRpYyB2b2lkIFBS
RUZJWF9oMjY0X2Nocm9tYV9tYzhfZTJrKHVpbnQ4X3QgKmRzdCwgdWludDhfdCAqc3JjLAorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGlu
dCBoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCBpbnQg
eSkKKyt7CisrICAgIGludCBpLCB4bSA9ICg4IC0geCkgfCB4IDw8IDg7CisrICAgIF9fbTEyOGkg
dkEsIHZCLCBiaWFzID0gX21tX3NldDFfZXBpMTYoMzIpOworKyAgICBfX20xMjhpIHYwLCB2MSwg
djIsIHYzOworKworKyAgICBpZiAoeSkgeworKyAgICAgICAgaWYgKHgpIHsKKysgICAgICAgICAg
ICB2QSA9IF9tbV9zZXQxX2VwaTE2KHhtICogKDggLSB5KSk7CisrICAgICAgICAgICAgdkIgPSBf
bW1fc2V0MV9lcGkxNih4bSAqIHkpOworKyAgICAgICAgICAgIEdFVF9WU1JDMih2MCwgdjEpOwor
KyAgICAgICAgICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgICAgICAgICBQUkFHTUFfRTJL
KCJ1bnJvbGwoMikiKQorKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBoOyBpKyspIHsKKysg
ICAgICAgICAgICAgICAgR0VUX1ZTUkMyKHYyLCB2Myk7CisrICAgICAgICAgICAgICAgIENIUk9N
QV9NQzhfRTJLX0NPUkUoKTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9IGVsc2UgeworKyAg
ICAgICAgICAgIHZBID0gX21tX3NldDFfZXBpMTYoKCg4IC0geSkgfCB5IDw8IDgpICogOCk7Cisr
ICAgICAgICAgICAgR0VUX1ZTUkMxKHYwKTsKKysgICAgICAgICAgICBQUkFHTUFfRTJLKCJpdmRl
cCIpCisrICAgICAgICAgICAgUFJBR01BX0UySygidW5yb2xsKDIpIikKKysgICAgICAgICAgICBm
b3IgKGkgPSAwOyBpIDwgaDsgaSsrKSB7CisrICAgICAgICAgICAgICAgIEdFVF9WU1JDMSh2Mik7
CisrICAgICAgICAgICAgICAgIHYxID0gX21tX3VucGFja2xvX2VwaTgodjAsIHYyKTsKKysgICAg
ICAgICAgICAgICAgQ0hST01BX01DOF9FMktfQ09SRV9TSU1QTEUodjEpOworKyAgICAgICAgICAg
ICAgICB2MCA9IHYyOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfSBlbHNlIHsK
KysgICAgICAgIHZBID0gX21tX3NldDFfZXBpMTYoeG0gKiA4KTsKKysgICAgICAgIFBSQUdNQV9F
MksoIml2ZGVwIikKKysgICAgICAgIFBSQUdNQV9FMksoInVucm9sbCgyKSIpCisrICAgICAgICBm
b3IgKGkgPSAwOyBpIDwgaDsgaSsrKSB7CisrICAgICAgICAgICAgR0VUX1ZTUkMyKHYwLCB2MSk7
CisrICAgICAgICAgICAgQ0hST01BX01DOF9FMktfQ09SRV9TSU1QTEUodjApOworKyAgICAgICAg
fQorKyAgICB9CisrfQorKyNlbmRpZgorKworKyNpZmRlZiBQUkVGSVhfbm9fcm5kX3ZjMV9jaHJv
bWFfbWM4X2UyaworK3N0YXRpYyB2b2lkIFBSRUZJWF9ub19ybmRfdmMxX2Nocm9tYV9tYzhfZTJr
KHVpbnQ4X3QgKmRzdCwgdWludDhfdCAqc3JjLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoLAorKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCBpbnQgeSkKKyt7CisrICAg
IGludCBpLCB4bSA9ICg4IC0geCkgfCB4IDw8IDg7CisrICAgIF9fbTEyOGkgdkEgPSBfbW1fc2V0
MV9lcGkxNih4bSAqICg4IC0geSkpOworKyAgICBfX20xMjhpIHZCID0gX21tX3NldDFfZXBpMTYo
eG0gKiB5KTsKKysgICAgX19tMTI4aSBiaWFzID0gX21tX3NldDFfZXBpMTYoMjgpOworKyAgICBf
X20xMjhpIHYwLCB2MSwgdjIsIHYzOworKworKyAgICBHRVRfVlNSQzIodjAsIHYxKTsKKysgICAg
UFJBR01BX0UySygiaXZkZXAiKQorKyAgICBQUkFHTUFfRTJLKCJ1bnJvbGwoMikiKQorKyAgICBm
b3IgKGkgPSAwOyBpIDwgaDsgaSsrKSB7CisrICAgICAgICAgR0VUX1ZTUkMyKHYyLCB2Myk7Cisr
ICAgICAgICAgQ0hST01BX01DOF9FMktfQ09SRSgpOworKyAgICB9CisrfQorKyNlbmRpZgorKwor
ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZTJrL2gyNjRkc3AuYyBiL2xpYmF2Y29kZWMvZTJrL2gy
NjRkc3AuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmZmN2JlN2QKKy0t
LSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29kZWMvZTJrL2gyNjRkc3AuYworQEAgLTAsMCArMSw4
MjAgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAyMSBJbHlhIEt1cmR5dWtvdiA8anBlZ3Fz
QGdtYWlsLmNvbT4gZm9yIEJhc2VBTFQsIEx0ZAorKyAqIENvcHlyaWdodCAoYykgMjAwNCBSb21h
aW4gRG9sYmVhdSA8cm9tYWluQGRvbGJlYXUub3JnPgorKyAqCisrICogVGhpcyBmaWxlIGlzIHBh
cnQgb2YgRkZtcGVnLgorKyAqCisrICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysg
KgorKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vu
c2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisrICovCisrCisrI2luY2x1ZGUgImNvbmZpZy5oIgor
KworKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2luY2x1
ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVzLmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9jcHUuaCIK
KysjaW5jbHVkZSAibGliYXZ1dGlsL2ludHJlYWR3cml0ZS5oIgorKyNpbmNsdWRlICJsaWJhdnV0
aWwvbWVtLmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsvY3B1LmgiCisrI2luY2x1ZGUgImxp
YmF2dXRpbC9lMmsvdXRpbF9lMmsuaCIKKysKKysjaW5jbHVkZSAibGliYXZjb2RlYy9oMjY0ZGVj
LmgiCisrI2luY2x1ZGUgImxpYmF2Y29kZWMvaDI2NGRzcC5oIgorKworKy8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCisrICogSURDVCB0cmFuc2Zvcm06CisrICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisr
I2RlZmluZSBWRUNfMURfRENUKHZiMCwgdmIxLCB2YjIsIHZiMywgdmEwLCB2YTEsIHZhMiwgdmEz
KSAgICAgICAgIFwKKysgICAgLyogMXN0IHN0YWdlICovICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2ejAgPSBfbW1fYWRkX2VwaTE2KHZiMCwg
dmIyKTsgLyogdGVtcFswXSA9IFlbMF0gKyBZWzJdICovICAgICBcCisrICAgIHZ6MSA9IF9tbV9z
dWJfZXBpMTYodmIwLCB2YjIpOyAvKiB0ZW1wWzFdID0gWVswXSAtIFlbMl0gKi8gICAgIFwKKysg
ICAgdnoyID0gX21tX3NyYWlfZXBpMTYodmIxLCAxKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorKyAgICB2ejIgPSBfbW1fc3ViX2VwaTE2KHZ6MiwgdmIzKTsgLyogdGVtcFsy
XSA9IFlbMV0uMS8yIC0gWVszXSAqLyBcCisrICAgIHZ6MyA9IF9tbV9zcmFpX2VwaTE2KHZiMywg
MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdnozID0gX21tX2Fk
ZF9lcGkxNih2YjEsIHZ6Myk7IC8qIHRlbXBbM10gPSBZWzFdICsgWVszXS4xLzIgKi8gXAorKyAg
ICAvKiAybmQgc3RhZ2U6IG91dHB1dCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisrICAgIHZhMCA9IF9tbV9hZGRfZXBpMTYodnowLCB2ejMpOyAvKiB4WzBdID0g
dGVtcFswXSArIHRlbXBbM10gKi8gIFwKKysgICAgdmExID0gX21tX2FkZF9lcGkxNih2ejEsIHZ6
Mik7IC8qIHhbMV0gPSB0ZW1wWzFdICsgdGVtcFsyXSAqLyAgXAorKyAgICB2YTIgPSBfbW1fc3Vi
X2VwaTE2KHZ6MSwgdnoyKTsgLyogeFsyXSA9IHRlbXBbMV0gLSB0ZW1wWzJdICovICBcCisrICAg
IHZhMyA9IF9tbV9zdWJfZXBpMTYodnowLCB2ejMpICAvKiB4WzNdID0gdGVtcFswXSAtIHRlbXBb
M10gKi8KKysKKysjZGVmaW5lIFZFQ19UUkFOU1BPU0VfNChhMCwgYTEsIGEyLCBhMywgYjAsIGIx
LCBiMiwgYjMpIFwKKysgICAgYjAgPSBfbW1fdW5wYWNrbG9fZXBpMTYoYTAsIGEwKTsgXAorKyAg
ICBiMSA9IF9tbV91bnBhY2tsb19lcGkxNihhMSwgYTApOyBcCisrICAgIGIyID0gX21tX3VucGFj
a2xvX2VwaTE2KGEyLCBhMCk7IFwKKysgICAgYjMgPSBfbW1fdW5wYWNrbG9fZXBpMTYoYTMsIGEw
KTsgXAorKyAgICBhMCA9IF9tbV91bnBhY2tsb19lcGkxNihiMCwgYjIpOyBcCisrICAgIGExID0g
X21tX3VucGFja2hpX2VwaTE2KGIwLCBiMik7IFwKKysgICAgYTIgPSBfbW1fdW5wYWNrbG9fZXBp
MTYoYjEsIGIzKTsgXAorKyAgICBhMyA9IF9tbV91bnBhY2toaV9lcGkxNihiMSwgYjMpOyBcCisr
ICAgIGIwID0gX21tX3VucGFja2xvX2VwaTE2KGEwLCBhMik7IFwKKysgICAgYjEgPSBfbW1fdW5w
YWNraGlfZXBpMTYoYTAsIGEyKTsgXAorKyAgICBiMiA9IF9tbV91bnBhY2tsb19lcGkxNihhMSwg
YTMpOyBcCisrICAgIGIzID0gX21tX3VucGFja2hpX2VwaTE2KGExLCBhMykKKysKKysjZGVmaW5l
IFZFQ19MT0FEX1U4X0FERF9TMTZfU1RPUkVfVTgodmEpICAgICAgICAgICAgICAgXAorKyAgICB2
YSA9IF9tbV9zcmFpX2VwaTE2KHZhLCA2KTsgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg
IHZkc3QgPSBfbW1fY3Z0c2kzMl9zaTEyOCgqKHVpbnQzMl90Kilkc3QpOyAgICAgICAgIFwKKysg
ICAgdmRzdCA9IF9tbV91bnBhY2tsb19lcGk4KHZkc3QsIHplcm92KTsgICAgICAgICAgICAgXAor
KyAgICB2YSA9IF9tbV9hZGRfZXBpMTYodmEsIHZkc3QpOyAgICAgICAgICAgICAgICAgICAgICBc
CisrICAgIHZhID0gX21tX3BhY2t1c19lcGkxNih2YSwgdmEpOyAgICAgICAgICAgICAgICAgICAg
IFwKKysgICAgKih1aW50MzJfdCopZHN0ID0gX21tX2V4dHJhY3RfZXBpMzIodmEsIDApOyAgICAg
ICAgXAorKyAgICBkc3QgKz0gc3RyaWRlOworKworK3N0YXRpYyB2b2lkIGgyNjRfaWRjdF9hZGRf
ZTJrKHVpbnQ4X3QgKmRzdCwgaW50MTZfdCAqYmxvY2ssIGludCBzdHJpZGUpCisreworKyAgICB2
ZWNfczE2IHZhMCwgdmExLCB2YTIsIHZhMzsKKysgICAgdmVjX3MxNiB2ejAsIHZ6MSwgdnoyLCB2
ejM7CisrICAgIHZlY19zMTYgdnRtcDAsIHZ0bXAxLCB2dG1wMiwgdnRtcDM7CisrICAgIHZlY191
OCB2ZHN0OworKyAgICBMT0FEX1pFUk87CisrCisrICAgIGJsb2NrWzBdICs9IDMyOyAgLyogYWRk
IDMyIGFzIGEgREMtbGV2ZWwgZm9yIHJvdW5kaW5nICovCisrCisrICAgIHZ0bXAwID0gVkVDX0xE
KGJsb2NrKTsKKysgICAgdnRtcDEgPSBWRUNfQUxJR05SOCh2dG1wMCwgdnRtcDApOworKyAgICB2
dG1wMiA9IFZFQ19MRChibG9jayArIDgpOworKyAgICB2dG1wMyA9IFZFQ19BTElHTlI4KHZ0bXAy
LCB2dG1wMik7CisrICAgIFZFQ19TVChibG9jaywgemVyb3YpOworKyAgICBWRUNfU1QoYmxvY2sg
KyA4LCB6ZXJvdik7CisrCisrICAgIFZFQ18xRF9EQ1QodnRtcDAsIHZ0bXAxLCB2dG1wMiwgdnRt
cDMsIHZhMCwgdmExLCB2YTIsIHZhMyk7CisrICAgIFZFQ19UUkFOU1BPU0VfNCh2YTAsIHZhMSwg
dmEyLCB2YTMsIHZ0bXAwLCB2dG1wMSwgdnRtcDIsIHZ0bXAzKTsKKysgICAgVkVDXzFEX0RDVCh2
dG1wMCwgdnRtcDEsIHZ0bXAyLCB2dG1wMywgdmEwLCB2YTEsIHZhMiwgdmEzKTsKKysKKysgICAg
VkVDX0xPQURfVThfQUREX1MxNl9TVE9SRV9VOCh2YTApOworKyAgICBWRUNfTE9BRF9VOF9BRERf
UzE2X1NUT1JFX1U4KHZhMSk7CisrICAgIFZFQ19MT0FEX1U4X0FERF9TMTZfU1RPUkVfVTgodmEy
KTsKKysgICAgVkVDX0xPQURfVThfQUREX1MxNl9TVE9SRV9VOCh2YTMpOworK30KKysKKysjZGVm
aW5lIElEQ1Q4XzFEX0UySyhzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIGQwLCBkMSwg
ZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNykgeyBcCisrICAgIC8qIGEwID0gU1JDKDApICsgU1JDKDQp
OyAqLyAgICAgIFwKKysgICAgLyogYTIgPSBTUkMoMCkgLSBTUkMoNCk7ICovICAgICAgXAorKyAg
ICAvKiBhNCA9IChTUkMoMik+PjEpIC0gU1JDKDYpOyAqLyBcCisrICAgIC8qIGE2ID0gKFNSQyg2
KT4+MSkgKyBTUkMoMik7ICovIFwKKysgICAgdmVjX3MxNiBhMHYgPSBfbW1fYWRkX2VwaTE2KHMw
LCBzNCk7IFwKKysgICAgdmVjX3MxNiBhMnYgPSBfbW1fc3ViX2VwaTE2KHMwLCBzNCk7IFwKKysg
ICAgdmVjX3MxNiBhNHYgPSBfbW1fc3ViX2VwaTE2KF9tbV9zcmFpX2VwaTE2KHMyLCAxKSwgczYp
OyBcCisrICAgIHZlY19zMTYgYTZ2ID0gX21tX2FkZF9lcGkxNihfbW1fc3JhaV9lcGkxNihzNiwg
MSksIHMyKTsgXAorKyAgICAvKiBiMCA9IGEwICsgYTY7ICovIFwKKysgICAgLyogYjIgPSBhMiAr
IGE0OyAqLyBcCisrICAgIC8qIGI0ID0gYTIgLSBhNDsgKi8gXAorKyAgICAvKiBiNiA9IGEwIC0g
YTY7ICovIFwKKysgICAgdmVjX3MxNiBiMHYgPSBfbW1fYWRkX2VwaTE2KGEwdiwgYTZ2KTsgIFwK
KysgICAgdmVjX3MxNiBiMnYgPSBfbW1fYWRkX2VwaTE2KGEydiwgYTR2KTsgIFwKKysgICAgdmVj
X3MxNiBiNHYgPSBfbW1fc3ViX2VwaTE2KGEydiwgYTR2KTsgIFwKKysgICAgdmVjX3MxNiBiNnYg
PSBfbW1fc3ViX2VwaTE2KGEwdiwgYTZ2KTsgIFwKKysgICAgLyogYTEgPSAoU1JDKDUpLVNSQygz
KSkgLSAoU1JDKDcpICsgKFNSQyg3KT4+MSkpOyAqLyBcCisrICAgIC8qIGEzID0gKFNSQyg3KStT
UkMoMSkpIC0gKFNSQygzKSArIChTUkMoMyk+PjEpKTsgKi8gXAorKyAgICAvKiBhNSA9IChTUkMo
NyktU1JDKDEpKSArIChTUkMoNSkgKyAoU1JDKDUpPj4xKSk7ICovIFwKKysgICAgLyogYTcgPSAo
U1JDKDUpK1NSQygzKSkgKyAoU1JDKDEpICsgKFNSQygxKT4+MSkpOyAqLyBcCisrICAgIHZlY19z
MTYgYTF2ID0gX21tX3N1Yl9lcGkxNihfbW1fc3ViX2VwaTE2KHM1LCBzMyksIF9tbV9hZGRfZXBp
MTYoczcsIF9tbV9zcmFpX2VwaTE2KHM3LCAxKSkpOyBcCisrICAgIHZlY19zMTYgYTN2ID0gX21t
X3N1Yl9lcGkxNihfbW1fYWRkX2VwaTE2KHM3LCBzMSksIF9tbV9hZGRfZXBpMTYoczMsIF9tbV9z
cmFpX2VwaTE2KHMzLCAxKSkpOyBcCisrICAgIHZlY19zMTYgYTV2ID0gX21tX2FkZF9lcGkxNihf
bW1fc3ViX2VwaTE2KHM3LCBzMSksIF9tbV9hZGRfZXBpMTYoczUsIF9tbV9zcmFpX2VwaTE2KHM1
LCAxKSkpOyBcCisrICAgIHZlY19zMTYgYTd2ID0gX21tX2FkZF9lcGkxNihfbW1fYWRkX2VwaTE2
KHM1LCBzMyksIF9tbV9hZGRfZXBpMTYoczEsIF9tbV9zcmFpX2VwaTE2KHMxLCAxKSkpOyBcCisr
ICAgIC8qIGIxID0gKGE3Pj4yKSArIGExOyAqLyBcCisrICAgIC8qIGIzID0gYTMgKyAoYTU+PjIp
OyAqLyBcCisrICAgIC8qIGI1ID0gKGEzPj4yKSAtIGE1OyAqLyBcCisrICAgIC8qIGI3ID0gYTcg
LSAoYTE+PjIpOyAqLyBcCisrICAgIHZlY19zMTYgYjF2ID0gX21tX2FkZF9lcGkxNihfbW1fc3Jh
aV9lcGkxNihhN3YsIDIpLCBhMXYpOyBcCisrICAgIHZlY19zMTYgYjN2ID0gX21tX2FkZF9lcGkx
NihhM3YsIF9tbV9zcmFpX2VwaTE2KGE1diwgMikpOyBcCisrICAgIHZlY19zMTYgYjV2ID0gX21t
X3N1Yl9lcGkxNihfbW1fc3JhaV9lcGkxNihhM3YsIDIpLCBhNXYpOyBcCisrICAgIHZlY19zMTYg
Yjd2ID0gX21tX3N1Yl9lcGkxNihhN3YsIF9tbV9zcmFpX2VwaTE2KGExdiwgMikpOyBcCisrICAg
IC8qIERTVCgwLCBiMCArIGI3KTsgKi8gXAorKyAgICAvKiBEU1QoMSwgYjIgKyBiNSk7ICovIFwK
KysgICAgLyogRFNUKDIsIGI0ICsgYjMpOyAqLyBcCisrICAgIC8qIERTVCgzLCBiNiArIGIxKTsg
Ki8gXAorKyAgICAvKiBEU1QoNCwgYjYgLSBiMSk7ICovIFwKKysgICAgLyogRFNUKDUsIGI0IC0g
YjMpOyAqLyBcCisrICAgIC8qIERTVCg2LCBiMiAtIGI1KTsgKi8gXAorKyAgICAvKiBEU1QoNywg
YjAgLSBiNyk7ICovIFwKKysgICAgZDAgPSBfbW1fYWRkX2VwaTE2KGIwdiwgYjd2KTsgXAorKyAg
ICBkMSA9IF9tbV9hZGRfZXBpMTYoYjJ2LCBiNXYpOyBcCisrICAgIGQyID0gX21tX2FkZF9lcGkx
NihiNHYsIGIzdik7IFwKKysgICAgZDMgPSBfbW1fYWRkX2VwaTE2KGI2diwgYjF2KTsgXAorKyAg
ICBkNCA9IF9tbV9zdWJfZXBpMTYoYjZ2LCBiMXYpOyBcCisrICAgIGQ1ID0gX21tX3N1Yl9lcGkx
NihiNHYsIGIzdik7IFwKKysgICAgZDYgPSBfbW1fc3ViX2VwaTE2KGIydiwgYjV2KTsgXAorKyAg
ICBkNyA9IF9tbV9zdWJfZXBpMTYoYjB2LCBiN3YpOyBcCisrfQorKworKyNkZWZpbmUgRTJLX1NU
T1JFX1NVTV9DTElQKGRlc3QsIGlkY3R2KSB7ICAgICBcCisrICAgIC8qIHVuYWxpZ25lZCBsb2Fk
ICovICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgX19tMTI4aSBkc3R2ID0gVkVDX0xEOChk
ZXN0KTsgICAgICAgICAgICAgXAorKyAgICBkc3R2ID0gX21tX3VucGFja2xvX2VwaTgoZHN0diwg
emVyb3YpOyAgICBcCisrICAgIGlkY3R2ID0gX21tX3NyYWlfZXBpMTYoaWRjdHYsIDYpOyAgICAg
ICAgIFwKKysgICAgZHN0diA9IF9tbV9hZGRfZXBpMTYoZHN0diwgaWRjdHYpOyAgICAgICAgXAor
KyAgICBkc3R2ID0gX21tX3BhY2t1c19lcGkxNihkc3R2LCBkc3R2KTsgICAgICBcCisrICAgIC8q
IHVuYWxpZ25lZCBzdG9yZSAqLyAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgVkVDX1NUTChk
ZXN0LCBkc3R2KTsgICAgICAgICAgICAgICAgICAgICAgXAorK30KKysKKytzdGF0aWMgdm9pZCBo
MjY0X2lkY3Q4X2FkZF9lMmsodWludDhfdCAqZHN0LCBpbnQxNl90ICpkY3QsIGludCBzdHJpZGUp
CisreworKyAgICB2ZWNfczE2IHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNzsKKysgICAg
dmVjX3MxNiBkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDc7CisrICAgIHZlY19zMTYgaWRj
dDAsIGlkY3QxLCBpZGN0MiwgaWRjdDMsIGlkY3Q0LCBpZGN0NSwgaWRjdDYsIGlkY3Q3OworKwor
KyAgICBMT0FEX1pFUk87CisrCisrICAgIGRjdFswXSArPSAzMjsgLy8gcm91bmRpbmcgZm9yIHRo
ZSA+PjYgYXQgdGhlIGVuZAorKworKyAgICBzMCA9IFZFQ19MRChkY3QgKyA4ICogMCk7CisrICAg
IHMxID0gVkVDX0xEKGRjdCArIDggKiAxKTsKKysgICAgczIgPSBWRUNfTEQoZGN0ICsgOCAqIDIp
OworKyAgICBzMyA9IFZFQ19MRChkY3QgKyA4ICogMyk7CisrICAgIHM0ID0gVkVDX0xEKGRjdCAr
IDggKiA0KTsKKysgICAgczUgPSBWRUNfTEQoZGN0ICsgOCAqIDUpOworKyAgICBzNiA9IFZFQ19M
RChkY3QgKyA4ICogNik7CisrICAgIHM3ID0gVkVDX0xEKGRjdCArIDggKiA3KTsKKysgICAgVkVD
X1NUKGRjdCArIDggKiAwLCB6ZXJvdik7CisrICAgIFZFQ19TVChkY3QgKyA4ICogMSwgemVyb3Yp
OworKyAgICBWRUNfU1QoZGN0ICsgOCAqIDIsIHplcm92KTsKKysgICAgVkVDX1NUKGRjdCArIDgg
KiAzLCB6ZXJvdik7CisrICAgIFZFQ19TVChkY3QgKyA4ICogNCwgemVyb3YpOworKyAgICBWRUNf
U1QoZGN0ICsgOCAqIDUsIHplcm92KTsKKysgICAgVkVDX1NUKGRjdCArIDggKiA2LCB6ZXJvdik7
CisrICAgIFZFQ19TVChkY3QgKyA4ICogNywgemVyb3YpOworKworKyAgICBJRENUOF8xRF9FMkso
czAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LAorKyAgICAgICAgICAgICAgICAgICAgIGQw
LCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNyk7CisrCisrICAgIFRSQU5TUE9TRTgoZDAsIGQx
LCBkMiwgZDMsIGQ0LCBkNSwgZDYsIGQ3KTsKKysKKysgICAgSURDVDhfMURfRTJLKGQwLCBkMSwg
ZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywKKysgICAgICAgICAgICAgICAgICAgICBpZGN0MCwgaWRj
dDEsIGlkY3QyLCBpZGN0MywgaWRjdDQsIGlkY3Q1LCBpZGN0NiwgaWRjdDcpOworKworKyAgICBF
MktfU1RPUkVfU1VNX0NMSVAoJmRzdFswKnN0cmlkZV0sIGlkY3QwKTsKKysgICAgRTJLX1NUT1JF
X1NVTV9DTElQKCZkc3RbMSpzdHJpZGVdLCBpZGN0MSk7CisrICAgIEUyS19TVE9SRV9TVU1fQ0xJ
UCgmZHN0WzIqc3RyaWRlXSwgaWRjdDIpOworKyAgICBFMktfU1RPUkVfU1VNX0NMSVAoJmRzdFsz
KnN0cmlkZV0sIGlkY3QzKTsKKysgICAgRTJLX1NUT1JFX1NVTV9DTElQKCZkc3RbNCpzdHJpZGVd
LCBpZGN0NCk7CisrICAgIEUyS19TVE9SRV9TVU1fQ0xJUCgmZHN0WzUqc3RyaWRlXSwgaWRjdDUp
OworKyAgICBFMktfU1RPUkVfU1VNX0NMSVAoJmRzdFs2KnN0cmlkZV0sIGlkY3Q2KTsKKysgICAg
RTJLX1NUT1JFX1NVTV9DTElQKCZkc3RbNypzdHJpZGVdLCBpZGN0Nyk7CisrfQorKworK3N0YXRp
YyB2b2lkIGgyNjRfaWRjdF9kY19hZGRfZTJrKHVpbnQ4X3QgKmRzdCwgaW50MTZfdCAqYmxvY2ss
IGludCBzdHJpZGUpCisreworKyAgICBfX202NCBkYzE2LCB6ZXJvdiA9IF9tbV9zZXR6ZXJvX3Np
NjQoKTsKKysgICAgX19tNjQgZGNwbHVzLCBkY21pbnVzLCB2MCwgdjEsIHYyLCB2MzsKKysgICAg
aW50IGksIGRjOworKworKyAgICBkYyA9IChibG9ja1swXSArIDMyKSA+PiA2OworKyAgICBibG9j
a1swXSA9IDA7CisrICAgIGRjMTYgPSBfbW1fc2V0MV9waTE2KGRjKTsKKysgICAgZGNwbHVzID0g
X21tX3BhY2tzX3B1MTYoZGMxNiwgZGMxNik7CisrICAgIGRjMTYgPSBfbW1fc3ViX3BpMTYoemVy
b3YsIGRjMTYpOworKyAgICBkY21pbnVzID0gX21tX3BhY2tzX3B1MTYoZGMxNiwgZGMxNik7Cisr
CisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkgKz0g
NCkgeworKyAgICAgICAgdjAgPSBfbW1fY3Z0c2kzMl9zaTY0KCoodWludDMyX3QqKShkc3QgKyAw
ICogc3RyaWRlKSk7CisrICAgICAgICB2MSA9IF9tbV9jdnRzaTMyX3NpNjQoKih1aW50MzJfdCop
KGRzdCArIDEgKiBzdHJpZGUpKTsKKysgICAgICAgIHYyID0gX21tX2N2dHNpMzJfc2k2NCgqKHVp
bnQzMl90KikoZHN0ICsgMiAqIHN0cmlkZSkpOworKyAgICAgICAgdjMgPSBfbW1fY3Z0c2kzMl9z
aTY0KCoodWludDMyX3QqKShkc3QgKyAzICogc3RyaWRlKSk7CisrCisrICAgICAgICB2MCA9IF9t
bV91bnBhY2tsb19waTMyKHYwLCB2MSk7CisrICAgICAgICB2MiA9IF9tbV91bnBhY2tsb19waTMy
KHYyLCB2Myk7CisrICAgICAgICB2MCA9IF9tbV9hZGRzX3B1OCh2MCwgZGNwbHVzKTsKKysgICAg
ICAgIHYyID0gX21tX2FkZHNfcHU4KHYyLCBkY3BsdXMpOworKyAgICAgICAgdjAgPSBfbW1fc3Vi
c19wdTgodjAsIGRjbWludXMpOworKyAgICAgICAgdjIgPSBfbW1fc3Vic19wdTgodjIsIGRjbWlu
dXMpOworKworKyAgICAgICAgKih1aW50MzJfdCopKGRzdCArIDAgKiBzdHJpZGUpID0gX21tX2V4
dHJhY3RfcGkzMih2MCwgMCk7CisrICAgICAgICAqKHVpbnQzMl90KikoZHN0ICsgMSAqIHN0cmlk
ZSkgPSBfbW1fZXh0cmFjdF9waTMyKHYwLCAxKTsKKysgICAgICAgICoodWludDMyX3QqKShkc3Qg
KyAyICogc3RyaWRlKSA9IF9tbV9leHRyYWN0X3BpMzIodjIsIDApOworKyAgICAgICAgKih1aW50
MzJfdCopKGRzdCArIDMgKiBzdHJpZGUpID0gX21tX2V4dHJhY3RfcGkzMih2MiwgMSk7CisrICAg
ICAgICBkc3QgKz0gNCAqIHN0cmlkZTsKKysgICAgfQorK30KKysKKytzdGF0aWMgdm9pZCBoMjY0
X2lkY3Q4X2RjX2FkZF9lMmsodWludDhfdCAqZHN0LCBpbnQxNl90ICpibG9jaywgaW50IHN0cmlk
ZSkKKyt7CisrICAgIHZlY19zMTYgZGMxNjsKKysgICAgdmVjX3U4IGRjcGx1cywgZGNtaW51cywg
djAsIHYxLCB2MiwgdjM7CisrICAgIExPQURfWkVSTzsKKysgICAgaW50IGksIGRjOworKworKyAg
ICBkYyA9IChibG9ja1swXSArIDMyKSA+PiA2OworKyAgICBibG9ja1swXSA9IDA7CisrICAgIGRj
MTYgPSBfbW1fc2V0MV9lcGkxNihkYyk7CisrICAgIGRjcGx1cyA9IF9tbV9wYWNrdXNfZXBpMTYo
ZGMxNiwgZGMxNik7CisrICAgIGRjMTYgPSBfbW1fc3ViX2VwaTE2KHplcm92LCBkYzE2KTsKKysg
ICAgZGNtaW51cyA9IF9tbV9wYWNrdXNfZXBpMTYoZGMxNiwgZGMxNik7CisrCisrICAgIFBSQUdN
QV9FMksoIml2ZGVwIikKKysgICAgZm9yIChpID0gMDsgaSA8IDg7IGkgKz0gNCkgeworKyAgICAg
ICAgdjAgPSBWRUNfTEQ4KGRzdCArIDAgKiBzdHJpZGUpOworKyAgICAgICAgdjEgPSBWRUNfTEQ4
KGRzdCArIDEgKiBzdHJpZGUpOworKyAgICAgICAgdjIgPSBWRUNfTEQ4KGRzdCArIDIgKiBzdHJp
ZGUpOworKyAgICAgICAgdjMgPSBWRUNfTEQ4KGRzdCArIDMgKiBzdHJpZGUpOworKworKyAgICAg
ICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQodjAsIHYxKTsKKysgICAgICAgIHYyID0gX21tX3Vu
cGFja2xvX2VwaTY0KHYyLCB2Myk7CisrICAgICAgICB2MCA9IF9tbV9hZGRzX2VwdTgodjAsIGRj
cGx1cyk7CisrICAgICAgICB2MiA9IF9tbV9hZGRzX2VwdTgodjIsIGRjcGx1cyk7CisrICAgICAg
ICB2MCA9IF9tbV9zdWJzX2VwdTgodjAsIGRjbWludXMpOworKyAgICAgICAgdjIgPSBfbW1fc3Vi
c19lcHU4KHYyLCBkY21pbnVzKTsKKysKKysgICAgICAgIFZFQ19TVEwoZHN0ICsgMCAqIHN0cmlk
ZSwgdjApOworKyAgICAgICAgVkVDX1NUSChkc3QgKyAxICogc3RyaWRlLCB2MCk7CisrICAgICAg
ICBWRUNfU1RMKGRzdCArIDIgKiBzdHJpZGUsIHYyKTsKKysgICAgICAgIFZFQ19TVEgoZHN0ICsg
MyAqIHN0cmlkZSwgdjIpOworKyAgICAgICAgZHN0ICs9IDQgKiBzdHJpZGU7CisrICAgIH0KKyt9
CisrCisrc3RhdGljIHZvaWQgaDI2NF9pZGN0X2FkZDE2X2Uyayh1aW50OF90ICpkc3QsIGNvbnN0
IGludCAqYmxvY2tfb2Zmc2V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDE2X3QgKmJsb2NrLCBpbnQgc3RyaWRlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qgbm56Y1sxNSAqIDhdKQorK3sKKysgICAgaW50IGk7Cisr
ICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CisrICAgICAgICBpbnQgbm56ID0gbm56Y1tz
Y2FuOFtpXV07CisrICAgICAgICBpZiAobm56KSB7CisrICAgICAgICAgICAgaWYgKG5ueiA9PSAx
ICYmIGJsb2NrW2kgKiAxNl0pCisrICAgICAgICAgICAgICAgIGgyNjRfaWRjdF9kY19hZGRfZTJr
KGRzdCArIGJsb2NrX29mZnNldFtpXSwgYmxvY2sgKyBpICogMTYsIHN0cmlkZSk7CisrICAgICAg
ICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgIAorKyAgICAgICAgICAgICAgICBo
MjY0X2lkY3RfYWRkX2Uyayhkc3QgKyBibG9ja19vZmZzZXRbaV0sIGJsb2NrICsgaSAqIDE2LCBz
dHJpZGUpOworKyAgICAgICAgfQorKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkIGgyNjRfaWRj
dF9hZGQxNmludHJhX2Uyayh1aW50OF90ICpkc3QsIGNvbnN0IGludCAqYmxvY2tfb2Zmc2V0LAor
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2ss
IGludCBzdHJpZGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90IG5uemNbMTUgKiA4XSkKKyt7CisrICAgIGludCBpOworKyAgICBmb3IgKGkg
PSAwOyBpIDwgMTY7IGkrKykgeworKyAgICAgICAgaWYgKG5uemNbc2NhbjhbaV1dKQorKyAgICAg
ICAgICAgIGgyNjRfaWRjdF9hZGRfZTJrKGRzdCArIGJsb2NrX29mZnNldFtpXSwgYmxvY2sgKyBp
ICogMTYsIHN0cmlkZSk7CisrICAgICAgICBlbHNlIGlmKGJsb2NrW2kgKiAxNl0pCisrICAgICAg
ICAgICAgaDI2NF9pZGN0X2RjX2FkZF9lMmsoZHN0ICsgYmxvY2tfb2Zmc2V0W2ldLCBibG9jayAr
IGkgKiAxNiwgc3RyaWRlKTsKKysgICAgfQorK30KKysKKytzdGF0aWMgdm9pZCBoMjY0X2lkY3Q4
X2FkZDRfZTJrKHVpbnQ4X3QgKmRzdCwgY29uc3QgaW50ICpibG9ja19vZmZzZXQsCisrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2ssIGludCBzdHJpZGUs
CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBubnpj
WzE1ICogOF0pCisreworKyAgICBpbnQgaTsKKysgICAgZm9yIChpID0gMDsgaSA8IDE2OyBpICs9
IDQpeworKyAgICAgICAgaW50IG5ueiA9IG5uemNbc2NhbjhbaV1dOworKyAgICAgICAgaWYgKG5u
eikgeworKyAgICAgICAgICAgIGlmIChubnogPT0gMSAmJiBibG9ja1tpICogMTZdKSAKKysgICAg
ICAgICAgICAgICAgaDI2NF9pZGN0OF9kY19hZGRfZTJrKGRzdCArIGJsb2NrX29mZnNldFtpXSwg
YmxvY2sgKyBpICogMTYsIHN0cmlkZSk7CisrICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAg
ICAgICBoMjY0X2lkY3Q4X2FkZF9lMmsoZHN0ICsgYmxvY2tfb2Zmc2V0W2ldLCBibG9jayArIGkg
KiAxNiwgc3RyaWRlKTsKKysgICAgICAgIH0KKysgICAgfQorK30KKysKKytzdGF0aWMgdm9pZCBo
MjY0X2lkY3RfYWRkOF9lMmsodWludDhfdCAqKmRlc3QsIGNvbnN0IGludCAqYmxvY2tfb2Zmc2V0
LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2ssIGlu
dCBzdHJpZGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90IG5uemNbMTUgKiA4XSkKKyt7CisrICAgIGludCBpLCBqOworKyAgICBmb3IgKGogPSAxOyBq
IDwgMzsgaisrKSB7CisrICAgICAgICBmb3IgKGkgPSBqICogMTY7IGkgPCBqICogMTYgKyA0OyBp
KyspIHsKKysgICAgICAgICAgICBpZiAobm56Y1tzY2FuOFtpXV0pCisrICAgICAgICAgICAgICAg
IGgyNjRfaWRjdF9hZGRfZTJrKGRlc3RbaiAtIDFdICsgYmxvY2tfb2Zmc2V0W2ldLCBibG9jayAr
IGkgKiAxNiwgc3RyaWRlKTsKKysgICAgICAgICAgICBlbHNlIGlmIChibG9ja1tpICogMTZdKQor
KyAgICAgICAgICAgICAgICBoMjY0X2lkY3RfZGNfYWRkX2UyayhkZXN0W2ogLSAxXSArIGJsb2Nr
X29mZnNldFtpXSwgYmxvY2sgKyBpICogMTYsIHN0cmlkZSk7CisrICAgICAgICB9CisrICAgIH0K
Kyt9CisrCisrI2RlZmluZSB0cmFuc3Bvc2U0eDE2KHIwLCByMSwgcjIsIHIzKSB7ICAgICAgICAg
ICAgIFwKKysgICAgdmVjX3U4IHI0LCByNSwgcjYsIHI3OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisrICAgIHI0ID0gX21tX3VucGFja2xvX2VwaTgocjAsIHIyKTsgIC8qMCwgMiBzZXQgMCov
IFwKKysgICAgcjUgPSBfbW1fdW5wYWNraGlfZXBpOChyMCwgcjIpOyAgLyowLCAyIHNldCAxKi8g
XAorKyAgICByNiA9IF9tbV91bnBhY2tsb19lcGk4KHIxLCByMyk7ICAvKjEsIDMgc2V0IDAqLyBc
CisrICAgIHI3ID0gX21tX3VucGFja2hpX2VwaTgocjEsIHIzKTsgIC8qMSwgMyBzZXQgMSovIFwK
KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
KyAgICByMCA9IF9tbV91bnBhY2tsb19lcGk4KHI0LCByNik7ICAvKmFsbCBzZXQgMCovICBcCisr
ICAgIHIxID0gX21tX3VucGFja2hpX2VwaTgocjQsIHI2KTsgIC8qYWxsIHNldCAxKi8gIFwKKysg
ICAgcjIgPSBfbW1fdW5wYWNrbG9fZXBpOChyNSwgcjcpOyAgLyphbGwgc2V0IDIqLyAgXAorKyAg
ICByMyA9IF9tbV91bnBhY2toaV9lcGk4KHI1LCByNyk7ICAvKmFsbCBzZXQgMyovICBcCisrfQor
KworKyNkZWZpbmUgV1JJVEU0KGksIGopICgodWludDMyX3QqKWRzdClbKGkgKiA0ICsgaikgKiAo
ZHN0X3N0cmlkZSA+PiAyKV0gPSBfbW1fZXh0cmFjdF9lcGkzMihyIyNpLCBqKTsKKysKKytzdGF0
aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIHdyaXRlMTZ4NCh1aW50OF90ICpkc3QsIGludCBkc3Rf
c3RyaWRlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY191OCBy
MCwgdmVjX3U4IHIxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZl
Y191OCByMiwgdmVjX3U4IHIzKSB7CisrCisrICAgIFdSSVRFNCgwLCAwKSBXUklURTQoMCwgMSkg
V1JJVEU0KDAsIDIpIFdSSVRFNCgwLCAzKQorKyAgICBXUklURTQoMSwgMCkgV1JJVEU0KDEsIDEp
IFdSSVRFNCgxLCAyKSBXUklURTQoMSwgMykKKysgICAgV1JJVEU0KDIsIDApIFdSSVRFNCgyLCAx
KSBXUklURTQoMiwgMikgV1JJVEU0KDIsIDMpCisrICAgIFdSSVRFNCgzLCAwKSBXUklURTQoMywg
MSkgV1JJVEU0KDMsIDIpIFdSSVRFNCgzLCAzKQorK30KKysKKysvKiBwZXJmb3JtcyBhIDZ4MTYg
dHJhbnNwb3NlIG9mIGRhdGEgaW4gc3JjLCBhbmQgc3RvcmVzIGl0IHRvIGRzdCAqLworKyNkZWZp
bmUgcmVhZF9hbmRfdHJhbnNwb3NlMTZ4NihzcmMsIHN0LCByOCwgcjksIHIxMCwgcjExLCByMTIs
IHIxMykgeyBcCisrICAgIHZlY191OCByMCwgcjEsIHIyLCByMywgcjQsIHI1LCByNiwgcjcsIHIx
NCwgcjE1OyAgICAgICAgICAgICAgICAgIFwKKysgICAgcjAgPSBWRUNfTEQ4KHNyYyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICByMSA9IFZF
Q19MRDgoc3JjICsgc3QpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisrICAgIHIyID0gVkVDX0xEOChzcmMgKyBzdCAqIDIpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKysgICAgcjMgPSBWRUNfTEQ4KHNyYyArIHN0ICogMyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICByNCA9IFZFQ19MRDgo
c3JjICsgc3QgKiA0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr
ICAgIHI1ID0gVkVDX0xEOChzcmMgKyBzdCAqIDUpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKysgICAgcjYgPSBWRUNfTEQ4KHNyYyArIHN0ICogNik7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICByNyA9IFZFQ19MRDgoc3JjICsg
c3QgKiA3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHI4
ID0gVkVDX0xEOChzcmMgKyBzdCAqIDgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKysgICAgcjkgPSBWRUNfTEQ4KHNyYyArIHN0ICogOSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICByMTAgPSBWRUNfTEQ4KHNyYyArIHN0ICog
MTApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHIxMSA9IFZF
Q19MRDgoc3JjICsgc3QgKiAxMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKysgICAgcjEyID0gVkVDX0xEOChzcmMgKyBzdCAqIDEyKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorKyAgICByMTMgPSBWRUNfTEQ4KHNyYyArIHN0ICogMTMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHIxNCA9IFZFQ19MRDgo
c3JjICsgc3QgKiAxNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysg
ICAgcjE1ID0gVkVDX0xEOChzcmMgKyBzdCAqIDE1KTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIC8qIE1lcmdlIGZpcnN0IHBhaXJz
ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgcjAg
PSBfbW1fdW5wYWNrbG9fZXBpOChyMCwgcjQpOyAgICAvKiAgMCwgNCAqLyAgICAgICAgICAgICAg
ICAgICAgXAorKyAgICByMSA9IF9tbV91bnBhY2tsb19lcGk4KHIxLCByNSk7ICAgIC8qICAxLCA1
ICovICAgICAgICAgICAgICAgICAgICBcCisrICAgIHIyID0gX21tX3VucGFja2xvX2VwaTgocjIs
IHI2KTsgICAgLyogIDIsIDYgKi8gICAgICAgICAgICAgICAgICAgIFwKKysgICAgcjMgPSBfbW1f
dW5wYWNrbG9fZXBpOChyMywgcjcpOyAgICAvKiAgMywgNyAqLyAgICAgICAgICAgICAgICAgICAg
XAorKyAgICByNCA9IF9tbV91bnBhY2tsb19lcGk4KHI4LCByMTIpOyAgIC8qICA4LDEyICovICAg
ICAgICAgICAgICAgICAgICBcCisrICAgIHI1ID0gX21tX3VucGFja2xvX2VwaTgocjksIHIxMyk7
ICAgLyogIDksMTMgKi8gICAgICAgICAgICAgICAgICAgIFwKKysgICAgcjYgPSBfbW1fdW5wYWNr
bG9fZXBpOChyMTAsIHIxNCk7ICAvKiAxMCwxNCAqLyAgICAgICAgICAgICAgICAgICAgXAorKyAg
ICByNyA9IF9tbV91bnBhY2tsb19lcGk4KHIxMSwgcjE1KTsgIC8qIDExLDE1ICovICAgICAgICAg
ICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLyogTWVyZ2Ugc2Vjb25kIHBhaXJz
ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICByOCAg
PSBfbW1fdW5wYWNrbG9fZXBpOChyMCwgcjIpOyAgIC8qIDAsIDIsIDQsIDYgc2V0IDAgKi8gICAg
ICAgICBcCisrICAgIHI5ICA9IF9tbV91bnBhY2toaV9lcGk4KHIwLCByMik7ICAgLyogMCwgMiwg
NCwgNiBzZXQgMSAqLyAgICAgICAgIFwKKysgICAgcjEwID0gX21tX3VucGFja2xvX2VwaTgocjEs
IHIzKTsgICAvKiAxLCAzLCA1LCA3IHNldCAwICovICAgICAgICAgXAorKyAgICByMTEgPSBfbW1f
dW5wYWNraGlfZXBpOChyMSwgcjMpOyAgIC8qIDEsIDMsIDUsIDcgc2V0IDEgKi8gICAgICAgICBc
CisrICAgIHIxMiA9IF9tbV91bnBhY2tsb19lcGk4KHI0LCByNik7ICAgLyogOCwxMCwxMiwxNCBz
ZXQgMCAqLyAgICAgICAgIFwKKysgICAgcjEzID0gX21tX3VucGFja2hpX2VwaTgocjQsIHI2KTsg
ICAvKiA4LDEwLDEyLDE0IHNldCAxICovICAgICAgICAgXAorKyAgICByMTQgPSBfbW1fdW5wYWNr
bG9fZXBpOChyNSwgcjcpOyAgIC8qIDksMTEsMTMsMTUgc2V0IDAgKi8gICAgICAgICBcCisrICAg
IHIxNSA9IF9tbV91bnBhY2toaV9lcGk4KHI1LCByNyk7ICAgLyogOSwxMSwxMywxNSBzZXQgMSAq
LyAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAvKiBUaGlyZCBtZXJnZSAqLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHIwID0g
X21tX3VucGFja2xvX2VwaTgocjgsIHIxMCk7ICAgLyogMC4uNyBzZXQgMCAgKi8gICAgICAgICAg
ICAgIFwKKysgICAgcjEgPSBfbW1fdW5wYWNraGlfZXBpOChyOCwgcjEwKTsgICAvKiAwLi43IHNl
dCAxICAqLyAgICAgICAgICAgICAgXAorKyAgICByMiA9IF9tbV91bnBhY2tsb19lcGk4KHI5LCBy
MTEpOyAgIC8qIDAuLjcgc2V0IDIgICovICAgICAgICAgICAgICBcCisrICAgIHI0ID0gX21tX3Vu
cGFja2xvX2VwaTgocjEyLCByMTQpOyAgLyogOC4uMTUgc2V0IDAgKi8gICAgICAgICAgICAgIFwK
KysgICAgcjUgPSBfbW1fdW5wYWNraGlfZXBpOChyMTIsIHIxNCk7ICAvKiA4Li4xNSBzZXQgMSAq
LyAgICAgICAgICAgICAgXAorKyAgICByNiA9IF9tbV91bnBhY2tsb19lcGk4KHIxMywgcjE1KTsg
IC8qIDguLjE1IHNldCAyICovICAgICAgICAgICAgICBcCisrICAgIC8qIERvbid0IG5lZWQgdG8g
Y29tcHV0ZSAzIGFuZCA3Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorKyAgICAvKiBGaW5hbCBtZXJnZSAqLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHI4ICA9IF9tbV91bnBhY2tsb19lcGk2
NChyMCwgcjQpOyAgIC8qIGFsbCBzZXQgMCAqLyAgICAgICAgICAgICAgIFwKKysgICAgcjkgID0g
X21tX3VucGFja2hpX2VwaTY0KHIwLCByNCk7ICAgLyogYWxsIHNldCAxICovICAgICAgICAgICAg
ICAgXAorKyAgICByMTAgPSBfbW1fdW5wYWNrbG9fZXBpNjQocjEsIHI1KTsgICAvKiBhbGwgc2V0
IDIgKi8gICAgICAgICAgICAgICBcCisrICAgIHIxMSA9IF9tbV91bnBhY2toaV9lcGk2NChyMSwg
cjUpOyAgIC8qIGFsbCBzZXQgMyAqLyAgICAgICAgICAgICAgIFwKKysgICAgcjEyID0gX21tX3Vu
cGFja2xvX2VwaTY0KHIyLCByNik7ICAgLyogYWxsIHNldCA0ICovICAgICAgICAgICAgICAgXAor
KyAgICByMTMgPSBfbW1fdW5wYWNraGlfZXBpNjQocjIsIHI2KTsgICAvKiBhbGwgc2V0IDUgKi8g
ICAgICAgICAgICAgICBcCisrICAgIC8qIERvbid0IG5lZWQgdG8gY29tcHV0ZSAxNCBhbmQgMTUq
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyt9CisrCisrI2RlZmluZSByZWFkX2Fu
ZF90cmFuc3Bvc2U4eDQoc3JjLCBzdCwgcjgsIHI5LCByMTAsIHIxMSkgeyAgICAgICAgICAgIFwK
KysgICAgX19tNjQgcjAsIHIxLCByMiwgcjMsIHI0LCByNSwgcjYsIHI3OyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorKyAgICByMCA9IF9tbV9jdnRzaTMyX3NpNjQoKih1aW50MzJfdCop
KHNyYykpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHIxID0gX21tX2N2dHNpMzJf
c2k2NCgqKHVpbnQzMl90Kikoc3JjICsgc3QpKTsgICAgICAgICAgICAgICAgICAgIFwKKysgICAg
cjIgPSBfbW1fY3Z0c2kzMl9zaTY0KCoodWludDMyX3QqKShzcmMgKyBzdCAqIDIpKTsgICAgICAg
ICAgICAgICAgXAorKyAgICByMyA9IF9tbV9jdnRzaTMyX3NpNjQoKih1aW50MzJfdCopKHNyYyAr
IHN0ICogMykpOyAgICAgICAgICAgICAgICBcCisrICAgIHI0ID0gX21tX2N2dHNpMzJfc2k2NCgq
KHVpbnQzMl90Kikoc3JjICsgc3QgKiA0KSk7ICAgICAgICAgICAgICAgIFwKKysgICAgcjUgPSBf
bW1fY3Z0c2kzMl9zaTY0KCoodWludDMyX3QqKShzcmMgKyBzdCAqIDUpKTsgICAgICAgICAgICAg
ICAgXAorKyAgICByNiA9IF9tbV9jdnRzaTMyX3NpNjQoKih1aW50MzJfdCopKHNyYyArIHN0ICog
NikpOyAgICAgICAgICAgICAgICBcCisrICAgIHI3ID0gX21tX2N2dHNpMzJfc2k2NCgqKHVpbnQz
Ml90Kikoc3JjICsgc3QgKiA3KSk7ICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
KyAgICByMCA9IF9tbV91bnBhY2tsb19waTgocjAsIHI0KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisrICAgIHIxID0gX21tX3VucGFja2xvX3BpOChyMSwgcjUpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgcjIgPSBfbW1fdW5wYWNrbG9f
cGk4KHIyLCByNik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBy
MyA9IF9tbV91bnBhY2tsb19waTgocjMsIHI3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgcjQgPSBfbW1fdW5wYWNrbG9fcGk4KHIw
LCByMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICByNSA9IF9t
bV91bnBhY2toaV9waTgocjAsIHIyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisrICAgIHI2ID0gX21tX3VucGFja2xvX3BpOChyMSwgcjMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKysgICAgcjcgPSBfbW1fdW5wYWNraGlfcGk4KHIxLCByMyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr
ICAgIHI4ID0gX21tX3VucGFja2xvX3BpOChyNCwgcjYpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKysgICAgcjkgPSBfbW1fdW5wYWNraGlfcGk4KHI0LCByNik7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICByMTAgPSBfbW1fdW5wYWNrbG9f
cGk4KHI1LCByNyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHIx
MSA9IF9tbV91bnBhY2toaV9waTgocjUsIHI3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyt9CisrCisrI2RlZmluZSBERUZfSEVMUEVSUyhuLCB2ZWMsIHAsIHNpKSBcCisr
Lyogb3V0OiBvID0gfHgteXwgPCBhICovIFwKKytzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2ZWMg
ZGlmZl9sdCMjbih2ZWMgeCwgdmVjIHksIHZlYyBhKSB7IFwKKysgICAgdmVjIG8gPSBfbW1fb3Jf
IyNzaShfbW1fc3Vic18jI3AjI3U4KHgsIHkpLCBfbW1fc3Vic18jI3AjI3U4KHksIHgpKTsgLyog
fHgteXwgKi8gXAorKyAgICByZXR1cm4gX21tX2NtcGd0XyMjcCMjaTgoYSwgX21tX3hvcl8jI3Np
KG8sIF9tbV9zZXQxXyMjcCMjaTgoLTEyOCkpKTsgXAorK30gXAorK3N0YXRpYyBhdl9hbHdheXNf
aW5saW5lIHZlYyBkZWJsb2NrX21hc2sjI24odmVjIHAwLCB2ZWMgcDEsIHZlYyBxMCwgXAorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjIHExLCB2ZWMgYWxw
aGEsIHZlYyBiZXRhKSB7IFwKKysgICAgdmVjIG1hc2ssIHRlbXBtYXNrOyBcCisrICAgIG1hc2sg
PSBkaWZmX2x0IyNuKHAwLCBxMCwgYWxwaGEpOyBcCisrICAgIHRlbXBtYXNrID0gZGlmZl9sdCMj
bihwMSwgcDAsIGJldGEpOyBcCisrICAgIG1hc2sgPSBfbW1fYW5kXyMjc2kobWFzaywgdGVtcG1h
c2spOyBcCisrICAgIHRlbXBtYXNrID0gZGlmZl9sdCMjbihxMSwgcTAsIGJldGEpOyBcCisrICAg
IHJldHVybiBfbW1fYW5kXyMjc2kobWFzaywgdGVtcG1hc2spOyBcCisrfQorKworK0RFRl9IRUxQ
RVJTKDE2LCBfX20xMjhpLCBlcCwgc2kxMjgpCisrREVGX0hFTFBFUlMoOCwgX19tNjQsIHAsIHNp
NjQpCisrCisrLy8gb3V0OiBuZXdwMSA9IGNsaXAoKHAyICsgKChwMCArIHEwICsgMSkgPj4gMSkp
ID4+IDEsIHAxLXRjMCwgcDErdGMwKQorK3N0YXRpYyBhdl9hbHdheXNfaW5saW5lIHZlY191OCBo
MjY0X2RlYmxvY2tfcTEodmVjX3U4IHAwLCB2ZWNfdTggcDEsIHZlY191OCBwMiwKKysgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY191OCBxMCwgdmVjX3U4
IHRjMCkgeworKworKyAgICB2ZWNfdTggYXZlcmFnZSA9IF9tbV9hdmdfZXB1OChwMCwgcTApOwor
KyAgICB2ZWNfdTggdGVtcCwgdW5jbGlwZWQ7CisrICAgIHZlY191OCBvbmVzID0gX21tX3NldDFf
ZXBpOCgxKSwgbWF4diwgbWludjsKKysKKysgICAgdGVtcCA9IF9tbV94b3Jfc2kxMjgoYXZlcmFn
ZSwgcDIpOworKyAgICBhdmVyYWdlID0gX21tX2F2Z19lcHU4KGF2ZXJhZ2UsIHAyKTsgICAgIC8q
IGF2ZyhwMiwgYXZnKHAwLCBxMCkpICAgKi8KKysgICAgdGVtcCA9IF9tbV9hbmRfc2kxMjgodGVt
cCwgb25lcyk7ICAgICAgICAvKiAocDJeYXZnKHAwLCBxMCkpICYgMSAgICovCisrICAgIHVuY2xp
cGVkID0gX21tX3N1YnNfZXB1OChhdmVyYWdlLCB0ZW1wKTsgLyogKHAyKygocDArcTArMSk+PjEp
KT4+MSAqLworKyAgICBtYXh2ID0gX21tX2FkZHNfZXB1OChwMSwgdGMwKTsKKysgICAgbWludiA9
IF9tbV9zdWJzX2VwdTgocDEsIHRjMCk7CisrICAgIHJldHVybiBfbW1fbWluX2VwdTgobWF4diwg
X21tX21heF9lcHU4KG1pbnYsIHVuY2xpcGVkKSk7CisrfQorKworKyNkZWZpbmUgaDI2NF9kZWJs
b2NrX3AwX3EwKHAwLCBwMSwgcTAsIHExLCB0YzBtYXNrZWQsIHZlYywgeCwgc2kpIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHZlYyBwcTBiaXQgPSBfbW1feG9yXyMj
c2kocDAsIHEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKysgICAgdmVjIHExbWludXMsIHAwbWludXMsIHN0YWdlMSwgc3Rh
Z2UyLCBjMTI3ID0gX21tX3NldDFfIyN4IyNpOCgxMjcpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorKyAgICB2ZWMgdmVjMTYwID0gX21tX3NldDFfIyN4IyNpOCgxNjApLCBkZWx0YSwg
ZGVsdGFuZWcsIG5vdHYgPSBfbW1fc2V0MV8jI3gjI2k4KC0xKTsgICAgICAgICAgICAgICBcCisr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgcTFtaW51
cyA9IF9tbV94b3JfIyNzaShxMSwgbm90dik7ICAgICAgICAgICAgLyogMjU1IC0gcTEgKi8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBzdGFnZTEgPSBfbW1fYXZn
XyMjeCMjdTgocDEsIHExbWludXMpOyAgICAgICAvKiAocDEgLSBxMSArIDI1Nik+PjEgKi8gICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHN0YWdlMiA9IF9tbV9zcmxpXyMjeCMjaTE2
KHN0YWdlMSwgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKysgICAgc3RhZ2UyID0gX21tX2FuZF8jI3NpKHN0YWdlMiwgYzEyNyk7
ICAgICAgICAgLyogKHAxIC0gcTEgKyAyNTYpPj4yID0gNjQgKyAocDEgLSBxMSkgPj4gMiAqLyAg
ICAgXAorKyAgICBwMG1pbnVzID0gX21tX3hvcl8jI3NpKHAwLCBub3R2KTsgICAgICAgICAgICAv
KiAyNTUgLSBwMCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg
IHN0YWdlMSA9IF9tbV9hdmdfIyN4IyN1OChxMCwgcDBtaW51cyk7ICAgICAgIC8qIChxMCAtIHAw
ICsgMjU2KT4+MSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgcHEwYml0ID0g
X21tX2FuZF8jI3NpKHBxMGJpdCwgX21tX3NldDFfIyN4IyNpOCgxKSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBzdGFnZTIgPSBfbW1fYXZnXyMj
eCMjdTgoc3RhZ2UyLCBwcTBiaXQpOyAgICAvKiAzMiArICgocTAgLSBwMCkmMSArIChwMSAtIHEx
KSA+PiAyICsgMSkgPj4gMSAqLyBcCisrICAgIHN0YWdlMiA9IF9tbV9hZGRzXyMjeCMjdTgoc3Rh
Z2UyLCBzdGFnZTEpOyAgIC8qIDE2MCArICgocDAgLSBxMCkgKyAocDEgLSBxMSkgPj4gMiArIDEp
ID4+IDEgKi8gIFwKKysgICAgZGVsdGFuZWcgPSBfbW1fc3Vic18jI3gjI3U4KHZlYzE2MCwgc3Rh
Z2UyKTsgLyogLWQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorKyAgICBkZWx0YSA9IF9tbV9zdWJzXyMjeCMjdTgoc3RhZ2UyLCB2ZWMxNjApOyAgICAvKiAg
ZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGRl
bHRhbmVnID0gX21tX21pbl8jI3gjI3U4KHRjMG1hc2tlZCwgZGVsdGFuZWcpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgZGVsdGEgPSBfbW1f
bWluXyMjeCMjdTgodGMwbWFza2VkLCBkZWx0YSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBwMCA9IF9tbV9zdWJzXyMjeCMjdTgo
cDAsIGRlbHRhbmVnKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisrICAgIHEwID0gX21tX3N1YnNfIyN4IyN1OChxMCwgZGVsdGEp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKysgICAgcDAgPSBfbW1fYWRkc18jI3gjI3U4KHAwLCBkZWx0YSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
KyAgICBxMCA9IF9tbV9hZGRzXyMjeCMjdTgocTAsIGRlbHRhbmVnKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrfQorKworKyNk
ZWZpbmUgaDI2NF9sb29wX2ZpbHRlcl9sdW1hX2UyayhwMiwgcDEsIHAwLCBxMCwgcTEsIHEyLCBh
bHBoYSwgYmV0YSwgdGMwKSB7ICAgICAgICAgICAgICAgIFwKKysgICAgdmVjX3U4IGFscGhhdmVj
LCBiZXRhdmVjLCBtYXNrLCBwMW1hc2ssIHExbWFzazsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisrICAgIHZlY19zOCB0YzB2ZWM7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorKyAgICB2ZWNfdTggZmluYWx0YzAsIHRjMG1hc2tlZCwgbmV3cDEsIG5ld3ExOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGJldGF2ZWMgPSBfbW1fc2V0MV9lcGk4KGJl
dGEgLSAxMjgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorKyAgICBhbHBoYXZlYyA9IF9tbV9zZXQxX2VwaTgoYWxwaGEgLSAxMjgpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgbWFz
ayA9IGRlYmxvY2tfbWFzazE2KHAwLCBwMSwgcTAsIHExLCBhbHBoYXZlYywgYmV0YXZlYyk7IC8q
IGlmIGluIGJsb2NrICovICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorKyAgICB0YzB2ZWMgPSBfbW1fY3Z0c2kzMl9zaTEyOCgqKHVpbnQzMl90
Kil0YzApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysg
ICAgdGMwdmVjID0gX21tX3VucGFja2xvX2VwaTgodGMwdmVjLCB0YzB2ZWMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHRjMHZlYyA9IF9tbV91
bnBhY2tsb19lcGk4KHRjMHZlYywgdGMwdmVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorKyAgICBtYXNrID0gX21tX2JsZW5kdl9lcGk4KG1hc2ssIF9t
bV9zZXR6ZXJvX3NpMTI4KCksIHRjMHZlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKysgICAgZmluYWx0YzAgPSBfbW1fYW5kX3NpMTI4KHRjMHZlYywgbWFzayk7ICAgICAgICAg
ICAgICAgIC8qIGlmICh0YzBbaV0gPj0gMCkgdGMgPSB0YzAgKi8gICBcCisrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBwMW1hc2sgPSBkaWZmX2x0MTYocDIsIHAw
LCBiZXRhdmVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKysgICAgcDFtYXNrID0gX21tX2FuZF9zaTEyOChwMW1hc2ssIG1hc2spOyAgICAg
ICAgICAgICAgICAgICAgICAgLyogaWYofHAyIC0gcDB8IDwgYmV0YSkgKi8gICBcCisrICAgIHRj
MG1hc2tlZCA9IF9tbV9hbmRfc2kxMjgocDFtYXNrLCB0YzB2ZWMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBmaW5hbHRjMCA9IF9tbV9zdWJf
ZXBpOChmaW5hbHRjMCwgcDFtYXNrKTsgICAgICAgICAgICAgICAgICAvKiB0YysrICovICAgICAg
ICAgICAgICAgICAgIFwKKysgICAgbmV3cDEgPSBoMjY0X2RlYmxvY2tfcTEocDAsIHAxLCBwMiwg
cTAsIHRjMG1hc2tlZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr
ICAgIC8qZW5kIGlmKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKysgICAgcTFtYXNrID0gZGlmZl9sdDE2KHEyLCBxMCwgYmV0
YXZlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisrICAgIHExbWFzayA9IF9tbV9hbmRfc2kxMjgocTFtYXNrLCBtYXNrKTsgICAgICAgICAg
ICAgICAgICAgICAgIC8qIGlmKHxxMiAtIHEwfCA8IGJldGEpICovICAgXAorKyAgICB0YzBtYXNr
ZWQgPSBfbW1fYW5kX3NpMTI4KHExbWFzaywgdGMwdmVjKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgZmluYWx0YzAgPSBfbW1fc3ViX2VwaTgo
ZmluYWx0YzAsIHExbWFzayk7ICAgICAgICAgICAgICAgICAgLyogdGMrKyAqLyAgICAgICAgICAg
ICAgICAgICBcCisrICAgIG5ld3ExID0gaDI2NF9kZWJsb2NrX3ExKHAwLCBxMSwgcTIsIHEwLCB0
YzBtYXNrZWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAv
KmVuZCBpZiovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisrICAgIGgyNjRfZGVibG9ja19wMF9xMChwMCwgcDEsIHEwLCBxMSwg
ZmluYWx0YzAsIF9fbTEyOGksIGVwLCBzaTEyOCk7ICAgICAgICAgICAgICAgICAgICAgICAgXAor
KyAgICBwMSA9IG5ld3AxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgcTEgPSBuZXdxMTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisrfQorKworKyNkZWZpbmUgaDI2NF9sb29wX2ZpbHRlcl9j
aHJvbWEyX2UyayhwMSwgcDAsIHEwLCBxMSwgYWxwaGEsIGJldGEsIHRjMCkgeyAgICAgICAgICAg
ICAgICAgICAgIFwKKysgICAgX19tNjQgYWxwaGF2ZWMsIGJldGF2ZWMsIG1hc2ssIHRjMHZlYywg
ZmluYWx0YzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBiZXRhdmVjID0gX21tX3Nl
dDFfcGk4KGJldGEgLSAxMjgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKysgICAgYWxwaGF2ZWMgPSBfbW1fc2V0MV9waTgoYWxwaGEgLSAx
MjgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisrICAgIG1hc2sgPSBkZWJsb2NrX21hc2s4KHAwLCBwMSwgcTAsIHExLCBhbHBoYXZlYywgYmV0
YXZlYyk7IC8qIGlmIGluIGJsb2NrICovICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdGMwdmVjID0gX21tX2N2dHNpMzJfc2k2NCgq
KHVpbnQzMl90Kil0YzApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisrICAgIHRjMHZlYyA9IF9tbV91bnBhY2tsb19waTgodGMwdmVjLCB0YzB2ZWMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBtYXNr
ID0gX21tX2JsZW5kdl9waTgobWFzaywgX21tX3NldHplcm9fc2k2NCgpLCB0YzB2ZWMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgZmluYWx0YzAgPSBfbW1fYW5kX3Np
NjQodGMwdmVjLCBtYXNrKTsgICAgICAgICAgICAgICAgLyogaWYgKHRjMFtpXSA+PSAwKSB0YyA9
IHRjMCAqLyAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAg
ICBoMjY0X2RlYmxvY2tfcDBfcTAocDAsIHAxLCBxMCwgcTEsIGZpbmFsdGMwLCBfX202NCwgcCwg
c2k2NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyt9CisrCisrI2RlZmluZSBoMjY0
X2xvb3BfZmlsdGVyX2Nocm9tYTRfZTJrKHAxLCBwMCwgcTAsIHExLCBhbHBoYSwgYmV0YSwgdGMw
KSB7ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBfX20xMjhpIGFscGhhdmVjLCBiZXRhdmVj
LCBtYXNrLCB0YzB2ZWMsIGZpbmFsdGMwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGJl
dGF2ZWMgPSBfbW1fc2V0MV9lcGk4KGJldGEgLSAxMjgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBhbHBoYXZlYyA9IF9tbV9zZXQx
X2VwaTgoYWxwaGEgLSAxMjgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKysgICAgbWFzayA9IGRlYmxvY2tfbWFzazE2KHAwLCBwMSwgcTAsIHEx
LCBhbHBoYXZlYywgYmV0YXZlYyk7IC8qIGlmIGluIGJsb2NrICovICAgICAgICAgICAgICBcCisr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB0YzB2ZWMgPSBfbW1f
Y3Z0c2kzMl9zaTEyOCgqKHVpbnQzMl90Kil0YzApOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKysgICAgdGMwdmVjID0gX21tX3VucGFja2xvX2VwaTgodGMw
dmVjLCB0YzB2ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisrICAgIHRjMHZlYyA9IF9tbV91bnBhY2tsb19lcGk4KHRjMHZlYywgdGMwdmVjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBtYXNrID0g
X21tX2JsZW5kdl9lcGk4KG1hc2ssIF9tbV9zZXR6ZXJvX3NpMTI4KCksIHRjMHZlYyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgZmluYWx0YzAgPSBfbW1fYW5kX3NpMTI4
KHRjMHZlYywgbWFzayk7ICAgICAgICAgICAgICAgIC8qIGlmICh0YzBbaV0gPj0gMCkgdGMgPSB0
YzAgKi8gICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBo
MjY0X2RlYmxvY2tfcDBfcTAocDAsIHAxLCBxMCwgcTEsIGZpbmFsdGMwLCBfX20xMjhpLCBlcCwg
c2kxMjgpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyt9CisrCisrc3RhdGljIHZvaWQgaDI2
NF92X2xvb3BfZmlsdGVyX2x1bWFfZTJrKHVpbnQ4X3QgKnBpeCwgcHRyZGlmZl90IHN0cmlkZSwg
aW50IGFscGhhLCBpbnQgYmV0YSwgaW50OF90ICp0YzApIHsKKysgICAgaWYgKCh0YzBbMF0gJiB0
YzBbMV0gJiB0YzBbMl0gJiB0YzBbM10pID49IDApIHsKKysgICAgICAgIHZlY191OCBwMiwgcDEs
IHAwLCBxMCwgcTEsIHEyOworKyAgICAgICAgcDIgPSBWRUNfTEQocGl4IC0gMyAqIHN0cmlkZSk7
CisrICAgICAgICBwMSA9IFZFQ19MRChwaXggLSAyICogc3RyaWRlKTsKKysgICAgICAgIHAwID0g
VkVDX0xEKHBpeCAtIHN0cmlkZSk7CisrICAgICAgICBxMCA9IFZFQ19MRChwaXgpOworKyAgICAg
ICAgcTEgPSBWRUNfTEQocGl4ICsgc3RyaWRlKTsKKysgICAgICAgIHEyID0gVkVDX0xEKHBpeCAr
IDIgKiBzdHJpZGUpOworKyAgICAgICAgaDI2NF9sb29wX2ZpbHRlcl9sdW1hX2UyayhwMiwgcDEs
IHAwLCBxMCwgcTEsIHEyLCBhbHBoYSwgYmV0YSwgdGMwKTsKKysgICAgICAgIFZFQ19TVChwaXgg
LSAyICogc3RyaWRlLCBwMSk7CisrICAgICAgICBWRUNfU1QocGl4IC0gMSAqIHN0cmlkZSwgcDAp
OworKyAgICAgICAgVkVDX1NUKHBpeCwgcTApOworKyAgICAgICAgVkVDX1NUKHBpeCArIHN0cmlk
ZSwgcTEpOworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkIGgyNjRfdl9sb29wX2ZpbHRlcl9j
aHJvbWFfZTJrKHVpbnQ4X3QgKnBpeCwgcHRyZGlmZl90IHN0cmlkZSwgaW50IGFscGhhLCBpbnQg
YmV0YSwgaW50OF90ICp0YzApIHsKKysgICAgaWYgKCh0YzBbMF0gJiB0YzBbMV0gJiB0YzBbMl0g
JiB0YzBbM10pID49IDApIHsKKysgICAgICAgIF9fbTY0IHAxLCBwMCwgcTAsIHExOworKyAgICAg
ICAgcDEgPSAqKF9fbTY0KikocGl4IC0gMiAqIHN0cmlkZSk7CisrICAgICAgICBwMCA9ICooX19t
NjQqKShwaXggLSBzdHJpZGUpOworKyAgICAgICAgcTAgPSAqKF9fbTY0KilwaXg7CisrICAgICAg
ICBxMSA9ICooX19tNjQqKShwaXggKyBzdHJpZGUpOworKyAgICAgICAgaDI2NF9sb29wX2ZpbHRl
cl9jaHJvbWEyX2UyayhwMSwgcDAsIHEwLCBxMSwgYWxwaGEsIGJldGEsIHRjMCk7CisrICAgICAg
ICAqKF9fbTY0KikocGl4IC0gMSAqIHN0cmlkZSkgPSBwMDsKKysgICAgICAgICooX19tNjQqKXBp
eCA9IHEwOworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkIGgyNjRfaF9sb29wX2ZpbHRlcl9s
dW1hX2Uyayh1aW50OF90ICpwaXgsIHB0cmRpZmZfdCBzdHJpZGUsIGludCBhbHBoYSwgaW50IGJl
dGEsIGludDhfdCAqdGMwKSB7CisrICAgIHZlY191OCBwMiwgcDEsIHAwLCBxMCwgcTEsIHEyOwor
KyAgICBpZiAoKHRjMFswXSAmIHRjMFsxXSAmIHRjMFsyXSAmIHRjMFszXSkgPCAwKSByZXR1cm47
CisrICAgIHJlYWRfYW5kX3RyYW5zcG9zZTE2eDYocGl4IC0gMywgc3RyaWRlLCBwMiwgcDEsIHAw
LCBxMCwgcTEsIHEyKTsKKysgICAgaDI2NF9sb29wX2ZpbHRlcl9sdW1hX2UyayhwMiwgcDEsIHAw
LCBxMCwgcTEsIHEyLCBhbHBoYSwgYmV0YSwgdGMwKTsKKysgICAgdHJhbnNwb3NlNHgxNihwMSwg
cDAsIHEwLCBxMSk7CisrICAgIHdyaXRlMTZ4NChwaXggLSAyLCBzdHJpZGUsIHAxLCBwMCwgcTAs
IHExKTsKKyt9CisrCisrc3RhdGljIHZvaWQgaDI2NF9oX2xvb3BfZmlsdGVyX2Nocm9tYV9lMmso
dWludDhfdCAqcGl4LCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgYWxwaGEsIGludCBiZXRhLCBpbnQ4
X3QgKnRjMCkgeworKyAgICBfX202NCBwMSwgcDAsIHEwLCBxMTsKKysgICAgaWYgKCh0YzBbMF0g
JiB0YzBbMV0gJiB0YzBbMl0gJiB0YzBbM10pIDwgMCkgcmV0dXJuOworKyAgICByZWFkX2FuZF90
cmFuc3Bvc2U4eDQocGl4IC0gMiwgc3RyaWRlLCBwMSwgcDAsIHEwLCBxMSk7CisrICAgIGgyNjRf
bG9vcF9maWx0ZXJfY2hyb21hMl9lMmsocDEsIHAwLCBxMCwgcTEsIGFscGhhLCBiZXRhLCB0YzAp
OworKyAgICBwMSA9IF9tbV91bnBhY2tsb19waTgocDAsIHEwKTsKKysgICAgcTEgPSBfbW1fdW5w
YWNraGlfcGk4KHAwLCBxMCk7CisrI2RlZmluZSBXUklURTIodiwgaSkgKih1aW50MTZfdCopKHBp
eCArIGkgKiBzdHJpZGUpID0gX21tX2V4dHJhY3RfcGkxNih2LCBpKTsKKysgICAgcGl4LS07Cisr
ICAgIFdSSVRFMihwMSwgMCkKKysgICAgV1JJVEUyKHAxLCAxKQorKyAgICBXUklURTIocDEsIDIp
CisrICAgIFdSSVRFMihwMSwgMykKKysgICAgcGl4ICs9IHN0cmlkZSAqIDQ7CisrICAgIFdSSVRF
MihxMSwgMCkKKysgICAgV1JJVEUyKHExLCAxKQorKyAgICBXUklURTIocTEsIDIpCisrICAgIFdS
SVRFMihxMSwgMykKKysjdW5kZWYgV1JJVEUyCisrfQorKworK3N0YXRpYyB2b2lkIGgyNjRfaF9s
b29wX2ZpbHRlcl9jaHJvbWE0MjJfZTJrKHVpbnQ4X3QgKnBpeCwgcHRyZGlmZl90IHN0cmlkZSwg
aW50IGFscGhhLCBpbnQgYmV0YSwgaW50OF90ICp0YzApIHsKKysgICAgX19tMTI4aSBwMSwgcDAs
IHEwLCBxMTsKKysgICAgX19tNjQgcDFsLCBwMGwsIHEwbCwgcTFsLCBwMWgsIHAwaCwgcTBoLCBx
MWg7CisrICAgIGlmICgodGMwWzBdICYgdGMwWzFdICYgdGMwWzJdICYgdGMwWzNdKSA8IDApIHJl
dHVybjsKKysgICAgcmVhZF9hbmRfdHJhbnNwb3NlOHg0KHBpeCAtIDIsIHN0cmlkZSwgcDFsLCBw
MGwsIHEwbCwgcTFsKTsKKysgICAgcmVhZF9hbmRfdHJhbnNwb3NlOHg0KHBpeCAtIDIgKyBzdHJp
ZGUgKiA4LCBzdHJpZGUsIHAxaCwgcDBoLCBxMGgsIHExaCk7CisrICAgIHAxID0gX21tX3VucGFj
a2xvX2VwaTY0KF9tbV9tb3ZwaTY0X2VwaTY0KHAxbCksIF9tbV9tb3ZwaTY0X2VwaTY0KHAxaCkp
OworKyAgICBwMCA9IF9tbV91bnBhY2tsb19lcGk2NChfbW1fbW92cGk2NF9lcGk2NChwMGwpLCBf
bW1fbW92cGk2NF9lcGk2NChwMGgpKTsKKysgICAgcTAgPSBfbW1fdW5wYWNrbG9fZXBpNjQoX21t
X21vdnBpNjRfZXBpNjQocTBsKSwgX21tX21vdnBpNjRfZXBpNjQocTBoKSk7CisrICAgIHExID0g
X21tX3VucGFja2xvX2VwaTY0KF9tbV9tb3ZwaTY0X2VwaTY0KHExbCksIF9tbV9tb3ZwaTY0X2Vw
aTY0KHExaCkpOworKyAgICBoMjY0X2xvb3BfZmlsdGVyX2Nocm9tYTRfZTJrKHAxLCBwMCwgcTAs
IHExLCBhbHBoYSwgYmV0YSwgdGMwKTsKKysgICAgdHJhbnNwb3NlNHgxNihwMSwgcDAsIHEwLCBx
MSk7CisrICAgIHdyaXRlMTZ4NChwaXggLSAyLCBzdHJpZGUsIHAxLCBwMCwgcTAsIHExKTsKKyt9
CisrCisrc3RhdGljIHZvaWQgd2VpZ2h0X2gyNjRfcGl4ZWxzMTZfZTJrKHVpbnQ4X3QgKmJsb2Nr
LCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaGVpZ2h0LAorKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbG9nMl9kZW5vbSwgaW50IHdlaWdodCwgaW50IG9mZnNldCkKKyt7
CisrICAgIGludCB5OworKyAgICB2ZWNfdTggdmJsb2NrOworKyAgICB2ZWNfczE2IHZ3ZWlnaHQs
IHZvZmZzZXQsIHYwLCB2MTsKKysgICAgTE9BRF9aRVJPOworKworKyAgICBvZmZzZXQgPDw9IGxv
ZzJfZGVub207CisrICAgIGlmIChsb2cyX2Rlbm9tKSBvZmZzZXQgKz0gMSA8PCAobG9nMl9kZW5v
bSAtIDEpOworKworKyAgICB2d2VpZ2h0ID0gX21tX3NldDFfZXBpMTYod2VpZ2h0KTsKKysgICAg
dm9mZnNldCA9IF9tbV9zZXQxX2VwaTE2KG9mZnNldCk7CisrCisrICAgIFBSQUdNQV9FMksoIml2
ZGVwIikKKysgICAgZm9yICh5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CisrICAgICAgICB2Ymxv
Y2sgPSBWRUNfTEQoYmxvY2spOworKyAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpOCh2Ymxv
Y2ssIHplcm92KTsKKysgICAgICAgIHYxID0gX21tX3VucGFja2hpX2VwaTgodmJsb2NrLCB6ZXJv
dik7CisrCisrICAgICAgICB2MCA9IF9tbV9tdWxsb19lcGkxNih2MCwgdndlaWdodCk7CisrICAg
ICAgICB2MSA9IF9tbV9tdWxsb19lcGkxNih2MSwgdndlaWdodCk7CisrICAgICAgICB2MCA9IF9t
bV9hZGRzX2VwaTE2KHYwLCB2b2Zmc2V0KTsKKysgICAgICAgIHYxID0gX21tX2FkZHNfZXBpMTYo
djEsIHZvZmZzZXQpOworKyAgICAgICAgdjAgPSBfbW1fc3JhaV9lcGkxNih2MCwgbG9nMl9kZW5v
bSk7CisrICAgICAgICB2MSA9IF9tbV9zcmFpX2VwaTE2KHYxLCBsb2cyX2Rlbm9tKTsKKysKKysg
ICAgICAgIHZibG9jayA9IF9tbV9wYWNrdXNfZXBpMTYodjAsIHYxKTsKKysgICAgICAgIFZFQ19T
VChibG9jaywgdmJsb2NrKTsKKysgICAgICAgIGJsb2NrICs9IHN0cmlkZTsKKysgICAgfQorK30K
KysKKytzdGF0aWMgdm9pZCB3ZWlnaHRfaDI2NF9waXhlbHM4X2Uyayh1aW50OF90ICpibG9jaywg
cHRyZGlmZl90IHN0cmlkZSwgaW50IGhlaWdodCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbG9nMl9kZW5vbSwgaW50IHdlaWdodCwgaW50IG9mZnNldCkKKyt7Cisr
ICAgIGludCB5OworKyAgICB2ZWNfdTggdmJsb2NrOworKyAgICB2ZWNfczE2IHZ3ZWlnaHQsIHZv
ZmZzZXQsIHYwOworKyAgICBMT0FEX1pFUk87CisrCisrICAgIG9mZnNldCA8PD0gbG9nMl9kZW5v
bTsKKysgICAgaWYgKGxvZzJfZGVub20pIG9mZnNldCArPSAxIDw8IChsb2cyX2Rlbm9tIC0gMSk7
CisrCisrICAgIHZ3ZWlnaHQgPSBfbW1fc2V0MV9lcGkxNih3ZWlnaHQpOworKyAgICB2b2Zmc2V0
ID0gX21tX3NldDFfZXBpMTYob2Zmc2V0KTsKKysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQor
KyAgICBmb3IgKHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKysgICAgICAgIHZibG9jayA9IFZF
Q19MRDgoYmxvY2spOworKyAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpOCh2YmxvY2ssIHpl
cm92KTsKKysKKysgICAgICAgIHYwID0gX21tX211bGxvX2VwaTE2KHYwLCB2d2VpZ2h0KTsKKysg
ICAgICAgIHYwID0gX21tX2FkZHNfZXBpMTYodjAsIHZvZmZzZXQpOworKyAgICAgICAgdjAgPSBf
bW1fc3JhaV9lcGkxNih2MCwgbG9nMl9kZW5vbSk7CisrCisrICAgICAgICB2YmxvY2sgPSBfbW1f
cGFja3VzX2VwaTE2KHYwLCB2MCk7CisrICAgICAgICBWRUNfU1RMKGJsb2NrLCB2YmxvY2spOwor
KyAgICAgICAgYmxvY2sgKz0gc3RyaWRlOworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkIGJp
d2VpZ2h0X2gyNjRfcGl4ZWxzMTZfZTJrKHVpbnQ4X3QgKmRzdCwgdWludDhfdCAqc3JjLCBwdHJk
aWZmX3Qgc3RyaWRlLCBpbnQgaGVpZ2h0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBsb2cyX2Rlbm9tLCBpbnQgd2VpZ2h0ZCwgaW50IHdlaWdodHMsIGludCBv
ZmZzZXQpCisreworKyAgICBpbnQgeTsKKysgICAgdmVjX3U4IHZzcmMsIHZkc3Q7CisrICAgIHZl
Y19zMTYgdndlaWdodHMsIHZ3ZWlnaHRkLCB2b2Zmc2V0LCB2MCwgdjEsIHYyLCB2MzsKKysgICAg
TE9BRF9aRVJPOworKworKyAgICBvZmZzZXQgPSAoKG9mZnNldCArIDEpIHwgMSkgPDwgbG9nMl9k
ZW5vbTsKKysgICAgdndlaWdodHMgPSBfbW1fc2V0MV9lcGkxNih3ZWlnaHRzKTsKKysgICAgdndl
aWdodGQgPSBfbW1fc2V0MV9lcGkxNih3ZWlnaHRkKTsKKysgICAgdm9mZnNldCA9IF9tbV9zZXQx
X2VwaTE2KG9mZnNldCk7CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9yICh5
ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7CisrICAgICAgICB2ZHN0ID0gVkVDX0xEKGRzdCk7Cisr
ICAgICAgICB2c3JjID0gVkVDX0xEKHNyYyk7CisrICAgICAgICB2MCA9IF9tbV91bnBhY2tsb19l
cGk4KHZkc3QsIHplcm92KTsKKysgICAgICAgIHYxID0gX21tX3VucGFja2hpX2VwaTgodmRzdCwg
emVyb3YpOworKyAgICAgICAgdjIgPSBfbW1fdW5wYWNrbG9fZXBpOCh2c3JjLCB6ZXJvdik7Cisr
ICAgICAgICB2MyA9IF9tbV91bnBhY2toaV9lcGk4KHZzcmMsIHplcm92KTsKKysKKysgICAgICAg
IHYwID0gX21tX211bGxvX2VwaTE2KHYwLCB2d2VpZ2h0ZCk7CisrICAgICAgICB2MSA9IF9tbV9t
dWxsb19lcGkxNih2MSwgdndlaWdodGQpOworKyAgICAgICAgdjIgPSBfbW1fbXVsbG9fZXBpMTYo
djIsIHZ3ZWlnaHRzKTsKKysgICAgICAgIHYzID0gX21tX211bGxvX2VwaTE2KHYzLCB2d2VpZ2h0
cyk7CisrICAgICAgICB2MCA9IF9tbV9hZGRzX2VwaTE2KHYwLCB2b2Zmc2V0KTsKKysgICAgICAg
IHYxID0gX21tX2FkZHNfZXBpMTYodjEsIHZvZmZzZXQpOworKyAgICAgICAgdjAgPSBfbW1fYWRk
c19lcGkxNih2MCwgdjIpOworKyAgICAgICAgdjEgPSBfbW1fYWRkc19lcGkxNih2MSwgdjMpOwor
KyAgICAgICAgdjAgPSBfbW1fc3JhaV9lcGkxNih2MCwgbG9nMl9kZW5vbSArIDEpOworKyAgICAg
ICAgdjEgPSBfbW1fc3JhaV9lcGkxNih2MSwgbG9nMl9kZW5vbSArIDEpOworKworKyAgICAgICAg
dmRzdCA9IF9tbV9wYWNrdXNfZXBpMTYodjAsIHYxKTsKKysgICAgICAgIFZFQ19TVChkc3QsIHZk
c3QpOworKyAgICAgICAgZHN0ICs9IHN0cmlkZTsKKysgICAgICAgIHNyYyArPSBzdHJpZGU7Cisr
ICAgIH0KKyt9CisrCisrc3RhdGljIHZvaWQgYml3ZWlnaHRfaDI2NF9waXhlbHM4X2Uyayh1aW50
OF90ICpkc3QsIHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHN0cmlkZSwgaW50IGhlaWdodCwKKysg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsb2cyX2Rlbm9tLCBpbnQg
d2VpZ2h0ZCwgaW50IHdlaWdodHMsIGludCBvZmZzZXQpCisreworKyAgICBpbnQgeTsKKysgICAg
dmVjX3U4IHZzcmMsIHZkc3Q7CisrICAgIHZlY19zMTYgdndlaWdodHMsIHZ3ZWlnaHRkLCB2b2Zm
c2V0LCB2MCwgdjI7CisrICAgIExPQURfWkVSTzsKKysKKysgICAgb2Zmc2V0ID0gKChvZmZzZXQg
KyAxKSB8IDEpIDw8IGxvZzJfZGVub207CisrICAgIHZ3ZWlnaHRzID0gX21tX3NldDFfZXBpMTYo
d2VpZ2h0cyk7CisrICAgIHZ3ZWlnaHRkID0gX21tX3NldDFfZXBpMTYod2VpZ2h0ZCk7CisrICAg
IHZvZmZzZXQgPSBfbW1fc2V0MV9lcGkxNihvZmZzZXQpOworKworKyAgICBQUkFHTUFfRTJLKCJp
dmRlcCIpCisrICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworKyAgICAgICAgdmRz
dCA9IFZFQ19MRDgoZHN0KTsKKysgICAgICAgIHZzcmMgPSBWRUNfTEQ4KHNyYyk7CisrICAgICAg
ICB2MCA9IF9tbV91bnBhY2tsb19lcGk4KHZkc3QsIHplcm92KTsKKysgICAgICAgIHYyID0gX21t
X3VucGFja2xvX2VwaTgodnNyYywgemVyb3YpOworKworKyAgICAgICAgdjAgPSBfbW1fbXVsbG9f
ZXBpMTYodjAsIHZ3ZWlnaHRkKTsKKysgICAgICAgIHYyID0gX21tX211bGxvX2VwaTE2KHYyLCB2
d2VpZ2h0cyk7CisrICAgICAgICB2MCA9IF9tbV9hZGRzX2VwaTE2KHYwLCB2b2Zmc2V0KTsKKysg
ICAgICAgIHYwID0gX21tX2FkZHNfZXBpMTYodjAsIHYyKTsKKysgICAgICAgIHYwID0gX21tX3Ny
YWlfZXBpMTYodjAsIGxvZzJfZGVub20gKyAxKTsKKysKKysgICAgICAgIHZkc3QgPSBfbW1fcGFj
a3VzX2VwaTE2KHYwLCB2MCk7CisrICAgICAgICBWRUNfU1RMKGRzdCwgdmRzdCk7CisrICAgICAg
ICBkc3QgKz0gc3RyaWRlOworKyAgICAgICAgc3JjICs9IHN0cmlkZTsKKysgICAgfQorK30KKysK
Kythdl9jb2xkIHZvaWQgZmZfaDI2NGRzcF9pbml0X2UyayhIMjY0RFNQQ29udGV4dCAqYywgY29u
c3QgaW50IGJpdF9kZXB0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBpbnQgY2hyb21hX2Zvcm1hdF9pZGMpCisreworKyAgICBpZiAoIUUyS19CQVNFKGF2X2dldF9j
cHVfZmxhZ3MoKSkpCisrICAgICAgICByZXR1cm47CisrCisrICAgIGlmIChiaXRfZGVwdGggPT0g
OCkgeworKyAgICAgICAgYy0+aDI2NF9pZGN0X2FkZCA9IGgyNjRfaWRjdF9hZGRfZTJrOworKyAg
ICAgICAgaWYgKGNocm9tYV9mb3JtYXRfaWRjIDw9IDEpCisrICAgICAgICAgICAgYy0+aDI2NF9p
ZGN0X2FkZDggPSBoMjY0X2lkY3RfYWRkOF9lMms7IC8vICFjaGVja2FzbQorKworKyAgICAgICAg
Yy0+aDI2NF9pZGN0X2FkZDE2ICAgICAgPSBoMjY0X2lkY3RfYWRkMTZfZTJrOworKyAgICAgICAg
Yy0+aDI2NF9pZGN0X2FkZDE2aW50cmEgPSBoMjY0X2lkY3RfYWRkMTZpbnRyYV9lMms7CisrICAg
ICAgICBjLT5oMjY0X2lkY3RfZGNfYWRkICAgICA9IGgyNjRfaWRjdF9kY19hZGRfZTJrOworKyAg
ICAgICAgYy0+aDI2NF9pZGN0OF9kY19hZGQgICAgPSBoMjY0X2lkY3Q4X2RjX2FkZF9lMms7Cisr
ICAgICAgICBjLT5oMjY0X2lkY3Q4X2FkZCAgICAgICA9IGgyNjRfaWRjdDhfYWRkX2UyazsKKysg
ICAgICAgIGMtPmgyNjRfaWRjdDhfYWRkNCAgICAgID0gaDI2NF9pZGN0OF9hZGQ0X2UyazsKKysg
ICAgICAgIGMtPmgyNjRfdl9sb29wX2ZpbHRlcl9sdW1hID0gaDI2NF92X2xvb3BfZmlsdGVyX2x1
bWFfZTJrOworKyAgICAgICAgYy0+aDI2NF9oX2xvb3BfZmlsdGVyX2x1bWEgPSBoMjY0X2hfbG9v
cF9maWx0ZXJfbHVtYV9lMms7CisrICAgICAgICBjLT5oMjY0X3ZfbG9vcF9maWx0ZXJfY2hyb21h
ID0gaDI2NF92X2xvb3BfZmlsdGVyX2Nocm9tYV9lMms7CisrICAgICAgICBpZiAoY2hyb21hX2Zv
cm1hdF9pZGMgPD0gMSkgeworKyAgICAgICAgICAgIGMtPmgyNjRfaF9sb29wX2ZpbHRlcl9jaHJv
bWEgPSBoMjY0X2hfbG9vcF9maWx0ZXJfY2hyb21hX2UyazsKKysgICAgICAgIH0gZWxzZSB7Cisr
ICAgICAgICAgICAgYy0+aDI2NF9oX2xvb3BfZmlsdGVyX2Nocm9tYSA9IGgyNjRfaF9sb29wX2Zp
bHRlcl9jaHJvbWE0MjJfZTJrOworKyAgICAgICAgfQorKyAgICAgICAgYy0+d2VpZ2h0X2gyNjRf
cGl4ZWxzX3RhYlswXSAgID0gd2VpZ2h0X2gyNjRfcGl4ZWxzMTZfZTJrOyAgIC8vICFjaGVja2Fz
bQorKyAgICAgICAgYy0+d2VpZ2h0X2gyNjRfcGl4ZWxzX3RhYlsxXSAgID0gd2VpZ2h0X2gyNjRf
cGl4ZWxzOF9lMms7ICAgIC8vICFjaGVja2FzbQorKyAgICAgICAgYy0+Yml3ZWlnaHRfaDI2NF9w
aXhlbHNfdGFiWzBdID0gYml3ZWlnaHRfaDI2NF9waXhlbHMxNl9lMms7IC8vICFjaGVja2FzbQor
KyAgICAgICAgYy0+Yml3ZWlnaHRfaDI2NF9waXhlbHNfdGFiWzFdID0gYml3ZWlnaHRfaDI2NF9w
aXhlbHM4X2UyazsgIC8vICFjaGVja2FzbQorKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL2xpYmF2
Y29kZWMvZTJrL2gyNjRxcGVsLmMgYi9saWJhdmNvZGVjL2Uyay9oMjY0cXBlbC5jCituZXcgZmls
ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjhmZTA5NAorLS0tIC9kZXYvbnVsbAorKysr
IGIvbGliYXZjb2RlYy9lMmsvaDI2NHFwZWwuYworQEAgLTAsMCArMSwyNTUgQEAKKysvKgorKyAq
IENvcHlyaWdodCAoQykgMjAyMSBJbHlhIEt1cmR5dWtvdiA8anBlZ3FzQGdtYWlsLmNvbT4gZm9y
IEJhc2VBTFQsIEx0ZAorKyAqIENvcHlyaWdodCAoYykgMjAwNCBSb21haW4gRG9sYmVhdSA8cm9t
YWluQGRvbGJlYXUub3JnPgorKyAqCisrICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgor
KyAqCisrICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIEZGbXBlZyBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBG
Rm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEw
LTEzMDEgVVNBCisrICovCisrCisrI2luY2x1ZGUgImNvbmZpZy5oIgorKworKyNpbmNsdWRlICJs
aWJhdnV0aWwvYXR0cmlidXRlcy5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvY3B1LmgiCisrI2lu
Y2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3JpdGUuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Uy
ay9jcHUuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Uyay91dGlsX2Uyay5oIgorKworKyNpbmNs
dWRlICJsaWJhdmNvZGVjL2gyNjRxcGVsLmgiCisrCisrI2luY2x1ZGUgImhwZWxkc3AuaCIKKysK
KysjZGVmaW5lIFBVVF9PUF9VOF9FMksoZCwgcywgZHN0KSBkID0gcworKyNkZWZpbmUgQVZHX09Q
X1U4X0UySyhkLCBzLCBkc3QpIGQgPSBfbW1fYXZnX2VwdTgoZHN0LCBzKQorKworKyNkZWZpbmUg
T1BfVThfRTJLICAgICAgICAgICAgICAgICAgICAgICAgICBQVVRfT1BfVThfRTJLCisrI2RlZmlu
ZSBQUkVGSVhfaDI2NF9xcGVsMTZfaF9sb3dwYXNzX2UyayAgIHB1dF9oMjY0X3FwZWwxNl9oX2xv
d3Bhc3NfZTJrCisrI2RlZmluZSBQUkVGSVhfaDI2NF9xcGVsMTZfdl9sb3dwYXNzX2UyayAgIHB1
dF9oMjY0X3FwZWwxNl92X2xvd3Bhc3NfZTJrCisrI2RlZmluZSBQUkVGSVhfaDI2NF9xcGVsMTZf
aHZfbG93cGFzc19lMmsgIHB1dF9oMjY0X3FwZWwxNl9odl9sb3dwYXNzX2UyaworKyNpbmNsdWRl
ICJoMjY0cXBlbF90ZW1wbGF0ZS5jIgorKyN1bmRlZiBPUF9VOF9FMksKKysjdW5kZWYgUFJFRklY
X2gyNjRfcXBlbDE2X2hfbG93cGFzc19lMmsKKysjdW5kZWYgUFJFRklYX2gyNjRfcXBlbDE2X3Zf
bG93cGFzc19lMmsKKysjdW5kZWYgUFJFRklYX2gyNjRfcXBlbDE2X2h2X2xvd3Bhc3NfZTJrCisr
CisrI2RlZmluZSBPUF9VOF9FMksgICAgICAgICAgICAgICAgICAgICAgICAgIEFWR19PUF9VOF9F
MksKKysjZGVmaW5lIFBSRUZJWF9oMjY0X3FwZWwxNl9oX2xvd3Bhc3NfZTJrICAgYXZnX2gyNjRf
cXBlbDE2X2hfbG93cGFzc19lMmsKKysjZGVmaW5lIFBSRUZJWF9oMjY0X3FwZWwxNl92X2xvd3Bh
c3NfZTJrICAgYXZnX2gyNjRfcXBlbDE2X3ZfbG93cGFzc19lMmsKKysjZGVmaW5lIFBSRUZJWF9o
MjY0X3FwZWwxNl9odl9sb3dwYXNzX2UyayAgYXZnX2gyNjRfcXBlbDE2X2h2X2xvd3Bhc3NfZTJr
CisrI2luY2x1ZGUgImgyNjRxcGVsX3RlbXBsYXRlLmMiCisrI3VuZGVmIE9QX1U4X0UySworKyN1
bmRlZiBQUkVGSVhfaDI2NF9xcGVsMTZfaF9sb3dwYXNzX2UyaworKyN1bmRlZiBQUkVGSVhfaDI2
NF9xcGVsMTZfdl9sb3dwYXNzX2UyaworKyN1bmRlZiBQUkVGSVhfaDI2NF9xcGVsMTZfaHZfbG93
cGFzc19lMmsKKysKKysjZGVmaW5lIEgyNjRfTUMoT1BOQU1FLCBTSVpFLCBDT0RFVFlQRSkgXAor
K3N0YXRpYyB2b2lkIE9QTkFNRSMjaDI2NF9xcGVsIyNTSVpFIyNfbWMwMF8jI0NPREVUWVBFKHVp
bnQ4X3QgKmRzdCwgY29uc3QgdWludDhfdCAqc3JjLCBwdHJkaWZmX3Qgc3RyaWRlKVwKKyt7XAor
KyAgICBmZl8jI09QTkFNRSMjcGl4ZWxzIyNTSVpFIyNfIyNDT0RFVFlQRShkc3QsIHNyYywgc3Ry
aWRlLCBTSVpFKTtcCisrfVwKKytcCisrc3RhdGljIHZvaWQgT1BOQU1FIyNoMjY0X3FwZWwjI1NJ
WkUjI19tYzEwXyMjQ09ERVRZUEUodWludDhfdCAqZHN0LCBjb25zdCB1aW50OF90ICpzcmMsIHB0
cmRpZmZfdCBzdHJpZGUpXAorK3sgXAorKyAgICBERUNMQVJFX0FMSUdORUQoMTYsIHVpbnQ4X3Qs
IGhhbGYpW1NJWkUqU0laRV07XAorKyAgICBwdXRfaDI2NF9xcGVsIyNTSVpFIyNfaF9sb3dwYXNz
XyMjQ09ERVRZUEUoaGFsZiwgc3JjLCBTSVpFLCBzdHJpZGUpO1wKKysgICAgT1BOQU1FIyNwaXhl
bHMjI1NJWkUjI19sMl8jI0NPREVUWVBFKGRzdCwgc3JjLCBoYWxmLCBzdHJpZGUsIHN0cmlkZSwg
U0laRSk7XAorK31cCisrXAorK3N0YXRpYyB2b2lkIE9QTkFNRSMjaDI2NF9xcGVsIyNTSVpFIyNf
bWMyMF8jI0NPREVUWVBFKHVpbnQ4X3QgKmRzdCwgY29uc3QgdWludDhfdCAqc3JjLCBwdHJkaWZm
X3Qgc3RyaWRlKVwKKyt7XAorKyAgICBPUE5BTUUjI2gyNjRfcXBlbCMjU0laRSMjX2hfbG93cGFz
c18jI0NPREVUWVBFKGRzdCwgc3JjLCBzdHJpZGUsIHN0cmlkZSk7XAorK31cCisrXAorK3N0YXRp
YyB2b2lkIE9QTkFNRSMjaDI2NF9xcGVsIyNTSVpFIyNfbWMzMF8jI0NPREVUWVBFKHVpbnQ4X3Qg
KmRzdCwgY29uc3QgdWludDhfdCAqc3JjLCBwdHJkaWZmX3Qgc3RyaWRlKVwKKyt7XAorKyAgICBE
RUNMQVJFX0FMSUdORUQoMTYsIHVpbnQ4X3QsIGhhbGYpW1NJWkUqU0laRV07XAorKyAgICBwdXRf
aDI2NF9xcGVsIyNTSVpFIyNfaF9sb3dwYXNzXyMjQ09ERVRZUEUoaGFsZiwgc3JjLCBTSVpFLCBz
dHJpZGUpO1wKKysgICAgT1BOQU1FIyNwaXhlbHMjI1NJWkUjI19sMl8jI0NPREVUWVBFKGRzdCwg
c3JjKzEsIGhhbGYsIHN0cmlkZSwgc3RyaWRlLCBTSVpFKTtcCisrfVwKKytcCisrc3RhdGljIHZv
aWQgT1BOQU1FIyNoMjY0X3FwZWwjI1NJWkUjI19tYzAxXyMjQ09ERVRZUEUodWludDhfdCAqZHN0
LCBjb25zdCB1aW50OF90ICpzcmMsIHB0cmRpZmZfdCBzdHJpZGUpXAorK3tcCisrICAgIERFQ0xB
UkVfQUxJR05FRCgxNiwgdWludDhfdCwgaGFsZilbU0laRSpTSVpFXTtcCisrICAgIHB1dF9oMjY0
X3FwZWwjI1NJWkUjI192X2xvd3Bhc3NfIyNDT0RFVFlQRShoYWxmLCBzcmMsIFNJWkUsIHN0cmlk
ZSk7XAorKyAgICBPUE5BTUUjI3BpeGVscyMjU0laRSMjX2wyXyMjQ09ERVRZUEUoZHN0LCBzcmMs
IGhhbGYsIHN0cmlkZSwgc3RyaWRlLCBTSVpFKTtcCisrfVwKKytcCisrc3RhdGljIHZvaWQgT1BO
QU1FIyNoMjY0X3FwZWwjI1NJWkUjI19tYzAyXyMjQ09ERVRZUEUodWludDhfdCAqZHN0LCBjb25z
dCB1aW50OF90ICpzcmMsIHB0cmRpZmZfdCBzdHJpZGUpXAorK3tcCisrICAgIE9QTkFNRSMjaDI2
NF9xcGVsIyNTSVpFIyNfdl9sb3dwYXNzXyMjQ09ERVRZUEUoZHN0LCBzcmMsIHN0cmlkZSwgc3Ry
aWRlKTtcCisrfVwKKytcCisrc3RhdGljIHZvaWQgT1BOQU1FIyNoMjY0X3FwZWwjI1NJWkUjI19t
YzAzXyMjQ09ERVRZUEUodWludDhfdCAqZHN0LCBjb25zdCB1aW50OF90ICpzcmMsIHB0cmRpZmZf
dCBzdHJpZGUpXAorK3tcCisrICAgIERFQ0xBUkVfQUxJR05FRCgxNiwgdWludDhfdCwgaGFsZilb
U0laRSpTSVpFXTtcCisrICAgIHB1dF9oMjY0X3FwZWwjI1NJWkUjI192X2xvd3Bhc3NfIyNDT0RF
VFlQRShoYWxmLCBzcmMsIFNJWkUsIHN0cmlkZSk7XAorKyAgICBPUE5BTUUjI3BpeGVscyMjU0la
RSMjX2wyXyMjQ09ERVRZUEUoZHN0LCBzcmMrc3RyaWRlLCBoYWxmLCBzdHJpZGUsIHN0cmlkZSwg
U0laRSk7XAorK31cCisrXAorK3N0YXRpYyB2b2lkIE9QTkFNRSMjaDI2NF9xcGVsIyNTSVpFIyNf
bWMxMV8jI0NPREVUWVBFKHVpbnQ4X3QgKmRzdCwgY29uc3QgdWludDhfdCAqc3JjLCBwdHJkaWZm
X3Qgc3RyaWRlKVwKKyt7XAorKyAgICBERUNMQVJFX0FMSUdORUQoMTYsIHVpbnQ4X3QsIGhhbGZI
KVtTSVpFKlNJWkVdO1wKKysgICAgREVDTEFSRV9BTElHTkVEKDE2LCB1aW50OF90LCBoYWxmVilb
U0laRSpTSVpFXTtcCisrICAgIHB1dF9oMjY0X3FwZWwjI1NJWkUjI19oX2xvd3Bhc3NfIyNDT0RF
VFlQRShoYWxmSCwgc3JjLCBTSVpFLCBzdHJpZGUpO1wKKysgICAgcHV0X2gyNjRfcXBlbCMjU0la
RSMjX3ZfbG93cGFzc18jI0NPREVUWVBFKGhhbGZWLCBzcmMsIFNJWkUsIHN0cmlkZSk7XAorKyAg
ICBPUE5BTUUjI3BpeGVscyMjU0laRSMjX2wyXyMjQ09ERVRZUEUoZHN0LCBoYWxmSCwgaGFsZlYs
IHN0cmlkZSwgU0laRSwgU0laRSk7XAorK31cCisrXAorK3N0YXRpYyB2b2lkIE9QTkFNRSMjaDI2
NF9xcGVsIyNTSVpFIyNfbWMzMV8jI0NPREVUWVBFKHVpbnQ4X3QgKmRzdCwgY29uc3QgdWludDhf
dCAqc3JjLCBwdHJkaWZmX3Qgc3RyaWRlKVwKKyt7XAorKyAgICBERUNMQVJFX0FMSUdORUQoMTYs
IHVpbnQ4X3QsIGhhbGZIKVtTSVpFKlNJWkVdO1wKKysgICAgREVDTEFSRV9BTElHTkVEKDE2LCB1
aW50OF90LCBoYWxmVilbU0laRSpTSVpFXTtcCisrICAgIHB1dF9oMjY0X3FwZWwjI1NJWkUjI19o
X2xvd3Bhc3NfIyNDT0RFVFlQRShoYWxmSCwgc3JjLCBTSVpFLCBzdHJpZGUpO1wKKysgICAgcHV0
X2gyNjRfcXBlbCMjU0laRSMjX3ZfbG93cGFzc18jI0NPREVUWVBFKGhhbGZWLCBzcmMrMSwgU0la
RSwgc3RyaWRlKTtcCisrICAgIE9QTkFNRSMjcGl4ZWxzIyNTSVpFIyNfbDJfIyNDT0RFVFlQRShk
c3QsIGhhbGZILCBoYWxmViwgc3RyaWRlLCBTSVpFLCBTSVpFKTtcCisrfVwKKytcCisrc3RhdGlj
IHZvaWQgT1BOQU1FIyNoMjY0X3FwZWwjI1NJWkUjI19tYzEzXyMjQ09ERVRZUEUodWludDhfdCAq
ZHN0LCBjb25zdCB1aW50OF90ICpzcmMsIHB0cmRpZmZfdCBzdHJpZGUpXAorK3tcCisrICAgIERF
Q0xBUkVfQUxJR05FRCgxNiwgdWludDhfdCwgaGFsZkgpW1NJWkUqU0laRV07XAorKyAgICBERUNM
QVJFX0FMSUdORUQoMTYsIHVpbnQ4X3QsIGhhbGZWKVtTSVpFKlNJWkVdO1wKKysgICAgcHV0X2gy
NjRfcXBlbCMjU0laRSMjX2hfbG93cGFzc18jI0NPREVUWVBFKGhhbGZILCBzcmMgKyBzdHJpZGUs
IFNJWkUsIHN0cmlkZSk7XAorKyAgICBwdXRfaDI2NF9xcGVsIyNTSVpFIyNfdl9sb3dwYXNzXyMj
Q09ERVRZUEUoaGFsZlYsIHNyYywgU0laRSwgc3RyaWRlKTtcCisrICAgIE9QTkFNRSMjcGl4ZWxz
IyNTSVpFIyNfbDJfIyNDT0RFVFlQRShkc3QsIGhhbGZILCBoYWxmViwgc3RyaWRlLCBTSVpFLCBT
SVpFKTtcCisrfVwKKytcCisrc3RhdGljIHZvaWQgT1BOQU1FIyNoMjY0X3FwZWwjI1NJWkUjI19t
YzMzXyMjQ09ERVRZUEUodWludDhfdCAqZHN0LCBjb25zdCB1aW50OF90ICpzcmMsIHB0cmRpZmZf
dCBzdHJpZGUpXAorK3tcCisrICAgIERFQ0xBUkVfQUxJR05FRCgxNiwgdWludDhfdCwgaGFsZkgp
W1NJWkUqU0laRV07XAorKyAgICBERUNMQVJFX0FMSUdORUQoMTYsIHVpbnQ4X3QsIGhhbGZWKVtT
SVpFKlNJWkVdO1wKKysgICAgcHV0X2gyNjRfcXBlbCMjU0laRSMjX2hfbG93cGFzc18jI0NPREVU
WVBFKGhhbGZILCBzcmMgKyBzdHJpZGUsIFNJWkUsIHN0cmlkZSk7XAorKyAgICBwdXRfaDI2NF9x
cGVsIyNTSVpFIyNfdl9sb3dwYXNzXyMjQ09ERVRZUEUoaGFsZlYsIHNyYysxLCBTSVpFLCBzdHJp
ZGUpO1wKKysgICAgT1BOQU1FIyNwaXhlbHMjI1NJWkUjI19sMl8jI0NPREVUWVBFKGRzdCwgaGFs
ZkgsIGhhbGZWLCBzdHJpZGUsIFNJWkUsIFNJWkUpO1wKKyt9XAorK1wKKytzdGF0aWMgdm9pZCBP
UE5BTUUjI2gyNjRfcXBlbCMjU0laRSMjX21jMjJfIyNDT0RFVFlQRSh1aW50OF90ICpkc3QsIGNv
bnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHN0cmlkZSlcCisre1wKKysgICAgREVDTEFSRV9B
TElHTkVEKDE2LCBpbnQxNl90LCB0bXApW1NJWkUqKFNJWkUrOCldO1wKKysgICAgT1BOQU1FIyNo
MjY0X3FwZWwjI1NJWkUjI19odl9sb3dwYXNzXyMjQ09ERVRZUEUoZHN0LCB0bXAsIHNyYywgc3Ry
aWRlLCBTSVpFLCBzdHJpZGUpO1wKKyt9XAorK1wKKytzdGF0aWMgdm9pZCBPUE5BTUUjI2gyNjRf
cXBlbCMjU0laRSMjX21jMjFfIyNDT0RFVFlQRSh1aW50OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3Qg
KnNyYywgcHRyZGlmZl90IHN0cmlkZSlcCisre1wKKysgICAgREVDTEFSRV9BTElHTkVEKDE2LCB1
aW50OF90LCBoYWxmSClbU0laRSpTSVpFXTtcCisrICAgIERFQ0xBUkVfQUxJR05FRCgxNiwgdWlu
dDhfdCwgaGFsZkhWKVtTSVpFKlNJWkVdO1wKKysgICAgREVDTEFSRV9BTElHTkVEKDE2LCBpbnQx
Nl90LCB0bXApW1NJWkUqKFNJWkUrOCldO1wKKysgICAgcHV0X2gyNjRfcXBlbCMjU0laRSMjX2hf
bG93cGFzc18jI0NPREVUWVBFKGhhbGZILCBzcmMsIFNJWkUsIHN0cmlkZSk7XAorKyAgICBwdXRf
aDI2NF9xcGVsIyNTSVpFIyNfaHZfbG93cGFzc18jI0NPREVUWVBFKGhhbGZIViwgdG1wLCBzcmMs
IFNJWkUsIFNJWkUsIHN0cmlkZSk7XAorKyAgICBPUE5BTUUjI3BpeGVscyMjU0laRSMjX2wyXyMj
Q09ERVRZUEUoZHN0LCBoYWxmSCwgaGFsZkhWLCBzdHJpZGUsIFNJWkUsIFNJWkUpO1wKKyt9XAor
K1wKKytzdGF0aWMgdm9pZCBPUE5BTUUjI2gyNjRfcXBlbCMjU0laRSMjX21jMjNfIyNDT0RFVFlQ
RSh1aW50OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHN0cmlkZSlcCisr
e1wKKysgICAgREVDTEFSRV9BTElHTkVEKDE2LCB1aW50OF90LCBoYWxmSClbU0laRSpTSVpFXTtc
CisrICAgIERFQ0xBUkVfQUxJR05FRCgxNiwgdWludDhfdCwgaGFsZkhWKVtTSVpFKlNJWkVdO1wK
KysgICAgREVDTEFSRV9BTElHTkVEKDE2LCBpbnQxNl90LCB0bXApW1NJWkUqKFNJWkUrOCldO1wK
KysgICAgcHV0X2gyNjRfcXBlbCMjU0laRSMjX2hfbG93cGFzc18jI0NPREVUWVBFKGhhbGZILCBz
cmMgKyBzdHJpZGUsIFNJWkUsIHN0cmlkZSk7XAorKyAgICBwdXRfaDI2NF9xcGVsIyNTSVpFIyNf
aHZfbG93cGFzc18jI0NPREVUWVBFKGhhbGZIViwgdG1wLCBzcmMsIFNJWkUsIFNJWkUsIHN0cmlk
ZSk7XAorKyAgICBPUE5BTUUjI3BpeGVscyMjU0laRSMjX2wyXyMjQ09ERVRZUEUoZHN0LCBoYWxm
SCwgaGFsZkhWLCBzdHJpZGUsIFNJWkUsIFNJWkUpO1wKKyt9XAorK1wKKytzdGF0aWMgdm9pZCBP
UE5BTUUjI2gyNjRfcXBlbCMjU0laRSMjX21jMTJfIyNDT0RFVFlQRSh1aW50OF90ICpkc3QsIGNv
bnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHN0cmlkZSlcCisre1wKKysgICAgREVDTEFSRV9B
TElHTkVEKDE2LCB1aW50OF90LCBoYWxmVilbU0laRSpTSVpFXTtcCisrICAgIERFQ0xBUkVfQUxJ
R05FRCgxNiwgdWludDhfdCwgaGFsZkhWKVtTSVpFKlNJWkVdO1wKKysgICAgREVDTEFSRV9BTElH
TkVEKDE2LCBpbnQxNl90LCB0bXApW1NJWkUqKFNJWkUrOCldO1wKKysgICAgcHV0X2gyNjRfcXBl
bCMjU0laRSMjX3ZfbG93cGFzc18jI0NPREVUWVBFKGhhbGZWLCBzcmMsIFNJWkUsIHN0cmlkZSk7
XAorKyAgICBwdXRfaDI2NF9xcGVsIyNTSVpFIyNfaHZfbG93cGFzc18jI0NPREVUWVBFKGhhbGZI
ViwgdG1wLCBzcmMsIFNJWkUsIFNJWkUsIHN0cmlkZSk7XAorKyAgICBPUE5BTUUjI3BpeGVscyMj
U0laRSMjX2wyXyMjQ09ERVRZUEUoZHN0LCBoYWxmViwgaGFsZkhWLCBzdHJpZGUsIFNJWkUsIFNJ
WkUpO1wKKyt9XAorK1wKKytzdGF0aWMgdm9pZCBPUE5BTUUjI2gyNjRfcXBlbCMjU0laRSMjX21j
MzJfIyNDT0RFVFlQRSh1aW50OF90ICpkc3QsIGNvbnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90
IHN0cmlkZSlcCisre1wKKysgICAgREVDTEFSRV9BTElHTkVEKDE2LCB1aW50OF90LCBoYWxmVilb
U0laRSpTSVpFXTtcCisrICAgIERFQ0xBUkVfQUxJR05FRCgxNiwgdWludDhfdCwgaGFsZkhWKVtT
SVpFKlNJWkVdO1wKKysgICAgREVDTEFSRV9BTElHTkVEKDE2LCBpbnQxNl90LCB0bXApW1NJWkUq
KFNJWkUrOCldO1wKKysgICAgcHV0X2gyNjRfcXBlbCMjU0laRSMjX3ZfbG93cGFzc18jI0NPREVU
WVBFKGhhbGZWLCBzcmMrMSwgU0laRSwgc3RyaWRlKTtcCisrICAgIHB1dF9oMjY0X3FwZWwjI1NJ
WkUjI19odl9sb3dwYXNzXyMjQ09ERVRZUEUoaGFsZkhWLCB0bXAsIHNyYywgU0laRSwgU0laRSwg
c3RyaWRlKTtcCisrICAgIE9QTkFNRSMjcGl4ZWxzIyNTSVpFIyNfbDJfIyNDT0RFVFlQRShkc3Qs
IGhhbGZWLCBoYWxmSFYsIHN0cmlkZSwgU0laRSwgU0laRSk7XAorK31cCisrCisrI2lmIDEKKytz
dGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIHB1dF9waXhlbHMxNl9sMl9lMmsodWludDhfdCAq
ZHN0LCBjb25zdCB1aW50OF90ICpzcmMxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMyLCBpbnQgZHN0X3N0cmlkZSwK
KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNy
Y19zdHJpZGUxLCBpbnQgaCkKKyt7CisrICAgIGludCBpOworKyAgICB2ZWNfdTggYSwgYiwgZDsK
KysKKysgICAgZm9yIChpID0gMDsgaSA8IGg7IGkrKykgeworKyAgICAgICAgYSA9IFZFQ19MRChz
cmMxICsgaSAqIHNyY19zdHJpZGUxKTsKKysgICAgICAgIGIgPSBWRUNfTEQoc3JjMiArIGkgKiAx
Nik7CisrICAgICAgICBkID0gX21tX2F2Z19lcHU4KGEsIGIpOworKyAgICAgICAgVkVDX1NUKGRz
dCwgZCk7CisrICAgICAgICBkc3QgKz0gZHN0X3N0cmlkZTsKKysgICAgfQorK30KKysKKytzdGF0
aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIGF2Z19waXhlbHMxNl9sMl9lMmsodWludDhfdCAqZHN0
LCBjb25zdCB1aW50OF90ICpzcmMxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMyLCBpbnQgZHN0X3N0cmlkZSwKKysg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY19z
dHJpZGUxLCBpbnQgaCkKKyt7CisrICAgIGludCBpOworKyAgICB2ZWNfdTggYSwgYiwgZDsKKysK
KysgICAgZm9yIChpID0gMDsgaSA8IGg7IGkrKykgeworKyAgICAgICAgYSA9IFZFQ19MRChzcmMx
ICsgaSAqIHNyY19zdHJpZGUxKTsKKysgICAgICAgIGIgPSBWRUNfTEQoc3JjMiArIGkgKiAxNik7
CisrICAgICAgICBkID0gX21tX2F2Z19lcHU4KGEsIGIpOworKyAgICAgICAgYSA9IF9tbV9hdmdf
ZXB1OChWRUNfTEQoZHN0KSwgZCk7CisrICAgICAgICBWRUNfU1QoZHN0LCBhKTsKKysgICAgICAg
IGRzdCArPSBkc3Rfc3RyaWRlOworKyAgICB9CisrfQorKworKyNlbHNlIC8vIEltcGxlbWVudGVk
IGJ1dCBjb3VsZCBiZSBmYXN0ZXIKKysjZGVmaW5lIHB1dF9waXhlbHMxNl9sMl9lMmsoZCxzMSxz
MixkcyxzMXMsaCkgcHV0X3BpeGVsczE2X2wyKGQsczEsczIsZHMsczFzLDE2LGgpCisrI2RlZmlu
ZSBhdmdfcGl4ZWxzMTZfbDJfZTJrKGQsczEsczIsZHMsczFzLGgpIGF2Z19waXhlbHMxNl9sMihk
LHMxLHMyLGRzLHMxcywxNixoKQorKyNlbmRpZgorKworK0gyNjRfTUMocHV0XywgMTYsIGUyaykK
KytIMjY0X01DKGF2Z18sIDE2LCBlMmspCisrCisrYXZfY29sZCB2b2lkIGZmX2gyNjRxcGVsX2lu
aXRfZTJrKEgyNjRRcGVsQ29udGV4dCAqYywgaW50IGJpdF9kZXB0aCkKKyt7CisrICAgIGNvbnN0
IGludCBoaWdoX2JpdF9kZXB0aCA9IGJpdF9kZXB0aCA+IDg7CisrCisrICAgIGlmICghRTJLX0JB
U0UoYXZfZ2V0X2NwdV9mbGFncygpKSkKKysgICAgICAgIHJldHVybjsKKysKKysgICAgaWYgKCFo
aWdoX2JpdF9kZXB0aCkgeworKyNkZWZpbmUgZHNwZnVuYyhQRlgsIElEWCwgTlVNKSBcCisrICAg
ICAgICBjLT5QRlgjI19waXhlbHNfdGFiW0lEWF1bIDBdID0gUEZYIyNOVU0jI19tYzAwX2Uyazsg
XAorKyAgICAgICAgYy0+UEZYIyNfcGl4ZWxzX3RhYltJRFhdWyAxXSA9IFBGWCMjTlVNIyNfbWMx
MF9lMms7IFwKKysgICAgICAgIGMtPlBGWCMjX3BpeGVsc190YWJbSURYXVsgMl0gPSBQRlgjI05V
TSMjX21jMjBfZTJrOyBcCisrICAgICAgICBjLT5QRlgjI19waXhlbHNfdGFiW0lEWF1bIDNdID0g
UEZYIyNOVU0jI19tYzMwX2UyazsgXAorKyAgICAgICAgYy0+UEZYIyNfcGl4ZWxzX3RhYltJRFhd
WyA0XSA9IFBGWCMjTlVNIyNfbWMwMV9lMms7IFwKKysgICAgICAgIGMtPlBGWCMjX3BpeGVsc190
YWJbSURYXVsgNV0gPSBQRlgjI05VTSMjX21jMTFfZTJrOyBcCisrICAgICAgICBjLT5QRlgjI19w
aXhlbHNfdGFiW0lEWF1bIDZdID0gUEZYIyNOVU0jI19tYzIxX2UyazsgXAorKyAgICAgICAgYy0+
UEZYIyNfcGl4ZWxzX3RhYltJRFhdWyA3XSA9IFBGWCMjTlVNIyNfbWMzMV9lMms7IFwKKysgICAg
ICAgIGMtPlBGWCMjX3BpeGVsc190YWJbSURYXVsgOF0gPSBQRlgjI05VTSMjX21jMDJfZTJrOyBc
CisrICAgICAgICBjLT5QRlgjI19waXhlbHNfdGFiW0lEWF1bIDldID0gUEZYIyNOVU0jI19tYzEy
X2UyazsgXAorKyAgICAgICAgYy0+UEZYIyNfcGl4ZWxzX3RhYltJRFhdWzEwXSA9IFBGWCMjTlVN
IyNfbWMyMl9lMms7IFwKKysgICAgICAgIGMtPlBGWCMjX3BpeGVsc190YWJbSURYXVsxMV0gPSBQ
RlgjI05VTSMjX21jMzJfZTJrOyBcCisrICAgICAgICBjLT5QRlgjI19waXhlbHNfdGFiW0lEWF1b
MTJdID0gUEZYIyNOVU0jI19tYzAzX2UyazsgXAorKyAgICAgICAgYy0+UEZYIyNfcGl4ZWxzX3Rh
YltJRFhdWzEzXSA9IFBGWCMjTlVNIyNfbWMxM19lMms7IFwKKysgICAgICAgIGMtPlBGWCMjX3Bp
eGVsc190YWJbSURYXVsxNF0gPSBQRlgjI05VTSMjX21jMjNfZTJrOyBcCisrICAgICAgICBjLT5Q
RlgjI19waXhlbHNfdGFiW0lEWF1bMTVdID0gUEZYIyNOVU0jI19tYzMzX2UyaworKworKyAgICAg
ICAgZHNwZnVuYyhwdXRfaDI2NF9xcGVsLCAwLCAxNik7CisrICAgICAgICBkc3BmdW5jKGF2Z19o
MjY0X3FwZWwsIDAsIDE2KTsKKysjdW5kZWYgZHNwZnVuYworKyAgICB9CisrfQorZGlmZiAtLWdp
dCBhL2xpYmF2Y29kZWMvZTJrL2gyNjRxcGVsX3RlbXBsYXRlLmMgYi9saWJhdmNvZGVjL2Uyay9o
MjY0cXBlbF90ZW1wbGF0ZS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u
YmJkNjUxNgorLS0tIC9kZXYvbnVsbAorKysrIGIvbGliYXZjb2RlYy9lMmsvaDI2NHFwZWxfdGVt
cGxhdGUuYworQEAgLTAsMCArMSwzNTQgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAyMSBJ
bHlhIEt1cmR5dWtvdiA8anBlZ3FzQGdtYWlsLmNvbT4gZm9yIEJhc2VBTFQsIEx0ZAorKyAqIENv
cHlyaWdodCAoYykgMjAwNCBSb21haW4gRG9sYmVhdSA8cm9tYWluQGRvbGJlYXUub3JnPgorKyAq
CisrICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorKyAqCisrICogRkZtcGVnIGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysg
KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisr
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisrICovCisrCisr
I2luY2x1ZGUgImNvbmZpZy5oIgorKyNpZiBIQVZFX1VOSVNURF9ICisrI2luY2x1ZGUgPHVuaXN0
ZC5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKKysjaW5j
bHVkZSAibGliYXZ1dGlsL21lbS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL3V0aWxfZTJr
LmgiCisrCisrI2RlZmluZSBsb2FkX2FsaWdubWVudCgpIHsgXAorKyAgICBzcmNNMiA9IFZFQ19M
RChzcmMgLSAyKTsgXAorKyAgICBzcmNNMSA9IFZFQ19MRChzcmMgLSAxKTsgXAorKyAgICBzcmNQ
MCA9IFZFQ19MRChzcmMpOyBcCisrICAgIHNyY1AxID0gVkVDX0xEKHNyYyArIDEpOyBcCisrICAg
IHNyY1AyID0gVkVDX0xEKHNyYyArIDIpOyBcCisrICAgIHNyY1AzID0gVkVDX0xEKHNyYyArIDMp
OyBcCisrfQorKworKy8qIHRoaXMgY29kZSBhc3N1bWUgc3RyaWRlICUgMTYgPT0gMCAqLworKyNp
ZmRlZiBQUkVGSVhfaDI2NF9xcGVsMTZfaF9sb3dwYXNzX2UyaworK3N0YXRpYyB2b2lkIFBSRUZJ
WF9oMjY0X3FwZWwxNl9oX2xvd3Bhc3NfZTJrKHVpbnQ4X3QgKmRzdCwKKysgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMsCisrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRzdFN0cmlkZSwg
aW50IHNyY1N0cmlkZSkKKyt7CisrICAgIGludCBpOworKworKyAgICBMT0FEX1pFUk87CisrICAg
IGNvbnN0IHZlY19zMTYgdjVzcyA9IF9tbV9zZXQxX2VwaTE2KDUpOworKyAgICBjb25zdCB2ZWNf
czE2IHYyMHNzID0gX21tX3NldDFfZXBpMTYoMjApOworKyAgICBjb25zdCB2ZWNfczE2IHYxNnNz
ID0gX21tX3NldDFfZXBpMTYoMTYpOworKworKyAgICB2ZWNfdTggc3JjTTIsIHNyY00xLCBzcmNQ
MCwgc3JjUDEsIHNyY1AyLCBzcmNQMzsKKysgICAgdmVjX3MxNiBzcmNQMEEsIHNyY1AwQiwgc3Jj
UDFBLCBzcmNQMUIsCisrICAgICAgICAgICAgICBzcmNQMkEsIHNyY1AyQiwgc3JjUDNBLCBzcmNQ
M0IsCisrICAgICAgICAgICAgICBzcmNNMUEsIHNyY00xQiwgc3JjTTJBLCBzcmNNMkIsCisrICAg
ICAgICAgICAgICBzdW0xQSwgc3VtMUIsIHN1bTJBLCBzdW0yQiwgc3VtM0EsIHN1bTNCLAorKyAg
ICAgICAgICAgICAgcHAxQSwgcHAxQiwgcHAyQSwgcHAyQiwgcHAzQSwgcHAzQiwKKysgICAgICAg
ICAgICAgIHN1bUEsIHN1bUI7CisrICAgIHZlY191OCBzdW0sIGZzdW07CisrCisrICAgIFBSQUdN
QV9FMksoIml2ZGVwIikKKysgICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsKKysgICAgICAg
IGxvYWRfYWxpZ25tZW50KCk7CisrCisrICAgICAgICBzcmNQMEEgPSBfbW1fdW5wYWNrbG9fZXBp
OChzcmNQMCwgemVyb3YpOworKyAgICAgICAgc3JjUDBCID0gX21tX3VucGFja2hpX2VwaTgoc3Jj
UDAsIHplcm92KTsKKysgICAgICAgIHNyY1AxQSA9IF9tbV91bnBhY2tsb19lcGk4KHNyY1AxLCB6
ZXJvdik7CisrICAgICAgICBzcmNQMUIgPSBfbW1fdW5wYWNraGlfZXBpOChzcmNQMSwgemVyb3Yp
OworKworKyAgICAgICAgc3JjUDJBID0gX21tX3VucGFja2xvX2VwaTgoc3JjUDIsIHplcm92KTsK
KysgICAgICAgIHNyY1AyQiA9IF9tbV91bnBhY2toaV9lcGk4KHNyY1AyLCB6ZXJvdik7CisrICAg
ICAgICBzcmNQM0EgPSBfbW1fdW5wYWNrbG9fZXBpOChzcmNQMywgemVyb3YpOworKyAgICAgICAg
c3JjUDNCID0gX21tX3VucGFja2hpX2VwaTgoc3JjUDMsIHplcm92KTsKKysKKysgICAgICAgIHNy
Y00xQSA9IF9tbV91bnBhY2tsb19lcGk4KHNyY00xLCB6ZXJvdik7CisrICAgICAgICBzcmNNMUIg
PSBfbW1fdW5wYWNraGlfZXBpOChzcmNNMSwgemVyb3YpOworKyAgICAgICAgc3JjTTJBID0gX21t
X3VucGFja2xvX2VwaTgoc3JjTTIsIHplcm92KTsKKysgICAgICAgIHNyY00yQiA9IF9tbV91bnBh
Y2toaV9lcGk4KHNyY00yLCB6ZXJvdik7CisrCisrICAgICAgICBzdW0xQSA9IF9tbV9hZGRzX2Vw
aTE2KHNyY1AwQSwgc3JjUDFBKTsKKysgICAgICAgIHN1bTFCID0gX21tX2FkZHNfZXBpMTYoc3Jj
UDBCLCBzcmNQMUIpOworKyAgICAgICAgc3VtMkEgPSBfbW1fYWRkc19lcGkxNihzcmNNMUEsIHNy
Y1AyQSk7CisrICAgICAgICBzdW0yQiA9IF9tbV9hZGRzX2VwaTE2KHNyY00xQiwgc3JjUDJCKTsK
KysgICAgICAgIHN1bTNBID0gX21tX2FkZHNfZXBpMTYoc3JjTTJBLCBzcmNQM0EpOworKyAgICAg
ICAgc3VtM0IgPSBfbW1fYWRkc19lcGkxNihzcmNNMkIsIHNyY1AzQik7CisrCisrICAgICAgICBw
cDFBID0gX21tX2FkZF9lcGkxNihfbW1fbXVsbG9fZXBpMTYoc3VtMUEsIHYyMHNzKSwgdjE2c3Mp
OworKyAgICAgICAgcHAxQiA9IF9tbV9hZGRfZXBpMTYoX21tX211bGxvX2VwaTE2KHN1bTFCLCB2
MjBzcyksIHYxNnNzKTsKKysgICAgICAgIHBwMkEgPSBfbW1fbXVsbG9fZXBpMTYoc3VtMkEsIHY1
c3MpOworKyAgICAgICAgcHAyQiA9IF9tbV9tdWxsb19lcGkxNihzdW0yQiwgdjVzcyk7CisrICAg
ICAgICBwcDNBID0gX21tX2FkZF9lcGkxNihzdW0zQSwgcHAxQSk7CisrICAgICAgICBwcDNCID0g
X21tX2FkZF9lcGkxNihzdW0zQiwgcHAxQik7CisrICAgICAgICBzdW1BID0gX21tX3N1Yl9lcGkx
NihwcDNBLCBwcDJBKTsKKysgICAgICAgIHN1bUIgPSBfbW1fc3ViX2VwaTE2KHBwM0IsIHBwMkIp
OworKyAgICAgICAgc3VtQSA9IF9tbV9zcmFpX2VwaTE2KHN1bUEsIDUpOworKyAgICAgICAgc3Vt
QiA9IF9tbV9zcmFpX2VwaTE2KHN1bUIsIDUpOworKyAgICAgICAgc3VtID0gX21tX3BhY2t1c19l
cGkxNihzdW1BLCBzdW1CKTsKKysKKysgICAgICAgIE9QX1U4X0UySyhmc3VtLCBzdW0sIFZFQ19M
RChkc3QpKTsKKysgICAgICAgIFZFQ19TVChkc3QsIGZzdW0pOworKworKyAgICAgICAgc3JjICs9
IHNyY1N0cmlkZTsKKysgICAgICAgIGRzdCArPSBkc3RTdHJpZGU7CisrICAgIH0KKyt9CisrI2Vu
ZGlmIC8qIFBSRUZJWF9oMjY0X3FwZWwxNl9oX2xvd3Bhc3NfZTJrICovCisrCisrLyogdGhpcyBj
b2RlIGFzc3VtZSBzdHJpZGUgJSAxNiA9PSAwICovCisrI2lmZGVmIFBSRUZJWF9oMjY0X3FwZWwx
Nl92X2xvd3Bhc3NfZTJrCisrc3RhdGljIHZvaWQgUFJFRklYX2gyNjRfcXBlbDE2X3ZfbG93cGFz
c19lMmsodWludDhfdCAqZHN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNyYywKKysgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgZHN0U3RyaWRlLCBpbnQgc3JjU3RyaWRlKQorK3sKKysg
ICAgaW50IGk7CisrCisrICAgIExPQURfWkVSTzsKKysgICAgY29uc3QgdmVjX3MxNiB2MjBzcyA9
IF9tbV9zZXQxX2VwaTE2KDIwKTsKKysgICAgY29uc3QgdmVjX3MxNiB2NXNzID0gX21tX3NldDFf
ZXBpMTYoNSk7CisrICAgIGNvbnN0IHZlY19zMTYgdjE2c3MgPSBfbW1fc2V0MV9lcGkxNigxNik7
CisrCisrICAgIGNvbnN0IHZlY191OCBzcmNNMiA9IFZFQ19MRChzcmMgLSBzcmNTdHJpZGUgKiAy
KTsKKysgICAgY29uc3QgdmVjX3U4IHNyY00xID0gVkVDX0xEKHNyYyAtIHNyY1N0cmlkZSk7Cisr
ICAgIGNvbnN0IHZlY191OCBzcmNQMCA9IFZFQ19MRChzcmMpOworKyAgICBjb25zdCB2ZWNfdTgg
c3JjUDEgPSBWRUNfTEQoc3JjICsgc3JjU3RyaWRlKTsKKysgICAgY29uc3QgdmVjX3U4IHNyY1Ay
ID0gVkVDX0xEKHNyYyArIHNyY1N0cmlkZSAqIDIpOworKworKyAgICB2ZWNfczE2IHNyY00yc3NB
ID0gX21tX3VucGFja2xvX2VwaTgoc3JjTTIsIHplcm92KTsKKysgICAgdmVjX3MxNiBzcmNNMnNz
QiA9IF9tbV91bnBhY2toaV9lcGk4KHNyY00yLCB6ZXJvdik7CisrICAgIHZlY19zMTYgc3JjTTFz
c0EgPSBfbW1fdW5wYWNrbG9fZXBpOChzcmNNMSwgemVyb3YpOworKyAgICB2ZWNfczE2IHNyY00x
c3NCID0gX21tX3VucGFja2hpX2VwaTgoc3JjTTEsIHplcm92KTsKKysgICAgdmVjX3MxNiBzcmNQ
MHNzQSA9IF9tbV91bnBhY2tsb19lcGk4KHNyY1AwLCB6ZXJvdik7CisrICAgIHZlY19zMTYgc3Jj
UDBzc0IgPSBfbW1fdW5wYWNraGlfZXBpOChzcmNQMCwgemVyb3YpOworKyAgICB2ZWNfczE2IHNy
Y1Axc3NBID0gX21tX3VucGFja2xvX2VwaTgoc3JjUDEsIHplcm92KTsKKysgICAgdmVjX3MxNiBz
cmNQMXNzQiA9IF9tbV91bnBhY2toaV9lcGk4KHNyY1AxLCB6ZXJvdik7CisrICAgIHZlY19zMTYg
c3JjUDJzc0EgPSBfbW1fdW5wYWNrbG9fZXBpOChzcmNQMiwgemVyb3YpOworKyAgICB2ZWNfczE2
IHNyY1Ayc3NCID0gX21tX3VucGFja2hpX2VwaTgoc3JjUDIsIHplcm92KTsKKysKKysgICAgdmVj
X3MxNiBwcDFBLCBwcDFCLCBwcDJBLCBwcDJCLCBwcDNBLCBwcDNCLAorKyAgICAgICAgICAgICAg
c3VtQSwgc3VtQiwgc3JjUDNzc0EsIHNyY1Azc3NCLAorKyAgICAgICAgICAgICAgc3VtMUEsIHN1
bTFCLCBzdW0yQSwgc3VtMkIsIHN1bTNBLCBzdW0zQjsKKysgICAgdmVjX3U4IHN1bSwgZnN1bSwg
c3JjUDM7CisrCisrICAgIHNyYyArPSBzcmNTdHJpZGUgKiAzOworKyAgICBQUkFHTUFfRTJLKCJp
dmRlcCIpCisrICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CisrICAgICAgICBzcmNQMyA9
IFZFQ19MRChzcmMpOworKyAgICAgICAgc3JjICs9IHNyY1N0cmlkZTsKKysKKysgICAgICAgIHNy
Y1Azc3NBID0gX21tX3VucGFja2xvX2VwaTgoc3JjUDMsIHplcm92KTsKKysgICAgICAgIHNyY1Az
c3NCID0gX21tX3VucGFja2hpX2VwaTgoc3JjUDMsIHplcm92KTsKKysKKysgICAgICAgIHN1bTFB
ID0gX21tX2FkZHNfZXBpMTYoc3JjUDBzc0EsIHNyY1Axc3NBKTsKKysgICAgICAgIHN1bTFCID0g
X21tX2FkZHNfZXBpMTYoc3JjUDBzc0IsIHNyY1Axc3NCKTsKKysgICAgICAgIHN1bTJBID0gX21t
X2FkZHNfZXBpMTYoc3JjTTFzc0EsIHNyY1Ayc3NBKTsKKysgICAgICAgIHN1bTJCID0gX21tX2Fk
ZHNfZXBpMTYoc3JjTTFzc0IsIHNyY1Ayc3NCKTsKKysgICAgICAgIHN1bTNBID0gX21tX2FkZHNf
ZXBpMTYoc3JjTTJzc0EsIHNyY1Azc3NBKTsKKysgICAgICAgIHN1bTNCID0gX21tX2FkZHNfZXBp
MTYoc3JjTTJzc0IsIHNyY1Azc3NCKTsKKysKKysgICAgICAgIHNyY00yc3NBID0gc3JjTTFzc0E7
CisrICAgICAgICBzcmNNMnNzQiA9IHNyY00xc3NCOworKyAgICAgICAgc3JjTTFzc0EgPSBzcmNQ
MHNzQTsKKysgICAgICAgIHNyY00xc3NCID0gc3JjUDBzc0I7CisrICAgICAgICBzcmNQMHNzQSA9
IHNyY1Axc3NBOworKyAgICAgICAgc3JjUDBzc0IgPSBzcmNQMXNzQjsKKysgICAgICAgIHNyY1Ax
c3NBID0gc3JjUDJzc0E7CisrICAgICAgICBzcmNQMXNzQiA9IHNyY1Ayc3NCOworKyAgICAgICAg
c3JjUDJzc0EgPSBzcmNQM3NzQTsKKysgICAgICAgIHNyY1Ayc3NCID0gc3JjUDNzc0I7CisrCisr
ICAgICAgICBwcDFBID0gX21tX2FkZF9lcGkxNihfbW1fbXVsbG9fZXBpMTYoc3VtMUEsIHYyMHNz
KSwgdjE2c3MpOworKyAgICAgICAgcHAxQiA9IF9tbV9hZGRfZXBpMTYoX21tX211bGxvX2VwaTE2
KHN1bTFCLCB2MjBzcyksIHYxNnNzKTsKKysgICAgICAgIHBwMkEgPSBfbW1fbXVsbG9fZXBpMTYo
c3VtMkEsIHY1c3MpOworKyAgICAgICAgcHAyQiA9IF9tbV9tdWxsb19lcGkxNihzdW0yQiwgdjVz
cyk7CisrICAgICAgICBwcDNBID0gX21tX2FkZF9lcGkxNihzdW0zQSwgcHAxQSk7CisrICAgICAg
ICBwcDNCID0gX21tX2FkZF9lcGkxNihzdW0zQiwgcHAxQik7CisrICAgICAgICBzdW1BID0gX21t
X3N1Yl9lcGkxNihwcDNBLCBwcDJBKTsKKysgICAgICAgIHN1bUIgPSBfbW1fc3ViX2VwaTE2KHBw
M0IsIHBwMkIpOworKyAgICAgICAgc3VtQSA9IF9tbV9zcmFpX2VwaTE2KHN1bUEsIDUpOworKyAg
ICAgICAgc3VtQiA9IF9tbV9zcmFpX2VwaTE2KHN1bUIsIDUpOworKyAgICAgICAgc3VtID0gX21t
X3BhY2t1c19lcGkxNihzdW1BLCBzdW1CKTsKKysKKysgICAgICAgIE9QX1U4X0UySyhmc3VtLCBz
dW0sIFZFQ19MRChkc3QpKTsKKysgICAgICAgIFZFQ19TVChkc3QsIGZzdW0pOworKyAgICAgICAg
ZHN0ICs9IGRzdFN0cmlkZTsKKysgICAgfQorK30KKysjZW5kaWYgLyogUFJFRklYX2gyNjRfcXBl
bDE2X3ZfbG93cGFzc19lMmsgKi8KKysKKysvKiB0aGlzIGNvZGUgYXNzdW1lIHN0cmlkZSAlIDE2
ID09IDAgKmFuZCogdG1wIGlzIHByb3Blcmx5IGFsaWduZWQgKi8KKysjaWZkZWYgUFJFRklYX2gy
NjRfcXBlbDE2X2h2X2xvd3Bhc3NfZTJrCisrc3RhdGljIHZvaWQgUFJFRklYX2gyNjRfcXBlbDE2
X2h2X2xvd3Bhc3NfZTJrKHVpbnQ4X3QgKmRzdCwgaW50MTZfdCAqdG1wLAorKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMsCisr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkc3RTdHJp
ZGUsIGludCB0bXBTdHJpZGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzcmNTdHJpZGUpCisreworKyAgICBpbnQgaTsKKysgICAgTE9BRF9aRVJP
OworKyAgICBjb25zdCB2ZWNfczE2IHYyMHNzID0gX21tX3NldDFfZXBpMTYoMjApOworKyAgICBj
b25zdCB2ZWNfczE2IHY1c3MgPSBfbW1fc2V0MV9lcGkxNig1KTsKKysgICAgY29uc3QgdmVjX3Mz
MiB2NTEyc2kgPSBfbW1fc2V0MV9lcGkzMig1MTIpOworKworKyAgICB2ZWNfczE2IHNyY1AwQSwg
c3JjUDBCLCBzcmNQMUEsIHNyY1AxQiwKKysgICAgICAgICAgICAgIHNyY1AyQSwgc3JjUDJCLCBz
cmNQM0EsIHNyY1AzQiwKKysgICAgICAgICAgICAgIHNyY00xQSwgc3JjTTFCLCBzcmNNMkEsIHNy
Y00yQiwKKysgICAgICAgICAgICAgIHN1bTFBLCBzdW0xQiwgc3VtMkEsIHN1bTJCLCBzdW0zQSwg
c3VtM0IsCisrICAgICAgICAgICAgICBwcDFBLCBwcDFCLCBwcDJBLCBwcDJCLCBzdW1BLCBzdW1C
OworKyAgICBpbnQxNl90ICp0bXBiaXMgPSB0bXA7CisrCisrICAgIHZlY19zMTYgdG1wTTFzc0Es
IHRtcE0xc3NCLCB0bXBNMnNzQSwgdG1wTTJzc0IsCisrICAgICAgICAgICAgICB0bXBQMHNzQSwg
dG1wUDBzc0IsIHRtcFAxc3NBLCB0bXBQMXNzQiwKKysgICAgICAgICAgICAgIHRtcFAyc3NBLCB0
bXBQMnNzQjsKKysKKysgICAgdmVjX3MzMiBwcDFBbCwgcHAxQWgsIHBwMUJsLCBwcDFCaCwgcHAy
QWwsIHBwMkFoLCBwcDJCbCwgcHAyQmgsCisrICAgICAgICAgICAgICBwcDNBbCwgcHAzQWgsIHBw
M0JsLCBwcDNCaCwgc3VtQWwsIHN1bUFoLCBzdW1CbCwgc3VtQmg7CisrICAgIHZlY191OCBmc3Vt
LCBzdW07CisrCisrICAgIHNyYyAtPSAyICogc3JjU3RyaWRlOworKyAgICBQUkFHTUFfRTJLKCJp
dmRlcCIpCisrICAgIGZvciAoaSA9IDA7IGkgPCAyMTsgaSArKykgeworKyAgICAgICAgdmVjX3U4
IHNyY00yLCBzcmNNMSwgc3JjUDAsIHNyY1AxLCBzcmNQMiwgc3JjUDM7CisrCisrICAgICAgICBs
b2FkX2FsaWdubWVudCgpOworKworKyAgICAgICAgc3JjUDBBID0gX21tX3VucGFja2xvX2VwaTgo
c3JjUDAsIHplcm92KTsKKysgICAgICAgIHNyY1AwQiA9IF9tbV91bnBhY2toaV9lcGk4KHNyY1Aw
LCB6ZXJvdik7CisrICAgICAgICBzcmNQMUEgPSBfbW1fdW5wYWNrbG9fZXBpOChzcmNQMSwgemVy
b3YpOworKyAgICAgICAgc3JjUDFCID0gX21tX3VucGFja2hpX2VwaTgoc3JjUDEsIHplcm92KTsK
KysKKysgICAgICAgIHNyY1AyQSA9IF9tbV91bnBhY2tsb19lcGk4KHNyY1AyLCB6ZXJvdik7Cisr
ICAgICAgICBzcmNQMkIgPSBfbW1fdW5wYWNraGlfZXBpOChzcmNQMiwgemVyb3YpOworKyAgICAg
ICAgc3JjUDNBID0gX21tX3VucGFja2xvX2VwaTgoc3JjUDMsIHplcm92KTsKKysgICAgICAgIHNy
Y1AzQiA9IF9tbV91bnBhY2toaV9lcGk4KHNyY1AzLCB6ZXJvdik7CisrCisrICAgICAgICBzcmNN
MUEgPSBfbW1fdW5wYWNrbG9fZXBpOChzcmNNMSwgemVyb3YpOworKyAgICAgICAgc3JjTTFCID0g
X21tX3VucGFja2hpX2VwaTgoc3JjTTEsIHplcm92KTsKKysgICAgICAgIHNyY00yQSA9IF9tbV91
bnBhY2tsb19lcGk4KHNyY00yLCB6ZXJvdik7CisrICAgICAgICBzcmNNMkIgPSBfbW1fdW5wYWNr
aGlfZXBpOChzcmNNMiwgemVyb3YpOworKworKyAgICAgICAgc3VtMUEgPSBfbW1fYWRkc19lcGkx
NihzcmNQMEEsIHNyY1AxQSk7CisrICAgICAgICBzdW0xQiA9IF9tbV9hZGRzX2VwaTE2KHNyY1Aw
Qiwgc3JjUDFCKTsKKysgICAgICAgIHN1bTJBID0gX21tX2FkZHNfZXBpMTYoc3JjTTFBLCBzcmNQ
MkEpOworKyAgICAgICAgc3VtMkIgPSBfbW1fYWRkc19lcGkxNihzcmNNMUIsIHNyY1AyQik7Cisr
ICAgICAgICBzdW0zQSA9IF9tbV9hZGRzX2VwaTE2KHNyY00yQSwgc3JjUDNBKTsKKysgICAgICAg
IHN1bTNCID0gX21tX2FkZHNfZXBpMTYoc3JjTTJCLCBzcmNQM0IpOworKworKyAgICAgICAgcHAx
QSA9IF9tbV9hZGRfZXBpMTYoX21tX211bGxvX2VwaTE2KHN1bTFBLCB2MjBzcyksIHN1bTNBKTsK
KysgICAgICAgIHBwMUIgPSBfbW1fYWRkX2VwaTE2KF9tbV9tdWxsb19lcGkxNihzdW0xQiwgdjIw
c3MpLCBzdW0zQik7CisrICAgICAgICBwcDJBID0gX21tX211bGxvX2VwaTE2KHN1bTJBLCB2NXNz
KTsKKysgICAgICAgIHBwMkIgPSBfbW1fbXVsbG9fZXBpMTYoc3VtMkIsIHY1c3MpOworKyAgICAg
ICAgc3VtQSA9IF9tbV9zdWJfZXBpMTYocHAxQSwgcHAyQSk7CisrICAgICAgICBzdW1CID0gX21t
X3N1Yl9lcGkxNihwcDFCLCBwcDJCKTsKKysKKysgICAgICAgIFZFQ19TVCh0bXAsIHN1bUEpOwor
KyAgICAgICAgVkVDX1NUKHRtcCArIDgsIHN1bUIpOworKworKyAgICAgICAgc3JjICs9IHNyY1N0
cmlkZTsKKysgICAgICAgIHRtcCArPSB0bXBTdHJpZGU7IC8qIGludDE2X3QqLCBhbmQgc3RyaWRl
IGlzIDE2LCBzbyBpdCdzIE9LIGhlcmUgKi8KKysgICAgfQorKworKyAgICB0bXBNMnNzQSA9IFZF
Q19MRCh0bXBiaXMpOworKyAgICB0bXBNMnNzQiA9IFZFQ19MRCh0bXBiaXMgKyA4KTsKKysgICAg
dG1wYmlzICs9IHRtcFN0cmlkZTsKKysgICAgdG1wTTFzc0EgPSBWRUNfTEQodG1wYmlzKTsKKysg
ICAgdG1wTTFzc0IgPSBWRUNfTEQodG1wYmlzICsgOCk7CisrICAgIHRtcGJpcyArPSB0bXBTdHJp
ZGU7CisrICAgIHRtcFAwc3NBID0gVkVDX0xEKHRtcGJpcyk7CisrICAgIHRtcFAwc3NCID0gVkVD
X0xEKHRtcGJpcyArIDgpOworKyAgICB0bXBiaXMgKz0gdG1wU3RyaWRlOworKyAgICB0bXBQMXNz
QSA9IFZFQ19MRCh0bXBiaXMpOworKyAgICB0bXBQMXNzQiA9IFZFQ19MRCh0bXBiaXMgKyA4KTsK
KysgICAgdG1wYmlzICs9IHRtcFN0cmlkZTsKKysgICAgdG1wUDJzc0EgPSBWRUNfTEQodG1wYmlz
KTsKKysgICAgdG1wUDJzc0IgPSBWRUNfTEQodG1wYmlzICsgOCk7CisrICAgIHRtcGJpcyArPSB0
bXBTdHJpZGU7CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9yIChpID0gMDsg
aSA8IDE2OyBpKyspIHsKKysgICAgICAgIHZlY19zMTYgdG1wMCwgdG1wMTsKKysgICAgICAgIGNv
bnN0IHZlY19zMTYgdG1wUDNzc0EgPSBWRUNfTEQodG1wYmlzKTsKKysgICAgICAgIGNvbnN0IHZl
Y19zMTYgdG1wUDNzc0IgPSBWRUNfTEQodG1wYmlzICsgOCk7CisrCisrICAgICAgICBjb25zdCB2
ZWNfczE2IHN1bTFBID0gX21tX2FkZHNfZXBpMTYodG1wUDBzc0EsIHRtcFAxc3NBKTsKKysgICAg
ICAgIGNvbnN0IHZlY19zMTYgc3VtMUIgPSBfbW1fYWRkc19lcGkxNih0bXBQMHNzQiwgdG1wUDFz
c0IpOworKyAgICAgICAgY29uc3QgdmVjX3MxNiBzdW0yQSA9IF9tbV9hZGRzX2VwaTE2KHRtcE0x
c3NBLCB0bXBQMnNzQSk7CisrICAgICAgICBjb25zdCB2ZWNfczE2IHN1bTJCID0gX21tX2FkZHNf
ZXBpMTYodG1wTTFzc0IsIHRtcFAyc3NCKTsKKysgICAgICAgIHZlY19zMTYgc3VtM0EgPSBfbW1f
YWRkc19lcGkxNih0bXBNMnNzQSwgdG1wUDNzc0EpOworKyAgICAgICAgdmVjX3MxNiBzdW0zQiA9
IF9tbV9hZGRzX2VwaTE2KHRtcE0yc3NCLCB0bXBQM3NzQik7CisrCisrICAgICAgICB0bXBiaXMg
Kz0gdG1wU3RyaWRlOworKworKyAgICAgICAgdG1wTTJzc0EgPSB0bXBNMXNzQTsKKysgICAgICAg
IHRtcE0yc3NCID0gdG1wTTFzc0I7CisrICAgICAgICB0bXBNMXNzQSA9IHRtcFAwc3NBOworKyAg
ICAgICAgdG1wTTFzc0IgPSB0bXBQMHNzQjsKKysgICAgICAgIHRtcFAwc3NBID0gdG1wUDFzc0E7
CisrICAgICAgICB0bXBQMHNzQiA9IHRtcFAxc3NCOworKyAgICAgICAgdG1wUDFzc0EgPSB0bXBQ
MnNzQTsKKysgICAgICAgIHRtcFAxc3NCID0gdG1wUDJzc0I7CisrICAgICAgICB0bXBQMnNzQSA9
IHRtcFAzc3NBOworKyAgICAgICAgdG1wUDJzc0IgPSB0bXBQM3NzQjsKKysKKysgICAgICAgIHRt
cDAgPSBfbW1fbXVsbG9fZXBpMTYoc3VtMUEsIHYyMHNzKTsKKysgICAgICAgIHRtcDEgPSBfbW1f
bXVsaGlfZXBpMTYoc3VtMUEsIHYyMHNzKTsKKysgICAgICAgIHBwMUFsID0gX21tX3VucGFja2xv
X2VwaTE2KHRtcDAsIHRtcDEpOworKyAgICAgICAgcHAxQWggPSBfbW1fdW5wYWNraGlfZXBpMTYo
dG1wMCwgdG1wMSk7CisrICAgICAgICB0bXAwID0gX21tX211bGxvX2VwaTE2KHN1bTFCLCB2MjBz
cyk7CisrICAgICAgICB0bXAxID0gX21tX211bGhpX2VwaTE2KHN1bTFCLCB2MjBzcyk7CisrICAg
ICAgICBwcDFCbCA9IF9tbV91bnBhY2tsb19lcGkxNih0bXAwLCB0bXAxKTsKKysgICAgICAgIHBw
MUJoID0gX21tX3VucGFja2hpX2VwaTE2KHRtcDAsIHRtcDEpOworKworKyAgICAgICAgcHAxQWwg
PSBfbW1fYWRkX2VwaTMyKHBwMUFsLCB2NTEyc2kpOworKyAgICAgICAgcHAxQWggPSBfbW1fYWRk
X2VwaTMyKHBwMUFoLCB2NTEyc2kpOworKyAgICAgICAgcHAxQmwgPSBfbW1fYWRkX2VwaTMyKHBw
MUJsLCB2NTEyc2kpOworKyAgICAgICAgcHAxQmggPSBfbW1fYWRkX2VwaTMyKHBwMUJoLCB2NTEy
c2kpOworKworKyAgICAgICAgdG1wMCA9IF9tbV9tdWxsb19lcGkxNihzdW0yQSwgdjVzcyk7Cisr
ICAgICAgICB0bXAxID0gX21tX211bGhpX2VwaTE2KHN1bTJBLCB2NXNzKTsKKysgICAgICAgIHBw
MkFsID0gX21tX3VucGFja2xvX2VwaTE2KHRtcDAsIHRtcDEpOworKyAgICAgICAgcHAyQWggPSBf
bW1fdW5wYWNraGlfZXBpMTYodG1wMCwgdG1wMSk7CisrICAgICAgICB0bXAwID0gX21tX211bGxv
X2VwaTE2KHN1bTJCLCB2NXNzKTsKKysgICAgICAgIHRtcDEgPSBfbW1fbXVsaGlfZXBpMTYoc3Vt
MkIsIHY1c3MpOworKyAgICAgICAgcHAyQmwgPSBfbW1fdW5wYWNrbG9fZXBpMTYodG1wMCwgdG1w
MSk7CisrICAgICAgICBwcDJCaCA9IF9tbV91bnBhY2toaV9lcGkxNih0bXAwLCB0bXAxKTsKKysK
KysgICAgICAgIHRtcDAgPSBfbW1fc3JhaV9lcGkzMihfbW1fdW5wYWNrbG9fZXBpMTYoc3VtM0Es
IHN1bTNBKSwgMTYpOworKyAgICAgICAgdG1wMSA9IF9tbV9zcmFpX2VwaTMyKF9tbV91bnBhY2to
aV9lcGkxNihzdW0zQSwgc3VtM0EpLCAxNik7CisrICAgICAgICBwcDNBbCA9IF9tbV9hZGRfZXBp
MzIodG1wMCwgcHAxQWwpOworKyAgICAgICAgcHAzQWggPSBfbW1fYWRkX2VwaTMyKHRtcDEsIHBw
MUFoKTsKKysgICAgICAgIHRtcDAgPSBfbW1fc3JhaV9lcGkzMihfbW1fdW5wYWNrbG9fZXBpMTYo
c3VtM0IsIHN1bTNCKSwgMTYpOworKyAgICAgICAgdG1wMSA9IF9tbV9zcmFpX2VwaTMyKF9tbV91
bnBhY2toaV9lcGkxNihzdW0zQiwgc3VtM0IpLCAxNik7CisrICAgICAgICBwcDNCbCA9IF9tbV9h
ZGRfZXBpMzIodG1wMCwgcHAxQmwpOworKyAgICAgICAgcHAzQmggPSBfbW1fYWRkX2VwaTMyKHRt
cDEsIHBwMUJoKTsKKysKKysgICAgICAgIHN1bUFsID0gX21tX3N1Yl9lcGkzMihwcDNBbCwgcHAy
QWwpOworKyAgICAgICAgc3VtQWggPSBfbW1fc3ViX2VwaTMyKHBwM0FoLCBwcDJBaCk7CisrICAg
ICAgICBzdW1CbCA9IF9tbV9zdWJfZXBpMzIocHAzQmwsIHBwMkJsKTsKKysgICAgICAgIHN1bUJo
ID0gX21tX3N1Yl9lcGkzMihwcDNCaCwgcHAyQmgpOworKworKyAgICAgICAgc3VtQWwgPSBfbW1f
c3JhaV9lcGkzMihzdW1BbCwgMTApOworKyAgICAgICAgc3VtQWggPSBfbW1fc3JhaV9lcGkzMihz
dW1BaCwgMTApOworKyAgICAgICAgc3VtQmwgPSBfbW1fc3JhaV9lcGkzMihzdW1CbCwgMTApOwor
KyAgICAgICAgc3VtQmggPSBfbW1fc3JhaV9lcGkzMihzdW1CaCwgMTApOworKworKyAgICAgICAg
c3VtQSA9IF9tbV9wYWNrc19lcGkzMihzdW1BbCwgc3VtQWgpOworKyAgICAgICAgc3VtQiA9IF9t
bV9wYWNrc19lcGkzMihzdW1CbCwgc3VtQmgpOworKyAgICAgICAgc3VtID0gX21tX3BhY2t1c19l
cGkxNihzdW1BLCBzdW1CKTsKKysKKysgICAgICAgIE9QX1U4X0UySyhmc3VtLCBzdW0sIFZFQ19M
RChkc3QpKTsKKysgICAgICAgIFZFQ19TVChkc3QsIGZzdW0pOworKyAgICAgICAgZHN0ICs9IGRz
dFN0cmlkZTsKKysgICAgfQorK30KKysjZW5kaWYgLyogUFJFRklYX2gyNjRfcXBlbDE2X2h2X2xv
d3Bhc3NfZTJrICovCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9lMmsvaGV2Y2RzcC5jIGIvbGli
YXZjb2RlYy9lMmsvaGV2Y2RzcC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw
MC4uNzQwMDRkNworLS0tIC9kZXYvbnVsbAorKysrIGIvbGliYXZjb2RlYy9lMmsvaGV2Y2RzcC5j
CitAQCAtMCwwICsxLDk0IEBACisrLyoKKysgKiBTSU1ELW9wdGltaXplZCBJRENUIGZ1bmN0aW9u
cyBmb3IgSEVWQyBkZWNvZGluZworKyAqIENvcHlyaWdodCAoQykgMjAyMSBJbHlhIEt1cmR5dWtv
diA8anBlZ3FzQGdtYWlsLmNvbT4gZm9yIEJhc2VBTFQsIEx0ZAorKyAqIENvcHlyaWdodCAoYykg
QWxleGFuZHJhIEhhamtvdmEKKysgKgorKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4K
KysgKgorKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBGRm1wZWcg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGgg
RkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxIFVTQQorKyAqLworKworKyNpbmNsdWRlICJjb25maWcuaCIKKysKKysjaW5jbHVkZSAi
bGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2NwdS5oIgorKyNp
bmNsdWRlICJsaWJhdnV0aWwvZTJrL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL3V0
aWxfZTJrLmgiCisrCisrI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Y2RzcC5oIgorKworKyNkZWZp
bmUgdHJhbnNmb3JtNHg0KHNoaWZ0KSB7IFwKKysgICAgdmVjX3MxNiBzcmNfMDIsIHNyY18xMzsg
XAorKyAgICB2ZWNfczMyIGUwLCBvMCwgZTEsIG8xLCBhZGQ7IFwKKysgICAgc3JjXzAyID0gX21t
X3VucGFja2xvX2VwaTE2KHNyY18wMSwgc3JjXzIzKTsgXAorKyAgICBzcmNfMTMgPSBfbW1fdW5w
YWNraGlfZXBpMTYoc3JjXzAxLCBzcmNfMjMpOyBcCisrICAgIGUwID0gX21tX21hZGRfZXBpMTYo
c3JjXzAyLCB0cmFuczApOyBcCisrICAgIG8wID0gX21tX21hZGRfZXBpMTYoc3JjXzEzLCB0cmFu
czEpOyBcCisrICAgIGUxID0gX21tX21hZGRfZXBpMTYoc3JjXzAyLCB0cmFuczIpOyBcCisrICAg
IG8xID0gX21tX21hZGRfZXBpMTYoc3JjXzEzLCB0cmFuczMpOyBcCisrICAgIGFkZCA9IF9tbV9z
ZXQxX2VwaTMyKDEgPDwgKHNoaWZ0IC0gMSkpOyBcCisrICAgIGUwID0gX21tX2FkZF9lcGkzMihl
MCwgYWRkKTsgXAorKyAgICBlMSA9IF9tbV9hZGRfZXBpMzIoZTEsIGFkZCk7IFwKKysgICAgcmVz
MCA9IF9tbV9hZGRfZXBpMzIoZTAsIG8wKTsgXAorKyAgICByZXMxID0gX21tX2FkZF9lcGkzMihl
MSwgbzEpOyBcCisrICAgIHJlczIgPSBfbW1fc3ViX2VwaTMyKGUxLCBvMSk7IFwKKysgICAgcmVz
MyA9IF9tbV9zdWJfZXBpMzIoZTAsIG8wKTsgXAorKyAgICByZXMwID0gX21tX3NyYWlfZXBpMzIo
cmVzMCwgc2hpZnQpOyBcCisrICAgIHJlczEgPSBfbW1fc3JhaV9lcGkzMihyZXMxLCBzaGlmdCk7
IFwKKysgICAgcmVzMiA9IF9tbV9zcmFpX2VwaTMyKHJlczIsIHNoaWZ0KTsgXAorKyAgICByZXMz
ID0gX21tX3NyYWlfZXBpMzIocmVzMywgc2hpZnQpOyBcCisrICAgIHBhY2tlZDAgPSBfbW1fcGFj
a3NfZXBpMzIocmVzMCwgcmVzMSk7IFwKKysgICAgcGFja2VkMSA9IF9tbV9wYWNrc19lcGkzMihy
ZXMyLCByZXMzKTsgXAorKyAgICBcCisrICAgIHJlczAgPSBfbW1fdW5wYWNrbG9fZXBpMTYocGFj
a2VkMCwgcGFja2VkMSk7IFwKKysgICAgcmVzMSA9IF9tbV91bnBhY2toaV9lcGkxNihwYWNrZWQw
LCBwYWNrZWQxKTsgXAorKyAgICBzcmNfMDEgPSBfbW1fdW5wYWNrbG9fZXBpMTYocmVzMCwgcmVz
MSk7IFwKKysgICAgc3JjXzIzID0gX21tX3VucGFja2hpX2VwaTE2KHJlczAsIHJlczEpOyBcCisr
fQorKworKyNkZWZpbmUgSEVWQ19JRENUNFg0X0UySyhkZXB0aCkgXAorK3N0YXRpYyB2b2lkIGZm
X2hldmNfaWRjdF80eDQjI18jI2RlcHRoIyNfZTJrKGludDE2X3QgKmNvZWZmcywgaW50IGNvbF9s
aW1pdCkgXAorK3sgXAorKyAgICBjb25zdCBpbnQgc2hpZnQgPSA3OyBcCisrICAgIGNvbnN0IGlu
dCBzaGlmdDIgPSAyMCAtIGRlcHRoOyBcCisrICAgIHZlY19zMTYgc3JjXzAxLCBzcmNfMjM7IFwK
KysgICAgdmVjX3MzMiByZXMwLCByZXMxLCByZXMyLCByZXMzOyBcCisrICAgIHZlY19zMTYgcGFj
a2VkMCwgcGFja2VkMTsgXAorKyAgICB2ZWNfczE2IHRyYW5zMCA9IF9tbV9zZXQxX2VwaTMyKDY0
IHwgNjQgPDwgMTYpOyBcCisrICAgIHZlY19zMTYgdHJhbnMxID0gX21tX3NldDFfZXBpMzIoODMg
fCAzNiA8PCAxNik7IFwKKysgICAgdmVjX3MxNiB0cmFuczIgPSBfbW1fc2V0MV9lcGkzMig2NCB8
IC02NCA8PCAxNik7IFwKKysgICAgdmVjX3MxNiB0cmFuczMgPSBfbW1fc2V0MV9lcGkzMigzNiB8
IC04MyA8PCAxNik7IFwKKysgICAgXAorKyAgICBzcmNfMDEgPSBWRUNfTEQoY29lZmZzKTsgXAor
KyAgICBzcmNfMjMgPSBWRUNfTEQoY29lZmZzICsgOCk7IFwKKysgICAgdHJhbnNmb3JtNHg0KHNo
aWZ0KTsgXAorKyAgICB0cmFuc2Zvcm00eDQoc2hpZnQyKTsgXAorKyAgICBWRUNfU1QoY29lZmZz
LCBzcmNfMDEpOyBcCisrICAgIFZFQ19TVChjb2VmZnMgKyA4LCBzcmNfMjMpOyBcCisrfQorKwor
K0hFVkNfSURDVDRYNF9FMksoOCkKKytIRVZDX0lEQ1Q0WDRfRTJLKDEwKQorKworK2F2X2NvbGQg
dm9pZCBmZl9oZXZjX2RzcF9pbml0X2UyayhIRVZDRFNQQ29udGV4dCAqYywgY29uc3QgaW50IGJp
dF9kZXB0aCkKKyt7CisrICAgIGlmICghRTJLX0JBU0UoYXZfZ2V0X2NwdV9mbGFncygpKSkKKysg
ICAgICAgIHJldHVybjsKKysKKysgICAgaWYgKGJpdF9kZXB0aCA9PSA4KQorKyAgICAgICAgYy0+
aWRjdFswXSA9IGZmX2hldmNfaWRjdF80eDRfOF9lMms7CisrICAgIGlmIChiaXRfZGVwdGggPT0g
MTApCisrICAgICAgICBjLT5pZGN0WzBdID0gZmZfaGV2Y19pZGN0XzR4NF8xMF9lMms7CisrfQor
ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZTJrL2hwZWxkc3AuYyBiL2xpYmF2Y29kZWMvZTJrL2hw
ZWxkc3AuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjlmZjU5YmIKKy0t
LSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29kZWMvZTJrL2hwZWxkc3AuYworQEAgLTAsMCArMSwz
MDIgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAyMSBJbHlhIEt1cmR5dWtvdiA8anBlZ3Fz
QGdtYWlsLmNvbT4gZm9yIEJhc2VBTFQsIEx0ZAorKyAqIENvcHlyaWdodCAoYykgMjAwMiBCcmlh
biBGb2xleQorKyAqIENvcHlyaWdodCAoYykgMjAwMiBEaWV0ZXIgU2hpcmxleQorKyAqIENvcHly
aWdodCAoYykgMjAwMy0yMDA0IFJvbWFpbiBEb2xiZWF1IDxyb21haW5AZG9sYmVhdS5vcmc+Cisr
ICoKKysgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoK
KysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysK
KysjaW5jbHVkZSAiY29uZmlnLmgiCisrCisrI2luY2x1ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVz
LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9jcHUuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Uy
ay9jcHUuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Uyay91dGlsX2Uyay5oIgorKworKyNpbmNs
dWRlICJsaWJhdmNvZGVjL2hwZWxkc3AuaCIKKysKKysjaW5jbHVkZSAiaHBlbGRzcC5oIgorKwor
Ky8qIG5leHQgb25lIGFzc3VtZXMgdGhhdCAoKGxpbmVfc2l6ZSAlIDE2KSA9PSAwKSAqLworK3Zv
aWQgZmZfcHV0X3BpeGVsczE2X2Uyayh1aW50OF90ICpibG9jaywgY29uc3QgdWludDhfdCAqcGl4
ZWxzLCBwdHJkaWZmX3QgbGluZV9zaXplLCBpbnQgaCkKKyt7CisrICAgIHZlY191OCB2MCwgdjEs
IHYyLCB2MzsKKysgICAgaW50IGk7CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAg
Zm9yIChpID0gMDsgaSA8IGg7IGkgKz0gNCkgeworKyAgICAgICAgdjAgPSBWRUNfTEQocGl4ZWxz
KTsKKysgICAgICAgIHYxID0gVkVDX0xEKHBpeGVscyArIGxpbmVfc2l6ZSk7CisrICAgICAgICB2
MiA9IFZFQ19MRChwaXhlbHMgKyBsaW5lX3NpemUgKiAyKTsKKysgICAgICAgIHYzID0gVkVDX0xE
KHBpeGVscyArIGxpbmVfc2l6ZSAqIDMpOworKyAgICAgICAgVkVDX1NUKGJsb2NrLCB2MCk7Cisr
ICAgICAgICBWRUNfU1QoYmxvY2sgKyBsaW5lX3NpemUsIHYxKTsKKysgICAgICAgIFZFQ19TVChi
bG9jayArIGxpbmVfc2l6ZSAqIDIsIHYyKTsKKysgICAgICAgIFZFQ19TVChibG9jayArIGxpbmVf
c2l6ZSAqIDMsIHYzKTsKKysgICAgICAgIHBpeGVscyArPSBsaW5lX3NpemUgKiA0OworKyAgICAg
ICAgYmxvY2sgKz0gbGluZV9zaXplICogNDsKKysgICAgfQorK30KKysKKysvKiBuZXh0IG9uZSBh
c3N1bWVzIHRoYXQgKChsaW5lX3NpemUgJSAxNikgPT0gMCkgKi8KKysjZGVmaW5lIG9wX2F2Zyhh
LGIpICBhID0gKCAoKGEpfChiKSkgLSAoKCgoYSleKGIpKSYweEZFRkVGRUZFVUwpPj4xKSApCisr
dm9pZCBmZl9hdmdfcGl4ZWxzMTZfZTJrKHVpbnQ4X3QgKmJsb2NrLCBjb25zdCB1aW50OF90ICpw
aXhlbHMsIHB0cmRpZmZfdCBsaW5lX3NpemUsIGludCBoKQorK3sKKysgICAgdmVjX3U4IHBpeGVs
c3YsIGJsb2NrdjsKKysgICAgaW50IGk7CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysg
ICAgZm9yIChpID0gMDsgaSA8IGg7IGkrKykgeworKyAgICAgICAgYmxvY2t2ID0gVkVDX0xEKGJs
b2NrKTsKKysgICAgICAgIHBpeGVsc3YgPSBWRUNfTEQocGl4ZWxzKTsKKysgICAgICAgIGJsb2Nr
diA9IF9tbV9hdmdfZXB1OChibG9ja3YsIHBpeGVsc3YpOworKyAgICAgICAgVkVDX1NUKGJsb2Nr
LCBibG9ja3YpOworKyAgICAgICAgcGl4ZWxzICs9IGxpbmVfc2l6ZTsKKysgICAgICAgIGJsb2Nr
ICs9IGxpbmVfc2l6ZTsKKysgICAgfQorK30KKysKKysvKiBuZXh0IG9uZSBhc3N1bWVzIHRoYXQg
KChsaW5lX3NpemUgJSA4KSA9PSAwKSAqLworK3N0YXRpYyB2b2lkIGF2Z19waXhlbHM4X2Uyayh1
aW50OF90ICogYmxvY2ssIGNvbnN0IHVpbnQ4X3QgKiBwaXhlbHMsIHB0cmRpZmZfdCBsaW5lX3Np
emUsIGludCBoKQorK3sKKysgICAgX19tNjQgcGl4ZWxzdiwgYmxvY2t2OworKyAgICBpbnQgaTsK
KysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAgICBmb3IgKGkgPSAwOyBpIDwgaDsgaSsr
KSB7CisrICAgICAgICBibG9ja3YgPSAqKF9fbTY0KilibG9jazsKKysgICAgICAgIHBpeGVsc3Yg
PSAqKF9fbTY0KilwaXhlbHM7CisrICAgICAgICBibG9ja3YgPSBfbW1fYXZnX3B1OChibG9ja3Ys
IHBpeGVsc3YpOworKyAgICAgICAgKihfX202NCopYmxvY2sgPSBibG9ja3Y7CisrICAgICAgICBw
aXhlbHMgKz0gbGluZV9zaXplOworKyAgICAgICAgYmxvY2sgKz0gbGluZV9zaXplOworKyAgICB9
CisrfQorKworKy8qIG5leHQgb25lIGFzc3VtZXMgdGhhdCAoKGxpbmVfc2l6ZSAlIDgpID09IDAp
ICovCisrc3RhdGljIHZvaWQgcHV0X3BpeGVsczhfeHkyX2Uyayh1aW50OF90ICpibG9jaywgY29u
c3QgdWludDhfdCAqcGl4ZWxzLCBwdHJkaWZmX3QgbGluZV9zaXplLCBpbnQgaCkKKyt7CisrICAg
IGludCBpOworKyAgICB2ZWNfdTggcGl4ZWxzdjEsIHBpeGVsc3YyLCBibG9ja3Y7CisrICAgIHZl
Y191MTYgcGl4ZWxzc3VtMSwgcGl4ZWxzc3VtMiwgdGVtcDM7CisrICAgIExPQURfWkVSTzsKKysg
ICAgY29uc3QgdmVjX3UxNiB2Y3R3byA9IF9tbV9zZXQxX2VwaTE2KDIpOworKworKyAgICBwaXhl
bHN2MSA9IFZFQ19MRDgocGl4ZWxzKTsKKysgICAgcGl4ZWxzdjIgPSBWRUNfTEQ4KHBpeGVscyAr
IDEpOworKyAgICBwaXhlbHN2MSA9IF9tbV91bnBhY2tsb19lcGk4KHBpeGVsc3YxLCB6ZXJvdik7
CisrICAgIHBpeGVsc3YyID0gX21tX3VucGFja2xvX2VwaTgocGl4ZWxzdjIsIHplcm92KTsKKysg
ICAgcGl4ZWxzc3VtMSA9IF9tbV9hZGRfZXBpMTYocGl4ZWxzdjEsIHBpeGVsc3YyKTsKKysgICAg
cGl4ZWxzc3VtMSA9IF9tbV9hZGRfZXBpMTYocGl4ZWxzc3VtMSwgdmN0d28pOworKworKyAgICBQ
UkFHTUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAoaSA9IDA7IGkgPCBoOyBpKyspIHsKKysgICAg
ICAgIHBpeGVscyArPSBsaW5lX3NpemU7CisrICAgICAgICBibG9ja3YgPSBWRUNfTEQ4KGJsb2Nr
KTsKKysgICAgICAgIHBpeGVsc3YxID0gVkVDX0xEOChwaXhlbHMpOworKyAgICAgICAgcGl4ZWxz
djIgPSBWRUNfTEQ4KHBpeGVscyArIDEpOworKyAgICAgICAgcGl4ZWxzdjEgPSBfbW1fdW5wYWNr
bG9fZXBpOChwaXhlbHN2MSwgemVyb3YpOworKyAgICAgICAgcGl4ZWxzdjIgPSBfbW1fdW5wYWNr
bG9fZXBpOChwaXhlbHN2MiwgemVyb3YpOworKyAgICAgICAgcGl4ZWxzc3VtMiA9IF9tbV9hZGRf
ZXBpMTYocGl4ZWxzdjEsIHBpeGVsc3YyKTsKKysgICAgICAgIHRlbXAzID0gX21tX2FkZF9lcGkx
NihwaXhlbHNzdW0xLCBwaXhlbHNzdW0yKTsKKysgICAgICAgIHRlbXAzID0gX21tX3NyYWlfZXBp
MTYodGVtcDMsIDIpOworKyAgICAgICAgcGl4ZWxzc3VtMSA9IF9tbV9hZGRfZXBpMTYocGl4ZWxz
c3VtMiwgdmN0d28pOworKworKyAgICAgICAgYmxvY2t2ID0gX21tX3BhY2t1c19lcGkxNih0ZW1w
MywgdGVtcDMpOworKyAgICAgICAgVkVDX1NUTChibG9jaywgYmxvY2t2KTsKKysgICAgICAgIGJs
b2NrICs9IGxpbmVfc2l6ZTsKKysgICAgfQorK30KKysKKysvKiBuZXh0IG9uZSBhc3N1bWVzIHRo
YXQgKChsaW5lX3NpemUgJSA4KSA9PSAwKSAqLworK3N0YXRpYyB2b2lkIHB1dF9ub19ybmRfcGl4
ZWxzOF94eTJfZTJrKHVpbnQ4X3QgKmJsb2NrLCBjb25zdCB1aW50OF90ICpwaXhlbHMsIHB0cmRp
ZmZfdCBsaW5lX3NpemUsIGludCBoKQorK3sKKysgICAgaW50IGk7CisrICAgIHZlY191OCBwaXhl
bHN2MSwgcGl4ZWxzdjIsIGJsb2NrdjsKKysgICAgdmVjX3UxNiBwaXhlbHNzdW0xLCBwaXhlbHNz
dW0yLCB0ZW1wMzsKKysgICAgTE9BRF9aRVJPOworKyAgICBjb25zdCB2ZWNfdTE2IHZjb25lID0g
X21tX3NldDFfZXBpMTYoMSk7CisrCisrICAgIHBpeGVsc3YxID0gVkVDX0xEOChwaXhlbHMpOwor
KyAgICBwaXhlbHN2MiA9IFZFQ19MRDgocGl4ZWxzICsgMSk7CisrICAgIHBpeGVsc3YxID0gX21t
X3VucGFja2xvX2VwaTgocGl4ZWxzdjEsIHplcm92KTsKKysgICAgcGl4ZWxzdjIgPSBfbW1fdW5w
YWNrbG9fZXBpOChwaXhlbHN2MiwgemVyb3YpOworKyAgICBwaXhlbHNzdW0xID0gX21tX2FkZF9l
cGkxNihwaXhlbHN2MSwgcGl4ZWxzdjIpOworKyAgICBwaXhlbHNzdW0xID0gX21tX2FkZF9lcGkx
NihwaXhlbHNzdW0xLCB2Y29uZSk7CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAg
Zm9yIChpID0gMDsgaSA8IGg7IGkrKykgeworKyAgICAgICAgcGl4ZWxzICs9IGxpbmVfc2l6ZTsK
KysgICAgICAgIGJsb2NrdiA9IFZFQ19MRDgoYmxvY2spOworKyAgICAgICAgcGl4ZWxzdjEgPSBW
RUNfTEQ4KHBpeGVscyk7CisrICAgICAgICBwaXhlbHN2MiA9IFZFQ19MRDgocGl4ZWxzICsgMSk7
CisrICAgICAgICBwaXhlbHN2MSA9IF9tbV91bnBhY2tsb19lcGk4KHBpeGVsc3YxLCB6ZXJvdik7
CisrICAgICAgICBwaXhlbHN2MiA9IF9tbV91bnBhY2tsb19lcGk4KHBpeGVsc3YyLCB6ZXJvdik7
CisrICAgICAgICBwaXhlbHNzdW0yID0gX21tX2FkZF9lcGkxNihwaXhlbHN2MSwgcGl4ZWxzdjIp
OworKyAgICAgICAgdGVtcDMgPSBfbW1fYWRkX2VwaTE2KHBpeGVsc3N1bTEsIHBpeGVsc3N1bTIp
OworKyAgICAgICAgdGVtcDMgPSBfbW1fc3JhaV9lcGkxNih0ZW1wMywgMik7CisrICAgICAgICBw
aXhlbHNzdW0xID0gX21tX2FkZF9lcGkxNihwaXhlbHNzdW0yLCB2Y29uZSk7CisrCisrICAgICAg
ICBibG9ja3YgPSBfbW1fcGFja3VzX2VwaTE2KHRlbXAzLCB0ZW1wMyk7CisrICAgICAgICBWRUNf
U1RMKGJsb2NrLCBibG9ja3YpOworKyAgICAgICAgYmxvY2sgKz0gbGluZV9zaXplOworKyAgICB9
CisrfQorKworKy8qIG5leHQgb25lIGFzc3VtZXMgdGhhdCAoKGxpbmVfc2l6ZSAlIDE2KSA9PSAw
KSAqLworK3N0YXRpYyB2b2lkIHB1dF9waXhlbHMxNl94eTJfZTJrKHVpbnQ4X3QgKiBibG9jaywg
Y29uc3QgdWludDhfdCAqIHBpeGVscywgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50IGgpCisrewor
KyAgICBpbnQgaTsKKysgICAgdmVjX3U4IHBpeGVsc3YxLCBwaXhlbHN2MiwgcGl4ZWxzdjMsIHBp
eGVsc3Y0LCBibG9ja3Y7CisrICAgIHZlY191MTYgdGVtcDMsIHRlbXA0LCBwaXhlbHNzdW0xLCBw
aXhlbHNzdW0yLCBwaXhlbHNzdW0zLCBwaXhlbHNzdW00OworKyAgICBMT0FEX1pFUk87CisrICAg
IGNvbnN0IHZlY191MTYgdmN0d28gPSBfbW1fc2V0MV9lcGkxNigyKTsKKysKKysgICAgcGl4ZWxz
djEgPSBWRUNfTEQocGl4ZWxzKTsKKysgICAgcGl4ZWxzdjIgPSBWRUNfTEQocGl4ZWxzICsgMSk7
CisrICAgIHBpeGVsc3YzID0gX21tX3VucGFja2hpX2VwaTgocGl4ZWxzdjEsIHplcm92KTsKKysg
ICAgcGl4ZWxzdjQgPSBfbW1fdW5wYWNraGlfZXBpOChwaXhlbHN2MiwgemVyb3YpOworKyAgICBw
aXhlbHN2MSA9IF9tbV91bnBhY2tsb19lcGk4KHBpeGVsc3YxLCB6ZXJvdik7CisrICAgIHBpeGVs
c3YyID0gX21tX3VucGFja2xvX2VwaTgocGl4ZWxzdjIsIHplcm92KTsKKysgICAgcGl4ZWxzc3Vt
MyA9IF9tbV9hZGRfZXBpMTYocGl4ZWxzdjMsIHBpeGVsc3Y0KTsKKysgICAgcGl4ZWxzc3VtMyA9
IF9tbV9hZGRfZXBpMTYocGl4ZWxzc3VtMywgdmN0d28pOworKyAgICBwaXhlbHNzdW0xID0gX21t
X2FkZF9lcGkxNihwaXhlbHN2MSwgcGl4ZWxzdjIpOworKyAgICBwaXhlbHNzdW0xID0gX21tX2Fk
ZF9lcGkxNihwaXhlbHNzdW0xLCB2Y3R3byk7CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikK
KysgICAgZm9yIChpID0gMDsgaSA8IGg7IGkrKykgeworKyAgICAgICAgcGl4ZWxzICs9IGxpbmVf
c2l6ZTsKKysgICAgICAgIGJsb2NrdiA9IFZFQ19MRChibG9jayk7CisrICAgICAgICBwaXhlbHN2
MSA9IFZFQ19MRChwaXhlbHMpOworKyAgICAgICAgcGl4ZWxzdjIgPSBWRUNfTEQocGl4ZWxzICsg
MSk7CisrICAgICAgICBwaXhlbHN2MyA9IF9tbV91bnBhY2toaV9lcGk4KHBpeGVsc3YxLCB6ZXJv
dik7CisrICAgICAgICBwaXhlbHN2NCA9IF9tbV91bnBhY2toaV9lcGk4KHBpeGVsc3YyLCB6ZXJv
dik7CisrICAgICAgICBwaXhlbHN2MSA9IF9tbV91bnBhY2tsb19lcGk4KHBpeGVsc3YxLCB6ZXJv
dik7CisrICAgICAgICBwaXhlbHN2MiA9IF9tbV91bnBhY2tsb19lcGk4KHBpeGVsc3YyLCB6ZXJv
dik7CisrICAgICAgICBwaXhlbHNzdW00ID0gX21tX2FkZF9lcGkxNihwaXhlbHN2MywgcGl4ZWxz
djQpOworKyAgICAgICAgcGl4ZWxzc3VtMiA9IF9tbV9hZGRfZXBpMTYocGl4ZWxzdjEsIHBpeGVs
c3YyKTsKKysgICAgICAgIHRlbXA0ID0gX21tX2FkZF9lcGkxNihwaXhlbHNzdW0zLCBwaXhlbHNz
dW00KTsKKysgICAgICAgIHRlbXA0ID0gX21tX3NyYWlfZXBpMTYodGVtcDQsIDIpOworKyAgICAg
ICAgdGVtcDMgPSBfbW1fYWRkX2VwaTE2KHBpeGVsc3N1bTEsIHBpeGVsc3N1bTIpOworKyAgICAg
ICAgdGVtcDMgPSBfbW1fc3JhaV9lcGkxNih0ZW1wMywgMik7CisrICAgICAgICBwaXhlbHNzdW0z
ID0gX21tX2FkZF9lcGkxNihwaXhlbHNzdW00LCB2Y3R3byk7CisrICAgICAgICBwaXhlbHNzdW0x
ID0gX21tX2FkZF9lcGkxNihwaXhlbHNzdW0yLCB2Y3R3byk7CisrICAgICAgICBibG9ja3YgPSBf
bW1fcGFja3VzX2VwaTE2KHRlbXAzLCB0ZW1wNCk7CisrICAgICAgICBWRUNfU1QoYmxvY2ssIGJs
b2Nrdik7CisrICAgICAgICBibG9jayArPSBsaW5lX3NpemU7CisrICAgIH0KKyt9CisrCisrLyog
bmV4dCBvbmUgYXNzdW1lcyB0aGF0ICgobGluZV9zaXplICUgMTYpID09IDApICovCisrc3RhdGlj
IHZvaWQgcHV0X25vX3JuZF9waXhlbHMxNl94eTJfZTJrKHVpbnQ4X3QgKiBibG9jaywgY29uc3Qg
dWludDhfdCAqIHBpeGVscywgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50IGgpCisreworKyAgICBp
bnQgaTsKKysgICAgdmVjX3U4IHBpeGVsc3YxLCBwaXhlbHN2MiwgcGl4ZWxzdjMsIHBpeGVsc3Y0
LCBibG9ja3Y7CisrICAgIHZlY191MTYgdGVtcDMsIHRlbXA0LCBwaXhlbHNzdW0xLCBwaXhlbHNz
dW0yLCBwaXhlbHNzdW0zLCBwaXhlbHNzdW00OworKyAgICBMT0FEX1pFUk87CisrICAgIGNvbnN0
IHZlY191MTYgdmNvbmUgPSBfbW1fc2V0MV9lcGkxNigxKTsKKysKKysgICAgcGl4ZWxzdjEgPSBW
RUNfTEQocGl4ZWxzKTsKKysgICAgcGl4ZWxzdjIgPSBWRUNfTEQocGl4ZWxzICsgMSk7CisrICAg
IHBpeGVsc3YzID0gX21tX3VucGFja2hpX2VwaTgocGl4ZWxzdjEsIHplcm92KTsKKysgICAgcGl4
ZWxzdjQgPSBfbW1fdW5wYWNraGlfZXBpOChwaXhlbHN2MiwgemVyb3YpOworKyAgICBwaXhlbHN2
MSA9IF9tbV91bnBhY2tsb19lcGk4KHBpeGVsc3YxLCB6ZXJvdik7CisrICAgIHBpeGVsc3YyID0g
X21tX3VucGFja2xvX2VwaTgocGl4ZWxzdjIsIHplcm92KTsKKysgICAgcGl4ZWxzc3VtMyA9IF9t
bV9hZGRfZXBpMTYocGl4ZWxzdjMsIHBpeGVsc3Y0KTsKKysgICAgcGl4ZWxzc3VtMyA9IF9tbV9h
ZGRfZXBpMTYocGl4ZWxzc3VtMywgdmNvbmUpOworKyAgICBwaXhlbHNzdW0xID0gX21tX2FkZF9l
cGkxNihwaXhlbHN2MSwgcGl4ZWxzdjIpOworKyAgICBwaXhlbHNzdW0xID0gX21tX2FkZF9lcGkx
NihwaXhlbHNzdW0xLCB2Y29uZSk7CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAg
Zm9yIChpID0gMDsgaSA8IGg7IGkrKykgeworKyAgICAgICAgcGl4ZWxzICs9IGxpbmVfc2l6ZTsK
KysgICAgICAgIGJsb2NrdiA9IFZFQ19MRChibG9jayk7CisrICAgICAgICBwaXhlbHN2MSA9IFZF
Q19MRChwaXhlbHMpOworKyAgICAgICAgcGl4ZWxzdjIgPSBWRUNfTEQocGl4ZWxzICsgMSk7Cisr
ICAgICAgICBwaXhlbHN2MyA9IF9tbV91bnBhY2toaV9lcGk4KHBpeGVsc3YxLCB6ZXJvdik7Cisr
ICAgICAgICBwaXhlbHN2NCA9IF9tbV91bnBhY2toaV9lcGk4KHBpeGVsc3YyLCB6ZXJvdik7Cisr
ICAgICAgICBwaXhlbHN2MSA9IF9tbV91bnBhY2tsb19lcGk4KHBpeGVsc3YxLCB6ZXJvdik7Cisr
ICAgICAgICBwaXhlbHN2MiA9IF9tbV91bnBhY2tsb19lcGk4KHBpeGVsc3YyLCB6ZXJvdik7Cisr
ICAgICAgICBwaXhlbHNzdW00ID0gX21tX2FkZF9lcGkxNihwaXhlbHN2MywgcGl4ZWxzdjQpOwor
KyAgICAgICAgcGl4ZWxzc3VtMiA9IF9tbV9hZGRfZXBpMTYocGl4ZWxzdjEsIHBpeGVsc3YyKTsK
KysgICAgICAgIHRlbXA0ID0gX21tX2FkZF9lcGkxNihwaXhlbHNzdW0zLCBwaXhlbHNzdW00KTsK
KysgICAgICAgIHRlbXA0ID0gX21tX3NyYWlfZXBpMTYodGVtcDQsIDIpOworKyAgICAgICAgdGVt
cDMgPSBfbW1fYWRkX2VwaTE2KHBpeGVsc3N1bTEsIHBpeGVsc3N1bTIpOworKyAgICAgICAgdGVt
cDMgPSBfbW1fc3JhaV9lcGkxNih0ZW1wMywgMik7CisrICAgICAgICBwaXhlbHNzdW0zID0gX21t
X2FkZF9lcGkxNihwaXhlbHNzdW00LCB2Y29uZSk7CisrICAgICAgICBwaXhlbHNzdW0xID0gX21t
X2FkZF9lcGkxNihwaXhlbHNzdW0yLCB2Y29uZSk7CisrICAgICAgICBibG9ja3YgPSBfbW1fcGFj
a3VzX2VwaTE2KHRlbXAzLCB0ZW1wNCk7CisrICAgICAgICBWRUNfU1QoYmxvY2ssIGJsb2Nrdik7
CisrICAgICAgICBibG9jayArPSBsaW5lX3NpemU7CisrICAgIH0KKyt9CisrCisrLyogbmV4dCBv
bmUgYXNzdW1lcyB0aGF0ICgobGluZV9zaXplICUgOCkgPT0gMCkgKi8KKytzdGF0aWMgdm9pZCBh
dmdfcGl4ZWxzOF94eTJfZTJrKHVpbnQ4X3QgKmJsb2NrLCBjb25zdCB1aW50OF90ICpwaXhlbHMs
IHB0cmRpZmZfdCBsaW5lX3NpemUsIGludCBoKQorK3sKKysgICAgaW50IGk7CisrICAgIHZlY191
OCBwaXhlbHN2MSwgcGl4ZWxzdjIsIGJsb2NrdiwgYmxvY2t0ZW1wOworKyAgICB2ZWNfdTE2IHBp
eGVsc3N1bTEsIHBpeGVsc3N1bTIsIHRlbXAzOworKyAgICBMT0FEX1pFUk87CisrICAgIGNvbnN0
IHZlY191MTYgdmN0d28gPSBfbW1fc2V0MV9lcGkxNigyKTsKKysKKysgICAgcGl4ZWxzdjEgPSBW
RUNfTEQ4KHBpeGVscyk7CisrICAgIHBpeGVsc3YyID0gVkVDX0xEOChwaXhlbHMgKyAxKTsKKysg
ICAgcGl4ZWxzdjEgPSBfbW1fdW5wYWNrbG9fZXBpOChwaXhlbHN2MSwgemVyb3YpOworKyAgICBw
aXhlbHN2MiA9IF9tbV91bnBhY2tsb19lcGk4KHBpeGVsc3YyLCB6ZXJvdik7CisrICAgIHBpeGVs
c3N1bTEgPSBfbW1fYWRkX2VwaTE2KHBpeGVsc3YxLCBwaXhlbHN2Mik7CisrICAgIHBpeGVsc3N1
bTEgPSBfbW1fYWRkX2VwaTE2KHBpeGVsc3N1bTEsIHZjdHdvKTsKKysKKysgICAgUFJBR01BX0Uy
SygiaXZkZXAiKQorKyAgICBmb3IgKGkgPSAwOyBpIDwgaDsgaSsrKSB7CisrICAgICAgICBwaXhl
bHMgKz0gbGluZV9zaXplOworKyAgICAgICAgYmxvY2t2ID0gVkVDX0xEOChibG9jayk7CisrICAg
ICAgICBwaXhlbHN2MSA9IFZFQ19MRDgocGl4ZWxzKTsKKysgICAgICAgIHBpeGVsc3YyID0gVkVD
X0xEOChwaXhlbHMgKyAxKTsKKysgICAgICAgIHBpeGVsc3YxID0gX21tX3VucGFja2xvX2VwaTgo
cGl4ZWxzdjEsIHplcm92KTsKKysgICAgICAgIHBpeGVsc3YyID0gX21tX3VucGFja2xvX2VwaTgo
cGl4ZWxzdjIsIHplcm92KTsKKysgICAgICAgIHBpeGVsc3N1bTIgPSBfbW1fYWRkX2VwaTE2KHBp
eGVsc3YxLCBwaXhlbHN2Mik7CisrICAgICAgICB0ZW1wMyA9IF9tbV9hZGRfZXBpMTYocGl4ZWxz
c3VtMSwgcGl4ZWxzc3VtMik7CisrICAgICAgICB0ZW1wMyA9IF9tbV9zcmFpX2VwaTE2KHRlbXAz
LCAyKTsKKysgICAgICAgIHBpeGVsc3N1bTEgPSBfbW1fYWRkX2VwaTE2KHBpeGVsc3N1bTIsIHZj
dHdvKTsKKysgICAgICAgIGJsb2NrdGVtcCA9IF9tbV9wYWNrdXNfZXBpMTYodGVtcDMsIHRlbXAz
KTsKKysgICAgICAgIGJsb2NrdiA9IF9tbV9hdmdfZXB1OChibG9ja3RlbXAsIGJsb2Nrdik7Cisr
ICAgICAgICBWRUNfU1RMKGJsb2NrLCBibG9ja3YpOworKyAgICAgICAgYmxvY2sgKz0gbGluZV9z
aXplOworKyAgICB9CisrfQorKworK2F2X2NvbGQgdm9pZCBmZl9ocGVsZHNwX2luaXRfZTJrKEhw
ZWxEU1BDb250ZXh0ICpjLCBpbnQgZmxhZ3MpCisreworKyAgICBpZiAoIUUyS19CQVNFKGF2X2dl
dF9jcHVfZmxhZ3MoKSkpCisrICAgICAgICByZXR1cm47CisrCisrICAgIC8vICFjaGVja2FzbQor
KworKyAgICBjLT5hdmdfcGl4ZWxzX3RhYlswXVswXSAgICAgICAgPSBmZl9hdmdfcGl4ZWxzMTZf
ZTJrOworKyAgICBjLT5hdmdfcGl4ZWxzX3RhYlsxXVswXSAgICAgICAgPSBhdmdfcGl4ZWxzOF9l
Mms7CisrICAgIGMtPmF2Z19waXhlbHNfdGFiWzFdWzNdICAgICAgICA9IGF2Z19waXhlbHM4X3h5
Ml9lMms7IC8vIGZhdGUgdnN5bnRoMS1tcGVnMi00MjIKKysKKysgICAgYy0+cHV0X3BpeGVsc190
YWJbMF1bMF0gICAgICAgID0gZmZfcHV0X3BpeGVsczE2X2UyazsKKysgICAgYy0+cHV0X3BpeGVs
c190YWJbMV1bM10gICAgICAgID0gcHV0X3BpeGVsczhfeHkyX2UyazsKKysgICAgYy0+cHV0X3Bp
eGVsc190YWJbMF1bM10gICAgICAgID0gcHV0X3BpeGVsczE2X3h5Ml9lMms7CisrCisrICAgIGMt
PnB1dF9ub19ybmRfcGl4ZWxzX3RhYlswXVswXSA9IGZmX3B1dF9waXhlbHMxNl9lMms7CisrICAg
IGMtPnB1dF9ub19ybmRfcGl4ZWxzX3RhYlsxXVszXSA9IHB1dF9ub19ybmRfcGl4ZWxzOF94eTJf
ZTJrOworKyAgICBjLT5wdXRfbm9fcm5kX3BpeGVsc190YWJbMF1bM10gPSBwdXRfbm9fcm5kX3Bp
eGVsczE2X3h5Ml9lMms7CisrfQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZTJrL2hwZWxkc3Au
aCBiL2xpYmF2Y29kZWMvZTJrL2hwZWxkc3AuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4
IDAwMDAwMDAuLjBhZGUyNjQKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29kZWMvZTJrL2hw
ZWxkc3AuaAorQEAgLTAsMCArMSwzMCBAQAorKy8qCisrICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
RkZtcGVnLgorKyAqCisrICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAq
IEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxv
bmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BIDAyMTEwLTEzMDEgVVNBCisrICovCisrCisrI2lmbmRlZiBBVkNPREVDX0UyS19IUEVMRFNQ
X0gKKysjZGVmaW5lIEFWQ09ERUNfRTJLX0hQRUxEU1BfSAorKworKyNpbmNsdWRlIDxzdGRkZWYu
aD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrCisrdm9pZCBmZl9hdmdfcGl4ZWxzMTZfZTJrKHVp
bnQ4X3QgKmJsb2NrLCBjb25zdCB1aW50OF90ICpwaXhlbHMsCisrICAgICAgICAgICAgICAgICAg
ICAgICAgIHB0cmRpZmZfdCBsaW5lX3NpemUsIGludCBoKTsKKyt2b2lkIGZmX3B1dF9waXhlbHMx
Nl9lMmsodWludDhfdCAqYmxvY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscywKKysgICAgICAgICAg
ICAgICAgICAgICAgICAgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50IGgpOworKworKyNlbmRpZiAv
KiBBVkNPREVDX0UyS19IUEVMRFNQX0ggKi8KK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Uyay9p
ZGN0ZHNwLmMgYi9saWJhdmNvZGVjL2Uyay9pZGN0ZHNwLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0
CitpbmRleCAwMDAwMDAwLi5kYjlkMmNhCistLS0gL2Rldi9udWxsCisrKysgYi9saWJhdmNvZGVj
L2Uyay9pZGN0ZHNwLmMKK0BAIC0wLDAgKzEsMjM3IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgSWx5YSBLdXJkeXVrb3YgPGpwZWdxc0BnbWFpbC5jb20+IGZvciBCYXNlQUxULCBMdGQK
KysgKiBDb3B5cmlnaHQgKGMpIDIwMDEgTWljaGVsIExlc3BpbmFzc2UKKysgKgorKyAqIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKysgKgorKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVy
c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisrICoKKysgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KysgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisrICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorKyAqLworKworKy8qIE5PVEU6IFRo
aXMgY29kZSBpcyBiYXNlZCBvbiBHUEwgY29kZSBmcm9tIHRoZSBsaWJtcGVnMiBwcm9qZWN0LiAg
VGhlCisrICogYXV0aG9yLCBNaWNoZWwgTGVzcGluYXNzZXMsIGhhcyBnaXZlbiBleHBsaWNpdCBw
ZXJtaXNzaW9uIHRvIHJlbGVhc2UKKysgKiB1bmRlciBMR1BMIGFzIHBhcnQgb2YgRkZtcGVnLgor
KyAqCisrICogRkZtcGVnIGludGVncmF0aW9uIGJ5IERpZXRlciBTaGlybGV5CisrICoKKysgKiBU
aGlzIGZpbGUgaXMgYSBkaXJlY3QgY29weSBvZiB0aGUgQWx0aVZlYyBJRENUIG1vZHVsZSBmcm9t
IHRoZSBsaWJtcGVnMgorKyAqIHByb2plY3QuICBJJ3ZlIGRlbGV0ZWQgYWxsIG9mIHRoZSBsaWJt
cGVnMi1zcGVjaWZpYyBjb2RlLCByZW5hbWVkIHRoZQorKyAqIGZ1bmN0aW9ucyBhbmQgcmVvcmRl
cmVkIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXJzLiAgVGhlIG9ubHkgY2hhbmdlIHRvIHRoZQorKyAq
IElEQ1QgZnVuY3Rpb24gaXRzZWxmIHdhcyB0byBmYWN0b3Igb3V0IHRoZSBwYXJ0aWFsIHRyYW5z
cG9zaXRpb24sIGFuZCB0bworKyAqIHBlcmZvcm0gYSBmdWxsIHRyYW5zcG9zZSBhdCB0aGUgZW5k
IG9mIHRoZSBmdW5jdGlvbi4gKi8KKysKKysjaW5jbHVkZSAiY29uZmlnLmgiCisrCisrI2luY2x1
ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVkZSAibGliYXZ1
dGlsL2F0dHJpYnV0ZXMuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2NwdS5oIgorKyNpbmNsdWRl
ICJsaWJhdnV0aWwvZTJrL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL3V0aWxfZTJr
LmgiCisrCisrI2luY2x1ZGUgImxpYmF2Y29kZWMvaWRjdGRzcC5oIgorKworKyNpbmNsdWRlICJk
Y3Rkc3AuaCIKKysKKysjZGVmaW5lIElEQ1RfSEFMRiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorKyAgICAvKiAxc3Qgc3RhZ2UgKi8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisrICAgIHQxID0gX21tX2FkZHNfZXBpMTYoX21tX211bGhy
c19lcGkxNihhMSwgdng3KSwgdngxKTsgIFwKKysgICAgdDggPSBfbW1fYWRkc19lcGkxNihfbW1f
bXVsaHJzX2VwaTE2KGExLCB2eDEpLCAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAg
IF9tbV9zdWJzX2VwaTE2KHplcm8sIHZ4NykpOyAgICAgICBcCisrICAgIHQ3ID0gX21tX2FkZHNf
ZXBpMTYoX21tX211bGhyc19lcGkxNihhMiwgdng1KSwgdngzKTsgIFwKKysgICAgdDMgPSBfbW1f
YWRkc19lcGkxNihfbW1fbXVsaHJzX2VwaTE2KG1hMiwgdngzKSwgdng1KTsgXAorKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg
IC8qIDJuZCBzdGFnZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KysgICAgdDUgPSBfbW1fYWRkc19lcGkxNih2eDAsIHZ4NCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgXAorKyAgICB0MCA9IF9tbV9zdWJzX2VwaTE2KHZ4MCwgdng0KTsgICAgICAgICAgICAgICAg
ICAgICAgICBcCisrICAgIHQyID0gX21tX2FkZHNfZXBpMTYoX21tX211bGhyc19lcGkxNihhMCwg
dng2KSwgdngyKTsgIFwKKysgICAgdDQgPSBfbW1fYWRkc19lcGkxNihfbW1fbXVsaHJzX2VwaTE2
KGEwLCB2eDIpLCAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgIF9tbV9zdWJzX2Vw
aTE2KHplcm8sIHZ4NikpOyAgICAgICBcCisrICAgIHQ2ID0gX21tX2FkZHNfZXBpMTYodDgsIHQz
KTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdDMgPSBfbW1fc3Vic19lcGkxNih0
OCwgdDMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB0OCA9IF9tbV9zdWJzX2Vw
aTE2KHQxLCB0Nyk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHQxID0gX21tX2Fk
ZHNfZXBpMTYodDEsIHQ3KTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAv
KiAzcmQgc3RhZ2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr
ICAgIHQ3ID0gX21tX2FkZHNfZXBpMTYodDUsIHQyKTsgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKysgICAgdDIgPSBfbW1fc3Vic19lcGkxNih0NSwgdDIpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorKyAgICB0NSA9IF9tbV9hZGRzX2VwaTE2KHQwLCB0NCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisrICAgIHQwID0gX21tX3N1YnNfZXBpMTYodDAsIHQ0KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKysgICAgdDQgPSBfbW1fc3Vic19lcGkxNih0OCwgdDMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB0MyA9IF9tbV9hZGRzX2VwaTE2KHQ4LCB0Myk7
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgLyogNHRoIHN0YWdlICovICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2eTAgPSBfbW1fYWRk
c19lcGkxNih0NywgdDEpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHZ5NyA9IF9t
bV9zdWJzX2VwaTE2KHQ3LCB0MSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdnkx
ID0gX21tX2FkZHNfZXBpMTYoX21tX211bGhyc19lcGkxNihjNCwgdDMpLCB0NSk7ICAgXAorKyAg
ICB2eTYgPSBfbW1fYWRkc19lcGkxNihfbW1fbXVsaHJzX2VwaTE2KG1jNCwgdDMpLCB0NSk7ICBc
CisrICAgIHZ5MiA9IF9tbV9hZGRzX2VwaTE2KF9tbV9tdWxocnNfZXBpMTYoYzQsIHQ0KSwgdDAp
OyAgIFwKKysgICAgdnk1ID0gX21tX2FkZHNfZXBpMTYoX21tX211bGhyc19lcGkxNihtYzQsIHQ0
KSwgdDApOyAgXAorKyAgICB2eTMgPSBfbW1fYWRkc19lcGkxNih0MiwgdDYpOyAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisrICAgIHZ5NCA9IF9tbV9zdWJzX2VwaTE2KHQyLCB0NikKKysKKysj
ZGVmaW5lIElEQ1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorKyAgICB2ZWNfczE2IHZ4MCwgdngxLCB2eDIsIHZ4Mywgdng0
LCB2eDUsIHZ4Niwgdng3OyAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHZlY19zMTYg
dnkwLCB2eTEsIHZ5MiwgdnkzLCB2eTQsIHZ5NSwgdnk2LCB2eTc7ICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKysgICAgdmVjX3MxNiB0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr
ICAgIHZlY19zMTYgYzQgICA9IF9tbV9zZXQxX2VwaTE2KDIzMTcwKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKysgICAgdmVjX3MxNiBhMCAgID0gX21tX3NldDFfZXBpMTYo
MTM1NzMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2ZWNfczE2
IGExICAgPSBfbW1fc2V0MV9lcGkxNig2NTE4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisrICAgIHZlY19zMTYgYTIgICA9IF9tbV9zZXQxX2VwaTE2KDIxODk1KTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdmVjX3MxNiBtYzQgID0gX21t
X3NldDFfZXBpMTYoLTIzMTcwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
KyAgICB2ZWNfczE2IG1hMiAgPSBfbW1fc2V0MV9lcGkxNigtMjE4OTUpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisrICAgIHZlY19zMTYgYmlhcyA9IF9tbV9zZXQxX2VwaTMy
KDMyIHwgMzEgPDwgMTYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorKyAgICB2ZWNfczE2IHplcm8gID0gX21tX3NldHplcm9fc2kxMjgoKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KysgICAgdDAgPSBWRUNfTEQoY29uc3RhbnRzWzBdKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB0MSA9IFZFQ19MRChjb25zdGFudHNbMV0pOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHQyID0g
VkVDX0xEKGNvbnN0YW50c1syXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKysgICAgdDMgPSBWRUNfTEQoY29uc3RhbnRzWzNdKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisrICAgIHZ4MCA9IF9tbV9tdWxocnNfZXBpMTYoX21tX3NsbGlfZXBpMTYoYmxvY2tbMF0sIDQp
LCB0MCk7ICAgICAgICAgICAgICAgIFwKKysgICAgdngxID0gX21tX211bGhyc19lcGkxNihfbW1f
c2xsaV9lcGkxNihibG9ja1sxXSwgNCksIHQxKTsgICAgICAgICAgICAgICAgXAorKyAgICB2eDIg
PSBfbW1fbXVsaHJzX2VwaTE2KF9tbV9zbGxpX2VwaTE2KGJsb2NrWzJdLCA0KSwgdDIpOyAgICAg
ICAgICAgICAgICBcCisrICAgIHZ4MyA9IF9tbV9tdWxocnNfZXBpMTYoX21tX3NsbGlfZXBpMTYo
YmxvY2tbM10sIDQpLCB0Myk7ICAgICAgICAgICAgICAgIFwKKysgICAgdng0ID0gX21tX211bGhy
c19lcGkxNihfbW1fc2xsaV9lcGkxNihibG9ja1s0XSwgNCksIHQwKTsgICAgICAgICAgICAgICAg
XAorKyAgICB2eDUgPSBfbW1fbXVsaHJzX2VwaTE2KF9tbV9zbGxpX2VwaTE2KGJsb2NrWzVdLCA0
KSwgdDMpOyAgICAgICAgICAgICAgICBcCisrICAgIHZ4NiA9IF9tbV9tdWxocnNfZXBpMTYoX21t
X3NsbGlfZXBpMTYoYmxvY2tbNl0sIDQpLCB0Mik7ICAgICAgICAgICAgICAgIFwKKysgICAgdng3
ID0gX21tX211bGhyc19lcGkxNihfbW1fc2xsaV9lcGkxNihibG9ja1s3XSwgNCksIHQxKTsgICAg
ICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIElEQ1RfSEFMRjsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2eDAgPSBfbW1fdW5wYWNrbG9fZXBpMTYo
dnkwLCB2eTQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHZ4
MSA9IF9tbV91bnBhY2toaV9lcGkxNih2eTAsIHZ5NCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKysgICAgdngyID0gX21tX3VucGFja2xvX2VwaTE2KHZ5MSwgdnk1KTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2eDMgPSBfbW1fdW5w
YWNraGlfZXBpMTYodnkxLCB2eTUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisrICAgIHZ4NCA9IF9tbV91bnBhY2tsb19lcGkxNih2eTIsIHZ5Nik7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdng1ID0gX21tX3VucGFja2hpX2VwaTE2
KHZ5Miwgdnk2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2
eDYgPSBfbW1fdW5wYWNrbG9fZXBpMTYodnkzLCB2eTcpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisrICAgIHZ4NyA9IF9tbV91bnBhY2toaV9lcGkxNih2eTMsIHZ5Nyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorKyAgICB2eTAgPSBfbW1fdW5wYWNrbG9fZXBpMTYodngwLCB2eDQpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHZ5MSA9IF9tbV91bnBhY2toaV9lcGkx
Nih2eDAsIHZ4NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg
dnkyID0gX21tX3VucGFja2xvX2VwaTE2KHZ4MSwgdng1KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorKyAgICB2eTMgPSBfbW1fdW5wYWNraGlfZXBpMTYodngxLCB2eDUp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHZ5NCA9IF9tbV91
bnBhY2tsb19lcGkxNih2eDIsIHZ4Nik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKysgICAgdnk1ID0gX21tX3VucGFja2hpX2VwaTE2KHZ4Miwgdng2KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2eTYgPSBfbW1fdW5wYWNrbG9fZXBp
MTYodngzLCB2eDcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg
IHZ5NyA9IF9tbV91bnBhY2toaV9lcGkxNih2eDMsIHZ4Nyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2eDAgPSBfbW1f
YWRkc19lcGkxNihfbW1fdW5wYWNrbG9fZXBpMTYodnkwLCB2eTQpLCBiaWFzKTsgICAgICAgICAg
ICAgICBcCisrICAgIHZ4MSA9IF9tbV91bnBhY2toaV9lcGkxNih2eTAsIHZ5NCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdngyID0gX21tX3VucGFja2xvX2Vw
aTE2KHZ5MSwgdnk1KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAg
ICB2eDMgPSBfbW1fdW5wYWNraGlfZXBpMTYodnkxLCB2eTUpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisrICAgIHZ4NCA9IF9tbV91bnBhY2tsb19lcGkxNih2eTIsIHZ5
Nik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdng1ID0gX21t
X3VucGFja2hpX2VwaTE2KHZ5Miwgdnk2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorKyAgICB2eDYgPSBfbW1fdW5wYWNrbG9fZXBpMTYodnkzLCB2eTcpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHZ4NyA9IF9tbV91bnBhY2toaV9l
cGkxNih2eTMsIHZ5Nyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorKyAgICBJRENUX0hBTEY7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKysgICAgdngwID0gX21tX3NyYWlfZXBpMTYodnkwLCA2KTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2eDEgPSBfbW1fc3JhaV9lcGkx
Nih2eTEsIDYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr
ICAgIHZ4MiA9IF9tbV9zcmFpX2VwaTE2KHZ5MiwgNik7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKysgICAgdngzID0gX21tX3NyYWlfZXBpMTYodnkzLCA2KTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2eDQgPSBf
bW1fc3JhaV9lcGkxNih2eTQsIDYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisrICAgIHZ4NSA9IF9tbV9zcmFpX2VwaTE2KHZ5NSwgNik7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdng2ID0gX21tX3NyYWlfZXBp
MTYodnk2LCA2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
KyAgICB2eDcgPSBfbW1fc3JhaV9lcGkxNih2eTcsIDYpCisrCisrc3RhdGljIGNvbnN0IGludDE2
X3QgQUxJR05FRCgxNikgY29uc3RhbnRzWzRdWzhdID0geworKyAgICB7IDE2Mzg0LCAyMjcyNSwg
MjE0MDcsIDE5MjY2LCAxNjM4NCwgMTkyNjYsIDIxNDA3LCAyMjcyNSB9LAorKyAgICB7IDIyNzI1
LCAzMTUyMSwgMjk2OTIsIDI2NzIyLCAyMjcyNSwgMjY3MjIsIDI5NjkyLCAzMTUyMSB9LAorKyAg
ICB7IDIxNDA3LCAyOTY5MiwgMjc5NjksIDI1MTcyLCAyMTQwNywgMjUxNzIsIDI3OTY5LCAyOTY5
MiB9LAorKyAgICB7IDE5MjY2LCAyNjcyMiwgMjUxNzIsIDIyNjU0LCAxOTI2NiwgMjI2NTQsIDI1
MTcyLCAyNjcyMiB9CisrfTsKKysKKyt2b2lkIGZmX2lkY3RfZTJrKGludDE2X3QgKmJsaykKKyt7
CisrICAgIHZlY19zMTYgKmJsb2NrID0gKHZlY19zMTYqKWJsazsKKysKKysgICAgSURDVDsKKysK
KysgICAgYmxvY2tbMF0gPSB2eDA7CisrICAgIGJsb2NrWzFdID0gdngxOworKyAgICBibG9ja1sy
XSA9IHZ4MjsKKysgICAgYmxvY2tbM10gPSB2eDM7CisrICAgIGJsb2NrWzRdID0gdng0OworKyAg
ICBibG9ja1s1XSA9IHZ4NTsKKysgICAgYmxvY2tbNl0gPSB2eDY7CisrICAgIGJsb2NrWzddID0g
dng3OworK30KKysKKysjZGVmaW5lIENPUFkodngwLCB2eDEsIGkpICAgICAgICAgICAgICAgICBc
CisrICAgIHRtcCA9IF9tbV9wYWNrdXNfZXBpMTYodngwLCB2eDEpOyAgICAgXAorKyAgICBWRUNf
U1RMKGRlc3QsIHRtcCk7IGRlc3QgKz0gc3RyaWRlOyAgIFwKKysgICAgVkVDX1NUSChkZXN0LCB0
bXApOyBkZXN0ICs9IHN0cmlkZQorKworK3N0YXRpYyB2b2lkIGlkY3RfcHV0X2Uyayh1aW50OF90
ICpkZXN0LCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQxNl90ICpibGspCisreworKyAgICB2ZWNfczE2
ICpibG9jayA9ICh2ZWNfczE2KilibGs7CisrICAgIHZlY191OCB0bXA7CisrCisrICAgIElEQ1Q7
CisrCisrICAgIENPUFkodngwLCB2eDEsIDApOworKyAgICBDT1BZKHZ4MiwgdngzLCAyKTsKKysg
ICAgQ09QWSh2eDQsIHZ4NSwgNCk7CisrICAgIENPUFkodng2LCB2eDcsIDYpOworK30KKysKKysj
ZGVmaW5lIEFERCh2eDAsIHZ4MSwgaSkgICAgICAgICAgICAgICAgICBcCisrICAgIHRtcCA9IFZF
Q19MRDgoZGVzdCk7ICAgICAgICAgICAgICAgICAgXAorKyAgICB0MCA9IF9tbV91bnBhY2tsb19l
cGk4KHRtcCwgemVybyk7ICAgIFwKKysgICAgdG1wID0gVkVDX0xEOChkZXN0ICsgc3RyaWRlKTsg
ICAgICAgICBcCisrICAgIHQxID0gX21tX3VucGFja2xvX2VwaTgodG1wLCB6ZXJvKTsgICAgXAor
KyAgICB0MCA9IF9tbV9hZGRzX2VwaTE2KHQwLCB2eDApOyAgICAgICAgIFwKKysgICAgdDEgPSBf
bW1fYWRkc19lcGkxNih0MSwgdngxKTsgICAgICAgICBcCisrICAgIHRtcCA9IF9tbV9wYWNrdXNf
ZXBpMTYodDAsIHQxKTsgICAgICAgXAorKyAgICBWRUNfU1RMKGRlc3QsIHRtcCk7IGRlc3QgKz0g
c3RyaWRlOyAgIFwKKysgICAgVkVDX1NUSChkZXN0LCB0bXApOyBkZXN0ICs9IHN0cmlkZQorKwor
K3N0YXRpYyB2b2lkIGlkY3RfYWRkX2Uyayh1aW50OF90ICpkZXN0LCBwdHJkaWZmX3Qgc3RyaWRl
LCBpbnQxNl90ICpibGspCisreworKyAgICB2ZWNfczE2ICpibG9jayA9ICh2ZWNfczE2KilibGs7
CisrICAgIHZlY191OCB0bXA7CisrCisrICAgIElEQ1Q7CisrCisrICAgIEFERCh2eDAsIHZ4MSwg
MCk7CisrICAgIEFERCh2eDIsIHZ4MywgMik7CisrICAgIEFERCh2eDQsIHZ4NSwgNCk7CisrICAg
IEFERCh2eDYsIHZ4NywgNik7CisrfQorKworK2F2X2NvbGQgdm9pZCBmZl9pZGN0ZHNwX2luaXRf
ZTJrKElEQ1REU1BDb250ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaGlnaF9iaXRfZGVwdGgpCisreworKyAg
ICBpZiAoIUUyS19CQVNFKGF2X2dldF9jcHVfZmxhZ3MoKSkpCisrICAgICAgICByZXR1cm47Cisr
CisrICAgIC8vICFjaGVja2FzbQorKyAgICAvLyBsaWJhdmNvZGVjL3Rlc3RzL2RjdCAtaQorKwor
KyAgICBpZiAoIWhpZ2hfYml0X2RlcHRoICYmIGF2Y3R4LT5sb3dyZXMgPT0gMCkgeworKyAgICAg
ICAgaWYgKChhdmN0eC0+aWRjdF9hbGdvID09IEZGX0lEQ1RfQVVUTyAmJiAhKGF2Y3R4LT5mbGFn
cyAmIEFWX0NPREVDX0ZMQUdfQklURVhBQ1QpKSB8fAorKyAgICAgICAgICAgIChhdmN0eC0+aWRj
dF9hbGdvID09IEZGX0lEQ1RfQUxUSVZFQykpIHsKKysgICAgICAgICAgICBjLT5pZGN0ICAgICAg
PSBmZl9pZGN0X2UyazsKKysgICAgICAgICAgICBjLT5pZGN0X2FkZCAgPSBpZGN0X2FkZF9lMms7
IC8vIHVudGVzdGVkCisrICAgICAgICAgICAgYy0+aWRjdF9wdXQgID0gaWRjdF9wdXRfZTJrOyAv
LyB1bnRlc3RlZAorKyAgICAgICAgICAgIGMtPnBlcm1fdHlwZSA9IEZGX0lEQ1RfUEVSTV9UUkFO
U1BPU0U7CisrICAgICAgICB9CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9l
MmsvbG9zc2xlc3NfYXVkaW9kc3AuYyBiL2xpYmF2Y29kZWMvZTJrL2xvc3NsZXNzX2F1ZGlvZHNw
LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xYmI3YzQ1CistLS0gL2Rl
di9udWxsCisrKysgYi9saWJhdmNvZGVjL2Uyay9sb3NzbGVzc19hdWRpb2RzcC5jCitAQCAtMCww
ICsxLDc1IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWx5YSBLdXJkeXVrb3YgPGpw
ZWdxc0BnbWFpbC5jb20+IGZvciBCYXNlQUxULCBMdGQKKysgKiBDb3B5cmlnaHQgKGMpIDIwMDcg
THVjYSBCYXJiYXRvIDxsdV96ZXJvQGdlbnRvby5vcmc+CisrICoKKysgKiBUaGlzIGZpbGUgaXMg
cGFydCBvZiBGRm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4x
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
KyAqCisrICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGlj
ZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaW5jbHVkZSAiY29uZmlnLmgi
CisrCisrI2luY2x1ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVzLmgiCisrI2luY2x1ZGUgImxpYmF2
dXRpbC9jcHUuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Uyay9jcHUuaCIKKysjaW5jbHVkZSAi
bGliYXZ1dGlsL2Uyay91dGlsX2Uyay5oIgorKworKyNpbmNsdWRlICJsaWJhdmNvZGVjL2xvc3Ns
ZXNzX2F1ZGlvZHNwLmgiCisrCisrI2RlZmluZSBHRVRfVCh0dDAsIHR0MSwgc3JjLCBhLCBiKSB7
IFwKKysgICAgdHQwID0gVkVDX0xEKHNyYyk7ICAgICAgICAgICAgICAgXAorKyAgICB0dDEgPSBW
RUNfTEQoc3JjICsgOCk7ICAgICAgICAgICBcCisrfQorKworK3N0YXRpYyBpbnQzMl90IHNjYWxh
cnByb2R1Y3RfYW5kX21hZGRfaW50MTZfZTJrKGludDE2X3QgKnYxLAorKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDE2X3QgKnYyLAorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDE2
X3QgKnYzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBvcmRlciwgaW50IG11bCkKKyt7CisrICAgIGludCBpOworKyAgICBMT0FEX1pFUk87Cisr
ICAgIHZlY19zMTYgKnB2MSA9ICh2ZWNfczE2Kil2MTsKKysgICAgdmVjX3MxNiBtdWxzID0gX21t
X3NldDFfZXBpMTYobXVsKTsKKysgICAgdmVjX3MxNiB0MCwgdDEsIGkwLCBpMTsKKysgICAgdmVj
X3MzMiByZXMgPSB6ZXJvdjsKKysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAgICBmb3Ig
KGkgPSAwOyBpIDwgb3JkZXI7IGkgKz0gMTYpIHsKKysgICAgICAgIEdFVF9UKHQwLCB0MSwgdjIs
IGkxLCBpMik7CisrICAgICAgICBpMCA9IHB2MVswXTsKKysgICAgICAgIGkxID0gcHYxWzFdOwor
KyAgICAgICAgdDAgPSBfbW1fbWFkZF9lcGkxNih0MCwgaTApOworKyAgICAgICAgdDEgPSBfbW1f
bWFkZF9lcGkxNih0MSwgaTEpOworKyAgICAgICAgcmVzID0gX21tX2FkZF9lcGkzMihyZXMsIF9t
bV9hZGRfZXBpMzIodDAsIHQxKSk7CisrICAgICAgICBHRVRfVCh0MCwgdDEsIHYzLCBpNCwgaTMp
OworKyAgICAgICAgcHYxWzBdID0gX21tX2FkZF9lcGkxNihfbW1fbXVsbG9fZXBpMTYodDAsIG11
bHMpLCBpMCk7CisrICAgICAgICBwdjFbMV0gPSBfbW1fYWRkX2VwaTE2KF9tbV9tdWxsb19lcGkx
Nih0MSwgbXVscyksIGkxKTsKKysgICAgICAgIHB2MSArPSAyOworKyAgICAgICAgdjIgKz0gMTY7
CisrICAgICAgICB2MyArPSAxNjsKKysgICAgfQorKworKyAgICByZXMgPSBfbW1faGFkZF9lcGkz
MihyZXMsIHJlcyk7CisrICAgIHJldHVybiBfbW1fZXh0cmFjdF9lcGkzMihyZXMsIDApICsgX21t
X2V4dHJhY3RfZXBpMzIocmVzLCAxKTsKKyt9CisrCisrYXZfY29sZCB2b2lkIGZmX2xsYXVkZHNw
X2luaXRfZTJrKExMQXVkRFNQQ29udGV4dCAqYykKKyt7CisrICAgIGlmICghRTJLX0JBU0UoYXZf
Z2V0X2NwdV9mbGFncygpKSkKKysgICAgICAgIHJldHVybjsKKysKKysgICAgLy8gIWNoZWNrYXNt
CisrICAgIGMtPnNjYWxhcnByb2R1Y3RfYW5kX21hZGRfaW50MTYgPSBzY2FsYXJwcm9kdWN0X2Fu
ZF9tYWRkX2ludDE2X2UyazsKKyt9CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9lMmsvbG9zc2xl
c3NfdmlkZW9kc3AuYyBiL2xpYmF2Y29kZWMvZTJrL2xvc3NsZXNzX3ZpZGVvZHNwLmMKK25ldyBm
aWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5hMDU1YWM3CistLS0gL2Rldi9udWxsCisr
KysgYi9saWJhdmNvZGVjL2Uyay9sb3NzbGVzc192aWRlb2RzcC5jCitAQCAtMCwwICsxLDU5IEBA
CisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWx5YSBLdXJkeXVrb3YgPGpwZWdxc0BnbWFp
bC5jb20+IGZvciBCYXNlQUxULCBMdGQKKysgKiBDb3B5cmlnaHQgKGMpIDIwMDIgQnJpYW4gRm9s
ZXkKKysgKiBDb3B5cmlnaHQgKGMpIDIwMDIgRGlldGVyIFNoaXJsZXkKKysgKiBDb3B5cmlnaHQg
KGMpIDIwMDMtMjAwNCBSb21haW4gRG9sYmVhdSA8cm9tYWluQGRvbGJlYXUub3JnPgorKyAqCisr
ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorKyAqCisrICogRkZtcGVnIGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisrICovCisrCisrI2lu
Y2x1ZGUgImNvbmZpZy5oIgorKworKyNpbmNsdWRlICJsaWJhdnV0aWwvYXR0cmlidXRlcy5oIgor
KyNpbmNsdWRlICJsaWJhdnV0aWwvY3B1LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsvY3B1
LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsvdXRpbF9lMmsuaCIKKysKKysjaW5jbHVkZSAi
bGliYXZjb2RlYy9sb3NzbGVzc192aWRlb2RzcC5oIgorKworK3N0YXRpYyB2b2lkIGFkZF9ieXRl
c19lMmsodWludDhfdCAqZHN0LCB1aW50OF90ICpzcmMsIHB0cmRpZmZfdCB3KQorK3sKKysgICAg
aW50IGk7CisrICAgIF9fbTEyOGkgdmRzdCwgdnNyYzsKKysKKysgICAgLyogZHN0IGFuZCBzcmMg
YXJlIDE2IGJ5dGVzLWFsaWduZWQgKGd1YXJhbnRlZWQpLiAqLworKyAgICBQUkFHTUFfRTJLKCJp
dmRlcCIpCisrICAgIGZvciAoaSA9IDA7IGkgKyAxNSA8IHc7IGkgKz0gMTYpIHsKKysgICAgICAg
IHZkc3QgPSBfbW1fbG9hZF9zaTEyOCgoY29uc3QgX19tMTI4aSopKGRzdCArIGkpKTsKKysgICAg
ICAgIHZzcmMgPSBfbW1fbG9hZF9zaTEyOCgoY29uc3QgX19tMTI4aSopKHNyYyArIGkpKTsKKysg
ICAgICAgIHZkc3QgPSBfbW1fYWRkX2VwaTgodnNyYywgdmRzdCk7CisrICAgICAgICBfbW1fc3Rv
cmVfc2kxMjgoKF9fbTEyOGkqKShkc3QgKyBpKSwgdmRzdCk7CisrICAgIH0KKysgICAgLyogSWYg
dyBpcyBub3QgYSBtdWx0aXBsZSBvZiAxNi4gKi8KKysgICAgUFJBR01BX0UySygiaXZkZXAiKQor
KyAgICBmb3IgKDsgaSA8IHc7IGkrKykKKysgICAgICAgIGRzdFtpXSA9IGRzdFtpXSArIHNyY1tp
XTsKKyt9CisrCisrYXZfY29sZCB2b2lkIGZmX2xsdmlkZHNwX2luaXRfZTJrKExMVmlkRFNQQ29u
dGV4dCAqYykKKyt7CisrICAgIGlmICghRTJLX0JBU0UoYXZfZ2V0X2NwdV9mbGFncygpKSkKKysg
ICAgICAgIHJldHVybjsKKysKKysgICAgLy8gY2hlY2thc20KKysgICAgYy0+YWRkX2J5dGVzID0g
YWRkX2J5dGVzX2UyazsKKyt9CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9lMmsvbWRjdDE1LmMg
Yi9saWJhdmNvZGVjL2Uyay9tZGN0MTUuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw
MDAwMDAuLjliM2M4MDkKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29kZWMvZTJrL21kY3Qx
NS5jCitAQCAtMCwwICsxLDE4NyBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDIxIElseWEg
S3VyZHl1a292IDxqcGVncXNAZ21haWwuY29tPiBmb3IgQmFzZUFMVCwgTHRkCisrICogQ29weXJp
Z2h0IChjKSAyMDEzLTIwMTQgTW96aWxsYSBDb3Jwb3JhdGlvbgorKyAqIENvcHlyaWdodCAoYykg
MjAxNyBSb3N0aXNsYXYgUGVobGl2YW5vdiA8YXRvbW51a2VyQGdtYWlsLmNvbT4KKysgKgorKyAq
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKysgKgorKyAqIEZGbXBlZyBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisr
ICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisrICoKKysgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisrICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorKyAqLworKworKyNpbmNs
dWRlICJjb25maWcuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2NwdS5oIgorKyNpbmNsdWRlICJs
aWJhdnV0aWwvZTJrL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL3V0aWxfZTJrLmgi
CisrCisrI2luY2x1ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVzLmgiCisrI2luY2x1ZGUgImxpYmF2
dXRpbC9jb21tb24uaCIKKysKKysjaW5jbHVkZSAibGliYXZjb2RlYy9tZGN0MTUuaCIKKysKKysj
ZGVmaW5lIENNVUwoZHJlLCBkaW0sIGFyZSwgYWltLCBicmUsIGJpbSkgZG8geyBcCisrICAgICAg
ICAoZHJlKSA9IChhcmUpICogKGJyZSkgLSAoYWltKSAqIChiaW0pOyAgXAorKyAgICAgICAgKGRp
bSkgPSAoYXJlKSAqIChiaW0pICsgKGFpbSkgKiAoYnJlKTsgIFwKKysgICAgfSB3aGlsZSAoMCkK
KysKKysjZGVmaW5lIENNVUwzKGMsIGEsIGIpIENNVUwoKGMpLnJlLCAoYykuaW0sIChhKS5yZSwg
KGEpLmltLCAoYikucmUsIChiKS5pbSkKKysKKytzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lk
IGZmdDUoZmxvYXQgKm91dCwgZmxvYXQgKmluLCBGRlRDb21wbGV4IGV4cHRhYlsyXSkKKyt7Cisr
ICAgIF9fbTEyOCB6MHIsIHoxciwgejJyLCB6M3IsIHowaSwgejFpLCB6MmksIHozaTsKKysgICAg
X19tMTI4IHQwciwgdDFyLCB0MnIsIHQzciwgdDRyLCB0NXI7CisrICAgIF9fbTEyOCB0MGksIHQx
aSwgdDJpLCB0M2ksIHQ0aSwgdDVpOworKyAgICBfX20xMjggaTByLCBpMXIsIGkyciwgaTNyLCBp
NHI7CisrICAgIF9fbTEyOCBpMGksIGkxaSwgaTJpLCBpM2ksIGk0aTsKKysgICAgX19tMTI4IGUw
ciA9IF9tbV9zZXQxX3BzKGV4cHRhYlswXS5yZSk7CisrICAgIF9fbTEyOCBlMGkgPSBfbW1fc2V0
MV9wcyhleHB0YWJbMF0uaW0pOworKyAgICBfX20xMjggZTFyID0gX21tX3NldDFfcHMoZXhwdGFi
WzFdLnJlKTsKKysgICAgX19tMTI4IGUxaSA9IF9tbV9zZXQxX3BzKGV4cHRhYlsxXS5pbSk7Cisr
CisrICAgIGkwciA9IF9tbV9sb2FkX3BzKGluKTsKKysgICAgaTBpID0gX21tX2xvYWRfcHMoaW4g
KyA0KTsKKysgICAgaTFyID0gX21tX2xvYWRfcHMoaW4gKyA4KTsKKysgICAgaTFpID0gX21tX2xv
YWRfcHMoaW4gKyAxMik7CisrICAgIGkyciA9IF9tbV9sb2FkX3BzKGluICsgMTYpOworKyAgICBp
MmkgPSBfbW1fbG9hZF9wcyhpbiArIDIwKTsKKysgICAgaTNyID0gX21tX2xvYWRfcHMoaW4gKyAy
NCk7CisrICAgIGkzaSA9IF9tbV9sb2FkX3BzKGluICsgMjgpOworKyAgICBpNHIgPSBfbW1fbG9h
ZF9wcyhpbiArIDMyKTsKKysgICAgaTRpID0gX21tX2xvYWRfcHMoaW4gKyAzNik7CisrCisrICAg
IHQwciA9IF9tbV9hZGRfcHMoaTFyLCBpNHIpOworKyAgICB0MGkgPSBfbW1fYWRkX3BzKGkxaSwg
aTRpKTsKKysgICAgdDFpID0gX21tX3N1Yl9wcyhpMXIsIGk0cik7CisrICAgIHQxciA9IF9tbV9z
dWJfcHMoaTFpLCBpNGkpOworKyAgICB0MnIgPSBfbW1fYWRkX3BzKGkyciwgaTNyKTsKKysgICAg
dDJpID0gX21tX2FkZF9wcyhpMmksIGkzaSk7CisrICAgIHQzaSA9IF9tbV9zdWJfcHMoaTJyLCBp
M3IpOworKyAgICB0M3IgPSBfbW1fc3ViX3BzKGkyaSwgaTNpKTsKKysKKysgICAgdDRyID0gX21t
X2FkZF9wcyhfbW1fYWRkX3BzKF9tbV9hZGRfcHMoX21tX2FkZF9wcyhpMHIsIGkxciksIGkyciks
IGkzciksIGk0cik7CisrICAgIHQ0aSA9IF9tbV9hZGRfcHMoX21tX2FkZF9wcyhfbW1fYWRkX3Bz
KF9tbV9hZGRfcHMoaTBpLCBpMWkpLCBpMmkpLCBpM2kpLCBpNGkpOworKyAgICBfbW1fc3RvcmVf
cHMob3V0ICsgMCwgdDRyKTsKKysgICAgX21tX3N0b3JlX3BzKG91dCArIDQsIHQ0aSk7CisrCisr
ICAgIHQ0ciA9IF9tbV9zdWJfcHMoX21tX211bF9wcyhlMHIsIHQyciksIF9tbV9tdWxfcHMoZTFy
LCB0MHIpKTsKKysgICAgdDRpID0gX21tX3N1Yl9wcyhfbW1fbXVsX3BzKGUwciwgdDJpKSwgX21t
X211bF9wcyhlMXIsIHQwaSkpOworKyAgICB0MHIgPSBfbW1fc3ViX3BzKF9tbV9tdWxfcHMoZTBy
LCB0MHIpLCBfbW1fbXVsX3BzKGUxciwgdDJyKSk7CisrICAgIHQwaSA9IF9tbV9zdWJfcHMoX21t
X211bF9wcyhlMHIsIHQwaSksIF9tbV9tdWxfcHMoZTFyLCB0MmkpKTsKKysgICAgdDVyID0gX21t
X3N1Yl9wcyhfbW1fbXVsX3BzKGUwaSwgdDNyKSwgX21tX211bF9wcyhlMWksIHQxcikpOworKyAg
ICB0NWkgPSBfbW1fc3ViX3BzKF9tbV9tdWxfcHMoZTBpLCB0M2kpLCBfbW1fbXVsX3BzKGUxaSwg
dDFpKSk7CisrICAgIHQxciA9IF9tbV9hZGRfcHMoX21tX211bF9wcyhlMGksIHQxciksIF9tbV9t
dWxfcHMoZTFpLCB0M3IpKTsKKysgICAgdDFpID0gX21tX2FkZF9wcyhfbW1fbXVsX3BzKGUwaSwg
dDFpKSwgX21tX211bF9wcyhlMWksIHQzaSkpOworKworKyAgICB6MHIgPSBfbW1fc3ViX3BzKHQw
ciwgdDFyKTsKKysgICAgejBpID0gX21tX3N1Yl9wcyh0MGksIHQxaSk7CisrICAgIHoxciA9IF9t
bV9hZGRfcHModDRyLCB0NXIpOworKyAgICB6MWkgPSBfbW1fYWRkX3BzKHQ0aSwgdDVpKTsKKysK
KysgICAgejJyID0gX21tX3N1Yl9wcyh0NHIsIHQ1cik7CisrICAgIHoyaSA9IF9tbV9zdWJfcHMo
dDRpLCB0NWkpOworKyAgICB6M3IgPSBfbW1fYWRkX3BzKHQwciwgdDFyKTsKKysgICAgejNpID0g
X21tX2FkZF9wcyh0MGksIHQxaSk7CisrCisrICAgIF9tbV9zdG9yZV9wcyhvdXQgKyAgOCwgX21t
X2FkZF9wcyhpMHIsIHozcikpOworKyAgICBfbW1fc3RvcmVfcHMob3V0ICsgMTIsIF9tbV9hZGRf
cHMoaTBpLCB6MGkpKTsKKysgICAgX21tX3N0b3JlX3BzKG91dCArIDE2LCBfbW1fYWRkX3BzKGkw
ciwgejJyKSk7CisrICAgIF9tbV9zdG9yZV9wcyhvdXQgKyAyMCwgX21tX2FkZF9wcyhpMGksIHox
aSkpOworKyAgICBfbW1fc3RvcmVfcHMob3V0ICsgMjQsIF9tbV9hZGRfcHMoaTByLCB6MXIpKTsK
KysgICAgX21tX3N0b3JlX3BzKG91dCArIDI4LCBfbW1fYWRkX3BzKGkwaSwgejJpKSk7CisrICAg
IF9tbV9zdG9yZV9wcyhvdXQgKyAzMiwgX21tX2FkZF9wcyhpMHIsIHowcikpOworKyAgICBfbW1f
c3RvcmVfcHMob3V0ICsgMzYsIF9tbV9hZGRfcHMoaTBpLCB6M2kpKTsKKyt9CisrCisrI2RlZmlu
ZSBDTVVMNChjLCBhLCBiKSBDTVVMKChjKS5yZSwgKGMpLmltLCB0bXBbayAqIDggKyBhXSwgdG1w
W2sgKiA4ICsgNCArIGFdLCAoYikucmUsIChiKS5pbSkKKysKKytzdGF0aWMgdm9pZCBmZnQxNV9l
MmsoRkZUQ29tcGxleCAqb3V0LCBmbG9hdCAqaW4sIEZGVENvbXBsZXggKmV4cHRhYiwgcHRyZGlm
Zl90IHN0cmlkZSkKKyt7CisrICAgIGludCBrOworKyAgICBERUNMQVJFX0FMSUdORUQoMTYsIGZs
b2F0LCB0bXApWzUgKiA4XTsKKysKKysgICAgZmZ0NSh0bXAsIGluLCBleHB0YWIgKyAxOSk7Cisr
CisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9yIChrID0gMDsgayA8IDU7IGsrKykg
eworKyAgICAgICAgRkZUQ29tcGxleCB0WzJdOworKworKyAgICAgICAgQ01VTDQodFswXSwgMiwg
ZXhwdGFiW2tdKTsKKysgICAgICAgIENNVUw0KHRbMV0sIDMsIGV4cHRhYlsyICoga10pOworKyAg
ICAgICAgb3V0W3N0cmlkZSprXS5yZSA9IHRtcFtrICogOF0gICAgICsgdFswXS5yZSArIHRbMV0u
cmU7CisrICAgICAgICBvdXRbc3RyaWRlKmtdLmltID0gdG1wW2sgKiA4ICsgNF0gKyB0WzBdLmlt
ICsgdFsxXS5pbTsKKysKKysgICAgICAgIENNVUw0KHRbMF0sIDIsIGV4cHRhYltrICsgNV0pOwor
KyAgICAgICAgQ01VTDQodFsxXSwgMywgZXhwdGFiWzIgKiAoayArIDUpXSk7CisrICAgICAgICBv
dXRbc3RyaWRlKihrICsgNSldLnJlID0gdG1wW2sgKiA4XSAgICAgKyB0WzBdLnJlICsgdFsxXS5y
ZTsKKysgICAgICAgIG91dFtzdHJpZGUqKGsgKyA1KV0uaW0gPSB0bXBbayAqIDggKyA0XSArIHRb
MF0uaW0gKyB0WzFdLmltOworKworKyAgICAgICAgQ01VTDQodFswXSwgMiwgZXhwdGFiW2sgKyAx
MF0pOworKyAgICAgICAgQ01VTDQodFsxXSwgMywgZXhwdGFiWzIgKiBrICsgNV0pOworKyAgICAg
ICAgb3V0W3N0cmlkZSooayArIDEwKV0ucmUgPSB0bXBbayAqIDhdICAgICArIHRbMF0ucmUgKyB0
WzFdLnJlOworKyAgICAgICAgb3V0W3N0cmlkZSooayArIDEwKV0uaW0gPSB0bXBbayAqIDggKyA0
XSArIHRbMF0uaW0gKyB0WzFdLmltOworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkIGltZGN0
MTVfaGFsZl9lMmsoTURDVDE1Q29udGV4dCAqcywgZmxvYXQgKmRzdCwgY29uc3QgZmxvYXQgKnNy
YywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUpCisrewor
KyAgICBERUNMQVJFX0FMSUdORUQoMTYsIGZsb2F0LCBmZnQxNWluKVs1ICogOF07CisrICAgIEZG
VENvbXBsZXggKnogPSAoRkZUQ29tcGxleCAqKWRzdDsKKysgICAgaW50IGksIGosIGssIGxlbjgg
PSBzLT5sZW40ID4+IDEsIGxfcHR3byA9IDEgPDwgcy0+cHR3b19mZnQubmJpdHM7CisrICAgIGNv
bnN0IGZsb2F0ICppbjEgPSBzcmMsICppbjIgPSBzcmMgKyAocy0+bGVuMiAtIDEpICogc3RyaWRl
OworKworKyAgICAvKiBSZWluZGV4IGlucHV0LCBwdXR0aW5nIGl0IGludG8gYSBidWZmZXIgYW5k
IGRvaW5nIGFuIE54MTUgRkZUICovCisrICAgIGZvciAoaSA9IDA7IGkgPCBsX3B0d287IGkrKykg
eworKyAgICAgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAgICAgICAgZm9yIChrID0gaiA9IDA7
IGogPCAxNTsgaiArPSAzLCBrICs9IDgpIHsKKysgICAgICAgICAgICBpbnQgazAgPSBzLT5wZmFf
cHJlcmVpbmRleFtpICogMTUgKyBqXTsKKysgICAgICAgICAgICBpbnQgazEgPSBzLT5wZmFfcHJl
cmVpbmRleFtpICogMTUgKyBqICsgMV07CisrICAgICAgICAgICAgaW50IGsyID0gcy0+cGZhX3By
ZXJlaW5kZXhbaSAqIDE1ICsgaiArIDJdOworKyAgICAgICAgICAgIGZsb2F0IGFyZSwgYWltOyBG
RlRDb21wbGV4IGI7CisrCisrICAgICAgICAgICAgYXJlID0gaW4yWy1rMCAqIHN0cmlkZV07IGFp
bSA9IGluMVtrMCAqIHN0cmlkZV07CisrICAgICAgICAgICAgYiA9IHMtPnR3aWRkbGVfZXhwdGFi
W2swID4+IDFdOworKyAgICAgICAgICAgIGZmdDE1aW5bayAgICBdID0gYXJlICogYi5yZSAtIGFp
bSAqIGIuaW07CisrICAgICAgICAgICAgZmZ0MTVpbltrICsgNF0gPSBhcmUgKiBiLmltICsgYWlt
ICogYi5yZTsKKysgICAgICAgICAgICBmZnQxNWluW2sgKyAxXSA9IDA7CisrICAgICAgICAgICAg
ZmZ0MTVpbltrICsgNV0gPSAwOworKworKyAgICAgICAgICAgIGFyZSA9IGluMlstazEgKiBzdHJp
ZGVdOyBhaW0gPSBpbjFbazEgKiBzdHJpZGVdOworKyAgICAgICAgICAgIGIgPSBzLT50d2lkZGxl
X2V4cHRhYltrMSA+PiAxXTsKKysgICAgICAgICAgICBmZnQxNWluW2sgKyAyXSA9IGFyZSAqIGIu
cmUgLSBhaW0gKiBiLmltOworKyAgICAgICAgICAgIGZmdDE1aW5bayArIDZdID0gYXJlICogYi5p
bSArIGFpbSAqIGIucmU7CisrCisrICAgICAgICAgICAgYXJlID0gaW4yWy1rMiAqIHN0cmlkZV07
IGFpbSA9IGluMVtrMiAqIHN0cmlkZV07CisrICAgICAgICAgICAgYiA9IHMtPnR3aWRkbGVfZXhw
dGFiW2syID4+IDFdOworKyAgICAgICAgICAgIGZmdDE1aW5bayArIDNdID0gYXJlICogYi5yZSAt
IGFpbSAqIGIuaW07CisrICAgICAgICAgICAgZmZ0MTVpbltrICsgN10gPSBhcmUgKiBiLmltICsg
YWltICogYi5yZTsKKysgICAgICAgIH0KKysgICAgICAgIGZmdDE1X2UyayhzLT50bXAgKyBzLT5w
dHdvX2ZmdC5yZXZ0YWJbaV0sIGZmdDE1aW4sIHMtPmV4cHRhYiwgbF9wdHdvKTsKKysgICAgfQor
KworKyAgICAvKiBUaGVuIGEgMTV4TiBGRlQgKHdoZXJlIE4gaXMgYSBwb3dlciBvZiB0d28pICov
CisrICAgIGZvciAoaSA9IDA7IGkgPCAxNTsgaSsrKQorKyAgICAgICAgcy0+cHR3b19mZnQuZmZ0
X2NhbGMoJnMtPnB0d29fZmZ0LCBzLT50bXAgKyBsX3B0d28qaSk7CisrCisrICAgIC8qIFJlaW5k
ZXggYWdhaW4sIGFwcGx5IHR3aWRkbGVzIGFuZCBvdXRwdXQgKi8KKysgICAgcy0+cG9zdHJlaW5k
ZXgoeiwgcy0+dG1wLCBzLT50d2lkZGxlX2V4cHRhYiwgcy0+cGZhX3Bvc3RyZWluZGV4LCBsZW44
KTsKKyt9CisrCisrYXZfY29sZCB2b2lkIGZmX21kY3QxNV9pbml0X2UyayhNRENUMTVDb250ZXh0
ICpzKQorK3sKKysgICAgaWYgKCFFMktfQkFTRShhdl9nZXRfY3B1X2ZsYWdzKCkpKQorKyAgICAg
ICAgcmV0dXJuOworKworKyAgICBzLT5pbWRjdF9oYWxmICA9IGltZGN0MTVfaGFsZl9lMms7Cisr
fQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZTJrL21lX2NtcC5jIGIvbGliYXZjb2RlYy9lMmsv
bWVfY21wLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lNmVkYTM4Cist
LS0gL2Rldi9udWxsCisrKysgYi9saWJhdmNvZGVjL2Uyay9tZV9jbXAuYworQEAgLTAsMCArMSw0
NjEgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAyMSBJbHlhIEt1cmR5dWtvdiA8anBlZ3Fz
QGdtYWlsLmNvbT4gZm9yIEJhc2VBTFQsIEx0ZAorKyAqIENvcHlyaWdodCAoYykgMjAwMiBCcmlh
biBGb2xleQorKyAqIENvcHlyaWdodCAoYykgMjAwMiBEaWV0ZXIgU2hpcmxleQorKyAqIENvcHly
aWdodCAoYykgMjAwMy0yMDA0IFJvbWFpbiBEb2xiZWF1IDxyb21haW5AZG9sYmVhdS5vcmc+Cisr
ICoKKysgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoK
KysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysK
KysjaW5jbHVkZSAiY29uZmlnLmgiCisrCisrI2luY2x1ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVz
LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9jcHUuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Uy
ay9jcHUuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Uyay91dGlsX2Uyay5oIgorKworKyNpbmNs
dWRlICJsaWJhdmNvZGVjL2F2Y29kZWMuaCIKKysjaW5jbHVkZSAibGliYXZjb2RlYy9tcGVndmlk
ZW8uaCIKKysjaW5jbHVkZSAibGliYXZjb2RlYy9tZV9jbXAuaCIKKysKKysjZGVmaW5lIExPQURf
UElYKHYxLCB2MiwgcGl4KSB7IFwKKysgICAgdjEgPSBWRUNfTEQocGl4KTsgICAgICAgICAgIFwK
KysgICAgdjIgPSBWRUNfTEQocGl4ICsgMSk7ICAgICAgIFwKKyt9CisrCisrc3RhdGljIGludCBz
YWQxNl94Ml9lMmsoTXBlZ0VuY0NvbnRleHQgKnYsIHVpbnQ4X3QgKnBpeDEsIHVpbnQ4X3QgKnBp
eDIsCisrICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCisr
eworKyAgICBpbnQgaTsKKysgICAgX19tMTI4aSB2MCwgdjEsIHYyLCBzdW0gPSBfbW1fc2V0emVy
b19zaTEyOCgpOworKworKyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAoaSA9IDA7
IGkgPCBoOyBpKyspIHsKKysgICAgICAgIExPQURfUElYKHYxLCB2MiwgcGl4Mik7CisrICAgICAg
ICB2MCA9IFZFQ19MRChwaXgxKTsKKysgICAgICAgIHYxID0gX21tX2F2Z19lcHU4KHYxLCB2Mik7
CisrICAgICAgICBzdW0gPSBfbW1fYWRkX2VwaTMyKHN1bSwgX21tX3NhZF9lcHU4KHYwLCB2MSkp
OworKworKyAgICAgICAgcGl4MSArPSBzdHJpZGU7CisrICAgICAgICBwaXgyICs9IHN0cmlkZTsK
KysgICAgfQorKyAgICByZXR1cm4gX21tX2V4dHJhY3RfZXBpMzIoc3VtLCAwKSArIF9tbV9leHRy
YWN0X2VwaTMyKHN1bSwgMik7CisrfQorKworK3N0YXRpYyBpbnQgc2FkOF94Ml9lMmsoTXBlZ0Vu
Y0NvbnRleHQgKnYsIHVpbnQ4X3QgKnBpeDEsIHVpbnQ4X3QgKnBpeDIsCisrICAgICAgICAgICAg
ICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCisreworKyAgICBpbnQgaTsKKysg
ICAgX19tNjQgdjAsIHYxLCB2Miwgc3VtID0gX21tX3NldHplcm9fc2k2NCgpOworKworKyAgICBQ
UkFHTUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAoaSA9IDA7IGkgPCBoOyBpKyspIHsKKysgICAg
ICAgIHYxID0gKihfX202NCopcGl4MjsKKysgICAgICAgIHYyID0gKihfX202NCopKHBpeDIgKyAx
KTsKKysgICAgICAgIHYwID0gKihfX202NCopcGl4MTsKKysgICAgICAgIHYxID0gX21tX2F2Z19w
dTgodjEsIHYyKTsKKysgICAgICAgIHN1bSA9IF9tbV9hZGRfcGkzMihzdW0sIF9tbV9zYWRfcHU4
KHYwLCB2MSkpOworKworKyAgICAgICAgcGl4MSArPSBzdHJpZGU7CisrICAgICAgICBwaXgyICs9
IHN0cmlkZTsKKysgICAgfQorKyAgICByZXR1cm4gX21tX2V4dHJhY3RfcGkzMihzdW0sIDApOwor
K30KKysKKytzdGF0aWMgaW50IHNhZDE2X3kyX2UyayhNcGVnRW5jQ29udGV4dCAqdiwgdWludDhf
dCAqcGl4MSwgdWludDhfdCAqcGl4MiwKKysgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZm
X3Qgc3RyaWRlLCBpbnQgaCkKKyt7CisrICAgIGludCBpOworKyAgICBfX20xMjhpIHYwLCB2MSwg
djIsIHN1bSA9IF9tbV9zZXR6ZXJvX3NpMTI4KCk7CisrCisrICAgIHYyID0gVkVDX0xEKHBpeDIp
OworKyAgICBwaXgyICs9IHN0cmlkZTsKKysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAg
ICBmb3IgKGkgPSAwOyBpIDwgaDsgaSsrKSB7CisrICAgICAgICB2MSA9IHYyOworKyAgICAgICAg
djIgPSBWRUNfTEQocGl4Mik7CisrICAgICAgICB2MCA9IFZFQ19MRChwaXgxKTsKKysgICAgICAg
IHYxID0gX21tX2F2Z19lcHU4KHYxLCB2Mik7CisrICAgICAgICBzdW0gPSBfbW1fYWRkX2VwaTMy
KHN1bSwgX21tX3NhZF9lcHU4KHYwLCB2MSkpOworKyAgICAgICAgcGl4MSArPSBzdHJpZGU7Cisr
ICAgICAgICBwaXgyICs9IHN0cmlkZTsKKysgICAgfQorKyAgICByZXR1cm4gX21tX2V4dHJhY3Rf
ZXBpMzIoc3VtLCAwKSArIF9tbV9leHRyYWN0X2VwaTMyKHN1bSwgMik7CisrfQorKworK3N0YXRp
YyBpbnQgc2FkOF95Ml9lMmsoTXBlZ0VuY0NvbnRleHQgKnYsIHVpbnQ4X3QgKnBpeDEsIHVpbnQ4
X3QgKnBpeDIsCisrICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0cmlkZSwgaW50
IGgpCisreworKyAgICBpbnQgaTsKKysgICAgX19tNjQgdjAsIHYxLCB2Miwgc3VtID0gX21tX3Nl
dHplcm9fc2k2NCgpOworKworKyAgICB2MiA9ICooX19tNjQqKXBpeDI7CisrICAgIHBpeDIgKz0g
c3RyaWRlOworKworKyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAoaSA9IDA7IGkg
PCBoOyBpKyspIHsKKysgICAgICAgIHYxID0gdjI7CisrICAgICAgICB2MiA9ICooX19tNjQqKXBp
eDI7CisrICAgICAgICB2MCA9ICooX19tNjQqKXBpeDE7CisrICAgICAgICB2MSA9IF9tbV9hdmdf
cHU4KHYxLCB2Mik7CisrICAgICAgICBzdW0gPSBfbW1fYWRkX3BpMzIoc3VtLCBfbW1fc2FkX3B1
OCh2MCwgdjEpKTsKKysgICAgICAgIHBpeDEgKz0gc3RyaWRlOworKyAgICAgICAgcGl4MiArPSBz
dHJpZGU7CisrICAgIH0KKysgICAgcmV0dXJuIF9tbV9leHRyYWN0X3BpMzIoc3VtLCAwKTsKKyt9
CisrCisrc3RhdGljIGludCBzYWQxNl94eTJfZTJrKE1wZWdFbmNDb250ZXh0ICp2LCB1aW50OF90
ICpwaXgxLCB1aW50OF90ICpwaXgyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZm
X3Qgc3RyaWRlLCBpbnQgaCkKKyt7CisrICAgIGludCBpOworKyAgICBMT0FEX1pFUk87CisrICAg
IF9fbTEyOGkgdjAsIHYxLCB2Miwgc3VtID0gemVyb3Y7CisrICAgIF9fbTEyOGkgdDAsIHQxLCB0
MiwgdDMsIHQ0LCB0NTsKKysgICAgX19tMTI4aSBjMiA9IF9tbV9zZXQxX2VwaTE2KDIpOworKwor
KyAgICBMT0FEX1BJWCh2MSwgdjIsIHBpeDIpOworKyAgICB0MiA9IF9tbV91bnBhY2tsb19lcGk4
KHYxLCB6ZXJvdik7CisrICAgIHQzID0gX21tX3VucGFja2hpX2VwaTgodjEsIHplcm92KTsKKysg
ICAgdDQgPSBfbW1fdW5wYWNrbG9fZXBpOCh2MiwgemVyb3YpOworKyAgICB0NSA9IF9tbV91bnBh
Y2toaV9lcGk4KHYyLCB6ZXJvdik7CisrICAgIHQyID0gX21tX2FkZF9lcGkxNih0MiwgdDQpOwor
KyAgICB0MyA9IF9tbV9hZGRfZXBpMTYodDMsIHQ1KTsKKysgICAgcGl4MiArPSBzdHJpZGU7Cisr
CisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9yIChpID0gMDsgaSA8IGg7IGkrKykg
eworKyAgICAgICAgdDAgPSB0MjsgdDEgPSB0MzsKKysgICAgICAgIExPQURfUElYKHYxLCB2Miwg
cGl4Mik7CisrICAgICAgICB2MCA9IFZFQ19MRChwaXgxKTsKKysgICAgICAgIHQyID0gX21tX3Vu
cGFja2xvX2VwaTgodjEsIHplcm92KTsKKysgICAgICAgIHQzID0gX21tX3VucGFja2hpX2VwaTgo
djEsIHplcm92KTsKKysgICAgICAgIHQ0ID0gX21tX3VucGFja2xvX2VwaTgodjIsIHplcm92KTsK
KysgICAgICAgIHQ1ID0gX21tX3VucGFja2hpX2VwaTgodjIsIHplcm92KTsKKysgICAgICAgIHQy
ID0gX21tX2FkZF9lcGkxNih0MiwgdDQpOworKyAgICAgICAgdDMgPSBfbW1fYWRkX2VwaTE2KHQz
LCB0NSk7CisrCisrICAgICAgICB2MSA9IF9tbV9zcmFpX2VwaTE2KF9tbV9hZGRfZXBpMTYoX21t
X2FkZF9lcGkxNih0MCwgdDIpLCBjMiksIDIpOworKyAgICAgICAgdjIgPSBfbW1fc3JhaV9lcGkx
NihfbW1fYWRkX2VwaTE2KF9tbV9hZGRfZXBpMTYodDEsIHQzKSwgYzIpLCAyKTsKKysgICAgICAg
IHYxID0gX21tX3BhY2t1c19lcGkxNih2MSwgdjIpOworKworKyAgICAgICAgc3VtID0gX21tX2Fk
ZF9lcGkzMihzdW0sIF9tbV9zYWRfZXB1OCh2MCwgdjEpKTsKKysgICAgICAgIHBpeDEgKz0gc3Ry
aWRlOworKyAgICAgICAgcGl4MiArPSBzdHJpZGU7CisrICAgIH0KKysgICAgcmV0dXJuIF9tbV9l
eHRyYWN0X2VwaTMyKHN1bSwgMCkgKyBfbW1fZXh0cmFjdF9lcGkzMihzdW0sIDIpOworK30KKysK
KytzdGF0aWMgaW50IHNhZDhfeHkyX2UyayhNcGVnRW5jQ29udGV4dCAqdiwgdWludDhfdCAqcGl4
MSwgdWludDhfdCAqcGl4MiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IHN0
cmlkZSwgaW50IGgpCisreworKyAgICBpbnQgaTsKKysgICAgTE9BRF9aRVJPOworKyAgICBfX202
NCB2MCwgc3VtID0gX21tX21vdmVwaTY0X3BpNjQoemVyb3YpOworKyAgICBfX20xMjhpIHYxLCB2
MiwgdDAsIHQxLCB0MiwgYzIgPSBfbW1fc2V0MV9lcGkxNigyKTsKKysKKysgICAgdjEgPSBWRUNf
TEQ4KHBpeDIpOworKyAgICB2MiA9IFZFQ19MRDgocGl4MiArIDEpOworKyAgICB0MSA9IF9tbV91
bnBhY2tsb19lcGk4KHYxLCB6ZXJvdik7CisrICAgIHQyID0gX21tX3VucGFja2xvX2VwaTgodjIs
IHplcm92KTsKKysgICAgdDEgPSBfbW1fYWRkX2VwaTE2KHQxLCB0Mik7CisrICAgIHBpeDIgKz0g
c3RyaWRlOworKworKyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAoaSA9IDA7IGkg
PCBoOyBpKyspIHsKKysgICAgICAgIHQwID0gdDE7CisrICAgICAgICB2MSA9IFZFQ19MRDgocGl4
Mik7CisrICAgICAgICB2MiA9IFZFQ19MRDgocGl4MiArIDEpOworKyAgICAgICAgdjAgPSAqKF9f
bTY0KilwaXgxOworKyAgICAgICAgdDEgPSBfbW1fdW5wYWNrbG9fZXBpOCh2MSwgemVyb3YpOwor
KyAgICAgICAgdDIgPSBfbW1fdW5wYWNrbG9fZXBpOCh2MiwgemVyb3YpOworKyAgICAgICAgdDEg
PSBfbW1fYWRkX2VwaTE2KHQxLCB0Mik7CisrCisrICAgICAgICB2MSA9IF9tbV9zcmFpX2VwaTE2
KF9tbV9hZGRfZXBpMTYoX21tX2FkZF9lcGkxNih0MCwgdDEpLCBjMiksIDIpOworKyAgICAgICAg
djEgPSBfbW1fcGFja3VzX2VwaTE2KHYxLCB2MSk7CisrCisrICAgICAgICBzdW0gPSBfbW1fYWRk
X3BpMzIoc3VtLCBfbW1fc2FkX3B1OCh2MCwgX21tX21vdmVwaTY0X3BpNjQodjEpKSk7CisrICAg
ICAgICBwaXgxICs9IHN0cmlkZTsKKysgICAgICAgIHBpeDIgKz0gc3RyaWRlOworKyAgICB9Cisr
ICAgIHJldHVybiBfbW1fZXh0cmFjdF9waTMyKHN1bSwgMCk7CisrfQorKworK3N0YXRpYyBpbnQg
c2FkMTZfZTJrKE1wZWdFbmNDb250ZXh0ICp2LCB1aW50OF90ICpwaXgxLCB1aW50OF90ICpwaXgy
LAorKyAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKQorK3sKKysg
ICAgaW50IGk7CisrICAgIF9fbTEyOGkgdjAsIHYxLCBzdW0gPSBfbW1fc2V0emVyb19zaTEyOCgp
OworKworKyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAoaSA9IDA7IGkgPCBoOyBp
KyspIHsKKysgICAgICAgIHYwID0gVkVDX0xEKHBpeDEpOworKyAgICAgICAgdjEgPSBWRUNfTEQo
cGl4Mik7CisrICAgICAgICBzdW0gPSBfbW1fYWRkX2VwaTMyKHN1bSwgX21tX3NhZF9lcHU4KHYw
LCB2MSkpOworKyAgICAgICAgcGl4MSArPSBzdHJpZGU7CisrICAgICAgICBwaXgyICs9IHN0cmlk
ZTsKKysgICAgfQorKyAgICByZXR1cm4gX21tX2V4dHJhY3RfZXBpMzIoc3VtLCAwKSArIF9tbV9l
eHRyYWN0X2VwaTMyKHN1bSwgMik7CisrfQorKworK3N0YXRpYyBpbnQgc2FkOF9lMmsoTXBlZ0Vu
Y0NvbnRleHQgKnYsIHVpbnQ4X3QgKnBpeDEsIHVpbnQ4X3QgKnBpeDIsCisrICAgICAgICAgICAg
ICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKKyt7CisrICAgIGludCBpOworKyAgICBf
X202NCB2MCwgdjEsIHN1bSA9IF9tbV9zZXR6ZXJvX3NpNjQoKTsKKysKKysgICAgUFJBR01BX0Uy
SygiaXZkZXAiKQorKyAgICBmb3IgKGkgPSAwOyBpIDwgaDsgaSsrKSB7CisrICAgICAgICB2MCA9
ICooX19tNjQqKXBpeDE7CisrICAgICAgICB2MSA9ICooX19tNjQqKXBpeDI7CisrICAgICAgICBz
dW0gPSBfbW1fYWRkX3BpMzIoc3VtLCBfbW1fc2FkX3B1OCh2MCwgdjEpKTsKKysgICAgICAgIHBp
eDEgKz0gc3RyaWRlOworKyAgICAgICAgcGl4MiArPSBzdHJpZGU7CisrICAgIH0KKysgICAgcmV0
dXJuIF9tbV9leHRyYWN0X3BpMzIoc3VtLCAwKTsKKyt9CisrCisrLyogU3VtIG9mIFNxdWFyZWQg
RXJyb3JzIGZvciBhbiA4eDggYmxvY2suICovCisrc3RhdGljIGludCBzc2U4X2UyayhNcGVnRW5j
Q29udGV4dCAqdiwgdWludDhfdCAqcGl4MSwgdWludDhfdCAqcGl4MiwKKysgICAgICAgICAgICAg
ICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKQorK3sKKysgICAgaW50IGk7CisrICAgIExP
QURfWkVSTzsgCisrICAgIF9fbTEyOGkgdjAsIHYxLCBzdW0gPSB6ZXJvdjsKKysKKysgICAgUFJB
R01BX0UySygiaXZkZXAiKQorKyAgICBmb3IgKGkgPSAwOyBpIDwgaDsgaSsrKSB7CisrICAgICAg
ICB2MCA9IFZFQ19MRDgocGl4MSk7CisrICAgICAgICB2MSA9IFZFQ19MRDgocGl4Mik7CisrICAg
ICAgICB2MCA9IF9tbV91bnBhY2tsb19lcGk4KHYwLCB6ZXJvdik7CisrICAgICAgICB2MSA9IF9t
bV91bnBhY2tsb19lcGk4KHYxLCB6ZXJvdik7CisrICAgICAgICB2MCA9IF9tbV9zdWJfZXBpMTYo
djAsIHYxKTsKKysgICAgICAgIHN1bSA9IF9tbV9hZGRfZXBpMzIoc3VtLCBfbW1fbWFkZF9lcGkx
Nih2MCwgdjApKTsKKysgICAgICAgIHBpeDEgKz0gc3RyaWRlOworKyAgICAgICAgcGl4MiArPSBz
dHJpZGU7CisrICAgIH0KKysgICAgc3VtID0gX21tX2hhZGRfZXBpMzIoc3VtLCBzdW0pOworKyAg
ICByZXR1cm4gX21tX2V4dHJhY3RfZXBpMzIoc3VtLCAwKSArIF9tbV9leHRyYWN0X2VwaTMyKHN1
bSwgMSk7CisrfQorKworKy8qIFN1bSBvZiBTcXVhcmVkIEVycm9ycyBmb3IgYSAxNngxNiBibG9j
ay4gKi8KKytzdGF0aWMgaW50IHNzZTE2X2UyayhNcGVnRW5jQ29udGV4dCAqdiwgdWludDhfdCAq
cGl4MSwgdWludDhfdCAqcGl4MiwKKysgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3Ry
aWRlLCBpbnQgaCkKKyt7CisrICAgIGludCBpOworKyAgICBMT0FEX1pFUk87IAorKyAgICBfX20x
MjhpIHYwLCB2MSwgdjIsIHYzLCBzdW0gPSB6ZXJvdjsKKysKKysgICAgUFJBR01BX0UySygiaXZk
ZXAiKQorKyAgICBmb3IgKGkgPSAwOyBpIDwgaDsgaSsrKSB7CisrICAgICAgICB2MiA9IFZFQ19M
RChwaXgxKTsKKysgICAgICAgIHYzID0gVkVDX0xEKHBpeDIpOworKyAgICAgICAgdjAgPSBfbW1f
dW5wYWNrbG9fZXBpOCh2MiwgemVyb3YpOworKyAgICAgICAgdjEgPSBfbW1fdW5wYWNrbG9fZXBp
OCh2MywgemVyb3YpOworKyAgICAgICAgdjIgPSBfbW1fdW5wYWNraGlfZXBpOCh2MiwgemVyb3Yp
OworKyAgICAgICAgdjMgPSBfbW1fdW5wYWNraGlfZXBpOCh2MywgemVyb3YpOworKyAgICAgICAg
djAgPSBfbW1fc3ViX2VwaTE2KHYwLCB2MSk7CisrICAgICAgICB2MiA9IF9tbV9zdWJfZXBpMTYo
djIsIHYzKTsKKysgICAgICAgIHN1bSA9IF9tbV9hZGRfZXBpMzIoc3VtLCBfbW1fbWFkZF9lcGkx
Nih2MCwgdjApKTsKKysgICAgICAgIHN1bSA9IF9tbV9hZGRfZXBpMzIoc3VtLCBfbW1fbWFkZF9l
cGkxNih2MiwgdjIpKTsKKysgICAgICAgIHBpeDEgKz0gc3RyaWRlOworKyAgICAgICAgcGl4MiAr
PSBzdHJpZGU7CisrICAgIH0KKysgICAgc3VtID0gX21tX2hhZGRfZXBpMzIoc3VtLCBzdW0pOwor
KyAgICByZXR1cm4gX21tX2V4dHJhY3RfZXBpMzIoc3VtLCAwKSArIF9tbV9leHRyYWN0X2VwaTMy
KHN1bSwgMSk7CisrfQorKworKyNkZWZpbmUgSEFEQU1BUkQ4X0ZJTih0LCBzdW0pIFwKKysgICAg
djAgPSBfbW1fYWRkX2VwaTE2KHQjIzAsIHQjIzEpOyBcCisrICAgIHYxID0gX21tX3N1Yl9lcGkx
Nih0IyMwLCB0IyMxKTsgXAorKyAgICB2MiA9IF9tbV9hZGRfZXBpMTYodCMjMiwgdCMjMyk7IFwK
KysgICAgdjMgPSBfbW1fc3ViX2VwaTE2KHQjIzIsIHQjIzMpOyBcCisrICAgIHY0ID0gX21tX2Fk
ZF9lcGkxNih0IyM0LCB0IyM1KTsgXAorKyAgICB2NSA9IF9tbV9zdWJfZXBpMTYodCMjNCwgdCMj
NSk7IFwKKysgICAgdjYgPSBfbW1fYWRkX2VwaTE2KHQjIzYsIHQjIzcpOyBcCisrICAgIHY3ID0g
X21tX3N1Yl9lcGkxNih0IyM2LCB0IyM3KTsgXAorKyAgICBcCisrICAgIHQwID0gX21tX2FkZF9l
cGkxNih2MCwgdjIpOyBcCisrICAgIHQyID0gX21tX3N1Yl9lcGkxNih2MCwgdjIpOyBcCisrICAg
IHQxID0gX21tX2FkZF9lcGkxNih2MSwgdjMpOyBcCisrICAgIHQzID0gX21tX3N1Yl9lcGkxNih2
MSwgdjMpOyBcCisrICAgIHQ0ID0gX21tX2FkZF9lcGkxNih2NCwgdjYpOyBcCisrICAgIHQ2ID0g
X21tX3N1Yl9lcGkxNih2NCwgdjYpOyBcCisrICAgIHQ1ID0gX21tX2FkZF9lcGkxNih2NSwgdjcp
OyBcCisrICAgIHQ3ID0gX21tX3N1Yl9lcGkxNih2NSwgdjcpOyBcCisrICAgIFwKKysgICAgdjAg
PSBfbW1fYWRkX2VwaTE2KHQwLCB0NCk7IFwKKysgICAgdjQgPSBfbW1fc3ViX2VwaTE2KHQwLCB0
NCk7IFwKKysgICAgdjEgPSBfbW1fYWRkX2VwaTE2KHQxLCB0NSk7IFwKKysgICAgdjUgPSBfbW1f
c3ViX2VwaTE2KHQxLCB0NSk7IFwKKysgICAgdjIgPSBfbW1fYWRkX2VwaTE2KHQyLCB0Nik7IFwK
KysgICAgdjYgPSBfbW1fc3ViX2VwaTE2KHQyLCB0Nik7IFwKKysgICAgdjMgPSBfbW1fYWRkX2Vw
aTE2KHQzLCB0Nyk7IFwKKysgICAgdjcgPSBfbW1fc3ViX2VwaTE2KHQzLCB0Nyk7IFwKKysgICAg
XAorKyAgICB2MCA9IF9tbV9tYWRkX2VwaTE2KF9tbV9hYnNfZXBpMTYodjApLCBvbmV2KTsgXAor
KyAgICB2MSA9IF9tbV9tYWRkX2VwaTE2KF9tbV9hYnNfZXBpMTYodjEpLCBvbmV2KTsgXAorKyAg
ICB2MiA9IF9tbV9tYWRkX2VwaTE2KF9tbV9hYnNfZXBpMTYodjIpLCBvbmV2KTsgXAorKyAgICB2
MyA9IF9tbV9tYWRkX2VwaTE2KF9tbV9hYnNfZXBpMTYodjMpLCBvbmV2KTsgXAorKyAgICB2NCA9
IF9tbV9tYWRkX2VwaTE2KF9tbV9hYnNfZXBpMTYodjQpLCBvbmV2KTsgXAorKyAgICB2NSA9IF9t
bV9tYWRkX2VwaTE2KF9tbV9hYnNfZXBpMTYodjUpLCBvbmV2KTsgXAorKyAgICB2NiA9IF9tbV9t
YWRkX2VwaTE2KF9tbV9hYnNfZXBpMTYodjYpLCBvbmV2KTsgXAorKyAgICB2NyA9IF9tbV9tYWRk
X2VwaTE2KF9tbV9hYnNfZXBpMTYodjcpLCBvbmV2KTsgXAorKyAgICBcCisrICAgIHYwID0gX21t
X2FkZF9lcGkzMih2MCwgdjEpOyBcCisrICAgIHYyID0gX21tX2FkZF9lcGkzMih2MiwgdjMpOyBc
CisrICAgIHY0ID0gX21tX2FkZF9lcGkzMih2NCwgdjUpOyBcCisrICAgIHY2ID0gX21tX2FkZF9l
cGkzMih2NiwgdjcpOyBcCisrICAgIHYwID0gX21tX2FkZF9lcGkzMih2MCwgdjIpOyBcCisrICAg
IHY0ID0gX21tX2FkZF9lcGkzMih2NCwgdjYpOyBcCisrICAgIHN1bSA9IF9tbV9hZGRfZXBpMzIo
djAsIHY0KTsKKysKKytzdGF0aWMgaW50IGhhZGFtYXJkOF9kaWZmX2UyayhNcGVnRW5jQ29udGV4
dCAqcywgdWludDhfdCAqZHN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKnNyYywgcHRyZGlmZl90IHN0cmlkZSwgaW50IGgpCisreworKyAgICBMT0FEX1pFUk87Cisr
ICAgIHZlY19zMTYgdjAsIHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3OworKyAgICB2ZWNfczE2
IHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0Nywgc3VtOworKyAgICBjb25zdCB2ZWNfczE2
IG9uZXYgPSBfbW1fc2V0MV9lcGkxNigxKTsKKysgICAgY29uc3QgdmVjX3MxNiB2cHJvZDEgPSBf
bW1fc2V0cl9lcGkxNigxLCAtMSwgMSwgLTEsIDEsIC0xLCAxLCAtMSk7CisrICAgIGNvbnN0IHZl
Y19zMTYgdnByb2QyID0gX21tX3NldHJfZXBpMTYoMSwgMSwgLTEsIC0xLCAxLCAxLCAtMSwgLTEp
OworKyAgICBjb25zdCB2ZWNfczE2IHZwcm9kMyA9IF9tbV9zZXRyX2VwaTE2KDEsIDEsIDEsIDEs
IC0xLCAtMSwgLTEsIC0xKTsKKysgICAgY29uc3QgdmVjX3U4IHBlcm0xID0gX21tX3NldHJfZXBp
OCgKKysgICAgICAgICAgMHgwMiwgMHgwMywgMHgwMCwgMHgwMSwgMHgwNiwgMHgwNywgMHgwNCwg
MHgwNSwKKysgICAgICAgICAgMHgwQSwgMHgwQiwgMHgwOCwgMHgwOSwgMHgwRSwgMHgwRiwgMHgw
QywgMHgwRCk7CisrCisrI2RlZmluZSBJVEVSKGkpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKysgICAgdjAgPSBWRUNfTEQ4KHNyYyArIHN0cmlkZSAqIGkpOyAg
ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2MSA9IFZFQ19MRDgoZHN0ICsgc3RyaWRlICog
aSk7ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHYwID0gX21tX3VucGFja2xvX2VwaTgo
djAsIHplcm92KTsgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdjEgPSBfbW1fdW5wYWNrbG9f
ZXBpOCh2MSwgemVyb3YpOyAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2MCA9IF9tbV9zdWJf
ZXBpMTYodjAsIHYxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHYxID0gX21t
X3NodWZmbGVfZXBpOCh2MCwgcGVybTEpOyAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdjAg
PSBfbW1fYWRkX2VwaTE2KF9tbV9zaWduX2VwaTE2KHYwLCB2cHJvZDEpLCB2MSk7ICAgXAorKyAg
ICB2MSA9IF9tbV9zaHVmZmxlX2VwaTMyKHYwLCAweGIxKTsgICAgICAgICAgICAgICAgICAgICBc
CisrICAgIHYwID0gX21tX2FkZF9lcGkxNihfbW1fc2lnbl9lcGkxNih2MCwgdnByb2QyKSwgdjEp
OyAgIFwKKysgICAgdjEgPSBfbW1fc2h1ZmZsZV9lcGkzMih2MCwgMHg0ZSk7ICAgICAgICAgICAg
ICAgICAgICAgXAorKyAgICB0IyNpID0gX21tX2FkZF9lcGkxNihfbW1fc2lnbl9lcGkxNih2MCwg
dnByb2QzKSwgdjEpOyBcCisrfQorKyAgICBJVEVSKDApOyBJVEVSKDEpOyBJVEVSKDIpOyBJVEVS
KDMpOworKyAgICBJVEVSKDQpOyBJVEVSKDUpOyBJVEVSKDYpOyBJVEVSKDcpOworKyN1bmRlZiBJ
VEVSCisrCisrICAgIEhBREFNQVJEOF9GSU4odCwgc3VtKQorKworKyAgICBzdW0gPSBfbW1faGFk
ZF9lcGkzMihzdW0sIHN1bSk7CisrICAgIHJldHVybiBfbW1fZXh0cmFjdF9lcGkzMihzdW0sIDAp
ICsgX21tX2V4dHJhY3RfZXBpMzIoc3VtLCAxKTsKKyt9CisrCisrI2lmIDEKKytzdGF0aWMgaW50
IGhhZGFtYXJkOF9kaWZmMTZfZTJrKE1wZWdFbmNDb250ZXh0ICpzLCB1aW50OF90ICpkc3QsCisr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpzcmMsIHB0cmRpZmZfdCBz
dHJpZGUsIGludCBoKQorK3sKKysgICAgTE9BRF9aRVJPOworKyAgICB2ZWNfczE2IHYwLCB2MSwg
djIsIHYzLCB2NCwgdjUsIHY2LCB2NzsKKysgICAgdmVjX3MxNiB4MCwgeDEsIHgyLCB4MywgeDQs
IHg1LCB4NiwgeDc7CisrICAgIHZlY19zMTYgdDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3
LCBzdW0gPSB6ZXJvdjsKKysgICAgY29uc3QgdmVjX3MxNiBvbmV2ID0gX21tX3NldDFfZXBpMTYo
MSk7CisrICAgIGNvbnN0IHZlY19zMTYgdnByb2QxID0gX21tX3NldHJfZXBpMTYoMSwgLTEsIDEs
IC0xLCAxLCAtMSwgMSwgLTEpOworKyAgICBjb25zdCB2ZWNfczE2IHZwcm9kMiA9IF9tbV9zZXRy
X2VwaTE2KDEsIDEsIC0xLCAtMSwgMSwgMSwgLTEsIC0xKTsKKysgICAgY29uc3QgdmVjX3MxNiB2
cHJvZDMgPSBfbW1fc2V0cl9lcGkxNigxLCAxLCAxLCAxLCAtMSwgLTEsIC0xLCAtMSk7CisrICAg
IGNvbnN0IHZlY191OCBwZXJtMSA9IF9tbV9zZXRyX2VwaTgoCisrICAgICAgICAgIDB4MDIsIDB4
MDMsIDB4MDAsIDB4MDEsIDB4MDYsIDB4MDcsIDB4MDQsIDB4MDUsCisrICAgICAgICAgIDB4MEEs
IDB4MEIsIDB4MDgsIDB4MDksIDB4MEUsIDB4MEYsIDB4MEMsIDB4MEQpOworKyAgICBpbnQgaTsK
KysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAgICBmb3IgKGkgPSAwOyBpIDwgaDsgaSAr
PSA4KSB7CisrCisrI2RlZmluZSBJVEVSKGkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKysgICAgdjIgPSBWRUNfTEQoc3JjICsgc3RyaWRlICogaSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgXAorKyAgICB2MyA9IFZFQ19MRChkc3QgKyBzdHJpZGUgKiBpKTsg
ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHYwID0gX21tX3VucGFja2xvX2VwaTgodjIs
IHplcm92KTsgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdjEgPSBfbW1fdW5wYWNrbG9fZXBp
OCh2MywgemVyb3YpOyAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2MiA9IF9tbV91bnBhY2to
aV9lcGk4KHYyLCB6ZXJvdik7ICAgICAgICAgICAgICAgICAgICBcCisrICAgIHYzID0gX21tX3Vu
cGFja2hpX2VwaTgodjMsIHplcm92KTsgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdjAgPSBf
bW1fc3ViX2VwaTE2KHYwLCB2MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2
MiA9IF9tbV9zdWJfZXBpMTYodjIsIHYzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr
ICAgIHYxID0gX21tX3NodWZmbGVfZXBpOCh2MCwgcGVybTEpOyAgICAgICAgICAgICAgICAgICAg
IFwKKysgICAgdjMgPSBfbW1fc2h1ZmZsZV9lcGk4KHYyLCBwZXJtMSk7ICAgICAgICAgICAgICAg
ICAgICAgXAorKyAgICB2MCA9IF9tbV9hZGRfZXBpMTYoX21tX3NpZ25fZXBpMTYodjAsIHZwcm9k
MSksIHYxKTsgICBcCisrICAgIHYyID0gX21tX2FkZF9lcGkxNihfbW1fc2lnbl9lcGkxNih2Miwg
dnByb2QxKSwgdjMpOyAgIFwKKysgICAgdjEgPSBfbW1fc2h1ZmZsZV9lcGkzMih2MCwgMHhiMSk7
ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2MyA9IF9tbV9zaHVmZmxlX2VwaTMyKHYyLCAw
eGIxKTsgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHYwID0gX21tX2FkZF9lcGkxNihfbW1f
c2lnbl9lcGkxNih2MCwgdnByb2QyKSwgdjEpOyAgIFwKKysgICAgdjIgPSBfbW1fYWRkX2VwaTE2
KF9tbV9zaWduX2VwaTE2KHYyLCB2cHJvZDIpLCB2Myk7ICAgXAorKyAgICB2MSA9IF9tbV9zaHVm
ZmxlX2VwaTMyKHYwLCAweDRlKTsgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHYzID0gX21t
X3NodWZmbGVfZXBpMzIodjIsIDB4NGUpOyAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdCMj
aSA9IF9tbV9hZGRfZXBpMTYoX21tX3NpZ25fZXBpMTYodjAsIHZwcm9kMyksIHYxKTsgXAorKyAg
ICB4IyNpID0gX21tX2FkZF9lcGkxNihfbW1fc2lnbl9lcGkxNih2MiwgdnByb2QzKSwgdjMpOyBc
CisrfQorKyAgICAgIElURVIoMCk7IElURVIoMSk7IElURVIoMik7IElURVIoMyk7CisrICAgICAg
SVRFUig0KTsgSVRFUig1KTsgSVRFUig2KTsgSVRFUig3KTsKKysjdW5kZWYgSVRFUgorKworKyAg
ICAgIEhBREFNQVJEOF9GSU4odCwgdjApCisrICAgICAgc3VtID0gX21tX2FkZF9lcGkzMihzdW0s
IHYwKTsKKysgICAgICBIQURBTUFSRDhfRklOKHgsIHYwKQorKyAgICAgIHN1bSA9IF9tbV9hZGRf
ZXBpMzIoc3VtLCB2MCk7CisrICAgICAgZHN0ICs9IDggKiBzdHJpZGU7CisrICAgICAgc3JjICs9
IDggKiBzdHJpZGU7CisrICAgIH0KKysgICAgc3VtID0gX21tX2hhZGRfZXBpMzIoc3VtLCBzdW0p
OworKyAgICByZXR1cm4gX21tX2V4dHJhY3RfZXBpMzIoc3VtLCAwKSArIF9tbV9leHRyYWN0X2Vw
aTMyKHN1bSwgMSk7CisrfQorKyNlbHNlCisrc3RhdGljIGludCBoYWRhbWFyZDhfZGlmZjE2X2Uy
ayhNcGVnRW5jQ29udGV4dCAqcywgdWludDhfdCAqZHN0LAorKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqc3JjLCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgaCkKKyt7Cisr
ICAgIGludCBpLCBzY29yZSA9IDA7CisrICAgIGZvciAoaSA9IDA7IGkgPCBoOyBpICs9IDgpIHsK
KysgICAgICAgIHNjb3JlICs9IGhhZGFtYXJkOF9kaWZmX2UyayhzLCBkc3QsIHNyYywgc3RyaWRl
LCA4KTsKKysgICAgICAgIHNjb3JlICs9IGhhZGFtYXJkOF9kaWZmX2UyayhzLCBkc3QgKyA4LCBz
cmMgKyA4LCBzdHJpZGUsIDgpOworKyAgICAgICAgZHN0ICs9IDggKiBzdHJpZGU7CisrICAgICAg
ICBzcmMgKz0gOCAqIHN0cmlkZTsKKysgICAgfQorKyAgICByZXR1cm4gc2NvcmU7CisrfQorKyNl
bmRpZgorKworK2F2X2NvbGQgdm9pZCBmZl9tZV9jbXBfaW5pdF9lMmsoTUVDbXBDb250ZXh0ICpj
LCBBVkNvZGVjQ29udGV4dCAqYXZjdHgpCisreworKyAgICBpZiAoIUUyS19CQVNFKGF2X2dldF9j
cHVfZmxhZ3MoKSkpCisrICAgICAgICByZXR1cm47CisrCisrICAgIC8vICFjaGVja2FzbQorKwor
KyAgICAvLyBmYXRlIGxhdmYtbXhmCisrICAgIGMtPnBpeF9hYnNbMF1bMF0gPSBzYWQxNl9lMms7
CisrICAgIGMtPnBpeF9hYnNbMF1bMV0gPSBzYWQxNl94Ml9lMms7CisrICAgIGMtPnBpeF9hYnNb
MF1bMl0gPSBzYWQxNl95Ml9lMms7CisrICAgIGMtPnBpeF9hYnNbMF1bM10gPSBzYWQxNl94eTJf
ZTJrOworKyAgICBjLT5waXhfYWJzWzFdWzBdID0gc2FkOF9lMms7CisrICAgIGMtPnBpeF9hYnNb
MV1bMV0gPSBzYWQ4X3gyX2UyazsKKysgICAgYy0+cGl4X2Fic1sxXVsyXSA9IHNhZDhfeTJfZTJr
OworKyAgICBjLT5waXhfYWJzWzFdWzNdID0gc2FkOF94eTJfZTJrOworKworKyAgICBjLT5zYWRb
MF0gPSBzYWQxNl9lMms7CisrICAgIGMtPnNhZFsxXSA9IHNhZDhfZTJrOworKyAgICBjLT5zc2Vb
MF0gPSBzc2UxNl9lMms7CisrICAgIGMtPnNzZVsxXSA9IHNzZThfZTJrOworKworKyAgICAvLyBm
YXRlIHZzeW50aDEtbXBlZzQtcXByZAorKyAgICBjLT5oYWRhbWFyZDhfZGlmZlswXSA9IGhhZGFt
YXJkOF9kaWZmMTZfZTJrOworKyAgICBjLT5oYWRhbWFyZDhfZGlmZlsxXSA9IGhhZGFtYXJkOF9k
aWZmX2UyazsKKyt9CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9lMmsvbXBlZ2F1ZGlvZHNwLmMg
Yi9saWJhdmNvZGVjL2Uyay9tcGVnYXVkaW9kc3AuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu
ZGV4IDAwMDAwMDAuLjI3NTE0NTMKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29kZWMvZTJr
L21wZWdhdWRpb2RzcC5jCitAQCAtMCwwICsxLDE0MiBAQAorKy8qCisrICogRWxicnVzIG9wdGlt
aXplZCBNUDMgZGVjb2RpbmcgZnVuY3Rpb25zCisrICogQ29weXJpZ2h0IChDKSAyMDIxIElseWEg
S3VyZHl1a292IDxqcGVncXNAZ21haWwuY29tPiBmb3IgQmFzZUFMVCwgTHRkCisrICogQ29weXJp
Z2h0IChjKSAyMDEwIFZpdG9yIFNlc3NhaworKyAqCisrICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
RkZtcGVnLgorKyAqCisrICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAq
IEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxv
bmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BIDAyMTEwLTEzMDEgVVNBCisrICovCisrCisrI2luY2x1ZGUgImNvbmZpZy5oIgorKyNpbmNs
dWRlICJsaWJhdnV0aWwvYXR0cmlidXRlcy5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvY3B1Lmgi
CisrI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRlcm5hbC5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwv
ZTJrL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL3V0aWxfZTJrLmgiCisrI2luY2x1
ZGUgImxpYmF2Y29kZWMvbXBlZ2F1ZGlvZHNwLmgiCisrI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBl
Z2F1ZGlvLmgiCisrCisrI2RlZmluZSBNQUNTKHJ0LCByYSwgcmIpIHJ0ICs9IChyYSkgKiAocmIp
CisrI2RlZmluZSBNTFNTKHJ0LCByYSwgcmIpIHJ0IC09IChyYSkgKiAocmIpCisrCisrI2RlZmlu
ZSBTVU04KG9wLCBzdW0sIHcsIHApIHsgICAgICAgICAgICAgXAorKyAgICBvcChzdW0sICh3KVsw
ICogNjRdLCAocClbMCAqIDY0XSk7ICAgIFwKKysgICAgb3Aoc3VtLCAodylbMSAqIDY0XSwgKHAp
WzEgKiA2NF0pOyAgICBcCisrICAgIG9wKHN1bSwgKHcpWzIgKiA2NF0sIChwKVsyICogNjRdKTsg
ICAgXAorKyAgICBvcChzdW0sICh3KVszICogNjRdLCAocClbMyAqIDY0XSk7ICAgIFwKKysgICAg
b3Aoc3VtLCAodylbNCAqIDY0XSwgKHApWzQgKiA2NF0pOyAgICBcCisrICAgIG9wKHN1bSwgKHcp
WzUgKiA2NF0sIChwKVs1ICogNjRdKTsgICAgXAorKyAgICBvcChzdW0sICh3KVs2ICogNjRdLCAo
cClbNiAqIDY0XSk7ICAgIFwKKysgICAgb3Aoc3VtLCAodylbNyAqIDY0XSwgKHApWzcgKiA2NF0p
OyAgICBcCisrfQorKworK3N0YXRpYyBhdl9hbHdheXNfaW5saW5lCisrdm9pZCBhcHBseV93aW5k
b3coY29uc3QgZmxvYXQgKmJ1ZiwgY29uc3QgZmxvYXQgKndpbjEsCisrICAgICAgICAgICAgICAg
ICAgY29uc3QgZmxvYXQgKndpbjIsIGZsb2F0ICpzdW0xLCBmbG9hdCAqc3VtMikKKyt7CisrICAg
IHZlY19mIHYwLCB2MSwgdjIsIHYzLCB2NCwgdjU7CisrICAgIGludCBpOworKworKyNkZWZpbmUg
TVVMVChqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICB2MSA9IF9t
bV9sb2FkX3BzKHdpbjEgKyBqICogNjQpOyAgICAgICAgICAgICAgXAorKyAgICB2MiA9IF9tbV9s
b2FkX3BzKHdpbjIgKyBqICogMTYpOyAgICAgICAgICAgICAgXAorKyAgICB2MyA9IF9tbV9sb2Fk
X3BzKGJ1ZiArIGogKiA2NCk7ICAgICAgICAgICAgICAgXAorKyAgICB2MCA9IF9tbV9zdWJfcHMo
djAsIF9tbV9tdWxfcHModjMsIHYxKSk7ICAgICAgXAorKyAgICB2NCA9IF9tbV9zdWJfcHModjQs
IF9tbV9tdWxfcHModjIsIHYzKSkKKysKKysgICAgdjAgPSB2NCA9IF9tbV9zZXR6ZXJvX3BzKCk7
CisrICAgIE1VTFQoMCk7IE1VTFQoMSk7IE1VTFQoMik7IE1VTFQoMyk7CisrICAgIE1VTFQoNCk7
IE1VTFQoNSk7IE1VTFQoNik7IE1VTFQoNyk7CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikK
KysgICAgUFJBR01BX0UySygidW5yb2xsKDMpIikKKysgICAgZm9yIChpID0gNDsgaSA8IDE2OyBp
ICs9IDQpIHsKKysgICAgICAgIHdpbjEgKz0gNDsgd2luMiArPSA0OyBidWYgKz0gNDsKKysgICAg
ICAgIF9tbV9zdG9yZV9wcyhzdW0xLCB2MCk7IHY1ID0gdjQ7CisrCisrICAgICAgICB2MCA9IHY0
ID0gX21tX3NldHplcm9fcHMoKTsKKysgICAgICAgIE1VTFQoMCk7IE1VTFQoMSk7IE1VTFQoMik7
IE1VTFQoMyk7CisrICAgICAgICBNVUxUKDQpOyBNVUxUKDUpOyBNVUxUKDYpOyBNVUxUKDcpOwor
KyAgICAgICAgX21tX3N0b3JlX3BzKHN1bTIsIF9tbV9hbGlnbnJfcHModjQsIHY1LCAxKSk7Cisr
ICAgICAgICBzdW0xICs9IDQ7IHN1bTIgKz0gNDsKKysgICAgfQorKyAgICBfbW1fc3RvcmVfcHMo
c3VtMSwgdjApOworKyAgICBfbW1fc3RvcmVfcHMoc3VtMiwgX21tX2JzcmxpX3BzKHY0LCAxKSk7
CisrCisrI3VuZGVmIE1VTFQKKyt9CisrCisrc3RhdGljIHZvaWQgYXBwbHlfd2luZG93X2Uyayhm
bG9hdCAqaW4sIGZsb2F0ICp3aW4sIGludCAqdW51c2VkLCBmbG9hdCAqb3V0LAorKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IGluY3IpCisreworKyAgICBmbG9hdCBBTElH
TkVEKDE2KSBzdW1hWzE2XTsKKysgICAgZmxvYXQgQUxJR05FRCgxNikgc3VtYlsxNl07CisrICAg
IGZsb2F0IEFMSUdORUQoMTYpIHN1bWNbMTZdOworKyAgICBmbG9hdCBBTElHTkVEKDE2KSBzdW1k
WzE2XTsKKysgICAgZmxvYXQgc3VtOworKworKyAgICAvKiBjb3B5IHRvIGF2b2lkIHdyYXAgKi8K
KysgICAgbWVtY3B5KGluICsgNTEyLCBpbiwgMzIgKiBzaXplb2YoKmluKSk7CisrCisrICAgIGFw
cGx5X3dpbmRvdyhpbiArIDE2LCB3aW4gICAgICwgd2luICsgNTEyLCBzdW1hLCBzdW1jKTsKKysg
ICAgYXBwbHlfd2luZG93KGluICsgMzIsIHdpbiArIDQ4LCB3aW4gKyA2NDAsIHN1bWIsIHN1bWQp
OworKworKyAgICBzdW0gPSBzdW1hWzBdOworKyAgICBTVU04KE1BQ1MsIHN1bSwgd2luICsgMzIs
IGluICsgNDgpOworKyAgICBzdW1hWzBdID0gc3VtOworKworKyNkZWZpbmUgU1VNUyhhLCBiKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgdjAgPSBfbW1fbG9hZF9wcyhzdW1k
ICsgYik7ICAgICAgICAgICAgICAgICBcCisrICAgIHYxID0gX21tX2xvYWRfcHMoc3VtYyArIGEp
OyAgICAgICAgICAgICAgICAgXAorKyAgICB2MCA9IF9tbV9zaHVmZmxlX3BzKHYwLCB2MCwgMHgx
Yik7ICAgICAgICAgIFwKKysgICAgdjEgPSBfbW1fc2h1ZmZsZV9wcyh2MSwgdjEsIDB4MWIpOyAg
ICAgICAgICBcCisrICAgIHYwID0gX21tX3N1Yl9wcyh2MCwgX21tX2xvYWRfcHMoc3VtYSArIGEp
KTsgXAorKyAgICB2MSA9IF9tbV9hZGRfcHModjEsIF9tbV9sb2FkX3BzKHN1bWIgKyBiKSk7IFwK
KysgICAgX21tX3N0b3JldV9wcyhvdXQgKyBhLCB2MCk7ICAgICAgICAgICAgICAgICBcCisrICAg
IF9tbV9zdG9yZXVfcHMob3V0ICsgYiArIDE2LCB2MSkKKysKKysgICAgaWYgKGluY3IgPT0gMSkg
eworKyAgICAgICAgdmVjX2YgdjAsIHYxOworKyAgICAgICAgU1VNUygwLCAxMik7IFNVTVMoNCwg
OCk7IFNVTVMoOCwgNCk7IFNVTVMoMTIsIDApOworKyAgICAgICAgb3V0ICs9IDE2ICogaW5jcjsK
KysgICAgfSBlbHNlIHsKKysgICAgICAgIGludCBqOworKyAgICAgICAgZmxvYXQgKm91dDIgPSBv
dXQgKyAzMiAqIGluY3I7CisrICAgICAgICBvdXRbMF0gPSAtc3VtYVswXTsKKysgICAgICAgIG91
dCArPSBpbmNyOworKyAgICAgICAgb3V0MiAtPSBpbmNyOworKyAgICAgICAgUFJBR01BX0UySygi
aXZkZXAiKQorKyAgICAgICAgZm9yIChqID0gMTsgaiA8IDE2OyBqKyspIHsKKysgICAgICAgICAg
ICAqb3V0ICA9IHN1bWRbMTUgLSBqXSAtIHN1bWFbal07CisrICAgICAgICAgICAgKm91dDIgPSBz
dW1iWzE2IC0gal0gKyBzdW1jW2ogLSAxXTsKKysgICAgICAgICAgICBvdXQgICs9IGluY3I7Cisr
ICAgICAgICAgICAgb3V0MiAtPSBpbmNyOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHN1
bSA9IDA7CisrICAgIFNVTTgoTUxTUywgc3VtLCB3aW4gKyAxNiArIDMyLCBpbiArIDMyKTsKKysg
ICAgKm91dCA9IHN1bTsKKyt9CisrCisrYXZfY29sZCB2b2lkIGZmX21wYWRzcF9pbml0X2UyayhN
UEFEU1BDb250ZXh0ICpzKQorK3sKKysgICAgaWYgKCFFMktfQkFTRShhdl9nZXRfY3B1X2ZsYWdz
KCkpKQorKyAgICAgICAgcmV0dXJuOworKworKyAgICAvLyAhY2hlY2thc20KKysgICAgcy0+YXBw
bHlfd2luZG93X2Zsb2F0ID0gYXBwbHlfd2luZG93X2UyazsgLy8gZmF0ZSBhdWRpb21hdGNoLXNx
dWFyZS1tcDMKKyt9CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9lMmsvbXBlZ3ZpZGVvLmMgYi9s
aWJhdmNvZGVjL2Uyay9tcGVndmlkZW8uYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw
MDAwMDAuLjM2YmY5NzUKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29kZWMvZTJrL21wZWd2
aWRlby5jCitAQCAtMCwwICsxLDEwMCBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDIxIEls
eWEgS3VyZHl1a292IDxqcGVncXNAZ21haWwuY29tPiBmb3IgQmFzZUFMVCwgTHRkCisrICogQ29w
eXJpZ2h0IChjKSAyMDAyIERpZXRlciBTaGlybGV5CisrICoKKysgKiBUaGlzIGZpbGUgaXMgcGFy
dCBvZiBGRm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAq
CisrICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5z
ZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
KyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaW5jbHVkZSA8c3RkbGliLmg+Cisr
I2luY2x1ZGUgPHN0ZGlvLmg+CisrCisrI2luY2x1ZGUgImNvbmZpZy5oIgorKworKyNpbmNsdWRl
ICJsaWJhdnV0aWwvYXR0cmlidXRlcy5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvY3B1LmgiCisr
I2luY2x1ZGUgImxpYmF2dXRpbC9lMmsvY3B1LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsv
dXRpbF9lMmsuaCIKKysKKysjaW5jbHVkZSAibGliYXZjb2RlYy9tcGVndmlkZW8uaCIKKysKKysv
KiB0aGlzIGNvZGUgYXNzdW1lcyBgYmxvY2snIGlzIDE2IGJ5dGVzLWFsaWduZWQgKi8KKytzdGF0
aWMgdm9pZCBkY3RfdW5xdWFudGl6ZV9oMjYzX2ludHJhX2UyayhNcGVnRW5jQ29udGV4dCAqcywK
KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9j
aywgaW50IG4sIGludCBxc2NhbGUpCisreworKyAgICBpbnQgbGV2ZWwsIHFtdWwsIHFhZGQgPSAw
LCBuQ29lZmZzID0gNjMsIGo7CisrICAgIF9fbTEyOGkgcW11bHYsIHFhZGR2LCB2MCwgdjE7Cisr
CisrICAgIHFtdWwgPSBxc2NhbGUgPDwgMTsKKysgICAgbGV2ZWwgPSBibG9ja1swXTsKKysKKysg
ICAgaWYgKCFzLT5oMjYzX2FpYykgeworKyAgICAgICAgbGV2ZWwgKj0gbiA8IDQgPyBzLT55X2Rj
X3NjYWxlIDogcy0+Y19kY19zY2FsZTsKKysgICAgICAgIHFhZGQgPSAocXNjYWxlIC0gMSkgfCAx
OworKyAgICB9IGVsc2UgeworKyAgICAgICAgYXZfYXNzZXJ0MihzLT5ibG9ja19sYXN0X2luZGV4
W25dID49IDApOworKyAgICB9CisrICAgIGlmICghcy0+YWNfcHJlZCkgeworKyAgICAgICAgbkNv
ZWZmcyA9IHMtPmludHJhX3NjYW50YWJsZS5yYXN0ZXJfZW5kW3MtPmJsb2NrX2xhc3RfaW5kZXhb
bl1dOworKyAgICB9CisrCisrICAgIHFtdWx2ID0gX21tX3NldDFfZXBpMTYocW11bCk7CisrICAg
IHFhZGR2ID0gX21tX3NldDFfZXBpMTYocWFkZCk7CisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikK
KysgICAgZm9yIChqID0gMDsgaiA8PSBuQ29lZmZzOyBqICs9IDgpIHsKKysgICAgICAgIHYwID0g
X21tX2xvYWRfc2kxMjgoKGNvbnN0IF9fbTEyOGkqKShibG9jayArIGopKTsKKysgICAgICAgIHYx
ID0gX21tX211bGxvX2VwaTE2KHYwLCBxbXVsdik7CisrICAgICAgICB2MSA9IF9tbV9hZGRfZXBp
MTYodjEsIF9tbV9zaWduX2VwaTE2KHFhZGR2LCB2MCkpOworKyAgICAgICAgX21tX3N0b3JlX3Np
MTI4KChfX20xMjhpKikoYmxvY2sgKyBqKSwgdjEpOworKyAgICB9CisrCisrICAgIGJsb2NrWzBd
ID0gbGV2ZWw7CisrfQorKworK3N0YXRpYyB2b2lkIGRjdF91bnF1YW50aXplX2gyNjNfaW50ZXJf
ZTJrKE1wZWdFbmNDb250ZXh0ICpzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludDE2X3QgKmJsb2NrLCBpbnQgbiwgaW50IHFzY2FsZSkKKyt7CisrICAgIGlu
dCBxbXVsLCBxYWRkLCBuQ29lZmZzLCBqOworKyAgICBfX20xMjhpIHFtdWx2LCBxYWRkdiwgdjAs
IHYxOworKworKyAgICBxbXVsID0gcXNjYWxlIDw8IDE7CisrICAgIHFhZGQgPSAocXNjYWxlIC0g
MSkgfCAxOworKworKyAgICBhdl9hc3NlcnQyKHMtPmJsb2NrX2xhc3RfaW5kZXhbbl0gPj0gMCB8
fCBzLT5oMjYzX2FpYyk7CisrICAgIG5Db2VmZnMgPSBzLT5pbnRlcl9zY2FudGFibGUucmFzdGVy
X2VuZFtzLT5ibG9ja19sYXN0X2luZGV4W25dXTsKKysKKysgICAgcW11bHYgPSBfbW1fc2V0MV9l
cGkxNihxbXVsKTsKKysgICAgcWFkZHYgPSBfbW1fc2V0MV9lcGkxNihxYWRkKTsKKysgICAgUFJB
R01BX0UySygiaXZkZXAiKQorKyAgICBmb3IgKGogPSAwOyBqIDw9IG5Db2VmZnM7IGogKz0gOCkg
eworKyAgICAgICAgdjAgPSBfbW1fbG9hZF9zaTEyOCgoY29uc3QgX19tMTI4aSopKGJsb2NrICsg
aikpOworKyAgICAgICAgdjEgPSBfbW1fbXVsbG9fZXBpMTYodjAsIHFtdWx2KTsKKysgICAgICAg
IHYxID0gX21tX2FkZF9lcGkxNih2MSwgX21tX3NpZ25fZXBpMTYocWFkZHYsIHYwKSk7CisrICAg
ICAgICBfbW1fc3RvcmVfc2kxMjgoKF9fbTEyOGkqKShibG9jayArIGopLCB2MSk7CisrICAgIH0K
Kyt9CisrCisrYXZfY29sZCB2b2lkIGZmX21wdl9jb21tb25faW5pdF9lMmsoTXBlZ0VuY0NvbnRl
eHQgKnMpCisreworKyAgICBpZiAoIUUyS19CQVNFKGF2X2dldF9jcHVfZmxhZ3MoKSkpCisrICAg
ICAgICByZXR1cm47CisrCisrICAgIC8vICFjaGVja2FzbQorKyAgICAvLyBmYXRlIGZsdi1hZGRf
a2V5ZnJhbWVfaW5kZXgKKysgICAgcy0+ZGN0X3VucXVhbnRpemVfaDI2M19pbnRyYSA9IGRjdF91
bnF1YW50aXplX2gyNjNfaW50cmFfZTJrOworKyAgICBzLT5kY3RfdW5xdWFudGl6ZV9oMjYzX2lu
dGVyID0gZGN0X3VucXVhbnRpemVfaDI2M19pbnRlcl9lMms7CisrfQorKworZGlmZiAtLWdpdCBh
L2xpYmF2Y29kZWMvZTJrL21wZWd2aWRlb2RzcC5jIGIvbGliYXZjb2RlYy9lMmsvbXBlZ3ZpZGVv
ZHNwLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4zZDQ0NzM1CistLS0g
L2Rldi9udWxsCisrKysgYi9saWJhdmNvZGVjL2Uyay9tcGVndmlkZW9kc3AuYworQEAgLTAsMCAr
MSw4NiBAQAorKy8qCisrICogR01DIChHbG9iYWwgTW90aW9uIENvbXBlbnNhdGlvbikKKysgKgor
KyAqIENvcHlyaWdodCAoQykgMjAyMSBJbHlhIEt1cmR5dWtvdiA8anBlZ3FzQGdtYWlsLmNvbT4g
Zm9yIEJhc2VBTFQsIEx0ZAorKyAqIENvcHlyaWdodCAoYykgMjAwMyBSb21haW4gRG9sYmVhdSA8
cm9tYWluQGRvbGJlYXUub3JnPgorKyAqCisrICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVn
LgorKyAqCisrICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIEZGbXBl
ZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0
aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAy
MTEwLTEzMDEgVVNBCisrICovCisrCisrI2luY2x1ZGUgImxpYmF2dXRpbC9jcHUuaCIKKysjaW5j
bHVkZSAibGliYXZ1dGlsL21lbS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL2NwdS5oIgor
KyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL3V0aWxfZTJrLmgiCisrCisrI2luY2x1ZGUgImxpYmF2
Y29kZWMvbXBlZ3ZpZGVvZHNwLmgiCisrCisrLyogQVRNIHRoaXMgY29kZSBhc3N1bWVzIHN0cmlk
ZSBpcyBhIG11bHRpcGxlIG9mIDgKKysgKiB0byBwcmVzZXJ2ZSBwcm9wZXIgZHN0IGFsaWdubWVu
dC4gKi8KKytzdGF0aWMgdm9pZCBnbWMxX2Uyayh1aW50OF90ICpkc3QgLyogYWxpZ24gOCAqLywg
dWludDhfdCAqc3JjIC8qIGFsaWduMSAqLywKKysgICAgICAgICAgICAgICAgICAgICBpbnQgc3Ry
aWRlLCBpbnQgaCwgaW50IHgxNiwgaW50IHkxNiwgaW50IHJvdW5kZXIpCisreworKyAgICBpbnQg
aTsKKysgICAgTE9BRF9aRVJPOworKyAgICB2ZWNfdTggZHN0diwgc3JjdkEsIHNyY3ZCOworKyAg
ICB2ZWNfdTE2IHQwLCB0MSwgdDIsIHQzOworKworKyAgICB2ZWNfdTE2IEF2ID0gX21tX3NldDFf
ZXBpMTYoKDE2IC0geDE2KSAqICgxNiAtIHkxNikpOworKyAgICB2ZWNfdTE2IEJ2ID0gX21tX3Nl
dDFfZXBpMTYoICAgICAgeDE2ICAqICgxNiAtIHkxNikpOworKyAgICB2ZWNfdTE2IEN2ID0gX21t
X3NldDFfZXBpMTYoKDE2IC0geDE2KSAqIHkxNik7CisrICAgIHZlY191MTYgRHYgPSBfbW1fc2V0
MV9lcGkxNiggICAgICB4MTYgICogeTE2KTsKKysgICAgdmVjX3UxNiByb3VuZGVyViA9IF9tbV9z
ZXQxX2VwaTE2KHJvdW5kZXIpOworKworKyAgICB2ZWNfdTggc3JjdkMgPSBWRUNfTEQ4KHNyYyk7
CisrICAgIHZlY191OCBzcmN2RCA9IFZFQ19MRDgoc3JjICsgMSk7CisrICAgIHNyY3ZDID0gX21t
X3VucGFja2xvX2VwaTgoc3JjdkMsIHplcm92KTsKKysgICAgc3JjdkQgPSBfbW1fdW5wYWNrbG9f
ZXBpOChzcmN2RCwgemVyb3YpOworKworKyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAgIGZv
ciAoaSA9IDA7IGkgPCBoOyBpKyspIHsKKysgICAgICAgIHNyYyArPSBzdHJpZGU7CisrCisrICAg
ICAgICBzcmN2QSA9IHNyY3ZDOworKyAgICAgICAgc3JjdkIgPSBzcmN2RDsKKysgICAgICAgIHNy
Y3ZDID0gVkVDX0xEOChzcmMpOworKyAgICAgICAgc3JjdkQgPSBWRUNfTEQ4KHNyYyArIDEpOwor
KyAgICAgICAgc3JjdkMgPSBfbW1fdW5wYWNrbG9fZXBpOChzcmN2QywgemVyb3YpOworKyAgICAg
ICAgc3JjdkQgPSBfbW1fdW5wYWNrbG9fZXBpOChzcmN2RCwgemVyb3YpOworKworKyAgICAgICAg
dDAgPSBfbW1fbXVsbG9fZXBpMTYoc3JjdkEsIEF2KTsKKysgICAgICAgIHQxID0gX21tX211bGxv
X2VwaTE2KHNyY3ZCLCBCdik7CisrICAgICAgICB0MCA9IF9tbV9hZGRfZXBpMTYodDAsIHQxKTsK
KysgICAgICAgIHQyID0gX21tX211bGxvX2VwaTE2KHNyY3ZDLCBDdik7CisrICAgICAgICB0MyA9
IF9tbV9tdWxsb19lcGkxNihzcmN2RCwgRHYpOworKyAgICAgICAgdDAgPSBfbW1fYWRkX2VwaTE2
KHQwLCByb3VuZGVyVik7CisrICAgICAgICB0MiA9IF9tbV9hZGRfZXBpMTYodDIsIHQzKTsKKysg
ICAgICAgIHQwID0gX21tX2FkZF9lcGkxNih0MCwgdDIpOworKyAgICAgICAgdDAgPSBfbW1fc3Js
aV9lcGkxNih0MCwgOCk7CisrICAgICAgICBkc3R2ID0gX21tX3BhY2t1c19lcGkxNih0MCwgdDAp
OworKworKyAgICAgICAgVkVDX1NUTChkc3QsIGRzdHYpOworKyAgICAgICAgZHN0ICs9IHN0cmlk
ZTsKKysgICAgfQorK30KKysKKythdl9jb2xkIHZvaWQgZmZfbXBlZ3ZpZGVvZHNwX2luaXRfZTJr
KE1wZWdWaWRlb0RTUENvbnRleHQgKmMpCisreworKyAgICBpZiAoIUUyS19CQVNFKGF2X2dldF9j
cHVfZmxhZ3MoKSkpCisrICAgICAgICByZXR1cm47CisrCisrICAgIC8vICFjaGVja2FzbQorKyAg
ICBjLT5nbWMxID0gZ21jMV9lMms7CisrfQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZTJrL21w
ZWd2aWRlb2VuY2RzcC5jIGIvbGliYXZjb2RlYy9lMmsvbXBlZ3ZpZGVvZW5jZHNwLmMKK25ldyBm
aWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5jNWQzZTRkCistLS0gL2Rldi9udWxsCisr
KysgYi9saWJhdmNvZGVjL2Uyay9tcGVndmlkZW9lbmNkc3AuYworQEAgLTAsMCArMSw3NSBAQAor
Ky8qCisrICogQ29weXJpZ2h0IChDKSAyMDIxIElseWEgS3VyZHl1a292IDxqcGVncXNAZ21haWwu
Y29tPiBmb3IgQmFzZUFMVCwgTHRkCisrICoKKysgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1w
ZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogRkZt
cGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9uZyB3
aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaW5jbHVkZSAiY29uZmlnLmgiCisrCisrI2luY2x1
ZGUgPHN0ZGludC5oPgorKworKyNpbmNsdWRlICJsaWJhdnV0aWwvYXR0cmlidXRlcy5oIgorKyNp
bmNsdWRlICJsaWJhdnV0aWwvY3B1LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsvY3B1Lmgi
CisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsvdXRpbF9lMmsuaCIKKysKKysjaW5jbHVkZSAibGli
YXZjb2RlYy9tcGVndmlkZW9lbmNkc3AuaCIKKysKKytzdGF0aWMgaW50IHBpeF9ub3JtMV9lMmso
dWludDhfdCAqcGl4LCBpbnQgbGluZV9zaXplKQorK3sKKysgICAgaW50IGk7CisrICAgIExPQURf
WkVSTzsgCisrICAgIF9fbTEyOGkgdjAsIHYxLCBzdW0gPSB6ZXJvdjsKKysKKysgICAgUFJBR01B
X0UySygiaXZkZXAiKQorKyAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgeworKyAgICAgICAg
djEgPSBWRUNfTEQocGl4KTsKKysgICAgICAgIHYwID0gX21tX3VucGFja2xvX2VwaTgodjEsIHpl
cm92KTsKKysgICAgICAgIHYxID0gX21tX3VucGFja2hpX2VwaTgodjEsIHplcm92KTsKKysgICAg
ICAgIHN1bSA9IF9tbV9hZGRfZXBpMzIoc3VtLCBfbW1fbWFkZF9lcGkxNih2MCwgdjApKTsKKysg
ICAgICAgIHN1bSA9IF9tbV9hZGRfZXBpMzIoc3VtLCBfbW1fbWFkZF9lcGkxNih2MSwgdjEpKTsK
KysgICAgICAgIHBpeCArPSBsaW5lX3NpemU7CisrICAgIH0KKysgICAgc3VtID0gX21tX2hhZGRf
ZXBpMzIoc3VtLCBzdW0pOworKyAgICByZXR1cm4gX21tX2V4dHJhY3RfZXBpMzIoc3VtLCAwKSAr
IF9tbV9leHRyYWN0X2VwaTMyKHN1bSwgMSk7CisrfQorKworK3N0YXRpYyBpbnQgcGl4X3N1bV9l
MmsodWludDhfdCAqcGl4LCBpbnQgbGluZV9zaXplKQorK3sKKysgICAgaW50IGk7CisrICAgIExP
QURfWkVSTzsKKysgICAgX19tMTI4aSB2MCwgc3VtID0gemVyb3Y7CisrCisrICAgIFBSQUdNQV9F
MksoIml2ZGVwIikKKysgICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsKKysgICAgICAgIHYw
ID0gVkVDX0xEKHBpeCk7CisrICAgICAgICBzdW0gPSBfbW1fYWRkX2VwaTMyKHN1bSwgX21tX3Nh
ZF9lcHU4KHYwLCB6ZXJvdikpOworKyAgICAgICAgcGl4ICs9IGxpbmVfc2l6ZTsKKysgICAgfQor
KyAgICByZXR1cm4gX21tX2V4dHJhY3RfZXBpMzIoc3VtLCAwKSArIF9tbV9leHRyYWN0X2VwaTMy
KHN1bSwgMik7CisrfQorKworK2F2X2NvbGQgdm9pZCBmZl9tcGVndmlkZW9lbmNkc3BfaW5pdF9l
MmsoTXBlZ3ZpZGVvRW5jRFNQQ29udGV4dCAqYywKKysgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFWQ29kZWNDb250ZXh0ICphdmN0eCkKKyt7CisrICAgIGlmICghRTJL
X0JBU0UoYXZfZ2V0X2NwdV9mbGFncygpKSkKKysgICAgICAgIHJldHVybjsKKysKKysgICAgLy8g
IWNoZWNrYXNtCisrICAgIGMtPnBpeF9ub3JtMSA9IHBpeF9ub3JtMV9lMms7CisrICAgIGMtPnBp
eF9zdW0gICA9IHBpeF9zdW1fZTJrOworK30KK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Uyay9w
aXhibG9ja2RzcC5jIGIvbGliYXZjb2RlYy9lMmsvcGl4YmxvY2tkc3AuYworbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmY1YTUwNjAKKy0tLSAvZGV2L251bGwKKysrKyBiL2xp
YmF2Y29kZWMvZTJrL3BpeGJsb2NrZHNwLmMKK0BAIC0wLDAgKzEsODMgQEAKKysvKgorKyAqIENv
cHlyaWdodCAoQykgMjAyMSBJbHlhIEt1cmR5dWtvdiA8anBlZ3FzQGdtYWlsLmNvbT4gZm9yIEJh
c2VBTFQsIEx0ZAorKyAqIENvcHlyaWdodCAoYykgMjAwMiBCcmlhbiBGb2xleQorKyAqIENvcHly
aWdodCAoYykgMjAwMiBEaWV0ZXIgU2hpcmxleQorKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA0
IFJvbWFpbiBEb2xiZWF1IDxyb21haW5AZG9sYmVhdS5vcmc+CisrICoKKysgKiBUaGlzIGZpbGUg
aXMgcGFydCBvZiBGRm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24g
Mi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorKyAqCisrICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICog
TGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaW5jbHVkZSAiY29uZmln
LmgiCisrCisrI2luY2x1ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVzLmgiCisrI2luY2x1ZGUgImxp
YmF2dXRpbC9jcHUuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Uyay9jcHUuaCIKKysjaW5jbHVk
ZSAibGliYXZ1dGlsL2Uyay91dGlsX2Uyay5oIgorKworKyNpbmNsdWRlICJsaWJhdmNvZGVjL2F2
Y29kZWMuaCIKKysjaW5jbHVkZSAibGliYXZjb2RlYy9waXhibG9ja2RzcC5oIgorKworK3N0YXRp
YyB2b2lkIGdldF9waXhlbHNfZTJrKGludDE2X3QgKiByZXN0cmljdCBibG9jaywgY29uc3QgdWlu
dDhfdCAqcGl4ZWxzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJp
ZGUpCisreworKyAgICBMT0FEX1pFUk87CisrICAgIF9fbTEyOGkgdjA7CisrICAgIGludCBpOwor
KworKyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKysp
IHsKKysgICAgICAgIHYwID0gVkVDX0xEOChwaXhlbHMpOworKyAgICAgICAgdjAgPSBfbW1fdW5w
YWNrbG9fZXBpOCh2MCwgemVyb3YpOworKyAgICAgICAgVkVDX1NUKGJsb2NrICsgaSAqIDgsIHYw
KTsKKysgICAgICAgIHBpeGVscyArPSBzdHJpZGU7CisrICAgIH0KKyt9CisrCisrc3RhdGljIHZv
aWQgZGlmZl9waXhlbHNfZTJrKGludDE2X3QgKiByZXN0cmljdCBibG9jaywgY29uc3QgdWludDhf
dCAqczEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMyLCBw
dHJkaWZmX3Qgc3RyaWRlKQorK3sKKysgICAgTE9BRF9aRVJPOworKyAgICBfX20xMjhpIHYwLCB2
MTsKKysgICAgaW50IGk7CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9yIChp
ID0gMDsgaSA8IDg7IGkrKykgeworKyAgICAgICAgdjAgPSBWRUNfTEQ4KHMxKTsKKysgICAgICAg
IHYxID0gVkVDX0xEOChzMik7CisrICAgICAgICB2MCA9IF9tbV91bnBhY2tsb19lcGk4KHYwLCB6
ZXJvdik7CisrICAgICAgICB2MSA9IF9tbV91bnBhY2tsb19lcGk4KHYxLCB6ZXJvdik7CisrICAg
ICAgICB2MCA9IF9tbV9zdWJfZXBpMTYodjAsIHYxKTsKKysgICAgICAgIFZFQ19TVChibG9jayAr
IGkgKiA4LCB2MCk7CisrICAgICAgICBzMSArPSBzdHJpZGU7CisrICAgICAgICBzMiArPSBzdHJp
ZGU7CisrICAgIH0KKyt9CisrCisrYXZfY29sZCB2b2lkIGZmX3BpeGJsb2NrZHNwX2luaXRfZTJr
KFBpeGJsb2NrRFNQQ29udGV4dCAqYywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBoaWdoX2JpdF9kZXB0aCkKKyt7CisrICAgIGlmICghRTJLX0JB
U0UoYXZfZ2V0X2NwdV9mbGFncygpKSkKKysgICAgICAgIHJldHVybjsKKysKKysgICAgLy8gY2hl
Y2thc20KKysKKysgICAgYy0+ZGlmZl9waXhlbHMgPSBkaWZmX3BpeGVsc19lMms7CisrCisrICAg
IGlmICghaGlnaF9iaXRfZGVwdGgpCisrICAgICAgICBjLT5nZXRfcGl4ZWxzID0gZ2V0X3BpeGVs
c19lMms7CisrfQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZTJrL3N2cTFlbmMuYyBiL2xpYmF2
Y29kZWMvZTJrL3N2cTFlbmMuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAu
LjI2M2FjNjAKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29kZWMvZTJrL3N2cTFlbmMuYwor
QEAgLTAsMCArMSw2OCBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDIxIElseWEgS3VyZHl1
a292IDxqcGVncXNAZ21haWwuY29tPiBmb3IgQmFzZUFMVCwgTHRkCisrICogQ29weXJpZ2h0IChj
KSAyMDA3IEx1Y2EgQmFyYmF0byA8bHVfemVyb0BnZW50b28ub3JnPgorKyAqCisrICogVGhpcyBm
aWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorKyAqCisrICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgKiB2ZXJz
aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKysgKgorKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
KyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisrICovCisrCisrI2luY2x1ZGUgImNv
bmZpZy5oIgorKworKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysKKysjaW5jbHVkZSAibGliYXZ1dGls
L2F0dHJpYnV0ZXMuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2NwdS5oIgorKyNpbmNsdWRlICJs
aWJhdnV0aWwvZTJrL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL3V0aWxfZTJrLmgi
CisrCisrI2luY2x1ZGUgImxpYmF2Y29kZWMvc3ZxMWVuYy5oIgorKworK3N0YXRpYyBpbnQgc3Nk
X2ludDhfdnNfaW50MTZfZTJrKGNvbnN0IGludDhfdCAqcGl4MSwgY29uc3QgaW50MTZfdCAqcGl4
MiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRwdHJfdCBzaXplKQorK3sK
KysgICAgaW50IGksIHJlczsKKysgICAgX19tMTI4aSB2MCwgdjEsIHYyLCB2Mywgc3VtID0gX21t
X3NldHplcm9fc2kxMjgoKTsKKysKKysgICAgZm9yIChpID0gMDsgaSArIDE1IDwgc2l6ZTsgaSAr
PSAxNikgeworKyAgICAgICAgdjEgPSBWRUNfTEQocGl4MSk7CisrICAgICAgICB2MCA9IF9tbV9z
cmFpX2VwaTE2KF9tbV91bnBhY2tsb19lcGk4KHYxLCB2MSksIDgpOworKyAgICAgICAgdjEgPSBf
bW1fc3JhaV9lcGkxNihfbW1fdW5wYWNraGlfZXBpOCh2MSwgdjEpLCA4KTsKKysgICAgICAgIHYy
ID0gVkVDX0xEKHBpeDIpOworKyAgICAgICAgdjMgPSBWRUNfTEQocGl4MiArIDgpOworKyAgICAg
ICAgdjAgPSBfbW1fc3ViX2VwaTE2KHYwLCB2Mik7CisrICAgICAgICB2MSA9IF9tbV9zdWJfZXBp
MTYodjEsIHYzKTsKKysgICAgICAgIHN1bSA9IF9tbV9hZGRfZXBpMzIoc3VtLCBfbW1fbWFkZF9l
cGkxNih2MCwgdjApKTsKKysgICAgICAgIHN1bSA9IF9tbV9hZGRfZXBpMzIoc3VtLCBfbW1fbWFk
ZF9lcGkxNih2MSwgdjEpKTsKKysgICAgICAgIHBpeDEgKz0gMTY7CisrICAgICAgICBwaXgyICs9
IDE2OworKyAgICB9CisrICAgIHN1bSA9IF9tbV9oYWRkX2VwaTMyKHN1bSwgc3VtKTsKKysgICAg
cmVzID0gX21tX2V4dHJhY3RfZXBpMzIoc3VtLCAwKSArIF9tbV9leHRyYWN0X2VwaTMyKHN1bSwg
MSk7CisrCisrICAgIGZvciAoOyBpIDwgc2l6ZTsgaSsrKQorKyAgICAgICAgcmVzICs9IChwaXgx
W2ldIC0gcGl4MltpXSkgKiAocGl4MVtpXSAtIHBpeDJbaV0pOworKworKyAgICByZXR1cm4gcmVz
OworK30KKysKKythdl9jb2xkIHZvaWQgZmZfc3ZxMWVuY19pbml0X2UyayhTVlExRW5jQ29udGV4
dCAqYykKKyt7CisrICAgIGlmICghRTJLX0JBU0UoYXZfZ2V0X2NwdV9mbGFncygpKSkKKysgICAg
ICAgIHJldHVybjsKKysKKysgICAgLy8gIWNoZWNrYXNtCisrICAgIGMtPnNzZF9pbnQ4X3ZzX2lu
dDE2ID0gc3NkX2ludDhfdnNfaW50MTZfZTJrOworK30KK2RpZmYgLS1naXQgYS9saWJhdmNvZGVj
L2Uyay92YzFkc3AuYyBiL2xpYmF2Y29kZWMvZTJrL3ZjMWRzcC5jCituZXcgZmlsZSBtb2RlIDEw
MDY0NAoraW5kZXggMDAwMDAwMC4uOTEzMDdhOQorLS0tIC9kZXYvbnVsbAorKysrIGIvbGliYXZj
b2RlYy9lMmsvdmMxZHNwLmMKK0BAIC0wLDAgKzEsMzAzIEBACisrLyoKKysgKiBWQy0xIGFuZCBX
TVYzIGRlY29kZXIgLSBEU1AgZnVuY3Rpb25zCisrICogQ29weXJpZ2h0IChDKSAyMDIxIElseWEg
S3VyZHl1a292IDxqcGVncXNAZ21haWwuY29tPiBmb3IgQmFzZUFMVCwgTHRkCisrICogQ29weXJp
Z2h0IChjKSAyMDA2IEtvbnN0YW50aW4gU2hpc2hrb3YKKysgKgorKyAqIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIEZGbXBlZy4KKysgKgorKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAyLjEg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr
ICoKKysgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNl
bnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CisrICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorKyAqLworKworKyNpbmNsdWRlICJjb25maWcuaCIK
KysKKysjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKKysjaW5jbHVkZSAibGliYXZ1
dGlsL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL2NwdS5oIgorKyNpbmNsdWRlICJs
aWJhdnV0aWwvZTJrL3V0aWxfZTJrLmgiCisrCisrI2luY2x1ZGUgImxpYmF2Y29kZWMvdmMxZHNw
LmgiCisrCisrLy8gbWFpbiBzdGVwcyBvZiA4eDggdHJhbnNmb3JtCisrI2RlZmluZSBTVEVQOChz
MCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHZlY19ybmQpIGRvIHsgXAorKyAgICB0MCA9
IF9tbV9zbGxpX2VwaTMyKF9tbV9hZGRfZXBpMzIoczAsIHM0KSwgMik7IFwKKysgICAgdDAgPSBf
bW1fYWRkX2VwaTMyKF9tbV9zbGxpX2VwaTMyKHQwLCAxKSwgdDApOyBcCisrICAgIHQwID0gX21t
X2FkZF9lcGkzMih0MCwgdmVjX3JuZCk7IFwKKysgICAgdDEgPSBfbW1fc2xsaV9lcGkzMihfbW1f
c3ViX2VwaTMyKHMwLCBzNCksIDIpOyBcCisrICAgIHQxID0gX21tX2FkZF9lcGkzMihfbW1fc2xs
aV9lcGkzMih0MSwgMSksIHQxKTsgXAorKyAgICB0MSA9IF9tbV9hZGRfZXBpMzIodDEsIHZlY19y
bmQpOyBcCisrICAgIHQyID0gX21tX2FkZF9lcGkzMihfbW1fc2xsaV9lcGkzMihzNiwgMiksIF9t
bV9zbGxpX2VwaTMyKHM2LCAxKSk7IFwKKysgICAgdDIgPSBfbW1fYWRkX2VwaTMyKHQyLCBfbW1f
c2xsaV9lcGkzMihzMiwgNCkpOyBcCisrICAgIHQzID0gX21tX2FkZF9lcGkzMihfbW1fc2xsaV9l
cGkzMihzMiwgMiksIF9tbV9zbGxpX2VwaTMyKHMyLCAxKSk7IFwKKysgICAgdDMgPSBfbW1fc3Vi
X2VwaTMyKHQzLCBfbW1fc2xsaV9lcGkzMihzNiwgNCkpOyBcCisrICAgIHQ0ID0gX21tX2FkZF9l
cGkzMih0MCwgdDIpOyBcCisrICAgIHQ1ID0gX21tX2FkZF9lcGkzMih0MSwgdDMpOyBcCisrICAg
IHQ2ID0gX21tX3N1Yl9lcGkzMih0MSwgdDMpOyBcCisrICAgIHQ3ID0gX21tX3N1Yl9lcGkzMih0
MCwgdDIpOyBcCisrXAorKyAgICB0MCA9IF9tbV9zbGxpX2VwaTMyKF9tbV9hZGRfZXBpMzIoczEs
IHMzKSwgNCk7IFwKKysgICAgdDAgPSBfbW1fYWRkX2VwaTMyKHQwLCBfbW1fc2xsaV9lcGkzMihz
NSwgMykpOyBcCisrICAgIHQwID0gX21tX2FkZF9lcGkzMih0MCwgX21tX3NsbGlfZXBpMzIoczcs
IDIpKTsgXAorKyAgICB0MCA9IF9tbV9hZGRfZXBpMzIodDAsIF9tbV9zdWJfZXBpMzIoczUsIHMz
KSk7IFwKKytcCisrICAgIHQxID0gX21tX3NsbGlfZXBpMzIoX21tX3N1Yl9lcGkzMihzMSwgczUp
LCA0KTsgXAorKyAgICB0MSA9IF9tbV9zdWJfZXBpMzIodDEsIF9tbV9zbGxpX2VwaTMyKHM3LCAz
KSk7IFwKKysgICAgdDEgPSBfbW1fc3ViX2VwaTMyKHQxLCBfbW1fc2xsaV9lcGkzMihzMywgMikp
OyBcCisrICAgIHQxID0gX21tX3N1Yl9lcGkzMih0MSwgX21tX2FkZF9lcGkzMihzMSwgczcpKTsg
XAorK1wKKysgICAgdDIgPSBfbW1fc2xsaV9lcGkzMihfbW1fc3ViX2VwaTMyKHM3LCBzMyksIDQp
OyBcCisrICAgIHQyID0gX21tX2FkZF9lcGkzMih0MiwgX21tX3NsbGlfZXBpMzIoczEsIDMpKTsg
XAorKyAgICB0MiA9IF9tbV9hZGRfZXBpMzIodDIsIF9tbV9zbGxpX2VwaTMyKHM1LCAyKSk7IFwK
KysgICAgdDIgPSBfbW1fYWRkX2VwaTMyKHQyLCBfbW1fc3ViX2VwaTMyKHMxLCBzNykpOyBcCisr
XAorKyAgICB0MyA9IF9tbV9zbGxpX2VwaTMyKF9tbV9zdWJfZXBpMzIoczUsIHM3KSwgNCk7IFwK
KysgICAgdDMgPSBfbW1fc3ViX2VwaTMyKHQzLCBfbW1fc2xsaV9lcGkzMihzMywgMykpOyBcCisr
ICAgIHQzID0gX21tX2FkZF9lcGkzMih0MywgX21tX3NsbGlfZXBpMzIoczEsIDIpKTsgXAorKyAg
ICB0MyA9IF9tbV9zdWJfZXBpMzIodDMsIF9tbV9hZGRfZXBpMzIoczMsIHM1KSk7IFwKKytcCisr
ICAgIHMwID0gX21tX2FkZF9lcGkzMih0NCwgdDApOyBcCisrICAgIHMxID0gX21tX2FkZF9lcGkz
Mih0NSwgdDEpOyBcCisrICAgIHMyID0gX21tX2FkZF9lcGkzMih0NiwgdDIpOyBcCisrICAgIHMz
ID0gX21tX2FkZF9lcGkzMih0NywgdDMpOyBcCisrICAgIHM0ID0gX21tX3N1Yl9lcGkzMih0Nywg
dDMpOyBcCisrICAgIHM1ID0gX21tX3N1Yl9lcGkzMih0NiwgdDIpOyBcCisrICAgIHM2ID0gX21t
X3N1Yl9lcGkzMih0NSwgdDEpOyBcCisrICAgIHM3ID0gX21tX3N1Yl9lcGkzMih0NCwgdDApOyBc
CisrfXdoaWxlKDApCisrCisrI2RlZmluZSBTSElGVF9IT1I4KHMwLCBzMSwgczIsIHMzLCBzNCwg
czUsIHM2LCBzNykgZG8geyBcCisrICAgIHMwID0gX21tX3NyYWlfZXBpMzIoczAsIDMpOyBcCisr
ICAgIHMxID0gX21tX3NyYWlfZXBpMzIoczEsIDMpOyBcCisrICAgIHMyID0gX21tX3NyYWlfZXBp
MzIoczIsIDMpOyBcCisrICAgIHMzID0gX21tX3NyYWlfZXBpMzIoczMsIDMpOyBcCisrICAgIHM0
ID0gX21tX3NyYWlfZXBpMzIoczQsIDMpOyBcCisrICAgIHM1ID0gX21tX3NyYWlfZXBpMzIoczUs
IDMpOyBcCisrICAgIHM2ID0gX21tX3NyYWlfZXBpMzIoczYsIDMpOyBcCisrICAgIHM3ID0gX21t
X3NyYWlfZXBpMzIoczcsIDMpOyBcCisrfSB3aGlsZSgwKQorKworKyNkZWZpbmUgU0hJRlRfVkVS
VDgoczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3KSBkbyB7IFwKKysgICAgczAgPSBfbW1f
c3JhaV9lcGkzMihzMCwgNyk7IFwKKysgICAgczEgPSBfbW1fc3JhaV9lcGkzMihzMSwgNyk7IFwK
KysgICAgczIgPSBfbW1fc3JhaV9lcGkzMihzMiwgNyk7IFwKKysgICAgczMgPSBfbW1fc3JhaV9l
cGkzMihzMywgNyk7IFwKKysgICAgczQgPSBfbW1fc3JhaV9lcGkzMihfbW1fYWRkX2VwaTMyKHM0
LCBjMSksIDcpOyBcCisrICAgIHM1ID0gX21tX3NyYWlfZXBpMzIoX21tX2FkZF9lcGkzMihzNSwg
YzEpLCA3KTsgXAorKyAgICBzNiA9IF9tbV9zcmFpX2VwaTMyKF9tbV9hZGRfZXBpMzIoczYsIGMx
KSwgNyk7IFwKKysgICAgczcgPSBfbW1fc3JhaV9lcGkzMihfbW1fYWRkX2VwaTMyKHM3LCBjMSks
IDcpOyBcCisrfSB3aGlsZSgwKQorKworKy8qIG1haW4gc3RlcHMgb2YgNHg0IHRyYW5zZm9ybSAq
LworKyNkZWZpbmUgU1RFUDQoczAsIHMxLCBzMiwgczMsIHZlY19ybmQpIGRvIHsgXAorKyAgICB0
MSA9IF9tbV9hZGRfZXBpMzIoX21tX3NsbGlfZXBpMzIoczAsIDQpLCBzMCk7IFwKKysgICAgdDEg
PSBfbW1fYWRkX2VwaTMyKHQxLCB2ZWNfcm5kKTsgXAorKyAgICB0MiA9IF9tbV9hZGRfZXBpMzIo
X21tX3NsbGlfZXBpMzIoczIsIDQpLCBzMik7IFwKKysgICAgdDAgPSBfbW1fYWRkX2VwaTMyKHQx
LCB0Mik7IFwKKysgICAgdDEgPSBfbW1fc3ViX2VwaTMyKHQxLCB0Mik7IFwKKysgICAgdDMgPSBf
bW1fc2xsaV9lcGkzMihfbW1fc3ViX2VwaTMyKHMzLCBzMSksIDEpOyBcCisrICAgIHQzID0gX21t
X2FkZF9lcGkzMih0MywgX21tX3NsbGlfZXBpMzIodDMsIDIpKTsgXAorKyAgICB0MiA9IF9tbV9h
ZGRfZXBpMzIodDMsIF9tbV9zbGxpX2VwaTMyKHMxLCA1KSk7IFwKKysgICAgdDMgPSBfbW1fYWRk
X2VwaTMyKHQzLCBfbW1fc2xsaV9lcGkzMihzMywgMykpOyBcCisrICAgIHQzID0gX21tX2FkZF9l
cGkzMih0MywgX21tX3NsbGlfZXBpMzIoczMsIDIpKTsgXAorKyAgICBzMCA9IF9tbV9hZGRfZXBp
MzIodDAsIHQyKTsgXAorKyAgICBzMSA9IF9tbV9zdWJfZXBpMzIodDEsIHQzKTsgXAorKyAgICBz
MiA9IF9tbV9hZGRfZXBpMzIodDEsIHQzKTsgXAorKyAgICBzMyA9IF9tbV9zdWJfZXBpMzIodDAs
IHQyKTsgXAorK30gd2hpbGUgKDApCisrCisrI2RlZmluZSBTSElGVF9IT1I0KHMwLCBzMSwgczIs
IHMzKSBcCisrICAgIHMwID0gX21tX3NyYWlfZXBpMzIoczAsIDMpOyBcCisrICAgIHMxID0gX21t
X3NyYWlfZXBpMzIoczEsIDMpOyBcCisrICAgIHMyID0gX21tX3NyYWlfZXBpMzIoczIsIDMpOyBc
CisrICAgIHMzID0gX21tX3NyYWlfZXBpMzIoczMsIDMpCisrCisrI2RlZmluZSBTSElGVF9WRVJU
NChzMCwgczEsIHMyLCBzMykgXAorKyAgICBzMCA9IF9tbV9zcmFpX2VwaTMyKHMwLCA3KTsgXAor
KyAgICBzMSA9IF9tbV9zcmFpX2VwaTMyKHMxLCA3KTsgXAorKyAgICBzMiA9IF9tbV9zcmFpX2Vw
aTMyKHMyLCA3KTsgXAorKyAgICBzMyA9IF9tbV9zcmFpX2VwaTMyKHMzLCA3KQorKworKyNkZWZp
bmUgX21tX3VucGFja2xvMV9lcGkxNih2KSBfbW1fc3JhaV9lcGkzMihfbW1fdW5wYWNrbG9fZXBp
MTYodiwgdiksIDE2KQorKyNkZWZpbmUgX21tX3VucGFja2hpMV9lcGkxNih2KSBfbW1fc3JhaV9l
cGkzMihfbW1fdW5wYWNraGlfZXBpMTYodiwgdiksIDE2KQorKworKyNkZWZpbmUgVFJBTlNQT1NF
NF8zMihzMCwgczEsIHMyLCBzMykgXAorKyAgICB0MCA9IF9tbV91bnBhY2tsb19lcGkzMihzMCwg
czEpOyBcCisrICAgIHQxID0gX21tX3VucGFja2hpX2VwaTMyKHMwLCBzMSk7IFwKKysgICAgdDIg
PSBfbW1fdW5wYWNrbG9fZXBpMzIoczIsIHMzKTsgXAorKyAgICB0MyA9IF9tbV91bnBhY2toaV9l
cGkzMihzMiwgczMpOyBcCisrICAgIHMwID0gX21tX3VucGFja2xvX2VwaTY0KHQwLCB0Mik7IFwK
KysgICAgczEgPSBfbW1fdW5wYWNraGlfZXBpNjQodDAsIHQyKTsgXAorKyAgICBzMiA9IF9tbV91
bnBhY2tsb19lcGk2NCh0MSwgdDMpOyBcCisrICAgIHMzID0gX21tX3VucGFja2hpX2VwaTY0KHQx
LCB0Myk7CisrCisrLyogRG8gaW52ZXJzZSB0cmFuc2Zvcm0gb24gOHg4IGJsb2NrICovCisrc3Rh
dGljIHZvaWQgdmMxX2ludl90cmFuc184eDhfZTJrKGludDE2X3QgYmxvY2tbNjRdKQorK3sKKysg
ICAgdmVjX3MxNiBzcmMwLCBzcmMxLCBzcmMyLCBzcmMzLCBzcmM0LCBzcmM1LCBzcmM2LCBzcmM3
OworKyAgICB2ZWNfczMyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNzsKKysgICAgdmVj
X3MzMiBzOCwgczksIHNBLCBzQiwgc0MsIHNELCBzRSwgc0Y7CisrICAgIHZlY19zMzIgdDAsIHQx
LCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3OworKyAgICBjb25zdCB2ZWNfczMyIGM2NCA9IF9tbV9z
ZXQxX2VwaTMyKDY0KTsKKysgICAgY29uc3QgdmVjX3MzMiBjNCA9IF9tbV9zZXQxX2VwaTMyKDQp
OworKyAgICBjb25zdCB2ZWNfczMyIGMxID0gX21tX3NldDFfZXBpMzIoMSk7CisrCisrICAgIHNy
YzAgPSBWRUNfTEQoYmxvY2sgKyA4ICogMCk7CisrICAgIHNyYzEgPSBWRUNfTEQoYmxvY2sgKyA4
ICogMSk7CisrICAgIHNyYzIgPSBWRUNfTEQoYmxvY2sgKyA4ICogMik7CisrICAgIHNyYzMgPSBW
RUNfTEQoYmxvY2sgKyA4ICogMyk7CisrICAgIHNyYzQgPSBWRUNfTEQoYmxvY2sgKyA4ICogNCk7
CisrICAgIHNyYzUgPSBWRUNfTEQoYmxvY2sgKyA4ICogNSk7CisrICAgIHNyYzYgPSBWRUNfTEQo
YmxvY2sgKyA4ICogNik7CisrICAgIHNyYzcgPSBWRUNfTEQoYmxvY2sgKyA4ICogNyk7CisrCisr
ICAgIHMwID0gX21tX3VucGFja2xvMV9lcGkxNihzcmMwKTsKKysgICAgczEgPSBfbW1fdW5wYWNr
bG8xX2VwaTE2KHNyYzEpOworKyAgICBzMiA9IF9tbV91bnBhY2tsbzFfZXBpMTYoc3JjMik7Cisr
ICAgIHMzID0gX21tX3VucGFja2xvMV9lcGkxNihzcmMzKTsKKysgICAgczQgPSBfbW1fdW5wYWNr
bG8xX2VwaTE2KHNyYzQpOworKyAgICBzNSA9IF9tbV91bnBhY2tsbzFfZXBpMTYoc3JjNSk7Cisr
ICAgIHM2ID0gX21tX3VucGFja2xvMV9lcGkxNihzcmM2KTsKKysgICAgczcgPSBfbW1fdW5wYWNr
bG8xX2VwaTE2KHNyYzcpOworKyAgICBzOCA9IF9tbV91bnBhY2toaTFfZXBpMTYoc3JjMCk7Cisr
ICAgIHM5ID0gX21tX3VucGFja2hpMV9lcGkxNihzcmMxKTsKKysgICAgc0EgPSBfbW1fdW5wYWNr
aGkxX2VwaTE2KHNyYzIpOworKyAgICBzQiA9IF9tbV91bnBhY2toaTFfZXBpMTYoc3JjMyk7Cisr
ICAgIHNDID0gX21tX3VucGFja2hpMV9lcGkxNihzcmM0KTsKKysgICAgc0QgPSBfbW1fdW5wYWNr
aGkxX2VwaTE2KHNyYzUpOworKyAgICBzRSA9IF9tbV91bnBhY2toaTFfZXBpMTYoc3JjNik7Cisr
ICAgIHNGID0gX21tX3VucGFja2hpMV9lcGkxNihzcmM3KTsKKysgICAgU1RFUDgoczAsIHMxLCBz
MiwgczMsIHM0LCBzNSwgczYsIHM3LCBjNCk7CisrICAgIFNISUZUX0hPUjgoczAsIHMxLCBzMiwg
czMsIHM0LCBzNSwgczYsIHM3KTsKKysgICAgU1RFUDgoczgsIHM5LCBzQSwgc0IsIHNDLCBzRCwg
c0UsIHNGLCBjNCk7CisrICAgIFNISUZUX0hPUjgoczgsIHM5LCBzQSwgc0IsIHNDLCBzRCwgc0Us
IHNGKTsKKysKKysgICAgVFJBTlNQT1NFNF8zMihzMCwgczEsIHMyLCBzMykKKysgICAgVFJBTlNQ
T1NFNF8zMihzNCwgczUsIHM2LCBzNykKKysgICAgVFJBTlNQT1NFNF8zMihzOCwgczksIHNBLCBz
QikKKysgICAgVFJBTlNQT1NFNF8zMihzQywgc0QsIHNFLCBzRikKKysKKysgICAgU1RFUDgoczAs
IHMxLCBzMiwgczMsIHM4LCBzOSwgc0EsIHNCLCBjNjQpOworKyAgICBTSElGVF9WRVJUOChzMCwg
czEsIHMyLCBzMywgczgsIHM5LCBzQSwgc0IpOworKyAgICBTVEVQOChzNCwgczUsIHM2LCBzNywg
c0MsIHNELCBzRSwgc0YsIGM2NCk7CisrICAgIFNISUZUX1ZFUlQ4KHM0LCBzNSwgczYsIHM3LCBz
Qywgc0QsIHNFLCBzRik7CisrICAgIHNyYzAgPSBfbW1fcGFja3NfZXBpMzIoczAsIHM0KTsKKysg
ICAgc3JjMSA9IF9tbV9wYWNrc19lcGkzMihzMSwgczUpOworKyAgICBzcmMyID0gX21tX3BhY2tz
X2VwaTMyKHMyLCBzNik7CisrICAgIHNyYzMgPSBfbW1fcGFja3NfZXBpMzIoczMsIHM3KTsKKysg
ICAgc3JjNCA9IF9tbV9wYWNrc19lcGkzMihzOCwgc0MpOworKyAgICBzcmM1ID0gX21tX3BhY2tz
X2VwaTMyKHM5LCBzRCk7CisrICAgIHNyYzYgPSBfbW1fcGFja3NfZXBpMzIoc0EsIHNFKTsKKysg
ICAgc3JjNyA9IF9tbV9wYWNrc19lcGkzMihzQiwgc0YpOworKworKyAgICBWRUNfU1QoYmxvY2sg
KyA4ICogMCwgc3JjMCk7CisrICAgIFZFQ19TVChibG9jayArIDggKiAxLCBzcmMxKTsKKysgICAg
VkVDX1NUKGJsb2NrICsgOCAqIDIsIHNyYzIpOworKyAgICBWRUNfU1QoYmxvY2sgKyA4ICogMywg
c3JjMyk7CisrICAgIFZFQ19TVChibG9jayArIDggKiA0LCBzcmM0KTsKKysgICAgVkVDX1NUKGJs
b2NrICsgOCAqIDUsIHNyYzUpOworKyAgICBWRUNfU1QoYmxvY2sgKyA4ICogNiwgc3JjNik7Cisr
ICAgIFZFQ19TVChibG9jayArIDggKiA3LCBzcmM3KTsKKyt9CisrCisrLyogRG8gaW52ZXJzZSB0
cmFuc2Zvcm0gb24gOHg0IHBhcnQgb2YgYmxvY2sgKi8KKytzdGF0aWMgdm9pZCB2YzFfaW52X3Ry
YW5zXzh4NF9lMmsodWludDhfdCAqZGVzdCwgcHRyZGlmZl90IHN0cmlkZSwKKysgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2spCisreworKyAgICBMT0FEX1pF
Uk87CisrICAgIHZlY19zMTYgc3JjMCwgc3JjMSwgc3JjMiwgc3JjMzsKKysgICAgdmVjX3MzMiBz
MCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczc7CisrICAgIHZlY19zMzIgdDAsIHQxLCB0Miwg
dDMsIHQ0LCB0NSwgdDYsIHQ3OworKyAgICBjb25zdCB2ZWNfczMyIGM2NCA9IF9tbV9zZXQxX2Vw
aTMyKDY0KTsKKysgICAgY29uc3QgdmVjX3MzMiBjNCA9IF9tbV9zZXQxX2VwaTMyKDQpOworKyAg
ICBfX20xMjhpIHRtcDsKKysKKysgICAgc3JjMCA9IFZFQ19MRChibG9jayArIDggKiAwKTsKKysg
ICAgc3JjMSA9IFZFQ19MRChibG9jayArIDggKiAxKTsKKysgICAgc3JjMiA9IFZFQ19MRChibG9j
ayArIDggKiAyKTsKKysgICAgc3JjMyA9IFZFQ19MRChibG9jayArIDggKiAzKTsKKysKKysgICAg
dDAgPSBfbW1fdW5wYWNrbG9fZXBpMTYoc3JjMCwgc3JjMSk7CisrICAgIHQxID0gX21tX3VucGFj
a2hpX2VwaTE2KHNyYzAsIHNyYzEpOworKyAgICB0MiA9IF9tbV91bnBhY2tsb19lcGkxNihzcmMy
LCBzcmMzKTsKKysgICAgdDMgPSBfbW1fdW5wYWNraGlfZXBpMTYoc3JjMiwgc3JjMyk7CisrCisr
ICAgIHQ0ID0gX21tX3VucGFja2xvX2VwaTMyKHQwLCB0Mik7CisrICAgIHQ1ID0gX21tX3VucGFj
a2hpX2VwaTMyKHQwLCB0Mik7CisrICAgIHQ2ID0gX21tX3VucGFja2xvX2VwaTMyKHQxLCB0Myk7
CisrICAgIHQ3ID0gX21tX3VucGFja2hpX2VwaTMyKHQxLCB0Myk7CisrCisrICAgIHMwID0gX21t
X3VucGFja2xvMV9lcGkxNih0NCk7CisrICAgIHMxID0gX21tX3VucGFja2hpMV9lcGkxNih0NCk7
CisrICAgIHMyID0gX21tX3VucGFja2xvMV9lcGkxNih0NSk7CisrICAgIHMzID0gX21tX3VucGFj
a2hpMV9lcGkxNih0NSk7CisrICAgIHM0ID0gX21tX3VucGFja2xvMV9lcGkxNih0Nik7CisrICAg
IHM1ID0gX21tX3VucGFja2hpMV9lcGkxNih0Nik7CisrICAgIHM2ID0gX21tX3VucGFja2xvMV9l
cGkxNih0Nyk7CisrICAgIHM3ID0gX21tX3VucGFja2hpMV9lcGkxNih0Nyk7CisrCisrICAgIFNU
RVA4KHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgYzQpOworKyAgICBTSElGVF9IT1I4
KHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNyk7CisrCisrICAgIFRSQU5TUE9TRTRfMzIo
czAsIHMxLCBzMiwgczMpCisrICAgIFRSQU5TUE9TRTRfMzIoczQsIHM1LCBzNiwgczcpCisrCisr
ICAgIFNURVA0KHMwLCBzMSwgczIsIHMzLCBjNjQpOworKyAgICBTSElGVF9WRVJUNChzMCwgczEs
IHMyLCBzMyk7CisrICAgIFNURVA0KHM0LCBzNSwgczYsIHM3LCBjNjQpOworKyAgICBTSElGVF9W
RVJUNChzNCwgczUsIHM2LCBzNyk7CisrICAgIHNyYzAgPSBfbW1fcGFja3NfZXBpMzIoczAsIHM0
KTsKKysgICAgc3JjMSA9IF9tbV9wYWNrc19lcGkzMihzMSwgczUpOworKyAgICBzcmMyID0gX21t
X3BhY2tzX2VwaTMyKHMyLCBzNik7CisrICAgIHNyYzMgPSBfbW1fcGFja3NfZXBpMzIoczMsIHM3
KTsKKysKKysjZGVmaW5lIEFERChkZXN0LCBzcmMpICAgICAgICAgICAgICAgICAgIFwKKysgICAg
dG1wID0gVkVDX0xEOChkZXN0KTsgICAgICAgICAgICAgICAgIFwKKysgICAgdG1wID0gX21tX3Vu
cGFja2xvX2VwaTgodG1wLCB6ZXJvdik7IFwKKysgICAgdG1wID0gX21tX2FkZHNfZXBpMTYodG1w
LCBzcmMpOyAgICAgIFwKKysgICAgdG1wID0gX21tX3BhY2t1c19lcGkxNih0bXAsIHRtcCk7ICAg
IFwKKysgICAgVkVDX1NUTChkZXN0LCB0bXApCisrCisrICAgIEFERChkZXN0LCBzcmMwKTsgZGVz
dCArPSBzdHJpZGU7CisrICAgIEFERChkZXN0LCBzcmMxKTsgZGVzdCArPSBzdHJpZGU7CisrICAg
IEFERChkZXN0LCBzcmMyKTsgZGVzdCArPSBzdHJpZGU7CisrICAgIEFERChkZXN0LCBzcmMzKTsK
Kyt9CisrCisrI2RlZmluZSBQVVRfT1BfVThfRTJLKGQsIHMsIGRzdCkgZCA9IHMKKysjZGVmaW5l
IEFWR19PUF9VOF9FMksoZCwgcywgZHN0KSBkID0gX21tX2F2Z19lcHU4KGRzdCwgcykKKysKKysj
ZGVmaW5lIE9QX1U4X0UySyAgICAgICAgICAgICAgICAgICAgICAgICAgUFVUX09QX1U4X0UySwor
KyNkZWZpbmUgUFJFRklYX25vX3JuZF92YzFfY2hyb21hX21jOF9lMmsgICBwdXRfbm9fcm5kX3Zj
MV9jaHJvbWFfbWM4X2UyaworKyNpbmNsdWRlICJoMjY0Y2hyb21hX3RlbXBsYXRlLmMiCisrI3Vu
ZGVmIE9QX1U4X0UySworKyN1bmRlZiBQUkVGSVhfbm9fcm5kX3ZjMV9jaHJvbWFfbWM4X2Uyawor
KworKyNkZWZpbmUgT1BfVThfRTJLICAgICAgICAgICAgICAgICAgICAgICAgICBBVkdfT1BfVThf
RTJLCisrI2RlZmluZSBQUkVGSVhfbm9fcm5kX3ZjMV9jaHJvbWFfbWM4X2UyayAgIGF2Z19ub19y
bmRfdmMxX2Nocm9tYV9tYzhfZTJrCisrI2luY2x1ZGUgImgyNjRjaHJvbWFfdGVtcGxhdGUuYyIK
KysjdW5kZWYgT1BfVThfRTJLCisrI3VuZGVmIFBSRUZJWF9ub19ybmRfdmMxX2Nocm9tYV9tYzhf
ZTJrCisrCisrYXZfY29sZCB2b2lkIGZmX3ZjMWRzcF9pbml0X2UyayhWQzFEU1BDb250ZXh0ICpk
c3ApCisreworKyAgICBpZiAoIUUyS19CQVNFKGF2X2dldF9jcHVfZmxhZ3MoKSkpCisrICAgICAg
ICByZXR1cm47CisrCisrICAgIC8vICFjaGVja2FzbQorKworKyAgICBkc3AtPnZjMV9pbnZfdHJh
bnNfOHg4ID0gdmMxX2ludl90cmFuc184eDhfZTJrOyAvLyBmYXRlIG1zczItd212CisrICAgIGRz
cC0+dmMxX2ludl90cmFuc184eDQgPSB2YzFfaW52X3RyYW5zXzh4NF9lMms7IC8vIGZhdGUgd212
My1kcm0tZGVjCisrICAgIGRzcC0+cHV0X25vX3JuZF92YzFfY2hyb21hX3BpeGVsc190YWJbMF0g
PSBwdXRfbm9fcm5kX3ZjMV9jaHJvbWFfbWM4X2UyazsKKysgICAgZHNwLT5hdmdfbm9fcm5kX3Zj
MV9jaHJvbWFfcGl4ZWxzX3RhYlswXSA9IGF2Z19ub19ybmRfdmMxX2Nocm9tYV9tYzhfZTJrOwor
K30KK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Uyay92aWRlb2RzcC5jIGIvbGliYXZjb2RlYy9l
MmsvdmlkZW9kc3AuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmQ4MzFk
NjgKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29kZWMvZTJrL3ZpZGVvZHNwLmMKK0BAIC0w
LDAgKzEsMzYgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAyMSBJbHlhIEt1cmR5dWtvdiA8
anBlZ3FzQGdtYWlsLmNvbT4gZm9yIEJhc2VBTFQsIEx0ZAorKyAqIENvcHlyaWdodCAoYykgMjAw
My0yMDA0IFJvbWFpbiBEb2xiZWF1CisrICoKKysgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1w
ZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogRkZt
cGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9uZyB3
aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMu
aCIKKysjaW5jbHVkZSAibGliYXZjb2RlYy92aWRlb2RzcC5oIgorKworK3N0YXRpYyB2b2lkIHBy
ZWZldGNoX2Uyayh1aW50OF90ICptZW0sIHB0cmRpZmZfdCBzdHJpZGUsIGludCBoKQorK3sKKysg
ICAgZG8geworKyAgICAgICAgX19idWlsdGluX3ByZWZldGNoKG1lbSk7CisrICAgICAgICBtZW0g
Kz0gc3RyaWRlOworKyAgICB9IHdoaWxlICgtLWgpOworK30KKysKKythdl9jb2xkIHZvaWQgZmZf
dmlkZW9kc3BfaW5pdF9lMmsoVmlkZW9EU1BDb250ZXh0ICpjdHgsIGludCBicGMpCisreworKyAg
ICBjdHgtPnByZWZldGNoID0gcHJlZmV0Y2hfZTJrOworK30KK2RpZmYgLS1naXQgYS9saWJhdmNv
ZGVjL2Uyay92b3JiaXNkc3AuYyBiL2xpYmF2Y29kZWMvZTJrL3ZvcmJpc2RzcC5jCituZXcgZmls
ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uN2E3NjE5ZQorLS0tIC9kZXYvbnVsbAorKysr
IGIvbGliYXZjb2RlYy9lMmsvdm9yYmlzZHNwLmMKK0BAIC0wLDAgKzEsNjIgQEAKKysvKgorKyAq
IENvcHlyaWdodCAoQykgMjAyMSBJbHlhIEt1cmR5dWtvdiA8anBlZ3FzQGdtYWlsLmNvbT4gZm9y
IEJhc2VBTFQsIEx0ZAorKyAqIENvcHlyaWdodCAoYykgMjAwNiBMdWNhIEJhcmJhdG8gPGx1X3pl
cm9AZ2VudG9vLm9yZz4KKysgKgorKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKysg
KgorKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBGRm1wZWcgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZt
cGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0x
MzAxIFVTQQorKyAqLworKworKyNpbmNsdWRlICJjb25maWcuaCIKKysKKysjaW5jbHVkZSAibGli
YXZ1dGlsL2F0dHJpYnV0ZXMuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2NwdS5oIgorKyNpbmNs
dWRlICJsaWJhdnV0aWwvZTJrL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL3V0aWxf
ZTJrLmgiCisrCisrI2luY2x1ZGUgImxpYmF2Y29kZWMvdm9yYmlzZHNwLmgiCisrCisrc3RhdGlj
IHZvaWQgdm9yYmlzX2ludmVyc2VfY291cGxpbmdfZTJrKGZsb2F0ICptYWcsIGZsb2F0ICphbmcs
CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHB0cl90IGJsb2Nr
c2l6ZSkKKyt7CisrICAgIGludCBpOworKyAgICB2ZWNfZiBtLCBhLCB0MCwgdDEsIHplcm92ID0g
X21tX3NldHplcm9fcHMoKTsKKysgICAgdmVjX2Ygc2lnbiA9IF9tbV9jYXN0c2kxMjhfcHMoX21t
X3NldDFfZXBpMzIoMSA8PCAzMSkpOworKworKyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAg
IGZvciAoaSA9IDA7IGkgPCBibG9ja3NpemU7IGkgKz0gNCkgeworKyAgICAgICAgbSA9IF9tbV9s
b2FkX3BzKG1hZyArIGkpOworKyAgICAgICAgYSA9IF9tbV9sb2FkX3BzKGFuZyArIGkpOworKyAg
ICAgICAgdDAgPSBfbW1fY21wbGVfcHMobSwgemVyb3YpOworKyAgICAgICAgdDEgPSBfbW1fY21w
bGVfcHMoYSwgemVyb3YpOworKyAgICAgICAgYSA9IF9tbV94b3JfcHMoYSwgX21tX2FuZF9wcyh0
MCwgc2lnbikpOworKyAgICAgICAgdDAgPSBfbW1fYW5kbm90X3BzKHQxLCBhKTsKKysgICAgICAg
IHQxID0gX21tX2FuZF9wcyh0MSwgYSk7CisrICAgICAgICBhID0gX21tX3N1Yl9wcyhtLCB0MCk7
CisrICAgICAgICBtID0gX21tX2FkZF9wcyhtLCB0MSk7CisrICAgICAgICBfbW1fc3RvcmVfcHMo
YW5nICsgaSwgYSk7CisrICAgICAgICBfbW1fc3RvcmVfcHMobWFnICsgaSwgbSk7CisrICAgIH0K
Kyt9CisrCisrYXZfY29sZCB2b2lkIGZmX3ZvcmJpc2RzcF9pbml0X2UyayhWb3JiaXNEU1BDb250
ZXh0ICpjKQorK3sKKysgICAgaWYgKCFFMktfQkFTRShhdl9nZXRfY3B1X2ZsYWdzKCkpKQorKyAg
ICAgICAgcmV0dXJuOworKworKyAgICAvLyAhY2hlY2thc20KKysgICAgLy8gZmF0ZSB2b3JiaXMt
ZW5jb2RlCisrICAgIGMtPnZvcmJpc19pbnZlcnNlX2NvdXBsaW5nID0gdm9yYmlzX2ludmVyc2Vf
Y291cGxpbmdfZTJrOworK30KK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Uyay92cDNkc3AuYyBi
L2xpYmF2Y29kZWMvZTJrL3ZwM2RzcC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw
MDAwMC4uZjA4NjA5NgorLS0tIC9kZXYvbnVsbAorKysrIGIvbGliYXZjb2RlYy9lMmsvdnAzZHNw
LmMKK0BAIC0wLDAgKzEsMTY5IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWx5YSBL
dXJkeXVrb3YgPGpwZWdxc0BnbWFpbC5jb20+IGZvciBCYXNlQUxULCBMdGQKKysgKiBDb3B5cmln
aHQgKEMpIDIwMDkgRGF2aWQgQ29ucmFkCisrICoKKysgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBG
Rm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICog
RkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9u
ZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2lu
Y2x1ZGUgImNvbmZpZy5oIgorKworKyNpbmNsdWRlICJsaWJhdnV0aWwvYXR0cmlidXRlcy5oIgor
KyNpbmNsdWRlICJsaWJhdnV0aWwvY3B1LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsvY3B1
LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsvdXRpbF9lMmsuaCIKKysKKysjaW5jbHVkZSAi
bGliYXZjb2RlYy92cDNkc3AuaCIKKysKKysjZGVmaW5lIElEQ1RfU1RBUlQoZXh0cmEpIFwKKysg
ICAgdmVjX3MxNiBBLCBCLCBDLCBELCBBZCwgQmQsIENkLCBEZCwgRSwgRiwgRywgSDsgXAorKyAg
ICB2ZWNfczE2IEVkLCBHZCwgQWRkLCBCZGQsIEZkLCBIZDsgXAorKyAgICB2ZWNfczE2IGFkZHYg
PSBfbW1fc2V0MV9lcGkxNihleHRyYSArIDgpOyBcCisrICAgIFwKKysgICAgdmVjX3MxNiBDMSA9
IF9tbV9zZXQxX2VwaTE2KDY0Mjc3KTsgXAorKyAgICB2ZWNfczE2IEMyID0gX21tX3NldDFfZXBp
MTYoNjA1NDcpOyBcCisrICAgIHZlY19zMTYgQzMgPSBfbW1fc2V0MV9lcGkxNig1NDQ5MSk7IFwK
KysgICAgdmVjX3MxNiBDNCA9IF9tbV9zZXQxX2VwaTE2KDQ2MzQxKTsgXAorKyAgICB2ZWNfczE2
IEM1ID0gX21tX3NldDFfZXBpMTYoMzY0MTApOyBcCisrICAgIHZlY19zMTYgQzYgPSBfbW1fc2V0
MV9lcGkxNigyNTA4MCk7IFwKKysgICAgdmVjX3MxNiBDNyA9IF9tbV9zZXQxX2VwaTE2KDEyNzg1
KTsgXAorKyAgICBcCisrICAgIHZlY19zMTYgYjAgPSBWRUNfTEQoYmxvY2sgKyA4ICogMCk7IFwK
KysgICAgdmVjX3MxNiBiMSA9IFZFQ19MRChibG9jayArIDggKiAxKTsgXAorKyAgICB2ZWNfczE2
IGIyID0gVkVDX0xEKGJsb2NrICsgOCAqIDIpOyBcCisrICAgIHZlY19zMTYgYjMgPSBWRUNfTEQo
YmxvY2sgKyA4ICogMyk7IFwKKysgICAgdmVjX3MxNiBiNCA9IFZFQ19MRChibG9jayArIDggKiA0
KTsgXAorKyAgICB2ZWNfczE2IGI1ID0gVkVDX0xEKGJsb2NrICsgOCAqIDUpOyBcCisrICAgIHZl
Y19zMTYgYjYgPSBWRUNfTEQoYmxvY2sgKyA4ICogNik7IFwKKysgICAgdmVjX3MxNiBiNyA9IFZF
Q19MRChibG9jayArIDggKiA3KTsKKysKKysvLyB0aGVzZSBmdW5jdGlvbnMgZG8gKGEqQyk+PjE2
CisrLy8gdGhpbmdzIGFyZSB0cmlja3kgYmVjYXVzZSBhIGlzIHNpZ25lZCwgYnV0IEMgdW5zaWdu
ZWQuCisrLy8gTTE1IGlzIHVzZWQgaWYgQyBmaXRzIGluIDE1IGJpdCB1bnNpZ25lZCAoQzYsQzcp
CisrLy8gTTE2IGlzIHVzZWQgaWYgQyByZXF1aXJlcyAxNiBiaXRzIHVuc2lnbmVkCisrI2RlZmlu
ZSBNMTUoYSwgQykgX21tX211bGhpX2VwaTE2KGEsIEMpCisrI2RlZmluZSBNMTYoYSwgQykgX21t
X2FkZF9lcGkxNihhLCBNMTUoYSwgQykpCisrCisrI2RlZmluZSBJRENUXzFEKEFERCwgU0hJRlQp
XAorKyAgICBBID0gX21tX2FkZF9lcGkxNihNMTYoYjEsIEMxKSwgTTE1KGI3LCBDNykpOyBcCisr
ICAgIEIgPSBfbW1fc3ViX2VwaTE2KE0xNShiMSwgQzcpLCBNMTYoYjcsIEMxKSk7IFwKKysgICAg
QyA9IF9tbV9hZGRfZXBpMTYoTTE2KGIzLCBDMyksIE0xNihiNSwgQzUpKTsgXAorKyAgICBEID0g
X21tX3N1Yl9lcGkxNihNMTYoYjUsIEMzKSwgTTE2KGIzLCBDNSkpOyBcCisrICAgIFwKKysgICAg
QWQgPSBNMTYoX21tX3N1Yl9lcGkxNihBLCBDKSwgQzQpOyBcCisrICAgIEJkID0gTTE2KF9tbV9z
dWJfZXBpMTYoQiwgRCksIEM0KTsgXAorKyAgICBcCisrICAgIENkID0gX21tX2FkZF9lcGkxNihB
LCBDKTsgXAorKyAgICBEZCA9IF9tbV9hZGRfZXBpMTYoQiwgRCk7IFwKKysgICAgXAorKyAgICBF
ID0gQUREKE0xNihfbW1fYWRkX2VwaTE2KGIwLCBiNCksIEM0KSk7IFwKKysgICAgRiA9IEFERChN
MTYoX21tX3N1Yl9lcGkxNihiMCwgYjQpLCBDNCkpOyBcCisrICAgIFwKKysgICAgRyA9IF9tbV9h
ZGRfZXBpMTYoTTE2KGIyLCBDMiksIE0xNShiNiwgQzYpKTsgXAorKyAgICBIID0gX21tX3N1Yl9l
cGkxNihNMTUoYjIsIEM2KSwgTTE2KGI2LCBDMikpOyBcCisrICAgIFwKKysgICAgRWQgPSBfbW1f
c3ViX2VwaTE2KEUsIEcpOyBcCisrICAgIEdkID0gX21tX2FkZF9lcGkxNihFLCBHKTsgXAorKyAg
ICBcCisrICAgIEFkZCA9IF9tbV9hZGRfZXBpMTYoRiwgQWQpOyBcCisrICAgIEJkZCA9IF9tbV9z
dWJfZXBpMTYoQmQsIEgpOyBcCisrICAgIFwKKysgICAgRmQgPSBfbW1fc3ViX2VwaTE2KEYsIEFk
KTsgXAorKyAgICBIZCA9IF9tbV9hZGRfZXBpMTYoQmQsIEgpOyBcCisrICAgIFwKKysgICAgYjAg
PSBTSElGVChfbW1fYWRkX2VwaTE2KEdkLCBDZCkpOyBcCisrICAgIGI3ID0gU0hJRlQoX21tX3N1
Yl9lcGkxNihHZCwgQ2QpKTsgXAorKyAgICBcCisrICAgIGIxID0gU0hJRlQoX21tX2FkZF9lcGkx
NihBZGQsIEhkKSk7IFwKKysgICAgYjIgPSBTSElGVChfbW1fc3ViX2VwaTE2KEFkZCwgSGQpKTsg
XAorKyAgICBcCisrICAgIGIzID0gU0hJRlQoX21tX2FkZF9lcGkxNihFZCwgRGQpKTsgXAorKyAg
ICBiNCA9IFNISUZUKF9tbV9zdWJfZXBpMTYoRWQsIERkKSk7IFwKKysgICAgXAorKyAgICBiNSA9
IFNISUZUKF9tbV9hZGRfZXBpMTYoRmQsIEJkZCkpOyBcCisrICAgIGI2ID0gU0hJRlQoX21tX3N1
Yl9lcGkxNihGZCwgQmRkKSk7CisrCisrI2RlZmluZSBOT1AoYSkgYQorKyNkZWZpbmUgQUREOChh
KSBfbW1fYWRkX2VwaTE2KGEsIGFkZHYpCisrI2RlZmluZSBTSElGVDQoYSkgX21tX3NyYWlfZXBp
MTYoYSwgNCkKKysKKytzdGF0aWMgdm9pZCB2cDNfaWRjdF9wdXRfZTJrKHVpbnQ4X3QgKmRzdCwg
cHRyZGlmZl90IHN0cmlkZSwgaW50MTZfdCBibG9ja1s2NF0pCisreworKyAgICB2ZWNfdTggdmRz
dDsKKysgICAgSURDVF9TVEFSVCgyMDQ4KQorKworKyAgICBJRENUXzFEKE5PUCwgTk9QKQorKyAg
ICBUUkFOU1BPU0U4KGIwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNyk7CisrICAgIElEQ1Rf
MUQoQUREOCwgU0hJRlQ0KQorKworKyNkZWZpbmUgUFVUKGEpIFwKKysgICAgdmRzdCA9IF9tbV9w
YWNrdXNfZXBpMTYoYSwgYSk7IFwKKysgICAgVkVDX1NUTChkc3QsIHZkc3QpOworKworKyAgICBQ
VVQoYjApICAgICBkc3QgKz0gc3RyaWRlOworKyAgICBQVVQoYjEpICAgICBkc3QgKz0gc3RyaWRl
OworKyAgICBQVVQoYjIpICAgICBkc3QgKz0gc3RyaWRlOworKyAgICBQVVQoYjMpICAgICBkc3Qg
Kz0gc3RyaWRlOworKyAgICBQVVQoYjQpICAgICBkc3QgKz0gc3RyaWRlOworKyAgICBQVVQoYjUp
ICAgICBkc3QgKz0gc3RyaWRlOworKyAgICBQVVQoYjYpICAgICBkc3QgKz0gc3RyaWRlOworKyAg
ICBQVVQoYjcpCisrICAgIG1lbXNldChibG9jaywgMCwgc2l6ZW9mKCpibG9jaykgKiA2NCk7Cisr
fQorKworK3N0YXRpYyB2b2lkIHZwM19pZGN0X2FkZF9lMmsodWludDhfdCAqZHN0LCBwdHJkaWZm
X3Qgc3RyaWRlLCBpbnQxNl90IGJsb2NrWzY0XSkKKyt7CisrICAgIExPQURfWkVSTzsKKysgICAg
dmVjX3U4IHZkc3Q7CisrICAgIHZlY19zMTYgdmRzdF8xNjsKKysKKysgICAgSURDVF9TVEFSVCgw
KQorKworKyAgICBJRENUXzFEKE5PUCwgTk9QKQorKyAgICBUUkFOU1BPU0U4KGIwLCBiMSwgYjIs
IGIzLCBiNCwgYjUsIGI2LCBiNyk7CisrICAgIElEQ1RfMUQoQUREOCwgU0hJRlQ0KQorKworKyNk
ZWZpbmUgQUREKGEpIFwKKysgICAgdmRzdCA9IFZFQ19MRDgoZHN0KTsgXAorKyAgICB2ZHN0XzE2
ID0gX21tX3VucGFja2xvX2VwaTgodmRzdCwgemVyb3YpOyBcCisrICAgIHZkc3RfMTYgPSBfbW1f
YWRkc19lcGkxNihhLCB2ZHN0XzE2KTsgXAorKyAgICB2ZHN0ID0gX21tX3BhY2t1c19lcGkxNih2
ZHN0XzE2LCB2ZHN0XzE2KTsgXAorKyAgICBWRUNfU1RMKGRzdCwgdmRzdCk7CisrCisrICAgIEFE
RChiMCkgICAgIGRzdCArPSBzdHJpZGU7CisrICAgIEFERChiMSkgICAgIGRzdCArPSBzdHJpZGU7
CisrICAgIEFERChiMikgICAgIGRzdCArPSBzdHJpZGU7CisrICAgIEFERChiMykgICAgIGRzdCAr
PSBzdHJpZGU7CisrICAgIEFERChiNCkgICAgIGRzdCArPSBzdHJpZGU7CisrICAgIEFERChiNSkg
ICAgIGRzdCArPSBzdHJpZGU7CisrICAgIEFERChiNikgICAgIGRzdCArPSBzdHJpZGU7CisrICAg
IEFERChiNykKKysgICAgbWVtc2V0KGJsb2NrLCAwLCBzaXplb2YoKmJsb2NrKSAqIDY0KTsKKyt9
CisrCisrYXZfY29sZCB2b2lkIGZmX3ZwM2RzcF9pbml0X2UyayhWUDNEU1BDb250ZXh0ICpjLCBp
bnQgZmxhZ3MpCisreworKyAgICBpZiAoIUUyS19CQVNFKGF2X2dldF9jcHVfZmxhZ3MoKSkpCisr
ICAgICAgICByZXR1cm47CisrCisrICAgIC8vICFjaGVja2FzbQorKyAgICAvLyBmYXRlIHRoZW9y
YS1jb2VmZi1sZXZlbDY0CisrCisrICAgIGMtPmlkY3RfcHV0ID0gdnAzX2lkY3RfcHV0X2UyazsK
KysgICAgYy0+aWRjdF9hZGQgPSB2cDNfaWRjdF9hZGRfZTJrOworK30KK2RpZmYgLS1naXQgYS9s
aWJhdmNvZGVjL2Uyay92cDhkc3AuYyBiL2xpYmF2Y29kZWMvZTJrL3ZwOGRzcC5jCituZXcgZmls
ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNjFiNDZiMworLS0tIC9kZXYvbnVsbAorKysr
IGIvbGliYXZjb2RlYy9lMmsvdnA4ZHNwLmMKK0BAIC0wLDAgKzEsNDI4IEBACisrLyoKKysgKiBW
UDggY29tcGF0aWJsZSB2aWRlbyBkZWNvZGVyCisrICoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
SWx5YSBLdXJkeXVrb3YgPGpwZWdxc0BnbWFpbC5jb20+IGZvciBCYXNlQUxULCBMdGQKKysgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgRGF2aWQgQ29ucmFkCisrICoKKysgKiBUaGlzIGZpbGUgaXMgcGFy
dCBvZiBGRm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAq
CisrICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5z
ZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
KyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaW5jbHVkZSAiY29uZmlnLmgiCisr
CisrI2luY2x1ZGUgImxpYmF2dXRpbC9jcHUuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL21lbS5o
IgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwv
ZTJrL3V0aWxfZTJrLmgiCisrCisrI2luY2x1ZGUgImxpYmF2Y29kZWMvdnA4ZHNwLmgiCisrCisr
I2luY2x1ZGUgImhwZWxkc3AuaCIKKysKKysjZGVmaW5lIFJFUFQ0KGEsIGIsIGMsIGQpIHsgYSwg
YiwgYywgZCwgIGEsIGIsIGMsIGQsICBhLCBiLCBjLCBkLCAgYSwgYiwgYywgZCB9CisrCisrLy8g
aCBzdWJwZWwgZmlsdGVyIHVzZXMgbXN1bSB0byBtdWx0aXBseSthZGQgNCBwaXhlbCB0YXBzIGF0
IG9uY2UKKytzdGF0aWMgY29uc3QgdWludDhfdCBBTElHTkVEKDE2KSBoX3N1YnBlbF9maWx0ZXJz
X2lubmVyWzddWzE2XSA9CisreworKyAgICBSRVBUNCggLTYsIDEyMywgIDEyLCAgLTEpLAorKyAg
ICBSRVBUNCgtMTEsIDEwOCwgIDM2LCAgLTgpLAorKyAgICBSRVBUNCggLTksICA5MywgIDUwLCAg
LTYpLAorKyAgICBSRVBUNCgtMTYsICA3NywgIDc3LCAtMTYpLAorKyAgICBSRVBUNCggLTYsICA1
MCwgIDkzLCAgLTkpLAorKyAgICBSRVBUNCggLTgsICAzNiwgMTA4LCAtMTEpLAorKyAgICBSRVBU
NCggLTEsICAxMiwgMTIzLCAgLTYpCisrfTsKKysKKysvLyBmb3IgNnRhcCBmaWx0ZXJzLCB0aGVz
ZSBhcmUgdGhlIG91dGVyIHR3byB0YXBzCisrLy8gVGhlIHplcm9zIG1hc2sgb2ZmIHBpeGVscyA0
LTcgd2hlbiBmaWx0ZXJpbmcgMC0zCisrLy8gYW5kIHZpY2UtdmVyc2EKKytzdGF0aWMgY29uc3Qg
dWludDhfdCBBTElHTkVEKDE2KSBoX3N1YnBlbF9maWx0ZXJzX291dGVyWzNdWzE2XSA9Cisrewor
KyAgICBSRVBUNCgyLCAxLCAyLCAxKSwKKysgICAgUkVQVDQoMywgMywgMywgMyksCisrICAgIFJF
UFQ0KDEsIDIsIDEsIDIpCisrfTsKKysKKysjZGVmaW5lIElOTkVSX1BFUk0oeCkgeCwgeCsxLCB4
KzIsIHgrMywgeCsxLCB4KzIsIHgrMywgeCs0CisrCisrI2RlZmluZSBJTklUX0hfU1VCUEVMX0ZJ
TFRFUihqLCBuLCBpczZ0YXApIFwKKysgICAgdmVjX3M4IGZpbHRlcl9pbm5lciA9ICooX19tMTI4
aSopaF9zdWJwZWxfZmlsdGVyc19pbm5lcltqXTsgXAorKyAgICBpczZ0YXAoIFwKKysgICAgICAg
IHZlY19zOCBmaWx0ZXJfb3V0ZXIgPSAqKF9fbTEyOGkqKWhfc3VicGVsX2ZpbHRlcnNfb3V0ZXJb
KGopID4+IDFdOyBcCisrICAgICAgICB2ZWNfdTggcGVybV9vdXRlciA9IF9tbV9zZXRyX2VwaTgo
MCw1LCAxLDYsIDIsNywgMyw4LCA0LDksIDUsMTAsIDYsMTEsIDcsMTIpOyBcCisrICAgICkgXAor
KyAgICB2ZWNfczMyIGM2NCA9IF9tbV9zZXQxX2VwaTE2KDY0KTsgXAorKyAgICB2ZWNfdTggcGVy
bV9pbm5lcl9sID0gX21tX3NldHJfZXBpOChJTk5FUl9QRVJNKG4pLCBJTk5FUl9QRVJNKG4gKyAy
KSk7IFwKKysgICAgdmVjX3U4IHBlcm1faW5uZXJfaCA9IF9tbV9zZXRyX2VwaTgoSU5ORVJfUEVS
TShuICsgNCksIElOTkVSX1BFUk0obiArIDYpKTsgXAorKyAgICBfX20xMjhpIHYwLCB2MTsgXAor
KyAgICBpbnQgaQorKworKyNkZWZpbmUgRklMVEVSX0goYSwgaXM2dGFwKSBcCisrICAgIHYwID0g
X21tX3NodWZmbGVfZXBpOChhLCBwZXJtX2lubmVyX2wpOyBcCisrICAgIHYxID0gX21tX3NodWZm
bGVfZXBpOChhLCBwZXJtX2lubmVyX2gpOyBcCisrICAgIHYwID0gX21tX21hZGR1YnNfZXBpMTYo
djAsIGZpbHRlcl9pbm5lcik7IFwKKysgICAgdjEgPSBfbW1fbWFkZHVic19lcGkxNih2MSwgZmls
dGVyX2lubmVyKTsgXAorKyAgICB2MCA9IF9tbV9oYWRkc19lcGkxNih2MCwgdjEpOyBcCisrICAg
IGlzNnRhcCggXAorKyAgICAgICAgYSA9IF9tbV9zaHVmZmxlX2VwaTgoYSwgcGVybV9vdXRlcik7
IFwKKysgICAgICAgIHYwID0gX21tX2FkZHNfZXBpMTYodjAsIF9tbV9tYWRkdWJzX2VwaTE2KGEs
IGZpbHRlcl9vdXRlcikpOyBcCisrICAgICkgXAorKyAgICB2MCA9IF9tbV9hZGRzX2VwaTE2KHYw
LCBjNjQpOyBcCisrICAgIGEgPSBfbW1fc3JhaV9lcGkxNih2MCwgNykKKysKKysjZGVmaW5lIElO
SVRfSF9TVUJQRUxfRklMVEVSNChqLCBuLCBpczZ0YXApIFwKKysgICAgX19tNjQgZmlsdGVyX2lu
bmVyID0gKihfX202NCopaF9zdWJwZWxfZmlsdGVyc19pbm5lcltqXTsgXAorKyAgICBpczZ0YXAo
IFwKKysgICAgICAgIF9fbTY0IGZpbHRlcl9vdXRlciA9ICooX19tNjQqKWhfc3VicGVsX2ZpbHRl
cnNfb3V0ZXJbKGopID4+IDFdOyBcCisrICAgICAgICBfX202NCBwZXJtX291dGVyID0gX21tX3Nl
dHJfcGk4KDAsNSwgMSw2LCAyLDcsIDMsOCk7IFwKKysgICAgICAgIF9fbTY0IGExOyBcCisrICAg
ICkgXAorKyAgICBfX202NCBjNjQgPSBfbW1fc2V0MV9waTE2KDY0KTsgXAorKyAgICBfX202NCBw
ZXJtX2lubmVyX2wgPSBfbW1fc2V0cl9waTgoSU5ORVJfUEVSTShuKSk7IFwKKysgICAgX19tNjQg
cGVybV9pbm5lcl9oID0gX21tX3NldHJfcGk4KElOTkVSX1BFUk0obiArIDIpKTsgXAorKyAgICBf
X202NCB2MCwgdjEsIGEwOyBcCisrICAgIGludCBpCisrCisrI2RlZmluZSBGSUxURVJfSDQoaXM2
dGFwKSBcCisrICAgIHYwID0gX21tX3NodWZmbGVfcGk4KGEwLCBwZXJtX2lubmVyX2wpOyBcCisr
ICAgIHYxID0gX21tX3NodWZmbGVfcGk4KGEwLCBwZXJtX2lubmVyX2gpOyBcCisrICAgIHYwID0g
X21tX21hZGR1YnNfcGkxNih2MCwgZmlsdGVyX2lubmVyKTsgXAorKyAgICB2MSA9IF9tbV9tYWRk
dWJzX3BpMTYodjEsIGZpbHRlcl9pbm5lcik7IFwKKysgICAgdjAgPSBfbW1faGFkZHNfcGkxNih2
MCwgdjEpOyBcCisrICAgIGlzNnRhcCggXAorKyAgICAgICAgYTAgPSBfbW1fc2h1ZmZsZTJfcGk4
KGEwLCBhMSwgcGVybV9vdXRlcik7IFwKKysgICAgICAgIHYwID0gX21tX2FkZHNfcGkxNih2MCwg
X21tX21hZGR1YnNfcGkxNihhMCwgZmlsdGVyX291dGVyKSk7IFwKKysgICAgKSBcCisrICAgIHYw
ID0gX21tX2FkZHNfcGkxNih2MCwgYzY0KTsgXAorKyAgICBhMCA9IF9tbV9zcmFpX3BpMTYodjAs
IDcpOyBcCisrICAgIGEwID0gX21tX3BhY2tzX3B1MTYoYTAsIGEwKTsgXAorKyAgICAqKHVpbnQz
Ml90Kilkc3QgPSBfbW1fY3Z0c2k2NF9zaTMyKGEwKQorKworKyNkZWZpbmUgQ09QWShjb2RlKSBj
b2RlCisrI2RlZmluZSBOT1AoY29kZSkKKysjZGVmaW5lIElGNlRBUChjb2RlKSBjb2RlCisrCisr
c3RhdGljIHZvaWQgcHV0X3ZwOF9lcGVsMTZfaDZfZTJrKHVpbnQ4X3QgKmRzdCwgcHRyZGlmZl90
IGRzdF9zdHJpZGUsIHVpbnQ4X3QgKnNyYywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHRyZGlmZl90IHNyY19zdHJpZGUsIGludCBoLCBpbnQgbXgsIGludCBteSkKKyt7Cisr
ICAgIElOSVRfSF9TVUJQRUxfRklMVEVSKG14IC0gMSwgMSwgSUY2VEFQKTsKKysgICAgX19tMTI4
aSBhMCwgYTE7CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9yIChpID0gMDsg
aSA8IGg7IGkrKykgeworKyAgICAgICAgYTAgPSBWRUNfTEQoc3JjIC0gMik7CisrICAgICAgICBh
MSA9IFZFQ19MRChzcmMgLSAyICsgOCk7CisrICAgICAgICBGSUxURVJfSChhMCwgSUY2VEFQKTsK
KysgICAgICAgIEZJTFRFUl9IKGExLCBJRjZUQVApOworKyAgICAgICAgYTAgPSBfbW1fcGFja3Vz
X2VwaTE2KGEwLCBhMSk7CisrICAgICAgICBWRUNfU1QoZHN0LCBhMCk7CisrICAgICAgICBzcmMg
Kz0gc3JjX3N0cmlkZTsKKysgICAgICAgIGRzdCArPSBkc3Rfc3RyaWRlOworKyAgICB9CisrfQor
KworK3N0YXRpYyB2b2lkIHB1dF92cDhfZXBlbDhfaDZfZTJrKHVpbnQ4X3QgKmRzdCwgcHRyZGlm
Zl90IGRzdF9zdHJpZGUsIHVpbnQ4X3QgKnNyYywKKysgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHRyZGlmZl90IHNyY19zdHJpZGUsIGludCBoLCBpbnQgbXgsIGludCBteSkKKyt7
CisrICAgIElOSVRfSF9TVUJQRUxfRklMVEVSKG14IC0gMSwgMSwgSUY2VEFQKTsKKysgICAgX19t
MTI4aSBhMDsKKysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAgICBmb3IgKGkgPSAwOyBp
IDwgaDsgaSsrKSB7CisrICAgICAgICBhMCA9IFZFQ19MRChzcmMgLSAyKTsKKysgICAgICAgIEZJ
TFRFUl9IKGEwLCBJRjZUQVApOworKyAgICAgICAgYTAgPSBfbW1fcGFja3VzX2VwaTE2KGEwLCBh
MCk7CisrICAgICAgICBWRUNfU1RMKGRzdCwgYTApOworKyAgICAgICAgc3JjICs9IHNyY19zdHJp
ZGU7CisrICAgICAgICBkc3QgKz0gZHN0X3N0cmlkZTsKKysgICAgfQorK30KKysKKytzdGF0aWMg
dm9pZCBwdXRfdnA4X2VwZWw4X2g0X2Uyayh1aW50OF90ICpkc3QsIHB0cmRpZmZfdCBkc3Rfc3Ry
aWRlLCB1aW50OF90ICpzcmMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0
cmRpZmZfdCBzcmNfc3RyaWRlLCBpbnQgaCwgaW50IG14LCBpbnQgbXkpCisreworKyAgICBJTklU
X0hfU1VCUEVMX0ZJTFRFUihteCAtIDEsIDAsIE5PUCk7CisrICAgIF9fbTEyOGkgYTA7CisrCisr
ICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9yIChpID0gMDsgaSA8IGg7IGkrKykgewor
KyAgICAgICAgYTAgPSBWRUNfTEQoc3JjIC0gMSk7CisrICAgICAgICBGSUxURVJfSChhMCwgTk9Q
KTsKKysgICAgICAgIGEwID0gX21tX3BhY2t1c19lcGkxNihhMCwgYTApOworKyAgICAgICAgVkVD
X1NUTChkc3QsIGEwKTsKKysgICAgICAgIHNyYyArPSBzcmNfc3RyaWRlOworKyAgICAgICAgZHN0
ICs9IGRzdF9zdHJpZGU7CisrICAgIH0KKyt9CisrCisrc3RhdGljIHZvaWQgcHV0X3ZwOF9lcGVs
NF9oNl9lMmsodWludDhfdCAqZHN0LCBwdHJkaWZmX3QgZHN0X3N0cmlkZSwgdWludDhfdCAqc3Jj
LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3JjX3N0cmlk
ZSwgaW50IGgsIGludCBteCwgaW50IG15KQorK3sKKysgICAgSU5JVF9IX1NVQlBFTF9GSUxURVI0
KG14IC0gMSwgMSwgSUY2VEFQKTsKKysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAgICBm
b3IgKGkgPSAwOyBpIDwgaDsgaSsrKSB7CisrICAgICAgICBhMCA9ICooX19tNjQqKShzcmMgLSAy
KTsKKysgICAgICAgIGExID0gX21tX2N2dHNpMzJfc2k2NChzcmNbOCAtIDJdKTsKKysgICAgICAg
IEZJTFRFUl9INChJRjZUQVApOworKyAgICAgICAgc3JjICs9IHNyY19zdHJpZGU7CisrICAgICAg
ICBkc3QgKz0gZHN0X3N0cmlkZTsKKysgICAgfQorK30KKysKKytzdGF0aWMgdm9pZCBwdXRfdnA4
X2VwZWw0X2g0X2Uyayh1aW50OF90ICpkc3QsIHB0cmRpZmZfdCBkc3Rfc3RyaWRlLCB1aW50OF90
ICpzcmMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzcmNf
c3RyaWRlLCBpbnQgaCwgaW50IG14LCBpbnQgbXkpCisreworKyAgICBJTklUX0hfU1VCUEVMX0ZJ
TFRFUjQobXggLSAxLCAwLCBOT1ApOworKworKyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAg
IGZvciAoaSA9IDA7IGkgPCBoOyBpKyspIHsKKysgICAgICAgIGEwID0gKihfX202NCopKHNyYyAt
IDEpOworKyAgICAgICAgRklMVEVSX0g0KE5PUCk7CisrICAgICAgICBzcmMgKz0gc3JjX3N0cmlk
ZTsKKysgICAgICAgIGRzdCArPSBkc3Rfc3RyaWRlOworKyAgICB9CisrfQorKworKyNkZWZpbmUg
UEFJUl84WDIoYSwgYikgKGEgJiAyNTUpIHwgYiAqIDI1NgorK3N0YXRpYyBjb25zdCBpbnQxNl90
IHZfc3VicGVsX2ZpbHRlcnNbN11bM10gPQorK3sKKysgICAgeyBQQUlSXzhYMiggLTYsIDEyMyks
IFBBSVJfOFgyKCAxMiwgIC0xKSwgUEFJUl84WDIoMCwgMCkgfSwKKysgICAgeyBQQUlSXzhYMigt
MTEsIDEwOCksIFBBSVJfOFgyKCAzNiwgIC04KSwgUEFJUl84WDIoMiwgMSkgfSwKKysgICAgeyBQ
QUlSXzhYMiggLTksICA5MyksIFBBSVJfOFgyKCA1MCwgIC02KSwgUEFJUl84WDIoMCwgMCkgfSwK
KysgICAgeyBQQUlSXzhYMigtMTYsICA3NyksIFBBSVJfOFgyKCA3NywgLTE2KSwgUEFJUl84WDIo
MywgMykgfSwKKysgICAgeyBQQUlSXzhYMiggLTYsICA1MCksIFBBSVJfOFgyKCA5MywgIC05KSwg
UEFJUl84WDIoMCwgMCkgfSwKKysgICAgeyBQQUlSXzhYMiggLTgsICAzNiksIFBBSVJfOFgyKDEw
OCwgLTExKSwgUEFJUl84WDIoMSwgMikgfSwKKysgICAgeyBQQUlSXzhYMiggLTEsICAxMiksIFBB
SVJfOFgyKDEyMywgIC02KSwgUEFJUl84WDIoMCwgMCkgfQorK307CisrCisrI2RlZmluZSBJTklU
X1ZfU1VCUEVMX0ZJTFRFUihwLCB0eXBlLCBqLCBpczZ0YXApIFwKKysgICAgdHlwZSB2MCwgdjEs
IHIwOyBcCisrICAgIHR5cGUgYzY0ID0gX21tX3NldDFfIyNwKDY0KTsgXAorKyAgICB0eXBlIGYw
ID0gX21tX3NldDFfIyNwKHZfc3VicGVsX2ZpbHRlcnNbal1bMF0pOyBcCisrICAgIHR5cGUgZjEg
PSBfbW1fc2V0MV8jI3Aodl9zdWJwZWxfZmlsdGVyc1tqXVsxXSk7IFwKKysgICAgaXM2dGFwKHR5
cGUgZjIgPSBfbW1fc2V0MV8jI3Aodl9zdWJwZWxfZmlsdGVyc1tqXVsyXSk7KSBcCisrICAgIGlu
dCBpCisrCisrI2RlZmluZSBGSUxURVJfVihwLCBkc3R2LCBsbywgQ1ZULCBpczZ0YXApIFwKKysg
ICAgdjAgPSBfbW1fbWFkZHVic18jI3AoX21tX3VucGFjayMjbG8oQ1ZUKHMxKSwgQ1ZUKHMyKSks
IGYwKTsgXAorKyAgICB2MSA9IF9tbV9tYWRkdWJzXyMjcChfbW1fdW5wYWNrIyNsbyhDVlQoczMp
LCBDVlQoczQpKSwgZjEpOyBcCisrICAgIHYwID0gX21tX2FkZHNfIyNwKHYwLCB2MSk7IFwKKysg
ICAgaXM2dGFwKCBcCisrICAgICAgICB2MSA9IF9tbV9tYWRkdWJzXyMjcChfbW1fdW5wYWNrIyNs
byhDVlQoczApLCBDVlQoczUpKSwgZjIpOyBcCisrICAgICAgICB2MCA9IF9tbV9hZGRzXyMjcCh2
MCwgdjEpOyBcCisrICAgICkgXAorKyAgICB2MCA9IF9tbV9hZGRzXyMjcCh2MCwgYzY0KTsgXAor
KyAgICBkc3R2ID0gX21tX3NyYWlfIyNwKHYwLCA3KQorKworK3N0YXRpYyB2b2lkIHB1dF92cDhf
ZXBlbDE2X3Y2X2Uyayh1aW50OF90ICpkc3QsIHB0cmRpZmZfdCBkc3Rfc3RyaWRlLCB1aW50OF90
ICpzcmMsIAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3Jj
X3N0cmlkZSwgaW50IGgsIGludCBteCwgaW50IG15KQorK3sKKysgICAgSU5JVF9WX1NVQlBFTF9G
SUxURVIoZXBpMTYsIF9fbTEyOGksIG15IC0gMSwgSUY2VEFQKTsKKysgICAgX19tMTI4aSBzMCwg
czEsIHMyLCBzMywgczQsIHM1OworKworKyAgICBzMCA9IFZFQ19MRChzcmMgLSAyICogc3JjX3N0
cmlkZSk7CisrICAgIHMxID0gVkVDX0xEKHNyYyAtIDEgKiBzcmNfc3RyaWRlKTsKKysgICAgczIg
PSBWRUNfTEQoc3JjKTsKKysgICAgczMgPSBWRUNfTEQoc3JjICsgMSAqIHNyY19zdHJpZGUpOwor
KyAgICBzNCA9IFZFQ19MRChzcmMgKyAyICogc3JjX3N0cmlkZSk7CisrICAgIHNyYyArPSBzcmNf
c3RyaWRlICogMzsKKysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAgICBmb3IgKGkgPSAw
OyBpIDwgaDsgaSsrKSB7CisrICAgICAgICBzNSA9IFZFQ19MRChzcmMpOworKyAgICAgICAgRklM
VEVSX1YoZXBpMTYsIHIwLCBsb19lcGk4LCBDT1BZLCBJRjZUQVApOworKyAgICAgICAgRklMVEVS
X1YoZXBpMTYsIHYwLCBoaV9lcGk4LCBDT1BZLCBJRjZUQVApOworKyAgICAgICAgcjAgPSBfbW1f
cGFja3VzX2VwaTE2KHIwLCB2MCk7CisrICAgICAgICBWRUNfU1QoZHN0LCByMCk7CisrICAgICAg
ICBzMCA9IHMxOyBzMSA9IHMyOyBzMiA9IHMzOyBzMyA9IHM0OyBzNCA9IHM1OworKyAgICAgICAg
ZHN0ICs9IGRzdF9zdHJpZGU7CisrICAgICAgICBzcmMgKz0gc3JjX3N0cmlkZTsKKysgICAgfQor
K30KKysKKytzdGF0aWMgdm9pZCBwdXRfdnA4X2VwZWw4X3Y2X2Uyayh1aW50OF90ICpkc3QsIHB0
cmRpZmZfdCBkc3Rfc3RyaWRlLCB1aW50OF90ICpzcmMsIAorKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB0cmRpZmZfdCBzcmNfc3RyaWRlLCBpbnQgaCwgaW50IG14LCBpbnQgbXkp
CisreworKyAgICBJTklUX1ZfU1VCUEVMX0ZJTFRFUihlcGkxNiwgX19tMTI4aSwgbXkgLSAxLCBJ
RjZUQVApOworKyAgICBfX202NCBzMCwgczEsIHMyLCBzMywgczQsIHM1OworKworKyAgICBzMCA9
ICooX19tNjQqKShzcmMgLSAyICogc3JjX3N0cmlkZSk7CisrICAgIHMxID0gKihfX202NCopKHNy
YyAtIDEgKiBzcmNfc3RyaWRlKTsKKysgICAgczIgPSAqKF9fbTY0KilzcmM7CisrICAgIHMzID0g
KihfX202NCopKHNyYyArIDEgKiBzcmNfc3RyaWRlKTsKKysgICAgczQgPSAqKF9fbTY0Kikoc3Jj
ICsgMiAqIHNyY19zdHJpZGUpOworKyAgICBzcmMgKz0gc3JjX3N0cmlkZSAqIDM7CisrCisrICAg
IFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9yIChpID0gMDsgaSA8IGg7IGkrKykgeworKyAg
ICAgICAgczUgPSAqKF9fbTY0KilzcmM7CisrICAgICAgICBGSUxURVJfVihlcGkxNiwgcjAsIGxv
X2VwaTgsIF9tbV9tb3ZwaTY0X2VwaTY0LCBJRjZUQVApOworKyAgICAgICAgcjAgPSBfbW1fcGFj
a3VzX2VwaTE2KHIwLCByMCk7CisrICAgICAgICBWRUNfU1RMKGRzdCwgcjApOworKyAgICAgICAg
czAgPSBzMTsgczEgPSBzMjsgczIgPSBzMzsgczMgPSBzNDsgczQgPSBzNTsKKysgICAgICAgIGRz
dCArPSBkc3Rfc3RyaWRlOworKyAgICAgICAgc3JjICs9IHNyY19zdHJpZGU7CisrICAgIH0KKyt9
CisrCisrc3RhdGljIHZvaWQgcHV0X3ZwOF9lcGVsNF92Nl9lMmsodWludDhfdCAqZHN0LCBwdHJk
aWZmX3QgZHN0X3N0cmlkZSwgdWludDhfdCAqc3JjLCAKKysgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdHJkaWZmX3Qgc3JjX3N0cmlkZSwgaW50IGgsIGludCBteCwgaW50IG15KQor
K3sKKysgICAgSU5JVF9WX1NVQlBFTF9GSUxURVIocGkxNiwgX19tNjQsIG15IC0gMSwgSUY2VEFQ
KTsKKysgICAgX19tNjQgczAsIHMxLCBzMiwgczMsIHM0LCBzNTsKKysKKysgICAgczAgPSBfbW1f
Y3Z0c2kzMl9zaTY0KCoodWludDMyX3QqKShzcmMgLSAyICogc3JjX3N0cmlkZSkpOworKyAgICBz
MSA9IF9tbV9jdnRzaTMyX3NpNjQoKih1aW50MzJfdCopKHNyYyAtIDEgKiBzcmNfc3RyaWRlKSk7
CisrICAgIHMyID0gX21tX2N2dHNpMzJfc2k2NCgqKHVpbnQzMl90KilzcmMpOworKyAgICBzMyA9
IF9tbV9jdnRzaTMyX3NpNjQoKih1aW50MzJfdCopKHNyYyArIDEgKiBzcmNfc3RyaWRlKSk7Cisr
ICAgIHM0ID0gX21tX2N2dHNpMzJfc2k2NCgqKHVpbnQzMl90Kikoc3JjICsgMiAqIHNyY19zdHJp
ZGUpKTsKKysgICAgc3JjICs9IHNyY19zdHJpZGUgKiAzOworKworKyAgICBQUkFHTUFfRTJLKCJp
dmRlcCIpCisrICAgIGZvciAoaSA9IDA7IGkgPCBoOyBpKyspIHsKKysgICAgICAgIHM1ID0gX21t
X2N2dHNpMzJfc2k2NCgqKHVpbnQzMl90KilzcmMpOworKyAgICAgICAgRklMVEVSX1YocGkxNiwg
cjAsIGxvX3BpOCwgQ09QWSwgSUY2VEFQKTsKKysgICAgICAgIHIwID0gX21tX3BhY2tzX3B1MTYo
cjAsIHIwKTsKKysgICAgICAgICoodWludDMyX3QqKWRzdCA9IF9tbV9jdnRzaTY0X3NpMzIocjAp
OworKyAgICAgICAgczAgPSBzMTsgczEgPSBzMjsgczIgPSBzMzsgczMgPSBzNDsgczQgPSBzNTsK
KysgICAgICAgIGRzdCArPSBkc3Rfc3RyaWRlOworKyAgICAgICAgc3JjICs9IHNyY19zdHJpZGU7
CisrICAgIH0KKyt9CisrCisrc3RhdGljIHZvaWQgcHV0X3ZwOF9lcGVsOF92NF9lMmsodWludDhf
dCAqZHN0LCBwdHJkaWZmX3QgZHN0X3N0cmlkZSwgdWludDhfdCAqc3JjLCAKKysgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3JjX3N0cmlkZSwgaW50IGgsIGludCBt
eCwgaW50IG15KQorK3sKKysgICAgSU5JVF9WX1NVQlBFTF9GSUxURVIoZXBpMTYsIF9fbTEyOGks
IG15IC0gMSwgTk9QKTsKKysgICAgX19tNjQgczEsIHMyLCBzMywgczQ7CisrCisrICAgIHMxID0g
KihfX202NCopKHNyYyAtIDEgKiBzcmNfc3RyaWRlKTsKKysgICAgczIgPSAqKF9fbTY0KilzcmM7
CisrICAgIHMzID0gKihfX202NCopKHNyYyArIDEgKiBzcmNfc3RyaWRlKTsKKysgICAgc3JjICs9
IHNyY19zdHJpZGUgKiAyOworKworKyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAo
aSA9IDA7IGkgPCBoOyBpKyspIHsKKysgICAgICAgIHM0ID0gKihfX202NCopc3JjOworKyAgICAg
ICAgRklMVEVSX1YoZXBpMTYsIHIwLCBsb19lcGk4LCBfbW1fbW92cGk2NF9lcGk2NCwgTk9QKTsK
KysgICAgICAgIHIwID0gX21tX3BhY2t1c19lcGkxNihyMCwgcjApOworKyAgICAgICAgVkVDX1NU
TChkc3QsIHIwKTsKKysgICAgICAgIHMxID0gczI7IHMyID0gczM7IHMzID0gczQ7CisrICAgICAg
ICBkc3QgKz0gZHN0X3N0cmlkZTsKKysgICAgICAgIHNyYyArPSBzcmNfc3RyaWRlOworKyAgICB9
CisrfQorKworK3N0YXRpYyB2b2lkIHB1dF92cDhfZXBlbDRfdjRfZTJrKHVpbnQ4X3QgKmRzdCwg
cHRyZGlmZl90IGRzdF9zdHJpZGUsIHVpbnQ4X3QgKnNyYywgCisrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHRyZGlmZl90IHNyY19zdHJpZGUsIGludCBoLCBpbnQgbXgsIGludCBt
eSkKKyt7CisrICAgIElOSVRfVl9TVUJQRUxfRklMVEVSKHBpMTYsIF9fbTY0LCBteSAtIDEsIE5P
UCk7CisrICAgIF9fbTY0IHMxLCBzMiwgczMsIHM0OworKworKyAgICBzMSA9IF9tbV9jdnRzaTMy
X3NpNjQoKih1aW50MzJfdCopKHNyYyAtIDEgKiBzcmNfc3RyaWRlKSk7CisrICAgIHMyID0gX21t
X2N2dHNpMzJfc2k2NCgqKHVpbnQzMl90KilzcmMpOworKyAgICBzMyA9IF9tbV9jdnRzaTMyX3Np
NjQoKih1aW50MzJfdCopKHNyYyArIDEgKiBzcmNfc3RyaWRlKSk7CisrICAgIHNyYyArPSBzcmNf
c3RyaWRlICogMjsKKysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAgICBmb3IgKGkgPSAw
OyBpIDwgaDsgaSsrKSB7CisrICAgICAgICBzNCA9IF9tbV9jdnRzaTMyX3NpNjQoKih1aW50MzJf
dCopc3JjKTsKKysgICAgICAgIEZJTFRFUl9WKHBpMTYsIHIwLCBsb19waTgsIENPUFksIE5PUCk7
CisrICAgICAgICByMCA9IF9tbV9wYWNrc19wdTE2KHIwLCByMCk7CisrICAgICAgICAqKHVpbnQz
Ml90Kilkc3QgPSBfbW1fY3Z0c2k2NF9zaTMyKHIwKTsKKysgICAgICAgIHMxID0gczI7IHMyID0g
czM7IHMzID0gczQ7CisrICAgICAgICBkc3QgKz0gZHN0X3N0cmlkZTsKKysgICAgICAgIHNyYyAr
PSBzcmNfc3RyaWRlOworKyAgICB9CisrfQorKworKyNkZWZpbmUgRVBFTF9IVihXSURUSCwgSFRB
UFMsIFZUQVBTKSBcCisrc3RhdGljIHZvaWQgcHV0X3ZwOF9lcGVsIyNXSURUSCMjX2gjI0hUQVBT
IyN2IyNWVEFQUyMjX2Uyayh1aW50OF90ICpkc3QsIHB0cmRpZmZfdCBkc3RyaWRlLCB1aW50OF90
ICpzcmMsIHB0cmRpZmZfdCBzc3RyaWRlLCBpbnQgaCwgaW50IG14LCBpbnQgbXkpIFwKKyt7IFwK
KysgICAgREVDTEFSRV9BTElHTkVEKDE2LCB1aW50OF90LCB0bXApWygyKldJRFRIKzUpKjE2XTsg
XAorKyAgICBpZiAoVlRBUFMgPT0gNikgeyBcCisrICAgICAgICBwdXRfdnA4X2VwZWwjI1dJRFRI
IyNfaCMjSFRBUFMjI19lMmsodG1wLCAxNiwgICAgICBzcmMtMipzc3RyaWRlLCBzc3RyaWRlLCBo
KzUsIG14LCBteSk7IFwKKysgICAgICAgIHB1dF92cDhfZXBlbCMjV0lEVEgjI192IyNWVEFQUyMj
X2Uyayhkc3QsIGRzdHJpZGUsIHRtcCsyKjE2LCAgICAgIDE2LCAgICAgIGgsICAgbXgsIG15KTsg
XAorKyAgICB9IGVsc2UgeyBcCisrICAgICAgICBwdXRfdnA4X2VwZWwjI1dJRFRIIyNfaCMjSFRB
UFMjI19lMmsodG1wLCAxNiwgICAgICBzcmMtc3N0cmlkZSwgc3N0cmlkZSwgaCs0LCBteCwgbXkp
OyBcCisrICAgICAgICBwdXRfdnA4X2VwZWwjI1dJRFRIIyNfdiMjVlRBUFMjI19lMmsoZHN0LCBk
c3RyaWRlLCB0bXArMTYsICAgICAgMTYsICAgICAgaCwgICBteCwgbXkpOyBcCisrICAgIH0gXAor
K30KKysKKytFUEVMX0hWKDE2LCA2LDYpCisrRVBFTF9IVig4LCAgNiw2KQorK0VQRUxfSFYoOCwg
IDQsNikKKytFUEVMX0hWKDgsICA2LDQpCisrRVBFTF9IVig4LCAgNCw0KQorK0VQRUxfSFYoNCwg
IDYsNikKKytFUEVMX0hWKDQsICA0LDYpCisrRVBFTF9IVig0LCAgNiw0KQorK0VQRUxfSFYoNCwg
IDQsNCkKKysKKytzdGF0aWMgdm9pZCBwdXRfdnA4X3BpeGVsczE2X2Uyayh1aW50OF90ICpkc3Qs
IHB0cmRpZmZfdCBkc3RyaWRlLCB1aW50OF90ICpzcmMsCisrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHRyZGlmZl90IHNzdHJpZGUsIGludCBoLCBpbnQgbXgsIGludCBteSkKKyt7
CisrICAgIF9fbTEyOGkgdjAsIHYxLCB2MiwgdjM7CisrICAgIGludCBpOworKworKyAgICBQUkFH
TUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAoaSA9IDA7IGkgPCBoOyBpICs9IDQpIHsKKysgICAg
ICAgIHYwID0gVkVDX0xEKHNyYyk7CisrICAgICAgICB2MSA9IFZFQ19MRChzcmMgKyBzc3RyaWRl
KTsKKysgICAgICAgIHYyID0gVkVDX0xEKHNyYyArIHNzdHJpZGUgKiAyKTsKKysgICAgICAgIHYz
ID0gVkVDX0xEKHNyYyArIHNzdHJpZGUgKiAzKTsKKysgICAgICAgIFZFQ19TVChkc3QsIHYwKTsK
KysgICAgICAgIFZFQ19TVChkc3QgKyBkc3RyaWRlLCB2MSk7CisrICAgICAgICBWRUNfU1QoZHN0
ICsgZHN0cmlkZSAqIDIsIHYyKTsKKysgICAgICAgIFZFQ19TVChkc3QgKyBkc3RyaWRlICogMywg
djMpOworKyAgICAgICAgc3JjICs9IHNzdHJpZGUgKiA0OworKyAgICAgICAgZHN0ICs9IGRzdHJp
ZGUgKiA0OworKyAgICB9CisrfQorKworKworK2F2X2NvbGQgdm9pZCBmZl92cDc4ZHNwX2luaXRf
ZTJrKFZQOERTUENvbnRleHQgKmMpCisreworKyAgICBpZiAoIUUyS19CQVNFKGF2X2dldF9jcHVf
ZmxhZ3MoKSkpCisrICAgICAgICByZXR1cm47CisrCisrICAgIC8vIGNoZWNrYXNtCisrICAgIGMt
PnB1dF92cDhfZXBlbF9waXhlbHNfdGFiWzBdWzBdWzBdID0gcHV0X3ZwOF9waXhlbHMxNl9lMms7
CisrICAgIGMtPnB1dF92cDhfZXBlbF9waXhlbHNfdGFiWzBdWzBdWzJdID0gcHV0X3ZwOF9lcGVs
MTZfaDZfZTJrOworKyAgICBjLT5wdXRfdnA4X2VwZWxfcGl4ZWxzX3RhYlswXVsyXVswXSA9IHB1
dF92cDhfZXBlbDE2X3Y2X2UyazsKKysgICAgYy0+cHV0X3ZwOF9lcGVsX3BpeGVsc190YWJbMF1b
Ml1bMl0gPSBwdXRfdnA4X2VwZWwxNl9oNnY2X2UyazsKKysKKysgICAgYy0+cHV0X3ZwOF9lcGVs
X3BpeGVsc190YWJbMV1bMF1bMl0gPSBwdXRfdnA4X2VwZWw4X2g2X2UyazsKKysgICAgYy0+cHV0
X3ZwOF9lcGVsX3BpeGVsc190YWJbMV1bMl1bMF0gPSBwdXRfdnA4X2VwZWw4X3Y2X2UyazsKKysg
ICAgYy0+cHV0X3ZwOF9lcGVsX3BpeGVsc190YWJbMV1bMF1bMV0gPSBwdXRfdnA4X2VwZWw4X2g0
X2UyazsKKysgICAgYy0+cHV0X3ZwOF9lcGVsX3BpeGVsc190YWJbMV1bMV1bMF0gPSBwdXRfdnA4
X2VwZWw4X3Y0X2UyazsKKysKKysgICAgYy0+cHV0X3ZwOF9lcGVsX3BpeGVsc190YWJbMV1bMl1b
Ml0gPSBwdXRfdnA4X2VwZWw4X2g2djZfZTJrOworKyAgICBjLT5wdXRfdnA4X2VwZWxfcGl4ZWxz
X3RhYlsxXVsxXVsxXSA9IHB1dF92cDhfZXBlbDhfaDR2NF9lMms7CisrICAgIGMtPnB1dF92cDhf
ZXBlbF9waXhlbHNfdGFiWzFdWzFdWzJdID0gcHV0X3ZwOF9lcGVsOF9oNnY0X2UyazsKKysgICAg
Yy0+cHV0X3ZwOF9lcGVsX3BpeGVsc190YWJbMV1bMl1bMV0gPSBwdXRfdnA4X2VwZWw4X2g0djZf
ZTJrOworKworKyAgICBjLT5wdXRfdnA4X2VwZWxfcGl4ZWxzX3RhYlsyXVswXVsyXSA9IHB1dF92
cDhfZXBlbDRfaDZfZTJrOworKyAgICBjLT5wdXRfdnA4X2VwZWxfcGl4ZWxzX3RhYlsyXVsyXVsw
XSA9IHB1dF92cDhfZXBlbDRfdjZfZTJrOworKyAgICBjLT5wdXRfdnA4X2VwZWxfcGl4ZWxzX3Rh
YlsyXVswXVsxXSA9IHB1dF92cDhfZXBlbDRfaDRfZTJrOworKyAgICBjLT5wdXRfdnA4X2VwZWxf
cGl4ZWxzX3RhYlsyXVsxXVswXSA9IHB1dF92cDhfZXBlbDRfdjRfZTJrOworKworKyAgICBjLT5w
dXRfdnA4X2VwZWxfcGl4ZWxzX3RhYlsyXVsyXVsyXSA9IHB1dF92cDhfZXBlbDRfaDZ2Nl9lMms7
CisrICAgIGMtPnB1dF92cDhfZXBlbF9waXhlbHNfdGFiWzJdWzFdWzFdID0gcHV0X3ZwOF9lcGVs
NF9oNHY0X2UyazsKKysgICAgYy0+cHV0X3ZwOF9lcGVsX3BpeGVsc190YWJbMl1bMV1bMl0gPSBw
dXRfdnA4X2VwZWw0X2g2djRfZTJrOworKyAgICBjLT5wdXRfdnA4X2VwZWxfcGl4ZWxzX3RhYlsy
XVsyXVsxXSA9IHB1dF92cDhfZXBlbDRfaDR2Nl9lMms7CisrfQorZGlmZiAtLWdpdCBhL2xpYmF2
Y29kZWMvZTJrL3ZwOWRzcC5jIGIvbGliYXZjb2RlYy9lMmsvdnA5ZHNwLmMKK25ldyBmaWxlIG1v
ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi41YjgwMDcwCistLS0gL2Rldi9udWxsCisrKysgYi9s
aWJhdmNvZGVjL2Uyay92cDlkc3AuYworQEAgLTAsMCArMSwxNzQwIEBACisrLyoKKysgKiBWUDkg
Y29tcGF0aWJsZSB2aWRlbyBkZWNvZGVyCisrICoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWx5
YSBLdXJkeXVrb3YgPGpwZWdxc0BnbWFpbC5jb20+IGZvciBCYXNlQUxULCBMdGQKKysgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgUm9uYWxkIFMuIEJ1bHRqZSA8cnNidWx0amUgZ21haWwgY29tPgorKyAq
IENvcHlyaWdodCAoQykgMjAxMyBDbMOpbWVudCBCxZNzY2ggPHUgcGtoIG1lPgorKyAqCisrICog
VGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorKyAqCisrICogRkZtcGVnIGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysg
KiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKysgKgorKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKKysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisrICovCisrCisrI2RlZmlu
ZSBCSVRfREVQVEggOAorKworKyNpbmNsdWRlICJjb25maWcuaCIKKysjaW5jbHVkZSAibGliYXZ1
dGlsL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL2NwdS5oIgorKyNpbmNsdWRlICJs
aWJhdnV0aWwvZTJrL3V0aWxfZTJrLmgiCisrCisrI2luY2x1ZGUgImxpYmF2dXRpbC9jb21tb24u
aCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2ludHJlYWR3cml0ZS5oIgorKyNpbmNsdWRlICJsaWJh
dmNvZGVjL3ZwOWRzcC5oIgorKworKyNkZWZpbmUgcGl4ZWwgICB1aW50OF90CisrCisrI2RlZmlu
ZSBpdHhmbV93cmFwcGVyNCh0eXBlX2EsIHR5cGVfYiwgc3osIGJpdHMsIGhhc19kY29ubHkpIFwK
KytzdGF0aWMgdm9pZCB0eXBlX2EjI18jI3R5cGVfYiMjXyMjc3ojI3gjI3N6IyNfYWRkX2Uyayh1
aW50OF90ICpkc3QsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBcCisrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2ssIGludCBlb2Ip
IFwKKyt7IFwKKysgICAgaW50IGo7IFwKKysgICAgaW50MTZfdCB0bXBbc3ogKiBzel0sIG91dFtz
eiAqIHN6XTsgXAorKyAgICBfX202NCBoMCwgaDEsIGgyLCByb3VuZCwgemVyb3YgPSBfbW1fc2V0
emVyb19zaTY0KCk7IFwKKytcCisrICAgIGlmIChoYXNfZGNvbmx5ICYmIGVvYiA9PSAxKSB7IFwK
KysgICAgICAgIGludCB0ID0gKCgoKGludClibG9ja1swXSAqIDExNTg1ICsgKDEgPDwgMTMpKSA+
PiAxNCkgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMTE1ODUgKyAoMSA8
PCAxMykpID4+IDE0OyBcCisrICAgICAgICBibG9ja1swXSA9IDA7IFwKKysgICAgICAgIHQgPSBi
aXRzID8gKHQgKyAoMSA8PCAoYml0cyAtIDEpKSkgPj4gYml0cyA6IHQ7IFwKKysgICAgICAgIGgx
ID0gX21tX3NldDFfcGkxNih0KTsgXAorKyAgICAgICAgaDIgPSBfbW1fc2V0MV9waTE2KC10KTsg
XAorKyAgICAgICAgaDEgPSBfbW1fcGFja3NfcHUxNihoMSwgaDEpOyBcCisrICAgICAgICBoMiA9
IF9tbV9wYWNrc19wdTE2KGgyLCBoMik7IFwKKysgICAgICAgIFwKKysgICAgICAgIFBSQUdNQV9F
MksoIml2ZGVwIikgXAorKyAgICAgICAgZm9yIChqID0gMDsgaiA8IHN6OyBqKyssIGRzdCArPSBz
dHJpZGUpIHsgXAorKyAgICAgICAgICAgIGgwID0gX21tX2N2dHNpMzJfc2k2NCgqKHVpbnQzMl90
Kilkc3QpOyBcCisrICAgICAgICAgICAgaDAgPSBfbW1fc3Vic19wdTgoX21tX2FkZHNfcHU4KGgw
LCBoMSksIGgyKTsgXAorKyAgICAgICAgICAgICoodWludDMyX3QqKWRzdCA9IF9tbV9jdnRzaTY0
X3NpMzIoaDApOyBcCisrICAgICAgICB9IFwKKysgICAgICAgIHJldHVybjsgXAorKyAgICB9IFwK
KysgICAgXAorKyAgICB0eXBlX2EjI3N6IyNfMWQoYmxvY2ssIHRtcCwgMCk7IFwKKysgICAgbWVt
c2V0KGJsb2NrLCAwLCBzeiAqIHN6ICogc2l6ZW9mKCpibG9jaykpOyBcCisrICAgIHR5cGVfYiMj
c3ojI18xZCh0bXAsIG91dCwgMSk7IFwKKysgICAgcm91bmQgPSBfbW1fc2V0MV9waTE2KCgxIDw8
IGJpdHMpID4+IDEpOyBcCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikgXAorKyAgICBmb3IgKGog
PSAwOyBqIDwgc3o7IGorKywgZHN0ICs9IHN0cmlkZSkgeyBcCisrICAgICAgICAgaDEgPSAqKF9f
bTY0Kikob3V0ICsgaiAqIHN6KTsgXAorKyAgICAgICAgIGgxID0gX21tX3NyYWlfcGkxNihfbW1f
YWRkX3BpMTYoaDEsIHJvdW5kKSwgYml0cyk7IFwKKysgICAgICAgICBoMCA9IF9tbV9jdnRzaTMy
X3NpNjQoKih1aW50MzJfdCopZHN0KTsgXAorKyAgICAgICAgIGgwID0gX21tX3VucGFja2xvX3Bp
OChoMCwgemVyb3YpOyBcCisrICAgICAgICAgaDAgPSBfbW1fYWRkX3BpMTYoaDAsIGgxKTsgXAor
KyAgICAgICAgIGgwID0gX21tX3BhY2tzX3B1MTYoaDAsIGgwKTsgXAorKyAgICAgICAgICoodWlu
dDMyX3QqKWRzdCA9IF9tbV9jdnRzaTY0X3NpMzIoaDApOyBcCisrICAgIH0gXAorK30KKysKKysj
ZGVmaW5lIGl0eGZtX3dyYXBwZXI4KHR5cGVfYSwgdHlwZV9iLCBzeiwgYml0cywgaGFzX2Rjb25s
eSkgXAorK3N0YXRpYyB2b2lkIHR5cGVfYSMjXyMjdHlwZV9iIyNfIyNzeiMjeCMjc3ojI19hZGRf
ZTJrKHVpbnQ4X3QgKmRzdCwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIFwKKysgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50
IGVvYikgXAorK3sgXAorKyAgICBpbnQgajsgXAorKyAgICBpbnQxNl90IHRtcFtzeiAqIHN6XSwg
b3V0W3N6ICogc3pdOyBcCisrICAgIF9fbTEyOGkgdjAsIHYxLCByb3VuZDsgXAorKyAgICBMT0FE
X1pFUk87IFwKKytcCisrICAgIGlmIChoYXNfZGNvbmx5ICYmIGVvYiA9PSAxKSB7IFwKKysgICAg
ICAgIF9fbTY0IGgwLCBoMSwgaDI7IFwKKysgICAgICAgIGludCB0ID0gKCgoKGludClibG9ja1sw
XSAqIDExNTg1ICsgKDEgPDwgMTMpKSA+PiAxNCkgXAorKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICogMTE1ODUgKyAoMSA8PCAxMykpID4+IDE0OyBcCisrICAgICAgICBibG9ja1sw
XSA9IDA7IFwKKysgICAgICAgIHQgPSBiaXRzID8gKHQgKyAoMSA8PCAoYml0cyAtIDEpKSkgPj4g
Yml0cyA6IHQ7IFwKKysgICAgICAgIGgxID0gX21tX3NldDFfcGkxNih0KTsgXAorKyAgICAgICAg
aDIgPSBfbW1fc2V0MV9waTE2KC10KTsgXAorKyAgICAgICAgaDEgPSBfbW1fcGFja3NfcHUxNiho
MSwgaDEpOyBcCisrICAgICAgICBoMiA9IF9tbV9wYWNrc19wdTE2KGgyLCBoMik7IFwKKysgICAg
ICAgIFwKKysgICAgICAgIFBSQUdNQV9FMksoIml2ZGVwIikgXAorKyAgICAgICAgZm9yIChqID0g
MDsgaiA8IHN6OyBqKyssIGRzdCArPSBzdHJpZGUpIHsgXAorKyAgICAgICAgICAgIGgwID0gKihf
X202NCopZHN0OyBcCisrICAgICAgICAgICAgaDAgPSBfbW1fc3Vic19wdTgoX21tX2FkZHNfcHU4
KGgwLCBoMSksIGgyKTsgXAorKyAgICAgICAgICAgICooX19tNjQqKWRzdCA9IGgwOyBcCisrICAg
ICAgICB9IFwKKysgICAgICAgIHJldHVybjsgXAorKyAgICB9IFwKKysgICAgXAorKyAgICB0eXBl
X2EjI3N6IyNfMWQoYmxvY2ssIHRtcCwgMCk7IFwKKysgICAgbWVtc2V0KGJsb2NrLCAwLCBzeiAq
IHN6ICogc2l6ZW9mKCpibG9jaykpOyBcCisrICAgIHR5cGVfYiMjc3ojI18xZCh0bXAsIG91dCwg
MSk7IFwKKysgICAgcm91bmQgPSBfbW1fc2V0MV9lcGkxNigoMSA8PCBiaXRzKSA+PiAxKTsgXAor
KyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpIFwKKysgICAgZm9yIChqID0gMDsgaiA8IHN6OyBqKyss
IGRzdCArPSBzdHJpZGUpIHsgXAorKyAgICAgICAgIHYxID0gVkVDX0xEKG91dCArIGogKiBzeik7
IFwKKysgICAgICAgICB2MSA9IF9tbV9zcmFpX2VwaTE2KF9tbV9hZGRfZXBpMTYodjEsIHJvdW5k
KSwgYml0cyk7IFwKKysgICAgICAgICB2MCA9IFZFQ19MRDgoZHN0KTsgXAorKyAgICAgICAgIHYw
ID0gX21tX3VucGFja2xvX2VwaTgodjAsIHplcm92KTsgXAorKyAgICAgICAgIHYwID0gX21tX2Fk
ZF9lcGkxNih2MCwgdjEpOyBcCisrICAgICAgICAgdjAgPSBfbW1fcGFja3VzX2VwaTE2KHYwLCB2
MCk7IFwKKysgICAgICAgICBWRUNfU1RMKGRzdCwgdjApOyBcCisrICAgIH0gXAorK30KKysKKysj
ZGVmaW5lIGl0eGZtX3dyYXBwZXIxNih0eXBlX2EsIHR5cGVfYiwgc3osIGJpdHMsIGhhc19kY29u
bHkpIFwKKytzdGF0aWMgdm9pZCB0eXBlX2EjI18jI3R5cGVfYiMjXyMjc3ojI3gjI3N6IyNfYWRk
X2Uyayh1aW50OF90ICpkc3QsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBcCisrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqYmxvY2ssIGlu
dCBlb2IpIFwKKyt7IFwKKysgICAgaW50IGksIGo7IFwKKysgICAgaW50MTZfdCB0bXBbc3ogKiBz
el0sIG91dFtzeiAqIHN6XTsgXAorKyAgICBfX20xMjhpIHYwLCB2MSwgdjIsIHYzLCByb3VuZDsg
XAorKyAgICBMT0FEX1pFUk87IFwKKytcCisrICAgIGlmIChoYXNfZGNvbmx5ICYmIGVvYiA9PSAx
KSB7IFwKKysgICAgICAgIGludCB0ID0gKCgoKGludClibG9ja1swXSAqIDExNTg1ICsgKDEgPDwg
MTMpKSA+PiAxNCkgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMTE1ODUg
KyAoMSA8PCAxMykpID4+IDE0OyBcCisrICAgICAgICBibG9ja1swXSA9IDA7IFwKKysgICAgICAg
IHQgPSBiaXRzID8gKHQgKyAoMSA8PCAoYml0cyAtIDEpKSkgPj4gYml0cyA6IHQ7IFwKKysgICAg
ICAgIHYxID0gX21tX3NldDFfZXBpMTYodCk7IFwKKysgICAgICAgIHYyID0gX21tX3NldDFfZXBp
MTYoLXQpOyBcCisrICAgICAgICB2MSA9IF9tbV9wYWNrdXNfZXBpMTYodjEsIHYxKTsgXAorKyAg
ICAgICAgdjIgPSBfbW1fcGFja3VzX2VwaTE2KHYyLCB2Mik7IFwKKysgICAgICAgIFwKKysgICAg
ICAgIGZvciAoaiA9IDA7IGogPCBzejsgaisrLCBkc3QgKz0gc3RyaWRlKSBcCisrICAgICAgICBQ
UkFHTUFfRTJLKCJpdmRlcCIpIFwKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzejsgaSArPSAx
NikgeyBcCisrICAgICAgICAgICAgdjAgPSBWRUNfTEQoZHN0ICsgaSk7IFwKKysgICAgICAgICAg
ICB2MCA9IF9tbV9zdWJzX2VwdTgoX21tX2FkZHNfZXB1OCh2MCwgdjEpLCB2Mik7IFwKKysgICAg
ICAgICAgICBWRUNfU1QoZHN0ICsgaSwgdjApOyBcCisrICAgICAgICB9IFwKKysgICAgICAgIHJl
dHVybjsgXAorKyAgICB9IFwKKysgICAgXAorKyAgICB0eXBlX2EjI3N6IyNfMWQoYmxvY2ssIHRt
cCwgMCk7IFwKKysgICAgbWVtc2V0KGJsb2NrLCAwLCBzeiAqIHN6ICogc2l6ZW9mKCpibG9jaykp
OyBcCisrICAgIHR5cGVfYiMjc3ojI18xZCh0bXAsIG91dCwgMSk7IFwKKysgICAgcm91bmQgPSBf
bW1fc2V0MV9lcGkxNigoMSA8PCBiaXRzKSA+PiAxKTsgXAorKyAgICBmb3IgKGogPSAwOyBqIDwg
c3o7IGorKywgZHN0ICs9IHN0cmlkZSkgXAorKyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpIFwKKysg
ICAgZm9yIChpID0gMDsgaSA8IHN6OyBpICs9IDE2KSB7IFwKKysgICAgICAgICB2MiA9IFZFQ19M
RChvdXQgKyBqICogc3ogKyBpKTsgXAorKyAgICAgICAgIHYzID0gVkVDX0xEKG91dCArIGogKiBz
eiArIGkgKyA4KTsgXAorKyAgICAgICAgIHYyID0gX21tX3NyYWlfZXBpMTYoX21tX2FkZF9lcGkx
Nih2Miwgcm91bmQpLCBiaXRzKTsgXAorKyAgICAgICAgIHYzID0gX21tX3NyYWlfZXBpMTYoX21t
X2FkZF9lcGkxNih2Mywgcm91bmQpLCBiaXRzKTsgXAorKyAgICAgICAgIHYxID0gVkVDX0xEKGRz
dCArIGkpOyBcCisrICAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpOCh2MSwgemVyb3YpOyBc
CisrICAgICAgICAgdjEgPSBfbW1fdW5wYWNraGlfZXBpOCh2MSwgemVyb3YpOyBcCisrICAgICAg
ICAgdjAgPSBfbW1fYWRkX2VwaTE2KHYwLCB2Mik7IFwKKysgICAgICAgICB2MSA9IF9tbV9hZGRf
ZXBpMTYodjEsIHYzKTsgXAorKyAgICAgICAgIHYwID0gX21tX3BhY2t1c19lcGkxNih2MCwgdjEp
OyBcCisrICAgICAgICAgVkVDX1NUKGRzdCArIGksIHYwKTsgXAorKyAgICB9IFwKKyt9CisrCisr
I2RlZmluZSBJTih4KSBWRUNfTEQ4KGluICsgKHgpICogc3opCisrCisrI2RlZmluZSBYMSh4LCBh
LCBiKSBcCisrICAgIF9fbTEyOGkgeCA9IF9tbV9zZXQxX2VwaTMyKChhICYgMHhmZmZmKSB8IGIg
PDwgMTYpOworKworKyNkZWZpbmUgWDIoeCwgeSwgaTAsIGkxKSBcCisrICAgIHYxID0gX21tX3Vu
cGFja2xvX2VwaTE2KElOKGkwKSwgSU4oaTEpKTsgXAorKyAgICB2MCA9IF9tbV9tYWRkX2VwaTE2
KHYxLCBmIyN4KTsgXAorKyAgICB2MSA9IF9tbV9tYWRkX2VwaTE2KHYxLCBmIyN5KTsgXAorKyAg
ICB0IyN4IyNhID0gX21tX3NyYWlfZXBpMzIoX21tX2FkZF9lcGkzMih2MCwgcm91bmQpLCAxNCk7
IFwKKysgICAgdCMjeSMjYSA9IF9tbV9zcmFpX2VwaTMyKF9tbV9hZGRfZXBpMzIodjEsIHJvdW5k
KSwgMTQpOworKworKyNkZWZpbmUgWDMoeCwgeSwgaTAsIGkxKSBcCisrICAgIHYwID0gX21tX211
bGxvX2VwaTMyKF9tbV9zdWJfZXBpMzIoaTAsIGkxKSwgYzExNTg1KTsgXAorKyAgICB2MSA9IF9t
bV9tdWxsb19lcGkzMihfbW1fYWRkX2VwaTMyKGkwLCBpMSksIGMxMTU4NSk7IFwKKysgICAgeCA9
IF9tbV9zcmFpX2VwaTMyKF9tbV9hZGRfZXBpMzIodjAsIHJvdW5kKSwgMTQpOyBcCisrICAgIHkg
PSBfbW1fc3JhaV9lcGkzMihfbW1fYWRkX2VwaTMyKHYxLCByb3VuZCksIDE0KTsKKysKKysjZGVm
aW5lIFg0KHgsIHksIGkwLCBpMSwgbTAsIG0xKSBcCisrICAgIHYwID0gX21tX2FkZF9lcGkzMihf
bW1fbXVsbG9fZXBpMzIoaTAsIG0wKSwgX21tX211bGxvX2VwaTMyKGkxLCBtMSkpOyBcCisrICAg
IHYxID0gX21tX3N1Yl9lcGkzMihfbW1fbXVsbG9fZXBpMzIoaTAsIG0xKSwgX21tX211bGxvX2Vw
aTMyKGkxLCBtMCkpOyBcCisrICAgIHggPSBfbW1fc3JhaV9lcGkzMihfbW1fYWRkX2VwaTMyKHYw
LCByb3VuZCksIDE0KTsgXAorKyAgICB5ID0gX21tX3NyYWlfZXBpMzIoX21tX2FkZF9lcGkzMih2
MSwgcm91bmQpLCAxNCk7CisrCisrI2RlZmluZSBYNShkLCBhZGQsIGEwLCBhMSwgYTIsIGEzLCBi
MCwgYjEsIGIyLCBiMykgXAorKyAgICB2MCA9IF9tbV8jI2FkZCMjX2VwaTMyKGEwLCBiMCk7IFwK
KysgICAgdjEgPSBfbW1fIyNhZGQjI19lcGkzMihhMSwgYjEpOyBcCisrICAgIHYyID0gX21tXyMj
YWRkIyNfZXBpMzIoYTIsIGIyKTsgXAorKyAgICB2MyA9IF9tbV8jI2FkZCMjX2VwaTMyKGEzLCBi
Myk7IFwKKysgICAgdjAgPSBfbW1fcGFja3NfZXBpMzIodjAsIHYxKTsgXAorKyAgICB2MSA9IF9t
bV9wYWNrc19lcGkzMih2MiwgdjMpOyBcCisrICAgIHYyID0gX21tX3VucGFja2xvX2VwaTE2KHYw
LCB2MSk7IFwKKysgICAgdjMgPSBfbW1fdW5wYWNraGlfZXBpMTYodjAsIHYxKTsgXAorKyAgICB2
MCA9IF9tbV91bnBhY2tsb19lcGkxNih2MiwgdjMpOyBcCisrICAgIHYxID0gX21tX3VucGFja2hp
X2VwaTE2KHYyLCB2Myk7IFwKKysgICAgVkVDX1NUTChvdXQgKyBkICsgc3ogKiAwLCB2MCk7IFwK
KysgICAgVkVDX1NUSChvdXQgKyBkICsgc3ogKiAxLCB2MCk7IFwKKysgICAgVkVDX1NUTChvdXQg
KyBkICsgc3ogKiAyLCB2MSk7IFwKKysgICAgVkVDX1NUSChvdXQgKyBkICsgc3ogKiAzLCB2MSk7
CisrCisrI2RlZmluZSBYNihkLCBhZGQsIGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEsIGIyLCBiMykg
XAorKyAgICB2MCA9IF9tbV8jI2FkZCMjX2VwaTMyKGEwLCBiMCk7IFwKKysgICAgdjEgPSBfbW1f
IyNhZGQjI19lcGkzMihhMSwgYjEpOyBcCisrICAgIHYyID0gX21tXyMjYWRkIyNfZXBpMzIoYTIs
IGIyKTsgXAorKyAgICB2MyA9IF9tbV8jI2FkZCMjX2VwaTMyKGEzLCBiMyk7IFwKKysgICAgdjAg
PSBfbW1fcGFja3NfZXBpMzIodjAsIHYxKTsgXAorKyAgICB2MSA9IF9tbV9wYWNrc19lcGkzMih2
MiwgdjMpOyBcCisrICAgIFZFQ19TVEwob3V0ICsgc3ogKiAoZCArIDApLCB2MCk7IFwKKysgICAg
VkVDX1NUSChvdXQgKyBzeiAqIChkICsgMSksIHYwKTsgXAorKyAgICBWRUNfU1RMKG91dCArIHN6
ICogKGQgKyAyKSwgdjEpOyBcCisrICAgIFZFQ19TVEgob3V0ICsgc3ogKiAoZCArIDMpLCB2MSk7
CisrCisrc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBpZGN0NF8xZChjb25zdCBpbnQxNl90
ICppbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKm91
dCwgaW50IHBhc3MpCisreworKyAgICBfX20xMjhpIHYwLCB2MSwgdjIsIHYzOworKyAgICBfX20x
MjhpIHQwYSwgdDFhLCB0MmEsIHQzYTsKKysgICAgX19tMTI4aSByb3VuZCA9IF9tbV9zZXQxX2Vw
aTMyKDEgPDwgMTMpOworKyAgICBpbnQgc3ogPSA0OworKworKyAgICBYMShmMCwgMTE1ODUsIDEx
NTg1KQorKyAgICBYMShmMSwgMTE1ODUsIC0xMTU4NSkKKysgICAgWDEoZjIsIDYyNzAsIC0xNTEz
NykKKysgICAgWDEoZjMsIDE1MTM3LCA2MjcwKQorKworKyAgICBYMigwLCAxLCAwLCAyKQorKyAg
ICBYMigyLCAzLCAxLCAzKQorKworKyAgICB2MCA9IF9tbV9hZGRfZXBpMzIodDBhLCB0M2EpOwor
KyAgICB2MSA9IF9tbV9hZGRfZXBpMzIodDFhLCB0MmEpOworKyAgICB2MiA9IF9tbV9zdWJfZXBp
MzIodDFhLCB0MmEpOworKyAgICB2MyA9IF9tbV9zdWJfZXBpMzIodDBhLCB0M2EpOworKyAgICB2
MCA9IF9tbV9wYWNrc19lcGkzMih2MCwgdjEpOworKyAgICB2MSA9IF9tbV9wYWNrc19lcGkzMih2
MiwgdjMpOworKyAgICBpZiAoIXBhc3MpIHsKKysgICAgICAgIHYyID0gX21tX3VucGFja2xvX2Vw
aTE2KHYwLCB2MSk7CisrICAgICAgICB2MyA9IF9tbV91bnBhY2toaV9lcGkxNih2MCwgdjEpOwor
KyAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpMTYodjIsIHYzKTsKKysgICAgICAgIHYxID0g
X21tX3VucGFja2hpX2VwaTE2KHYyLCB2Myk7CisrICAgIH0KKysgICAgVkVDX1NUTChvdXQgKyBz
eiAqIDAsIHYwKTsKKysgICAgVkVDX1NUSChvdXQgKyBzeiAqIDEsIHYwKTsKKysgICAgVkVDX1NU
TChvdXQgKyBzeiAqIDIsIHYxKTsKKysgICAgVkVDX1NUSChvdXQgKyBzeiAqIDMsIHYxKTsKKyt9
CisrCisrc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBpZGN0OF8xZChjb25zdCBpbnQxNl90
ICppbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKm91
dCwgaW50IHBhc3MpCisreworKyAgICBfX20xMjhpIHYwLCB2MSwgdjIsIHYzOworKyAgICBfX20x
MjhpIHQwYSwgdDFhLCB0MmEsIHQzYSwgdDRhLCB0NWEsIHQ2YSwgdDdhOworKyAgICBfX20xMjhp
IHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NzsKKysgICAgX19tMTI4aSByb3VuZCA9IF9t
bV9zZXQxX2VwaTMyKDEgPDwgMTMpOworKyAgICBfX20xMjhpIGMxMTU4NSA9IF9tbV9zZXQxX2Vw
aTMyKDExNTg1KTsKKysKKysgICAgWDEoZjAsIDExNTg1LCAxMTU4NSkKKysgICAgWDEoZjEsIDEx
NTg1LCAtMTE1ODUpCisrICAgIFgxKGYyLCA2MjcwLCAtMTUxMzcpCisrICAgIFgxKGYzLCAxNTEz
NywgNjI3MCkKKysKKysgICAgWDEoZjQsIDMxOTYsIC0xNjA2OSkKKysgICAgWDEoZjcsIDE2MDY5
LCAzMTk2KQorKyAgICBYMShmNSwgMTM2MjMsIC05MTAyKQorKyAgICBYMShmNiwgOTEwMiwgMTM2
MjMpCisrCisrICAgIGludCBpLCBzeiA9IDg7CisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysg
ICAgZm9yIChpID0gMDsgaSA8IHN6OyBpICs9IDQsIGluICs9IDQpIHsKKysgICAgICAgIFgyKDAs
IDEsIDAsIDQpCisrICAgICAgICBYMigyLCAzLCAyLCA2KQorKyAgICAgICAgWDIoNCwgNywgMSwg
NykKKysgICAgICAgIFgyKDUsIDYsIDUsIDMpCisrCisrICAgICAgICB0MCAgPSBfbW1fYWRkX2Vw
aTMyKHQwYSwgdDNhKTsKKysgICAgICAgIHQxICA9IF9tbV9hZGRfZXBpMzIodDFhLCB0MmEpOwor
KyAgICAgICAgdDIgID0gX21tX3N1Yl9lcGkzMih0MWEsIHQyYSk7CisrICAgICAgICB0MyAgPSBf
bW1fc3ViX2VwaTMyKHQwYSwgdDNhKTsKKysgICAgICAgIHQ0ICA9IF9tbV9hZGRfZXBpMzIodDRh
LCB0NWEpOworKyAgICAgICAgdDVhID0gX21tX3N1Yl9lcGkzMih0NGEsIHQ1YSk7CisrICAgICAg
ICB0NyAgPSBfbW1fYWRkX2VwaTMyKHQ3YSwgdDZhKTsKKysgICAgICAgIHQ2YSA9IF9tbV9zdWJf
ZXBpMzIodDdhLCB0NmEpOworKworKyAgICAgICAgWDModDUsIHQ2LCB0NmEsIHQ1YSkKKysKKysg
ICAgICAgIGlmICghcGFzcykgeworKyAgICAgICAgICAgIFg1KDAsIGFkZCwgdDAsIHQxLCB0Miwg
dDMsIHQ3LCB0NiwgdDUsIHQ0KQorKyAgICAgICAgICAgIFg1KDQsIHN1YiwgdDMsIHQyLCB0MSwg
dDAsIHQ0LCB0NSwgdDYsIHQ3KQorKyAgICAgICAgICAgIG91dCArPSA0ICogc3o7CisrICAgICAg
ICB9IGVsc2UgeworKyAgICAgICAgICAgIFg2KDAsIGFkZCwgdDAsIHQxLCB0MiwgdDMsIHQ3LCB0
NiwgdDUsIHQ0KQorKyAgICAgICAgICAgIFg2KDQsIHN1YiwgdDMsIHQyLCB0MSwgdDAsIHQ0LCB0
NSwgdDYsIHQ3KQorKyAgICAgICAgICAgIG91dCArPSA0OworKyAgICAgICAgfQorKyAgICB9Cisr
fQorKworK3N0YXRpYyBhdl9hbHdheXNfaW5saW5lIHZvaWQgaWRjdDE2XzFkKGNvbnN0IGludDE2
X3QgKmluLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qg
Km91dCwgaW50IHBhc3MpCisreworKyAgICBfX20xMjhpIHYwLCB2MSwgdjIsIHYzOworKyAgICBf
X20xMjhpIHQwYSwgdDFhLCB0MmEsIHQzYSwgdDRhLCB0NWEsIHQ2YSwgdDdhOworKyAgICBfX20x
MjhpIHQ4YSwgdDlhLCB0MTBhLCB0MTFhLCB0MTJhLCB0MTNhLCB0MTRhLCB0MTVhOworKyAgICBf
X20xMjhpIHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NzsKKysgICAgX19tMTI4aSB0OCwg
dDksIHQxMCwgdDExLCB0MTIsIHQxMywgdDE0LCB0MTU7CisrICAgIF9fbTEyOGkgcm91bmQgPSBf
bW1fc2V0MV9lcGkzMigxIDw8IDEzKTsKKysgICAgX19tMTI4aSBjMTE1ODUgPSBfbW1fc2V0MV9l
cGkzMigxMTU4NSk7CisrICAgIF9fbTEyOGkgbTE1MTM3ID0gX21tX3NldDFfZXBpMzIoLTE1MTM3
KSwgYzYyNzAgPSBfbW1fc2V0MV9lcGkzMig2MjcwKTsKKysKKysgICAgWDEoZjAsIDExNTg1LCAx
MTU4NSkKKysgICAgWDEoZjEsIDExNTg1LCAtMTE1ODUpCisrICAgIFgxKGYyLCA2MjcwLCAtMTUx
MzcpCisrICAgIFgxKGYzLCAxNTEzNywgNjI3MCkKKysKKysgICAgWDEoZjQsIDMxOTYsIC0xNjA2
OSkKKysgICAgWDEoZjcsIDE2MDY5LCAzMTk2KQorKyAgICBYMShmNSwgMTM2MjMsIC05MTAyKQor
KyAgICBYMShmNiwgOTEwMiwgMTM2MjMpCisrCisrICAgIFgxKGY4LCAxNjA2LCAtMTYzMDUpCisr
ICAgIFgxKGYxNSwgMTYzMDUsIDE2MDYpCisrICAgIFgxKGY5LCAxMjY2NSwgLTEwMzk0KQorKyAg
ICBYMShmMTQsIDEwMzk0LCAxMjY2NSkKKysgICAgWDEoZjEwLCA3NzIzLCAtMTQ0NDkpCisrICAg
IFgxKGYxMywgMTQ0NDksIDc3MjMpCisrICAgIFgxKGYxMSwgMTU2NzksIC00NzU2KQorKyAgICBY
MShmMTIsIDQ3NTYsIDE1Njc5KQorKworKyAgICBpbnQgaSwgc3ogPSAxNjsKKysgICAgUFJBR01B
X0UySygiaXZkZXAiKQorKyAgICBmb3IgKGkgPSAwOyBpIDwgc3o7IGkgKz0gNCwgaW4gKz0gNCkg
eworKyAgICAgICAgWDIoIDAsICAxLCAgMCwgIDgpCisrICAgICAgICBYMiggMiwgIDMsICA0LCAx
MikKKysgICAgICAgIFgyKCA0LCAgNywgIDIsIDE0KQorKyAgICAgICAgWDIoIDUsICA2LCAxMCwg
IDYpCisrICAgICAgICBYMiggOCwgMTUsICAxLCAxNSkKKysgICAgICAgIFgyKCA5LCAxNCwgIDks
ICA3KQorKyAgICAgICAgWDIoMTAsIDEzLCAgNSwgMTEpCisrICAgICAgICBYMigxMSwgMTIsIDEz
LCAgMykKKysKKysgICAgICAgIHQwICA9IF9tbV9hZGRfZXBpMzIodDBhLCB0M2EpOworKyAgICAg
ICAgdDEgID0gX21tX2FkZF9lcGkzMih0MWEsIHQyYSk7CisrICAgICAgICB0MiAgPSBfbW1fc3Vi
X2VwaTMyKHQxYSwgdDJhKTsKKysgICAgICAgIHQzICA9IF9tbV9zdWJfZXBpMzIodDBhLCB0M2Ep
OworKyAgICAgICAgdDQgID0gX21tX2FkZF9lcGkzMih0NGEsIHQ1YSk7CisrICAgICAgICB0NSAg
PSBfbW1fc3ViX2VwaTMyKHQ0YSwgdDVhKTsKKysgICAgICAgIHQ2ICA9IF9tbV9zdWJfZXBpMzIo
dDdhLCB0NmEpOworKyAgICAgICAgdDcgID0gX21tX2FkZF9lcGkzMih0N2EsIHQ2YSk7CisrICAg
ICAgICB0OCAgPSBfbW1fYWRkX2VwaTMyKHQ4YSwgdDlhKTsKKysgICAgICAgIHQ5ICA9IF9tbV9z
dWJfZXBpMzIodDhhLCB0OWEpOworKyAgICAgICAgdDEwID0gX21tX3N1Yl9lcGkzMih0MTFhLCB0
MTBhKTsKKysgICAgICAgIHQxMSA9IF9tbV9hZGRfZXBpMzIodDExYSwgdDEwYSk7CisrICAgICAg
ICB0MTIgPSBfbW1fYWRkX2VwaTMyKHQxMmEsIHQxM2EpOworKyAgICAgICAgdDEzID0gX21tX3N1
Yl9lcGkzMih0MTJhLCB0MTNhKTsKKysgICAgICAgIHQxNCA9IF9tbV9zdWJfZXBpMzIodDE1YSwg
dDE0YSk7CisrICAgICAgICB0MTUgPSBfbW1fYWRkX2VwaTMyKHQxNWEsIHQxNGEpOworKworKyAg
ICAgICAgWDMoIHQ1YSwgIHQ2YSwgdDYsICB0NSkKKysgICAgICAgIFg0KCB0OWEsIHQxNGEsIHQ5
LCAgdDE0LCBtMTUxMzcsIGM2MjcwKQorKyAgICAgICAgWDQodDEzYSwgdDEwYSwgdDEzLCB0MTAs
IGM2MjcwLCBtMTUxMzcpCisrCisrICAgICAgICB0MGEgID0gX21tX2FkZF9lcGkzMih0MCwgdDcp
OworKyAgICAgICAgdDFhICA9IF9tbV9hZGRfZXBpMzIodDEsIHQ2YSk7CisrICAgICAgICB0MmEg
ID0gX21tX2FkZF9lcGkzMih0MiwgdDVhKTsKKysgICAgICAgIHQzYSAgPSBfbW1fYWRkX2VwaTMy
KHQzLCB0NCk7CisrICAgICAgICB0NCAgID0gX21tX3N1Yl9lcGkzMih0MywgdDQpOworKyAgICAg
ICAgdDUgICA9IF9tbV9zdWJfZXBpMzIodDIsIHQ1YSk7CisrICAgICAgICB0NiAgID0gX21tX3N1
Yl9lcGkzMih0MSwgdDZhKTsKKysgICAgICAgIHQ3ICAgPSBfbW1fc3ViX2VwaTMyKHQwLCB0Nyk7
CisrICAgICAgICB0OGEgID0gX21tX2FkZF9lcGkzMih0OCwgdDExKTsKKysgICAgICAgIHQ5ICAg
PSBfbW1fYWRkX2VwaTMyKHQ5YSwgdDEwYSk7CisrICAgICAgICB0MTAgID0gX21tX3N1Yl9lcGkz
Mih0OWEsIHQxMGEpOworKyAgICAgICAgdDExYSA9IF9tbV9zdWJfZXBpMzIodDgsIHQxMSk7Cisr
ICAgICAgICB0MTJhID0gX21tX3N1Yl9lcGkzMih0MTUsIHQxMik7CisrICAgICAgICB0MTMgID0g
X21tX3N1Yl9lcGkzMih0MTRhLCB0MTNhKTsKKysgICAgICAgIHQxNCAgPSBfbW1fYWRkX2VwaTMy
KHQxNGEsIHQxM2EpOworKyAgICAgICAgdDE1YSA9IF9tbV9hZGRfZXBpMzIodDE1LCB0MTIpOwor
KworKyAgICAgICAgWDModDEwYSwgdDEzYSwgdDEzLCB0MTApCisrICAgICAgICBYMyh0MTEsIHQx
MiwgdDEyYSwgdDExYSkKKysKKysgICAgICAgIGlmICghcGFzcykgeworKyAgICAgICAgICAgIFg1
KCAwLCBhZGQsIHQwYSwgdDFhLCB0MmEsIHQzYSwgdDE1YSwgdDE0LCB0MTNhLCB0MTIpCisrICAg
ICAgICAgICAgWDUoIDQsIGFkZCwgdDQsICB0NSwgIHQ2LCAgdDcsICB0MTEsIHQxMGEsIHQ5LCB0
OGEpCisrICAgICAgICAgICAgWDUoIDgsIHN1YiwgdDcsICB0NiwgIHQ1LCAgdDQsICB0OGEsIHQ5
LCB0MTBhLCB0MTEpCisrICAgICAgICAgICAgWDUoMTIsIHN1YiwgdDNhLCB0MmEsIHQxYSwgdDBh
LCB0MTIsIHQxM2EsIHQxNCwgdDE1YSkKKysgICAgICAgICAgICBvdXQgKz0gNCAqIHN6OworKyAg
ICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBYNiggMCwgYWRkLCB0MGEsIHQxYSwgdDJhLCB0
M2EsIHQxNWEsIHQxNCwgdDEzYSwgdDEyKQorKyAgICAgICAgICAgIFg2KCA0LCBhZGQsIHQ0LCAg
dDUsICB0NiwgIHQ3LCAgdDExLCB0MTBhLCB0OSwgdDhhKQorKyAgICAgICAgICAgIFg2KCA4LCBz
dWIsIHQ3LCAgdDYsICB0NSwgIHQ0LCAgdDhhLCB0OSwgdDEwYSwgdDExKQorKyAgICAgICAgICAg
IFg2KDEyLCBzdWIsIHQzYSwgdDJhLCB0MWEsIHQwYSwgdDEyLCB0MTNhLCB0MTQsIHQxNWEpCisr
ICAgICAgICAgICAgb3V0ICs9IDQ7CisrICAgICAgICB9CisrICAgIH0KKyt9CisrCisrc3RhdGlj
IGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBpZGN0MzJfMWQoY29uc3QgaW50MTZfdCAqaW4sCisrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAqb3V0LCBpbnQgcGFz
cykKKyt7CisrICAgIF9fbTEyOGkgdjAsIHYxLCB2MiwgdjM7CisrICAgIF9fbTEyOGkgdDBhLCB0
MWEsIHQyYSwgdDNhLCB0NGEsIHQ1YSwgdDZhLCB0N2E7CisrICAgIF9fbTEyOGkgdDhhLCB0OWEs
IHQxMGEsIHQxMWEsIHQxMmEsIHQxM2EsIHQxNGEsIHQxNWE7CisrICAgIF9fbTEyOGkgdDE2YSwg
dDE3YSwgdDE4YSwgdDE5YSwgdDIwYSwgdDIxYSwgdDIyYSwgdDIzYTsKKysgICAgX19tMTI4aSB0
MjRhLCB0MjVhLCB0MjZhLCB0MjdhLCB0MjhhLCB0MjlhLCB0MzBhLCB0MzFhOworKyAgICBfX20x
MjhpIHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NzsKKysgICAgX19tMTI4aSB0OCwgdDks
IHQxMCwgdDExLCB0MTIsIHQxMywgdDE0LCB0MTU7CisrICAgIF9fbTEyOGkgdDE2LCB0MTcsIHQx
OCwgdDE5LCB0MjAsIHQyMSwgdDIyLCB0MjM7CisrICAgIF9fbTEyOGkgdDI0LCB0MjUsIHQyNiwg
dDI3LCB0MjgsIHQyOSwgdDMwLCB0MzE7CisrICAgIF9fbTEyOGkgcm91bmQgPSBfbW1fc2V0MV9l
cGkzMigxIDw8IDEzKTsKKysgICAgX19tMTI4aSBjMTE1ODUgPSBfbW1fc2V0MV9lcGkzMigxMTU4
NSk7CisrICAgIF9fbTEyOGkgbTE1MTM3ID0gX21tX3NldDFfZXBpMzIoLTE1MTM3KSwgYzYyNzAg
PSBfbW1fc2V0MV9lcGkzMig2MjcwKTsKKysgICAgX19tMTI4aSBtMTYwNjkgPSBfbW1fc2V0MV9l
cGkzMigtMTYwNjkpLCBjMzE5NiA9IF9tbV9zZXQxX2VwaTMyKDMxOTYpOworKyAgICBfX20xMjhp
IG05MTAyID0gX21tX3NldDFfZXBpMzIoLTkxMDIpLCBjMTM2MjMgPSBfbW1fc2V0MV9lcGkzMigx
MzYyMyk7CisrCisrICAgIFgxKGYwLCAxMTU4NSwgMTE1ODUpCisrICAgIFgxKGYxLCAxMTU4NSwg
LTExNTg1KQorKyAgICBYMShmMiwgNjI3MCwgLTE1MTM3KQorKyAgICBYMShmMywgMTUxMzcsIDYy
NzApCisrCisrICAgIFgxKGY0LCAzMTk2LCAtMTYwNjkpCisrICAgIFgxKGY3LCAxNjA2OSwgMzE5
NikKKysgICAgWDEoZjUsIDEzNjIzLCAtOTEwMikKKysgICAgWDEoZjYsIDkxMDIsIDEzNjIzKQor
KworKyAgICBYMShmOCwgMTYwNiwgLTE2MzA1KQorKyAgICBYMShmMTUsIDE2MzA1LCAxNjA2KQor
KyAgICBYMShmOSwgMTI2NjUsIC0xMDM5NCkKKysgICAgWDEoZjE0LCAxMDM5NCwgMTI2NjUpCisr
ICAgIFgxKGYxMCwgNzcyMywgLTE0NDQ5KQorKyAgICBYMShmMTMsIDE0NDQ5LCA3NzIzKQorKyAg
ICBYMShmMTEsIDE1Njc5LCAtNDc1NikKKysgICAgWDEoZjEyLCA0NzU2LCAxNTY3OSkKKysKKysg
ICAgWDEoZjE2LCA4MDQsIC0xNjM2NCkKKysgICAgWDEoZjMxLCAxNjM2NCwgODA0KQorKyAgICBY
MShmMTcsIDEyMTQwLCAtMTEwMDMpCisrICAgIFgxKGYzMCwgMTEwMDMsIDEyMTQwKQorKyAgICBY
MShmMTgsIDcwMDUsIC0xNDgxMSkKKysgICAgWDEoZjI5LCAxNDgxMSwgNzAwNSkKKysgICAgWDEo
ZjE5LCAxNTQyNiwgLTU1MjApCisrICAgIFgxKGYyOCwgNTUyMCwgMTU0MjYpCisrICAgIFgxKGYy
MCwgMzk4MSwgLTE1ODkzKQorKyAgICBYMShmMjcsIDE1ODkzLCAzOTgxKQorKyAgICBYMShmMjEs
IDE0MDUzLCAtODQyM1UpCisrICAgIFgxKGYyNiwgODQyM1UsIDE0MDUzKQorKyAgICBYMShmMjIs
IDk3NjAsIC0xMzE2MCkKKysgICAgWDEoZjI1LCAxMzE2MCwgOTc2MCkKKysgICAgWDEoZjIzLCAx
NjIwNywgLTI0MDQpCisrICAgIFgxKGYyNCwgMjQwNCwgMTYyMDcpCisrCisrICAgIGludCBpLCBz
eiA9IDMyOworKyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAoaSA9IDA7IGkgPCBz
ejsgaSArPSA0LCBpbiArPSA0KSB7CisrICAgICAgICBYMiggMCwgIDEsICAwLCAxNikKKysgICAg
ICAgIFgyKCAyLCAgMywgIDgsIDI0KQorKyAgICAgICAgWDIoIDQsICA3LCAgNCwgMjgpCisrICAg
ICAgICBYMiggNSwgIDYsIDIwLCAxMikKKysgICAgICAgIFgyKCA4LCAxNSwgIDIsIDMwKQorKyAg
ICAgICAgWDIoIDksIDE0LCAxOCwgMTQpCisrICAgICAgICBYMigxMCwgMTMsIDEwLCAyMikKKysg
ICAgICAgIFgyKDExLCAxMiwgMjYsICA2KQorKyAgICAgICAgWDIoMTYsIDMxLCAgMSwgMzEpCisr
ICAgICAgICBYMigxNywgMzAsIDE3LCAxNSkKKysgICAgICAgIFgyKDE4LCAyOSwgIDksIDIzKQor
KyAgICAgICAgWDIoMTksIDI4LCAyNSwgIDcpCisrICAgICAgICBYMigyMCwgMjcsICA1LCAyNykK
KysgICAgICAgIFgyKDIxLCAyNiwgMjEsIDExKQorKyAgICAgICAgWDIoMjIsIDI1LCAxMywgMTkp
CisrICAgICAgICBYMigyMywgMjQsIDI5LCAgMykKKysKKysgICAgICAgIHQwICA9IF9tbV9hZGRf
ZXBpMzIodDBhLCB0M2EpOworKyAgICAgICAgdDEgID0gX21tX2FkZF9lcGkzMih0MWEsIHQyYSk7
CisrICAgICAgICB0MiAgPSBfbW1fc3ViX2VwaTMyKHQxYSwgdDJhKTsKKysgICAgICAgIHQzICA9
IF9tbV9zdWJfZXBpMzIodDBhLCB0M2EpOworKyAgICAgICAgdDQgID0gX21tX2FkZF9lcGkzMih0
NGEsIHQ1YSk7CisrICAgICAgICB0NSAgPSBfbW1fc3ViX2VwaTMyKHQ0YSwgdDVhKTsKKysgICAg
ICAgIHQ2ICA9IF9tbV9zdWJfZXBpMzIodDdhLCB0NmEpOworKyAgICAgICAgdDcgID0gX21tX2Fk
ZF9lcGkzMih0N2EsIHQ2YSk7CisrICAgICAgICB0OCAgPSBfbW1fYWRkX2VwaTMyKHQ4YSwgdDlh
KTsKKysgICAgICAgIHQ5ICA9IF9tbV9zdWJfZXBpMzIodDhhLCB0OWEpOworKyAgICAgICAgdDEw
ID0gX21tX3N1Yl9lcGkzMih0MTFhLCB0MTBhKTsKKysgICAgICAgIHQxMSA9IF9tbV9hZGRfZXBp
MzIodDExYSwgdDEwYSk7CisrICAgICAgICB0MTIgPSBfbW1fYWRkX2VwaTMyKHQxMmEsIHQxM2Ep
OworKyAgICAgICAgdDEzID0gX21tX3N1Yl9lcGkzMih0MTJhLCB0MTNhKTsKKysgICAgICAgIHQx
NCA9IF9tbV9zdWJfZXBpMzIodDE1YSwgdDE0YSk7CisrICAgICAgICB0MTUgPSBfbW1fYWRkX2Vw
aTMyKHQxNWEsIHQxNGEpOworKyAgICAgICAgdDE2ID0gX21tX2FkZF9lcGkzMih0MTZhLCB0MTdh
KTsKKysgICAgICAgIHQxNyA9IF9tbV9zdWJfZXBpMzIodDE2YSwgdDE3YSk7CisrICAgICAgICB0
MTggPSBfbW1fc3ViX2VwaTMyKHQxOWEsIHQxOGEpOworKyAgICAgICAgdDE5ID0gX21tX2FkZF9l
cGkzMih0MTlhLCB0MThhKTsKKysgICAgICAgIHQyMCA9IF9tbV9hZGRfZXBpMzIodDIwYSwgdDIx
YSk7CisrICAgICAgICB0MjEgPSBfbW1fc3ViX2VwaTMyKHQyMGEsIHQyMWEpOworKyAgICAgICAg
dDIyID0gX21tX3N1Yl9lcGkzMih0MjNhLCB0MjJhKTsKKysgICAgICAgIHQyMyA9IF9tbV9hZGRf
ZXBpMzIodDIzYSwgdDIyYSk7CisrICAgICAgICB0MjQgPSBfbW1fYWRkX2VwaTMyKHQyNGEsIHQy
NWEpOworKyAgICAgICAgdDI1ID0gX21tX3N1Yl9lcGkzMih0MjRhLCB0MjVhKTsKKysgICAgICAg
IHQyNiA9IF9tbV9zdWJfZXBpMzIodDI3YSwgdDI2YSk7CisrICAgICAgICB0MjcgPSBfbW1fYWRk
X2VwaTMyKHQyN2EsIHQyNmEpOworKyAgICAgICAgdDI4ID0gX21tX2FkZF9lcGkzMih0MjhhLCB0
MjlhKTsKKysgICAgICAgIHQyOSA9IF9tbV9zdWJfZXBpMzIodDI4YSwgdDI5YSk7CisrICAgICAg
ICB0MzAgPSBfbW1fc3ViX2VwaTMyKHQzMWEsIHQzMGEpOworKyAgICAgICAgdDMxID0gX21tX2Fk
ZF9lcGkzMih0MzFhLCB0MzBhKTsKKysKKysgICAgICAgIFgzKCB0NWEsICB0NmEsIHQ2LCAgdDUp
CisrICAgICAgICBYNCggdDlhLCB0MTRhLCB0OSwgIHQxNCwgbTE1MTM3LCBjNjI3MCkKKysgICAg
ICAgIFg0KHQxM2EsIHQxMGEsIHQxMywgdDEwLCBjNjI3MCwgbTE1MTM3KQorKyAgICAgICAgWDQo
dDE3YSwgdDMwYSwgdDE3LCB0MzAsIG0xNjA2OSwgYzMxOTYpCisrICAgICAgICBYNCh0MjlhLCB0
MThhLCB0MjksIHQxOCwgYzMxOTYsIG0xNjA2OSkKKysgICAgICAgIFg0KHQyMWEsIHQyNmEsIHQy
MSwgdDI2LCBtOTEwMiwgYzEzNjIzKQorKyAgICAgICAgWDQodDI1YSwgdDIyYSwgdDI1LCB0MjIs
IGMxMzYyMywgbTkxMDIpCisrCisrICAgICAgICB0MGEgID0gX21tX2FkZF9lcGkzMih0MCwgdDcp
OworKyAgICAgICAgdDFhICA9IF9tbV9hZGRfZXBpMzIodDEsIHQ2YSk7CisrICAgICAgICB0MmEg
ID0gX21tX2FkZF9lcGkzMih0MiwgdDVhKTsKKysgICAgICAgIHQzYSAgPSBfbW1fYWRkX2VwaTMy
KHQzLCB0NCk7CisrICAgICAgICB0NGEgID0gX21tX3N1Yl9lcGkzMih0MywgdDQpOworKyAgICAg
ICAgdDUgICA9IF9tbV9zdWJfZXBpMzIodDIsIHQ1YSk7CisrICAgICAgICB0NiAgID0gX21tX3N1
Yl9lcGkzMih0MSwgdDZhKTsKKysgICAgICAgIHQ3YSAgPSBfbW1fc3ViX2VwaTMyKHQwLCB0Nyk7
CisrICAgICAgICB0OGEgID0gX21tX2FkZF9lcGkzMih0OCwgdDExKTsKKysgICAgICAgIHQ5ICAg
PSBfbW1fYWRkX2VwaTMyKHQ5YSwgdDEwYSk7CisrICAgICAgICB0MTAgID0gX21tX3N1Yl9lcGkz
Mih0OWEsIHQxMGEpOworKyAgICAgICAgdDExYSA9IF9tbV9zdWJfZXBpMzIodDgsIHQxMSk7Cisr
ICAgICAgICB0MTJhID0gX21tX3N1Yl9lcGkzMih0MTUsIHQxMik7CisrICAgICAgICB0MTMgID0g
X21tX3N1Yl9lcGkzMih0MTRhLCB0MTNhKTsKKysgICAgICAgIHQxNCAgPSBfbW1fYWRkX2VwaTMy
KHQxNGEsIHQxM2EpOworKyAgICAgICAgdDE1YSA9IF9tbV9hZGRfZXBpMzIodDE1LCB0MTIpOwor
KyAgICAgICAgdDE2YSA9IF9tbV9hZGRfZXBpMzIodDE2LCB0MTkpOworKyAgICAgICAgdDE3ICA9
IF9tbV9hZGRfZXBpMzIodDE3YSwgdDE4YSk7CisrICAgICAgICB0MTggID0gX21tX3N1Yl9lcGkz
Mih0MTdhLCB0MThhKTsKKysgICAgICAgIHQxOWEgPSBfbW1fc3ViX2VwaTMyKHQxNiwgdDE5KTsK
KysgICAgICAgIHQyMGEgPSBfbW1fc3ViX2VwaTMyKHQyMywgdDIwKTsKKysgICAgICAgIHQyMSAg
PSBfbW1fc3ViX2VwaTMyKHQyMmEsIHQyMWEpOworKyAgICAgICAgdDIyICA9IF9tbV9hZGRfZXBp
MzIodDIyYSwgdDIxYSk7CisrICAgICAgICB0MjNhID0gX21tX2FkZF9lcGkzMih0MjMsIHQyMCk7
CisrICAgICAgICB0MjRhID0gX21tX2FkZF9lcGkzMih0MjQsIHQyNyk7CisrICAgICAgICB0MjUg
ID0gX21tX2FkZF9lcGkzMih0MjVhLCB0MjZhKTsKKysgICAgICAgIHQyNiAgPSBfbW1fc3ViX2Vw
aTMyKHQyNWEsIHQyNmEpOworKyAgICAgICAgdDI3YSA9IF9tbV9zdWJfZXBpMzIodDI0LCB0Mjcp
OworKyAgICAgICAgdDI4YSA9IF9tbV9zdWJfZXBpMzIodDMxLCB0MjgpOworKyAgICAgICAgdDI5
ICA9IF9tbV9zdWJfZXBpMzIodDMwYSwgdDI5YSk7CisrICAgICAgICB0MzAgID0gX21tX2FkZF9l
cGkzMih0MzBhLCB0MjlhKTsKKysgICAgICAgIHQzMWEgPSBfbW1fYWRkX2VwaTMyKHQzMSwgdDI4
KTsKKysKKysgICAgICAgIFgzKHQxMGEsIHQxM2EsIHQxMywgdDEwKQorKyAgICAgICAgWDModDEx
LCB0MTIsIHQxMmEsIHQxMWEpCisrICAgICAgICBYNCh0MThhLCB0MjlhLCB0MTgsIHQyOSwgbTE1
MTM3LCBjNjI3MCkKKysgICAgICAgIFg0KHQxOSwgdDI4LCB0MTlhLCB0MjhhLCBtMTUxMzcsIGM2
MjcwKQorKyAgICAgICAgWDQodDI3LCB0MjAsIHQyN2EsIHQyMGEsIGM2MjcwLCBtMTUxMzcpCisr
ICAgICAgICBYNCh0MjZhLCB0MjFhLCB0MjYsIHQyMSwgYzYyNzAsIG0xNTEzNykKKysKKysgICAg
ICAgIHQwICAgPSBfbW1fYWRkX2VwaTMyKHQwYSwgdDE1YSk7CisrICAgICAgICB0MSAgID0gX21t
X2FkZF9lcGkzMih0MWEsIHQxNCk7CisrICAgICAgICB0MiAgID0gX21tX2FkZF9lcGkzMih0MmEs
IHQxM2EpOworKyAgICAgICAgdDMgICA9IF9tbV9hZGRfZXBpMzIodDNhLCB0MTIpOworKyAgICAg
ICAgdDQgICA9IF9tbV9hZGRfZXBpMzIodDRhLCB0MTEpOworKyAgICAgICAgdDVhICA9IF9tbV9h
ZGRfZXBpMzIodDUsIHQxMGEpOworKyAgICAgICAgdDZhICA9IF9tbV9hZGRfZXBpMzIodDYsIHQ5
KTsKKysgICAgICAgIHQ3ICAgPSBfbW1fYWRkX2VwaTMyKHQ3YSwgdDhhKTsKKysgICAgICAgIHQ4
ICAgPSBfbW1fc3ViX2VwaTMyKHQ3YSwgdDhhKTsKKysgICAgICAgIHQ5YSAgPSBfbW1fc3ViX2Vw
aTMyKHQ2LCB0OSk7CisrICAgICAgICB0MTAgID0gX21tX3N1Yl9lcGkzMih0NSwgdDEwYSk7Cisr
ICAgICAgICB0MTFhID0gX21tX3N1Yl9lcGkzMih0NGEsIHQxMSk7CisrICAgICAgICB0MTJhID0g
X21tX3N1Yl9lcGkzMih0M2EsIHQxMik7CisrICAgICAgICB0MTMgID0gX21tX3N1Yl9lcGkzMih0
MmEsIHQxM2EpOworKyAgICAgICAgdDE0YSA9IF9tbV9zdWJfZXBpMzIodDFhLCB0MTQpOworKyAg
ICAgICAgdDE1ICA9IF9tbV9zdWJfZXBpMzIodDBhLCB0MTVhKTsKKysgICAgICAgIHQxNiAgPSBf
bW1fYWRkX2VwaTMyKHQxNmEsIHQyM2EpOworKyAgICAgICAgdDE3YSA9IF9tbV9hZGRfZXBpMzIo
dDE3LCB0MjIpOworKyAgICAgICAgdDE4ICA9IF9tbV9hZGRfZXBpMzIodDE4YSwgdDIxYSk7Cisr
ICAgICAgICB0MTlhID0gX21tX2FkZF9lcGkzMih0MTksIHQyMCk7CisrICAgICAgICB0MjBhID0g
X21tX3N1Yl9lcGkzMih0MTksIHQyMCk7CisrICAgICAgICB0MjEgID0gX21tX3N1Yl9lcGkzMih0
MThhLCB0MjFhKTsKKysgICAgICAgIHQyMmEgPSBfbW1fc3ViX2VwaTMyKHQxNywgdDIyKTsKKysg
ICAgICAgIHQyMyAgPSBfbW1fc3ViX2VwaTMyKHQxNmEsIHQyM2EpOworKyAgICAgICAgdDI0ICA9
IF9tbV9zdWJfZXBpMzIodDMxYSwgdDI0YSk7CisrICAgICAgICB0MjVhID0gX21tX3N1Yl9lcGkz
Mih0MzAsIHQyNSk7CisrICAgICAgICB0MjYgID0gX21tX3N1Yl9lcGkzMih0MjlhLCB0MjZhKTsK
KysgICAgICAgIHQyN2EgPSBfbW1fc3ViX2VwaTMyKHQyOCwgdDI3KTsKKysgICAgICAgIHQyOGEg
PSBfbW1fYWRkX2VwaTMyKHQyOCwgdDI3KTsKKysgICAgICAgIHQyOSAgPSBfbW1fYWRkX2VwaTMy
KHQyOWEsIHQyNmEpOworKyAgICAgICAgdDMwYSA9IF9tbV9hZGRfZXBpMzIodDMwLCB0MjUpOwor
KyAgICAgICAgdDMxICA9IF9tbV9hZGRfZXBpMzIodDMxYSwgdDI0YSk7CisrCisrICAgICAgICBY
Myh0MjAsIHQyNywgdDI3YSwgdDIwYSkKKysgICAgICAgIFgzKHQyMWEsIHQyNmEsIHQyNiwgdDIx
KQorKyAgICAgICAgWDModDIyLCB0MjUsIHQyNWEsIHQyMmEpCisrICAgICAgICBYMyh0MjNhLCB0
MjRhLCB0MjQsIHQyMykKKysKKysgICAgICAgIGlmICghcGFzcykgeworKyAgICAgICAgICAgIFg1
KCAwLCBhZGQsIHQwLCAgIHQxLCAgdDIsICAgdDMsICAgdDMxLCB0MzBhLCB0MjksIHQyOGEpCisr
ICAgICAgICAgICAgWDUoIDQsIGFkZCwgdDQsICAgdDVhLCB0NmEsICB0NywgICB0MjcsIHQyNmEs
IHQyNSwgdDI0YSkKKysgICAgICAgICAgICBYNSggOCwgYWRkLCB0OCwgICB0OWEsIHQxMCwgIHQx
MWEsIHQyM2EsIHQyMiwgdDIxYSwgdDIwKQorKyAgICAgICAgICAgIFg1KDEyLCBhZGQsIHQxMmEs
IHQxMywgdDE0YSwgdDE1LCAgdDE5YSwgdDE4LCB0MTdhLCB0MTYpCisrICAgICAgICAgICAgWDUo
MTYsIHN1YiwgdDE1LCAgdDE0YSwgdDEzLCB0MTJhLCB0MTYsIHQxN2EsIHQxOCwgdDE5YSkKKysg
ICAgICAgICAgICBYNSgyMCwgc3ViLCB0MTFhLCB0MTAsICB0OWEsIHQ4LCAgIHQyMCwgdDIxYSwg
dDIyLCB0MjNhKQorKyAgICAgICAgICAgIFg1KDI0LCBzdWIsIHQ3LCAgIHQ2YSwgIHQ1YSwgdDQs
ICAgdDI0YSwgdDI1LCB0MjZhLCB0MjcpCisrICAgICAgICAgICAgWDUoMjgsIHN1YiwgdDMsICAg
dDIsICAgdDEsICB0MCwgICB0MjhhLCB0MjksIHQzMGEsIHQzMSkKKysgICAgICAgICAgICBvdXQg
Kz0gNCAqIHN6OworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBYNiggMCwgYWRkLCB0
MCwgICB0MSwgIHQyLCAgIHQzLCAgIHQzMSwgdDMwYSwgdDI5LCB0MjhhKQorKyAgICAgICAgICAg
IFg2KCA0LCBhZGQsIHQ0LCAgIHQ1YSwgdDZhLCAgdDcsICAgdDI3LCB0MjZhLCB0MjUsIHQyNGEp
CisrICAgICAgICAgICAgWDYoIDgsIGFkZCwgdDgsICAgdDlhLCB0MTAsICB0MTFhLCB0MjNhLCB0
MjIsIHQyMWEsIHQyMCkKKysgICAgICAgICAgICBYNigxMiwgYWRkLCB0MTJhLCB0MTMsIHQxNGEs
IHQxNSwgIHQxOWEsIHQxOCwgdDE3YSwgdDE2KQorKyAgICAgICAgICAgIFg2KDE2LCBzdWIsIHQx
NSwgIHQxNGEsIHQxMywgdDEyYSwgdDE2LCB0MTdhLCB0MTgsIHQxOWEpCisrICAgICAgICAgICAg
WDYoMjAsIHN1YiwgdDExYSwgdDEwLCAgdDlhLCB0OCwgICB0MjAsIHQyMWEsIHQyMiwgdDIzYSkK
KysgICAgICAgICAgICBYNigyNCwgc3ViLCB0NywgICB0NmEsICB0NWEsIHQ0LCAgIHQyNGEsIHQy
NSwgdDI2YSwgdDI3KQorKyAgICAgICAgICAgIFg2KDI4LCBzdWIsIHQzLCAgIHQyLCAgIHQxLCAg
dDAsICAgdDI4YSwgdDI5LCB0MzBhLCB0MzEpCisrICAgICAgICAgICAgb3V0ICs9IDQ7CisrICAg
ICAgICB9CisrICAgIH0KKyt9CisrCisrI3VuZGVmIElOCisrI3VuZGVmIFgxCisrI3VuZGVmIFgy
CisrI3VuZGVmIFgzCisrI3VuZGVmIFg0CisrI3VuZGVmIFg1CisrI3VuZGVmIFg2CisrCisraXR4
Zm1fd3JhcHBlcjQoaWRjdCwgaWRjdCwgNCwgNCwgMSkKKytpdHhmbV93cmFwcGVyOChpZGN0LCBp
ZGN0LCA4LCA1LCAxKQorK2l0eGZtX3dyYXBwZXIxNihpZGN0LCBpZGN0LCAxNiwgNiwgMSkKKytp
dHhmbV93cmFwcGVyMTYoaWRjdCwgaWRjdCwgMzIsIDYsIDEpCisrCisrI3VuZGVmIGl0eGZtX3dy
YXBwZXI0CisrI3VuZGVmIGl0eGZtX3dyYXBwZXI4CisrI3VuZGVmIGl0eGZtX3dyYXBwZXIxNgor
KworK3N0YXRpYyBhdl9jb2xkIHZvaWQgZmZfdnA5ZHNwX2l0eGZtX2luaXRfOF9lMmsoVlA5RFNQ
Q29udGV4dCAqZHNwKQorK3sKKysKKysjZGVmaW5lIGluaXRfaWRjdCh0eCwgbm0pIFwKKysgICAg
ZHNwLT5pdHhmbV9hZGRbdHhdW0RDVF9EQ1RdICAgPSBcCisrICAgIGRzcC0+aXR4Zm1fYWRkW3R4
XVtBRFNUX0RDVF0gID0gXAorKyAgICBkc3AtPml0eGZtX2FkZFt0eF1bRENUX0FEU1RdICA9IFwK
KysgICAgZHNwLT5pdHhmbV9hZGRbdHhdW0FEU1RfQURTVF0gPSBubSMjX2FkZF9lMmsKKysKKysg
ICAgZHNwLT5pdHhmbV9hZGRbVFhfNFg0XVtEQ1RfRENUXSA9IGlkY3RfaWRjdF80eDRfYWRkX2Uy
azsKKysgICAgZHNwLT5pdHhmbV9hZGRbVFhfOFg4XVtEQ1RfRENUXSA9IGlkY3RfaWRjdF84eDhf
YWRkX2UyazsKKysgICAgZHNwLT5pdHhmbV9hZGRbVFhfMTZYMTZdW0RDVF9EQ1RdID0gaWRjdF9p
ZGN0XzE2eDE2X2FkZF9lMms7CisrCisrICAgIGluaXRfaWRjdChUWF8zMlgzMiwgaWRjdF9pZGN0
XzMyeDMyKTsKKysKKysjdW5kZWYgaW5pdF9pZGN0CisrfQorKworKyNkZWZpbmUgTE9BRF9UUkFO
U1BPU0U4KGRzdCwgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSBcCisrICAgIHQwID0g
VkVDX0xEOChkc3QgKyBzdHJpZGUgKiAwKTsgXAorKyAgICB0MSA9IFZFQ19MRDgoZHN0ICsgc3Ry
aWRlICogMSk7IFwKKysgICAgdDIgPSBWRUNfTEQ4KGRzdCArIHN0cmlkZSAqIDIpOyBcCisrICAg
IHQzID0gVkVDX0xEOChkc3QgKyBzdHJpZGUgKiAzKTsgXAorKyAgICB0NCA9IFZFQ19MRDgoZHN0
ICsgc3RyaWRlICogNCk7IFwKKysgICAgdDUgPSBWRUNfTEQ4KGRzdCArIHN0cmlkZSAqIDUpOyBc
CisrICAgIHQ2ID0gVkVDX0xEOChkc3QgKyBzdHJpZGUgKiA2KTsgXAorKyAgICB0NyA9IFZFQ19M
RDgoZHN0ICsgc3RyaWRlICogNyk7IFwKKysgICAgdDAgPSBfbW1fdW5wYWNrbG9fZXBpOCh0MCwg
dDQpOyBcCisrICAgIHQxID0gX21tX3VucGFja2xvX2VwaTgodDEsIHQ1KTsgXAorKyAgICB0MiA9
IF9tbV91bnBhY2tsb19lcGk4KHQyLCB0Nik7IFwKKysgICAgdDMgPSBfbW1fdW5wYWNrbG9fZXBp
OCh0MywgdDcpOyBcCisrICAgIHQ0ID0gX21tX3VucGFja2xvX2VwaTgodDAsIHQyKTsgXAorKyAg
ICB0NSA9IF9tbV91bnBhY2toaV9lcGk4KHQwLCB0Mik7IFwKKysgICAgdDYgPSBfbW1fdW5wYWNr
bG9fZXBpOCh0MSwgdDMpOyBcCisrICAgIHQ3ID0gX21tX3VucGFja2hpX2VwaTgodDEsIHQzKTsg
XAorKyAgICB0MCA9IF9tbV91bnBhY2tsb19lcGk4KHQ0LCB0Nik7IFwKKysgICAgdDEgPSBfbW1f
dW5wYWNraGlfZXBpOCh0NCwgdDYpOyBcCisrICAgIHQyID0gX21tX3VucGFja2xvX2VwaTgodDUs
IHQ3KTsgXAorKyAgICB0MyA9IF9tbV91bnBhY2toaV9lcGk4KHQ1LCB0Nyk7IFwKKysgICAgYTAg
PSBfbW1fdW5wYWNrbG9fZXBpOCh0MCwgemVyb3YpOyBcCisrICAgIGExID0gX21tX3VucGFja2hp
X2VwaTgodDAsIHplcm92KTsgXAorKyAgICBhMiA9IF9tbV91bnBhY2tsb19lcGk4KHQxLCB6ZXJv
dik7IFwKKysgICAgYTMgPSBfbW1fdW5wYWNraGlfZXBpOCh0MSwgemVyb3YpOyBcCisrICAgIGE0
ID0gX21tX3VucGFja2xvX2VwaTgodDIsIHplcm92KTsgXAorKyAgICBhNSA9IF9tbV91bnBhY2to
aV9lcGk4KHQyLCB6ZXJvdik7IFwKKysgICAgYTYgPSBfbW1fdW5wYWNrbG9fZXBpOCh0MywgemVy
b3YpOyBcCisrICAgIGE3ID0gX21tX3VucGFja2hpX2VwaTgodDMsIHplcm92KQorKworKyNkZWZp
bmUgU1RPUkVfVFJBTlNQT1NFOChkc3QsIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykg
XAorKyAgICB0MCA9IF9tbV9wYWNrdXNfZXBpMTYoYTAsIGExKTsgXAorKyAgICB0MSA9IF9tbV9w
YWNrdXNfZXBpMTYoYTIsIGEzKTsgXAorKyAgICB0MiA9IF9tbV9wYWNrdXNfZXBpMTYoYTQsIGE1
KTsgXAorKyAgICB0MyA9IF9tbV9wYWNrdXNfZXBpMTYoYTYsIGE3KTsgXAorKyAgICB0NCA9IF9t
bV91bnBhY2tsb19lcGk4KHQwLCB0Mik7IFwKKysgICAgdDUgPSBfbW1fdW5wYWNraGlfZXBpOCh0
MCwgdDIpOyBcCisrICAgIHQ2ID0gX21tX3VucGFja2xvX2VwaTgodDEsIHQzKTsgXAorKyAgICB0
NyA9IF9tbV91bnBhY2toaV9lcGk4KHQxLCB0Myk7IFwKKysgICAgdDAgPSBfbW1fdW5wYWNrbG9f
ZXBpOCh0NCwgdDYpOyBcCisrICAgIHQxID0gX21tX3VucGFja2hpX2VwaTgodDQsIHQ2KTsgXAor
KyAgICB0MiA9IF9tbV91bnBhY2tsb19lcGk4KHQ1LCB0Nyk7IFwKKysgICAgdDMgPSBfbW1fdW5w
YWNraGlfZXBpOCh0NSwgdDcpOyBcCisrICAgIHQ0ID0gX21tX3VucGFja2xvX2VwaTgodDAsIHQy
KTsgXAorKyAgICB0NSA9IF9tbV91bnBhY2toaV9lcGk4KHQwLCB0Mik7IFwKKysgICAgdDYgPSBf
bW1fdW5wYWNrbG9fZXBpOCh0MSwgdDMpOyBcCisrICAgIHQ3ID0gX21tX3VucGFja2hpX2VwaTgo
dDEsIHQzKTsgXAorKyAgICBWRUNfU1RMKGRzdCArIHN0cmlkZSAqIDAsIHQ0KTsgXAorKyAgICBW
RUNfU1RIKGRzdCArIHN0cmlkZSAqIDEsIHQ0KTsgXAorKyAgICBWRUNfU1RMKGRzdCArIHN0cmlk
ZSAqIDIsIHQ1KTsgXAorKyAgICBWRUNfU1RIKGRzdCArIHN0cmlkZSAqIDMsIHQ1KTsgXAorKyAg
ICBWRUNfU1RMKGRzdCArIHN0cmlkZSAqIDQsIHQ2KTsgXAorKyAgICBWRUNfU1RIKGRzdCArIHN0
cmlkZSAqIDUsIHQ2KTsgXAorKyAgICBWRUNfU1RMKGRzdCArIHN0cmlkZSAqIDYsIHQ3KTsgXAor
KyAgICBWRUNfU1RIKGRzdCArIHN0cmlkZSAqIDcsIHQ3KQorKworKworK3N0YXRpYyBhdl9hbHdh
eXNfaW5saW5lIHZvaWQgbG9vcF9maWx0ZXJfaCh1aW50OF90ICpkc3QsIGludCBFLCBpbnQgSSwg
aW50IEgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRp
ZmZfdCBzdHJpZGUsIGludCB3ZCkKKyt7CisrICAgIGludCBGID0gMTsKKysgICAgTE9BRF9aRVJP
OworKyAgICBfX20xMjhpIHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NzsKKysgICAgX19t
MTI4aSB2Zm0sIHZmbGF0OG91dCwgdmZsYXQ4aW4sIHZoZXY7CisrICAgIF9fbTEyOGkgcDJhLCBw
MWEsIHAwYSwgcTBhLCBxMWEsIHEyYTsKKysgICAgX19tMTI4aSBwNmEsIHA1YSwgcDRhLCBwM2Es
IHEzYSwgcTRhLCBxNWEsIHE2YTsKKysKKysgICAgX19tMTI4aSB2RiA9IF9tbV9zZXQxX2VwaTE2
KEYpOworKyAgICBfX20xMjhpIHZJID0gX21tX3NldDFfZXBpMTYoSSk7CisrICAgIF9fbTEyOGkg
dkUgPSBfbW1fc2V0MV9lcGkxNihFKTsKKysgICAgX19tMTI4aSB2SCA9IF9tbV9zZXQxX2VwaTE2
KEgpOworKworKyAgICBfX20xMjhpIHA3LCBwNiwgcDUsIHA0LCBwMywgcDIsIHAxLCBwMDsKKysg
ICAgX19tMTI4aSBxMCwgcTEsIHEyLCBxMywgcTQsIHE1LCBxNiwgcTc7CisrCisrICAgIGlmICh3
ZCA+PSAxNikgeworKyAgICAgICAgTE9BRF9UUkFOU1BPU0U4KGRzdCAtIDgsIHA3LCBwNiwgcDUs
IHA0LCBwMywgcDIsIHAxLCBwMCk7CisrICAgICAgICBMT0FEX1RSQU5TUE9TRTgoZHN0ICAgICwg
cTAsIHExLCBxMiwgcTMsIHE0LCBxNSwgcTYsIHE3KTsKKysgICAgICAgIHA2YSA9IHA2OyBwNWEg
PSBwNTsKKysgICAgICAgIHA0YSA9IHA0OyBwM2EgPSBwMzsKKysgICAgICAgIHEzYSA9IHEzOyBx
NGEgPSBxNDsKKysgICAgICAgIHE1YSA9IHE1OyBxNmEgPSBxNjsKKysgICAgfSBlbHNlIHsKKysg
ICAgICAgIExPQURfVFJBTlNQT1NFOChkc3QgLSA0LCBwMywgcDIsIHAxLCBwMCwgcTAsIHExLCBx
MiwgcTMpOworKyAgICB9CisrCisrICAgIHQwID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2VwaTE2
KHAzLCBwMikpOworKyAgICB0MSA9IF9tbV9hYnNfZXBpMTYoX21tX3N1Yl9lcGkxNihwMiwgcDEp
KTsKKysgICAgdDIgPSBfbW1fYWJzX2VwaTE2KF9tbV9zdWJfZXBpMTYocDEsIHAwKSk7CisrICAg
IHQzID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2VwaTE2KHExLCBxMCkpOworKyAgICB0NCA9IF9t
bV9hYnNfZXBpMTYoX21tX3N1Yl9lcGkxNihxMiwgcTEpKTsKKysgICAgdDUgPSBfbW1fYWJzX2Vw
aTE2KF9tbV9zdWJfZXBpMTYocTMsIHEyKSk7CisrICAgIHZoZXYgPSBfbW1fb3Jfc2kxMjgoX21t
X2NtcGd0X2VwaTE2KHQyLCB2SCksIF9tbV9jbXBndF9lcGkxNih0MywgdkgpKTsKKysgICAgdDAg
PSBfbW1fY21wZ3RfZXBpMTYodDAsIHZJKTsKKysgICAgdDEgPSBfbW1fY21wZ3RfZXBpMTYodDEs
IHZJKTsKKysgICAgdDIgPSBfbW1fY21wZ3RfZXBpMTYodDIsIHZJKTsKKysgICAgdDMgPSBfbW1f
Y21wZ3RfZXBpMTYodDMsIHZJKTsKKysgICAgdDQgPSBfbW1fY21wZ3RfZXBpMTYodDQsIHZJKTsK
KysgICAgdDUgPSBfbW1fY21wZ3RfZXBpMTYodDUsIHZJKTsKKysKKysgICAgdDAgPSBfbW1fb3Jf
c2kxMjgoX21tX29yX3NpMTI4KHQwLCB0MSksIHQyKTsKKysgICAgdDMgPSBfbW1fb3Jfc2kxMjgo
X21tX29yX3NpMTI4KHQzLCB0NCksIHQ1KTsKKysgICAgdDAgPSBfbW1fb3Jfc2kxMjgodDAsIHQz
KTsKKysKKysgICAgdDYgPSBfbW1fYWJzX2VwaTE2KF9tbV9zdWJfZXBpMTYocDAsIHEwKSk7Cisr
ICAgIHQ3ID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2VwaTE2KHAxLCBxMSkpOworKyAgICB0NiA9
IF9tbV9hZGRfZXBpMTYoX21tX3NsbGlfZXBpMTYodDYsIDEpLCBfbW1fc3JhaV9lcGkxNih0Nywg
MSkpOworKyAgICB0NiA9IF9tbV9jbXBndF9lcGkxNih0NiwgdkUpOworKyAgICB2Zm0gPSBfbW1f
b3Jfc2kxMjgodDAsIHQ2KTsgLy8gIWZtCisrCisrICAgIGlmIChfbW1fbW92ZW1hc2tfZXBpOCh2
Zm0pID09IDB4ZmZmZikgcmV0dXJuOworKworKyAgICBpZiAod2QgPj0gOCkgeworKyAgICAgICAg
dDAgPSBfbW1fYWJzX2VwaTE2KF9tbV9zdWJfZXBpMTYocDMsIHAwKSk7CisrICAgICAgICB0MSA9
IF9tbV9hYnNfZXBpMTYoX21tX3N1Yl9lcGkxNihwMiwgcDApKTsKKysgICAgICAgIHQyID0gX21t
X2Fic19lcGkxNihfbW1fc3ViX2VwaTE2KHAxLCBwMCkpOworKyAgICAgICAgdDMgPSBfbW1fYWJz
X2VwaTE2KF9tbV9zdWJfZXBpMTYocTEsIHEwKSk7CisrICAgICAgICB0NCA9IF9tbV9hYnNfZXBp
MTYoX21tX3N1Yl9lcGkxNihxMiwgcTApKTsKKysgICAgICAgIHQ1ID0gX21tX2Fic19lcGkxNihf
bW1fc3ViX2VwaTE2KHEzLCBxMCkpOworKyAgICAgICAgdDAgPSBfbW1fY21wZ3RfZXBpMTYodDAs
IHZGKTsKKysgICAgICAgIHQxID0gX21tX2NtcGd0X2VwaTE2KHQxLCB2Rik7CisrICAgICAgICB0
MiA9IF9tbV9jbXBndF9lcGkxNih0MiwgdkYpOworKyAgICAgICAgdDMgPSBfbW1fY21wZ3RfZXBp
MTYodDMsIHZGKTsKKysgICAgICAgIHQ0ID0gX21tX2NtcGd0X2VwaTE2KHQ0LCB2Rik7CisrICAg
ICAgICB0NSA9IF9tbV9jbXBndF9lcGkxNih0NSwgdkYpOworKworKyAgICAgICAgdDAgPSBfbW1f
b3Jfc2kxMjgoX21tX29yX3NpMTI4KHQwLCB0MSksIHQyKTsKKysgICAgICAgIHQzID0gX21tX29y
X3NpMTI4KF9tbV9vcl9zaTEyOCh0MywgdDQpLCB0NSk7CisrICAgICAgICB2ZmxhdDhpbiA9IF9t
bV9vcl9zaTEyOChfbW1fb3Jfc2kxMjgodDAsIHQzKSwgdmZtKTsKKysgICAgfQorKworKyAgICB7
CisrICAgICAgICBfX20xMjhpIGMxID0gX21tX3NldDFfZXBpMTYoMSk7CisrICAgICAgICBfX20x
MjhpIGMxMjcgPSBfbW1fc2V0MV9lcGkxNigxMjcpOworKyAgICAgICAgX19tMTI4aSBtMTI4ID0g
X21tX3NldDFfZXBpMTYoLTEyOCk7CisrICAgICAgICBfX20xMjhpIGM0MyA9IF9tbV9zZXRyX2Vw
aTgoNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgMywgMywgMywgMywgMywgMywgMywgMyk7CisrICAg
ICAgICB0MCA9IF9tbV9hbmRfc2kxMjgodmhldiwgX21tX3N1Yl9lcGkxNihwMSwgcTEpKTsKKysg
ICAgICAgIHQxID0gX21tX3N1Yl9lcGkxNihxMCwgcDApOworKyAgICAgICAgdDAgPSBfbW1fbWlu
X2VwaTE2KF9tbV9tYXhfZXBpMTYodDAsIG0xMjgpLCBjMTI3KTsKKysgICAgICAgIC8vIGYgPSBh
dl9jbGlwX2ludHAyKHAxIC0gcTEsIDcpICYgaGV2OworKyAgICAgICAgdDEgPSBfbW1fYWRkX2Vw
aTE2KF9tbV9hZGRfZXBpMTYodDEsIHQwKSwgX21tX2FkZF9lcGkxNih0MSwgdDEpKTsKKysgICAg
ICAgIHQxID0gX21tX2FuZG5vdF9zaTEyOCh2Zm0sIHQxKTsKKysgICAgICAgIHQxID0gX21tX3Bh
Y2tzX2VwaTE2KHQxLCB0MSk7CisrICAgICAgICAvLyBmID0gYXZfY2xpcF9pbnRwMigzICogKHEw
IC0gcDApICsgZiwgNyk7CisrICAgICAgICB0MyA9IF9tbV9hZGRzX2VwaTgodDEsIGM0Myk7Cisr
ICAgICAgICB0MiA9IF9tbV9zcmFpX2VwaTE2KF9tbV91bnBhY2tsb19lcGk4KHQzLCB0MyksIDgg
KyAzKTsKKysgICAgICAgIC8vIGYxID0gRkZNSU4oZiArIDQsIDB4N2YpID4+IDM7CisrICAgICAg
ICB0MyA9IF9tbV9zcmFpX2VwaTE2KF9tbV91bnBhY2toaV9lcGk4KHQzLCB0MyksIDggKyAzKTsK
KysgICAgICAgIC8vIGYyID0gRkZNSU4oZiArIDMsIDB4N2YpID4+IDM7CisrICAgICAgICB0NCA9
IF9tbV9zcmFpX2VwaTE2KF9tbV9hZGRfZXBpMTYodDIsIGMxKSwgMSk7CisrICAgICAgICB0NCA9
IF9tbV9hbmRub3Rfc2kxMjgodmhldiwgdDQpOyAvLyBmMyA9ICgoZjEgKyAxKSA+PiAxKSAmIH5o
ZXY7CisrICAgICAgICBwMWEgPSBfbW1fYWRkX2VwaTE2KHAxLCB0NCk7IC8vIGF2X2NsaXBfdWlu
dDgocDEgKyBmMyk7CisrICAgICAgICBwMGEgPSBfbW1fYWRkX2VwaTE2KHAwLCB0Myk7IC8vIGF2
X2NsaXBfdWludDgocDAgKyBmMik7CisrICAgICAgICBxMGEgPSBfbW1fc3ViX2VwaTE2KHEwLCB0
Mik7IC8vIGF2X2NsaXBfdWludDgocTAgLSBmMSk7CisrICAgICAgICBxMWEgPSBfbW1fc3ViX2Vw
aTE2KHExLCB0NCk7IC8vIGF2X2NsaXBfdWludDgocTEgLSBmMyk7CisrICAgIH0KKysKKysgICAg
cDJhID0gcDI7IHEyYSA9IHEyOworKworKyAgICBpZiAod2QgPj0gOCAmJiAoX21tX21vdmVtYXNr
X2VwaTgodmZsYXQ4aW4pICE9IDB4ZmZmZikpIHsKKysgICAgICAgIF9fbTEyOGkgYzQgPSBfbW1f
c2V0MV9lcGkxNig0KTsKKysgICAgICAgIHQwID0gX21tX2FkZF9lcGkxNihfbW1fc2xsaV9lcGkx
NihwMywgMiksIGM0KTsKKysgICAgICAgIHQxID0gX21tX2FkZF9lcGkxNihfbW1fYWRkX2VwaTE2
KHEwLCBwMCksIF9tbV9hZGRfZXBpMTYocDEsIHAyKSk7CisrICAgICAgICB0MCA9IF9tbV9zdWJf
ZXBpMTYodDAsIHAzKTsKKysgICAgICAgIHQwID0gX21tX2FkZF9lcGkxNih0MCwgdDEpOworKyAg
ICAgICAgdDEgPSBfbW1fc3JhaV9lcGkxNihfbW1fYWRkX2VwaTE2KHAyLCB0MCksIDMpOworKyAg
ICAgICAgdDAgPSBfbW1fYWRkX2VwaTE2KHQwLCBfbW1fc3ViX2VwaTE2KHExLCBwMykpOworKyAg
ICAgICAgdDIgPSBfbW1fc3JhaV9lcGkxNihfbW1fYWRkX2VwaTE2KHAxLCB0MCksIDMpOworKyAg
ICAgICAgcDJhID0gX21tX2JsZW5kdl9lcGk4KHQxLCBwMiwgdmZsYXQ4aW4pOworKyAgICAgICAg
cDFhID0gX21tX2JsZW5kdl9lcGk4KHQyLCBwMWEsIHZmbGF0OGluKTsKKysKKysgICAgICAgIHQw
ID0gX21tX2FkZF9lcGkxNih0MCwgX21tX3N1Yl9lcGkxNihxMiwgcDMpKTsKKysgICAgICAgIHQx
ID0gX21tX3NyYWlfZXBpMTYoX21tX2FkZF9lcGkxNihwMCwgdDApLCAzKTsKKysgICAgICAgIHQw
ID0gX21tX2FkZF9lcGkxNih0MCwgX21tX3N1Yl9lcGkxNihxMywgcDMpKTsKKysgICAgICAgIHQy
ID0gX21tX3NyYWlfZXBpMTYoX21tX2FkZF9lcGkxNihxMCwgdDApLCAzKTsKKysgICAgICAgIHAw
YSA9IF9tbV9ibGVuZHZfZXBpOCh0MSwgcDBhLCB2ZmxhdDhpbik7CisrICAgICAgICBxMGEgPSBf
bW1fYmxlbmR2X2VwaTgodDIsIHEwYSwgdmZsYXQ4aW4pOworKworKyAgICAgICAgdDAgPSBfbW1f
YWRkX2VwaTE2KHQwLCBfbW1fc3ViX2VwaTE2KHEzLCBwMikpOworKyAgICAgICAgdDEgPSBfbW1f
c3JhaV9lcGkxNihfbW1fYWRkX2VwaTE2KHExLCB0MCksIDMpOworKyAgICAgICAgdDAgPSBfbW1f
YWRkX2VwaTE2KHQwLCBfbW1fc3ViX2VwaTE2KHEzLCBwMSkpOworKyAgICAgICAgdDIgPSBfbW1f
c3JhaV9lcGkxNihfbW1fYWRkX2VwaTE2KHEyLCB0MCksIDMpOworKyAgICAgICAgcTFhID0gX21t
X2JsZW5kdl9lcGk4KHQxLCBxMWEsIHZmbGF0OGluKTsKKysgICAgICAgIHEyYSA9IF9tbV9ibGVu
ZHZfZXBpOCh0MiwgcTIsIHZmbGF0OGluKTsKKysKKysgICAgICAgIGlmICh3ZCA+PSAxNikgewor
KyAgICAgICAgICAgIHQwID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2VwaTE2KHA3LCBwMCkpOwor
KyAgICAgICAgICAgIHQxID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2VwaTE2KHA2LCBwMCkpOwor
KyAgICAgICAgICAgIHQyID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2VwaTE2KHA1LCBwMCkpOwor
KyAgICAgICAgICAgIHQzID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2VwaTE2KHA0LCBwMCkpOwor
KyAgICAgICAgICAgIHQ0ID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2VwaTE2KHE0LCBxMCkpOwor
KyAgICAgICAgICAgIHQ1ID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2VwaTE2KHE1LCBxMCkpOwor
KyAgICAgICAgICAgIHQ2ID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2VwaTE2KHE2LCBxMCkpOwor
KyAgICAgICAgICAgIHQ3ID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2VwaTE2KHE3LCBxMCkpOwor
KworKyAgICAgICAgICAgIHQwID0gX21tX2NtcGd0X2VwaTE2KHQwLCB2Rik7CisrICAgICAgICAg
ICAgdDEgPSBfbW1fY21wZ3RfZXBpMTYodDEsIHZGKTsKKysgICAgICAgICAgICB0MiA9IF9tbV9j
bXBndF9lcGkxNih0MiwgdkYpOworKyAgICAgICAgICAgIHQzID0gX21tX2NtcGd0X2VwaTE2KHQz
LCB2Rik7CisrICAgICAgICAgICAgdDQgPSBfbW1fY21wZ3RfZXBpMTYodDQsIHZGKTsKKysgICAg
ICAgICAgICB0NSA9IF9tbV9jbXBndF9lcGkxNih0NSwgdkYpOworKyAgICAgICAgICAgIHQ2ID0g
X21tX2NtcGd0X2VwaTE2KHQ2LCB2Rik7CisrICAgICAgICAgICAgdDcgPSBfbW1fY21wZ3RfZXBp
MTYodDcsIHZGKTsKKysKKysgICAgICAgICAgICB0MCA9IF9tbV9vcl9zaTEyOChfbW1fb3Jfc2kx
MjgodDAsIHQxKSwgX21tX29yX3NpMTI4KHQyLCB0MykpOworKyAgICAgICAgICAgIHQ0ID0gX21t
X29yX3NpMTI4KF9tbV9vcl9zaTEyOCh0NCwgdDUpLCBfbW1fb3Jfc2kxMjgodDYsIHQ3KSk7Cisr
ICAgICAgICAgICAgdmZsYXQ4b3V0ID0gX21tX29yX3NpMTI4KHQwLCB0NCk7CisrICAgICAgICAg
ICAgdmZsYXQ4b3V0ID0gX21tX29yX3NpMTI4KHZmbGF0OG91dCwgdmZsYXQ4aW4pOworKworKyAg
ICAgICAgICAgIGlmIChfbW1fbW92ZW1hc2tfZXBpOCh2ZmxhdDhvdXQpICE9IDB4ZmZmZikgewor
KyAgICAgICAgICAgICAgICBfX20xMjhpIGM4ID0gX21tX3NldDFfZXBpMTYoOCk7CisrICAgICAg
ICAgICAgICAgIHQwID0gX21tX2FkZF9lcGkxNihfbW1fc2xsaV9lcGkxNihwNywgMyksIGM4KTsK
KysgICAgICAgICAgICAgICAgdDEgPSBfbW1fYWRkX2VwaTE2KF9tbV9hZGRfZXBpMTYocTAsIHAw
KSwgX21tX2FkZF9lcGkxNihwMSwgcDIpKTsKKysgICAgICAgICAgICAgICAgdDIgPSBfbW1fYWRk
X2VwaTE2KF9tbV9hZGRfZXBpMTYocDMsIHA0KSwgX21tX2FkZF9lcGkxNihwNSwgcDYpKTsKKysg
ICAgICAgICAgICAgICAgdDAgPSBfbW1fc3ViX2VwaTE2KHQwLCBwNyk7CisrICAgICAgICAgICAg
ICAgIHQwID0gX21tX2FkZF9lcGkxNih0MCwgdDEpOworKyAgICAgICAgICAgICAgICB0MCA9IF9t
bV9hZGRfZXBpMTYodDAsIHQyKTsKKysgICAgICAgICAgICAgICAgdDEgPSBfbW1fc3JhaV9lcGkx
NihfbW1fYWRkX2VwaTE2KHA2LCB0MCksIDQpOworKyAgICAgICAgICAgICAgICB0MCA9IF9tbV9h
ZGRfZXBpMTYodDAsIF9tbV9zdWJfZXBpMTYocTEsIHA3KSk7CisrICAgICAgICAgICAgICAgIHQy
ID0gX21tX3NyYWlfZXBpMTYoX21tX2FkZF9lcGkxNihwNSwgdDApLCA0KTsKKysgICAgICAgICAg
ICAgICAgcDZhID0gX21tX2JsZW5kdl9lcGk4KHQxLCBwNiwgdmZsYXQ4b3V0KTsKKysgICAgICAg
ICAgICAgICAgcDVhID0gX21tX2JsZW5kdl9lcGk4KHQyLCBwNSwgdmZsYXQ4b3V0KTsKKysKKysg
ICAgICAgICAgICAgICAgdDAgPSBfbW1fYWRkX2VwaTE2KHQwLCBfbW1fc3ViX2VwaTE2KHEyLCBw
NykpOworKyAgICAgICAgICAgICAgICB0MSA9IF9tbV9zcmFpX2VwaTE2KF9tbV9hZGRfZXBpMTYo
cDQsIHQwKSwgNCk7CisrICAgICAgICAgICAgICAgIHQwID0gX21tX2FkZF9lcGkxNih0MCwgX21t
X3N1Yl9lcGkxNihxMywgcDcpKTsKKysgICAgICAgICAgICAgICAgdDIgPSBfbW1fc3JhaV9lcGkx
NihfbW1fYWRkX2VwaTE2KHAzLCB0MCksIDQpOworKyAgICAgICAgICAgICAgICBwNGEgPSBfbW1f
YmxlbmR2X2VwaTgodDEsIHA0LCB2ZmxhdDhvdXQpOworKyAgICAgICAgICAgICAgICBwM2EgPSBf
bW1fYmxlbmR2X2VwaTgodDIsIHAzLCB2ZmxhdDhvdXQpOworKworKyAgICAgICAgICAgICAgICB0
MCA9IF9tbV9hZGRfZXBpMTYodDAsIF9tbV9zdWJfZXBpMTYocTQsIHA3KSk7CisrICAgICAgICAg
ICAgICAgIHQxID0gX21tX3NyYWlfZXBpMTYoX21tX2FkZF9lcGkxNihwMiwgdDApLCA0KTsKKysg
ICAgICAgICAgICAgICAgdDAgPSBfbW1fYWRkX2VwaTE2KHQwLCBfbW1fc3ViX2VwaTE2KHE1LCBw
NykpOworKyAgICAgICAgICAgICAgICB0MiA9IF9tbV9zcmFpX2VwaTE2KF9tbV9hZGRfZXBpMTYo
cDEsIHQwKSwgNCk7CisrICAgICAgICAgICAgICAgIHAyYSA9IF9tbV9ibGVuZHZfZXBpOCh0MSwg
cDJhLCB2ZmxhdDhvdXQpOworKyAgICAgICAgICAgICAgICBwMWEgPSBfbW1fYmxlbmR2X2VwaTgo
dDIsIHAxYSwgdmZsYXQ4b3V0KTsKKysKKysgICAgICAgICAgICAgICAgdDAgPSBfbW1fYWRkX2Vw
aTE2KHQwLCBfbW1fc3ViX2VwaTE2KHE2LCBwNykpOworKyAgICAgICAgICAgICAgICB0MSA9IF9t
bV9zcmFpX2VwaTE2KF9tbV9hZGRfZXBpMTYocDAsIHQwKSwgNCk7CisrICAgICAgICAgICAgICAg
IHQwID0gX21tX2FkZF9lcGkxNih0MCwgX21tX3N1Yl9lcGkxNihxNywgcDcpKTsKKysgICAgICAg
ICAgICAgICAgdDIgPSBfbW1fc3JhaV9lcGkxNihfbW1fYWRkX2VwaTE2KHEwLCB0MCksIDQpOwor
KyAgICAgICAgICAgICAgICBwMGEgPSBfbW1fYmxlbmR2X2VwaTgodDEsIHAwYSwgdmZsYXQ4b3V0
KTsKKysgICAgICAgICAgICAgICAgcTBhID0gX21tX2JsZW5kdl9lcGk4KHQyLCBxMGEsIHZmbGF0
OG91dCk7CisrCisrICAgICAgICAgICAgICAgIHQwID0gX21tX2FkZF9lcGkxNih0MCwgX21tX3N1
Yl9lcGkxNihxNywgcDYpKTsKKysgICAgICAgICAgICAgICAgdDEgPSBfbW1fc3JhaV9lcGkxNihf
bW1fYWRkX2VwaTE2KHExLCB0MCksIDQpOworKyAgICAgICAgICAgICAgICB0MCA9IF9tbV9hZGRf
ZXBpMTYodDAsIF9tbV9zdWJfZXBpMTYocTcsIHA1KSk7CisrICAgICAgICAgICAgICAgIHQyID0g
X21tX3NyYWlfZXBpMTYoX21tX2FkZF9lcGkxNihxMiwgdDApLCA0KTsKKysgICAgICAgICAgICAg
ICAgcTFhID0gX21tX2JsZW5kdl9lcGk4KHQxLCBxMWEsIHZmbGF0OG91dCk7CisrICAgICAgICAg
ICAgICAgIHEyYSA9IF9tbV9ibGVuZHZfZXBpOCh0MiwgcTJhLCB2ZmxhdDhvdXQpOworKworKyAg
ICAgICAgICAgICAgICB0MCA9IF9tbV9hZGRfZXBpMTYodDAsIF9tbV9zdWJfZXBpMTYocTcsIHA0
KSk7CisrICAgICAgICAgICAgICAgIHQxID0gX21tX3NyYWlfZXBpMTYoX21tX2FkZF9lcGkxNihx
MywgdDApLCA0KTsKKysgICAgICAgICAgICAgICAgdDAgPSBfbW1fYWRkX2VwaTE2KHQwLCBfbW1f
c3ViX2VwaTE2KHE3LCBwMykpOworKyAgICAgICAgICAgICAgICB0MiA9IF9tbV9zcmFpX2VwaTE2
KF9tbV9hZGRfZXBpMTYocTQsIHQwKSwgNCk7CisrICAgICAgICAgICAgICAgIHEzYSA9IF9tbV9i
bGVuZHZfZXBpOCh0MSwgcTMsIHZmbGF0OG91dCk7CisrICAgICAgICAgICAgICAgIHE0YSA9IF9t
bV9ibGVuZHZfZXBpOCh0MiwgcTQsIHZmbGF0OG91dCk7CisrCisrICAgICAgICAgICAgICAgIHQw
ID0gX21tX2FkZF9lcGkxNih0MCwgX21tX3N1Yl9lcGkxNihxNywgcDIpKTsKKysgICAgICAgICAg
ICAgICAgdDEgPSBfbW1fc3JhaV9lcGkxNihfbW1fYWRkX2VwaTE2KHE1LCB0MCksIDQpOworKyAg
ICAgICAgICAgICAgICB0MCA9IF9tbV9hZGRfZXBpMTYodDAsIF9tbV9zdWJfZXBpMTYocTcsIHAx
KSk7CisrICAgICAgICAgICAgICAgIHQyID0gX21tX3NyYWlfZXBpMTYoX21tX2FkZF9lcGkxNihx
NiwgdDApLCA0KTsKKysgICAgICAgICAgICAgICAgcTVhID0gX21tX2JsZW5kdl9lcGk4KHQxLCBx
NSwgdmZsYXQ4b3V0KTsKKysgICAgICAgICAgICAgICAgcTZhID0gX21tX2JsZW5kdl9lcGk4KHQy
LCBxNiwgdmZsYXQ4b3V0KTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysK
KysgICAgaWYgKHdkID49IDE2KSB7CisrICAgICAgICBTVE9SRV9UUkFOU1BPU0U4KGRzdCAtIDgs
IHA3LCAgcDZhLCBwNWEsIHA0YSwgcDNhLCBwMmEsIHAxYSwgcDBhKTsKKysgICAgICAgIFNUT1JF
X1RSQU5TUE9TRTgoZHN0ICAgICwgcTBhLCBxMWEsIHEyYSwgcTNhLCBxNGEsIHE1YSwgcTZhLCBx
NyApOworKyAgICB9IGVsc2UgaWYgKHdkID49IDgpIHsKKysgICAgICAgIFNUT1JFX1RSQU5TUE9T
RTgoZHN0IC0gNCwgcDMsICBwMmEsIHAxYSwgcDBhLCBxMGEsIHExYSwgcTJhLCBxMyApOworKyAg
ICB9IGVsc2UgeworKyAgICAgICAgdDAgPSBfbW1fcGFja3VzX2VwaTE2KHAxYSwgcDBhKTsKKysg
ICAgICAgIHQxID0gX21tX3BhY2t1c19lcGkxNihxMGEsIHExYSk7CisrICAgICAgICB0MiA9IF9t
bV91bnBhY2tsb19lcGk4KHQwLCB0MSk7CisrICAgICAgICB0MyA9IF9tbV91bnBhY2toaV9lcGk4
KHQwLCB0MSk7CisrICAgICAgICB0MCA9IF9tbV91bnBhY2tsb19lcGk4KHQyLCB0Myk7CisrICAg
ICAgICB0MSA9IF9tbV91bnBhY2toaV9lcGk4KHQyLCB0Myk7CisrICAgICAgICAqKHVpbnQzMl90
KikoZHN0IC0gMiArIHN0cmlkZSAqIDApID0gX21tX2V4dHJhY3RfZXBpMzIodDAsIDApOworKyAg
ICAgICAgKih1aW50MzJfdCopKGRzdCAtIDIgKyBzdHJpZGUgKiAxKSA9IF9tbV9leHRyYWN0X2Vw
aTMyKHQwLCAxKTsKKysgICAgICAgICoodWludDMyX3QqKShkc3QgLSAyICsgc3RyaWRlICogMikg
PSBfbW1fZXh0cmFjdF9lcGkzMih0MCwgMik7CisrICAgICAgICAqKHVpbnQzMl90KikoZHN0IC0g
MiArIHN0cmlkZSAqIDMpID0gX21tX2V4dHJhY3RfZXBpMzIodDAsIDMpOworKyAgICAgICAgKih1
aW50MzJfdCopKGRzdCAtIDIgKyBzdHJpZGUgKiA0KSA9IF9tbV9leHRyYWN0X2VwaTMyKHQxLCAw
KTsKKysgICAgICAgICoodWludDMyX3QqKShkc3QgLSAyICsgc3RyaWRlICogNSkgPSBfbW1fZXh0
cmFjdF9lcGkzMih0MSwgMSk7CisrICAgICAgICAqKHVpbnQzMl90KikoZHN0IC0gMiArIHN0cmlk
ZSAqIDYpID0gX21tX2V4dHJhY3RfZXBpMzIodDEsIDIpOworKyAgICAgICAgKih1aW50MzJfdCop
KGRzdCAtIDIgKyBzdHJpZGUgKiA3KSA9IF9tbV9leHRyYWN0X2VwaTMyKHQxLCAzKTsKKysgICAg
fQorK30KKysKKysjdW5kZWYgTE9BRF9UUkFOU1BPU0U4CisrI3VuZGVmIFNUT1JFX1RSQU5TUE9T
RTgKKysKKytzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lkIGxvb3BfZmlsdGVyX3YodWludDhf
dCAqZHN0LCBpbnQgRSwgaW50IEksIGludCBILAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQgd2QpCisreworKyAgICBpbnQg
RiA9IDE7CisrICAgIExPQURfWkVSTzsKKysgICAgX19tMTI4aSB0MCwgdDEsIHQyLCB0MywgdDQs
IHQ1LCB0NiwgdDc7CisrICAgIF9fbTEyOGkgdmZtLCB2ZmxhdDhvdXQsIHZmbGF0OGluLCB2aGV2
OworKyAgICBfX20xMjhpIHAyYSwgcDFhLCBwMGEsIHEwYSwgcTFhLCBxMmE7CisrCisrICAgIF9f
bTEyOGkgdkYgPSBfbW1fc2V0MV9lcGkxNihGKTsKKysgICAgX19tMTI4aSB2SSA9IF9tbV9zZXQx
X2VwaTE2KEkpOworKyAgICBfX20xMjhpIHZFID0gX21tX3NldDFfZXBpMTYoRSk7CisrICAgIF9f
bTEyOGkgdkggPSBfbW1fc2V0MV9lcGkxNihIKTsKKysKKysgICAgX19tMTI4aSBwNywgcDYsIHA1
LCBwNDsKKysgICAgX19tMTI4aSBwMyA9IFZFQ19MRDgoZHN0IC0gc3RyaWRlICogNCksIHAyID0g
VkVDX0xEOChkc3QgLSBzdHJpZGUgKiAzKTsKKysgICAgX19tMTI4aSBwMSA9IFZFQ19MRDgoZHN0
IC0gc3RyaWRlICogMiksIHAwID0gVkVDX0xEOChkc3QgLSBzdHJpZGUgKiAxKTsKKysgICAgX19t
MTI4aSBxMCA9IFZFQ19MRDgoZHN0ICsgc3RyaWRlICogMCksIHExID0gVkVDX0xEOChkc3QgKyBz
dHJpZGUgKiAxKTsKKysgICAgX19tMTI4aSBxMiA9IFZFQ19MRDgoZHN0ICsgc3RyaWRlICogMiks
IHEzID0gVkVDX0xEOChkc3QgKyBzdHJpZGUgKiAzKTsKKysgICAgX19tMTI4aSBxNCwgcTUsIHE2
LCBxNzsKKysKKysgICAgcDMgPSBfbW1fdW5wYWNrbG9fZXBpOChwMywgemVyb3YpOworKyAgICBw
MiA9IF9tbV91bnBhY2tsb19lcGk4KHAyLCB6ZXJvdik7CisrICAgIHAxID0gX21tX3VucGFja2xv
X2VwaTgocDEsIHplcm92KTsKKysgICAgcDAgPSBfbW1fdW5wYWNrbG9fZXBpOChwMCwgemVyb3Yp
OworKyAgICBxMCA9IF9tbV91bnBhY2tsb19lcGk4KHEwLCB6ZXJvdik7CisrICAgIHExID0gX21t
X3VucGFja2xvX2VwaTgocTEsIHplcm92KTsKKysgICAgcTIgPSBfbW1fdW5wYWNrbG9fZXBpOChx
MiwgemVyb3YpOworKyAgICBxMyA9IF9tbV91bnBhY2tsb19lcGk4KHEzLCB6ZXJvdik7CisrCisr
ICAgIHQwID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2VwaTE2KHAzLCBwMikpOworKyAgICB0MSA9
IF9tbV9hYnNfZXBpMTYoX21tX3N1Yl9lcGkxNihwMiwgcDEpKTsKKysgICAgdDIgPSBfbW1fYWJz
X2VwaTE2KF9tbV9zdWJfZXBpMTYocDEsIHAwKSk7CisrICAgIHQzID0gX21tX2Fic19lcGkxNihf
bW1fc3ViX2VwaTE2KHExLCBxMCkpOworKyAgICB0NCA9IF9tbV9hYnNfZXBpMTYoX21tX3N1Yl9l
cGkxNihxMiwgcTEpKTsKKysgICAgdDUgPSBfbW1fYWJzX2VwaTE2KF9tbV9zdWJfZXBpMTYocTMs
IHEyKSk7CisrICAgIHZoZXYgPSBfbW1fb3Jfc2kxMjgoX21tX2NtcGd0X2VwaTE2KHQyLCB2SCks
IF9tbV9jbXBndF9lcGkxNih0MywgdkgpKTsKKysgICAgdDAgPSBfbW1fY21wZ3RfZXBpMTYodDAs
IHZJKTsKKysgICAgdDEgPSBfbW1fY21wZ3RfZXBpMTYodDEsIHZJKTsKKysgICAgdDIgPSBfbW1f
Y21wZ3RfZXBpMTYodDIsIHZJKTsKKysgICAgdDMgPSBfbW1fY21wZ3RfZXBpMTYodDMsIHZJKTsK
KysgICAgdDQgPSBfbW1fY21wZ3RfZXBpMTYodDQsIHZJKTsKKysgICAgdDUgPSBfbW1fY21wZ3Rf
ZXBpMTYodDUsIHZJKTsKKysKKysgICAgdDAgPSBfbW1fb3Jfc2kxMjgoX21tX29yX3NpMTI4KHQw
LCB0MSksIHQyKTsKKysgICAgdDMgPSBfbW1fb3Jfc2kxMjgoX21tX29yX3NpMTI4KHQzLCB0NCks
IHQ1KTsKKysgICAgdDAgPSBfbW1fb3Jfc2kxMjgodDAsIHQzKTsKKysKKysgICAgdDYgPSBfbW1f
YWJzX2VwaTE2KF9tbV9zdWJfZXBpMTYocDAsIHEwKSk7CisrICAgIHQ3ID0gX21tX2Fic19lcGkx
NihfbW1fc3ViX2VwaTE2KHAxLCBxMSkpOworKyAgICB0NiA9IF9tbV9hZGRfZXBpMTYoX21tX3Ns
bGlfZXBpMTYodDYsIDEpLCBfbW1fc3JhaV9lcGkxNih0NywgMSkpOworKyAgICB0NiA9IF9tbV9j
bXBndF9lcGkxNih0NiwgdkUpOworKyAgICB2Zm0gPSBfbW1fb3Jfc2kxMjgodDAsIHQ2KTsgLy8g
IWZtCisrCisrICAgIGlmIChfbW1fbW92ZW1hc2tfZXBpOCh2Zm0pID09IDB4ZmZmZikgcmV0dXJu
OworKworKyAgICBpZiAod2QgPj0gOCkgeworKyAgICAgICAgdDAgPSBfbW1fYWJzX2VwaTE2KF9t
bV9zdWJfZXBpMTYocDMsIHAwKSk7CisrICAgICAgICB0MSA9IF9tbV9hYnNfZXBpMTYoX21tX3N1
Yl9lcGkxNihwMiwgcDApKTsKKysgICAgICAgIHQyID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2Vw
aTE2KHAxLCBwMCkpOworKyAgICAgICAgdDMgPSBfbW1fYWJzX2VwaTE2KF9tbV9zdWJfZXBpMTYo
cTEsIHEwKSk7CisrICAgICAgICB0NCA9IF9tbV9hYnNfZXBpMTYoX21tX3N1Yl9lcGkxNihxMiwg
cTApKTsKKysgICAgICAgIHQ1ID0gX21tX2Fic19lcGkxNihfbW1fc3ViX2VwaTE2KHEzLCBxMCkp
OworKyAgICAgICAgdDAgPSBfbW1fY21wZ3RfZXBpMTYodDAsIHZGKTsKKysgICAgICAgIHQxID0g
X21tX2NtcGd0X2VwaTE2KHQxLCB2Rik7CisrICAgICAgICB0MiA9IF9tbV9jbXBndF9lcGkxNih0
MiwgdkYpOworKyAgICAgICAgdDMgPSBfbW1fY21wZ3RfZXBpMTYodDMsIHZGKTsKKysgICAgICAg
IHQ0ID0gX21tX2NtcGd0X2VwaTE2KHQ0LCB2Rik7CisrICAgICAgICB0NSA9IF9tbV9jbXBndF9l
cGkxNih0NSwgdkYpOworKworKyAgICAgICAgdDAgPSBfbW1fb3Jfc2kxMjgoX21tX29yX3NpMTI4
KHQwLCB0MSksIHQyKTsKKysgICAgICAgIHQzID0gX21tX29yX3NpMTI4KF9tbV9vcl9zaTEyOCh0
MywgdDQpLCB0NSk7CisrICAgICAgICB2ZmxhdDhpbiA9IF9tbV9vcl9zaTEyOChfbW1fb3Jfc2kx
MjgodDAsIHQzKSwgdmZtKTsKKysgICAgfQorKworKyAgICB7CisrICAgICAgICBfX20xMjhpIGMx
ID0gX21tX3NldDFfZXBpMTYoMSk7CisrICAgICAgICBfX20xMjhpIGMxMjcgPSBfbW1fc2V0MV9l
cGkxNigxMjcpOworKyAgICAgICAgX19tMTI4aSBtMTI4ID0gX21tX3NldDFfZXBpMTYoLTEyOCk7
CisrICAgICAgICBfX20xMjhpIGM0MyA9IF9tbV9zZXRyX2VwaTgoNCwgNCwgNCwgNCwgNCwgNCwg
NCwgNCwgMywgMywgMywgMywgMywgMywgMywgMyk7CisrICAgICAgICB0MCA9IF9tbV9hbmRfc2kx
MjgodmhldiwgX21tX3N1Yl9lcGkxNihwMSwgcTEpKTsKKysgICAgICAgIHQxID0gX21tX3N1Yl9l
cGkxNihxMCwgcDApOworKyAgICAgICAgdDAgPSBfbW1fbWluX2VwaTE2KF9tbV9tYXhfZXBpMTYo
dDAsIG0xMjgpLCBjMTI3KTsKKysgICAgICAgIC8vIGYgPSBhdl9jbGlwX2ludHAyKHAxIC0gcTEs
IDcpICYgaGV2OworKyAgICAgICAgdDEgPSBfbW1fYWRkX2VwaTE2KF9tbV9hZGRfZXBpMTYodDEs
IHQwKSwgX21tX2FkZF9lcGkxNih0MSwgdDEpKTsKKysgICAgICAgIHQxID0gX21tX2FuZG5vdF9z
aTEyOCh2Zm0sIHQxKTsKKysgICAgICAgIHQxID0gX21tX3BhY2tzX2VwaTE2KHQxLCB0MSk7Cisr
ICAgICAgICAvLyBmID0gYXZfY2xpcF9pbnRwMigzICogKHEwIC0gcDApICsgZiwgNyk7CisrICAg
ICAgICB0MyA9IF9tbV9hZGRzX2VwaTgodDEsIGM0Myk7CisrICAgICAgICB0MiA9IF9tbV9zcmFp
X2VwaTE2KF9tbV91bnBhY2tsb19lcGk4KHQzLCB0MyksIDggKyAzKTsKKysgICAgICAgIC8vIGYx
ID0gRkZNSU4oZiArIDQsIDB4N2YpID4+IDM7CisrICAgICAgICB0MyA9IF9tbV9zcmFpX2VwaTE2
KF9tbV91bnBhY2toaV9lcGk4KHQzLCB0MyksIDggKyAzKTsKKysgICAgICAgIC8vIGYyID0gRkZN
SU4oZiArIDMsIDB4N2YpID4+IDM7CisrICAgICAgICB0NCA9IF9tbV9zcmFpX2VwaTE2KF9tbV9h
ZGRfZXBpMTYodDIsIGMxKSwgMSk7CisrICAgICAgICB0NCA9IF9tbV9hbmRub3Rfc2kxMjgodmhl
diwgdDQpOyAvLyBmMyA9ICgoZjEgKyAxKSA+PiAxKSAmIH5oZXY7CisrICAgICAgICBwMWEgPSBf
bW1fYWRkX2VwaTE2KHAxLCB0NCk7IC8vIGF2X2NsaXBfdWludDgocDEgKyBmMyk7CisrICAgICAg
ICBwMGEgPSBfbW1fYWRkX2VwaTE2KHAwLCB0Myk7IC8vIGF2X2NsaXBfdWludDgocDAgKyBmMik7
CisrICAgICAgICBxMGEgPSBfbW1fc3ViX2VwaTE2KHEwLCB0Mik7IC8vIGF2X2NsaXBfdWludDgo
cTAgLSBmMSk7CisrICAgICAgICBxMWEgPSBfbW1fc3ViX2VwaTE2KHExLCB0NCk7IC8vIGF2X2Ns
aXBfdWludDgocTEgLSBmMyk7CisrICAgIH0KKysKKysgICAgaWYgKHdkID49IDggJiYgX21tX21v
dmVtYXNrX2VwaTgodmZsYXQ4aW4pICE9IDB4ZmZmZikgeworKyAgICAgICAgX19tMTI4aSBjNCA9
IF9tbV9zZXQxX2VwaTE2KDQpOworKyAgICAgICAgdDAgPSBfbW1fYWRkX2VwaTE2KF9tbV9zbGxp
X2VwaTE2KHAzLCAyKSwgYzQpOworKyAgICAgICAgdDEgPSBfbW1fYWRkX2VwaTE2KF9tbV9hZGRf
ZXBpMTYocTAsIHAwKSwgX21tX2FkZF9lcGkxNihwMSwgcDIpKTsKKysgICAgICAgIHQwID0gX21t
X3N1Yl9lcGkxNih0MCwgcDMpOworKyAgICAgICAgdDAgPSBfbW1fYWRkX2VwaTE2KHQwLCB0MSk7
CisrICAgICAgICB0MSA9IF9tbV9zcmFpX2VwaTE2KF9tbV9hZGRfZXBpMTYocDIsIHQwKSwgMyk7
CisrICAgICAgICB0MCA9IF9tbV9hZGRfZXBpMTYodDAsIF9tbV9zdWJfZXBpMTYocTEsIHAzKSk7
CisrICAgICAgICB0MiA9IF9tbV9zcmFpX2VwaTE2KF9tbV9hZGRfZXBpMTYocDEsIHQwKSwgMyk7
CisrICAgICAgICBwMmEgPSBfbW1fYmxlbmR2X2VwaTgodDEsIHAyLCB2ZmxhdDhpbik7CisrICAg
ICAgICBwMWEgPSBfbW1fYmxlbmR2X2VwaTgodDIsIHAxYSwgdmZsYXQ4aW4pOworKworKyAgICAg
ICAgdDAgPSBfbW1fYWRkX2VwaTE2KHQwLCBfbW1fc3ViX2VwaTE2KHEyLCBwMykpOworKyAgICAg
ICAgdDEgPSBfbW1fc3JhaV9lcGkxNihfbW1fYWRkX2VwaTE2KHAwLCB0MCksIDMpOworKyAgICAg
ICAgdDAgPSBfbW1fYWRkX2VwaTE2KHQwLCBfbW1fc3ViX2VwaTE2KHEzLCBwMykpOworKyAgICAg
ICAgdDIgPSBfbW1fc3JhaV9lcGkxNihfbW1fYWRkX2VwaTE2KHEwLCB0MCksIDMpOworKyAgICAg
ICAgcDBhID0gX21tX2JsZW5kdl9lcGk4KHQxLCBwMGEsIHZmbGF0OGluKTsKKysgICAgICAgIHEw
YSA9IF9tbV9ibGVuZHZfZXBpOCh0MiwgcTBhLCB2ZmxhdDhpbik7CisrCisrICAgICAgICB0MCA9
IF9tbV9hZGRfZXBpMTYodDAsIF9tbV9zdWJfZXBpMTYocTMsIHAyKSk7CisrICAgICAgICB0MSA9
IF9tbV9zcmFpX2VwaTE2KF9tbV9hZGRfZXBpMTYocTEsIHQwKSwgMyk7CisrICAgICAgICB0MCA9
IF9tbV9hZGRfZXBpMTYodDAsIF9tbV9zdWJfZXBpMTYocTMsIHAxKSk7CisrICAgICAgICB0MiA9
IF9tbV9zcmFpX2VwaTE2KF9tbV9hZGRfZXBpMTYocTIsIHQwKSwgMyk7CisrICAgICAgICBxMWEg
PSBfbW1fYmxlbmR2X2VwaTgodDEsIHExYSwgdmZsYXQ4aW4pOworKyAgICAgICAgcTJhID0gX21t
X2JsZW5kdl9lcGk4KHQyLCBxMiwgdmZsYXQ4aW4pOworKworKyAgICAgICAgaWYgKHdkID49IDE2
KSB7CisrICAgICAgICAgICAgcDcgPSBWRUNfTEQ4KGRzdCAtIHN0cmlkZSAqIDgpOworKyAgICAg
ICAgICAgIHA2ID0gVkVDX0xEOChkc3QgLSBzdHJpZGUgKiA3KTsKKysgICAgICAgICAgICBwNSA9
IFZFQ19MRDgoZHN0IC0gc3RyaWRlICogNik7CisrICAgICAgICAgICAgcDQgPSBWRUNfTEQ4KGRz
dCAtIHN0cmlkZSAqIDUpOworKyAgICAgICAgICAgIHE0ID0gVkVDX0xEOChkc3QgKyBzdHJpZGUg
KiA0KTsKKysgICAgICAgICAgICBxNSA9IFZFQ19MRDgoZHN0ICsgc3RyaWRlICogNSk7CisrICAg
ICAgICAgICAgcTYgPSBWRUNfTEQ4KGRzdCArIHN0cmlkZSAqIDYpOworKyAgICAgICAgICAgIHE3
ID0gVkVDX0xEOChkc3QgKyBzdHJpZGUgKiA3KTsKKysKKysgICAgICAgICAgICBwNyA9IF9tbV91
bnBhY2tsb19lcGk4KHA3LCB6ZXJvdik7CisrICAgICAgICAgICAgcDYgPSBfbW1fdW5wYWNrbG9f
ZXBpOChwNiwgemVyb3YpOworKyAgICAgICAgICAgIHA1ID0gX21tX3VucGFja2xvX2VwaTgocDUs
IHplcm92KTsKKysgICAgICAgICAgICBwNCA9IF9tbV91bnBhY2tsb19lcGk4KHA0LCB6ZXJvdik7
CisrICAgICAgICAgICAgcTQgPSBfbW1fdW5wYWNrbG9fZXBpOChxNCwgemVyb3YpOworKyAgICAg
ICAgICAgIHE1ID0gX21tX3VucGFja2xvX2VwaTgocTUsIHplcm92KTsKKysgICAgICAgICAgICBx
NiA9IF9tbV91bnBhY2tsb19lcGk4KHE2LCB6ZXJvdik7CisrICAgICAgICAgICAgcTcgPSBfbW1f
dW5wYWNrbG9fZXBpOChxNywgemVyb3YpOworKworKyAgICAgICAgICAgIHQwID0gX21tX2Fic19l
cGkxNihfbW1fc3ViX2VwaTE2KHA3LCBwMCkpOworKyAgICAgICAgICAgIHQxID0gX21tX2Fic19l
cGkxNihfbW1fc3ViX2VwaTE2KHA2LCBwMCkpOworKyAgICAgICAgICAgIHQyID0gX21tX2Fic19l
cGkxNihfbW1fc3ViX2VwaTE2KHA1LCBwMCkpOworKyAgICAgICAgICAgIHQzID0gX21tX2Fic19l
cGkxNihfbW1fc3ViX2VwaTE2KHA0LCBwMCkpOworKyAgICAgICAgICAgIHQ0ID0gX21tX2Fic19l
cGkxNihfbW1fc3ViX2VwaTE2KHE0LCBxMCkpOworKyAgICAgICAgICAgIHQ1ID0gX21tX2Fic19l
cGkxNihfbW1fc3ViX2VwaTE2KHE1LCBxMCkpOworKyAgICAgICAgICAgIHQ2ID0gX21tX2Fic19l
cGkxNihfbW1fc3ViX2VwaTE2KHE2LCBxMCkpOworKyAgICAgICAgICAgIHQ3ID0gX21tX2Fic19l
cGkxNihfbW1fc3ViX2VwaTE2KHE3LCBxMCkpOworKworKyAgICAgICAgICAgIHQwID0gX21tX2Nt
cGd0X2VwaTE2KHQwLCB2Rik7CisrICAgICAgICAgICAgdDEgPSBfbW1fY21wZ3RfZXBpMTYodDEs
IHZGKTsKKysgICAgICAgICAgICB0MiA9IF9tbV9jbXBndF9lcGkxNih0MiwgdkYpOworKyAgICAg
ICAgICAgIHQzID0gX21tX2NtcGd0X2VwaTE2KHQzLCB2Rik7CisrICAgICAgICAgICAgdDQgPSBf
bW1fY21wZ3RfZXBpMTYodDQsIHZGKTsKKysgICAgICAgICAgICB0NSA9IF9tbV9jbXBndF9lcGkx
Nih0NSwgdkYpOworKyAgICAgICAgICAgIHQ2ID0gX21tX2NtcGd0X2VwaTE2KHQ2LCB2Rik7Cisr
ICAgICAgICAgICAgdDcgPSBfbW1fY21wZ3RfZXBpMTYodDcsIHZGKTsKKysKKysgICAgICAgICAg
ICB0MCA9IF9tbV9vcl9zaTEyOChfbW1fb3Jfc2kxMjgodDAsIHQxKSwgX21tX29yX3NpMTI4KHQy
LCB0MykpOworKyAgICAgICAgICAgIHQ0ID0gX21tX29yX3NpMTI4KF9tbV9vcl9zaTEyOCh0NCwg
dDUpLCBfbW1fb3Jfc2kxMjgodDYsIHQ3KSk7CisrICAgICAgICAgICAgdmZsYXQ4b3V0ID0gX21t
X29yX3NpMTI4KHQwLCB0NCk7CisrCisrICAgICAgICAgICAgdmZsYXQ4b3V0ID0gX21tX29yX3Np
MTI4KHZmbGF0OG91dCwgdmZsYXQ4aW4pOworKyAgICAgICAgICAgIGlmIChfbW1fbW92ZW1hc2tf
ZXBpOCh2ZmxhdDhvdXQpICE9IDB4ZmZmZikgeworKyAgICAgICAgICAgICAgICBfX20xMjhpIGM4
ID0gX21tX3NldDFfZXBpMTYoOCk7CisrICAgICAgICAgICAgICAgIHQwID0gX21tX2FkZF9lcGkx
NihfbW1fc2xsaV9lcGkxNihwNywgMyksIGM4KTsKKysgICAgICAgICAgICAgICAgdDEgPSBfbW1f
YWRkX2VwaTE2KF9tbV9hZGRfZXBpMTYocTAsIHAwKSwgX21tX2FkZF9lcGkxNihwMSwgcDIpKTsK
KysgICAgICAgICAgICAgICAgdDIgPSBfbW1fYWRkX2VwaTE2KF9tbV9hZGRfZXBpMTYocDMsIHA0
KSwgX21tX2FkZF9lcGkxNihwNSwgcDYpKTsKKysgICAgICAgICAgICAgICAgdDAgPSBfbW1fc3Vi
X2VwaTE2KHQwLCBwNyk7CisrICAgICAgICAgICAgICAgIHQwID0gX21tX2FkZF9lcGkxNih0MCwg
dDEpOworKyAgICAgICAgICAgICAgICB0MCA9IF9tbV9hZGRfZXBpMTYodDAsIHQyKTsKKysgICAg
ICAgICAgICAgICAgdDEgPSBfbW1fc3JhaV9lcGkxNihfbW1fYWRkX2VwaTE2KHA2LCB0MCksIDQp
OworKyAgICAgICAgICAgICAgICB0MCA9IF9tbV9hZGRfZXBpMTYodDAsIF9tbV9zdWJfZXBpMTYo
cTEsIHA3KSk7CisrICAgICAgICAgICAgICAgIHQyID0gX21tX3NyYWlfZXBpMTYoX21tX2FkZF9l
cGkxNihwNSwgdDApLCA0KTsKKysgICAgICAgICAgICAgICAgdDEgPSBfbW1fYmxlbmR2X2VwaTgo
dDEsIHA2LCB2ZmxhdDhvdXQpOworKyAgICAgICAgICAgICAgICB0MiA9IF9tbV9ibGVuZHZfZXBp
OCh0MiwgcDUsIHZmbGF0OG91dCk7CisrICAgICAgICAgICAgICAgIHQxID0gX21tX3BhY2t1c19l
cGkxNih0MSwgdDIpOworKyAgICAgICAgICAgICAgICBWRUNfU1RMKGRzdCAtIHN0cmlkZSAqIDcs
IHQxKTsKKysgICAgICAgICAgICAgICAgVkVDX1NUSChkc3QgLSBzdHJpZGUgKiA2LCB0MSk7Cisr
CisrICAgICAgICAgICAgICAgIHQwID0gX21tX2FkZF9lcGkxNih0MCwgX21tX3N1Yl9lcGkxNihx
MiwgcDcpKTsKKysgICAgICAgICAgICAgICAgdDEgPSBfbW1fc3JhaV9lcGkxNihfbW1fYWRkX2Vw
aTE2KHA0LCB0MCksIDQpOworKyAgICAgICAgICAgICAgICB0MCA9IF9tbV9hZGRfZXBpMTYodDAs
IF9tbV9zdWJfZXBpMTYocTMsIHA3KSk7CisrICAgICAgICAgICAgICAgIHQyID0gX21tX3NyYWlf
ZXBpMTYoX21tX2FkZF9lcGkxNihwMywgdDApLCA0KTsKKysgICAgICAgICAgICAgICAgdDEgPSBf
bW1fYmxlbmR2X2VwaTgodDEsIHA0LCB2ZmxhdDhvdXQpOworKyAgICAgICAgICAgICAgICB0MiA9
IF9tbV9ibGVuZHZfZXBpOCh0MiwgcDMsIHZmbGF0OG91dCk7CisrICAgICAgICAgICAgICAgIHQx
ID0gX21tX3BhY2t1c19lcGkxNih0MSwgdDIpOworKyAgICAgICAgICAgICAgICBWRUNfU1RMKGRz
dCAtIHN0cmlkZSAqIDUsIHQxKTsKKysgICAgICAgICAgICAgICAgVkVDX1NUSChkc3QgLSBzdHJp
ZGUgKiA0LCB0MSk7CisrCisrICAgICAgICAgICAgICAgIHQwID0gX21tX2FkZF9lcGkxNih0MCwg
X21tX3N1Yl9lcGkxNihxNCwgcDcpKTsKKysgICAgICAgICAgICAgICAgdDEgPSBfbW1fc3JhaV9l
cGkxNihfbW1fYWRkX2VwaTE2KHAyLCB0MCksIDQpOworKyAgICAgICAgICAgICAgICB0MCA9IF9t
bV9hZGRfZXBpMTYodDAsIF9tbV9zdWJfZXBpMTYocTUsIHA3KSk7CisrICAgICAgICAgICAgICAg
IHQyID0gX21tX3NyYWlfZXBpMTYoX21tX2FkZF9lcGkxNihwMSwgdDApLCA0KTsKKysgICAgICAg
ICAgICAgICAgcDJhID0gX21tX2JsZW5kdl9lcGk4KHQxLCBwMmEsIHZmbGF0OG91dCk7CisrICAg
ICAgICAgICAgICAgIHAxYSA9IF9tbV9ibGVuZHZfZXBpOCh0MiwgcDFhLCB2ZmxhdDhvdXQpOwor
KworKyAgICAgICAgICAgICAgICB0MCA9IF9tbV9hZGRfZXBpMTYodDAsIF9tbV9zdWJfZXBpMTYo
cTYsIHA3KSk7CisrICAgICAgICAgICAgICAgIHQxID0gX21tX3NyYWlfZXBpMTYoX21tX2FkZF9l
cGkxNihwMCwgdDApLCA0KTsKKysgICAgICAgICAgICAgICAgdDAgPSBfbW1fYWRkX2VwaTE2KHQw
LCBfbW1fc3ViX2VwaTE2KHE3LCBwNykpOworKyAgICAgICAgICAgICAgICB0MiA9IF9tbV9zcmFp
X2VwaTE2KF9tbV9hZGRfZXBpMTYocTAsIHQwKSwgNCk7CisrICAgICAgICAgICAgICAgIHAwYSA9
IF9tbV9ibGVuZHZfZXBpOCh0MSwgcDBhLCB2ZmxhdDhvdXQpOworKyAgICAgICAgICAgICAgICBx
MGEgPSBfbW1fYmxlbmR2X2VwaTgodDIsIHEwYSwgdmZsYXQ4b3V0KTsKKysKKysgICAgICAgICAg
ICAgICAgdDAgPSBfbW1fYWRkX2VwaTE2KHQwLCBfbW1fc3ViX2VwaTE2KHE3LCBwNikpOworKyAg
ICAgICAgICAgICAgICB0MSA9IF9tbV9zcmFpX2VwaTE2KF9tbV9hZGRfZXBpMTYocTEsIHQwKSwg
NCk7CisrICAgICAgICAgICAgICAgIHQwID0gX21tX2FkZF9lcGkxNih0MCwgX21tX3N1Yl9lcGkx
NihxNywgcDUpKTsKKysgICAgICAgICAgICAgICAgdDIgPSBfbW1fc3JhaV9lcGkxNihfbW1fYWRk
X2VwaTE2KHEyLCB0MCksIDQpOworKyAgICAgICAgICAgICAgICBxMWEgPSBfbW1fYmxlbmR2X2Vw
aTgodDEsIHExYSwgdmZsYXQ4b3V0KTsKKysgICAgICAgICAgICAgICAgcTJhID0gX21tX2JsZW5k
dl9lcGk4KHQyLCBxMmEsIHZmbGF0OG91dCk7CisrCisrICAgICAgICAgICAgICAgIHQwID0gX21t
X2FkZF9lcGkxNih0MCwgX21tX3N1Yl9lcGkxNihxNywgcDQpKTsKKysgICAgICAgICAgICAgICAg
dDEgPSBfbW1fc3JhaV9lcGkxNihfbW1fYWRkX2VwaTE2KHEzLCB0MCksIDQpOworKyAgICAgICAg
ICAgICAgICB0MCA9IF9tbV9hZGRfZXBpMTYodDAsIF9tbV9zdWJfZXBpMTYocTcsIHAzKSk7Cisr
ICAgICAgICAgICAgICAgIHQyID0gX21tX3NyYWlfZXBpMTYoX21tX2FkZF9lcGkxNihxNCwgdDAp
LCA0KTsKKysgICAgICAgICAgICAgICAgdDEgPSBfbW1fYmxlbmR2X2VwaTgodDEsIHEzLCB2Zmxh
dDhvdXQpOworKyAgICAgICAgICAgICAgICB0MiA9IF9tbV9ibGVuZHZfZXBpOCh0MiwgcTQsIHZm
bGF0OG91dCk7CisrICAgICAgICAgICAgICAgIHQxID0gX21tX3BhY2t1c19lcGkxNih0MSwgdDIp
OworKyAgICAgICAgICAgICAgICBWRUNfU1RMKGRzdCArIHN0cmlkZSAqIDMsIHQxKTsKKysgICAg
ICAgICAgICAgICAgVkVDX1NUSChkc3QgKyBzdHJpZGUgKiA0LCB0MSk7CisrCisrICAgICAgICAg
ICAgICAgIHQwID0gX21tX2FkZF9lcGkxNih0MCwgX21tX3N1Yl9lcGkxNihxNywgcDIpKTsKKysg
ICAgICAgICAgICAgICAgdDEgPSBfbW1fc3JhaV9lcGkxNihfbW1fYWRkX2VwaTE2KHE1LCB0MCks
IDQpOworKyAgICAgICAgICAgICAgICB0MCA9IF9tbV9hZGRfZXBpMTYodDAsIF9tbV9zdWJfZXBp
MTYocTcsIHAxKSk7CisrICAgICAgICAgICAgICAgIHQyID0gX21tX3NyYWlfZXBpMTYoX21tX2Fk
ZF9lcGkxNihxNiwgdDApLCA0KTsKKysgICAgICAgICAgICAgICAgdDEgPSBfbW1fYmxlbmR2X2Vw
aTgodDEsIHE1LCB2ZmxhdDhvdXQpOworKyAgICAgICAgICAgICAgICB0MiA9IF9tbV9ibGVuZHZf
ZXBpOCh0MiwgcTYsIHZmbGF0OG91dCk7CisrICAgICAgICAgICAgICAgIHQxID0gX21tX3BhY2t1
c19lcGkxNih0MSwgdDIpOworKyAgICAgICAgICAgICAgICBWRUNfU1RMKGRzdCArIHN0cmlkZSAq
IDUsIHQxKTsKKysgICAgICAgICAgICAgICAgVkVDX1NUSChkc3QgKyBzdHJpZGUgKiA2LCB0MSk7
CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAgdDEgPSBfbW1fcGFja3VzX2Vw
aTE2KHAyYSwgcTJhKTsKKysgICAgICAgIFZFQ19TVEwoZHN0IC0gc3RyaWRlICogMywgdDEpOwor
KyAgICAgICAgVkVDX1NUSChkc3QgKyBzdHJpZGUgKiAyLCB0MSk7CisrICAgIH0KKysKKysgICAg
dDAgPSBfbW1fcGFja3VzX2VwaTE2KHAxYSwgcDBhKTsKKysgICAgdDEgPSBfbW1fcGFja3VzX2Vw
aTE2KHEwYSwgcTFhKTsKKysgICAgVkVDX1NUTChkc3QgLSBzdHJpZGUgKiAyLCB0MCk7CisrICAg
IFZFQ19TVEgoZHN0IC0gc3RyaWRlICogMSwgdDApOworKyAgICBWRUNfU1RMKGRzdCArIHN0cmlk
ZSAqIDAsIHQxKTsKKysgICAgVkVDX1NUSChkc3QgKyBzdHJpZGUgKiAxLCB0MSk7CisrfQorKwor
KyNkZWZpbmUgbGZfOF9mbnMod2QpIFwKKytzdGF0aWMgdm9pZCBsb29wX2ZpbHRlcl9oXyMjd2Qj
I184X2Uyayh1aW50OF90ICpkc3QsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IEUsIGludCBJLCBpbnQgSCkgXAorK3sgXAorKyAgICBsb29wX2ZpbHRl
cl9oKGRzdCwgRSwgSSwgSCwgc3RyaWRlLCB3ZCk7IFwKKyt9IFwKKytzdGF0aWMgdm9pZCBsb29w
X2ZpbHRlcl92XyMjd2QjI184X2Uyayh1aW50OF90ICpkc3QsIFwKKysgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgc3RyaWRlLCBcCisrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IEUsIGludCBJLCBpbnQgSCkgXAorK3sgXAor
KyAgICBsb29wX2ZpbHRlcl92KGRzdCwgRSwgSSwgSCwgc3RyaWRlLCB3ZCk7IFwKKyt9CisrCisr
bGZfOF9mbnMoNCkKKytsZl84X2Zucyg4KQorK2xmXzhfZm5zKDE2KQorKworKyN1bmRlZiBsZl84
X2ZuCisrI3VuZGVmIGxmXzhfZm5zCisrCisrI2RlZmluZSBsZl8xNl9mbihkaXIsIHN0cmlkZWEp
IFwKKytzdGF0aWMgdm9pZCBsb29wX2ZpbHRlcl8jI2RpciMjXzE2XzE2X2Uyayh1aW50OF90ICpk
c3QsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZm
X3Qgc3RyaWRlLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IEUsIGludCBJLCBpbnQgSCkgXAorK3sgXAorKyAgICBsb29wX2ZpbHRlcl8jI2RpciMjXzE2
XzhfZTJrKGRzdCwgc3RyaWRlLCBFLCBJLCBIKTsgXAorKyAgICBsb29wX2ZpbHRlcl8jI2RpciMj
XzE2XzhfZTJrKGRzdCArIDggKiBzdHJpZGVhLCBzdHJpZGUsIEUsIEksIEgpOyBcCisrfQorKwor
K2xmXzE2X2ZuKGgsIHN0cmlkZSkKKytsZl8xNl9mbih2LCBzaXplb2YocGl4ZWwpKQorKworKyN1
bmRlZiBsZl8xNl9mbgorKworKyNkZWZpbmUgbGZfbWl4X2ZuKGRpciwgd2QxLCB3ZDIsIHN0cmlk
ZWEpIFwKKytzdGF0aWMgdm9pZCBsb29wX2ZpbHRlcl8jI2RpciMjXyMjd2QxIyN3ZDIjI18xNl9l
MmsodWludDhfdCAqZHN0LCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUsIFwKKysgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IEUsIGludCBJLCBpbnQgSCkgXAor
K3sgXAorKyAgICBsb29wX2ZpbHRlcl8jI2RpciMjXyMjd2QxIyNfOF9lMmsoZHN0LCBzdHJpZGUs
IEUgJiAweGZmLCBJICYgMHhmZiwgSCAmIDB4ZmYpOyBcCisrICAgIGxvb3BfZmlsdGVyXyMjZGly
IyNfIyN3ZDIjI184X2Uyayhkc3QgKyA4ICogc3RyaWRlYSwgc3RyaWRlLCBFID4+IDgsIEkgPj4g
OCwgSCA+PiA4KTsgXAorK30KKysKKysjZGVmaW5lIGxmX21peF9mbnMod2QxLCB3ZDIpIFwKKyts
Zl9taXhfZm4oaCwgd2QxLCB3ZDIsIHN0cmlkZSkgXAorK2xmX21peF9mbih2LCB3ZDEsIHdkMiwg
c2l6ZW9mKHBpeGVsKSkKKysKKytsZl9taXhfZm5zKDQsIDQpCisrbGZfbWl4X2Zucyg0LCA4KQor
K2xmX21peF9mbnMoOCwgNCkKKytsZl9taXhfZm5zKDgsIDgpCisrCisrI3VuZGVmIGxmX21peF9m
bgorKyN1bmRlZiBsZl9taXhfZm5zCisrCisrc3RhdGljIGF2X2NvbGQgdm9pZCBmZl92cDlkc3Bf
bG9vcGZpbHRlcl9pbml0XzhfZTJrKFZQOURTUENvbnRleHQgKmRzcCkKKyt7CisrICAgIGRzcC0+
bG9vcF9maWx0ZXJfOFswXVswXSA9IGxvb3BfZmlsdGVyX2hfNF84X2UyazsKKysgICAgZHNwLT5s
b29wX2ZpbHRlcl84WzBdWzFdID0gbG9vcF9maWx0ZXJfdl80XzhfZTJrOworKyAgICBkc3AtPmxv
b3BfZmlsdGVyXzhbMV1bMF0gPSBsb29wX2ZpbHRlcl9oXzhfOF9lMms7CisrICAgIGRzcC0+bG9v
cF9maWx0ZXJfOFsxXVsxXSA9IGxvb3BfZmlsdGVyX3ZfOF84X2UyazsKKysgICAgZHNwLT5sb29w
X2ZpbHRlcl84WzJdWzBdID0gbG9vcF9maWx0ZXJfaF8xNl84X2UyazsKKysgICAgZHNwLT5sb29w
X2ZpbHRlcl84WzJdWzFdID0gbG9vcF9maWx0ZXJfdl8xNl84X2UyazsKKysKKysgICAgZHNwLT5s
b29wX2ZpbHRlcl8xNlswXSA9IGxvb3BfZmlsdGVyX2hfMTZfMTZfZTJrOworKyAgICBkc3AtPmxv
b3BfZmlsdGVyXzE2WzFdID0gbG9vcF9maWx0ZXJfdl8xNl8xNl9lMms7CisrCisrICAgIGRzcC0+
bG9vcF9maWx0ZXJfbWl4MlswXVswXVswXSA9IGxvb3BfZmlsdGVyX2hfNDRfMTZfZTJrOworKyAg
ICBkc3AtPmxvb3BfZmlsdGVyX21peDJbMF1bMF1bMV0gPSBsb29wX2ZpbHRlcl92XzQ0XzE2X2Uy
azsKKysgICAgZHNwLT5sb29wX2ZpbHRlcl9taXgyWzBdWzFdWzBdID0gbG9vcF9maWx0ZXJfaF80
OF8xNl9lMms7CisrICAgIGRzcC0+bG9vcF9maWx0ZXJfbWl4MlswXVsxXVsxXSA9IGxvb3BfZmls
dGVyX3ZfNDhfMTZfZTJrOworKyAgICBkc3AtPmxvb3BfZmlsdGVyX21peDJbMV1bMF1bMF0gPSBs
b29wX2ZpbHRlcl9oXzg0XzE2X2UyazsKKysgICAgZHNwLT5sb29wX2ZpbHRlcl9taXgyWzFdWzBd
WzFdID0gbG9vcF9maWx0ZXJfdl84NF8xNl9lMms7CisrICAgIGRzcC0+bG9vcF9maWx0ZXJfbWl4
MlsxXVsxXVswXSA9IGxvb3BfZmlsdGVyX2hfODhfMTZfZTJrOworKyAgICBkc3AtPmxvb3BfZmls
dGVyX21peDJbMV1bMV1bMV0gPSBsb29wX2ZpbHRlcl92Xzg4XzE2X2UyazsKKyt9CisrCisrI2lm
IEJJVF9ERVBUSCAhPSAxMgorKworK3N0YXRpYyBhdl9hbHdheXNfaW5saW5lIHZvaWQgY29weV9l
MmsodWludDhfdCAqZHN0LCBwdHJkaWZmX3QgZHN0X3N0cmlkZSwKKysgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHNyY19z
dHJpZGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdywgaW50
IGgpCisreworKyAgICBkbyB7CisrICAgICAgICBtZW1jcHkoZHN0LCBzcmMsIHcpOworKyAgICAg
ICAgZHN0ICs9IGRzdF9zdHJpZGU7CisrICAgICAgICBzcmMgKz0gc3JjX3N0cmlkZTsKKysgICAg
fSB3aGlsZSAoLS1oKTsKKyt9CisrCisrc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBhdmdf
ZTJrKHVpbnQ4X3QgKmRzdCwgcHRyZGlmZl90IGRzdF9zdHJpZGUsCisrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHNyY19z
dHJpZGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3LCBpbnQg
aCkKKyt7CisrICAgIGludCB5OworKyAgICBfX20xMjhpIHYwLCB2MSwgdjIsIHYzOyBfX202NCBo
MCwgaDE7CisrICAgIGlmICh3ID49IDY0KSB7CisrICAgICAgICBQUkFHTUFfRTJLKCJpdmRlcCIp
CisrICAgICAgICBmb3IgKHkgPSAwOyB5IDwgaDsgeSsrKSB7CisrICAgICAgICAgICAgdjAgPSBW
RUNfTEQoc3JjKTsKKysgICAgICAgICAgICB2MSA9IFZFQ19MRChzcmMgKyAxNik7CisrICAgICAg
ICAgICAgdjIgPSBWRUNfTEQoc3JjICsgMzIpOworKyAgICAgICAgICAgIHYzID0gVkVDX0xEKHNy
YyArIDQ4KTsKKysgICAgICAgICAgICB2MCA9IF9tbV9hdmdfZXB1OCh2MCwgVkVDX0xEKGRzdCkp
OworKyAgICAgICAgICAgIHYxID0gX21tX2F2Z19lcHU4KHYxLCBWRUNfTEQoZHN0ICsgMTYpKTsK
KysgICAgICAgICAgICB2MiA9IF9tbV9hdmdfZXB1OCh2MiwgVkVDX0xEKGRzdCArIDMyKSk7Cisr
ICAgICAgICAgICAgdjMgPSBfbW1fYXZnX2VwdTgodjMsIFZFQ19MRChkc3QgKyA0OCkpOworKyAg
ICAgICAgICAgIFZFQ19TVChkc3QsIHYwKTsKKysgICAgICAgICAgICBWRUNfU1QoZHN0ICsgMTYs
IHYxKTsKKysgICAgICAgICAgICBWRUNfU1QoZHN0ICsgMzIsIHYyKTsKKysgICAgICAgICAgICBW
RUNfU1QoZHN0ICsgNDgsIHYzKTsKKysgICAgICAgICAgICBzcmMgKz0gc3JjX3N0cmlkZTsKKysg
ICAgICAgICAgICBkc3QgKz0gZHN0X3N0cmlkZTsKKysgICAgICAgIH0KKysgICAgfSBlbHNlIGlm
ICh3ID49IDMyKSB7CisrICAgICAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAgICAgICBmb3Ig
KHkgPSAwOyB5IDwgaDsgeSsrKSB7CisrICAgICAgICAgICAgdjAgPSBWRUNfTEQoc3JjKTsKKysg
ICAgICAgICAgICB2MSA9IFZFQ19MRChzcmMgKyAxNik7CisrICAgICAgICAgICAgdjAgPSBfbW1f
YXZnX2VwdTgodjAsIFZFQ19MRChkc3QpKTsKKysgICAgICAgICAgICB2MSA9IF9tbV9hdmdfZXB1
OCh2MSwgVkVDX0xEKGRzdCArIDE2KSk7CisrICAgICAgICAgICAgVkVDX1NUKGRzdCwgdjApOwor
KyAgICAgICAgICAgIFZFQ19TVChkc3QgKyAxNiwgdjEpOworKyAgICAgICAgICAgIHNyYyArPSBz
cmNfc3RyaWRlOworKyAgICAgICAgICAgIGRzdCArPSBkc3Rfc3RyaWRlOworKyAgICAgICAgfQor
KyAgICB9IGVsc2UgaWYgKHcgPj0gMTYpIHsKKysgICAgICAgIFBSQUdNQV9FMksoIml2ZGVwIikK
KysgICAgICAgIGZvciAoeSA9IDA7IHkgPCBoOyB5KyspIHsKKysgICAgICAgICAgICB2MCA9IFZF
Q19MRChzcmMpOworKyAgICAgICAgICAgIHYwID0gX21tX2F2Z19lcHU4KHYwLCBWRUNfTEQoZHN0
KSk7CisrICAgICAgICAgICAgVkVDX1NUKGRzdCwgdjApOworKyAgICAgICAgICAgIHNyYyArPSBz
cmNfc3RyaWRlOworKyAgICAgICAgICAgIGRzdCArPSBkc3Rfc3RyaWRlOworKyAgICAgICAgfQor
KyAgICB9IGVsc2UgaWYgKHcgPj0gOCkgeworKyAgICAgICAgUFJBR01BX0UySygiaXZkZXAiKQor
KyAgICAgICAgZm9yICh5ID0gMDsgeSA8IGg7IHkrKykgeworKyAgICAgICAgICAgIGgwID0gKihf
X202NCopc3JjOworKyAgICAgICAgICAgIGgxID0gKihfX202NCopZHN0OworKyAgICAgICAgICAg
IGgwID0gX21tX2F2Z19wdTgoaDAsIGgxKTsKKysgICAgICAgICAgICAqKF9fbTY0Kilkc3QgPSBo
MDsKKysgICAgICAgICAgICBzcmMgKz0gc3JjX3N0cmlkZTsKKysgICAgICAgICAgICBkc3QgKz0g
ZHN0X3N0cmlkZTsKKysgICAgICAgIH0KKysgICAgfSBlbHNlIHsKKysgICAgICAgIFBSQUdNQV9F
MksoIml2ZGVwIikKKysgICAgICAgIGZvciAoeSA9IDA7IHkgPCBoOyB5KyspIHsKKysgICAgICAg
ICAgICBoMCA9IF9tbV9jdnRzaTMyX3NpNjQoKih1aW50MzJfdCopc3JjKTsKKysgICAgICAgICAg
ICBoMSA9IF9tbV9jdnRzaTMyX3NpNjQoKih1aW50MzJfdCopZHN0KTsKKysgICAgICAgICAgICBo
MCA9IF9tbV9hdmdfcHU4KGgwLCBoMSk7CisrICAgICAgICAgICAgKih1aW50MzJfdCopZHN0ID0g
X21tX2N2dHNpNjRfc2kzMihoMCk7CisrICAgICAgICAgICAgc3JjICs9IHNyY19zdHJpZGU7Cisr
ICAgICAgICAgICAgZHN0ICs9IGRzdF9zdHJpZGU7CisrICAgICAgICB9CisrICAgIH0KKyt9Cisr
CisrI2RlZmluZSBmcGVsX2ZuKHR5cGUsIHN6KSBcCisrc3RhdGljIHZvaWQgdHlwZSMjc3ojI19l
MmsodWludDhfdCAqZHN0LCBwdHJkaWZmX3QgZHN0X3N0cmlkZSwgXAorKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHNyY19zdHJpZGUsIFwK
KysgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaCwgaW50IG14LCBpbnQgbXkpIFwKKyt7
IFwKKysgICAgdHlwZSMjX2Uyayhkc3QsIGRzdF9zdHJpZGUsIHNyYywgc3JjX3N0cmlkZSwgc3os
IGgpOyBcCisrfQorKworKyNkZWZpbmUgY29weV9hdmdfZm4oc3opIFwKKytmcGVsX2ZuKGNvcHks
IHN6KSBcCisrZnBlbF9mbihhdmcsICBzeikKKysKKytjb3B5X2F2Z19mbig2NCkKKytjb3B5X2F2
Z19mbigzMikKKytjb3B5X2F2Z19mbigxNikKKytjb3B5X2F2Z19mbig4KQorK2NvcHlfYXZnX2Zu
KDQpCisrCisrI3VuZGVmIGZwZWxfZm4KKysjdW5kZWYgY29weV9hdmdfZm4KKysKKysjZW5kaWYg
LyogQklUX0RFUFRIICE9IDEyICovCisrCisrc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdm9pZCBk
b184dGFwXzFkX3ZfZTJrKHVpbnQ4X3QgKmRzdCwgcHRyZGlmZl90IGRzdF9zdHJpZGUsCisrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KnNyYywgcHRyZGlmZl90IHNyY19zdHJpZGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCB3LCBpbnQgaCwgY29uc3QgaW50MTZfdCAqZmlsdGVyLCBp
bnQgYXZnKQorK3sKKysgICAgaW50IHgsIHk7CisrICAgIGNvbnN0IHVpbnQ4X3QgKnM7IHVpbnQ4
X3QgKmQ7CisrCisrICAgIGlmICh3ID49IDgpIHsKKysgICAgICAgIF9fbTEyOGkgYTAsIGExLCBh
MiwgYTMsIGE0LCBhNSwgYTYsIGE3OworKyAgICAgICAgX19tMTI4aSB2MCwgdjEsIHYyLCB2MzsK
KysgICAgICAgIF9fbTEyOGkgZjAsIGYxLCBmMiwgZjMsIGM2NDsgX19tNjQgaDAsIGgxOworKyAg
ICAgICAgZjAgPSBfbW1fc2V0MV9lcGkxNigoZmlsdGVyWzBdICYgMjU1KSB8IGZpbHRlclsxXSA8
PCA4KTsKKysgICAgICAgIGYxID0gX21tX3NldDFfZXBpMTYoKGZpbHRlclsyXSAmIDI1NSkgfCBm
aWx0ZXJbM10gPDwgOCk7CisrICAgICAgICBmMiA9IF9tbV9zZXQxX2VwaTE2KChmaWx0ZXJbNF0g
JiAyNTUpIHwgZmlsdGVyWzVdIDw8IDgpOworKyAgICAgICAgZjMgPSBfbW1fc2V0MV9lcGkxNigo
ZmlsdGVyWzZdICYgMjU1KSB8IGZpbHRlcls3XSA8PCA4KTsKKysgICAgICAgIGM2NCA9IF9tbV9z
ZXQxX2VwaTE2KDY0KTsKKysKKysgICAgICAgIGZvciAoeCA9IDA7IHggPCB3OyB4ICs9IDgpIHsK
KysgICAgICAgICAgICBhMCA9IFZFQ19MRDgoJnNyY1t4IC0gMyAqIHNyY19zdHJpZGVdKTsKKysg
ICAgICAgICAgICBhMSA9IFZFQ19MRDgoJnNyY1t4IC0gMiAqIHNyY19zdHJpZGVdKTsKKysgICAg
ICAgICAgICBhMiA9IFZFQ19MRDgoJnNyY1t4IC0gMSAqIHNyY19zdHJpZGVdKTsKKysgICAgICAg
ICAgICBhMyA9IFZFQ19MRDgoJnNyY1t4ICsgMCAqIHNyY19zdHJpZGVdKTsKKysgICAgICAgICAg
ICBhNCA9IFZFQ19MRDgoJnNyY1t4ICsgMSAqIHNyY19zdHJpZGVdKTsKKysgICAgICAgICAgICBh
NSA9IFZFQ19MRDgoJnNyY1t4ICsgMiAqIHNyY19zdHJpZGVdKTsKKysgICAgICAgICAgICBhNiA9
IFZFQ19MRDgoJnNyY1t4ICsgMyAqIHNyY19zdHJpZGVdKTsKKysgICAgICAgICAgICBzID0gc3Jj
ICsgeCArIDQgKiBzcmNfc3RyaWRlOworKyAgICAgICAgICAgIGQgPSBkc3QgKyB4OworKworKyAg
ICAgICAgICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgICAgICAgICBmb3IgKHkgPSAwOyB5
IDwgaDsgeSsrKSB7CisrICAgICAgICAgICAgICAgIGE3ID0gVkVDX0xEOChzKTsKKysgICAgICAg
ICAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpOChhMCwgYTEpOworKyAgICAgICAgICAgICAg
ICB2MSA9IF9tbV91bnBhY2tsb19lcGk4KGEyLCBhMyk7CisrICAgICAgICAgICAgICAgIHYyID0g
X21tX3VucGFja2xvX2VwaTgoYTQsIGE1KTsKKysgICAgICAgICAgICAgICAgdjMgPSBfbW1fdW5w
YWNrbG9fZXBpOChhNiwgYTcpOworKyAgICAgICAgICAgICAgICB2MCA9IF9tbV9tYWRkdWJzX2Vw
aTE2KHYwLCBmMCk7CisrICAgICAgICAgICAgICAgIHYxID0gX21tX21hZGR1YnNfZXBpMTYodjEs
IGYxKTsKKysgICAgICAgICAgICAgICAgdjIgPSBfbW1fbWFkZHVic19lcGkxNih2MiwgZjIpOwor
KyAgICAgICAgICAgICAgICB2MyA9IF9tbV9tYWRkdWJzX2VwaTE2KHYzLCBmMyk7CisrICAgICAg
ICAgICAgICAgIHYwID0gX21tX2FkZF9lcGkxNih2MCwgdjIpOworKyAgICAgICAgICAgICAgICB2
MSA9IF9tbV9hZGRfZXBpMTYodjEsIHYzKTsKKysgICAgICAgICAgICAgICAgdjAgPSBfbW1fYWRk
X2VwaTE2KHYwLCBjNjQpOworKyAgICAgICAgICAgICAgICB2MCA9IF9tbV9hZGRzX2VwaTE2KHYw
LCB2MSk7CisrICAgICAgICAgICAgICAgIHYwID0gX21tX3NyYWlfZXBpMTYodjAsIDcpOworKyAg
ICAgICAgICAgICAgICB2MCA9IF9tbV9wYWNrdXNfZXBpMTYodjAsIHYwKTsKKysgICAgICAgICAg
ICAgICAgaDAgPSBfbW1fbW92ZXBpNjRfcGk2NCh2MCk7CisrICAgICAgICAgICAgICAgIGlmIChh
dmcpIHsKKysgICAgICAgICAgICAgICAgICAgIGgxID0gKihfX202NCopZDsKKysgICAgICAgICAg
ICAgICAgICAgIGgwID0gX21tX2F2Z19wdTgoaDAsIGgxKTsKKysgICAgICAgICAgICAgICAgfQor
KyAgICAgICAgICAgICAgICAqKF9fbTY0KilkID0gaDA7CisrICAgICAgICAgICAgICAgIHMgKz0g
c3JjX3N0cmlkZTsKKysgICAgICAgICAgICAgICAgZCArPSBkc3Rfc3RyaWRlOworKyAgICAgICAg
ICAgICAgICBhMCA9IGExOyBhMSA9IGEyOyBhMiA9IGEzOyBhMyA9IGE0OworKyAgICAgICAgICAg
ICAgICBhNCA9IGE1OyBhNSA9IGE2OyBhNiA9IGE3OworKyAgICAgICAgICAgIH0KKysgICAgICAg
IH0KKysgICAgfSBlbHNlIHsKKysgICAgICAgIF9fbTY0IGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUs
IGE2LCBhNzsKKysgICAgICAgIF9fbTY0IHYwLCB2MSwgdjIsIHYzOworKyAgICAgICAgX19tNjQg
ZjAsIGYxLCBmMiwgZjMsIGM2NDsKKysgICAgICAgIGYwID0gX21tX3NldDFfcGkxNigoZmlsdGVy
WzBdICYgMjU1KSB8IGZpbHRlclsxXSA8PCA4KTsKKysgICAgICAgIGYxID0gX21tX3NldDFfcGkx
NigoZmlsdGVyWzJdICYgMjU1KSB8IGZpbHRlclszXSA8PCA4KTsKKysgICAgICAgIGYyID0gX21t
X3NldDFfcGkxNigoZmlsdGVyWzRdICYgMjU1KSB8IGZpbHRlcls1XSA8PCA4KTsKKysgICAgICAg
IGYzID0gX21tX3NldDFfcGkxNigoZmlsdGVyWzZdICYgMjU1KSB8IGZpbHRlcls3XSA8PCA4KTsK
KysgICAgICAgIGM2NCA9IF9tbV9zZXQxX3BpMTYoNjQpOworKworKyAgICAgICAgYTAgPSBfbW1f
Y3Z0c2kzMl9zaTY0KCoodWludDMyX3QqKShzcmMgLSAzICogc3JjX3N0cmlkZSkpOworKyAgICAg
ICAgYTEgPSBfbW1fY3Z0c2kzMl9zaTY0KCoodWludDMyX3QqKShzcmMgLSAyICogc3JjX3N0cmlk
ZSkpOworKyAgICAgICAgYTIgPSBfbW1fY3Z0c2kzMl9zaTY0KCoodWludDMyX3QqKShzcmMgLSAx
ICogc3JjX3N0cmlkZSkpOworKyAgICAgICAgYTMgPSBfbW1fY3Z0c2kzMl9zaTY0KCoodWludDMy
X3QqKShzcmMgKyAwICogc3JjX3N0cmlkZSkpOworKyAgICAgICAgYTQgPSBfbW1fY3Z0c2kzMl9z
aTY0KCoodWludDMyX3QqKShzcmMgKyAxICogc3JjX3N0cmlkZSkpOworKyAgICAgICAgYTUgPSBf
bW1fY3Z0c2kzMl9zaTY0KCoodWludDMyX3QqKShzcmMgKyAyICogc3JjX3N0cmlkZSkpOworKyAg
ICAgICAgYTYgPSBfbW1fY3Z0c2kzMl9zaTY0KCoodWludDMyX3QqKShzcmMgKyAzICogc3JjX3N0
cmlkZSkpOworKyAgICAgICAgcyA9IHNyYyArIDQgKiBzcmNfc3RyaWRlOworKyAgICAgICAgZCA9
IGRzdDsKKysKKysgICAgICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgICAgIGZvciAoeSA9
IDA7IHkgPCBoOyB5KyspIHsKKysgICAgICAgICAgICBhNyA9IF9tbV9jdnRzaTMyX3NpNjQoKih1
aW50MzJfdCopcyk7CisrICAgICAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fcGk4KGEwLCBhMSk7
CisrICAgICAgICAgICAgdjEgPSBfbW1fdW5wYWNrbG9fcGk4KGEyLCBhMyk7CisrICAgICAgICAg
ICAgdjIgPSBfbW1fdW5wYWNrbG9fcGk4KGE0LCBhNSk7CisrICAgICAgICAgICAgdjMgPSBfbW1f
dW5wYWNrbG9fcGk4KGE2LCBhNyk7CisrICAgICAgICAgICAgdjAgPSBfbW1fbWFkZHVic19waTE2
KHYwLCBmMCk7CisrICAgICAgICAgICAgdjEgPSBfbW1fbWFkZHVic19waTE2KHYxLCBmMSk7Cisr
ICAgICAgICAgICAgdjIgPSBfbW1fbWFkZHVic19waTE2KHYyLCBmMik7CisrICAgICAgICAgICAg
djMgPSBfbW1fbWFkZHVic19waTE2KHYzLCBmMyk7CisrICAgICAgICAgICAgdjAgPSBfbW1fYWRk
X3BpMTYodjAsIHYyKTsKKysgICAgICAgICAgICB2MSA9IF9tbV9hZGRfcGkxNih2MSwgdjMpOwor
KyAgICAgICAgICAgIHYwID0gX21tX2FkZF9waTE2KHYwLCBjNjQpOworKyAgICAgICAgICAgIHYw
ID0gX21tX2FkZHNfcGkxNih2MCwgdjEpOworKyAgICAgICAgICAgIHYwID0gX21tX3NyYWlfcGkx
Nih2MCwgNyk7CisrICAgICAgICAgICAgdjAgPSBfbW1fcGFja3NfcHUxNih2MCwgdjApOworKyAg
ICAgICAgICAgIGlmIChhdmcpIHsKKysgICAgICAgICAgICAgICAgdjEgPSBfbW1fY3Z0c2kzMl9z
aTY0KCoodWludDMyX3QqKWQpOworKyAgICAgICAgICAgICAgICB2MCA9IF9tbV9hdmdfcHU4KHYw
LCB2MSk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgICoodWludDMyX3QqKWQgPSBfbW1f
Y3Z0c2k2NF9zaTMyKHYwKTsKKysgICAgICAgICAgICBzICs9IHNyY19zdHJpZGU7CisrICAgICAg
ICAgICAgZCArPSBkc3Rfc3RyaWRlOworKyAgICAgICAgICAgIGEwID0gYTE7IGExID0gYTI7IGEy
ID0gYTM7IGEzID0gYTQ7CisrICAgICAgICAgICAgYTQgPSBhNTsgYTUgPSBhNjsgYTYgPSBhNzsK
KysgICAgICAgIH0KKysgICAgfQorK30KKysKKytzdGF0aWMgYXZfYWx3YXlzX2lubGluZSB2b2lk
IGRvXzh0YXBfMWRfaF9lMmsodWludDhfdCAqZHN0LCBwdHJkaWZmX3QgZHN0X3N0cmlkZSwKKysg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqc3JjLCBwdHJkaWZmX3Qgc3JjX3N0cmlkZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHcsIGludCBoLCBjb25zdCBpbnQxNl90ICpmaWx0ZXIs
IGludCBhdmcpCisreworKyAgICBpbnQgeCwgeTsKKysKKysgICAgaWYgKHcgPj0gOCkgeworKyAg
ICAgICAgX19tNjQgYTAsIGExLCBhMiwgYTM7CisrICAgICAgICBfX20xMjhpIHYwLCB2MSwgdjIs
IHYzOworKyAgICAgICAgX19tMTI4aSBmMCwgZjEsIGYyLCBmMywgYzY0OyBfX202NCBoMCwgaDE7
CisrICAgICAgICBmMCA9IF9tbV9zZXQxX2VwaTE2KChmaWx0ZXJbMF0gJiAyNTUpIHwgZmlsdGVy
WzFdIDw8IDgpOworKyAgICAgICAgZjEgPSBfbW1fc2V0MV9lcGkxNigoZmlsdGVyWzJdICYgMjU1
KSB8IGZpbHRlclszXSA8PCA4KTsKKysgICAgICAgIGYyID0gX21tX3NldDFfZXBpMTYoKGZpbHRl
cls0XSAmIDI1NSkgfCBmaWx0ZXJbNV0gPDwgOCk7CisrICAgICAgICBmMyA9IF9tbV9zZXQxX2Vw
aTE2KChmaWx0ZXJbNl0gJiAyNTUpIHwgZmlsdGVyWzddIDw8IDgpOworKyAgICAgICAgYzY0ID0g
X21tX3NldDFfZXBpMTYoNjQpOworKworKyAgICAgICAgZm9yICh5ID0gMDsgeSA8IGg7IHkrKykg
eworKyAgICAgICAgICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgICAgICAgICBmb3IgKHgg
PSAwOyB4IDwgdzsgeCArPSA4KSB7CisrICAgICAgICAgICAgICAgIGEwID0gKihfX202NCopKHNy
YyArIHggLSAzKTsKKysgICAgICAgICAgICAgICAgYTEgPSAqKF9fbTY0Kikoc3JjICsgeCAtIDMg
KyA3KTsKKysgICAgICAgICAgICAgICAgYTAgPSBfbW1fc2xsaV9zaTY0KGEwLCA4KTsKKysgICAg
ICAgICAgICAgICAgYTIgPSBfbW1fYWxpZ25yX3BpOChhMSwgYTAsIDEpOworKyAgICAgICAgICAg
ICAgICBhMyA9IF9tbV9hbGlnbnJfcGk4KGExLCBhMCwgMik7CisrICAgICAgICAgICAgICAgIHYw
ID0gX21tX3VucGFja2xvX2VwaTgoX21tX21vdnBpNjRfZXBpNjQoYTIpLCBfbW1fbW92cGk2NF9l
cGk2NChhMykpOworKyAgICAgICAgICAgICAgICBhMiA9IF9tbV9hbGlnbnJfcGk4KGExLCBhMCwg
Myk7CisrICAgICAgICAgICAgICAgIGEzID0gX21tX2FsaWducl9waTgoYTEsIGEwLCA0KTsKKysg
ICAgICAgICAgICAgICAgdjEgPSBfbW1fdW5wYWNrbG9fZXBpOChfbW1fbW92cGk2NF9lcGk2NChh
MiksIF9tbV9tb3ZwaTY0X2VwaTY0KGEzKSk7CisrICAgICAgICAgICAgICAgIGEyID0gX21tX2Fs
aWducl9waTgoYTEsIGEwLCA1KTsKKysgICAgICAgICAgICAgICAgYTMgPSBfbW1fYWxpZ25yX3Bp
OChhMSwgYTAsIDYpOworKyAgICAgICAgICAgICAgICB2MiA9IF9tbV91bnBhY2tsb19lcGk4KF9t
bV9tb3ZwaTY0X2VwaTY0KGEyKSwgX21tX21vdnBpNjRfZXBpNjQoYTMpKTsKKysgICAgICAgICAg
ICAgICAgYTIgPSBfbW1fYWxpZ25yX3BpOChhMSwgYTAsIDcpOworKyAgICAgICAgICAgICAgICB2
MyA9IF9tbV91bnBhY2tsb19lcGk4KF9tbV9tb3ZwaTY0X2VwaTY0KGEyKSwgX21tX21vdnBpNjRf
ZXBpNjQoYTEpKTsKKysKKysgICAgICAgICAgICAgICAgdjAgPSBfbW1fbWFkZHVic19lcGkxNih2
MCwgZjApOworKyAgICAgICAgICAgICAgICB2MSA9IF9tbV9tYWRkdWJzX2VwaTE2KHYxLCBmMSk7
CisrICAgICAgICAgICAgICAgIHYyID0gX21tX21hZGR1YnNfZXBpMTYodjIsIGYyKTsKKysgICAg
ICAgICAgICAgICAgdjMgPSBfbW1fbWFkZHVic19lcGkxNih2MywgZjMpOworKyAgICAgICAgICAg
ICAgICB2MCA9IF9tbV9hZGRfZXBpMTYodjAsIHYyKTsKKysgICAgICAgICAgICAgICAgdjEgPSBf
bW1fYWRkX2VwaTE2KHYxLCB2Myk7CisrICAgICAgICAgICAgICAgIHYwID0gX21tX2FkZF9lcGkx
Nih2MCwgYzY0KTsKKysgICAgICAgICAgICAgICAgdjAgPSBfbW1fYWRkc19lcGkxNih2MCwgdjEp
OworKyAgICAgICAgICAgICAgICB2MCA9IF9tbV9zcmFpX2VwaTE2KHYwLCA3KTsKKysgICAgICAg
ICAgICAgICAgdjAgPSBfbW1fcGFja3VzX2VwaTE2KHYwLCB2MCk7CisrICAgICAgICAgICAgICAg
IGgwID0gX21tX21vdmVwaTY0X3BpNjQodjApOworKyAgICAgICAgICAgICAgICBpZiAoYXZnKSB7
CisrICAgICAgICAgICAgICAgICAgICBoMSA9ICooX19tNjQqKShkc3QgKyB4KTsKKysgICAgICAg
ICAgICAgICAgICAgIGgwID0gX21tX2F2Z19wdTgoaDAsIGgxKTsKKysgICAgICAgICAgICAgICAg
fQorKyAgICAgICAgICAgICAgICAqKF9fbTY0KikoZHN0ICsgeCkgPSBoMDsKKysgICAgICAgICAg
ICB9CisrICAgICAgICAgICAgc3JjICs9IHNyY19zdHJpZGU7CisrICAgICAgICAgICAgZHN0ICs9
IGRzdF9zdHJpZGU7CisrICAgICAgICB9CisrICAgIH0gZWxzZSB7CisrICAgICAgICBfX202NCBh
MCwgYTEsIGEyLCBhMzsKKysgICAgICAgIF9fbTY0IHYwLCB2MSwgdjIsIHYzOworKyAgICAgICAg
X19tNjQgZjAsIGYxLCBmMiwgZjMsIGM2NDsKKysgICAgICAgIGYwID0gX21tX3NldDFfcGkxNigo
ZmlsdGVyWzBdICYgMjU1KSB8IGZpbHRlclsxXSA8PCA4KTsKKysgICAgICAgIGYxID0gX21tX3Nl
dDFfcGkxNigoZmlsdGVyWzJdICYgMjU1KSB8IGZpbHRlclszXSA8PCA4KTsKKysgICAgICAgIGYy
ID0gX21tX3NldDFfcGkxNigoZmlsdGVyWzRdICYgMjU1KSB8IGZpbHRlcls1XSA8PCA4KTsKKysg
ICAgICAgIGYzID0gX21tX3NldDFfcGkxNigoZmlsdGVyWzZdICYgMjU1KSB8IGZpbHRlcls3XSA8
PCA4KTsKKysgICAgICAgIGM2NCA9IF9tbV9zZXQxX3BpMTYoNjQpOworKworKyAgICAgICAgUFJB
R01BX0UySygiaXZkZXAiKQorKyAgICAgICAgZm9yICh5ID0gMDsgeSA8IGg7IHkrKykgeworKyAg
ICAgICAgICAgIGEwID0gKihfX202NCopKHNyYyAtIDMpOworKyAgICAgICAgICAgIGExID0gX21t
X2N2dHNpMzJfc2k2NCgqKHVpbnQzMl90Kikoc3JjIC0gMyArIDcpKTsKKysgICAgICAgICAgICBh
MCA9IF9tbV9zbGxpX3NpNjQoYTAsIDgpOworKyAgICAgICAgICAgIGEyID0gX21tX2FsaWducl9w
aTgoYTEsIGEwLCAxKTsKKysgICAgICAgICAgICBhMyA9IF9tbV9hbGlnbnJfcGk4KGExLCBhMCwg
Mik7CisrICAgICAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fcGk4KGEyLCBhMyk7CisrICAgICAg
ICAgICAgYTIgPSBfbW1fYWxpZ25yX3BpOChhMSwgYTAsIDMpOworKyAgICAgICAgICAgIGEzID0g
X21tX2FsaWducl9waTgoYTEsIGEwLCA0KTsKKysgICAgICAgICAgICB2MSA9IF9tbV91bnBhY2ts
b19waTgoYTIsIGEzKTsKKysgICAgICAgICAgICBhMiA9IF9tbV9hbGlnbnJfcGk4KGExLCBhMCwg
NSk7CisrICAgICAgICAgICAgYTMgPSBfbW1fYWxpZ25yX3BpOChhMSwgYTAsIDYpOworKyAgICAg
ICAgICAgIHYyID0gX21tX3VucGFja2xvX3BpOChhMiwgYTMpOworKyAgICAgICAgICAgIGEyID0g
X21tX2FsaWducl9waTgoYTEsIGEwLCA3KTsKKysgICAgICAgICAgICB2MyA9IF9tbV91bnBhY2ts
b19waTgoYTIsIGExKTsKKysKKysgICAgICAgICAgICB2MCA9IF9tbV9tYWRkdWJzX3BpMTYodjAs
IGYwKTsKKysgICAgICAgICAgICB2MSA9IF9tbV9tYWRkdWJzX3BpMTYodjEsIGYxKTsKKysgICAg
ICAgICAgICB2MiA9IF9tbV9tYWRkdWJzX3BpMTYodjIsIGYyKTsKKysgICAgICAgICAgICB2MyA9
IF9tbV9tYWRkdWJzX3BpMTYodjMsIGYzKTsKKysgICAgICAgICAgICB2MCA9IF9tbV9hZGRfcGkx
Nih2MCwgdjIpOworKyAgICAgICAgICAgIHYxID0gX21tX2FkZF9waTE2KHYxLCB2Myk7CisrICAg
ICAgICAgICAgdjAgPSBfbW1fYWRkX3BpMTYodjAsIGM2NCk7CisrICAgICAgICAgICAgdjAgPSBf
bW1fYWRkc19waTE2KHYwLCB2MSk7CisrICAgICAgICAgICAgdjAgPSBfbW1fc3JhaV9waTE2KHYw
LCA3KTsKKysgICAgICAgICAgICB2MCA9IF9tbV9wYWNrc19wdTE2KHYwLCB2MCk7CisrICAgICAg
ICAgICAgaWYgKGF2ZykgeworKyAgICAgICAgICAgICAgICB2MSA9IF9tbV9jdnRzaTMyX3NpNjQo
Kih1aW50MzJfdCopZHN0KTsKKysgICAgICAgICAgICAgICAgdjAgPSBfbW1fYXZnX3B1OCh2MCwg
djEpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICAqKHVpbnQzMl90Kilkc3QgPSBfbW1f
Y3Z0c2k2NF9zaTMyKHYwKTsKKysgICAgICAgICAgICBzcmMgKz0gc3JjX3N0cmlkZTsKKysgICAg
ICAgICAgICBkc3QgKz0gZHN0X3N0cmlkZTsKKysgICAgICAgIH0KKysgICAgfQorK30KKysKKysj
ZGVmaW5lIGZpbHRlcl84dGFwXzFkX2ZuKG9wbiwgb3BhKSBcCisrc3RhdGljIGF2X25vaW5saW5l
IHZvaWQgb3BuIyNfOHRhcF8xZF92X2Uyayh1aW50OF90ICpkc3QsIHB0cmRpZmZfdCBkc3Rfc3Ry
aWRlLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICpzcmMsIHB0cmRpZmZfdCBzcmNfc3RyaWRlLCBcCisrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdywgaW50IGgsIGNvbnN0IGludDE2X3Qg
KmZpbHRlcikgXAorK3sgXAorKyAgICBkb184dGFwXzFkX3ZfZTJrKGRzdCwgZHN0X3N0cmlkZSwg
c3JjLCBzcmNfc3RyaWRlLCB3LCBoLCBmaWx0ZXIsIG9wYSk7IFwKKyt9IFwKKytzdGF0aWMgYXZf
bm9pbmxpbmUgdm9pZCBvcG4jI184dGFwXzFkX2hfZTJrKHVpbnQ4X3QgKmRzdCwgcHRyZGlmZl90
IGRzdF9zdHJpZGUsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHNyY19zdHJpZGUsIFwKKysgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3LCBpbnQgaCwgY29uc3Qg
aW50MTZfdCAqZmlsdGVyKSBcCisreyBcCisrICAgIGRvXzh0YXBfMWRfaF9lMmsoZHN0LCBkc3Rf
c3RyaWRlLCBzcmMsIHNyY19zdHJpZGUsIHcsIGgsIGZpbHRlciwgb3BhKTsgXAorK30KKysKKytm
aWx0ZXJfOHRhcF8xZF9mbihwdXQsIDApCisrZmlsdGVyXzh0YXBfMWRfZm4oYXZnLCAxKQorKwor
KyN1bmRlZiBmaWx0ZXJfOHRhcF8xZF9mbgorKworKyNkZWZpbmUgZmlsdGVyX2ZuXzFkKHN6LCBk
aXIsIGRpcl9tLCB0eXBlLCB0eXBlX2lkeCwgYXZnKSBcCisrc3RhdGljIHZvaWQgYXZnIyNfOHRh
cF8jI3R5cGUjI18jI3N6IyNkaXIjI19lMmsodWludDhfdCAqZHN0LCBwdHJkaWZmX3QgZHN0X3N0
cmlkZSwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHNyY19zdHJpZGUsIFwKKysgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaCwgaW50IG14LCBpbnQg
bXkpIFwKKyt7IFwKKysgICAgYXZnIyNfOHRhcF8xZF8jI2RpciMjX2Uyayhkc3QsIGRzdF9zdHJp
ZGUsIHNyYywgc3JjX3N0cmlkZSwgc3osIGgsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmZl92cDlfc3VicGVsX2ZpbHRlcnNbdHlwZV9pZHhdW2Rpcl9tXSk7IFwKKyt9CisrCisr
I2RlZmluZSBwdXRfb3BhIDAKKysjZGVmaW5lIGF2Z19vcGEgMQorKyNkZWZpbmUgZmlsdGVyX2Zu
XzJkKHN6LCB0eXBlLCB0eXBlX2lkeCwgYXZnKSBcCisrc3RhdGljIHZvaWQgYXZnIyNfOHRhcF8j
I3R5cGUjI18jI3N6IyNodl9lMmsodWludDhfdCAqZHN0LCBwdHJkaWZmX3QgZHN0X3N0cmlkZSwg
XAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKnNyYywgcHRyZGlmZl90IHNyY19zdHJpZGUsIFwKKysgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaCwgaW50IG14LCBpbnQgbXkpIFwKKyt7IFwK
KysgICAgaW50IHcgPSBzejsgXAorKyAgICBwaXhlbCB0bXBbc3ogKiAoNjQgKyA3KV07IFwKKysg
ICAgc3JjIC09IHNyY19zdHJpZGUgKiAzOyBcCisrICAgIGRvXzh0YXBfMWRfaF9lMmsodG1wLCBz
eiwgc3JjLCBzcmNfc3RyaWRlLCB3LCBoICsgNywgZmZfdnA5X3N1YnBlbF9maWx0ZXJzW3R5cGVf
aWR4XVtteF0sIDApOyBcCisrICAgIGRvXzh0YXBfMWRfdl9lMmsoZHN0LCBkc3Rfc3RyaWRlLCB0
bXAgKyBzeiAqIDMsIHN6LCB3LCBoLCBmZl92cDlfc3VicGVsX2ZpbHRlcnNbdHlwZV9pZHhdW215
XSwgYXZnIyNfb3BhKTsgXAorK30KKysKKysjZGVmaW5lIGJpbGluZl9mbl8xZChzeiwgZGlyLCBk
aXJfbSwgYXZnKQorKyNkZWZpbmUgYmlsaW5mX2ZuXzJkKHN6LCBhdmcpCisrCisrI2RlZmluZSBm
aWx0ZXJfZm4oc3osIGF2ZykgXAorK2ZpbHRlcl9mbl8xZChzeiwgaCwgbXgsIHJlZ3VsYXIsIEZJ
TFRFUl84VEFQX1JFR1VMQVIsIGF2ZykgXAorK2ZpbHRlcl9mbl8xZChzeiwgdiwgbXksIHJlZ3Vs
YXIsIEZJTFRFUl84VEFQX1JFR1VMQVIsIGF2ZykgXAorK2ZpbHRlcl9mbl8yZChzeiwgICAgICAg
IHJlZ3VsYXIsIEZJTFRFUl84VEFQX1JFR1VMQVIsIGF2ZykgXAorK2ZpbHRlcl9mbl8xZChzeiwg
aCwgbXgsIHNtb290aCwgIEZJTFRFUl84VEFQX1NNT09USCwgIGF2ZykgXAorK2ZpbHRlcl9mbl8x
ZChzeiwgdiwgbXksIHNtb290aCwgIEZJTFRFUl84VEFQX1NNT09USCwgIGF2ZykgXAorK2ZpbHRl
cl9mbl8yZChzeiwgICAgICAgIHNtb290aCwgIEZJTFRFUl84VEFQX1NNT09USCwgIGF2ZykgXAor
K2ZpbHRlcl9mbl8xZChzeiwgaCwgbXgsIHNoYXJwLCAgIEZJTFRFUl84VEFQX1NIQVJQLCAgIGF2
ZykgXAorK2ZpbHRlcl9mbl8xZChzeiwgdiwgbXksIHNoYXJwLCAgIEZJTFRFUl84VEFQX1NIQVJQ
LCAgIGF2ZykgXAorK2ZpbHRlcl9mbl8yZChzeiwgICAgICAgIHNoYXJwLCAgIEZJTFRFUl84VEFQ
X1NIQVJQLCAgIGF2ZykgXAorK2JpbGluZl9mbl8xZChzeiwgaCwgbXgsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF2ZykgXAorK2JpbGluZl9mbl8xZChzeiwgdiwgbXksICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF2ZykgXAorK2JpbGluZl9mbl8yZChzeiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2ZykKKysKKysjZGVmaW5lIGZpbHRlcl9mbl9z
ZXQoYXZnKSBcCisrZmlsdGVyX2ZuKDY0LCBhdmcpIFwKKytmaWx0ZXJfZm4oMzIsIGF2ZykgXAor
K2ZpbHRlcl9mbigxNiwgYXZnKSBcCisrZmlsdGVyX2ZuKDgsICBhdmcpIFwKKytmaWx0ZXJfZm4o
NCwgIGF2ZykKKysKKytmaWx0ZXJfZm5fc2V0KHB1dCkKKytmaWx0ZXJfZm5fc2V0KGF2ZykKKysK
KysjdW5kZWYgZmlsdGVyX2ZuCisrI3VuZGVmIGZpbHRlcl9mbl9zZXQKKysjdW5kZWYgZmlsdGVy
X2ZuXzFkCisrI3VuZGVmIGZpbHRlcl9mbl8yZAorKyN1bmRlZiBiaWxpbmZfZm5fMWQKKysjdW5k
ZWYgYmlsaW5mX2ZuXzJkCisrCisrc3RhdGljIGF2X2NvbGQgdm9pZCBmZl92cDlkc3BfbWNfaW5p
dF84X2UyayhWUDlEU1BDb250ZXh0ICpkc3ApCisreworKyNkZWZpbmUgaW5pdF9mcGVsKGlkeDEs
IGlkeDIsIHN6LCB0eXBlKSBcCisrICAgIGRzcC0+bWNbaWR4MV1bRklMVEVSXzhUQVBfU01PT1RI
IF1baWR4Ml1bMF1bMF0gPSB0eXBlIyNzeiMjX2UyazsgXAorKyAgICBkc3AtPm1jW2lkeDFdW0ZJ
TFRFUl84VEFQX1JFR1VMQVJdW2lkeDJdWzBdWzBdID0gdHlwZSMjc3ojI19lMms7IFwKKysgICAg
ZHNwLT5tY1tpZHgxXVtGSUxURVJfOFRBUF9TSEFSUCAgXVtpZHgyXVswXVswXSA9IHR5cGUjI3N6
IyNfZTJrCisrCisrI2RlZmluZSBpbml0X2NvcHlfYXZnKGlkeCwgc3opIFwKKysgICAgaW5pdF9m
cGVsKGlkeCwgMCwgc3osIGNvcHkpOyBcCisrICAgIGluaXRfZnBlbChpZHgsIDEsIHN6LCBhdmcp
CisrCisrICAgIGluaXRfY29weV9hdmcoMCwgNjQpOworKyAgICBpbml0X2NvcHlfYXZnKDEsIDMy
KTsKKysgICAgaW5pdF9jb3B5X2F2ZygyLCAxNik7CisrICAgIGluaXRfY29weV9hdmcoMywgIDgp
OworKyAgICBpbml0X2NvcHlfYXZnKDQsICA0KTsKKysKKysjdW5kZWYgaW5pdF9jb3B5X2F2Zwor
KyN1bmRlZiBpbml0X2ZwZWwKKysKKysjZGVmaW5lIGluaXRfc3VicGVsMV9iZF9hd2FyZShpZHgx
LCBpZHgyLCBpZHhoLCBpZHh2LCBzeiwgZGlyLCB0eXBlKSBcCisrICAgIGRzcC0+bWNbaWR4MV1b
RklMVEVSXzhUQVBfU01PT1RIIF1baWR4Ml1baWR4aF1baWR4dl0gPSB0eXBlIyNfOHRhcF9zbW9v
dGhfIyNzeiMjZGlyIyNfZTJrOyBcCisrICAgIGRzcC0+bWNbaWR4MV1bRklMVEVSXzhUQVBfUkVH
VUxBUl1baWR4Ml1baWR4aF1baWR4dl0gPSB0eXBlIyNfOHRhcF9yZWd1bGFyXyMjc3ojI2RpciMj
X2UyazsgXAorKyAgICBkc3AtPm1jW2lkeDFdW0ZJTFRFUl84VEFQX1NIQVJQICBdW2lkeDJdW2lk
eGhdW2lkeHZdID0gdHlwZSMjXzh0YXBfc2hhcnBfIyNzeiMjZGlyIyNfZTJrCisrCisrI2RlZmlu
ZSBpbml0X3N1YnBlbDEoaWR4MSwgaWR4MiwgaWR4aCwgaWR4diwgc3osIGRpciwgdHlwZSkgXAor
KyAgICBpbml0X3N1YnBlbDFfYmRfYXdhcmUoaWR4MSwgaWR4MiwgaWR4aCwgaWR4diwgc3osIGRp
ciwgdHlwZSkKKysKKysjZGVmaW5lIGluaXRfc3VicGVsMihpZHgsIGlkeGgsIGlkeHYsIGRpciwg
dHlwZSkgXAorKyAgICBpbml0X3N1YnBlbDEoMCwgaWR4LCBpZHhoLCBpZHh2LCA2NCwgZGlyLCB0
eXBlKTsgXAorKyAgICBpbml0X3N1YnBlbDEoMSwgaWR4LCBpZHhoLCBpZHh2LCAzMiwgZGlyLCB0
eXBlKTsgXAorKyAgICBpbml0X3N1YnBlbDEoMiwgaWR4LCBpZHhoLCBpZHh2LCAxNiwgZGlyLCB0
eXBlKTsgXAorKyAgICBpbml0X3N1YnBlbDEoMywgaWR4LCBpZHhoLCBpZHh2LCAgOCwgZGlyLCB0
eXBlKTsgXAorKyAgICBpbml0X3N1YnBlbDEoNCwgaWR4LCBpZHhoLCBpZHh2LCAgNCwgZGlyLCB0
eXBlKQorKworKyNkZWZpbmUgaW5pdF9zdWJwZWwzKGlkeCwgdHlwZSkgXAorKyAgICBpbml0X3N1
YnBlbDIoaWR4LCAxLCAxLCBodiwgdHlwZSk7IFwKKysgICAgaW5pdF9zdWJwZWwyKGlkeCwgMCwg
MSwgdiwgdHlwZSk7IFwKKysgICAgaW5pdF9zdWJwZWwyKGlkeCwgMSwgMCwgaCwgdHlwZSkKKysK
KysgICAgaW5pdF9zdWJwZWwzKDAsIHB1dCk7CisrICAgIGluaXRfc3VicGVsMygxLCBhdmcpOwor
KworKyN1bmRlZiBpbml0X3N1YnBlbDEKKysjdW5kZWYgaW5pdF9zdWJwZWwyCisrI3VuZGVmIGlu
aXRfc3VicGVsMworKyN1bmRlZiBpbml0X3N1YnBlbDFfYmRfYXdhcmUKKyt9CisrCisrYXZfY29s
ZCB2b2lkIGZmX3ZwOWRzcF9pbml0X2UyayhWUDlEU1BDb250ZXh0ICpkc3AsIGludCBicHAsIGlu
dCBiaXRleGFjdCkKKyt7CisrICAgIGlmICghRTJLX0JBU0UoYXZfZ2V0X2NwdV9mbGFncygpKSkK
KysgICAgICAgIHJldHVybjsKKysKKysgICAgLy8gY2hlY2thc20KKysgICAgLy8gZG9lc24ndCBj
aGVjayBhbGwgY2FzZXMgZm9yIGxvb3BmaWx0ZXIgCisrICAgIGlmIChicHAgPT0gOCkgeworKyAg
ICAgICAgZmZfdnA5ZHNwX2l0eGZtX2luaXRfOF9lMmsoZHNwKTsKKysgICAgICAgIGZmX3ZwOWRz
cF9sb29wZmlsdGVyX2luaXRfOF9lMmsoZHNwKTsKKysgICAgICAgIGZmX3ZwOWRzcF9tY19pbml0
XzhfZTJrKGRzcCk7CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9mZGN0ZHNw
LmMgYi9saWJhdmNvZGVjL2ZkY3Rkc3AuYworaW5kZXggYjljMmM4Ni4uNjllNjMwMiAxMDA2NDQK
Ky0tLSBhL2xpYmF2Y29kZWMvZmRjdGRzcC5jCisrKysgYi9saWJhdmNvZGVjL2ZkY3Rkc3AuYwor
QEAgLTQ1LDYgKzQ1LDggQEAgYXZfY29sZCB2b2lkIGZmX2ZkY3Rkc3BfaW5pdChGRENURFNQQ29u
dGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQorIAorICAgICBpZiAoQVJDSF9QUEMpCisg
ICAgICAgICBmZl9mZGN0ZHNwX2luaXRfcHBjKGMsIGF2Y3R4LCBoaWdoX2JpdF9kZXB0aCk7Cisr
ICAgIGlmIChBUkNIX0UySykKKysgICAgICAgIGZmX2ZkY3Rkc3BfaW5pdF9lMmsoYywgYXZjdHgs
IGhpZ2hfYml0X2RlcHRoKTsKKyAgICAgaWYgKEFSQ0hfWDg2KQorICAgICAgICAgZmZfZmRjdGRz
cF9pbml0X3g4NihjLCBhdmN0eCwgaGlnaF9iaXRfZGVwdGgpOworIH0KK2RpZmYgLS1naXQgYS9s
aWJhdmNvZGVjL2ZkY3Rkc3AuaCBiL2xpYmF2Y29kZWMvZmRjdGRzcC5oCitpbmRleCAzZTFmNjgz
Li43NTQwN2Q0IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy9mZGN0ZHNwLmgKKysrKyBiL2xpYmF2
Y29kZWMvZmRjdGRzcC5oCitAQCAtMzEsNiArMzEsOCBAQCB0eXBlZGVmIHN0cnVjdCBGRENURFNQ
Q29udGV4dCB7Cisgdm9pZCBmZl9mZGN0ZHNwX2luaXQoRkRDVERTUENvbnRleHQgKmMsIEFWQ29k
ZWNDb250ZXh0ICphdmN0eCk7Cisgdm9pZCBmZl9mZGN0ZHNwX2luaXRfcHBjKEZEQ1REU1BDb250
ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGhpZ2hfYml0X2RlcHRoKTsKKyt2b2lkIGZmX2ZkY3Rkc3BfaW5pdF9lMmsoRkRD
VERTUENvbnRleHQgKmMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKysgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaGlnaF9iaXRfZGVwdGgpOworIHZvaWQgZmZfZmRjdGRzcF9pbml0
X3g4NihGRENURFNQQ29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBoaWdoX2JpdF9kZXB0aCk7CisgCitkaWZmIC0tZ2l0
IGEvbGliYXZjb2RlYy9mZnQuaCBiL2xpYmF2Y29kZWMvZmZ0LmgKK2luZGV4IGM4NTg1NzAuLjZh
MzBmN2MgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL2ZmdC5oCisrKysgYi9saWJhdmNvZGVjL2Zm
dC5oCitAQCAtMTYxLDYgKzE2MSw3IEBAIHZvaWQgZmZfZmZ0X2luaXRfeDg2KEZGVENvbnRleHQg
KnMpOworIHZvaWQgZmZfZmZ0X2luaXRfYXJtKEZGVENvbnRleHQgKnMpOworIHZvaWQgZmZfZmZ0
X2luaXRfbWlwcyhGRlRDb250ZXh0ICpzKTsKKyB2b2lkIGZmX2ZmdF9pbml0X3BwYyhGRlRDb250
ZXh0ICpzKTsKKyt2b2lkIGZmX2ZmdF9pbml0X2UyayhGRlRDb250ZXh0ICpzKTsKKyAKKyB2b2lk
IGZmX2ZmdF9maXhlZF9pbml0X2FybShGRlRDb250ZXh0ICpzKTsKKyAKK2RpZmYgLS1naXQgYS9s
aWJhdmNvZGVjL2ZmdF90ZW1wbGF0ZS5jIGIvbGliYXZjb2RlYy9mZnRfdGVtcGxhdGUuYworaW5k
ZXggMjBhNjJlNC4uZDU2NWE3MSAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvZmZ0X3RlbXBsYXRl
LmMKKysrKyBiL2xpYmF2Y29kZWMvZmZ0X3RlbXBsYXRlLmMKK0BAIC0yNDUsNiArMjQ1LDcgQEAg
YXZfY29sZCBpbnQgZmZfZmZ0X2luaXQoRkZUQ29udGV4dCAqcywgaW50IG5iaXRzLCBpbnQgaW52
ZXJzZSkKKyAgICAgaWYgKEFSQ0hfQUFSQ0g2NCkgZmZfZmZ0X2luaXRfYWFyY2g2NChzKTsKKyAg
ICAgaWYgKEFSQ0hfQVJNKSAgICAgZmZfZmZ0X2luaXRfYXJtKHMpOworICAgICBpZiAoQVJDSF9Q
UEMpICAgICBmZl9mZnRfaW5pdF9wcGMocyk7CisrICAgIGlmIChBUkNIX0UySykgICAgIGZmX2Zm
dF9pbml0X2UyayhzKTsKKyAgICAgaWYgKEFSQ0hfWDg2KSAgICAgZmZfZmZ0X2luaXRfeDg2KHMp
OworICAgICBpZiAoQ09ORklHX01EQ1QpICBzLT5tZGN0X2NhbGN3ID0gcy0+bWRjdF9jYWxjOwor
ICAgICBpZiAoSEFWRV9NSVBTRlBVKSBmZl9mZnRfaW5pdF9taXBzKHMpOworZGlmZiAtLWdpdCBh
L2xpYmF2Y29kZWMvZm10Y29udmVydC5jIGIvbGliYXZjb2RlYy9mbXRjb252ZXJ0LmMKK2luZGV4
IDNiMzNhZjYuLjE0MWZmYzAgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL2ZtdGNvbnZlcnQuYwor
KysrIGIvbGliYXZjb2RlYy9mbXRjb252ZXJ0LmMKK0BAIC02MSw2ICs2MSw4IEBAIGF2X2NvbGQg
dm9pZCBmZl9mbXRfY29udmVydF9pbml0KEZtdENvbnZlcnRDb250ZXh0ICpjLCBBVkNvZGVjQ29u
dGV4dCAqYXZjdHgpCisgICAgICAgICBmZl9mbXRfY29udmVydF9pbml0X2FybShjLCBhdmN0eCk7
CisgICAgIGlmIChBUkNIX1BQQykKKyAgICAgICAgIGZmX2ZtdF9jb252ZXJ0X2luaXRfcHBjKGMs
IGF2Y3R4KTsKKysgICAgaWYgKEFSQ0hfRTJLKQorKyAgICAgICAgZmZfZm10X2NvbnZlcnRfaW5p
dF9lMmsoYywgYXZjdHgpOworICAgICBpZiAoQVJDSF9YODYpCisgICAgICAgICBmZl9mbXRfY29u
dmVydF9pbml0X3g4NihjLCBhdmN0eCk7CisgICAgIGlmIChIQVZFX01JUFNGUFUpCitkaWZmIC0t
Z2l0IGEvbGliYXZjb2RlYy9mbXRjb252ZXJ0LmggYi9saWJhdmNvZGVjL2ZtdGNvbnZlcnQuaAor
aW5kZXggYTFiMTdlNC4uMTA1M2UwZiAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvZm10Y29udmVy
dC5oCisrKysgYi9saWJhdmNvZGVjL2ZtdGNvbnZlcnQuaAorQEAgLTcxLDYgKzcxLDcgQEAgdm9p
ZCBmZl9mbXRfY29udmVydF9pbml0KEZtdENvbnZlcnRDb250ZXh0ICpjLCBBVkNvZGVjQ29udGV4
dCAqYXZjdHgpOworIHZvaWQgZmZfZm10X2NvbnZlcnRfaW5pdF9hYXJjaDY0KEZtdENvbnZlcnRD
b250ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgpOworIHZvaWQgZmZfZm10X2NvbnZlcnRf
aW5pdF9hcm0oRm10Q29udmVydENvbnRleHQgKmMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCk7Cisg
dm9pZCBmZl9mbXRfY29udmVydF9pbml0X3BwYyhGbXRDb252ZXJ0Q29udGV4dCAqYywgQVZDb2Rl
Y0NvbnRleHQgKmF2Y3R4KTsKKyt2b2lkIGZmX2ZtdF9jb252ZXJ0X2luaXRfZTJrKEZtdENvbnZl
cnRDb250ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgpOworIHZvaWQgZmZfZm10X2NvbnZl
cnRfaW5pdF94ODYoRm10Q29udmVydENvbnRleHQgKmMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCk7
Cisgdm9pZCBmZl9mbXRfY29udmVydF9pbml0X21pcHMoRm10Q29udmVydENvbnRleHQgKmMpOwor
IAorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaDI2NGNocm9tYS5jIGIvbGliYXZjb2RlYy9oMjY0
Y2hyb21hLmMKK2luZGV4IGMyZjFmMzAuLmVhNjE5NmYgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVj
L2gyNjRjaHJvbWEuYworKysrIGIvbGliYXZjb2RlYy9oMjY0Y2hyb21hLmMKK0BAIC01Miw2ICs1
Miw4IEBAIGF2X2NvbGQgdm9pZCBmZl9oMjY0Y2hyb21hX2luaXQoSDI2NENocm9tYUNvbnRleHQg
KmMsIGludCBiaXRfZGVwdGgpCisgICAgICAgICBmZl9oMjY0Y2hyb21hX2luaXRfYXJtKGMsIGJp
dF9kZXB0aCk7CisgICAgIGlmIChBUkNIX1BQQykKKyAgICAgICAgIGZmX2gyNjRjaHJvbWFfaW5p
dF9wcGMoYywgYml0X2RlcHRoKTsKKysgICAgaWYgKEFSQ0hfRTJLKQorKyAgICAgICAgZmZfaDI2
NGNocm9tYV9pbml0X2UyayhjLCBiaXRfZGVwdGgpOworICAgICBpZiAoQVJDSF9YODYpCisgICAg
ICAgICBmZl9oMjY0Y2hyb21hX2luaXRfeDg2KGMsIGJpdF9kZXB0aCk7CisgICAgIGlmIChBUkNI
X01JUFMpCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9oMjY0Y2hyb21hLmggYi9saWJhdmNvZGVj
L2gyNjRjaHJvbWEuaAoraW5kZXggNWM4OWZkMS4uMGVjMTkyYyAxMDA2NDQKKy0tLSBhL2xpYmF2
Y29kZWMvaDI2NGNocm9tYS5oCisrKysgYi9saWJhdmNvZGVjL2gyNjRjaHJvbWEuaAorQEAgLTM0
LDYgKzM0LDcgQEAgdm9pZCBmZl9oMjY0Y2hyb21hX2luaXQoSDI2NENocm9tYUNvbnRleHQgKmMs
IGludCBiaXRfZGVwdGgpOworIHZvaWQgZmZfaDI2NGNocm9tYV9pbml0X2FhcmNoNjQoSDI2NENo
cm9tYUNvbnRleHQgKmMsIGludCBiaXRfZGVwdGgpOworIHZvaWQgZmZfaDI2NGNocm9tYV9pbml0
X2FybShIMjY0Q2hyb21hQ29udGV4dCAqYywgaW50IGJpdF9kZXB0aCk7Cisgdm9pZCBmZl9oMjY0
Y2hyb21hX2luaXRfcHBjKEgyNjRDaHJvbWFDb250ZXh0ICpjLCBpbnQgYml0X2RlcHRoKTsKKyt2
b2lkIGZmX2gyNjRjaHJvbWFfaW5pdF9lMmsoSDI2NENocm9tYUNvbnRleHQgKmMsIGludCBiaXRf
ZGVwdGgpOworIHZvaWQgZmZfaDI2NGNocm9tYV9pbml0X3g4NihIMjY0Q2hyb21hQ29udGV4dCAq
YywgaW50IGJpdF9kZXB0aCk7Cisgdm9pZCBmZl9oMjY0Y2hyb21hX2luaXRfbWlwcyhIMjY0Q2hy
b21hQ29udGV4dCAqYywgaW50IGJpdF9kZXB0aCk7CisgCitkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl
Yy9oMjY0ZHNwLmMgYi9saWJhdmNvZGVjL2gyNjRkc3AuYworaW5kZXggZDI2ZjU1Mi4uNjRjMTlh
OSAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvaDI2NGRzcC5jCisrKysgYi9saWJhdmNvZGVjL2gy
NjRkc3AuYworQEAgLTE1Niw2ICsxNTYsNyBAQCBhdl9jb2xkIHZvaWQgZmZfaDI2NGRzcF9pbml0
KEgyNjREU1BDb250ZXh0ICpjLCBjb25zdCBpbnQgYml0X2RlcHRoLAorICAgICBpZiAoQVJDSF9B
QVJDSDY0KSBmZl9oMjY0ZHNwX2luaXRfYWFyY2g2NChjLCBiaXRfZGVwdGgsIGNocm9tYV9mb3Jt
YXRfaWRjKTsKKyAgICAgaWYgKEFSQ0hfQVJNKSBmZl9oMjY0ZHNwX2luaXRfYXJtKGMsIGJpdF9k
ZXB0aCwgY2hyb21hX2Zvcm1hdF9pZGMpOworICAgICBpZiAoQVJDSF9QUEMpIGZmX2gyNjRkc3Bf
aW5pdF9wcGMoYywgYml0X2RlcHRoLCBjaHJvbWFfZm9ybWF0X2lkYyk7CisrICAgIGlmIChBUkNI
X0UySykgZmZfaDI2NGRzcF9pbml0X2UyayhjLCBiaXRfZGVwdGgsIGNocm9tYV9mb3JtYXRfaWRj
KTsKKyAgICAgaWYgKEFSQ0hfWDg2KSBmZl9oMjY0ZHNwX2luaXRfeDg2KGMsIGJpdF9kZXB0aCwg
Y2hyb21hX2Zvcm1hdF9pZGMpOworICAgICBpZiAoQVJDSF9NSVBTKSBmZl9oMjY0ZHNwX2luaXRf
bWlwcyhjLCBiaXRfZGVwdGgsIGNocm9tYV9mb3JtYXRfaWRjKTsKKyB9CitkaWZmIC0tZ2l0IGEv
bGliYXZjb2RlYy9oMjY0ZHNwLmggYi9saWJhdmNvZGVjL2gyNjRkc3AuaAoraW5kZXggY2JlYTMx
Ny4uZmY3ODFlMSAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvaDI2NGRzcC5oCisrKysgYi9saWJh
dmNvZGVjL2gyNjRkc3AuaAorQEAgLTEyNSw2ICsxMjUsOCBAQCB2b2lkIGZmX2gyNjRkc3BfaW5p
dF9hcm0oSDI2NERTUENvbnRleHQgKmMsIGNvbnN0IGludCBiaXRfZGVwdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGludCBjaHJvbWFfZm9ybWF0X2lkYyk7Cisgdm9pZCBmZl9o
MjY0ZHNwX2luaXRfcHBjKEgyNjREU1BDb250ZXh0ICpjLCBjb25zdCBpbnQgYml0X2RlcHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgY2hyb21hX2Zvcm1hdF9pZGMpOwor
K3ZvaWQgZmZfaDI2NGRzcF9pbml0X2UyayhIMjY0RFNQQ29udGV4dCAqYywgY29uc3QgaW50IGJp
dF9kZXB0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGNocm9tYV9mb3Jt
YXRfaWRjKTsKKyB2b2lkIGZmX2gyNjRkc3BfaW5pdF94ODYoSDI2NERTUENvbnRleHQgKmMsIGNv
bnN0IGludCBiaXRfZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBj
aHJvbWFfZm9ybWF0X2lkYyk7Cisgdm9pZCBmZl9oMjY0ZHNwX2luaXRfbWlwcyhIMjY0RFNQQ29u
dGV4dCAqYywgY29uc3QgaW50IGJpdF9kZXB0aCwKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2gy
NjRxcGVsLmMgYi9saWJhdmNvZGVjL2gyNjRxcGVsLmMKK2luZGV4IDUwZTgyZTIuLjU5NTUwNjkg
MTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL2gyNjRxcGVsLmMKKysrKyBiL2xpYmF2Y29kZWMvaDI2
NHFwZWwuYworQEAgLTEwMiw2ICsxMDIsOCBAQCBhdl9jb2xkIHZvaWQgZmZfaDI2NHFwZWxfaW5p
dChIMjY0UXBlbENvbnRleHQgKmMsIGludCBiaXRfZGVwdGgpCisgICAgICAgICBmZl9oMjY0cXBl
bF9pbml0X2FybShjLCBiaXRfZGVwdGgpOworICAgICBpZiAoQVJDSF9QUEMpCisgICAgICAgICBm
Zl9oMjY0cXBlbF9pbml0X3BwYyhjLCBiaXRfZGVwdGgpOworKyAgICBpZiAoQVJDSF9FMkspCisr
ICAgICAgICBmZl9oMjY0cXBlbF9pbml0X2UyayhjLCBiaXRfZGVwdGgpOworICAgICBpZiAoQVJD
SF9YODYpCisgICAgICAgICBmZl9oMjY0cXBlbF9pbml0X3g4NihjLCBiaXRfZGVwdGgpOworICAg
ICBpZiAoQVJDSF9NSVBTKQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaDI2NHFwZWwuaCBiL2xp
YmF2Y29kZWMvaDI2NHFwZWwuaAoraW5kZXggN2M1N2FkMC4uNzg4MGI4NiAxMDA2NDQKKy0tLSBh
L2xpYmF2Y29kZWMvaDI2NHFwZWwuaAorKysrIGIvbGliYXZjb2RlYy9oMjY0cXBlbC5oCitAQCAt
MzQsNiArMzQsNyBAQCB2b2lkIGZmX2gyNjRxcGVsX2luaXQoSDI2NFFwZWxDb250ZXh0ICpjLCBp
bnQgYml0X2RlcHRoKTsKKyB2b2lkIGZmX2gyNjRxcGVsX2luaXRfYWFyY2g2NChIMjY0UXBlbENv
bnRleHQgKmMsIGludCBiaXRfZGVwdGgpOworIHZvaWQgZmZfaDI2NHFwZWxfaW5pdF9hcm0oSDI2
NFFwZWxDb250ZXh0ICpjLCBpbnQgYml0X2RlcHRoKTsKKyB2b2lkIGZmX2gyNjRxcGVsX2luaXRf
cHBjKEgyNjRRcGVsQ29udGV4dCAqYywgaW50IGJpdF9kZXB0aCk7Cisrdm9pZCBmZl9oMjY0cXBl
bF9pbml0X2UyayhIMjY0UXBlbENvbnRleHQgKmMsIGludCBiaXRfZGVwdGgpOworIHZvaWQgZmZf
aDI2NHFwZWxfaW5pdF94ODYoSDI2NFFwZWxDb250ZXh0ICpjLCBpbnQgYml0X2RlcHRoKTsKKyB2
b2lkIGZmX2gyNjRxcGVsX2luaXRfbWlwcyhIMjY0UXBlbENvbnRleHQgKmMsIGludCBiaXRfZGVw
dGgpOworIAorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaGV2Y2RzcC5jIGIvbGliYXZjb2RlYy9o
ZXZjZHNwLmMKK2luZGV4IDk1N2U0MGQuLmE3ZDBkNWQgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVj
L2hldmNkc3AuYworKysrIGIvbGliYXZjb2RlYy9oZXZjZHNwLmMKK0BAIC0yNjEsNiArMjYxLDgg
QEAgaW50IGkgPSAwOworICAgICAgICAgZmZfaGV2Y19kc3BfaW5pdF9hcm0oaGV2Y2RzcCwgYml0
X2RlcHRoKTsKKyAgICAgaWYgKEFSQ0hfUFBDKQorICAgICAgICAgZmZfaGV2Y19kc3BfaW5pdF9w
cGMoaGV2Y2RzcCwgYml0X2RlcHRoKTsKKysgICAgaWYgKEFSQ0hfRTJLKQorKyAgICAgICAgZmZf
aGV2Y19kc3BfaW5pdF9lMmsoaGV2Y2RzcCwgYml0X2RlcHRoKTsKKyAgICAgaWYgKEFSQ0hfWDg2
KQorICAgICAgICAgZmZfaGV2Y19kc3BfaW5pdF94ODYoaGV2Y2RzcCwgYml0X2RlcHRoKTsKKyAg
ICAgaWYgKEFSQ0hfTUlQUykKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2hldmNkc3AuaCBiL2xp
YmF2Y29kZWMvaGV2Y2RzcC5oCitpbmRleCAwYWU2N2NiLi4zMjIxYTJhIDEwMDY0NAorLS0tIGEv
bGliYXZjb2RlYy9oZXZjZHNwLmgKKysrKyBiL2xpYmF2Y29kZWMvaGV2Y2RzcC5oCitAQCAtMTI5
LDYgKzEyOSw3IEBAIGV4dGVybiBjb25zdCBpbnQ4X3QgZmZfaGV2Y19xcGVsX2ZpbHRlcnNbM11b
MTZdOworIAorIHZvaWQgZmZfaGV2Y19kc3BfaW5pdF9hcm0oSEVWQ0RTUENvbnRleHQgKmMsIGNv
bnN0IGludCBiaXRfZGVwdGgpOworIHZvaWQgZmZfaGV2Y19kc3BfaW5pdF9wcGMoSEVWQ0RTUENv
bnRleHQgKmMsIGNvbnN0IGludCBiaXRfZGVwdGgpOworK3ZvaWQgZmZfaGV2Y19kc3BfaW5pdF9l
MmsoSEVWQ0RTUENvbnRleHQgKmMsIGNvbnN0IGludCBiaXRfZGVwdGgpOworIHZvaWQgZmZfaGV2
Y19kc3BfaW5pdF94ODYoSEVWQ0RTUENvbnRleHQgKmMsIGNvbnN0IGludCBiaXRfZGVwdGgpOwor
IHZvaWQgZmZfaGV2Y19kc3BfaW5pdF9taXBzKEhFVkNEU1BDb250ZXh0ICpjLCBjb25zdCBpbnQg
Yml0X2RlcHRoKTsKKyAKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2hwZWxkc3AuYyBiL2xpYmF2
Y29kZWMvaHBlbGRzcC5jCitpbmRleCA4ZTJmZDhmLi5kZDRlZjg3IDEwMDY0NAorLS0tIGEvbGli
YXZjb2RlYy9ocGVsZHNwLmMKKysrKyBiL2xpYmF2Y29kZWMvaHBlbGRzcC5jCitAQCAtMzYzLDYg
KzM2Myw4IEBAIGF2X2NvbGQgdm9pZCBmZl9ocGVsZHNwX2luaXQoSHBlbERTUENvbnRleHQgKmMs
IGludCBmbGFncykKKyAgICAgICAgIGZmX2hwZWxkc3BfaW5pdF9hcm0oYywgZmxhZ3MpOworICAg
ICBpZiAoQVJDSF9QUEMpCisgICAgICAgICBmZl9ocGVsZHNwX2luaXRfcHBjKGMsIGZsYWdzKTsK
KysgICAgaWYgKEFSQ0hfRTJLKQorKyAgICAgICAgZmZfaHBlbGRzcF9pbml0X2UyayhjLCBmbGFn
cyk7CisgICAgIGlmIChBUkNIX1g4NikKKyAgICAgICAgIGZmX2hwZWxkc3BfaW5pdF94ODYoYywg
ZmxhZ3MpOworICAgICBpZiAoQVJDSF9NSVBTKQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaHBl
bGRzcC5oIGIvbGliYXZjb2RlYy9ocGVsZHNwLmgKK2luZGV4IDc2ODEzOWIuLjZkMGMyOTMgMTAw
NjQ0CistLS0gYS9saWJhdmNvZGVjL2hwZWxkc3AuaAorKysrIGIvbGliYXZjb2RlYy9ocGVsZHNw
LmgKK0BAIC0xMDAsNiArMTAwLDcgQEAgdm9pZCBmZl9ocGVsZHNwX2luaXRfYWFyY2g2NChIcGVs
RFNQQ29udGV4dCAqYywgaW50IGZsYWdzKTsKKyB2b2lkIGZmX2hwZWxkc3BfaW5pdF9hbHBoYShI
cGVsRFNQQ29udGV4dCAqYywgaW50IGZsYWdzKTsKKyB2b2lkIGZmX2hwZWxkc3BfaW5pdF9hcm0o
SHBlbERTUENvbnRleHQgKmMsIGludCBmbGFncyk7Cisgdm9pZCBmZl9ocGVsZHNwX2luaXRfcHBj
KEhwZWxEU1BDb250ZXh0ICpjLCBpbnQgZmxhZ3MpOworK3ZvaWQgZmZfaHBlbGRzcF9pbml0X2Uy
ayhIcGVsRFNQQ29udGV4dCAqYywgaW50IGZsYWdzKTsKKyB2b2lkIGZmX2hwZWxkc3BfaW5pdF94
ODYoSHBlbERTUENvbnRleHQgKmMsIGludCBmbGFncyk7Cisgdm9pZCBmZl9ocGVsZHNwX2luaXRf
bWlwcyhIcGVsRFNQQ29udGV4dCAqYywgaW50IGZsYWdzKTsKKyAKK2RpZmYgLS1naXQgYS9saWJh
dmNvZGVjL2lkY3Rkc3AuYyBiL2xpYmF2Y29kZWMvaWRjdGRzcC5jCitpbmRleCA4NDZlZDBiLi5h
MjU1NGFhIDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy9pZGN0ZHNwLmMKKysrKyBiL2xpYmF2Y29k
ZWMvaWRjdGRzcC5jCitAQCAtMzExLDYgKzMxMSw4IEBAIGF2X2NvbGQgdm9pZCBmZl9pZGN0ZHNw
X2luaXQoSURDVERTUENvbnRleHQgKmMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCkKKyAgICAgICAg
IGZmX2lkY3Rkc3BfaW5pdF9hcm0oYywgYXZjdHgsIGhpZ2hfYml0X2RlcHRoKTsKKyAgICAgaWYg
KEFSQ0hfUFBDKQorICAgICAgICAgZmZfaWRjdGRzcF9pbml0X3BwYyhjLCBhdmN0eCwgaGlnaF9i
aXRfZGVwdGgpOworKyAgICBpZiAoQVJDSF9FMkspCisrICAgICAgICBmZl9pZGN0ZHNwX2luaXRf
ZTJrKGMsIGF2Y3R4LCBoaWdoX2JpdF9kZXB0aCk7CisgICAgIGlmIChBUkNIX1g4NikKKyAgICAg
ICAgIGZmX2lkY3Rkc3BfaW5pdF94ODYoYywgYXZjdHgsIGhpZ2hfYml0X2RlcHRoKTsKKyAgICAg
aWYgKEFSQ0hfTUlQUykKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2lkY3Rkc3AuaCBiL2xpYmF2
Y29kZWMvaWRjdGRzcC5oCitpbmRleCBjYTIxYTMxLi4xMjA0YmZmIDEwMDY0NAorLS0tIGEvbGli
YXZjb2RlYy9pZGN0ZHNwLmgKKysrKyBiL2xpYmF2Y29kZWMvaWRjdGRzcC5oCitAQCAtMTE0LDYg
KzExNCw4IEBAIHZvaWQgZmZfaWRjdGRzcF9pbml0X2FybShJRENURFNQQ29udGV4dCAqYywgQVZD
b2RlY0NvbnRleHQgKmF2Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBo
aWdoX2JpdF9kZXB0aCk7Cisgdm9pZCBmZl9pZGN0ZHNwX2luaXRfcHBjKElEQ1REU1BDb250ZXh0
ICpjLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGhpZ2hfYml0X2RlcHRoKTsKKyt2b2lkIGZmX2lkY3Rkc3BfaW5pdF9lMmsoSURDVERT
UENvbnRleHQgKmMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCwKKysgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaGlnaF9iaXRfZGVwdGgpOworIHZvaWQgZmZfaWRjdGRzcF9pbml0X3g4
NihJRENURFNQQ29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBoaWdoX2JpdF9kZXB0aCk7Cisgdm9pZCBmZl9pZGN0ZHNw
X2luaXRfbWlwcyhJRENURFNQQ29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorZGlm
ZiAtLWdpdCBhL2xpYmF2Y29kZWMvbG9zc2xlc3NfYXVkaW9kc3AuYyBiL2xpYmF2Y29kZWMvbG9z
c2xlc3NfYXVkaW9kc3AuYworaW5kZXggMzc4MTY1OS4uOTc5ZTBjOSAxMDA2NDQKKy0tLSBhL2xp
YmF2Y29kZWMvbG9zc2xlc3NfYXVkaW9kc3AuYworKysrIGIvbGliYXZjb2RlYy9sb3NzbGVzc19h
dWRpb2RzcC5jCitAQCAtNjIsNiArNjIsOCBAQCBhdl9jb2xkIHZvaWQgZmZfbGxhdWRkc3BfaW5p
dChMTEF1ZERTUENvbnRleHQgKmMpCisgICAgICAgICBmZl9sbGF1ZGRzcF9pbml0X2FybShjKTsK
KyAgICAgaWYgKEFSQ0hfUFBDKQorICAgICAgICAgZmZfbGxhdWRkc3BfaW5pdF9wcGMoYyk7Cisr
ICAgIGlmIChBUkNIX0UySykKKysgICAgICAgIGZmX2xsYXVkZHNwX2luaXRfZTJrKGMpOworICAg
ICBpZiAoQVJDSF9YODYpCisgICAgICAgICBmZl9sbGF1ZGRzcF9pbml0X3g4NihjKTsKKyB9Citk
aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9sb3NzbGVzc19hdWRpb2RzcC5oIGIvbGliYXZjb2RlYy9s
b3NzbGVzc19hdWRpb2RzcC5oCitpbmRleCBlZWE1ZDQ5Li4zZGUwMmQ1IDEwMDY0NAorLS0tIGEv
bGliYXZjb2RlYy9sb3NzbGVzc19hdWRpb2RzcC5oCisrKysgYi9saWJhdmNvZGVjL2xvc3NsZXNz
X2F1ZGlvZHNwLmgKK0BAIC00Niw2ICs0Niw3IEBAIHR5cGVkZWYgc3RydWN0IExMQXVkRFNQQ29u
dGV4dCB7Cisgdm9pZCBmZl9sbGF1ZGRzcF9pbml0KExMQXVkRFNQQ29udGV4dCAqYyk7Cisgdm9p
ZCBmZl9sbGF1ZGRzcF9pbml0X2FybShMTEF1ZERTUENvbnRleHQgKmMpOworIHZvaWQgZmZfbGxh
dWRkc3BfaW5pdF9wcGMoTExBdWREU1BDb250ZXh0ICpjKTsKKyt2b2lkIGZmX2xsYXVkZHNwX2lu
aXRfZTJrKExMQXVkRFNQQ29udGV4dCAqYyk7Cisgdm9pZCBmZl9sbGF1ZGRzcF9pbml0X3g4NihM
TEF1ZERTUENvbnRleHQgKmMpOworIAorICNlbmRpZiAvKiBBVkNPREVDX0xPU1NMRVNTX0FVRElP
RFNQX0ggKi8KK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2xvc3NsZXNzX3ZpZGVvZHNwLmMgYi9s
aWJhdmNvZGVjL2xvc3NsZXNzX3ZpZGVvZHNwLmMKK2luZGV4IGNmZjk0YzIuLjM0YjFkYjUgMTAw
NjQ0CistLS0gYS9saWJhdmNvZGVjL2xvc3NsZXNzX3ZpZGVvZHNwLmMKKysrKyBiL2xpYmF2Y29k
ZWMvbG9zc2xlc3NfdmlkZW9kc3AuYworQEAgLTEyMCw2ICsxMjAsOCBAQCB2b2lkIGZmX2xsdmlk
ZHNwX2luaXQoTExWaWREU1BDb250ZXh0ICpjKQorIAorICAgICBpZiAoQVJDSF9QUEMpCisgICAg
ICAgICBmZl9sbHZpZGRzcF9pbml0X3BwYyhjKTsKKysgICAgaWYgKEFSQ0hfRTJLKQorKyAgICAg
ICAgZmZfbGx2aWRkc3BfaW5pdF9lMmsoYyk7CisgICAgIGlmIChBUkNIX1g4NikKKyAgICAgICAg
IGZmX2xsdmlkZHNwX2luaXRfeDg2KGMpOworIH0KK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL2xv
c3NsZXNzX3ZpZGVvZHNwLmggYi9saWJhdmNvZGVjL2xvc3NsZXNzX3ZpZGVvZHNwLmgKK2luZGV4
IDgwNzc4OTguLjkxN2FmYjYgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL2xvc3NsZXNzX3ZpZGVv
ZHNwLmgKKysrKyBiL2xpYmF2Y29kZWMvbG9zc2xlc3NfdmlkZW9kc3AuaAorQEAgLTQ1LDUgKzQ1
LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTExWaWREU1BDb250ZXh0IHsKKyB2b2lkIGZmX2xsdmlkZHNw
X2luaXQoTExWaWREU1BDb250ZXh0ICpsbHZpZGRzcCk7Cisgdm9pZCBmZl9sbHZpZGRzcF9pbml0
X3g4NihMTFZpZERTUENvbnRleHQgKmxsdmlkZHNwKTsKKyB2b2lkIGZmX2xsdmlkZHNwX2luaXRf
cHBjKExMVmlkRFNQQ29udGV4dCAqbGx2aWRkc3ApOworK3ZvaWQgZmZfbGx2aWRkc3BfaW5pdF9l
MmsoTExWaWREU1BDb250ZXh0ICpsbHZpZGRzcCk7CisgCisgI2VuZGlmIC8vQVZDT0RFQ19MT1NT
TEVTU19WSURFT0RTUF9ICitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tZGN0MTUuYyBiL2xpYmF2
Y29kZWMvbWRjdDE1LmMKK2luZGV4IDZmMzUwNTkuLmJjZWQ4NzQgMTAwNjQ0CistLS0gYS9saWJh
dmNvZGVjL21kY3QxNS5jCisrKysgYi9saWJhdmNvZGVjL21kY3QxNS5jCitAQCAtMzE4LDYgKzMx
OCw4IEBAIGF2X2NvbGQgaW50IGZmX21kY3QxNV9pbml0KE1EQ1QxNUNvbnRleHQgKipwcywgaW50
IGludmVyc2UsIGludCBOLCBkb3VibGUgc2NhbGUpCisgCisgICAgIGlmIChBUkNIX1g4NikKKyAg
ICAgICAgIGZmX21kY3QxNV9pbml0X3g4NihzKTsKKysgICAgaWYgKEFSQ0hfRTJLKQorKyAgICAg
ICAgZmZfbWRjdDE1X2luaXRfZTJrKHMpOworIAorICAgICAqcHMgPSBzOworIAorZGlmZiAtLWdp
dCBhL2xpYmF2Y29kZWMvbWRjdDE1LmggYi9saWJhdmNvZGVjL21kY3QxNS5oCitpbmRleCA0MmU2
MGYzLi5jOWQ1MTViIDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy9tZGN0MTUuaAorKysrIGIvbGli
YXZjb2RlYy9tZGN0MTUuaAorQEAgLTU4LDUgKzU4LDYgQEAgaW50IGZmX21kY3QxNV9pbml0KE1E
Q1QxNUNvbnRleHQgKipwcywgaW50IGludmVyc2UsIGludCBOLCBkb3VibGUgc2NhbGUpOworIHZv
aWQgZmZfbWRjdDE1X3VuaW5pdChNRENUMTVDb250ZXh0ICoqcHMpOworIAorIHZvaWQgZmZfbWRj
dDE1X2luaXRfeDg2KE1EQ1QxNUNvbnRleHQgKnMpOworK3ZvaWQgZmZfbWRjdDE1X2luaXRfZTJr
KE1EQ1QxNUNvbnRleHQgKnMpOworIAorICNlbmRpZiAvKiBBVkNPREVDX01EQ1QxNV9IICovCitk
aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tZV9jbXAuYyBiL2xpYmF2Y29kZWMvbWVfY21wLmMKK2lu
ZGV4IGFlMjQ4YzUuLmNiOTY3YTQgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL21lX2NtcC5jCisr
KysgYi9saWJhdmNvZGVjL21lX2NtcC5jCitAQCAtMTA4OCw2ICsxMDg4LDggQEAgYXZfY29sZCB2
b2lkIGZmX21lX2NtcF9pbml0KE1FQ21wQ29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4
KQorICAgICAgICAgZmZfbWVfY21wX2luaXRfYXJtKGMsIGF2Y3R4KTsKKyAgICAgaWYgKEFSQ0hf
UFBDKQorICAgICAgICAgZmZfbWVfY21wX2luaXRfcHBjKGMsIGF2Y3R4KTsKKysgICAgaWYgKEFS
Q0hfRTJLKQorKyAgICAgICAgZmZfbWVfY21wX2luaXRfZTJrKGMsIGF2Y3R4KTsKKyAgICAgaWYg
KEFSQ0hfWDg2KQorICAgICAgICAgZmZfbWVfY21wX2luaXRfeDg2KGMsIGF2Y3R4KTsKKyAgICAg
aWYgKEFSQ0hfTUlQUykKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL21lX2NtcC5oIGIvbGliYXZj
b2RlYy9tZV9jbXAuaAoraW5kZXggMGE1ODllMy4uODk4OWExYyAxMDA2NDQKKy0tLSBhL2xpYmF2
Y29kZWMvbWVfY21wLmgKKysrKyBiL2xpYmF2Y29kZWMvbWVfY21wLmgKK0BAIC04NSw2ICs4NSw3
IEBAIHZvaWQgZmZfbWVfY21wX2luaXQoTUVDbXBDb250ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAq
YXZjdHgpOworIHZvaWQgZmZfbWVfY21wX2luaXRfYWxwaGEoTUVDbXBDb250ZXh0ICpjLCBBVkNv
ZGVjQ29udGV4dCAqYXZjdHgpOworIHZvaWQgZmZfbWVfY21wX2luaXRfYXJtKE1FQ21wQ29udGV4
dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4KTsKKyB2b2lkIGZmX21lX2NtcF9pbml0X3BwYyhN
RUNtcENvbnRleHQgKmMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCk7Cisrdm9pZCBmZl9tZV9jbXBf
aW5pdF9lMmsoTUVDbXBDb250ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgpOworIHZvaWQg
ZmZfbWVfY21wX2luaXRfeDg2KE1FQ21wQ29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4
KTsKKyB2b2lkIGZmX21lX2NtcF9pbml0X21pcHMoTUVDbXBDb250ZXh0ICpjLCBBVkNvZGVjQ29u
dGV4dCAqYXZjdHgpOworIAorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZ2F1ZGlvZHNwLmMg
Yi9saWJhdmNvZGVjL21wZWdhdWRpb2RzcC5jCitpbmRleCAzY2FmY2EyLi4wNTE0YmQ0IDEwMDY0
NAorLS0tIGEvbGliYXZjb2RlYy9tcGVnYXVkaW9kc3AuYworKysrIGIvbGliYXZjb2RlYy9tcGVn
YXVkaW9kc3AuYworQEAgLTQ4LDYgKzQ4LDcgQEAgYXZfY29sZCB2b2lkIGZmX21wYWRzcF9pbml0
KE1QQURTUENvbnRleHQgKnMpCisgICAgIGlmIChBUkNIX0FBUkNINjQpIGZmX21wYWRzcF9pbml0
X2FhcmNoNjQocyk7CisgICAgIGlmIChBUkNIX0FSTSkgICAgIGZmX21wYWRzcF9pbml0X2FybShz
KTsKKyAgICAgaWYgKEFSQ0hfUFBDKSAgICAgZmZfbXBhZHNwX2luaXRfcHBjKHMpOworKyAgICBp
ZiAoQVJDSF9FMkspICAgICBmZl9tcGFkc3BfaW5pdF9lMmsocyk7CisgICAgIGlmIChBUkNIX1g4
NikgICAgIGZmX21wYWRzcF9pbml0X3g4NihzKTsKKyAgICAgaWYgKEhBVkVfTUlQU0ZQVSkgICBm
Zl9tcGFkc3BfaW5pdF9taXBzZnB1KHMpOworICAgICBpZiAoSEFWRV9NSVBTRFNQKSBmZl9tcGFk
c3BfaW5pdF9taXBzZHNwKHMpOworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZ2F1ZGlvZHNw
LmggYi9saWJhdmNvZGVjL21wZWdhdWRpb2RzcC5oCitpbmRleCAwZTQzNTJkLi40NTE0NTY0IDEw
MDY0NAorLS0tIGEvbGliYXZjb2RlYy9tcGVnYXVkaW9kc3AuaAorKysrIGIvbGliYXZjb2RlYy9t
cGVnYXVkaW9kc3AuaAorQEAgLTYyLDYgKzYyLDcgQEAgdm9pZCBmZl9tcGFfc3ludGhfZmlsdGVy
X2Zsb2F0KE1QQURTUENvbnRleHQgKnMsCisgdm9pZCBmZl9tcGFkc3BfaW5pdF9hYXJjaDY0KE1Q
QURTUENvbnRleHQgKnMpOworIHZvaWQgZmZfbXBhZHNwX2luaXRfYXJtKE1QQURTUENvbnRleHQg
KnMpOworIHZvaWQgZmZfbXBhZHNwX2luaXRfcHBjKE1QQURTUENvbnRleHQgKnMpOworK3ZvaWQg
ZmZfbXBhZHNwX2luaXRfZTJrKE1QQURTUENvbnRleHQgKnMpOworIHZvaWQgZmZfbXBhZHNwX2lu
aXRfeDg2KE1QQURTUENvbnRleHQgKnMpOworIHZvaWQgZmZfbXBhZHNwX2luaXRfbWlwc2ZwdShN
UEFEU1BDb250ZXh0ICpzKTsKKyB2b2lkIGZmX21wYWRzcF9pbml0X21pcHNkc3AoTVBBRFNQQ29u
dGV4dCAqcyk7CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVndmlkZW8uYyBiL2xpYmF2Y29k
ZWMvbXBlZ3ZpZGVvLmMKK2luZGV4IDQ5ZmQxYzkuLjQ5YzQ0NzYgMTAwNjQ0CistLS0gYS9saWJh
dmNvZGVjL21wZWd2aWRlby5jCisrKysgYi9saWJhdmNvZGVjL21wZWd2aWRlby5jCitAQCAtMzE4
LDYgKzMxOCw4IEBAIHN0YXRpYyBhdl9jb2xkIGludCBkY3RfaW5pdChNcGVnRW5jQ29udGV4dCAq
cykKKyAgICAgICAgIGZmX21wdl9jb21tb25faW5pdF9hcm0ocyk7CisgICAgIGlmIChBUkNIX1BQ
QykKKyAgICAgICAgIGZmX21wdl9jb21tb25faW5pdF9wcGMocyk7CisrICAgIGlmIChBUkNIX0Uy
SykKKysgICAgICAgIGZmX21wdl9jb21tb25faW5pdF9lMmsocyk7CisgICAgIGlmIChBUkNIX1g4
NikKKyAgICAgICAgIGZmX21wdl9jb21tb25faW5pdF94ODYocyk7CisgICAgIGlmIChBUkNIX01J
UFMpCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9tcGVndmlkZW8uaCBiL2xpYmF2Y29kZWMvbXBl
Z3ZpZGVvLmgKK2luZGV4IDI5ZTY5MmYuLjg1ZmRkZDIgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVj
L21wZWd2aWRlby5oCisrKysgYi9saWJhdmNvZGVjL21wZWd2aWRlby5oCitAQCAtNjg1LDYgKzY4
NSw3IEBAIHZvaWQgZmZfbXB2X2NvbW1vbl9pbml0X2FybShNcGVnRW5jQ29udGV4dCAqcyk7Cisg
dm9pZCBmZl9tcHZfY29tbW9uX2luaXRfYXhwKE1wZWdFbmNDb250ZXh0ICpzKTsKKyB2b2lkIGZm
X21wdl9jb21tb25faW5pdF9uZW9uKE1wZWdFbmNDb250ZXh0ICpzKTsKKyB2b2lkIGZmX21wdl9j
b21tb25faW5pdF9wcGMoTXBlZ0VuY0NvbnRleHQgKnMpOworK3ZvaWQgZmZfbXB2X2NvbW1vbl9p
bml0X2UyayhNcGVnRW5jQ29udGV4dCAqcyk7Cisgdm9pZCBmZl9tcHZfY29tbW9uX2luaXRfeDg2
KE1wZWdFbmNDb250ZXh0ICpzKTsKKyB2b2lkIGZmX21wdl9jb21tb25faW5pdF9taXBzKE1wZWdF
bmNDb250ZXh0ICpzKTsKKyAKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb2RzcC5j
IGIvbGliYXZjb2RlYy9tcGVndmlkZW9kc3AuYworaW5kZXggYTU4ZTQ1YS4uMmQ3YWE5NiAxMDA2
NDQKKy0tLSBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvZHNwLmMKKysrKyBiL2xpYmF2Y29kZWMvbXBl
Z3ZpZGVvZHNwLmMKK0BAIC0xMTQsNiArMTE0LDggQEAgYXZfY29sZCB2b2lkIGZmX21wZWd2aWRl
b2RzcF9pbml0KE1wZWdWaWRlb0RTUENvbnRleHQgKmMpCisgCisgICAgIGlmIChBUkNIX1BQQykK
KyAgICAgICAgIGZmX21wZWd2aWRlb2RzcF9pbml0X3BwYyhjKTsKKysgICAgaWYgKEFSQ0hfRTJL
KQorKyAgICAgICAgZmZfbXBlZ3ZpZGVvZHNwX2luaXRfZTJrKGMpOworICAgICBpZiAoQVJDSF9Y
ODYpCisgICAgICAgICBmZl9tcGVndmlkZW9kc3BfaW5pdF94ODYoYyk7CisgfQorZGlmZiAtLWdp
dCBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvZHNwLmggYi9saWJhdmNvZGVjL21wZWd2aWRlb2RzcC5o
CitpbmRleCAyOTNlMjU0Li41NmEwYmY1IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy9tcGVndmlk
ZW9kc3AuaAorKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW9kc3AuaAorQEAgLTQyLDYgKzQyLDcg
QEAgdHlwZWRlZiBzdHJ1Y3QgTXBlZ1ZpZGVvRFNQQ29udGV4dCB7CisgCisgdm9pZCBmZl9tcGVn
dmlkZW9kc3BfaW5pdChNcGVnVmlkZW9EU1BDb250ZXh0ICpjKTsKKyB2b2lkIGZmX21wZWd2aWRl
b2RzcF9pbml0X3BwYyhNcGVnVmlkZW9EU1BDb250ZXh0ICpjKTsKKyt2b2lkIGZmX21wZWd2aWRl
b2RzcF9pbml0X2UyayhNcGVnVmlkZW9EU1BDb250ZXh0ICpjKTsKKyB2b2lkIGZmX21wZWd2aWRl
b2RzcF9pbml0X3g4NihNcGVnVmlkZW9EU1BDb250ZXh0ICpjKTsKKyAKKyAjZW5kaWYgLyogQVZD
T0RFQ19NUEVHVklERU9EU1BfSCAqLworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVv
ZW5jZHNwLmMgYi9saWJhdmNvZGVjL21wZWd2aWRlb2VuY2RzcC5jCitpbmRleCBhMzRhYjM1Li5m
NmJhNmI0IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW9lbmNkc3AuYworKysrIGIv
bGliYXZjb2RlYy9tcGVndmlkZW9lbmNkc3AuYworQEAgLTI0OSw2ICsyNDksOCBAQCBhdl9jb2xk
IHZvaWQgZmZfbXBlZ3ZpZGVvZW5jZHNwX2luaXQoTXBlZ3ZpZGVvRW5jRFNQQ29udGV4dCAqYywK
KyAgICAgICAgIGZmX21wZWd2aWRlb2VuY2RzcF9pbml0X2FybShjLCBhdmN0eCk7CisgICAgIGlm
IChBUkNIX1BQQykKKyAgICAgICAgIGZmX21wZWd2aWRlb2VuY2RzcF9pbml0X3BwYyhjLCBhdmN0
eCk7CisrICAgIGlmIChBUkNIX0UySykKKysgICAgICAgIGZmX21wZWd2aWRlb2VuY2RzcF9pbml0
X2UyayhjLCBhdmN0eCk7CisgICAgIGlmIChBUkNIX1g4NikKKyAgICAgICAgIGZmX21wZWd2aWRl
b2VuY2RzcF9pbml0X3g4NihjLCBhdmN0eCk7CisgICAgIGlmIChBUkNIX01JUFMpCitkaWZmIC0t
Z2l0IGEvbGliYXZjb2RlYy9tcGVndmlkZW9lbmNkc3AuaCBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVv
ZW5jZHNwLmgKK2luZGV4IDMzZjAyODIuLjJmMmIxOTEgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVj
L21wZWd2aWRlb2VuY2RzcC5oCisrKysgYi9saWJhdmNvZGVjL21wZWd2aWRlb2VuY2RzcC5oCitA
QCAtNTAsNiArNTAsOCBAQCB2b2lkIGZmX21wZWd2aWRlb2VuY2RzcF9pbml0X2FybShNcGVndmlk
ZW9FbmNEU1BDb250ZXh0ICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFW
Q29kZWNDb250ZXh0ICphdmN0eCk7Cisgdm9pZCBmZl9tcGVndmlkZW9lbmNkc3BfaW5pdF9wcGMo
TXBlZ3ZpZGVvRW5jRFNQQ29udGV4dCAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBVkNvZGVjQ29udGV4dCAqYXZjdHgpOworK3ZvaWQgZmZfbXBlZ3ZpZGVvZW5jZHNwX2lu
aXRfZTJrKE1wZWd2aWRlb0VuY0RTUENvbnRleHQgKmMsCisrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4KTsKKyB2b2lkIGZmX21wZWd2aWRlb2Vu
Y2RzcF9pbml0X3g4NihNcGVndmlkZW9FbmNEU1BDb250ZXh0ICpjLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFWQ29kZWNDb250ZXh0ICphdmN0eCk7Cisgdm9pZCBmZl9tcGVn
dmlkZW9lbmNkc3BfaW5pdF9taXBzKE1wZWd2aWRlb0VuY0RTUENvbnRleHQgKmMsCitkaWZmIC0t
Z2l0IGEvbGliYXZjb2RlYy9waXhibG9ja2RzcC5jIGIvbGliYXZjb2RlYy9waXhibG9ja2RzcC5j
CitpbmRleCA2NzM5M2I5Li44MzgzNjYzIDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy9waXhibG9j
a2RzcC5jCisrKysgYi9saWJhdmNvZGVjL3BpeGJsb2NrZHNwLmMKK0BAIC0xMDksNiArMTA5LDgg
QEAgYXZfY29sZCB2b2lkIGZmX3BpeGJsb2NrZHNwX2luaXQoUGl4YmxvY2tEU1BDb250ZXh0ICpj
LCBBVkNvZGVjQ29udGV4dCAqYXZjdHgpCisgICAgICAgICBmZl9waXhibG9ja2RzcF9pbml0X2Fy
bShjLCBhdmN0eCwgaGlnaF9iaXRfZGVwdGgpOworICAgICBpZiAoQVJDSF9QUEMpCisgICAgICAg
ICBmZl9waXhibG9ja2RzcF9pbml0X3BwYyhjLCBhdmN0eCwgaGlnaF9iaXRfZGVwdGgpOworKyAg
ICBpZiAoQVJDSF9FMkspCisrICAgICAgICBmZl9waXhibG9ja2RzcF9pbml0X2UyayhjLCBhdmN0
eCwgaGlnaF9iaXRfZGVwdGgpOworICAgICBpZiAoQVJDSF9YODYpCisgICAgICAgICBmZl9waXhi
bG9ja2RzcF9pbml0X3g4NihjLCBhdmN0eCwgaGlnaF9iaXRfZGVwdGgpOworICAgICBpZiAoQVJD
SF9NSVBTKQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcGl4YmxvY2tkc3AuaCBiL2xpYmF2Y29k
ZWMvcGl4YmxvY2tkc3AuaAoraW5kZXggMDdjMmVjNC4uNDllMmIyNSAxMDA2NDQKKy0tLSBhL2xp
YmF2Y29kZWMvcGl4YmxvY2tkc3AuaAorKysrIGIvbGliYXZjb2RlYy9waXhibG9ja2RzcC5oCitA
QCAtNTIsNiArNTIsOCBAQCB2b2lkIGZmX3BpeGJsb2NrZHNwX2luaXRfYXJtKFBpeGJsb2NrRFNQ
Q29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaGlnaF9iaXRfZGVwdGgpOworIHZvaWQgZmZfcGl4YmxvY2tkc3Bf
aW5pdF9wcGMoUGl4YmxvY2tEU1BDb250ZXh0ICpjLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBoaWdoX2JpdF9kZXB0aCk7Cisr
dm9pZCBmZl9waXhibG9ja2RzcF9pbml0X2UyayhQaXhibG9ja0RTUENvbnRleHQgKmMsIEFWQ29k
ZWNDb250ZXh0ICphdmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGhpZ2hfYml0X2RlcHRoKTsKKyB2b2lkIGZmX3BpeGJsb2NrZHNwX2luaXRfeDg2KFBpeGJsb2Nr
RFNQQ29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaGlnaF9iaXRfZGVwdGgpOworIHZvaWQgZmZfcGl4YmxvY2tk
c3BfaW5pdF9taXBzKFBpeGJsb2NrRFNQQ29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4
LAorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvc3ZxMWVuYy5jIGIvbGliYXZjb2RlYy9zdnExZW5j
LmMKK2luZGV4IGNiMjE1YzIuLmQ1NWZjZDMgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL3N2cTFl
bmMuYworKysrIGIvbGliYXZjb2RlYy9zdnExZW5jLmMKK0BAIC01NzAsNiArNTcwLDggQEAgc3Rh
dGljIGF2X2NvbGQgaW50IHN2cTFfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQor
IAorICAgICBpZiAoQVJDSF9QUEMpCisgICAgICAgICBmZl9zdnExZW5jX2luaXRfcHBjKHMpOwor
KyAgICBpZiAoQVJDSF9FMkspCisrICAgICAgICBmZl9zdnExZW5jX2luaXRfZTJrKHMpOworICAg
ICBpZiAoQVJDSF9YODYpCisgICAgICAgICBmZl9zdnExZW5jX2luaXRfeDg2KHMpOworIAorZGlm
ZiAtLWdpdCBhL2xpYmF2Y29kZWMvc3ZxMWVuYy5oIGIvbGliYXZjb2RlYy9zdnExZW5jLmgKK2lu
ZGV4IGI0ZWY3NjMuLmMwNzBkODAgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL3N2cTFlbmMuaAor
KysrIGIvbGliYXZjb2RlYy9zdnExZW5jLmgKK0BAIC04MCw2ICs4MCw3IEBAIHR5cGVkZWYgc3Ry
dWN0IFNWUTFFbmNDb250ZXh0IHsKKyB9IFNWUTFFbmNDb250ZXh0OworIAorIHZvaWQgZmZfc3Zx
MWVuY19pbml0X3BwYyhTVlExRW5jQ29udGV4dCAqYyk7Cisrdm9pZCBmZl9zdnExZW5jX2luaXRf
ZTJrKFNWUTFFbmNDb250ZXh0ICpjKTsKKyB2b2lkIGZmX3N2cTFlbmNfaW5pdF94ODYoU1ZRMUVu
Y0NvbnRleHQgKmMpOworIAorICNlbmRpZiAvKiBBVkNPREVDX1NWUTFFTkNfSCAqLworZGlmZiAt
LWdpdCBhL2xpYmF2Y29kZWMvdGVzdHMvZGN0LmMgYi9saWJhdmNvZGVjL3Rlc3RzL2RjdC5jCitp
bmRleCAyY2E4MDM5Li43NTU3MzRjIDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy90ZXN0cy9kY3Qu
YworKysrIGIvbGliYXZjb2RlYy90ZXN0cy9kY3QuYworQEAgLTEwMCw2ICsxMDAsOCBAQCBzdGF0
aWMgY29uc3Qgc3RydWN0IGFsZ28gaWRjdF90YWJbXSA9IHsKKyAjaW5jbHVkZSAiYXJtL2RjdC5j
IgorICNlbGlmIEFSQ0hfUFBDCisgI2luY2x1ZGUgInBwYy9kY3QuYyIKKysjZWxpZiBBUkNIX0Uy
SworKyNpbmNsdWRlICJlMmsvZGN0LmMiCisgI2VsaWYgQVJDSF9YODYKKyAjaW5jbHVkZSAieDg2
L2RjdC5jIgorICNlbHNlCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy90ZXN0cy9lMmsvZGN0LmMg
Yi9saWJhdmNvZGVjL3Rlc3RzL2Uyay9kY3QuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4
IDAwMDAwMDAuLjdjMTViMjUKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmF2Y29kZWMvdGVzdHMv
ZTJrL2RjdC5jCitAQCAtMCwwICsxLDMxIEBACisrLyoKKysgKiBUaGlzIGZpbGUgaXMgcGFydCBv
ZiBGRm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisr
ICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBh
bG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAq
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaW5jbHVkZSAiY29uZmlnLmgiCisrCisr
I2luY2x1ZGUgImxpYmF2Y29kZWMvZTJrL2RjdGRzcC5oIgorKworK3N0YXRpYyBjb25zdCBzdHJ1
Y3QgYWxnbyBmZGN0X3RhYl9hcmNoW10gPSB7CisrICAgIHsgIkZEQ1QtRTJLIiwgZmZfZmRjdF9l
MmssIEZGX0lEQ1RfUEVSTV9OT05FLCBBVl9DUFVfRkxBR19FMksgfSwKKysgICAgeyAwIH0KKyt9
OworKworK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYWxnbyBpZGN0X3RhYl9hcmNoW10gPSB7CisrICAg
IHsgIklEQ1QtRTJLIiwgZmZfaWRjdF9lMmssIEZGX0lEQ1RfUEVSTV9UUkFOU1BPU0UsIEFWX0NQ
VV9GTEFHX0UySyB9LAorKyAgICB7IDAgfQorK307CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92
YzFkc3AuYyBiL2xpYmF2Y29kZWMvdmMxZHNwLmMKK2luZGV4IGMyNWE2ZjMuLjI5NTM0MDMgMTAw
NjQ0CistLS0gYS9saWJhdmNvZGVjL3ZjMWRzcC5jCisrKysgYi9saWJhdmNvZGVjL3ZjMWRzcC5j
CitAQCAtMTAzNSw2ICsxMDM1LDggQEAgYXZfY29sZCB2b2lkIGZmX3ZjMWRzcF9pbml0KFZDMURT
UENvbnRleHQgKmRzcCkKKyAgICAgICAgIGZmX3ZjMWRzcF9pbml0X2FybShkc3ApOworICAgICBp
ZiAoQVJDSF9QUEMpCisgICAgICAgICBmZl92YzFkc3BfaW5pdF9wcGMoZHNwKTsKKysgICAgaWYg
KEFSQ0hfRTJLKQorKyAgICAgICAgZmZfdmMxZHNwX2luaXRfZTJrKGRzcCk7CisgICAgIGlmIChB
UkNIX1g4NikKKyAgICAgICAgIGZmX3ZjMWRzcF9pbml0X3g4Nihkc3ApOworICAgICBpZiAoQVJD
SF9NSVBTKQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmMxZHNwLmggYi9saWJhdmNvZGVjL3Zj
MWRzcC5oCitpbmRleCA3NWRiNjJiLi5lYWJmMmM4IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy92
YzFkc3AuaAorKysrIGIvbGliYXZjb2RlYy92YzFkc3AuaAorQEAgLTg2LDYgKzg2LDcgQEAgdm9p
ZCBmZl92YzFkc3BfaW5pdChWQzFEU1BDb250ZXh0KiBjKTsKKyB2b2lkIGZmX3ZjMWRzcF9pbml0
X2FhcmNoNjQoVkMxRFNQQ29udGV4dCogZHNwKTsKKyB2b2lkIGZmX3ZjMWRzcF9pbml0X2FybShW
QzFEU1BDb250ZXh0KiBkc3ApOworIHZvaWQgZmZfdmMxZHNwX2luaXRfcHBjKFZDMURTUENvbnRl
eHQgKmMpOworK3ZvaWQgZmZfdmMxZHNwX2luaXRfZTJrKFZDMURTUENvbnRleHQgKmMpOworIHZv
aWQgZmZfdmMxZHNwX2luaXRfeDg2KFZDMURTUENvbnRleHQqIGRzcCk7Cisgdm9pZCBmZl92YzFk
c3BfaW5pdF9taXBzKFZDMURTUENvbnRleHQqIGRzcCk7CisgCitkaWZmIC0tZ2l0IGEvbGliYXZj
b2RlYy92aWRlb2RzcC5jIGIvbGliYXZjb2RlYy92aWRlb2RzcC5jCitpbmRleCBjZTllOWViLi4w
ODc2MTRhIDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy92aWRlb2RzcC5jCisrKysgYi9saWJhdmNv
ZGVjL3ZpZGVvZHNwLmMKK0BAIC01MCw2ICs1MCw4IEBAIGF2X2NvbGQgdm9pZCBmZl92aWRlb2Rz
cF9pbml0KFZpZGVvRFNQQ29udGV4dCAqY3R4LCBpbnQgYnBjKQorICAgICAgICAgZmZfdmlkZW9k
c3BfaW5pdF9hcm0oY3R4LCBicGMpOworICAgICBpZiAoQVJDSF9QUEMpCisgICAgICAgICBmZl92
aWRlb2RzcF9pbml0X3BwYyhjdHgsIGJwYyk7CisrICAgIGlmIChBUkNIX0UySykKKysgICAgICAg
IGZmX3ZpZGVvZHNwX2luaXRfZTJrKGN0eCwgYnBjKTsKKyAgICAgaWYgKEFSQ0hfWDg2KQorICAg
ICAgICAgZmZfdmlkZW9kc3BfaW5pdF94ODYoY3R4LCBicGMpOworICAgICBpZiAoQVJDSF9NSVBT
KQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmlkZW9kc3AuaCBiL2xpYmF2Y29kZWMvdmlkZW9k
c3AuaAoraW5kZXggYzA1NDVmMi4uNTY2Mjk2ZiAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvdmlk
ZW9kc3AuaAorKysrIGIvbGliYXZjb2RlYy92aWRlb2RzcC5oCitAQCAtODIsNiArODIsNyBAQCB2
b2lkIGZmX3ZpZGVvZHNwX2luaXQoVmlkZW9EU1BDb250ZXh0ICpjdHgsIGludCBicGMpOworIHZv
aWQgZmZfdmlkZW9kc3BfaW5pdF9hYXJjaDY0KFZpZGVvRFNQQ29udGV4dCAqY3R4LCBpbnQgYnBj
KTsKKyB2b2lkIGZmX3ZpZGVvZHNwX2luaXRfYXJtKFZpZGVvRFNQQ29udGV4dCAqY3R4LCBpbnQg
YnBjKTsKKyB2b2lkIGZmX3ZpZGVvZHNwX2luaXRfcHBjKFZpZGVvRFNQQ29udGV4dCAqY3R4LCBp
bnQgYnBjKTsKKyt2b2lkIGZmX3ZpZGVvZHNwX2luaXRfZTJrKFZpZGVvRFNQQ29udGV4dCAqY3R4
LCBpbnQgYnBjKTsKKyB2b2lkIGZmX3ZpZGVvZHNwX2luaXRfeDg2KFZpZGVvRFNQQ29udGV4dCAq
Y3R4LCBpbnQgYnBjKTsKKyB2b2lkIGZmX3ZpZGVvZHNwX2luaXRfbWlwcyhWaWRlb0RTUENvbnRl
eHQgKmN0eCwgaW50IGJwYyk7CisgCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92b3JiaXNkc3Au
YyBiL2xpYmF2Y29kZWMvdm9yYmlzZHNwLmMKK2luZGV4IDM2MmEyNzYuLmUwZWNkYTMgMTAwNjQ0
CistLS0gYS9saWJhdmNvZGVjL3ZvcmJpc2RzcC5jCisrKysgYi9saWJhdmNvZGVjL3ZvcmJpc2Rz
cC5jCitAQCAtMzEsNiArMzEsOCBAQCBhdl9jb2xkIHZvaWQgZmZfdm9yYmlzZHNwX2luaXQoVm9y
YmlzRFNQQ29udGV4dCAqZHNwKQorICAgICAgICAgZmZfdm9yYmlzZHNwX2luaXRfYXJtKGRzcCk7
CisgICAgIGlmIChBUkNIX1BQQykKKyAgICAgICAgIGZmX3ZvcmJpc2RzcF9pbml0X3BwYyhkc3Ap
OworKyAgICBpZiAoQVJDSF9FMkspCisrICAgICAgICBmZl92b3JiaXNkc3BfaW5pdF9lMmsoZHNw
KTsKKyAgICAgaWYgKEFSQ0hfWDg2KQorICAgICAgICAgZmZfdm9yYmlzZHNwX2luaXRfeDg2KGRz
cCk7CisgfQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdm9yYmlzZHNwLmggYi9saWJhdmNvZGVj
L3ZvcmJpc2RzcC5oCitpbmRleCA3YWJlYzRlLi4wMDExNTFmIDEwMDY0NAorLS0tIGEvbGliYXZj
b2RlYy92b3JiaXNkc3AuaAorKysrIGIvbGliYXZjb2RlYy92b3JiaXNkc3AuaAorQEAgLTM0LDUg
KzM0LDYgQEAgdm9pZCBmZl92b3JiaXNkc3BfaW5pdF9hYXJjaDY0KFZvcmJpc0RTUENvbnRleHQg
KmRzcCk7Cisgdm9pZCBmZl92b3JiaXNkc3BfaW5pdF94ODYoVm9yYmlzRFNQQ29udGV4dCAqZHNw
KTsKKyB2b2lkIGZmX3ZvcmJpc2RzcF9pbml0X2FybShWb3JiaXNEU1BDb250ZXh0ICpkc3ApOwor
IHZvaWQgZmZfdm9yYmlzZHNwX2luaXRfcHBjKFZvcmJpc0RTUENvbnRleHQgKmRzcCk7Cisrdm9p
ZCBmZl92b3JiaXNkc3BfaW5pdF9lMmsoVm9yYmlzRFNQQ29udGV4dCAqZHNwKTsKKyAKKyAjZW5k
aWYgLyogQVZDT0RFQ19WT1JCSVNEU1BfSCAqLworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnAz
ZHNwLmMgYi9saWJhdmNvZGVjL3ZwM2RzcC5jCitpbmRleCBmNDg1ZmJhLi5jMmNlODE1IDEwMDY0
NAorLS0tIGEvbGliYXZjb2RlYy92cDNkc3AuYworKysrIGIvbGliYXZjb2RlYy92cDNkc3AuYwor
QEAgLTQ1Niw2ICs0NTYsOCBAQCBhdl9jb2xkIHZvaWQgZmZfdnAzZHNwX2luaXQoVlAzRFNQQ29u
dGV4dCAqYywgaW50IGZsYWdzKQorICAgICAgICAgZmZfdnAzZHNwX2luaXRfYXJtKGMsIGZsYWdz
KTsKKyAgICAgaWYgKEFSQ0hfUFBDKQorICAgICAgICAgZmZfdnAzZHNwX2luaXRfcHBjKGMsIGZs
YWdzKTsKKysgICAgaWYgKEFSQ0hfRTJLKQorKyAgICAgICAgZmZfdnAzZHNwX2luaXRfZTJrKGMs
IGZsYWdzKTsKKyAgICAgaWYgKEFSQ0hfWDg2KQorICAgICAgICAgZmZfdnAzZHNwX2luaXRfeDg2
KGMsIGZsYWdzKTsKKyAgICAgaWYgKEFSQ0hfTUlQUykKK2RpZmYgLS1naXQgYS9saWJhdmNvZGVj
L3ZwM2RzcC5oIGIvbGliYXZjb2RlYy92cDNkc3AuaAoraW5kZXggM2I4NDllYy4uYTAxYmZkNCAx
MDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvdnAzZHNwLmgKKysrKyBiL2xpYmF2Y29kZWMvdnAzZHNw
LmgKK0BAIC01Niw2ICs1Niw3IEBAIHZvaWQgZmZfdnAzZHNwX2lkY3QxMF9hZGQodWludDhfdCAq
ZGVzdCwgcHRyZGlmZl90IHN0cmlkZSwgaW50MTZfdCAqYmxvY2spOworIHZvaWQgZmZfdnAzZHNw
X2luaXQoVlAzRFNQQ29udGV4dCAqYywgaW50IGZsYWdzKTsKKyB2b2lkIGZmX3ZwM2RzcF9pbml0
X2FybShWUDNEU1BDb250ZXh0ICpjLCBpbnQgZmxhZ3MpOworIHZvaWQgZmZfdnAzZHNwX2luaXRf
cHBjKFZQM0RTUENvbnRleHQgKmMsIGludCBmbGFncyk7Cisrdm9pZCBmZl92cDNkc3BfaW5pdF9l
MmsoVlAzRFNQQ29udGV4dCAqYywgaW50IGZsYWdzKTsKKyB2b2lkIGZmX3ZwM2RzcF9pbml0X3g4
NihWUDNEU1BDb250ZXh0ICpjLCBpbnQgZmxhZ3MpOworIHZvaWQgZmZfdnAzZHNwX2luaXRfbWlw
cyhWUDNEU1BDb250ZXh0ICpjLCBpbnQgZmxhZ3MpOworIAorZGlmZiAtLWdpdCBhL2xpYmF2Y29k
ZWMvdnA4ZHNwLmMgYi9saWJhdmNvZGVjL3ZwOGRzcC5jCitpbmRleCA0ZmY2M2QwLi4yM2M5ZGIw
IDEwMDY0NAorLS0tIGEvbGliYXZjb2RlYy92cDhkc3AuYworKysrIGIvbGliYXZjb2RlYy92cDhk
c3AuYworQEAgLTY3OSw2ICs2NzksOCBAQCBhdl9jb2xkIHZvaWQgZmZfdnA3OGRzcF9pbml0KFZQ
OERTUENvbnRleHQgKmRzcCkKKyAgICAgICAgIGZmX3ZwNzhkc3BfaW5pdF9hcm0oZHNwKTsKKyAg
ICAgaWYgKEFSQ0hfUFBDKQorICAgICAgICAgZmZfdnA3OGRzcF9pbml0X3BwYyhkc3ApOworKyAg
ICBpZiAoQVJDSF9FMkspCisrICAgICAgICBmZl92cDc4ZHNwX2luaXRfZTJrKGRzcCk7CisgICAg
IGlmIChBUkNIX1g4NikKKyAgICAgICAgIGZmX3ZwNzhkc3BfaW5pdF94ODYoZHNwKTsKKyB9Citk
aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92cDhkc3AuaCBiL2xpYmF2Y29kZWMvdnA4ZHNwLmgKK2lu
ZGV4IGNmZTE1MjQuLmJlNGY0MTIgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL3ZwOGRzcC5oCisr
KysgYi9saWJhdmNvZGVjL3ZwOGRzcC5oCitAQCAtOTQsNiArOTQsNyBAQCB2b2lkIGZmX3ZwNzhk
c3BfaW5pdChWUDhEU1BDb250ZXh0ICpjKTsKKyB2b2lkIGZmX3ZwNzhkc3BfaW5pdF9hYXJjaDY0
KFZQOERTUENvbnRleHQgKmMpOworIHZvaWQgZmZfdnA3OGRzcF9pbml0X2FybShWUDhEU1BDb250
ZXh0ICpjKTsKKyB2b2lkIGZmX3ZwNzhkc3BfaW5pdF9wcGMoVlA4RFNQQ29udGV4dCAqYyk7Cisr
dm9pZCBmZl92cDc4ZHNwX2luaXRfZTJrKFZQOERTUENvbnRleHQgKmMpOworIHZvaWQgZmZfdnA3
OGRzcF9pbml0X3g4NihWUDhEU1BDb250ZXh0ICpjKTsKKyAKKyB2b2lkIGZmX3ZwOGRzcF9pbml0
KFZQOERTUENvbnRleHQgKmMpOworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnA5ZHNwLmMgYi9s
aWJhdmNvZGVjL3ZwOWRzcC5jCitpbmRleCBmNmQ3M2Y3Li4wM2RmOWMwIDEwMDY0NAorLS0tIGEv
bGliYXZjb2RlYy92cDlkc3AuYworKysrIGIvbGliYXZjb2RlYy92cDlkc3AuYworQEAgLTk1LDUg
Kzk1LDYgQEAgYXZfY29sZCB2b2lkIGZmX3ZwOWRzcF9pbml0KFZQOURTUENvbnRleHQgKmRzcCwg
aW50IGJwcCwgaW50IGJpdGV4YWN0KQorICAgICBpZiAoQVJDSF9BQVJDSDY0KSBmZl92cDlkc3Bf
aW5pdF9hYXJjaDY0KGRzcCwgYnBwKTsKKyAgICAgaWYgKEFSQ0hfQVJNKSBmZl92cDlkc3BfaW5p
dF9hcm0oZHNwLCBicHApOworICAgICBpZiAoQVJDSF9YODYpIGZmX3ZwOWRzcF9pbml0X3g4Nihk
c3AsIGJwcCwgYml0ZXhhY3QpOworKyAgICBpZiAoQVJDSF9FMkspIGZmX3ZwOWRzcF9pbml0X2Uy
ayhkc3AsIGJwcCwgYml0ZXhhY3QpOworICAgICBpZiAoQVJDSF9NSVBTKSBmZl92cDlkc3BfaW5p
dF9taXBzKGRzcCwgYnBwKTsKKyB9CitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92cDlkc3AuaCBi
L2xpYmF2Y29kZWMvdnA5ZHNwLmgKK2luZGV4IGUyMjU2MzEuLmY2ZGZlMDEgMTAwNjQ0CistLS0g
YS9saWJhdmNvZGVjL3ZwOWRzcC5oCisrKysgYi9saWJhdmNvZGVjL3ZwOWRzcC5oCitAQCAtMTMx
LDYgKzEzMSw3IEBAIHZvaWQgZmZfdnA5ZHNwX2luaXRfMTIoVlA5RFNQQ29udGV4dCAqZHNwKTsK
KyB2b2lkIGZmX3ZwOWRzcF9pbml0X2FhcmNoNjQoVlA5RFNQQ29udGV4dCAqZHNwLCBpbnQgYnBw
KTsKKyB2b2lkIGZmX3ZwOWRzcF9pbml0X2FybShWUDlEU1BDb250ZXh0ICpkc3AsIGludCBicHAp
OworIHZvaWQgZmZfdnA5ZHNwX2luaXRfeDg2KFZQOURTUENvbnRleHQgKmRzcCwgaW50IGJwcCwg
aW50IGJpdGV4YWN0KTsKKyt2b2lkIGZmX3ZwOWRzcF9pbml0X2UyayhWUDlEU1BDb250ZXh0ICpk
c3AsIGludCBicHAsIGludCBiaXRleGFjdCk7Cisgdm9pZCBmZl92cDlkc3BfaW5pdF9taXBzKFZQ
OURTUENvbnRleHQgKmRzcCwgaW50IGJwcCk7CisgCisgI2VuZGlmIC8qIEFWQ09ERUNfVlA5RFNQ
X0ggKi8KK2RpZmYgLS1naXQgYS9saWJhdnV0aWwvY3B1LmMgYi9saWJhdnV0aWwvY3B1LmMKK2lu
ZGV4IDY1NDhjYzMuLjc4ZTNmNzkgMTAwNjQ0CistLS0gYS9saWJhdnV0aWwvY3B1LmMKKysrKyBi
L2xpYmF2dXRpbC9jcHUuYworQEAgLTU3LDYgKzU3LDggQEAgc3RhdGljIGludCBnZXRfY3B1X2Zs
YWdzKHZvaWQpCisgICAgICAgICByZXR1cm4gZmZfZ2V0X2NwdV9mbGFnc19hcm0oKTsKKyAgICAg
aWYgKEFSQ0hfUFBDKQorICAgICAgICAgcmV0dXJuIGZmX2dldF9jcHVfZmxhZ3NfcHBjKCk7Cisr
ICAgIGlmIChBUkNIX0UySykKKysgICAgICAgIHJldHVybiBmZl9nZXRfY3B1X2ZsYWdzX2Uyaygp
OworICAgICBpZiAoQVJDSF9YODYpCisgICAgICAgICByZXR1cm4gZmZfZ2V0X2NwdV9mbGFnc194
ODYoKTsKKyAgICAgcmV0dXJuIDA7CitAQCAtMTMyLDYgKzEzNCw4IEBAIGludCBhdl9wYXJzZV9j
cHVfZmxhZ3MoY29uc3QgY2hhciAqcykKKyAgICAgICAgIHsgImZsYWdzIiAgICwgTlVMTCwgMCwg
QVZfT1BUX1RZUEVfRkxBR1MsIHsgLmk2NCA9IDAgfSwgSU5UNjRfTUlOLCBJTlQ2NF9NQVgsIC51
bml0ID0gImZsYWdzIiB9LAorICNpZiAgIEFSQ0hfUFBDCisgICAgICAgICB7ICJhbHRpdmVjIiAs
IE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBVl9DUFVfRkxBR19BTFRJVkVD
ICB9LCAgICAudW5pdCA9ICJmbGFncyIgfSwKKysjZWxpZiBBUkNIX0UySworKyAgICAgICAgeyAi
ZTJrIiAgICAgLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgeyAuaTY0ID0gQVZfQ1BVX0ZM
QUdfRTJLICAgICAgfSwgICAgLnVuaXQgPSAiZmxhZ3MiIH0sCisgI2VsaWYgQVJDSF9YODYKKyAg
ICAgICAgIHsgIm1teCIgICAgICwgTlVMTCwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsgLmk2NCA9
IEFWX0NQVV9GTEFHX01NWCAgICAgIH0sICAgIC51bml0ID0gImZsYWdzIiB9LAorICAgICAgICAg
eyAibW14ZXh0IiAgLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgeyAuaTY0ID0gQ1BVRkxB
R19NTVhFWFQgICAgICAgfSwgICAgLnVuaXQgPSAiZmxhZ3MiIH0sCitAQCAtMTk0LDYgKzE5OCw4
IEBAIGludCBhdl9wYXJzZV9jcHVfY2Fwcyh1bnNpZ25lZCAqZmxhZ3MsIGNvbnN0IGNoYXIgKnMp
CisgICAgICAgICB7ICJmbGFncyIgICAsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0ZMQUdTLCB7IC5p
NjQgPSAwIH0sIElOVDY0X01JTiwgSU5UNjRfTUFYLCAudW5pdCA9ICJmbGFncyIgfSwKKyAjaWYg
ICBBUkNIX1BQQworICAgICAgICAgeyAiYWx0aXZlYyIgLCBOVUxMLCAwLCBBVl9PUFRfVFlQRV9D
T05TVCwgeyAuaTY0ID0gQVZfQ1BVX0ZMQUdfQUxUSVZFQyAgfSwgICAgLnVuaXQgPSAiZmxhZ3Mi
IH0sCisrI2VsaWYgQVJDSF9FMksKKysgICAgICAgIHsgImUyayIgICAgICwgTlVMTCwgMCwgQVZf
T1BUX1RZUEVfQ09OU1QsIHsgLmk2NCA9IEFWX0NQVV9GTEFHX0UySyAgICAgIH0sICAgIC51bml0
ID0gImZsYWdzIiB9LAorICNlbGlmIEFSQ0hfWDg2CisgICAgICAgICB7ICJtbXgiICAgICAsIE5V
TEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7IC5pNjQgPSBBVl9DUFVfRkxBR19NTVggICAgICB9
LCAgICAudW5pdCA9ICJmbGFncyIgfSwKKyAgICAgICAgIHsgIm1teDIiICAgICwgTlVMTCwgMCwg
QVZfT1BUX1RZUEVfQ09OU1QsIHsgLmk2NCA9IEFWX0NQVV9GTEFHX01NWDIgICAgIH0sICAgIC51
bml0ID0gImZsYWdzIiB9LAorQEAgLTMxNCw2ICszMjAsOCBAQCBzaXplX3QgYXZfY3B1X21heF9h
bGlnbih2b2lkKQorICAgICAgICAgcmV0dXJuIGZmX2dldF9jcHVfbWF4X2FsaWduX2FybSgpOwor
ICAgICBpZiAoQVJDSF9QUEMpCisgICAgICAgICByZXR1cm4gZmZfZ2V0X2NwdV9tYXhfYWxpZ25f
cHBjKCk7CisrICAgIGlmIChBUkNIX0UySykKKysgICAgICAgIHJldHVybiBmZl9nZXRfY3B1X21h
eF9hbGlnbl9lMmsoKTsKKyAgICAgaWYgKEFSQ0hfWDg2KQorICAgICAgICAgcmV0dXJuIGZmX2dl
dF9jcHVfbWF4X2FsaWduX3g4NigpOworIAorZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9jcHUuaCBi
L2xpYmF2dXRpbC9jcHUuaAoraW5kZXggOGJiOWViNi4uNTM3YzZkYiAxMDA2NDQKKy0tLSBhL2xp
YmF2dXRpbC9jcHUuaAorKysrIGIvbGliYXZ1dGlsL2NwdS5oCitAQCAtNjEsNiArNjEsOCBAQAor
ICNkZWZpbmUgQVZfQ1BVX0ZMQUdfVlNYICAgICAgICAgIDB4MDAwMiAvLy88IElTQSAyLjA2Cisg
I2RlZmluZSBBVl9DUFVfRkxBR19QT1dFUjggICAgICAgMHgwMDA0IC8vLzwgSVNBIDIuMDcKKyAK
KysjZGVmaW5lIEFWX0NQVV9GTEFHX0UySyAgICAgICAgICAweDAwMDEKKysKKyAjZGVmaW5lIEFW
X0NQVV9GTEFHX0FSTVY1VEUgICAgICAoMSA8PCAwKQorICNkZWZpbmUgQVZfQ1BVX0ZMQUdfQVJN
VjYgICAgICAgICgxIDw8IDEpCisgI2RlZmluZSBBVl9DUFVfRkxBR19BUk1WNlQyICAgICAgKDEg
PDwgMikKK2RpZmYgLS1naXQgYS9saWJhdnV0aWwvY3B1X2ludGVybmFsLmggYi9saWJhdnV0aWwv
Y3B1X2ludGVybmFsLmgKK2luZGV4IDM3MTIyZDEuLmQ0MGUyOGQgMTAwNjQ0CistLS0gYS9saWJh
dnV0aWwvY3B1X2ludGVybmFsLmgKKysrKyBiL2xpYmF2dXRpbC9jcHVfaW50ZXJuYWwuaAorQEAg
LTQ0LDExICs0NCwxMyBAQAorIGludCBmZl9nZXRfY3B1X2ZsYWdzX2FhcmNoNjQodm9pZCk7Cisg
aW50IGZmX2dldF9jcHVfZmxhZ3NfYXJtKHZvaWQpOworIGludCBmZl9nZXRfY3B1X2ZsYWdzX3Bw
Yyh2b2lkKTsKKytpbnQgZmZfZ2V0X2NwdV9mbGFnc19lMmsodm9pZCk7CisgaW50IGZmX2dldF9j
cHVfZmxhZ3NfeDg2KHZvaWQpOworIAorIHNpemVfdCBmZl9nZXRfY3B1X21heF9hbGlnbl9hYXJj
aDY0KHZvaWQpOworIHNpemVfdCBmZl9nZXRfY3B1X21heF9hbGlnbl9hcm0odm9pZCk7Cisgc2l6
ZV90IGZmX2dldF9jcHVfbWF4X2FsaWduX3BwYyh2b2lkKTsKKytzaXplX3QgZmZfZ2V0X2NwdV9t
YXhfYWxpZ25fZTJrKHZvaWQpOworIHNpemVfdCBmZl9nZXRfY3B1X21heF9hbGlnbl94ODYodm9p
ZCk7CisgCisgI2VuZGlmIC8qIEFWVVRJTF9DUFVfSU5URVJOQUxfSCAqLworZGlmZiAtLWdpdCBh
L2xpYmF2dXRpbC9lMmsvTWFrZWZpbGUgYi9saWJhdnV0aWwvZTJrL01ha2VmaWxlCituZXcgZmls
ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNjc4OTJiNAorLS0tIC9kZXYvbnVsbAorKysr
IGIvbGliYXZ1dGlsL2Uyay9NYWtlZmlsZQorQEAgLTAsMCArMSwyIEBACisrT0JKUyArPSBlMmsv
Y3B1Lm8gXAorKyAgICAgICAgZTJrL2Zsb2F0X2RzcC5vCitkaWZmIC0tZ2l0IGEvbGliYXZ1dGls
L2Uyay9jcHUuYyBiL2xpYmF2dXRpbC9lMmsvY3B1LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp
bmRleCAwMDAwMDAwLi42ZTUyZmFhCistLS0gL2Rldi9udWxsCisrKysgYi9saWJhdnV0aWwvZTJr
L2NwdS5jCitAQCAtMCwwICsxLDQxIEBACisrLyoKKysgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBG
Rm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICog
RkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9u
ZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaW5jbHVkZSAiY29uZmlnLmgiCisrI2luY2x1
ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvY3B1LmgiCisr
I2luY2x1ZGUgImxpYmF2dXRpbC9jcHVfaW50ZXJuYWwuaCIKKysKKytpbnQgZmZfZ2V0X2NwdV9m
bGFnc19lMmsodm9pZCkKKyt7CisrI2lmIEhBVkVfRTJLCisrICAgIHJldHVybiBBVl9DUFVfRkxB
R19FMks7CisrI2Vsc2UKKysgICAgcmV0dXJuIDA7CisrI2VuZGlmCisrfQorKworK3NpemVfdCBm
Zl9nZXRfY3B1X21heF9hbGlnbl9lMmsodm9pZCkKKyt7CisrICAgIGludCBmbGFncyA9IGF2X2dl
dF9jcHVfZmxhZ3MoKTsKKysKKysgICAgaWYgKGZsYWdzICYgQVZfQ1BVX0ZMQUdfRTJLKQorKyAg
ICAgICAgcmV0dXJuIDE2OworKworKyAgICByZXR1cm4gODsKKyt9CitkaWZmIC0tZ2l0IGEvbGli
YXZ1dGlsL2Uyay9jcHUuaCBiL2xpYmF2dXRpbC9lMmsvY3B1LmgKK25ldyBmaWxlIG1vZGUgMTAw
NjQ0CitpbmRleCAwMDAwMDAwLi5lOWEzZDY2CistLS0gL2Rldi9udWxsCisrKysgYi9saWJhdnV0
aWwvZTJrL2NwdS5oCitAQCAtMCwwICsxLDI3IEBACisrLyoKKysgKiBUaGlzIGZpbGUgaXMgcGFy
dCBvZiBGRm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAq
CisrICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5z
ZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
KyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaWZuZGVmIEFWVVRJTF9FMktfQ1BV
X0gKKysjZGVmaW5lIEFWVVRJTF9FMktfQ1BVX0gKKysKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Nw
dS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvY3B1X2ludGVybmFsLmgiCisrCisrI2RlZmluZSBF
MktfQkFTRShmbGFncykgQ1BVRVhUKGZsYWdzLCBFMkspCisrCisrI2VuZGlmIC8qIEFWVVRJTF9F
MktfQ1BVX0ggKi8KK2RpZmYgLS1naXQgYS9saWJhdnV0aWwvZTJrL2Zsb2F0X2RzcC5jIGIvbGli
YXZ1dGlsL2Uyay9mbG9hdF9kc3AuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw
MDAuLmRmZWNkYWIKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmF2dXRpbC9lMmsvZmxvYXRfZHNw
LmMKK0BAIC0wLDAgKzEsMTg4IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWx5YSBL
dXJkeXVrb3YgPGpwZWdxc0BnbWFpbC5jb20+IGZvciBCYXNlQUxULCBMdGQKKysgKiBDb3B5cmln
aHQgKGMpIDIwMDYgTHVjYSBCYXJiYXRvIDxsdV96ZXJvQGdlbnRvby5vcmc+CisrICoKKysgKiBU
aGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAq
IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorKyAqCisrICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisrICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaW5jbHVk
ZSAiY29uZmlnLmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVzLmgiCisrI2luY2x1
ZGUgImxpYmF2dXRpbC9jcHUuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Zsb2F0X2RzcC5oIgor
KyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL2NwdS5oIgorKyNpbmNsdWRlICJ1dGlsX2Uyay5oIgor
KworK3N0YXRpYyB2b2lkIGZmX3ZlY3Rvcl9mbXVsX2UyayhmbG9hdCAqZHN0LAorKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCAqc3JjMCwgY29uc3QgZmxvYXQgKnNy
YzEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW4pCisreworKyAgICBp
bnQgaSA9IDA7CisrICAgIF9fbTEyOCBkMCwgZDE7CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVw
IikKKysgICAgZm9yICg7IGkgPCBsZW47IGkgKz0gOCkgeworKyAgICAgICAgZDAgPSBfbW1fbG9h
ZF9wcyhzcmMwICsgaSk7CisrICAgICAgICBkMSA9IF9tbV9sb2FkX3BzKHNyYzAgKyBpICsgNCk7
CisrICAgICAgICBkMCA9IF9tbV9tdWxfcHMoZDAsIF9tbV9sb2FkX3BzKHNyYzEgKyBpKSk7Cisr
ICAgICAgICBkMSA9IF9tbV9tdWxfcHMoZDEsIF9tbV9sb2FkX3BzKHNyYzEgKyBpICsgNCkpOwor
KyAgICAgICAgX21tX3N0b3JlX3BzKGRzdCArIGksIGQwKTsKKysgICAgICAgIF9tbV9zdG9yZV9w
cyhkc3QgKyBpICsgNCwgZDEpOworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkIHZlY3Rvcl9m
bWFjX3NjYWxhcl9lMmsoZmxvYXQgKmRzdCwgY29uc3QgZmxvYXQgKnNyYywgZmxvYXQgbXVsLAor
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbikKKyt7CisrICAgIGlu
dCBpID0gMDsKKysgICAgX19tMTI4IGQwLCBkMSwgZDIgPSBfbW1fc2V0MV9wcyhtdWwpOworKwor
KyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAoOyBpIDwgbGVuOyBpICs9IDgpIHsK
KysgICAgICAgIGQwID0gX21tX2xvYWRfcHMoc3JjICsgaSk7CisrICAgICAgICBkMSA9IF9tbV9s
b2FkX3BzKHNyYyArIGkgKyA0KTsKKysgICAgICAgIGQwID0gX21tX211bF9wcyhkMCwgZDIpOwor
KyAgICAgICAgZDEgPSBfbW1fbXVsX3BzKGQxLCBkMik7CisrICAgICAgICBkMCA9IF9tbV9hZGRf
cHMoZDAsIF9tbV9sb2FkX3BzKGRzdCArIGkpKTsKKysgICAgICAgIGQxID0gX21tX2FkZF9wcyhk
MSwgX21tX2xvYWRfcHMoZHN0ICsgaSArIDQpKTsKKysgICAgICAgIF9tbV9zdG9yZV9wcyhkc3Qg
KyBpLCBkMCk7CisrICAgICAgICBfbW1fc3RvcmVfcHMoZHN0ICsgaSArIDQsIGQxKTsKKysgICAg
fQorK30KKysKKytzdGF0aWMgdm9pZCB2ZWN0b3JfZm11bF9zY2FsYXJfZTJrKGZsb2F0ICpkc3Qs
IGNvbnN0IGZsb2F0ICpzcmMsIGZsb2F0IG11bCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBsZW4pCisreworKyAgICBpbnQgaSA9IDA7CisrICAgIF9fbTEyOCBkMCwg
ZDEsIGQyID0gX21tX3NldDFfcHMobXVsKTsKKysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQor
KyAgICBmb3IgKDsgaSA8IGxlbiAtIDQ7IGkgKz0gOCkgeworKyAgICAgICAgZDAgPSBfbW1fbG9h
ZF9wcyhzcmMgKyBpKTsKKysgICAgICAgIGQxID0gX21tX2xvYWRfcHMoc3JjICsgaSArIDQpOwor
KyAgICAgICAgZDAgPSBfbW1fbXVsX3BzKGQwLCBkMik7CisrICAgICAgICBkMSA9IF9tbV9tdWxf
cHMoZDEsIGQyKTsKKysgICAgICAgIF9tbV9zdG9yZV9wcyhkc3QgKyBpLCBkMCk7CisrICAgICAg
ICBfbW1fc3RvcmVfcHMoZHN0ICsgaSArIDQsIGQxKTsKKysgICAgfQorKyAgICBpZiAoaSA8IGxl
bikgeworKyAgICAgICAgZDAgPSBfbW1fbG9hZF9wcyhzcmMgKyBpKTsKKysgICAgICAgIGQwID0g
X21tX211bF9wcyhkMCwgZDIpOworKyAgICAgICAgX21tX3N0b3JlX3BzKGRzdCArIGksIGQwKTsK
KysgICAgfQorK30KKysKKytzdGF0aWMgdm9pZCBmZl92ZWN0b3JfZm11bF93aW5kb3dfZTJrKGZs
b2F0ICpkc3QsIGNvbnN0IGZsb2F0ICpzcmMwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZmxvYXQgKnNyYzEsIGNvbnN0IGZsb2F0ICp3aW4sCisrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuKQorK3sKKysgICAgX19tMTI4
IHQwLCB0MSwgczAsIHMxLCB3aSwgd2o7CisrICAgIGludCBpLCBqOworKworKyAgICBkc3QgICs9
IGxlbjsKKysgICAgd2luICArPSBsZW47CisrICAgIHNyYzAgKz0gbGVuOworKworKyAgICBQUkFH
TUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAoaSA9IC1sZW4sIGogPSBsZW4gLSA0OyBpIDwgMDsg
aSArPSA0LCBqIC09IDQpIHsKKysgICAgICAgIHMwID0gX21tX2xvYWRfcHMoc3JjMCArIGkpOwor
KyAgICAgICAgczEgPSBfbW1fbG9hZF9wcyhzcmMxICsgaik7CisrICAgICAgICB3aSA9IF9tbV9s
b2FkX3BzKHdpbiArIGkpOworKyAgICAgICAgd2ogPSBfbW1fbG9hZF9wcyh3aW4gKyBqKTsKKysK
KysgICAgICAgIHMxID0gX21tX3NodWZmbGVfcHMoczEsIHMxLCAweDFiKTsKKysgICAgICAgIHdq
ID0gX21tX3NodWZmbGVfcHMod2osIHdqLCAweDFiKTsKKysKKysgICAgICAgIHQwID0gX21tX211
bF9wcyhzMCwgd2opOworKyAgICAgICAgdDEgPSBfbW1fbXVsX3BzKHMwLCB3aSk7CisrICAgICAg
ICB0MCA9IF9tbV9zdWJfcHModDAsIF9tbV9tdWxfcHMoczEsIHdpKSk7CisrICAgICAgICB0MSA9
IF9tbV9hZGRfcHModDEsIF9tbV9tdWxfcHMoczEsIHdqKSk7CisrICAgICAgICB0MSA9IF9tbV9z
aHVmZmxlX3BzKHQxLCB0MSwgMHgxYik7CisrCisrICAgICAgICBfbW1fc3RvcmVfcHMoZHN0ICsg
aSwgdDApOworKyAgICAgICAgX21tX3N0b3JlX3BzKGRzdCArIGosIHQxKTsKKysgICAgfQorK30K
KysKKytzdGF0aWMgdm9pZCBmZl92ZWN0b3JfZm11bF9hZGRfZTJrKGZsb2F0ICpkc3QsIGNvbnN0
IGZsb2F0ICpzcmMwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZmxvYXQgKnNyYzEsIGNvbnN0IGZsb2F0ICpzcmMyLAorKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGxlbikKKyt7CisrICAgIGludCBpOworKyAgICBfX20xMjggZCwgczAs
IHMxLCBzMjsKKysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAgICBmb3IgKGkgPSAwOyBp
IDwgbGVuOyBpICs9IDQpIHsKKysgICAgICAgIHMwID0gX21tX2xvYWRfcHMoc3JjMCArIGkpOwor
KyAgICAgICAgczEgPSBfbW1fbG9hZF9wcyhzcmMxICsgaSk7CisrICAgICAgICBzMiA9IF9tbV9s
b2FkX3BzKHNyYzIgKyBpKTsKKysgICAgICAgIGQgPSBfbW1fYWRkX3BzKF9tbV9tdWxfcHMoczAs
IHMxKSwgczIpOworKyAgICAgICAgX21tX3N0b3JlX3BzKGRzdCArIGksIGQpOworKyAgICB9Cisr
fQorKworK3N0YXRpYyB2b2lkIGZmX3ZlY3Rvcl9mbXVsX3JldmVyc2VfZTJrKGZsb2F0ICpkc3Qs
IGNvbnN0IGZsb2F0ICpzcmMwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGZsb2F0ICpzcmMxLCBpbnQgbGVuKQorK3sKKysgICAgaW50IGk7CisrICAgIF9f
bTEyOCBzMCwgczEsIHMyLCBzMzsKKysgICAgc3JjMSArPSBsZW4gLSA0OworKworKyAgICBQUkFH
TUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkgeworKyAg
ICAgICAgczEgPSBfbW1fbG9hZF9wcyhzcmMxIC0gaSk7CisrICAgICAgICBzMCA9IF9tbV9sb2Fk
X3BzKHNyYzAgKyBpKTsKKysgICAgICAgIHMzID0gX21tX2xvYWRfcHMoc3JjMSAtIGkgLSA0KTsK
KysgICAgICAgIHMyID0gX21tX2xvYWRfcHMoc3JjMCArIGkgKyA0KTsKKysgICAgICAgIHMxID0g
X21tX3NodWZmbGVfcHMoczEsIHMxLCAweDFiKTsKKysgICAgICAgIHMzID0gX21tX3NodWZmbGVf
cHMoczMsIHMzLCAweDFiKTsKKysgICAgICAgIHMwID0gX21tX211bF9wcyhzMCwgczEpOworKyAg
ICAgICAgczIgPSBfbW1fbXVsX3BzKHMyLCBzMyk7CisrICAgICAgICBfbW1fc3RvcmVfcHMoZHN0
ICsgaSwgczApOworKyAgICAgICAgX21tX3N0b3JlX3BzKGRzdCArIGkgKyA0LCBzMik7CisrICAg
IH0KKyt9CisrCisrc3RhdGljIHZvaWQgYnV0dGVyZmxpZXNfZmxvYXRfZTJrKGZsb2F0ICphdl9y
ZXN0cmljdCBzcmMwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAq
YXZfcmVzdHJpY3Qgc3JjMSwgaW50IGxlbikKKyt7CisrICAgIGludCBpOworKyAgICBfX20xMjgg
czAsIHMxLCBzMjsKKysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAgICBmb3IgKGkgPSAw
OyBpIDwgbGVuOyBpICs9IDQpIHsKKysgICAgICAgIHMwID0gX21tX2xvYWRfcHMoc3JjMCArIGkp
OworKyAgICAgICAgczEgPSBfbW1fbG9hZF9wcyhzcmMxICsgaSk7CisrICAgICAgICBzMiA9IF9t
bV9zdWJfcHMoczAsIHMxKTsKKysgICAgICAgIHMwID0gX21tX2FkZF9wcyhzMCwgczEpOworKyAg
ICAgICAgX21tX3N0b3JlX3BzKHNyYzEgKyBpLCBzMik7CisrICAgICAgICBfbW1fc3RvcmVfcHMo
c3JjMCArIGksIHMwKTsKKysgICAgfQorK30KKysKKythdl9jb2xkIHZvaWQgZmZfZmxvYXRfZHNw
X2luaXRfZTJrKEFWRmxvYXREU1BDb250ZXh0ICpmZHNwLCBpbnQgYml0X2V4YWN0KQorK3sKKysg
ICAgaWYgKCFFMktfQkFTRShhdl9nZXRfY3B1X2ZsYWdzKCkpKQorKyAgICAgICAgcmV0dXJuOwor
KworKyAgICBmZHNwLT52ZWN0b3JfZm11bCA9IGZmX3ZlY3Rvcl9mbXVsX2UyazsgCisrICAgIGZk
c3AtPnZlY3Rvcl9mbWFjX3NjYWxhciA9IHZlY3Rvcl9mbWFjX3NjYWxhcl9lMms7CisrICAgIGZk
c3AtPnZlY3Rvcl9mbXVsX3NjYWxhciA9IHZlY3Rvcl9mbXVsX3NjYWxhcl9lMms7CisrICAgIGZk
c3AtPnZlY3Rvcl9mbXVsX3dpbmRvdyA9IGZmX3ZlY3Rvcl9mbXVsX3dpbmRvd19lMms7CisrICAg
IGZkc3AtPnZlY3Rvcl9mbXVsX2FkZCA9IGZmX3ZlY3Rvcl9mbXVsX2FkZF9lMms7CisrICAgIGZk
c3AtPnZlY3Rvcl9mbXVsX3JldmVyc2UgPSBmZl92ZWN0b3JfZm11bF9yZXZlcnNlX2UyazsKKysg
ICAgZmRzcC0+YnV0dGVyZmxpZXNfZmxvYXQgPSBidXR0ZXJmbGllc19mbG9hdF9lMms7CisrfQor
ZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9lMmsvaW50cmVhZHdyaXRlLmggYi9saWJhdnV0aWwvZTJr
L2ludHJlYWR3cml0ZS5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMDM4
NzQ3NQorLS0tIC9kZXYvbnVsbAorKysrIGIvbGliYXZ1dGlsL2Uyay9pbnRyZWFkd3JpdGUuaAor
QEAgLTAsMCArMSw1NCBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDIxIElseWEgS3VyZHl1
a292IDxqcGVncXNAZ21haWwuY29tPiBmb3IgQmFzZUFMVCwgTHRkCisrICoKKysgKiBUaGlzIGZp
bGUgaXMgcGFydCBvZiBGRm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNp
b24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorKyAqCisrICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisr
ICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaWZuZGVmIEFWVVRJ
TF9FMktfSU5UUkVBRFdSSVRFX0gKKysjZGVmaW5lIEFWVVRJTF9FMktfSU5UUkVBRFdSSVRFX0gK
KysKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrI2luY2x1ZGUgImNvbmZpZy5oIgorKworKyNpbmNs
dWRlIDx4ODZpbnRyaW4uaD4KKysKKysjZGVmaW5lIEFWX1JCMzIgYXZfcmVhZF9ic3dhcDMyCisr
I2RlZmluZSBBVl9XQjMyIGF2X3dyaXRlX2Jzd2FwMzIKKysjZGVmaW5lIEFWX1JCNjQgYXZfcmVh
ZF9ic3dhcDY0CisrI2RlZmluZSBBVl9XQjY0IGF2X3dyaXRlX2Jzd2FwNjQKKysKKytzdGF0aWMg
YXZfYWx3YXlzX2lubGluZSB1aW50MzJfdCBhdl9yZWFkX2Jzd2FwMzIoY29uc3Qgdm9pZCAqcCkK
Kyt7CisrICAgIHJldHVybiBfYnN3YXAoKihjb25zdCB1aW50MzJfdCopcCk7CisrfQorKworK3N0
YXRpYyBhdl9hbHdheXNfaW5saW5lIHZvaWQgYXZfd3JpdGVfYnN3YXAzMih2b2lkICpwLCB1aW50
MzJfdCB2KQorK3sKKysgICAgKih1aW50MzJfdCopcCA9IF9ic3dhcCh2KTsKKyt9CisrCisrc3Rh
dGljIGF2X2Fsd2F5c19pbmxpbmUgdWludDY0X3QgYXZfcmVhZF9ic3dhcDY0KGNvbnN0IHZvaWQg
KnApCisreworKyAgICByZXR1cm4gX2Jzd2FwNjQoKihjb25zdCB1aW50NjRfdCopcCk7CisrfQor
KworK3N0YXRpYyBhdl9hbHdheXNfaW5saW5lIHZvaWQgYXZfd3JpdGVfYnN3YXA2NCh2b2lkICpw
LCB1aW50NjRfdCB2KQorK3sKKysgICAgKih1aW50NjRfdCopcCA9IF9ic3dhcDY0KHYpOworK30K
KysKKysjZW5kaWYgLyogQVZVVElMX0UyS19JTlRSRUFEV1JJVEVfSCAqLworZGlmZiAtLWdpdCBh
L2xpYmF2dXRpbC9lMmsvdGltZXIuaCBiL2xpYmF2dXRpbC9lMmsvdGltZXIuaAorbmV3IGZpbGUg
bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmVhNzgxNzUKKy0tLSAvZGV2L251bGwKKysrKyBi
L2xpYmF2dXRpbC9lMmsvdGltZXIuaAorQEAgLTAsMCArMSwzNSBAQAorKy8qCisrICogQ29weXJp
Z2h0IChDKSAyMDIxIElseWEgS3VyZHl1a292IDxqcGVncXNAZ21haWwuY29tPiBmb3IgQmFzZUFM
VCwgTHRkCisrICoKKysgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisrICoKKysgKiBG
Rm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisr
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogRkZtcGVnIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EK
KysgKi8KKysKKysjaWZuZGVmIEFWVVRJTF9FMktfVElNRVJfSAorKyNkZWZpbmUgQVZVVElMX0Uy
S19USU1FUl9ICisrCisrI2luY2x1ZGUgPHN0ZGludC5oPgorKyNpbmNsdWRlIDx4ODZpbnRyaW4u
aD4KKysKKysjZGVmaW5lIEFWX1JFQURfVElNRSByZWFkX3RpbWUKKysKKytzdGF0aWMgaW5saW5l
IHVpbnQ2NF90IHJlYWRfdGltZSh2b2lkKQorK3sKKysgICAgdW5zaWduZWQgYXV4OworKyAgICBy
ZXR1cm4gX19yZHRzY3AoJmF1eCk7CisrfQorKworKyNlbmRpZiAvKiBBVlVUSUxfRTJLX1RJTUVS
X0ggKi8KK2RpZmYgLS1naXQgYS9saWJhdnV0aWwvZTJrL3V0aWxfZTJrLmggYi9saWJhdnV0aWwv
ZTJrL3V0aWxfZTJrLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5mNWNl
YTdjCistLS0gL2Rldi9udWxsCisrKysgYi9saWJhdnV0aWwvZTJrL3V0aWxfZTJrLmgKK0BAIC0w
LDAgKzEsMTQ2IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWx5YSBLdXJkeXVrb3Yg
PGpwZWdxc0BnbWFpbC5jb20+IGZvciBCYXNlQUxULCBMdGQKKysgKgorKyAqIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIEZGbXBlZy4KKysgKgorKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAy
LjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisrICoKKysgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBM
aWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisrICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorKyAqLworKworKy8qKgorKyAqIEBmaWxlCisr
ICogQ29udGFpbnMgbWlzYyB1dGlsaXR5IG1hY3JvcyBhbmQgaW5saW5lIGZ1bmN0aW9ucworKyAq
LworKworKyNpZm5kZWYgQVZVVElMX0UyS19VVElMX0UyS19ICisrI2RlZmluZSBBVlVUSUxfRTJL
X1VUSUxfRTJLX0gKKysKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrI2luY2x1ZGUgImNvbmZpZy5o
IgorKyNpbmNsdWRlIDxzbW1pbnRyaW4uaD4gLyogU1NFNC4xICovCisrCisrI2RlZmluZSBBTFdB
WVNfSU5MSU5FIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW5saW5lCisrI2Rl
ZmluZSBBTElHTkVEKG4pIF9fYXR0cmlidXRlX18oKGFsaWduZWQobikpKSAKKysKKysjaWZkZWYg
X19lMmtfXworKyNkZWZpbmUgUFJBR01BX0UySyBfUHJhZ21hCisrI2RlZmluZSBfbW1fc2h1ZmZs
ZTJfcGk4KGEsIGIsIGMpIFwKKysgICAgKChfX202NClfX2J1aWx0aW5fZTJrX3BzaHVmYigodWlu
dDY0X3QpKGIpLCAodWludDY0X3QpKGEpLCAodWludDY0X3QpKGMpKSkKKysjZGVmaW5lIF9tbV9z
aHVmZmxlMl9lcGk4KGEsIGIsIGMpIFwKKysgICAgKChfX20xMjhpKV9fYnVpbHRpbl9lMmtfcXBw
ZXJtYigoX192MmRpKShiKSwgKF9fdjJkaSkoYSksIChfX3YyZGkpKGMpKSkKKysjZGVmaW5lIF9t
bV9ibGVuZHZfcGk4KGEsIGIsIGMpIFwKKysgICAgKChfX202NClfX2J1aWx0aW5fZTJrX3BtZXJn
ZSgodWludDY0X3QpKGEpLCAodWludDY0X3QpKGIpLCAodWludDY0X3QpKGMpKSkKKysjZWxzZQor
KyNkZWZpbmUgUFJBR01BX0UySyh4KQorKyNkZWZpbmUgX21tX3NodWZmbGUyX3BpOChhLCBiLCBj
KSBcCisrICAgIF9tbV9tb3ZlcGk2NF9waTY0KF9tbV9zaHVmZmxlX2VwaTgoX21tX3VucGFja2xv
X2VwaTY0KCBcCisrICAgICAgICBfbW1fbW92cGk2NF9lcGk2NChhKSwgX21tX21vdnBpNjRfZXBp
NjQoYikpLCBfbW1fbW92cGk2NF9lcGk2NChjKSkpCisrI2RlZmluZSBfbW1fc2h1ZmZsZTJfZXBp
OChhLCBiLCBjKSBcCisrICAgIF9tbV9ibGVuZHZfZXBpOChfbW1fc2h1ZmZsZV9lcGk4KGEsIGMp
LCBfbW1fc2h1ZmZsZV9lcGk4KGIsIGMpLCBcCisrICAgICAgICBfbW1fc2xsaV9lcGkxNihjLCAz
KSkKKysjZGVmaW5lIF9tbV9ibGVuZHZfcGk4KGEsIGIsIGMpIFwKKysgICAgX21tX21vdmVwaTY0
X3BpNjQoX21tX2JsZW5kdl9lcGk4KF9tbV9tb3ZwaTY0X2VwaTY0KGEpLCBcCisrICAgICAgICBf
bW1fbW92cGk2NF9lcGk2NChiKSwgX21tX21vdnBpNjRfZXBpNjQoYykpKQorKworK3N0YXRpYyBB
TFdBWVNfSU5MSU5FIHVpbnQ2NF90IF9fYnVpbHRpbl9lMmtfaW5zZmQodWludDY0X3QgYSwgdWlu
dDY0X3QgYiwgdWludDY0X3QgYykgeworKyAgaW50IG4gPSBiICYgNjM7CisrICBhID0gYSA+PiBu
IHwgYSA8PCAoNjQgLSBuKTsKKysgIHJldHVybiBjIF4gKChhIF4gYykgJiAofjBsbCA8PCAoYiA+
PiA2ICYgNjMpKSk7CisrfQorKyNlbmRpZgorKworKyNkZWZpbmUgX21tX2V4dHJhY3RfcGkzMihh
LCBiKSBfbW1fZXh0cmFjdF9lcGkzMihfbW1fbW92cGk2NF9lcGk2NChhKSwgYikKKysjZGVmaW5l
IFZFQ19BTElHTlI4KGEsIGIpIF9tbV9jYXN0cGRfc2kxMjgoX21tX3NodWZmbGVfcGQoX21tX2Nh
c3RzaTEyOF9wZChiKSwgX21tX2Nhc3RzaTEyOF9wZChhKSwgMSkpCisrCisrI2RlZmluZSBfbW1f
dW5wYWNrbG9fcHMyKGEsIGIpIF9tbV9jYXN0cGRfcHMoX21tX3VucGFja2xvX3BkKF9tbV9jYXN0
cHNfcGQoYSksIF9tbV9jYXN0cHNfcGQoYikpKTsKKysjZGVmaW5lIF9tbV91bnBhY2toaV9wczIo
YSwgYikgX21tX2Nhc3RwZF9wcyhfbW1fdW5wYWNraGlfcGQoX21tX2Nhc3Rwc19wZChhKSwgX21t
X2Nhc3Rwc19wZChiKSkpOworKyNkZWZpbmUgX21tX2FsaWducl9wcyhhLCBiLCBuKSBfbW1fY2Fz
dHNpMTI4X3BzKF9tbV9hbGlnbnJfZXBpOChfbW1fY2FzdHBzX3NpMTI4KGEpLCBfbW1fY2FzdHBz
X3NpMTI4KGIpLCAobikgKiA0KSkKKysjZGVmaW5lIF9tbV9ic3JsaV9wcyhhLCBuKSBfbW1fY2Fz
dHNpMTI4X3BzKF9tbV9ic3JsaV9zaTEyOChfbW1fY2FzdHBzX3NpMTI4KGEpLCAobikgKiA0KSkK
KysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKKysgKiBWZWN0b3IgdHlwZXMKKysgKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K
KysjZGVmaW5lIHZlY191OCAgX19tMTI4aQorKyNkZWZpbmUgdmVjX3M4ICBfX20xMjhpCisrI2Rl
ZmluZSB2ZWNfdTE2IF9fbTEyOGkKKysjZGVmaW5lIHZlY19zMTYgX19tMTI4aQorKyNkZWZpbmUg
dmVjX3UzMiBfX20xMjhpCisrI2RlZmluZSB2ZWNfczMyIF9fbTEyOGkKKysjZGVmaW5lIHZlY19m
ICAgX19tMTI4CisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogTnVsbCB2ZWN0b3IKKysgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKi8KKysjZGVmaW5lIExPQURfWkVSTyBjb25zdCBfX20xMjhpIHplcm92ID0gX21tX3Nl
dHplcm9fc2kxMjgoKQorKworKy8vIFRyYW5zcG9zZSA4eDggbWF0cml4IG9mIDE2LWJpdCBlbGVt
ZW50cyAoaW4tcGxhY2UpCisrI2RlZmluZSBUUkFOU1BPU0U4KGEwLCBhMSwgYTIsIGEzLCBhNCwg
YTUsIGE2LCBhNykgXAorK2RvIHsgXAorKyAgICB2ZWNfczE2IF9iMCwgX2IxLCBfYjIsIF9iMywg
X2I0LCBfYjUsIF9iNiwgX2I3OyBcCisrICAgIHZlY19zMTYgX2MwLCBfYzEsIF9jMiwgX2MzLCBf
YzQsIF9jNSwgX2M2LCBfYzc7IFwKKysgICAgX2IwID0gX21tX3VucGFja2xvX2VwaTE2KGEwLCBh
Mik7IFwKKysgICAgX2IxID0gX21tX3VucGFja2hpX2VwaTE2KGEwLCBhMik7IFwKKysgICAgX2Iy
ID0gX21tX3VucGFja2xvX2VwaTE2KGExLCBhMyk7IFwKKysgICAgX2IzID0gX21tX3VucGFja2hp
X2VwaTE2KGExLCBhMyk7IFwKKysgICAgX2I0ID0gX21tX3VucGFja2xvX2VwaTE2KGE0LCBhNik7
IFwKKysgICAgX2I1ID0gX21tX3VucGFja2hpX2VwaTE2KGE0LCBhNik7IFwKKysgICAgX2I2ID0g
X21tX3VucGFja2xvX2VwaTE2KGE1LCBhNyk7IFwKKysgICAgX2I3ID0gX21tX3VucGFja2hpX2Vw
aTE2KGE1LCBhNyk7IFwKKysgICAgXAorKyAgICBfYzAgPSBfbW1fdW5wYWNrbG9fZXBpMTYoX2Iw
LCBfYjIpOyBcCisrICAgIF9jMSA9IF9tbV91bnBhY2toaV9lcGkxNihfYjAsIF9iMik7IFwKKysg
ICAgX2MyID0gX21tX3VucGFja2xvX2VwaTE2KF9iMSwgX2IzKTsgXAorKyAgICBfYzMgPSBfbW1f
dW5wYWNraGlfZXBpMTYoX2IxLCBfYjMpOyBcCisrICAgIF9jNCA9IF9tbV91bnBhY2tsb19lcGkx
NihfYjQsIF9iNik7IFwKKysgICAgX2M1ID0gX21tX3VucGFja2hpX2VwaTE2KF9iNCwgX2I2KTsg
XAorKyAgICBfYzYgPSBfbW1fdW5wYWNrbG9fZXBpMTYoX2I1LCBfYjcpOyBcCisrICAgIF9jNyA9
IF9tbV91bnBhY2toaV9lcGkxNihfYjUsIF9iNyk7IFwKKysgICAgXAorKyAgICBhMCA9IF9tbV91
bnBhY2tsb19lcGk2NChfYzAsIF9jNCk7IFwKKysgICAgYTEgPSBfbW1fdW5wYWNraGlfZXBpNjQo
X2MwLCBfYzQpOyBcCisrICAgIGEyID0gX21tX3VucGFja2xvX2VwaTY0KF9jMSwgX2M1KTsgXAor
KyAgICBhMyA9IF9tbV91bnBhY2toaV9lcGk2NChfYzEsIF9jNSk7IFwKKysgICAgYTQgPSBfbW1f
dW5wYWNrbG9fZXBpNjQoX2MyLCBfYzYpOyBcCisrICAgIGE1ID0gX21tX3VucGFja2hpX2VwaTY0
KF9jMiwgX2M2KTsgXAorKyAgICBhNiA9IF9tbV91bnBhY2tsb19lcGk2NChfYzMsIF9jNyk7IFwK
KysgICAgYTcgPSBfbW1fdW5wYWNraGlfZXBpNjQoX2MzLCBfYzcpOyBcCisrfSB3aGlsZSAoMCkK
KysKKysjZGVmaW5lIFZFQ19MRChhKSAgICAgX21tX2xvYWR1X3NpMTI4KChjb25zdCBfX20xMjhp
KikoYSkpCisrI2RlZmluZSBWRUNfU1QoYSwgYikgIF9tbV9zdG9yZXVfc2kxMjgoKF9fbTEyOGkq
KShhKSwgYikKKysjZGVmaW5lIFZFQ19MRDgoYSkgICAgX21tX2xvYWRsX2VwaTY0KChjb25zdCBf
X20xMjhpKikoYSkpCisrI2RlZmluZSBWRUNfU1RMKGEsIGIpIF9tbV9zdG9yZWxfZXBpNjQoKF9f
bTEyOGkqKShhKSwgYikKKysjZGVmaW5lIFZFQ19TVEgoYSwgYikgX21tX3N0b3JlaF9wZCgoZG91
YmxlKikoYSksIF9tbV9jYXN0c2kxMjhfcGQoYikpOworKworKyNkZWZpbmUgVkVDX1NQTEFUMTYo
diwgaSkgX21tX3NodWZmbGVfZXBpOCh2LCBfbW1fc2V0MV9lcGkxNigoaSkgKiAyIHwgKChpKSAq
IDIgKyAxKSA8PCA4KSkKKysKKysjaWYgIWRlZmluZWQoX19pc2V0X18pIHx8IF9faXNldF9fIDwg
NQorKyNkZWZpbmUgTkVFRF9BTElHTjgKKysjZGVmaW5lIEFMSUdOOF9DT01NT04gdWludDY0X3Qg
c3JjX3NocjsgX19tNjQgc3JjX3RtcDAsIHNyY190bXAxOworKyNkZWZpbmUgQUxJR044X1ZBUlMo
c3JjKSBfX202NCAqc3JjIyNfcHRyLCBzcmMjI19uZXh0LCBzcmMjI19pbmRleDsKKysjZGVmaW5l
IEFMSUdOOF9TVEFSVChwdHIsIHNyYykgXAorKyAgc3JjX3NociA9IChpbnRwdHJfdCkocHRyIC0g
MSkgJiA3OyBcCisrICBzcmMjI19wdHIgPSAoX19tNjQqKSgoaW50cHRyX3QpKHB0ciAtIDEpICYg
LTgpOyBcCisrICBzcmMjI19uZXh0ID0gc3JjIyNfcHRyW3NyY19zaHIgPT0gN107IFwKKysgIHNy
YyMjX2luZGV4ID0gX21tX2FkZF9waTgoX21tX3NldDFfcGk4KHNyY19zaHIpLCBcCisrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9tbV9zZXRyX3BpOCgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4
KSk7CisrI2RlZmluZSBBTElHTjhfUkVBRDE2KHYwLCBzcmMsIGkpIFwKKysgIHNyY190bXAxID0g
c3JjIyNfcHRyW2kgKiAyICsgMV07IFwKKysgIHNyY190bXAwID0gX21tX3NodWZmbGUyX3BpOChz
cmMjI19uZXh0LCBzcmNfdG1wMSwgc3JjIyNfaW5kZXgpOyBcCisrICBzcmMjI19uZXh0ID0gc3Jj
IyNfcHRyW2kgKiAyICsgMl07IFwKKysgIHNyY190bXAxID0gX21tX3NodWZmbGUyX3BpOChzcmNf
dG1wMSwgc3JjIyNfbmV4dCwgc3JjIyNfaW5kZXgpOyBcCisrICB2MCA9IF9tbV9zZXRyX2VwaTY0
KHNyY190bXAwLCBzcmNfdG1wMSk7CisrI2VuZGlmCisrCisrI2VuZGlmIC8qIEFWVVRJTF9FMktf
VVRJTF9FMktfSCAqLworZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9mbG9hdF9kc3AuYyBiL2xpYmF2
dXRpbC9mbG9hdF9kc3AuYworaW5kZXggNmUyOGQ3MS4uNTI0MWMzZSAxMDA2NDQKKy0tLSBhL2xp
YmF2dXRpbC9mbG9hdF9kc3AuYworKysrIGIvbGliYXZ1dGlsL2Zsb2F0X2RzcC5jCitAQCAtMTU2
LDYgKzE1Niw4IEBAIGF2X2NvbGQgQVZGbG9hdERTUENvbnRleHQgKmF2cHJpdl9mbG9hdF9kc3Bf
YWxsb2MoaW50IGJpdF9leGFjdCkKKyAgICAgICAgIGZmX2Zsb2F0X2RzcF9pbml0X2FybShmZHNw
KTsKKyAgICAgaWYgKEFSQ0hfUFBDKQorICAgICAgICAgZmZfZmxvYXRfZHNwX2luaXRfcHBjKGZk
c3AsIGJpdF9leGFjdCk7CisrICAgIGlmIChBUkNIX0UySykKKysgICAgICAgIGZmX2Zsb2F0X2Rz
cF9pbml0X2UyayhmZHNwLCBiaXRfZXhhY3QpOworICAgICBpZiAoQVJDSF9YODYpCisgICAgICAg
ICBmZl9mbG9hdF9kc3BfaW5pdF94ODYoZmRzcCk7CisgICAgIGlmIChBUkNIX01JUFMpCitkaWZm
IC0tZ2l0IGEvbGliYXZ1dGlsL2Zsb2F0X2RzcC5oIGIvbGliYXZ1dGlsL2Zsb2F0X2RzcC5oCitp
bmRleCA5YzY2NDU5Li45N2Q5ZDc5IDEwMDY0NAorLS0tIGEvbGliYXZ1dGlsL2Zsb2F0X2RzcC5o
CisrKysgYi9saWJhdnV0aWwvZmxvYXRfZHNwLmgKK0BAIC0yMDUsNiArMjA1LDcgQEAgZmxvYXQg
YXZwcml2X3NjYWxhcnByb2R1Y3RfZmxvYXRfYyhjb25zdCBmbG9hdCAqdjEsIGNvbnN0IGZsb2F0
ICp2MiwgaW50IGxlbik7Cisgdm9pZCBmZl9mbG9hdF9kc3BfaW5pdF9hYXJjaDY0KEFWRmxvYXRE
U1BDb250ZXh0ICpmZHNwKTsKKyB2b2lkIGZmX2Zsb2F0X2RzcF9pbml0X2FybShBVkZsb2F0RFNQ
Q29udGV4dCAqZmRzcCk7Cisgdm9pZCBmZl9mbG9hdF9kc3BfaW5pdF9wcGMoQVZGbG9hdERTUENv
bnRleHQgKmZkc3AsIGludCBzdHJpY3QpOworK3ZvaWQgZmZfZmxvYXRfZHNwX2luaXRfZTJrKEFW
RmxvYXREU1BDb250ZXh0ICpmZHNwLCBpbnQgc3RyaWN0KTsKKyB2b2lkIGZmX2Zsb2F0X2RzcF9p
bml0X3g4NihBVkZsb2F0RFNQQ29udGV4dCAqZmRzcCk7Cisgdm9pZCBmZl9mbG9hdF9kc3BfaW5p
dF9taXBzKEFWRmxvYXREU1BDb250ZXh0ICpmZHNwKTsKKyAKK2RpZmYgLS1naXQgYS9saWJhdnV0
aWwvaW50cmVhZHdyaXRlLmggYi9saWJhdnV0aWwvaW50cmVhZHdyaXRlLmgKK2luZGV4IDRjODQx
M2EuLmI4YTY5OGUgMTAwNjQ0CistLS0gYS9saWJhdnV0aWwvaW50cmVhZHdyaXRlLmgKKysrKyBi
L2xpYmF2dXRpbC9pbnRyZWFkd3JpdGUuaAorQEAgLTcyLDYgKzcyLDggQEAgdHlwZWRlZiB1bmlv
biB7CisgIyAgIGluY2x1ZGUgIm1pcHMvaW50cmVhZHdyaXRlLmgiCisgI2VsaWYgQVJDSF9QUEMK
KyAjICAgaW5jbHVkZSAicHBjL2ludHJlYWR3cml0ZS5oIgorKyNlbGlmIEFSQ0hfRTJLCisrIyAg
IGluY2x1ZGUgImUyay9pbnRyZWFkd3JpdGUuaCIKKyAjZWxpZiBBUkNIX1RPTUkKKyAjICAgaW5j
bHVkZSAidG9taS9pbnRyZWFkd3JpdGUuaCIKKyAjZWxpZiBBUkNIX1g4NgorZGlmZiAtLWdpdCBh
L2xpYmF2dXRpbC90ZXN0cy9jcHUuYyBiL2xpYmF2dXRpbC90ZXN0cy9jcHUuYworaW5kZXggY2U0
NWI3MS4uMjFjMzBjZiAxMDA2NDQKKy0tLSBhL2xpYmF2dXRpbC90ZXN0cy9jcHUuYworKysrIGIv
bGliYXZ1dGlsL3Rlc3RzL2NwdS5jCitAQCAtNDksNiArNDksOCBAQCBzdGF0aWMgY29uc3Qgc3Ry
dWN0IHsKKyAgICAgeyBBVl9DUFVfRkxBR19TRVRFTkQsICAgICJzZXRlbmQiICAgICB9LAorICNl
bGlmIEFSQ0hfUFBDCisgICAgIHsgQVZfQ1BVX0ZMQUdfQUxUSVZFQywgICAiYWx0aXZlYyIgICAg
fSwKKysjZWxpZiBBUkNIX0UySworKyAgICB7IEFWX0NQVV9GTEFHX0UySywgICAgICAgImUyayIg
ICAgICAgIH0sCisgI2VsaWYgQVJDSF9YODYKKyAgICAgeyBBVl9DUFVfRkxBR19NTVgsICAgICAg
ICJtbXgiICAgICAgICB9LAorICAgICB7IEFWX0NQVV9GTEFHX01NWEVYVCwgICAgIm1teGV4dCIg
ICAgIH0sCitkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL3RpbWVyLmggYi9saWJhdnV0aWwvdGltZXIu
aAoraW5kZXggMGJiMzUzYy4uY2MwYzI4MiAxMDA2NDQKKy0tLSBhL2xpYmF2dXRpbC90aW1lci5o
CisrKysgYi9saWJhdnV0aWwvdGltZXIuaAorQEAgLTU0LDYgKzU0LDggQEAKKyAjICAgaW5jbHVk
ZSAiYXJtL3RpbWVyLmgiCisgI2VsaWYgQVJDSF9QUEMKKyAjICAgaW5jbHVkZSAicHBjL3RpbWVy
LmgiCisrI2VsaWYgQVJDSF9FMksKKysjICAgaW5jbHVkZSAiZTJrL3RpbWVyLmgiCisgI2VsaWYg
QVJDSF9YODYKKyAjICAgaW5jbHVkZSAieDg2L3RpbWVyLmgiCisgI2VuZGlmCitkaWZmIC0tZ2l0
IGEvbGlic3dyZXNhbXBsZS9hdWRpb2NvbnZlcnQuYyBiL2xpYnN3cmVzYW1wbGUvYXVkaW9jb252
ZXJ0LmMKK2luZGV4IGQyMWZjOGUuLjk2Y2Q3MDEgMTAwNjQ0CistLS0gYS9saWJzd3Jlc2FtcGxl
L2F1ZGlvY29udmVydC5jCisrKysgYi9saWJzd3Jlc2FtcGxlL2F1ZGlvY29udmVydC5jCitAQCAt
MTc5LDYgKzE3OSw3IEBAIEF1ZGlvQ29udmVydCAqc3dyaV9hdWRpb19jb252ZXJ0X2FsbG9jKGVu
dW0gQVZTYW1wbGVGb3JtYXQgb3V0X2ZtdCwKKyAgICAgaWYoSEFWRV9YODZBU00gJiYgSEFWRV9N
TVgpIHN3cmlfYXVkaW9fY29udmVydF9pbml0X3g4NihjdHgsIG91dF9mbXQsIGluX2ZtdCwgY2hh
bm5lbHMpOworICAgICBpZihBUkNIX0FSTSkgICAgICAgICAgICAgIHN3cmlfYXVkaW9fY29udmVy
dF9pbml0X2FybShjdHgsIG91dF9mbXQsIGluX2ZtdCwgY2hhbm5lbHMpOworICAgICBpZihBUkNI
X0FBUkNINjQpICAgICAgICAgIHN3cmlfYXVkaW9fY29udmVydF9pbml0X2FhcmNoNjQoY3R4LCBv
dXRfZm10LCBpbl9mbXQsIGNoYW5uZWxzKTsKKysgICAgaWYoSEFWRV9FMkspICAgICAgICAgICAg
ICBzd3JpX2F1ZGlvX2NvbnZlcnRfaW5pdF9lMmsoY3R4LCBvdXRfZm10LCBpbl9mbXQsIGNoYW5u
ZWxzKTsKKyAKKyAgICAgcmV0dXJuIGN0eDsKKyB9CitkaWZmIC0tZ2l0IGEvbGlic3dyZXNhbXBs
ZS9lMmsvTWFrZWZpbGUgYi9saWJzd3Jlc2FtcGxlL2Uyay9NYWtlZmlsZQorbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmE5MGFiOWUKKy0tLSAvZGV2L251bGwKKysrKyBiL2xp
YnN3cmVzYW1wbGUvZTJrL01ha2VmaWxlCitAQCAtMCwwICsxIEBACisrT0JKUyArPSBlMmsvYXVk
aW9fY29udmVydC5vCitkaWZmIC0tZ2l0IGEvbGlic3dyZXNhbXBsZS9lMmsvYXVkaW9fY29udmVy
dC5jIGIvbGlic3dyZXNhbXBsZS9lMmsvYXVkaW9fY29udmVydC5jCituZXcgZmlsZSBtb2RlIDEw
MDY0NAoraW5kZXggMDAwMDAwMC4uZDM1NzdjOAorLS0tIC9kZXYvbnVsbAorKysrIGIvbGlic3dy
ZXNhbXBsZS9lMmsvYXVkaW9fY29udmVydC5jCitAQCAtMCwwICsxLDExMCBAQAorKy8qCisrICog
Q29weXJpZ2h0IChDKSAyMDIxIElseWEgS3VyZHl1a292IDxqcGVncXNAZ21haWwuY29tPiBmb3Ig
QmFzZUFMVCwgTHRkCisrICoKKysgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisrICoK
KysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogRkZtcGVnIGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBl
ZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSBVU0EKKysgKi8KKysKKysjaW5jbHVkZSAiY29uZmlnLmgiCisrI2luY2x1ZGUgImxpYmF2dXRp
bC9jcHUuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Uyay9jcHUuaCIKKysjaW5jbHVkZSAibGli
YXZ1dGlsL2Uyay91dGlsX2Uyay5oIgorKworKyNpbmNsdWRlICJsaWJzd3Jlc2FtcGxlL3N3cmVz
YW1wbGVfaW50ZXJuYWwuaCIKKysjaW5jbHVkZSAibGlic3dyZXNhbXBsZS9hdWRpb2NvbnZlcnQu
aCIKKysKKysvLyBsZW5ndGggaXMgYWxpZ25lZCBieSAxNiBpbiAiYXVkaW9jb252ZXJ0LmMiCisr
Cisrc3RhdGljIHZvaWQgY29udl9mbHRfdG9fczE2X2Uyayh1aW50OF90ICoqX2RzdCwgY29uc3Qg
dWludDhfdCAqKl9zcmMsIGludCBsZW4pIHsKKysgICAgY29uc3QgZmxvYXQgKnNyYyA9IChjb25z
dCBmbG9hdCopX3NyY1swXTsKKysgICAgaW50MTZfdCAqZHN0ID0gKGludDE2X3QqKV9kc3RbMF07
CisrICAgIGludCBpID0gMDsKKysgICAgX19tMTI4IGYwLCBmMSwgYzEgPSBfbW1fc2V0MV9wcygx
IDw8IDE1KTsKKysgICAgX19tMTI4aSB2MCwgdjE7CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVw
IikKKysgICAgZm9yICg7IGkgKyA3IDwgbGVuOyBpICs9IDgpIHsKKysgICAgICAgIGYwID0gX21t
X2xvYWR1X3BzKHNyYyk7CisrICAgICAgICBmMSA9IF9tbV9sb2FkdV9wcyhzcmMgKyA0KTsKKysg
ICAgICAgIHYwID0gX21tX2N2dHBzX2VwaTMyKF9tbV9tdWxfcHMoZjAsIGMxKSk7CisrICAgICAg
ICB2MSA9IF9tbV9jdnRwc19lcGkzMihfbW1fbXVsX3BzKGYxLCBjMSkpOworKyAgICAgICAgdjAg
PSBfbW1fcGFja3NfZXBpMzIodjAsIHYxKTsKKysgICAgICAgIFZFQ19TVChkc3QsIHYwKTsKKysg
ICAgICAgIHNyYyArPSA4OyBkc3QgKz0gODsKKysgICAgfQorKy8qCisrICAgIFBSQUdNQV9FMkso
Iml2ZGVwIikKKysgICAgZm9yICg7IGkgPCBsZW47IGkrKykKKysgICAgICAgICpkc3QrKyA9IGF2
X2NsaXBfaW50MTYobHJpbnRmKCpzcmMrKyAqICgxIDw8IDE1KSkpOworKyovCisrfQorKworK3N0
YXRpYyB2b2lkIGNvbnZfZmx0cF90b19zMTZfMmNoX2Uyayh1aW50OF90ICoqX2RzdCwgY29uc3Qg
dWludDhfdCAqKl9zcmMsIGludCBsZW4pIHsKKysgICAgY29uc3QgZmxvYXQgKnNyYzAgPSAoY29u
c3QgZmxvYXQqKV9zcmNbMF07CisrICAgIGNvbnN0IGZsb2F0ICpzcmMxID0gKGNvbnN0IGZsb2F0
Kilfc3JjWzFdOworKyAgICBpbnQxNl90ICpkc3QgPSAoaW50MTZfdCopX2RzdFswXTsKKysgICAg
aW50IGkgPSAwOworKyAgICBfX20xMjggZjAsIGYxLCBjMSA9IF9tbV9zZXQxX3BzKDEgPDwgMTUp
OworKyAgICBfX20xMjhpIHYwLCB2MSwgdjIsIHYzOworKworKyAgICBQUkFHTUFfRTJLKCJpdmRl
cCIpCisrICAgIGZvciAoOyBpICsgNyA8IGxlbjsgaSArPSA4KSB7CisrICAgICAgICBmMCA9IF9t
bV9sb2FkdV9wcyhzcmMwKTsKKysgICAgICAgIGYxID0gX21tX2xvYWR1X3BzKHNyYzAgKyA0KTsK
KysgICAgICAgIHYwID0gX21tX2N2dHBzX2VwaTMyKF9tbV9tdWxfcHMoZjAsIGMxKSk7CisrICAg
ICAgICB2MSA9IF9tbV9jdnRwc19lcGkzMihfbW1fbXVsX3BzKGYxLCBjMSkpOworKyAgICAgICAg
djIgPSBfbW1fcGFja3NfZXBpMzIodjAsIHYxKTsKKysgICAgICAgIGYwID0gX21tX2xvYWR1X3Bz
KHNyYzEpOworKyAgICAgICAgZjEgPSBfbW1fbG9hZHVfcHMoc3JjMSArIDQpOworKyAgICAgICAg
djAgPSBfbW1fY3Z0cHNfZXBpMzIoX21tX211bF9wcyhmMCwgYzEpKTsKKysgICAgICAgIHYxID0g
X21tX2N2dHBzX2VwaTMyKF9tbV9tdWxfcHMoZjEsIGMxKSk7CisrICAgICAgICB2MyA9IF9tbV9w
YWNrc19lcGkzMih2MCwgdjEpOworKyAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpMTYodjIs
IHYzKTsKKysgICAgICAgIHYxID0gX21tX3VucGFja2hpX2VwaTE2KHYyLCB2Myk7CisrICAgICAg
ICBWRUNfU1QoZHN0LCB2MCk7CisrICAgICAgICBWRUNfU1QoZHN0ICsgOCwgdjEpOworKyAgICAg
ICAgc3JjMCArPSA4OyBzcmMxICs9IDg7IGRzdCArPSAxNjsKKysgICAgfQorKy8qCisrICAgIFBS
QUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9yICg7IGkgPCBsZW47IGkrKykgeworKyAgICAgICAg
ZHN0WzBdID0gYXZfY2xpcF9pbnQxNihscmludGYoKnNyYzArKyAqICgxIDw8IDE1KSkpOworKyAg
ICAgICAgZHN0WzFdID0gYXZfY2xpcF9pbnQxNihscmludGYoKnNyYzErKyAqICgxIDw8IDE1KSkp
OworKyAgICAgICAgZHN0ICs9IDI7CisrICAgIH0KKysqLworK30KKysKKythdl9jb2xkIHZvaWQg
c3dyaV9hdWRpb19jb252ZXJ0X2luaXRfZTJrKHN0cnVjdCBBdWRpb0NvbnZlcnQgKmFjLAorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBBVlNhbXBsZUZvcm1h
dCBvdXRfZm10LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51
bSBBVlNhbXBsZUZvcm1hdCBpbl9mbXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgY2hhbm5lbHMpeworKworKyAgICBpZiAoIUUyS19CQVNFKGF2X2dldF9j
cHVfZmxhZ3MoKSkpCisrICAgICAgICByZXR1cm47CisrCisrICAgIGFjLT5zaW1kX2YgPSBOVUxM
OworKworKyAgICBpZiAob3V0X2ZtdCA9PSBBVl9TQU1QTEVfRk1UX1MxNiAmJiBpbl9mbXQgPT0g
QVZfU0FNUExFX0ZNVF9GTFQgfHwKKysgICAgICAgIG91dF9mbXQgPT0gQVZfU0FNUExFX0ZNVF9T
MTZQICYmIGluX2ZtdCA9PSBBVl9TQU1QTEVfRk1UX0ZMVFApCisrICAgICAgICBhYy0+c2ltZF9m
ID0gY29udl9mbHRfdG9fczE2X2UyazsKKysKKysgICAgaWYgKG91dF9mbXQgPT0gQVZfU0FNUExF
X0ZNVF9TMTYgJiYgaW5fZm10ID09IEFWX1NBTVBMRV9GTVRfRkxUUCAmJiBjaGFubmVscyA9PSAy
KQorKyAgICAgICAgYWMtPnNpbWRfZiA9IGNvbnZfZmx0cF90b19zMTZfMmNoX2UyazsKKysKKysg
ICAgLy8gaWYoYWMtPnNpbWRfZikgYWMtPmluX3NpbWRfYWxpZ25fbWFzayA9IDc7CisrfQorKwor
ZGlmZiAtLWdpdCBhL2xpYnN3cmVzYW1wbGUvc3dyZXNhbXBsZV9pbnRlcm5hbC5oIGIvbGlic3dy
ZXNhbXBsZS9zd3Jlc2FtcGxlX2ludGVybmFsLmgKK2luZGV4IGYyZWE1YTIuLmI3ZTg1MDEgMTAw
NjQ0CistLS0gYS9saWJzd3Jlc2FtcGxlL3N3cmVzYW1wbGVfaW50ZXJuYWwuaAorKysrIGIvbGli
c3dyZXNhbXBsZS9zd3Jlc2FtcGxlX2ludGVybmFsLmgKK0BAIC0yMTgsNSArMjE4LDkgQEAgdm9p
ZCBzd3JpX2F1ZGlvX2NvbnZlcnRfaW5pdF94ODYoc3RydWN0IEF1ZGlvQ29udmVydCAqYWMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBBVlNhbXBsZUZvcm1hdCBvdXRf
Zm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gQVZTYW1wbGVGb3Jt
YXQgaW5fZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFubmVs
cyk7Cisrdm9pZCBzd3JpX2F1ZGlvX2NvbnZlcnRfaW5pdF9lMmsoc3RydWN0IEF1ZGlvQ29udmVy
dCAqYWMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBBVlNhbXBsZUZv
cm1hdCBvdXRfZm10LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gQVZT
YW1wbGVGb3JtYXQgaW5fZm10LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBjaGFubmVscyk7CisgCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9lMmsvTWFr
ZWZpbGUgYi9saWJzd3NjYWxlL2Uyay9NYWtlZmlsZQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu
ZGV4IDAwMDAwMDAuLmYzNTM3MWQKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYnN3c2NhbGUvZTJr
L01ha2VmaWxlCitAQCAtMCwwICsxLDMgQEAKKytPQkpTICs9IGUyay9zd3NjYWxlLm8gXAorKyAg
ICAgICAgZTJrL3l1djJyZ2IubyBcCisrICAgICAgICBlMmsveXV2Mnl1di5vCitkaWZmIC0tZ2l0
IGEvbGlic3dzY2FsZS9lMmsvc3dzY2FsZS5jIGIvbGlic3dzY2FsZS9lMmsvc3dzY2FsZS5jCitu
ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjRhODU3ZgorLS0tIC9kZXYvbnVs
bAorKysrIGIvbGlic3dzY2FsZS9lMmsvc3dzY2FsZS5jCitAQCAtMCwwICsxLDIwNDYgQEAKKysv
KgorKyAqIEVsYnJ1cy1lbmhhbmNlZCB5dXYyeXV2WAorKyAqCisrICogQ29weXJpZ2h0IChDKSAy
MDIxIElseWEgS3VyZHl1a292IDxqcGVncXNAZ21haWwuY29tPiBmb3IgQmFzZUFMVCwgTHRkCisr
ICogQ29weXJpZ2h0IChDKSAyMDA0IFJvbWFpbiBEb2xiZWF1IDxyb21haW5AZG9sYmVhdS5vcmc+
CisrICogYmFzZWQgb24gdGhlIGVxdWl2YWxlbnQgQyBjb2RlIGluIHN3c2NhbGUuYworKyAqCisr
ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorKyAqCisrICogRkZtcGVnIGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KysgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgKiBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKysgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisrICovCisrCisrI2lu
Y2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgImNvbmZpZy5oIgorKyNpbmNsdWRlICJs
aWJzd3NjYWxlL3N3c2NhbGUuaCIKKysjaW5jbHVkZSAibGlic3dzY2FsZS9zd3NjYWxlX2ludGVy
bmFsLmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVzLmgiCisrI2luY2x1ZGUgImxp
YmF2dXRpbC9jcHUuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2Uyay91dGlsX2Uyay5oIgorKwor
KyNpbmNsdWRlICJ5dXYycmdiLmgiCisrCisrc3RhdGljIHZvaWQgeXV2MnBsYW5lWF84X2Uyayhj
b25zdCBpbnQxNl90ICpmaWx0ZXIsIGludCBmaWx0ZXJTaXplLAorKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGludDE2X3QgKipzcmMsIHVpbnQ4X3QgKmRlc3QsIGludCBkc3RXLAor
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmRpdGhlciwgaW50IG9m
ZnNldCkKKyt7CisrICAgIGludCBpID0gMCwgajsKKysgICAgX19tNjQgaDA7CisrICAgIF9fbTEy
OGkgZDAsIGQxLCB6ZXJvdiA9IF9tbV9zZXR6ZXJvX3NpMTI4KCk7CisrICAgIGgwID0gKF9fbTY0
KV9fYnVpbHRpbl9lMmtfaW5zZmQoKih1aW50NjRfdCopZGl0aGVyLCAoKG9mZnNldCArIGkpICYg
NykgKiA4LCAwKTsKKysgICAgZDEgPSBfbW1fdW5wYWNrbG9fZXBpOChfbW1fbW92cGk2NF9lcGk2
NChoMCksIHplcm92KTsKKysgICAgZDAgPSBfbW1fdW5wYWNrbG9fZXBpMTYoZDEsIHplcm92KTsK
KysgICAgZDEgPSBfbW1fdW5wYWNraGlfZXBpMTYoZDEsIHplcm92KTsKKysgICAgZDAgPSBfbW1f
c2xsaV9lcGkzMihkMCwgMTIpOworKyAgICBkMSA9IF9tbV9zbGxpX2VwaTMyKGQxLCAxMik7Cisr
CisrICAgIGZvciAoOyBpIDwgZHN0VyAtIDE1OyBpICs9IDE2KSB7CisrICAgICAgICBfX20xMjhp
IHIwLCByMSwgcjIsIHIzLCB2MCwgdjEsIHYyLCB2MzsKKysKKysgICAgICAgIHIyID0gcjAgPSBk
MDsKKysgICAgICAgIHIzID0gcjEgPSBkMTsKKysgICAgICAgIGZvciAoaiA9IDA7IGogPCBmaWx0
ZXJTaXplOyBqKyspIHsKKysgICAgICAgICAgICB2MSA9IF9tbV9zZXQxX2VwaTE2KGZpbHRlcltq
XSk7CisrCisrICAgICAgICAgICAgdjAgPSBWRUNfTEQoc3JjW2pdICsgaSk7CisrICAgICAgICAg
ICAgdjIgPSBfbW1fbXVsbG9fZXBpMTYodjAsIHYxKTsKKysgICAgICAgICAgICB2MyA9IF9tbV9t
dWxoaV9lcGkxNih2MCwgdjEpOworKyAgICAgICAgICAgIHYwID0gX21tX3VucGFja2xvX2VwaTE2
KHYyLCB2Myk7CisrICAgICAgICAgICAgdjMgPSBfbW1fdW5wYWNraGlfZXBpMTYodjIsIHYzKTsK
KysgICAgICAgICAgICByMCA9IF9tbV9hZGRfZXBpMzIocjAsIHYwKTsKKysgICAgICAgICAgICBy
MSA9IF9tbV9hZGRfZXBpMzIocjEsIHYzKTsKKysKKysgICAgICAgICAgICB2MCA9IFZFQ19MRChz
cmNbal0gKyBpICsgOCk7CisrICAgICAgICAgICAgdjIgPSBfbW1fbXVsbG9fZXBpMTYodjAsIHYx
KTsKKysgICAgICAgICAgICB2MyA9IF9tbV9tdWxoaV9lcGkxNih2MCwgdjEpOworKyAgICAgICAg
ICAgIHYwID0gX21tX3VucGFja2xvX2VwaTE2KHYyLCB2Myk7CisrICAgICAgICAgICAgdjMgPSBf
bW1fdW5wYWNraGlfZXBpMTYodjIsIHYzKTsKKysgICAgICAgICAgICByMiA9IF9tbV9hZGRfZXBp
MzIocjIsIHYwKTsKKysgICAgICAgICAgICByMyA9IF9tbV9hZGRfZXBpMzIocjMsIHYzKTsKKysg
ICAgICAgIH0KKysgICAgICAgIHIwID0gX21tX3NyYWlfZXBpMzIocjAsIDE5KTsKKysgICAgICAg
IHIxID0gX21tX3NyYWlfZXBpMzIocjEsIDE5KTsKKysgICAgICAgIHIyID0gX21tX3NyYWlfZXBp
MzIocjIsIDE5KTsKKysgICAgICAgIHIzID0gX21tX3NyYWlfZXBpMzIocjMsIDE5KTsKKysgICAg
ICAgIHIwID0gX21tX3BhY2tzX2VwaTMyKHIwLCByMSk7CisrICAgICAgICByMiA9IF9tbV9wYWNr
c19lcGkzMihyMiwgcjMpOworKyAgICAgICAgcjAgPSBfbW1fcGFja3VzX2VwaTE2KHIwLCByMik7
CisrICAgICAgICBWRUNfU1QoZGVzdCArIGksIHIwKTsKKysgICAgfQorKworKyAgICBmb3IgKDsg
aSA8IGRzdFc7IGkrKykgeworKyAgICAgICAgaW50IHZhbCA9IGRpdGhlclsoaSArIG9mZnNldCkg
JiA3XSA8PCAxMjsKKysgICAgICAgIGZvciAoaiA9IDA7IGogPCBmaWx0ZXJTaXplOyBqKyspCisr
ICAgICAgICAgICAgdmFsICs9IHNyY1tqXVtpXSAqIGZpbHRlcltqXTsKKysgICAgICAgIGRlc3Rb
aV0gPSBhdl9jbGlwX3VpbnQ4KHZhbCA+PiAxOSk7CisrICAgIH0KKyt9CisrCisrc3RhdGljIHZv
aWQgaFNjYWxlX3JlYWxfZTJrKFN3c0NvbnRleHQgKmMsIGludDE2X3QgKmRzdCwgaW50IGRzdFcs
CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNyYywgY29uc3Qg
aW50MTZfdCAqZmlsdGVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQz
Ml90ICpmaWx0ZXJQb3MsIGludCBmaWx0ZXJTaXplKQorK3sKKysgICAgaW50IGk7CisrICAgIExP
QURfWkVSTzsKKysgICAgc3dpdGNoIChmaWx0ZXJTaXplKSB7CisrCisrICAgIGNhc2UgMToKKysg
ICAgICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkc3RX
OyBpKyspIHsKKysgICAgICAgICAgICBpbnQgdmFsLCBzcmNQb3MgPSBmaWx0ZXJQb3NbaV07Cisr
ICAgICAgICAgICAgdmFsID0gKGludClzcmNbc3JjUG9zXSAqIGZpbHRlcltmaWx0ZXJTaXplICog
aV07CisrICAgICAgICAgICAgZHN0W2ldID0gRkZNSU4odmFsID4+IDcsICgxIDw8IDE1KSAtIDEp
OworKyAgICAgICAgfQorKyAgICBicmVhazsKKysKKysgICAgY2FzZSAyOgorKyAgICAgICAgUFJB
R01BX0UySygiaXZkZXAiKQorKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGRzdFc7IGkrKykgewor
KyAgICAgICAgICAgIGludCB2YWwsIHNyY1BvcyA9IGZpbHRlclBvc1tpXTsKKysgICAgICAgICAg
ICB2YWwgPSAoaW50KXNyY1tzcmNQb3NdICogZmlsdGVyW2ZpbHRlclNpemUgKiBpXTsKKysgICAg
ICAgICAgICB2YWwgKz0gKGludClzcmNbc3JjUG9zICsgMV0gKiBmaWx0ZXJbZmlsdGVyU2l6ZSAq
IGkgKyAxXTsKKysgICAgICAgICAgICBkc3RbaV0gPSBGRk1JTih2YWwgPj4gNywgKDEgPDwgMTUp
IC0gMSk7CisrICAgICAgICB9CisrICAgIGJyZWFrOworKworKyAgICBjYXNlIDQ6IHsKKysgICAg
ICAgIF9fbTY0IHplcm92ID0gX21tX3NldHplcm9fc2k2NCgpOworKyAgICAgICAgUFJBR01BX0Uy
SygiaXZkZXAiKQorKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGRzdFc7IGkrKywgZmlsdGVyICs9
IGZpbHRlclNpemUpIHsKKysgICAgICAgICAgICBpbnQgdmFsOworKyAgICAgICAgICAgIF9fbTY0
IHYwLCB2MiwgYWNjdjsKKysgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmNpID0gc3JjICsg
ZmlsdGVyUG9zW2ldOworKworKyAgICAgICAgICAgIHYwID0gX21tX2N2dHNpMzJfc2k2NCgqKHVp
bnQzMl90KilzcmNpKTsKKysgICAgICAgICAgICB2MCA9IF9tbV91bnBhY2tsb19waTgodjAsIHpl
cm92KTsKKysgICAgICAgICAgICB2MiA9ICooX19tNjQqKWZpbHRlcjsKKysgICAgICAgICAgICBh
Y2N2ID0gX21tX21hZGRfcGkxNih2MCwgdjIpOworKyAgICAgICAgICAgIHZhbCA9IF9tbV9leHRy
YWN0X3BpMzIoYWNjdiwgMCkgKyBfbW1fZXh0cmFjdF9waTMyKGFjY3YsIDEpOworKyAgICAgICAg
ICAgIGRzdFtpXSA9IEZGTUlOKHZhbCA+PiA3LCAoMSA8PCAxNSkgLSAxKTsKKysgICAgICAgIH0K
KysgICAgfQorKyAgICBicmVhazsKKysKKysgICAgY2FzZSA4OgorKyAgICAgICAgUFJBR01BX0Uy
SygiaXZkZXAiKQorKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGRzdFc7IGkrKywgZmlsdGVyICs9
IGZpbHRlclNpemUpIHsKKysgICAgICAgICAgICBpbnQgdmFsLCBqID0gMDsKKysgICAgICAgICAg
ICBfX20xMjhpIHYwLCB2MiwgYWNjdjsKKysgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmNp
ID0gc3JjICsgZmlsdGVyUG9zW2ldOworKworKyAgICAgICAgICAgIHYwID0gVkVDX0xEOChzcmNp
ICsgaik7CisrICAgICAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpOCh2MCwgemVyb3YpOwor
KyAgICAgICAgICAgIHYyID0gVkVDX0xEKGZpbHRlciArIGopOworKyAgICAgICAgICAgIGFjY3Yg
PSBfbW1fbWFkZF9lcGkxNih2MCwgdjIpOworKyAgICAgICAgICAgIGFjY3YgPSBfbW1faGFkZF9l
cGkzMihhY2N2LCBhY2N2KTsKKysgICAgICAgICAgICB2YWwgPSBfbW1fZXh0cmFjdF9lcGkzMihh
Y2N2LCAwKSArIF9tbV9leHRyYWN0X2VwaTMyKGFjY3YsIDEpOworKyAgICAgICAgICAgIGRzdFtp
XSA9IEZGTUlOKHZhbCA+PiA3LCAoMSA8PCAxNSkgLSAxKTsKKysgICAgICAgIH0KKysgICAgYnJl
YWs7CisrCisrICAgIGNhc2UgMTY6CisrICAgICAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgZHN0VzsgaSsrLCBmaWx0ZXIgKz0gZmlsdGVyU2l6ZSkgewor
KyAgICAgICAgICAgIGludCB2YWwsIGogPSAwOworKyAgICAgICAgICAgIF9fbTEyOGkgdjAsIHYx
LCB2MiwgdjMsIGFjY3Y7CisrICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc3JjaSA9IHNyYyAr
IGZpbHRlclBvc1tpXTsKKysKKysgICAgICAgICAgICB2MSA9IFZFQ19MRChzcmNpICsgaik7Cisr
ICAgICAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpOCh2MSwgemVyb3YpOworKyAgICAgICAg
ICAgIHYxID0gX21tX3VucGFja2hpX2VwaTgodjEsIHplcm92KTsKKysgICAgICAgICAgICB2MiA9
IFZFQ19MRChmaWx0ZXIgKyBqKTsKKysgICAgICAgICAgICB2MyA9IFZFQ19MRChmaWx0ZXIgKyBq
ICsgOCk7CisrICAgICAgICAgICAgYWNjdiA9IF9tbV9tYWRkX2VwaTE2KHYwLCB2Mik7CisrICAg
ICAgICAgICAgYWNjdiA9IF9tbV9hZGRfZXBpMzIoYWNjdiwgX21tX21hZGRfZXBpMTYodjEsIHYz
KSk7CisrICAgICAgICAgICAgYWNjdiA9IF9tbV9oYWRkX2VwaTMyKGFjY3YsIGFjY3YpOworKyAg
ICAgICAgICAgIHZhbCA9IF9tbV9leHRyYWN0X2VwaTMyKGFjY3YsIDApICsgX21tX2V4dHJhY3Rf
ZXBpMzIoYWNjdiwgMSk7CisrICAgICAgICAgICAgZHN0W2ldID0gRkZNSU4odmFsID4+IDcsICgx
IDw8IDE1KSAtIDEpOworKyAgICAgICAgfQorKyAgICBicmVhazsKKysKKysgICAgZGVmYXVsdDoK
KysgICAgICAgIGF2X2Fzc2VydDAoKGZpbHRlclNpemUgJiA3KSA9PSAwKTsKKysKKysgICAgICAg
IGZvciAoaSA9IDA7IGkgPCBkc3RXOyBpKyssIGZpbHRlciArPSBmaWx0ZXJTaXplKSB7CisrICAg
ICAgICAgICAgaW50IHZhbCwgaiA9IDA7CisrICAgICAgICAgICAgX19tMTI4aSB2MCwgdjEsIHYy
LCB2MywgYWNjdiA9IHplcm92OworKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNyY2kgPSBz
cmMgKyBmaWx0ZXJQb3NbaV07CisrCisrICAgICAgICAgICAgZm9yICg7IGogPCBmaWx0ZXJTaXpl
IC0gMTU7IGogKz0gMTYpIHsKKysgICAgICAgICAgICAgICAgdjEgPSBWRUNfTEQoc3JjaSArIGop
OworKyAgICAgICAgICAgICAgICB2MCA9IF9tbV91bnBhY2tsb19lcGk4KHYxLCB6ZXJvdik7Cisr
ICAgICAgICAgICAgICAgIHYxID0gX21tX3VucGFja2hpX2VwaTgodjEsIHplcm92KTsKKysgICAg
ICAgICAgICAgICAgdjIgPSBWRUNfTEQoZmlsdGVyICsgaik7CisrICAgICAgICAgICAgICAgIHYz
ID0gVkVDX0xEKGZpbHRlciArIGogKyA4KTsKKysgICAgICAgICAgICAgICAgYWNjdiA9IF9tbV9h
ZGRfZXBpMzIoYWNjdiwgX21tX21hZGRfZXBpMTYodjAsIHYyKSk7CisrICAgICAgICAgICAgICAg
IGFjY3YgPSBfbW1fYWRkX2VwaTMyKGFjY3YsIF9tbV9tYWRkX2VwaTE2KHYxLCB2MykpOworKyAg
ICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAoZmlsdGVyU2l6ZSAmIDgpIHsKKysgICAgICAg
ICAgICAgICAgdjEgPSBWRUNfTEQ4KHNyY2kgKyBqKTsKKysgICAgICAgICAgICAgICAgdjAgPSBf
bW1fdW5wYWNrbG9fZXBpOCh2MSwgemVyb3YpOworKyAgICAgICAgICAgICAgICB2MiA9IFZFQ19M
RChmaWx0ZXIgKyBqKTsKKysgICAgICAgICAgICAgICAgYWNjdiA9IF9tbV9hZGRfZXBpMzIoYWNj
diwgX21tX21hZGRfZXBpMTYodjAsIHYyKSk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAg
IGFjY3YgPSBfbW1faGFkZF9lcGkzMihhY2N2LCBhY2N2KTsKKysgICAgICAgICAgICB2YWwgPSBf
bW1fZXh0cmFjdF9lcGkzMihhY2N2LCAwKSArIF9tbV9leHRyYWN0X2VwaTMyKGFjY3YsIDEpOwor
KyAgICAgICAgICAgIGRzdFtpXSA9IEZGTUlOKHZhbCA+PiA3LCAoMSA8PCAxNSkgLSAxKTsKKysg
ICAgICAgIH0KKysgICAgfQorK30KKysKKytzdGF0aWMgdm9pZCB5dXYycGxhbmUxX2Zsb2F0TEVf
ZTJrKGNvbnN0IGludDE2X3QgKl9zcmMsIHVpbnQ4X3QgKl9kZXN0LAorKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGRzdFcsIGNvbnN0IHVpbnQ4X3QgKmRpdGhlciwgaW50
IG9mZnNldCkKKyt7CisrICAgIGNvbnN0IGludDMyX3QgKnNyYyA9IChjb25zdCBpbnQzMl90Kilf
c3JjOworKyAgICBmbG9hdCAqZGVzdCA9IChmbG9hdCopX2Rlc3Q7CisrICAgIGludCBzaGlmdCA9
IDM7CisrICAgIGludCBhZGQgPSAoMSA8PCBzaGlmdCkgPj4gMTsKKysgICAgaW50IGNsaXAgPSAo
MSA8PCAxNikgLSAxOworKyAgICBmbG9hdCBmbXVsdCA9IDEuMGYgLyA2NTUzNS4wZjsKKysgICAg
TE9BRF9aRVJPOworKyAgICB2ZWNfdTMyIHZhZGQgPSBfbW1fc2V0MV9lcGkzMihhZGQpOworKyAg
ICB2ZWNfdTMyIHZsYXJnZXN0ID0gX21tX3NldDFfZXBpMzIoY2xpcCk7CisrICAgIHZlY19mIHZt
dWwgPSBfbW1fc2V0MV9wcyhmbXVsdCk7CisrICAgIHZlY191MzIgdjA7CisrICAgIHZlY19mIHYx
OworKyAgICBpbnQgaSA9IDA7CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9y
ICg7IGkgPCBkc3RXIC0gMzsgaSArPSA0KSB7CisrICAgICAgICB2MCA9IFZFQ19MRChzcmMgKyBp
KTsKKysgICAgICAgIHYwID0gX21tX2FkZF9lcGkzMih2MCwgdmFkZCk7CisrICAgICAgICB2MCA9
IF9tbV9zcmFpX2VwaTMyKHYwLCBzaGlmdCk7CisrICAgICAgICB2MCA9IF9tbV9tYXhfZXBpMzIo
djAsIHplcm92KTsKKysgICAgICAgIHYwID0gX21tX21pbl9lcGkzMih2MCwgdmxhcmdlc3QpOwor
KyAgICAgICAgdjEgPSBfbW1fbXVsX3BzKF9tbV9jdnRlcGkzMl9wcyh2MCksIHZtdWwpOworKyAg
ICAgICAgX21tX3N0b3JldV9wcyhkZXN0ICsgaSwgdjEpOworKyAgICB9CisrCisrICAgIFBSQUdN
QV9FMksoIml2ZGVwIikKKysgICAgZm9yICg7IGkgPCBkc3RXOyArK2kpeworKyAgICAgICAgaW50
IHZhbCA9IHNyY1tpXSArIGFkZDsKKysgICAgICAgIHZhbCA9IGF2X2NsaXBfdWludDE2KHZhbCA+
PiBzaGlmdCk7CisrICAgICAgICBkZXN0W2ldID0gZm11bHQgKiAoZmxvYXQpdmFsOworKyAgICB9
CisrfQorKworK3N0YXRpYyB2b2lkIHl1djJwbGFuZTFfZmxvYXRCRV9lMmsoY29uc3QgaW50MTZf
dCAqX3NyYywgdWludDhfdCAqX2Rlc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgZHN0VywgY29uc3QgdWludDhfdCAqZGl0aGVyLCBpbnQgb2Zmc2V0KQorK3sKKysg
ICAgY29uc3QgaW50MzJfdCAqc3JjID0gKGNvbnN0IGludDMyX3QqKV9zcmM7CisrICAgIHVpbnQz
Ml90ICpkZXN0ID0gKHVpbnQzMl90KilfZGVzdDsKKysgICAgaW50IHNoaWZ0ID0gMzsKKysgICAg
aW50IGFkZCA9ICgxIDw8IHNoaWZ0KSA+PiAxOworKyAgICBpbnQgY2xpcCA9ICgxIDw8IDE2KSAt
IDE7CisrICAgIGZsb2F0IGZtdWx0ID0gMS4wZiAvIDY1NTM1LjBmOworKyAgICBMT0FEX1pFUk87
CisrICAgIHZlY191MzIgdmFkZCA9IF9tbV9zZXQxX2VwaTMyKGFkZCk7CisrICAgIHZlY191MzIg
dmxhcmdlc3QgPSBfbW1fc2V0MV9lcGkzMihjbGlwKTsKKysgICAgdmVjX2Ygdm11bCA9IF9tbV9z
ZXQxX3BzKGZtdWx0KTsKKysgICAgdmVjX3U4IHZzd2FwID0gX21tX3NldHJfZXBpOCgzLCAyLCAx
LCAwLCA3LCA2LCA1LCA0LCAxMSwgMTAsIDksIDgsIDE1LCAxNCwgMTMsIDEyKTsKKysgICAgdmVj
X3UzMiB2MDsKKysgICAgdmVjX2YgdjE7CisrICAgIGludCBpID0gMDsKKysKKysgICAgUFJBR01B
X0UySygiaXZkZXAiKQorKyAgICBmb3IgKDsgaSA8IGRzdFcgLSAzOyBpICs9IDQpIHsKKysgICAg
ICAgIHYwID0gVkVDX0xEKHNyYyArIGkpOworKyAgICAgICAgdjAgPSBfbW1fYWRkX2VwaTMyKHYw
LCB2YWRkKTsKKysgICAgICAgIHYwID0gX21tX3NyYWlfZXBpMzIodjAsIHNoaWZ0KTsKKysgICAg
ICAgIHYwID0gX21tX21heF9lcGkzMih2MCwgemVyb3YpOworKyAgICAgICAgdjAgPSBfbW1fbWlu
X2VwaTMyKHYwLCB2bGFyZ2VzdCk7CisrICAgICAgICB2MSA9IF9tbV9tdWxfcHMoX21tX2N2dGVw
aTMyX3BzKHYwKSwgdm11bCk7CisrICAgICAgICB2MCA9IF9tbV9zaHVmZmxlX2VwaTgoX21tX2Nh
c3Rwc19zaTEyOCh2MSksIHZzd2FwKTsKKysgICAgICAgIFZFQ19TVChkZXN0ICsgaSwgdjApOwor
KyAgICB9CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9yICg7IGkgPCBkc3RX
OyBpKyspIHsKKysgICAgICAgIGludCB2YWwgPSBzcmNbaV0gKyBhZGQ7CisrICAgICAgICB2YWwg
PSBhdl9jbGlwX3VpbnQxNih2YWwgPj4gc2hpZnQpOworKyAgICAgICAgZGVzdFtpXSA9IGF2X2Jz
d2FwMzIoYXZfZmxvYXQyaW50KGZtdWx0ICogKGZsb2F0KXZhbCkpOworKyAgICB9CisrfQorKwor
K3N0YXRpYyB2b2lkIHl1djJwbGFuZTFfOF9lMmsoY29uc3QgaW50MTZfdCAqc3JjLCB1aW50OF90
ICpkZXN0LCBpbnQgZHN0VywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKmRpdGhlciwgaW50IG9mZnNldCkKKyt7CisrICAgIGludCBpID0gMDsKKysgICAgX19t
MTI4aSB2MCwgdjEsIGRpdGhlcnY7CisrICAgIExPQURfWkVSTzsKKysgICAgX19tNjQgaDA7Cisr
ICAgIGgwID0gKF9fbTY0KV9fYnVpbHRpbl9lMmtfaW5zZmQoKih1aW50NjRfdCopZGl0aGVyLCAo
KG9mZnNldCArIGkpICYgNykgKiA4LCAwKTsKKysgICAgZGl0aGVydiA9IF9tbV91bnBhY2tsb19l
cGk4KF9tbV9tb3ZwaTY0X2VwaTY0KGgwKSwgemVyb3YpOworKworKyAgICBQUkFHTUFfRTJLKCJp
dmRlcCIpCisrICAgIGZvciAoOyBpIDwgZHN0VyAtIDE1OyBpICs9IDE2KSB7CisrICAgICAgICB2
MCA9IFZFQ19MRChzcmMgKyBpKTsKKysgICAgICAgIHYxID0gVkVDX0xEKHNyYyArIGkgKyA4KTsK
KysgICAgICAgIHYwID0gX21tX2FkZHNfZXBpMTYodjAsIGRpdGhlcnYpOworKyAgICAgICAgdjEg
PSBfbW1fYWRkc19lcGkxNih2MSwgZGl0aGVydik7CisrICAgICAgICB2MCA9IF9tbV9zcmFpX2Vw
aTE2KHYwLCA3KTsKKysgICAgICAgIHYxID0gX21tX3NyYWlfZXBpMTYodjEsIDcpOworKyAgICAg
ICAgdjAgPSBfbW1fcGFja3VzX2VwaTE2KHYwLCB2MSk7CisrICAgICAgICBWRUNfU1QoZGVzdCAr
IGksIHYwKTsKKysgICAgfQorKworKyAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAgIGZvciAo
OyBpIDwgZHN0VzsgaSsrKSB7CisrICAgICAgICBpbnQgdmFsID0gKHNyY1tpXSArIGRpdGhlclso
aSArIG9mZnNldCkgJiA3XSkgPj4gNzsKKysgICAgICAgIGRlc3RbaV0gPSBhdl9jbGlwX3VpbnQ4
KHZhbCk7CisrICAgIH0KKyt9CisrCisrI2RlZmluZSBvdXRwdXRfcGl4ZWwocG9zLCB2YWwpIFwK
KysgICAgaWYgKGJpZ19lbmRpYW4pIHsgXAorKyAgICAgICAgQVZfV0IxNihwb3MsIGF2X2NsaXBf
dWludHAyKHZhbCA+PiBzaGlmdCwgb3V0cHV0X2JpdHMpKTsgXAorKyAgICB9IGVsc2UgeyBcCisr
ICAgICAgICBBVl9XTDE2KHBvcywgYXZfY2xpcF91aW50cDIodmFsID4+IHNoaWZ0LCBvdXRwdXRf
Yml0cykpOyBcCisrICAgIH0KKysKKytzdGF0aWMgYXZfYWx3YXlzX2lubGluZQorK3ZvaWQgeXV2
MnBsYW5lMV8xMF9lMmsoY29uc3QgaW50MTZfdCAqc3JjLCB1aW50MTZfdCAqZGVzdCwgaW50IGRz
dFcsCisrICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgYmlnX2VuZGlhbiwgY29uc3Qg
aW50IG91dHB1dF9iaXRzKQorK3sKKysgICAgaW50IHNoaWZ0ID0gMTUgLSBvdXRwdXRfYml0czsK
KysgICAgaW50IGFkZCA9IDEgPDwgKHNoaWZ0IC0gMSk7CisrICAgIGludCBjbGlwID0gKDEgPDwg
b3V0cHV0X2JpdHMpIC0gMTsKKysgICAgdmVjX3UxNiB2YWRkID0gX21tX3NldDFfZXBpMTYoYWRk
KTsKKysgICAgdmVjX3UxNiB2bGFyZ2VzdCA9IF9tbV9zZXQxX2VwaTE2KGNsaXApOworKyAgICB2
ZWNfdTggdnN3YXAgPSBfbW1fc2V0cl9lcGk4KDEsIDAsIDMsIDIsIDUsIDQsIDcsIDYsIDksIDgs
IDExLCAxMCwgMTMsIDEyLCAxNSwgMTQpOworKyAgICBMT0FEX1pFUk87CisrICAgIF9fbTEyOGkg
djA7CisrICAgIGludCBpID0gMDsKKysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAgICBm
b3IgKDsgaSA8IGRzdFcgLSA3OyBpICs9IDgpIHsKKysgICAgICAgIHYwID0gVkVDX0xEKHNyYyAr
IGkpOworKyAgICAgICAgdjAgPSBfbW1fYWRkc19lcGkxNih2MCwgdmFkZCk7CisrICAgICAgICB2
MCA9IF9tbV9zcmFpX2VwaTE2KHYwLCBzaGlmdCk7CisrICAgICAgICB2MCA9IF9tbV9tYXhfZXBp
MTYodjAsIHplcm92KTsKKysgICAgICAgIHYwID0gX21tX21pbl9lcHUxNih2MCwgdmxhcmdlc3Qp
OworKyAgICAgICAgaWYgKGJpZ19lbmRpYW4pIHsKKysgICAgICAgICAgICB2MCA9IF9tbV9zaHVm
ZmxlX2VwaTgodjAsIHZzd2FwKTsKKysgICAgICAgIH0KKysgICAgICAgIFZFQ19TVChkZXN0ICsg
aSwgdjApOworKyAgICB9CisrCisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9yICg7
IGkgPCBkc3RXOyBpKyspIHsKKysgICAgICAgIGludCB2YWwgPSBzcmNbaV0gKyBhZGQ7CisrICAg
ICAgICBvdXRwdXRfcGl4ZWwoJmRlc3RbaV0sIHZhbCk7CisrICAgIH0KKyt9CisrCisrc3RhdGlj
IGF2X2Fsd2F5c19pbmxpbmUKKyt2b2lkIHl1djJwbGFuZVhfMTBfZTJrKGNvbnN0IGludDE2X3Qg
KmZpbHRlciwgaW50IGZpbHRlclNpemUsCisrICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQxNl90ICoqc3JjLCB1aW50MTZfdCAqZGVzdCwgaW50IGRzdFcsCisrICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgYmlnX2VuZGlhbiwgaW50IG91dHB1dF9iaXRzKQorK3sKKysgICAgaW50IHNo
aWZ0ID0gMTEgKyAxNiAtIG91dHB1dF9iaXRzOworKyAgICBpbnQgYWRkID0gMSA8PCAoc2hpZnQg
LSAxKTsKKysgICAgaW50IGNsaXAgPSAoMSA8PCBvdXRwdXRfYml0cykgLSAxOworKyAgICB2ZWNf
dTE2IHZhZGQgPSBfbW1fc2V0MV9lcGkzMihhZGQpOworKyAgICB2ZWNfdTE2IHZsYXJnZXN0ID0g
X21tX3NldDFfZXBpMTYoY2xpcCk7CisrICAgIHZlY191OCB2c3dhcCA9IF9tbV9zZXRyX2VwaTgo
MSwgMCwgMywgMiwgNSwgNCwgNywgNiwgOSwgOCwgMTEsIDEwLCAxMywgMTIsIDE1LCAxNCk7Cisr
ICAgIF9fbTEyOGkgdjAsIHYxLCB2MiwgdjMsIHY0LCB2NTsKKysgICAgaW50IGkgPSAwLCBqOwor
KworKyAgICBmb3IgKDsgaSA8IGRzdFcgLSA3OyBpICs9IDgpIHsKKysgICAgICAgIHY0ID0gdjUg
PSB2YWRkOworKyAgICAgICAgZm9yIChqID0gMDsgaiA8IGZpbHRlclNpemU7IGorKykgeworKyAg
ICAgICAgICAgIHYwID0gVkVDX0xEKHNyY1tqXSArIGkpOworKyAgICAgICAgICAgIHYxID0gX21t
X3NldDFfZXBpMTYoZmlsdGVyW2pdKTsKKysgICAgICAgICAgICB2MiA9IF9tbV9tdWxsb19lcGkx
Nih2MCwgdjEpOworKyAgICAgICAgICAgIHYzID0gX21tX211bGhpX2VwaTE2KHYwLCB2MSk7Cisr
ICAgICAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpMTYodjIsIHYzKTsKKysgICAgICAgICAg
ICB2MSA9IF9tbV91bnBhY2toaV9lcGkxNih2MiwgdjMpOworKyAgICAgICAgICAgIHY0ID0gX21t
X2FkZF9lcGkzMih2NCwgdjApOworKyAgICAgICAgICAgIHY1ID0gX21tX2FkZF9lcGkzMih2NSwg
djEpOworKyAgICAgICAgfQorKyAgICAgICAgdjQgPSBfbW1fc3JhaV9lcGkzMih2NCwgc2hpZnQp
OworKyAgICAgICAgdjUgPSBfbW1fc3JhaV9lcGkzMih2NSwgc2hpZnQpOworKyAgICAgICAgdjAg
PSBfbW1fcGFja3VzX2VwaTMyKHY0LCB2NSk7CisrICAgICAgICB2MCA9IF9tbV9taW5fZXB1MTYo
djAsIHZsYXJnZXN0KTsKKysgICAgICAgIGlmIChiaWdfZW5kaWFuKSB7CisrICAgICAgICAgICAg
djAgPSBfbW1fc2h1ZmZsZV9lcGk4KHYwLCB2c3dhcCk7CisrICAgICAgICB9CisrICAgICAgICBW
RUNfU1QoZGVzdCArIGksIHYwKTsKKysgICAgfQorKworKyAgICBmb3IgKDsgaSA8IGRzdFc7IGkr
KykgeworKyAgICAgICAgaW50IHZhbCA9IDEgPDwgKHNoaWZ0IC0gMSk7CisrICAgICAgICBmb3Ig
KGogPSAwOyBqIDwgZmlsdGVyU2l6ZTsgaisrKQorKyAgICAgICAgICAgIHZhbCArPSBzcmNbal1b
aV0gKiBmaWx0ZXJbal07CisrICAgICAgICBvdXRwdXRfcGl4ZWwoJmRlc3RbaV0sIHZhbCk7Cisr
ICAgIH0KKyt9CisrCisrI3VuZGVmIG91dHB1dF9waXhlbAorKworKyNkZWZpbmUgb3V0cHV0X3Bp
eGVsKHBvcywgdmFsLCBiaWFzLCBzaWduZWRuZXNzKSBcCisrICAgIGlmIChiaWdfZW5kaWFuKSB7
IFwKKysgICAgICAgIEFWX1dCMTYocG9zLCBiaWFzICsgYXZfY2xpcF8jI3NpZ25lZG5lc3MjIzE2
KHZhbCA+PiBzaGlmdCkpOyBcCisrICAgIH0gZWxzZSB7IFwKKysgICAgICAgIEFWX1dMMTYocG9z
LCBiaWFzICsgYXZfY2xpcF8jI3NpZ25lZG5lc3MjIzE2KHZhbCA+PiBzaGlmdCkpOyBcCisrICAg
IH0KKysKKytzdGF0aWMgYXZfYWx3YXlzX2lubGluZQorK3ZvaWQgeXV2MnBsYW5lMV8xNl9lMmso
Y29uc3QgaW50MzJfdCAqc3JjLCB1aW50MTZfdCAqZGVzdCwgaW50IGRzdFcsCisrICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbnQgYmlnX2VuZGlhbiwgaW50IG91dHB1dF9iaXRzKQorK3sK
KysgICAgaW50IHNoaWZ0ID0gMzsKKysgICAgaW50IGFkZCA9IDEgPDwgKHNoaWZ0IC0gMSk7Cisr
ICAgIHZlY191MzIgdmFkZCA9IF9tbV9zZXQxX2VwaTMyKGFkZCk7CisrICAgIHZlY191OCB2c3dh
cCA9IF9tbV9zZXRyX2VwaTgoMSwgMCwgMywgMiwgNSwgNCwgNywgNiwgOSwgOCwgMTEsIDEwLCAx
MywgMTIsIDE1LCAxNCk7CisrICAgIF9fbTEyOGkgdjAsIHYxOworKyAgICBpbnQgaSA9IDA7Cisr
CisrICAgIFBSQUdNQV9FMksoIml2ZGVwIikKKysgICAgZm9yICg7IGkgPCBkc3RXIC0gNzsgaSAr
PSA4KSB7CisrICAgICAgICB2MCA9IFZFQ19MRChzcmMgKyBpKTsKKysgICAgICAgIHYxID0gVkVD
X0xEKHNyYyArIGkgKyA0KTsKKysgICAgICAgIHYwID0gX21tX2FkZF9lcGkzMih2MCwgdmFkZCk7
CisrICAgICAgICB2MSA9IF9tbV9hZGRfZXBpMzIodjEsIHZhZGQpOworKyAgICAgICAgdjAgPSBf
bW1fc3JhaV9lcGkzMih2MCwgc2hpZnQpOworKyAgICAgICAgdjEgPSBfbW1fc3JhaV9lcGkzMih2
MSwgc2hpZnQpOworKyAgICAgICAgdjAgPSBfbW1fcGFja3VzX2VwaTMyKHYwLCB2MSk7CisrICAg
ICAgICBpZiAoYmlnX2VuZGlhbikgeworKyAgICAgICAgICAgIHYwID0gX21tX3NodWZmbGVfZXBp
OCh2MCwgdnN3YXApOworKyAgICAgICAgfQorKyAgICAgICAgVkVDX1NUKGRlc3QgKyBpLCB2MCk7
CisrICAgIH0KKysKKysgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAgICBmb3IgKDsgaSA8IGRz
dFc7IGkrKykgeworKyAgICAgICAgaW50IHZhbCA9IHNyY1tpXSArIGFkZDsKKysgICAgICAgIG91
dHB1dF9waXhlbCgmZGVzdFtpXSwgdmFsLCAwLCB1aW50KTsKKysgICAgfQorK30KKysKKysvKiBy
YW5nZSBvZiB2YWwgaXMgWzAsMHg3RkZGRkZGRl0sIHNvIDMxIGJpdHMsIGJ1dCB3aXRoIGxhbmN6
b3Mvc3BsaW5lCisrICogZmlsdGVycyAob3IgYW55dGhpbmcgd2l0aCBuZWdhdGl2ZSBjb2VmZnMs
IHRoZSByYW5nZSBjYW4gYmUgc2xpZ2h0bHkKKysgKiB3aWRlciBpbiBib3RoIGRpcmVjdGlvbnMu
IFRvIGFjY291bnQgZm9yIHRoaXMgb3ZlcmZsb3csIHdlIHN1YnRyYWN0CisrICogYSBjb25zdGFu
dCBzbyBpdCBhbHdheXMgZml0cyBpbiB0aGUgc2lnbmVkIHJhbmdlIChhc3N1bWluZyBhCisrICog
cmVhc29uYWJsZSBmaWx0ZXJTaXplKSwgYW5kIHJlLWFkZCB0aGF0IGF0IHRoZSBlbmQuICovCisr
Cisrc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUKKyt2b2lkIHl1djJwbGFuZVhfMTZfZTJrKGNvbnN0
IGludDE2X3QgKmZpbHRlciwgaW50IGZpbHRlclNpemUsCisrICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBpbnQzMl90ICoqc3JjLCB1aW50MTZfdCAqZGVzdCwgaW50IGRzdFcsCisrICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgYmlnX2VuZGlhbiwgaW50IG91dHB1dF9iaXRzKQorK3sKKysg
ICAgaW50IHNoaWZ0ID0gMTUsIGJpYXMgPSAweDgwMDA7CisrICAgIGludCBhZGQgPSAoMSA8PCAo
c2hpZnQgLSAxKSkgLSAweDQwMDAwMDAwOworKyAgICB2ZWNfdTMyIHZhZGQgPSBfbW1fc2V0MV9l
cGkzMihhZGQpOworKyAgICB2ZWNfdTE2IHZiaWFzID0gX21tX3NldDFfZXBpMTYoYmlhcyk7Cisr
ICAgIHZlY191OCB2c3dhcCA9IF9tbV9zZXRyX2VwaTgoMSwgMCwgMywgMiwgNSwgNCwgNywgNiwg
OSwgOCwgMTEsIDEwLCAxMywgMTIsIDE1LCAxNCk7CisrICAgIF9fbTEyOGkgdjAsIHYxLCB2Miwg
djQsIHY1OworKyAgICBpbnQgaSA9IDAsIGo7CisrCisrICAgIGZvciAoOyBpIDwgZHN0VyAtIDc7
IGkgKz0gOCkgeworKyAgICAgICAgdjQgPSB2NSA9IHZhZGQ7CisrICAgICAgICBmb3IgKGogPSAw
OyBqIDwgZmlsdGVyU2l6ZTsgaisrKSB7CisrICAgICAgICAgICAgdjAgPSBWRUNfTEQoc3JjW2pd
ICsgaSk7CisrICAgICAgICAgICAgdjEgPSBWRUNfTEQoc3JjW2pdICsgaSArIDQpOworKyAgICAg
ICAgICAgIHYyID0gX21tX3NldDFfZXBpMzIoZmlsdGVyW2pdKTsKKysgICAgICAgICAgICB2NCA9
IF9tbV9hZGRfZXBpMzIodjQsIF9tbV9tdWxsb19lcGkzMih2MCwgdjIpKTsKKysgICAgICAgICAg
ICB2NSA9IF9tbV9hZGRfZXBpMzIodjUsIF9tbV9tdWxsb19lcGkzMih2MSwgdjIpKTsKKysgICAg
ICAgIH0KKysgICAgICAgIHY0ID0gX21tX3NyYWlfZXBpMzIodjQsIHNoaWZ0KTsKKysgICAgICAg
IHY1ID0gX21tX3NyYWlfZXBpMzIodjUsIHNoaWZ0KTsKKysgICAgICAgIHYwID0gX21tX3BhY2tz
X2VwaTMyKHY0LCB2NSk7CisrICAgICAgICB2MCA9IF9tbV9hZGRfZXBpMTYodjAsIHZiaWFzKTsK
KysgICAgICAgIGlmIChiaWdfZW5kaWFuKSB7CisrICAgICAgICAgICAgdjAgPSBfbW1fc2h1ZmZs
ZV9lcGk4KHYwLCB2c3dhcCk7CisrICAgICAgICB9CisrICAgICAgICBWRUNfU1QoZGVzdCArIGks
IHYwKTsKKysgICAgfQorKworKyAgICBmb3IgKDsgaSA8IGRzdFc7IGkrKykgeworKyAgICAgICAg
aW50IHZhbCA9IGFkZDsKKysgICAgICAgIGZvciAoaiA9IDA7IGogPCBmaWx0ZXJTaXplOyBqKysp
CisrICAgICAgICAgICAgdmFsICs9IHNyY1tqXVtpXSAqICh1bnNpZ25lZClmaWx0ZXJbal07Cisr
ICAgICAgICBvdXRwdXRfcGl4ZWwoJmRlc3RbaV0sIHZhbCwgYmlhcywgaW50KTsKKysgICAgfQor
K30KKysKKysjdW5kZWYgb3V0cHV0X3BpeGVsCisrCisrI2RlZmluZSB5dXYyTkJQUyhiaXRzLCBC
RV9MRSwgaXNfYmUsIHRlbXBsYXRlX3NpemUsIHR5cGVYX3QpIFwKKytzdGF0aWMgdm9pZCB5dXYy
cGxhbmUxXyMjYml0cyMjQkVfTEUjI19lMmsoY29uc3QgaW50MTZfdCAqc3JjLCBcCisrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0LCBpbnQgZHN0VywgXAorKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZGl0aGVyLCBpbnQgb2Zmc2V0
KSBcCisreyBcCisrICAgIHl1djJwbGFuZTFfIyN0ZW1wbGF0ZV9zaXplIyNfZTJrKChjb25zdCB0
eXBlWF90ICopIHNyYywgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAodWludDE2X3QgKikg
ZGVzdCwgZHN0VywgaXNfYmUsIGJpdHMpOyBcCisrfSBcCisrc3RhdGljIHZvaWQgeXV2MnBsYW5l
WF8jI2JpdHMjI0JFX0xFIyNfZTJrKGNvbnN0IGludDE2X3QgKmZpbHRlciwgaW50IGZpbHRlclNp
emUsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQxNl90ICoqc3Jj
LCB1aW50OF90ICpkZXN0LCBpbnQgZHN0VywgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKmRpdGhlciwgaW50IG9mZnNldClcCisreyBcCisrICAgIHl1djJw
bGFuZVhfIyN0ZW1wbGF0ZV9zaXplIyNfZTJrKGZpbHRlciwgXAorKyAgICAgICAgICAgICAgICAg
ICAgICAgICBmaWx0ZXJTaXplLCAoY29uc3QgdHlwZVhfdCAqKikgc3JjLCBcCisrICAgICAgICAg
ICAgICAgICAgICAgICAgICh1aW50MTZfdCAqKSBkZXN0LCBkc3RXLCBpc19iZSwgYml0cyk7IFwK
Kyt9CisrCisreXV2Mk5CUFMoIDksIEJFLCAxLCAxMCwgaW50MTZfdCkKKyt5dXYyTkJQUyggOSwg
TEUsIDAsIDEwLCBpbnQxNl90KQorK3l1djJOQlBTKDEwLCBCRSwgMSwgMTAsIGludDE2X3QpCisr
eXV2Mk5CUFMoMTAsIExFLCAwLCAxMCwgaW50MTZfdCkKKyt5dXYyTkJQUygxMiwgQkUsIDEsIDEw
LCBpbnQxNl90KQorK3l1djJOQlBTKDEyLCBMRSwgMCwgMTAsIGludDE2X3QpCisreXV2Mk5CUFMo
MTQsIEJFLCAxLCAxMCwgaW50MTZfdCkKKyt5dXYyTkJQUygxNCwgTEUsIDAsIDEwLCBpbnQxNl90
KQorK3l1djJOQlBTKDE2LCBCRSwgMSwgMTYsIGludDMyX3QpCisreXV2Mk5CUFMoMTYsIExFLCAw
LCAxNiwgaW50MzJfdCkKKysKKysjZGVmaW5lIElOSVRfUkdCKFIsIEIpIFwKKysgICAgX19tNjQg
cmdiX2luZGV4MCA9IF9tbV9zZXRyX3BpOCgwLCAxLCAzLCA0LCA1LCA3LCA4LCA5KTsgXAorKyAg
ICBfX202NCByZ2JfaW5kZXgxID0gX21tX3NldHJfcGk4KDMsIDQsIDUsIDcsIDgsIDksIDExLCAx
Mik7IFwKKysgICAgX19tNjQgcmdiX2luZGV4MiA9IF9tbV9zZXRyX3BpOCg1LCA3LCA4LCA5LCAx
MSwgMTIsIDEzLCAxNSk7CisrCisrI2RlZmluZSBJTklUX1JHQlgoUiwgQikgXAorKyAgICBfX20x
MjhpIEFfaCA9IF9tbV9zZXQxX2VwaTE2KC0yNTYpOworKworKyNkZWZpbmUgSU5JVF9YUkdCKFIs
IEIpIFwKKysgICAgX19tMTI4aSBBX2wgPSBfbW1fc2V0MV9lcGkxNigyNTUpOworKworKyNkZWZp
bmUgV1JJVEVfUkdCKFIsIEIpIFwKKysgICAgdjAgPSBfbW1fc3JhaV9lcGkzMihSIyNfbCwgMjIp
OyBcCisrICAgIHYxID0gX21tX3NyYWlfZXBpMzIoUiMjX2gsIDIyKTsgXAorKyAgICB2NCA9IF9t
bV9zcmFpX2VwaTMyKEdfbCwgMjIgLSAxNik7IFwKKysgICAgdjUgPSBfbW1fc3JhaV9lcGkzMihH
X2gsIDIyIC0gMTYpOyBcCisrICAgIHYyID0gX21tX3NyYWlfZXBpMzIoQiMjX2wsIDIyIC0gOCk7
IFwKKysgICAgdjMgPSBfbW1fc3JhaV9lcGkzMihCIyNfaCwgMjIgLSA4KTsgXAorKyAgICB2MCA9
IF9tbV9ibGVuZF9lcGkxNih2MCwgdjQsIDB4YWEpOyBcCisrICAgIHYxID0gX21tX2JsZW5kX2Vw
aTE2KHYxLCB2NSwgMHhhYSk7IFwKKysgICAgdjIgPSBfbW1fcGFja3VzX2VwaTMyKHYyLCB2Myk7
IFwKKysgICAgdjAgPSBfbW1fcGFja3VzX2VwaTE2KHYwLCB2MSk7IFwKKysgICAgdjEgPSBfbW1f
dW5wYWNrbG9fZXBpMTYodjAsIHYyKTsgXAorKyAgICB2MiA9IF9tbV91bnBhY2toaV9lcGkxNih2
MCwgdjIpOyBcCisrICAgIHsgXAorKyAgICAgICAgdW5pb24geyBfX20xMjhpIHY7IF9fbTY0IGRb
Ml07IH0gYSA9IHsgdjEgfSwgYiA9IHsgdjIgfTsgXAorKyAgICAgICAgX19tNjQgKnAgPSAoX19t
NjQqKWRlc3Q7IFwKKysgICAgICAgIHBbMF0gPSBfbW1fc2h1ZmZsZTJfcGk4KGEuZFswXSwgYS5k
WzFdLCByZ2JfaW5kZXgwKTsgXAorKyAgICAgICAgcFsxXSA9IF9tbV9zaHVmZmxlMl9waTgoYS5k
WzFdLCBiLmRbMF0sIHJnYl9pbmRleDEpOyBcCisrICAgICAgICBwWzJdID0gX21tX3NodWZmbGUy
X3BpOChiLmRbMF0sIGIuZFsxXSwgcmdiX2luZGV4Mik7IFwKKysgICAgICAgIGRlc3QgKz0gMjQ7
IFwKKysgICAgfQorKworKyNkZWZpbmUgV1JJVEVfUkdCWChSLCBCKSBcCisrICAgIHYwID0gX21t
X3NyYWlfZXBpMzIoUiMjX2wsIDIyKTsgXAorKyAgICB2MSA9IF9tbV9zcmFpX2VwaTMyKFIjI19o
LCAyMik7IFwKKysgICAgdjQgPSBfbW1fc3JhaV9lcGkzMihHX2wsIDIyIC0gMTYpOyBcCisrICAg
IHY1ID0gX21tX3NyYWlfZXBpMzIoR19oLCAyMiAtIDE2KTsgXAorKyAgICB2MiA9IF9tbV9zcmFp
X2VwaTMyKEIjI19sLCAyMik7IFwKKysgICAgdjMgPSBfbW1fc3JhaV9lcGkzMihCIyNfaCwgMjIp
OyBcCisrICAgIHYwID0gX21tX2JsZW5kX2VwaTE2KHYwLCB2NCwgMHhhYSk7IFwKKysgICAgdjEg
PSBfbW1fYmxlbmRfZXBpMTYodjEsIHY1LCAweGFhKTsgXAorKyAgICB2MCA9IF9tbV9wYWNrdXNf
ZXBpMTYodjAsIHYxKTsgXAorKyAgICB2MiA9IF9tbV9wYWNrdXNfZXBpMTYodjIsIHYzKTsgXAor
KyAgICB2MiA9IF9tbV9vcl9zaTEyOCh2MiwgQV9oKTsgXAorKyAgICB2MSA9IF9tbV91bnBhY2ts
b19lcGkxNih2MCwgdjIpOyBcCisrICAgIHYzID0gX21tX3VucGFja2hpX2VwaTE2KHYwLCB2Mik7
IFwKKysgICAgVkVDX1NUKGRlc3QsIHYxKTsgXAorKyAgICBWRUNfU1QoZGVzdCArIDE2LCB2Myk7
IFwKKysgICAgZGVzdCArPSAzMjsKKysKKysjZGVmaW5lIFdSSVRFX1hSR0IoUiwgQikgXAorKyAg
ICB2MCA9IF9tbV9zcmFpX2VwaTMyKFIjI19sLCAyMiAtIDE2KTsgXAorKyAgICB2MSA9IF9tbV9z
cmFpX2VwaTMyKFIjI19oLCAyMiAtIDE2KTsgXAorKyAgICB2NCA9IF9tbV9zcmFpX2VwaTMyKEdf
bCwgMjIpOyBcCisrICAgIHY1ID0gX21tX3NyYWlfZXBpMzIoR19oLCAyMik7IFwKKysgICAgdjIg
PSBfbW1fc3JhaV9lcGkzMihCIyNfbCwgMjIgLSAxNik7IFwKKysgICAgdjMgPSBfbW1fc3JhaV9l
cGkzMihCIyNfaCwgMjIgLSAxNik7IFwKKysgICAgdjIgPSBfbW1fYmxlbmRfZXBpMTYodjQsIHYy
LCAweGFhKTsgXAorKyAgICB2MyA9IF9tbV9ibGVuZF9lcGkxNih2NSwgdjMsIDB4YWEpOyBcCisr
ICAgIHYwID0gX21tX3BhY2t1c19lcGkxNih2MCwgdjEpOyBcCisrICAgIHYyID0gX21tX3BhY2t1
c19lcGkxNih2MiwgdjMpOyBcCisrICAgIHYwID0gX21tX29yX3NpMTI4KHYwLCBBX2wpOyBcCisr
ICAgIHYxID0gX21tX3VucGFja2xvX2VwaTE2KHYwLCB2Mik7IFwKKysgICAgdjMgPSBfbW1fdW5w
YWNraGlfZXBpMTYodjAsIHYyKTsgXAorKyAgICBWRUNfU1QoZGVzdCwgdjEpOyBcCisrICAgIFZF
Q19TVChkZXN0ICsgMTYsIHYzKTsgXAorKyAgICBkZXN0ICs9IDMyOworKworKyNkZWZpbmUgQ0FM
Q19SR0IgXAorKyAgICB2eV9sID0gX21tX2FkZF9lcGkzMihfbW1fbXVsbG9fZXBpMzIodnlfbCwg
eV9jb2VmZiksIHlfYWRkKTsgXAorKyAgICB2eV9oID0gX21tX2FkZF9lcGkzMihfbW1fbXVsbG9f
ZXBpMzIodnlfaCwgeV9jb2VmZiksIHlfYWRkKTsgXAorKyAgICBcCisrICAgIHYwID0gX21tX211
bGxvX2VwaTMyKHZ2X2wsIHYyZ19jb2VmZik7IFwKKysgICAgdjEgPSBfbW1fbXVsbG9fZXBpMzIo
dnVfbCwgdTJnX2NvZWZmKTsgXAorKyAgICB2MiA9IF9tbV9tdWxsb19lcGkzMih2dl9oLCB2Mmdf
Y29lZmYpOyBcCisrICAgIHYzID0gX21tX211bGxvX2VwaTMyKHZ1X2gsIHUyZ19jb2VmZik7IFwK
KysgICAgR19sID0gX21tX2FkZF9lcGkzMihfbW1fYWRkX2VwaTMyKHYwLCB2eV9sKSwgdjEpOyBc
CisrICAgIEdfaCA9IF9tbV9hZGRfZXBpMzIoX21tX2FkZF9lcGkzMih2MiwgdnlfaCksIHYzKTsg
XAorKyAgICBcCisrICAgIFJfbCA9IF9tbV9hZGRfZXBpMzIodnlfbCwgX21tX211bGxvX2VwaTMy
KHZ2X2wsIHYycl9jb2VmZikpOyBcCisrICAgIFJfaCA9IF9tbV9hZGRfZXBpMzIodnlfaCwgX21t
X211bGxvX2VwaTMyKHZ2X2gsIHYycl9jb2VmZikpOyBcCisrICAgIEJfbCA9IF9tbV9hZGRfZXBp
MzIodnlfbCwgX21tX211bGxvX2VwaTMyKHZ1X2wsIHUyYl9jb2VmZikpOyBcCisrICAgIEJfaCA9
IF9tbV9hZGRfZXBpMzIodnlfaCwgX21tX211bGxvX2VwaTMyKHZ1X2gsIHUyYl9jb2VmZikpOwor
KworKyNkZWZpbmUgV0lUSF9BTFBIQSguLi4pIF9fVkFfQVJHU19fCisrI2RlZmluZSBOT19BTFBI
QSguLi4pCisrCisrI2RlZmluZSBZVVYyUkdCV1JBUFBFUlhGKGV4dCwgZm10LCBSLCBCLCBoYXNB
bHBoYSkgXAorK3N0YXRpYyB2b2lkIHl1djIjI2V4dCMjX1hfZTJrKFN3c0NvbnRleHQgKmMsIGNv
bnN0IGludDE2X3QgKmx1bUZpbHRlciwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGludDE2X3QgKipsdW1TcmMsIGludCBsdW1GaWx0ZXJTaXplLCBcCisrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCAqY2hyRmlsdGVyLCBjb25zdCBpbnQx
Nl90ICoqY2hyVVNyYywgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu
dDE2X3QgKipjaHJWU3JjLCBpbnQgY2hyRmlsdGVyU2l6ZSwgXAorKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGludDE2X3QgKiphbHBTcmMsIHVpbnQ4X3QgKmRlc3QsIGludCBk
c3RXLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHkpIFwKKyt7IFwKKysg
ICAgdmVjX3MzMiB2eV9sLCB2eV9oLCB2dV9sLCB2dV9oLCB2dl9sLCB2dl9oOyBcCisrICAgIHZl
Y19zMzIgaGFzQWxwaGEoQV9sLCBBX2gsKSBSX2wsIFJfaCwgR19sLCBHX2gsIEJfbCwgQl9oOyBc
CisrICAgIHZlY19zMzIgeXN0YXJ0ID0gX21tX3NldDFfZXBpMzIoMSA8PCA5KTsgXAorKyAgICB2
ZWNfczMyIHV2c3RhcnQgPSBfbW1fc2V0MV9lcGkzMigoMSA8PCA5KSAtICgxMjggPDwgMTkpKTsg
XAorKyAgICB2ZWNfczMyIHlfY29lZmYgPSBfbW1fc2V0MV9lcGkzMihjLT55dXYycmdiX3lfY29l
ZmYpOyBcCisrICAgIHZlY19zMzIgeV9hZGQgPSBfbW1fc2V0MV9lcGkzMigoMSA8PCAyMSkgLSBj
LT55dXYycmdiX3lfb2Zmc2V0ICogYy0+eXV2MnJnYl95X2NvZWZmKTsgXAorKyAgICB2ZWNfczMy
IHYycl9jb2VmZiA9IF9tbV9zZXQxX2VwaTMyKGMtPnl1djJyZ2JfdjJyX2NvZWZmKTsgXAorKyAg
ICB2ZWNfczMyIHYyZ19jb2VmZiA9IF9tbV9zZXQxX2VwaTMyKGMtPnl1djJyZ2JfdjJnX2NvZWZm
KTsgXAorKyAgICB2ZWNfczMyIHUyZ19jb2VmZiA9IF9tbV9zZXQxX2VwaTMyKGMtPnl1djJyZ2Jf
dTJnX2NvZWZmKTsgXAorKyAgICB2ZWNfczMyIHUyYl9jb2VmZiA9IF9tbV9zZXQxX2VwaTMyKGMt
Pnl1djJyZ2JfdTJiX2NvZWZmKTsgXAorKyAgICBfX20xMjhpIHYwLCB2MSwgdjIsIHYzLCB2NCwg
djU7IFwKKysgICAgaW50IGksIGo7IFwKKysgICAgSU5JVF8jI2ZtdChSLCBCKSBcCisrICAgIFwK
KysgICAgZm9yIChpID0gMDsgaSA8IGRzdFc7IGkgKz0gOCkgeyBcCisrICAgICAgICB2eV9sID0g
dnlfaCA9IHlzdGFydDsgXAorKyAgICAgICAgZm9yIChqID0gMDsgaiA8IGx1bUZpbHRlclNpemU7
IGorKykgeyBcCisrICAgICAgICAgICAgdjAgPSBWRUNfTEQobHVtU3JjW2pdICsgaSk7IFwKKysg
ICAgICAgICAgICB2MSA9IF9tbV9zZXQxX2VwaTE2KGx1bUZpbHRlcltqXSk7IFwKKysgICAgICAg
ICAgICB2MiA9IF9tbV9tdWxsb19lcGkxNih2MCwgdjEpOyBcCisrICAgICAgICAgICAgdjMgPSBf
bW1fbXVsaGlfZXBpMTYodjAsIHYxKTsgXAorKyAgICAgICAgICAgIHYwID0gX21tX3VucGFja2xv
X2VwaTE2KHYyLCB2Myk7IFwKKysgICAgICAgICAgICB2MSA9IF9tbV91bnBhY2toaV9lcGkxNih2
MiwgdjMpOyBcCisrICAgICAgICAgICAgdnlfbCA9IF9tbV9hZGRfZXBpMzIodnlfbCwgdjApOyBc
CisrICAgICAgICAgICAgdnlfaCA9IF9tbV9hZGRfZXBpMzIodnlfaCwgdjEpOyBcCisrICAgICAg
ICB9IFwKKysgICAgICAgIHZ5X2wgPSBfbW1fc3JhaV9lcGkzMih2eV9sLCAxMCk7IFwKKysgICAg
ICAgIHZ5X2ggPSBfbW1fc3JhaV9lcGkzMih2eV9oLCAxMCk7IFwKKysgICAgICAgIFwKKysgICAg
ICAgIHZ1X2wgPSB2dV9oID0gdnZfbCA9IHZ2X2ggPSB1dnN0YXJ0OyBcCisrICAgICAgICBmb3Ig
KGogPSAwOyBqIDwgY2hyRmlsdGVyU2l6ZTsgaisrKSB7IFwKKysgICAgICAgICAgICB2MCA9IFZF
Q19MRChjaHJVU3JjW2pdICsgaSk7IFwKKysgICAgICAgICAgICB2MSA9IFZFQ19MRChjaHJWU3Jj
W2pdICsgaSk7IFwKKysgICAgICAgICAgICB2NSA9IF9tbV9zZXQxX2VwaTE2KGNockZpbHRlcltq
XSk7IFwKKysgICAgICAgICAgICB2MiA9IF9tbV9tdWxsb19lcGkxNih2MCwgdjUpOyBcCisrICAg
ICAgICAgICAgdjMgPSBfbW1fbXVsaGlfZXBpMTYodjAsIHY1KTsgXAorKyAgICAgICAgICAgIHY0
ID0gX21tX211bGxvX2VwaTE2KHYxLCB2NSk7IFwKKysgICAgICAgICAgICB2NSA9IF9tbV9tdWxo
aV9lcGkxNih2MSwgdjUpOyBcCisrICAgICAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpMTYo
djIsIHYzKTsgXAorKyAgICAgICAgICAgIHYxID0gX21tX3VucGFja2hpX2VwaTE2KHYyLCB2Myk7
IFwKKysgICAgICAgICAgICB2MiA9IF9tbV91bnBhY2tsb19lcGkxNih2NCwgdjUpOyBcCisrICAg
ICAgICAgICAgdjMgPSBfbW1fdW5wYWNraGlfZXBpMTYodjQsIHY1KTsgXAorKyAgICAgICAgICAg
IHZ1X2wgPSBfbW1fYWRkX2VwaTMyKHZ1X2wsIHYwKTsgXAorKyAgICAgICAgICAgIHZ1X2ggPSBf
bW1fYWRkX2VwaTMyKHZ1X2gsIHYxKTsgXAorKyAgICAgICAgICAgIHZ2X2wgPSBfbW1fYWRkX2Vw
aTMyKHZ2X2wsIHYyKTsgXAorKyAgICAgICAgICAgIHZ2X2ggPSBfbW1fYWRkX2VwaTMyKHZ2X2gs
IHYzKTsgXAorKyAgICAgICAgfSBcCisrICAgICAgICB2dV9sID0gX21tX3NyYWlfZXBpMzIodnVf
bCwgMTApOyBcCisrICAgICAgICB2dV9oID0gX21tX3NyYWlfZXBpMzIodnVfaCwgMTApOyBcCisr
ICAgICAgICB2dl9sID0gX21tX3NyYWlfZXBpMzIodnZfbCwgMTApOyBcCisrICAgICAgICB2dl9o
ID0gX21tX3NyYWlfZXBpMzIodnZfaCwgMTApOyBcCisrICAgICAgICBcCisrICAgICAgICBDQUxD
X1JHQiBcCisrICAgICAgICBXUklURV8jI2ZtdChSLCBCKSBcCisrICAgIH0gXAorK30KKysKKysj
ZGVmaW5lIFNFVFVQKGJ1ZiwgaSwgYWxwaGEsIHIwLCByMSkgeyBcCisrICAgIHYwID0gVkVDX0xE
KGJ1ZiMjMCArIGkpOyBcCisrICAgIHYxID0gVkVDX0xEKGJ1ZiMjMSArIGkpOyBcCisrICAgIHYy
ID0gX21tX3VucGFja2xvX2VwaTE2KHYwLCB2MSk7IFwKKysgICAgdjMgPSBfbW1fdW5wYWNraGlf
ZXBpMTYodjAsIHYxKTsgXAorKyAgICByMCA9IF9tbV9tYWRkX2VwaTE2KHYyLCBhbHBoYSk7IFwK
KysgICAgcjEgPSBfbW1fbWFkZF9lcGkxNih2MywgYWxwaGEpOyBcCisrfQorKworKyNkZWZpbmUg
WVVWMlJHQldSQVBQRVIyRihleHQsIGZtdCwgUiwgQiwgaGFzQWxwaGEpIFwKKytzdGF0aWMgdm9p
ZCB5dXYyIyNleHQjI18yX2UyayhTd3NDb250ZXh0ICpjLCBjb25zdCBpbnQxNl90ICpidWZbMl0s
IFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQxNl90ICp1YnVmWzJd
LCBjb25zdCBpbnQxNl90ICp2YnVmWzJdLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgaW50MTZfdCAqYWJ1ZlsyXSwgdWludDhfdCAqZGVzdCwgaW50IGRzdFcsIFwKKysg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeWFscGhhLCBpbnQgdXZhbHBoYSwgaW50
IHkpIFwKKyt7IFwKKysgICAgY29uc3QgaW50MTZfdCBoYXNBbHBoYSgqYWJ1ZjAgPSBhYnVmWzBd
LCAqYWJ1ZjEgPSBhYnVmWzFdLCkgXAorKyAgICAgICAgICAgICAgICAgICpidWYwID0gYnVmWzBd
LCAqYnVmMSA9IGJ1ZlsxXSwgXAorKyAgICAgICAgICAgICAgICAgICp1YnVmMCA9IHVidWZbMF0s
ICp1YnVmMSA9IHVidWZbMV0sIFwKKysgICAgICAgICAgICAgICAgICAqdmJ1ZjAgPSB2YnVmWzBd
LCAqdmJ1ZjEgPSB2YnVmWzFdOyBcCisrICAgIHZlY19zMzIgdnlfbCwgdnlfaCwgdnVfbCwgdnVf
aCwgdnZfbCwgdnZfaDsgXAorKyAgICB2ZWNfczMyIGhhc0FscGhhKEFfbCwgQV9oLCkgUl9sLCBS
X2gsIEdfbCwgR19oLCBCX2wsIEJfaDsgXAorKyAgICB2ZWNfczE2IHZ5YWxwaGEgPSBfbW1fc2V0
MV9lcGkzMig0MDk2ICsgeWFscGhhICogMHhmZmZmKTsgXAorKyAgICB2ZWNfczE2IHZ1dmFscGhh
ID0gX21tX3NldDFfZXBpMzIoNDA5NiArIHV2YWxwaGEgKiAweGZmZmYpOyBcCisrICAgIHZlY19z
MzIgeV9jb2VmZiA9IF9tbV9zZXQxX2VwaTMyKGMtPnl1djJyZ2JfeV9jb2VmZik7IFwKKysgICAg
dmVjX3MzMiB5X2FkZCA9IF9tbV9zZXQxX2VwaTMyKCgxIDw8IDIxKSAtIGMtPnl1djJyZ2JfeV9v
ZmZzZXQgKiBjLT55dXYycmdiX3lfY29lZmYpOyBcCisrICAgIHZlY19zMzIgdjJyX2NvZWZmID0g
X21tX3NldDFfZXBpMzIoYy0+eXV2MnJnYl92MnJfY29lZmYpOyBcCisrICAgIHZlY19zMzIgdjJn
X2NvZWZmID0gX21tX3NldDFfZXBpMzIoYy0+eXV2MnJnYl92MmdfY29lZmYpOyBcCisrICAgIHZl
Y19zMzIgdTJnX2NvZWZmID0gX21tX3NldDFfZXBpMzIoYy0+eXV2MnJnYl91MmdfY29lZmYpOyBc
CisrICAgIHZlY19zMzIgdTJiX2NvZWZmID0gX21tX3NldDFfZXBpMzIoYy0+eXV2MnJnYl91MmJf
Y29lZmYpOyBcCisrICAgIHZlY19zMzIgZGVjMTI4ID0gX21tX3NldDFfZXBpMzIoMTI4IDw8IDE5
KTsgXAorKyAgICBoYXNBbHBoYSh2ZWNfczMyIGFkZDE4ID0gX21tX3NldDFfZXBpMzIoMSA8PCAx
OCk7KSBcCisrICAgIF9fbTEyOGkgdjAsIHYxLCB2MiwgdjMsIHY0LCB2NTsgXAorKyAgICBpbnQg
aTsgXAorKyAgICBJTklUXyMjZm10KFIsIEIpIFwKKysgICAgXAorKyAgICBhdl9hc3NlcnQyKHlh
bHBoYSA8PSA0MDk2VSk7IFwKKysgICAgYXZfYXNzZXJ0Mih1dmFscGhhIDw9IDQwOTZVKTsgXAor
KyAgICBcCisrICAgIGZvciAoaSA9IDA7IGkgPCBkc3RXOyBpICs9IDgpIHsgXAorKyAgICAgICAg
U0VUVVAoYnVmLCBpLCB2eWFscGhhLCB2MCwgdjEpOyBcCisrICAgICAgICB2eV9sID0gX21tX3Ny
YWlfZXBpMzIodjAsIDEwKTsgXAorKyAgICAgICAgdnlfaCA9IF9tbV9zcmFpX2VwaTMyKHYxLCAx
MCk7IFwKKysgICAgICAgIFwKKysgICAgICAgIFNFVFVQKHVidWYsIGksIHZ1dmFscGhhLCB2MCwg
djEpOyBcCisrICAgICAgICB2dV9sID0gX21tX3NyYWlfZXBpMzIoX21tX3N1Yl9lcGkzMih2MCwg
ZGVjMTI4KSwgMTApOyBcCisrICAgICAgICB2dV9oID0gX21tX3NyYWlfZXBpMzIoX21tX3N1Yl9l
cGkzMih2MSwgZGVjMTI4KSwgMTApOyBcCisrICAgICAgICBcCisrICAgICAgICBTRVRVUCh2YnVm
LCBpLCB2dXZhbHBoYSwgdjAsIHYxKTsgXAorKyAgICAgICAgdnZfbCA9IF9tbV9zcmFpX2VwaTMy
KF9tbV9zdWJfZXBpMzIodjAsIGRlYzEyOCksIDEwKTsgXAorKyAgICAgICAgdnZfaCA9IF9tbV9z
cmFpX2VwaTMyKF9tbV9zdWJfZXBpMzIodjEsIGRlYzEyOCksIDEwKTsgXAorKyAgICAgICAgXAor
KyAgICAgICAgaGFzQWxwaGEoIFwKKysgICAgICAgICAgICBTRVRVUChhYnVmLCBpLCB2eWFscGhh
LCB2MCwgdjEpOyBcCisrICAgICAgICAgICAgQV9sID0gX21tX2FkZF9lcGkzMih2MCwgYWRkMTgp
OyBcCisrICAgICAgICAgICAgQV9oID0gX21tX2FkZF9lcGkzMih2MSwgYWRkMTgpOyBcCisrICAg
ICAgICApIFwKKysgICAgICAgIFwKKysgICAgICAgIENBTENfUkdCIFwKKysgICAgICAgIFdSSVRF
XyMjZm10KFIsIEIpIFwKKysgICAgfSBcCisrfQorKworKyNkZWZpbmUgWVVWMlJHQldSQVBQRVIx
RihleHQsIGZtdCwgUiwgQiwgaGFzQWxwaGEpIFwKKytzdGF0aWMgdm9pZCB5dXYyIyNleHQjI18x
X2UyayhTd3NDb250ZXh0ICpjLCBjb25zdCBpbnQxNl90ICpidWYwLCBcCisrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCAqdWJ1ZlsyXSwgY29uc3QgaW50MTZfdCAq
dmJ1ZlsyXSwgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDE2X3Qg
KmFidWYwLCB1aW50OF90ICpkZXN0LCBpbnQgZHN0VywgXAorKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCB1dmFscGhhLCBpbnQgeSkgXAorK3sgXAorKyAgICBjb25zdCBpbnQxNl90
ICp1YnVmMCA9IHVidWZbMF0sICp2YnVmMCA9IHZidWZbMF07IFwKKysgICAgY29uc3QgaW50MTZf
dCAqdWJ1ZjEgPSB1YnVmWzFdLCAqdmJ1ZjEgPSB2YnVmWzFdOyBcCisrICAgIGludCB1dnNobCA9
IHV2YWxwaGEgPCAyMDQ4ID8gMiA6IDE7IFwKKysgICAgdmVjX3MzMiB2eV9sLCB2eV9oLCB2dV9s
LCB2dV9oLCB2dl9sLCB2dl9oOyBcCisrICAgIHZlY19zMzIgUl9sLCBSX2gsIEdfbCwgR19oLCBC
X2wsIEJfaDsgXAorKyAgICB2ZWNfczMyIHlfY29lZmYgPSBfbW1fc2V0MV9lcGkzMihjLT55dXYy
cmdiX3lfY29lZmYgKiA0KTsgXAorKyAgICB2ZWNfczMyIHlfYWRkID0gX21tX3NldDFfZXBpMzIo
KDEgPDwgMjEpIC0gYy0+eXV2MnJnYl95X29mZnNldCAqIGMtPnl1djJyZ2JfeV9jb2VmZik7IFwK
KysgICAgdmVjX3MzMiB2MnJfY29lZmYgPSBfbW1fc2V0MV9lcGkzMihjLT55dXYycmdiX3Yycl9j
b2VmZiA8PCB1dnNobCk7IFwKKysgICAgdmVjX3MzMiB2MmdfY29lZmYgPSBfbW1fc2V0MV9lcGkz
MihjLT55dXYycmdiX3YyZ19jb2VmZiA8PCB1dnNobCk7IFwKKysgICAgdmVjX3MzMiB1MmdfY29l
ZmYgPSBfbW1fc2V0MV9lcGkzMihjLT55dXYycmdiX3UyZ19jb2VmZiA8PCB1dnNobCk7IFwKKysg
ICAgdmVjX3MzMiB1MmJfY29lZmYgPSBfbW1fc2V0MV9lcGkzMihjLT55dXYycmdiX3UyYl9jb2Vm
ZiA8PCB1dnNobCk7IFwKKysgICAgdmVjX3UxNiB1dnN1YiA9IF9tbV9zZXQxX2VwaTE2KHV2YWxw
aGEgPCAyMDQ4ID8gMTI4IDw8IDcgOiAxMjggPDwgOCk7IFwKKysgICAgaGFzQWxwaGEodmVjX3Mx
NiBBLCBhZGQ2NCA9IF9tbV9zZXQxX2VwaTE2KDY0KTspIFwKKysgICAgX19tMTI4aSB2MCwgdjEs
IHYyLCB2MywgdjQsIHY1OyBcCisrICAgIGludCBpOyBcCisrICAgIElOSVRfIyNmbXQoUiwgQikg
XAorKyAgICBcCisrICAgIGZvciAoaSA9IDA7IGkgPCBkc3RXOyBpICs9IDgpIHsgXAorKyAgICAg
ICAgdjAgPSBWRUNfTEQoYnVmMCArIGkpOyBcCisrICAgICAgICB2MiA9IF9tbV91bnBhY2tsb19l
cGkxNih2MCwgdjApOyBcCisrICAgICAgICB2MyA9IF9tbV91bnBhY2toaV9lcGkxNih2MCwgdjAp
OyBcCisrICAgICAgICB2eV9sID0gX21tX3NyYWlfZXBpMzIodjIsIDE2KTsgXAorKyAgICAgICAg
dnlfaCA9IF9tbV9zcmFpX2VwaTMyKHYzLCAxNik7IFwKKysgICAgICAgIFwKKysgICAgICAgIHYw
ID0gVkVDX0xEKHVidWYwICsgaSk7IFwKKysgICAgICAgIHYxID0gVkVDX0xEKHZidWYwICsgaSk7
IFwKKysgICAgICAgIGlmICh1dmFscGhhID49IDIwNDgpIHsgXAorKyAgICAgICAgICAgIHYyID0g
VkVDX0xEKHVidWYxICsgaSk7IFwKKysgICAgICAgICAgICB2MyA9IFZFQ19MRCh2YnVmMSArIGkp
OyBcCisrICAgICAgICAgICAgdjAgPSBfbW1fYWRkX2VwaTE2KHYwLCB2Mik7IFwKKysgICAgICAg
ICAgICB2MSA9IF9tbV9hZGRfZXBpMTYodjEsIHYzKTsgXAorKyAgICAgICAgfSBcCisrICAgICAg
ICB2MCA9IF9tbV9zdWJfZXBpMTYodjAsIHV2c3ViKTsgXAorKyAgICAgICAgdjEgPSBfbW1fc3Vi
X2VwaTE2KHYxLCB1dnN1Yik7IFwKKysgICAgICAgIHYyID0gX21tX3VucGFja2xvX2VwaTE2KHYw
LCB2MCk7IFwKKysgICAgICAgIHYzID0gX21tX3VucGFja2hpX2VwaTE2KHYwLCB2MCk7IFwKKysg
ICAgICAgIHZ1X2wgPSBfbW1fc3JhaV9lcGkzMih2MiwgMTYpOyBcCisrICAgICAgICB2dV9oID0g
X21tX3NyYWlfZXBpMzIodjMsIDE2KTsgXAorKyAgICAgICAgdjIgPSBfbW1fdW5wYWNrbG9fZXBp
MTYodjEsIHYxKTsgXAorKyAgICAgICAgdjMgPSBfbW1fdW5wYWNraGlfZXBpMTYodjEsIHYxKTsg
XAorKyAgICAgICAgdnZfbCA9IF9tbV9zcmFpX2VwaTMyKHYyLCAxNik7IFwKKysgICAgICAgIHZ2
X2ggPSBfbW1fc3JhaV9lcGkzMih2MywgMTYpOyBcCisrICAgICAgICBcCisrICAgICAgICBoYXNB
bHBoYSggXAorKyAgICAgICAgICAgIEEgPSBWRUNfTEQoYWJ1ZjAgKyBpKTsgXAorKyAgICAgICAg
ICAgIEEgPSBfbW1fYWRkX2VwaTE2KEEsIGFkZDY0KTsgXAorKyAgICAgICAgICAgIEEgPSBfbW1f
c3JhaV9lcGkxNihBLCA3KTsgXAorKyAgICAgICAgKSBcCisrICAgICAgICBcCisrICAgICAgICBD
QUxDX1JHQiBcCisrICAgICAgICBXUklURV8jI2ZtdChSLCBCKSBcCisrICAgIH0gXAorK30KKysK
KytZVVYyUkdCV1JBUFBFUlhGKHJnYngzMl9mdWxsLCBSR0JYLCBSLCBCLCBOT19BTFBIQSkKKytZ
VVYyUkdCV1JBUFBFUlhGKGJncngzMl9mdWxsLCBSR0JYLCBCLCBSLCBOT19BTFBIQSkKKytZVVYy
UkdCV1JBUFBFUlhGKHhyZ2IzMl9mdWxsLCBYUkdCLCBSLCBCLCBOT19BTFBIQSkKKytZVVYyUkdC
V1JBUFBFUlhGKHhiZ3IzMl9mdWxsLCBYUkdCLCBCLCBSLCBOT19BTFBIQSkKKytZVVYyUkdCV1JB
UFBFUlhGKHJnYjI0X2Z1bGwsIFJHQiwgUiwgQiwgTk9fQUxQSEEpCisrWVVWMlJHQldSQVBQRVJY
RihiZ3IyNF9mdWxsLCBSR0IsIEIsIFIsIE5PX0FMUEhBKQorKworK1lVVjJSR0JXUkFQUEVSMkYo
cmdieDMyX2Z1bGwsIFJHQlgsIFIsIEIsIE5PX0FMUEhBKQorK1lVVjJSR0JXUkFQUEVSMkYoYmdy
eDMyX2Z1bGwsIFJHQlgsIEIsIFIsIE5PX0FMUEhBKQorK1lVVjJSR0JXUkFQUEVSMkYoeHJnYjMy
X2Z1bGwsIFhSR0IsIFIsIEIsIE5PX0FMUEhBKQorK1lVVjJSR0JXUkFQUEVSMkYoeGJncjMyX2Z1
bGwsIFhSR0IsIEIsIFIsIE5PX0FMUEhBKQorK1lVVjJSR0JXUkFQUEVSMkYocmdiMjRfZnVsbCwg
UkdCLCBSLCBCLCBOT19BTFBIQSkKKytZVVYyUkdCV1JBUFBFUjJGKGJncjI0X2Z1bGwsIFJHQiwg
QiwgUiwgTk9fQUxQSEEpCisrCisrWVVWMlJHQldSQVBQRVIxRihyZ2J4MzJfZnVsbCwgUkdCWCwg
UiwgQiwgTk9fQUxQSEEpCisrWVVWMlJHQldSQVBQRVIxRihiZ3J4MzJfZnVsbCwgUkdCWCwgQiwg
UiwgTk9fQUxQSEEpCisrWVVWMlJHQldSQVBQRVIxRih4cmdiMzJfZnVsbCwgWFJHQiwgUiwgQiwg
Tk9fQUxQSEEpCisrWVVWMlJHQldSQVBQRVIxRih4YmdyMzJfZnVsbCwgWFJHQiwgQiwgUiwgTk9f
QUxQSEEpCisrWVVWMlJHQldSQVBQRVIxRihyZ2IyNF9mdWxsLCBSR0IsIFIsIEIsIE5PX0FMUEhB
KQorK1lVVjJSR0JXUkFQUEVSMUYoYmdyMjRfZnVsbCwgUkdCLCBCLCBSLCBOT19BTFBIQSkKKysK
KysjaWYgMSAvLyBwZXJmb3JtYW5jZQorKworKyNkZWZpbmUgSU5JVDJfUkdCKFIsIEIpIFwKKysg
ICAgX19tMTI4aSBwZXJtX3VucDggPSBfbW1fc2V0cl9lcGk4KCBcCisrICAgICAgICAwLCA4LCAx
LCA5LCAyLCAxMCwgMywgMTEsIDQsIDEyLCA1LCAxMywgNiwgMTQsIDcsIDE1KTsgXAorKyAgICBf
X202NCByZ2JfaW5kZXgwID0gX21tX3NldHJfcGk4KDAsIDEsIDMsIDQsIDUsIDcsIDgsIDkpOyBc
CisrICAgIF9fbTY0IHJnYl9pbmRleDEgPSBfbW1fc2V0cl9waTgoMywgNCwgNSwgNywgOCwgOSwg
MTEsIDEyKTsgXAorKyAgICBfX202NCByZ2JfaW5kZXgyID0gX21tX3NldHJfcGk4KDUsIDcsIDgs
IDksIDExLCAxMiwgMTMsIDE1KTsKKysKKysjZGVmaW5lIElOSVQyX1JHQlgoUiwgQikgSU5JVDJf
WFJHQihSLCBCKQorKyNkZWZpbmUgSU5JVDJfWFJHQihSLCBCKSBcCisrICAgIF9fbTEyOGkgQV9s
ID0gX21tX3NldDFfZXBpMTYoMjU1KTsgXAorKyAgICBfX20xMjhpIHBlcm1fdW5wOCA9IF9tbV9z
ZXRyX2VwaTgoIFwKKysgICAgICAgIDAsIDgsIDEsIDksIDIsIDEwLCAzLCAxMSwgNCwgMTIsIDUs
IDEzLCA2LCAxNCwgNywgMTUpOworKworKyNkZWZpbmUgV1JJVEUyX1JHQihSLCBCKSBcCisrICAg
IHY0ID0gX21tX3BhY2t1c19lcGkxNihSIyNfbCwgR19sKTsgXAorKyAgICB2NSA9IF9tbV9wYWNr
dXNfZXBpMTYoQiMjX2wsIEIjI19sKTsgXAorKyAgICB2MCA9IF9tbV9zaHVmZmxlX2VwaTgodjQs
IHBlcm1fdW5wOCk7IFwKKysgICAgdjEgPSBfbW1fdW5wYWNrbG9fZXBpOCh2NSwgdjUpOyBcCisr
ICAgIHYyID0gX21tX3VucGFja2xvX2VwaTE2KHYwLCB2MSk7IFwKKysgICAgdjMgPSBfbW1fdW5w
YWNraGlfZXBpMTYodjAsIHYxKTsgXAorKyAgICB7IFwKKysgICAgICAgIHVuaW9uIHsgX19tMTI4
aSB2OyBfX202NCBkWzJdOyB9IGEgPSB7IHYyIH0sIGIgPSB7IHYzIH07IFwKKysgICAgICAgIF9f
bTY0ICpwID0gKF9fbTY0KilkZXN0OyBcCisrICAgICAgICBwWzBdID0gX21tX3NodWZmbGUyX3Bp
OChhLmRbMF0sIGEuZFsxXSwgcmdiX2luZGV4MCk7IFwKKysgICAgICAgIHBbMV0gPSBfbW1fc2h1
ZmZsZTJfcGk4KGEuZFsxXSwgYi5kWzBdLCByZ2JfaW5kZXgxKTsgXAorKyAgICAgICAgcFsyXSA9
IF9tbV9zaHVmZmxlMl9waTgoYi5kWzBdLCBiLmRbMV0sIHJnYl9pbmRleDIpOyBcCisrICAgICAg
ICBkZXN0ICs9IDI0OyBcCisrICAgIH0KKysKKysjZGVmaW5lIFdSSVRFMl9SR0JYKFIsIEIpIFwK
KysgICAgdjQgPSBfbW1fcGFja3VzX2VwaTE2KFIjI19sLCBHX2wpOyBcCisrICAgIHY1ID0gX21t
X3BhY2t1c19lcGkxNihCIyNfbCwgQV9sKTsgXAorKyAgICB2MCA9IF9tbV9zaHVmZmxlX2VwaTgo
djQsIHBlcm1fdW5wOCk7IFwKKysgICAgdjEgPSBfbW1fc2h1ZmZsZV9lcGk4KHY1LCBwZXJtX3Vu
cDgpOyBcCisrICAgIHYyID0gX21tX3VucGFja2xvX2VwaTE2KHYwLCB2MSk7IFwKKysgICAgdjMg
PSBfbW1fdW5wYWNraGlfZXBpMTYodjAsIHYxKTsgXAorKyAgICBWRUNfU1QoZGVzdCwgdjIpOyBc
CisrICAgIFZFQ19TVChkZXN0ICsgMTYsIHYzKTsgXAorKyAgICBkZXN0ICs9IDMyOworKworKyNk
ZWZpbmUgV1JJVEUyX1hSR0IoUiwgQikgXAorKyAgICB2NCA9IF9tbV9wYWNrdXNfZXBpMTYoQV9s
LCBSIyNfbCk7IFwKKysgICAgdjUgPSBfbW1fcGFja3VzX2VwaTE2KEdfbCwgQiMjX2wpOyBcCisr
ICAgIHYwID0gX21tX3NodWZmbGVfZXBpOCh2NCwgcGVybV91bnA4KTsgXAorKyAgICB2MSA9IF9t
bV9zaHVmZmxlX2VwaTgodjUsIHBlcm1fdW5wOCk7IFwKKysgICAgdjIgPSBfbW1fdW5wYWNrbG9f
ZXBpMTYodjAsIHYxKTsgXAorKyAgICB2MyA9IF9tbV91bnBhY2toaV9lcGkxNih2MCwgdjEpOyBc
CisrICAgIFZFQ19TVChkZXN0LCB2Mik7IFwKKysgICAgVkVDX1NUKGRlc3QgKyAxNiwgdjMpOyBc
CisrICAgIGRlc3QgKz0gMzI7CisrCisrI2RlZmluZSBDQUxDMl9SR0IgXAorKyAgICB2eV9sID0g
X21tX211bGhyc19lcGkxNihfbW1fc3ViX2VwaTE2KHZ5X2wsIHlfc3ViKSwgeV9jb2VmZik7IFwK
KysgICAgXAorKyAgICB2MCA9IF9tbV9tdWxocnNfZXBpMTYodnZfbCwgdjJnX2NvZWZmKTsgXAor
KyAgICB2MSA9IF9tbV9tdWxocnNfZXBpMTYodnVfbCwgdTJnX2NvZWZmKTsgXAorKyAgICBHX2wg
PSBfbW1fYWRkX2VwaTE2KF9tbV9hZGRfZXBpMTYodjAsIHZ5X2wpLCB2MSk7IFwKKysgICAgXAor
KyAgICBSX2wgPSBfbW1fYWRkX2VwaTE2KHZ5X2wsIF9tbV9tdWxocnNfZXBpMTYodnZfbCwgdjJy
X2NvZWZmKSk7IFwKKysgICAgQl9sID0gX21tX2FkZF9lcGkxNih2eV9sLCBfbW1fbXVsaHJzX2Vw
aTE2KHZ1X2wsIHUyYl9jb2VmZikpOworKworKyNkZWZpbmUgWVVWMlJHQldSQVBQRVJYKGV4dCwg
Zm10LCBSLCBCLCBoYXNBbHBoYSkgXAorK3N0YXRpYyB2b2lkIHl1djIjI2V4dCMjX1hfZTJrKFN3
c0NvbnRleHQgKmMsIGNvbnN0IGludDE2X3QgKmx1bUZpbHRlciwgXAorKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGludDE2X3QgKipsdW1TcmMsIGludCBsdW1GaWx0ZXJTaXpl
LCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCAqY2hyRmls
dGVyLCBjb25zdCBpbnQxNl90ICoqY2hyVVNyYywgXAorKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGludDE2X3QgKipjaHJWU3JjLCBpbnQgY2hyRmlsdGVyU2l6ZSwgXAorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDE2X3QgKiphbHBTcmMsIHVpbnQ4
X3QgKmRlc3QsIGludCBkc3RXLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHkpIFwKKyt7IFwKKysgICAgdmVjX3MzMiB2eV9sLCB2eV9oLCB2dV9sLCB2dl9sLCB2dTJfbCwg
dnUyX2gsIHZ2Ml9sLCB2djJfaDsgXAorKyAgICB2ZWNfczMyIGhhc0FscGhhKEFfbCwpIFJfbCwg
R19sLCBCX2w7IFwKKysgICAgdmVjX3MzMiB5c3RhcnQgPSBfbW1fc2V0MV9lcGkzMigwKTsgXAor
KyAgICB2ZWNfczMyIHV2c3RhcnQgPSBfbW1fc2V0MV9lcGkzMigtKDEyOCA8PCAxOSkpOyBcCisr
ICAgIHZlY19zMzIgeV9jb2VmZiA9IF9tbV9zZXQxX2VwaTE2KGMtPnl1djJyZ2JfeV9jb2VmZik7
IFwKKysgICAgdmVjX3MzMiB5X3N1YiA9IF9tbV9zZXQxX2VwaTE2KChjLT55dXYycmdiX3lfb2Zm
c2V0ICsgNjQpID4+IDcpOyBcCisrICAgIHZlY19zMzIgdjJyX2NvZWZmID0gX21tX3NldDFfZXBp
MTYoYy0+eXV2MnJnYl92MnJfY29lZmYpOyBcCisrICAgIHZlY19zMzIgdjJnX2NvZWZmID0gX21t
X3NldDFfZXBpMTYoYy0+eXV2MnJnYl92MmdfY29lZmYpOyBcCisrICAgIHZlY19zMzIgdTJnX2Nv
ZWZmID0gX21tX3NldDFfZXBpMTYoYy0+eXV2MnJnYl91MmdfY29lZmYpOyBcCisrICAgIHZlY19z
MzIgdTJiX2NvZWZmID0gX21tX3NldDFfZXBpMTYoYy0+eXV2MnJnYl91MmJfY29lZmYpOyBcCisr
ICAgIF9fbTEyOGkgdjAsIHYxLCB2MiwgdjMsIHY0LCB2NTsgXAorKyAgICBpbnQgaSwgajsgXAor
KyAgICBJTklUMl8jI2ZtdChSLCBCKSBcCisrICAgIFwKKysgICAgZm9yIChpID0gMDsgaSA8IChk
c3RXICsgMSkgPj4gMTsgaSArPSA4KSB7IFwKKysgICAgICAgIHZ5X2wgPSB2eV9oID0geXN0YXJ0
OyBcCisrICAgICAgICBmb3IgKGogPSAwOyBqIDwgbHVtRmlsdGVyU2l6ZTsgaisrKSB7IFwKKysg
ICAgICAgICAgICB2MCA9IFZFQ19MRChsdW1TcmNbal0gKyBpICogMik7IFwKKysgICAgICAgICAg
ICB2MSA9IF9tbV9zZXQxX2VwaTE2KGx1bUZpbHRlcltqXSk7IFwKKysgICAgICAgICAgICB2MiA9
IF9tbV9tdWxsb19lcGkxNih2MCwgdjEpOyBcCisrICAgICAgICAgICAgdjMgPSBfbW1fbXVsaGlf
ZXBpMTYodjAsIHYxKTsgXAorKyAgICAgICAgICAgIHYwID0gX21tX3VucGFja2xvX2VwaTE2KHYy
LCB2Myk7IFwKKysgICAgICAgICAgICB2MSA9IF9tbV91bnBhY2toaV9lcGkxNih2MiwgdjMpOyBc
CisrICAgICAgICAgICAgdnlfbCA9IF9tbV9hZGRfZXBpMzIodnlfbCwgdjApOyBcCisrICAgICAg
ICAgICAgdnlfaCA9IF9tbV9hZGRfZXBpMzIodnlfaCwgdjEpOyBcCisrICAgICAgICB9IFwKKysg
ICAgICAgIHZ5X2wgPSBfbW1fc3JhaV9lcGkzMih2eV9sLCAxNyk7IFwKKysgICAgICAgIHZ5X2gg
PSBfbW1fc3JhaV9lcGkzMih2eV9oLCAxNyk7IFwKKysgICAgICAgIFwKKysgICAgICAgIHZ1Ml9s
ID0gdnUyX2ggPSB2djJfbCA9IHZ2Ml9oID0gdXZzdGFydDsgXAorKyAgICAgICAgZm9yIChqID0g
MDsgaiA8IGNockZpbHRlclNpemU7IGorKykgeyBcCisrICAgICAgICAgICAgdjAgPSBWRUNfTEQo
Y2hyVVNyY1tqXSArIGkpOyBcCisrICAgICAgICAgICAgdjEgPSBWRUNfTEQoY2hyVlNyY1tqXSAr
IGkpOyBcCisrICAgICAgICAgICAgdjUgPSBfbW1fc2V0MV9lcGkxNihjaHJGaWx0ZXJbal0pOyBc
CisrICAgICAgICAgICAgdjIgPSBfbW1fbXVsbG9fZXBpMTYodjAsIHY1KTsgXAorKyAgICAgICAg
ICAgIHYzID0gX21tX211bGhpX2VwaTE2KHYwLCB2NSk7IFwKKysgICAgICAgICAgICB2NCA9IF9t
bV9tdWxsb19lcGkxNih2MSwgdjUpOyBcCisrICAgICAgICAgICAgdjUgPSBfbW1fbXVsaGlfZXBp
MTYodjEsIHY1KTsgXAorKyAgICAgICAgICAgIHYwID0gX21tX3VucGFja2xvX2VwaTE2KHYyLCB2
Myk7IFwKKysgICAgICAgICAgICB2MSA9IF9tbV91bnBhY2toaV9lcGkxNih2MiwgdjMpOyBcCisr
ICAgICAgICAgICAgdjIgPSBfbW1fdW5wYWNrbG9fZXBpMTYodjQsIHY1KTsgXAorKyAgICAgICAg
ICAgIHYzID0gX21tX3VucGFja2hpX2VwaTE2KHY0LCB2NSk7IFwKKysgICAgICAgICAgICB2dTJf
bCA9IF9tbV9hZGRfZXBpMzIodnUyX2wsIHYwKTsgXAorKyAgICAgICAgICAgIHZ1Ml9oID0gX21t
X2FkZF9lcGkzMih2dTJfaCwgdjEpOyBcCisrICAgICAgICAgICAgdnYyX2wgPSBfbW1fYWRkX2Vw
aTMyKHZ2Ml9sLCB2Mik7IFwKKysgICAgICAgICAgICB2djJfaCA9IF9tbV9hZGRfZXBpMzIodnYy
X2gsIHYzKTsgXAorKyAgICAgICAgfSBcCisrICAgICAgICB2dTJfbCA9IF9tbV9zcmFpX2VwaTMy
KHZ1Ml9sLCAxNyk7IFwKKysgICAgICAgIHZ1Ml9oID0gX21tX3NyYWlfZXBpMzIodnUyX2gsIDE3
KTsgXAorKyAgICAgICAgdnYyX2wgPSBfbW1fc3JhaV9lcGkzMih2djJfbCwgMTcpOyBcCisrICAg
ICAgICB2djJfaCA9IF9tbV9zcmFpX2VwaTMyKHZ2Ml9oLCAxNyk7IFwKKysgICAgICAgIHZ1Ml9s
ID0gX21tX3BhY2tzX2VwaTMyKHZ1Ml9sLCB2dTJfaCk7IFwKKysgICAgICAgIHZ2Ml9sID0gX21t
X3BhY2tzX2VwaTMyKHZ2Ml9sLCB2djJfaCk7IFwKKysgICAgICAgIFwKKysgICAgICAgIHZ1X2wg
PSBfbW1fdW5wYWNrbG9fZXBpMTYodnUyX2wsIHZ1Ml9sKTsgXAorKyAgICAgICAgdnZfbCA9IF9t
bV91bnBhY2tsb19lcGkxNih2djJfbCwgdnYyX2wpOyBcCisrICAgICAgICB2eV9sID0gX21tX3Bh
Y2tzX2VwaTMyKHZ5X2wsIHZ5X2gpOyBcCisrICAgICAgICBcCisrICAgICAgICBDQUxDMl9SR0Ig
XAorKyAgICAgICAgV1JJVEUyXyMjZm10KFIsIEIpIFwKKysgICAgICAgIFwKKysgICAgICAgIHZ5
X2wgPSB2eV9oID0geXN0YXJ0OyBcCisrICAgICAgICBmb3IgKGogPSAwOyBqIDwgbHVtRmlsdGVy
U2l6ZTsgaisrKSB7IFwKKysgICAgICAgICAgICB2MCA9IFZFQ19MRChsdW1TcmNbal0gKyBpICog
MiArIDgpOyBcCisrICAgICAgICAgICAgdjEgPSBfbW1fc2V0MV9lcGkxNihsdW1GaWx0ZXJbal0p
OyBcCisrICAgICAgICAgICAgdjIgPSBfbW1fbXVsbG9fZXBpMTYodjAsIHYxKTsgXAorKyAgICAg
ICAgICAgIHYzID0gX21tX211bGhpX2VwaTE2KHYwLCB2MSk7IFwKKysgICAgICAgICAgICB2MCA9
IF9tbV91bnBhY2tsb19lcGkxNih2MiwgdjMpOyBcCisrICAgICAgICAgICAgdjEgPSBfbW1fdW5w
YWNraGlfZXBpMTYodjIsIHYzKTsgXAorKyAgICAgICAgICAgIHZ5X2wgPSBfbW1fYWRkX2VwaTMy
KHZ5X2wsIHYwKTsgXAorKyAgICAgICAgICAgIHZ5X2ggPSBfbW1fYWRkX2VwaTMyKHZ5X2gsIHYx
KTsgXAorKyAgICAgICAgfSBcCisrICAgICAgICB2eV9sID0gX21tX3NyYWlfZXBpMzIodnlfbCwg
MTcpOyBcCisrICAgICAgICB2eV9oID0gX21tX3NyYWlfZXBpMzIodnlfaCwgMTcpOyBcCisrICAg
ICAgICBcCisrICAgICAgICB2dV9sID0gX21tX3VucGFja2hpX2VwaTE2KHZ1Ml9sLCB2dTJfbCk7
IFwKKysgICAgICAgIHZ2X2wgPSBfbW1fdW5wYWNraGlfZXBpMTYodnYyX2wsIHZ2Ml9sKTsgXAor
KyAgICAgICAgdnlfbCA9IF9tbV9wYWNrc19lcGkzMih2eV9sLCB2eV9oKTsgXAorKyAgICAgICAg
XAorKyAgICAgICAgQ0FMQzJfUkdCIFwKKysgICAgICAgIFdSSVRFMl8jI2ZtdChSLCBCKSBcCisr
ICAgIH0gXAorK30KKysKKysjZGVmaW5lIFNFVFVQMihidWYsIGksIGFscGhhLCByMCkgeyBcCisr
ICAgIHYwID0gVkVDX0xEKGJ1ZiMjMCArIGkpOyBcCisrICAgIHYxID0gVkVDX0xEKGJ1ZiMjMSAr
IGkpOyBcCisrICAgIHYxID0gX21tX3N1YnNfZXBpMTYodjAsIHYxKTsgXAorKyAgICB2MSA9IF9t
bV9tdWxocnNfZXBpMTYodjEsIGFscGhhKTsgXAorKyAgICByMCA9IF9tbV9hZGRfZXBpMTYodjAs
IHYxKTsgXAorK30KKysKKysjZGVmaW5lIFlVVjJSR0JXUkFQUEVSMihleHQsIGZtdCwgUiwgQiwg
aGFzQWxwaGEpIFwKKytzdGF0aWMgdm9pZCB5dXYyIyNleHQjI18yX2UyayhTd3NDb250ZXh0ICpj
LCBjb25zdCBpbnQxNl90ICpidWZbMl0sIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBpbnQxNl90ICp1YnVmWzJdLCBjb25zdCBpbnQxNl90ICp2YnVmWzJdLCBcCisrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCAqYWJ1ZlsyXSwgdWludDhf
dCAqZGVzdCwgaW50IGRzdFcsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
eWFscGhhLCBpbnQgdXZhbHBoYSwgaW50IHkpIFwKKyt7IFwKKysgICAgY29uc3QgaW50MTZfdCBo
YXNBbHBoYSgqYWJ1ZjAgPSBhYnVmWzBdLCAqYWJ1ZjEgPSBhYnVmWzFdLCkgXAorKyAgICAgICAg
ICAgICAgICAgICpidWYwID0gYnVmWzBdLCAqYnVmMSA9IGJ1ZlsxXSwgXAorKyAgICAgICAgICAg
ICAgICAgICp1YnVmMCA9IHVidWZbMF0sICp1YnVmMSA9IHVidWZbMV0sIFwKKysgICAgICAgICAg
ICAgICAgICAqdmJ1ZjAgPSB2YnVmWzBdLCAqdmJ1ZjEgPSB2YnVmWzFdOyBcCisrICAgIHZlY19z
MzIgdnlfbCwgdnVfbCwgdnZfbCwgdnUyX2wsIHZ2Ml9sOyBcCisrICAgIHZlY19zMzIgaGFzQWxw
aGEoQV9sLCkgUl9sLCBHX2wsIEJfbDsgXAorKyAgICB2ZWNfczE2IHZ5YWxwaGEgPSBfbW1fc2V0
MV9lcGkxNigteWFscGhhIDw8IDMpOyBcCisrICAgIHZlY19zMTYgdnV2YWxwaGEgPSBfbW1fc2V0
MV9lcGkxNigtdXZhbHBoYSA8PCAzKTsgXAorKyAgICB2ZWNfczMyIHlfY29lZmYgPSBfbW1fc2V0
MV9lcGkxNihjLT55dXYycmdiX3lfY29lZmYpOyBcCisrICAgIHZlY19zMzIgeV9zdWIgPSBfbW1f
c2V0MV9lcGkxNigoYy0+eXV2MnJnYl95X29mZnNldCArIDY0KSA+PiA3KTsgXAorKyAgICB2ZWNf
czMyIHYycl9jb2VmZiA9IF9tbV9zZXQxX2VwaTE2KGMtPnl1djJyZ2JfdjJyX2NvZWZmKTsgXAor
KyAgICB2ZWNfczMyIHYyZ19jb2VmZiA9IF9tbV9zZXQxX2VwaTE2KGMtPnl1djJyZ2JfdjJnX2Nv
ZWZmKTsgXAorKyAgICB2ZWNfczMyIHUyZ19jb2VmZiA9IF9tbV9zZXQxX2VwaTE2KGMtPnl1djJy
Z2JfdTJnX2NvZWZmKTsgXAorKyAgICB2ZWNfczMyIHUyYl9jb2VmZiA9IF9tbV9zZXQxX2VwaTE2
KGMtPnl1djJyZ2JfdTJiX2NvZWZmKTsgXAorKyAgICB2ZWNfczMyIGRlYzEyOCA9IF9tbV9zZXQx
X2VwaTE2KDEyOCA8PCAyKTsgXAorKyAgICBfX20xMjhpIHYwLCB2MSwgdjIsIHYzLCB2NCwgdjU7
IFwKKysgICAgaW50IGk7IFwKKysgICAgSU5JVDJfIyNmbXQoUiwgQikgXAorKyAgICBcCisrICAg
IGF2X2Fzc2VydDIoeWFscGhhIDw9IDQwOTZVKTsgXAorKyAgICBhdl9hc3NlcnQyKHV2YWxwaGEg
PD0gNDA5NlUpOyBcCisrICAgIFwKKysgICAgZm9yIChpID0gMDsgaSA8IChkc3RXICsgMSkgPj4g
MTsgaSArPSA4KSB7IFwKKysgICAgICAgIFNFVFVQMihidWYsIGkgKiAyLCB2eWFscGhhLCB2eV9s
KTsgXAorKyAgICAgICAgdnlfbCA9IF9tbV9zcmFpX2VwaTE2KHZ5X2wsIDUpOyBcCisrICAgICAg
ICBcCisrICAgICAgICBTRVRVUDIodWJ1ZiwgaSwgdnV2YWxwaGEsIHZ1Ml9sKTsgXAorKyAgICAg
ICAgdnUyX2wgPSBfbW1fc3JhaV9lcGkxNih2dTJfbCwgNSk7IFwKKysgICAgICAgIFwKKysgICAg
ICAgIFNFVFVQMih2YnVmLCBpLCB2dXZhbHBoYSwgdnYyX2wpOyBcCisrICAgICAgICB2djJfbCA9
IF9tbV9zcmFpX2VwaTE2KHZ2Ml9sLCA1KTsgXAorKyAgICAgICAgXAorKyAgICAgICAgdnUyX2wg
PSBfbW1fc3ViX2VwaTE2KHZ1Ml9sLCBkZWMxMjgpOyBcCisrICAgICAgICB2djJfbCA9IF9tbV9z
dWJfZXBpMTYodnYyX2wsIGRlYzEyOCk7IFwKKysgICAgICAgIFwKKysgICAgICAgIGhhc0FscGhh
KCBcCisrICAgICAgICAgICAgU0VUVVAyKGFidWYsIGkgKiAyLCB2eWFscGhhLCBBX2wpOyBcCisr
ICAgICAgICApIFwKKysgICAgICAgIFwKKysgICAgICAgIHZ1X2wgPSBfbW1fdW5wYWNrbG9fZXBp
MTYodnUyX2wsIHZ1Ml9sKTsgXAorKyAgICAgICAgdnZfbCA9IF9tbV91bnBhY2tsb19lcGkxNih2
djJfbCwgdnYyX2wpOyBcCisrICAgICAgICBcCisrICAgICAgICBDQUxDMl9SR0IgXAorKyAgICAg
ICAgV1JJVEUyXyMjZm10KFIsIEIpIFwKKysgICAgICAgIFwKKysgICAgICAgIFNFVFVQMihidWYs
IGkgKiAyICsgOCwgdnlhbHBoYSwgdnlfbCk7IFwKKysgICAgICAgIHZ5X2wgPSBfbW1fc3JhaV9l
cGkxNih2eV9sLCA1KTsgXAorKyAgICAgICAgXAorKyAgICAgICAgaGFzQWxwaGEoIFwKKysgICAg
ICAgICAgICBTRVRVUDIoYWJ1ZiwgaSAqIDIgKyA4LCB2eWFscGhhLCBBX2wpOyBcCisrICAgICAg
ICApIFwKKysgICAgICAgIFwKKysgICAgICAgIHZ1X2wgPSBfbW1fdW5wYWNraGlfZXBpMTYodnUy
X2wsIHZ1Ml9sKTsgXAorKyAgICAgICAgdnZfbCA9IF9tbV91bnBhY2toaV9lcGkxNih2djJfbCwg
dnYyX2wpOyBcCisrICAgICAgICBcCisrICAgICAgICBDQUxDMl9SR0IgXAorKyAgICAgICAgV1JJ
VEUyXyMjZm10KFIsIEIpIFwKKysgICAgfSBcCisrfQorKworKyNkZWZpbmUgWVVWMlJHQldSQVBQ
RVIxKGV4dCwgZm10LCBSLCBCLCBoYXNBbHBoYSkgXAorK3N0YXRpYyB2b2lkIHl1djIjI2V4dCMj
XzFfZTJrKFN3c0NvbnRleHQgKmMsIGNvbnN0IGludDE2X3QgKmJ1ZjAsIFwKKysgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQxNl90ICp1YnVmWzJdLCBjb25zdCBpbnQxNl90
ICp2YnVmWzJdLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZf
dCAqYWJ1ZjAsIHVpbnQ4X3QgKmRlc3QsIGludCBkc3RXLCBcCisrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHV2YWxwaGEsIGludCB5KSBcCisreyBcCisrICAgIGNvbnN0IGludDE2
X3QgKnVidWYwID0gdWJ1ZlswXSwgKnZidWYwID0gdmJ1ZlswXTsgXAorKyAgICBjb25zdCBpbnQx
Nl90ICp1YnVmMSA9IHVidWZbMV0sICp2YnVmMSA9IHZidWZbMV07IFwKKysgICAgaW50IHV2c2hy
ID0gdXZhbHBoYSA8IDIwNDggPyA1IDogNjsgXAorKyAgICB2ZWNfczMyIHZ5X2wsIHZ1X2wsIHZ2
X2wsIHZ1Ml9sLCB2djJfbDsgXAorKyAgICB2ZWNfczMyIGhhc0FscGhhKEFfbCwpIFJfbCwgR19s
LCBCX2w7IFwKKysgICAgdmVjX3MzMiB5X2NvZWZmID0gX21tX3NldDFfZXBpMTYoYy0+eXV2MnJn
Yl95X2NvZWZmKTsgXAorKyAgICB2ZWNfczMyIHlfc3ViID0gX21tX3NldDFfZXBpMTYoKGMtPnl1
djJyZ2JfeV9vZmZzZXQgKyA2NCkgPj4gNyk7IFwKKysgICAgdmVjX3MzMiB2MnJfY29lZmYgPSBf
bW1fc2V0MV9lcGkxNihjLT55dXYycmdiX3Yycl9jb2VmZik7IFwKKysgICAgdmVjX3MzMiB2Mmdf
Y29lZmYgPSBfbW1fc2V0MV9lcGkxNihjLT55dXYycmdiX3YyZ19jb2VmZik7IFwKKysgICAgdmVj
X3MzMiB1MmdfY29lZmYgPSBfbW1fc2V0MV9lcGkxNihjLT55dXYycmdiX3UyZ19jb2VmZik7IFwK
KysgICAgdmVjX3MzMiB1MmJfY29lZmYgPSBfbW1fc2V0MV9lcGkxNihjLT55dXYycmdiX3UyYl9j
b2VmZik7IFwKKysgICAgdmVjX3UxNiB1dnN1YiA9IF9tbV9zZXQxX2VwaTE2KHV2YWxwaGEgPCAy
MDQ4ID8gMTI4IDw8IDcgOiAxMjggPDwgOCk7IFwKKysgICAgaGFzQWxwaGEodmVjX3MxNiBBLCBh
ZGQ2NCA9IF9tbV9zZXQxX2VwaTE2KDY0KTspIFwKKysgICAgX19tMTI4aSB2MCwgdjEsIHYyLCB2
MywgdjQsIHY1OyBcCisrICAgIGludCBpOyBcCisrICAgIElOSVQyXyMjZm10KFIsIEIpIFwKKysg
ICAgXAorKyAgICBmb3IgKGkgPSAwOyBpIDwgKGRzdFcgKyAxKSA+PiAxOyBpICs9IDgpIHsgXAor
KyAgICAgICAgdjAgPSBWRUNfTEQoYnVmMCArIGkgKiAyKTsgXAorKyAgICAgICAgdnlfbCA9IF9t
bV9zcmFpX2VwaTE2KHYwLCA1KTsgXAorKyAgICAgICAgXAorKyAgICAgICAgdjAgPSBWRUNfTEQo
dWJ1ZjAgKyBpKTsgXAorKyAgICAgICAgdjEgPSBWRUNfTEQodmJ1ZjAgKyBpKTsgXAorKyAgICAg
ICAgaWYgKHV2YWxwaGEgPj0gMjA0OCkgeyBcCisrICAgICAgICAgICAgdjIgPSBWRUNfTEQodWJ1
ZjEgKyBpKTsgXAorKyAgICAgICAgICAgIHYzID0gVkVDX0xEKHZidWYxICsgaSk7IFwKKysgICAg
ICAgICAgICB2MCA9IF9tbV9hZGRfZXBpMTYodjAsIHYyKTsgXAorKyAgICAgICAgICAgIHYxID0g
X21tX2FkZF9lcGkxNih2MSwgdjMpOyBcCisrICAgICAgICB9IFwKKysgICAgICAgIHYwID0gX21t
X3N1Yl9lcGkxNih2MCwgdXZzdWIpOyBcCisrICAgICAgICB2MSA9IF9tbV9zdWJfZXBpMTYodjEs
IHV2c3ViKTsgXAorKyAgICAgICAgdnUyX2wgPSBfbW1fc3JhaV9lcGkxNih2MCwgdXZzaHIpOyBc
CisrICAgICAgICB2djJfbCA9IF9tbV9zcmFpX2VwaTE2KHYxLCB1dnNocik7IFwKKysgICAgICAg
IFwKKysgICAgICAgIGhhc0FscGhhKCBcCisrICAgICAgICAgICAgQV9sID0gVkVDX0xEKGFidWYw
ICsgaSAqIDIpOyBcCisrICAgICAgICAgICAgQV9sID0gX21tX2FkZF9lcGkxNihBX2wsIGFkZDY0
KTsgXAorKyAgICAgICAgICAgIEFfbCA9IF9tbV9zcmFpX2VwaTE2KEFfbCwgNyk7IFwKKysgICAg
ICAgICkgXAorKyAgICAgICAgXAorKyAgICAgICAgdnVfbCA9IF9tbV91bnBhY2tsb19lcGkxNih2
dTJfbCwgdnUyX2wpOyBcCisrICAgICAgICB2dl9sID0gX21tX3VucGFja2xvX2VwaTE2KHZ2Ml9s
LCB2djJfbCk7IFwKKysgICAgICAgIFwKKysgICAgICAgIENBTEMyX1JHQiBcCisrICAgICAgICBX
UklURTJfIyNmbXQoUiwgQikgXAorKyAgICAgICAgXAorKyAgICAgICAgdjAgPSBWRUNfTEQoYnVm
MCArIGkgKiAyICsgOCk7IFwKKysgICAgICAgIHZ5X2wgPSBfbW1fc3JhaV9lcGkxNih2MCwgNSk7
IFwKKysgICAgICAgIFwKKysgICAgICAgIGhhc0FscGhhKCBcCisrICAgICAgICAgICAgQV9sID0g
VkVDX0xEKGFidWYwICsgaSAqIDIgKyA4KTsgXAorKyAgICAgICAgICAgIEFfbCA9IF9tbV9hZGRf
ZXBpMTYoQV9sLCBhZGQ2NCk7IFwKKysgICAgICAgICAgICBBX2wgPSBfbW1fc3JhaV9lcGkxNihB
X2wsIDcpOyBcCisrICAgICAgICApIFwKKysgICAgICAgIFwKKysgICAgICAgIHZ1X2wgPSBfbW1f
dW5wYWNraGlfZXBpMTYodnUyX2wsIHZ1Ml9sKTsgXAorKyAgICAgICAgdnZfbCA9IF9tbV91bnBh
Y2toaV9lcGkxNih2djJfbCwgdnYyX2wpOyBcCisrICAgICAgICBcCisrICAgICAgICBDQUxDMl9S
R0IgXAorKyAgICAgICAgV1JJVEUyXyMjZm10KFIsIEIpIFwKKysgICAgfSBcCisrfQorKworKyNl
bHNlIC8vIHF1YWxpdHkKKysKKysjZGVmaW5lIFlVVjJSR0JXUkFQUEVSWChleHQsIGZtdCwgUiwg
QiwgaGFzQWxwaGEpIFwKKytzdGF0aWMgdm9pZCB5dXYyIyNleHQjI19YX2UyayhTd3NDb250ZXh0
ICpjLCBjb25zdCBpbnQxNl90ICpsdW1GaWx0ZXIsIFwKKysgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBpbnQxNl90ICoqbHVtU3JjLCBpbnQgbHVtRmlsdGVyU2l6ZSwgXAorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDE2X3QgKmNockZpbHRlciwgY29u
c3QgaW50MTZfdCAqKmNoclVTcmMsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBpbnQxNl90ICoqY2hyVlNyYywgaW50IGNockZpbHRlclNpemUsIFwKKysgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQxNl90ICoqYWxwU3JjLCB1aW50OF90ICpkZXN0
LCBpbnQgZHN0VywgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB5KSBcCisr
eyBcCisrICAgIHZlY19zMzIgdnlfbCwgdnlfaCwgdnVfbCwgdnVfaCwgdnZfbCwgdnZfaCwgdnUy
X2wsIHZ1Ml9oLCB2djJfbCwgdnYyX2g7IFwKKysgICAgdmVjX3MzMiBoYXNBbHBoYShBX2wsIEFf
aCwpIFJfbCwgUl9oLCBHX2wsIEdfaCwgQl9sLCBCX2g7IFwKKysgICAgdmVjX3MzMiB5c3RhcnQg
PSBfbW1fc2V0MV9lcGkzMigxIDw8IDkpOyBcCisrICAgIHZlY19zMzIgdXZzdGFydCA9IF9tbV9z
ZXQxX2VwaTMyKCgxIDw8IDkpIC0gKDEyOCA8PCAxOSkpOyBcCisrICAgIHZlY19zMzIgeV9jb2Vm
ZiA9IF9tbV9zZXQxX2VwaTMyKGMtPnl1djJyZ2JfeV9jb2VmZik7IFwKKysgICAgdmVjX3MzMiB5
X2FkZCA9IF9tbV9zZXQxX2VwaTMyKCgxIDw8IDIxKSAtIGMtPnl1djJyZ2JfeV9vZmZzZXQgKiBj
LT55dXYycmdiX3lfY29lZmYpOyBcCisrICAgIHZlY19zMzIgdjJyX2NvZWZmID0gX21tX3NldDFf
ZXBpMzIoYy0+eXV2MnJnYl92MnJfY29lZmYpOyBcCisrICAgIHZlY19zMzIgdjJnX2NvZWZmID0g
X21tX3NldDFfZXBpMzIoYy0+eXV2MnJnYl92MmdfY29lZmYpOyBcCisrICAgIHZlY19zMzIgdTJn
X2NvZWZmID0gX21tX3NldDFfZXBpMzIoYy0+eXV2MnJnYl91MmdfY29lZmYpOyBcCisrICAgIHZl
Y19zMzIgdTJiX2NvZWZmID0gX21tX3NldDFfZXBpMzIoYy0+eXV2MnJnYl91MmJfY29lZmYpOyBc
CisrICAgIF9fbTEyOGkgdjAsIHYxLCB2MiwgdjMsIHY0LCB2NTsgXAorKyAgICBpbnQgaSwgajsg
XAorKyAgICBJTklUXyMjZm10KFIsIEIpIFwKKysgICAgXAorKyAgICBmb3IgKGkgPSAwOyBpIDwg
KGRzdFcgKyAxKSA+PiAxOyBpICs9IDgpIHsgXAorKyAgICAgICAgdnlfbCA9IHZ5X2ggPSB5c3Rh
cnQ7IFwKKysgICAgICAgIGZvciAoaiA9IDA7IGogPCBsdW1GaWx0ZXJTaXplOyBqKyspIHsgXAor
KyAgICAgICAgICAgIHYwID0gVkVDX0xEKGx1bVNyY1tqXSArIGkgKiAyKTsgXAorKyAgICAgICAg
ICAgIHYxID0gX21tX3NldDFfZXBpMTYobHVtRmlsdGVyW2pdKTsgXAorKyAgICAgICAgICAgIHYy
ID0gX21tX211bGxvX2VwaTE2KHYwLCB2MSk7IFwKKysgICAgICAgICAgICB2MyA9IF9tbV9tdWxo
aV9lcGkxNih2MCwgdjEpOyBcCisrICAgICAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpMTYo
djIsIHYzKTsgXAorKyAgICAgICAgICAgIHYxID0gX21tX3VucGFja2hpX2VwaTE2KHYyLCB2Myk7
IFwKKysgICAgICAgICAgICB2eV9sID0gX21tX2FkZF9lcGkzMih2eV9sLCB2MCk7IFwKKysgICAg
ICAgICAgICB2eV9oID0gX21tX2FkZF9lcGkzMih2eV9oLCB2MSk7IFwKKysgICAgICAgIH0gXAor
KyAgICAgICAgdnlfbCA9IF9tbV9zcmFpX2VwaTMyKHZ5X2wsIDEwKTsgXAorKyAgICAgICAgdnlf
aCA9IF9tbV9zcmFpX2VwaTMyKHZ5X2gsIDEwKTsgXAorKyAgICAgICAgXAorKyAgICAgICAgdnUy
X2wgPSB2dTJfaCA9IHZ2Ml9sID0gdnYyX2ggPSB1dnN0YXJ0OyBcCisrICAgICAgICBmb3IgKGog
PSAwOyBqIDwgY2hyRmlsdGVyU2l6ZTsgaisrKSB7IFwKKysgICAgICAgICAgICB2MCA9IFZFQ19M
RChjaHJVU3JjW2pdICsgaSk7IFwKKysgICAgICAgICAgICB2MSA9IFZFQ19MRChjaHJWU3JjW2pd
ICsgaSk7IFwKKysgICAgICAgICAgICB2NSA9IF9tbV9zZXQxX2VwaTE2KGNockZpbHRlcltqXSk7
IFwKKysgICAgICAgICAgICB2MiA9IF9tbV9tdWxsb19lcGkxNih2MCwgdjUpOyBcCisrICAgICAg
ICAgICAgdjMgPSBfbW1fbXVsaGlfZXBpMTYodjAsIHY1KTsgXAorKyAgICAgICAgICAgIHY0ID0g
X21tX211bGxvX2VwaTE2KHYxLCB2NSk7IFwKKysgICAgICAgICAgICB2NSA9IF9tbV9tdWxoaV9l
cGkxNih2MSwgdjUpOyBcCisrICAgICAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpMTYodjIs
IHYzKTsgXAorKyAgICAgICAgICAgIHYxID0gX21tX3VucGFja2hpX2VwaTE2KHYyLCB2Myk7IFwK
KysgICAgICAgICAgICB2MiA9IF9tbV91bnBhY2tsb19lcGkxNih2NCwgdjUpOyBcCisrICAgICAg
ICAgICAgdjMgPSBfbW1fdW5wYWNraGlfZXBpMTYodjQsIHY1KTsgXAorKyAgICAgICAgICAgIHZ1
Ml9sID0gX21tX2FkZF9lcGkzMih2dTJfbCwgdjApOyBcCisrICAgICAgICAgICAgdnUyX2ggPSBf
bW1fYWRkX2VwaTMyKHZ1Ml9oLCB2MSk7IFwKKysgICAgICAgICAgICB2djJfbCA9IF9tbV9hZGRf
ZXBpMzIodnYyX2wsIHYyKTsgXAorKyAgICAgICAgICAgIHZ2Ml9oID0gX21tX2FkZF9lcGkzMih2
djJfaCwgdjMpOyBcCisrICAgICAgICB9IFwKKysgICAgICAgIHZ1Ml9sID0gX21tX3NyYWlfZXBp
MzIodnUyX2wsIDEwKTsgXAorKyAgICAgICAgdnUyX2ggPSBfbW1fc3JhaV9lcGkzMih2dTJfaCwg
MTApOyBcCisrICAgICAgICB2djJfbCA9IF9tbV9zcmFpX2VwaTMyKHZ2Ml9sLCAxMCk7IFwKKysg
ICAgICAgIHZ2Ml9oID0gX21tX3NyYWlfZXBpMzIodnYyX2gsIDEwKTsgXAorKyAgICAgICAgXAor
KyAgICAgICAgdnVfbCA9IF9tbV91bnBhY2tsb19lcGkzMih2dTJfbCwgdnUyX2wpOyBcCisrICAg
ICAgICB2dV9oID0gX21tX3VucGFja2hpX2VwaTMyKHZ1Ml9sLCB2dTJfbCk7IFwKKysgICAgICAg
IHZ2X2wgPSBfbW1fdW5wYWNrbG9fZXBpMzIodnYyX2wsIHZ2Ml9sKTsgXAorKyAgICAgICAgdnZf
aCA9IF9tbV91bnBhY2toaV9lcGkzMih2djJfbCwgdnYyX2wpOyBcCisrICAgICAgICBcCisrICAg
ICAgICBDQUxDX1JHQiBcCisrICAgICAgICBXUklURV8jI2ZtdChSLCBCKSBcCisrICAgICAgICBc
CisrICAgICAgICB2eV9sID0gdnlfaCA9IHlzdGFydDsgXAorKyAgICAgICAgZm9yIChqID0gMDsg
aiA8IGx1bUZpbHRlclNpemU7IGorKykgeyBcCisrICAgICAgICAgICAgdjAgPSBWRUNfTEQobHVt
U3JjW2pdICsgaSAqIDIgKyA4KTsgXAorKyAgICAgICAgICAgIHYxID0gX21tX3NldDFfZXBpMTYo
bHVtRmlsdGVyW2pdKTsgXAorKyAgICAgICAgICAgIHYyID0gX21tX211bGxvX2VwaTE2KHYwLCB2
MSk7IFwKKysgICAgICAgICAgICB2MyA9IF9tbV9tdWxoaV9lcGkxNih2MCwgdjEpOyBcCisrICAg
ICAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpMTYodjIsIHYzKTsgXAorKyAgICAgICAgICAg
IHYxID0gX21tX3VucGFja2hpX2VwaTE2KHYyLCB2Myk7IFwKKysgICAgICAgICAgICB2eV9sID0g
X21tX2FkZF9lcGkzMih2eV9sLCB2MCk7IFwKKysgICAgICAgICAgICB2eV9oID0gX21tX2FkZF9l
cGkzMih2eV9oLCB2MSk7IFwKKysgICAgICAgIH0gXAorKyAgICAgICAgdnlfbCA9IF9tbV9zcmFp
X2VwaTMyKHZ5X2wsIDEwKTsgXAorKyAgICAgICAgdnlfaCA9IF9tbV9zcmFpX2VwaTMyKHZ5X2gs
IDEwKTsgXAorKyAgICAgICAgXAorKyAgICAgICAgdnVfbCA9IF9tbV91bnBhY2tsb19lcGkzMih2
dTJfaCwgdnUyX2gpOyBcCisrICAgICAgICB2dV9oID0gX21tX3VucGFja2hpX2VwaTMyKHZ1Ml9o
LCB2dTJfaCk7IFwKKysgICAgICAgIHZ2X2wgPSBfbW1fdW5wYWNrbG9fZXBpMzIodnYyX2gsIHZ2
Ml9oKTsgXAorKyAgICAgICAgdnZfaCA9IF9tbV91bnBhY2toaV9lcGkzMih2djJfaCwgdnYyX2gp
OyBcCisrICAgICAgICBcCisrICAgICAgICBDQUxDX1JHQiBcCisrICAgICAgICBXUklURV8jI2Zt
dChSLCBCKSBcCisrICAgIH0gXAorK30KKysKKysjZGVmaW5lIFlVVjJSR0JXUkFQUEVSMihleHQs
IGZtdCwgUiwgQiwgaGFzQWxwaGEpIFwKKytzdGF0aWMgdm9pZCB5dXYyIyNleHQjI18yX2UyayhT
d3NDb250ZXh0ICpjLCBjb25zdCBpbnQxNl90ICpidWZbMl0sIFwKKysgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbnQxNl90ICp1YnVmWzJdLCBjb25zdCBpbnQxNl90ICp2YnVm
WzJdLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCAqYWJ1
ZlsyXSwgdWludDhfdCAqZGVzdCwgaW50IGRzdFcsIFwKKysgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgeWFscGhhLCBpbnQgdXZhbHBoYSwgaW50IHkpIFwKKyt7IFwKKysgICAgY29u
c3QgaW50MTZfdCBoYXNBbHBoYSgqYWJ1ZjAgPSBhYnVmWzBdLCAqYWJ1ZjEgPSBhYnVmWzFdLCkg
XAorKyAgICAgICAgICAgICAgICAgICpidWYwID0gYnVmWzBdLCAqYnVmMSA9IGJ1ZlsxXSwgXAor
KyAgICAgICAgICAgICAgICAgICp1YnVmMCA9IHVidWZbMF0sICp1YnVmMSA9IHVidWZbMV0sIFwK
KysgICAgICAgICAgICAgICAgICAqdmJ1ZjAgPSB2YnVmWzBdLCAqdmJ1ZjEgPSB2YnVmWzFdOyBc
CisrICAgIHZlY19zMzIgdnlfbCwgdnlfaCwgdnVfbCwgdnVfaCwgdnZfbCwgdnZfaCwgdnUyX2ws
IHZ1Ml9oLCB2djJfbCwgdnYyX2g7IFwKKysgICAgdmVjX3MzMiBoYXNBbHBoYShBX2wsIEFfaCwp
IFJfbCwgUl9oLCBHX2wsIEdfaCwgQl9sLCBCX2g7IFwKKysgICAgdmVjX3MxNiB2eWFscGhhID0g
X21tX3NldDFfZXBpMzIoNDA5NiArIHlhbHBoYSAqIDB4ZmZmZik7IFwKKysgICAgdmVjX3MxNiB2
dXZhbHBoYSA9IF9tbV9zZXQxX2VwaTMyKDQwOTYgKyB1dmFscGhhICogMHhmZmZmKTsgXAorKyAg
ICB2ZWNfczMyIHlfY29lZmYgPSBfbW1fc2V0MV9lcGkzMihjLT55dXYycmdiX3lfY29lZmYpOyBc
CisrICAgIHZlY19zMzIgeV9hZGQgPSBfbW1fc2V0MV9lcGkzMigoMSA8PCAyMSkgLSBjLT55dXYy
cmdiX3lfb2Zmc2V0ICogYy0+eXV2MnJnYl95X2NvZWZmKTsgXAorKyAgICB2ZWNfczMyIHYycl9j
b2VmZiA9IF9tbV9zZXQxX2VwaTMyKGMtPnl1djJyZ2JfdjJyX2NvZWZmKTsgXAorKyAgICB2ZWNf
czMyIHYyZ19jb2VmZiA9IF9tbV9zZXQxX2VwaTMyKGMtPnl1djJyZ2JfdjJnX2NvZWZmKTsgXAor
KyAgICB2ZWNfczMyIHUyZ19jb2VmZiA9IF9tbV9zZXQxX2VwaTMyKGMtPnl1djJyZ2JfdTJnX2Nv
ZWZmKTsgXAorKyAgICB2ZWNfczMyIHUyYl9jb2VmZiA9IF9tbV9zZXQxX2VwaTMyKGMtPnl1djJy
Z2JfdTJiX2NvZWZmKTsgXAorKyAgICB2ZWNfczMyIGRlYzEyOCA9IF9tbV9zZXQxX2VwaTMyKDEy
OCA8PCAxOSk7IFwKKysgICAgaGFzQWxwaGEodmVjX3MzMiBhZGQxOCA9IF9tbV9zZXQxX2VwaTMy
KDEgPDwgMTgpOykgXAorKyAgICBfX20xMjhpIHYwLCB2MSwgdjIsIHYzLCB2NCwgdjU7IFwKKysg
ICAgaW50IGk7IFwKKysgICAgSU5JVF8jI2ZtdChSLCBCKSBcCisrICAgIFwKKysgICAgYXZfYXNz
ZXJ0Mih5YWxwaGEgPD0gNDA5NlUpOyBcCisrICAgIGF2X2Fzc2VydDIodXZhbHBoYSA8PSA0MDk2
VSk7IFwKKysgICAgXAorKyAgICBmb3IgKGkgPSAwOyBpIDwgKGRzdFcgKyAxKSA+PiAxOyBpICs9
IDgpIHsgXAorKyAgICAgICAgU0VUVVAoYnVmLCBpICogMiwgdnlhbHBoYSwgdjAsIHYxKTsgXAor
KyAgICAgICAgdnlfbCA9IF9tbV9zcmFpX2VwaTMyKHYwLCAxMCk7IFwKKysgICAgICAgIHZ5X2gg
PSBfbW1fc3JhaV9lcGkzMih2MSwgMTApOyBcCisrICAgICAgICBcCisrICAgICAgICBTRVRVUCh1
YnVmLCBpLCB2dXZhbHBoYSwgdjAsIHYxKTsgXAorKyAgICAgICAgdnUyX2wgPSBfbW1fc3JhaV9l
cGkzMihfbW1fc3ViX2VwaTMyKHYwLCBkZWMxMjgpLCAxMCk7IFwKKysgICAgICAgIHZ1Ml9oID0g
X21tX3NyYWlfZXBpMzIoX21tX3N1Yl9lcGkzMih2MSwgZGVjMTI4KSwgMTApOyBcCisrICAgICAg
ICBcCisrICAgICAgICBTRVRVUCh2YnVmLCBpLCB2dXZhbHBoYSwgdjAsIHYxKTsgXAorKyAgICAg
ICAgdnYyX2wgPSBfbW1fc3JhaV9lcGkzMihfbW1fc3ViX2VwaTMyKHYwLCBkZWMxMjgpLCAxMCk7
IFwKKysgICAgICAgIHZ2Ml9oID0gX21tX3NyYWlfZXBpMzIoX21tX3N1Yl9lcGkzMih2MSwgZGVj
MTI4KSwgMTApOyBcCisrICAgICAgICBcCisrICAgICAgICBoYXNBbHBoYSggXAorKyAgICAgICAg
ICAgIFNFVFVQKGFidWYsIGkgKiAyLCB2eWFscGhhLCB2MCwgdjEpOyBcCisrICAgICAgICAgICAg
QV9sID0gX21tX2FkZF9lcGkzMih2MCwgYWRkMTgpOyBcCisrICAgICAgICAgICAgQV9oID0gX21t
X2FkZF9lcGkzMih2MSwgYWRkMTgpOyBcCisrICAgICAgICApIFwKKysgICAgICAgIFwKKysgICAg
ICAgIHZ1X2wgPSBfbW1fdW5wYWNrbG9fZXBpMzIodnUyX2wsIHZ1Ml9sKTsgXAorKyAgICAgICAg
dnVfaCA9IF9tbV91bnBhY2toaV9lcGkzMih2dTJfbCwgdnUyX2wpOyBcCisrICAgICAgICB2dl9s
ID0gX21tX3VucGFja2xvX2VwaTMyKHZ2Ml9sLCB2djJfbCk7IFwKKysgICAgICAgIHZ2X2ggPSBf
bW1fdW5wYWNraGlfZXBpMzIodnYyX2wsIHZ2Ml9sKTsgXAorKyAgICAgICAgXAorKyAgICAgICAg
Q0FMQ19SR0IgXAorKyAgICAgICAgV1JJVEVfIyNmbXQoUiwgQikgXAorKyAgICAgICAgXAorKyAg
ICAgICAgU0VUVVAoYnVmLCBpICogMiArIDgsIHZ5YWxwaGEsIHYwLCB2MSk7IFwKKysgICAgICAg
IHZ5X2wgPSBfbW1fc3JhaV9lcGkzMih2MCwgMTApOyBcCisrICAgICAgICB2eV9oID0gX21tX3Ny
YWlfZXBpMzIodjEsIDEwKTsgXAorKyAgICAgICAgXAorKyAgICAgICAgaGFzQWxwaGEoIFwKKysg
ICAgICAgICAgICBTRVRVUChhYnVmLCBpICogMiArIDgsIHZ5YWxwaGEsIHYwLCB2MSk7IFwKKysg
ICAgICAgICAgICBBX2wgPSBfbW1fYWRkX2VwaTMyKHYwLCBhZGQxOCk7IFwKKysgICAgICAgICAg
ICBBX2ggPSBfbW1fYWRkX2VwaTMyKHYxLCBhZGQxOCk7IFwKKysgICAgICAgICkgXAorKyAgICAg
ICAgXAorKyAgICAgICAgdnVfbCA9IF9tbV91bnBhY2tsb19lcGkzMih2dTJfaCwgdnUyX2gpOyBc
CisrICAgICAgICB2dV9oID0gX21tX3VucGFja2hpX2VwaTMyKHZ1Ml9oLCB2dTJfaCk7IFwKKysg
ICAgICAgIHZ2X2wgPSBfbW1fdW5wYWNrbG9fZXBpMzIodnYyX2gsIHZ2Ml9oKTsgXAorKyAgICAg
ICAgdnZfaCA9IF9tbV91bnBhY2toaV9lcGkzMih2djJfaCwgdnYyX2gpOyBcCisrICAgICAgICBc
CisrICAgICAgICBDQUxDX1JHQiBcCisrICAgICAgICBXUklURV8jI2ZtdChSLCBCKSBcCisrICAg
IH0gXAorK30KKysKKysjZGVmaW5lIFlVVjJSR0JXUkFQUEVSMShleHQsIGZtdCwgUiwgQiwgaGFz
QWxwaGEpIFwKKytzdGF0aWMgdm9pZCB5dXYyIyNleHQjI18xX2UyayhTd3NDb250ZXh0ICpjLCBj
b25zdCBpbnQxNl90ICpidWYwLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgaW50MTZfdCAqdWJ1ZlsyXSwgY29uc3QgaW50MTZfdCAqdmJ1ZlsyXSwgXAorKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDE2X3QgKmFidWYwLCB1aW50OF90ICpkZXN0
LCBpbnQgZHN0VywgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1dmFscGhh
LCBpbnQgeSkgXAorK3sgXAorKyAgICBjb25zdCBpbnQxNl90ICp1YnVmMCA9IHVidWZbMF0sICp2
YnVmMCA9IHZidWZbMF07IFwKKysgICAgY29uc3QgaW50MTZfdCAqdWJ1ZjEgPSB1YnVmWzFdLCAq
dmJ1ZjEgPSB2YnVmWzFdOyBcCisrICAgIGludCB1dnNobCA9IHV2YWxwaGEgPCAyMDQ4ID8gMiA6
IDE7IFwKKysgICAgdmVjX3MzMiB2eV9sLCB2eV9oLCB2dV9sLCB2dV9oLCB2dl9sLCB2dl9oLCB2
dTJfbCwgdnUyX2gsIHZ2Ml9sLCB2djJfaDsgXAorKyAgICB2ZWNfczMyIFJfbCwgUl9oLCBHX2ws
IEdfaCwgQl9sLCBCX2g7IFwKKysgICAgdmVjX3MzMiB5X2NvZWZmID0gX21tX3NldDFfZXBpMzIo
Yy0+eXV2MnJnYl95X2NvZWZmICogNCk7IFwKKysgICAgdmVjX3MzMiB5X2FkZCA9IF9tbV9zZXQx
X2VwaTMyKCgxIDw8IDIxKSAtIGMtPnl1djJyZ2JfeV9vZmZzZXQgKiBjLT55dXYycmdiX3lfY29l
ZmYpOyBcCisrICAgIHZlY19zMzIgdjJyX2NvZWZmID0gX21tX3NldDFfZXBpMzIoYy0+eXV2MnJn
Yl92MnJfY29lZmYgPDwgdXZzaGwpOyBcCisrICAgIHZlY19zMzIgdjJnX2NvZWZmID0gX21tX3Nl
dDFfZXBpMzIoYy0+eXV2MnJnYl92MmdfY29lZmYgPDwgdXZzaGwpOyBcCisrICAgIHZlY19zMzIg
dTJnX2NvZWZmID0gX21tX3NldDFfZXBpMzIoYy0+eXV2MnJnYl91MmdfY29lZmYgPDwgdXZzaGwp
OyBcCisrICAgIHZlY19zMzIgdTJiX2NvZWZmID0gX21tX3NldDFfZXBpMzIoYy0+eXV2MnJnYl91
MmJfY29lZmYgPDwgdXZzaGwpOyBcCisrICAgIHZlY191MTYgdXZzdWIgPSBfbW1fc2V0MV9lcGkx
Nih1dmFscGhhIDwgMjA0OCA/IDEyOCA8PCA3IDogMTI4IDw8IDgpOyBcCisrICAgIGhhc0FscGhh
KHZlY19zMTYgQSwgYWRkNjQgPSBfbW1fc2V0MV9lcGkxNig2NCk7KSBcCisrICAgIF9fbTEyOGkg
djAsIHYxLCB2MiwgdjMsIHY0LCB2NTsgXAorKyAgICBpbnQgaTsgXAorKyAgICBJTklUXyMjZm10
KFIsIEIpIFwKKysgICAgXAorKyAgICBmb3IgKGkgPSAwOyBpIDwgKGRzdFcgKyAxKSA+PiAxOyBp
ICs9IDgpIHsgXAorKyAgICAgICAgdjAgPSBWRUNfTEQoYnVmMCArIGkgKiAyKTsgXAorKyAgICAg
ICAgdjIgPSBfbW1fdW5wYWNrbG9fZXBpMTYodjAsIHYwKTsgXAorKyAgICAgICAgdjMgPSBfbW1f
dW5wYWNraGlfZXBpMTYodjAsIHYwKTsgXAorKyAgICAgICAgdnlfbCA9IF9tbV9zcmFpX2VwaTMy
KHYyLCAxNik7IFwKKysgICAgICAgIHZ5X2ggPSBfbW1fc3JhaV9lcGkzMih2MywgMTYpOyBcCisr
ICAgICAgICBcCisrICAgICAgICB2MCA9IFZFQ19MRCh1YnVmMCArIGkpOyBcCisrICAgICAgICB2
MSA9IFZFQ19MRCh2YnVmMCArIGkpOyBcCisrICAgICAgICBpZiAodXZhbHBoYSA+PSAyMDQ4KSB7
IFwKKysgICAgICAgICAgICB2MiA9IFZFQ19MRCh1YnVmMSArIGkpOyBcCisrICAgICAgICAgICAg
djMgPSBWRUNfTEQodmJ1ZjEgKyBpKTsgXAorKyAgICAgICAgICAgIHYwID0gX21tX2FkZF9lcGkx
Nih2MCwgdjIpOyBcCisrICAgICAgICAgICAgdjEgPSBfbW1fYWRkX2VwaTE2KHYxLCB2Myk7IFwK
KysgICAgICAgIH0gXAorKyAgICAgICAgdjAgPSBfbW1fc3ViX2VwaTE2KHYwLCB1dnN1Yik7IFwK
KysgICAgICAgIHYxID0gX21tX3N1Yl9lcGkxNih2MSwgdXZzdWIpOyBcCisrICAgICAgICB2MiA9
IF9tbV91bnBhY2tsb19lcGkxNih2MCwgdjApOyBcCisrICAgICAgICB2MyA9IF9tbV91bnBhY2to
aV9lcGkxNih2MCwgdjApOyBcCisrICAgICAgICB2dTJfbCA9IF9tbV9zcmFpX2VwaTMyKHYyLCAx
Nik7IFwKKysgICAgICAgIHZ1Ml9oID0gX21tX3NyYWlfZXBpMzIodjMsIDE2KTsgXAorKyAgICAg
ICAgdjIgPSBfbW1fdW5wYWNrbG9fZXBpMTYodjEsIHYxKTsgXAorKyAgICAgICAgdjMgPSBfbW1f
dW5wYWNraGlfZXBpMTYodjEsIHYxKTsgXAorKyAgICAgICAgdnYyX2wgPSBfbW1fc3JhaV9lcGkz
Mih2MiwgMTYpOyBcCisrICAgICAgICB2djJfaCA9IF9tbV9zcmFpX2VwaTMyKHYzLCAxNik7IFwK
KysgICAgICAgIFwKKysgICAgICAgIGhhc0FscGhhKCBcCisrICAgICAgICAgICAgQV9sID0gVkVD
X0xEKGFidWYwICsgaSAqIDIpOyBcCisrICAgICAgICAgICAgQV9sID0gX21tX2FkZF9lcGkxNihB
X2wsIGFkZDY0KTsgXAorKyAgICAgICAgICAgIEFfbCA9IF9tbV9zcmFpX2VwaTE2KEFfbCwgNyk7
IFwKKysgICAgICAgICkgXAorKyAgICAgICAgXAorKyAgICAgICAgdnVfbCA9IF9tbV91bnBhY2ts
b19lcGkzMih2dTJfbCwgdnUyX2wpOyBcCisrICAgICAgICB2dV9oID0gX21tX3VucGFja2hpX2Vw
aTMyKHZ1Ml9sLCB2dTJfbCk7IFwKKysgICAgICAgIHZ2X2wgPSBfbW1fdW5wYWNrbG9fZXBpMzIo
dnYyX2wsIHZ2Ml9sKTsgXAorKyAgICAgICAgdnZfaCA9IF9tbV91bnBhY2toaV9lcGkzMih2djJf
bCwgdnYyX2wpOyBcCisrICAgICAgICBcCisrICAgICAgICBDQUxDX1JHQiBcCisrICAgICAgICBX
UklURV8jI2ZtdChSLCBCKSBcCisrICAgICAgICBcCisrICAgICAgICB2MCA9IFZFQ19MRChidWYw
ICsgaSAqIDIgKyA4KTsgXAorKyAgICAgICAgdjIgPSBfbW1fdW5wYWNrbG9fZXBpMTYodjAsIHYw
KTsgXAorKyAgICAgICAgdjMgPSBfbW1fdW5wYWNraGlfZXBpMTYodjAsIHYwKTsgXAorKyAgICAg
ICAgdnlfbCA9IF9tbV9zcmFpX2VwaTMyKHYyLCAxNik7IFwKKysgICAgICAgIHZ5X2ggPSBfbW1f
c3JhaV9lcGkzMih2MywgMTYpOyBcCisrICAgICAgICBcCisrICAgICAgICBoYXNBbHBoYSggXAor
KyAgICAgICAgICAgIEFfbCA9IFZFQ19MRChhYnVmMCArIGkgKiAyICsgOCk7IFwKKysgICAgICAg
ICAgICBBX2wgPSBfbW1fYWRkX2VwaTE2KEFfbCwgYWRkNjQpOyBcCisrICAgICAgICAgICAgQV9s
ID0gX21tX3NyYWlfZXBpMTYoQV9sLCA3KTsgXAorKyAgICAgICAgKSBcCisrICAgICAgICBcCisr
ICAgICAgICB2dV9sID0gX21tX3VucGFja2xvX2VwaTMyKHZ1Ml9oLCB2dTJfaCk7IFwKKysgICAg
ICAgIHZ1X2ggPSBfbW1fdW5wYWNraGlfZXBpMzIodnUyX2gsIHZ1Ml9oKTsgXAorKyAgICAgICAg
dnZfbCA9IF9tbV91bnBhY2tsb19lcGkzMih2djJfaCwgdnYyX2gpOyBcCisrICAgICAgICB2dl9o
ID0gX21tX3VucGFja2hpX2VwaTMyKHZ2Ml9oLCB2djJfaCk7IFwKKysgICAgICAgIFwKKysgICAg
ICAgIENBTENfUkdCIFwKKysgICAgICAgIFdSSVRFXyMjZm10KFIsIEIpIFwKKysgICAgfSBcCisr
fQorKworKyNlbmRpZgorKworK1lVVjJSR0JXUkFQUEVSWChyZ2J4MzIsIFJHQlgsIFIsIEIsIE5P
X0FMUEhBKQorK1lVVjJSR0JXUkFQUEVSWChiZ3J4MzIsIFJHQlgsIEIsIFIsIE5PX0FMUEhBKQor
K1lVVjJSR0JXUkFQUEVSWCh4cmdiMzIsIFhSR0IsIFIsIEIsIE5PX0FMUEhBKQorK1lVVjJSR0JX
UkFQUEVSWCh4YmdyMzIsIFhSR0IsIEIsIFIsIE5PX0FMUEhBKQorK1lVVjJSR0JXUkFQUEVSWChy
Z2IyNCwgUkdCLCBSLCBCLCBOT19BTFBIQSkKKytZVVYyUkdCV1JBUFBFUlgoYmdyMjQsIFJHQiwg
QiwgUiwgTk9fQUxQSEEpCisrCisrWVVWMlJHQldSQVBQRVIyKHJnYngzMiwgUkdCWCwgUiwgQiwg
Tk9fQUxQSEEpCisrWVVWMlJHQldSQVBQRVIyKGJncngzMiwgUkdCWCwgQiwgUiwgTk9fQUxQSEEp
CisrWVVWMlJHQldSQVBQRVIyKHhyZ2IzMiwgWFJHQiwgUiwgQiwgTk9fQUxQSEEpCisrWVVWMlJH
QldSQVBQRVIyKHhiZ3IzMiwgWFJHQiwgQiwgUiwgTk9fQUxQSEEpCisrWVVWMlJHQldSQVBQRVIy
KHJnYjI0LCBSR0IsIFIsIEIsIE5PX0FMUEhBKQorK1lVVjJSR0JXUkFQUEVSMihiZ3IyNCwgUkdC
LCBCLCBSLCBOT19BTFBIQSkKKysKKytZVVYyUkdCV1JBUFBFUjEocmdieDMyLCBSR0JYLCBSLCBC
LCBOT19BTFBIQSkKKytZVVYyUkdCV1JBUFBFUjEoYmdyeDMyLCBSR0JYLCBCLCBSLCBOT19BTFBI
QSkKKytZVVYyUkdCV1JBUFBFUjEoeHJnYjMyLCBYUkdCLCBSLCBCLCBOT19BTFBIQSkKKytZVVYy
UkdCV1JBUFBFUjEoeGJncjMyLCBYUkdCLCBCLCBSLCBOT19BTFBIQSkKKytZVVYyUkdCV1JBUFBF
UjEocmdiMjQsIFJHQiwgUiwgQiwgTk9fQUxQSEEpCisrWVVWMlJHQldSQVBQRVIxKGJncjI0LCBS
R0IsIEIsIFIsIE5PX0FMUEhBKQorKworKyNkZWZpbmUgV1JJVEVfNDIyKHZ1LCB2diwgeDAsIHgx
KSBcCisrICAgIHZ5MCA9IF9tbV9zcmFpX2VwaTMyKHZ5MCwgMTkpOyBcCisrICAgIHZ5MSA9IF9t
bV9zcmFpX2VwaTMyKHZ5MSwgMTkpOyBcCisrICAgIHZ5MiA9IF9tbV9zcmFpX2VwaTMyKHZ5Miwg
MTkpOyBcCisrICAgIHZ5MyA9IF9tbV9zcmFpX2VwaTMyKHZ5MywgMTkpOyBcCisrICAgIHZ1IyMw
ID0gX21tX3NyYWlfZXBpMzIodnUjIzAsIDE5KTsgXAorKyAgICB2dSMjMSA9IF9tbV9zcmFpX2Vw
aTMyKHZ1IyMxLCAxOSk7IFwKKysgICAgdnYjIzAgPSBfbW1fc3JhaV9lcGkzMih2diMjMCwgMTkg
LSAxNik7IFwKKysgICAgdnYjIzEgPSBfbW1fc3JhaV9lcGkzMih2diMjMSwgMTkgLSAxNik7IFwK
KysgICAgdjAgPSBfbW1fcGFja3NfZXBpMzIodnkwLCB2eTEpOyBcCisrICAgIHYxID0gX21tX3Bh
Y2tzX2VwaTMyKHZ5MiwgdnkzKTsgXAorKyAgICB2MiA9IF9tbV9ibGVuZF9lcGkxNih2dSMjMCwg
dnYjIzAsIDB4YWEpOyBcCisrICAgIHYzID0gX21tX2JsZW5kX2VwaTE2KHZ1IyMxLCB2diMjMSwg
MHhhYSk7IFwKKysgICAgdjQgPSBfbW1fcGFja3VzX2VwaTE2KHYwLCB2MSk7IFwKKysgICAgdjUg
PSBfbW1fcGFja3VzX2VwaTE2KHYyLCB2Myk7IFwKKysgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBp
OCh4MCwgeDEpOyBcCisrICAgIHYxID0gX21tX3VucGFja2hpX2VwaTgoeDAsIHgxKTsgXAorKyAg
ICBWRUNfU1QoZGVzdCwgdjApOyBcCisrICAgIFZFQ19TVChkZXN0ICsgMTYsIHYxKTsgXAorKyAg
ICBkZXN0ICs9IDMyOworKworKyNkZWZpbmUgV1JJVEVfWVVZVjQyMiBXUklURV80MjIodnUsIHZ2
LCB2NCwgdjUpCisrI2RlZmluZSBXUklURV9ZVllVNDIyIFdSSVRFXzQyMih2diwgdnUsIHY0LCB2
NSkKKysjZGVmaW5lIFdSSVRFX1VZVlk0MjIgV1JJVEVfNDIyKHZ1LCB2diwgdjUsIHY0KQorKwor
KyNkZWZpbmUgWVVWMlBBQ0tFRFdSQVBQRVJYKGV4dCwgZm10KSBcCisrc3RhdGljIHZvaWQgeXV2
MiMjZXh0IyNfWF9lMmsoU3dzQ29udGV4dCAqYywgY29uc3QgaW50MTZfdCAqbHVtRmlsdGVyLCBc
CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCAqKmx1bVNyYywg
aW50IGx1bUZpbHRlclNpemUsIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBpbnQxNl90ICpjaHJGaWx0ZXIsIGNvbnN0IGludDE2X3QgKipjaHJVU3JjLCBcCisrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCAqKmNoclZTcmMsIGludCBjaHJG
aWx0ZXJTaXplLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZf
dCAqKmFscFNyYywgdWludDhfdCAqZGVzdCwgaW50IGRzdFcsIFwKKysgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgeSkgXAorK3sgXAorKyAgICBpbnQgaSwgajsgXAorKyAgICBfX20x
MjhpIHZ5MCwgdnkxLCB2eTIsIHZ5MywgdnUwLCB2dTEsIHZ2MCwgdnYxOyBcCisrICAgIF9fbTEy
OGkgdjAsIHYxLCB2MiwgdjMsIHY0LCB2NTsgXAorKyAgICB2ZWNfczMyIHN0YXJ0ID0gX21tX3Nl
dDFfZXBpMzIoMSA8PCAxOCk7IFwKKysgICAgXAorKyAgICBmb3IgKGkgPSAwOyBpIDwgKGRzdFcg
KyAxKSA+PiAxOyBpICs9IDgpIHsgXAorKyAgICAgICAgdnkwID0gdnkxID0gdnkyID0gdnkzID0g
c3RhcnQ7IFwKKysgICAgICAgIGZvciAoaiA9IDA7IGogPCBsdW1GaWx0ZXJTaXplOyBqKyspIHsg
XAorKyAgICAgICAgICAgIHYwID0gVkVDX0xEKGx1bVNyY1tqXSArIGkgKiAyKTsgXAorKyAgICAg
ICAgICAgIHYxID0gVkVDX0xEKGx1bVNyY1tqXSArIGkgKiAyICsgOCk7IFwKKysgICAgICAgICAg
ICB2NSA9IF9tbV9zZXQxX2VwaTE2KGx1bUZpbHRlcltqXSk7IFwKKysgICAgICAgICAgICB2MiA9
IF9tbV9tdWxsb19lcGkxNih2MCwgdjUpOyBcCisrICAgICAgICAgICAgdjMgPSBfbW1fbXVsaGlf
ZXBpMTYodjAsIHY1KTsgXAorKyAgICAgICAgICAgIHY0ID0gX21tX211bGxvX2VwaTE2KHYxLCB2
NSk7IFwKKysgICAgICAgICAgICB2NSA9IF9tbV9tdWxoaV9lcGkxNih2MSwgdjUpOyBcCisrICAg
ICAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpMTYodjIsIHYzKTsgXAorKyAgICAgICAgICAg
IHYxID0gX21tX3VucGFja2hpX2VwaTE2KHYyLCB2Myk7IFwKKysgICAgICAgICAgICB2MiA9IF9t
bV91bnBhY2tsb19lcGkxNih2NCwgdjUpOyBcCisrICAgICAgICAgICAgdjMgPSBfbW1fdW5wYWNr
aGlfZXBpMTYodjQsIHY1KTsgXAorKyAgICAgICAgICAgIHZ5MCA9IF9tbV9hZGRfZXBpMzIodnkw
LCB2MCk7IFwKKysgICAgICAgICAgICB2eTEgPSBfbW1fYWRkX2VwaTMyKHZ5MSwgdjEpOyBcCisr
ICAgICAgICAgICAgdnkyID0gX21tX2FkZF9lcGkzMih2eTIsIHYyKTsgXAorKyAgICAgICAgICAg
IHZ5MyA9IF9tbV9hZGRfZXBpMzIodnkzLCB2Myk7IFwKKysgICAgICAgIH0gXAorKyAgICAgICAg
XAorKyAgICAgICAgdnUwID0gdnUxID0gdnYwID0gdnYxID0gc3RhcnQ7IFwKKysgICAgICAgIGZv
ciAoaiA9IDA7IGogPCBjaHJGaWx0ZXJTaXplOyBqKyspIHsgXAorKyAgICAgICAgICAgIHYwID0g
VkVDX0xEKGNoclVTcmNbal0gKyBpKTsgXAorKyAgICAgICAgICAgIHYxID0gVkVDX0xEKGNoclZT
cmNbal0gKyBpKTsgXAorKyAgICAgICAgICAgIHY1ID0gX21tX3NldDFfZXBpMTYoY2hyRmlsdGVy
W2pdKTsgXAorKyAgICAgICAgICAgIHYyID0gX21tX211bGxvX2VwaTE2KHYwLCB2NSk7IFwKKysg
ICAgICAgICAgICB2MyA9IF9tbV9tdWxoaV9lcGkxNih2MCwgdjUpOyBcCisrICAgICAgICAgICAg
djQgPSBfbW1fbXVsbG9fZXBpMTYodjEsIHY1KTsgXAorKyAgICAgICAgICAgIHY1ID0gX21tX211
bGhpX2VwaTE2KHYxLCB2NSk7IFwKKysgICAgICAgICAgICB2MCA9IF9tbV91bnBhY2tsb19lcGkx
Nih2MiwgdjMpOyBcCisrICAgICAgICAgICAgdjEgPSBfbW1fdW5wYWNraGlfZXBpMTYodjIsIHYz
KTsgXAorKyAgICAgICAgICAgIHYyID0gX21tX3VucGFja2xvX2VwaTE2KHY0LCB2NSk7IFwKKysg
ICAgICAgICAgICB2MyA9IF9tbV91bnBhY2toaV9lcGkxNih2NCwgdjUpOyBcCisrICAgICAgICAg
ICAgdnUwID0gX21tX2FkZF9lcGkzMih2dTAsIHYwKTsgXAorKyAgICAgICAgICAgIHZ1MSA9IF9t
bV9hZGRfZXBpMzIodnUxLCB2MSk7IFwKKysgICAgICAgICAgICB2djAgPSBfbW1fYWRkX2VwaTMy
KHZ2MCwgdjIpOyBcCisrICAgICAgICAgICAgdnYxID0gX21tX2FkZF9lcGkzMih2djEsIHYzKTsg
XAorKyAgICAgICAgfSBcCisrICAgICAgICBcCisrICAgICAgICBXUklURV8jI2ZtdCMjNDIyIFwK
KysgICAgfSBcCisrfQorKworKyNkZWZpbmUgWVVWMlBBQ0tFRFdSQVBQRVIyKGV4dCwgZm10KSBc
Cisrc3RhdGljIHZvaWQgeXV2MiMjZXh0IyNfMl9lMmsoU3dzQ29udGV4dCAqYywgY29uc3QgaW50
MTZfdCAqYnVmWzJdLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50
MTZfdCAqdWJ1ZlsyXSwgY29uc3QgaW50MTZfdCAqdmJ1ZlsyXSwgXAorKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGludDE2X3QgKmFidWZbMl0sIHVpbnQ4X3QgKmRlc3QsIGlu
dCBkc3RXLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHlhbHBoYSwgaW50
IHV2YWxwaGEsIGludCB5KSBcCisreyBcCisrICAgIGNvbnN0IGludDE2X3QgKmJ1ZjAgPSBidWZb
MF0sICpidWYxID0gYnVmWzFdLCBcCisrICAgICAgICAgICAgICAgICAgKnVidWYwID0gdWJ1Zlsw
XSwgKnVidWYxID0gdWJ1ZlsxXSwgXAorKyAgICAgICAgICAgICAgICAgICp2YnVmMCA9IHZidWZb
MF0sICp2YnVmMSA9IHZidWZbMV07IFwKKysgICAgdmVjX3MxNiB2eWFscGhhID0gX21tX3NldDFf
ZXBpMzIoNDA5NiArIHlhbHBoYSAqIDB4ZmZmZik7IFwKKysgICAgdmVjX3MxNiB2dXZhbHBoYSA9
IF9tbV9zZXQxX2VwaTMyKDQwOTYgKyB1dmFscGhhICogMHhmZmZmKTsgXAorKyAgICBfX20xMjhp
IHZ5MCwgdnkxLCB2eTIsIHZ5MywgdnUwLCB2dTEsIHZ2MCwgdnYxOyBcCisrICAgIF9fbTEyOGkg
djAsIHYxLCB2MiwgdjMsIHY0LCB2NTsgXAorKyAgICBpbnQgaTsgXAorKyAgICBhdl9hc3NlcnQy
KHlhbHBoYSA8PSA0MDk2VSk7IFwKKysgICAgYXZfYXNzZXJ0Mih1dmFscGhhIDw9IDQwOTZVKTsg
XAorKyAgICBcCisrICAgIGZvciAoaSA9IDA7IGkgPCAoZHN0VyArIDEpID4+IDE7IGkgKz0gOCkg
eyBcCisrICAgICAgICBTRVRVUChidWYsIGkgKiAyLCB2eWFscGhhLCB2eTAsIHZ5MSk7IFwKKysg
ICAgICAgIFNFVFVQKGJ1ZiwgaSAqIDIgKyA4LCB2eWFscGhhLCB2eTIsIHZ5Myk7IFwKKysgICAg
ICAgIFNFVFVQKHVidWYsIGksIHZ1dmFscGhhLCB2dTAsIHZ1MSk7IFwKKysgICAgICAgIFNFVFVQ
KHZidWYsIGksIHZ1dmFscGhhLCB2djAsIHZ2MSk7IFwKKysgICAgICAgIFwKKysgICAgICAgIFdS
SVRFXyMjZm10IyM0MjIgXAorKyAgICB9IFwKKyt9CisrCisrI2RlZmluZSBJTklUMV80MjIgX19t
MTI4aSBibGVuZHV2ID0gX21tX3NldDFfZXBpMTYoMjU1KTsKKysKKysjZGVmaW5lIFdSSVRFMV80
MjIodnUsIHZ2LCB4MCwgeDEpIFwKKysgICAgdjUgPSBfbW1fc3JsaV9lcGkxNih2dSwgOCk7IFwK
KysgICAgdjQgPSBfbW1fcGFja3VzX2VwaTE2KHZ5MCwgdnkxKTsgXAorKyAgICB2NSA9IF9tbV9i
bGVuZHZfZXBpOCh2diwgdjUsIGJsZW5kdXYpOyBcCisrICAgIHYwID0gX21tX3VucGFja2xvX2Vw
aTgoeDAsIHgxKTsgXAorKyAgICB2MSA9IF9tbV91bnBhY2toaV9lcGk4KHgwLCB4MSk7IFwKKysg
ICAgVkVDX1NUKGRlc3QsIHYwKTsgXAorKyAgICBWRUNfU1QoZGVzdCArIDE2LCB2MSk7IFwKKysg
ICAgZGVzdCArPSAzMjsKKysKKysjZGVmaW5lIFdSSVRFMV9ZVVlWNDIyIFdSSVRFMV80MjIodnUs
IHZ2LCB2NCwgdjUpCisrI2RlZmluZSBXUklURTFfWVZZVTQyMiBXUklURTFfNDIyKHZ2LCB2dSwg
djQsIHY1KQorKyNkZWZpbmUgV1JJVEUxX1VZVlk0MjIgV1JJVEUxXzQyMih2dSwgdnYsIHY1LCB2
NCkKKysKKysjZGVmaW5lIFlVVjJQQUNLRURXUkFQUEVSMShleHQsIGZtdCkgXAorK3N0YXRpYyB2
b2lkIHl1djIjI2V4dCMjXzFfZTJrKFN3c0NvbnRleHQgKmMsIGNvbnN0IGludDE2X3QgKmJ1ZjAs
IFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQxNl90ICp1YnVmWzJd
LCBjb25zdCBpbnQxNl90ICp2YnVmWzJdLCBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgaW50MTZfdCAqYWJ1ZjAsIHVpbnQ4X3QgKmRlc3QsIGludCBkc3RXLCBcCisrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHV2YWxwaGEsIGludCB5KSBcCisreyBcCisr
ICAgIGNvbnN0IGludDE2X3QgKnVidWYwID0gdWJ1ZlswXSwgKnZidWYwID0gdmJ1ZlswXTsgXAor
KyAgICB2ZWNfczE2IHZ5MCwgdnkxLCB2dSwgdnY7IFwKKysgICAgdmVjX3MxNiBhZGQ2NCA9IF9t
bV9zZXQxX2VwaTE2KDY0KTsgXAorKyAgICBpbnQgaTsgXAorKyAgICBfX20xMjhpIHYwLCB2MSwg
djIsIHYzLCB2NCwgdjU7IFwKKysgICAgTE9BRF9aRVJPOyBcCisrICAgIElOSVQxXzQyMiBcCisr
ICAgIFwKKysgICAgaWYgKHV2YWxwaGEgPCAyMDQ4KSB7IFwKKysgICAgICAgIGZvciAoaSA9IDA7
IGkgPCAoZHN0VyArIDEpID4+IDE7IGkgKz0gOCkgeyBcCisrICAgICAgICAgICAgdnkwID0gVkVD
X0xEKGJ1ZjAgKyBpICogMik7IFwKKysgICAgICAgICAgICB2eTEgPSBWRUNfTEQoYnVmMCArIGkg
KiAyICsgOCk7IFwKKysgICAgICAgICAgICB2dSA9IFZFQ19MRCh1YnVmMCArIGkpOyBcCisrICAg
ICAgICAgICAgdnYgPSBWRUNfTEQodmJ1ZjAgKyBpKTsgXAorKyAgICAgICAgICAgIHZ5MCA9IF9t
bV9hZGRzX2VwaTE2KHZ5MCwgYWRkNjQpOyBcCisrICAgICAgICAgICAgdnkxID0gX21tX2FkZHNf
ZXBpMTYodnkxLCBhZGQ2NCk7IFwKKysgICAgICAgICAgICB2dSA9IF9tbV9tYXhfZXBpMTYodnUs
IHplcm92KTsgXAorKyAgICAgICAgICAgIHZ2ID0gX21tX21heF9lcGkxNih2diwgemVyb3YpOyBc
CisrICAgICAgICAgICAgdnkwID0gX21tX3NyYWlfZXBpMTYodnkwLCA3KTsgXAorKyAgICAgICAg
ICAgIHZ5MSA9IF9tbV9zcmFpX2VwaTE2KHZ5MSwgNyk7IFwKKysgICAgICAgICAgICB2dSA9IF9t
bV9hZGRfZXBpMTYodnUsIGFkZDY0KTsgXAorKyAgICAgICAgICAgIHZ2ID0gX21tX2FkZF9lcGkx
Nih2diwgYWRkNjQpOyBcCisrICAgICAgICAgICAgdnUgPSBfbW1fYWRkc19lcHUxNih2dSwgdnUp
OyBcCisrICAgICAgICAgICAgdnYgPSBfbW1fYWRkc19lcHUxNih2diwgdnYpOyBcCisrICAgICAg
ICAgICAgXAorKyAgICAgICAgICAgIFdSSVRFMV8jI2ZtdCMjNDIyIFwKKysgICAgICAgIH0gXAor
KyAgICB9IGVsc2UgeyBcCisrICAgICAgICBjb25zdCBpbnQxNl90ICp1YnVmMSA9IHVidWZbMV0s
ICp2YnVmMSA9IHZidWZbMV07IFwKKysgICAgICAgIHZlY19zMTYgYWRkMTI4ID0gX21tX2FkZF9l
cGkxNihhZGQ2NCwgYWRkNjQpOyBcCisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGRzdFcgKyAx
KSA+PiAxOyBpICs9IDgpIHsgXAorKyAgICAgICAgICAgIHZ5MCA9IFZFQ19MRChidWYwICsgaSAq
IDIpOyBcCisrICAgICAgICAgICAgdnkxID0gVkVDX0xEKGJ1ZjAgKyBpICogMiArIDgpOyBcCisr
ICAgICAgICAgICAgdjAgPSBWRUNfTEQodWJ1ZjAgKyBpKTsgXAorKyAgICAgICAgICAgIHYxID0g
VkVDX0xEKHZidWYwICsgaSk7IFwKKysgICAgICAgICAgICB2MiA9IFZFQ19MRCh1YnVmMSArIGkp
OyBcCisrICAgICAgICAgICAgdjMgPSBWRUNfTEQodmJ1ZjEgKyBpKTsgXAorKyAgICAgICAgICAg
IHZ5MCA9IF9tbV9hZGRzX2VwaTE2KHZ5MCwgYWRkNjQpOyBcCisrICAgICAgICAgICAgdnkxID0g
X21tX2FkZHNfZXBpMTYodnkxLCBhZGQ2NCk7IFwKKysgICAgICAgICAgICB2MCA9IF9tbV9tYXhf
ZXBpMTYodjAsIHplcm92KTsgXAorKyAgICAgICAgICAgIHYxID0gX21tX21heF9lcGkxNih2MSwg
emVyb3YpOyBcCisrICAgICAgICAgICAgdjIgPSBfbW1fbWF4X2VwaTE2KHYyLCB6ZXJvdik7IFwK
KysgICAgICAgICAgICB2MyA9IF9tbV9tYXhfZXBpMTYodjMsIHplcm92KTsgXAorKyAgICAgICAg
ICAgIHYwID0gX21tX2FkZF9lcGkxNih2MCwgYWRkMTI4KTsgXAorKyAgICAgICAgICAgIHYxID0g
X21tX2FkZF9lcGkxNih2MSwgYWRkMTI4KTsgXAorKyAgICAgICAgICAgIHZ5MCA9IF9tbV9zcmFp
X2VwaTE2KHZ5MCwgNyk7IFwKKysgICAgICAgICAgICB2eTEgPSBfbW1fc3JhaV9lcGkxNih2eTEs
IDcpOyBcCisrICAgICAgICAgICAgdnUgPSBfbW1fYWRkc19lcHUxNih2MCwgdjIpOyBcCisrICAg
ICAgICAgICAgdnYgPSBfbW1fYWRkc19lcHUxNih2MSwgdjMpOyBcCisrICAgICAgICAgICAgXAor
KyAgICAgICAgICAgIFdSSVRFMV8jI2ZtdCMjNDIyIFwKKysgICAgICAgIH0gXAorKyAgICB9IFwK
Kyt9CisrCisrWVVWMlBBQ0tFRFdSQVBQRVJYKHl1eXY0MjIsIFlVWVYpCisrWVVWMlBBQ0tFRFdS
QVBQRVJYKHl2eXU0MjIsIFlWWVUpCisrWVVWMlBBQ0tFRFdSQVBQRVJYKHV5dnk0MjIsIFVZVlkp
CisrCisrWVVWMlBBQ0tFRFdSQVBQRVIyKHl1eXY0MjIsIFlVWVYpCisrWVVWMlBBQ0tFRFdSQVBQ
RVIyKHl2eXU0MjIsIFlWWVUpCisrWVVWMlBBQ0tFRFdSQVBQRVIyKHV5dnk0MjIsIFVZVlkpCisr
CisrWVVWMlBBQ0tFRFdSQVBQRVIxKHl1eXY0MjIsIFlVWVYpCisrWVVWMlBBQ0tFRFdSQVBQRVIx
KHl2eXU0MjIsIFlWWVUpCisrWVVWMlBBQ0tFRFdSQVBQRVIxKHV5dnk0MjIsIFVZVlkpCisrCisr
I2RlZmluZSBIU0NBTEVfSU5JVCgpIFwKKysgICAgX19tMTI4aSB2MCwgdjEsIHYyLCB2MywgdjQs
IHY1LCB2NjsgXAorKyAgICB2ZWNfdTMyIHZhZGQgPSBfbW1fc2V0cl9lcGkzMigwLCB4SW5jLCB4
SW5jICogMiwgeEluYyAqIDMpOyBcCisrICAgIHZlY191MTYgdmFkZDE2ID0gX21tX3NldHJfZXBp
MTYoMCwgeEluYywgeEluYyAqIDIsIHhJbmMgKiAzLCBcCisrICAgICAgICB4SW5jICogNCwgeElu
YyAqIDUsIHhJbmMgKiA2LCB4SW5jICogNykKKysKKysjZGVmaW5lIEhTQ0FMRTEoKSBcCisrICAg
IHY0ID0gX21tX3NldDFfZXBpMTYoeHBvcyk7IFwKKysgICAgdjUgPSBfbW1fc2V0MV9lcGkxNih4
cG9zICsgeEluYyAqIDgpOyBcCisrICAgIHY0ID0gX21tX2FkZF9lcGkxNih2NCwgdmFkZDE2KTsg
XAorKyAgICB2NSA9IF9tbV9hZGRfZXBpMTYodjUsIHZhZGQxNik7IFwKKysgICAgdjQgPSBfbW1f
c3JsaV9lcGkxNih2NCwgOSk7IFwKKysgICAgdjUgPSBfbW1fc3JsaV9lcGkxNih2NSwgOSk7IFwK
KysgICAgXAorKyAgICB2MCA9IF9tbV9zZXQxX2VwaTMyKHhwb3MgJiAweGZmZmYpOyBcCisrICAg
IHYxID0gX21tX3NldDFfZXBpMzIoKHhwb3MgJiAweGZmZmYpICsgeEluYyAqIDQpOyBcCisrICAg
IHYyID0gX21tX3NldDFfZXBpMzIoKHhwb3MgJiAweGZmZmYpICsgeEluYyAqIDgpOyBcCisrICAg
IHYzID0gX21tX3NldDFfZXBpMzIoKHhwb3MgJiAweGZmZmYpICsgeEluYyAqIDEyKTsgXAorKyAg
ICB2MCA9IF9tbV9hZGRfZXBpMzIodjAsIHZhZGQpOyBcCisrICAgIHYxID0gX21tX2FkZF9lcGkz
Mih2MSwgdmFkZCk7IFwKKysgICAgdjIgPSBfbW1fYWRkX2VwaTMyKHYyLCB2YWRkKTsgXAorKyAg
ICB2MyA9IF9tbV9hZGRfZXBpMzIodjMsIHZhZGQpOyBcCisrICAgIHYwID0gX21tX3NybGlfZXBp
MzIodjAsIDE2KTsgXAorKyAgICB2MSA9IF9tbV9zcmxpX2VwaTMyKHYxLCAxNik7IFwKKysgICAg
djIgPSBfbW1fc3JsaV9lcGkzMih2MiwgMTYpOyBcCisrICAgIHYzID0gX21tX3NybGlfZXBpMzIo
djMsIDE2KTsgXAorKyAgICB2MCA9IF9tbV9wYWNrc19lcGkzMih2MCwgdjEpOyBcCisrICAgIHYy
ID0gX21tX3BhY2tzX2VwaTMyKHYyLCB2Myk7IFwKKysgICAgdjYgPSBfbW1fcGFja3VzX2VwaTE2
KHYwLCB2Mik7IFwKKysgICAgXAorKyAgICB4eCA9IHhwb3MgPj4gMTYKKysKKytzdGF0aWMgdm9p
ZCBoeXNjYWxlX2Zhc3RfZTJrKFN3c0NvbnRleHQgKmMsIGludDE2X3QgKmRzdCwgaW50IGRzdFdp
ZHRoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNyYywgaW50
IHNyY1csIGludCB4SW5jKQorK3sKKysgICAgaW50IGksIHhwb3MgPSAwLCB4eCwgYTE7CisrICAg
IExPQURfWkVSTzsKKysgICAgSFNDQUxFX0lOSVQoKTsKKysKKysgICAgZm9yIChpID0gMDsgaSA8
IGRzdFdpZHRoOyBpICs9IDE2KSB7CisrICAgICAgICBIU0NBTEUxKCk7CisrCisrICAgICAgICB2
MSA9IFZFQ19MRChzcmMgKyB4eCk7CisrICAgICAgICB2MyA9IFZFQ19MRChzcmMgKyB4eCArIDEp
OworKworKyAgICAgICAgdjEgPSBfbW1fc2h1ZmZsZV9lcGk4KHYxLCB2Nik7CisrICAgICAgICB2
MyA9IF9tbV9zaHVmZmxlX2VwaTgodjMsIHY2KTsKKysgICAgICAgIHYwID0gX21tX3VucGFja2xv
X2VwaTgodjEsIHplcm92KTsKKysgICAgICAgIHYxID0gX21tX3VucGFja2hpX2VwaTgodjEsIHpl
cm92KTsKKysgICAgICAgIHYyID0gX21tX3VucGFja2xvX2VwaTgodjMsIHplcm92KTsKKysgICAg
ICAgIHYzID0gX21tX3VucGFja2hpX2VwaTgodjMsIHplcm92KTsKKysgICAgICAgIHYyID0gX21t
X3N1Yl9lcGkxNih2MiwgdjApOworKyAgICAgICAgdjMgPSBfbW1fc3ViX2VwaTE2KHYzLCB2MSk7
CisrICAgICAgICB2MCA9IF9tbV9zbGxpX2VwaTE2KHYwLCA3KTsKKysgICAgICAgIHYxID0gX21t
X3NsbGlfZXBpMTYodjEsIDcpOworKyAgICAgICAgdjIgPSBfbW1fbXVsbG9fZXBpMTYodjIsIHY0
KTsKKysgICAgICAgIHYzID0gX21tX211bGxvX2VwaTE2KHYzLCB2NSk7CisrICAgICAgICB2MCA9
IF9tbV9hZGRfZXBpMTYodjAsIHYyKTsKKysgICAgICAgIHYxID0gX21tX2FkZF9lcGkxNih2MSwg
djMpOworKworKyAgICAgICAgVkVDX1NUKGRzdCArIGksIHYwKTsKKysgICAgICAgIFZFQ19TVChk
c3QgKyBpICsgOCwgdjEpOworKyAgICAgICAgeHBvcyArPSB4SW5jICogMTY7CisrICAgIH0KKysK
KysgICAgYTEgPSBzcmNbc3JjVyAtIDFdICogMTI4OworKyAgICBmb3IgKGkgPSBkc3RXaWR0aCAt
IDE7IChpICogeEluYykgPj4gMTYgPj0gc3JjVyAtIDE7IGktLSkKKysgICAgICAgIGRzdFtpXSA9
IGExOworK30KKysKKysjZGVmaW5lIEhTQ0FMRTIoKSBcCisrICAgIHYwID0gX21tX3NodWZmbGVf
ZXBpOCh2MCwgdjYpOyBcCisrICAgIHYxID0gX21tX3NodWZmbGVfZXBpOCh2MSwgdjYpOyBcCisr
ICAgIHYyID0gX21tX3VucGFja2xvX2VwaTgodjAsIHYxKTsgXAorKyAgICB2MyA9IF9tbV91bnBh
Y2toaV9lcGk4KHYwLCB2MSk7IFwKKysgICAgdjIgPSBfbW1fbWFkZHVic19lcGkxNih2MiwgdjQp
OyBcCisrICAgIHYzID0gX21tX21hZGR1YnNfZXBpMTYodjMsIHY1KQorKworK3N0YXRpYyB2b2lk
IGhjc2NhbGVfZmFzdF9lMmsoU3dzQ29udGV4dCAqYywgaW50MTZfdCAqZHN0MSwgaW50MTZfdCAq
ZHN0MiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHN0V2lkdGgsIGNvbnN0IHVp
bnQ4X3QgKnNyYzEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq
c3JjMiwgaW50IHNyY1csIGludCB4SW5jKQorK3sKKysgICAgaW50IGksIHhwb3MgPSAwLCB4eCwg
YTEsIGEyOworKyAgICBIU0NBTEVfSU5JVCgpOworKyAgICBfX20xMjhpIHhvcnYgPSBfbW1fc2V0
MV9lcGk4KDEyNyk7CisrCisrICAgIGZvciAoaSA9IDA7IGkgPCBkc3RXaWR0aDsgaSArPSAxNikg
eworKyAgICAgICAgSFNDQUxFMSgpOworKworKyAgICAgICAgdjAgPSBfbW1fcGFja3VzX2VwaTE2
KHY0LCB2NSk7CisrICAgICAgICB2MSA9IF9tbV94b3Jfc2kxMjgodjAsIHhvcnYpOworKyAgICAg
ICAgdjQgPSBfbW1fdW5wYWNrbG9fZXBpOCh2MSwgdjApOworKyAgICAgICAgdjUgPSBfbW1fdW5w
YWNraGlfZXBpOCh2MSwgdjApOworKworKyAgICAgICAgdjAgPSBWRUNfTEQoc3JjMSArIHh4KTsK
KysgICAgICAgIHYxID0gVkVDX0xEKHNyYzEgKyB4eCArIDEpOworKyAgICAgICAgSFNDQUxFMigp
OworKyAgICAgICAgdjAgPSBWRUNfTEQoc3JjMiArIHh4KTsKKysgICAgICAgIHYxID0gVkVDX0xE
KHNyYzIgKyB4eCArIDEpOworKyAgICAgICAgVkVDX1NUKGRzdDEgKyBpLCB2Mik7CisrICAgICAg
ICBWRUNfU1QoZHN0MSArIGkgKyA4LCB2Myk7CisrICAgICAgICBIU0NBTEUyKCk7CisrICAgICAg
ICBWRUNfU1QoZHN0MiArIGksIHYyKTsKKysgICAgICAgIFZFQ19TVChkc3QyICsgaSArIDgsIHYz
KTsKKysgICAgICAgIHhwb3MgKz0geEluYyAqIDE2OworKyAgICB9CisrCisrICAgIGExID0gc3Jj
MVtzcmNXIC0gMV0gKiAxMjg7CisrICAgIGEyID0gc3JjMltzcmNXIC0gMV0gKiAxMjg7CisrICAg
IGZvciAoaSA9IGRzdFdpZHRoIC0gMTsgKGkgKiB4SW5jKSA+PiAxNiA+PSBzcmNXIC0gMTsgaS0t
KSB7CisrICAgICAgICBkc3QxW2ldID0gYTE7CisrICAgICAgICBkc3QyW2ldID0gYTI7CisrICAg
IH0KKyt9CisrCisrc3RhdGljIHZvaWQgaFNjYWxlOFRvMTlfZTJrKFN3c0NvbnRleHQgKmMsIGlu
dDE2X3QgKl9kc3QsIGludCBkc3RXLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICpzcmMsIGNvbnN0IGludDE2X3QgKmZpbHRlciwKKysgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgaW50MzJfdCAqZmlsdGVyUG9zLCBpbnQgZmlsdGVyU2l6ZSkKKyt7
CisrICAgIGludCBpLCBqOworKyAgICBpbnQzMl90ICpkc3QgPSAoaW50MzJfdCopX2RzdDsKKysg
ICAgTE9BRF9aRVJPOworKyAgICBfX20xMjhpIHYwLCB2MSwgYWNjdjsKKysKKysgICAgaWYgKGZp
bHRlclNpemUgPT0gMSkgeworKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGRzdFc7IGkrKywgZmls
dGVyICs9IGZpbHRlclNpemUpIHsKKysgICAgICAgICAgICBpbnQgdmFsID0gMCwgc3JjUG9zID0g
ZmlsdGVyUG9zW2ldOworKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBmaWx0ZXJTaXplOyBq
KyspIHsKKysgICAgICAgICAgICAgICAgdmFsICs9IChpbnQpc3JjW3NyY1BvcyArIGpdICogZmls
dGVyW2pdOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBkc3RbaV0gPSBGRk1JTih2YWwg
Pj4gMywgKDEgPDwgMTkpIC0gMSk7IC8vIHRoZSBjdWJpYyBlcXVhdGlvbiBkb2VzIG92ZXJmbG93
IC4uLgorKyAgICAgICAgfQorKyAgICB9IGVsc2UgeworKyAgICAgICAgX19tNjQgaDAsIG1hc2t2
OworKyAgICAgICAgdWludDY0X3QgbWFzayA9IH4wbGw7CisrICAgICAgICBtYXNrID4+PSAoLWZp
bHRlclNpemUgJiA3KSAqIDg7CisrICAgICAgICBtYXNrdiA9IChfX202NCltYXNrOyAvLyA4LCAx
LCAyLCAzLCA0LCA1LCA2LCA3CisrCisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZHN0VzsgaSsr
LCBmaWx0ZXIgKz0gZmlsdGVyU2l6ZSkgeworKyAgICAgICAgICAgIGludCB2YWw7CisrICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqc3JjaSA9IHNyYyArIGZpbHRlclBvc1tpXTsKKysgICAgICAg
ICAgICBhY2N2ID0gemVyb3Y7CisrICAgICAgICAgICAgZm9yIChqID0gMDsgaiArIDcgPCBmaWx0
ZXJTaXplOyBqICs9IDgpIHsKKysgICAgICAgICAgICAgICAgdjAgPSBWRUNfTEQ4KHNyY2kgKyBq
KTsKKysgICAgICAgICAgICAgICAgdjEgPSBWRUNfTEQoZmlsdGVyICsgaik7CisrICAgICAgICAg
ICAgICAgIHYwID0gX21tX3VucGFja2xvX2VwaTgodjAsIHplcm92KTsKKysgICAgICAgICAgICAg
ICAgYWNjdiA9IF9tbV9hZGRfZXBpMzIoYWNjdiwgX21tX21hZGRfZXBpMTYodjAsIHYxKSk7Cisr
ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGlmIChmaWx0ZXJTaXplICYgNykgeworKyAgICAg
ICAgICAgICAgICBoMCA9ICooX19tNjQqKShzcmNpICsgaik7CisrICAgICAgICAgICAgICAgIC8v
IFJlbW92ZSB0aGUgdW51c2VkIGVsZW1lbnRzIG9uIHRoZSBsYXN0IHJvdW5kCisrICAgICAgICAg
ICAgICAgIGgwID0gX21tX2FuZF9zaTY0KGgwLCBtYXNrdik7CisrICAgICAgICAgICAgICAgIHYw
ID0gX21tX21vdnBpNjRfZXBpNjQoaDApOworKyAgICAgICAgICAgICAgICB2MSA9IFZFQ19MRChm
aWx0ZXIgKyBqKTsKKysgICAgICAgICAgICAgICAgdjAgPSBfbW1fdW5wYWNrbG9fZXBpOCh2MCwg
emVyb3YpOworKyAgICAgICAgICAgICAgICBhY2N2ID0gX21tX2FkZF9lcGkzMihhY2N2LCBfbW1f
bWFkZF9lcGkxNih2MCwgdjEpKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgYWNjdiA9
IF9tbV9oYWRkX2VwaTMyKGFjY3YsIGFjY3YpOworKyAgICAgICAgICAgIHZhbCA9IF9tbV9leHRy
YWN0X2VwaTMyKGFjY3YsIDApICsgX21tX2V4dHJhY3RfZXBpMzIoYWNjdiwgMSk7CisrICAgICAg
ICAgICAgZHN0W2ldID0gRkZNSU4odmFsID4+IDMsICgxIDw8IDE5KSAtIDEpOworKyAgICAgICAg
fQorKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkIGhTY2FsZTE2VG8xOV9lMmsoU3dzQ29udGV4
dCAqYywgaW50MTZfdCAqX2RzdCwgaW50IGRzdFcsCisrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90ICpfc3JjLCBjb25zdCBpbnQxNl90ICpmaWx0ZXIsCisrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQzMl90ICpmaWx0ZXJQb3MsIGludCBmaWx0
ZXJTaXplKQorK3sKKysgICAgY29uc3QgQVZQaXhGbXREZXNjcmlwdG9yICpkZXNjID0gYXZfcGl4
X2ZtdF9kZXNjX2dldChjLT5zcmNGb3JtYXQpOworKyAgICBpbnQgaSwgajsKKysgICAgaW50MzJf
dCAqZHN0ID0gKGludDMyX3QqKV9kc3Q7CisrICAgIGNvbnN0IHVpbnQxNl90ICpzcmMgPSAoY29u
c3QgdWludDE2X3QqKV9zcmM7CisrICAgIGludCBiaXRzID0gZGVzYy0+Y29tcFswXS5kZXB0aCAt
IDE7CisrICAgIGludCBzaCA9IGJpdHMgLSA0OworKyAgICBMT0FEX1pFUk87CisrICAgIF9fbTEy
OGkgdjAsIHYxLCBhY2N2OworKworKyAgICBpZiAoKGlzQW55UkdCKGMtPnNyY0Zvcm1hdCkgfHwg
Yy0+c3JjRm9ybWF0ID09IEFWX1BJWF9GTVRfUEFMOCkgJiYgZGVzYy0+Y29tcFswXS5kZXB0aCA8
IDE2KSB7CisrICAgICAgICBzaCA9IDk7CisrICAgIH0gZWxzZSBpZiAoZGVzYy0+ZmxhZ3MgJiBB
Vl9QSVhfRk1UX0ZMQUdfRkxPQVQpIHsgLyogZmxvYXQgaW5wdXQgYXJlIHByb2Nlc3MgbGlrZSB1
aW50IDE2YnBjICovCisrICAgICAgICBzaCA9IDE2IC0gMSAtIDQ7CisrICAgIH0KKysKKysgICAg
aWYgKGZpbHRlclNpemUgPT0gMSkgeworKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGRzdFc7IGkr
KykgeworKyAgICAgICAgICAgIGludCB2YWwgPSAwLCBzcmNQb3MgPSBmaWx0ZXJQb3NbaV07Cisr
ICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGZpbHRlclNpemU7IGorKykgeworKyAgICAgICAg
ICAgICAgICB2YWwgKz0gKGludClzcmNbc3JjUG9zICsgal0gKiBmaWx0ZXJbZmlsdGVyU2l6ZSAq
IGkgKyBqXTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgLy8gZmlsdGVyPTE0IGJpdCwg
aW5wdXQ9MTYgYml0LCBvdXRwdXQ9MzAgYml0LCA+PiAxMSBtYWtlcyAxOSBiaXQKKysgICAgICAg
ICAgICBkc3RbaV0gPSBGRk1JTih2YWwgPj4gc2gsICgxIDw8IDE5KSAtIDEpOworKyAgICAgICAg
fQorKyAgICB9IGVsc2UgeworKyAgICAgICAgX19tMTI4aSBtYXNrdiwgc2lnbnYgPSBfbW1fc2V0
MV9lcGkxNigtMHg4MDAwKSwgaW5pdHYgPSB6ZXJvdjsKKysgICAgICAgIHVpbnQ2NF90IG1hc2sg
PSB+MGxsOworKyAgICAgICAgbWFzayA+Pj0gKC1maWx0ZXJTaXplICYgNykgKiA4OworKyAgICAg
ICAgbWFza3YgPSBfbW1fbW92cGk2NF9lcGk2NCgoX19tNjQpbWFzayk7CisrICAgICAgICBtYXNr
diA9IF9tbV91bnBhY2tsb19lcGk4KG1hc2t2LCBtYXNrdik7CisrCisrICAgICAgICBmb3IgKGog
PSAwOyBqICsgNyA8IGZpbHRlclNpemU7IGogKz0gOCkgeworKyAgICAgICAgICAgIHYxID0gVkVD
X0xEKGZpbHRlciArIGopOworKyAgICAgICAgICAgIGluaXR2ID0gX21tX3N1Yl9lcGkzMihpbml0
diwgX21tX21hZGRfZXBpMTYoc2lnbnYsIHYxKSk7CisrICAgICAgICB9CisrICAgICAgICBpZiAo
ZmlsdGVyU2l6ZSAmIDcpIHsKKysgICAgICAgICAgICB2MSA9IFZFQ19MRChmaWx0ZXIgKyBqKTsK
KysgICAgICAgICAgICB2MSA9IF9tbV9hbmRfc2kxMjgodjEsIG1hc2t2KTsKKysgICAgICAgICAg
ICBpbml0diA9IF9tbV9zdWJfZXBpMzIoaW5pdHYsIF9tbV9tYWRkX2VwaTE2KHNpZ252LCB2MSkp
OworKyAgICAgICAgfQorKworKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGRzdFc7IGkrKywgZmls
dGVyICs9IGZpbHRlclNpemUpIHsKKysgICAgICAgICAgICBpbnQgdmFsOworKyAgICAgICAgICAg
IGNvbnN0IGludDE2X3QgKnNyY2kgPSBzcmMgKyBmaWx0ZXJQb3NbaV07CisrICAgICAgICAgICAg
YWNjdiA9IGluaXR2OworKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogKyA3IDwgZmlsdGVyU2l6
ZTsgaiArPSA4KSB7CisrICAgICAgICAgICAgICAgIHYwID0gVkVDX0xEKHNyY2kgKyBqKTsKKysg
ICAgICAgICAgICAgICAgdjAgPSBfbW1feG9yX3NpMTI4KHYwLCBzaWdudik7CisrICAgICAgICAg
ICAgICAgIHYxID0gVkVDX0xEKGZpbHRlciArIGopOworKyAgICAgICAgICAgICAgICBhY2N2ID0g
X21tX2FkZF9lcGkzMihhY2N2LCBfbW1fbWFkZF9lcGkxNih2MCwgdjEpKTsKKysgICAgICAgICAg
ICB9CisrICAgICAgICAgICAgaWYgKGZpbHRlclNpemUgJiA3KSB7CisrICAgICAgICAgICAgICAg
IHYwID0gVkVDX0xEKHNyY2kgKyBqKTsKKysgICAgICAgICAgICAgICAgdjAgPSBfbW1feG9yX3Np
MTI4KHYwLCBzaWdudik7CisrICAgICAgICAgICAgICAgIHYxID0gVkVDX0xEKGZpbHRlciArIGop
OworKyAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIHVudXNlZCBlbGVtZW50cyBvbiB0aGUg
bGFzdCByb3VuZAorKyAgICAgICAgICAgICAgICB2MSA9IF9tbV9hbmRfc2kxMjgodjEsIG1hc2t2
KTsKKysgICAgICAgICAgICAgICAgYWNjdiA9IF9tbV9hZGRfZXBpMzIoYWNjdiwgX21tX21hZGRf
ZXBpMTYodjAsIHYxKSk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGFjY3YgPSBfbW1f
aGFkZF9lcGkzMihhY2N2LCBhY2N2KTsKKysgICAgICAgICAgICB2YWwgPSBfbW1fZXh0cmFjdF9l
cGkzMihhY2N2LCAwKSArIF9tbV9leHRyYWN0X2VwaTMyKGFjY3YsIDEpOworKyAgICAgICAgICAg
IGRzdFtpXSA9IEZGTUlOKHZhbCA+PiBzaCwgKDEgPDwgMTkpIC0gMSk7CisrICAgICAgICB9Cisr
ICAgIH0KKyt9CisrCisrc3RhdGljIHZvaWQgaFNjYWxlMTZUbzE1X2UyayhTd3NDb250ZXh0ICpj
LCBpbnQxNl90ICpkc3QsIGludCBkc3RXLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdWludDhfdCAqX3NyYywgY29uc3QgaW50MTZfdCAqZmlsdGVyLAorKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgaW50MzJfdCAqZmlsdGVyUG9zLCBpbnQgZmlsdGVyU2l6
ZSkKKyt7CisrICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqZGVzYyA9IGF2X3BpeF9mbXRf
ZGVzY19nZXQoYy0+c3JjRm9ybWF0KTsKKysgICAgaW50IGksIGo7CisrICAgIGNvbnN0IHVpbnQx
Nl90ICpzcmMgPSAoY29uc3QgdWludDE2X3QqKV9zcmM7CisrICAgIGludCBzaCA9IGRlc2MtPmNv
bXBbMF0uZGVwdGggLSAxOworKyAgICBMT0FEX1pFUk87CisrICAgIF9fbTEyOGkgdjAsIHYxLCBh
Y2N2OworKworKyAgICBpZiAoc2ggPCAxNSkgeworKyAgICAgICAgc2ggPSBpc0FueVJHQihjLT5z
cmNGb3JtYXQpIHx8IGMtPnNyY0Zvcm1hdCA9PSBBVl9QSVhfRk1UX1BBTDggPyAxMyA6IChkZXNj
LT5jb21wWzBdLmRlcHRoIC0gMSk7CisrICAgIH0gZWxzZSBpZiAoZGVzYy0+ZmxhZ3MgJiBBVl9Q
SVhfRk1UX0ZMQUdfRkxPQVQpIHsgLyogZmxvYXQgaW5wdXQgYXJlIHByb2Nlc3MgbGlrZSB1aW50
IDE2YnBjICovCisrICAgICAgICBzaCA9IDE2IC0gMTsKKysgICAgfQorKworKyAgICBpZiAoZmls
dGVyU2l6ZSA9PSAxKSB7CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZHN0VzsgaSsrKSB7Cisr
ICAgICAgICAgICAgaW50IHZhbCA9IDAsIHNyY1BvcyA9IGZpbHRlclBvc1tpXTsKKysgICAgICAg
ICAgICBmb3IgKGogPSAwOyBqIDwgZmlsdGVyU2l6ZTsgaisrKSB7CisrICAgICAgICAgICAgICAg
IHZhbCArPSAoaW50KXNyY1tzcmNQb3MgKyBqXSAqIGZpbHRlcltmaWx0ZXJTaXplICogaSArIGpd
OworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICAvLyBmaWx0ZXI9MTQgYml0LCBpbnB1dD0x
NiBiaXQsIG91dHB1dD0zMCBiaXQsID4+IDE1IG1ha2VzIDE1IGJpdAorKyAgICAgICAgICAgIGRz
dFtpXSA9IEZGTUlOKHZhbCA+PiBzaCwgKDEgPDwgMTUpIC0gMSk7CisrICAgICAgICB9CisrICAg
IH0gZWxzZSB7CisrICAgICAgICBfX20xMjhpIG1hc2t2LCBzaWdudiA9IF9tbV9zZXQxX2VwaTE2
KC0weDgwMDApLCBpbml0diA9IHplcm92OworKyAgICAgICAgdWludDY0X3QgbWFzayA9IH4wbGw7
CisrICAgICAgICBtYXNrID4+PSAoLWZpbHRlclNpemUgJiA3KSAqIDg7CisrICAgICAgICBtYXNr
diA9IF9tbV9tb3ZwaTY0X2VwaTY0KChfX202NCltYXNrKTsKKysgICAgICAgIG1hc2t2ID0gX21t
X3VucGFja2xvX2VwaTgobWFza3YsIG1hc2t2KTsKKysKKysgICAgICAgIGZvciAoaiA9IDA7IGog
KyA3IDwgZmlsdGVyU2l6ZTsgaiArPSA4KSB7CisrICAgICAgICAgICAgdjEgPSBWRUNfTEQoZmls
dGVyICsgaik7CisrICAgICAgICAgICAgaW5pdHYgPSBfbW1fc3ViX2VwaTMyKGluaXR2LCBfbW1f
bWFkZF9lcGkxNihzaWdudiwgdjEpKTsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChmaWx0ZXJT
aXplICYgNykgeworKyAgICAgICAgICAgIHYxID0gVkVDX0xEKGZpbHRlciArIGopOworKyAgICAg
ICAgICAgIHYxID0gX21tX2FuZF9zaTEyOCh2MSwgbWFza3YpOworKyAgICAgICAgICAgIGluaXR2
ID0gX21tX3N1Yl9lcGkzMihpbml0diwgX21tX21hZGRfZXBpMTYoc2lnbnYsIHYxKSk7CisrICAg
ICAgICB9CisrCisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZHN0VzsgaSsrLCBmaWx0ZXIgKz0g
ZmlsdGVyU2l6ZSkgeworKyAgICAgICAgICAgIGludCB2YWw7CisrICAgICAgICAgICAgY29uc3Qg
aW50MTZfdCAqc3JjaSA9IHNyYyArIGZpbHRlclBvc1tpXTsKKysgICAgICAgICAgICBhY2N2ID0g
aW5pdHY7CisrICAgICAgICAgICAgZm9yIChqID0gMDsgaiArIDcgPCBmaWx0ZXJTaXplOyBqICs9
IDgpIHsKKysgICAgICAgICAgICAgICAgdjAgPSBWRUNfTEQoc3JjaSArIGopOworKyAgICAgICAg
ICAgICAgICB2MCA9IF9tbV94b3Jfc2kxMjgodjAsIHNpZ252KTsKKysgICAgICAgICAgICAgICAg
djEgPSBWRUNfTEQoZmlsdGVyICsgaik7CisrICAgICAgICAgICAgICAgIGFjY3YgPSBfbW1fYWRk
X2VwaTMyKGFjY3YsIF9tbV9tYWRkX2VwaTE2KHYwLCB2MSkpOworKyAgICAgICAgICAgIH0KKysg
ICAgICAgICAgICBpZiAoZmlsdGVyU2l6ZSAmIDcpIHsKKysgICAgICAgICAgICAgICAgdjAgPSBW
RUNfTEQoc3JjaSArIGopOworKyAgICAgICAgICAgICAgICB2MCA9IF9tbV94b3Jfc2kxMjgodjAs
IHNpZ252KTsKKysgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSB1bnVzZWQgZWxlbWVudHMg
b24gdGhlIGxhc3Qgcm91bmQKKysgICAgICAgICAgICAgICAgdjEgPSBWRUNfTEQoZmlsdGVyICsg
aik7CisrICAgICAgICAgICAgICAgIHYxID0gX21tX2FuZF9zaTEyOCh2MSwgbWFza3YpOworKyAg
ICAgICAgICAgICAgICBhY2N2ID0gX21tX2FkZF9lcGkzMihhY2N2LCBfbW1fbWFkZF9lcGkxNih2
MCwgdjEpKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgYWNjdiA9IF9tbV9oYWRkX2Vw
aTMyKGFjY3YsIGFjY3YpOworKyAgICAgICAgICAgIHZhbCA9IF9tbV9leHRyYWN0X2VwaTMyKGFj
Y3YsIDApICsgX21tX2V4dHJhY3RfZXBpMzIoYWNjdiwgMSk7CisrICAgICAgICAgICAgZHN0W2ld
ID0gRkZNSU4odmFsID4+IHNoLCAoMSA8PCAxNSkgLSAxKTsKKysgICAgICAgIH0KKysgICAgfQor
K30KKysKKythdl9jb2xkIHZvaWQgZmZfc3dzX2luaXRfc3dzY2FsZV9lMmsoU3dzQ29udGV4dCAq
YykKKyt7CisrICAgIGVudW0gQVZQaXhlbEZvcm1hdCBkc3RGb3JtYXQgPSBjLT5kc3RGb3JtYXQ7
CisrICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqZGVzYyA9IGF2X3BpeF9mbXRfZGVzY19n
ZXQoZHN0Rm9ybWF0KTsKKysKKysgICAgaWYgKCEoYXZfZ2V0X2NwdV9mbGFncygpICYgQVZfQ1BV
X0ZMQUdfRTJLKSkKKysgICAgICAgIHJldHVybjsKKysKKysgICAgaWYgKGRzdEZvcm1hdCA9PSBB
Vl9QSVhfRk1UX1AwMTBMRSB8fCBkc3RGb3JtYXQgPT0gQVZfUElYX0ZNVF9QMDEwQkUpIHsKKysg
ICAgICAgIC8vIGMtPnl1djJwbGFuZTEgPSBpc0JFKGRzdEZvcm1hdCkgPyB5dXYycDAxMGwxX0JF
X2UyayA6IHl1djJwMDEwbDFfTEVfZTJrOworKyAgICAgICAgLy8gYy0+eXV2MnBsYW5lWCA9IGlz
QkUoZHN0Rm9ybWF0KSA/IHl1djJwMDEwbFhfQkVfZTJrIDogeXV2MnAwMTBsWF9MRV9lMms7Cisr
ICAgICAgICAvLyBjLT55dXYybnYxMmNYID0geXV2MnAwMTBjWF9lMms7CisrICAgIH0gZWxzZSBp
ZiAoaXMxNkJQUyhkc3RGb3JtYXQpKSB7CisrICAgICAgICBjLT55dXYycGxhbmVYID0gaXNCRShk
c3RGb3JtYXQpID8geXV2MnBsYW5lWF8xNkJFX2UyayAgOiB5dXYycGxhbmVYXzE2TEVfZTJrOwor
KyAgICAgICAgYy0+eXV2MnBsYW5lMSA9IGlzQkUoZHN0Rm9ybWF0KSA/IHl1djJwbGFuZTFfMTZC
RV9lMmsgIDogeXV2MnBsYW5lMV8xNkxFX2UyazsKKysgICAgICAgIGlmIChkc3RGb3JtYXQgPT0g
QVZfUElYX0ZNVF9QMDE2TEUgfHwgZHN0Rm9ybWF0ID09IEFWX1BJWF9GTVRfUDAxNkJFKSB7Cisr
ICAgICAgICAgIC8vIGMtPnl1djJudjEyY1ggPSB5dXYycDAxNmNYX2UyazsKKysgICAgICAgIH0K
KysgICAgfSBlbHNlIGlmIChpc05CUFMoZHN0Rm9ybWF0KSkgeworKyAgICAgICAgaWYgKGRlc2Mt
PmNvbXBbMF0uZGVwdGggPT0gOSkgeworKyAgICAgICAgICAgIGMtPnl1djJwbGFuZVggPSBpc0JF
KGRzdEZvcm1hdCkgPyB5dXYycGxhbmVYXzlCRV9lMmsgIDogeXV2MnBsYW5lWF85TEVfZTJrOwor
KyAgICAgICAgICAgIGMtPnl1djJwbGFuZTEgPSBpc0JFKGRzdEZvcm1hdCkgPyB5dXYycGxhbmUx
XzlCRV9lMmsgIDogeXV2MnBsYW5lMV85TEVfZTJrOworKyAgICAgICAgfSBlbHNlIGlmIChkZXNj
LT5jb21wWzBdLmRlcHRoID09IDEwKSB7CisrICAgICAgICAgICAgYy0+eXV2MnBsYW5lWCA9IGlz
QkUoZHN0Rm9ybWF0KSA/IHl1djJwbGFuZVhfMTBCRV9lMmsgIDogeXV2MnBsYW5lWF8xMExFX2Uy
azsKKysgICAgICAgICAgICBjLT55dXYycGxhbmUxID0gaXNCRShkc3RGb3JtYXQpID8geXV2MnBs
YW5lMV8xMEJFX2UyayAgOiB5dXYycGxhbmUxXzEwTEVfZTJrOworKyAgICAgICAgfSBlbHNlIGlm
IChkZXNjLT5jb21wWzBdLmRlcHRoID09IDEyKSB7CisrICAgICAgICAgICAgYy0+eXV2MnBsYW5l
WCA9IGlzQkUoZHN0Rm9ybWF0KSA/IHl1djJwbGFuZVhfMTJCRV9lMmsgIDogeXV2MnBsYW5lWF8x
MkxFX2UyazsKKysgICAgICAgICAgICBjLT55dXYycGxhbmUxID0gaXNCRShkc3RGb3JtYXQpID8g
eXV2MnBsYW5lMV8xMkJFX2UyayAgOiB5dXYycGxhbmUxXzEyTEVfZTJrOworKyAgICAgICAgfSBl
bHNlIGlmIChkZXNjLT5jb21wWzBdLmRlcHRoID09IDE0KSB7CisrICAgICAgICAgICAgYy0+eXV2
MnBsYW5lWCA9IGlzQkUoZHN0Rm9ybWF0KSA/IHl1djJwbGFuZVhfMTRCRV9lMmsgIDogeXV2MnBs
YW5lWF8xNExFX2UyazsKKysgICAgICAgICAgICBjLT55dXYycGxhbmUxID0gaXNCRShkc3RGb3Jt
YXQpID8geXV2MnBsYW5lMV8xNEJFX2UyayAgOiB5dXYycGxhbmUxXzE0TEVfZTJrOworKyAgICAg
ICAgfSBlbHNlCisrICAgICAgICAgICAgYXZfYXNzZXJ0MCgwKTsKKysgICAgfSBlbHNlIGlmIChk
c3RGb3JtYXQgPT0gQVZfUElYX0ZNVF9HUkFZRjMyQkUpIHsKKysgICAgICAgIC8vIGMtPnl1djJw
bGFuZVggPSB5dXYycGxhbmVYX2Zsb2F0QkVfZTJrOworKyAgICAgICAgYy0+eXV2MnBsYW5lMSA9
IHl1djJwbGFuZTFfZmxvYXRCRV9lMms7CisrICAgIH0gZWxzZSBpZiAoZHN0Rm9ybWF0ID09IEFW
X1BJWF9GTVRfR1JBWUYzMkxFKSB7CisrICAgICAgICAvLyBjLT55dXYycGxhbmVYID0geXV2MnBs
YW5lWF9mbG9hdExFX2UyazsKKysgICAgICAgIGMtPnl1djJwbGFuZTEgPSB5dXYycGxhbmUxX2Zs
b2F0TEVfZTJrOworKyAgICB9IGVsc2UgeworKyAgICAgICAgYy0+eXV2MnBsYW5lMSA9IHl1djJw
bGFuZTFfOF9lMms7CisrICAgICAgICBjLT55dXYycGxhbmVYID0geXV2MnBsYW5lWF84X2UyazsK
KysjaWYgMAorKyAgICAgICAgaWYgKGRzdEZvcm1hdCA9PSBBVl9QSVhfRk1UX05WMTIgfHwgZHN0
Rm9ybWF0ID09IEFWX1BJWF9GTVRfTlYyMSB8fAorKyAgICAgICAgICAgIGRzdEZvcm1hdCA9PSBB
Vl9QSVhfRk1UX05WMjQgfHwgZHN0Rm9ybWF0ID09IEFWX1BJWF9GTVRfTlY0MikKKysgICAgICAg
ICAgICBjLT55dXYybnYxMmNYID0geXV2Mm52MTJjWF9lMms7CisrI2VuZGlmCisrICAgIH0KKysK
KysgICAgaWYgKGMtPnNyY0JwYyA9PSA4KSB7CisrICAgICAgICBpZiAoYy0+ZHN0QnBjIDw9IDE0
KSB7CisrICAgICAgICAgICAgYy0+aHlTY2FsZSA9IGMtPmhjU2NhbGUgPSBoU2NhbGVfcmVhbF9l
Mms7CisrICAgICAgICAgICAgaWYgKGMtPmZsYWdzICYgU1dTX0ZBU1RfQklMSU5FQVIgJiYgYy0+
ZHN0VyA+PSBjLT5zcmNXICYmIGMtPmNockRzdFcgPj0gYy0+Y2hyU3JjVykgeworKyAgICAgICAg
ICAgICAgICBjLT5oeXNjYWxlX2Zhc3QgPSBoeXNjYWxlX2Zhc3RfZTJrOworKyAgICAgICAgICAg
ICAgICBjLT5oY3NjYWxlX2Zhc3QgPSBoY3NjYWxlX2Zhc3RfZTJrOworKyAgICAgICAgICAgIH0K
KysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgYy0+aHlTY2FsZSA9IGMtPmhjU2NhbGUg
PSBoU2NhbGU4VG8xOV9lMms7CisrICAgICAgICB9CisrICAgIH0gZWxzZSB7CisrICAgICAgICAg
ICAgYy0+aHlTY2FsZSA9IGMtPmhjU2NhbGUgPSBjLT5kc3RCcGMgPiAxNCA/IGhTY2FsZTE2VG8x
OV9lMmsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogaFNjYWxlMTZUbzE1X2UyazsKKysgICAgfQorKworKyAgICBpZiAoYy0+ZmxhZ3MgJiBT
V1NfRlVMTF9DSFJfSF9JTlQpIHsKKysgICAgICAgIHN3aXRjaCAoZHN0Rm9ybWF0KSB7CisrICAg
ICAgICAgICAgY2FzZSBBVl9QSVhfRk1UX1JHQjI0OgorKyAgICAgICAgICAgICAgICBjLT55dXYy
cGFja2VkMSA9IHl1djJyZ2IyNF9mdWxsXzFfZTJrOworKyAgICAgICAgICAgICAgICBjLT55dXYy
cGFja2VkMiA9IHl1djJyZ2IyNF9mdWxsXzJfZTJrOworKyAgICAgICAgICAgICAgICBjLT55dXYy
cGFja2VkWCA9IHl1djJyZ2IyNF9mdWxsX1hfZTJrOworKyAgICAgICAgICAgIGJyZWFrOworKyAg
ICAgICAgICAgIGNhc2UgQVZfUElYX0ZNVF9CR1IyNDoKKysgICAgICAgICAgICAgICAgYy0+eXV2
MnBhY2tlZDEgPSB5dXYyYmdyMjRfZnVsbF8xX2UyazsKKysgICAgICAgICAgICAgICAgYy0+eXV2
MnBhY2tlZDIgPSB5dXYyYmdyMjRfZnVsbF8yX2UyazsKKysgICAgICAgICAgICAgICAgYy0+eXV2
MnBhY2tlZFggPSB5dXYyYmdyMjRfZnVsbF9YX2UyazsKKysgICAgICAgICAgICBicmVhazsKKysg
ICAgICAgICAgICBjYXNlIEFWX1BJWF9GTVRfQkdSQToKKysgICAgICAgICAgICAgICAgaWYgKCFj
LT5uZWVkQWxwaGEpIHsKKysgICAgICAgICAgICAgICAgICAgIGMtPnl1djJwYWNrZWQxID0geXV2
MmJncngzMl9mdWxsXzFfZTJrOworKyAgICAgICAgICAgICAgICAgICAgYy0+eXV2MnBhY2tlZDIg
PSB5dXYyYmdyeDMyX2Z1bGxfMl9lMms7CisrICAgICAgICAgICAgICAgICAgICBjLT55dXYycGFj
a2VkWCA9IHl1djJiZ3J4MzJfZnVsbF9YX2UyazsKKysgICAgICAgICAgICAgICAgfQorKyAgICAg
ICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIGNhc2UgQVZfUElYX0ZNVF9SR0JBOgorKyAgICAg
ICAgICAgICAgICBpZiAoIWMtPm5lZWRBbHBoYSkgeworKyAgICAgICAgICAgICAgICAgICAgYy0+
eXV2MnBhY2tlZDEgPSB5dXYycmdieDMyX2Z1bGxfMV9lMms7CisrICAgICAgICAgICAgICAgICAg
ICBjLT55dXYycGFja2VkMiA9IHl1djJyZ2J4MzJfZnVsbF8yX2UyazsKKysgICAgICAgICAgICAg
ICAgICAgIGMtPnl1djJwYWNrZWRYID0geXV2MnJnYngzMl9mdWxsX1hfZTJrOworKyAgICAgICAg
ICAgICAgICB9CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgY2FzZSBBVl9QSVhf
Rk1UX0FSR0I6CisrICAgICAgICAgICAgICAgIGlmICghYy0+bmVlZEFscGhhKSB7CisrICAgICAg
ICAgICAgICAgICAgICBjLT55dXYycGFja2VkMSA9IHl1djJ4cmdiMzJfZnVsbF8xX2UyazsKKysg
ICAgICAgICAgICAgICAgICAgIGMtPnl1djJwYWNrZWQyID0geXV2MnhyZ2IzMl9mdWxsXzJfZTJr
OworKyAgICAgICAgICAgICAgICAgICAgYy0+eXV2MnBhY2tlZFggPSB5dXYyeHJnYjMyX2Z1bGxf
WF9lMms7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICBicmVhazsKKysgICAgICAg
ICAgICBjYXNlIEFWX1BJWF9GTVRfQUJHUjoKKysgICAgICAgICAgICAgICAgaWYgKCFjLT5uZWVk
QWxwaGEpIHsKKysgICAgICAgICAgICAgICAgICAgIGMtPnl1djJwYWNrZWQxID0geXV2MnhiZ3Iz
Ml9mdWxsXzFfZTJrOworKyAgICAgICAgICAgICAgICAgICAgYy0+eXV2MnBhY2tlZDIgPSB5dXYy
eGJncjMyX2Z1bGxfMl9lMms7CisrICAgICAgICAgICAgICAgICAgICBjLT55dXYycGFja2VkWCA9
IHl1djJ4YmdyMzJfZnVsbF9YX2UyazsKKysgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAg
ICBicmVhazsKKysgICAgICAgIH0KKysgICAgfSBlbHNlIGlmICghKGMtPmZsYWdzICYgU1dTX0JJ
VEVYQUNUKSkgeyAvKiAhU1dTX0ZVTExfQ0hSX0hfSU5UICovCisrICAgICAgICBzd2l0Y2ggKGRz
dEZvcm1hdCkgeworKyAgICAgICAgICAgIGNhc2UgQVZfUElYX0ZNVF9SR0IyNDoKKysgICAgICAg
ICAgICAgICAgYy0+eXV2MnBhY2tlZDEgPSB5dXYycmdiMjRfMV9lMms7CisrICAgICAgICAgICAg
ICAgIGMtPnl1djJwYWNrZWQyID0geXV2MnJnYjI0XzJfZTJrOworKyAgICAgICAgICAgICAgICBj
LT55dXYycGFja2VkWCA9IHl1djJyZ2IyNF9YX2UyazsKKysgICAgICAgICAgICBicmVhazsKKysg
ICAgICAgICAgICBjYXNlIEFWX1BJWF9GTVRfQkdSMjQ6CisrICAgICAgICAgICAgICAgIGMtPnl1
djJwYWNrZWQxID0geXV2MmJncjI0XzFfZTJrOworKyAgICAgICAgICAgICAgICBjLT55dXYycGFj
a2VkMiA9IHl1djJiZ3IyNF8yX2UyazsKKysgICAgICAgICAgICAgICAgYy0+eXV2MnBhY2tlZFgg
PSB5dXYyYmdyMjRfWF9lMms7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgY2Fz
ZSBBVl9QSVhfRk1UX0JHUkE6CisrICAgICAgICAgICAgICAgIGlmICghYy0+bmVlZEFscGhhKSB7
CisrICAgICAgICAgICAgICAgICAgICBjLT55dXYycGFja2VkMSA9IHl1djJiZ3J4MzJfMV9lMms7
CisrICAgICAgICAgICAgICAgICAgICBjLT55dXYycGFja2VkMiA9IHl1djJiZ3J4MzJfMl9lMms7
CisrICAgICAgICAgICAgICAgICAgICBjLT55dXYycGFja2VkWCA9IHl1djJiZ3J4MzJfWF9lMms7
CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICBj
YXNlIEFWX1BJWF9GTVRfUkdCQToKKysgICAgICAgICAgICAgICAgaWYgKCFjLT5uZWVkQWxwaGEp
IHsKKysgICAgICAgICAgICAgICAgICAgIGMtPnl1djJwYWNrZWQxID0geXV2MnJnYngzMl8xX2Uy
azsKKysgICAgICAgICAgICAgICAgICAgIGMtPnl1djJwYWNrZWQyID0geXV2MnJnYngzMl8yX2Uy
azsKKysgICAgICAgICAgICAgICAgICAgIGMtPnl1djJwYWNrZWRYID0geXV2MnJnYngzMl9YX2Uy
azsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAg
IGNhc2UgQVZfUElYX0ZNVF9BUkdCOgorKyAgICAgICAgICAgICAgICBpZiAoIWMtPm5lZWRBbHBo
YSkgeworKyAgICAgICAgICAgICAgICAgICAgYy0+eXV2MnBhY2tlZDEgPSB5dXYyeHJnYjMyXzFf
ZTJrOworKyAgICAgICAgICAgICAgICAgICAgYy0+eXV2MnBhY2tlZDIgPSB5dXYyeHJnYjMyXzJf
ZTJrOworKyAgICAgICAgICAgICAgICAgICAgYy0+eXV2MnBhY2tlZFggPSB5dXYyeHJnYjMyX1hf
ZTJrOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAg
ICAgY2FzZSBBVl9QSVhfRk1UX0FCR1I6CisrICAgICAgICAgICAgICAgIGlmICghYy0+bmVlZEFs
cGhhKSB7CisrICAgICAgICAgICAgICAgICAgICBjLT55dXYycGFja2VkMSA9IHl1djJ4YmdyMzJf
MV9lMms7CisrICAgICAgICAgICAgICAgICAgICBjLT55dXYycGFja2VkMiA9IHl1djJ4YmdyMzJf
Ml9lMms7CisrICAgICAgICAgICAgICAgICAgICBjLT55dXYycGFja2VkWCA9IHl1djJ4YmdyMzJf
WF9lMms7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICBicmVhazsKKysgICAgICAg
IH0KKysgICAgfQorKworKyAgICBzd2l0Y2ggKGRzdEZvcm1hdCkgeworKyAgICAgICAgY2FzZSBB
Vl9QSVhfRk1UX1lVWVY0MjI6CisrICAgICAgICAgICAgYy0+eXV2MnBhY2tlZDEgPSB5dXYyeXV5
djQyMl8xX2UyazsKKysgICAgICAgICAgICBjLT55dXYycGFja2VkMiA9IHl1djJ5dXl2NDIyXzJf
ZTJrOworKyAgICAgICAgICAgIGMtPnl1djJwYWNrZWRYID0geXV2Mnl1eXY0MjJfWF9lMms7Cisr
ICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgQVZfUElYX0ZNVF9ZVllVNDIyOgorKyAgICAg
ICAgICAgIGMtPnl1djJwYWNrZWQxID0geXV2Mnl2eXU0MjJfMV9lMms7CisrICAgICAgICAgICAg
Yy0+eXV2MnBhY2tlZDIgPSB5dXYyeXZ5dTQyMl8yX2UyazsKKysgICAgICAgICAgICBjLT55dXYy
cGFja2VkWCA9IHl1djJ5dnl1NDIyX1hfZTJrOworKyAgICAgICAgYnJlYWs7CisrICAgICAgICBj
YXNlIEFWX1BJWF9GTVRfVVlWWTQyMjoKKysgICAgICAgICAgICBjLT55dXYycGFja2VkMSA9IHl1
djJ1eXZ5NDIyXzFfZTJrOworKyAgICAgICAgICAgIGMtPnl1djJwYWNrZWQyID0geXV2MnV5dnk0
MjJfMl9lMms7CisrICAgICAgICAgICAgYy0+eXV2MnBhY2tlZFggPSB5dXYydXl2eTQyMl9YX2Uy
azsKKysgICAgICAgIGJyZWFrOworKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUv
ZTJrL3l1djJyZ2IuYyBiL2xpYnN3c2NhbGUvZTJrL3l1djJyZ2IuYworbmV3IGZpbGUgbW9kZSAx
MDA2NDQKK2luZGV4IDAwMDAwMDAuLjkyZjE1M2YKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYnN3
c2NhbGUvZTJrL3l1djJyZ2IuYworQEAgLTAsMCArMSwyNDggQEAKKysvKgorKyAqIEVsYnJ1cyBh
Y2NlbGVyYXRpb24gZm9yIGNvbG9yc3BhY2UgY29udmVyc2lvbgorKyAqCisrICogQ29weXJpZ2h0
IChDKSAyMDIxIElseWEgS3VyZHl1a292IDxqcGVncXNAZ21haWwuY29tPiBmb3IgQmFzZUFMVCwg
THRkCisrICogY29weXJpZ2h0IChDKSAyMDA0IE1hcmMgSG9mZm1hbiA8bWFyYy5ob2ZmbWFuQGFu
YWxvZy5jb20+CisrICoKKysgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisrICoKKysg
KiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisrICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogRkZtcGVnIGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBV
U0EKKysgKi8KKysKKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+Cisr
I2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKworKyNpbmNsdWRl
ICJjb25maWcuaCIKKysjaW5jbHVkZSAibGlic3dzY2FsZS9yZ2IycmdiLmgiCisrI2luY2x1ZGUg
ImxpYnN3c2NhbGUvc3dzY2FsZS5oIgorKyNpbmNsdWRlICJsaWJzd3NjYWxlL3N3c2NhbGVfaW50
ZXJuYWwuaCIKKysjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKKysjaW5jbHVkZSAi
bGliYXZ1dGlsL2NwdS5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL3V0aWxfZTJrLmgiCisr
I2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiCisrI2luY2x1ZGUgInl1djJyZ2IuaCIKKysK
KysvKgorKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyAqIENTIGNvbnZlcnRlcnMKKysgKiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKysgKi8KKysKKysjZGVmaW5lIElOSVQyX1JHQihSLCBCKSBc
CisrICAgIF9fbTEyOGkgcGVybV91bnA4ID0gX21tX3NldHJfZXBpOCggXAorKyAgICAgICAgMCwg
OCwgMSwgOSwgMiwgMTAsIDMsIDExLCA0LCAxMiwgNSwgMTMsIDYsIDE0LCA3LCAxNSk7IFwKKysg
ICAgX19tNjQgcmdiX2luZGV4MCA9IF9tbV9zZXRyX3BpOCgwLCAxLCAzLCA0LCA1LCA3LCA4LCA5
KTsgXAorKyAgICBfX202NCByZ2JfaW5kZXgxID0gX21tX3NldHJfcGk4KDMsIDQsIDUsIDcsIDgs
IDksIDExLCAxMik7IFwKKysgICAgX19tNjQgcmdiX2luZGV4MiA9IF9tbV9zZXRyX3BpOCg1LCA3
LCA4LCA5LCAxMSwgMTIsIDEzLCAxNSk7CisrCisrI2RlZmluZSBJTklUMl9SR0JYKFIsIEIpIElO
SVQyX1hSR0IoUiwgQikKKysjZGVmaW5lIElOSVQyX1hSR0IoUiwgQikgXAorKyAgICBfX20xMjhp
IEFfbCA9IF9tbV9zZXQxX2VwaTE2KDI1NSk7IFwKKysgICAgX19tMTI4aSBwZXJtX3VucDggPSBf
bW1fc2V0cl9lcGk4KCBcCisrICAgICAgICAwLCA4LCAxLCA5LCAyLCAxMCwgMywgMTEsIDQsIDEy
LCA1LCAxMywgNiwgMTQsIDcsIDE1KTsKKysKKysjZGVmaW5lIFdSSVRFMl9SR0IoZGVzdCwgUiwg
QikgXAorKyAgICB2NCA9IF9tbV9wYWNrdXNfZXBpMTYoUiMjX2wsIEdfbCk7IFwKKysgICAgdjUg
PSBfbW1fcGFja3VzX2VwaTE2KEIjI19sLCBCIyNfbCk7IFwKKysgICAgdjAgPSBfbW1fc2h1ZmZs
ZV9lcGk4KHY0LCBwZXJtX3VucDgpOyBcCisrICAgIHYxID0gX21tX3VucGFja2xvX2VwaTgodjUs
IHY1KTsgXAorKyAgICB2MiA9IF9tbV91bnBhY2tsb19lcGkxNih2MCwgdjEpOyBcCisrICAgIHYz
ID0gX21tX3VucGFja2hpX2VwaTE2KHYwLCB2MSk7IFwKKysgICAgeyBcCisrICAgICAgICB1bmlv
biB7IF9fbTEyOGkgdjsgX19tNjQgZFsyXTsgfSBhID0geyB2MiB9LCBiID0geyB2MyB9OyBcCisr
ICAgICAgICBfX202NCAqcCA9IChfX202NCopZGVzdDsgXAorKyAgICAgICAgcFswXSA9IF9tbV9z
aHVmZmxlMl9waTgoYS5kWzBdLCBhLmRbMV0sIHJnYl9pbmRleDApOyBcCisrICAgICAgICBwWzFd
ID0gX21tX3NodWZmbGUyX3BpOChhLmRbMV0sIGIuZFswXSwgcmdiX2luZGV4MSk7IFwKKysgICAg
ICAgIHBbMl0gPSBfbW1fc2h1ZmZsZTJfcGk4KGIuZFswXSwgYi5kWzFdLCByZ2JfaW5kZXgyKTsg
XAorKyAgICAgICAgZGVzdCArPSAyNDsgXAorKyAgICB9CisrCisrI2RlZmluZSBXUklURTJfUkdC
WChkZXN0LCBSLCBCKSBcCisrICAgIHY0ID0gX21tX3BhY2t1c19lcGkxNihSIyNfbCwgR19sKTsg
XAorKyAgICB2NSA9IF9tbV9wYWNrdXNfZXBpMTYoQiMjX2wsIEFfbCk7IFwKKysgICAgdjAgPSBf
bW1fc2h1ZmZsZV9lcGk4KHY0LCBwZXJtX3VucDgpOyBcCisrICAgIHYxID0gX21tX3NodWZmbGVf
ZXBpOCh2NSwgcGVybV91bnA4KTsgXAorKyAgICB2MiA9IF9tbV91bnBhY2tsb19lcGkxNih2MCwg
djEpOyBcCisrICAgIHYzID0gX21tX3VucGFja2hpX2VwaTE2KHYwLCB2MSk7IFwKKysgICAgVkVD
X1NUKGRlc3QsIHYyKTsgXAorKyAgICBWRUNfU1QoZGVzdCArIDE2LCB2Myk7IFwKKysgICAgZGVz
dCArPSAzMjsKKysKKysjZGVmaW5lIFdSSVRFMl9YUkdCKGRlc3QsIFIsIEIpIFwKKysgICAgdjQg
PSBfbW1fcGFja3VzX2VwaTE2KEFfbCwgUiMjX2wpOyBcCisrICAgIHY1ID0gX21tX3BhY2t1c19l
cGkxNihHX2wsIEIjI19sKTsgXAorKyAgICB2MCA9IF9tbV9zaHVmZmxlX2VwaTgodjQsIHBlcm1f
dW5wOCk7IFwKKysgICAgdjEgPSBfbW1fc2h1ZmZsZV9lcGk4KHY1LCBwZXJtX3VucDgpOyBcCisr
ICAgIHYyID0gX21tX3VucGFja2xvX2VwaTE2KHYwLCB2MSk7IFwKKysgICAgdjMgPSBfbW1fdW5w
YWNraGlfZXBpMTYodjAsIHYxKTsgXAorKyAgICBWRUNfU1QoZGVzdCwgdjIpOyBcCisrICAgIFZF
Q19TVChkZXN0ICsgMTYsIHYzKTsgXAorKyAgICBkZXN0ICs9IDMyOworKworKyNkZWZpbmUgREVG
Q1NQNDIwX0NWVChuYW1lLCBmbXQsIFIsIEIpIFwKKytzdGF0aWMgaW50IHl1djIjI25hbWUjI19l
MmsoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCBcCisrICAgICAgICAg
ICAgICAgICAgICAgIGludCAqaW5zdHJpZGVzLCBpbnQgc3JjU2xpY2VZLCBpbnQgc3JjU2xpY2VI
LCBcCisrICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipvcGxhbmVzLCBpbnQg
Km91dHN0cmlkZXMpIFwKKyt7IFwKKysgICAgdmVjX3MzMiBSX2wsIEdfbCwgQl9sOyBcCisrICAg
IHZlY19zMzIgeV9jb2VmZiA9IF9tbV9zZXQxX2VwaTE2KGMtPnl1djJyZ2JfeV9jb2VmZik7IFwK
KysgICAgdmVjX3MzMiB5X3N1YiA9IF9tbV9zZXQxX2VwaTE2KChjLT55dXYycmdiX3lfb2Zmc2V0
ICsgNjQpID4+IDcpOyBcCisrICAgIHZlY19zMzIgdjJyX2NvZWZmID0gX21tX3NldDFfZXBpMTYo
Yy0+eXV2MnJnYl92MnJfY29lZmYpOyBcCisrICAgIHZlY19zMzIgdjJnX2NvZWZmID0gX21tX3Nl
dDFfZXBpMTYoYy0+eXV2MnJnYl92MmdfY29lZmYpOyBcCisrICAgIHZlY19zMzIgdTJnX2NvZWZm
ID0gX21tX3NldDFfZXBpMTYoYy0+eXV2MnJnYl91MmdfY29lZmYpOyBcCisrICAgIHZlY19zMzIg
dTJiX2NvZWZmID0gX21tX3NldDFfZXBpMTYoYy0+eXV2MnJnYl91MmJfY29lZmYpOyBcCisrICAg
IHZlY19zMzIgZGVjMTI4ID0gX21tX3NldDFfZXBpMTYoMTI4KTsgXAorKyAgICBfX20xMjhpIHYw
LCB2MSwgdjIsIHYzLCB2NCwgdjU7IFwKKysgICAgTE9BRF9aRVJPOyBcCisrICAgIElOSVQyXyMj
Zm10KFIsIEIpIFwKKysgICAgaW50IGksIGosIHcgPSBjLT5kc3RXICYgLTE2LCBoID0gc3JjU2xp
Y2VIICYgLTI7IFwKKysgICAgdmVjX3MxNiBZMCwgWTEsIFkyLCBZMywgVSwgVjsgXAorKyAgICB2
ZWNfczE2IHZ4LCB1eCwgdXZ4LCB2eDAsIHV4MCwgdXZ4MCwgdngxLCB1eDEsIHV2eDE7IFwKKysg
ICAgY29uc3QgdWludDhfdCAqeTFpID0gaW5bMF07IFwKKysgICAgY29uc3QgdWludDhfdCAqeTJp
ID0gaW5bMF0gKyBpbnN0cmlkZXNbMF07IFwKKysgICAgY29uc3QgdWludDhfdCAqdWkgPSBpblsx
XSwgKnZpID0gaW5bMl07IFwKKysgICAgdWludDhfdCAqb3V0MCwgKm91dDE7IFwKKysgICAgaW50
IHZzaGlmdCA9IGMtPnNyY0Zvcm1hdCA9PSBBVl9QSVhfRk1UX1lVVjQyMlA7IFwKKysgICAgaW50
IGluc3RyaWRlczAgPSBpbnN0cmlkZXNbMF0gKiAyIC0gdzsgXAorKyAgICBpbnQgaW5zdHJpZGVz
MSA9IChpbnN0cmlkZXNbMV0gPDwgdnNoaWZ0KSAtIHcgLyAyOyBcCisrICAgIGludCBpbnN0cmlk
ZXMyID0gKGluc3RyaWRlc1syXSA8PCB2c2hpZnQpIC0gdyAvIDI7IFwKKysgICAgXAorKyAgICBm
b3IgKGkgPSAwOyBpIDwgaDsgaSArPSAyKSB7IFwKKysgICAgICAgIG91dDAgPSBvcGxhbmVzWzBd
ICsgKGkgKyBzcmNTbGljZVkpICogb3V0c3RyaWRlc1swXTsgXAorKyAgICAgICAgb3V0MSA9IG91
dDAgKyBvdXRzdHJpZGVzWzBdOyBcCisrICAgICAgICBmb3IgKGogPSAwOyBqIDwgdyA+PiA0OyBq
KyspIHsgXAorKyAgICAgICAgICAgIFkxID0gVkVDX0xEKHkxaSk7IFwKKysgICAgICAgICAgICBZ
MyA9IFZFQ19MRCh5MmkpOyBcCisrICAgICAgICAgICAgVSA9IFZFQ19MRDgodWkpOyBcCisrICAg
ICAgICAgICAgViA9IFZFQ19MRDgodmkpOyBcCisrICAgICAgICAgICAgVSA9IF9tbV91bnBhY2ts
b19lcGk4KFUsIHplcm92KTsgXAorKyAgICAgICAgICAgIFYgPSBfbW1fdW5wYWNrbG9fZXBpOChW
LCB6ZXJvdik7IFwKKysgICAgICAgICAgICBZMCA9IF9tbV91bnBhY2tsb19lcGk4KFkxLCB6ZXJv
dik7IFwKKysgICAgICAgICAgICBZMSA9IF9tbV91bnBhY2toaV9lcGk4KFkxLCB6ZXJvdik7IFwK
KysgICAgICAgICAgICBZMiA9IF9tbV91bnBhY2tsb19lcGk4KFkzLCB6ZXJvdik7IFwKKysgICAg
ICAgICAgICBZMyA9IF9tbV91bnBhY2toaV9lcGk4KFkzLCB6ZXJvdik7IFwKKysgICAgICAgICAg
ICBVID0gX21tX3N1Yl9lcGkxNihVLCBkZWMxMjgpOyBcCisrICAgICAgICAgICAgViA9IF9tbV9z
dWJfZXBpMTYoViwgZGVjMTI4KTsgXAorKyAgICAgICAgICAgIFUgPSBfbW1fc2xsaV9lcGkxNihV
LCAyKTsgXAorKyAgICAgICAgICAgIFYgPSBfbW1fc2xsaV9lcGkxNihWLCAyKTsgXAorKyAgICAg
ICAgICAgIFkwID0gX21tX3NsbGlfZXBpMTYoWTAsIDIpOyBcCisrICAgICAgICAgICAgWTEgPSBf
bW1fc2xsaV9lcGkxNihZMSwgMik7IFwKKysgICAgICAgICAgICBZMiA9IF9tbV9zbGxpX2VwaTE2
KFkyLCAyKTsgXAorKyAgICAgICAgICAgIFkzID0gX21tX3NsbGlfZXBpMTYoWTMsIDIpOyBcCisr
ICAgICAgICAgICAgXAorKyAgICAgICAgICAgIFkwID0gX21tX211bGhyc19lcGkxNihfbW1fc3Vi
X2VwaTE2KFkwLCB5X3N1YiksIHlfY29lZmYpOyBcCisrICAgICAgICAgICAgWTEgPSBfbW1fbXVs
aHJzX2VwaTE2KF9tbV9zdWJfZXBpMTYoWTEsIHlfc3ViKSwgeV9jb2VmZik7IFwKKysgICAgICAg
ICAgICBZMiA9IF9tbV9tdWxocnNfZXBpMTYoX21tX3N1Yl9lcGkxNihZMiwgeV9zdWIpLCB5X2Nv
ZWZmKTsgXAorKyAgICAgICAgICAgIFkzID0gX21tX211bGhyc19lcGkxNihfbW1fc3ViX2VwaTE2
KFkzLCB5X3N1YiksIHlfY29lZmYpOyBcCisrICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHV4
ID0gX21tX211bGhyc19lcGkxNihVLCB1MmJfY29lZmYpOyBcCisrICAgICAgICAgICAgdnggPSBf
bW1fbXVsaHJzX2VwaTE2KFYsIHYycl9jb2VmZik7IFwKKysgICAgICAgICAgICB1eDAgPSBfbW1f
dW5wYWNrbG9fZXBpMTYodXgsIHV4KTsgXAorKyAgICAgICAgICAgIHV4MSA9IF9tbV91bnBhY2to
aV9lcGkxNih1eCwgdXgpOyBcCisrICAgICAgICAgICAgdngwID0gX21tX3VucGFja2xvX2VwaTE2
KHZ4LCB2eCk7IFwKKysgICAgICAgICAgICB2eDEgPSBfbW1fdW5wYWNraGlfZXBpMTYodngsIHZ4
KTsgXAorKyAgICAgICAgICAgIFwKKysgICAgICAgICAgICB1dnggPSBfbW1fbXVsaHJzX2VwaTE2
KFUsIHUyZ19jb2VmZik7IFwKKysgICAgICAgICAgICB1dnggPSBfbW1fYWRkX2VwaTE2KF9tbV9t
dWxocnNfZXBpMTYoViwgdjJnX2NvZWZmKSwgdXZ4KTsgXAorKyAgICAgICAgICAgIHV2eDAgPSBf
bW1fdW5wYWNrbG9fZXBpMTYodXZ4LCB1dngpOyBcCisrICAgICAgICAgICAgdXZ4MSA9IF9tbV91
bnBhY2toaV9lcGkxNih1dngsIHV2eCk7IFwKKysgICAgICAgICAgICBcCisrICAgICAgICAgICAg
Ul9sID0gX21tX2FkZF9lcGkxNihZMCwgdngwKTsgXAorKyAgICAgICAgICAgIEdfbCA9IF9tbV9h
ZGRfZXBpMTYoWTAsIHV2eDApOyBcCisrICAgICAgICAgICAgQl9sID0gX21tX2FkZF9lcGkxNihZ
MCwgdXgwKTsgXAorKyAgICAgICAgICAgIFwKKysgICAgICAgICAgICBXUklURTJfIyNmbXQob3V0
MCwgUiwgQikgXAorKyAgICAgICAgICAgIFwKKysgICAgICAgICAgICBSX2wgPSBfbW1fYWRkX2Vw
aTE2KFkxLCB2eDEpOyBcCisrICAgICAgICAgICAgR19sID0gX21tX2FkZF9lcGkxNihZMSwgdXZ4
MSk7IFwKKysgICAgICAgICAgICBCX2wgPSBfbW1fYWRkX2VwaTE2KFkxLCB1eDEpOyBcCisrICAg
ICAgICAgICAgXAorKyAgICAgICAgICAgIFdSSVRFMl8jI2ZtdChvdXQwLCBSLCBCKSBcCisrICAg
ICAgICAgICAgXAorKyAgICAgICAgICAgIFJfbCA9IF9tbV9hZGRfZXBpMTYoWTIsIHZ4MCk7IFwK
KysgICAgICAgICAgICBHX2wgPSBfbW1fYWRkX2VwaTE2KFkyLCB1dngwKTsgXAorKyAgICAgICAg
ICAgIEJfbCA9IF9tbV9hZGRfZXBpMTYoWTIsIHV4MCk7IFwKKysgICAgICAgICAgICBcCisrICAg
ICAgICAgICAgV1JJVEUyXyMjZm10KG91dDEsIFIsIEIpIFwKKysgICAgICAgICAgICBcCisrICAg
ICAgICAgICAgUl9sID0gX21tX2FkZF9lcGkxNihZMywgdngxKTsgXAorKyAgICAgICAgICAgIEdf
bCA9IF9tbV9hZGRfZXBpMTYoWTMsIHV2eDEpOyBcCisrICAgICAgICAgICAgQl9sID0gX21tX2Fk
ZF9lcGkxNihZMywgdXgxKTsgXAorKyAgICAgICAgICAgIFwKKysgICAgICAgICAgICBXUklURTJf
IyNmbXQob3V0MSwgUiwgQikgXAorKyAgICAgICAgICAgIFwKKysgICAgICAgICAgICB5MWkgKz0g
MTY7IHVpICs9IDg7IFwKKysgICAgICAgICAgICB5MmkgKz0gMTY7IHZpICs9IDg7IFwKKysgICAg
ICAgIH0gXAorKyAgICAgICAgeTFpICs9IGluc3RyaWRlczA7IHVpICs9IGluc3RyaWRlczE7IFwK
KysgICAgICAgIHkyaSArPSBpbnN0cmlkZXMwOyB2aSArPSBpbnN0cmlkZXMyOyBcCisrICAgIH0g
XAorKyAgICByZXR1cm4gc3JjU2xpY2VIOyBcCisrfQorKworK0RFRkNTUDQyMF9DVlQocmdieDMy
LCBSR0JYLCBSLCBCKQorK0RFRkNTUDQyMF9DVlQoYmdyeDMyLCBSR0JYLCBCLCBSKQorK0RFRkNT
UDQyMF9DVlQoeHJnYjMyLCBYUkdCLCBSLCBCKQorK0RFRkNTUDQyMF9DVlQoeGJncjMyLCBYUkdC
LCBCLCBSKQorK0RFRkNTUDQyMF9DVlQocmdiMjQsIFJHQiwgUiwgQikKKytERUZDU1A0MjBfQ1ZU
KGJncjI0LCBSR0IsIEIsIFIpCisrCisrLyogT2sgY3VycmVudGx5IHRoZSBhY2NlbGVyYXRpb24g
cm91dGluZSBvbmx5IHN1cHBvcnRzCisrICogaW5wdXRzIG9mIHdpZHRocyBhIG11bHRpcGxlIG9m
IDE2CisrICogYW5kIGhlaWdodHMgYSBtdWx0aXBsZSAyCisrICoKKysgKiBTbyB3ZSBqdXN0IGZh
bGwgYmFjayB0byB0aGUgQyBjb2RlcyBmb3IgdGhpcy4KKysgKi8KKythdl9jb2xkIFN3c0Z1bmMg
ZmZfeXV2MnJnYl9pbml0X2UyayhTd3NDb250ZXh0ICpjKQorK3sKKysgICAgU3dzRnVuYyByZXQ7
CisrICAgIGlmICghKGF2X2dldF9jcHVfZmxhZ3MoKSAmIEFWX0NQVV9GTEFHX0UySykpCisrICAg
ICAgICByZXR1cm4gTlVMTDsKKysKKysgICAgaWYgKGMtPmZsYWdzICYgU1dTX0JJVEVYQUNUIHx8
IGMtPm5lZWRBbHBoYSkKKysgICAgICAgIHJldHVybiBOVUxMOworKworKyAgICByZXQgPSBOVUxM
OworKyAgICBzd2l0Y2ggKGMtPnNyY0Zvcm1hdCkgeworKyAgICBjYXNlIEFWX1BJWF9GTVRfWVVW
NDIyUDoKKysgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQyMFA6CisrICAgICAgICBpZiAoYy0+ZHN0
VyAmIDE1IHx8IGMtPmRzdEggJiAxKSBicmVhazsKKysgICAgICAgIHN3aXRjaCAoYy0+ZHN0Rm9y
bWF0KSB7CisrICAgICAgICBjYXNlIEFWX1BJWF9GTVRfUkdCMjQ6CisrICAgICAgICAgICAgcmV0
ID0geXV2MnJnYjI0X2UyazsgYnJlYWs7CisrICAgICAgICBjYXNlIEFWX1BJWF9GTVRfQkdSMjQ6
CisrICAgICAgICAgICAgcmV0ID0geXV2MmJncjI0X2UyazsgYnJlYWs7CisrICAgICAgICBjYXNl
IEFWX1BJWF9GTVRfQVJHQjoKKysgICAgICAgICAgICByZXQgPSB5dXYyeHJnYjMyX2UyazsgYnJl
YWs7CisrICAgICAgICBjYXNlIEFWX1BJWF9GTVRfQUJHUjoKKysgICAgICAgICAgICByZXQgPSB5
dXYyeGJncjMyX2UyazsgYnJlYWs7CisrICAgICAgICBjYXNlIEFWX1BJWF9GTVRfUkdCQToKKysg
ICAgICAgICAgICByZXQgPSB5dXYycmdieDMyX2UyazsgYnJlYWs7CisrICAgICAgICBjYXNlIEFW
X1BJWF9GTVRfQkdSQToKKysgICAgICAgICAgICByZXQgPSB5dXYyYmdyeDMyX2UyazsgYnJlYWs7
CisrICAgICAgICBkZWZhdWx0OiBicmVhazsKKysgICAgICAgIH0KKysgICAgICAgIGJyZWFrOwor
KyAgICB9CisrICAgIGlmIChyZXQpIHsKKysgICAgICAgIGF2X2xvZyhjLCBBVl9MT0dfV0FSTklO
RywgIkUySzogeXV2MnJnYiglcywgJXMpXG4iLAorKyAgICAgICAgICAgICAgICBhdl9nZXRfcGl4
X2ZtdF9uYW1lKGMtPnNyY0Zvcm1hdCksCisrICAgICAgICAgICAgICAgIGF2X2dldF9waXhfZm10
X25hbWUoYy0+ZHN0Rm9ybWF0KSk7CisrICAgIH0KKysgICAgcmV0dXJuIHJldDsKKyt9CisrCitk
aWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9lMmsveXV2MnJnYi5oIGIvbGlic3dzY2FsZS9lMmsveXV2
MnJnYi5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNTk2MzdiYworLS0t
IC9kZXYvbnVsbAorKysrIGIvbGlic3dzY2FsZS9lMmsveXV2MnJnYi5oCitAQCAtMCwwICsxLDUy
IEBACisrLyoKKysgKiBFbGJydXMtZW5oYW5jZWQgeXV2Mnl1dlgKKysgKgorKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBJbHlhIEt1cmR5dWtvdiA8anBlZ3FzQGdtYWlsLmNvbT4gZm9yIEJhc2VBTFQs
IEx0ZAorKyAqIENvcHlyaWdodCAoQykgMjAwNCBSb21haW4gRG9sYmVhdSA8cm9tYWluQGRvbGJl
YXUub3JnPgorKyAqIGJhc2VkIG9uIHRoZSBlcXVpdmFsZW50IEMgY29kZSBpbiBzd3NjYWxlLmMK
KysgKgorKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKysgKgorKyAqIEZGbXBlZyBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisr
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisrICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisrICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysg
KgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorKyAqLwor
KworKyNpZm5kZWYgU1dTQ0FMRV9FMktfWVVWMlJHQl9ICisrI2RlZmluZSBTV1NDQUxFX0UyS19Z
VVYyUkdCX0gKKysKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrCisrI2luY2x1ZGUgImxpYnN3c2Nh
bGUvc3dzY2FsZV9pbnRlcm5hbC5oIgorKworKyNkZWZpbmUgWVVWMlBBQ0tFRFhfSEVBREVSKHN1
ZmZpeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHZvaWQgZmZfeXV2MiMj
c3VmZml4IyNfWF9lMmsoU3dzQ29udGV4dCAqYywgICAgICAgICAgICAgXAorKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQxNl90ICpsdW1GaWx0ZXIsICBcCisr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDE2X3QgKipsdW1T
cmMsICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGx1bUZp
bHRlclNpemUsICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBpbnQxNl90ICpjaHJGaWx0ZXIsICBcCisrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGludDE2X3QgKipjaHJVU3JjLCAgIFwKKysgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50MTZfdCAqKmNoclZTcmMsICAgXAorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hyRmlsdGVyU2l6ZSwgICAg
ICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludDE2
X3QgKiphbHBTcmMsICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDhfdCAqZGVzdCwgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZHN0VywgaW50IGRzdFkpOworKworK1lVVjJQQUNLRURYX0hFQURFUihh
YmdyKTsKKytZVVYyUEFDS0VEWF9IRUFERVIoYmdyYSk7CisrWVVWMlBBQ0tFRFhfSEVBREVSKGFy
Z2IpOworK1lVVjJQQUNLRURYX0hFQURFUihyZ2JhKTsKKytZVVYyUEFDS0VEWF9IRUFERVIocmdi
MjQpOworK1lVVjJQQUNLRURYX0hFQURFUihiZ3IyNCk7CisrCisrI2VuZGlmIC8qIFNXU0NBTEVf
RTJLX1lVVjJSR0JfSCAqLworZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvZTJrL3l1djJ5dXYuYyBi
L2xpYnN3c2NhbGUvZTJrL3l1djJ5dXYuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw
MDAwMDAuLjc0MjNmYTgKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYnN3c2NhbGUvZTJrL3l1djJ5
dXYuYworQEAgLTAsMCArMSwxNDYgQEAKKysvKgorKyAqIEVsYnJ1cy1lbmhhbmNlZCB5dXYtdG8t
eXV2IGNvbnZlcnNpb24gcm91dGluZXMuCisrICoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMjEgSWx5
YSBLdXJkeXVrb3YgPGpwZWdxc0BnbWFpbC5jb20+IGZvciBCYXNlQUxULCBMdGQKKysgKiBDb3B5
cmlnaHQgKEMpIDIwMDQgUm9tYWluIERvbGJlYXUgPHJvbWFpbkBkb2xiZWF1Lm9yZz4KKysgKiBi
YXNlZCBvbiB0aGUgZXF1aXZhbGVudCBDIGNvZGUgaW4gc3dzY2FsZS5jCisrICoKKysgKiBUaGlz
IGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisrICoKKysgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAqIHZl
cnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorKyAqCisrICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAqIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisrICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKysgKi8KKysKKysjaW5jbHVkZSA8
aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSAiY29uZmlnLmgiCisrI2luY2x1ZGUgImxpYmF2dXRp
bC9hdHRyaWJ1dGVzLmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9jcHUuaCIKKysjaW5jbHVkZSAi
bGlic3dzY2FsZS9zd3NjYWxlLmgiCisrI2luY2x1ZGUgImxpYnN3c2NhbGUvc3dzY2FsZV9pbnRl
cm5hbC5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvZTJrL3V0aWxfZTJrLmgiCisrCisrLyogVGhp
cyBjb2RlIGFzc3VtZXM6CisrICoKKysgKiAxKSBkc3QgaXMgMTYgYnl0ZXMtYWxpZ25lZAorKyAq
IDIpIGRzdFN0cmlkZSBpcyBhIG11bHRpcGxlIG9mIDE2CisrICogMykgd2lkdGggaXMgYSBtdWx0
aXBsZSBvZiAxNgorKyAqIDQpIGx1bSAmIGNocm9tIHN0cmlkZSBhcmUgbXVsdGlwbGVzIG9mIDgK
KysgKi8KKysKKytzdGF0aWMgaW50IHl2MTJ0b3l1eTJfdW5zY2FsZWRfZTJrKFN3c0NvbnRleHQg
KmMsIGNvbnN0IHVpbnQ4X3QgKnNyY1tdLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHNyY1N0cmlkZVtdLCBpbnQgc3JjU2xpY2VZLAorKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNyY1NsaWNlSCwgdWludDhfdCAqZHN0UGFyYW1bXSwKKysg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkc3RTdHJpZGVfYVtdKQorK3sK
KysgICAgY29uc3QgdWludDhfdCAqeXNyYyA9IHNyY1swXSwgKnVzcmMgPSBzcmNbMV0sICp2c3Jj
ID0gc3JjWzJdOworKyAgICBpbnQgZHN0U3RyaWRlID0gZHN0U3RyaWRlX2FbMF07CisrICAgIHVp
bnQ4X3QgKmRzdCA9IGRzdFBhcmFtWzBdICsgZHN0U3RyaWRlICogc3JjU2xpY2VZOworKyAgICBp
bnQgd2lkdGggPSAoYy0+ZHN0VyArIDEpID4+IDEsIGhlaWdodCA9IHNyY1NsaWNlSDsKKysgICAg
aW50IGx1bVN0cmlkZSA9IHNyY1N0cmlkZVswXTsKKysgICAgaW50IGNocm9tU3RyaWRlID0gc3Jj
U3RyaWRlWzFdOworKyAgICBpbnQgeSwgaTsKKysKKysgICAgZm9yICh5ID0gMDsgeSA8IGhlaWdo
dDsgeSsrKSB7CisrICAgICAgICBQUkFHTUFfRTJLKCJpdmRlcCIpCisrICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgd2lkdGggLSA3OyBpICs9IDgpIHsKKysgICAgICAgICAgICBfX20xMjhpIHYwLCB2
MSwgdjIsIHYzOworKyAgICAgICAgICAgIHYwID0gVkVDX0xEKHlzcmMgKyBpICogMik7CisrICAg
ICAgICAgICAgdjIgPSBWRUNfTEQ4KHVzcmMgKyBpKTsKKysgICAgICAgICAgICB2MyA9IFZFQ19M
RDgodnNyYyArIGkpOworKyAgICAgICAgICAgIHYxID0gX21tX3VucGFja2xvX2VwaTgodjIsIHYz
KTsKKysgICAgICAgICAgICBWRUNfU1QoZHN0ICsgaSAqIDQsIF9tbV91bnBhY2tsb19lcGk4KHYw
LCB2MSkpOworKyAgICAgICAgICAgIFZFQ19TVChkc3QgKyBpICogNCArIDE2LCBfbW1fdW5wYWNr
aGlfZXBpOCh2MCwgdjEpKTsKKysgICAgICAgIH0KKysKKysgICAgICAgIFBSQUdNQV9FMksoIml2
ZGVwIikKKysgICAgICAgIGZvciAoOyBpIDwgd2lkdGg7IGkrKykgeworKyAgICAgICAgICAgICoo
dWludDMyX3QqKShkc3QgKyBpICogNCkgPQorKyAgICAgICAgICAgICAgICB5c3JjW2kgKiAyXSB8
IHVzcmNbaV0gPDwgOCB8CisrICAgICAgICAgICAgICAgIHlzcmNbaSAqIDIgKyAxXSA8PCAxNiB8
IHZzcmNbaV0gPDwgMjQ7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAoeSAmIDEpIHsKKysg
ICAgICAgICAgICB1c3JjICs9IGNocm9tU3RyaWRlOworKyAgICAgICAgICAgIHZzcmMgKz0gY2hy
b21TdHJpZGU7CisrICAgICAgICB9CisrICAgICAgICB5c3JjICs9IGx1bVN0cmlkZTsKKysgICAg
ICAgIGRzdCArPSBkc3RTdHJpZGU7CisrICAgIH0KKysKKysgICAgcmV0dXJuIHNyY1NsaWNlSDsK
Kyt9CisrCisrc3RhdGljIGludCB5djEydG91eXZ5X3Vuc2NhbGVkX2UyayhTd3NDb250ZXh0ICpj
LCBjb25zdCB1aW50OF90ICpzcmNbXSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBzcmNTdHJpZGVbXSwgaW50IHNyY1NsaWNlWSwKKysgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBzcmNTbGljZUgsIHVpbnQ4X3QgKmRzdFBhcmFtW10sCisrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHN0U3RyaWRlX2FbXSkKKyt7Cisr
ICAgIGNvbnN0IHVpbnQ4X3QgKnlzcmMgPSBzcmNbMF0sICp1c3JjID0gc3JjWzFdLCAqdnNyYyA9
IHNyY1syXTsKKysgICAgaW50IGRzdFN0cmlkZSA9IGRzdFN0cmlkZV9hWzBdOworKyAgICB1aW50
OF90ICpkc3QgPSBkc3RQYXJhbVswXSArIGRzdFN0cmlkZSAqIHNyY1NsaWNlWTsKKysgICAgaW50
IHdpZHRoID0gKGMtPmRzdFcgKyAxKSA+PiAxLCBoZWlnaHQgPSBzcmNTbGljZUg7CisrICAgIGlu
dCBsdW1TdHJpZGUgPSBzcmNTdHJpZGVbMF07CisrICAgIGludCBjaHJvbVN0cmlkZSA9IHNyY1N0
cmlkZVsxXTsKKysgICAgaW50IHksIGk7CisrCisrICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7
IHkrKykgeworKyAgICAgICAgUFJBR01BX0UySygiaXZkZXAiKQorKyAgICAgICAgZm9yIChpID0g
MDsgaSA8IHdpZHRoIC0gNzsgaSArPSA4KSB7CisrICAgICAgICAgICAgX19tMTI4aSB2MCwgdjEs
IHYyLCB2MzsKKysgICAgICAgICAgICB2MCA9IFZFQ19MRCh5c3JjICsgaSAqIDIpOworKyAgICAg
ICAgICAgIHYyID0gVkVDX0xEOCh1c3JjICsgaSk7CisrICAgICAgICAgICAgdjMgPSBWRUNfTEQ4
KHZzcmMgKyBpKTsKKysgICAgICAgICAgICB2MSA9IF9tbV91bnBhY2tsb19lcGk4KHYyLCB2Myk7
CisrICAgICAgICAgICAgVkVDX1NUKGRzdCArIGkgKiA0LCBfbW1fdW5wYWNrbG9fZXBpOCh2MSwg
djApKTsKKysgICAgICAgICAgICBWRUNfU1QoZHN0ICsgaSAqIDQgKyAxNiwgX21tX3VucGFja2hp
X2VwaTgodjEsIHYwKSk7CisrICAgICAgICB9CisrCisrICAgICAgICBQUkFHTUFfRTJLKCJpdmRl
cCIpCisrICAgICAgICBmb3IgKDsgaSA8IHdpZHRoOyBpKyspIHsKKysgICAgICAgICAgICAqKHVp
bnQzMl90KikoZHN0ICsgaSAqIDQpID0KKysgICAgICAgICAgICAgICAgdXNyY1tpXSB8IHlzcmNb
aSAqIDJdIDw8IDggfAorKyAgICAgICAgICAgICAgICB2c3JjW2ldIDw8IDE2IHwgeXNyY1tpICog
MiArIDFdIDw8IDI0OworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKHkgJiAxKSB7CisrICAg
ICAgICAgICAgdXNyYyArPSBjaHJvbVN0cmlkZTsKKysgICAgICAgICAgICB2c3JjICs9IGNocm9t
U3RyaWRlOworKyAgICAgICAgfQorKyAgICAgICAgeXNyYyArPSBsdW1TdHJpZGU7CisrICAgICAg
ICBkc3QgKz0gZHN0U3RyaWRlOworKyAgICB9CisrICAgIHJldHVybiBzcmNTbGljZUg7CisrfQor
KworK2F2X2NvbGQgdm9pZCBmZl9nZXRfdW5zY2FsZWRfc3dzY2FsZV9lMmsoU3dzQ29udGV4dCAq
YykKKyt7CisrICAgIGlmICghKGF2X2dldF9jcHVfZmxhZ3MoKSAmIEFWX0NQVV9GTEFHX0UySykp
CisrICAgICAgICByZXR1cm47CisrCisrICAgIGlmIChjLT5mbGFncyAmIFNXU19CSVRFWEFDVCkK
KysgICAgICAgIHJldHVybjsKKysKKysgICAgaWYgKGMtPnNyY0Zvcm1hdCA9PSBBVl9QSVhfRk1U
X1lVVjQyMFApIHsKKysgICAgICAgIGVudW0gQVZQaXhlbEZvcm1hdCBkc3RGb3JtYXQgPSBjLT5k
c3RGb3JtYXQ7CisrICAgICAgICBzd2l0Y2ggKGRzdEZvcm1hdCkgeworKyAgICAgICAgY2FzZSBB
Vl9QSVhfRk1UX1lVWVY0MjI6CisrICAgICAgICAgICAgYy0+c3dzY2FsZSA9IHl2MTJ0b3l1eTJf
dW5zY2FsZWRfZTJrOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBBVl9QSVhf
Rk1UX1VZVlk0MjI6CisrICAgICAgICAgICAgYy0+c3dzY2FsZSA9IHl2MTJ0b3V5dnlfdW5zY2Fs
ZWRfZTJrOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAgICB9CisrfQorZGlm
ZiAtLWdpdCBhL2xpYnN3c2NhbGUvc3dzY2FsZS5jIGIvbGlic3dzY2FsZS9zd3NjYWxlLmMKK2lu
ZGV4IDljYjdlOGYuLjc3NjA4ODUgMTAwNjQ0CistLS0gYS9saWJzd3NjYWxlL3N3c2NhbGUuYwor
KysrIGIvbGlic3dzY2FsZS9zd3NjYWxlLmMKK0BAIC01ODYsNiArNTg2LDggQEAgU3dzRnVuYyBm
Zl9nZXRTd3NGdW5jKFN3c0NvbnRleHQgKmMpCisgCisgICAgIGlmIChBUkNIX1BQQykKKyAgICAg
ICAgIGZmX3N3c19pbml0X3N3c2NhbGVfcHBjKGMpOworKyAgICBpZiAoQVJDSF9FMkspCisrICAg
ICAgICBmZl9zd3NfaW5pdF9zd3NjYWxlX2UyayhjKTsKKyAgICAgaWYgKEFSQ0hfWDg2KQorICAg
ICAgICAgZmZfc3dzX2luaXRfc3dzY2FsZV94ODYoYyk7CisgICAgIGlmIChBUkNIX0FBUkNINjQp
CitkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS9zd3NjYWxlX2ludGVybmFsLmggYi9saWJzd3NjYWxl
L3N3c2NhbGVfaW50ZXJuYWwuaAoraW5kZXggZWU0NjA5Mi4uOGRjZmZiMiAxMDA2NDQKKy0tLSBh
L2xpYnN3c2NhbGUvc3dzY2FsZV9pbnRlcm5hbC5oCisrKysgYi9saWJzd3NjYWxlL3N3c2NhbGVf
aW50ZXJuYWwuaAorQEAgLTMxLDcgKzMxLDkgQEAKKyAjaW5jbHVkZSAibGliYXZ1dGlsL2xvZy5o
IgorICNpbmNsdWRlICJsaWJhdnV0aWwvcGl4Zm10LmgiCisgI2luY2x1ZGUgImxpYmF2dXRpbC9w
aXhkZXNjLmgiCisrI2lmIEhBVkVfQUxUSVZFQworICNpbmNsdWRlICJsaWJhdnV0aWwvcHBjL3V0
aWxfYWx0aXZlYy5oIgorKyNlbmRpZgorIAorICNkZWZpbmUgU1RSKHMpIEFWX1RPU1RSSU5HKHMp
IC8vIEFWX1NUUklOR0lGWSBpcyB0b28gbG9uZworIAorQEAgLTYzOSw2ICs2NDEsNyBAQCBhdl9j
b2xkIHZvaWQgZmZfc3dzX2luaXRfcmFuZ2VfY29udmVydChTd3NDb250ZXh0ICpjKTsKKyAKKyBT
d3NGdW5jIGZmX3l1djJyZ2JfaW5pdF94ODYoU3dzQ29udGV4dCAqYyk7CisgU3dzRnVuYyBmZl95
dXYycmdiX2luaXRfcHBjKFN3c0NvbnRleHQgKmMpOworK1N3c0Z1bmMgZmZfeXV2MnJnYl9pbml0
X2UyayhTd3NDb250ZXh0ICpjKTsKKyAKKyBzdGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgaXMx
NkJQUyhlbnVtIEFWUGl4ZWxGb3JtYXQgcGl4X2ZtdCkKKyB7CitAQCAtODUzLDYgKzg1Niw3IEBA
IGV4dGVybiBjb25zdCBBVkNsYXNzIGZmX3N3c19jb250ZXh0X2NsYXNzOworICAqLworIHZvaWQg
ZmZfZ2V0X3Vuc2NhbGVkX3N3c2NhbGUoU3dzQ29udGV4dCAqYyk7Cisgdm9pZCBmZl9nZXRfdW5z
Y2FsZWRfc3dzY2FsZV9wcGMoU3dzQ29udGV4dCAqYyk7Cisrdm9pZCBmZl9nZXRfdW5zY2FsZWRf
c3dzY2FsZV9lMmsoU3dzQ29udGV4dCAqYyk7Cisgdm9pZCBmZl9nZXRfdW5zY2FsZWRfc3dzY2Fs
ZV9hcm0oU3dzQ29udGV4dCAqYyk7Cisgdm9pZCBmZl9nZXRfdW5zY2FsZWRfc3dzY2FsZV9hYXJj
aDY0KFN3c0NvbnRleHQgKmMpOworIAorQEAgLTg3Myw2ICs4NzcsNyBAQCB2b2lkIGZmX3N3c19p
bml0X291dHB1dF9mdW5jcyhTd3NDb250ZXh0ICpjLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHl1djJhbnlYX2ZuICp5dXYyYW55WCk7Cisgdm9pZCBmZl9zd3NfaW5pdF9zd3NjYWxl
X3BwYyhTd3NDb250ZXh0ICpjKTsKKyB2b2lkIGZmX3N3c19pbml0X3N3c2NhbGVfdnN4KFN3c0Nv
bnRleHQgKmMpOworK3ZvaWQgZmZfc3dzX2luaXRfc3dzY2FsZV9lMmsoU3dzQ29udGV4dCAqYyk7
Cisgdm9pZCBmZl9zd3NfaW5pdF9zd3NjYWxlX3g4NihTd3NDb250ZXh0ICpjKTsKKyB2b2lkIGZm
X3N3c19pbml0X3N3c2NhbGVfYWFyY2g2NChTd3NDb250ZXh0ICpjKTsKKyB2b2lkIGZmX3N3c19p
bml0X3N3c2NhbGVfYXJtKFN3c0NvbnRleHQgKmMpOworZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUv
c3dzY2FsZV91bnNjYWxlZC5jIGIvbGlic3dzY2FsZS9zd3NjYWxlX3Vuc2NhbGVkLmMKK2luZGV4
IDVmYjU3MmIuLmNhY2IxMWMgMTAwNjQ0CistLS0gYS9saWJzd3NjYWxlL3N3c2NhbGVfdW5zY2Fs
ZWQuYworKysrIGIvbGlic3dzY2FsZS9zd3NjYWxlX3Vuc2NhbGVkLmMKK0BAIC0yMTcyLDYgKzIx
NzIsOCBAQCB2b2lkIGZmX2dldF91bnNjYWxlZF9zd3NjYWxlKFN3c0NvbnRleHQgKmMpCisgCisg
ICAgIGlmIChBUkNIX1BQQykKKyAgICAgICAgIGZmX2dldF91bnNjYWxlZF9zd3NjYWxlX3BwYyhj
KTsKKysgICAgaWYgKEFSQ0hfRTJLKQorKyAgICAgICAgZmZfZ2V0X3Vuc2NhbGVkX3N3c2NhbGVf
ZTJrKGMpOworICAgICAgaWYgKEFSQ0hfQVJNKQorICAgICAgICAgIGZmX2dldF91bnNjYWxlZF9z
d3NjYWxlX2FybShjKTsKKyAgICAgaWYgKEFSQ0hfQUFSQ0g2NCkKK2RpZmYgLS1naXQgYS9saWJz
d3NjYWxlL3V0aWxzLmMgYi9saWJzd3NjYWxlL3V0aWxzLmMKK2luZGV4IDExMTA2MmUuLmRiNThi
ZTEgMTAwNjQ0CistLS0gYS9saWJzd3NjYWxlL3V0aWxzLmMKKysrKyBiL2xpYnN3c2NhbGUvdXRp
bHMuYworQEAgLTUxLDYgKzUxLDcgQEAKKyAjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIK
KyAjaW5jbHVkZSAibGliYXZ1dGlsL2FhcmNoNjQvY3B1LmgiCisgI2luY2x1ZGUgImxpYmF2dXRp
bC9wcGMvY3B1LmgiCisrI2luY2x1ZGUgImxpYmF2dXRpbC9lMmsvY3B1LmgiCisgI2luY2x1ZGUg
ImxpYmF2dXRpbC94ODYvYXNtLmgiCisgI2luY2x1ZGUgImxpYmF2dXRpbC94ODYvY3B1LmgiCisg
CitAQCAtNjAwLDYgKzYwMSwxNCBAQCBzdGF0aWMgYXZfY29sZCBpbnQgaW5pdEZpbHRlcihpbnQx
Nl90ICoqb3V0RmlsdGVyLCBpbnQzMl90ICoqZmlsdGVyUG9zLAorICAgICAgICAgICAgIGZpbHRl
ckFsaWduID0gMTsKKyAgICAgfQorIAorKyAgICBpZiAoRTJLX0JBU0UoY3B1X2ZsYWdzKSkgewor
KyAgICAgICAgaWYgKG1pbkZpbHRlclNpemUgPCA1KQorKyAgICAgICAgICAgIGZpbHRlckFsaWdu
ID0gNDsKKysKKysgICAgICAgIGlmIChtaW5GaWx0ZXJTaXplIDwgMykKKysgICAgICAgICAgICBm
aWx0ZXJBbGlnbiA9IDE7CisrICAgIH0KKysKKyAgICAgaWYgKEhBVkVfTU1YICYmIGNwdV9mbGFn
cyAmIEFWX0NQVV9GTEFHX01NWCkgeworICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciB1bnNj
YWxlZCB2ZXJ0aWNhbCBmaWx0ZXJpbmcKKyAgICAgICAgIGlmIChtaW5GaWx0ZXJTaXplID09IDEg
JiYgZmlsdGVyQWxpZ24gPT0gMikKK0BAIC0xNjc5LDYgKzE2ODgsNyBAQCBhdl9jb2xkIGludCBz
d3NfaW5pdF9jb250ZXh0KFN3c0NvbnRleHQgKmMsIFN3c0ZpbHRlciAqc3JjRmlsdGVyLAorICAg
ICAgICAgeworICAgICAgICAgICAgIGNvbnN0IGludCBmaWx0ZXJBbGlnbiA9IFg4Nl9NTVgoY3B1
X2ZsYWdzKSAgICAgPyA0IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
UENfQUxUSVZFQyhjcHVfZmxhZ3MpID8gOCA6CisrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRTJLX0JBU0UoY3B1X2ZsYWdzKSAgICA/IDggOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhhdmVfbmVvbihjcHVfZmxhZ3MpICAgPyA4IDogMTsKKyAKKyAg
ICAgICAgICAgICBpZiAoKHJldCA9IGluaXRGaWx0ZXIoJmMtPmhMdW1GaWx0ZXIsICZjLT5oTHVt
RmlsdGVyUG9zLAorQEAgLTE3MDYsNiArMTcxNiw3IEBAIGF2X2NvbGQgaW50IHN3c19pbml0X2Nv
bnRleHQoU3dzQ29udGV4dCAqYywgU3dzRmlsdGVyICpzcmNGaWx0ZXIsCisgICAgIHsKKyAgICAg
ICAgIGNvbnN0IGludCBmaWx0ZXJBbGlnbiA9IFg4Nl9NTVgoY3B1X2ZsYWdzKSAgICAgPyAyIDoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBQQ19BTFRJVkVDKGNwdV9mbGFncykg
PyA4IDoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUyS19CQVNFKGNwdV9mbGFn
cykgICAgPyA4IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVfbmVvbihj
cHVfZmxhZ3MpICAgPyAyIDogMTsKKyAKKyAgICAgICAgIGlmICgocmV0ID0gaW5pdEZpbHRlcigm
Yy0+dkx1bUZpbHRlciwgJmMtPnZMdW1GaWx0ZXJQb3MsICZjLT52THVtRmlsdGVyU2l6ZSwKK0BA
IC0xNzkwLDYgKzE4MDEsOCBAQCBhdl9jb2xkIGludCBzd3NfaW5pdF9jb250ZXh0KFN3c0NvbnRl
eHQgKmMsIFN3c0ZpbHRlciAqc3JjRmlsdGVyLAorICAgICAgICAgICAgIGNwdWNhcHMgPSAiTU1Y
IjsKKyAgICAgICAgIGVsc2UgaWYgKFBQQ19BTFRJVkVDKGNwdV9mbGFncykpCisgICAgICAgICAg
ICAgY3B1Y2FwcyA9ICJBbHRpVmVjIjsKKysgICAgICAgIGVsc2UgaWYgKEUyS19CQVNFKGNwdV9m
bGFncykpCisrICAgICAgICAgICAgY3B1Y2FwcyA9ICJFbGJydXMiOworICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgIGNwdWNhcHMgPSAiQyI7CisgCitkaWZmIC0tZ2l0IGEvbGlic3dzY2FsZS95
dXYycmdiLmMgYi9saWJzd3NjYWxlL3l1djJyZ2IuYworaW5kZXggNTg4NDYyNS4uMjZkNDFmZSAx
MDA2NDQKKy0tLSBhL2xpYnN3c2NhbGUveXV2MnJnYi5jCisrKysgYi9saWJzd3NjYWxlL3l1djJy
Z2IuYworQEAgLTY4Miw2ICs2ODIsOCBAQCBTd3NGdW5jIGZmX3l1djJyZ2JfZ2V0X2Z1bmNfcHRy
KFN3c0NvbnRleHQgKmMpCisgCisgICAgIGlmIChBUkNIX1BQQykKKyAgICAgICAgIHQgPSBmZl95
dXYycmdiX2luaXRfcHBjKGMpOworKyAgICBpZiAoQVJDSF9FMkspCisrICAgICAgICB0ID0gZmZf
eXV2MnJnYl9pbml0X2UyayhjKTsKKyAgICAgaWYgKEFSQ0hfWDg2KQorICAgICAgICAgdCA9IGZm
X3l1djJyZ2JfaW5pdF94ODYoYyk7CisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2thc20vY2hl
Y2thc20uYyBiL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmMKK2luZGV4IDg5OWY2OGIuLjM3Njg2
NDcgMTAwNjQ0CistLS0gYS90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5jCisrKysgYi90ZXN0cy9j
aGVja2FzbS9jaGVja2FzbS5jCitAQCAtMjEzLDYgKzIxMyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1
Y3QgeworICAgICB7ICJBTFRJVkVDIiwgICJhbHRpdmVjIiwgIEFWX0NQVV9GTEFHX0FMVElWRUMg
fSwKKyAgICAgeyAiVlNYIiwgICAgICAidnN4IiwgICAgICBBVl9DUFVfRkxBR19WU1ggfSwKKyAg
ICAgeyAiUE9XRVI4IiwgICAicG93ZXI4IiwgICBBVl9DUFVfRkxBR19QT1dFUjggfSwKKysjZWxp
ZiBBUkNIX0UySworKyAgICB7ICJFMksiLCAgICAgICJlMmsiLCAgICAgIEFWX0NQVV9GTEFHX0Uy
SyB9LAorICNlbGlmIEFSQ0hfWDg2CisgICAgIHsgIk1NWCIsICAgICAgIm1teCIsICAgICAgQVZf
Q1BVX0ZMQUdfTU1YfEFWX0NQVV9GTEFHX0NNT1YgfSwKKyAgICAgeyAiTU1YRVhUIiwgICAibW14
ZXh0IiwgICBBVl9DUFVfRkxBR19NTVhFWFQgfSwKK2RpZmYgLS1naXQgYS90ZXN0cy9jaGVja2Fz
bS9odWZmeXV2ZHNwLmMgYi90ZXN0cy9jaGVja2FzbS9odWZmeXV2ZHNwLmMKK2luZGV4IDgzOTIw
MjIuLmQ1ZWJhODMgMTAwNjQ0CistLS0gYS90ZXN0cy9jaGVja2FzbS9odWZmeXV2ZHNwLmMKKysr
KyBiL3Rlc3RzL2NoZWNrYXNtL2h1ZmZ5dXZkc3AuYworQEAgLTI0LDEwICsyNCwxNCBAQAorICNp
bmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCisgI2luY2x1ZGUgImxpYmF2dXRpbC9t
ZW0uaCIKKyAKKy0jaW5jbHVkZSAibGliYXZjb2RlYy9odWZmeXV2ZHNwLmgiCistCisgI2luY2x1
ZGUgImNoZWNrYXNtLmgiCisgCisrLyogU2hvcnQgZGVmaW5lcyAoQixHLFIsQSkgaW4gImh1ZmZ5
dXZkc3AuaCIgY2F1c2UgcHJvYmxlbXMgZm9yIEVsYnJ1cyAoZTJrKQorKyAqIHN5c3RlbSBpbmNs
dWRlcywgc28gdGhpcyBoZWFkZXIgZmlsZSBtdXN0IGJlIGluY2x1ZGVkIGFmdGVyICJjaGVja2Fz
bS5oIi4KKysgKiBJbHlhIEt1cmR5dWtvdiA8anBlZ3FzQGdtYWlsLmNvbT4KKysgKi8KKysjaW5j
bHVkZSAibGliYXZjb2RlYy9odWZmeXV2ZHNwLmgiCisrCisgI2RlZmluZSByYW5kb21pemVfYnVm
ZmVycyhidWYsIHNpemUpICAgICBcCisgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICBpbnQgajsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCist
LSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS8uZ2Vhci9mZm1wZWcuc3BlYyBiLy5nZWFyL2ZmbXBl
Zy5zcGVjCmluZGV4IGE4MjU0ZmI2ZWIuLmQyMTRlMTJkYzYgMTAwNjQ0Ci0tLSBhLy5nZWFyL2Zm
bXBlZy5zcGVjCisrKyBiLy5nZWFyL2ZmbXBlZy5zcGVjCkBAIC0zNiw3ICszNiwxMSBAQAogJWRl
Zl9lbmFibGUgbGliY2RpbwogJWRlZl9lbmFibGUgbGliY29kZWMyCiAlZGVmX2VuYWJsZSBsaWJk
YXYxZAorJWlmYXJjaCAlZTJrCislZGVmX2Rpc2FibGUgbGliZGMxMzk0CislZWxzZQogJWRlZl9l
bmFibGUgbGliZGMxMzk0CislZW5kaWYKICVkZWZfZW5hYmxlIGxpYmRybQogJWRlZl9kaXNhYmxl
IGxpYmZsaXRlCiAlZGVmX2VuYWJsZSBsaWJmb250Y29uZmlnCkBAIC0xMjcsNyArMTMxLDcgQEAK
IAogIyBudmlkaWEgY3VkYSBkb2Vzbid0IHN1cHBvcnQgYXJtCiAjIGh0dHBzOi8vZGV2ZWxvcGVy
Lm52aWRpYS5jb20vbnZpZGlhLXZpZGVvLWNvZGVjLXNkay9kb3dubG9hZAotJWlmYXJjaCAlYXJt
CislaWZhcmNoICVhcm0gJWUyawogJWRlZl9kaXNhYmxlIGN1dmlkCiAlZWxzZQogJWRlZl9lbmFi
bGUgY3V2aWQKQEAgLTE0Niw3ICsxNTAsNyBAQAogTmFtZToJCWZmbXBlZwogRXBvY2g6CQkyCiBW
ZXJzaW9uOgk0LjMuMgotUmVsZWFzZToJYWx0MQorUmVsZWFzZToJYWx0MgogCiBTdW1tYXJ5OglB
IGNvbW1hbmQgbGluZSB0b29sYm94IHRvIG1hbmlwdWxhdGUsIGNvbnZlcnQgYW5kIHN0cmVhbSBt
dWx0aW1lZGlhIGNvbnRlbnQKIExpY2Vuc2U6CUdQTHYzCkBAIC0xNTcsNiArMTYxLDcgQEAgVXJs
OgkJaHR0cDovL2ZmbXBlZy5vcmcKICMgaHR0cHM6Ly9naXQuZmZtcGVnLm9yZy9mZm1wZWcuZ2l0
CiBTb3VyY2U6CQklbmFtZS0ldmVyc2lvbi50YXIKIFBhdGNoOgkJJW5hbWUtJXZlcnNpb24tJXJl
bGVhc2UucGF0Y2gKK1BhdGNoMjAwMDogJW5hbWUtZTJrLXNpbWQucGF0Y2gKIEJ1aWxkUmVxdWly
ZXM6CWxpYlgxMS1kZXZlbCBsaWJYZXh0LWRldmVsIGxpYlh2TUMtZGV2ZWwgbGliWGZpeGVzLWRl
dmVsCiBCdWlsZFJlcXVpcmVzOglsaWJhbHNhLWRldmVsCiAlaWZhcmNoICVpeDg2IHg4Nl82NApA
QCAtNTU4LDYgKzU2Myw5IEBAIFRoaXMgcGFja2FnZSBjb250YWlucyBzdGF0aWMgZGV2ZWxvcG1l
bnQgZmlsZXMgZm9yIGxpYnN3c2NhbGUuCiAlcHJlcAogJXNldHVwCiAlcGF0Y2ggLXAxCislaWZh
cmNoICVlMmsKKyVwYXRjaDIwMDAgLXAxCislZW5kaWYKIAogJWJ1aWxkCiB4eiBDaGFuZ2Vsb2cK
QEAgLTg2Myw2ICs4NzEsMTAgQEAgeHogQ2hhbmdlbG9nCiAlZW5kaWYKIAogJWNoYW5nZWxvZwor
KiBUdWUgQXByIDEzIDIwMjEgSWx5YSBLdXJkeXVrb3YgPGlseWFrdXJkeXVrb3ZAYWx0bGludXgu
b3JnPiAyOjQuMy4yLWFsdDIKKy0gYWRkZWQgU0lNRCBwYXRjaCBmb3IgRWxicnVzCistIGRpc2Fi
bGUgY3V2aWQgYW5kIGxpYmRjMTM5NCBvbiBFbGJydXMKKwogKiBTdW4gTWFyIDI4IDIwMjEgQW50
b24gRmFyeWdpbiA8cmlkZXJAYWx0bGludXgub3JnPiAyOjQuMy4yLWFsdDEKIC0gNC4zLjIKIApk
aWZmIC0tZ2l0IGEvLmdlYXIvcnVsZXMgYi8uZ2Vhci9ydWxlcwppbmRleCA0MzE5OTkxNzI1Li45
ZmFmOTZjZjA5IDEwMDY0NAotLS0gYS8uZ2Vhci9ydWxlcworKysgYi8uZ2Vhci9ydWxlcwpAQCAt
MSwzICsxLDQgQEAKIHRhcjogbkB2ZXJzaW9uQDouCiBkaWZmOiBuQHZlcnNpb25AOi4gLgorY29w
eT86IC5nZWFyLyoucGF0Y2gKIHNwZWM6IC5nZWFyL2ZmbXBlZy5zcGVjCi0tIAoyLjI1LjQKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>