[Mono-list] Bug fix - 41691

B Anirban banirban@novell.com
Mon, 08 Dec 2003 21:49:44 -0700


This is a MIME message. If you are reading this text, you may want to 
consider changing to a mail reader or gateway that understands how to 
properly handle MIME multipart messages.

--=__PartAEF04978.0__=
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi,
I am resending this mail since in the last mail the patches got
wrapped.
Thanks.
Anirban.

Hi,
I am posting here my fixes for bug 41691.
For this I felt a need for changing the check_type method (in
Binder.cs) for extracting  better match. Hence I created here a
overloaded version of check_type method.
Also I overloaded the SelectMethod function for handling named
arguments.
I am attaching the test cases for the same as well. 
Looking forward for your suggestion on this implementation.
Regards.
Anirban.


--=__PartAEF04978.0__=
Content-Type: application/octet-stream; name="cvs_1.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="cvs_1.diff"

DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQpSQ1MgZmlsZTogL21vbm8vbWNzL2NsYXNzL2NvcmxpYi9TeXN0ZW0uUmVm
bGVjdGlvbi9CaW5kZXIuY3Msdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjExDQpkaWZmIC11IC1y
MS4xMSBCaW5kZXIuY3MNCi0tLSBjbGFzcy9jb3JsaWIvU3lzdGVtLlJlZmxlY3Rpb24vQmluZGVy
LmNzCTExIE1heSAyMDAzIDA1OjUxOjA3IC0wMDAwCTEuMTENCisrKyBjbGFzcy9jb3JsaWIvU3lz
dGVtLlJlZmxlY3Rpb24vQmluZGVyLmNzCTI4IE5vdiAyMDAzIDIxOjAyOjE5IC0wMDAwDQpAQCAt
ODMsOCArODMsMTQgQEANCiAJCQkJCQkJdHlwZXMgW2ldID0gYXJncyBbaV0uR2V0VHlwZSAoKTsN
CiAJCQkJCX0NCiAJCQkJfQ0KLQkJCQlNZXRob2RCYXNlIHNlbGVjdGVkID0gU2VsZWN0TWV0aG9k
IChiaW5kaW5nQXR0ciwgbWF0Y2gsIHR5cGVzLCBtb2RpZmllcnMpOw0KKwkJCQkNCiAJCQkJc3Rh
dGUgPSBudWxsOw0KKwkJCQlNZXRob2RCYXNlIHNlbGVjdGVkID0gbnVsbDsNCisJCQkJaWYobmFt
ZXMgPT0gbnVsbCkNCisJCQkJCXNlbGVjdGVkID0gU2VsZWN0TWV0aG9kIChiaW5kaW5nQXR0ciwg
bWF0Y2gsIHR5cGVzLCBtb2RpZmllcnMpOw0KKwkJCQllbHNlDQorCQkJCQlzZWxlY3RlZCA9IFNl
bGVjdE1ldGhvZCAoYmluZGluZ0F0dHIsIG1hdGNoLCByZWYgYXJncywgbW9kaWZpZXJzLCBuYW1l
cyk7DQorDQogCQkJCXJldHVybiBzZWxlY3RlZDsNCiAJCQl9DQogDQoNCkBAIC0yMjEsNyArMjM0
LDIxNCBAQA0KIAkJCQkJcmV0dXJuIHRvLklzQXNzaWduYWJsZUZyb20gKGZyb20pOw0KIAkJCQl9
DQogCQkJfQ0KKwkJCQ0KIA0KKwkJCXByaXZhdGUgc3RhdGljIGJvb2wgY2hlY2tfdHlwZSAoVHlw
ZSBmcm9tLCBUeXBlIHRvLCBvdXQgaW50IG1hdGNoVmFsKSB7DQorCQkJCWlmIChmcm9tID09IHRv
KXsNCisJCQkJCW1hdGNoVmFsID0gMTsNCisJCQkJCXJldHVybiB0cnVlOw0KKwkJCQl9DQorCQkJ
CVR5cGVDb2RlIGZyb210ID0gVHlwZS5HZXRUeXBlQ29kZSAoZnJvbSk7DQorCQkJCVR5cGVDb2Rl
IHRvdCA9IFR5cGUuR2V0VHlwZUNvZGUgKHRvKTsNCisJCQkJbWF0Y2hWYWwgPSAtMTsNCisNCisJ
CQkJc3dpdGNoIChmcm9tdCkgew0KKwkJCQljYXNlIFR5cGVDb2RlLkNoYXI6DQorCQkJCQlzd2l0
Y2ggKHRvdCkgew0KKwkJCQkJY2FzZSBUeXBlQ29kZS5VSW50MTY6DQorCQkJCQkJbWF0Y2hWYWwg
PSAyOw0KKwkJCQkJCXJldHVybiB0cnVlOw0KKwkJCQkJY2FzZSBUeXBlQ29kZS5VSW50MzI6DQor
CQkJCQkJbWF0Y2hWYWwgPSAzOw0KKwkJCQkJCXJldHVybiB0cnVlOw0KKwkJCQkJY2FzZSBUeXBl
Q29kZS5JbnQzMjoNCisJCQkJCQltYXRjaFZhbCA9IDQ7DQorCQkJCQkJcmV0dXJuIHRydWU7DQor
CQkJCQljYXNlIFR5cGVDb2RlLlVJbnQ2NDoNCisJCQkJCQltYXRjaFZhbCA9IDU7DQorCQkJCQkJ
cmV0dXJuIHRydWU7DQorCQkJCQljYXNlIFR5cGVDb2RlLkludDY0Og0KKwkJCQkJCW1hdGNoVmFs
ID0gNjsNCisJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCWNhc2UgVHlwZUNvZGUuU2luZ2xlOg0K
KwkJCQkJCW1hdGNoVmFsID0gNzsNCisJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCWNhc2UgVHlw
ZUNvZGUuRG91YmxlOg0KKwkJCQkJCW1hdGNoVmFsID0gODsNCisJCQkJCQlyZXR1cm4gdHJ1ZTsN
CisJCQkJCX0NCisJCQkJCW1hdGNoVmFsID0gNTA7DQorCQkJCQlyZXR1cm4gdG8gPT0gdHlwZW9m
IChvYmplY3QpOw0KKwkJCQljYXNlIFR5cGVDb2RlLkJ5dGU6DQorCQkJCQlzd2l0Y2ggKHRvdCkg
ew0KKwkJCQkJY2FzZSBUeXBlQ29kZS5DaGFyOg0KKwkJCQkJCW1hdGNoVmFsID0gMjsNCisJCQkJ
CQlyZXR1cm4gdHJ1ZTsNCisJCQkJCWNhc2UgVHlwZUNvZGUuVUludDE2Og0KKwkJCQkJCW1hdGNo
VmFsID0gMzsNCisJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCWNhc2UgVHlwZUNvZGUuSW50MTY6
DQorCQkJCQkJbWF0Y2hWYWwgPSA0Ow0KKwkJCQkJCXJldHVybiB0cnVlOw0KKwkJCQkJY2FzZSBU
eXBlQ29kZS5VSW50MzI6DQorCQkJCQkJbWF0Y2hWYWwgPSA1Ow0KKwkJCQkJCXJldHVybiB0cnVl
Ow0KKwkJCQkJY2FzZSBUeXBlQ29kZS5JbnQzMjoNCisJCQkJCQltYXRjaFZhbCA9IDY7DQorCQkJ
CQkJcmV0dXJuIHRydWU7DQorCQkJCQljYXNlIFR5cGVDb2RlLlVJbnQ2NDoNCisJCQkJCQltYXRj
aFZhbCA9IDc7DQorCQkJCQkJcmV0dXJuIHRydWU7DQorCQkJCQljYXNlIFR5cGVDb2RlLkludDY0
Og0KKwkJCQkJCW1hdGNoVmFsID0gODsNCisJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCWNhc2Ug
VHlwZUNvZGUuU2luZ2xlOg0KKwkJCQkJCW1hdGNoVmFsID0gOTsNCisJCQkJCQlyZXR1cm4gdHJ1
ZTsNCisJCQkJCWNhc2UgVHlwZUNvZGUuRG91YmxlOg0KKwkJCQkJCW1hdGNoVmFsID0gMTA7DQor
CQkJCQkJcmV0dXJuIHRydWU7DQorCQkJCQl9DQorCQkJCQltYXRjaFZhbCA9IDUwOw0KKwkJCQkJ
cmV0dXJuIHRvID09IHR5cGVvZiAob2JqZWN0KSB8fCAoZnJvbS5Jc0VudW0gJiYgdG8gPT0gdHlw
ZW9mIChFbnVtKSk7DQorCQkJCWNhc2UgVHlwZUNvZGUuU0J5dGU6DQorCQkJCQlzd2l0Y2ggKHRv
dCkgew0KKwkJCQkJY2FzZSBUeXBlQ29kZS5JbnQxNjoNCisJCQkJCQltYXRjaFZhbCA9IDI7DQor
CQkJCQkJcmV0dXJuIHRydWU7DQorCQkJCQljYXNlIFR5cGVDb2RlLkludDMyOg0KKwkJCQkJCW1h
dGNoVmFsID0gMzsNCisJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCWNhc2UgVHlwZUNvZGUuSW50
NjQ6DQorCQkJCQkJbWF0Y2hWYWwgPSA0Ow0KKwkJCQkJCXJldHVybiB0cnVlOw0KKwkJCQkJY2Fz
ZSBUeXBlQ29kZS5TaW5nbGU6DQorCQkJCQkJbWF0Y2hWYWwgPSA1Ow0KKwkJCQkJCXJldHVybiB0
cnVlOw0KKwkJCQkJY2FzZSBUeXBlQ29kZS5Eb3VibGU6DQorCQkJCQkJbWF0Y2hWYWwgPSA2Ow0K
KwkJCQkJCXJldHVybiB0cnVlOw0KKwkJCQkJfQ0KKwkJCQkJbWF0Y2hWYWwgPSA1MDsNCisJCQkJ
CXJldHVybiB0byA9PSB0eXBlb2YgKG9iamVjdCkgfHwgKGZyb20uSXNFbnVtICYmIHRvID09IHR5
cGVvZiAoRW51bSkpOw0KKwkJCQljYXNlIFR5cGVDb2RlLlVJbnQxNjoNCisJCQkJCXN3aXRjaCAo
dG90KSB7DQorCQkJCQljYXNlIFR5cGVDb2RlLlVJbnQzMjoNCisJCQkJCQltYXRjaFZhbCA9IDI7
DQorCQkJCQkJcmV0dXJuIHRydWU7DQorCQkJCQljYXNlIFR5cGVDb2RlLkludDMyOg0KKwkJCQkJ
CW1hdGNoVmFsID0gMzsNCisJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCWNhc2UgVHlwZUNvZGUu
VUludDY0Og0KKwkJCQkJCW1hdGNoVmFsID0gNDsNCisJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJ
CWNhc2UgVHlwZUNvZGUuSW50NjQ6DQorCQkJCQkJbWF0Y2hWYWwgPSA1Ow0KKwkJCQkJCXJldHVy
biB0cnVlOw0KKwkJCQkJY2FzZSBUeXBlQ29kZS5TaW5nbGU6DQorCQkJCQkJbWF0Y2hWYWwgPSA2
Ow0KKwkJCQkJCXJldHVybiB0cnVlOw0KKwkJCQkJY2FzZSBUeXBlQ29kZS5Eb3VibGU6DQorCQkJ
CQkJbWF0Y2hWYWwgPSA3Ow0KKwkJCQkJCXJldHVybiB0cnVlOw0KKwkJCQkJfQ0KKwkJCQkJbWF0
Y2hWYWwgPSA1MDsNCisJCQkJCXJldHVybiB0byA9PSB0eXBlb2YgKG9iamVjdCkgfHwgKGZyb20u
SXNFbnVtICYmIHRvID09IHR5cGVvZiAoRW51bSkpOw0KKwkJCQljYXNlIFR5cGVDb2RlLkludDE2
Og0KKwkJCQkJc3dpdGNoICh0b3QpIHsNCisJCQkJCWNhc2UgVHlwZUNvZGUuSW50MzI6DQorCQkJ
CQkJbWF0Y2hWYWwgPSAyOw0KKwkJCQkJCXJldHVybiB0cnVlOw0KKwkJCQkJY2FzZSBUeXBlQ29k
ZS5JbnQ2NDoNCisJCQkJCQltYXRjaFZhbCA9IDM7DQorCQkJCQkJcmV0dXJuIHRydWU7DQorCQkJ
CQljYXNlIFR5cGVDb2RlLlNpbmdsZToNCisJCQkJCQltYXRjaFZhbCA9IDQ7DQorCQkJCQkJcmV0
dXJuIHRydWU7DQorCQkJCQljYXNlIFR5cGVDb2RlLkRvdWJsZToNCisJCQkJCQltYXRjaFZhbCA9
IDU7DQorCQkJCQkJcmV0dXJuIHRydWU7DQorCQkJCQl9DQorCQkJCQltYXRjaFZhbCA9IDUwOw0K
KwkJCQkJcmV0dXJuIHRvID09IHR5cGVvZiAob2JqZWN0KSB8fCAoZnJvbS5Jc0VudW0gJiYgdG8g
PT0gdHlwZW9mIChFbnVtKSk7DQorCQkJCWNhc2UgVHlwZUNvZGUuVUludDMyOg0KKwkJCQkJc3dp
dGNoICh0b3QpIHsNCisJCQkJCWNhc2UgVHlwZUNvZGUuVUludDY0Og0KKwkJCQkJCW1hdGNoVmFs
ID0gMjsNCisJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCWNhc2UgVHlwZUNvZGUuSW50NjQ6DQor
CQkJCQkJbWF0Y2hWYWwgPSAzOw0KKwkJCQkJCXJldHVybiB0cnVlOw0KKwkJCQkJY2FzZSBUeXBl
Q29kZS5TaW5nbGU6DQorCQkJCQkJbWF0Y2hWYWwgPSA0Ow0KKwkJCQkJCXJldHVybiB0cnVlOw0K
KwkJCQkJY2FzZSBUeXBlQ29kZS5Eb3VibGU6DQorCQkJCQkJbWF0Y2hWYWwgPSA1Ow0KKwkJCQkJ
CXJldHVybiB0cnVlOw0KKwkJCQkJfQ0KKwkJCQkJbWF0Y2hWYWwgPSA1MDsNCisJCQkJCXJldHVy
biB0byA9PSB0eXBlb2YgKG9iamVjdCkgfHwgKGZyb20uSXNFbnVtICYmIHRvID09IHR5cGVvZiAo
RW51bSkpOw0KKwkJCQljYXNlIFR5cGVDb2RlLkludDMyOg0KKwkJCQkJc3dpdGNoICh0b3QpIHsN
CisJCQkJCWNhc2UgVHlwZUNvZGUuSW50NjQ6DQorCQkJCQkJbWF0Y2hWYWwgPSAyOw0KKwkJCQkJ
CXJldHVybiB0cnVlOw0KKwkJCQkJY2FzZSBUeXBlQ29kZS5TaW5nbGU6DQorCQkJCQkJbWF0Y2hW
YWwgPSAzOw0KKwkJCQkJCXJldHVybiB0cnVlOw0KKwkJCQkJY2FzZSBUeXBlQ29kZS5Eb3VibGU6
DQorCQkJCQkJbWF0Y2hWYWwgPSA0Ow0KKwkJCQkJCXJldHVybiB0cnVlOw0KKwkJCQkJfQ0KKwkJ
CQkJbWF0Y2hWYWwgPSA1MDsNCisJCQkJCXJldHVybiB0byA9PSB0eXBlb2YgKG9iamVjdCkgfHwg
KGZyb20uSXNFbnVtICYmIHRvID09IHR5cGVvZiAoRW51bSkpOw0KKwkJCQljYXNlIFR5cGVDb2Rl
LlVJbnQ2NDoNCisJCQkJCXN3aXRjaCAodG90KSB7DQorCQkJCQljYXNlIFR5cGVDb2RlLkludDY0
Og0KKwkJCQkJCW1hdGNoVmFsID0gMjsNCisJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCWNhc2Ug
VHlwZUNvZGUuU2luZ2xlOg0KKwkJCQkJCW1hdGNoVmFsID0gMzsNCisJCQkJCQlyZXR1cm4gdHJ1
ZTsNCisJCQkJCWNhc2UgVHlwZUNvZGUuRG91YmxlOg0KKwkJCQkJCW1hdGNoVmFsID0gNDsNCisJ
CQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCX0NCisJCQkJCW1hdGNoVmFsID0gNTA7DQorCQkJCQly
ZXR1cm4gdG8gPT0gdHlwZW9mIChvYmplY3QpIHx8IChmcm9tLklzRW51bSAmJiB0byA9PSB0eXBl
b2YgKEVudW0pKTsNCisNCisJCQkJY2FzZSBUeXBlQ29kZS5JbnQ2NDoNCisJCQkJCXN3aXRjaCAo
dG90KSB7DQorCQkJCQljYXNlIFR5cGVDb2RlLlVJbnQ2NDoNCisJCQkJCQltYXRjaFZhbCA9IDI7
DQorCQkJCQkJcmV0dXJuIHRydWU7DQorCQkJCQljYXNlIFR5cGVDb2RlLlNpbmdsZToNCisJCQkJ
CQltYXRjaFZhbCA9IDM7DQorCQkJCQkJcmV0dXJuIHRydWU7DQorCQkJCQljYXNlIFR5cGVDb2Rl
LkRvdWJsZToNCisJCQkJCQltYXRjaFZhbCA9IDQ7DQorCQkJCQkJcmV0dXJuIHRydWU7DQorCQkJ
CQl9DQorCQkJCQltYXRjaFZhbCA9IDUwOw0KKwkJCQkJcmV0dXJuIHRvID09IHR5cGVvZiAob2Jq
ZWN0KSB8fCAoZnJvbS5Jc0VudW0gJiYgdG8gPT0gdHlwZW9mIChFbnVtKSk7DQorCQkJCWNhc2Ug
VHlwZUNvZGUuU2luZ2xlOg0KKwkJCQkJaWYodG90ID09ICBUeXBlQ29kZS5Eb3VibGUpew0KKwkJ
CQkJCW1hdGNoVmFsID0gMjsNCisJCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJCX0NCisJCQkJCW1h
dGNoVmFsID0gNTA7DQorCQkJCQlyZXR1cm4gdG8gPT0gdHlwZW9mIChvYmplY3QpOw0KKwkJCQlk
ZWZhdWx0Og0KKwkJCQkJLyogVE9ETzogaGFuZGxlIHZhbHVldHlwZSAtPiBieXJlZiAqLw0KKwkJ
CQkJaWYgKHRvID09IHR5cGVvZiAob2JqZWN0KSAmJiBmcm9tLklzVmFsdWVUeXBlKXsNCisJCQkJ
CQltYXRjaFZhbCA9IDUwOw0KKwkJCQkJCXJldHVybiB0cnVlOw0KKwkJCQkJfQ0KKwkJCQkJDQor
CQkJCQltYXRjaFZhbCA9IDEwMDsNCisJCQkJCXJldHVybiB0by5Jc0Fzc2lnbmFibGVGcm9tIChm
cm9tKTsNCisJCQkJfQ0KKwkJCX0NCiAJCQlwcml2YXRlIHN0YXRpYyBib29sIGNoZWNrX2FyZ3Vt
ZW50cyAoVHlwZVtdIHR5cGVzLCBQYXJhbWV0ZXJJbmZvW10gYXJncykgew0KIAkJCQlmb3IgKGlu
dCBpID0gMDsgaSA8IHR5cGVzLkxlbmd0aDsgKytpKSB7DQogCQkJCQlpZiAoIWNoZWNrX3R5cGUg
KHR5cGVzIFtpXSwgYXJncyBbaV0uUGFyYW1ldGVyVHlwZSkpDQpAQCAtMjI5LDYgKzQ0OSwxODkg
QEANCiAJCQkJfQ0KIAkJCQlyZXR1cm4gdHJ1ZTsNCiAJCQl9DQorDQorDQorCQlwcml2YXRlIE1l
dGhvZEJhc2UgU2VsZWN0TWV0aG9kIChCaW5kaW5nRmxhZ3MgYmluZGluZ0F0dHIsDQorICAgICAg
ICAgICAgICAgICAgICAgICAgTWV0aG9kQmFzZVtdIG1hdGNoLCByZWYgb2JqZWN0W10gYXJncywg
UGFyYW1ldGVyTW9kaWZpZXJbXSBtb2RpZmllcnMsDQorICAgICAgICAgICAgICAgICAgICAgICAg
c3RyaW5nW10gbmFtZXMpDQorICAgICAgICAgICAgICAgIHsNCisJICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGZvdW5kID0gMDsNCisJICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kQmFz
ZSBtID0gbnVsbDsNCisJICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kQmFzZSB0ZW1wTSA9
IG51bGw7DQorCQkJCWludCBtYXRjaFZhbCA9IDAsIHRvdGFsTWF0Y2hWYWwgPSAwLCB1dG90YWxN
YXRjaFZhbCA9IDA7DQorCQkJCWludCBzZWxlY3RlZE1ldGhvZCA9IC0xOw0KKwkJCQlpbnQgTmFt
ZWRQYXJhbUJlc3RNYXRjaCA9IC0xOw0KKwkJCQlpbnQgVW5uYW1lZFBhcmFtQmVzdE1hdGNoID0g
LTE7DQorCQkJCWludCBbXSBtYXRjaFNlcSA9IG5ldyBpbnQgW25hbWVzLkxlbmd0aF07DQorCQkJ
CWludCBbXSBiZXN0TWF0Y2hTZXEgPSBuZXcgaW50IFtuYW1lcy5MZW5ndGhdOw0KKwkJCQlpbnQg
dU5hbWVQYXJhbUxlbiA9IGFyZ3MuTGVuZ3RoIC0gbmFtZXMuTGVuZ3RoOw0KKwkJCQlpbnQgW10g
dWJlc3RNYXRjaFNlcSA9IG51bGw7DQorCQkJCWludCBbXSB1bWF0Y2hTZXEgPSBudWxsOw0KKwkJ
CQlpZih1TmFtZVBhcmFtTGVuID4gMCl7DQorCQkJCQl1YmVzdE1hdGNoU2VxID0gbmV3IGludCBb
dU5hbWVQYXJhbUxlbl07DQorCQkJCQl1bWF0Y2hTZXEgPSBuZXcgaW50IFt1TmFtZVBhcmFtTGVu
XTsNCisJCQkJfQ0KKwkJCQlQYXJhbWV0ZXJJbmZvW10gcGFyYW0gPSBudWxsOw0KKw0KKwkJCQkv
LyBnbyB0aHJ1IGFsbCB0aGUgbWV0aG9kcyANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAoaW50IG1pID0gMDsgbWkgPCBtYXRjaC5MZW5ndGg7ICsrbWkpIHsNCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IG1hdGNoIFttaV07DQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gbS5HZXRQYXJhbWV0ZXJz
ICgpOw0KKwkJCQkJLy8gbWF0Y2ggdGhlIG51bWJlciBvZiBwcmFtZXRlcnMNCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3MuTGVuZ3RoICE9IHBhcmFtLkxl
bmd0aCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsNCisJCQkJCS8vIGZvciBuYW1lZCBwYXJhbWV0ZXJzIHRoZSBtYXRjaGluZyANCisJ
CQkJCS8vIHBhcmFtIG5hbWUgaXMgbWFqb3IgY3JpdGVyaWENCisJCQkJCS8vIHRoZSBuYW1lIGhh
cyB0byBiZSBtYXRjaGVkDQorCQkJCQlpbnQgaiwgazsNCisJCQkJCXRvdGFsTWF0Y2hWYWwgPSAw
Ow0KKwkJCQkJdXRvdGFsTWF0Y2hWYWwgPSAwOw0KKwkJCQkJZm91bmQgPSAwOw0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IoaiA9IDA7IGo8bmFtZXMuTGVuZ3Ro
OyBqKyspew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvcihrID0gMDsgazxwYXJhbS5MZW5ndGg7IGsrKyl7DQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihwYXJhbVtrXS5OYW1lID09IG5h
bWVzW2pdKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsNCisJCQkJCQl9DQorCQkJCQkJLy8gaWYgZXZlbiBvbmUg
cGFyYW0gbmFtZSBkb2Vzbid0IG1hdGNoDQorCQkJCQkJLy8gZG9uJ3QgY29uc2lkZXIgdGhlIG1l
dGhvZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
KGsgPj0gcGFyYW0uTGVuZ3RoKXsNCisJCQkJCQkJZm91bmQgPSAtMTsNCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKwkJCQkJ
CX0NCisgICAgICAgICAgICAgICAgICAgICAgICANCisJCQkJCQkvLyBpZiBhbGwgdGhlIG5hbWVz
IG1hdGNoZXMNCisJCQkJCQkvLyBzdGFydCBjaGVja2luZyB0eXBlcyBmb3IgbmFtZWQgDQorCQkJ
CQkJLy8gcGFyYW1ldGVycw0KKwkJCQkJCW1hdGNoVmFsID0gMDsNCisJCQkJCQlpZiAoY2hlY2tf
dHlwZSAoYXJncyBbal0uR2V0VHlwZSAoKSwgcGFyYW1ba10uUGFyYW1ldGVyVHlwZSwgb3V0IG1h
dGNoVmFsKSl7DQorCQkJCQkJCW1hdGNoU2VxIFtqXSA9IG1hdGNoVmFsOw0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl0b3RhbE1hdGNoVmFsID0gdG90
YWxNYXRjaFZhbCArIG1hdGNoVmFsOw0KKwkJCQkJCX0NCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlew0KKwkJCQkJCQlmb3VuZCA9IC0xOw0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7DQorCQkJCQkJfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
DQorDQorCQkJCQkvL2lmIG5hbWUgb3IgdHlwZSBkZXNuJ3Qgbm90IG1hdGNoIHBpY2t1cCBuZXh0
IG1ldGhvZA0KKwkJCQkJaWYoZm91bmQgPT0gLTEpDQorCQkJCQkJY29udGludWU7DQorDQorCQkJ
CQkvLyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHVubmFtZWQgdXJndW1lbnRzDQorCQkJCQlpZihu
YW1lcy5MZW5ndGggPCBhcmdzLkxlbmd0aCl7DQorCQkgICAgICAgICAgICAgICAgICAgICAgICAJ
UGFyYW1ldGVySW5mb1tdIHBhcm1zID0gcGFyYW07DQorCSAgICAgICAgCSAgICAgICAgICAgICAg
ICAJaW50IGN1cnJlbnRQb3MgPSBuYW1lcy5MZW5ndGg7DQorCSAgICAgICAgCSAgICAgICAgICAg
ICAgICAJZm9yKGludCBpPTAsIGw9MDsgaTxwYXJtcy5MZW5ndGg7IGkrKyl7DQorCSAgICAgICAg
CSAgICAgICAgICAgICAgICAgICAgICAgCSAJZm9yKGogPSAwOyBqPG5hbWVzLkxlbmd0aDsgaisr
KXsNCisJICAgICAgICAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJaWYocGFybXNb
aV0uTmFtZSA9PSBuYW1lc1tqXSkNCisJICAgICAgICAJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAlicmVhazsNCisJCQkJCQkJfQ0KKwkJCQkJCQkvLyBjaGVjaCB0eXBl
cyBmb3IgdW5uYW1lZCBwYXJhbXMNCisJICAgICAgICAJICAgICAgICAgICAgICAgICAgICAgICAg
CWlmKChqID49IG5hbWVzLkxlbmd0aCkgJiYgKGFyZ3MuTGVuZ3RoID4gY3VycmVudFBvcykpew0K
Kw0KKwkJCQkJCQlpZihjaGVja190eXBlIChhcmdzW2N1cnJlbnRQb3NdLkdldFR5cGUoKSwgcGFy
bXNbaV0uUGFyYW1ldGVyVHlwZSwgb3V0IG1hdGNoVmFsKSl7DQorCQkJCQkJCQkJdW1hdGNoU2Vx
IFtsKytdID0gbWF0Y2hWYWw7DQorCSAgICAgICAgCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHV0b3RhbE1hdGNoVmFsID0gdXRvdGFsTWF0Y2hWYWwgKyBt
YXRjaFZhbDsNCisJICAgICAgICAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudFBvcysrOw0KKyAgICAgICAgICAgICAgICAJICAgICAgICAgICAg
ICAgICAgICAgICAgCQl9DQorICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgICAg
ICAJCWVsc2V7DQorCQkJCQkJCQkJZm91bmQgPSAtMTsNCisgICAgICAgICAgICAgICAgCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCQlicmVhazsNCisJCQkJCQkJCX0NCisJCQkJCQkJ
fQ0KKwkgICAgICAgIAkgICAgICAgICAgICAgICAgCX0NCisJCQkJCQkNCisJCQkJCX0NCisJCQkJ
CS8vaWYgdHlwZXMgbm90IG1hdGNoZWQgcGlja3VwIG5leHQgbWV0aG9kDQorCQkJCQlpZihmb3Vu
ZCA9PSAtMSkNCisJCQkJCQljb250aW51ZTsNCisNCisJCQkJCS8vIGxvd2VyIHRoZSB2YWx1ZSwg
YmV0dGVyIHRoZSBtYXRjaA0KKwkJCQkJLy8gaGVuY2Ugd2Ugd2lsbCBrZWVwIG9ubHkgdGhlIGxl
YXN0IHRvdGFsTWF0Y2h2YWx1ZSANCisJCQkJCS8vIHRoZSBwcmVmZXJlbmNlIGdvZXMgdG8gbmFt
ZWQgcGFyYW1zDQorCQkJCQkvLyBmaXJzdCB0aGUgbmFtZWQgcHJhbXMgZ2V0cyBjaGFuY2UgdG8g
Z2V0IHRoZSANCisJCQkJCS8vIGJldHRlciBtYXRjaCB0aGVuIGNvbWVzIHVubmFtZWQgcGFyYW1z
DQorCQkJCQlpZiAoTmFtZWRQYXJhbUJlc3RNYXRjaCA+IHRvdGFsTWF0Y2hWYWwgfHwgTmFtZWRQ
YXJhbUJlc3RNYXRjaCA9PSAtMSl7DQorCQkJCQkJTmFtZWRQYXJhbUJlc3RNYXRjaCA9IHRvdGFs
TWF0Y2hWYWw7DQorCQkJCQkJVW5uYW1lZFBhcmFtQmVzdE1hdGNoID0gdXRvdGFsTWF0Y2hWYWw7
DQorCQkJCQkJZm9yIChpbnQgbiA9IDA7IG48bmFtZXMuTGVuZ3RoOyBuKyspDQorCQkJCQkJCWJl
c3RNYXRjaFNlcSBbbl0gPSBtYXRjaFNlcSBbbl07DQorCQkJCQkJaWYodU5hbWVQYXJhbUxlbiA+
IDApew0KKwkJCQkJCQlmb3IgKGludCB1ID0gMDsgdTx1TmFtZVBhcmFtTGVuOyB1KyspDQorCQkJ
CQkJCQl1YmVzdE1hdGNoU2VxIFt1XSA9IHVtYXRjaFNlcSBbdV07DQorCQkJCQkJfQ0KKwkJCQkJ
CXNlbGVjdGVkTWV0aG9kID0gbWk7DQorCQkJCQl9DQorDQorCQkJCQkvLyBpZiB0d28gbWV0aG9k
IHJldHVybnMgdGhlIHNhbWUgdmFsdWUgZm9yIA0KKwkJCQkJLy8gdGhlbiBtYXRjaCB0eXBlcyBv
ZiBlYWNoIHBhcmFtDQorCQkJCQkvLyBpZiBhbGwgdGhlIHR5cGVzIG1hdGNoZXMgcmV0dXJuIGEg
DQorCQkJCQkvLyBBbWJpZ3VvdXNNYXRjaEV4Y2VwdGlvbg0KKwkJCQkJZWxzZSBpZiAoTmFtZWRQ
YXJhbUJlc3RNYXRjaCA9PSB0b3RhbE1hdGNoVmFsKXsNCisJCQkJCQlib29sIG5vTWF0Y2ggPSBm
YWxzZTsNCisJCQkJCQlpbnQgbiA9IDA7DQorCQkJCQkJaWYodU5hbWVQYXJhbUxlbiA+IDApIHsN
CisJCQkJCQkJaWYoVW5uYW1lZFBhcmFtQmVzdE1hdGNoID09IHV0b3RhbE1hdGNoVmFsKXsNCisJ
CQkJCQkJCWZvcihuID0gMDsgbjx1TmFtZVBhcmFtTGVuOyBuKyspew0KKwkJCQkJCQkJCWlmKHVi
ZXN0TWF0Y2hTZXEgW25dICE9IHVtYXRjaFNlcSBbbl0pew0KKwkJCQkJCQkJCQlub01hdGNoID0g
dHJ1ZTsNCisJCQkJCQkJCQkJYnJlYWs7DQorCQkJCQkJCQkJfQ0KKwkJCQkJCQkJfQ0KKwkJCQkJ
CQl9DQorCQkJCQkJCWVsc2UNCisJCQkJCQkJCW5vTWF0Y2ggPSB0cnVlOw0KKwkJCQkJCX0JDQor
CQkJCQkJaWYoIW5vTWF0Y2gpew0KKwkJCQkJCQlmb3IobiA9IDA7IG48bmFtZXMuTGVuZ3RoOyBu
Kyspew0KKwkJCQkJCQkJaWYoYmVzdE1hdGNoU2VxIFtuXSAhPSBtYXRjaFNlcSBbbl0pew0KKwkJ
CQkJCQkJCW5vTWF0Y2ggPSB0cnVlOw0KKwkJCQkJCQkJCWJyZWFrOw0KKwkJCQkJCQkJfQ0KKwkJ
CQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJCWlmKCFub01hdGNoKQ0KKwkJCQkJCQl0aHJvdyBuZXcg
QW1iaWd1b3VzTWF0Y2hFeGNlcHRpb24oKTsNCisJCQkJCQ0KKwkJCQkJCWlmKCh1TmFtZVBhcmFt
TGVuPjApICYmIChVbm5hbWVkUGFyYW1CZXN0TWF0Y2ggPiB1dG90YWxNYXRjaFZhbCkpew0KKwkJ
CQkJCQlVbm5hbWVkUGFyYW1CZXN0TWF0Y2ggPSB1dG90YWxNYXRjaFZhbDsNCisJCQkJCQkJZm9y
IChuID0gMDsgbjxuYW1lcy5MZW5ndGg7IG4rKykNCisJCQkJCQkJCWJlc3RNYXRjaFNlcSBbbl0g
PSBtYXRjaFNlcSBbbl07DQorCQkJCQkJCWZvciAoaW50IHUgPSAwOyB1PHVOYW1lUGFyYW1MZW47
IHUrKykNCisJCQkJCQkJCXViZXN0TWF0Y2hTZXEgW3VdID0gdW1hdGNoU2VxIFt1XTsNCisJCQkJ
CQkJc2VsZWN0ZWRNZXRob2QgPSBtaTsNCisJCQkJCQl9CQkNCisJCQkJCX0NCisJCQkJCQ0KKwkJ
CQl9DQorCQkJCS8vIGlmIG5vIG1ldGhvZCBtYXRjaGVkDQorCQkJCWlmKHNlbGVjdGVkTWV0aG9k
ID09IC0xKQ0KKwkJCQkJcmV0dXJuIG51bGw7DQorDQorCQkJCXBhcmFtID0gbWF0Y2hbc2VsZWN0
ZWRNZXRob2RdLkdldFBhcmFtZXRlcnMgKCk7DQorDQorCQkJCS8vIHJlYXJyYW5nZSB0aGUgYXJn
dW1ldHMgYXMgcGVyIHRoZSANCisJCQkJLy8gcGFyYW1ldGVycyBvZiB0aGUgcXVhbGlmaWVkIG1l
dGhvZA0KKwkJCQlvYmplY3RbXSB0ZW1wQXJncyA9IG5ldyBvYmplY3RbYXJncy5MZW5ndGhdOw0K
KyAgICAgICAgICAgICAgICAgICAgICAgIAlpbnQgY3VyUG9zID0gbmFtZXMuTGVuZ3RoOw0KKwkJ
CQkNCisJCQkJZm9yKGludCB0ID0gMDsgdDxwYXJhbS5MZW5ndGg7IHQrKyl7DQorCQkJCQlpbnQg
ajsNCisJICAgICAgICAgICAgICAgICAgICAgICAJIAlmb3IoaiA9IDA7IGo8bmFtZXMuTGVuZ3Ro
OyBqKyspew0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCWlmKHBhcmFt
W3RdLk5hbWUgPT0gbmFtZXNbal0pew0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAl0ZW1wQXJnc1t0XSA9IGFyZ3Nbal07DQorCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCWJyZWFrOw0KKwkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAJfQ0KKwkJCQkJfQ0KKwkJCQkJaWYoKGogPj0gbmFt
ZXMuTGVuZ3RoKSAmJiAoYXJncy5MZW5ndGggPiBjdXJQb3MpKXsNCisJCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVtcEFyZ3NbdF0gPSBhcmdzW2N1clBvc107DQorCQkJCQkJY3Vy
UG9zKys7DQorCQkJCQl9DQorCQkJCX0NCisJCQkJYXJncyA9IHRlbXBBcmdzOw0KKwkgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hbc2VsZWN0ZWRNZXRob2RdOw0KKyAgICAgICAg
ICAgICAgICAJfQ0KKwkJDQogDQogCQkJcHVibGljIG92ZXJyaWRlIE1ldGhvZEJhc2UgU2VsZWN0
TWV0aG9kIChCaW5kaW5nRmxhZ3MgYmluZGluZ0F0dHIsIE1ldGhvZEJhc2VbXSBtYXRjaCwgVHlw
ZVtdIHR5cGVzLCBQYXJhbWV0ZXJNb2RpZmllcltdIG1vZGlmaWVycykNCiAJCQl7DQo=

--=__PartAEF04978.0__=
Content-Type: application/octet-stream; name="cvs1_1.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="cvs1_1.diff"

SW5kZXg6IGNsYXNzL2NvcmxpYi9UZXN0L1N5c3RlbS9UeXBlVGVzdC5jcw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
UkNTIGZpbGU6IC9tb25vL21jcy9jbGFzcy9jb3JsaWIvVGVzdC9TeXN0ZW0vVHlwZVRlc3QuY3Ms
dg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjENCmRpZmYgLXUgLXIxLjEgVHlwZVRlc3QuY3MNCi0t
LSBjbGFzcy9jb3JsaWIvVGVzdC9TeXN0ZW0vVHlwZVRlc3QuY3MJMTMgSnVsIDIwMDMgMTQ6Mjk6
MjUgLTAwMDAJMS4xDQorKysgY2xhc3MvY29ybGliL1Rlc3QvU3lzdGVtL1R5cGVUZXN0LmNzCTI5
IE5vdiAyMDAzIDExOjM3OjU2IC0wMDAwDQpAQCAtOCw4ICs4LDEwIEBADQogDQogdXNpbmcgTlVu
aXQuRnJhbWV3b3JrOw0KIHVzaW5nIFN5c3RlbTsNCit1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsN
CiB1c2luZyBTeXN0ZW0uSU87DQogDQorDQogbmFtZXNwYWNlIE1vbm9UZXN0cy5TeXN0ZW0NCiB7
DQogCWNsYXNzIFN1cGVyIDogSUNsb25lYWJsZSB7DQpAQCAtMjAsMTEgKzIyLDE1IEBADQogCWNs
YXNzIER1cGVyOiBTdXBlciB7DQogCX0NCiANCisJDQogCWVudW0gVGhlRW51bSB7IEEsIEIsIEMg
fTsNCiANCiAJW1Rlc3RGaXh0dXJlXQ0KIAlwdWJsaWMgY2xhc3MgVHlwZVRlc3QgOiBBc3NlcnRp
b24NCiAJew0KKwkJcHVibGljIHN0YXRpYyBvYmplY3QgW10gdmFsdWVzOw0KKwkJcHVibGljIHN0
YXRpYyBzdHJpbmcgbWV0aG9kSWQ7IA0KKwkJDQogCQlbVGVzdF0NCiAJCXB1YmxpYyB2b2lkIFRl
c3RJc0Fzc2lnbmFibGVGcm9tICgpIHsNCiAJCQkvLyBTaW1wbGUgdGVzdHMgZm9yIGluaGVyaXRh
bmNlDQpAQCAtNzcsNiArODMsMjc5IEBADQogCQlwdWJsaWMgdm9pZCBUZXN0SXNTdWJjbGFzc09m
ICgpIHsNCiAJCQlBc3NlcnQgKHR5cGVvZiAoSUNsb25lYWJsZSkuSXNTdWJjbGFzc09mICh0eXBl
b2YgKG9iamVjdCkpKTsNCiAJCX0NCisNCisJCXByaXZhdGUgdm9pZCBpbnZva2VNZW1iZXIob2Jq
ZWN0IFtdIGFyZ1ZhbHVlcywgc3RyaW5nIFtdIGFyZ05hbWVzKSB7DQorCQkJdHJ5IHsNCisJCQkJ
dmFsdWVzID0gbmV3IG9iamVjdFthcmdWYWx1ZXMuTGVuZ3RoXTsNCisJCQkNCisJCQkJVHlwZSB0
ID0gdHlwZW9mKFR5cGVDbGFzcyk7DQorCQkJCXQuSW52b2tlTWVtYmVyKCJjaGVja01ldGhvZCIs
DQorCQkJCQlCaW5kaW5nRmxhZ3MuSW52b2tlTWV0aG9kLA0KKwkJCQkJbnVsbCwNCisJCQkJCW51
bGwsDQorCQkJCQlhcmdWYWx1ZXMsIA0KKwkJCQkJbnVsbCwgDQorCQkJCQludWxsLA0KKwkJCQkJ
YXJnTmFtZXMpOw0KKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQkJCXRocm93IChlKTsN
CisJCQl9DQorCQl9DQorDQorCQlbVGVzdF0NCisJCXB1YmxpYyB2b2lkIFRlc3RJbnZva2VNZW1i
ZXJfTWV0aG9kICgpIHsNCisJCQl0cnl7DQorCQkJCW9iamVjdFtdIGFyZ1ZhbHVlcyA9IG5ldyBv
YmplY3QgW10geyJhYWEiLCAiYmJiIn07DQorCQkJCXN0cmluZyBbXSBhcmdOYW1lcyA9IG5ldyBz
dHJpbmcgW10geyJmaXJzdE5hbWUiLCAibGFzdE5hbWUifTsNCisJCQkJaW52b2tlTWVtYmVyKGFy
Z1ZhbHVlcywgYXJnTmFtZXMpOw0KKwkJCQkNCisJCQkJQXNzZXJ0RXF1YWxzKCIjQTEiLCBtZXRo
b2RJZCwgIm0xIik7DQorCQkJCUFzc2VydEVxdWFscygiI0ExIiwgIGFyZ1ZhbHVlc1swXSwgdmFs
dWVzWzBdKTsNCisJCQkJQXNzZXJ0RXF1YWxzKCIjQTEiLCAgYXJnVmFsdWVzWzFdLCB2YWx1ZXNb
MV0pOw0KKwkJCX1jYXRjaCAoRXhjZXB0aW9uIGUpew0KKwkJCQlGYWlsICgiVW5leHBlY3RlZCBl
eGNlcHRpb24gYXQgI0ExICIgKyBlKTsNCisJCQl9DQorDQorCQkJdHJ5ew0KKwkJCQlvYmplY3Rb
XSBhcmdWYWx1ZXMgPSBuZXcgb2JqZWN0IFtdIHsiYmJiIiwgImFhYSJ9Ow0KKwkJCQlzdHJpbmcg
W10gYXJnTmFtZXMgPSBuZXcgc3RyaW5nIFtdIHsibGFzdE5hbWUiLCAiZmlyc3ROYW1lIn07DQor
CQkJCWludm9rZU1lbWJlcihhcmdWYWx1ZXMsIGFyZ05hbWVzKTsNCisJCQkJDQorCQkJCUFzc2Vy
dEVxdWFscygiI0EyIiwgbWV0aG9kSWQsICJtMSIpOw0KKwkJCQlBc3NlcnRFcXVhbHMoIiNBMiIs
ICBhcmdWYWx1ZXNbMF0sIHZhbHVlc1sxXSk7DQorCQkJCUFzc2VydEVxdWFscygiI0EyIiwgIGFy
Z1ZhbHVlc1sxXSwgdmFsdWVzWzBdKTsNCisJCQl9Y2F0Y2ggKEV4Y2VwdGlvbiBlKXsNCisJCQkJ
RmFpbCAoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIGF0ICNBMiAiICsgZSk7DQorCQkJfQ0KKw0KKwkJ
CXRyeXsNCisJCQkJb2JqZWN0W10gYXJnVmFsdWVzID0gbmV3IG9iamVjdCBbXSB7MTIsICJiYmIi
fTsNCisJCQkJc3RyaW5nIFtdIGFyZ05hbWVzID0gbmV3IHN0cmluZyBbXSB7ImZpcnN0TmFtZSIs
ICJsYXN0TmFtZSJ9Ow0KKwkJCQlpbnZva2VNZW1iZXIoYXJnVmFsdWVzLCBhcmdOYW1lcyk7DQor
CQkJfWNhdGNoIChFeGNlcHRpb24gZSl7DQorCQkJCUFzc2VydEVxdWFscygiI0EzIiwgdHlwZW9m
KEFtYmlndW91c01hdGNoRXhjZXB0aW9uKSwgZS5HZXRUeXBlKCkpOw0KKwkJCX0NCisNCisJCQl0
cnl7DQorCQkJCW9iamVjdFtdIGFyZ1ZhbHVlcyA9IG5ldyBvYmplY3QgW10geyJhYWEiLCAxMn07
DQorCQkJCXN0cmluZyBbXSBhcmdOYW1lcyA9IG5ldyBzdHJpbmcgW10geyJmaXJzdE5hbWUiLCAi
bGFzdE5hbWUifTsNCisJCQkJaW52b2tlTWVtYmVyKGFyZ1ZhbHVlcywgYXJnTmFtZXMpOw0KKwkJ
CX1jYXRjaCAoRXhjZXB0aW9uIGUpew0KKwkJCQlBc3NlcnRFcXVhbHMoIiNBNCIsIHR5cGVvZihN
aXNzaW5nTWV0aG9kRXhjZXB0aW9uKSwgZS5HZXRUeXBlKCkpOw0KKwkJCX0NCisNCisJCQl0cnl7
DQorCQkJCW9iamVjdFtdIGFyZ1ZhbHVlcyA9IG5ldyBvYmplY3QgW10geyJhYWEiLCAxMn07DQor
CQkJCXN0cmluZyBbXSBhcmdOYW1lcyA9IG5ldyBzdHJpbmcgW10geyJmaXJzdE5hbWUiLCANCisJ
CQkJCQkJCSJsYXN0TmFtZSIsICJhbm90aGVyTmFtZSJ9Ow0KKwkJCQlpbnZva2VNZW1iZXIoYXJn
VmFsdWVzLCBhcmdOYW1lcyk7DQorCQkJfWNhdGNoIChFeGNlcHRpb24gZSl7DQorCQkJCUFzc2Vy
dEVxdWFscygiI0E1IiwgdHlwZW9mKEFyZ3VtZW50RXhjZXB0aW9uKSwgZS5HZXRUeXBlKCkpOw0K
KwkJCX0NCisNCisJCQl0cnl7DQorCQkJCWRvdWJsZSBpID0gMTA7DQorCQkJCW9iamVjdFtdIGFy
Z1ZhbHVlcyA9IG5ldyBvYmplY3QgW10geyJhYWEiLCAiYmJiIiwgaX07DQorCQkJCXN0cmluZyBb
XSBhcmdOYW1lcyA9IG5ldyBzdHJpbmcgW10geyJmaXJzdE5hbWUiLCANCisJCQkJCQkJCQkibGFz
dE5hbWUiLCAJCQkJCQkJCQkJIklEIn07DQorCQkJCWludm9rZU1lbWJlcihhcmdWYWx1ZXMsIGFy
Z05hbWVzKTsNCisJCQkJDQorCQkJCUFzc2VydEVxdWFscygiI0E2IiwgbWV0aG9kSWQsICJtNCIp
Ow0KKwkJCQlBc3NlcnRFcXVhbHMoIiNBNiIsICBhcmdWYWx1ZXNbMF0sIHZhbHVlc1swXSk7DQor
CQkJCUFzc2VydEVxdWFscygiI0E2IiwgIGFyZ1ZhbHVlc1sxXSwgdmFsdWVzWzFdKTsNCisJCQkJ
QXNzZXJ0RXF1YWxzKCIjQTYiLCAgYXJnVmFsdWVzWzJdLCB2YWx1ZXNbMl0pOw0KKwkJCX1jYXRj
aCAoRXhjZXB0aW9uIGUpew0KKwkJCQlGYWlsICgiVW5leHBlY3RlZCBleGNlcHRpb24gYXQgI0E2
ICIgKyBlKTsNCisJCQl9DQorDQorCQkJdHJ5ew0KKwkJCQlpbnQgaSA9IDEwOw0KKwkJCQlvYmpl
Y3RbXSBhcmdWYWx1ZXMgPSBuZXcgb2JqZWN0IFtdIHsiYWFhIiwgImJiYiIsIGl9Ow0KKwkJCQlz
dHJpbmcgW10gYXJnTmFtZXMgPSBuZXcgc3RyaW5nIFtdIHsiZmlyc3ROYW1lIiwgDQorCQkJCQkJ
CQkJImxhc3ROYW1lIiwgCQkJCQkJCQkJCSJJRCJ9Ow0KKwkJCQlpbnZva2VNZW1iZXIoYXJnVmFs
dWVzLCBhcmdOYW1lcyk7DQorCQkJCQ0KKwkJCQlBc3NlcnRFcXVhbHMoIiNBNyIsIG1ldGhvZElk
LCAibTUiKTsNCisJCQkJQXNzZXJ0RXF1YWxzKCIjQTciLCAgYXJnVmFsdWVzWzBdLCB2YWx1ZXNb
MF0pOw0KKwkJCQlBc3NlcnRFcXVhbHMoIiNBNyIsICBhcmdWYWx1ZXNbMV0sIHZhbHVlc1sxXSk7
DQorCQkJCUFzc2VydEVxdWFscygiI0E3IiwgIGFyZ1ZhbHVlc1syXSwgdmFsdWVzWzJdKTsNCisJ
CQl9Y2F0Y2ggKEV4Y2VwdGlvbiBlKXsNCisJCQkJRmFpbCAoIlVuZXhwZWN0ZWQgZXhjZXB0aW9u
IGF0ICNBNyAiICsgZSk7DQorCQkJfQ0KKw0KKwkJCS8vIHVubmFtZWQgcGFyYW1ldGVycw0KKwkJ
CXRyeXsNCisJCQkJaW50IGkgPSAxMDsNCisJCQkJb2JqZWN0W10gYXJnVmFsdWVzID0gbmV3IG9i
amVjdCBbXSB7ImFhYSIsICJiYmIiLCBpfTsNCisJCQkJc3RyaW5nIFtdIGFyZ05hbWVzID0gbmV3
IHN0cmluZyBbXSB7ImZpcnN0TmFtZSIsICJsYXN0TmFtZSJ9Ow0KKwkJCQlpbnZva2VNZW1iZXIo
YXJnVmFsdWVzLCBhcmdOYW1lcyk7DQorCQkJCQ0KKwkJCQlBc3NlcnRFcXVhbHMoIiNBOCIsIG1l
dGhvZElkLCAibTUiKTsNCisJCQkJQXNzZXJ0RXF1YWxzKCIjQTgiLCAgYXJnVmFsdWVzWzBdLCB2
YWx1ZXNbMF0pOw0KKwkJCQlBc3NlcnRFcXVhbHMoIiNBOCIsICBhcmdWYWx1ZXNbMV0sIHZhbHVl
c1sxXSk7DQorCQkJCUFzc2VydEVxdWFscygiI0E4IiwgIGFyZ1ZhbHVlc1syXSwgdmFsdWVzWzJd
KTsNCisJCQl9Y2F0Y2ggKEV4Y2VwdGlvbiBlKXsNCisJCQkJRmFpbCAoIlVuZXhwZWN0ZWQgZXhj
ZXB0aW9uIGF0ICNBOCAiICsgZSk7DQorCQkJfQ0KKw0KKwkJCXRyeXsNCisJCQkJSW50MTYgaSA9
IDEwOw0KKwkJCQlvYmplY3RbXSBhcmdWYWx1ZXMgPSBuZXcgb2JqZWN0IFtdIHsiYWFhIiwgaSwg
Inp6eiIsIDUwMH07DQorCQkJCXN0cmluZyBbXSBhcmdOYW1lcyA9IG5ldyBzdHJpbmcgW10geyJm
aXJzdE5hbWUiLCAiSUQifTsNCisJCQkJaW52b2tlTWVtYmVyKGFyZ1ZhbHVlcywgYXJnTmFtZXMp
Ow0KKwkJCQkNCisJCQkJQXNzZXJ0RXF1YWxzKCIjQTkiLCBtZXRob2RJZCwgIm03Iik7DQorCQkJ
CUFzc2VydEVxdWFscygiI0E5IiwgIGFyZ1ZhbHVlc1swXSwgdmFsdWVzWzBdKTsNCisJCQkJQXNz
ZXJ0RXF1YWxzKCIjQTkiLCAgYXJnVmFsdWVzWzFdLCB2YWx1ZXNbMV0pOw0KKwkJCQlBc3NlcnRF
cXVhbHMoIiNBOSIsICBhcmdWYWx1ZXNbMl0sIHZhbHVlc1syXSk7DQorCQkJCUFzc2VydEVxdWFs
cygiI0E5IiwgIGFyZ1ZhbHVlc1szXSwgdmFsdWVzWzNdKTsNCisJCQl9Y2F0Y2ggKEV4Y2VwdGlv
biBlKXsNCisJCQkJRmFpbCAoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIGF0ICNBOSAiICsgZSk7DQor
CQkJfQ0KKw0KKwkJCXRyeXsNCisJCQkJc2hvcnQgcyA9IDUwMDsNCisJCQkJSW50NjQgaSA9IDEw
Ow0KKwkJCQlvYmplY3RbXSBhcmdWYWx1ZXMgPSBuZXcgb2JqZWN0IFtdIHsiYWFhIiwgaSwgInp6
eiIsIHN9Ow0KKwkJCQlzdHJpbmcgW10gYXJnTmFtZXMgPSBuZXcgc3RyaW5nIFtdIHsiZmlyc3RO
YW1lIiwgIklEIn07DQorCQkJCWludm9rZU1lbWJlcihhcmdWYWx1ZXMsIGFyZ05hbWVzKTsNCisJ
CQkJDQorCQkJCUFzc2VydEVxdWFscygiI0ExMCIsIG1ldGhvZElkLCAibTgiKTsNCisJCQkJQXNz
ZXJ0RXF1YWxzKCIjQTEwIiwgIGFyZ1ZhbHVlc1swXSwgdmFsdWVzWzBdKTsNCisJCQkJQXNzZXJ0
RXF1YWxzKCIjQTEwIiwgIGFyZ1ZhbHVlc1sxXSwgdmFsdWVzWzFdKTsNCisJCQkJQXNzZXJ0RXF1
YWxzKCIjQTEwIiwgIGFyZ1ZhbHVlc1syXSwgdmFsdWVzWzJdKTsNCisJCQkJQXNzZXJ0RXF1YWxz
KCIjQTEwIiwgIGFyZ1ZhbHVlc1szXSwgdmFsdWVzWzNdKTsNCisJCQl9Y2F0Y2ggKEV4Y2VwdGlv
biBlKXsNCisJCQkJRmFpbCAoIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIGF0ICNBMTAgIiArIGUpOw0K
KwkJCX0NCisJCQkNCisJCQl0cnl7DQorCQkJCUludDE2IGkgPSAxMDsNCisJCQkJSW50MTYgcyA9
IDUwMDsNCisJCQkJb2JqZWN0W10gYXJnVmFsdWVzID0gbmV3IG9iamVjdCBbXSB7ImFhYSIsIGks
ICJ6enoiLCBzfTsNCisJCQkJc3RyaW5nIFtdIGFyZ05hbWVzID0gbmV3IHN0cmluZyBbXSB7ImZp
cnN0TmFtZSIsICJJRCJ9Ow0KKwkJCQlpbnZva2VNZW1iZXIoYXJnVmFsdWVzLCBhcmdOYW1lcyk7
DQorCQkJCQ0KKwkJCQlBc3NlcnRFcXVhbHMoIiNBMTEiLCBtZXRob2RJZCwgIm03Iik7DQorCQkJ
CUFzc2VydEVxdWFscygiI0ExMSIsICBhcmdWYWx1ZXNbMF0sIHZhbHVlc1swXSk7DQorCQkJCUFz
c2VydEVxdWFscygiI0ExMSIsICBhcmdWYWx1ZXNbMV0sIHZhbHVlc1sxXSk7DQorCQkJCUFzc2Vy
dEVxdWFscygiI0ExMSIsICBhcmdWYWx1ZXNbMl0sIHZhbHVlc1syXSk7DQorCQkJCUFzc2VydEVx
dWFscygiI0ExMSIsICBhcmdWYWx1ZXNbM10sIHZhbHVlc1szXSk7DQorCQkJfWNhdGNoIChFeGNl
cHRpb24gZSl7DQorCQkJCUZhaWwgKCJVbmV4cGVjdGVkIGV4Y2VwdGlvbiBhdCAjQTExICIgKyBl
KTsNCisJCQl9DQorDQorCQkJdHJ5ew0KKwkJCQlvYmplY3RbXSBhcmdWYWx1ZXMgPSBuZXcgb2Jq
ZWN0IFtdIHsiYWFhIiwgMTIsICJiYmIiLCAienp6IiwgMjB9Ow0KKwkJCQlzdHJpbmcgW10gYXJn
TmFtZXMgPSBuZXcgc3RyaW5nIFtdIHsiZmlyc3ROYW1lIiwgIklEIn07DQorCQkJCWludm9rZU1l
bWJlcihhcmdWYWx1ZXMsIGFyZ05hbWVzKTsNCisJCQl9Y2F0Y2ggKEV4Y2VwdGlvbiBlKXsNCisJ
CQkJQXNzZXJ0RXF1YWxzKCIjQTEyIiwgdHlwZW9mKEFtYmlndW91c01hdGNoRXhjZXB0aW9uKSwg
ZS5HZXRUeXBlKCkpOw0KKwkJCX0NCisNCisJCQl0cnl7DQorCQkJCW9iamVjdFtdIGFyZ1ZhbHVl
cyA9IG5ldyBvYmplY3QgW10geyJhYWEiLCAxMiwgImJiYiIsICJ6enoifTsNCisJCQkJc3RyaW5n
IFtdIGFyZ05hbWVzID0gbmV3IHN0cmluZyBbXSB7ImZpcnN0TmFtZSIsICJJRCJ9Ow0KKwkJCQlp
bnZva2VNZW1iZXIoYXJnVmFsdWVzLCBhcmdOYW1lcyk7DQorCQkJfWNhdGNoIChFeGNlcHRpb24g
ZSl7DQorCQkJCUFzc2VydEVxdWFscygiI0ExMyIsIHR5cGVvZihNaXNzaW5nTWV0aG9kRXhjZXB0
aW9uKSwgZS5HZXRUeXBlKCkpOw0KKwkJCX0NCisJCQkNCisNCisJCQl0cnl7DQorCQkJCW9iamVj
dFtdIGFyZ1ZhbHVlcyA9IG5ldyBvYmplY3QgW10geyJhYWEiLCAxMiwgMjAsICJiYmIifTsNCisJ
CQkJc3RyaW5nIFtdIGFyZ05hbWVzID0gbmV3IHN0cmluZyBbXSB7ImZpcnN0TmFtZSIsICJJRCJ9
Ow0KKwkJCQlpbnZva2VNZW1iZXIoYXJnVmFsdWVzLCBhcmdOYW1lcyk7DQorCQkJfWNhdGNoIChF
eGNlcHRpb24gZSl7DQorCQkJCUFzc2VydEVxdWFscygiI0ExNCIsIHR5cGVvZihNaXNzaW5nTWV0
aG9kRXhjZXB0aW9uKSwgZS5HZXRUeXBlKCkpOw0KKwkJCX0NCisJCX0NCiAJfQ0KKw0KKwlwdWJs
aWMgY2xhc3MgVHlwZUNsYXNzIA0KKwl7DQorCQlwdWJsaWMgc3RhdGljIHZvaWQgY2hlY2tNZXRo
b2Qoc3RyaW5nIGxhc3ROYW1lLCBzdHJpbmcgZmlyc3ROYW1lKQ0KKwkJew0KKwkJCVR5cGVUZXN0
Lm1ldGhvZElkID0gIm0xIjsNCisJCQlUeXBlVGVzdC52YWx1ZXNbMF0gPSBmaXJzdE5hbWU7DQor
CQkJVHlwZVRlc3QudmFsdWVzWzFdID0gbGFzdE5hbWU7DQorCQl9DQorDQorCQlwdWJsaWMgc3Rh
dGljIHZvaWQgY2hlY2tNZXRob2Qoc3RyaW5nIGxhc3ROYW1lLCBpbnQgZmlyc3ROYW1lKQ0KKwkJ
ew0KKwkJCVR5cGVUZXN0Lm1ldGhvZElkID0gIm0yIjsNCisJCX0NCisNCisJCXB1YmxpYyBzdGF0
aWMgdm9pZCBjaGVja01ldGhvZChpbnQgZmlyc3ROYW1lLCBzdHJpbmcgbGFzdE5hbWUpDQorCQl7
DQorCQkJVHlwZVRlc3QubWV0aG9kSWQgPSAibTMiOw0KKwkJfQ0KKw0KKwkJcHVibGljIHN0YXRp
YyB2b2lkIGNoZWNrTWV0aG9kKHN0cmluZyBsYXN0TmFtZSwgZG91YmxlIElELCBzdHJpbmcgZmly
c3ROYW1lKQ0KKwkJew0KKwkJCVR5cGVUZXN0Lm1ldGhvZElkID0gIm00IjsNCisJCQlUeXBlVGVz
dC52YWx1ZXNbMF0gPSBmaXJzdE5hbWU7DQorCQkJVHlwZVRlc3QudmFsdWVzWzFdID0gbGFzdE5h
bWU7DQorCQkJVHlwZVRlc3QudmFsdWVzWzJdID0gSUQ7DQorCQl9DQorDQorCQlwdWJsaWMgc3Rh
dGljIHZvaWQgY2hlY2tNZXRob2QobG9uZyBJRCwgc3RyaW5nIGxhc3ROYW1lLCBzdHJpbmcgZmly
c3ROYW1lKQ0KKwkJew0KKwkJCVR5cGVUZXN0Lm1ldGhvZElkID0gIm01IjsNCisJCQlUeXBlVGVz
dC52YWx1ZXNbMF0gPSBmaXJzdE5hbWU7DQorCQkJVHlwZVRlc3QudmFsdWVzWzFdID0gbGFzdE5h
bWU7DQorCQkJVHlwZVRlc3QudmFsdWVzWzJdID0gSUQ7DQorCQl9DQorCQkNCisJCXB1YmxpYyBz
dGF0aWMgdm9pZCBjaGVja01ldGhvZChJbnQ2NCBJRCwgc3RyaW5nIGxhc3ROYW1lLCBzdHJpbmcg
Zmlyc3ROYW1lLCAgSW50NjQgc2FsKQ0KKwkJew0KKwkJCVR5cGVUZXN0Lm1ldGhvZElkID0gIm02
IjsNCisJCQlUeXBlVGVzdC52YWx1ZXNbMF0gPSBmaXJzdE5hbWU7DQorCQkJVHlwZVRlc3QudmFs
dWVzWzFdID0gSUQ7DQorCQkJVHlwZVRlc3QudmFsdWVzWzJdID0gbGFzdE5hbWU7DQorCQkJVHlw
ZVRlc3QudmFsdWVzWzNdID0gc2FsOw0KKwkJfQ0KKw0KKwkJcHVibGljIHN0YXRpYyB2b2lkIGNo
ZWNrTWV0aG9kKEludDMyIElELCBzdHJpbmcgbGFzdE5hbWUsIHN0cmluZyBmaXJzdE5hbWUsIGlu
dCBzYWwpDQorCQl7DQorCQkJVHlwZVRlc3QubWV0aG9kSWQgPSAibTciOw0KKwkJCVR5cGVUZXN0
LnZhbHVlc1swXSA9IGZpcnN0TmFtZTsNCisJCQlUeXBlVGVzdC52YWx1ZXNbMV0gPSBJRDsNCisJ
CQlUeXBlVGVzdC52YWx1ZXNbMl0gPSBsYXN0TmFtZTsNCisJCQlUeXBlVGVzdC52YWx1ZXNbM10g
PSBzYWw7DQorCQl9DQorDQorCQlwdWJsaWMgc3RhdGljIHZvaWQgY2hlY2tNZXRob2QoSW50NjQg
SUQsIHN0cmluZyBsYXN0TmFtZSwgSW50MzIgc2FsLCBzdHJpbmcgZmlyc3ROYW1lKQ0KKwkJew0K
KwkJCVR5cGVUZXN0Lm1ldGhvZElkID0gIm04IjsNCisJCQlUeXBlVGVzdC52YWx1ZXNbMF0gPSBm
aXJzdE5hbWU7DQorCQkJVHlwZVRlc3QudmFsdWVzWzFdID0gSUQ7DQorCQkJVHlwZVRlc3QudmFs
dWVzWzJdID0gbGFzdE5hbWU7DQorCQkJVHlwZVRlc3QudmFsdWVzWzNdID0gc2FsOw0KKwkJfQ0K
Kw0KKwkJcHVibGljIHN0YXRpYyB2b2lkIGNoZWNrTWV0aG9kKEludDMyIElELCBzdHJpbmcgbGFz
dE5hbWUsIHN0cmluZyBmaXJzdE5hbWUsIGxvbmcgc2FsKQ0KKwkJew0KKwkJCVR5cGVUZXN0Lm1l
dGhvZElkID0gIm05IjsNCisJCQlUeXBlVGVzdC52YWx1ZXNbMF0gPSBmaXJzdE5hbWU7DQorCQkJ
VHlwZVRlc3QudmFsdWVzWzFdID0gSUQ7DQorCQkJVHlwZVRlc3QudmFsdWVzWzJdID0gbGFzdE5h
bWU7DQorCQkJVHlwZVRlc3QudmFsdWVzWzNdID0gc2FsOw0KKwkJfQ0KKw0KKw0KKwkJcHVibGlj
IHN0YXRpYyB2b2lkIGNoZWNrTWV0aG9kKEludDMyIElELCBzdHJpbmcgdmFsLCBzdHJpbmcgbGFz
dE5hbWUsIHN0cmluZyBmaXJzdE5hbWUsIGxvbmcgc2FsKQ0KKwkJew0KKwkJCVR5cGVUZXN0Lm1l
dGhvZElkID0gIm05IjsNCisJCX0NCisNCisJCXB1YmxpYyBzdGF0aWMgdm9pZCBjaGVja01ldGhv
ZChJbnQzMiBJRCwgc3RyaW5nIHZhbCwgc3RyaW5nIGxhc3ROYW1lLCBsb25nIHNhbCwgc3RyaW5n
IGZpcnN0TmFtZSkNCisJCXsNCisJCQlUeXBlVGVzdC5tZXRob2RJZCA9ICJtOSI7DQorCQl9DQor
DQorDQorCX0NCisNCiB9DQogDQo=

--=__PartAEF04978.0__=--