|
From: <jue...@we...> - 2003-10-06 06:50:33
|
Um9kLCBEbWl0cml5LA0KIA0KSSBhZ3JlZSBpbiB0ZXJtcyBvZiBTdG9yZSBzdXBwb3J0IC0gbGV0 J3MgY29uY2VudHJhdGUgb24gbWFpbCBzZW5kaW5nIGZvciBub3cuIEkgYWxzbyB0ZW5kIHRvIGFn cmVlIGluIHRlcm1zIG9mIGFic3RyYWN0aW5nIEphdmFNYWlsIGZvciBzaW1wbGUgZW5vdWdoIG1h aWwgc2VuZGluZyByZXF1aXJlbWVudHMuIEkgZm9yZ290IHRoYXQgU2Vzc2lvbiBpcyBmaW5hbCwg QlRXLiBKYXZhTWFpbCBpcyByZWFsbHkgbWVzc3kgLSBBUEkgZGVzaWduIHNlZW1zIHRvIGJlIGFu IGFydC4uLiA7LSkNCiANClNvIGxldCBtZSBzdWdnZXN0IGEgbWVldC1pbi10aGUtbWlkZGxlIHNv bHV0aW9uOiBBcyBJJ3ZlIGluaXRpYWxseSBpbnRlbmRlZCwgbGV0J3Mgc2VwYXJhdGUgdHJhbnNw b3J0LXJlbGF0ZWQgKGhvc3QsIHVzZXJuYW1lLCBwYXNzd29yZCkgYW5kIG1lc3NhZ2UtcmVsYXRl ZCBwcm9wZXJ0aWVzLCBpLmUuIGRyb3AgTWFpbFNldHRpbmdzIGluIGl0cyBjdXJyZW50IGZvcm0s IG1vdmUgdHJhbnNwb3J0IHNldHRpbmdzIHRvIHRoZSBNYWlsU2VuZGVyIGltcGxlbWVudGF0aW9u LCBhbmQgaW50cm9kdWNlIGEgU2ltcGxlTWVzc2FnZSBjbGFzcy4NCiANCkFzIHRoZSBlZmZlY3Qg b2YgdGhlIGN1cnJlbnQgTWFpbFRlbXBsYXRlL01haWxDYWxsYmFjayBjb21ibyAob3ZlcnJpZGlu ZyBjZXJ0YWluIHByZS1kZWZpbmVkIG1haWwgc2V0dGluZ3MpIGNhbiBiZSBhY2hpZXZlZCB3aXRo IHVzaW5nIGEgU2ltcGxlTWVzc2FnZSBjb3B5IGNvbnN0cnVjdG9yLCBJIHN1Z2dlc3QgdG8gZHJv cCBNYWlsVGVtcGxhdGUgYW5kIE1haWxDYWxsYmFjay4gVGhpcyBsZWF2ZXMgU2ltcGxlTWVzc2Fn ZSwgTWFpbFNlbmRlciwgYW5kIGEgSmF2YU1haWxTZW5kZXIgaW1wbGVtZW50YXRpb24uDQogDQpU byBvZmZlciBtb3JlIHBvd2VyIGZvciB0aG9zZSB3aG8gbmVlZCBpdCwgSSBzdWdnZXN0IHRvIG9m ZmVyIGFkZGl0aW9uYWwgbWV0aG9kcyBpbiBKYXZhTWFpbFNlbmRlci4gV2hvZXZlciB3YW50cyB0 byB1c2UgdGhvc2Ugc2hvdWxkIGNhc3QgdG8gSmF2YU1haWxTZW5kZXIsIHJlc3BlY3RpdmVseSBv ZmZlciBhIGJlYW4gcHJvcGVydHkgb2YgdHlwZSBKYXZhTWFpbFNlbmRlciB0byBiZSBwb3B1bGF0 ZWQgYnkgYSBiZWFuIHJlZmVyZW5jZS4gQWxsIG90aGVyIGFwcGxpY2F0aW9uIGNsYXNzZXMgY2Fu IHdvcmsgd2l0aCB0aGUgTWFpbFNlbmRlciBpbnRlcmZhY2UuDQogDQpNYWlsU2VuZGVyIGludGVy ZmFjZSB1c2VycyBhcmUgZWFzaWx5IHRlc3RhYmxlIHdpdGggYSBtb2NrIE1haWxTZW5kZXIgaW1w bGVtZW50YXRpb24uIEl0IHdpbGwgYmUgYSBiaXQgaGFyZGVyIHdpdGggSmF2YU1haWxTZW5kZXIg dXNlcnMsIGJ1dCBzdGlsbCBwb3NzaWJsZTogQSBtb2NrIEphdmFNYWlsU2VuZGVyIHN1YmNsYXNz IHRoYXQgb3ZlcnJpZGVzIHNlbmQoTWltZU1lc3NhZ2UpIGFuZCBzZW5kKE1pbWVNZXNzYWdlW10p IHNob3VsZCBhbGxvdyBmb3IgZWFzeSB0ZXN0aW5nIHRvby4gTm90ZSB0aGF0IGEgY29ubmVjdGlv biB0byB0aGUgbWFpbCBzZXJ2ZXIgaXMgb25seSByZXF1aXJlZCBmb3IgYWN0dWFsIG1haWwgc2Vu ZGluZywgbm90IGZvciBTZXNzaW9uIHNldHVwLg0KIA0KcHVibGljIGNsYXNzIFNpbXBsZU1lc3Nh Z2V7DQogIHByaXZhdGUgU3RyaW5nIGZyb207DQogIHByaXZhdGUgU3RyaW5nIHRvOw0KICBwcml2 YXRlIFN0cmluZ1tdIGNjOw0KICBwcml2YXRlIFN0cmluZyBzdWJqZWN0Ow0KICBwcml2YXRlIFN0 cmluZyB0ZXh0Ow0KICANCiAgcHVibGljIFNpbXBsZU1lc3NhZ2UoU2ltcGxlTWVzc2FnZSBvcmln aW5hbCkgew0KICAgIC8vIGNvcHkgY29uc3RydWN0b3INCiAgfQ0KIA0KICAoZ2V0dGVycyBhbmQg c2V0dGVycykNCn0NCiANCnB1YmxpYyBpbnRlcmZhY2UgTWFpbFNlbmRlciB7DQogIHZvaWQgc2Vu ZChTaW1wbGVNZXNzYWdlIG1lc3NhZ2UpOw0KfQ0KIA0KcHVibGljIGNsYXNzIEphdmFNYWlsU2Vu ZGVyIGltcGxlbWVudHMgTWFpbFNlbmRlciwgSW5pdGlhbGl6aW5nQmVhbiB7DQogIHByaXZhdGUg U3RyaW5nIGhvc3Q7DQogIHByaXZhdGUgU3RyaW5nIHVzZXJuYW1lOw0KICBwcml2YXRlIFN0cmlu ZyBwYXNzd29yZDsNCiANCiAgKGdldHRlcnMgYW5kIHNldHRlcnMpDQogDQogIHB1YmxpYyB2b2lk IGFmdGVyUHJvcGVydGllc1NldCgpIHsNCiAgICAvLyBjcmVhdGUgYW5kIGtlZXAgU2Vzc2lvbiBp bnN0YW5jZQ0KICB9DQogDQogIHB1YmxpYyB2b2lkIHNlbmQoU2ltcGxlTWVzc2FnZSBtZXNzYWdl KSB7DQogICAgLy8gc2VuZCBTaW1wbGVNZXNzYWdlIHZpYSBKYXZhTWFpbA0KICAgIC8vIGNyZWF0 aW5nIGEgTWltZU1lc3NhZ2UgaW50ZXJuYWxseSBhbmQgZGVsZWdhdGluZyB0byBzZW5kKE1pbWVN ZXNzYWdlKQ0KIH0NCiANCiAgcHVibGljIHZvaWQgc2VuZChNaW1lTWVzc2FnZSBtZXNzYWdlKSB7 DQogICAgLy8gc2VuZCBKYXZhTWFpbCBNaW1lTWVzc2FnZQ0KICAgIC8vIHVzaW5nIGEgVHJhbnNw b3J0IGluc3RhbmNlOiBjb25uZWN0LCBzZW5kTWVzc2FnZSwgZGlzY29ubmVjdA0KICB9DQogDQog IHB1YmxpYyB2b2lkIHNlbmQoTWltZU1lc3NhZ2VbXSBtZXNzYWdlcykgew0KICAgIC8vIHNlbmQg bXVsdGlwbGUgSmF2YU1haWwgTWltZU1lc3NhZ2VzIGluIG9uZSBiYXRjaA0KICAgIC8vIHVzaW5n IGEgVHJhbnNwb3J0IGluc3RhbmNlOiBjb25uZWN0LCBtdWx0aXBsZSBzZW5kTWVzc2FnZSwgZGlz Y29ubmVjdA0KICB9DQogDQogIHB1YmxpYyBNaW1lTWVzc2FnZSBjcmVhdGVNaW1lTWVzc2FnZSgp IHsNCiAgICAvLyBjcmVhdGUgSmF2YU1haWwgTWltZU1lc3NhZ2UgZm9yIHRoZSBTZXNzaW9uIG9m IHRoaXMgc2VuZGVyDQogICAgLy8gbmVjZXNzYXJ5IGJlY2F1c2Ugb2YgTWltZU1lc3NhZ2UoU2Vz c2lvbikgY29uc3RydWN0b3INCiAgfQ0KfQ0KIA0KSSBjb25zaWRlciB0aGlzIHRoZSBiZXN0IG9m IGJvdGggd29ybGRzLiBBcHBsaWNhdGlvbnMgY2FuIGNob29zZSB0byB1c2UgdGhlIGZ1bGwgYWJz dHJhY3Rpb24gKE1haWxTZW5kZXIpIGZvciBzaW1wbGUgcHVycG9zZXMsIG9yIHVzZSBKYXZhTWFp bFNlbmRlciBmb3IgbW9yZSBzb3BoaXN0aWNhdGVkIHJlcXVpcmVtZW50cy4gQXMgdGVzdGluZyBz dWNoIGFwcHMgZG9lcyBub3QgcmVxdWlyZSBtb2NraW5nIEphdmFNYWlsIGl0c2VsZiBpbiBhbnkg Y2FzZSwgd2Ugc2hvdWxkIGhhdmUgcmVhY2hlZCBhbGwgb3VyIGdvYWxzLg0KIA0KV2hhdCBkbyB5 b3UgdGhpbms/IElmIHdlIGFncmVlIG9uIHRoZSBBUEkgZGVzaWduLCBJJ2xsIGJlIGhhcHB5IHRv IHJld29yayBvdXIgbWFpbCBzdXBwb3J0IHRoYXQgd2F5IGZvciAxLjAgTTIuDQogDQpSZWdhcmRz LA0KSnVlcmdlbg0KIA0KIA0KDQoJLS0tLS1VcnNwcsO8bmdsaWNoZSBOYWNocmljaHQtLS0tLSAN CglWb246IFJvZCBKb2huc29uIFttYWlsdG86cm9kLmpvaG5zb25AaW50ZXJmYWNlMjEuY29tXSAN CglHZXNlbmRldDogU28gMDUuMTAuMjAwMyAxMTozOCANCglBbjogasO8cmdlbiBow7ZsbGVyIFt3 ZXJrM0FUXTsgS29weWxlbmtvLCBEbWl0cnkgDQoJQ2M6IA0KCUJldHJlZmY6IFJlOiBbU3ByaW5n ZnJhbWV3b3JrLWRldmVsb3Blcl0gTWFpbCBzdXBwb3J0DQoJDQoJDQoNCgk+IEFmdGVyIGluLWRl cHRoIGNvbnNpZGVyYXRpb24gb2YgdGhlIG1haWwgc2VuZGluZyByZXF1aXJlbWVudHMgaW4gd2Vy azNBVA0KCXByb2R1Y3RzIGFuZCBzdHVkeSBvZiB0aGUgSmF2YU1haWwgc3BlYywgSSdtIGluY2xp bmVkIHRvIHN1Z2dlc3QgYQ0KCXNpZ25pZmljYW50bHkgZGlmZmVyZW50IGtpbmQgb2YgbWFpbCBz dXBwb3J0IHRoYW4gdGhlIGN1cnJlbnQgb25lLiBUaGUgbWFpbg0KCXJlYXNvbnMgYXJlIGNlcnRh aW4gbGltaXRhdGlvbnMgb2YgdGhlIGN1cnJlbnQgU3ByaW5nIG1haWwgc2VuZGVyLCBub3QNCglh bGxvd2luZyBmb3IgcXVpdGUgYSBsb3Qgb2YgSmF2YU1haWwgZnVuY3Rpb25hbGl0eToNCgk+DQoJ PiAxLiBIb3cgdG8gc2VuZCBibGluZCBjb3BpZXMgKGJjYyk/DQoJPiAyLiBIb3cgdG8gc3BlY2lm eSBhIG5hbWUgZm9yIHNlbmRlciBvciByZWNpcGllbnQgYWRkcmVzc2VzICh0byBtYWtlIG1haWwN CgljbGllbnRzIHNob3cgc29tZXRoaW5nIGxpa2UgIkp1ZXJnZW4gSG9lbGxlciA8amhvQHdlcmsz YXQuY29tPiIpPw0KCT4gMy4gSG93IHRvIHNldCBhIGNoYXJzZXQgZm9yIHN1YmplY3QgYW5kIHRl eHQgKHZlcnkgaW1wb3J0YW50IGZvciBsb2NhbGl6ZWQNCgltYWlscyk/DQoJPiA0LiBIb3cgdG8g YXV0aGVudGljYXRlIGFnYWluc3QgdGhlIFNNVFAgc2VydmVyIGlmIG5lY2Vzc2FyeSAodXNlcm5h bWUsDQoJcGFzc3dvcmQpPw0KCT4gNS4gSG93IHRvIHNlbmQgbXVsdGlwbGUgbWVzc2FnZXMgaW4g YmF0Y2gsIHdpdGhpbiBhIHNpbmdsZSBtYWlsIHNlcnZlcg0KCWNvbm5lY3Rpb24/DQoJPiA2LiBI b3cgdG8gYWNjZXNzIGEgbWFpbCBzdG9yZSwgaS5lLiBhbiBpbmJveCBmb3IgcmVhZGluZyBtYWls cz8NCgk+DQoJPiBUaGUgZmlyc3QgdGhyZWUgcmVxdWlyZSB0aGUgb3B0aW9uIHRvIGNvbmZpZ3Vy ZSBhIE1pbWVNZXNzYWdlIGRpcmVjdGx5LA0KCWluc3RlYWQgb2YganVzdCBjcmVhdGluZyBvbmUg aW50ZXJuYWxseSBmcm9tIHNpbXBsaWZpZWQgYXJndW1lbnRzLiBUaGVyZSdzIGENCglsb3Qgb2Yg dXNlZnVsIGZ1bmN0aW9uYWxpdHkgaW4gdGhlcmUsIHdlIHNob3VsZCBub3QgdHJ5IHRvIGFic3Ry YWN0IHRoYXQgLQ0KCWp1c3Qgb2ZmZXIgc2ltcGxlIGNvbnZlbmllbmNlIG1ldGhvZHMgYXMgc2hv cnRjdXRzLg0KCT4NCgk+IE5yLiA0IGNhbiBiZSBvdmVyY29tZSBieSB0d28gbWVjaGFuaXNtcywg ZWl0aGVyIHBhc3NpbmcgYW4gQXV0aGVudGljYXRvcg0KCWltcGxlbWVudGF0aW9uIG9uIFNlc3Np b24uZ2V0SW5zdGFuY2UsIG9yIHVzaW5nIGEgVHJhbnNwb3J0IGluc3RhbmNlDQoJZXhwbGljaXRs eSwgcGFzc2luZyBob3N0LCB1c2VybmFtZSwgYW5kIHBhc3N3b3JkIG9uIHRoZSBjb25uZWN0IGNh bGwuDQoJRnVydGhlcm1vcmUsIGFuIGV4cGxpY2l0IFRyYW5zcG9ydCBpbnN0YW5jZSBhbGxvd3Mg dG8gc2VuZCBtdWx0aXBsZSBtZXNzYWdlcw0KCXdpdGhpbiBvbmUgY29ubmVjdGlvbiAtIE5yLiA1 Lg0KCT4NCgk+IE5yLiA2IG5lZWRzIHRoZSBvcHRpb24gdG8gd29yayB3aXRoaW4gYSBTdG9yZSwg YXMgb3Bwb3NlZCB0byBhIFRyYW5zcG9ydA0KCWZvciBzZW5kaW5nLg0KCQ0KCUknbSBub3Qgc3Vy ZSB3ZSBuZWVkIHRvIHdvcnJ5IGFib3V0IDYgbm93LCBzbyBsb25nIGFzIHdlIGNhbiBzdXBwb3J0 IGl0DQoJZXZlbnR1YWxseS4gSSB0aGluayBtb3N0IHBlb3BsZSBhcmUgaW50ZXJlc3RlZCBwcmlt YXJpbHkgaW4gc2VuZGluZyBtYWlsLg0KCQ0KCT4gU28gdGhlIG1vc3QgYXBwcm9wcmlhdGUgbWFp bCBzdXBwb3J0IHNlZW1zIHRvIG1lIGEgTWFpbFRlbXBsYXRlIGNsYXNzDQoJdGhhdCdzIGZvY3Vz ZWQgb24gbWFraW5nIEphdmFNYWlsIHVzYWdlIGVhc2llciByYXRoZXIgdGhhbiBnZW5lcmFsDQoJ YWJzdHJhY3Rpb24uIEkgZW52aXNhZ2UgdGhlIGZvbGxvd2luZyBiZWFuIHByb3BlcnRpZXM6DQoJ Pg0KCT4gLSB0cmFuc3BvcnRQcm90b2NvbCAoZGVmYXVsdCAic210cCIpOw0KCT4gLSBzdG9yZVBy b3RvY29sIChkZWZhdWx0ICJwb3AzIik7DQoJPiAtIHRyYW5zcG9ydEhvc3QgKGFrYSAibWFpbC5z bXRwLmhvc3QiKTsNCgk+IC0gc3RvcmVIb3N0IChha2EgIm1haWwucG9wMy5ob3N0Iik7DQoJPiAt IHVzZXJuYW1lIChkZWZhdWx0IGVtcHR5KTsNCgk+IC0gcGFzc3dvcmQgKGRlZmF1bHQgZW1wdHkp Lg0KCT4NCgk+IFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbGxvdyB0byB3b3JrIHdpdGhpbiBhIHBy b3Blcmx5IG1hbmFnZWQgVHJhbnNwb3J0IG9yDQoJU3RvcmUgcmVzb3VyY2UsIGFuYWxvZ291cyB0 byBIaWJlcm5hdGVUZW1wbGF0ZSB3aXRoIGEgSGliZXJuYXRlIFNlc3Npb246DQoJPg0KCT4gLSBl eGVjdXRlSW5UcmFuc3BvcnQoTWFpbFRyYW5zcG9ydENhbGxiYWNrKTsNCgk+IC0gZXhlY3V0ZUlu U3RvcmUoTWFpbFN0b3JlQ2FsbGJhY2spOw0KCT4NCgk+IHdpdGggdGhlIGZvbGxvd2luZyBjYWxs YmFjayBpbnRlcmZhY2VzOg0KCT4NCgk+ICAgcHVibGljIGludGVyZmFjZSBNYWlsVHJhbnNwb3J0 Q2FsbGJhY2soKSB7DQoJPiAgICAgZG9JblRyYW5zcG9ydChTZXNzaW9uIHNlc3Npb24sIFRyYW5z cG9ydCB0cmFuc3BvcnQpOw0KCT4gICB9DQoJPg0KCT4gICBwdWJsaWMgaW50ZXJmYWNlIE1haWxT dG9yZUNhbGxiYWNrKCkgew0KCT4gICAgIGRvSW5TdG9yZShTZXNzaW9uIHNlc3Npb24sIFN0b3Jl IHN0b3JlKTsNCgk+ICAgfQ0KCT4NCgk+IE9mIGNvdXJzZSwgbGlrZSB3aXRoIEhpYmVybmF0ZVRl bXBsYXRlLCB0aGVyZSdzIGEgbG90IG9mIG9wcG9ydHVuaXR5IGZvcg0KCWNvbnZlbmllbmNlIG1l dGhvZHMgb24gTWFpbFRlbXBsYXRlLCB0byBhdm9pZCBoYXZpbmcgdG8gaW1wbGVtZW50IGENCglj YWxsYmFjazoganVzdCBmb3IgdHJhbnNwb3J0IHRob3VnaCwgYXMgc3RvcmUtcmVsYXRlZCB3b3Jr IHdpbGwgYWx3YXlzIGJlDQoJY3VzdG9tLg0KCT4NCgk+IC0gc2VuZE1lc3NhZ2UoTWltZU1lc3Nh Z2UpOw0KCT4gLSBzZW5kTWVzc2FnZXMoTWltZU1lc3NhZ2VbXSk7DQoJPiAtIHNlbmRNZXNzYWdl KFNpbXBsZU1lc3NhZ2UgbWVzc2FnZSk7DQoJPiAtIHNlbmRNZXNzYWdlKFN0cmluZyBmcm9tLCBT dHJpbmcgdG8sIFN0cmluZyBzdWJqZWN0LCBTdHJpbmcgdGV4dCk7DQoJPiAtIHNlbmRNZXNzYWdl KFN0cmluZyBmcm9tLCBTdHJpbmcgdG8sIFN0cmluZ1tdIGNjLCBTdHJpbmcgc3ViamVjdCwgU3Ry aW5nDQoJdGV4dCk7DQoJPiAtIGV0Yy4NCgk+DQoJPiBTbyBzZW5kaW5nIGEgcGxhaW4gbWVzc2Fn ZSBpcyBzdHJhaWdodGZvcndhcmQ6IFBvcHVsYXRlIGEgTWFpbFRlbXBsYXRlDQoJd2l0aCB0cmFu c3BvcnRIb3N0LCB1c2VybmFtZSwgYW5kIHBhc3N3b3JkIChlLmcuIGluIHRoZSBhcHBsaWNhdGlv bg0KCWNvbnRleHQpLCBwYXNzIGl0IHRvIHlvdXIgYXBwbGljYXRpb24gb2JqZWN0OyBpbnZva2Ug b25lIG9mIHRoZSBzZW5kTWVzc2FnZQ0KCW1ldGhvZHMuIEJ1dCBpZiB5b3UgbmVlZCBpdCwgdGhl IGZ1bGwgcG93ZXIgb2YgSmF2YU1haWwgaXMgYXQgeW91cg0KCWZpbmdlcnRpcHMgaW4gYSBjdXN0 b20gY2FsbGJhY2sgaW1wbGVtZW50YXRpb24hDQoJPg0KCT4gUHJlY29uZmlndXJpbmcgbWFpbCBz ZXR0aW5ncyBpcyBzdGlsbCBwb3NzaWJsZTogdGhlICJ0cmFuc3BvcnRIb3N0IiBpbiB0aGUNCglN YWlsVGVtcGxhdGUgaW5zdGFuY2UsIHRoZSBtYWlsIGFkZHJlc3NlcyBhbmQgY29udGVudHMgdmlh IFNpbXBsZU1lc3NhZ2UuDQoJVGhlIGxhdHRlciB3aXRoICJmcm9tIiwgInRvIiwgInN1YmplY3Qi LCAidGV4dCIsIGFuZCBhIGNvcHkgY29uc3RydWN0b3IgY2FuDQoJc2VydmUgdGhlIHJvbGUgb2Yg dGhlIGN1cnJlbnQgTWFpbFNldHRpbmdzLCBqdXN0IHdpdGhvdXQgImhvc3QiOiBhDQoJc2ltcGxp ZmllZCBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgYSBwbGFpbiBtZXNzYWdlLg0KCT4NCgk+ICAg U2ltcGxlTWVzc2FnZSBtc2cgPSBuZXcgU2ltcGxlTWVzc2FnZShwcmVjb25maWd1cmVkTWVzc2Fn ZSk7DQoJPiAgIG1zZy5zZXRYWFgoLi4uKTsNCgk+ICAgbWFpbFRlbXBsYXRlLnNlbmRNZXNzYWdl KG1zZyk7DQoJPg0KCT4gLS0tLS0NCgkNCglJIGFncmVlIHJlZ2FyZGluZyB1dGlsaXR5IG1ldGhv ZHMuIEkgbGlrZSB0aGUgcHJvcG9zZWQgQVBJIG1vZGVsIChjYWxsYmFja3MNCglvbmx5IGZvciBj dXN0b20gc3R1ZmYpLg0KCQ0KCT4gSSBrbm93IHRoYXQgdGhpcyBpcyBjb21wbGV0ZWx5IGRpZmZl cmVudCB0aGFuIHRoZSBjdXJyZW50IG1haWwgc3VwcG9ydA0KCW1vZGVsLiBUaGUgbWFpbiBkaWZm ZXJlbmNlIGlzIHRoYXQgdGhlcmUgaXMgbm8gYXR0ZW1wdCB0byBhYnN0cmFjdCBKYXZhTWFpbA0K CWNvbXBsZXRlbHksIHJhdGhlciBhIGhlbHBlciBmb3Igc2ltcGxpZmllZCB1c2FnZSBsaWtlIEhp YmVybmF0ZVRlbXBsYXRlLiBJDQoJZG9uJ3Qgc2VlIG11Y2ggdmFsdWUgaW4gY29tcGxldGUgYWJz dHJhY3Rpb24gYW55d2F5OiBXaGF0IGFsdGVybmF0aXZlDQoJaW1wbGVtZW50YXRpb25zIG1pZ2h0 IHRoZXJlIGJlPw0KCQ0KCUphdmFNYWlsIGlzIGEgbWVzc3kgQVBJLiBUaGVyZSBhcmUgYWx0ZXJu YXRpdmVzIHN1Y2ggYXMgdGhlIG9sZCBTdW4gbWFpbA0KCXBhY2thZ2VzLCB3aGljaCBJJ3ZlIHVz ZWQgc3VjY2Vzc2Z1bGx5LCB3aGljaCBhcmUgdXN1YWxseSBlYXNpZXIgdG8NCgljb25maWd1cmUu IEkgZG9uJ3QgdGhpbmsgSmF2YU1haWwgaXMgYSBncmVhdCBhYnN0cmFjdGlvbi4NCgkNCgk+IFJl Z2FyZGluZyB0ZXN0aW5nLCB0aGF0IHNob3VsZCBiZSBlYXNpZXIgd2l0aCB0aGUgYWJvdmUgbW9k ZWw6IEJlc2lkZXMNCglTZXNzaW9uLmdldEluc3RhbmNlLCBubyBzdGF0aWMgSmF2YU1haWwgbWV0 aG9kcyBhcmUgaW52b2x2ZWQsIGFzIFRyYW5zcG9ydA0KCWFuZCBTdG9yZSBhbmQgaGFuZGxlZCBh cyBpbnN0YW5jZXMuIFRodXMsIGlmIHdlIGlzb2xhdGUgdGhlDQoJU2Vzc2lvbi5nZXRJbnN0YW5j ZSBjYWxsIGluIGEgcHJvdGVjdGVkIG1ldGhvZCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gdGVzdA0K CW91ciBtYWlsIHN1cHBvcnQgd2l0aCBtb2NrIG9iamVjdHMsIGkuZS4gbW9jayBzdWJjbGFzc2Vz IG9mIFNlc3Npb24sDQoJVHJhbnNwb3J0LCBhbmQgU3RvcmUuDQoJDQoJU2Vzc2lvbiBpcyBmaW5h bC4gVHJhbnNwb3J0IGlzIG5vdCBhIHJlYWwgb2JqZWN0LS1pZSB0aGUgbW9zdCBpbXBvcnRhbnQN CgltZXRob2RzIGFyZSBzdGF0aWMuIEphdmFNYWlsIHN1Y2tzIGZyb20gYSB0ZXN0YWJpbGl0eSBw ZXJzcGVjdGl2ZSwgc28gSSdtDQoJbm90IHN1cmUgd2UgY2FuIGF2b2lkIHRob3NlIGxpbWl0YXRp b25zIHdpdGhvdXQgZ3JlYXRlciBhYnN0cmFjdGlvbi4NCgkNCgk+IFRoZSBtYWluIHJlYXNvbiB3 aHkgSSdtIHZlcnkga2VlbiBvbiBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIHN1cHBvcnQgaXMNCgl0 aGF0IHRoZSBjdXJyZW50IGFic3RyYWN0aW9uIGlzIHRvbyBzaW1wbGU6IEl0IGxvc2VzIG11Y2gg b2YgSmF2YU1haWwncw0KCXBvd2VyLiBJTU8sIHRoZSBiZXR0ZXIgdHJhZGVvZmYgaXMgdG8gd29y ayB3aXRoIEphdmFNYWlsIGV4Y2x1c2l2ZWx5IGFuZA0KCW1ha2UgaXRzIHVzYWdlIHNpbXBsZXIu DQoJDQoJSSB0aGluayBtb3JlIHBvd2VyIGlzIG5lZWRlZC4gSSdtIHN0aWxsIG5vdCBjb252aW5j ZWQgdGhhdCB3ZSBuZWVkIHRvIGJlDQoJSmF2YU1haWwgb25seSB0byBkZWxpdmVyIHRoYXQuDQoJ DQoJUmVnYXJkcywNCglSb2QNCgkNCgkNCgkNCg0K |