This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

target/9612: Compiler fails using "-O2 -march=pentium4", succeeds with "-O2 -march=i686" or "-march=pentium4"


>Number:         9612
>Category:       target
>Synopsis:       Compiler fails using "-O2 -march=pentium4", succeeds with "-O2 -march=i686" or "-march=pentium4"
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          rejects-legal
>Submitter-Id:   net
>Arrival-Date:   Fri Feb 07 14:26:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Graeme Ambler, University of Bristol
>Release:        3.2.2
>Organization:
>Environment:
RedHat Linux 7.3 with all updates.  GCC configured with options
>Description:
$ gcc -c -O2 -march=pentium4 compute.c
compute.c: In function `generate_sector':
compute.c:175: unable to find a register to spill in class `FLOAT_REGS'
compute.c:175: this is the insn:
(insn 151 294 155 (set (reg:DF 9 st(1) [104])
        (float_extend:DF (subreg:SF (reg/v:DI 21 rxmm0 [79]) 0))) 133 {*extendsfdf2_1} (nil)
    (nil))
compute.c:175: confused by earlier errors, bailing out
$ 
>How-To-Repeat:
gcc -c -O2 -march=pentium4 compute.c
>Fix:
gcc -c -O2 -march=i686 compute.c
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="compute.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="compute.c"

IyAxICJjb21wdXRlLmMiCiMgMSAiPGJ1aWx0LWluPiIKIyAxICI8Y29tbWFuZCBsaW5lPiIKIyAx
ICJjb21wdXRlLmMiCiMgMTkgImNvbXB1dGUuYyIKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAx
IDMKIyAyNyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJl
cy5oIiAxIDMKIyAyOTEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL3N5cy9jZGVmcy5oIiAxIDMKIyAyOTIgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMK
IyAzMjAgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2dudS9z
dHVicy5oIiAxIDMKIyAzMjEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAyOCAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3Zh
bC5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvbWF0aGRlZi5oIiAxIDMKIyA0MSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAz
CiMgNjMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRo
Y2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVy
biBkb3VibGUgYWNvcyAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYWNvcyAoZG91Ymxl
IF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBhc2luIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUg
X19hc2luIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIDsg
ZXh0ZXJuIGRvdWJsZSBfX2F0YW4gKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgYXRhbjIg
KGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4yIChkb3VibGUg
X195LCBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBjb3MgKGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGRvdWJsZSBfX2NvcyAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBzaW4gKGRvdWJs
ZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3NpbiAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJs
ZSB0YW4gKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3RhbiAoZG91YmxlIF9feCkgOwoj
IDc4ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIGNvc2gg
KGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2Nvc2ggKGRvdWJsZSBfX3gpIDsKCmV4dGVy
biBkb3VibGUgc2luaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fc2luaCAoZG91Ymxl
IF9feCkgOwoKZXh0ZXJuIGRvdWJsZSB0YW5oIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUg
X190YW5oIChkb3VibGUgX194KSA7CgoKCmV4dGVybiBkb3VibGUgYWNvc2ggKGRvdWJsZSBfX3gp
IDsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3NoIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGFz
aW5oIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hc2luaCAoZG91YmxlIF9feCkgOwoK
ZXh0ZXJuIGRvdWJsZSBhdGFuaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXRhbmgg
KGRvdWJsZSBfX3gpIDsKCgoKCgpleHRlcm4gZG91YmxlIGV4cCAoZG91YmxlIF9feCkgOyBleHRl
cm4gZG91YmxlIF9fZXhwIChkb3VibGUgX194KSA7CiMgMTA2ICIvdXNyL2luY2x1ZGUvYml0cy9t
YXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIGZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhw
b25lbnQpIDsgZXh0ZXJuIGRvdWJsZSBfX2ZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25l
bnQpIDsKCgpleHRlcm4gZG91YmxlIGxkZXhwIChkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkg
OyBleHRlcm4gZG91YmxlIF9fbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSA7CgoK
ZXh0ZXJuIGRvdWJsZSBsb2cgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xvZyAoZG91
YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgbG9nMTAgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRv
dWJsZSBfX2xvZzEwIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBtb2RmIChkb3VibGUg
X194LCBkb3VibGUgKl9faXB0cikgOyBleHRlcm4gZG91YmxlIF9fbW9kZiAoZG91YmxlIF9feCwg
ZG91YmxlICpfX2lwdHIpIDsKCgoKZXh0ZXJuIGRvdWJsZSBleHBtMSAoZG91YmxlIF9feCkgOyBl
eHRlcm4gZG91YmxlIF9fZXhwbTEgKGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91YmxlIGxvZzFw
IChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19sb2cxcCAoZG91YmxlIF9feCkgOwoKCmV4
dGVybiBkb3VibGUgbG9nYiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nYiAoZG91
YmxlIF9feCkgOwojIDE0MyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJu
IGRvdWJsZSBwb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX3Bv
dyAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCmV4dGVybiBkb3VibGUgc3FydCAoZG91Ymxl
IF9feCkgOyBleHRlcm4gZG91YmxlIF9fc3FydCAoZG91YmxlIF9feCkgOwoKCgpleHRlcm4gZG91
YmxlIGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19oeXBv
dCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgoKZXh0ZXJuIGRvdWJsZSBjYnJ0IChkb3Vi
bGUgX194KSA7IGV4dGVybiBkb3VibGUgX19jYnJ0IChkb3VibGUgX194KSA7CgoKCgoKCmV4dGVy
biBkb3VibGUgY2VpbCAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBl
eHRlcm4gZG91YmxlIF9fY2VpbCAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCmV4dGVybiBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZmFicyAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZmxvb3IgKGRvdWJsZSBfX3gpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUgX194
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBmbW9kIChkb3Vi
bGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19mbW9kIChkb3VibGUgX194LCBk
b3VibGUgX195KSA7CgoKCgpleHRlcm4gaW50IF9faXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZSAoZG91YmxlIF9f
dmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmYg
KGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGlu
dCBmaW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
ZXh0ZXJuIGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3Vi
bGUgX19kcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoKCmV4dGVybiBkb3VibGUgc2ln
bmlmaWNhbmQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3NpZ25pZmljYW5kIChkb3Vi
bGUgX194KSA7CgoKCgpleHRlcm4gZG91YmxlIGNvcHlzaWduIChkb3VibGUgX194LCBkb3VibGUg
X195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19jb3B5c2ln
biAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoj
IDIwOSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGludCBfX2lzbmFu
IChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4g
aW50IGlzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CmV4dGVybiBkb3VibGUgajAgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fajAgKGRvdWJsZSkg
OwpleHRlcm4gZG91YmxlIGoxIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2oxIChkb3VibGUp
IDsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2puIChp
bnQsIGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBf
X3kwIChkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSB5MSAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUg
X195MSAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgeW4gKGludCwgZG91YmxlKSA7IGV4dGVybiBk
b3VibGUgX195biAoaW50LCBkb3VibGUpIDsKCgoKCgpleHRlcm4gZG91YmxlIGVyZiAoZG91Ymxl
KSA7IGV4dGVybiBkb3VibGUgX19lcmYgKGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIGVyZmMgKGRv
dWJsZSkgOyBleHRlcm4gZG91YmxlIF9fZXJmYyAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgbGdh
bW1hIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2xnYW1tYSAoZG91YmxlKSA7CiMgMjM4ICIv
dXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIGdhbW1hIChkb3Vi
bGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2dhbW1hIChkb3VibGUpIDsKCgoKCgoKZXh0ZXJuIGRvdWJs
ZSBsZ2FtbWFfciAoZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIDsgZXh0ZXJuIGRvdWJsZSBfX2xn
YW1tYV9yIChkb3VibGUsIGludCAqX19zaWduZ2FtcCkgOwoKCgoKCgpleHRlcm4gZG91YmxlIHJp
bnQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3JpbnQgKGRvdWJsZSBfX3gpIDsKCgpl
eHRlcm4gZG91YmxlIG5leHRhZnRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmV4dGFmdGVyIChkb3VibGUgX194
LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGRv
dWJsZSByZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBf
X3JlbWFpbmRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgpleHRlcm4gZG91YmxlIHNj
YWxiIChkb3VibGUgX194LCBkb3VibGUgX19uKSA7IGV4dGVybiBkb3VibGUgX19zY2FsYiAoZG91
YmxlIF9feCwgZG91YmxlIF9fbikgOwoKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYm4gKGRvdWJsZSBf
X3gsIGludCBfX24pIDsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibiAoZG91YmxlIF9feCwgaW50IF9f
bikgOwoKCgpleHRlcm4gaW50IGlsb2diIChkb3VibGUgX194KSA7IGV4dGVybiBpbnQgX19pbG9n
YiAoZG91YmxlIF9feCkgOwojIDY0ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA4MiAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAx
IDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGFj
b3NmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYWNvc2YgKGZsb2F0IF9feCkgOwoKZXh0
ZXJuIGZsb2F0IGFzaW5mIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKGZsb2F0
IF9feCkgOwoKZXh0ZXJuIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9f
YXRhbmYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IGF0YW4yZiAoZmxvYXQgX195LCBmbG9h
dCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgOwoK
CmV4dGVybiBmbG9hdCBjb3NmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoZmxv
YXQgX194KSA7CgpleHRlcm4gZmxvYXQgc2luZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBf
X3NpbmYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IHRhbmYgKGZsb2F0IF9feCkgOyBleHRl
cm4gZmxvYXQgX190YW5mIChmbG9hdCBfX3gpIDsKIyA3OCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0
aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGNvc2hmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0
IF9fY29zaGYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IHNpbmhmIChmbG9hdCBfX3gpIDsg
ZXh0ZXJuIGZsb2F0IF9fc2luaGYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IHRhbmhmIChm
bG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fdGFuaGYgKGZsb2F0IF9feCkgOwoKCgpleHRlcm4g
ZmxvYXQgYWNvc2hmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYWNvc2hmIChmbG9hdCBf
X3gpIDsKCmV4dGVybiBmbG9hdCBhc2luaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19h
c2luaGYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSA7IGV4
dGVybiBmbG9hdCBfX2F0YW5oZiAoZmxvYXQgX194KSA7CgoKCgoKZXh0ZXJuIGZsb2F0IGV4cGYg
KGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19leHBmIChmbG9hdCBfX3gpIDsKIyAxMDYgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBmcmV4cGYgKGZsb2F0
IF9feCwgaW50ICpfX2V4cG9uZW50KSA7IGV4dGVybiBmbG9hdCBfX2ZyZXhwZiAoZmxvYXQgX194
LCBpbnQgKl9fZXhwb25lbnQpIDsKCgpleHRlcm4gZmxvYXQgbGRleHBmIChmbG9hdCBfX3gsIGlu
dCBfX2V4cG9uZW50KSA7IGV4dGVybiBmbG9hdCBfX2xkZXhwZiAoZmxvYXQgX194LCBpbnQgX19l
eHBvbmVudCkgOwoKCmV4dGVybiBmbG9hdCBsb2dmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0
IF9fbG9nZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGxvZzEwZiAoZmxvYXQgX194KSA7
IGV4dGVybiBmbG9hdCBfX2xvZzEwZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IG1vZGZm
IChmbG9hdCBfX3gsIGZsb2F0ICpfX2lwdHIpIDsgZXh0ZXJuIGZsb2F0IF9fbW9kZmYgKGZsb2F0
IF9feCwgZmxvYXQgKl9faXB0cikgOwoKCgpleHRlcm4gZmxvYXQgZXhwbTFmIChmbG9hdCBfX3gp
IDsgZXh0ZXJuIGZsb2F0IF9fZXhwbTFmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQgbG9n
MXBmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9nMXBmIChmbG9hdCBfX3gpIDsKCgpl
eHRlcm4gZmxvYXQgbG9nYmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19sb2diZiAoZmxv
YXQgX194KSA7CiMgMTQzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4g
ZmxvYXQgcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fcG93ZiAo
ZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgpleHRlcm4gZmxvYXQgc3FydGYgKGZsb2F0IF9feCkg
OyBleHRlcm4gZmxvYXQgX19zcXJ0ZiAoZmxvYXQgX194KSA7CgoKCmV4dGVybiBmbG9hdCBoeXBv
dGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBfX2h5cG90ZiAoZmxvYXQg
X194LCBmbG9hdCBfX3kpIDsKCgoKCmV4dGVybiBmbG9hdCBjYnJ0ZiAoZmxvYXQgX194KSA7IGV4
dGVybiBmbG9hdCBfX2NicnRmIChmbG9hdCBfX3gpIDsKCgoKCgoKZXh0ZXJuIGZsb2F0IGNlaWxm
IChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9f
Y2VpbGYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBm
bG9hdCBmYWJzZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVy
biBmbG9hdCBfX2ZhYnNmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgpleHRlcm4gZmxvYXQgZmxvb3JmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsgZXh0ZXJuIGZsb2F0IF9fZmxvb3JmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7
IGV4dGVybiBmbG9hdCBfX2Ztb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOwoKCgoKZXh0ZXJu
IGludCBfX2lzaW5mZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCmV4dGVybiBpbnQgX19maW5pdGVmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGlzaW5mZiAoZmxvYXQgX192YWx1ZSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgZmluaXRlZiAoZmxvYXQgX192YWx1
ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBkcmVtZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fZHJlbWYgKGZsb2F0IF9feCwgZmxv
YXQgX195KSA7CgoKCmV4dGVybiBmbG9hdCBzaWduaWZpY2FuZGYgKGZsb2F0IF9feCkgOyBleHRl
cm4gZmxvYXQgX19zaWduaWZpY2FuZGYgKGZsb2F0IF9feCkgOwoKCgoKZXh0ZXJuIGZsb2F0IGNv
cHlzaWduZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsgZXh0ZXJuIGZsb2F0IF9fY29weXNpZ25mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDIwOSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxz
LmgiIDMKZXh0ZXJuIGludCBfX2lzbmFuZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFuZiAoZmxvYXQgX192YWx1ZSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBqMGYgKGZsb2F0KSA7IGV4dGVy
biBmbG9hdCBfX2owZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IGoxZiAoZmxvYXQpIDsgZXh0ZXJu
IGZsb2F0IF9fajFmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgam5mIChpbnQsIGZsb2F0KSA7IGV4
dGVybiBmbG9hdCBfX2puZiAoaW50LCBmbG9hdCkgOwpleHRlcm4gZmxvYXQgeTBmIChmbG9hdCkg
OyBleHRlcm4gZmxvYXQgX195MGYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCB5MWYgKGZsb2F0KSA7
IGV4dGVybiBmbG9hdCBfX3kxZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IHluZiAoaW50LCBmbG9h
dCkgOyBleHRlcm4gZmxvYXQgX195bmYgKGludCwgZmxvYXQpIDsKCgoKCgpleHRlcm4gZmxvYXQg
ZXJmZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fZXJmZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0
IGVyZmNmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19lcmZjZiAoZmxvYXQpIDsKZXh0ZXJuIGZs
b2F0IGxnYW1tYWYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWYgKGZsb2F0KSA7CiMg
MjM4ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZmxvYXQgZ2FtbWFm
IChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19nYW1tYWYgKGZsb2F0KSA7CgoKCgoKCmV4dGVybiBm
bG9hdCBsZ2FtbWFmX3IgKGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApIDsgZXh0ZXJuIGZsb2F0IF9f
bGdhbW1hZl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKSA7CgoKCgoKCmV4dGVybiBmbG9hdCBy
aW50ZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3JpbnRmIChmbG9hdCBfX3gpIDsKCgpl
eHRlcm4gZmxvYXQgbmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fbmV4dGFmdGVyZiAoZmxvYXQgX194LCBm
bG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gZmxvYXQg
cmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fcmVtYWlu
ZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgoKZXh0ZXJuIGZsb2F0IHNjYWxiZiAoZmxv
YXQgX194LCBmbG9hdCBfX24pIDsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJmIChmbG9hdCBfX3gsIGZs
b2F0IF9fbikgOwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibmYgKGZsb2F0IF9feCwgaW50IF9fbikg
OyBleHRlcm4gZmxvYXQgX19zY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pIDsKCgoKZXh0ZXJu
IGludCBpbG9nYmYgKGZsb2F0IF9feCkgOyBleHRlcm4gaW50IF9faWxvZ2JmIChmbG9hdCBfX3gp
IDsKIyA4MyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgOTkgIi91c3IvaW5jbHVkZS9tYXRo
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3Iv
aW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBhY29zbCAobG9u
ZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NsIChsb25nIGRvdWJsZSBf
X3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2FzaW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRv
dWJsZSBhdGFubCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5s
IChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuMmwgKGxvbmcgZG91
YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW4ybCAo
bG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUg
Y29zbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nvc2wgKGxvbmcg
ZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpbmwgKGxvbmcgZG91YmxlIF9feCkg
OyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBs
b25nIGRvdWJsZSB0YW5sIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
dGFubCAobG9uZyBkb3VibGUgX194KSA7CiMgNzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxs
cy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBjb3NobCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2Nvc2hsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRv
dWJsZSBzaW5obCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Npbmhs
IChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5obCAobG9uZyBkb3Vi
bGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmhsIChsb25nIGRvdWJsZSBfX3gpIDsK
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NobCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2Fjb3NobCAobG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3Vi
bGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmhs
IChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcgZG91
YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFuaGwgKGxvbmcgZG91YmxlIF9feCkg
OwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHBsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fZXhwbCAobG9uZyBkb3VibGUgX194KSA7CiMgMTA2ICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBkb3VibGUgZnJleHBsIChsb25nIGRv
dWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19mcmV4cGwg
KGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSA7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IGxkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgOyBleHRlcm4gbG9uZyBk
b3VibGUgX19sZGV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIDsKCgpleHRl
cm4gbG9uZyBkb3VibGUgbG9nbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2xvZ2wgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cxMGwg
KGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cxMGwgKGxvbmcgZG91
YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBtb2RmbCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSAqX19pcHRyKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX21vZGZsIChsb25nIGRv
dWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4
cG0xbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cG0xbCAobG9u
ZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzFwbCAobG9uZyBkb3VibGUg
X194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzFwbCAobG9uZyBkb3VibGUgX194KSA7CgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgOwojIDE0MyAiL3Vzci9pbmNsdWRlL2Jp
dHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxvbmcgZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Bvd2wgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNxcnRsIChs
b25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91Ymxl
IF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgaHlwb3RsIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19oeXBvdGwgKGxvbmcgZG91Ymxl
IF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY2JydGwgKGxv
bmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19jYnJ0bCAobG9uZyBkb3VibGUg
X194KSA7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NlaWxsIChs
b25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9u
ZyBkb3VibGUgZmFic2wgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mYWJzbCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZsb29ybCAobG9uZyBk
b3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2Zsb29ybCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl
IF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbW9kbCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIDsKCgoKCmV4dGVybiBpbnQgX19pc2luZmwgKGxvbmcgZG91YmxlIF9fdmFs
dWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlbCAo
bG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0
ZXJuIGludCBpc2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZHJlbWwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2RyZW1s
IChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgc2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
c2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBj
b3B5c2lnbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NvcHlzaWdubCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyAy
MDkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBpbnQgX19pc25hbmwg
KGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0
ZXJuIGludCBpc25hbmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgajBsIChsb25nIGRvdWJsZSkgOyBleHRlcm4g
bG9uZyBkb3VibGUgX19qMGwgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSBqMWwg
KGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2oxbCAobG9uZyBkb3VibGUpIDsK
ZXh0ZXJuIGxvbmcgZG91YmxlIGpubCAoaW50LCBsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBk
b3VibGUgX19qbmwgKGludCwgbG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIHkwbCAo
bG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTBsIChsb25nIGRvdWJsZSkgOwpl
eHRlcm4gbG9uZyBkb3VibGUgeTFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUg
X195MWwgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSB5bmwgKGludCwgbG9uZyBk
b3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feW5sIChpbnQsIGxvbmcgZG91YmxlKSA7CgoK
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2VyZmwgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSBlcmZjbCAobG9u
ZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXJmY2wgKGxvbmcgZG91YmxlKSA7CmV4
dGVybiBsb25nIGRvdWJsZSBsZ2FtbWFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19sZ2FtbWFsIChsb25nIGRvdWJsZSkgOwojIDIzOCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0
aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91YmxlIGdhbW1hbCAobG9uZyBkb3VibGUpIDsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fZ2FtbWFsIChsb25nIGRvdWJsZSkgOwoKCgoKCgpleHRlcm4gbG9u
ZyBkb3VibGUgbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2xnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAqX19zaWduZ2FtcCkg
OwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmludGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRl
cm4gbG9uZyBkb3VibGUgX19yaW50bCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIG5leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHRhZnRlcmwg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJlbWFpbmRlcmwgKGxvbmcgZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JlbWFpbmRlcmwgKGxv
bmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBz
Y2FsYmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX19uKSA7IGV4dGVybiBsb25nIGRv
dWJsZSBfX3NjYWxibCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX24pIDsKCgoKCmV4
dGVybiBsb25nIGRvdWJsZSBzY2FsYm5sIChsb25nIGRvdWJsZSBfX3gsIGludCBfX24pIDsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJubCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSA7CgoK
CmV4dGVybiBpbnQgaWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGludCBfX2lsb2di
bCAobG9uZyBkb3VibGUgX194KSA7CiMgMTAwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyAx
MTMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKZXh0ZXJuIGludCBzaWduZ2FtOwojIDI0MCAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMwp0eXBlZGVmIGVudW0KewogIF9JRUVFXyA9IC0xLAogIF9TVklE
XywKICBfWE9QRU5fLAogIF9QT1NJWF8sCiAgX0lTT0NfCn0gX0xJQl9WRVJTSU9OX1RZUEU7CgoK
CgpleHRlcm4gX0xJQl9WRVJTSU9OX1RZUEUgX0xJQl9WRVJTSU9OOwojIDM1MCAiL3Vzci9pbmNs
dWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMSAzCiMg
MzUxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA0MTEgIi91c3IvaW5jbHVkZS9tYXRoLmgi
IDMKCiMgMjAgImNvbXB1dGUuYyIgMgojIDEgInJlbmRlcmVyLmgiIDEKIyAyMiAicmVuZGVyZXIu
aCIKdm9pZCBpbml0X3JlbmRlcmVyMSgpOwp2b2lkIGluaXRfcmVuZGVyZXIyKCk7CnZvaWQgcmVu
ZGVyZXIoKTsKdm9pZCBjbG9zZV9yZW5kZXJlcigpOwoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGJ5
dGU7Cgp0eXBlZGVmIHN0cnVjdCB0X2Nvb3JkIHsKICAgICAgICBpbnQgeCx5Owp9IHRfY29vcmQ7
Cgp0eXBlZGVmIHN0cnVjdCB0X2NvbXBsZXggewogICAgICAgIGZsb2F0IHgseTsKfSB0X2NvbXBs
ZXg7Cgp0eXBlZGVmIHN0cnVjdCB0X2ludGVycG9sIHsKICAgICAgICB1bnNpZ25lZCBpbnQgY29v
cmQgOwogICAgICAgIHVuc2lnbmVkIGludCB3ZWlnaHQ7Cn0gdF9pbnRlcnBvbDsKCnR5cGVkZWYg
c3RydWN0IHRfZWZmZWN0IHsKICAgICAgICBpbnQgbnVtX2VmZmVjdDsKICAgICAgICBpbnQgeF9j
dXJ2ZTsKICAgICAgICBpbnQgY3VydmVfY29sb3I7CiAgICAgICAgaW50IGN1cnZlX2FtcGxpdHVk
ZTsKICAgICAgICBpbnQgc3BlY3RyYWxfYW1wbGl0dWRlOwogICAgICAgIGludCBzcGVjdHJhbF9j
b2xvcjsKICAgICAgICBpbnQgbW9kZV9zcGVjdHJlOwogICAgICAgIGludCBzcGVjdHJhbF9zaGlm
dDsKfSB0X2VmZmVjdDsKCnR5cGVkZWYgc3RydWN0IHRfc2NyZWVuX3BhcmFtZXRyZXMgewogICAg
ICAgIGludCB3aWR0aDsKICAgICAgICBpbnQgaGVpZ2h0OwogICAgICAgIGludCBzY2FsZTsKICAg
ICAgICBpbnQgYnBwOwp9IHRfc2NyZWVuX3BhcmFtZXRyZXM7Cgp0eXBlZGVmIHN0cnVjdCB0X2dl
bmVyYWxfcGFyYW1ldHJlcyB7CiAgICBpbnQgdF9iZXR3ZWVuX2VmZmVjdHM7CiAgICBpbnQgdF9i
ZXR3ZWVuX2NvbG9yczsKfSB0X2dlbmVyYWxfcGFyYW1ldHJlczsKCmV4dGVybiB0X3NjcmVlbl9w
YXJhbWV0cmVzIHNjcl9wYXI7CiMgMjEgImNvbXB1dGUuYyIgMgojIDEgImNvbXB1dGUuaCIgMQoj
IDIxICJjb21wdXRlLmgiCnZvaWQgZ2VuZXJhdGVfdmVjdG9yX2ZpZWxkKHRfaW50ZXJwb2wqIHZl
Y3Rvcl9maWVsZCk7CiMgMjIgImNvbXB1dGUuYyIgMgoKCgp0X2NvbXBsZXggZmN0KHRfY29tcGxl
eCBhLGludCBuLGludCBwMSxpbnQgcDIpCnsKICAgICAgICB0X2NvbXBsZXggYjsKICAgICAgICBm
bG9hdCBmYWN0OwogICAgICAgIGZsb2F0IGFuOwogICAgICAgIGZsb2F0IGNpcmNsZV9zaXplOwog
ICAgICAgIGZsb2F0IHNwZWVkOwogICAgICAgIGZsb2F0IGNvLHNpOwoKICAgICAgICBhLngtPXNj
cl9wYXIud2lkdGgvMjsKICAgICAgICBhLnktPXNjcl9wYXIuaGVpZ2h0LzI7CgogICAgICAgIHN3
aXRjaCAobikgewoKICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBhbj0wLjAyNSoocDEt
MikrMC4wMDI7CiAgICAgICAgICAgICAgICBjbz1jb3MoYW4pOwogICAgICAgICAgICAgICAgc2k9
c2luKGFuKTsKICAgICAgICAgICAgICAgIGNpcmNsZV9zaXplPXNjcl9wYXIuaGVpZ2h0KjAuMjU7
CiAgICAgICAgICAgICAgICBzcGVlZD0yMDAwK3AyKjUwMDsKICAgICAgICAgICAgICAgIGIueD0o
Y28qYS54LXNpKmEueSk7CiAgICAgICAgICAgICAgICBiLnk9KHNpKmEueCtjbyphLnkpOwogICAg
ICAgICAgICAgICAgZmFjdD0tKHNxcnQoYi54KmIueCtiLnkqYi55KS1jaXJjbGVfc2l6ZSkvc3Bl
ZWQrMTsKICAgICAgICAgICAgICAgIGIueD0oYi54KmZhY3QpOwogICAgICAgICAgICAgICAgYi55
PShiLnkqZmFjdCk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAxOgogICAg
ICAgICAgICAgICAgYW49MC4wMTUqKHAxLTIpKzAuMDAyOwogICAgICAgICAgICAgICAgY289Y29z
KGFuKTsKICAgICAgICAgICAgICAgIHNpPXNpbihhbik7CiAgICAgICAgICAgICAgICBjaXJjbGVf
c2l6ZT1zY3JfcGFyLmhlaWdodCowLjQ1OwogICAgICAgICAgICAgICAgc3BlZWQ9NDAwMCtwMiox
MDAwOwogICAgICAgICAgICAgICAgYi54PShjbyphLngtc2kqYS55KTsKICAgICAgICAgICAgICAg
IGIueT0oc2kqYS54K2NvKmEueSk7CiAgICAgICAgICAgICAgICBmYWN0PShzcXJ0KGIueCpiLngr
Yi55KmIueSktY2lyY2xlX3NpemUpL3NwZWVkKzE7CiAgICAgICAgICAgICAgICBiLng9KGIueCpm
YWN0KTsKICAgICAgICAgICAgICAgIGIueT0oYi55KmZhY3QpOwogICAgICAgICAgICAgICAgYnJl
YWs7CgogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIGFuPTAuMDAyOwogICAgICAgICAg
ICAgICAgY289Y29zKGFuKTsKICAgICAgICAgICAgICAgIHNpPXNpbihhbik7CiAgICAgICAgICAg
ICAgICBjaXJjbGVfc2l6ZT1zY3JfcGFyLmhlaWdodCowLjI1OwogICAgICAgICAgICAgICAgc3Bl
ZWQ9NDAwK3AyKjEwMDsKICAgICAgICAgICAgICAgIGIueD0oY28qYS54LXNpKmEueSk7CiAgICAg
ICAgICAgICAgICBiLnk9KHNpKmEueCtjbyphLnkpOwogICAgICAgICAgICAgICAgZmFjdD0tKHNx
cnQoYi54KmIueCtiLnkqYi55KS1jaXJjbGVfc2l6ZSkvc3BlZWQrMTsKICAgICAgICAgICAgICAg
IGIueD0oYi54KmZhY3QpOwogICAgICAgICAgICAgICAgYi55PShiLnkqZmFjdCk7CiAgICAgICAg
ICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgYW49KHNpbihz
cXJ0KGEueCphLngrYS55KmEueSkvMjApLzIwKSswLjAwMjsKICAgICAgICAgICAgICAgIGNvPWNv
cyhhbik7CiAgICAgICAgICAgICAgICBzaT1zaW4oYW4pOwogICAgICAgICAgICAgICAgY2lyY2xl
X3NpemU9c2NyX3Bhci5oZWlnaHQqMC4yNTsKICAgICAgICAgICAgICAgIHNwZWVkPTQwMDA7CiAg
ICAgICAgICAgICAgICBiLng9KGNvKmEueC1zaSphLnkpOwogICAgICAgICAgICAgICAgYi55PShz
aSphLngrY28qYS55KTsKICAgICAgICAgICAgICAgIGZhY3Q9LShzcXJ0KGIueCpiLngrYi55KmIu
eSktY2lyY2xlX3NpemUpL3NwZWVkKzE7CiAgICAgICAgICAgICAgICBiLng9KGIueCpmYWN0KTsK
ICAgICAgICAgICAgICAgIGIueT0oYi55KmZhY3QpOwogICAgICAgICAgICAgICAgYnJlYWs7Cgog
ICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgIGFuPTAuMDAyOwogICAgICAgICAgICAgICAg
Y289Y29zKGFuKTsKICAgICAgICAgICAgICAgIHNpPXNpbihhbik7CiAgICAgICAgICAgICAgICBj
aXJjbGVfc2l6ZT1zY3JfcGFyLmhlaWdodCowLjI1OwogICAgICAgICAgICAgICAgc3BlZWQ9c2lu
KHNxcnQoYS54KmEueCthLnkqYS55KS81KSozMDAwKzQwMDA7CiAgICAgICAgICAgICAgICBiLng9
KGNvKmEueC1zaSphLnkpOwogICAgICAgICAgICAgICAgYi55PShzaSphLngrY28qYS55KTsKICAg
ICAgICAgICAgICAgIGZhY3Q9LShzcXJ0KGIueCpiLngrYi55KmIueSktY2lyY2xlX3NpemUpL3Nw
ZWVkKzE7CiAgICAgICAgICAgICAgICBiLng9KGIueCpmYWN0KTsKICAgICAgICAgICAgICAgIGIu
eT0oYi55KmZhY3QpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNToKICAg
ICAgICAgICAgICAgIGIueD1hLngqMS4wMjsKICAgICAgICAgICAgICAgIGIueT1hLnkqMS4wMjsK
ICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICBh
bj0wLjAwMjsKICAgICAgICAgICAgICAgIGNvPWNvcyhhbik7CiAgICAgICAgICAgICAgICBzaT1z
aW4oYW4pOwogICAgICAgICAgICAgICAgY2lyY2xlX3NpemU9c2NyX3Bhci5oZWlnaHQqMC4yNTsK
ICAgICAgICAgICAgICAgIGZhY3Q9MStjb3MoYXRhbihhLngvKGEueSswLjAwMDAxKSkqNikqMC4w
MjsKICAgICAgICAgICAgICAgIGIueD0oY28qYS54LXNpKmEueSk7CiAgICAgICAgICAgICAgICBi
Lnk9KHNpKmEueCtjbyphLnkpOwogICAgICAgICAgICAgICAgYi54PShiLngqZmFjdCk7CiAgICAg
ICAgICAgICAgICBiLnk9KGIueSpmYWN0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICB9CgogICAgICAgIGIueCs9c2NyX3Bhci53aWR0aC8yOwogICAgICAgIGIueSs9c2NyX3Bhci5o
ZWlnaHQvMjsKICAgICAgICBpZiAoYi54PDApCiAgICAgICAgICAgICAgICBiLng9MDsKICAgICAg
ICBpZiAoYi55PDApCiAgICAgICAgICAgICAgICBiLnk9MDsKICAgICAgICBpZiAoYi54PnNjcl9w
YXIud2lkdGgtMSkKICAgICAgICAgICAgICAgIGIueD1zY3JfcGFyLndpZHRoLTE7CiAgICAgICAg
aWYgKGIueT5zY3JfcGFyLmhlaWdodC0xKQogICAgICAgICAgICAgICAgYi55PXNjcl9wYXIuaGVp
Z2h0LTE7CgogICAgICAgIHJldHVybiBiOwp9CgoKdm9pZCBnZW5lcmF0ZV9zZWN0b3IoaW50IGcs
aW50IGYsaW50IHAxLGludCBwMixpbnQgZGVidXQsaW50IHN0ZXAsdF9pbnRlcnBvbCogdmVjdG9y
X2ZpZWxkKTsKCnZvaWQgZ2VuZXJhdGVfc2VjdG9yKGludCBnLGludCBmLGludCBwMSxpbnQgcDIs
aW50IGRlYnV0LGludCBzdGVwLHRfaW50ZXJwb2wqIHZlY3Rvcl9maWVsZCkKewogICAgICAgIGlu
dCBmaW49ZGVidXQrc3RlcDsKICAgICAgICBjb25zdCBpbnQgcHJvcF90cmFuc21pdHRlZD0yNDk7
CiAgICAgICAgY29uc3QgaW50IGJfYWRkPWcqc2NyX3Bhci53aWR0aCpzY3JfcGFyLmhlaWdodDsK
ICAgICAgICB0X2Nvb3JkIGM7CgoKICAgICAgICBpZiAoZmluPnNjcl9wYXIuaGVpZ2h0KQogICAg
ICAgICAgICAgICAgZmluPXNjcl9wYXIuaGVpZ2h0OwogICAgICAgIGZvciAoYy55PWRlYnV0O2Mu
eTxmaW47Yy55KyspCiAgICAgICAgICAgICAgICBmb3IgKGMueD0wO2MueDxzY3JfcGFyLndpZHRo
O2MueCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRfY29tcGxleCBhOwogICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBmcHk7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBydyxs
dyxhZGQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3MSx3Mix3Myx3NDsK
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHgseTsKCiAgICAgICAgICAgICAg
ICAgICAgICAgIGEueD0oZmxvYXQpYy54OwogICAgICAgICAgICAgICAgICAgICAgICBhLnk9KGZs
b2F0KWMueTsKICAgICAgICAgICAgICAgICAgICAgICAgYT1mY3QoYSxmLHAxLHAyKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkPWMueCtjLnkqc2NyX3Bhci53aWR0aDsKICAgICAgICAgICAg
ICAgICAgICAgICAgeD0oaW50KShhLngpOwogICAgICAgICAgICAgICAgICAgICAgICB5PShpbnQp
KGEueSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZlY3Rvcl9maWVsZFtiX2FkZCthZGRdLmNv
b3JkPSh4PDwxNil8eTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZweT1hLnktZmxvb3IoYS55
KTsKICAgICAgICAgICAgICAgICAgICAgICAgcnc9KGludCkoKGEueC1mbG9vcihhLngpKSpwcm9w
X3RyYW5zbWl0dGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgbHc9cHJvcF90cmFuc21pdHRl
ZC1ydzsKICAgICAgICAgICAgICAgICAgICAgICAgdzQ9KGludCkoZnB5KnJ3KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgdzI9cnctdzQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHczPShpbnQp
KGZweSpsdyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHcxPWx3LXczOwogICAgICAgICAgICAg
ICAgICAgICAgICB2ZWN0b3JfZmllbGRbYl9hZGQrYWRkXS53ZWlnaHQ9KHcxPDwyNCl8KHcyPDwx
Nil8KHczPDw4KXx3NDsKICAgICAgICAgICAgICAgIH0KfQoKdm9pZCBnZW5lcmF0ZV92ZWN0b3Jf
ZmllbGQodF9pbnRlcnBvbCogdmVjdG9yX2ZpZWxkKQp7CiAgICAgICAgaW50IGY7CiAgICAgICAg
aW50IGkscDEscDI7CgogICAgICAgIGZvciAoZj0wO2Y8NztmKyspIHsKICAgICAgICAgICAgICAg
IHAxPTI7CiAgICAgICAgICAgICAgICBwMj0yOwogICAgICAgICAgICAgICAgZm9yIChpPTA7aTxz
Y3JfcGFyLmhlaWdodDtpKz0xMCkKICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfc2Vj
dG9yKGYsZixwMSxwMixpLDEwLHZlY3Rvcl9maWVsZCk7CiAgICAgICAgfQp9Cg==


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]