RnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnM6Cj09PT09PT09PT09PT09PT09PT09PT09PT09PQpzdWJqZWN0OiB1bmlmaWVkIHpvcmFuIGRyaXZlciAoenIzNjB4Nywgem9yYW4sIGJ1eiwgZGMxMCgrKSwgZGMzMCgrKSwgbG1sMzMpCndlYnNpdGU6IGh0dHA6Ly9tanBlZy5zb3VyY2Vmb3JnZS5uZXQvZHJpdmVyLXpvcmFuLwoKMS4gV2hhdCBjYXJkcyBhcmUgc3VwcG9ydGVkCjEuMSBXaGF0IHRoZSBUViBkZWNvZGVyIGNhbiBkbyBhbiB3aGF0IG5vdAoxLjIgV2hhdCB0aGUgVFYgZW5jb2RlciBjYW4gZG8gYW4gd2hhdCBub3QKMi4gSG93IGRvIEkgZ2V0IHRoaXMgZGFtbiB0aGluZyB0byB3b3JrCjMuIFdoYXQgbWFpbmJvYXJkIHNob3VsZCBJIHVzZSAob3Igd2h5IGRvZXNuJ3QgbXkgY2FyZCB3b3JrKQo0LiBQcm9ncmFtbWluZyBpbnRlcmZhY2UKNS4gQXBwbGljYXRpb25zCjYuIENvbmNlcm5pbmcgYnVmZmVyIHNpemVzLCBxdWFsaXR5LCBvdXRwdXQgc2l6ZSBldGMuCjcuIEl0IGhhbmdzL2NyYXNoZXMvZmFpbHMvd2hhdGV2ZXJzISBIZWxwIQo4LiBNYWludGFpbmVycy9Db250YWN0aW5nCjkuIExpY2Vuc2UKCj09PT09PT09PT09PT09PT09PT09PT09PT09PQoKMS4gV2hhdCBjYXJkcyBhcmUgc3VwcG9ydGVkCgpJb21lZ2EgQnV6LCBMaW51eCBNZWRpYSBMYWJzIExNTDMzL0xNTDMzUjEwLCBQaW5uYWNsZS9NaXJvCkRDMTAvREMxMCsvREMzMC9EQzMwKyBhbmQgcmVsYXRlZCBib2FyZHMgKGF2YWlsYWJsZSB1bmRlciB2YXJpb3VzIG5hbWVzKS4KCklvbWVnYSBCdXo6CiogWm9yYW4genIzNjA2NyBQQ0kgY29udHJvbGxlcgoqIFpvcmFuIHpyMzYwNjAgTUpQRUcgY29kZWMKKiBQaGlsaXBzIHNhYTcxMTEgVFYgZGVjb2RlcgoqIFBoaWxpcHMgc2FhNzE4NSBUViBlbmNvZGVyCkRyaXZlcnMgdG8gdXNlOiB2aWRlb2RldiwgaTJjLWNvcmUsIGkyYy1hbGdvLWJpdCwKCQl2aWRlb2NvZGVjLCBzYWE3MTExLCBzYWE3MTg1LCB6cjM2MDYwLCB6cjM2MDY3CklucHV0cy9vdXRwdXRzOiBDb21wb3NpdGUgYW5kIFMtdmlkZW8KTm9ybXM6IFBBTCwgU0VDQU0gKDcyMHg1NzYgQCAyNSBmcHMpLCBOVFNDICg3MjB4NDgwIEAgMjkuOTcgZnBzKQpDYXJkIG51bWJlcjogNwoKQXZlck1lZGlhIDYgRXllcyBBVlM2RVlFUzoKKiBab3JhbiB6cjM2MDY3IFBDSSBjb250cm9sbGVyCiogWm9yYW4genIzNjA2MCBNSlBFRyBjb2RlYwoqIFNhbXN1bmcga3MwMTI3IFRWIGRlY29kZXIKKiBDb25leGFudCBidDg2NiAgVFYgZW5jb2RlcgpEcml2ZXJzIHRvIHVzZTogdmlkZW9kZXYsIGkyYy1jb3JlLCBpMmMtYWxnby1iaXQsCgkJdmlkZW9jb2RlYywga3MwMTI3LCBidDg2NiwgenIzNjA2MCwgenIzNjA2NwpJbnB1dHMvb3V0cHV0czogU2l4IHBoeXNpY2FsIGlucHV0cy4gMS02IGFyZSBjb21wb3NpdGUsCgkJMS0yLCAzLTQsIDUtNiBkb3VibGVzIGFzIFMtdmlkZW8sCgkJMS0zIHRyaXBsZXMgYXMgY29tcG9uZW50LgoJCU9uZSBjb21wb3NpdGUgb3V0cHV0LgpOb3JtczogUEFMLCBTRUNBTSAoNzIweDU3NiBAIDI1IGZwcyksIE5UU0MgKDcyMHg0ODAgQCAyOS45NyBmcHMpCkNhcmQgbnVtYmVyOiA4Ck5vdCBhdXRvZGV0ZWN0ZWQsIGNhcmQ9OCBpcyBuZWNlc3NhcnkuCgpMaW51eCBNZWRpYSBMYWJzIExNTDMzOgoqIFpvcmFuIHpyMzYwNjcgUENJIGNvbnRyb2xsZXIKKiBab3JhbiB6cjM2MDYwIE1KUEVHIGNvZGVjCiogQnJvb2t0cmVlIGJ0ODE5IFRWIGRlY29kZXIKKiBCcm9va3RyZWUgYnQ4NTYgVFYgZW5jb2RlcgpEcml2ZXJzIHRvIHVzZTogdmlkZW9kZXYsIGkyYy1jb3JlLCBpMmMtYWxnby1iaXQsCgkJdmlkZW9jb2RlYywgYnQ4MTksIGJ0ODU2LCB6cjM2MDYwLCB6cjM2MDY3CklucHV0cy9vdXRwdXRzOiBDb21wb3NpdGUgYW5kIFMtdmlkZW8KTm9ybXM6IFBBTCAoNzIweDU3NiBAIDI1IGZwcyksIE5UU0MgKDcyMHg0ODAgQCAyOS45NyBmcHMpCkNhcmQgbnVtYmVyOiA1CgpMaW51eCBNZWRpYSBMYWJzIExNTDMzUjEwOgoqIFpvcmFuIHpyMzYwNjcgUENJIGNvbnRyb2xsZXIKKiBab3JhbiB6cjM2MDYwIE1KUEVHIGNvZGVjCiogUGhpbGlwcyBzYWE3MTE0IFRWIGRlY29kZXIKKiBBbmFsb2cgRGV2aWNlcyBhZHY3MTcwIFRWIGVuY29kZXIKRHJpdmVycyB0byB1c2U6IHZpZGVvZGV2LCBpMmMtY29yZSwgaTJjLWFsZ28tYml0LAoJCXZpZGVvY29kZWMsIHNhYTcxMTQsIGFkdjcxNzAsIHpyMzYwNjAsIHpyMzYwNjcKSW5wdXRzL291dHB1dHM6IENvbXBvc2l0ZSBhbmQgUy12aWRlbwpOb3JtczogUEFMICg3MjB4NTc2IEAgMjUgZnBzKSwgTlRTQyAoNzIweDQ4MCBAIDI5Ljk3IGZwcykKQ2FyZCBudW1iZXI6IDYKClBpbm5hY2xlL01pcm8gREMxMChuZXcpOgoqIFpvcmFuIHpyMzYwNTcgUENJIGNvbnRyb2xsZXIKKiBab3JhbiB6cjM2MDYwIE1KUEVHIGNvZGVjCiogUGhpbGlwcyBzYWE3MTEwYSBUViBkZWNvZGVyCiogQW5hbG9nIERldmljZXMgYWR2NzE3NiBUViBlbmNvZGVyCkRyaXZlcnMgdG8gdXNlOiB2aWRlb2RldiwgaTJjLWNvcmUsIGkyYy1hbGdvLWJpdCwKCQl2aWRlb2NvZGVjLCBzYWE3MTEwLCBhZHY3MTc1LCB6cjM2MDYwLCB6cjM2MDY3CklucHV0cy9vdXRwdXRzOiBDb21wb3NpdGUsIFMtdmlkZW8gYW5kIEludGVybmFsCk5vcm1zOiBQQUwsIFNFQ0FNICg3Njh4NTc2IEAgMjUgZnBzKSwgTlRTQyAoNjQweDQ4MCBAIDI5Ljk3IGZwcykKQ2FyZCBudW1iZXI6IDEKClBpbm5hY2xlL01pcm8gREMxMCs6CiogWm9yYW4genIzNjA2NyBQQ0kgY29udHJvbGxlcgoqIFpvcmFuIHpyMzYwNjAgTUpQRUcgY29kZWMKKiBQaGlsaXBzIHNhYTcxMTBhIFRWIGRlY29kZXIKKiBBbmFsb2cgRGV2aWNlcyBhZHY3MTc2IFRWIGVuY29kZXIKRHJpdmVycyB0byB1c2U6IHZpZGVvZGV2LCBpMmMtY29yZSwgaTJjLWFsZ28tYml0LAoJCXZpZGVvY29kZWMsIHNhNzExMCwgYWR2NzE3NSwgenIzNjA2MCwgenIzNjA2NwpJbnB1dHMvb3V0cHV0czogQ29tcG9zaXRlLCBTLXZpZGVvIGFuZCBJbnRlcm5hbApOb3JtczogUEFMLCBTRUNBTSAoNzY4eDU3NiBAIDI1IGZwcyksIE5UU0MgKDY0MHg0ODAgQCAyOS45NyBmcHMpCkNhcmQgbnVtYmVyOiAyCgpQaW5uYWNsZS9NaXJvIERDMTAob2xkKTogKgoqIFpvcmFuIHpyMzYwNTcgUENJIGNvbnRyb2xsZXIKKiBab3JhbiB6cjM2MDUwIE1KUEVHIGNvZGVjCiogWm9yYW4genIzNjAxNiBWaWRlbyBGcm9udCBFbmQgb3IgRnVqaSBtZDAyMTEgVmlkZW8gRnJvbnQgRW5kIChjbG9uZT8pCiogTWljcm9uYXMgdnB4MzIyMGEgVFYgZGVjb2RlcgoqIG1zZTMwMDAgVFYgZW5jb2RlciBvciBBbmFsb2cgRGV2aWNlcyBhZHY3MTc2IFRWIGVuY29kZXIgKgpEcml2ZXJzIHRvIHVzZTogdmlkZW9kZXYsIGkyYy1jb3JlLCBpMmMtYWxnby1iaXQsCgkJdmlkZW9jb2RlYywgdnB4MzIyMCwgbXNlMzAwMC9hZHY3MTc1LCB6cjM2MDUwLCB6cjM2MDE2LCB6cjM2MDY3CklucHV0cy9vdXRwdXRzOiBDb21wb3NpdGUsIFMtdmlkZW8gYW5kIEludGVybmFsCk5vcm1zOiBQQUwsIFNFQ0FNICg3Njh4NTc2IEAgMjUgZnBzKSwgTlRTQyAoNjQweDQ4MCBAIDI5Ljk3IGZwcykKQ2FyZCBudW1iZXI6IDAKClBpbm5hY2xlL01pcm8gREMzMDogKgoqIFpvcmFuIHpyMzYwNTcgUENJIGNvbnRyb2xsZXIKKiBab3JhbiB6cjM2MDUwIE1KUEVHIGNvZGVjCiogWm9yYW4genIzNjAxNiBWaWRlbyBGcm9udCBFbmQKKiBNaWNyb25hcyB2cHgzMjI1ZC92cHgzMjIwYS92cHgzMjE2YiBUViBkZWNvZGVyCiogQW5hbG9nIERldmljZXMgYWR2NzE3NiBUViBlbmNvZGVyCkRyaXZlcnMgdG8gdXNlOiB2aWRlb2RldiwgaTJjLWNvcmUsIGkyYy1hbGdvLWJpdCwKCQl2aWRlb2NvZGVjLCB2cHgzMjIwL3ZweDMyMjQsIGFkdjcxNzUsIHpyMzYwNTAsIHpyMzYwMTYsIHpyMzYwNjcKSW5wdXRzL291dHB1dHM6IENvbXBvc2l0ZSwgUy12aWRlbyBhbmQgSW50ZXJuYWwKTm9ybXM6IFBBTCwgU0VDQU0gKDc2OHg1NzYgQCAyNSBmcHMpLCBOVFNDICg2NDB4NDgwIEAgMjkuOTcgZnBzKQpDYXJkIG51bWJlcjogMwoKUGlubmFjbGUvTWlybyBEQzMwKzogKgoqIFpvcmFuIHpyMzYwNjcgUENJIGNvbnRyb2xsZXIKKiBab3JhbiB6cjM2MDUwIE1KUEVHIGNvZGVjCiogWm9yYW4genIzNjAxNiBWaWRlbyBGcm9udCBFbmQKKiBNaWNyb25hcyB2cHgzMjI1ZC92cHgzMjIwYS92cHgzMjE2YiBUViBkZWNvZGVyCiogQW5hbG9nIERldmljZXMgYWR2NzE3NiBUViBlbmNvZGVyCkRyaXZlcnMgdG8gdXNlOiB2aWRlb2RldiwgaTJjLWNvcmUsIGkyYy1hbGdvLWJpdCwKCQl2aWRlb2NvZGVjLCB2cHgzMjIwL3ZweDMyMjQsIGFkdjcxNzUsIHpyMzYwNTAsIHpyMzYwMTUsIHpyMzYwNjcKSW5wdXRzL291dHB1dHM6IENvbXBvc2l0ZSwgUy12aWRlbyBhbmQgSW50ZXJuYWwKTm9ybXM6IFBBTCwgU0VDQU0gKDc2OHg1NzYgQCAyNSBmcHMpLCBOVFNDICg2NDB4NDgwIEAgMjkuOTcgZnBzKQpDYXJkIG51bWJlcjogNAoKTm90ZTogTm8gbW9kdWxlIGZvciB0aGUgbXNlMzAwMCBpcyBhdmFpbGFibGUgeWV0Ck5vdGU6IE5vIG1vZHVsZSBmb3IgdGhlIHZweDMyMjQgaXMgYXZhaWxhYmxlIHlldApOb3RlOiB1c2UgZW5jb2Rlcj1YIG9yIGRlY29kZXI9WCBmb3Igbm9uLWRlZmF1bHQgaTJjIGNoaXBzIChzZWUgaTJjLWlkLmgpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KCjEuMSBXaGF0IHRoZSBUViBkZWNvZGVyIGNhbiBkbyBhbiB3aGF0IG5vdAoKVGhlIGJlc3Qga25vdyBUViBzdGFuZGFyZHMgYXJlIE5UU0MvUEFML1NFQ0FNLiBidXQgZm9yIGRlY29kaW5nIGEgZnJhbWUgdGhhdAppbmZvcm1hdGlvbiBpcyBub3QgZW5vdWdoLiBUaGVyZSBhcmUgc2V2ZXJhbCBmb3JtYXRzIG9mIHRoZSBUViBzdGFuZGFyZHMuCkFuZCBub3QgZXZlcnkgVFYgZGVjb2RlciBpcyBhYmxlIHRvIGhhbmRsZSBldmVyeSBmb3JtYXQuIEFsc28gdGhlIGV2ZXJ5CmNvbWJpbmF0aW9uIGlzIHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyLiBUaGVyZSBhcmUgY3VycmVudGx5IDExIGRpZmZlcmVudAp0diBicm9hZGNhc3QgZm9ybWF0cyBhbGwgYXZlciB0aGUgd29ybGQuCgpUaGUgQ0NJUiBkZWZpbmVzIHBhcmFtZXRlcnMgbmVlZGVkIGZvciBicm9hZGNhc3RpbmcgdGhlIHNpZ25hbC4KVGhlIENDSVIgaGFzIGRlZmluZWQgZGlmZmVyZW50IHN0YW5kYXJkczogQSxCLEQsRSxGLEcsRCxILEksSyxLMSxMLE0sTiwuLi4KVGhlIENDSVIgc2F5cyBub3QgbXVjaCBhYm91dCBhYm91dCB0aGUgY29sb3JzeXN0ZW0gdXNlZCAhISEKQW5kIHRhbGtpbmcgYWJvdXQgYSBjb2xvcnN5c3RlbSBzYXlzIG5vdCB0byBtdWNoIGFib3V0IGhvdyBpdCBpcyBicm9hZGNhc3QuCgpUaGUgQ0NJUiBzdGFuZGFyZHMgQSxFLEYgYXJlIG5vdCB1c2VkIGFueSBtb3JlLgoKV2hlbiB5b3Ugc3BlYWsgYWJvdXQgTlRTQywgeW91IHVzdWFsbHkgbWVhbiB0aGUgc3RhbmRhcmQ6IENDSVIgLSBNIHVzaW5nCnRoZSBOVFNDIGNvbG9yc3lzdGVtIHdoaWNoIGlzIHVzZWQgaW4gdGhlIFVTQSwgSmFwYW4sIE1leGljbywgQ2FuYWRhCmFuZCBhIGZldyBvdGhlcnMuCgpXaGVuIHlvdSB0YWxrIGFib3V0IFBBTCwgeW91IHVzdWFsbHkgbWVhbjogQ0NJUiAtIEIvRyB1c2luZyB0aGUgUEFMCmNvbG9yc3lzdGVtIHdoaWNoIGlzIHVzZWQgaW4gbWFueSBDb3VudHJpZXMuCgpXaGVuIHlvdSB0YWxrIGFib3V0IFNFQ0FNLCB5b3UgbWVhbjogQ0NJUiAtIEwgdXNpbmcgdGhlIFNFQ0FNIENvbG9yc3lzdGVtCndoaWNoIGlzIHVzZWQgaW4gRnJhbmNlLCBhbmQgYSBmZXcgb3RoZXJzLgoKVGhlcmUgdGhlIG90aGVyIHZlcnNpb24gb2YgU0VDQU0sIENDSVIgLSBEL0sgaXMgdXNlZCBpbiBCdWxnYXJpYSwgQ2hpbmEsClNsb3Zha2FpLCBIdW5nYXJ5LCBLb3JlYSAoUmVwLiksIFBvbGFuZCwgUnVtYW5pYSBhbmQgYSBvdGhlcnMuCgpUaGUgQ0NJUiAtIEggdXNlcyB0aGUgUEFMIGNvbG9yc3lzdGVtIChzb21ldGltZXMgU0VDQU0pIGFuZCBpcyB1c2VkIGluCkVneXB0LCBMaWJ5YSwgU3JpIExhbmthLCBTeXJhaW4gQXJhYi4gUmVwLgoKVGhlIENDSVIgLSBJIHVzZXMgdGhlIFBBTCBjb2xvcnN5c3RlbSwgYW5kIGlzIHVzZWQgaW4gR3JlYXQgQnJpdGFpbiwgSG9uZyBLb25nLApJcmVsYW5kLCBOaWdlcmlhLCBTb3V0aCBBZnJpY2EuCgpUaGUgQ0NJUiAtIE4gdXNlcyB0aGUgUEFMIGNvbG9yc3lzdGVtIGFuZCBQQUwgZnJhbWUgc2l6ZSBidXQgdGhlIE5UU0MgZnJhbWVyYXRlLAphbmQgaXMgdXNlZCBpbiBBcmdlbnRpbmlhLCBVcnVndWF5LCBhbiBhIGZldyBvdGhlcnMKCldlIGRvIG5vdCB0YWxrIGFib3V0IGhvdyB0aGUgYXVkaW8gaXMgYnJvYWRjYXN0ICEKCkEgcmF0aGVyIGdvb2Qgc2l0ZXMgYWJvdXQgdGhlIFRWIHN0YW5kYXJkcyBhcmU6Cmh0dHA6Ly93d3cuc29ueS5qcC9TZXJ2aWNlQXJlYS9Wb2x0YWdlX21hcC8KaHR0cDovL2luZm8uZWxlY3Ryb25pY3dlcmtzdGF0dC5kZS9iZXJlaWNoZS9mZXJuc2VodGVjaG5pay9mcmVxdWVuemVuX3VuZF9ub3JtZW4vRmVybnNlaG5vcm1lbi8KYW5kIGh0dHA6Ly93d3cuY2FibC5jb20vcmVzdGF1cmFudC9jaGFubmVsLmh0bWwKCk90aGVyIHdlaXJkIHRoaW5ncyBhcm91bmQ6IE5UU0MgNC40MyBpcyBhIG1vZGlmaWNhdGVkIE5UU0MsIHdoaWNoIGlzIG1haW5seQp1c2VkIGluIFBBTCBWQ1IncyB0aGF0IGFyZSBhYmxlIHRvIHBsYXkgYmFjayBOVFNDLiBQQUwgNjAgc2VlbXMgdG8gYmUgdGhlIHNhbWUKYXMgTlRTQyA0LjQzIC4gVGhlIERhdGFzaGVldHMgYWxzbyB0YWxrIGFib3V0IE5UU0MgNDQsIEl0IHNlZW1zIGFzIGlmIGl0IHdvdWxkCmJlIHRoZSBzYW1lIGFzIE5UU0MgNC40My4KTlRTQyBDb21icyBzZWVtcyB0byBiZSBhIGRlY29kZXIgbW9kZSB3aGVyZSB0aGUgZGVjb2RlciB1c2VzIGEgY29tYiBmaWx0ZXIKdG8gc3BsaXQgY29tYSBhbmQgbHVtYSBpbnN0ZWFkIG9mIGEgRGVsYXkgbGluZS4KCkJ1dCBJIGRpZCBub3QgZGVmaWFudGx5IGZpbmQgb3V0IHdoYXQgTlRTQyBDb21iIGlzLgoKUGhpbGlwcyBzYWE3MTExIFRWIGRlY29kZXIKd2FzIGludHJvZHVjZWQgaW4gMTk5NywgaXMgdXNlZCBpbiB0aGUgQlVaIGFuZApjYW4gaGFuZGxlOiBQQUwgQi9HL0gvSSwgUEFMIE4sIFBBTCBNLCBOVFNDIE0sIE5UU0MgTiwgTlRTQyA0LjQzIGFuZCBTRUNBTQoKUGhpbGlwcyBzYWE3MTEwYSBUViBkZWNvZGVyCndhcyBpbnRyb2R1Y2VkIGluIDE5OTUsIGlzIHVzZWQgaW4gdGhlIFBpbm5hY2xlL01pcm8gREMxMChuZXcpLCBEQzEwKyBhbmQKY2FuIGhhbmRsZTogUEFMIEIvRywgTlRTQyBNIGFuZCBTRUNBTQoKUGhpbGlwcyBzYWE3MTE0IFRWIGRlY29kZXIKd2FzIGludHJvZHVjZWQgaW4gMjAwMCwgaXMgdXNlZCBpbiB0aGUgTE1MMzNSMTAgYW5kCmNhbiBoYW5kbGU6IFBBTCBCL0cvRC9IL0kvTiwgUEFMIE4sIFBBTCBNLCBOVFNDIE0sIE5UU0MgNC40MyBhbmQgU0VDQU0KCkJyb29rdHJlZSBidDgxOSBUViBkZWNvZGVyCndhcyBpbnRyb2R1Y2VkIGluIDE5OTYsIGFuZCBpcyB1c2VkIGluIHRoZSBMTUwzMyBhbmQKY2FuIGhhbmRsZTogUEFMIEIvRC9HL0gvSSwgTlRTQyBNCgpNaWNyb25hcyB2cHgzMjIwYSBUViBkZWNvZGVyCndhcyBpbnRyb2R1Y2VkIGluIDE5OTYsIGlzIHVzZWQgaW4gdGhlIERDMzAgYW5kIERDMzArIGFuZApjYW4gaGFuZGxlOiBQQUwgQi9HL0gvSSwgUEFMIE4sIFBBTCBNLCBOVFNDIE0sIE5UU0MgNDQsIFBBTCA2MCwgU0VDQU0sTlRTQyBDb21iCgpTYW1zdW5nIGtzMDEyNyBUViBkZWNvZGVyCmlzIHVzZWQgaW4gdGhlIEFWUzZFWUVTIGNhcmQgYW5kCmNhbiBoYW5kbGU6IE5UU0MtTS9OLzQ0LCBQQUwtTS9OL0IvRy9IL0kvRC9LL0wgYW5kIFNFQ0FNCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KCjEuMiBXaGF0IHRoZSBUViBlbmNvZGVyIGNhbiBkbyBhbiB3aGF0IG5vdAoKVGhlIFRWIGVuY29kZXIgYXJlIGRvaW5nIHRoZSAic2FtZSIgYXMgdGhlIGRlY29kZXIsIGJ1dCBpbiB0aGUgb2RlciBkaXJlY3Rpb24uCllvdSBmZWVkIHRoZW0gZGlnaXRhbCBkYXRhIGFuZCB0aGUgZ2VuZXJhdGUgYSBDb21wb3NpdGUgb3IgU1ZIUyBzaWduYWwuCkZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29sb3JzeXN0ZW1zIGFuZCBUViBub3JtIHRha2UgYSBsb29rIGluIHRoZQpUViBkZWNvZGVyIHNlY3Rpb24uCgpQaGlsaXBzIHNhYTcxODUgVFYgRW5jb2Rlcgp3YXMgaW50cm9kdWNlZCBpbiAxOTk2LCBpcyB1c2VkIGluIHRoZSBCVVoKY2FuIGdlbmVyYXRlOiBQQUwgQi9HLCBOVFNDIE0KCkJyb29rdHJlZSBidDg1NiBUViBFbmNvZGVyCndhcyBpbnRyb2R1Y2VkIGluIDE5OTQsIGlzIHVzZWQgaW4gdGhlIExNTDMzCmNhbiBnZW5lcmF0ZTogUEFMIEIvRC9HL0gvSS9OLCBQQUwgTSwgTlRTQyBNLCBQQUwtTiAoQXJnZW50aW5hKQoKQW5hbG9nIERldmljZXMgYWR2NzE3MCBUViBFbmNvZGVyCndhcyBpbnRyb2R1Y2VkIGluIDIwMDAsIGlzIHVzZWQgaW4gdGhlIExNTDMwMFIxMApjYW4gZ2VuZXJhdGU6IFBBTCBCL0QvRy9IL0kvTiwgUEFMIE0sIE5UU0MgTSwgUEFMIDYwCgpBbmFsb2cgRGV2aWNlcyBhZHY3MTc1IFRWIEVuY29kZXIKd2FzIGludHJvZHVjZWQgaW4gMTk5NiwgaXMgdXNlZCBpbiB0aGUgREMxMCwgREMxMCssIERDMTAgb2xkLCBEQzMwLCBEQzMwKwpjYW4gZ2VuZXJhdGU6IFBBTCBCL0QvRy9IL0kvTiwgUEFMIE0sIE5UU0MgTQoKSVRUIG1zZTMwMDAgVFYgZW5jb2Rlcgp3YXMgaW50cm9kdWNlZCBpbiAxOTkxLCBpcyB1c2VkIGluIHRoZSBEQzEwIG9sZApjYW4gZ2VuZXJhdGU6IFBBTCAsIE5UU0MgLCBTRUNBTQoKQ29uZXhhbnQgYnQ4NjYgVFYgZW5jb2RlcgppcyB1c2VkIGluIEFWUzZFWUVTLCBhbmQKY2FuIGdlbmVyYXRlOiBOVFNDL1BBTCwgUEFMrU0sIFBBTK1OCgpUaGUgYWR2NzE3eCwgc2hvdWxkIGJlIGFibGUgdG8gcHJvZHVjZSBQQUwgTi4gQnV0IHlvdSBmaW5kIG5vdGhpbmcgUEFMIE4Kc3BlY2lmaWMgaW4gdGhlIHJlZ2lzdGVycy4gU2VlbSB0aGF0IHlvdSBoYXZlIHRvIHJldXNlIGEgb3RoZXIgc3RhbmRhcmQKdG8gZ2VuZXJhdGUgUEFMIE4sIG1heWJlIGl0IHdvdWxkIHdvcmsgaWYgeW91IHVzZSB0aGUgUEFMIE0gc2V0dGluZ3MuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PQoKMi4gSG93IGRvIEkgZ2V0IHRoaXMgZGFtbiB0aGluZyB0byB3b3JrCgpMb2FkIHpyMzYwNjcuby4gSWYgaXQgY2FuJ3QgYXV0b2RldGVjdCB5b3VyIGNhcmQsIHVzZSB0aGUgY2FyZD1YIGluc21vZApvcHRpb24gd2l0aCBYIGJlaW5nIHRoZSBjYXJkIG51bWJlciBhcyBnaXZlbiBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbi4KVG8gaGF2ZSBtb3JlIHRoYW4gb25lIGNhcmQsIHVzZSBjYXJkPVgxWyxYMlssWDMsW1g0Wy4uXV1dXQoKVG8gYXV0b21hdGUgdGhpcywgYWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciAvZXRjL21vZHByb2JlLmNvbmY6CgpvcHRpb25zIHpyMzYwNjcgY2FyZD1YMVssWDJbLFgzWyxYNFsuLl1dXV0KYWxpYXMgY2hhci1tYWpvci04MS0wIHpyMzYwNjcKCk9uZSB0aGluZyB0byBrZWVwIGluIG1pbmQgaXMgdGhhdCB0aGlzIGRvZXNuJ3QgbG9hZCB6cjM2MDY3Lm8gaXRzZWxmIHlldC4gSXQKanVzdCBhdXRvbWF0ZXMgbG9hZGluZy4gSWYgeW91IHN0YXJ0IHVzaW5nIHhhd3R2LCB0aGUgZGV2aWNlIHdvbid0IGxvYWQgb24Kc29tZSBzeXN0ZW1zLCBzaW5jZSB5b3UncmUgdHJ5aW5nIHRvIGxvYWQgbW9kdWxlcyBhcyBhIHVzZXIsIHdoaWNoIGlzIG5vdAphbGxvd2VkICgicGVybWlzc2lvbiBkZW5pZWQiKS4gQSBxdWljayB3b3JrYXJvdW5kIGlzIHRvIGFkZCAnTG9hZCAidjRsIicgdG8KWEY4NkNvbmZpZy00IHdoZW4geW91IHVzZSBYIGJ5IGRlZmF1bHQsIG9yIHRvIHJ1biAndjRsLWNvbmYgLWMgPGRldmljZT4nIGluCm9uZSBvZiB5b3VyIHN0YXJ0dXAgc2NyaXB0cyAobm9ybWFsbHkgcmMubG9jYWwpIGlmIHlvdSBkb24ndCB1c2UgWC4gQm90aAptYWtlIHN1cmUgdGhhdCB0aGUgbW9kdWxlcyBhcmUgbG9hZGVkIG9uIHN0YXJ0dXAsIHVuZGVyIHRoZSByb290IGFjY291bnQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KCjMuIFdoYXQgbWFpbmJvYXJkIHNob3VsZCBJIHVzZSAob3Igd2h5IGRvZXNuJ3QgbXkgY2FyZCB3b3JrKQoKPGluc2VydCBsb3VzeSBkaXNjbGFpbWVyIGhlcmU+LiBJbiBzaG9ydDogZ29vZD1TaVMvSW50ZWwsIGJhZD1WSUEuCgpFeHBlcmllbmNlIHRlbGxzIHVzIHRoYXQgcGVvcGxlIHdpdGggYSBCdXosIG9uIGF2ZXJhZ2UsIGhhdmUgbW9yZSBwcm9ibGVtcwp0aGFuIHVzZXJzIHdpdGggYSBEQzEwKy9MTUwzMy4gQWxzbywgaXQgdGVsbHMgdXMgdGhhdCBwZW9wbGUgb3duaW5nIGEgVklBLQpiYXNlZCBtYWluYm9hcmQgKGt0WFhYLCBNVlAzKSBoYXZlIG1vcmUgcHJvYmxlbXMgdGhhbiB1c2VycyB3aXRoIGEgbWFpbmJvYXJkCmJhc2VkIG9uIGEgZGlmZmVyZW50IGNoaXBzZXQuIEhlcmUncyBzb21lIG5vdGVzIGZyb20gQW5kcmV3IFN0ZXZlbnM6Ci0tCkhlcmUncyBteSBleHBlcmllbmNlIG9mIHVzaW5nIExNTDMzIGFuZCBCdXogb24gdmFyaW91cyBtb3RoZXJib2FyZHM6CgpWSUEgTVZQMwoJRm9yZ2V0IGl0LiBQb2ludGxlc3MuIERvZXNuJ3Qgd29yay4KSW50ZWwgNDMwRlggKFBlbnRpdW0gMjAwKQoJTE1MMzMgcGVyZmVjdCwgQnV6IHRvbGVyYWJsZSAoMyBvciA0IGZyYW1lcyBkcm9wcGVkIHBlciBtb3ZpZSkKSW50ZWwgNDQwQlggKGVhcmx5IHN0ZXBwaW5nKQoJTE1MMzMgdG9sZXJhYmxlLiBCdXogc3RhcnRpbmcgdG8gZ2V0IGFubm95aW5nICg2LTEwIGZyYW1lcy9ob3VyKQpJbnRlbCA0NDBCWCAobGF0ZSBzdGVwcGluZykKCUJ1eiB0b2xlcmFibGUsIExNTDMgYWxtb3N0IHBlcmZlY3QgKG9jY2FzaW9uYWwgc2luZ2xlIGZyYW1lIGRyb3BzKQpTaVM3MzUKCUxNTDMzIHBlcmZlY3QsIEJ1eiB0b2xlcmFibGUuClZJQSBLVDEzMygqKQoJTE1MMzMgc3RhcnRpbmcgdG8gZ2V0IGFubm95aW5nLCBCdXogcG9vciBlbm91Z2ggdGhhdCBJIGhhdmUgdXAuCgpCb3RoIDQ0MEJYIGJvYXJkcyB3ZXJlIGR1YWwgQ1BVIHZlcnNpb25zLgotLQpCZXJuaGFyZCBQcmFzY2hpbmdlciBsYXRlciBhZGRlZDoKLS0KQU1EIDc1MQoJQnV6IHBlcmZlY3QtdG9sZXJhYmxlCkFNRCA3NjAKCUJ1eiBwZXJmZWN0LXRvbGVyYWJsZQotLQpJbiBnZW5lcmFsLCBwZW9wbGUgb24gdGhlIHVzZXIgbWFpbGluZ2xpc3Qgd29uJ3QgZ2l2ZSB5b3UgbXVjaCBvZiBhIGNoYW5jZQppZiB5b3UgaGF2ZSBhIFZJQS1iYXNlZCBtb3RoZXJib2FyZC4gVGhleSBtYXkgYmUgY2hlYXAsIGJ1dCBzb21ldGltZXMsIHlvdSdkCnJhdGhlciB3YW50IHRvIHNwZW5kIHNvbWUgbW9yZSBtb25leSBvbiBiZXR0ZXIgYm9hcmRzLiBJbiBnZW5lcmFsLCBWSUEKbWFpbmJvYXJkJ3MgSURFL1BDSSBwZXJmb3JtYW5jZSB3aWxsIGFsc28gc3VjayBiYWRseSBjb21wYXJlZCB0byBvdGhlcnMuCllvdSdsbCBub3RpY2VkIHRoZSBEQzEwKy9EQzMwKyBhcmVuJ3QgbWVudGlvbmVkIGFueXdoZXJlIGluIHRoZSBvdmVydmlldy4KQmFzaWNhbGx5LCB5b3UgY2FuIGFzc3VtZSB0aGF0IGlmIHRoZSBCdXogd29ya3MsIHRoZSBMTUwzMyB3aWxsIHdvcmsgdG9vLiBJZgp0aGUgTE1MMzMgd29ya3MsIHRoZSBEQzEwKy9EQzMwKyB3aWxsIHdvcmsgdG9vLiBUaGV5J3JlIG1vc3QgdG9sZXJhbnQgdG8KZGlmZmVyZW50IG1haW5ib2FyZCBjaGlwc2V0cyBmcm9tIGFsbCBvZiB0aGUgc3VwcG9ydGVkIGNhcmRzLgoKSWYgeW91IGV4cGVyaWVuY2UgdGltZW91dHMgZHVyaW5nIGNhcHR1cmUsIGJ1eSBhIGJldHRlciBtYWluYm9hcmQgb3IgbG93ZXIKdGhlIHF1YWxpdHkvYnVmZmVyc2l6ZSBkdXJpbmcgY2FwdHVyZSAoc2VlICdDb25jZXJuaW5nIGJ1ZmZlciBzaXplcywgcXVhbGl0eSwKb3V0cHV0IHNpemUgZXRjLicpLiBJZiBpdCBoYW5ncywgdGhlcmUncyBsaXR0bGUgd2UgY2FuIGRvIGFzIG9mIG5vdy4gQ2hlY2sKeW91ciBJUlFzIGFuZCBtYWtlIHN1cmUgdGhlIGNhcmQgaGFzIGl0cyBvd24gaW50ZXJydXB0cy4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PQoKNC4gUHJvZ3JhbW1pbmcgaW50ZXJmYWNlCgpUaGlzIGRyaXZlciBjb25mb3JtcyB0byB2aWRlbzRsaW51eCBhbmQgdmlkZW80bGludXgyLCBib3RoIGNhbiBiZSB1c2VkIHRvCnVzZSB0aGUgZHJpdmVyLiBTaW5jZSB2aWRlbzRsaW51eCBkaWRuJ3QgcHJvdmlkZSBhZGVxdWF0ZSBjYWxscyB0byBmdWxseQp1c2UgdGhlIGNhcmRzJyBmZWF0dXJlcywgd2UndmUgaW50cm9kdWNlZCBzZXZlcmFsIHByb2dyYW1taW5nIGV4dGVuc2lvbnMsCndoaWNoIGFyZSBjdXJyZW50bHkgb2ZmaWNpYWxseSBhY2NlcHRlZCBpbiB0aGUgMi40LnggYnJhbmNoIG9mIHRoZSBrZXJuZWwuClRoZXNlIGV4dGVuc2lvbnMgYXJlIGtub3duIGFzIHRoZSB2NGwvbWpwZWcgZXh0ZW5zaW9ucy4gU2VlIHpvcmFuLmggZm9yCmRldGFpbHMgKHN0cnVjdHMvaW9jdGxzKS4KCkluZm9ybWF0aW9uIC0gdmlkZW80bGludXg6Cmh0dHA6Ly9yb2FkcnVubmVyLnN3YW5zZWEubGludXgub3JnLnVrL3Y0bGFwaS5zaHRtbApEb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0FQSS5odG1sCi91c3IvaW5jbHVkZS9saW51eC92aWRlb2Rldi5oCgpJbmZvcm1hdGlvbiAtIHZpZGVvNGxpbnV4L21qcGVnIGV4dGVuc2lvbnM6Ci4vem9yYW4uaAooYWxzbyBzZWUgYmVsb3cpCgpJbmZvcm1hdGlvbiAtIHZpZGVvNGxpbnV4MjoKaHR0cDovL3d3dy50aGVkaXJrcy5vcmcvdjRsMi8KL3Vzci9pbmNsdWRlL2xpbnV4L3ZpZGVvZGV2Mi5oCmh0dHA6Ly93d3cuYnl0ZXNleC5vcmcvdjRsLwoKTW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgdmlkZW80bGludXgvbWpwZWcgZXh0ZW5zaW9ucywgYnkgU2VyZ3VlaQpNaXJpZG9ub3ZpIGFuZCBSYWluZXIgSm9oYW5uaToKLS0KVGhlIGlvY3RscyBmb3IgdGhhdCBpbnRlcmZhY2UgYXJlIGFzIGZvbGxvd3M6CgpCVVpJT0NfR19QQVJBTVMKQlVaSU9DX1NfUEFSQU1TCgpHZXQgYW5kIHNldCB0aGUgcGFyYW1ldGVycyBvZiB0aGUgYnV6LiBUaGUgdXNlciBzaG91bGQgYWx3YXlzIGRvIGEKQlVaSU9DX0dfUEFSQU1TICh3aXRoIGEgc3RydWN0IGJ1el9wYXJhbXMpIHRvIG9idGFpbiB0aGUgZGVmYXVsdApzZXR0aW5ncywgY2hhbmdlIHdoYXQgaGUgbGlrZXMgYW5kIHRoZW4gbWFrZSBhIEJVWklPQ19TX1BBUkFNUyBjYWxsLgoKQlVaSU9DX1JFUUJVRlMKCkJlZm9yZSBiZWluZyBhYmxlIHRvIGNhcHR1cmUvcGxheWJhY2ssIHRoZSB1c2VyIGhhcyB0byByZXF1ZXN0CnRoZSBidWZmZXJzIGhlIGlzIHdhbnRpbmcgdG8gdXNlLiBGaWxsIHRoZSBzdHJ1Y3R1cmUKem9yYW5fcmVxdWVzdGJ1ZmZlcnMgd2l0aCB0aGUgc2l6ZSAocmVjb21tZW5kZWQ6IDI1NioxMDI0KSBhbmQKdGhlIG51bWJlciAocmVjb21tZW5kZWQgMzIgdXAgdG8gMjU2KS4gVGhlcmUgYXJlIG5vIHN1Y2ggcmVzdHJpY3Rpb25zCmFzIGZvciB0aGUgVmlkZW8gZm9yIExpbnV4IGJ1ZmZlcnMsIHlvdSBzaG91bGQgTEVBVkUgU1VGRklDSUVOVApNRU1PUlkgZm9yIHlvdXIgc3lzdGVtIGhvd2V2ZXIsIGVsc2Ugc3RyYW5nZSB0aGluZ3Mgd2lsbCBoYXBwZW4gLi4uLgpPbiByZXR1cm4sIHRoZSB6b3Jhbl9yZXF1ZXN0YnVmZmVycyBzdHJ1Y3R1cmUgY29udGFpbnMgbnVtYmVyIGFuZApzaXplIG9mIHRoZSBhY3R1YWxseSBhbGxvY2F0ZWQgYnVmZmVycy4KWW91IHNob3VsZCB1c2UgdGhlc2UgbnVtYmVycyBmb3IgZG9pbmcgYSBtbWFwIG9mIHRoZSBidWZmZXJzCmludG8gdGhlIHVzZXIgc3BhY2UuClRoZSBCVVpJT0NfUkVRQlVGUyBpb2N0bCBhbHNvIG1ha2VzIGl0IGhhcHBlbiwgdGhhdCB0aGUgbmV4dCBtbWFwCm1hcHMgdGhlIE1KUEVHIGJ1ZmZlciBpbnN0ZWFkIG9mIHRoZSBWNEwgYnVmZmVycy4KCkJVWklPQ19RQlVGX0NBUFQKQlVaSU9DX1FCVUZfUExBWQoKUXVldWUgYSBidWZmZXIgZm9yIGNhcHR1cmUgb3IgcGxheWJhY2suIFRoZSBmaXJzdCBjYWxsIGFsc28gc3RhcnRzCnN0cmVhbWluZyBjYXB0dXJlLiBXaGVuIHN0cmVhbWluZyBjYXB0dXJlIGlzIGdvaW5nIG9uLCB5b3UgbWF5Cm9ubHkgcXVldWUgZnVydGhlciBidWZmZXJzIG9yIGlzc3VlIHN5bmNzIHVudGlsIHN0cmVhbWluZwpjYXB0dXJlIGlzIHN3aXRjaGVkIG9mZiBhZ2FpbiB3aXRoIGEgYXJndW1lbnQgb2YgLTEgdG8KYSBCVVpJT0NfUUJVRl9DQVBUL0JVWklPQ19RQlVGX1BMQVkgaW9jdGwuCgpCVVpJT0NfU1lOQwoKSXNzdWUgdGhpcyBpb2N0bCB3aGVuIGFsbCBidWZmZXJzIGFyZSBxdWV1ZWQuIFRoaXMgaW9jdGwgd2lsbApibG9jayB1bnRpbCB0aGUgZmlyc3QgYnVmZmVyIGJlY29tZXMgZnJlZSBmb3Igc2F2aW5nIGl0cwpkYXRhIHRvIGRpc2sgKGFmdGVyIEJVWklPQ19RQlVGX0NBUFQpIG9yIGZvciByZXVzZSAoYWZ0ZXIgQlVaSU9DX1FCVUZfUExBWSkuCgpCVVpJT0NfR19TVEFUVVMKCkdldCB0aGUgc3RhdHVzIG9mIHRoZSBpbnB1dCBsaW5lcyAodmlkZW8gc291cmNlIGNvbm5lY3RlZC9ub3JtKS4KCkZvciBwcm9ncmFtbWluZyBleGFtcGxlLCBwbGVhc2UsIGxvb2sgYXQgbGF2cmVjLmMgYW5kIGxhdnBsYXkuYyBjb2RlIGluCmxhdnRvb2xzLTEuMnAyIHBhY2thZ2UgKFVSTDogaHR0cDovL3d3dy5jaWNlc2UubXgvfm1pcnNldi9EQzEwcGx1cy8pCmFuZCB0aGUgJ2V4YW1wbGVzJyBkaXJlY3RvcnkgaW4gdGhlIG9yaWdpbmFsIEJ1eiBkcml2ZXIgZGlzdHJpYnV0aW9uLgoKQWRkaXRpb25hbCBub3RlcyBmb3Igc29mdHdhcmUgZGV2ZWxvcGVyczoKCiAgIFRoZSBkcml2ZXIgcmV0dXJucyBtYXh3aWR0aCBhbmQgbWF4aGVpZ2h0IHBhcmFtZXRlcnMgYWNjb3JkaW5nIHRvCiAgIHRoZSBjdXJyZW50IFRWIHN0YW5kYXJkIChub3JtKS4gVGhlcmVmb3JlLCB0aGUgc29mdHdhcmUgd2hpY2gKICAgY29tbXVuaWNhdGVzIHdpdGggdGhlIGRyaXZlciBhbmQgImFza3MiIGZvciB0aGVzZSBwYXJhbWV0ZXJzIHNob3VsZAogICBmaXJzdCBzZXQgdGhlIGNvcnJlY3Qgbm9ybS4gV2VsbCwgaXQgc2VlbXMgbG9naWNhbGx5IGNvcnJlY3Q6IFRWCiAgIHN0YW5kYXJkIGlzICJtb3JlIGNvbnN0YW50IiBmb3IgY3VycmVudCBjb3VudHJ5IHRoYW4gZ2VvbWV0cnkKICAgc2V0dGluZ3Mgb2YgYSB2YXJpZXR5IG9mIFRWIGNhcHR1cmUgY2FyZHMgd2hpY2ggbWF5IHdvcmsgaW4gSVRVIG9yCiAgIHNxdWFyZSBwaXhlbCBmb3JtYXQuIFJlbWVtYmVyIHRoYXQgdXNlcnMgbm93IGNhbiBsb2NrIHRoZSBub3JtIHRvCiAgIGF2b2lkIGFueSBhbWJpZ3VpdHkuCi0tClBsZWFzZSBub3RlIHRoYXQgbGF2cGxheS9sYXZyZWMgYXJlIGFsc28gaW5jbHVkZWQgaW4gdGhlIE1KUEVHLXRvb2xzCihodHRwOi8vbWpwZWcuc2YubmV0LykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KCjUuIEFwcGxpY2F0aW9ucwoKQXBwbGljYXRpb25zIGtub3duIHRvIHdvcmsgd2l0aCB0aGlzIGRyaXZlcjoKClRWIHZpZXdpbmc6CiogeGF3dHYKKiBrd2ludHYKKiBwcm9iYWJseSBhbnkgVFYgYXBwbGljYXRpb24gdGhhdCBzdXBwb3J0cyB2aWRlbzRsaW51eCBvciB2aWRlbzRsaW51eDIuCgpNSlBFRyBjYXB0dXJlL3BsYXliYWNrOgoqIG1qcGVndG9vbHMvbGF2dG9vbHMgKG9yIExpbnV4IFZpZGVvIFN0dWRpbykKKiBnc3RyZWFtZXIKKiBtcGxheWVyCgpHZW5lcmFsIHJhdyBjYXB0dXJlOgoqIHhhd3R2CiogZ3N0cmVhbWVyCiogcHJvYmFibHkgYW55IGFwcGxpY2F0aW9uIHRoYXQgc3VwcG9ydHMgdmlkZW80bGludXggb3IgdmlkZW80bGludXgyCgpWaWRlbyBlZGl0aW5nOgoqIENpbmVsZXJyYQoqIE1haW5BY3RvcgoqIG1qcGVndG9vbHMgKG9yIExpbnV4IFZpZGVvIFN0dWRpbykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PQoKNi4gQ29uY2VybmluZyBidWZmZXIgc2l6ZXMsIHF1YWxpdHksIG91dHB1dCBzaXplIGV0Yy4KClRoZSB6cjM2MDYwIGNhbiBkbyAxOjIgSlBFRyBjb21wcmVzc2lvbi4gVGhpcyBpcyByZWFsbHkgdGhlIHRoZW9yZXRpY2FsCm1heGltdW0gdGhhdCB0aGUgY2hpcHNldCBjYW4gcmVhY2guIFRoZSBkcml2ZXIgY2FuLCBob3dldmVyLCBsaW1pdCBjb21wcmVzc2lvbgp0byBhIG1heGltdW0gKHNpemUpIG9mIDE6NC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IHNvbWUgY2FyZHMgKGUuZy4gQnV6KQpjYW4ndCBoYW5kbGUgMToyIGNvbXByZXNzaW9uIHdpdGhvdXQgc3RvcHBpbmcgY2FwdHVyZSBhZnRlciBvbmx5IGEgZmV3IG1pbnV0ZXMuCldpdGggMTo0LCBpdCdsbCBtb3N0bHkgd29yay4gSWYgeW91IGhhdmUgYSBCdXosIHVzZSAnbG93X2JpdHJhdGU9MScgdG8gZ28gaW50bwoxOjQgbWF4LiBjb21wcmVzc2lvbiBtb2RlLgoKMTAwJSBKUEVHIHF1YWxpdHkgaXMgdGh1cyAxOjIgY29tcHJlc3Npb24gaW4gcHJhY3RpY2UuIFNvIGZvciBhIGZ1bGwgUEFMIGZyYW1lCihzaXplIDcyMHg1NzYpLiBUaGUgSlBFRyBmaWVsZHMgYXJlIHN0b3JlZCBpbiBZVVkyIGZvcm1hdCwgc28gdGhlIHNpemUgb2YgdGhlCmZpZWxkcyBhcmUgNzIweDI4OHgxNi8yIGJpdHMvZmllbGQgKDIgZmllbGRzL2ZyYW1lKSA9IDIwNzM2MCBieXRlcy9maWVsZCB4IDIgPQo0MTQ3MjAgYnl0ZXMvZnJhbWUgKGFkZCBzb21lIG1vcmUgYnl0ZXMgZm9yIGhlYWRlcnMgYW5kIERIVCAoaHVmZm1hbikvRFFUCihxdWFudGl6YXRpb24pIHRhYmxlcywgYW5kIHlvdSdsbCBnZXQgdG8gc29tZXRoaW5nIGxpa2UgNTEya0IgcGVyIGZyYW1lIGZvcgoxOjIgY29tcHJlc3Npb24uIEZvciAxOjQgY29tcHJlc3Npb24sIHlvdSdkIGhhdmUgZnJhbWVzIG9mIGhhbGYgdGhpcyBzaXplLgoKU29tZSBhZGRpdGlvbmFsIGV4cGxhbmF0aW9uIGJ5IE1hcnRpbiBTYW11ZWxzc29uLCB3aGljaCBhbHNvIGV4cGxhaW5zIHRoZQppbXBvcnRhbmNlIG9mIGJ1ZmZlciBzaXplczoKLS0KPiBIbW0sIEkgZG8gbm90IHRoaW5rIGl0IGlzIHJlYWxseSB0aGF0IHdheS4gV2l0aCB0aGUgY3VycmVudCAoZG93bmxvYWRlZAo+IGF0IDE4OjAwIE1vbmRheSkgZHJpdmVyIEkgZ2V0IHRoYXQgb3V0cHV0IHNpemVzIGZvciAxMCBzZWM6Cj4gLXEgNTAgLWIgMTI4IDogMjQuMjgzLjMzMiBCeXRlcwo+IC1xIDUwIC1iIDI1NiA6IDQ4LjQ0Mi4zNjgKPiAtcSAyNSAtYiAxMjggOiAyNC42NTUuOTkyCj4gLXEgMjUgLWIgMjU2IDogMjUuODU5LjgyMAoKSSB3b2tlIHVwLCBhbmQgY2FuJ3QgZ28gdG8gc2xlZXAgYWdhaW4uIEknbGwga2lsbCBzb21lIHRpbWUgZXhwbGFpbmluZyB3aHkKdGhpcyBkb2Vzbid0IGxvb2sgc3RyYW5nZSB0byBtZS4KCkxldCdzIGRvIHNvbWUgbWF0aCB1c2luZyBhIHdpZHRoIG9mIDcwNCBwaXhlbHMuIEknbSBub3Qgc3VyZSB3aGV0aGVyIHRoZSBCdXoKYWN0dWFsbHkgdXNlIHRoYXQgbnVtYmVyIG9yIG5vdCwgYnV0IHRoYXQncyBub3QgdG9vIGltcG9ydGFudCByaWdodCBub3cuCgo3MDR4Mjg4IHBpeGVscywgb25lIGZpZWxkLCBpcyAyMDI3NTIgcGl4ZWxzLiBEaXZpZGVkIGJ5IDY0IHBpeGVscyBwZXIgYmxvY2s7CjMxNjggYmxvY2tzIHBlciBmaWVsZC4gRWFjaCBwaXhlbCBjb25zaXN0IG9mIHR3byBieXRlczsgMTI4IGJ5dGVzIHBlciBibG9jazsKMTAyNCBiaXRzIHBlciBibG9jay4gMTAwJSBpbiB0aGUgbmV3IGRyaXZlciBtZWFuIDE6MiBjb21wcmVzc2lvbjsgdGhlIG1heGltdW0Kb3V0cHV0IGJlY29tZXMgNTEyIGJpdHMgcGVyIGJsb2NrLiBBY3R1YWxseSA1MTAsIGJ1dCA1MTIgaXMgc2ltcGxlciB0byB1c2UKZm9yIGNhbGN1bGF0aW9ucy4KCkxldCdzIHNheSB0aGF0IHdlIHNwZWNpZnkgZDFxNTAuIFdlIHRodXMgd2FudCAyNTYgYml0cyBwZXIgYmxvY2s7IHRpbWVzIDMxNjgKYmVjb21lcyA4MTEwMDggYml0czsgMTAxMzc2IGJ5dGVzIHBlciBmaWVsZC4gV2UncmUgdGFsa2luZyByYXcgYml0cyBhbmQgYnl0ZXMKaGVyZSwgc28gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnkgZmFuY3kgY29ycmVjdGlvbnMgZm9yIGJpdHMtcGVyLXBpeGVsIG9yIHN1Y2gKdGhpbmdzLiAxMDEzNzYgYnl0ZXMgcGVyIGZpZWxkLgoKZDEgdmlkZW8gY29udGFpbnMgdHdvIGZpZWxkcyBwZXIgZnJhbWUuIFRob3NlIHN1bSB1cCB0byAyMDI3NTIgYnl0ZXMgcGVyCmZyYW1lLCBhbmQgb25lIG9mIHRob3NlIGZyYW1lcyBnb2VzIGludG8gZWFjaCBidWZmZXIuCgpCdXQgd2FpdCBhIHNlY29uZCEgLWIxMjggZ2l2ZXMgMTI4a0IgYnVmZmVycyEgSXQncyBub3QgcG9zc2libGUgdG8gY3JhbQoyMDI3NTIgYnl0ZXMgb2YgSlBFRyBkYXRhIGludG8gMTI4a0IhCgpUaGlzIGlzIHdoYXQgdGhlIGRyaXZlciBub3RpY2UgYW5kIGF1dG9tYXRpY2FsbHkgY29tcGVuc2F0ZSBmb3IgaW4geW91cgpleGFtcGxlcy4gTGV0J3MgZG8gc29tZSBtYXRoIHVzaW5nIHRoaXMgaW5mb3JtYXRpb246CgoxMjhrQiBpcyAxMzEwNzIgYnl0ZXMuIEluIHRoaXMgYnVmZmVyLCB3ZSB3YW50IHRvIHN0b3JlIHR3byBmaWVsZHMsIHdoaWNoCmxlYXZlcyA2NTUzNiBieXRlcyBmb3IgZWFjaCBmaWVsZC4gVXNpbmcgMzE2OCBibG9ja3MgcGVyIGZpZWxkLCB3ZSBnZXQKMjAuNjg2ODY4NjguLi4gYXZhaWxhYmxlIGJ5dGVzIHBlciBibG9jazsgMTY1IGJpdHMuIFdlIGNhbid0IGFsbG93IHRoZQpyZXF1ZXN0IGZvciAyNTYgYml0cyBwZXIgYmxvY2sgd2hlbiB0aGVyZSdzIG9ubHkgMTY1IGJpdHMgYXZhaWxhYmxlISBUaGUgLXE1MApvcHRpb24gaXMgc2lsZW50bHkgb3ZlcnJpZGRlbiwgYW5kIHRoZSAtYjEyOCBvcHRpb24gdGFrZXMgcHJlY2VkZW5jZSwgbGVhdmluZwp1cyB3aXRoIHRoZSBlcXVpdmFsZW5jZSBvZiAtcTMyLgoKVGhpcyBnaXZlcyB1cyBhIGRhdGEgcmF0ZSBvZiAxNjUgYml0cyBwZXIgYmxvY2ssIHdoaWNoLCB0aW1lcyAzMTY4LCBzdW1zIHVwCnRvIDY1MzQwIGJ5dGVzIHBlciBmaWVsZCwgb3V0IG9mIHRoZSBhbGxvd2VkIDY1NTM2LiBUaGUgY3VycmVudCBkcml2ZXIgaGFzCmFub3RoZXIgbGV2ZWwgb2YgcmF0ZSBsaW1pdGluZzsgaXQgd29uJ3QgYWNjZXB0IC1xIHZhbHVlcyB0aGF0IGZpbGwgbW9yZSB0aGFuCjYvOCBvZiB0aGUgc3BlY2lmaWVkIGJ1ZmZlcnMuIChJJ20gbm90IHN1cmUgd2h5LiAiUGxheWluZyBpdCBzYWZlIiBzZWVtIHRvIGJlCmEgc2FmZSBiZXQuIFBlcnNvbmFsbHksIEkgdGhpbmsgSSB3b3VsZCBoYXZlIGxvd2VyZWQgcmVxdWVzdGVkLWJpdHMtcGVyLWJsb2NrCmJ5IG9uZSwgb3Igc29tZXRoaW5nIGxpa2UgdGhhdC4pIFdlIGNhbid0IHVzZSAxNjUgYml0cyBwZXIgYmxvY2ssIGJ1dCBoYXZlIHRvCmxvd2VyIGl0IGFnYWluLCB0byA2Lzggb2YgdGhlIGF2YWlsYWJsZSBidWZmZXIgc3BhY2U6IFdlIGVuZCB1cCB3aXRoIDEyNCBiaXRzCnBlciBibG9jaywgdGhlIGVxdWl2YWxlbmNlIG9mIC1xMjQuIFdpdGggMTI4a0IgYnVmZmVycywgeW91IGNhbid0IHVzZSBncmVhdGVyCnRoYW4gLXEyNCBhdCAtZDEuIChBbmQgUEFMLCBhbmQgNzA0IHBpeGVscyB3aWR0aC4uLikKClRoZSB0aGlyZCBleGFtcGxlIGlzIGxpbWl0ZWQgdG8gLXEyNCB0aHJvdWdoIHRoZSBzYW1lIHByb2Nlc3MuIFRoZSBzZWNvbmQKZXhhbXBsZSwgdXNpbmcgdmVyeSBzaW1pbGFyIGNhbGN1bGF0aW9ucywgaXMgbGltaXRlZCB0byAtcTQ4LiBUaGUgb25seQpleGFtcGxlIHRoYXQgYWN0dWFsbHkgZ3JhYiBhdCB0aGUgc3BlY2lmaWVkIC1xIHZhbHVlIGlzIHRoZSBsYXN0IG9uZSwgd2hpY2gKaXMgY2xlYXJseSB2aXNpYmxlLCBsb29raW5nIGF0IHRoZSBmaWxlIHNpemUuCi0tCgpDb25jbHVzaW9uOiB0aGUgcXVhbGl0eSBvZiB0aGUgcmVzdWx0aW5nIG1vdmllIGRlcGVuZHMgb24gYnVmZmVyIHNpemUsIHF1YWxpdHksCndoZXRoZXIgb3Igbm90IHlvdSB1c2UgJ2xvd19iaXRyYXRlPTEnIGFzIGluc21vZCBvcHRpb24gZm9yIHRoZSB6cjM2MDYwLmMKbW9kdWxlIHRvIGRvIDE6NCBpbnN0ZWFkIG9mIDE6MiBjb21wcmVzc2lvbiwgZXRjLgoKSWYgeW91IGV4cGVyaWVuY2UgdGltZW91dHMsIGxvd2VyaW5nIHRoZSBxdWFsaXR5L2J1ZmZlcnNpemUgb3IgdXNpbmcKJ2xvd19iaXRyYXRlPTEgYXMgaW5zbW9kIG9wdGlvbiBmb3IgenIzNjA2MC5vIG1pZ2h0IGFjdHVhbGx5IGhlbHAsIGFzIGlzCnByb3ZlbiBieSB0aGUgQnV6LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09Cgo3LiBJdCBoYW5ncy9jcmFzaGVzL2ZhaWxzL3doYXRldmVycyEgSGVscCEKCk1ha2Ugc3VyZSB0aGF0IHRoZSBjYXJkIGhhcyBpdHMgb3duIGludGVycnVwdHMgKHNlZSAvcHJvYy9pbnRlcnJ1cHRzKSwgY2hlY2sKdGhlIG91dHB1dCBvZiBkbWVzZyBhdCBoaWdoIHZlcmJvc2l0eSAobG9hZCB6cjM2MDY3Lm8gd2l0aCBkZWJ1Zz0yLApsb2FkIGFsbCBvdGhlciBtb2R1bGVzIHdpdGggZGVidWc9MSkuIENoZWNrIHRoYXQgeW91ciBtYWluYm9hcmQgaXMgZmF2b3JhYmxlCihzZWUgcXVlc3Rpb24gMikgYW5kIGlmIG5vdCwgdGVzdCB0aGUgY2FyZCBpbiBhbm90aGVyIGNvbXB1dGVyLiBBbHNvIHNlZSB0aGUKbm90ZXMgZ2l2ZW4gaW4gcXVlc3Rpb24gMyBhbmQgdHJ5IGxvd2VyaW5nIHF1YWxpdHkvYnVmZmVyc2l6ZS9jYXB0dXJlc2l6ZQppZiByZWNvcmRpbmcgZmFpbHMgYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZS4KCklmIGFsbCB0aGlzIGRvZXNuJ3QgaGVscCwgZ2l2ZSBhIGNsZWFyIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9ibGVtIGluY2x1ZGluZwpkZXRhaWxlZCBoYXJkd2FyZSBpbmZvcm1hdGlvbiAobWVtb3J5K2JyYW5kLCBtYWluYm9hcmQrY2hpcHNldCticmFuZCwgd2hpY2gKTUpQRUcgY2FyZCwgcHJvY2Vzc29yLCBvdGhlciBQQ0kgY2FyZHMgdGhhdCBtaWdodCBiZSBvZiBpbnRlcmVzdCksIGdpdmUgdGhlCnN5c3RlbSBQblAgaW5mb3JtYXRpb24gKC9wcm9jL2ludGVycnVwdHMsIC9wcm9jL2RtYSwgL3Byb2MvZGV2aWNlcyksIGFuZCBnaXZlCnRoZSBrZXJuZWwgdmVyc2lvbiwgZHJpdmVyIHZlcnNpb24sIGdsaWJjIHZlcnNpb24sIGdjYyB2ZXJzaW9uIGFuZCBhbnkgb3RoZXIKaW5mb3JtYXRpb24gdGhhdCBtaWdodCBwb3NzaWJseSBiZSBvZiBpbnRlcmVzdC4gQWxzbyBwcm92aWRlIHRoZSBkbWVzZyBvdXRwdXQKYXQgaGlnaCB2ZXJib3NpdHkuIFNlZSAnQ29udGFjdGluZycgb24gaG93IHRvIGNvbnRhY3QgdGhlIGRldmVsb3BlcnMuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KCjguIE1haW50YWluZXJzL0NvbnRhY3RpbmcKClRoZSBkcml2ZXIgaXMgY3VycmVudGx5IG1haW50YWluZWQgYnkgTGF1cmVudCBQaW5jaGFydCBhbmQgUm9uYWxkIEJ1bHRqZQooPGxhdXJlbnQucGluY2hhcnRAc2t5bmV0LmJlPiBhbmQgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4pLiBGb3IgYnVnCnJlcG9ydHMgb3IgcXVlc3Rpb25zLCBwbGVhc2UgY29udGFjdCB0aGUgbWFpbGluZ2xpc3QgaW5zdGVhZCBvZiB0aGUgZGV2ZWxvcGVycwppbmRpdmlkdWFsbHkuIEZvciB1c2VyIHF1ZXN0aW9ucyAoaS5lLiBidWcgcmVwb3J0cyBvciBob3ctdG8gcXVlc3Rpb25zKSwgc2VuZAphbiBlbWFpbCB0byA8bWpwZWctdXNlcnNAbGlzdHMuc2YubmV0PiwgZm9yIGRldmVsb3BlcnMgKGkuZS4gaWYgeW91IHdhbnQgdG8KaGVscCBwcm9ncmFtbWluZyksIHNlbmQgYW4gZW1haWwgdG8gPG1qcGVnLWRldmVsb3BlckBsaXN0cy5zZi5uZXQ+LiBTZWUKaHR0cDovL3d3dy5zZi5uZXQvcHJvamVjdHMvbWpwZWcvIGZvciBzdWJzY3JpcHRpb24gaW5mb3JtYXRpb24uCgpGb3IgYnVnIHJlcG9ydHMsIGJlIHN1cmUgdG8gaW5jbHVkZSBhbGwgdGhlIGluZm9ybWF0aW9uIGFzIGRlc2NyaWJlZCBpbgp0aGUgc2VjdGlvbiAnSXQgaGFuZ3MvY3Jhc2hlcy9mYWlscy93aGF0ZXZlcnMhIEhlbHAhJy4gUGxlYXNlIG1ha2Ugc3VyZQp5b3UncmUgdXNpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIChodHRwOi8vbWpwZWcuc2YubmV0L2RyaXZlci16b3Jhbi8pLgoKUHJldmlvdXMgbWFpbnRhaW5lcnMvZGV2ZWxvcGVycyBvZiB0aGlzIGRyaXZlciBpbmNsdWRlIFNlcmd1ZWkgTWlyaWRvbm92CjxtaXJzZXZAY2ljZXNlLm14PiwgV29sZmdhbmcgU2NoZXJyIDxzY2hlcnJAbmV0NHlvdS5uZXQ+LCBEYXZlIFBlcmtzCjxkcGVya3NAaWJtLm5ldD4gYW5kIFJhaW5lciBKb2hhbm5pIDxSYWluZXJASm9oYW5uaS5kZT4uCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KCjkuIExpY2Vuc2UKClRoaXMgZHJpdmVyIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAgICBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KClNlZSBodHRwOi8vd3d3LmdudS5vcmcvIGZvciBtb3JlIGluZm9ybWF0aW9uLgo=