15 Nov 2008
This commit is contained in:
parent
aa5e82e4e3
commit
9cd0a7b95f
|
@ -0,0 +1,16 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: baserc - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
baserc.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
674
baserc/client.h
674
baserc/client.h
|
@ -1,12 +1,12 @@
|
|||
const unsigned char client_dat[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x88, 0x0e, 0x00,
|
||||
0x00, 0x3f, 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x00, 0xee, 0x01,
|
||||
0x00, 0x00, 0xf7, 0x0b, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0d,
|
||||
0x0e, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb5, 0x09, 0x00, 0x00,
|
||||
0x68, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x2c, 0x07, 0x00,
|
||||
0x00, 0xb8, 0x0e, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, 0x1b, 0x00,
|
||||
0x00, 0x3f, 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00, 0xe2, 0x01,
|
||||
0x00, 0x00, 0xe5, 0x0b, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xfa,
|
||||
0x0d, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xa3, 0x09, 0x00, 0x00,
|
||||
0x68, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x34, 0x07, 0x00,
|
||||
0x00, 0xa3, 0x0e, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0x1b, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xbe, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xac, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0a, 0x0d,
|
||||
0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20,
|
||||
0x77, 0x61, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
|
||||
|
@ -21,7 +21,7 @@ const unsigned char client_dat[] = {
|
|||
0x72, 0x2e, 0x0a, 0x54, 0x68, 0x61, 0x6e, 0x6b, 0x73, 0x20, 0x74,
|
||||
0x6f, 0x20, 0x49, 0x44, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61,
|
||||
0x72, 0x65, 0x20, 0x61, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x2e, 0x00,
|
||||
0x0d, 0x0a, 0x0d, 0x0a, 0x0f, 0x03, 0x00, 0x00, 0x78, 0xda, 0x65,
|
||||
0x0d, 0x0a, 0x0d, 0x0a, 0x13, 0x03, 0x00, 0x00, 0x78, 0xda, 0x65,
|
||||
0x94, 0x4b, 0x73, 0xdc, 0x20, 0x0c, 0x80, 0x75, 0xee, 0xaf, 0xe8,
|
||||
0xa5, 0xc7, 0x36, 0xcd, 0xa3, 0xcf, 0x5b, 0x5f, 0x69, 0x7b, 0xe8,
|
||||
0x4c, 0x26, 0x99, 0xe4, 0x58, 0x8f, 0x16, 0x64, 0x9b, 0x09, 0x06,
|
||||
|
@ -58,335 +58,333 @@ const unsigned char client_dat[] = {
|
|||
0x23, 0x72, 0xe5, 0xc8, 0xec, 0x8e, 0x77, 0x9e, 0xb3, 0xfa, 0xb8,
|
||||
0x5b, 0x51, 0x73, 0x3e, 0xac, 0x0f, 0x4b, 0x56, 0x53, 0xdd, 0xb5,
|
||||
0x28, 0xe8, 0xb4, 0xd2, 0x59, 0xa5, 0xf3, 0x4a, 0x17, 0x95, 0xde,
|
||||
0xd5, 0xed, 0x73, 0x1e, 0x55, 0x8a, 0x07, 0x9f, 0x23, 0xb2, 0xab,
|
||||
0xbb, 0xe6, 0x1b, 0x6a, 0x71, 0x4d, 0xad, 0xa4, 0x16, 0x46, 0xae,
|
||||
0xb4, 0xd9, 0x3a, 0xce, 0xe8, 0xc0, 0x05, 0x98, 0x22, 0xe0, 0x08,
|
||||
0x75, 0x50, 0x0c, 0xad, 0x63, 0x35, 0xd3, 0x5e, 0x11, 0xdb, 0x74,
|
||||
0xab, 0x6c, 0x1e, 0x2a, 0xc5, 0x4a, 0x87, 0x4c, 0x39, 0xee, 0x7e,
|
||||
0x83, 0x8b, 0xed, 0xa2, 0xc4, 0xad, 0xc2, 0x2b, 0x9a, 0xd6, 0xba,
|
||||
0x19, 0x9d, 0x7c, 0xa4, 0x64, 0x5f, 0x39, 0x6e, 0x38, 0x59, 0x3b,
|
||||
0xd5, 0xf5, 0x61, 0x95, 0xd9, 0xb2, 0x50, 0xac, 0x94, 0xac, 0xa6,
|
||||
0x31, 0xff, 0xf2, 0x3c, 0x8b, 0x58, 0xc4, 0x01, 0xac, 0x29, 0xf9,
|
||||
0x81, 0x12, 0x07, 0x7e, 0xa5, 0x30, 0xf3, 0xab, 0x70, 0xb9, 0x02,
|
||||
0xb8, 0x14, 0x14, 0x97, 0x45, 0xab, 0xb1, 0xf3, 0xa9, 0x2c, 0x36,
|
||||
0x97, 0x39, 0xd2, 0xd8, 0xeb, 0xb1, 0x1e, 0x9f, 0xe8, 0x07, 0xf0,
|
||||
0x6a, 0x48, 0x0e, 0x8b, 0x60, 0xfb, 0x05, 0xe2, 0x0a, 0xd9, 0x22,
|
||||
0x85, 0xb3, 0x88, 0x62, 0x51, 0x82, 0xb9, 0xc0, 0x01, 0x94, 0xe4,
|
||||
0x2c, 0x8c, 0x2a, 0x88, 0x3e, 0x47, 0xac, 0xa7, 0x72, 0xf3, 0x8a,
|
||||
0x4b, 0x58, 0x17, 0x25, 0x6e, 0x95, 0x03, 0xf4, 0x29, 0x83, 0x3d,
|
||||
0x27, 0xf4, 0xa1, 0xa1, 0xfa, 0xe4, 0xf1, 0xa1, 0xdc, 0xd0, 0x83,
|
||||
0x26, 0x37, 0x72, 0x6e, 0x05, 0xb7, 0x26, 0xbe, 0x3d, 0xf7, 0x02,
|
||||
0xaf, 0xac, 0x01, 0x49, 0x83, 0x4d, 0x81, 0xc9, 0xcf, 0x70, 0x9c,
|
||||
0x8c, 0xe8, 0xf3, 0x85, 0x36, 0xc8, 0x7b, 0x6e, 0x94, 0xb8, 0x55,
|
||||
0x0e, 0x8f, 0xdd, 0xaa, 0xac, 0x3a, 0x56, 0x53, 0xd0, 0x8e, 0x07,
|
||||
0xe2, 0xd3, 0x81, 0x52, 0x3e, 0xf9, 0xb8, 0x11, 0x76, 0x9a, 0x2b,
|
||||
0xb7, 0x11, 0x56, 0x5b, 0xb7, 0x65, 0x76, 0xb3, 0xd5, 0x8e, 0xec,
|
||||
0xd8, 0x41, 0xd1, 0x30, 0x37, 0x24, 0x7e, 0x5a, 0x44, 0x26, 0x85,
|
||||
0xb6, 0x40, 0x5c, 0x61, 0x5e, 0xa1, 0x87, 0x64, 0xed, 0xa3, 0x6f,
|
||||
0x3a, 0x6d, 0x77, 0xa8, 0x53, 0x9e, 0xd1, 0xfb, 0xfc, 0x04, 0xca,
|
||||
0x48, 0xc6, 0xc1, 0x4a, 0xd2, 0x8a, 0xdf, 0x11, 0xbb, 0x4a, 0xc5,
|
||||
0x53, 0x90, 0xef, 0xad, 0x0c, 0x70, 0x27, 0xe0, 0xe7, 0x94, 0x2d,
|
||||
0xc0, 0x72, 0xfd, 0xa5, 0xa1, 0x2c, 0x78, 0xdf, 0x05, 0xe2, 0x0a,
|
||||
0x07, 0x6e, 0xba, 0xc6, 0xe7, 0x1f, 0xcf, 0x66, 0x11, 0x8b, 0x38,
|
||||
0xa4, 0xdc, 0xe4, 0x04, 0xe5, 0x99, 0x24, 0x62, 0x11, 0x5c, 0x28,
|
||||
0x56, 0x2b, 0xee, 0x13, 0xc4, 0x0d, 0xc6, 0x08, 0x02, 0x6a, 0x5b,
|
||||
0xee, 0x6d, 0xbe, 0xbc, 0x4c, 0xd8, 0x59, 0xc9, 0xd7, 0xba, 0xe7,
|
||||
0x5d, 0xd7, 0x9b, 0xb4, 0xa9, 0x35, 0x7b, 0x40, 0x55, 0xca, 0x18,
|
||||
0xfe, 0x03, 0xef, 0x12, 0x9d, 0x72, 0xb0, 0x05, 0x00, 0x00, 0x78,
|
||||
0xda, 0xcd, 0x59, 0x6b, 0x6c, 0x54, 0x45, 0x14, 0xbe, 0xa7, 0xd0,
|
||||
0x02, 0x25, 0x44, 0x4d, 0x6d, 0xb1, 0x22, 0x6e, 0x2b, 0x92, 0x68,
|
||||
0xea, 0x23, 0x56, 0x5d, 0x40, 0xa5, 0xbe, 0x5d, 0xc5, 0xe2, 0x0b,
|
||||
0xc5, 0x94, 0x60, 0x48, 0xb0, 0x8a, 0x82, 0x82, 0x5a, 0x83, 0x81,
|
||||
0x60, 0xe8, 0x6e, 0x51, 0xa8, 0x4d, 0x48, 0x48, 0x4c, 0x48, 0x10,
|
||||
0x29, 0x01, 0x49, 0x10, 0xd4, 0xe2, 0x03, 0x83, 0x89, 0xa8, 0xd4,
|
||||
0x60, 0x78, 0x68, 0x2b, 0x16, 0x34, 0x1a, 0xff, 0x0b, 0xf2, 0xee,
|
||||
0x2e, 0x45, 0x7c, 0xd5, 0x33, 0xb9, 0x67, 0xb3, 0xe7, 0x7e, 0xde,
|
||||
0x9d, 0xd9, 0x6d, 0x43, 0xc3, 0x26, 0xd3, 0x3b, 0xdf, 0x7e, 0x67,
|
||||
0x66, 0xbe, 0x39, 0xf7, 0x9c, 0x33, 0xf7, 0x6e, 0x3d, 0x2f, 0xf8,
|
||||
0x89, 0x70, 0x6b, 0xe4, 0xd6, 0x2d, 0xb8, 0x4c, 0xfa, 0xbf, 0x70,
|
||||
0x4b, 0x72, 0xab, 0x96, 0xeb, 0x10, 0xe1, 0x1b, 0x94, 0x6d, 0x8a,
|
||||
0x5b, 0x0b, 0xb7, 0x5f, 0xa5, 0x3f, 0x98, 0xdb, 0x0d, 0xdc, 0xf6,
|
||||
0xc2, 0xfc, 0xdd, 0xc2, 0x9b, 0x4f, 0x91, 0xe0, 0xb8, 0x5c, 0x27,
|
||||
0x72, 0x3b, 0xd3, 0xdb, 0xdb, 0xab, 0xed, 0x4f, 0xc9, 0x5c, 0x5e,
|
||||
0x96, 0xf9, 0x7a, 0x1c, 0xfc, 0x69, 0x07, 0xff, 0x07, 0xf0, 0xef,
|
||||
0x00, 0x7f, 0xc6, 0xc1, 0xff, 0xe9, 0xe0, 0xff, 0x72, 0xf0, 0x7f,
|
||||
0x3b, 0xf8, 0x7f, 0x1c, 0xfc, 0xbf, 0x0e, 0xbe, 0xd7, 0xc1, 0x7b,
|
||||
0x64, 0xe7, 0xc9, 0xc1, 0x17, 0x38, 0xf8, 0x41, 0x0e, 0x7e, 0xb0,
|
||||
0x83, 0x2f, 0x74, 0xf0, 0x45, 0x0e, 0x7e, 0x88, 0xe2, 0x0d, 0x1e,
|
||||
0x4a, 0x99, 0xf8, 0x8d, 0x48, 0xec, 0x15, 0x0b, 0x8e, 0x72, 0x5b,
|
||||
0xe5, 0x65, 0xff, 0xcc, 0xe4, 0x36, 0x8c, 0xc7, 0x0f, 0x17, 0x7c,
|
||||
0x3d, 0xb7, 0x13, 0x16, 0x7b, 0xc3, 0x1f, 0x77, 0xf0, 0x27, 0x01,
|
||||
0x1f, 0xb3, 0xd8, 0x1b, 0xbd, 0xc5, 0xb0, 0xdf, 0x66, 0x8b, 0xfd,
|
||||
0x2c, 0xd9, 0x5f, 0x8f, 0xe4, 0x94, 0xc1, 0x09, 0x93, 0x13, 0x0a,
|
||||
0x37, 0x01, 0xbf, 0x44, 0xf1, 0x98, 0x8f, 0x61, 0xfe, 0x18, 0xae,
|
||||
0xfc, 0x71, 0xae, 0x7f, 0xcc, 0xfe, 0x4a, 0x28, 0xb8, 0xdf, 0x0b,
|
||||
0x01, 0x97, 0x02, 0x2e, 0x03, 0x3c, 0x12, 0xf0, 0x45, 0x80, 0xcb,
|
||||
0x01, 0x5f, 0x0c, 0x78, 0x14, 0xe0, 0x4b, 0x18, 0x9f, 0xb2, 0xf8,
|
||||
0xd8, 0x73, 0xc4, 0xcf, 0x0e, 0xb8, 0x1f, 0xa3, 0x79, 0xbe, 0x12,
|
||||
0xc5, 0xef, 0xc2, 0x7c, 0xf6, 0x82, 0xf9, 0x50, 0x01, 0xf9, 0x50,
|
||||
0x49, 0xc1, 0x7c, 0xf8, 0x51, 0x8d, 0x37, 0xf1, 0x70, 0x3e, 0xac,
|
||||
0xdf, 0x1e, 0x32, 0xff, 0xa5, 0xe4, 0xe3, 0x62, 0xe9, 0x27, 0xa4,
|
||||
0xe6, 0x57, 0xcb, 0x75, 0x90, 0xb2, 0xbf, 0x0c, 0xe2, 0xf9, 0x67,
|
||||
0x98, 0x1f, 0xf5, 0x8f, 0x81, 0x7c, 0x26, 0x75, 0x1e, 0xdd, 0xc8,
|
||||
0x6d, 0x29, 0xe8, 0x2d, 0x54, 0xb8, 0x4a, 0xce, 0x37, 0x1d, 0x0f,
|
||||
0x26, 0xde, 0x8f, 0x41, 0x3e, 0x24, 0x05, 0xa3, 0xbd, 0xd1, 0xb3,
|
||||
0x07, 0xe6, 0x8b, 0x3b, 0xf2, 0xb5, 0x1a, 0xf4, 0x5e, 0x4e, 0x41,
|
||||
0xbd, 0xad, 0xca, 0xbe, 0x52, 0xf6, 0x53, 0x45, 0x19, 0xfb, 0x2a,
|
||||
0xf0, 0xcf, 0xda, 0x10, 0x7f, 0x5f, 0x2d, 0xf6, 0x15, 0x46, 0x23,
|
||||
0xf7, 0xaf, 0x55, 0xfe, 0xbf, 0x82, 0xfc, 0x3d, 0x68, 0xff, 0x17,
|
||||
0xa8, 0xf1, 0x51, 0xf2, 0x6d, 0xd2, 0xf6, 0x57, 0x3a, 0xec, 0xc7,
|
||||
0x91, 0x6f, 0xa3, 0x9f, 0x17, 0xae, 0xa2, 0xcc, 0xf3, 0x82, 0xe9,
|
||||
0x1b, 0x3d, 0x7a, 0xfc, 0x38, 0x75, 0xde, 0x1b, 0x3e, 0x2e, 0xdf,
|
||||
0xe3, 0xfe, 0x22, 0xc2, 0xeb, 0x78, 0x4c, 0x41, 0x7d, 0x5e, 0xaf,
|
||||
0xf6, 0x5f, 0x2f, 0xfb, 0x2f, 0x87, 0xe7, 0x97, 0x6b, 0x28, 0x73,
|
||||
0xff, 0xc7, 0x80, 0xbf, 0xe2, 0xc0, 0x57, 0x02, 0x9f, 0x00, 0x3e,
|
||||
0x02, 0x7c, 0x13, 0xf0, 0xa3, 0x81, 0x5f, 0x02, 0xfc, 0x28, 0xe0,
|
||||
0x27, 0x52, 0x90, 0x2f, 0x07, 0xfe, 0x56, 0xe0, 0x47, 0x02, 0x7f,
|
||||
0x3b, 0xf0, 0xa5, 0xc0, 0xdf, 0x09, 0x7c, 0x09, 0xf0, 0x77, 0x03,
|
||||
0x7f, 0x01, 0xf0, 0x31, 0xe0, 0xcf, 0x0b, 0x79, 0x3e, 0xd4, 0xfc,
|
||||
0x08, 0xc8, 0x27, 0x73, 0xbe, 0x1e, 0x54, 0xf9, 0x34, 0x9e, 0xf1,
|
||||
0x21, 0x85, 0x27, 0x30, 0xfe, 0x5d, 0xe1, 0x9b, 0x18, 0x1f, 0x56,
|
||||
0xf8, 0x66, 0xc6, 0x47, 0x14, 0xbe, 0x85, 0xf1, 0x51, 0x85, 0x6b,
|
||||
0x28, 0x98, 0xaf, 0xb7, 0x31, 0x3e, 0xae, 0xf0, 0x1d, 0x8c, 0x4f,
|
||||
0x28, 0x7c, 0x17, 0xe3, 0x93, 0x0a, 0xdf, 0xc3, 0xb8, 0x5b, 0x9d,
|
||||
0x6f, 0x49, 0x55, 0x7b, 0x1b, 0xd4, 0xde, 0xf0, 0x79, 0x36, 0x25,
|
||||
0xf9, 0x35, 0x16, 0xe2, 0x35, 0xa5, 0xea, 0x4f, 0x85, 0xe4, 0x5b,
|
||||
0xb1, 0xc2, 0x26, 0x17, 0x47, 0x40, 0xfc, 0xa5, 0x6b, 0xe8, 0x78,
|
||||
0x6e, 0x1d, 0xca, 0x7f, 0xf7, 0xca, 0xf8, 0xb1, 0x14, 0xcc, 0x87,
|
||||
0x64, 0x48, 0xfe, 0x98, 0xab, 0xd1, 0xbf, 0xdb, 0x72, 0x76, 0x18,
|
||||
0x1d, 0xf7, 0x59, 0xf2, 0x19, 0xeb, 0xdb, 0x50, 0xb3, 0x3f, 0x19,
|
||||
0x73, 0x3f, 0xf9, 0xb1, 0x65, 0xae, 0x93, 0x28, 0xb7, 0xf1, 0xa6,
|
||||
0xd6, 0x1a, 0x5b, 0x93, 0x03, 0xb5, 0xe4, 0xeb, 0x7f, 0x00, 0xfc,
|
||||
0x55, 0x0b, 0xf9, 0x1d, 0x83, 0xf3, 0xe6, 0xc3, 0x90, 0xfa, 0x56,
|
||||
0x4b, 0x19, 0x7d, 0x93, 0x44, 0x5b, 0x4a, 0xea, 0x4d, 0x4a, 0x78,
|
||||
0xad, 0xaf, 0xd0, 0x0b, 0xb7, 0x27, 0xe1, 0xe3, 0xca, 0x2e, 0x3d,
|
||||
0x7e, 0x32, 0xf9, 0xfb, 0x99, 0x4c, 0xff, 0xaf, 0x17, 0xe9, 0xef,
|
||||
0x90, 0x37, 0xdd, 0x07, 0xf9, 0xcf, 0x4c, 0xca, 0xd4, 0xb3, 0x46,
|
||||
0x2f, 0x7b, 0x7c, 0x18, 0xfc, 0x64, 0x0e, 0xfb, 0x7d, 0x0c, 0xea,
|
||||
0xf9, 0x0c, 0xca, 0xac, 0x37, 0x85, 0x7c, 0x7e, 0xba, 0xf8, 0xb7,
|
||||
0x1e, 0xfc, 0x3b, 0x05, 0xfc, 0xfb, 0x54, 0x0e, 0xeb, 0xd5, 0x51,
|
||||
0xf0, 0xfc, 0xd7, 0xf3, 0x3d, 0x0a, 0xf3, 0xd5, 0xe7, 0x30, 0xdf,
|
||||
0x13, 0x14, 0xc4, 0xd3, 0x14, 0x7e, 0x98, 0xfb, 0x53, 0x15, 0x7e,
|
||||
0x84, 0xfb, 0x8f, 0xab, 0xfd, 0x4e, 0x85, 0xf5, 0x1f, 0xa2, 0x60,
|
||||
0x7e, 0xd5, 0x41, 0x7e, 0xcd, 0xc8, 0x23, 0xbf, 0xc2, 0xe6, 0x7f,
|
||||
0x1a, 0xe6, 0x9f, 0xee, 0x98, 0x7f, 0x16, 0x65, 0x9f, 0x1f, 0x3f,
|
||||
0x26, 0xfe, 0x9e, 0x63, 0xfb, 0xd9, 0x14, 0x8c, 0xb7, 0xf4, 0xf3,
|
||||
0x90, 0xe1, 0x23, 0xcc, 0xcd, 0x91, 0x1c, 0x2f, 0x94, 0xf7, 0xeb,
|
||||
0x84, 0x5c, 0xcd, 0x7a, 0xcf, 0x80, 0xde, 0x67, 0x2d, 0xe7, 0x63,
|
||||
0x44, 0xc6, 0x69, 0xbd, 0xb3, 0x95, 0x5e, 0x83, 0xe7, 0xa8, 0xe7,
|
||||
0xc3, 0x09, 0xdc, 0x7e, 0xb3, 0xe8, 0x37, 0xb7, 0xe5, 0xf9, 0xb3,
|
||||
0x10, 0xdf, 0x2f, 0x41, 0x7c, 0x27, 0x28, 0x18, 0x5f, 0x7a, 0xfe,
|
||||
0x17, 0xfa, 0x10, 0xcf, 0x0b, 0x2c, 0xf1, 0xfc, 0x62, 0x1f, 0xe2,
|
||||
0x79, 0xa1, 0xaa, 0x3f, 0x0b, 0xe4, 0x79, 0x76, 0x11, 0xf9, 0x78,
|
||||
0xa1, 0xe0, 0x57, 0xc9, 0xb7, 0x35, 0xdf, 0x9b, 0xfd, 0x2d, 0x96,
|
||||
0xfc, 0x34, 0xdf, 0x37, 0x2a, 0x3d, 0x73, 0xb9, 0xdf, 0xa0, 0xf0,
|
||||
0x3c, 0xee, 0xbf, 0x4c, 0x99, 0xfa, 0x3e, 0x57, 0xea, 0xfb, 0x7c,
|
||||
0xf2, 0xf1, 0x3c, 0xc1, 0xaf, 0x90, 0xef, 0xaf, 0x06, 0xb5, 0x9f,
|
||||
0x0a, 0xd1, 0xa3, 0xe3, 0x37, 0x41, 0xc1, 0x78, 0x88, 0xab, 0x78,
|
||||
0x30, 0xcf, 0x61, 0x9d, 0x90, 0x0f, 0xf3, 0xc1, 0x3f, 0xaf, 0xc1,
|
||||
0x7c, 0x8b, 0x20, 0x1f, 0x12, 0x79, 0xe6, 0x1b, 0xce, 0xff, 0x3a,
|
||||
0xcc, 0xbf, 0xd8, 0x31, 0x7f, 0x5f, 0xf2, 0x6d, 0x99, 0x23, 0xdf,
|
||||
0x9a, 0x2d, 0xf9, 0xb6, 0x94, 0xec, 0xf1, 0x9d, 0x84, 0x7c, 0x5b,
|
||||
0x06, 0x7a, 0x9b, 0x41, 0xef, 0x21, 0x8b, 0x5e, 0xb3, 0xdf, 0x37,
|
||||
0xd9, 0xbe, 0x45, 0xe5, 0xc3, 0x4a, 0xee, 0x2f, 0x87, 0xfc, 0x58,
|
||||
0xa1, 0x70, 0x0b, 0xe8, 0x7b, 0x03, 0xfc, 0xb9, 0x1c, 0xfc, 0xb9,
|
||||
0x22, 0x8f, 0xfb, 0x15, 0xf6, 0xfe, 0xf2, 0x16, 0x8f, 0x6f, 0x55,
|
||||
0xf1, 0xba, 0x9a, 0xfb, 0x6b, 0x15, 0x7e, 0x9b, 0xfb, 0xeb, 0x14,
|
||||
0x5e, 0xc3, 0xfd, 0xf5, 0xa0, 0x7f, 0x83, 0xc2, 0xad, 0xa0, 0x7f,
|
||||
0x15, 0xe8, 0x5f, 0x07, 0xfa, 0x37, 0xf4, 0x43, 0x7f, 0x3a, 0x1e,
|
||||
0x36, 0x39, 0xe2, 0x61, 0xb3, 0x25, 0x1e, 0xde, 0xcd, 0x33, 0x1e,
|
||||
0x36, 0x81, 0xde, 0xcd, 0x10, 0x0f, 0x47, 0x1c, 0xfe, 0x7e, 0x0f,
|
||||
0xde, 0xf7, 0xd6, 0x58, 0xde, 0xdf, 0x0d, 0x7f, 0x18, 0xf8, 0xf7,
|
||||
0x61, 0xfc, 0x6a, 0xc7, 0xfb, 0xff, 0x07, 0x50, 0x0f, 0xdb, 0xa0,
|
||||
0x7e, 0x44, 0x29, 0x58, 0x3f, 0x0e, 0xc2, 0x7c, 0x5b, 0x2c, 0xeb,
|
||||
0x5d, 0x27, 0xeb, 0x15, 0x58, 0xf6, 0xbb, 0xa5, 0x9f, 0x7a, 0x3f,
|
||||
0x02, 0xbd, 0x1f, 0x83, 0xff, 0xdb, 0xe0, 0xfc, 0x8b, 0xe6, 0x71,
|
||||
0xfe, 0x19, 0xfb, 0x4f, 0x28, 0xbb, 0xbf, 0xc3, 0xec, 0x3f, 0x67,
|
||||
0xfb, 0xad, 0x2a, 0x1f, 0xb6, 0x73, 0xff, 0x53, 0x55, 0xdf, 0xeb,
|
||||
0xe4, 0xcc, 0xd9, 0x26, 0xe7, 0xc3, 0x34, 0x6e, 0x9f, 0xa9, 0xfc,
|
||||
0xd8, 0x06, 0xf1, 0xf6, 0x05, 0xfc, 0x5e, 0xd0, 0x05, 0xf5, 0x63,
|
||||
0x2b, 0xe8, 0xdb, 0x0f, 0x7a, 0xbe, 0xb4, 0xf8, 0xb7, 0x5a, 0xfc,
|
||||
0x5b, 0xa4, 0xec, 0xbf, 0x0a, 0xf9, 0x7d, 0x25, 0xe5, 0xb8, 0x3f,
|
||||
0x49, 0xc8, 0x8f, 0xf4, 0x23, 0x72, 0x8d, 0xe2, 0xc3, 0x9e, 0xcf,
|
||||
0x8d, 0xfd, 0x0e, 0x58, 0xaf, 0x0d, 0xee, 0x6f, 0x14, 0xce, 0xe7,
|
||||
0x8d, 0x64, 0xff, 0x3d, 0xec, 0x27, 0xc0, 0x07, 0x40, 0xef, 0x2e,
|
||||
0x1e, 0xdf, 0xae, 0xee, 0xcf, 0x6e, 0xee, 0x7f, 0xad, 0xf0, 0x1e,
|
||||
0xee, 0x7f, 0x03, 0x78, 0xa7, 0xc2, 0x31, 0x2f, 0x78, 0xfe, 0xb6,
|
||||
0x43, 0xfd, 0xda, 0x09, 0x7a, 0x8f, 0xaa, 0xf5, 0x4b, 0x65, 0xfc,
|
||||
0x5e, 0x78, 0x5f, 0xd1, 0xfb, 0xfd, 0x16, 0xfc, 0xf1, 0x1d, 0xf8,
|
||||
0x63, 0x3b, 0xc4, 0x7b, 0x07, 0xc4, 0x7b, 0x87, 0xa5, 0xde, 0x94,
|
||||
0x65, 0x59, 0xbf, 0x00, 0xf4, 0x75, 0x4a, 0x3d, 0xac, 0x11, 0x1e,
|
||||
0xef, 0x9f, 0xd6, 0xf3, 0xfd, 0x00, 0xe8, 0xed, 0x74, 0xe8, 0xdd,
|
||||
0x97, 0x87, 0xde, 0x1f, 0x06, 0x40, 0xef, 0x3e, 0x87, 0xde, 0xae,
|
||||
0x73, 0x4c, 0x6f, 0x97, 0x43, 0x6f, 0x2c, 0x0f, 0xbd, 0xfb, 0x07,
|
||||
0x40, 0x6f, 0xcc, 0x92, 0x3f, 0x07, 0xce, 0xe2, 0xfa, 0xf8, 0xff,
|
||||
0x24, 0xac, 0x87, 0xc5, 0x52, 0xef, 0xe2, 0xe0, 0x9f, 0xa2, 0x2c,
|
||||
0xff, 0xcf, 0x4c, 0xd7, 0xb7, 0x5c, 0xeb, 0x9d, 0xf9, 0xbd, 0x67,
|
||||
0x58, 0x1f, 0xf4, 0x24, 0x2c, 0xf5, 0xb7, 0x07, 0xf4, 0xd4, 0x3b,
|
||||
0xde, 0x8f, 0x36, 0x52, 0xfe, 0xeb, 0x37, 0x59, 0xd6, 0x3f, 0xdd,
|
||||
0x0f, 0x7f, 0xb8, 0x3e, 0xff, 0x01, 0x71, 0x69, 0x23, 0x9d, 0x42,
|
||||
0x02, 0x00, 0x00, 0x78, 0xda, 0x8d, 0x97, 0xbb, 0x4f, 0x15, 0x41,
|
||||
0x14, 0x87, 0xf7, 0xec, 0x22, 0xc6, 0x10, 0x0d, 0x21, 0x04, 0x03,
|
||||
0x89, 0x85, 0x09, 0x8d, 0x85, 0x31, 0x84, 0xc6, 0x84, 0x8e, 0xd0,
|
||||
0xd8, 0x40, 0xab, 0xd1, 0x3f, 0x40, 0x0b, 0x1a, 0x12, 0x4c, 0x6c,
|
||||
0x7d, 0xf2, 0x10, 0x45, 0x41, 0x50, 0xec, 0x4d, 0xb4, 0x92, 0x04,
|
||||
0x04, 0x11, 0x41, 0xb1, 0xf1, 0xd9, 0x21, 0x76, 0x8a, 0x2f, 0x14,
|
||||
0x14, 0x79, 0xf8, 0x28, 0x50, 0x81, 0x73, 0x77, 0x67, 0xd9, 0x81,
|
||||
0xcc, 0xdc, 0x7c, 0x93, 0x9c, 0x64, 0xce, 0xe6, 0xbb, 0xbf, 0xdf,
|
||||
0xce, 0xcc, 0x99, 0xb9, 0xb3, 0x41, 0xc0, 0xda, 0x9a, 0xb6, 0x02,
|
||||
0xcf, 0x73, 0x3b, 0x5f, 0xf5, 0x70, 0xab, 0x5b, 0xb8, 0xff, 0x50,
|
||||
0xef, 0x9f, 0x87, 0xdb, 0xda, 0xfe, 0x7a, 0x38, 0x31, 0x91, 0xb6,
|
||||
0x15, 0xa8, 0xf7, 0x1b, 0xea, 0xfd, 0x82, 0xdc, 0x4f, 0xc8, 0x2d,
|
||||
0x43, 0x6e, 0x09, 0x72, 0x8b, 0x70, 0xbc, 0x0b, 0x50, 0xef, 0x87,
|
||||
0x87, 0x8b, 0x72, 0x9c, 0x64, 0xe4, 0xbc, 0x87, 0x0b, 0x63, 0x2e,
|
||||
0xcb, 0xbf, 0x43, 0xdf, 0x6f, 0x50, 0x6f, 0x0e, 0x72, 0xb3, 0x79,
|
||||
0xb8, 0x28, 0xca, 0xf2, 0xaf, 0x70, 0xbc, 0x5f, 0xa0, 0xef, 0x0c,
|
||||
0x1c, 0xef, 0x67, 0xa8, 0xf7, 0x09, 0xea, 0x7d, 0x84, 0xfb, 0xed,
|
||||
0x03, 0xd4, 0x7b, 0x0f, 0xb9, 0x69, 0xe8, 0xfb, 0x0e, 0xce, 0xf3,
|
||||
0x5b, 0xe8, 0xfb, 0x06, 0xd6, 0xfd, 0x14, 0xd4, 0x7b, 0x0d, 0xb9,
|
||||
0x49, 0xb8, 0x6e, 0xaf, 0x20, 0xf7, 0x12, 0xfa, 0xbe, 0x80, 0xdc,
|
||||
0x73, 0xc8, 0x3d, 0x83, 0xef, 0xf7, 0x14, 0x72, 0x4f, 0x20, 0x37,
|
||||
0x01, 0xb9, 0xc7, 0xb0, 0x5e, 0x1e, 0x41, 0xbd, 0x71, 0x38, 0x2f,
|
||||
0x63, 0x90, 0x7b, 0x08, 0xb9, 0x51, 0xc8, 0x3d, 0x80, 0xdc, 0x08,
|
||||
0xe4, 0xee, 0x43, 0x6e, 0x18, 0x72, 0x43, 0x90, 0xbb, 0x07, 0xb9,
|
||||
0x41, 0xc8, 0x0d, 0xc0, 0xf5, 0xed, 0xcf, 0xa3, 0x67, 0x1d, 0xf7,
|
||||
0xc1, 0x5d, 0xc8, 0xdd, 0x84, 0xe7, 0xcb, 0x0d, 0xc8, 0x5d, 0x87,
|
||||
0x5c, 0x2f, 0xe4, 0x7a, 0x20, 0x77, 0x0d, 0x72, 0xdd, 0x90, 0xeb,
|
||||
0x82, 0xdc, 0x55, 0xc8, 0x5d, 0x81, 0x5c, 0x27, 0xac, 0x97, 0xcb,
|
||||
0x1e, 0x6e, 0x5b, 0x6e, 0x7d, 0x25, 0x8a, 0x52, 0xf6, 0x12, 0xe4,
|
||||
0x3a, 0x20, 0x77, 0xd1, 0xc3, 0x15, 0xc4, 0xf7, 0x8d, 0x0d, 0x2c,
|
||||
0x68, 0xf7, 0x70, 0x85, 0x31, 0x97, 0x09, 0xb6, 0xe5, 0x3b, 0xff,
|
||||
0xac, 0x0b, 0x4c, 0x2b, 0x9c, 0x97, 0x96, 0x7c, 0xf7, 0x21, 0x0b,
|
||||
0xbc, 0x00, 0xf7, 0xc7, 0x79, 0xb8, 0x6e, 0xe7, 0xe0, 0x39, 0x7e,
|
||||
0x16, 0xea, 0x9d, 0x81, 0xe3, 0x38, 0x0d, 0xe7, 0x25, 0xd7, 0x5f,
|
||||
0xd6, 0xd8, 0x9d, 0xde, 0xe3, 0x3d, 0xbe, 0xd5, 0x1a, 0x3b, 0x24,
|
||||
0xf1, 0xc9, 0xb5, 0x32, 0x71, 0xeb, 0xd5, 0x69, 0x14, 0xe9, 0x83,
|
||||
0x12, 0x93, 0xef, 0x95, 0xac, 0x0e, 0xc4, 0x5a, 0xb8, 0xa3, 0x1a,
|
||||
0x7b, 0xac, 0x1f, 0x56, 0x89, 0xdb, 0xf7, 0x98, 0xe1, 0xb6, 0x9b,
|
||||
0xfc, 0xb0, 0xc7, 0xb7, 0x59, 0xa3, 0xd2, 0x7a, 0x70, 0xc2, 0xa3,
|
||||
0x77, 0xd2, 0x70, 0x95, 0x26, 0x3f, 0x25, 0xee, 0xba, 0x1a, 0xd3,
|
||||
0x38, 0x24, 0x49, 0x5d, 0xc6, 0x75, 0x21, 0xee, 0x73, 0x77, 0x52,
|
||||
0xa3, 0x41, 0xf3, 0x72, 0x93, 0xdf, 0x92, 0xac, 0x9e, 0x25, 0x6e,
|
||||
0x49, 0xfe, 0x47, 0xe3, 0xb8, 0x24, 0xfb, 0x26, 0xfe, 0x3f, 0xd9,
|
||||
0x34, 0x2f, 0x99, 0x62, 0xa8, 0xbd, 0x46, 0x8d, 0x8a, 0xf4, 0x7b,
|
||||
0x44, 0xb2, 0xfd, 0x66, 0xc9, 0x05, 0xfb, 0x25, 0x79, 0xa7, 0xf4,
|
||||
0x8d, 0x25, 0x74, 0xd7, 0xd5, 0x41, 0xed, 0xb6, 0x69, 0x14, 0x9b,
|
||||
0xbc, 0x22, 0x74, 0xcf, 0x5f, 0xad, 0x26, 0x7d, 0x1a, 0xbb, 0x4c,
|
||||
0x7e, 0x20, 0x74, 0xfb, 0xd6, 0x6b, 0xe7, 0xb6, 0xe5, 0x5b, 0xe3,
|
||||
0xf1, 0x3d, 0xa2, 0xdd, 0x01, 0xcb, 0xa0, 0x35, 0x74, 0xaf, 0x47,
|
||||
0x93, 0x32, 0x83, 0x16, 0x77, 0xc7, 0xc3, 0x35, 0x1b, 0x6e, 0x67,
|
||||
0xfa, 0xdd, 0xe2, 0xe1, 0x3a, 0x94, 0x99, 0xd0, 0x28, 0x35, 0xf9,
|
||||
0xbe, 0xc8, 0xcd, 0xcd, 0x2b, 0x33, 0x65, 0xf9, 0xd6, 0x7a, 0xb8,
|
||||
0x75, 0xa8, 0xe8, 0x68, 0x64, 0x16, 0x02, 0x00, 0x00, 0x78, 0xda,
|
||||
0x4d, 0xd4, 0x49, 0x6c, 0x4d, 0x61, 0x18, 0x87, 0xf1, 0xdb, 0xe1,
|
||||
0x56, 0x88, 0xc4, 0x46, 0x2c, 0xac, 0x50, 0xad, 0x79, 0x1e, 0x5a,
|
||||
0x35, 0x5d, 0x6a, 0x6c, 0x55, 0x51, 0x43, 0x5b, 0x94, 0x52, 0x43,
|
||||
0x6b, 0x68, 0x55, 0x4d, 0xd5, 0x92, 0x48, 0x6a, 0xc1, 0x06, 0x1b,
|
||||
0x89, 0x85, 0x85, 0x04, 0xe9, 0x4e, 0x2c, 0x88, 0x48, 0x58, 0x20,
|
||||
0x91, 0xb0, 0x23, 0xc2, 0x42, 0x24, 0x22, 0x76, 0x84, 0xd8, 0x89,
|
||||
0x88, 0xe7, 0xf5, 0x3d, 0x49, 0x7b, 0x73, 0xfe, 0xe7, 0xfc, 0xf2,
|
||||
0xde, 0xf7, 0x9c, 0xfb, 0xe5, 0xbd, 0xdf, 0xbd, 0x99, 0xcc, 0xc0,
|
||||
0xab, 0x30, 0x93, 0xc9, 0x8d, 0xe3, 0x5a, 0x5b, 0x90, 0x5c, 0x8c,
|
||||
0xeb, 0x70, 0x1e, 0x1e, 0x8f, 0x1b, 0x70, 0x3e, 0x2e, 0xc1, 0xcd,
|
||||
0xba, 0x14, 0xb7, 0x61, 0x8e, 0xdc, 0x04, 0xdc, 0x95, 0xea, 0x99,
|
||||
0x70, 0x8f, 0x9e, 0x48, 0x2e, 0xea, 0x49, 0xe4, 0x8a, 0xfd, 0x93,
|
||||
0xf1, 0x0d, 0xeb, 0xe1, 0xdb, 0x7a, 0x0a, 0xb9, 0xaf, 0xa7, 0x92,
|
||||
0xa7, 0xf6, 0x4f, 0xc3, 0xaf, 0xad, 0x87, 0xdf, 0xe9, 0xe9, 0xe4,
|
||||
0xb3, 0x9e, 0x41, 0xbe, 0xdb, 0x3f, 0x13, 0xff, 0xb6, 0x1e, 0xce,
|
||||
0x2f, 0x4c, 0x9e, 0x45, 0x86, 0xeb, 0xd9, 0x64, 0x54, 0x61, 0xea,
|
||||
0x9f, 0x83, 0xc7, 0x58, 0x0f, 0x97, 0xe8, 0xb9, 0xb1, 0x0e, 0x3d,
|
||||
0x2f, 0xde, 0x4b, 0xce, 0xcd, 0xc7, 0x15, 0xba, 0x0c, 0x57, 0xea,
|
||||
0x72, 0x5c, 0xa3, 0x17, 0xe0, 0x7a, 0x9f, 0x5f, 0x81, 0x5b, 0x7c,
|
||||
0x4e, 0xb8, 0x53, 0x2f, 0x24, 0x17, 0xf4, 0x22, 0x72, 0xcd, 0xfe,
|
||||
0xc5, 0xf8, 0x96, 0xf5, 0x70, 0xbf, 0x5e, 0x12, 0xf3, 0xd1, 0x4b,
|
||||
0xc9, 0x63, 0xfb, 0x73, 0xf8, 0xb9, 0xf5, 0xf0, 0x2b, 0xbd, 0x8c,
|
||||
0xbc, 0xd5, 0xcb, 0xc9, 0x47, 0xd7, 0x56, 0x89, 0xbf, 0x7a, 0xef,
|
||||
0x0a, 0xfc, 0xd3, 0x9e, 0xf0, 0x1f, 0xbd, 0x92, 0x0c, 0xcd, 0x26,
|
||||
0xaf, 0x8a, 0x59, 0x25, 0xe7, 0x56, 0xe3, 0x62, 0xbd, 0x26, 0xbe,
|
||||
0x3f, 0xbd, 0x16, 0x97, 0xe9, 0xaa, 0xf8, 0x3c, 0x5d, 0x8d, 0xab,
|
||||
0xf5, 0xba, 0x98, 0x89, 0xae, 0x89, 0x35, 0xe7, 0xa7, 0x35, 0xac,
|
||||
0xc7, 0xfb, 0xfc, 0xac, 0x70, 0x87, 0xae, 0x25, 0xbd, 0x7a, 0x03,
|
||||
0xb9, 0x94, 0x4d, 0xfd, 0x1b, 0xf1, 0x75, 0xeb, 0xe1, 0x3b, 0x7a,
|
||||
0x13, 0x79, 0xa8, 0xeb, 0xc8, 0xcb, 0x6c, 0xda, 0xcf, 0x9b, 0xf1,
|
||||
0x07, 0xef, 0xdd, 0x82, 0xbf, 0xd8, 0x13, 0xfe, 0xa1, 0xb7, 0x92,
|
||||
0xbf, 0x7a, 0x5b, 0xec, 0x93, 0xa2, 0xb4, 0xce, 0x7a, 0x3c, 0x5a,
|
||||
0x37, 0xe0, 0x52, 0xdd, 0x18, 0x7b, 0x4e, 0x6f, 0xc7, 0xe5, 0x7a,
|
||||
0x47, 0xcc, 0x1d, 0x73, 0xe4, 0x76, 0xe2, 0x5f, 0x99, 0xe4, 0x26,
|
||||
0xae, 0x63, 0xf3, 0x92, 0x77, 0xc5, 0x1c, 0xf4, 0xee, 0x98, 0xad,
|
||||
0x6e, 0x8e, 0x3d, 0xaa, 0xf7, 0xe0, 0x56, 0xbd, 0x37, 0xe6, 0x59,
|
||||
0xf0, 0xff, 0xa7, 0x9a, 0x6b, 0xe1, 0x54, 0x45, 0x31, 0x1b, 0x33,
|
||||
0x23, 0x8d, 0x7a, 0x7f, 0xec, 0x31, 0x7d, 0x80, 0xb4, 0xeb, 0x83,
|
||||
0xa4, 0x5b, 0xb7, 0x92, 0x3e, 0xdd, 0x46, 0x2e, 0xeb, 0x43, 0xe4,
|
||||
0xaa, 0x3e, 0x1c, 0xb3, 0x1d, 0xe4, 0x9b, 0xfa, 0x08, 0xb9, 0xab,
|
||||
0x8f, 0x92, 0x7b, 0xba, 0x3d, 0x7a, 0x0a, 0x06, 0xdc, 0xaf, 0x3b,
|
||||
0xc8, 0x03, 0x7d, 0x8c, 0x3c, 0xd3, 0x9d, 0xe4, 0x51, 0xd1, 0x80,
|
||||
0x9f, 0xe8, 0xe3, 0xe4, 0x85, 0xee, 0x8a, 0xdf, 0xbb, 0x3e, 0x41,
|
||||
0xde, 0x0c, 0xf2, 0x7b, 0x7d, 0x92, 0x7c, 0xd2, 0xa7, 0x62, 0x3f,
|
||||
0xeb, 0xd3, 0xe4, 0x9b, 0x3e, 0x13, 0xf3, 0xd7, 0xdd, 0xb1, 0xb7,
|
||||
0xf5, 0xd9, 0xf8, 0xcf, 0x1b, 0x92, 0xdc, 0x43, 0x86, 0xe9, 0x5e,
|
||||
0x32, 0x42, 0x9f, 0x23, 0x4d, 0x85, 0x69, 0xe6, 0xe7, 0x39, 0x8d,
|
||||
0xb4, 0xde, 0x17, 0xfb, 0x1f, 0xff, 0x03, 0x7d, 0x37, 0x69, 0x44,
|
||||
0xab, 0x00, 0x00, 0x00, 0x78, 0xda, 0x45, 0xd0, 0x29, 0x0f, 0xc2,
|
||||
0x40, 0x14, 0x45, 0xe1, 0x81, 0x96, 0x96, 0x7d, 0xdf, 0x2d, 0xff,
|
||||
0x0a, 0x81, 0xc2, 0xd7, 0xe3, 0x51, 0x28, 0x14, 0x0e, 0x4b, 0x70,
|
||||
0x28, 0x12, 0x0c, 0x86, 0xe0, 0x70, 0x18, 0x1c, 0x0e, 0x87, 0xc2,
|
||||
0x22, 0xb8, 0x2f, 0xef, 0x24, 0x34, 0x39, 0x99, 0x2f, 0x93, 0x37,
|
||||
0xd3, 0xa6, 0x21, 0xfc, 0x9f, 0x1c, 0xeb, 0x34, 0x71, 0x5b, 0x73,
|
||||
0x39, 0x1f, 0xbc, 0x0c, 0x47, 0x6a, 0x21, 0xc7, 0xc1, 0x5b, 0xe2,
|
||||
0x82, 0x5a, 0x71, 0x56, 0x4b, 0x58, 0x27, 0x3e, 0x9b, 0xaa, 0x0d,
|
||||
0x67, 0xcd, 0x5b, 0x5c, 0x54, 0x3b, 0x5c, 0x52, 0x07, 0xe6, 0xcb,
|
||||
0x36, 0x13, 0xf9, 0xbe, 0x79, 0x8f, 0x2b, 0xea, 0x88, 0xab, 0xea,
|
||||
0x12, 0xf9, 0x7c, 0x4d, 0x9d, 0xb8, 0xc7, 0x7c, 0xc6, 0x75, 0x75,
|
||||
0xc5, 0x0d, 0x75, 0xe3, 0xfe, 0xa6, 0xba, 0xb3, 0x6f, 0x7e, 0xe0,
|
||||
0x96, 0x7a, 0xe2, 0xb6, 0x7a, 0xe1, 0x8e, 0x7a, 0xe3, 0xae, 0xfa,
|
||||
0xe0, 0x9e, 0xfa, 0xe2, 0xbe, 0xfd, 0x8b, 0xd4, 0x3d, 0xb0, 0xef,
|
||||
0xc6, 0x43, 0x7b, 0x37, 0x1e, 0xa9, 0x59, 0xec, 0x1e, 0xab, 0x89,
|
||||
0xf6, 0x7f, 0xeb, 0xca, 0x15, 0x07, 0x06, 0x02, 0x00, 0x00, 0x78,
|
||||
0xda, 0xed, 0xd4, 0xb9, 0x4f, 0x14, 0x51, 0x1c, 0xc0, 0xf1, 0x99,
|
||||
0x5d, 0x05, 0xdd, 0x55, 0x41, 0x0e, 0xb9, 0xd4, 0x5d, 0x44, 0x45,
|
||||
0x05, 0x15, 0xb9, 0xe4, 0x50, 0x98, 0x63, 0x47, 0xd6, 0x03, 0x41,
|
||||
0xbc, 0xb8, 0x14, 0xe4, 0x4e, 0x08, 0x81, 0x4a, 0x1b, 0x12, 0xa6,
|
||||
0x93, 0x82, 0x82, 0x86, 0x84, 0x35, 0x6a, 0x88, 0x7f, 0x81, 0x05,
|
||||
0x16, 0x6a, 0x21, 0x89, 0x24, 0x90, 0x90, 0x10, 0x42, 0x43, 0x68,
|
||||
0xc8, 0x96, 0xd8, 0xd1, 0xd1, 0x50, 0xf0, 0x9d, 0xb7, 0x8f, 0x28,
|
||||
0x10, 0x89, 0x21, 0x48, 0xc5, 0xcb, 0x7e, 0xf6, 0x97, 0x97, 0x7d,
|
||||
0xd7, 0xfe, 0xe6, 0x37, 0x4f, 0x51, 0x0e, 0xda, 0x7e, 0xb7, 0x27,
|
||||
0x78, 0x86, 0x5a, 0x3c, 0xc5, 0x73, 0xd4, 0xa1, 0xf3, 0x8f, 0x31,
|
||||
0x2a, 0x5c, 0x70, 0xe3, 0x10, 0x0e, 0x23, 0x0a, 0xd1, 0x38, 0x82,
|
||||
0xa3, 0xf0, 0xc0, 0x8b, 0x63, 0x38, 0x8e, 0x13, 0x88, 0x41, 0x2c,
|
||||
0x4e, 0x22, 0x0e, 0xf1, 0x48, 0x40, 0x22, 0x4e, 0x21, 0x09, 0xc9,
|
||||
0x48, 0xd9, 0x74, 0x22, 0xbb, 0x9c, 0x2f, 0x8d, 0x0f, 0x6c, 0x2d,
|
||||
0x75, 0x1f, 0xcf, 0xe0, 0xec, 0x95, 0x86, 0xd3, 0x38, 0x83, 0xb3,
|
||||
0xf0, 0xc1, 0x8f, 0x74, 0x9c, 0x43, 0x06, 0xce, 0xe3, 0x02, 0x2e,
|
||||
0x22, 0x13, 0x97, 0x70, 0x19, 0x57, 0x90, 0x85, 0x6c, 0x5c, 0xc5,
|
||||
0x35, 0x5c, 0x47, 0x0e, 0x6e, 0x20, 0x17, 0x79, 0xc8, 0x47, 0x01,
|
||||
0x0a, 0x71, 0x13, 0x45, 0x28, 0x46, 0x09, 0x4a, 0x71, 0x0b, 0xb7,
|
||||
0x51, 0x06, 0x99, 0x0c, 0x45, 0x87, 0x01, 0x13, 0x01, 0x58, 0xb8,
|
||||
0x83, 0x0a, 0x04, 0x71, 0x17, 0xf7, 0x70, 0x1f, 0x0f, 0x50, 0x89,
|
||||
0x87, 0xa8, 0x42, 0x35, 0x1e, 0xa1, 0x06, 0x8f, 0x45, 0x36, 0x73,
|
||||
0x74, 0x8f, 0xcc, 0xa9, 0x57, 0xe6, 0xc2, 0x27, 0xff, 0x43, 0x9e,
|
||||
0xdc, 0xbb, 0x42, 0xce, 0x69, 0x40, 0x3b, 0x1a, 0xf1, 0x02, 0x2f,
|
||||
0xd1, 0x84, 0x66, 0xbc, 0x42, 0xbd, 0xfc, 0xbd, 0x15, 0x6d, 0xe8,
|
||||
0xd8, 0x52, 0x5f, 0xbd, 0x78, 0x83, 0x01, 0xbc, 0xc5, 0x10, 0x86,
|
||||
0x31, 0x82, 0x10, 0x3e, 0xe1, 0x33, 0xbe, 0xe0, 0x1b, 0x7e, 0xe0,
|
||||
0x27, 0xa6, 0x30, 0x87, 0x05, 0x84, 0xf1, 0x4b, 0x3e, 0x63, 0xa7,
|
||||
0xad, 0xfd, 0x4b, 0x61, 0x07, 0xdf, 0x5b, 0xca, 0x28, 0x96, 0x51,
|
||||
0xf4, 0xc1, 0x52, 0xaa, 0x89, 0xcd, 0xe8, 0xc2, 0x1c, 0x7d, 0xff,
|
||||
0x47, 0x4b, 0x19, 0xfc, 0x6e, 0xfd, 0x9e, 0xb0, 0x42, 0x6a, 0xfb,
|
||||
0x60, 0xeb, 0x01, 0x12, 0x53, 0xa3, 0xee, 0xfe, 0x9d, 0x7a, 0xad,
|
||||
0x6e, 0xd4, 0xf1, 0x06, 0xe7, 0xd1, 0x69, 0x46, 0xbc, 0xac, 0xab,
|
||||
0x4c, 0x59, 0x0f, 0xa5, 0x62, 0xf4, 0x98, 0x16, 0x39, 0xc4, 0x84,
|
||||
0x56, 0x25, 0x62, 0x58, 0xab, 0x8b, 0x2c, 0xa3, 0xb7, 0x8a, 0x10,
|
||||
0xab, 0xf7, 0x88, 0xe8, 0xd7, 0x1b, 0xfe, 0xb2, 0xdf, 0xbb, 0x50,
|
||||
0xa8, 0x6c, 0x2f, 0xef, 0x04, 0xcf, 0x42, 0x06, 0x25, 0x38, 0xcd,
|
||||
0x99, 0x6d, 0xa7, 0xe4, 0x02, 0x23, 0x91, 0x5c, 0x94, 0x6f, 0x1f,
|
||||
0xe9, 0x0f, 0xfc, 0xef, 0xfb, 0x69, 0x96, 0xbd, 0x97, 0xd4, 0xbd,
|
||||
0x58, 0xc9, 0x39, 0xab, 0xf3, 0x8c, 0x77, 0xdf, 0x5a, 0xb6, 0xf4,
|
||||
0x2b, 0xb9, 0x90, 0x9a, 0xd0, 0xed, 0x12, 0x5d, 0xb3, 0x3f, 0x12,
|
||||
0x29, 0x5f, 0x9b, 0x7d, 0xe6, 0xcd, 0x51, 0xd7, 0x4e, 0xab, 0xc5,
|
||||
0x31, 0x66, 0x15, 0x61, 0xf3, 0x2b, 0xe3, 0x26, 0x31, 0x83, 0xc5,
|
||||
0x1d, 0xe7, 0x74, 0x98, 0x8a, 0xbd, 0xc4, 0x9c, 0x09, 0xae, 0x83,
|
||||
0x71, 0x63, 0x55, 0x8c, 0x0d, 0xd2, 0x1f, 0xa3, 0x3f, 0x64, 0xa8,
|
||||
0x6e, 0xd1, 0x37, 0xbc, 0x22, 0xae, 0xe8, 0x89, 0x44, 0x9f, 0x7b,
|
||||
0xf3, 0x0a, 0xeb, 0x87, 0x8d, 0x61, 0xd4
|
||||
0x2d, 0x95, 0xca, 0x89, 0x5b, 0xcf, 0x91, 0x13, 0xaa, 0x52, 0x60,
|
||||
0xf8, 0x40, 0x91, 0x7d, 0xde, 0x35, 0xdf, 0x50, 0x8b, 0x6b, 0x6a,
|
||||
0x25, 0xb5, 0x30, 0x72, 0xc9, 0xcd, 0xd6, 0x71, 0x6a, 0x07, 0xae,
|
||||
0xc4, 0x14, 0x0a, 0x47, 0xa8, 0x83, 0x62, 0x68, 0x1d, 0xab, 0x99,
|
||||
0xf6, 0x8a, 0xd8, 0xa6, 0x5b, 0x65, 0xf3, 0x50, 0x29, 0x56, 0x3a,
|
||||
0x64, 0xca, 0x09, 0xf0, 0x1b, 0x5c, 0x6c, 0x17, 0x25, 0x6e, 0x15,
|
||||
0x5e, 0xd1, 0xb4, 0xd6, 0xcd, 0xe8, 0xe4, 0x23, 0x25, 0xfb, 0xca,
|
||||
0x71, 0xc3, 0xc9, 0xda, 0xa9, 0xae, 0x0f, 0xab, 0xcc, 0x96, 0x85,
|
||||
0x62, 0xa5, 0x64, 0x35, 0x8d, 0xf9, 0x97, 0xe7, 0x59, 0xc4, 0x22,
|
||||
0x0e, 0x60, 0x4d, 0x49, 0x14, 0x94, 0x38, 0xf0, 0x73, 0x85, 0x99,
|
||||
0x9f, 0x87, 0xcb, 0xa5, 0xc0, 0x35, 0xa1, 0xb8, 0x3e, 0x5a, 0x8d,
|
||||
0x9d, 0x4f, 0xf5, 0xb1, 0xb9, 0xcc, 0x91, 0xc6, 0x5e, 0x8f, 0xf5,
|
||||
0xf8, 0x44, 0x3f, 0x80, 0x57, 0x43, 0x72, 0x58, 0x04, 0xdb, 0x2f,
|
||||
0x10, 0x57, 0xc8, 0x16, 0x29, 0x9c, 0x45, 0x14, 0x8b, 0x12, 0xcc,
|
||||
0x05, 0x0e, 0xa0, 0x24, 0x67, 0x61, 0x54, 0x41, 0xf4, 0x39, 0x62,
|
||||
0x3d, 0x95, 0x9b, 0x57, 0x5c, 0xc2, 0xba, 0x28, 0x71, 0xab, 0x1c,
|
||||
0xa0, 0x4f, 0x19, 0xec, 0x39, 0xa1, 0x0f, 0x0d, 0xd5, 0xb7, 0x8f,
|
||||
0x0f, 0xe5, 0x86, 0x1e, 0x34, 0xb9, 0x91, 0x73, 0x2b, 0xb8, 0x47,
|
||||
0xf1, 0xed, 0xb9, 0x29, 0x78, 0x65, 0x0d, 0x48, 0x1a, 0x6c, 0x0a,
|
||||
0x4c, 0x7e, 0x8f, 0xe3, 0x64, 0x44, 0x9f, 0x2f, 0xb4, 0x41, 0xde,
|
||||
0x73, 0xa3, 0xc4, 0xad, 0x72, 0x78, 0x6c, 0x5b, 0x65, 0xd5, 0xb1,
|
||||
0x9a, 0x82, 0x76, 0x3c, 0x10, 0x9f, 0x0e, 0x94, 0xf2, 0xc9, 0xc7,
|
||||
0x8d, 0xb0, 0xd3, 0x5c, 0xb9, 0x8d, 0xb0, 0xda, 0xba, 0x2d, 0xb3,
|
||||
0x9b, 0xad, 0x76, 0x64, 0xc7, 0x0e, 0x8a, 0x86, 0xb9, 0x33, 0xf1,
|
||||
0x1b, 0x23, 0x32, 0x29, 0xb4, 0x05, 0xe2, 0x0a, 0xf3, 0x0a, 0x3d,
|
||||
0x24, 0x6b, 0x1f, 0x7d, 0xd3, 0x69, 0xbb, 0x43, 0x9d, 0xf2, 0x8c,
|
||||
0xde, 0xe7, 0x27, 0x50, 0x46, 0x32, 0x0e, 0x56, 0x92, 0x56, 0xfc,
|
||||
0x8e, 0xd8, 0x55, 0x2a, 0x9e, 0x82, 0x7c, 0x6f, 0x65, 0x80, 0x5b,
|
||||
0x02, 0x3f, 0xa7, 0x6c, 0x01, 0x96, 0xeb, 0x2f, 0x0d, 0x65, 0xc1,
|
||||
0xfb, 0x2e, 0x10, 0x57, 0x38, 0x70, 0xf7, 0x35, 0x3e, 0xff, 0x78,
|
||||
0x36, 0x8b, 0x58, 0xc4, 0x21, 0xe5, 0x26, 0x27, 0x28, 0xcf, 0x24,
|
||||
0x11, 0x8b, 0xe0, 0x42, 0xb1, 0x5a, 0x71, 0xc3, 0x20, 0xee, 0x34,
|
||||
0x46, 0x10, 0x50, 0xdb, 0x72, 0x93, 0xf3, 0xe5, 0x65, 0xc2, 0xce,
|
||||
0x4a, 0xbe, 0xd6, 0x3d, 0xef, 0xba, 0xde, 0xa4, 0x4d, 0x3d, 0xda,
|
||||
0x03, 0xaa, 0x52, 0xc6, 0xff, 0x01, 0x7a, 0xb6, 0xa0, 0x3b, 0x9a,
|
||||
0x05, 0x00, 0x00, 0x78, 0xda, 0xcd, 0x59, 0x6b, 0x6c, 0x14, 0x55,
|
||||
0x14, 0x9e, 0x53, 0x68, 0xc1, 0x25, 0x44, 0x4d, 0x6d, 0x6b, 0x45,
|
||||
0xdc, 0x56, 0x24, 0xd1, 0xd4, 0x47, 0xac, 0xba, 0x80, 0x4a, 0x7d,
|
||||
0xbb, 0x8a, 0xc5, 0x17, 0x8a, 0x29, 0xc1, 0x90, 0x60, 0x15, 0x05,
|
||||
0x05, 0xb5, 0x06, 0x03, 0xc1, 0xd0, 0x5d, 0x50, 0xa8, 0x4d, 0x48,
|
||||
0x48, 0x4c, 0x48, 0x10, 0x29, 0x01, 0x49, 0x14, 0xd4, 0xe2, 0x03,
|
||||
0x83, 0x89, 0xa8, 0xd4, 0x60, 0x78, 0x68, 0x2b, 0x16, 0x30, 0x1a,
|
||||
0xff, 0x0b, 0xf2, 0xee, 0x2e, 0x28, 0xbe, 0xea, 0xb9, 0x99, 0xb3,
|
||||
0xd9, 0x33, 0x9f, 0xb3, 0xf7, 0xee, 0xb6, 0xa1, 0x61, 0x92, 0xdb,
|
||||
0xb9, 0xdf, 0x7e, 0xe7, 0xde, 0xf9, 0xee, 0x99, 0x73, 0xce, 0x9d,
|
||||
0x99, 0x7a, 0x5e, 0xf0, 0x88, 0x72, 0x6b, 0xe6, 0xd6, 0x23, 0xb8,
|
||||
0x5c, 0xfa, 0x3f, 0x73, 0x4b, 0x71, 0xab, 0x95, 0xf3, 0x10, 0xe1,
|
||||
0x9b, 0x94, 0x6d, 0x9a, 0x5b, 0x2b, 0xb7, 0x5f, 0xa4, 0x3f, 0x98,
|
||||
0xdb, 0xf5, 0xdc, 0x76, 0xc3, 0xfc, 0x3d, 0xc2, 0x9b, 0xa3, 0x44,
|
||||
0x70, 0x42, 0xce, 0xe3, 0xb9, 0x9d, 0xee, 0xed, 0xed, 0xd5, 0xf6,
|
||||
0x27, 0x65, 0x2e, 0x2f, 0xc7, 0x7c, 0xa7, 0x1c, 0xfc, 0xef, 0x0e,
|
||||
0xfe, 0x0f, 0xe0, 0xdf, 0x06, 0xfe, 0xb4, 0x83, 0xff, 0xd3, 0xc1,
|
||||
0xff, 0xe5, 0xe0, 0xff, 0x76, 0xf0, 0xff, 0x38, 0xf8, 0x7f, 0x1d,
|
||||
0x7c, 0xaf, 0x83, 0xf7, 0xc8, 0xce, 0x93, 0x83, 0x2f, 0x72, 0xf0,
|
||||
0x83, 0x1c, 0xfc, 0x60, 0x07, 0x5f, 0xec, 0xe0, 0x4b, 0x1c, 0xfc,
|
||||
0x10, 0xc5, 0x1b, 0x3c, 0x94, 0xb2, 0xf1, 0x1b, 0x95, 0xd8, 0x8b,
|
||||
0x08, 0x8e, 0x71, 0x5b, 0xe9, 0xe5, 0x3e, 0xa6, 0x73, 0x3b, 0x87,
|
||||
0xc7, 0x0f, 0x13, 0x7c, 0x1d, 0xb7, 0xe3, 0x16, 0x7b, 0xc3, 0x1f,
|
||||
0x73, 0xf0, 0x27, 0x00, 0x1f, 0xb5, 0xd8, 0x1b, 0xbd, 0x11, 0x58,
|
||||
0x6f, 0x8b, 0xc5, 0x7e, 0x86, 0xac, 0xef, 0x94, 0xe4, 0x94, 0xc1,
|
||||
0x49, 0x93, 0x13, 0x0a, 0x2f, 0x02, 0x7e, 0xb1, 0xe2, 0x31, 0x1f,
|
||||
0xc3, 0xfc, 0x31, 0x4c, 0xf9, 0xe3, 0x6c, 0x3f, 0xcc, 0xfa, 0x4a,
|
||||
0x29, 0xb8, 0xde, 0x0b, 0x00, 0x97, 0x01, 0x2e, 0x07, 0x5c, 0x01,
|
||||
0xf8, 0x42, 0xc0, 0x95, 0x80, 0x2f, 0x02, 0x3c, 0x02, 0xf0, 0xc5,
|
||||
0x8c, 0x4f, 0x5a, 0x7c, 0xec, 0x39, 0xe2, 0x67, 0x1b, 0xdc, 0x8f,
|
||||
0x91, 0x3c, 0x5f, 0xa9, 0xe2, 0x77, 0x60, 0x3e, 0x7b, 0xc1, 0x7c,
|
||||
0xa8, 0x82, 0x7c, 0xa8, 0xa6, 0x60, 0x3e, 0xec, 0x57, 0xe3, 0x4d,
|
||||
0x3c, 0x9c, 0x07, 0xd7, 0xef, 0x08, 0x99, 0xff, 0x12, 0xf2, 0x71,
|
||||
0x44, 0xfa, 0x49, 0xa9, 0xf9, 0xb5, 0x72, 0x1e, 0xa4, 0xec, 0x2f,
|
||||
0x85, 0x78, 0xfe, 0x09, 0xe6, 0x47, 0xfd, 0xa3, 0x20, 0x9f, 0x49,
|
||||
0xed, 0x47, 0x37, 0x70, 0x5b, 0x02, 0x7a, 0x8b, 0x15, 0xae, 0x91,
|
||||
0xfd, 0x4d, 0xc7, 0x83, 0x89, 0xf7, 0xa3, 0x90, 0x0f, 0x29, 0xc1,
|
||||
0x68, 0x6f, 0xf4, 0xec, 0x82, 0xf9, 0x12, 0x8e, 0x7c, 0xad, 0x05,
|
||||
0xbd, 0x97, 0x51, 0x50, 0x6f, 0x9b, 0xb2, 0xaf, 0x96, 0xf5, 0xd4,
|
||||
0x50, 0xd6, 0xbe, 0x06, 0xfc, 0xb3, 0x26, 0xc4, 0xdf, 0x57, 0x89,
|
||||
0x7d, 0x95, 0xd1, 0xc8, 0xfd, 0x6b, 0x94, 0xff, 0x2f, 0x27, 0x7f,
|
||||
0x0d, 0xda, 0xff, 0x45, 0x6a, 0x7c, 0x8c, 0x7c, 0x9b, 0x8c, 0xfd,
|
||||
0x15, 0x0e, 0xfb, 0x31, 0xe4, 0xdb, 0xe8, 0xe7, 0x85, 0x2b, 0x29,
|
||||
0xfb, 0xbc, 0x60, 0xfa, 0x46, 0x8f, 0x1e, 0x3f, 0x46, 0xed, 0xf7,
|
||||
0x86, 0x4f, 0xc8, 0xef, 0xb8, 0xbe, 0xa8, 0xf0, 0x3a, 0x1e, 0xd3,
|
||||
0x50, 0x9f, 0xd7, 0xa9, 0xf5, 0x37, 0xca, 0xfa, 0x2b, 0xe1, 0xf9,
|
||||
0xe5, 0x6a, 0xca, 0xde, 0xff, 0x51, 0xe0, 0xaf, 0x04, 0xf0, 0xd5,
|
||||
0xc0, 0x27, 0x81, 0x8f, 0x02, 0xbf, 0x08, 0xf8, 0x91, 0xc0, 0x2f,
|
||||
0x06, 0x7e, 0x04, 0xf0, 0xe3, 0x29, 0xc8, 0x57, 0x02, 0x7f, 0x0b,
|
||||
0xf0, 0x15, 0xc0, 0xdf, 0x06, 0x7c, 0x19, 0xf0, 0x77, 0x00, 0x5f,
|
||||
0x0a, 0xfc, 0x5d, 0xc0, 0x9f, 0x0f, 0x7c, 0x1c, 0xf8, 0x73, 0x43,
|
||||
0x9e, 0x0f, 0x35, 0x3f, 0x1c, 0xf2, 0xc9, 0xec, 0xaf, 0x07, 0x54,
|
||||
0x3e, 0x8d, 0x65, 0x7c, 0x50, 0xe1, 0x71, 0x8c, 0x7f, 0x53, 0xf8,
|
||||
0x46, 0xc6, 0x87, 0x14, 0xbe, 0x89, 0xf1, 0x61, 0x85, 0x6f, 0x66,
|
||||
0x7c, 0x44, 0xe1, 0x3a, 0x0a, 0xe6, 0xeb, 0xad, 0x8c, 0x8f, 0x29,
|
||||
0x7c, 0x3b, 0xe3, 0xe3, 0x0a, 0xdf, 0xc9, 0xf8, 0x84, 0xc2, 0x77,
|
||||
0x33, 0xee, 0x51, 0xfb, 0x5b, 0x4a, 0xd5, 0xde, 0x26, 0xb5, 0x36,
|
||||
0x7c, 0x9e, 0x4d, 0x4b, 0x7e, 0x8d, 0x86, 0x78, 0x4d, 0xab, 0xfa,
|
||||
0x53, 0x25, 0xf9, 0x16, 0x51, 0xd8, 0xe4, 0xe2, 0x70, 0x88, 0xbf,
|
||||
0x4c, 0x0d, 0x1d, 0xcb, 0xad, 0x53, 0xf9, 0xef, 0x1e, 0x19, 0x3f,
|
||||
0x9a, 0x82, 0xf9, 0x90, 0x0a, 0xc9, 0x1f, 0x73, 0x36, 0xfa, 0x77,
|
||||
0x5a, 0xf6, 0x0e, 0xa3, 0xe3, 0x5e, 0x4b, 0x3e, 0x63, 0x7d, 0x1b,
|
||||
0x6a, 0xd6, 0x27, 0x63, 0xee, 0x23, 0x3f, 0xb6, 0xcc, 0x79, 0x02,
|
||||
0xe5, 0x37, 0xde, 0xd4, 0x5a, 0x63, 0x6b, 0x72, 0xa0, 0x9e, 0x7c,
|
||||
0xfd, 0xf7, 0x83, 0xbf, 0xea, 0x21, 0xbf, 0xe3, 0xb0, 0xdf, 0x7c,
|
||||
0x18, 0x52, 0xdf, 0xea, 0x29, 0xab, 0x6f, 0x82, 0x68, 0x4b, 0x4b,
|
||||
0xbd, 0x49, 0x0b, 0xaf, 0xf5, 0x15, 0x7b, 0xe1, 0xf6, 0x24, 0x7c,
|
||||
0x42, 0xd9, 0x65, 0xc6, 0x4f, 0x24, 0x7f, 0x3d, 0x13, 0xe9, 0xff,
|
||||
0xf5, 0x22, 0xf3, 0x1b, 0xf2, 0xa6, 0xfb, 0x00, 0xff, 0x99, 0x4e,
|
||||
0xd9, 0x7a, 0xd6, 0xec, 0xe5, 0x8e, 0x0f, 0x83, 0x9f, 0xc8, 0x63,
|
||||
0xbd, 0x8f, 0x42, 0x3d, 0x9f, 0x46, 0xd9, 0xeb, 0x4d, 0x22, 0x9f,
|
||||
0x9f, 0x2a, 0xfe, 0x6d, 0x04, 0xff, 0x4e, 0x02, 0xff, 0x3e, 0x99,
|
||||
0xc7, 0xf5, 0x1a, 0x28, 0xb8, 0xff, 0xeb, 0xf9, 0x1e, 0x81, 0xf9,
|
||||
0x1a, 0xf3, 0x98, 0xef, 0x71, 0x0a, 0xe2, 0x29, 0x0a, 0x3f, 0xc4,
|
||||
0xfd, 0xc9, 0x0a, 0x3f, 0xcc, 0xfd, 0xc7, 0xd4, 0x7a, 0x27, 0xc3,
|
||||
0xf5, 0x1f, 0xa4, 0x60, 0x7e, 0x35, 0x40, 0x7e, 0x4d, 0x2b, 0x20,
|
||||
0xbf, 0xc2, 0xe6, 0x7f, 0x0a, 0xe6, 0x9f, 0xea, 0x98, 0x7f, 0x06,
|
||||
0xe5, 0x9e, 0x1f, 0x0f, 0x13, 0x7f, 0xcf, 0xb2, 0xfd, 0x4c, 0x0a,
|
||||
0xc6, 0x5b, 0xe6, 0x79, 0xc8, 0xf0, 0x51, 0xe6, 0x66, 0x49, 0x8e,
|
||||
0x17, 0xcb, 0xfb, 0x75, 0x52, 0xce, 0xe6, 0x7a, 0x4f, 0x83, 0xde,
|
||||
0x67, 0x2c, 0xfb, 0x63, 0x54, 0xc6, 0x69, 0xbd, 0x33, 0x95, 0x5e,
|
||||
0x83, 0x67, 0xa9, 0xe7, 0xc3, 0x71, 0xdc, 0x7e, 0xb5, 0xe8, 0x37,
|
||||
0xb7, 0xe5, 0xb9, 0x33, 0x10, 0xdf, 0x2f, 0x42, 0x7c, 0x27, 0x29,
|
||||
0x18, 0x5f, 0x7a, 0xfe, 0xe7, 0xfb, 0x10, 0xcf, 0xf3, 0x2c, 0xf1,
|
||||
0xfc, 0x42, 0x1f, 0xe2, 0x79, 0xbe, 0xaa, 0x3f, 0xf3, 0xe4, 0x79,
|
||||
0x76, 0x01, 0xf9, 0x78, 0xbe, 0xe0, 0x57, 0xc8, 0xb7, 0x35, 0xbf,
|
||||
0x9b, 0xf5, 0x2d, 0x94, 0xfc, 0x34, 0xbf, 0x37, 0x2b, 0x3d, 0xb3,
|
||||
0xb9, 0xdf, 0xa4, 0xf0, 0x1c, 0xee, 0xbf, 0x44, 0xd9, 0xfa, 0x3e,
|
||||
0x5b, 0xea, 0xfb, 0x5c, 0xf2, 0xf1, 0x1c, 0xc1, 0x2f, 0x93, 0xef,
|
||||
0xaf, 0x26, 0xb5, 0x9e, 0x2a, 0xd1, 0xa3, 0xe3, 0x37, 0x49, 0xc1,
|
||||
0x78, 0x48, 0xa8, 0x78, 0x30, 0xcf, 0x61, 0x5d, 0x90, 0x0f, 0x73,
|
||||
0xc1, 0x3f, 0xaf, 0xc2, 0x7c, 0x0b, 0x20, 0x1f, 0x92, 0x05, 0xe6,
|
||||
0x1b, 0xce, 0xff, 0x1a, 0xcc, 0xbf, 0xd0, 0x31, 0x7f, 0x5f, 0xf2,
|
||||
0x6d, 0xa9, 0x23, 0xdf, 0x5a, 0x2c, 0xf9, 0xb6, 0x84, 0xec, 0xf1,
|
||||
0x9d, 0x82, 0x7c, 0x5b, 0x0a, 0x7a, 0x5b, 0x40, 0xef, 0x41, 0x8b,
|
||||
0x5e, 0xb3, 0xde, 0x37, 0xd8, 0xbe, 0x55, 0xe5, 0xc3, 0x0a, 0xee,
|
||||
0x2f, 0x83, 0xfc, 0x58, 0xae, 0x70, 0x2b, 0xe8, 0x7b, 0x1d, 0xfc,
|
||||
0xb9, 0x0c, 0xfc, 0xb9, 0xbc, 0x80, 0xfb, 0x15, 0xf6, 0xfe, 0xf2,
|
||||
0x26, 0x8f, 0x6f, 0x53, 0xf1, 0xba, 0x8a, 0xfb, 0x6b, 0x14, 0x7e,
|
||||
0x8b, 0xfb, 0x6b, 0x15, 0x5e, 0xcd, 0xfd, 0x75, 0xa0, 0x7f, 0xbd,
|
||||
0xc2, 0x6d, 0xa0, 0x7f, 0x25, 0xe8, 0x5f, 0x0b, 0xfa, 0xd7, 0xf7,
|
||||
0x43, 0x7f, 0x26, 0x1e, 0x36, 0x38, 0xe2, 0x61, 0xa3, 0x25, 0x1e,
|
||||
0xde, 0x2d, 0x30, 0x1e, 0x36, 0x80, 0xde, 0x8d, 0x10, 0x0f, 0x87,
|
||||
0x1d, 0xfe, 0x7e, 0x0f, 0xde, 0xf7, 0x56, 0x5b, 0xde, 0xdf, 0x0d,
|
||||
0x7f, 0x08, 0xf8, 0xf7, 0x61, 0xfc, 0x2a, 0xc7, 0xfb, 0xff, 0x07,
|
||||
0x50, 0x0f, 0xdb, 0xa1, 0x7e, 0xc4, 0x28, 0x58, 0x3f, 0x0e, 0xc0,
|
||||
0x7c, 0x9b, 0x2c, 0xd7, 0xbb, 0x56, 0xae, 0x57, 0x64, 0x59, 0xef,
|
||||
0xa6, 0x7e, 0xea, 0xfd, 0x08, 0xf4, 0x7e, 0x0c, 0xfe, 0x6f, 0x87,
|
||||
0xfd, 0x2f, 0x56, 0xc0, 0xfe, 0x67, 0xec, 0x3f, 0xa1, 0xdc, 0xfe,
|
||||
0x0e, 0xb3, 0xff, 0x9c, 0xed, 0x37, 0xab, 0x7c, 0xd8, 0xca, 0xfd,
|
||||
0x4f, 0x55, 0x7d, 0x6f, 0x90, 0x3d, 0x67, 0x8b, 0xec, 0x0f, 0x53,
|
||||
0xb8, 0x7d, 0xa6, 0xf2, 0x63, 0x0b, 0xc4, 0xdb, 0x17, 0xf0, 0xbd,
|
||||
0xa0, 0x1b, 0xea, 0xc7, 0x66, 0xd0, 0xb7, 0x17, 0xf4, 0x7c, 0x69,
|
||||
0xf1, 0x6f, 0xad, 0xf8, 0xb7, 0x44, 0xd9, 0x7f, 0x15, 0xf2, 0x7d,
|
||||
0x25, 0xed, 0xb8, 0x3f, 0x29, 0xc8, 0x8f, 0xcc, 0x23, 0x72, 0x9d,
|
||||
0xe2, 0xc3, 0x9e, 0xcf, 0x8d, 0xfd, 0x36, 0xb8, 0x5e, 0x3b, 0xdc,
|
||||
0xdf, 0x18, 0xec, 0xcf, 0xef, 0x90, 0xfd, 0x7b, 0xd8, 0x8f, 0x80,
|
||||
0xf7, 0x81, 0xde, 0x1d, 0x3c, 0xbe, 0x43, 0xdd, 0x9f, 0x9d, 0xdc,
|
||||
0xff, 0x5a, 0xe1, 0x5d, 0xdc, 0xff, 0x06, 0xf0, 0x76, 0x85, 0xe3,
|
||||
0x5e, 0x70, 0xff, 0xed, 0x80, 0xfa, 0xb5, 0x1d, 0xf4, 0x1e, 0x51,
|
||||
0xd7, 0x2f, 0x93, 0xf1, 0xbb, 0xe1, 0x7d, 0x45, 0xaf, 0xf7, 0x5b,
|
||||
0xf0, 0xc7, 0x77, 0xe0, 0x8f, 0xad, 0x10, 0xef, 0x9d, 0x10, 0xef,
|
||||
0x9d, 0x96, 0x7a, 0x53, 0x9e, 0xe3, 0xfa, 0x45, 0xa0, 0xaf, 0x4b,
|
||||
0xea, 0x61, 0x9d, 0xf0, 0x78, 0xff, 0xb4, 0x9e, 0xef, 0x07, 0x40,
|
||||
0x6f, 0x97, 0x43, 0xef, 0x9e, 0x02, 0xf4, 0xfe, 0x30, 0x00, 0x7a,
|
||||
0xf7, 0x38, 0xf4, 0x76, 0x9f, 0x65, 0x7a, 0xbb, 0x1d, 0x7a, 0xe3,
|
||||
0x05, 0xe8, 0xdd, 0x3b, 0x00, 0x7a, 0xe3, 0x96, 0xfc, 0xd9, 0x77,
|
||||
0x06, 0xaf, 0x8f, 0xff, 0x4f, 0xc2, 0x7a, 0x58, 0x21, 0xf5, 0x0e,
|
||||
0xbf, 0xb7, 0x44, 0xf2, 0x1c, 0x6f, 0xf8, 0xfd, 0x8e, 0xef, 0xdb,
|
||||
0x6d, 0x8e, 0xfd, 0x31, 0xd6, 0x8f, 0xfa, 0x89, 0xc7, 0x7f, 0x6e,
|
||||
0x6c, 0x18, 0x4d, 0x42, 0x02, 0x00, 0x00, 0x78, 0xda, 0x8d, 0x97,
|
||||
0xcb, 0x4b, 0x56, 0x41, 0x18, 0x87, 0xcf, 0x7b, 0x8e, 0x17, 0x22,
|
||||
0x8a, 0x10, 0x4c, 0x12, 0x5c, 0x04, 0x6e, 0x43, 0xac, 0x4d, 0xd0,
|
||||
0x2e, 0xdc, 0x44, 0x50, 0xdb, 0xc4, 0xfe, 0x00, 0x5b, 0xb8, 0x09,
|
||||
0x14, 0xda, 0x76, 0x31, 0xb5, 0xac, 0xd4, 0xee, 0xed, 0x83, 0x5c,
|
||||
0x25, 0x78, 0x4b, 0xcb, 0xbc, 0x6c, 0x4a, 0x6b, 0xa7, 0xb9, 0x2b,
|
||||
0xad, 0xec, 0xa2, 0x5d, 0xb5, 0x5a, 0x54, 0x6a, 0xef, 0x77, 0xce,
|
||||
0x1c, 0xcf, 0x24, 0x33, 0x1f, 0xcf, 0xc0, 0x0b, 0xf3, 0x1e, 0x9e,
|
||||
0xef, 0xf7, 0x3b, 0x33, 0xf3, 0xce, 0x7c, 0x73, 0x82, 0x80, 0xb5,
|
||||
0x75, 0x6d, 0x05, 0x9e, 0xe7, 0x76, 0xbe, 0xe6, 0xe1, 0xd6, 0x36,
|
||||
0x71, 0xab, 0x50, 0xef, 0xaf, 0x87, 0xdb, 0xdc, 0xfe, 0x78, 0x38,
|
||||
0x31, 0x91, 0xb6, 0xdf, 0x50, 0xef, 0x27, 0xd4, 0xfb, 0x01, 0xb9,
|
||||
0x15, 0xc8, 0x2d, 0x43, 0xee, 0x3b, 0xe4, 0xbe, 0xc1, 0xf1, 0x7e,
|
||||
0x85, 0x7a, 0x5f, 0x3c, 0x5c, 0x94, 0xe3, 0x24, 0x23, 0x3f, 0x7b,
|
||||
0xb8, 0x30, 0xe6, 0xb2, 0xfc, 0x13, 0xf4, 0x5d, 0x82, 0x7a, 0x8b,
|
||||
0x90, 0xfb, 0x98, 0x87, 0x8b, 0xa2, 0x2c, 0xff, 0x00, 0xc7, 0xfb,
|
||||
0x1e, 0xfa, 0xbe, 0x83, 0xe3, 0x5d, 0x80, 0x7a, 0x6f, 0xa1, 0xde,
|
||||
0x1b, 0xb8, 0xdf, 0x5e, 0x43, 0xbd, 0x79, 0xc8, 0xcd, 0x41, 0xdf,
|
||||
0x57, 0x70, 0x9e, 0x5f, 0x42, 0xdf, 0x59, 0x58, 0xf7, 0x2f, 0xa0,
|
||||
0xde, 0x0c, 0xe4, 0xa6, 0xe1, 0xba, 0x3d, 0x87, 0xdc, 0x33, 0xe8,
|
||||
0x3b, 0x05, 0xb9, 0x49, 0xc8, 0x3d, 0x85, 0xef, 0xf7, 0x04, 0x72,
|
||||
0x13, 0x90, 0x1b, 0x87, 0xdc, 0x18, 0xac, 0x97, 0x51, 0xa8, 0xf7,
|
||||
0x18, 0xce, 0xcb, 0x08, 0xe4, 0x1e, 0x41, 0xee, 0x21, 0xe4, 0x86,
|
||||
0x21, 0x37, 0x04, 0xb9, 0x07, 0x90, 0x1b, 0x84, 0xdc, 0x00, 0xe4,
|
||||
0xfa, 0x21, 0xd7, 0x07, 0xb9, 0x5e, 0xb8, 0xbe, 0x3d, 0x79, 0xf4,
|
||||
0xac, 0xe3, 0x3e, 0xb8, 0x0f, 0xb9, 0x3b, 0xf0, 0x7c, 0xb9, 0x05,
|
||||
0xb9, 0x9b, 0x90, 0xbb, 0x01, 0xb9, 0xeb, 0x90, 0xbb, 0x06, 0xb9,
|
||||
0xab, 0x90, 0xeb, 0x82, 0x5c, 0x27, 0xe4, 0x3a, 0x20, 0x77, 0x05,
|
||||
0xd6, 0xcb, 0x65, 0x0f, 0x57, 0x98, 0x5b, 0x5f, 0x89, 0xa2, 0x94,
|
||||
0xbd, 0x04, 0xb9, 0x76, 0xc8, 0x5d, 0xf4, 0x70, 0x05, 0xf1, 0x7d,
|
||||
0x63, 0x03, 0x0b, 0x2e, 0x78, 0xb8, 0xa2, 0x98, 0xcb, 0x04, 0xdb,
|
||||
0xf2, 0x9d, 0x7f, 0xd6, 0x05, 0xa6, 0x15, 0xce, 0x4b, 0x4b, 0xbe,
|
||||
0xfb, 0x90, 0x05, 0x9e, 0x87, 0xfb, 0xa3, 0x19, 0xae, 0xdb, 0x39,
|
||||
0x78, 0x8e, 0x9f, 0x85, 0x7a, 0x67, 0xe0, 0x38, 0x4e, 0xc3, 0x79,
|
||||
0xc9, 0xf5, 0x97, 0x35, 0xca, 0xd2, 0x7b, 0xbc, 0xc7, 0x77, 0x9f,
|
||||
0xc6, 0x16, 0x49, 0x7c, 0x72, 0x6d, 0xa7, 0xb8, 0xf5, 0x6a, 0x34,
|
||||
0xb6, 0xea, 0x83, 0x12, 0x93, 0xef, 0x96, 0xac, 0x0e, 0xc4, 0x5a,
|
||||
0xb8, 0x3a, 0x8d, 0x0a, 0xeb, 0x87, 0xd5, 0xe2, 0xf6, 0x3d, 0x6e,
|
||||
0xb8, 0x62, 0x93, 0x1f, 0xf3, 0xf8, 0x36, 0x6a, 0x54, 0x5a, 0x0f,
|
||||
0x4e, 0x78, 0xf4, 0x9a, 0x0c, 0x57, 0x69, 0xf2, 0x53, 0xe2, 0xae,
|
||||
0xab, 0x11, 0x8d, 0x43, 0x92, 0xd4, 0x65, 0x5c, 0x17, 0xe2, 0x3e,
|
||||
0x77, 0xa7, 0x35, 0x8e, 0x6a, 0xbe, 0xcb, 0xe4, 0x77, 0x25, 0xab,
|
||||
0x67, 0x89, 0x5b, 0x92, 0xff, 0xd2, 0xa8, 0x97, 0x64, 0xdf, 0xc4,
|
||||
0xff, 0x27, 0xff, 0xcd, 0x4b, 0xa6, 0x18, 0x6a, 0xaf, 0x41, 0xa3,
|
||||
0x3c, 0xfd, 0x1e, 0x91, 0x6c, 0xbf, 0x59, 0x72, 0xc1, 0x1e, 0x49,
|
||||
0xde, 0x29, 0x7d, 0x63, 0x09, 0xdd, 0x75, 0xb5, 0x5f, 0xbb, 0x6d,
|
||||
0x1a, 0x3b, 0x4c, 0x5e, 0x1e, 0xba, 0xe7, 0xef, 0xa0, 0x26, 0xb7,
|
||||
0x35, 0xb6, 0x9b, 0xbc, 0x2a, 0x74, 0xfb, 0x1e, 0xd1, 0xce, 0x3d,
|
||||
0xcb, 0xf7, 0x80, 0xc7, 0xb7, 0x56, 0xbb, 0xbd, 0x96, 0x41, 0x6b,
|
||||
0xe8, 0x5e, 0x8f, 0x93, 0xca, 0xf4, 0x59, 0x5c, 0xb7, 0x87, 0x6b,
|
||||
0x34, 0xdc, 0xb6, 0xf4, 0xbb, 0xc5, 0xc3, 0xb5, 0x2b, 0x33, 0xae,
|
||||
0x51, 0x6a, 0xf2, 0xbd, 0x91, 0x9b, 0x9b, 0x57, 0x66, 0xd6, 0xf2,
|
||||
0x3d, 0xec, 0xe1, 0xfe, 0x01, 0xaa, 0x8c, 0x68, 0x6c, 0x15, 0x02,
|
||||
0x00, 0x00, 0x78, 0xda, 0x4d, 0xd3, 0x49, 0x6c, 0x8c, 0x61, 0x1c,
|
||||
0x80, 0xf1, 0x69, 0x67, 0xa6, 0x3d, 0x88, 0x0b, 0x21, 0x2e, 0x22,
|
||||
0xd4, 0xbe, 0xd4, 0x5a, 0x8a, 0xe2, 0xa3, 0xd6, 0xb6, 0xf6, 0xaa,
|
||||
0xda, 0xb5, 0xb5, 0xb5, 0xb4, 0x96, 0x5a, 0x5a, 0x55, 0x0e, 0x52,
|
||||
0x17, 0x09, 0x07, 0x2e, 0xb8, 0x48, 0x1c, 0x1c, 0x24, 0x48, 0x6f,
|
||||
0xe2, 0x40, 0x44, 0xc2, 0x01, 0x89, 0x84, 0x1b, 0x11, 0x0e, 0x22,
|
||||
0x11, 0x71, 0x90, 0x10, 0xe2, 0xe0, 0xf9, 0xfb, 0x9e, 0xa4, 0x6d,
|
||||
0xe6, 0x99, 0xf9, 0xe5, 0xcd, 0x7f, 0x66, 0xbe, 0x79, 0xfb, 0x7e,
|
||||
0x99, 0x4c, 0xdf, 0x5f, 0x2e, 0x93, 0x49, 0x46, 0xf1, 0x5a, 0x9f,
|
||||
0x4d, 0x5d, 0x82, 0xb7, 0xe3, 0x02, 0x3c, 0x1a, 0x37, 0xe2, 0x42,
|
||||
0x3c, 0x06, 0xb7, 0xe8, 0xb1, 0xb8, 0x1d, 0xf3, 0x48, 0xc6, 0xe1,
|
||||
0xee, 0x74, 0x3d, 0x13, 0xee, 0xd1, 0xe3, 0xe9, 0xb2, 0x9e, 0x40,
|
||||
0xd7, 0x9c, 0x9f, 0x88, 0x6f, 0xb9, 0x1e, 0xbe, 0xab, 0x27, 0xd1,
|
||||
0x43, 0x3d, 0x99, 0x9e, 0x3b, 0x3f, 0x05, 0xbf, 0x75, 0x3d, 0xfc,
|
||||
0x41, 0x97, 0xd2, 0x57, 0x3d, 0x95, 0x7e, 0x39, 0x3f, 0x0d, 0x67,
|
||||
0x73, 0xe9, 0x7a, 0x78, 0x80, 0x9e, 0x4e, 0x43, 0xf4, 0x0c, 0x1a,
|
||||
0x91, 0x4b, 0xe7, 0x67, 0xc6, 0xf5, 0xb9, 0x1e, 0x2e, 0xd5, 0xb3,
|
||||
0xa8, 0x4c, 0x97, 0x51, 0x45, 0xea, 0x64, 0x36, 0xae, 0xd4, 0x73,
|
||||
0x70, 0x8d, 0x2e, 0xc7, 0x75, 0x7a, 0x2e, 0x6e, 0xf0, 0xf3, 0xe7,
|
||||
0xe1, 0x56, 0x3f, 0x27, 0xdc, 0xa5, 0xe7, 0xd3, 0x45, 0x5d, 0x41,
|
||||
0x37, 0x9c, 0x5f, 0x80, 0xef, 0xb8, 0x1e, 0xee, 0xd5, 0x0b, 0x63,
|
||||
0x7f, 0xf4, 0x22, 0x7a, 0xea, 0x7c, 0x82, 0x5f, 0xba, 0x1e, 0x7e,
|
||||
0xa3, 0x17, 0xd3, 0x7b, 0xbd, 0x84, 0x3e, 0x7b, 0x6d, 0x95, 0xf8,
|
||||
0xbb, 0xef, 0x5d, 0x8a, 0xff, 0x38, 0x13, 0xce, 0xe7, 0x53, 0x2f,
|
||||
0xa3, 0x41, 0x7a, 0x79, 0xec, 0x55, 0xea, 0x64, 0x45, 0xfc, 0x6f,
|
||||
0xf4, 0xca, 0xd8, 0x2f, 0xbd, 0x2a, 0xbe, 0x5b, 0x57, 0xe1, 0x6a,
|
||||
0x5d, 0x8d, 0x6b, 0x75, 0x4d, 0xec, 0x89, 0x5e, 0x1d, 0xd7, 0x5f,
|
||||
0x98, 0x5e, 0xc3, 0x1a, 0xdc, 0xe6, 0x77, 0x85, 0x3b, 0xf5, 0x5a,
|
||||
0xba, 0xa0, 0xd7, 0xd1, 0x95, 0x7c, 0x3a, 0xbf, 0x1e, 0xdf, 0x74,
|
||||
0x3d, 0x7c, 0x4f, 0x6f, 0xa0, 0xc7, 0x7a, 0x23, 0xbd, 0xce, 0xa7,
|
||||
0xe7, 0xb9, 0x16, 0x7f, 0xf2, 0xbd, 0x9b, 0xf0, 0x37, 0x67, 0xc2,
|
||||
0xbf, 0x75, 0x1d, 0x15, 0x17, 0xa5, 0xde, 0x1c, 0xe7, 0x24, 0x75,
|
||||
0x52, 0x8f, 0x4b, 0xf4, 0x96, 0x38, 0x67, 0x7a, 0x2b, 0x2e, 0xd7,
|
||||
0xdb, 0x62, 0xaf, 0xf5, 0x76, 0x5c, 0x85, 0x79, 0x24, 0x3b, 0xf0,
|
||||
0x8f, 0x4c, 0xea, 0x9d, 0xbc, 0x8e, 0x2c, 0x48, 0xbd, 0x2b, 0xee,
|
||||
0x35, 0xbd, 0x1b, 0x0f, 0xd5, 0x0d, 0x71, 0x46, 0x75, 0x23, 0x6e,
|
||||
0xd6, 0x4d, 0xb1, 0x9f, 0xd9, 0xff, 0xb7, 0x6a, 0xb2, 0x27, 0x7e,
|
||||
0x1b, 0x8b, 0x5c, 0x76, 0x66, 0x2f, 0x35, 0xe9, 0x7d, 0x71, 0xc6,
|
||||
0xf4, 0x7e, 0xea, 0xd0, 0x07, 0xe8, 0xbc, 0x6e, 0xa6, 0x4b, 0xba,
|
||||
0x85, 0xae, 0xea, 0x83, 0x74, 0x5d, 0x1f, 0x8a, 0xbd, 0xed, 0xe7,
|
||||
0xdb, 0xba, 0x95, 0xee, 0xeb, 0x36, 0x7a, 0xa0, 0x0f, 0xc7, 0x4c,
|
||||
0xb6, 0xcf, 0xbd, 0xfa, 0x08, 0x3d, 0xd2, 0x47, 0xe9, 0x85, 0x3e,
|
||||
0x46, 0x4f, 0x8a, 0xfa, 0xfc, 0x4c, 0xb7, 0xd3, 0x2b, 0x7d, 0x3c,
|
||||
0xee, 0x77, 0x7d, 0x82, 0xde, 0xf5, 0xf3, 0x47, 0x7d, 0x92, 0xbe,
|
||||
0xe8, 0x53, 0x71, 0x9e, 0x75, 0x07, 0xfd, 0xd4, 0x9d, 0xf4, 0x57,
|
||||
0x9f, 0x8e, 0xb3, 0x5d, 0x9c, 0xba, 0x8b, 0x06, 0xea, 0x33, 0x34,
|
||||
0x58, 0x77, 0xd3, 0x30, 0x7d, 0x36, 0xf6, 0x31, 0x97, 0xee, 0xf9,
|
||||
0x39, 0x9e, 0x86, 0xbb, 0xde, 0x13, 0xe7, 0x1f, 0xff, 0x03, 0x30,
|
||||
0x83, 0x68, 0xf0, 0xa9, 0x00, 0x00, 0x00, 0x78, 0xda, 0x45, 0xcf,
|
||||
0xa9, 0x0e, 0x02, 0x31, 0x14, 0x46, 0xe1, 0x42, 0x87, 0x19, 0xf6,
|
||||
0x7d, 0x7f, 0x06, 0xde, 0x0a, 0x81, 0xc2, 0xe3, 0xf1, 0x28, 0x14,
|
||||
0x0a, 0x87, 0x25, 0x38, 0x14, 0x09, 0x06, 0x43, 0x70, 0x38, 0x0c,
|
||||
0x0e, 0x87, 0x43, 0x21, 0xf8, 0x6f, 0xee, 0x49, 0x98, 0xe4, 0xa4,
|
||||
0x5f, 0x9a, 0xdb, 0x36, 0x13, 0xc2, 0xff, 0xcb, 0xb1, 0x4e, 0x53,
|
||||
0xb7, 0x35, 0x97, 0xf3, 0xc1, 0x5b, 0xe0, 0xa8, 0x96, 0x72, 0x12,
|
||||
0xbc, 0x15, 0x2e, 0xa8, 0x35, 0x67, 0xb5, 0x84, 0x4d, 0xea, 0xb3,
|
||||
0x99, 0xda, 0x72, 0xd6, 0xbc, 0xc3, 0x45, 0xb5, 0xc7, 0x25, 0x75,
|
||||
0x64, 0xbe, 0x6c, 0x33, 0xd1, 0xf7, 0xcd, 0x07, 0x5c, 0x51, 0x27,
|
||||
0x5c, 0x55, 0xd7, 0xe8, 0xf3, 0x35, 0x75, 0xe6, 0x1e, 0xf3, 0x05,
|
||||
0xd7, 0xd5, 0x0d, 0x37, 0xd4, 0x9d, 0xfb, 0x9b, 0xea, 0xc1, 0xbe,
|
||||
0xf9, 0x89, 0x5b, 0xea, 0x85, 0xdb, 0xea, 0x8d, 0x3b, 0xea, 0x83,
|
||||
0xbb, 0xea, 0x8b, 0x7b, 0xf6, 0xcf, 0x99, 0xbb, 0x6f, 0x6f, 0xe3,
|
||||
0x81, 0x9d, 0xc1, 0x43, 0x0b, 0x8f, 0xd4, 0x2c, 0x71, 0x8f, 0xd5,
|
||||
0x44, 0xfb, 0x3f, 0x74, 0xa0, 0x15, 0x1f, 0x09, 0x02, 0x00, 0x00,
|
||||
0x78, 0xda, 0xed, 0xd4, 0xb9, 0x4f, 0x14, 0x51, 0x1c, 0xc0, 0xf1,
|
||||
0x99, 0x5d, 0x54, 0xdc, 0x15, 0x45, 0x90, 0x4b, 0xd1, 0x5d, 0x45,
|
||||
0x41, 0x0e, 0x01, 0x01, 0x15, 0x45, 0x60, 0x8e, 0x1d, 0x58, 0x05,
|
||||
0xe4, 0xf0, 0xe0, 0x92, 0x43, 0x41, 0x24, 0x21, 0x44, 0x2b, 0x6d,
|
||||
0x4c, 0x9c, 0x4e, 0x0b, 0x0a, 0x1b, 0x12, 0xd6, 0x08, 0x21, 0xfc,
|
||||
0x05, 0x16, 0x5a, 0x00, 0x85, 0x24, 0x92, 0x40, 0x42, 0x62, 0x08,
|
||||
0x0d, 0xb1, 0x21, 0x5b, 0x42, 0x47, 0x47, 0x63, 0xc1, 0x77, 0xde,
|
||||
0x3e, 0xc2, 0x61, 0x24, 0x86, 0x20, 0x95, 0x2f, 0xfb, 0xd9, 0x5f,
|
||||
0x5e, 0xf6, 0x5d, 0xfb, 0x9b, 0xdf, 0x3c, 0x45, 0xf9, 0xdf, 0x0e,
|
||||
0xba, 0x3d, 0xc0, 0x23, 0x34, 0xe1, 0x21, 0x1a, 0xd1, 0x8c, 0xe7,
|
||||
0x5b, 0xc6, 0xa8, 0x70, 0xc1, 0x8d, 0x28, 0x1c, 0xc2, 0x61, 0x1c,
|
||||
0x41, 0x34, 0x8e, 0xc2, 0x03, 0x2f, 0x8e, 0x21, 0x06, 0xc7, 0x71,
|
||||
0x02, 0xb1, 0x38, 0x89, 0x38, 0xc4, 0xe3, 0x14, 0x12, 0x90, 0x88,
|
||||
0x24, 0x24, 0x23, 0x65, 0xdb, 0x89, 0xec, 0x72, 0xbe, 0x34, 0x3e,
|
||||
0xb0, 0xb5, 0xd3, 0x07, 0x78, 0x06, 0x67, 0xaf, 0x33, 0x48, 0xc5,
|
||||
0x59, 0x9c, 0x83, 0x0f, 0x7e, 0x9c, 0xc7, 0x05, 0xa4, 0xe1, 0x22,
|
||||
0x2e, 0x21, 0x1d, 0x19, 0xb8, 0x8c, 0x4c, 0x64, 0x21, 0x1b, 0x39,
|
||||
0xb8, 0x82, 0x5c, 0xe4, 0x21, 0x1f, 0x57, 0x51, 0x80, 0x42, 0x14,
|
||||
0xe1, 0x1a, 0xae, 0xe3, 0x06, 0x8a, 0x71, 0x13, 0xb7, 0x50, 0x82,
|
||||
0xdb, 0x28, 0x45, 0x19, 0x64, 0x32, 0x14, 0x1d, 0x06, 0x4c, 0x04,
|
||||
0x60, 0xa1, 0x02, 0x95, 0x08, 0xe2, 0x0e, 0xee, 0xa2, 0x0a, 0xd5,
|
||||
0xa8, 0xc1, 0x3d, 0xd4, 0xa2, 0x0e, 0xf5, 0x68, 0xc0, 0x7d, 0x91,
|
||||
0xcd, 0x7c, 0xdd, 0x23, 0x73, 0xea, 0x95, 0xb9, 0xf0, 0xc9, 0xff,
|
||||
0x50, 0x28, 0xf7, 0xae, 0x94, 0x73, 0x5a, 0xf1, 0x0c, 0x8f, 0xd1,
|
||||
0x86, 0x76, 0x74, 0xa0, 0x13, 0x4f, 0xd0, 0x22, 0x7f, 0xef, 0x42,
|
||||
0x37, 0x7a, 0x76, 0xd4, 0xd7, 0x0b, 0xbc, 0xc6, 0x5b, 0xbc, 0xc3,
|
||||
0x00, 0x3e, 0x60, 0x10, 0x21, 0x8c, 0xe1, 0x33, 0xbe, 0x62, 0x02,
|
||||
0xdf, 0xf0, 0x1d, 0x33, 0x98, 0xc7, 0x22, 0xc2, 0x58, 0x91, 0xcf,
|
||||
0xd8, 0x69, 0xbf, 0xfe, 0xa6, 0xb0, 0x83, 0x9f, 0x2c, 0x65, 0x08,
|
||||
0xcb, 0x28, 0x1e, 0xb6, 0x94, 0x3a, 0x62, 0x27, 0x7a, 0x31, 0x4f,
|
||||
0xdf, 0x3f, 0x62, 0x29, 0xef, 0x27, 0xad, 0xcd, 0x09, 0xab, 0xa4,
|
||||
0xf6, 0x25, 0x6c, 0x3d, 0x40, 0x62, 0x1a, 0xd4, 0xbd, 0xbf, 0x53,
|
||||
0xaf, 0xd4, 0x8d, 0x3a, 0xde, 0xe0, 0x3c, 0x3a, 0xcd, 0x88, 0x97,
|
||||
0x75, 0x95, 0x21, 0xeb, 0xa1, 0x44, 0x8c, 0x1e, 0xd5, 0x22, 0x87,
|
||||
0x98, 0xd2, 0x6a, 0x45, 0x0c, 0x6b, 0xcd, 0x91, 0x65, 0xf4, 0x2e,
|
||||
0x11, 0x62, 0xf5, 0x7e, 0x11, 0xfd, 0x7a, 0xeb, 0x1f, 0xf6, 0xfb,
|
||||
0x18, 0x0a, 0x95, 0xed, 0xe7, 0x9d, 0xe0, 0x59, 0x4c, 0xa3, 0x04,
|
||||
0x67, 0x39, 0xb3, 0xed, 0x94, 0x5c, 0x60, 0x30, 0x92, 0x8b, 0xf2,
|
||||
0xdf, 0x47, 0xfa, 0x03, 0xff, 0xfa, 0x7e, 0xfa, 0xc1, 0xde, 0x4b,
|
||||
0xea, 0x7e, 0xac, 0xe4, 0x9c, 0xd5, 0x79, 0xc6, 0x7b, 0x6f, 0x4f,
|
||||
0x77, 0xf4, 0x6b, 0xb8, 0x90, 0x3a, 0xd0, 0xe7, 0x12, 0x5d, 0xf3,
|
||||
0x4d, 0x24, 0x52, 0xbe, 0x36, 0xfb, 0x2c, 0x98, 0x43, 0xae, 0xdd,
|
||||
0x56, 0x8b, 0x63, 0xcc, 0x1a, 0xc2, 0xe6, 0x38, 0xe3, 0xa6, 0x31,
|
||||
0x87, 0x9f, 0xbb, 0xce, 0xe9, 0x31, 0x15, 0x7b, 0x89, 0x39, 0x53,
|
||||
0x5c, 0x07, 0x5f, 0x8c, 0x35, 0x31, 0x36, 0x48, 0x7f, 0x94, 0xfe,
|
||||
0x80, 0xa1, 0xba, 0x45, 0xdf, 0xf0, 0x8a, 0xb8, 0xaa, 0x27, 0x10,
|
||||
0x7d, 0xc8, 0x74, 0x6f, 0x5f, 0x65, 0x1d, 0x11, 0xb8, 0x62, 0x00
|
||||
};
|
||||
|
|
4352
baserc/server.h
4352
baserc/server.h
File diff suppressed because it is too large
Load Diff
|
@ -5,7 +5,7 @@
|
|||
int c_nodes;
|
||||
int c_nonvis;
|
||||
int c_active_brushes;
|
||||
vec_t microvolume = 1.0;
|
||||
vec_t microvolume = 0.5f;
|
||||
|
||||
#define PSIDE_FRONT 1
|
||||
#define PSIDE_BACK 2
|
||||
|
|
|
@ -343,6 +343,8 @@ void WriteBSPFile( void )
|
|||
wadfile = FS_Open( va( "maps/%s.bsp", gs_filename ), "wb" );
|
||||
FS_Write( wadfile, header, sizeof( dheader_t )); // overwritten later
|
||||
|
||||
Msg("add collision lump %i\n", dcollisiondatasize );
|
||||
|
||||
AddLump( LUMP_ENTITIES, dentdata, entdatasize );
|
||||
AddLump( LUMP_PLANES, dplanes, numplanes * sizeof( dplanes[0] ));
|
||||
AddLump( LUMP_VERTEXES, dvertexes, numvertexes * sizeof( dvertexes[0] ));
|
||||
|
|
|
@ -267,6 +267,8 @@ void ProcessModels (void)
|
|||
|
||||
static void AddCollision( void* handle, const void* buffer, size_t size )
|
||||
{
|
||||
if((dcollisiondatasize + size) > MAX_MAP_COLLISION )
|
||||
Sys_Error( "MAX_MAP_COLLISION limit exceeded\n" );
|
||||
Mem_Copy( dcollision + dcollisiondatasize, (void *)buffer, size );
|
||||
dcollisiondatasize += size;
|
||||
}
|
||||
|
|
|
@ -47,13 +47,6 @@ infoParm_t infoParms[] =
|
|||
{"slick", SURF_SLICK, CONTENTS_NONE, 0},
|
||||
{"light", SURF_LIGHT, CONTENTS_NONE, 0},
|
||||
{"ladder", SURF_NONE, CONTENTS_LADDER, 0},
|
||||
|
||||
// drawsurf attributes (matched with Half-Life render modes)
|
||||
{"texture", SURF_BLEND, CONTENTS_NONE, 0}, // blend surface
|
||||
{"glow", SURF_GLOW, CONTENTS_NONE, 0}, // glow sprite
|
||||
{"solid", SURF_ALPHA, CONTENTS_TRANSLUCENT, 0}, // alphatest
|
||||
{"additive", SURF_ADDITIVE, CONTENTS_NONE, 0}, // additive
|
||||
{"chrome", SURF_CHROME, CONTENTS_NONE, 0}, // studio chrome
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
@ -167,6 +167,12 @@ void Conv_RunSearch( void )
|
|||
break;
|
||||
case GAME_HEXEN2:
|
||||
case GAME_QUAKE1:
|
||||
search = FS_Search("*.wad", true );
|
||||
// make sure, that we stored all files from all wads
|
||||
for( i = 0; search && i < search->numfilenames; i++ )
|
||||
AddMask(va("%s/*.mip", search->filenames[i]));
|
||||
if( search ) Mem_Free( search );
|
||||
else AddMask( "*.mip" );
|
||||
AddMask( "maps/*.bsp" ); // Quake1 textures from bsp
|
||||
AddMask( "sprites/*.spr" ); // Quake1 sprites
|
||||
AddMask( "sprites/*.spr32" ); // QW 32bit sprites
|
||||
|
@ -178,7 +184,6 @@ void Conv_RunSearch( void )
|
|||
AddMask( "gfx/*.lmp" ); // Quake1 pics
|
||||
AddMask( "*.sp32");
|
||||
AddMask( "*.spr" );
|
||||
AddMask( "*.mip" );
|
||||
imageflags |= IL_KEEP_8BIT;
|
||||
write_qscsript = true;
|
||||
Image_Init( "Quake1", imageflags );
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#define CONTENTS_DETAIL 0x08000000 // brushes to be added after vis leafs
|
||||
#define CONTENTS_TRANSLUCENT 0x10000000 // auto set if any surface has trans
|
||||
#define CONTENTS_LADDER 0x20000000
|
||||
#define CONTENTS_TRIGGER 0x40000000 // trigger
|
||||
|
||||
#define SURF_LIGHT 0x00000001 // value will hold the light strength
|
||||
#define SURF_SLICK 0x00000002 // effects game physics
|
||||
|
@ -63,6 +64,7 @@ bool Conv_WriteShader( const char *shaderpath, const char *imagepath, rgbdata_t
|
|||
string qcname, qcpath;
|
||||
string temp, lumpname;
|
||||
string wadname, shadername;
|
||||
int i, lightmap_stage = false;
|
||||
|
||||
// write also wadlist.qc for xwad compiler
|
||||
FS_ExtractFilePath( imagepath, temp );
|
||||
|
@ -165,8 +167,12 @@ check_shader:
|
|||
if(!VectorIsNull( rad )) FS_Printf(f, "\trad_color\t\t%.f %.f %.f\n", rad[0], rad[1], rad[2] );
|
||||
if( scale ) FS_Printf(f, "\trad_intensity\t%.f\n", scale );
|
||||
}
|
||||
|
||||
if( flags & SURF_WARP )
|
||||
{
|
||||
FS_Print( f, "\tsurfaceparm\tnoLightMap\n" );
|
||||
FS_Print( f, "\ttessSize\t\t64\n\n" );
|
||||
|
||||
// server relevant contents
|
||||
if(contents & CONTENTS_WATER)
|
||||
FS_Print( f, "\tsurfaceparm\twater\n" );
|
||||
|
@ -176,14 +182,28 @@ check_shader:
|
|||
FS_Print( f, "\tsurfaceparm\tlava\n" );
|
||||
else FS_Print( f, "\tsurfaceparm\twater\n" );
|
||||
FS_Print( f, "\tsurfaceparm\twarp\n" );
|
||||
}
|
||||
|
||||
if( flags & SURF_SKY ) FS_Print( f, "\tsurfaceparm\tsky\n" );
|
||||
FS_Printf( f, "\t{\n\t\tmap\t%s\n", shadername ); // save basemap
|
||||
if( flags & (SURF_TRANS33|SURF_TRANS66))
|
||||
{
|
||||
FS_Print( f, "\t\tblendFunc\tGL_SRC_ALPHA\tGL_ONE_MINUS_SRC_ALPHA\n" );
|
||||
FS_Print( f, "\t\tAlphaGen\t\tvertex\n" );
|
||||
}
|
||||
FS_Print( f, "\t\ttcGen\twarp\n\t}\n" ); // warp
|
||||
lightmap_stage = false;
|
||||
}
|
||||
else if( flags & SURF_SKY ) FS_Print( f, "\tsurfaceparm\tsky\n" );
|
||||
else if( flags & SURF_HINT ) FS_Print( f, "\tsurfaceparm\thint\n" );
|
||||
else if( flags & SURF_SKIP ) FS_Print( f, "\tsurfaceparm\tskip\n" );
|
||||
else if( flags & SURF_MIRROR ) FS_Print( f, "\tsurfaceparm\tmirror\n" );
|
||||
else if( flags & SURF_TRANS33 ) FS_Print( f, "\tsurfaceparm\tblend\n" );
|
||||
else if( flags & SURF_TRANS66 ) FS_Print( f, "\tsurfaceparm\tblend\n" );
|
||||
else if( flags & (SURF_TRANS33|SURF_TRANS66))
|
||||
{
|
||||
FS_Print( f, "\tentityMergable\n\n" );
|
||||
FS_Printf( f, "\t{\n\t\tmap\t%s\n\n", shadername ); // save basemap
|
||||
FS_Print( f, "\t\tblendFunc\tGL_SRC_ALPHA\tGL_ONE_MINUS_SRC_ALPHA\n" );
|
||||
FS_Print( f, "\t\tAlphaGen\t\tvertex\n\t}\n" );
|
||||
lightmap_stage = true;
|
||||
}
|
||||
else if( flags & SURF_NODRAW ) FS_Print( f, "\tsurfaceparm\tnull\n" );
|
||||
|
||||
if( contents & CONTENTS_CLIP && contents && CONTENTS_PLAYERCLIP )
|
||||
|
@ -194,42 +214,48 @@ check_shader:
|
|||
else if( contents & CONTENTS_ORIGIN ) FS_Print( f, "\tsurfaceparm\torigin\n" );
|
||||
else if( contents & CONTENTS_TRANSLUCENT ) FS_Print( f, "\tsurfaceparm\tsolid\n" );
|
||||
else if( contents & CONTENTS_AREAPORTAL ) FS_Print( f, "\tsurfaceparm\tareaportal\n" );
|
||||
else if( contents & CONTENTS_TRIGGER ) FS_Print( f, "\tsurfaceparm\ttrigger\n" );
|
||||
else if( contents & CONTENTS_DETAIL ) FS_Print( f, "\tsurfaceparm\tdetail\n" );
|
||||
|
||||
if( num_anims )
|
||||
{
|
||||
int i;
|
||||
|
||||
FS_Printf( f, "\t{\n\t\tAnimFrequency\t%i\n", animcount ); // #frames per second
|
||||
for( i = 0; i < num_anims; i++ )
|
||||
FS_Printf( f, "\t\tmap\t\t%s\n", animmap[i] );
|
||||
FS_Printf( f, "\t}\n" ); // close section
|
||||
lightmap_stage = true;
|
||||
}
|
||||
else if( p->flags & IMAGE_HAS_LUMA && !( flags & SURF_WARP ))
|
||||
{
|
||||
FS_Printf( f, "\t{\n\t\tmap\t%s\n\t}\n", shadername );
|
||||
lightmap_stage = true;
|
||||
}
|
||||
|
||||
if( p->flags & IMAGE_HAS_LUMA )
|
||||
if( lightmap_stage )
|
||||
{
|
||||
FS_Print( f, "\t{\n\t\tmap\t$lightmap\n" ); // lightmap stage
|
||||
FS_Print( f, "\t\tblendFunc\tfilter\n" );
|
||||
FS_Print( f, "\t}\n" );
|
||||
}
|
||||
|
||||
if( p->flags & IMAGE_HAS_LUMA )
|
||||
{
|
||||
if( num_anims )
|
||||
{
|
||||
FS_Printf( f, "\t{\n\t\tmap\t\t$lightmap\n" ); // lightmap stage
|
||||
FS_Printf( f, "\t\tblendFunc\t\tfilter\n" );
|
||||
FS_Printf( f, "\t}\n\n" ); // close section
|
||||
|
||||
FS_Printf( f, "\t{\n\t\tAnimFrequency\t%i\n", animcount ); // #frames per second
|
||||
for( i = 0; i < num_anims; i++ )
|
||||
FS_Printf( f, "\t\tmap\t\t%s_luma\n", animmap[i] ); // anim luma stage
|
||||
FS_Printf( f, "\t\tblendFunc\t\tadd\n" );
|
||||
FS_Printf( f, "\t}\n" ); // close section
|
||||
}
|
||||
animcount = num_anims = 0; // done
|
||||
}
|
||||
else if( p->flags & IMAGE_HAS_LUMA )
|
||||
{
|
||||
FS_Printf( f, "\t{\n\t\tmap\t%s\n\t}\n", shadername ); // save basemap
|
||||
|
||||
FS_Printf( f, "\t{\n\t\tmap\t\t$lightmap\n" ); // lightmap stage
|
||||
FS_Printf( f, "\t\tblendFunc\t\tfilter\n" );
|
||||
FS_Printf( f, "\t}\n" ); // close section
|
||||
|
||||
FS_Printf( f, "\t{\n\t\tmap\t%s_luma\n", shadername ); // save luma
|
||||
FS_Printf( f, "\t\tblendFunc\t\tadd\n" );
|
||||
FS_Printf( f, "\t}\n" ); // close section
|
||||
animcount = num_anims = 0; // done
|
||||
}
|
||||
else
|
||||
{
|
||||
FS_Printf( f, "\t{\n\t\tmap\t%s_luma\n", shadername ); // save luma
|
||||
FS_Printf( f, "\t\tblendFunc\tadd\n" );
|
||||
if( flags & SURF_WARP ) FS_Print( f, "\t\ttcGen\twarp\n" );
|
||||
FS_Printf( f, "\t}\n" ); // close section
|
||||
}
|
||||
}
|
||||
|
||||
FS_Print( f, "}\n" ); // close shader
|
||||
|
@ -313,6 +339,7 @@ void Conv_ShaderGetFlags( const char *imagename, const char *shadername, const c
|
|||
else if( !com.strnicmp( imagename, "glass", 5 )) *flags |= SURF_TRANS66;
|
||||
else if( !com.strnicmp( imagename, "mirror", 6 )) *flags |= SURF_MIRROR;
|
||||
else if( !com.strnicmp( imagename, "portal", 6 )) *flags |= SURF_PORTAL;
|
||||
else if( com.stristr( imagename, "trigger" )) *contents |= CONTENTS_TRIGGER;
|
||||
|
||||
// try to exctract contents and flags directly form mip-name
|
||||
if( imagename[0] == '!' || imagename[0] == '*' ) *flags |= SURF_WARP; // liquids
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "utils.h"
|
||||
|
||||
string wadoutname;
|
||||
bool wad_append = false;
|
||||
script_t *wadqc = NULL;
|
||||
wfile_t *handle = NULL;
|
||||
string lumpname;
|
||||
|
@ -130,7 +131,9 @@ byte Mip_AveragePixels( int count )
|
|||
|
||||
void Wad3_NewWad( void )
|
||||
{
|
||||
handle = WAD_Open( wadoutname, "wb" );
|
||||
if( wad_append )
|
||||
handle = WAD_Open( wadoutname, "a+" );
|
||||
else handle = WAD_Open( wadoutname, "wb" );
|
||||
if( !handle ) Sys_Break( "Wad3_NewWad: can't create %s\n", wadoutname );
|
||||
}
|
||||
|
||||
|
@ -144,7 +147,7 @@ void Wad3_AddLump( const byte *buffer, size_t lumpsize, int lump_type, bool comp
|
|||
int result;
|
||||
if( !handle ) Wad3_NewWad(); // create wad file
|
||||
result = WAD_Write( handle, lumpname, buffer, lumpsize, lump_type, ( compress ? CMP_ZLIB : CMP_NONE ));
|
||||
if( result != -1 ) Msg("Add %s\t#%i\n", lumpname, result ); // FIXME: align message
|
||||
if( result != -1 ) Msg("Add %s\t#%3i\n", lumpname, result ); // FIXME: align message
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -167,10 +170,11 @@ void Cmd_GrabMip( void )
|
|||
|
||||
Com_ReadString( wadqc, SC_PARSE_GENERIC, lumpname );
|
||||
|
||||
// load mip image or replaced with error.bmp
|
||||
image = FS_LoadImage( lumpname, error_bmp, error_bmp_size );
|
||||
// load mip image
|
||||
image = FS_LoadImage( lumpname, NULL, 0 );
|
||||
if( !image )
|
||||
{
|
||||
Com_SkipRestOfLine( wadqc );
|
||||
// no fatal error, just ignore this image for adding into wad-archive
|
||||
MsgDev( D_ERROR, "Cmd_LoadMip: unable to loading %s\n", lumpname );
|
||||
return;
|
||||
|
@ -316,7 +320,7 @@ void Cmd_GrabMip( void )
|
|||
plump += 768;
|
||||
|
||||
// write out and release intermediate buffers
|
||||
Wad3_AddLump( lump, plump_size, TYPE_MIPTEX2, false );
|
||||
Wad3_AddLump( lump, plump_size, TYPE_MIPTEX, false );
|
||||
}
|
||||
else MsgDev( D_WARN, "lump %s have invalid size, ignore\n", lumpname );
|
||||
FS_FreeImage( image );
|
||||
|
@ -339,10 +343,11 @@ void Cmd_GrabPic( void )
|
|||
|
||||
Com_ReadString( wadqc, SC_PARSE_GENERIC, lumpname );
|
||||
|
||||
// load mip image or replaced with error.bmp
|
||||
image = FS_LoadImage( lumpname, error_bmp, error_bmp_size );
|
||||
// load lmp image
|
||||
image = FS_LoadImage( lumpname, NULL, 0 );
|
||||
if( !image )
|
||||
{
|
||||
Com_SkipRestOfLine( wadqc );
|
||||
// no fatal error, just ignore this image for adding into wad-archive
|
||||
MsgDev( D_ERROR, "Cmd_LoadPic: unable to loading %s\n", lumpname );
|
||||
return;
|
||||
|
@ -415,6 +420,7 @@ void Cmd_GrabScript( void )
|
|||
|
||||
if( !lump || !plump_size )
|
||||
{
|
||||
Com_SkipRestOfLine( wadqc );
|
||||
// no fatal error, just ignore this image for adding into wad-archive
|
||||
MsgDev( D_ERROR, "Cmd_LoadScript: unable to loading %s\n", lumpname );
|
||||
return;
|
||||
|
@ -445,6 +451,7 @@ void Cmd_GrabProgs( void )
|
|||
|
||||
if( !lump || !plump_size || plump_size < sizeof(dprograms_t))
|
||||
{
|
||||
Com_SkipRestOfLine( wadqc );
|
||||
// no fatal error, just ignore this image for adding into wad-archive
|
||||
MsgDev( D_ERROR, "Cmd_LoadProgs: unable to loading %s\n", lumpname );
|
||||
return;
|
||||
|
@ -467,10 +474,15 @@ void Cmd_GrabProgs( void )
|
|||
|
||||
void Cmd_WadName( void )
|
||||
{
|
||||
Com_ReadString( wadqc, SC_PARSE_GENERIC, wadoutname );
|
||||
string parm;
|
||||
|
||||
Com_ReadString( wadqc, SC_ALLOW_PATHNAMES2, wadoutname );
|
||||
|
||||
FS_StripExtension( wadoutname );
|
||||
FS_DefaultExtension( wadoutname, ".wad" );
|
||||
|
||||
if( Com_ReadString( wadqc, SC_ALLOW_PATHNAMES2, parm ))
|
||||
if( !com.stricmp( parm, "append" )) wad_append = true;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -67,5 +67,5 @@ if exist vsound\vsound.plg del /f /q vsound\vsound.plg
|
|||
echo Build succeeded!
|
||||
echo Please wait. Xash is now loading
|
||||
cd D:\Xash3D\
|
||||
quake.exe -game tmpQuArK -log -debug -dev 3 +map start
|
||||
quake.exe -game tmpQuArK -log -debug -dev 3 +map qctest
|
||||
:done
|
|
@ -40,14 +40,8 @@ void CL_DeltaEntity( sizebuf_t *msg, frame_t *frame, int newnum, entity_state_t
|
|||
ent = PRVM_EDICT_NUM( newnum );
|
||||
state = &cl_parse_entities[cl.parse_entities & (MAX_PARSE_ENTITIES-1)];
|
||||
|
||||
if( unchanged )
|
||||
{
|
||||
*state = *old;
|
||||
}
|
||||
else
|
||||
{
|
||||
MSG_ReadDeltaEntity( msg, old, state, newnum );
|
||||
}
|
||||
if( unchanged ) *state = *old;
|
||||
else MSG_ReadDeltaEntity( msg, old, state, newnum );
|
||||
|
||||
if( state->number == -1 ) return; // entity was delta removed
|
||||
|
||||
|
@ -66,7 +60,7 @@ void CL_DeltaEntity( sizebuf_t *msg, frame_t *frame, int newnum, entity_state_t
|
|||
{
|
||||
// duplicate the current state so lerping doesn't hurt anything
|
||||
ent->priv.cl->prev = *state;
|
||||
VectorCopy (state->old_origin, ent->priv.cl->prev.origin);
|
||||
VectorCopy( state->old_origin, ent->priv.cl->prev.origin );
|
||||
}
|
||||
else
|
||||
{ // shuffle the last state to previous
|
||||
|
|
|
@ -732,12 +732,12 @@ void CL_PrepVideo( void )
|
|||
SCR_UpdateScreen();
|
||||
}
|
||||
|
||||
// setup sky shader
|
||||
// setup default sky shader or custom skybox from progs
|
||||
re->RegisterShader( cl.configstrings[CS_SKYNAME], SHADER_SKY );
|
||||
Cvar_SetValue("scr_loading", 100.0f ); // all done
|
||||
|
||||
re->EndRegistration (); // the render can now free unneeded stuff
|
||||
Con_ClearNotify(); // clear any lines of console text
|
||||
re->EndRegistration(); // the render can now free unneeded stuff
|
||||
Con_ClearNotify(); // clear any lines of console text
|
||||
SCR_UpdateScreen();
|
||||
cl.video_prepped = true;
|
||||
cl.force_refdef = true;
|
||||
|
|
|
@ -63,7 +63,7 @@ void V_TestEntities( void )
|
|||
float f, r;
|
||||
entity_state_t ent;
|
||||
|
||||
memset( &ent, 0, sizeof(entity_state_t));
|
||||
Mem_Set( &ent, 0, sizeof( entity_state_t ));
|
||||
V_ClearScene();
|
||||
|
||||
for( i = 0; i < 32; i++ )
|
||||
|
@ -169,7 +169,7 @@ void V_RenderView( void )
|
|||
cl.refdef.vieworg[1] += 1.0 / 32;
|
||||
cl.refdef.vieworg[2] += 1.0 / 32;
|
||||
|
||||
Mem_Copy( &cl.refdef.rect, &scr_vrect, sizeof(vrect_t));
|
||||
Mem_Copy( &cl.refdef.rect, &scr_vrect, sizeof( vrect_t ));
|
||||
|
||||
cl.refdef.areabits = cl.frame.areabits;
|
||||
cl.refdef.rdflags = cl.frame.ps.renderfx;
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: engine - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\ÀÄÌÈÍÈ~1.9CC\LOCALS~1\Temp\RSP34F7.tmp" with contents
|
||||
[
|
||||
/nologo /MDd /W3 /Gm /Gi /GX /ZI /Od /I "./" /I "common" /I "server" /I "client" /I "../public" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\engine\!debug/" /Fo"..\temp\engine\!debug/" /Fd"..\temp\engine\!debug/" /FD /c
|
||||
"D:\Xash3D\src_main\engine\server\sv_cmds.c"
|
||||
"D:\Xash3D\src_main\engine\server\sv_progs.c"
|
||||
]
|
||||
Creating command line "cl.exe @"C:\DOCUME~1\ÀÄÌÈÍÈ~1.9CC\LOCALS~1\Temp\RSP34F7.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÀÄÌÈÍÈ~1.9CC\LOCALS~1\Temp\RSP34F8.tmp" with contents
|
||||
[
|
||||
user32.lib msvcrtd.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"..\temp\engine\!debug/engine.pdb" /debug /machine:I386 /nodefaultlib:"msvcrt.lib" /out:"..\temp\engine\!debug/engine.dll" /implib:"..\temp\engine\!debug/engine.lib" /pdbtype:sept
|
||||
"\Xash3D\src_main\temp\engine\!debug\cinematic.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_cmds.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_demo.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_frame.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_fx.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_input.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_main.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_parse.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_pred.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_progs.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_scrn.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_tent.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_view.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\con_keys.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\con_main.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\con_utils.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\engfuncs.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\engine.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\host.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\infostring.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\input.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\menu.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\net_chan.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\net_huff.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\net_msg.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\sv_client.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\sv_cmds.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\sv_frame.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\sv_init.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\sv_main.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\sv_move.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\sv_phys.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\sv_progs.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\sv_spawn.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\sv_world.obj"
|
||||
]
|
||||
Creating command line "link.exe @"C:\DOCUME~1\ÀÄÌÈÍÈ~1.9CC\LOCALS~1\Temp\RSP34F8.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÀÄÌÈÍÈ~1.9CC\LOCALS~1\Temp\RSP34F9.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \Xash3D\src_main\temp\engine\!debug\engine.dll "D:\Xash3D\bin\engine.dll"
|
||||
]
|
||||
Creating command line ""C:\DOCUME~1\ÀÄÌÈÍÈ~1.9CC\LOCALS~1\Temp\RSP34F9.bat""
|
||||
Compiling...
|
||||
sv_cmds.c
|
||||
sv_progs.c
|
||||
Generating Code...
|
||||
Linking...
|
||||
<h3>Output Window</h3>
|
||||
Performing Custom Build Step on \Xash3D\src_main\temp\engine\!debug\engine.dll
|
||||
‘ª®¯¨à®¢ ® ä ©«®¢: 1.
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
engine.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -26,10 +26,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
//=============================================================================
|
||||
|
||||
#define MAX_MASTERS 8 // max recipients for heartbeat packets
|
||||
#define AREA_SOLID 1
|
||||
#define AREA_TRIGGERS 2
|
||||
|
||||
#define MAX_MASTERS 8 // max recipients for heartbeat packets
|
||||
#define LATENCY_COUNTS 16
|
||||
#define MAX_ENT_CLUSTERS 16
|
||||
#define DF_NO_FRIENDLY_FIRE 0x00000001 //FIXME: move to server.dat
|
||||
#define DF_NO_FRIENDLY_FIRE 0x00000001 // FIXME: move to server.dat
|
||||
|
||||
// classic quake flags
|
||||
#define SPAWNFLAG_NOT_EASY 0x00000100
|
||||
|
@ -37,20 +40,20 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#define SPAWNFLAG_NOT_HARD 0x00000400
|
||||
#define SPAWNFLAG_NOT_DEATHMATCH 0x00000800
|
||||
|
||||
#define AI_FLY (1<<0) // monster is flying
|
||||
#define AI_SWIM (1<<1) // swimming monster
|
||||
#define AI_ONGROUND (1<<2) // monster is onground
|
||||
#define AI_PARTIALONGROUND (1<<3) // monster is partially onground
|
||||
#define AI_GODMODE (1<<4) // monster don't give damage at all
|
||||
#define AI_NOTARGET (1<<5) // monster will no searching enemy's
|
||||
#define AI_NOSTEP (1<<6) // Lazarus stuff
|
||||
#define AI_DUCKED (1<<7) // monster (or player) is ducked
|
||||
#define AI_JUMPING (1<<8) // monster (or player) is jumping
|
||||
#define AI_FROZEN (1<<9) // stop moving, but continue thinking
|
||||
#define AI_ACTOR (1<<10) // disable ai for actor
|
||||
#define AI_DRIVER (1<<11) // npc or player driving vehcicle or train
|
||||
#define AI_SPECTATOR (1<<12) // spectator mode for clients
|
||||
#define AI_WATERJUMP (1<<13) // npc or player take out of water
|
||||
#define AI_FLY BIT(0) // monster is flying
|
||||
#define AI_SWIM BIT(1) // swimming monster
|
||||
#define AI_ONGROUND BIT(2) // monster is onground
|
||||
#define AI_PARTIALONGROUND BIT(3) // monster is partially onground
|
||||
#define AI_GODMODE BIT(4) // monster don't give damage at all
|
||||
#define AI_NOTARGET BIT(5) // monster will no searching enemy's
|
||||
#define AI_NOSTEP BIT(6) // Lazarus stuff
|
||||
#define AI_DUCKED BIT(7) // monster (or player) is ducked
|
||||
#define AI_JUMPING BIT(8) // monster (or player) is jumping
|
||||
#define AI_FROZEN BIT(9) // stop moving, but continue thinking
|
||||
#define AI_ACTOR BIT(10) // disable ai for actor
|
||||
#define AI_DRIVER BIT(11) // npc or player driving vehcicle or train
|
||||
#define AI_SPECTATOR BIT(12) // spectator mode for clients
|
||||
#define AI_WATERJUMP BIT(13) // npc or player take out of water
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
@ -120,7 +123,7 @@ typedef struct sv_client_s
|
|||
|
||||
vec3_t fix_angles; // q1 legacy
|
||||
bool fixangle;
|
||||
// commands exhaust it, assume time cheating
|
||||
|
||||
int ping;
|
||||
int rate;
|
||||
int surpressCount; // number of messages rate supressed
|
||||
|
@ -150,14 +153,13 @@ typedef struct sv_client_s
|
|||
netchan_t netchan;
|
||||
} sv_client_t;
|
||||
|
||||
|
||||
typedef struct worldsector_s
|
||||
// link_t is only used for entity area links now
|
||||
typedef struct link_s
|
||||
{
|
||||
int axis; // -1 = leaf node
|
||||
float dist;
|
||||
struct worldsector_s *children[2];
|
||||
sv_edict_t *entities;
|
||||
} worldsector_t;
|
||||
struct link_s *prev;
|
||||
struct link_s *next;
|
||||
int entnum; // PRVM_EDICT_NUM
|
||||
} link_t;
|
||||
|
||||
struct sv_edict_s
|
||||
{
|
||||
|
@ -166,11 +168,10 @@ struct sv_edict_s
|
|||
float freetime; // sv.time when the object was freed
|
||||
|
||||
// sv_private_edict_t
|
||||
worldsector_t *worldsector; // member of current wolrdsector
|
||||
struct sv_edict_s *nextedict; // next edict in world sector
|
||||
link_t area; // linked to a division node or leaf
|
||||
struct sv_client_s *client; // filled for player ents
|
||||
int clipmask; // trace info
|
||||
int lastcluster; // unused if num_clusters != -1
|
||||
int headnode; // unused if num_clusters != -1
|
||||
int linkcount;
|
||||
int num_clusters; // if -1, use headnode instead
|
||||
int clusternums[MAX_ENT_CLUSTERS];
|
||||
|
@ -221,7 +222,7 @@ typedef struct
|
|||
dword realtime; // always increasing, no clamping, etc
|
||||
dword timeleft;
|
||||
|
||||
string mapcmd; // ie: *intro.cin+base
|
||||
string mapcmd; // ie: *intro.cin+base
|
||||
string comment; // map name, e.t.c.
|
||||
|
||||
int spawncount; // incremented each server start
|
||||
|
@ -344,7 +345,6 @@ void SV_ConnectionlessPacket( netadr_t from, sizebuf_t *msg );
|
|||
//
|
||||
void SV_Status_f( void );
|
||||
void SV_Newgame_f( void );
|
||||
void SV_SectorList_f( void );
|
||||
|
||||
//
|
||||
// sv_ents.c
|
||||
|
@ -412,7 +412,7 @@ void SV_LinkEdict (edict_t *ent);
|
|||
// sets ent->leafnums[] for pvs determination even if the entity
|
||||
// is not solid
|
||||
|
||||
int SV_AreaEdicts( const vec3_t mins, const vec3_t maxs, edict_t **list, int maxcount );
|
||||
int SV_AreaEdicts( const vec3_t mins, const vec3_t maxs, edict_t **list, int maxcount, int areatype );
|
||||
// fills in a table of edict pointers with edicts that have bounding boxes
|
||||
// that intersect the given area. It is possible for a non-axial bmodel
|
||||
// to be returned that doesn't actually intersect the area on an exact
|
||||
|
|
|
@ -198,9 +198,9 @@ void SV_Map_f( void )
|
|||
}
|
||||
|
||||
com.snprintf( filename, MAX_STRING, "%s.bsp", Cmd_Argv(1));
|
||||
if(!FS_FileExists(va("maps/%s", filename )))
|
||||
if( !FS_FileExists( va("maps/%s", filename )))
|
||||
{
|
||||
Msg("Can't loading %s\n", filename );
|
||||
Msg( "Can't loading %s\n", filename );
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -524,27 +524,26 @@ SV_InitOperatorCommands
|
|||
*/
|
||||
void SV_InitOperatorCommands( void )
|
||||
{
|
||||
Cmd_AddCommand ("heartbeat", SV_Heartbeat_f, "send a heartbeat to the master server" );
|
||||
Cmd_AddCommand ("kick", SV_Kick_f, "kick a player off the server by number or name" );
|
||||
Cmd_AddCommand ("status", SV_Status_f, "print server status information" );
|
||||
Cmd_AddCommand ("serverinfo", SV_ServerInfo_f, "print server settings" );
|
||||
Cmd_AddCommand ("clientinfo", SV_ClientInfo_f, "print user infostring (player num required)" );
|
||||
Cmd_AddCommand( "heartbeat", SV_Heartbeat_f, "send a heartbeat to the master server" );
|
||||
Cmd_AddCommand( "kick", SV_Kick_f, "kick a player off the server by number or name" );
|
||||
Cmd_AddCommand( "status", SV_Status_f, "print server status information" );
|
||||
Cmd_AddCommand( "serverinfo", SV_ServerInfo_f, "print server settings" );
|
||||
Cmd_AddCommand( "clientinfo", SV_ClientInfo_f, "print user infostring (player num required)" );
|
||||
|
||||
Cmd_AddCommand("map", SV_Map_f, "start new level" );
|
||||
Cmd_AddCommand("newgame", SV_Newgame_f, "begin new game" );
|
||||
Cmd_AddCommand("changelevel", SV_ChangeLevel_f, "changing level" );
|
||||
Cmd_AddCommand("restart", SV_Restart_f, "restarting current level" );
|
||||
Cmd_AddCommand("sectorlist", SV_SectorList_f, "display pvs sectors" );
|
||||
Cmd_AddCommand( "map", SV_Map_f, "start new level" );
|
||||
Cmd_AddCommand( "newgame", SV_Newgame_f, "begin new game" );
|
||||
Cmd_AddCommand( "changelevel", SV_ChangeLevel_f, "changing level" );
|
||||
Cmd_AddCommand( "restart", SV_Restart_f, "restarting current level" );
|
||||
|
||||
if( host.type == HOST_DEDICATED )
|
||||
{
|
||||
Cmd_AddCommand ("say", SV_ConSay_f, "send a chat message to everyone on the server" );
|
||||
Cmd_AddCommand("setmaster", SV_SetMaster_f, "set ip address for dedicated server" );
|
||||
Cmd_AddCommand( "say", SV_ConSay_f, "send a chat message to everyone on the server" );
|
||||
Cmd_AddCommand( "setmaster", SV_SetMaster_f, "set ip address for dedicated server" );
|
||||
}
|
||||
|
||||
Cmd_AddCommand ("save", SV_Save_f, "save the game to a file");
|
||||
Cmd_AddCommand ("load", SV_Load_f, "load a saved game file" );
|
||||
Cmd_AddCommand ("killserver", SV_KillServer_f, "shutdown current server" );
|
||||
Cmd_AddCommand( "save", SV_Save_f, "save the game to a file" );
|
||||
Cmd_AddCommand( "load", SV_Load_f, "load a saved game file" );
|
||||
Cmd_AddCommand( "killserver", SV_KillServer_f, "shutdown current server" );
|
||||
}
|
||||
|
||||
void SV_KillOperatorCommands( void )
|
||||
|
|
|
@ -13,9 +13,8 @@ typedef struct
|
|||
int entities[MAX_VISIBLE_PACKET];
|
||||
} sv_ents_t;
|
||||
|
||||
static byte *clientpvs;
|
||||
static byte *clientphs;
|
||||
static byte *bitvector;
|
||||
static byte *clientpvs; // FatPVS
|
||||
static byte *clientphs; // ClientPHS
|
||||
|
||||
int c_fullsend;
|
||||
|
||||
|
@ -186,9 +185,10 @@ static void SV_AddEntitiesToPacket( vec3_t origin, client_frame_t *frame, sv_ent
|
|||
edict_t *ent;
|
||||
sv_edict_t *svent;
|
||||
int leafnum;
|
||||
byte *clientpvs;
|
||||
byte *clientphs;
|
||||
byte *bitvector;
|
||||
int clientarea, clientcluster;
|
||||
int clientarea;
|
||||
int clientcluster;
|
||||
bool force = false;
|
||||
|
||||
// during an error shutdown message we may need to transmit
|
||||
|
@ -196,7 +196,7 @@ static void SV_AddEntitiesToPacket( vec3_t origin, client_frame_t *frame, sv_ent
|
|||
// specfically check for it
|
||||
if( !sv.state ) return;
|
||||
|
||||
bitvector = pe->FatPVS( origin, portal );
|
||||
clientpvs = pe->FatPVS( origin, portal );
|
||||
|
||||
leafnum = pe->PointLeafnum( origin );
|
||||
clientarea = pe->LeafArea( leafnum );
|
||||
|
@ -204,9 +204,9 @@ static void SV_AddEntitiesToPacket( vec3_t origin, client_frame_t *frame, sv_ent
|
|||
|
||||
// calculate the visible areas
|
||||
frame->areabits_size = pe->WriteAreaBits( frame->areabits, clientarea, portal );
|
||||
clientpvs = pe->ClusterPVS( clientcluster );
|
||||
clientphs = pe->ClusterPHS( clientcluster );
|
||||
|
||||
for( e = 0; e < prog->num_edicts; e++ )
|
||||
for( e = 1; e < prog->num_edicts; e++ )
|
||||
{
|
||||
ent = PRVM_EDICT_NUM( e );
|
||||
force = false; // clear forceflag
|
||||
|
@ -220,7 +220,7 @@ static void SV_AddEntitiesToPacket( vec3_t origin, client_frame_t *frame, sv_ent
|
|||
// NOTE: client index on client expected that entity will be valid
|
||||
if( sv_newprotocol->integer && ent->priv.sv->s.ed_type == ED_CLIENT )
|
||||
force = true;
|
||||
|
||||
|
||||
// never send entities that aren't linked in
|
||||
if( !ent->priv.sv->linked && !force ) continue;
|
||||
|
||||
|
@ -235,56 +235,54 @@ static void SV_AddEntitiesToPacket( vec3_t origin, client_frame_t *frame, sv_ent
|
|||
// don't double add an entity through portals
|
||||
if( svent->framenum == sv.net_framenum ) continue;
|
||||
|
||||
// ignore if not touching a PV leaf check area
|
||||
if( !pe->AreasConnected( clientarea, ent->priv.sv->areanum ))
|
||||
if( !force )
|
||||
{
|
||||
// doors can legally straddle two areas, so
|
||||
// we may need to check another one
|
||||
if( !pe->AreasConnected( clientarea, ent->priv.sv->areanum2 ))
|
||||
continue; // blocked by a door
|
||||
}
|
||||
// bitvector = clientpvs;
|
||||
|
||||
// check individual leafs
|
||||
if( !svent->num_clusters && !force ) continue;
|
||||
for( i = l = 0; i < svent->num_clusters && !force; i++ )
|
||||
{
|
||||
l = svent->clusternums[i];
|
||||
if( bitvector[l>>3] & (1<<(l & 7)))
|
||||
break;
|
||||
}
|
||||
|
||||
// if we haven't found it to be visible,
|
||||
// check overflow clusters that coudln't be stored
|
||||
if( !force && i == svent->num_clusters )
|
||||
{
|
||||
if( svent->lastcluster )
|
||||
// ignore if not touching a PV leaf check area
|
||||
if( !pe->AreasConnected( clientarea, ent->priv.sv->areanum ))
|
||||
{
|
||||
for( ; l <= svent->lastcluster; l++ )
|
||||
// doors can legally straddle two areas, so
|
||||
// we may need to check another one
|
||||
if( !pe->AreasConnected( clientarea, ent->priv.sv->areanum2 ))
|
||||
continue; // blocked by a door
|
||||
}
|
||||
}
|
||||
|
||||
if( svent->s.ed_type == ED_AMBIENT )
|
||||
bitvector = clientphs;
|
||||
else bitvector = clientpvs;
|
||||
|
||||
if( !force )
|
||||
{
|
||||
// check individual leafs
|
||||
if( svent->num_clusters == -1 )
|
||||
{
|
||||
// too many leafs for individual check, go by headnode
|
||||
if( !pe->HeadnodeVisible( svent->headnode, bitvector ))
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
// check individual leafs
|
||||
for( i = 0; i < svent->num_clusters; i++ )
|
||||
{
|
||||
l = svent->clusternums[i];
|
||||
if( bitvector[l>>3] & (1<<(l & 7)))
|
||||
break;
|
||||
}
|
||||
if( l == svent->lastcluster )
|
||||
if( i == ent->priv.sv->num_clusters )
|
||||
continue; // not visible
|
||||
}
|
||||
else continue;
|
||||
}
|
||||
|
||||
if( ent->priv.sv->s.ed_type == ED_AMBIENT )
|
||||
{
|
||||
// don't send sounds if they will be attenuated away
|
||||
vec3_t delta, entorigin;
|
||||
float len;
|
||||
|
||||
if(VectorIsNull( ent->progs.sv->origin ))
|
||||
{
|
||||
// don't send sounds if they will be attenuated away
|
||||
if( VectorIsNull( ent->progs.sv->origin ))
|
||||
VectorAverage( ent->progs.sv->mins, ent->progs.sv->maxs, entorigin );
|
||||
}
|
||||
else
|
||||
{
|
||||
VectorCopy( ent->progs.sv->origin, entorigin );
|
||||
}
|
||||
else VectorCopy( ent->progs.sv->origin, entorigin );
|
||||
|
||||
VectorSubtract( origin, entorigin, delta );
|
||||
len = VectorLength( delta );
|
||||
|
@ -402,7 +400,7 @@ void SV_BuildClientFrame( sv_client_t *cl )
|
|||
|
||||
// clear everything in this snapshot
|
||||
frame_ents.num_entities = c_fullsend = 0;
|
||||
memset( frame->areabits, 0, sizeof( frame->areabits ));
|
||||
Mem_Set( frame->areabits, 0, sizeof( frame->areabits ));
|
||||
if( !clent->priv.sv->client ) return; // not in game yet
|
||||
|
||||
// find the client's PVS
|
||||
|
|
|
@ -174,6 +174,7 @@ void SV_SpawnServer( const char *server, const char *savename )
|
|||
com.sprintf( sv.configstrings[CS_MODELS+1], "maps/%s", server );
|
||||
sv.worldmodel = sv.models[1] = pe->BeginRegistration( sv.configstrings[CS_MODELS+1], false, &checksum );
|
||||
com.sprintf( sv.configstrings[CS_MAPCHECKSUM], "%i", checksum );
|
||||
com.strncpy( sv.configstrings[CS_SKYNAME], "<skybox>", 64 );
|
||||
|
||||
// clear physics interaction links
|
||||
SV_ClearWorld();
|
||||
|
|
|
@ -118,7 +118,7 @@ trace_t SV_Trace( const vec3_t start, const vec3_t mins, const vec3_t maxs, cons
|
|||
// clip to entities
|
||||
// because this uses SV_AreaEdicts, we know all entity boxes overlap
|
||||
// the clip region, so we can skip culling checks in the loop below
|
||||
numtouchedicts = SV_AreaEdicts( clipboxmins, clipboxmaxs, touchedicts, host.max_edicts );
|
||||
numtouchedicts = SV_AreaEdicts( clipboxmins, clipboxmaxs, touchedicts, host.max_edicts, AREA_SOLID );
|
||||
if( numtouchedicts > host.max_edicts )
|
||||
{
|
||||
// this never happens
|
||||
|
@ -185,7 +185,7 @@ int SV_PointContents( const vec3_t point )
|
|||
contents = sv.worldmodel->PointContents( point, sv.worldmodel );
|
||||
|
||||
// get list of entities at this point
|
||||
numtouchedicts = SV_AreaEdicts( point, point, touchedicts, host.max_edicts );
|
||||
numtouchedicts = SV_AreaEdicts( point, point, touchedicts, host.max_edicts, AREA_SOLID );
|
||||
if( numtouchedicts > host.max_edicts )
|
||||
{
|
||||
// this never happens
|
||||
|
@ -395,7 +395,7 @@ void SV_TouchTriggers( edict_t *ent )
|
|||
if(!((int)ent->progs.sv->flags & FL_CLIENT) && (ent->progs.sv->health <= 0))
|
||||
return;
|
||||
|
||||
num = SV_AreaEdicts( ent->progs.sv->absmin, ent->progs.sv->absmax, touch, host.max_edicts );
|
||||
num = SV_AreaEdicts( ent->progs.sv->absmin, ent->progs.sv->absmax, touch, host.max_edicts, AREA_TRIGGERS );
|
||||
|
||||
PRVM_PUSH_GLOBALS;
|
||||
|
||||
|
@ -784,7 +784,7 @@ void SV_PushMove( edict_t *pusher, float movetime )
|
|||
// see if any solid entities are inside the final position
|
||||
num_moved = 0;
|
||||
|
||||
numcheckentities = SV_AreaEdicts( mins, maxs, checkentities, MAX_EDICTS );
|
||||
numcheckentities = SV_AreaEdicts( mins, maxs, checkentities, MAX_EDICTS, AREA_SOLID );
|
||||
for( e = 0; e < numcheckentities; e++ )
|
||||
{
|
||||
edict_t *check = checkentities[e];
|
||||
|
|
|
@ -1,23 +1,7 @@
|
|||
/*
|
||||
Copyright (C) 1997-2001 Id Software, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
// world.c -- world query functions
|
||||
//=======================================================================
|
||||
// Copyright XashXT Group 2008 ©
|
||||
// sv_world.c - world query functions
|
||||
//=======================================================================
|
||||
|
||||
#include "common.h"
|
||||
#include "server.h"
|
||||
|
@ -26,17 +10,24 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
/*
|
||||
===============================================================================
|
||||
|
||||
ENTITY CHECKING
|
||||
ENTITY AREA CHECKING
|
||||
|
||||
To avoid linearly searching through lists of entities during environment testing,
|
||||
the world is carved up with an evenly spaced, axially aligned bsp tree. Entities
|
||||
are kept in chains either at the final leafs, or at the first node that splits
|
||||
them, which prevents having to deal with multiple fragments of a single entity.
|
||||
FIXME: this use of "area" is different from the bsp file use
|
||||
===============================================================================
|
||||
*/
|
||||
#define AREA_DEPTH 4
|
||||
#define AREA_NODES 64
|
||||
#define MAX_TOTAL_ENT_LEAFS 128
|
||||
#define EDICT_FROM_AREA( l ) PRVM_EDICT_NUM( l->entnum )
|
||||
#define MAX_TOTAL_ENT_LEAFS 128
|
||||
#define AREA_NODES 32
|
||||
#define AREA_DEPTH 4
|
||||
|
||||
typedef struct areanode_s
|
||||
{
|
||||
int axis; // -1 = leaf node
|
||||
float dist;
|
||||
struct areanode_s *children[2];
|
||||
link_t trigger_edicts;
|
||||
link_t solid_edicts;
|
||||
} areanode_t;
|
||||
|
||||
typedef struct area_s
|
||||
{
|
||||
|
@ -48,44 +39,69 @@ typedef struct area_s
|
|||
int type;
|
||||
} area_t;
|
||||
|
||||
worldsector_t sv_worldsectors[AREA_NODES];
|
||||
int sv_numworldsectors;
|
||||
areanode_t sv_areanodes[AREA_NODES];
|
||||
int sv_numareanodes;
|
||||
|
||||
/*
|
||||
===============
|
||||
SV_SectorList_f
|
||||
SV_ClearLink
|
||||
|
||||
SV_ClearLink is used for new headnodes
|
||||
===============
|
||||
*/
|
||||
void SV_SectorList_f( void )
|
||||
void SV_ClearLink( link_t *l )
|
||||
{
|
||||
int i, c;
|
||||
worldsector_t *sec;
|
||||
sv_edict_t *ent;
|
||||
|
||||
for ( i = 0; i < sv_numworldsectors; i++ )
|
||||
{
|
||||
sec = &sv_worldsectors[i], c = 0;
|
||||
for( ent = sec->entities; ent; ent = ent->nextedict ) c++;
|
||||
if( c ) Msg( "sector %i: %i entities\n", i, c );
|
||||
}
|
||||
l->prev = l->next = l;
|
||||
}
|
||||
|
||||
/*
|
||||
===============
|
||||
SV_CreateworldSector
|
||||
SV_RemoveLink
|
||||
|
||||
Builds a uniformly subdivided tree for the given world size
|
||||
remove link from chain
|
||||
===============
|
||||
*/
|
||||
worldsector_t *SV_CreateWorldSector( int depth, vec3_t mins, vec3_t maxs )
|
||||
void SV_RemoveLink( link_t *l )
|
||||
{
|
||||
worldsector_t *anode;
|
||||
l->next->prev = l->prev;
|
||||
l->prev->next = l->next;
|
||||
}
|
||||
|
||||
/*
|
||||
===============
|
||||
SV_InsertLinkBefore
|
||||
|
||||
kept trigger and solid entities seperate
|
||||
===============
|
||||
*/
|
||||
void SV_InsertLinkBefore( link_t *l, link_t *before, edict_t *ent )
|
||||
{
|
||||
l->next = before;
|
||||
l->prev = before->prev;
|
||||
l->prev->next = l;
|
||||
l->next->prev = l;
|
||||
l->entnum = PRVM_NUM_FOR_EDICT(ent);
|
||||
}
|
||||
|
||||
/*
|
||||
===============
|
||||
SV_CreateAreaNode
|
||||
|
||||
builds a uniformly subdivided tree for the given world size
|
||||
===============
|
||||
*/
|
||||
areanode_t *SV_CreateAreaNode( int depth, vec3_t mins, vec3_t maxs )
|
||||
{
|
||||
areanode_t *anode;
|
||||
vec3_t size;
|
||||
vec3_t mins1, maxs1, mins2, maxs2;
|
||||
vec3_t mins1, maxs1;
|
||||
vec3_t mins2, maxs2;
|
||||
|
||||
anode = &sv_worldsectors[sv_numworldsectors];
|
||||
sv_numworldsectors++;
|
||||
anode = &sv_areanodes[sv_numareanodes++];
|
||||
|
||||
SV_ClearLink( &anode->trigger_edicts );
|
||||
SV_ClearLink( &anode->solid_edicts );
|
||||
|
||||
if( depth == AREA_DEPTH )
|
||||
{
|
||||
anode->axis = -1;
|
||||
|
@ -94,18 +110,19 @@ worldsector_t *SV_CreateWorldSector( int depth, vec3_t mins, vec3_t maxs )
|
|||
}
|
||||
|
||||
VectorSubtract( maxs, mins, size );
|
||||
if( size[0] > size[1] ) anode->axis = 0;
|
||||
if( size[0] > size[1] )
|
||||
anode->axis = 0;
|
||||
else anode->axis = 1;
|
||||
|
||||
|
||||
anode->dist = 0.5f * (maxs[anode->axis] + mins[anode->axis]);
|
||||
VectorCopy(mins, mins1);
|
||||
VectorCopy(mins, mins2);
|
||||
VectorCopy(maxs, maxs1);
|
||||
VectorCopy(maxs, maxs2);
|
||||
VectorCopy( mins, mins1 );
|
||||
VectorCopy( mins, mins2 );
|
||||
VectorCopy( maxs, maxs1 );
|
||||
VectorCopy( maxs, maxs2 );
|
||||
|
||||
maxs1[anode->axis] = mins2[anode->axis] = anode->dist;
|
||||
anode->children[0] = SV_CreateWorldSector( depth + 1, mins2, maxs2);
|
||||
anode->children[1] = SV_CreateWorldSector( depth + 1, mins1, maxs1);
|
||||
anode->children[0] = SV_CreateAreaNode( depth+1, mins2, maxs2 );
|
||||
anode->children[1] = SV_CreateAreaNode( depth+1, mins1, maxs1 );
|
||||
|
||||
return anode;
|
||||
}
|
||||
|
@ -119,9 +136,10 @@ SV_ClearWorld
|
|||
void SV_ClearWorld( void )
|
||||
{
|
||||
cmodel_t *world = sv.models[1];
|
||||
memset( sv_worldsectors, 0, sizeof(sv_worldsectors));
|
||||
sv_numworldsectors = 0;
|
||||
SV_CreateWorldSector( 0, world->mins, world->maxs );
|
||||
|
||||
sv_numareanodes = 0;
|
||||
Mem_Set( sv_areanodes, 0, sizeof( sv_areanodes ));
|
||||
SV_CreateAreaNode( 0, world->mins, world->maxs );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -131,30 +149,11 @@ SV_UnlinkEdict
|
|||
*/
|
||||
void SV_UnlinkEdict( edict_t *ent )
|
||||
{
|
||||
sv_edict_t *sv_ent, *scan;
|
||||
worldsector_t *ws;
|
||||
// not linked in anywhere
|
||||
if( !ent->priv.sv->area.prev ) return;
|
||||
|
||||
sv_ent = ent->priv.sv;
|
||||
sv_ent->linked = false;
|
||||
ws = sv_ent->worldsector;
|
||||
if( !ws ) return; // not linked in anywhere
|
||||
sv_ent->worldsector = NULL;
|
||||
|
||||
if( ws->entities == sv_ent )
|
||||
{
|
||||
ws->entities = sv_ent->nextedict;
|
||||
return;
|
||||
}
|
||||
|
||||
for( scan = ws->entities; scan; scan = scan->nextedict )
|
||||
{
|
||||
if( scan->nextedict == sv_ent )
|
||||
{
|
||||
scan->nextedict = sv_ent->nextedict;
|
||||
return;
|
||||
}
|
||||
}
|
||||
MsgDev( D_ERROR, "SV_UnlinkEdict: not found in worldSector\n" );
|
||||
SV_RemoveLink( &ent->priv.sv->area );
|
||||
ent->priv.sv->area.prev = ent->priv.sv->area.next = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -164,27 +163,32 @@ SV_LinkEntity
|
|||
*/
|
||||
void SV_LinkEdict( edict_t *ent )
|
||||
{
|
||||
worldsector_t *node;
|
||||
areanode_t *node;
|
||||
int leafs[MAX_TOTAL_ENT_LEAFS];
|
||||
int cluster;
|
||||
int clusters[MAX_TOTAL_ENT_LEAFS];
|
||||
int num_leafs;
|
||||
int i, j, k;
|
||||
int area;
|
||||
int lastleaf;
|
||||
int topnode;
|
||||
sv_edict_t *sv_ent;
|
||||
|
||||
sv_ent = ent->priv.sv;
|
||||
|
||||
if( sv_ent->worldsector ) SV_UnlinkEdict( ent ); // unlink from old position
|
||||
if( sv_ent->area.prev ) SV_UnlinkEdict( ent ); // unlink from old position
|
||||
if( ent == prog->edicts ) return; // don't add the world
|
||||
if( ent->priv.sv->free ) return;
|
||||
if( sv_ent->free ) return;
|
||||
|
||||
// set the size
|
||||
VectorSubtract( ent->progs.sv->maxs, ent->progs.sv->mins, ent->progs.sv->size );
|
||||
|
||||
// encode the size into the entity_state for client prediction
|
||||
if((int)ent->progs.sv->contents & ( CONTENTS_SOLID | CONTENTS_BODY ))
|
||||
if( ent->progs.sv->solid == SOLID_BSP )
|
||||
{
|
||||
// a solid_bbox will never create this value
|
||||
sv_ent->solid = SOLID_BMODEL;
|
||||
}
|
||||
else if(( int )ent->progs.sv->contents & ( CONTENTS_SOLID|CONTENTS_BODY ))
|
||||
{
|
||||
// encode the size into the entity_state for client prediction
|
||||
// assume that x/y are equal and symetric
|
||||
i = ent->progs.sv->maxs[0];
|
||||
i = bound( 1, i, 255 );
|
||||
|
@ -198,20 +202,16 @@ void SV_LinkEdict( edict_t *ent )
|
|||
k = bound( 1, k, 255 );
|
||||
sv_ent->solid = (k<<16)|(j<<8)|i;
|
||||
}
|
||||
else if (ent->progs.sv->solid == SOLID_BSP)
|
||||
{
|
||||
sv_ent->solid = SOLID_BMODEL; // a solid_bbox will never create this value
|
||||
}
|
||||
else sv_ent->solid = 0;
|
||||
|
||||
// set the abs box
|
||||
if (ent->progs.sv->solid == SOLID_BSP && !VectorIsNull(ent->progs.sv->angles))
|
||||
if( ent->progs.sv->solid == SOLID_BSP && !VectorIsNull( ent->progs.sv->angles ))
|
||||
{
|
||||
// expand for rotation
|
||||
int i;
|
||||
float max = RadiusFromBounds( ent->progs.sv->mins, ent->progs.sv->maxs );
|
||||
int i;
|
||||
float max = RadiusFromBounds( ent->progs.sv->mins, ent->progs.sv->maxs );
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
for( i = 0; i < 3; i++ )
|
||||
{
|
||||
ent->progs.sv->absmin[i] = ent->progs.sv->origin[i] - max;
|
||||
ent->progs.sv->absmax[i] = ent->progs.sv->origin[i] + max;
|
||||
|
@ -234,12 +234,11 @@ void SV_LinkEdict( edict_t *ent )
|
|||
|
||||
// link to PVS leafs
|
||||
sv_ent->num_clusters = 0;
|
||||
sv_ent->lastcluster = 0;
|
||||
sv_ent->areanum = -1;
|
||||
sv_ent->areanum2 = -1;
|
||||
sv_ent->areanum = 0;
|
||||
sv_ent->areanum2 = 0;
|
||||
|
||||
// get all leafs, including solids
|
||||
num_leafs = pe->BoxLeafnums( ent->progs.sv->absmin, ent->progs.sv->absmax, leafs, MAX_TOTAL_ENT_LEAFS, &lastleaf );
|
||||
num_leafs = pe->BoxLeafnums( ent->progs.sv->absmin, ent->progs.sv->absmax, leafs, MAX_TOTAL_ENT_LEAFS, &topnode );
|
||||
|
||||
// if none of the leafs were inside the map, the
|
||||
// entity is outside the world and can be considered unlinked
|
||||
|
@ -248,39 +247,56 @@ void SV_LinkEdict( edict_t *ent )
|
|||
// set areas, even from clusters that don't fit in the entity array
|
||||
for( i = 0; i < num_leafs; i++ )
|
||||
{
|
||||
clusters[i] = pe->LeafCluster( leafs[i] );
|
||||
area = pe->LeafArea( leafs[i] );
|
||||
if( area != -1 )
|
||||
if( area )
|
||||
{
|
||||
// doors may legally straggle two areas,
|
||||
// but nothing should evern need more than that
|
||||
if (ent->priv.sv->areanum && ent->priv.sv->areanum != area)
|
||||
if( sv_ent->areanum && sv_ent->areanum != area )
|
||||
{
|
||||
if( ent->priv.sv->areanum != -1 && ent->priv.sv->areanum != area && sv.state == ss_loading )
|
||||
if( sv_ent->areanum2 && sv_ent->areanum2 != area && sv.state == ss_loading )
|
||||
{
|
||||
float *v = ent->progs.sv->absmin;
|
||||
MsgDev( D_WARN, "SV_LinkEdict: object touching 3 areas at %f %f %f\n", v[0], v[1], v[2]);
|
||||
MsgDev( D_WARN, "SV_LinkEdict: object touching 3 areas at %f %f %f\n", v[0], v[1], v[2] );
|
||||
}
|
||||
ent->priv.sv->areanum2 = area;
|
||||
sv_ent->areanum2 = area;
|
||||
}
|
||||
else ent->priv.sv->areanum = area;
|
||||
else sv_ent->areanum = area;
|
||||
}
|
||||
}
|
||||
|
||||
sv_ent->num_clusters = 0;
|
||||
for( i = 0; i < num_leafs; i++ )
|
||||
if( num_leafs >= MAX_TOTAL_ENT_LEAFS )
|
||||
{
|
||||
cluster = pe->LeafCluster( leafs[i] );
|
||||
if( cluster != -1 )
|
||||
// assume we missed some leafs, and mark by headnode
|
||||
sv_ent->num_clusters = -1;
|
||||
sv_ent->headnode = topnode;
|
||||
}
|
||||
else
|
||||
{
|
||||
sv_ent->num_clusters = 0;
|
||||
for( i = 0; i < num_leafs; i++ )
|
||||
{
|
||||
sv_ent->clusternums[sv_ent->num_clusters++] = cluster;
|
||||
if( sv_ent->num_clusters == MAX_ENT_CLUSTERS )
|
||||
break; // list is full
|
||||
if( clusters[i] == -1 ) continue; // not a visible leaf
|
||||
for( j = 0; j < i; j++ )
|
||||
{
|
||||
if( clusters[j] == clusters[i] )
|
||||
break;
|
||||
}
|
||||
if( j == i )
|
||||
{
|
||||
if( sv_ent->num_clusters == MAX_ENT_CLUSTERS )
|
||||
{
|
||||
// assume we missed some leafs, and mark by headnode
|
||||
sv_ent->num_clusters = -1;
|
||||
sv_ent->headnode = topnode;
|
||||
break;
|
||||
}
|
||||
sv_ent->clusternums[sv_ent->num_clusters++] = clusters[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// store off a last cluster if we need to
|
||||
if( i != num_leafs ) sv_ent->lastcluster = pe->LeafCluster( lastleaf );
|
||||
|
||||
// if first time, make sure old_origin is valid
|
||||
if( !ent->priv.sv->linkcount )
|
||||
{
|
||||
|
@ -295,8 +311,8 @@ void SV_LinkEdict( edict_t *ent )
|
|||
return;
|
||||
}
|
||||
|
||||
// find the first world sector node that the ent's box crosses
|
||||
node = sv_worldsectors;
|
||||
// find the first node that the ent's box crosses
|
||||
node = sv_areanodes;
|
||||
while( 1 )
|
||||
{
|
||||
if( node->axis == -1 ) break;
|
||||
|
@ -307,10 +323,10 @@ void SV_LinkEdict( edict_t *ent )
|
|||
else break; // crosses the node
|
||||
}
|
||||
|
||||
// link it in
|
||||
sv_ent->worldsector = node;
|
||||
sv_ent->nextedict = node->entities;
|
||||
node->entities = sv_ent;
|
||||
// link it in
|
||||
if( ent->progs.sv->solid == SOLID_TRIGGER )
|
||||
SV_InsertLinkBefore( &sv_ent->area, &node->trigger_edicts, ent );
|
||||
else SV_InsertLinkBefore (&sv_ent->area, &node->solid_edicts, ent );
|
||||
sv_ent->linked = true;
|
||||
}
|
||||
|
||||
|
@ -328,35 +344,43 @@ bounds. This does NOT mean that they actually touch in the case of bmodels.
|
|||
SV_AreaEdicts_r
|
||||
====================
|
||||
*/
|
||||
void SV_AreaEdicts_r( worldsector_t *node, area_t *ap )
|
||||
void SV_AreaEdicts_r( areanode_t *node, area_t *ap )
|
||||
{
|
||||
sv_edict_t *check, *next;
|
||||
edict_t *gcheck;
|
||||
int count = 0;
|
||||
link_t *l, *next, *start;
|
||||
edict_t *check;
|
||||
int count = 0;
|
||||
|
||||
for( check = node->entities; check; check = next )
|
||||
// touch linked edicts
|
||||
if( ap->type == AREA_SOLID )
|
||||
start = &node->solid_edicts;
|
||||
else start = &node->trigger_edicts;
|
||||
|
||||
for( l = start->next; l != start; l = next )
|
||||
{
|
||||
next = check->nextedict;
|
||||
gcheck = PRVM_EDICT_NUM( check->serialnumber );
|
||||
next = l->next;
|
||||
check = EDICT_FROM_AREA( l );
|
||||
|
||||
if (gcheck->progs.sv->absmin[0] > ap->maxs[0] || gcheck->progs.sv->absmin[1] > ap->maxs[1] || gcheck->progs.sv->absmin[2] > ap->maxs[2]
|
||||
|| gcheck->progs.sv->absmax[0] < ap->mins[0] || gcheck->progs.sv->absmax[1] < ap->mins[1] || gcheck->progs.sv->absmax[2] < ap->mins[2])
|
||||
if( check->progs.sv->solid == SOLID_NOT ) continue; // deactivated
|
||||
if( check->progs.sv->absmin[0] > ap->maxs[0] || check->progs.sv->absmin[1] > ap->maxs[1]
|
||||
|| check->progs.sv->absmin[2] > ap->maxs[2] || check->progs.sv->absmax[0] < ap->mins[0]
|
||||
|| check->progs.sv->absmax[1] < ap->mins[1] || check->progs.sv->absmax[2] < ap->mins[2] )
|
||||
continue; // not touching
|
||||
|
||||
if( ap->count == ap->maxcount )
|
||||
{
|
||||
MsgDev(D_NOTE, "SV_AreaEdicts_r: maxcount!\n");
|
||||
MsgDev( D_WARN, "SV_AreaEdicts: maxcount hit\n" );
|
||||
return;
|
||||
}
|
||||
ap->list[ap->count] = PRVM_EDICT_NUM( check->serialnumber );
|
||||
|
||||
ap->list[ap->count] = check;
|
||||
ap->count++;
|
||||
}
|
||||
|
||||
if( node->axis == -1 ) return; // terminal node
|
||||
|
||||
// recurse down both sides
|
||||
if( ap->maxs[node->axis] > node->dist ) SV_AreaEdicts_r ( node->children[0], ap );
|
||||
if( ap->mins[node->axis] < node->dist ) SV_AreaEdicts_r ( node->children[1], ap );
|
||||
if( ap->maxs[node->axis] > node->dist ) SV_AreaEdicts_r( node->children[0], ap );
|
||||
if( ap->mins[node->axis] < node->dist ) SV_AreaEdicts_r( node->children[1], ap );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -364,7 +388,7 @@ void SV_AreaEdicts_r( worldsector_t *node, area_t *ap )
|
|||
SV_AreaEdicts
|
||||
================
|
||||
*/
|
||||
int SV_AreaEdicts( const vec3_t mins, const vec3_t maxs, edict_t **list, int maxcount )
|
||||
int SV_AreaEdicts( const vec3_t mins, const vec3_t maxs, edict_t **list, int maxcount, int areatype )
|
||||
{
|
||||
area_t ap;
|
||||
|
||||
|
@ -373,8 +397,9 @@ int SV_AreaEdicts( const vec3_t mins, const vec3_t maxs, edict_t **list, int max
|
|||
ap.list = list;
|
||||
ap.count = 0;
|
||||
ap.maxcount = maxcount;
|
||||
ap.type = areatype;
|
||||
|
||||
SV_AreaEdicts_r( sv_worldsectors, &ap );
|
||||
SV_AreaEdicts_r( sv_areanodes, &ap );
|
||||
|
||||
return ap.count;
|
||||
}
|
|
@ -3170,8 +3170,7 @@ wadtype_t wad_types[] =
|
|||
{"flt", TYPE_FLAT }, // doom1 wall texture
|
||||
{"pal", TYPE_QPAL }, // palette
|
||||
{"lmp", TYPE_QPIC }, // quake1, hl pic
|
||||
{"mip", TYPE_MIPTEX2}, // hl texture
|
||||
{"mip", TYPE_MIPTEX }, // quake1 mip
|
||||
{"mip", TYPE_MIPTEX }, // hl/q1 mip
|
||||
{"bin", TYPE_BINDATA}, // xash binary data
|
||||
{"str", TYPE_STRDATA}, // xash string data
|
||||
{"raw", TYPE_RAW }, // signed raw data
|
||||
|
@ -3387,7 +3386,10 @@ static bool W_ReadLumpTable( wfile_t *wad )
|
|||
k = com_strlen( com_strrchr( wad->lumps[i].name, '*' ));
|
||||
if( k ) wad->lumps[i].name[com_strlen(wad->lumps[i].name)-k] = '!'; // quake1 issues
|
||||
|
||||
// check for 'conchars' issues
|
||||
// convert all qmip types to miptex
|
||||
if( wad->lumps[i].type == TYPE_QMIP ) wad->lumps[i].type = TYPE_MIPTEX;
|
||||
|
||||
// check for 'conchars' issues (only lmp loader supposed to read this lame pic)
|
||||
if( !com.strcmp( wad->lumps[i].name, "conchars" )) wad->lumps[i].type = TYPE_QPIC;
|
||||
}
|
||||
return true;
|
||||
|
@ -3534,7 +3536,10 @@ wfile_t *W_Open( const char *filename, const char *mode )
|
|||
dwadinfo_t header;
|
||||
wfile_t *wad = (wfile_t *)Mem_Alloc( fs_mempool, sizeof( wfile_t ));
|
||||
|
||||
wad->file = FS_Open( filename, mode );
|
||||
if( mode[0] == 'a' ) wad->file = FS_Open( filename, "r+b" );
|
||||
else if( mode[0] == 'w' ) wad->file = FS_Open( filename, "wb" );
|
||||
else if( mode[0] == 'r' ) wad->file = FS_Open( filename, "rb" );
|
||||
|
||||
if( !wad->file )
|
||||
{
|
||||
W_Close( wad );
|
||||
|
@ -3611,21 +3616,38 @@ wfile_t *W_Open( const char *filename, const char *mode )
|
|||
// NOTE: lumps table can be reallocated for O_APPEND mode
|
||||
wad->lumps = Mem_Alloc( wad->mempool, wad->numlumps * sizeof( dlumpinfo_t ));
|
||||
|
||||
// setup lump allocation table
|
||||
switch( header.ident )
|
||||
{
|
||||
case IDIWADHEADER:
|
||||
case IDPWADHEADER:
|
||||
if(!W_ConvertIWADLumps( wad ))
|
||||
return NULL;
|
||||
break;
|
||||
case IDWAD2HEADER:
|
||||
case IDWAD3HEADER:
|
||||
if(!W_ReadLumpTable( wad ))
|
||||
return NULL;
|
||||
break;
|
||||
}
|
||||
if( wad->mode == O_APPEND )
|
||||
{
|
||||
size_t lat_size = wad->numlumps * sizeof( dlumpinfo_t );
|
||||
|
||||
if( FS_Read( wad->file, wad->lumps, lat_size ) != lat_size )
|
||||
{
|
||||
MsgDev( D_ERROR, "W_ReadLumpTable: %s has corrupted lump allocation table\n", wad->filename );
|
||||
W_Close( wad );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// if we are in append mode - we need started from infotableofs poisition
|
||||
// overwrite lumptable as well, we have her copy in wad->lumps
|
||||
FS_Seek( wad->file, wad->infotableofs, SEEK_SET );
|
||||
}
|
||||
else
|
||||
{
|
||||
// setup lump allocation table
|
||||
switch( header.ident )
|
||||
{
|
||||
case IDIWADHEADER:
|
||||
case IDPWADHEADER:
|
||||
if(!W_ConvertIWADLumps( wad ))
|
||||
return NULL;
|
||||
break;
|
||||
case IDWAD2HEADER:
|
||||
case IDWAD3HEADER:
|
||||
if(!W_ReadLumpTable( wad ))
|
||||
return NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// and leaves the file open
|
||||
return wad;
|
||||
|
@ -3649,7 +3671,7 @@ void W_Close( wfile_t *wad )
|
|||
hdr.ident = IDWAD3HEADER;
|
||||
hdr.numlumps = LittleLong( wad->numlumps );
|
||||
hdr.infotableofs = LittleLong( ofs );
|
||||
|
||||
|
||||
FS_Seek( wad->file, 0, SEEK_SET );
|
||||
FS_Write( wad->file, &hdr, sizeof( hdr ));
|
||||
}
|
||||
|
@ -3663,6 +3685,7 @@ fs_offset_t W_SaveLump( wfile_t *wad, const char *lump, const void* data, size_t
|
|||
{
|
||||
size_t lat_size;
|
||||
dlumpinfo_t *info;
|
||||
int i;
|
||||
|
||||
if( !wad || !lump ) return -1;
|
||||
if( !data || !datasize )
|
||||
|
@ -3693,16 +3716,13 @@ fs_offset_t W_SaveLump( wfile_t *wad, const char *lump, const void* data, size_t
|
|||
wad->lumps = Mem_Realloc( wad->mempool, wad->lumps, lat_size );
|
||||
info = wad->lumps + wad->numlumps;
|
||||
|
||||
// if we are in append mode - we need started from infotableofs poisition
|
||||
// overwrite lumptable as well, we have her copy in wad->lumps
|
||||
if( wad->mode == O_APPEND ) FS_Seek( wad->file, wad->infotableofs, SEEK_SET );
|
||||
|
||||
// write header
|
||||
W_CleanupName( lump, info->name );
|
||||
info->filepos = LittleLong( FS_Tell( wad->file ));
|
||||
info->compression = cmp;
|
||||
info->type = type;
|
||||
|
||||
i = FS_Tell( wad->file );
|
||||
if(!W_WriteLump( wad, info, data, datasize, cmp ))
|
||||
return -1;
|
||||
|
||||
|
|
|
@ -279,7 +279,7 @@ void StringTable_DeleteSystem( int handle )
|
|||
Mem_Free( dstring[handle]->data ); // free strings
|
||||
Mem_Free( dstring[handle]->table); // free indices
|
||||
Mem_Free( dstring[handle] ); // free himself
|
||||
Mem_Set( &dstring[handle], 0, sizeof( stringtable_t ));
|
||||
dstring[handle] = NULL;
|
||||
}
|
||||
|
||||
const char *StringTable_GetString( int handle, string_t index )
|
||||
|
|
|
@ -655,9 +655,9 @@ void BSP_LoadSurfedges( lump_t *l )
|
|||
count = l->filelen / sizeof(*in);
|
||||
if( count < 1 ) Host_Error( "BSP_LoadSurfedges: map without surfedges\n" );
|
||||
cm.surfedges = Mem_Alloc( cmappool, count * sizeof( *in ));
|
||||
Mem_Copy( cm.edges, in, count * sizeof( *in ));
|
||||
Mem_Copy( cm.surfedges, in, count * sizeof( *in ));
|
||||
|
||||
SwapBlock( (int *)cm.edges, sizeof(*in) * count );
|
||||
SwapBlock( (int *)cm.surfedges, sizeof(*in) * count );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -212,7 +212,7 @@ bool CM_AreasConnected( int area, int otherarea )
|
|||
if( area > cm.numareas || otherarea > cm.numareas )
|
||||
Host_Error("CM_AreasConnected: area >= cm.numareas\n" );
|
||||
|
||||
if( area < 0 || otherarea < 0 ) return false;
|
||||
if( !area || !otherarea ) return false;
|
||||
if( area == otherarea ) return true; // quick test
|
||||
|
||||
if( cm.areas[area].floodnum == cm.areas[otherarea].floodnum )
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
#define TYPE_QPAL 64 // quake palette
|
||||
#define TYPE_QTEX 65 // probably was never used
|
||||
#define TYPE_QPIC 66 // quake1 and hl pic (lmp_t)
|
||||
#define TYPE_MIPTEX2 67 // half-life (mip_t) previous was TYP_SOUND but never used in quake1
|
||||
#define TYPE_MIPTEX 68 // quake1 (mip_t)
|
||||
#define TYPE_MIPTEX 67 // half-life (mip_t) previous was TYP_SOUND but never used in quake1
|
||||
#define TYPE_QMIP 68 // quake1 (mip_t)
|
||||
#define TYPE_BINDATA 69 // engine internal data (map lumps, save lumps etc)
|
||||
#define TYPE_STRDATA 70 // big unterminated string (stringtable marked as TYPE_BINARYDATA)
|
||||
|
||||
|
|
|
@ -131,9 +131,9 @@ BRUSH MODELS
|
|||
#define IDBSPMODHEADER (('P'<<24)+('S'<<16)+('B'<<8)+'I') // little-endian "IBSP"
|
||||
|
||||
// 32 bit limits
|
||||
#define MAX_MAP_AREA_BYTES 32 // bit vector of area visibility
|
||||
#define MAX_MAP_AREAS 0x100 // don't increase this
|
||||
#define MAX_MAP_MODELS 0x2000 // mesh models and sprites too
|
||||
#define MAX_MAP_AREA_BYTES MAX_MAP_AREAS / 8 // bit vector of area visibility
|
||||
#define MAX_MAP_AREAS 0x100 // don't increase this
|
||||
#define MAX_MAP_MODELS 0x2000 // mesh models and sprites too
|
||||
#define MAX_MAP_AREAPORTALS 0x400
|
||||
#define MAX_MAP_ENTITIES 0x2000
|
||||
#define MAX_MAP_SHADERS 0x1000
|
||||
|
|
|
@ -67,5 +67,5 @@ if exist vsound\vsound.plg del /f /q vsound\vsound.plg
|
|||
echo Build succeeded!
|
||||
echo Please wait. Xash is now loading
|
||||
cd D:\Xash3D\
|
||||
quake.exe -game tmpQuArK -dev 3 -log +map start +load quick
|
||||
quake.exe -game tmpQuArK -dev 3 -log +map start
|
||||
:done
|
|
@ -196,6 +196,8 @@ typedef struct
|
|||
// builtin shaders
|
||||
ref_shader_t *defaultShader;
|
||||
ref_shader_t *lightmapShader;
|
||||
ref_shader_t *skyboxShader;
|
||||
ref_shader_t *particleShader;
|
||||
} ref_globals_t;
|
||||
|
||||
extern ref_backend_t ref;
|
||||
|
|
167
render/r_image.c
167
render/r_image.c
|
@ -33,16 +33,30 @@ texture_t *r_dlightTexture;
|
|||
texture_t *r_normalizeTexture;
|
||||
texture_t *r_attenuationTexture;
|
||||
texture_t *r_falloffTexture;
|
||||
texture_t *r_skyTexture;
|
||||
texture_t *r_rawTexture;
|
||||
texture_t *r_fogTexture;
|
||||
texture_t *r_fogEnterTexture;
|
||||
texture_t *r_scratchTexture;
|
||||
texture_t *r_accumTexture;
|
||||
texture_t *r_particleTexture;
|
||||
texture_t *r_mirrorRenderTexture;
|
||||
texture_t *r_portalRenderTexture;
|
||||
texture_t *r_currentRenderTexture;
|
||||
texture_t *r_lightmapTextures[MAX_LIGHTMAPS];
|
||||
|
||||
static byte rb_dotImage[8][8] =
|
||||
{
|
||||
{0,0,0,0,0,0,0,0},
|
||||
{0,0,1,1,0,0,0,0},
|
||||
{0,1,1,1,1,0,0,0},
|
||||
{0,1,1,1,1,0,0,0},
|
||||
{0,0,1,1,0,0,0,0},
|
||||
{0,0,0,0,0,0,0,0},
|
||||
{0,0,0,0,0,0,0,0},
|
||||
{0,0,0,0,0,0,0,0},
|
||||
};
|
||||
|
||||
const vec3_t r_cubeMapAngles[6] =
|
||||
{
|
||||
{ 0, 180, 90},
|
||||
|
@ -933,6 +947,47 @@ static rgbdata_t *R_MakeGlow( rgbdata_t *in )
|
|||
return out;
|
||||
}
|
||||
|
||||
static rgbdata_t *R_MakeImageBlock( rgbdata_t *in , int block[4] )
|
||||
{
|
||||
byte *fin, *out;
|
||||
int i, x, y, xl, yl, xh, yh, w, h;
|
||||
int linedelta;
|
||||
|
||||
// make sure what we processing RGBA image
|
||||
in = R_ForceImageToRGBA( in );
|
||||
|
||||
xl = block[0];
|
||||
yl = block[1];
|
||||
w = block[2];
|
||||
h = block[3];
|
||||
xh = xl + w;
|
||||
yh = yl + h;
|
||||
|
||||
image_desc.source = Mem_Realloc( r_temppool, image_desc.source, w * h * 4 );
|
||||
out = image_desc.source;
|
||||
|
||||
fin = in->buffer + (yl * in->width + xl) * 4;
|
||||
linedelta = (in->width - w) * 4;
|
||||
|
||||
// cut block from source
|
||||
for( y = yl; y < yh; y++ )
|
||||
{
|
||||
for( x = xl; x < xh; x++ )
|
||||
for( i = 0; i < 4; i++ )
|
||||
*out++ = *fin++;
|
||||
fin += linedelta;
|
||||
}
|
||||
|
||||
// copy result back
|
||||
in->buffer = Mem_Realloc( r_temppool, in->buffer, w * h * 4 );
|
||||
Mem_Copy( in->buffer, image_desc.source, w * h * 4 );
|
||||
in->size = w * h * 4;
|
||||
in->height = h;
|
||||
in->width = w;
|
||||
|
||||
return in;
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
R_MakeAlpha
|
||||
|
@ -1661,6 +1716,86 @@ static rgbdata_t *R_ParseMakeGlow( script_t *script, int *samples, texFlags_t *f
|
|||
return R_MakeGlow( pic );
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
R_ParseScrapBlock
|
||||
=================
|
||||
*/
|
||||
static rgbdata_t *R_ParseScrapBlock( script_t *script, int *samples, texFlags_t *flags )
|
||||
{
|
||||
int i, block[4];
|
||||
token_t token;
|
||||
rgbdata_t *pic;
|
||||
|
||||
Com_ReadToken( script, 0, &token );
|
||||
if( com.stricmp( token.string, "(" ))
|
||||
{
|
||||
MsgDev( D_WARN, "expected '(', found '%s' instead for 'makeGlow'\n", token.string );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if( !Com_ReadToken( script, SC_ALLOW_PATHNAMES2, &token ))
|
||||
{
|
||||
MsgDev( D_WARN, "missing parameters for 'scrapBlock'\n" );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
pic = R_LoadImage( script, token.string, NULL, 0, samples, flags );
|
||||
if( !pic ) return NULL;
|
||||
|
||||
for( i = 0; i < 4; i++ )
|
||||
{
|
||||
Com_ReadToken( script, 0, &token );
|
||||
if( com.stricmp( token.string, "," ))
|
||||
{
|
||||
MsgDev( D_WARN, "expected ',', found '%s' instead for 'rect'\n", token.string );
|
||||
FS_FreeImage( pic );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if( !Com_ReadLong( script, 0, &block[i] ))
|
||||
{
|
||||
MsgDev( D_WARN, "missing parameters for 'block'\n" );
|
||||
FS_FreeImage( pic );
|
||||
return NULL;
|
||||
}
|
||||
if( block[i] < 0 )
|
||||
{
|
||||
MsgDev( D_WARN, "invalid argument %i for 'block'\n", i+1 );
|
||||
FS_FreeImage( pic );
|
||||
return NULL;
|
||||
}
|
||||
if((i+1) & 1 && block[i] > pic->width )
|
||||
{
|
||||
MsgDev( D_WARN, "invalid argument %i for 'block'\n", i+1 );
|
||||
FS_FreeImage( pic );
|
||||
return NULL;
|
||||
}
|
||||
if((i+1) & 2 && block[i] > pic->height )
|
||||
{
|
||||
MsgDev( D_WARN, "invalid argument %i for 'block'\n", i+1 );
|
||||
FS_FreeImage( pic );
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
Com_ReadToken( script, 0, &token );
|
||||
if( com.stricmp( token.string, ")" ))
|
||||
{
|
||||
MsgDev( D_WARN, "expected ')', found '%s' instead for 'bias'\n", token.string );
|
||||
FS_FreeImage( pic );
|
||||
return NULL;
|
||||
}
|
||||
if((block[0] + block[2] > pic->width) || (block[1] + block[3] > pic->height))
|
||||
{
|
||||
MsgDev( D_WARN, "'ScrapBlock' image size out of bounds\n" );
|
||||
FS_FreeImage( pic );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return R_MakeImageBlock( pic, block );
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
R_ParseHeightMap
|
||||
|
@ -1865,6 +2000,8 @@ static rgbdata_t *R_LoadImage( script_t *script, const char *name, const byte *b
|
|||
return R_ParseMakeGlow( script, samples, flags );
|
||||
else if( !com.stricmp( name, "heightMap" ))
|
||||
return R_ParseHeightMap( script, samples, flags );
|
||||
else if( !com.stricmp( name, "ScrapBlock" ))
|
||||
return R_ParseScrapBlock( script, samples, flags );
|
||||
else if( !com.stricmp( name, "addNormals" ))
|
||||
return R_ParseAddNormals( script, samples, flags );
|
||||
else if( !com.stricmp( name, "smoothNormals" ))
|
||||
|
@ -2320,6 +2457,30 @@ static void R_CreateBuiltInTextures( void )
|
|||
for( i = 0; i < 64; i++ ) ((uint *)&data2D)[i] = LittleLong(0xFFFF8080);
|
||||
r_flatTexture = R_LoadTexture( "*flat", &pic, 3, TF_STATIC|TF_NOPICMIP|TF_UNCOMPRESSED|TF_NORMALMAP, TF_DEFAULT, TW_REPEAT );
|
||||
|
||||
// skybox texture
|
||||
for( i = 0; i < 256; i++ )((uint *)&data2D)[i] = LittleLong( 0xFFFFDEB5 );
|
||||
pic.width = pic.height = 16;
|
||||
pic.size = pic.width * pic.height * 4;
|
||||
r_skyTexture = R_LoadTexture( "*sky", &pic, 3, TF_STATIC|TF_NOPICMIP, TF_LINEAR, TW_REPEAT );
|
||||
|
||||
// particle texture
|
||||
for( x = 0; x < 8; x++ )
|
||||
{
|
||||
for( y = 0; y < 8; y++ )
|
||||
{
|
||||
data2D[4*(y*8+x)+0] = 0xFF;
|
||||
data2D[4*(y*8+x)+1] = 0xFF;
|
||||
data2D[4*(y*8+x)+2] = 0xFF;
|
||||
data2D[4*(y*8+x)+3] = rb_dotImage[x][y] * 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
pic.width = pic.height = 8;
|
||||
pic.size = pic.width * pic.height * 4;
|
||||
pic.flags |= IMAGE_HAS_ALPHA;
|
||||
r_particleTexture = R_LoadTexture( "*particle", &pic, 4, TF_STATIC|TF_NOPICMIP, TF_NEAREST, 0 );
|
||||
pic.flags &= ~IMAGE_HAS_ALPHA;
|
||||
|
||||
// attenuation texture
|
||||
for( y = 0; y < 128; y++ )
|
||||
{
|
||||
|
@ -2761,9 +2922,9 @@ void R_InitTextures( void )
|
|||
for( i = 0; i < 256; i++ )
|
||||
{
|
||||
// 224 is a Q1 luma threshold
|
||||
r_glowTable[i][0] = i > 196 ? i : 0;
|
||||
r_glowTable[i][1] = i > 196 ? i : 0;
|
||||
r_glowTable[i][2] = i > 196 ? i : 0;
|
||||
r_glowTable[i][0] = i > 224 ? i : 0;
|
||||
r_glowTable[i][1] = i > 224 ? i : 0;
|
||||
r_glowTable[i][2] = i > 224 ? i : 0;
|
||||
}
|
||||
|
||||
// build luminance table
|
||||
|
|
|
@ -27,7 +27,7 @@ extern byte *r_temppool;
|
|||
#define MAX_POLYS 4096
|
||||
#define MAX_POLY_VERTS 16384
|
||||
#define MAX_CLIPFLAGS 15 // all sides of bbox are valid
|
||||
#define LM_SIZE 256 // LM_SIZE x LM_SIZE (width x height)
|
||||
#define LM_SIZE 128 // LM_SIZE x LM_SIZE (width x height)
|
||||
|
||||
/*
|
||||
=======================================================================
|
||||
|
@ -96,8 +96,10 @@ typedef struct texture_s
|
|||
extern texture_t *r_defaultTexture;
|
||||
extern texture_t *r_whiteTexture;
|
||||
extern texture_t *r_blackTexture;
|
||||
extern texture_t *r_skyTexture;
|
||||
extern texture_t *r_rawTexture;
|
||||
extern texture_t *r_dlightTexture;
|
||||
extern texture_t *r_particleTexture;
|
||||
extern texture_t *r_lightmapTextures[MAX_LIGHTMAPS];
|
||||
extern texture_t *r_normalizeTexture;
|
||||
extern texture_t *r_radarMap;
|
||||
|
@ -759,7 +761,6 @@ extern int r_frameCount;
|
|||
extern int r_visFrameCount;
|
||||
extern int r_viewCluster;
|
||||
extern int r_oldViewCluster;
|
||||
extern int r_areabitsChanged;
|
||||
extern vec3_t r_origin; // same as r_refdef.vieworg
|
||||
extern vec3_t r_forward;
|
||||
extern vec3_t r_right;
|
||||
|
|
|
@ -822,24 +822,6 @@ void R_RenderView( const refdef_t *fd )
|
|||
r_numSolidMeshes = 0;
|
||||
r_numTransMeshes = 0;
|
||||
|
||||
// copy the areamask data over and note if it has changed, which
|
||||
// will force a reset of the visible leafs even if the view hasn't moved
|
||||
r_areabitsChanged = false;
|
||||
if(!(r_refdef.rdflags & RDF_NOWORLDMODEL ))
|
||||
{
|
||||
int i, areaDiff = 0;
|
||||
|
||||
// compare the area bits
|
||||
for( i = 0; i < MAX_MAP_AREA_BYTES / 4; i++ )
|
||||
{
|
||||
areaDiff |= ((int *)r_refdef.areabits)[i] ^ ((int *)fd->areabits)[i];
|
||||
((int *)r_refdef.areabits)[i] = ((int *)fd->areabits)[i];
|
||||
}
|
||||
|
||||
// a door just opened or something
|
||||
if( areaDiff ) r_areabitsChanged = true;
|
||||
}
|
||||
|
||||
r_refdef = *fd;
|
||||
// set up frustum
|
||||
R_SetFrustum();
|
||||
|
@ -876,7 +858,7 @@ void R_RenderView( const refdef_t *fd )
|
|||
void R_DrawPauseScreen( void )
|
||||
{
|
||||
// don't apply post effects for custom window
|
||||
if(r_refdef.rdflags & RDF_NOWORLDMODEL)
|
||||
if( r_refdef.rdflags & RDF_NOWORLDMODEL )
|
||||
return;
|
||||
|
||||
if( !r_pause_bw->integer )
|
||||
|
@ -1119,7 +1101,7 @@ bool R_AddParticleToScene( const vec3_t origin, float alpha, int color )
|
|||
|
||||
p = &r_particles[r_numParticles];
|
||||
|
||||
p->shader = tr.defaultShader;
|
||||
p->shader = tr.particleShader;
|
||||
VectorCopy( origin, p->origin );
|
||||
VectorCopy( origin, p->old_origin );
|
||||
p->radius = 5;
|
||||
|
|
|
@ -16,6 +16,7 @@ static byte r_fullvis[MAX_MAP_LEAFS/8];
|
|||
static rmodel_t r_models[MAX_MODELS];
|
||||
int registration_sequence;
|
||||
rmodel_t *m_pLoadModel;
|
||||
static string r_skyShader;
|
||||
static int r_nummodels;
|
||||
|
||||
/*
|
||||
|
@ -259,6 +260,14 @@ void R_LoadShaders( const byte *base, const lump_t *l )
|
|||
m_pLoadModel->shaders[i] = tr.defaultShader;
|
||||
continue;
|
||||
}
|
||||
|
||||
if( surfaceParm & SURF_SKY )
|
||||
{
|
||||
// setup sky shader
|
||||
com.strncpy( r_skyShader, in->name, MAX_STRING );
|
||||
shaderType = SHADER_SKY;
|
||||
}
|
||||
else shaderType = SHADER_TEXTURE;
|
||||
|
||||
// lightmap visualization tool
|
||||
if( r_lightmap->integer && !(surfaceParm & SURF_NOLIGHTMAP))
|
||||
|
@ -271,7 +280,6 @@ void R_LoadShaders( const byte *base, const lump_t *l )
|
|||
if( !m_pLoadModel->lightData || surfaceParm & SURF_WARP )
|
||||
surfaceParm |= SURF_NOLIGHTMAP;
|
||||
|
||||
shaderType = SHADER_TEXTURE;
|
||||
m_pLoadModel->shaders[i] = r_shaders[R_FindShader( in->name, shaderType, surfaceParm )];
|
||||
}
|
||||
}
|
||||
|
@ -990,6 +998,7 @@ void Mod_LoadBrushModel( rmodel_t *mod, const void *buffer )
|
|||
byte *mod_base;
|
||||
|
||||
m_pLoadModel->type = mod_world;
|
||||
r_skyShader[0] = 0;
|
||||
|
||||
if( m_pLoadModel != r_models )
|
||||
{
|
||||
|
@ -1193,6 +1202,9 @@ void R_EndRegistration( void )
|
|||
int i;
|
||||
rmodel_t *mod;
|
||||
|
||||
// setup skybox
|
||||
R_SetupSky( r_skyShader, 0, vec3_origin );
|
||||
|
||||
for( i = 0, mod = r_models; i < r_nummodels; i++, mod++ )
|
||||
{
|
||||
if( !mod->name[0] ) continue;
|
||||
|
|
|
@ -79,13 +79,6 @@ shaderParm_t infoParms[] =
|
|||
{"slick", SURF_SLICK, CONTENTS_NONE, 0},
|
||||
{"light", SURF_LIGHT, CONTENTS_NONE, 0},
|
||||
{"ladder", SURF_NONE, CONTENTS_LADDER, 0},
|
||||
|
||||
// drawsurf attributes (matched with Half-Life render modes)
|
||||
{"texture", SURF_BLEND, CONTENTS_NONE, 0}, // blend surface
|
||||
{"glow", SURF_GLOW, CONTENTS_NONE, 0}, // glow sprite
|
||||
{"solid", SURF_ALPHA, CONTENTS_TRANSLUCENT, 0}, // alphatest
|
||||
{"additive", SURF_ADDITIVE, CONTENTS_NONE, 0}, // additive
|
||||
{"chrome", SURF_CHROME, CONTENTS_NONE, 0}, // studio chrome
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -1059,13 +1052,11 @@ static bool R_ParseGeneralSurfaceParm( ref_shader_t *shader, script_t *script )
|
|||
{
|
||||
token_t tok;
|
||||
int i, numInfoParms = sizeof(infoParms) / sizeof(infoParms[0]);
|
||||
|
||||
|
||||
switch( shader->type )
|
||||
{
|
||||
case SHADER_TEXTURE:
|
||||
case SHADER_STUDIO:
|
||||
case SHADER_SPRITE:
|
||||
break;
|
||||
case SHADER_SKY: break;
|
||||
default:
|
||||
MsgDev( D_WARN, "'surfaceParm' not allowed in shader '%s'\n", shader->name );
|
||||
return false;
|
||||
|
@ -1086,6 +1077,12 @@ static bool R_ParseGeneralSurfaceParm( ref_shader_t *shader, script_t *script )
|
|||
}
|
||||
}
|
||||
|
||||
if(!(shader->surfaceParm & SURF_SKY) && shader->type == SHADER_SKY )
|
||||
{
|
||||
MsgDev( D_WARN, "invalid 'surfaceParm' for shader '%s'\n", shader->name );
|
||||
return false;
|
||||
}
|
||||
|
||||
if( i == numInfoParms )
|
||||
{
|
||||
MsgDev( D_WARN, "unknown 'surfaceParm' parameter '%s' in shader '%s'\n", tok.string, shader->name );
|
||||
|
@ -3107,6 +3104,8 @@ static bool R_ParseStageBlendFunc( ref_shader_t *shader, shaderStage_t *stage, s
|
|||
stage->blendFunc.src = GL_DST_COLOR;
|
||||
else if( !com.stricmp( tok.string, "GL_ONE_MINUS_DST_COLOR"))
|
||||
stage->blendFunc.src = GL_ONE_MINUS_DST_COLOR;
|
||||
else if( !com.stricmp( tok.string, "GL_SRC_COLOR"))
|
||||
stage->blendFunc.src = GL_SRC_COLOR;
|
||||
else if( !com.stricmp( tok.string, "GL_SRC_ALPHA"))
|
||||
stage->blendFunc.src = GL_SRC_ALPHA;
|
||||
else if( !com.stricmp( tok.string, "GL_ONE_MINUS_SRC_ALPHA"))
|
||||
|
@ -3783,7 +3782,9 @@ static void R_ParseShaderFile( script_t *script, const char *name )
|
|||
break;
|
||||
}
|
||||
}
|
||||
shaderScript->type = SHADER_TEXTURE;
|
||||
if( shaderScript->surfaceParm & SURF_SKY )
|
||||
shaderScript->type = SHADER_SKY;
|
||||
else shaderScript->type = SHADER_TEXTURE;
|
||||
}
|
||||
}
|
||||
Com_CloseScript( scriptBlock );
|
||||
|
@ -4079,8 +4080,6 @@ static ref_shader_t *R_CreateShader( const char *name, int shaderType, uint surf
|
|||
script = Com_OpenScript( shaderScript->name, shaderScript->buffer, shaderScript->size );
|
||||
if( !script ) return R_CreateDefaultShader( name, shaderType, surfaceParm );
|
||||
|
||||
Msg("ParseScript: %s\n", shaderScript->name );
|
||||
|
||||
// parse it
|
||||
if( !R_ParseShader( shader, script ))
|
||||
{
|
||||
|
@ -4947,6 +4946,7 @@ R_CreateBuiltInShaders
|
|||
static void R_CreateBuiltInShaders( void )
|
||||
{
|
||||
ref_shader_t *shader;
|
||||
int i;
|
||||
|
||||
// default shader
|
||||
shader = R_NewShader();
|
||||
|
@ -4974,6 +4974,36 @@ static void R_CreateBuiltInShaders( void )
|
|||
shader->numStages++;
|
||||
|
||||
tr.lightmapShader = R_LoadShader( shader );
|
||||
|
||||
// skybox shader
|
||||
shader = R_NewShader();
|
||||
|
||||
com.strncpy( shader->name, "<skybox>", sizeof( shader->name ));
|
||||
shader->index = r_numShaders;
|
||||
shader->type = SHADER_SKY;
|
||||
shader->flags = SHADER_SKYPARMS;
|
||||
for( i = 0; i < 6; i++ )
|
||||
shader->skyParms.farBox[i] = r_skyTexture;
|
||||
shader->skyParms.cloudHeight = 128.0f;
|
||||
tr.skyboxShader = R_LoadShader( shader );
|
||||
|
||||
// particle shader
|
||||
shader = R_NewShader();
|
||||
|
||||
com.strncpy( shader->name, "<particle>", sizeof( shader->name ));
|
||||
shader->index = r_numShaders;
|
||||
shader->type = SHADER_SPRITE;
|
||||
shader->surfaceParm = SURF_NOLIGHTMAP;
|
||||
shader->stages[0]->bundles[0]->textures[0] = r_particleTexture;
|
||||
shader->stages[0]->blendFunc.src = GL_DST_COLOR;
|
||||
shader->stages[0]->blendFunc.dst = GL_SRC_ALPHA;
|
||||
shader->stages[0]->flags |= SHADERSTAGE_BLENDFUNC|SHADERSTAGE_RGBGEN;
|
||||
shader->stages[0]->rgbGen.type = RGBGEN_VERTEX;
|
||||
shader->stages[0]->bundles[0]->numTextures++;
|
||||
shader->stages[0]->numBundles++;
|
||||
shader->numStages++;
|
||||
|
||||
tr.particleShader = R_LoadShader( shader );
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -589,6 +589,7 @@ void R_SetupSky( const char *name, float rotate, const vec3_t axis )
|
|||
void *map;
|
||||
int i, j;
|
||||
|
||||
if( !com.strlen( name )) return; // invalid name
|
||||
r_worldModel->sky = Mem_Realloc( r_temppool, r_worldModel->sky, sizeof( sky_t ));
|
||||
sky = r_worldModel->sky;
|
||||
sky->shader = r_shaders[R_FindShader( name, SHADER_SKY, 0 )];
|
||||
|
|
|
@ -1406,7 +1406,7 @@ void R_StudioDrawMeshes( dstudiotexture_t * ptexture, short *pskinref, int pass
|
|||
VectorScale(m_plightcolor, lv_tmp, lv );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for( j = 0; j < m_pSubModel->nummesh; j++ )
|
||||
{
|
||||
float s, t;
|
||||
|
@ -1729,7 +1729,7 @@ void R_StudioRenderModel( void )
|
|||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < m_pStudioHeader->numbodyparts ; i++)
|
||||
for( i = 0; i < m_pStudioHeader->numbodyparts; i++ )
|
||||
{
|
||||
R_StudioSetupModel( m_pCurrentEntity->body, i );
|
||||
R_StudioDrawPoints();
|
||||
|
@ -2164,7 +2164,7 @@ void R_AddStudioModelToList( ref_entity_t *entity )
|
|||
R_StudioSetupRender( 0 );
|
||||
if(!R_StudioCheckBBox())
|
||||
return;
|
||||
if(!entity->shader ) return;
|
||||
if( !entity->shader ) return;
|
||||
|
||||
// add it
|
||||
R_AddMeshToList( MESH_STUDIO, NULL, entity->shader, entity, 0 );
|
||||
|
|
|
@ -15,7 +15,6 @@ ref_entity_t *r_worldEntity;
|
|||
vec3_t r_worldMins, r_worldMaxs;
|
||||
int r_frameCount;
|
||||
int r_visFrameCount;
|
||||
int r_areabitsChanged;
|
||||
int r_viewCluster, r_viewCluster2;
|
||||
int r_oldViewCluster, r_oldViewCluster2;
|
||||
int numRadarEnts = 0;
|
||||
|
|
8
todo.log
8
todo.log
|
@ -22,7 +22,7 @@ GLOBAL:
|
|||
0. Com_Filter убрать внутрь launch.dll ??
|
||||
1. имплементация нового формата карт OK
|
||||
2. новый загрузчик моделей на рендере OK
|
||||
3. проверить 4 варианта winding.c
|
||||
3. SV_Frame на сервере
|
||||
4. переписать загрузчик BSP OK
|
||||
5. отладить R_ImageFreeUnused
|
||||
6. дописать Image_ForceRGBA OK
|
||||
|
@ -31,9 +31,11 @@ GLOBAL:
|
|||
9. оставить только tmpQuArK OK
|
||||
10. починить IMAGE_FORCE_RGBA (или избавится ?)
|
||||
11. LUMA processing OK
|
||||
12. дописать генератор шейдеров
|
||||
12. дописать генератор шейдеров OK
|
||||
13. сделать case -light для bsplib OK
|
||||
14. сделать поиск в bsp-файле для составления цепочек анимаций
|
||||
14. зачинить небо OK
|
||||
15. наладить отрисовку энтить
|
||||
16. починить PhysWorld
|
||||
|
||||
операция "Полная отладка менеджера текстур"
|
||||
0. анализ менеджера egl и q2e_068
|
||||
|
|
Reference in New Issue