[Mono-list] Enhancements to type-reflector

Steinar Herland steinar.herland@gecko.no
Mon, 2 Sep 2002 16:07:52 +0200


This is a multi-part message in MIME format.

------_=_NextPart_001_01C2528A.2076BC45
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

I made some changes to the
mcs/tools/type-reflector/CSharpTypeDisplayer.cs (only tested using
MS.NET)

- Does this also compile / work on mono?
- Sorry - I haven't figured out (yet) how to do a diff against the cvs.
If this change is ok, can someone please commit the changes I made?

After the changes type-reflector.exe prints more complete attribute
constructors:

$ type-reflector.exe --output=3Dc# DataColumn

returns:

[System.ComponentModel.DefaultPropertyAttribute("ColumnName")]
[System.ComponentModel.ToolboxItemAttribute("")]
[System.Reflection.DefaultMemberAttribute("Item")]
[System.ComponentModel.DesignTimeVisibleAttribute]
[System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.Data.Design
.DataColumnEditor", "System.Drawing.Design.UITypeEditor")]
[System.ComponentModel.DesignerAttribute("System.Windows.Forms.Design.Co
mponentDocumentDesigner", "System.ComponentModel.Design.IRootDesigner")]
[System.ComponentModel.DesignerCategoryAttribute("Component")]
[System.ComponentModel.TypeConverterAttribute("System.ComponentModel.Com
ponentConverter")]
class      System.Data.DataColumn
  {
  }
.
.
.


Steinar


------_=_NextPart_001_01C2528A.2076BC45
Content-Type: application/octet-stream;
	name="CSharpTypeDisplayer.cs"
Content-Transfer-Encoding: base64
Content-Description: CSharpTypeDisplayer.cs
Content-Disposition: attachment;
	filename="CSharpTypeDisplayer.cs"

Ly8KLy8gQ1NoYXJwVHlwZURpc3BsYXllci5jczogRGlzcGxheXMgdHlwZSBpbmZvcm1hdGlvbiBh
cyBhIHRyZWUKLy8KLy8gQXV0aG9yOiBKb25hdGhhbiBQcnlvciAoam9ucHJ5b3JAdnQuZWR1KQov
LyAgICAgICAgIFN0ZWluYXIgSGVybGFuZCAoc2hAZ2Vja28ubm8pCi8vCi8vIChDKSAyMDAyIEpv
bmF0aGFuIFByeW9yCi8vCi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg
Y2hhcmdlLCB0byBhbnkgICAgICAgICAgIAovLyBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkICAgICAgICAKLy8gZG9jdW1lbnRhdGlvbiBmaWxl
cyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSAgICAgICAgICAgCi8vIFNvZnR3YXJl
IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gICAgIAov
LyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICAgICAg
ICAgICAgICAKLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9m
IHRoZSBTb2Z0d2FyZSwgICAgCi8vIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBT
b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gICAgIAovLyBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAKLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAovLyBUaGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAgICAgICAg
ICAKLy8gc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0
aW9ucyAgICAgICAgCi8vIG9mIHRoZSBTb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9W
SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSAgICAgIAovLyBLSU5ELCBFWFBS
RVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gICAgICAgICAKLy8g
VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBICAgICAgICAg
ICAgICAgCi8vIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF
VkVOVCBTSEFMTCAgICAgIAovLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM
SUFCTEUgRk9SIEFOWSBDTEFJTSwgICAgICAKLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCAgCi8vIFRPUlQgT1IgT1RIRVJXSVNF
LCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OICAgICAgIAovLyBXSVRIIFRI
RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K
Ly8KCnVzaW5nIFN5c3RlbTsKdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zOwp1c2luZyBTeXN0ZW0u
SU87CnVzaW5nIFN5c3RlbS5EaWFnbm9zdGljczsKdXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CnVz
aW5nIFN5c3RlbS5UZXh0Owp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7Cgpu
YW1lc3BhY2UgTW9uby5UeXBlUmVmbGVjdG9yCnsKCXB1YmxpYyBjbGFzcyBDU2hhcnBUeXBlRGlz
cGxheWVyIDogSW5kZW50aW5nVHlwZURpc3BsYXllciB7CgoJCXB1YmxpYyBDU2hhcnBUeXBlRGlz
cGxheWVyIChUZXh0V3JpdGVyIHdyaXRlcikKCQkJOiBiYXNlICh3cml0ZXIpCgkJewoJCX0KCgkJ
cHJpdmF0ZSB2b2lkIFByaW50Q3VzdG9tQXR0cmlidXRlcyAoTWVtYmVySW5mbyBtKQoJCXsKCQkJ
b2JqZWN0W10gYXR0cnMgPSBtLkdldEN1c3RvbUF0dHJpYnV0ZXMgKHRydWUpOwoJCQlpZiAoYXR0
cnMuTGVuZ3RoID4gMCkKCQkJCWZvcmVhY2ggKG9iamVjdCBhIGluIGF0dHJzKXsKCQkJCQlTeXN0
ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0IFBhcmFtTGlzdCA9IG5ldyBTeXN0ZW0uQ29sbGVjdGlv
bnMuQXJyYXlMaXN0KCk7CgkJCQkJaWYoYSBpcyBTeXN0ZW0uUmVmbGVjdGlvbi5EZWZhdWx0TWVt
YmVyQXR0cmlidXRlKXsKCQkJCQkJU3lzdGVtLlJlZmxlY3Rpb24uRGVmYXVsdE1lbWJlckF0dHJp
YnV0ZSBjYSA9IChTeXN0ZW0uUmVmbGVjdGlvbi5EZWZhdWx0TWVtYmVyQXR0cmlidXRlKWE7CgkJ
CQkJCVBhcmFtTGlzdC5BZGQoIlwiIiArIGNhLk1lbWJlck5hbWUgKyAiXCIiKTsKCQkJCQl9IGVs
c2UgaWYoYSBpcyBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuVG9vbGJveEl0ZW1BdHRyaWJ1dGUpewoJ
CQkJCQlTeXN0ZW0uQ29tcG9uZW50TW9kZWwuVG9vbGJveEl0ZW1BdHRyaWJ1dGUgY2EgPSAoU3lz
dGVtLkNvbXBvbmVudE1vZGVsLlRvb2xib3hJdGVtQXR0cmlidXRlKWE7CgkJCQkJCVBhcmFtTGlz
dC5BZGQoIlwiIiArIGNhLlRvb2xib3hJdGVtVHlwZU5hbWUgKyAiXCIiKTsKCQkJCQl9IGVsc2Ug
aWYoYSBpcyBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVsdFByb3BlcnR5QXR0cmlidXRlKXsK
CQkJCQkJU3lzdGVtLkNvbXBvbmVudE1vZGVsLkRlZmF1bHRQcm9wZXJ0eUF0dHJpYnV0ZSBjYSA9
IChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVmYXVsdFByb3BlcnR5QXR0cmlidXRlKWE7CgkJCQkJ
CVBhcmFtTGlzdC5BZGQoIlwiIiArIGNhLk5hbWUgKyAiXCIiKTsKCQkJCQl9IGVsc2UgaWYoYSBp
cyBTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduZXJBdHRyaWJ1dGUpewoJCQkJCQlTeXN0ZW0u
Q29tcG9uZW50TW9kZWwuRGVzaWduZXJBdHRyaWJ1dGUgY2EgPSAoU3lzdGVtLkNvbXBvbmVudE1v
ZGVsLkRlc2lnbmVyQXR0cmlidXRlKWE7CgkJCQkJCVBhcmFtTGlzdC5BZGQoIlwiIiArIGNhLkRl
c2lnbmVyVHlwZU5hbWUuU3BsaXQoJywnKVswXSArICJcIiIpOwoJCQkJCQlQYXJhbUxpc3QuQWRk
KCJcIiIgKyBjYS5EZXNpZ25lckJhc2VUeXBlTmFtZS5TcGxpdCgnLCcpWzBdICsgIlwiIik7CgkJ
CQkJfSBlbHNlIGlmKGEgaXMgU3lzdGVtLkNvbXBvbmVudE1vZGVsLkVkaXRvckF0dHJpYnV0ZSl7
CgkJCQkJCVN5c3RlbS5Db21wb25lbnRNb2RlbC5FZGl0b3JBdHRyaWJ1dGUgY2EgPSAoU3lzdGVt
LkNvbXBvbmVudE1vZGVsLkVkaXRvckF0dHJpYnV0ZSlhOwoJCQkJCQlQYXJhbUxpc3QuQWRkKCJc
IiIgKyBjYS5FZGl0b3JUeXBlTmFtZS5TcGxpdCgnLCcpWzBdICsgIlwiIik7CgkJCQkJCVBhcmFt
TGlzdC5BZGQoIlwiIiArIGNhLkVkaXRvckJhc2VUeXBlTmFtZS5TcGxpdCgnLCcpWzBdICsgIlwi
Iik7CgkJCQkJfSBlbHNlIGlmKGEgaXMgU3lzdGVtLkNvbXBvbmVudE1vZGVsLkRlc2lnbmVyQ2F0
ZWdvcnlBdHRyaWJ1dGUpewoJCQkJCQlTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduZXJDYXRl
Z29yeUF0dHJpYnV0ZSBjYSA9IChTeXN0ZW0uQ29tcG9uZW50TW9kZWwuRGVzaWduZXJDYXRlZ29y
eUF0dHJpYnV0ZSlhOwoJCQkJCQlQYXJhbUxpc3QuQWRkKCJcIiIgKyBjYS5DYXRlZ29yeSArICJc
IiIpOwoJCQkJCX0gZWxzZSBpZihhIGlzIFN5c3RlbS5Db21wb25lbnRNb2RlbC5UeXBlQ29udmVy
dGVyQXR0cmlidXRlKXsKCQkJCQkJU3lzdGVtLkNvbXBvbmVudE1vZGVsLlR5cGVDb252ZXJ0ZXJB
dHRyaWJ1dGUgY2EgPSAoU3lzdGVtLkNvbXBvbmVudE1vZGVsLlR5cGVDb252ZXJ0ZXJBdHRyaWJ1
dGUpYTsKCQkJCQkJUGFyYW1MaXN0LkFkZCgiXCIiICsgY2EuQ29udmVydGVyVHlwZU5hbWUuU3Bs
aXQoJywnKVswXSArICJcIiIpOwoJCQkJCX0KCQkJCQlpZihQYXJhbUxpc3QuQ291bnQgPiAwKXsK
CQkJCQkJLy9UT0RPOiBTaG91bGQgdXNlIGEgU3RyaW5nQnVpbGRlciB0byBlbmhhbmNlIHBlcmZv
cm1hbmNlLgoJCQkJCQlzdHJpbmcgc1BhcmFtcyA9ICIiOwoJCQkJCQlmb3JlYWNoKHN0cmluZyBz
IGluIFBhcmFtTGlzdCl7CgkJCQkJCQlpZihzUGFyYW1zLkxlbmd0aCA+IDApCgkJCQkJCQkJc1Bh
cmFtcyArPSAiLCAiOwoJCQkJCQkJc1BhcmFtcyArPSBzOwoJCQkJCQl9CgkJCQkJCXNQYXJhbXMu
VHJpbUVuZCgnLCcsICcgJyk7CgkJCQkJCVdyaXRlTGluZShzdHJpbmcuRm9ybWF0KCJbezB9KHsx
fSldIiwgYSwgc1BhcmFtcykpOwoJCQkJCX0gZWxzZQoJCQkJCQlXcml0ZUxpbmUgKCJbezB9XSIs
IGEpOwoJCQkJfQoJCX0KCgkJcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgT25UeXBlQm9keSAoVHlw
ZSB0LCBCaW5kaW5nRmxhZ3MgYmYpCgkJewoJCQl1c2luZyAoSW5kZW50ZXIgbjEgPSBHZXRJbmRl
bnRlcigpKSB7CgkJCQlXcml0ZUxpbmUgKCJ7eyIpOwoJCQl9CgoJCQliYXNlLk9uVHlwZUJvZHkg
KHQsIGJmKTsKCgkJCXVzaW5nIChJbmRlbnRlciBuMiA9IEdldEluZGVudGVyKCkpIHsKCQkJCVdy
aXRlTGluZSAoIn19Iik7CgkJCQlXcml0ZUxpbmUgKCk7CgkJCX0KCQl9CgoJCXByb3RlY3RlZCBv
dmVycmlkZSB2b2lkIE9uSW5kZW50ZWRUeXBlIChUeXBlRXZlbnRBcmdzIGUpCgkJewoJCQlQcmlu
dEN1c3RvbUF0dHJpYnV0ZXMgKGUuVHlwZSk7CgkJCVdyaXRlTGluZSAoR2V0VHlwZUhlYWRlciAo
ZS5UeXBlKSk7CgkJfQoKCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBPbkluZGVudGVkQmFzZVR5
cGUgKEJhc2VUeXBlRXZlbnRBcmdzIGUpCgkJewoJCQlXcml0ZUxpbmUgKCIvLyBCYXNlIFR5cGUi
KTsKCQkJV3JpdGVMaW5lICgiICA6IHswfSIsIGUuQmFzZVR5cGUpOwoJCX0KCgkJcHJvdGVjdGVk
IG92ZXJyaWRlIHZvaWQgT25JbmRlbnRlZEludGVyZmFjZXMgKEludGVyZmFjZXNFdmVudEFyZ3Mg
ZSkKCQl7IAoJCQlpZiAoZS5JbnRlcmZhY2VzLkxlbmd0aCAhPSAwKSB7CgkJCQlXcml0ZUxpbmUg
KCk7CgkJCQlXcml0ZUxpbmUgKCIvLyBJbXBsZW1lbnRlZCBJbnRlcmZhY2VzIik7CgkJCQlib29s
IG5lZWRDb21tYSA9IHRydWU7CgkJCQkvLyBXZSBvbmx5IHdhbnQgb25lIGA6JywgYW5kIE9uSW5k
ZW50ZWRCYXNlVHlwZSB3b3VsZCBwcmludCBvbmUuCgkJCQlpZiAoIWJhc2UuU2hvd0Jhc2UpIHsK
CQkJCQlXcml0ZSAoIiAgOiIpOwoJCQkJCW5lZWRDb21tYSA9IGZhbHNlOwoJCQkJfQoJCQkJdXNp
bmcgKEluZGVudGVyIG4xID0gR2V0SW5kZW50ZXIoKSkgewoJCQkJCWZvcmVhY2ggKFR5cGUgaSBp
biBlLkludGVyZmFjZXMpIHsKCQkJCQkJaWYgKG5lZWRDb21tYSkKCQkJCQkJCVdyaXRlTGluZSAo
IiwgezB9IiwgaSk7CgkJCQkJCWVsc2UgewoJCQkJCQkJV3JpdGVMaW5lICgiezB9IiwgaSk7CgkJ
CQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgoJCXByb3RlY3RlZCB2b2lkIFByaW50RmllbGRJ
bmZvIChGaWVsZEluZm8gZikKCQl7CgkJCVByaW50Q3VzdG9tQXR0cmlidXRlcyAoZik7CgoJCQlp
ZiAoIWYuRGVjbGFyaW5nVHlwZS5Jc0VudW0gfHwgZi5Jc1NwZWNpYWxOYW1lKSB7CgkJCQlpZiAo
Zi5Jc1B1YmxpYykKCQkJCQlXcml0ZSAoInB1YmxpYyAiKTsKCQkJCWlmIChmLklzUHJpdmF0ZSkK
CQkJCQlXcml0ZSAoInByaXZhdGUgIik7CgkJCQlpZiAoZi5Jc0Fzc2VtYmx5KQoJCQkJCVdyaXRl
ICgiaW50ZXJuYWwgIik7CgkJCQlpZiAoZi5Jc0ZhbWlseSkKCQkJCQlXcml0ZSAoInByb3RlY3Rl
ZCAiKTsKCQkJCWlmIChmLklzTGl0ZXJhbCkKCQkJCQlXcml0ZSAoImNvbnN0ICIpOwoJCQkJZWxz
ZSBpZiAoZi5Jc1N0YXRpYykKCQkJCQlXcml0ZSAoInN0YXRpYyAiKTsKCgkJCQlXcml0ZSAoInsw
fSAiLCBmLkZpZWxkVHlwZSk7CgkJCX0KCgkJCVdyaXRlICgiezB9ICIsIGYuTmFtZSk7CgkJCWlm
ICgoKGYuQXR0cmlidXRlcyAmIEZpZWxkQXR0cmlidXRlcy5IYXNEZWZhdWx0KSAhPSAwKSB8fCBm
LklzU3RhdGljKSB7CgkJCQlXcml0ZSAoIj0gezB9IiwgRmllbGRWYWx1ZSAoZikpOwoJCQl9CgoJ
CQlpZiAoIWYuRGVjbGFyaW5nVHlwZS5Jc0VudW0gfHwgZi5Jc1NwZWNpYWxOYW1lKQoJCQkJV3Jp
dGVMaW5lICgiOyIpOwoJCQllbHNlCgkJCQlXcml0ZUxpbmUgKCIsIik7CgkJfQoKCQlwcm90ZWN0
ZWQgb3ZlcnJpZGUgdm9pZCBPbkluZGVudGVkRmllbGRzIChGaWVsZHNFdmVudEFyZ3MgZSkKCQl7
CgkJCVdyaXRlTGluZSAoIi8vIik7CgkJCVdyaXRlTGluZSAoIi8vIEZpZWxkcyIpOwoJCQlXcml0
ZUxpbmUgKCIvLyIpOwoJCQlmb3JlYWNoIChGaWVsZEluZm8gZiBpbiBlLkZpZWxkcykgewoJCQkJ
UHJpbnRGaWVsZEluZm8gKGYpOwoJCQkJV3JpdGVMaW5lICgpOwoJCQl9CgkJfQoKCQlwcm90ZWN0
ZWQgdm9pZCBQcmludFByb3BlcnR5SW5mbyAoUHJvcGVydHlJbmZvIHApCgkJewoJCQlQcmludEN1
c3RvbUF0dHJpYnV0ZXMgKHApOwoKCQkJV3JpdGUgKCJ7MH0gezF9IHt7ICIsIHAuUHJvcGVydHlU
eXBlLCBwLk5hbWUpOwoJCQlpZiAocC5DYW5SZWFkKQoJCQkJV3JpdGUgKCJnZXQ7ICIpOwoJCQlp
ZiAocC5DYW5Xcml0ZSkKCQkJCVdyaXRlICgic2V0OyAiKTsKCQkJV3JpdGVMaW5lICgifX0iKTsK
CQl9CgoJCXByb3RlY3RlZCBvdmVycmlkZSB2b2lkIE9uSW5kZW50ZWRQcm9wZXJ0aWVzIChQcm9w
ZXJ0aWVzRXZlbnRBcmdzIGUpCgkJewoJCQlXcml0ZUxpbmUgKCIvLyIpOwoJCQlXcml0ZUxpbmUg
KCIvLyBQcm9wZXJ0aWVzIik7CgkJCVdyaXRlTGluZSAoIi8vIik7CgkJCWZvcmVhY2ggKFByb3Bl
cnR5SW5mbyBwIGluIGUuUHJvcGVydGllcykgewoJCQkJUHJpbnRQcm9wZXJ0eUluZm8gKHApOwoJ
CQkJV3JpdGVMaW5lICgpOwoJCQl9CgkJfQoKCQlwcm90ZWN0ZWQgdm9pZCBQcmludEV2ZW50SW5m
byAoRXZlbnRJbmZvIGkpCgkJewoJCQlpZiAoaS5Jc011bHRpY2FzdCkKCQkJCVdyaXRlICgiZXZl
bnQgIik7CgkJCVdyaXRlTGluZSAoInswfSB7MX07IiwgaS5FdmVudEhhbmRsZXJUeXBlLCBpLk5h
bWUpOwoJCX0KCgkJcHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgT25JbmRlbnRlZEV2ZW50cyAoRXZl
bnRzRXZlbnRBcmdzIGUpCgkJewoJCQlXcml0ZUxpbmUgKCIvLyIpOwoJCQlXcml0ZUxpbmUgKCIv
LyBFdmVudHMiKTsKCQkJV3JpdGVMaW5lICgiLy8iKTsKCQkJZm9yZWFjaCAoRXZlbnRJbmZvIGkg
aW4gZS5FdmVudHMpIHsKCQkJCVByaW50RXZlbnRJbmZvIChpKTsKCQkJCVdyaXRlTGluZSAoKTsK
CQkJfQoJCX0KCgkJcHJpdmF0ZSB2b2lkIFByaW50TWV0aG9kUXVhbGlmaWVycyAoTWV0aG9kQmFz
ZSBtKQoJCXsKCQkJaWYgKG0uSXNQdWJsaWMpCgkJCQlXcml0ZSAoInB1YmxpYyAiKTsKCQkJaWYg
KG0uSXNQcml2YXRlKQoJCQkJV3JpdGUgKCJwcml2YXRlICIpOwoJCQlpZiAobS5Jc1N0YXRpYykK
CQkJCVdyaXRlICgic3RhdGljICIpOwoJCQlpZiAobS5Jc1ZpcnR1YWwpCgkJCQlXcml0ZSAoInZp
cnR1YWwgIik7CgkJCWlmIChtLklzQWJzdHJhY3QpCgkJCQlXcml0ZSAoImFic3RyYWN0ICIpOwoJ
CQlpZiAobS5Jc0Fzc2VtYmx5KQoJCQkJV3JpdGUgKCJpbnRlcm5hbCAiKTsKCQkJaWYgKG0uSXNG
YW1pbHkpCgkJCQlXcml0ZSAoInByb3RlY3RlZCAiKTsKCQkJaWYgKG0uSXNGaW5hbCkKCQkJCVdy
aXRlICgic2VhbGVkICIpOwoJCX0KCgkJcHJpdmF0ZSB2b2lkIFByaW50TWV0aG9kQXJncyAoTWV0
aG9kQmFzZSBtKQoJCXsKCQkJV3JpdGUgKCIoIik7CgkJCVBhcmFtZXRlckluZm9bXSBwYXJtcyA9
IG0uR2V0UGFyYW1ldGVycyAoKTsKCQkJaWYgKHBhcm1zLkxlbmd0aCAhPSAwKSB7CgkJCQlpbnQg
Y3VyID0gMDsKCQkJCWZvcmVhY2ggKFBhcmFtZXRlckluZm8gcGkgaW4gcGFybXMpIHsKCQkJCQlp
ZiAocGkuSXNPdXQpCgkJCQkJCVdyaXRlICgib3V0ICIpOwoJCQkJCVdyaXRlICgiezB9IHsxfSIs
IHBpLlBhcmFtZXRlclR5cGUsIHBpLk5hbWUpOwoJCQkJCWlmIChjdXIrKyAhPSAocGFybXMuTGVu
Z3RoLTEpKQoJCQkJCQlXcml0ZSAoIiwiKTsKCQkJCX0KCQkJfQoJCQlXcml0ZUxpbmUgKCIpOyIp
OwoJCX0KCgkJcHJvdGVjdGVkIHZvaWQgUHJpbnRDb25zdHJ1Y3RvckluZm8gKENvbnN0cnVjdG9y
SW5mbyBjKQoJCXsKCQkJaWYgKFNob3dNb25vQnJva2VuKSB7CgkJCQlQcmludEN1c3RvbUF0dHJp
YnV0ZXMgKGMpOwoJCQl9CgkJCVByaW50TWV0aG9kUXVhbGlmaWVycyAoYyk7CgoJCQlXcml0ZSAo
InswfSAiLCBjLkRlY2xhcmluZ1R5cGUuTmFtZSk7CgkJCVByaW50TWV0aG9kQXJncyAoYyk7CgkJ
fQoKCQlwcm90ZWN0ZWQgb3ZlcnJpZGUgdm9pZCBPbkluZGVudGVkQ29uc3RydWN0b3JzIChDb25z
dHJ1Y3RvcnNFdmVudEFyZ3MgZSkKCQl7CgkJCVdyaXRlTGluZSAoIi8vIik7CgkJCVdyaXRlTGlu
ZSAoIi8vIENvbnN0cnVjdG9ycyIpOwoJCQlXcml0ZUxpbmUgKCIvLyIpOwoJCQlmb3JlYWNoIChD
b25zdHJ1Y3RvckluZm8gYyBpbiBlLkNvbnN0cnVjdG9ycykgewoJCQkJUHJpbnRDb25zdHJ1Y3Rv
ckluZm8gKGMpOwoJCQkJV3JpdGVMaW5lICgpOwoJCQl9CgkJfQoKCQlwcm90ZWN0ZWQgdm9pZCBQ
cmludE1ldGhvZEluZm8gKE1ldGhvZEluZm8gbSkKCQl7CgkJCVByaW50Q3VzdG9tQXR0cmlidXRl
cyAobSk7CgkJCVByaW50TWV0aG9kUXVhbGlmaWVycyAobSk7CgoJCQlXcml0ZSAoInswfSB7MX0g
IiwgbS5SZXR1cm5UeXBlLCBtLk5hbWUpOwoJCQlQcmludE1ldGhvZEFyZ3MgKG0pOwoJCX0KCgkJ
cHJvdGVjdGVkIG92ZXJyaWRlIHZvaWQgT25JbmRlbnRlZE1ldGhvZHMgKE1ldGhvZHNFdmVudEFy
Z3MgZSkKCQl7CgkJCVdyaXRlTGluZSAoIi8vIik7CgkJCVdyaXRlTGluZSAoIi8vIE1ldGhvZHMi
KTsKCQkJV3JpdGVMaW5lICgiLy8iKTsKCQkJZm9yZWFjaCAoTWV0aG9kSW5mbyBtIGluIGUuTWV0
aG9kcykgewoJCQkJaWYgKChtLkF0dHJpYnV0ZXMgJiBNZXRob2RBdHRyaWJ1dGVzLlNwZWNpYWxO
YW1lKSA9PSAwKSB7CgkJCQkJUHJpbnRNZXRob2RJbmZvIChtKTsKCQkJCQlXcml0ZUxpbmUgKCk7
CgkJCQl9CgkJCX0KCQl9Cgl9Cn0KCg==

------_=_NextPart_001_01C2528A.2076BC45--