TXkgcHJldmlvdXMgcG9zdCBhcHBlYXJzIHRvIGhhdmUgZW5jb2RpbmcgcHJvYmxlbXMuIEknbSBz ZW5kaW5nIHRoZSBwbGFpbiB0ZXh0IGFnYWluLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoN CkhpIEplcmVteSwNCg0Kc29ycnksIEkgZGlkbid0IGFkZCBhbnkgYWN0dWFsIGRldGFpbHMuLi4N Cg0KWWVzLCBJJ20gdXNpbmcgUFJfQ09NTUFORF9TRVREQVRBIGFzIHRoZSB3aGF0IGZpZWxkLCB0 aGVuIHNlbmRpbmcgaXQgd2l0aCB0aGUgc2VuZE91dGdvaW5nTWVzc2FnZSBtZXRob2Qgb2YgdGhl IE1lc3NhZ2VUcmFuc2NlaXZlci4gQW5vdGhlciBwcm9jZXNzLCB3aGljaCBydW5zIGluIGEgc2No ZWR1bGVkIGZhc2hpb24sIG11c3QgZGVsZXRlIGFsbCBtZXNzYWdlcyBvbGRlciB0aGFuIG9uZSB3 ZWVrLiBJJ20gdXNpbmcgUFJfQ09NTUFORF9SRU1PVkVEQVRBLiBUaGUgcHJvYmxlbSBpcywgSSd2 ZSB0cmllZCBsb3RzIG9mIGNvbWJpbmF0aW9ucyBmb3IgdGhlIHZhbHVlIG9mIFBSX05BTUVfS0VZ UyBzbyBJIGRlbGV0ZSB0aGUgbWVzc2FnZXMgZnJvbSB0aGUgZGF0YWJhc2UsIGJ1dCBub25lIGhh cyB3b3JrZWQgc28gZmFyLg0KDQpJIGhhdmUgYWxzbyB0cmllZCB0byBkZWxldGUgdGhlIG1lc3Nh Z2VzIGZyb20gdGhlIG9yaWdpbmF0aW5nIGNsaWVudCwgd2l0aCB0aGUgc2FtZSByZXN1bHRzLiAN Cg0KSSBfa25vd18gSSdtIGRvaW5nIHNvbWV0aGluZyB3cm9uZy4gTWF5YmUgdGhlIHdheSBJJ20g c2VuZGluZyB0aGVtPw0KDQpSZWdhcmRzLA0KDQpEYXJpbw0KDQoNCg0KLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCkZyb206IG11c2NsZS1ib3VuY2VAZnJlZWxpc3RzLm9yZyBbbWFpbHRvOm11 c2NsZS1ib3VuY2VAZnJlZWxpc3RzLm9yZ11Pbg0KQmVoYWxmIE9mIEplcmVteSBGcmllc25lcg0K U2VudDogSnVldmVzLCAwNyBkZSBPY3R1YnJlIGRlIDIwMDQgMDE6MjEgcC5tLg0KVG86IG11c2Ns ZUBmcmVlbGlzdHMub3JnDQpTdWJqZWN0OiBbbXVzY2xlXSBSZTogSG93IHRvIGRlbGV0ZSBtZXNz YWdlcyB3aXRoIHRoZSBqYXZhIEFQST8NCg0KDQpIaSBEYXJpbywNCg0KQ2FuIHlvdSBjbGFyaWZ5 IHlvdXIgcXVlc3Rpb24gZm9yIG1lPyAgSSdtIG5vdCBzdXJlIGlmIGJ5ICJkZWxldGUgYSBNZXNz YWdlIiwgDQp5b3UgbWVhbg0KDQpBKSBZb3UgaGF2ZSBzZXQgYSBNZXNzYWdlIG5vZGUgdG8gdGhl IHNlcnZlci1zaWRlIGRhdGFiYXNlIHVzaW5nDQogICAgIGEgUFJfQ09NTUFORF9TRVREQVRBIE1l c3NhZ2UsIGFuZCBub3cgeW91IHdhbnQgdG8gcmVtb3ZlDQogICAgIHRoYXQgbm9kZSBmcm9tIHRo ZSBkYXRhYmFzZS4NCg0KQikgWW91IGhhdmUgcHV0IGEgTWVzc2FnZSBpbnRvIHlvdXIgY2xpZW50 J3MgdXBsb2FkLXF1ZXVlIHdpdGgNCiAgICAgc2VuZE91dGdvaW5nTWVzc2FnZSgpLCBzbyB0aGF0 IGl0IGlzIHNjaGVkdWxlZCB0byBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIsDQogICAgIGJ1dCBzb29u IGFmdGVyd2FyZHMgKGkuZS4gYmVmb3JlIHRoZSBhY3R1YWwgYnl0ZXMgd2VyZSB0cmFuc21pdHRl ZCkgDQogICAgIHlvdXIgcHJvZ3JhbSBkZWNpZGVkIHRoYXQgeW91IGRpZG4ndCB3YW50IHRvIHNl bmQgdGhlIE1lc3NhZ2UgYWZ0ZXIgYWxsLA0KICAgICBhbmQgeW91IHdhbnQgdG8ga25vdyBob3cg eW91IGNhbiByZW1vdmUgdGhhdCBNZXNzYWdlIGZyb20gdGhlIHF1ZXVlIHNvDQogICAgIHRoYXQg aXQgZG9lc24ndCBnZXQgc2VudC4NCg0KQykgIFNvbWV0aGluZyBlbHNlPw0KDQooSWYgdGhlIGFu c3dlciBpcyBBLCB0aGVuIHRoZSBQUl9DT01NQU5EX1JFTU9WRURBVEEgTWVzc2FnZQ0KaXMgdGhl IG9uZSB5b3Ugd2FudCB0byB1c2UuLi4gc2VlIHRoZSBkb2NzIGZvciBkZXRhaWxzLiAgSWYgeW91 IG1lYW50IEIsIHRoYXQgDQppc24ndCBkaXJlY3RseSBzdXBwb3J0ZWQgYnkgdGhlIEphdmEgaW1w bGVtZW50YXRpb24sIGJ1dCBpdCBpcyBwb3NzaWJsZSB0byBkbyANCi0tIGxldCBtZSBrbm93IGFu ZCBJIGNhbiBleHBsYWluIGZ1cnRoZXIpDQoNCk9uIFRodXJzZGF5IDA3IE9jdG9iZXIgMjAwNCAx MDo1OCwgVmFzY29uY2Vsb3MgSmltZW5leiBEYXJpbyB3cm90ZToNCj4gSGkgQWxsLA0KPiBJIGhh dmUgYSBtdXNjbGVkIHNlcnZlciB0aGF0IEknbSB1c2luZyBhcyBtZXNzYWdlIGh1Yi4gSSd2ZSBi ZWVuIHRyeWluZyB0bw0KPiBkZWxldGUgbWVzc2FnZXMgdGhhdCBJIHNlbnQsIGJ1dCBJIGNhbid0 IHNlZW0gdG8gZ2V0IGl0IHJpZ2h0LiBBRkFJSywgdGhlcmUNCj4gYXJlIG5vIHJlc3RyaWN0aW9u cyBvbiB3aG8gY2FuIGRlbGV0ZSBhIG1lc3NhZ2UgKG9yIHNob3VsZCB0aGUgc2VuZGVyIGRvDQo+ IGl0PyksIGFuZCB0aGUgY29kZSBzaG91bGQgYmUgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4NCg0K SWYgeW91IGFyZSB1c2luZyBQUl9DT01NQU5EX1NFVERBVEEgdG8gcG9zdCBNZXNzYWdlIG5vZGVz IHRvIHRoZSBkYXRhYmFzZSwgDQp0aGVuOiAgZWFjaCBjbGllbnQncyBzdWJ0cmVlIGlzIHdyaXRl YWJsZSBvbmx5IGJ5IHRoYXQgY2xpZW50IC0tIG90aGVyIA0KY2xpZW50cyBtYXkgcmVhZCBmcm9t IHRoYXQgc3VidHJlZSwgYnV0IG5vdCBtb2RpZnkgaXQuICBTbyBvbmx5IHRoZSBjbGllbnR3aG8g DQp1cGxvYWRlZCBhIG5vZGUgaXMgYWJsZSB0byBkZWxldGUgaXQuDQoNCklmIHlvdSBhcmUganVz dCBzZW5kaW5nIE1lc3NhZ2VzIHdpdGggdHlwZWNvZGVzIG90aGVyIHRoYW4gUFJfQ09NTUFORF8q LCB0aGVuIA0KdGhlcmUgaXMgbm8gbmVlZCB0byBkZWxldGUgdGhvc2UgTWVzc2FnZXMsIHNpbmNl IHRoZXkgd29uJ3QgcGVyc2lzdCBvbiB0aGUgDQpzZXJ2ZXIgYW55d2F5IC0tIHRoZXkganVzdCBn byB0byB0aGUgb3RoZXIgY2xpZW50cyAoaWYgYW55KSwgYW5kIHRoZW4gdGhleSANCmFyZSBnb25l Lg0KDQo+IEknbSBhY3R1YWxseSB1c2luZyB0aGUNCj4gVGVzdENsaWVudCB0aGF0IGNvbWVzIHdp dGggdGhlIGphdmEgQVBJLCBidXQgSSBkb24ndCBrbm93IGlmIHRoYXQgY29kZQ0KPiB3b3JrcyAo c2VuZGluZyBtZXNzYWdlcyBmcm9tIGl0IGRvZXNuJ3Qgc2VlbSB0byB3b3JrKSBvciBpZiBJIHNo b3VsZCBkbyBhbnkNCj4gY2hhbmdlcy4gQW55b25lIGhhcyBhIHdvcmtpbmcgZXhhbXBsZSBvZiB0 aGlzPyBJdCBkb2Vzbid0IG1hdHRlciBpZiBpdCdzDQo+IHdyaXR0ZW4gaW4gQysrLi4uDQoNClRl c3RDbGllbnQgb3VnaHQgdG8gd29yayAoYWx0aG91Z2ggSSBkb24ndCBoYXZlIGEgSmF2YSBlbnZp cm9ubWVudCBzZXQgdXAgDQphbnltb3JlLCBzbyBJIGhhdmVuJ3QgdGVzdGVkIGl0IGZvciBhIHdo aWxlKS4uLi4gIHRyeSBydW5uaW5nIGl0IGFuZCB0eXBpbmcNCg0KUCANCg0KKGkuZS4gY2FwaXRh bC1QLCByZXR1cm4pIGFzIGEgY29tbWFuZCB0byBzZW5kLi4uIHRoYXQgc2hvdWxkIGNhdXNlIHRo ZSBzZXJ2ZXIgDQp0byByZXNwb25kIHdpdGggYSBNZXNzYWdlIGNvbnRhaW5pbmcgc29tZSBzZXJ2 ZXIgc3RhdGlzdGljcyBpbmZvcm1hdGlvbi4gIElmDQp0aGF0IHdvcmtzLCB0aGVuIFRlc3RDbGll bnQgaXMgd29ya2luZyAtLSBpZiBub3QsIHNvbWV0aGluZyBpcyB3cm9uZy4NCg0KLUplcmVteQ0K DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBtdXNjbGUtYm91bmNlQGZyZWVs aXN0cy5vcmcgW21haWx0bzptdXNjbGUtYm91bmNlQGZyZWVsaXN0cy5vcmddT24NCkJlaGFsZiBP ZiBKZXJlbXkgRnJpZXNuZXINClNlbnQ6IEp1ZXZlcywgMDcgZGUgT2N0dWJyZSBkZSAyMDA0IDAx OjIxIHAubS4NClRvOiBtdXNjbGVAZnJlZWxpc3RzLm9yZw0KU3ViamVjdDogW211c2NsZV0gUmU6 IEhvdyB0byBkZWxldGUgbWVzc2FnZXMgd2l0aCB0aGUgamF2YSBBUEk/DQoNCg0KSGkgRGFyaW8s DQoNCkNhbiB5b3UgY2xhcmlmeSB5b3VyIHF1ZXN0aW9uIGZvciBtZT8gIEknbSBub3Qgc3VyZSBp ZiBieSAiZGVsZXRlIGEgTWVzc2FnZSIsIA0KeW91IG1lYW4NCg0KQSkgWW91IGhhdmUgc2V0IGEg TWVzc2FnZSBub2RlIHRvIHRoZSBzZXJ2ZXItc2lkZSBkYXRhYmFzZSB1c2luZw0KICAgICBhIFBS X0NPTU1BTkRfU0VUREFUQSBNZXNzYWdlLCBhbmQgbm93IHlvdSB3YW50IHRvIHJlbW92ZQ0KICAg ICB0aGF0IG5vZGUgZnJvbSB0aGUgZGF0YWJhc2UuDQoNCkIpIFlvdSBoYXZlIHB1dCBhIE1lc3Nh Z2UgaW50byB5b3VyIGNsaWVudCdzIHVwbG9hZC1xdWV1ZSB3aXRoDQogICAgIHNlbmRPdXRnb2lu Z01lc3NhZ2UoKSwgc28gdGhhdCBpdCBpcyBzY2hlZHVsZWQgdG8gYmUgc2VudCB0byB0aGUgc2Vy dmVyLA0KICAgICBidXQgc29vbiBhZnRlcndhcmRzIChpLmUuIGJlZm9yZSB0aGUgYWN0dWFsIGJ5 dGVzIHdlcmUgdHJhbnNtaXR0ZWQpIA0KICAgICB5b3VyIHByb2dyYW0gZGVjaWRlZCB0aGF0IHlv dSBkaWRuJ3Qgd2FudCB0byBzZW5kIHRoZSBNZXNzYWdlIGFmdGVyIGFsbCwNCiAgICAgYW5kIHlv dSB3YW50IHRvIGtub3cgaG93IHlvdSBjYW4gcmVtb3ZlIHRoYXQgTWVzc2FnZSBmcm9tIHRoZSBx dWV1ZSBzbw0KICAgICB0aGF0IGl0IGRvZXNuJ3QgZ2V0IHNlbnQuDQoNCkMpICBTb21ldGhpbmcg ZWxzZT8NCg0KKElmIHRoZSBhbnN3ZXIgaXMgQSwgdGhlbiB0aGUgUFJfQ09NTUFORF9SRU1PVkVE QVRBIE1lc3NhZ2UNCmlzIHRoZSBvbmUgeW91IHdhbnQgdG8gdXNlLi4uIHNlZSB0aGUgZG9jcyBm b3IgZGV0YWlscy4gIElmIHlvdSBtZWFudCBCLCB0aGF0IA0KaXNuJ3QgZGlyZWN0bHkgc3VwcG9y dGVkIGJ5IHRoZSBKYXZhIGltcGxlbWVudGF0aW9uLCBidXQgaXQgaXMgcG9zc2libGUgdG8gZG8g DQotLSBsZXQgbWUga25vdyBhbmQgSSBjYW4gZXhwbGFpbiBmdXJ0aGVyKQ0KDQpPbiBUaHVyc2Rh eSAwNyBPY3RvYmVyIDIwMDQgMTA6NTgsIFZhc2NvbmNlbG9zIEppbWVuZXogRGFyaW8gd3JvdGU6 DQo+IEhpIEFsbCwNCj4gSSBoYXZlIGEgbXVzY2xlZCBzZXJ2ZXIgdGhhdCBJJ20gdXNpbmcgYXMg bWVzc2FnZSBodWIuIEkndmUgYmVlbiB0cnlpbmcgdG8NCj4gZGVsZXRlIG1lc3NhZ2VzIHRoYXQg SSBzZW50LCBidXQgSSBjYW4ndCBzZWVtIHRvIGdldCBpdCByaWdodC4gQUZBSUssIHRoZXJlDQo+ IGFyZSBubyByZXN0cmljdGlvbnMgb24gd2hvIGNhbiBkZWxldGUgYSBtZXNzYWdlIChvciBzaG91 bGQgdGhlIHNlbmRlciBkbw0KPiBpdD8pLCBhbmQgdGhlIGNvZGUgc2hvdWxkIGJlIHByZXR0eSBz dHJhaWdodGZvcndhcmQuDQoNCklmIHlvdSBhcmUgdXNpbmcgUFJfQ09NTUFORF9TRVREQVRBIHRv IHBvc3QgTWVzc2FnZSBub2RlcyB0byB0aGUgZGF0YWJhc2UsIA0KdGhlbjogIGVhY2ggY2xpZW50 J3Mgc3VidHJlZSBpcyB3cml0ZWFibGUgb25seSBieSB0aGF0IGNsaWVudCAtLSBvdGhlciANCmNs aWVudHMgbWF5IHJlYWQgZnJvbSB0aGF0IHN1YnRyZWUsIGJ1dCBub3QgbW9kaWZ5IGl0LiAgU28g b25seSB0aGUgY2xpZW50d2hvIA0KdXBsb2FkZWQgYSBub2RlIGlzIGFibGUgdG8gZGVsZXRlIGl0 Lg0KDQpJZiB5b3UgYXJlIGp1c3Qgc2VuZGluZyBNZXNzYWdlcyB3aXRoIHR5cGVjb2RlcyBvdGhl ciB0aGFuIFBSX0NPTU1BTkRfKiwgdGhlbiANCnRoZXJlIGlzIG5vIG5lZWQgdG8gZGVsZXRlIHRo b3NlIE1lc3NhZ2VzLCBzaW5jZSB0aGV5IHdvbid0IHBlcnNpc3Qgb24gdGhlIA0Kc2VydmVyIGFu eXdheSAtLSB0aGV5IGp1c3QgZ28gdG8gdGhlIG90aGVyIGNsaWVudHMgKGlmIGFueSksIGFuZCB0 aGVuIHRoZXkgDQphcmUgZ29uZS4NCg0KPiBJJ20gYWN0dWFsbHkgdXNpbmcgdGhlDQo+IFRlc3RD bGllbnQgdGhhdCBjb21lcyB3aXRoIHRoZSBqYXZhIEFQSSwgYnV0IEkgZG9uJ3Qga25vdyBpZiB0 aGF0IGNvZGUNCj4gd29ya3MgKHNlbmRpbmcgbWVzc2FnZXMgZnJvbSBpdCBkb2Vzbid0IHNlZW0g dG8gd29yaykgb3IgaWYgSSBzaG91bGQgZG8gYW55DQo+IGNoYW5nZXMuIEFueW9uZSBoYXMgYSB3 b3JraW5nIGV4YW1wbGUgb2YgdGhpcz8gSXQgZG9lc24ndCBtYXR0ZXIgaWYgaXQncw0KPiB3cml0 dGVuIGluIEMrKy4uLg0KDQpUZXN0Q2xpZW50IG91Z2h0IHRvIHdvcmsgKGFsdGhvdWdoIEkgZG9u J3QgaGF2ZSBhIEphdmEgZW52aXJvbm1lbnQgc2V0IHVwIA0KYW55bW9yZSwgc28gSSBoYXZlbid0 IHRlc3RlZCBpdCBmb3IgYSB3aGlsZSkuLi4uICB0cnkgcnVubmluZyBpdCBhbmQgdHlwaW5nDQoN ClAgDQoNCihpLmUuIGNhcGl0YWwtUCwgcmV0dXJuKSBhcyBhIGNvbW1hbmQgdG8gc2VuZC4uLiB0 aGF0IHNob3VsZCBjYXVzZSB0aGUgc2VydmVyIA0KdG8gcmVzcG9uZCB3aXRoIGEgTWVzc2FnZSBj b250YWluaW5nIHNvbWUgc2VydmVyIHN0YXRpc3RpY3MgaW5mb3JtYXRpb24uICBJZg0KdGhhdCB3 b3JrcywgdGhlbiBUZXN0Q2xpZW50IGlzIHdvcmtpbmcgLS0gaWYgbm90LCBzb21ldGhpbmcgaXMg d3JvbmcuDQoNCi1KZXJlbXkNCg0K