[mapserver-users] raster reprojection
Kent S Ridl
kridl@cs.und.edu
Thu, 11 Jul 2002 10:25:38 -0500 (CDT)
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.
---559023410-1254324197-1026401138=:6435
Content-Type: TEXT/PLAIN; charset=US-ASCII
greetings list...
i've been sifting through the message archives for the last couple days,
so i know that this topic has been beat to death many times... please
forgive me...
my script was working joyously before i dove into reprojecting anything;
everything (tifs, shapefiles) displayed as it should. when i began
experiementing with reprojection, i got the shapefiles to do so with
little problem, but the rasters won't. i'm sure of my extents, the
original projections of my test images, etc. i can't think of anything
else that could be screwing it up, so a vector from anyone out there would
be most helpful.
i'm running MS 3.5 (compiled --without-tiff), using gdal, perl
mapscript and rosa applet, using world files for my tifs... i've attached
my script if anyone wants to look at it. and if anyone needs more info,
just let me know and i'll get it to you right away.
thanks in advance for your help!
kent
---559023410-1254324197-1026401138=:6435
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="testrosa.pl"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.GSO.4.33.0207111025380.6435@agassiz.cs.und.edu>
Content-Description: mapscript
Content-Disposition: attachment; filename="testrosa.pl"
IyEvdXNyL2Jpbi9wZXJsIC1UDQoNCnVzZSBDR0kgcXcoOnN0YW5kYXJkIDpo
dG1sIGVzY2FwZSk7DQp1c2UgbWFwc2NyaXB0Ow0KDQojIEltYWdlIHBhdGhz
IC0gYWJzb2x1dGUgYW5kIHJlbGF0aXZlDQojIEZpcnN0IDIgYXJlIHdoZXJl
IHRoZSBtYXBzY3JpcHQtZ2VuZXJhdGVkIGltYWdlcyBhcmUgc3RvcmVkIGJl
Zm9yZSBiZWluZyBkaXNwbGF5ZWQNCiMgTGFzdCBvbmUgaXMgd2hlcmUgdGhl
IGlucHV0IGltYWdlcyBhcmUgdGFrZW4gZnJvbQ0KbXkgJGltZ19wYXRoID0g
Jy93d3cvaHRtbC90ZXN0ZGF0YS90bXAvJzsNCm15ICRpbWdfcmVsX3BhdGgg
PSAnL3Rlc3RkYXRhL3RtcC8nOw0KbXkgJGRhdGFfcGF0aCA9ICcvd3d3L2h0
bWwvdGVzdGRhdGEvJzsNCg0KIyBJbnB1dCBpbWFnZXMNCiNteSAkbmQgPSAn
bmQzN3drX25kdmkyMDAxLnRpZic7DQojbXkgJHNkID0gJ3NkMzd3a19uZHZp
MjAwMS50aWYnOw0KI215ICRtbiA9ICdtbjM3d2tfbmR2aTIwMDEudGlmJzsN
CiNteSAkbXQgPSAnbXQzN3drX25kdmkyMDAxLnRpZic7DQojbXkgJGlkID0g
J2lkMzd3a19uZHZpMjAwMS50aWYnOw0KI215ICR3eSA9ICd3eTM3d2tfbmR2
aTIwMDEudGlmJzsNCiNteSAkanBnID0gJzMwMjdkLmpwZyc7DQpteSAkcmVm
YmFzZSA9ICdyZWZiYXNlLnBuZyc7DQpteSAkdGlmMSA9ICczMDI3LnRpZic7
DQpteSAkdGlmMiA9ICczMDI4LnRpZic7DQojbXkgJHRlc3RfdGlmID0gJzMw
MjhfMDgyNDAwLnRpZic7DQoNCiMgT3V0cHV0IGltYWdlIGFuZCByZWZlcmVu
Y2UgbWFwIGltYWdlDQojIEVhY2ggbmV3IGltYWdlIGdlbmVyYXRlZCBoYXMg
YSB0aW1lc3RhbXAgaW4gaXRzIG5hbWUNCiMgICBSZXF1aXJlZCBmb3IgbWFw
c2VydmVyIHRvIGRpc3BsYXkgInJlZnJlc2hlZCIgaW1hZ2VzIGFmdGVyIGEg
cGFuL3pvb20gYWN0aW9uDQpteSAkbWFwaW1nID0gJ3Rlc3RpbWcnLnRpbWUo
KS4nLnBuZyc7DQpteSAkcmVmbWFwID0gJ3JlZicudGltZSgpLicucG5nJzsN
Cg0KIyBVbmNvbW1lbnQgbmV4dCBzdGF0ZW1lbnQgYW5kIGNvbW1lbnQgb3V0
IG5leHQgMyBpZiB5b3Ugd2FudCB0byBleGVjdXRlIHRoaXMgc2NyaXB0IGZy
b20gdGhlIGNvbW1hbmQgbGluZQ0KI3ByaW50ICJDb250ZW50IHR5cGU6IHRl
eHQvaHRtbFxuXG4iOw0KbXkgJHIgPSBzaGlmdDsNCiRyLT5jb250ZW50X3R5
cGUoInRleHQvaHRtbCIpOw0KJHItPnNlbmRfaHR0cF9oZWFkZXI7DQoNCiMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCiMgU3Vicm91dGluZSBzZXRfZXh0ZW50KCkg
d2lsbCBjYWxjdWxhdGUgYSBuZXcgaW1hZ2UncyBleHRlbnQuDQojICAgVmFy
aWFibGVzIGFyZSByZWFkIGluIGZyb20gdGhlIEhUTUwgZm9ybSB2aWEgYSBw
YXJhbSgpIGNhbGwuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgc2V0X2V4
dGVudCgpIHsNCiAgIyBWYXJpYWJsZXMgdG8gaG9sZCBjb29yZGluYXRlIGNv
bnZlcnNpb24gdmFsdWVzL3BhcmFtZXRlcnMgYW5kIG5ldyBleHRlbnQNCiAg
bXkgKCR6b29tLEBpbWdleHQpOw0KICBteSAoJHgsJHkpOw0KICBteSAoJGN4
LCRjeSk7DQogIG15ICgkZHgsJGR5KTsNCg0KICAjIElmIG9sZCBpbWFnZSBl
eHRlbnQgc2F2ZWQgaW4gdGhlIGhpZGRlbiBmb3JtIHZhcmlhYmxlICJleHRl
bnQiLCB0aGVuIGNhbGN1bGF0ZSBhIG5ldyBleHRlbnQNCiAgIyBBbiBpbnRl
cmFjdGl2ZSBpbnRlcmZhY2UgaXMgYXNzdW1lZCBhdCB0aGlzIHBvaW50DQog
ICMgQ2FsY3VsYXRpb24gb2YgbmV3IGltYWdlIGV4dGVudHMgaXMgcmVxdWly
ZWQgdG8gcHJvdmlkZSB0aGUgcGFuL3pvb20gZWZmZWN0DQogIGlmKHBhcmFt
KCdleHRlbnQnKSkgew0KDQogICAgIyBQYXJzZSBjdXJyZW50IGV4dGVudA0K
ICAgICMgUmVzdWx0aW5nIGFycmF5IHZhbHVlczoNCiAgICAjICAgaW1nZXh0
WzBdID0gb2xkIG1pbngNCiAgICAjICAgaW1nZXh0WzFdID0gb2xkIG1pbnkN
CiAgICAjICAgaW1nZXh0WzJdID0gb2xkIG1heHgNCiAgICAjICAgaW1nZXh0
WzNdID0gb2xkIG1heHkNCiAgICBAaW1nZXh0ID0gc3BsaXQoJyAnLHBhcmFt
KCdleHRlbnQnKSk7DQoNCiAgICAjIFBhcnNlIHRoZSBtb3VzZSBpbnB1dCBj
b29yZGluYXRlcw0KICAgICMgQ29vcmRpbmF0ZXMgYXJlIHJlY2l2ZWQgaW4g
dGhlIGZvbGxvd2luZyBmb3JtczoNCiAgICAjICAgeDEseHk7eDIseTIgLT4g
b3Bwb3NpbmcgY29ybmVyIGNvb3JkaW5hdGVzIG9mIHNlbGVjdGlvbiBib3gg
Zm9yIHpvb20gaW4NCiAgICAjICAgeCx5IC0+IHNpbmdsZS1wb2ludCBtb3Vz
ZSBjbGljayAtIGZvciBtYXAgcmVjZW50ZXJpbmcNCiAgICBAbW91c2VfY29v
cmRzID0gc3BsaXQoL1ssO10vLHBhcmFtKCdtb3VzZV9jb29yZHMnKSk7DQoN
CiAgICAjIERldGVybWluZSB3aGljaCBhY3Rpb24gdG8gdGFrZSAtIHpvb20g
aW4sIHpvb20gb3V0LCByZWNlbnRlcg0KICAgICMgU2V0IHRvb2xiYXIgYnV0
dG9ucyBhbmQgem9vbSBmYWN0b3IgYWNjb3JkaW5nbHkNCiAgICBpZiAocGFy
YW0oJ2FjdGlvbicpID09IDEpIHsgIyB6b29tIGluDQogICAgICAkbGFzdF9j
bWQgPSAiemluIjsgIyBwcmVzZXJ2ZSB0aGUgcHJlc3NlZCBidXR0b24gb24g
dGhlIHRvb2xiYXINCiAgICAgICRkeCA9ICRtb3VzZV9jb29yZHNbMl0gLSAk
bW91c2VfY29vcmRzWzBdOyAjIHdpZHRoIG9mIHNlbGVjdGlvbiBib3gNCiAg
ICAgICRkeSA9ICRtb3VzZV9jb29yZHNbM10gLSAkbW91c2VfY29vcmRzWzFd
OyAjIGhlaWdodCBvZiBzZWxlY3Rpb24gYm94DQogICAgICBpZiAoJGR4IDw9
IDApIHskZHggPSAxO30gIyBwcmV2ZW50IGRpdmlkZS1ieS0wIGVycm9yDQog
ICAgICAkem9vbSA9ICRtYXAtPnt3aWR0aH0gLyAkZHg7ICMgem9vbSBmYWN0
b3IgaXMgbWFwIHdpZHRoIHByb3BvcnRpb25hdGUgLSBkZXRlcm1pbmVkIGJ5
IHdpZHRoIG9mIHNlbGVjdGlvbiBib3gNCiAgICAgICR4ID0gJG1vdXNlX2Nv
b3Jkc1swXSArICgkZHggLyAyKTsgIyB4LWNvb3JkIG9mIGJveCBjZW50ZXIg
LSBvZmZzZXQgZnJvbSB1cHBlciBsZWZ0IGNvcm5lciBvZiBib3gNCiAgICAg
ICR5ID0gJG1vdXNlX2Nvb3Jkc1sxXSArICgkZHkgLyAyKTsgIyB5LWNvb3Jk
IG9mIGJveCBjZW50ZXIgLSBvZmZzZXQgZnJvbSB1cHBlciBsZWZ0IGNvcm5l
ciBvZiBib3gNCiAgICB9ICMgZW5kIGlmDQogICAgZWxzaWYgKHBhcmFtKCdh
Y3Rpb24nKSA9PSAwKSB7ICMgcmVjZW50ZXIgdGhlIG1hcA0KICAgICAgJGxh
c3RfY21kID0gInJlY2VudGVyIjsgIyBwcmVzZXJ2ZSB0aGUgcHJlc3NlZCBi
dXR0b24gb24gdGhlIHRvb2xiYXINCiAgICAgICR6b29tID0gMTsNCiAgICAg
ICR4ID0gJG1vdXNlX2Nvb3Jkc1swXTsNCiAgICAgICR5ID0gJG1vdXNlX2Nv
b3Jkc1sxXTsNCiAgICB9ICNlbmQgZWxzaWYNCiAgICBlbHNpZiAocGFyYW0o
J2FjdGlvbicpID09IC0xKSB7ICMgem9vbSBvdXQNCiAgICAgICR6b29tID0g
LTI7DQoNCiAgICAgICMgVXNlIHRoZSBtYXAgY2VudGVyIGNvb3JkaW5hdGUg
YXMgY2VudGVyIG9mIHpvb20gb3V0IGZ1bmN0aW9uDQogICAgICAkeCA9ICRt
YXAtPnt3aWR0aH0gLyAyOw0KICAgICAgJHkgPSAkbWFwLT57aGVpZ2h0fSAv
IDI7DQogICAgfSAjZW5kIGVsc2lmDQoNCiAgICAkem9vbSA9IDEgLyBhYnMo
JHpvb20pIGlmICR6b29tIDwgMDsgIyB0d2VhayB6b29tIGZhY3RvciBmb3Ig
Y2FsY3VsYXRpb25zDQoNCiAgICAjIENhbGN1bGF0ZSBjZWxsc2l6ZSBpbiB4
IGFuZCB5DQogICAgJGN4ID0gKCRpbWdleHRbMl0gLSAkaW1nZXh0WzBdKSAv
ICgkbWFwLT57d2lkdGh9KTsgIyBzY2FsZSBjZWxsIGJ5IGV4dGVudCB3aWR0
aCB3LyByZXNwZWN0IHRvIG1hcCB3aWR0aA0KICAgICRjeSA9ICgkaW1nZXh0
WzNdIC0gJGltZ2V4dFsxXSkgLyAoJG1hcC0+e2hlaWdodH0pOyAjIHNjYWxl
IGNlbGwgYnkgZXh0ZW50IGhlaWdodCB3LyByZXNwZWN0IHRvIG1hcCBoZWln
aHQNCg0KICAgICMgQ29udmVydCBtb3VzZSBjb29yZGluYXRlIHZhbHVlcyB0
byBtYXAgY29vcmRpbmF0ZXMgdy8gcmVzcGVjdCB0byBtYXAgZXh0ZW50cyAo
JGNpICogJGkpDQogICAgIyBPZmZzZXQgc2NhbGVkIGNvb3JkaW5hdGVzIGZy
b20gdXBwZXIgbGVmdCBjb3JuZXIgb2YgcHJldmlvdXMgaW1hZ2UNCiAgICAk
eCA9ICRpbWdleHRbMF0gKyAkY3ggKiAkeDsNCiAgICAkeSA9ICRpbWdleHRb
M10gLSAkY3kgKiAkeTsNCg0KICAgICMgQ2FsY3VsYXRlIG5ldyBleHRlbnQg
LSBub3Qgc3VyZSBhYm91dCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGUgbWF0
aCwgYnV0IGl0IHdvcmtzDQogICAgJG1hcC0+e2V4dGVudH0tPnttaW54fSA9
ICR4IC0gLjUgKiAoKCRpbWdleHRbMl0gLSAkaW1nZXh0WzBdKSAvICR6b29t
KTsNCiAgICAkbWFwLT57ZXh0ZW50fS0+e21pbnl9ID0gJHkgLSAuNSAqICgo
JGltZ2V4dFszXSAtICRpbWdleHRbMV0pIC8gJHpvb20pOw0KICAgICRtYXAt
PntleHRlbnR9LT57bWF4eH0gPSAkeCArIC41ICogKCgkaW1nZXh0WzJdIC0g
JGltZ2V4dFswXSkgLyAkem9vbSk7DQogICAgJG1hcC0+e2V4dGVudH0tPntt
YXh5fSA9ICR5ICsgLjUgKiAoKCRpbWdleHRbM10gLSAkaW1nZXh0WzFdKSAv
ICR6b29tKTsNCiAgfSAjIGVuZCBpZg0KfSAjIGVuZCBzdWIgc2V0X2V4dGVu
dCgpDQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tDQojIENvbnN0cnVjdCB0aGUg
bWFwLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyBNYXAgb2JqZWN0IGFu
ZCBwYXJhbWV0ZXJzDQokbWFwID0gbmV3IG1hcE9iaih1bmRlZikgb3IgZGll
KCJVbmFibGUgdG8gY3JlYXRlIG1hcGZpbGUuLi4gJCEiKTsNCiRtYXAtPnt3
aWR0aH0gPSA1MDA7DQokbWFwLT57aGVpZ2h0fSA9IDQwMDsNCiRvbGRfcHJv
aiA9IG5ldyBwcm9qZWN0aW9uT2JqKCJkYXR1bT13Z3M4NCIpOyAjIG9sZCBw
cm9qZWN0aW9uIHN5c3RlbQ0KJG1hcC0+c2V0UHJvamVjdGlvbigicHJvaj11
dG0sZWxscHM9R1JTODAsem9uZT0xNCIpOyAjIHRhcmdldCBtYXAgcHJvamVj
dGlvbg0KJG1hcC0+e3RyYW5zcGFyZW50fSA9ICRtYXBzY3JpcHQ6Ok1TX09O
Ow0KDQojIExheWVyIGZvciBzaGFwZWZpbGUgYW5kIHBhcmFtZXRlcnMNCiRs
YXllciA9IG5ldyBsYXllck9iaigkbWFwKSBvciBkaWUoIlVuYWJsZSB0byBj
cmVhdGUgbmV3IGxheWVyLi4uICQhIik7DQokbGF5ZXItPnt0eXBlfSA9ICRt
YXBzY3JpcHQ6Ok1TX0xBWUVSX1BPTFlHT047DQokbGF5ZXItPnNldFByb2pl
Y3Rpb24oImRhdHVtPXdnczg0Iik7ICMgb3JpZ2luYWwgc2hhcGVmaWxlIHBy
b2plY3Rpb24NCg0KIyBDbGFzcyBmb3Igc2hhcGVmaWxlDQojIFVzZWQgdG8g
Y2hhbmdlIG91dGxpbmUgY29sb3IsIGZpbGwgY29sb3IsIGV0Yy4gb2YgdGhl
IHNoYXBlZmlsZQ0KJGNsYXNzID0gbmV3IGNsYXNzT2JqKCRsYXllcikgb3Ig
ZGllKCJVbmFibGUgdG8gY3JlYXRlIGNsYXNzIG9iamVjdC4uLiAkISIpOw0K
JGNsYXNzLT57b3V0bGluZWNvbG9yfSA9ICRtYXAtPmFkZENvbG9yKDAsMCwy
NTUpOw0KDQojIExheWVyIGZvciByYXN0ZXIgaW1hZ2VzIGFuZCBwYXJhbWV0
ZXJzDQokbGF5ZXJfemFwcGEgPSBuZXcgbGF5ZXJPYmooJG1hcCkgb3IgZGll
KCJObyB6YXBwYSBmb3IgeW91IS4uLiAkISIpOw0KJGxheWVyX3phcHBhLT57
dHlwZX0gPSAkbWFwc2NyaXB0OjpNU19MQVlFUl9SQVNURVI7DQokbGF5ZXJf
emFwcGEtPnNldFByb2plY3Rpb24oImRhdHVtPXdnczg0Iik7ICMgb3JpZ2lu
YWwgcHJvamVjdGlvbiBmb3IgcmFzdGVyIGRhdGENCiRsYXllcl96YXBwYS0+
e3N0YXR1c30gPSAkbWFwc2NyaXB0OjpNU19PTjsNCiRsYXllcl96YXBwYS0+
e29mZnNpdGV9ID0gMDsgIyBjb2xvciBpbiB0aGlzIGluZGV4IGlzIGRyYXdu
IHRyYW5zcGFyZW50DQoNCiMgT3BlbiB0aGUgc2hhcGVmaWxlDQokc2hhcGVm
aWxlID0gbmV3IHNoYXBlZmlsZU9iaigiL3Zhci93d3cvaHRtbC90ZXN0ZGF0
YS91bWFjX3N0YXRlcyIsLTEpIG9yIGRpZSgiVW5hYmxlIHRvIG9wZW4gc2hh
cGVmaWxlLi4uICQhIik7DQoNCiMgU2V0IG9yaWdpbmFsIG1hcCBleHRlbnRz
IHRvIGJlIHRoZSBmdWxsIGV4dGVudCBvZiB0aGUgZW50aXJlIHNoYXBlZmls
ZQ0KJG1hcC0+e2V4dGVudH0gPSAkc2hhcGVmaWxlLT57Ym91bmRzfTsgIyBi
b3VuZGluZyBib3ggb2Ygc2hhcGVmaWxlIGlzIG9yaWdpbmFsIG1hcCBleHRl
bnRzDQokbWFwLT57ZXh0ZW50fS0+cHJvamVjdCgkb2xkX3Byb2osJG1hcC0+
e3Byb2plY3Rpb259KTsgIyByZXByb2plY3QgbWFwIGV4dGVudHMgdG8gdGFy
Z2V0IHByb2plY3Rpb24NCg0KIyBDaGVjayBpZiBtYXBzIG9yaWdpbmFsIGV4
dGVudHMgbmVlZCB0byBiZSByZXN0b3JlZA0KaWYgKCFwYXJhbSgicmVzdG9y
ZSIpKSB7ICMgY2hlY2sgaWYgIlJlc3RvcmUiIGJ1dHRvbiBjbGlja2VkDQog
ICZzZXRfZXh0ZW50KCk7ICMgc2V0IGFwcHJvcHJpYXRlIGV4dGVudHMgaWYg
cGFuL3pvb20NCn0gIyBlbmQgaWYNCg0KJGltZyA9ICRtYXAtPnByZXBhcmVJ
bWFnZSgpOyAjIHByZXBhcmUgYW4gaW1hZ2UgdG8gYmUgd3JpdHRlbiB0bw0K
DQojDQojIFRoZSByYXN0ZXIgZHJhd3Mgd2lsbCBiZSByZXBsYWNlZCBsYXRl
ciBvbiB3aXRoIGEgbG9vcCB0byBkcmF3IHRoZSBhcHByb3ByaWF0ZSBMYW5k
U2F0IGRhdGENCiMNCiMgRHJhdyByYXN0ZXIgZGF0YSBvZiB0aGUgVU1BQyBz
dGF0ZXMNCiMgRm9yIHNvbWUgcmVhc29uLCBhIGRpZSBjbGF1c2UgYWZ0ZXIg
ZHJhd2luZyBhIHJhc3RlciB3aWxsIGNyYXNoIHRoZSBwcm9ncmFtLi4uIEkg
ZG9uJ3Qga25vdyB3aHkuDQokbGF5ZXJfemFwcGEtPntkYXRhfSA9ICRkYXRh
X3BhdGggLiAkdGlmMTsNCiRsYXllcl96YXBwYS0+ZHJhdygkbWFwLCRpbWcp
Ow0KJGxheWVyX3phcHBhLT57ZGF0YX0gPSAkZGF0YV9wYXRoIC4gJHRpZjI7
DQokbGF5ZXJfemFwcGEtPmRyYXcoJG1hcCwkaW1nKTsNCiMkbGF5ZXJfemFw
cGEtPntkYXRhfSA9ICRkYXRhX3BhdGggLiAkdGVzdF90aWY7DQojJGxheWVy
X3phcHBhLT5kcmF3KCRtYXAsJGltZyk7DQojJGxheWVyX3phcHBhLT57ZGF0
YX0gPSAkZGF0YV9wYXRoIC4gJG1uOw0KIyRsYXllcl96YXBwYS0+ZHJhdygk
bWFwLCRpbWcpOyAjIGRyYXcgTU4gcmFzdGVyDQojJGxheWVyX3phcHBhLT57
ZGF0YX0gPSAkZGF0YV9wYXRoIC4gJG10Ow0KIyRsYXllcl96YXBwYS0+ZHJh
dygkbWFwLCRpbWcpOyAjIGRyYXcgTVQgcmFzdGVyDQojJGxheWVyX3phcHBh
LT57ZGF0YX0gPSAkZGF0YV9wYXRoIC4gJGlkOw0KIyRsYXllcl96YXBwYS0+
ZHJhdygkbWFwLCRpbWcpOyAjIGRyYXcgSUQgcmFzdGVyDQojJGxheWVyX3ph
cHBhLT57ZGF0YX0gPSAkZGF0YV9wYXRoIC4gJHd5Ow0KIyRsYXllcl96YXBw
YS0+ZHJhdygkbWFwLCRpbWcpOyAjIGRyYXcgV1kgcmFzdGVyDQoNCiMgQ3Jl
YXRlIHNoYXBlIG9iamVjdCB0byBob2xkIG91dGxpbmUgb2YgZWFjaCBzdGF0
ZQ0KJHNoYXBlID0gbmV3IHNoYXBlT2JqKC0xKSBvciBkaWUoIlVuYWJsZSB0
byBjcmVhdGUgc2hhcGUuLi4gJCEiKTsNCg0KIyBEcmF3IG91dGxpbmVzIGZv
ciBVTUFDIHN0YXRlcw0KIyBEcmF3IG9yZGVyIC0gTVQsIE5ELCBTRCwgV1ks
IElELCBNTg0KIyBEaWUgY2xhdXNlIGFsc28gY3Jhc2hlcyB0aGUgcHJvZ3Jh
bSBhZnRlciBkcmF3aW5nIGEgc2hhcGUNCmZvciAoJGkgPSAwOyAkaSA8PSA1
OyAkaSsrKSB7DQogICRzaGFwZWZpbGUtPmdldCgkaSwkc2hhcGUpOyAjIGdl
dCBhIHNoYXBlIGZyb20gdGhlIHNoYXBlZmlsZSwgcmVmZXJlbmNlZCBieSBp
bmRleCBudW1iZXINCiAgJHNoYXBlLT5kcmF3KCRtYXAsJGxheWVyLCRpbWcp
OyAjIGRyYXcgdGhlIHNoYXBlDQp9ICMgZW5kIGZvcg0KDQojIENyZWF0ZSBh
IHJlZmVyZW5jZSBtYXANCiMgVXNlZCB0byBtYWludGFpbiBhIGdsb2JhbCBz
ZW5zZSBvZiBsb2NhdGlvbiB3aGlsc3Qgem9vbWVkIGluDQokbWFwLT57cmVm
ZXJlbmNlfS0+e2V4dGVudH0gPSAkc2hhcGVmaWxlLT57Ym91bmRzfTsgIyBi
b3VuZGluZyBib3ggb2Ygc2hhcGVmaWxlIGlzIG9yaWdpbmFsIHJlZm1hcCBl
eHRlbnRzDQokbWFwLT57cmVmZXJlbmNlfS0+e2V4dGVudH0tPnByb2plY3Qo
JG9sZF9wcm9qLCRtYXAtPntwcm9qZWN0aW9ufSk7ICMgcmVwcm9qZWN0IHJl
Zm1hcCBleHRlbnRzIHRvIHRhcmdldCBwcm9qZWN0aW9uDQojJG1hcC0+e3Jl
ZmVyZW5jZX0tPntjb2xvcn0tPntyZWR9ID0gMDsNCiMkbWFwLT57cmVmZXJl
bmNlfS0+e2NvbG9yfS0+e2dyZWVufSA9IDA7DQojJG1hcC0+e3JlZmVyZW5j
ZX0tPntjb2xvcn0tPntibHVlfSA9IDI1NTsNCiMkbWFwLT57cmVmZXJlbmNl
fS0+e2NvbG9yfSA9ICRtYXAtPmFkZENvbG9yKDAsMCwyNTUpOw0KJG1hcC0+
e3JlZmVyZW5jZX0tPntvdXRsaW5lY29sb3J9LT57cmVkfSA9IDI1NTsNCiRt
YXAtPntyZWZlcmVuY2V9LT57b3V0bGluZWNvbG9yfS0+e2dyZWVufSA9IDA7
DQokbWFwLT57cmVmZXJlbmNlfS0+e291dGxpbmVjb2xvcn0tPntibHVlfSA9
IDA7DQokbWFwLT57cmVmZXJlbmNlfS0+e2ltYWdlfSA9ICRyZWZiYXNlOyAj
IGJhc2UgaW1hZ2UgZm9yIHJlZmVyZW5jZSBtYXAgKG5lZWRzIHRvIGJlIHJl
YnVpbHQgd2l0aCB0YXJnZXQgcHJvamVjdGlvbikNCiRtYXAtPntyZWZlcmVu
Y2V9LT57c3RhdHVzfSA9ICRtYXBzY3JpcHQ6Ok1TX09OOw0KJHJlZiA9ICRt
YXAtPmRyYXdSZWZlcmVuY2VNYXAoKTsgIyBkcmF3IHRoZSByZWZlcmVuY2Ug
bWFwDQoNCiMgU2F2ZSBjdXJyZW50IGV4dGVudA0KJGltZ2V4dCA9IGpvaW4o
JyAnLCRtYXAtPntleHRlbnR9LT57bWlueH0sJG1hcC0+e2V4dGVudH0tPntt
aW55fSwkbWFwLT57ZXh0ZW50fS0+e21heHh9LCRtYXAtPntleHRlbnR9LT57
bWF4eX0pOw0KDQokbWFwLT5zYXZlKCJmb28ubWFwIik7ICMgY3JlYXRlIGEg
bWFwZmlsZQ0KbWFwc2NyaXB0Ojptc1NhdmVJbWFnZSgkaW1nLCRpbWdfcGF0
aC4kbWFwaW1nLCRtYXBzY3JpcHQ6Ok1TX1BORywxLDEsMCk7ICMgc2F2ZSBp
bWFnZSB0byBmaWxlDQptYXBzY3JpcHQ6Om1zRnJlZUltYWdlKCRpbWcpOyAj
IGZyZWUgaW1hZ2UgZnJvbSBtZW1vcnkNCm1hcHNjcmlwdDo6bXNTYXZlSW1h
Z2UoJHJlZiwkaW1nX3BhdGguJHJlZm1hcCwkbWFwc2NyaXB0OjpNU19QTkcs
MSwxLDApOyAjIHNhdmUgcmVmZXJlbmNlIGltYWdlIHRvIGZpbGUNCm1hcHNj
cmlwdDo6bXNGcmVlSW1hZ2UoJHJlZik7ICMgZnJlZSByZWZlcmVuY2UgaW1h
Z2UgZnJvbSBtZW1vcnkNCg0KIy0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnQg
b3V0IEhUTUwuDQojLS0tLS0tLS0tLS0tLS0tLQ0KDQpwcmludCA8PCAiRU9G
IjsNCiAgIDxodG1sPg0KDQogICA8aGVhZD4NCiAgIDx0aXRsZT5UZXN0IGlt
YWdlIHByaW50PC90aXRsZT4NCiAgIDwvaGVhZD4NCg0KICAgPGJvZHk+DQog
ICA8cD48aDE+SEkgQU1BTkRBISEgIDotKTwvaDE+PC9wPg0KICAgPHA+PGZv
cm0gbmFtZT0ibWFwc2VydiIgYWN0aW9uPSJ0ZXN0cm9zYS5wbCIgbWV0aG9k
PSJHRVQiPg0KICAgICAgPHRhYmxlPg0KICAgICAgICA8dHI+DQoJPHRkPg0K
ICAgICAgICAgIDxhcHBsZXQgbmFtZT0iUm9zYUFwcGxldCIgYXJjaGl2ZT0i
cm9zYS9jbGFzcy9yb3NhLmphciIgY29kZT0iUm9zYTIwMDAiIHdpZHRoPSIk
bWFwLT57d2lkdGh9IiBoZWlnaHQ9IiRtYXAtPntoZWlnaHR9IiBNQVlTQ1JJ
UFQ+DQoJICA8cGFyYW0gbmFtZT0iaW1nX3VybCIgdmFsdWU9IiRpbWdfcmVs
X3BhdGgkbWFwaW1nIj4NCgkgIDxwYXJhbSBuYW1lPSJpbnBfZm9ybV9uYW1l
IiB2YWx1ZT0ibWFwc2VydiI+DQoJICA8cGFyYW0gbmFtZT0iaW5wX3R5cGVf
bmFtZSIgdmFsdWU9ImlucHV0X3R5cGUiPg0KCSAgPHBhcmFtIG5hbWU9Imlu
cF9jb29yZF9uYW1lIiB2YWx1ZT0ibW91c2VfY29vcmRzIj4NCiAgICAgICAg
ICA8IS0tPHBhcmFtIG5hbWU9ImJnX2NvbG9yIiB2YWx1ZT0iI2JjYmNiYyI+
LS0+DQoJICA8cGFyYW0gbmFtZT0idGJfYnV0dG9ucyIgdmFsdWU9Inppbnx6
b3V0fHJlY2VudGVyfGZ1bGxleHRlbnQiPg0KCSAgPHBhcmFtIG5hbWU9InRi
X3Bvc2l0aW9uIiB2YWx1ZT0idG9wIj4NCiAgICAgICAgICA8cGFyYW0gbmFt
ZT0idGJfc2VsZWN0ZWRfYnV0dG9uIiB2YWx1ZT0iJGxhc3RfY21kIj4NCgkg
IDxwYXJhbSBuYW1lPSJ0Yl9idXRfemluX2ltZyIgdmFsdWU9InppbjEuZ2lm
Ij4NCgkgIDxwYXJhbSBuYW1lPSJ0Yl9idXRfemluX2ltZ19wciIgdmFsdWU9
InppbjIuZ2lmIj4NCgkgIDxwYXJhbSBuYW1lPSJ0Yl9idXRfemluX2lucHV0
IiB2YWx1ZT0iYXV0b19yZWN0Ij4NCgkgIDxwYXJhbSBuYW1lPSJ0Yl9idXRf
emluX25hbWUiIHZhbHVlPSJhY3Rpb24iPg0KCSAgPHBhcmFtIG5hbWU9InRi
X2J1dF96aW5fdmFsdWUiIHZhbHVlPSIxIj4NCiAgICAgICAgICA8cGFyYW0g
bmFtZT0idGJfYnV0X3ppbl9oaW50IiB2YWx1ZT0iQ2xpY2sgdGhpcyBidXR0
b24gYW5kIGRyYWcgYXxib3ggYXJvdW5kIHlvdXIgYXJlYSBvZiBpbnRlcmVz
dC4iPg0KCSAgPHBhcmFtIG5hbWU9InRiX2J1dF96b3V0X2ltZyIgdmFsdWU9
InpvdXQxLmdpZiI+DQoJICA8cGFyYW0gbmFtZT0idGJfYnV0X3pvdXRfaW1n
X3ByIiB2YWx1ZT0iem91dDIuZ2lmIj4NCgkgIDxwYXJhbSBuYW1lPSJ0Yl9i
dXRfem91dF9pbnB1dCIgdmFsdWU9InN1Ym1pdCI+DQoJICA8cGFyYW0gbmFt
ZT0idGJfYnV0X3pvdXRfbmFtZSIgdmFsdWU9ImFjdGlvbiI+DQoJICA8cGFy
YW0gbmFtZT0idGJfYnV0X3pvdXRfdmFsdWUiIHZhbHVlPSItMSI+DQogICAg
ICAgICAgPHBhcmFtIG5hbWU9InRiX2J1dF96b3V0X2hpbnQiIHZhbHVlPSJD
bGljayB0byB6b29tIG91dCAyeC4iPg0KCSAgPHBhcmFtIG5hbWU9InRiX2J1
dF9yZWNlbnRlcl9pbWciIHZhbHVlPSJyZWNlbnRlcjEuZ2lmIj4NCgkgIDxw
YXJhbSBuYW1lPSJ0Yl9idXRfcmVjZW50ZXJfaW1nX3ByIiB2YWx1ZT0icmVj
ZW50ZXIyLmdpZiI+DQoJICA8cGFyYW0gbmFtZT0idGJfYnV0X3JlY2VudGVy
X2lucHV0IiB2YWx1ZT0iYXV0b19wb2ludCI+DQoJICA8cGFyYW0gbmFtZT0i
dGJfYnV0X3JlY2VudGVyX25hbWUiIHZhbHVlPSJhY3Rpb24iPg0KCSAgPHBh
cmFtIG5hbWU9InRiX2J1dF9yZWNlbnRlcl92YWx1ZSIgdmFsdWU9IjAiPg0K
ICAgICAgICAgIDxwYXJhbSBuYW1lPSJ0Yl9idXRfcmVjZW50ZXJfaGludCIg
dmFsdWU9IkNsaWNrIHRoaXMgYnV0dG9uIGFuZCB0aGVuIGNob29zZSB0aGV8
bWFwJ3MgbmV3IGNlbnRlciB3aXRoIGEgbW91c2UgY2xpY2suIj4NCgkgIDxw
YXJhbSBuYW1lPSJ0Yl9idXRfZnVsbGV4dGVudF9pbWciIHZhbHVlPSJmdWxs
ZXh0ZW50MS5naWYiPg0KCSAgPHBhcmFtIG5hbWU9InRiX2J1dF9mdWxsZXh0
ZW50X2ltZ19wciIgdmFsdWU9ImZ1bGxleHRlbnQyLmdpZiI+DQoJICA8cGFy
YW0gbmFtZT0idGJfYnV0X2Z1bGxleHRlbnRfaW5wdXQiIHZhbHVlPSJzdWJt
aXQiPg0KCSAgPHBhcmFtIG5hbWU9InRiX2J1dF9mdWxsZXh0ZW50X25hbWUi
IHZhbHVlPSJyZXN0b3JlIj4NCgkgIDxwYXJhbSBuYW1lPSJ0Yl9idXRfZnVs
bGV4dGVudF92YWx1ZSIgdmFsdWU9InJlc3RvcmUiPg0KICAgICAgICAgIDxw
YXJhbSBuYW1lPSJ0Yl9idXRfZnVsbGV4dGVudF9oaW50IiB2YWx1ZT0iQ2xp
Y2sgdG8gcmVzdG9yZSB0aGUgbWFwfHRvIGl0J3Mgb3JpZ2luYWwgc3RhdGUu
Ij4NCgkgIDwvYXBwbGV0Pg0KCTwvdGQ+DQoNCiAgICAgICAgPHRkIHZhbGln
bj0idG9wIj48aW1nIHNyYz0iJGltZ19yZWxfcGF0aCRyZWZtYXAiIGJvcmRl
cj0iMCI+PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgIDwvdGFibGU+DQog
ICAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZXh0ZW50IiB2YWx1ZT0i
JGltZ2V4dCI+DQogICAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iaW5w
dXRfdHlwZSIgdmFsdWU9IiI+DQogICAgICA8aW5wdXQgdHlwZT1oaWRkZW4g
bmFtZT0ibW91c2VfY29vcmRzIiB2YWx1ZT0iIj4NCiAgICAgIDxpbnB1dCB0
eXBlPWhpZGRlbiBuYW1lPSJhY3Rpb24iIHZhbHVlPSIiPg0KICAgICAgPGlu
cHV0IHR5cGU9aGlkZGVuIG5hbWU9InJlc3RvcmUiIHZhbHVlPSIiPg0KICAg
ICAgPC9mb3JtPjwvcD4NCiAgIDwvYm9keT4NCg0KICAgPC9odG1sPg0KRU9G
DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIElu
IGNhc2UgSSBuZWVkIGFueSBvZiB0aGlzIGFnYWluLg0KIy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyBwcmludCAiJG1hcHNjcmlw
dDo6bXNfZXJyb3ItPntjb2RlfSAkbWFwc2NyaXB0Ojptc19lcnJvci0+e21l
c3NhZ2V9ICRtYXBzY3JpcHQ6Om1zX2Vycm9yLT57cm91dGluZX1cbjxwPiI7
DQoNCiMkYXNwZWN0ID0gKCRtYXAtPntleHRlbnR9LT57bWF4eX0gLSAkbWFw
LT57ZXh0ZW50fS0+e21pbnl9KSAvICgkbWFwLT57ZXh0ZW50fS0+e21heHh9
IC0gJG1hcC0+e2V4dGVudH0tPnttaW54fSk7DQojJG1hcC0+e3JlZmVyZW5j
ZX0tPnt3aWR0aH0gPSAkbWFwLT57d2lkdGh9IC8gMzsNCiMkbWFwLT57cmVm
ZXJlbmNlfS0+e2hlaWdodH0gPSAkbWFwLT57cmVmZXJlbmNlfS0+e2hlaWdo
dH0gKiAkYXNwZWN0Ow0KDQojJGNlbGx4ID0gKCRtYXAtPntleHRlbnR9LT57
bWF4eH0gLSAkbWFwLT57ZXh0ZW50fS0+e21pbnh9KSAvICRtYXAtPntyZWZl
cmVuY2V9LT57d2lkdGh9Ow0KIyRjZWxseSA9ICgkbWFwLT57ZXh0ZW50fS0+
e21heHl9IC0gJG1hcC0+e2V4dGVudH0tPnttaW55fSkgLyAkbWFwLT57cmVm
ZXJlbmNlfS0+e2hlaWdodH07DQojaWYgKCRjZWxseCA+ICRjZWxseSkgew0K
IyAgJGNlbGxzaXplID0gJGNlbGx4Ow0KI30NCiNlbHNlIHsNCiMgICRjZWxs
c2l6ZSA9ICRjZWxseTsNCiN9DQojJG1hcC0+e3JlZmVyZW5jZX0tPntleHRl
bnR9LT57bWlueH0gPSAkbWFwLT57ZXh0ZW50fS0+e21pbnh9Ow0KIyRtYXAt
PntyZWZlcmVuY2V9LT57ZXh0ZW50fS0+e21pbnl9ID0gJG1hcC0+e2V4dGVu
dH0tPnttYXh5fSAtICgkY2VsbHNpemUgKiAoJG1hcC0+e2hlaWdodH0gKyAx
KSk7DQojJG1hcC0+e3JlZmVyZW5jZX0tPntleHRlbnR9LT57bWF4eH0gPSAk
bWFwLT57ZXh0ZW50fS0+e21pbnh9ICsgKCRjZWxsc2l6ZSAqICgkbWFwLT57
d2lkdGh9ICsgMSkpOw0KIyRtYXAtPntyZWZlcmVuY2V9LT57ZXh0ZW50fS0+
e21heHl9ID0gJG1hcC0+e2V4dGVudH0tPnttYXh5fTsNCg==
---559023410-1254324197-1026401138=:6435--