📄 aspnet03-01.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><!-- saved from url=(0076)http://msconline.maconstate.edu/tutorials/aspnet20/ASPNET03/aspnet03-01.aspx --><title>ASP.NET Tutorial</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link href="aspnet03-01_data/stylesheet.css" type="text/css" rel="stylesheet">
<style>TABLE#BookGrid3 TD {
FONT-SIZE: 11pt; FONT-FAMILY: times new roman
}
TABLE#BookGrid3 TH {
FONT-SIZE: 11pt; FONT-FAMILY: times new roman
}
TABLE#BookGrid TD {
FONT-SIZE: 8pt; VERTICAL-ALIGN: top; FONT-FAMILY: times new roman
}
TABLE#BookGrid TH {
FONT-SIZE: 9pt; FONT-FAMILY: times new roman
}
TABLE#Database TD {
FONT-SIZE: 9pt; VERTICAL-ALIGN: top; FONT-FAMILY: arial
}
TH {
FONT-SIZE: 9pt; VERTICAL-ALIGN: top; FONT-FAMILY: arial
}
</style>
<meta content="MSHTML 6.00.2900.2180" name="GENERATOR"></head><body onscroll="document.all.PageScroll.value=document.body.scrollTop" onload="document.body.scrollTop=document.all.PageScroll.value">
<form id="ctl00" name="ctl00" action="aspnet03-01.aspx" method="post">
<div><input id="__VIEWSTATE" value="/wEPDwUKLTYwMDc4MTE1NA9kFgICAQ9kFgoCAw8PFgIeBFRleHQFJTxoMz5TY3JpcHQtR2VuZXJhdGVkIFBhZ2UgT3V0cHV0PC9oMz5kZAIFDw8WAh8ABZ8CPHA+VG9kYXksIDxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPlNhdHVyZGF5LCBNYXJjaCAyOSwgMjAwODwvc3Bhbj4sIHRoaXMgb3V0cHV0IGlzIHByb2R1Y2VkIGJ5IGEgc2NyaXB0IHRoYXQgd3JpdGVzIHRleHQgY2hhcmFjdGVycywgWEhUTUwgdGFncywgYW5kIGEgVmlzdWFsIEJhc2ljIGRhdGUgZnVuY3Rpb24gdG8gc2VydmVyIG91dHB1dCBjb250cm9scyBjb2RlZCBvbiB0aGUgcGFnZS4gVGhlIGRhdGUgaXMgYWx3YXlzIGN1cnJlbnQgYW5kIGRvZXMgbm90IHJlcXVpcmUgcGFnZSBlZGl0aW5nLjwvcD5kZAIQDzwrAA0CAA8WBB4LXyFEYXRhQm91bmRnHgtfIUl0ZW1Db3VudAIeZAwUKwAEFggeBE5hbWUFBkJvb2tJRB4KSXNSZWFkT25seWgeBFR5cGUZKwIeCURhdGFGaWVsZAUGQm9va0lEFggfAwUJQm9va1RpdGxlHwRoHwUZKwIfBgUJQm9va1RpdGxlFggfAwUJQm9va1ByaWNlHwRoHwUZKVtTeXN0ZW0uRGVjaW1hbCwgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5HwYFCUJvb2tQcmljZRYIHwMFB0Jvb2tRdHkfBGgfBRkrAR8GBQdCb29rUXR5FgJmD2QWPgIBD2QWCGYPDxYCHwAFBURCMTExZGQCAQ8PFgIfAAUPT3JhY2xlIERhdGFiYXNlZGQCAg8PFgIfAAUFNjkuOTlkZAIDDw8WAh8ABQIxMGRkAgIPZBYIZg8PFgIfAAUFREIyMjJkZAIBDw8WAh8ABRJEYXRhYmFzZXMgaW4gRGVwdGhkZAICDw8WAh8ABQUyOS45NWRkAgMPDxYCHwAFATZkZAIDD2QWCGYPDxYCHwAFBURCMzMzZGQCAQ8PFgIfAAUTRGF0YWJhc2UgUHJvY2Vzc2luZ2Rk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IGFsbCB0aGUgbmV3IGZlYXR1cmVzLCB0aGlzIHBvd2VyaG91c2UgcmVzb3VyY2UgcHJvdmlkZXMgYW4gb3ZlcnZpZXcgb2YgZGF0YWJhc2UgYXJjaGl0ZWN0dXJlIGFuZCBPcmFjbGUgR3JpZCBDb21wdXRpbmcgdGVjaG5vbG9neSwgYW5kIGNvdmVycyBTUUwsIFNRTCpQbHVzLCBQTC9TUUwsIGR5bmFtaWMgUEwvU1FMLCBvYmplY3Qtb3JpZW50ZWQgZmVhdHVyZXMsIGFuZCBKYXZhIHByb2dyYW1taW5nIGluIHRoZSBPcmFjbGUgZW52aXJvbm1lbnQuIFlvdSdsbCBhbHNvIGZpbmQgdmFsdWFibGUgZGF0YWJhc2UgYWRtaW5pc3RyYXRpb24gYW5kIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IHRlY2huaXF1ZXMsIHBsdXMgYW4gYWxwaGFiZXRpY2FsIHJlZmVyZW5jZSBjb3ZlcmluZyBtYWpvciBPcmFjbGUgY29tbWFuZHMsIGtleXdvcmRzLCBmZWF0dXJlcywgYW5kIGZ1bmN0aW9ucywgd2l0aCBjcm9zcy1yZWZlcmVuY2luZyBvZiB0b3BpY3MuZGQCBQ8PFgIfAAUFNjkuOTlkZAIGDw8WAh8ABQIxMGRkAgcPDxYCHwAFBUZhbHNlZGQCAg9kFhBmDw8WAh8ABQVEQjIyMmRkAgEPDxYCHwAFCERhdGFiYXNlZGQCAg8PFgIfAAUSRGF0YWJhc2VzIGluIERlcHRoZGQCAw8PFgIfAAUKQy4gSi4gRGF0ZWRkAgQPZBYCAgEPZBYCAgEPDxYCHwAF3ANJbiBEYXRhYmFzZSBpbiBEZXB0aCwgYXV0aG9yIGFuZCB3ZWxsLWtub3duIGRhdGFiYXNlIGF1dGhvcml0eSBDaHJpcyBEYXRlIGxheXMgb3V0IHRoZSBmdW5kYW1lbnRhbHMgb2YgdGhlIHJlbGF0aW9uYWwgbW9kZWwuIERvbid0IGxldCBhIGxhY2sgdG8gZm9ybWFsIGVkdWNhdGlvbiBpbiBkYXRhYmFzZSB0aGVvcnkgaG9sZCB5b3UgYmFjay4gSW5zdGVhZCwgbGV0IENocmlzJ3MgY2xlYXIgZXhwbGFuYXRpb24gb2YgcmVsYXRpb25hbCBjb25jZXB0cywgc2V0IHRoZW9yeSwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBtb2RlbCBhbmQgaW1wbGVtZW50YXRpb24sIHJlbGF0aW9uYWwgYWxnZWJyYSwgbm9ybWFsaXphdGlvbiwgYW5kIG11Y2ggbW9yZSBzZXQgeW91IGFwYXJ0IGFuZCB3ZWxsIGFib3ZlIHRoZSBjb21wZXRpdGlvbiB3aGVuIGl0IGNvbWVzIHRvIGdldHRpbmcgd29yayBkb25lIHdpdGggYSByZWxhdGlvbmFsIGRhdGFiYXNlLmRkAgUPDxYCHwAFBTI5Ljk1ZGQCBg8PFgIfAAUBNmRkAgcPDxYCHwAFBFRydWVkZAIDD2QWEGYPDxYCHwAFBURCMzMzZGQCAQ8PFgIfAAUIRGF0YWJhc2VkZAICDw8WAh8ABRNEYXRhYmFzZSBQcm9jZXNzaW5nZGQCAw8PFgIfAAUKRC4gS3JvZW5rZWRkAgQPZBYCAgEPZBYCAgEPDxYCHwAFoAVSZXZpc2VkIHRvIHJlZmxlY3QgdGhlIG5lZWRzIG9mIHRvZGF5J3MgdXNlcnMsIHRoaXMgMTB0aCBlZGl0aW9uIG9mIERhdGFiYXNlIFByb2Nlc3NpbmcgYXNzdXJlcyB0aGF0IHlvdSB3aWxsIGxlYXJuIG1hcmtldGFibGUgc2tpbGxzLiBCeSBwcmVzZW50aW5nIFNRTCBTRUxFQ1Qgc3RhdGVtZW50cyBuZWFyIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJvb2sgcmVhZGVycyB3aWxsIGtub3cgZWFybHkgb24gaG93IHRvIHF1ZXJ5IGRhdGEgYW5kIG9idGFpbiByZXN1bHRzLXNlZWluZyBmaXJzdGhhbmQgc29tZSBvZiB0aGUgd2F5cyB0aGF0IGRhdGFiYXNlIHRlY2hub2xvZ3kgaXMgdXNlZnVsIGluIHRoZSBtYXJrZXRwbGFjZS4gQnkgdXRpbGl6aW5nIGZyZWUgc29mdHdhcmUgZG93bmxvYWRzLCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGFjdGl2ZWx5IHVzZSBhIERCTVMgcHJvZHVjdCBieSB0aGUgZW5kIG9mIHRoZSAybmQgY2hhcHRlci4gRWFjaCB0b3BpYyBhcHBlYXJzIGluIHRoZSBjb250ZXh0IG9mIGFjY29tcGxpc2hpbmcgcHJhY3RpY2FsIHRhc2tzLiBJdHMgc3BpcmFsIGFwcHJvYWNoIHRvIGRhdGFiYXNlIGRlc2lnbiBwcm92aWRlcyB1c2VycyB3aXRoIGVuaGFuY2VkIGluZm9ybWF0aW9uIG5vdCBhdmFpbGFibGUgaW4gb3RoZXIgZGF0YWJhc2UgYm9va3Mgb24gdGhlIG1hcmtldC5kZAIFDw8WAh8ABQYxMzYuNjVkZAIGDw8WAh8ABQIxMmRkAgcPDxYCHwAFBUZhbHNlZGQCBA9kFhBmDw8WAh8ABQVEQjQ0NGRkAgEPDxYCHwAFCERhdGFiYXNlZGQCAg8PFgIfAAUWQWNjZXNzIERhdGFiYXNlIERlc2lnbmRkAgMPDxYCHwAFCFMuIFJvbWFuZGQCBA9kFgICAQ9kFgICAQ8PFgIfAAXZBVdoZW4gdXNpbmcgc29mdHdhcmUgcHJvZHVjdHMgd2l0aCBncmFwaGljYWwgaW50ZXJmYWNlcywgd2UgZnJlcXVlbnRseSBmb2N1cyBzbyBtdWNoIG9uIHRoZSBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhlIGludGVyZmFjZSB0aGF0IHdlIGZvcmdldCBhYm91dCB0aGUgZ2VuZXJhbCBjb25jZXB0cyB0aGF0IGFsbG93IHVzIHRvIHVuZGVyc3RhbmQgYW5kIHVzZSB0aGUgc29mdHdhcmUgZWZmZWN0aXZlbHkuIFRoaXMgaXMgcGFydGljdWxhcmx5IHRydWUgb2YgYSBwb3dlcmZ1bCBkYXRhYmFzZSBwcm9kdWN0IGxpa2UgTWljcm9zb2Z0IEFjY2Vzcy4gTm92aWNlLCBhbmQgc29tZXRpbWVzIGV2ZW4gZXhwZXJpZW5jZWQsIHByb2dyYW1tZXJzIGFyZSBzbyBjb25jZXJuZWQgd2l0aCBob3cgc29tZXRoaW5nIGlzIGRvbmUgaW4gQWNjZXNzIHRoYXQgdGhleSBvZnRlbiBsb3NlIHNpZ2h0IG9mIHRoZSBnZW5lcmFsIHByaW5jaXBsZXMgdGhhdCB1bmRlcmxpZSB0aGVpciBkYXRhYmFzZSBhcHBsaWNhdGlvbnMuIEFjY2VzcyBEYXRhYmFzZSBEZXNpZ24gYW5kIFByb2dyYW1taW5nIHRha2VzIHlvdSBiZWhpbmQgdGhlIGRldGFpbHMgb2YgdGhlIEFjY2VzcyBpbnRlcmZhY2UsIGZvY3VzaW5nIG9uIHRoZSBnZW5lcmFsIGtub3dsZWRnZSBuZWNlc3NhcnkgZm9yIEFjY2VzcyBwb3dlciB1c2VycyBvciBkZXZlbG9wZXJzIHRvIGNyZWF0ZSBlZmZlY3RpdmUgZGF0YWJhc2UgYXBwbGljYXRpb25zLmRkAgUPDxYCHwAFBTM0Ljk1ZGQCBg8PFgIfAAUCMjVkZAIHDw8WAh8ABQVGYWxzZWRkAgUPZBYQZg8PFgIfAAUFREI1NTVkZAIBDw8WAh8ABQhEYXRhYmFzZWRkAgIPDxYCHwAFD1NRTCBTZXJ2ZXIgMjAwNWRkAgMPDxYCHwAFClAuIERlYmV0dGFkZAIED2QWAgIBD2QWAgIBDw8WAh8ABZwGR2V0IGEgZGV2ZWxvcGVyLWZvY3VzZWQgaW50cm9kdWN0aW9uIHRvIHRoZSBuZXcgcHJvZ3JhbW1hYmlsaXR5IGZlYXR1cmVzIGluIHRoZSBuZXh0IHZlcnNpb24gb2YgTWljcm9zb2Z0IFNRTCBTZXJ2ZXItaW5jbHVkaW5nIGludGVncmF0aW9uIHdpdGggdGhlIE1pY3Jvc29mdCAuTkVUIEZyYW1ld29yay1hbmQgbGVhcm4gcG93ZXJmdWwgbmV3IHdheXMgdG8gbWFuaXB1bGF0ZSB5b3VyIHNlcnZlcnMuIFdoZXRoZXIgeW91J3JlIGEgZGV2ZWxvcGVyIGN1cnJlbnRseSB3b3JraW5nIHdpdGggVC1TUUwgb3IgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8uTkVULCBvciB5b3UncmUgcmVzcG9uc2libGUgZm9yIGRhdGFiYXNlIGFkbWluaXN0cmF0aW9uLCB5b3UnbGwgc2VlIGhvdyB0byBkcmF3IGZyb20geW91ciBleGlzdGluZyBza2lsbHMgYW5kIGtub3dsZWRnZSB0byBleHBsb2l0IG5ldyBTUUwgU2VydmVyIHRlY2hub2xvZ3kuIFdpdGggaW50cm9kdWN0b3J5LWxldmVsIGNvZGUgc2FtcGxlcyB3cml0dGVuIGluIGJvdGggVC1TUUwgYW5kIEMjLCB5b3UnbGwgdW5kZXJzdGFuZCBob3cgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGNyb3NzLXBsYXRmb3JtIGludGVyb3BlcmFiaWxpdHksIG5hdGl2ZSBzdXBwb3J0IGZvciBYTUwgYW5kIFdlYiBzZXJ2aWNlcywgc2hhcmVkIGxhbmd1YWdlIGJhc2UsIGFuZCBvdGhlciBwcm9ncmFtbWluZyBpbm5vdmF0aW9ucyB0byBidWlsZCBiZXR0ZXIgc29sdXRpb25zIGZyb20gYnVzaW5lc3MgaW50ZWxsaWdlbmNlIHRvIGVudGVycHJpc2UgZGF0YSBtYW5hZ2VtZW50LmRkAgUPDxYCHwAFBTI5Ljk5ZGQCBg8PFgIfAAUBMGRkAgcPDxYCHwAFBFRydWVkZAIGD2QWEGYPDxYCHwAFBUdSMTExZGQCAQ8PFgIfAAUIR3JhcGhpY3NkZAICDw8WAh8ABRNBZG9iZSBQaG90b3Nob3AgQ1MyZGQCAw8PFgIfAAUFQWRvYmVkZAIED2QWAgIBD2QWAgIBDw8WAh8ABYQGV2l0aCB0aGlzIGJvb2ssIHlvdSBsZWFybiBieSBkb2luZywgZ2V0dGluZyB5b3VyIGZlZXQgd2V0IGltbWVkaWF0ZWx5IGFzIHlvdSBwcm9ncmVzcyB0aHJvdWdoIGEgc2VyaWVzIG9mIGhhbmRzLW9uIHByb2plY3RzIHRoYXQgYnVpbGQgb24geW91ciBncm93aW5nIFBob3Rvc2hvcCBrbm93bGVkZ2UuIFNpbXBsZSBzdGVwLWJ5LXN0ZXAgaW5zdHJ1Y3Rpb25zLCByZXZpZXcgcXVlc3Rpb25zIGF0IHRoZSBlbmQgb2YgZWFjaCBjaGFwdGVyLCBhbmQgYSBjb21wYW5pb24gQ0Qgd2l0aCBhbGwgb2YgdGhlIGJvb2sncyBwcm9qZWN0IGZpbGVzIG1ha2UgbGVhcm5pbmcgYSBicmVlemUgYXMgdGhlIEFkb2JlIENyZWF0aXZlIFRlYW0gdGFrZXMgeW91IG9uIGEgc2VsZi1wYWNlZCB0b3VyIG9mIHRoZSBpbWFnZS1lZGl0aW5nIHBvd2VyaG91c2UuIFRoaXMgYmVzdHNlbGxpbmcgZ3VpZGUgaGFzIGJlZW4gY29tcGxldGVseSByZXZpc2VkIHRvIGNvdmVyIGFsbCBvZiBQaG90b3Nob3AgQ1MyJ3MgbmV3IGZlYXR1cmVzIGFuZCBjcmVhdGl2ZSB0b29scy4gVGhpcyBjb21wcmVoZW5zaXZlIGd1aWRlIHN0YXJ0cyB3aXRoIGFuIGludHJvZHVjdG9yeSB0b3VyIG9mIHRoZSBzb2Z0d2FyZSBhbmQgdGhlbiBwcm9ncmVzc2VzIG9uIHRocm91Z2ggbGVzc29ucyBvbiBldmVyeXRoaW5nIGZyb20gUGhvdG9zaG9wJ3MgaW50ZXJmYWNlIHRvIG1vcmUgY29tcGxleCB0b3BpY3MgbGlrZSBjb2xvciBtYW5hZ2VtZW50LCBXZWIgZ3JhcGhpY3MsIGFuZCBwaG90byByZXRvdWNoaW5nLmRkAgUPDxYCHwAFBTI5Ljk5ZGQCBg8PFgIfAAUBNGRkAgcPDxYCHwAFBUZhbHNlZGQCBw9kFhBmDw8WAh8ABQVHUjIyMmRkAgEPDxYCHwAFCEdyYXBoaWNzZGQCAg8PFgIfAAUTTGVhcm5pbmcgV2ViIERlc2lnbmRkAgMPDxYCHwAFC0ouIE5pZWRlcnN0ZGQCBA9kFgICAQ9kFgICAQ8PFgIfAAXiA0luIExlYXJuaW5nIFdlYiBEZXNpZ24sIGF1dGhvciBKZW5uaWZlciBOaWVkZXJzdCBzaGFyZXMgdGhlIGtub3dsZWRnZSBzaGUncyBnYWluZWQgZnJvbSB5ZWFycyBvZiB3ZWIgZGVzaWduIGV4cGVyaWVuY2UsIGJvdGggYXMgYSBkZXNpZ25lciBhbmQgYSB0ZWFjaGVyLiBUaGlzIGJvb2sgc3RhcnRzIGZyb20gdGhlIGJlZ2lubmluZy0tZGVmaW5pbmcgdGhlIEludGVybmV0LCB0aGUgV2ViLCBicm93c2VycywgYW5kIFVSTHMtLXNvIHlvdSBkb24ndCBuZWVkIHRvIGhhdmUgYW55IHByZXZpb3VzIGtub3dsZWRnZSBhYm91dCBob3cgdGhlIFdlYiB3b3Jrcy4gQWZ0ZXIgcmVhZGluZyB0aGlzIGJvb2ssIHlvdSdsbCBoYXZlIGEgc29saWQgZm91bmRhdGlvbiBpbiBIVE1MLCBncmFwaGljcywgYW5kIGRlc2lnbiBwcmluY2lwbGVzIHRoYXQgeW91IGNhbiBpbW1lZGlhdGVseSBwdXQgdG8gdXNlIGluIGNyZWF0aW5nIGVmZmVjdGl2ZSB3ZWIgcGFnZXMuZGQCBQ8PFgIfAAUFMzkuOTVkZAIGDw8WAh8ABQE4ZGQCBw8PFgIfAAUEVHJ1ZWRkAggPZBYQZg8PFgIfAAUFR1IzMzNkZAIBDw8WAh8ABQhHcmFwaGljc2RkAgIPDxYCHwAFHU1hY3JvbWVkaWEgRmxhc2ggUHJvZmVzc2lvbmFsZGQCAw8PFgIfAAUIVC4gR3JlZW5kZAIED2QWAgIBD2QWAgIBDw8WAh8ABaAHT2ZmZXJpbmcgYnJlYWt0aHJvdWdoIHZpZGVvIGNhcGFiaWxpdGllcyBhbmQgcG93ZXJmdWwgcnVuLXRpbWUgZWZmZWN0cywgTWFjcm9tZWRpYSBGbGFzaCBQcm9mZXNzaW9uYWwgOCBpcyBwb2lzZWQgdG8gdXBlbmQgdGhlIFdlYiB2aWRlbyBtYXJrZXQsIHBvc2luZyBhIHNlcmlvdXMgY2hhbGxlbmdlIHRvIE1pY3Jvc29mdCwgUmVhbE5ldHdvcmtzLCBhbmQgQXBwbGUncyBlZmZvcnRzIGluIHRoZSBwcm9jZXNzLiBIZXJlIHRvIG1ha2Ugc3VyZSB5b3UncmUgcmVhZHkgZm9yIGl0IGlzIHRoZSBvZmZpY2lhbCBNYWNyb21lZGlhIHRyYWluaW5nIGZvciB0aGUgcHJvZ3JhbS4gVGhyb3VnaCAyMC1wbHVzIGhvdXJzIG9mIHByb2plY3QtYmFzZWQgaW5zdHJ1Y3Rpb24sIHlvdSdsbCBsZWFybiBob3cgdG8gcHJvZ3JhbSBmb3IgdGhlIGVuaGFuY2VkIEZsYXNoIFBsYXllcjsgdXNlIEFjdGlvblNjcmlwdCB0byBjcmVhdGUgZHluYW1pYyBpbnRlcmFjdGl2aXR5OyB0YWtlIGFkdmFudGFnZSBvZiBuZXcgRmxhc2ggOCBmZWF0dXJlcyBsaWtlIHRoZSBpbXByb3ZlZCBzY3JpcHQgZWRpdG9yLCByZXZhbXBlZCBsaWJyYXJ5IGludGVyZmFjZSwgYW5kIG5ldyBVbmRvIGZlYXR1cmU7IGFuZCBtb3JlLiBTaW1wbGUgc3RlcC1ieS1zdGVwIGluc3RydWN0aW9ucyBwZXBwZXJlZCB3aXRoIHBsZW50eSBvZiB2aXN1YWwgYWlkcyBhbmQgYSBDRCB0aGF0IGluY2x1ZGVzIGxlc3NvbiBmaWxlcyBhbmQgYSB0cmlhbCB2ZXJzaW9uIG9mIEZsYXNoIFByb2Zlc3Npb25hbCA4IGxlYXZlIHlvdSB3aXRoIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBGbGFzaCBkZXZlbG9wbWVudCBhbmQgdGhlIHRlY2huaXF1ZXMgcmVxdWlyZWQgdG8gdGFwIHlvdXIgY3JlYXRpdmUgcG90ZW50aWFsIGJ5IHByb2R1Y2luZyBkeW5hbWljLCBpbnRlcmFjdGl2ZSBjb250ZW50LmRkAgUPDxYCHwAFBTQ0Ljk5ZGQCBg8PFgIfAAUCMTdkZAIHDw8WAh8ABQVGYWxzZWRkAgkPZBYQZg8PFgIfAAUFR1I0NDRkZAIBDw8WAh8ABQhHcmFwaGljc2RkAgIPDxYCHwAFHURpZ2l0YWwgUGhvdG9ncmFwaGVyIEhhbmRib29rZGQCAw8PFgIfAAUKTS4gRnJlZW1hbmRkAgQPZBYCAgEPZBYCAgEPDxYCHwAFugZNaWNoYWVsIEZyZWVtYW4gaGFzIGEgd2VsbC1kZXNlcnZlZCByZXB1dGF0aW9uIGZvciBlZmZlY3RpdmVseSBleHBsYWluaW5nIHRoZSBjb25jZXB0cyBiZWhpbmQgZGlnaXRhbCBwaWN0dXJlLXRha2luZyB0byBhIHZhcmlldHkgb2YgYXVkaWVuY2VzLiBIZXJlLCBoZSB0dXJucyBoaXMgYXR0ZW50aW9uIHRvIHRoZSBwcm9mZXNzaW9uYWxzIGFuZCBhZHZhbmNlZCBob2JieWlzdHMgd2hvIGFyZSBtYWtpbmcgdGhlIG1vdmUgZnJvbSB0cmFkaXRpb25hbCB0byBkaWdpdGFsIGFuZCB3YW50IGhlbHAgbWFzdGVyaW5nIHRoZSB0ZWNobm9sb2d5IGFuZCBtZWV0aW5nIHRoZWlyIGNsaWVudHMnIG5ldyByZXF1aXJlbWVudHMuIEZyZWVtYW4gdGhvcm91Z2hseSBhbnN3ZXJzIHRoZSBtb3N0IGZyZXF1ZW50bHkgYXNrZWQgcXVlc3Rpb25zIGFib3V0IHRoZSBiYXNpY3Mgb2YgZGlnaXRhbCBjYXB0dXJlLCBmcm9tIGNhbWVyYXMgYW5kIGNvbXB1dGVycyB0byBzdG9yYWdlIG9wdGlvbnMsIHByaW50ZXJzLCBhbmQgc2Nhbm5lcnMuIFBob3RvZ3JhcGhlcnMgd2lsbCBsZWFybiB0aGUgZGlmZmVyZW50IGZpbGUgZm9ybWF0cyBhbmQgaG93IHRvIHNhdmUgaW1hZ2VzIGZvciBwcmludCBvciBwdWJsaXNoaW5nIG9uIHRoZSB3ZWIuIFRoZXknbGwgZXhwbG9yZSB2YWx1YWJsZSBzb2Z0d2FyZSB0b29scyBhbmQgYmFzaWMgaW1hZ2UgcHJvY2Vzc2luZyBwcm9ncmFtcyB0aGF0IGZpeCBjb21tb24gcHJvYmxlbXMsIGFuZCBzZWUgaG93IHRvIGltcHJvdmUgcGljdHVyZXMgdXNpbmcgYW4gYXNzb3J0bWVudCBvZiBjcm9wcGluZyBhbmQgZmlsdGVyaW5nIHRlY2huaXF1ZXMuZGQCBQ8PFgIfAAUFMjQuOTVkZAIGDw8WAh8ABQIyMmRkAgcPDxYCHwAFBUZhbHNlZGQCCg9kFhBmDw8WAh8ABQVHUjU1NWRkAgEPDxYCHwAFCEdyYXBoaWNzZGQCAg8PFgIfAAUYQ3JlYXRpbmcgTW90aW9uIEdyYXBoaWNzZGQCAw8PFgIfAAUIVC4gTWV5ZXJkZAIED2QWAgIBD2QWAgIBDw8WAh8ABZMEVHJpc2ggYW5kIENocmlzIE1leWVyIHNoYXJlIHRoZWlyIHllYXJzIG9mIHJlYWwtd29ybGQgcHJvZHVjdGlvbiBleHBlcmllbmNlIGluIHRoaXMgdml0YWwgdXBkYXRlIHRvIHRoZSBhY2NsYWltZWQgQ3JlYXRpbmcgTW90aW9uIEdyYXBoaWNzIHdpdGggQWZ0ZXIgRWZmZWN0cyBzZXJpZXMuIE1vcmUgdGhhbiBhIHN0ZXAtYnktc3RlcCByZXZpZXcgb2YgdGhlIGZlYXR1cmVzLCB5b3UgbGVhcm4gaG93IHRoaXMgcHJvZ3JhbSBpbnRlZ3JhdGVzIGludG8gcmVhbC13b3JsZCBwcm9kdWN0aW9uIHdvcmtmbG93cyBmcm9tIGF3YXJkLXdpbm5pbmcgYXJ0aXN0cyB3aG8gbWFrZSB0aGVpciBsaXZpbmcgdXNpbmcgQWZ0ZXIgRWZmZWN0cy4gVGhpcyBmdWxsLWNvbG9yIGd1aWRlIGlzIHBhY2tlZCB3aXRoIHZpc3VhbCBleGFtcGxlcywgYW5kIHRoZSBlbmNsb3NlZCBEVkQtUk9NIGlzIGxvYWRlZCB3aXRoIHNvdXJjZSBtYXRlcmlhbCBhbmQgcHJvamVjdHMgdGhhdCBlbmNvdXJhZ2UgeW91IHRvIHByYWN0aWNlIHRoZWlyIHRlY2huaXF1ZXMuZGQCBQ8PFgIfAAUFNTkuOTVkZAIGDw8WAh8ABQIxM2RkAgcPDxYCHwAFBUZhbHNlZGQCCw9kFhBmDw8WAh8ABQVIVzExMWRkAgEPDxYCHwAFCEhhcmR3YXJlZGQCAg8PFgIfAAUSSG93IENvbXB1dGVycyBXb3JrZGQCAw8PFgIfAAUIUi4gV2hpdGVkZAIED2QWAgIBD2QWAgIBDw8WAh8ABe0DSG93IENvbXB1dGVycyBXb3JrLCA3dGggRWRpdGlvbiwgaGFzIGJlZW4gb25lIG9mIHRoZSBiZXN0c2VsbGluZyBjb21wdXRlciBib29rcyBmb3IgdGhlIGxhc3QgMTAgeWVhcnMuIFRoaXMgZm91ci1jb2xvciB2aXN1YWwgdHV0b3JpYWwgaXMgYSBtdXN0LWhhdmUgZm9yIGFueSBjb21wdXRlciB1c2VyLCBmcm9tIG5vdmljZSB0byBleHBlcnQuIFRoZSByaWNoIGdyYXBoaWNzIGFuZCBpbnRyaWNhdGUgZGV0YWlscyBhYm91dCB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgY29tcHV0ZXJzIGhhdmUgYmVlbiBhZG1pcmVkIGZvciB5ZWFycyBieSBjb25zdW1lcnMsIGluc3RydWN0b3JzLCBwcm9mZXNzaW9uYWxzLCBhbmQgcmVhZGVycyBvZiBhbGwgYWdlcy4gQSBmcmVzaCBjb3ZlciBhbmQgaW50ZXJpb3IgcHJvdmlkZSB0aGUgcmVhZGVyIHdpdGggc3VwZXJpb3IgdXNhYmlsaXR5IGFuZCBpdCBpcyB0aGUgbW9zdCBhZXN0aGV0aWNhbGx5LXBsZWFzaW5nIGVkaXRpb24geWV0IWRkAgUPDxYCHwAFBTI5Ljk5ZGQCBg8PFgIfAAUBOGRkAgcPDxYCHwAFBUZhbHNlZGQCDA9kFhBmDw8WAh8ABQVIVzIyMmRkAgEPDxYCHwAFCEhhcmR3YXJlZGQCAg8PFgIfAAUbVXBncmFkaW5nIGFuZCBSZXBhaXJpbmcgUENzZGQCAw8PFgIfAAUKUy4gTXVlbGxlcmRkAgQPZBYCAgEPZBYCAgEPDxYCHwAFxwZQdXNoIHlvdXIgUEMncyBwZXJmb3JtYW5jZSB0byB0aGUgbGltaXQuIEtub3cgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW46IFBlbnRpdW0gSUksIFBlbnRpdW0gTU1YLCBQZW50aXVtIFBybywgYW5kIGVhcmxpZXIgQ1BVIGNoaXBzIGFuZCBjaG9vc2UgdGhlIGJlc3QgY2hpcCBmb3IgeW91ciBuZWVkczsgdW5kZXJzdGFuZCBjb21wYXRpYmlsaXR5IGFuZCBmZWF0dXJlIHNldHMgb2YgcHJvY2Vzc29yIHVwZ3JhZGUgc29ja2V0cywgbW90aGVyYm9hcmRzLCBhbmQgY2hpcHNldHM7IHVzZSBVbml2ZXJzYWwgU2VyaWFsIEJ1cyBwb3J0cyBhbmQgZGV2aWNlcyB0byBzaW1wbGlmeSBwZXJpcGhlcmFsIGluc3RhbGxhdGlvbiwgY29uZmlndXJhdGlvbiwgYW5kIGltcHJvdmUgcGVyZm9ybWFuY2U7IHNxdWVlemUgdGhlIG1vc3QgcGVyZm9ybWFuY2UsIGxpZmUsIGFuZCByZWxpYWJpbGl0eSBvdXQgb2YgeW91ciBoYXJkIGRyaXZlczsgcHJldmVudCBtZW1vcnkgaGVhZGFjaGVzOiBwaWNrIHRoZSByaWdodCBzcGVlZCBhbmQgdHlwZSBvZiBTSU1NcyBhbmQgRElNTXMsIHJ1biBtb3JlIHByb2dyYW1zIGF0IG9uY2UsIGFuZCB3b3JrIHdpdGggYmlnZ2VyIGZpbGVzOyBhbmQgaW50ZWdyYXRlIGhvdCBuZXcgaGFyZHdhcmUgaW5jbHVkaW5nIDNEIGdyYXBoaWNzIGFjY2VsZXJhdG9ycywgZmFzdCBTRFJBTSBtZW1vcnksIFpvb21lZCBWaWRlbyBhbmQgQ2FyZEJ1cyBQQyBDYXJkcyBmb3IgeW91ciBub3RlYm9vaywgYW5kIE5MWCBtb3RoZXJib2FyZHMgd2l0aCBzdXBwb3J0IGZvciBTaW5nbGUgRWRnZSBDb250YWN0IHByb2Nlc3NvcnMgYW5kIEFjY2VsZXJhdGVkIEdyYXBoaWNzIFBvcnRzLmRkAgUPDxYCHwAFBTU5Ljk5ZGQCBg8PFgIfAAUBNWRkAgcPDxYCHwAFBUZhbHNlZGQCDQ9kFhBmDw8WAh8ABQVIVzMzM2RkAgEPDxYCHwAFCEhhcmR3YXJlZGQCAg8PFgIfAAUXVVNCIFN5c3RlbSBBcmNoaXRlY3R1cmVkZAIDDw8WAh8ABQtELiBBbmRlcnNvbmRkAgQPZBYCAgEPZBYCAgEPDxYCHwAF6wJVbml2ZXJzYWwgU2VyaWFsIEJ1cyBTeXN0ZW0gQXJjaGl0ZWN0dXJlLCBTZWNvbmQgRWRpdGlvbiwgYmFzZWQgb24gdGhlIDIuMCB2ZXJzaW9uIG9mIHRoZSBVbml2ZXJzYWwgU2VyaWFsIEJ1cyBzcGVjaWZpY2F0aW9uLCBwcm92aWRlcyBpbi1kZXB0aCBjb3ZlcmFnZSBhbmQgYSBkZXRhaWxlZCBkaXNjdXNzaW9uIG9mIFVTQi4gSXQgZm9jdXNlcyBvbiB0aGUgVVNCIHByb3RvY29sLCBzaWduYWxpbmcgZW52aXJvbm1lbnQsIGFuZCBlbGVjdHJpY2FsIHNwZWNpZmljYXRpb25zLCBhbG9uZyB3aXRoIHRoZSBoYXJkd2FyZS9zb2Z0d2FyZSBpbnRlcmFjdGlvbiByZXF1aXJlZCB0byBjb25maWd1cmUgYW5kIGFjY2VzcyBVU0IgZGV2aWNlcy5kZAIFDw8WAh8ABQU0OS45OWRkAgYPDxYCHwAFATFkZAIHDw8WAh8ABQVGYWxzZWRkAg4PZBYQZg8PFgIfAAUFSFc0NDRkZAIBDw8WAh8ABQhIYXJkd2FyZWRkAgIPDxYCHwAFG0Rlc2lnbmluZyBFbWJlZGRlZCBIYXJkd2FyZWRkAgMPDxYCHwAFDEouIENhdHNvdWxpc2RkAgQPZBYCAgEPZBYCAgEPDxYCHwAFwgREZXNpZ25pbmcgRW1iZWRkZWQgSGFyZHdhcmUgaXMgYSBib29rIGFib3V0IGRlc2lnbmluZyBzbWFsbCBtYWNoaW5lcyBmb3IgZW1iZWRkZWQgYXBwbGljYXRpb25zLiBUaGVyZSBhcmUgbWFueSBib29rcyBvbiB0aGUgbWFya2V0IGRlZGljYXRlZCB0byB3cml0aW5nIGNvZGUgZm9yIHBhcnRpY3VsYXIgbWljcm9wcm9jZXNzb3JzLCBvciB0aGF0IHN0cmVzcyB0aGUgcGhpbG9zb3BoeSBvZiBlbWJlZGRlZCBzeXN0ZW0gZGVzaWduIHdpdGhvdXQgcHJvdmlkaW5nIGFueSBwcmFjdGljYWwgaW5mb3JtYXRpb24uIFRoaXMgYm9vayBzdGVlcnMgYSBtaWRkbGUgcGF0aCwgdGVsbGluZyB5b3Ugd2hhdCB5b3UgbmVlZCB0byBrbm93IHRvIGNyZWF0ZSB5b3VyIG93biBwcm9kdWN0cywgYW5kIGRpc3RpbGxpbmcgbXVjaCBvZiB0aGUgbG9yZSBvZiBlbWJlZGRlZCBzeXN0ZW1zIGRlc2lnbiBpbnRvIGEgc2luZ2xlIHZvbHVtZS4gSXQgc2hvd3MgeW91IGhvdyB0byBidWlsZCBhIGNvbXBsZXRlIGVtYmVkZGVkIHN5c3RlbSwgYWRkIHBlcmlwaGVyYWxzLCBhbmQgY29ubmVjdCB5b3VyIHN5c3RlbSB0byBvdGhlciBkZXZpY2VzLmRkAgUPDxYCHwAFBTQ0Ljk1ZGQCBg8PFgIfAAUBM2RkAgcPDxYCHwAFBFRydWVkZAIPD2QWEGYPDxYCHwAFBUhXNTU1ZGQCAQ8PFgIfAAUISGFyZHdhcmVkZAICDw8WAh8ABRlDb250ZW1wb3JhcnkgTG9naWMgRGVzaWduZGQCAw8PFgIfAAUHUi4gS2F0emRkAgQPZBYCAgEPZBYCAgEPDxYCHwAF1gRDb250ZW1wb3JhcnkgTG9naWMgRGVzaWduIGludHJvZHVjZXMgYSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIHRvb2xzIGluY2x1ZGluZyBzY2hlbWF0aWMgY2FwdHVyZSwgbG9naWMgc2ltdWxhdGlvbiwgQm9vbGVhbiBtaW5pbWl6YXRpb24sIG11bHRpLWxldmVsIG1pbmltaXphdGlvbiBhbmQgc3RhdGUgYXNzaWdubWVudC4gTGlua3MgdGhlIHRyYWRpdGlvbmFsIHRlY2huaXF1ZXMgb2YgbG9naWMgZGVzaWduIChzdWNoIGFzIEthcm5hdWdoIG1hcHMgYW5kIGJyZWFkYm9hcmQgdGVjaG5pcXVlcykgd2l0aCByZWFsLXdvcmxkIGRlc2lnbiBleGFtcGxlcy4gUHJvdmlkZXMgY29tcHJlaGVuc2l2ZSwgZWFybHkgY292ZXJhZ2Ugb2YgcHJvZ3JhbW1hYmxlIGxvZ2ljIGluY2x1ZGluZyBST01zLCBQQUxzLCBhbmQgUExBcy4gSW5jbHVkZXMgYSB2YXJpZXR5IG9mIGV4YW1wbGVzLCBleGVyY2lzZXMsIHByb2JsZW1zLCBhbmQgY2FzZSBzdHVkaWVzIHRoYXQgaWxsdXN0cmF0ZSByZWFsIGRlc2lnbiBwcm9ibGVtcyBhbmQgY2hhbGxlbmdlIHRoZSByZWFkZXIgdG8gZGV2ZWxvcCBwcmFjdGljYWwgc29sdXRpb25zIHVzaW5nIG1vZGVybiBkZXNpZ24gdG9vbHMuZGQCBQ8PFgIfAAUGMTAyLjk1ZGQCBg8PFgIfAAUBMmRkAgcPDxYCHwAFBUZhbHNlZGQCEA9kFhBmDw8WAh8ABQVTVzExMWRkAgEPDxYCHwAFCFNvZnR3YXJlZGQCAg8PFgIfAAUTSmF2YSBIb3cgdG8gUHJvZ3JhbWRkAgMPDxYCHwAFBkRlaXRlbGRkAgQPZBYCAgEPZBYCAgEPDxYCHwAF9ANUaGlzIGVkaXRpb24gaXMgY29tcGxldGVseSB1cC10by1kYXRlIHdpdGggVGhlIEphdmEgMiBQbGF0Zm9ybSBTdGFuZGFyZCBFZGl0aW9uIChKMlNFKSAxLjUuIE5vdyBpbmNsdWRlcyB0b3BpY3Mgc3VjaCBhcyBhdXRvYm94aW5nLCBlbnVtZXJhdGlvbnMsIGVuaGFuY2VkIGZvciBsb29wcywgc3RhdGljIGltcG9ydCBzdGF0ZW1lbnRzLCB2YXJpYWJsZS1sZW5ndGggYXJndW1lbnQgbGlzdHMsIGFuZCBtdWNoIG1vcmUuIFByZXNlbnRzIGVhY2ggbmV3IGNvbmNlcHQgaW4gdGhlIGNvbnRleHQgb2YgYSBjb21wbGV0ZSwgd29ya2luZyBwcm9ncmFtLCBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSB3aW5kb3dzIHNob3dpbmcgdGhlIHByb2dyYW0ncyBpbnB1dC9vdXRwdXQgZGlhbG9nLiBBIHZhbHVhYmxlIHJlZmVyZW5jZSBmb3IgcHJvZ3JhbW1lcnMgYW5kIGFueW9uZSBpbnRlcmVzdGVkIGluIGxlYXJuaW5nIHRoZSBKYXZhIHByb2dyYW1taW5nIGxhbmd1YWdlLmRkAgUPDxYCHwAFBTk4LjU5ZGQCBg8PFgIfAAUBOWRkAgcPDxYCHwAFBFRydWVkZAIRD2QWEGYPDxYCHwAFBVNXMjIyZGQCAQ8PFgIfAAUIU29mdHdhcmVkZAICDw8WAh8ABRZDIFByb2dyYW1taW5nIExhbmd1YWdlZGQCAw8PFgIfAAUMQi4gS2VybmlnaGFuZGQCBA9kFgICAQ9kFgICAQ8PFgIfAAWvBVRoZSBvcmlnaW5hbCBhdXRob3JzIG9mIEMgYW5kIHRoZSBmaXJzdCBVTklYIHN5c3RlbSBwcmVzZW50IHRoaXMgY29uY2lzZSBhbmQgcG93ZXJmdWwgZ3VpZGUgdG8gQU5TSSBzdGFuZGFyZCBDIHByb2dyYW1taW5nLiBUaGlzIHZlcnNpb24sIGJ1aWxkaW5nIG9uIEtlcm5pbmdoYW4gYW5kIFJpdGNoaWUncyBjbGFzc2ljIFRoZSBDIFByb2dyYW1taW5nIExhbmd1YWdlLCBicmluZ3MgcmVhZGVycyB1cC10by1kYXRlIHdpdGggdGhlIGZpbmFsaXplZCBBTlNJIHN0YW5kYXJkIGZvciBDIHdoaWxlIHRlYWNoaW5nIHVzZXJzIGhvdyB0byB0YWtlIGFkdmFudGFnZSBvZiBub3RlZCBDIGZlYXR1cmVzIGxpa2UgZWNvbm9teSBvZiBleHByZXNzaW9uLCBpdHMgZnVsbCBzZXQgb2Ygb3BlcmF0b3JzIGFuZCBtb3JlLiBPbmUgcmVhZGVyIGNsYWltZWQgIkp1c3QgYWJvdXQgZXZlcnkgQyBwcm9ncmFtbWVyIEkgcmVzcGVjdCBsZWFybmVkIEMgZnJvbSB0aGlzIGJvb2ssIiB3aGlsZSBhbm90aGVyIHJhdmVkIHRoYXQgdGhpcyBib29rIGlzIHRoZSAiQmlibGUgb2YgQy4iIFRoaXMgYm9vayBpcyByZWdhcmRlZCBieSBqdXN0IGFib3V0IGFueW9uZSBpbiB0aGUgQyBmaWVsZCBhcyB0aGUgY2Fub25pY2FsIHdvcmsgb24gdGhlIEMgbGFuZ3VhZ2UgYW5kIGlzIGVzc2VudGlhbCByZWFkaW5nIGZvciBDIHByb2dyYW1tZXJzLmRkAgUPDxYCHwAFBTQ0LjI1ZGQCBg8PFgIfAAUCMTJkZAIHDw8WAh8ABQVGYWxzZWRkAhIPZBYQZg8PFgIfAAUFU1czMzNkZAIBDw8WAh8ABQhTb2Z0d2FyZWRkAgIPDxYCHwAFDlByb2dyYW1taW5nIEMjZGQCAw8PFgIfAAUKSi4gTGliZXJ0eWRkAgQPZBYCAgEPZBYCAgEPDxYCHwAFgwZUaGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgQyMgd2FzIGJ1aWx0IHdpdGggdGhlIGZ1dHVyZSBvZiBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBpbiBtaW5kLiBQdXJzdWluZyB0aGF0IHZpc2lvbiwgQyMncyBkZXNpZ25lcnMgc3VjY2VlZGVkIGluIGNyZWF0aW5nIGEgc2FmZSwgc2ltcGxlLCBjb21wb25lbnQtYmFzZWQsIGhpZ2gtcGVyZm9ybWFuY2UgbGFuZ3VhZ2UgdGhhdCB3b3JrcyBlZmZlY3RpdmVseSB3aXRoIE1pY3Jvc29mdCdzIC5ORVQgRnJhbWV3b3JrLiBOb3cgdGhlIGZhdm9yZWQgbGFuZ3VhZ2UgYW1vbmcgdGhvc2UgcHJvZ3JhbW1pbmcgZm9yIHRoZSBNaWNyb3NvZnQgcGxhdGZvcm0sIEMjIGNvbnRpbnVlcyB0byBncm93IGluIHBvcHVsYXJpdHkgYXMgbW9yZSBkZXZlbG9wZXJzIGRpc2NvdmVyIGl0cyBzdHJlbmd0aCBhbmQgZmxleGliaWxpdHkuIEFuZCwgZnJvbSB0aGUgc3RhcnQsIEMjIGRldmVsb3BlcnMgaGF2ZSByZWxpZWQgb24gUHJvZ3JhbW1pbmcgQyMgYm90aCBhcyBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGxhbmd1YWdlIGFuZCBhIG1lYW5zIG9mIGZ1cnRoZXIgYnVpbGRpbmcgdGhlaXIgc2tpbGxzLiBUaGUgbmV3IGZvdXJ0aCBlZGl0aW9uIG9mIFByb2dyYW1taW5nIEMjLS10aGUgdG9wLXNlbGxpbmcgQyMgYm9vayBvbiB0aGUgbWFya2V0LS1oYXMgYmVlbiB1cGRhdGVkIHRvIHRoZSBDIyBJU08gc3RhbmRhcmQgYXMgd2VsbCBhcyBjaGFuZ2VzIHRvIE1pY3Jvc29mdCdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBsYW5ndWFnZS5kZAIFDw8WAh8ABQU0NC45NWRkAgYPDxYCHwAFATBkZAIHDw8WAh8ABQVGYWxzZWRkAhMPZBYQZg8PFgIfAAUFU1c0NDRkZAIBDw8WAh8ABQhTb2Z0d2FyZWRkAgIPDxYCHwAFD1Byb2dyYW1taW5nIFBIUGRkAgMPDxYCHwAFDVIuIEouIExlcmRvcmZkZAIED2QWAgIBD2QWAgIBDw8WAh8ABaoGUEhQIGlzIGEgc2ltcGxlIHlldCBwb3dlcmZ1bCBvcGVuIHNvdXJjZSBzY3JpcHRpbmcgbGFuZ3VhZ2UgZm9yIGNyZWF0aW5nIGR5bmFtaWMgd2ViIGNvbnRlbnQuIFRoZSBtaWxsaW9ucyBvZiB3ZWIgc2l0ZXMgcG93ZXJlZCBieSBQSFAgYXJlIHRlc3RhbWVudCB0byBpdHMgcG9wdWxhcml0eSBhbmQgZWFzZSBvZiB1c2UuIFBIUCBpcyB1c2VkIGJ5IGJvdGggcHJvZ3JhbW1lcnMsIHdobyBhcHByZWNpYXRlIGl0cyBmbGV4aWJpbGl0eSBhbmQgc3BlZWQsIGFuZCB3ZWIgZGVzaWduZXJzLCB3aG8gdmFsdWUgaXRzIGFjY2Vzc2liaWxpdHkgYW5kIGNvbnZlbmllbmNlLiBQcm9ncmFtbWluZyBQSFAgaXMgYW4gYXV0aG9yaXRhdGl2ZSBndWlkZSB0byBQSFAgNCwgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBsYW5ndWFnZSwgYW5kIGlzIGZpbGxlZCB3aXRoIHRoZSB1bmlxdWUga25vd2xlZGdlIG9mIHRoZSBjcmVhdG9yIG9mIFBIUCwgUmFzbXVzIExlcmRvcmYuIFRoaXMgYm9vayBleHBsYWlucyBQSFAgbGFuZ3VhZ2Ugc3ludGF4IGFuZCBwcm9ncmFtbWluZyB0ZWNobmlxdWVzIGluIGEgY2xlYXIgYW5kIGNvbmNpc2UgbWFubmVyLCB3aXRoIG51bWVyb3VzIGV4YW1wbGVzIHRoYXQgaWxsdXN0cmF0ZSBib3RoIGNvcnJlY3QgdXNhZ2UgYW5kIGNvbW1vbiBpZGlvbXMuIFRoZSBib29rIGFsc28gaW5jbHVkZXMgc3R5bGUgdGlwcyBhbmQgcHJhY3RpY2FsIHByb2dyYW1taW5nIGFkdmljZSB0aGF0IHdpbGwgaGVscCB5b3UgYmVjb21lIG5vdCBqdXN0IGEgUEhQIHByb2dyYW1tZXIsIGJ1dCBhIGdvb2QgUEhQIHByb2dyYW1tZXIuZGQCBQ8PFgIfAAUFMzkuOTVkZAIGDw8WAh8ABQIxN2RkAgcPDxYCHwAFBUZhbHNlZGQCFA9kFhBmDw8WAh8ABQVTVzU1NWRkAgEPDxYCHwAFCFNvZnR3YXJlZGQCAg8PFgIfAAUcVmlzdWFsIEJhc2ljLk5FVCBQcm9ncmFtbWluZ2RkAgMPDxYCHwAFB1AuIFZpY2tkZAIED2QWAgIBD2QWAgIBDw8WAh8ABYAEVmlzdWFsIEJhc2ljIC5ORVQgYnVpbGRzIG9uIHRoZSBsZWdlbmRhcnkgc2ltcGxpY2l0eSBvZiBWaXN1YWwgQmFzaWMgdG8gYWRkIHRoZSBpbW1lbnNlIHBvd2VyIG9mIHRydWUgb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5nIGFuZCBNaWNyb3NvZnQncyAuTkVUIEZyYW1ld29yay4gTm93LCBmb3IgdGhlIGZpcnN0IHRpbWUsIG9uZSBvZiB0aGUgbGFuZ3VhZ2UncyBhcmNoaXRlY3RzIGhhcyB3cml0dGVuIGEgZGVmaW5pdGl2ZSB0ZWNobmljYWwgcmVmZXJlbmNlIGFuZCB0dXRvcmlhbCBmb3IgVmlzdWFsIEJhc2ljIC5ORVQuIE1vdmluZyBmYXIgYmV5b25kIHRoZSBvbmxpbmUgZG9jdW1lbnRhdGlvbiwgUGF1bCBWaWNrIHByZXNlbnRzIHRoZSBsYW5ndWFnZSdzIGNvbXBsZXRlIHNwZWNpZmljYXRpb24sIGFsb25nIHdpdGggZGVzY3JpcHRpb25zLCByZWZlcmVuY2UgbWF0ZXJpYWxzLCBhbmQgY29kZSBzYW1wbGVzIGRpcmVjdCBmcm9tIHRoZSBWaXN1YWwgQmFzaWMgLk5FVCBkZXNpZ24gdGVhbS5kZAIFDw8WAh8ABQU0OS45OWRkAgYPDxYCHwAFAjEzZGQCBw8PFgIfAAUFRmFsc2VkZAIVD2QWEGYPDxYCHwAFBVNZMTExZGQCAQ8PFgIfAAUHU3lzdGVtc2RkAgIPDxYCHwAFGU9wZXJhdGluZyBTeXN0ZW0gQ29uY2VwdHNkZAIDDw8WAh8ABQ9BLiBTaWxiZXJzY2hhdHpkZAIED2QWAgIBD2QWAgIBDw8WAh8ABeYDQnkgc3RheWluZyBjdXJyZW50LCByZW1haW5pbmcgcmVsZXZhbnQsIGFuZCBhZGFwdGluZyB0byBlbWVyZ2luZyBjb3Vyc2UgbmVlZHMsIHRoaXMgdGV4dCBoYXMgY29udGludWVkIHRvIGRlZmluZSB0aGUgb3BlcmF0aW5nIHN5c3RlbXMgY291cnNlLiBUaGlzIFNldmVudGggRWRpdGlvbiBub3Qgb25seSBwcmVzZW50cyB0aGUgbGF0ZXN0IGFuZCBtb3N0IHJlbGV2YW50IHN5c3RlbXMsIGl0IGFsc28gZGlncyBkZWVwZXIgdG8gdW5jb3ZlciB0aG9zZSBmdW5kYW1lbnRhbCBjb25jZXB0cyB0aGF0IGhhdmUgcmVtYWluZWQgY29uc3RhbnQgdGhyb3VnaG91dCB0aGUgZXZvbHV0aW9uIG9mIHRvZGF5J3Mgb3BlcmF0aW5nIHN5c3RlbXMuIFdpdGggdGhpcyBzdHJvbmcgY29uY2VwdHVhbCBmb3VuZGF0aW9uIGluIHBsYWNlLCBzdHVkZW50cyBjYW4gbW9yZSBlYXNpbHkgdW5kZXJzdGFuZCB0aGUgZGV0YWlscyByZWxhdGVkIHRvIHNwZWNpZmljIHN5c3RlbXMuZGQCBQ8PFgIfAAUFOTUuNzVkZAIGDw8WAh8ABQExZGQCBw8PFgIfAAUFRmFsc2VkZAIWD2QWEGYPDxYCHwAFBVNZMjIyZGQCAQ8PFgIfAAUHU3lzdGVtc2RkAgIPDxYCHwAFGVRoZSBVTklYIE9wZXJhdGluZyBTeXN0ZW1kZAIDDw8WAh8ABQpKLiBELiBQZWVrZGQCBA9kFgICAQ9kFgICAQ8PFgIfAAXcA0xlYXJuaW5nIHRoZSBVbml4IE9wZXJhdGluZyBTeXN0ZW0gaXMgYSBoYW5keSBib29rIGZvciBzb21lb25lIGp1c3Qgc3RhcnRpbmcgd2l0aCBVbml4IG9yIExpbnV4LCBhbmQgaXQncyBhbiBpZGVhbCBwcmltZXIgZm9yIE1hYyBhbmQgUEMgdXNlcnMgb2YgdGhlIEludGVybmV0IHdobyBuZWVkIHRvIGtub3cgYSBsaXR0bGUgYWJvdXQgVW5peCBvbiB0aGUgc3lzdGVtcyB0aGV5IHZpc2l0LiBUaGUgZmlmdGggZWRpdGlvbiBpcyB0aGUgbW9zdCBlZmZlY3RpdmUgaW50cm9kdWN0aW9uIHRvIFVuaXggaW4gcHJpbnQsIGNvdmVyaW5nIEludGVybmV0IHVzYWdlIGZvciBlbWFpbCwgZmlsZSB0cmFuc2ZlcnMsIHdlYiBicm93c2luZywgYW5kIG1hbnkgbWFqb3IgYW5kIG1pbm9yIHVwZGF0ZXMgdG8gaGVscCB0aGUgcmVhZGVyIG5hdmlnYXRlIHRoZSBldmVyLWV4cGFuZGluZyBjYXBhYmlsaXRpZXMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0uZGQCBQ8PFgIfAAUFMTkuOTVkZAIGDw8WAh8ABQIxMmRkAgcPDxYCHwAFBFRydWVkZAIXD2QWEGYPDxYCHwAFBVNZMzMzZGQCAQ8PFgIfAAUHU3lzdGVtc2RkAgIPDxYCHwAFE1dpbmRvd3MgU2VydmVyIDIwMDNkZAIDDw8WAh8ABQxXLiBSLiBTdGFuZWtkZAIED2QWAgIBD2QWAgIBDw8WAh8ABYoESGVyZSdzIHRoZSBwcmFjdGljYWwsIHBvY2tldC1zaXplZCByZWZlcmVuY2UgZm9yIElUIHByb2Zlc3Npb25hbHMgc3VwcG9ydGluZyBXaW5kb3dzIC5ORVQgU2VydmVyLiBEZXNpZ25lZCBmb3IgcXVpY2sgcmVmZXJlbmNpbmcsIHRoaXMgcG9ydGFibGUgZ3VpZGUgY292ZXJzIGFsbCB0aGUgZXNzZW50aWFscyBmb3IgcGVyZm9ybWluZyBldmVyeWRheSBzeXN0ZW0tYWRtaW5pc3RyYXRpb24gdGFza3MuIFRvcGljcyBpbmNsdWRlIG1hbmFnaW5nIHdvcmtzdGF0aW9ucyBhbmQgc2VydmVycywgdXNpbmcgTWljcm9zb2Z0IEFjdGl2ZSBEaXJlY3Rvcnkgc2VydmljZXMsIGNyZWF0aW5nIGFuZCBhZG1pbmlzdGVyaW5nIHVzZXIgYW5kIGdyb3VwIGFjY291bnRzLCBtYW5hZ2luZyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIGRhdGEgc2VjdXJpdHkgYW5kIGF1ZGl0aW5nLCBkYXRhIGJhY2stdXAgYW5kIHJlY292ZXJ5LCBuZXR3b3JrIGFkbWluaXN0cmF0aW9uIHVzaW5nIFRDUC9JUCwgV0lOUywgYW5kIEROUywgYW5kIG1vcmUuZGQCBQ8PFgIfAAUFMjkuOTlkZAIGDw8WAh8ABQIyNWRkAgcPDxYCHwAFBUZhbHNlZGQCGA9kFhBmDw8WAh8ABQVTWTQ0NGRkAgEPDxYCHwAFB1N5c3RlbXNkZAICDw8WAh8ABRNMaW51eCBpbiBhIE51dHNoZWxsZGQCAw8PFgIfAAUKUy4gRmlnZ2luc2RkAgQPZBYCAgEPZBYCAgEPDxYCHwAF1QRXaGV0aGVyIHlvdSdyZSB1c2luZyBMaW51eCBmb3IgcGVyc29uYWwgc29mdHdhcmUgcHJvamVjdHMsIGZvciBhIHNtYWxsIG9mZmljZSBvciBob21lIG9mZmljZSwgdG8gcHJvdmlkZSBzZXJ2aWNlcyB0byBhIHNtYWxsIGdyb3VwIG9mIGNvbGxlYWd1ZXMsIG9yIHRvIGFkbWluaXN0ZXIgYSBzaXRlIHJlc3BvbnNpYmxlIGZvciBtaWxsaW9ucyBvZiBlbWFpbCBhbmQgd2ViIGNvbm5lY3Rpb25zIGVhY2ggZGF5LCB5b3UgbmVlZCBxdWljayBhY2Nlc3MgdG8gaW5mb3JtYXRpb24gb24gYSB3aWRlIHJhbmdlIG9mIHRvb2xzLiBUaGlzIGJvb2sgY292ZXJzIGFsbCBhc3BlY3RzIG9mIGFkbWluaXN0ZXJpbmcgYW5kIG1ha2luZyBlZmZlY3RpdmUgdXNlIG9mIExpbnV4IHN5c3RlbXMuIEFtb25nIGl0cyB0b3BpY3MgYXJlIGJvb3RpbmcsIHBhY2thZ2UgbWFuYWdlbWVudCwgYW5kIHJldmlzaW9uIGNvbnRyb2wuIEJ1dCBmb3JlbW9zdCBpbiBMaW51eCBpbiBhIE51dHNoZWxsIGFyZSB0aGUgdXRpbGl0aWVzIGFuZCBjb21tYW5kcyB0aGF0IG1ha2UgTGludXggb25lIG9mIHRoZSBtb3N0IHBvd2VyZnVsIGFuZCBmbGV4aWJsZSBzeXN0ZW1zIGF2YWlsYWJsZS5kZAIFDw8WAh8ABQU0NC45NWRkAgYPDxYCHwAFAjE0ZGQCBw8PFgIfAAUFRmFsc2VkZAIZD2QWEGYPDxYCHwAFBVNZNTU1ZGQCAQ8PFgIfAAUHU3lzdGVtc2RkAgIPDxYCHwAFGk1hc3RlcmluZyBBY3RpdmUgRGlyZWN0b3J5ZGQCAw8PFgIfAAUKUi4gUi4gS2luZ2RkAgQPZBYCAgEPZBYCAgEPDxYCHwAF0wRBY3RpdmUgRGlyZWN0b3J5IHJlcHJlc2VudHMgYW4gZW5vcm1vdXMgYWR2YW5jZSBpbiBuZXR3b3JrIGFkbWluaXN0cmF0aW9uLiBJdCBwcm92aWRlcyBhIHZhc3Qgc2V0IG9mIHBvd2VyZnVsIHRvb2xzIGFuZCB0ZWNobm9sb2dpZXMgZm9yIG1hbmFnaW5nIGEgbmV0d29yayB3aXRoaW4gYSBuYXRpdmUgV2luZG93cyBlbnZpcm9ubWVudC4gTWFzdGVyaW5nIEFjdGl2ZSBEaXJlY3RvcnkgZm9yIFdpbmRvd3MgU2VydmVyIDIwMDMgaXMgdGhlIHJlc291cmNlIHlvdSBuZWVkIHRvIHRha2UgZnVsbCBhZHZhbnRhZ2Ugb2YgYWxsIGl0IGhhcyB0byBvZmZlci4gWW91IGdldCBhIHNvdW5kIGludHJvZHVjdGlvbiB0byBuZXR3b3JrIGRpcmVjdG9yeSBzZXJ2aWNlcywgdGhlbiBkZXRhaWxlZCwgcHJhY3RpY2FsIGluc3RydWN0aW9uIGluIHRoZSB3b3JrIG9mIGltcGxlbWVudGluZyBBY3RpdmUgRGlyZWN0b3J5IGFuZCB1c2luZyBhbGwgb2YgaXRzIHRvb2xzLiBUaGlzIGVkaXRpb24gaGFzIGJlZW4gY29tcGxldGVseSB1cGRhdGVkIHRvIGFkZHJlc3MgZmVhdHVyZXMgbmV3IHRvIEFjdGl2ZSBEaXJlY3RvcnkgZm9yIFdpbmRvd3MgU2VydmVyIDIwMDMuZGQCBQ8PFgIfAAUFNDkuOTlkZAIGDw8WAh8ABQE4ZGQCBw8PFgIfAAUFRmFsc2VkZAIaD2QWEGYPDxYCHwAFBVdCMTExZGQCAQ8PFgIfAAUDV2ViZGQCAg8PFgIfAAUOQWpheCBpbiBBY3Rpb25kZAIDDw8WAh8ABQhELiBDcmFuZWRkAgQPZBYCAgEPZBYCAgEPDxYCHwAF1ARBamF4IGluIEFjdGlvbiBoZWxwcyB5b3UgaW1wbGVtZW50IHRoYXQgdGhpbmtpbmctLWl0IGV4cGxhaW5zIGhvdyB0byBkaXN0cmlidXRlIHRoZSBhcHBsaWNhdGlvbiBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIgd2hpbGUgcmV0YWluaW5nIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIHN5c3RlbS4gWW91IHdpbGwgbGVhcm4gaG93IHRvIGVuc3VyZSB5b3VyIGFwcCBpcyBmbGV4aWJsZSBhbmQgbWFpbnRhaW5hYmxlLCBhbmQgaG93IGdvb2QsIHN0cnVjdHVyZWQgZGVzaWduIGNhbiBoZWxwIGF2b2lkIHByb2JsZW1zIGxpa2UgYnJvd3NlciBpbmNvbXBhdGliaWxpdGllcy4gQWxvbmcgdGhlIHdheSBpdCBoZWxwcyB5b3UgdW5sZWFybiBtYW55IG9sZCBjb2RpbmcgaGFiaXRzLiBBYm92ZSBhbGwsIGl0IG9wZW5zIHlvdXIgbWluZCB0byB0aGUgbWFueSBhZHZhbnRhZ2VzIGdhaW5lZCBieSBwbGFjaW5nIG11Y2ggb2YgdGhlIHByb2Nlc3NpbmcgaW4gdGhlIGJyb3dzZXIuIElmIHlvdSBhcmUgYSB3ZWIgZGV2ZWxvcGVyIHdobyBoYXMgcHJpb3IgZXhwZXJpZW5jZSB3aXRoIHdlYiB0ZWNobm9sb2dpZXMsIHRoaXMgYm9vayBpcyBmb3IgeW91LmRkAgUPDxYCHwAFBTIyLjY3ZGQCBg8PFgIfAAUCMTRkZAIHDw8WAh8ABQRUcnVlZGQCGw9kFhBmDw8WAh8ABQVXQjIyMmRkAgEPDxYCHwAFA1dlYmRkAgIPDxYCHwAFGFByb2Zlc3Npb25hbCBBU1AuTkVUIDIuMGRkAgMPDxYCHwAFCEIuIEV2amVuZGQCBA9kFgICAQ9kFgICAQ8PFgIfAAW4BUFTUC5ORVQgYWxsb3dzIHdlYiBzaXRlcyB0byBkaXNwbGF5IHVuaXF1ZSBwYWdlcyBmb3IgZWFjaCB2aXNpdG9yIHJhdGhlciB0aGFuIHNob3cgdGhlIHNhbWUgc3RhdGljIEhUTUwgcGFnZXMuIFRoZSByZWxlYXNlIG9mIEFTUC5ORVQgMi4wIGlzIGEgcmV2b2x1dGlvbmFyeSBsZWFwIGZvcndhcmQgaW4gdGhlIGFyZWEgb2Ygd2ViIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50LiBJdCBicmluZ3Mgd2l0aCBpdCBhIHdlYWx0aCBvZiBuZXcgYW5kIGV4Y2l0aW5nIGJ1aWx0LWluIGZ1bmN0aW9ucyB0aGF0IHJlZHVjZSB0aGUgYW1vdW50IG9mIGNvZGUgeW91J2xsIG5lZWQgdG8gd3JpdGUgZm9yIGV2ZW4gdGhlIG1vc3QgY29tbW9uIGFwcGxpY2F0aW9ucy4gV2l0aCBtb3JlIHRoYW4gNTAgbmV3IHNlcnZlciBjb250cm9scywgdGhlIG51bWJlciBvZiBjbGFzc2VzIGluc2lkZSBBU1AuTkVUIDIuMCBoYXMgbW9yZSB0aGFuIGRvdWJsZWQsIGFuZCwgaW4gbWFueSBjYXNlcywgdGhlIGNoYW5nZXMgaW4gdGhpcyBuZXcgdmVyc2lvbiBhcmUgZHJhbWF0aWMuIFRoaXMgYm9vayB3aWxsIGFsZXJ0IHlvdSB0byBldmVyeSBuZXcgZmVhdHVyZSBhbmQgY2FwYWJpbGl0eSB0aGF0IEFTUC5ORVQgMi4wIHByb3ZpZGVzIHNvIHRoYXQgeW91J2xsIGJlIHByZXBhcmVkIHRvIHB1dCB0aGVzZSBuZXcgdGVjaG5vbG9naWVzIGludG8gYWN0aW9uLmRkAgUPDxYCHwAFBTMyLjk5ZGQCBg8PFgIfAAUCMjFkZAIHDw8WAh8ABQVGYWxzZWRkAhwPZBYQZg8PFgIfAAUFV0IzMzNkZAIBDw8WAh8ABQNXZWJkZAICDw8WAh8ABRZDYXNjYWRpbmcgU3R5bGUgU2hlZXRzZGQCAw8PFgIfAAULRS4gQS4gTWV5ZXJkZAIED2QWAgIBD2QWAgIBDw8WAh8ABYEFVGhpcyBzZWNvbmQgZWRpdGlvbiBvZiBDYXNjYWRpbmcgU3R5bGUgU2hlZXRzOiBUaGUgRGVmaW5pdGl2ZSBHdWlkZSBjb21wbGV0ZXMgdGhlIGRpc2N1c3Npb24gb2YgQ1NTMiwgZXhwbG9yZXMgQ1NTMi4xLCBhbmQgaW50cm9kdWNlcyBlbWVyZ2luZyBlbGVtZW50cyBvZiBDU1MzLiBFcmljIEEuIE1leWVyIHVzZXMgaGlzIHRyYWRlbWFyayB3aXQgYW5kIGh1bW9yIHRvIGV4cGxvcmUgcHJvcGVydGllcywgdGFncywgYXR0cmlidXRlcywgYW5kIGltcGxlbWVudGF0aW9uLCBhcyB3ZWxsIGFzIHJlYWwtbGlmZSBpc3N1ZXMsIHN1Y2ggYXMgYnJvd3NlciBzdXBwb3J0IGFuZCBkZXNpZ24gZ3VpZGVsaW5lcy4gVGhpcyBib29rIGFkZHJlc3NlcyBleHBlcmllbmNlZCB3ZWIgYXV0aG9ycyBhbmQgc2NyaXB0ZXJzLCBhcyB3ZWxsIGFzIG5vdmljZSBhdXRob3JzIHdobyBtYXkgYmUgaW1wbGVtZW50aW5nIENTUyBmcm9tIHNjcmF0Y2guIENhc2NhZGluZyBTdHlsZSBTaGVldHM6IFRoZSBEZWZpbml0aXZlIEd1aWRlLCBTZWNvbmQgRWRpdGlvbiBhbHNvIGluY2x1ZGVzIGEgbmV3IGZvcmV3b3JkIGJ5IE1vbGx5IEhvbHpzY2hsYWcsIGEgc3RlZXJpbmcgY29tbWl0dGVlIG1lbWJlciBmb3IgdGhlIFdlYiBTdGFuZGFyZHMgUHJvamVjdC5kZAIFDw8WAh8ABQUzOS45NWRkAgYPDxYCHwAFATZkZAIHDw8WAh8ABQVGYWxzZWRkAh0PZBYQZg8PFgIfAAUFV0I0NDRkZAIBDw8WAh8ABQNXZWJkZAICDw8WAh8ABQ1ET00gU2NyaXB0aW5nZGQCAw8PFgIfAAUISi4gS2VpdGhkZAIED2QWAgIBD2QWAgIBDw8WAh8ABd0GVGhlcmUgYXJlIHRocmVlIG1haW4gdGVjaG5vbG9naWVzIG1hcnJpZWQgdG9nZXRoZXIgdG8gY3JlYXRlIHVzYWJsZSwgc3RhbmRhcmRzLWNvbXBsaWFudCB3ZWIgZGVzaWduczogWEhUTUwgZm9yIGRhdGEgc3RydWN0dXJlLCBDYXNjYWRpbmcgU3R5bGUgU2hlZXRzIGZvciBzdHlsaW5nIHlvdXIgZGF0YSwgYW5kIEphdmFTY3JpcHQgZm9yIGFkZGluZyBkeW5hbWljIGVmZmVjdHMgYW5kIG1hbmlwdWxhdGluZyBzdHJ1Y3R1cmUgb24gdGhlIGZseSB1c2luZyB0aGUgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLiBUaGlzIGJvb2sgaXMgYWJvdXQgdGhlIGxhdHRlciBvZiB0aGUgdGhyZWUuIERPTSBTY3JpcHRpbmc6IFdlYiBEZXNpZ24gd2l0aCBKYXZhU2NyaXB0IGFuZCB0aGUgRG9jdW1lbnQgT2JqZWN0IE1vZGVsIGdpdmVzIHlvdSBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHN0YXJ0IHVzaW5nIEphdmFTY3JpcHQgYW5kIHRoZSBEb2N1bWVudCBPYmplY3QgTW9kZWwgdG8gZW5oYW5jZSB5b3VyIHdlYiBwYWdlcyB3aXRoIGNsaWVudC1zaWRlIGR5bmFtaWMgZWZmZWN0cy4gSmVybWV5IHN0YXJ0cyBvZmYgYnkgZ2l2aW5nIHlvdSBhIGJhc2ljIGNyYXNoIGNvdXJzZSBpbiBKYXZhU2NyaXB0IGFuZCB0aGUgRE9NLCB0aGVuIG1vdmVzIG9uIHRvIHByb3ZpZGUgeW91IHdpdGggc2V2ZXJhbCByZWFsIHdvcmxkIGV4YW1wbGVzIGJ1aWx0IHVwIGZyb20gc2NyYXRjaCBpbmNsdWRpbmcgZHluYW1pYyBpbWFnZSBnYWxsZXJpZXMgYW5kIGR5bmFtaWMgbWVudXMsIGFuZCBzaG93cyB5b3UgaG93IHRvIG1hbmlwdWxhdGUgd2ViIHBhZ2Ugc3R5bGUgdXNpbmcgdGhlIENTUyBET00sIGFuZCBjcmVhdGUgbWFya3VwIG9uIHRoZSBmbHkuZGQCBQ8PFgIfAAUFMjMuMDlkZAIGDw8WAh8ABQE4ZGQCBw8PFgIfAAUEVHJ1ZWRkAh4PZBYQZg8PFgIfAAUFV0I1NTVkZAIBDw8WAh8ABQNXZWJkZAICDw8WAh8ABRVNaWNyb3NvZnQgQVNQLk5FVCAyLjBkZAIDDw8WAh8ABQtELiBFc3Bvc2l0b2RkAgQPZBYCAgEPZBYCAgEPDxYCHwAFvgVHZXQgYW4gZXhwZXJ0LCBkZXZlbG9wZXItZm9jdXNlZCBpbnRyb2R1Y3Rpb24gdG8gdGhlIG5leHQgYmlnIGlubm92YXRpb24gaW4gQVNQLk5FVCBXZWIgcHJvZ3JhbW1pbmcuIFByb2dyYW1taW5nIGF1dGhvcml0eSBEaW5vIEVzcG9zaXRvIHRha2VzIHlvdSBpbnNpZGUgQVNQLk5FVCAyLjAgdGVjaG5vbG9neSwgZXhwbGFpbmluZyBob3cgaXRzIHVwZGF0ZWQsIG1vcmUgcG93ZXJmdWwgaW5mcmFzdHJ1Y3R1cmUgYWxsb3dzIHlvdSB0byBjcmVhdGUgcmljaCBhbmQgZHluYW1pYyBXZWIgYXBwbGljYXRpb25zIHF1aWNrbHkgYW5kIHdpdGggbGVzcyBjb2RlLiBFc3Bvc2l0byBleGFtaW5lcyBob3cgZGV2ZWxvcGVyIGJlc3QgcHJhY3RpY2VzIHdpdGggQVNQLk5FVCAxLnggYW5kIGNsYXNzaWMgQVNQIGhlbHBlZCBkcml2ZSB0aGUgYXJjaGl0ZWN0dXJhbCBjaGFuZ2VzIGluIEFTUC5ORVQgMi4wLCBhbmQgaGUgb2ZmZXJzIHByZXJlbGVhc2UgaW5zaWdodHMgaW50byBpdHMgZmluYWwgYXJjaGl0ZWN0dXJlLiBXaXRoIGNvbmNpc2UgY29uY2VwdCBhbmQgZmVhdHVyZSBleHBsYW5hdGlvbnMgYW5kIG1vcmUgdGhhbiA3MCBmdWxseSBmdW5jdGlvbmFsIGV4YW1wbGVzLCB0aGlzIGNvbXByZWhlbnNpdmUgaW50cm9kdWN0aW9uIGdpdmVzIHlvdSBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIGRpZyBpbnRvIEFTUC5ORVQgMi4wIHJpZ2h0IG5vdy5kZAIFDw8WAh8ABQUyOS45OWRkAgYPDxYCHwAFAjEyZGQCBw8PFgIfAAUFRmFsc2VkZAIfDw8WAh8HaGRkAhgPPCsACQEADxYEHghEYXRhS2V5cxYAHwICHmQWPGYPZBYEAgEPDxYCHghJbWFnZVVybAUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9EQjExMS5qcGdkZAICDxUBBURCMTExZAIBD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL0RCMjIyLmpwZ2RkAgIPFQEFREIyMjJkAgIPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvREIzMzMuanBnZGQCAg8VAQVEQjMzM2QCAw9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9EQjQ0NC5qcGdkZAICDxUBBURCNDQ0ZAIED2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL0RCNTU1LmpwZ2RkAgIPFQEFREI1NTVkAgUPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvR1IxMTEuanBnZGQCAg8VAQVHUjExMWQCBg9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9HUjIyMi5qcGdkZAICDxUBBUdSMjIyZAIHD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL0dSMzMzLmpwZ2RkAgIPFQEFR1IzMzNkAggPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvR1I0NDQuanBnZGQCAg8VAQVHUjQ0NGQCCQ9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9HUjU1NS5qcGdkZAICDxUBBUdSNTU1ZAIKD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL0hXMTExLmpwZ2RkAgIPFQEFSFcxMTFkAgsPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvSFcyMjIuanBnZGQCAg8VAQVIVzIyMmQCDA9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9IVzMzMy5qcGdkZAICDxUBBUhXMzMzZAIND2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL0hXNDQ0LmpwZ2RkAgIPFQEFSFc0NDRkAg4PZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvSFc1NTUuanBnZGQCAg8VAQVIVzU1NWQCDw9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9TVzExMS5qcGdkZAICDxUBBVNXMTExZAIQD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL1NXMjIyLmpwZ2RkAgIPFQEFU1cyMjJkAhEPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvU1czMzMuanBnZGQCAg8VAQVTVzMzM2QCEg9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9TVzQ0NC5qcGdkZAICDxUBBVNXNDQ0ZAITD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL1NXNTU1LmpwZ2RkAgIPFQEFU1c1NTVkAhQPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvU1kxMTEuanBnZGQCAg8VAQVTWTExMWQCFQ9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9TWTIyMi5qcGdkZAICDxUBBVNZMjIyZAIWD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL1NZMzMzLmpwZ2RkAgIPFQEFU1kzMzNkAhcPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvU1k0NDQuanBnZGQCAg8VAQVTWTQ0NGQCGA9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9TWTU1NS5qcGdkZAICDxUBBVNZNTU1ZAIZD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL1dCMTExLmpwZ2RkAgIPFQEFV0IxMTFkAhoPZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvV0IyMjIuanBnZGQCAg8VAQVXQjIyMmQCGw9kFgQCAQ8PFgIfCgUjLi4vZUNvbW1lcmNlL0Jvb2tQaWN0dXJlcy9XQjMzMy5qcGdkZAICDxUBBVdCMzMzZAIcD2QWBAIBDw8WAh8KBSMuLi9lQ29tbWVyY2UvQm9va1BpY3R1cmVzL1dCNDQ0LmpwZ2RkAgIPFQEFV0I0NDRkAh0PZBYEAgEPDxYCHwoFIy4uL2VDb21tZXJjZS9Cb29rUGljdHVyZXMvV0I1NTUuanBnZGQCAg8VAQVXQjU1NWQYAgUIQm9va0dyaWQPPCsACQEIAgFkBQlCb29rR3JpZDMPPCsACQEIAgFkTWixh0tLU9xI2lFJcOINC3aEOGU=" name="__VIEWSTATE" type="hidden"> </div><input id="PageScroll" style="visibility: hidden; position: absolute;" name="PageScroll">
<div class="body">
<div class="divhead">Data-Driven Web Pages</div>
<p>The most common purpose of a Web page is to present information content. This
information may be for personal promotion, commercial gain, public service, or
for any number of public or private purposes. Irrespective of the goal to be
achieved, the purpose of the page remains to supply accurate and timely
information about the individual or enterprise. The challenge in Web-page
design, then, is to create pages that reflect the most accurate and most current
information available, and to do so in the most efficient and cost-effective
manner possible.</p>
<p class="head2">Producing Web Page Content</p>
<p>Information displayed on a Web page comes from four basic sources. First, it
can be fixed content that is hard-coded on the page using standard XHTML tags to
structure and format it for presentation. This is the conventional way to
produce Web pages, whether using drag-and-drop page-creation software or by hand
coding text and XHTML with simple text editors. Second, information can be
produced automatically by browser or server scripts. This information can be
fixed, unchanging content, or it can be generated by built-in language functions
or server objects. Third, displayed information can be script generated from
input data supplied by the user. Raw data from the outside is manipulated by
internal scripts to generate new information for page display. Lastly, page
information can be drawn from external data sources such as files and databases.
In this case, current information from personal, corporate, or public data
stores is retrieved for display at the exact moment the Web page is
requested.</p>
<p>The main goal with ASP.NET pages is to reduce or eliminate much of the
hard-coded information that appears on the page. As noted, intermixing
information content with XHTML tags makes for Web pages that are difficult to
maintain and to keep current. Updating page content involves manual editing of
the page, often requiring the time and effort equal to that needed to create the
page in the first place. It is costly, time consuming, and error prone. Worse,
it is often the case that manually created and edited information is always a
step or two behind the actual information of the moment.</p>
<p>The ideal situation is to maintain information <i>apart</i> from the Web page
that displays it. The Web page itself contains only content "placeholders" along
with surrounding XHTML for formatting; the content to populate these
placeholders is external to the page. When a Web page is requested, this content
is "poured" into page areas reserved for its display. The page is produced
dynamically, automatically created anew each time the page is requested and
always containing the latest, real-time information provided by these external
data sources.</p>
<p>Realistically, Web page content comes from a combination of hard-coded and
dynamically produced information. Keep in mind, though, that where possible, a
Web page should generate its <i>own</i> content rather than the imposed
hand-coded content of the developer.</p>
<p class="head2">Hard-Coded Text and XHTML</p>
<p>The standard way to present Web page information is through hard-coded text
surrounded by XHTML tags to format it for presentation. As needed or preferred,
graphic images can be added to the page by linking to picture files. The output
shown below is produced in this conventional fashion.</p>
<div class="page" style="height: 200px;">
<h3>Hard-Coded Page Output</h3>
<p>This page is produced by coding text characters on the page and surrounding
them with XHTML tags to style them for presentation. When this content changes,
the page itself must be edited to display new information.</p></div>
<div class="figure"><b>Figure 3-1. </b>Page output produced by hard-coded text and
XHTML.</div><pre class="divcode"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Hard-Coded Page Output</title>
</head>
<body>
<h3>Hard-Coded Page Output</h3>
<p>This page is produced by coding text characters on the page and
surrounding them with XHTML tags to style them for presentation. When
this content changes, the page itself must be edited to display new
information.</p>
</body>
</html>
</pre>
<div class="listing"><b>Listing 3-1. </b>Producing hard-coded page output.</div>
<p>Although no information is produced by ASP.NET features, you still can name
the page with the <span class="code">.aspx</span> suffix. It is a good idea to do
this. Later you may need to return to this page to add scripts and server
controls. It will not be necessary to rename the page when this occurs.</p>
<p class="head2">Scripted Text and XHTML</p>
<p>Page information can be generated by scripts that write fixed or variable
content to the page. Information to be written each time the page is loaded is
coded in the <span class="code">Page_Load</span> subprogram. Information to be
written in response to user requests is coded in subprograms that are triggered
by server controls. In the following example, a <span class="code">Page_Load</span> script produces output by writing text characters,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -