LS0gJElkOiBNQVAtTVMtRGF0YVR5cGVzLmFzbiAzNDgxNCAyMDEwLTExLTA4IDIzOjE1OjE2WiBldHhyYWIgJA0KLS0gM0dQUCBUUyAyOS4wMDIgVjkuMy4wICgyMDEwLTA5KSANCi0tIDE3LjcuMQlNb2JpbGUgU2VydmljZSBkYXRhIHR5cGVzDQoNCk1BUC1NUy1EYXRhVHlwZXMgew0KICAgaXR1LXQgaWRlbnRpZmllZC1vcmdhbml6YXRpb24gKDQpIGV0c2kgKDApIG1vYmlsZURvbWFpbiAoMCkNCiAgIGdzbS1OZXR3b3JrICgxKSBtb2R1bGVzICgzKSBtYXAtTVMtRGF0YVR5cGVzICgxMSkgdmVyc2lvbjEyICgxMil9DQoNCkRFRklOSVRJT05TDQoNCklNUExJQ0lUIFRBR1MNCg0KOjo9DQoNCkJFR0lODQoNCkVYUE9SVFMNCg0KCS0tIGxvY2F0aW9uIHJlZ2lzdHJhdGlvbiB0eXBlcw0KCVVwZGF0ZUxvY2F0aW9uQXJnLA0KCVVwZGF0ZUxvY2F0aW9uUmVzLA0KCUNhbmNlbExvY2F0aW9uQXJnLA0KCUNhbmNlbExvY2F0aW9uUmVzLCANCglQdXJnZU1TLUFyZywgDQoJUHVyZ2VNUy1SZXMsDQoJU2VuZElkZW50aWZpY2F0aW9uQXJnLA0KCVNlbmRJZGVudGlmaWNhdGlvblJlcywgDQoJVXBkYXRlR3Byc0xvY2F0aW9uQXJnLA0KCVVwZGF0ZUdwcnNMb2NhdGlvblJlcywNCglJU1QtU3VwcG9ydEluZGljYXRvciwgDQoJU3VwcG9ydGVkTENTLUNhcGFiaWxpdHlTZXRzLA0KDQoNCgktLSBoYW5kb3ZlciB0eXBlcw0KCUZvcndhcmRBY2Nlc3NTaWduYWxsaW5nLUFyZywNCglQcmVwYXJlSE8tQXJnLA0KCVByZXBhcmVITy1SZXMsDQoJUHJlcGFyZVN1YnNlcXVlbnRITy1BcmcsIA0KCVByZXBhcmVTdWJzZXF1ZW50SE8tUmVzLA0KCVByb2Nlc3NBY2Nlc3NTaWduYWxsaW5nLUFyZywNCglTZW5kRW5kU2lnbmFsLUFyZywNCglTZW5kRW5kU2lnbmFsLVJlcywNCg0KCS0tIGF1dGhlbnRpY2F0aW9uIG1hbmFnZW1lbnQgdHlwZXMNCglTZW5kQXV0aGVudGljYXRpb25JbmZvQXJnLA0KCVNlbmRBdXRoZW50aWNhdGlvbkluZm9SZXMsIA0KCUF1dGhlbnRpY2F0aW9uRmFpbHVyZVJlcG9ydEFyZywNCglBdXRoZW50aWNhdGlvbkZhaWx1cmVSZXBvcnRSZXMsDQoNCgktLSBzZWN1cml0eSBtYW5hZ2VtZW50IHR5cGVzDQoJS2MsDQoJQ2tzbiwNCg0KCS0tIGVxdWlwbWVudCBtYW5hZ2VtZW50IHR5cGVzDQoJQ2hlY2tJTUVJLUFyZywNCglDaGVja0lNRUktUmVzLA0KDQoJLS0gc3Vic2NyaWJlciBtYW5hZ2VtZW50IHR5cGVzDQoJSW5zZXJ0U3Vic2NyaWJlckRhdGFBcmcsDQoJSW5zZXJ0U3Vic2NyaWJlckRhdGFSZXMsIA0KCUxTQUlkZW50aXR5LA0KCURlbGV0ZVN1YnNjcmliZXJEYXRhQXJnLA0KCURlbGV0ZVN1YnNjcmliZXJEYXRhUmVzLA0KCUV4dC1Rb1MtU3Vic2NyaWJlZCwNCglFeHQyLVFvUy1TdWJzY3JpYmVkLA0KCUV4dDMtUW9TLVN1YnNjcmliZWQsIA0KCUV4dDQtUW9TLVN1YnNjcmliZWQsDQoJU3Vic2NyaWJlckRhdGEsDQoJT0RCLURhdGEsDQoJU3Vic2NyaWJlclN0YXR1cywNCglab25lQ29kZUxpc3QsDQoJbWF4TnVtT2Zab25lQ29kZXMsIA0KCU8tQ1NJLCANCglELUNTSSwNCglPLUJjc21DYW1lbFREUENyaXRlcmlhTGlzdCwgDQoJVC1CQ1NNLUNBTUVMLVREUC1Dcml0ZXJpYUxpc3QsDQoJU1MtQ1NJLA0KCVNlcnZpY2VLZXksDQoJRGVmYXVsdENhbGxIYW5kbGluZywNCglDYW1lbENhcGFiaWxpdHlIYW5kbGluZywNCglCYXNpY1NlcnZpY2VDcml0ZXJpYSwNCglTdXBwb3J0ZWRDYW1lbFBoYXNlcywNCglPZmZlcmVkQ2FtZWw0Q1NJcywNCglPZmZlcmVkQ2FtZWw0RnVuY3Rpb25hbGl0aWVzLA0KCW1heE51bU9mQ2FtZWxURFBEYXRhLA0KCUNVRy1JbmRleCwgDQoJQ1VHLUluZm8sDQoJQ1VHLUludGVybG9jaywNCglJbnRlckNVRy1SZXN0cmljdGlvbnMsDQoJSW50cmFDVUctT3B0aW9ucywNCglOb3RpZmljYXRpb25Ub01TVXNlciwgDQoJUW9TLVN1YnNjcmliZWQsDQoJSVNULUFsZXJ0VGltZXJWYWx1ZSwNCglULUNTSSwNCglULUJjc21UcmlnZ2VyRGV0ZWN0aW9uUG9pbnQsDQoJQVBOLA0KQWRkaXRpb25hbEluZm8sDQoNCgktLSBmYXVsdCByZWNvdmVyeSB0eXBlcw0KCVJlc2V0QXJnLA0KCVJlc3RvcmVEYXRhQXJnLA0KCVJlc3RvcmVEYXRhUmVzLA0KDQotLSBwcm92aWRlIHN1YnNjcmliZXIgaW5mbyB0eXBlcyANCglHZW9ncmFwaGljYWxJbmZvcm1hdGlvbiwgDQoJTVMtQ2xhc3NtYXJrMiwNCglHUFJTTVNDbGFzcywNCg0KCS0tIHN1YnNjcmliZXIgaW5mb3JtYXRpb24gZW5xdWlyeSB0eXBlcw0KCVByb3ZpZGVTdWJzY3JpYmVySW5mb0FyZywNCglQcm92aWRlU3Vic2NyaWJlckluZm9SZXMsDQoJU3Vic2NyaWJlckluZm8sDQoJTG9jYXRpb25JbmZvcm1hdGlvbiwNCglMb2NhdGlvbkluZm9ybWF0aW9uR1BSUywNCglSQUlkZW50aXR5LA0KCVN1YnNjcmliZXJTdGF0ZSwNCglHUFJTQ2hhcmdpbmdJRCwgDQoJTU5QSW5mb1JlcywNCglSb3V0ZWluZ051bWJlciwNCg0KCS0tIGFueSB0aW1lIGluZm9ybWF0aW9uIGVucXVpcnkgdHlwZXMNCglBbnlUaW1lSW50ZXJyb2dhdGlvbkFyZywNCglBbnlUaW1lSW50ZXJyb2dhdGlvblJlcywNCg0KCS0tIGFueSB0aW1lIGluZm9ybWF0aW9uIGhhbmRsaW5nIHR5cGVzDQoJQW55VGltZVN1YnNjcmlwdGlvbkludGVycm9nYXRpb25BcmcsDQoJQW55VGltZVN1YnNjcmlwdGlvbkludGVycm9nYXRpb25SZXMsDQoJQW55VGltZU1vZGlmaWNhdGlvbkFyZywNCglBbnlUaW1lTW9kaWZpY2F0aW9uUmVzLA0KDQoJLS0gc3Vic2NyaWJlciBkYXRhIG1vZGlmaWNhdGlvbiBub3RpZmljYXRpb24gdHlwZXMNCglOb3RlU3Vic2NyaWJlckRhdGFNb2RpZmllZEFyZywNCglOb3RlU3Vic2NyaWJlckRhdGFNb2RpZmllZFJlcywNCg0KCS0tIGdwcnMgbG9jYXRpb24gaW5mb3JtYXRpb24gcmV0cmlldmFsIHR5cGVzDQoJU2VuZFJvdXRpbmdJbmZvRm9yR3Byc0FyZywNCglTZW5kUm91dGluZ0luZm9Gb3JHcHJzUmVzLA0KDQoJLS0gZmFpbHVyZSByZXBvcnRpbmcgdHlwZXMNCglGYWlsdXJlUmVwb3J0QXJnLA0KCUZhaWx1cmVSZXBvcnRSZXMsDQoNCgktLSBncHJzIG5vdGlmaWNhdGlvbiB0eXBlcw0KCU5vdGVNc1ByZXNlbnRGb3JHcHJzQXJnLA0KCU5vdGVNc1ByZXNlbnRGb3JHcHJzUmVzLA0KDQoJLS0gTW9iaWxpdHkgTWFuYWdlbWVudCB0eXBlcw0KCU5vdGVNTS1FdmVudEFyZywNCglOb3RlTU0tRXZlbnRSZXMsDQoJTnVtYmVyUG9ydGFiaWxpdHlTdGF0dXMsDQoJUGFnaW5nQXJlYSwNCg0KCS0tIFZHQ1MgLyBWQlMgdHlwZXMgdHlwZXMNCkdyb3VwSWQsIA0KTG9uZy1Hcm91cElkLA0KQWRkaXRpb25hbFN1YnNjcmlwdGlvbnMNCg0KOw0KDQpJTVBPUlRTDQoJbWF4TnVtT2ZTUywNCglTUy1TdWJzY3JpcHRpb25PcHRpb24sDQoJU1MtTGlzdCwNCglTUy1Gb3JCUy1Db2RlLA0KCVBhc3N3b3JkDQpGUk9NIE1BUC1TUy1EYXRhVHlwZXMgew0KICAgaXR1LXQgaWRlbnRpZmllZC1vcmdhbml6YXRpb24gKDQpIGV0c2kgKDApIG1vYmlsZURvbWFpbiAoMCkNCiAgIGdzbS1OZXR3b3JrICgxKSBtb2R1bGVzICgzKSBtYXAtU1MtRGF0YVR5cGVzICgxNCkgdmVyc2lvbjEyICgxMil9DQoNCglTUy1Db2RlDQpGUk9NIE1BUC1TUy1Db2RlIHsNCiAgIGl0dS10IGlkZW50aWZpZWQtb3JnYW5pemF0aW9uICg0KSBldHNpICgwKSBtb2JpbGVEb21haW4gKDApDQogICBnc20tTmV0d29yayAoMSkgbW9kdWxlcyAoMykgbWFwLVNTLUNvZGUgKDE1KSB2ZXJzaW9uMTIgKDEyKX0NCg0KCUV4dC1CZWFyZXJTZXJ2aWNlQ29kZQ0KRlJPTSBNQVAtQlMtQ29kZSB7DQogICBpdHUtdCBpZGVudGlmaWVkLW9yZ2FuaXphdGlvbiAoNCkgZXRzaSAoMCkgbW9iaWxlRG9tYWluICgwKQ0KICAgZ3NtLU5ldHdvcmsgKDEpIG1vZHVsZXMgKDMpIG1hcC1CUy1Db2RlICgyMCkgdmVyc2lvbjEyICgxMil9DQoNCglFeHQtVGVsZXNlcnZpY2VDb2RlDQpGUk9NIE1BUC1UUy1Db2RlIHsNCiAgIGl0dS10IGlkZW50aWZpZWQtb3JnYW5pemF0aW9uICg0KSBldHNpICgwKSBtb2JpbGVEb21haW4gKDApDQogICBnc20tTmV0d29yayAoMSkgbW9kdWxlcyAoMykgbWFwLVRTLUNvZGUgKDE5KSB2ZXJzaW9uMTIgKDEyKX0NCg0KCUFkZHJlc3NTdHJpbmcsDQoJSVNETi1BZGRyZXNzU3RyaW5nLCANCglJU0ROLVN1YmFkZHJlc3NTdHJpbmcsIA0KCUZUTi1BZGRyZXNzU3RyaW5nLA0KCUFjY2Vzc05ldHdvcmtTaWduYWxJbmZvLA0KCUlNU0ksIA0KCUlNRUksDQoJVE1TSSwNCglITFItTGlzdCwNCglMTVNJLA0KCUlkZW50aXR5LA0KCUdsb2JhbENlbGxJZCwNCglDZWxsR2xvYmFsSWRPclNlcnZpY2VBcmVhSWRPckxBSSwNCglFeHQtQmFzaWNTZXJ2aWNlQ29kZSwNCglOQUVBLVByZWZlcnJlZENJLA0KCUVNTFBQLUluZm8sIA0KCU1DLVNTLUluZm8sDQoJU3Vic2NyaWJlcklkZW50aXR5LA0KCUFnZU9mTG9jYXRpb25JbmZvcm1hdGlvbiwNCglMQ1NDbGllbnRFeHRlcm5hbElELA0KCUxDU0NsaWVudEludGVybmFsSUQsDQoJRXh0LVNTLVN0YXR1cywNCglMQ1NTZXJ2aWNlVHlwZUlELA0KCUFTQ0ktQ2FsbFJlZmVyZW5jZSwNCglUQkNELVNUUklORywNCglMQUlGaXhlZExlbmd0aCwNCglQTE1OLUlkLA0KRU1MUFAtUHJpb3JpdHksDQpHU04tQWRkcmVzcywNCkRpYW1ldGVySWRlbnRpdHkNCkZST00gTUFQLUNvbW1vbkRhdGFUeXBlcyB7DQogICBpdHUtdCBpZGVudGlmaWVkLW9yZ2FuaXphdGlvbiAoNCkgZXRzaSAoMCkgbW9iaWxlRG9tYWluICgwKQ0KICAgZ3NtLU5ldHdvcmsgKDEpIG1vZHVsZXMgKDMpIG1hcC1Db21tb25EYXRhVHlwZXMgKDE4KSB2ZXJzaW9uMTIgKDEyKX0NCg0KCUV4dGVuc2lvbkNvbnRhaW5lcg0KRlJPTSBNQVAtRXh0ZW5zaW9uRGF0YVR5cGVzIHsNCiAgIGl0dS10IGlkZW50aWZpZWQtb3JnYW5pemF0aW9uICg0KSBldHNpICgwKSBtb2JpbGVEb21haW4gKDApDQogICBnc20tTmV0d29yayAoMSkgbW9kdWxlcyAoMykgbWFwLUV4dGVuc2lvbkRhdGFUeXBlcyAoMjEpIHZlcnNpb24xMiAoMTIpfQ0KDQoJQWJzZW50U3Vic2NyaWJlckRpYWdub3N0aWNTTQ0KRlJPTSBNQVAtRVItRGF0YVR5cGVzIHsNCiAgIGl0dS10IGlkZW50aWZpZWQtb3JnYW5pemF0aW9uICg0KSBldHNpICgwKSBtb2JpbGVEb21haW4gKDApDQogICBnc20tTmV0d29yayAoMSkgbW9kdWxlcyAoMykgbWFwLUVSLURhdGFUeXBlcyAoMTcpIHZlcnNpb24xMiAoMTIpfQ0KDQoJVHJhY2VQcm9wYWdhdGlvbkxpc3QNCkZST00gTUFQLU9NLURhdGFUeXBlcyB7DQogICBpdHUtdCBpZGVudGlmaWVkLW9yZ2FuaXphdGlvbiAoNCkgZXRzaSAoMCkgbW9iaWxlRG9tYWluICgwKQ0KICAgZ3NtLU5ldHdvcmsgKDEpIG1vZHVsZXMgKDMpIG1hcC1PTS1EYXRhVHlwZXMgKDEyKSB2ZXJzaW9uMTIgKDEyKX0NCg0KOw0KDQotLSBsb2NhdGlvbiByZWdpc3RyYXRpb24gdHlwZXMNCg0KVXBkYXRlTG9jYXRpb25BcmcgOjo9IFNFUVVFTkNFIHsNCglpbXNpCQkJSU1TSSwNCgltc2MtTnVtYmVyCVsxXSBJU0ROLUFkZHJlc3NTdHJpbmcsDQoJdmxyLU51bWJlcglJU0ROLUFkZHJlc3NTdHJpbmcsDQoJbG1zaQkJCVsxMF0gTE1TSQkJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4gLA0KCXZsci1DYXBhYmlsaXR5CVs2XSBWTFItQ2FwYWJpbGl0eQlPUFRJT05BTCwNCglpbmZvcm1QcmV2aW91c05ldHdvcmtFbnRpdHkJWzExXQlOVUxMCQlPUFRJT05BTCwNCgljcy1MQ1MtTm90U3VwcG9ydGVkQnlVRQlbMTJdCU5VTEwJCU9QVElPTkFMLA0KCXYtZ21sYy1BZGRyZXNzCVsyXQlHU04tQWRkcmVzcwlPUFRJT05BTCwNCglhZGQtaW5mbwkJWzEzXSBBREQtSW5mbwlPUFRJT05BTCwNCglwYWdpbmdBcmVhCVsxNF0gUGFnaW5nQXJlYQlPUFRJT05BTCwNCglza2lwU3Vic2NyaWJlckRhdGFVcGRhdGUJWzE1XSBOVUxMCQlPUFRJT05BTCwgDQoJLS0gVGhlIHNraXBTdWJzY3JpYmVyRGF0YVVwZGF0ZSBwYXJhbWV0ZXIgaW4gdGhlIFVwZGF0ZUxvY2F0aW9uQXJnIGFuZCB0aGUgQURELUluZm8NCgktLSBzdHJ1Y3R1cmVzIGNhcnJ5IHRoZSBzYW1lIHNlbWFudGljLg0KCXJlc3RvcmF0aW9uSW5kaWNhdG9yCVsxNl0JTlVMTAkJT1BUSU9OQUwNCgkgfQ0KDQpWTFItQ2FwYWJpbGl0eSA6Oj0gU0VRVUVOQ0V7DQoJc3VwcG9ydGVkQ2FtZWxQaGFzZXMgIAlbMF0gU3VwcG9ydGVkQ2FtZWxQaGFzZXMJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4gLA0KCXNvbHNhU3VwcG9ydEluZGljYXRvcglbMl0gTlVMTAkJT1BUSU9OQUwsDQoJaXN0U3VwcG9ydEluZGljYXRvcglbMV0gSVNULVN1cHBvcnRJbmRpY2F0b3IJT1BUSU9OQUwsDQoJc3VwZXJDaGFyZ2VyU3VwcG9ydGVkSW5TZXJ2aW5nTmV0d29ya0VudGl0eQlbM10gU3VwZXJDaGFyZ2VySW5mbwlPUFRJT05BTCwNCglsb25nRlROLVN1cHBvcnRlZAlbNF0JTlVMTAkJT1BUSU9OQUwsDQoJc3VwcG9ydGVkTENTLUNhcGFiaWxpdHlTZXRzCVs1XQlTdXBwb3J0ZWRMQ1MtQ2FwYWJpbGl0eVNldHMJT1BUSU9OQUwsDQoJb2ZmZXJlZENhbWVsNENTSXMJWzZdIE9mZmVyZWRDYW1lbDRDU0lzCU9QVElPTkFMLA0KCXN1cHBvcnRlZFJBVC1UeXBlc0luZGljYXRvcglbN10JU3VwcG9ydGVkUkFULVR5cGVzCU9QVElPTkFMLA0KCWxvbmdHcm91cElELVN1cHBvcnRlZAlbOF0JTlVMTAkJT1BUSU9OQUwgfQ0KDQpTdXBwb3J0ZWRSQVQtVHlwZXM6Oj0gQklUIFNUUklORyB7DQoJdXRyYW4gICgwKSwNCglnZXJhbiAgKDEpLA0KCWdhbiAgICAoMiksDQoJaS1oc3BhLWV2b2x1dGlvbiAoMyksDQoJZS11dHJhbgkoNCl9IChTSVpFICgyLi44KSkNCgktLSBleGNlcHRpb24gaGFuZGxpbmc6IGJpdHMgNSB0byA3IHNoYWxsIGJlIGlnbm9yZWQgaWYgcmVjZWl2ZWQgYW5kIG5vdCB1bmRlcnN0b29kDQoJIA0KDQoNClN1cGVyQ2hhcmdlckluZm8gOjo9IENIT0lDRSB7DQoJc2VuZFN1YnNjcmliZXJEYXRhCVswXSBOVUxMLA0KCXN1YnNjcmliZXJEYXRhU3RvcmVkCVsxXSBBZ2VJbmRpY2F0b3IgfQ0KDQpBZ2VJbmRpY2F0b3IgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMS4uNikpDQoJLS0gVGhlIGludGVybmFsIHN0cnVjdHVyZSBvZiB0aGlzIHBhcmFtZXRlciBpcyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYy4NCg0KSVNULVN1cHBvcnRJbmRpY2F0b3IgOjo9ICBFTlVNRVJBVEVEIHsNCgliYXNpY0lTVFN1cHBvcnRlZAkoMCksDQoJaXN0Q29tbWFuZFN1cHBvcnRlZAkoMSksDQoJLi4ufQ0KLS0gZXhjZXB0aW9uIGhhbmRsaW5nOg0KLS0gcmVjZXB0aW9uIG9mIHZhbHVlcyA+IDEgc2hhbGwgYmUgbWFwcGVkIHRvICcgaXN0Q29tbWFuZFN1cHBvcnRlZCAnDQoNClN1cHBvcnRlZExDUy1DYXBhYmlsaXR5U2V0cyA6Oj0gQklUIFNUUklORyB7DQoJbGNzQ2FwYWJpbGl0eVNldDEgKDApLA0KCWxjc0NhcGFiaWxpdHlTZXQyICgxKSwNCglsY3NDYXBhYmlsaXR5U2V0MyAoMiksDQoJbGNzQ2FwYWJpbGl0eVNldDQgKDMpICwNCglsY3NDYXBhYmlsaXR5U2V0NSAoNCkgfSAoU0laRSAoMi4uMTYpKSANCi0tIENvcmUgbmV0d29yayBzaWduYWxsaW5nIGNhcGFiaWxpdHkgc2V0MSBpbmRpY2F0ZXMgTENTIFJlbGVhc2U5OCBvciBSZWxlYXNlOTkgdmVyc2lvbi4NCi0tIENvcmUgbmV0d29yayBzaWduYWxsaW5nIGNhcGFiaWxpdHkgc2V0MiBpbmRpY2F0ZXMgTENTIFJlbGVhc2U0Lg0KLS0gQ29yZSBuZXR3b3JrIHNpZ25hbGxpbmcgY2FwYWJpbGl0eSBzZXQzIGluZGljYXRlcyBMQ1MgUmVsZWFzZTUuDQotLSBDb3JlIG5ldHdvcmsgc2lnbmFsbGluZyBjYXBhYmlsaXR5IHNldDQgaW5kaWNhdGVzIExDUyBSZWxlYXNlNi4NCi0tIENvcmUgbmV0d29yayBzaWduYWxsaW5nIGNhcGFiaWxpdHkgc2V0NSBpbmRpY2F0ZXMgTENTIFJlbGVhc2U3IG9yIGxhdGVyIHZlcnNpb24uDQotLSBBIG5vZGUgc2hhbGwgbWFyayBpbiB0aGUgQklUIFNUUklORyBhbGwgTENTIGNhcGFiaWxpdHkgc2V0cyBpdCBzdXBwb3J0cy4gDQotLSBJZiBubyBiaXQgaXMgc2V0IHRoZW4gdGhlIHNlbmRpbmcgbm9kZSBkb2VzIG5vdCBzdXBwb3J0IExDUy4NCi0tIElmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IHNlbnQgYnkgYW4gVkxSIHRoZW4gdGhlIFZMUiBtYXkgc3VwcG9ydCBhdCBtb3N0IGNhcGFiaWxpdHkgc2V0MS4NCi0tIElmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IHNlbnQgYnkgYW4gU0dTTiB0aGVuIG5vIHN1cHBvcnQgZm9yIExDUyBpcyBhc3N1bWVkLg0KLS0gQW4gU0dTTiBpcyBub3QgYWxsb3dlZCB0byBpbmRpY2F0ZSBzdXBwb3J0IG9mIGNhcGFiaWxpdHkgc2V0MS4NCi0tIE90aGVyIGJpdHMgdGhhbiBsaXN0ZWQgYWJvdmUgc2hhbGwgYmUgZGlzY2FyZGVkLg0KDQpVcGRhdGVMb2NhdGlvblJlcyA6Oj0gU0VRVUVOQ0Ugew0KCWhsci1OdW1iZXIJSVNETi1BZGRyZXNzU3RyaW5nLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLA0KCWFkZC1DYXBhYmlsaXR5CU5VTEwJCQlPUFRJT05BTCwNCglwYWdpbmdBcmVhLUNhcGFiaWxpdHkJWzBdTlVMTAkJCU9QVElPTkFMIH0NCg0KQURELUluZm8gOjo9IFNFUVVFTkNFIHsNCglpbWVpc3YJCVswXSBJTUVJLA0KCXNraXBTdWJzY3JpYmVyRGF0YVVwZGF0ZQlbMV0gTlVMTAkJT1BUSU9OQUwsDQoJLS0gVGhlIHNraXBTdWJzY3JpYmVyRGF0YVVwZGF0ZSBwYXJhbWV0ZXIgaW4gdGhlIFVwZGF0ZUxvY2F0aW9uQXJnIGFuZCB0aGUgQURELUluZm8NCgktLSBzdHJ1Y3R1cmVzIGNhcnJ5IHRoZSBzYW1lIHNlbWFudGljLg0KCS4uLn0NCg0KDQpQYWdpbmdBcmVhIDo6PSBTRVFVRU5DRSBTSVpFICgxLi41KSBPRiBMb2NhdGlvbkFyZWEgDQoNCg0KTG9jYXRpb25BcmVhIDo6PSBDSE9JQ0Ugew0KCWxhaUZpeGVkTGVuZ3RoCVswXSBMQUlGaXhlZExlbmd0aCwNCglsYWMJCQlbMV0gTEFDfQ0KDQoNCkxBQyA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgyKSkNCgktLSBSZWZlcnMgdG8gTG9jYXRpb24gQXJlYSBDb2RlIG9mIHRoZSBMb2NhdGlvbiBBcmVhIElkZW50aWZpY2F0aW9uIGRlZmluZWQgaW4gDQogICAgIC0tIDNHUFAgVFMgMjMuMDAzIFsxN10uDQoJLS0gTG9jYXRpb24gQXJlYSBDb2RlIGFjY29yZGluZyB0byAzR1BQIFRTIDI0LjAwOCBbMzVdDQoNCkNhbmNlbExvY2F0aW9uQXJnIDo6PSBbM10gU0VRVUVOQ0Ugew0KCWlkZW50aXR5CQlJZGVudGl0eSwNCgljYW5jZWxsYXRpb25UeXBlCUNhbmNlbGxhdGlvblR5cGUJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4sDQoJdHlwZU9mVXBkYXRlCVswXSBUeXBlT2ZVcGRhdGUJT1BUSU9OQUwgfQ0KDQpUeXBlT2ZVcGRhdGUgOjo9IEVOVU1FUkFURUQgew0KCXNnc24tY2hhbmdlICgwKSwNCgltbWUtY2hhbmdlICgxKSwNCgkuLi59DQoJLS0gVHlwZU9mVXBkYXRlIHNoYWxsIGJlIGFic2VudCBpZiBDYW5jZWxsYXRpb25UeXBlIGlzIGRpZmZlcmVudCBmcm9tIHVwZGF0ZVByb2NlZHVyZQ0KDQpDYW5jZWxsYXRpb25UeXBlIDo6PSBFTlVNRVJBVEVEIHsNCgl1cGRhdGVQcm9jZWR1cmUJKDApLA0KCXN1YnNjcmlwdGlvbldpdGhkcmF3CSgxKSwNCgkuLi4sDQoJaW5pdGlhbEF0dGFjaFByb2NlZHVyZSAgICAgICAgICAgICAgICgyKX0NCgktLSBUaGUgSExSIHNoYWxsIG5vdCBzZW5kIHZhbHVlcyBvdGhlciB0aGFuIGxpc3RlZCBhYm92ZQ0KDQpDYW5jZWxMb2NhdGlvblJlcyA6Oj0gU0VRVUVOQ0Ugew0KCWV4dGVuc2lvbkNvbnRhaW5lcglFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpQdXJnZU1TLUFyZyA6Oj0gWzNdIFNFUVVFTkNFIHsNCglpbXNpCQkJSU1TSSwNCgl2bHItTnVtYmVyCVswXSBJU0ROLUFkZHJlc3NTdHJpbmcJT1BUSU9OQUwsDQoJc2dzbi1OdW1iZXIJWzFdCUlTRE4tQWRkcmVzc1N0cmluZwlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KUHVyZ2VNUy1SZXMgOjo9IFNFUVVFTkNFIHsNCglmcmVlemVUTVNJCVswXQlOVUxMCQlPUFRJT05BTCwNCglmcmVlemVQLVRNU0kJWzFdCU5VTEwJCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLA0KCWZyZWV6ZU0tVE1TSQlbMl0JTlVMTAkJT1BUSU9OQUwgfQ0KDQpTZW5kSWRlbnRpZmljYXRpb25BcmcgOjo9IFNFUVVFTkNFIHsNCgl0bXNpCQkJVE1TSSwNCgludW1iZXJPZlJlcXVlc3RlZFZlY3RvcnMJTnVtYmVyT2ZSZXF1ZXN0ZWRWZWN0b3JzIAlPUFRJT05BTCwNCgktLSB3aXRoaW4gYSBkaWFsb2d1ZSBudW1iZXJPZlJlcXVlc3RlZFZlY3RvcnMgc2hhbGwgYmUgcHJlc2VudCBpbiANCgktLSB0aGUgZmlyc3Qgc2VydmljZSByZXF1ZXN0IGFuZCBzaGFsbCBub3QgYmUgcHJlc2VudCBpbiBzdWJzZXF1ZW50IHNlcnZpY2UgcmVxdWVzdHMuIA0KCS0tIElmIHJlY2VpdmVkIGluIGEgc3Vic2VxdWVudCBzZXJ2aWNlIHJlcXVlc3QgaXQgc2hhbGwgYmUgZGlzY2FyZGVkLiANCglzZWdtZW50YXRpb25Qcm9oaWJpdGVkCU5VTEwJCQlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLiwNCgltc2MtTnVtYmVyCUlTRE4tQWRkcmVzc1N0cmluZyAJT1BUSU9OQUwsDQoJcHJldmlvdXMtTEFJCVswXSBMQUlGaXhlZExlbmd0aAlPUFRJT05BTCwNCglob3BDb3VudGVyCVsxXSBIb3BDb3VudGVyCU9QVElPTkFMIH0NCg0KSG9wQ291bnRlciA6Oj0gSU5URUdFUiAoMC4uMykNCg0KU2VuZElkZW50aWZpY2F0aW9uUmVzIDo6PSBbM10gU0VRVUVOQ0Ugew0KCWltc2kJCQlJTVNJCQkJT1BUSU9OQUwsDQoJLS0gSU1TSSBzaGFsbCBiZSBwcmVzZW50IGluIHRoZSBmaXJzdCAob3Igb25seSkgc2VydmljZSByZXNwb25zZSBvZiBhIGRpYWxvZ3VlLg0KCS0tIElmIG11bHRpcGxlIHNlcnZpY2UgcmVxdWVzdHMgYXJlIHByZXNlbnQgaW4gYSBkaWFsb2d1ZSB0aGVuIElNU0kNCgktLSBzaGFsbCBub3QgYmUgcHJlc2VudCBpbiBhbnkgc2VydmljZSByZXNwb25zZSBvdGhlciB0aGFuIHRoZSBmaXJzdCBvbmUuDQoJYXV0aGVudGljYXRpb25TZXRMaXN0CUF1dGhlbnRpY2F0aW9uU2V0TGlzdAlPUFRJT05BTCwNCgljdXJyZW50U2VjdXJpdHlDb250ZXh0CVsyXUN1cnJlbnRTZWN1cml0eUNvbnRleHQJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVszXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQotLSBhdXRoZW50aWNhdGlvbiBtYW5hZ2VtZW50IHR5cGVzDQoNCkF1dGhlbnRpY2F0aW9uU2V0TGlzdCA6Oj0gQ0hPSUNFIHsNCgl0cmlwbGV0TGlzdAlbMF0gVHJpcGxldExpc3QsDQoJcXVpbnR1cGxldExpc3QJWzFdIFF1aW50dXBsZXRMaXN0IH0NCg0KVHJpcGxldExpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLjUpIE9GDQoJCQkJQXV0aGVudGljYXRpb25UcmlwbGV0DQoNClF1aW50dXBsZXRMaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi41KSBPRg0KCQkJCUF1dGhlbnRpY2F0aW9uUXVpbnR1cGxldA0KDQpBdXRoZW50aWNhdGlvblRyaXBsZXQgOjo9IFNFUVVFTkNFIHsNCglyYW5kCQkJUkFORCwNCglzcmVzCQkJU1JFUywNCglrYwkJCUtjLA0KCS4uLn0NCg0KQXV0aGVudGljYXRpb25RdWludHVwbGV0IDo6PSBTRVFVRU5DRSB7DQoJcmFuZAkJCVJBTkQsDQoJeHJlcwkJCVhSRVMsDQoJY2sJCQlDSywNCglpawkJCUlLLA0KCWF1dG4JCQlBVVROLA0KCS4uLn0NCg0KQ3VycmVudFNlY3VyaXR5Q29udGV4dCA6Oj0gQ0hPSUNFIHsNCglnc20tU2VjdXJpdHlDb250ZXh0RGF0YQlbMF0gR1NNLVNlY3VyaXR5Q29udGV4dERhdGEsDQoJdW10cy1TZWN1cml0eUNvbnRleHREYXRhCVsxXSBVTVRTLVNlY3VyaXR5Q29udGV4dERhdGEgfQ0KDQpHU00tU2VjdXJpdHlDb250ZXh0RGF0YSA6Oj0gU0VRVUVOQ0Ugew0KCWtjCQkJS2MsDQoJY2tzbgkJCUNrc24sDQoJLi4uIH0NCg0KVU1UUy1TZWN1cml0eUNvbnRleHREYXRhIDo6PSBTRVFVRU5DRSB7DQoJY2sJCQlDSywNCglpawkJCUlLLA0KCWtzaQkJCUtTSSwNCgkuLi4gfQ0KDQpSQU5EIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDE2KSkNCg0KU1JFUyA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICg0KSkNCg0KS2MgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoOCkpDQoNClhSRVMgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoNC4uMTYpKQ0KDQpDSyA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxNikpDQoNCklLIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDE2KSkNCg0KQVVUTiA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxNikpDQoNCkFVVFMgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMTQpKQ0KDQpDa3NuIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEpKQ0KCS0tIFRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCBpbiAzR1BQIFRTIDI0LjAwOA0KDQpLU0kgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMSkpDQoJLS0gVGhlIGludGVybmFsIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGluIDNHUFAgVFMgMjQuMDA4DQoNCkF1dGhlbnRpY2F0aW9uRmFpbHVyZVJlcG9ydEFyZyA6Oj0gU0VRVUVOQ0Ugew0KCWltc2kJCQlJTVNJLA0KCWZhaWx1cmVDYXVzZQlGYWlsdXJlQ2F1c2UsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4gLA0KCXJlLWF0dGVtcHQJQk9PTEVBTgkJT1BUSU9OQUwsDQoJYWNjZXNzVHlwZQlBY2Nlc3NUeXBlCU9QVElPTkFMLA0KCXJhbmQJCQlSQU5ECQkJT1BUSU9OQUwsDQoJdmxyLU51bWJlcglbMF0gSVNETi1BZGRyZXNzU3RyaW5nCU9QVElPTkFMLA0KCXNnc24tTnVtYmVyCVsxXSBJU0ROLUFkZHJlc3NTdHJpbmcJT1BUSU9OQUwgfQ0KDQpBY2Nlc3NUeXBlIDo6PSBFTlVNRVJBVEVEIHsNCgljYWxsICgwKSwNCgllbWVyZ2VuY3lDYWxsICgxKSwNCglsb2NhdGlvblVwZGF0aW5nICgyKSwNCglzdXBwbGVtZW50YXJ5U2VydmljZSAoMyksDQoJc2hvcnRNZXNzYWdlICg0KSwNCglncHJzQXR0YWNoICg1KSwNCglyb3V0aW5nQXJlYVVwZGF0aW5nICg2KSwNCglzZXJ2aWNlUmVxdWVzdCAoNyksDQoJcGRwQ29udGV4dEFjdGl2YXRpb24gKDgpLA0KCXBkcENvbnRleHREZWFjdGl2YXRpb24gKDkpLA0KCS4uLiwNCglncHJzRGV0YWNoICgxMCl9DQoJLS0gZXhjZXB0aW9uIGhhbmRsaW5nOg0KCS0tIHJlY2VpdmVkIHZhbHVlcyBncmVhdGVyIHRoYW4gMTAgc2hhbGwgYmUgaWdub3JlZC4NCg0KQXV0aGVudGljYXRpb25GYWlsdXJlUmVwb3J0UmVzIDo6PSBTRVFVRU5DRSB7DQoJZXh0ZW5zaW9uQ29udGFpbmVyCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi59DQoNCkZhaWx1cmVDYXVzZSA6Oj0gRU5VTUVSQVRFRCB7DQoJd3JvbmdVc2VyUmVzcG9uc2UgICgwKSwNCgl3cm9uZ05ldHdvcmtTaWduYXR1cmUgICgxKX0NCg0KLS0gZ3BycyBsb2NhdGlvbiByZWdpc3RyYXRpb24gdHlwZXMNCg0KVXBkYXRlR3Byc0xvY2F0aW9uQXJnIDo6PSBTRVFVRU5DRSB7DQoJaW1zaQkJCUlNU0ksDQoJc2dzbi1OdW1iZXIJSVNETi1BZGRyZXNzU3RyaW5nLAkNCglzZ3NuLUFkZHJlc3MJR1NOLUFkZHJlc3MsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4gLA0KCXNnc24tQ2FwYWJpbGl0eQlbMF0gU0dTTi1DYXBhYmlsaXR5CU9QVElPTkFMLA0KCWluZm9ybVByZXZpb3VzTmV0d29ya0VudGl0eQlbMV0JTlVMTAkJT1BUSU9OQUwsDQoJcHMtTENTLU5vdFN1cHBvcnRlZEJ5VUUJWzJdCU5VTEwJCU9QVElPTkFMLA0KCXYtZ21sYy1BZGRyZXNzCVszXQlHU04tQWRkcmVzcwlPUFRJT05BTCwNCglhZGQtaW5mbwkJWzRdICBBREQtSW5mbwlPUFRJT05BTCwNCgllcHMtaW5mbwkJWzVdCUVQUy1JbmZvCU9QVElPTkFMLA0KCXNlcnZpbmdOb2RlVHlwZUluZGljYXRvcglbNl0JTlVMTAkJT1BUSU9OQUwsDQoJc2tpcFN1YnNjcmliZXJEYXRhVXBkYXRlCVs3XSBOVUxMCQlPUFRJT05BTCwNCgl1c2VkUkFULVR5cGUJWzhdIFVzZWQtUkFULVR5cGUJT1BUSU9OQUwsDQoJZ3Byc1N1YnNjcmlwdGlvbkRhdGFOb3ROZWVkZWQJWzldIE5VTEwJCU9QVElPTkFMLA0KCW5vZGVUeXBlSW5kaWNhdG9yCVsxMF0gTlVMTAkJT1BUSU9OQUwsDQoJYXJlYVJlc3RyaWN0ZWQJWzExXSBOVUxMCQlPUFRJT05BTCwNCgl1ZS1yZWFjaGFibGVJbmRpY2F0b3IJWzEyXQlOVUxMCQlPUFRJT05BTCwgDQoJZXBzU3Vic2NyaXB0aW9uRGF0YU5vdE5lZWRlZAlbMTNdIE5VTEwJCU9QVElPTkFMIH0NCg0KVXNlZC1SQVQtVHlwZTo6PSBFTlVNRVJBVEVEIHsNCgl1dHJhbiAgKDApLA0KCWdlcmFuICAoMSksDQoJZ2FuICAgICgyKSwNCglpLWhzcGEtZXZvbHV0aW9uICgzKSwNCgllLXV0cmFuCSg0KSwNCgkuLi59DQoNCkVQUy1JbmZvIDo6PSBDSE9JQ0V7DQoJcGRuLWd3LXVwZGF0ZQlbMF0gUEROLUdXLVVwZGF0ZSwNCglpc3ItSW5mb3JtYXRpb24JWzFdIElTUi1JbmZvcm1hdGlvbiB9DQoNClBETi1HVy1VcGRhdGUgOjo9IFNFUVVFTkNFew0KCWFwbgkJCVswXSBBUE4JCU9QVElPTkFMLA0KCXBkbi1ndy1JZGVudGl0eQlbMV0gUEROLUdXLUlkZW50aXR5CU9QVElPTkFMLA0KCWNvbnRleHRJZAkJWzJdIENvbnRleHRJZCAgICAgICAgICAgICAgICAgICAgIE9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbM10gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLiB9DQoNCklTUi1JbmZvcm1hdGlvbjo6PSBCSVQgU1RSSU5HIHsNCgl1cGRhdGVNTUUgICgwKSwNCgljYW5jZWxTR1NOICAoMSksDQoJaW5pdGlhbEF0dGFjaEluZGljYXRvciAgKDIpfSAoU0laRSAoMy4uOCkpDQoJLS0gZXhjZXB0aW9uIGhhbmRsaW5nOiByZWNlcHRpb24gb2YgdW5rbm93biBiaXQgYXNzaWdubWVudHMgaW4gdGhlDQoJLS0gSVNSLUluZm9ybWF0aW9uIGRhdGEgdHlwZSBzaGFsbCBiZSBkaXNjYXJkZWQgYnkgdGhlIHJlY2VpdmVyIA0KDQpTR1NOLUNhcGFiaWxpdHkgOjo9IFNFUVVFTkNFew0KCXNvbHNhU3VwcG9ydEluZGljYXRvcglOVUxMCQkJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVsxXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uICwNCglzdXBlckNoYXJnZXJTdXBwb3J0ZWRJblNlcnZpbmdOZXR3b3JrRW50aXR5CVsyXSBTdXBlckNoYXJnZXJJbmZvCU9QVElPTkFMICwNCglncHJzRW5oYW5jZW1lbnRzU3VwcG9ydEluZGljYXRvciAJWzNdIE5VTEwJCU9QVElPTkFMLA0KCXN1cHBvcnRlZENhbWVsUGhhc2VzICAJWzRdIFN1cHBvcnRlZENhbWVsUGhhc2VzCU9QVElPTkFMLA0KCXN1cHBvcnRlZExDUy1DYXBhYmlsaXR5U2V0cwlbNV0gIFN1cHBvcnRlZExDUy1DYXBhYmlsaXR5U2V0cwlPUFRJT05BTCwNCglvZmZlcmVkQ2FtZWw0Q1NJcwlbNl0gT2ZmZXJlZENhbWVsNENTSXMJT1BUSU9OQUwsDQoJc21zQ2FsbEJhcnJpbmdTdXBwb3J0SW5kaWNhdG9yCVs3XQlOVUxMCQlPUFRJT05BTCwJc3VwcG9ydGVkUkFULVR5cGVzSW5kaWNhdG9yCVs4XQlTdXBwb3J0ZWRSQVQtVHlwZXMJT1BUSU9OQUwsDQoJc3VwcG9ydGVkRmVhdHVyZXMJWzldIFN1cHBvcnRlZEZlYXR1cmVzCU9QVElPTkFMLA0KCXQtYWRzRGF0YVJldHJpZXZhbAlbMTBdIE5VTEwJCU9QVElPTkFMLA0KCWhvbW9nZW5lb3VzU3VwcG9ydE9mSU1TVm9pY2VPdmVyUFNTZXNzaW9ucyBbMTFdIEJPT0xFQU4JT1BUSU9OQUwNCgktLQkidHJ1ZSIgaW5kaWNhdGVzIGhvbW9nZW5lb3VzIHN1cHBvcnQsICJmYWxzZSIgaW5kaWNhdGVzIGhvbW9nZW5lb3VzIG5vbi1zdXBwb3J0DQoJLS0JaW4gdGhlIGNvbXBsZXRlIFNHU04gYXJlYQ0KIH0NCg0KU3VwcG9ydGVkRmVhdHVyZXM6Oj0gQklUIFNUUklORyB7DQoJb2RiLWFsbC1hcG4gKDApLA0KCW9kYi1IUExNTi1BUE4gKDEpLA0KCW9kYi1WUExNTi1BUE4gKDIpLA0KCW9kYi1hbGwtb2cgKDMpLA0KCW9kYi1hbGwtaW50ZXJuYXRpb25hbC1vZyAoNCksDQoJb2RiLWFsbC1pbnQtb2ctbm90LXRvLUhQTE1OLWNvdW50cnkgKDUpLA0KCW9kYi1hbGwtaW50ZXJ6b25hbC1vZyAoNiksDQoJb2RiLWFsbC1pbnRlcnpvbmFsLW9nLW5vdC10by1IUExNTi1jb3VudHJ5ICg3KSwNCglvZGItYWxsLWludGVyem9uYWwtb2ctYW5kLWludGVybmF0LW9nLW5vdC10by1IUExNTi1jb3VudHJ5ICg4KSwNCglyZWdTdWIgKDkpLA0KCXRyYWNlICgxMCksDQoJbGNzLWFsbC1Qcml2RXhjZXAgKDExKSwNCglsY3MtdW5pdmVyc2FsICgxMiksDQoJbGNzLUNhbGxTZXNzaW9uUmVsYXRlZCAoMTMpLA0KCWxjcy1DYWxsU2Vzc2lvblVucmVsYXRlZCAoMTQpLA0KCWxjcy1QTE1OLW9wZXJhdG9yICgxNSksDQoJbGNzLVNlcnZpY2VUeXBlICgxNiksDQoJbGNzLWFsbC1NT0xSLVNTICgxNyksDQoJbGNzLWJhc2ljU2VsZkxvY2F0aW9uICgxOCksDQoJbGNzLWF1dG9ub21vdXNTZWxmTG9jYXRpb24gKDE5KSwNCglsY3MtdHJhbnNmZXJUb1RoaXJkUGFydHkgKDIwKSwNCglzbS1tby1wcCAoMjEpLA0KCWJhcnJpbmctT3V0Z29pbmdDYWxscyAoMjIpLA0KCWJhb2MgKDIzKSwNCglib2ljICgyNCksDQoJYm9pY0V4SEMgKDI1KX0gKFNJWkUgKDI2Li40MCkpDQpVcGRhdGVHcHJzTG9jYXRpb25SZXMgOjo9IFNFUVVFTkNFIHsNCglobHItTnVtYmVyCUlTRE4tQWRkcmVzc1N0cmluZywNCglleHRlbnNpb25Db250YWluZXIJRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLiwNCglhZGQtQ2FwYWJpbGl0eQlOVUxMCQkJT1BUSU9OQUwsDQoJc2dzbi1tbWVTZXBhcmF0aW9uU3VwcG9ydGVkCVswXSBOVUxMCQlPUFRJT05BTCB9DQoNCi0tIGhhbmRvdmVyIHR5cGVzDQoNCkZvcndhcmRBY2Nlc3NTaWduYWxsaW5nLUFyZyA6Oj0gWzNdIFNFUVVFTkNFIHsNCglhbi1BUERVCQlBY2Nlc3NOZXR3b3JrU2lnbmFsSW5mbywNCglpbnRlZ3JpdHlQcm90ZWN0aW9uSW5mbwlbMF0gSW50ZWdyaXR5UHJvdGVjdGlvbkluZm9ybWF0aW9uCQlPUFRJT05BTCwNCgllbmNyeXB0aW9uSW5mbwlbMV0gRW5jcnlwdGlvbkluZm9ybWF0aW9uCQlPUFRJT05BTCwNCglrZXlTdGF0dXMJCVsyXQlLZXlTdGF0dXMJT1BUSU9OQUwsDQoJYWxsb3dlZEdTTS1BbGdvcml0aG1zCVs0XQlBbGxvd2VkR1NNLUFsZ29yaXRobXMJT1BUSU9OQUwsDQoJYWxsb3dlZFVNVFMtQWxnb3JpdGhtcwlbNV0JQWxsb3dlZFVNVFMtQWxnb3JpdGhtcwlPUFRJT05BTCwNCglyYWRpb1Jlc291cmNlSW5mb3JtYXRpb24JWzZdIFJhZGlvUmVzb3VyY2VJbmZvcm1hdGlvbglPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzNdCUV4dGVuc2lvbkNvbnRhaW5lciAJT1BUSU9OQUwsDQoJLi4uLA0KCXJhZGlvUmVzb3VyY2VMaXN0CVs3XQlSYWRpb1Jlc291cmNlTGlzdAlPUFRJT05BTCwNCglic3NtYXAtU2VydmljZUhhbmRvdmVyCVs5XQlCU1NNQVAtU2VydmljZUhhbmRvdmVyCU9QVElPTkFMLA0KCXJhbmFwLVNlcnZpY2VIYW5kb3ZlcglbOF0JUkFOQVAtU2VydmljZUhhbmRvdmVyCU9QVElPTkFMLA0KCWJzc21hcC1TZXJ2aWNlSGFuZG92ZXJMaXN0CVsxMF0JQlNTTUFQLVNlcnZpY2VIYW5kb3Zlckxpc3QJT1BUSU9OQUwsDQoJY3VycmVudGx5VXNlZENvZGVjCVsxMV0gQ29kZWMJT1BUSU9OQUwsDQoJaXVTdXBwb3J0ZWRDb2RlY3NMaXN0CVsxMl0gU3VwcG9ydGVkQ29kZWNzTGlzdAlPUFRJT05BTCwNCglyYWItQ29uZmlndXJhdGlvbkluZGljYXRvcglbMTNdIE5VTEwJCU9QVElPTkFMLA0KCWl1U2VsZWN0ZWRDb2RlYwlbMTRdCUNvZGVjCU9QVElPTkFMLA0KCWFsdGVybmF0aXZlQ2hhbm5lbFR5cGUJWzE1XQlSYWRpb1Jlc291cmNlSW5mb3JtYXRpb24JT1BUSU9OQUwsDQoJdHJhY2VQcm9wYWdhdGlvbkxpc3QJWzE3XQlUcmFjZVByb3BhZ2F0aW9uTGlzdAlPUFRJT05BTCwNCiAJYW9pcFN1cHBvcnRlZENvZGVjc0xpc3RBbmNob3IJWzE4XSBBb0lQQ29kZWNzTGlzdAlPUFRJT05BTCwNCiAJYW9pcFNlbGVjdGVkQ29kZWNUYXJnZXQJWzE5XSBBb0lQQ29kZWMJT1BUSU9OQUwgfQ0KDQpBbGxvd2VkR1NNLUFsZ29yaXRobXMgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMSkpDQoJLS0gaW50ZXJuYWwgc3RydWN0dXJlIGlzIGNvZGVkIGFzIEFsZ29yaXRobSBpZGVudGlmaWVyIG9jdGV0IGZyb20NCgktLSBQZXJtaXR0ZWQgQWxnb3JpdGhtcyBkZWZpbmVkIGluIDNHUFAgVFMgNDguMDA4DQoJLS0gQSBub2RlIHNoYWxsIG1hcmsgYWxsIEdTTSBhbGdvcml0aG1zIHRoYXQgYXJlIGFsbG93ZWQgaW4gTVNDLUINCg0KQWxsb3dlZFVNVFMtQWxnb3JpdGhtcyA6Oj0gU0VRVUVOQ0Ugew0KCWludGVncml0eVByb3RlY3Rpb25BbGdvcml0aG1zCVswXSAJUGVybWl0dGVkSW50ZWdyaXR5UHJvdGVjdGlvbkFsZ29yaXRobXMJT1BUSU9OQUwsDQoJZW5jcnlwdGlvbkFsZ29yaXRobXMJWzFdIAlQZXJtaXR0ZWRFbmNyeXB0aW9uQWxnb3JpdGhtcwkJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVsyXQlFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpQZXJtaXR0ZWRJbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtcyA6Oj0NCgkJT0NURVQgU1RSSU5HIChTSVpFICgxLi5tYXhQZXJtaXR0ZWRJbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtc0xlbmd0aCkpDQoJLS0gT2N0ZXRzIGNvbnRhaW4gYSBjb21wbGV0ZSBQZXJtaXR0ZWRJbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtcyBkYXRhIHR5cGUgDQoJLS0gYXMgZGVmaW5lZCBpbiAzR1BQIFRTIDI1LjQxMywgZW5jb2RlZCBhY2NvcmRpbmcgdG8gdGhlIGVuY29kaW5nIHNjaGVtZSANCgktLSBtYW5kYXRlZCBieSAzR1BQIFRTIDI1LjQxMy4gDQoJLS0gUGFkZGluZyBiaXRzIGFyZSBpbmNsdWRlZCwgaWYgbmVlZGVkLCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0aGUgDQoJLS0gbGFzdCBvY3RldCBvZiB0aGUgb2N0ZXQgc3RyaW5nLiANCg0KDQptYXhQZXJtaXR0ZWRJbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtc0xlbmd0aCBJTlRFR0VSIDo6PSA5DQoNClBlcm1pdHRlZEVuY3J5cHRpb25BbGdvcml0aG1zIDo6PQ0KCQlPQ1RFVCBTVFJJTkcgKFNJWkUgKDEuLm1heFBlcm1pdHRlZEVuY3J5cHRpb25BbGdvcml0aG1zTGVuZ3RoKSkNCgktLSBPY3RldHMgY29udGFpbiBhIGNvbXBsZXRlIFBlcm1pdHRlZEVuY3J5cHRpb25BbGdvcml0aG1zIGRhdGEgdHlwZSANCgktLSBhcyBkZWZpbmVkIGluIDNHUFAgVFMgMjUuNDEzLCBlbmNvZGVkIGFjY29yZGluZyB0byB0aGUgZW5jb2Rpbmcgc2NoZW1lIA0KCS0tIG1hbmRhdGVkIGJ5IDNHUFAgVFMgMjUuNDEzDQoJLS0gUGFkZGluZyBiaXRzIGFyZSBpbmNsdWRlZCwgaWYgbmVlZGVkLCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0aGUgDQoJLS0gbGFzdCBvY3RldCBvZiB0aGUgb2N0ZXQgc3RyaW5nLiANCg0KDQptYXhQZXJtaXR0ZWRFbmNyeXB0aW9uQWxnb3JpdGhtc0xlbmd0aCBJTlRFR0VSIDo6PSA5DQoNCktleVN0YXR1cyA6Oj0gRU5VTUVSQVRFRCB7DQoJb2xkICAoMCksDQoJbmV3ICAoMSksDQoJLi4ufQ0KCS0tIGV4Y2VwdGlvbiBoYW5kbGluZzoNCgktLSByZWNlaXZlZCB2YWx1ZXMgaW4gcmFuZ2UgMi0zMSBzaGFsbCBiZSB0cmVhdGVkIGFzICJvbGQiDQoJLS0gcmVjZWl2ZWQgdmFsdWVzIGdyZWF0ZXIgdGhhbiAzMSBzaGFsbCBiZSB0cmVhdGVkIGFzICJuZXciDQoNClByZXBhcmVITy1BcmcgOjo9IFszXSBTRVFVRU5DRSB7DQoJdGFyZ2V0Q2VsbElkCVswXSBHbG9iYWxDZWxsSWQJT1BUSU9OQUwsDQoJaG8tTnVtYmVyTm90UmVxdWlyZWQJTlVMTAkJCU9QVElPTkFMLCANCgl0YXJnZXRSTkNJZAlbMV0gUk5DSWQJCU9QVElPTkFMLA0KCWFuLUFQRFUJCVsyXSBBY2Nlc3NOZXR3b3JrU2lnbmFsSW5mbwlPUFRJT05BTCwNCgltdWx0aXBsZUJlYXJlclJlcXVlc3RlZAlbM10gTlVMTAkJT1BUSU9OQUwsDQoJaW1zaQkJCVs0XSBJTVNJCQlPUFRJT05BTCwNCglpbnRlZ3JpdHlQcm90ZWN0aW9uSW5mbwlbNV0gSW50ZWdyaXR5UHJvdGVjdGlvbkluZm9ybWF0aW9uCQlPUFRJT05BTCwNCgllbmNyeXB0aW9uSW5mbwlbNl0gRW5jcnlwdGlvbkluZm9ybWF0aW9uCQlPUFRJT05BTCwNCglyYWRpb1Jlc291cmNlSW5mb3JtYXRpb24JWzddIFJhZGlvUmVzb3VyY2VJbmZvcm1hdGlvbglPUFRJT05BTCwNCglhbGxvd2VkR1NNLUFsZ29yaXRobXMJWzldCUFsbG93ZWRHU00tQWxnb3JpdGhtcwlPUFRJT05BTCwNCglhbGxvd2VkVU1UUy1BbGdvcml0aG1zCVsxMF0JQWxsb3dlZFVNVFMtQWxnb3JpdGhtcwlPUFRJT05BTCwNCglyYWRpb1Jlc291cmNlTGlzdAlbMTFdIFJhZGlvUmVzb3VyY2VMaXN0CU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbOF0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLiAsDQoJcmFiLUlkCQlbMTJdIFJBQi1JZAlPUFRJT05BTCwNCglic3NtYXAtU2VydmljZUhhbmRvdmVyCVsxM10JQlNTTUFQLVNlcnZpY2VIYW5kb3ZlcglPUFRJT05BTCwNCglyYW5hcC1TZXJ2aWNlSGFuZG92ZXIJWzE0XQlSQU5BUC1TZXJ2aWNlSGFuZG92ZXIJT1BUSU9OQUwsIA0KCWJzc21hcC1TZXJ2aWNlSGFuZG92ZXJMaXN0CVsxNV0JQlNTTUFQLVNlcnZpY2VIYW5kb3Zlckxpc3QJT1BUSU9OQUwsDQoJYXNjaUNhbGxSZWZlcmVuY2UJWzIwXQlBU0NJLUNhbGxSZWZlcmVuY2UJT1BUSU9OQUwsDQoJZ2VyYW4tY2xhc3NtYXJrCVsxNl0gR0VSQU4tQ2xhc3NtYXJrCU9QVElPTkFMLA0KCWl1Q3VycmVudGx5VXNlZENvZGVjCVsxN10gQ29kZWMJT1BUSU9OQUwsDQoJaXVTdXBwb3J0ZWRDb2RlY3NMaXN0CVsxOF0gU3VwcG9ydGVkQ29kZWNzTGlzdAlPUFRJT05BTCwNCglyYWItQ29uZmlndXJhdGlvbkluZGljYXRvcglbMTldIE5VTEwJCU9QVElPTkFMLA0KCXVlc2JpLUl1CQlbMjFdCVVFU0JJLUl1CU9QVElPTkFMLA0KCWltZWlzdgkJWzIyXQlJTUVJCQlPUFRJT05BTCwNCglhbHRlcm5hdGl2ZUNoYW5uZWxUeXBlCVsyM10JUmFkaW9SZXNvdXJjZUluZm9ybWF0aW9uCU9QVElPTkFMLA0KCXRyYWNlUHJvcGFnYXRpb25MaXN0CVsyNV0JVHJhY2VQcm9wYWdhdGlvbkxpc3QJT1BUSU9OQUwsDQoJYW9pcFN1cHBvcnRlZENvZGVjc0xpc3RBbmNob3IJWzI2XSBBb0lQQ29kZWNzTGlzdAlPUFRJT05BTAkgfQ0KDQpCU1NNQVAtU2VydmljZUhhbmRvdmVyTGlzdCA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4uIG1heE51bU9mU2VydmljZUhhbmRvdmVycykgT0YNCgkJCQlCU1NNQVAtU2VydmljZUhhbmRvdmVySW5mbw0KDQpCU1NNQVAtU2VydmljZUhhbmRvdmVySW5mbyA6Oj0gU0VRVUVOQ0Ugew0KCWJzc21hcC1TZXJ2aWNlSGFuZG92ZXIJQlNTTUFQLVNlcnZpY2VIYW5kb3ZlciwNCglyYWItSWQJCVJBQi1JZCwNCgktLSBSQUIgSWRlbnRpdHkgaXMgbmVlZGVkIHRvIHJlbGF0ZSB0aGUgc2VydmljZSBoYW5kb3ZlcnMgd2l0aCB0aGUgcmFkaW8gYWNjZXNzIGJlYXJlcnMuIA0KCS4uLn0NCg0KbWF4TnVtT2ZTZXJ2aWNlSGFuZG92ZXJzICBJTlRFR0VSIDo6PSA3DQoNCkJTU01BUC1TZXJ2aWNlSGFuZG92ZXIgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMSkpDQoJLS0gT2N0ZXRzIGFyZSBjb2RlZCBhY2NvcmRpbmcgdGhlIFNlcnZpY2UgSGFuZG92ZXIgaW5mb3JtYXRpb24gZWxlbWVudCBpbg0KCS0tIDNHUFAgVFMgNDguMDA4Lg0KDQpSQU5BUC1TZXJ2aWNlSGFuZG92ZXIgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMSkpDQoJLS0gT2N0ZXQgY29udGFpbnMgYSBjb21wbGV0ZSBTZXJ2aWNlLUhhbmRvdmVyIGRhdGEgdHlwZSANCgktLSBhcyBkZWZpbmVkIGluIDNHUFAgVFMgMjUuNDEzLCBlbmNvZGVkIGFjY29yZGluZyB0byB0aGUgZW5jb2Rpbmcgc2NoZW1lIA0KCS0tIG1hbmRhdGVkIGJ5IDNHUFAgVFMgMjUuNDEzDQoJLS0gUGFkZGluZyBiaXRzIGFyZSBpbmNsdWRlZCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cy4gDQoNCg0KUmFkaW9SZXNvdXJjZUxpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLiBtYXhOdW1PZlJhZGlvUmVzb3VyY2VzKSBPRg0KCQkJCVJhZGlvUmVzb3VyY2UNCg0KUmFkaW9SZXNvdXJjZSA6Oj0gU0VRVUVOQ0Ugew0KCXJhZGlvUmVzb3VyY2VJbmZvcm1hdGlvbglSYWRpb1Jlc291cmNlSW5mb3JtYXRpb24sDQoJcmFiLUlkCQlSQUItSWQsDQoJLS0gUkFCIElkZW50aXR5IGlzIG5lZWRlZCB0byByZWxhdGUgdGhlIHJhZGlvIHJlc291cmNlcyB3aXRoIHRoZSByYWRpbyBhY2Nlc3MgYmVhcmVycy4gDQoJLi4ufQ0KDQptYXhOdW1PZlJhZGlvUmVzb3VyY2VzICBJTlRFR0VSIDo6PSA3DQoNClByZXBhcmVITy1SZXMgOjo9IFszXSBTRVFVRU5DRSB7DQoJaGFuZG92ZXJOdW1iZXIJWzBdIElTRE4tQWRkcmVzc1N0cmluZwlPUFRJT05BTCwNCglyZWxvY2F0aW9uTnVtYmVyTGlzdAlbMV0JUmVsb2NhdGlvbk51bWJlckxpc3QJT1BUSU9OQUwsDQoJYW4tQVBEVQkJWzJdCUFjY2Vzc05ldHdvcmtTaWduYWxJbmZvCU9QVElPTkFMLA0KCW11bHRpY2FsbEJlYXJlckluZm8JWzNdCU11bHRpY2FsbEJlYXJlckluZm8JT1BUSU9OQUwsDQoJbXVsdGlwbGVCZWFyZXJOb3RTdXBwb3J0ZWQJTlVMTAkJCU9QVElPTkFMLA0KCXNlbGVjdGVkVU1UUy1BbGdvcml0aG1zCVs1XQlTZWxlY3RlZFVNVFMtQWxnb3JpdGhtcwlPUFRJT05BTCwNCgljaG9zZW5SYWRpb1Jlc291cmNlSW5mb3JtYXRpb24JWzZdIENob3NlblJhZGlvUmVzb3VyY2VJbmZvcm1hdGlvbgkgT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVs0XQlFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLA0KCWl1U2VsZWN0ZWRDb2RlYwlbN10gQ29kZWMJCU9QVElPTkFMLA0KCWl1QXZhaWxhYmxlQ29kZWNzTGlzdAlbOF0gQ29kZWNMaXN0CU9QVElPTkFMLA0KCWFvaXBTZWxlY3RlZENvZGVjVGFyZ2V0CVs5XSBBb0lQQ29kZWMJT1BUSU9OQUwsDQoJYW9pcEF2YWlsYWJsZUNvZGVjc0xpc3RNYXAJWzEwXSBBb0lQQ29kZWNzTGlzdAlPUFRJT05BTCB9DQoNClNlbGVjdGVkVU1UUy1BbGdvcml0aG1zIDo6PSBTRVFVRU5DRSB7DQoJaW50ZWdyaXR5UHJvdGVjdGlvbkFsZ29yaXRobQlbMF0gCUNob3NlbkludGVncml0eVByb3RlY3Rpb25BbGdvcml0aG0JT1BUSU9OQUwsDQoJZW5jcnlwdGlvbkFsZ29yaXRobQlbMV0gCUNob3NlbkVuY3J5cHRpb25BbGdvcml0aG0JT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVsyXQlFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpDaG9zZW5JbnRlZ3JpdHlQcm90ZWN0aW9uQWxnb3JpdGhtIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEpKQ0KCS0tIE9jdGV0IGNvbnRhaW5zIGEgY29tcGxldGUgSW50ZWdyaXR5UHJvdGVjdGlvbkFsZ29yaXRobSBkYXRhIHR5cGUgDQoJLS0gYXMgZGVmaW5lZCBpbiAzR1BQIFRTIDI1LjQxMywgZW5jb2RlZCBhY2NvcmRpbmcgdG8gdGhlIGVuY29kaW5nIHNjaGVtZSANCgktLSBtYW5kYXRlZCBieSAzR1BQIFRTIDI1LjQxMw0KCS0tIFBhZGRpbmcgYml0cyBhcmUgaW5jbHVkZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMuIA0KDQpDaG9zZW5FbmNyeXB0aW9uQWxnb3JpdGhtIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEpKQ0KCS0tIE9jdGV0IGNvbnRhaW5zIGEgY29tcGxldGUgRW5jcnlwdGlvbkFsZ29yaXRobSBkYXRhIHR5cGUgDQoJLS0gYXMgZGVmaW5lZCBpbiAzR1BQIFRTIDI1LjQxMywgZW5jb2RlZCBhY2NvcmRpbmcgdG8gdGhlIGVuY29kaW5nIHNjaGVtZSANCgktLSBtYW5kYXRlZCBieSAzR1BQIFRTIDI1LjQxMw0KCS0tIFBhZGRpbmcgYml0cyBhcmUgaW5jbHVkZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMuIA0KDQpDaG9zZW5SYWRpb1Jlc291cmNlSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsNCgljaG9zZW5DaGFubmVsSW5mbwlbMF0gQ2hvc2VuQ2hhbm5lbEluZm8JT1BUSU9OQUwsDQoJY2hvc2VuU3BlZWNoVmVyc2lvbglbMV0gQ2hvc2VuU3BlZWNoVmVyc2lvbglPUFRJT05BTCwNCgkuLi59DQoNCkNob3NlbkNoYW5uZWxJbmZvIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEpKQ0KCS0tIE9jdGV0cyBhcmUgY29kZWQgYWNjb3JkaW5nIHRoZSBDaG9zZW4gQ2hhbm5lbCBpbmZvcm1hdGlvbiBlbGVtZW50IGluIDNHUFAgVFMgNDguMDA4DQoNCkNob3NlblNwZWVjaFZlcnNpb24gOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMSkpDQoJLS0gT2N0ZXRzIGFyZSBjb2RlZCBhY2NvcmRpbmcgdGhlIFNwZWVjaCBWZXJzaW9uIChjaG9zZW4pIGluZm9ybWF0aW9uIGVsZW1lbnQgaW4gM0dQUCBUUw0KCS0tIDQ4LjAwOCANCg0KUHJlcGFyZVN1YnNlcXVlbnRITy1BcmcgOjo9IFszXSBTRVFVRU5DRSB7DQoJdGFyZ2V0Q2VsbElkCVswXSBHbG9iYWxDZWxsSWQJT1BUSU9OQUwsDQoJdGFyZ2V0TVNDLU51bWJlcglbMV0gSVNETi1BZGRyZXNzU3RyaW5nLA0KCXRhcmdldFJOQ0lkCVsyXSBSTkNJZAkJT1BUSU9OQUwsDQoJYW4tQVBEVQkJWzNdCUFjY2Vzc05ldHdvcmtTaWduYWxJbmZvCU9QVElPTkFMLA0KCXNlbGVjdGVkUmFiLUlkCVs0XQlSQUItSWQJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVs1XQlFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLA0KCWdlcmFuLWNsYXNzbWFyawlbNl0gR0VSQU4tQ2xhc3NtYXJrCU9QVElPTkFMLA0KCXJhYi1Db25maWd1cmF0aW9uSW5kaWNhdG9yCVs3XSBOVUxMCQlPUFRJT05BTCB9DQoNClByZXBhcmVTdWJzZXF1ZW50SE8tUmVzIDo6PSBbM10gU0VRVUVOQ0Ugew0KCWFuLUFQRFUJCUFjY2Vzc05ldHdvcmtTaWduYWxJbmZvLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMF0JRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KUHJvY2Vzc0FjY2Vzc1NpZ25hbGxpbmctQXJnIDo6PSBbM10gU0VRVUVOQ0Ugew0KCWFuLUFQRFUJCUFjY2Vzc05ldHdvcmtTaWduYWxJbmZvLA0KCXNlbGVjdGVkVU1UUy1BbGdvcml0aG1zCVsxXQlTZWxlY3RlZFVNVFMtQWxnb3JpdGhtcwlPUFRJT05BTCwNCglzZWxlY3RlZEdTTS1BbGdvcml0aG0JWzJdCVNlbGVjdGVkR1NNLUFsZ29yaXRobQlPUFRJT05BTCwNCgljaG9zZW5SYWRpb1Jlc291cmNlSW5mb3JtYXRpb24JWzNdIENob3NlblJhZGlvUmVzb3VyY2VJbmZvcm1hdGlvbiBPUFRJT05BTCwNCglzZWxlY3RlZFJhYi1JZAlbNF0gUkFCLUlkCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMF0JRXh0ZW5zaW9uQ29udGFpbmVyIAlPUFRJT05BTCwNCgkuLi4sDQoJaVVTZWxlY3RlZENvZGVjCVs1XSBDb2RlYwkJT1BUSU9OQUwsDQoJaXVBdmFpbGFibGVDb2RlY3NMaXN0CVs2XSBDb2RlY0xpc3QJT1BUSU9OQUwsDQoJYW9pcFNlbGVjdGVkQ29kZWNUYXJnZXQJWzddIEFvSVBDb2RlYwlPUFRJT05BTCwNCglhb2lwQXZhaWxhYmxlQ29kZWNzTGlzdE1hcAlbOF0gQW9JUENvZGVjc0xpc3QJT1BUSU9OQUwgfQ0KDQpBb0lQQ29kZWNzTGlzdCA6Oj0gU0VRVUVOQ0Ugew0KCWNvZGVjMQkJWzFdIEFvSVBDb2RlYywNCgljb2RlYzIJCVsyXSBBb0lQQ29kZWMJCU9QVElPTkFMLA0KCWNvZGVjMwkJWzNdIEFvSVBDb2RlYwkJT1BUSU9OQUwsDQoJY29kZWM0CQlbNF0gQW9JUENvZGVjCQlPUFRJT05BTCwNCgljb2RlYzUJCVs1XSBBb0lQQ29kZWMJCU9QVElPTkFMLA0KCWNvZGVjNgkJWzZdIEFvSVBDb2RlYwkJT1BUSU9OQUwsDQoJY29kZWM3CQlbN10gQW9JUENvZGVjCQlPUFRJT05BTCwNCgljb2RlYzgJCVs4XSBBb0lQQ29kZWMJCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbOV0gRXh0ZW5zaW9uQ29udGFpbmVyCQlPUFRJT05BTCwNCgkuLi59DQoJLS0gQ29kZWNzIGFyZSBzZW50IGluIHByaW9yaXR5IG9yZGVyIHdoZXJlIGNvZGVjMSBoYXMgaGlnaGVzdCBwcmlvcml0eQ0KDQpBb0lQQ29kZWMgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMS4uMykpDQoNCgktLSBUaGUgaW50ZXJuYWwgc3RydWN0dXJlIGlzIGRlZmluZWQgYXMgZm9sbG93czoNCgktLSBvY3RldCAxCUNvZGVkIGFzIFNwZWVjaCBDb2RlYyBFbGVtZW50cyBpbiAzR1BQIFRTIDQ4LjAwOA0KCS0tCQkJCXdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IEZJLCBQSSwgUFQgYW5kIFRGIGJpdHMgc2hhbGwNCgktLQkJCWJlIHNldCB0byAwDQoJLS0gb2N0ZXRzIDIsMwlPcHRpb25hbDsgaW4gY2FzZSBvZiBBTVIgY29kZWMgdHlwZXMgaXQgZGVmaW5lcw0KCS0tCQkJdGhlIHN1cHBvcnRlZCBjb2RlYyBjb25maWd1cmF0aW9ucyBhcyBkZWZpbmVkIGluDQoJLS0JCQkzR1BQIFRTIDQ4LjAwOA0KDQpTdXBwb3J0ZWRDb2RlY3NMaXN0IDo6PSBTRVFVRU5DRSB7DQoJdXRyYW5Db2RlY0xpc3QJWzBdIENvZGVjTGlzdAlPUFRJT05BTCwNCglnZXJhbkNvZGVjTGlzdAlbMV0gQ29kZWNMaXN0CU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMl0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KQ29kZWNMaXN0IDo6PSBTRVFVRU5DRSB7DQoJY29kZWMxCQlbMV0gQ29kZWMsDQoJY29kZWMyCQlbMl0gQ29kZWMJCU9QVElPTkFMLA0KCWNvZGVjMwkJWzNdIENvZGVjCQlPUFRJT05BTCwNCgljb2RlYzQJCVs0XSBDb2RlYwkJT1BUSU9OQUwsDQoJY29kZWM1CQlbNV0gQ29kZWMJCU9QVElPTkFMLA0KCWNvZGVjNgkJWzZdIENvZGVjCQlPUFRJT05BTCwNCgljb2RlYzcJCVs3XSBDb2RlYwkJT1BUSU9OQUwsDQoJY29kZWM4CQlbOF0gQ29kZWMJCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbOV0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCgktLSBDb2RlY3MgYXJlIHNlbnQgaW4gcHJpb3JpdHkgb3JkZXIgd2hlcmUgY29kZWMxIGhhcyBoaWdoZXN0IHByaW9yaXR5DQoNCkNvZGVjIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEuLjQpKQ0KDQoJLS0gVGhlIGludGVybmFsIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGFzIGZvbGxvd3M6DQoJLS0gb2N0ZXQgMQlDb2RlZCBhcyBDb2RlYyBJZGVudGlmaWNhdGlvbiBjb2RlIGluIDNHUFAgVFMgMjYuMTAzDQoJLS0gb2N0ZXRzIDIsMyw0CVBhcmFtZXRlcnMgZm9yIHRoZSBDb2RlYyBhcyBkZWZpbmVkIGluIDNHUFAgVFMNCgktLQkJCTI2LjEwMywgaWYgYXZhaWxhYmxlLCBsZW5ndGggZGVwZW5kaW5nIG9uIHRoZSBjb2RlYw0KDQpHRVJBTi1DbGFzc21hcmsgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMi4uODcpKQ0KCS0tIE9jdGV0cyBhcmUgY29kZWQgYWNjb3JkaW5nIHRoZSBHRVJBTiBDbGFzc21hcmsgaW5mb3JtYXRpb24gZWxlbWVudCBpbiAzR1BQIFRTIDQ4LjAwOA0KDQpTZWxlY3RlZEdTTS1BbGdvcml0aG0gOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMSkpDQoJLS0gaW50ZXJuYWwgc3RydWN0dXJlIGlzIGNvZGVkIGFzIEFsZ29yaXRobSBpZGVudGlmaWVyIG9jdGV0IGZyb20gQ2hvc2VuIEVuY3J5cHRpb24NCgktLSBBbGdvcml0aG0gZGVmaW5lZCBpbiAzR1BQIFRTIDQ4LjAwOA0KCS0tIEEgbm9kZSBzaGFsbCBtYXJrIG9ubHkgdGhlIHNlbGVjdGVkIEdTTSBhbGdvcml0aG0NCg0KU2VuZEVuZFNpZ25hbC1BcmcgOjo9IFszXSBTRVFVRU5DRSB7DQoJYW4tQVBEVQkJQWNjZXNzTmV0d29ya1NpZ25hbEluZm8sDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVswXQlFeHRlbnNpb25Db250YWluZXIgCU9QVElPTkFMLA0KCS4uLn0NCg0KU2VuZEVuZFNpZ25hbC1SZXMgOjo9IFNFUVVFTkNFIHsNCglleHRlbnNpb25Db250YWluZXIJWzBdCUV4dGVuc2lvbkNvbnRhaW5lciAJT1BUSU9OQUwsDQoJLi4ufQ0KDQpSTkNJZCA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICg3KSkNCgktLSBUaGUgaW50ZXJuYWwgc3RydWN0dXJlIGlzIGRlZmluZWQgYXMgZm9sbG93czoNCgktLSBvY3RldCAxIGJpdHMgNDMyMQlNb2JpbGUgQ291bnRyeSBDb2RlIDFzdCBkaWdpdA0KCS0tICAgICAgICAgYml0cyA4NzY1CU1vYmlsZSBDb3VudHJ5IENvZGUgMm5kIGRpZ2l0DQoJLS0gb2N0ZXQgMiBiaXRzIDQzMjEJTW9iaWxlIENvdW50cnkgQ29kZSAzcmQgZGlnaXQNCgktLSAgICAgICAgIGJpdHMgODc2NQlNb2JpbGUgTmV0d29yayBDb2RlIDNyZCBkaWdpdA0KCS0tCQkJb3IgZmlsbGVyICgxMTExKSBmb3IgMiBkaWdpdCBNTkNzDQoJLS0gb2N0ZXQgMyBiaXRzIDQzMjEJTW9iaWxlIE5ldHdvcmsgQ29kZSAxc3QgZGlnaXQNCgktLSAgICAgICAgIGJpdHMgODc2NQlNb2JpbGUgTmV0d29yayBDb2RlIDJuZCBkaWdpdA0KCS0tIG9jdGV0cyA0IGFuZCA1CUxvY2F0aW9uIEFyZWEgQ29kZSBhY2NvcmRpbmcgdG8gM0dQUCBUUyAyNC4wMDgNCgktLSBvY3RldHMgNiBhbmQgNwlSTkMgSWQgdmFsdWUgYWNjb3JkaW5nIHRvIDNHUFAgVFMgMjUuNDEzDQoNClJlbG9jYXRpb25OdW1iZXJMaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZlJlbG9jYXRpb25OdW1iZXIpIE9GDQoJCQkJUmVsb2NhdGlvbk51bWJlcg0KDQpNdWx0aWNhbGxCZWFyZXJJbmZvIDo6PSBJTlRFR0VSICgxLi5tYXhOdW1PZlJlbG9jYXRpb25OdW1iZXIpDQoNClJlbG9jYXRpb25OdW1iZXIgOjo9IFNFUVVFTkNFIHsNCgloYW5kb3Zlck51bWJlcglJU0ROLUFkZHJlc3NTdHJpbmcsDQoJcmFiLUlkCQlSQUItSWQsDQoJLS0gUkFCIElkZW50aXR5IGlzIG5lZWRlZCB0byByZWxhdGUgdGhlIGNhbGxzIHdpdGggdGhlIHJhZGlvIGFjY2VzcyBiZWFyZXJzLiANCgkuLi59DQoNClJBQi1JZCA6Oj0gSU5URUdFUiAoMS4ubWF4TnJPZlJBQnMpDQoNCm1heE5yT2ZSQUJzIElOVEVHRVIgOjo9IDI1NQ0KDQptYXhOdW1PZlJlbG9jYXRpb25OdW1iZXIgIElOVEVHRVIgOjo9IDcNCg0KUmFkaW9SZXNvdXJjZUluZm9ybWF0aW9uIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDMuLjEzKSkNCgktLSBPY3RldHMgYXJlIGNvZGVkIGFjY29yZGluZyB0aGUgQ2hhbm5lbCBUeXBlIGluZm9ybWF0aW9uIGVsZW1lbnQgaW4gM0dQUCBUUyA0OC4wMDgNCg0KSW50ZWdyaXR5UHJvdGVjdGlvbkluZm9ybWF0aW9uIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDE4Li5tYXhOdW1PZkludGVncml0eUluZm8pKQ0KCS0tIE9jdGV0cyBjb250YWluIGEgY29tcGxldGUgSW50ZWdyaXR5UHJvdGVjdGlvbkluZm9ybWF0aW9uIGRhdGEgdHlwZSANCgktLSBhcyBkZWZpbmVkIGluIDNHUFAgVFMgMjUuNDEzLCBlbmNvZGVkIGFjY29yZGluZyB0byB0aGUgZW5jb2Rpbmcgc2NoZW1lIA0KCS0tIG1hbmRhdGVkIGJ5IDNHUFAgVFMgMjUuNDEzDQoJLS0gUGFkZGluZyBiaXRzIGFyZSBpbmNsdWRlZCwgaWYgbmVlZGVkLCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0aGUgDQoJLS0gbGFzdCBvY3RldCBvZiB0aGUgb2N0ZXQgc3RyaW5nLiANCg0KbWF4TnVtT2ZJbnRlZ3JpdHlJbmZvIElOVEVHRVIgOjo9IDEwMA0KDQpFbmNyeXB0aW9uSW5mb3JtYXRpb24gOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMTguLm1heE51bU9mRW5jcnlwdGlvbkluZm8pKQ0KCS0tIE9jdGV0cyBjb250YWluIGEgY29tcGxldGUgRW5jcnlwdGlvbkluZm9ybWF0aW9uIGRhdGEgdHlwZSANCgktLSBhcyBkZWZpbmVkIGluIDNHUFAgVFMgMjUuNDEzLCBlbmNvZGVkIGFjY29yZGluZyB0byB0aGUgZW5jb2Rpbmcgc2NoZW1lIA0KCS0tIG1hbmRhdGVkIGJ5IDNHUFAgVFMgMjUuNDEzDQoJLS0gUGFkZGluZyBiaXRzIGFyZSBpbmNsdWRlZCwgaWYgbmVlZGVkLCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0aGUgDQoJLS0gbGFzdCBvY3RldCBvZiB0aGUgb2N0ZXQgc3RyaW5nLiANCg0KbWF4TnVtT2ZFbmNyeXB0aW9uSW5mbyBJTlRFR0VSIDo6PSAxMDANCg0KLS0gYXV0aGVudGljYXRpb24gbWFuYWdlbWVudCB0eXBlcw0KDQpTZW5kQXV0aGVudGljYXRpb25JbmZvQXJnIDo6PSBTRVFVRU5DRSB7DQoJaW1zaQkJCVswXSBJTVNJLA0KCW51bWJlck9mUmVxdWVzdGVkVmVjdG9ycwlOdW1iZXJPZlJlcXVlc3RlZFZlY3RvcnMsDQoJc2VnbWVudGF0aW9uUHJvaGliaXRlZAlOVUxMCQkJT1BUSU9OQUwsDQoJaW1tZWRpYXRlUmVzcG9uc2VQcmVmZXJyZWQJWzFdIE5VTEwJCQlPUFRJT05BTCwNCglyZS1zeW5jaHJvbmlzYXRpb25JbmZvCVJlLXN5bmNocm9uaXNhdGlvbkluZm8JT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVsyXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLA0KCXJlcXVlc3RpbmdOb2RlVHlwZQlbM10gUmVxdWVzdGluZ05vZGVUeXBlCU9QVElPTkFMLA0KCXJlcXVlc3RpbmdQTE1OLUlkCVs0XSBQTE1OLUlkCU9QVElPTkFMLA0KCW51bWJlck9mUmVxdWVzdGVkQWRkaXRpb25hbC1WZWN0b3JzCVs1XSBOdW1iZXJPZlJlcXVlc3RlZFZlY3RvcnMJT1BUSU9OQUwsDQoJYWRkaXRpb25hbFZlY3RvcnNBcmVGb3JFUFMJWzZdIE5VTEwJCU9QVElPTkFMIH0JDQoNCg0KTnVtYmVyT2ZSZXF1ZXN0ZWRWZWN0b3JzIDo6PSBJTlRFR0VSICgxLi41KQ0KDQpSZS1zeW5jaHJvbmlzYXRpb25JbmZvIDo6PSBTRVFVRU5DRSB7DQoJcmFuZAkJCVJBTkQsDQoJYXV0cwkJCUFVVFMsDQoJLi4ufQ0KDQpTZW5kQXV0aGVudGljYXRpb25JbmZvUmVzIDo6PSBbM10gU0VRVUVOQ0Ugew0KCWF1dGhlbnRpY2F0aW9uU2V0TGlzdAlBdXRoZW50aWNhdGlvblNldExpc3QgCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLA0KCWVwcy1BdXRoZW50aWNhdGlvblNldExpc3QJWzJdIEVQUy1BdXRoZW50aWNhdGlvblNldExpc3QJT1BUSU9OQUwgfQ0KDQpFUFMtQXV0aGVudGljYXRpb25TZXRMaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi41KSBPRg0KCQkJCUVQQy1BVg0KDQpFUEMtQVYgOjo9IFNFUVVFTkNFIHsNCglyYW5kCQkJUkFORCwNCgl4cmVzCQkJWFJFUywNCglhdXRuCQkJQVVUTiwNCglrYXNtZQkJS0FTTUUsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi59DQoNCktBU01FIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDMyKSkNCg0KUmVxdWVzdGluZ05vZGVUeXBlIDo6PSBFTlVNRVJBVEVEIHsNCgl2bHIgICgwKSwNCglzZ3NuICAoMSksDQoJLi4uLA0KCXMtY3NjZiAgKDIpLA0KCWJzZiAgKDMpLA0KCWdhbi1hYWEtc2VydmVyICAoNCksDQoJd2xhbi1hYWEtc2VydmVyICAoNSksDQoJbW1lCQkoMTYpLA0KCW1tZS1zZ3NuCSgxNykNCgl9DQoJLS0gdGhlIHZhbHVlcyAyLCAzLCA0IGFuZCA1IHNoYWxsIG5vdCBiZSB1c2VkIG9uIHRoZSBNQVAtRCBvciBHciBpbnRlcmZhY2VzDQoJLS0gZXhjZXB0aW9uIGhhbmRsaW5nOg0KCS0tIHJlY2VpdmVkIHZhbHVlcyBpbiB0aGUgcmFuZ2UgKDYtMTUpIHNoYWxsIGJlIHRyZWF0ZWQgYXMgInZsciINCgktLSByZWNlaXZlZCB2YWx1ZXMgZ3JlYXRlciB0aGFuIDE3IHNoYWxsIGJlIHRyZWF0ZWQgYXMgInNnc24iDQoNCi0tIGVxdWlwbWVudCBtYW5hZ2VtZW50IHR5cGVzDQoNCkNoZWNrSU1FSS1BcmcgOjo9IFNFUVVFTkNFIHsNCglpbWVpCQkJSU1FSSwNCglyZXF1ZXN0ZWRFcXVpcG1lbnRJbmZvCVJlcXVlc3RlZEVxdWlwbWVudEluZm8sDQoJZXh0ZW5zaW9uQ29udGFpbmVyCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi59DQoNCkNoZWNrSU1FSS1SZXMgOjo9IFNFUVVFTkNFIHsNCgllcXVpcG1lbnRTdGF0dXMJRXF1aXBtZW50U3RhdHVzCU9QVElPTkFMLA0KCWJtdWVmCQlVRVNCSS1JdQkJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVswXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpSZXF1ZXN0ZWRFcXVpcG1lbnRJbmZvOjo9IEJJVCBTVFJJTkcgew0KCWVxdWlwbWVudFN0YXR1cyAgKDApLA0KCWJtdWVmICAoMSl9IChTSVpFICgyLi44KSkNCgktLSBleGNlcHRpb24gaGFuZGxpbmc6IHJlY2VwdGlvbiBvZiB1bmtub3duIGJpdCBhc3NpZ25tZW50cyBpbiB0aGUNCgktLSBSZXF1ZXN0ZWRFcXVpcG1lbnRJbmZvIGRhdGEgdHlwZSBzaGFsbCBiZSBkaXNjYXJkZWQgYnkgdGhlIHJlY2VpdmVyIA0KDQpVRVNCSS1JdSA6Oj0gU0VRVUVOQ0Ugew0KCXVlc2JpLUl1QQlbMF0gVUVTQkktSXVBCQkJCU9QVElPTkFMLA0KCXVlc2JpLUl1QglbMV0gVUVTQkktSXVCCQkJCU9QVElPTkFMLA0KCS4uLn0NCg0KVUVTQkktSXVBCQkJCTo6PSBCSVQgU1RSSU5HIChTSVpFKDEuLjEyOCkpDQotLSBTZWUgM0dQUCBUUyAyNS40MTMNCg0KVUVTQkktSXVCCQkJCTo6PSBCSVQgU1RSSU5HIChTSVpFKDEuLjEyOCkpDQotLSBTZWUgM0dQUCBUUyAyNS40MTMNCg0KRXF1aXBtZW50U3RhdHVzIDo6PSBFTlVNRVJBVEVEIHsNCgl3aGl0ZUxpc3RlZCAgKDApLA0KCWJsYWNrTGlzdGVkICAoMSksDQoJZ3JleUxpc3RlZCAgKDIpfQ0KDQotLSBzdWJzY3JpYmVyIG1hbmFnZW1lbnQgdHlwZXMNCg0KSW5zZXJ0U3Vic2NyaWJlckRhdGFBcmcgOjo9IFNFUVVFTkNFIHsNCglpbXNpCQkJWzBdIElNU0kJCU9QVElPTkFMLA0KCUNPTVBPTkVOVFMgT0YJU3Vic2NyaWJlckRhdGEsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVsxNF0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLiAsCQ0KCW5hZWEtUHJlZmVycmVkQ0kJWzE1XSBOQUVBLVByZWZlcnJlZENJCU9QVElPTkFMLA0KCS0tIG5hZWEtUHJlZmVycmVkQ0kgaXMgaW5jbHVkZWQgYXQgdGhlIGRpc2NyZXRpb24gb2YgdGhlIEhMUiBvcGVyYXRvci4NCglncHJzU3Vic2NyaXB0aW9uRGF0YQlbMTZdIEdQUlNTdWJzY3JpcHRpb25EYXRhCU9QVElPTkFMLA0KCXJvYW1pbmdSZXN0cmljdGVkSW5TZ3NuRHVlVG9VbnN1cHBvcnRlZEZlYXR1cmUgWzIzXSAJTlVMTAkNCgkJCQkJCQlPUFRJT05BTCwgDQoJbmV0d29ya0FjY2Vzc01vZGUJWzI0XSBOZXR3b3JrQWNjZXNzTW9kZQlPUFRJT05BTCwNCglsc2FJbmZvcm1hdGlvbglbMjVdIExTQUluZm9ybWF0aW9uCU9QVElPTkFMLA0KCWxtdS1JbmRpY2F0b3IJWzIxXQlOVUxMCQlPUFRJT05BTCwNCglsY3NJbmZvcm1hdGlvbglbMjJdCUxDU0luZm9ybWF0aW9uCU9QVElPTkFMLA0KCWlzdEFsZXJ0VGltZXIJWzI2XSBJU1QtQWxlcnRUaW1lclZhbHVlCU9QVElPTkFMLA0KCXN1cGVyQ2hhcmdlclN1cHBvcnRlZEluSExSCVsyN10gQWdlSW5kaWNhdG9yCU9QVElPTkFMLA0KCW1jLVNTLUluZm8JWzI4XSBNQy1TUy1JbmZvCU9QVElPTkFMLA0KCWNzLUFsbG9jYXRpb25SZXRlbnRpb25Qcmlvcml0eQlbMjldIENTLUFsbG9jYXRpb25SZXRlbnRpb25Qcmlvcml0eQkJT1BUSU9OQUwsDQoJc2dzbi1DQU1FTC1TdWJzY3JpcHRpb25JbmZvCVsxN10gU0dTTi1DQU1FTC1TdWJzY3JpcHRpb25JbmZvCU9QVElPTkFMLA0KCWNoYXJnaW5nQ2hhcmFjdGVyaXN0aWNzIAlbMThdCUNoYXJnaW5nQ2hhcmFjdGVyaXN0aWNzIAlPUFRJT05BTCwNCglhY2Nlc3NSZXN0cmljdGlvbkRhdGEJWzE5XSBBY2Nlc3NSZXN0cmljdGlvbkRhdGEJT1BUSU9OQUwsDQoJaWNzLUluZGljYXRvcglbMjBdCUJPT0xFQU4JT1BUSU9OQUwsDQoJZXBzLVN1YnNjcmlwdGlvbkRhdGEJWzMxXQlFUFMtU3Vic2NyaXB0aW9uRGF0YQlPUFRJT05BTCwNCgljc2ctU3Vic2NyaXB0aW9uRGF0YUxpc3QJWzMyXSBDU0ctU3Vic2NyaXB0aW9uRGF0YUxpc3QJT1BUSU9OQUwsDQoJdWUtUmVhY2hhYmlsaXR5UmVxdWVzdEluZGljYXRvcglbMzNdCU5VTEwJCU9QVElPTkFMLA0KCXNnc24tTnVtYmVyCVszNF0JSVNETi1BZGRyZXNzU3RyaW5nCU9QVElPTkFMLA0KCW1tZS1OYW1lCQlbMzVdCURpYW1ldGVySWRlbnRpdHkJT1BUSU9OQUwgfQ0KCS0tIElmIHRoZSBOZXR3b3JrIEFjY2VzcyBNb2RlIHBhcmFtZXRlciBpcyBzZW50LCBpdCBzaGFsbCBiZSBwcmVzZW50IG9ubHkgaW4gDQoJLS0gdGhlIGZpcnN0IHNlcXVlbmNlIGlmIHNlcW1lbnRhdGlvbiBpcyB1c2VkDQoNCkNTRy1TdWJzY3JpcHRpb25EYXRhTGlzdCA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4uNTApIE9GDQoJCQkJQ1NHLVN1YnNjcmlwdGlvbkRhdGENCg0KQ1NHLVN1YnNjcmlwdGlvbkRhdGEgOjo9IFNFUVVFTkNFIHsNCgljc2ctSWQJIAkJQ1NHLUlkLA0KCWV4cGlyYXRpb25EYXRlCQlUaW1lCQlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJCUV4dGVuc2lvbkNvbnRhaW5lciAJT1BUSU9OQUwsDQoJLi4ufQ0KDQpDU0ctSWQgOjo9IEJJVCBTVFJJTkcgKFNJWkUgKDI3KSkNCgktLSBjb2RlZCBhY2NvcmRpbmcgdG8gM0dQUCBUUyAyMy4wMDMgWzE3XS4NCg0KVGltZSA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICg0KSkNCgktLSBPY3RldHMgYXJlIGNvZGVkIGFjY29yZGluZyB0byBJRVRGIFJGQyAzNTg4IFsxMzldDQoNCg0KRVBTLVN1YnNjcmlwdGlvbkRhdGEgOjo9IFNFUVVFTkNFIHsNCglhcG4tb2ktUmVwbGFjZW1lbnQJWzBdCUFQTi1PSS1SZXBsYWNlbWVudAlPUFRJT05BTCwNCgktLSB0aGlzIGFwbi1vaS1SZXBsYWNlbWVudCByZWZlcnMgdG8gdGhlIFVFIGxldmVsIGFwbi1vaS1SZXBsYWNlbWVudC4NCglyZnNwLWlkCQlbMl0JUkZTUC1JRAlPUFRJT05BTCwNCglhbWJyCQkJWzNdCUFNQlIJCU9QVElPTkFMLA0KCWFwbi1Db25maWd1cmF0aW9uUHJvZmlsZQlbNF0JQVBOLUNvbmZpZ3VyYXRpb25Qcm9maWxlCU9QVElPTkFMLA0KCXN0bi1zcgkJWzZdCUlTRE4tQWRkcmVzc1N0cmluZwlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzVdCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4gfQ0KDQpBUE4tT0ktUmVwbGFjZW1lbnQgOjo9ICBPQ1RFVCBTVFJJTkcgKFNJWkUgKDkuLjEwMCkpDQoJLS0gT2N0ZXRzIGFyZSBjb2RlZCBhcyBBUE4gT3BlcmF0b3IgSWRlbnRpZmllciBhY2NvcmRpbmcgdG8gVFMgM0dQUCBUUyAyMy4wMDMgWzE3XSANCg0KUkZTUC1JRCA6Oj0gIElOVEVHRVIgKDEuLjI1NikNCg0KQVBOLUNvbmZpZ3VyYXRpb25Qcm9maWxlIDo6PSBTRVFVRU5DRSB7DQoJZGVmYXVsdENvbnRleHQJQ29udGV4dElkLA0KCWNvbXBsZXRlRGF0YUxpc3RJbmNsdWRlZAlOVUxMCQkJT1BUSU9OQUwsDQoJCS0tIElmIHNlZ21lbnRhdGlvbiBpcyB1c2VkLCBjb21wbGV0ZURhdGFMaXN0SW5jbHVkZWQgbWF5IG9ubHkgYmUgcHJlc2VudCBpbiB0aGUNCgkJLS0gZmlyc3Qgc2VnbWVudCBvZiBBUE4tQ29uZmlndXJhdGlvblByb2ZpbGUuDQoJZXBzRGF0YUxpc3QJWzFdCUVQUy1EYXRhTGlzdCwNCglleHRlbnNpb25Db250YWluZXIJWzJdIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4gfQ0KDQpFUFMtRGF0YUxpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mQVBOLUNvbmZpZ3VyYXRpb25zKSBPRg0KCQkJCUFQTi1Db25maWd1cmF0aW9uDQoNCg0KbWF4TnVtT2ZBUE4tQ29uZmlndXJhdGlvbnMgIElOVEVHRVIgOjo9IDUwDQoNCg0KQVBOLUNvbmZpZ3VyYXRpb24gOjo9IFNFUVVFTkNFIHsNCgljb250ZXh0SWQJCVswXSBDb250ZXh0SWQsDQoJcGRuLVR5cGUJCVsxXSBQRE4tVHlwZSwNCglzZXJ2ZWRQYXJ0eUlQLUlQdjQtQWRkcmVzcwlbMl0gUERQLUFkZHJlc3MJT1BUSU9OQUwsDQoJYXBuCQkJWzNdIEFQTiwNCgllcHMtcW9zLVN1YnNjcmliZWQJWzRdIEVQUy1Rb1MtU3Vic2NyaWJlZCwNCglwZG4tZ3ctSWRlbnRpdHkJWzVdIFBETi1HVy1JZGVudGl0eQlPUFRJT05BTCwNCglwZG4tZ3ctQWxsb2NhdGlvblR5cGUJWzZdIFBETi1HVy1BbGxvY2F0aW9uVHlwZQlPUFRJT05BTCwNCgl2cGxtbkFkZHJlc3NBbGxvd2VkCVs3XSBOVUxMCQlPUFRJT05BTCwNCgljaGFyZ2luZ0NoYXJhY3RlcmlzdGljcwlbOF0gQ2hhcmdpbmdDaGFyYWN0ZXJpc3RpY3MJT1BUSU9OQUwsDQoJYW1icgkJCVs5XSBBTUJSCQlPUFRJT05BTCwNCglzcGVjaWZpY0FQTkluZm9MaXN0CVsxMF0gU3BlY2lmaWNBUE5JbmZvTGlzdAlPUFRJT05BTCwJZXh0ZW5zaW9uQ29udGFpbmVyCVsxMV0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLCANCglzZXJ2ZWRQYXJ0eUlQLUlQdjYtQWRkcmVzcwlbMTJdIFBEUC1BZGRyZXNzCU9QVElPTkFMLA0KCS4uLiwNCglhcG4tb2ktUmVwbGFjZW1lbnQJWzEzXSBBUE4tT0ktUmVwbGFjZW1lbnQJT1BUSU9OQUwNCgktLSB0aGlzIGFwbi1vaS1SZXBsYWNlbWVudCByZWZlcnMgdG8gdGhlIEFQTiBsZXZlbCBhcG4tb2ktUmVwbGFjZW1lbnQuDQogfQ0KDQpQRE4tVHlwZSA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxKSkNCgktLSBPY3RldCBpcyBjb2RlZCBhY2NvcmRpbmcgdG8gVFMgM0dQUCBUUyAyOS4yNzQgWzE0MF0NCg0KRVBTLVFvUy1TdWJzY3JpYmVkIDo6PSBTRVFVRU5DRSB7DQoJcW9zLUNsYXNzLUlkZW50aWZpZXIJWzBdIFFvUy1DbGFzcy1JZGVudGlmaWVyLA0KCWFsbG9jYXRpb24tUmV0ZW50aW9uLVByaW9yaXR5CVsxXSBBbGxvY2F0aW9uLVJldGVudGlvbi1Qcmlvcml0eSwNCglleHRlbnNpb25Db250YWluZXIJWzJdIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4gfQ0KDQpBTUJSIDo6PSBTRVFVRU5DRSB7DQoJbWF4LVJlcXVlc3RlZEJhbmR3aWR0aC1VTAlbMF0gQmFuZHdpZHRoLA0KCW1heC1SZXF1ZXN0ZWRCYW5kd2lkdGgtREwJWzFdIEJhbmR3aWR0aCwNCglleHRlbnNpb25Db250YWluZXIJWzJdIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4gfQ0KDQoNClNwZWNpZmljQVBOSW5mb0xpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mU3BlY2lmaWNBUE5JbmZvcykgT0YNCgkJCQlTcGVjaWZpY0FQTkluZm8NCg0KbWF4TnVtT2ZTcGVjaWZpY0FQTkluZm9zICBJTlRFR0VSIDo6PSA1MA0KDQpTcGVjaWZpY0FQTkluZm8gOjo9IFNFUVVFTkNFIHsNCglhcG4JCQlbMF0gQVBOLA0KCXBkbi1ndy1JZGVudGl0eQlbMV0gUEROLUdXLUlkZW50aXR5LA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMl0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLiB9DQoNCkJhbmR3aWR0aCA6Oj0gSU5URUdFUiANCgktLSBiaXRzIHBlciBzZWNvbmQNCg0KUW9TLUNsYXNzLUlkZW50aWZpZXIgOjo9IElOVEVHRVIgKDEuLjkpDQoJLS0gdmFsdWVzIGFyZSBkZWZpbmVkIGluICAzR1BQIFRTIDI5LjIxMg0KDQoNCg0KQWxsb2NhdGlvbi1SZXRlbnRpb24tUHJpb3JpdHkgOjo9IFNFUVVFTkNFIHsNCglwcmlvcml0eS1sZXZlbAlbMF0gSU5URUdFUiwNCglwcmUtZW1wdGlvbi1jYXBhYmlsaXR5CVsxXSBCT09MRUFOCU9QVElPTkFMLA0KCXByZS1lbXB0aW9uLXZ1bG5lcmFiaWxpdHkJWzJdIEJPT0xFQU4JT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVszXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uIH0NCg0KUEROLUdXLUlkZW50aXR5IDo6PSBTRVFVRU5DRSB7DQoJcGRuLWd3LWlwdjQtQWRkcmVzcwlbMF0gUERQLUFkZHJlc3MJT1BUSU9OQUwsDQoJcGRuLWd3LWlwdjYtQWRkcmVzcwlbMV0gUERQLUFkZHJlc3MJT1BUSU9OQUwsDQoJcGRuLWd3LW5hbWUJWzJdIEZRRE4JCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbM10gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLiB9DQoNCkZRRE4gOjo9ICBPQ1RFVCBTVFJJTkcgKFNJWkUgKDkuLjI1NSkpDQoNCg0KUEROLUdXLUFsbG9jYXRpb25UeXBlIDo6PSBFTlVNRVJBVEVEIHsNCglzdGF0aWMJKDApLA0KCWR5bmFtaWMJKDEpfQ0KDQoNCkFjY2Vzc1Jlc3RyaWN0aW9uRGF0YSA6Oj0gQklUIFNUUklORyB7DQoJdXRyYW5Ob3RBbGxvd2VkICgwKSwNCglnZXJhbk5vdEFsbG93ZWQgKDEpLA0KCWdhbk5vdEFsbG93ZWQgICAoMiksDQoJaS1oc3BhLWV2b2x1dGlvbk5vdEFsbG93ZWQgKDMpLA0KCWUtdXRyYW5Ob3RBbGxvd2VkICg0KSwNCgloby10b05vbjNHUFAtQWNjZXNzTm90QWxsb3dlZCAoNSkgfSAoU0laRSAoMi4uOCkpDQoJLS0gZXhjZXB0aW9uIGhhbmRsaW5nOg0KCS0tIGFjY2VzcyByZXN0cmljdGlvbiBkYXRhIHJlbGF0ZWQgdG8gYW4gYWNjZXNzIHR5cGUgbm90IHN1cHBvcnRlZCBieSBhIG5vZGUNCgktLSBzaGFsbCBiZSBpZ25vcmVkDQoJLS0gYml0cyA2IHRvIDcgc2hhbGwgYmUgaWdub3JlZCBpZiByZWNlaXZlZCBhbmQgbm90IHVuZGVyc3Rvb2QNCgkNCg0KQ1MtQWxsb2NhdGlvblJldGVudGlvblByaW9yaXR5IDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEpKQ0KCS0tIFRoaXMgZGF0YSB0eXBlIGVuY29kZXMgZWFjaCBwcmlvcml0eSBsZXZlbCBkZWZpbmVkIGluIFRTIDIzLjEwNyBhcyB0aGUgYmluYXJ5IHZhbHVlDQoJLS0gb2YgdGhlIHByaW9yaXR5IGxldmVsLg0KDQpJU1QtQWxlcnRUaW1lclZhbHVlIDo6PSBJTlRFR0VSICgxNS4uMjU1KQ0KDQpMQ1NJbmZvcm1hdGlvbiA6Oj0gU0VRVUVOQ0Ugew0KCWdtbGMtTGlzdAlbMF0JR01MQy1MaXN0CU9QVElPTkFMLA0KCWxjcy1Qcml2YWN5RXhjZXB0aW9uTGlzdAlbMV0JTENTLVByaXZhY3lFeGNlcHRpb25MaXN0CU9QVElPTkFMLA0KCW1vbHItTGlzdAkJWzJdCU1PTFItTGlzdAlPUFRJT05BTCwNCgkuLi4sDQoJYWRkLWxjcy1Qcml2YWN5RXhjZXB0aW9uTGlzdAlbM10JTENTLVByaXZhY3lFeGNlcHRpb25MaXN0CU9QVElPTkFMIH0NCgktLSBhZGQtbGNzLVByaXZhY3lFeGNlcHRpb25MaXN0IG1heSBiZSBzZW50IG9ubHkgaWYgbGNzLVByaXZhY3lFeGNlcHRpb25MaXN0IGlzDQoJLS0gcHJlc2VudCBhbmQgY29udGFpbnMgZm91ciBpbnN0YW5jZXMgb2YgTENTLVByaXZhY3lDbGFzcy4gSWYgdGhlIG1lbnRpb25lZCBjb25kaXRpb24NCgktLSBpcyBub3Qgc2F0aXNmaWVkIHRoZSByZWNlaXZpbmcgbm9kZSBzaGFsbCBkaXNjYXJkIGFkZC1sY3MtUHJpdmFjeUV4Y2VwdGlvbkxpc3QuDQoJLS0gSWYgYW4gTENTLVByaXZhY3lDbGFzcyBpcyByZWNlaXZlZCBib3RoIGluIGxjcy1Qcml2YWN5RXhjZXB0aW9uTGlzdCBhbmQgaW4NCgktLSBhZGQtbGNzLVByaXZhY3lFeGNlcHRpb25MaXN0IHdpdGggdGhlIHNhbWUgU1MtQ29kZSwgdGhlbiB0aGUgZXJyb3IgdW5leHBlY3RlZCANCgktLSBkYXRhIHZhbHVlIHNoYWxsIGJlIHJldHVybmVkLg0KDQpHTUxDLUxpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mR01MQykgT0YNCgkJCQlJU0ROLUFkZHJlc3NTdHJpbmcNCgktLSBpZiBzZWdtZW50YXRpb24gaXMgdXNlZCwgdGhlIGNvbXBsZXRlIEdNTEMtTGlzdCBzaGFsbCBiZSBzZW50IGluIG9uZSBzZWdtZW50DQoNCm1heE51bU9mR01MQyAgSU5URUdFUiA6Oj0gNQ0KDQpOZXR3b3JrQWNjZXNzTW9kZSA6Oj0gRU5VTUVSQVRFRCB7DQoJcGFja2V0QW5kQ2lyY3VpdAkoMCksDQoJb25seUNpcmN1aXQJCSgxKSwNCglvbmx5UGFja2V0CQkoMiksDQoJLi4ufQ0KCS0tIGlmIHVua25vd24gdmFsdWVzIGFyZSByZWNlaXZlZCBpbiBOZXR3b3JrQWNjZXNzTW9kZQ0KCS0tIHRoZXkgc2hhbGwgYmUgZGlzY2FyZGVkLg0KDQpHUFJTRGF0YUxpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mUERQLUNvbnRleHRzKSBPRg0KCQkJCVBEUC1Db250ZXh0DQoNCm1heE51bU9mUERQLUNvbnRleHRzICBJTlRFR0VSIDo6PSA1MA0KDQpQRFAtQ29udGV4dCA6Oj0gU0VRVUVOQ0Ugew0KCXBkcC1Db250ZXh0SWQJQ29udGV4dElkLA0KCXBkcC1UeXBlCQlbMTZdIFBEUC1UeXBlLA0KCXBkcC1BZGRyZXNzCVsxN10gUERQLUFkZHJlc3MJT1BUSU9OQUwsDQoJcW9zLVN1YnNjcmliZWQJWzE4XSBRb1MtU3Vic2NyaWJlZCwNCgl2cGxtbkFkZHJlc3NBbGxvd2VkCVsxOV0gTlVMTAlPUFRJT05BTCwNCglhcG4JCQlbMjBdIEFQTiwNCglleHRlbnNpb25Db250YWluZXIJWzIxXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uICwNCglleHQtUW9TLVN1YnNjcmliZWQJWzBdIEV4dC1Rb1MtU3Vic2NyaWJlZAlPUFRJT05BTCwgDQoJcGRwLUNoYXJnaW5nQ2hhcmFjdGVyaXN0aWNzCVsxXSBDaGFyZ2luZ0NoYXJhY3RlcmlzdGljcwlPUFRJT05BTCwNCglleHQyLVFvUy1TdWJzY3JpYmVkCVsyXSBFeHQyLVFvUy1TdWJzY3JpYmVkCU9QVElPTkFMLA0KCS0tIGV4dDItUW9TLVN1YnNjcmliZWQgbWF5IGJlIHByZXNlbnQgb25seSBpZiBleHQtUW9TLVN1YnNjcmliZWQgaXMgcHJlc2VudC4NCglleHQzLVFvUy1TdWJzY3JpYmVkCVszXSBFeHQzLVFvUy1TdWJzY3JpYmVkCU9QVElPTkFMLA0KCS0tIGV4dDMtUW9TLVN1YnNjcmliZWQgbWF5IGJlIHByZXNlbnQgb25seSBpZiBleHQyLVFvUy1TdWJzY3JpYmVkIGlzIHByZXNlbnQuDQoJZXh0NC1Rb1MtU3Vic2NyaWJlZAlbNF0gRXh0NC1Rb1MtU3Vic2NyaWJlZAlPUFRJT05BTCwNCgktLSBleHQ0LVFvUy1TdWJzY3JpYmVkIG1heSBiZSBwcmVzZW50IG9ubHkgaWYgZXh0My1Rb1MtU3Vic2NyaWJlZCBpcyBwcmVzZW50LiANCglhcG4tb2ktUmVwbGFjZW1lbnQJWzVdCUFQTi1PSS1SZXBsYWNlbWVudAlPUFRJT05BTCwNCgktLSB0aGlzIGFwbi1vaS1SZXBsYWNlbWVudCByZWZlcnMgdG8gdGhlIEFQTiBsZXZlbCBhcG4tb2ktUmVwbGFjZW1lbnQgYW5kIGhhcw0KCS0tIGhpZ2hlciBwcmlvcml0eSB0aGFuIFVFIGxldmVsIGFwbi1vaS1SZXBsYWNlbWVudC4NCglleHQtcGRwLVR5cGUJWzZdIEV4dC1QRFAtVHlwZQlPUFRJT05BTCwNCgktLSBjb250YWlucyB0aGUgdmFsdWUgSVB2NHY2IGRlZmluZWQgaW4gM0dQUCBUUyAyOS4wNjAgWzEwNV0sIGlmIHRoZSBQRFAgY2FuIGJlDQoJLS0gYWNjZXNzZWQgYnkgZHVhbC1zdGFjayBVRXMNCglleHQtcGRwLUFkZHJlc3MJWzddIFBEUC1BZGRyZXNzCU9QVElPTkFMDQoJLS0gY29udGFpbnMgYW4gYWRkaXRpb25hbCBJUCBhZGRyZXNzIGluIGNhc2Ugb2YgZHVhbC1zdGFjayBzdGF0aWMgSVAgYWRkcmVzcyBhc3NpZ25tZW50DQoJLS0gZm9yIHRoZSBVRS4NCgktLSBpdCBtYXkgY29udGFpbiBhbiBJUHY0IG9yIGFuIElQdjYgYWRkcmVzcy9wcmVmaXgsIGFuZCBpdCBtYXkgYmUgcHJlc2VudA0KCS0tIG9ubHkgaWYgcGRwLUFkZHJlc3MgaXMgcHJlc2VudDsgaWYgYm90aCBhcmUgcHJlc2VudCwgZWFjaCBwYXJhbWV0ZXIgc2hhbGwNCgktLSBjb250YWluIGEgZGlmZmVyZW50IHR5cGUgb2YgYWRkcmVzcyAoSVB2NCBvciBJUHY2KS4NCgkgfQ0KDQpDb250ZXh0SWQgOjo9IElOVEVHRVIgKDEuLm1heE51bU9mUERQLUNvbnRleHRzKQ0KDQpHUFJTU3Vic2NyaXB0aW9uRGF0YSA6Oj0gU0VRVUVOQ0Ugew0KCWNvbXBsZXRlRGF0YUxpc3RJbmNsdWRlZAlOVUxMCQkJT1BUSU9OQUwsDQoJCS0tIElmIHNlZ21lbnRhdGlvbiBpcyB1c2VkLCBjb21wbGV0ZURhdGFMaXN0SW5jbHVkZWQgbWF5IG9ubHkgYmUgcHJlc2VudCBpbiB0aGUNCgkJLS0gZmlyc3Qgc2VnbWVudCBvZiBHUFJTU3Vic2NyaXB0aW9uRGF0YS4NCglncHJzRGF0YUxpc3QJWzFdCUdQUlNEYXRhTGlzdCwNCglleHRlbnNpb25Db250YWluZXIJWzJdIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4sDQoJYXBuLW9pLVJlcGxhY2VtZW50CVszXQlBUE4tT0ktUmVwbGFjZW1lbnQJT1BUSU9OQUwNCgktLSB0aGlzIGFwbi1vaS1SZXBsYWNlbWVudCByZWZlcnMgdG8gdGhlIFVFIGxldmVsIGFwbi1vaS1SZXBsYWNlbWVudC4NCiB9DQoNClNHU04tQ0FNRUwtU3Vic2NyaXB0aW9uSW5mbyA6Oj0gU0VRVUVOQ0Ugew0KCWdwcnMtQ1NJCQlbMF0JR1BSUy1DU0kJT1BUSU9OQUwsDQoJbW8tc21zLUNTSQlbMV0JU01TLUNTSQlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzJdCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4sDQoJbXQtc21zLUNTSQlbM10JU01TLUNTSQlPUFRJT05BTCwNCgltdC1zbXNDQU1FTFREUC1Dcml0ZXJpYUxpc3QJWzRdCU1ULXNtc0NBTUVMVERQLUNyaXRlcmlhTGlzdAlPUFRJT05BTCwNCgltZy1jc2kJCVs1XQlNRy1DU0kJT1BUSU9OQUwNCgl9DQoNCkdQUlMtQ1NJIDo6PSBTRVFVRU5DRSB7DQoJZ3Bycy1DYW1lbFREUERhdGFMaXN0CVswXSBHUFJTLUNhbWVsVERQRGF0YUxpc3QJT1BUSU9OQUwsDQoJY2FtZWxDYXBhYmlsaXR5SGFuZGxpbmcJWzFdIENhbWVsQ2FwYWJpbGl0eUhhbmRsaW5nCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMl0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCW5vdGlmaWNhdGlvblRvQ1NFCVszXQlOVUxMCQlPUFRJT05BTCwNCgljc2ktQWN0aXZlCVs0XQlOVUxMCQlPUFRJT05BTCwNCgkuLi59DQotLQlub3RpZmljYXRpb25Ub0NTRSBhbmQgY3NpLUFjdGl2ZSBzaGFsbCBub3QgYmUgcHJlc2VudCB3aGVuIEdQUlMtQ1NJIGlzIHNlbnQgdG8gU0dTTi4NCi0tCVRoZXkgbWF5IG9ubHkgYmUgaW5jbHVkZWQgaW4gQVRTSS9BVE0gYWNrL05TREMgbWVzc2FnZS4gDQotLQlHUFJTLUNhbWVsVERQRGF0YSBhbmQgIGNhbWVsQ2FwYWJpbGl0eUhhbmRsaW5nIHNoYWxsIGJlIHByZXNlbnQgaW4gDQotLQl0aGUgR1BSUy1DU0kgc2VxdWVuY2UuDQotLQlJZiBHUFJTLUNTSSBpcyBzZWdtZW50ZWQsIGdwcnMtQ2FtZWxURFBEYXRhTGlzdCBhbmQgY2FtZWxDYXBhYmlsaXR5SGFuZGxpbmcgc2hhbGwgYmUgDQotLQlwcmVzZW50IGluIHRoZSBmaXJzdCBzZWdtZW50DQoNCkdQUlMtQ2FtZWxURFBEYXRhTGlzdCA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4ubWF4TnVtT2ZDYW1lbFREUERhdGEpIE9GDQoJR1BSUy1DYW1lbFREUERhdGENCi0tCUdQUlMtQ2FtZWxURFBEYXRhTGlzdCBzaGFsbCBub3QgY29udGFpbiBtb3JlIHRoYW4gb25lIGluc3RhbmNlIG9mDQotLQlHUFJTLUNhbWVsVERQRGF0YSBjb250YWluaW5nIHRoZSBzYW1lIHZhbHVlIGZvciBncHJzLVRyaWdnZXJEZXRlY3Rpb25Qb2ludC4NCg0KR1BSUy1DYW1lbFREUERhdGEgOjo9IFNFUVVFTkNFIHsNCglncHJzLVRyaWdnZXJEZXRlY3Rpb25Qb2ludAlbMF0gR1BSUy1UcmlnZ2VyRGV0ZWN0aW9uUG9pbnQsDQoJc2VydmljZUtleQlbMV0gU2VydmljZUtleSwNCglnc21TQ0YtQWRkcmVzcwlbMl0gSVNETi1BZGRyZXNzU3RyaW5nLA0KCWRlZmF1bHRTZXNzaW9uSGFuZGxpbmcJWzNdIERlZmF1bHRHUFJTLUhhbmRsaW5nLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbNF0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLg0KCX0NCg0KRGVmYXVsdEdQUlMtSGFuZGxpbmcgOjo9IEVOVU1FUkFURUQgew0KCWNvbnRpbnVlVHJhbnNhY3Rpb24gKDApICwNCglyZWxlYXNlVHJhbnNhY3Rpb24gKDEpICwNCgkuLi59DQotLSBleGNlcHRpb24gaGFuZGxpbmc6DQotLSByZWNlcHRpb24gb2YgdmFsdWVzIGluIHJhbmdlIDItMzEgc2hhbGwgYmUgdHJlYXRlZCBhcyAiY29udGludWVUcmFuc2FjdGlvbiINCi0tIHJlY2VwdGlvbiBvZiB2YWx1ZXMgZ3JlYXRlciB0aGFuIDMxIHNoYWxsIGJlIHRyZWF0ZWQgYXMgInJlbGVhc2VUcmFuc2FjdGlvbiINCg0KR1BSUy1UcmlnZ2VyRGV0ZWN0aW9uUG9pbnQgOjo9IEVOVU1FUkFURUQgew0KCWF0dGFjaCAJCQkoMSksDQoJYXR0YWNoQ2hhbmdlT2ZQb3NpdGlvbiAJCSgyKSwNCglwZHAtQ29udGV4dEVzdGFibGlzaG1lbnQgCQkoMTEpLA0KCXBkcC1Db250ZXh0RXN0YWJsaXNobWVudEFja25vd2xlZGdlbWVudAkoMTIpLA0KCXBkcC1Db250ZXh0Q2hhbmdlT2ZQb3NpdGlvbiAJCSgxNCksDQoJLi4uIH0NCi0tIGV4Y2VwdGlvbiBoYW5kbGluZzoNCi0tIEZvciBHUFJTLUNhbWVsVERQRGF0YSBzZXF1ZW5jZXMgY29udGFpbmluZyB0aGlzIHBhcmFtZXRlciB3aXRoIGFueQ0KLS0gb3RoZXIgdmFsdWUgdGhhbiB0aGUgb25lcyBsaXN0ZWQgdGhlIHJlY2VpdmVyIHNoYWxsIGlnbm9yZSB0aGUgd2hvbGUgDQotLSBHUFJTLUNhbWVsVERQRGF0YXNlcXVlbmNlLg0KDQpBUE4gOjo9ICBPQ1RFVCBTVFJJTkcgKFNJWkUgKDIuLjYzKSkNCgktLSBPY3RldHMgYXJlIGNvZGVkIGFjY29yZGluZyB0byBUUyAzR1BQIFRTIDIzLjAwMyBbMTddIA0KDQpQRFAtVHlwZSA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgyKSkNCgktLSBPY3RldHMgYXJlIGNvZGVkIGFjY29yZGluZyB0byBUUyAzR1BQIFRTIDI5LjA2MCBbMTA1XQ0KCS0tIE9ubHkgdGhlIHZhbHVlcyBQUFAsIElQdjQgYW5kIElQdjYgYXJlIGFsbG93ZWQgZm9yIHRoaXMgcGFyYW1ldGVyLg0KDQpFeHQtUERQLVR5cGUgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMikpDQoJLS0gT2N0ZXRzIGFyZSBjb2RlZCwgc2ltaWxhcmx5IHRvIFBEUC1UeXBlLCBhY2NvcmRpbmcgdG8gVFMgM0dQUCBUUyAyOS4wNjAgWzEwNV0uDQoJLS0gT25seSB0aGUgdmFsdWUgSVB2NHY2IGlzIGFsbG93ZWQgZm9yIHRoaXMgcGFyYW1ldGVyLg0KDQpQRFAtQWRkcmVzcyA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxLi4xNikpDQoJLS0gT2N0ZXRzIGFyZSBjb2RlZCBhY2NvcmRpbmcgdG8gVFMgM0dQUCBUUyAyOS4wNjAgWzEwNV0NCg0KCS0tIFRoZSBwb3NzaWJsZSBzaXplIHZhbHVlcyBhcmU6DQoJLS0gMS03IG9jdGV0cyAgWC4yNSBhZGRyZXNzIHR5cGUNCgktLSAgNCAgb2N0ZXRzICBJUHY0IGFkZHJlc3MgdHlwZQ0KCS0tIDE2ICBvY3RldHMgIElwdjYgYWRkcmVzcyB0eXBlDQoNClFvUy1TdWJzY3JpYmVkIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDMpKQ0KCS0tIE9jdGV0cyBhcmUgY29kZWQgYWNjb3JkaW5nIHRvIFRTIDNHUFAgVFMgMjQuMDA4IFszNV0gUXVhbGl0eSBvZiBTZXJ2aWNlIE9jdGV0cyANCgktLSAzLTUuDQoNCkV4dC1Rb1MtU3Vic2NyaWJlZCA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxLi45KSkNCgktLSBPQ1RFVCAxOiANCgktLSAgQWxsb2NhdGlvbi9SZXRlbnRpb24gUHJpb3JpdHkgKFRoaXMgb2N0ZXQgZW5jb2RlcyBlYWNoIHByaW9yaXR5IGxldmVsIGRlZmluZWQgaW4NCgktLSAgICAgMjMuMTA3IGFzIHRoZSBiaW5hcnkgdmFsdWUgb2YgdGhlIHByaW9yaXR5IGxldmVsLCBkZWNsYXJhdGlvbiBpbiAyOS4wNjApDQoJLS0gT2N0ZXRzIDItOSBhcmUgY29kZWQgYWNjb3JkaW5nIHRvIDNHUFAgVFMgMjQuMDA4IFszNV0gUXVhbGl0eSBvZiBTZXJ2aWNlIE9jdGV0cyANCgktLSA2LTEzLg0KDQpFeHQyLVFvUy1TdWJzY3JpYmVkIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEuLjMpKQ0KCS0tIE9jdGV0cyAxLTMgYXJlIGNvZGVkIGFjY29yZGluZyB0byAzR1BQIFRTIDI0LjAwOCBbMzVdIFF1YWxpdHkgb2YgU2VydmljZSBPY3RldHMgMTQtMTYuDQoJLS0gSWYgUXVhbGl0eSBvZiBTZXJ2aWNlIGluZm9ybWF0aW9uIGlzIHN0cnVjdHVyZWQgd2l0aCAxNCBvY3RldCBsZW5ndGgsIHRoZW4NCgktLSBPY3RldCAxIGlzIGNvZGVkIGFjY29yZGluZyB0byAzR1BQIFRTIDI0LjAwOCBbMzVdIFF1YWxpdHkgb2YgU2VydmljZSBPY3RldCAxNC4NCg0KRXh0My1Rb1MtU3Vic2NyaWJlZCA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxLi4yKSkNCgktLSBPY3RldHMgMS0yIGFyZSBjb2RlZCBhY2NvcmRpbmcgdG8gM0dQUCBUUyAyNC4wMDggWzM1XSBRdWFsaXR5IG9mIFNlcnZpY2UgT2N0ZXRzIDE3LTE4Lg0KDQpFeHQ0LVFvUy1TdWJzY3JpYmVkIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEpKQ0KCS0tIE9jdGV0IDE6DQoJLS0gIEV2b2x2ZWQgQWxsb2NhdGlvbi9SZXRlbnRpb24gUHJpb3JpdHkuIFRoaXMgb2N0ZXQgZW5jb2RlcyB0aGUgUHJpb3JpdHkgTGV2ZWwgKFBMKSwNCgktLSAgdGhlIFByZWVtcHRpb24gQ2FwYWJpbGl0eSAoUENJKSBhbmQgUHJlZW1wdGlvbiBWdWxuZXJhYmlsaXR5ICAoUFZJKSB2YWx1ZXMsIGFzDQoJLS0gIGRlc2NyaWJlZCBpbiAzR1BQIFRTIDI5LjA2MCBbMTA1XS4NCg0KQ2hhcmdpbmdDaGFyYWN0ZXJpc3RpY3MgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMikpDQoJLS0gT2N0ZXRzIGFyZSBjb2RlZCBhY2NvcmRpbmcgdG8gM0dQUCBUUyAzMi4yMTUuDQoNCkxTQU9ubHlBY2Nlc3NJbmRpY2F0b3IgOjo9IEVOVU1FUkFURUQgew0KCWFjY2Vzc091dHNpZGVMU0FzQWxsb3dlZCAgKDApLA0KCWFjY2Vzc091dHNpZGVMU0FzUmVzdHJpY3RlZCAoMSl9DQoNCkxTQURhdGFMaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZkxTQXMpIE9GDQoJCQkJTFNBRGF0YQ0KDQptYXhOdW1PZkxTQXMgIElOVEVHRVIgOjo9IDIwDQoNCkxTQURhdGEgOjo9IFNFUVVFTkNFIHsNCglsc2FJZGVudGl0eQlbMF0gTFNBSWRlbnRpdHksDQoJbHNhQXR0cmlidXRlcwlbMV0gTFNBQXR0cmlidXRlcywNCglsc2FBY3RpdmVNb2RlSW5kaWNhdG9yCVsyXSBOVUxMCQlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzNdIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi59DQoNCkxTQUluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7DQoJY29tcGxldGVEYXRhTGlzdEluY2x1ZGVkCU5VTEwJCQlPUFRJT05BTCwNCg0KCQktLSBJZiBzZWdtZW50YXRpb24gaXMgdXNlZCwgY29tcGxldGVEYXRhTGlzdEluY2x1ZGVkIG1heSBvbmx5IGJlIHByZXNlbnQgaW4gdGhlDQoJCS0tIGZpcnN0IHNlZ21lbnQuDQoJbHNhT25seUFjY2Vzc0luZGljYXRvcglbMV0JTFNBT25seUFjY2Vzc0luZGljYXRvcglPUFRJT05BTCwNCglsc2FEYXRhTGlzdAlbMl0JTFNBRGF0YUxpc3QJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVszXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpMU0FJZGVudGl0eSA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgzKSkNCgktLSBPY3RldHMgYXJlIGNvZGVkIGFjY29yZGluZyB0byBUUyAzR1BQIFRTIDIzLjAwMyBbMTddDQoNCkxTQUF0dHJpYnV0ZXMgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMSkpDQoJLS0gT2N0ZXRzIGFyZSBjb2RlZCBhY2NvcmRpbmcgdG8gVFMgM0dQUCBUUyA0OC4wMDggWzQ5XQ0KDQpTdWJzY3JpYmVyRGF0YSA6Oj0gU0VRVUVOQ0Ugew0KCW1zaXNkbgkJWzFdIElTRE4tQWRkcmVzc1N0cmluZwlPUFRJT05BTCwNCgljYXRlZ29yeQkJWzJdIENhdGVnb3J5CU9QVElPTkFMLA0KCXN1YnNjcmliZXJTdGF0dXMJWzNdIFN1YnNjcmliZXJTdGF0dXMJT1BUSU9OQUwsDQoJYmVhcmVyU2VydmljZUxpc3QJWzRdIEJlYXJlclNlcnZpY2VMaXN0CU9QVElPTkFMLA0KCS0tIFRoZSBleGNlcHRpb24gaGFuZGxpbmcgZm9yIHJlY2VwdGlvbiBvZiB1bnN1cHBvcnRlZCAvIG5vdCBhbGxvY2F0ZWQNCgktLSBiZWFyZXJTZXJ2aWNlQ29kZXMgaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDguOC4xDQoJdGVsZXNlcnZpY2VMaXN0CVs2XSBUZWxlc2VydmljZUxpc3QJT1BUSU9OQUwsDQoJLS0gVGhlIGV4Y2VwdGlvbiBoYW5kbGluZyBmb3IgcmVjZXB0aW9uIG9mIHVuc3VwcG9ydGVkIC8gbm90IGFsbG9jYXRlZA0KCS0tIHRlbGVzZXJ2aWNlQ29kZXMgaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDguOC4xDQoJcHJvdmlzaW9uZWRTUwlbN10gRXh0LVNTLUluZm9MaXN0CU9QVElPTkFMLA0KCW9kYi1EYXRhCQlbOF0gT0RCLURhdGEJT1BUSU9OQUwsDQoJcm9hbWluZ1Jlc3RyaWN0aW9uRHVlVG9VbnN1cHBvcnRlZEZlYXR1cmUgIFs5XSBOVUxMCU9QVElPTkFMLA0KCXJlZ2lvbmFsU3Vic2NyaXB0aW9uRGF0YQlbMTBdIFpvbmVDb2RlTGlzdAlPUFRJT05BTCwNCgl2YnNTdWJzY3JpcHRpb25EYXRhCVsxMV0gVkJTRGF0YUxpc3QJT1BUSU9OQUwsDQoJdmdjc1N1YnNjcmlwdGlvbkRhdGEJWzEyXSBWR0NTRGF0YUxpc3QJT1BUSU9OQUwsDQoJdmxyQ2FtZWxTdWJzY3JpcHRpb25JbmZvCVsxM10gVmxyQ2FtZWxTdWJzY3JpcHRpb25JbmZvCU9QVElPTkFMDQoJfQ0KDQpDYXRlZ29yeSA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxKSkNCgktLSBUaGUgaW50ZXJuYWwgc3RydWN0dXJlIGlzIGRlZmluZWQgaW4gSVRVLVQgUmVjIFEuNzYzLg0KDQpTdWJzY3JpYmVyU3RhdHVzIDo6PSBFTlVNRVJBVEVEIHsNCglzZXJ2aWNlR3JhbnRlZCAgKDApLA0KCW9wZXJhdG9yRGV0ZXJtaW5lZEJhcnJpbmcgICgxKX0NCg0KQmVhcmVyU2VydmljZUxpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mQmVhcmVyU2VydmljZXMpIE9GDQoJCQkJRXh0LUJlYXJlclNlcnZpY2VDb2RlDQoNCm1heE51bU9mQmVhcmVyU2VydmljZXMgIElOVEVHRVIgOjo9IDUwDQoNClRlbGVzZXJ2aWNlTGlzdCA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4ubWF4TnVtT2ZUZWxlc2VydmljZXMpIE9GDQoJCQkJRXh0LVRlbGVzZXJ2aWNlQ29kZQ0KDQptYXhOdW1PZlRlbGVzZXJ2aWNlcyAgSU5URUdFUiA6Oj0gMjANCg0KT0RCLURhdGEgOjo9IFNFUVVFTkNFIHsNCglvZGItR2VuZXJhbERhdGEJT0RCLUdlbmVyYWxEYXRhLA0KCW9kYi1IUExNTi1EYXRhCU9EQi1IUExNTi1EYXRhCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpPREItR2VuZXJhbERhdGEgOjo9IEJJVCBTVFJJTkcgew0KCWFsbE9HLUNhbGxzQmFycmVkICAoMCksDQoJaW50ZXJuYXRpb25hbE9HQ2FsbHNCYXJyZWQgICgxKSwNCglpbnRlcm5hdGlvbmFsT0dDYWxsc05vdFRvSFBMTU4tQ291bnRyeUJhcnJlZCAgKDIpLA0KCWludGVyem9uYWxPR0NhbGxzQmFycmVkICg2KSwNCglpbnRlcnpvbmFsT0dDYWxsc05vdFRvSFBMTU4tQ291bnRyeUJhcnJlZCAoNyksDQoJaW50ZXJ6b25hbE9HQ2FsbHNBbmRJbnRlcm5hdGlvbmFsT0dDYWxsc05vdFRvSFBMTU4tQ291bnRyeUJhcnJlZCAoOCksDQoJcHJlbWl1bVJhdGVJbmZvcm1hdGlvbk9HQ2FsbHNCYXJyZWQgICgzKSwNCglwcmVtaXVtUmF0ZUVudGVydGFpbmVtZW50T0dDYWxsc0JhcnJlZCAgKDQpLA0KCXNzLUFjY2Vzc0JhcnJlZCAgKDUpLA0KCWFsbEVDVC1CYXJyZWQgKDkpLA0KCWNoYXJnZWFibGVFQ1QtQmFycmVkICgxMCksDQoJaW50ZXJuYXRpb25hbEVDVC1CYXJyZWQgKDExKSwNCglpbnRlcnpvbmFsRUNULUJhcnJlZCAoMTIpLA0KCWRvdWJseUNoYXJnZWFibGVFQ1QtQmFycmVkICgxMyksDQoJbXVsdGlwbGVFQ1QtQmFycmVkICgxNCksDQoJYWxsUGFja2V0T3JpZW50ZWRTZXJ2aWNlc0JhcnJlZCAoMTUpLA0KCXJvYW1lckFjY2Vzc1RvSFBMTU4tQVAtQmFycmVkICAoMTYpLA0KCXJvYW1lckFjY2Vzc1RvVlBMTU4tQVAtQmFycmVkICAoMTcpLA0KCXJvYW1pbmdPdXRzaWRlUExNTk9HLUNhbGxzQmFycmVkICAoMTgpLA0KCWFsbElDLUNhbGxzQmFycmVkICAoMTkpLA0KCXJvYW1pbmdPdXRzaWRlUExNTklDLUNhbGxzQmFycmVkICAoMjApLA0KCXJvYW1pbmdPdXRzaWRlUExNTklDb3VudHJ5SUMtQ2FsbHNCYXJyZWQgICgyMSksDQoJcm9hbWluZ091dHNpZGVQTE1OLUJhcnJlZCAgKDIyKSwNCglyb2FtaW5nT3V0c2lkZVBMTU4tQ291bnRyeUJhcnJlZCAgKDIzKSwNCglyZWdpc3RyYXRpb25BbGxDRi1CYXJyZWQgICgyNCksDQoJcmVnaXN0cmF0aW9uQ0ZOb3RUb0hQTE1OLUJhcnJlZCAgKDI1KSwNCglyZWdpc3RyYXRpb25JbnRlcnpvbmFsQ0YtQmFycmVkICAoMjYpLA0KCXJlZ2lzdHJhdGlvbkludGVyem9uYWxDRk5vdFRvSFBMTU4tQmFycmVkICAoMjcpLA0KCXJlZ2lzdHJhdGlvbkludGVybmF0aW9uYWxDRi1CYXJyZWQgICgyOCl9IChTSVpFICgxNS4uMzIpKQ0KCS0tIGV4Y2VwdGlvbiBoYW5kbGluZzogcmVjZXB0aW9uIG9mIHVua25vd24gYml0IGFzc2lnbm1lbnRzIGluIHRoZQ0KCS0tIE9EQi1HZW5lcmFsRGF0YSB0eXBlIHNoYWxsIGJlIHRyZWF0ZWQgbGlrZSB1bnN1cHBvcnRlZCBPREItR2VuZXJhbERhdGENCgktLSBXaGVuIHRoZSBPREItR2VuZXJhbERhdGEgdHlwZSBpcyByZW1vdmVkIGZyb20gdGhlIEhMUiBmb3IgYSBnaXZlbiBzdWJzY3JpYmVyLCANCgktLSBpbiBOb3RlU3Vic2NyaWJlckRhdGFNb2RpZmllZCBvcGVyYXRpb24gc2VudCB0b3dhcmQgdGhlIGdzbVNDRiANCgktLSBhbGwgYml0cyBzaGFsbCBiZSBzZXQgdG8gk0+TLg0KDQpPREItSFBMTU4tRGF0YSA6Oj0gQklUIFNUUklORyB7DQoJcGxtbi1TcGVjaWZpY0JhcnJpbmdUeXBlMSAgKDApLA0KCXBsbW4tU3BlY2lmaWNCYXJyaW5nVHlwZTIgICgxKSwNCglwbG1uLVNwZWNpZmljQmFycmluZ1R5cGUzICAoMiksDQoJcGxtbi1TcGVjaWZpY0JhcnJpbmdUeXBlNCAgKDMpfSAoU0laRSAoNC4uMzIpKQ0KCS0tIGV4Y2VwdGlvbiBoYW5kbGluZzogcmVjZXB0aW9uIG9mIHVua25vd24gYml0IGFzc2lnbm1lbnRzIGluIHRoZQ0KCS0tIE9EQi1IUExNTi1EYXRhIHR5cGUgc2hhbGwgYmUgdHJlYXRlZCBsaWtlIHVuc3VwcG9ydGVkIE9EQi1IUExNTi1EYXRhIA0KCS0tIFdoZW4gdGhlIE9EQi1IUExNTi1EYXRhIHR5cGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBITFIgZm9yIGEgZ2l2ZW4gc3Vic2NyaWJlciwgDQoJLS0gaW4gTm90ZVN1YnNjcmliZXJEYXRhTW9kaWZpZWQgb3BlcmF0aW9uIHNlbnQgdG93YXJkIHRoZSBnc21TQ0YNCgktLSBhbGwgYml0cyBzaGFsbCBiZSBzZXQgdG8gk0+TLg0KDQpFeHQtU1MtSW5mb0xpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mU1MpIE9GDQoJCQkJRXh0LVNTLUluZm8NCg0KRXh0LVNTLUluZm8gOjo9IENIT0lDRSB7DQoJZm9yd2FyZGluZ0luZm8JWzBdIEV4dC1Gb3J3SW5mbywNCgljYWxsQmFycmluZ0luZm8JWzFdIEV4dC1DYWxsQmFySW5mbywNCgljdWctSW5mbwkJWzJdIENVRy1JbmZvLA0KCXNzLURhdGEJCVszXSBFeHQtU1MtRGF0YSwNCgllbWxwcC1JbmZvCVs0XSBFTUxQUC1JbmZvfQ0KDQpFeHQtRm9yd0luZm8gOjo9IFNFUVVFTkNFIHsNCglzcy1Db2RlCQlTUy1Db2RlLA0KCWZvcndhcmRpbmdGZWF0dXJlTGlzdAlFeHQtRm9yd0ZlYXR1cmVMaXN0LA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMF0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KRXh0LUZvcndGZWF0dXJlTGlzdCA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4ubWF4TnVtT2ZFeHQtQmFzaWNTZXJ2aWNlR3JvdXBzKSBPRg0KCQkJCUV4dC1Gb3J3RmVhdHVyZQ0KDQpFeHQtRm9yd0ZlYXR1cmUgOjo9IFNFUVVFTkNFIHsNCgliYXNpY1NlcnZpY2UJRXh0LUJhc2ljU2VydmljZUNvZGUJT1BUSU9OQUwsDQoJc3MtU3RhdHVzCQlbNF0gRXh0LVNTLVN0YXR1cywNCglmb3J3YXJkZWRUb051bWJlcglbNV0gSVNETi1BZGRyZXNzU3RyaW5nCU9QVElPTkFMLA0KCS0tIFdoZW4gdGhpcyBkYXRhIHR5cGUgaXMgc2VudCBmcm9tIGFuIEhMUiB3aGljaCBzdXBwb3J0cyBDQU1FTCBQaGFzZSAyDQoJLS0gdG8gYSBWTFIgdGhhdCBzdXBwb3J0cyBDQU1FTCBQaGFzZSAyIHRoZSBWTFIgc2hhbGwgbm90IGNoZWNrIHRoZQ0KCS0tIGZvcm1hdCBvZiB0aGUgbnVtYmVyDQoJZm9yd2FyZGVkVG9TdWJhZGRyZXNzCVs4XSBJU0ROLVN1YmFkZHJlc3NTdHJpbmcJT1BUSU9OQUwsDQoJZm9yd2FyZGluZ09wdGlvbnMJWzZdIEV4dC1Gb3J3T3B0aW9ucwlPUFRJT05BTCwNCglub1JlcGx5Q29uZGl0aW9uVGltZQlbN10gRXh0LU5vUmVwQ29uZFRpbWUJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVs5XSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLA0KCWxvbmdGb3J3YXJkZWRUb051bWJlcglbMTBdIEZUTi1BZGRyZXNzU3RyaW5nCU9QVElPTkFMIH0NCg0KRXh0LUZvcndPcHRpb25zIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEuLjUpKQ0KDQoJLS0gT0NURVQgMToNCg0KCS0tICBiaXQgODogbm90aWZpY2F0aW9uIHRvIGZvcndhcmRpbmcgcGFydHkNCgktLQkwICBubyBub3RpZmljYXRpb24NCgktLQkxICBub3RpZmljYXRpb24NCg0KCS0tICBiaXQgNzogcmVkaXJlY3RpbmcgcHJlc2VudGF0aW9uDQoJLS0JMCBubyBwcmVzZW50YXRpb24gIA0KCS0tCTEgIHByZXNlbnRhdGlvbg0KDQoJLS0gIGJpdCA2OiBub3RpZmljYXRpb24gdG8gY2FsbGluZyBwYXJ0eQ0KCS0tCTAgIG5vIG5vdGlmaWNhdGlvbg0KCS0tCTEgIG5vdGlmaWNhdGlvbg0KDQoJLS0gIGJpdCA1OiAwICh1bnVzZWQpDQoNCgktLSAgYml0cyA0MzogZm9yd2FyZGluZyByZWFzb24NCgktLQkwMCAgbXMgbm90IHJlYWNoYWJsZQ0KCS0tCTAxICBtcyBidXN5DQoJLS0JMTAgIG5vIHJlcGx5DQoJLS0JMTEgIHVuY29uZGl0aW9uYWwNCg0KCS0tIGJpdHMgMjE6IDAwICh1bnVzZWQpDQoNCgktLSBPQ1RFVFMgMi01OiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4gVGhleSBzaGFsbCBiZSBkaXNjYXJkZWQgaWYNCgktLSByZWNlaXZlZCBhbmQgbm90IHVuZGVyc3Rvb2QuDQoNCkV4dC1Ob1JlcENvbmRUaW1lIDo6PSBJTlRFR0VSICgxLi4xMDApDQoJLS0gT25seSB2YWx1ZXMgNS0zMCBhcmUgdXNlZC4NCgktLSBWYWx1ZXMgaW4gdGhlIHJhbmdlcyAxLTQgYW5kIDMxLTEwMCBhcmUgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UNCgktLSBJZiByZWNlaXZlZDoNCgktLQkJdmFsdWVzIDEtNCBzaGFsbCBiZSBtYXBwZWQgb24gdG8gdmFsdWUgNQ0KCS0tCQl2YWx1ZXMgMzEtMTAwIHNoYWxsIGJlIG1hcHBlZCBvbiB0byB2YWx1ZSAzMA0KDQpFeHQtQ2FsbEJhckluZm8gOjo9IFNFUVVFTkNFIHsNCglzcy1Db2RlCQlTUy1Db2RlLA0KCWNhbGxCYXJyaW5nRmVhdHVyZUxpc3QJRXh0LUNhbGxCYXJGZWF0dXJlTGlzdCwNCglleHRlbnNpb25Db250YWluZXIJRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KRXh0LUNhbGxCYXJGZWF0dXJlTGlzdCA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4ubWF4TnVtT2ZFeHQtQmFzaWNTZXJ2aWNlR3JvdXBzKSBPRg0KCQkJCUV4dC1DYWxsQmFycmluZ0ZlYXR1cmUNCg0KRXh0LUNhbGxCYXJyaW5nRmVhdHVyZSA6Oj0gU0VRVUVOQ0Ugew0KCWJhc2ljU2VydmljZQlFeHQtQmFzaWNTZXJ2aWNlQ29kZQlPUFRJT05BTCwNCglzcy1TdGF0dXMJCVs0XSBFeHQtU1MtU3RhdHVzLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpDVUctSW5mbyA6Oj0gU0VRVUVOQ0Ugew0KCWN1Zy1TdWJzY3JpcHRpb25MaXN0CUNVRy1TdWJzY3JpcHRpb25MaXN0LA0KCWN1Zy1GZWF0dXJlTGlzdAlDVUctRmVhdHVyZUxpc3QJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVswXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpDVUctU3Vic2NyaXB0aW9uTGlzdCA6Oj0gU0VRVUVOQ0UgU0laRSAoMC4ubWF4TnVtT2ZDVUcpIE9GDQoJCQkJQ1VHLVN1YnNjcmlwdGlvbg0KDQpDVUctU3Vic2NyaXB0aW9uIDo6PSBTRVFVRU5DRSB7DQoJY3VnLUluZGV4CUNVRy1JbmRleCwNCgljdWctSW50ZXJsb2NrCUNVRy1JbnRlcmxvY2ssDQoJaW50cmFDVUctT3B0aW9ucwlJbnRyYUNVRy1PcHRpb25zLA0KCWJhc2ljU2VydmljZUdyb3VwTGlzdAlFeHQtQmFzaWNTZXJ2aWNlR3JvdXBMaXN0CU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMF0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KQ1VHLUluZGV4IDo6PSBJTlRFR0VSICgwLi4zMjc2NykNCgktLSBUaGUgaW50ZXJuYWwgc3RydWN0dXJlIGlzIGRlZmluZWQgaW4gRVRTIDMwMCAxMzguDQoNCkNVRy1JbnRlcmxvY2sgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoNCkpDQoNCkludHJhQ1VHLU9wdGlvbnMgOjo9IEVOVU1FUkFURUQgew0KCW5vQ1VHLVJlc3RyaWN0aW9ucyAgKDApLA0KCWN1Z0lDLUNhbGxCYXJyZWQgICgxKSwNCgljdWdPRy1DYWxsQmFycmVkICAoMil9DQoNCm1heE51bU9mQ1VHICBJTlRFR0VSIDo6PSAxMA0KDQpDVUctRmVhdHVyZUxpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mRXh0LUJhc2ljU2VydmljZUdyb3VwcykgT0YNCgkJCQlDVUctRmVhdHVyZQ0KDQpFeHQtQmFzaWNTZXJ2aWNlR3JvdXBMaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZkV4dC1CYXNpY1NlcnZpY2VHcm91cHMpIE9GDQoJCQkJRXh0LUJhc2ljU2VydmljZUNvZGUNCg0KbWF4TnVtT2ZFeHQtQmFzaWNTZXJ2aWNlR3JvdXBzICBJTlRFR0VSIDo6PSAzMg0KDQpDVUctRmVhdHVyZSA6Oj0gU0VRVUVOQ0Ugew0KCWJhc2ljU2VydmljZQlFeHQtQmFzaWNTZXJ2aWNlQ29kZQlPUFRJT05BTCwNCglwcmVmZXJlbnRpYWxDVUctSW5kaWNhdG9yCUNVRy1JbmRleAlPUFRJT05BTCwNCglpbnRlckNVRy1SZXN0cmljdGlvbnMJSW50ZXJDVUctUmVzdHJpY3Rpb25zLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpJbnRlckNVRy1SZXN0cmljdGlvbnMgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMSkpDQoNCgktLSBiaXRzIDg3NjU0MzogMDAwMDAwICh1bnVzZWQpDQoJLS0gRXhjZXB0aW9uIGhhbmRsaW5nOg0KCS0tIGJpdHMgODc2NTQzIHNoYWxsIGJlIGlnbm9yZWQgaWYgcmVjZWl2ZWQgYW5kIG5vdCB1bmRlcnN0b29kDQoNCgktLSBiaXRzIDIxDQoJLS0JMDAgIENVRyBvbmx5IGZhY2lsaXRpZXMNCgktLQkwMSAgQ1VHIHdpdGggb3V0Z29pbmcgYWNjZXNzDQoJLS0JMTAgIENVRyB3aXRoIGluY29taW5nIGFjY2Vzcw0KCS0tCTExICBDVUcgd2l0aCBib3RoIG91dGdvaW5nIGFuZCBpbmNvbWluZyBhY2Nlc3MNCg0KRXh0LVNTLURhdGEgOjo9IFNFUVVFTkNFIHsNCglzcy1Db2RlCQlTUy1Db2RlLA0KCXNzLVN0YXR1cwlbNF0gRXh0LVNTLVN0YXR1cywNCglzcy1TdWJzY3JpcHRpb25PcHRpb24JU1MtU3Vic2NyaXB0aW9uT3B0aW9uCU9QVElPTkFMLA0KCWJhc2ljU2VydmljZUdyb3VwTGlzdAlFeHQtQmFzaWNTZXJ2aWNlR3JvdXBMaXN0CU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbNV0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KTENTLVByaXZhY3lFeGNlcHRpb25MaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZlByaXZhY3lDbGFzcykgT0YNCgkJCQlMQ1MtUHJpdmFjeUNsYXNzDQoNCm1heE51bU9mUHJpdmFjeUNsYXNzICBJTlRFR0VSIDo6PSA0DQoNCkxDUy1Qcml2YWN5Q2xhc3MgOjo9IFNFUVVFTkNFIHsNCglzcy1Db2RlCQlTUy1Db2RlLA0KCXNzLVN0YXR1cwkJRXh0LVNTLVN0YXR1cywNCglub3RpZmljYXRpb25Ub01TVXNlcglbMF0gTm90aWZpY2F0aW9uVG9NU1VzZXIJT1BUSU9OQUwsDQoJLS0gbm90aWZpY2F0aW9uVG9NU1VzZXIgbWF5IGJlIHNlbnQgb25seSBmb3IgU1MtY29kZXMgY2FsbFNlc3Npb25SZWxhdGVkDQoJLS0gYW5kIGNhbGxTZXNzaW9uVW5yZWxhdGVkLiBJZiBub3QgcmVjZWl2ZWQgZm9yIFNTLWNvZGVzIGNhbGxTZXNzaW9uUmVsYXRlZA0KCS0tIGFuZCBjYWxsU2Vzc2lvblVucmVsYXRlZCwNCgktLSB0aGUgZGVmYXVsdCB2YWx1ZXMgYWNjb3JkaW5nIHRvIDNHUFAgVFMgMjMuMjcxIHNoYWxsIGJlIGFzc3VtZWQuDQoJZXh0ZXJuYWxDbGllbnRMaXN0CVsxXSBFeHRlcm5hbENsaWVudExpc3QJT1BUSU9OQUwsDQoJLS0gZXh0ZXJuYWxDbGllbnRMaXN0IG1heSBiZSBzZW50IG9ubHkgZm9yIFNTLWNvZGUgY2FsbFNlc3Npb25VbnJlbGF0ZWQgdG8gYQ0KCS0tIHZpc2l0ZWQgbm9kZSB0aGF0IGRvZXMgbm90IHN1cHBvcnQgTENTIFJlbGVhc2UgNCBvciBsYXRlciB2ZXJzaW9ucy4NCgktLSBleHRlcm5hbENsaWVudExpc3QgbWF5IGJlIHNlbnQgb25seSBmb3IgU1MtY29kZXMgY2FsbFNlc3Npb25VbnJlbGF0ZWQgYW5kDQoJLS0gY2FsbFNlc3Npb25SZWxhdGVkIHRvIGEgdmlzaXRlZCBub2RlIHRoYXQgc3VwcG9ydHMgTENTIFJlbGVhc2UgNCBvciBsYXRlciB2ZXJzaW9ucy4NCglwbG1uQ2xpZW50TGlzdAlbMl0gUExNTkNsaWVudExpc3QJT1BUSU9OQUwsDQoJLS0gcGxtbkNsaWVudExpc3QgbWF5IGJlIHNlbnQgb25seSBmb3IgU1MtY29kZSBwbG1ub3BlcmF0b3IuDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVszXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLA0KCWV4dC1leHRlcm5hbENsaWVudExpc3QJWzRdIEV4dC1FeHRlcm5hbENsaWVudExpc3QJT1BUSU9OQUwsDQoJLS0gRXh0LWV4dGVybmFsQ2xpZW50TGlzdCBtYXkgYmUgc2VudCBvbmx5IGlmIHRoZSB2aXNpdGVkIG5vZGUgc3VwcG9ydHMgTENTIFJlbGVhc2UgNCBvcg0KCS0tIGxhdGVyIHZlcnNpb25zLCB0aGUgdXNlciBkaWQgc3BlY2lmeSBtb3JlIHRoYW4gNSBjbGllbnRzLCBhbmQgV2hpdGUgQm9vayBTQ0NQIGlzIHVzZWQuDQoJc2VydmljZVR5cGVMaXN0CVs1XQlTZXJ2aWNlVHlwZUxpc3QJT1BUSU9OQUwNCgktLSBzZXJ2aWNlVHlwZUxpc3QgbWF5IGJlIHNlbnQgb25seSBmb3IgU1MtY29kZSBzZXJ2aWNlVHlwZSBhbmQgaWYgdGhlIHZpc2l0ZWQgbm9kZQ0KCS0tIHN1cHBvcnRzIExDUyBSZWxlYXNlIDUgb3IgbGF0ZXIgdmVyc2lvbnMuDQoJLS0gDQoJLS0gaWYgc2VnbWVudGF0aW9uIGlzIHVzZWQsIHRoZSBjb21wbGV0ZSBMQ1MtUHJpdmFjeUNsYXNzIHNoYWxsIGJlIHNlbnQgaW4gb25lIHNlZ21lbnQNCn0NCg0KRXh0ZXJuYWxDbGllbnRMaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgwLi5tYXhOdW1PZkV4dGVybmFsQ2xpZW50KSBPRg0KCQkJCUV4dGVybmFsQ2xpZW50DQoNCm1heE51bU9mRXh0ZXJuYWxDbGllbnQgIElOVEVHRVIgOjo9IDUNCg0KUExNTkNsaWVudExpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mUExNTkNsaWVudCkgT0YNCgkJCQlMQ1NDbGllbnRJbnRlcm5hbElEDQoNCm1heE51bU9mUExNTkNsaWVudCAgSU5URUdFUiA6Oj0gNQ0KDQpFeHQtRXh0ZXJuYWxDbGllbnRMaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZkV4dC1FeHRlcm5hbENsaWVudCkgT0YNCgkJCQlFeHRlcm5hbENsaWVudA0KDQptYXhOdW1PZkV4dC1FeHRlcm5hbENsaWVudCAgSU5URUdFUiA6Oj0gMzUNCg0KRXh0ZXJuYWxDbGllbnQgOjo9IFNFUVVFTkNFIHsNCgljbGllbnRJZGVudGl0eQlMQ1NDbGllbnRFeHRlcm5hbElELA0KCWdtbGMtUmVzdHJpY3Rpb24JWzBdIEdNTEMtUmVzdHJpY3Rpb24JT1BUSU9OQUwsDQoJbm90aWZpY2F0aW9uVG9NU1VzZXIJWzFdIE5vdGlmaWNhdGlvblRvTVNVc2VyCU9QVElPTkFMLA0KCS0tIElmIG5vdGlmaWNhdGlvblRvTVNVc2VyIGlzIG5vdCByZWNlaXZlZCwgdGhlIGRlZmF1bHQgdmFsdWUgYWNjb3JkaW5nIHRvIA0KCS0tIDNHUFAgVFMgMjMuMjcxIHNoYWxsIGJlIGFzc3VtZWQuDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVsyXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uIH0NCg0KR01MQy1SZXN0cmljdGlvbiA6Oj0gRU5VTUVSQVRFRCB7DQoJZ21sYy1MaXN0CQkoMCksDQoJaG9tZS1Db3VudHJ5CSgxKSAsDQoJLi4uIH0NCi0tIGV4Y2VwdGlvbiBoYW5kbGluZzoNCi0tIEF0IHJlY2VwdGlvbiBvZiBhbnkgb3RoZXIgdmFsdWUgdGhhbiB0aGUgb25lcyBsaXN0ZWQgdGhlIHJlY2VpdmVyIHNoYWxsIGlnbm9yZQ0KLS0gR01MQy1SZXN0cmljdGlvbi4NCg0KTm90aWZpY2F0aW9uVG9NU1VzZXIgOjo9IEVOVU1FUkFURUQgew0KCW5vdGlmeUxvY2F0aW9uQWxsb3dlZAkoMCksDQoJbm90aWZ5QW5kVmVyaWZ5LUxvY2F0aW9uQWxsb3dlZElmTm9SZXNwb25zZQkoMSksDQoJbm90aWZ5QW5kVmVyaWZ5LUxvY2F0aW9uTm90QWxsb3dlZElmTm9SZXNwb25zZQkoMiksDQoJLi4uLA0KCWxvY2F0aW9uTm90QWxsb3dlZCAoMykgfQ0KLS0gZXhjZXB0aW9uIGhhbmRsaW5nOg0KLS0gQXQgcmVjZXB0aW9uIG9mIGFueSBvdGhlciB2YWx1ZSB0aGFuIHRoZSBvbmVzIGxpc3RlZCB0aGUgcmVjZWl2ZXIgc2hhbGwgaWdub3JlDQotLSBOb3RpZmljYXRpb25Ub01TVXNlci4NCg0KU2VydmljZVR5cGVMaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZlNlcnZpY2VUeXBlKSBPRg0KCQkJCVNlcnZpY2VUeXBlDQoNCm1heE51bU9mU2VydmljZVR5cGUgIElOVEVHRVIgOjo9IDMyDQoNClNlcnZpY2VUeXBlIDo6PSBTRVFVRU5DRSB7DQoJc2VydmljZVR5cGVJZGVudGl0eQlMQ1NTZXJ2aWNlVHlwZUlELA0KCWdtbGMtUmVzdHJpY3Rpb24JWzBdIEdNTEMtUmVzdHJpY3Rpb24JT1BUSU9OQUwsDQoJbm90aWZpY2F0aW9uVG9NU1VzZXIJWzFdIE5vdGlmaWNhdGlvblRvTVNVc2VyCU9QVElPTkFMLA0KCS0tIElmIG5vdGlmaWNhdGlvblRvTVNVc2VyIGlzIG5vdCByZWNlaXZlZCwgdGhlIGRlZmF1bHQgdmFsdWUgYWNjb3JkaW5nIHRvIA0KCS0tIDNHUFAgVFMgMjMuMjcxIHNoYWxsIGJlIGFzc3VtZWQuDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVsyXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uIH0NCg0KTU9MUi1MaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZk1PTFItQ2xhc3MpIE9GDQoJCQkJTU9MUi1DbGFzcw0KDQptYXhOdW1PZk1PTFItQ2xhc3MgIElOVEVHRVIgOjo9IDMNCg0KTU9MUi1DbGFzcyA6Oj0gU0VRVUVOQ0Ugew0KCXNzLUNvZGUJCVNTLUNvZGUsDQoJc3MtU3RhdHVzCQlFeHQtU1MtU3RhdHVzLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMF0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KWm9uZUNvZGVMaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZlpvbmVDb2RlcykNCgkJCQlPRiBab25lQ29kZQ0KDQpab25lQ29kZSA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgyKSkNCgktLSBpbnRlcm5hbCBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCBpbiBUUyAzR1BQIFRTIDIzLjAwMyBbMTddDQoNCm1heE51bU9mWm9uZUNvZGVzICBJTlRFR0VSIDo6PSAxMA0KDQpJbnNlcnRTdWJzY3JpYmVyRGF0YVJlcyA6Oj0gU0VRVUVOQ0Ugew0KCXRlbGVzZXJ2aWNlTGlzdAlbMV0gVGVsZXNlcnZpY2VMaXN0CU9QVElPTkFMLA0KCWJlYXJlclNlcnZpY2VMaXN0CVsyXSBCZWFyZXJTZXJ2aWNlTGlzdAlPUFRJT05BTCwNCglzcy1MaXN0CQlbM10gU1MtTGlzdAlPUFRJT05BTCwNCglvZGItR2VuZXJhbERhdGEJWzRdIE9EQi1HZW5lcmFsRGF0YQlPUFRJT05BTCwNCglyZWdpb25hbFN1YnNjcmlwdGlvblJlc3BvbnNlCVs1XSBSZWdpb25hbFN1YnNjcmlwdGlvblJlc3BvbnNlCU9QVElPTkFMLA0KCXN1cHBvcnRlZENhbWVsUGhhc2VzCVs2XSBTdXBwb3J0ZWRDYW1lbFBoYXNlcwlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzddIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4gLA0KCW9mZmVyZWRDYW1lbDRDU0lzCVs4XSBPZmZlcmVkQ2FtZWw0Q1NJcwlPUFRJT05BTCwNCglzdXBwb3J0ZWRGZWF0dXJlcwlbOV0gU3VwcG9ydGVkRmVhdHVyZXMJT1BUSU9OQUwgfQ0KDQpSZWdpb25hbFN1YnNjcmlwdGlvblJlc3BvbnNlIDo6PSBFTlVNRVJBVEVEIHsNCgluZXR3b3JrTm9kZS1BcmVhUmVzdHJpY3RlZAkoMCksDQoJdG9vTWFueVpvbmVDb2RlcwkoMSksDQoJem9uZUNvZGVzQ29uZmxpY3QJKDIpLA0KCXJlZ2lvbmFsU3Vic2NOb3RTdXBwb3J0ZWQJKDMpfQ0KDQpEZWxldGVTdWJzY3JpYmVyRGF0YUFyZyA6Oj0gU0VRVUVOQ0Ugew0KCWltc2kJCQlbMF0gSU1TSSwNCgliYXNpY1NlcnZpY2VMaXN0CVsxXSBCYXNpY1NlcnZpY2VMaXN0CU9QVElPTkFMLA0KCS0tIFRoZSBleGNlcHRpb24gaGFuZGxpbmcgZm9yIHJlY2VwdGlvbiBvZiB1bnN1cHBvcnRlZC9ub3QgYWxsb2NhdGVkDQoJLS0gYmFzaWNTZXJ2aWNlQ29kZXMgaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDYuOC4yDQoJc3MtTGlzdAkJWzJdIFNTLUxpc3QJT1BUSU9OQUwsDQoJcm9hbWluZ1Jlc3RyaWN0aW9uRHVlVG9VbnN1cHBvcnRlZEZlYXR1cmUgWzRdIE5VTEwJT1BUSU9OQUwsDQoJcmVnaW9uYWxTdWJzY3JpcHRpb25JZGVudGlmaWVyCVs1XSBab25lQ29kZQlPUFRJT05BTCwNCgl2YnNHcm91cEluZGljYXRpb24JWzddIE5VTEwJCU9QVElPTkFMLA0KCXZnY3NHcm91cEluZGljYXRpb24JWzhdIE5VTEwJIE9QVElPTkFMLA0KCWNhbWVsU3Vic2NyaXB0aW9uSW5mb1dpdGhkcmF3CVs5XSBOVUxMCSBPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzZdIEV4dGVuc2lvbkNvbnRhaW5lciBPUFRJT05BTCwNCgkuLi4sDQoJZ3Byc1N1YnNjcmlwdGlvbkRhdGFXaXRoZHJhdwlbMTBdIEdQUlNTdWJzY3JpcHRpb25EYXRhV2l0aGRyYXcJT1BUSU9OQUwsDQoJcm9hbWluZ1Jlc3RyaWN0ZWRJblNnc25EdWVUb1Vuc3VwcHBvcnRlZEZlYXR1cmUgWzExXSBOVUxMCU9QVElPTkFMLA0KCWxzYUluZm9ybWF0aW9uV2l0aGRyYXcJWzEyXSBMU0FJbmZvcm1hdGlvbldpdGhkcmF3CU9QVElPTkFMLA0KCWdtbGMtTGlzdFdpdGhkcmF3IAlbMTNdCU5VTEwJCU9QVElPTkFMLA0KCWlzdEluZm9ybWF0aW9uV2l0aGRyYXcJWzE0XSBOVUxMCQlPUFRJT05BTCwNCglzcGVjaWZpY0NTSS1XaXRoZHJhdwlbMTVdIFNwZWNpZmljQ1NJLVdpdGhkcmF3CU9QVElPTkFMLA0KCWNoYXJnaW5nQ2hhcmFjdGVyaXN0aWNzV2l0aGRyYXcJWzE2XSBOVUxMCQlPUFRJT05BTCwNCglzdG4tc3JXaXRoZHJhdwlbMTddIE5VTEwJCU9QVElPTkFMLA0KCWVwc1N1YnNjcmlwdGlvbkRhdGFXaXRoZHJhdwlbMThdIEVQUy1TdWJzY3JpcHRpb25EYXRhV2l0aGRyYXcJT1BUSU9OQUwsDQoJYXBuLW9pLXJlcGxhY2VtZW50V2l0aGRyYXcJWzE5XSBOVUxMCQlPUFRJT05BTCwNCgljc2ctU3Vic2NyaXB0aW9uRGVsZXRlZAlbMjBdCU5VTEwJCU9QVElPTkFMIH0NCg0KU3BlY2lmaWNDU0ktV2l0aGRyYXcgOjo9IEJJVCBTVFJJTkcgew0KCW8tY3NpICgwKSwNCglzcy1jc2kgKDEpLA0KCXRpZi1jc2kgKDIpLA0KCWQtY3NpICgzKSwNCgl2dC1jc2kgKDQpLA0KCW1vLXNtcy1jc2kgKDUpLA0KCW0tY3NpICg2KSwNCglncHJzLWNzaSAoNyksDQoJdC1jc2kgKDgpLA0KCW10LXNtcy1jc2kgKDkpLA0KCW1nLWNzaSAoMTApLA0KCW8tSU0tQ1NJICgxMSksIA0KCWQtSU0tQ1NJICgxMiksDQoJdnQtSU0tQ1NJICgxMykgfSAoU0laRSg4Li4zMikpIA0KLS0gZXhjZXB0aW9uIGhhbmRsaW5nOg0KLS0gYml0cyAxMSB0byAzMSBzaGFsbCBiZSBpZ25vcmVkIGlmIHJlY2VpdmVkIGJ5IGEgbm9uLUlQIE11bHRpbWVkaWEgQ29yZSBOZXR3b3JrIGVudGl0eS4NCi0tIGJpdHMgMC0xMCBhbmQgMTQtMzEgc2hhbGwgYmUgaWdub3JlZCBpZiByZWNlaXZlZCBieSBhbiBJUCBNdWx0aW1lZGlhIENvcmUgTmV0d29yayBlbnRpdHkuDQotLSBiaXRzIDExLTEzIGFyZSBvbmx5IGFwcGxpY2FibGUgaW4gYW4gSVAgTXVsdGltZWRpYSBDb3JlIE5ldHdvcmsuDQotLSBCaXQgOCBhbmQgYml0cyAxMS0xMyBhcmUgb25seSBhcHBsaWNhYmxlIGZvciB0aGUgTm90ZVN1YnNjcmliZXJEYXRhTW9kaWZpZWQgb3BlcmF0aW9uLg0KDQpHUFJTU3Vic2NyaXB0aW9uRGF0YVdpdGhkcmF3IDo6PSBDSE9JQ0Ugew0KCWFsbEdQUlNEYXRhCU5VTEwsDQoJY29udGV4dElkTGlzdAlDb250ZXh0SWRMaXN0fQ0KDQpFUFMtU3Vic2NyaXB0aW9uRGF0YVdpdGhkcmF3IDo6PSBDSE9JQ0Ugew0KCWFsbEVQUy1EYXRhCU5VTEwsDQoJY29udGV4dElkTGlzdAlDb250ZXh0SWRMaXN0fQ0KDQpDb250ZXh0SWRMaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZlBEUC1Db250ZXh0cykgT0YNCgkJCQlDb250ZXh0SWQNCg0KTFNBSW5mb3JtYXRpb25XaXRoZHJhdyA6Oj0gQ0hPSUNFIHsNCglhbGxMU0FEYXRhCU5VTEwsDQoJbHNhSWRlbnRpdHlMaXN0CUxTQUlkZW50aXR5TGlzdCB9DQoNCkxTQUlkZW50aXR5TGlzdCA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4ubWF4TnVtT2ZMU0FzKSBPRg0KCQkJCUxTQUlkZW50aXR5DQoNCkJhc2ljU2VydmljZUxpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mQmFzaWNTZXJ2aWNlcykgT0YNCgkJCQlFeHQtQmFzaWNTZXJ2aWNlQ29kZQ0KDQptYXhOdW1PZkJhc2ljU2VydmljZXMgIElOVEVHRVIgOjo9IDcwDQoNCkRlbGV0ZVN1YnNjcmliZXJEYXRhUmVzIDo6PSBTRVFVRU5DRSB7DQoJcmVnaW9uYWxTdWJzY3JpcHRpb25SZXNwb25zZQlbMF0gUmVnaW9uYWxTdWJzY3JpcHRpb25SZXNwb25zZQlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KVmxyQ2FtZWxTdWJzY3JpcHRpb25JbmZvIDo6PSBTRVFVRU5DRSB7DQoJby1DU0kJCVswXSBPLUNTSQkJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVsxXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLA0KCXNzLUNTSQkJWzJdIFNTLUNTSQlPUFRJT05BTCwNCglvLUJjc21DYW1lbFREUC1Dcml0ZXJpYUxpc3QJWzRdIE8tQmNzbUNhbWVsVERQQ3JpdGVyaWFMaXN0CU9QVElPTkFMLA0KCXRpZi1DU0kJCVszXSBOVUxMCU9QVElPTkFMLA0KCW0tQ1NJCQlbNV0gTS1DU0kJT1BUSU9OQUwsDQoJbW8tc21zLUNTSQlbNl0gU01TLUNTSQlPUFRJT05BTCwNCgl2dC1DU0kJCVs3XSBULUNTSQlPUFRJT05BTCwNCgl0LUJDU00tQ0FNRUwtVERQLUNyaXRlcmlhTGlzdAlbOF0gVC1CQ1NNLUNBTUVMLVREUC1Dcml0ZXJpYUxpc3QJT1BUSU9OQUwsDQoJZC1DU0kJCVs5XSBELUNTSQlPUFRJT05BTCwNCgltdC1zbXMtQ1NJCVsxMF0gU01TLUNTSQlPUFRJT05BTCwNCgltdC1zbXNDQU1FTFREUC1Dcml0ZXJpYUxpc3QJWzExXQlNVC1zbXNDQU1FTFREUC1Dcml0ZXJpYUxpc3QJT1BUSU9OQUwNCgl9DQoNCk1ULXNtc0NBTUVMVERQLUNyaXRlcmlhTGlzdCA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4uIG1heE51bU9mQ2FtZWxURFBEYXRhKSBPRg0KCU1ULXNtc0NBTUVMVERQLUNyaXRlcmlhDQoNCk1ULXNtc0NBTUVMVERQLUNyaXRlcmlhIDo6PSBTRVFVRU5DRSB7DQoJc21zLVRyaWdnZXJEZXRlY3Rpb25Qb2ludAlTTVMtVHJpZ2dlckRldGVjdGlvblBvaW50LA0KCXRwZHUtVHlwZUNyaXRlcmlvbglbMF0JVFBEVS1UeXBlQ3JpdGVyaW9uCQlPUFRJT05BTCwNCgkuLi4gfQ0KDQpUUERVLVR5cGVDcml0ZXJpb24gOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mVFBEVVR5cGVzKSBPRg0KCU1ULVNNUy1UUERVLVR5cGUNCg0KDQptYXhOdW1PZlRQRFVUeXBlcyBJTlRFR0VSIDo6PSA1DQoNCk1ULVNNUy1UUERVLVR5cGUgOjo9IEVOVU1FUkFURUQgew0KCXNtcy1ERUxJVkVSIAkoMCksDQoJc21zLVNVQk1JVC1SRVBPUlQgCSgxKSwNCglzbXMtU1RBVFVTLVJFUE9SVCAJKDIpLA0KCS4uLiB9DQoNCi0tCWV4Y2VwdGlvbiBoYW5kbGluZzoNCi0tCUZvciBUUERVLVR5cGVDcml0ZXJpb24gc2VxdWVuY2VzIGNvbnRhaW5pbmcgdGhpcyBwYXJhbWV0ZXIgd2l0aCBhbnkNCi0tCW90aGVyIHZhbHVlIHRoYW4gdGhlIG9uZXMgbGlzdGVkIGFib3ZlIHRoZSByZWNlaXZlciBzaGFsbCBpZ25vcmUgDQotLQl0aGUgd2hvbGUgVFBEVS1UeXBlQ3JpdGVyaW9uIHNlcXVlbmNlLg0KLS0JSW4gQ0FNRUwgcGhhc2UgNCwgc21zLVNVQk1JVC1SRVBPUlQgc2hhbGwgbm90IGJlIHVzZWQgYW5kIGEgcmVjZWl2ZWQgVFBEVS1UeXBlQ3JpdGVyaW9uDQotLQlzZXF1ZW5jZSBjb250YWluaW5nIHNtcy1TVUJNSVQtUkVQT1JUIHNoYWxsIGJlIHdob2xseSBpZ25vcmVkLg0KDQpELUNTSSA6Oj0gU0VRVUVOQ0Ugew0KCWRwLUFuYWx5c2VkSW5mb0NyaXRlcmlhTGlzdAlbMF0gRFAtQW5hbHlzZWRJbmZvQ3JpdGVyaWFMaXN0CU9QVElPTkFMLA0KCWNhbWVsQ2FwYWJpbGl0eUhhbmRsaW5nCVsxXSBDYW1lbENhcGFiaWxpdHlIYW5kbGluZwlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzJdIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCglub3RpZmljYXRpb25Ub0NTRQlbM10JTlVMTAkJT1BUSU9OQUwsDQoJY3NpLUFjdGl2ZQlbNF0JTlVMTAkJT1BUSU9OQUwsDQoJLi4ufSANCi0tCW5vdGlmaWNhdGlvblRvQ1NFIGFuZCBjc2ktQWN0aXZlIHNoYWxsIG5vdCBiZSBwcmVzZW50IHdoZW4gRC1DU0kgaXMgc2VudCB0byBWTFIvR01TQy4NCi0tCVRoZXkgbWF5IG9ubHkgYmUgaW5jbHVkZWQgaW4gQVRTSS9BVE0gYWNrL05TREMgbWVzc2FnZS4NCi0tCURQLUFuYWx5c2VkSW5mb0NyaXRlcmlhIGFuZCAgY2FtZWxDYXBhYmlsaXR5SGFuZGxpbmcgc2hhbGwgYmUgcHJlc2VudCBpbiANCi0tCXRoZSBELUNTSSBzZXF1ZW5jZS4NCi0tCUlmIEQtQ1NJIGlzIHNlZ21lbnRlZCwgdGhlbiB0aGUgZmlyc3Qgc2VnbWVudCBzaGFsbCBjb250YWluIGRwLUFuYWx5c2VkSW5mb0NyaXRlcmlhTGlzdA0KLS0JYW5kIGNhbWVsQ2FwYWJpbGl0eUhhbmRsaW5nLiBTdWJzZXF1ZW50IHNlZ21lbnRzIHNoYWxsIG5vdCBjb250YWluDQotLQljYW1lbENhcGFiaWxpdHlIYW5kbGluZywgYnV0IG1heSBjb250YWluIGRwLUFuYWx5c2VkSW5mb0NyaXRlcmlhTGlzdC4NCg0KRFAtQW5hbHlzZWRJbmZvQ3JpdGVyaWFMaXN0ICA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4ubWF4TnVtT2ZEUC1BbmFseXNlZEluZm9Dcml0ZXJpYSkgT0YNCgkJCQlEUC1BbmFseXNlZEluZm9Dcml0ZXJpdW0NCg0KbWF4TnVtT2ZEUC1BbmFseXNlZEluZm9Dcml0ZXJpYSBJTlRFR0VSIDo6PSAxMA0KDQpEUC1BbmFseXNlZEluZm9Dcml0ZXJpdW0gOjo9IFNFUVVFTkNFIHsNCglkaWFsbGVkTnVtYmVyCUlTRE4tQWRkcmVzc1N0cmluZywNCglzZXJ2aWNlS2V5CVNlcnZpY2VLZXksDQoJZ3NtU0NGLUFkZHJlc3MJSVNETi1BZGRyZXNzU3RyaW5nLA0KCWRlZmF1bHRDYWxsSGFuZGxpbmcJRGVmYXVsdENhbGxIYW5kbGluZywNCglleHRlbnNpb25Db250YWluZXIJRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KU1MtQ1NJIDo6PSBTRVFVRU5DRSB7DQoJc3MtQ2FtZWxEYXRhCVNTLUNhbWVsRGF0YSwNCglleHRlbnNpb25Db250YWluZXIJRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLiwNCglub3RpZmljYXRpb25Ub0NTRQlbMF0JTlVMTAkJT1BUSU9OQUwsDQoJY3NpLUFjdGl2ZQlbMV0JTlVMTAkJT1BUSU9OQUwNCi0tCW5vdGlmaWNhdGlvblRvQ1NFIGFuZCBjc2ktQWN0aXZlIHNoYWxsIG5vdCBiZSBwcmVzZW50IHdoZW4gU1MtQ1NJIGlzIHNlbnQgdG8gVkxSLg0KLS0JVGhleSBtYXkgb25seSBiZSBpbmNsdWRlZCBpbiBBVFNJL0FUTSBhY2svTlNEQyBtZXNzYWdlLg0KfQ0KDQpTUy1DYW1lbERhdGEgIDo6PSBTRVFVRU5DRSB7DQoJc3MtRXZlbnRMaXN0CVNTLUV2ZW50TGlzdCwNCglnc21TQ0YtQWRkcmVzcwlJU0ROLUFkZHJlc3NTdHJpbmcsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVswXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsIA0KCS4uLn0NCg0KU1MtRXZlbnRMaXN0ICA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4ubWF4TnVtT2ZDYW1lbFNTRXZlbnRzKSBPRiBTUy1Db2RlDQoJLS0gQWN0aW9ucyBmb3IgdGhlIGZvbGxvd2luZyBTUy1Db2RlIHZhbHVlcyBhcmUgZGVmaW5lZCBpbiBDQU1FTCBQaGFzZSAzOg0KCS0tIGVjdAkJU1MtQ29kZSA6Oj0gJzAwMTEwMDAxJ0INCgktLSBtdWx0aVBUWQlTUy1Db2RlIDo6PSAnMDEwMTAwMDEnQg0KCS0tIGNkCQlTUy1Db2RlIDo6PSAnMDAxMDAxMDAnQg0KCS0tIGNjYnMJCVNTLUNvZGUgOjo9ICcwMTAwMDEwMCdCDQoJLS0gYWxsIG90aGVyIFNTIGNvZGVzIHNoYWxsIGJlIGlnbm9yZWQNCgktLSBXaGVuIFNTLUNTSSBpcyBzZW50IHRvIHRoZSBWTFIsIGl0IHNoYWxsIG5vdCBjb250YWluIGEgbWFya2luZyBmb3IgY2Nicy4NCgktLSBJZiB0aGUgVkxSIHJlY2VpdmVzIFNTLUNTSSBjb250YWluaW5nIGEgbWFya2luZyBmb3IgY2NicywgdGhlIFZMUiBzaGFsbCBkaXNjYXJkIHRoZQ0KCS0tIGNjYnMgbWFya2luZyBpbiBTUy1DU0kuDQoNCm1heE51bU9mQ2FtZWxTU0V2ZW50cyBJTlRFR0VSIDo6PSAxMA0KDQpPLUNTSSA6Oj0gU0VRVUVOQ0Ugew0KCW8tQmNzbUNhbWVsVERQRGF0YUxpc3QJTy1CY3NtQ2FtZWxURFBEYXRhTGlzdCwNCglleHRlbnNpb25Db250YWluZXIJRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLiwNCgljYW1lbENhcGFiaWxpdHlIYW5kbGluZwlbMF0gQ2FtZWxDYXBhYmlsaXR5SGFuZGxpbmcJT1BUSU9OQUwsDQoJbm90aWZpY2F0aW9uVG9DU0UJWzFdCU5VTEwJCU9QVElPTkFMLA0KCWNzaUFjdGl2ZQkJWzJdCU5VTEwJCU9QVElPTkFMfQ0KLS0Jbm90aWZpY2F0aW9udG9DU0UgYW5kIGNzaUFjdGl2ZSBzaGFsbCBub3QgYmUgcHJlc2VudCB3aGVuIE8tQ1NJIGlzIHNlbnQgdG8gVkxSL0dNU0MuDQotLQlUaGV5IG1heSBvbmx5IGJlIGluY2x1ZGVkIGluIEFUU0kvQVRNIGFjay9OU0RDIG1lc3NhZ2UuDQotLQlPLUNTSSBzaGFsbCBub3QgYmUgc2VnbWVudGVkLg0KDQpPLUJjc21DYW1lbFREUERhdGFMaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZkNhbWVsVERQRGF0YSkgT0YNCglPLUJjc21DYW1lbFREUERhdGENCgktLSBPLUJjc21DYW1lbFREUERhdGFMaXN0IHNoYWxsIG5vdCBjb250YWluIG1vcmUgdGhhbiBvbmUgaW5zdGFuY2Ugb2YNCgktLSBPLUJjc21DYW1lbFREUERhdGEgY29udGFpbmluZyB0aGUgc2FtZSB2YWx1ZSBmb3Igby1CY3NtVHJpZ2dlckRldGVjdGlvblBvaW50Lg0KCS0tIEZvciBDQU1FTCBQaGFzZSAyLCB0aGlzIG1lYW5zIHRoYXQgb25seSBvbmUgaW5zdGFuY2Ugb2YgTy1CY3NtQ2FtZWxURFBEYXRhIGlzIGFsbG93ZWQNCgktLSB3aXRoIG8tQmNzbVRyaWdnZXJEZXRlY3Rpb25Qb2ludCBiZWluZyBlcXVhbCB0byBEUDIuDQoNCm1heE51bU9mQ2FtZWxURFBEYXRhICBJTlRFR0VSIDo6PSAxMA0KDQpPLUJjc21DYW1lbFREUERhdGEgOjo9IFNFUVVFTkNFIHsNCglvLUJjc21UcmlnZ2VyRGV0ZWN0aW9uUG9pbnQJTy1CY3NtVHJpZ2dlckRldGVjdGlvblBvaW50LA0KCXNlcnZpY2VLZXkJU2VydmljZUtleSwNCglnc21TQ0YtQWRkcmVzcwlbMF0gSVNETi1BZGRyZXNzU3RyaW5nLA0KCWRlZmF1bHRDYWxsSGFuZGxpbmcJWzFdIERlZmF1bHRDYWxsSGFuZGxpbmcsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVsyXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uDQoJfQ0KDQpTZXJ2aWNlS2V5IDo6PSBJTlRFR0VSICgwLi4yMTQ3NDgzNjQ3KQ0KDQpPLUJjc21UcmlnZ2VyRGV0ZWN0aW9uUG9pbnQgOjo9IEVOVU1FUkFURUQgew0KCWNvbGxlY3RlZEluZm8gKDIpLA0KCS4uLiwNCglyb3V0ZVNlbGVjdEZhaWx1cmUgKDQpIH0NCgktLSBleGNlcHRpb24gaGFuZGxpbmc6DQoJLS0gRm9yIE8tQmNzbUNhbWVsVERQRGF0YSBzZXF1ZW5jZXMgY29udGFpbmluZyB0aGlzIHBhcmFtZXRlciB3aXRoIGFueQ0KCS0tIG90aGVyIHZhbHVlIHRoYW4gdGhlIG9uZXMgbGlzdGVkIHRoZSByZWNlaXZlciBzaGFsbCBpZ25vcmUgdGhlIHdob2xlIA0KCS0tIE8tQmNzbUNhbWVsVERQRGF0YXNlcXVlbmNlLiANCgktLSBGb3IgTy1CY3NtQ2FtZWxURFAtQ3JpdGVyaWEgc2VxdWVuY2VzIGNvbnRhaW5pbmcgdGhpcyBwYXJhbWV0ZXIgd2l0aCBhbnkNCgktLSBvdGhlciB2YWx1ZSB0aGFuIHRoZSBvbmVzIGxpc3RlZCB0aGUgcmVjZWl2ZXIgc2hhbGwgaWdub3JlIHRoZSB3aG9sZQ0KCS0tIE8tQmNzbUNhbWVsVERQLUNyaXRlcmlhIHNlcXVlbmNlLg0KDQpPLUJjc21DYW1lbFREUENyaXRlcmlhTGlzdCA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4ubWF4TnVtT2ZDYW1lbFREUERhdGEpIE9GDQoJTy1CY3NtQ2FtZWxURFAtQ3JpdGVyaWEgDQoNClQtQkNTTS1DQU1FTC1URFAtQ3JpdGVyaWFMaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZkNhbWVsVERQRGF0YSkgT0YNCglULUJDU00tQ0FNRUwtVERQLUNyaXRlcmlhIA0KDQpPLUJjc21DYW1lbFREUC1Dcml0ZXJpYSA6Oj0gU0VRVUVOQ0Ugew0KCW8tQmNzbVRyaWdnZXJEZXRlY3Rpb25Qb2ludAlPLUJjc21UcmlnZ2VyRGV0ZWN0aW9uUG9pbnQsCQ0KCWRlc3RpbmF0aW9uTnVtYmVyQ3JpdGVyaWEgCVswXSBEZXN0aW5hdGlvbk51bWJlckNyaXRlcmlhCU9QVElPTkFMLA0KCWJhc2ljU2VydmljZUNyaXRlcmlhCVsxXSBCYXNpY1NlcnZpY2VDcml0ZXJpYQlPUFRJT05BTCwNCgljYWxsVHlwZUNyaXRlcmlhCVsyXSBDYWxsVHlwZUNyaXRlcmlhCU9QVElPTkFMLA0KCS4uLiwNCglvLUNhdXNlVmFsdWVDcml0ZXJpYQlbM10gTy1DYXVzZVZhbHVlQ3JpdGVyaWEJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVs0XSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwgfQ0KDQpULUJDU00tQ0FNRUwtVERQLUNyaXRlcmlhIDo6PSBTRVFVRU5DRSB7DQoJdC1CQ1NNLVRyaWdnZXJEZXRlY3Rpb25Qb2ludAlULUJjc21UcmlnZ2VyRGV0ZWN0aW9uUG9pbnQsCQ0KCWJhc2ljU2VydmljZUNyaXRlcmlhCVswXSBCYXNpY1NlcnZpY2VDcml0ZXJpYQlPUFRJT05BTCwNCgl0LUNhdXNlVmFsdWVDcml0ZXJpYQlbMV0gVC1DYXVzZVZhbHVlQ3JpdGVyaWEJT1BUSU9OQUwsDQoJLi4uIH0NCg0KRGVzdGluYXRpb25OdW1iZXJDcml0ZXJpYSAgOjo9IFNFUVVFTkNFIHsNCgltYXRjaFR5cGUJCVswXSBNYXRjaFR5cGUsDQoJZGVzdGluYXRpb25OdW1iZXJMaXN0IAlbMV0gRGVzdGluYXRpb25OdW1iZXJMaXN0CU9QVElPTkFMLA0KCWRlc3RpbmF0aW9uTnVtYmVyTGVuZ3RoTGlzdAlbMl0gRGVzdGluYXRpb25OdW1iZXJMZW5ndGhMaXN0CU9QVElPTkFMLA0KCS0tIG9uZSBvciBib3RoIG9mIGRlc3RpbmF0aW9uTnVtYmVyTGlzdCBhbmQgZGVzdGluYXRpb25OdW1iZXJMZW5ndGhMaXN0IA0KCS0tIHNoYWxsIGJlIHByZXNlbnQNCgkuLi59DQoNCkRlc3RpbmF0aW9uTnVtYmVyTGlzdCAgOjo9IFNFUVVFTkNFIFNJWkUJKDEuLm1heE51bU9mQ2FtZWxEZXN0aW5hdGlvbk51bWJlcnMpIE9GDQoJCQkJSVNETi1BZGRyZXNzU3RyaW5nDQoJLS0gVGhlIHJlY2VpdmluZyBlbnRpdHkgc2hhbGwgbm90IGNoZWNrIHRoZSBmb3JtYXQgb2YgYSBudW1iZXIgaW4NCgktLSB0aGUgZGlhbGxlZCBudW1iZXIgbGlzdA0KDQpEZXN0aW5hdGlvbk51bWJlckxlbmd0aExpc3QgIDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZkNhbWVsRGVzdGluYXRpb25OdW1iZXJMZW5ndGhzKSBPRiANCgkJCQkJSU5URUdFUigxLi5tYXhOdW1PZklTRE4tQWRkcmVzc0RpZ2l0cykNCg0KQmFzaWNTZXJ2aWNlQ3JpdGVyaWEgICA6Oj0gU0VRVUVOQ0UgU0laRSgxLi5tYXhOdW1PZkNhbWVsQmFzaWNTZXJ2aWNlQ3JpdGVyaWEpIE9GDQoJRXh0LUJhc2ljU2VydmljZUNvZGUNCg0KbWF4TnVtT2ZJU0ROLUFkZHJlc3NEaWdpdHMgIElOVEVHRVIgOjo9IDE1DQoNCm1heE51bU9mQ2FtZWxEZXN0aW5hdGlvbk51bWJlcnMgIElOVEVHRVIgOjo9IDEwDQoNCm1heE51bU9mQ2FtZWxEZXN0aW5hdGlvbk51bWJlckxlbmd0aHMgIElOVEVHRVIgOjo9IDMNCg0KbWF4TnVtT2ZDYW1lbEJhc2ljU2VydmljZUNyaXRlcmlhICBJTlRFR0VSIDo6PSA1DQoNCkNhbGxUeXBlQ3JpdGVyaWEgICAgICAgOjo9IEVOVU1FUkFURUQgew0KCWZvcndhcmRlZCAJKDApLA0KCW5vdEZvcndhcmRlZAkoMSl9DQoNCk1hdGNoVHlwZSAgICAgICA6Oj0gRU5VTUVSQVRFRCB7DQoJaW5oaWJpdGluZyAJKDApLA0KCWVuYWJsaW5nCQkoMSl9DQoNCk8tQ2F1c2VWYWx1ZUNyaXRlcmlhICAgOjo9IFNFUVVFTkNFIFNJWkUoMS4ubWF4TnVtT2ZDQU1FTC1PLUNhdXNlVmFsdWVDcml0ZXJpYSkgT0YNCglDYXVzZVZhbHVlDQoNClQtQ2F1c2VWYWx1ZUNyaXRlcmlhICAgOjo9IFNFUVVFTkNFIFNJWkUoMS4ubWF4TnVtT2ZDQU1FTC1ULUNhdXNlVmFsdWVDcml0ZXJpYSkgT0YNCglDYXVzZVZhbHVlDQoNCm1heE51bU9mQ0FNRUwtTy1DYXVzZVZhbHVlQ3JpdGVyaWEgIElOVEVHRVIgOjo9IDUNCg0KbWF4TnVtT2ZDQU1FTC1ULUNhdXNlVmFsdWVDcml0ZXJpYSAgSU5URUdFUiA6Oj0gNQ0KDQpDYXVzZVZhbHVlIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUoMSkpDQotLSBUeXBlIGV4dHJhY3RlZCBmcm9tIENhdXNlIHBhcmFtZXRlciBpbiBJVFUtVCBSZWNvbW1lbmRhdGlvbiBRLjc2My4NCi0tIEZvciB0aGUgdXNlIG9mIGNhdXNlIHZhbHVlIHJlZmVyIHRvIElUVS1UIFJlY29tbWVuZGF0aW9uIFEuODUwLg0KDQpEZWZhdWx0Q2FsbEhhbmRsaW5nIDo6PSBFTlVNRVJBVEVEIHsNCgljb250aW51ZUNhbGwgKDApICwNCglyZWxlYXNlQ2FsbCAoMSkgLA0KCS4uLn0NCgktLSBleGNlcHRpb24gaGFuZGxpbmc6DQoJLS0gcmVjZXB0aW9uIG9mIHZhbHVlcyBpbiByYW5nZSAyLTMxIHNoYWxsIGJlIHRyZWF0ZWQgYXMgImNvbnRpbnVlQ2FsbCINCgktLSByZWNlcHRpb24gb2YgdmFsdWVzIGdyZWF0ZXIgdGhhbiAzMSBzaGFsbCBiZSB0cmVhdGVkIGFzICJyZWxlYXNlQ2FsbCINCg0KQ2FtZWxDYXBhYmlsaXR5SGFuZGxpbmcgOjo9IElOVEVHRVIoMS4uMTYpIA0KCS0tIHZhbHVlIDEgPSBDQU1FTCBwaGFzZSAxLA0KCS0tIHZhbHVlIDIgPSBDQU1FTCBwaGFzZSAyLA0KCS0tIHZhbHVlIDMgPSBDQU1FTCBQaGFzZSAzLA0KCS0tIHZhbHVlIDQgPSBDQU1FTCBwaGFzZSA0Og0KCS0tIHJlY2VwdGlvbiBvZiB2YWx1ZXMgZ3JlYXRlciB0aGFuIDQgc2hhbGwgYmUgdHJlYXRlZCBhcyBDQU1FTCBwaGFzZSA0Lg0KDQpTdXBwb3J0ZWRDYW1lbFBoYXNlcyA6Oj0gQklUIFNUUklORyB7DQoJcGhhc2UxICgwKSwNCglwaGFzZTIgKDEpLA0KCXBoYXNlMyAoMiksDQoJcGhhc2U0ICgzKX0gKFNJWkUgKDEuLjE2KSkgDQotLSBBIG5vZGUgc2hhbGwgbWFyayBpbiB0aGUgQklUIFNUUklORyBhbGwgQ0FNRUwgUGhhc2VzIGl0IHN1cHBvcnRzLg0KLS0gT3RoZXIgdmFsdWVzIHRoYW4gbGlzdGVkIGFib3ZlIHNoYWxsIGJlIGRpc2NhcmRlZC4NCg0KT2ZmZXJlZENhbWVsNENTSXMgOjo9IEJJVCBTVFJJTkcgeyAJDQoJby1jc2kJCSgwKSwNCglkLWNzaQkJKDEpLA0KCXZ0LWNzaQkJKDIpLA0KCXQtY3NpCQkoMyksDQoJbXQtc21zLWNzaQkoNCksDQoJbWctY3NpCQkoNSksDQoJcHNpLWVuaGFuY2VtZW50cwkoNikgDQp9IChTSVpFICg3Li4xNikpDQotLSBBIG5vZGUgc3VwcG9ydGluZyBDYW1lbCBwaGFzZSA0IHNoYWxsIG1hcmsgaW4gdGhlIEJJVCBTVFJJTkcgYWxsIENhbWVsNCBDU0lzIA0KLS0gaXQgb2ZmZXJzLg0KLS0gT3RoZXIgdmFsdWVzIHRoYW4gbGlzdGVkIGFib3ZlIHNoYWxsIGJlIGRpc2NhcmRlZC4NCg0KT2ZmZXJlZENhbWVsNEZ1bmN0aW9uYWxpdGllcyA6Oj0gQklUIFNUUklORyB7IAkNCglpbml0aWF0ZUNhbGxBdHRlbXB0CSgwKSwNCglzcGxpdExlZwkJKDEpLA0KCW1vdmVMZWcJCSgyKSwNCglkaXNjb25uZWN0TGVnCSgzKSwNCgllbnRpdHlSZWxlYXNlZAkoNCksDQoJZGZjLVdpdGhBcmd1bWVudAkoNSksDQoJcGxheVRvbmUJCSg2KSwNCglkdG1mLU1pZENhbGwJKDcpLA0KCWNoYXJnaW5nSW5kaWNhdG9yCSg4KSwNCglhbGVydGluZ0RQCSg5KSwNCglsb2NhdGlvbkF0QWxlcnRpbmcJKDEwKSwNCgljaGFuZ2VPZlBvc2l0aW9uRFAJKDExKSwNCglvci1JbnRlcmFjdGlvbnMJKDEyKSwNCgl3YXJuaW5nVG9uZUVuaGFuY2VtZW50cwkoMTMpLA0KCWNmLUVuaGFuY2VtZW50cwkoMTQpLA0KCXN1YnNjcmliZWRFbmhhbmNlZERpYWxsZWRTZXJ2aWNlcyAJKDE1KSwNCglzZXJ2aW5nTmV0d29ya0VuaGFuY2VkRGlhbGxlZFNlcnZpY2VzICgxNiksDQoJY3JpdGVyaWFGb3JDaGFuZ2VPZlBvc2l0aW9uRFAJKDE3KSwNCglzZXJ2aWNlQ2hhbmdlRFAJKDE4KSwNCgljb2xsZWN0SW5mb3JtYXRpb24JKDE5KQ0KfSAoU0laRSAoMTUuLjY0KSkNCi0tIEEgbm9kZSBzdXBwb3J0aW5nIENhbWVsIHBoYXNlIDQgc2hhbGwgbWFyayBpbiB0aGUgQklUIFNUUklORyBhbGwgQ0FNRUw0IA0KLS0gZnVuY3Rpb25hbGl0aWVzIGl0IG9mZmVycy4NCi0tIE90aGVyIHZhbHVlcyB0aGFuIGxpc3RlZCBhYm92ZSBzaGFsbCBiZSBkaXNjYXJkZWQuDQoNClNNUy1DU0kgOjo9IFNFUVVFTkNFIHsNCglzbXMtQ0FNRUwtVERQLURhdGFMaXN0CVswXSBTTVMtQ0FNRUwtVERQLURhdGFMaXN0CU9QVElPTkFMLA0KCWNhbWVsQ2FwYWJpbGl0eUhhbmRsaW5nCVsxXSBDYW1lbENhcGFiaWxpdHlIYW5kbGluZwlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzJdIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCglub3RpZmljYXRpb25Ub0NTRQlbM10gTlVMTAkJT1BUSU9OQUwsDQoJY3NpLUFjdGl2ZQlbNF0gTlVMTAkJT1BUSU9OQUwsDQoJLi4ufQ0KLS0Jbm90aWZpY2F0aW9uVG9DU0UgYW5kIGNzaS1BY3RpdmUgc2hhbGwgbm90IGJlIHByZXNlbnQNCi0tCXdoZW4gTU8tU01TLUNTSSBvciBNVC1TTVMtQ1NJIGlzIHNlbnQgdG8gVkxSIG9yIFNHU04uDQotLQlUaGV5IG1heSBvbmx5IGJlIGluY2x1ZGVkIGluIEFUU0kvQVRNIGFjay9OU0RDIG1lc3NhZ2UuDQotLQlTTVMtQ0FNRUwtVERQLURhdGEgYW5kICBjYW1lbENhcGFiaWxpdHlIYW5kbGluZyBzaGFsbCBiZSBwcmVzZW50IGluIA0KLS0JdGhlIFNNUy1DU0kgc2VxdWVuY2UuDQotLQlJZiBTTVMtQ1NJIGlzIHNlZ21lbnRlZCwgc21zLUNBTUVMLVREUC1EYXRhTGlzdCBhbmQgY2FtZWxDYXBhYmlsaXR5SGFuZGxpbmcgc2hhbGwgYmUgDQotLQlwcmVzZW50IGluIHRoZSBmaXJzdCBzZWdtZW50DQoNClNNUy1DQU1FTC1URFAtRGF0YUxpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mQ2FtZWxURFBEYXRhKSBPRg0KCVNNUy1DQU1FTC1URFAtRGF0YQ0KLS0JU01TLUNBTUVMLVREUC1EYXRhTGlzdCBzaGFsbCBub3QgY29udGFpbiBtb3JlIHRoYW4gb25lIGluc3RhbmNlIG9mDQotLQlTTVMtQ0FNRUwtVERQLURhdGEgY29udGFpbmluZyB0aGUgc2FtZSB2YWx1ZSBmb3Igc21zLVRyaWdnZXJEZXRlY3Rpb25Qb2ludC4NCg0KU01TLUNBTUVMLVREUC1EYXRhIDo6PSBTRVFVRU5DRSB7DQoJc21zLVRyaWdnZXJEZXRlY3Rpb25Qb2ludAlbMF0gU01TLVRyaWdnZXJEZXRlY3Rpb25Qb2ludCwNCglzZXJ2aWNlS2V5CVsxXSBTZXJ2aWNlS2V5LA0KCWdzbVNDRi1BZGRyZXNzCVsyXSBJU0ROLUFkZHJlc3NTdHJpbmcsDQoJZGVmYXVsdFNNUy1IYW5kbGluZwlbM10gRGVmYXVsdFNNUy1IYW5kbGluZywNCglleHRlbnNpb25Db250YWluZXIJWzRdIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4NCgl9DQoNClNNUy1UcmlnZ2VyRGV0ZWN0aW9uUG9pbnQgOjo9IEVOVU1FUkFURUQgew0KCXNtcy1Db2xsZWN0ZWRJbmZvICgxKSwNCgkuLi4sDQoJc21zLURlbGl2ZXJ5UmVxdWVzdCAoMikNCgl9DQotLQlleGNlcHRpb24gaGFuZGxpbmc6DQotLQlGb3IgU01TLUNBTUVMLVREUC1EYXRhIGFuZCBNVC1zbXNDQU1FTFREUC1Dcml0ZXJpYSBzZXF1ZW5jZXMgY29udGFpbmluZyB0aGlzIA0KLS0JcGFyYW1ldGVyIHdpdGggYW55IG90aGVyIHZhbHVlIHRoYW4gdGhlIG9uZXMgbGlzdGVkIHRoZSByZWNlaXZlciBzaGFsbCBpZ25vcmUNCi0tCXRoZSB3aG9sZSBzZXF1ZW5jZS4NCi0tDQotLQlJZiB0aGlzIHBhcmFtZXRlciBpcyByZWNlaXZlZCB3aXRoIGFueSBvdGhlciB2YWx1ZSB0aGFuIHNtcy1Db2xsZWN0ZWRJbmZvDQotLQlpbiBhbiBTTVMtQ0FNRUwtVERQLURhdGEgc2VxdWVuY2UgY29udGFpbmVkIGluIG1vLXNtcy1DU0ksIHRoZW4gdGhlIHJlY2VpdmVyIHNoYWxsDQotLQlpZ25vcmUgdGhlIHdob2xlIFNNUy1DQU1FTC1URFAtRGF0YSBzZXF1ZW5jZS4NCi0tDQotLQlJZiB0aGlzIHBhcmFtZXRlciBpcyByZWNlaXZlZCB3aXRoIGFueSBvdGhlciB2YWx1ZSB0aGFuIHNtcy1EZWxpdmVyeVJlcXVlc3QNCi0tCWluIGFuIFNNUy1DQU1FTC1URFAtRGF0YSBzZXF1ZW5jZSBjb250YWluZWQgaW4gbXQtc21zLUNTSSB0aGVuIHRoZSByZWNlaXZlciBzaGFsbA0KLS0JaWdub3JlIHRoZSB3aG9sZSBTTVMtQ0FNRUwtVERQLURhdGEgc2VxdWVuY2UuDQotLQ0KLS0JSWYgdGhpcyBwYXJhbWV0ZXIgaXMgcmVjZWl2ZWQgd2l0aCBhbnkgb3RoZXIgdmFsdWUgdGhhbiBzbXMtRGVsaXZlcnlSZXF1ZXN0DQotLQlpbiBhbiBNVC1zbXNDQU1FTFREUC1Dcml0ZXJpYSBzZXF1ZW5jZSB0aGVuIHRoZSByZWNlaXZlciBzaGFsbA0KLS0JaWdub3JlIHRoZSB3aG9sZSBNVC1zbXNDQU1FTFREUC1Dcml0ZXJpYSBzZXF1ZW5jZS4NCg0KRGVmYXVsdFNNUy1IYW5kbGluZyA6Oj0gRU5VTUVSQVRFRCB7DQoJY29udGludWVUcmFuc2FjdGlvbiAoMCkgLA0KCXJlbGVhc2VUcmFuc2FjdGlvbiAoMSkgLA0KCS4uLn0NCi0tCWV4Y2VwdGlvbiBoYW5kbGluZzoNCi0tCXJlY2VwdGlvbiBvZiB2YWx1ZXMgaW4gcmFuZ2UgMi0zMSBzaGFsbCBiZSB0cmVhdGVkIGFzICJjb250aW51ZVRyYW5zYWN0aW9uIg0KLS0JcmVjZXB0aW9uIG9mIHZhbHVlcyBncmVhdGVyIHRoYW4gMzEgc2hhbGwgYmUgdHJlYXRlZCBhcyAicmVsZWFzZVRyYW5zYWN0aW9uIg0KDQpNLUNTSSA6Oj0gU0VRVUVOQ0Ugew0KCW1vYmlsaXR5VHJpZ2dlcnMJTW9iaWxpdHlUcmlnZ2VycywNCglzZXJ2aWNlS2V5CVNlcnZpY2VLZXksDQoJZ3NtU0NGLUFkZHJlc3MJWzBdCUlTRE4tQWRkcmVzc1N0cmluZywNCglleHRlbnNpb25Db250YWluZXIJWzFdCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCglub3RpZmljYXRpb25Ub0NTRQlbMl0gTlVMTAkJT1BUSU9OQUwsDQoJY3NpLUFjdGl2ZQlbM10gTlVMTAkJT1BUSU9OQUwsDQoJLi4ufQ0KLS0Jbm90aWZpY2F0aW9uVG9DU0UgYW5kIGNzaS1BY3RpdmUgc2hhbGwgbm90IGJlIHByZXNlbnQgd2hlbiBNLUNTSSBpcyBzZW50IHRvIFZMUi4NCi0tCVRoZXkgbWF5IG9ubHkgYmUgaW5jbHVkZWQgaW4gQVRTSS9BVE0gYWNrL05TREMgbWVzc2FnZS4NCg0KTUctQ1NJIDo6PSBTRVFVRU5DRSB7DQoJbW9iaWxpdHlUcmlnZ2VycwlNb2JpbGl0eVRyaWdnZXJzLA0KCXNlcnZpY2VLZXkJU2VydmljZUtleSwNCglnc21TQ0YtQWRkcmVzcwlbMF0JSVNETi1BZGRyZXNzU3RyaW5nLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMV0JRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCW5vdGlmaWNhdGlvblRvQ1NFCVsyXSBOVUxMCQlPUFRJT05BTCwNCgljc2ktQWN0aXZlCVszXSBOVUxMCQlPUFRJT05BTCwNCgkuLi59DQotLQlub3RpZmljYXRpb25Ub0NTRSBhbmQgY3NpLUFjdGl2ZSBzaGFsbCBub3QgYmUgcHJlc2VudCB3aGVuIE1HLUNTSSBpcyBzZW50IHRvIFNHU04uDQotLQlUaGV5IG1heSBvbmx5IGJlIGluY2x1ZGVkIGluIEFUU0kvQVRNIGFjay9OU0RDIG1lc3NhZ2UuDQoNCk1vYmlsaXR5VHJpZ2dlcnMgIDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZk1vYmlsaXR5VHJpZ2dlcnMpIE9GDQoJTU0tQ29kZQ0KDQptYXhOdW1PZk1vYmlsaXR5VHJpZ2dlcnMgSU5URUdFUiA6Oj0gMTANCg0KTU0tQ29kZSA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxKSkNCi0tCVRoaXMgdHlwZSBpcyB1c2VkIHRvIGluZGljYXRlIGEgTW9iaWxpdHkgTWFuYWdlbWVudCBldmVudC4NCi0tCUFjdGlvbnMgZm9yIHRoZSBmb2xsb3dpbmcgTU0tQ29kZSB2YWx1ZXMgYXJlIGRlZmluZWQgaW4gQ0FNRUwgUGhhc2UgNDoNCi0tDQotLQlDUyBkb21haW4gTU0gZXZlbnRzOg0KLS0JTG9jYXRpb24tdXBkYXRlLWluLXNhbWUtVkxSCU1NLUNvZGUgOjo9ICcwMDAwMDAwMCdCDQotLQlMb2NhdGlvbi11cGRhdGUtdG8tb3RoZXItVkxSCU1NLUNvZGUgOjo9ICcwMDAwMDAwMSdCDQotLQlJTVNJLUF0dGFjaAlNTS1Db2RlIDo6PSAnMDAwMDAwMTAnQg0KLS0JTVMtaW5pdGlhdGVkLUlNU0ktRGV0YWNoCU1NLUNvZGUgOjo9ICcwMDAwMDAxMSdCDQotLQlOZXR3b3JrLWluaXRpYXRlZC1JTVNJLURldGFjaAlNTS1Db2RlIDo6PSAnMDAwMDAxMDAnQg0KLS0NCi0tCVBTIGRvbWFpbiBNTSBldmVudHM6DQotLQlSb3V0ZWluZy1BcmVhLXVwZGF0ZS1pbi1zYW1lLVNHU04JTU0tQ29kZSA6Oj0gJzEwMDAwMDAwJ0INCi0tCVJvdXRlaW5nLUFyZWEtdXBkYXRlLXRvLW90aGVyLVNHU04tdXBkYXRlLWZyb20tbmV3LVNHU04NCi0tCQkJCU1NLUNvZGUgOjo9ICcxMDAwMDAwMSdCDQotLQlSb3V0ZWluZy1BcmVhLXVwZGF0ZS10by1vdGhlci1TR1NOLWRpc2Nvbm5lY3QtYnktZGV0YWNoDQotLQkJCQlNTS1Db2RlIDo6PSAnMTAwMDAwMTAnQg0KLS0JR1BSUy1BdHRhY2gJTU0tQ29kZSA6Oj0gJzEwMDAwMDExJ0INCi0tCU1TLWluaXRpYXRlZC1HUFJTLURldGFjaAlNTS1Db2RlIDo6PSAnMTAwMDAxMDAnQg0KLS0JTmV0d29yay1pbml0aWF0ZWQtR1BSUy1EZXRhY2gJTU0tQ29kZSA6Oj0gJzEwMDAwMTAxJ0IgDQotLQlOZXR3b3JrLWluaXRpYXRlZC10cmFuc2Zlci10by1NUy1ub3QtcmVhY2hhYmxlLWZvci1wYWdpbmcNCi0tCQkJCU1NLUNvZGUgOjo9ICcxMDAwMDExMCdCDQotLQ0KLS0JSWYgdGhlIE1TQyByZWNlaXZlcyBhbnkgb3RoZXIgTU0tY29kZSB0aGFuIHRoZSBvbmVzIGxpc3RlZCBhYm92ZSBmb3IgdGhlDQotLQlDUyBkb21haW4sIHRoZW4gdGhlIE1TQyBzaGFsbCBpZ25vcmUgdGhhdCBNTS1jb2RlLg0KLS0JSWYgdGhlIFNHU04gcmVjZWl2ZXMgYW55IG90aGVyIE1NLWNvZGUgdGhhbiB0aGUgb25lcyBsaXN0ZWQgYWJvdmUgZm9yIHRoZQ0KLS0JUFMgZG9tYWluLCB0aGVuIHRoZSBTR1NOIHNoYWxsIGlnbm9yZSB0aGF0IE1NLWNvZGUuDQoNClQtQ1NJIDo6PSBTRVFVRU5DRSB7DQoJdC1CY3NtQ2FtZWxURFBEYXRhTGlzdAlULUJjc21DYW1lbFREUERhdGFMaXN0LA0KCWV4dGVuc2lvbkNvbnRhaW5lcglFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLA0KCWNhbWVsQ2FwYWJpbGl0eUhhbmRsaW5nCVswXSBDYW1lbENhcGFiaWxpdHlIYW5kbGluZwlPUFRJT05BTCwNCglub3RpZmljYXRpb25Ub0NTRQlbMV0gTlVMTAkJT1BUSU9OQUwsDQoJY3NpLUFjdGl2ZQlbMl0gTlVMTAkJT1BUSU9OQUx9DQotLQlub3RpZmljYXRpb25Ub0NTRSBhbmQgY3NpLUFjdGl2ZSBzaGFsbCBub3QgYmUgcHJlc2VudCB3aGVuIFZULUNTSS9ULUNTSSBpcyBzZW50DQotLQl0byBWTFIvR01TQy4NCi0tCVRoZXkgbWF5IG9ubHkgYmUgaW5jbHVkZWQgaW4gQVRTSS9BVE0gYWNrL05TREMgbWVzc2FnZS4NCi0tCVQtQ1NJIHNoYWxsIG5vdCBiZSBzZWdtZW50ZWQuDQoNClQtQmNzbUNhbWVsVERQRGF0YUxpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mQ2FtZWxURFBEYXRhKSBPRg0KCVQtQmNzbUNhbWVsVERQRGF0YQ0KCS0tLSBULUJjc21DYW1lbFREUERhdGFMaXN0IHNoYWxsIG5vdCBjb250YWluIG1vcmUgdGhhbiBvbmUgaW5zdGFuY2Ugb2YNCgktLS0gVC1CY3NtQ2FtZWxURFBEYXRhIGNvbnRhaW5pbmcgdGhlIHNhbWUgdmFsdWUgZm9yIHQtQmNzbVRyaWdnZXJEZXRlY3Rpb25Qb2ludC4NCgktLS0gRm9yIENBTUVMIFBoYXNlIDIsIHRoaXMgbWVhbnMgdGhhdCBvbmx5IG9uZSBpbnN0YW5jZSBvZiBULUJjc21DYW1lbFREUERhdGEgaXMgYWxsb3dlZA0KCS0tLSB3aXRoIHQtQmNzbVRyaWdnZXJEZXRlY3Rpb25Qb2ludCBiZWluZyBlcXVhbCB0byBEUDEyLiANCgktLS0gRm9yIENBTUVMIFBoYXNlIDMsIG1vcmUgVERQknMgYXJlIGFsbG93ZWQuDQoNClQtQmNzbUNhbWVsVERQRGF0YSA6Oj0gU0VRVUVOQ0Ugew0KCXQtQmNzbVRyaWdnZXJEZXRlY3Rpb25Qb2ludAlULUJjc21UcmlnZ2VyRGV0ZWN0aW9uUG9pbnQsDQoJc2VydmljZUtleQlTZXJ2aWNlS2V5LA0KCWdzbVNDRi1BZGRyZXNzCVswXSBJU0ROLUFkZHJlc3NTdHJpbmcsDQoJZGVmYXVsdENhbGxIYW5kbGluZwlbMV0gRGVmYXVsdENhbGxIYW5kbGluZywNCglleHRlbnNpb25Db250YWluZXIJWzJdIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi59DQoNClQtQmNzbVRyaWdnZXJEZXRlY3Rpb25Qb2ludCA6Oj0gRU5VTUVSQVRFRCB7DQoJdGVybUF0dGVtcHRBdXRob3JpemVkICgxMiksDQoJLi4uICwNCgl0QnVzeSAoMTMpLA0KCXROb0Fuc3dlciAoMTQpfQ0KCS0tIGV4Y2VwdGlvbiBoYW5kbGluZzoNCgktLSBGb3IgVC1CY3NtQ2FtZWxURFBEYXRhIHNlcXVlbmNlcyBjb250YWluaW5nIHRoaXMgcGFyYW1ldGVyIHdpdGggYW55IG90aGVyDQoJLS0gdmFsdWUgdGhhbiB0aGUgb25lcyBsaXN0ZWQgYWJvdmUsIHRoZSByZWNlaXZlciBzaGFsbCBpZ25vcmUgdGhlIHdob2xlDQoJLS0gVC1CY3NtQ2FtZWxURFBEYXRhIHNlcXVlbmNlLg0KDQotLSBncHJzIGxvY2F0aW9uIGluZm9ybWF0aW9uIHJldHJpZXZhbCB0eXBlcw0KDQpTZW5kUm91dGluZ0luZm9Gb3JHcHJzQXJnIDo6PSBTRVFVRU5DRSB7DQoJaW1zaQkJCQlbMF0gSU1TSSwNCglnZ3NuLUFkZHJlc3MJCVsxXSBHU04tQWRkcmVzcwlPUFRJT05BTCwgDQoJZ2dzbi1OdW1iZXIJCVsyXQlJU0ROLUFkZHJlc3NTdHJpbmcsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCQlbM10gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KU2VuZFJvdXRpbmdJbmZvRm9yR3Byc1JlcyA6Oj0gU0VRVUVOQ0Ugew0KCXNnc24tQWRkcmVzcwkJWzBdIEdTTi1BZGRyZXNzLA0KCWdnc24tQWRkcmVzcwkJWzFdCUdTTi1BZGRyZXNzCU9QVElPTkFMLA0KCW1vYmlsZU5vdFJlYWNoYWJsZVJlYXNvbgkJWzJdCUFic2VudFN1YnNjcmliZXJEaWFnbm9zdGljU00JCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcgkJWzNdIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi59DQoNCi0tIGZhaWx1cmUgcmVwb3J0IHR5cGVzDQoNCkZhaWx1cmVSZXBvcnRBcmcgOjo9IFNFUVVFTkNFIHsNCglpbXNpCQkJCVswXSBJTVNJLA0KCWdnc24tTnVtYmVyCQlbMV0gSVNETi1BZGRyZXNzU3RyaW5nCSwNCglnZ3NuLUFkZHJlc3MJCVsyXSBHU04tQWRkcmVzcwlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJCVszXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpGYWlsdXJlUmVwb3J0UmVzIDo6PSBTRVFVRU5DRSB7DQoJZ2dzbi1BZGRyZXNzCQlbMF0gR1NOLUFkZHJlc3MJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCQlbMV0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KLS0gZ3BycyBub3RpZmljYXRpb24gdHlwZXMNCg0KTm90ZU1zUHJlc2VudEZvckdwcnNBcmcgOjo9IFNFUVVFTkNFIHsNCglpbXNpCQkJCVswXSBJTVNJLA0KCXNnc24tQWRkcmVzcwkJWzFdIEdTTi1BZGRyZXNzLA0KCWdnc24tQWRkcmVzcwkJWzJdIEdTTi1BZGRyZXNzCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcgkJWzNdIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi59DQoNCk5vdGVNc1ByZXNlbnRGb3JHcHJzUmVzIDo6PSBTRVFVRU5DRSB7DQoJZXh0ZW5zaW9uQ29udGFpbmVyCQlbMF0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KLS0gZmF1bHQgcmVjb3ZlcnkgdHlwZXMNCg0KUmVzZXRBcmcgOjo9IFNFUVVFTkNFIHsNCglobHItTnVtYmVyCUlTRE4tQWRkcmVzc1N0cmluZywNCglobHItTGlzdAkJSExSLUxpc3QJCU9QVElPTkFMLA0KCS4uLn0NCg0KUmVzdG9yZURhdGFBcmcgOjo9IFNFUVVFTkNFIHsNCglpbXNpCQkJSU1TSSwNCglsbXNpCQkJTE1TSQkJCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uICwNCgl2bHItQ2FwYWJpbGl0eQlbNl0gVkxSLUNhcGFiaWxpdHkJT1BUSU9OQUwsDQoJcmVzdG9yYXRpb25JbmRpY2F0b3IJWzddCU5VTEwJCU9QVElPTkFMIA0KIH0NCg0KUmVzdG9yZURhdGFSZXMgOjo9IFNFUVVFTkNFIHsNCglobHItTnVtYmVyCUlTRE4tQWRkcmVzc1N0cmluZywNCgltc05vdFJlYWNoYWJsZQlOVUxMCQkJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi59DQoNCi0tIFZCUy9WR0NTIHR5cGVzDQpWQlNEYXRhTGlzdCA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4ubWF4TnVtT2ZWQlNHcm91cElkcykgT0YNCgkJCQlWb2ljZUJyb2FkY2FzdERhdGENCg0KVkdDU0RhdGFMaXN0IDo6PSBTRVFVRU5DRSBTSVpFICgxLi5tYXhOdW1PZlZHQ1NHcm91cElkcykgT0YNCgkJCQlWb2ljZUdyb3VwQ2FsbERhdGENCg0KbWF4TnVtT2ZWQlNHcm91cElkcyAgSU5URUdFUiA6Oj0gNTANCg0KbWF4TnVtT2ZWR0NTR3JvdXBJZHMgIElOVEVHRVIgOjo9IDUwDQoNClZvaWNlR3JvdXBDYWxsRGF0YSAgOjo9IFNFUVVFTkNFIHsNCglncm91cElkCQlHcm91cElkLA0KCS0tIGdyb3VwSWQgc2hhbGwgYmUgZmlsbGVkIHdpdGggc2l4IFRCQ0QgZmlsbGVycyAoMTExMSlpZiB0aGUgbG9uZ0dyb3VwSWQgaXMgcHJlc2VudCAgDQoJZXh0ZW5zaW9uQ29udGFpbmVyCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4sDQoJYWRkaXRpb25hbFN1YnNjcmlwdGlvbnMJQWRkaXRpb25hbFN1YnNjcmlwdGlvbnMJT1BUSU9OQUwsDQoJYWRkaXRpb25hbEluZm8JWzBdIEFkZGl0aW9uYWxJbmZvCU9QVElPTkFMLA0KCWxvbmdHcm91cElkCVsxXSBMb25nLUdyb3VwSWQJT1BUSU9OQUwgfQ0KDQoJLS0gVm9pY2VHcm91cENhbGxEYXRhIGNvbnRhaW5pbmcgYSBsb25nR3JvdXBJZCBzaGFsbCBub3QgYmUgc2VudCB0byBWTFJzIHRoYXQgZGlkIG5vdA0KCS0tIGluZGljYXRlIHN1cHBvcnQgb2YgbG9uZyBHcm91cCBJRHMgd2l0aGluIHRoZSBVcGRhdGUgTG9jYXRpb24gb3IgUmVzdG9yZSBEYXRhIA0KCS0tIHJlcXVlc3QgbWVzc2FnZQ0KDQpBZGRpdGlvbmFsSW5mbyA6Oj0gQklUIFNUUklORyAoU0laRSAoMS4uMTM2KSkNCi0tCSBSZWZlcnMgdG8gQWRkaXRpb25hbCBJbmZvIGFzIHNwZWNpZmllZCBpbiAzR1BQIFRTIDQzLjA2OCANCg0KQWRkaXRpb25hbFN1YnNjcmlwdGlvbnMgOjo9IEJJVCBTVFJJTkcgew0KCXByaXZpbGVnZWRVcGxpbmtSZXF1ZXN0ICgwKSwNCgllbWVyZ2VuY3lVcGxpbmtSZXF1ZXN0ICgxKSwNCgllbWVyZ2VuY3lSZXNldCAoMil9IChTSVpFICgzLi44KSkNCi0tIE90aGVyIGJpdHMgdGhhbiBsaXN0ZWQgYWJvdmUgc2hhbGwgYmUgZGlzY2FyZGVkLg0KDQpWb2ljZUJyb2FkY2FzdERhdGEgOjo9IFNFUVVFTkNFIHsNCglncm91cGlkCQlHcm91cElkLA0KCS0tIGdyb3VwSWQgc2hhbGwgYmUgZmlsbGVkIHdpdGggc2l4IFRCQ0QgZmlsbGVycyAoMTExMSlpZiB0aGUgbG9uZ0dyb3VwSWQgaXMgcHJlc2VudA0KCWJyb2FkY2FzdEluaXRFbnRpdGxlbWVudAlOVUxMCQkJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4sDQoJbG9uZ0dyb3VwSWQJWzBdIExvbmctR3JvdXBJZAlPUFRJT05BTCB9DQoJDQotLSBWb2ljZUJyb2FkY2FzdERhdGEgY29udGFpbmluZyBhIGxvbmdHcm91cElkIHNoYWxsIG5vdCBiZSBzZW50IHRvIFZMUnMgdGhhdCBkaWQgbm90DQotLSBpbmRpY2F0ZSBzdXBwb3J0IG9mIGxvbmcgR3JvdXAgSURzIHdpdGhpbiB0aGUgVXBkYXRlIExvY2F0aW9uIG9yIFJlc3RvcmUgRGF0YSANCgktLSByZXF1ZXN0IG1lc3NhZ2UNCg0KR3JvdXBJZCAgOjo9IFRCQ0QtU1RSSU5HIChTSVpFICgzKSkNCgktLSBXaGVuIEdyb3VwLUlkIGlzIGxlc3MgdGhhbiBzaXggY2hhcmFjdGVycyBpbiBsZW5ndGgsIHRoZSBUQkNEIGZpbGxlciAoMTExMSkNCgktLSBpcyB1c2VkIHRvIGZpbGwgdW51c2VkIGhhbGYgb2N0ZXRzLg0KCS0tIFJlZmVycyB0byB0aGUgR3JvdXAgSWRlbnRpZmljYXRpb24gYXMgc3BlY2lmaWVkIGluIDNHUFAgVFMgMjMuMDAzIA0KCS0tIGFuZCAzR1BQIFRTIDQzLjA2OC8gNDMuMDY5DQoNCkxvbmctR3JvdXBJZCAgOjo9IFRCQ0QtU1RSSU5HIChTSVpFICg0KSkNCgktLSBXaGVuIExvbmctR3JvdXAtSWQgaXMgbGVzcyB0aGFuIGVpZ2h0IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLCB0aGUgVEJDRCBmaWxsZXIgKDExMTEpDQoJLS0gaXMgdXNlZCB0byBmaWxsIHVudXNlZCBoYWxmIG9jdGV0cy4NCgktLSBSZWZlcnMgdG8gdGhlIEdyb3VwIElkZW50aWZpY2F0aW9uIGFzIHNwZWNpZmllZCBpbiAzR1BQIFRTIDIzLjAwMyANCgktLSBhbmQgM0dQUCBUUyA0My4wNjgvIDQzLjA2OQ0KDQoNCi0tIHByb3ZpZGUgc3Vic2NyaWJlciBpbmZvIHR5cGVzDQoNClByb3ZpZGVTdWJzY3JpYmVySW5mb0FyZyA6Oj0gU0VRVUVOQ0Ugew0KCWltc2kJCVswXSBJTVNJLA0KCWxtc2kJCVsxXSBMTVNJCU9QVElPTkFMLA0KCXJlcXVlc3RlZEluZm8JWzJdIFJlcXVlc3RlZEluZm8sDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVszXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLA0KCWNhbGxQcmlvcml0eQlbNF0JRU1MUFAtUHJpb3JpdHkJT1BUSU9OQUwNCgl9DQoNClByb3ZpZGVTdWJzY3JpYmVySW5mb1JlcyA6Oj0gU0VRVUVOQ0Ugew0KCXN1YnNjcmliZXJJbmZvCVN1YnNjcmliZXJJbmZvLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpTdWJzY3JpYmVySW5mbyA6Oj0gU0VRVUVOQ0Ugew0KCWxvY2F0aW9uSW5mb3JtYXRpb24JWzBdIExvY2F0aW9uSW5mb3JtYXRpb24JT1BUSU9OQUwsDQoJc3Vic2NyaWJlclN0YXRlCVsxXSBTdWJzY3JpYmVyU3RhdGUJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVsyXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uICwNCglsb2NhdGlvbkluZm9ybWF0aW9uR1BSUwlbM10gTG9jYXRpb25JbmZvcm1hdGlvbkdQUlMJT1BUSU9OQUwsDQoJcHMtU3Vic2NyaWJlclN0YXRlCVs0XSBQUy1TdWJzY3JpYmVyU3RhdGUJT1BUSU9OQUwsDQoJaW1laQkJCVs1XSBJTUVJCQlPUFRJT05BTCwNCgltcy1DbGFzc21hcmsyCVs2XSBNUy1DbGFzc21hcmsyCU9QVElPTkFMLA0KCWdwcnMtTVMtQ2xhc3MJWzddIEdQUlNNU0NsYXNzCU9QVElPTkFMLA0KCW1ucEluZm9SZXMJWzhdIE1OUEluZm9SZXMJT1BUSU9OQUwsDQoJaW1zVm9pY2VPdmVyUFMtU2Vzc2lvbnNJbmRpY2F0aW9uCVs5XSBJTVMtVm9pY2VPdmVyUFMtU2Vzc2lvbnNJbmQJT1BUSU9OQUwsDQoJbGFzdFVFLUFjdGl2aXR5VGltZQlbMTBdIFRpbWUJCU9QVElPTkFMLA0KCWxhc3RSQVQtVHlwZQlbMTFdIFVzZWQtUkFULVR5cGUJT1BUSU9OQUwsDQoJZXBzLVN1YnNjcmliZXJTdGF0ZQlbMTJdIFBTLVN1YnNjcmliZXJTdGF0ZQlPUFRJT05BTCwNCglsb2NhdGlvbkluZm9ybWF0aW9uRVBTCVsxM10gTG9jYXRpb25JbmZvcm1hdGlvbkVQUwlPUFRJT05BTCB9DQoNCi0tCUlmIHRoZSBITFIgcmVjZWl2ZXMgbG9jYXRpb25JbmZvcm1hdGlvbiwgc3Vic2NyaWJlclN0YXRlIG9yIG1zLUNsYXNzbWFyazIgZnJvbSBhbiBTR1NODQotLQlpdCBzaGFsbCBkaXNjYXJkIHRoZW0uDQotLQlJZiB0aGUgSExSIHJlY2VpdmVzIGxvY2F0aW9uSW5mb3JtYXRpb25HUFJTLCBwcy1TdWJzY3JpYmVyU3RhdGUgb3IgZ3Bycy1NUy1DbGFzcyBmcm9tDQotLQlhIFZMUiBpdCBzaGFsbCBkaXNjYXJkIHRoZW0uDQotLQlJZiB0aGUgSExSIHJlY2VpdmVzIHBhcmFtZXRlcnMgd2hpY2ggaXQgaGFzIG5vdCByZXF1ZXN0ZWQsIGl0IHNoYWxsIGRpc2NhcmQgdGhlbS4NCg0KSU1TLVZvaWNlT3ZlclBTLVNlc3Npb25zSW5kIDo6PSBFTlVNRVJBVEVEIHsNCglpbXNWb2ljZU92ZXJQUy1TZXNzaW9uc05vdFN1cHBvcnRlZAkoMCksDQoJaW1zVm9pY2VPdmVyUFMtU2Vzc2lvbnNTdXBwb3J0ZWQJKDEpDQoJfQ0KDQpNTlBJbmZvUmVzIDo6PSBTRVFVRU5DRSB7DQoJcm91dGVpbmdOdW1iZXIJWzBdIFJvdXRlaW5nTnVtYmVyIAlPUFRJT05BTCwNCglpbXNpCQkJWzFdIElNU0kJCU9QVElPTkFMLA0KCW1zaXNkbgkJWzJdIElTRE4tQWRkcmVzc1N0cmluZyAJT1BUSU9OQUwsDQoJbnVtYmVyUG9ydGFiaWxpdHlTdGF0dXMJWzNdIE51bWJlclBvcnRhYmlsaXR5U3RhdHVzCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbNF0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLiB9DQotLQlUaGUgSU1TSSBwYXJhbWV0ZXIgY29udGFpbnMgYSBnZW5lcmljIElNU0ksIGkuZS4gaXQgaXMgbm90IHRpZWQgbmVjZXNzYXJpbHkgdG8gdGhlIA0KLS0JU3Vic2NyaWJlci4gTUNDIGFuZCBNTkMgdmFsdWVzIGluIHRoaXMgSU1TSSBzaGFsbCBwb2ludCB0byB0aGUgU3Vic2NyaXB0aW9uIE5ldHdvcmsgb2YgDQotLQl0aGUgU3Vic2NyaWJlci4gU2VlIDNHUFAgVFMgMjMuMDY2IFsxMDhdLg0KDQpSb3V0ZWluZ051bWJlciA6Oj0gVEJDRC1TVFJJTkcgKFNJWkUgKDEuLjUpKQ0KDQoNCk51bWJlclBvcnRhYmlsaXR5U3RhdHVzIDo6PSBFTlVNRVJBVEVEIHsNCglub3RLbm93blRvQmVQb3J0ZWQJKDApLA0KCW93bk51bWJlclBvcnRlZE91dAkoMSksDQoJZm9yZWlnbk51bWJlclBvcnRlZFRvRm9yZWlnbk5ldHdvcmsJKDIpLA0KCS4uLiwNCglvd25OdW1iZXJOb3RQb3J0ZWRPdXQJKDQpLA0KCWZvcmVpZ25OdW1iZXJQb3J0ZWRJbgkoNSkNCgl9DQoJLS0JZXhjZXB0aW9uIGhhbmRsaW5nOiANCgktLSAgcmVjZXB0aW9uIG9mIG90aGVyIHZhbHVlcyB0aGFuIHRoZSBvbmVzIGxpc3RlZCB0aGUgcmVjZWl2ZXIgc2hhbGwgaWdub3JlIHRoZSANCgktLSAgd2hvbGUgTnVtYmVyUG9ydGFiaWxpdHlTdGF0dXM7DQoJLS0gIG93bk51bWJlck5vdFBvcnRlZE91dCBvciBmb3JlaWduTnVtYmVyUG9ydGVkSW4gbWF5IG9ubHkgYmUgaW5jbHVkZWQgaW4gQW55IFRpbWUgDQoJLS0gIEludGVycm9nYXRpb24gbWVzc2FnZS4NCg0KTVMtQ2xhc3NtYXJrMiA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgzKSkNCgktLSBUaGlzIHBhcmFtZXRlciBjYXJyaWVzIHRoZSB2YWx1ZSBwYXJ0IG9mIHRoZSBNUyBDbGFzc21hcmsgMiBJRSBkZWZpbmVkIGluIA0KCS0tIDNHUFAgVFMgMjQuMDA4IFszNV0uDQoNCkdQUlNNU0NsYXNzIDo6PSBTRVFVRU5DRSB7DQoJbVNOZXR3b3JrQ2FwYWJpbGl0eQlbMF0gTVNOZXR3b3JrQ2FwYWJpbGl0eSwNCgltU1JhZGlvQWNjZXNzQ2FwYWJpbGl0eQlbMV0gTVNSYWRpb0FjY2Vzc0NhcGFiaWxpdHkJT1BUSU9OQUwNCgl9DQoNCk1TTmV0d29ya0NhcGFiaWxpdHkgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoMS4uOCkpDQoJLS0gVGhpcyBwYXJhbWV0ZXIgY2FycmllcyB0aGUgdmFsdWUgcGFydCBvZiB0aGUgTVMgTmV0d29yayBDYXBhYmlsaXR5IElFIGRlZmluZWQgaW4gDQoJLS0gM0dQUCBUUyAyNC4wMDggWzM1XS4NCgkNCk1TUmFkaW9BY2Nlc3NDYXBhYmlsaXR5IDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEuLjUwKSkNCgktLSBUaGlzIHBhcmFtZXRlciBjYXJyaWVzIHRoZSB2YWx1ZSBwYXJ0IG9mIHRoZSBNUyBSYWRpbyBBY2Nlc3MgQ2FwYWJpbGl0eSBJRSBkZWZpbmVkIGluDQoJLS0gM0dQUCBUUyAyNC4wMDggWzM1XS4NCg0KUmVxdWVzdGVkSW5mbyA6Oj0gU0VRVUVOQ0Ugew0KCWxvY2F0aW9uSW5mb3JtYXRpb24JWzBdIE5VTEwJCU9QVElPTkFMLA0KCXN1YnNjcmliZXJTdGF0ZQlbMV0gTlVMTAkJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVsyXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLCANCgljdXJyZW50TG9jYXRpb24JWzNdIE5VTEwJCU9QVElPTkFMLA0KCXJlcXVlc3RlZERvbWFpbglbNF0gRG9tYWluVHlwZQlPUFRJT05BTCwNCglpbWVpCQkJWzZdIE5VTEwJCU9QVElPTkFMLA0KCW1zLWNsYXNzbWFyawlbNV0gTlVMTAkJT1BUSU9OQUwsDQoJbW5wUmVxdWVzdGVkSW5mbwlbN10gTlVMTCAJCU9QVElPTkFMLA0KCXQtYWRzRGF0YQkJWzhdIE5VTEwJCU9QVElPTkFMLA0KCXJlcXVlc3RlZE5vZGVzCVs5XSBSZXF1ZXN0ZWROb2RlcwlPUFRJT05BTCB9DQoNCi0tCWN1cnJlbnRMb2NhdGlvbiBzaGFsbCBiZSBhYnNlbnQgaWYgbG9jYXRpb25JbmZvcm1hdGlvbiBpcyBhYnNlbnQNCi0tCXQtYWRzRGF0YSBzaGFsbCBiZSBhYnNlbnQgaW4gbWVzc2FnZXMgc2VudCB0byB0aGUgVkxSDQotLQlyZXF1ZXN0ZWROb2RlcyBzaGFsbCBiZSBhYnNlbnQgaWYgcmVxdWVzdGVkRG9tYWluIGlzICJjcy1Eb21haW4iDQoNCkRvbWFpblR5cGUgOjo9ICBFTlVNRVJBVEVEIHsNCgljcy1Eb21haW4JCSgwKSwNCglwcy1Eb21haW4JCSgxKSwNCgkuLi59DQotLSBleGNlcHRpb24gaGFuZGxpbmc6DQotLSByZWNlcHRpb24gb2YgdmFsdWVzID4gMSBzaGFsbCBiZSBtYXBwZWQgdG8gJ2NzLURvbWFpbicNCg0KUmVxdWVzdGVkTm9kZXMgOjo9IEJJVCBTVFJJTkcgew0KCW1tZSAJCSgwKSwNCglzZ3NuIAkoMSl9IChTSVpFICgxLi44KSkNCi0tIE90aGVyIGJpdHMgdGhhbiBsaXN0ZWQgYWJvdmUgc2hhbGwgYmUgZGlzY2FyZGVkLg0KDQpMb2NhdGlvbkluZm9ybWF0aW9uIDo6PSBTRVFVRU5DRSB7DQoJYWdlT2ZMb2NhdGlvbkluZm9ybWF0aW9uCUFnZU9mTG9jYXRpb25JbmZvcm1hdGlvbglPUFRJT05BTCwNCglnZW9ncmFwaGljYWxJbmZvcm1hdGlvbglbMF0gR2VvZ3JhcGhpY2FsSW5mb3JtYXRpb24JT1BUSU9OQUwsDQoJdmxyLW51bWJlcglbMV0gSVNETi1BZGRyZXNzU3RyaW5nCU9QVElPTkFMLA0KCWxvY2F0aW9uTnVtYmVyCVsyXSBMb2NhdGlvbk51bWJlcglPUFRJT05BTCwNCgljZWxsR2xvYmFsSWRPclNlcnZpY2VBcmVhSWRPckxBSQlbM10gQ2VsbEdsb2JhbElkT3JTZXJ2aWNlQXJlYUlkT3JMQUkJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVs0XSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uICwNCglzZWxlY3RlZExTQS1JZAlbNV0gTFNBSWRlbnRpdHkJT1BUSU9OQUwsDQoJbXNjLU51bWJlcglbNl0gSVNETi1BZGRyZXNzU3RyaW5nCU9QVElPTkFMLA0KCWdlb2RldGljSW5mb3JtYXRpb24JWzddIEdlb2RldGljSW5mb3JtYXRpb24JT1BUSU9OQUwsIA0KCWN1cnJlbnRMb2NhdGlvblJldHJpZXZlZAlbOF0gTlVMTAkJT1BUSU9OQUwsDQoJc2FpLVByZXNlbnQJWzldIE5VTEwJCU9QVElPTkFMLA0KCWxvY2F0aW9uSW5mb3JtYXRpb25FUFMJWzEwXSBMb2NhdGlvbkluZm9ybWF0aW9uRVBTCU9QVElPTkFMLA0KCXVzZXJDU0dJbmZvcm1hdGlvbglbMTFdIFVzZXJDU0dJbmZvcm1hdGlvbglPUFRJT05BTCB9DQotLSBzYWktUHJlc2VudCBpbmRpY2F0ZXMgdGhhdCB0aGUgY2VsbEdsb2JhbElkT3JTZXJ2aWNlQXJlYUlkT3JMQUkgcGFyYW1ldGVyIGNvbnRhaW5zDQotLSBhIFNlcnZpY2UgQXJlYSBJZGVudGl0eS4NCi0tIGN1cnJlbnRMb2NhdGlvblJldHJpZXZlZCBzaGFsbCBiZSBwcmVzZW50IA0KLS0gaWYgdGhlIGxvY2F0aW9uIGluZm9ybWF0aW9uIHdlcmUgcmV0cmlldmVkIGFmdGVyIGEgc3VjY2Vzc2Z1bGwgcGFnaW5nLg0KLS0gaWYgdGhlIGxvY2F0aW9uaW5mb3JtYXRpb25FUFMgSUUgaXMgcHJlc2VudCB0aGVuIHRoZSBjZWxsR2xvYmFsSWRPclNlcnZpY2VBcmVhSWRPckxBSSBJRQ0KLS0gc2hhbGwgYmUgYWJzZW50LiANCi0tIFVzZXJDU0dJbmZvcm1hdGlvbiBjb250YWlucyB0aGUgQ1NHIElELCBBY2Nlc3MgbW9kZSwgYW5kIHRoZSBDU0cgTWVtYmVyc2hpcCBJbmRpY2F0aW9uIGluDQotLSB0aGUgY2FzZSB0aGUgQWNjZXNzIG1vZGUgaXMgSHlicmlkIE1vZGUuDQoNCg0KTG9jYXRpb25JbmZvcm1hdGlvbkVQUyA6Oj0gU0VRVUVOQ0Ugew0KCWUtdXRyYW5DZWxsR2xvYmFsSWRlbnRpdHkJWzBdIE9DVEVUIFNUUklORyAoU0laRSg3KSkJCU9QVElPTkFMLA0KLS0gT2N0ZXRzIGFyZSBjb2RlZCBhcyBkZXNjcmliZWQgaW4gM0dQUCBUUyAyOS4xMTguDQoJdHJhY2tpbmdBcmVhSWRlbnRpdHkJWzFdIE9DVEVUIFNUUklORyAoU0laRSg1KSkJCU9QVElPTkFMLA0KLS0gT2N0ZXRzIGFyZSBjb2RlZCBhcyBkZXNjcmliZWQgaW4gM0dQUCBUUyAyOS4xMTguDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVsyXSBFeHRlbnNpb25Db250YWluZXIJCU9QVElPTkFMLA0KCWdlb2dyYXBoaWNhbEluZm9ybWF0aW9uCVszXSBHZW9ncmFwaGljYWxJbmZvcm1hdGlvbgkJT1BUSU9OQUwsDQoJZ2VvZGV0aWNJbmZvcm1hdGlvbglbNF0gR2VvZGV0aWNJbmZvcm1hdGlvbgkJT1BUSU9OQUwsDQoJY3VycmVudExvY2F0aW9uUmV0cmlldmVkCVs1XSBOVUxMCQkJT1BUSU9OQUwsDQoJYWdlT2ZMb2NhdGlvbkluZm9ybWF0aW9uCVs2XSBBZ2VPZkxvY2F0aW9uSW5mb3JtYXRpb24JCU9QVElPTkFMLA0KCS4uLn0NCi0tIGN1cnJlbnRMb2NhdGlvblJldHJpZXZlZCBzaGFsbCBiZSBwcmVzZW50IGlmIHRoZSBsb2NhdGlvbiBpbmZvcm1hdGlvbg0KLS0gd2FzIHJldHJpZXZlZCBhZnRlciBzdWNjZXNzZnVsIHBhZ2luZy4NCg0KDQpMb2NhdGlvbkluZm9ybWF0aW9uR1BSUyA6Oj0gU0VRVUVOQ0Ugew0KCWNlbGxHbG9iYWxJZE9yU2VydmljZUFyZWFJZE9yTEFJCVswXSBDZWxsR2xvYmFsSWRPclNlcnZpY2VBcmVhSWRPckxBSSBPUFRJT05BTCwNCglyb3V0ZWluZ0FyZWFJZGVudGl0eQlbMV0gUkFJZGVudGl0eQlPUFRJT05BTCwNCglnZW9ncmFwaGljYWxJbmZvcm1hdGlvbglbMl0gR2VvZ3JhcGhpY2FsSW5mb3JtYXRpb24JT1BUSU9OQUwsDQoJc2dzbi1OdW1iZXIJWzNdIElTRE4tQWRkcmVzc1N0cmluZwlPUFRJT05BTCwNCglzZWxlY3RlZExTQUlkZW50aXR5CVs0XSBMU0FJZGVudGl0eQlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzVdIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4sDQoJc2FpLVByZXNlbnQJWzZdIE5VTEwJCU9QVElPTkFMLA0KCWdlb2RldGljSW5mb3JtYXRpb24JWzddIEdlb2RldGljSW5mb3JtYXRpb24JT1BUSU9OQUwsDQoJY3VycmVudExvY2F0aW9uUmV0cmlldmVkCVs4XSBOVUxMCQlPUFRJT05BTCwNCglhZ2VPZkxvY2F0aW9uSW5mb3JtYXRpb24JWzldIEFnZU9mTG9jYXRpb25JbmZvcm1hdGlvbglPUFRJT05BTCwNCgl1c2VyQ1NHSW5mb3JtYXRpb24JWzEwXSBVc2VyQ1NHSW5mb3JtYXRpb24JT1BUSU9OQUwgfQ0KLS0gc2FpLVByZXNlbnQgaW5kaWNhdGVzIHRoYXQgdGhlIGNlbGxHbG9iYWxJZE9yU2VydmljZUFyZWFJZE9yTEFJIHBhcmFtZXRlciBjb250YWlucw0KLS0gYSBTZXJ2aWNlIEFyZWEgSWRlbnRpdHkuDQotLSBjdXJyZW50TG9jYXRpb25SZXRyaWV2ZWQgc2hhbGwgYmUgcHJlc2VudCBpZiB0aGUgbG9jYXRpb24gaW5mb3JtYXRpb24NCi0tIHdhcyByZXRyaWV2ZWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBwYWdpbmcuDQotLSBVc2VyQ1NHSW5mb3JtYXRpb24gY29udGFpbnMgdGhlIENTRyBJRCwgQWNjZXNzIG1vZGUsIGFuZCB0aGUgQ1NHIE1lbWJlcnNoaXAgSW5kaWNhdGlvbiBpbg0KLS0gdGhlIGNhc2UgdGhlIEFjY2VzcyBtb2RlIGlzIEh5YnJpZCBNb2RlLiANCg0KDQpVc2VyQ1NHSW5mb3JtYXRpb24gOjo9IFNFUVVFTkNFIHsNCgljc2ctSWQJIAlbMF0gQ1NHLUlkLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMV0gRXh0ZW5zaW9uQ29udGFpbmVyCQlPUFRJT05BTCwNCgkuLi4sDQoJYWNjZXNzTW9kZQlbMl0gT0NURVQgU1RSSU5HIChTSVpFKDEpKQkJT1BUSU9OQUwsDQoJY21pCQkJWzNdIE9DVEVUIFNUUklORyAoU0laRSgxKSkJCU9QVElPTkFMIH0NCi0tIFRoZSBlbmNvZGluZyBvZiB0aGUgYWNjZXNzTW9kZSBhbmQgY21pIHBhcmFtZXRlcnMgYXJlIGFzIGRlZmluZWQgaW4gM0dQUCBUUyAyOS4wNjAgWzEwNV0uDQoNClJBSWRlbnRpdHkgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoNikpDQotLSBSb3V0aW5nIEFyZWEgSWRlbnRpdHkgaXMgY29kZWQgaW4gYWNjb3JkYW5jZSB3aXRoIDNHUFAgVFMgMjkuMDYwIFsxMDVdLg0KLS0gSXQgc2hhbGwgY29udGFpbiB0aGUgdmFsdWUgcGFydCBkZWZpbmVkIGluIDNHUFAgVFMgMjkuMDYwIG9ubHkuIEkuZS4gdGhlIDNHUFAgVFMgMjkuMDYwDQotLSB0eXBlIGlkZW50aWZpZXIgb2N0ZXQgc2hhbGwgbm90IGJlIGluY2x1ZGVkLg0KDQoNCkdlb2dyYXBoaWNhbEluZm9ybWF0aW9uIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDgpKQ0KLS0JUmVmZXJzIHRvIGdlb2dyYXBoaWNhbCBJbmZvcm1hdGlvbiBkZWZpbmVkIGluIDNHUFAgVFMgMjMuMDMyLg0KLS0JT25seSB0aGUgZGVzY3JpcHRpb24gb2YgYW4gZWxsaXBzb2lkIHBvaW50IHdpdGggdW5jZXJ0YWludHkgY2lyY2xlDQotLQlhcyBzcGVjaWZpZWQgaW4gM0dQUCBUUyAyMy4wMzIgaXMgYWxsb3dlZCB0byBiZSB1c2VkDQotLQlUaGUgaW50ZXJuYWwgc3RydWN0dXJlIGFjY29yZGluZyB0byAzR1BQIFRTIDIzLjAzMiBpcyBhcyBmb2xsb3dzOg0KLS0JCVR5cGUgb2Ygc2hhcGUgKGVsbGlwc29pZCBwb2ludCB3aXRoIHVuY2VydGFpbnR5IGNpcmNsZSkJMSBvY3RldA0KLS0JCURlZ3JlZXMgb2YgTGF0aXR1ZGUJCQkJMyBvY3RldHMNCi0tCQlEZWdyZWVzIG9mIExvbmdpdHVkZQkJCQkzIG9jdGV0cw0KLS0JCVVuY2VydGFpbnR5IGNvZGUJCQkJMSBvY3RldA0KDQpHZW9kZXRpY0luZm9ybWF0aW9uIDo6PSBPQ1RFVCBTVFJJTkcgKFNJWkUgKDEwKSkNCi0tCVJlZmVycyB0byBDYWxsaW5nIEdlb2RldGljIExvY2F0aW9uIGRlZmluZWQgaW4gUS43NjMgKDE5OTkpLg0KLS0JT25seSB0aGUgZGVzY3JpcHRpb24gb2YgYW4gZWxsaXBzb2lkIHBvaW50IHdpdGggdW5jZXJ0YWludHkgY2lyY2xlDQotLQlhcyBzcGVjaWZpZWQgaW4gUS43NjMgKDE5OTkpIGlzIGFsbG93ZWQgdG8gYmUgdXNlZA0KLS0JVGhlIGludGVybmFsIHN0cnVjdHVyZSBhY2NvcmRpbmcgdG8gUS43NjMgKDE5OTkpIGlzIGFzIGZvbGxvd3M6DQotLQkJU2NyZWVuaW5nIGFuZCBwcmVzZW50YXRpb24gaW5kaWNhdG9ycwkJMSBvY3RldA0KLS0JCVR5cGUgb2Ygc2hhcGUgKGVsbGlwc29pZCBwb2ludCB3aXRoIHVuY2VydGFpbnR5IGNpcmNsZSkJMSBvY3RldA0KLS0JCURlZ3JlZXMgb2YgTGF0aXR1ZGUJCQkJMyBvY3RldHMNCi0tCQlEZWdyZWVzIG9mIExvbmdpdHVkZQkJCQkzIG9jdGV0cw0KLS0JCVVuY2VydGFpbnR5IGNvZGUJCQkJMSBvY3RldA0KLS0JCUNvbmZpZGVuY2UJCQkJMSBvY3RldA0KDQpMb2NhdGlvbk51bWJlciA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgyLi4xMCkpDQoJLS0gdGhlIGludGVybmFsIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGluIElUVS1UIFJlYyBRLjc2Mw0KDQpTdWJzY3JpYmVyU3RhdGUgOjo9IENIT0lDRSB7DQoJYXNzdW1lZElkbGUJWzBdIE5VTEwsDQoJY2FtZWxCdXN5CQlbMV0gTlVMTCwNCgluZXREZXROb3RSZWFjaGFibGUJTm90UmVhY2hhYmxlUmVhc29uLA0KCW5vdFByb3ZpZGVkRnJvbVZMUglbMl0gTlVMTH0NCg0KUFMtU3Vic2NyaWJlclN0YXRlIDo6PSBDSE9JQ0Ugew0KCW5vdFByb3ZpZGVkRnJvbVNHU05vck1NRQlbMF0gTlVMTCwNCglwcy1EZXRhY2hlZAlbMV0gTlVMTCwNCglwcy1BdHRhY2hlZE5vdFJlYWNoYWJsZUZvclBhZ2luZwlbMl0gTlVMTCwNCglwcy1BdHRhY2hlZFJlYWNoYWJsZUZvclBhZ2luZwlbM10gTlVMTCwNCglwcy1QRFAtQWN0aXZlTm90UmVhY2hhYmxlRm9yUGFnaW5nCVs0XSBQRFAtQ29udGV4dEluZm9MaXN0LA0KCXBzLVBEUC1BY3RpdmVSZWFjaGFibGVGb3JQYWdpbmcJWzVdIFBEUC1Db250ZXh0SW5mb0xpc3QsDQoJbmV0RGV0Tm90UmVhY2hhYmxlCU5vdFJlYWNoYWJsZVJlYXNvbiB9DQoNClBEUC1Db250ZXh0SW5mb0xpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mUERQLUNvbnRleHRzKSBPRg0KCQkJCVBEUC1Db250ZXh0SW5mbw0KDQpQRFAtQ29udGV4dEluZm8gOjo9IFNFUVVFTkNFIHsNCglwZHAtQ29udGV4dElkZW50aWZpZXIJWzBdIENvbnRleHRJZCwNCglwZHAtQ29udGV4dEFjdGl2ZQlbMV0gTlVMTAkJT1BUSU9OQUwsDQoJcGRwLVR5cGUJCVsyXSBQRFAtVHlwZSwNCglwZHAtQWRkcmVzcwlbM10gUERQLUFkZHJlc3MJT1BUSU9OQUwsDQoJYXBuLVN1YnNjcmliZWQJWzRdIEFQTgkJT1BUSU9OQUwsDQoJYXBuLUluVXNlCQlbNV0gQVBOCQlPUFRJT05BTCwNCgluc2FwaQkJWzZdIE5TQVBJCQlPUFRJT05BTCwNCgl0cmFuc2FjdGlvbklkCVs3XSBUcmFuc2FjdGlvbklkCU9QVElPTkFMLA0KCXRlaWQtRm9yR25BbmRHcAlbOF0gVEVJRAkJT1BUSU9OQUwsDQoJdGVpZC1Gb3JJdQlbOV0gVEVJRAkJT1BUSU9OQUwsDQoJZ2dzbi1BZGRyZXNzCVsxMF0gR1NOLUFkZHJlc3MgCU9QVElPTkFMLA0KCXFvcy1TdWJzY3JpYmVkCVsxMV0gRXh0LVFvUy1TdWJzY3JpYmVkCU9QVElPTkFMLA0KCXFvcy1SZXF1ZXN0ZWQJWzEyXSBFeHQtUW9TLVN1YnNjcmliZWQJT1BUSU9OQUwsDQoJcW9zLU5lZ290aWF0ZWQJWzEzXSBFeHQtUW9TLVN1YnNjcmliZWQJT1BUSU9OQUwsDQoJY2hhcmdpbmdJZAlbMTRdIEdQUlNDaGFyZ2luZ0lECU9QVElPTkFMLA0KCWNoYXJnaW5nQ2hhcmFjdGVyaXN0aWNzCVsxNV0gQ2hhcmdpbmdDaGFyYWN0ZXJpc3RpY3MJT1BUSU9OQUwsDQoJcm5jLUFkZHJlc3MJWzE2XSBHU04tQWRkcmVzcwlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzE3XSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLA0KCXFvczItU3Vic2NyaWJlZAlbMThdIEV4dDItUW9TLVN1YnNjcmliZWQJT1BUSU9OQUwsDQoJLS0gcW9zMi1TdWJzY3JpYmVkIG1heSBiZSBwcmVzZW50IG9ubHkgaWYgcW9zLVN1YnNjcmliZWQgaXMgcHJlc2VudC4NCglxb3MyLVJlcXVlc3RlZAlbMTldIEV4dDItUW9TLVN1YnNjcmliZWQJT1BUSU9OQUwsDQoJLS0gcW9zMi1SZXF1ZXN0ZWQgbWF5IGJlIHByZXNlbnQgb25seSBpZiBxb3MtUmVxdWVzdGVkIGlzIHByZXNlbnQuDQoJcW9zMi1OZWdvdGlhdGVkCVsyMF0gRXh0Mi1Rb1MtU3Vic2NyaWJlZAlPUFRJT05BTCwNCgktLSBxb3MyLU5lZ290aWF0ZWQgbWF5IGJlIHByZXNlbnQgb25seSBpZiBxb3MtTmVnb3RpYXRlZCBpcyBwcmVzZW50Lg0KCXFvczMtU3Vic2NyaWJlZAlbMjFdIEV4dDMtUW9TLVN1YnNjcmliZWQJT1BUSU9OQUwsDQoJLS0gcW9zMy1TdWJzY3JpYmVkIG1heSBiZSBwcmVzZW50IG9ubHkgaWYgcW9zMi1TdWJzY3JpYmVkIGlzIHByZXNlbnQuDQoJcW9zMy1SZXF1ZXN0ZWQJWzIyXSBFeHQzLVFvUy1TdWJzY3JpYmVkCU9QVElPTkFMLA0KCS0tIHFvczMtUmVxdWVzdGVkIG1heSBiZSBwcmVzZW50IG9ubHkgaWYgcW9zMi1SZXF1ZXN0ZWQgaXMgcHJlc2VudC4NCglxb3MzLU5lZ290aWF0ZWQJWzIzXSBFeHQzLVFvUy1TdWJzY3JpYmVkCU9QVElPTkFMLA0KCS0tIHFvczMtTmVnb3RpYXRlZCBtYXkgYmUgcHJlc2VudCBvbmx5IGlmIHFvczItTmVnb3RpYXRlZCBpcyBwcmVzZW50Lg0KCXFvczQtU3Vic2NyaWJlZAlbMjVdIEV4dDQtUW9TLVN1YnNjcmliZWQJT1BUSU9OQUwsDQoJLS0gcW9zNC1TdWJzY3JpYmVkIG1heSBiZSBwcmVzZW50IG9ubHkgaWYgcW9zMy1TdWJzY3JpYmVkIGlzIHByZXNlbnQuDQoJcW9zNC1SZXF1ZXN0ZWQJWzI2XSBFeHQ0LVFvUy1TdWJzY3JpYmVkCU9QVElPTkFMLA0KCS0tIHFvczQtUmVxdWVzdGVkIG1heSBiZSBwcmVzZW50IG9ubHkgaWYgcW9zMy1SZXF1ZXN0ZWQgaXMgcHJlc2VudC4NCglxb3M0LU5lZ290aWF0ZWQJWzI3XSBFeHQ0LVFvUy1TdWJzY3JpYmVkCU9QVElPTkFMLA0KCS0tIHFvczQtTmVnb3RpYXRlZCBtYXkgYmUgcHJlc2VudCBvbmx5IGlmIHFvczMtTmVnb3RpYXRlZCBpcyBwcmVzZW50LiANCglleHQtcGRwLVR5cGUJWzI4XSBFeHQtUERQLVR5cGUJT1BUSU9OQUwsDQoJLS0gY29udGFpbnMgdGhlIHZhbHVlIElQdjR2NiBkZWZpbmVkIGluIDNHUFAgVFMgMjkuMDYwIFsxMDVdLCBpZiB0aGUgUERQIGNhbiBiZQ0KCS0tIGFjY2Vzc2VkIGJ5IGR1YWwtc3RhY2sgVUVzLg0KCWV4dC1wZHAtQWRkcmVzcwlbMjldIFBEUC1BZGRyZXNzCU9QVElPTkFMDQoJLS0gY29udGFpbnMgYW4gYWRkaXRpb25hbCBJUCBhZGRyZXNzIGluIGNhc2Ugb2YgZHVhbC1zdGFjayBzdGF0aWMgSVAgYWRkcmVzcyBhc3NpZ25tZW50DQoJLS0gZm9yIHRoZSBVRS4NCgktLSBpdCBtYXkgY29udGFpbiBhbiBJUHY0IG9yIGFuIElQdjYgYWRkcmVzcy9wcmVmaXgsIGFuZCBpdCBtYXkgYmUgcHJlc2VudA0KCS0tIG9ubHkgaWYgcGRwLUFkZHJlc3MgaXMgcHJlc2VudDsgaWYgYm90aCBhcmUgcHJlc2VudCwgZWFjaCBwYXJhbWV0ZXIgc2hhbGwNCgktLSBjb250YWluIGEgZGlmZmVyZW50IHR5cGUgb2YgYWRkcmVzcyAoSVB2NCBvciBJUHY2KS4NCg0KCX0NCg0KTlNBUEkgOjo9IElOVEVHRVIgKDAuLjE1KQ0KLS0JVGhpcyB0eXBlIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIE5ldHdvcmsgbGF5ZXIgU2VydmljZSBBY2Nlc3MgUG9pbnQNCg0KVHJhbnNhY3Rpb25JZCA6Oj0gT0NURVQgU1RSSU5HIChTSVpFICgxLi4yKSkNCi0tCVRoaXMgdHlwZSBjYXJyaWVzIHRoZSB2YWx1ZSBwYXJ0IG9mIHRoZSB0cmFuc2FjdGlvbiBpZGVudGlmaWVyIHdoaWNoIGlzIHVzZWQgaW4gdGhlIA0KLS0Jc2Vzc2lvbiBtYW5hZ2VtZW50IG1lc3NhZ2VzIG9uIHRoZSBhY2Nlc3MgaW50ZXJmYWNlLiBUaGUgZW5jb2RpbmcgaXMgZGVmaW5lZCBpbiANCi0tCTNHUFAgVFMgMjQuMDA4DQoNClRFSUQgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoNCkpDQotLQlUaGlzIHR5cGUgY2FycmllcyB0aGUgdmFsdWUgcGFydCBvZiB0aGUgVHVubmVsIEVuZHBvaW50IElkZW50aWZpZXIgd2hpY2ggaXMgdXNlZCB0byANCi0tCWRpc3Rpbmd1aXNoIGJldHdlZW4gZGlmZmVyZW50IHR1bm5lbHMgYmV0d2VlbiB0aGUgc2FtZSBwYWlyIG9mIGVudGl0aWVzIHdoaWNoIGNvbW11bmljYXRlIA0KLS0JdXNpbmcgdGhlIEdQUlMgVHVubmVsbGluZyBQcm90b2NvbCBUaGUgZW5jb2RpbmcgaXMgZGVmaW5lZCBpbiAzR1BQIFRTIDI5LjA2MC4NCg0KR1BSU0NoYXJnaW5nSUQgOjo9IE9DVEVUIFNUUklORyAoU0laRSAoNCkpDQotLQlUaGUgQ2hhcmdpbmcgSUQgaXMgYSB1bmlxdWUgZm91ciBvY3RldCB2YWx1ZSBnZW5lcmF0ZWQgYnkgdGhlIEdHU04gd2hlbiANCi0tCWEgUERQIENvbnRleHQgaXMgYWN0aXZhdGVkLiBBIENoYXJnaW5nIElEIGlzIGdlbmVyYXRlZCBmb3IgZWFjaCBhY3RpdmF0ZWQgY29udGV4dC4NCi0tCVRoZSBlbmNvZGluZyBpcyBkZWZpbmVkIGluIDNHUFAgVFMgMjkuMDYwLg0KDQpOb3RSZWFjaGFibGVSZWFzb24gOjo9IEVOVU1FUkFURUQgew0KCW1zUHVyZ2VkICgwKSwNCglpbXNpRGV0YWNoZWQgKDEpLA0KCXJlc3RyaWN0ZWRBcmVhICgyKSwNCglub3RSZWdpc3RlcmVkICgzKX0NCg0KLS0gYW55IHRpbWUgaW50ZXJyb2dhdGlvbiBpbmZvIHR5cGVzDQoNCkFueVRpbWVJbnRlcnJvZ2F0aW9uQXJnIDo6PSBTRVFVRU5DRSB7DQoJc3Vic2NyaWJlcklkZW50aXR5CVswXSBTdWJzY3JpYmVySWRlbnRpdHksDQoJcmVxdWVzdGVkSW5mbwlbMV0gUmVxdWVzdGVkSW5mbywNCglnc21TQ0YtQWRkcmVzcwlbM10gSVNETi1BZGRyZXNzU3RyaW5nLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMl0gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KQW55VGltZUludGVycm9nYXRpb25SZXMgOjo9IFNFUVVFTkNFIHsNCglzdWJzY3JpYmVySW5mbwlTdWJzY3JpYmVySW5mbywNCglleHRlbnNpb25Db250YWluZXIJRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KLS0gYW55IHRpbWUgaW5mb3JtYXRpb24gaGFuZGxpbmcgdHlwZXMNCg0KQW55VGltZVN1YnNjcmlwdGlvbkludGVycm9nYXRpb25BcmcgOjo9IFNFUVVFTkNFIHsNCglzdWJzY3JpYmVySWRlbnRpdHkJWzBdIFN1YnNjcmliZXJJZGVudGl0eSwNCglyZXF1ZXN0ZWRTdWJzY3JpcHRpb25JbmZvCVsxXSBSZXF1ZXN0ZWRTdWJzY3JpcHRpb25JbmZvLA0KCWdzbVNDRi1BZGRyZXNzCVsyXSBJU0ROLUFkZHJlc3NTdHJpbmcsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVszXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJbG9uZ0ZUTi1TdXBwb3J0ZWQJWzRdCU5VTEwJCU9QVElPTkFMLA0KCS4uLn0NCg0KQW55VGltZVN1YnNjcmlwdGlvbkludGVycm9nYXRpb25SZXMgOjo9IFNFUVVFTkNFIHsNCgljYWxsRm9yd2FyZGluZ0RhdGEJWzFdIENhbGxGb3J3YXJkaW5nRGF0YQlPUFRJT05BTCwNCgljYWxsQmFycmluZ0RhdGEJWzJdIENhbGxCYXJyaW5nRGF0YQlPUFRJT05BTCwNCglvZGItSW5mbwkJWzNdIE9EQi1JbmZvCU9QVElPTkFMLA0KCWNhbWVsLVN1YnNjcmlwdGlvbkluZm8JWzRdIENBTUVMLVN1YnNjcmlwdGlvbkluZm8JT1BUSU9OQUwsDQoJc3VwcG9ydGVkVkxSLUNBTUVMLVBoYXNlcwlbNV0gU3VwcG9ydGVkQ2FtZWxQaGFzZXMJT1BUSU9OQUwsDQoJc3VwcG9ydGVkU0dTTi1DQU1FTC1QaGFzZXMJWzZdIFN1cHBvcnRlZENhbWVsUGhhc2VzCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbN10gRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLiAsDQoJb2ZmZXJlZENhbWVsNENTSXNJblZMUglbOF0gT2ZmZXJlZENhbWVsNENTSXMJT1BUSU9OQUwsDQoJb2ZmZXJlZENhbWVsNENTSXNJblNHU04JWzldIE9mZmVyZWRDYW1lbDRDU0lzCU9QVElPTkFMLA0KCW1zaXNkbi1CUy1MaXN0CVsxMF0gTVNJU0ROLUJTLUxpc3QJT1BUSU9OQUwsDQoJY3NnLVN1YnNjcmlwdGlvbkRhdGFMaXN0CVsxMV0gQ1NHLVN1YnNjcmlwdGlvbkRhdGFMaXN0CU9QVElPTkFMIH0NCg0KUmVxdWVzdGVkU3Vic2NyaXB0aW9uSW5mbyA6Oj0gU0VRVUVOQ0Ugew0KCXJlcXVlc3RlZFNTLUluZm8JWzFdIFNTLUZvckJTLUNvZGUJT1BUSU9OQUwsDQoJb2RiCQkJWzJdIE5VTEwJCU9QVElPTkFMLA0KCXJlcXVlc3RlZENBTUVMLVN1YnNjcmlwdGlvbkluZm8JWzNdIFJlcXVlc3RlZENBTUVMLVN1YnNjcmlwdGlvbkluZm8JCU9QVElPTkFMLA0KCXN1cHBvcnRlZFZMUi1DQU1FTC1QaGFzZXMJWzRdIE5VTEwJCU9QVElPTkFMLA0KCXN1cHBvcnRlZFNHU04tQ0FNRUwtUGhhc2VzCVs1XSBOVUxMCQlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzZdIEV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4sDQoJYWRkaXRpb25hbFJlcXVlc3RlZENBTUVMLVN1YnNjcmlwdGlvbkluZm8NCgkJCQlbN10gQWRkaXRpb25hbFJlcXVlc3RlZENBTUVMLVN1YnNjcmlwdGlvbkluZm8NCgkJCQkJCQlPUFRJT05BTCwNCgltc2lzZG4tQlMtTGlzdAlbOF0gTlVMTAkJT1BUSU9OQUwsDQoJY3NnLVN1YnNjcmlwdGlvbkRhdGFSZXF1ZXN0ZWQJWzldIE5VTEwJCU9QVElPTkFMIH0NCg0KTVNJU0ROLUJTLUxpc3QgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLm1heE51bU9mTVNJU0ROKSBPRg0KCQkJCU1TSVNETi1CUw0KDQptYXhOdW1PZk1TSVNETiAgSU5URUdFUiA6Oj0gNTANCg0KDQpNU0lTRE4tQlMgOjo9IFNFUVVFTkNFIHsNCgltc2lzZG4JCQlJU0ROLUFkZHJlc3NTdHJpbmcsCQ0KCWJhc2ljU2VydmljZUxpc3QJWzBdCUJhc2ljU2VydmljZUxpc3QJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVsxXQlFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpSZXF1ZXN0ZWRDQU1FTC1TdWJzY3JpcHRpb25JbmZvIDo6PSBFTlVNRVJBVEVEIHsNCglvLUNTSQkJKDApLA0KCXQtQ1NJCQkoMSksDQoJdnQtQ1NJCQkoMiksDQoJdGlmLUNTSQkJKDMpLA0KCWdwcnMtQ1NJCQkoNCksDQoJbW8tc21zLUNTSQkoNSksDQoJc3MtQ1NJCQkoNiksDQoJbS1DU0kJCSg3KSwNCglkLWNzaQkJKDgpfQ0KDQpBZGRpdGlvbmFsUmVxdWVzdGVkQ0FNRUwtU3Vic2NyaXB0aW9uSW5mbyA6Oj0gRU5VTUVSQVRFRCB7DQoJbXQtc21zLUNTSQkoMCksDQoJbWctY3NpCQkoMSksDQoJby1JTS1DU0kgCQkoMiksDQoJZC1JTS1DU0kJCSgzKSwNCgl2dC1JTS1DU0kJIAkoNCksDQoJLi4ufQ0KLS0JZXhjZXB0aW9uIGhhbmRsaW5nOiB1bmtub3duIHZhbHVlcyBzaGFsbCBiZSBkaXNjYXJkZWQgYnkgdGhlIHJlY2VpdmVyLg0KDQpDYWxsRm9yd2FyZGluZ0RhdGEgOjo9IFNFUVVFTkNFIHsNCglmb3J3YXJkaW5nRmVhdHVyZUxpc3QJRXh0LUZvcndGZWF0dXJlTGlzdCwNCglub3RpZmljYXRpb25Ub0NTRQlOVUxMCQkJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVswXSBFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpDYWxsQmFycmluZ0RhdGEgOjo9IFNFUVVFTkNFIHsNCgljYWxsQmFycmluZ0ZlYXR1cmVMaXN0CUV4dC1DYWxsQmFyRmVhdHVyZUxpc3QsDQoJcGFzc3dvcmQJCVBhc3N3b3JkCQlPUFRJT05BTCwNCgl3cm9uZ1Bhc3N3b3JkQXR0ZW1wdHNDb3VudGVyCVdyb25nUGFzc3dvcmRBdHRlbXB0c0NvdW50ZXIJT1BUSU9OQUwsDQoJbm90aWZpY2F0aW9uVG9DU0UJTlVMTAkJCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpXcm9uZ1Bhc3N3b3JkQXR0ZW1wdHNDb3VudGVyIDo6PSBJTlRFR0VSICgwLi40KQ0KDQpPREItSW5mbyA6Oj0gU0VRVUVOQ0Ugew0KCW9kYi1EYXRhCQlPREItRGF0YSwNCglub3RpZmljYXRpb25Ub0NTRQlOVUxMCQkJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi59DQoNCkNBTUVMLVN1YnNjcmlwdGlvbkluZm8gOjo9IFNFUVVFTkNFIHsNCglvLUNTSQkJWzBdCU8tQ1NJCU9QVElPTkFMLA0KCW8tQmNzbUNhbWVsVERQLUNyaXRlcmlhTGlzdAlbMV0JTy1CY3NtQ2FtZWxURFBDcml0ZXJpYUxpc3QJT1BUSU9OQUwsIA0KCWQtQ1NJCQlbMl0JRC1DU0kJT1BUSU9OQUwsDQoJdC1DU0kJCVszXQlULUNTSQlPUFRJT05BTCwNCgl0LUJDU00tQ0FNRUwtVERQLUNyaXRlcmlhTGlzdAlbNF0JVC1CQ1NNLUNBTUVMLVREUC1Dcml0ZXJpYUxpc3QJT1BUSU9OQUwsDQoJdnQtQ1NJCQlbNV0JVC1DU0kJT1BUSU9OQUwsDQoJdnQtQkNTTS1DQU1FTC1URFAtQ3JpdGVyaWFMaXN0CVs2XQlULUJDU00tQ0FNRUwtVERQLUNyaXRlcmlhTGlzdAlPUFRJT05BTCwNCgl0aWYtQ1NJCQlbN10JTlVMTAkJT1BUSU9OQUwsDQoJdGlmLUNTSS1Ob3RpZmljYXRpb25Ub0NTRQlbOF0JTlVMTAkJT1BUSU9OQUwsDQoJZ3Bycy1DU0kJCVs5XQlHUFJTLUNTSQlPUFRJT05BTCwNCgltby1zbXMtQ1NJCVsxMF0JU01TLUNTSQlPUFRJT05BTCwNCglzcy1DU0kJCVsxMV0JU1MtQ1NJCU9QVElPTkFMLA0KCW0tQ1NJCQlbMTJdCU0tQ1NJCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMTNdCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4sDQoJc3BlY2lmaWNDU0lEZWxldGVkTGlzdAlbMTRdCVNwZWNpZmljQ1NJLVdpdGhkcmF3CU9QVElPTkFMLA0KCW10LXNtcy1DU0kJWzE1XQlTTVMtQ1NJCU9QVElPTkFMLA0KCW10LXNtc0NBTUVMVERQLUNyaXRlcmlhTGlzdAlbMTZdCU1ULXNtc0NBTUVMVERQLUNyaXRlcmlhTGlzdAlPUFRJT05BTCwNCgltZy1jc2kJCVsxN10JTUctQ1NJCU9QVElPTkFMLA0KCW8tSU0tQ1NJCQlbMThdIE8tQ1NJCU9QVElPTkFMLA0KCW8tSU0tQmNzbUNhbWVsVERQLUNyaXRlcmlhTGlzdAlbMTldIE8tQmNzbUNhbWVsVERQQ3JpdGVyaWFMaXN0CU9QVElPTkFMLA0KCWQtSU0tQ1NJCQlbMjBdIEQtQ1NJCU9QVElPTkFMLA0KCXZ0LUlNLUNTSQkJWzIxXSBULUNTSQlPUFRJT05BTCwNCgl2dC1JTS1CQ1NNLUNBTUVMLVREUC1Dcml0ZXJpYUxpc3QJWzIyXQlULUJDU00tQ0FNRUwtVERQLUNyaXRlcmlhTGlzdAlPUFRJT05BTA0KCX0NCg0KQW55VGltZU1vZGlmaWNhdGlvbkFyZyA6Oj0gU0VRVUVOQ0Ugew0KCXN1YnNjcmliZXJJZGVudGl0eQlbMF0JU3Vic2NyaWJlcklkZW50aXR5LA0KCWdzbVNDRi1BZGRyZXNzCVsxXQlJU0ROLUFkZHJlc3NTdHJpbmcsDQoJbW9kaWZpY2F0aW9uUmVxdWVzdEZvci1DRi1JbmZvCVsyXQlNb2RpZmljYXRpb25SZXF1ZXN0Rm9yLUNGLUluZm8gT1BUSU9OQUwsDQoJbW9kaWZpY2F0aW9uUmVxdWVzdEZvci1DQi1JbmZvCVszXQlNb2RpZmljYXRpb25SZXF1ZXN0Rm9yLUNCLUluZm8gT1BUSU9OQUwsDQoJbW9kaWZpY2F0aW9uUmVxdWVzdEZvci1DU0kJWzRdCU1vZGlmaWNhdGlvblJlcXVlc3RGb3ItQ1NJCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbNV0JRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCWxvbmdGVE4tU3VwcG9ydGVkCVs2XQlOVUxMCQlPUFRJT05BTCwNCgkuLi4sDQoJbW9kaWZpY2F0aW9uUmVxdWVzdEZvci1PREItZGF0YQlbN10JTW9kaWZpY2F0aW9uUmVxdWVzdEZvci1PREItZGF0YSBPUFRJT05BTCwNCgltb2RpZmljYXRpb25SZXF1ZXN0Rm9yLUlQLVNNLUdXLURhdGEJWzhdCU1vZGlmaWNhdGlvblJlcXVlc3RGb3ItSVAtU00tR1ctRGF0YSBPUFRJT05BTCwNCglhY3RpdmF0aW9uUmVxdWVzdEZvclVFLXJlYWNoYWJpbGl0eQlbOV0JU2VydmluZ05vZGUJT1BUSU9OQUwsDQoJbW9kaWZpY2F0aW9uUmVxdWVzdEZvci1DU0cJWzEwXQlNb2RpZmljYXRpb25SZXF1ZXN0Rm9yLUNTRwlPUFRJT05BTCB9DQoNCk1vZGlmaWNhdGlvblJlcXVlc3RGb3ItQ1NHIDo6PSBTRVFVRU5DRSB7DQoJbW9kaWZ5Tm90aWZpY2F0aW9uVG9DU0UJWzBdCU1vZGlmaWNhdGlvbkluc3RydWN0aW9uCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMV0JRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KU2VydmluZ05vZGUgOjo9IEJJVCBTVFJJTkcgew0KCW1tZSAoMCl9IChTSVpFICgxLi44KSkNCi0tIE90aGVyIGJpdHMgdGhhbiBsaXN0ZWQgYWJvdmUgc2hhbGwgYmUgZGlzY2FyZGVkLg0KDQpBbnlUaW1lTW9kaWZpY2F0aW9uUmVzIDo6PSBTRVFVRU5DRSB7DQoJc3MtSW5mb0Zvci1DU0UJWzBdCUV4dC1TUy1JbmZvRm9yLUNTRQlPUFRJT05BTCwNCgljYW1lbC1TdWJzY3JpcHRpb25JbmZvCVsxXQlDQU1FTC1TdWJzY3JpcHRpb25JbmZvCU9QVElPTkFMLA0KCWV4dGVuc2lvbkNvbnRhaW5lcglbMl0JRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLiwNCglvZGItSW5mbwkJWzNdCU9EQi1JbmZvCU9QVElPTkFMIH0NCg0KTW9kaWZpY2F0aW9uUmVxdWVzdEZvci1DRi1JbmZvIDo6PSBTRVFVRU5DRSB7DQoJc3MtQ29kZQkJWzBdCVNTLUNvZGUsDQoJYmFzaWNTZXJ2aWNlCVsxXQlFeHQtQmFzaWNTZXJ2aWNlQ29kZQlPUFRJT05BTCwNCglzcy1TdGF0dXMJCVsyXQlFeHQtU1MtU3RhdHVzCU9QVElPTkFMLA0KCWZvcndhcmRlZFRvTnVtYmVyCVszXQlBZGRyZXNzU3RyaW5nCU9QVElPTkFMLA0KCWZvcndhcmRlZFRvU3ViYWRkcmVzcwlbNF0JSVNETi1TdWJhZGRyZXNzU3RyaW5nCU9QVElPTkFMLA0KCW5vUmVwbHlDb25kaXRpb25UaW1lCVs1XQlFeHQtTm9SZXBDb25kVGltZQlPUFRJT05BTCwNCgltb2RpZnlOb3RpZmljYXRpb25Ub0NTRQlbNl0JTW9kaWZpY2F0aW9uSW5zdHJ1Y3Rpb24JT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVs3XQlFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpNb2RpZmljYXRpb25SZXF1ZXN0Rm9yLUNCLUluZm8gOjo9IFNFUVVFTkNFIHsNCglzcy1Db2RlCQlbMF0JU1MtQ29kZSwNCgliYXNpY1NlcnZpY2UJWzFdCUV4dC1CYXNpY1NlcnZpY2VDb2RlCU9QVElPTkFMLA0KCXNzLVN0YXR1cwkJWzJdCUV4dC1TUy1TdGF0dXMJT1BUSU9OQUwsDQoJcGFzc3dvcmQJCVszXQlQYXNzd29yZAlPUFRJT05BTCwNCgl3cm9uZ1Bhc3N3b3JkQXR0ZW1wdHNDb3VudGVyCVs0XQlXcm9uZ1Bhc3N3b3JkQXR0ZW1wdHNDb3VudGVyCU9QVElPTkFMLA0KCW1vZGlmeU5vdGlmaWNhdGlvblRvQ1NFCVs1XQlNb2RpZmljYXRpb25JbnN0cnVjdGlvbglPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzZdCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi59DQoNCk1vZGlmaWNhdGlvblJlcXVlc3RGb3ItT0RCLWRhdGEgOjo9IFNFUVVFTkNFIHsNCglvZGItZGF0YQkJWzBdCU9EQi1EYXRhCU9QVElPTkFMLA0KCW1vZGlmeU5vdGlmaWNhdGlvblRvQ1NFCVsxXQlNb2RpZmljYXRpb25JbnN0cnVjdGlvbglPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzJdCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi59DQoNCk1vZGlmaWNhdGlvblJlcXVlc3RGb3ItQ1NJIDo6PSBTRVFVRU5DRSB7DQoJcmVxdWVzdGVkQ2FtZWwtU3Vic2NyaXB0aW9uSW5mbwlbMF0JUmVxdWVzdGVkQ0FNRUwtU3Vic2NyaXB0aW9uSW5mbywNCgltb2RpZnlOb3RpZmljYXRpb25Ub0NTRQlbMV0JTW9kaWZpY2F0aW9uSW5zdHJ1Y3Rpb24JT1BUSU9OQUwsDQoJbW9kaWZ5Q1NJLVN0YXRlCVsyXQlNb2RpZmljYXRpb25JbnN0cnVjdGlvbglPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzNdCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi4sDQoJYWRkaXRpb25hbFJlcXVlc3RlZENBTUVMLVN1YnNjcmlwdGlvbkluZm8NCgkJCQlbNF0gQWRkaXRpb25hbFJlcXVlc3RlZENBTUVMLVN1YnNjcmlwdGlvbkluZm8NCgkJCQkJCQlPUFRJT05BTCB9DQotLSByZXF1ZXN0ZWRDYW1lbC1TdWJzY3JpcHRpb25JbmZvIHNoYWxsIGJlIGRpc2NhcmRlZCBpZg0KLS0gYWRkaXRpb25hbFJlcXVlc3RlZENBTUVMLVN1YnNjcmlwdGlvbkluZm8gaXMgcmVjZWl2ZWQNCg0KTW9kaWZpY2F0aW9uUmVxdWVzdEZvci1JUC1TTS1HVy1EYXRhIDo6PSBTRVFVRU5DRSB7DQoJbW9kaWZ5UmVnaXN0cmF0aW9uU3RhdHVzCVswXQlNb2RpZmljYXRpb25JbnN0cnVjdGlvbglPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzFdCUV4dGVuc2lvbkNvbnRhaW5lcglPUFRJT05BTCwNCgkuLi59DQoNCk1vZGlmaWNhdGlvbkluc3RydWN0aW9uIDo6PSBFTlVNRVJBVEVEIHsNCglkZWFjdGl2YXRlCSgwKSwNCglhY3RpdmF0ZQkJKDEpfQ0KDQotLSBzdWJzY3JpYmVyIGRhdGEgbW9kaWZpY2F0aW9uIG5vdGlmaWNhdGlvbiB0eXBlcw0KDQpOb3RlU3Vic2NyaWJlckRhdGFNb2RpZmllZEFyZyA6Oj0gU0VRVUVOQ0Ugew0KCWltc2kJCQlJTVNJLA0KCW1zaXNkbgkJSVNETi1BZGRyZXNzU3RyaW5nLA0KCWZvcndhcmRpbmdJbmZvRm9yLUNTRQlbMF0gRXh0LUZvcndhcmRpbmdJbmZvRm9yLUNTRQlPUFRJT05BTCwNCgljYWxsQmFycmluZ0luZm9Gb3ItQ1NFCVsxXSBFeHQtQ2FsbEJhcnJpbmdJbmZvRm9yLUNTRQlPUFRJT05BTCwNCglvZGItSW5mbwkJWzJdIE9EQi1JbmZvCU9QVElPTkFMLA0KCWNhbWVsLVN1YnNjcmlwdGlvbkluZm8JWzNdIENBTUVMLVN1YnNjcmlwdGlvbkluZm8JT1BUSU9OQUwsDQoJYWxsSW5mb3JtYXRpb25TZW50CVs0XSBOVUxMCQlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLiwNCgl1ZS1yZWFjaGFibGUJWzVdIFNlcnZpbmdOb2RlCU9QVElPTkFMLA0KCWNzZy1TdWJzY3JpcHRpb25EYXRhTGlzdAlbNl0gQ1NHLVN1YnNjcmlwdGlvbkRhdGFMaXN0CU9QVElPTkFMIH0NCg0KTm90ZVN1YnNjcmliZXJEYXRhTW9kaWZpZWRSZXMgOjo9IFNFUVVFTkNFIHsNCglleHRlbnNpb25Db250YWluZXIJRXh0ZW5zaW9uQ29udGFpbmVyCU9QVElPTkFMLA0KCS4uLn0NCg0KLS0gbW9iaWxpdHkgbWFuYWdlbWVudCBldmVudCBub3RpZmljYXRpb29uIGluZm8gdHlwZXMNCg0KTm90ZU1NLUV2ZW50QXJnOjo9IFNFUVVFTkNFIHsNCglzZXJ2aWNlS2V5CVNlcnZpY2VLZXksDQoJZXZlbnRNZXQJCVswXQlNTS1Db2RlLA0KCWltc2kJCQlbMV0JSU1TSSwNCgltc2lzZG4JCVsyXQlJU0ROLUFkZHJlc3NTdHJpbmcsDQoJbG9jYXRpb25JbmZvcm1hdGlvbglbM10JTG9jYXRpb25JbmZvcm1hdGlvbglPUFRJT05BTCwNCglzdXBwb3J0ZWRDQU1FTFBoYXNlcwlbNV0JU3VwcG9ydGVkQ2FtZWxQaGFzZXMJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVs2XQlFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4uLA0KCWxvY2F0aW9uSW5mb3JtYXRpb25HUFJTCVs3XQlMb2NhdGlvbkluZm9ybWF0aW9uR1BSUwlPUFRJT05BTCwNCglvZmZlcmVkQ2FtZWw0RnVuY3Rpb25hbGl0aWVzCVs4XSBPZmZlcmVkQ2FtZWw0RnVuY3Rpb25hbGl0aWVzCU9QVElPTkFMDQp9DQoNCk5vdGVNTS1FdmVudFJlcyA6Oj0gU0VRVUVOQ0Ugew0KCWV4dGVuc2lvbkNvbnRhaW5lcglFeHRlbnNpb25Db250YWluZXIgCU9QVElPTkFMLA0KCS4uLn0NCg0KRXh0LVNTLUluZm9Gb3ItQ1NFIDo6PSBDSE9JQ0Ugew0KCWZvcndhcmRpbmdJbmZvRm9yLUNTRQlbMF0gRXh0LUZvcndhcmRpbmdJbmZvRm9yLUNTRSwNCgljYWxsQmFycmluZ0luZm9Gb3ItQ1NFCVsxXSBFeHQtQ2FsbEJhcnJpbmdJbmZvRm9yLUNTRQ0KCX0NCg0KRXh0LUZvcndhcmRpbmdJbmZvRm9yLUNTRSA6Oj0gU0VRVUVOQ0Ugew0KCXNzLUNvZGUJCVswXQlTUy1Db2RlLA0KCWZvcndhcmRpbmdGZWF0dXJlTGlzdAlbMV0JRXh0LUZvcndGZWF0dXJlTGlzdCwNCglub3RpZmljYXRpb25Ub0NTRQlbMl0JTlVMTAkJT1BUSU9OQUwsDQoJZXh0ZW5zaW9uQ29udGFpbmVyCVszXQlFeHRlbnNpb25Db250YWluZXIJT1BUSU9OQUwsDQoJLi4ufQ0KDQpFeHQtQ2FsbEJhcnJpbmdJbmZvRm9yLUNTRSA6Oj0gU0VRVUVOQ0Ugew0KCXNzLUNvZGUJCVswXQlTUy1Db2RlLA0KCWNhbGxCYXJyaW5nRmVhdHVyZUxpc3QJWzFdCUV4dC1DYWxsQmFyRmVhdHVyZUxpc3QsDQoJcGFzc3dvcmQJCVsyXQlQYXNzd29yZAlPUFRJT05BTCwNCgl3cm9uZ1Bhc3N3b3JkQXR0ZW1wdHNDb3VudGVyCVszXQlXcm9uZ1Bhc3N3b3JkQXR0ZW1wdHNDb3VudGVyCU9QVElPTkFMLA0KCW5vdGlmaWNhdGlvblRvQ1NFCVs0XQlOVUxMCQlPUFRJT05BTCwNCglleHRlbnNpb25Db250YWluZXIJWzVdCUV4dGVuc2lvbkNvbnRhaW5lciAJT1BUSU9OQUwsDQoJLi4ufQ0KDQpFTkQNCg==