[Bf-committers] Patch to clean up persptoetsen in toets.c

Tom Musgrove bf-committers@blender.org
Thu, 27 May 2004 04:16:48 +0000


This is a multi-part message in MIME format.

------=_NextPart_000_4987_31b1_256a
Content-Type: text/plain; format=flowed

Okay this is a patch to clean up persptoetsen of toets.c,

I've made the functions obvious about what they do (with the exception of 
the PAD0 related functions, which still need to be seperated out.), 
eliminated code duplication, etc.

I've tested it, and as far as I can tell all of the functions are working 
the same as before.

Tom M.
LetterRip

_________________________________________________________________
MSN Toolbar provides one-click access to Hotmail from any Web page – FREE 
download! http://toolbar.msn.click-url.com/go/onm00200413ave/direct/01/

------=_NextPart_000_4987_31b1_256a
Content-Type: application/octet-stream; name="toets.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="toets.patch"

SW5kZXg6IHNvdXJjZS9ibGVuZGVyL3NyYy90b2V0cy5jDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2c3Jvb3QvYmYtYmxlbmRlci9i
bGVuZGVyL3NvdXJjZS9ibGVuZGVyL3NyYy90b2V0cy5jLHYNCnJldHJpZXZp
bmcgcmV2aXNpb24gMS4yNw0KZGlmZiAtdSAtcjEuMjcgdG9ldHMuYw0KLS0t
IHNvdXJjZS9ibGVuZGVyL3NyYy90b2V0cy5jCTIwIEFwciAyMDA0IDIyOjAw
OjMzIC0wMDAwCTEuMjcNCisrKyBzb3VyY2UvYmxlbmRlci9zcmMvdG9ldHMu
YwkyNyBNYXkgMjAwNCAwNDowNToyOSAtMDAwMA0KQEAgLTI0OSwxMzMgKzI0
OSwyOTAgQEANCiB2b2lkIHBlcnNwdG9ldHNlbih1bnNpZ25lZCBzaG9ydCBl
dmVudCkNCiB7DQogCXN0YXRpYyBPYmplY3QgKm9sZGNhbWVyYT0wOw0KLQlm
bG9hdCBwaGksIHNpLCBxMVs0XSwgdmVjWzNdOw0KKwlmbG9hdCBwaGksIHNp
LCBjaSwgcTFbNF0sIHZlY1szXTsNCiAJc3RhdGljIGludCBwZXJzcG89MTsN
CisNCisJZW51bSB7TEVGVCwgUklHSFQsIFVQLCBET1dOfTsNCisJLy9WSUVX
X0ZVTkNUSU9OUw0KKw0KIAkNCi0JaWYoZXZlbnQ9PVBBREVOVEVSKSB7DQot
CQlpZiAoRy5xdWFsID09IExSX1NISUZUS0VZKSB7DQotCQkJdmlldzNkX3Nl
dF8xX3RvXzFfdmlld2JvcmRlcihHLnZkKTsNCisJLy9SZWRyYXcNCisJdm9p
ZCByZWRyYXdfc2NyZWVuKCkgew0KKwkJY291bnRhbGwoKTsNCisJCWRvX2Fs
bF9pcG9zKCk7DQorCQlkb19hbGxfa2V5cygpOw0KKwkJZG9fYWxsX2FjdGlv
bnMoKTsNCisJCWRvX2FsbF9pa2FzKCk7DQorCQl0ZXN0X2FsbF9kaXNwbGlz
dHMoKTsNCisJCQ0KKwkJcmVzZXRfc2xvd3BhcmVudHMoKTsJLyogZWRpdG9i
amVjdC5jICovDQorCX0NCisNCisJLy9QQU4gRlVOQ1RJT05TDQorCXZvaWQg
cGFuX3ZpZXcoaW50IERJUkVDVElPTikgew0KKwkJaW50IEEgPSAwOw0KKwkJ
aW50IEIgPSAwOw0KKwkJc3dpdGNoKERJUkVDVElPTikgew0KKwkJCWNhc2Ug
TEVGVDoNCisJCQkJQSA9IC0zMjsNCisJCQkJQiA9IDA7DQorCQkJCWJyZWFr
Ow0KKwkJCWNhc2UgUklHSFQ6DQorCQkJCUEgPSAzMjsNCisJCQkJQiA9IDA7
DQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgVVA6DQorCQkJCUEgPSAwOw0KKwkJ
CQlCID0gLTI1Ow0KKwkJCQlicmVhazsNCisJCQljYXNlIERPV046DQorCQkJ
CUEgPSAwOw0KKwkJCQlCID0gMjU7DQorCQkJCWJyZWFrOw0KKwkJfQ0KKwkJ
aW5pdGdyYWJ6KDAuMCwgMC4wLCAwLjApOw0KKwkJd2luZG93X3RvXzNkKHZl
YywgQSwgQik7DQorCQlHLnZkLT5vZnNbMF0rPSB2ZWNbMF07DQorCQlHLnZk
LT5vZnNbMV0rPSB2ZWNbMV07DQorCQlHLnZkLT5vZnNbMl0rPSB2ZWNbMl07
DQorCX0NCisNCisJLy9PcmJpdCBGdW5jdGlvbnMNCisJdm9pZCBzZXRRdWF0
c1VQRE9XTihmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBkKSB7
DQorCQlWRUNDT1BZKHExKzEsIEcudmQtPnZpZXdpbnZbMF0pOwkJCQ0KKwkJ
Tm9ybWFsaXNlKHExKzEpOw0KKwkJcTFbMF09IGE7DQorCQlxMVsxXSo9IGI7
DQorCQlxMVsyXSo9IGM7DQorCQlxMVszXSo9IGQ7DQorCX0NCisNCisJdm9p
ZCBzZXRRdWF0c0xFRlRSSUdIVChmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBj
LCBmbG9hdCBkKSB7DQorCQlxMVswXT0gYTsNCisJCXExWzFdPSBiOw0KKwkJ
cTFbMl09IGM7DQorCQlxMVszXT0gZDsNCisJfQ0KKw0KKwl2b2lkIG9yYml0
X3ZpZXcoaW50IERJUkVDVElPTikgew0KKwkJcGhpPSAoZmxvYXQpKE1fUEkv
MjQuMCk7DQorCQlpZigoRElSRUNUSU9OID09IFJJR0hUKXx8KERJUkVDVElP
Tj09VVApKSB7DQorCQkJc2k9IChmbG9hdClzaW4ocGhpKTsNCisJCQljaSA9
IChmbG9hdCljb3MocGhpKTsNCisJCX0NCisJCWVsc2UgewkNCisJCQlzaSA9
IChmbG9hdClzaW4oLXBoaSk7DQorCQkJY2kgPSAoZmxvYXQpY29zKC1waGkp
Ow0KKwkJfQ0KKwkJc3dpdGNoKERJUkVDVElPTikgew0KKwkJCWNhc2UgUklH
SFQ6DQorCQkJCXNldFF1YXRzTEVGVFJJR0hUKGNpLCAwLjAsIDAuMCwgc2kp
OyBicmVhazsNCisJCQljYXNlIExFRlQ6DQorCQkJCXNldFF1YXRzTEVGVFJJ
R0hUKGNpLCAwLjAsIDAuMCwgc2kpOyBicmVhazsNCisJCQljYXNlIFVQOg0K
KwkJCQlzZXRRdWF0c1VQRE9XTihjaSwgc2ksIHNpLCBzaSk7IGJyZWFrOw0K
KwkJCWNhc2UgRE9XTjoNCisJCQkJc2V0UXVhdHNVUERPV04oY2ksIHNpLCBz
aSwgc2kpOyBicmVhazsNCisJCQlkZWZhdWx0OiBicmVhazsNCisJCX0NCisJ
CVF1YXRNdWwoRy52ZC0+dmlld3F1YXQsIEcudmQtPnZpZXdxdWF0LCBxMSk7
DQorCQlHLnZkLT52aWV3PSAwOw0KKwl9DQorDQorCS8vU0VUIFZJRVcgRlVO
Q1RJT05TDQorCXZvaWQgc2V0X3ZpZXcoZmxvYXQgYSwgZmxvYXQgYiwgZmxv
YXQgYywgZmxvYXQgZCwgaW50IGUpIHsNCisJCUcudmQtPnZpZXdxdWF0WzBd
PSBhOw0KKwkJRy52ZC0+dmlld3F1YXRbMV09IGI7DQorCQlHLnZkLT52aWV3
cXVhdFsyXT0gYzsNCisJCUcudmQtPnZpZXdxdWF0WzNdPSBkOw0KKwkJRy52
ZC0+dmlldz0gZTsNCisJCWlmKEcudmQtPnBlcnNwPj0yKSBHLnZkLT5wZXJz
cD0gcGVyc3BvOw0KKwl9DQorCQ0KKwl2b2lkIGJvdHRvbV92aWV3KCkgew0K
KwkJc2V0X3ZpZXcoMC4wLCAtMS4wLCAwLjAsIDAuMCwgNyk7DQorCX0NCisN
CisJdm9pZCBiYWNrX3ZpZXcoKSB7DQorCQlzZXRfdmlldygwLjAsIDAuMCwg
KGZsb2F0KS1jb3MoTV9QSS80LjApLCAoZmxvYXQpLWNvcyhNX1BJLzQuMCks
IDEpOw0KKwl9DQorDQorCXZvaWQgb3Bwb3NpdGVfc2lkZV92aWV3KCkgew0K
KwkJc2V0X3ZpZXcoMC41LCAtMC41LCAwLjUsIDAuNSwgMyk7DQorCX0NCisN
CisJdm9pZCBzaWRlX3ZpZXcoKSB7DQorCQlzZXRfdmlldygwLjUsIC0wLjUs
IC0wLjUsIC0wLjUsIDMpOw0KKwl9DQorDQorCXZvaWQgZnJvbnRfdmlldygp
IHsNCisJCXNldF92aWV3KChmbG9hdCljb3MoTV9QSS80LjApLCAoZmxvYXQp
LXNpbihNX1BJLzQuMCksIDAuMCwgMC4wLCAxKTsNCisJfQ0KKw0KKwl2b2lk
IHRvcF92aWV3KCkgew0KKwkJc2V0X3ZpZXcoMS4wLCAwLjAsIDAuMCwgMC4w
LCA3KTsNCisJfQ0KKw0KKwkvL1pPT00gRlVOQ1RJT05TDQorCXZvaWQgcmVz
ZXRfem9vbSgpIHsNCisJCWlmIChHLnZkLT5wZXJzcD09Mikgew0KKwkJCUcu
dmQtPmNhbXpvb209IDAuMDsNCiAJCX0gZWxzZSB7DQotCQkJaWYgKEcudmQt
PnBlcnNwPT0yKSB7DQotCQkJCUcudmQtPmNhbXpvb209IDAuMDsNCi0JCQl9
IGVsc2Ugew0KLQkJCQlHLnZkLT5kaXN0PSAxMC4wOw0KLQkJCX0NCisJCQlH
LnZkLT5kaXN0PSAxMC4wOw0KKwkJfQ0KKwl9DQorDQorDQorCXZvaWQgem9v
bV9pbigpIHsNCisJCWlmKEcudmQtPnBlcnNwPT0yKSB7DQorCQkJRy52ZC0+
Y2Ftem9vbSs9IDEwOw0KKwkJCWlmKEcudmQtPmNhbXpvb20+MzAwKSBHLnZk
LT5jYW16b29tPSAzMDA7DQorCQl9DQorCQllbHNlIGlmKEcudmQtPmRpc3Q+
IDAuMDAxKkcudmQtPmdyaWQpIEcudmQtPmRpc3QqPS44MzMzM2Y7DQorCX0N
CisNCisJdm9pZCB6b29tX2luMigpIHsNCisJCWlmKEcudmQtPnBlcnNwPT0y
KSB7DQorCQkJRy52ZC0+Y2Ftem9vbT0gTUlOMigzMDAsIEcudmQtPmNhbXpv
b20rNSk7DQorCQl9DQorCQllbHNlIGlmKEcudmQtPmRpc3Q+IDAuMDAxKkcu
dmQtPmdyaWQpIEcudmQtPmRpc3QqPS44MzMzM2Y7DQorCX0NCisNCisJdm9p
ZCB6b29tX291dCgpIHsNCisJCS8qIHRoaXMgbWluIGFuZCBtYXggaXMgYWxz
byBpbiB2aWV3bW92ZSgpICovDQorCQlpZihHLnZkLT5wZXJzcD09Mikgew0K
KwkJCUcudmQtPmNhbXpvb20tPSAxMDsNCisJCQlpZihHLnZkLT5jYW16b29t
PC0zMCkgRy52ZC0+Y2Ftem9vbT0gLTMwOw0KIAkJfQ0KKwkJZWxzZSBpZihH
LnZkLT5kaXN0PDEwLjAqRy52ZC0+ZmFyKSBHLnZkLT5kaXN0Kj0xLjJmOw0K
IAl9DQotCWVsc2UgaWYoKEcucXVhbCAmIChMUl9TSElGVEtFWSB8IExSX0NU
UkxLRVkpKSAmJiAoZXZlbnQgIT0gUEFEMCkpIHsNCi0JCWlmKGV2ZW50PT1Q
QUQwKSB7DQotCQkJLyogRy52ZC0+cGVyc3A9IDM7ICovDQotCQl9DQotCQll
bHNlIGlmKGV2ZW50PT1QQUQ3KSB7DQotCQkJRy52ZC0+dmlld3F1YXRbMF09
IDAuMDsNCi0JCQlHLnZkLT52aWV3cXVhdFsxXT0gLTEuMDsNCi0JCQlHLnZk
LT52aWV3cXVhdFsyXT0gMC4wOw0KLQkJCUcudmQtPnZpZXdxdWF0WzNdPSAw
LjA7DQotCQkJRy52ZC0+dmlldz0gNzsNCi0JCQlpZihHLnZkLT5wZXJzcD49
MikgRy52ZC0+cGVyc3A9IHBlcnNwbzsNCi0JCX0NCi0JCWVsc2UgaWYoZXZl
bnQ9PVBBRDEpIHsNCi0JCQlHLnZkLT52aWV3cXVhdFswXT0gMC4wOw0KLQkJ
CUcudmQtPnZpZXdxdWF0WzFdPSAwLjA7DQotCQkJRy52ZC0+dmlld3F1YXRb
Ml09IChmbG9hdCktY29zKE1fUEkvNC4wKTsNCi0JCQlHLnZkLT52aWV3cXVh
dFszXT0gKGZsb2F0KS1jb3MoTV9QSS80LjApOw0KLQkJCUcudmQtPnZpZXc9
MTsNCi0JCQlpZihHLnZkLT5wZXJzcD49MikgRy52ZC0+cGVyc3A9IHBlcnNw
bzsNCi0JCX0NCi0JCWVsc2UgaWYoZXZlbnQ9PVBBRDMpIHsNCi0JCQlHLnZk
LT52aWV3cXVhdFswXT0gMC41Ow0KLQkJCUcudmQtPnZpZXdxdWF0WzFdPSAt
MC41Ow0KLQkJCUcudmQtPnZpZXdxdWF0WzJdPSAwLjU7DQotCQkJRy52ZC0+
dmlld3F1YXRbM109IDAuNTsNCi0JCQlHLnZkLT52aWV3PTM7DQotCQkJaWYo
Ry52ZC0+cGVyc3A+PTIpIEcudmQtPnBlcnNwPSBwZXJzcG87DQotCQl9DQot
CQllbHNlIGlmKGV2ZW50PT1QQURNSU5VUykgew0KLQkJCS8qIHRoaXMgbWlu
IGFuZCBtYXggaXMgYWxzbyBpbiB2aWV3bW92ZSgpICovDQotCQkJaWYoRy52
ZC0+cGVyc3A9PTIpIHsNCi0JCQkJCUcudmQtPmNhbXpvb20tPSAxMDsNCi0J
CQkJCWlmKEcudmQtPmNhbXpvb208LTMwKSBHLnZkLT5jYW16b29tPSAtMzA7
DQorDQorCXZvaWQgem9vbV9vdXQyKCkgew0KKwkJLyogdGhpcyBtaW4gYW5k
IG1heCBpcyBhbHNvIGluIHZpZXdtb3ZlKCkgKi8NCisJCWlmKEcudmQtPnBl
cnNwPT0yKSB7DQorCQkJRy52ZC0+Y2Ftem9vbT0gTUFYMigtMzAsIEcudmQt
PmNhbXpvb20tNSk7DQorCQl9DQorCQllbHNlIGlmKEcudmQtPmRpc3Q8MTAu
MCpHLnZkLT5mYXIpIEcudmQtPmRpc3QqPTEuMmY7DQorCX0NCisNCisJLy9P
UlRITyBUT0dHTEUgRlVOQ1RJT04NCisJdm9pZCB0b2dnbGVfb3J0aG9fcGVy
c3BlY3RpdmUoKSB7DQorCQlpZihHLnZkLT5wZXJzcD09MSkgRy52ZC0+cGVy
c3A9MDsNCisJCWVsc2UgRy52ZC0+cGVyc3A9MTsNCisJfQ0KKw0KKw0KKw0K
Kw0KKy8qCSoqKioqKioqKioqKioqKioqRE9OVCBLTk9XIFdIQVQgVEhFU0Ug
RE8qKioqKioqKioqKioqKiogKi8NCisNCisNCisvKiBVTktOT1dOX0ZVTkNU
SU9OID0gKFBBRDAmJihHLnF1YWwmKExSX1NISUZUS0VZfExSX0NUUkxLRVkp
KSkNCitpZihVTktOT1dOX0ZVTkNUSU9OKSB1bmtub3duX2Z1bmN0aW9uKCk7
DQordm9pZCB1bmtub3duX2Z1bmN0aW9uKCkgew0KKwlHLnZkLT4gcGVyc3Ag
PSAzOw0KK30NCisNCit2b2lkIFVOS05PV05fRlVOQ1RJT05TX1pFUk9fSEF2
RV9UT19ET19XSVRIX0NBTUVSQV9WSUVXUw0KK3sNCisJaWYoRy5xdWFsPT1M
Ul9BTFRLRVkpIHsNCisJCWlmKG9sZGNhbWVyYSAmJiBpc19hbl9hY3RpdmVf
b2JqZWN0KG9sZGNhbWVyYSkpIHsNCisJCQlHLnZkLT5jYW1lcmE9IG9sZGNh
bWVyYTsNCisJCX0JCQ0KKwkJaGFuZGxlX3ZpZXczZF9sb2NrKCk7DQorCQkJ
fQ0KKwkJZWxzZSBpZihCQVNBQ1QpIHsNCisJCQlpZihHLnF1YWw9PUxSX0NU
UkxLRVkpIHsNCisJCQkJaWYoRy52ZC0+Y2FtZXJhICE9IE9CQUNUKSB7DQor
CQkJCQlpZihHLnZkLT5jYW1lcmEgJiYgRy52ZC0+Y2FtZXJhLT50eXBlPT1P
Ql9DQU1FUkEpDQorCQkJCQkJb2xkY2FtZXJhPSBHLnZkLT5jYW1lcmE7DQor
CQkJCQkNCisJCQkJCUcudmQtPmNhbWVyYT0gT0JBQ1Q7DQorCQkJCQloYW5k
bGVfdmlldzNkX2xvY2soKTsNCiAJCQkJfQ0KLQkJCWVsc2UgaWYoRy52ZC0+
ZGlzdDwxMC4wKkcudmQtPmZhcikgRy52ZC0+ZGlzdCo9MS4yZjsNCisJCQl9
DQorCQkJZWxzZSBpZihHLnZkLT5jYW1lcmE9PTAgJiYgT0JBQ1QtPnR5cGU9
PU9CX0NBTUVSQSkgew0KKwkJCQlHLnZkLT5jYW1lcmE9IE9CQUNUOw0KKwkJ
CQloYW5kbGVfdmlldzNkX2xvY2soKTsNCisJCQl9DQogCQl9DQotCQllbHNl
IGlmKGV2ZW50PT1QQURQTFVTS0VZKSB7DQotCQkJaWYoRy52ZC0+cGVyc3A9
PTIpIHsNCi0JCQkJCUcudmQtPmNhbXpvb20rPSAxMDsNCi0JCQkJCWlmKEcu
dmQtPmNhbXpvb20+MzAwKSBHLnZkLT5jYW16b29tPSAzMDA7DQotCQkJfQ0K
LQkJCWVsc2UgaWYoRy52ZC0+ZGlzdD4gMC4wMDEqRy52ZC0+Z3JpZCkgRy52
ZC0+ZGlzdCo9LjgzMzMzZjsNCi0JCX0NCi0JCWVsc2Ugew0KLQ0KLQkJCWlu
aXRncmFieigwLjAsIDAuMCwgMC4wKTsNCi0JCQkNCi0JCQlpZihldmVudD09
UEFENikgd2luZG93X3RvXzNkKHZlYywgLTMyLCAwKTsNCi0JCQllbHNlIGlm
KGV2ZW50PT1QQUQ0KSB3aW5kb3dfdG9fM2QodmVjLCAzMiwgMCk7DQotCQkJ
ZWxzZSBpZihldmVudD09UEFEOCkgd2luZG93X3RvXzNkKHZlYywgMCwgLTI1
KTsNCi0JCQllbHNlIGlmKGV2ZW50PT1QQUQyKSB3aW5kb3dfdG9fM2QodmVj
LCAwLCAyNSk7DQotCQkJRy52ZC0+b2ZzWzBdKz0gdmVjWzBdOw0KLQkJCUcu
dmQtPm9mc1sxXSs9IHZlY1sxXTsNCi0JCQlHLnZkLT5vZnNbMl0rPSB2ZWNb
Ml07DQotCQl9DQotCX0NCi0JZWxzZSB7DQotDQotCQlpZihldmVudD09UEFE
Nykgew0KLQkJCUcudmQtPnZpZXdxdWF0WzBdPSAxLjA7DQotCQkJRy52ZC0+
dmlld3F1YXRbMV09IDAuMDsNCi0JCQlHLnZkLT52aWV3cXVhdFsyXT0gMC4w
Ow0KLQkJCUcudmQtPnZpZXdxdWF0WzNdPSAwLjA7DQotCQkJRy52ZC0+dmll
dz03Ow0KLQkJCWlmKEcudmQtPnBlcnNwPj0yKSBHLnZkLT5wZXJzcD0gcGVy
c3BvOw0KLQkJfQ0KLQkJZWxzZSBpZihldmVudD09UEFEMSkgew0KLQkJCUcu
dmQtPnZpZXdxdWF0WzBdPSAoZmxvYXQpY29zKE1fUEkvNC4wKTsNCi0JCQlH
LnZkLT52aWV3cXVhdFsxXT0gKGZsb2F0KS1zaW4oTV9QSS80LjApOw0KLQkJ
CUcudmQtPnZpZXdxdWF0WzJdPSAwLjA7DQotCQkJRy52ZC0+dmlld3F1YXRb
M109IDAuMDsNCi0JCQlHLnZkLT52aWV3PTE7DQotCQkJaWYoRy52ZC0+cGVy
c3A+PTIpIEcudmQtPnBlcnNwPSBwZXJzcG87DQotCQl9DQotCQllbHNlIGlm
KGV2ZW50PT1QQUQzKSB7DQotCQkJRy52ZC0+dmlld3F1YXRbMF09IDAuNTsN
Ci0JCQlHLnZkLT52aWV3cXVhdFsxXT0gLTAuNTsNCi0JCQlHLnZkLT52aWV3
cXVhdFsyXT0gLTAuNTsNCi0JCQlHLnZkLT52aWV3cXVhdFszXT0gLTAuNTsN
Ci0JCQlHLnZkLT52aWV3PTM7DQotCQkJaWYoRy52ZC0+cGVyc3A+PTIpIEcu
dmQtPnBlcnNwPSBwZXJzcG87DQotCQl9DQotCQllbHNlIGlmKGV2ZW50PT1Q
QURNSU5VUykgew0KLQkJCS8qIHRoaXMgbWluIGFuZCBtYXggaXMgYWxzbyBp
biB2aWV3bW92ZSgpICovDQotCQkJaWYoRy52ZC0+cGVyc3A9PTIpIHsNCi0J
CQkJRy52ZC0+Y2Ftem9vbT0gTUFYMigtMzAsIEcudmQtPmNhbXpvb20tNSk7
DQotCQkJfQ0KLQkJCWVsc2UgaWYoRy52ZC0+ZGlzdDwxMC4wKkcudmQtPmZh
cikgRy52ZC0+ZGlzdCo9MS4yZjsNCi0JCX0NCi0JCWVsc2UgaWYoZXZlbnQ9
PVBBRFBMVVNLRVkpIHsNCi0JCQlpZihHLnZkLT5wZXJzcD09Mikgew0KLQkJ
CQlHLnZkLT5jYW16b29tPSBNSU4yKDMwMCwgRy52ZC0+Y2Ftem9vbSs1KTsN
Ci0JCQl9DQotCQkJZWxzZSBpZihHLnZkLT5kaXN0PiAwLjAwMSpHLnZkLT5n
cmlkKSBHLnZkLT5kaXN0Kj0uODMzMzNmOw0KLQkJfQ0KLQkJZWxzZSBpZihl
dmVudD09UEFENSkgew0KLQkJCWlmKEcudmQtPnBlcnNwPT0xKSBHLnZkLT5w
ZXJzcD0wOw0KLQkJCWVsc2UgRy52ZC0+cGVyc3A9MTsNCisJCWlmKEcudmQt
PmNhbWVyYT09MCkgew0KKwkJCUcudmQtPmNhbWVyYT0gc2NlbmVfZmluZF9j
YW1lcmEoRy5zY2VuZSk7DQorCQkJaGFuZGxlX3ZpZXczZF9sb2NrKCk7DQor
CQl9CQkJDQorCQlpZihHLnZkLT5jYW1lcmEpIHsNCisJCQlHLnZkLT5wZXJz
cD0gMjsNCisJCQlHLnZkLT52aWV3PSAwOw0KKwkJCWlmKEcucXVhbCAmIExS
X1NISUZUS0VZKSB7DQorCQkJCXZvaWQgc2V0Y2FtZXJhdG92aWV3M2Qodm9p
ZCk7CS8vIHZpZXcuYw0KKwkJCQlzZXRjYW1lcmF0b3ZpZXczZCgpOw0KKwkJ
CX0JCQkJDQogCQl9DQotCQllbHNlIGlmKGV2ZW50PT1QQUQwKSB7DQotCQkJ
aWYoRy5xdWFsPT1MUl9BTFRLRVkpIHsNCisJfQ0KK30NCisqLwkNCisJc3dp
dGNoKGV2ZW50KSB7DQorCQljYXNlIFBBRE1JTlVTOg0KKwkJCWlmIChHLnF1
YWwgPT0gMCkgem9vbV9vdXQyKCk7DQorCQkJZWxzZSBpZihHLnF1YWwgJiAo
TFJfU0hJRlRLRVkgfCBMUl9DVFJMS0VZKSkgem9vbV9vdXQoKTsNCisJCQli
cmVhazsNCisJCWNhc2UgUEFEUExVU0tFWToNCisJCQlpZiAoRy5xdWFsID09
IDApIHpvb21faW4yKCk7DQorCQkJZWxzZSBpZihHLnF1YWwgJiAoTFJfU0hJ
RlRLRVkgfCBMUl9DVFJMS0VZKSkgem9vbV9pbigpOw0KKwkJCWJyZWFrOw0K
KwkJY2FzZSBQQURFTlRFUjoNCisJCQlpZihHLnF1YWwgPT0gMCkgcmVzZXRf
em9vbSgpOw0KKwkJCWVsc2UgaWYgKEcucXVhbCA9PSBMUl9TSElGVEtFWSkg
dmlldzNkX3NldF8xX3RvXzFfdmlld2JvcmRlcihHLnZkKTsNCisJCQlicmVh
azsNCisJCWNhc2UgUEFEMToNCisJCQlpZiAoRy5xdWFsID09IDApIGZyb250
X3ZpZXcoKTsNCisJCQllbHNlIGlmKEcucXVhbCAmIChMUl9TSElGVEtFWSB8
IExSX0NUUkxLRVkpKSBiYWNrX3ZpZXcoKTsNCisJCQlicmVhazsNCisJCWNh
c2UgUEFEMjoNCisJCQlpZiAoRy5xdWFsID09IDApIG9yYml0X3ZpZXcoRE9X
Tik7DQorCQkJZWxzZSBpZihHLnF1YWwgJiAoTFJfU0hJRlRLRVkgfCBMUl9D
VFJMS0VZKSkgcGFuX3ZpZXcoRE9XTik7DQorCQkJYnJlYWs7DQorCQljYXNl
IFBBRDM6DQorCQkJaWYgKEcucXVhbCA9PSAwKSBzaWRlX3ZpZXcoKTsNCisJ
CQllbHNlIGlmKEcucXVhbCAmIChMUl9TSElGVEtFWSB8IExSX0NUUkxLRVkp
KSBvcHBvc2l0ZV9zaWRlX3ZpZXcoKTsNCisJCQlicmVhazsNCisJCWNhc2Ug
UEFENDoNCisJCQlpZiAoRy5xdWFsID09IDApIG9yYml0X3ZpZXcoTEVGVCk7
DQorCQkJZWxzZSBpZihHLnF1YWwgJiAoTFJfU0hJRlRLRVkgfCBMUl9DVFJM
S0VZKSkgcGFuX3ZpZXcoTEVGVCk7DQorCQkJYnJlYWs7DQorCQljYXNlIFBB
RDU6DQorCQkJdG9nZ2xlX29ydGhvX3BlcnNwZWN0aXZlKCk7DQorCQkJYnJl
YWs7DQorCQljYXNlIFBBRDY6DQorCQkJaWYgKEcucXVhbCA9PSAwKSBvcmJp
dF92aWV3KFJJR0hUKTsNCisJCQllbHNlIGlmKEcucXVhbCAmIChMUl9TSElG
VEtFWSB8IExSX0NUUkxLRVkpKSBwYW5fdmlldyhSSUdIVCk7DQorCQkJYnJl
YWs7DQorCQljYXNlIFBBRDc6DQorCQkJaWYgKEcucXVhbCA9PSAwKSB0b3Bf
dmlldygpOw0KKwkJCWVsc2UgaWYoRy5xdWFsICYgKExSX1NISUZUS0VZIHwg
TFJfQ1RSTEtFWSkpIGJhY2tfdmlldygpOw0KKwkJCWJyZWFrOw0KKwkJY2Fz
ZSBQQUQ4Og0KKwkJCWlmIChHLnF1YWwgPT0gMCkgb3JiaXRfdmlldyhVUCk7
DQorCQkJZWxzZSBpZihHLnF1YWwgJiAoTFJfU0hJRlRLRVkgfCBMUl9DVFJM
S0VZKSkgcGFuX3ZpZXcoVVApOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBQQUQ5
Og0KKwkJCWlmIChHLnF1YWwgPT0gMCkgcmVkcmF3X3NjcmVlbigpOw0KKwkJ
CWJyZWFrOw0KKwkJY2FzZSBQQUQwOg0KKwkJCWlmKEcucXVhbCAmIChMUl9T
SElGVEtFWSB8IExSX0NUUkxLRVkpKXt9DQorCQkJLy9SRVNFVF9DQU1FUkFf
VE8gTEFTVCBWSUVXDQorCQkJZWxzZSBpZihHLnF1YWw9PUxSX0FMVEtFWSkg
ew0KIAkJCQlpZihvbGRjYW1lcmEgJiYgaXNfYW5fYWN0aXZlX29iamVjdChv
bGRjYW1lcmEpKSB7DQogCQkJCQlHLnZkLT5jYW1lcmE9IG9sZGNhbWVyYTsN
Ci0JCQkJfQ0KLQkJCQkNCisJCQkJfQkJDQogCQkJCWhhbmRsZV92aWV3M2Rf
bG9jaygpOw0KIAkJCX0NCiAJCQllbHNlIGlmKEJBU0FDVCkgew0KKwkJCQkv
L01ha2UgVmlldw0KIAkJCQlpZihHLnF1YWw9PUxSX0NUUkxLRVkpIHsNCiAJ
CQkJCWlmKEcudmQtPmNhbWVyYSAhPSBPQkFDVCkgew0KIAkJCQkJCWlmKEcu
dmQtPmNhbWVyYSAmJiBHLnZkLT5jYW1lcmEtPnR5cGU9PU9CX0NBTUVSQSkN
CiAJCQkJCQkJb2xkY2FtZXJhPSBHLnZkLT5jYW1lcmE7DQotCQkJCQkJDQog
CQkJCQkJRy52ZC0+Y2FtZXJhPSBPQkFDVDsNCiAJCQkJCQloYW5kbGVfdmll
dzNkX2xvY2soKTsNCiAJCQkJCX0NCkBAIC0zODgsOCArNTQ1LDcgQEANCiAJ
CQlpZihHLnZkLT5jYW1lcmE9PTApIHsNCiAJCQkJRy52ZC0+Y2FtZXJhPSBz
Y2VuZV9maW5kX2NhbWVyYShHLnNjZW5lKTsNCiAJCQkJaGFuZGxlX3ZpZXcz
ZF9sb2NrKCk7DQotCQkJfQ0KLQkJCQ0KKwkJCX0JCQkNCiAJCQlpZihHLnZk
LT5jYW1lcmEpIHsNCiAJCQkJRy52ZC0+cGVyc3A9IDI7DQogCQkJCUcudmQt
PnZpZXc9IDA7DQpAQCAtMzk4LDQ4ICs1NTQsMTAgQEANCiAJCQkJCXNldGNh
bWVyYXRvdmlldzNkKCk7DQogCQkJCX0JCQkJDQogCQkJfQ0KLQkJfQ0KLQkJ
ZWxzZSBpZihldmVudD09UEFEOSkgew0KLQkJCWNvdW50YWxsKCk7DQotCQkJ
ZG9fYWxsX2lwb3MoKTsNCi0JCQlkb19hbGxfa2V5cygpOw0KLQkJCWRvX2Fs
bF9hY3Rpb25zKCk7DQotCQkJZG9fYWxsX2lrYXMoKTsNCi0JCQl0ZXN0X2Fs
bF9kaXNwbGlzdHMoKTsNCi0JCQkNCi0JCQlyZXNldF9zbG93cGFyZW50cygp
OwkvKiBlZGl0b2JqZWN0LmMgKi8NCi0JCX0NCi0JCWVsc2UgaWYoRy52ZC0+
cGVyc3A8Mikgew0KLQkJCWlmKGV2ZW50PT1QQUQ0IHx8IGV2ZW50PT1QQUQ2
KSB7DQotCQkJCS8qIHotYXhpcyAqLw0KLQkJCQlwaGk9IChmbG9hdCkoTV9Q
SS8yNC4wKTsNCi0JCQkJaWYoZXZlbnQ9PVBBRDYpIHBoaT0gLXBoaTsNCi0J
CQkJc2k9IChmbG9hdClzaW4ocGhpKTsNCi0JCQkJcTFbMF09IChmbG9hdClj
b3MocGhpKTsNCi0JCQkJcTFbMV09IHExWzJdPSAwLjA7DQotCQkJCXExWzNd
PSBzaTsNCi0JCQkJUXVhdE11bChHLnZkLT52aWV3cXVhdCwgRy52ZC0+dmll
d3F1YXQsIHExKTsNCi0JCQkJRy52ZC0+dmlldz0gMDsNCi0JCQl9DQotCQkJ
aWYoZXZlbnQ9PVBBRDIgfHwgZXZlbnQ9PVBBRDgpIHsNCi0JCQkJDQotCQkJ
CS8qIGhvcml6b250YWwgYXhpcyAqLw0KLQkJCQlWRUNDT1BZKHExKzEsIEcu
dmQtPnZpZXdpbnZbMF0pOw0KLQkJCQkNCi0JCQkJTm9ybWFsaXNlKHExKzEp
Ow0KLQkJCQlwaGk9IChmbG9hdCkoTV9QSS8yNC4wKTsNCi0JCQkJaWYoZXZl
bnQ9PVBBRDIpIHBoaT0gLXBoaTsNCi0JCQkJc2k9IChmbG9hdClzaW4ocGhp
KTsNCi0JCQkJcTFbMF09IChmbG9hdCljb3MocGhpKTsNCi0JCQkJcTFbMV0q
PSBzaTsNCi0JCQkJcTFbMl0qPSBzaTsNCi0JCQkJcTFbM10qPSBzaTsNCi0J
CQkJUXVhdE11bChHLnZkLT52aWV3cXVhdCwgRy52ZC0+dmlld3F1YXQsIHEx
KTsNCi0JCQkJRy52ZC0+dmlldz0gMDsNCi0JCQl9DQotCQl9DQotDQotCQlp
ZihHLnZkLT5wZXJzcDwyKSBwZXJzcG89IEcudmQtPnBlcnNwOw0KKwkJCWJy
ZWFrOw0KKwkJZGVmYXVsdDoNCisJCQlicmVhazsNCisJCQ0KIAl9DQogCXNj
cmFyZWFfcXVldWVfcmVkcmF3KGN1cmFyZWEpOw0KIH0NCg==


------=_NextPart_000_4987_31b1_256a--