MjAwNi0xMi0yOSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiBib290c3RyYXAvMjk1NDQKICAgICAgICAqIGdjYy9NYWtlZmlsZS5pbiAoU1RBR0UxX0NIRUNLSU5HKTogUmVuYW1lIHRvLi4uCiAgICAgICAgKFNUQUdFMV9DSEVDS0lOR19DRkxBR1MpOiAuLi4gdGhpcy4KCjIwMDYtMTItMjggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCglCYWNrcG9ydCBmcm9tIG1haW5saW5lOgoJMjAwNi0xMi0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIHRhcmdldC8zMDA0MAoJKiBjb25maWcvaTM4Ni9kcml2ZXItaTM4Ni5jOiBJbmNsdWRlICJjb3JldHlwZXMuaCIgYW5kICJ0bS5oIi4KCShob3N0X2RldGVjdF9sb2NhbF9jcHUpOiBDaGVjayAtbXR1bmU9IHZzLiAtbWFyY2g9LiBSZXdyaXRlCglwcm9jZXNzb3IgZGV0ZWN0aW9uLgoKCSogY29uZmlnL2kzODYvaTM4Ni5oIChDQzFfQ1BVX1NQRUMpOiBBZGQgLW10dW5lPW5hdGl2ZSBmb3IKCS1tYXJjaD1uYXRpdmUgaWYgdGhlcmUgaXMgbm8gLW10dW5lPSouCgoJKiBjb25maWcvaTM4Ni94LWkzODYgKGRyaXZlci1pMzg2Lm8pOiBBbHNvIGRlcGVuZCBvbiAkKFRNX0gpCgljb3JldHlwZXMuaC4KCjIwMDYtMTItMjcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJUFIgZGVidWcvMjY5NjQKCSogZHdhcmYyb3V0LmMgKGdlbl90eXBlX2RpZSk6IERvbid0IHdyaXRlIG91dCBhIERJRSBmb3IKCUVOVU1FUkFMX1RZUEUgaWYgaXQgd2FzIGFscmVhZHkgd3JpdHRlbiBvdXQuCgoyMDA2LTEyLTIzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogZHdhcmYyb3V0LmMgKGRieF9yZWdfbnVtYmVyKTogRG8gbGVhZiByZWdpc3RlciByZW1hcHBpbmcKCW9ubHkgaWYgdGhlIGZ1bmN0aW9uIGlzIGxlYWYuCgkobXVsdGlwbGVfcmVnX2xvY19kZXNjcmlwdG9yKTogTGlrZXdpc2UuCgoyMDA2LTEyLTIxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzMwMjYyCglQUiBtaWRkbGUtZW5kLzMwMjYzCgkqIHRyZWUtbmVzdGVkLmMgKHdhbGtfYXNtX2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkod2Fsa19zdG10cyk6IFVzZSBpdCBmb3IgQVNNX0VYUFIuCgoJUFIgdGFyZ2V0LzMwMjMwCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9hZGRfYnVuZGxlX3NlbGVjdG9yX2JlZm9yZSk6IE5ldyBmdW5jdGlvbi4KCShidW5kbGluZyk6IFVzZSBpdC4KCjIwMDYtMTItMTcgIE1hdHRoaWFzIEtsb3NlICA8ZG9rb0BkZWJpYW4ub3JnPgoKCVBSIGxpYnN0ZGMrKy8xMTk1MwoJKiBnY2MvY29uZmlnL21pcHMvbGludXguaCAoU1VCVEFSR0VUX0NQUF9TUEVDKTogRXh0ZW5kLgoKMjAwNi0xMi0xNiAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CiAgICAgICAgICAgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCglQUiB0YXJnZXQvMjQwMzYKCSogZG9jL3RtLnRleGkgKEhBUkRfUkVHTk9fTlJFR1NfSEFTX1BBRERJTkcsCglIQVJEX1JFR05PX05SRUdTX1dJVEhfUEFERElORyk6IERvY3VtZW50IG5ldyB0YXJnZXQgbWFjcm9zLgoJKiBkZWZhdWx0cy5oIChIQVJEX1JFR05PX05SRUdTX0hBU19QQURESU5HLAoJSEFSRF9SRUdOT19OUkVHU19XSVRIX1BBRERJTkcpOiBEZWZpbmUuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoSEFSRF9SRUdOT19OUkVHU19IQVNfUEFERElORywKCUhBUkRfUkVHTk9fTlJFR1NfV0lUSF9QQURESU5HKTogRGVmaW5lLgoJKiBydGxhbmFsLmMgKHN1YnJlZ19yZWdub19vZmZzZXQsIHN1YnJlZ19vZmZzZXRfcmVwcmVzZW50YWJsZV9wKToKCVVzZSBuZXcgbWFjcm9zIHRvIGRldGVjdCBtb2RlcyB3aXRoIGhvbGVzOyBkbyBub3QgbG9vayBhdCBpbnRlZ2VyCgl1bml0cy4KCShzdWJyZWdfb2Zmc2V0X3JlcHJlc2VudGFibGVfcCk6IENoZWNrIGZvciBhbmQgZGlzYWxsb3cgY2FzZXMKCXdoZXJlIHRoZSBtb2RlcyB1c2UgZGlmZmVyZW50IG51bWJlcnMgb2YgYml0cyBmcm9tIHJlZ2lzdGVycy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfbW92ZSk6IEhhbmRsZSBURm1vZGUKCWNvbnN0YW50IGZvciBzb2Z0LWZsb2F0LgoJKHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzKTogVXNlIFVOSVRTX1BFUl9GUF9XT1JEIGZvciBlNTAwIEdQUnMKCWNvbnRhaW5pbmcgZG91Ymxlcy4KCShyczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92ZSk6IFVzZSBERm1vZGUgcmVnX21vZGUgZm9yIFRGbW9kZSBtb3ZlcwoJaW4gRTUwMCBkb3VibGUgY2FzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG1vdnRmKTogQWxsb3cgc29mdC1mbG9hdC4KCShtb3Z0Zl9zb2Z0ZmxvYXQpOiBOZXcuCgoyMDA2LTEyLTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiB0YXJnZXQvMzAxODUKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGRpdjxtb2RlPjMpOiBVc2UgY29ycmVjdCBtb2RlIGluCglmb3JjZV9yZWcgY2FsbC4KCjIwMDYtMTItMTMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGlwYS1pbmxpbmUuYyAoY2dyYXBoX2ZsYXR0ZW5fbm9kZSk6IFJlcGxhY2UgbGVhZmlmeSB3aXRoCglmbGF0dGVuLgoJKGNncmFwaF9kZWNpZGVfaW5saW5pbmcpOiBMaWtld2lzZS4KCjIwMDYtMTItMTMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGlwYS1yZWZlcmVuY2UuYyAoc2Nhbl9mb3Jfc3RhdGljX3JlZnMpOiBBbHNvIHNjYW4KCXRjY19jb21wYXJpc29uIGNsYXNzIHRyZWVzLgoKMjAwNi0xMi0xMiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChoYW5kbGVfcHRyX2FyaXRoKTogUmV0dXJuIGZhbHNlIHdoZW4gd2UKCWNhbid0IGhhbmRsZSB0aGUgcG9pbnRlciBhcml0aG1ldGljLgoKMjAwNi0xMi0xMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbGlic3RkYysrLzExOTUzCgkqIGd0aHItcG9zaXguaCAoX1JFRU5UUkFOVCk6IE9ubHkgZGVmaW5lIGlmIF9fb3NmX18gaXMgZGVmaW5lZC4KCgkqIGNvbmZpZy9pYTY0L2xpbnV4LmggKENQUF9TUEVDKTogRGVmaW5lLgoJKiBjb25maWcvczM5MC9saW51eC5oIChDUFBfU1BFQyk6IERlZmluZS4KCjIwMDYtMTItMTIgIEppbSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXguY29tPgoJICAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjc3NjEKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IERvbid0IGNyZWF0ZSBhIHVzZWxlc3MgZ2FyYmFnZSBTRVQKCWlmIFBBVFRFUk4gKGkyKSBpcyBhIFBBUkFMTEVMLiAgSWYgYWRkZWRfc2V0c18xLCBzYXZlCglQQVRURVJOIChpMSkgcmVzcC4gU0VUIGZyb20gaTFzcmMgdG8gaTFkZXN0IGluIGkxcGF0CglhbmQgdXNlIGl0IHRvIHByZXZlbnQgYWNjaWRlbnRhbCBtb2RpZmljYXRpb24gb2YgaTFzcmMuCgoyMDA2LTEyLTEyICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8zMDE0NwoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfcmVhZF9mcm9tX2NvbnN0YW50X3N0cmluZyk6IE9ubHkgZm9sZCByZWFkCglmcm9tIGNvbnN0YW50IHN0cmluZyBpZiB0aGUgcmVzdWx0IHR5cGUgaXMgaW50ZWdlci4KCjIwMDYtMTItMDkgIE1heGltIEt1dnlya292ICA8bWt1dnlya292QGlzcHJhcy5ydT4KCgkqIGhhaWZhLXNjaGVkLmMgKHNjaGVkdWxlX2Jsb2NrKTogUmVtb3ZlIGV4Y2Vzc2l2ZSBzYW5pdHkgY2hlY2suCgoyMDA2LTEyLTA4ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvdC1kYXJ3aW4gKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IEJ1aWxkCglsaWJnY2Mgd2l0aCAtbW1hY29zeC12ZXJzaW9uLW1pbj0xMC40LgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IERlZmF1bHQgdG8KCUc0IGZvciAxMC41KyB1bmxlc3MgZG9pbmcga2VybmVsIGJ1aWxkcy4KCjIwMDYtMTItMDggIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgdGFyZ2V0LzMwMDM5CgkqIHBhLm1kIChoaWdoOkRJIGFuZCBsb19zdW06REkpOiBIYW5kbGUgNjQtYml0IENPTlNUX0lOVHMgaW4gMzItYml0CglwYXR0ZXJucy4gIENvcnJlY3QgbGVuZ3RoIG9mIGhpZ2g6REkgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UuCgoyMDA2LTEyLTA3ICBNYXhpbSBLdXZ5cmtvdiAgPG1rdXZ5cmtvdkBpc3ByYXMucnU+CgoJUFIgdGFyZ2V0LzI5Nzk0CgkqIHNjaGVkLXJnbi5jIChhZGRfYmxvY2sxKTogVXNlIGNvcnJlY3QgaW5pdGlhbGl6ZXIuCgoyMDA2LTEyLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgZHJpdmVyLzMwMDc0CgkqIGNvbmZpZy5ob3N0OiBBZGQgZHJpdmVyLWkzODYubyBvbmx5IGlmIGNvbXBpbGluZyBmb3IgeDg2IG9yCgl4ODZfNjQuCgoyMDA2LTEyLTA0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBsaWJnb21wLzI5OTQ3CgkqIG9tcC1sb3cuYyAoZXhwYW5kX29tcF9mb3Jfc3RhdGljX25vY2h1bmssCglleHBhbmRfb21wX2Zvcl9zdGF0aWNfY2h1bmspOiBEbyBhbGwgYXJpdGhtZXRpY3MgaW4gc2lnbmVkIHJhdGhlciB0aGFuCgl1bnNpZ25lZCB0eXBlLgoKCVBSIG1pZGRsZS1lbmQvMjk5NjUKCSogb21wLWxvdy5jIChkZXRlcm1pbmVfcGFyYWxsZWxfdHlwZSk6IERvbid0IHRyeSB0byBvcHRpbWl6ZSBjb21iaW5lZAoJcGFyYWxsZWxzIGlmIHJlZ2lvbi0+ZXhpdCBvciByZWdpb24tPmlubmVyLT5leGl0IGlzIE5VTEwuCgkoZXhwYW5kX29tcF9wYXJhbGxlbCk6IEhhbmRsZSBOVUxMIHJlZ2lvbi0+ZXhpdCBldmVuIGlmIGNmZyBpcyBhbHJlYWR5CglidWlsdC4KCShleHBhbmRfb21wX2Zvcl9nZW5lcmljKTogSGFuZGxlIE5VTEwgcmVnaW9uLT5jb25kIGFuZCByZWdpb24tPmV4aXQuCgkoZXhwYW5kX29tcF9mb3IpOiBVc2UgZXhwYW5kX29tcF9mb3JfZ2VuZXJpYyBpZiBlaXRoZXIgcmVnaW9uLT5jb25kCglvciByZWdpb24tPmV4aXQgaXMgTlVMTC4KCShleHBhbmRfb21wX3NlY3Rpb25zKTogSGFuZGxlIE5VTEwgcmVnaW9uLT5jb25kIG9yIHJlZ2lvbi0+ZXhpdC4KCShleHBhbmRfb21wX3N5bmNoKTogCgoyMDA2LTEyLTAzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBVcGRhdGUgTVBGUiBwcmVyZXF1aXNpdGUgdG8gdmVyc2lvbiAyLjIuMS4KCjIwMDYtMTItMDIgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdtYWlsLmNvbT4KCglQUiB0cmVlLW9wdC8yOTk4NAoJKiB0cmVlLXNzYS1yZWFzc29jLmMgKGVsaW1pbmF0ZV9kdXBsaWNhdGVfcGFpcik6IEhhbmRsZSBNQVhfRVhQUgoJYW5kIE1JTl9FWFJQLgoKMjAwNi0xMS0yOSAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3ByZWRpY2F0ZXMubWQgKGdwY19yZWdfb3BlcmFuZCk6IENoZWNrCglpbnZhbGlkX2U1MDBfc3VicmVnLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChpbnZhbGlkX2U1MDBfc3VicmVnKTogRG9uJ3QgYWxsb3cgYW55CglTSW1vZGUgc3VicmVncyBvZiBTUEUgdmVjdG9ycy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGluc3YpOiBGYWlsIGZvciBpbnZhbGlkIEU1MDAgc3VicmVncy4KCSoganVtcC5jICh0cnVlX3JlZ251bSk6IFJlcXVpcmUgc3VicmVncyB0byBzYXRpc2Z5CglzdWJyZWdfb2Zmc2V0X3JlcHJlc2VudGFibGVfcC4KCjIwMDYtMTEtMjkgIEppZSBaaGFuZyAgPGppZS56aGFuZ0BhbmFsb2cuY29tPgoKCSogZG9jL3RtLnRleGkgKE5PX1BST0ZJTEVfQ09VTlRFUlMpOiBEb2N1bWVudCBtb3JlIGFjY3VyYXRlbHkuCgoyMDA2LTExLTI5ICBKaW0gVGlzb24gIDxqdGlzb25AdXMuaWJtLmNvbT4KCgkqIGd0aHItdHBmLmggKF9fR1RIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVF9GVU5DVElPTiwKCV9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfaW5pdCk6IERlZmluZS4KCjIwMDYtMTEtMjkgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2dpbXBsaWZ5X3ZhX2FyZyk6IElmCglTVFJJQ1RfQUxJR05NRU5UIGFuZCB0aGUgdHlwZSBpcyBtb3JlIGFsaWduZWQgdGhhbiB0aGUgc2F2ZWQKCXJlZ2lzdGVycywgY29weSB2aWEgYSB0ZW1wb3JhcnkuCgoyMDA2LTExLTI4ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGluc3RhbnRpYXRlX3ZpcnR1YWxfcmVnc19pbl9pbnNuKTogQ2FsbCBmb3JjZV9yZWcKCWluc2lkZSBzdGFydF9zZXF1ZW5jZSAvIGVuZF9zZXF1ZW5jZSBwYWlyLgoKMjAwNi0xMS0yNyAgTWljaGFlbCBNYXR6ICA8bWF0ekBzdXNlLmRlPgogICAgICAgICAgICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCVBSIHRhcmdldC8yOTMxOQoJKiBjb25maWcvczM5MC9wcmVkaWNhdGVzLm1kIChsYXJsX29wZXJhbmQpOiBDaGVjayBhZGRlbmQgb2YgbGFybAoJb3BlcmFuZCB0byBiZSBpbiByYW5nZSBvZiAtLysyR0IuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IExpa2V3aXNlLiAgCglDaGFuZ2VkIHR5cGUgb2YgdmFyaWFibGUgZXZlbiB0byBIT1NUX1dJREVfSU5ULgoKMjAwNi0xMS0yNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZG9jL2luc3RhbGwudGV4aTogUmVtb3ZlIGRvY3VtZW50YXRpb24gZm9yIC0td2l0aC1tcGZyLWRpcgoJYW5kIC0td2l0aC1nbXAtZGlyLCBhZGQgZG9jdW1lbnRhdGlvbiBmb3IgLS13aXRoLW1wZnItaW5jbHVkZSwKCS0td2l0aC1tcGZyLWxpYiwgLS13aXRoLWdtcC1pbmNsdWRlIGFuZCAtLXdpdGgtZ21wLWxpYi4KCjIwMDYtMTEtMjUgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCVBSIHRyZWUtb3B0LzI5OTY0CgkqIGlwYS1wdXJlLWNvbnN0LmMgKGNoZWNrX3RyZWUpOiBJZiB0aGUgb3JpZ2luYWwgdHJlZQoJaXMgdm9sYXRpbGUgcmV0dXJuIGVhcmx5IGFuZCBzYXkgdGhlIGZ1bmN0aW9uIGlzIG5vdCBwdXJlCglub3IgY29uc3QuICBSZW1vdmUgdGhlIHZvbGF0aWxlIGNoZWNrIGZvciB3cml0ZXMuICAKCShhbmFseXplX2Z1bmN0aW9uKTogUHJpbnQgb3V0IHRoZSByZXN1bHQgb2YgdGhlIGxvY2FsCglhbmFseXNpcyBwYXNzLgoKMjAwNi0xMS0yNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYy8yOTk1NQoJKiBjLXRyZWUuaCAoY19tYXliZV9pbml0aWFsaXplX2VoKTogTmV3IHByb3RvdHlwZS4KCSogYy1kZWNsLmMgKGZpbmlzaF9kZWNsKTogTW92ZSBFSCBpbml0aWFsaXphdGlvbi4uLgoJKGNfbWF5YmVfaW5pdGlhbGl6ZV9laCk6IC4uLiBoZXJlLiAgTmV3IGZ1bmN0aW9uLgoJKiBjLXBhcnNlci5jIChjX3BhcnNlcl9vbXBfY29uc3RydWN0KTogQ2FsbCBjX21heWJlX2luaXRpYWxpemVfZWgKCWlmIG5vdCAjcHJhZ21hIG9tcCBhdG9taWMuCgoJUFIgYy8yOTczNgoJKiBjLWNvbW1vbi5jIChoYW5kbGVfdmVjdG9yX3NpemVfYXR0cmlidXRlKTogRGlzYWxsb3cgVkVDVE9SX1RZUEUKCW9yIFVOSU9OX1RZUEUgaW5uZXIgdHlwZXMuCgoyMDA2LTExLTI0ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvZWFiaXNwZS5oIChUQVJHRVRfREVGQVVMVCk6IEluY2x1ZGUKCU1BU0tfU1RSSUNUX0FMSUdOLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4c3BlLmggKFRBUkdFVF9ERUZBVUxUKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogVXNlCglNQVNLX1NUUklDVF9BTElHTiBmb3IgODU0MCBhbmQgODU0OC4gIEFkZCBNQVNLX1NUUklDVF9BTElHTiB0bwoJUE9XRVJQQ19NQVNLUy4KCjIwMDYtMTEtMjQgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC5jIChzMzkwX2VtaXRfY29tcGFyZV9hbmRfc3dhcCk6IE5ldyBmdW5jdGlvbi4KCShzMzkwX2V4cGFuZF9jc19ocWksIHMzOTBfZXhwYW5kX2F0b21pYyk6IENhbGwgCglzMzkwX2VtaXRfY29tcGFyZV9hbmRfc3dhcC4KCjIwMDYtMTEtMjMgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5jIChyZXR1cm5fYWRkcl9ydHgpOiBDaGFuZ2UgMHhlMDQwMDAwMiB0byAtNTMyNjc2NjA2LgoKMjAwNi0xMS0yMiAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3NwZS5tZCAoU1BFNjQpOiBOZXcgbW9kZSBtYWNyby4KCShtb3Zfc2lkZl9lNTAwX3N1YnJlZzApOiBDaGFuZ2UgdG8gbW92X3NpPG1vZGU+X2U1MDBfc3VicmVnMC4gIEFkZAoJbWVtb3J5IGxvYWQuCgkobW92X3NpPG1vZGU+X2U1MDBfc3VicmVnMF8yKTogTmV3LgoJKG1vdl9zaWRmX2U1MDBfc3VicmVnNCk6IENoYW5nZSB0byBtb3Zfc2k8bW9kZT5fZTUwMF9zdWJyZWc0LiAgQWRkCgltZW1vcnkgbG9hZC4KCShtb3Zfc2k8bW9kZT5fZTUwMF9zdWJyZWc0XzIpOiBOZXcuCgkqIGNvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZCAoaW5wdXRfb3BlcmFuZCk6IERvIG5vdCBhbGxvdwoJaW52YWxpZCBFNTAwIHN1YnJlZ3MuCgkocnM2MDAwX25vbmltbWVkaWF0ZV9vcGVyYW5kKTogQ2hlY2sgZm9yIGludmFsaWQgRTUwMCBzdWJyZWdzIGFsc28KCWlmIFRBUkdFVF9TUEUuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGludmFsaWRfZTUwMF9zdWJyZWcpOiBDaGVjayBmb3Igc3VicmVncwoJaW52b2x2aW5nIERGbW9kZSBpZiBUQVJHRVRfRTUwMF9ET1VCTEUuICBDaGVjayBmb3Igc3VicmVncwoJaW52b2x2aW5nIHZlY3RvciBtb2RlcyBpZiBUQVJHRVRfU1BFLgoKMjAwNi0xMS0yMCAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCVBSIHRhcmdldC8xODU1MwoJUFIgdGFyZ2V0LzI5NDQ5CgkqIGNvbmZpZy9hdnIvYXZyLmggKE9CSkVDVF9GT1JNQVRfRUxGKTogRGVmaW5lLgoKCSogY29uZmlnL2F2ci9hdnIuaCAoRFdBUkYyX0RFQlVHR0lOR19JTkZPKTogRGVmaW5lLgoKMjAwNi0xMS0xOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiB0YXJnZXQvMjkxMTQKCSogcGEuYyAoZW1pdF9tb3ZlX3NlcXVlbmNlKTogRG9uJ3Qgc3BsaXQgY29uc3RhbnRzIHdpdGggUExVUyBmb3IgbW9kZXMKCWxhcmdlciB0aGFuIEJJVFNfUEVSX1dPUkQuCgoyMDA2LTExLTE5ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJQmFja3BvcnQgZnJvbSBtYWlubGluZToKCTIwMDYtMTEtMTUgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgbWlkZGxlLWVuZC8yOTc1MwoJKiBnaW1wbGlmeS5jIChmb2xkX2luZGlyZWN0X3JlZl9yaHMpOiBVc2UKCVNUUklQX1VTRUxFU1NfVFlQRV9DT05WRVJTSU9OIHJhdGhlciB0aGFuIFNUUklQX05PUFMuCgoyMDA2LTExLTE4ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIGZvcnRyYW4vMjc4ODUKCVBSIG1pZGRsZS1lbmQvMjgxNzYKCSogc3Rvci1sYXlvdXQuYyAoc2V0X3NpemV0eXBlKTogTGltaXQgcHJlY2lzaW9uIG9mICpiaXRzaXpldHlwZXMgdHlwZXMKCXRvIE1BWF9GSVhFRF9NT0RFX1NJWkUuCgoyMDA2LTExLTE4ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgogICAgICAgKiBkb2MvaW52b2tlLnRleGk6IEZpeCBtbm8taXNlbCB0eXBvLgoKMjAwNi0xMS0xOCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3NwZS5tZCAobW92djRoaV9pbnRlcm5hbCk6IEFkZCBhbHRlcm5hdGl2ZSBmb3IKCWVhc3kgdmVjdG9yIGNvbnN0YW50IGxvYWRzLgoKMjAwNi0xMS0xOCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChUQVJHRVRfTk9fTFdTWU5DKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1jLmMgKHJzNjAwMF9jcHVfY3BwX2J1aWx0aW5zKTogRGVmaW5lCglfX05PX0xXU1lOQ19fIGlmIFRBUkdFVF9OT19MV1NZTkMuCgkqIGNvbmZpZy9yczYwMDAvc3luYy5tZCAobHdzeW5jKTogRW1pdCBwbGFpbiBzeW5jIGlmCglUQVJHRVRfTk9fTFdTWU5DLgoKMjAwNi0xMS0xNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yOTU4NAoJKiB0cmVlLXNzYS1mb3J3cHJvcC5jIChzaW1wbGlmeV9zd2l0Y2hfZXhwcik6IERvbid0CglvcHRpbWl6ZSBpZiBERUYgZG9lc24ndCBoYXZlIGludGVncmFsIHR5cGUuCgoyMDA2LTExLTE3ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2Z1bmN0aW9uX3NzZXJlZ3Bhcm0pOiBGaXggY29tbWVudDoKCW51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIGxvY2FsIGZ1bmN0aW9ucyBpbiBTU0UgcmVnaXN0ZXJzIGlzIDMuCgoJKiBkb2MvaW52b2tlLnRleGkgKEZ1bmN0aW9uIEF0dHJpYnV0ZXMpIFtzc2VyZWdwYXJtXTogQ29ycmVjdAoJbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgaW4gU1NFIHJlZ2lzdGVycyB0byAzLgoKMjAwNi0xMS0xNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCglQUiBtaWRkbGUtZW5kLzI2MzA2CgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2V4cHIpOiBPbmx5IGZvcmNlIGEgbG9hZCBmb3IgcmVmZXJlbmNlcyB0bwoJbm9uLUJMS21vZGUgdm9sYXRpbGUgdmFsdWVzLgoJKiBkb2MvaW1wbGVtZW50LWMudGV4aSAoUXVhbGlmaWVycyBpbXBsZW1lbnRhdGlvbik6IERvY3VtZW50IHRoZQoJaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCBhIHZvbGF0aWxlIGFjY2VzcyBpcy4KCSogZG9jL2V4dGVuZC50ZXhpIChDKysgRXh0ZW5zaW9ucyk6IFJld29yayBzYW1lIGRvY3VtZW50YXRpb24uCgoyMDA2LTExLTE2ICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiB0cmVlLW9wdC8yOTc4OAoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfaW5kaXJlY3RfcmVmXzEpOiBGb2xkIComQ09OU1RfREVDTCBkb3duCgl0byB3aGF0IGlzIHRoZSBjb25zdCBkZWNsIGlzIGEgcGxhY2UgaG9sZGVyIGZvci4KCjIwMDYtMTEtMTYgIE1heGltIEt1dnlya292ICA8bWt1dnlya292QGlzcHJhcy5ydT4KCglQUiB0YXJnZXQvMjkyMDEKCSogY2ZncnRsLmMgKHJ0bF9kZWxldGVfYmxvY2spOiBNb3ZlIHRoZSBjb2RlIGZvciBnZXR0aW5nIGxhc3QgaW5zbiBvZgoJYmIgdG8gLi4uCgkoZ2V0X2xhc3RfYmJfaW5zbik6IC4uLiBuZXcgZ2xvYmFsIGZ1bmN0aW9uLgoJKGJhc2ljX2Jsb2NrLmgpOiBEZWNsYXJlIGl0LgoJKiBoYWlmYS1zY2hlZC5jIChjcmVhdGVfcmVjb3ZlcnlfYmxvY2spOiBVc2UgaXQuCgoyMDA2LTExLTE2ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3BlLm1kIChmcm9iX2RpX2RmXzIpOiBIYW5kbGUgbm9uLW9mZnNldHRhYmxlCgltZW1vcnkgb3BlcmFuZC4KCjIwMDYtMTEtMTUgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2hwdXhfaW5pdF9saWJmdW5jcyk6ICBVc2UgSFAtVVggbWlsbGljb2RlCglyb3V0aW5lcyBmb3IgaW50ZWdlciBkaXZpc2lvbi4KCjIwMDYtMTEtMTUgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCVBSIG90aGVyLzI1MDI4CgkqIGNvbmZpZy9pYTY0L3QtaHB1eCAoTElCMUFTTUZVTkNTKTogIEZpbHRlciBvdXQgX2ZpeHRmZGksCglfZml4dW5zdGZkaSwgYW5kICBfZmxvYXRkaXRmCgoyMDA2LTExLTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yOTU4MQoJKiBsYW1iZGEtY29kZS5jIChyZXBsYWNlX3VzZXNfZXF1aXZfdG9feF93aXRoX3kpOiBBZGQgWUlOSVQsCglSRVBMQUNFTUVOVFMsIEZJUlNUQlNJIGFyZ3VtZW50cy4gIElmIGluaXRpYWwgY29uZGl0aW9uIG9yCgl0eXBlIGlzIGRpZmZlcmVudCBiZXR3ZWVuIFkgYW5kIFVTRSwgY3JlYXRlIGEgdGVtcG9yYXJ5Cgl2YXJpYWJsZSwgaW5pdGlhbGl6ZSBpdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBib2R5IGJiCglhbmQgdXNlIGl0IGFzIHJlcGxhY2VtZW50IGluc3RlYWQgb2YgWS4KCjIwMDYtMTEtMTUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglCYWNrcG9ydCBmcm9tIG1haW5saW5lOgoJMjAwNi0xMS0xMiAgTWljaGFlbCBNYXR6ICA8bWF0ekBzdXNlLmRlPgoJCSAgICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI5Nzk3CgkqIGlmY3Z0LmMgKG5vY2VfdHJ5X2JpdG9wKTogQ29ycmVjdCBjYWxjdWxhdGlvbiBvZiBiaXRudW0gb24KCUJJVFNfQklHX0VORElBTiB0YXJnZXRzLgoKMjAwNi0xMS0xNCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZSB3aXRoIGF1dG9jb25mIDIuNTkuCgoyMDA2LTExLTEzICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tMzJjL20zMmMuYyAobTMyY19wcmVwYXJlX3NoaWZ0KTogVXNlIGEgc2VwYXJhdGUKCXRlbXBvcmFyeSBmb3IgaW50ZXJtZWRpYXRlcy4KCjIwMDYtMTEtMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmFjOiBBZGQgY2hhbmdlcXVvdGUgYXJvdW5kIF9fTE9OR19ET1VCTEVfTUFUSF9PUFRJT05BTAoJdGVzdC4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKCSogY29uZmlndXJlLmFjIChsZF92ZXJzKTogUGFyc2UgR05VIGxkIHZlcnNpb24gMi4xNy41MC4wLjMtNiAyMDA2MDcxNQoJc3R5bGUgdmVyc2lvbnMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDYtMTEtMTMgIEFuZHJldyBQaW5za2kgIDxhbmRyZXdfcGluc2tpQHBsYXlzdGF0aW9uLnNvbnkuY29tPgoKCVBSIHRyZWUtb3B0LzI5NDM5CgkqIHRyZWUtdnJwLmMgKHZycF9pbnRfY29uc3RfYmlub3ApOiBVc2UgdGhlIGNvcnJlY3QgdHJlZSB3aGVuCgljaGVja2luZyBmb3Igb3ZlcmZsb3cuCgoyMDA2LTExLTEzICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJQmFja3BvcnQgZnJvbSBtYWlubGluZToKCTIwMDYtMTAtMjMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzIxMDMyCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19yZWFsKTogRm9sZCAoZmxvYXQpLXggdG8gLShmbG9hdCl4Cglvbmx5IGlmIG5vdCBmbGFnX3JvdW5kaW5nX21hdGguCgoyMDA2LTExLTEyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCSAgICBBbmRyZXcgUGluc2tpIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG1pZGRsZS1lbmQvMjg5MTUKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfaW5pdF9jb25zdHJ1Y3Rvcik6IERvbid0IHJlZHVjZSBUUkVFX0NPTlNUQU5UCgl2ZWN0b3IgY3RvcnMuCgkqIHRyZWUtY2ZnLmMgKHZlcmlmeV9leHByKTogRG9uJ3QgbG9vayBpbnRvIFRSRUVfQ09OU1RBTlQKCXZlY3RvciBjdG9ycy4KCSogZXhwbWVkLmMgKG1ha2VfdHJlZSk6IEhhbmRsZSBDT05TVCwgU1lNQk9MX1JFRi4KCSogdHJlZS5jIChidWlsZF92ZWN0b3IpOiBIYW5kbGUgbm9uLV9DU1QgZWxlbWVudHMuCgoyMDA2LTExLTEyICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglGaXggUFIgdHJlZS1vcHRpbWl6YXRpb24vMjk1ODcKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAocHJvY2Vzc19jb25zdHJhaW50KTogRG9uJ3QKCW1hcmsgYWRkcmVzcyB0YWtlbiBkdWUgb25seSB0byBlc2NhcGVkIHZhcnMgY29uc3RyYWludC4KCjIwMDYtMTEtMTIgIEppZSBaaGFuZyAgPGppZS56aGFuZ0BhbmFsb2cuY29tPgoKCVJldmVydAoJMjAwNi0xMS0xMSAgSmllIFpoYW5nICA8amllLnpoYW5nQGFuYWxvZy5jb20+CgkqIGNvbmZpZy9iZmluL2JmaW4uaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEZWZpbmUgX19iZmluX18KCWFuZCBfX0JGSU5fXy4KCgkqIGNvbmZpZy9iZmluL2JmaW4uaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBVc2UgYnVpbHRpbl9kZWZpbmVfc3RkCglpbnN0ZWFkIG9mIGJ1aWx0aW5fZGVmaW5lIGZvciBiZmluIGFuZCBCRklOLgoKMjAwNi0xMS0xMSAgSmllIFpoYW5nICA8amllLnpoYW5nQGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIF9fYmZpbl9fCglhbmQgX19CRklOX18uCgoyMDA2LTExLTExICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBtaWRkbGUtZW5kLzI3NTI4CgkqIHN0bXQuYyAoZXhwYW5kX2FzbV9vcGVyYW5kcyk6IFVzZSBFWFBBTkRfSU5JVElBTElaRVIgaWYgdGhlCgljb25zdHJhaW50cyBhY2NlcHQgbmVpdGhlciByZWdpc3RlcnMgb3IgbWVtb3JpZXMuCgoyMDA2LTExLTExICBKaWUgWmhhbmcgIDxqaWUuemhhbmdAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL2JmaW4uaCAoRlVOQ1RJT05fUFJPRklMRVIpOiBEb24ndCB1c2UgTEFCRUxOTy4KCShOT19QUk9GSUxFX0NPVU5URVJTKTogRGVmaW5lIGFzIDEuCgoyMDA2LTExLTA5ICBTZXJnZSBCZWx5c2hldiAgPGJlbHlzaGV2QGRlcG5pLnNpbnAubXN1LnJ1PgoKCVBSIG1pZGRsZS1lbmQvMjk3MjYKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSkgPEVRX0VYUFI+OiBGaXggdHlwbyBpbiB2YXJpYWJsZSBuYW1lLgoKMjAwNi0xMS0wOSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCglQUiBib290c3RyYXAvMjY4OTIKCVBSIGJvb3RzdHJhcC8yNzgxNAoJUFIgb3RoZXIvMjg5OTQKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmUuYWM6IE1hdGNoIHBvd2VycGMqLSotZGFyd2luKiBmb3IgcG93ZXJwYyBkYXJ3aW4gY2hlY2tzLgoJKiBjb25maWcuZ2NjIChwb3dlcnBjNjQtKi1kYXJ3aW4qKTogTmV3IHRhcmdldC4KCSogY29uZmlnLmhvc3Q6IERpdHRvLgoJKiBjb25maWcvcnM2MDAwL2RhcndpbjY0Lmg6IE5ldyBmaWxlLgoJKiBjb25maWcvcnM2MDAwL3gtZGFyd2luNjQ6IERpdHRvLgoJKiBjb25maWcvcnM2MDAwL2hvc3QtcHBjNjQtZGFyd2luLmM6IERpdHRvLgoKMjAwNi0xMS0wOCAgQnJvb2tzIE1vc2VzICA8YnJvb2tzLm1vc2VzQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGk6IE1pbm9yIGZvcm1hdHRpbmcgZml4ZXMgaW4gb3B0aW9uIGxpc3RzLgoKMjAwNi0xMS0wOCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCglCYWNrcG9ydCBmcm9tIG1haW5saW5lOgoJKiBjb25maWcuZ2NjOiBBZGQgeDg2XzY0LWRhcndpbiBob3N0IHN1cHBvcnQuCgkqIGNvbmZpZy5ob3N0OiBEaXR0by4KCSogY29uZmlnL2kzODYvZGFyd2luNjQuaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9pMzg2L3QtZGFyd2luNjQ6IERpdHRvLgoKMjAwNi0xMS0wOCAgSmFuaXMgSm9obnNvbiAgPGphbmlzMTg3QHVzLmlibS5jb20+CgoJKiBnY2MvZG9jL3NvdXJjZWJ1aWxkLnRleGkgKFRlc3QgRGlyZWN0aXZlcyk6IEFkZCBvdXRwdXQtZXhpc3RzCglhbmQgb3V0cHV0LWV4aXN0cy1ub3QuCgoyMDA2LTExLTA3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjk2MTAKCSogdHJlZS1jZmdjbGVhbnVwLmMgKGNsZWFudXBfY29udHJvbF9mbG93KTogSG9ub3IgcmV0dXJuIHZhbHVlCglvZiB0cmVlX3B1cmdlX2RlYWRfZWhfZWRnZXMgYXMgaXQgbWF5IGZyZWUgZG9taW5hdG9ycy4KCgkqIGcrKy5kZy9vdGhlci9wcjI5NjEwLkM6IE5ldyB0ZXN0Y2FzZS4KCjIwMDYtMTEtMDcgIEppZSBaaGFuZyAgPGppZS56aGFuZ0BhbmFsb2cuY29tPgoKCSogZ2NjLmMgKHByb2Nlc3NfY29tbWFuZCk6IFRyZWF0IC1iIGFzIG5vcm1hbCBzd2l0Y2ggaWYgaXRzIGFyZ3VtZW50CgloYXMgbm8gZGFzaC4KCjIwMDYtMTEtMDYgIFZsYWRpbWlyIFBydXMgIDx2bGFkaW1pckBjb2Rlc291cmNlcnkuY29tPgoKCUJhY2twb3J0IGZyb20gbWFpbmxpbmU6CgkqIGNvbmZpZy9hcm0vdC1zdHJvbmdhcm0tcGU6IChUQVJHRVRfTElCR0NDMl9DRkxBR1MpOiBEbyBub3QKCXNldCBpbmhpYml0X2xpYmMuCgkqIGNvbmZpZy9hcm0vdC1zdHJvbmdhcm0tZWxmOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS90LXBlOiBMaWtld2lzZS4KCSogY29uZmlnL2FybS90LWFybS1lbGY6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL3QteHNjYWxlLWVsZjogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vdC1hcm0tY29mZjogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vdC14c2NhbGUtY29mZjogTGlrZXdpc2UuCgkqIGNvbmZpZy9hcm0vdC13aW5jZS1wZTogTGlrZXdpc2UuCgoyMDA2LTExLTA2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJQmFja3BvcnQgZnJvbSBtYWlubGluZToKCTIwMDYtMTAtMjEgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0YXJnZXQvMTkxMTYKCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogRG8gbm90IHNldCBNQVNLX0lFRUVfRlAKCWlmIGZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucyBpcyBzcGVjaWZpZWQuICBXZSBoYXZlCglmbGFnX2Zpbml0ZV9tYXRoX29ubHkgZm9yIHRoYXQuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHNxcnR4ZjIpOiBEbyBub3QgcmVxdWlyZSBUQVJHRVRfSUVFRV9GUAoJb3IgZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zLgoKCVBSIG1pZGRsZS1lbmQvMjg3OTYKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2NvbnN0X3JlbGF0aW9uYWxfb3BlcmF0aW9uKToKCURvIG5vdCBjb25zdGFudC1mb2xkIE9SREVSRUQgYW5kIFVOT1JERVJFRCBmb3IKCWZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucyBidXQgb25seSB3ZSBkbyBub3QgbmVlZCB0bwoJaG9ub3IgTmFOcyBmb3IgdGhlIGdpdmVuIG1vZGUuCgoyMDA2LTExLTA1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzI5Njk1CgkqIGZvbGQtY29uc3QuYyAoZm9sZF90ZXJuYXJ5KTogRml4IEEgPCAwID8gPHNpZ24gYml0IG9mIEE+IDogMAoJc2ltcGxpZmljYXRpb24uCgoyMDA2LTExLTAyICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogRml4IG1mcC10cmFwLW1vZGUgdHlwby4KCjIwMDYtMTEtMDIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChzcGFyYy1zdW4tc29sYXJpczIqKTogVXBkYXRlIEdNUC9NUEZSIGJ1aWxkCglpbnN0cnVjdGlvbnMuCgkoc3BhcmM2NC1zdW4tc29sYXJpczIqKTogTGlrZXdpc2UuCgoyMDA2LTExLTAyICBVcm9zIEJpemphayA8dWJpempha0BnbWFpbC5jb20+CgoJUFIgdGFyZ2V0LzI5Mzc3CgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChoODMwMF9lbWl0X3N0YWNrX2FkanVzdG1lbnQpOiBDaGFuZ2UgInNpemUiCglhcmd1bWVudCB0byBIT1NUX1dJREVfSU5ULiAgVXBkYXRlIGZ1bmN0aW9uIHByb3RvdHlwZS4KCShyb3VuZF9mcmFtZV9zaXplKTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIEhPU1RfV0lERV9JTlQuICBDaGFuZ2UKCSJzaXplIiBhcmd1bWVudCB0byBIT1NUX1dJREVfSU5ULiAgVXBkYXRlIGZ1bmN0aW9uIHByb3RvdHlwZS4KCjIwMDYtMTEtMDEgIENocmlzIEpvaG5zIDxjaHJpc0Bjb250ZW1wb3JhcnkubmV0LmF1PgoKCVBSIGJvb3RzdHJhcC8yODQwMAoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1kcml2ZXIpOiBVc2UgZXhlZXh0IHdoZW4gaW5zdGFsbGluZwoJJHRhcmdldC1nY2MtJHZlcnNpb24uCgoyMDA2LTExLTAxICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF91bmFyeSk6IERvbid0IGZvbGQgKHQxKSh0MikgdG8gKHQxKSBpZiB0aGlzCglpcyBhIEphdmEgcHJvZ3JhbS4KCjIwMDYtMTEtMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGJ1aWx0aW5zLmRlZiAoZ2FtbWEsIGxnYW1tYSk6IFVzZSBBVFRSX01BVEhGTl9GUFJPVU5ESU5HX1NUT1JFLgoKMjAwNi0xMC0zMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiB0YXJnZXQvMjQwNzEKCSogZ3Roci1wb3NpeC5oIChfX2d0aHJlYWRfYWN0aXZlX3ApOiBOZXcgaW1wbGVtZW50YXRpb24gb24gU29sYXJpcy4KCSogZ3Roci1wb3NpeDk1LmggKF9fZ3RocmVhZF9hY3RpdmVfcCk6IExpa2V3aXNlLgoKMjAwNi0xMC0zMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjk2MzcKCSogdHJlZS5jIChtYWtlX3ZlY3Rvcl90eXBlKTogRG9uJ3QgcmVjdXJzZSBpZiBUWVBFX01BSU5fVkFSSUFOVAoJb2YgdGhlIGlubmVydHlwZSBpcyB0aGUgaW5uZXJ0eXBlIGl0c2VsZi4KCgkqIGdjYy5kZy9wcjI5NjM3LmM6IE5ldyB0ZXN0LgoKMjAwNi0xMC0yNyAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLWMuYyAoZGFyd2luX2NwcF9idWlsdGlucyk6IE1vdmUgX19TVEFUSUNfXyBhbmQKCV9fRFlOQU1JQ19fIGZyb20gaGVyZSBiYWNrIHRvIC4uLgoJKiBjb25maWcvZGFyd2luLmggKENQUF9TUEVDKTogLi4uIGhlcmUuCgoyMDA2LTEwLTI2ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2luaXRfZnJhbWVfbGF5b3V0KTogQ2hlY2sgcG9zaXRpdmUKCWZyYW1lX3NpemUuCgoyMDA2LTEwLTI2ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGRvYy9leHRlbmQudGV4aSAoVmFyaWFibGUgQXR0cmlidXRlcyk6IFR5cG8gZml4LgoKMjAwNi0xMC0yNSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjb25maWcvaWE2NC9ocHV4Lmg6IERlZmluZSBfSU5DTFVERV9fU1REQ19BMV9TT1VSQ0UgaW4gQysrLgoJQWRkIHVuaXg5OC5vIHRvIGxpbmsgbGluZS4KCjIwMDYtMTAtMjUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoJICAgIERhdmlkIERhbmV5ICA8ZGRhbmV5QGF2dHJleC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yOTUxOQoJKiBydGxhbmFsLmMgKG5vbnplcm9fYWRkcmVzc19wKTogIFJlbW92ZSBjaGVjayBmb3IgdmFsdWVzIHdyYXBwaW5nLgoKMjAwNi0xMC0yNSAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChpbnRyYV9jcmVhdGVfdmFyaWFibGVfaW5mb3MpOgoJICBEb24ndCByZWNyZWF0ZSBub25sb2NhbF9hbGwgaWYgaXQgYWxyZWFkeSBleGlzdHMuCgoyMDA2LTEwLTIzICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9wcmVkaWNhdGVzLm1kICgiYnJhc19zeW1fb3BlcmFuZCIpOiBEbyBub3QgYWNjZXB0Cglub25sb2NhbCBmdW5jdGlvbiBzeW1ib2xzIGlmIGZsYWdfcGljLgoKMjAwNi0xMC0yMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc3BsaXRfY29uc3QpOiBEb24ndCBhY2NlcHQgYmFyZSBQTFVTCglleHByZXNzaW9ucy4KCjIwMDYtMTAtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBERVYtUEhBU0U6IE1hcmsgYXMgcHJlcmVsZWFzZS4KCjIwMDYtMTAtMjAgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS5oIChERUNMX1BUQV9BUlRJRklDSUFMKTogUmVtb3ZlLgoJKHRyZWVfZGVjbF93aXRoX3Zpcyk6IFJlbW92ZSBhcnRpZmljaWFsX3B0YV92YXIgZmxhZy4KCSogdHJlZS1mbG93LmggKHJlZmVyZW5jZWRfdmFyX2NoZWNrX2FuZF9pbnNlcnQpOiBFeHBvc2UuCgkobm9ubG9jYWxfYWxsKTogTmV3IHByb3RvdHlwZS4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAobm9ubG9jYWxfZm9yX3R5cGUpOiBSZW1vdmUuCgkobm9ubG9jYWxfYWxsKTogTWFrZSBnbG9iYWwuCgkobm9ubG9jYWxfbG9va3VwKTogUmVtb3ZlLgoJKG5vbmxvY2FsX2luc2VydCk6IERpdHRvLgoJKGNyZWF0ZV9ub25sb2NhbF92YXIpOiBEbyBub3QgY2FsbCBub25sb2NhbF9pbnNlcnQuCgkoZ2V0X25vbmxvY2FsX2lkX2Zvcl90eXBlKTogUmVtb3ZlLgoJKGZpbmRfZ2xvYmFsX2luaXRpYWxpemVycyk6IE1hcmsgbmV3IHZhcnMgd2UgZmluZCBmb3IgcmVuYW1pbmcuCgkoaW50cmFfY3JlYXRlX3ZhcmlhYmxlX2luZm9zKTogT25seSBjcmVhdGUgb25lIG5vbmxvY2FsLgoJKGV4cGFuZF9ub25sb2NhbF9zb2x1dGlvbnMpOiBSZW1vdmUuCgkoY29tcHV0ZV9wb2ludHNfdG9fc2V0cyk6IERvbid0IGNhbGwgaXQuCgkoaXBhX3B0YV9leGVjdXRlKTogRGl0dG8uCgkoaW5pdF9hbGlhc19oZWFwdmFycyk6IERvbid0IGNyZWF0ZSBub25sb2NhbF9mb3JfdHlwZS4KCShkZWxldGVfYWxpYXNfaGVhcHZhcnMpOiBEb24ndCByZW1vdmUgaXQuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGFjY2Vzc19jYW5fdG91Y2hfdmFyaWFibGUpOiBEb24ndCBwcnVuZQoJbm9ubG9jYWxfYWxsLgoKMjAwNi0xMC0xOSAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKERvd25sb2FkaW5nIEdDQyk6IENsYXJpZnkgbWVudGlvbiBvZgoJRm9ydHJhbiBpbiB0aGUgImZ1bGwgZGlzdHJpYnV0aW9uIiBkZXNjcmlwdGlvbi4KCjIwMDYtMTAtMTkgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8yODc3OAoJRml4IFBSIHRyZWUtb3B0aW1pemF0aW9uLzI5MTU2CglGaXggUFIgdHJlZS1vcHRpbWl6YXRpb24vMjk0MTUKCSogdHJlZS5oIChERUNMX1BUQV9BUlRJRklDSUFMKTogTmV3IG1hY3JvLgoJKHRyZWVfZGVjbF93aXRoX3Zpcyk6IEFkZCBhcnRpZmljaWFsX3B0YV92YXIgZmxhZy4KCSogdHJlZS1zc2EtYWxpYXMuYyAoaXNfZXNjYXBlX3NpdGUpOiBSZW1vdmUgYWxpYXMgaW5mbyBhcmd1bWVudCwKCXB1c2hlZCBpbnRvIGNhbGxlcnMuCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKG5vbmxvY2FsX2Zvcl90eXBlKTogTmV3IHZhcmlhYmxlLgoJKG5vbmxvY2FsX2FsbCk6IERpdHRvLgoJKHN0cnVjdCB2YXJpYWJsZV9pbmZvKTogQWRkIGRpcmVjdGx5X2RlcmVmZXJlbmNlZCBtZW1iZXIuCgkodmFyX2VzY2FwZWRfdmFycyk6IE5ldyB2YXJpYWJsZS4KCShlc2NhcGVkX3ZhcnNfdHJlZSk6IERpdHRvLgoJKGVzY2FwZWRfdmFyc19pZCk6IERpdHRvLgoJKG5vbmxvY2FsX3ZhcnNfaWQpOiBEaXR0by4KCShuZXdfdmFyX2luZm8pOiBTZXQgZGlyZWN0bHlfZGVyZWZlcmVuY2VkLgoJKGdyYXBoX3NpemUpOiBOZXcgdmFyaWFibGUKCShidWlsZF9jb25zdHJhaW50X2dyYXBoKTogVXNlIGdyYXBoX3NpemUuCgkoc29sdmVfZ3JhcGgpOiBEb24ndCBwcm9jZXNzIGNvbnN0cmFpbnRzIHRoYXQgY2Fubm90IGNoYW5nZSB0aGUKCXNvbHV0aW9uLCBkb24ndCB0cnkgdG8gcHJvcGFnYXRlIGFuIGVtcHR5IHNvbHV0aW9uIHRvIG91cgoJc3VjY2Vzc29ycy4KCShwcm9jZXNzX2NvbnN0cmFpbnQpOiBTZXQgZGlyZWN0bHlfZGVyZWZlcmVuY2VkLgoJKGNvdWxkX2hhdmVfcG9pbnRlcnMpOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X2NvbnN0cmFpbnRfZm9yX2NvbXBvbmVudF9yZWYpOiBEb24ndCBwcm9jZXNzIFNUUklOR19DU1QuCgkobm9ubG9jYWxfbG9va3VwKTogTmV3IGZ1bmN0aW9uLgoJKG5vbmxvY2FsX2luc2VydCk6IERpdHRvLgoJKGNyZWF0ZV9ub25sb2NhbF92YXIpOiBEaXR0by4KCShnZXRfbm9ubG9jYWxfaWRfZm9yX3R5cGUpOiBEaXR0by4KCShnZXRfY29uc3RyYWludF9mb3IpOiBBbGxvdyByZXN1bHRzIHZlY3RvciB0byBiZSBlbXB0eSBpbiB0aGUgY2FzZQoJb2Ygc3RyaW5nIGNvbnN0YW50cy4KCUhhbmRsZSByZXN1bHRzIG9mIGNhbGxzIHByb3Blcmx5LgoJKHVwZGF0ZV9hbGlhc19pbmZvKTogVXBkYXRlIGFsaWFzIGluZm8gc3RhdHMgb24gbnVtYmVyIGFuZCB0eXBlIG9mCgljYWxscy4KCShmaW5kX2Z1bmNfYWxpYXNlcyk6IFVzZSBjb3VsZF9oYXZlX3BvaW50ZXJzLgoJKG1ha2VfY29uc3RyYWludF9mcm9tX2VzY2FwZWQpOiBSZW5hbWVkIGZyb20KCW1ha2VfY29uc3RyYWludF90b19hbnl0aGluZywgYW5kIGNoYW5nZWQgdG8gbWFrZSBjb25zdHJhaW50cyBmcm9tCgllc2NhcGUgdmFyaWFibGUuCgkobWFrZV9jb25zdHJhaW50X3RvX2VzY2FwZWQpOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9nbG9iYWxfaW5pdGlhbGl6ZXJzKTogRGl0dG8uCgkoY3JlYXRlX3ZhcmlhYmxlX2luZm9fZm9yKTogTWFrZSBjb25zdHJhaW50IGZyb20gZXNjYXBlZCB0byBhbnkKCWdsb2JhbCB2YXJpYWJsZSwgYW5kIGZyb20gYW55IGdsb2JhbCB2YXJpYWJsZSB0byB0aGUgc2V0IG9mCgllc2NhcGVkIHZhcnMuCgkoaW50cmFfY3JlYXRlX3ZhcmlhYmxlX2luZm9zKTogRGVhbCB3aXRoIGVzY2FwZWQgaW5zdGVhZCBvZgoJcG9pbnRpbmcgdG8gYW55dGhpbmcuCgkoc2V0X3VpZHNfaW5fcHRzZXQpOiBEbyB0eXBlIHBydW5pbmcgb24gZGlyZWN0bHkgZGVyZWZlcmVuY2VkCgl2YXJpYWJsZXMuCgkoZmluZF93aGF0X3BfcG9pbnRzX3RvKTogQWRqdXN0IGNhbGwgdG8gc2V0X3VpZHNfd2l0aF9wdHNldC4KCShpbml0X2Jhc2VfdmFycyk6IEZpeCBjb21tZW50LCBhbmQgaW5pdGlhbGl6ZSBlc2NhcGVkX3ZhcnMuCgkobmVlZF90b19zb2x2ZSk6IFJlbW92ZWQuCgkoZmluZF9lc2NhcGVfY29uc3RyYWludHMpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX25vbmxvY2FsX3NvbHV0aW9ucyk6IERpdHRvLgoJKGNvbXB1dGVfcG9pbnRzX3RvX3NldHMpOiBDYWxsIGZpbmRfZXNjYXBlX2NvbnN0cmFpbnRzIGFuZAoJZXhwYW5kX25vbmxvY2FsX3NvbHV0aW9ucy4KCShkZWxldGVfcG9pbnRzX3RvX3NldHMpOiBEb24ndCBmYWxsIG9mZiB0aGUgZW5kIG9mIHRoZSBncmFwaC4KCShpbml0X2FsaWFzX2hlYXB2YXJzKTogSW5pdGlhbGl6ZSBub25sb2NhbF9mb3JfdHlwZSBhbmQKCW5vbmxvY2FsX2FsbC4KCShkZWxldGVfYWxpYXNfaGVhcHZhcnMpOiBGcmVlIG5vbmxvY2FsX2Zvcl90eXBlIGFuZCBudWxsIG91dAoJbm9ubG9jYWxfYWxsLgoKMjAwNi0xMC0xOSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoYWRkX2RvdWJsZSk6IFJlbmFtZSB0byBhZGRfZG91YmxlX3dpdGhfc2lnbi4KCUFkZCAndW5zaWduZWRfcCcgcGFyYW1ldGVyIGFuZCB0YWtlIGl0IGludG8gYWNjb3VudCBmb3IgdGhlIG92ZXJmbG93LgoJKG11bF9kb3VibGUpOiBSZW5hbWUgdG8gbXVsX2RvdWJsZV93aXRoX3NpZ24uCglBZGQgJ3Vuc2lnbmVkX3AnIHBhcmFtZXRlciBhbmQgdGFrZSBpdCBpbnRvIGFjY291bnQgZm9yIHRoZSBvdmVyZmxvdy4KCShmb2xkX2Rpdl9jb21wYXJlKTogQ2FsbCBhZGRfZG91YmxlX3dpdGhfc2lnbiBpbnN0ZWFkIG9mIGFkZF9kb3VibGUKCWFuZCBtdWxfZG91YmxlX3dpdGhfc2lnbiBpbnN0ZWFkIG9mIG11bF9kb3VibGUsIHBhc3NpbmcgdGhlbSB0aGUKCXVuc2lnbmVkbmVzcyBvZiB0aGUgdHlwZS4KCSogdHJlZS5oIChhZGRfZG91YmxlKTogTWFjcm9pemUuCgkoYWRkX2RvdWJsZV93aXRoX3NpZ24pOiBOZXcgcHJvdG90eXBlLgoJKG11bF9kb3VibGUpOiBNYWNyb2l6ZS4KCShtdWxfZG91YmxlX3dpdGhfc2lnbik6IE5ldyBwcm90b3R5cGUuCgoyMDA2LTEwLTE5ICBDaGVuIExpcWluICA8bGlxaW5Ac3Vubm9ydGguY29tLmNuPgoKICAgICAgICAqIGNvbmZpZy9zY29yZS9jcnRpLmFzbTogTmV3IGZpbGUuCiAgICAgICAgKiBjb25maWcvc2NvcmUvY3J0bi5hc206IE5ldyBmaWxlLgogICAgICAgICogY29uZmlnL3Njb3JlL2VsZi5oOiBOZXcgZmlsZS4KICAgICAgICAqIGNvbmZpZy9zY29yZS9tYWMubWQ6IE5ldyBmaWxlLgogICAgICAgICogY29uZmlnL3Njb3JlL21pc2MubWQ6IE5ldyBmaWxlLgogICAgICAgICogY29uZmlnL3Njb3JlL211bC1kaXYuUzogTmV3IGZpbGUuCiAgICAgICAgKiBjb25maWcvc2NvcmUvcHJlZGljYXRlcy5tZDogTmV3IGZpbGUuCiAgICAgICAgKiBjb25maWcvc2NvcmUvc2NvcmU3Lm1kOiBOZXcgZmlsZS4KICAgICAgICAqIGNvbmZpZy9zY29yZS9zY29yZS5jOiBOZXcgZmlsZS4KICAgICAgICAqIGNvbmZpZy9zY29yZS9zY29yZS1jb252Lmg6IE5ldyBmaWxlLgogICAgICAgICogY29uZmlnL3Njb3JlL3Njb3JlLmg6IE5ldyBmaWxlLgogICAgICAgICogY29uZmlnL3Njb3JlL3Njb3JlLm1kOiBOZXcgZmlsZS4KICAgICAgICAqIGNvbmZpZy9zY29yZS9zY29yZS1tZGF1eC5jOiBOZXcgZmlsZS4KICAgICAgICAqIGNvbmZpZy9zY29yZS9zY29yZS1tZGF1eC5oOiBOZXcgZmlsZS4KICAgICAgICAqIGNvbmZpZy9zY29yZS9zY29yZS1tb2Rlcy5kZWY6IE5ldyBmaWxlLgogICAgICAgICogY29uZmlnL3Njb3JlL3Njb3JlLm9wdDogTmV3IGZpbGUuCiAgICAgICAgKiBjb25maWcvc2NvcmUvc2NvcmUtcHJvdG9zLmg6IE5ldyBmaWxlLgogICAgICAgICogY29uZmlnL3Njb3JlL3Njb3JlLXZlcnNpb24uaDogTmV3IGZpbGUuCiAgICAgICAgKiBjb25maWcvc2NvcmUvdC1zY29yZS1lbGY6IE5ldyBmaWxlLgogICAgICAgICogY29uZmlnLmdjYzogQWRkIHNjb3JlKi0qLSogY29uZmlndXJhdGlvbnMoVXBkYXRlIGJlZm9yZSkuCiAgICAgICAgKiBkb2MvaW52b2tlLnRleGkgKFNjb3JlIE9wdGlvbnMpOiBOZXcgc2VjdGlvbi4KICAgICAgICAqIGRvYy9tZC50ZXhpIChTY29yZSBmYW1pbHkpOiBOZXcgc2VjdGlvbiB0byBkb2N1bWVudCBjb25zdHJhaW50cy4KCjIwMDYtMTAtMTkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvYXJtL2FybS5jOiBGaXggc3BlbGxpbmcgdHlwby4KCjIwMDYtMTAtMTggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKFByZXJlcXVpc2l0ZXMpOiBNZW50aW9uIGF1dG9tYWtlIDEuOS42LgoKMjAwNi0xMC0xOCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIG1pZGRsZS1lbmQvMjkyOTkKCSogY2ZnZXhwYW5kLmMgKGV4cGFuZF91c2VkX3ZhcnNfZm9yX2Jsb2NrKTogVmFycyBtYXJrZWQgdXNlZCBieSB1c2VyCglhcmUgdXNlZC4KCjIwMDYtMTAtMTggIE1hcmNpbiBEYWxlY2tpICA8bWFydGluQGRhbGVja2kuZGU+CgoJKiBvbXAtbG93LmMgKGV4cGFuZF9wYXJhbGxlbF9jYWxsKTogVXNlIEJTSV9TQU1FX1NUTVQgaW5zdGVhZCBvZgoJVFNJX1NBTUVfU1RNVCwgc2luY2UgdGhhdCdzIHRoZSBkZXNpcmVkIGVudGl0eS4KCjIwMDYtMTAtMTcgIFdvbGZnYW5nIEdlbGxlcmljaCAgPGdlbGxlcmljaEBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvY29udHJhaW50cy5tZDogTmV3IGZpbGUuCiAgICAgICAgKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX21lbV9jb25zdHJhaW50LAoJczM5MF9PX2NvbnN0cmFpbnRfc3RyLCBzMzkwX05fY29uc3RyYWludF9zdHIsCglzMzkwX2Zsb2F0X2NvbnN0X3plcm9fcCk6IEZ1bmN0aW9uIHByb3RvdHlwZXMgYWRkZWQuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9leHRyYV9jb25zdHJhaW50X3N0ciwKCXMzOTBfY29uc3RfZG91YmxlX29rX2Zvcl9jb25zdHJhaW50X3AsCglzMzkwX2NvbnN0X29rX2Zvcl9jb25zdHJhaW50X3ApOiBGdW5jdGlvbnMgcmVtb3ZlZC4KICAgICAgICAoczM5MF9tZW1fY29uc3RyYWludCwgczM5MF9PX2NvbnN0cmFpbnRfc3RyLCBzMzkwX05fY29uc3RyYWludF9zdHIsCglzMzkwX2Zsb2F0X2NvbnN0X3plcm9fcCk6IE5ldyBmdW5jdGlvbnMuCgkqIGNvbmZpZy9zMzkwL3MzOTAuaCAoUkVHX0NMQVNTX0ZST01fTEVUVEVSLCBDT05TVF9PS19GT1JfQ09OU1RSQUlOVF9QLAoJQ09OU1RfRE9VQkxFX09LX0ZPUl9DT05TVFJBSU5UX1AsIEVYVFJBX0NPTlNUUkFJTlRfU1RSLAoJRVhUUkFfTUVNT1JZX0NPTlNUUkFJTlQsIEVYVFJBX0FERFJFU1NfQ09OU1RSQUlOVCwgQ09OU1RSQUlOVF9MRU4pOgoJTWFjcm8gZGVmaW5pdGlvbnMgcmVtb3ZlZC4KCShzMzkwX2NvbnN0X29rX2Zvcl9jb25zdHJhaW50X3AsIHMzOTBfY29uc3RfZG91YmxlX29rX2Zvcl9jb25zdHJhaW50X3AsCglzMzkwX2V4dHJhX2NvbnN0cmFpbnRfc3RyKTogRnVuY3Rpb25zIHJlbW92ZWQuCgoyMDA2LTEwLTE3ICBBbmRyZXcgUGluc2lraSAgPHBpbnNraWFAZ21haWwuY29tPgoJICAgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHRhcmdldC8yOTQxMwoJKiBjb25maWcvbWlwcy9saW51eC5oIChTVUJUQVJHRVRfQ0MxX1NQRUMpOiBPdmVycmlkZS4KCSogY29uZmlnL21pcHMvbWlwcy5oIChDQzFfU1BFQyk6IE92ZXJyaWRlIGFueSBlYXJsaWVyIGRlZmluaXRpb24uCgoyMDA2LTEwLTE2ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoREJYX1JFR0lTVEVSX05VTUJFUik6IE1vdmUgdG8gcnM2MDAwLmguCgkoRFdBUkYyX0ZSQU1FX1JFR19PVVQpOiBMaWtld2lzZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoREJYX1JFR0lTVEVSX05VTUJFUik6IE1vdmUgZnJvbSBzeXN2NC5oLgoJKERXQVJGMl9GUkFNRV9SRUdfT1VUKTogTGlrZXdpc2UuCgoyMDA2LTEwLTE3ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX3J0eF9jb3N0c18xKTogSGFuZGxlIG11bHRpcGx5LWFjY3VtdWxhdGUuCgoyMDA2LTEwLTE2ICBCcm9va3MgTW9zZXMgIDxibW9zZXNAc3RhbmZvcmQuZWR1PgoKCSogZG9jL2NvbnRyaWIudGV4aSwgZG9jL2luc3RhbGwudGV4aSwgZG9jL3N0YW5kYXJkcy50ZXhpOgoJU3RhbmRhcmRpemUgb24gIkdOVSBGb3J0cmFuIiBhcyB0aGUgb2ZmaWNpYWwgbmFtZSBvZiB0aGUgRm9ydHJhbgoJY29tcGlsZXIuCgoyMDA2LTEwLTE2ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoRGFyd2luIE9wdGlvbnMpOiBEb2N1bWVudCAtbWtlcm5lbC4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBBZGQKCS1ta2VybmVsIHN1cHBvcnQuCgkoQ19DT01NT05fT1ZFUlJJREVfT1BUSU9OUyk6IEFkZCAtbWtlcm5lbCBzdXBwb3J0LiAgQWRkCglTVUJUQVJHRVRfQ19DT01NT05fT1ZFUlJJREVfT1BUSU9OUyBjYWxsb3V0LgoJKENDMV9TUEVDKTogRG9uJ3QgdHVybiBvbiAtZlBJQyB3aGVuIC1ta2VybmVsIGlzIGdpdmVuLgoJKE9TX01JU1NJTkdfQUxUSVZFQyk6IEFkZC4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogQWRkCglTVUJTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyBjYWxsb3V0LgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoQ0MxX1NQRUMpOiBEb24ndCB0dXJuIG9uIC1mUElDIHdoZW4KCS1ta2VybmVsLCAtc3RhdGljIG9yIC1tZHluYW1pYy1uby1waWMgaXMgZ2l2ZW4uCgkoQ19DT01NT05fT1ZFUlJJREVfT1BUSU9OUyk6IEFkZC4KCSogY29uZmlnL2Rhcndpbi5vcHQgKGZhcHBsZS1rZXh0KTogQWRkLgoJKG1rZXJuZWwpOiBBZGQuCgkqIGNvbmZpZy9kYXJ3aW4uaCAoVEFSR0VUX09QVElPTl9UUkFOU0xBVEVfVEFCTEUpOiBBZGQKCS1mYXBwbGUta2V4dCwgLWZpbmRpcmVjdC12aXJ0dWFsLWNhbGxzLCAtZnRlcm1pbmF0ZWQtdnRhYmxlcyBhbmQKCS1ta2VybmVsIHN1cHBvcnQuCgkoU1VCU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBBZGQuCgkoU1VCVEFSR0VUX0NfQ09NTU9OX09WRVJSSURFX09QVElPTlMpOiBBZGQuCgkoQ1BQX1NQRUMpOiBNb3ZlIGRlZmluZXMgZm9yIF9fRFlOQU1JQ19fIGFuZCBfX1NUQVRJQ19fIGZyb20gaGVyZS4uLgoJKFNVQlRBUkdFVF9BVFRSSUJVVEVfVEFCTEUpOiBBZGQgYXBwbGVfa2V4dF9jb21wYXRpYmlsaXR5LgoJKFRBUkdFVF9DWFhfQ0RUT1JfUkVUVVJOU19USElTKTogQWRkLgoJKGZsYWdfbWtlcm5lbCk6IEFkZC4KCShmbGFnX2FwcGxlX2tleHQpOiBBZGQuCgkoVEFSR0VUX0tFWFRBQkkpOiBBZGQuCgkqIGNvbmZpZy9kYXJ3aW4uYyAoZGFyd2luX2hhbmRsZV9rZXh0X2F0dHJpYnV0ZSk6IEFkZC4KCShEQVJXSU5fVlRBQkxFX1ApOiBBZGQuCgkoZGFyd2luX2JpbmRzX2xvY2FsX3ApOiBBZGQgcGFydGlhbCBzdXBwb3J0IGZvciByZWJpbmRpbmcgdnRhYmxlcwoJaW4ga2V4dHMuCgkoZGFyd2luX2tleHRhYmlfcCk6IEFkZC4KCShkYXJ3aW5fb3ZlcnJpZGVfb3B0aW9ucyk6IEFkZC4KCSogY29uZmlnL2Rhcndpbi1wcm90b3MuaCAoZGFyd2luX2hhbmRsZV9rZXh0X2F0dHJpYnV0ZSk6IEFkZC4KCShkYXJ3aW5fa2V4dGFiaV9wKTogQWRkLgoJKGRhcndpbl9vdmVycmlkZV9vcHRpb25zKTogQWRkLgoJKiBjb25maWcvZGFyd2luLWMuYyAoZGFyd2luX2NwcF9idWlsdGlucyk6IC4uLiBtb3ZlIGRlZmluZXMgZm9yCglfX0RZTkFNSUNfXyBhbmQgX19TVEFUSUNfXyBoZXJlLgoKMjAwNi0xMC0xNiAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpLCBkb2MvbWFrZWZpbGUudGV4aSwgZG9jL2luc3RhbGwudGV4aToKCUFkZGVkIG1lbnRpb24gb2YgIm1ha2UgcGRmIiB0YXJnZXQsIGFuZCBUZXhpbmZvIHJlcXVpcmVtZW50cyBmb3IKCXNhbWUuCgoyMDA2LTEwLTE2ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9kZWNvbXBvc2VfYWRkcmVzcyk6IEFsbG93IHN5bWJvbCtvZmZzZXQKCWludG8gdGhlIEdPVCBpbiBjYXNlIHdlIG5lZWQgYSBzdWJyZWcgb2YgdGhlIGFkZHJlc3MuCgoyMDA2LTEwLTE2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdGFyZ2V0LzI1NTE5CgkqIGRvYy9leHRlbmQudGV4aSAoWDg2IEJ1aWx0LWluIEZ1bmN0aW9ucyk6IEZpeCB0eXBvcyBpbgoJU1NFIGJ1aWx0aW4gZG9jdW1lbnRhdGlvbi4gIERvY3VtZW50IFNTRTIgYnVpbHRpbnMuCgoyMDA2LTEwLTE1ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGE2NC1ocHV4LmggKExJTktfU1BFQyk6IEZvcmNlIF9fY3hhX2ZpbmFsaXplIHRvIGJlIGFuIHVuZGVmaW5lZAoJc3ltYm9sIGluIHRoZSBvdXRwdXQgZmlsZSBmb3Igbm9uLXNoYXJlZCBsaW5rcyB3aGVuIC1ub3N0ZGxpYiBvcgoJLW5vZGVmYXVsdGxpYnMgaXNuJ3Qgc3BlY2lmaWVkLgoKCSogY29uZmlnLmdjYyAoaHBwYSo2NCotKi1ocHV4MTEqLCBocHBhWzEyXSotKi1ocHV4MTEqKTogRGVmYXVsdCB0bwoJcG9zaXggdGhyZWFkIHN1cHBvcnQuCgoyMDA2LTEwLTE1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgbWlkZGxlLWVuZC8yOTI0MQoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9wcmVzZXJ2ZV9mdW5jdGlvbl9ib2R5X3ApOiBQcmVzZXJ2ZSBmdW5jdGlvbnMKCWRlY2xhcmVkIGFsd2F5c19pbmxpbmUgZXZlbiB3aGVuIG5vdCBpbmxpbmluZy4KCjIwMDYtMTAtMTUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CiAgICAgICAgICAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CiAgICAgICAgICAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdtYWlsLmNvbT4KCglQUiBtaWRkbGUtZW5kLzI5MTExCgkqIGJ1aWx0aW5zLmMgKGdldF9wb2ludGVyX2FsaWdubWVudCk6IFJldHVybiAwIGlmIFRFUiBpcyBub3QgcnVuLgoKMjAwNi0xMC0xNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgogICAgICAgICAgICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8yOTI5OQoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9jb21waWxhdGlvbl91bml0KTogQ2FsbAoJcHJvY2Vzc19mdW5jdGlvbl9hbmRfdmFyaWFibGVfYXR0cmlidXRlcyBvbiBhbGwgdmFyaWFibGVzLCBpbmNsdWRpbmcKCXRob3NlIGRpc2NvdmVyZWQgZHVyaW5nIGNncmFwaCBjb25zdHJ1Y3Rpb24gcGhhc2UuCgoyMDA2LTEwLTE1ICBCZXJuaGFyZCBGaXNjaGVyICA8YWxkb3RAZ2NjLmdudS5vcmc+CgoJKiBmaW5hbC5jOiBVcGRhdGUgQ29weXJpZ2h0IHllYXIuIENvbW1lbnRhcnkgdHlwbyBmaXguIEZpeCB3aGl0ZXNwYWNlCgoyMDA2LTEwLTE0ICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBjb25maWcvaTM4Ni9hdGhsb24ubWQgKGF0aGxvbl9maXN0KTogQWRkIGZpc3R0cC4KCjIwMDYtMTAtMTMgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCSAgICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGFpcnMuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjkyNTAKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpIDxOT05fTFZBTFVFX0VYUFIsIE5PUF9FWFBSLAoJQ09OVkVSVF9FWFBSPjogQ2hhbmdlIEVYUEFORF9TVU0gbW9kaWZpZXIgdG8gRVhQQU5EX05PUk1BTCB3aGVuCglyZWN1cnNpbmcuCgoyMDA2LTEwLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9zY29yZS9zY29yZS5jLCBjb25maWcvc2NvcmUvc2NvcmUuaDogRml4IGNvbW1lbnQKCXR5cG9zLgoKMjAwNi0xMC0xMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCVBSIGJvb3RzdHJhcC8yOTQwMgoJKiBNYWtlZmlsZS5pbiAoQUxMX0dURklMRVNfSCk6IFVzZSAkKHNvcnQgLi4uKSBpbnN0ZWFkIG9mCglzaGVsbCBwaXBlbGluZS4KCjIwMDYtMTAtMTMgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmggKEhBTkRMRV9QUkFHTUFfUEFDS19QVVNIX1BPUCk6IERlZmluZS4KCjIwMDYtMTAtMTMgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoKCVJldmVydCB0aGlzIGNoYW5nZToKCTIwMDYtMTAtMTMgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoJKiBjb25maWcvZWxmb3MuaCAoTUFYX09GSUxFX0FMSUdOTUVOVCk6IERlZmF1bHQgdG8gbGFyZ2VzdAoJYWxpZ25tZW50IHN1cHBvcnRlZCBieSAzMi1iaXQgRUxGLgoKMjAwNi0xMC0xMyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uYyAoZGFyd2luX2VtaXRfdW53aW5kX2xhYmVsKTogU3RyaXAKCW5hbWUgZW5jb2RpbmcuIFVzZSBERUNMX0FTU0VNQkxFUl9OQU1FX1NFVF9QLgoKMjAwNi0xMC0xMyAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI5NDQ2CgkqIHRyZWUtdnJwLmMgKGZpeF9lcXVpdmFsZW5jZV9zZXQpOiBSZW1vdmUuCgkoZXh0cmFjdF9yYW5nZV9mcm9tX2Fzc2VydCk6IERvIG5vdCBjYWxsIGZpeF9lcXVpdmFsZW5jZV9zZXQuCgkoZGVidWdfdmFsdWVfcmFuZ2UpOiBQcmludCBhIG5ld2xpbmUuCgkoY29tcGFyZV9uYW1lX3dpdGhfdmFsdWUpOiBGb3IgZXF1aXZhbGVuY2Ugc2V0cyB3aXRoCglpbmNvbnNpc3RlbnQgdmFsdWUgcmFuZ2VzIGNvbnNlcnZhdGl2ZWx5IGJhaWwgb3V0LgoJKGNvbXBhcmVfbmFtZXMpOiBMaWtld2lzZS4KCjIwMDYtMTAtMTMgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKCotaWJtLWFpeCopOiBBZGQgY29tbWVudCBhYm91dCAzMi1iaXQgR01QCglhbmQgTVBGUiBmb3IgZ2ZvcnRyYW4uCgoyMDA2LTEwLTEzICBDYXJsb3MgTydEb25lbGwgIDxjYXJsb3NAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9lbGZvcy5oIChNQVhfT0ZJTEVfQUxJR05NRU5UKTogRGVmYXVsdCB0byBsYXJnZXN0CglhbGlnbm1lbnQgc3VwcG9ydGVkIGJ5IDMyLWJpdCBFTEYuCgoyMDA2LTEwLTEzICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIGMvMjkwOTIKCgkqIGMtdHlwZWNrLmMgKGRpZ2VzdF9pbml0KTogQWx3YXlzIGFsbG93IGluaXRpYWxpemluZyB2ZWN0b3JzCgl0aGF0IGhhdmUgc3RhdGljIHN0b3JhZ2UgZHVyYXRpb24gd2l0aCBjb21wb3VuZCBsaXRlcmFscy4KCSogdHJlZS5jIChidWlsZF90eXBlX2F0dHJpYnV0ZV9xdWFsX3ZhcmlhbnQpOiBOZXcsIGJhc2VkIG9uCglidWlsZF90eXBlX2F0dHJpYnV0ZV92YXJpYW50LgoJKGJ1aWxkX3R5cGVfYXR0cmlidXRlX3ZhcmlhbnQpOiBSZXdyaXRlIHVzaW5nIHRoZSBmb3JtZXIuCgkobWFrZV92ZWN0b3JfdHlwZSk6IFVzZSBidWlsZF90eXBlX2F0dHJpYnV0ZV9xdWFsX3ZhcmlhbnQgdG8gYnVpbGQKCXR5cGUgdmFyaWFudHMuICBVc2UgdHlwZV9oYXNoX2Nhbm9uIG9uIHRoZSBvdGhlcnMuCgoyMDA2LTEwLTEzICBEYW5pZWwgQmVybGluIDxkYmVybGluQGRiZXJsaW4ub3JnPgoJICAgIFJhbWFuYSBSYWRoYWtyaXNobmFuICA8cmFtYW5hLnJhZGhha3Jpc2huYW5AY2VsdW5pdGUuY29tPgoKCSogdHJlZS1mbG93LWlubGluZS5oICh6ZXJvX3NzYV9vcGVyYW5kcyk6IEZpeCBjb21tZW50LgoKMjAwNi0xMC0xMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIGMvMjg0MTkKCSogYy1kZWNsLmMgKGNfbWFrZV9mbmFtZV9kZWNsKTogRG8gbm90IHNlZ2ZhdWx0IGluIGNhc2Ugd2hlcmUKCWN1cnJlbnRfZnVuY3Rpb25fZGVjbCBpcyBzZXQgYnV0IGN1cnJlbnRfZnVuY3Rpb25fc2NvcGUgaXMgbm90LgoKMjAwNi0xMC0xMiAgSmllIFpoYW5nICA8amllLnpoYW5nQGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLm1kIChlaF9yZXR1cm4pOiBDYWxsIGVtaXRfanVtcF9pbnNuIGluc3RlYWQgb2YKCWVtaXRfaW5zbiB0byBlbWl0IGVoX3JldHVybl9pbnRlcm5hbCBpbnN0cnVjdGlvbi4KCShlaF9yZXR1cm5faW50ZXJuYWwpOiBFeHBsaWNpdGx5IHNldCBwYy4KCjIwMDYtMTAtMTEgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yODIzMAoJKiB0cmVlLXZycC5jICh2cnBfaW50X2NvbnN0X2Jpbm9wKTogTW92ZSBmbGFnX3dyYXB2IGhhbmRsaW5nCgl0byB0aGUgY29ycmVjdCBwbGFjZS4KCjIwMDYtMTAtMTEgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBpbmxpbmUtYXNtLzI5MTE5CgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2FzbV9leHByKTogTWFyayB0aGUgZ2ltcGxpZmllZCBsdmFsdWUKCWFkZHJlc3NhYmxlLgoKMjAwNi0xMC0xMCAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIGNvbmZpZ3VyZS5hYzogQWRkZWQgcGRmIHRvICJNYWtlLWhvb2tzIgoJKiBNYWtlZmlsZS5pbjogQWRkZWQgVEVYSTJQREYgZGVmaW5pdGlvbiwgYW5kIHZhcmlvdXMgcGRmLWZpbGUKCXRhcmdldHMgYW5kICoucGRmIGZpbGUgcGF0dGVybnMgaW4gY2xlYW51cCB0YXJnZXRzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwNi0xMC0xMCAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCSogY29uZmlnL2F2ci9wcmVkaWNhdGVzLm1kOiBOZXcgZmlsZS4KCSogY29uZmlnL2F2ci9hdnIubWQ6IEluY2x1ZGUgaXQuCgkoUkVHX1NQKTogTmV3IGNvbnN0YW50LgoJKHBlZXBob2xlcyk6IFVzZSBwcmVkaWNhdGVzLgoJKHNicnhfYnJhbmNoLCBzYnJ4X2FuZF9icmFuY2hoaSwgc2JyeF9hbmRfYnJhbmNoc2ksIGJyYW5jaCwgcnZicmFuY2gsCglkaWZmaWN1bHRfYnJhbmNoLCAgZGlmZmljdWx0X3J2YnJhbmNoLCBjYmksIHNiaSwgc2JpeF9icmFuY2gsCglzYml4X2JyYW5jaF9iaXQ3LCBzYml4X2JyYW5jaF90bXAsIHNiaXhfYnJhbmNoX3RtcF9iaXQ3KTogRGl0dG8uCgoyMDA2LTEwLTEwICBBZGFtIE5lbWV0ICA8YW5lbWV0QGNhdml1bW5ldHdvcmtzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19zYXZlX3Jlc3RvcmVfcmVnKTogVXNlIGdlbl9mcmFtZV9tZW0gdG8KCWF2b2lkIGFsaWFzIHNldCAwLgoKMjAwNi0xMC0xMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yOTI3MgoJKiBidWlsdGlucy5jICh2YXJfZGVjbF9jb21wb25lbnRfcCk6IE5ldyBmdW5jdGlvbi4KCShmb2xkX2J1aWx0aW5fbWVtc2V0LCBmb2xkX2J1aWx0aW5fbWVtb3J5X29wKTogUmVzdHJpY3QKCXNpbmdsZSBlbnRyeSBvcHRpbWl6YXRpb24gdG8gdmFyaWFibGVzIGFuZCBjb21wb25lbnRzIHRoZXJlb2YuCgoyMDA2LTEwLTEwICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yOTMyMwoJKiBleGNlcHQuYyAoc2V0X25vdGhyb3dfZnVuY3Rpb25fZmxhZ3MpOiBGb3IgZnVuY3Rpb25zCgl0aGF0IGRvIG5vdCBiaW5kIGxvY2FsIGJhaWwgb3V0IGVhcmx5LgoKMjAwNi0xMC0xMCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKFJTLzYwMDAgYW5kIFBvd2VyUEMgT3B0aW9ucyk6IEFkZCAtbSB0byB0aGUKCS1tZGxtemIgb3B0aW9uLgoKMjAwNi0xMC0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglSZXZlcnQgZW11dGxzIHBhdGNoLgoKMjAwNi0xMC0wOSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMjkyNTQKCSogY2dyYXBodW5pdC5jICh2ZXJpZnlfY2dyYXBoX25vZGUpOiBCYWlsIG91dCBvbiBlYXJsaWVyCgllcnJvcnMuCgoyMDA2LTEwLTA5ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCglQUiB0YXJnZXQvMjc4ODAKCSogdW53aW5kLWMuYyAoUEVSU09OQUxJVFlfRlVOQ1RJT04pOiBJZmRlZiB1c2Ugb2YgX1Vud2luZF9HZXRJUEluZm8uCgkqIGNvbmZpZ3VyZS5hYyAoSEFWRV9HRVRJUElORk8pOiBDaGVjayBmb3IgX1Vud2luZF9HZXRJUEluZm8uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKMjAwNi0xMC0wOSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogdHJlZS1tdWRmbGFwLmMgKG1mX3hmb3JtX2RlcmVmc18xKTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZCBUUkVFX1RZUEUuCgoyMDA2LTEwLTA4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19sZWdpdGltaXplX3Rsc19hZGRyZXNzKTogSW1wbGVtZW50CglhbGwgVExTIG1vZGVscyBpbiB0aGUgc2FtZSB3YXkgYXMgbG9jYWwgZXhlYyBpZiAhVEFSR0VUX0FCSUNBTExTLgoJUmVtb3ZlIHN0cmF5IG5ld2xpbmUuCgoyMDA2LTEwLTA4ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jbGFzc2lmeV9zeW1ib2wpOiBEbyBub3QgcmV0dXJuCglTWU1CT0xfU01BTExfREFUQSBpZiBTWU1CT0xfUkVGX1dFQUsuCgkobWlwc19pbl9zbWFsbF9kYXRhX3ApOiBUd2VhayBjb21tZW50cy4KCjIwMDYtMTAtMDggIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvZWxmLmggKEhBTkRMRV9QUkFHTUFfUFVTSF9QT1ApOiBEZWZpbmUuCgoyMDA2LTEwLTA3ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdpbXBsaWZ5LmMsIHNjaGVkLWludC5oOiBGaXggY29tbWVudCB0eXBvcy4KCgkqIHNjaGVkLWludC5oOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDYtMTAtMDYgIE1heGltIEt1dnlya292ICA8bWt1dnlya292QGlzcHJhcy5ydT4KCgkqIHNjaGVkLWludC5oIChJU19TUEVDVUxBVElPTl9DSEVDS19QLCBJU19TUEVDVUxBVElPTl9TSU1QTEVfQ0hFQ0tfUCk6CglOZXcgbWFjcm9zLgoJKiBzY2hlZC1lYmIuYyAoYmVnaW5fc2NoZWR1bGVfcmVhZHkpOiBVc2UgdGhlbS4KCSogaGFpZmEtc2NoZWQuYyAoc2NoZWR1bGVfaW5zbiwgbW92ZV9pbnNuLCB0cnlfcmVhZHksCglhZGRfdG9fc3BlY3VsYXRpdmVfYmxvY2ssIGNyZWF0ZV9jaGVja19ibG9ja190d2luLCBzcGVjdWxhdGVfaW5zbiwKCWZpeF9qdW1wX21vdmUsIG1vdmVfYmxvY2tfYWZ0ZXJfY2hlY2spOiBEaXR0by4KCSogc2NoZWQtcmduLmMgKG5ld19yZWFkeSk6IERpdHRvLgoKMjAwNi0xMC0wNiAgTWF4aW0gS3V2eXJrb3YgIDxta3V2eXJrb3ZAaXNwcmFzLnJ1PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjkxMjgKCSogc2NoZWQtaW50LmggKElTX1NQRUNVTEFUSU9OX0JSQU5DSFlfQ0hFQ0tfUCk6IE5ldyBtYWNyby4KCSogc2NoZWQtZWJiLmMgKGFkdmFuY2VfdGFyZ2V0X2JiKTogVXNlIGl0IHRvIGZpeCBjb25kaXRpb24gdG8KCWFsbG93IGludGVyYmxvY2sgbW92ZW1lbnQgb2Ygc3BlY3VsYXRpb24gY2hlY2tzLgoKMjAwNi0xMC0wNiAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIG1pZGRsZS1lbmQvMjkyNTYKCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoZGV0ZXJtaW5lX2Jhc2Vfb2JqZWN0KTogSGFuZGxlIHBvaW50ZXJzCgljYXN0ZWQgdG8gaW50ZWdlciB0eXBlLgoJKGdldF9hZGRyZXNzX2Nvc3QpOiBEZWNyZWFzZSBjb3N0IG9mIFtzeW1ib2wgKyBpbmRleF0gYWRkcmVzc2luZyBtb2RlcwoJaWYgdGhleSBhcmUgc2lnbmlmaWNhbnRseSBtb3JlIGV4cGVuc2l2ZSB0aGFuIFtyZWcgKyBpbmRleF0gb25lcy4KCjIwMDYtMTAtMDYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI5MzMwCgkqIHRyZWUtZGF0YS1yZWYuYyAoZnJlZV9kYXRhX3JlZik6IFVzZSBEUl9GUkVFX0FDQ0VTU19GTlMgbWFjcm8uCgkoaW5pdGlhbGl6ZV9kYXRhX2RlcGVuZGVuY2VfcmVsYXRpb24pOiBDbGVhciBERFJfTE9PUF9ORVNUIHBvaW50ZXIKCW9uIG5ld2x5IGFsbG9jYXRlZCBkZHJzLgoJKGZpbmRfbG9vcF9uZXN0XzEsIGZpbmRfbG9vcF9uZXN0KTogQ2hhbmdlIExPT1BfTkVTVCB0byBhIHBvaW50ZXIKCXRvIFZFQyAobG9vcF9wLCBoZWFwKSBwb2ludGVyLgoJKGNvbXB1dGVfZGF0YV9kZXBlbmRlbmNlc19mb3JfbG9vcCk6IEFkanVzdCBjYWxsZXIuCgkoZnJlZV9kZXBlbmRlbmNlX3JlbGF0aW9ucyk6IEZyZWUgRERSX0xPT1BfTkVTVC4KCgkqIHRyZWUtbG9vcC1saW5lYXIuYyAobGluZWFyX3RyYW5zZm9ybV9sb29wcyk6IERvbid0IGZvcmdldCB0bwoJZnJlZSBERVBFTkRFTkNFX1JFTEFUSU9OUyBhbmQgREFUQVJFRlMuCgoJUFIgdGFyZ2V0LzI4OTI0CgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX3N5bmNfb3BlcmF0aW9uLAoJZXhwYW5kX2J1aWx0aW5fY29tcGFyZV9hbmRfc3dhcCwgZXhwYW5kX2J1aWx0aW5fbG9ja190ZXN0X2FuZF9zZXQpOgoJVXNlIGNvbnZlcnRfdG9fbW9kZSB0byBoYW5kbGUgcHJvbW90ZWQgYXJndW1lbnRzLgoKMjAwNi0xMC0wNiAgSiJvcm4gUmVubmVja2UgIDxqb2Vybi5yZW5uZWNrZUBzdC5jb20+CgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGVfYnJpZWYsIHByaW50X25vZGUpOiBQcmludCBzaWduIG9mIEluZi4KCjIwMDYtMTAtMDYgIEoib3JuIFJlbm5lY2tlICA8am9lcm4ucmVubmVja2VAc3QuY29tPgoKCSogY29uZmlnL3NoL3NoLmggKExJQkdDQzJfRE9VQkxFX1RZUEVfU0laRSk6IERlZmluZS4KCjIwMDYtMTAtMDUgIFVyb3MgQml6amFrICA8dXJvc0Brc3MtbG9rYS5zaT4KCgkqIGNvbmZpZy9pMzg2L3N5bmMubWQgKCJzeW5jX2FkZDxtb2RlPiIsICJzeW5jX3N1Yjxtb2RlPiIsCgkic3luY19pb3I8bW9kZT4iLCAic3luY19hbmQ8bW9kZT4iLCAic3luY194b3I8bW9kZT4iKToKCVVzZSA8bW9kZWNvbnN0cmFpbnQ+IGluc3RlYWQgb2YgInIiIGFzIG9wZXJhbmQgMSBjb25zdHJhaW50LgoKMjAwNi0xMC0wNiAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X3R5cGVfc2l6ZXMpIFtQT0lOVEVSX1RZUEUsIFJFRkVSRU5DRV9UWVBFXToKCURvbid0IHJlY3Vyc2Ugb24gdGhlIHBvaW50ZWQtdG8gdHlwZS4KCSogYy1kZWNsLmMgKGdyb2tkZWNsYXJhdG9yKSBbY2RrX3BvaW50ZXJdOiBJZiB3ZSBhcmUgaW4gYSBOT1JNQUwgb3IKCURFQ0wgY29udGV4dCwgYXR0YWNoIGFuIGFydGlmaWNpYWwgVFlQRV9ERUNMIHRvIGFub255bW91cyBwb2ludGVkLXRvCgl0eXBlcyB3aXRoIGNvbXBvbmVudHMgb2YgdmFyaWFibGUgc2l6ZS4KCjIwMDYtMTAtMDYgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJY29uZmlnL2kzODYvbWluZ3czMi5oIChHT01QX1NFTEZfU1BFQ1MpOiBBZGQgLW10aHJlYWRzIGZvciBvcGVubXAuCgoyMDA2LTEwLTA2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yOTI5MAoJKiB0cmVlLWxvb3AtbGluZWFyLmMgKGxpbmVhcl90cmFuc2Zvcm1fbG9vcHMpOiBCYWlsIGlmIGxvb3BfbmVzdCBoYXMKCW11bHRpcGxlIGV4aXRzLgoKCVBSIHRhcmdldC8yOTE5OAoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBSZWplY3QgVExTIHN5bWJvbHMuCgkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKGxvY2FsX3N5bWJvbGljX29wZXJhbmQpOiBMaWtld2lzZS4KCglQUiBjLzI5MDkxCgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RhbnQpOiBJZiBUUkVFX1ZFQ1RPUl9DU1RfRUxUUyBjaGFpbiBpcyBzaG9ydGVyIHRoYW4KCXRoZSBudW1iZXIgb2YgdmVjdG9yIGVsZW1lbnRzIGZpbGwgdGhlIHJlc3Qgd2l0aCB6ZXJvcy4KCjIwMDYtMTAtMDUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3Bhc3NfYnlfcmVmZXJlbmNlKTogRG8gbm90IHJldHVybiBmYWxzZQoJZm9yIEVBQkkgaWYgdHlwZSBpcyBOVUxMLiAgVXNlIGEgc2l6ZSBjaGVjayBiYXNlZCBvbiBHRVRfTU9ERV9TSVpFCglpbnN0ZWFkLgoKMjAwNi0xMC0wNSAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL2JmaW4ubWQgKHN1YnNpMyk6IExvc2UgZXhwYW5kZXIsIGNoYW5nZSBwcmV2aW91c2x5Cgl1bm5hbWVkIHBhdHRlcm4gaW50byBzdWJzaTMuICBVc2UgY29ycmVjdCBjb25zdHJhaW50cy9wcmVkaWNhdGVzLgoJKiBjb25maWcvYmZpbi9iZmluLmggKENPTlNUX09LX0ZPUl9LKTogSGFuZGxlICJLTjciLgoJKiBjb25maWcvYmZpbi9wcmVkaWNhdGVzLm1kIChyZWdfb3JfbmVnN2JpdF9vcGVyYW5kX3ApOiBOZXcuCgoyMDA2LTEwLTA1ICBJcmEgUm9zZW4gIDxpcmFyQGlsLmlibS5jb20+CgoJKiBkb2MvbG9vcC50ZXhpOiBBZGQgZGF0YSByZWZlcmVuY2VzIGFuYWx5c2lzIGRlc2NyaXB0aW9uLgoKMjAwNi0xMC0wNCAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIGRvYy9nY292LnRleGk6IEFkZCBmb3JtYXR0aW5nIHRvICJJbnZva2luZyBnY292IiBzZWN0aW9uIGhlYWQuCgoyMDA2LTEwLTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoJICAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKGxpYmdjYy5taywgTElCR0NDX0RFUFMpOiBBZGQgZW11dGxzLmMuCgkqIGJ1aWx0aW4tdHlwZXMuZGVmIChCVF9XT1JEKTogTWFrZSB1bnNpZ25lZC4KCShCVF9GTl9WT0lEX1BUUl9XT1JEX1dPUkRfUFRSKTogTmV3LgoJKiBidWlsdGlucy5kZWYgKEJVSUxUX0lOX0VNVVRMU19HRVRfQUREUkVTUyk6IE5ldy4KCShCVUlMVF9JTl9FTVVUTFNfUkVHSVNURVJfQ09NTU9OKTogTmV3LgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBlcnJvciBpZiAhaGF2ZV90bHMuCgkqIGMtcGFyc2VyLmMgKGNfcGFyc2VyX29tcF90aHJlYWRwcml2YXRlKTogTGlrZXdpc2UuCgkqIGNncmFwaC5jIChkZWNpZGVfaXNfdmFyaWFibGVfbmVlZGVkKTogTG9vayBhdCBmb3JjZV9vdXRwdXQuCglSZWN1cnNlIGZvciBlbXVsYXRlZCB0bHMuCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX3ZhcnBvb2xfcmVtb3ZlX3VucmVmZXJlbmNlZF9kZWNscyk6IFJlbW92ZQoJY2hlY2tzIHJlZHVuZGFudCB3aXRoIGRlY2lkZV9pc192YXJpYWJsZV9uZWVkZWQuCgkoY2dyYXBoX2J1aWxkX3N0YXRpY19jZHRvcik6IERvIGNncmFwaF92YXJwb29sX2Fzc2VtYmxlX3BlbmRpbmdfZGVjbHMuCgkqIGR3YXJmMm91dC5jIChsb2NfZGVzY3JpcHRvcl9mcm9tX3RyZWVfMSk6IERvbid0IGRvIGFueXRoaW5nIGZvcgoJZW11bGF0ZWQgdGxzLgoJKiBleHByLmMgKGVtdXRsc192YXJfYWRkcmVzcyk6IE5ldy4KCShleHBhbmRfZXhwcl9yZWFsXzEpOiBFeHBhbmQgZW11bGF0ZWQgdGxzLgoJKGV4cGFuZF9leHByX2FkZHJfZXhwcl8xKTogTGlrZXdpc2UuCgkqIGxpYmdjYy1zdGQudmVyOiBBZGQgX19lbXV0bHNfZ2V0X2FkZHJlc3MsIF9fZW11dGxzX3JlZ2lzdGVyX2NvbW1vbi4KCSogb3V0cHV0LmggKGVtdXRsc19maW5pc2gpOiBEZWNsYXJlLgoJKiB0b3BsZXYuYyAoY29tcGlsZV9maWxlKTogQ2FsbCBpdC4KCSogdHJlZS1zc2EtYWRkcmVzcy5jIChnZW5fYWRkcl9ydHgpOiBDaGVjayBmb3IgY29uc3QtbmVzcyBvZiB0aGUKCWFkZHJlc3MgYmVmb3JlIHdyYXBwaW5nIGluIENPTlNULgoJKiB2YXJhc20uYyAoZW11dGxzX2h0YWIsIGVtdXRsc19vYmplY3RfdHlwZSk6IE5ldy4KCShFTVVUTFNfVkFSX1BSRUZJWCwgRU1VVExTX1RNUExfUFJFRklYKTogTmV3LgoJKGdldF9lbXV0bHNfb2JqZWN0X25hbWUsIGdldF9lbXV0bHNfb2JqZWN0X3R5cGUpOiBOZXcuCgkoZ2V0X2VtdXRsc19pbml0X3RlbXBsX2FkZHIsIGVtdXRsc19kZWNsKTogTmV3LgoJKGVtdXRsc19jb21tb25fMSwgZW11dGxzX2ZpbmlzaCk6IE5ldy4KCShhc3NlbWJsZV92YXJpYWJsZSk6IFdoZW4gZW11bGF0aW5nIHRscywgc3dhcCBkZWNsczsgZ2VuZXJhdGUKCWNvbnN0cnVjdG9yIGZvciB0aGUgZW11dGxzIG9iamVjdHMuCgkoZG9fYXNzZW1ibGVfYWxpYXMpOiBXaGVuIGVtdWxhdGluZyB0bHMsIHN3YXAgZGVjbCBhbmQgdGFyZ2V0IG5hbWUuCgkoZGVmYXVsdF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogRG9uJ3QgYWRkIFNZTUJPTF9GTEFHX1RMU19TSElGVAoJZm9yIGVtdWxhdGVkIHRscy4KCSogZW11dGxzLmM6IE5ldyBmaWxlLgoJKiBjb25maWcvc3BhcmMvc29sMi5oIChBU01fREVDTEFSRV9PQkpFQ1RfTkFNRSk6IE9ubHkgZW1pdAoJdGxzX29iamVjdCBmb3IgcmVhbCB0bHMuCgoyMDA2LTEwLTA0ICBaYWNrIFdlaW5iZXJnICA8emFja3dAcGFuaXguY29tPgoKCUZpeCBidWcgaW4gY29uc3RyYWludC1jaGVjayBnZW5lcmF0b3IsIHJlcG9ydGVkIGJ5IFJhc2sgSW5nZW1hbm4KCUxhbWJlcnRzZW46CgkqIGdlbnByZWRzLmMgKGFkZF9jb25zdHJhaW50KTogRG9uJ3QgcmVtb3ZlIGFueXRoaW5nIGZyb20gdGhlCglleHByZXNzaW9uIGhlcmUuCgkod3JpdGVfdG1fY29uc3Ryc19oKTogRGV0ZWN0IHdoZXRoZXIgIm9wIiBhcmd1bWVudCBpcyB1c2VkLCBhbmQKCW1hcmsgaXQgQVJHX1VOVVNFRCBpZiBpdCBpc24ndC4KCSh3cml0ZV9pbnNuX2NvbnN0X2ludF9va19mb3JfY29uc3RyYWludCk6IFNraXAgdGhlIHBhcnQgb2YgdGhlCglleHByZXNzaW9uIHRoYXQgd291bGQgdGVzdCB3aGV0aGVyICJvcCIgKHdoaWNoIGlzIG5vdCBhdmFpbGFibGUKCWhlcmUpIGlzIGEgQ09OU1RfSU5ULgoKMjAwNi0xMC0wNCAgUnlhbiBNYW5zZmllbGQgIDxybWFuc2ZpZWxkQHFueC5jb20+CgoJUFIgYysrLzI4NDQ4CgkqIGRvYy9pbnZva2UudGV4aSAoZmRpYWdub3N0aWNzLXNob3ctb3B0aW9uKTogRml4IHR5cG9zLgoKMjAwNi0xMC0wMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4tbGliZ2NjLjEwLjUudmVyOiBVcGRhdGUgdG8gc3ltYm9sIGxpc3QgZm9yCgljdXJyZW50IExlb3BhcmQgdmVyc2lvbnMuCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLWxpYmdjYy4xMC41LnZlcjogTGlrZXdpc2UuCgoyMDA2LTEwLTAzICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IEZpeCB0eXBvcy4KCjIwMDYtMTAtMDMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9yZXR1cm5fYWRkcik6IERlYWwgd2l0aCBGUkFNRV9BRERSX1JUWC4KCSogZG9jL3RtLnRleGkgKEJhc2ljIFN0YWNrIExheW91dCk6IERvY3VtZW50IEZSQU1FX0FERFJfUlRYLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoRlJBTUVfQUREUl9SVFgpOiBEZWZpbmUuCgoyMDA2LTEwLTAyICBKYWNrIEhvd2FydGggIDxob3dhcnRoQGJyb21vLm1lZC51Yy5lZHU+CgoJKiB1bndpbmQtZHcyLWZkZS1kYXJ3aW4uYyAoZ2V0c2VjdGRhdGFmcm9taGVhZGVyXzY0KTogRml4IGZpcnN0CglhcmcgdG8gYmUgc3RydWN0IG1hY2hfaGVhZGVyXzY0KiBpbnN0ZWFkLgoKMjAwNi0xMC0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYy8yOTE1NAoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9zZWxmX21vZF9leHByKTogUnVuIGlubmVyIGV4cHJlc3Npb24ncyBwb3N0CglzaWRlIGVmZmVjdHMgYWZ0ZXIgdGhlIG91dGVyIGV4cHJlc3Npb24ncyBwb3N0IHNpZGUgZWZmZWN0cy4KCjIwMDYtMTAtMDEgIFNhbmRyYSBMb29zZW1vcmUgIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuaCAoREVDTF9GSUVMRF9PRkZTRVQsIERFQ0xfRklFTERfQklUX09GRlNFVCk6ICBGaXgKCWNvbW1lbnRzIHRvIHJlZmxlY3QgYWN0dWFsIGJlaGF2aW9yIGFuZCByZWxhdGlvbnNoaXAgYmV0d2VlbgoJREVDTF9GSUVMRF9PRkZTRVQsIERFQ0xfRklFTERfQklUX09GRlNFVCwgYW5kIERFQ0xfT0ZGU0VUX0FMSUdOLgoKCSogZG9jL2MtdHJlZS50ZXhpIChXb3JraW5nIHdpdGggZGVjbGFyYXRpb25zKTogRml4IGRvY3VtZW50YXRpb24KCW9mIEZJRUxEX0RFQ0wgbGlrZXdpc2UuCgoyMDA2LTEwLTAxICBSeWFuIE1hbnNmaWVsZCAgPHJtYW5zZmllbGRAcW54LmNvbT4KCglQUiBjLzIwNTMzCgkqIGRvYy9leHRlbmQudGV4aTogQWRkIHVzZWQgdmFyaWFibGUgYXR0cmlidXRlIGRlc2NyaXB0aW9uLgoKMjAwNi0wOS0zMCAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYy8yNDAxMAoJKiBjLm9wdCAoV292ZXJyaWRlLWluaXQpOiBOZXcuCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiBEZWZhdWx0IHdhcm5fb3ZlcnJpZGVfaW5pdCB0bwoJZXh0cmFfd2FybmluZ3MuCgkqIGMtdHlwZWNrLmMgKGFkZF9wZW5kaW5nX2luaXQsIG91dHB1dF9pbml0X2VsZW1lbnQpOiBXYXJuIGZvcgoJb3ZlcnJpZGluZyBpbml0aWFsaXplcnMgd2l0aG91dCBzaWRlIGVmZmVjdHMuCgkqIGRvYy9pbnZva2UudGV4aSAoLVdvdmVycmlkZS1pbml0KTogRG9jdW1lbnQuCgkoLVdleHRyYSk6IFVwZGF0ZS4KCjIwMDYtMDktMzAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yODA5NgoJKiBpZmN2dC5jIChjaGVja19jb25kX21vdmVfYmxvY2spOiBSZXR1cm4gRkFMU0UgaWYgdGhlIHNvdXJjZSBvZiBhbgoJYXNzaWdubWVudCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgYXMgYSBkZXN0aW5hdGlvbiBlYXJsaWVyIGluIHRoZSBibG9jay4KCjIwMDYtMDktMjkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zZXRqbXApOiBEZWxldGUuCgkoZXhwYW5kX2J1aWx0aW4pIDxCVUlMVF9JTl9TRVRKTVA+OiBNYXJrIGFzIHVucmVhY2hhYmxlLgoJPEJVSUxUX0lOX1NFVEpNUF9TRVRVUD46IE5ldyBjYXNlLgoJPEJVSUxUX0lOX1NFVEpNUF9ESVNQQVRDSEVSPjogTGlrZXdpc2UuCgk8QlVJTFRfSU5fU0VUSk1QX1JFQ0VJVkVSPjogTGlrZXdpc2UuCgkqIGJ1aWx0aW5zLmRlZiAoQlVJTFRfSU5fU0VUSk1QX1NFVFVQKTogTmV3IGJ1aWx0LWluIHN0dWIuCgkoQlVJTFRfSU5fU0VUSk1QX0RJU1BBVENIRVIpOiBMaWtld2lzZS4KCShCVUlMVF9JTl9TRVRKTVBfUkVDRUlWRVIpOiBMaWtld2lzZS4KCSogZ2ltcGxlLWxvdy5jIChzdHJ1Y3QgbG93ZXJfZGF0YSk6IE5ldyBmaWVsZCBjYWxsc19idWlsdGluX3NldGptcC4KCShsb3dlcl9mdW5jdGlvbl9ib2R5KTogSW5pdGlhbGl6ZSBpdCB0byBmYWxzZS4gIElmIGl0IGlzIHNldCB0byB0cnVlCglhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5nLCBlbWl0IHRoZSBzZXRqbXAgZGlzcGF0Y2hlci4KCShsb3dlcl9zdG10KSA8Q0FMTF9FWFBSPjogSW52b2tlIGxvd2VyX2J1aWx0aW5fc2V0am1wIGlmIHRoZSBjYWxsZWUKCWlzIF9fYnVpbHRpbl9zZXRqbXAgYW5kIHNldCBjYWxsc19idWlsdGluX3NldGptcCB0byB0cnVlIGFzIHdlbGwuCgk8TU9ESUZZX0VYUFI+OiBGYWxsIHRocm91Z2ggdG8gYWJvdmUgY2FzZSBpZiB0aGVyZSBpcyBhIENBTExfRVhQUgoJb24gdGhlIHJocyBvZiB0aGUgYXNzaWdubWVudC4KCShsb3dlcl9idWlsdGluX3NldGptcCk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS5jIChidWlsZF9jb21tb25fYnVpbHRpbl9ub2Rlcyk6IEJ1aWxkIEJVSUxUX0lOX1NFVEpNUF9TRVRVUCwKCUJVSUxUX0lOX1NFVEpNUF9ESVNQQVRDSEVSIGFuZCBCVUlMVF9JTl9TRVRKTVBfUkVDRUlWRVIgbm9kZXMuCgkqIHRyZWUtY2ZnLmMgKG1ha2VfZXhpdF9lZGdlcykgPENBTExfRVhQUj46IFVzZSBzcGVjaWZpYyBwcmVkaWNhdGUKCXRvIGRldGVjdCBjYWxscyB0aGF0IGNhbiBnbyB0byBub24tbG9jYWwgbGFiZWxzLiAgVXNlIHNwZWNpZmljCgloZWxwZXIgdG8gY3JlYXRlIHRoZSBhYm5vcm1hbCBlZGdlcyBhc3NvY2lhdGVkIHdpdGggdGhlbS4KCTxNT0RJRllfRVhQUj46IExpa2V3aXNlLgoJKG1ha2VfYWJub3JtYWxfZ290b19lZGdlcyk6IE5ldyBmdW5jdGlvbiBleHRyYWN0ZWQgZnJvbS4uLgoJKG1ha2VfZ290b19leHByX2VkZ2VzKTogLi4uaGVyZS4gIENhbGwgaXQgZm9yIGNvbXB1dGVkIGdvdG9zLgoJKHNpbXBsZV9nb3RvX3ApOiBNaW5vciB0d2Vhay4KCSh0cmVlX2Nhbl9tYWtlX2Fibm9ybWFsX2dvdG8pOiBOZXcgcHJlZGljYXRlLgoJKHRyZWVfcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoKTogUmV0dXJuIHplcm8gb24gYWxsIGFibm9ybWFsIGVkZ2VzLgoJKHRyZWVfcHVyZ2VfZGVhZF9hYm5vcm1hbF9jYWxsX2VkZ2VzKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLWZsb3cuaCAodHJlZV9jYW5fbWFrZV9hYm5vcm1hbF9nb3RvKTogRGVjbGFyZS4KCSh0cmVlX3B1cmdlX2RlYWRfYWJub3JtYWxfY2FsbF9lZGdlcyk6IExpa2V3aXNlLgoJKG1ha2VfYWJub3JtYWxfZ290b19lZGdlcyk6IExpa2V3aXNlLgoJKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBTaW1wbGlmeSBzdGF0ZW1lbnQgZnJvYmJpbmcuCglQdXJnZSBhbGwgZGVhZCBhYm5vcm1hbCBlZGdlcyBpZiB0aGUgY2FsbCB3YXMgaW4gdGhlIGxhc3Qgc3RhdGVtZW50LgoJKiB0cmVlLW9wdGltaXplLmMgKGhhc19hYm5vcm1hbF9vdXRnb2luZ19lZGdlX3ApOiBOZXcgcHJlZGljYXRlLgoJKGV4ZWN1dGVfZml4dXBfY2ZnKTogSWYgdGhlcmUgYXJlIG5vbi1sb2NhbCBsYWJlbHMgaW4gdGhlIGZ1bmN0aW9uLAoJc2NhbiB0aGUgYmFzaWMgYmxvY2tzIGFuZCBzcGxpdCB0aGVtIGF0IGNhbGxzIHRoYXQgY2FuIGdvIHRvIG5vbi1sb2NhbAoJbGFiZWxzIG9yIGFkZCBtaXNzaW5nIGFibm9ybWFsIGNhbGwgZWRnZXMuICBXcml0ZSBkb3duIHRoZSBDRkcgaW4gdGhlCglkdW1wIGZpbGUuCgkocGFzc19maXh1cF9jZmcpOiBSZW1vdmUgVE9ET19kdW1wX2Z1bmMgZmxhZy4KCSogdW53aW5kLXNqbGouYzogUG9pc29uIHNldGptcC4KCSogZG9jL2luc3RhbGwudGV4aSAoZW5hYmxlLXNqbGotZXhjZXB0aW9ucyk6IFVzZSBtb3JlIGdlbmVyYWwgd29yZGluZy4KCSogZG9jL3RtLnRleGkgKERXQVJGMl9VTldJTkRfSU5GTyk6IExpa2V3aXNlLgoJKFRBUkdFVF9VTldJTkRfVEFCTEVTX0RFRkFVTFQpOiBGaXggdHlwby4KCShET05UX1VTRV9CVUlMVElOX1NFVEpNUCk6IERvY3VtZW50IGl0LgoKMjAwNi0wOS0yOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJUFIgdGFyZ2V0LzI4NjE3CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggW0lOX0xJQkdDQzJdIChUQVJHRVRfUE9XRVJQQzY0KTogRGVmaW5lCgl0byAxIHdoZW4gX19wcGM2NF9fIGlzIGRlZmluZWQuCgkqIGNvbmZpZy9yczYwMDAvdC1kYXJ3aW4gKExJQjJGVU5DU19FWFRSQSk6IEFkZCBwcGM2NC1mcC5jIGFuZAoJZGFyd2luLTY0LmMuCgkqIGNvbmZpZy9yczYwMDAvcHBjNjQtZnAuYzogQWxzbyBjb21waWxlIHdoZW4gX19wcGM2NF9fIGlzIGRlZmluZWQuCgoyMDA2LTA5LTI4ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZy9pYTY0L3QtaHB1eCAoTElCMkZVTkNTX0VYVFJBKTogUmVtb3ZlIHVud2luZC1ocHV4LmMuCgkqIGNvbmZpZy9pYTY0L3Vud2luZC1ocHV4LmM6IERlbGV0ZS4KCjIwMDYtMDktMjggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9pbml0X2N0b3JfcHJlZXZhbCk6IENhbGwgbWF5YmVfd2l0aF9zaXplX2V4cHIKCW9uIHRoZSBlbGVtZW50IGJlZm9yZSBnaW1wbGlmeWluZyBpdCwgaW5zdGVhZCBvZiBwdW50aW5nIGlmIGl0IGlzIG9mCgl2YXJpYWJsZSBzaXplLgoKMjAwNi0wOS0yOCAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogZG9jL2xvb3AudGV4aTogTmV3IGZpbGUuCgkqIGRvYy9nY2NpbnQudGV4aTogUmVmZXJlbmNlIGxvb3AudGV4aS4KCSogTWFrZWZpbGUuaW4gKGxvb3AudGV4aSk6IEFkZC4KCjIwMDYtMDktMjcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5oIChFTkFCTEVfRVhFQ1VURV9TVEFDSyk6IE5ldywgdXNlIGdldHBhZ2VzaXplIG5vdAoJX19zeXNjdGwuCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKEVOQUJMRV9FWEVDVVRFX1NUQUNLKTogUmVtb3ZlLgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoRU5BQkxFX0VYRUNVVEVfU1RBQ0spOiBSZW1vdmUuCgoyMDA2LTA5LTI4ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9zaC5tZCAoZGl2c2lfaW52X20wKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCjIwMDYtMDktMjcgIFN0ZXZlbiBHLiBLYXJnbCAgPGthcmdsQGdjYy5nbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aTogRG9jdW1lbnQgcmVxdWlyZWQgdmVyc2lvbnMgb2YgR01QIGFuZCBNUEZSLgoKMjAwNi0wOS0yNyAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMjkyMzAKCSogY29uZmlnL2FybS9hcm0ubWQgKGFyaXRoX2FkamFjZW50bWVtKTogSGFuZGxlIGxhcmdlIG9mZnNldHMuCgoyMDA2LTA5LTI3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJlbG9hZDEuYyAoYWx0ZXJfcmVnKTogUmVxdWlyZSB0aGUgYWxpZ25tZW50IG9mIHRoZSBzdGFjayBzbG90IHRvCgliZSBhdCBsZWFzdCByZWdfbWF4X3JlZl93aWR0aCBieXRlcy4KCShzY2FuX3BhcmFkb3hpY2FsX3N1YnJlZ3MpOiBSZWNvcmQgdGhlIGxhcmdlc3Qgd2lkdGggaW4KCXJlZ19tYXhfcmVmX3dpZHRoLgoKMjAwNi0wOS0yNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNTI2MQoJUFIgbWlkZGxlLWVuZC8yODc5MAoJKiB0cmVlLW5lc3RlZC5jIChzdHJ1Y3QgbmVzdGluZ19pbmZvKTogQWRkZWQgc3RhdGljX2NoYWluX2FkZGVkLgoJKGNvbnZlcnRfY2FsbF9leHByKTogU2V0IHN0YXRpY19jaGFpbl9hZGRlZCB3aGVuIGFkZGluZyBzdGF0aWMKCWNoYWluLiAgSGFuZGxlIE9NUF9QQVJBTExFTCBhbmQgT01QX1NFQ1RJT04uCgoyMDA2LTA5LTI1ICBNYXR0aGlhcyBLbG9zZSAgPGRva29AZGViaWFuLm9yZz4KCgkqIGRvYy9pbnZva2UudGV4aTogQWRkIG1pc3NpbmcgZnVsbCBzdG9wLgoKMjAwNi0wOS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNncmFwaC5jIChkdW1wX2NncmFwaF92YXJwb29sX25vZGUpOiBEb24ndCBjcmFzaCBpZiBjYWxsZWQKCWJlZm9yZSBjZ3JhcGhfZnVuY3Rpb25fZmxhZ3NfcmVhZHkuCgoyMDA2LTA5LTI0ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgkgICAgQWRhbSBOZW1ldCAgPGFuZW1ldEBjYXZpdW1uZXR3b3Jrcy5jb20+CgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChhZmZfY29tYmluYXRpb25fY29udmVydCwKCWRldGVybWluZV9jb21tb25fd2lkZXJfdHlwZSk6IE5ldyBmdW5jdGlvbnMuCgkoZ2V0X2NvbXB1dGF0aW9uX2FmZik6IFVzZSB0aGVtIHRvIHNpbXBsaWZ5IGFyaXRobWV0aWMgYmV0d2VlbgoJVUJBU0UgYW5kIENCQVNFIGlmIHRoZXkgYXJlIHNob3J0ZW5lZCBmcm9tIHRoZSBzYW1lIHR5cGUuCgoyMDA2LTA5LTI0ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMjg5MTEKCSogY29uZmlnL202OGsvbTY4ay5tZCAobmVnc2YyLCBuZWdkZjIsIG5lZ3hmMik6IFVzZQoJLTIxNDc0ODM2NDcgLSAxIGluc3RlYWQgb2YgMHg4MDAwMDAwMC4KCjIwMDYtMDktMjMgIFJldml0YWwxIEVyZXMgIDxFUkVTQGlsLmlibS5jb20+CgoJKiBmbGFncy5oIChIT05PUl9OQU5TKTogRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDYtMDktMjMgIFVyb3MgQml6amFrIDx1cm9zQGtzcy1sb2thLnNpPgoKCSogY29uZmlnL2kzODYvZHJpdmVyLWkzODYuYyAoaG9zdF9kZXRlY3RfbG9jYWxfY3B1KTogQWRkIHByb3RvdHlwZS4KCjIwMDYtMDktMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMvMjg3MDYKCVBSIGMvMjg3MTIKCSogdHJlZS5jIChtZXJnZV9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVfbGlzdF9jb250YWluZWQpOiBJZiBib3RoCglUUkVFX1ZBTFVFcyBhcmUgVFJFRV9MSVNUcywgdXNlIHNpbXBsZV9jc3RfbGlzdF9lcXVhbCBpbnN0ZWFkIG9mCglzaW1wbGVfY3N0X2VxdWFsLgoJKiBjLXR5cGVjay5jIChjb21wdHlwZXNfaW50ZXJuYWwpOiBEb24ndCBjb25zaWRlciBhZ2dyZWdhdGVzCglpbiBkaWZmZXJlbnQgVFVzIGFzIGNvbXBhdGlibGUgaWYgdGhlcmUgb25lIHNldCBvZiBhdHRyaWJ1dGVzIGlzCglub3QgYSBzdWJzZXQgb2YgdGhlIG90aGVyIHR5cGUncyBhdHRyaWJ1dGVzLgoJKGNvbXBvc2l0ZV90eXBlKTogVHJ5IGhhcmRlciBub3QgdG8gY3JlYXRlIGEgbmV3IGFnZ3JlZ2F0ZSB0eXBlLgoKMjAwNi0wOS0yMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9kcml2ZXItaTM4Ni5jOiBBbHdheXMgZGVmaW5lIGhvc3RfZGV0ZWN0X2xvY2FsX2NwdS4KCSogY29uZmlnL2kzODYvaTM4Ni5oOiBEZWZpbmUgRVhUUkFfU1BFQ19GVU5DVElPTlMgb24gYW55IGkzODYKCW9yIHg4Nl82NCBob3N0LiAgRGVmaW5lIEhBVkVfTE9DQUxfQ1BVX0RFVEVDVC4KCShDQzFfQ1BVX1NQRUMpOiBNYWtlIGNvbmRpdGlvbmFsIG9uIEhBVkVfTE9DQUxfQ1BVX0RFVEVDVCByYXRoZXIKCXRoYW4gcmVwbGljYXRpbmcgY29uZGl0aW9uIGFib3ZlLgoJKiBjb25maWcuaG9zdCAoaVszNDU2N104Ni0qLSopOiBBbHdheXMgdXNlIGRyaXZlci1pMzg2Lm8uCgoJKiBjb25maWcvZGFyd2luLmggKExJTktfU1lTUk9PVF9TUEVDKTogTmV3LgoJKExJTktfU1BFQyk6IElmIFRBUkdFVF9TWVNURU1fUk9PVCBpcyBkZWZpbmVkLCBwYXNzIGl0IHRvCgl0aGUgbGlua2VyIGJ5IGRlZmF1bHQuCgoyMDA2LTA5LTIyICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKFBST0ZJTEVfSE9PSyk6IFJlYXNzb2NpYXRlIGNvbW1lbnQgd2l0aAoJY29kZS4KCjIwMDYtMDktMjIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzI4OTY0CgkqIGNmZ2V4cGFuZC5jIChzdGFja192YXJfc2l6ZV9jbXApOiBVc2UgREVDTF9VSUQgdG8gbWFrZQoJc29ydCBvZiBzdGFjayB2YXJpYWJsZXMgc3RhYmxlLgoKMjAwNi0wOS0yMiAgUGV0ZXIgQmVyZ25lciA8YmVyZ25lckB2bmV0LmlibS5jb20+CgoJUFIgbWlkZGxlLWVuZC8yODY5MAoJKiBleHBsb3cuYyAoZm9yY2VfcmVnKTogU2V0IFJFR19QT0lOVEVSIGZsYWcgYWNjb3JkaW5nIHRvCglNRU1fUE9JTlRFUiBmbGFnLgoKMjAwNi0wOS0yMiAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI4ODg4CgkqIHRyZWUtaWYtY29udi5jIChjb21iaW5lX2Jsb2Nrcyk6IFJld3JpdHRlbi4KCSogdHJlZS1jZmcuYyAodHJlZV92ZXJpZnlfZmxvd19pbmZvKTogQ2hlY2sgdGhhdCBlZGdlcyB3aXRoCglFREdFX1RSVUUvRkFMU0VfVkFMVUUgZm9sbG93IENPTkRfRVhQUi4KCjIwMDYtMDktMjIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtcHJvcGFnYXRlLmMgKHNldF9yaHMpOiBDb3B5IEVYUFJfTE9DQVRJT04gaWYKCW5lZWRlZC4KCjIwMDYtMDktMjEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogdmFyYXNtLmMgKGNvcHlfY29uc3RhbnQpOiBGaXggcmV2ZXJzZWQgZ2NjX2Fzc2VydCBjaGVjay4KCjIwMDYtMDktMjEgIEphbmlzIEpvaG5zb24gIDxqYW5pczE4N0B1cy5pYm0uY29tPgoKCSogZ2luY2x1ZGUvZGVjZmxvYXQuaCAoREVDKl9ERU4pOiBEZWZpbmUgdXNpbmcgdGhlIGNvcnJlY3QgYnVpbHRpbnMuCgoyMDA2LTA5LTIxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBkZWJ1Zy8yOTEzMgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X2JlZ2luX3Byb2xvZ3VlKTogSW5pdGlhbGlzZSB0aGUgY3VycmVudCBsYWJlbCwKCWR3X2ZkZV9jdXJyZW50X2xhYmVsLCB0byBiZSB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uLCBpLmUuIHRoZSBzYW1lCgl2YWx1ZSBhcyBkd19mZGVfYmVnaW4uCgoyMDA2LTA5LTIwICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoQ09ERV9GT1JfbWlwc19hYnNfcHMpOiBEZWxldGUuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKFVOU1BFQ19BQlNfUFMpOiBOZXcgY29uc3RhbnQuCgkoVU5TUEVDX1JTUVJUMSwgVU5TUEVDX1JTUVJUMiwgVU5TUEVDX1JFQ0lQMSwgVU5TUEVDX1JFQ0lQMikKCShVTlNQRUNfU0lOR0xFX0NDLCBVTlNQRUNfU0NDKTogQnVtcCB2YWx1ZXMgYnkgMS4KCSgqbm1hZGQ8bW9kZT4sICpubWFkZDxtb2RlPl9mYXN0bWF0aCk6IFJlcXVpcmUgIUhPTk9SX05BTlMuCgkoKm5tc3ViPG1vZGU+LCAqbm1zdWI8bW9kZT5fZmFzdG1hdGgpOiBMaWtld2lzZS4KCShhYnM8bW9kZT4yLCBuZWc8bW9kZT4yKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9taXBzL21pcHMtcHMtM2QubWQgKG1pcHNfYWJzX3BzKTogTmV3IGRlZmluZV9leHBhbmQuCgkoKm1pcHNfYWJzX3BzKTogTmV3IGRlZmluZV9pbnNuLgoKMjAwNi0wOS0yMCAgSm9zaCBDb25uZXIgIDxqY29ubmVyQGFwcGxlLmNvbT4KCglQUiBtaWRkbGUtZW5kLzI1NTA1CgkqIGNhbGxzLmMgKGV4cGFuZF9jYWxsKTogQWxsb3cgcmV1c2Ugb2Ygc3RydWN0dXJlIHJldHVybiBzdGFjawoJdGVtcC4KCjIwMDYtMDktMjAgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL3Vud2luZC1hcm0uYyAoc2VsZnJlbF9vZmZzZXQzMSk6IENsZWFyIHRvcCBiaXQgZm9yCglwb3NpdGl2ZSBvZmZzZXRzLgoKMjAwNi0wOS0yMCAgSmFuaXMgSm9obnNvbiAgPGphbmlzMTg3QHVzLmlibS5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKERlY2ltYWwgRmxvYXQpOiBVcGRhdGUgZm9yIGxhdGVzdCBkcmFmdCBUUiwKCWNsZWFuIHVwIHRlcm1pbm9sb2d5LgoKMjAwNi0wOS0yMCAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgdGFyZ2V0LzI4NTc0CgkqIGlmY3Z0LmMgKGRlYWRfb3JfcHJlZGljYWJsZSk6IERvbid0IHByZWRpY2F0ZSB0aGVuIGJsb2NrcwoJd2l0aCB0YWJsZWp1bXBzIGluIHRoZW0uCgoyMDA2LTA5LTIwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzI4MDQ2CgkqIGMtb21wLmMgKGNfZmluaXNoX29tcF9hdG9taWMpOiBJZiBBRERSIGlzIG5vdCBzaW1wbGUgZW5vdWdoLAoJd3JhcCBpdCBpbnRvIFRBUkdFVF9FWFBSLgoKMjAwNi0wOS0yMCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoeDg2X2Zpc3R0cCk6IFJlbW92ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5oICh4ODZfZmlzdHRwKTogRGl0dG8uCgkoVEFSR0VUX0ZJU1RUUCk6IERpdHRvLgoKMjAwNi0wOS0xOSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGRvYy90bS50ZXhpIChPQkpDX0pCTEVOKTogRGVzY3JpYmUuCgkqIGNvbmZpZy9pMzg2L2Rhcndpbi5oIChPQkpDX0pCTEVOKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oOiBEaXR0by4KCjIwMDYtMDktMTkgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCglQUiBydGwtb3B0aW1pemF0aW9uLzIxMjk5CgkqIHJlbG9hZDEuYyAocmVsb2FkKTogUHVyZ2UgaW52YWxpZCBBU01zIGluIHRoZSBmaW5hbCBwYXNzLgoKMjAwNi0wOS0xOSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgIDI4NDkwCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9sZWdpdGltYXRlX2NvbnN0YW50X3ApOiBBbGxvdyBmdW5jdGlvbgoJcG9pbnRlcnMgYXMgbGVnaXRpbWF0ZSBjb25zdGFudHMuCgoyMDA2LTA5LTE5ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHRhcmdldC8yODUxNgoJKiBjb25maWcvYXJtL2FybS5jIChhcm1fdW53aW5kX2VtaXRfc2V0KTogSGFuZGxlIHJlZyA9IHNwICsgY29uc3QuCgoyMDA2LTA5LTE3ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjg4ODcKCSogdHJlZS1zc2EtbG9vcC1wcmVmZXRjaC5jIChhbmFseXplX3JlZik6IFN0cmlwIG5vbmFkZHJlc3NhYmxlCgljb21wb25lbnQgcGFydHMgZnJvbSB0aGUgcmVmZXJlbmNlLgoJKGdhdGhlcl9tZW1vcnlfcmVmZXJlbmNlc19yZWYpOiBSZWNvcmQgdGhlIHJlZmVyZW5jZSB3aXRob3V0IHRoZQoJbm9uYWRkcmVzc2FibGUgY29tcG9uZW50IHBhcnRzLgoKMjAwNi0wOS0xNyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCVBSIGMvMjU5OTMKCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBJZ25vcmUgdGhlIC1zdGQgb3B0aW9ucwoJaWYgdGhlIGlucHV0IGxhbmd1YWdlIGlzIGFzc2VtYmx5LgoKMjAwNi0wOS0xNyAgSXJhIFJvc2VuICA8aXJhckBpbC5pYm0uY29tPgoKCVBSIHRyZWUtb3B0LzIxNTkxCgkqIHRyZWUtZGF0YS1yZWYuYyAocHRyX2RlY2xfbWF5X2FsaWFzX3ApOiBMb29rIGZvciB0aGUgbmFtZSBtZW1vcnkKCXRhZyBmaXJzdC4KCShwdHJfcHRyX21heV9hbGlhc19wKTogTGlrZXdpc2UuCgkocmVjb3JkX3JlY29yZF9kaWZmZXJfcCk6IE5ldyBmdW5jdGlvbi4KCShiYXNlX29iamVjdF9kaWZmZXJfcCk6IENhbGwgcmVjb3JkX3JlY29yZF9kaWZmZXJfcC4KCjIwMDYtMDktMTYgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRyZWUtb3B0LzI5MDU5CgkqIHRyZWUtc3NhLXByb3BhZ2F0ZS5jIChzZXRfcmhzKTogUmVqZWN0IE1PRElGWV9FWFBSIHJpZ2h0Cglhd2F5IGZvciB0aGUgZXhwciBhcmd1bWVudC4KCjIwMDYtMDktMTYgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCglQUiB0cmVlLW9wdC8yNzc0MgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAodmVjdG9yaXplX2xvb3BzKTogQ2xlYXIgdmVjdF9sb29wX2xvY2F0aW9uCgliZWZvcmUgdXNpbmcgaXQgZm9yIGR1bXBpbmcgYWZ0ZXIgdmVjdG9yaXppbmcgbG9vcHMuCgoyMDA2LTA5LTE2ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCSAgICBKYWNrIEhvd2FydGggIDxob3dhcnRoQGJyb21vLm1lZC51Yy5lZHU+CgoJUFIgdGFyZ2V0LzI5MDMwCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9kYXJ3aW42NF9yZWNvcmRfYXJnX2FkdmFuY2VfcmVjdXJzZSkKCXNraXAgb24gZXJyb3JfbWFya19ub2RlLgoJKHJzNjAwMF9kYXJ3aW42NF9yZWNvcmRfYXJnX3JlY3Vyc2UpOiBMaWtld2lzZS4KCjIwMDYtMDktMTYgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbkBnY2MuZ251Lm9yZz4KCgkqIHJ0bC5oIChMQUJFTF9PVVRTSURFX0xPT1BfUCk6IFJlbW92ZS4KCSogZG9jL3J0bC50ZXhpOiBSZW1vdmUgcmVsYXRlZCBkb2N1bWVudGF0aW9uLgoKMjAwNi0wOS0xNiAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIGxvb3AtZG9sb29wLmMgKGRvbG9vcF9vcHRpbWl6ZSk6IFJlbW92ZSBib2d1cyBhcmcgZnJvbSBkZWJ1Z2dpbmcKCXByaW50Zi4KCjIwMDYtMDktMTUgIEppbSBXaWxzb24gIDx3aWxzb25Ac3BlY2lmaXguY29tPgoKCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X2xlZ2l0aW1hdGVfY29uc3RhbnRfcCwgY2FzdCBDT05TVCk6CglIYW5kbGUgc3ltYm9sIG9mZnNldHMgc2FtZSBhcyB0aGV5IGFyZSBoYW5kbGVkIGluIGlhNjRfZXhwYW5kX21vdmUKCWFuZCBtb3ZlX29wZXJhbmQuCgoyMDA2LTA5LTE2ICBBbmRyZWFzIFRvYmxlciAgPGEudG9ibGVyQHNjaHdlaXoub3JnPgoKCSogbG9vcC1kb2xvb3AuYyAoZG9sb29wX29wdGltaXplKTogQ2hhbmdlIHR5cGUgb2YgbWF4X2Nvc3QgdG8gaW50LgoJQWRkIGZvcmdvdHRlbiBwYXJhbWV0ZXIgdG8gdGhlIGZwcmludGYgY2FsbC4KCjIwMDYtMDktMTUgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCSogY29uZmlnL2lhNjQvaHB1eC5oIChIQU5ETEVfUFJBR01BX1BBQ0tfUFVTSF9QT1ApOiBBZGQgZGVmaW5lLgoKMjAwNi0wOS0xNSAgVXJvcyBCaXpqYWsgPHVyb3NAa3NzLWxva2Euc2k+CgoJKiBkb2MvY29udHJpYi50ZXhpOiBBZGQgbXkgZW50cnkuCgoyMDA2LTA5LTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZG9jL21kLnRleGkgKFByb2Nlc3NvciBwaXBlbGluZSBkZXNjcmlwdGlvbik6IEZpeCB0eXBvIGluCglleGFtcGxlIG9mIGhvdyB0byB1c2UgdGhlIGFic2VuY2Vfc2V0IGRpcmVjdGl2ZSBhbmQgcmV3b3JkIHRoZQoJZGVzY3JpcHRpb24gdG8gbWFrZSBpdCBzbGlnaHRseSBlYXNpZXIgdG8gcmVhZC4KCjIwMDYtMDktMTUgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBwYXJhbXMuZGVmIChQQVJBTV9NQVhfSVRFUkFUSU9OU19DT01QVVRBVElPTl9DT1NUKTogTmV3LgoJKiBsb29wLWRvbG9vcC5jIChkb2xvb3Bfb3B0aW1pemUpOiBVc2UgaXQgdG8gbGltaXQgY29zdHMgb2YKCWV4cGFuZGluZyB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMuCgkqIGNvbmZpZy9iZmluL2JmaW4uYyAoYmZpbl9ydHhfY29zdHMpOiBIYW5kbGUgVURJViwgVU1PRC4KCgkqIGNmZ3J0bC5jIChlbWl0X2luc25fYXRfZW50cnkpOiBOZXcgZnVuY3Rpb24uCgkqIHJ0bC5oIChlbWl0X2luc25fYXRfZW50cnkpOiBEZWNsYXJlIGl0LgoJKiBpbnRlZ3JhdGUuYyAoZW1pdF9pbml0aWFsX3ZhbHVlX3NldHMpOiBVc2UgaXQuCgoJKiBjZmdydGwuYyAoZW1pdF9pbnNuX2F0X2VudHJ5KTogVXNlIGdjY19hc3NlcnQsIG5vdCBhYm9ydC4KCgkqIGNvbmZpZy9iZmluL2JmaW4uYyAoc3RydWN0IGxvb3BfaW5mbyk6IE5ldyBtZW1iZXJzIGJsb2NrX2JpdG1hcCBhbmQKCWJhZC4KCShzdHJ1Y3QgbG9vcF93b3JrIGFuZCByZWxhdGVkIFZFQyBkZWNsYXJhdGlvbnMpOiBEZWxldGUuCgkoYmZpbl9kdW1wX2xvb3BzKTogUHJpbnQgb3V0IG5ldyBtZW1iZXIgYmFkLgoJKGJmaW5fYmJfaW5fbG9vcCk6IFVzZSBwbGFpbiBiaXRtYXAgdGVzdC4gIERvbid0IHJlY3Vyc2UuCgkoYmZpbl9zY2FuX2xvb3ApOiBEb24ndCByZWN1cnNlLgoJKGJmaW5fb3B0aW1pemVfbG9vcCk6IERvbid0IHVzZSBhIGxvb3AgZGVwdGggb2YgLTEgdG8gaW5kaWNhdGUgYmFkCglsb29wcy4gIE5vIGxvbmdlciBuZWVkIHRvIHVwZGF0ZSBvdXRlciBsb29wcyBpZiB0aGUgY3VycmVudCBvbmUgaXMKCWZvdW5kIGJhZC4gIE1vdmUgc29tZSB2YWxpZGl0aXkgY2hlY2tzIHRvIGJmaW5fZGlzY292ZXJfbG9vcC4KCShiZmluX2Rpc2NvdmVyX2xvb3ApOiBOZXcgZnVuY3Rpb24sIG1vc3RseSBzcGxpdCBmcm9tIGJmaW5fcmVvcmdfbG9vcHMsCglidXQgY2hhbmdlZCBub3QgdG8gY2hlY2sgZm9yIG5lc3RpbmcuICBBbHNvIGNoYW5nZWQgdG8gdXNlIHRoZSBuZXcgYmFkCglmbGFnLgoJKGJmaW5fcmVvcmdfbG9vcHMpOiBVc2UgYmZpbl9kaXNjb3Zlcl9sb29wIHRvIGZpbmQgc2luZ2xlIGxvb3BzIG9uZSBhdCBhCgl0aW1lLiAgVXNlIGJpdG1hcCBiYXNlZCB0ZXN0IHRvIGRpc2NvdmVyIGxvb3AgbmVzdGluZy4KCjIwMDYtMDktMTUgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9GVU5DVElPTl9WQUxVRSk6IFB1dCBAZGVmdHlwZWZuIGFsbCBpbgoJb25lIGxpbmUuCgoyMDA2LTA5LTE0ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgkgICAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgbWlkZGxlLWVuZC8yODg4NC4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9GVU5DVElPTl9WQUxVRSk6IERvY3VtZW50LgoJKEZVTkNUSU9OX1ZBTFVFLCBGVU5DVElPTl9PVVRHT0lOR19WQUxVRSk6IERlcHJlY2F0ZS4KCVJlcGxhY2UgbWVudGlvbnMgb2YgRlVOQ1RJT05fVkFMVUUgYW5kIEZVTkNUSU9OX09VVEdPSU5HX1ZBTFVFCgl3aXRoIFRBUkdFVF9GVU5DVElPTl9WQUxVRS4KCjIwMDYtMDktMTQgIEFuYXRvbHkgU29rb2xvdiA8YWVzb2tAcG9zdC5ydT4KCglQUiB0YXJnZXQvMjY1MDQKCSogY29uZmlnL2F2ci9hdnIuaCAoRlJBTUVfUE9JTlRFUl9DRkFfT0ZGU0VUKTogRGVmaW5lLgoKMjAwNi0wOS0xMyAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogZG9jL3RyZWUtc3NhLnRleGkgKEp1bXBzKTogUkVTVUxUX0RFQ0wgY2FuIGFsc28gYmUgYW4gb3BlcmFuZAoJb2YgYSBSRVRVUk5fRVhQUgoKMjAwNi0wOS0xMyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgZGVidWcvMjg5ODAKCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZV8xKTogSGFuZGxlCglGVU5DVElPTl9ERUNMLgoKMjAwNi0wOS0xMyAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGJhc2ljX2Jsb2NrLmggKGJiX2hhc19laF9wcmVkKTogRml4IGNvbW1lbnQuCgoyMDA2LTA5LTEzICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogZmxvdy5jIChjYWxjdWxhdGVfZ2xvYmFsX3JlZ3NfbGl2ZSk6IEludmFsaWRhdGUgZWggcmVnaXN0ZXJzCglvbiBlaCBlZGdlcy4gUmVuYW1lZCBpbnZhbGlkYXRlZF9ieV9jYWxsIHRvIGludmFsaWRhdGVkX2J5X2VoX2VkZ2UuCgkocHJvcGFnYXRlX2Jsb2NrKTogSGFuZGxlIGVoIHJlZ2lzdGVycyBhcyBpZiB0aGV5IHdlcmUgc2V0IGF0IGJhc2ljCglibG9jayBzdGFydC4KCSogZXhjZXB0LmMgKGR3Ml9idWlsZF9sYW5kaW5nX3BhZHMpOiBEb24ndCBlbWl0IGNsb2JiZXJzIGZvciBlaAoJcmVnaXN0ZXJzLgoJKiBnbG9iYWwuYyAoZ2xvYmFsX2NvbmZsaWN0cyk6IE1ha2UgZWggcmVnaXN0ZXJzIHRvIGNvbmZsaWN0IHdpdGgKCXBzZXVkb3MgbGl2ZSBhdCBiYXNpYyBibG9jayBiZWdpbi4KCSogYmFzaWNfYmxvY2suaCAoYmJfaGFzX2VoX3ByZWQpOiBOZXcgZnVuY3Rpb24uCgoyMDA2LTA5LTEzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI4OTgyCgkqIHJlbG9hZC5jIChmaW5kX3JlbG9hZHNfYWRkcmVzc18xKTogVXNlIFJFTE9BRF9PVEhFUiBmb3IgdGhlCglpbmRleCBvZiBhIFBSRV9NT0RJRlkgb3IgUE9TVF9NT0RJRlkgYWRkcmVzcy4KCSogcmVsb2FkMS5jIChpbmNfZm9yX3JlbG9hZCk6IFVzZSBmaW5kX3JlcGxhY2VtZW50IG9uIHRoZSBvcmlnaW5hbAoJYmFzZSBhbmQgaW5kZXggcmVnaXN0ZXJzLgoKMjAwNi0wOS0xMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpIChtcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5KTogUmVtb3ZlIGV4Y2VwdGlvbgoJZm9yIC1Pcy4gVXBkYXRlIF9fbTEyOCBhbGlnbm1lbnQgcmVxdWlyZW1lbnQuCgoyMDA2LTA5LTEzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBjZmdhbmFsLmMgKGNvbXB1dGVfZG9taW5hbmNlX2Zyb250aWVyc18xKTogRG9uJ3QgYmUgcXVhZHJhdGljLgoKMjAwNi0wOS0xMiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI4MjQzCgkqIGNvbWJpbmUuYyAoZGlzdHJpYnV0ZV9ub3RlcykgPFJFR19ERUFEPjogRG8gbm90IGNvbnNpZGVyIFNFVHMgcGFzdAoJdGhlIGluc24gdG8gd2hpY2ggdGhlIG5vdGUgd2FzIG9yaWdpbmFsbHkgYXR0YWNoZWQuCgoyMDA2LTA5LTEyICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCSAgICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGR3YXJmMm91dC5jIChmaWxlX3RhYmxlX2xhc3RfbG9va3VwKTogTW92ZSB0aGlzIEdDJ2QgZGVjbGFyYXRpb24KCW91dHNpZGUgb2YgI2lmZGVmIERXQVJGMl9ERUJVR0dJTkdfSU5GTyB0byBmaXggYm9vdHN0cmFwIGZhaWx1cmUKCW9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IHVzZSBkd2FyZiBmb3IgZGVidWcgaW5mby4KCjIwMDYtMDktMTIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjg0OTMKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fc2V0am1wX3JlY2VpdmVyKTogQ2xvYmJlcgoJaGFyZF9mcmFtZV9wb2ludGVyX3J0eCBhZnRlciB1c2luZyBpdCB0byB1cGRhdGUgdGhlIGZyYW1lIHBvaW50ZXIuCgoyMDA2LTA5LTEyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0FTTV9PUEVOX1BBUkVOKTogR3VhcmQgd2l0aCBhbiAjaWZuZGVmLgoJKFRBUkdFVF9BU01fQ0xPU0VfUEFSRU4pOiBMaWtld2lzZS4KCSogY29uZmlnL2FscGhhL29zZjUuaCAoVEFSR0VUX0FTTV9PUEVOX1BBUkVOKTogRGVmaW5lLgoJKFRBUkdFVF9BU01fQ0xPU0VfUEFSRU4pOiBMaWtld2lzZS4KCjIwMDYtMDktMTIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHRhcmdldC8yMjIyMwoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBlbWl0IHN0YWNrCglmcmFtZSBpbmZvcm1hdGlvbiBmb3IgZnJhbWVzIGxhcmdlciB0aGFuIDUxMiBLYnl0ZXMgb24gVHJ1NjQgd2hlbgoJdXNpbmcgdGhlIG5hdGl2ZSBhc3NlbWJsZXIuCgoyMDA2LTA5LTEyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzQ1MjAKCVBSIGJvb3RzdHJhcC8yODc4NAoJKiBjc2VsaWIuYyAoY3NlbGliX2hhc2hfcnR4KTogQXZvaWQgaGFzaGluZyBvbiB0aGUgYWRkcmVzcyBvZiBsYWJlbHMKCWFuZCBzeW1ib2xzLiAgSW5zdGVhZCB1c2UgdGhlIGltcGxlbWVudGF0aW9uIGZyb20gY3NlLmMncyBoYXNoX3J0eC4KCjIwMDYtMDktMTIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI4MDcxCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdF9jcmVhdGVfZGF0YV9yZWZfcHRyKTogS2lsbCBjYXN0LgoJKHZlY3RfdHJhbnNmb3JtX2xvb3ApOiBMaWtld2lzZS4KCSogdHJlZS12ZWN0b3JpemVyLmMgKG5ld19sb29wX3ZlY19pbmZvKTogTGlrZXdpc2UuCgkobmV3X2xvb3BfdmVjX2luZm8pOiBMaWtld2lzZS4KCShkZXN0cm95X2xvb3BfdmVjX2luZm8pOiBMaWtld2lzZS4KCSogdHJlZS1kZmEuYyAoY3JlYXRlX3Zhcl9hbm4pOiBVc2UgR0NDX0NORVcuCgkoY3JlYXRlX3N0bXRfYW5uKTogTGlrZXdpc2UuCgkoY3JlYXRlX3RyZWVfYW5uKTogUmVuYW1lIHRvIC4uLgoJKGNyZWF0ZV90cmVlX2NvbW1vbl9hbm4pOiAuLi4gdGhpcyBvbmU7IGFsbG9jYXRlIG9ubHkgdGhlIGNvbW1vbiBwYXJ0CglvZiBhbm5vdGF0aW9ucy4KCSogdHJlZS12bi5jIChzZXRfdmFsdWVfaGFuZGxlKTogVXNlIGdldF90cmVlX2NvbW1vbl9hbm4uCgkoZ2V0X3ZhbHVlX2hhbmRsZSk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1wcmUuYyAocGhpX3RyYW5zbGF0ZSk6IERlbGF5IGFubm90YXRpb24gYWxsb2NhdGlvbiBmb3IKCWdldF90cmVlX2NvbW1vbl9hbm4uCgkqIHRyZWUtdmVjdG9yaXplci5oIChzZXRfc3RtdF9pbmZvKTogVGFrZSBzdG10IGFubm90YXRpb24uCgkodmluZm9fZm9yX3N0bXQpOiBVc2Ugc3RtdCBhbm5vdGF0aW9ucy4KCSogdHJlZS1mbG93LmggKHRyZWVfYW5uX2NvbW1vbl90KTogTmV3IHR5cGUuCgkodHJlZV9jb21tb25fYW5uLCBnZXRfdHJlZV9jb21tb25fYW5uLCBjcmVhdGVfdHJlZV9jb21tb25fYW5uKTogTmV3LgoJKHRyZWVfYW5uLCBnZXRfdHJlZV9hbm4sIGNyZWF0ZV90cmVlX2Fubik6IE5ldy4KCSogdHJlZS1mbG93LWlubGluZS5oIChnZXRfZnVuY3Rpb25fYW5uKTogRG8gbW9yZSB0eXBlIGNoZWNraW5nLgoJKHN0bXRfYW5uKTogTGlrZXdpc2UuCgkodHJlZV9hbm4pOiBSZW5hbWUgdG8gLi4uCgkodHJlZV9jb21tb25fYW5uKTogLi4uIHRoaXMgb25lOyByZXR1cm4gb255IGNvbW1vbl9hbm4KCShnZXRfdHJlZV9hbm4pOiBSZW5hbWUgdG8gLi4uCgkodHJlZV9jb21tb25fYW5uKTogVGhpcyBvbmU7IHJldHVybiBvbmx5IGNvbW1vbl9hbm4uCgkqIHRyZWUtdmVjdC1wYXR0ZXJucy5jICh2ZWN0X3BhdHRlcm5fcmVjb2dfMSk6IFVwZGF0ZSBjYWxsCglvZiBzZXRfc3RtdF9pbmZvLgoKMjAwNi0wOS0xMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcuZ2NjIChpWzM0NTY3XTg2LSotZGFyd2luKik6IFNldCB3aXRoX2FyY2ggYW5kCgl3aXRoX2NwdSBieSBkZWZhdWx0LgoKCSogZHdhcmYyb3V0LmMgKGR3YXJmX2ZpbGVfZGF0YSk6IE5ldy4KCShlbnVtIGR3X3ZhbF9jbGFzcyk6IEFkZCBkd192YWxfY2xhc3NfZmlsZS4KCShzdHJ1Y3QgZHdfdmFsX3N0cnVjdCk6IEFkZCB2YWxfZmlsZS4KCShmaWxlX3RhYmxlKTogQ2hhbmdlIHRvIGEgaGFzaCB0YWJsZS4KCShmaWxlX3RhYmxlX2VtaXR0ZWQpOiBEZWxldGUuCgkoZmlsZV90YWJsZV9sYXN0X2xvb2t1cF9pbmRleCk6IERlbGV0ZS4KCShlbWl0Y291bnQpOiBEZWxldGUuCgkobGFzdF9lbWl0dGVkX2ZpbGUpOiBOZXcuCgkobG9va3VwX2ZpbGVuYW1lKTogQ2hhbmdlIHByb3RvdHlwZSB0byByZXR1cm4gYSBzdHJ1Y3QgZHdhcmZfZmlsZV9kYXRhLgoJKGluaXRfZmlsZV90YWJsZSk6IERlbGV0ZS4KCShtYXliZV9lbWl0X2ZpbGUpOiBDaGFuZ2UgcHJvdG90eXBlIHRvIHRha2UgYSBzdHJ1Y3QgZHdhcmZfZmlsZV9kYXRhLgoJKEFUX2FkZHIpOiBBZGQgY29tbWVudC4KCShhZGRfQVRfZmlsZSk6IE5ldy4KCShBVF9maWxlKTogTmV3LgoJKGdldF9BVF9maWxlKTogTmV3LgoJKHByaW50X2RpZSk6IEhhbmRsZSBkd192YWxfY2xhc3NfZmlsZS4KCShwcmludF9kd2FyZl9saW5lX3RhYmxlKTogVXBkYXRlIGZvciBuZXcgZmlsZSB0YWJsZSBzdHJ1Y3R1cmUuCgkoYXR0cl9jaGVja3N1bSk6IERvIGNoZWNrc3VtIGEgZmlsZW5hbWUuCgkoc2FtZV9kd192YWxfcCwgc2FtZV9hdHRyX3ApOiBEbyBjb21wYXJlIGEgZmlsZW5hbWUuCgkoc2l6ZV9vZl9kaWUpOiBIYW5kbGUgZHdfdmFsX2NsYXNzX2ZpbGUuCgkodmFsdWVfZm9ybWF0KTogTGlrZXdpc2UuCgkob3V0cHV0X2RpZSk6IExpa2V3aXNlLiAgQWxzbywgY2FsbCBtYXliZV9lbWl0X2ZpbGUgaGVyZS4KCShzdHJ1Y3QgZmlsZV9pbmZvKTogQ29uc3RpZnkgZmlsZW5hbWVzLiAgTWFrZSBmaWxlX2lkeCBhIHBvaW50ZXIKCXRvIGEgc3RydWN0IGR3YXJmX2ZpbGVfZGF0YS4KCShzdHJ1Y3QgZGlyX2luZm8pOiBDb25zdGlmeSBkaXJlY3RvcnkgbmFtZXMuICBSZW1vdmUgJ3VzZWQnIGZpZWxkLgoJKHN0cnVjdCBmaWxlX25hbWVfYWNxdWlyZV9kYXRhKTogTmV3LgoJKGZpbGVfbmFtZV9hY3F1aXJlKTogTmV3LgoJKG91dHB1dF9maWxlX25hbWVzKTogTW9kaWZ5IHRvIGhhbmRsZSBuZXcgZmlsZSBkYXRhIHN0cnVjdHVyZXMuCgkoYWRkX3NyY19jb29yZHNfYXR0cmlidXRlcyk6IFVzZSBhZGRfQVRfZmlsZS4KCShhZGRfY2FsbF9zcmNfY29vcmRzX2F0dHJpYnV0ZXMpOiBMaWtld2lzZS4KCShkd2FyZjJvdXRfaW1wb3J0ZWRfbW9kdWxlX29yX2RlY2wpOiBMaWtld2lzZS4KCShnZW5fc3VicHJvZ3JhbV9kaWUpOiBNb2RpZnkgZm9yIG5ldyBmaWxlIGRhdGEgc3RydWN0dXJlcy4KCShnZW5fdmFyaWFibGVfZGllKTogTGlrZXdpc2UuCgkoZmlsZV90YWJsZV9lcSk6IE5ldy4KCShmaWxlX3RhYmxlX2hhc2gpOiBOZXcuCgkoZmlsZV90YWJsZV9sYXN0X2xvb2t1cCk6IE5ldy4KCShsb29rdXBfZmlsZW5hbWUpOiBSZXdyaXRlIHRvIGhhbmRsZSBuZXcgZmlsZSBkYXRhIHN0cnVjdHVyZXMuCgkobWF5YmVfZW1pdF9maWxlKTogUmV3cml0ZSB0byBoYW5kbGUgbmV3IGZpbGUgZGF0YSBzdHJ1Y3R1cmVzLgoJKGR3YXJmMm91dF9zb3VyY2VfbGluZSk6IEFsd2F5cyBjYWxsIGxvb2t1cF9maWxlbmFtZSBhbmQKCW1heWJlX2VtaXRfZmlsZS4KCShkd2FyZjJvdXRfaW5pdCk6IENyZWF0ZSBmaWxlX3RhYmxlIGhlcmUuCgkocHJ1bmVfdW51c2VkX3R5cGVzX3dhbGtfYXR0cmlicyk6IERvbid0IGNhbGwgbWF5YmVfZW1pdF9maWxlIGhlcmUuCgkoZmlsZV90YWJsZV9yZWxhdGl2ZV9wKTogTmV3LgoJKGR3YXJmMm91dF9maW5pc2gpOiBDaGFuZ2UgZGV0ZWN0aW9uIG9mIHJlbGF0aXZlIGZpbGVuYW1lcwoJdG8gd29yayB3aXRoIG5ldyBmaWxlIGRhdGEgc3RydWN0dXJlcy4gIE1vdmUgb3V0cHV0X2xpbmVfaW5mbyBjYWxsCglhZnRlciBkZWJ1Z19pbmZvIG91dHB1dC4KCjIwMDYtMDktMTEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCglQUiB0YXJnZXQvMTM2ODUKCVBSIHRhcmdldC8yNzUzNwoJUFIgdGFyZ2V0LzI4NjIxCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IEFsd2F5cyBkZWZhdWx0IHRvIDE2CglieXRlIHN0YWNrIGJvdW5kYXJ5LgoKMjAwNi0wOS0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzI4NjcyCgkqIHZhci10cmFja2luZy5jIChkdW1wX2RhdGFmbG93X3NldCk6IFN0YXJ0IGR1bXBpbmcgYXQKCXJlZ2lzdGVyIHplcm8uCgkoY2xvYmJlcl92YXJpYWJsZV9wYXJ0KTogS2lsbCBvbmx5IHRoZSB2YXJpYWJsZSBwYXJ0IGluCglyZWdpc3RlcnMgaG9sZGluZyBpdCwgbGVhdmluZyBvdGhlciB2YXJpYWJsZXMgYWxvbmUuCgoyMDA2LTA5LTExICBKb3NoIFRyaXBsZXR0ICA8am9zaEBmcmVlZGVza3RvcC5vcmc+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKE90aGVyIEJ1aWx0aW5zKTogQWN0dWFsbHkgdXNlIHRoZSBtYWNybwoJYXJndW1lbnQgaW4gdGhlIGRvY3VtZW50YXRpb24gZXhhbXBsZSBmb3IKCV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AuCgoyMDA2LTA5LTExICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjg3MjYKCSogc2NoZWQtZGVwcy5jIChzY2hlZF9hbmFseXplX3JlZyk6IE5ldyBmdW5jdGlvbiBleHRyYWN0ZWQgZnJvbS4uLgoJKHNjaGVkX2FuYWx5emVfMSk6IC4uLmhlcmUuICBDYWxsIGl0IHRvIGFuYWx5emUgcmVmZXJlbmNlcyB0bwoJcmVnaXN0ZXJzLiAgVHJlYXQgYWdhaW4gd3JpdGVzIHRvIGEgc3RhY2sgcmVnaXN0ZXIgYXMgd3JpdGluZyB0byB0aGUKCXJlZ2lzdGVyLgoJKHNjaGVkX2FuYWx5emVfMik6IC4uLmFuZCBoZXJlLiAgQ2FsbCBpdCB0byBhbmFseXplIHJlZmVyZW5jZXMgdG8KCXJlZ2lzdGVycy4gIFRyZWF0IGFnYWluIHJlYWRzIG9mIGEgc3RhY2sgcmVnaXN0ZXIgYXMgcmVhZGluZyB0aGUKCXJlZ2lzdGVyLgoKMjAwNi0wOS0xMSAgR3VlbnRlciBSb2VjayAgPGd1ZW50ZXJAcm9lY2stdXMubmV0PgoJICAgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCglQUiB0YXJnZXQvMjcyODcKCSogY29uZmlnL3JzNjAwMC9zcGUubWQgKGZyb2JfZGZfZGkpOiBSZW1vdmUgJUguCgkoZnJvYl9kaV9kZik6IFJlbW92ZSAlSC4gIENoYW5nZSBldm1lcmdlbG8gdG8gbXIuCgkoZnJvYl9kaV9kZl8yKTogUmVtb3ZlICVILiAgQ2hhbmdlIGV2bGRkIHRvIHR3byBsb2Fkcy4KCjIwMDYtMDktMTEgIEhpZGVraSBJd2Ftb3RvICA8aC1pd2Ftb3RvQGtpdC5oaS1oby5uZS5qcD4KCgkqIGRvYy9jcHAudGV4aTogRml4IG5hbWVzIG9mIGNoYXJzZXQgb3B0aW9ucy4KCjIwMDYtMDktMTAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRhcmdldC8yOTAwOQoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBVc2UgMTI4LWJpdAoJc3RhY2sgYm91bmRhcnkgYWx3YXlzIGZvciA2NGJpdHMuCgoyMDA2LTA5LTEwICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjg2MzYKCSogY29tYmluZS5jIChmb3JjZV90b19tb2RlKTogVGVzdCBmb3Igc2lkZS1lZmZlY3RzIGJlZm9yZQoJc3Vic3RpdHV0aW5nIGJ5IHplcm8uCgkoc2ltcGxpZnlfc2hpZnRfY29uc3QpOiBMaWtld2lzZSBmb3IgemVybyBvciBvdGhlciBjb25zdGFudHMuCgoyMDA2LTA5LTEwICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5AZ2NjLmdudS5vcmc+CgoJUFIgbWlkZGxlLWVuZC8yNjk4MwoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zZXRqbXApOiBGb3JjZSBuZXh0X2xhYiB0byBiZQoJcHJlc2VydmVkLgoKMjAwNi0wOS0xMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgdGFyZ2V0LzI5MDA2CgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfbWVtX2ZpdHNfbW9kZV9wKTogRGVjbGFyZS4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX2V4cGFuZF91bmFsaWduZWRfc3RvcmUpOiBVc2UgdGhlIG1vZGUKCXJldHVybmVkIGJ5IG1vZGVfZm9yX3NpemUsIHJhdGhlciB0aGFuIHRoZSBtb2RlIG9mIHNyYyBpdHNlbGYsCgl0byBjaG9vc2UgYmV0d2VlbiAzMi1iaXQgYW5kIDY0LWJpdCBwYXR0ZXJucy4KCShtaXBzX21lbV9maXRzX21vZGVfcCk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAobW92Xzxsb2FkPmwsIG1vdl88bG9hZD5yKTogVXNlIGl0IHRvIGNoZWNrCgl0aGF0IHRoZSBzaXplIG9mIHRoZSBzb3VyY2UgbWF0Y2hlcyB0aGUgc2l6ZSBvZiB0aGUgZGVzdGluYXRpb24uCgkobW92XzxzdG9yZT5sLCBtb3ZfPHN0b3JlPnIpOiBMaWtld2lzZS4KCjIwMDYtMDktMTAgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX3NlbGVjdF9ydHhfc2VjdGlvbik6IEFkZCBDT05TVF9WRUNUT1IKCWZvciBsaXRlcmFsMTYuCgoyMDA2LTA5LTA5ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AYXBwbGUuY29tPgoKCVBSIHRhcmdldC8yODk5NQoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX3NlbGVjdF9ydHhfc2VjdGlvbik6IEFkZCBUQVJHRVRfNjRCSVQKCWZvciBsaXRlcmFsMTYuCgoyMDA2LTA5LTA5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBOaWNvbGFzIFNldHRvbiA8c2V0dG9uQGFkYWNvcmUuY29tPgoKCSogZHdhcmYyb3V0LmMgKGNvbnZlcnRfY2ZhX3RvX2ZiX2xvY19saXN0KTogSGFuZGxlIERXX0NGQV9zZXRfbG9jLgoKMjAwNi0wOS0xMCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZy9tNjhrL202OGsubWQgKGJ1bmd0X3Jldik6IE5ldyBwYXR0ZXJuLgoKMjAwNi0wOS0wOSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCSAgICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJUFIgdGFyZ2V0LzI2Nzc4CgkqIHJlZ2NsYXNzLmMgKHN0cnVjdCByZWdfcHJlZik6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKHJlZ2NsYXNzKTogU2V0IHByZWZjbGFzcyB0byBOT19SRUdTIGlmIG1lbW9yeSBpcyB0aGUgYmVzdCBvcHRpb24uCgkocmVjb3JkX3JlZ19jbGFzc2VzKTogQ29wZSB3aXRoIGEgcHJlZmNsYXNzIHNldCB0byBOT19SRUdTLgoKMjAwNi0wOS0wOCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy5nY2MgKGk/ODYtKi1kYXJ3aW4pOiBBZGQgNjQtYml0IEhXSSBzdXBwb3J0LgoJKiBjb25maWcvdC1zbGliZ2NjLWRhcndpbjogU3VwcG9ydCB4ODZfNjQgbXVsdGlsaWIuCgkqIGNvbmZpZy9pMzg2L2kzODYuaCAoSlVNUF9UQUJMRVNfSU5fVEVYVF9TRUNUSU9OKToKCVJldHVybiAxIGZvciB4ODZfNjQtZGFyd2luLgoJKiBjb25maWcvaTM4Ni90LWRhcndpbjogQWRkIG02NCBtdWx0aWxpYi4KCShMSUIyX1NJRElUSV9DT05WX0ZVTkNTKTogVXNlLgoJKExJQjJGVU5DU19FWFRSQSk6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaDogU3VwcG9ydCB4ODZfNjQuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IFR1cm4gb24gZmxhZ19waWMKCWZvciB4ODZfNjQtZGFyd2luLiBEaXNhYmxlIGZsYWdfb21pdF9wb2ludGVyLgoJKGdldF9wY190aHVua19uYW1lKTogQXNzZXJ0ICFUQVJHRVRfNjRCSVQuCgkobGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBEaXNhYmxlIG1hY2hvcGljIGFkZHJlc3NpbmcgZm9yCgl4ODZfNjQuCgkobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IERpdHRvLgoJKGl4ODZfZXhwYW5kX21vdmUpOiBEaXR0by4KCShpeDg2X2V4cGFuZF9jYWxsKTogRGl0dG8uCgkobWFjaG9waWNfb3V0cHV0X3N0dWIpOiBEaXR0by4KCSogY29uZmlnL2Rhcndpbi5jIChtYWNob3BpY19zZWxlY3Rfc2VjdGlvbik6IFN1cHBvcnQgbGl0ZXJhbDE2LgoJKG1hY2hvcGljX3NlbGVjdF9ydHhfc2VjdGlvbik6IERpdHRvLgoJKiBjb25maWcvZGFyd2luLXNlY3Rpb25zLmRlZjogRGl0dG8uCgkqIGNvbmZpZy9kYXJ3aW4tNjQuYzogTmV3LgoKMjAwNi0wOS0wOCAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYy8yODUwNAoJKiBjLXRyZWUuaCAoc3RydWN0IGNfYXJnX2luZm8pOiBBZGQgcGVuZGluZ19zaXplcy4KCSogYy1wYXJzZXIuYyAoY19wYXJzZXJfcGFybXNfZGVjbGFyYXRvciwKCWNfcGFyc2VyX3Bhcm1zX2xpc3RfZGVjbGFyYXRvcik6IEluaXRpYWxpemUgcGVuZGluZ19zaXplcy4KCSogYy1kZWNsLmMgKGdldF9wYXJtX2luZm8pOiBJbml0aWFsaXplIHBlbmRpbmdfc2l6ZXMuCgkoZ2V0X3Bhcm1faW5mbyk6IFNldCBwZW5kaW5nX3NpemVzLgoJKGdyb2tkZWNsYXJhdG9yKTogQ2FsbCBwdXRfcGVuZGluZ19zaXplcyBmb3IgcGFyYW1ldGVycyBmb3IKCWZ1bmN0aW9uIGRlZmluaXRpb24gb25seS4KCjIwMDYtMDktMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjc3MjQKCSogdmFyYXNtLmMgKG91dHB1dF9jb25zdGFudCk6IE9ubHkgc3RyaXAgYWN0dWFsIG5vLW9wIGNvbnZlcnNpb25zLgoKCVBSIHRhcmdldC8xMzY4NQoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBVc2UgMTI4LWJpdAoJc3RhY2sgYm91bmRhcnkgaWYgLW1zc2UuCgoyMDA2LTA5LTA3ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi5oIChNQUNIT19TWU1CT0xfRkxBR19WQVJJQUJMRSk6IFVwZGF0ZQoJY29tbWVudC4KCSogY29uZmlnL2kzODYvZGFyd2luLmggKE1BQ0hPX1NZTUJPTF9GTEFHX1ZBUklBQkxFKToKCVJlZGVmaW5lLgoKMjAwNi0wOS0wNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkd2FyZjJvdXQuYzogUmVtb3ZlIHN0cmFuZ2UgY2hhcmFjdGVycyBmcm9tIGNvbW1lbnQgYWJvdmUKCWR3YXJmMm91dF9mcmFtZV9kZWJ1Z19leHByLgoKMjAwNi0wOS0wNyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKEhBTkRMRV9TWVNWX1BSQUdNQSk6IE1vdmUgZnJvbSBoZXJlLi4uCgkqIGNvbmZpZy9kYXJ3aW4uaDogLi4uIHRvIGhlcmUuCgoyMDA2LTA5LTA3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHg4Nl9wYXJ0aWFsX2ZsYWdfcmVnX3N0YWxsKTogTmV3LgoKCSogY29uZmlnL2kzODYvaTM4Ni5oICh4ODZfcGFydGlhbF9mbGFnX3JlZ19zdGFsbCk6IE5ldy4KCShUQVJHRVRfUEFSVElBTF9GTEFHX1JFR19TVEFMTCk6IE5ldy4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCphc2hsZGkzX2NtcF9yZXg2NCk6IERpc2FibGVkIGZvcgoJVEFSR0VUX1BBUlRJQUxfRkxBR19SRUdfU1RBTEwuCgkoKmFzaGxkaTNfY2Nvbmx5X3JleDY0KTogTGlrZXdpc2UuCgkoKmFzaGxzaTNfY21wKTogTGlrZXdpc2UuCgkoKmFzaGxzaTNfY2Nvbmx5KTogTGlrZXdpc2UuCgkoKmFzaGxzaTNfY21wX3pleHQpOiBMaWtld2lzZS4KCSgqYXNobGhpM19jbXApOiBMaWtld2lzZS4KCSgqYXNobGhpM19jY29ubHkpOiBMaWtld2lzZS4KCSgqYXNobHFpM19jbXApOiBMaWtld2lzZS4KCSgqYXNobHFpM19jY29ubHkpOiBMaWtld2lzZS4KCSgqYXNocmRpM19jbXBfcmV4NjQpOiBMaWtld2lzZS4KCSgqYXNocmRpM19jY29ubHlfcmV4NjQpOiBMaWtld2lzZS4KCSgqYXNocnNpM19jbXApOiBMaWtld2lzZS4KCSgqYXNocnNpM19jY29ubHkpOiBMaWtld2lzZS4KCSgqYXNocnNpM19jbXBfemV4dCk6IExpa2V3aXNlLgoJKCphc2hyaGkzX2NtcCk6IExpa2V3aXNlLgoJKCphc2hyaGkzX2Njb25seSk6IExpa2V3aXNlLgoJKCphc2hycWkzX2NtcCk6IExpa2V3aXNlLgoJKCphc2hycWkzX2Njb25seSk6IExpa2V3aXNlLgoJKCpsc2hyZGkzX2NtcF9yZXg2NCk6IExpa2V3aXNlLgoJKCpsc2hyZGkzX2Njb25seV9yZXg2NCk6IExpa2V3aXNlLgoJKCpsc2hyc2kzX2NtcCk6IExpa2V3aXNlLgoJKCpsc2hyc2kzX2Njb25seSk6IExpa2V3aXNlLgoJKCpsc2hyc2kzX2NtcF96ZXh0KTogTGlrZXdpc2UuCgkoKmxzaHJoaTNfY21wKTogTGlrZXdpc2UuCgkoKmxzaHJoaTNfY2Nvbmx5KTogTGlrZXdpc2UuCgkoKmxzaHJxaTJfY21wKTogTGlrZXdpc2UuCgkoKmxzaHJxaTJfY2Nvbmx5KTogTGlrZXdpc2UuCgoyMDA2LTA5LTA3IFVyb3MgQml6amFrIDx1cm9zQGtzcy1sb2thLnNpPgoKCVBSIHRhcmdldC8yODk0NgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgiKmFzaGxkaTNfY2Nvbmx5X3JleDY0IiwgIiphc2hsc2kzX2Njb25seSIsCgkiKmFzaGxoaTNfY2Nvbmx5IiwgIiphc2hscWkzX2Njb25seSIsICIqYXNocmRpM19vbmVfYml0X2Njb25seV9yZXg2NCIsCgkiKmFzaHJkaTNfY2Nvbmx5X3JleDY0IiwgIiphc2hyc2kzX29uZV9iaXRfY2Nvbmx5IiwgIiphc2hyc2kzX2Njb25seSIsCgkiKmFzaHJoaTNfb25lX2JpdF9jY29ubHkiLCAiKmFzaHJoaTNfY2Nvbmx5IiwKCSIqYXNocnFpM19vbmVfYml0X2Njb25seSIsICIqYXNocnFpM19jY29ubHkiLAoJIipsc2hyZGkzX2Njb25seV9vbmVfYml0X3JleDY0IiwgIipsc2hyZGkzX2Njb25seV9yZXg2NCIsCgkiKmxzaHJzaTNfb25lX2JpdF9jY29ubHkiLCAiKmxzaHJzaTNfY2Nvbmx5IiwKCSIqbHNocmhpM19vbmVfYml0X2Njb25seSIsICIqbHNocmhpM19jY29ubHkiLAoJIipsc2hycWkyX29uZV9iaXRfY2Nvbmx5IiwgIipsc2hycWkyX2Njb25seSI6IE5ldyBwYXR0ZXJucyB0bwoJaW1wbGVtZW50IG9ubHkgQ0Mgc2V0dGluZyBlZmZlY3RzIG9mIHNoaWZ0IGluc3RydWN0aW9ucy4KCjIwMDYtMDktMDcgIE1hcnRpbiBNaWNobG1heXIgIDx0Ym1AY3lyaXVzLmNvbT4KCgkqIGRvYy9jb250cmliLnRleGk6IEFkZCBteXNlbGYuCgoyMDA2LTA5LTA3ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBtaWRkbGUtZW5kLzI4ODYyCgkqIHN0b3ItbGF5b3V0LmMgKHJlbGF5b3V0X2RlY2wpOiBEb24ndCB6ZXJvIHRoZSBhbGlnbm1lbnQgaWYgaXQKCXdhcyBzZXQgYnkgdGhlIHVzZXIuCgoyMDA2LTA5LTA3ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIHRhcmdldC8yNzExNwoJKiBjb25maWcvc2gvc2gubWQgKGRpdnNpX2ludl9xaXRhYmxlLCBkaXZzaV9pbnZfaGl0YWJsZSk6IE5ldyBwYXR0ZXJucy4KCShkaXZzaV9pbnZfbTEpOiBVc2UgdGhlbS4KCShVTlNQRUNfRElWX0lOVl9UQUJMRSk6IE5ldyBjb25zdGFudC4KCjIwMDYtMDktMDYgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4LmNvbT4KCglQUiBydGwtb3B0LzI3ODgzCgkqIGZsb3cuYyAodXBkYXRlX2xpZmVfaW5mbyk6IElmIFVQREFURV9MSUZFX0xPQ0FMIGFuZCBQUk9QX0RFQVRIX05PVEVTCgl0aGVuIGNhbGwgY291bnRfb3JfcmVtb3ZlX2RlYXRoX25vdGVzLgoKMjAwNi0wOS0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI3MzcxCgkqIHRyZWUtaW5saW5lLmMgKGNvcHlfcmVzdWx0X2RlY2xfdG9fdmFyKTogTmV3IGZuLgoJKGRlY2xhcmVfcmV0dXJuX3ZhcmlhYmxlKTogVXNlIGl0LiAgQ2FsbCBkZWNsYXJlX2lubGluZV92YXJzIGhlcmUuCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogTm90IGhlcmUuCgoyMDA2LTA5LTA2ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIGRvYy9jb250cmliLnRleGk6IFVwZGF0ZSBteSBlbnRyeS4KCjIwMDYtMDktMDYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvZnJ2L2Zydi5oIChFWFRSQV9NRU1PUllfQ09OU1RSQUlOVCk6IERlZmluZS4KCjIwMDYtMDktMDUgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRyZWUtb3B0LzI4OTM3CgkqIHRyZWUtZmxvdy5oICh0cmVlX3NzYV91bnN3aXRjaF9sb29wcyk6IFJldHVybiB1bnNpZ25lZCBpbnQuCgkoY2Fub25pY2FsaXplX2luZHVjdGlvbl92YXJpYWJsZXMpOiBMaWtld2lzZS4KCSh0cmVlX3Vucm9sbF9sb29wc19jb21wbGV0ZWx5KTogTGlrZXdpc2UuCgkodHJlZV9zc2FfcHJlZmV0Y2hfYXJyYXlzKTogTGlrZXdpc2UuCgkocmVtb3ZlX2VtcHR5X2xvb3BzKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtdW5zd2l0Y2guYyAodHJlZV9zc2FfdW5zd2l0Y2hfbG9vcHMpOiBSZXR1cm4KCVRPRE9fY2xlYW51cF9jZmcgaW5zdGVhZCBvZiBkaXJlY3RseSBjYWxsaW5nCgljbGVhbnVwX3RyZWVfY2ZnX2xvb3AuCgkqIHRyZWUtc3NhLWxvb3AtaXZjYW5vbi5jIChjYW5vbmljYWxpemVfaW5kdWN0aW9uX3ZhcmlhYmxlcyk6CglMaWtld2lzZS4KCSh0cmVlX3Vucm9sbF9sb29wc19jb21wbGV0ZWx5KTogTGlrZXdpc2UuCgkocmVtb3ZlX2VtcHR5X2xvb3BzKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AtcHJlZmV0Y2guYyAodHJlZV9zc2FfcHJlZmV0Y2hfYXJyYXlzKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWxvb3AuYyAodHJlZV9zc2FfbG9vcF91bnN3aXRjaCk6IFVzZSB0aGUgcmV0dXJuIHZhbHVlCglvZiB0cmVlX3NzYV91bnN3aXRjaF9sb29wcy4KCSh0cmVlX3NzYV9sb29wX2l2Y2Fub24pOiBVc2UgdGhlIHJldHVybiB2YWx1ZSBvZgoJY2Fub25pY2FsaXplX2luZHVjdGlvbl92YXJpYWJsZXMuCgkodHJlZV9zc2FfZW1wdHlfbG9vcCk6IFVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mCglyZW1vdmVfZW1wdHlfbG9vcHMuCgkodHJlZV9jb21wbGV0ZV91bnJvbGwpOiBVc2UgdGhlIHJldHVybiB2YWx1ZSBvZgoJdHJlZV91bnJvbGxfbG9vcHNfY29tcGxldGVseS4KCSh0cmVlX3NzYV9sb29wX3ByZWZldGNoKTogVXNlIHRoZSByZXR1cm4gdmFsdWUgb2YKCXRyZWVfc3NhX3ByZWZldGNoX2FycmF5cy4KCSogcGFzc2VzLmMgKGV4ZWN1dGVfdG9kbyk6IEJlZm9yZSBDbGVhbnVwIENGRywgc2V0Cgl1cGRhdGluZ191c2VkX2Fsb25lIGFuZCBhZnRlciBjbGVhbnVwIENGRywgY2FsbAoJcmVjYWxjdWxhdGVfdXNlZF9hbG9uZS4KCjIwMDYtMDktMDUgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRyZWUtb3B0LzI4OTUyCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdG9yaXphYmxlX2NvbmRpdGlvbik6IE1vdmUgdGhlIGNoZWNrCglmb3IgdGhlIHR5cGUgYWZ0ZXIgdGhlIGNoZWNrIGZvciBzaW1wbGUgY29uZGl0aW9uLgoKMjAwNi0wOS0wNSAgSiJvcm4gUmVubmVja2UgIDxqb2Vybi5yZW5uZWNrZUBzdC5jb20+CgkgICAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJUFIgdGFyZ2V0LzI4NzY0CgkqIG1vZGUtc3dpdGNoaW5nLmMgKG9wdGltaXplX21vZGVfc3dpdGNoaW5nKTogTWFrZSB0aGUgZGVzdGluYXRpb24KCWJsb2NrIG9mIGFuIGFibm9ybWFsIGVkZ2UgaGF2ZSBubyBhbnRpY2lwYXRhYmxlIG1vZGUuICBEb24ndAoJaW5zZXJ0IG1vZGUgc3dpdGNoaW5nIGNvZGUgYXQgdGhlIGVuZCBvZiB0aGUgc291cmNlIGJsb2NrIG9mCglhbiBhYm5vcm1hbCBlZGdlLgoKMjAwNi0wOS0wNSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI2ODQ3CgkqIHNpbXBsaWZ5LXJ0eC5jIChzdHJ1Y3Qgc2ltcGxpZnlfcGx1c19taW51c19vcF9kYXRhKTogUmVtb3ZlIGl4LgoJKHNpbXBsaWZ5X3BsdXNfbWludXNfb3BfZGF0YV9jbXApOiBGb3IgUkVHcywgYnJlYWsgdGllcyBvbiB0aGUgcmVnbm8uCgkoc2ltcGxpZnlfcGx1c19taW51cyk6IENvdW50IG5fY29uc3RhbnRzIHdoaWxlIGZpbGxpbmcgb3BzLiAgUmVwbGFjZQoJcXNvcnQgd2l0aCBpbnNlcnRpb24gc29ydC4gIEJlZm9yZSBnb2luZyB0aHJvdWdoIHRoZSBhcnJheSB0byBzaW1wbGlmeQoJcGFpcnMsIHNvcnQgaXQuICBEZWxheSBlYXJseSBleGl0IHVudGlsIGFmdGVyIHRoZSBmaXJzdCBzb3J0LCBleGl0aW5nCglvbmx5IGlmIG5vIHN3YXBzIG9jY3VycmVkLiAgU2ltcGxpZnkgcGFpcnMgaW4gcmV2ZXJzZWQgb3JkZXIsIHdpdGhvdXQKCXNwZWNpYWwtY2FzaW5nIHRoZSBmaXJzdCBpdGVyYXRpb24uICBQYWNrIG9wcyBhZnRlciBzaW1wbGlmeWluZyBwYWlycy4KCjIwMDYtMDktMDUgIEFuYXRvbHkgU29rb2xvdiA8YWVzb2tAcG9zdC5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGF2cl9tY3VfdHlwZXMpOiBBZGQgc3VwcG9ydCBmb3IgYXQ5MHB3bTEgZGV2aWNlLgoJKiBjb25maWcvYXZyL3QtYXZyIChNVUxUSUxJQl9NQVRDSEVTKTogKERpdHRvLikuCgkqIGNvbmZpZy9hdnIvYXZyLmggKExJTktfU1BFQywgQ1JUX0JJTlVUSUxTX1NQRUNTKTogKERpdHRvLikuCgkoYXZyX3J0eF9jb3N0cyk6IE1hcmsgJ291dGVyX2NvZGUnIGFyZ3VtZW50IHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCjIwMDYtMDktMDUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yODkwMAoJKiB0cmVlLWlmLWNvbnYuYyAoZmluZF9waGlfcmVwbGFjZW1lbnRfY29uZGl0aW9uKTogR2ltcGxpZnkKCWNvbXBvdW5kIGNvbmRpdGlvbmFsIGJlZm9yZSBjcmVhdGluZyBDT05EX0VYUFIgY29uZGl0aW9uLgoKMjAwNi0wOS0wNSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI4OTA1CgkqIHRyZWUtdnJwLmMgKGZpeF9lcXVpdmFsZW5jZV9zZXQpOiBNYW51YWxseSBpbXBsZW1lbnQKCSF2YWx1ZV9yYW5nZXNfaW50ZXJzZWN0X3AgdG8gYWxzbyBoYW5kbGUgc3ltYm9saWMgcmFuZ2VzLgoKMjAwNi0wOS0wNSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMjg5MzUKCSogdHJlZS1zc2EtY2NwLmMgKGZvbGRfc3RtdF9yKTogTWFrZSBzdXJlIHRvIGZvbGQgdGhlIGNvbmRpdGlvbgoJb2YgYSBDT05EX0VYUFIuCgoyMDA2LTA5LTA0ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjc2MTYKCSogY3NlLmMgKHRhYmxlX3NpemUpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKG5ld19iYXNpY19ibG9jayk6IEluaXRpYWxpemUgaXQgdG8gMC4KCShyZW1vdmVfZnJvbV90YWJsZSk6IERlY3JlbWVudCBpdC4KCShpbnNlcnQpOiBJbmNyZW1lbnQgaXQuCgkoZm9sZF9ydHhfbWVtXzEpOiBOZXcgZnVuY3Rpb24sIHJlbmFtZWQgZnJvbSBmb2xkX3J0eF9tZW0uCgkoZm9sZF9ydHhfbWVtKTogRW5mb3JjZSBhIGNhcCBvbiB0aGUgcmVjdXJzaW9uIGRlcHRoLiAgQ2FsbAoJZm9sZF9ydHhfbWVtXzEgaWYgdW5kZXIgdGhlIGNhcC4KCShmb2xkX3J0eCkgPFJUWF9DT01NX0FSSVRIPjogSW4gdGhlIGFzc29jaWF0aXZlIGNhc2UsIGRlbGF5IGEgbGl0dGxlCgl0aGUgbG9va3VwIG9mIHRoZSBlcXVpdmFsZW50IGV4cHJlc3Npb24gYW5kIHRlc3QgZm9yIGVxdWFsaXR5IG9mIHRoZQoJZmlyc3Qgb3BlcmFuZCBvZiB0aGUgZXF1aXZhbGVudCBleHByZXNzaW9uIGJlZm9yZSBpbiB0dXJuIGxvb2tpbmcgdXAKCWFuIGVxdWl2YWxlbnQgY29uc3RhbnQgZm9yIHRoZSBzZWNvbmQgb3BlcmFuZC4KCjIwMDYtMDktMDIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCVJldmVydCB0aGlzIGNoYW5nZToKCTIwMDYtMDMtMTcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X3N0YWNrX2FkanVzdCk6IEFsd2F5cyB0cmFjayB0aGUgc3RhY2sKCXBvaW50ZXIsIGluc3RlYWQgb2YgYXNzdW1pbmcgaXQgaXMgcG9zc2libGUgdG8gZGVyaXZlIHRoZQoJY29ycmVjdCBhcmdzIHNpemUgZnJvbSBhIGNhbGwgaW5zbi4KCjIwMDYtMDktMDIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjc1NjcKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX21lbWNweSwgZm9sZF9idWlsdGluX21lbW1vdmUpOiBSZW1vdmUuCgkoZm9sZF9idWlsdGluX21lbXBjcHkpOiBSZW5hbWUgdG8uLi4KCShmb2xkX2J1aWx0aW5fbWVtb3J5X29wKTogLi4uIHRoaXMuICBPcHRpbWl6ZSBvbmUgZWxlbWVudCBjb3B5CglpbnRvIGFuIGFzc2lnbm1lbnQuCgkoZm9sZF9idWlsdGluX21lbXNldCwgZm9sZF9idWlsdGluX2J6ZXJvLCBmb2xkX2J1aWx0aW5fYmNvcHkpOiBOZXcKCWZ1bmN0aW9ucy4KCShleHBhbmRfYnVpbHRpbl9zdHJjcHksIGV4cGFuZF9idWlsdGluX3N0cm5jcHkpOiBIYW5kbGUgQ09NUE9VTkRfRVhQUi4KCShleHBhbmRfYnVpbHRpbl9tZW1jcHksIGV4cGFuZF9idWlsdGluX21lbXBjcHksCglleHBhbmRfYnVpbHRpbl9tZW1tb3ZlKTogTGlrZXdpc2UuICBVc2UgZm9sZF9idWlsdGluX21lbW9yeV9vcC4KCShmb2xkX2J1aWx0aW5fMSk6IEhhbmRsZSBCVUlMVF9JTl9NRU1TRVQsIEJVSUxUX0lOX0JaRVJPIGFuZAoJQlVJTFRfSU5fQkNPUFkuICBVc2UgZm9sZF9idWlsdGluX21lbW9yeV9vcCBmb3IKCUJVSUxUX0lOX01FTXtDUFksUENQWSxNT1ZFfS4KCjIwMDYtMDktMDEgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL20zMmMvY29uZC5tZCAoY2JyYW5jaDxtb2RlPjQpOiBEZWZlciBzcGxpdHRpbmcgdW50aWwgYWZ0ZXIgcmVsb2FkLgoJKHN0enhfMTYpOiBMaWtld2lzZS4KCSgic3R6eF8yNF88bW9kZT4iKTogTGlrZXdpc2UuCgkoInN0enhfcmV2ZXJzZWRfPG1vZGU+Iik6IExpa2V3aXNlLCBhbmQgbWFrZSBtb2RlLXNwZWNpZmljLgoJKCJjbXA8bW9kZT5fb3AiKTogTmV3LgoJKGNtcDxtb2RlPik6IENoYW5nZSB0byBleHBhbmRlcjsganVzdCBzYXZlIG9wZXJhbmRzLgoJKGI8Y29kZT5fb3ApOiBOZXcuCgkoYjxjb2RlPik6IENoYW5nZSB0byBleHBhbmRlciwgZW1pdCBjb21wYXJlIGhlcmUuCgkoczxjb2RlPl9vcCk6IENoYW5nZSB0byB1c2Ugc3BsaXQgYW5kIGV4cGFuZGVyLgoJKHM8Y29kZT5fMjRfb3ApOiBMaWtld2lzZS4KCShzPGNvZGU+Xzxtb2RlPik6IE5ldy4KCShzPGNvZGU+Xzxtb2RlPl8yNCk6IE5ldy4KCShtb3ZxaWNjXzxjb2RlPl88bW9kZSk6IE5ldy4KCShtb3ZoaWNjXzxjb2RlPl88bW9kZT4pOiBOZXcuCgkoczxjb2RlPik6IE5ldy4KCShzPGNvZGU+XzI0KTogTmV3LgoJKiBjb25maWcvbTMyYy9tMzJjLmMgKGNvbXBhcmVfb3AwLCBjb21wYXJlX29wMSk6IE5ldy4KCShtMzJjX3BlbmRfY29tcGFyZSk6IE5ldy4KCShtMzJjX3VucGVuZF9jb21wYXJlKTogTmV3LgoJKG0zMmNfZXhwYW5kX3NjYyk6IE5ldy4KCShtMzJjX2V4cGFuZF9tb3ZjYyk6IEVtaXQgdGhlIGNvbXBhcmUgYWxzby4KCSogY29uZmlnL20zMmMvcHJlZGljYXRlcy5tZCAobXJhX25vcHBfb3BlcmFuZCk6IE5ldy4KCjIwMDYtMDktMDEgIEoib3JuIFJlbm5lY2tlICA8am9lcm4ucmVubmVja2VAc3QuY29tPgoJUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoJQWRhbSBOZW1ldCAgPGFuZW1ldEBjYXZpdW1uZXR3b3Jrcy5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNzIyNgoJKiBidWlsdGlucy5jIChnZXRfcG9pbnRlcl9hbGlnbm1lbnQpOiBIYW5kbGUgbW9yZSBmb3JtcwoJb2YgYmFzZSBhZGRyZXNzZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBkZXJpdmUgbW9yZSBwcmVjaXNlCglpbmZvcm1hdGlvbiBhYm91dCBhbGlnbm1lbnQuCgoyMDA2LTA5LTAxICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjg4OTkKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfbW9kaWZ5X2V4cHJfcmhzKSBbQklORF9FWFBSXTogSGFuZGxlCgl3YW50X3ZhbHVlLgoKCSogZ2ltcGxpZnkuYyAodm9pZGlmeV93cmFwcGVyX2V4cHIpOiBIYW5kbGUgbnVsbCB0eXBlLgoKMjAwNi0wOS0wMSAgSm9zaCBDb25uZXIgIDxqY29ubmVyQGFwcGxlLmNvbT4KCglQUiBjKysvMjU1MDUKCSogdHJlZS1ucnYuYyAoZGVzdF9zYWZlX2Zvcl9ucnZfcCk6IE5ldyBmdW5jdGlvbi4KCShleGVjdXRlX3JldHVybl9zbG90X29wdCk6IFVzZSBpdC4KCjIwMDYtMDgtMzEgIEpvc2ggQ29ubmVyICA8amNvbm5lckBhcHBsZS5jb20+CgoJUFIgYysrLzI1NTA1CgkqIHRyZWUtZ2ltcGxlLmMgKGlzX2dpbXBsZV9tZW1fcmhzKTogUmVjb2duaXplIGZ1bmN0aW9ucwoJcmV0dXJuaW5nIGFnZ3JlZ2F0ZXMuCgoyMDA2LTA4LTMxICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjg4MzkKCSogdHJlZS1pbnRvLXNzYS5jIChwcnVuZV91bnVzZWRfcGhpX25vZGVzKTogVGFrZSBpbnRvIGFjY291bnQga2lsbHMgaW4KCWJsb2NrcyBpbiB0aGF0IHBoaSBhcmd1bWVudHMgYXBwZWFyLgoKMjAwNi0wOC0zMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgb3RoZXIvMjIzMTMKCSogZHdhcmYyb3V0LmMgKGFkZF9mZGVfY2ZpKTogVXNlIGEgc2V0X2xvYyBpZiB0aGUgY3VycmVudCBsYWJlbCBpcwoJTlVMTCwgb3RoZXJ3aXNlIHVzZSBhbiBhZHZhbmNlX2xvYzQgdG8gYWRqdXN0IHJlbGF0aXZlIHRvIHRoZQoJY3VycmVudCBsYWJlbC4KCShvdXRwdXRfY2ZpKSA8RFdfQ0ZBX3NldF9sb2M+OiBVcGRhdGUgdGhlIGN1cnJlbnQgbGFiZWwuCgkoZHdhcmYyb3V0X3N3aXRjaF90ZXh0X3NlY3Rpb24pOiBSZXNldCB0aGUgY3VycmVudCBsYWJlbCB0byBhdm9pZAoJdXNpbmcgYWR2YW5jZV9sb2M0IG92ZXIgc2VjdGlvbiBib3VuZGFyaWVzLgoKMjAwNi0wOC0zMSAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCglQUiB0YXJnZXQvMjQzNjcKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoIm1vdnNpIiwgIm1vdmRpIiBleHBhbmRlcik6IEFjY2VwdCBydHhlcyBsaWtlCglyMTIgKyBTWU1CT0xJQ19DT05TVC4KCjIwMDYtMDgtMzAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluIChzZWUubyk6IEFkZCAkKEVYUFJfSCkgZGVwZW5kZW5jeS4KCjIwMDYtMDgtMzAgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI3NzM1CgkqIGNmZ2xvb3BtYW5pcC5jIChmaXhfbG9vcF9wbGFjZW1lbnRzLCBmaXhfYmJfcGxhY2VtZW50cywgdW5sb29wKToKCUFkZCBuZXcgYXJndW1lbnQgdG8ga2VlcCB0cmFjayBvZiB3aGV0aGVyIGFuIGlycmVkdWNpYmxlIHJlZ2lvbgoJd2FzIGFmZmVjdGVkLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCShmaXhfaXJyZWR1Y2libGVfbG9vcHMpOiBSZW1vdmVkLgoJKHJlbW92ZV9wYXRoKTogQ2FsbCBtYXJrX2lycmVkdWNpYmxlX2xvb3BzIGlmIEVER0VfSVJSRURVQ0lCTEVfTE9PUAoJZmxhZ3Mgd2VyZSBpbnZhbGlkYXRlZC4KCjIwMDYtMDgtMjkgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCpmb3BfZGZfY29tbV9taXhlZCk6IE1hdGNoIERGIG9wZXJhbmRzCglpbnN0ZWFkIG9mIFNGIG9wZXJhbmRzLgoJKCpmb3BfZGZfY29tbV9zc2UpOiBMaWtld2lzZS4KCSgqZm9wX2RmX2NvbW1faTM4Nyk6IExpa2V3aXNlLgoJKCpmb3BfZGZfMV9taXhlZCk6IExpa2V3aXNlLgoJKCpmb3BfZGZfMV9zc2UpOiBMaWtld2lzZS4KCjIwMDYtMDgtMjkgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoJICAgIEoib3JuIFJlbm5lY2tlICA8am9lcm4ucmVubmVja2VAc3QuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE3NTA2CgkqIHRyZWUtc3NhLmMgKHdhcm5fdW5pbml0KTogSWYgd2FybmluZyBhYm91dCBhIGxvY2F0aW9uIG91dHNpZGUgb2YKCXRoZSBjdXJyZW50IGZ1bmN0aW9uLCBub3RlIHdoZXJlIHRoZSB2YXJpYWJsZSB3YXMgZGVjbGFyZWQuCgoyMDA2LTA4LTI4ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjg0MTEKCSogZG91YmxlLWludC5jIChkb3VibGVfaW50X2Rpdik6IFVzZSBkb3VibGVfaW50X2Rpdm1vZC4KCShkb3VibGVfaW50X2Rpdm1vZCwgZG91YmxlX2ludF9zZGl2bW9kLCBkb3VibGVfaW50X3VkaXZtb2QsCglkb3VibGVfaW50X21vZCwgZG91YmxlX2ludF9zbW9kLCBkb3VibGVfaW50X3Vtb2QpOiBOZXcgZnVuY3Rpb25zLgoJKiBkb3VibGUtaW50LmggKGRvdWJsZV9pbnRfZGl2bW9kLCBkb3VibGVfaW50X3NkaXZtb2QsCglkb3VibGVfaW50X3VkaXZtb2QsIGRvdWJsZV9pbnRfbW9kLCBkb3VibGVfaW50X3Ntb2QsIGRvdWJsZV9pbnRfdW1vZCk6CglEZWNsYXJlLgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChjb25zdGFudF9tdWx0aXBsZV9vZik6IFJldHVybnMgdGhlIHJlc3VsdAoJaW4gZG91YmxlX2ludC4KCShnZXRfY29tcHV0YXRpb25fYWZmLCBnZXRfY29tcHV0YXRpb25fY29zdF9hdCk6IEhhbmRsZSBkb3VibGVfaW50CglyZXR1cm4gdHlwZSBvZiBjb25zdGFudF9tdWx0aXBsZV9vZi4KCjIwMDYtMDgtMjggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjY2MzIKCSogY29udmVydC5jIChjb252ZXJ0X3RvX2ludGVnZXIpOiBTZXQgVFJFRV9OT19XQVJOSU5HIHRvIDEgb24KCWFuIGltcGxpY2l0IGNvbnZlcnNpb24uCgoyMDA2LTA4LTI4ICBQcmFmdWxsYSBUaGFrYXJlICA8cHJhZnVsbGF0QGtwaXRjdW1taW5zLmNvbT4KCgkqIGNvbmZpZy9oODMwMC9oODMwMC5jIChUQVJHRVRfREVGQVVMVF9UQVJHRVRfRkxBR1MpOiBOZXcuCgoyMDA2LTA4LTI3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGlmY3Z0LmMgKGNoZWFwX2JiX3J0eF9jb3N0X3ApOiBEb24ndCBzcGVjdWxhdGl2ZWx5IGV4ZWN1dGUKCXg4NyBpbnN0cnVjdGlvbnMuCgoyMDA2LTA4LTI3ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2NydGZhc3RtYXRoLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDYtMDgtMjYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdHJlZS5oIChDQVNFX0xPV19TRUVOLCBDQVNFX0hJR0hfU0VFTik6IE5ldyBtYWNyb3MgZm9yIG1hbmlwdWxhdGluZwoJdGVtcG9yYXJ5IHZpc2l0IGZsYWdzIG9uIENBU0VfTEFCRUxfRVhQUnMuCgkqIGMtY29tbW9uLmMgKG1hdGNoX2Nhc2VfdG9fZW51bSk6IEFkZCBmdW5jdGlvbiBjb21tZW50LiAgQXZvaWQKCU8oTikgbG9vcCwgYnkgbG9va2luZyB1cCBib3RoIENBU0VfTE9XX1NFRU4gYW5kIENBU0VfSElHSF9TRUVOLgoJKGNfZG9fc3dpdGNoX3dhcm5pbmdzKTogIFJlb3JnYW5pemUgdG8gcmVjb3JkIENBU0VfTE9XX1NFRU4gYW5kCglDQVNFX0hJR0hfU0VFTiBmb3IgZW51bWVyYXRlZCB0eXBlcy4gIElmIHRoZSBzd2l0Y2ggZXhwcmVzc2lvbiBpcwoJYSBjb25zdGFudCwgb25seSB3YXJuIGlmIHRoYXQgY29uc3RhbnQgdmFsdWUgaXNuJ3QgaGFuZGxlZC4KCjIwMDYtMDgtMjYgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNDAwOQoJKiBpbnB1dC5oIChyZXN0b3JlX2lucHV0X2ZpbGVfc3RhY2spOiBEZWNsYXJlLgoJKElOUFVUX0ZJTEVfU1RBQ0tfQklUUyk6IERlZmluZS4KCSogdG9wbGV2LmMgKGZzX3AsIGlucHV0X2ZpbGVfc3RhY2tfaGlzdG9yeSwKCWlucHV0X2ZpbGVfc3RhY2tfcmVzdG9yZWQsIHJlc3RvcmVfaW5wdXRfZmlsZV9zdGFjayk6IE5ldy4KCShwdXNoX3NyY2xvYywgcG9wX3NyY2xvYyk6IENoZWNrIGZvciBpbnB1dF9maWxlX3N0YWNrX3RpY2sKCW92ZXJmbG93aW5nIElOUFVUX0ZJTEVfU1RBQ0tfQklUUyBiaXRzLiAgU2F2ZSBuZXcgc3RhdGUgb2Ygc3RhY2suCgkocG9wX3NyY2xvYyk6IERvbid0IGZyZWUgb2xkIHN0YXRlIG9mIHN0YWNrLgoKMjAwNi0wOC0yNiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCVBSIHRhcmdldC8yNzU0NAoJKiBkb2MvZXh0ZW5kLnRleGkgKFBvd2VyUEMgVmFyaWFibGUgQXR0cmlidXRlcyk6IE1lbnRpb24gYWx0aXZlYy4KCShQb3dlclBDIFR5cGUgQXR0cmlidXRlcyk6IE5ldy4KCjIwMDYtMDgtMjYgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5jIChmdW5jdGlvbl9hcmdfYm91bmRhcnkpOiBOZXcuCgkoZnVuY3Rpb25fYXJnLCB4dGVuc2FfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBMaW1pdCBhbGlnbm1lbnQgdG8KCVNUQUNLX0JPVU5EQVJZLgoJKiBjb25maWcveHRlbnNhL3h0ZW5zYS5oIChGVU5DVElPTl9BUkdfQk9VTkRBUlkpOiBNb3ZlIGNvZGUgdG8gbmV3CglmdW5jdGlvbl9hcmdfYm91bmRhcnkgZnVuY3Rpb24gdGhhdCBsaW1pdHMgYWxpZ25tZW50IHRvIFNUQUNLX0JPVU5EQVJZLgoKMjAwNi0wOC0yNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yODY4MwoJKiBjZmdleHBhbmQuYyAoYWRkX3JlZ19icl9wcm9iX25vdGUpOiBDaGVjayBpZiBsYXN0IGhhcyBleGFjdGx5CgkzIGZvbGxvd2luZyBpbnNucy4KCjIwMDYtMDgtMjUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBmbG93LmMgKHZlcmlmeV93aWRlX3JlZyk6IFVzZSBpbnRlcm5hbF9lcnJvciBmb3IgY29uc2lzdGVuY3kgZmFpbHVyZS4KCSh2ZXJpZnlfbG9jYWxfbGl2ZV9hdF9zdGFydCk6IExpa2V3aXNlLgoKMjAwNi0wOC0yNSAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYy8yNzg5MwoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9kZWNsX2V4cHIsIGdpbXBsaWZ5X2luaXRfY3Rvcl9wcmVldmFsLAoJb21wX2FkZF92YXJpYWJsZSk6IFRyZWF0IHNpemVzIGFzIHZhcmlhYmxlIHdoZW5ldmVyIG5vdAoJSU5URUdFUl9DU1QuCgoyMDA2LTA4LTI2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8yODgxNAoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5KTogRm9sZCB0ZW1wb3JhcnkgdG8gY29ycmVjdAoJdHlwZSBiZWZvcmUgY29uc3RydWN0aW5nIG5ldyBjb21wYXJpc29uLgoKMjAwNi0wOC0yNSAgRmFyaWJvcnogSmFoYW5pYW4gIDxmamFoYW5pYW5AYXBwbGUuY29tPgoKCVBSIGMvMjg0MTgKCSogYy1naW1wbGlmeS5jIChnaW1wbGlmeV9jb21wb3VuZF9saXRlcmFsX2V4cHIpOiBEb24ndCBhZGQKCXZhcmlhYmxlIGFnYWluIGlmIERFQ0xfU0VFTl9JTl9CSU5EX0VYUFJfUC4KCjIwMDYtMDgtMjUgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMvMjgyOTkKCSogYy1kZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogRG9uJ3QgdHJ5IHRvIHByb2Nlc3MgcHJvdG90eXBlCglpbmZvcm1hdGlvbiBmcm9tIG9sZCBkZWNsYXJhdGlvbiB0aGF0IGlzbid0IGEgZnVuY3Rpb24uCgoyMDA2LTA4LTI1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgdGFyZ2V0LzI4NjIxCgkqIGNvbmZpZy9pMzg2L2NydGZhc3RtYXRoLmMgKHNldF9mYXN0X21hdGgpOiBGb3JjZSBzdGFjayBhbGlnbm1lbnQuCgoyMDA2LTA4LTI1ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIHRhcmdldC8yNzA3NQoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChwcmludF9vcGVyYW5kKTogT25seSB1c2UgZTUwMCAleSBzeW50YXgKCWZvciA4IGJ5dGUgb2JqZWN0cy4KCjIwMDYtMDgtMjUgIEoib3JuIFJlbm5lY2tlICA8am9lcm4ucmVubmVja2VAc3QuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE2ODc2CgkqIGMtdHlwZWNrLmMgKGNfY29udmVydF9wYXJtX2Zvcl9pbmxpbmluZyk6IERvbid0IHRha2UgZWFybHkKCWV4aXQgaWYgUEFSTSBkb2Vzbid0IG1hdGNoIFZBTFVFLgoKMjAwNi0wOC0yNSAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EveHRlbnNhLmggKEFTTV9PVVRQVVRfUE9PTF9QUk9MT0dVRSk6IERvIG5vdCBlbWl0IGEKCWxpdGVyYWxfcHJlZml4IGRpcmVjdGl2ZS4KCShYVEVOU0FfREVDTEFSRV9GVU5DVElPTl9TSVpFKTogRGVsZXRlLgoJKiBjb25maWcveHRlbnNhL2xpbnV4LmggKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX1NJWkUpOiBEZWxldGUuCgkqIGNvbmZpZy94dGVuc2EvZWxmLmggKEFTTV9ERUNMQVJFX0ZVTkNUSU9OX1NJWkUpOiBEZWxldGUuCgoyMDA2LTA4LTI1ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJUFIgdGFyZ2V0LzI4NzUzCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZjY19pbnRlcm5hbDEpOiBDaGFuZ2Ugb3BlcmFuZCAxCglwcmVkaWNhdGUgdG8gZ2VuZXJhbF9vcGVyYW5kLiAgQWRkIDAtPnkgYW5kIEktPnIgYWx0ZXJuYXRpdmVzLgoKMjAwNi0wOC0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvdG0udGV4aTogRml4IGEgdHlwby4KCSogcHJlZGljdC5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDYtMDgtMjUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbW4xMDMwMC9tbjEwMzAwLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogQWRkCglhc3NlcnRpb25zIG9mICJjcHUiIGFuZCAibWFjaGluZSIuCgoyMDA2LTA4LTI0ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0cmVlLW9wdC8yODgwNwoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhY2Nlc3NfY2FuX3RvdWNoX3ZhcmlhYmxlKTogRG9uJ3Qgc2F5Cgl0aGUgYWNjZXNzIHRocm91Z2ggYSBiYXNlIHdoaWNoIGhhcyBhbiBhbGlhcyBzZXQgb2YgMCBjYW5ub3QKCXRvdWNoIHRoZSB2YXJpYWJsZS4KCjIwMDYtMDgtMjQgIEJpbGwgV2VuZGxpbmcgIDx3ZW5kbGluZ0BhcHBsZS5jb20+CgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX0RFRkFVTFRfUEFDS19TVFJVQ1QpOiBGaXhlZCBFbmdsaXNoLgoKMjAwNi0wOC0yNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogcmVsb2FkMS5jIChlbWl0X3JlbG9hZF9pbnNucyk6IEZpeCB5ZXQgYW5vdGhlciB0eXBvIGluIG15IHBhdGNoLgoKMjAwNi0wOC0yNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIGRlYnVnLzI2ODgxCgkqIGNncmFwaC5jOiBGaXggY29tbWVudHMuCgkoY2dyYXBoX3ZhcnBvb2xfbWFya19uZWVkZWRfbm9kZSk6IE1hcmsgb25seSB2YXJpYWJsZXMgbm90IGFscmVhZHkKCW91dHB1dCB0byBmaWxlLgoJKiBjZ3JhcGh1bml0LmM6IFVwZGF0ZSBjb21tZW50czsgaW5jbHVkZSBndC1jZ3JhcGh1bml0LmgKCShjZ3JhcGhfdmFycG9vbF9hc3NlbWJsZWRfbm9kZXNfcXVldWUpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGNncmFwaF92YXJwb29sX2Fzc2VtYmxlX2RlY2wpOiBSZWNvcmQgb3V0cHV0IGRlY2xzIGZvciBkZWJ1ZyBvdXQgY29kZS4KCShjZ3JhcGhfdmFycG9vbF9vdXRwdXRfZGVidWdfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCShjZ3JhcGhfZmluYWxpemVfY29tcGlsYXRpb25fdW5pdCwgY2dyYXBoX29wdGltaXplKTogQ2FsbCBpdC4KCSogTWFrZWZpbGUuaW46IEFkZCBndC1jZ3JhcGh1bml0LmgKCjIwMDYtMDgtMjQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHByZWRpY3QuYyAocHJvYmFiaWxpdHlfcmVsaWFibGVfcCk6IE5ldyBwcmVkaWNhdGUuCgkoZWRnZV9wcm9iYWJpbGl0eV9yZWxpYWJsZV9wLCBicl9wcm9iX25vdGVfcmVsaWFibGVfcCk6IExpa2V3aXNlLgoJKHByZWRpY3RfbG9vcHMpOiBEbyBub3QgcHJlZGljdCBsb29wIGV4aXQgd2l0aCBsZXNzIHRoYW4gMiUKCXByb2JhYmlsaXR5LgoJKiBiYXNpYy1ibG9jay5oIChlZGdlX3Byb2JhYmlsaXR5X3JlbGlhYmxlX3AsCglicl9wcm9iX25vdGVfcmVsaWFibGVfcCk6IERlY2xhcmUuCgkqIGlhNjQuaCAoaWE2NF9wcmludF9vcGVyYW5kKTogRG8gbm90IGRpc2FibGUgb24tY2hpcCBicmFuY2gKCXByZWRpY3Rpb24gd2hlbiBzdGF0aWMgcHJlZGljdG9yIGlzIG5vdCByZWxpYWJsZS4KCSogcnM2MDAwLmMgKG91dHB1dF9jYnJhbmNoKTogTGlrZXdpc2UuCgoyMDA2LTA4LTIzICBTdHVhcnQgSGFzdGluZ3MgIDxzdHVhcnRAYXBwbGUuY29tPgoKCVBSIDI4ODI1CgkqIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX3ZlY3Rvcl9pbml0X2R1cGxpY2F0ZSwKCWl4ODZfZXhwYW5kX3ZlY3Rvcl9pbml0X29uZV9ub256ZXJvKTogUmVtb3ZlIFRBUkdFVF9TU0UgdGVzdC4KCjIwMDYtMDgtMjEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCVBSIGRlYnVnLzI4NjkyCgkqIGR3YXJmMm91dC5jIChydGxfZm9yX2RlY2xfaW5pdCk6IERvbid0IHRyeSB0byBjcmVhdGUgUlRMIGZvcgoJY29tcGxleCB2YWx1ZXMsIG5vciBmb3IgZ2VuZXJpYyB2ZWN0b3IgdmFsdWVzLgoKMjAwNi0wOC0yMiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMjg3NzYKCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKGZvbGRfdXNlZF9wb2ludGVyKTogQWRkIGF0X3N0bXQKCXBhcmFtZXRlci4gIENvbnZlcnQgYXJndW1lbnRzIHRvIGFyaXRobWV0aWMgZXhwcmVzc2lvbiB0byB0aGUKCWNocmVjcyB0eXBlLgoJKGFuYWx5emVfc2NhbGFyX2V2b2x1dGlvbl8xKTogQWRqdXN0IGNhbGxlci4KCjIwMDYtMDgtMjIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQYXRjaCBieSBQYW9sbyBCb256aW5pCgkqIHJlbG9hZDEuYyAoZW1pdF9yZWxvYWRfaW5zbnMpOiBGaXggaW5jb3JyZWN0IGJyYWNrZXRpbmcgaW50cm9kdWNlZCBieQoJbXkgcHJldmlvdXMgcGF0Y2guCgoyMDA2LTA4LTIyICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yODAwMwoJKiB0cmVlLXNzYS1hbGlhcy5jIChjb21wdXRlX21heV9hbGlhc2VzKTogQ29tcHV0ZSBjYWxsIGNsb2JiZXJlZAoJYmVmb3JlIGdyb3VwaW5nIGFsaWFzZXMuCgoyMDA2LTA4LTIyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl92YWx1ZV9yZWdubyk6IERvbid0IHJldHVybiBGSVJTVF9NTVhfUkVHCglpZiAhVEFSR0VUX01NWCwgYW5kIGRvbid0IHJldHVybiBGSVJTVF9TU0VfUkVHIGlmICFUQVJHRVRfU1NFLgoKMjAwNi0wOC0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI3MTE1CgkqIGdpbXBsaWZ5LmMgKHZvaWRpZnlfd3JhcHBlcl9leHByKTogSGFuZGxlIFNUQVRFTUVOVF9MSVNUIGFzIGEKCXdyYXBwZXIuICBMb29wIHRvIGhhbmRsZSBuZXN0ZWQgd3JhcHBlcnMuCgkoZ2ltcGxpZnlfYmluZF9leHByKTogUmVtb3ZlIHRlbXAgcGFyYW1ldGVyLgoJKGdpbXBsaWZ5X21vZGlmeV9leHByX3Jocyk6IEhhbmRsZSBDTEVBTlVQX1BPSU5UX0VYUFIsIEJJTkRfRVhQUgoJYW5kIFNUQVRFTUVOVF9MSVNUIG9uIHRoZSByaHMuCgkoZ2ltcGxpZnlfc3RhdGVtZW50X2xpc3QpOiBWb2lkaWZ5IHRoZSBTVEFURU1FTlRfTElTVC4KCShnaW1wbGlmeV9leHByKTogUGFzcyBwcmVfcCB0byBnaW1wbGlmeV9zdGF0ZW1lbnRfbGlzdC4KCShnaW1wbGlmeV90YXJnZXRfZXhwcik6IFJlbW92ZSBzcGVjaWFsIEJJTkRfRVhQUiBoYW5kbGluZy4KCjIwMDYtMDgtMjEgIEoib3JuIFJlbm5lY2tlICA8am9lcm4ucmVubmVja2VAc3QuY29tPgoKCSogY29uZmlnL3NoL2xpYjFmdW5jcy1Pcy00LTIwMC5hc206IEd1YXJkIGVudGlyZSBmaWxlIHdpdGgKCSNpZiAhX19TSE1FRElBX18gLgoKMjAwNi0wOC0yMSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2luaXRfY29uc3RydWN0b3IpIDxSRUNPUkQsVU5JT04sQVJSQVkgdHlwZXM+OgoJQXJyYW5nZSBmb3IgdGhlIHRlbXBvcmFyeSBjYXB0dXJlcyBvZiBjb21wb25lbnRzIG92ZXJsYXBwaW5nIHRoZSBsaHMKCXRvIGhhcHBlbiBiZWZvcmUgdGhlIGxocyBpcyBwb3NzaWJseSBjbGVhcmVkLgoKMjAwNi0wOC0yMSAgTWFyayBTaGlud2VsbCAgPHNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvYXJtL3ByLXN1cHBvcnQuYyAoX19nbnVfdW53aW5kX2V4ZWN1dGUpOiBJbnNlcnQgIiArIDEiIGluCgluZWNlc3NhcnkgcGxhY2VzIHRvIHBhc3MgdGhlIGNvcnJlY3QgIm51bWJlciBvZiByZWdpc3RlcnMiIHZhbHVlcwoJdG8gX1Vud2luZF9WUlNfUG9wLgoKMjAwNi0wOC0yMCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdHJlZS1zc2EtYWxpYXMuYyAoZXFfcHRyX2luZm8sIHB0cl9pbmZvX2hhc2gpOiBOZXcgZnVuY3Rpb24uCgkoY3JlYXRlX25hbWVfdGFncyk6IEluc3RlYWQgb2YgcXVhZHJhdGljIGNoZWNraW5nIHVzZSBoYXNodGFibGUuCgkqIGJpdG1hcC5oOiBJbmNsdWRlIGhhc2h0YWIuaC4KCShiaXRtYXBfaGFzaCk6IERlY2xhcmUuCgkqIGJpdG1hcC5jIChiaXRtYXBfaGFzaCk6IE5ldyBmdW5jdGlvbi4KCjIwMDYtMDgtMjAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI4MDcxCgkqIHRyZWUtb3B0aW1pemUuYyAodHJlZV9yZXN0X29mX2NvbXBpbGF0aW9uKTogRG8gbm90IHJlbW92ZSBlZGdlcwoJdHdpY2UuCgkqIHRyZWUtaW5saW5lLmMgKGNvcHlfYmIpOiBVc2UgY2dyYXBoX3NldF9jYWxsX3N0bXQuCgkqIGlwYS1pbmxpbmUuYyAoY2dyYXBoX2NoZWNrX2lubGluZV9saW1pdHMpOiBBZGQgb25lX29ubHkgYXJndW1lbnQuCgkoY2dyYXBoX2RlY2lkZV9pbmxpbmluZywgY2dyYXBoX2RlY2lkZV9pbmxpbmluZ19vZl9zbWFsbF9mdW5jdGlvbiwKCWNncmFwaF9kZWNpZGVfaW5saW5pbmdfaW5jcmVtZW50YWxseSk6IFVwZGF0ZSB1c2Ugb2YKCWNncmFwaF9jaGVja19pbmxpbmVfbGltaXRzLgoJKiBjZ3JhcGguYyAoZWRnZV9oYXNoLCBlZGdlX2VxKTogTmV3IGZ1bmN0aW9uLgoJKGNncmFwaF9lZGdlLCBjZ3JhcGhfc2V0X2NhbGxfc3RtdCwgY2dyYXBoX2NyZWF0ZV9lZGdlLAoJY2dyYXBoX2VkZ2VfcmVtb3ZlX2NhbGxlciwgY2dyYXBoX25vZGVfcmVtb3ZlX2NhbGxlZXMsCgljZ3JhcGhfcmVtb3ZlX25vZGUpOiBNYWludGFpbiBjYWxsIHNpdGUgaGFzaC4KCSogY2dyYXBoLmggKHN0cnVjdCBjZ3JhcGhfbm9kZSk6IEFkZCBjYWxsX3NpdGVfaGFzaC4KCShjZ3JhcGhfc2V0X2NhbGxfc3RtdCk6IE5ldyBmdW5jdGlvbi4KCjIwMDYtMDgtMjAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI4MDcxCgkqIHJlbG9hZDEuYyAocmVnX2hhc19vdXRwdXRfcmVsb2FkKTogVHVybiBpbnRvIHJlZ3NldC4KCShyZWxvYWRfYXNfbmVlZGVkLCBmb3JnZXRfb2xkX3JlbG9hZHNfMSwgZm9yZ2V0X21hcmtlZF9yZWxvYWRzLAoJY2hvb3NlX3JlbG9hZF9yZWdzLCBlbWl0X3JlbG9hZF9pbnNucyk6IFVwZGF0ZSB0byBuZXcKCXJlZ19oYXNfb3V0cHV0X3JlbG9hZC4KCjIwMDYtMDgtMjAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBtaWRkbGUtZW5kLzI4Nzc5CgkqIGlwYS1pbmxpbmUuYyAoY2dyYXBoX2RlY2lkZV9pbmxpbmluZywgY2dyYXBoX2Vhcmx5X2lubGluaW5nKTogQ29tcHV0ZQoJZnVuY3Rpb24gYm9keSBzaXplcy4KCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfYW5hbHl6ZV9mdW5jdGlvbik6IERvbid0IGRvIHNvLgoKMjAwNi0wOC0yMCAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiB0YXJnZXQvMjg2NDggYzoKCSogdHJlZS5jIChoYW5kbGVfZGxsX2F0dHJpYnV0ZSk6IFJldHVybiBlYXJseSBpZiBub3QgYQoJdmFyIG9yIGZ1bmN0aW9uIGRlY2wuCgoyMDA2LTA4LTE4ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMjc1NjUKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoTE9DQUxfQUxJR05NRU5UKTogRm9yIFNQRSwgb25seSBhZGp1c3QKCWFsaWdubWVudCBvZiBTUEUgdmVjdG9yIHR5cGVzLgoKMjAwNi0wOC0xOCAgQ2hyaXN0b3BoZSBKYWlsbGV0ICA8Y2hyaXN0b3BoZS5qYWlsbGV0QHdhbmFkb28uZnI+CgoJKiB0cmVlLmMgKGlzX2F0dHJpYnV0ZV93aXRoX2xlbmd0aF9wKTogUmVtb3ZlIGEgZHVwbGljYXRlZCBhc3NlcnQuCgoyMDA2LTA4LTE3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjLzI4NzQ0CgkqIGNncmFwaC5oIChzdHJ1Y3QgY2dyYXBoX25vZGUpOiBSZW1vdmUgZXh0ZXJuYWxseV92aXNpYmxlCgliaXRmaWVsZC4KCSogY2dyYXBodW5pdC5jIChwcm9jZXNzX2Z1bmN0aW9uX2FuZF92YXJpYWJsZV9hdHRyaWJ1dGVzKTogU2V0Cglsb2NhbC5leHRlcm5hbGx5X3Zpc2libGUgcmF0aGVyIHRoYW4gZXh0ZXJuYWxseV92aXNpYmxlLgoKCVBSIGMvMjg3NDQKCSogYy1jb21tb24uYyAoaGFuZGxlX2V4dGVybmFsbHlfdmlzaWJsZV9hdHRyaWJ1dGUpOiBGaXJzdCBsb29rCglhdCBUUkVFX0NPREUgYW5kIG9ubHkgaWYgaXQgaXMgZnVuY3Rpb24gb3IgdmFyIGRlY2wsIGNoZWNrIGZvcgoJbm9uLXB1YmxpYyBvYmplY3RzLiAgRG9uJ3Qgd2FybiBmb3IgREVDTF9FWFRFUk5BTC4KCSogY2dyYXBodW5pdC5jIChwcm9jZXNzX2Z1bmN0aW9uX2FuZF92YXJpYWJsZV9hdHRyaWJ1dGVzKTogV2FybgoJaWYgZXh0ZXJuYWxseV92aXNpYmxlIGF0dHJpYnV0ZSBpcyB1c2VkIG9uIG5vbi1wdWJsaWMgb2JqZWN0LgoKMjAwNi0wOC0xNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI3ODY1CgkqIHJlbG9hZDEuYyAoZm9yZ2V0X21hcmtlZF9yZWxvYWRzKTogTmV3IGZ1bmN0aW9uLgoJKGZvcmdldF9vbGRfcmVsb2Fkc18xKTogV2hlbiBkYXRhIGFyZSBwYXNzZWQsIGp1c3QgbWFyayB0aGUgcmVnaXN0ZXJzCglmb3IgbGF0ZXIgcmVtb3ZhbC4KCShyZWxvYWRfYXNfbmVlZGVkKTogVXNlIHRoZSBuZXcgbWVjaGFuaXptLgoKMjAwNi0wOC0xNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzI4MTQ2CgkqIHJlbG9hZC5oIChyZWdfZXF1aXZfYWx0X21lbV9saXN0KTogTmV3IGRlY2xhcmF0aW9uLgoJKiByZWxvYWQxLmMgKHJlZ19lcXVpdl9hbHRfbWVtX2xpc3QpOiBOZXcgZGVmaW5pdGlvbi4KCShyZWxvYWQpOiBJbml0aWFsaXplIGl0IGFuZCByZWxlYXNlIGl0LgoJKGRlbGV0ZV9vdXRwdXRfcmVsb2FkKTogVXNlIGl0LgoJKiByZWxvYWQuYyAocHVzaF9yZWdfZXF1aXZfYWx0X21lbSk6IE5ldyBmdW5jdGlvbi4KCShmaW5kX3JlbG9hZHNfdG9wbGV2KTogQ2FsbCBpdC4KCShmaW5kX3JlbG9hZHNfYWRkcmVzcywgZmluZF9yZWxvYWRzX2FkZHJlc3NfMSk6IExpa2V3aXNlLgoJKGZpbmRfcmVsb2Fkc19zdWJyZWdfYWRkcmVzcyk6IExpa2V3aXNlLgoKMjAwNi0wOC0xNyAgTWF4aW0gS3V2eXJrb3YgIDxta3V2eXJrb3ZAaXNwcmFzLnJ1PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjg0ODkKCSogc2NoZWQtZWJiLmMgKGJlZ2luX3NjaGVkdWxlX3JlYWR5KTogQ3JlYXRlIGJhc2ljIGJsb2NrCglhdCB0aGUgcmlnaHQgcGxhY2UuCgkoYWR2YW5jZV90YXJnZXRfYmIpOiBTa2lwIGVtcHR5IGJsb2Nrcy4KCSogaGFpZmEtc2NoZWQuYyAoYmJfbm90ZSk6IE1ha2UgZ2xvYmFsLgoJKiBzY2hlZC1pbnQuaCAoYmJfbm90ZSk6IEFkZCBwcm90b3R5cGUuCgoyMDA2LTA4LTE2ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjc4NjUKCSogdHJlZS12cnAuYyAoYWRqdXN0X3JhbmdlX3dpdGhfc2Nldik6IERvIG5vdCB1c2UgVFlQRV97TUlOLE1BWH1fVkFMVUUKCWZvciBwb2ludGVyIHR5cGVzLgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoZm9sZF91c2VkX3BvaW50ZXJfY2FzdCwgcG9pbnRlcl9vZmZzZXRfcCwKCWZvbGRfdXNlZF9wb2ludGVyLCBwb2ludGVyX3VzZWRfcCk6IE5ldyBmdW5jdGlvbnMuCgkoYW5hbHl6ZV9zY2FsYXJfZXZvbHV0aW9uXzEpOiBVc2UgZm9sZF91c2VkX3BvaW50ZXIuCgkqIHRyZWUtY2hyZWMuYyAoY29udmVydF9hZmZpbmVfc2Nldik6IENvbnZlcnQgbm8tb3AgY2FzdHMgY29ycmVjdGx5LgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChnZW5lcmljX3R5cGVfZm9yKTogUmV0dXJuIGludGVncmFsIHR5cGUKCWZvciBwb2ludGVycy4KCjIwMDYtMDgtMTcgIFBhb2xvIEJvbnppbmkgPGJvbnppbmlAZ251Lm9yZz4KCglQUiBjKysvMjg1NzMKCSogYy1jb21tb24uYyAoZm9sZF9vZmZzZXRvZl8xKTogQWRkIGFuIGFyZ3VtZW50IGFuZCByZWN1cnNlIGRvd24gdG8gaXQKCW9yIHRoZSBJTlRFR0VSX0NTVC4gIEZhaWwgb24gYSBDQUxMX0VYUFIuCgkoZm9sZF9vZmZzZXRvZik6IFBhc3MgbmV3IGFyZ3VtZW50IHRvIGZvbGRfb2Zmc2V0b2ZfMS4KCSogYy1wYXJzZXIuYyAoY19wYXJzZXJfcG9zdGZpeF9leHByZXNzaW9uKTogRG9uJ3QgaW5jbHVkZSBhIE5VTEwKCW9wZXJhbmQgaW50byBhbiBJTkRJUkVDVF9SRUYuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogQWRqdXN0IGNhbGwgdG8gZm9sZF9vZmZzZXRvZi4KCjIwMDYtMDgtMTYgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCglQUiBnY292L3Byb2ZpbGUvMjY1NzAKCSogdmFsdWUtcHJvZi5jIChzdGF0aWNfdmFsdWVzKTogUmVtb3ZlZC4KCSh0cmVlX2ZpbmRfdmFsdWVzX3RvX3Byb2ZpbGUpOiBEbyBub3Qgc2V0IHN0YXRpY192YWx1ZXMuCgkoZmluZF92YWx1ZXNfdG9fcHJvZmlsZSk6IERvIG5vdCBmcmVlIHN0YXRpY192YWx1ZXMuCgkqIHByb2ZpbGUuYyAoaW5zdHJ1bWVudF92YWx1ZXMpOiBEbyBub3QgZnJlZSB0aGUgdmFsdWVzLgoJKGJyYW5jaF9wcm9iKTogRnJlZSB0aGUgdmFsdWVzLgoKMjAwNi0wOC0xNiAgTmF2ZWVuLkguUyAgPG5hdmVlbmhAa3BpdGN1bW1pbnMuY29tPgoKCSogY29uZmlnL20zMmMvbTMyY19saWIxLlMgKF9fbXVsc2kzKTogVXNlIG9ubHkgcmVnaXN0ZXJzIGZvciBkZXN0LgoKMjAwNi0wOC0xNiAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYy8yNzY5NwoJKiBjLXR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogQ29tYmluZSBxdWFsaWZpZXJzIG9mCglzdHJ1Y3R1cmUgb3IgdW5pb24gYW5kIGZpZWxkLgoKMjAwNi0wOC0xNiAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjgwNzEKCSogYmFzaWMtYmxvY2suaCAoYmJfZG9tX2Rmc19pbiwgYmJfZG9tX2Rmc19vdXQpOiBEZWNsYXJlLgoJKiBkb21pbmFuY2UuYyAoYmJfZG9tX2Rmc19pbiwgYmJfZG9tX2Rmc19vdXQpOiBOZXcgZnVuY3Rpb25zLgoJKiB0cmVlLWludG8tc3NhLmMgKHN0cnVjdCBkb21fZGZzbnVtKTogTmV3LgoJKGNtcF9kZnNudW0sIGZpbmRfZGZzbnVtX2ludGVydmFsLCBwcnVuZV91bnVzZWRfcGhpX25vZGVzKTogTmV3CglmdW5jdGlvbnMuCgkoaW5zZXJ0X3BoaV9ub2Rlc19mb3IpOiBVc2UgcHJ1bmVfdW51c2VkX3BoaV9ub2RlcyBpbnN0ZWFkIG9mCgljb21wdXRlX2dsb2JhbF9saXZlaW4uCgkocHJlcGFyZV9ibG9ja19mb3JfdXBkYXRlLCBwcmVwYXJlX3VzZV9zaXRlc19mb3IpOiBNYXJrIHRoZSB1c2VzCglpbiBwaGkgbm9kZXMgaW4gdGhlIGNvcnJlY3QgYmxvY2tzLgoKMjAwNi0wOC0xNiAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI4MzY0CgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGFmZl9jb21iaW5hdGlvbl90b190cmVlKTogSGFuZGxlIHplcm8KCWNvcnJlY3RseS4KCShmb2xkX2FmZmluZV9leHByKTogTmV3IGZ1bmN0aW9uLgoJKG1heV9lbGltaW5hdGVfaXYpOiBVc2UgZm9sZF9hZmZpbmVfZXhwci4KCjIwMDYtMDgtMTYgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYy8yNzQ4OQoJKiBjLXR5cGVjay5jIChjX3N0YXJ0X2Nhc2UpOiBIYW5kbGUgaW52YWxpZCBvcmlnX3R5cGUgY29ycmVjdGx5LgoJQ2xlYW4gdXAuCgoyMDA2LTA4LTE2ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyk6IEZpeHVwIHVzZSBvZiBweHJlZi4KCSogZG9jL2NwcG9wdHMudGV4aSAoLU1EKTogTGlrZXdpc2UuCgoyMDA2LTA4LTE1ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGMvMjgyODcKCSogYy1jb21tb24uYyAoaGFuZGxlX3dlYWtfYXR0cmlidXRlKTogSWdub3JlIGFuZCB3YXJuIGlmCglub3QgYSBGVU5DVElPTl8gb3IgVkFSX0RFQ0wuCgoyMDA2LTA3LTE1ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCglQUiBjLzI4MjgwCgkqIGMtcGFyc2VyLmMgKGNfcGFyc2VyX3R5cGVvZl9zcGVjaWZpZXIpOiBEb24ndCB1c2UKCWNfZmluaXNoX2V4cHJfc3RtdCwgb3BlbiBjb2RlIGRlc2lyZWQgc2VtYW50aWNzIGluc3RlYWQuCgoyMDA2LTA4LTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnLmdjYyAoeDg2LW1pbmd3MzIpOiBBZGQgYSBndGhyLXdpbjMyLmggaW5jbHVkaW5nIG1ha2VmaWxlCglmcmFnbWVudCB0byB0bWFrZV9maWxlIG9ubHkgaWYgdGhyZWFkcyBhcmUgZW5hYmxlZC4KCSogY29uZmlnL2kzODYvdC1taW5ndzMyIChMSUIyRlVOQ1NfRVhUUkEpOiBNb3ZlIHRvLi4uCgkqIGNvbmZpZy9pMzg2L3QtZ3Roci13aW4zMjogTmV3IGZpbGUuIC4uLiBoZXJlLgoKMjAwNi0wOC0xNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjLzI4NjQ5CgkqIGMtcGFyc2VyLmMgKGNfcGFyc2VyX2NvbXBvdW5kX3N0YXRlbWVudF9ub3N0YXJ0KTogUmVzZXQKCXBhcnNlci0+ZXJyb3IgYWZ0ZXIgZWFjaCBzdGF0ZW1lbnQuCgoyMDA2LTA4LTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzI4NzEzCgkqIG9tcC1sb3cuYyAobG93ZXJfb21wX3BhcmFsbGVsKTogQ29udmVydCB0IHRvCglyZWNlaXZlcl9kZWNsJ3MgdHlwZS4KCShleHBhbmRfb21wX3BhcmFsbGVsKTogU1RSSVBfTk9QUyBmcm9tIHRoZSBNT0RJRllfRVhQUgoJc291cmNlIGJlZm9yZSBjb21wYXJpc29uLgoKCVBSIG1pZGRsZS1lbmQvMjg3MjQKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfb21wX2F0b21pY19waXBlbGluZSk6IENvbnZlcnQgb2xkaXZhbAoJdG8gaXR5cGUgaW4gYXNzaWdubWVudCB0byBvbGRpdmFsMi4KCjIwMDYtMDctMTQgIEFuZHJldyBQaW5za2kgIDxwaW5rc2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGMvMjc0OTAKCVBSIGMvMjc0ODkKCSogYy10eXBlY2suYyAoYnVpbGRfY29tcG91bmRfZXhwcik6IElmIHRoZSBzZWNvbmQgZXhwcmVzc2lvbgoJaXMgYW4gZXJyb3IgbWFyaywgdGhlbiBqdXN0IHJldHVybiBhbiBlcnJvciBtYXJrIGluc3RlYWQgb2YKCWNyZWF0aW5nIGEgQ09NUE9VTkRfRVhQUi4KCjIwMDYtMDctMTQgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogTWFrZWZpbGUuaW4gKExJQkdDQ19ERVBTKTogRG9uJ3QgZGVwZW5kIG9uIExBTkdVQUdFUy4KCjIwMDYtMDgtMTQgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogYy1kZWNsLmMsIHZhci10cmFja2luZy5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDYtMDgtMTQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjg2MzQKCSogcmVvcmcuYyAoZmlsbF9zbG90c19mcm9tX3RocmVhZCk6IERvIG5vdCBhc3N1bWUgQSArIFggLSBYID09IEEKCWZvciBmbG9hdGluZy1wb2ludCBtb2RlcyB1bmxlc3MgZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zLgoKMjAwNi0wOC0xMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkgICAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgYy8yNzE4NAoJKiB0cmVlLmMgKGJ1aWxkX2FycmF5X3R5cGUpOiBVbmlmeSBhcnJheSB0eXBlcyB3aXRoCgl1bnNwZWNpZmllZCBpbmRleF90eXBlLgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBNYWtlIHN1cmUgd2UgZG8gbm90IG1vZGlmeSBhCgl1bmlmaWVkIGluY29tcGxldGUgYXJyYXkgdHlwZS4KCSogYy10eXBlY2suYyAoc3RvcmVfaW5pdF92YWx1ZSk6IENyZWF0ZSBkaXN0aW5jdCB0eXBlIGJlZm9yZQoJZmlsbGluZyBpbiB0aGUgaW5kZXggdHlwZSBpbiBhbiBpbml0aWFsaXplciBmcm9tIGEgY29tcG91bmQKCWxpdGVyYWwuCgoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZW1vdmUgY29kZSB3aGVyZSB3ZSBjb3B5IHRoZQoJYXJyYXkgdHlwZSBvdmVyLgoKMjAwNi0wOC0xMyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiB0cmVlLXBhc3MuaCAoVE9ET191cGRhdGVfc3NhKTogRml4IHdoaWNoIGJpdCBpcyB1c2VkIHRvIHRha2UKCWludG8gYWNjb3VudCBmb3IgVE9ET19kdW1wX2NncmFwaC4KCShUT0RPX3VwZGF0ZV9zc2Ffbm9fcGhpKTogTGlrZXdpc2UuCgkoVE9ET191cGRhdGVfc3NhX2Z1bGxfcGhpKTogTGlrZXdpc2UuCgkoVE9ET191cGRhdGVfc3NhX29ubHlfdmlydHVhbHMpOiBMaWtld2lzZS4KCShUT0RPX3JlbW92ZV91bnVzZWRfbG9jYWxzKTogTGlrZXdpc2UuCgkoVE9ET19zZXRfcHJvcHMpOiBMaWtld2lzZS4KCShUT0RPX3VwZGF0ZV9zdG10X3VzYWdlKTogTGlrZXdpc2UuCgoyMDA2LTA4LTEzICBEaXJrIE11ZWxsZXIgIDxkbXVlbGxlckBzdXNlLmRlPgoKCSogYy1jb21tb24uYyAoc3RyaWN0X2FsaWFzaW5nX3dhcm5pbmcpOiBGaXggZm9ybWF0dGluZy4KCjIwMDYtMDgtMTMgIE1hdHRoaWFzIEtsb3NlICA8ZG9rb0BkZWJpYW4ub3JnPgoKCSogZG9jL2ludm9rZS50ZXhpOiBGaXggc3BlbGxpbmcgZXJyb3JzLgoKMjAwNi0wOC0xMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBydGwtb3B0aW1pemF0aW9uLzIzNDU0CgkqIHJlb3JnLmMgKHJlbGF4X2RlbGF5X3Nsb3RzKTogVXBkYXRlIGNvbW1lbnQuCgoyMDA2LTA4LTExICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8yODY1MQoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfY29uc3RfcmVsYXRpb25hbF9vcGVyYXRpb24pOgoJU2ltcGxpZnkgQSBDTVAgQiB0byBBIC0gQiBDTVAgMCBvbmx5IGZvciBFUSBhbmQgTkUgY29tcGFyaXNvbgoJY29kZXMuCgoyMDA2LTA4LTEwICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdHJlZS5jIChidWlsZDFfc3RhdCk6IEFsc28gcHJvcGFnYXRlIHRoZSBUUkVFX0NPTlNUQU5UIGFuZAoJVFJFRV9JTlZBUklBTlQgZmxhZ3MgZm9yIGEgVklFV19DT05WRVJUX0VYUFIuCgoyMDA2LTA4LTEwICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogQ2xlYXIgY3VycmVudF9pbnNuX3ByZWRpY2F0ZSBiZWZvcmUKCW91dHB1dHRpbmcgaW5saW5lIGFzbS4KCjIwMDYtMDgtMTAgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjYxOTcKCSogdHJlZS1zc2EtYWxpYXMuYyAobmV3X3R5cGVfYWxpYXMpOiBUYWtlcyBhZGRpdGlvbmFsIGFyZ3VtZW50LiBDYWxscwoJZ2V0X3JlZl9iYXNlX2FuZF9leHRlbnQgYW5kIG92ZXJsYXBfc3VidmFyIHRvIGFkZCBvbmx5IHJlbGV2YW50CglzdWJ2YXJzIGFzIG1heS1hbGlhc2VzLgoJKGFkZF9tYXlfYWxpYXNfZm9yX25ld190YWcpOiBOZXcgZnVuY3Rpb24sIGZhY3RvcmVkIG91dCBvZgoJbmV3X3R5cGVfYWxpYXMuCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdF9jcmVhdGVfZGF0YV9yZWZfcHRyKTogQ2FsbCBuZXdfdHlwZV9hbGlhcwoJd2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50LgoJKiB0cmVlLWZsb3cuaCAobmV3X3R5cGVfYWxpYXMpOiBUYWtlcyBhZGRpdGlvbmFsIGFyZ3VtZW50LgoKMjAwNi0wOC0wOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdjb3YuYyAobm9fZGF0YV9maWxlKTogTmV3IGZsYWcuCgkocmVhZF9jb3VudF9maWxlKTogU2V0IGl0IGlmIGRhdGEgZmlsZSBub3QgcHJlc2VudC4gIEFzc3VtZSBjb3VudHMKCXplcm8gaWYgbm90IGZvdW5kLgoJKG91dHB1dF9saW5lcyk6IERvbid0IG5hbWUgdGhlIGRhdGEgZmlsZSwgaWYgdGhlcmUgd2Fzbid0IG9uZS4KCjIwMDYtMDgtMDkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChwcmludF9vcGVyYW5kKSA8RD46IEZpeCBjb21tZW50IGFuZCBhZGp1c3QuCgkocnM2MDAwX2dlbmVyYXRlX2NvbXBhcmUpOiBUd2VhayBjb21tZW50cy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKFVOU1BFQ19NVl9DUl9HVCk6IEZpeCBjb21tZW50LgoKMjAwNi0wOC0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiB2YXItdHJhY2tpbmcuYyAoZW51bSBtaWNyb19vcGVyYXRpb25fdHlwZSk6IEFkZCBNT19DT1BZLgoJKHZhcl9kZWJ1Z19kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKHZhcl9yZWdfc2V0KTogRm9sbG93IGRlYnVnIGRlY2wgbGluay4gIEFkZCBsb2NhdGlvbiBldmVuIGlmCglyZWcgaXMgYWxyZWFkeSBrbm93biB0byBob2xkIHNvbWUgb3RoZXIgdmFyaWFibGUuCgkodmFyX21lbV9zZXQpOiBGb2xsb3cgZGVidWcgZGVjbCBsaW5rLgoJKHZhcl9yZWdfZGVsZXRlX2FuZF9zZXQsIHZhcl9tZW1fZGVsZXRlX2FuZF9zZXQpOiBGb2xsb3cgZGVidWcKCWRlY2wgbGluay4gIERlbGV0ZSBvdGhlciBrbm93biBsb2NhdGlvbnMgb2YgdGhlIHZhcmlhYmxlIHBhcnQKCWlmIHJlcXVlc3RlZC4KCSh2YXJfcmVnX2RlbGV0ZSwgdmFyX21lbV9kZWxldGUpOiBEZWxldGUgb3RoZXIga25vd24gbG9jYXRpb25zCglvZiB0aGUgdmFyaWFibGUgcGFydCBpZiByZXF1ZXN0ZWQuCgkoc2FtZV92YXJpYWJsZV9wYXJ0X3ApOiBOZXcgZnVuY3Rpb24uCgkoYWRkX3N0b3Jlcyk6IFNlbGVjdCBNT19DT1BZIHdoZW4gYXBwcm9wcmlhdGUuCgkodnRfaW5pdGlhbGl6ZSk6IEhhbmRsZSBpdC4KCShjb21wdXRlX2JiX2RhdGFmbG93LCBlbWl0X25vdGVzX2luX2JiKTogTGlrZXdpc2UuICBEZWxldGUKCWtub3duIGxvY2F0aW9ucyBmb3IgTU9fU0VUIGFuZCBNT19DTE9CQkVSLgoJKGZpbmRfdmFyaWFibGVfbG9jYXRpb25fcGFydCk6IE5ldyBmdW5jdGlvbi4KCShzZXRfdmFyaWFibGVfcGFydCwgZGVsZXRlX3ZhcmlhYmxlX3BhcnQpOiBVc2UgaXQuCgkoY2xvYmJlcl92YXJpYWJsZV9wYXJ0KTogTmV3IGZ1bmN0aW9uLgoJKiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbik6IERvIG5vdCBmb2xsb3cgZGVidWcKCWRlY2wgbGluay4KCjIwMDYtMDgtMDcgIFZpY3RvciBLYXBsYW5za3kgPHZpY3RvcmtAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNjk2OQoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2FuYWx5emVfbG9vcF9mb3JtKTogQWRkIGNoZWNrIG9mIGxhdGNoCgl3aXRoIGFuIGVtcHR5IGxpc3Qgb2YgUEhJcy4KCjIwMDYtMDgtMDYgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgdGFyZ2V0LzI3ODI3CgoJKiBjb25mZmlnL2kzODYvaTM4Ni5tZDogQWRkIHBlZXBob2xlMiB0byBhdm9pZCAiZmxkICVzdCIKCWluc3RydWN0aW9ucy4KCjIwMDYtMDgtMDYgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogRml4IGZvcm1hdAoJc3RyaW5nLiAgV2hpdGVzcGFjZSBhbmQgY29tbWVudCBmaXh1cC4KCjIwMDYtMDgtMDUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYy8yODUwMgoJKiBjLWRlY2wuYyAodmFsaWRhdGVfcHJvdG9fYWZ0ZXJfb2xkX2RlZm4pOiBSZXR1cm4gZmFsc2Ugb24gaW52YWxpZAoJYXJndW1lbnQuCgoJUFIgYy8yNzcyMQoJKiBjLXR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IFRlc3QgZWFybGllciBmb3Igbm9uLWx2YWx1ZXMuCgoJUFIgYy8yODEzNgoJKiBjLXBhcnNlci5jIChjX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb25fYWZ0ZXJfcGFyZW5fdHlwZSk6IFJvYnVzdGlmeS4KCjIwMDYtMDgtMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiB0YXJnZXQvMjY2NTUKCVBSIHRhcmdldC8yODI3MAoJKiByZWxvYWQuYyAocHVzaF9yZWxvYWQpOiBQYXRjaCBvdXQgdGhlIG1pc21hdGNoaW5nIGluc3RydWN0aW9uOwoJcmV0dXJuIGVhcmx5LgoJKGZpbmRfcmVsb2FkKTogQmFpbCBvdXQgaWYgdGhlIGluc3RydWN0aW9uIHdhcyBwYXRjaGVkIG91dC4KCjIwMDYtMDgtMDQgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNDg4OAoJKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBEbyBub3QgcmUtcmVjb3JkIHZhcmlhYmxlcy4KCShkZWNsYXJlX2lubGluZV92YXJzKTogQWRkIHZhcmlhYmxlIHRvIHVuZXhwYW5kZWRfdmFyX2xpc3QuCgoyMDA2LTA4LTA0ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoJICAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjYyNDQKCSogY3NlLmMgKGZvbGRfcnR4KTogQ29ycmVjdGx5IGFzc29jaWF0ZSBzaGlmdHMgd2hlbiBjb25zdF9hcmcxIGFuZC9vcgoJaW5uZXJfY29uc3QgYXJlIG5lZ2F0aXZlIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgYml0c2l6ZSBvZgoJTU9ERS4gIElmIFNISUZUX0NPVU5UX1RSVU5DQVRFRCBpcyBmYWxzZSwgdGhlIHZhbHVlcyBhcmVuJ3QgYXNzb2NpYXRlZC4KCU90aGVyd2lzZSwgdGhlIHZhbHVlcyBhcmUgbWFza2VkIHVzaW5nIEdFVF9NT0RFX0JJVFNJWkUgKG1vZGUpIC0gMS4KCVNpbXBsaWZ5IGNvbXBsaWNhdGVkIGlmIHN0YXRlbWVudC4gIEZvciBBU0hJRlQgYW5kIExTSElGVFJULCByZXR1cm4KCUNPTlNUMF9SVFggKG1vZGUpIHdoZW4gdGhlIG5ldyBzaGlmdCBjb3VudCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8KCXRvIHRoZSBiaXRzaXplIG9mIHRoZSBvYmplY3QgYmVpbmcgc2hpZnRlZCBhbmQgWEVYUCAoeSwgMCkgaGFzIG5vIHNpZGUKCWVmZmVjdHMuCgoyMDA2LTA4LTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUtY2ZnLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDYtMDgtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4MTQ4CgkqIHZhcmFzbS5jIChvdXRwdXRfY29uc3RhbnQpOiBHaXZlIHRoZSBmcm9udCBlbmQgYW5vdGhlciBjaGFuY2UgdG8KCWV4cGFuZCBjb25zdGFudHMsIGFmdGVyIHN0cmlwcGluZyBOT1BzLgoKMjAwNi0wOC0wMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogZG9td2Fsay5jICh3YWxrX2RvbWluYXRvcl90cmVlKTogUmVvcmdhbml6ZSB0byBub24tcmVjdXJzaXZlCglpbXBsZW1lbnRhdGlvbi4KCjIwMDYtMDgtMDMgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjc3NzAKCSogdHJlZS12ZWN0b3JpemVyLmggKGdldF92ZWN0eXBlX2Zvcl9zY2FsYXJfdHlwZSk6IEZ1bmN0aW9uCglkZWNsYXJhdGlvbiByZW1vdmVkIChtb3ZlZCB0byB0cmVlLWZsb3cuaCkuCgkodmVjdF9jYW5fZm9yY2VfZHJfYWxpZ25tZW50X3ApOiBMaWtld2lzZS4KCSogdHJlZS1mbG93LmggKGdldF92ZWN0eXBlX2Zvcl9zY2FsYXJfdHlwZSk6IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbgoJKG1vdmVkIGZyb20gdHJlZS12ZWN0b3JpemVyLmgpLgoJKHZlY3RfY2FuX2ZvcmNlX2RyX2FsaWdubWVudF9wKTogTGlrZXdpc2UuCgkqIHRyZWUtdmVjdG9yaXplci5jICh2ZWN0X3ByaW50X2R1bXBfaW5mbyk6IEFsbG93IGNhbGxpbmcgdGhpcyBmdW5jdGlvbgoJZnJvbSBvdXRzaWRlIHRoZSB2ZWN0b3JpemVyIC0gaW4gcGFydGljdWxhciBmcm9tIGNncmFwaCBzdGFnZS4KCSogdHJlZS12ZWN0LWFuYWx5emUuYyAodmVjdF9jb21wdXRlX2RhdGFfcmVmX2FsaWdubWVudCk6IERvbid0IGluY3JlYXNlCgl0aGUgYWxpZ25tZW50IG9mIGdsb2JhbCBhcnJheXMgd2hlbiAtZnNlY3Rpb24tYW5jaG9ycyBpcyBlbmFibGVkLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9pbmNyZWFzZV9hbGlnbm1lbnQpOiBOZXcgZnVuY3Rpb24uCgkoY2dyYXBoX29wdGltaXplKTogQ2FsbCBjZ3JhcGhfaW5jcmVhc2VfYWxpZ25tZW50LgoKMjAwNi0wOC0wMyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCVBSIHRhcmdldC8yNzU2NgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfbGVnaXRpbWl6ZV9yZWxvYWRfYWRkcmVzcyk6IERvCglub3QgcmVsb2FkIGEgU1BFIHN5bWJvbF9yZWYgaW50byBhIGxvX3N1bSBhZGRyZXNzLgoKMjAwNi0wOC0wMiAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBkZWJ1Zy8yODA2MwoJKiBkd2FyZjJvdXQuYyAocHJ1bmVfdW51c2VkX3R5cGVzX3BydW5lKTogTW92ZSBjYWxsIHRvCglwcnVuZV91bnVzZWRfdHlwZXNfdXBkYXRlX3N0cmluZ3MgdG8gY292ZXIgdGhlIHBhcmVudCBESUUgYWxzby4KCjIwMDYtMDgtMDIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBnY292L3Byb2ZpbGUvMjg0ODAKCSogdHJlZS1jZmcuYyAoY2hhbmdlX2JiX2Zvcl9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKHRyZWVfbWVyZ2VfYmxvY2tzLCB0cmVlX3NwbGl0X2Jsb2Nrcyk6IFVzZSBpdC4KCjIwMDYtMDgtMDEgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI4MjUwCglQUiBjKysvMjgyNTcKCVBSIGMrKy8yODI1OQoJUFIgYysrLzI4MjY3CgkqIHRvcGxldi5jIChjb21waWxlX2ZpbGUpOiBSZXR1cm4gZWFybHkgb24gZXJyb3Jjb3VudCBvciBzb3JyeWNvdW50LgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9maW5hbGl6ZV9jb21waWxhdGlvbl91bml0KTogTGlrZXdpc2UuCgkoY2dyYXBoX29wdGltaXplKTogTGlrZXdpc2UuCgoyMDA2LTA4LTAxICBTdHVhcnQgSGFzdGluZ3MgIDxzdHVhcnRAYXBwbGUuY29tPgoKCSogcnRsLmggKFVJTlRWQUwpIE5ldy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoU01BTExfSU5UKSBVc2UgaXQuCgkqIHRlc3RzdWl0ZS9nY2MuZGcvMjAwNjA4MDEtMS5jOiBOZXcuCgoyMDA2LTA4LTAxICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGRlYnVnLzIzMzM2CgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2V4dGVybmFsX3R5cGUpOiBNYXJrIHVzZWQgZW51bSB0eXBlcy4KCSogZHdhcmYyb3V0LmMgKGR3YXJmMm91dF9hYnN0cmFjdF9mdW5jdGlvbik6IFNhdmUgYW5kIHJlc3RvcmUKCWNmdW4gYWxzby4KCShnZW5fc3VicHJvZ3JhbV9kaWUpOiBXaGl0ZXNwYWNlIGZpeC4KCjIwMDYtMDgtMDEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKGNoZWNrX3JlcGxhY2VhYmxlKTogRG8gbm90IGFsbG9jYXRlIGRlZl92YXJzCgliaXRtYXAgd2hlbiBub3QgbmVlZGVkLgoJKiB0cmVlLXNzYS1wcmUuYyAoYml0bWFwX3NldF9hbmQsIGJpdG1hcF9zZXRfYW5kX2NvbXBsKTogRnJlZSB0ZW1wb3JhcnkKCWJpdG1hcHMuCgoyMDA2LTA4LTAxICBEaXJrIE11ZWxsZXIgIDxkbXVlbGxlckBzdXNlLmRlPgoKCSogdHJlZS12cnAuYyAoZml4X2VxdWl2YWxlbmNlX3NldCk6IEF2b2lkIGJpdG1hcCBtZW1vcnkgbGVhay4KCjIwMDYtMDctMzEgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBNYWtlZmlsZS5pbjogUmV2ZXJ0IHBhcnQgb2YgcHJldmlvdXMgcGF0Y2g6CglSZXBsYWNlICQoVkFSUkFZX0gpIGJ5IHZhcnJheS5oIGluIGRlZmluaXRpb24gb2YgQkFTSUNfQkxPQ0tfSAoJYW5kIFJFR1NfSC4KCjIwMDYtMDctMzAgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJUFIgdGFyZ2V0LzI3NTQzCgkqIGRvYy9leHRlbmQudGV4aSAoaTM4NiBWYXJpYWJsZSBBdHRyaWJ1dGVzKTogQWRkIGFuY2hvci4KCShQb3dlclBDIFZhcmlhYmxlIEF0dHJpYnV0ZXMpOiBOZXcgc2VjdGlvbi4KCjIwMDYtMDctMzAgIEF0c3VzaGkgTmVtb3RvICA8YW5lbW9AbWJhLm9jbi5uZS5qcD4KCglQUiB0YXJnZXQvMjgxMjYgKHBhcnRpYWwgZml4KQoJKiBjb25maWcvbWlwcy9taXBzLm1kICh0bHNfZ2V0X3RwXzxtb2RlPik6IFNldCBjYW5fZGVsYXkgdG8gbm8uCgoyMDA2LTA3LTI4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yODA3MQoJKiBjZmdydGwuYyAocnRsX2RlbGV0ZV9ibG9jayk6IEZyZWUgcmVnc2V0cy4KCSogZmxvdy5jIChhbGxvY2F0ZV9iYl9saWZlX2RhdGEpOiBSZS11c2UgcmVnc2V0cyBpZiBhdmFpbGFibGUuCgoyMDA2LTA3LTI4ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogTWFrZWZpbGUuaW46IFVzZSAkKEhFQURFUl9IKSBpbnN0ZWFkIG9mIGhlYWRlci5oIGluIGRlcGVuZGVuY2llcwoJYW5kIHZhcmlhYmxlcyB1c2VkIGluIGRlcGVuZGVuY2llcy4KCjIwMDYtMDctMjcgIEFyamFuIHZhbiBkZSBWZW4gPGFyamFuQGxpbnV4LmludGVsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHN0YWNrX3Rsc19wcm90ZWN0X3NldF9kaSkgVXNlICVncyByYXRoZXIgdGhhbgoJJWZzIGZvciAtbWNtb2RlbD1rZXJuZWwuCgkoc3RhY2tfdGxzX3Byb3RlY3RfdGVzdF9kaSk6IExpa2V3aXNlLgoKMjAwNi0wNy0yNyAgQ2FybG9zIE8nRG9uZWxsICA8Y2FybG9zQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbjogVXNlIG1raW5zdGFsbGRpcnMuCgoyMDA2LTA3LTI3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgZHJpdmVyLzI4NDM3CgkqIG9wdHMtY29tbW9uLmMgKHBydW5lX29wdGlvbnMpOiBTa2lwIGpvaW5lZCBzd2l0Y2hlcy4KCjIwMDYtMDctMjcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI4MDcxCgkqIGNzZWxpYi5jIChjc2VsaWJfcHJvY2Vzc19pbnNuKTogRG9uJ3QgcmVtb3ZlIHVzZWxlc3MgdmFsdWVzIHRvbwoJb2Z0ZW4gZm9yIHZlcnkgbGFyZ2UgaGFzaHRhYmxlcy4KCjIwMDYtMDctMjcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI4MDcxCgkqIGdsb2JhbC5jIChncmVnX29ic3RhY2spOiBOZXcgb2JzdGFjay4KCShhbGxvY2F0ZV9iYl9pbmZvKTogVXNlIGl0LgoJKGZyZWVfYmJfaW5mbyk6IExpa2V3aXNlLgoJKG1vZGlmeV9yZWdfcGF2KTogTGlrZXdpc2UuCgoyMDA2LTA3LTI3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfZml4ZWRfbWF0aGZuKTogV2hlbiBsb25nIGFuZCBsb25nIGxvbmcgYXJlIHRoZQoJc2FtZSBzaXplLCBjYW5vbmljYWxpemUgbGxjZWlsKiwgbGxmbG9vciosIGxscm91bmQqIGFuZCBsbHJpbnQqCglmdW5jdGlvbnMgdG8gdGhlaXIgbGNlaWwqLCBsZmxvb3IqLCBscm91bmQqIGFuZCBscmludCogZm9ybXMuCgoyMDA2LTA3LTI3ICBLYXp1aGlybyBJbmFva2EgIDxpbmFva2Eua2F6dWhpcm9AcmVuZXNhcy5jb20+CgoJUFIgZ2NjLzI4NTA4CgkqIGNvbmZpZy9tMzJyL20zMnIubWQgKGJyYW5jaF9pbnNuKTogUmVkdWNlIHBjIHJhbmdlIGZvciBzaG9ydAoJYnJhbmNoLgoJKHJldl9icmFuY2hfaW5zbik6IExpa2V3aXNlLgoKMjAwNi0wNy0yNyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjgwNzEKCSogcmVnbW92ZS5jIChyZWdfaXNfcmVtb3RlX2NvbnN0YW50X3ApOiBBdm9pZCBxdWFkcmF0aWMgYmVoYXZpb3VyLgoJKHJlZ19zZXRfaW5fYmIsIG1heF9yZWdfY29tcHV0ZWQpOiBOZXcgc3RhdGljIHZhcmlhYmxlcy4KCShyZWdtb3ZlX29wdGltaXplKTogRnJlZSB0aGUgbmV3IGFycmF5LgoJKGZpeHVwX21hdGNoXzEpOiBVcGRhdGUgY2FsbCBvZiByZWdfaXNfcmVtb3RlX2NvbnN0YW50X3AuCgoyMDA2LTA3LTI2ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjc4ODIKCSogY2dyYXBoLmMgKGNncmFwaF9yZW1vdmVfbm9kZSk6IENsZWFyIG5lZWRlZCwgcmVhY2hhYmxlLCBuZXh0LCBwcmV2aW91cwoJYW5kIGRlY2wgZmllbGRzLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9yZXNldF9ub2RlKTogRXhwZWN0IGNncmFwaF9yZW1vdmVfbm9kZSB0byBraWxsCgluZXh0IHBvaW50ZXIKCShjZ3JhcGhfYW5hbHl6ZV9jb21waWxhdGlvbl91bml0KTogTGlrZXdpc2UuCgkqIGlwYS5jIChjZ3JhcGhfcmVtb3ZlX3VucmVhY2hhYmxlX25vZGVzKTogTGlrZXdpc2UuCgkqIGlwYS1pbmxpbmUuYyAoY2dyYXBoX2RlY2lkZV9yZWN1cnNpdmVfaW5saW5pbmcpOiBMaWtld2lzZS4KCShjZ3JhcGhfZWFybHlfaW5saW5pbmUpOiBNYWtlIG9yZGVyIGdhcmJhZ2UgY29sbGVjdGVkLgoJKiBNYWtlZmlsZS5pbiAoZ3QtaXBhLWlubGluZSk6IE5ldyBnYXJiYWdlY29sbGVjdGVkIGZpbGUuCgoyMDA2LTA3LTI2ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGJ4b3V0LmMgKG91dHB1dF90eXBlc19zb3J0KTogQWRkIGEgY29tbWVudC4KCShvdXRwdXRfdXNlZF90eXBlcyk6IEZyZWUgdGhlIFZFQy4KCjIwMDYtMDctMjYgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmdW5jdGlvbi5jIChyZW9yZGVyX2ZpeF9mcmFnbWVudHMpOiBEZWxldGUuCgkocmVvcmRlcl9ibG9ja3MpOiBEb24ndCBjYWxsIGl0LgoJKHJlb3JkZXJfYmxvY2tzXzEpOiBQdXQgYWxsIHN1YmJsb2NrcyB1bmRlciB0aGUgb3JpZ2luIGJsb2NrLgoKMjAwNi0wNy0yNiAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjc5MDcKCSogZXhwci5jIChmb3JjZV9vcGVyYW5kKTogVXNlIGNvbnZlcnRfbW92ZSB0byBoYW5kbGUgRkxPQVRfRVhURU5EIGFuZAoJRkxPQVRfVFJVTkNBVEUuCgoyMDA2LTA3LTI1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzI4NDczCgkqIGNvbnZlcnQuYyAoY29udmVydF90b19pbnRlZ2VyKTogV2hlbiB0cmFuc2Zvcm1pbmcgKFQpZm9vKHgpIGludG8KCWJhcih4KSBjaGVjayB0aGF0IGJhcidzIHJlc3VsdCB0eXBlIGNhbiByZXByZXNlbnQgYWxsIHRoZSB2YWx1ZXMgb2YgVC4KCjIwMDYtMDctMjUgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtY2hyZWMuYyAoY2hyZWNfY29udmVydF9hZ2dyZXNzaXZlKTogUmV0dXJuIE5VTEwgb24gZmFpbHVyZS4KCjIwMDYtMDctMjUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBnZ2MtcGFnZS5jIChOVU1fU0laRV9MT09LVVApOiBOZXcgY29uc3RhbnQgLSB0aGUgbGVuZ3RoIG9mIHRoZQoJc2l6ZV9sb29rdXBbXSBhcnJheS4KCShnZ2NfYWxsb2Nfc3RhdCk6IFVzZSBOVU1fU0laRV9MT09LVVAuCgkoZ2djX3BjaF9jb3VudF9vYmplY3QpOiBMaWtld2lzZS4KCShnZ2NfcGNoX2FsbG9jX29iamVjdCk6IExpa2V3aXNlLgoJKGdnY19wY2hfd3JpdGVfb2JqZWN0KTogTGlrZXdpc2UuCgkoaW5pdF9nZ2MpOiBEbyBub3QgYXR0ZW1wdCB0byBpbml0aWFsaXplIGVudHJpZXMgaW4gdGhlCglzaXplX2xvb2t1cFtdIGFycmF5IGZvciBvYmplY3RzIHdob3NlIHNpemUgaXMgZ3JlYXRlciB0aGFuIHRoYW4KCXRoZSBsZW5ndGggb2YgdGhlIGFycmF5LgoKMjAwNi0wNy0yNSAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRieG91dC5jIChvdXRwdXRfdXNlZF90eXBlc19oZWxwZXIpOiBQdXNoIHF1ZXVlZCB0eXBlcwoJb24gYSBWRUMuCgkob3V0cHV0X3R5cGVzX3NvcnQpOiBOZXcuCgkob3V0cHV0X3VzZWRfdHlwZXMpOiBDb2xsZWN0IHVzZWQgdHlwZXMgb24gYSBWRUMgYW5kIHNvcnQgdGhlbQoJYmVmb3JlIGVtaXNzaW9uLgoKMjAwNi0wNy0yNCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMjg0NjMKCSogY2dyYXBoLmMgKGNncmFwaF9yZW1vdmVfbm9kZSk6IERvIG5vdCBjaGVjayBpZiBkdW1wcwoJYXJlIGVuYWJsZWQuCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX29wdGltaXplKTogTGlrZXdpc2UuCgoyMDA2LTA3LTI0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yODA3MQoJKiB0cmVlLWNmZy5jICh0cmVlX3NwbGl0X2Jsb2NrKTogRG8gbm90IGFsbG9jYXRlIG5ldyBzdG10X2xpc3Qgbm9kZXMuCgkqIHRyZWUtaXRlcmF0b3IuYyAodHNpX3NwbGl0X3N0YXRlbWVudF9saXN0X2JlZm9yZSk6IERvIG5vdCBjcmFzaCB3aGVuCglzcGxpdHRpbmcgYmVmb3JlIGZpcnN0IHN0bXQuCgoyMDA2LTA3LTI0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yODA3MQoJKiBpcGEtaW5saW5lLmMgKHVwZGF0ZV9jYWxsZXJfa2V5cyk6IFJlbW92ZSBlZGdlcyB0aGF0CglhcmUgbm8gbG9uZ2VyIGlubGluZSBjYW5kaWRhdGVzLgoKMjAwNi0wNy0yMyAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBkZWJ1Zy8yNzQ3MwoJKiBkYnhvdXQuYyAob3V0cHV0X3VzZWRfdHlwZXNfaGVscGVyLCBvdXRwdXRfdXNlZF90eXBlcyk6IE5ldy4KCShkYnhvdXRfc3ltYm9sKTogQ2FsbCBvdXRwdXRfdXNlZF90eXBlcy4KCjIwMDYtMDctMjMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiBjLzI1Nzk1CglQUiBjKysvMjczNjkKCSogY2dyYXBoLmMgKGNncmFwaF92YXJwb29sX25vZGVzKTogRXhwb3J0LgoJKGRlY2lkZV9pc192YXJpYWJsZV9uZWVkZWQpOiBJZ25vcmVkICJ1c2VkIiBhdHRyaWJ1dGUgaW4KCXVuaXQtYXQtYS10aW1lIG1vZGUuCgkqIGNncmFwaC5oIChjZ3JhcGhfdmFycG9vbF9ub2Rlcyk6IERlY2xhcmUuCgkqIGNncmFwaHVuaXQuYyAoZGVjaWRlX2lzX2Z1bmN0aW9uX25lZWRlZCk6IElnbm9yZWQgInVzZWQiIGF0dHJpYnV0ZSBpbgoJdW5pdC1hdC1hLXRpbWUgbW9kZS4KCjIwMDYtMDctMjMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHRhcmdldC8yODI0NwoJKiBndGhyLXNvbGFyaXMuaDogUHJvdG90eXBlIF9fZ3RocncgZm9ybXMgb2YgdGhyX3NlbGYsIG11dGV4X2luaXQgYW5kCgltdXRleF9kZXN0cm95IGV2ZW4gd2hlbiAhX0xJQk9PQkpDLiAgUmVtb3ZlIGR1cGxpY2F0ZSBwcm90b3R5cGUgb2YKCXRoZSBfX2d0aHJ3IGZvcm0gb2YgdGhyX2tleWNyZWF0ZS4KCShfX2d0aHJlYWRfa2V5X2RlbGV0ZSk6IFNpbGVuY2UgdGhlIHVudXNlZCBhcmd1bWVudCB3YXJuaW5nLgoKMjAwNi0wNy0yMyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCVBSIGRlYnVnLzI1NDY4CgkqIGNvbmZpZy9lbGZvcy5oIChBU01fT1VUUFVUX0FTQ0lJKTogUmVtb3ZlICdyZWdpc3RlcicgbWFya3MuCglDYWNoZSB0aGUgbGFzdCBmb3VuZCAnXDAnIG1hcmtlciB0byBhdm9pZCBxdWFkcmF0aWMgYmVoYXZpb3IuCgoyMDA2LTA3LTIzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2Lm1kIChzdWJzaV8zX3pleHQpOiBGaXggb3V0cHV0IHRlbXBsYXRlLgoKMjAwNi0wNy0yMSAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKEMrKyBEaWFsZWN0IE9wdGlvbnMpOiBOb3RlIHRoYXQKCS1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbiBkb2Vzbid0IGFmZmVjdCBleHBsaWNpdGx5CglpbnN0YW50aWF0aW9uZWQgaW5saW5lIG1ldGhvZHMuCgoyMDA2LTA3LTIwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy5nY2MgKGlbMzQ1NjddODYtKi1zb2xhcmlzMiopOiBBZGQgdXNlZ2FzLmggdG8gJHRtX2ZpbGUKCWlmIHRoZSB0YXJnZXQgYXNzZW1ibGVyIGlzIEdOVSBiaW51dGlscycgZ2FzLgoJKiBjb25maWcvaTM4Ni9zb2wyLTEwLmggKEFTTV9TUEVDKTogQ2hlY2sgVVNFX0dBUyB0byBkZXRlcm1pbmUKCXdoZXRoZXIgdG8gcGFzcyBHTlUgZ2FzIG9yIG5hdGl2ZSBhcyBjb21tYW5kIGxpbmUgb3B0aW9ucy4KCjIwMDYtMDctMjAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdHJlZS5jIChyZW1vdmVfYXR0cmlidXRlKTogTmV3IGZuLgoJKiB0cmVlLmg6IERlY2xhcmUgaXQuCgoyMDA2LTA3LTIwICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIDI3MzYzCgkqIGNzZS5jIChjc2VfaW5zbik6IEFkZCBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgdG8gaGFzaCB0YWJsZS4gQ2hlY2sgaWYKCXRoZXkgYXJlIGludmFsaWRhdGVkIGJ5IHRoaXMgaW5zdHJ1Y3Rpb24uCgoyMDA2LTA3LTIxICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIHRhcmdldC8yODQyNwoJKiBjb25maWcvaTM4Ni9jeWdtaW5nLmggKE1BWF9PRklMRV9BTElHTk1FTlQpOiBEZWZpbmUuCgoyMDA2LTA3LTIwICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AYXBwbGUuY29tPgoKCVBSIHRhcmdldC8yNjg3NwoJKiBjb25maWcvaTM4Ni9pMzg2LmggKE9QVElPTl9ERUZBVUxUX1NQRUNTKTogUmVvcmRlci4KCjIwMDYtMDctMTkgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWcvdC1zbGliZ2NjLWRhcndpbiAoc3RtcC1saXBvKTogUmVtb3ZlLgoJUmV3cml0ZSBkZXBlbmRlbmNpZXMgZm9yIGxpYmdjY19zLjEuZHlsaWIuCgoyMDA2LTA3LTE5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGV4Y2VwdC5jIChkdXBsaWNhdGVfZWhfcmVnaW9uc18xKTogQ2xlYXIgbmV4dF9wZWVyLgoKMjAwNi0wNy0xNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoUlMvNjAwMCBhbmQgUG93ZXJQQyBPcHRpb25zKTogRG9jdW1lbnQgdGhhdAoJLW1sb25nY2FsbCBkb2VzIG5vdCBndWFyYW50ZWUgYWxsIGNhbGxzIHdpbGwgYmUgbG9uZy4KCSogZG9jL2V4dGVuZC50ZXhpIChsb25nX2NhbGwvc2hvcnRfY2FsbCk6IERvY3VtZW50IHRoYXQgbG9uZ2NhbGwKCWRvZXMgbm90IGd1YXJhbnRlZSBhIGxvbmcgY2FsbCB3aWxsIGJlIHVzZWQuCgkobG9uZ2NhbGwvc2hvcnRjYWxsKTogTGlrZXdpc2UuCgoyMDA2LTA3LTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzI4MjgzCgkqIGV4cG1lZC5jIChleHBhbmRfc2hpZnQpOiBBZGRpdGlvbmFsbHkgY2hlY2sgdGhhdCB0aGUgc2hpZnRfY29zdAoJaXMgbm90IE1BWF9DT1NUIGFuZCB0aGF0IElOVFZBTChvcDEpIGlzIGxlc3MgdGhhbiBNQVhfQklUU19QRVJfV09SRAoJYmVmb3JlIGltcGxlbWVudGluZyBhIExTSElGVF9FWFBSIGFzIGEgc2VxdWVuY2Ugb2YgYWRkaXRpb25zLgoJKiBjb25maWcvc2gvc2guYyAoc2hpZnRfY29zdHMpOiBSZXR1cm4gTUFYX0NPU1QgdG8gaW5mb3JtIHRoZQoJbWlkZGxlLWVuZCB0aGF0IERJbW9kZSBzaGlmdHMgbmVlZCB0byBiZSBzeW50aGVzaXplZCBieSBleHBhbmQuCgoyMDA2LTA3LTE4ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglQUiAyODQxMAoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhY2Nlc3NfY2FuX3RvdWNoX3ZhcmlhYmxlKTogVXBkYXRlCgljb21tZW50LgoJUmV0dXJuIHRydWUgaWYgQUxJQVMgaXMgLkdMT0JBTF9WQVIuCgoyMDA2LTA3LTE4ICBEYXZpZCBEYW5leSAgPGRkYW5leUBhdnRyZXguY29tPgoKCSogZ2NjLmMgKGRpc3BsYXlfaGVscCk6IEZpeCB0eXBvIGluIGhlbHAgdGV4dC4KCjIwMDYtMDctMTggIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiB0cmVlLmggKGNhdGVnb3JpemVfY3Rvcl9lbGVtZW50cyk6IEFkanVzdCBwcm90b3R5cGUgYW5kIGFkZAoJZGVzY3JpcHRpdmUgY29tbWVudCwgYm90aCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGludGVyZmFjZSBjaGFuZ2UKCWRlc2NyaWJlZCBiZWxvdy4KCSogdmFyYXNtLmMgKGNvbnN0cnVjdG9yX3N0YXRpY19mcm9tX2VsdHNfcCk6IE5ldyBmdW5jdGlvbi4KCVdoZXRoZXIgYSBjb25zdHJ1Y3RvciBub2RlIGlzIGEgdmFsaWQgc3RhdGljIGNvbnN0YW50IGluaXRpYWxpemVyCglpZiBhbGwgaXRzIGVsZW1lbnRzIGFyZS4KCShpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKSA8Q09OU1RSVUNUT1IgdmFsdWU+OiBVc2UgaXQuCgkqIG91dHB1dC5oOiBEZWNsYXJlIGl0LgoJKiBleHByLmMgKGNhdGVnb3JpemVfY3Rvcl9lbGVtZW50c18xKTogUmV0dXJuIHdoZXRoZXIgdGhlIGNvbnN0cnVjdG9yCglpcyBhIHZhbGlkIGNvbnN0YW50IGluaXRpYWxpemVyIGluc3RlYWQgb2YgY29tcHV0aW5nIHRoZSBudW1iZXIgb2YKCW5vbi1jb25zdGFudCBlbGVtZW50cy4gIFVzZSBjb25zdHJ1Y3Rvcl9zdGF0aWNfZnJvbV9lbHRzX3AgZm9yIHRoaXMKCXB1cnBvc2UuICBSZXBsYWNlIHRoZSBoZWFkIGNvbW1lbnQgd2l0aCBhbiBpbmRpY2F0aW9uIHRoYXQgdGhpcyBpcyBhCgloZWxwZXIgZm9yIGNhdGVnb3JpemVfY3Rvcl9lbGVtZW50cy4KCShjYXRlZ29yaXplX2N0b3JfZWxlbWVudHMpOiBTYW1lIGludGVyZmFjZSBjaGFuZ2UgYXMgZm9yIHRoZSBfMQoJaGVscGVyLiAgRm9ybWVyIGhlYWQgY29tbWVudCBmcm9tIHRoaXMgaGVscGVyIG1vdmVkIGhlcmUsIGFkanVzdGVkIHRvCglhY2NvdW50IGZvciB0aGUgaW50ZXJmYWNlIGNoYW5nZXMuCgkobW9zdGx5X3plcm9zX3ApOiBBZGp1c3QgY2FsbCB0byBjYXRlZ29yaXplX2N0b3JfZWxlbWVudHMuCgkoYWxsX3plcm9zX3ApOiBMaWtld2lzZS4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfaW5pdF9jb25zdHJ1Y3Rvcik6IERlY2lkZSB3aGV0aGVyIHdlIGNhbiBtYWtlCglzdGF0aWMgdmVyc2lvbnMgb2YgdGhlIGNvbnN0cnVjdG9yIGZyb20gdGhlIGNhdGVnb3JpemVfY3Rvcl9lbGVtZW50cwoJcmV0dXJuIHZhbHVlIGluc3RlYWQgb2YgdGhlIGZvcm1lcmx5IGNvbXB1dGVkIG51bWJlciBvZiBub24tY29uc3RhbnQKCWVsZW1lbnRzLgoKMjAwNi0wNy0xOCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogTWFrZWZpbGUuaW4gKGJ1aWxkX2xpYnN1YmRpcik6IE5ldyBjb25maWd1cmUgc3Vic3RpdHV0aW9uCgkoYnVpbGRfbGlib2JqZGlyKTogTmV3IHZhcmlhYmxlLgoJKEJVSUxEX0xJQklCRVJUWSk6IFVzZSBpdC4KCjIwMDYtMDctMTggIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYy8yODI4NgoJKiBjLXByYWdtYS5jIChoYW5kbGVfcHJhZ21hX3BhY2spOiBIYW5kbGUgaW52YWxpZCBjb25zdGFudHMuCgoyMDA2LTA3LTE4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiBjLzI2OTkzCgkqIGMtY29tbW9uLmMgKGhhbmRsZV93ZWFrcmVmX2F0dHJpYnV0ZSk6IElnbm9yZSBhdHRyaWJ1dGUgaW4KCXRoZSBzYW1lIGNvbmRpdGlvbnMgdGhlIGFsaWFzIGF0dHJpYnV0ZSBpcyBpZ25vcmVkLgoKMjAwNi0wNy0xNyAgQ2FybG9zIE8nRG9uZWxsICA8Y2FybG9zQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkYnhvdXQuYyAoZGJ4b3V0X2Z1bmN0aW9uX2VuZCk6IERvIG5vdCBpbmNyZW1lbnQgc2NvcGVfbGFiZWxuby4KCShkYnhvdXRfYmVnaW5fcHJvbG9ndWUpOiBJbmNyZW1lbnQgc2NvcGVfbGFiZWxuby4KCjIwMDYtMDctMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgMjc4ODkKCSogdHJlZS1uZXN0ZWQuYyAoY3JlYXRlX3RtcF92YXJfZm9yKTogU2V0IERFQ0xfQ09NUExFWF9HSU1QTEVfUkVHX1AKCWlmIG5lZWRlZC4KCjIwMDYtMDctMTcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogY29uZmlnL2kzODYvZ21vbi1zb2wyLmM6IFNpbGVuY2UgY29tcGlsYXRpb24gd2FybmluZ3MgYnkgcGFydGlhbGx5CglzeW5jaHJvbml6aW5nIGNvZGUgd2l0aCBjb25maWcvc3BhcmMvZ21vbi1zb2wyLmMuICBSZW1vdmUgI2lmIDAKCWJsb2Nrcy4gICNpbmNsdWRlICJ0Y29uZmlnLmgiIGFuZCAidHN5c3RlbS5oIiB0byBwcm90b3R5cGUgc3lzdGVtCglmdW5jdGlvbnMgc3VjaCBhcyBzYnJrLCB3cml0ZSwgZXRjLi4gIEFkZCBmdW5jdGlvbiBwcm90b3R5cGVzLgoJQ29udmVydCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgZnJvbSBLJlIgdG8gSVNPIEMuICBDYXN0IHBvaW50ZXJzCgl0byAibG9uZyIgYW5kICJ1bnNpZ25lZCBsb25nIiBpbnN0ZWFkIG9mICJpbnQiIGFuZCAidW5zaWduZWQgaW50Ii4KCUNvbnZlcnQgdG9rZW5zIGZvbGxvd2luZyAjZW5kaWYgaW50byBjb21tZW50cy4KCjIwMDYtMDctMTcgIFRvb24gTW9lbmUgIDx0b29uQG1vZW5lLmluZGl2Lm5sdXVnLm5sPgoKCSogaW52b2tlLnRleGk6IFJlbW92ZSBtZW50aW9uIG9mIGY3NzsgUmVmb3JtYXQgdGFibGUgZm9yCglpbmxpbmUgcGFyYW1ldGVyIG9wdGlvbnMgY29ycmVjdGx5OyBtZW50aW9uIHRoYXQgLW1hbGlnbi1kb3VibGUKCWlzIGRlZmF1bHQgb24geDg2LTY0IHRhcmdldHMuCgoyMDA2LTA3LTE3ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLWNocmVjLmMgKGF2b2lkX2FyaXRobWV0aWNzX2luX3R5cGVfcCk6IE5ldy4KCShjb252ZXJ0X2FmZmluZV9zY2V2LCBjaHJlY19jb252ZXJ0X2FnZ3Jlc3NpdmUpOiBVc2UKCWF2b2lkX2FyaXRobWV0aWNzX2luX3R5cGVfcC4gIERvIG5vdCBjaGVjayBmb3IgdGhlIHN1YnR5cGVzCglzZXBhcmF0ZWx5LgoKMjAwNi0wNy0xNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgbWlkZGxlLWVuZC8yODQwMwoJKiBvcHRhYnMuYyAoZXhwYW5kX2RvdWJsZXdvcmRfc2hpZnQpOiBXcmFwIHRoZSBjYWxsIHRvCglkb19jb21wYXJlX3J0eF9hbmRfanVtcCB3aXRoIE5PX0RFRkVSX1BPUCBhbmQgT0tfREVGRVJfUE9QLgoKMjAwNi0wNy0xNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgbWlkZGxlLWVuZC8yODQwMgoJKiBvcHRhYnMuYyAoZXhwYW5kX2Jpbm9wKTogUGFzcyBuZXh0X21ldGhvZHMgcmF0aGVyIHRoYW4gbWV0aG9kcwoJdG8gZXhwYW5kX2RvdWJsZXdvcmRfc2hpZnQuCgoyMDA2LTA3LTE3ICBKIm9ybiBSZW5uZWNrZSAgPGpvZXJuLnJlbm5lY2tlQHN0LmNvbT4KCglQUiBvdGhlci8yODI1MQoJKiB0cmVlLmggKGR1bXBfYWRkcik6IERlY2xhcmUuCgkqIHByaW50LXRyZWUuYyAoZHVtcF9hZGRyKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X25vZGVfYnJpZWYsIHByaW50X25vZGUpOiBVc2UgaXQuCgkqIHByaW50LXJ0bC5jIChwcmludF9ydHgpOiBMaWtld2lzZS4KCSogY29tbW9uLm9wdCAoLWZkdW1wLW5vYWRkcik6IE5ldyBvcHRpb24uCgkqIGRvYy9pbnZva2UudGV4aSAoLWZkdW1wLW5vYWRkcik6IERvY3VtZW50LgoJKiBsb29wLXVucm9sbC5jIChzaV9pbmZvX2hhc2gpOiBNYWtlIGhhc2ggaW5kZXBlbmRlbnQgb2YgYWRkcmVzc2VzLgoJKHZlX2luZm9faGFzaCk6IExpa2V3aXNlLgoKMjAwNi0wNy0xMyAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTk1MDUKCSogdHJlZS1jZmdjbGVhbnVwLmMgKHRyZWVfZm9yd2FyZGVyX2Jsb2NrX3ApOiBJZiB3ZSBoYXZlIGFuIEVICgllZGdlIGxlYXZpbmcgdGhpcyBibG9jaywgbWFrZSBzdXJlIHRoYXQgdGhlIGRlc3RpbmF0aW9uIG9mIHRoaXMKCWJsb2NrIGhhcyBvbmx5IG9uZSBwcmVkZWNlc3Nvci4KCjIwMDYtMDctMTcgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yODIzOAoJKiB0cmVlLWlubGluZS5jIChjb3B5X2JiKTogQ2hlY2sgaWYgd2UgcHJvZHVjZWQgdmFsaWQKCWdpbXBsZSBjb3B5aW5nIGFuZCBzdWJzdGl0dXRpbmcgYSBzdG10LiAgSWYgbm90LCBnaW1wbGlmeQoJaXQuCgoyMDA2LTA3LTE2ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogb3B0YWJzLmMgKG1heWJlX2VuY2Fwc3VsYXRlX2Jsb2NrKTogTmV3IGZ1bmN0aW9uIGV4dHJhY3RlZCBmcm9tLi4uCgkoZW1pdF9saWJjYWxsX2Jsb2NrKTogLi4uaGVyZS4gIEludm9rZSBpdCBvbiB0aGUgYmxvY2sgb2YgaW5zbnMgdG8KCW1heWJlIGVtaXQgUkVHX0xJQkNBTEwvUkVHX1JFVFZBTCBub3RlcyBhcm91bmQgdGhlIGJsb2NrLgoJKGVtaXRfbm9fY29uZmxpY3RfYmxvY2spOiBMaWtld2lzZS4KCjIwMDYtMDctMTYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChzcGFyYy1zdW4tc29sYXJpczIqKTogQWRkIEdNUCB2ZXJzaW9uIG51bWJlci4KCjIwMDYtMDctMTUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX3N0bXQpOiBTaW5rIHRlc3Qgb2YgSVNfRU1QVFlfU1RNVCBpbnRvCglhIG5ldyBOT1BfRVhQUiBjYXNlIG9mIHRoZSBzd2l0Y2ggc3RhdGVtZW50LgoKMjAwNi0wNy0xNSAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJUFIgbWlkZGxlLWVuZC8yODE2MAoJKiBzdG9yLWxheW91dC5jIChwbGFjZV9maWVsZCk6IFRha2UgdGhlIGJpdCBmaWVsZCB3aXRoCglhbiBleGNlc3NpdmUgc2l6ZSBpbnRvIGFjY291bnQgaW4gdGhlIG1zLWJpdGZpbGVkIGNhc2UuCgoJUFIgbWlkZGxlLWVuZC8yODE2MQoJKiBzdG9yLWxheW91dC5jIChwbGFjZV9maWVsZCk6IFVzZSBERUNMX0JJVF9GSUVMRF9UWVBFIG9mCgl0aGUgcHJldmlvdXMgYml0IGZpZWxkLgoKMjAwNi0wNy0xNCAgRWxpb3QgRHJlc3NlbGhhdXMgIDxlbGlvdEBzb25pYy5uZXQ+CgoJUFIgdGFyZ2V0LzI3Mjg3CgkqIGNvbmZpZy9yczYwMDAvc3BlLm1kIChmcm9iX2RpX2RmXzIpOiBBZGQgbS0+ciBhbHRlcm5hdGl2ZS4KCjIwMDYtMDctMTQgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL2xpbnV4LXVud2luZC5oIChzMzkwX2ZhbGxiYWNrX2ZyYW1lX3N0YXRlKTogRGV0ZWN0CglzaWduYWwgZnJhbWVzIGNvcnJlY3RseSBldmVuIHdoZW4gdGhlIHNpZ25hbCB3YXMgaW5zdGFsbGVkIHdpdGgKCXNhX3Jlc3RvcmVyIHNldC4KCjIwMDYtMDctMTQgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGJ4b3V0LmMgKGRieG91dF9iZWdpbl9wcm9sb2d1ZSk6IEVtaXQgTEZCQiBsYWJlbCBhdCBmdW5jdGlvbiBzdGFydC4KCShkYnhvdXRfZnVuY3Rpb25fZW5kKTogVXNlIGxvY2FsIGxhYmVsIExGQkIuIFJlbW92ZSBob29rCglEQlhfT1VUUFVUX05GVU4uCgkoZGJ4b3V0X3NvdXJjZV9saW5lKTogVXNlIGxvY2FsIGxhYmVsIExGQkIuCgkoZGJ4b3V0X2Jsb2NrKTogTGlrZXdpc2UuCgkoZGJ4X291dHB1dF9sYnJhYyk6IFJlbW92ZSBob29rIERCWF9PVVRQVVRfTEJSQUMuCgkoZGJ4X291dHB1dF9yYnJhYyk6IFJlbW92ZSBob29rIERCWF9PVVRQVVRfUkJSQUMuCgkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5oOiBSZW1vdmUgREJYX09VVFBVVF9MQlJBQywgREJYX09VVFBVVF9SQlJBQywKCWFuZCBEQlhfT1VUUFVUX05GVU4uCgoyMDA2LTA3LTEzICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpIChUZXN0IERpcmVjdGl2ZXMpOiBEb2N1bWVudCBkZy1zaG91bGRmYWlsLgoKMjAwNi0wNy0xMyAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfdmFycG9vbF9hbmFseXplX3BlbmRpbmdfZGVjbHMpOiBDYWxsCglhbGlnbl92YXJpYWJsZS4KCSogb3V0cHV0LmggKGFsaWduX3ZhcmlhYmxlKTogRGVjbGFyZS4KCSogdmFyYXNtLmMgKGFsaWduX3ZhcmlhYmxlKTogRXhwb3J0LgoJKiB2YWx1ZS1wcm9mLmMgKHRyZWVfdmFsdWVfcHJvZmlsZV90cmFuc2Zvcm1hdGlvbnMpOiBSZWNvbXB1dGUgaXRlcmF0b3IKCXdoZW4gYmFzaWMgYmxvY2sgY2hhbmdlZC4KCjIwMDYtMDctMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guYyAoc2hfcmVvcmcpOiBJZ25vcmUgZGVsZXRlZCBpbnNucyB3aGlsc3QKCXdhbGtpbmcgdGhlIExPR19MSU5LUyBjaGFpbi4KCjIwMDYtMDctMTIgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpIChDKysgRGlhbGVjdCBPcHRpb25zKTogRXhwbGFpbiBkaWZmZXJlbmNlCgliZXR3ZWVuIC1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbiBhbmQgc2V0dGluZyBoaWRkZW4KCXZpc2liaWxpdHkgZXhwbGljaXRseS4KCjIwMDYtMDctMTIgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWcvdC1zbGliZ2NjLWRhcndpbiAoU0hMSUJfTElOSyk6IERvbid0IG11bmdlIHN0bXAtbGlwby4KCShzdG1wLWxpcG8pOiBEZXBlbmQgb24gbGliZ2NjLmEuCgoyMDA2LTA3LTEyICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYzogRml4IGEgY29tbWVudCB0eXBvLgoKMjAwNi0wNy0xMiAgTmF2ZWVuLkguUyAgPG5hdmVlbmhAa3BpdGN1bW1pbnMuY29tPgoKCSogY29uZmlnL20zMmMvbXVsZGl2Lm1kICh1bXVsaGlzaTNfYyk6IFVzZSBvbmx5IHJlZ2lzdGVycyBmb3IKCWRlc3QuCgkodW11bGhpc2kzX3IpOiBMaWtld2lzZS4KCjIwMDYtMDctMTIgIFBhb2xvIENhcmxpbmkgIDxwY2FybGluaUBzdXNlLmRlPgoKCVBSIGxpYnN0ZGMrKy8yNzg3OAoJKiBkb2MvaW5zdGFsbC50ZXhpIChtaXBzLXNnaS1pcml4Nik6IEFkZCBub3RlIGFib3V0IElSSVggNi41LngsCgl4IDwgMTksIHZzIHdjaGFyX3Qgc3VwcG9ydC4KCjIwMDYtMDctMTIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcvc2gvc2guaCAoU1VCVEFSR0VUX0FTTV9SRUxBWF9TUEVDKTogVXNlIC1pc2E9c2g0LXVwCglpbnN0ZWFkIG9mIC1pc2E9c2g0LgoKMjAwNi0wNy0xMiAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBwcm90b2l6ZS5jIChlZGl0X2ZuX2RlZmluaXRpb24pOiBBZGQgdm9sYXRpbGUgdG8gY2xlYW5fdGV4dF9wLgoKMjAwNi0wNy0xMCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy90LXNsaWJnY2MtZGFyd2luOiBSZXdyaXRlLgoKMjAwNi0wNy0xMCAgTGF1cnluYXMgQml2ZWluaXMgIDxsYXVyeW5hcy5iaXZlaW5pc0BnbWFpbC5jb20+CgoJUFIgYm9vdHN0cmFwLzIwNDM3CgkqIE1ha2VmaWxlLmluIChjb25maWd1cmUpOiBhZGQgbWlzc2luZyBhY2xvY2FsLm00IGFuZCBhY2luY2x1ZGUubTQKCWRlcGVuZGVuY2llcy4KCjIwMDYtMDctMDggIE1hdHRoaWFzIEtsb3NlICA8ZG9rb0BkZWJpYW4ub3JnPgoKCSogZG9jL3NvdXJjZWJ1aWxkLnRleGk6IEZpeCB0eXBvLgoKMjAwNi0wNy0wNyAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiB0b3BsZXYuYyAocHJvY2Vzc19vcHRpb25zKTogRG9uJ3QgZ2l2ZSAtZmZ1bmN0aW9uLXNlY3Rpb25zIG1heQoJYWZmZWN0IGRlYnVnZ2luZyB3YXJuaW5nIGZvciBNYWNoLU8uCgoyMDA2LTA3LTA3ICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChjcHUpOiBBZGQgc2IxYS4KCSogY29uZmlnL21pcHMvc2IxLm1kOiBNb2RpZnkgYWxtb3N0IGFsbCBwYXR0ZXJucyB0byBhY2NlcHQgc2IxYSBpbgoJYWRkaXRpb24gdG8gc2IxLiAgQWRqdXN0IGNvbW1lbnRzIHRvIGNsYXJpZnkgU0ItMUEgZGlmZmVyZW5jZXMgZnJvbQoJU0ItMS4KCShpcl9zYjFhX2xvYWQpOiBOZXcuICBNb2RpZnkgYnlwYXNzZXMgdG8gdXNlIGl0LgoJKGlyX3NiMWFfc2ltcGxlX2FsdSk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfY3B1X2luZm9fdGFibGUpOiBBZGQgc2IxYS4KCShtaXBzX3J0eF9jb3N0X2RhdGEpOiBBZGQgUFJPQ0VTU09SX1NCMUEgc3VwcG9ydC4KCShtaXBzX2lzc3VlX3JhdGUpOiBBZGQgUFJPQ0VTU09SX1NCMUEuCgkobWlwc19tdWx0aXBhc3NfZGZhX2xvb2thaGVhZCk6IFVzZSBUVU5FX1NCMSBpbnN0ZWFkIG9mIFBST0NFU1NPUl9TQjEuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAocHJvY2Vzc29yX3R5cGUpOiBBZGQgUFJPQ0VTU09SX1NCMUEuCgkoVEFSR0VUX1NCMSk6IEFkZCBQUk9DRVNTT1JfU0IxQSBjaGVjay4KCShUVU5FX1NCMSk6IExpa2V3aXNlLgoKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19zdG9yZV9kYXRhX2J5cGFzc19wKTogTmV3LgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc3RvcmVfZGF0YV9ieXBhc3NfcCk6IE5ldy4KCSogY29uZmlnL21pcHMvc2IxLm1kOiBVc2UgbWlwc19zdG9yZV9kYXRhX2J5cGFzc19wIGluc3RlYWQgb2YKCXN0b3JlX2RhdGFfYnlwYXNzX3AuCgoyMDA2LTA3LTA4ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHRhcmdldC8yNzk5MQoJKiBjb25maWcvbTY4ay9tNjhrLm1kOiBBZGQgci1tIHBhdHRlcm5zIGZvciA2ODg4MSBtb3Z4Zi4KCjIwMDYtMDctMDcgICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8yODI2OAoJKiB0cmVlLmggKGJ1aWxkX29uZV9jc3QpOiBEZWNsYXJlLgoJKiB0cmVlLmMgKGJ1aWxkX29uZV9jc3QpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUtc3NhLW1hdGgtb3B0cy5jIChnZXRfY29uc3RhbnRfb25lKTogUmVtb3ZlLgoJKGluc2VydF9yZWNpcHJvY2Fscyk6IFVzZSBidWlsZF9vbmVfY3N0LgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfcGx1c21pbnVzX211bHQpOiBMaWtld2lzZS4KCjIwMDYtMDctMDcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogcG9pbnRlci1zZXQuYyAocG9pbnRlcl9zZXRfZGVzdHJveSk6IENvcnJlY3Qgd2hpdGVzcGFjZS4KCSogY2ZnbG9vcGFuYWwuYyAoZHVtcF9ncmFwaCk6IExpa2V3aXNlLgoJKiBkb2p1bXAuYyAoZGlzY2FyZF9wZW5kaW5nX3N0YWNrX2FkanVzdCk6IExpa2V3aXNlLgoJKiBmaXgtaGVhZGVyLmMgKFRBUkdFVF9FWFRSQV9JTkNMVURFLCBUQVJHRVRfRVhUUkFfUFJFX0lOQ0xVREVTKToKCUxpa2V3aXNlLgoJKiBhbGxvYy1wb29sLmMgKGR1bXBfYWxsb2NfcG9vbF9zdGF0aXN0aWNzKTogTGlrZXdpc2UuCgkqIGZ1bmN0aW9uLmMgKGZpbmFsaXplX2Jsb2NrX2NoYW5nZXMpOiBMaWtld2lzZS4KCSogZ2NjLWNvbW1vbi5jIChnZ2NfZnJlZV9vdmVyaGVhZCwgZHVtcF9nY2NfbG9jX3N0YXRpc3RpY3MpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtZGNlLmMgKGNsZWFyX2NvbnRyb2xfZGVwZW5kZW5jZV9iaXRtYXApOiBMaWtld2lzZS4KCSogcnRsLmMgKGR1bXBfcnR4X3N0YXRpc3RpY3MpOiBMaWtld2lzZS4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoc29ydF9maWVsZHN0YWNrLCBpbml0X2FsaWFzX2hlYXB2YXJzKToKCUxpa2V3aXNlLgoJKiB2YXJyYXkuYyAoZHVtcF92YXJyYXlfc3RhdGlzdGljcyk6IExpa2V3aXNlLgoJKiBkZnAuYyAoZW5jb2RlX2RlY2ltYWwzMiwgZGVjb2RlX2RlY2ltYWwzMiwgZW5jb2RlX2RlY2ltYWw2NCwKCWRlY29kZV9kZWNpbWFsNjQsIGVuY29kZV9kZWNpbWFsMTI4LCBkZWNvZGVfZGVjaW1hbDEyOCwKCWRlY2ltYWxfcmVhbF90b19kZWNpbWFsKTogTGlrZXdpc2UuCgoyMDA2LTA3LTA3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjgxODcKCSogdHJlZS12cnAuYyAodnJwX29wZXJhbmRfZXF1YWxfcCk6IE5ldyBmdW5jdGlvbi4KCSh2cnBfYml0bWFwX2VxdWFsX3ApOiBMaWtld2lzZS4KCSh1cGRhdGVfdmFsdWVfcmFuZ2UpOiBVc2UgdGhlbSB0byBjb21wYXJlIG9sZCBhbmQgbmV3CgltYXggYW5kIG1pbiB2YWx1ZXMuCgoyMDA2LTA3LTA2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGMtcGFyc2VyLmMgKGNfcGFyc2VyX3NraXBfdG9fZW5kX29mX2Jsb2NrX29yX3N0YXRlbWVudCk6IEFkZAoJYSBkZWZhdWx0IGNhc2UgdG8gc3dpdGNoIHN0YXRlbWVudCB0byBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwNi0wNy0wNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgdGFyZ2V0LzI3OTY4CgkqIGNvbmZpZ3VyZS5hYyAoSEFWRV9BU19JWDg2X0ZGUkVFUCk6IE9uIHg4NiB0YXJnZXRzIGNoZWNrIHdoZXRoZXIKCXRoZSBjb25maWd1cmVkIGFzc2VtYmxlciBzdXBwb3J0cyB0aGUgeDg3J3MgZmZyZWVwIG1uZW1vbmljLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3V0cHV0XzM4N19mZnJlZXApOiBOZXcgZnVuY3Rpb24uCgkob3V0cHV0X2ZwX2NvbXBhcmUpOiBVc2Ugb3V0cHV0XzM4N19mZnJlZXAgdG8gZW1pdCBmZnJlZXAgaW5zbnMuCgkob3V0cHV0XzM4N19yZWdfbW92ZSk6IExpa2V3aXNlLgoKMjAwNi0wNy0wNiAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CgoJUG9ydCB0byBob3N0cyB3aG9zZSAnc29ydCcgYW5kICd0YWlsJyBpbXBsZW1lbnRhdGlvbnMKCXRyZWF0IG9wZXJhbmRzIHdpdGggbGVhZGluZyAnKycgYXMgZmlsZSBuYW1lcywgYXMgUE9TSVgKCWhhcyByZXF1aXJlZCBzaW5jZSAyMDAxLiAgSG93ZXZlciwgbWFrZSBzdXJlIHRoZSBjb2RlIHN0aWxsCgl3b3JrcyBvbiBwcmUtUE9TSVggaG9zdHMuCgkqIE1ha2VmaWxlLmluIChzbG93Y29tcGFyZSk6IFBvcnQgdG8gUE9TSVggMTAwMy4xLTIwMDEsCgl3aGljaCBzYXlzIHlvdSBzaG91bGQgdXNlICJ0YWlsIC1jICtOIiByYXRoZXIgdGhhbiAidGFpbCArTmMiLgoJRml4IGEgYnVnOiB0aGUgb2xkIGNvZGUgaW5jb3JyZWN0bHkgc2tpcHBlZCAxNSBieXRlcywgbm90IDE2LgoKMjAwNi0wNy0wNiAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jIChzY2V2X3Byb2JhYmx5X3dyYXBzX3ApOiBGaXggdHlwbyBpbgoJYXJndW1lbnQgbmFtZS4KCjIwMDYtMDctMDYgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCglQUiB0YXJnZXQvMjgxNTAKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2xlZ2l0aW1hdGVfYWRkcmVzcyk6IERvIG5vdCBhbGxvdwoJUFJFX3tJTkMsREVDfSBvZiBURm1vZGUuCgoyMDA2LTA3LTA2ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgkgICAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiB0YXJnZXQvMjgxNzAKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoaW5zdmRpX3JzaGlmdF9ybHdpbWlfcCk6IENvcnJlY3Qgc2hpZnRvcAoJYm91bmRzLiBTaW1wbGlmeS4KCjIwMDYtMDctMDYgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCVBSIHRhcmdldC8yODI4NQoJKiBjb25maWcvYWxwaGEvcHJlZGljYXRlcy5tZCAoYWxwaGFfc3dhcHBlZF9jb21wYXJpc29uX29wZXJhdG9yKToKCVJlbW92ZSBkdXBsaWNhdGUgZ3R1LgoKMjAwNi0wNy0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzEzOTgzCglQUiBjKysvMTc1MTkKCSogc3Rvci1sYXlvdXQuYyAoZmluaXNoX3JlY29yZF9sYXlvdXQpOiBDb3B5IFRZUEVfUEFDS0VEIHRvIHZhcmlhbnRzLgoJKiBjLWNvbW1vbi5jIChoYW5kbGVfcGFja2VkX2F0dHJpYnV0ZSk6IFNvIGRvbid0IGNvcHkgaXQgaGVyZS4KCSogYy1kZWNsLmMgKGZpbmlzaF9zdHJ1Y3QpOiBEb24ndCBjb3B5IFRZUEVfQUxJR04uCgoyMDA2LTA3LTA1ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aSAoSW52b2tpbmcgRysrKTogQ2xhcmlmeSBwcm9zZSBmb3IgZysrLgoKMjAwNi0wNy0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIHRhcmdldC8yNjE0NgoJKiBjb25maWcuZ2NjOiBDaGVjayB3aXRoX2NwdSBmb3IgaVszNDU2N104Ni0tKi1zb2xhcmlzMi4xWzAtOV0qLgoKMjAwNi0wNy0wNSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRhcmdldC8yODE1OAoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqbmVnZGYyXzEpOiBSZXN0cmljdCBwYXR0ZXJuIHRvCglUQVJHRVRfU1NFMiB0YXJnZXRzIGlmIHVzaW5nIFNTRSBtYXRoLgoJKCphYnNkZjJfMSk6IExpa2V3aXNlLgoKMjAwNi0wNy0wNSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI4MTYyCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9iaW5hcnkpOiBGb3IgKC1BKSAqICgtQikgLT4gQSAqIEIKCW1ha2Ugc3VyZSB0byBjb252ZXJ0IHRoZSBvcGVyYW5kcyB0byB0aGUgY29ycmVjdCB0eXBlLgoKMjAwNi0wNy0wNCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yODIxOAoKCSogdHJlZS1zc2EtbWF0aC1vcHRzLmMgKGV4ZWN1dGVfY3NlX3JlY2lwcm9jYWxzKTogRml4IGNhbGxzCgl0byBjYWxjdWxhdGUgYW5kIGZyZWUgdGhlIGRvbWluYXRvciBpbmZvcm1hdGlvbi4KCjIwMDYtMDctMDQgIFBldGVyIE8nR29ybWFuICA8cGV0ZXJAcG9nbWEuY29tPgoKCSogbWtsaWJnY2MuaW46IGNobW9kIDY0NCBiZWZvcmUgcmFubGliIGR1cmluZyBpbnN0YWxsLgoKMjAwNi0wNy0wNCAgQW5kcmV3IFN0dWJicyA8YW5kcmV3LnN0dWJic0BzdC5jb20+CgkgICAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYyAoLmVoX2ZyYW1lIGRhdGEgY2hlY2spOiBVc2UgZGlmZiAtYi4KCjIwMDYtMDctMDQgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJUFIgYm9vdHN0cmFwLzE4MDU4CgkqIE1ha2VmaWxlLmluIChCVUlMRF9SVEwpOiBBZGQgYnVpbGQvdmVjLm8uCgkoYnVpbGQvZ2VuY29uZG1kLm8pOiBGaWx0ZXIgb3V0IC1ma2VlcC1pbmxpbmUtZnVuY3Rpb25zLgoJKGJ1aWxkL2dlbmV4dHJhY3QpOiBEZWxldGUuCgkoYnVpbGQvZ2VuYXV0b21hdGEpOiBMaWtld2lzZS4KCjIwMDYtMDctMDQgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgdGFyZ2V0LzI4MjA3CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGZ1bmN0aW9uX2FyZ19ib3VuZGFyeSk6IERvdWJsZS13b3JkIGFsaWduCgkxMjgtYml0IElCTSBsb25nIGRvdWJsZXMgZm9yIEFCSV9WNC4KCjIwMDYtMDctMDMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmVlLmMgKHJhbmdlX2luX2FycmF5X2JvdW5kc19wKTogTmV3IHByZWRpY2F0ZS4KCSogdHJlZS5oIChyYW5nZV9pbl9hcnJheV9ib3VuZHNfcCk6IERlY2xhcmUgaXQuCgkqIHRyZWUtZWguYyAodHJlZV9jb3VsZF90cmFwX3ApIDxBUlJBWV9SQU5HRV9SRUY+OiBVc2UgaXQgdG8KCXJldHVybiBhIGxlc3MgY29uc2VydmF0aXZlIGFuc3dlci4KCSogdHJlZS1zcmEuYyAoc3RydWN0IHNyYV9lbHQpOiBBZGQgbmV3IHBvaW50ZXIgZmllbGQgJ2dyb3VwcycKCWFuZCBmbGFnICdpc19ncm91cCcuCgkoSVNfRUxFTUVOVF9GT1JfR1JPVVApOiBOZXcgbWFjcm8uCgkoRk9SX0VBQ0hfQUNUVUFMX0NISUxEKTogTGlrZXdpc2UuCgkobmV4dF9jaGlsZF9mb3JfZ3JvdXApOiBOZXcgaGVscGVyIGZ1bmN0aW9uLgoJKGNhbl9jb21wbGV0ZWx5X3NjYWxhcml6ZV9wKTogVGFrZSBpbnRvIGFjY291bnQgZ3JvdXBzLgoJKHNyYV9oYXNoX3RyZWUpOiBIYW5kbGUgUkFOR0VfRVhQUi4KCShzcmFfZWx0X2VxKTogTGlrZXdpc2UuCgkobG9va3VwX2VsZW1lbnQpOiBCZSBwcmVwYXJlZCBmb3IgaGFuZGxpbmcgZ3JvdXBzLgoJKGlzX3ZhbGlkX2NvbnN0X2luZGV4KTogRGVsZXRlLgoJKG1heWJlX2xvb2t1cF9lbGVtZW50X2Zvcl9leHByKSA8QVJSQVlfUkVGPjogVXNlIGluX2FycmF5X2JvdW5kc19wCglpbnN0ZWFkIG9mIGlzX3ZhbGlkX2NvbnN0X2luZGV4LgoJPEFSUkFZX1JBTkdFX1JFRj46IE5ldyBjYXNlLgoJKHNyYV93YWxrX2V4cHIpIDxBUlJBWV9SRUY+OiBVc2UgaW5fYXJyYXlfYm91bmRzX3AgaW5zdGVhZCBvZgoJaXNfdmFsaWRfY29uc3RfaW5kZXguCgk8QVJSQVlfUkFOR0VfUkVGPjogRG8gbm90IHVuY29uZGl0aW9uYWxseSBwdW50LgoJKHNjYW5fZHVtcCk6IER1bXAgaW5mbyBmb3IgZ3JvdXBzIHRvby4KCShkZWNpZGVfaW5zdGFudGlhdGlvbl8xKTogTGlrZXdpc2UuCgkoZGVjaWRlX2Jsb2NrX2NvcHkpOiBBc3NlcnQgdGhhdCB0aGUgZWxlbWVudCBpcyBub3QgYSBncm91cC4KCVByb3BhZ2F0ZSBkZWNpc2lvbiB0byBncm91cHMuCgkoZ2VuZXJhdGVfb25lX2VsZW1lbnRfcmVmKTogSGFuZGxlIFJBTkdFX0VYUFIuCgkobWFya19ub193YXJuaW5nKTogSXRlcmF0ZSBvdmVyIGFjdHVhbCBjaGlsZHMuCgkoZ2VuZXJhdGVfY29weV9pbm91dCk6IExpa2V3aXNlLgoJKGdlbmVyYXRlX2VsZW1lbnRfY29weSk6IExpa2V3aXNlLgoJKGdlbmVyYXRlX2VsZW1lbnRfemVybyk6IExpa2V3aXNlLgoJKGdlbmVyYXRlX2VsZW1lbnRfaW5pdF8xKTogTGlrZXdpc2UuCgkoZHVtcF9zcmFfZWx0X25hbWUpOiBIYW5kbGUgUkFOR0VfRVhQUi4KCjIwMDYtMDctMDMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2MjUxCgkqIHRyZWUtc3NhLXRocmVhZHVwZGF0ZS5jIChyZWRpcmVjdGlvbl9ibG9ja19wKTogTmV3IGZ1bmN0aW9uLgoJKHRocmVhZF9ibG9jayk6IFdoZW4gb3B0aW1pemluZyBmb3Igc2l6ZSByZWZ1c2UgdG8gdGhyZWFkIGp1bXBzCgl0aGF0IHdvdWxkIHJlcXVpcmUgZHVwbGljYXRpb24gb2YgYmxvY2tzIG90aGVyIHRoYW4gcmVkaXJlY3Rpb24KCWJsb2Nrcy4KCjIwMDYtMDctMDMgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBjb25maWd1cmUuYWM6IEZpeCB0aGlua28gaW4gcHJldmlvdXMgY2hlY2staW4uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDYtMDctMDMgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgb3RoZXIvMjcwNjMKCSogY29uZmlndXJlLmFjIChmb3IgbGFuZy4uLik6IFNpbXBsaWZ5IG5lc3Rpbmcgb2YgY29uZGl0aW9uYWxzLgoJVGVzdCBzdWJkaXJfcmVxdWlyZXMgZm9yIG5vbi1lbmFibGVkIGxhbmd1YWdlcy4gIE1vdmUgcHJvY2Vzc2luZwoJb2YgbGFuZ19vcHRfZmlsZXMgYW5kIGxhbmdfdHJlZV9maWVscyBiZWxvdyB0aGF0IHRlc3QuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogZG9jL3NvdXJjZWJ1aWxkLnRleGkgKEZyb250IEVuZCBDb25maWcpOiBEb2N1bWVudCBzdWJkaXJfcmVxdWlyZXMuCgoyMDA2LTA3LTAxICBNYXJ0aW4gTWljaGxtYXlyICA8dGJtQGN5cml1cy5jb20+CgoJKiBkb2MvZ2Nvdi50ZXhpIChJbnZva2luZyBHY292KTogQWRkIGEgbWlzc2luZyB3b3JkLgoKMjAwNi0wNi0zMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjZmdleHBhbmQuYywgY29uZmlnL2kzODYvaTM4Ni5jLCBnZW5wcmVkcy5jLCB0cmVlLWNmZy5jOiBGaXgKCWNvbW1lbnQgdHlwb3MuCgoyMDA2LTA2LTI5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjY5MDUKCVBSIGMrKy8yNjYxMgoJUFIgYysrLzI3MDAwCglQUiBjKysvMjY5ODQKCVBSIGMrKy8xOTEzNAoJKiB0cmVlLmMgKGJ1aWxkX2RlY2xfc3RhdCk6IERvbid0IGhhbmRlICNwcmFnbWEgdmlzaWJpbGl0eSBoZXJlLgoJKiBjLWNvbW1vbi5jIChjX2RldGVybWluZV92aXNpYmlsaXR5KTogSGFuZGxlIGl0IGhlcmUuCgkqIGMtZGVjbC5jIChmaW5pc2hfZGVjbCk6IENhbGwgY19kZXRlcm1pbmVfdmlzaWJpbGl0eSBmb3IKCWZ1bmN0aW9ucywgdG9vLgoJKiBmbGFncy5oIChlbnVtIHN5bWJvbF92aXNpYmlsaXR5KTogU29ydCBmcm9tIG1vc3QgdG8gbGVhc3QgdmlzaWJpbGl0eS4KCSogdHJlZS5oOiBMaWtld2lzZS4KCSogdmFyYXNtLmMgKGRlZmF1bHRfYXNzZW1ibGVfdmlzaWJpbGl0eSk6IExpa2V3aXNlLgoJKiBjLWNvbW1vbi5jIChoYW5kbGVfdmlzaWJpbGl0eV9hdHRyaWJ1dGUpOiBDb21wbGFpbiBhYm91dCB0cnlpbmcKCXRvIGdpdmUgdmlzaWJpbGl0eSB0byBhbiBhbHJlYWR5IGRlZmluZWQgY2xhc3MsIG9yIHRyeWluZyB0byBjaGFuZ2UKCWRlY2xhcmVkIHZpc2liaWxpdHkuIEFsd2F5cyBhdHRhY2ggdGhlIGF0dHJpYnV0ZS4KCglQUiBjKysvMjY5MDUKCVBSIGMrKy8yMTY3NQoJUFIgYysrLzE3NDcwCgkqIGF0dHJpYnMuYyAoZGVjbF9hdHRyaWJ1dGVzKTogSWdub3JlIHR5cGUtaW4tcGxhY2UgYXR0cmlidXRlcwoJb25jZSB0aGUgdHlwZSBoYXMgYmVlbiBkZWZpbmVkLgoKMjAwNi0wNi0yOSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNzQyOAoJKiBjLWxleC5jIChjX2xleF93aXRoX2ZsYWdzKSA8Q1BQX05fSU5WQUxJRD46IEluY3JlbWVudCBlcnJvcmNvdW50Cgl0byBpbmRpY2F0ZSB0aGUgY3BwbGliIGhhcyBpc3N1ZWQgYW4gZXJyb3IgbWVzc2FnZSBmb3IgdXMuCgoyMDA2LTA2LTI5ICBBc2hlciBMYW5ndG9uICA8bGFuZ3RvbjJAbGxubC5nb3Y+CgoJUFIgdGFyZ2V0LzI1NzY1CgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9vdXRwdXRfZnVuY3Rpb25fZXBpbG9ndWUpOiBEb24ndAoJaW5zZXJ0IGEgbGFiZWwgYXQgdGhlIGVuZCBvZiBhbiBmdW5jdGlvbiB1bmRlciBNYWNoLU8uCgoyMDA2LTA2LTI5ICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AYXBwbGUuY29tPgoJICAgIEV2YW4gQ2hlbmcgIDxldmFuLmNoZW5nQGFwcGxlLmNvbT4KCgkqIHByZWRpY2F0ZXMubWQgKHZlY3Rvcl9hbGxfb25lc19vcGVyYW5kKTogTmV3LgoJKG5vbmltbWVkaWF0ZV9vcl9zc2VfY29uc3Rfb3BlcmFuZCk6IERpdHRvLgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChzdGFuZGFyZF9zc2VfY29uc3RhbnRfb3Bjb2RlKTogRGVjbGFyZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChzdGFuZGFyZF9zc2VfY29uc3RhbnRfb3Bjb2RlKTogRGVmaW5lLgoJKHN0YW5kYXJkX3NzZV9tb2RlX3ApOiBEaXR0by4KCShzdGFuZGFyZF9zc2VfY29uc3RhbnRfcCk6IEFkZCBjYXNlIGZvciAtMSB2ZWN0b3IuCgkoaXg4Nl9leHBhbmRfdmVjdG9yX21vdmUpOiBUcnkgdG8gdXNlLgoJKiBzc2UubWQgKCptb3Y8bW9kZT5faW50ZXJuYWwpOiBVc2Ugbm9uaW1tZWRpYXRlX29yX3NzZV9jb25zdF9vcGVyYW5kLgoJQ2FsbCBzdGFuZGFyZF9zc2VfY29uc3RhbnRfb3Bjb2RlLgoJKCptb3Z2NHNmX2ludGVybmFsKTogRGl0dG8uCgkoKm1vdnYyZGZfaW50ZXJuYWwpOiBEaXR0by4KCjIwMDYtMDYtMjkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZ2VucHJlZHMuYyAod3JpdGVfbWF0Y2hfY29kZV9zd2l0Y2gpOiBDb3JyZWN0bHkgdXNlIFhTVFIgaW5zdGVhZAoJb2YgWEVYUCB0byBleHRyYWN0IHRoZSBvcGVyYW5kcyBvZiBhIE1BVENIX0NPREUgcnR4LgoKMjAwNi0wNi0yOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAZ21haWwuY29tPgoKCSogdHJlZS5jICh0cmVlX3NpemUpOiBEbyBub3Qgd2FzdGUgdGFpbCBwYWRkaW5nIGluCglzdHJ1Y3QgdHJlZV9zdHJpbmcgYW5kIG1ha2UgdGhlIHNpemUgYmUgdGhlIHNhbWUgYXMKCWJ1aWxkX3N0cmluZyB3aWxsIGdlbmVyYXRlLgoKMjAwNi0wNi0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI3NzY4CgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNvbXB1dGVfZmxvd19pbnNlbnNpdGl2ZV9hbGlhc2luZyk6IEFkZAoJbWF5X2FsaWFzZXMgYWxyZWFkeSBpbiB0aGUgdGFnJ3MgYW5ub3RhdGlvbnMgdG8gdGhlIGJpdG1hcC4KCjIwMDYtMDYtMjggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZ2VucHJlZHMuYyAod3JpdGVfcHJlZGljYXRlX3N0bXRzKSA8SU9SPjogQWRkIG1pc3NpbmcgYnJlYWsuCgoyMDA2LTA2LTI4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGdlbnByZWRzLmMgKGdlbmVyYXRlX3N3aXRjaF9wKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9tb2RlX3Rlc3RzKTogUHVzaCB0aGUgbmV3IG1vZGUgdGVzdCBkb3duIGluc2lkZSBhbiBBTkQgZXhwcgoJaWYgdGhpcyBhbGxvd3MgdGhlIHN3aXRjaC1zdWl0YWJsZSBNQVRDSF9DT0RFIHRvIGJlIG5lYXIgdGhlIHJvb3QuCgkod3JpdGVfbWF0Y2hfY29kZV9zd2l0Y2gpOiBOZXcgZnVuY3Rpb24gdG8gd3JpdGUgYSBNQVRDSF9DT0RFIGFzCglhIHN3aXRjaCBzdGF0ZW1lbnQuCgkod3JpdGVfcHJlZGljYXRlX3N0bXRzKTogTmV3IGZ1bmN0aW9uIHRvIHdyaXRlIGEgcHJlZGljYXRlIFJUWAoJZXhwcmVzc2lvbiBhcyBhIHNlcXVlbmNlIG9mIHN0YXRlbWVudHMuCgkod3JpdGVfb25lX3ByZWRpY2F0ZV9mdW5jdGlvbik6IFVzZSB3cml0ZV9wcmVkaWNhdGVfc3RtdHMuCgkod3JpdGVfdG1fY29uc3Ryc19oKTogTGlrZXdpc2UuCgoyMDA2LTA2LTI2ICBGcmVkIEZpc2ggIDxmbmZAc3BlY2lmaXguY29tPgoKCSogY29uZmlnL21pcHMvdC1zYjE6IE5ldyBmaWxlLgoJKiBjb25maWcuZ2NjIChtaXBzaXNhNjRzYjEtKi1lbGYqKTogQWRkIG1pcHMvdC1zYjEgdG8KCXRtYWtlX2ZpbGUgbGlzdC4KCjIwMDYtMDYtMjYgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL20zMmMvbTMyYy5jIChtMzJjX3ByaW50X29wZXJhbmQpOiBGaXggc2lnbi1tZXJnaW5nIGxvZ2ljLgoKMjAwNi0wNi0yNiAgTmF2ZWVuIEguUyAgPG5hdmVlbmhAa3BpdGN1bW1pbnMuY29tPgoJICAgIEpheWFudCBTb25hciAgPGpheWFudHNAa3BpdGN1bW1pbnMuY29tPgoJICAgIEpheWRlZXAgVmlwcmFkYXMgIDxqYXlkZWVwdkBrcGl0Y3VtbWlucy5jb20+CgoJKiBjb25maWcvbTMyYy9hZGRzdWIubWQgKGFkZHNpMywgYWRkc2kzXzEsIGFkZHNpM18yKTogTmV3LgoJKHN1YnNpMywgc3Vic2kzXzEsIHN1YnNpM18yKTogTmV3LgoJKiBjb25maWcvbTMyYy9iaXRvcHMubWQgKGFuZHNpMywgaW9yc2kzLCB4b3JzaTMpOiBOZXcuCgkqIGNvbmZpZy9tMzJjL21vdi5tZCAoU0kgbW92IHBlZXBob2xlKTogTmV3LgoJKiBjb25maWcvbTMyYy9tMzIuYyAobTMyY19pbW1kX2RibF9tb3YpOiBOZXcuCgkqIGNvbmZpZy9tMzJjL20zMmMtcHJvdG9zLmggKG0zMmNfaW1tZF9kYmxfbW92KTogTmV3LgoKMjAwNi0wNi0yNiAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFnZ3JlZ2F0ZV92YWx1ZV9wKTogSG9ub3IgREVDTF9CWV9SRUZFUkVOQ0Ugb24KCWEgQ0FMTF9FWFBSIHRhcmdldCBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCjIwMDYtMDYtMjYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUuYyAoYnVpbGRfc3RyaW5nKTogRG8gbm90IHdhc3RlIHRhaWwgcGFkZGluZyBpbgoJc3RydWN0IHRyZWVfc3RyaW5nLgoKMjAwNi0wNi0yNiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogZ2djLXBhZ2UuYyAoaW5pdF9nZ2MpOiBBZGQgbWlzc2luZyBlbGVtZW50IHRvIHNpemVfbG9va3VwCgl0YWJsZS4KCglSZXZlcnQKCTIwMDYtMDYtMjMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGdnYy1wYWdlLmMgKGluaXRfZ2djKTogRG8gbm90IHJvdW5kIHVwIHRoZSBleHRyYV9vcmRlcl9zaXplX3RhYmxlCglzaXplcyB0byBNQVhfQUxJR05NRU5ULiAgRml4IHRoZSBzaXplX2xvb2t1cCB0YWJsZSB0byBob25vdXIKCWFsaWdubWVudCByZXF1ZXN0cyBpbnN0ZWFkLiAgQWRkIHZlcmlmaWNhdGlvbiBjb2RlLgoJQWRkIHN0cnVjdCB0cmVlX2Z1bmN0aW9uX2RlY2wgYW5kIHN0cnVjdCB0cmVlX2JpbmZvIHNpemUgdG8KCWV4dHJhX29yZGVyX3NpemVfdGFibGUuICBBZGQgbWlzc2luZyBlbGVtZW50IHRvIHNpemVfbG9va3VwCgl0YWJsZS4KCjIwMDYtMDYtMjUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJUFIgbWlkZGxlLWVuZC8yODE1MQoJKiBmb2xkLWNvbnN0LmMgKGNvbnN0X2Jpbm9wKTogQmUgcHJlcGFyZWQgZm9yIHNlbGYgcmV0dXJuaW5nIHplcm8uCglTaW1wbGlmeSBjb2RlIGhhbmRsaW5nIGNvbXBsZXggdmFsdWVzLgoKMjAwNi0wNi0yNCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X3NjYWxhcl9tb2RlX2FnZ3JlZ2F0ZV9jb21wYXJlKTogTmV3IGZ1bmN0aW9uLgoJKGdpbXBsaWZ5X2V4cHIpOiBVc2UgaXQgZm9yIHRjY19jb21wYXJpc29uIG9mIG9wZXJhbmRzIG9mIG5vbiBCTEttb2RlCglhZ2dyZWdhdGUgdHlwZXMuCgoyMDA2LTA2LTI0ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogdHJlZS1zc2EtbG9vcC1pbS5jIChmb3JfZWFjaF9pbmRleCk6IEhhbmRsZSBBUlJBWV9SQU5HRV9SRUYgYXMKCUFSUkFZX1JFRiwgc28gaGF2ZSB0aGUgY2FsbGJhY2sgY2FsbGVkIGZvciB0aGUgbG93IGJvdW5kIGV4cHJlc3Npb24uCgoyMDA2LTA2LTIzICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCgkqIHRyZWUuaCAoREVDSU1BTF9GTE9BVF9UWVBFX1ApOiBOZXcuCgkqIGMtdHlwZWNrLmMgKGNfY29tbW9uX3R5cGUpOiBEaXNhbGxvdyBvcGVyYXRpb25zIG9uIGRlY2ltYWwgZmxvYXQKCXR5cGVzIGFuZCBvdGhlciBmbG9hdCB0eXBlcy4KCSogY29udmVydC5jIChjb252ZXJ0X3RvX3JlYWwpOiBEb24ndCBpZ25vcmUgY29udmVyc2lvbnMgaW52b2x2aW5nCglkZWNpbWFsIGZsb2F0IHR5cGVzLgoKMjAwNi0wNi0yMyAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIHRyZWUuYyAobWF4X2ludF9zaXplX2luX2J5dGVzKTogTmV3IGZ1bmN0aW9uLCBpbnNwaXJlZCBmcm9tCgljb2RlIGluIGZ1bmN0aW9uLmM6YXNzaWduX3RlbXAuCgkqIHRyZWUuaCAobWF4X2ludF9zaXplX2luX2J5dGVzKTogRGVjbGFyZS4KCSogZnVuY3Rpb24uYyAoYXNzaWduX3RlbXApOiBVc2UgaXQuCgkqIGdpbXBsaWZ5LmMgKGNyZWF0ZV90bXBfdmFyKTogUmVsYXggdGhlIGFzc2VydGlvbnMgb24gdGhlIHR5cGUKCXByb3BlcnRpZXMsIG5vdCBtYW5kYXRpbmcgY29uc3RhbnQgc2l6ZSBhbnkgbW9yZS4KCShmb3JjZV9jb25zdGFudF9zaXplKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShnaW1wbGVfYWRkX3RtcF92YXIpOiBVc2UgaXQsIGZvcmNpbmcgdmFyaWFibGUgc2l6ZSB0byBhCgljb25zdGFudCB1cHBlciBib3VuZCBpZiBpdCBpcyBub3QgY29uc3RhbnQgb24gZW50cnkuCgoyMDA2LTA2LTIzICBEYW5ueSBTbWl0aCAgIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiB0YXJnZXQvMjc3ODkKCSogY29uZmlnL2kzODYvd2lubnQuYyAoaXg4Nl9oYW5kbGVfc2VsZWN0YW55X2F0dHJpYnV0ZSk6IE1vdmUgY2hlY2sKCWZvciBpbml0aWFsaXphdGlvbiBhbmQgc2V0dGluZyBvZiBvbmVfb25seSBmbGFnIHRvIC4uLgoJKGkzODZfcGVfZW5jb2RlX3NlY3Rpb25faW5mbyk6IC4uLmhlcmUuCgkoaTM4Nl9wZV9kbGxpbXBvcnRfcCk6IENoZWNrIGZvciBERUNMX0RMTElNUE9SVF9QIGFsc28uCglSZWNoZWNrIHRoYXQgdGhlIHN5bWJvbCBoYXMgbm90IGJlZW4gZGVmaW5lZC4KCjIwMDYtMDYtMjMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGdnYy1wYWdlLmMgKGluaXRfZ2djKTogRG8gbm90IHJvdW5kIHVwIHRoZSBleHRyYV9vcmRlcl9zaXplX3RhYmxlCglzaXplcyB0byBNQVhfQUxJR05NRU5ULiAgRml4IHRoZSBzaXplX2xvb2t1cCB0YWJsZSB0byBob25vdXIKCWFsaWdubWVudCByZXF1ZXN0cyBpbnN0ZWFkLiAgQWRkIHZlcmlmaWNhdGlvbiBjb2RlLgoJQWRkIHN0cnVjdCB0cmVlX2Z1bmN0aW9uX2RlY2wgYW5kIHN0cnVjdCB0cmVlX2JpbmZvIHNpemUgdG8KCWV4dHJhX29yZGVyX3NpemVfdGFibGUuICBBZGQgbWlzc2luZyBlbGVtZW50IHRvIHNpemVfbG9va3VwCgl0YWJsZS4KCjIwMDYtMDYtMjIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgbWlkZGxlLWVuZC8yODEzMQoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSkgPFZFQ1RPUl9DU1Q+OiBDaGVjayB3aGV0aGVyIHRoZQoJY2FsbCB0byBsYW5nX2hvb2tzLnR5cGVzLnR5cGVfZm9yX21vZGUgcmV0dXJuZWQgTlVMTF9UUkVFLgoKMjAwNi0wNi0yMyAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBkZnAuYyAoZGVjaW1hbF90b19kZWNudW1iZXIpOiBEbyBub3QgdXNlIGRlY051bWJlck5lZ2F0ZSB0bwoJbmVnYXRlIGRuIC0tIG1hbmlwdWxhdGUgaXQgZGlyZWN0bHkuCgoyMDA2LTA2LTIyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iLmdjY0BnbWFpbC5jb20+CgoJUFIgdGFyZ2V0LzI3NTMxCgkqIHJlbG9hZDEuYyAoZ2VuX3JlbG9hZCk6IENhbGwgbWFya19qdW1wX2xhYmVsIG9uIHRoZSBuZXcgaW5zbnMKCWdlbmVyYXRlZCBieSBnZW5fbW92ZV9pbnNuIHRvIGFkZCBSRUdfTEFCRUwgbm90ZXMgaWYgbmVjZXNzYXJ5LgoKMjAwNi0wNi0yMiAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EvbGliMWZ1bmNzLmFzbSAoTUlOX0VTQSk6IERlbGV0ZS4KCShsZWFmX2VudHJ5KTogUmVtb3ZlIHVzZSBvZiBNSU5fRVNBLgoKMjAwNi0wNi0yMiAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjgxMjEKCSogY2ZnZXhwYW5kLmMgKHRyZWVfZXhwYW5kX2NmZyk6IENsZWFuIEVER0VfRVhFQ1VUQUJMRSBmbGFnIGZyb20KCXRoZSBlbnRyeSBlZGdlLgoKMjAwNi0wNi0yMSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbTMyYy9tdWxkaXYubWQgKG11bGhpc2kzX2kpOiBPbmx5IHVzZSByZWdpc3RlcnMgZm9yIGRlc3QKCShUTi0xNkMtQTE1NkEvRSkuCgkobXVsaGlzaTNfcik6IExpa2V3aXNlLgoKMjAwNi0wNi0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgbWlkZGxlLWVuZC8yODAzNAoJKiBjb3ZlcmFnZS5jIChjb3ZlcmFnZV9jb3VudGVyX2FsbG9jKTogTGVhdmUgdGhlIGluZGV4IHR5cGUKCXVuc3BlY2lmaWVkLgoJKGNvdmVyYWdlX2NvdW50ZXJfYWxsb2MpOiBVc2UgbnVsbCBhcmd1bWVudHMgZm9yIG9wZXJhbmRzIDIgYW5kIDMKCW9mIHRoZSBBUlJBWV9SRUYuCgoyMDA2LTA2LTIxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGRvYy9pbnZva2UudGV4aSAoLWZvcGVubXApIE1vdmUgdG8gIk9wdGlvbnMgQ29udHJvbGxpbmcgQyBEaWFsZWN0IgoJc2VjdGlvbiBmcm9tIHRoZSAiT3B0aW9ucyBmb3IgQ29kZSBHZW5lcmF0aW9uIENvbnZlbnRpb25zIi4KCjIwMDYtMDYtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzI2MzQ3CglQUiB0YXJnZXQvMjcwODIKCSogY29uZmlnL2FscGhhL3ByZWRpY2F0ZXMubWQgKHNtYWxsX3N5bWJvbGljX29wZXJhbmQpOiBEZW55IHdlYWsKCXN5bWJvbHMuCgkoZ2xvYmFsX3N5bWJvbGljX29wZXJhbmQpOiBBbGxvdyB3ZWFrIHN5bWJvbHMsIGV2ZW4gaWYgbG9jYWxfcC4KCjIwMDYtMDYtMjEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChtYXlfYmVfbm9uYWRkcmVzc2FibGVfcCk6IE5ldyBmdW5jdGlvbi4KCShmaW5kX2ludGVyZXN0aW5nX3VzZXNfYWRkcmVzcyk6IFB1bnQgaWYgYWJvdmUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLgoKMjAwNi0wNi0yMSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDYtMDYtMjEgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jIChmdW5jdGlvbl9hcmcpOiBXaGVyZSBvbmUgcGFydCBvZiBhCgljb21wbGV4IGFyZ3VtZW50IGlzIGluIHJlZ2lzdGVycyBhbmQgdGhlIG90aGVyIHBhcnQgaW4gdGhlIHN0YWNrLAoJcmV0dXJuIGEgUkVHIG5vdCBhIFBBUkFMTEVMLgoKMjAwNi0wNi0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogU2V0IGdjY19neHhfaW5jbHVkZV9kaXIgdG8gJHRhcmdldC9pbmNsdWRlL2MrKwoJd2hlbiBjcm9zcy1jb21waWxpbmcuICBEbyBub3Qgc3Vic3RpdHV0ZSBsaWJzdGRjeHhfaW5jZGlyLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwNi0wNi0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB2YXJhc20uYyAobWVyZ2VhYmxlX3N0cmluZ19zZWN0aW9uKTogQ2hlY2sgZm9yIGVtYmVkZGVkIE5VTHMgYW5kCglOVUwgdGVybWluYXRpb24gaW4gdGhlIGZpcnN0IGludF9zaXplX2luX2J5dGVzIChUUkVFX1RZUEUgKGRlY2wpKQoJcmF0aGVyIHRoYW4gVFJFRV9TVFJJTkdfTEVOR1RIIGJ5dGVzLgoKMjAwNi0wNi0yMSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogZ2djLXBhZ2UuYyAoZXh0cmFfb3JkZXJfc2l6ZV90YWJsZSk6IEFkZCB2YXJfYW5uX2QsCgl0cmVlX3NzYV9uYW1lLCBiaXRtYXBfZWxlbWVudCBhbmQgcGhpX25vZGUgd2l0aCA0IGFyZ3VtZW50cwoJc2l6ZXMuCgoyMDA2LTA2LTIxICBSaWNocmFkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKHNpbXBsaWZ5X3VzaW5nX2luaXRpYWxfY29uZGl0aW9ucyk6CglMaW1pdCBpdGVyYXRpb24gb3ZlciB0aGUgZG9taW5hdG9ycy4KCjIwMDYtMDYtMjAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL21pcHMvaXJpczYuaCAoTElCX1NQRUMpOiBBZGQgc3VwcG9ydCBmb3IgLXB0aHJlYWQuCgkoU1VCVEFSR0VUX0NQUF9TUEVDKTogRGVmaW5lIF9SRUVOVEVSQU5UIGlmIC1wdGhyZWFkIHNwZWNpZmllZC4KCjIwMDYtMDYtMjAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCU1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCgkqIGFsbG9jLXBvb2wuaCAoZnJlZV9hbGxvY19wb29sX2lmX2VtcHR5KTogUHJvdG90eXBlIG5ldwoJZnVuY3Rpb24uCgkqIGFsbG9jLXBvb2wuYyAoZnJlZV9hbGxvY19wb29sX2lmX2VtcHR5KTogTmV3IGZ1bmN0aW9uLgoJKiBldC1mb3Jlc3QuaCAoZXRfZnJlZV9wb29scyk6IFByb3RvdHlwZSBuZXcgZnVuY3Rpb24uCgkqIGV0LWZvcmVzdC5jIChldF9mcmVlX3RyZWVfZm9yY2UpOiBGcmVlIHBhcmVudCBvY2N1cnJlbmNlLgoJKGV0X2ZyZWVfcG9vbHMpOiBOZXcgZnVuY3Rpb24uCgkqIGRvbWluYW5jZS5jIChmcmVlX2RvbWluYW5jZV9pbmZvKTogRnJlZSBldC1mb3Jlc3QgYWxsb2MKCXBvb2xzLgoKMjAwNi0wNi0yMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSkgPFZFQ1RPUl9DU1Q+OiBGb3IgdmVjdG9yIGNvbnN0YW50cyB3aXRoCglpbnRlZ2VyIG1vZGVzLCBhdHRlbXB0IHRvIGRpcmVjdGx5IGNvbnN0cnVjdCBhbiBpbnRlZ2VyIGNvbnN0YW50LgoKCSogZm9sZC1jb25zdC5jIChuYXRpdmVfZW5jb2RlX3ZlY3Rvcik6IERldGVybWluZSB0aGUgc2l6ZSBvZiBlYWNoCgllbGVtZW50IGZyb20gdGhlIHZlY3RvciB0eXBlIGluc3RlYWQgb2YgdGhlIGZpcnN0IHZlY3RvciBlbGVtZW50LgoKCSogdHJlZS5jIChidWlsZF9jb25zdHJ1Y3Rvcl9zaW5nbGUpOiBNYXJrIGEgQ09OU1RSVUNUT1IgYXMgY29uc3RhbnQsCglpZiBhbGwgb2YgaXRzIGVsZW1lbnRzL2NvbXBvbmVudHMgYXJlIGNvbnN0YW50LgoJKGJ1aWxkX2NvbnN0cnVjdG9yX2Zyb21fbGlzdCk6IExpa2V3aXNlLgoKMjAwNi0wNi0yMCAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI3MzMxCgkqIHRyZWUtZGF0YS1yZWYuYyAoZnJlZV9kYXRhX3JlZik6IE5ldyBmdW5jdGlvbi4KCShjcmVhdGVfZGF0YV9yZWYpOiBGYWlsIGlmIHRoZSBkYXRhIHJlZmVyZW5jZSBoYXMgdW5rbm93biBhY2Nlc3MKCWZ1bmN0aW9uLgoJKGZyZWVfZGF0YV9yZWZzKTogVXNlIGZyZWVfZGF0YV9yZWYuCgoyMDA2LTA2LTE5ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnbWFpbC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yODA3NQoJKiB0cmVlLWlubGluZS5jIChzZXR1cF9vbmVfcGFyYW1ldGVyKTogU3RyaXAgdXNlbGVzcwoJdHlwZSBjb252ZXJzaW9uIGJlZm9yZSBhZGRpbmcgaXQgdG8gdGhlIElSLgoJKGRlY2xhcmVfcmV0dXJuX3ZhcmlhYmxlKTogTGlrZXdpc2UuCgoyMDA2LTA2LTE5ICBNYXJ0aW4gTWljaGxtYXlyICA8dGJtQGN5cml1cy5jb20+CgoJUFIgYy8yNzE0OQoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBGaXggZ3JhbW1hciBpbiB3YXJuaW5nLgoKMjAwNi0wNi0xOSAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiB0cmVlLmMgKHZhcmlhYmx5X21vZGlmaWVkX3R5cGVfcCk6IFZNIGFyZ3VtZW50cyBkb24ndCBtYWtlIHRoZQoJdHlwZSBhIFZNIHR5cGUuCgoyMDA2LTA2LTE5ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLXNzYS1wcmUuYyAodHJ5X2NvbWJpbmVfY29udmVyc2lvbik6IFN0cmlwIHVzZWxlc3MKCXR5cGUgY29udmVyc2lvbnMgYWZ0ZXIgZm9sZGluZy4KCjIwMDYtMDYtMTkgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGdnYy1wYWdlLmMgKGV4dHJhX29yZGVyX3NpemVfdGFiKTogQWRkIGVudHJpZXMgd2l0aAoJc2l6ZSBvZiBzdHJ1Y3QgZnVuY3Rpb24gYW5kIGJhc2ljX2Jsb2NrLgoJKHNpemVfbG9va3VwKTogRXh0ZW5kIHRvIGNvdmVyIHNpemVzIHVwIHRvIDUxMS4KCShnZ2NfYWxsb2Nfc3RhdCk6IEFkanVzdCB1c2VyLgoJKGdnY19wY2hfY291bnRfb2JqZWN0KTogTGlrZXdpc2UuCgkoZ2djX3BjaF9hbGxvY19vYmplY3QpOiBMaWtld2lzZS4KCShnZ2NfcGNoX3dyaXRlX29iamVjdCk6IExpa2V3aXNlLgoKMjAwNi0wNi0xOSAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jIChpbXBsaWVzX2dlX3ApOiBOZXcgZnVuY3Rpb24uCgkoZGVyaXZlX2NvbnN0YW50X3VwcGVyX2JvdW5kKTogSGFuZGxlIE9QMCAtIENTVCBpbiB1bnNpZ25lZCB0eXBlcwoJY29ycmVjdGx5LgoKMjAwNi0wNi0xOSAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGNvbmZpZy9hdnIvbGliZ2NjLlMgOiBDb3JyZWN0IG15IHdyb25nIHByZXZpb3VzIGNvbW1pdC4KCjIwMDYtMDYtMTkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHRhcmdldC8yNzg2MQoJKiBleHBtZWQuYyAoZXhwYW5kX3NoaWZ0KTogT24gU0hJRlRfQ09VTlRfVFJVTkNBVEVEIHRhcmdldHMsIHdlIG1heQoJaGF2ZSBzdHJpcHBlZCBhIFNVQlJFRyBmcm9tIHRoZSBzaGlmdCBjb3VudCwgc28gd2UgbWF5IG5lZWQgdG8KCWNvbnZlcnRfdG9fbW9kZSBiYWNrIHRvIHRoZSB0eXBlJ3MgbW9kZSBiZWZvcmUgY2FsbGluZyBtYWtlX3RyZWUuCglVc2UgbmV3X2Ftb3VudCBpbnN0ZWFkIG9mIGFtb3VudCB0byBhdm9pZCBleHBhbmRpbmcgYSB0cmVlIHR3aWNlLgoKMjAwNi0wNi0xOSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMjgwNDUKCSogZm9sZC1jb25zdC5jIChvcGVyYW5kX2VxdWFsX3ApOiBDaGVjayBpZiB0aGUgYXJndW1lbnQgdHlwZXMKCWhhdmUgdGhlIHNhbWUgcHJlY2lzaW9uIGJlZm9yZSBzdHJpcHBpbmcgTk9Qcy4KCjIwMDYtMDYtMTkgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8yNzM0MQoJKiB0cmVlLWNmZy5jIChnaW1wbGlmeV92YWwpOiBDYWxsIG1hcmtfbmV3X3ZhcnNfdG9fcmVuYW1lIG9uIHRoZQoJc3RhdGVtZW50IHdlIGdldC4KCSogdHJlZS1jb21wbGV4LmMgKHBhc3NfbG93ZXJfY29tcGxleCk6IFVwZGF0ZSBTTVQgdXNhZ2UuCgoyMDA2LTA2LTE5ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5tZCAoImRvbG9vcF9zaTY0IiwgImRvbG9vcF9zaTMxIiwgImRvbG9vcF9kaSIpOgoJQWRkIGEgbmV3IGFsdGVybmF0aXZlIHRvIHRoZSBjb25zdHJhaW50IHN0cmluZ3MuIEFkZCBtb3ZlIG9mCglvcGVyYW5kIDEgdG8gMyB0byB0aGUgc3BsaXR0ZXIgZGVmaW5pdGlvbi4KCSgiZG9sb29wX3NpX2xvbmciKTogU2Vjb25kIGNvbnRyYWludCBhbHRlcm5hdGl2ZSByZW1vdmVkLgoKMjAwNi0wNi0wOCAgQW5hdG9seSBTb2tvbG92IDxhZXNva0Bwb3N0LnJ1PgoKCSogY29uZmlnL2F2ci9hdnIuaCAoYXZyX2hhdmVfbW92d19scG14X3ApOiBEZWNsYXJlLgoJKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogQWRkIF9fQVZSX0hBVkVfTU9WV19fIGFuZAoJX19BVlJfSEFWRV9MUE1YX18uCgkoQVZSX0hBVkVfTU9WVykgRGVmaW5lLgoJKEFTU0VNQkxFUl9ESUFMRUNUKTogVXNlIEFWUl9IQVZFX01PVlcuCgkoQVNNX1NQRUMpOiBBZGQgYXZyMjUuCgkoTElOS19TUEVDKTogQWRkIGF2cjI1LgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfaGF2ZV9tb3Z3X2xwbXhfcCk6IEFkZC4KCShiYXNlX2FyY2hfcyk6IEFkZCBuZXcgbWVtYmVyICdoYXZlX21vdndfbHBteCcuCgkoYXZyX2FyY2hfdHlwZXMpOiBJbml0ICdoYXZlX21vdndfbHBteCcuCgkoYXZyX21jdV90eXBlcyk6IEFkZCAnYXZyMjUnLiBNb3ZlIGF0dGlueTEzLCBhdHRpbnkyMzEzLCBhdHRpbnkyNCwKCWF0dGlueTQ0LCBhdHRpbnk4NCwgYXR0aW55MjUsIGF0dGlueTQ1LCBhdHRpbnk4NSwgYXR0aW55MjYxLAoJYXR0aW55NDYxLCBhdHRpbnk4NjEgYW5kIGF0ODZyZjQwMSBpbiAnYXZyMjUnIGFyaGl0ZWN0dXJlLgoJKGF2cl9vdmVycmlkZV9vcHRpb25zKTogSW5pdCAnYXZyX2hhdmVfbW92d19scG14X3AnLgoJKG91dHB1dF9tb3ZoaSwgb3V0cHV0X21vdnNpc2YsIGFzaGxzaTNfb3V0LCBhdnJfcnR4X2Nvc3RzKTogVXNlCglBVlJfSEFWRV9NT1ZXLgoJKGF2cl9maWxlX3N0YXJ0KTogRG8gbm90IG91dHB1dCAnLmFyaCcgZGVyZWN0aXZlLgoJKiBjb25maWcvYXZyL2xpYmdjYy5TIChtb3ZfbCk6IFVzZSBfX0FWUl9IQVZFX01PVldfXy4KCShfX2RvX2NvcHlfZGF0YSk6IFVzZSBfX0FWUl9IQVZFX0xQTVhfXy4KCSogY29uZmlnL2F2ci9hdnIubWQgKG1jdV9lbmhhbmNlZCk6IERlbGV0ZS4KCShtY3VfaGF2ZV9tb3Z3KTogRGVmaW5lLgoJKG5lZ3NpMiwgZXh0ZW5kaGlzaTIsIHplcm9fZXh0ZW5kaGlzaTIpOiBVc2UgJ21jdV9oYXZlX21vdncnLgoJKGNhbGxfaW5zbiwgY2FsbF92YWx1ZV9pbnNuKTogVXNlICdjYWxsX2luc24nIGFuZCBfX0FWUl9IQVZFX01PVldfXy4KCSogY29uZmlnL2F2ci90LWF2cihNVUxUSUxJQl9PUFRJT05TLCBNVUxUSUxJQl9ESVJOQU1FUyk6IEFkZCBhdnIyNS4KCShNVUxUSUxJQl9NQVRDSEVTKTogQWRkIGF0dGlueTEzLCBhdHRpbnkyMzEzLCBhdHRpbnkyNCwgYXR0aW55NDQsCglhdHRpbnk4NCwgYXR0aW55MjUsIGF0dGlueTQ1LCBhdHRpbnk4NSwgYXR0aW55MjYxLCBhdHRpbnk0NjEsCglhdHRpbnk4NjEgYW5kIGF0ODZyZjQwMSBkZXZpY2VzLgoKMjAwNi0wNi0xOCAgSmllIFpoYW5nICA8amllLnpoYW5nQGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLmMgKE1BWF9MT09QX0xFTkdUSCk6IERlZmluZSB0byBiZSAyMDQyIGluc3RlYWQKCW9mIDQwOTYuCgoyMDA2LTA2LTE3ICBLYXJsIEJlcnJ5ICA8a2FybEBnbnUub3JnPgoKCSogZG9jL2NwcC50ZXhpLCBkb2MvY3BwaW50ZXJuYWxzLnRleGksIGRvYy9nY2MudGV4aSwKCWRvYy9nY2NpbnQudGV4aSwgZG9jL2luc3RhbGwudGV4aSAoQGRpcmNhdGVnb3J5KTogVXNlCgkiU29mdHdhcmUgZGV2ZWxvcG1lbnQiIGluc3RlYWQgb2YgIlByb2dyYW1taW5nIiwgZm9sbG93aW5nCgl0aGUgRnJlZSBTb2Z0d2FyZSBEaXJlY3RvcnkuCgoyMDA2LTA2LTE3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAobGVnaXRpbWF0ZV90bHNfYWRkcmVzcykKCTxUQVJHRVRfR05VMl9UTFM+OiBBZGQgdHAgYWZ0ZXIgRFRQT0ZGLgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqdGxzX2R5bmFtaWNfZ251Ml9jb21iaW5lXzMyKTogQWRqdXN0LgoJKCp0bHNfZHluYW1pY19nbnUyX2NvbWJpbmVfNjQpOiBMaWtld2lzZS4KCjIwMDYtMDYtMTYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzI3MTE2CgkqIGZvbGQtY29uc3QuYyAobmVnYXRlX2V4cHJfcCk6IERvIG5vdCBpbnRyb2R1Y2UgdW5kZWZpbmVkCglvdmVyZmxvdyBpbiBuZWdhdGluZyBJTlRFR0VSX0NTVHMuCgkoZm9sZF9uZWdhdGVfZXhwcik6IFJlbmFtZSBmcm9tIG5lZ2F0ZV9leHByLiAgUmV2ZXJ0IGxhc3QKCWNoYW5nZSBmb3IgZm9sZGluZyBCSVRfTk9UX0VYUFIuICBDaGFuZ2Ugc2VtYW50aWNzIHRvCglyZXR1cm4gTlVMTF9UUkVFIGZvciBub24tc2ltcGxpZmllZCBuZWdhdGlvbnMuICBEbyBub3QKCXN0cmlwIHR5cGUgY29udmVyc2lvbnMgYW5kIHVuaWZ5IHR5cGUgaGFuZGxpbmcuCgkobmVnYXRlX2V4cHIpOiBOZXcgZnVuY3Rpb24sIHdyYXAgYXJvdW5kIGZvbGRfbmVnYXRlX2V4cHIKCWJ1dCBlbnN1cmUgYnVpbGRpbmcgYSB0cmVlIGFsd2F5cy4gIFN0cmlwIHR5cGUgY29udmVyc2lvbnMKCWhlcmUsIGZvbGQgdG8gcmVzdWx0IHR5cGUuCgkoZm9sZF91bmFyeSk6IFVzZSBmb2xkX25lZ2F0ZV9leHByIGZvciBmb2xkaW5nIE5FR0FURV9FWFBSLgoKMjAwNi0wNi0xNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNzgwMgoJKiByZWctc3RhY2suYyAoc3Vic3Rfc3RhY2tfcmVncyk6IEhhbmRsZSBub3JldHVybiBmdW5jdGlvbiBjYWxscwoJdGhhdCAod291bGQpIHJldHVybiB0aGVpciByZXN1bHRzIGluIHN0YWNrIHJlZ2lzdGVycy4KCjIwMDYtMDYtMTYgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCVJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF90cnV0aG9wKTogT25seSByZXR1cm4gbmV3IHRyZWUgbm9kZSBpZgoJd2UgY2Fub25pY2FsaXplZCBzb21ldGhpbmcuCgoyMDA2LTA2LTE2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBmdW5jdGlvbi5oIChlbnVtIGZ1bmN0aW9uX2ZyZXF1ZW5jeSk6IE1vdmUgZGVjbGFyYXRpb24KCW91dCBvZiBzdHJ1Y3QgZnVuY3Rpb24uCgkoc3RydWN0IGZ1bmN0aW9uKTogTW92ZSBib29sIGZpZWxkcyBhbmQgdGhlIGVudW0gdG8gdGhlIGJpdGZpZWxkCglzZWN0aW9uLiAgUmVvcmRlciBlbGVtZW50cyB0byBhdm9pZCBwYWRkaW5nLiAgUmVtb3ZlIHVudXNlZAoJZmllbGRzIGxlZnQgb3ZlciBmcm9tIHRoZSBSVEwgaW5saW5lciByZW1vdmFsLgoJKiBmdW5jdGlvbi5jIChmcmVlX2FmdGVyX2NvbXBpbGF0aW9uKTogRG8gbm90IHplcm8gcmVtb3ZlZCBmaWVsZHMuCgkqIE1ha2VmaWxlLmluIChpcGEtcmVmZXJlbmNlLm8pOiBBZGQgJChGVU5DVElPTl9IKSBkZXBlbmRlbmN5LgoJKGlwYS10eXBlLWVzY2FwZS5vKTogTGlrZXdpc2UuCgoyMDA2LTA2LTE2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBjZ3JhcGguaCAoc3RydWN0IGNncmFwaF9sb2NhbF9pbmZvKTogVHVybiBib29sIGVsZW1lbnRzCglpbnRvIGEgYml0ZmllbGQuCgkoc3RydWN0IGNncmFwaF9ub2RlKTogTGlrZXdpc2UuCgkoc3RydWN0IGNncmFwaF92YXJwb29sX25vZGUpOiBMaWtld2lzZS4KCjIwMDYtMDYtMTUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF90cnV0aF9ub3RfZXhwcik6IFJlbmFtZSBmcm9tCglpbnZlcnRfdHJ1dGh2YWx1ZS4gIEdpdmUgaXQgZm9sZF8qIHNlbWFudGljcyB0byBhdm9pZAoJZ2VuZXJhdGluZyBnYXJiYWdlLgoJKGludmVydF90cnV0aHZhbHVlKTogTmV3IGZ1bmN0aW9uLiAgV3JhcHBlciBhcm91bmQKCWZvbGRfdHJ1dGhfbm90X2V4cHIuCgkob3B0aW1pemVfbWlubWF4X2NvbXBhcmlzb24pOiBBdm9pZCBjcmVhdGluZyBnYXJiYWdlLgoJKGZvbGRfdW5hcnkpOiBVc2UgZm9sZF90cnV0aF9ub3RfZXhwciBmb3IgZm9sZGluZwoJVFJVVEhfTk9UX0VYUFIuCgkoZm9sZF90ZXJuYXJ5KTogUmVwbGFjZSB1c2VzIG9mIGludmVydF90cnV0aHZhbHVlIHdpdGgKCWZvbGRfdHJ1dGhfbm90X2V4cHIgd2hlcmUgYXBwbGljYWJsZS4KCSogdHJlZS5oIChmb2xkX3RydXRoX25vdF9leHByKTogUHJvdG90eXBlLgoKMjAwNi0wNi0xNiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI3NzgxCgkqIE1ha2VmaWxlLmluIChpcGEtcHVyZS1jb25zdC5vKTogQWRkICQoVEFSR0VUX0gpIGRlcGVuZGVuY3kuCgkqIGlwYS1wdXJlLWNvbnN0LmMgKHRhcmdldC5oKTogSW5jbHVkZS4KCShhbmFseXplX2Z1bmN0aW9uKTogRG8gbm90IGFuYWx5emUgZnVuY3Rpb25zIHRoYXQgZG8gbm90CgliaW5kIGxvY2FsbHkuCgoyMDA2LTA2LTE1ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNzc5MwoJKiB0cmVlLWRmYS5jIChyZWZlcmVuY2VkX3ZhcnNfZHVwX2xpc3QpOiBSZW1vdmUuCgkoZmluZF9yZWZlcmVuY2VkX3ZhcnMpOiBSZW1vdmUgYXNzZXJ0LgoJKHJlZmVyZW5jZWRfdmFyX2NoZWNrX2FuZF9pbnNlcnQpOiBSZXBsYWNlIGR1cCBsaXN0IHdpdGggYXNzZXJ0LgoJKiB0cmVlLXNzYS5jIChkZWxldGVfdHJlZV9zc2EpOiBSZW1vdmUgZHVwIGxpc3QgcHJvY2Vzc2luZy4KCSogdHJlZS1mbG93LmggKHJlZmVyZW5jZWRfdmFyc19kdXBfbGlzdCk6IFJlbW92ZSBleHRlcm4gZGVjbC4KCjIwMDYtMDYtMTUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKGFsaWFzX2dldF9uYW1lKTogQXZvaWQgY3JlYXRpbmcKCWV4dHJhIHVudXNlZCBpZGVudGlmaWVycyBpZiBub3QgZHVtcGluZy4KCShjcmVhdGVfdmFyaWFibGVfaW5mb19mb3IpOiBMaWtld2lzZS4KCjIwMDYtMDYtMTUgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtc3NhLWxvb3Atbml0ZXIuYyAoaW1wbGllc19ub25uZWdhdGl2ZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGRlcml2ZV9jb25zdGFudF91cHBlcl9ib3VuZCk6IERlcml2ZSBtb3JlIHByZWNpc2UgdXBwZXIgYm91bmQgaW4KCWNvbW1vbiBjYXNlcy4gIFJldHVybiB0eXBlIGNoYW5nZWQgdG8gZG91YmxlX2ludC4KCShyZWNvcmRfZXN0aW1hdGUpOiBSZWZsZWN0IHRoZSBjaGFuZ2VkIHJldHVybiB0eXBlIG9mCglkZXJpdmVfY29uc3RhbnRfdXBwZXJfYm91bmQuCgkqIGRvdWJsZS1pbnQuYyAoZG91YmxlX2ludF96ZXh0LCBkb3VibGVfaW50X3NleHQpOiBGaXguCgoyMDA2LTA2LTE1ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY29uZmlndXJlLmFjIChDRkxBR1MpOiBHZXQgdGhlbSBmcm9tIHRoZSB0b3BsZXZlbCBvciBmcm9tIHRoZQoJY29uZmlndXJlIGludm9jYXRpb24uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogTWFrZWZpbGUuaW4gKENGTEFHUyk6IFN1YnN0aXR1dGUgdmFsdWUgcHJvdmlkZWQgYnkgY29uZmlndXJlLgoKMjAwNi0wNi0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjY1NTkKCSogYy1jb21tb24uaCAoY19maW5pc2hfb21wX2F0b21pYyk6IEFkanVzdCBkZWNsYXJhdGlvbi4KCSogYy1vbXAuYyAoY19maW5pc2hfb21wX2F0b21pYyk6IFJldHVybiB0aGUgZXhwcmVzc2lvbiB0byBwZXJmb3JtLAoJcmF0aGVyIHRoYW4gY2FsbGluZyBhZGRfc3RtdCBvbiBpdC4KCSogYy1wYXJzZXIuYyAoY19wYXJzZXJfb21wX2F0b21pYyk6IEFkanVzdCBhY2NvcmRpbmdseS4KCjIwMDYtMDYtMTQgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNzk1OQoJKiByZWxvYWQxLmMgKHJlbG9hZCk6IFJlbW92ZSByZWdpc3RlcnMgcmV0dXJuZWQgYnkgdXBkYXRlX2VsaW1pbmFibGVzCglmcm9tIHVzZWRfc3BpbGxfcmVncy4KCjIwMDYtMDYtMTMgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL20zMmMvbXVsZGl2Lm1kIChtdWxwc2kzKTogRXhwZWN0IGFyYml0cmFyeSBjb25zdGFudHMuCgoyMDA2LTA2LTEzICBDYXJsb3MgTydEb25lbGwgIDxjYXJsb3NAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBEZWZpbmUgSFRNTFNfQlVJTEQsIEhUTUxTX0lOU1RBTEwsCglodG1sX19zdHJpcF9kaXIsIGh0bWxfX21rZGlyX3AuIEVuaGFuY2UgaW5zdGFsbC1odG1sIHRhcmdldC4KCSogY29uZmlndXJlLmFjOiBBQ19TVUJTVCBkYXRhcm9vdGRpciwgZG9jZGlyIGFuZCBodG1sZGlyLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA2LTA2LTEzICBGYXJpYm9yeiBKYWhhbmlhbiA8ZmphaGFuaWFuQGFwcGxlLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9jb25kX2V4cHJfd2l0aF9jb21wYXJpc29uKTogQ2hlY2sgZm9yCglPYmplY3RpdmUtQysrIGFzIGxhbmd1YWdlIGluIGRlY2lkaW5nIENPTkRfRVhQUiB0cmFuc2Zvcm1hdGlvbi4KCjIwMDYtMDYtMDYgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdC5jb20+CgoJUFIgdGFyZ2V0LzI4MDE0OgoJKiBjb25maWcvc2gvdC1zaCAoTElCMUFTTUZVTkNTKTogQWRkIF91ZGl2X3Fybm5kMTYKCSogY29uZmlnL3NoL3NoLmMgKHByaW50X29wZXJhbmQpOiBBZGQgIVNITUVESUEgZnVuY3Rpb25hbGl0eSB0byAnTScuCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuaCAoU0wsIFNMMSk6IERlZmluZS4KCSogY29uZmlnL3NoL2xpYjFmdW5jcy5hc20gKF9fdWRpdl9xcm5uZDE2KTogTmV3IGhpZGRlbiBmdW5jdGlvbi4KCSogbG9uZ2xvbmcuaCAoX19zaF9fKTogRGVmaW5lIHVtdWxfcHBtbSwgdWRpdl9xcm5uZCBhbmQgc3ViX2RkbW1zcy4KCSogY29uZmlnL3NoL3Qtc2ggKCQoVCl1bndpbmQtZHcyLU9zLTQtMjAwLm8pOiBOZXcgcnVsZS4KCShPQkpTX09zXzRfMjAwKTogTmV3IHZhcmlhYmxlLgoJKCQoVClsaWJnY2MtT3MtNC0yMDAuYSk6IFVzZSBpdC4KCSogc2gubWQgKHVkaXZzaTMpOiBGb3IgVEFSR0VUX0RJVklERV9DQUxMX1RBQkxFLCBhdm9pZCBmdW5jdGlvbiBjYWxsCgl3aGVuIGRpdmlkaW5nIDEgYW5kL29yIGJ5IDAuCgoyMDA2LTA2LTEzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYyAoSEFTX01DT05URVhUX1RfVU5ERVJTQ09SRVMpOiBJbmNsdWRlIDxzeXMvc2lnbmFsLmg+CgliZWZvcmUgPHVjb250ZXh0Lmg+IHRvIGRlZmluZSBzaWdzZXRfdCByZXF1aXJlZCBieSA8c3lzL3Vjb250ZXh0Lmg+LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA2LTA2LTEzICBKaWUgWmhhbmcgIDxqaWUuemhhbmdAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL2JmaW4uYyAoYmZpbl9yZW9yZ19sb29wcyk6IE9ubHkgY2FsbCByZWNvZ19tZW1vaXplZCAoKQoJZm9yIHJlYWwgaW5zdHJ1Y3Rpb24uCgoyMDA2LTA2LTEzICBNYXhpbSBLdXZ5cmtvdiAgPG1rdXZ5cmtvdkBpc3ByYXMucnU+CgoJUFIgbWlkZGxlLWVuZC8yNjgwNwoJKiBoYWlmYS1zY2hlZC5jIChjaGVja19jZmcpOiBIYW5kbGUgc3BlY2lhbCBjYXNlLgoKMjAwNi0wNi0xMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCglQUiBkZWJ1Zy8yNjc1NAoJKiBnaW1wbGlmeS5jIChkZWNsYXJlX3RtcF92YXJzKTogUmVuYW1lIGludG8gZGVjbGFyZV92YXJzLgoJQWRkIGRlYnVnX2luZm8gcGFyYW1ldGVyLiAgQ2hhaW4gdGhlIHZhcnMgdG8gdGhlIEJMT0NLIGluc3RlYWQKCW9mIHRoZSBCSU5EX0VYUFIgaWYgZGVidWcgaW5mbyBhcmUgcmVxdWVzdGVkIGZvciB0aGVtLgoJKHBvcF9naW1wbGlmeV9jb250ZXh0KTogQWRqdXN0IGZvciBhYm92ZSBjaGFuZ2UuCgkoZ2ltcGxlX2FkZF90bXBfdmFyKTogTGlrZXdpc2UuCgkqIHRyZWUtZ2ltcGxlLmggKGRlY2xhcmVfdG1wX3ZhcnMpOiBSZW5hbWUgaW50byBkZWNsYXJlX3ZhcnMuCglBZGQgYm9vbCBwYXJhbWV0ZXIuCgkqIHRyZWUtbmVzdGVkLmMgKGNvbnZlcnRfbm9ubG9jYWxfcmVmZXJlbmNlKTogQWRqdXN0IGZvciBhYm92ZSBjaGFuZ2UuCgkoY29udmVydF9sb2NhbF9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCShnZXRfbG9jYWxfZGVidWdfZGVjbCk6IFNldCBERUNMX0lHTk9SRURfUCBvbiB0aGUgb3JpZ2luYWwgdmFyaWFibGUuCgkoZmluYWxpemVfbmVzdGluZ190cmVlXzEpOiBSZXF1ZXN0IHRoYXQgZGVidWcgaW5mbyBiZSBlbWl0dGVkCglmb3IgZGVidWdfdmFyX2NoYWluLgoKMjAwNi0wNi0xMyAgTWF4aW0gS3V2eXJrb3YgIDxta3V2eXJrb3ZAaXNwcmFzLnJ1PgoKCSogaGFpZmEtc2NoZWQuYyAodW5saW5rX290aGVyX25vdGVzLCB1bmxpbmtfbGluZV9ub3Rlcyk6IEZpeCB0aGUgcGF0Y2gKCWZvciBQUiB0YXJnZXQvMjc4NjMuCgoyMDA2LTA2LTEzICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8yNzUzNgoJKiBleGNlcHQuYyAob3V0cHV0X3R0eXBlKTogRXhwYW5kIHR5cGUgd2l0aCBFWFBBTkRfSU5JVElBTElaRVIuCgoyMDA2LTA2LTEzICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjc4MzAKCSogdHJlZS1pbmxpbmUuYyAoY29weV9ib2R5X3IpOiBGb3IgY29weWluZyB0aGUgb3BlcmFuZAoJb2YgYW4gQUREUl9FWFBSIG1ha2Ugc3VyZSB0byBmb2xkICYqIGFmdGVyd2FyZHMuCgoyMDA2LTA2LTEyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfZXhwcik6IFRyZWF0IFZJRVdfQ09OVkVSVF9FWFBSIGxpa2Ugb3RoZXIKCWx2YWx1ZXMgaW4gdGhlIGZiX25vbmUgY2FzZSB3aXRoIHNpZGUtZWZmZWN0cy4KCjIwMDYtMDYtMTIgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS1mbG93Lmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJY29tcHV0ZV9waGlfYXJnX29uX2V4aXQuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKHByb3RlY3RfbG9vcF9jbG9zZWRfc3NhX2Zvcm1fdXNlLAoJcHJvdGVjdF9sb29wX2Nsb3NlZF9zc2FfZm9ybSwgY29tcHV0ZV9waGlfYXJnX29uX2V4aXQpOgoJUmVtb3ZlLgoKMjAwNi0wNi0xMiAgTWFyayBTaGlud2VsbCAgPHNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9yZXR1cm5fYWRkcik6IE9ubHkgdXNlCglmcmFtZV9wb2ludGVyX3J0eCB3aGVuIGNvdW50ID09IDAgYW5kIHdlIGFyZSBleHBhbmRpbmcKCV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcy4KCjIwMDYtMDYtMTIgIEZyZWQgRmlzaCAgPGZuZkBzcGVjaWZpeC5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZmlsZV9zdGFydCk6IENyZWF0ZSBzcGVjaWFsIHNlY3Rpb24KCSIuZ2NjX2NvbXBpbGVkX2xvbmdYWCIgZm9yIG82NCBBQkkgYXMgd2VsbCBhcyBFQUJJLgoKMjAwNi0wNi0xMSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCglQUiBtaWRkbGUtZW5kLzI3OTQ4CgkqIHN0b3ItbGF5b3V0LmMgKHBsYWNlX2ZpZWxkKTogUmVtb3ZlIGNoZWNrIGZvcgoJcmVtYWluaW5nX2luX2FsaWdubWVudCB3aGVuIGFsaWduaW5nIGF0IHRoZSBlbmQgb2YgYSBydW4uCgoyMDA2LTA2LTExICBFcmljIENocmlzdG9waGVyICA8ZWNocmlzdG9AYXBwbGUuY29tPgoKCVBSIDI3NTQyCgkqIGRvYy9leHRlbmQudGV4aSAoU3RydWN0dXJlLVBhY2tpbmcgUHJhZ21hcyk6IERvY3VtZW50IG1zX3N0cnVjdAoJcHJhZ21hLgoKMjAwNi0wNi0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgdGFyZ2V0LzI3ODU4CglSZXZlcnQgaW5jb3JyZWN0IGZpeCBmb3IgUFIgdGFyZ2V0LzI3MTU4CgkyMDA2LTA1LTA4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc190b3BsZXYpOiBPbmx5IHJldHVybiB0aGUgc2ltcGxpZmllZCBTVUJSRUcKCW9mIGEgcmVnX2VxdWl2X2NvbnN0YW50IGlmIHRoZSByZXN1bHQgaXMgYSBsZWdpdGltYXRlIGNvbnN0YW50LgoKMjAwNi0wNi0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgdGFyZ2V0LzI3MTU4CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKGNvbnN0X3ZlY3Rvcl9lbHRfYXNfaW50KTogTmV3IGZ1bmN0aW9uIHRvCglleHRyYWN0IGEgQ09OU1RfVkVDVE9SIGVsZW1lbnQgYW5kIGludGVycHJldCBpdCBhcyBhbiBpbnRlZ2VyLgoJKHZzcGx0aXNfY29uc3RhbnQpOiBVc2UgY29uc3RfdmVjdG9yX2VsdF9hc19pbnQgaW5zdGVhZCBvZiB0aGUKCW1hY3JvIENPTlNUX1ZFQ1RPUl9FTFQgaW4gb3JkZXIgdG8gaGFuZGxlIEZQIHZlY3RvciBtb2Rlcy4KCSogY29uZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1kIChlYXN5X3ZlY3Rvcl9jb25zdCk6IENvbnNpZGVyCglmbG9hdGluZyBwb2ludCBBTFRJVkVDX1ZFQ1RPUl9NT0RFcyB2aWEgZWFzeV9hbHRpdmVjX2NvbnN0YW50LgoKMjAwNi0wNi0xMSAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJUFIgbWlkZGxlLWVuZC8yNzk0MgoJKiBzdG9yLWxheW91dC5jICh1cGRhdGVfYWxpZ25tZW50X2Zvcl9maWVsZCk6IERvbid0IGFkZCBleHRyYQoJYWxpZ25tZW50IGZvciBwYWNrZWQgbm9uLWJpdGZpZWxkIGZpZWxkcyBpbiBtc19iaXRmaWVsZF9sYXlvdXRfcAoJY29kZS4KCjIwMDYtMDYtMDkgIFJhbGYgQ29yc2VwaXVzICA8cmFsZi5jb3JzZXBpdXNAcnRlbXMub3JnPgoKCSogY29uZmlnL21pcHMvdC1ydGVtczogQWRkIEVML0VCIG11bHRpbGliIHZhcmlhbnRzLgoKMjAwNi0wNi0wOSAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjLXR5cGVjay5jIChjX2JlZ2luX3ZtX3Njb3BlKTogRml4IGZpbGVfc2NvcGUgcHJvY2Vzc2luZy4KCjIwMDYtMDYtMDkgIERhdmlkIERhbmV5ICA8ZGRhbmV5QGF2dHJleC5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBBZGQgYmludXRpbHMgdmVyc2lvbiByZWNvbW1lbmRhdGlvbiBmb3IgbWlwcy0qLSouCgoyMDA2LTA2LTA5ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IFVuc2V0IGZvcmNlX3JlbG9hZCBmb3IgJ1gnIGNvbnN0cmFpbnQuCgoyMDA2LTA2LTA5ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjY5OTgKCSogdHJlZS12cnAuYyAoZXh0cmFjdF9yYW5nZV9mcm9tX3VuYXJ5X2V4cHIpOiBGb3IgTkVHQVRFX0VYUFIKCW9mIHNpZ25lZCB0eXBlcywgb25seSBUWVBFX01JTl9WQUxVRSBpcyBzcGVjaWFsLCBidXQgZm9yIGJvdGgsCgltaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlLiAgTGlrZXdpc2UgVlJfQU5USV9SQU5HRSBpcyBzcGVjaWFsCglpbiB0aGlzIGNhc2UsIGFzIGlzIC1md3JhcHYuCgoyMDA2LTA2LTA4ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCglQUiB0YXJnZXQvMjY0MjcKCSogY29uZmlnL2Rhcndpbi5jIChkYXJ3aW5fYXNtX291dHB1dF9hbmNob3IpOiBEaXNhYmxlCgktZnNlY3Rpb24tYW5jaG9ycyBvbiBkYXJ3aW4gZm9yIG5vdy4KCSogY29uZmlnL2Rhcndpbi5oIChUQVJHRVRfQVNNX09VVFBVVF9BTkNIT1IpOiBMaWtld2lzZS4KCSogcnM2MDAwL3JzNjAwMC5jIChvcHRpbWl6YXRpb25fb3B0aW9ucyk6IExpa2V3aXNlLgoKMjAwNi0wNi0wOCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiB0YXJnZXQvMjc0MjEKCSogY29uZmlnL2kzODYvaTM4Ni5jIChjbGFzc2lmeV9hcmd1bWVudCk6IFNraXAgZmllbGRzIHdpdGggaW52YWxpZAoJdHlwZXMgaW4gdW5pb25zLgoKMjAwNi0wNi0wOCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCSogY3NlLmMgKGZsdXNoX2hhc2hfdGFibGUpOiBVc2UgVk9JRG1vZGUgdG8gaW52YWxpZGF0ZSBhIFJFRy4KCShjc2VfaW5zbik6IExpa2V3aXNlIGZvciB0aGUgc3RhY2tfcG9pbnRlcl9ydHguCgoyMDA2LTA2LTA4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHRyZWUtc3NhLWRvbS5jIChyZWNvcmRfY29uZGl0aW9ucyk6IE9ubHkgcmVjb3JkICJ1bm9yZGVyZWQiCgljb25kaXRpb25zIGZyb20gZmxvYXRpbmcgcG9pbnQgY29tcGFyaXNvbnMuCgoyMDA2LTA2LTA4ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIG1pZGRsZS1lbmQvMjc3MzMKCSogZXhwbWVkLmMgKHN0cnVjdCBhbGdfaGFzaF9lbnRyeSk6IEZpeCB0eXBlIG9mIGZpZWxkIFQKCXRvIG1hdGNoIHN5bnRoX211bHQgYXJndW1lbnQuCgkoTlVNX0FMR19IQVNIX0VOVFJJRVMpOiBNYWtlIGl0IGJpZ2dlciBmb3IgNjQtYml0IEhPU1RfV0lERV9JTlQuCgoyMDA2LTA2LTA4ICBNYXhpbSBLdXZ5cmtvdiAgPG1rdXZ5cmtvdkBpc3ByYXMucnU+CgoJUFIgdGFyZ2V0LzI3ODYzCgkqIGhhaWZhLXNjaGVkLmMgKHVubGlua19vdGhlcl9ub3RlcywgdW5saW5rX2xpbmVfbm90ZXMpOiBVcGRhdGUgYmFzaWMKCWJsb2NrIGJvdW5kYXJpZXMuCgoyMDA2LTA2LTA4ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8yNzExNgoJKiBmb2xkLWNvbnN0LmMgKG5lZ2F0ZV9leHByX3ApOiBXZSBjYW4gbmVnYXRlIEJJVF9OT1RfRVhQUgoJb25seSwgaWYgb3ZlcmZsb3cgaXMgZGVmaW5lZCBhbmQgbm90IHRyYXBwaW5nLgoJKG5lZ2F0ZV9leHByKTogTGlrZXdpc2UuCgoyMDA2LTA2LTA3ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjc4NzIKCSogdHJlZS1zc2EtbG9vcC1tYW5pcC5jICh0cmVlX3Vucm9sbF9sb29wKTogU2V0IEVER0VfSVJSRURVQ0lCTEVfTE9PUAoJZmxhZyBvbiB0aGUgbmV3IGV4aXQgZWRnZSBvZiB0aGUgdW5yb2xsZWQgbG9vcC4KCjIwMDYtMDYtMDcgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI2NDQ5CgkqIGxvb3AtaW52YXJpYW50LmMgKG1vdmVfaW52YXJpYW50X3JlZyk6IEZhaWwgaWYgZm9yY2Vfb3BlcmFuZCBmYWlscy4KCjIwMDYtMDYtMDcgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzI3NzkzCgkqIHRyZWUtZGZhLmMgKHJlZmVyZW5jZWRfdmFyc19kdXBfbGlzdCk6IE5ldy4gIExpc3Qgb2YgZHVwbGljYXRlCglyZWZlcmVuY2VkX3ZhcmlhYmxlcyB3aXRoIG1hdGNoaW5nIERFQ0xfVUlEJ3MuCgkoZmluZF9yZWZlcmVuY2VkX3ZhcnMpOiBNYWtlIHN1cmUgZHVwbGljYXRlIGxpc3QgaXMgZW1wdHkgdG8gc3RhcnQuCgkocmVmZXJlbmNlZF92YXJfcCk6IFJlbW92ZS4KCShyZWZlcmVuY2VkX3Zhcl9jaGVja19hbmRfaW5zZXJ0KTogUmVuYW1lZCBmcm9tIHJlZmVyZW5jZWRfdmFyX2luc2VydC4KCUNoZWNrIGlmIHZhciBpcyBpbiB0aGUgbGlzdCwgYW5kIGFkZCBpZiBuZWVkZWQuICBVcGRhdGUgdGhlIGR1cGxpY2F0ZQoJbGlzdCBpZiBhIGRpZmZlcmVudCB2YXIgaXMgaW4gdGhlIGxpc3Qgd2l0aCB0aGUgc2FtZSBERUNMX1VJRC4KCShhZGRfcmVmZXJlbmNlZF92YXIpOiBDYWxsIHJvdXRpbmUgdG8gY2hlY2sgYW5kIGluc2VydC4KCSogdHJlZS1zc2EuYyAoZGVsZXRlX3RyZWVfc3NhKTogQ2xlYXIgdmFyX2FubidzIG9uIGR1cGxpY2F0ZXMuCgkqIHRyZWUtZmxvdy5oIChyZWZlcmVuY2VkX3ZhcnNfZHVwX2xpc3QpOiBFeHRlcm5hbCBkZWNsYXJhdGlvbi4KCjIwMDYtMDYtMDcgIEZyZWQgRmlzaCAgPGZuZkBzcGVjaWZpeC5jb20+CgoJKiBjb25maWcvbWlwcy90LWVsZiAoTVVMVElMSUJfTUFUQ0hFUyk6IENvbWJpbmUgdHdvIGVudHJpZXMKCWludG8gc2luZ2xlIGVudHJ5LgoKMjAwNi0wNi0wNyAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiB0YXJnZXQvMjczOTAKCSogcmVnLXN0YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogUmVvcmRlciByZXNldHRpbmcgb2YKCXRoZSBpbWFnaW5hcnkgYW5kIHJlYWwgcGFydHMgb2YgYSBjbG9iYmVyZWQgcmVnaXN0ZXIuCglFbWl0IGluc24gdG8gc2V0IHRoZSBpbWFnaW5hcnkgcGFydC4KCjIwMDYtMDYtMDYgIFBldGVyIExlbWllc3pld3NraSAgPGxlbWllQHVzLmlibS5jb20+CgoJKiBjb25maWcvczM5MC90LXRwZiAoTElCMkFEREVIKTogSW5jbHVkZSB1bndpbmQtZHcyLWZkZS1nbGliYy5jCglpbiBsaWV1IG9mIHVud2luZC1kdzItZmRlLmMuCgoyMDA2LTA2LTA2ICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CgoJKiBjb25maWcvaTM4Ni9taW5ndzMyLmggKEdPTVBfU0VMRl9TUEVDUyk6IERlZmluZS4KCjIwMDYtMDYtMDYgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCglQUiB0YXJnZXQvMjc4NDIKCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChVTlNQRUNfVlNMVyk6IFJlbW92ZS4KCSgiYWx0aXZlY192c3BsdGlzd192NHNmIiwgImFsdGl2ZWNfdnNsd192NHNmIik6IFJlbW92ZS4KCSgibXVsdjRzZjMiLCAiYWJzdjRzZjMiLCAibmVndjRzZjMiKTogQWRhcHQgdXNlcnMgdG8gdXNlCglWNFNJbW9kZSB0ZW1wb3JhcmllcyBhbmQgb3BlcmF0aW9ucyBpbnN0ZWFkLgoKMjAwNi0wNi0wNiAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy90LWxpbnV4NjQgKHRwLWJpdC5jKTogQXBwZW5kIHRvIHRwLWJpdC5jLCBub3QKCWRwLWJpdC5jLgoKMjAwNi0wNi0wNiAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVuYW1lIHRvIGh0bWxkaXIgdG8gYnVpbGRfaHRtbGRpciB0byBhdm9pZAoJaW5zdGFsbGluZyBkdXJpbmcgYnVpbGQuCgoyMDA2LTA2LTA2ICBNYXhpbSBLdXZ5cmtvdiAgPG1rdXZ5cmtvdkBpc3ByYXMucnU+CgoJKiBwYXJhbXMuZGVmIChQQVJBTV9NQVhfU0NIRURfRVhURU5EX1JFR0lPTlNfSVRFUlMpOiBDaGFuZ2UgZGVmYXVsdAoJdmFsdWUgdG8gMC4KCSogZG9jL2ludm9rZS50ZXhpIChtYXgtc2NoZWQtZXh0ZW5kLXJlZ2lvbnMtaXRlcnMpOiBEb2N1bWVudC4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChwYXJhbXMuaCk6IE5ldyBoZWFkZXIuCgkoaWE2NF9vcHRpbWl6YXRpb25fb3B0aW9ucyk6IE5ldyBmdW5jdGlvbiB0byBhZGp1c3QgcGFyYW1ldGVycy4KCSogY29uZmlnL2lhNjQvaWE2NC1wcm90b3MuaCAoaWE2NF9vcHRpbWl6YXRpb25fb3B0aW9ucyk6IE5ldyBwcm90b3R5cGUuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoT1BUSU1JWkFUSU9OX09QVElPTlMpOiBOZXcgbWFjcm8uCgkqIGNvbmZpZy9pYTY0L3QtaWE2NCAoaWE2NC5vKTogQWRkIGRlcGVuZGVuY2UgZnJvbSBwYXJhbXMuaCAuCgoyMDA2LTA2LTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHN0b3ItbGF5b3V0LmMgKGRlYnVnX3JsaSk6IEZpeCBhIHR5cG8gaW4gYSBkZWJ1ZyBtZXNzYWdlLgoKMjAwNi0wNi0wNSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgdGFyZ2V0LzI3MDUxCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaWE2NF9zZWxlY3RfcnR4X3NlY3Rpb24pOiBDaGVjayBUQVJHRVRfTk9fU0RBVEEuCgoyMDA2LTA2LTA1ICBEb3JpdCBOdXptYW4gIDxkb3JpdEBpbC5pYm0uY29tPgoJICAgIFZpY3RvciBLYXBsYW5za3kgIDx2aWN0b3JrQGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjYzNjAKCSogdHJlZS12ZWN0b3JpemVyLmMgKGRlc3Ryb3lfbG9vcF92ZWNfaW5mbyk6IFJlbW92ZSAoZGVhZCkgcGF0dGVybgoJc3RtdHMuCgoyMDA2LTA2LTA0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBtaWRkbGUtZW5kLzI3MzgyCgkqIGMtY29tbW9uLmMgKGNfY29tbW9uX3RydXRodmFsdWVfY29udmVyc2lvbik6IEV4cGxpY2l0bHkgY2hlY2sKCWZvciBMQUJFTF9ERUNMIGJlZm9yZSBjYWxsaW5nIERFQ0xfV0VBSy4KCglQUiBjLzI3MTUwCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IExpa2V3aXNlLCBleHBsaWNpdGx5IGNoZWNrIGZvcgoJTEFCRUxfREVDTCBhbmQgUEFSTV9ERUNMLgoKMjAwNi0wNi0wNSAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYy8yNTE2MQoJUFIgYy8yNzAyMAoJKiBjLWRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEaXNhbGxvdyB2YXJpYWJseSBtb2RpZmllZCB0eXBlcyBhdAoJZmlsZSBzY29wZS4gIEF2b2lkIG1hcmtpbmcgc2hhcmVkIGFycmF5IHR5cGUgb2YgY29uc3RhbnQgc2l6ZSBhcwoJVkxBLgoKMjAwNi0wNi0wNCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjc2MDEKCSogYy1jb21tb24uYyAoZm9sZF9vZmZzZXRvZl8xKTogSGFuZGxlIHN0YXRpYyBtZW1iZXJzLgoKMjAwNi0wNi0wNCBFcmljIENocmlzdG9waGVyIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBzdG9yLWxheW91dC5jIChzdGFydF9yZWNvcmRfbGF5b3V0KTogSW5pdGlhbGl6ZSByZW1haW5pbmdfaW5fYWxpZ25tZW50LgoJKGRlYnVnX3JsaSk6IE91dHB1dCB2YWx1ZSBmb3IgcmVtYWluaW5nX2luX2FsaWdubWVudC4KCSh1cGRhdGVfYWxpZ25tZW50X2Zvcl9maWVsZCk6IFVuY29uZGl0aW9uYWxpemUKCW1zX2JpdGZpZWxkX2xheW91dF9wIGNvZGUuIEhhbmRsZSBub24tYml0ZmllbGQgZmllbGRzLiBSZW1vdmUKCWV4dHJhIGFsaWdubWVudCBjb2RlLgoJKHBsYWNlX2ZpZWxkKTogRG9uJ3QgcmVhbGlnbiBpZiBtc19iaXRmaWVsZF9sYXlvdXRfcC4gVW5jb25kaXRpb25hbGl6ZQoJbXNfYml0ZmllbGRfbGF5b3V0X3AgY29kZS4gUmV3cml0ZSBoYW5kbGluZyBvZiBzdHJ1Y3R1cmUgZmllbGRzLgoJKiB0cmVlLmggKHJlY29yZF9sYXlvdXRfaW5mb19zKTogUmVtb3ZlIHByZXZfcGFja2VkLgoJKiBkb2MvZXh0ZW5kLnRleGkgKG1zX3N0cnVjdCk6IEFkZCBkb2N1bWVudGF0aW9uIG9mIGZvcm1hdC4KCjIwMDYtMDYtMDQgIE1hcmsgU2hpbndlbGwgIDxzaGlud2VsbEBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oOiBEZWNsYXJlIGZvbGRpbmdfaW5pdGlhbGl6ZXIuCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9jb25zdGFudF9wKTogR2l2ZSBkZWZpbml0ZSBhbnN3ZXIKCWlmIGZvbGRpbmcgaW5zaWRlIGFuIGluaXRpYWxpemVyLgoJKiBmb2xkLWNvbnN0LmM6IERlZmluZSBmb2xkaW5nX2luaXRpYWxpemVyLgoJKFNUQVJUX0ZPTERfSU5JVCk6IFNhdmUgYW5kIHRoZW4gc2V0IGZvbGRpbmdfaW5pdGlhbGl6ZXIuCgkoRU5EX0ZPTERfSU5JVCk6IFJlc3RvcmUgZm9sZGluZ19pbml0aWFsaXplci4KCjIwMDYtMDYtMDQgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNzAzOQoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfY29tcGFyaXNvbik6IEhhbmRsZSBwb2ludGVyIGNvbXBhcmlzb24KCWFnYWluIGZvciBhbGwgY29tcGFyaXNvbiBjb2Rlcy4gIENvbXBhcmUgb2Zmc2V0cyBpbiBzaWduZWQKCXNpemUgdHlwZS4KCShmb2xkX2JpbmFyeSk6IE1vdmUgY29kZSBmcm9tIGhlcmUuCgoyMDA2LTA2LTAzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiB0YXJnZXQvMjYyMjMKCSogY29uZmlnL2kzODYvaTM4Ni5jIChjb25zdHJ1Y3RfY29udGFpbmVyKTogU3BsaXQgc3RhdGljIGlzc3VlZF9lcnJvcgoJZmxhZyBpbnRvIGlzc3VlZF9zc2VfYXJnX2Vycm9yLCBpc3N1ZWRfc3NlX3JldF9lcnJvciBhbmQKCWlzc3VlZF94ODdfcmV0X2Vycm9yLiAgSXNzdWUgYSBkYWlnbm9zdGljIGlmIHRoZSB4ODYtNjQgQUJJCglyZXF1aXJlcyB0aGUgdXNlIG9mIHg4NyByZWdpc3RlcnMgYW5kIHRoZSB1c2VyIGV4cGxpY2l0bHkKCXNwZWNpZmllZCB0aGUgLW1uby04MDM4NyBjb21tYW5kIGxpbmUgb3B0aW9uLgoKMjAwNi0wNi0wMiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL2hvc3QtZGFyd2luLmMgKHNpZ2FsdHN0YWNrKTogUHJvdGVjdCBwcm90b3R5cGUgd2l0aAoJSEFWRV9ERUNMX1NJR0FMVFNUQUNLLgoJKE1DX0ZMRCk6IE5ldy4KCShzZWd2X2hhbmRsZXIpOiBVc2UgTUNfRkxELgoJKiBjb25maWd1cmUuYWM6IENoZWNrIGZvciBhIHNpZ2FsdHN0YWNrIGRlY2xhcmF0aW9uLgoJQ29tcHV0ZSBIQVNfTUNPTlRFWFRfVF9VTkRFUlNDT1JFUyBvbiBEYXJ3aW4uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKMjAwNi0wNi0wMyAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN0LmNvbT4KCglQUiBvdGhlci8yNzg1MAoJKiBNYWtlZmlsZS5pbiAoc3RtcC1maXhpbmMpOiBGaXggdHlwby4KCjIwMDYtMDYtMDIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX3VuYXJ5KSA8Q09OSl9FWFBSPjogRW5zdXJlIGZvbGRlZCBleHByZXNzaW9ucwoJYXJlIHR5cGUgY29ycmVjdC4gIENsZWFuLXVwLgoJPFJFQUxQQVJUX0VYUFI+OiBMaWtld2lzZS4gIE9wdGltaXplIGNyZWFsKH56KSBhcyBjcmVhbCh6KS4KCTxJTUFHUEFSVF9FWFBSPjogTGlrZXdpc2UuICBPcHRpbWl6ZSBjaW1hZyh+eikgYXMgLWNpbWFnKHopLgoKMjAwNi0wNi0wMSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvdjg1MC92ODUwLmggKEFTTV9PVVRQVVRfQUREUl9ESUZGX0VMVCk6IERpc2FibGVkIHRoZQoJc2hpZnQsIGFzIHdlJ3ZlIGRpc2FibGVkIHRoZSAic3dpdGNoIiBpbnNuIHRoYXQgbmVlZHMgaXQuCgoyMDA2LTA2LTAxICBQZXIgQm90aG5lciAgPGJvdGhuZXJAYm90aG5lci5jb20+CgoJU3VwcHJlc3MgZXh0cmEgJyMxIDxidWlsdC1pbj4gb3IgJyMxIDxjb21tYW5kIGxpbmU+JyBvbiAtZEQgb3V0cHV0LgoJKiBjLW9wdHMuYyAoZmluaXNoX29wdGlvbnMpOiBVc2UgaW50ZXJuYWwgbGluZSAwIGZvciA8Y29tbWFuZC1saW5lPi4KCSogYy1wcG91dHB1dC5jIChjYl9kZWZpbmUpOiBEb24ndCBpbmNyZW1lbnQgbGluZSAwLgoKMjAwNi0wNi0wMSAgUGV0ZSBTdGVpbm1ldHogIDxzdGVpbm10ekB1cy5pYm0uY29tPgoKCSogZG9jL2ludm9rZS50ZXhpOiBBZGQgY3B1X3R5cGUgcG93ZXI2LgoJKiBjb25maWcuZ2NjOiBBZGQgY3B1X3R5cGUgcG93ZXI2LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IEFsaWFzIHBvd2VyNgoJdG8gcG93ZXI1KyB3aXRoIEFsdGl2ZWMuCgkqIGNvbmZpZy9yczYwMDAvYWl4NTIuaCAoQVNNX0NQVV9TUEVDKTogQWRkIHBvd2VyNi4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQVNNX0NQVV9TUEVDKTogQWRkIHBvd2VyNi4KCjIwMDYtMDUtMzAgIEFuYXRvbHkgU29rb2xvdiA8YWVzb2tAcG9zdC5ydT4KCgkqIGNvbmZpZy9hdnIvYXZyLmggKFNFVF9BU01fT1ApOiBEZWZpbmUuCgoyMDA2LTA2LTAxICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9iZmluL2JmaW4uYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA2LTA2LTAxICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIDI1NDUzCgkqIGRvYy9pbnN0YWxsLnRleGk6IERvY3VtZW50IC0tZW5hYmxlLWJvb3RzdHJhcCBhbmQKCS0tZGlzYWJsZS1ib290c3RyYXAuCgoyMDA2LTA2LTAxICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aTogRG9jdW1lbnQgdGhhdCBJbmZvWklQIGNhbiByZXBsYWNlIGphci4KCjIwMDYtMDUtMzEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9mcF9hYnNuZWdfb3BlcmF0b3IpOiBXaGVuIFNTRQoJaXNuJ3QgYXZhaWxhYmxlLCBkaXJlY3RseSBnZW5lcmF0ZSB0aGUgc2ltcGxlciB4ODcgcGF0dGVybnMgd2l0aG91dAoJdGhlICh1c2UgKGNvbnN0X2ludCAwKSkuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCpuZWdzZjJfMSk6IEVuYWJsZSBwcmUtcmVsb2FkIGlmIHRoZSBTU0UKCWltcGxlbWVudGF0aW9uIGlzbid0IGF2YWlsYWJsZS4KCSgqbmVnZGYyXzEpOiBMaWtld2lzZS4KCSgqbmVneGYyXzEpOiBYRiBtb2RlIG5lZ2F0aW9uIGlzIGFsd2F5cyBkb25lIHVzaW5nIHRoZSB4ODcuCgkoKmFic3NmMl8xLCAqYWJzZGYyXzEsICphYnN4ZjJfMSk6IExpa2V3aXNlXjMgZm9yIGZhYnMuCgoyMDA2LTA1LTMxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGZvbGRfYnVpbHRpbl9jYWJzKTogRGVsZXRlIHByb3RvdHlwZS4gIFJlcXVpcmUgYW4KCWFkZGl0aW9uYWwgRk5ERUNMIGFyZ3VtZW50LiAgT3B0aW1pemUgY2FicygteikgYW5kIGNhYnMofnopIGFzCgljYWJzKHopLgoJKGZvbGRfYnVpbHRpbl9kZWNsKSA8QlVJTFRfSU5fQ0FCUz46IFVwZGF0ZSBmb2xkX2J1aWx0aW5fY2FicyBjYWxsLgoKMjAwNi0wNS0zMSAgSmllIFpoYW5nICA8amllLnpoYW5nQGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLXByb3Rvcy5oIChiZmluX2hhcmR3YXJlX2xvb3ApOiBEZWNsYXJlLgoJKiBjb25maWcvYmZpbi9iZmluLmMgKGJhc2ljLWJsb2NrLmgpOiBJbmNsdWRlLgoJKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogTmV3LgoJKGJmaW5faW5pdF9tYWNoaW5lX3N0YXR1cyk6IE5ldy4KCShvdmVycmlkZV9vcHRpb25zKTogSW5pdGlhbGl6ZSBpbml0X21hY2hpbmVfc3RhdHVzLgoJKGJmaW5faGFyZHdhcmVfbG9vcCk6IE5ldy4KCShNQVhfTE9PUF9ERVBUSCwgTUFYX0xPT1BfTEVOR1RIKTogRGVmaW5lLgoJKERFRl9WRUNfUCAobG9vcF9pbmZvKSk6IE5ldy4KCShERUZfVkVDX0FMTE9DX1AgKGxvb3BfaW5mbyxoZWFwKSk6IE5ldy4KCShzdHJ1Y3QgbG9vcF9pbmZvKTogTmV3LgoJKGxvb3BfaW5mbyk6IE5ldyB0eXBlZGVmLgoJKHN0cnVjdCBsb29wX3dvcmspOiBOZXcuCgkobG9vcF93b3JrKTogTmV3IHR5cGVkZWYuCgkoREVGX1ZFQ19PIChsb29wX3dvcmspKTogTmV3LgoJKERFRl9WRUNfQUxMT0NfTyAobG9vcF93b3JrLGhlYXApKTogTmV3LgoJKGJmaW5fZHVtcF9sb29wcyk6IE5ldy4KCShiZmluX2JiX2luX2xvb3ApOiBOZXcuCgkoYmZpbl9zY2FuX2xvb3ApOiBOZXcuCgkoYmZpbl9vcHRpbWl6ZV9sb29wKTogTmV3LgoJKGJmaW5fcmVvcmdfbG9vcHMpOiBOZXcuCgkoYmZpbl9yZW9yZyk6IFVzZSBiZmluX3Jlb3JnX2xvb3BzLgoJKiBjb25maWcvYmZpbi9iZmluLmggKEZJUlNUX1BTRVVET19SRUdJU1RFUik6IEFkanVzdCBmb3IgYWRkaW5nCglsb29wIHJlZ2lzdGVycy4KCShJX1JFR05PX1ApOiBTaW1wbGlmeS4KCShEUF9SRUdOT19QLCBEUFJFR19QKTogTmV3IG1hY3Jvcy4KCShSRUdJU1RFUl9OQU1FUywgRklYRURfUkVHSVNURVJTLCBDQUxMX1VTRURfUkVHSVNURVJTLAoJUkVHX0FMTE9DX09SREVSKTogQWRkIExUMCwgTFQxLCBMQzAsIExDMSwgTEIwLCBMQjEuCgkoZW51bSByZWdfY2xhc3MsIFJFR19DTEFTU19OQU1FUywgUkVHX0NMQVNTX0NPTlRFTlRTKToKCUFkZCBMVF9SRUdTLCBMQ19SRUdTLCBMQl9SRUdTLgoJKFJFR19DTEFTU19GUk9NX0xFVFRFUik6IEFkZCAndCcgZm9yIExUX1JFR1MsICdrJyBmb3IgTENfUkVHUywKCSdsJyBmb3IgTEJfUkVHUy4KCShSRUdOT19SRUdfQ0xBU1MpOiBEZWFsIHdpdGggbG9vcCByZWdpc3RlcnMuCgkqIGNvbmZpZy9iZmluL2JmaW4ubWQ6IEFkZCBjb21tZW50IGZvciAndCcsICdrJywgJ2wnIGNvbnN0cmFpbnQKCWxldHRlcnMuCgkoUkVHX0xUMCwgUkVHX0xUMSwgUkVHX0xDMCwgUkVHX0xDMSwgUkVHX0xCMCwgUkVHX0xCMSk6CglOZXcgY29uc3RhbnRzIGZvciBsb29wIHJlZ2lzdGVycy4KCShVTlNQRUNfTFNFVFVQX0VORCk6IE5ldy4KCShzZXFfaW5zbnMpOiBOZXcgZGVmaW5lX2F0dHIuIFNldCBpdCBmb3IgYXBwcm9wcmlhdGUgaW5zbnMuCgkobW92c2lfaW5zbik6IEFkZCBhbHRlcm5hdGl2ZXMgZm9yIG1vdmUgZnJvbS90bwoJbG9vcCBjb3VudCByZWdpc3RlcnMuCgkoZG9sb29wX2VuZCk6IE5ldyBkZWZpbmVfZXhwYW5kLgoJKGxvb3BfZW5kKTogTmV3IGRlZmluZV9pbnNuLgoJKGRlZmluZV9zcGxpdCBmb3IgYmFkIGRvbG9vcF9lbmQpOiBOZXcuCgkobHNldHVwX3dpdGhfYXV0b2luaXQpOiBOZXcgZGVmaW5lX2luc24uCgkobHNldHVwX3dpdGhvdXRfYXV0b2luaXQpOiBOZXcgZGVmaW5lX2luc24uCgkocmVwX21vdnNpLCByZXBfbW92aGkpOiBDbG9iYmVyIExUMSwgTEMxLCBMQjEuCgkqIGNvbmZpZy9iZmluL3ByZWRpY2F0ZXMubWQgKGxjX3JlZ2lzdGVyX29wZXJhbmQpOiBOZXcuCgkobHRfcmVnaXN0ZXJfb3BlcmFuZCk6IE5ldy4KCShsYl9yZWdpc3Rlcl9vcGVyYW5kKTogTmV3LgoJKG5vbmRwX3JlZ2lzdGVyX29wZXJhbmQpOiBOZXcuCgkobm9uZHBfcmVnX29yX21lbW9yeV9vcGVyYW5kKTogTmV3LgoJKiBkb2MvbWQudGV4aTogRG9jdW1lbnQgQmxhY2tmaW4gbmV3ICd0JywgJ2snLCAnbCcgY29uc3RyYWludCBsZXR0ZXJzLgoKMjAwNi0wNS0zMSAgSmllIFpoYW5nICA8amllLnpoYW5nQGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLmMgKGJmaW5fZGVsZWdpdGltaXplX2FkZHJlc3MpOiBOZXcuCgkoVEFSR0VUX0RFTEVHSVRJTUlaRV9BRERSRVNTKTogRGVmaW5lLgoKMjAwNi0wNS0zMSAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluIChDQVRBTE9HUyk6IEFkZCBwby8gcHJlZml4LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwNi0wNS0zMSAgUmljaGFyZCBFYXJuc2hhdyAgPHJpY2hhcmQuZWFybnNoYXdAYXJtLmNvbT4KCglQUiB0YXJnZXQvMjc4MjkKCSogYXJtLmMgKGFybV9wcmludF9vcGVyYW5kIGNhc2UgJ1MnKTogVmFsaWRhdGUgdGhhdCB0aGUgb3BlcmFuZCBpcwoJYSBzaGlmdCBvcGVyYW5kIGJlZm9yZSBjYWxsaW5nIHNoaWZ0X29wLiAgQXZvaWQgcmVkdW5kYW50IGNhbGwgb2YKCXNoaWZ0X29wLgoKMjAwNi0wNS0zMCAgTmF2ZWVuLkguUyAgPG5hdmVlbmhAa3BpdGN1bW1pbnMuY29tPgoJICAgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL20zMmMvbTMyYy5jIChtMzJjX2V4cGFuZF9pbnN2KTogQ2hlY2sgdGhhdCB0aGUgdmFsdWUKCXdlJ3JlIGluc2VydGluZyBpcyBhIHNpbmdsdC1iaXQgY29uc3RhbnQuCgoyMDA2LTA1LTMwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uXzEpIDxMU0hJRlRSVD46IENhc3QKCXdpZHRoIHRvIEhPU1RfV0lERV9JTlQgdG8gYXZvaWQgY29tcGFyaXNvbiB3YXJuaW5ncyBvbiBzb21lIHRhcmdldHMuCgoyMDA2LTA1LTMwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yMzQ1MgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfbXVsdF96Y29uanopOiBOZXcgc3Vicm91dGluZSBvZiBmb2xkX2JpbmFyeSwKCXRvIG9wdGltaXplIHogKiBjb25qKHopIGFzIHJlYWxwYXJ0KHopXjIgKyBpbWFncGFydCh6KV4yLgoJKGZvbGRfYmluYXJ5KSA8TVVMVF9FWFBSPjogQ2FsbCBmb2xkX211bHRfemNvbmp6IGZvciBpbnRlZ3JhbAoJY29tcGxleCB2YWx1ZXMgYW5kIHdpdGggLWZmYXN0LW1hdGggZm9yIEZQIGNvbXBsZXggdmFsdWVzLgoKMjAwNi0wNS0zMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWNvbW1vbi5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgeXlwYXJzZS4KCSogcnRsLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBpbml0X2xvb3AuCgoyMDA2LTA1LTMwICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY3NlLmMgKHZhbGlkYXRlX2Nhbm9uX3JlZywgY3NlX2luc24pOiBEb24ndCBjaGFuZ2UgaW5zbnMgd2l0aG91dAoJY2FsbGluZyByZWNvZy4KCjIwMDYtMDUtMzAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2JpbmFyeV9vcGVyYXRpb24pOiBVbmZhY3RvciB0aGUgc2hpZnQKCWFuZCByb3RhdGUgY2FzZXMuCgk8TFNISUZUUlQ+OiBPcHRpbWl6ZSAobHNoaWZ0cnQgKGNseiBYKSBDKSBhcyAoZXEgWCAwKSB3aGVyZSBDIGlzCglsb2cyKEdFVF9NT0RFX0JJVFNJWkUoWCkpIG9uIHRhcmdldHMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgc2VtYW50aWNzLgoKMjAwNi0wNS0zMCAgRGlyayBNdWVsbGVyICA8ZG11ZWxsZXJAc3VzZS5kZT4KCglQUiBjLzI3MjczCgkqIGMtY29tbW9uLmMgKGNvbnZlcnRfYW5kX2NoZWNrKTogT25seSB0cmFjayBUUkVFX0NPTlNUQU5UX09WRVJGTE9XCglmb3IgQ09OU1RBTlRfQ0xBU1NfUCBleHByZXNpc29ucy4KCjIwMDYtMDUtMzAgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYy8yNzcxOAoJKiBjLXR5cGVjay5jIChjX2V4cHJfc2l6ZW9mX3R5cGUpOiBIYW5kbGUgaW52YWxpZCB0eXBlcy4KCjIwMDYtMDUtMzAgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNzc3OQoJKiB0cmVlLWRhdGEtcmVmLmMgKGFuYWx5emVfc2l2X3N1YnNjcmlwdF9jc3RfYWZmaW5lKTogVXNlCglpbml0aWFsX2NvbmRpdGlvbiBpbnN0ZWFkIG9mIENIUkVDX0xFRlQuCgoyMDA2LTA1LTMwICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iLmdjY0BnbWFpbC5jb20+CgoJKiBjb25maWcvbTMyci9tMzJyLmggKERCWF9PVVRQVVRfU09VUkNFX0xJTkUpOiBGaXggdHlwZSBvZiBiZWdpbl9sYWJlbC4KCSogY29uZmlnL20zMnIvaW5pdGZpbmkuYyAoX19kb19nbG9iYWxfZHRvcnMsIF9fZG9fZ2xvYmFsX2N0b3JzKToKCU1ha2UgcHJvdG90eXBlcyBJU08gQzkwLgoKMjAwNi0wNS0zMCAgTWlyY2VhIE5hbW9sYXJ1ICA8bmFtb2xhcnVAaWwuaWJtLmNvbT4KCSAgICBMZWVob2QgQmFydWNoICAgIDxsZWVob2QuYmFydWNoQHdlaXptYW5uLmFjLmlsPgoKCSogc2VlLmMgKHNlZV9hbmFseXplX29uZV9kZWYpOiBDb3JyZWN0IGNoZWNrLgoJKHNlZV9nZXRfZXh0ZW5zaW9uX2RhdGEpOiBDaGVjayBpZiBleHRlbnNpb24gaXMgcGFyYWxsZWwuCgkoc2VlX2dldF9leHRlbnNpb25fcmVnKTogTGlrZXdpc2UuCgoyMDA2LTA1LTMwICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJUFIgdGFyZ2V0LzI3NzkwCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfaW50X3Zjb25kKTogRm9yY2UgY29wMAoJaW50byByZWdpc3RlciBmb3IgKGNvZGUgPT0gR1RVKS4KCjIwMDYtMDUtMjkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI0OTY0CgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uXzEpOiBBZGQgZnVuY3Rpb24gY29tbWVudC4KCTxNVUxUPjogTWlub3IgY2xlYW4tdXAuICBEb24ndCBjb252ZXJ0IHgqLTEuMCBpbnRvIC14IGlmIHdlIGhvbm9yCglzaWduYWxpbmcgTmFOcy4gIE9wdGltaXplIC14Ki14IGFzIHgqeCBmb3IgYWxsIGZsb2F0IG1vZGVzLCBhbmQKCWFicyh4KSphYnMoeCkgYXMgeCp4IGZvciBzY2FsYXIgZmxvYXRpbmcgcG9pbnQgbW9kZXMuCgoyMDA2LTA1LTI5ICBTZWJhc3RpYW4gUG9wICA8cG9wQGNyaS5lbnNtcC5mcj4KCglQUiBtaWRkbGUtZW5kLzI3NzQ1CgkqIGxhbWJkYS1jb2RlLmMgKHBlcmZlY3RfbmVzdGlmeSk6IERvbid0IGNvcHkgc3RhdGVtZW50cwoJaW4gdGhlIGlubmVyIGxvb3A6IG1vdmUgdGhlbSB0byB0aGUgaW5uZXIgbG9vcCBoZWFkZXIuCgoyMDA2LTA1LTI5ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglQUiAyNjIzNwoJKiBjLXRyZWUudGV4aTogRG9jdW1lbnQgT3Blbk1QIGRpcmVjdGl2ZXMgYW5kIGNsYXVzZXMuCgoyMDA2LTA1LTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHZhcmFzbS5jIChnbG9iYWxpemVfZGVjbCk6IEZpeCBpbmRlbnRhdGlvbi4KCjIwMDYtMDUtMjkgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCVBSIDI2MjQyCgkqIGRvYy9wYXNzZXMudGV4aTogQWRkIGRvY3VtZW50YXRpb24gZm9yIHBhc3NfdnJwLCBwYXNzX2lwYV9wdGEsCglwYXNzX2ZyZSwgcGFzc19zdG9yZV9jY3AsIHBhc3NfY29weV9wcm9wLAoJcGFzc19zdG9yZV9jb3B5X3Byb3AsIHBhc3NfbWVyZ2VfcGhpLCBwYXNzX25ydiwKCXBhc3NfcmV0dXJuX3Nsb3QsIHBhc3Nfb2JqZWN0X3NpemUsIHBhc3NfbGltLAoJcGFzc19saW5lYXJfdHJhbnNmb3JtLCBwYXNzX2VtcHR5X2xvb3AsIHBhc3NfY29tcGxldGVfdW5yb2xsLAoJcGFzc19sb29wX3ByZWZldGNoIGFuZCBwYXNzX3N0ZGFyZy4KCjIwMDUtMDUtMjkgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9iZmluLm9wdCAobWZkcGljKTogTmV3IG9wdGlvbi4KCSogY29uZmlnL2JmaW4vdC1iZmluLWVsZiAoRVhUUkFfUEFSVFMpOiBBZGQgY3J0YmVnaW5TLm8gYW5kIGNydGVuZFMuby4KCShFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IExpa2V3aXNlLgoJKENSVFNUVUZGX1RfQ0ZMQUdTLCBUQVJHRVRfTElCR0NDMl9DRkxBR1MpOiBVc2UgLWZwaWMuCgkoTVVMVElMSUJfT1BUSU9OUywgTVVMVElMSUJfRVhDRVBUSU9OUyk6IEJ1aWxkIG9uZSBleHRyYSAtbWZkcGljCgltdWx0aWxpYi4KCSogY29uZmlnL2JmaW4vZWxmLmggKFNUQVJURklMRV9TUEVDKTogRG9uJ3QgbGluayBpbiBjcnQwLm8gaWYgLXNoYXJlZC4KCShDUlRfQ0FMTF9TVEFUSUNfRlVOQ1RJT04pOiBOZXcuCgkqIGNvbmZpZy9iZmluL3VjbGludXguaCAoU1RBUlRGSUxFX1NQRUMpOiBEb24ndCBsaW5rIGluIGNydDAubyBpZgoJLXNoYXJlZC4KCShDUlRfQ0FMTF9TVEFUSUNfRlVOQ1RJT04pOiBOZXcuCgkqIGNvbmZpZy9iZmluL2JmaW4uYyAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IE5vdyBzdGF0aWMuICBIYW5kbGUKCUZELVBJQyBtb3Zlcy4KCShuX3ByZWdzX3RvX3NhdmUpOiBQSUMgcmVnaXN0ZXIgZG9lc24ndCBuZWVkIHRvIGJlIHNhdmVkIHdpdGggRkQtUElDLgoJKHByaW50X29wZXJhbmQpOiBIYW5kbGUgVU5TUEVDX01PVkVfRkRQSUMgYW5kIFVOU1BFQ19GVU5DREVTQ19HT1QxN000LgoJKGluaXRpYWxpemVfdHJhbXBvbGluZSk6IENoYW5nZWQgdG8gaGFuZGxlIEZELVBJQyBjb2RlIGdlbmVyYXRpb24uCgkoZXhwYW5kX21vdmUpOiBJZiBUQVJHRVRfRkRQSUMsIHVzZSBlbWl0X3BpY19tb3ZlIGFzIG5lZWRlZC4KCShiZmluX2V4cGFuZF9jYWxsKTogR2VuZXJhdGUgRkQtUElDIGNhbGxzIGlmIFRBUkdFVF9GRFBJQy4KCShvdmVycmlkZV9vcHRpb25zKTogRGlzYWxsb3cgLW1pZC1zaGFyZWQtbGlicmFyeSAtbWZkcGljIGNvbWJpbmF0aW9uLgoJQ2FuJ3QgZG8gdW5hbGlnbmVkIG9wcyBpZiBGRC1QSUMuCglUdXJuIG9mZiBmbGFnX3BpYyBpZiB0cnlpbmcgdG8gZ2VuZXJhdGUgbm9uLWlkLXNoYXJlZC1saWJyYXJ5Cglub24tZmRwaWMgY29kZSwgc2luY2UgaXQncyBub3Qgc3VwcG9ydGVkLgoJKGJmaW5fYXNzZW1ibGVfaW50ZWdlcik6IE5ldyBmdW5jdGlvbi4KCShUQVJHRVRfQVNNX0lOVEVHRVIpOiBEZWZpbmUuCgkqIGNvbmZpZy9iZmluL2NydGkucyAoX19pbml0LCBfX2ZpbmkpOiBTYXZlIFAzIG9uIHRoZSBzdGFjayBpZgoJX19CRklOX0ZEUElDX18uCgkqIGNvbmZpZy9iZmluL2NydG4uczogUmVzdG9yZSB0aGVtLgoJKiBjb25maWcvYmZpbi9iZmluLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogRGVmaW5lIF9fQkZJTl9GRFBJQ19fCglpZiBUQVJHRVRfRkRQSUMuCgkoRFJJVkVSX1NFTEZfU1BFQ1MsIFNVQlRBUkdFVF9EUklWRVJfU0VMRl9TUEVDUywKCUxJTktfR0NDX0NfU0VRVUVOQ0VfU1BFQywgQVNNX1NQRUMsIExJTktfU1BFQyk6IE5ldyBtYWNyb3MuCgkoRkRQSUNfRlBUUl9SRUdOTywgRkRQSUNfUkVHTk8sIE9VUl9GRFBJQ19SRUcpOiBOZXcgbWFjcm9zLgoJKFRSQU1QT0xJTkVfU0laRSwgVFJBTVBPTElORV9URU1QTEFURSk6IEFkanVzdCBmb3IgRkQtUElDLgoJKENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFKTogSWYgVEFSR0VUX0ZEUElDLCBGRFBJQ19SRUdOTyBpcwoJY2FsbC11c2VkLgoJKGVudW0gcmVnX2NsYXNzLCBSRUdfQ0xBU1NfQ09OVEVOVFMsIFJFR19DTEFTU19OQU1FUyk6IEFkZAoJRkRQSUNfUkVHUyBhbmQgRkRQSUNfRlBUUl9SRUdTLgoJKFJFR19DTEFTU19GUk9NX0xFVFRFUik6IFVzZSAnWicgYW5kICdZJyBmb3IgdGhlbS4KCSogY29uZmlnL2JmaW4vYmZpbi5tZCAoVU5TUEVDX01PVkVfRkRQSUMsIFVOU1BFQ19GVU5DREVTQ19HT1QxN000LAoJVU5TUEVDX1ZPTEFUSUxFX0xPQURfRlVOQ0RFU0MpOiBOZXcgY29uc3RhbnRzLgoJKGxvYWRfZnVuY2Rlc2NzaSk6IE5ldyBwYXR0ZXJuLgoJKGNhbGxfc3ltYm9sX2ZkcGljLCBzaWJjYWxsX3N5bWJvbF9mZHBpYywgY2FsbF92YWx1ZV9zeW1ib2xfZmRwaWMsCglzaWJjYWxsX3ZhbHVlX3N5bWJvbF9mZHBpYywgY2FsbF9pbnNuX2ZkcGljLCBzaWJjYWxsX2luc25fZmRwaWMsCgljYWxsX3ZhbHVlX2luc25fZmRwaWMsIHNpYmNhbGxfdmFsdWVfaW5zbl9mZHBpYyk6IE5ldyBwYXR0ZXJucy4KCjIwMDYtMDUtMjkgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZ2NzZS5jLCBydGxhbmFsLmM6IFJlbW92ZSBvYnNvbGV0ZSBjb21tZW50cyBhc3NvY2lhdGVkIHdpdGgKCWxvb3AuYy4KCgkqIGNvbmZpZy9iZmluL2JmaW4uaCAoUEFSTV9CT1VORFJZLCBTVEFDS19CT1VORFJZKTogUmVtb3ZlLgoKCSogdHJlZS1mbG93Lmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBhZGRfdHlwZV9hbGlhcy4KCSogdHJlZS1zc2EtYWxpYXMuYyAoYWRkX3R5cGVfYWxpYXMpOiBSZW1vdmUuCgoyMDA2LTA1LTI4ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNmZ2NsZWFudXAuYywgY2ZnZXhwYW5kLmMsIGNncmFwaHVuaXQuYywgY29uZmlnL2FybS9hcm0uYywKCWNvbmZpZy9mcjMwL2ZyMzAubWQsIGNvbmZpZy9pMzg2L2kzODYtaW50ZXJpeC5oLAoJY29uZmlnL2kzODYvaTM4Ni5jLCBjb25maWcvaTM4Ni9pMzg2Lm1kLCBjb25maWcvc2gvc3VwZXJoLmgsCgljb25maWcvc2gvc3VwZXJoNjQuaCwgY29uZmlnL3Y4NTAvdjg1MC5jLCBkZi1jb3JlLmMsCglkZi1wcm9ibGVtcy5jLCBkZi5oLCBleGNlcHQuYywgZmluYWwuYywgaGFpZmEtc2NoZWQuYywKCWxhbWJkYS1jb2RlLmMsIGxpYmdjYzIuaCwgb21wLWxvdy5jLCBvcHRhYnMuYywgcHJlZGljdC5jLAoJcmVsb2FkLmMsIHRyZWUtZmxvdy5oLCB0cmVlLW91dG9mLXNzYS5jLCB0cmVlLXNzYS1kY2UuYywKCXRyZWUtc3NhLXByZS5jLCB0cmVlLXZlY3QtdHJhbnNmb3JtLmM6IEZpeCBjb21tZW50IHR5cG9zLgoJRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoJKiBkb2MvaW52b2tlLnRleGksIGRvYy9ydGwudGV4aSwgZG9jL3RtLnRleGk6IEZpeCB0eXBvcy4KCUZvbGxvdyBzcGVsbGluZyBjb252ZW50aW9ucy4KCjIwMDYtMDUtMjcgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzI3NzczCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9wbHVzbWludXNfbXVsdF9leHByKTogVXNlIGZvbGRfY29udmVydAoJdG8gcHJvZHVjZSBhIGNvbnN0YW50IG9mIHZhbHVlIDEgb2YgZ2VuZXJpYyB0eXBlLgoKMjAwNi0wNS0yNyAgRGlyayBNdWVsbGVyICA8ZG11ZWxsZXJAc3VzZS5kZT4KCgkqIGNncmFwaHVuaXQuYyAoZGVjaWRlX2lzX2Z1bmN0aW9uX25lZWRlZCk6IEZpeCB3cm9uZwoJUFIgcmVmZXJlbmNlLgoKMjAwNi0wNS0yNiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjc2NjEKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkcyk6IFdoZW4gcmVsb2FkaW5nIGEgVk9JRG1vZGUgY29uc3RhbnQKCWFzIGFkZHJlc3MgZHVlIHRvIGFuIEVYVFJBX01FTU9SWV9DT05TVFJBSU5UIG9yICdvJyBjb25zdHJhaW50LAoJdXNlIFBtb2RlIGFzIG1vZGUgb2YgdGhlIHJlbG9hZCByZWdpc3Rlci4KCjIwMDYtMDUtMjYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBkb2MvaW52b2tlLnRleGkgKE9wdGltaXplIE9wdGlvbnMpOiBEb2N1bWVudCB0aGF0IC1mdW5pdC1hdC1hLXRpbWUKCWlzIGVuYWJsZWQgYXQgLU8gYW5kIGFib3ZlLgoKMjAwNi0wNS0yNiAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCVBSIHRhcmdldC8yNzU3MQoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfZG9lc19mdW5jdGlvbl9uZWVkX2dwKTogU2tpcCBqdW1wCgl0YWJsZSBkYXRhLgoKMjAwNi0wNS0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjAxMDMKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfZGVjbF9leHByKTogRG8gbm90IGNhbGwgZ2ltcGxlX2FkZF90bXBfdmFyCglmb3IgYW5vbnltb3VzIHZhcmlhYmxlcyBleHBsaWNpdGx5IGRlY2xhcmVkIGJ5IGZyb250IGVuZHMuCgoyMDA2LTA1LTI1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuaCAoUFRSX0lTX1JFRl9BTEwpOiBOZXcgbWFjcm8uCgkoc3RydWN0IGFsaWFzX2luZm8pOiBBZGQgbmV3IGZpZWxkIHJlZl9hbGxfc3ltYm9sX21lbV90YWcuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNvbXB1dGVfbWF5X2FsaWFzZXMpOiBJZiB0aGUgcHJvZ3JhbSBjb250YWlucwoJcmVmLWFsbCBwb2ludGVycywgcnVuIGEgZmluYWxpemF0aW9uIHBhc3MgZm9yIHRoZW0uCgkoY29tcHV0ZV9mbG93X2luc2Vuc2l0aXZlX2FsaWFzaW5nKTogU2tpcCByZWYtYWxsIHBvaW50ZXJzLgoJKGZpbmFsaXplX3JlZl9hbGxfcG9pbnRlcnMpOiBOZXcgZnVuY3Rpb24uCgkoaXNfZXNjYXBlX3NpdGUpOiBSZXR1cm4gRVNDQVBFX0JBRF9DQVNUIGZvciBjb252ZXJzaW9uIGZyb20gYQoJcmVndWxhciBwb2ludGVyIHR5cGUgdG8gYSByZWYtYWxsIHBvaW50ZXIgdHlwZS4KCShnZXRfdG10X2Zvcik6IFJldHVybiB0aGUgc3BlY2lhbCBtZW1vcnkgdGFnIGZvciByZWYtYWxsIHBvaW50ZXJzLgoKMjAwNi0wNS0yNSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMjc3NDMKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSk6IERvIG5vdCBsb29rIGF0IHRoZSBzdHJpcHBlZAoJb3AwIGZvciAoYSBPUCBjMSkgT1AgYzIgdG8gYSBPUCAoYzErYzIpIHNoaWZ0IG9wdGltaXphdGlvbi4KCjIwMDYtMDUtMjUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmVlLXZycC5jIChleHRyYWN0X3JhbmdlX2Zyb21fYXNzZXJ0KTogU2V0IHRoZSByYW5nZSB0byBWQVJZSU5HCglmb3IgTFQgYW5kIEdUIGlmIHRoZSBjb21wdXRlZCByYW5nZSBpcyBlZmZlY3RpdmVseSBlbXB0eS4KCjIwMDYtMDUtMjQgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgdGFyZ2V0LzI3NjI3CgkqIHBhL3BhLW1vZGVzLmRlZjogVXNlIG1pcHNfc2luZ2xlX2Zvcm1hdCwgbWlwc19kb3VibGVfZm9ybWF0IGFuZAoJbWlwc19xdWFkX2Zvcm1hdCBmb3JtYXRzIGluc3RlYWQgb2YgaWVlZV9zaW5nbGVfZm9ybWF0LAoJaWVlZV9kb3VibGVfZm9ybWF0IGFuZCBpZWVlX3F1YWRfZm9ybWF0IGZvcm1hdHMsIHJlc3BlY3RpdmVseS4KCjIwMDYtMDUtMjQgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNzYzOQoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjY3MTkKCSogdHJlZS12cnAuYyAoYWRqdXN0X3JhbmdlX3dpdGhfc2Nldik6IFVzZSBzY2V2X2RpcmVjdGlvbiBhbmQgYWRqdXN0CgljYWxsIHRvIHNjZXZfcHJvYmFibHlfd3JhcHNfcC4KCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jIChjb21wYXJlX3RyZWVzLCBjb252ZXJ0X3N0ZXBfd2lkZW5pbmcsCgl1c2VkX2luX3BvaW50ZXJfYXJpdGhtZXRpY19wLCBjb252ZXJ0X3N0ZXApOiBSZW1vdmVkLgoJKG5vd3JhcF90eXBlX3ApOiBOZXcgZnVuY3Rpb24uCgkoc2Nldl9wcm9iYWJseV93cmFwc19wKTogUmV3cml0dGVuLgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoaW5zdGFudGlhdGVfcGFyYW1ldGVyc18xKTogRG8gbm90IGNhbGwKCWNocmVjX2NvbnZlcnQgaWYgY2hyZWNfY29udmVydF9hZ2dyZXNzaXZlIG1pZ2h0IGhhdmUgYmVlbiB1c2VkLgoJKiB0cmVlLWNocmVjLmMgKGNvbnZlcnRfYWZmaW5lX3NjZXYsIGNocmVjX2NvbnZlcnRfMSwKCXNjZXZfZGlyZWN0aW9uKTogTmV3IGZ1bmN0aW9ucy4KCShjaHJlY19jb252ZXJ0KTogQ2hhbmdlZCB0byBhIHdyYXBwZXIgb3ZlciBjaHJlY19jb252ZXJ0XzEuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGlkeF9maW5kX3N0ZXApOiBVc2UgY29udmVydF9hZmZpbmVfc2NldgoJaW5zdGVhZCBvZiBjb252ZXJ0X3N0ZXAuCgkqIHRyZWUtZmxvdy5oIChzY2V2X3Byb2JhYmx5X3dyYXBzX3ApOiBEZWNsYXJhdGlvbiBjaGFuZ2VkLgoJKGNvbnZlcnRfc3RlcCk6IERlY2xhcmF0aW9uIHJlbW92ZWQuCgkoY29udmVydF9hZmZpbmVfc2Nldiwgbm93cmFwX3R5cGVfcCwgc2Nldl9kaXJlY3Rpb24pOiBEZWNsYXJlLgoKMjAwNi0wNS0yMyAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCgkqIGRmLWNvcmUuYzogQWRkZWQgdG8gaGVhZGVyIGNvbW1lbnRzLgoJKiBkZi5oIChkZl9ydV9iYl9pbmZvLCBkZl9yZF9iYl9pbmZvLCBkZl9scl9iYl9pbmZvLAoJZGZfdXJfYmJfaW5mbywgZGZfdXJlY19iYl9pbmZvKTogQWRkZWQgY29tbWVudHMuCgkqIGRmLXByb2JsZW1zIChkZl9yZWZfYml0bWFwLCBydSwgcmQsIGxyLCB1ciwKCXVyZWMsIHJpIHByb2JsZW1zKTogRml4ZWQgaGVhZGVyIGNvbW1lbnRzLgoJKGRmX3J1X3RyYW5zZmVyX2Z1bmN0aW9uKTogRml4ZWQgaW4tb3V0IHNldCBkeXNsZXhpYSB3aGVuIGNvcHlpbmcKCWNvZGUgZnJvbSBkZl9yZF90cmFuc2Zlcl9mdW5jdGlvbi4KCjIwMDYtMDUtMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogbGliZ2NjMi5jIChMSUJHQ0MyX01BWF9VTklUU19QRVJfV09SRCk6IE5ldyBtYWNyby4KCShMSUJHQ0MyX1VOSVRTX1BFUl9XT1JEKTogVXNlIExJQkdDQzJfTUFYX1VOSVRTX1BFUl9XT1JEIHJhdGhlciB0aGFuCglNSU5fVU5JVFNfUEVSX1dPUkQgdG8gc2V0IHRoZSBkZWZhdWx0LiAgQWxzbyB1c2UgaXQgaW4gdGhlIGd1YXJkLgoKMjAwNi0wNS0yMyAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHByLmMgKHVuZGVmaW5lZF9vcGVyYW5kX3N1YndvcmRfcCk6IE5ldy4KCShlbWl0X21vdmVfbXVsdGlfd29yZCk6IERvIG5vdCBnZW5lcmF0ZSBtb3ZlIGZyb20gdW5kZWZpbmVkIGJpdHMKCW9mIGEgcGFyYWRveGljYWwgc3VicmVnLgoKMjAwNi0wNS0yMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yNzczNgoJKiBjb21iaW5lLmMgKHJlcGxhY2VkX3Joc192YWx1ZSk6IE5ldyB2YXJpYWJsZS4KCShjb21iaW5lX2luc3RydWN0aW9ucyk6IFNldCBpdC4KCShkaXN0cmlidXRlX25vdGVzKTogV2hlbiBkaXN0cmlidXRpbmcgYSBub3RlIGluIHJlcGxhY2VkX3Joc19pbnNuLAoJY2hlY2sgd2hldGhlciB0aGUgdmFsdWUgd2FzIHVzZWQgaW4gcmVwbGFjZWRfcmhzX3ZhbHVlLgoKMjAwNi0wNS0yMyAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEByZWRoYXQuY29tPgoKCVBSIGMrKy8yNjc1NwoJKiB0cmVlLXNzYS1sb29wLWltLmMgKGRldGVybWluZV9pbnZhcmlhbnRuZXNzX3N0bXQpOiBVc2UKCWFkZF9yZWZlcmVuY2VkX3ZhciBpbnN0ZWFkIG9mIGFkZF9yZWZlcmVuY2VkX3RtcF92YXIuCgkqIHRyZWUtY29tcGxleC5jIChjcmVhdGVfb25lX2NvbXBvbmVudF92YXIpOiBVc2UgYWRkX3JlZmVyZW5jZWRfdmFyLgoJKiB0cmVlLXNzYS1sb29wLW1hbmlwLmMgKGNyZWF0ZV9pdiwgdHJlZV91bnJvbGxfbG9vcCk6IFVzZQoJYWRkX3JlZmVyZW5jZWRfdmFyLgoJKiB0cmVlLXRhaWxjYWxsLmMgKGFkanVzdF9hY2N1bXVsYXRvcl92YWx1ZXMsIGFkanVzdF9yZXR1cm5fdmFsdWUsCgl0cmVlX29wdGltaXplX3RhaWxfY2FsbHNfMSk6IFVzZSBhZGRfcmVmZXJlbmNlZF92YXIuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGNyZWF0ZV9uZXdfaXYpOiBVc2UgYWRkX3JlZmVyZW5jZWRfdmFyLgoJKiB0cmVlLXNzYS1hbGlhcy5jIChjcmVhdGVfbWVtb3J5X3RhZywgY3JlYXRlX2dsb2JhbF92YXIsIGNyZWF0ZV9zZnQpOgoJVXNlIGFkZF9yZWZlcmVuY2VkX3Zhci4KCSogdHJlZS1pZi1jb252LmMgKGlmY190ZW1wX3Zhcik6IFVzZSBhZGRfcmVmZXJlbmNlZF92YXIuCgkqIGdpbXBsaWZ5LmMgKGZvcmNlX2dpbXBsZV9vcGVyYW5kKTogVXNlIGFkZF9yZWZlcmVuY2VkX3Zhci4KCSogdHJlZS1zc2EtcGhpb3B0LmMgKGNvbmRpdGlvbmFsX3JlcGxhY2VtZW50LCBhYnNfcmVwbGFjZW1lbnQpOgoJVXNlIGFkZF9yZWZlcmVuY2VkX3Zhci4KCSogdHJlZS1kZmEuYyAoc3RydWN0IHdhbGtfc3RhdGUpOiBSZW1vdmUuCgkoZmluZF9yZWZlcmVuY2VkX3ZhcnMpOiBSZW1vdmUgd2FsayBzdGF0ZSBhbmQgdmFyc19mb3VuZCBoYXNoIHRhYmxlLgoJKG1ha2VfcmVuYW1lX3RlbXApOiBVc2UgYWRkX3JlZmVyZW5jZWRfdmFyLgoJKGZpbmRfdmFyc19yKTogUGFzcyBsZXNzIHBhcmFtZXRlcnMgdG8gYWRkX3JlZmVyZW5jZWRfdmFyLgoJKHJlZmVyZW5jZWRfdmFyX3ApOiBOZXcuICBJcyB2YXIgaW4gcmVmZXJlbmNlZF92YXIgaGFzaCB0YWJsZS4KCShyZWZlcmVuY2VkX3Zhcl9pbnNlcnQpOiBBc3NlcnQgdmFyIGlzbid0IGFscmVhZHkgaW4gaGFzaCB0YWJsZS4KCShhZGRfcmVmZXJlbmNlZF92YXIpOiBEb24ndCBuZWVkIHdhbGtfc3RhdGUgcGFyYW1ldGVyLiAgQWRkIHZhciBpZiBpdAoJaXNuJ3QgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4KCShhZGRfcmVmZXJlbmNlZF90bXBfdmFyKTogUmVtb3ZlLgoJKGZpbmRfbmV3X3JlZmVyZW5jZWRfdmFyc18xKTogVXNlIGFkZF9yZWZlcmVuY2VkX3Zhci4KCSogdHJlZS1zc2EtcHJlLmMgKGNyZWF0ZV9leHByZXNzaW9uX2J5X3BpZWNlcywKCWluc2VydF9pbnRvX3ByZWRzX29mX2Jsb2NrLCBpbnNlcnRfZXh0cmFfcGhpcywgcmVhbGlmeV9mYWtlX3N0b3Jlcyk6CglVc2UgYWRkX3JlZmVyZW5jZWRfdmFyLgoJKiB0cmVlLXZlY3QtcGF0dGVybnMuYyAodmVjdF9wYXR0ZXJuX3JlY29nXzEpOiBVc2UgYWRkX3JlZmVyZW5jZWRfdmFyLgoJKiBsYW1iZGEtY29kZS5jIChsYnZfdG9fZ2NjX2V4cHJlc3Npb24sIGxsZV90b19nY2NfZXhwcmVzc2lvbiwKCWxhbWJkYV9sb29wbmVzdF90b19nY2NfbG9vcG5lc3QsIHBlcmZlY3RfbmVzdGlmeSk6IFVzZQoJYWRkX3JlZmVyZW5jZWRfdmFyLgoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3RfY3JlYXRlX2FkZHJfYmFzZV9mb3JfdmVjdG9yX3JlZiwKCXZlY3RfY3JlYXRlX2RhdGFfcmVmX3B0ciwgdmVjdF9jcmVhdGVfZGVzdGluYXRpb25fdmFyLAoJdmVjdF9pbml0X3ZlY3RvciwgdmVjdF9idWlsZF9sb29wX25pdGVycywKCXZlY3RfZ2VuZXJhdGVfdG1wc19vbl9wcmVoZWFkZXIsIHZlY3RfdXBkYXRlX2l2c19hZnRlcl92ZWN0b3JpemVyLAoJdmVjdF9nZW5fbml0ZXJzX2Zvcl9wcm9sb2dfbG9vcCwgdmVjdF9jcmVhdGVfY29uZF9mb3JfYWxpZ25fY2hlY2tzKToKCVVzZSBhZGRfcmVmZXJlbmNlZF92YXIuCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKGNyZWF0ZV90ZW1wKTogVXNlIGFkZF9yZWZlcmVuY2VkX3Zhci4KCSogdHJlZS1mbG93LmggKGFkZF9yZWZlcmVuY2VkX3RtcF92YXIpOiBSZW1vdmUgcHJvdG90eXBlCgkoYWRkX3JlZmVyZW5jZWRfdmFyKTogQWRkIHByb3RvdHlwZS4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoZ2V0X2NvbnN0cmFpbnRfZm9yLAoJaW50cmFfY3JlYXRlX3ZhcmlhYmxlX2luZm9zKTogVXNlIGFkZF9yZWZlcmVuY2VkX3Zhci4KCjIwMDYtMDUtMjMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3N1YnJlZyk6IEFkanVzdCBSRUdfT0ZGU0VUIGZvcgoJYmlnLWVuZGlhbiBwYXJhZG94aWNhbCBzdWJyZWdzLgoJKiB2YXItdHJhY2tpbmcuYyAoc3RydWN0IG1pY3JvX29wZXJhdGlvbl9kZWYpOiBEb2N1bWVudCB0aGF0LAoJZm9yIG1vZGlmeSBtaWNybyBvcGVyYXRpb25zLCBpbnNuIGlzIHRoZSBzdWJzZXF1ZW50IGluc3RydWN0aW9uLgoJKHZhcl9yZWdfZGVsZXRlX2FuZF9zZXQsIHZhcl9tZW1fZGVsZXRlX2FuZF9zZXQpOiBTcGxpdCBpbnRvLi4uCgkodmFyX3JlZ19zZXQsIHZhcl9tZW1fc2V0KTogLi4uIG5ldyBmdW5jdGlvbnMuCgkoYWRkX3N0b3Jlcyk6IFJlY29yZCBzdWJzZXF1ZW50IGluc24uCgkoY29tcHV0ZV9iYl9kYXRhZmxvdyk6IFVzZSBuZXcgZnVuY3Rpb25zIGZvciBNT19VU0UuCgkoZW1pdF9ub3Rlc19pbl9iYik6IFVzZSBuZXcgZnVuY3Rpb25zIGZvciBNT19VU0UuICBFbWl0IHVzZQoJbm90ZXMgYWZ0ZXIgdGhlIGluc24sIGFuZCBtb2RpZnkgbm90ZXMgYmVmb3JlIHRoZSBpbnNuIGtub3duCgl0byBiZSB0aGUgc3Vic2VxdWVudCBvbmUuCgkodnRfaW5pdGlhbGl6ZSk6IEludmVydCBzb3J0aW5nIG9mIE1PX0NMT0JCRVJzIGFuZCBNT19TRVRzLgoKMjAwNi0wNS0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgdGFyZ2V0LzI3Njk2CgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfYnVpbHRpbik6IFVzZQoJZ2VuX3NzZTNfbW9uaXRvcjY0IGZvciBUQVJHRVRfNjRCSVQuCgoyMDA2LTA1LTIyICBLZW5uZXRoIFphZGVjayA8emFkZWNrQG5hdHVyYWxicmlkZ2UuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjYzNzUKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjY4NTUKCSogZGYtcHJvYmxlbXMgKGRmX3J1X2JiX2xvY2FsX2NvbXB1dGVfcHJvY2Vzc19kZWYpOiBSZW1vdmVkIHVwZGF0ZQoJdG8gZ2VuIHNldC4KCShkZl9ydV9iYl9sb2NhbF9jb21wdXRlKTogUmV2ZXJzZWQgc3RhdGVtZW50cyBhbmQgcmVtb3ZlZCBib2d1cwoJY29tbWVudCBleHBsYWluaW5nIHdoeSB0aGV5IHNob3VsZCBiZSBpbiB3cm9uZyBvcmRlci4KCShkZl9ydV9kdW1wLCBkZl9yZF9kdW1wKTogRW5oYW5jZWQgZGVidWcgaW5mby4KCSogbW9kdWxvLXNjaGVkLmMgKHNtc19zY2hlZHVsZSwgdHJlZV9vcHRfcGFzcyBwYXNzX3Ntcyk6IEVuaGFuY2VkCglkZWJ1ZyBpbmZvLgoJKiBkZGcuYyAoYWRkX2RlcHNfZm9yX2RlZik6IENvbnZlcnRlZCB1c2Ugb2YgcmVhY2hpbmcgZGVmcyB0bwoJcmVhY2hpbmcgdXNlcyBhbmQgZml4ZWQgc3BhY2UgcHJvYmxlbS4KCjIwMDYtMDUtMjMgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaHVuaXQuYyAoZGVjaWRlX2lzX2Z1bmN0aW9uX25lZWRlZCk6IEFsc28gbmVzdGVkIGZ1bmN0aW9ucwoJYW5kIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbmxpbmUgY2FuIGJlIG9wdGltaXplZCBvdXQgYXQgLU8wLgoKMjAwNi0wNS0yMiAgR2VyYWxkIFBmZWlmZXIgIDxnZXJhbGRAcGZlaWZlci5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChDb25maWd1cmF0aW9uKTogUmVtb3ZlIHJlZmVyZW5jZSB0byBDcm9zc0dDQwoJRkFRIHdoaWNoIHdhcyBnb25lLgoJKEJ1aWxkaW5nKTogRGl0dG8uCgoyMDA2LTA1LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMjcyNjYKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9icmFuY2gpOiBKdW1wIHRvIHNpbXBsZSBpZgoJaXg4Nl9jb21wYXJlX2VtaXR0ZWQgaXMgbm9uLU5VTEwuCgoyMDA2LTA1LTIyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNzQ1MQoJKiBzdG10LmMgKGV4cGFuZF9hc21fb3BlcmFuZHMpOiBTa2lwIGFzbSBzdGF0ZW1lbnQgd2l0aCBlcnJvbmVvdXMKCWNsb2JiZXJzLgoKMjAwNi0wNS0yMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yNTUxNAoJKiBjb21iaW5lLmMgKHJlcGxhY2VkX3Joc19pbnNuKTogTmV3IHZhcmlhYmxlLgoJKGNvbWJpbmVfaW5zdHJ1Y3Rpb25zKTogU2V0IHJlcGxhY2VkX3Joc19pbnNuIHdoZW4gdHJ5aW5nIHRvIHJlcGxhY2UKCWEgU0VUX1NSQyB3aXRoIGEgUkVHX0VRVUFMIG5vdGUuCgkoZGlzdHJpYnV0ZV9ub3Rlcyk6IFVzZSByZXBsYWNlZF9yaHNfaW5zbiB3aGVuIGRldGVybWluaW5nIHRoZSBsaXZlCglyYW5nZSBvZiBhIFJFR19ERUFEIHJlZ2lzdGVyLgoKMjAwNi0xOC0wNSAgSm9lcmcgV3Vuc2NoIDxqLmdudUB1cmlhaC5oZWVwLnNheC5kZT4KCSAgICBBbmF0b2x5IFNva29sb3YgPGFlc29rQHBvc3QucnU+CgoJKiBjb25maWcvYXZyL2F2ci5jIChhdnJfbWN1X3R5cGVzKTogQWRkIHN1cHBvcnQgZm9yIGF0dGlueTI2MSwKCWF0dGlueTQ2MSwgYXR0aW55ODYxLCBhdHRpbnkyNSwgYXR0aW55NDUsIGF0dGlueTg1LCBhdHRpbnkyNCwKCWF0dGlueTQ0LCBhdHRpbnk4NCwgYXQ5MHB3bTIsIGF0OTBwd20zLCBhdG1lZ2ExNjVwLCBhdG1lZ2ExNjlwLAoJYXRtZWdhMTY0cCwgYXRtZWdhMzI0cCwgYXRtZWdhNjQ0cCwgYXRtZWdhNjQ0LCBhdG1lZ2EzMjksCglhdG1lZ2EzMjkwLCBhdG1lZ2E2NDksIGF0bWVnYTY0OTAsIGF0bWVnYTQwNiwgYXRtZWdhNjQwLAoJYXRtZWdhMTI4MCwgYXRtZWdhMTI4MSwgYXQ5MGNhbjMyLCBhdDkwY2FuNjQsIGF0OTB1c2I2NDYsCglhdDkwdXNiNjQ3LCBhdDkwdXNiMTI4NiBhbmQgYXQ5MHVzYjEyODcgZGV2aWNlcy4KCSogY29uZmlnL2F2ci9hdnIuaCAoTElOS19TUEVDLCBDUlRfQklOVVRJTFNfU1BFQ1MpOiAoRGl0dG8uKS4KCSogY29uZmlnL2F2ci90LWF2ciAoTVVMVElMSUJfTUFUQ0hFUyk6IChEaXR0by4pLgoKMjAwNi0wNS0yMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBta2xpYmdjYy5pbiAobGliMmZ1bmNzKTogUmVtb3ZlIF9mbG9hdGRpZGYgZnJvbSBpbml0aWFsIGFzc2lnbm1lbnQuCgoyMDA2LTA1LTIyICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUmV2ZXJ0CgkyMDA2LTAxLTMxICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CglQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aSAoLS1kaXNhYmxlLWxpYmdjYy1tYXRoKTogRG9jdW1lbnQuCgoyMDA2LTA1LTIyICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUmV2ZXJ0CgkyMDA2LTAxLTMxICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1tc3NlbGlibSk6IERvY3VtZW50LgoJKiB0YXJnZXQuaCAoZXhwYW5kX2xpYnJhcnlfYnVpbHRpbik6IE5ldyB0YXJnZXQgaG9vay4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW4pOiBVc2UgZXhwYW5kX2xpYnJhcnlfYnVpbHRpbi4KCShkZWZhdWx0X2V4cGFuZF9saWJyYXJ5X2J1aWx0aW4pOiBOZXcgZnVuY3Rpb24uCgkqIGdjYy5jIChMSU5LX0dDQ19NQVRIX1NQRUMpOiBEZWZpbmUuCgkoTElOS19DT01NQU5EX1NQRUMpOiBIYW5kbGUgJShsaW5rX2djY19tYXRoKS4KCShsaW5rX2djY19tYXRoX3NwZWMpOiBEZWNsYXJlLgoJKHN0YXRpY19zcGVjcyk6IEFkZCBsaW5rX2djY19tYXRoX3NwZWMuCgkqIGV4cHIuaCAoZGVmYXVsdF9leHBhbmRfbGlicmFyeV9idWlsdGluKTogRGVjbGFyZS4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfRVhQQU5EX0xJQlJBUllfQlVJTFRJTik6IERlZmluZS4KCShUQVJHRVRfSU5JVElBTElaRVIpOiBBZGQgVEFSR0VUX0VYUEFORF9MSUJSQVJZX0JVSUxUSU4uCgkqIGNvbmZpZy9pMzg2L2kzODYuaDogUHJvdmlkZSBMSU5LX0dDQ19NQVRIX1NQRUMuCgkqIGNvbmZpZy9pMzg2L2kzODYub3B0IChtc3NlbGlibSk6IE5ldyB0YXJnZXQgb3B0aW9uLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfYnVpbHRpbl9mdW5jdGlvbl92YXJpYW50cyk6IE5ldyBhcnJheS4KCShpeDg2X2luaXRfc3NlX2FiaV9idWlsdGlucyk6IE5ldyBmdW5jdGlvbi4KCShpeDg2X2V4cGFuZF9saWJyYXJ5X2J1aWx0aW4pOiBMaWtld2lzZS4KCShUQVJHRVRfRVhQQU5EX0xJQlJBUllfQlVJTFRJTik6IERlZmluZS4KCShvdmVycmlkZV9vcHRpb25zKTogSGFuZGxlIGVycm9yIGNvbmRpdGlvbnMgd3J0IC1tc3NlbGlibS4KCShpeDg2X2J1aWx0aW5zKTogQWRkIGZ1bmN0aW9uIGNvZGVzIGZvciBTU0UyIEFCSSBidWlsdGlucy4KCShpeDg2X2luaXRfYnVpbHRpbnMpOiBDYWxsIGl4ODZfaW5pdF9zc2VfYWJpX2J1aWx0aW5zLgoJKiBkb2MvZXh0ZW5kLnRleGkgKF9fYnVpbHRpbl9zc2UyXyopOiBEb2N1bWVudCBuZXcgdGFyZ2V0IHNwZWNpZmljCglidWlsdGlucy4KCjIwMDYtMDUtMjIgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYy8yNzQyMAoJKiBjLWNvbW1vbi5jIChzZWxmX3Byb21vdGluZ19hcmdzX3ApOiBTa2lwIGVycm9uZW91cyBhcmdzLgoKCVBSIGMvMjY4MTgKCSogYy1kZWNsLmMgKGZpbmlzaF9zdHJ1Y3QpOiBTa2lwIGVycm9uZW91cyBmaWVsZHMuCgoyMDA2LTA1LTIyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL2NyaXMvY3Jpcy5vcHQgKG1hcmNoKTogUmVtb3ZlIFZhckV4aXN0cyBhdHRyaWJ1dGUuCgkobWF4LXN0YWNrZnJhbWU9KTogTGlrZXdpc2UuCgoyMDA2LTA1LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9ydGwudGV4aTogRml4IGEgdHlwby4KCSogc2VlLmM6IEZpeCBjb21tZW50IHR5cG9zLgoKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuaCAoYWxpYXNfaW5mbyk6IFJlbW92ZSBudW1fcmVmZXJlbmNlcy4KCjIwMDYtMDUtMjEgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogY29uZmlnL2Rhcndpbi1jLmMgKEJBRCk6IENvbmRpdGlvbmFsaXplIG9uIE9QVF9XcHJhZ21hcy4KCShCQUQyKTogQWRkLgoJKGRhcndpbl9wcmFnbWFfb3B0aW9ucyk6IFVzZSBCQUQgaW5zdGVhZC4KCShkYXJ3aW5fcHJhZ21hX3VudXNlZCk6IExpa2V3aXNlLgoJKGRhcndpbl9wcmFnbWFfbXNfc3RydWN0KTogTGlrZXdpc2UuCgoyMDA2LTA1LTIxICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoZmxvYXRzaXRmMik6IFJlbW92ZSBjb25zdHJhaW50cy4KCjIwMDYtMDUtMjEgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjc2NzEKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uXzEpOiBGaXgKCXNpbXBsaWZpY2F0aW9ucyBvZiAoZXEvbmUgKHhvciB4IHkpIHkpIGFuZAoJKGVxL25lICh4b3IgeCB5KSB4KS4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNjYyMi4KCSogZm9sZC1jb25zdC5jIChmb2xkX3Rlcm5hcnkpIDxDT05EX0VYUFI+OiBDYWxsIGZvbGRfY29udmVydAoJb24gYXJnMS4KCjIwMDYtMDUtMjEgIEJlcm5oYXJkIEZpc2NoZXIgIDxhbGRvdEBnY2MuZ251Lm9yZz4KCgkqIHRyZWUtY2ZnLmM6IFBydW5lIHdoaXRlc3BhY2UuCgkoZGVidWdfdHJlZV9jZmcpOiBQb2ludCB0byBjb3JyZWN0IGhlYWRlciBjb250YWluaW5nIHRoZQoJVERGXyogZGVmaW5lcy4KCjIwMDYtMDUtMjEgIEJlcm5oYXJkIEZpc2NoZXIgIDxhbGRvdEBnY2MuZ251Lm9yZz4KCglQUiBtaWRkbGUtZW5kLzI1Nzc2CgkqIGNncmFwaHVuaXQuYyAodmVyaWZ5X2NncmFwaF9ub2RlKTogVHlwbyBpbiBlcnJvciBtZXNzYWdlLgoKMjAwNi0wNS0yMCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgbWlkZGxlLWVuZC8yNTc3NgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9vcHRpbWl6ZSk6IERvbid0IHJ1biBpcGEgcGFzc2VzIGlmIGVycm9yCglvciBzb3JyeSBjb3VudCBpcyBub24gemVyby4KCjIwMDYtMDUtMjAgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBjb25maWcvcGEvcGEtbGludXguaCAoU1RSSU5HX0FTTV9PUCk6IFByZXBlbmQgYW5kIGFwcGVuZCBhIHRhYi4KCjIwMDYtMDUtMTkgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoJICAgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yNjg1NQoKCSogZGYtc2Nhbi5jIChtd19yZWdfcG9vbCwgbXdfbGlua19wb29sKTogTmV3IGFsbG9jYXRpb24gcG9vbHMgZm9yCgltdWx0aXdvcmQgcmVmcy4KCShkZl9zY2FuX2FsbG9jKTogQWRkZWQgY29kZSB0byBwcm9wZXJseSBoYW5kbGUgbXVsdGl3b3JkIGhhcmQKCXJlZ2lzdGVycyBhbmQgYWRkIGFsbF9ibG9ja3MgcGFyYW1ldGVyLgoJKGRmX3NjYW5fZnJlZV9pbnRlcm5hbCwgZGZfaW5zbl9yZWZzX2RlbGV0ZSwgZGZfcmVmX3JlY29yZCk6IEFkZGVkCgljb2RlIHRvIHByb3Blcmx5IGhhbmRsZSBtdWx0aXdvcmQgaGFyZCByZWdpc3RlcnMuCgkoZGZfcmVzY2FuX2Jsb2Nrcyk6IEFkZGVkIGNvZGUgdG8gcmVtb3ZlIGRlbGV0ZWQgYmxvY2tzIGZyb20KCWJpdG1hcC4KCShkZl9yZWZfY3JlYXRlX3N0cnVjdHVyZSwgZGZfcmVmX3JlY29yZCk6IEFkZGVkIGNvZGUgdG8gcHJvcGVybHkKCWhhbmRsZSBzdWJyZWdzLgoJKGRmX3JlZl9yZWNvcmRfMSk6IENoYW5nZWQgREZfUkVGX0NMT0JCRVIgaW50byBERl9SRUZfTVVTVF9DTE9CQkVSCglhbmQgc2V0IERGX1JFRl9QQVJUSUFMLgoJKGRmX2RlZnNfcmVjb3JkKTogQ2hhbmdlZCBERl9SRUZfQ0xPQkJFUiBpbnRvIERGX1JFRl9NVVNUX0NMT0JCRVIuCgkoZGZfdXNlc19yZWNvcmQpOiBBZGRlZCBERl9SRUZfUEFSVElBTCBmb3Igc3VicmVnLgoJKGRmX3NjYW5fYWRkX3Byb2JsZW0pOiBBZGRlZCBmbGFncyBwYXJhbWV0ZXIuCgkoZGZfcmVmX2NyZWF0ZV9zdHJ1Y3R1cmUpOiBDaGFuZ2VkIHN3aXRjaGluZyBzdHJ1Y3R1cmUuCgkoZGZfYmJfcmVmc19yZWNvcmQpOiBGaXhlZCBjYXNlIHdoZXJlIGR1cGxpY2F0ZSBhcnRpZmljaWFsIHJlZnMKCXdlcmUgY3JlYXRlZC4gIENoYW5nZWQgbG9jYXRpb24gb2YgZmxhZ3MuCgkoZGZfcmVjb3JkX2VudHJ5X2Jsb2NrX2RlZnMpOiBBZGRlZCBjb2RlIHRvIG1ha2Ugc3RhY2sgcG9pbnRlcgoJbGl2ZSBpbiBlbnRyeSBibG9jay4gIFJlZmluZWQgY2FzZXMgd2hlcmUgZnJhbWUgcG9pbnRlciBpcyBuZWVkZWQuCglDaGFuZ2VkIGxvY2F0aW9uIG9mIGZsYWdzLgoJKGRmX3JlY29yZF9leGl0X2Jsb2NrX3VzZXMsIGRmX2luc25fcmVmc19yZWNvcmQpOiBDaGFuZ2VkIGxvY2F0aW9uIG9mIGZsYWdzLgoJKGRmX3NldF9zdGF0ZSk6IFJlbW92ZWQgZnVuY3Rpb24uCgkoZGZfZ3Jvd19yZWdfaW5mbywgZGZfcmVnX2NoYWluX3VubGluaywgZGZfcmVmX3JlbW92ZSwKCWRmX2luc25fY3JlYXRlX2luc25fcmVjb3JkLCBkZl9pbnNuX3JlZnNfZGVsZXRlLAoJZGZfcmVmX2NyZWF0ZV9zdHJ1Y3R1cmUpOiBGb3JtYXR0aW5nIGNoYW5nZXMuCgkqIGRmLWNvcmUuYyAoZGZfbXZzX2R1bXAsIGRmX3NldF9mbGFncywgZGZfY2xlYXJfZmxhZ3MsCglkZl9kZWxldGVfYmFzaWNfYmxvY2spOiBOZXcgZnVuY3Rpb24uCgkoZGZfaW5pdCk6IENoYW5nZWQgbG9jYXRpb24gb2YgZmxhZ3MuCgkoZGZfYWRkX3Byb2JsZW0pOiBBZGRlZCBmbGFncyBwYXJhbWV0ZXIgYW5kIHRoZSB3YXkgZmxhZ3MgYXJlCglwcm9jZXNzZWQuCgkoZGZfaW5zbl91aWRfZGVidWcsIGRmX3JlZl9kZWJ1ZywgZGVidWdfZGZfZGVmbm8sIGRlYnVnX2RmX3JlZiwKCWRlYnVnX2RmX2NoYWluKTogSW1wcm92ZWQgZGVidWdnaW5nIG91dHB1dC4KCShkZl9pbnNuX2RlYnVnLCBkZl9pbnNuX3VpZF9kZWJ1Zyk6IEFkZGVkIG11bHRpd29yZCByZWcgc3VwcG9ydC4KCShkZl9yZWZzX2NoYWluX2R1bXApOiBSZW1vdmVkIGRmIHBhcmFtZXRlci4KCShkZl9pdGVyYXRpdmVfZGF0YWZsb3cpOiBBZGRlZCBjb25zaXN0ZW5jeSBjaGVjay4KCShkZl9wcnVuZV90b19zdWJjZmcpOiBNYWRlIHB1YmxpYy4KCShkZl9hbmFseXplX3Byb2JsZW0pOiBBZGRlZCBibG9ja3NfdG9faW5pdCBwYXJhbWV0ZXIgYW5kIG1hZGUKCXB1YmxpYy4KCShkZl9yZWZfcmVjb3JkLCBkZl9iYl9yZWZzX3JlY29yZCwgZGZfbWFya19yZWcsCgkgZGZfcmVjb3JkX2V4aXRfYmxvY2tfdXNlcyk6IFdoaXRlc3BhY2UgY2hhbmdlcy4KCShkZl9kdW1wKTogV2hpdGVzcGFjZSBjaGFuZ2VzLgoJKiBkZi5oOiBTb21lIHJlb3JkZXJpbmcgdG8gcmVtb3ZlIGZvcndhcmQgcmVmZXJlbmNlcy4KCShkZl9yZWZfZmxhZ3MuREZfUkVGX01XX0hBUkRSRUcsIERGX1JFRl9QQVJUSUFMLAoJREZfUkVGX01VU1RfQ0xPQkJFUiwgREZfUkVGX01BWV9DTE9CQkVSKTogTmV3IGZpZWxkcy4KCShkZl9yZWZfZmxhZ3MuREZfUkVGX0NMT0JCRVIpOiBEZWxldGVkIGZpZWxkLgoJKGRhdGFmbG93LmZsYWdzKTogTmV3IGZpZWxkLgoJKGRmLmZsYWcpOiBEZWxldGVkIGZpZWxkLgoJKGRmX2FsbG9jX2Z1bmN0aW9uKTogQWRkZWQgYWRkaXRpb25hbCBiaXRtYXAgcGFyYW1ldGVyLgoJKGRmX2RlcGVuZGVudF9wcm9ibGVtX2Z1bmN0aW9uKTogTmV3IHR5cGUuCgkoZGZfcHJvYmxlbS5jaGFuZ2VhYmxlX2ZsYWdzKTogTmV3IGZpZWxkLgoJKGRmX3JlZl9mbGFncy5ERl9SRUZfRElFU19BRlRFUl9USElTX1VTRSwgREZfU0NBTl9JTklUSUFMLAoJREZfU0NBTl9HTE9CQUwsIERGX1NDQU5fUE9TVF9BTExPQywgZGZfc3RhdGUpOiBSZW1vdmVkLgoJKGRmX213X2hhcmRyZWcpOiBOZXcgc3RydWN0LgoJKERGX0lOU05fVUlEX01XUyk6IE5ldyBtYWNyby4KCShkZl9yZWZzX2NoYWluX2R1bXAsIGRmX3JlZl9kZWJ1ZywgZGZfY2hhaW5fZHVtcCk6IFJlbW92ZWQgZGYKCXBhcmFtZXRlci4KCShkZl9hZGRfcHJvYmxlbSwgZGZfcnVfYWRkX3Byb2JsZW0sIGRmX3JkX2FkZF9wcm9ibGVtLAoJZGZfbHJfYWRkX3Byb2JsZW0sIGRmX3VyX2FkZF9wcm9ibGVtLCBkZl91cmVjX2FkZF9wcm9ibGVtLAoJZGZfcmlfYWRkX3Byb2JsZW0sIGRmX3NjYW5fYWRkX3Byb2JsZW0pOiBBZGRlZCBmbGFncyBwYXJhbWV0ZXIuCgkoZGZfc2V0X3N0YXRlKTogUmVtb3ZlZCBmdW5jdGlvbi4KCShkZl9zZXRfZmxhZ3MsIGRmX2NsZWFyX2ZsYWdzLCBkZl9kZWxldGVfYmFzaWNfYmxvY2spIE5ldyBmdW5jdGlvbnMuCgkqIGRmLXByb2JsZW1zLmMgKGRmX2NoYWluX2R1bXApOiBSZW1vdmVkIGRmIHBhcmFtZXRlci4KCShkZl9ydV9hbGxvYywgZGZfcmRfYWxsb2MsIGRmX2xyX2FsbG9jLCBkZl91cl9hbGxvYywKCWRmX3VyZWNfYWxsb2MsIGRmX2NoYWluX2FsbG9jLCBkZl9yaV9hbGxvYyk6IEFkZGVkIGFsbCBibG9ja3MKCXBhcmFtZXRlci4KCShkZl9ydV9hbGxvYywgZGZfcmRfYWxsb2MpOiBOb3cgcmVzZXRzIGFsbCBibG9ja3MuCgkoZGZfcmRfYmJfbG9jYWxfY29tcHV0ZV9wcm9jZXNzX2RlZiwgZGZfdXJfYmJfbG9jYWxfY29tcHV0ZSwKCWRmX2NoYWluX2NyZWF0ZV9iYiwgZGZfY3JlYXRlX3VudXNlZF9ub3RlLCBkZl9yaV9iYl9jb21wdXRlKToKCVNwbGl0IERGX1JFRl9DTE9CQkVSIGludG8gREZfUkVGX01BWV9DTE9CQkVSIGFuZAoJREZfUkVGX01VU1RfQ0xPQkJFUiBjYXNlcy4KCShkZl9ydV9iYl9sb2NhbF9jb21wdXRlX3Byb2Nlc3NfZGVmLAoJZGZfcmRfYmJfbG9jYWxfY29tcHV0ZV9wcm9jZXNzX2RlZiwgZGZfbHJfYmJfbG9jYWxfY29tcHV0ZSwKCWRmX2xyX2JiX2xvY2FsX2NvbXB1dGUsIGRmX3VyX2JiX2xvY2FsX2NvbXB1dGUsCglkZl9jaGFpbl9jcmVhdGVfYmIpOiBNYWRlIHN1YnJlZyBhd2FyZS4KCShkZl9ydV9iYl9sb2NhbF9jb21wdXRlLCBkZl9yZF9iYl9sb2NhbF9jb21wdXRlLAoJZGZfbHJfYmJfbG9jYWxfY29tcHV0ZSwgZGZfbHJfYmJfbG9jYWxfY29tcHV0ZSwKCWRmX2NoYWluX2NyZWF0ZV9iYik6IENsZWFudXAgdG8gdXNlIHByb3BlciBtYWNyb3MuCgkoZGZfdXJfbG9jYWxfZmluYWxpemUsIGRmX3VyZWNfbG9jYWxfZmluYWxpemUpOiBSZW1vdmVkIHVubmVjZXNzYXJ5Cgljb2RlIHRvIGZpeHVwIGJpdHZlY3RvcnMuCgkoZGZfcmlfYWxsb2MpOiBDbGVhcmVkIGxpZmV0aW1lLgoJKGRmX2lnbm9yZV9zdGFja19yZWcsIGRmX2tpbGxfbm90ZXMsIGRmX3NldF9ub3Rlc19mb3JfbXcsCglkZl9jcmVhdGVfdW51c2VkX25vdGUpOiBOZXcgZnVuY3Rpb24uCgkoZGZfcmlfYmJfY29tcHV0ZSwgZGZfcmlfY29tcHV0ZSk6IEFkZGVkIGNvZGUgdG8gY3JlYXRlL3VwZGF0ZQoJUkVHX0RFQUQgYW5kIFJFR19VTlVTRUQgbm90ZXMgYXMgd2VsbCBhcyByZWdpc3RlciBpbmZvcm1hdGlvbi4KCShkZl9ydV9kdW1wLCBkZl9yZF9kdW1wLCBkZl9scl9kdW1wLCBkZl91cl9kdW1wLCBkZl91cmVjX2R1bXAsCglkZl9jaGFpbnNfZHVtcCk6IEZpeGVkIGNyYXNoIGlmIHByb2JsZW0gd2FzIG5ldmVyIHJ1bi4KCShkZl9ydV9hZGRfcHJvYmxlbSwgZGZfcmRfYWRkX3Byb2JsZW0sIGRmX2xyX2FkZF9wcm9ibGVtLAoJZGZfdXJfYWRkX3Byb2JsZW0sIGRmX3VyZWNfYWRkX3Byb2JsZW0sIGRmX2NoYWluX2FkZF9wcm9ibGVtLAoJZGZfcmlfYWRkX3Byb2JsZW0pOiBQcm9jZXNzZXMgZmxhZ3MgaW4gdW5pZm9ybSBtYW5uZXIuCgkoZGZfcnVfYWxsb2MsIGRmX3J1X2xvY2FsX2NvbXB1dGUsIGRmX3J1X2NvbmZsdWVuY2VfbiwgZGZfcnVfZnJlZSwKCWRmX3J1X2R1bXAsIGRmX3JkX2xvY2FsX2NvbXB1dGUsIGRmX3JkX2NvbmZsdWVuY2VfbiwgZGZfcmRfZnJlZSwKCWRmX3JkX2R1bXAsIGRmX3VyZWNfZnJlZV9iYl9pbmZvKTogRm9ybWF0dGluZyBjaGFuZ2VzLgoJKGRmX3J1X2ZyZWVfYmJfaW5mbywgZGZfcnVfYmJfbG9jYWxfY29tcHV0ZSwgZGZfcnVfZHVtcCwKCWRmX3JkX2ZyZWVfYmJfaW5mbywgZGZfcmRfYmJfbG9jYWxfY29tcHV0ZV9wcm9jZXNzX2RlZiwKCWRmX3JkX2JiX2xvY2FsX2NvbXB1dGUsIGRmX3JkX2R1bXAsIGRmX2xyX2ZyZWVfYmJfaW5mbywKCWRmX2xyX2JiX2xvY2FsX2NvbXB1dGUsIGRmX2xyX2xvY2FsX2NvbXB1dGUsIGRmX3VyX2ZyZWVfYmJfaW5mbywKCWRmX3VyX2R1bXAsIGRmX3VyZWNfZnJlZV9iYl9pbmZvLCBkZl91cmVjX2R1bXAsCglkZl9jaGFpbl9jcmVhdGVfYmIsIGRmX3JpX2JiX2NvbXB1dGUpOiBXaGl0ZXNwYWNlIGNoYW5nZXMuCgkqIG1vZHVsby1zY2hlZC5jIChzbXNfc2NoZWR1bGUpOiBBZGRlZCBmbGFnIHBhcmFtZXRlciB0byBjYWxscy4KCSogc2VlLmMgKHNlZV9pbml0aWFsaXplX2RhdGEpOiBEaXR0by4KCSogZmluYWwuYyAocmVzdF9vZl9jbGVhbl9zdGF0ZSkgQWRkZWQgcmVnc3RhY2tfY29tcGxldGVkLgoJKiBydGwuaCAocmVnc3RhY2tfY29tcGxldGVkKTogRGl0dG8uCgkqIHJlZy1zdGFjay5jIChyZWdzdGFja19jb21wbGV0ZWQpOiBEaXR0by4KCjIwMDYtMDUtMTkgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogYy10cmVlLmggKGRlZmF1bHRfY29udmVyc2lvbik6IFJlbW92ZS4KCSogYy1jb21tb24uaCAoZGVmYXVsdF9jb252ZXJzaW9uKTogQWRkLgoKMjAwNi0wNS0xOSAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS12cnAuYyAodmFsaWRfdmFsdWVfcCk6IE5ldyBmdW5jdGlvbi4KCShhZGp1c3RfcmFuZ2Vfd2l0aF9zY2V2KTogRmFpbCBpZiB0aGUgdmFsdWUgb2YgYm91bmQgaXMgbm90CglzaW1wbGUuCgoyMDA2LTA1LTE5ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL2xpbnV4LXVud2luZC5oOiBJbmNsdWRlIDxhc20vdW5pc3RkLmg+CgkobWlwc19mYWxsYmFja19mcmFtZV9zdGF0ZSk6IFVzZSBzeXNjYWxsIG51bWJlcnMgdG8gZGV0ZXJtaW5lCgl0aGUgYXBwcm9wcmlhdGUgbGkgaW5zdHJ1Y3Rpb24gZm9yIHRoZSBjdXJyZW50IEFCSS4gIE9ubHkgdXNlCglfX05SX3NpZ3JldHVybiBmb3IgbzMyLgoKMjAwNi0wNS0xOSAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWRhY29yZS5jb20+CgoJKiBsYW5naG9va3MuaCAoc3RydWN0IGxhbmdfaG9va3MpOiBBZGQgZHdhcmZfbmFtZSBsYW5ndWFnZSBob29rLgoJKiBsYW5naG9va3MuYyAobGhkX2R3YXJmX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkqIGxhbmdob29rcy1kZWYuaCAobGhkX2R3YXJmX25hbWUpOiBEZWNsYXJlLgoJKExBTkdfSE9PS1NfRFdBUkZfTkFNRSk6IE5ldyBtYWNybywgZGVmYXVsdHMgdG8gbGhkX2R3YXJmX25hbWUuCgkqIGR3YXJmMm91dC5jIChkd2FyZjJfbmFtZSk6IFVzZSB0aGUgZHdhcmZfbmFtZQlsYW5ndWFnZSBob29rLgoKMjAwNi0wNS0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsaWJnY2MyLmMgKE1JTl9VTklUU19QRVJfV09SRCk6IE1vdmUgZGVmYXVsdCBkZWZpbml0aW9uIGZyb20KCWxpYmdjYzIuaC4KCShMSUJHQ0MyX1VOSVRTX1BFUl9XT1JEKTogUHJvdmlkZSBkZWZhdWx0IGRlZmluaXRpb24sIHVzaW5nIG9sZAoJTUlOX1VOSVRTX1BFUl9XT1JEIGxvZ2ljIGZyb20gbGliZ2NjMi5oLiAgRG8gbm90aGluZyBpZgoJTElCR0NDMl9VTklUU19QRVJfV09SRCA+IE1JTl9VTklUU19QRVJfV09SRC4KCSogbGliZ2NjMi5oIChNSU5fVU5JVFNfUEVSX1dPUkQpOiBSZW1vdmUgZGVmaW5pdGlvbiBmcm9tIGhlcmUuCglVc2UgTElCR0NDMl9VTklUU19QRVJfV09SRCByYXRoZXIgdGhhbiBNSU5fVU5JVFNfUEVSX1dPUkQgdG8KCWRldGVybWluZSB0aGUgc2l6ZSBvZiBXdHlwZSwgZXRjLgoJKiBta2xpYmdjYy5pbiAoTElCMl9TSURJVElfQ09OVl9GVU5DUyk6IE5ldyBhcmd1bWVudC4KCShzd2Zsb2F0ZnVuY3MpOiBOZXcgdmFyaWFibGUuCgkoZHdmbG9hdGZ1bmNzKTogTGlrZXdpc2UuCgkobGliMmZ1bmNzKTogUmVtb3ZlIGZsb2F0aW5nLXBvaW50IGNvbnZlcnNpb24gZnVuY3Rpb25zIGZyb20KCWluaXRpYWwgYXNzaWdubWVudC4gIFVzZSBMSUIyX1NJRElUSV9DT05WX0ZVTkNTIHRvIGRldGVybWluZQoJdGhlIHNldCBvZiBjb252ZXJzaW9uIHJvdXRpbmVzIG5lZWRlZC4gIEFsbG93IGVudHJpZXMgdG8gc3BlY2lmeQoJYW4gb2JqZWN0IG5hbWUsIGZpbGVuYW1lIGFuZCB3b3JkIHNpemUuICBVcGRhdGUgdXNlcnMgYWNjb3JkaW5nbHkuCgkqIE1ha2VmaWxlLmluIChsaWJnY2MubWspOiBQYXNzIExJQjJfU0lESVRJX0NPTlZfRlVOQ1MuCgkqIGNvbmZpZy9taXBzL3QtbWlwcyAoTElCMl9TSURJVElfQ09OVl9GVU5DUyk6IERlZmluZS4KCglSZXZlcnQ6CgoJMjAwNi0wMi0wOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgdGFyZ2V0LzIyMjA5CgkqIGNvbmZpZy9maXh0ZmRpLmM6IE5ldyBsaWJnY2Mgc291cmNlIGZpbGUuCgkqIGNvbmZpZy9maXh1bnN0ZmRpLmM6IE5ldyBzb3VyY2UgZmlsZS4KCSogY29uZmlnL2Zsb2F0ZGl0Zi5jOiBOZXcgc291cmNlIGZpbGUuCgkqIGNvbmZpZy9mbG9hdHVuZGl0Zi5jOiBOZXcgc291Y2UgZmlsZS4KCSogY29uZmlnL21pcHMvdC1pcmlzNiAoTElCMkZVTkNTX0VYVFJBKTogSW5jbHVkZSB0aGUgbmV3IHNvdXJjZQoJZmlsZXMgYWJvdmUgaW5zdGVhZCBvZiBjb25maWcvbWlwcy9fdGlsaWIuYy4KCSogY29uZmlnL21pcHMvdC1saW51eDY0IChMSUIyRlVOQ1NfRVhUUkEpOiBMaWtld2lzZS4KCjIwMDYtMDUtMTggIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS90LWhwdXgtc2hsaWIgKFNITElCX0xJTkspOiBSZW1vdmUgYC1sYycuCgkqIHBhL3BhLWhwdXgxMS5oIChMSUJfU1BFQyk6IFVwZGF0ZSBjb21tZW50LgoKMjAwNi0wNS0xOCAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJRml4IHVwIHZsYSwgdm0gYW5kIFsqXSBzZW1hdGljcy4KCglQUiBjLzE4NzQwCglQUiBjLzc5NDgKCVBSIGMvMjU4MDIKCVBSIGMvMjc2NzMKCSogYy10cmVlLmggKHN0cnVjdCBjX2FyZ19pbmZvKTogQWRkIGhhZF92bGFfdW5zcGVjLgoJKGNfdmxhX3Vuc3BlY19wKTogQWRkLgoJKGNfdmxhX3R5cGVfcCk6IEFkZC4KCSogYy1kZWNsLmMgKHN0cnVjdCBjX3Njb3BlKTogQWRkIGhhZF92bGFfdW5zcGVjLgoJKGJ1aWxkX2FycmF5X2RlY2xhcmF0b3IpOiBBZGQgc3VwcG9ydCBmb3IgWypdLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoZ3Jva3Bhcm1zKTogTGlrZXdpc2UuCgkoZ2V0X3Bhcm1faW5mbyk6IExpa2V3aXNlLgoJKiBjLW9iamMtY29tbW9uLmMgKGNfdmxhX3Vuc3BlY19wKTogTGlrZXdpc2UuCgkqIGMtb2JqYy1jb21tb24uaCAoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX1ZBUl9NT0RfVFlQRV9QKTogTGlrZXdpc2UuCgkqIGMtcGFyc2VyLmMgKGNfcGFyc2VyX3R5cGVvZl9zcGVjaWZpZXIpOiBFdmFsdWF0ZSBhcmd1bWVudHMgdG8KCXR5cGVvZiB3aGVuIGFyZ3VtZW50IGlzIGEgdmFyaWFibHkgbW9kaWZpZWQgdHlwZSBub3QgaW5zaWRlIHNpemVvZiBvciBhbGlnbm9mLgoJKGNfcGFyc2VyX2RpcmVjdF9kZWNsYXJhdG9yX2lubmVyKTogUHJvcGFnYXRlIGVycm9ycy4KCShjX3BhcnNlcl9zaXplb2ZfZXhwcmVzc2lvbik6IEFkZCBzdXBwb3J0IGZvciBbKl0uCgkoY19wYXJzZXJfcGFybXNfZGVjbGFyYXRvcik6IEluaXRpYWxpemUgaGFkX3ZsYV91bnNwZWMuCgkoY19wYXJzZXJfcGFybXNfbGlzdF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkqIGMtdHlwZWNrLmMgKGNfdmxhX3R5cGVfcCk6IEFkZC4KCShjb21wb3NpdGVfdHlwZSk6IEFkZCBzdXBwb3J0IGZvciB2bGEgY29tcG9zaXRpbmcuCgkoY29tcHR5cGVzX2ludGVybmFsKTogQWRkIHN1cHBvcnQgZm9yIHZsYSBjb21wYXRpYmlsaXR5LgoJKGNfZXhwcl9zaXplb2ZfZXhwcik6IEV2YWx1YXRlIHZsYSBhcmd1bWVudHMuCgkqIHRyZWUuYyAodmFyaWFibHlfbW9kaWZpZWRfdHlwZV9wKTogVXBkYXRlIGNvbW1lbnQgZm9yIFsqXS4KCjIwMDYtMDUtMTggIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCglQUiB0YXJnZXQvMjc1OTkKCSogY29uZmlnLmhvc3Q6IE1ha2UgYXNzaWdubWVudHMgdG8gaG9zdF94bWFrZV9maWxlIGN1bXVsYXRpdmUuCgkqIGNvbmZpZy5ob3N0ICgqLWRhcndpbiopOiBUZXN0ICRob3N0LCBub3QgJHRhcmdldC4KCjIwMDYtMDUtMTIgIFN0dWFydCBIYXN0aW5ncyAgPHN0dWFydEBhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2Lm9wdCAoLW1zdGFja3JlYWxpZ24pOiBOZXcgZmxhZy4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChmb3JjZV9hbGlnbl9hcmdfcG9pbnRlcik6IE5ldyBhdHRyaWJ1dGUuCgkoaXg4Nl9oYW5kbGVfY2NvbnZfYXR0cmlidXRlKTogRW1pdCBlcnJvciB3aGVuCglmb3JjZV9hbGlnbl9hcmdfcG9pbnRlciBhdHRyaWJ1dGUgY29sbGlkZXMgd2l0aCB0b28gbWFueSByZWdwYXJtcy4KCShpeDg2X2Z1bmN0aW9uX3JlZ3Bhcm0pOiBMaW1pdCByZWdwYXJtcyB3aGVuIHVzZWQgd2l0aAoJZm9yY2VfYWxpZ25fYXJnX3BvaW50ZXIgYXR0cmlidXRlLiAgKGl4ODZfaW50ZXJuYWxfYXJnX3BvaW50ZXIpOgoJU3VwcG9ydCBzdGFjay1yZWFsaWduaW5nIHByb2xvZ3VlIGluIG5vbi1tYWluIGZ1bmN0aW9ucy4gIEVtaXQKCXdhcm5pbmcgZm9yIG5lc3RlZCBmdW5jdGlvbnMgdW5kZXIgLW1zdGFja3JlYWxpZ24sIGVtaXQgZXJyb3IgZm9yCgluZXN0ZWQgZnVuY3Rpb25zIHdpdGggZm9yY2VfYWxpZ25fYXJnX3BvaW50ZXIgYXR0cmlidXRlLgoJKiBkb2MvZXh0ZW5kLnRleGkgKGZvcmNlX2FsaWduX2FyZ19wb2ludGVyKTogRG9jdW1lbnQgaXQuCgkqIGRvYy9pbnZva2UudGV4aSAoLW1zdGFja3JlYWxpZ24pOiBEb2N1bWVudCBpdC4KCjIwMDYtMDUtMTcgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjc0NzcKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IERvbid0IHNwbGl0IGEgcGFyYWxsZWwgY29uc2lzdGluZwoJb2YgdHdvIHNldHMgaW50byB0d28gaW5kaXZpZHVhbCBzZXRzIGlmIGJvdGggc2V0cyByZWZlcmVuY2UKCWNjMC4KCjIwMDYtMDUtMTcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLm9wdCAodGFyZ2V0X2ZwZV9uYW1lKTogUmVtb3ZlIFZhckV4aXN0cy4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAub3B0IChUQVJHRVRfTk9fRlBfSU5fVE9DKTogTGlrZXdpc2UuCgoJKiBkb2Mvb3B0aW9ucy50ZXhpIChWYXJFeGlzdHMpOiBVcGRhdGVkLgoKMjAwNi0wNS0xNyAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHVud2luZC1kdzIuYzogQWRkIGRlY2xhcmF0aW9ucyBmb3IgdXdfdXBkYXRlX2NvbnRleHQgYW5kCgl1d19mcmFtZV9zdGF0ZV9mb3IuCgkqIHBhL2hwdXgtdW53aW5kLmggKHBhX2ZhbGxiYWNrX2ZyYW1lX3N0YXRlKTogV2hlbiBhbiBleHBvcnQgc3R1YiBpcwoJZGV0ZWN0ZWQsIGFkdmFuY2UgZnJhbWUgc3RhdGUgYW5kIGNvbnRleHQgb25jZSB0byBza2lwIG92ZXIgc3R1Yi4KCjIwMDYtMDUtMTcgIFNlYmFzdGlhbiBQb3AgIDxwb3BAY3JpLmVuc21wLmZyPgoKCVBSIG1pZGRsZS1lbmQvMjAyNTYKCVBSIG1pZGRsZS1lbmQvMjY0MzUKCSogdHJlZS1sb29wLWxpbmVhci5jIChsaW5lYXJfdHJhbnNmb3JtX2xvb3BzKTogRG9uJ3QgdGVzdCBwZXJmZWN0X25lc3RfcC4KCUNhbGwgcmV3cml0ZV9pbnRvX2xvb3BfY2xvc2VkX3NzYSBvbmx5IHdoZW4gc29tZXRoaW5nIGNoYW5nZWQuCgkqIGxhbWJkYS5oIChnY2NfbG9vcG5lc3RfdG9fbGFtYmRhX2xvb3BuZXN0KTogVXBkYXRlIGRlY2xhcmF0aW9uLgoJKiBsYW1iZGEtY29kZS5jIChjYW5fY29udmVydF90b19wZXJmZWN0X25lc3QpOiBEZWNsYXJlZC4KCShnY2NfbG9vcG5lc3RfdG9fbGFtYmRhX2xvb3BuZXN0KTogUmVtb3ZlZCBuZWVkX3BlcmZlY3RfbmVzdCBwYXJhbWV0ZXIuCglUZXN0IGZvciBwZXJmZWN0X25lc3RfcCBoZXJlLiAgRml4IGZvcm1hdGluZy4KCShyZXBsYWNlX3VzZXNfZXF1aXZfdG9feF93aXRoX3kpOiBGaXggZm9ybWF0aW5nLgoJKHN0bXRfdXNlc19vcCk6IFJlbW92ZWQuCgkoY2FuX2NvbnZlcnRfdG9fcGVyZmVjdF9uZXN0KTogUmVtb3ZlZCBsb29waXZzIHBhcmFtZXRlci4KCUNvbXBsZXRlIHRoZSB0ZXN0IGJ5IGNoZWNraW5nIHRoZSBzY2FsYXIgZGVwZW5kZW5jZXMuCgkocGVyZmVjdF9uZXN0aWZ5KTogUmVtb3ZlIHRoZSB0ZXN0IGZvciBjYW5fY29udmVydF90b19wZXJmZWN0X25lc3QuCglGaXggZm9ybWF0aW5nLgoKMjAwNS0wNS0xNyAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCglQUiBib290c3RyYXAvMjI1NDEKCUZyb20gRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT46CgkqIE1ha2VmaWxlLmluOiBTdHJpcCAiZGlyLy4uLyIgY29tYmluYXRpb25zIGZyb20gU1lTVEVNX0lOQ0xVREVfRElSLgoKMjAwNi0wNS0xNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHRyZWUuYyAodmFyaWFibHlfbW9kaWZpZWRfdHlwZV9wKSA8QVJSQVlfVFlQRT46IFJldHVybiB0cnVlCglpZiB0aGUgZWxlbWVudCB0eXBlIGlzIHZhcmlhYmx5IG1vZGlmaWVkIHdpdGhvdXQgcmVjdXJzaW5nLgoKMjAwNi0wNS0xNyAgU2ViYXN0aWFuIFBvcCAgPHBvcEBjcmkuZW5zbXAuZnI+CgoJUFIgbWlkZGxlLWVuZC8yNzMzMgoJKiB0cmVlLWxvb3AtbGluZWFyLmMgKHRyeV9pbnRlcmNoYW5nZV9sb29wcyk6IFRlc3QgZm9yCglubyBkYXRhIGRlcGVuZGVuY2VzLgoKMjAwNi0wNS0xNyAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI3NTQ4CgkqIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5jIChzY2V2X2NvbnN0X3Byb3ApOiBEbyBub3QgcHJvbG9uZyBsaWZlCglyYW5nZSBvZiBzc2EgbmFtZXMgdGhhdCBhcHBlYXIgb24gYWJub3JtYWwgZWRnZXMuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGNvbnRhaW5zX2Fibm9ybWFsX3NzYV9uYW1lX3ApOiBFeHBvcnQuCgkqIHRyZWUtZmxvdy5oIChjb250YWluc19hYm5vcm1hbF9zc2FfbmFtZV9wKTogRGVjbGFyZS4KCjIwMDUtMDUtMTcgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNzYyMAoJKiBleHByLmMgKHNhZmVfZnJvbV9wKTogSGFuZGxlIENPTlNUUlVDVE9SIGFnYWluLgoKMjAwNi0wNS0xNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNzQxNQoJKiB0cmVlLmggKE9NUF9QQVJBTExFTF9DT01CSU5FRCk6IERlZmluZS4KCSogZ2ltcGxpZnkuYyAoc3RydWN0IGdpbXBsaWZ5X29tcF9jdHgpOiBBZGQgaXNfY29tYmluZWRfcGFyYWxsZWwgZmllbGQuCgkobmV3X29tcF9jb250ZXh0KTogQWRkIGlzX2NvbWJpbmVkX3BhcmFsbGVsIGFyZ3VtZW50LgoJKGdpbXBsaWZ5X3NjYW5fb21wX2NsYXVzZXMpOiBBZGQgaW5fY29tYmluZWRfcGFyYWxsZWwgYXJndW1lbnQsIGFkanVzdAoJbmV3X29tcF9jb250ZXh0IGNhbGxlci4KCShnaW1wbGlmeV9vbXBfcGFyYWxsZWwsIGdpbXBsaWZ5X29tcF9mb3IsIGdpbXBsaWZ5X29tcF93b3Jrc2hhcmUpOgoJQWRqdXN0IGdpbXBsaWZ5X3NjYW5fb21wX2NsYXVzZXMgY2FsbGVycy4KCShvbXBfaXNfcHJpdmF0ZSk6IElzc3VlIGVycm9ycyBpZiBpdGVyYXRpb24gdmFyaWFibGUgaXMgZmlyc3Rwcml2YXRlCglvciByZWR1Y3Rpb24gaW4gdGhlIGN1cnJlbnQgY29udGV4dC4KCSogYy1wYXJzZXIuYyAoY19wYXJzZXJfb21wX3BhcmFsbGVsKTogU2V0IE9NUF9QQVJBTExFTF9DT01CSU5FRAoJb24gY29tYmluZWQgcGFyYWxsZWwgd29ya3NoYXJlIGNvbnN0cnVjdHMuCgoyMDA2LTA1LTE2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoR0NDX09CSlMpOiBSZXBsYWNlIG9wdGlvbnMubyB3aXRoIGdjYy1vcHRpb25zLm8uCgkoZ2NjLW9wdGlvbnMubyk6IE5ldyBydWxlLgoKCSogb3B0Yy1nZW4uYXdrOiBQcm90ZWN0IHZhcmlhYmxlcyBmb3IgZ2NjLW9wdGlvbnMubyB3aXRoCgkjaWZkZWYgR0NDX0RSSVZFUi8jZW5kaWYuCgoyMDA2LTA1LTE2ICBEYW5pZWwgQmVybGluIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8yNzM3MwoJKiB0cmVlLXNzYS1mb3J3cHJvcC5jOiAoZm9yd2FyZF9wcm9wYWdhdGVfYWRkcl9leHByXzEpOiBBZGQgYXJndW1lbnQuCgkgKGZvcndhcmRfcHJvcGFnYXRlX2FkZHJfZXhwcik6IFVwZGF0ZSBjYWxsLgoKMjAwNi0wNS0xNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogZG9jL29wdGlvbnMudGV4aTogTW92ZSB0aGUgTmVnYXRpdmUgb3B0aW9uLgoKMjAwNi0wNS0xNiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzIyMzAzCgkqIHRyZWUtc3NhLWNjcC5jIChmb2xkX2NvbnN0X2FnZ3JlZ2F0ZV9yZWYpOiBIYW5kbGUgcmVhZHMKCWZyb20gU1RSSU5HX0NTVHMuCgkoZXZhbHVhdGVfc3RtdCk6IEZhbGwgYmFjayB0byBmb2xkX2NvbnN0X2FnZ3JlZ2F0ZV9yZWYsIGlmCgljY3BfZm9sZCBkaWQgbm90IHNpbXBsaWZ5IHRoZSBzdGF0ZW1lbnQuCgoyMDA2LTA1LTE2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgZHJpdmVyLzI2ODg1CgkqIE1ha2VmaWxlLmluIChHQ0NfT0JKUyk6IE5ldy4KCShPQkpTLWNvbW1vbik6IEFkZCBvcHRzLWNvbW1vbi5vLgoJKHhnY2MkKGV4ZWV4dCkpOiBSZXBsYWNlIGdjYy5vIHdpdGggJChHQ0NfT0JKUykuCgkoY3BwJChleGVleHQpKTogTGlrZXdpc2UuCgkoZ2NjLm8pOiBBbHNvIGRlcGVuZCBvbiBvcHRzLmguCgkob3B0cy1jb21tb24ubyk6IE5ldy4KCgkqIGNvbW1vbi5vcHQgKGdjb2ZmKTogQWRkIE5lZ2F0aXZlKGdkd2FyZi0yKS4KCShnZHdhcmYtMik6IEFkZCBOZWdhdGl2ZShnc3RhYnMpLgoJKGdzdGFicyk6IEFkZCBOZWdhdGl2ZShnc3RhYnMrKS4KCShnc3RhYnMrKTogQWRkIE5lZ2F0aXZlKGd2bXMpLgoJKGd2bXMpOiBBZGQgTmVnYXRpdmUoZ3hjb2ZmKS4KCShneGNvZmYpOiBBZGQgTmVnYXRpdmUoZ3hjb2ZmKykuCgkoZ3hjb2ZmKyk6IEFkZCBOZWdhdGl2ZShnY29mZikuCgkqIGNvbmZpZy9pMzg2L2kzODYub3B0IChtMzIpOiBBZGQgTmVnYXRpdmUobTY0KS4KCShtNjQpOiBBZGQgTmVnYXRpdmUobTMyKS4KCgkqIGRvYy9vcHRpb25zLnRleGk6IERvY3VtZW50IHRoZSBOZWdhdGl2ZSBvcHRpb24uCgoJKiBnY2MuYzogSW5jbHVkZSAib3B0cy5oIi4KCShtYWluKTogQ2FsbCBwcnVuZV9vcHRpb25zIGFmdGVyIGV4cGFuZGFyZ3YuCgoJKiBvcHRjLWdlbi5hd2s6IEdlbmVyYXRlIGNvbW1vbiBkZWNsYXJhdGlvbnMgZm9yIGFsbCBmbGFnCgl2YXJpYWJsZXMgaW4gb3B0aW9ucy5jLiBPdXRwdXQgdGhlIG5lZ19pbmRleCBmaWVsZC4KCgkqIG9wdHMuYyAoZmluZF9vcHQpOiBNb3ZlZCB0byAuLi4KCSogb3B0cy1jb21tb24uYzogSGVyZS4gTmV3IGZpbGUuCgoJKiBvcHRzLmggKGNsX29wdGlvbik6IEFkZCBhIG5lZ19pbmRleCBmaWVsZC4KCShmaW5kX29wdCk6IE5ldy4KCShwcnVuZV9vcHRpb25zKTogTGlrZXdpc2UuCgoyMDA2LTA1LTE2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzI3NTczCgkqIG9tcC1sb3cuYyAoZXhwYW5kX29tcF9wYXJhbGxlbCk6IERvbid0IGFzc2VydAoJLk9NUF9EQVRBX0kgPSAmLk9NUF9EQVRBX08gaXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgYmxvY2ssCglpbnN0ZWFkIHNlYXJjaCBmb3IgaXQuCgoJUFIgYy8yNzQ5OQoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9vbXBfZm9yKTogUmVtb3ZlIGFzc2VydGlvbiB0aGF0IGl0ZXJhdGlvbiB2YXIKCWlzIHNpZ25lZC4KCjIwMDYtMDUtMTYgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX0xJQkdDQ19TREFUQV9TRUNUSU9OKTogQWRkIG1pc3NpbmcgQGVuZAoJZGVmbWFjLgoKMjAwNi0wNS0xNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgdGFyZ2V0LzI2NjAwCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAobGVnaXRpbWF0ZV9jb25zdGFudF9wKSA8Q09OU1RfRE9VQkxFPjogVEltb2RlCglpbnRlZ2VyIGNvbnN0YW50cyBvdGhlciB0aGFuIHplcm8gYXJlIG9ubHkgbGVnaXRpbWF0ZSBvbiBUQVJHRVRfNjRCSVQuCgk8Q09OU1RfVkVDVE9SPiBPbmx5IHplcm8gdmVjdG9ycyBhcmUgbGVnaXRpbWF0ZS4KCShpeDg2X2Nhbm5vdF9mb3JjZV9jb25zdF9tZW0pOiBJbnRlZ3JhbCBhbmQgdmVjdG9yIGNvbnN0YW50cyBjYW4KCWFsd2F5cyBiZSBwdXQgaW4gdGhlIGNvbnN0YW50IHBvb2wuCgoyMDA2LTA1LTE2ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNydHN0dWZmLmMgKF9fZHNvX2hhbmRsZSk6IFNldCBzZWN0aW9uIGZyb20KCVRBUkdFVF9MQklHQ0NfU0RBVEFfU0VDVElPTiBpZiBkZWZpbmVkLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX0xJQkdDQ19TREFUQV9TRUNUSU9OKTogRG9jdW1lbnQuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAoVEFSR0VUX0xJQkdDQ19TREFUQV9TRUNUSU9OKTogRGVmaW5lLgoKMjAwNi0wNS0xNiAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiB0YXJnZXQvMjc1OTkKCSogY29uZmlnLmhvc3QgKGlbMzQ1NjddODYtKi1taW5ndyopOiBBcHBlbmQgaTM4Ni94LW1pbmd3MzIgdG8KCWhvc3RfeG1ha2VfZmlsZS4KCjIwMDYtMDUtMTYgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogdHJlZS1jZmcuYyAoc3BsaXRfZWRnZV9iYl9sb2MpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBzcmMnLgoKMjAwNi0wNS0xNSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiB0cmVlLmM6IChsYXN0X2Fubm90YXRlZF9ub2RlKTogVXNlIHNvdXJjZV9sb2N1cyB0eXBlZGVmLgoJVGhpcyBwZXJtaXRzIGJvb3RzdHJhcHBpbmcgd2l0aCAtLWVuYWJsZS1tYXBwZWQtbG9jYXRpb24uCgoyMDA2LTA1LTE1ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjY4MzAKCSogdHJlZS1pbnRvLXNzYS5jIChzdHJ1Y3Qgc3NhX25hbWVfaW5mbyk6IEFkZCBhZ2UgZmllbGQuCgkoaW5mb19mb3Jfc3NhX25hbWUsIGN1cnJlbnRfaW5mb19mb3Jfc3NhX25hbWVfYWdlLAoJYmxvY2tzX3RvX3VwZGF0ZSk6IE5ldyB2YXJpYWJsZXMuCgkoZ2V0X3NzYV9uYW1lX2Fubik6IFVzZSBpbmZvX2Zvcl9zc2FfbmFtZSBpbnN0ZWFkIG9mIFNTQV9OQU1FX0FVWC4KCShjbGVhcl9zc2FfbmFtZV9pbmZvLCBpbml0aWFsaXplX2ZsYWdzX2luX2JiLAoJbWFya19ibG9ja19mb3JfdXBkYXRlKTogTmV3IGZ1bmN0aW9ucy4KCShtYXJrX2RlZl9zaXRlcywgcmV3cml0ZV9zdG10KTogQXNzZXJ0IHRoYXQgYmxvY2tzX3RvX3VwZGF0ZSBpcyBOVUxMLgoJKGluc2VydF9waGlfbm9kZXNfZm9yLCBtYXJrX3VzZV9pbnRlcmVzdGluZywgcHJlcGFyZV9ibG9ja19mb3JfdXBkYXRlLAoJcHJlcGFyZV9kZWZfc2l0ZV9mb3IpOiBVc2UgbWFya19ibG9ja19mb3JfdXBkYXRlLgoJKG1hcmtfZGVmX2ludGVyZXN0aW5nKTogQXNzZXJ0IHRoYXQgdGhlIHByb2Nlc3NlZCBibG9jayBpcyBtYXJrZWQgaW4KCWJsb2Nrc190b191cGRhdGUuICBEbyBub3QgdGFrZSBibG9ja3MgYXJndW1lbnQuCgkocHJlcGFyZV91c2Vfc2l0ZXNfZm9yLCBwcmVwYXJlX25hbWVzX3RvX3VwZGF0ZSk6IERvIG5vdCB0YWtlIGJsb2NrcwoJYXJndW1lbnQuCgkocmV3cml0ZV91cGRhdGVfaW5pdF9ibG9jaywgcmV3cml0ZV91cGRhdGVfc3RtdCk6IE9ubHkgcHJvY2VzcwoJYmxvY2tzIHdpdGggc3RhdGVtZW50cyB0byByZXdyaXRlLgoJKGRlbGV0ZV91cGRhdGVfc3NhKTogRG8gbm90IGNsZWFyIFNTQV9OQU1FX0FVWC4KCSh1cGRhdGVfc3NhKTogSW5pdGlhbGl6ZSBhbmQgZnJlZSBibG9ja3NfdG9fdXBkYXRlLiAgRG8gbm90CgljbGVhciBmbGFncyBvbiBzdGF0ZW1lbnRzLiAgRG8gbm90IHVzZSBibG9ja3MgYml0bWFwLgoJKiB0cmVlLmggKFNTQV9OQU1FX0FVWCk6IFJlbW92ZWQuCgkoc3RydWN0IHRyZWVfc3NhX25hbWUpOiBSZW1vdmVkIGF1eCBmaWVsZC4KCSogcHJpbnQtdHJlZS5jIChwcmludF9ub2RlKTogRG8gbm90IHByaW50IFNTQV9OQU1FX0FVWC4KCjIwMDYtMDUtMTUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNzYwMwoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKGluZmVyX2xvb3BfYm91bmRzX2Zyb21fdW5kZWZpbmVkKToKCURvIGNvbXB1dGF0aW9ucyBpbiBvcmlnaW5hbCB0eXBlLgoKMjAwNi0wNS0xNSAgTWlyY2VhIE5hbW9sYXJ1ICA8bmFtb2xhcnVAaWwuaWJtLmNvbT4KCgkqIHNlZS5jOiBDb2RlIHN0eWxlIGNoYW5nZXMgc3VjaCBhcyByZWR1bmRhbnQgcGFyYW50aGVzaXMsCglyZWR1bmRhbnQgaW50aWFsaXphdGlvbiBvZiBsb2NhbCB2YXJpYWJsZXMgZXRjLgoJKHNlZV9tYWluKTogRGVjbGFyZWQgbm93IGFzIHN0YXRpYy4KCSogZG9jL2ludm9rZS50ZXhpOiBVcGRhdGUgdGhhdCAtZnNlZSBpcyBub3QgZW5hYmxlZCBieQoJZGVmYXVsdCBhdCAtTzMuCgoyMDA2LTA1LTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIG9tcC1sb3cuYyAoY2hlY2tfb21wX25lc3RpbmdfcmVzdHJpY3Rpb25zKTogTmV3IGZ1bmN0aW9uLgoJKHNjYW5fb21wXzEpOiBDYWxsIGl0LgoKCVBSIG1pZGRsZS1lbmQvMjc0MTYKCSogb21wLWxvdy5jIChidWlsZF9vdXRlcl92YXJfcmVmKTogSWYgVkFSIGlzIHJlZmVyZW5jZSBpbiBvcnBoYW5lZAoJY29uc3RydWN0LCByZXR1cm4gKlZBUi4KCjIwMDYtMDUtMTQgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjc0MDYKCSogYnQtbG9hZC5jIChtaWdyYXRlX2J0cl9kZWYpOiBTa2lwIHRoZSBibG9jayBoYXZpbmcgYWJub3JtYWwKCWVkZ2VzLgoKMjAwNi0wNS0xNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yNzUzOAoJKiBjb21iaW5lLmMgKGV4cGFuZF9jb21wb3VuZF9vcGVyYXRpb24pOiBDYWxsIGdlbl9sb3dwYXJ0CgliZWZvcmUgY2FsbGluZyBzaW1wbGlmeV9zaGlmdF9jb25zdC4KCjIwMDYtMDUtMTQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjI1NjMKCSogZXhwbWVkLmMgKHN0b3JlX2ZpeGVkX2JpdF9maWVsZCk6IFdoZW4gdXNpbmcgQU5EIGFuZCBJT1IgdG8gc3RvcmUKCWEgZml4ZWQgd2lkdGggYml0ZmllbGQsIGFsd2F5cyBmb3JjZSB0aGUgaW50ZXJtZWRpYXRlcyBpbnRvIHBzdWVkb3MuCgoyMDA2LTA1LTE0ICBCZXJuaGFyZCBGaXNjaGVyICA8YWxkb3RAZ2NjLmdudS5vcmc+CgoJUFIgMjc1MDEKCSogbWtjb25maWcuc2g6IFVzZSBvcGVyYXRvciA9IGluc3RlYWQgb2YgPT0gZm9yIHRlc3QuCgoyMDA2LTA1LTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZHdhcmYyb3V0LmMgKGRieF9yZWdfbnVtYmVyKTogQ2hlY2sgcmV0dXJuIHZhbHVlIGZyb20KCUxFQUZfUkVHX1JFTUFQIGFuZCBvbmx5IHVzZSBpdCBpZiBpdCBpcyB2YWxpZC4KCShtdWx0aXBsZV9yZWdfbG9jX2Rlc2NyaXB0b3IpOiBMaWtld2lzZS4KCjIwMDYtMDUtMTMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGNvbmZpZy5ob3N0IDxpWzM0NTY3XTg2LSotY3lnd2luKj46IEFwcGVuZCBpMzg2L3gtY3lnd2luIHRvCglob3N0X3htYWtlX2ZpbGUuCgoyMDA2LTA1LTEzICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iLmdjY0BnbWFpbC5jb20+CgoJKiBkZi1jb3JlLmMgKGRmX2JiX3JlZ25vX2xhc3RfdXNlX2ZpbmQpOiBEbyBub3QgbG9vayBmb3IgZGF0YWZsb3cKCWluZm9ybWF0aW9uIGF0dGFjaGVkIHRvIG5vbi1JTlNOcyBzdWNoIGFzIE5PVEVzLgoJKGRmX2JiX3JlZ25vX2ZpcnN0X2RlZl9maW5kLCBkZl9iYl9yZWdub19sYXN0X2RlZl9maW5kKTogTGlrZXdpc2UuCgoyMDA2LTA1LTEyICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChzMzkwX2NvbnN0X29rX2Zvcl9jb25zdHJhaW50X3ApOiBEaXNhbGxvdyAtNEcgZm9yCglPbiBjb250cmFpbnQuCgkqIGNvbmZpZy9zMzkwL3MzOTAubWQ6IEFkanVzdCBjb21tZW50IGRlc2NyaWJpbmcgT24gY29uc3RyYWludC4KCjIwMDYtMDUtMTEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNncmFwaHVuaXQuYyAoZGVjaWRlX2lzX2Z1bmN0aW9uX25lZWRlZCk6IERvbid0IGZvcmNlIGFsd2F5c19pbmxpbmUKCXRvIGJlIG91dHB1dCBhdCAtTzAuCgoyMDA2LTA1LTExICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIG1pZGRsZS1lbmQvMjczODQKCSogZm9sZC1jb25zdC5jIChzaXplX2Jpbm9wKTogTW92ZSBzYW5pdHkgY2hlY2sgZm9yIGFyZ3VtZW50cyB0bwoJdGhlIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24uCgoJUFIgbWlkZGxlLWVuZC8yNzQ4OAoJKiBmb2xkLWNvbnN0LmMgKHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wKTogUmV0dXJuIGVhcmx5IG9uIGludmFsaWQKCWV4cHJlc3Npb24uCgoyMDA2LTA1LTExICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8yNzUyOQoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfdW5hcnkpOiBIYW5kbGUgaW50ZXJtZWRpYXRlIGNvbnZlcnNpb24KCXRvIGEgcG9pbnRlciB0eXBlIGxpa2UgaW50ZXJtZWRpYXRlIGNvbnZlcnNpb24gdG8gYW4gaW50ZWdlcgoJdHlwZSBpbiBmb2xkaW5nIG9mIChUMSkoVDIpdmFyIHRvIHZhci4KCU1hdGNoIHRoZSBjb2RlIHRvIHRoZSBjb21tZW50IGluIHRoZSBmaW5hbCBjb252ZXJzaW9uIGZvcgoJKFQxKShUMil2YXIgdG8gKFQxKXZhciByZWdhcmRpbmcgdG8gdHlwZSBwcmVjaXNpb24uICBSYXRoZXIKCXRoYW4gZGlzYWxsb3cgVDEgYmVpbmcgb2YgcG9pbnRlciB0eXBlLCBhc3NlcnQgdGhhdCBib3RoIFQxCglhbmQgdmFyIGFyZSBvZiBwb2ludGVyIHR5cGUgb3Igbm90LiAgTWFrZSBzdXJlIG5vdCB0byBmYWxsCglvdmVyIHRoZSBmcm9udGVuZHMgbGF6eW5lc3Mgd3J0IGFycmF5IHRvIHBvaW50ZXIgZGVjYXkgdGhvdWdoLgoKMjAwNi0wNS0xMCAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBhcm0uYyAoYXJtX3N0cnVjdF92YWx1ZV9ydHgpOiBEZWxldGUuCgkoVEFSR0VUX1NUUlVDVF9WQUxVRV9SVFgpOiBVc2UgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbi4KCShhcm1faW5pdF9jdW11bGF0aXZlX2FyZ3MpOiBBbHdheXMgaW5pdGlhbGl6ZSBucmVncyB0byB6ZXJvLgoKMjAwNi0wNS0xMCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI3NTMyCgkqIHRyZWUtb2JqZWN0LXNpemUuYyAocGx1c19leHByX29iamVjdF9zaXplKTogRml4IHR5cG8uCgoyMDA2LTA1LTEwICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMjQ5NDkKCSogY29uZmlnL202OGsvbTY4ay5tZCAoYXNocmRpX2NvbnN0MzIsIGFzaHJkaV9jb25zdDMyX21lbSwKCWFzaHJkaV9jb25zdCwgYXNocmRpMyk6IFVzZSBhIHNjcmF0Y2ggcmVnaXN0ZXIuCgoyMDA2LTA1LTEwICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjczMDIKCSogZm9sZC1jb25zdC5jIChvcGVyYW5kX2VxdWFsX3ApOiBGb3IgdHdvIGNvbXBhcmlzb25zLAoJdHJ5IGNvbXBhcmlzb24gb2Ygb25lIGNvbXBhcmlzb24gY29kZSBzd2FwcGVkIGlmIHRoYXQgeWllbGRzCgl0aGUgc2FtZSBjb2RlLgoKMjAwNi0wNS0xMCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiB0cmVlLXByZXR0eS1wcmludC5jIChwcmV0dHlfcHJpbnRfc3RyaW5nKTogTm8gbmVlZCB0byBoYW5kbGUKCSdcMCcgYXMgYSBzcGVjaWFsIGNoYXJhY3Rlci4KCgkqIHRyZWUuaDogSW5jbHVkZSAiaGFzaHRhYi5oIi4KCShpdGVyYXRpdmVfaGFzaF9leHByKTogVXNlIGhhc2h2YWxfdCBpbiBpdHMgcHJvdG90eXBlLgoJKiBNYWtlZmlsZS5pbiAoVFJFRV9IKTogQWRkICQoSEFTSFRBQl9IKS4KCjIwMDYtMDUtMDkgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCVBSIGJvb3RzdHJhcC8yNjg3MgoJKiBjb25maWcuZ2NjIChocHBhWzEyXSotKi1ocHV4MTAqKTogU2V0IGdhcyB0byB5ZXMuCgkoaHBwYSo2NCotKi1ocHV4MTEqKTogRGl0dG8uCgkoaHBwYVsxMl0qLSotaHB1eDExKik6IERpdHRvLgoKMjAwNi0wNS0wOSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCVBSIHRhcmdldC8yNjU0NQoJKiBjb25maWcvcnM2MDAwL2FpeDQxLmggKFRBUkdFVF82NEJJVCk6IERlZmluZS4KCjIwMDYtMDUtMDkgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCgkqIGNvbmZpZy5ob3N0ICg8aVszNDU2N104Ni0qLSosIHg4Nl82NC0qLSo+KTogU2V0Cglob3N0X2V4dHJhX2djY19vYmpzIGFuZCBob3N0X3htYWtlX2ZpbGUuCgkoPCotKi1saW51eCo+KTogRG9uJ3Qgb3ZlcndyaXRlIGhvc3RfeG1ha2VfZmlsZS4KCSogZ2NjLmMgKHN0YXRpY19zcGVjX2Z1bmN0aW9ucyk6IEFkZCBFWFRSQV9TUEVDX0ZVTkNUSU9OUy4KCSogY29uZmlnL2kzODYvaTM4Ni5oIChFWFRSQV9TUEVDX0ZVTkNUSU9OUyk6IERlZmluZS4KCShob3N0X2RldGVjdF9sb2NhbF9jcHUpOiBEZWNsYXJlLgoJKENDMV9DUFVfU1BFQyk6IEFkZCAtbWFyY2g9bmF0aXZlIGFuZCAtbXR1bmU9bmF0aXZlIGNhc2VzLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG92ZXJyaWRlX29wdGlvbnMpOiBIYW5kbGUgLW10dW5lPW5hdGl2ZQoJYXMgLW10dW5lPWdlbmVyaWMuCgkqIGNvbmZpZy9pMzg2L3gtaTM4NjogTmV3IGZpbGUuCgkqIGNvbmZpZy9pMzg2L2RyaXZlci1pMzg2LmM6IE5ldyBmaWxlLgoJKiBkb2MvaW52b2tlLnRleGkgKDxpMzg2IGFuZCB4ODYtNjQgT3B0aW9ucz4pOiBEZXNjcmliZQoJY3B1LXR5cGUgIm5hdGl2ZSIuCgoyMDA2LTA1LTA5ICBEaXJrIE11ZWxsZXIgIDxkbXVlbGxlckBzdXNlLmRlPgoJUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIG1pZGRsZS1lbmQvMjc0OTgKCSogZm9sZC1jb25zdC5jIChmb2xkX3JlYWRfZnJvbV9jb25zdGFudF9zdHJpbmcpOiBSZWxheCBjaGVjawoJZm9yIG1hdGNoaW5nIHR5cGVzIHRvIG1hdGNoaW5nIG1vZGVzLgoKMjAwNi0wNS0wOSAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjczMzUKCSogbG9vcC11bnJvbGwuYyAocGVlbF9sb29wc19jb21wbGV0ZWx5KTogVXNlIGxvb3BzLT5wYXJyYXkgdG8gd2FsayB0aGUKCWxvb3BzLgoKMjAwNi0wNS0wOCAgQ2hhby15aW5nIEZ1ICA8ZnVAbWlwcy5jb20+CgkgICAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXBzLTNkLm1kIChzY2NfcHMsIHM8Y29kZT5fcHMpOiBOZXcgcGF0dGVybnMuCgkodmNvbmR2MnNmLCBzbWludjJzZjMsIHNtYXh2MnNmMyk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChVTlNQRUNfU0NDKTogTmV3IGNvbnN0YW50LgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX2V4cGFuZF92Y29uZHYyc2YpOiBEZWNsYXJlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfcmV2ZXJzZV9mcF9jb25kX3ApOiBOZXcgZnVuY3Rpb24uCgkobWlwc19lbWl0X2NvbXBhcmUpOiBVc2UgaXQuCgkobWlwc19leHBhbmRfdmNvbmR2MnNmKTogTmV3IGZ1bmN0aW9uLgoKMjAwNi0wNS0wOCAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJRml4IFBSIHRyZWUtb3B0aW1pemF0aW9uLzI3MDkzCgkqIHRyZWUtc3NhLWFsaWFzLmMgKHJlY2FsY3VsYXRlX3VzZWRfYWxvbmUpOiBNYXJrIHZhcmlhYmxlcyBmb3IKCXJlbmFtaW5nIHdoZW4gdGhleSBiZWNvbWUgbm90LXVzZWRfYWxvbmUuCgoyMDA2LTA1LTA4ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogaHB1eC11bndpbmQuaCAocGFfZmFsbGJhY2tfZnJhbWVfc3RhdGUpOiBIYW5kbGUgcmV0dXJuIHBhcmFtZXRlcgoJcmVsb2NhdGlvbiBhbmQgcmVsb2NhdGlvbiBzdHVicy4KCjIwMDYtMDUtMDggIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiB1bndpbmQtZHcyLWZkZS1kYXJ3aW4uYyAoZXhhbWluZV9vYmplY3RzKTogT25seSBjaGVjayBkYXRhCglzZWN0aW9uIGZvciBwcGMuCgoyMDA2LTA1LTA4ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgbWlkZGxlLWVuZC8yNDU2MQoJKiBjZ3JhcGh1bml0LmMgKGRlY2lkZV9pc19mdW5jdGlvbl9uZWVkZWQpOiBXaGVuIG5vdCBvcHRpbWl6aW5nIGV2ZW4KCXVudXNlZCBzdGF0aWMgZnVuY3Rpb25zIGFyZSBuZWVkZWQuCgoyMDA2LTA1LTA4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiB0YXJnZXQvMjcxNTgKCSogcmVsb2FkLmMgKGZpbmRfcmVsb2Fkc190b3BsZXYpOiBPbmx5IHJldHVybiB0aGUgc2ltcGxpZmllZCBTVUJSRUcKCW9mIGEgcmVnX2VxdWl2X2NvbnN0YW50IGlmIHRoZSByZXN1bHQgaXMgYSBsZWdpdGltYXRlIGNvbnN0YW50LgoKMjAwNi0wNS0wOCAgVXJvcyBCaXpqYWsgIDx1cm9zQGtzcy1sb2thLnNpPgoKCVBSIHRhcmdldC8yNzI3NwoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfcnR4X2Nvc3RzKSBbRkxPQVRfRVhURU5EXTogRm9yCglzdGFuZGFyZCA4MDM4NyBjb25zdGFudHMsIHJhaXNlIHRoZSBjb3N0IHRvIHByZXZlbnQKCWNvbXByZXNzX2Zsb2F0X2NvbnN0YW50KCkgdG8gZ2VuZXJhdGUgbG9hZCBmcm9tIG1lbW9yeS4KCjIwMDYtMDUtMDggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9jb25zdHJhaW50cy5tZCAoYyk6IEZpeCBhIHR5cG8uCgoJKiBzZWUuYywgdHJlZS1mbG93LWlubGluZS5oLCB0cmVlLXBoaW5vZGVzLmM6IEZpeCBjb21tZW50Cgl0eXBvcy4KCjIwMDYtMDUtMDcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCglQUiB0YXJnZXQvMjQ4NzkKCSogY29uZmlnL2kzODYvcG1taW50cmluLmggKF9tbV9tb25pdG9yKTogUmVtb3ZlIG1hY3JvLiBVc2UKCWlubGluZSBmdW5jdGlvbi4KCShfbW1fbXdhaXQpOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAoc3NlM19td2FpdCk6IFJlcGxhY2UgIm13YWl0XHQlMCwgJTEiIHdpdGgKCSJtd2FpdCIuCgkoc3NlM19tb25pdG9yKTogTWFrZSBpdCAzMmJpdCBvbmx5LgoJKHNzZTNfbW9uaXRvcjY0KTogTmV3LiA2NGJpdCBtb25pdG9yLgoKMjAwNi0wNS0wNyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiB0YXJnZXQvMjc0MjEKCSogY29uZmlnL2kzODYvaTM4Ni5jIChjbGFzc2lmeV9hcmd1bWVudCk6IFNraXAgZmllbGRzIHdpdGggaW52YWxpZAoJdHlwZXMuCgoyMDA2LTA1LTA3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjc0MDkKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoZ2V0X2NvbnN0cmFpbnRfZm9yX2NvbXBvbmVudF9yZWYpOgoJRG8gbm90IHRyeSB0byBmaW5kIHplcm8tc2l6ZWQgc3VidmFycy4KCjIwMDYtMDUtMDcgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNzEzNgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKGdldF92YWxfZm9yKTogQ29ycmVjdCBmdW5jdGlvbgoJY29tbWVudCwgYXNzZXJ0IHJlcXVpcmVtZW50cy4KCShsb29wX25pdGVyX2J5X2V2YWwpOiBTdG9wIHByb2Nlc3NpbmcgaWYgdGhlIGl0ZXJhdGVkCgl2YWx1ZSBkaWQgbm90IHNpbXBsaWZ5LgoKMjAwNi0wNS0wNyAgTWlyY2VhIE5hbW9sYXJ1ICA8bmFtb2xhcnVAaWwuaWJtLmNvbT4KCgkqIG9wdHMuYyAoZmxhZ19zZWUpOiByZW1vdmUgaXRzIHNldHRpbmcgYXQgLU8zLgoKMjAwNi0wNS0wNyAgUmljaGFyZCBFYXJuc2hhdyAgPHJlYXJuc2hhQGFybS5jb20+CgoJKiBnZW5wZWVwLmMgKG1haW4pOiBNYWtlIGluc24tcGVlcC5jIGRlcGVuZCBvbiBmbGFncy5oLgoJKiBhcm0vY29uc3RyYWludHMubWQ6IE5ldyBmaWxlLgoJKiBhcm0uaCAoUkVHX0NMQVNTX0ZST01fTEVUVEVSX1ApOiBEZWxldGUuCgkoQ09OU1RfT0tfRk9SX0FSTV9MRVRURVIsIENPTlNUX09LX0ZPUl9USFVNQl9MRVRURVIpCgkoQ09OU1RfT0tfRk9SX0xFVFRFUl9QLCBDT05TVF9ET1VCTEVfT0tfRk9SX0FSTV9MRVRURVIpCgkoQ09OU1RfRE9VQkxFX09LX0ZPUl9MRVRURVJfUCwgRVhUUkFfQ09OU1RSQUlOVF9TVFJfQVJNKQoJKENPTlNUUkFJTlRfTEVOLCBFWFRSQV9DT05TVFJBSU5UX1RIVU1CLCBFWFRSQV9DT05TVFJBSU5UX1NUUikKCShFWFRSQV9NRU1PUllfQ09OU1RSQUlOVCk6IExpa2V3aXNlLgoJKiBhcm0ubWQ6IEluY2x1ZGUgY29uc3RyYWludHMubWQuCgkodGh1bWJfbW92c2lfaW5zbik6IFVzZSBzYXRpc2ZpZXNfY29uc3RyYWludF9KLgoJKG1vdmhpLCBtb3ZxaSk6IFVzZSBzYXRpc2ZpZXNfY29uc3RyYWludF9JLgoKMjAwNi0wNC0yOSBBbmF0b2x5IFNva29sb3YgPGFlc29rQHBvc3QucnU+CgoJKiBjb25maWcvYXZyL2F2ci5oIChDUlRfQklOVVRJTFNfU1BFQ1MpOiBGaXhlZCBjcnQqIGZpbGUgbmFtZQoJZm9yIGF0bWVnIGE2NDUgZGV2aWNlLgoKMjAwNi0wNS0wNiAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNzE1MQoJKiB0cmVlLXZlY3QtdHJhbnNmb3JtLmMgKHZlY3Rvcml6YWJsZV9jb25kaXRpb24pOiBQdW50IG9uCgl2YWx1ZXMgdGhhdCBoYXZlIGEgZGlmZmVyZW50IHR5cGUgdGhhbiB0aGUgY29uZGl0aW9uLgoKMjAwNi0wNS0wMyAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCVBSLzIxMzkxCgkqIGMtcGFyc2VyLmMgKGNfcGFyc2VyX2Nhc3RfZXhwcmVzc2lvbik6IE9ubHkgaW5zZXJ0IGNhc3RzIGludG8KCWhhc2ggdGFibGUgaWYgcG9pbnRlci4KCSogZnVuY3Rpb24uYyAodXNlZF90eXBlc19pbnNlcnRfaGVscGVyKTogUmVuYW1lIGZyb20KCXVzZWRfdHlwZXNfaW5zZXJ0LgoJKHVzZWRfdHlwZXNfaW5zZXJ0KTogQ2FsbCB1c2VkX3R5cGVzX2luc2VydF9oZWxwZXIuCgkqIGZ1bmN0aW9uLmggKHVzZWRfdHlwZXNfaW5zZXJ0KTogQWNjZXB0IG9ubHkgb25lIGFyZ3VtZW50LgoKMjAwNi0wNS0wNSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogTWFyayBhbGwgIlgiIGNvbnN0cmFpbnRzIGZvciBjbG9iYmVyZWQKCXNjcmF0Y2ggd2l0aCBvdXRwdXQgbW9kaWZpZXIuCgoyMDA2LTA1LTA0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJUFIgdGFyZ2V0LzI2NDgxCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChzdG1zaV9wb3dlcik6IE1hcmsgY2xvYmJlciBjb25zdHJhaW50Cgl3aXRoIG91dHB1dCBtb2RpZmllci4KCjIwMDYtMDUtMDQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHRhcmdldC8yNjc2NQoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfc3ltYm9saWNfYWRkcmVzc19wKTogUmV0dXJuIHRydWUKCWZvciBTWU1CT0xfVExTR0QsIFNZTUJPTF9UTFNMRE0sIFNZTUJPTF9EVFBSRUwsIFNZTUJPTF9UUFJFTCwKCVNZTUJPTF9HT1RUUFJFTCwgYW5kIFNZTUJPTF9UTFMuCgoyMDA2LTA1LTA0ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMTQyODcKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE0ODQ0CglQUiB0cmVlLW9wdGltaXphdGlvbi8xOTc5MgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjE2MDgKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI3MDkwCgkqIHRyZWUtc3NhLXByZS5jICh0cnlfY29tYmluZV9jb252ZXJzaW9uKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXB1dGVfYXZhaWwpOiBBZnRlciBjb25zdHJ1Y3RpbmcgdGhlIHZhbHVlLWhhbmRsZQoJZXhwcmVzc2lvbiwgdXNlIHRyeV9jb21iaW5lX2NvbnZlcnNpb24gdG8gY29tYmluZSBOT1BfRVhQUnMKCXdpdGggcHJldmlvdXMgdmFsdWUtaGFuZGxlIGV4cHJlc3Npb25zIGFuZCB1c2UgdGhlIHJlc3VsdCBpZiBpdAoJaXMgYXZhaWxhYmxlLgoKMjAwNi0wNS0wNCAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9saW51eDY0LmggKERXQVJGX09GRlNFVF9TSVpFKTogUmVtb3ZlLgoKMjAwNi0wNS0wNCAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIG1pZGRsZS1lbmQvMjU5NjIKCSogY2dyYXBodW5pdC5jICh2ZXJpZnlfY2dyYXBoX25vZGUpOiBGaXggY2dyYXBoX2hhc2ggdGVzdGluZy4KCjIwMDYtMDUtMDQgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvYmZpbi9wcmVkaWNhdGVzLm1kIChjb25zdDAxX3J0eCk6IFRlbGwgZ2VuZXJhdG9yIHByb2dyYW1zCgl0aGF0IHRoaXMgb25seSBtYXRjaGVzIENPTlNUX0lOVHMuICBBbGwgdXNlcnMgY2hhbmdlZCB0byBWT0lEbW9kZQoJb3BlcmFuZHMuCgoJKiBjb25maWcvYmZpbi9iZmluLmM6IEluY2x1ZGUgIm9wdGFicy5oIi4KCShiZmluX3J0eF9jb3N0cyk6IFNvbWUgY29zdHMgZm9yIHZlY3RvciBvcGVyYXRpb25zLCB0byBhbGxvdyBjb21iaW5lCgl0byBkbyBtb3JlIHdvcmsuCgkoZW51bSBiZmluX2J1aWx0aW5zKTogQWRkIGEgbnVtYmVyIG9mIGZyYWN0aW9uYWwgYW5kIHZlY3RvciBidWlsdGlucy4KCShiZmluX2luaXRfYnVpbHRpbnMpOiBMaWtld2lzZS4KCShzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiwgYmRlc2NfMmFyZywgYmRlc2NfMWFyZyk6IE5ldy4KCShzYWZlX3ZlY3Rvcl9vcGVyYW5kLCBiZmluX2V4cGFuZF9iaW5vcF9idWlsdGluLAoJYmZpbl9leHBhbmRfdW5vcF9idWlsdGluKTogTmV3IGZ1bmN0aW9ucy4KCShiZmluX2V4cGFuZF9idWlsdGluKTogSGFuZGxlIHRoZSBuZXcgYnVpbHRpbnMuCgkqIGNvbmZpZy9iZmluL2JmaW4uaCAoVEFSR0VUX0NQVV9DUFBfQlVJTFRJTlMpOiBEZWZpbmUKCV9fQURTUEJMQUNLRklOX18uCgoyMDA2LTA1LTA0ICBMZWVob2QgQmFydWNoICA8bGVlaG9kQGlsLmlibS5jb20+CgoJKiBzZWUuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChPQkpTLWNvbW1vbik6IEFkZCBzZWUuby4KCShzZWUubyk6IEFkZCBkZXBlbmRlbmNpZXMuCgkqIGNvbW1vbi5vcHQgKGZzZWUpOiBOZXcgZmxhZyBmb3IgdGhlIHNlZSBvcHRpbWl6YXRpb24gd2FzIGFkZGVkLgoJKiBvcHRzLmMgKGZsYWdfc2VlKTogSW5pdGlhbGl6ZWQuCgkqIHBhc3Nlcy5jIChpbml0X29wdGltaXphdGlvbl9wYXNzZXMsIHBhc3Nfc2VlKTogTmV3IHBhc3MuCgkqIHJ0bC5oIChzZWVfbWFpbik6IERlY2xhcmF0aW9uIGFzIGV4dGVybi4KCSogdGltZXZhci5kZWYgKFRWX1NFRSk6IE5ldy4KCSogdHJlZS1wYXNzLmggKHBhc3Nfc2VlKTogRGVjbGFyYXRpb24gYXMgZXh0ZXJuLgoJKiBpbnZva2UudGV4aSAoLWZzZWUpOiBEb2N1bWVudC4KCSogcmVjb2cuYyAodmFsaWRhdGVfc2ltcGxpZnlfaW5zbik6IE5ldyBmdW5jdGlvbi4KCSogcmVjb2cuaCAodmFsaWRhdGVfc2ltcGxpZnlfaW5zbik6IERlY2xhcmF0aW9uIGFzIGV4dGVybi4KCSogZGYtcHJvYmxlbXMuYyAoZGZfY2hhaW5fZHVtcCk6IENoZWNrIGZvciBOVUxMLgoKMjAwNi0wNS0wNCAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCSAgICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGNmZ3J0bC5jIChpbnNlcnRfaW5zbl9iYl9lbmRfbmV3KTogTmV3IGZ1bmN0aW9uLgoJKiBiYXNpYy1ibG9jay5oIChpbnNlcnRfaW5zbl9iYl9lbmRfbmV3KTogRGVjbGFyYXRpb24gYXMgZXh0ZXJuLgoKMjAwNi0wNS0wNCAgTGVlaG9kIEJhcnVjaCAgPGxlZWhvZC5iYXJ1Y2hAd2Vpem1hbm4uYWMuaWw+CgoJKiBkZi5oIChzdHJ1Y3Qgd2ViX2VudHJ5KTogTW92ZWQgZnJvbSB3ZWIuYy4KCSh1bmlvbl9kZWZzKTogRGVjbGFyYXRpb24gYXMgZXh0ZXJuLgoJKHVuaW9uZmluZF9yb290KTogTGlrZXdpc2UuCgkodW5pb25maW5kX3VuaW9uKTogTGlrZXdpc2UuCgkqIHdlYi5jIChzdHJ1Y3Qgd2ViX2VudHJ5KTogTW92ZWQgdG8gZGYuaC4KCSh1bmlvbmZpbmRfcm9vdCk6IFJlbW92ZSBzdGF0aWMgZGVjbGFyYXRpb24uCgkodW5pb25maW5kX3VuaW9uKTogTGlrZXdpc2UuCgkodW5pb25fZGVmcyk6IExpa2V3aXNlIGFuZCBnZW5lcmFsaXplIHRvIHVzZSBjYWxsYmFjayBmdW5jdGlvbi4KCSh3ZWJfbWFpbik6IFVwZGF0ZSBhcmd1bWVudHMgZm9yIHVuaW9uX2RlZnMgZnVuY3Rpb24gY2FsbC4KCjIwMDYtMDUtMDQgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNjQ0NwoJKiB0cmVlLXNzYS1wcmUuYyAocmVhbGlmeV9mYWtlX3N0b3Jlcyk6IEZvciBuZWNlc3NhcnkgbG9hZHMKCXByb2R1Y2UgU1NBX05BTUUgY29waWVzIGJlZm9yZSB0aGUgc3RvcmUgc3RtdCB0byBhdm9pZAoJYnJlYWtpbmcgZXhjZXB0aW9uIGhhbmRsaW5nLgoKMjAwNi0wNS0wNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNzM4OAoJKiBnaW1wbGlmeS5jIChvbXBfaXNfcHJpdmF0ZSk6IElmIHZhciBpcyBzaGFyZWQgaW4gc29tZSBvdXRlciBjb250ZXh0LAoJcmV0dXJuIGZhbHNlIGluc3RlYWQgb2YgdHJ1ZS4gIFN0b3Agc2VhcmNoaW5nIG9uIHBhcmFsbGVsIGNvbnRleHQKCWJvdW5kYXJ5LgoKMjAwNi0wNS0wMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJUFIgamF2YS84MjYwCgkqIGNvdmVyYWdlLmM6IFVzZSBnZXRfZ2Nvdl91bnNpZ25lZF90KCkgaW5zdGVhZCBvZgoJdW5zaWduZWRfdHlwZV9ub2RlIGFsbCBvdmVyLgoKMjAwNi0wNS0wMiAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI3MzgxCgkqIHRyZWUtcGhpbm9kZXMuYyAocmVtb3ZlX3BoaV9hcmdfbnVtKTogV2hlbiBtb3ZpbmcgYSBwaGkgYXJndW1lbnQsCgltYWludGFpbiB0aGUgc2FtZSBpbW1lZGlhdGVfdXNlIGxpbmtzLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChkdW1wX2ltbWVkaWF0ZV91c2VzX2Zvcik6IFNob3cgaXRlcmF0aW9uIG1hcmtlcgoJbm9kZSByYXRoZXIgdGhhbiBzZWdmYXVsdGluZy4KCjIwMDYtMDUtMDMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGZvcnRyYW4vMjczOTUKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfc2Nhbl9vbXBfY2xhdXNlcyk6IENvbXBhcmUgT01QX0NMQVVTRV9DT0RFCglyYXRoZXIgdGhhbiBUUkVFX0NPREUgdG8gT01QX0NMQVVTRV9SRURVQ1RJT04uICBTZXQgYWxzbyBHT1ZEX1NFRU4KCWJpdCBmb3IgT01QX0NMQVVTRV9SRURVQ1RJT05fUExBQ0VIT0xERVIuCgoyMDA2LTA1LTAyICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglGaXggUFIgdHJlZS1vcHRpbWl6YXRpb24vMjY2MjYKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoY29tcHV0ZV9wb2ludHNfdG9fc2V0cyk6IEZvciBub3csIHNvbHZlCglhbHdheXMuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGFjY2Vzc19jYW5fdG91Y2hfdmFyaWFibGUpOiBBbGxvdwoJdHlwZWNhc3RpbmcgdGhyb3VnaCB1bmlvbiBwb2ludGVycy4KCjIwMDYtMDUtMDIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNjk0MwoJKiBvbXAtbG93LmMgKG1heWJlX2xvb2t1cF9kZWNsX2luX291dGVyX2N0eCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9vdXRlcl92YXJfcmVmKTogVXNlIG1heWJlX2xvb2t1cF9kZWNsX2luX291dGVyX2N0eAoJdG8gZmluZCBpZiB2YXIgd2lsbCBiZSBhIGdsb2JhbCB2YXJpYWJsZSBldmVuIGluIHRoZSBuZXN0ZWQgY29udGV4dC4KCShvbXBfY29weV9kZWNsKTogT25seSBjaGVjayBmb3IgZ2xvYmFsIHZhcmlhYmxlIGF0IHRoZSBlbmQsIGl0IG1pZ2h0CgliZSBvdmVycmlkZGVuIGluIG91dGVyIGNvbnRleHRzLgoJKHNjYW5fc2hhcmluZ19jbGF1c2VzKTogRm9yIGdsb2JhbCB2YXJpYWJsZXMgZG9uJ3QgY3JlYXRlIGEgZmllbGQuCgkobG93ZXJfcmVjX2lucHV0X2NsYXVzZXMpOiBEbyBub3RoaW5nIGZvciBnbG9iYWwgc2hhcmVkIHZhcmlhYmxlcy4KCUVtaXQgYSBiYXJyaWVyIGF0IHRoZSBlbmQgb2YgSUxJU1QgaWYgdGhlcmUgd2VyZSBhbnkgZGVjbHMgaW4gYm90aAoJZmlyc3Rwcml2YXRlIGFuZCBsYXN0cHJpdmF0ZSBjbGF1c2VzLgoJKGxvd2VyX3NlbmRfY2xhdXNlcyk6IERvIG5vdGhpbmcgZm9yIGdsb2JhbCB2YXJpYWJsZXMgZXhjZXB0IGZvcgoJQ09QWUlOLgoKMjAwNi0wNS0wMiAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS5jICh1bnNpZ25lZF90eXBlX2Zvciwgc2lnbmVkX3R5cGVfZm9yKTogTWFrZSBzdXJlIGEgdHlwZQoJb2YgdGhlIGNvcnJlY3Qgc2lnbmVkbmVzcyBpcyByZXR1cm5lZC4KCjIwMDYtMDUtMDIgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjczNjQKCSogdHJlZS12cnAuYyAodnJwX2ludF9jb25zdF9iaW5vcCk6IEZpeCBkZXRlY3Rpb24gb2Ygb3ZlcmZsb3cgZnJvbQoJbXVsdGlwbHkgZXhwcmVzc2lvbnMuCgoyMDA2LTA1LTAyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKG9wX2l0ZXJfaW5pdF9waGl1c2UpOiBGaXhlZCB0eXBvLgoKMjAwNi0wNS0wMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgdGFyZ2V0LzI3Mzg3CgkqIGFybS5jIChhcm1fb3V0cHV0X21pX3RodW5rKTogVXNlIHBjLXJlbGF0aXZlIGFkZHJlc3Npbmcgd2hlbgoJLW10aHVtYiAtZlBJQyBhcmUgdXNlZC4KCjIwMDYtMDUtMDIgIFN0YW5pc2xhdyBTa293cm9uZWsgIDxza3lsYXJrQGxpbnV4LW1pcHMub3JnPgoJICAgIEpvc2h1YSBLaW5hcmQgIDxrdW1iYUBnZW50b28ub3JnPgoKCVBSIHRhcmdldC8yNTg3MQoJKiBjb25maWcvbWlwcy9taXBzLmggKFRSQU1QT0xJTkVfVEVNUExBVEUpOiBBdm9pZCAzMi1iaXQgbW92ZXMKCXdpdGggNjQtYml0IHBvaW50ZXJzLgoKMjAwNi0wNS0wMiAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9hcm0vYXJtLmMgKGFkZF9taW5pcG9vbF9mb3J3YXJkX3JlZik6IENoZWNrIGlmIGluc24KCWFuZCBwb29sIG92ZXJsYXAuCgkoY3JlYXRlX2ZpeF9iYXJyaWVyKTogQ2hlY2sgdGhhdCBhIHN1aXRhYmxlIGJhcnJpZXIgbG9jYXRpb24gaXMKCWZvdW5kLgoJKGFybV9yZW9yZyk6IEluY2x1ZGUgZnRtcC0+YWRkcmVzcyBpbiBhbGxvd2FibGUgcmFuZ2Ugb2YgYWRkcmVzc2VzLgoKMjAwNi0wNS0wMiAgRGF2aWQgQmlsbGluZ2h1cnN0IDxEYXZpZC5CaWxsaW5naHVyc3RAcmlvdGludG8uY29tPgoKCVBSIGFkYS8yNzM2NgoJKiBhZGEvZW52LmMgKF9fZ25hdF9jbGVhcmVudik6IFVzZSB1bnNldGVudigpIHRvIGNsZWFyIGVudmlyb25tZW50CglvbiBDeWd3aW4uCgoyMDA2LTA1LTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzI3MzM3CgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X3NjYW5fb21wX2NsYXVzZXMpOiBIYW5kbGUgSU5ESVJFQ1RfUkVGCglhcm91bmQgUkVTVUxUX0RFQ0wgZm9yIHJlc3VsdCBwYXNzZWQgYnkgcmVmZXJlbmNlLgoJKGdpbXBsaWZ5X2V4cHIpOiBDYWxsIG9tcF9ub3RpY2VfdmFyaWFibGUgd2hlbiBSRVNVTFRfREVDTCBpcyBzZWVuLgoJKiBvbXAtbG93LmMgKHVzZV9wb2ludGVyX2Zvcl9maWVsZCk6IERvbid0IGxvb2sgYXQKCURFQ0xfSEFTX1ZBTFVFX0VYUFJfUCBmb3IgUkVTVUxUX0RFQ0xzLgoJKHNjYW5fb21wXzEpOiBDYWxsIHJlbWFwX2RlY2wgb24gUkVTVUxUX0RFQ0xzLgoJKGxvd2VyX3JlY19pbnB1dF9jbGF1c2VzKTogRG9uJ3QgYWxsb2NhdGUgVkxBIG1lbW9yeSBmb3IgdGhlIHNlY29uZAoJdGltZSBvciB2YXIgZm9yIHBhc3NpbmcgYnkgcmVmZXJlbmNlIGZvcgoJT01QX0NMQVVTRV9MQVNUUFJJVkFURV9GSVJTVFBSSVZBVEUgY2xhdXNlcy4gIEFsbG93IGNyZWF0aW9uIG9mCglUUkVFX0FERFJFU1NBQkxFIHZhcmlhYmxlcyB3aGVuIHBhc3NpbmcgYnkgcmVmZXJlbmNlLgoKCSogb21wLWxvdy5jIChkdW1wX29tcF9yZWdpb24pOiBGaXggb3V0cHV0IGZvcm1hdHRpbmcuCgoJUFIgbWlkZGxlLWVuZC8yNzMyOAoJKiBvbXAtbG93LmMgKHJlbW92ZV9leGl0X2JhcnJpZXIpOiBIYW5kbGUgTlVMTCBleGl0X2JiLgoJKGV4cGFuZF9vbXBfcGFyYWxsZWwpOiBMaWtld2lzZS4KCSogdHJlZS1jZmcuYyAobW92ZV9zZXNlX3JlZ2lvbl90b19mbik6IExpa2V3aXNlLgoKCVBSIG1pZGRsZS1lbmQvMjczMjUKCSogb21wLWxvdy5jIChsb3dlcl9vbXBfc2VjdGlvbnMpOiBDYWxsIG1heWJlX2NhdGNoX2V4Y2VwdGlvbgoJb24gc3RhdGVtZW50IGxpc3QgY29udGFpbmluZyBhbHNvIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMuCgkobG93ZXJfb21wX3NpbmdsZSwgbG93ZXJfb21wX2ZvciwgbG93ZXJfb21wX3BhcmFsbGVsKTogTGlrZXdpc2UuCgoJUFIgbWlkZGxlLWVuZC8yNzMxMAoJKiBleGNlcHQuYyAoZHVwbGljYXRlX2VoX3JlZ2lvbnMpOiBGaXggY2xlYXJpbmcgb2YKCWNmdW4tPmVoLT5yZWdpb25fYXJyYXkgZW50cmllcy4KCjIwMDYtMDUtMDEgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmFjIChnY2NfY3Zfbm0pOiBEb24ndCB1c2UgYW4gaW4tdHJlZSBubSBpZgoJYnVpbGQhPWhvc3QuCgkoZ2NjX2N2X29iamR1bXApOiBMaWtld2lzZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDYtMDUtMDEgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHRhcmdldC8yNzM3NAoJKiBjb25maWcvYXJtL3ZmcC5tZCAoKmFybV9tb3ZkaV92ZnApOiBDb3JyZWN0IHRoZSBvdXRwdXQKCXRlbXBsYXRlcyBmb3IgY2FzZSAzIGFuZCA0LgoKMjAwNi0wNS0wMSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiB2ZWMuYzogSW5jbHVkZSBiY29uZmlnLmggd2hlbiBhcHByb3ByaWF0ZS4KCSogTWFrZWZpbGUuaW4gKGJ1aWxkL3ZlYy5vKTogQWRqdXN0IGRlcGVuZGVuY2llcy4KCSogbWtjb25maWcuc2g6IE1ha2Ugc3VyZSBjb25maWcuaCBpc24ndCB1c2VkIGZvciBidWlsZCBtYWNoaW5lCgljb21waWxlcy4KCjIwMDYtMDUtMDEgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtaW50by1zc2EuYyAocGhpc190b19yZXdyaXRlLCBibG9ja3Nfd2l0aF9waGlzX3RvX3Jld3JpdGUpOiBOZXcKCXZhcmlhYmxlcy4KCShtYXJrX3BoaV9mb3JfcmV3cml0ZSk6IE5ldyBmdW5jdGlvbi4KCShpbnNlcnRfcGhpX25vZGVzX2ZvciwgbWFya191c2VfaW50ZXJlc3RpbmcpOiBDYWxsCgltYXJrX3BoaV9mb3JfcmV3cml0ZS4KCShyZXdyaXRlX3VwZGF0ZV9waGlfYXJndW1lbnRzKTogVHJhdmVyc2Ugb25seSBwaGlzIGluIHBoaXNfdG9fcmV3cml0ZS4KCSh1cGRhdGVfc3NhKTogSW5pdGlhbGl6ZSBhbmQgZnJlZSBwaGlzX3RvX3Jld3JpdGUuCgoyMDA2LTA1LTAxICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yNzI5MQoJKiBsb29wLWRvbG9vcC5jIChhZGRfdGVzdCwgZG9sb29wX21vZGlmeSk6IEhhbmRsZSB0aGUgY2FzZSBjb25kaXRpb24gaXMKCWZvbGRlZCB0byBhIGNvbnN0YW50LgoKMjAwNi0wNS0wMSAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI3MjgzCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKHN0cnVjdCBuZmVfY2FjaGVfZWx0KTogU3RvcmUganVzdCB0cmVlcywKCW5vdCB3aG9sZSAjIG9mIGl0ZXJhdGlvbiBkZXNjcmlwdGlvbnMuCgkobml0ZXJfZm9yX2V4aXQpOiBSZXR1cm4ganVzdCAjIG9mIGl0ZXJhdGlvbnMuICBGYWlsIGlmICMgb2YgaXRlcmF0aW9ucwoJdXNlcyBhYm5vcm1hbCBzc2EgbmFtZS4KCShuaXRlcl9mb3Jfc2luZ2xlX2RvbV9leGl0KTogRGl0dG8uCgkoZmluZF9pbmR1Y3Rpb25fdmFyaWFibGVzLCBtYXlfZWxpbWluYXRlX2l2KTogRXhwZWN0IG5pdGVyX2Zvcl9leGl0IHRvCglyZXR1cm4ganVzdCB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMuCgoyMDA2LTA1LTAxICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjcxNDQKCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jIChkZXJpdmVfY29uc3RhbnRfdXBwZXJfYm91bmQpOiBOZXcgZnVuY3Rpb24uCgkocmVjb3JkX2VzdGltYXRlKTogT25seSByZWNvcmQgY29uc3RhbnQgdXBwZXIgYm91bmQuCgkoaW5mZXJfbG9vcF9ib3VuZHNfZnJvbV91bmRlZmluZWQpOiBDYWxsCgljb21wdXRlX2VzdGltYXRlZF9uYl9pdGVyYXRpb25zIGp1c3Qgb25jZS4KCShwcm92ZWRfbm9uX3dyYXBwaW5nX3ApOiBSZW5hbWVkIHRvIC4uLgoJKG5fb2ZfZXhlY3V0aW9uc19hdF9tb3N0KTogLi4uIHRoaXMuICBFeHBlY3QgYm91bmQgdG8gYmUgYSBjb25zdGFudC4KCShjb252ZXJ0X3N0ZXBfd2lkZW5pbmcsIHNjZXZfcHJvYmFibHlfd3JhcHNfcCk6IENhbGwKCW5fb2ZfZXhlY3V0aW9uc19hdF9tb3N0IGluc3RlYWQgb2YgcHJvdmVkX25vbl93cmFwcGluZ19wLgoJKHN1YnN0aXR1dGVfaW5fbG9vcF9pbmZvKTogRG8gbm90IHJlcGxhY2UgdmFsdWVzIGluIGJvdW5kcy4KCSogY2ZnbG9vcC5oIChzdHJ1Y3QgbmJfaXRlcl9ib3VuZCk6IFJlbW92ZSAiYWRkaXRpb25hbCIgZmllbGQuICBVcGRhdGUKCWNvbW1lbnRzLgoKMjAwNi0wNS0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBjLzI3MzU4CgkqIGMtcGFyc2VyLmMgKGNfcGFyc2VyX3NraXBfdG9fZW5kX29mX2Jsb2NrX29yX3N0YXRlbWVudCk6IE1vdmUgYWZ0ZXIKCWNfcGFyc2VyX3NraXBfdG9fcHJhZ21hX2VvbC4gIENvbnZlcnQgdG8gc3dpdGNoIHN0YXRlbWVudC4gIEhhbmRsZQoJQ1BQX1BSQUdNQS4KCjIwMDYtMDUtMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYy10eXBlY2suYyAocGFyc2VyX2J1aWxkX2JpbmFyeV9vcCk6IERvbid0IGNhbGwgdGhlIGZ1bmN0aW9uCgl1bnNpZ25lZF9jb252ZXJzaW9uX3dhcm5pbmcgdG8gc3BvdCBvcGVyYW5kL3Jlc3VsdCB0eXBlIG92ZXJmbG93LgoJKGJ1aWxkX2JpbmFyeV9vcCk6IEluc3RlYWQsIGNhbGwgY29udmVydF9hbmRfY2hlY2sgaW5zdGVhZCBvZgoJY29udmVydCB0byByZXBvcnQgdGhlIHByb2JsZW0gd2hlbiB0aGUgb3BlcmFuZHMgYXJlIHByb21vdGVkLgoJKiBjLWNvbW1vbi5jICh1bnNpZ25lZF9jb252ZXJzaW9uX3dhcm5pbmcpOiBNYWtlIHN0YXRpYy4KCSogYy1jb21tb24uaCAodW5zaWduZWRfY29udmVyc2lvbl93YXJuaW5nKTogRGVsZXRlIHByb3RvdHlwZS4KCjIwMDYtMDUtMDEgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNjcyNgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChpZHhfZmluZF9zdGVwKTogTWFyayBzb3VyY2Ugb2YgdGhlCglwcm9ibGVtIC4uLgoJKGZpbmRfaW50ZXJlc3RpbmdfdXNlc19hZGRyZXNzKTogLi4uIHdlIHdvcmsgYXJvdW5kIGhlcmUKCWJ5IGZvbGRpbmcgSU5ESVJFQ1RfUkVGcyBpbiB0aGUgc3Vic3RpdHV0ZWQgYmFzZS4KCjIwMDYtMDUtMDEgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogb21wLWxvdy5jIChkdW1wX29tcF9yZWdpb24pOiBBZGQgbmV3bGluZXMuCgoyMDA2LTA0LTMwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbW1vbi5vcHQgKFdvdmVyZmxvdyk6IE5ldyBjb21tYW5kIGxpbmUgb3B0aW9uLgoJKiBjLWNvbW1vbi5jIChjb25zdGFudF9leHByZXNzaW9uX3dhcm5pbmcpOiBDaGVjayB3YXJuX292ZXJmbG93LgoJKG92ZXJmbG93X3dhcmluZyk6IFBhc3MgT1BUX1dvdmVyZmxvdyB0byB3YXJuaW5nLgoJKHVuc2lnbmVkX2NvbnZlcnNpb25fd2FybmluZyk6IExpa2V3aXNlLgoJKGNvbnZlcnRfYW5kX2NoZWNrKTogTGlrZXdpc2UuCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgbmV3IGNvbW1hbmQgbGluZSBvcHRpb24uCgoyMDA2LTA0LTMwICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IEVuYWJsZQoJVEFSR0VUX05PX0ZQX0lOX1RPQyBmb3Igc2VjdGlvbiBhbmNob3JzLgoJKG9wdGltaXphdGlvbl9vcHRpb25zKTogRW5hYmxlIHNlY3Rpb24gYW5jaG9ycyBmb3IgYWxsCglub24tIk9iamVjdGl2ZSIgbGFuZ3VhZ2VzLgoKMjAwNi0wNC0yOCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4tYy5jIChkYXJ3aW5fbXNfc3RydWN0KTogTW92ZSB0aGlzCgkoZGFyd2luX3NldF9kZWZhdWx0X3R5cGVfYXR0cmlidXRlcyk6IGFuZCB0aGlzLi4uCgkqIGNvbmZpZy9kYXJ3aW4uYzogLi4uIGhlcmUuCgkqIGNvbmZpZy9kYXJ3aW4uaCAoZGFyd2luX21zX3N0cnVjdCk6IERlY2xhcmUuCgoyMDA2LTA0LTI4ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1kb20uYyAocHJvcGFnYXRlX3Joc19pbnRvX2xocyk6IEZpeCBhc3NlcnQgY2xhdXNlLgoKMjAwNi0wNC0yOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgYy8yNTMwOQoJKiBjLXR5cGVjay5jIChzdHJ1Y3Qgc3BlbGxpbmcpOiBNYWtlIEkgYW4gdW5zaWduZWQgSE9TVF9XSURFX0lOVC4KCShwdXNoX2FycmF5X2JvdW5kcyk6IERlbGV0ZSBwcm90b3R5cGUuICBDaGFuZ2UgQk9VTkRTIGFyZ3VtZW50IHRvCglhbiB1bnNpZ25lZCBIT1NUX1dJREVfSU5ULgoJKHByaW50X3NwZWxsaW5nKTogVXNlIEhPU1RfV0lERV9JTlRfUFJJTlRfVU5TSUdORUQgdG8gb3V0cHV0IHRoZQoJYXJyYXkgaW5kZXguCgkocmVhbGx5X3N0YXJ0X2luY3JlbWVudGFsX2luaXQpOiBObyBuZWVkIHRvIGNhbGwgY29udmVydCBiZWNhdXNlCgliaXRzaXplX3plcm9fbm9kZSBpcyBhbHJlYWR5IG9mIHR5cGUgYml0c2l6ZXR5cGUuCgkocHVzaF9pbml0X2xldmVsKTogRXh0cmFjdCB0aGUgdmFsdWUgb2YgY29uc3RydWN0b3JfaW5kZXggYXMgYW4KCXVuc2lnbmVkIEhPU1RfV0lERV9JTlQgcXVhbnRpdHksIHVzaW5nIHRyZWVfbG93X2NzdC4KCShwcm9jZXNzX2luaXRfZWxlbWVudCk6IExpa2V3aXNlLgoKMjAwNi0wNC0yOCAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnY2MuYyAocHJvY2Vzc19jb21tYW5kKTogQWRkIHByb2dyYW0gbmFtZSB0byBHQ0NfRVhFQ19QUkVGSVgKCXZhbHVlIGJlZm9yZSBwYXNzaW5nIHRvIG1ha2VfcmVsYXRpdmVfcHJlZml4LgoKMjAwNi0wNC0yOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiBtaWRkbGUtZW5kLzI3MjYwCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX21lbXNldCk6IEV4cGFuZCB2YWwgaW4gb3JpZ2luYWwgbW9kZS4KCjIwMDYtMDQtMjcgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9TRVRfREVGQVVMVF9UWVBFX0FUVFJJQlVURVMpOiBCcmFja2V0Cgl3aXRoICNpZm5kZWYvI2VuZGlmLgoJKiBjb25maWcvZGFyd2luLWMuYyAoZGFyd2luX21zX3N0cnVjdCk6IE5ldy4KCShkYXJ3aW5fcHJhZ21hX21zX3N0cnVjdCk6IERpdHRvLgoJKGRhcndpbl9zZXRfZGVmYXVsdF90eXBlX2F0dHJpYnV0ZXMpOiBEaXR0by4KCSogY29uZmlnL2Rhcndpbi1wcm90b3MuaCAoZGFyd2luX3ByYWdtYV9tc19zdHJ1Y3QpOiBEZWNsYXJlLgoJKiBjb25maWcvZGFyd2luLmggKERBUldJTl9SRUdJU1RFUl9UQVJHRVRfUFJBR01BUyk6CglSZWdpc3RlciBtc19zdHJ1Y3QgcHJhZ21hLgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoUkVHSVNURVJfVEFSR0VUX1BSQUdNQVMpOiBEZWNsYXJlLgoJKFRBUkdFVF9TRVRfREVGQVVMVF9UWVBFX0FUVFJJQlVURVMpOiBEaXR0by4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3NldF9kZWZhdWx0X3R5cGVfYXR0cmlidXRlcyk6IENhbGwKCWRhcndpbl9zZXRfZGVmYXVsdF90eXBlX2F0dHJpYnV0ZXMgaWYgVEFSR0VUX01BQ0hPLgoKMjAwNi0wNC0yNyAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2ODU0CgkqIHRyZWUtdnJwLmMgKHJlbW92ZV9yYW5nZV9hc3NlcnRpb25zKTogVXNlIG5ldyBJbW11c2UgaXRlcmF0b3IuCgkqIGRvYy90cmVlLXNzYS50ZXhpOiBVcGRhdGUgaW1tdXNlIGl0ZXJhdG9yIGRvY3VtZW50YXRpb24uCgkqIHRyZWUtc3NhLW1hdGgtb3B0cy5jIChleGVjdXRlX2NzZV9yZWNpcHJvY2Fsc18xKTogVXNlIG5ldyBpdGVyYXRvci4KCSogdHJlZS1zc2EtZG9tLmMgKHByb3BhZ2F0ZV9yaHNfaW50b19saHMpOiBVc2UgbmV3IGl0ZXJhdG9yLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKGVuZF9zYWZlX2ltbV91c2VfdHJhdmVyc2UsIGVuZF9zYWZlX2ltbV91c2VfcCwKCWZpcnN0X3NhZmVfaW1tX3VzZSwgbmV4dF9zYWZlX2ltbV91c2UpOiBSZW1vdmUuCgkoZW5kX2ltbV91c2Vfc3RtdF9wKTogTmV3LiAgQ2hlY2sgZm9yIGVuZCBvZiBpbW11c2Ugc3RtdCB0cmF2ZXJzYWwuCgkoZW5kX2ltbV91c2Vfc3RtdF90cmF2ZXJzZSk6IE5ldy4gIFRlcm1pbmF0ZSBpbW11c2Ugc3RtdCB0cmF2ZXJzYWwuCgkobW92ZV91c2VfYWZ0ZXJfaGVhZCk6IE5ldy4gIEhlbHBlciBmdW5jdGlvbiB0byBzb3J0IGltbXVzZXMgaW4gYSBzdG10LgoJKGxpbmtfdXNlX3N0bXRzX2FmdGVyKTogTmV3LiAgTGluayBhbGwgaW1tdXNlcyBpbiBhIHN0bXQgY29uc2VzY3V0aXZlbHkuCgkoZmlyc3RfaW1tX3VzZV9zdG10KTogTmV3LiAgR2V0IGZpcnN0IHN0bXQgaW4gYW4gaW1tdXNlIGxpc3QuCgkobmV4dF9pbW1fdXNlX3N0bXQpOiBOZXcuICBHZXQgbmV4dCBzdG10IGluIGFuIGltbXVzZSBsaXN0LgoJKGZpcnN0X2ltbV91c2Vfb25fc3RtdCk6IE5ldy4gIEdldCBmaXJzdCBpbW11c2Ugb24gYSBzdG10LgoJKGVuZF9pbW1fdXNlX29uX3N0bXRfcCk6IE5ldy4gIENoZWNrIGZvciBlbmQgb2YgaW1tdXNlcyBvbiBhIHN0bXQuCgkobmV4dF9pbW1fdXNlX29uX3N0bXQpOiBOZXcuICBNb3ZlIHRvIG5leHQgaW1tdXNlIG9uIGEgc3RtdC4KCSogdHJlZS1zc2EtZm9yd3Byb3AuYyAoZm9yd2FyZF9wcm9wYWdhdGVfYWRkcl9leHByKTogVXNlIG5ldyBpdGVyYXRvci4KCSogbGFtYmRhLWNvZGUuYyAobGFtYmRhX2xvb3BuZXN0X3RvX2djY19sb29wbmVzdCk6IFVzZSBuZXcgaXRlcmF0b3IuCgkocGVyZmVjdF9uZXN0aWZ5KTogVXNlIG5ldyBpdGVyYXRvci4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X2NyZWF0ZV9lcGlsb2dfZm9yX3JlZHVjdGlvbik6IFVzZSBuZXcKCWl0ZXJhdG9yLgoJKiB0cmVlLWZsb3cuaCAoc3RydWN0IGltbWVkaWF0ZV91c2VfaXRlcmF0b3JfZCk6IEFkZCBjb21tZW50cy4KCShuZXh0X2ltbV9uYW1lKTogTmV3IGZpZWxkIGluIHN0cnVjdCBpbW1lZGlhdGVfdXNlX2l0ZXJhdG9yX2QuCgkoRk9SX0VBQ0hfSU1NX1VTRV9TQUZFLCBCUkVBS19GUk9NX1NBRkVfSU1NX1VTRSk6IFJlbW92ZS4KCShGT1JfRUFDSF9JTU1fVVNFX1NUTVQsIEJSRUFLX0ZST01fSU1NX1VTRV9TVE1ULAoJRk9SX0VBQ0hfSU1NX1VTRV9PTl9TVE1UKTogTmV3IGltbWVkaWF0ZSB1c2UgaXRlcmF0b3IgbWFjcm9zLgoJKiB0cmVlLWNmZy5jIChyZXBsYWNlX3VzZXNfYnkpOiBVc2UgbmV3IGl0ZXJhdG9yLgoJKiB0cmVlLXNzYS10aHJlYWRlZGdlLmMgKGxoc19vZl9kb21pbmF0aW5nX2Fzc2VydCk6IFVzZSBuZXcgaXRlcmF0b3IuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGNvcnJlY3RfdXNlX2xpbmspOiBSZW1vdmUuCgkoZmluYWxpemVfc3NhX3VzZV9vcHMpOiBObyBsb25nZXIgY2FsbCBjb3JyZWN0X3VzZV9saW5rLgoKMjAwNi0wNC0yNyAgU3R1YXJ0IEhhc3RpbmdzICA8c3R1YXJ0QGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvdC1kYXJ3aW4gKERBUldJTl9FWFRSQV9DUlRfQlVJTERfQ0ZMQUdTKTogTmV3LgoJKiBjb25maWcvdC1kYXJ3aW4gKGNydDMubyk6IFVzZSBpdC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2luaXRpYWxpemVfdHJhbXBvbGluZSk6IFJlbW92ZQoJJ3Btb2RlJywgdXNlIFBtb2RlIGluc3RlYWQgb2YgU0ltb2RlIGZvciBTWU1CT0xfUkVGLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoY2FsbF9pbmRpcmVjdF9ub25sb2NhbF9zeXN2LAoJY2FsbF9ub25sb2NhbF9zeXN2LCBjYWxsX3ZhbHVlX2luZGlyZWN0X25vbmxvY2FsX3N5c3YsCgljYWxsX3ZhbHVlX25vbmxvY2FsX3N5c3YpOiBTdWZmaXggd2l0aCB0aGUgIlAiIG1hY3JvIGZvciAzMi82NAoJc3VwcG9ydC4KCjIwMDYtMDQtMjcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZXhwbWVkLmMgKHN0b3JlX2ZpeGVkX2JpdF9maWVsZCk6IElmIHdlJ3JlIG5vdCBvcHRpbWl6aW5nIGZvcgoJc2l6ZSwgZm9yY2UgdGhlIGludGVybWVkaWF0ZSBpbnRvIGEgbmV3IHBzZXVkbyByYXRoZXIgaW5zdGVhZCBvZgoJcGVyZm9ybWluZyBib3RoIGEgYml0d2lzZSBBTkQgYW5kIGEgYml0d2lzZSBJT1IgaW4gbWVtb3J5LgoKMjAwNi0wNC0yNyAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjY2ODUKCSogcGFyYW1zLmRlZiAoUEFSQU1fTUFYX0NTRV9JTlNOUyk6IENvcnJlY3QgdHlwbyB0aGF0IG5hbWVkCgl0aGlzIG9uZSAibWF4LWZsb3ctbWVtb3J5LWxvY2F0aW9ucyIuCgoyMDA2LTA0LTI3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjUxNDgKCSogdHJlZS12cnAuYyAoY29tcGFyZV92YWx1ZXMpOiBSZW1vdmUgY29kZSBkZWFsaW5nIHdpdGgKCWNvbXBhcmlzb25zIGFnYWluc3QgdHlwZSBtaW4vbWF4IHZhbHVlLiAgSG9ub3VyIG92ZXJmbG93CglhbmQgbmVnYXRpdmUgY29uc3RhbnRzIGluIGNvZGUgZGVhbGluZyB3aXRoIGNvbXBhcmlzb25zCglvZiBwbHVzIGFuZCBtaW51cyBleHByZXNzaW9ucy4KCSh2YWx1ZV9pbnNpZGVfcmFuZ2UpOiBVc2UgZm9sZF9iaW5hcnkgd2l0aCBMRV9FWFBSIGFuZAoJR0VfRVhQUiByYXRoZXIgdGhhbiBjb21wYXJlX3ZhbHVlcy4KCjIwMDYtMDQtMjcgIERpcmsgTXVlbGxlciAgPGRtdWVsbGVyQHN1c2UuZGU+CgoJKiBjb25maWcvaTM4Ni94bW1pbnRyaW4uaCAoX21tX3NodWZmbGVfcGkxNik6IERlY2xhcmUKCXByb3RvdHlwZSBmb3IgU1NFLgoKMjAwNi0wNC0yNiAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCgkqIGJhc2ljLWJsb2NrLmggKHNhZmVfaW5zZXJ0X2luc25fb25fZWRnZSk6IFJlbW92ZWQuCgkqIGNmZ3J0bC5jIChtYXJrX2tpbGxlZF9yZWdzLCBzYWZlX2luc2VydF9pbnNuX29uX2VkZ2UpOiBSZW1vdmVkLgoKMjAwNi0wNC0yNiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoJICAgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgbWlkZGxlLWVuZC8yNzI4MgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X2FuZF9jb25zdF9pbnRfMSk6IFVzZSBnZW5faW50X21vZGUuCgkoc2ltcGxpZnlfYW5kX2NvbnN0X2ludCk6IFNhbWUuCgoyMDA2LTA0LTI2ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1kc2UuYyAoZHNlX29wdGltaXplX3N0bXQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIFVTRS4KCjIwMDYtMDQtMjYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMvMjYxNzEKCSogY2dyYXBoLmMgKGNncmFwaF92YXJwb29sX2ZpbmFsaXplX2RlY2wpOiBEb24ndCBjYWxsCgljZ3JhcGhfdmFycG9vbF9hc3NlbWJsZV9wZW5kaW5nX2RlY2xzIGlmIC1mb3Blbm1wLCB1bmxlc3MKCWNncmFwaF9nbG9iYWxfaW5mb19yZWFkeS4KCglQUiBtaWRkbGUtZW5kLzI2OTEzCgkqIHRyZWUtY2ZnLmMgKGZpbmRfb3V0ZXJtb3N0X3JlZ2lvbl9pbl9ibG9jayk6IEhhbmRsZSBSRVNYX0VYUFIuCgoJUFIgYy8yNTk5NgoJKiBjLXBhcnNlci5jIChjX3BhcnNlcl9vbXBfZm9yX2xvb3ApOiBEb24ndCBjYWxsIGNfZmluaXNoX29tcF9mb3IgaWYKCWVpdGhlciBkZWNsIG9yIGluaXQgaXMgZXJyb3JfbWFya19ub2RlLgoKCVBSIG1pZGRsZS1lbmQvMjU5ODkKCSogdHJlZS1mbG93LmggKHN0cnVjdCBvbXBfcmVnaW9uKTogQWRkIHNjaGVkX2tpbmQuCgkqIG9tcC1sb3cuYyAoZXhwYW5kX3BhcmFsbGVsX2NhbGwpOiBVc2UgcmVnaW9uLT5pbm5lci0+c2NoZWRfa2luZAoJaW5zdGVhZCBvZiBleHRyYWN0aW5nIG9tcCBmb3IgZGF0YS4KCShleHBhbmRfb21wX2Zvcik6IFNhdmUgZXh0cmFjdGVkIHNjaGVkX2tpbmQuCgoyMDA2LTA0LTI1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cG1lZC5jIChzdG9yZV9iaXRfZmllbGQpOiBBbHNvIGNoZWNrIHdoZXRoZXIgdGhlIGJpdHNpemUgaXMKCXZhbGlkIGZvciB0aGUgbWFjaGluZSdzICJpbnN2IiBpbnN0cnVjdGlvbiBiZWZvcmUgbW92aW5nIHRoZQoJdGFyZ2V0IGludG8gYSBwc2V1ZG8gZm9yIHVzZSB3aXRoIHRoZSBpbnN2LgoJKiBjb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIChjb25zdDhfb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGUuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGV4dHYsIGV4dHp2LCBpbnN2KTogVXNlIHRoZSBuZXcKCWNvbnN0OF9vcGVyYW5kIHByZWRpY2F0ZSB3aGVyZSBhcHByb3ByaWF0ZS4KCjIwMDYtMDQtMjUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogZG9jL2luc3RhbGwudGV4aSAoU3BlY2lmaWMpOiBDbGFyaWZ5IHRoYXQgdGhpcyBpcyBub3QgYSBsaXN0IG9mCglzdXBwb3J0ZWQgaG9zdHMgb3IgdGFyZ2V0cy4KCjIwMDYtMDQtMjUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjY3MjUKCSogY2ZncnRsLmMgKHJ0bF9yZWRpcmVjdF9lZGdlX2FuZF9icmFuY2hfZm9yY2UpOiBTZXQgdGhlIHNvdXJjZQoJYmxvY2sncyBCQl9ESVJUWSBmbGFnLgoKMjAwNi0wNC0yNSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkd2FyZjJvdXQuYyAoc2l6ZV9vZl9sb2NzKTogRG9uJ3QgZmlsbCBkd19sb2NfYWRkciBpZiB0aGVyZQoJYXJlIG5vIGJyYW5jaGVzLgoKCSogZHdhcmYyYXNtLmMgKGR3Ml9hc21fb3V0cHV0X2RhdGEpOiBEb24ndCBnZW5lcmF0ZSBSVEwganVzdAoJdG8gcHJpbnQgYW4gaW50ZWdlci4KCjIwMDYtMDQtMjUgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIHZhcmFzbS5jIChhbGlnbl92YXJpYWJsZSk6IE5ldyBmdW5jdGlvbi4KCShnZXRfYmxvY2tfZm9yX2RlY2wpOiBBcHBseSBhbGlnbl92YXJpYWJsZSB0byBERUNMIGJlZm9yZQoJY2FsY3VsYXRpbmcgc2VjdGlvbiBpbmZvcm1hdGlvbi4KCShhc3NlbWJsZV92YXJpYWJsZSk6IFNwbGl0IG91dCBhbGlnbm1lbnQgY29tcHV0YXRpb24uCgoyMDA2LTA0LTI1ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCk6IEhhbmRsZSBwYXJhZG94aWNhbCBzdWJyZWdzIG9uIGJpZyBlbmRpYW4KCW1hY2hpbmVzLgoKMjAwNi0wNC0yNSAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIGdlbm1vZGVzLmMgKG1ha2VfdmVjdG9yX21vZGUpOiBBbGxvdyBtYWtpbmcgVkVDVE9SX01PREVfSU5UIG9mIGEKCU1PREVfUEFSVElBTF9JTlQgbW9kZS4KCSogY29uZmlnL2JmaW4vYmZpbi1tb2Rlcy5kZWY6IEFkZCBWMlBESSBhbmQgVjJTSS4KCSogY29uZmlnL2JmaW4vYmZpbi5jIChwcmludF9vcGVyYW5kKTogQWRkIG1hY2ZsYWcgYW5kIG1hYy9tc3UgbW9kaWZpZXJzCglmb3IgQ09OU1RfSU5Ucy4KCShoYXJkX3JlZ25vX21vZGVfb2spOiBWMlBESW1vZGUgaXMgb2sgZm9yIGFjY3VtdWxhdG9ycy4KCSogY29uZmlnL2JmaW4vYmZpbi5oIChDTEFTU19NQVhfTlJFR1MsIEhBUkRfUkVHTk9fTlJFR1MpOiBIYW5kbGUKCVYyUERJbW9kZS4KCSogY29uZmlnL2JmaW4vcHJlZGljYXRlcy5tZCAoY29uc3QwMV9vcGVyYW5kLCB2ZWNfc2hpZnRfb3BlcmFuZCk6CglOZXcgcHJlZGljYXRlcy4KCSogY29uZmlnL2JmaW4vYmZpbi5tZCAoVU5TUEVDX01VTF9XSVRIX0ZMQUcsIFVOU1BFQ19NQUNfV0lUSF9GTEFHKToKCU5ldyBjb25zdGFudHMuCgkoTUFDRkxBR19OT05FLCBNQUNGTEFHX1QsIE1BQ0ZMQUdfRlUsIE1BQ0ZMQUdfVEZVLCBNQUNGTEFHX0lTLAoJTUFDRkxBR19JVSwgTUFDRkxBR19XMzIsIE1BQ0ZMQUdfTSwgTUFDRkxBR19TMlJORCwgTUFDRkxBR19JU1MyLAoJTUFDRkxBR19JSCk6IExpa2V3aXNlLgoJKG1vdnN0cmljdGhpXzEpOiBSZW5hbWVkIGZyb20gIiptb3ZzdHJpY3RoaSIuCgkobG9hZF9hY2N1bXVsYXRvciwgbG9hZF9hY2N1bXVsYXRvcl9wYWlyLCBtb3ZzaV9pbnN2LCBpbnN2LAoJc3NhZGRzaTMsIHNzc3Vic2kzLCBzc25lZ3NpMiwgc2lnbmJpdHNzaTIsIHNtYXhoaTMsIHNtaW5oaTMsCglhYnNoaTIsIG5lZ2hpMiwgc3NuZWdoaTIsIHNpZ25iaXRzaGkyLCBtb3ZoaV9sb3cyaGlnaCwKCW1vdmhpX2hpZ2gyaGlnaCwgbW92aGlfbG93MmxvdywgbW92aGlfaGlnaDJsb3csIG1vdmhpdjJoaV9sb3csCgltb3ZoaXYyaGlfaGlnaCwgY29tcG9zZXYyaGksIG1vdnYyaGlfaGksIG1vdnYyaGlfaGlfbG93LAoJbW92djJoaV9oaV9oaWdoLCBzc2FkZGhpMywgc3NzdWJoaTMsIHNzYWRkdjJoaTMsIHNzc3VidjJoaTMsCglhZGRzdWJ2MmhpMywgc3ViYWRkdjJoaTMsIHNzYWRkc3VidjJoaTMsIHNzc3ViYWRkdjJoaTMsCglzdWJsb2hpdjJoaTMsIHN1YmhpbG92MmhpMywgc3NzdWJsb2hpdjJoaTMsIHNzc3ViaGlsb3YyaGkzLAoJYWRkbG9oaXYyaGkzLCBhZGRoaWxvdjJoaTMsIHNzYWRkbG9oaXYyaGkzLCBzc2FkZGhpbG92MmhpMywKCW11bGhpc2lfbGwsIG11bGhpc2lfbGgsIG11bGhpc2lfaGwsIG11bGhpc2lfaGgsIHNzbmVndjJoaTIsCglzc2FzaGlmdHYyaGkzLCBzc2FzaGlmdGhpMywgbHNoaWZ0djJoaTMsIGxzaGlmdGhpMywgcGFja3YyaGksCglmbGFnX211bGhpLCBmbGFnX211bGhpc2lfcGFydHMsIGZsYWdfbWFjaGksIGZsYWdfbWFjaGlfYWNjb25seSwKCWZsYWdfbWFjaW5pdGhpLCBmbGFnX21hY2luaXQxaGksIGZsYWdfbXVsdjJoaSwgZmxhZ19tdWx2MmhpX3BhcnRzLAoJZmxhZ19tYWN2MmhpX3BhcnRzLCBmbGFnX21hY3YyaGlfcGFydHNfYWNjb25seSwKCWZsYWdfbWFjaW5pdHYyaGlfcGFydHMsIGZsYWdfbWFjaW5pdDF2MmhpX3BhcnRzKTogTmV3IHBhdHRlcm5zLgoKCSogZG9jL3J0bC50ZXhpIChzc19hc2hpZnQpOiBJbXByb3ZlIHdvcmRpbmcuCgoyMDA2LTA0LTI0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGR3YXJmMm91dC5jICh2ZXJpZnlfbWFya3NfY2xlYXIpOiBOZXcuCgkocHJ1bmVfdW51c2VkX3R5cGVzKTogQ2FsbCB2ZXJpZnlfbWFya3NfY2xlYXIgaW5pdGlhbGx5LCBub3QKCXBydW5lX3VubWFya19kaWVzLgoKMjAwNi0wNC0yNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIHJ0bC5kZWYgKFNTX0FTSElGVCwgU1NfTkVHKTogTmV3IGNvZGVzLgoJKiBkb2MvcnRsLnRleGk6IERvY3VtZW50IHRoZW0uCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24sCglzaW1wbGlmeV9iaW5hcnlfb3BlcmF0aW9uXzEpOiBEb24ndCBhYm9ydCB3aGVuIHdlIHNlZSB0aGVtLgoKMjAwNi0wNC0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglSZXZlcnQ6CgkyMDA2LTA0LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoJKiBjb25maWd1cmUuYWM6IENvbXBsZXRlbHkgZGlzcmVnYXJkIGxhbmd1YWdlcyB0aGF0IGFyZSBub3QKCWVuYWJsZWQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDA2LTA0LTI0ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnY2MuZ251Lm9yZz4KCVJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNzIzNgoJKiB0cmVlLWlubGluZS5jIChjb3B5X2JvZHlfcik6IE1ha2Ugc3VyZSB0byBjb3B5CglUUkVFX1RISVNfVk9MQVRJTEUgZmxhZy4KCjIwMDYtMDQtMjQgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzI2ODY5CgkqIHRyZWUtY29tcGxleC5jICh1cGRhdGVfcGFyYW1ldGVyX2NvbXBvbmVudHMpOiBEb24ndCBoYW5kbGUKCXVudXNlZCBwYXJhbWV0ZXJzIHdoaWNoIGhhdmUgbm8gZGVmYXVsdCBkZWYuCgoyMDA2LTA0LTI0ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBnY2MuZ251Lm9yZz4KCVJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNzIxOAoJKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBTdHJpcCB1c2VsZXNzIHR5cGUKCWNvbnZlcnNpb25zIGZvciB0aGUgcmV0dXJuIHNsb3QgYWRkcmVzcy4KCjIwMDYtMDQtMjQgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGNmZ2xvb3AuaCAoc3RydWN0IGxvb3BzKTogUmVtb3ZlIHVudXNlZCBmaWVsZCBhcnJheS4gIFJlb3JkZXIKCXN0YXRlIGFmdGVyIG51bS4KCShMT09QX1BSRUZFVENIKTogUmVtb3ZlLgoKMjAwNi0wNC0yNCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzIyNTI1CgkqIHZhbHVlLXByb2YuYyAodHJlZV9tb2RfcG93Mik6IFJlbW92ZSB1bm5lY2Vzc2FyeSB0ZW1wb3JhcnkKCXZhcmlhYmxlLCBhZGp1c3QgdHlwZXMgb2YgZ2VuZXJhdGVkIGV4cHJlc3Npb25zLgoKMjAwNi0wNC0yMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogTWFrZWZpbGUuaW4gKGMtY29udmVydC5vKTogQWRkIGRlcGVuZGVuY3kgb24gJChUQVJHRVRfSCkKCSh0cmVlLXZlY3QtcGF0dGVybnMubyk6IExpa2V3aXNlLgoJKGp1bXAubyk6IExpa2V3aXNlLgoJKGNzZWxpYi5vKTogTGlrZXdpc2UuCgkobG9vcC1kb2xvb3Aubyk6IExpa2V3aXNlLgoJKHJlZ2NsYXNzLm8pOiBMaWtld2lzZS4KCShyZWxvYWQxLm8pOiBMaWtld2lzZS4KCShleHBsb3cubyk6IFJlcGxhY2UgdGFyZ2V0Lmggd2l0aCAkKFRBUkdFVF9IKS4KCShpcGEtcHJvcC5vKTogTGlrZXdpc2UuCgkoaXBhLWNwLm8pOiBMaWtld2lzZS4KCShpcGEtaW5saW5lLm8pOiBMaWtld2lzZS4KCShyZW9yZy5vKTogTGlrZXdpc2UuCgkocmVnLXN0YWNrLm8pOiBMaWtld2lzZS4KCjIwMDYtMDQtMjMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmVlLXRhaWxjYWxsLmMgKHBhc3NfdGFpbF9yZWN1cnNpb24pOiBVc2UgZ2F0ZV90YWlsX2NhbGxzIHRvby4KCjIwMDYtMDQtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBQcmludCBERUNMX0JJVF9GSUVMRF9UWVBFLgoKCSogY29uZmlndXJlLmFjOiBDb21wbGV0ZWx5IGRpc3JlZ2FyZCBsYW5ndWFnZXMgdGhhdCBhcmUgbm90CgllbmFibGVkLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCVBSIGMrKy8yNjUzNAoJKiBjLWNvbW1vbi5oIChjX2J1aWxkX2JpdGZpZWxkX2ludGVnZXJfdHlwZSk6IERlY2xhcmUuCgkqIGMtZGVjbC5jIChjX2J1aWxkX2JpdGZpZWxkX2ludGVnZXJfdHlwZSk6IE1vdmUgdG8gLi4uCgkqIGMtY29tbW9uLmMgKGNfYnVpbGRfYml0ZmllbGRfaW50ZWdlcl90eXBlKTogLi4uIGhlcmUuCgoyMDA2LTA0LTIzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiB0YXJnZXQvMjEyODMKCSogY29uZmlnL2ZyMzAvZnIzMC5tZCAoZGVmaW5lX3NwbGl0KTogQXZvaWQgY2FsbGluZyBnZW5fbG93cGFydCBvbgoJYSBTSW1vZGUgU1VCUkVHIG9mIGEgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIgYWZ0ZXIgbm9fbmV3X3BzZXVkb3MuCgoyMDA2LTA0LTIzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9mcjMwL2ZyMzAubWQgKGFkZHNpX3NtYWxsX2ludCk6IFVzZSBSRUdOT19QVFJfRlJBTUVfUCB0bwoJaWRlbnRpZnkgcG90ZW50aWFsbHkgZWxpbWluYWJsZSByZWdpc3RlcnMgdG8gYWRkaXRpb25hbGx5IGNhdGNoCglWSVJUVUFMX0lOQ09NSU5HX0FSR1NfUkVHTlVNLgoJKGFkZHNpMyk6IFVwZGF0ZSB0aGUgY29uZGl0aW9ucyBvbiB3aGVuIHRvIHVzZSBhZGRzaV9zbWFsbF9pbnQuCgoyMDA2LTA0LTIzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiB0YXJnZXQvMTY2NDEKCSogY29uZmlnL2ZyMzAvZnIzMC5oIChHT19JRl9MRUdJVElNQVRFX0FERFJFU1MpOiBDaGVjayBSRUdOTyBmb3IKCVNUQUNLX1BPSU5URVJfUlRYIGFuZCBGUkFNRV9QT0lOVEVSX1JUWCBpbnN0ZWFkIG9mIGNvbXBhcmluZyB0aGUKCXJ0eCB0byBzdGFja19wb2ludGVyX3J0eCBvciBmcmFtZV9wb2ludGVyX3J0eCBkaXJlY3RseS4KCjIwMDYtMDQtMjMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKHJhbmdlX3ByZWRlY2Vzc29yKTogVXNlIG9wZXJhbmRfZXF1YWxfcAoJYXMgdGhlIHByZWRpY2F0ZSBmb3IgZXF1YWxpdHkuCgkocmFuZ2Vfc3VjY2Vzc29yKTogTGlrZXdpc2UuCgoyMDA2LTA0LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCglSZXZlcnQ6CgkqIGNvbmZpZy9zb2Z0LWZwL29wLWNvbW1vbi5oOiBGaXggYSB0eXBvLgoKMjAwNi0wNC0yMiAgRnJhbmsgQ2guIEVpZ2xlciAgPGZjaGVAcmVkaGF0LmNvbT4KCglQUiBsaWJtdWRmbGFwLzI2ODY0CgkqIGNvbW1vbi5vcHQgKGZsYWdfbXVkZmxhcF90aHJlYWRzKTogT3ZlcmxvYWQgZmxhZ19tdWRmbGFwLgoJKiB0cmVlLW11ZGZsYXAuYyAoZmxhZ19tdWRmbGFwX3RocmVhZHMpOiBEZXJpdmUgZnJvbSBmbGFnX211ZGZsYXAuCgoyMDA2LTA0LTIyICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9zb2Z0LWZwL29wLWNvbW1vbi5oLCBkb3VibGUtaW50LmgsIHRyZWUtc3NhLWRvbS5jOgoJRml4IGNvbW1lbnQgdHlwb3MuCgkqIGRvYy90bS50ZXhpOiBGaXggYSB0eXBvLgoKMjAwNi0wNC0yMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkd2FyZjJvdXQuYyAoc3RydWN0IGRpZV9zdHJ1Y3QpOiBEb2N1bWVudCB0aGF0IGRpZV9zaWIgbWFrZXMKCWEgY2lyY3VsYXIgbGlua2VkIGxpc3QuCgkoRk9SX0VBQ0hfQ0hJTEQpOiBOZXcuCgkocmV2ZXJzZV9kaWVfbGlzdHMpOiBEZWxldGUuCgkocmV2ZXJzZV9hbGxfZGllcyk6IERlbGV0ZS4KCShhZGRfZHdhcmZfYXR0cik6IENvcnJlY3QgZG9jdW1lbnRhdGlvbi4KCShyZW1vdmVfY2hpbGRfd2l0aF9wcmV2KTogTmV3LgoJKHJlbW92ZV9jaGlsZF9UQUcpOiBVcGRhdGUgZm9yIGNoYW5nZSB0byBkaWVfc3RydWN0LCB1c2UKCXJlbW92ZV9jaGlsZF93aXRoX3ByZXYuCgkoYWRkX2NoaWxkX2RpZSk6IFVwZGF0ZSBmb3IgY2hhbmdlIHRvIGRpZV9zdHJ1Y3QuCgkoc3BsaWNlX2NoaWxkX2RpZSk6IFVzZSByZW1vdmVfY2hpbGRfd2l0aF9wcmV2IGFuZCBhZGRfY2hpbGRfZGllLgoJKHByaW50X2RpZSk6IFVzZSBGT1JfRUFDSF9DSElMRC4KCShkaWVfY2hlY2tzdW0pOiBMaWtld2lzZS4KCShhc3NpZ25fc3ltYm9sX25hbWVzKTogTGlrZXdpc2UuCgkob3V0cHV0X2xvY2F0aW9uX2xpc3RzKTogTGlrZXdpc2UuCgkoYnVpbGRfYWJicmV2X3RhYmxlKTogTGlrZXdpc2UuCgkoY2FsY19kaWVfc2l6ZXMpOiBMaWtld2lzZS4KCShtYXJrX2RpZXMpOiBMaWtld2lzZS4KCSh1bm1hcmtfZGllcyk6IExpa2V3aXNlLgoJKHVubWFya19hbGxfZGllcyk6IExpa2V3aXNlLgoJKG91dHB1dF9kaWUpOiBMaWtld2lzZS4KCShwcnVuZV91bnVzZWRfdHlwZXNfbWFyayk6IExpa2V3aXNlLgoJKHBydW5lX3VudXNlZF90eXBlc193YWxrKTogTGlrZXdpc2UuCgkoc2FtZV9kaWVfcCk6IFVwZGF0ZSBmb3IgY2hhbmdlIHRvIGRpZV9zdHJ1Y3QuCgkoYnJlYWtfb3V0X2luY2x1ZGVzKTogTGlrZXdpc2UuCgkocHJ1bmVfdW51c2VkX3R5cGVzX3BydW5lKTogTGlrZXdpc2UuCgkoYWRkX3NpYmxpbmdfYXR0cmlidXRlcyk6IFVzZSBGT1JfRUFDSF9DSElMRCwgc2ltcGxpZnkgbG9naWMuCgkocHJ1bmVfdW5tYXJrX2RpZXMpOiBVc2UgRk9SX0VBQ0hfQ0hJTEQsIGRvbid0IGNsZWFyIGRpZV9tYXJrIGlmCglpdCdzIGFscmVhZHkgY2xlYXIuCgkoZHdhcmYyb3V0X2ZpbmlzaCk6IERvbid0IGNhbGwgcmV2ZXJzZV9hbGxfZGllcy4KCjIwMDYtMDQtMjEgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBkZi1jb3JlLmMsIHRyZWUtb3V0b2Ytc3NhLmMsIGNvbmZpZy9pMzg2L2kzODYuYzogRml4IHR5cG9zCglpbiBjb21tZW50cyBhbmQgZnVuY3Rpb24gbmFtZXMuCgoyMDA2LTA0LTIxICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMvMjU4NzUKCSogYy10eXBlY2suYyAoZGlnZXN0X2luaXQpOiBSb2J1c3RpZnkuCgoJKiBjLXR5cGVjay5jIChwb3BfaW5pdF9sZXZlbCk6IFNpbXBsaWZ5LgoKMjAwNi0wNC0yMSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjb25maWcvcGEvdC1wYTY0OiBBZGQgZGVwZW5kZW5jaWVzIG9uICQoR0NDX1BBU1NFUykuCgoyMDA2LTA0LTIxICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBFcnJvciBvbiBpV01NWHQgYW5kCgloYXJkd2FyZSBmbG9hdGluZyBwb2ludC4KCjIwMDYtMDQtMjEgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFJFR19DTEFTU19DT05URU5UUyk6IEFkZCBzZnAgdG8KCU5PTl9GTE9BVF9SRUdTLgoKMjAwNi0wNC0yMSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zaC90LWVsZiAoRVhUUkFfTVVMVElMSUJfUEFSVFMpOiBJbmNsdWRlCglPUFRfRVhUUkFfUEFSVFMuCgoyMDA2LTA0LTIxICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIHRhcmdldC8yNzIzMAoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogVXNlCglDKysgbGFuZyB0eXBlIGluIHRyYWNlYmFjayB0YWJsZSBmb3IgT2JqZWN0aXZlLUMrKy4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9naW1wbGlmeV92YV9hcmcpOiBVcGRhdGUgY29tbWVudC4KCjIwMDYtMDQtMjAgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoYXNtX3ByZWZlcnJlZF9laF9kYXRhX2Zvcm1hdCk6IFJlZm9ybWF0LgoKMjAwNi0wNC0yMCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBtdWRmbGFwLzI2Nzg5CgkqIHRyZWUtbXVkZmxhcC5jIChtdWRmbGFwX2ZpbmlzaF9maWxlKTogU2tpcCBmdW5jdGlvbiB3aGVuIHRoZXJlCgl3ZXJlIGVycm9ycy4gIFJlbW92ZSBjaGVjayBmb3IgZXJyb25lb3VzIG9iamVjdHMuCgoyMDA2LTA0LTIwICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2ODU0CgkqIHRyZWUtc3NhLWRzZS5jIChkc2Vfb3B0aW1pemVfc3RtdCk6IEF2b2lkIG51bV9pbW1fdXNlcyB3aGVuCgljaGVja2luZyBmb3IgemVybyBvciBvbmUgdXNlLgoJKiB0cmVlLXNzYS1kb20uYyAocHJvcGFnYXRlX3Joc19pbnRvX2xocyk6IFNpbWlsYXJseS4KCSogdHJlZS1jZmdjbGVhbnVwLmMgKG1lcmdlX3BoaV9ub2Rlcyk6IFNpbWlsYXJseS4KCSogdHJlZS1zc2EtcmVhc3NvYy5jIChuZWdhdGVfdmFsdWUpOiBTaW1pbGFybHkuCgkocmVhc3NvY2lhdGVfYmIpOiBTaW1pbGFybHkuCgoyMDA2LTA0LTIwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGMtcHJldHR5LXByaW50LmMgKHBwX2NfZGlyZWN0X2Fic3RyYWN0X2RlY2xhcmF0b3IpOiBQcmludAoJVFlQRV9NQVhfVkFMVUUgKFRZUEVfRE9NQUlOICh0KSkgKyAxIGZvciBBUlJBWV9UWVBFIHJhdGhlcgoJdGhhbiBwbGFpbiBUWVBFX01BWF9WQUxVRSAoVFlQRV9ET01BSU4gKHQpKS4KCjIwMDYtMDQtMjAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZ2ltcGxpZnlfdmFfYXJnKTogQ29uc3VtZSBhbGwKCWZwIHJlZ3MgaWYgdGhlIGxhc3QgZnAgYXJnIGRvZXNuJ3QgZml0IGluIHJlZ3MuCgoyMDA2LTA0LTIwICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCglQUiB0YXJnZXQvMjcxODIKCSogY29uZmlnL3NoL3NoLm1kIChtb3ZzaWNjX3RydWUrMyk6IFR3ZWFrIGNvbmRpdGlvbiBmb3IgdGhlIGNhc2UKCXRoYXQgdGhlIGxhc3QgaW5zbiBoYXMgdGhlIFJFR19JTkMgbm90ZS4KCjIwMDYtMDQtMTkgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoJICAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYy8yNjc3NAoJKiBzdG9yLWxheW91dC5jICh1cGRhdGVfYWxpZ25tZW50X2Zvcl9maWVsZCk6IERvIG5vdCBhbGlnbgoJRVJST1JfTUFSSyBub2Rlcy4KCShwbGFjZV91bmlvbl9maWVsZCk6IFBsYWNlIHVuaW9uIGZpZWxkIGF0IHRoZSBzdGFydCBvZiB0aGUgdW5pb24uCgkocGxhY2VfZmllbGQpOiBNb3ZlIEVSUk9SX01BUksgY2hlY2sgbGF0ZXIsIGFuZCB1c2UgdGhlIGN1cnJlbnQKCWFsbG9jYXRpb24gcG9zaXRpb24gdG8gbWFpbnRhaW4gbW9ub3RvbmljaXR5LgoKMjAwNi0wNC0xOSAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogZG9taW5hbmNlLmM6IEluY2x1ZGUgdGltZXZhci5oLgoJKGNhbGN1bGF0ZV9kb21pbmFuY2VfaW5mbyk6IFVzZSBUVl9ET01JTkFOQ0UuCgkqIHRpbWV2YXIuZGVmIChUVl9ET01JTkFOQ0UpOiBOZXcgdGltZXZhci4KCSogTWFrZWZpbGUuaW4gKGRvbWluYW5jZS5vKTogQWRkIFRJTUVWQVJfSCBkZXBlbmRlbmN5LgoKMjAwNi0wNC0xOSAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzE0MjYxCgkqIGlmY3Z0LmMgKG5vY2VfZW1pdF9tb3ZlX2luc24pOiBDYWxsIHN0b3JlX2JpdF9maWVsZCBpZiB0aGUgcmVzdWx0aW5nCgltb3ZlIHdvdWxkIGJlIGFuIElOU1YgaW5zbi4KCShub2NlX3Byb2Nlc3NfaWZfYmxvY2spOiBEb24ndCBvcHRpbWl6ZSBpZiB0aGUgZGVzdGluYXRpb24gaXMgYQoJWkVST19FWFRSQUNUIHdoaWNoIGNhbid0IGJlIGhhbmRsZWQgYnkgbm9jZV9lbWl0X21vdmVfaW5zbi4KCjIwMDYtMDQtMTkgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kOiBBZGQgY29tbWVudHMgd2l0aCB0aGUgaW5zdHJ1Y3Rpb25zIGVtaXR0ZWQKCWJ5IGFuIGluc24gcGF0dGVybiBpZiBtYWNyb3MgYXJlIHVzZWQuCgoyMDA2LTA0LTE5ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjYwMjYKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSk6IE9wdGltaXplIGRpdiBhbmQgbW9kIHdoZXJlIHRoZSBkaXZpc29yCglpcyBhIGtub3duIHBvd2VyIG9mIHR3byBzaGlmdGVkIGxlZnQgYSB2YXJpYWJsZSBhbW91bnQuCgoyMDA2LTA0LTE4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGR3YXJmMm91dC5jIChwcnVuZV91bnVzZWRfdHlwZXNfdXBkYXRlX3N0cmluZ3MpOiBEb24ndCBhZGQgc3RyaW5ncwoJdG8gaGFzaCB0YWJsZSB0d2ljZSB3aGVuIHRoZSBkZWJ1Z19zdHIgc2VjdGlvbiBoYXMgU0VDVElPTl9NRVJHRS4KCjIwMDYtMDQtMTggIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3NvZnQtZnA6IE5ldyBkaXJlY3RvcnkuICBGcm9tIGdsaWJjLgoJKiBjb25maWcvc29mdC1mcC90LXNvZnRmcDogTmV3LgoJKiBjb25maWcvc29mdC1mcC9SRUFETUU6IE5ldy4KCSogbWtsaWJnY2MuaW46IEhhbmRsZSBMSUIyRlVOQ1NfRVhDTFVERS4KCSogTWFrZWZpbGUuaW4gKExJQjJGVU5DU19FWENMVURFLCBTRlBfTUFDSElORSk6IE5ldy4KCShsaWJnY2MubWspOiBQYXNzIExJQjJGVU5DU19FWENMVURFLgoJKExJQkdDQ19ERVBTKTogQWRkICQoU0ZQX01BQ0hJTkUpLgoJKiBjb25maWcuZ2NjOiBVc2UgcnM2MDAwL3QtZnBydWxlcy1mcGJpdCBvcgoJcnM2MDAwL3QtZnBydWxlcy1zb2Z0ZnAgYW5kIHNvZnQtZnAvdC1zb2Z0ZnAgdG9nZXRoZXIgd2l0aAoJcnM2MDAwL3QtZnBydWxlcy4KCSogY29uZmlnL3JzNjAwMC9zZnAtbWFjaGluZS5oOiBOZXcuICBCYXNlZCBvbiBnbGliYy4KCSogY29uZmlnL3JzNjAwMC90LWZwcnVsZXMtZnBiaXQsIGNvbmZpZy9yczYwMDAvdC1mcHJ1bGVzLXNvZnRmcDoKCU5ldy4KCSogY29uZmlnL3JzNjAwMC90LWZwcnVsZXM6IFJlbW92ZSBmcC1iaXQgcnVsZXMuCgkqIGNvbmZpZy9yczYwMDAvdC1wcGNjb21tIChMSUIyRlVOQ1NfRVhUUkEpOiBVc2UgKz0uCgkqIGNvbmZpZy9yczYwMDAvdC1saW51eDY0OiBMaWtld2lzZS4gIFJlbW92ZSBkdXBsaWNhdGVzIGZyb20KCUxJQjJGVU5DU19FWFRSQS4gIFJlbW92ZSBmcC1iaXQgcnVsZXMuCgkoc29mdGZwX3dyYXBfc3RhcnQsIHNvZnRmcF93cmFwX2VuZCk6IE5ldy4KCjIwMDYtMDQtMTggIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL20zMmMvbTMyYy5oIChQVFJESUZGX1RZUEUpOiBEZWZpbmUuCgoyMDA2LTA0LTE4ICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpICgtV3VuaW5pdGlhbGl6ZWQpOiBDbGFyaWZ5IC1PIGNvbm5lY3Rpb24uCgoyMDA2LTA0LTE4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL3NoL3Qtc3ltYmlhbjogQWRkIHJ1bGUgdG8gYnVpbGQgc2gtYy5vCgkqIGNvbmZpZy9zaC9zeW1iaWFuLmMgKHNoX3N5bWJpYW5fbWFya19kbGxleHBvcnQpOiBSZXBsYWNlIHVzZQoJb2YgREVDTF9OT05fQUREUl9DT05TVF9QIHdpdGggREVDTF9ETExJTVBPUlRfUC4KCShzaF9zeW1iaWFuX2VuY29kZV9zZWN0aW9uX2luZm8pOiBMaWtld2lzZS4KCjIwMDYtMDQtMTggIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zdHJjbXApOiBDb3ZlciBsYWJlbCBkZWZpbml0aW9uIG9mCglkb19saWJjYWxsIHdpdGggSEFWRV9jbXBzdHJuc2kuCgoyMDA2LTA0LTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKHRlbXBfc2xvdHNfYXRfbGV2ZWwsIG1heF9zbG90X2xldmVsKTogVXNlIFZFQwoJaW5zdGVhZCBvZiBWQVJSQVkuCgkqIGZ1bmN0aW9uLmggKHRlbXBfc2xvdF9wKTogTmV3LgoJKGZ1bmN0aW9uKTogQ2hhbmdlIHRoZSB0eXBlIG9mIHhfdXNlZF90ZW1wX3Nsb3RzIHRvCglWRUModGVtcF9zbG90X3AsZ2MpICouCgoyMDA2LTA0LTE4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29uZmlnL21taXgvbW1peC5oIChPUFRJTUlaQVRJT05fT1BUSU9OUyk6IFJlbW92ZSByZWZlcmVuY2UgdG8KCWZsYWdfc3RyZW5ndGhfcmVkdWNlLgoKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9TRUNUSU9OX1RZUEVfRkxBR1MpOiBGaXggdHlwby4KCjIwMDYtMDQtMTggIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgdGFyZ2V0LzI3MTE3CgoJUGFydGlhbCByZXZlcnQgb2YgcmV2aXNpb24gMTEyNjM3CgkyMDA2LTA0LTAzICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoJCSAgICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJUFIgdGFyZ2V0LzE5NjUzCgkqIHJlZ2NsYXNzLmMgKHN0cnVjdCByZWdfcHJlZik6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKHJlZ2NsYXNzKTogU2V0IHByZWZjbGFzcyB0byBOT19SRUdTIGlmIG1lbW9yeSBpcyB0aGUgYmVzdCBvcHRpb24uCgkocmVjb3JkX3JlZ19jbGFzc2VzKTogQ29wZSB3aXRoIGEgcHJlZmNsYXNzIHNldCB0byBOT19SRUdTLgoKMjAwNi0wNC0xOCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNjgyMQoJKiB0cmVlLXNzYS1tYXRoLW9wdHMuYyAoZ2V0X2NvbnN0YW50X29uZSk6IE5ldy4KCShpbnNlcnRfcmVjaXByb2NhbHMpOiBVc2UgaXQuCgoyMDA2LTA0LTE3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGR3YXJmMm91dC5jIChmcmVlX0FUKTogRGVsZXRlLgoJKHJlbW92ZV9BVCk6IFVwZGF0ZSBzdHJpbmcgcmVmIGNvdW50cy4KCShyZW1vdmVfY2hpbGRfVEFHKTogRG9uJ3QgY2FsbCBmcmVlX2RpZS4KCShmcmVlX2RpZSk6IERlbGV0ZS4KCShicmVha19vdXRfaW5jbHVkZXMpOiBEb24ndCBjYWxsIGZyZWVfZGllIG9uIERXX1RBR19HTlVfQklOQ0wKCW9yIERXX1RBR19HTlVfRUlOQ0wuCgkocHJ1bmVfdW51c2VkX3R5cGVzX3dhbGtfYXR0cmlicyk6IFJlc2V0IHN0cmluZyByZWZjb3VudHMuCgkocHJ1bmVfdW51c2VkX3R5cGVzX3VwZGF0ZV9zdHJpbmdzKTogTmV3LgoJKHBydW5lX3VudXNlZF90eXBlc19wcnVuZSk6IERvbid0IG1ha2UgdW5uZWNlc3Nhcnkgc3RvcmVzLiAgRG9uJ3QKCWNhbGwgZnJlZV9kaWUuICBEbyBjYWxsIHBydW5lX3VudXNlZF90eXBlc191cGRhdGVfc3RyaW5ncy4KCShwcnVuZV91bnVzZWRfdHlwZXMpOiBFbXB0eSBkZWJ1Z19zdHJfaGFzaC4KCjIwMDYtMDQtMTcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZXhwci5jIChleHBhbmRfYXNzaWdubWVudCk6IE9wdGltaXplIGF3YXkgbm8tb3AgbW92ZXMgd2hlcmUgdGhlCglzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSBlcXVhbCBhbmQgaGF2ZSBubyBzaWRlLWVmZmVjdHMuCgoyMDA2LTA0LTE3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdGFyZ2V0LzI2ODI2CgkqIHJlbG9hZC5jIChwdXNoX3JlbG9hZCk6IEd1YXJkIGNhbGxzIHRvIGdldF9zZWNvbmRhcnlfbWVtCglmb3IgbWVtb3J5IHN1YnJlZ3MuCgoyMDA2LTA0LTE2ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGFsaWFzLmMgKHJlZ19iYXNlX3ZhbHVlLCBvbGRfcmVnX2Jhc2VfdmFsdWUpOiBDaGFuZ2UgdGhlCgl0eXBlIHRvIFZFQyhydHgsZ2MpICouCgkoUkVHX0JBU0VfVkFMVUUsIGZpbmRfYmFzZV92YWx1ZSwgcmVjb3JkX3NldCwKCWluaXRfYWxpYXNfYW5hbHlzaXMpOiBVc2UgVkVDIGluc3RlYWQgb2YgVkFSUkFZLgoKCSogYWxpYXMuYyAoYWxpYXNfc2V0cyk6IENoYW5nZSB0aGUgdHlwZSB0bwoJVkVDKGFsaWFzX3NldF9lbnRyeSxnYykgKi4KCShnZXRfYWxpYXNfc2V0X2VudHJ5LCBuZXdfYWxpYXNfc2V0LCByZWNvcmRfYWxpYXNfc3Vic2V0KTogVXNlCglWRUMgaW5zdGVhZCBvZiBWQVJSQVkuCgkobGFzdF9hbGlhc19zZXQpOiBSZW1vdmUuCgoJKiBjZ3JhcGguaCAoY2dyYXBoX2VkZ2VfcCk6IE5ldy4KCVVwZGF0ZSB0aGUgcHJvdG90eXBlIG9mIGNncmFwaF9mdW5jdGlvbl92ZXJzaW9uaW5nLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9jb3B5X25vZGVfZm9yX3ZlcnNpb25pbmcsCgljZ3JhcGhfZnVuY3Rpb25fdmVyc2lvbmluZyk6IFVzZSBWRUMgaW5zdGVhZCBvZiBWQVJSQVkuCgkqIGlwYS1jcC5jIChpcGNwX2luc2VydF9zdGFnZSk6IExpa2V3aXNlLgoKMjAwNi0wNC0xNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgdGFyZ2V0LzI2OTYxCgkqIGZvbGQtY29uc3QuYyAoZm9sZF90ZXJuYXJ5KTogV2hlbiBjb252ZXJ0aW5nICJBID8gQiA6IEMiIGludG8gZWl0aGVyCgkiQSBvcCBCIiBvciAiQSBvcCBDIiwgd2UgbWF5IG5lZWQgdG8gY29udmVydCBBIHRvIHRoZSB0eXBlIG9mIEIgYW5kIEMuCgoyMDA2LTA0LTE2ICBBZGFtIE5lbWV0ICA8YW5lbWV0QGNhdml1bW5ldHdvcmtzLmNvbT4KCgkqIHRhcmdldC5oIChzdHJ1Y3QgZ2NjX3RhcmdldCk6IEFkZCBtb2RlX3JlcF9leHRlbmRlZC4KCSogcnRsYW5hbC5jIChudW1fc2lnbl9iaXRfY29waWVzX2luX3JlcCk6IE5ldyBnbG9iYWwuCgkoaW5pdF9udW1fc2lnbl9iaXRfY29waWVzX2luX3JlcCk6IEluaXRpYWxpemUgaXQgdXNpbmcKCW1vZGVfcmVwX2V4dGVuZGVkLgoJKHRydW5jYXRlX3RvX21vZGUpOiBVc2UgaXQuCgkoaW5pdF9ydGxhbmFsKTogQ2FsbCBpbml0X251bV9zaWduX2JpdF9jb3BpZXNfaW5fcmVwLgoJKiB0YXJnaG9va3MuaCAoZGVmYXVsdF9tb2RlX3JlcF9leHRlbmRlZCk6IERlY2xhcmUgaXQuCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X21vZGVfcmVwX2V4dGVuZGVkKTogRGVmaW5lIGl0LgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9NT0RFX1JFUF9FWFRFTkRFRCk6IE5ldyBtYWNyby4gIERlZmF1bHQgdG8KCWRlZmF1bHRfbW9kZV9yZXBfZXh0ZW5kZWQuCgkoVEFSR0VUX0lOSVRJQUxJWkVSKTogSW5jbHVkZSBpdC4KCSogZG9jL3RtLnRleGkgKE1pc2MpOiBEb2N1bWVudCBpdC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChUQVJHRVRfVFJVTkNBVEVEX1RPX01PREUpOiBPdmVycmlkZSBpdC4KCShtaXBzX3RydW5jYXRlZF90b19tb2RlKTogTmV3IGZ1bmN0aW9uLgoKMjAwNi0wNC0xNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNTQ3NAoJKiBleHByLmMgKGNvbXByZXNzX2Zsb2F0X2NvbnN0YW50KTogQ29weSB0aGUgbmFycm93IGNvbnN0YW50IGludG8KCWEgbmV3IHBzZXVkbyBiZWZvcmUgZXh0ZW5kaW5nIGl0IHRvIGl0cyBmaW5hbCB3aWR0aC4KCjIwMDYtMDQtMTYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdjYy5nbnUub3JnPgoJICAgIERhbGUgSm9oYW5uZXNlbiAgPGRhbGVqQGFwcGxlLmNvbT4KCglQUiB0YXJnZXQvMjQwNzYKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF92ZWN0b3JfaW5pdF9kdXBsaWNhdGUpOiBBZGQKCXNwZWNpYWwgY2FzZSBjb2RlIHRvIGltcGxlbWVudCBWOEhJbW9kZSBhbmQgVjE2UUltb2RlIHdpdGggU1NFMi4KCjIwMDYtMDQtMTUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3ZhX3N0YXJ0KTogRW5zdXJlIGFsbCBpbnRlZ2VyIGNvbnN0YW50Cgl0cmVlcyBhcmUgY29uc3RydWN0ZWQgd2l0aCBhIHN1aXRhYmxlIHRyZWUgdHlwZS4KCjIwMDYtMDQtMTUgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdHJlZS5jIChpbnRlZ2VyX3plcm9wKTogSWdub3JlIFRSRUVfQ09OU1RBTlRfT1ZFUkZMT1cuCgkoaW50ZWdlcl9vbmVwKTogTGlrZXdpc2UuCgkoaW50ZWdlcl9hbGxfb25lc3ApOiBMaWtld2lzZS4KCShpbnRlZ2VyX3BvdzJwKTogTGlrZXdpc2UuCgkoaW50ZWdlcl9ub256ZXJvcCk6IExpa2V3aXNlLgoJKHJlYWxfemVyb3ApOiBMaWtld2lzZS4KCShyZWFsX29uZXApOiBMaWtld2lzZS4KCShyZWFsX3R3b3ApOiBMaWtld2lzZS4KCShyZWFsX21pbnVzX29uZXApOiBMaWtld2lzZS4KCShpbnRfc2l6ZV9pbl9ieXRlcyk6IExpa2V3aXNlLgoJKGhvc3RfaW50ZWdlcnApOiBMaWtld2lzZS4KCjIwMDYtMDQtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY2ZnY2xlYW51cC5jLCBjb25maWcvZGZwLWJpdC5jLCBleHByLmMsIGZvbGQtY29uc3QuYywKCWp1bXAuYywgbWlwcy10ZmlsZS5jLCBvbXAtbG93LmMsIHNjaGVkLWludC5oLAoJdHJlZS1zc2EtbG9vcC1wcmVmZXRjaC5jLCB0cmVlLXZycC5jOiBGaXggY29tbWVudCB0eXBvcy4KCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmggKGFsaWFzX2luZm8pOiBSZW1vdmUgbnVtX3JlZmVyZW5jZXMuCgoyMDA2LTA0LTE1ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcGEubWQgKG91dHB1dF9iYiBwYXR0ZXJucyk6IFNob3J0ZW4gbG9uZyBicmFuY2ggYWx0ZXJuYXRpdmVzIGJ5IDQuCgkob3V0cHV0X2J2YiBwYXR0ZXJucyk6IExpa2V3aXNlLgoJKiBwYS5jIChvdXRwdXRfYmIpOiBVc2UgJ2JiJyBpbnNuIGZvciBsb25nIGJyYW5jaCBjYXNlLgoJKG91dHB1dF9idmIpOiBMaWtld2lzZSB1c2UgJ3tidmJ8YmJ9JyBmb3IgbG9uZyBicmFuY2ggY2FzZS4KCShvdXRwdXRfZGJyYSk6IFVzZSAne2NvbWJ8Y21wYn0nIGZvciBsb25nIGJyYW5jaCBjYXNlIGZvciBhbHRlcm5hdGl2ZQoJMS4gIENvcnJlY3QgbGVuZ3RoIG9wZXJhbmQgZm9yIGFsdGVybmF0aXZlcyAxIGFuZCAyLgoJKG91dHB1dF9tb3ZiKTogVXNlICd7Y29tYnxjbXBifScgZm9yIGxvbmcgYnJhbmNoIGNhc2UgZm9yIGFsdGVybmF0aXZlcwoJMSwgMiBhbmQgMy4gIENvcnJlY3QgbGVuZ3RoIG9wZXJhbmQgZm9yIGFsdGVybmF0aXZlcyAxLCAyIGFuZCAzLgoKMjAwNi0wNC0xNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0cmVlLWNmZy5jIChtYWtlX2VkZ2VzLCBtYWtlX29tcF9zZWN0aW9uc19lZGdlcywgbW92ZV9zdG10X3IsCglpc19jdHJsX2FsdGVyaW5nX3N0bXQpOiBSZWluc3RhdGUgUlRIJ3MgY2hhbmdlcyBmcm9tIHIxMTI5MzUgdGhhdAoJd2VyZSBhY2NpZGVudGFsbHkgcmV2ZXJ0ZWQgYnkgcjExMjk1OS4KCjIwMDYtMDQtMTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjY4MjMKCSogZXhjZXB0LmggKGVoX3JlZ2lvbl9vdXRlcm1vc3QpOiBOZXcgcHJvdG90eXBlLgoJKiBleGNlcHQuYyAoZWhfcmVnaW9uX291dGVybW9zdCk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS1jZmcuYyAoZmluZF9vdXRlcm1vc3RfcmVnaW9uX2luX2Jsb2NrKTogVXNlIGl0LgoKMjAwNi0wNC0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsb2NhbC1hbGxvYy5jIChyZXN0X29mX2hhbmRsZV9sb2NhbF9hbGxvYyk6IFVzZSBWRUMgaW5zdGVhZAoJb2YgVkFSUkFZLgoJKiByZWxvYWQxLmMgKHJlZ19lcXVpdl9tZW1vcnlfbG9jX3ZhcnJheSk6IFJlbmFtZSB0bwoJcmVnX2VxdWl2X21lbW9yeV9sb2NfdmVjLiAgQ2hhbmdlIHRoZSB0eXBlIHRvIFZFQyhydHgsZ2MpICouCgkoaW5pdF9yZWxvYWQsIHJlbG9hZCk6IFVzZSBWRUMgaW5zdGVhZCBvZiBWQVJSQVkuCgkqIHJlbG9hZC5oOiBVcGRhdGUgdGhlIHByb3RvdHlwZSBmb3IKCXJlZ19lcXVpdl9tZW1vcnlfbG9jX3ZhcnJheS4KCjIwMDYtMDQtMTQgIEFsZXhleSBTdGFyb3ZveXRvdiAgPGFsZXhleS5zdGFyb3ZveXRvdkBzdW4uY29tPgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZW1pdF9hbmRfcHJlc2VydmUpOiBBbGxvY2F0ZSBzcGFjZSBmb3IgdGhlCglyZWdpc3RlciBzYXZlIGFyZWEuCgoyMDA1LTA0LTEzICBVcm9zIEJpemphayAgPHVyb3NAa3NzLWxva2Euc2k+CgoJUFIgbWlkZGxlLWVuZC8yNzEzNAoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9pbnRfcm91bmRpbmdmbik6IFVzZSBleHBhbmRfbm9ybWFsKCkKCXRvIGV4cGFuZCBmYWxsYmFjayBidWlsdGluIGZ1bmN0aW9uIGNhbGwuCgoyMDA2LTA0LTE0ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIG1pZGRsZS1lbmQvMjcwOTUKCSogYnVpbHRpbnMuYzogKGV4cGFuZF9idWlsdGluX21lbXNldCk6IFN0YWJpbGl6ZSBhcmdzIGJlZm9yZSBleHBhbnNpb24KCWFuZCBlbWl0IGxpYmNhbGwgaGVyZSBpbiBjYXNlIHRoZSBidWlsdGluIGZhaWxzLgoJKGV4cGFuZF9idWlsdGluX3N0cmNtcCk6IEFsd2F5cyBlbWl0IHRoZSBsaWJjYWxsIGhlcmUgb24gZmFpbHVyZS4KCjIwMDYtMDQtMTQgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogYmFzaWMtYmxvY2suaCAoUkVHX0JBU0lDX0JMT0NLKTogVXNlIFZFQyBpbnN0ZWFkIG9mIFZBUlJBWS4KCSogZmxvdy5jIChyZWdfbl9pbmZvKTogQ2hhbmdlIHRoZSB0eXBlIHRvCglWRUMocmVnX2luZm9fcCxoZWFwKSAqLgoJKiByZWdjbGFzcy5jIChhbGxvY2F0ZV9yZWdfaW5mbywgZnJlZV9yZWdfaW5mbyk6IFVzZSBWRUMKCWluc3RlYWQgb2YgVkFSUkFZLgoJKiByZWdzLmggKHJlZ19pbmZvX3ApOiBOZXcuCgkoUkVHX05fUkVGUywgUkVHX0ZSRVEsIFJFR19OX1NFVFMsIFJFR19OX0RFQVRIUywKCVJFR19OX0NBTExTX0NST1NTRUQsIFJFR19OX1RIUk9XSU5HX0NBTExTX0NST1NTRUQsCglSRUdfTElWRV9MRU5HVEgsIFJFR05PX0ZJUlNUX1VJRCwgUkVHTk9fTEFTVF9VSUQpOiBVc2UgVkVDCglpbnN0ZWFkIG9mIFZBUlJBWS4KCjIwMDYtMDQtMTMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBwYXJhbXMuZGVmIChQQVJBTV9NQVhfU0NIRURfUkVBRFlfSU5TTlMpOiBOZXcgcGFyYW1ldGVyLAoJZGVmYXVsdGluZyB0byAxMDAuCgkqIHBhcmFtcy5oIChNQVhfU0NIRURfUkVBRFlfSU5TTlMpOiBOZXcgbWFjcm8uCgkqIGhhaWZhLXNjaGVkLmM6IChxdWV1ZV90b19yZWFkeSk6IFJlLXF1ZXVlIGluc25zIGZvciB0aGUgbmV4dCBjeWNsZQoJcGFzdCBNQVhfU0NIRURfUkVBRFlfSU5TTlMgZHVyaW5nIHRoZSBmaXJzdCBzY2hlZHVsaW5nIHBhc3MuCgkoc2NoZWR1bGVfYmxvY2spOiBEZWxheSBpbnNucyBwYXN0IE1BWF9TQ0hFRF9SRUFEWV9JTlNOUyBpbgoJdGhlIHJlYWR5IGxpc3QgZm9yIDEgY3ljbGUgZHVyaW5nIHRoZSBmaXJzdCBzY2hlZHVsaW5nIHBhc3MuCgkqIGRvYy9pbnZva2UudGV4aSAoLS1wYXJhbSk6IE5ldyBwYXJhbWV0ZXIgbWF4LXNjaGVkLXJlYWR5LWluc25zLgoKMjAwNi0wNC0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBsaWJnb21wLzI2NjUxCgkqIGdpbXBsZS1sb3cuYyAobG93ZXJfb21wX2RpcmVjdGl2ZSk6IFJlbW92ZSBkZWFkIGNvZGUuCgkobG93ZXJfc3RtdCk6IERvIG5vdGhpbmcgZXhjZXB0IGZvciBvcGVubXAsIGV4Y2VwdCBmb3IgT01QX1BBUkFMTEVMLgoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9leHByKTogVXBkYXRlIGZvciBPTVBfUkVUVVJOLCBPTVBfQ09OVElOVUUuCgkqIG9tcC1sb3cuYyAoc3RydWN0IG9tcF9yZWdpb24pOiBNb3ZlIHRvIHRyZWUtZmxvdy5oLgoJKHJvb3Rfb21wX3JlZ2lvbik6IEV4cG9ydC4KCShvbXBfcmVnaW9ucywgbG9va3VwX29tcF9yZWdpb24pOiBSZW1vdmUuCgkoZGV0ZXJtaW5lX3BhcmFsbGVsX3R5cGUpOiBVcGRhdGUgZm9yIHN0cnVjdCBvbXBfcmVnaW9uIGNoYW5nZXMuCgkoZHVtcF9vbXBfcmVnaW9uKTogRHVtcCByZWdpb25zIHdpdGggYmxvY2sgbnVtYmVycy4KCShuZXdfb21wX3JlZ2lvbik6IFRha2UgdHlwZSBhbmQgYmxvY2sgaW5zdGVhZCBvZiBzdG10OyBtYWxsb2MKCWluc3RlYWQgb2YgZ2djLgoJKGZyZWVfb21wX3JlZ2lvbl8xLCBmcmVlX29tcF9yZWdpb25zKTogTmV3LgoJKGV4cGFuZF9wYXJhbGxlbF9jYWxsKTogVGFrZSBlbnRyeV9zdG10IGFzIGFyZ3VtZW50OyB1cGRhdGUgZm9yCgljaGFuZ2VzIHRvIG9tcF9yZWdpb24uCgkocmVtb3ZlX2V4aXRfYmFycmllcik6IFJld3JpdGUgdG8gdXBkYXRlIE9NUF9SRVRVUk5fTk9XQUlULgoJKHJlbW92ZV9leGl0X2JhcnJpZXJzKTogTmV3LgoJKGV4cGFuZF9vbXBfcGFyYWxsZWwpOiBVcGRhdGUgZm9yIHN0cnVjdCBvbXBfcmVnaW9uIGNoYW5nZXMuCgkoZXhwYW5kX29tcF9zeW5jaCk6IExpa2V3aXNlLgoJKGV4cGFuZF9vbXApOiBMaWtld2lzZS4KCShleHBhbmRfb21wX2Zvcl9zdGF0aWNfbm9jaHVuayk6IExpa2V3aXNlOyB1cGRhdGUgZm9yIE9NUF9DT05USU5VRS4KCShleHBhbmRfb21wX2Zvcl9zdGF0aWNfY2h1bmspOiBMaWtld2lzZS4KCShleHBhbmRfb21wX2Zvcik6IExpa2V3aXNlLgoJKGV4cGFuZF9vbXBfZm9yX2dlbmVyaWMpOiBMaWtld2lzZTsgZW1pdCB0aGUgcHJvcGVyIEdPTVBfbG9vcF9lbmQgY2FsbC4KCShleHBhbmRfb21wX3NlY3Rpb25zKTogU2ltaWxhcmx5LCB3aXRoIEdPTVBfc2VjdGlvbnNfZW5kLgoJKGV4cGFuZF9vbXBfc2luZ2xlKTogTmV3LgoJKGJ1aWxkX29tcF9yZWdpb25zXzEpOiBVcGRhdGUgZm9yIE9NUF9DT05USU5VRS4KCShleGVjdXRlX2V4cGFuZF9vbXApOiBDYWxsIHJlbW92ZV9leGl0X2JhcnJpZXJzLCBmcmVlX29tcF9yZWdpb25zLgoJKGxvd2VyX29tcF9zZWN0aW9ucyk6IEV4cGFuZCB3aXRoIE9NUF9DT05USU5VRSwgZG8gbm90IGNvbGxlY3QKCU9NUF9TRUNUSU9OU19TRUNUSU9OUy4KCShsb3dlcl9vbXBfc2luZ2xlX3NpbXBsZSk6IERvbid0IGVtaXQgYmFycmllciBoZXJlLgoJKGxvd2VyX29tcF9zaW5nbGVfY29weSk6IExpa2V3aXNlLgoJKGxvd2VyX29tcF9zaW5nbGUpOiBGaXggYmluZGluZ3MsIGFuZCBsb3dlciB0byBzdHJhaWdodGxpbmUgbm93LgoJKGxvd2VyX29tcF9tYXN0ZXIsIGxvd2VyX29tcF9vcmRlcmVkKTogTGlrZXdpc2UuCgkobG93ZXJfb21wX2NyaXRpY2FsKTogTGlrZXdpc2UuCgkobG93ZXJfb21wX2Zvcik6IExpa2V3aXNlLiAgRW1pdCBPTVBfQ09OVElOVUUuCgkqIHRyZWUtY2ZnLmMgKG1ha2VfZWRnZXMpOiBDb2xsZWN0IGFuIG9tcF9yZWdpb24gdHJlZSwgdXNlIGl0IGZvcgoJb21wIGVkZ2VzLCBmcmVlIGl0IGFmdGVyd2FyZC4KCShtYWtlX29tcF9zZWN0aW9uc19lZGdlcyk6IFJlbW92ZS4KCShpc19jdHJsX2FsdGVyaW5nX3N0bXQpOiBEb24ndCBib3RoZXIgY2hlY2tpbmcgZmxhZ19vcGVubXAuCgkobW92ZV9zdG10X3IpOiBIYW5kbGUgT01QX0NPTlRJTlVFLgoJKiB0cmVlLWZsb3cuaCAoc3RydWN0IG9tcF9yZWdpb24pOiBNb3ZlIGZyb20gb21wLWxvdy5jLiAgU3dpdGNoCglzdGF0ZW1lbnQgcG9pbnRlcnMgdG8gYmFzaWMgYmxvY2tzLiAgQWRkIHR5cGUgbWVtYmVyLgoJKHJvb3Rfb21wX3JlZ2lvbiwgbmV3X29tcF9yZWdpb24sIGZyZWVfb21wX3JlZ2lvbnMpOiBEZWNsYXJlLgoJKiB0cmVlLWdpbXBsZS5jIChpc19naW1wbGVfc3RtdCk6IEhhbmRsZSBPTVBfUkVUVVJOLCBPTVBfQ09OVElOVUUuCgkqIHRyZWUtaW5saW5lLmMgKGVzdGltYXRlX251bV9pbnNuc18xKTogTGlrZXdpc2UuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGdldF9leHByX29wZXJhbmRzKTogTGlrZXdpc2UuCgkqIHRyZWUuZGVmIChPTVBfU0VDVElPTlMpOiBSZW1vdmUgT01QX1NFQ1RJT05TX1NFQ1RJT05TIG9wZXJhbmQuCgkoT01QX1JFVFVSTik6IFJlbmFtZSBmcm9tIE9NUF9SRVRVUk5fRVhQUi4KCShPTVBfQ09OVElOVUUpOiBOZXcuCgkqIHRyZWUuaCAoT01QX0RJUkVDVElWRV9QKTogQWRkIE9NUF9DT05USU5VRS4KCShPTVBfU0VDVElPTlNfU0VDVElPTlMpOiBSZW1vdmUuCgkoT01QX1NFQ1RJT05fTEFTVCk6IE5ldy4KCShPTVBfUkVUVVJOX05PV0FJVCk6IE5ldy4KCjIwMDYtMDQtMTMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChuYXRpdmVfZW5jb2RlX3ZlY3RvciwgbmF0aXZlX2ludGVycHJldF9yZWFsKToKCUNvcnJlY3Qgb2J2aW91cyBtaXN0YWtlcyBpbiB0aGUgcHJldmlvdXMgY2hlY2staW4uCgoyMDA2LTA0LTEzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAobmF0aXZlX2VuY29kZV9leHByKTogTmV3IGZ1bmN0aW9uIHRvIGVuY29kZQoJdGhlIHRhcmdldCByZXByZXNlbnRhdGlvbiBvZiBhbiBJTlRFR0VSX0NTVCwgUkVBTF9DU1QsIENPTVBMRVhfQ1NUCglvciBWRUNUT1JfQ1NUIGludG8gYSBzcGVjaWZpZWQgYnVmZmVyLgoJKG5hdGl2ZV9lbmNvZGVfaW50KTogTmV3IGZ1bmN0aW9uLgoJKG5hdGl2ZV9lbmNvZGVfcmVhbCk6IE5ldyBmdW5jdGlvbi4KCShuYXRpdmVfZW5jb2RlX2NvbXBsZXgpOiBOZXcgZnVuY3Rpb24uCgkobmF0aXZlX2VuY29kZV92ZWN0b3IpOiBOZXcgZnVuY3Rpb24uCgkobmF0aXZlX2ludGVycHJldF9leHByKTogSW52ZXJzZSBvZiBuYXRpdmVfZW5jb2RlX2V4cHIgdG8gY29udmVydAoJYSB0YXJnZXQgcmVwcmVzZW50YXRpb24gaW50byBhbiBJTlRFR0VSX0NTVCwgUkVBTF9DU1QgZXRjLi4uCgkobmF0aXZlX2ludGVycHJldF9pbnQpOiBOZXcgZnVuY3Rpb24uCgkobmF0aXZlX2ludGVycHJldF9yZWFsKTogTmV3IGZ1bmN0aW9uLgoJKG5hdGl2ZV9pbnRlcnByZXRfY29tcGxleCk6IE5ldyBmdW5jdGlvbi4KCShuYXRpdmVfaW50ZXJwcmV0X3ZlY3Rvcik6IE5ldyBmdW5jdGlvbi4KCShmb2xkX3ZpZXdfY29udmVydF9leHByKTogTmV3IGZ1bmN0aW9uIHRvIGNvbnN0YW50IGZvbGQvZXZhbHVhdGUKCWEgVklFV19DT05WRVJUX0VYUFIgb2YgYSBzdWl0YWJsZSBjb25zdGFudCBleHByZXNzaW9uLgoJKGZvbGRfdW5hcnkpIDxWSUVXX0NPTlZFUlRfRVhQUj46IENhbGwgZm9sZF92aWV3X2NvbnZlcnRfZXhwci4KCUNoYW5nZSBjYWxsIG9mIGJ1aWxkMSB0byBmb2xkX2J1aWxkMSB3aGVuIGNvbnN0cnVjdGluZyBhCglWSUVXX0NPTlZFUlRfRVhQUi4KCjIwMDYtMDQtMTMgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgkgICAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCVBSIHRhcmdldC8yNzAwNgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChFQVNZX1ZFQ1RPUl8xNV9BRERfU0VMRik6IFJlcXVpcmUgbgoJdG8gYmUgZXZlbi4KCjIwMDYtMDQtMTMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgdGFyZ2V0LzI2NDU5CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9sZWdpdGltaXplX3JlbG9hZF9hZGRyZXNzKTogRG9uJ3QKCW9wdGltaXplIHRvIGxvX3N1bSBmb3IgREZtb2RlIGlmICFUQVJHRVRfRlBSUy4KCjIwMDYtMDQtMTIgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS1zc2EtYWxpYXMuYyAoc2V0X2luaXRpYWxfcHJvcGVydGllcywgaW5pdF9hbGlhc19pbmZvLAoJZGVsZXRlX2FsaWFzX2luZm8sIGNvbXB1dGVfZmxvd19zZW5zaXRpdmVfYWxpYXNpbmcsCglncm91cF9hbGlhc2VzKTogVXNlIFZFQyBpbnN0ZWFkIG9mIFZBUlJBWS4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAodXBkYXRlX2FsaWFzX2luZm8pOiBMaWtld2lzZS4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuaCAoYWxpYXNfaW5mbyk6IENoYW5nZSB0aGUgdHlwZSBvZgoJcHJvY2Vzc2VkX3B0cnMgdG8gVkVDKHRyZWUsaGVhcCkgKi4KCjIwMDYtMDQtMTIgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdC5jb20+CgoJUFIgdGFyZ2V0LzI3MDYwCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuaDogTmV3IGZpbGUsIGJyb2tlbiBvdXQgb2Y6CgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtLgoJKiBjb25maWcvc2gvbGliMWZ1bmNzLmggKERSMDAsIERSMDEsIERSMjAsIERSMjEsIERSNDAsIERSNDEpOgoJTmV3IG1hY3Jvcy4KCSogY29uZmlnL3NoL2xpYjFmdW5jcy5hc20gKHVkaXZzaTNfaTQpOiBVc2UgdGhlbS4KCSogY29uZmlnL3NoL2xpYjFmdW5jcy1Pcy00LTIwMC5hc206IE5ldyBmaWxlLgoJKiBjb25maWcvc2gvZW1iZWQtZWxmLmggKExJQkdDQ19TUEVDKTogVXNlIC1sZ2NjLU9zLTQtMjAwLgoJKiBjb25maWcvc2gvdC1zaCAoT1BUX0VYVFJBX1BBUlRTKTogTmV3IHZhcmlhYmxlLgoJKEVYVFJBX01VTFRJTElCX1BBUlRTKTogSW5jbHVkZSBpdC4KCSgkKFQpc2RpdnNpM19pNGktT3MtNC0yMDAubyk6IE5ldyBydWxlLgoJKCQoVCl1ZGl2c2kzX2k0aS1Pcy00LTIwMC5vLCAkKFQpbGliZ2NjLU9zLTQtMjAwLmEpOiBMaWtld2lzZS4KCSogY29uZmlnL3NoL3Qtc3VwZXJoIChFWFRSQV9NVUxUSUxJQl9QQVJUUyk6IEluY2x1ZGUgT1BUX0VYVFJBX1BBUlRTLgoJKiBjb25maWcvc2gvc2guaCAoT1ZFUlJJREVfT1BUSU9OUyk6IFJlY29nbml6ZSAtbWRpdj1jYWxsLXRhYmxlIGZvcgoJVEFSR0VUX1NIMi4KCjIwMDYtMDQtMTIgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKFRSRUVfU1NBX0xJVkVfSCk6IEFkZCB2ZWNwcmltLmguCgkqIHRyZWUtc3NhLWxpdmUuYyAodHBhX2luaXQsIHRwYV9yZW1vdmVfcGFydGl0aW9uLCB0cGFfZGVsZXRlLAoJdHBhX2NvbXBhY3QsIHJvb3RfdmFyX2luaXQsIHR5cGVfdmFyX2luaXQpOiBVc2UgVkVDIGluc3RlYWQgb2YKCVZBUlJBWS4KCSogdHJlZS1zc2EtbGl2ZS5oOiBJbmNsdWRlIHZlY3ByaW0uaC4KCSh0cmVlX3BhcnRpdGlvbl9hc3NvY2lhdG9yX2QpOiBDaGFuZ2UgdGhlIHR5cGUgb2YKCWZpcnN0X3BhcnRpdGlvbiB0byBWRUMoaW50LGhlYXApICouCgkodHBhX2ZpcnN0X3BhcnRpdGlvbik6IFVzZSBWRUMgaW5zdGVhZCBvZiBWQVJSQVkuCgoJKiBNYWtlZmlsZS5pbiAoR1RGSUxFUyk6IE1vdmUgZnVuY3Rpb25zLmggYWZ0ZXIgdHJlZS5oLgoJKiBmdW5jdGlvbi5jIChyZXNldF9ibG9ja19jaGFuZ2VzLCByZWNvcmRfYmxvY2tfY2hhbmdlLAoJY2hlY2tfYmxvY2tfY2hhbmdlLCBmcmVlX2Jsb2NrX2NoYW5nZXMpOiBVc2UgVkVDIGluc3RlYWQgb2YKCVZBUlJBWS4KCSogZnVuY3Rpb24uaCAoZnVuY3Rpb24pOiBDaGFuZ2UgdGhlIHR5cGUgb2YKCWliX2JvdW5kYXJpZXNfYmxvY2sgdG8gVkVDKHRyZWUsZ2MpICouCgkqIHRyZWUtaW5saW5lLmMgKGNvcHlfY2ZnX2JvZHkpOiBJbml0aWFsaXplCglpYl9ib3VuZGFyaWVzX2Jsb2NrIHRvIE5VTEwgaW5zdGVhZCBvZiAodmFycmF5X3R5cGUpIDAuCgoyMDA2LTA0LTEyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cHIuYyAoZW1pdF9ncm91cF9zdG9yZSk6IENvcnJlY3Qgb3BlcmFuZCBvcmRlciBpbiBjYWxsIHRvCglzdWJyZWdfbG93cGFydF9vZmZzZXQuICBBbHdheXMgY3JlYXRlIHBhcmFkb3hpY2FsIFNVQlJFR3Mgd2l0aAoJYSBTVUJSRUdfQllURSBvZiB6ZXJvLgoKMjAwNi0wNC0xMiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogcHJvZmlsZS5jIChjb21wdXRlX2JyYW5jaF9wcm9iYWJpbGl0aWVzKTogUmVtb3ZlIGNvZGUKCWVuY2Fwc3VsYXRlZCBpbiAhaXJfdHlwZSAoKSwgd2hpY2ggYXJlIHJlbWFuZW50cyBvZiB0aGUKCXJlbW92ZWQgUlRMIHByb2ZpbGluZyBjb2RlLgoJKiBydGwtcHJvZmlsZS5jOiBSZW1vdmUuCgoyMDA2LTA0LTEyICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX21peGVkX2Z1bmN0aW9uX2FyZyk6IFVwZGF0ZQoJbWFnaWMgTlVMTF9SVFggY29tbWVudC4KCShmdW5jdGlvbl9hcmcpOiBTdG9yZSBlbnRpcmUgZnAgYXJnIHRvIG1lbSBpZiBhbnkgcGFydCBzaG91bGQgZ28KCW9uIHN0YWNrLgoJKHJzNjAwMF9hcmdfcGFydGlhbF9ieXRlcyk6IEFkanVzdCBmb3IgYWJvdmUgY2hhbmdlLgoKMjAwNi0wNC0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkd2FyZjJvdXQuYyAob3V0cHV0X2NhbGxfZnJhbWVfaW5mbyk6IENyZWF0ZSBkZWJ1Z19mcmFtZV9zZWN0aW9uCglpZiBpdCBoYXNuJ3QgYmVlbiBpbml0aWFsaXplZCBieSBkd2FyZjJvdXRfaW5pdC4KCjIwMDYtMDQtMTEgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2YS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS5tZCAoTUFYXzEyQklUX09GRlNFVCwgTUFYXzE3QklUX09GRlNFVCk6IERlZmluZSBhbmQgdXNlIG5ldwoJc3ltYm9saWMgY29uc3RhbnRzIGluIGJyYW5jaCBwYXR0ZXJucy4KCjIwMDYtMDQtMTEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY2FsbGVyLXNhdmUuYzogI2luY2x1ZGUgImFkZHJlc3Nlcy5oIiBhZnRlciAjaW5jbHVkZSAidG1fcC5oIi4KCjIwMDYtMDQtMTEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjcwNzMKCSogZ2NzZS5jICh0cnlfcmVwbGFjZV9yZWcpOiBSZXZlcnQgbGFzdCBjaGFuZ2UuICBDb250aW51ZSB0byBzZWFyY2gKCWZvciBib3RoIFJFR19FUVVBTCBhbmQgUkVHX0VRVUlWIG5vdGVzLCBidXQgb25seSBwZXJmb3JtIHJlcGxhY2VtZW50cwoJb24gdGhlIGZvcm1lci4KCjIwMDYtMDQtMTEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoZnVuY3Rpb25fYXJnX3Nsb3RubykgPEJMS21vZGU+OiBIYW5kbGUKCWFnZ3JlZ2F0ZSB0eXBlcyBvdGhlciB0aGFuIHJlY29yZCBhbmQgdW5pb24gdHlwZXMuCgkoZnVuY3Rpb25fYXJnKTogTGlrZXdpc2UuCgkoZnVuY3Rpb25fYXJnX3Bhc3NfYnlfcmVmZXJlbmNlKTogSW4gNjQtYml0IG1vZGUsIHJldHVybiAwIGZvcgoJc21hbGwgYXJyYXlzLgoJKGZ1bmN0aW9uX3ZhbHVlKTogSW4gNjQtYml0IG1vZGUsIHJldHVybiBvYmplY3RzIHRoYXQgcmVxdWlyZSBpdAoJaW4gRlAgcmVnaXN0ZXJzLgoKMjAwNi0wNC0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkd2FyZjJvdXQuYyAocHJlbWFya191c2VkX3R5cGVzKTogUmVtb3ZlIHByb2JsZW1hdGljIHByb3RvdHlwZS4KCjIwMDYtMDQtMTEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZ2NjLmMgKExJTktfQ09NTUFORF9TUEVDKTogTW92ZSBsaW5rX2dvbXAgYWZ0ZXIgJW8uCgoyMDA2LTA0LTAzICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCVBSLzI3MDg3CgkqIHRyZWUtc3NhLWNvcHkuYyAobWF5X3Byb3BhZ2F0ZV9jb3B5KTogVGVzdCBmbG93IHNlbnNpdGl2ZQoJYWxpYXMgaW5mb3JtYXRpb24gdG9vLgoKMjAwNi0wNC0xMCAgTWlrZSBGcnlzaW5nZXIgIDx2YXBpZXJAZ2VudG9vLm9yZz4KCgkqIE1ha2VmaWxlLmluIChnY2MtY3Jvc3MpOiBBZGQgJChleGVleHQpIHRvIHRhcmdldCBuYW1lLgoKMjAwNi0wNC0xMCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCVBSLzIxMzkxCgkqIGR3YXJmMm91dC5jIChzdHJ1Y3QgZGllX3N0cnVjdCk6IEFkZCBkaWVfcGVyZW5uaWFsX3AgZmllbGQuCgkocHJlbWFya191c2VkX3R5cGVzX2hlbHBlcik6IE5ldy4KCShwcmVtYXJrX3VzZWRfdHlwZXMpOiBOZXcuCgkoZ2VuX3N1YnByb2dyYW1fZGllKTogQ2FsbCBwcmVtYXJrX3VzZWRfdHlwZXMuCgkocHJ1bmVfdW51c2VkX3R5cGVzX3dhbGspOiBEbyBub3QgcHJ1bmUgcGVyZW5uaWFsIGRpZXMuCgkqIGZ1bmN0aW9uLmMgKHVzZWRfdHlwZXNfaW5zZXJ0KTogTmV3LgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZnVuY3Rpb24pOiBBZGQgdXNlZF90eXBlc19oYXNoIGZpZWxkLgoJKHVzZWRfdHlwZXNfaW5zZXJ0KTogQWRkIHByb3RvdHlwZS4KCSogTWFrZWZpbGUuaW4gKEZVTkNUSU9OX0gpOiBEZXBlbmQgb24gSEFTSFRBQl9ILgoJKiBjLXBhcnNlci5jIChjX3BhcnNlcl9jYXN0X2V4cHJlc3Npb24pOiBTYXZlIGNhc3RlZCB0eXBlcyBpbiB1c2VkCgl0eXBlcyBoYXNoIHRhYmxlLgoKMjAwNi0wNC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMjY0NTkKCSogY29uZmlnL3JzNjAwMC9lNTAwLWRvdWJsZS5oIChTVUIzVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBUZXN0CglyczYwMDBfZXhwbGljaXRfb3B0aW9ucy5mbG9hdF9ncHJzLgoKMjAwNi0wNC0xMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX3ZlY3Rvcl9pbml0X29uZV9ub256ZXJvKTogUmVuYW1lZAoJZnJvbSBpeDg2X2V4cGFuZF92ZWN0b3JfaW5pdF9sb3dfbm9uemVyby4gIFRha2UgYW4gYWRkaXRpb25hbAoJb25lX3ZhciBhcmd1bWVudCBpbmRpY2F0aW5nIHdoaWNoIGVsZW1lbnQgaXMgbm9uLXplcm8uICBTdXBwb3J0CglvbmVfdmFyICE9IDAgZm9yIFY0U0Ztb2RlIGFuZCBWNFNJbW9kZSBieSBwZXJtdXRpbmcgdGhlIHJlc3VsdC4KCShpeDg2X2V4cGFuZF92ZWN0b3JfaW5pdCk6IENhbGwgaXg4Nl9leHBhbmRfdmVjdG9yX2luaXRfb25lX25vbnplcm8KCXdpdGggb25lX3ZhciBpbnN0ZWFkIG9mIGl4ODZfZXhwYW5kX3ZlY3Rvcl9pbml0X2xvd19ub256ZXJvLgoKMjAwNi0wNC0xMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAodHJlZS1pbnRvLXNzYS5vLCB0cmVlLW91dG9mLXNzYS5vLAoJdHJlZS1zc2EtbGl2ZS5vLCB0cmVlLXNzYS1hbGlhcy5vLCBmdW5jdGlvbi5vLCBkZi1wcm9ibGVtcy5vLAoJZ2xvYmFsLm8sIGNmZ2xheW91dC5vLCBsYW1iZGEtY29kZS5vLCByZWctc3RhY2subywKCWJ1aWxkL2dlbmV4dHJhY3Qubyk6IERlcGVuZCBvbiB2ZWNwcmltLmguCgkqIGNmZ2xheW91dC5jLCBkZi1wcm9ibGVtcy5jLCBmdW5jdGlvbi5jLCBnZW5leHRyYWN0LmMsCglnbG9iYWwuYywgbGFtYmRhLWNvZGUuYywgcmVnLXN0YWNrLmMsIHRyZWUtaW50by1zc2EuYywKCXRyZWUtb3V0b2Ytc3NhLmMsIHRyZWUtc3NhLWFsaWFzLmMsIHRyZWUtc3NhLWxpdmUuYzogSW5jbHVkZQoJdmVjcHJpbS5oLgoJKiB2ZWNwcmltLmg6IE5ldy4KCjIwMDYtMDQtMTAgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZHdhcmYyb3V0LmMgKHN0cnVjdCBkd19hdHRyX3N0cnVjdCk6IFJlbW92ZSBkd19hdHRyX25leHQuCglEZWNsYXJlIFZFQ3Mgb2YgdGhpcyB0eXBlLgoJKHN0cnVjdCBkaWVfc3RydWN0KTogTWFrZSBmaWVsZCBkaWVfYXR0ciBhIFZFQyBvZiBkd19hdHRyX3N0cnVjdC4KCShyZW1vdmVfY2hpbGRyZW4pOiBEZWxldGUuCgkoYWRkX2R3YXJmX2F0dHIpOiBVc2UgVkVDIHJvdXRpbmVzLgoJKGFkZF9BVF9mbGFnKTogVXBkYXRlIGZvciBjaGFuZ2VzIHRvIGFkZF9kd2FyZl9hdHRyLgoJKGFkZF9BVF9pbnQpOiBMaWtld2lzZS4KCShhZGRfQVRfdW5zaWduZWQpOiBMaWtld2lzZS4KCShhZGRfQVRfbG9uZ19sb25nKTogTGlrZXdpc2UuCgkoYWRkX0FUX3ZlYyk6IExpa2V3aXNlLgoJKGFkZF9BVF9zdHJpbmcpOiBMaWtld2lzZS4KCShhZGRfQVRfZGllX3JlZik6IExpa2V3aXNlLgoJKGFkZF9BVF9mZGVfcmVmKTogTGlrZXdpc2UuCgkoYWRkX0FUX2xvYyk6IExpa2V3aXNlLgoJKGFkZF9BVF9sb2NfbGlzdCk6IExpa2V3aXNlLgoJKGFkZF9BVF9hZGRyKTogTGlrZXdpc2UuCgkoYWRkX0FUX2xibF9pZCk6IExpa2V3aXNlLgoJKGFkZF9BVF9saW5lcHRyKTogTGlrZXdpc2UuCgkoYWRkX0FUX21hY3B0cik6IExpa2V3aXNlLgoJKGFkZF9BVF9vZmZzZXQpOiBMaWtld2lzZS4KCShhZGRfQVRfcmFuZ2VfbGlzdCk6IExpa2V3aXNlLgoJKGdldF9BVCk6IFVzZSBWRUNfaXRlcmF0ZS4KCShyZW1vdmVfQVQpOiBVc2UgVkVDX29yZGVyZWRfcmVtb3ZlLgoJKGZyZWVfZGllKTogRm9sZCByZW1vdmVfY2hpbGRyZW4gaW50byBoZXJlOyBoYXZlIGl0IHVzZSBWRUNfaXRlcmF0ZS4KCShwcmludF9kaWUpOiBVc2UgVkVDX2l0ZXJhdGUgb24gYXR0cnMuCgkocmV2ZXJzZV9kaWVfbGlzdHMpOiBEb24ndCByZXZlcnNlIGF0dHIgbGlzdHMuCgkoZGllX2NoZWNrc3VtKTogVXNlIFZFQ19pdGVyYXRlIG9uIGF0dHJzLgoJKHNhbWVfZGllX3ApOiBMaWtld2lzZS4KCShvdXRwdXRfbG9jYXRpb25fbGlzdHMpOiBMaWtld2lzZS4KCShidWlsZF9hYmJyZXZfdGFibGUpOiBMaWtld2lzZS4KCShzaXplX29mX2RpZSk6IExpa2V3aXNlLgoJKHVubWFya19hbGxfZGllcyk6IExpa2V3aXNlLgoJKG91dHB1dF9hYmJyZXZfc2VjdGlvbik6IExpa2V3aXNlLgoJKG91dHB1dF9kaWUpOiBMaWtld2lzZS4KCShwcnVuZV91bnVzZWRfdHlwZXNfd2Fsa19hdHRyaWJzKTogTGlrZXdpc2UuCgoyMDA2LTA0LTEwICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogZG9jL2luc3RhbGwudGV4aSAoKi0qLXNvbGFyaXMyKik6IFBvaW50IHRvIHRoZSBjb25maWd1cmUgcGFnZS4KCjIwMDYtMDQtMTAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGRlYnVnLzI3MDU3CgkqIGR3YXJmMm91dC5jIChpc19zeW1ib2xfZGllKTogUmV0dXJuIHRydWUgYWxzbyBmb3IgbmFtZXNwYWNlcy4KCjIwMDYtMDQtMDkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZXhwci5jIChzdG9yZV9jb25zdHJ1Y3Rvcik6IERvbid0IGJvdGhlciBjbGVhcmluZyB0YXJnZXQgaWYKCXdlJ3JlIGFib3V0IHRvIGFzc2lnbiBhIHZlY3RvciB0byBpdCB1c2luZyB2ZWNfaW5pdF9vcHRhYi4KCjIwMDYtMDQtMTAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1hbGlhcy5jIChsaHNfbWF5X3N0b3JlX3RvKTogTmV3IGZ1bmN0aW9uLgoJKHJlY2FsY3VsYXRlX3VzZWRfYWxvbmUpOiBIYW5kbGUgTEhTIG9mIGNhbGxzLgoKMjAwNi0wNC0wOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiB0YXJnZXQvMjcwMzQKCVBSIHRhcmdldC8yNjUwOAoJKiBjb25maWcuZ2NjIChocHBhKjY0Ki0qLWhwdXgxMSopOiBBZGQgJ2xpYmdjY19zdHViLmEnIHRvIGV4dHJhX3BhcnRzLgoJKiBwYTY0LWhwdXguaCAoTElCX1NQRUMpOiBDb3JyZWN0IHR5cG8uICBEb24ndCBhcHBlbmQgbWlsbGkuYS4KCShMSU5LX0dDQ19DX1NFUVVFTkNFX1NQRUMpOiBEZWZpbmUuICBBcHBlbmQgbWlsbGkuYSBoZXJlLgoJKFBBX0NYQV9GSU5BTElaRV9TVFVCLCBQQV9KVl9SRUdJU1RFUkNMQVNTRVNfU1RVQik6IERlbGV0ZSBkZWZpbmVzLgoJKFBBX0lOSVRfRklOSV9IQUNLKTogUmVuYW1lIHRvIFBBX0NSVEJFR0lOX0hBQ0suCgkoUEFfQ1JUQkVHSU5fSEFDSyk6IEVuc3VyZSBfX2RvX2dsb2JhbF9jdG9yc19hdXggaXMgcGxhY2VkIGluIHRleHQKCXNlY3Rpb24uICBEZWxldGUgUEFfQ1hBX0ZJTkFMSVpFX1NUVUIgYW5kIFBBX0pWX1JFR0lTVEVSQ0xBU1NFU19TVFVCCglzdHVicy4gIEFkZCAiLmFsaWduIDgiIGRpcmVjdGl2ZXMgYmVmb3JlIGFsbCAiLmR3b3JkIiBkaXJlY3RpdmVzLgoJKEdUSFJFQURfVVNFX1dFQUspOiBSZXZpc2UgY29tbWVudC4KCShUQVJHRVRfQVRUUklCVVRFX1dFQUspOiBEZWZpbmUuCgkqIHBhL3QtcGE2NCAoTElCR0NDU1RVQl9PQkpTKTogQWRkIG5ldyBydWxlcyBmb3Igc3R1YmxpYi5jLCByZmktc3R1Yi5vLAoJZGZpLXN0dWIubywgY3hhZi1zdHViLm8gYW5kIGp2cmMtc3R1Yi5vLgoJKiBzdHVibGliLmM6IE5ldyBmaWxlLgoKCVBSIHRhcmdldC8yNjc0MwoJUFIgdGFyZ2V0LzExMjU0CglQUiB0YXJnZXQvMTAyNzQKCSogcGEubWQgKGNicmFuY2ggcGF0dGVybnMpOiBSZXZpc2UgYXJndW1lbnRzIHVzZWQgaW4gY2FsbHMgdG8KCW91dHB1dF9jYnJhbmNoLCBvdXRwdXRfYmIgYW5kIG91dHB1dF9idmQuICBBZGQgbG9uZyBicmFuY2ggbGVuZ3RoCglhdHRyaWJ1dGVzLgoJKGZicmFuY2ggcGF0dGVybnMpOiBIYW5kbGUgbG9uZyBicmFuY2hlcy4KCShqdW1wKTogUmV2aXNlIGxlbmd0aCBjaGVjay4gIFJldmlzZSBhcmd1bWVudHMgZm9yIG91dHB1dF9sYnJhbmNoIGNhbGwuCglBZGQgbG9uZyBicmFuY2ggbGVuZ3RoIGF0dHJpYnV0ZXMuCgkoZGVjcmVtZW50X2FuZF9icmFuY2hfdW50aWxfemVybyk6IEFkZCBsb25nIGJyYW5jaCBsZW5ndGggYXR0cmlidXRlcy4KCShvdXRwdXRfbW92Yiwgb3V0cHV0X3BhcmFsbGVsX2FkZGIgYW5kIG91dHB1dF9wYXJhbGxlbF9tb3ZiIHBhdHRlcm5zKToKCUxpa2V3aXNlLiAgUmV2aXNlIGFyZ3VtZW50cyBmb3Igb3V0cHV0X3BhcmFsbGVsX2FkZGIgYW5kCglvdXRwdXRfcGFyYWxsZWxfbW92YiBjYWxscy4KCSogcGEtcHJvdG9zLmggKG91dHB1dF9jYnJhbmNoLCBvdXRwdXRfbGJyYW5jaCwgb3V0cHV0X2JiLCBvdXRwdXRfYnZiLAoJb3V0cHV0X3BhcmFsbGVsX21vdmIgYW5kIG91dHB1dF9wYXJhbGxlbF9hZGRiKTogVXBkYXRlIHByb3RvdHlwZXMuCgkqIHBhLmMgKG91dHB1dF9jYnJhbmNoKTogUmV2aXNlIGFyZ3VtZW50cy4gIENvcnJlY3QgaGFuZGxpbmcgb2YKCW51bGxpZmljYXRpb24gaW4gbG9uZyBicmFuY2hlcy4KCShvdXRwdXRfbGJyYW5jaCk6IEFkZCBuZXcgYXJndW1lbnQgdG8gY29udHJvbCBleHRyYWN0aW9uIG9mIGRlbGF5CglpbnN0cnVjdGlvbi4KCShvdXRwdXRfYmIpOiBIYW5kbGUgbG9uZyBicmFuY2hlcy4KCShvdXRwdXRfYnZiLCBvdXRwdXRfZGJyYSwgb3V0cHV0X21vdmIsIG91dHB1dF9wYXJhbGxlbF9tb3ZiLAoJb3V0cHV0X3BhcmFsbGVsX2FkZGIpOiBMaWtld2lzZS4KCjIwMDYtMDQtMDkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjcwNzMKCSogZ2NzZS5jICh0cnlfcmVwbGFjZV9yZWcpOiBKdXN0IHByb3BhZ2F0ZSBpbnRvIFJFR19FUVVBTCBub3RlcywKCW5vdCBSRUdfRVFVSVZzLgoKMjAwNi0wNC0wOCAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLmggKHRyZWVfbWVtb3J5X3RhZyk6IEFkZCBvbGRfdXNlZF9hbG9uZS4KCShTTVRfT0xEX1VTRURfQUxPTkUpOiBOZXcgbWFjcm8uCgkqIHRyZWUtc3NhLWFsaWFzLmMgKHJlY2FsY3VsYXRlX3VzZWRfYWxvbmUpOiBTdG9wCgltYXJraW5nIHRoaW5ncyBmb3IgcmVuYW1pbmcgdW5uZWNlc3NhcmlseS4KCjIwMDYtMDQtMDggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogYnVpbHRpbnMuYywgY29uZmlnL2FybS9hcm0uYywgY29uZmlnL2kzODYvY3lnd2luLmgsCgljb25maWcvaTM4Ni9pMzg2LmMsIGNvbmZpZy9pYTY0L2lhNjQuYywgY29uZmlnL3MzOTAvZml4ZGZkaS5oLAoJY29uZmlnL3NoL3NoLmMsIGNvbmZpZy9zaC9zaC5oLCBkZi1zY2FuLmMsIGV4Y2VwdC5jLAoJaGFpZmEtc2NoZWQuYywgb3B0YWJzLmMsIHJ0bC5oLCBzY2hlZC1kZXBzLmMsIHNjaGVkLWludC5oLAoJc2NoZWQtcmduLmMsIHRyZWUtaW5saW5lLmgsIHRyZWUtc3NhLWRvbS5jLAoJdHJlZS1zc2EtbG9vcC1wcmVmZXRjaC5jLCB0cmVlLXNzYS1vcGVyYW5kcy5jLAoJdHJlZS12ZWN0LXBhdHRlcm5zLmMsIHRyZWUtdnJwLmM6IEZpeCBjb21tZW50IHR5cG9zLiAgRm9sbG93CglzcGVsbGluZyBjb252ZW5zaW9ucy4KCSogY29uZmlnL2lhNjQvaWE2NC5vcHQsIGRvYy9jb250cmliLnRleGksIGRvYy9pbnZva2UudGV4aSwKCWRvYy9wYXNzZXMudGV4aSwgZG9jL3RtLnRleGksIGRvYy90cmVlLXNzYS50ZXhpOiBGaXggY29tbWVudAoJdHlwb3MuICBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgoyMDA2LTA0LTA3ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tMzJjL20zMmMuYyAobTMyY19mdW5jdGlvbl9hcmcpOiBTdHJ1Y3R1cmVzIGFyZSBhbHdheXMKCXBhc3NlZCBvbiB0aGUgc3RhY2suCgkobTMyY19pbml0X2N1bXVsYXRpdmVfYXJncyk6IFdoZW4gYSBmdW5jdGlvbiByZXR1cm5zIGEgc3RydWN0dXJlLAoJYWx3YXlzIHBhc3MgdGhlIHBvaW50ZXIgdG8gdGhhdCByZXR1cm4gYXJlYSBvbiB0aGUgc3RhY2suCgkobTMyY19mdW5jdGlvbl9hcmdfYWR2YW5jZSk6IERvbid0IGluY3JlbWVudCB0aGUgcGFyYW1ldGVyIG51bWJlcgoJaWYgd2UncmUgcHJvY2Vzc2luZyB0aGUgcmV0dXJuZWQgc3RydWN0dXJlIHBvaW50ZXIuCgkocHVzaG1faW5mbyk6IFJldmVyc2Ugb3JkZXIgb2YgcmVnaXN0ZXJzLgoKMjAwNi0wNC0wNyAgU2ViYXN0aWFuIFBvcCAgPHBvcEBjcmkuZW5zbXAuZnI+CgoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKGludmVyc2UsIG51bWJlcl9vZl9pdGVyYXRpb25zX25lLAoJYXNzZXJ0X25vX292ZXJmbG93X2x0LCBhc3NlcnRfbG9vcF9yb2xsc19sdCwgbnVtYmVyX29mX2l0ZXJhdGlvbnNfbHQsCgludW1iZXJfb2ZfaXRlcmF0aW9uc19sZSwgbnVtYmVyX29mX2l0ZXJhdGlvbnNfY29uZCwgZmluZF9sb29wX25pdGVyLAoJZXN0aW1hdGVfbnVtYmVyc19vZl9pdGVyYXRpb25zX2xvb3ApOiBVc2UgYnVpbGRfaW50X2NzdCBpbnN0ZWFkIG9mCglidWlsZF9pbnRfY3N0X3R5cGUuCgkqIHRyZWUtY2hyZWMuYyAoY2hyZWNfZm9sZF9tdWx0aXBseV9wb2x5X3BvbHksCgljaHJlY19mb2xkX211bHRpcGx5KTogU2FtZS4KCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoc3RyaXBfb2Zmc2V0XzEsIGZvcmNlX2V4cHJfdG9fdmFyX2Nvc3QsCglmb3JjZV9leHByX3RvX3Zhcl9jb3N0KTogU2FtZS4KCSogdHJlZS1tdWRmbGFwLmMgKG1mX3hmb3JtX2RlcmVmc18xKTogU2FtZS4KCSogdHJlZS1zc2EtbG9vcC1wcmVmZXRjaC5jIChpZHhfYW5hbHl6ZV9yZWYpOiBTYW1lLgoKMjAwNi0wNC0wNyAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3J0eF9jb3N0cykgPENPTlNUX0RPVUJMRT46IERvIG5vdAoJdHJlYXQgQ09OU1RfRE9VQkxFIGFzIElOVFZBTC4gIGFuZDY0XzJfb3BlcmFuZHMgcmVxdWlyZSBhbiBleHRyYQoJaW5zbi4KCjIwMDYtMDQtMDcgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGlwYS1pbmxpbmUuYyAoY2dyYXBoX2Vhcmx5X2lubGluaW5nKTogQ29sbGVjdCBnYXJiYWdlLgoKMjAwNi0wNC0wNyAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2MTM1CgkqIHRyZWUtc3NhLWNvcHkuYyAoc3RtdF9tYXlfZ2VuZXJhdGVfY29weSk6IEhhbmRsZSBtZW1vcnkKCWxvYWRzIGZvciBzdG9yZSBjb3B5LXByb3AuCgkoY29weV9wcm9wX3Zpc2l0X3N0bXQpOiBMaWtld2lzZS4KCjIwMDYtMDQtMDUgIFJvYmVydCBNaWxsYW4gIDxyb2JlcnRtaEBnbnUub3JnPgoKCSogY29uZmlnL2kzODYvbGludXguaDogQWRkIGEgY29tbWVudCB0byBtYXJrIG1hY3JvcyB0aGF0IGFyZQoJYmVpbmcgb3ZlcnJpZGVuIGluIGNvbmZpZy9rKmJzZC1nbnUuaC4KCSogY29uZmlnL2tmcmVlYnNkLWdudS5oOiBSZWRlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBpbnN0ZWFkIG9mCglEWU5BTUlDX0xJTktFUi4KCSogY29uZmlnL2tuZXRic2QtZ251Lmg6IERpdHRvLgoKMjAwNi0wNC0wNiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCVBSIHByb2ZpbGUvMjA4MTUKCVBSIHByb2ZpbGUvMjYzOTkKCSogY292ZXJhZ2UuYyAoY292ZXJhZ2VfY2hlY2tzdW1fc3RyaW5nKTogUmVvcmdhbml6ZSBsb29wIHRvIG5vdCByZWFkCglhZnRlciBidWZmZXIuCgoyMDA2LTA0LTA2ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGJ1aWx0aW5zLmMgKGV4cGFuZF9idWlsdGluX2xvbmdqbXApOlVzZSAjaWZkZWYgaW5zdGVhZCBvZiAjaWYKCWZvciBIQVZFX25vbmxvY2FsX2dvdG8gdG8gYmUgY29uc2lzdGVudC4KCShleHBhbmRfYnVpbHRpbl9ub25sb2NhbF9nb3RvKTogTGlrZXdpc2UuCgkoZXhwYW5kX2J1aWx0aW5fc3RyY21wKTogVXNlICNpZmRlZiBpbnN0ZWFkIG9mICNpZgoJZm9yIEhBVkVfY21wc3RybnNpIHRvIGJlIGNvbnNpc3RlbnQuCgoyMDA2LTA0LTA1ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tMzJjL20zMmMuaCAoSU5DT01JTkdfRlJBTUVfU1BfT0ZGU0VUKTogQWRqdXN0IGZvciBtMTZjCgl2cyBtMzJjLgoKMjAwNi0wNC0wNSAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL2JmaW4uYyAoYmZpbl9sZWdpdGltYXRlX2FkZHJlc3NfcCk6IERpc2FsbG93Cglnb3QtcmVsYXRpdmUgYWRkcmVzc2luZyBmb3IgYW55dGhpbmcgYnV0IFNJbW9kZS4KCgkqIGNvbmZpZy9iZmluL2xpYjFmdW5jcy5hc20gKG1vZHNpKTogUDEvUDIgY2FuIGJlIGNhbGwtY2xvYmJlcmVkCglldmVuIGlmIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIGRvZXNuJ3QgbW9kaWZ5IHRoZW0uCgoyMDA2LTA0LTA1ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjY5MTkKCSogaXBhLWlubGluZS5jIChjZ3JhcGhfZGVjaWRlX2lubGluaW5nX2luY3JlbWVudGFsbHkpOiBGaXggYXJndW1lbnQKCXRvIGNncmFwaF9lc3RpbWF0ZV9zaXplX2FmdGVyX2lubGluaW5nLgoKMjAwNi0wNC0wNSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIHJlbG9hZC5jIChmaW5kX2R1bW15X3JlbG9hZCk6IEZpeCB0eXBvIGluIDIwMDYtMDQtMDMgY2hhbmdlLgoKMjAwNi0wNC0wNSAgU2ViYXN0aWFuIFBvcCAgPHBvcEBjcmkuZW5zbXAuZnI+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjY5OTYKCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKGFuYWx5emVfc2NhbGFyX2V2b2x1dGlvbl8xKTogRG9uJ3QgYW5hbHl6ZQoJVkVDVE9SX1RZUEUgdmFyaWFibGVzLgoKMjAwNi0wNC0wNSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2NzYzCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9jb21wYXJpc29uKTogTW92ZSBmb2xkaW5nIG9mCglQVFIgKyBDU1QgQ01QIFBUUiArIENTVCAuLi4KCShmb2xkX2JpbmFyeSk6IC4uLiBoZXJlLiAgRm9sZCBvbmx5IGZvciBFUV9FWFBSIGFuZCBORV9FWFBSLgoKMjAwNi0wNC0wNSAgR2VyYWxkIFBmZWlmZXIgIDxnZXJhbGRAcGZlaWZlci5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpIChQcmVyZXF1aXNpdGVzKTogUmVmaW5lIHNvbWUgd29yZGluZyBvbgoJYm9vdHN0cmFwcGluZyBhbmQga3NoLgoJTW92ZSB0aGUgdmVyc2lvbiBudW1iZXJzIG9mIERlamFHbnUgaGVyZSBmcm9tIHRoZSB0ZXN0aW5nIHNlY3Rpb24KCWFuZCBmaXggY2FzaW5nIG9mIG5hbWVzLgoJRml4IG1hcmt1cCBhbmQgY2xhcmlmeSB3b3JkaW5nIGZvciBhdXRvZ2VuIHJlcXVpcmVtZW50cy4KCVJlZmVyIHRvIEdDSiBpbnN0ZWFkIG9mIGp1c3QgamF2YS4KCVJlZmVyIHRvIFNWTiBpbnN0ZWFkIG9mIENWUy4KCURlc2NyaWJlIGRpZmZ1dGlscyBhcyB1c2VmdWwgaW5zdGVhZCBvZiBuZWNlc3NhcnkuCgkoRG93bmxvYWRpbmcgdGhlIHNvdXJjZSk6IFJlZmVyIHRvIFNWTiBpbnN0ZWFkIG9mIENWUy4KCUFkanVzdCBhIGxpbmsgdG8gb3VyIHdlYiBzaXRlIGFjY29yZGluZ2x5LgoJKENvbmZpZ3VyYXRpb24pOiBGaXggY2FzaW5nIG9mIEJpc29uLgoJKEJ1aWxkaW5nKTogUmVmZXIgdG8gU1ZOIGluc3RlYWQgb2YgQ1ZTLgoJRml4IGEgc2VudGVuY2Ugb24gdGhlIHVzZSBvZiBCaXNvbiBhbmQgcmVtb3ZlIGR1cGxpY2F0ZSAoYW5kCglpbmNvcnJlY3QpIHZlcnNpb24gbnVtYmVyIG9mIEJpc29uIHJlcXVpcmVtZW50LgoJUmVtb3ZlIG9uZSByZWR1bmRhbnQgbGlzdCBvZiBwYWNrYWdlcyBuZWVkZWQgZm9yIGJ1aWxkaW5nLgoJKFNwZWNpZmljKTogQXZvaWQgcmVmZXJlbmNlIHRvIENWUy4KCjIwMDYtMDQtMDQgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChUQVJHRVRfTVNfQklURklFTERfTEFZT1VUX1ApOiBEZWZpbmUuCgkoVEFSR0VUX1VTRV9NU19CSVRGSUVMRF9MQVlPVVQpOiBEaXR0by4KCShyczYwMDBfaGFuZGxlX3N0cnVjdF9hdHRyaWJ1dGUpOiBOZXcuCgkocnM2MDAwX21zX2JpdGZpZWxkX2xheW91dF9wKTogRGl0dG8uCgoyMDA2LTA0LTA0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4tY3J0My5jIChhdGV4aXQpOiBQYXNzICZfX2Rzb19oYW5kbGUgcmF0aGVyIHRoYW4KCU5VTEwgZm9yIGRzbyBwYXJhbWV0ZXIgdG8gYXRleGl0X2NvbW1vbi4KCjIwMDYtMDQtMDQgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG1hY2hvcGljX291dHB1dF9zdHViKTogT3V0cHV0IFx0CgliZXR3ZWVuIGluc3RydWN0aW9ucyBhbmQgb3BlcmFuZHMuCgoyMDA2LTA0LTA0ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChudW1faW5zbnNfY29uc3RhbnRfd2lkZSk6IENoYW5nZQoJc2F0aXNmaWVzX2NvbnN0cmFpbnRfW0lMXSB0byBleHBsaWNpdCB0ZXN0cyBvbiB2YWx1ZS4KCjIwMDYtMDQtMDQgIFNlYmFzdGlhbiBQb3AgIDxwb3BAY3JpLmVuc21wLmZyPgoKCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKGNvbXB1dGVfb3ZlcmFsbF9lZmZlY3Rfb2ZfaW5uZXJfbG9vcCwKCXNldF9uYl9pdGVyYXRpb25zX2luX2xvb3ApOiBVc2UgYnVpbGRfaW50X2NzdCBpbnN0ZWFkIG9mCglidWlsZF9pbnRfY3N0X3R5cGUuCgkqIHRyZWUtZGF0YS1yZWYuYyAoY2FuX3VzZV9hbmFseXplX3N1YnNjcmlwdF9hZmZpbmVfYWZmaW5lKTogVXNlCglidWlsZF9pbnRfY3N0IGluc3RlYWQgb2YgY29udmVydC4KCjIwMDYtMDQtMDQgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9TVFJVQ1RfVkFMVUVfUlRYKTogRG9jdW1lbnQKCW5ldyB2YWx1ZSAyIGZvciBpbmNvbWluZy4KCSogZnVuY3Rpb24uYyAoZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0KTogQ2FsbCBzdHJ1Y3RfdmFsdWVfcnR4Cgl3aXRoIGluY29taW5nIGFzIDIuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZDogQ29tbWVudCB1cGRhdGVkX3JldHVybi4KCSogY29uZmlnL3NwYXJjL3NwYXJjLm9wdDogQWRkIC1tc3RkLXN0cnVjdC1yZXR1cm4gb3B0aW9uLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoc3BhcmNfc3RydWN0X3ZhbHVlX3J0eCk6IFVzZSBzdGFuZGFyZAoJc3RydWN0IHJldHVybiBpZiBzcGFyY19zdGRfc3RydWN0X3JldHVybiBhbmQgaW5jb21pbmcgaXMgMi4KCShwcmludF9vcGVyYW5kKTogRG8gbm90IGFkanVzdCByZXR1cm4gaWYKCXNwYXJjX3N0ZF9zdHJ1Y3RfcmV0dXJuLgoKMjAwNi0wNC0wNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChmb2xkX2J1aWx0aW5fc3ByaW50Zik6IFVzZSBmb2xkX2NvbnZlcnQgaW5zdGVhZCBvZgoJY29udmVydCBpbiB0aGUgbWlkZGxlLWVuZC4KCSogZXhwci5jIChzdG9yZV9leHByLCBzdG9yZV9jb25zdHJ1Y3RvciwgZ2V0X2lubmVyX3JlZmVyZW5jZSwKCWV4cGFuZF9leHByX3JlYWxfMSwgc3RyaW5nX2NvbnN0YW50LCB0cnlfY2FzZXNpLCB0cnlfdGFibGVqdW1wKToKCUxpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX3JhbmdlX3R5cGUpOiBMaWtld2lzZS4KCjIwMDYtMDQtMDQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGRvYy9pbnN0YWxsLnRleGkgKFByZXJlcXVpc2l0ZXMpOiBNZW50aW9uIGphci4KCjIwMDYtMDQtMDQgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogZG9jL3RyZWUtc3NhLnRleGkgKFByZXNlcnZpbmcgdGhlIHZpcnR1YWwgc3NhIGZvcm0pOiBOZXcKCXN1YnNlY3Rpb24uCgoyMDA2LTA0LTA0ICBNYXR0aGlhcyBLbG9zZSAgPGRva29AZGViaWFuLm9yZz4KCgkqIE1ha2VmaWxlLmluICh1bnByb3RvaXplLm8pOiBTYW1lIGRlcGVuZGVuY2llcyBhcyBmb3IgcHJvdG9pemUuby4KCglQUiBib290c3RyYXAvMjY3NjQKCVBSIGJvb3RzdHJhcC8yNzMzNAoJKiBNYWtlZmlsZS5pbiAocy1tYWNyb19saXN0KTogQ29uZm9ybSB0byBQT1NJWCBydWxlcyBpbiBzaW5nbGUgcXVvdGVkCglzdHJpbmdzLgoKMjAwNi0wNC0wMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkb2MvZXh0ZW5kLnRleGkgKEZ1bmN0aW9uIEF0dHJpYnV0ZXMpOiBSZXdyaXRlIHZpc2liaWxpdHkKCWF0dHJpYnV0ZSBkb2N1bWVudGF0aW9uLgoJKiBkb2MvaW52b2tlLnRleGkgKEMrKyBEaWFsZWN0IE9wdGlvbnMpOiBSZXdyaXRlCgktZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gZG9jdW1lbnRhdGlvbiB0byBkZXNjcmliZSBzb21ldGhpbmcKCWVudGlyZWx5IGRpZmZlcmVudCwgYWx0aG91Z2ggaW4gcHJhY3Rpc2UgY29tcGF0aWJsZS4KCShDb2RlIEdlbiBPcHRpb25zKTogV2FybiBhYm91dCBzeXN0ZW0gaGVhZGVycyBpbiAtZnZpc2liaWxpdHk9Cglkb2N1bWVudGF0aW9uLgoKCSogZG9jL2V4dGVuZC50ZXhpIChPdGhlciBCdWlsdGlucyk6IERvY3VtZW50IHRoYXQKCV9fYnVpbHRpbl9uYW4gaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQgb25seSB3aGVuIGl0cyBhcmd1bWVudAoJaXMgdmFsaWQuCgoyMDA2LTA0LTAzICBBZGFtIE5lbWV0ICA8YW5lbWV0QGNhdml1bW5ldHdvcmtzLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV91bmFyeV9vcGVyYXRpb25fMSkgPFRSVU5DQVRFPjogV2hlbgoJdHJ5aW5nIHRvIHJlbW92ZSBUUlVOQ0FURSBjaGVjayBpZiBhbGwgYml0cyBvdXRzaWRlIHRoZSBuZXcgbW9kZQoJYXJlIGlkZW50aWNhbCB0byB0aGUgc2lnbiBiaXQuCgoyMDA2LTA0LTAzICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtZG9tLmMgKHByb3BhZ2F0ZV9yaHNfaW50b19saHMpOiBBdm9pZCB1c2VsZXNzIGZvbGRpbmcKCWFuZCBvcGVyYW5kIHNjYW5uaW5nIGluIHNvbWUgY29tbW9uIGNhc2VzLgoKMjAwNi0wNC0wMyAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCSAgICBEYWxlIEpvaGFubmVzZW4gIDxkYWxlakBhcHBsZS5jb20+CgoJUFIgdGFyZ2V0LzE5NjUzCgkqIHJlZ2NsYXNzLmMgKHN0cnVjdCByZWdfcHJlZik6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKHJlZ2NsYXNzKTogU2V0IHByZWZjbGFzcyB0byBOT19SRUdTIGlmIG1lbW9yeSBpcyB0aGUgYmVzdCBvcHRpb24uCgkocmVjb3JkX3JlZ19jbGFzc2VzKTogQ29wZSB3aXRoIGEgcHJlZmNsYXNzIHNldCB0byBOT19SRUdTLgoJKiByZWxvYWQuYyAoZmluZF9yZWxvYWRzKTogVGFrZSBQUkVGRVJSRURfT1VUUFVUX1JFTE9BRF9DTEFTUwoJaW50byBhY2NvdW50LiAgRm9yIG5vbi1yZWdpc3RlcnMsIGVxdWF0ZSBhbiBlbXB0eSBwcmVmZXJyZWQKCXJlbG9hZCBjbGFzcyB0byBhIGAhJyBpbiB0aGUgY29uc3RyYWludDsgbW92ZSB0aGUgaWYgY2xhdXNlIHRvCglkbyBzbyBhZnRlciB0aG9zZSB0aGF0IHJlamVjdCB0aGUgaW5zbi4KCShwdXNoX3JlbG9hZCk6IEFsbG93IFBSRUZFUlJFRF8qX1JFTE9BRF9DTEFTUyB0byBsaWJlcmFsbHkKCXJldHVybiBOT19SRUdTLgoJKGZpbmRfZHVtbXlfcmVsb2FkKTogTGlrZXdpc2UuCgkqIGRvYy90bS50ZXhpIChSZWdpc3RlciBDbGFzc2VzKTogRG9jdW1lbnQgd2hhdCBpdCBtZWFucwoJaWYgUFJFRkVSUkVEXypfUkVMT0FEX0NMQVNTIHJldHVybiBOT19SRUdTLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfcHJlZmVycmVkX3JlbG9hZF9jbGFzcyk6IEZvcmNlCgl1c2luZyBTU0UgcmVnaXN0ZXJzIChhbmQgcmV0dXJuIE5PX1JFR1MgZm9yIGZsb2F0aW5nLXBvaW50Cgljb25zdGFudHMpIGlmIG1hdGggaXMgZG9uZSB3aXRoIFNTRS4KCShpeDg2X3ByZWZlcnJlZF9vdXRwdXRfcmVsb2FkX2NsYXNzKTogTmV3LgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChpeDg2X3ByZWZlcnJlZF9vdXRwdXRfcmVsb2FkX2NsYXNzKTogTmV3LgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFBSRUZFUlJFRF9PVVRQVVRfUkVMT0FEX0NMQVNTKTogTmV3LgoJKiBjb25maWcvaTM4Ni9pMzg2Lm1kOiBSZW1vdmUgIyByZWdpc3RlciBwcmVmZXJlbmNlcy4KCjIwMDYtMDQtMDIgIFNlYmFzdGlhbiBQb3AgIDxwb3BAY3JpLmVuc21wLmZyPgoKCVBSIGJvb3RzdHJhcC8yNjk5MgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoY29tcHV0ZV9vdmVyYWxsX2VmZmVjdF9vZl9pbm5lcl9sb29wLAoJY2hyZWNfaXNfcG9zaXRpdmUsIHNldF9uYl9pdGVyYXRpb25zX2luX2xvb3ApOiBVc2UgYSB2YXJpYWJsZSBmb3IKCXRoZSB0eXBlIG9mIG5iX2l0ZXIuCgkoaW5zdGFudGlhdGVfcGFyYW1ldGVyc18xKTogQ29udmVydCB0aGUgb3BlcmFuZHMgYmVmb3JlIGNhbGxpbmcKCWNocmVjX2ZvbGRfbWludXMsIGNocmVjX2ZvbGRfcGx1cywgb3IgY2hyZWNfZm9sZF9tdWx0aXBseS4KCSogdHJlZS1kYXRhLXJlZi5jIChjYW5fdXNlX2FuYWx5emVfc3Vic2NyaXB0X2FmZmluZV9hZmZpbmUpOiBTYW1lLgoKMjAwNi0wNC0wMiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBidWlsdGlucy5jIChkdW1teV9vYmplY3QpOiBVc2UgYnVpbGRfaW50X2NzdCBpbnN0ZWFkIG9mIGNvbnZlcnQuCgkqIHRyZWUtc3NhLWNjcC5jIChtYXliZV9mb2xkX3N0bXRfYWRkaXRpb24pOiBVc2UgZm9sZF9jb252ZXJ0CglpbnN0ZWFkIG9mIGNvbnZlcnQuCgkqIGRvanVtcC5jIChkb19qdW1wKTogTGlrZXdpc2UuCgkqIGV4cHIuaCAoQUREX1BBUk1fU0laRSwgU1VCX1BBUk1fU0laRSwgQVJHU19TSVpFX1RSRUUpOiBMaWtld2lzZS4KCSogZ2ltcGxpZnkuYyAoZ2ltcGxlX2Jvb2xpZnksIGdpbXBsaWZ5X2luaXRfY29uc3RydWN0b3IsCglnaW1wbGlmeV9ib29sZWFuX2V4cHIpOiBMaWtld2lzZS4KCSogZW1pdC1ydGwuYyAoc2V0X21lbV9hdHRyaWJ1dGVzX21pbnVzX2JpdHBvcyk6IExpa2V3aXNlLgoJKiB2YXJhc20uYyAoYXJyYXlfc2l6ZV9mb3JfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCSogdHJlZS1vYmplY3Qtc2l6ZS5jIChjb21wdXRlX29iamVjdF9vZmZzZXQpOiBMaWtld2lzZS4KCjIwMDYtMDQtMDIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMjY5NzcKCSogZXhwci5jIChlbWl0X2dyb3VwX3N0b3JlKTogQ2hlY2sgd2hldGhlciBzaW1wbGlmeV9nZW5fc3VicmVnIHJldHVybnMKCU5VTExfUlRYLCBpbmRpY2F0aW5nIGl0IGNvdWxkbid0IGNyZWF0ZSBhIHZhbGlkIHBhcmFkb3hpY2FsIHN1YnJlZy4KCjIwMDYtMDQtMDIgIFNlYmFzdGlhbiBQb3AgIDxwb3BAY3JpLmVuc21wLmZyPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2OTM5CgkqIHRyZWUtY2hyZWMuYyAoY2hyZWNfbWVyZ2UpOiBVc2UgZXFfZXZvbHV0aW9uc19wLgoKMjAwNi0wNC0wMiAgU2ViYXN0aWFuIFBvcCAgPHBvcEBjcmkuZW5zbXAuZnI+CgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoYWRkX3RvX2V2b2x1dGlvbl8xKTogUGFzcyBhbiBleHRyYSBhcmd1bWVudAoJYXRfc3RtdC4gIENvbnZlcnQgdGhlIHR5cGUgb2Ygb3BlcmFuZHMgYmVmb3JlIGNhbGxpbmcKCWJ1aWxkX3BvbHlub21pYWxfY2hyZWMuCgkoYWRkX3RvX2V2b2x1dGlvbik6IFBhc3MgYW4gZXh0cmEgYXJndW1lbnQgYXRfc3RtdC4gIEFkanVzdCB0aGUgY2FsbCB0bwoJYWRkX3RvX2V2b2x1dGlvbl8xLgoJKGZvbGxvd19zc2FfZWRnZV9pbl9yaHMpOiBBZGp1c3QgY2FsbCB0byBhZGRfdG9fZXZvbHV0aW9uLgoJKGluc3RhbnRpYXRlX3BhcmFtZXRlcnNfMSk6IENvbnZlcnQgdGhlIHR5cGUgb2Ygb3BlcmFuZHMgYmVmb3JlIGNhbGxpbmcKCWJ1aWxkX3BvbHlub21pYWxfY2hyZWMuCgkqIHRyZWUtY2hyZWMuYyAoY2hyZWNfZm9sZF9wb2x5X2NzdCwgY2hyZWNfZm9sZF9wbHVzX3BvbHlfcG9seSwKCWNocmVjX2ZvbGRfbXVsdGlwbHlfcG9seV9wb2x5LCBjaHJlY19yZXBsYWNlX2luaXRpYWxfY29uZGl0aW9uLAoJcmVzZXRfZXZvbHV0aW9uX2luX2xvb3ApOiBJbnNlcnQgYXNzZXJ0cyB0byBjaGVjayB0aGUgdHlwZXMgb2YgdGhlCglvcGVyYW5kcy4KCShjaHJlY190eXBlKTogTW92ZWQuLi4KCShlcV9ldm9sdXRpb25zX3ApOiBVc2Ugb3BlcmFuZF9lcXVhbF9wLgoJKiB0cmVlLWNocmVjLmggKGJ1aWxkX3BvbHlub21pYWxfY2hyZWMpOiBJbnNlcnQgYW4gYXNzZXJ0IHRvIGNoZWNrCgl0aGUgdHlwZXMgb2YgdGhlIG9wZXJhbmRzLgoJKGNocmVjX3R5cGUpOiAuLi5oZXJlLgoJKiB0cmVlLWRhdGEtcmVmLmMgKGNyZWF0ZV9kYXRhX3JlZik6IENvbnZlcnQgdGhlIG9wZXJhbmRzIGJlZm9yZQoJY2FsbGluZyBjaHJlY19yZXBsYWNlX2luaXRpYWxfY29uZGl0aW9uLgoJKHNhbWVfYWNjZXNzX2Z1bmN0aW9ucywgYW5hbHl6ZV9zdWJzY3JpcHRfYWZmaW5lX2FmZmluZSwKCWFuYWx5emVfbWl2X3N1YnNjcmlwdCwgYWxsX2NocmVjc19lcXVhbF9wKTogVXNlIGVxX2V2b2x1dGlvbnNfcC4KCShjb21wdXRlX3N1YnNjcmlwdF9kaXN0YW5jZSwgYW5hbHl6ZV96aXZfc3Vic2NyaXB0LAoJYW5hbHl6ZV9zaXZfc3Vic2NyaXB0X2NzdF9hZmZpbmUsIGNvbXB1dGVfb3ZlcmxhcF9zdGVwc19mb3JfYWZmaW5lXzFfMiwKCWFuYWx5emVfbWl2X3N1YnNjcmlwdCk6IENvbnZlcnQgdGhlIG9wZXJhbmRzIGJlZm9yZSBjYWxsaW5nCgljaHJlY19mb2xkX21pbnVzIG9yIGNocmVjX2ZvbGRfcGx1cy4KCjIwMDYtMDQtMDIgIFNlYmFzdGlhbiBQb3AgIDxwb3BAY3JpLmVuc21wLmZyPgoKCSogdHJlZS1kYXRhLXJlZi5jIChjb21wdXRlX2FsbF9kZXBlbmRlbmNlcyk6IFVzZSBhIHBvaW50ZXIgdG8KCXRoZSBkZXBlbmRlbmNlX3JlbGF0aW9ucyB2ZWN0b3IuCgkoY29tcHV0ZV9kYXRhX2RlcGVuZGVuY2VzX2Zvcl9sb29wKTogQWRqdXN0IGNhbGwgdG8KCWNvbXB1dGVfYWxsX2RlcGVuZGVuY2VzLgoKMjAwNi0wNC0wMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X3NjYW5fb21wX2NsYXVzZXMpIDxPTVBfQ0xBVVNFX0lGPjogQ2FsbAoJZ2ltcGxlX2Jvb2xpZnkgb24gdGhlIGNvbmRpdGlvbiBiZWZvcmUgY2FsbGluZyBnaW1wbGlmeV9leHByLgoKMjAwNi0wMy0zMSAgQm9iIFdpbHNvbiAgPGJvYi53aWxzb25AYWNtLm9yZz4KCgkqIGNvbmZpZy94dGVuc2EvbGliMWZ1bmNzLmFzbTogUmVuYW1lIGFiaV9lbnRyeS9hYmlfcmV0dXJuIG1hY3JvcwoJdG8gbGVhZl9lbnRyeS9sZWFmX3JldHVybi4gIENoYW5nZSBsZWFmX2VudHJ5IHRvIGFkZCAxNiBieXRlcyB0bwoJdGhlIGZyYW1lIHNpemUuICBVcGRhdGUgdG8gdXNlIHRoZSBuZXcgbWFjcm9zLgoJKiBjb25maWcveHRlbnNhL2llZWU3NTQtc2YuUzogVXNlIG5ldyBsZWFmX2VudHJ5L2xlYWZfcmV0dXJuIG1hY3Jvcy4KCSogY29uZmlnL3h0ZW5zYS9pZWVlNzU0LWRmLlM6IExpa2V3aXNlLgoKMjAwNi0wMy0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyZWUtY2ZnLmMgKG1ha2VfY3RybF9zdG10X2VkZ2VzLCBtYWtlX2V4aXRfZWRnZXMpOiBNZXJnZSBpbnRvLi4uCgkobWFrZV9lZGdlcyk6IC4uLiBoZXJlLiAgQ29udHJvbCBmYWxsdGhydSBjcmVhdGlvbiB3aXRoIGEgbG9jYWwKCXZhcmlhYmxlLiAgRG8gbm90IHBsYXkgd2l0aCBmYWtlIGVkZ2VzLgoJKG1ha2Vfb21wX3NlY3Rpb25zX2VkZ2VzKTogRG9uJ3Qgc2V0IEVER0VfQUJOT1JNQUwuCgkobWFrZV9nb3RvX2V4cHJfZWRnZXMpOiBEb24ndCBwbGF5IHdpdGggZmFrZSBlZGdlcy4gIE1ha2UgZm9yX2NhbGwKCWEgYm9vbGVhbi4KCjIwMDYtMDQtMDEgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogZHdhcmYyLmggKERXNjRfQ0lFX0lEKTogRGVmaW5lLgoJKiBkd2FyZjJvdXQuYyAoRFdBUkZfQ0lFX0lEKTogRGVmaW5lLgoJKG91dHB1dF9jYWxsX2ZyYW1lX2luZm8pOiBPdXRwdXQgMHhmZmZmZmZmZiBiZWZvcmUgc3RhbmRhcmQgOC1ieXRlCglsZW5ndGggaGVhZGVyLiAgVXNlIERXQVJGX0NJRV9JRC4KCSh2YWx1ZV9mb3JtYXQpOiBVc2UgRFdfRk9STV9kYXRhNCBvciBEV19GT1JNX2RhdGE4IGZvcgoJZHdfdmFsX2NsYXNzX2xvY19saXN0IGRlcGVuZGluZyBvbiBEV0FSRl9PRkZTRVRfU0laRS4KCjIwMDYtMDMtMzEgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL2xpbnV4LWF0b21pYy5hc206IE5ldyBmaWxlLgoJKiBjb25maWcvc2gvdC1saW51eCAoTElCMkZVTkNTX0VYVFJBKTogQWRkIGxpbnV4LWF0b21pYy5hc20uCgoyMDA2LTAzLTMxICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tMzJjL2NvbmQubWQ6IFNldCBjb25kaXRpb24gZmxhZ3MgcHJvcGVybHkgdGhyb3VnaG91dC4KCSogY29uZmlnL20zMmMvbWlubWF4Lm1kOiBMaWtld2lzZS4KCSogY29uZmlnL20zMmMvcHJvbG9ndWUubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyYy9iaXRvcHMubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyYy9tdWxkaXYubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyYy9tb3YubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyYy9hZGRzdWIubWQ6IExpa2V3aXNlLgoJKiBjb25maWcvbTMyYy9tMzJjLm1kOiBMaWtld2lzZS4KCSogY29uZmlnL20zMmMvanVtcC5tZDogTGlrZXdpc2UuCgkqIGNvbmZpZy9tMzJjL3NoaWZ0Lm1kOiBMaWtld2lzZS4KCgkqIGNvbmZpZy9tMzJjL2NvbmQubWQgKGNtcDxtb2RlPik6IENhbGwgbTMyY19vdXRwdXRfY29tcGFyZSB0bwoJY29uZGl0aW9uYWxseSBvdXRwdXQgdGhlIHBhdHRlcm4gZm9yIHRoaXMuCgkqIGNvbmZpZy9tMzJjL20zMmMuYyAoZmxhZ3NfbmVlZGVkX2Zvcl9jb25kaXRpb25hbCk6IE5ldy4KCShtMzJjX2NvbXBhcmVfcmVkdW5kYW50KTogTmV3LgoJKG0zMmNfb3V0cHV0X2NvbXBhcmUpOiBOZXcuCgkqIGNvbmZpZy9tMzJjL20zMmMtcHJvdG9zLmggKG0zMmNfb3V0cHV0X2NvbXBhcmUpOiBOZXcuCgoJKiBjb25maWcvbTMyYy9tMzJjLmMgKG0zMmNfcHJlcGFyZV9zaGlmdCk6IEZpeCBsb2dpYyB0byBjbG9iYmVyCglkZXN0LCBub3Qgc3JjLiAgQWxsb3cgb3RoZXIgNC1ieXRlIG1vZGVzLgoKMjAwNi0wMy0zMCAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGRvYy9tZC50ZXhpOiBSZWZlciB0byBhdnIvY29uc3RyYWludHMubWQgaW5zdGVhZCBvZgoJYXZyL2F2ci5oLgoKMjAwNi0wMy0zMCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBleHByLmMgKGVtaXRfZ3JvdXBfc3RvcmUpOiBNYWtlIEJZVEVQT1MgYSBIT1NUX1dJREVfSU5UIHRvCglzaWduZWQgdnMuIHVuc2lnbmVkIGNvbXBhcmlzb24gZmFpbHVyZXMgb24gc29tZSBob3N0cy4KCjIwMDYtMDMtMzEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJUFIgdGFyZ2V0LzI2NDU5CgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKENBTk5PVF9DSEFOR0VfTU9ERV9DTEFTUyk6IExpbWl0IDIwMDMtMTItMDgKCWNoYW5nZSB0byBGTE9BVF9SRUdTLgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2V4cGxpY2l0X29wdGlvbnMpOiBBZGQgaWVlZS4KCShyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IFVzZSBpdC4KCShyczYwMDBfaGFuZGxlX29wdGlvbik6IFNldCBpdC4gIFNldCByczYwMDBfZXhwbGljaXRfb3B0aW9ucy5hYmkKCW9ubHkgZm9yIC1tYWJpPXNwZS9uby1zcGUgYW5kIC1tYWJpPWFsdGl2ZWMuCgoyMDA2LTAzLTMwICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9kYXJ3aW4uaCAoTElOS19DT01NQU5EX1NQRUMpOiBEb24ndCB0cnkgdG8gcHJvdGVjdCAlUyB3aXRoCgkhWmR5bmFtaWNsaWIuCgoyMDA2LTAzLTMwICBDYXJsb3MgTydEb25lbGwgIDxjYXJsb3NAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZW5hbWUgZG9jZGlyIHRvIGdjY19kb2NkaXIuCgoyMDA2LTAzLTMwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiB0YXJnZXQvMTc5NTkKCSogZXhwci5jIChlbWl0X2dyb3VwX3N0b3JlKTogT3B0aW1pemUgZ3JvdXAgc3RvcmVzIGludG8gYSBwc2V1ZG8KCXJlZ2lzdGVyIGJ5IHVzaW5nIGEgcGFyYWRveGljYWwgc3VicmVnIHRvIGluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uCglpZiB0aGUgZmlyc3Qgb3IgbGFzdCBtZW1iZXIgb2YgdGhlIGdyb3VwIHNwZWNpZmllcyBhICJsb3cgcGFydCIuCgoyMDA2LTAzLTMwICBNYXhpbSBLdXZ5cmtvdiAgPG1rdXZ5cmtvdkBpc3ByYXMucnU+CgoJUFIgdGFyZ2V0LzI2NzM0CgkqIHJ0bC5kZWYgKERFUFNfTElTVCk6IENoYW5nZSB0eXBlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCB0byAnaW50Jy4KCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0LnNwZWN1bGF0ZV9pbnNuKTogQ2hhbmdlIHR5cGUgb2YgdGhlCglzZWNvbmQgcGFyYW1ldGVyIHRvICdpbnQnLgoJKiBsaXN0cy5jIChhbGxvY19ERVBTX0xJU1QpOiBDaGFuZ2Ugc2lnbmF0dXJlLiAgVXBkYXRlIHJlZmVyZW5jZSB0bwoJdGhlIHNlY29uZCBvcGVyYW5kIG9mIHRoZSBERVBTX0xJU1QuCgkoY29weV9ERVBTX0xJU1RfbGlzdCk6IFVwZGF0ZSByZWZlcmVuY2UJdG8gdGhlIHNlY29uZCBvcGVyYW5kIG9mIHRoZQoJREVQU19MSVNULgoJKiBydGwuaCAoYWxsb2NfREVQU19MSVNUKTogVXBkYXRlIHNpZ25hdHVyZS4KCSogc2NoZWQtaW50LmggKGRzX3QpOiBDaGFuZ2UgdHlwZWRlZiB0byAnaW50Jy4KCShERVBfU1RBVFVTLCBCSVRTX1BFUl9ERVBfU1RBVFVTKTogVXBkYXRlLgoKMjAwNi0wMy0zMCAgTWF4aW0gS3V2eXJrb3YgIDxta3V2eXJrb3ZAaXNwcmFzLnJ1PgoKCSogaGFpZmEtc2NoZWQuYyAodHJ5X3JlYWR5KTogQ2hhbmdlIGNvbmRpdGlvbiB0byByZXN0b3JlCglub24tc3BlY3VsYXRpdmUgcGF0dGVybglvZiB0aGUgaW5zdHJ1Y3Rpb24uCgkocHJvY2Vzc19pbnNuX2RlcGVuZF9iZV9pbl9zcGVjKTogQ29kZSB0byBrZWVwIHByb2JhYmlsaXR5IG9mIHRoZQoJc3BlY3VsYXRpdmUgZGVwZW5kZW5jZSBub24tZGVjcmVhc2luZy4KCjIwMDYtMDMtMzAgIEppZSBaaGFuZyAgPGppZS56aGFuZ0BhbmFsb2cuY29tPgoKCSogY29uZmlnL2JmaW4vYmZpbi5jIChzaW5nbGVfbW92ZV9mb3Jfc3RybW92KTogUmVuYW1lZCB0by4uLgoJKHNpbmdsZV9tb3ZlX2Zvcl9tb3ZtZW0pOiAuLi4gdGhpcy4gQWxzbyBjaGFuZ2UgYWxsIHVzZXMuCgkoYmZpbl9leHBhbmRfc3RybW92KTogUmVuYW1lZCB0by4uLgoJKGJmaW5fZXhwYW5kX21vdm1lbSk6IC4uLiB0aGlzLiBBbHNvIGNoYW5nZSBhbGwgdXNlcy4KCSogY29uZmlnL2JmaW4vYmZpbi5tZCAobW92c3Ryc2kpOiBSZW5hbWVkIHRvLi4uCgkobW92c3Ryc2kpOiAuLi50aGlzLgoKMjAwNi0wMy0zMCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNjgzMAoKCSogdHJlZS1zc2EtY29weS5jIChjb3B5X3Byb3BfdmlzaXRfYXNzaWdubWVudCk6IERvIG5vdCBjaGVjayBsb29wIGRlcHRoLgoJKGNvcHlfcHJvcF92aXNpdF9zdG10KTogUmVtb3ZlIHdyaXRlLW9ubHkgdmFyaWFibGUgYW5uLgoJKGluaXRfY29weV9wcm9wKTogQ2hlY2sgdmFyaWFibGUgbG9vcCBkZXB0aCBoZXJlLiAgRG8gbm90IHNpbXVsYXRlCgltZW1vcnktdGFnIGFuZCB2aXJ0dWFsIG9wZXJhbmQgUEhJcyBleGNlcHQgZm9yIHN0b3JlIGNvcHkgcHJvcC4KCjIwMDYtMDMtMzAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYzogUmVtb3ZlIGJ1aWx0aW5zIGZvciBTU0UyIEFCSSBpbnRyaW5zaWMKCXZhcmlhbnRzIHdpdGggZG91YmxlIGFyZ3VtZW50cy4KCjIwMDYtMDMtMjkgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGdlbnByZWRzLmMgKHdyaXRlX3RtX2NvbnN0cnNfaCk6IERlbGV0ZSB2YXJpYWJsZSBwLgoJKiBnZW5jb25kaXRpb25zLmMgKHdyaXRlX2hlYWRlcik6IEFkZCB0bS1jb25zdHJzLmggdG8gaW5jbHVkZWQKCWhlYWRlcnMuCgkqIGdlbnBlZXAuYyAobWFpbik6IEFkZCB0b3BsZXYuaCB0byBpbmNsdWRlZCBoZWFkZXJzLgoJKiBNYWtlZmlsZS5pbiAoYnVpbGQvZ2VuY29uZG1kLm8pOiBBZGQgdG0tY29uc3Rycy5oIGRlcGVuZGVuY3kuCgkoYnVpbGQvZ2VucGVlcC5vKTogQWRkIHRvcGxldi5oIGRlcGVuZGVuY3kuCgkqIGNvbmZpZy9yczYwMDAvY29uc3RyYWludHMubWQ6IEFkZCAiVyIgY29uc3RyYWludC4KCjIwMDYtMDMtMjkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogc3Rvci1sYXlvdXQuYyAobW9kZV9mb3Jfc2l6ZV90cmVlKTogUmVtb3ZlIHJlc3RpY3Rpb24gb24gdHlwZQoJc2l6ZXMgYnkgY29ycmVjdGx5IHRlc3Rpbmcgd2hldGhlciB0aGUgc2l6ZSBmaXRzIGEgaG9zdCBpbnRlZ2VyLgoJKGluaXRpYWxpemVfc2l6ZXR5cGVzKTogVXNlIHNldF9taW5fYW5kX21heF92YWx1ZXNfZm9yX2ludGVncmFsX3R5cGUKCXRvIGNvcnJlY3RseSBzZXQgVFlQRV9NSU5fVkFMVUUgYW5kIFRZUEVfTUFYX1ZBTFVFIHRvIHRoZSBmdWxsCglTSW1vZGUgcmFuZ2UgZm9yIHRoZSBkZWZhdWx0IHNpemV0eXBlIGFuZCBiaXRzaXpldHlwZS4KCjIwMDYtMDMtMjkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29udmVydC5jIChjb252ZXJ0X3RvX3BvaW50ZXIpOiBQcmVzZXJ2ZSB0aGUgVFJFRV9PVkVSRkxPVwoJYW5kIFRSRUVfQ09OU1RBTlRfT1ZFUkZMT1cgYml0cyBvZiB0aGUgYXJndW1lbnQuICBSZXR1cm4KCXF1aWNrbHkgaWYgdGhlIGFyZ3VtZW50IGlzIGFscmVhZHkgb2YgdGhlIGNvcnJlY3QgdHlwZS4KCUNhbGwgZm9sZF9idWlsZDEgaW5zdGVhZCBvZiBidWlsZDEuICBUaWR5IHVwIGJsYW5rIGxpbmVzLgoKMjAwNi0wMy0yOSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZ2VuZW1pdC5jIChtYWluKTogQWRkIHRtLWNvbnN0cnMuaCB0byBpbmNsdWRlZCBoZWFkZXJzLgoJKiBnZW5vdXRwdXQuYyAob3V0cHV0X3Byb2xvZ3VlKTogQWRkIHRtLWNvbnN0cnMuaCB0byBpbmNsdWRlZCBoZWFkZXJzLgoJKiBnZW5wZWVwLmMgKG1haW4pOiBBZGQgdG0tY29uc3Rycy5oIHRvIGluY2x1ZGVkIGhlYWRlcnMuCgkqIGdlbnByZWRzLmMgKHdyaXRlX3NhdGlzZmllc19jb25zdHJhaW50X2Zucyk6IFJlbmFtZSB0byAuLi4KCSh3cml0ZV90bV9jb25zdHJzX2gpOiB0aGlzIGFuZCB3cml0ZSBjb21wbGV0ZSBmaWxlLgoJKHdyaXRlX3RtX3ByZWRzX2gpOiBEbyBub3QgZW1pdCBzYXRpc2ZpZXNfY29uc3RyYWludCBmbnMuCgkod3JpdGVfaW5zbl9wcmVkc19jKTogQWRkIHRtLWNvbnN0cnMuaCB0byBpbmNsdWRlZCBoZWFkZXJzLgoJKGdlbl9jb25zdHJzKTogTmV3IHZhcmlhYmxlLgoJKHBhcnNlX29wdGlvbik6IFBhcnNlICItYyIuCgkobWFpbik6IEludm9rZSB3cml0ZV90bV9jb25zdHJzX2guCgkqIGdlbnJlY29nLmMgKHdyaXRlX2hlYWRlcik6IEFkZCB0bS1jb25zdHJzLmggdG8gaW5jbHVkZWQgaGVhZGVycy4KCSogTWFrZWZpbGUuaW4gKFNUQUdFQ09QWVNUVUZGKTogQWRkIHRtLWNvbnN0cnMuaC4KCShvYmplY3Rfb3V0X2ZpbGUpOiBBZGQgdG0tY29uc3Rycy5oIGRlcGVuZGVuY3kuCgkoaW5zbi1lbWl0Lm8pOiBTYW1lLgoJKGluc24tb3V0cHV0Lm8pOiBTYW1lLgoJKGluc24tcGVlcC5vKTogU2FtZS4KCShpbnNuLXByZWRzLm8pOiBTYW1lLgoJKGluc24tcmVjb2cubyk6IFNhbWUuCgkodG0tY29uc3Rzci5oKTogTmV3IHRhcmdldC4KCShzLWNvbnN0cnMtaCk6IE5ldyB0YXJnZXQuCgoJKiBjb25maWcvcnM2MDAwL2NvbnN0cmFpbnRzLm1kOiBOZXcgZmlsZS4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogSW5jbHVkZSB0bS1jb25zdHJzLmguCgkobnVtX2luc25fY29uc3RhbnRfd2lkZSk6IENvbnZlcnQgdG8gc2F0aXNmaWVzX2NvbnN0cmFpbnQuCgkocnM2MDAwX3J0eF9jb3N0cyk6IENvbnZlcnQgdG8gc2F0aXNmaWVzX2NvbnN0cmFpbnQuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFJFR19DTEFTU19GUk9NX0xFVFRFUik6IERlbGV0ZS4KCShDT05TVF9PS19GT1JfTEVUVEVSX1ApOiBEZWxldGUuCgkoQ09OU1RfRE9VQkxFX09LX0ZPUl9MRVRURVJfUCk6IERlbGV0ZS4KCShFWFRSQV9DT05TVFJBSU5UKTogRGVsZXRlLgoJKEVYVFJBX01FTU9SWV9DT05TVFJBSU5UKTogRGVsZXRlLgoJKEVYVFJBX0FERFJFU1NfQ09OU1RSQUlOVCk6IERlbGV0ZS4KCSogY29uZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1kOiBDb252ZXJ0IHRvIHNhdGlzZmllc19jb25zdHJhaW50LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZDogSW5jbHVkZSBjb25zdHJhaW50cy5tZC4gIENvbnZlcnQgdG8KCXNhdGlzZmllc19jb25zdHJhaW50LgoKCSogY29uZmlnL2kzODYvaTM4Ni5jOiBJbmNsdWRlIHRtLWNvbnN0cnMuaC4KCjIwMDYtMDMtMjkgIFNlYmFzdGlhbiBQb3AgIDxwb3BAY3JpLmVuc21wLmZyPgoKCSogdHJlZS1sb29wLWxpbmVhci5jIChjb21wdXRlX2RhdGFfZGVwZW5kZW5jZXNfZm9yX2xvb3ApOiBBZGp1c3QgY2FsbHMuCgkqIHRyZWUtZGF0YS1yZWYuYyAoZmluZF9kYXRhX3JlZmVyZW5jZXNfaW5fbG9vcCwKCWNvbXB1dGVfZGF0YV9kZXBlbmRlbmNlc19mb3JfbG9vcCk6IFVzZSBwb2ludGVycyB0byBWRUMuCgkoYW5hbHl6ZV9hbGxfZGF0YV9kZXBlbmRlbmNlcyk6IEFkanVzdCBjYWxscy4KCSogdHJlZS1kYXRhLXJlZi5oIChmaW5kX2RhdGFfcmVmZXJlbmNlc19pbl9sb29wLAoJY29tcHV0ZV9kYXRhX2RlcGVuZGVuY2VzX2Zvcl9sb29wKTogQWRqdXN0IGRlY2xhcmF0aW9ucy4KCSogdHJlZS12ZWN0LWFuYWx5emUuYyAodmVjdF9hbmFseXplX2RhdGFfcmVmcyk6IEFkanVzdCBjYWxsIHRvCgljb21wdXRlX2RhdGFfZGVwZW5kZW5jZXNfZm9yX2xvb3AuCgoyMDA2LTAzLTI5ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS92ZnAubWQgKG1vdnNmX3ZmcCk6IERpc3BhcmFnZSB3PC0+ciBhbHRlcm5hdGl2ZXMuCgkobW92ZGZfdmZwKTogRGl0dG8uCgoyMDA2LTAzLTI5ICBTZWJhc3RpYW4gUG9wICA8cG9wQGNyaS5lbnNtcC5mcj4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNjg1OQoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKGluZmVyX2xvb3BfYm91bmRzX2Zyb21fdW5kZWZpbmVkKTogQXZvaWQKCWRpdmlzaW9uIGJ5IHplcm8uCgkoY29udmVydF9zdGVwKTogUmVtb3ZlIFRSRUVfT1ZFUkZMT1cgYW5kIFRSRUVfQ09OU1RBTlRfT1ZFUkZMT1cgZmxhZ3MKCWZvciB0aGUgc3RlcCBhZnRlciBmb2xkX2NvbnZlcnQuCgoyMDA2LTAzLTI5ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogcmVsb2FkMS5jIChjaG9vc2VfcmVsb2FkX3JlZ3MpOiBDaGVjayBmb3IgYWxsIFJUWF9BVVRPSU5DIG9wZXJhdG9ycy4KCShpbmNfZm9yX3JlbG9hZCk6IEhhbmRsZSBQUkVfTU9ESUZZIGFuZCBQT1NUX01PRElGWSBhZGRyZXNzZXMuCgoyMDA2LTAzLTI5ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjM2MjMKCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfbmFycm93X2JpdGZpZWxkKTogTmV3IGZ1Y3Rpb24uCgkqIHRhcmdob29rcy5oIChkZWZhdWx0X25hcnJvd19iaXRmaWVsZCk6IGFkZCBwcm90b3R5cGUuCgkqIHRhcmdldC5oIChnY2NfdGFyZ2V0KTogQWRkIG5hcnJvd192b2xhdGlsZV9iaXRmaWVsZC4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfTkFSUk9XX1ZPTEFUSUxFX0JJVEZJRUxEKTogRGVmaW5lLgoJKiBzdG9yLWxheW91dC5jIChnZXRfYmVzdF9tb2RlKTogVXNlIHRhcmdldG0ubmFycm93X3ZvbGF0aWxlX2JpdGZpZWxkLgoJKiBkb2MvdG0udGV4aTogRG9jdW1lbnQgVEFSR0VUX05BUlJPV19WT0xBVElMRV9CSVRGSUVMRFMuCgkqIGNvbmZpZy9hcm0vYXJtLmMgKFRBUkdFVF9OQVJST1dfVk9MQVRJTEVfQklURklFTEQpOiBEZWZpbmUuCgoyMDA2LTAzLTI5ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogY29uZmlnLmdjYyAoczM5MC0qLWxpbnV4LSosIHMzOTB4LSotbGludXgqKTogQWRkIHQtZGZwcnVsZXMgdG8KCXRtYWtlX2ZpbGUuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoUzM5MF9zY2FsYXJfbW9kZV9zdXBwb3J0ZWRfcCk6IE5ldyBmdW5jdGlvbi4KCShOUl9DX01PREVTKTogQWRkIFREbW9kZSwgRERtb2RlIGFuZCBTRG1vZGUuCgkoczM5MF9vdXRwdXRfcG9vbF9lbnRyeSwgKTogQWNjZXB0IE1PREVfREVDSU1BTF9GTE9BVC4KCShzMzkwX2hhcmRfcmVnbm9fbW9kZV9vayk6IERpc2FsbG93IFREbW9kZSBpbiBpbnRlZ2VyIHJlZ3MuCgkoczM5MF9mdW5jdGlvbl9hcmdfZmxvYXQpOiBBbGxvdyBTRG1vZGUgYW5kIEREbW9kZSB2YWx1ZXMgdG8gYmUKCXBhc3NlZCBpbiBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMuCgkoczM5MF9mdW5jdGlvbl9hcmdfaW50ZWdlciwgczM5MF9mdW5jdGlvbl92YWx1ZSk6IFJlcGxhY2UgTU9ERV9GTE9BVAoJY2hlY2sgd2l0aCBTQ0FMQVJfRkxPQVRfTU9ERV9QLgoJKFRBUkdFVF9TQ0FMQVJfTU9ERV9TVVBQT1JURURfUCk6IERlZmluZSB0YXJnZXQgbWFjcm8uCgoyMDA2LTAzLTI4ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjU5ODUKCSogdHJlZS1zc2EtbG9vcC1uaXRlci5jIChudW1iZXJfb2ZfaXRlcmF0aW9uc19sZSwKCW51bWJlcl9vZl9pdGVyYXRpb25zX25lKTogTWFrZSBjb21tZW50cyBtb3JlIHByZWNpc2UuCgkobnVtYmVyX29mX2l0ZXJhdGlvbnNfY29uZCk6IEFkZCBvbmx5X2V4aXQgYXJndW1lbnQuICBVc2UgdGhlCglmYWN0IHRoYXQgc2lnbmVkIHZhcmlhYmxlcyBkbyBub3Qgb3ZlcmZsb3cgb25seSB3aGVuIG9ubHlfZXhpdAoJaXMgdHJ1ZS4KCShsb29wX29ubHlfZXhpdF9wKTogTmV3LgoJKG51bWJlcl9vZl9pdGVyYXRpb25zX2V4aXQpOiBQYXNzIHJlc3VsdCBvZiBsb29wX29ubHlfZXhpdF9wIHRvCgludW1iZXJfb2ZfaXRlcmF0aW9uc19jb25kLgoKMjAwNi0wMy0yOCAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2NjQzCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGZpbmRfaW50ZXJlc3RpbmdfdXNlc19hZGRyZXNzKTogRG8gbm90IGhhbmRsZQoJYml0X2ZpZWxkX3JlZnMuCgoyMDA2LTAzLTI4ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9zaC5tZCAodWRpdnNpM19pNF9pbnQpOiBDbG9iYmVyIE1BQ0hfUkVHIGFuZCBNQUNMX1JFRy4KCShkaXZzaTNfaTRfaW50KTogTGlrZXdpc2UuCgoyMDA2LTAzLTI4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGV4cHIuYyAoZW1pdF9ncm91cF9zdG9yZSk6IE9ubHkgY3JlYXRlIGEgbmV3IHBzZXVkbyByZWcgaWYgdGhlCglxdWFudGl0eSBpdCBuZWVkcyB0byBob2xkIGlzbid0IGFscmVhZHkgYSBzdWl0YWJsZSBwc2V1ZG8uCgoyMDA2LTAzLTI4ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdGltZXZhci5kZWYgKFRWX1RSRUVfUEhJX0NQUk9QKTogTmV3IHRpbWV2YXIuCgkqIHRyZWUtc3NhLWRvbS5jIChwYXNzX3BoaV9vbmx5X2Nwcm9wKTogVXNlIGl0LgoKMjAwNi0wMy0yOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5KSA8QklUX1hPUl9FWFBSPjogRm9sZCAoWCAmIFkpIF4gWSBhcwoJdGhlIGVxdWl2YWxlbnQgflggJiBZLCBhbmQgdGhlIHN5bW1ldHJ5IHJlbGF0ZWQgdHJhbnNmb3JtYXRpb25zLgoJKGZvbGRfYmluYXJ5KSA8QklUX0FORF9FWFBSPjogU2ltaWxhcmx5LCBmb2xkIChYIF4gWSkgJiBZIGFzCgl+WCAmIFksIGFuZCBzeW1tZXRyeSByZWxhdGVkIHRyYW5zZm9ybXMuCgoyMDA2LTAzLTI4ICBNYXhpbSBLdXZ5cmtvdiAgPG1rdXZ5cmtvdkBpc3ByYXMucnU+CgoJUmV2ZXJ0IG15IDIwMDYtMDMtMjcgcGF0Y2hlcy4KCjIwMDYtMDMtMjggIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZm9sZC1jb25zdC5jIChmb2xkX3VuYXJ5KSA8Tk9QX0VYUFI+OiBGb2xkIChUMSkofihUMilYKSBhcwoJfihUMSlYLCB3aGVuIFQxIGFuZCBUMiBhcmUgaW50ZWdlciB0eXBlcyBvZiB0aGUgc2FtZSBwcmVjaXNpb24KCWFuZCAoVDIpWCBpc24ndCBhbiBleHRlbnNpb24uCgoyMDA2LTAzLTI4ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2Nzk2CgkqIHRyZWUtc3NhLWRvbS5jIChwcm9wYWdhdGVfcmhzX2ludG9fbGhzKTogUXVldWUgYmxvY2tzIHdoaWNoCgluZWVkIEVIIGVkZ2UgY2xlYW51cHMgcmF0aGVyIHRoYW4gcHVyZ2luZyB0aGVtIGltbWVkaWF0ZWx5LgoJKGVsaW1pbmF0ZV9kZWdlbmVyYXRlX3BoaXMpOiBIYW5kbGUgcXVldWVkIEVIIGNsZWFudXBzLgoKMjAwNi0wMy0yOCAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1hbGlhcy5jIChjcmVhdGVfc2Z0KTogSW5pdGlhbGx5IGluaGVyaXQgVFJFRV9BRERSRVNTQUJMRQoJZnJvbSBwYXJlbnRfdmFyLgoKMjAwNi0wMy0yNyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8yMjUyNAoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5KSA8TUlOVVNfRVhQUj46IENhbGwgZm9sZF9jb252ZXJ0IHRvCgljYXN0IEJJVF9OT1RfRVhQUiBvcGVyYW5kIHRvIHRoZSBjb3JyZWN0IHR5cGUuCgoyMDA2LTAzLTI3ICBTZWJhc3RpYW4gUG9wICA8cG9wQGNyaS5lbnNtcC5mcj4KCgkqIHRyZWUtbG9vcC1saW5lYXIuYzogRG9uJ3QgaW5jbHVkZSB2YXJyYXkuaC4KCShnYXRoZXJfaW50ZXJjaGFuZ2Vfc3RhdHMsIHRyeV9pbnRlcmNoYW5nZV9sb29wcywKCWxpbmVhcl90cmFuc2Zvcm1fbG9vcHMpOiBVc2UgVkVDIGluc3RlYWQgb2YgVkFSUkFZLgoJKiBsYW1iZGEtbWF0LmM6IERvbid0IGluY2x1ZGUgdmFycmF5LmguCgkqIHRyZWUtY2hyZWMuYzogU2FtZS4KCSogbGFtYmRhLXRyYW5zLmM6IFNhbWUuCgkqIHRyZWUtdmVjdG9yaXplci5jIChuZXdfbG9vcF92ZWNfaW5mbywgZGVzdHJveV9sb29wX3ZlY19pbmZvKTogVXNlCglWRUMgaW5zdGVhZCBvZiBWQVJSQVkuCgkqIHRyZWUtdmVjdG9yaXplci5oOiBJZGVtLgoJKiB0cmVlLWRhdGEtcmVmLmMgKGR1bXBfZGF0YV9yZWZlcmVuY2VzLAoJZHVtcF9kYXRhX2RlcGVuZGVuY2VfcmVsYXRpb25zLCBkdW1wX2Rpc3RfZGlyX3ZlY3RvcnMsIGR1bXBfZGRycywKCWluaXRpYWxpemVfZGF0YV9kZXBlbmRlbmNlX3JlbGF0aW9uLCBmaW5hbGl6ZV9kZHJfZGVwZW5kZW50LAoJY29tcHV0ZV9hbGxfZGVwZW5kZW5jZXMsIGZpbmRfZGF0YV9yZWZlcmVuY2VzX2luX2xvb3AsCgljb21wdXRlX2RhdGFfZGVwZW5kZW5jZXNfZm9yX2xvb3AsIGFuYWx5emVfYWxsX2RhdGFfZGVwZW5kZW5jZXMsCglmcmVlX2RlcGVuZGVuY2VfcmVsYXRpb24sIGZyZWVfZGVwZW5kZW5jZV9yZWxhdGlvbnMsCglmcmVlX2RhdGFfcmVmcyk6IElkZW0uCgkqIHRyZWUtZGF0YS1yZWYuaCAoZGF0YV9yZWZlcmVuY2VfcCwgc3Vic2NyaXB0X3ApOiBOZXcuCgkoZGF0YV9kZXBlbmRlbmNlX3JlbGF0aW9uLCBERFJfU1VCU0NSSVBULCBERFJfTlVNX1NVQlNDUklQVFMpOiBVc2UKCVZFQyBpbnN0ZWFkIG9mIFZBUlJBWS4KCShERFJfU1VCU0NSSVBUU19WRUNUT1JfSU5JVCk6IFJlbW92ZWQuCgkoZmluZF9kYXRhX3JlZmVyZW5jZXNfaW5fbG9vcCwgY29tcHV0ZV9kYXRhX2RlcGVuZGVuY2VzX2Zvcl9sb29wLAoJZHVtcF9kZHJzLCBkdW1wX2Rpc3RfZGlyX3ZlY3RvcnMsIGR1bXBfZGF0YV9yZWZlcmVuY2VzLAoJZHVtcF9kYXRhX2RlcGVuZGVuY2VfcmVsYXRpb25zLCBmcmVlX2RlcGVuZGVuY2VfcmVsYXRpb25zLAoJZnJlZV9kYXRhX3JlZnMpOiBBZGp1c3QgZGVjbGFyYXRpb24uCgkobGFtYmRhX3RyYW5zZm9ybV9sZWdhbF9wKTogTW92ZSBkZWNsYXJhdGlvbiBoZXJlLi4uCgkqIHRyZWUtdmVjdC1hbmFseXplLmMgKHZlY3RfYW5hbHl6ZV9kYXRhX3JlZl9kZXBlbmRlbmNlcywKCXZlY3RfY29tcHV0ZV9kYXRhX3JlZnNfYWxpZ25tZW50LCB2ZWN0X3ZlcmlmeV9kYXRhcmVmc19hbGlnbm1lbnQsCgl2ZWN0X2VuaGFuY2VfZGF0YV9yZWZzX2FsaWdubWVudCwgdmVjdF9hbmFseXplX2RhdGFfcmVmX2FjY2Vzc2VzLAoJdmVjdF9hbmFseXplX2RhdGFfcmVmcyk6IFVzZSBWRUMgaW5zdGVhZCBvZiBWQVJSQVkuCgkqIGxhbWJkYS5oIChsYW1iZGFfdHJhbnNmb3JtX2xlZ2FsX3ApOiAuLi5mcm9tIGhlcmUuCgkqIGxhbWJkYS1jb2RlLmMgKGxhbWJkYV90cmFuc2Zvcm1fbGVnYWxfcCk6IFVzZSBWRUMgaW5zdGVhZCBvZiBWQVJSQVkuCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAodmVjdF91cGRhdGVfaW5pdHNfb2ZfZHJzKTogSWRlbS4KCSogTWFrZWZpbGUuaW4gKHRyZWUtbG9vcC1saW5lYXIubywgbGFtYmRhLW1hdC5vLCBsYW1iZGEtdHJhbnMubywKCXRyZWUtY2hyZWMubyk6IERvbid0IGRlcGVuZCBvbiBWQVJSQVlfSC4KCjIwMDYtMDMtMjcgIE1heGltIEt1dnlya292ICA8bWt1dnlya292QGlzcHJhcy5ydT4KCgkqIHJ0bC5kZWYgKENvcHlyaWdodCk6IFVwZGF0ZSBkYXRlLgoJKERFUFNfTElTVCk6IENoYW5nZSB0eXBlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCB0byAnaW50Jy4KCSogdGFyZ2V0LmggKENvcHlyaWdodCk6IFVwZGF0ZSBkYXRlLgoJKHN0cnVjdCBnY2NfdGFyZ2V0LnNwZWN1bGF0ZV9pbnNuKTogQ2hhbmdlIHR5cGUgb2YgdGhlIHNlY29uZCBwYXJhbWV0ZXIKCXRvICdpbnQnLgoJKiBsaXN0cy5jIChDb3B5cmlnaHQpOiBVcGRhdGUgZGF0ZS4KCShhbGxvY19ERVBTX0xJU1QpOiBDaGFuZ2Ugc2lnbmF0dXJlLiAgVXBkYXRlIHJlZmVyZW5jZSB0byB0aGUgc2Vjb25kCglvcGVyYW5kIG9mIHRoZSBERVBTX0xJU1QuCgkoY29weV9ERVBTX0xJU1RfbGlzdCk6IFVwZGF0ZSByZWZlcmVuY2UJdG8gdGhlIHNlY29uZCBvcGVyYW5kIG9mIHRoZQoJREVQU19MSVNULgoJKiBydGwuaCAoQ29weXJpZ2h0KTogVXBkYXRlIGRhdGUuCgkoYWxsb2NfREVQU19MSVNUKTogVXBkYXRlIHNpZ25hdHVyZS4KCSogc2NoZWQtaW50LmggKENvcHlyaWdodCk6IFVwZGF0ZSBkYXRlLgoJKGRzX3QpOiBDaGFuZ2UgdHlwZWRlZiB0byAnaW50Jy4KCShERVBfU1RBVFVTLCBCSVRTX1BFUl9ERVBfU1RBVFVTKTogVXBkYXRlLgoKMjAwNi0wMy0yNyAgTWF4aW0gS3V2eXJrb3YgIDxta3V2eXJrb3ZAaXNwcmFzLnJ1PgoKCSogaGFpZmEtc2NoZWQuYyAoQ29weXJpZ2h0KTogVXBkYXRlIGRhdGUuCgkodHJ5X3JlYWR5KTogQ2hhbmdlIGNvbmRpdGlvbiB0byByZXN0b3JlIG5vbi1zcGVjdWxhdGl2ZSBwYXR0ZXJuCglvZiB0aGUgaW5zdHJ1Y3Rpb24uCgkocHJvY2Vzc19pbnNuX2RlcGVuZF9iZV9pbl9zcGVjKTogQ29kZSB0byBrZWVwIHByb2JhYmlsaXR5IG9mIHRoZQoJc3BlY3VsYXRpdmUgZGVwZW5kZW5jZSBub24tZGVjcmVhc2luZy4KCjIwMDYtMDMtMjcgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiByZWdyZW5hbWUuYyAocmVwbGFjZV9vbGRlc3RfdmFsdWVfYWRkcik6IEluaXRpYWxpemUgYSB2YXJpYWJsZSB0bwoJc2h1dCB1cCB0aGUgY29tcGlsZXIuCgoyMDA2LTAzLTI3ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3QuY29tPgoKCSogY29uZmlnL3NoL3Qtc2ggKCQoVClsaWJpY19pbnZhbGlkYXRlX2FycmF5XzQtMTAwLmEpOiBGaXggcnVsZQoJdG8gdXNlIGxpYiBwcmVmaXggZm9yIHRhcmdldC4KCSgkKFQpbGliaWNfaW52YWxpZGF0ZV9hcnJheV80LTIwMC5hKTogTGlrZXdpc2UuCgkoJChUKWxpYmljX2ludmFsaWRhdGVfYXJyYXlfNGEuYSk6IExpa2V3aXNlLgoKMjAwNi0wMy0yNyAgQW5kcmV3IFN0dWJicyA8YW5kcmV3LnN0dWJic0BzdC5jb20+CgkgICAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN0LmNvbT4KCgkqIHN1cGVyaC5vcHQ6IE5ldyBmaWxlLgoJKiBzaC5jIChib2FyZHR5cGUsIG9zcnVudGltZSk6IFJlbW92ZS4KCSogc3VwZXJoLmggKFNVQlRBUkdFVF9PUFRJT05TKTogUmVtb3ZlLgoJKiBjb25maWcuZ2NjIChzaCotc3VwZXJoLWVsZik6IEFkZCBzaC9zdXBlcmgub3B0IHRvIGV4dHJhX29wdGlvbnMuCgoJKiBjb25maWcuZ2NjIChzaCotKi0qKTogRG9uJ3QgdXNlIGMtYyByYW5nZXMgZm9yIHRyLiAgUXVvdGUgc2VkCglhcmd1bWVudHMgd2l0aCBeIGFuZC9vciBbXS4KCgkqIGNvbmZpZy5nY2MgKHNoLSotKik6IEFkZCBxdW90aW5nIHRvIGFjY291bnQgZm9yIHF1aXJrIG9mCglTb2xhcmlzIC9iaW4vc2guCglSZXBsYWNlID09IHdpdGggPSBpbiBlbmFibGVfaW5jb21wbGV0ZV90YXJnZXRzIHRlc3QuCgoJKiBjb25maWcvc2gvc3VwZXJoLmggKFNVQlRBUkdFVF9MSU5LX1NQRUMpOiBSZXBsYWNlIExJVFRMRV9FTkRJQU5fQklUCgl3aXRoIE1BU0tfTElUVExFX0VORElBTi4KCgkqIGNvbmZpZy5nY2MgKHNoKi1zdXBlcmgtZWxmKTogQWRkIHNoL3N1cGVyaC5oIHRvIHRtX2ZpbGUuCgkqIGNvbmZpZy9zaC9zaC5vcHQ6IEFkZGVkIHRvIHNvbWUgY29tbWVudHMuCgkqIGNvbmZpZy9zaC9zdXBlcmguaDogUmVtb3ZlZCBzb21lIGNoYWZmLgoKCSogY29uZmlnL3NoL3NoLm9wdDogQWRkIG00LVsxMjM0XTAwKiBvcHRpb25zLgoJKiBjb25maWcvc2gvc2guYyAoc2hfaGFuZGxlX29wdGlvbik6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvdC1zaCAoSUNfRVhUUkFfUEFSVFMsIEVYVFJBX01VTFRJTElCX1BBUlRTKTogRGVmaW5lLgoJKGljX2ludmFsaWRhdGVfYXJyYXlfNC0xMDAubyk6IE5ldyBydWxlLgoJKCQoVClsaWJpY19pbnZhbGlkYXRlX2FycmF5XzQtMTAwLmEpOiBMaWtld2lzZS4KCShpY19pbnZhbGlkYXRlX2FycmF5XzQtMjAwLm8pOiBMaWtld2lzZS4KCSgkKFQpbGliaWNfaW52YWxpZGF0ZV9hcnJheV80LTIwMC5hKTogTGlrZXdpc2UuCgkoaWNfaW52YWxpZGF0ZV9hcnJheV80YS5vKTogTGlrZXdpc2UuCgkoJChUKWxpYmljX2ludmFsaWRhdGVfYXJyYXlfNGEuYSk6IExpa2V3aXNlLgoJKiBjb25maWcvc2gvdC1lbGYgKEVYVFJBX01VTFRJTElCX1BBUlRTKTogQWRkIElDX0VYVFJBX1BBUlRTLgoJKiBjb25maWcvc2gvZW1iZWQtZWxmLmggKExJQkdDQ19TUEVDKTogQWRkIGNsYXVzZXMgZm9yIG00LTEwMCosCgltNC0yMDAqLCBhbmQgbTRhKi4KCSogY29uZmlnL3NoL2NydDEuYXNtOiBNZXJnZWQgaW4gcHJvZmlsaW5nIGNvZGUuCgkqIGNvbmZpZy9zaC9zdXBlcmguaCAoU1RBUlRGSUxFX1NQRUMpOiBPdmVycmlkZS4KCSogY29uZmlnL3NoL3Qtc3VwZXJoOiBPdmVycmlkZSBFWFRSQV9NVUxUSUxJQl9QQVJUUy4KCUFkZCBydWxlcyBmb3IgJChUKWNydDEtbW11Lm8sICQoVClnY3J0MS1tbXUubyBhbmQgJChUKWdjcnQxLm8uCgkqIGNvbmZpZy5nY2MgKHNoKi1zdXBlcmgtZWxmKTogQWRkIHQtc3VwZXJoIHRvIHRtYWtlX2ZpbGUuCgoJKiB0LXNoIChNVUxUSUxJQl9NQVRDSEVTKTogQWRkIHNoNC1bMTI0NV0wMCogdmFyaWFudHMuCgkqIGNvbmZpZy9zaC90LXN1cGVyaDogUmVtb3ZlZCBub3ctcmVkdW5kYW50IE1VTFRJTElCX09QVElPTlMgLwoJTVVMVElMSUJfRElSTkFNRVMgLyBNVUxUSUxJQl9NQVRDSEVTIHNldHRpbmdzLgoKCSogc2gub3B0IChtcHJldGVuZC1jbW92ZSk6IE5ldyBvcHRpb24uCgkqIHNoLmggKE9QRVJSSURFX09QVElPTlMpOiBTd2l0Y2ggaXQgb2ZmIGlmIG5vdCBUQVJHRVRfU0gxLgoJKiBzaC5tZCAobW92c2ljY190X2ZhbHNlLCBtb3ZzaWNjX3RfdHJ1KTogTmV3IHBhdHRlcm5zLgoJKG1vdnNpY2MpOiBBZGQgVEFSR0VUX1BSRVRFTkRfQ01PVkUgY29kZS4KCjIwMDYtMDMtMjcgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLXByb3Rvcy5oIChzMzkwX2hhcmRfcmVnbm9fbW9kZV9vaywKCXMzOTBfY2xhc3NfbWF4X25yZWdzKTogTmV3IGZ1bmN0aW9uIHByb3RvdHlwZXMuCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoUkVHTk9fUEFJUl9PSyk6IE5ldyBtYWNyby4KCShzMzkwX2hhcmRfcmVnbm9fbW9kZV9vaywgczM5MF9jbGFzc19tYXhfbnJlZ3MpOiBOZXcgZnVuY3Rpb25zLgoJKiBjb25maWcvczM5MC9zMzkwLmggKEhBUkRfUkVHTk9fTlJFR1MsIEhBUkRfUkVHTk9fTU9ERV9PSywKCUNMQVNTX01BWF9OUkVHUyk6IE1hY3JvIGJvZGllcyByZXBsYWNlZCBieSBmdW5jdGlvbiBjYWxscy4KCjIwMDYtMDMtMjYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZHdhcmYyb3V0LmMgKGFkZF9sb2NhdGlvbl9vcl9jb25zdF92YWx1ZV9hdHRyaWJ1dGUpOiBDYWxsCgl0cmVlX2FkZF9jb25zdF92YWx1ZV9hdHRyaWJ1dGUgaWYgbm90aGluZyBlbHNlIHdvcmtzLgoJKHJlZmVyZW5jZV90b191bnVzZWQpOiBOZXcuCgkocnRsX2Zvcl9kZWNsX2luaXQpOiBVc2UgcmVmZXJlbmNlX3RvX3VudXNlZCB0byBkZWNpZGUgd2hldGhlcgoJdG8gb3V0cHV0IGFuIGluaXRpYWxpemVyLgoKMjAwNi0wMy0yNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiB0YXJnZXQvMjY0NTkKCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKERGIHJlZyBtb3ZlIHBlZXBob2xlKTogUHJldmVudAoJcGVlcGhvbGUgcmVtb3Zpbmcgc3BlIGZyb2JfZGlfZGZfMi4KCjIwMDYtMDMtMjYgIFNlYmFzdGlhbiBQb3AgIDxwb3BAY3JpLmVuc21wLmZyPgoKCSogdHJlZS1kYXRhLXJlZi5jOiBSZW5hbWUgRERSX1NJWkVfVkVDVCB0byBERFJfTkJfTE9PUFMuCgkoc3Vic2NyaXB0X2RlcGVuZGVuY2VfdGVzdGVyXzEpOiBEZWNsYXJlZC4KCShwcmludF9kaXJfdmVjdG9ycywgcHJpbnRfZGlzdF92ZWN0b3JzKTogTmV3LgoJKGRlYnVnX2RhdGFfZGVwZW5kZW5jZV9yZWxhdGlvbik6IE5ldy4KCShkdW1wX2RhdGFfZGVwZW5kZW5jZV9yZWxhdGlvbik6IFByaW50IG1vcmUgZGV0YWlscy4KCShpbml0aWFsaXplX2RhdGFfZGVwZW5kZW5jZV9yZWxhdGlvbik6IEluaXRpYWxpemUgRERSX0xPT1BfTkVTVC4KCShhbmFseXplX3N1YnNjcmlwdF9hZmZpbmVfYWZmaW5lKTogRG9uJ3QgSUNFIHdoZW4gZ2NkX2FscGhhX2JldGEgaXMgMC4KCShzYXZlX2Rpc3Rfdiwgc2F2ZV9kaXJfdiwgYWRkX291dGVyX2Rpc3RhbmNlcywKCWJ1aWxkX2NsYXNzaWNfZGlzdF92ZWN0b3JfMSk6IE5ldy4KCShidWlsZF9jbGFzc2ljX2Rpc3RfdmVjdG9yKTogUmV3cml0ZSB0byB3b3JrIG9uIEREUl9MT09QX05FU1QuCglEb24ndCB0ZXN0IGZvciBsYW1iZGFfdmVjdG9yX2xleGljb19wb3MuCgkoc2FtZV9hY2Nlc3NfZnVuY3Rpb25zLCBhZGRfbXVsdGl2YXJpYXRlX3NlbGZfZGlzdCwKCWFkZF9vdGhlcl9zZWxmX2Rpc3RhbmNlcywgZGlyX2Zyb21fZGlzdCk6IE5ldy4KCShidWlsZF9jbGFzc2ljX2Rpcl92ZWN0b3IpOiBSZXBsYWNlIGltcGxlbWVudGF0aW9uIGFsbW9zdCBpZGVudGljYWwgdG8KCWJ1aWxkX2NsYXNzaWNfZGlzdF92ZWN0b3Igd2l0aCBhIHdhbGsgb2YgRERSX0RJU1RfVkVDVFMgd2l0aCBhIGNhbGwgdG8KCWRpcl9mcm9tX2Rpc3QuCgkoc3Vic2NyaXB0X2RlcGVuZGVuY2VfdGVzdGVyXzEpOiBOZXcuCgkoc3Vic2NyaXB0X2RlcGVuZGVuY2VfdGVzdGVyKTogSGFuZGxlIHRoZSBsZXhpY29ncmFwaGljYWxseSBuZWdhdGl2ZQoJZGlzdGFuY2UgdmVjdG9ycyBieSByZWNvbXB1dGluZyB0aGUgZGVwZW5kZW5jZSByZWxhdGlvbi4KCShjb21wdXRlX2FmZmluZV9kZXBlbmRlbmNlKTogUmVtb3ZlIHBhcmFtZXRlciBsb29wX25lc3RfZGVwdGguCgkoY29tcHV0ZV9zZWxmX2RlcGVuZGVuY2UpOiBEb24ndCBjYWxsIGNvbXB1dGVfc3Vic2NyaXB0X2Rpc3RhbmNlLgoJKGNvbXB1dGVfYWxsX2RlcGVuZGVuY2VzKTogUmVtb3ZlIHBhcmFtZXRlcnMgbmJfbG9vcHMsIGxvb3BfbmVzdF9kZXB0aC4KCUFkZCBhIHBhcmFtZXRlciBmb3IgdGhlIGxvb3BfbmVzdC4KCShmaW5kX2xvb3BfbmVzdF8xLCBmaW5kX2xvb3BfbmVzdCk6IE5ldy4KCShjb21wdXRlX2RhdGFfZGVwZW5kZW5jZXNfZm9yX2xvb3ApOiBDb21wdXRlIHRoZSBsb29wIG5lc3QsIGFuZCBnaXZlCgl1cCBpZiB0aGUgbmVzdCBpcyBub3Qgd2VsbCBmb3JtZWQuCgkqIHRyZWUtZGF0YS1yZWYuaCAobG9vcF9wKTogTmV3LgoJKHN0cnVjdCBkYXRhX2RlcGVuZGVuY2VfcmVsYXRpb24pOiBSZXBsYWNlIHNpemVfdmVjdCBmaWVsZCB3aXRoCglsb29wX25lc3QsIGEgdmVjIG9mIGxvb3BzLgoJKEREUl9TSVpFX1ZFQ1QpOiBSZW5hbWVkIEREUl9OQl9MT09QUy4KCShERFJfTE9PUF9ORVNUKTogTmV3LgoJKHByaW50X2Rpcl92ZWN0b3JzLCBwcmludF9kaXN0X3ZlY3RvcnMsCglkZWJ1Z19kYXRhX2RlcGVuZGVuY2VfcmVsYXRpb24pOiBEZWNsYXJlZC4KCShpbmRleF9pbl9sb29wX25lc3QpOiBOZXcuCgkqIHRyZWUtdmVjdC1hbmFseXplLmMgKHZlY3RfYW5hbHl6ZV9kYXRhX3JlZl9kZXBlbmRlbmNlKTogVXNlCglERFJfTE9PUF9ORVNUIGFuZCBpbmRleF9pbl9sb29wX25lc3QgdG8gZGV0ZXJtaW5lIHRoZSBkZXBlbmRlbmNlCglkaXN0YW5jZS4KCjIwMDYtMDMtMjUgIEFkYW0gTmVtZXQgIDxhbmVtZXRAY2F2aXVtbmV0d29ya3MuY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0aW9uKTogQ2FsbAoJc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb25fMSBldmVuIGlmIG1vZGUgaXMgVk9JRG1vZGUuCgoyMDA2LTAzLTI1ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNjgwNAoJKiB0cmVlLmggKERFQ0xfQ0FMTF9DTE9CQkVSRUQpOiBOZXcgbWFjcm8uCgkodHJlZV9kZWNsX2NvbW1vbik6IEFkZCBjYWxsX2Nsb2JiZXJlZF9mbGFnLgoJKiB0cmVlLWZsb3ctaW5saW5lLmggKGlzX2NhbGxfY2xvYmJlcmVkKTogVXNlIERFQ0xfQ0FMTF9DTE9CQkVSRUQuCgkobWFya19jYWxsX2Nsb2JiZXJlZCk6IFNldCBERUNMX0NBTExfQ0xPQkJFUkVELgoJKGNsZWFyX2NhbGxfY2xvYmJlcmVkKTogQ2xlYXIgREVDTF9DQUxMX0NMT0JCRVJFRC4KCShtYXJrX25vbl9hZGRyZXNzYWJsZSk6IERpdHRvLgoJKiB0cmVlLXNzYS5jICh2ZXJpZnlfY2FsbF9jbG9iYmVyZWQpOiBOZXcgZnVuY3Rpb24uCgkodmVyaWZ5X2FsaWFzX2luZm8pOiBVc2UgaXQuCgkqIHRyZWUtcGFzcy5oIChwYXNzX3Jlc2V0X2NjX2ZsYWdzKTogTmV3IHByb3RvdHlwZS4KCSogdHJlZS1zc2EtYWxpYXMuYyAocGFzc19yZXNldF9jY19mbGFncyk6IE5ldyBzdHJ1Y3R1cmUuCgkocmVzZXRfY2NfZmxhZ3MpOiBOZXcgZnVuY3Rpb24uCgkqIHBhc3Nlcy5jIChpbml0X29wdGltaXphdGlvbl9wYXNzZXMpOiBDYWxsIHJlc2V0X2NjX2ZsYWdzIGFmdGVyCglpbml0aWFsaXppbmcgcmVmZXJlbmNlZF92YXJzLgoKMjAwNi0wMy0yNSAgVXJvcyBCaXpqYWsgIDx1cm9zQGtzcy1sb2thLnNpPgoJICAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMjY3MTcKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSkgW1JESVZfRVhQUl06IERvIG5vdCBvcHRpbWl6ZSBBIC8gQQoJdG8gMS4wIGZvciBub24tcmVhbCBvcGVyYW5kcy4gSW1wbGVtZW50IEEgLyBBIG9wdGltaXphdGlvbiBmb3IKCWNvbXBsZXggb3BlcmFuZHMuCgoyMDA2LTAzLTI1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKHNpemVfY29zdCk6IENvcnJlY3QgdGhlIGNvbW1lbnQgZm9yCgljb3N0IG9mIHN0b3JpbmcgZnAgcmVnaXN0ZXJzLgoJKGkzODZfY29zdCk6IExpa2V3aXNlLgoJKGk0ODZfY29zdCk6IExpa2V3aXNlLgoJKHBlbnRpdW1fY29zdCk6IExpa2V3aXNlLgoJKHBlbnRpdW1wcm9fY29zdCk6IExpa2V3aXNlLgoJKGs2X2Nvc3QpOiBMaWtld2lzZS4KCShhdGhsb25fY29zdCk6IExpa2V3aXNlLgoJKGs4X2Nvc3QpOiBMaWtld2lzZS4KCShwZW50aXVtNF9jb3N0KTogTGlrZXdpc2UuCgkobm9jb25hX2Nvc3QpOiBMaWtld2lzZS4KCShnZW5lcmljNjRfY29zdCk6IExpa2V3aXNlLgoJKGdlbmVyaWMzMl9jb3N0KTogTGlrZXdpc2UuCgoyMDA2LTAzLTI0ICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogY29uZmlnL2F2ci9hdnItcHJvdG9zLmggKGV4dHJhX2NvbnN0cmFpbnQpOiBEZWxldGUuCgkoZXh0cmFfY29uc3RyYWludF9RKTogTmV3IGRlY2xhcmF0aW9uLgoJKiBjb25maWcvYXZyL2NvbnN0cmFpbnRzLm1kOiBOZXcgZmlsZS4KCSogY29uZmlnL2F2ci9hdnIubWQ6IEluY2x1ZGUgaXQuCgkoUkVHX1gsIFJFR19ZLCBSRUdfWiwgUkVHX1cpOiBOZXcgY29uc3RhbnRzLgoJKFRNUF9SRUdOTywgWkVST19SRUdOTyk6IExpa2V3aXNlLgoJKFVOU1BFQ19TVFJMRU4sIFVOU1BFQ19JTkRFWF9KTVApOiBMaWtld2lzZS4KCSogY29uZmlnL2F2ci9hdnIuYyAoYXZyX3JlZ19jbGFzc19mcm9tX2xldHRlcik6IERlbGV0ZS4KCShleHRyYV9jb25zdHJhaW50KTogRGVsZXRlLgoJKGV4dHJhX2NvbnN0cmFpbnRfUSk6IFRlc3QgZm9yIG1lbW9yeSBjb25zdHJhaW50ICdRJy4KCSogY29uZmlnL2F2ci9hdnIuaCAoUkVHX1gsUkVHX1ksUkVHX1osUkVHX1cpOiBEZWxldGUuCgkoUkVHX0NMQVNTX0ZST01fTEVUVEVSKTogRGVsZXRlLgoJKENPTlNUX09LX0ZPUl9MRVRURVJfUCk6IERlbGV0ZS4KCShDT05TVF9ET1VCTEVfT0tfRk9SX0xFVFRFUl9QKTogRGVsZXRlLgoJKEVYVFJBX0NPTlNUUkFJTlQpOiBEZWxldGUuCgkoVE1QX1JFR05PKTogRGVsZXRlLgoJKFpFUk9fUkVHTk8pOiBEZWxldGUuCgoyMDA2LTAzLTI0ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtZG9tLmMgKHByb3BhZ2F0ZV9yaHNfaW50b19saHMpOiBEb24ndCBjYWxsIHVwZGF0ZV9zdG10CglkaXJlY3RseS4gIENhbGwgbWFya19uZXdfdmFyc190b19yZW5hbWUgc2xpZ2h0bHkgZWFybGllci4KCjIwMDYtMDMtMjQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZHdhcmYyb3V0LmMgKGlzX2NfZmFtaWx5KTogVW5kZXJzdGFuZCBuZXcgRFdBUkYzIGxhbmd1YWdlIHR5cGVzLgoJKGlzX2N4eCk6IExpa2V3aXNlLgoJKGdlbl9jb21waWxlX3VuaXRfZGllKTogVXNlIG5ldyBsYW5ndWFnZSB0eXBlcyBmb3IgT2JqZWN0aXZlLUMgYW5kCglPYmplY3RpdmUtQysrLgoJKGR3YXJmMm91dF9kZWNsKTogVXNlIGlzX2N4eCByYXRoZXIgdGhhbiB0ZXN0aW5nIGV4cGxpY2l0bHkgYWdhaW5zdAoJRFdfTEFOR19DX3BsdXNfcGx1cy4KCglQUiAyNjc5MwoJKiBjb25maWcvdC1kYXJ3aW4gKGNydDMubyk6IFdvcmsgYXJvdW5kIGJ1ZyAyNjg0MC4KCSogY29uZmlnL2Rhcndpbi1jcnQzLmM6IFJld3JpdGUuCgkqIGNvbmZpZy9kYXJ3aW4uaCAoU1RBUlRGSUxFX1NQRUMpOiBEb24ndCB1c2UgLWwgZm9yIGNydDMuby4KCjIwMDYtMDMtMjQgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtZmVtaXQtY2xhc3MtZGVidWctYWx3YXlzCgkqIGNvbW1vbi5vcHQ6IEFkZCAtZmVtaXQtY2xhc3MtZGVidWctYWx3YXlzLgoKMjAwNi0wMy0yNCAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAoczM5MF9kZWNvbXBvc2VfYWRkcmVzcyk6IEFsbG93IFNJbW9kZSBmb3IKCWluZGV4IGFuZCBiYXNlIHJlZ2lzdGVyLgoJKHMzOTBfZXhwYW5kX3BsdWdfb3BlcmFuZCwgbGVnaXRpbWF0ZV9hZGRyZXNzX3AsIHByZWZlcnJlZF9sYV9vcGVyYW5kX3AsCglwcmludF9vcGVyYW5kX2FkZHJlc3MsIHByaW50X29wZXJhbmQpOiBSZXBsYWNlZCBSRUdfT0tfRk9SX0JBU0VfU1RSSUNUX1AKCXdpdGggUkVHTk9fT0tfRk9SX0JBU0VfUCBhbmQgUkVHX09LX0ZPUl9JTkRFWF9TVFJJQ1RfUCB3aXRoCglSRUdOT19PS19GT1JfSU5ERVhfUC4KCSogY29uZmlnL3MzOTAvczM5MC5oIChSRUdOT19PS19GT1JfSU5ERVhfUCk6IFJlcGxhY2VkIGNoZWNrIHdpdGgKCUFERFJfUkVHTk9fUC4KCShSRUdfT0tfRk9SX0lOREVYX05PTlNUUklDVF9QLCBSRUdfT0tfRk9SX0JBU0VfTk9OU1RSSUNUX1AsCglSRUdfT0tfRk9SX0lOREVYX1NUUklDVF9QLCBSRUdfT0tfRk9SX0JBU0VfU1RSSUNUX1AsIFJFR19PS19GT1JfSU5ERVhfUCwKCVJFR19PS19GT1JfQkFTRV9QKTogRGVmaW5pdGlvbnMgcmVtb3ZlZC4KCjIwMDYtMDMtMjQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjY2MTEKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfYmluZF9leHByKTogT25seSBjYWxsIG9tcF9hZGRfdmFyaWFibGUgb24KCW5vbi1nbG9iYWwgdmFyaWFibGVzIHRoYXQgZG9uJ3QgaGF2ZSBERUNMX1NFRU5fSU5fQklORF9FWFBSX1AgYml0CglzZXQgeWV0IG9yIHdlcmVuJ3QgbWFya2VkIGFzIGxvY2FsIHlldC4KCjIwMDYtMDMtMjQgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiByZWdyZW5hbWUuYyAoc2Nhbl9ydHhfYWRkcmVzcyk6IEluaXRpYWxpemUgYSB2YXJpYWJsZSB0byBzaHV0IHVwCgl0aGUgY29tcGlsZXIuCgoyMDA2LTAzLTI0ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmggKHJzNjAwMF9vZmZzZXR0YWJsZV9tZW1yZWZfcCk6IERlY2xhcmUuCgkocnM2MDAwX2xlZ2l0aW1hdGVfc21hbGxfZGF0YV9wKTogRGVsZXRlLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfb2Zmc2V0dGFibGVfbWVtcmVmX3ApOiBOZXcgcHJlZGljYXRlLgoJKHJzNjAwMF9sZWdpdGltYXRlX3NtYWxsX2RhdGFfcCk6IFJlbmFtZSB0byBsZWdpdGltYXRlX3NtYWxsX2RhdGFfcAoJYW5kIG1ha2Ugc3RhdGljLiAgQWRkIGZvcndhcmQgZGVjbGFyYXRpb24uICBVcGRhdGUgdXNlcy4KCShyczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92ZSk6IFVzZSByczYwMDBfb2Zmc2V0dGFibGVfbWVtcmVmX3AgaW5zdGVhZAoJb2Ygb2Zmc2V0dGFibGVfbWVtcmVmX3AuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZkZl9oYXJkZmxvYXQzMik6IFJldmVydCAyMDA1LTA4LTIzIGZpeC4KCVVzZSByczYwMDBfb2Zmc2V0dGFibGVfbWVtcmVmX3AgaW5zdGVhZCBvZiBhIGxlc3MgYWNjdXJhdGUgcHJlZGljYXRlLgoKMjAwNi0wMy0yNCAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWRvbS5jIChwcm9wYWdhdGVfcmhzX2ludG9fbGhzKTogVGVtcG9yYXJpbHkgd29yawoJYXJvdW5kIGJ1ZyBpbiBpbW1lZGlhdGUtdXNlIGl0ZXJhdG9yLgoKMjAwNi0wMy0yNCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiB0YXJnZXQvMjY2MDcKCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4tbGRvdWJsZS5jOiBEb24ndCBjb21waWxlIHdoZW4gX19OT19GUFJTX18KCW9yIF9fTElUVExFX0VORElBTl9fLgoKMjAwNi0wMy0yMyAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN0LmNvbT4KCgkqIGNvbmZpZy9zaC9kaXZ0YWItc2g0LmMsIGNvbmZpZy9zaC9kaXZjb3N0LWFuYWx5c2lzOiBOZXcgZmlsZXMuCgkqIGNvbmZpZy9zaC9saWIxZnVuY3MuYXNtIChkaXZfdGFibGUpOiBBZGQgIV9fU0g1X18gdmFyaWFudC4KCSogY29uZmlnL3NoL3Qtc2ggKExJQjFBU01GVU5DUyk6IEFkZCBfZGl2X3RhYmxlLgoJKiBjb25maWcvc2gvc2gub3B0IChtZGl2PSk6IEFtZW5kIGRlc2NyaXB0aW9uLgoJKiBjb25maWcvc2gvc2guaCAoVEFSR0VUX0RJVklERV9DQUxMX0RJVjEpOiBOZXcgbWFjcm8uCgkoVEFSR0VUX0RJVklERV9DQUxMX0ZQLCBUQVJHRVRfRElWSURFX0NBTExfVEFCTEUpOiBMaWtld2lzZS4KCShzaF9kaXZpZGVfc3RyYXRlZ3lfZSk6IEFkZCBuZXcgbWVtYmVycyBTSF9ESVZfQ0FMTF9ESVYxLAoJU0hfRElWX0NBTExfRlAsIFNIX0RJVl9DQUxMX1RBQkxFIGFuZCBTSF9ESVZfSU5UUklOU0lDLgoJKE9WRVJSSURFX09QVElPTlMpOiBBbHNvIHByb2Nlc3Mgc2hfZGl2X3N0ciBmb3IgVEFSR0VUX1NIMS4KCUNhbGN1bGF0ZSBzaF9kaXZzaTNfbGliZnVuYyB1c2luZyBUQVJHRVRfRElWSURFXyogbWFjcm9zLgoJKiBjb25maWcvc2gvc2gubWQgKHVkaXZzaTNfaTRfaW50LCBkaXZzaTNfaTRfaW50KTogTmV3IHBhdHRlcm5zLgoJKHVkaXZzaTMsIGRpdnNpMyk6IFVzZSB0aGVtLiAgQ2hlY2sgVEFSR0VUX0RJVklERV9DQUxMX1RBQkxFIC8KCVRBUkdFVF9ESVZJREVfQ0FMTF9GUC4KCjIwMDYtMDMtMjMgIE1heGltIEt1dnlya292ICA8bWt1dnlya292QGlzcHJhcy5ydT4KCgkqIGhhaWZhLXNjaGVkLmMgKGNob29zZV9yZWFkeSk6IEZpeCB0eXBlIG9mIHRoZSBsb2NhbCB2YXJpYWJsZS4KCU1vdmUgbG9jYWwgdmFyaWFibGVzLiAgQWRkIGNvbW1lbnQuCgkoY2hlY2tfcmVnX2xpdmUpOiBDaGFuZ2Ugc2lnbmF0dXJlLiAgTWFrZSBjYWxsYWJsZSBmcm9tIGRlYnVnZ2VyLgoJKiBzY2hlZC1pbnQuaCAoY2hlY2tfcmVnX2xpdmUpOiBVcGRhdGUgc2lnbmF0dXJlLgoJKiBzY2hlZC1lYmIuYyAoY2hlY2tfcmVnX2xpdmUpOiBVcGRhdGUgcGFyYW1ldGVycy4KCSogc2NoZWQtcmduLmMgKGNoZWNrX3JlZ19saXZlKTogRGl0dG8uCgkocmVnaW9uX2hlYWRfb3JfbGVhZl9wKTogQ2hlY2sgcG9pbnRlciBiZWZvcmUgZGVyZWZlcmVuY2luZy4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3NldF9zY2hlZF9mbGFncyk6IERpc2FibGUgZGF0YSBzcGVjdWxhdGlvbgoJYmVmb3JlIHJlbG9hZCBvbiBvcHRpbWl6YXRpb24gbGV2ZWxzIGJlbG93IDEuCgoyMDA2LTAzLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKGFscGhhX2xlZ2l0aW1hdGVfY29uc3RhbnRfcCk6IFJlamVjdAoJdGxzIHN5bWJvbHMuCgoJUFIgdGFyZ2V0LzI2MzQ3CgkqIGNvbmZpZy9hbHBoYS9wcmVkaWNhdGVzLm1kIChsb2NhbF9zeW1ib2xpY19vcGVyYW5kKTogUmVqZWN0Cgl3ZWFrIHN5bWJvbHMuCgoyMDA2LTAzLTIzICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0cmVlLW9wdC8yNjc5NQoJKiB0cmVlLXNzYS1wcmUuYyAoY3JlYXRlX3ZhbHVlX2V4cHJfZnJvbSk6IERvbid0IHJlamVjdAoJZXhwcmVzc2lvbnMgd2hpY2ggaGF2ZSBvdmVyZmxvd2VkIGNvbnN0YW50cy4KCjIwMDYtMDMtMjMgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCgkqIGNzZS5jIChjc2VfZW5kX29mX2Jhc2ljX2Jsb2NrKTogRG8gbm90IGNoZWNrIGZvciBMT09QX0VORCBub3RlLgoKMjAwNi0wMy0yMyAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogY2ZnbG9vcG1hbmlwLmMgKGNyZWF0ZV9sb29wX25vdGVzKTogUmVtb3ZlZC4KCSogZmluYWwuYyAoZmluYWxfc2Nhbl9pbnNuKTogRG8gbm90IGhhbmRsZSBsb29wIG5vdGVzLgoJKiBqdW1wLmMgKHNxdWVlemVfbm90ZXMpOiBEaXR0by4KCSogY2ZnbGF5b3V0LmMgKHNraXBfaW5zbnNfYWZ0ZXJfYmxvY2ssCglkdXBsaWNhdGVfaW5zbl9jaGFpbik6IERpdHRvLgoJKiBjZmdjbGVhbnVwLmMgKHJlc3Rfb2ZfaGFuZGxlX2p1bXAyKTogRG8gbm90IGNhbGwKCWNyZWF0ZV9sb29wX25vdGVzLgoJKiBjZmdsb29wLmggKGNyZWF0ZV9sb29wX25vdGVzKTogRGVjbGFyYXRpb24gcmVtb3ZlZC4KCjIwMDYtMDMtMjMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogdmFyYXNtLmMgKG91dHB1dF9jb25zdGFudF9wb29sKTogUmVzdG9yZSBmbm5hbWUgYW5kIGZuZGVjbAoJYXJndW1lbnRzLgoJKGFzc2VtYmxlX3N0YXJ0X2Z1bmN0aW9uKTogQWRqdXN0IGNhbGwgYWNjb3JkaW5nbHkuCgkoYXNzZW1ibGVfZW5kX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgoyMDA2LTAzLTIyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIG11ZGZsYXAvMjY3ODkKCSogdHJlZS1tdWRmbGFwLmMgKG11ZGZsYXBfZmluaXNoX2ZpbGUpOiBTa2lwIGVycm9uZW91cyBvYmplY3RzLgoKCVBSIG11ZGZsYXAvMjY3OTAKCSogdHJlZS1tdWRmbGFwLmMgKG1mX3hmb3JtX2RlcmVmc18xKTogUmV0dXJuIGVhcmx5IG9uIGVycm9yX21hcmtfbm9kZS4KCjIwMDYtMDMtMjIgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgZHJpdmVyLzIyNjAwCgkqIHN5c3RlbS5oIChJQ0VfRVhJVF9DT0RFKTogTmV3IG1hY3JvLgoJKiBkaWFnbm9zdGljLmMgKGRpYWdub3N0aWNfY291bnRfZGlhZ25vc3RpYyk6IEV4aXQgd2l0aCBJQ0VfRVhJVF9DT0RFLgoJKGRpYWdub3N0aWNfYWN0aW9uX2FmdGVyX291dHB1dCk6IExpa2V3aXNlLgoJKiBnY2MuYyAoZmF0YWxfaWNlKTogTmV3IGZ1bmN0aW9uLgoJKGV4ZWN1dGUpOiBVc2UgaXQgaW5zdGVhZCBvZiBmYXRhbC4KCShmYW5jeV9hYm9ydCk6IExpa2V3aXNlLgoJKiBkb2MvaW52b2tlLnRleGkgKC1wYXNzLWV4aXQtY29kZXMpOiBEb2N1bWVudCByZXR1cm4gY29kZSBmb3IgSUNFcy4KCjIwMDYtMDMtMjIgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiBsb29wLXVucm9sbC5jIChhbmFseXplX2l2X3RvX3NwbGl0X2luc24pOiBIYW5kbGUKCWl2X2FuYWx5emVfcmVzdWx0IHJldHVybmluZyBmYWxzZS4KCjIwMDYtMDMtMjIgIEppZSBaaGFuZyAgPGppZS56aGFuZ0BhbmFsb2cuY29tPgoKCSogY29uZmlnL2JmaW4vYmZpbi5oIChBU01fRk9STUFUX1BSSVZBVEVfTkFNRSk6IFJlbW92ZS4KCjIwMDYtMDMtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNjA4NAoJKiBleGNlcHQuYyAoZHVwbGljYXRlX2VoX3JlZ2lvbnNfMCk6IE5ldy4KCShkdXBsaWNhdGVfZWhfcmVnaW9uXzEpOiBEdXBsaWNhdGUgdGhlIGNoaWxkcmVuIG9mIHRoZSBub2RlIGFzCgl3ZWxsIGFzIHRoZSBub2RlIGl0c2VsZi4gIExpbmsgdGhlbSB1cCBwcm9wZXJseS4KCShkdXBsaWNhdGVfZWhfcmVnaW9uXzIpOiBNZXJnZSBpbnRvIC4uLgoJKGR1cGxpY2F0ZV9laF9yZWdpb25zKTogLi4uIGhlcmUuICBUYWtlIGNvcHlfcmVnaW9uIGFyZ3VtZW50LCBhbmQKCWNvcHkgb25seSBhIHN1Yi10cmVlIGlmIGFza2VkLiAgU2ltcGxpZnkgY29weWluZyBhbmQgZml4dXAuCgkoZWhfcmVnaW9uX291dGVyX3ApOiBOZXcuCgkqIGV4Y2VwdC5oIChkdXBsaWNhdGVfZWhfcmVnaW9ucyk6IFVwZGF0ZSBkZWNsLgoJKGVoX3JlZ2lvbl9vdXRlcl9wKTogRGVjbGFyZS4KCSogb21wLWxvdy5jIChsb3dlcl9vbXBfc2luZ2xlKTogRml4IGVoIHJlZ2lvbiBwbGFjZW1lbnQgd3J0IE9NUF9SRVRVUk4uCgkobG93ZXJfb21wX21hc3Rlcik6IExpa2V3aXNlLgoJKGxvd2VyX29tcF9vcmRlcmVkKTogTGlrZXdpc2UuCgkqIHRyZWUtY2ZnLmMgKHN0cnVjdCBtb3ZlX3N0bXRfZCk6IEFkZCBuZXdfbGFiZWxfbWFwLgoJKG1vdmVfc3RtdF9yKTogVXNlIGl0IHRvIHJlbWFwIGxhYmVscy4gIEhhbmRsZSByZWN1cnNpb24gdnMKCXJlbWFwX2RlY2xzX3AgcHJvcGVybHkuCgkobW92ZV9ibG9ja190b19mbik6IFBhc3MgaW4gbmV3X2xhYmVsX21hcC4gIFJlbWFwIFJFU1hfRVhQUi4KCShmaW5kX291dGVybW9zdF9yZWdpb25faW5fYmxvY2spOiBOZXcuCgkobmV3X2xhYmVsX21hcHBlcik6IE5ldy4KCShtb3ZlX3Nlc2VfcmVnaW9uX3RvX2ZuKTogQ29weSBlaCBpbmZvcm1hdGlvbiB0byB0aGUgbmV3IGZ1bmN0aW9uCglwcm9wZXJseS4KCSogdHJlZS1pbmxpbmUuYyAoY29weV9jZmdfYm9keSk6IFVwZGF0ZSBmb3IgbmV3IGR1cGxpY2F0ZV9laF9yZWdpb25zCglhcmd1bWVudC4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpOiBEdW1wIFJFU1hfRVhQUiByZWdpb24KCW51bWJlci4KCjIwMDYtMDMtMjIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL21kLnRleGkgKC1tc2hhcmVkKTogTWVudGlvbiB0aGF0IC1tc2hhcmVkIGNvZGUgY2FuIGJlIGxpbmtlZAoJaW50byBzaGFyZWQgbGlicmFyaWVzLgoKMjAwNi0wMy0yMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvbWQudGV4aTogUmVmZXIgdG8gaTM4Ni9jb25zdHJhaW50cy5tZCBpbnN0ZWFkIG9mCglpMzg2L3ByZWRpY2F0ZXMubWQuCgkqIGNvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kOiBOZXcgZmlsZSwgZXh0cmFjdGVkIGZyb20uLi4KCSogY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZDogLi4uaGVyZS4KCSogY29uZmlnL2kzODYvaTM4Ni5tZDogSW5jbHVkZSBjb25zdHJhaW50cy5tZC4KCjIwMDYtMDMtMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW5fZm9ya19vcl9leGVjKTogRml4IHBhc3RvLgoKCVBSIG1pZGRsZS1lbmQvMjAyOTcKCSogZXhwci5jIChpbml0X2Jsb2NrX21vdmVfZm4pOiBGb3JjZSBkZWZhdWx0IHZpc2liaWxpdHkuCgkoaW5pdF9ibG9ja19jbGVhcl9mbik6IExpa2V3aXNlLgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9mb3JrX29yX2V4ZWMpOiBMaWtld2lzZS4KCSogdGFyZ2hvb2tzLmMgKGRlZmF1bHRfZXh0ZXJuYWxfc3RhY2tfcHJvdGVjdF9mYWlsKTogTGlrZXdpc2UuCgoyMDA2LTAzLTIxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL3ByZWRpY2F0ZXMubWQgKGNvbnN0X2NhbGxfaW5zbl9vcGVyYW5kKTogQWxsb3cgZGlyZWN0CgljYWxscyB0byBsb2NhbGx5LWRlZmluZWQgZnVuY3Rpb25zIGlmIFRBUkdFVF9BQlNPTFVURV9BQklDQUxMUy4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoamFsX21hY3JvKTogVGVzdCBUQVJHRVRfQUJTT0xVVEVfQUJJQ0FMTFMuCglVc2UgVEFSR0VUX09MREFCSSBpbnN0ZWFkIG9mICFUQVJHRVRfTkVXQUJJLgoJKGxvYWRncCk6IFVzZSBtaXBzX2N1cnJlbnRfbG9hZGdwX3N0eWxlLgoJKGxvYWRncF9ub3NoYXJlZCk6IE5ldyBwYXR0ZXJuLgoJKHNpYmNhbGxfaW50ZXJuYWwpOiBVc2UgTUlQU19DQUxMLgoJKHNpYmNhbGxfdmFsdWVfaW50ZXJuYWwpOiBMaWtld2lzZS4KCShzaWJjYWxsX3ZhbHVlX211bHRpcGxlX2ludGVybmFsKTogTGlrZXdpc2UuCgkoY2FsbF9pbnRlcm5hbCk6IExpa2V3aXNlLgoJKGNhbGxfdmFsdWVfaW50ZXJuYWwpOiBMaWtld2lzZS4KCShjYWxsX3ZhbHVlX211bHRpcGxlX2ludGVybmFsKTogTGlrZXdpc2UuCgkoY2FsbF9zcGxpdCk6IFVzZSBNSVBTX0NBTEwgYW5kIGFkZCBhbiAnUycgY29uc3RyYWludC4KCShjYWxsX3ZhbHVlX3NwbGl0KTogTGlrZXdpc2UuCgkoY2FsbF92YWx1ZV9tdWx0aXBsZV9zcGxpdCk6IExpa2V3aXNlLgoJKiBjb25maWcvbWlwcy9taXBzLm9wdCAoLW1hYmljYWxscyk6IFR3ZWFrIGRvY3N0cmluZy4KCSgtbXNoYXJlZCk6IE5ldyBvcHRpb24uCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfbG9hZGdwX3N0eWxlKTogTmV3IGVudW0uCgkobWlwc19jdXJyZW50X2xvYWRncF9zdHlsZSk6IERlY2xhcmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19jbGFzc2lmeV9zeW1ib2wpOiBBdm9pZCB1c2luZwoJU1lNQk9MX0dPVF9MT0NBTCBpZiBUQVJHRVRfQUJTT0xVVEVfQUJJQ0FMTFMuICBVc2UgU1lNQk9MX0dFTkVSQUwKCXJhdGhlciB0aGFuIFNZTUJPTF9HT1RfR0xPQkFMIGZvciBsb2NhbGx5LWJpbmRpbmcgc3ltYm9scyBpZgoJVEFSR0VUX0FCU09MVVRFX0FCSUNBTExTLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBBZGp1c3QgY29tbWVudHMuICBJbXByb3ZlIHRoZSB3YXJuaW5nIHRoYXQgaXMKCWlzc3VlZCB3aGVuIC1tYWJpY2FsbHMgYW5kIC1HIGFyZSB1c2VkIHRvZ2V0aGVyLgoJKG1pcHNfZmlsZV9zdGFydCk6IFJlbW92ZSBjb21tZW50LgoJKG1pcHNfY3VycmVudF9sb2FkZ3Bfc3R5bGUpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19nbnVfbG9jYWxfZ3ApOiBOZXcgdmFyaWFibGUuCgkobWlwc19lbWl0X2xvYWRncCk6IFVzZSBtaXBzX2N1cnJlbnRfbG9hZGdwX3N0eWxlLiAgSGFuZGxlCglMT0FER1BfQUJTT0xVVEUuCgkobWlwc19vdXRwdXRfZnVuY3Rpb25fcHJvbG9ndWUpOiBVc2UgbWlwc19jdXJyZW50X2xhb2RncF9zdHlsZS4KCShtaXBzX2V4cGFuZF9wcm9sb2d1ZSk6IENhbGwgbWlwc19lbWl0X2xvYWRncCBiZWZvcmUgZW1pdHRpbmcKCXRoZSBjcHJlc3RvcmUgaW5zdHJ1Y3Rpb24uCgkobWlwc19leHRyYV9saXZlX29uX2VudHJ5KTogRml4IHJldmVyc2VkIHRlc3QuICBEb24ndCBtYWtlICQyNQoJbGl2ZSBmb3IgVEFSR0VUX0FCU09MVVRFX0FCSUNBTExTLgoJKiBjb25maWcvbWlwcy9taXBzLmggKFRBUkdFVF9BQlNPTFVURV9BQklDQUxMUyk6IE5ldyBtYWNyby4KCShBU01fU1BFQyk6IFBhc3MgZG93biAtbXNoYXJlZCBhbmQgLW1uby1zaGFyZWQuCgkoTUlQU19DQUxMKTogTmV3IG1hY3JvLgoJKiBjb25maWcvbWlwcy9uZXRic2QuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IFJlbW92ZSBfX0FCSUNBTExTX18KCWRlZmluaXRpb24uCgkqIGRvYy9pbnZva2UudGV4aSAoLW1hYmljYWxscyk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKC1tc2hhcmVkKTogRG9jdW1lbnQuCgoyMDA2LTAzLTIxICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCgkqIGNvbmZpZy9pYTY0L3Vud2luZC1ocHV4LmM6IE5ldyBmaWxlLgoJKiBjb25maWcvaWE2NC90LWhwdXg6IEFkZCB1bndpbmQtaHB1eC5jIHRvIGxpYmdjYy4KCjIwMDYtMDMtMjEgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCVBSIGxpYmdvbXAvMjYzODQKCSogY29uZmlnL3BhL3BhNjQtaHB1eC5oIChMSUJfU1BFQyk6IEZpeCBmb3IgLW10IGFuZCAtcHRocmVhZCBvcHRpb25zLgoKMjAwNi0wMy0yMSAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtdnJwLmMgKGV4dHJhY3RfcmFuZ2VfZnJvbV91bmFyeV9leHByKTogRGVyaXZlIHJhbmdlcyBmb3IKCXR5cGUgY29udmVyc2lvbnMgb2YgYSBWUl9WQVJZSU5HIHNvdXJjZSB0byBhIHdpZGVyIHR5cGUuCgoyMDA2LTAzLTIxICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnLmdjYyAoaVszNDU2N104Ni0qLXNvbGFyaXMyKik6IEFkZCBjb25maWcvc29sMi0xMC5oIHRvCgl0bV9maWxlIG9uIFNvbGFyaXMgMTAgYW5kIGxhdGVyLgoJKHNwYXJjNjQtKi1zb2xhcmlzMiopOiBMaWtld2lzZS4KCShzcGFyYy0qLXNvbGFyaXMyKik6IExpa2V3aXNlLgoJKiBjb25maWcvc29sMjYuaDogUmVuYW1lIHRvIGNvbmZpZy9zb2wyLTYuaC4KCSogY29uZmlnL3NvbDItMTAuaDogTmV3IGZpbGUuCgoyMDA2LTAzLTIxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0cmVlLW9wdC8yNjc4MQoJKiB0cmVlLXNzYS1wcmUuYyAoY3JlYXRlX2NvbXBvbmVudF9yZWZfYnlfcGllY2VzKToKCUhhbmRsZSBTVFJJTkdfQ1NULgoKMjAwNi0wMy0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzI2NjkwCgkqIHRyZWUuYyAoZ2V0X2NhbGxlZV9mbmRlY2wpOiBJZiBDQUxMIGlzIGVycm9yX21hcmtfbm9kZSwKCXJldHVybiBpdCBpbW1lZGlhdGVseS4KCjIwMDYtMDMtMjEgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCgkqIGdlbmF1dG9tYXRhLmMgKDxzdHJ1Y3Qgc3RhdGU+LCBudW1fb3V0X2FyY3MsIHByZXNlbmNlX3NpZ25hdHVyZSk6CglOZXcgbWVtYmVycy4KCShyZW1vdmVfYXJjLCBhZGRfYXJjKTogVXBkYXRlIG51bV9vdXRfYXJjcyBtZW1iZXIuCgkoc2V0X291dF9hcmNfaW5zbnNfZXF1aXZfbnVtKTogUmV0dXJucyBub3RoaW5nIGluc3RlYWQgb2YgbnVtYmVyCglvZiBvdXQgYXJjcy4KCShjYWNoZV9wcmVzZW5jZSk6IE5ldyBmdW5jdGlvbi4KCShjb21wYXJlX3N0YXRlc19mb3JfZXF1aXYpOiBOZXcgZnVuY3Rpb24uCgkoc3RhdGVfaXNfZGlmZmVyZWQpOiBEb24ndCB0YWtlIG51bWJlciBvZiBvdXRhcmdzLCBhZGp1c3QgY2FsbGVycy4KCVVzZSBuZXcgaW52YXJpYW50IGZvciBzcGVlZGluZyB1cC4KCShpbml0X2VxdWl2X2NsYXNzKTogQ3JlYXRlIGluaXRpYWwgY2xhc3NlcyBiYXNlZCBvbiBzb3J0ZWQKCWlucHV0LgoJKHBhcnRpdGlvbl9lcXVpdl9jbGFzcyk6IERvbid0IHRyYWNrIG91dF9hcmNzX251bS4KCShldmFsdWF0ZV9lcXVpdl9jbGFzc2VzKTogQ2FsbCBjYWNoZV9wcmVzZW5jZSBvbiBhbGwgc3RhdGVzIGFuZAoJc29ydCB0aGVtLgoKMjAwNi0wMy0yMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL2JmaW4tcHJvdG9zLmggKGJmaW5fZHNwX21lbXJlZl9wKTogRGVjbGFyZS4KCSogY29uZmlnL2JmaW4vYmZpbi5jIChiZmluX2RzcF9tZW1yZWZfcCk6IE5ldyBmdW5jdGlvbi4KCShiZmluX3ZhbGlkX3JlZ19wKTogVGVzdCBmb3IgcHNldWRvcyBleHBsaWNpdGx5IGFuZCB1c2Ugb25seQoJUkVHTk9fTU9ERV9DT0RFX09LX0ZPUl9CQVNFX1AuICBOZXcgYXJncyBNT0RFIGFuZCBPVVRFUl9DT0RFOyBhbGwKCWNhbGxlcnMgY2hhbmdlZC4KCSogY29uZmlnL2JmaW4vYmZpbi5oIChQUkVHX1ApOiBVc2UgUF9SRUdOT19QLgoJKElSRUdfUCwgUF9SRUdOT19QLCBJX1JFR05PX1ApOiBOZXcgbWFjcm9zLgoJKGVudW0gcmVnX2NsYXNzLCBSRUdfQ0xBU1NfQ09OVEVOVFMpOiBBZGQgSVBSRUdTLgoJKEJBU0VfUkVHX0NMQVNTLCBSRUdfT0tfRk9SX0JBU0VfUCwgUkVHX09LX0ZPUl9JTkRFWF9QLAoJUkVHTk9fT0tfRk9SX0JBU0VfU1RSSUNUX1AsIFJFR05PX09LX0ZPUl9CQVNFX05PTlNUUklDVF9QKTogRGVsZXRlCgltYWNyb3MuCgkoSVJFR19QT1NTSUJMRV9QLCBNT0RFX0NPREVfQkFTRV9SRUdfQ0xBU1MsCglSRUdOT19NT0RFX0NPREVfT0tfRk9SX0JBU0VfUCk6IE5ldyBtYWNyb3MuCgkoUkVHTk9fUkVHX0NMQVNTKTogQVJHUCBpcyBpbiBQUkVHUy4KCSogY29uZmlnL2JmaW4vYmZpbi5tZCAobW92aGlfaW5zbik6IEFsbG93IGZvciBhZGRyZXNzZXMgY29udGFpbmluZwoJSVJFR1MuCgkoemVyb19leHRlbmRoaXNpMiwgZXh0ZW5kaGlzaTIpOiBMaWtld2lzZTsgY2hhbmdlZCB0byBkZWZpbmVfYW5kX3NwbGl0Cgl0byBkZWFsIHdpdGggdGhvc2UgYWRkcmVzc2VzLgoJKiBhZGRyZXNzZXMuaDogTmV3IGZpbGUuCgkqIGNhbGxlci1zYXZlLmM6IEluY2x1ZGUgImFkZHJlc3Nlcy5oIi4KCShpbml0X2NhbGxlcl9zYXZlKTogVXNlIG5ldyBiYXNlX3JlZ19jbGFzcyBmdW5jdGlvbi4KCSogcnRsLWZhY3RvcmluZy5jOiBJbmNsdWRlICJhZGRyZXNzZXMuaCIuCgkocmVjb21wdXRlX2dhaW5fZm9yX3BhdHRlcm5fc2VxKTogVXNlIG5ldyBmdW5jdGlvbiBva19mb3JfYmFzZV9wXzEuCgkqIHJlY29nLmM6IEluY2x1ZGUgImFkZHJlc3Nlcy5oIi4KCShwcmVwcm9jZXNzX2NvbnN0cmFpbnRzKTogVXNlIG5ldyBiYXNlX3JlZ19jbGFzcyBmdW5jdGlvbi4KCSogcmVncmVuYW1lLmM6IEluY2x1ZGUgImFkZHJlc3Nlcy5oIi4KCShzY2FuX3J0eF9hZGRyZXNzKTogVXNlIG5ldyByZWdub19va19mb3JfYmFzZV9wIGFuZCBiYXNlX3JlZ19jbGFzcwoJZnVuY3Rpb25zLiAgS2VlcCB0cmFjayBvZiBhIG5ldyB2YXIgSU5ERVhfQ09ERSB0byBjb21wdXRlIHZhbGlkCgljbGFzc2VzLgoJKHJlcGxhY2Vfb2xkZXN0X3ZhbHVlX2FkZHIpOiBMaWtld2lzZS4KCShyZXBsYWNlX29sZGVzdF92YWx1ZV9tZW0pOiBVc2UgYmFzZV9yZWdfY2xhc3MuCgkqIHJlbG9hZC5jOiBJbmNsdWRlICJhZGRyZXNzZXMuaCIuCgkoUkVHTk9fTU9ERV9PS19GT1JfQkFTRV9QLCBSRUdfTU9ERV9PS19GT1JfQkFTRV9QKTogRGVsZXRlIG1hY3Jvcy4KCShmaW5kX3JlbG9hZHMpOiBVc2UgbmV3IGJhc2VfcmVnX2NsYXNzIGZ1bmN0aW9uLgoJKGZpbmRfcmVsb2Fkc19hZGRyZXNzKTogTGlrZXdpc2U7IGFsc28gdXNlIHJlZ25vX29rX2Zvcl9iYXNlX3AuCgkoZmluZF9yZWxvYWRzX2FkZHJlc3NfMSk6IExpa2V3aXNlLiBOZXcgYXJncyBPVVRFUl9DT0RFIGFuZCBJTkRFWF9DT0RFOwoJYWxsIGNhbGxlcnMgYW5kIHByb3RvdHlwZSBjaGFuZ2VkLgoJKiByZWxvYWQxLmM6IEluY2x1ZGUgImFkZHJlc3Nlcy5oIi4KCShtYXliZV9maXhfc3RhY2tfYXNtcyk6IFVzZSBiYXNlX3JlZ19jbGFzcy4KCSogcmVnY2xhc3MuYzogSW5jbHVkZSAiYWRkcmVzc2VzLmgiLgoJKG9rX2Zvcl9pbmRleF9wX25vbnN0cmljdCwgb2tfZm9yX2Jhc2VfcF9ub25zdHJpY3QpOiBOZXcgZnVuY3Rpb25zLgoJKGluaXRfcmVnX2F1dG9pbmMpOiBVc2UgbmV3IGJhc2VfcmVnX2NsYXNzIGZ1bmN0aW9uLgoJKHJlY29yZF9yZWdfY2xhc3Nlcyk6IExpa2V3aXNlLgoJKHJlY29yZF9hZGRyZXNzX3JlZ3MpOiBEZWxldGUgYXJnIENMQVNTOyBhZGQgYXJncyBDT05URVhULCBNT0RFLAoJT1VURVJfQ09ERSBhbmQgSU5ERVhfQ09ERS4gIEFsbCBjYWxsZXJzIGFuZCBwcm90b3R5cGUgY2hhbmdlZC4KCVVzZSBuZXcgYXJncyB0byBjb21wdXRlIG5lY2Vzc2FyeSBjbGFzcy4KCgkqIE1ha2VmaWxlLmluIChyZWdjbGFzcy5vLCByZWxvYWQubywgcmVsb2FkMS5vLCBjYWxsZXItc2F2ZS5vLCByZWNvZy5vLAoJcmVncmVuYW1lLm8sIHJ0bC1mYWN0b3Jpbmcubyk6IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkqIGRvYy90bS50ZXhpIChNT0RFX0NPREVfQkFTRV9SRUdfQ0xBU1MpOiBEb2N1bWVudC4KCShSRUdOT19NT0RFX0NPREVfT0tfRk9SX0JBU0VfUCk6IExpa2V3aXNlLgoJKFJFR19PS19GT1JfQkFTRV9QLCBSRUdfTU9ERV9PS19GT1JfQkFTRV9QLCBSRUdfTU9ERV9PS19GT1JfUkVHX0JBU0VfUCwKCVJFR19PS19GT1JfSU5ERVhfUCk6IERlbGV0ZSBkb2N1bWVudGF0aW9uLgoKMjAwNi0wMy0yMSAgQWxleGV5IFN0YXJvdm95dG92ICA8YWxleGV5LnN0YXJvdm95dG92QHN1bi5jb20+CgoJKiBjb25maWcuZ2NjIChzcGFyYy0qLXNvbGFyaXMyKik6IENoYW5nZSB0aGUgZGVmYXVsdCBDUFUgc2V0dGluZwoJZnJvbSBWNyB0byBWOSBmb3IgU29sYXJpcyA3IGFuZCBhYm92ZS4KCjIwMDYtMDMtMjEgIFRvb24gTW9lbmUgIDx0b29uQG1vZW5lLmluZGl2Lm5sdXVnLm5sPgoKCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCBuZXcgZmxhZyAtZmFyZ3VtZW50LW5vYWxpYXMtYW55dGhpbmcuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKG1heV9hbGlhc19wKTogSWYgZmxhZ19hcmd1bWVudF9ub2FsaWFzID4gMiwKCWFyZ3VtZW50IHBvaW50ZXJzIG1heSBub3QgYWxpYXMgYW55IG90aGVyIHN0b3JhZ2UuCgkqIGNvbW1vbi5vcHQ6IERlZmluZSBvcHRpb24gLWZhcmd1bWVudC1ub2FsaWFzLWFueXRoaW5nLgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChpbnRyYV9jcmVhdGVfdmFyaWFibGVfaW5mb3MpOiBGb3J0cmFuCglhbGlhcyBzZW1hbnRpY3MgaXMgc3BlY2lmaWVkIGJ5IGZsYWdfYXJndW1lbnRfbm9hbGlhcyA+IDIuCgoyMDA2LTAzLTIwICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1wYXNzLmggKHBhc3NfcGhpX29ubHlfY29weV9wcm9wKTogRGVsZXRlLgoJKHBhc3NfcGhpX29ubHlfY3Byb3ApOiBEZWNsYXJlLgoJKiBwYXNzZXMuYyAoaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzKTogUmVwbGFjZSBwYXNzX3BoaV9vbmx5X2NvcHlfcHJvcAoJd2l0aCBwaGlfb25seV9jcHJvcAoJKiB0cmVlLXNzYS1kb20uYyAoZGVnZW5lcmF0ZV9waGlfcmVzdWx0KTogTmV3IGZ1bmN0aW9uLgoJKHJlbW92ZV9zdG10X29yX3BoaSwgZ2V0X2xoc19vcl9waGlfcmVzdWx0KTogTGlrZXdpc2UuCgkoZ2V0X3Joc19vcl9waGlfYXJnLCBwcm9wYWdhdGVfcmhzX2ludG9fbGhzKTogTGlrZXdpc2UuCgkoZWxpbWluYXRlX2NvbnN0X29yX2NvcHksIGVsaW1pbmF0ZV9kZWdlbmVyYXRlX3BoaXNfMSk6IExpa2V3aXNlLgoJKGVsaW1pbmF0ZV9kZWdlbmVyYXRlX3BoaXMpOiBMaWtld2lzZS4KCShwYXNzX3BoaV9vbmx5X2Nwcm9wKTogTmV3IHBhc3MgZGVzY3JpcHRvci4KCSogdHJlZS1zc2EtY29weS5jIChpbml0X2NvcHlfcHJvcCk6IExvc2UgUEhJU19PTkxZIGFyZ3VtZW50IGFuZAoJc3VwcG9ydCBjb2RlLiAgQ2FsbGVycyB1cGRhdGVkLgoJKGV4ZWN1dGVfY29weV9wcm9wLCBkb19jb3B5X3Byb3ApOiBMaWtld2lzZSBhbmQgY29ycmVzcG9uZGluZyBjaGFuZ2VzLgoJKHN0b3JlX2NvcHlfcHJvcCk6IExpa2V3aXNlLgoJKGRvX3BoaV9vbmx5X2NvcHlfcHJvcCwgcGFzc19waGlfb25seV9jb3B5X3Byb3ApOiBSZW1vdmUuCgoyMDA2LTAzLTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjE3NjQKCSogYy1wcmFnbWEuYyAodmlzc3RhY2spOiBNb3ZlIG91dCBvZiBoYW5kbGVfcHJhZ21hX3Zpc2liaWxpdHkuCgkocHVzaF92aXNpYmlsaXR5LCBwb3BfdmlzaWJpbGl0eSk6IExpa2V3aXNlLgoJKiBjLXByYWdtYS5oOiBEZWNsYXJlIHRoZW0uCgoyMDA2LTAzLTIwICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9zaC5jICh1bnRhbmdsZV9tb3ZhKTogSW5pdGlhbGl6ZSBuX2FkZHIgYW5kIG5fdGFyZ2V0LgoKCSogY29uZmlnL3NoL3NoLmMgKGZpbmRfcmVnbW9kZV93ZWlnaHQpOiBDaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIGZpcnN0CglwYXJhbWV0ZXIgYW5kIHVzZSBnZXRfZWJiX2hlYWRfdGFpbC4KCShzaF9tZF9pbml0X2dsb2JhbCk6IEFkanVzdCB1c2VzIG9mIGZpbmRfcmVnbW9kZV93ZWlnaHQuCgoyMDA2LTAzLTIwICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iLmdjY0BnbWFpbC5jb20+CgoJKiBmdW5jdGlvbi5oIChzdHJ1Y3QgZnVuY3Rpb24pIDx4X3RhaWxfcmVjdXJzaW9uX3JlZW50cnk+OgoJUmVuYW1lIHRvIHhfc3RhY2tfY2hlY2tfcHJvYmVfbm90ZS4KCSh0YWlsX3JlY3Vyc2lvbl9yZWVudHJ5KTogUmVuYW1lIHRvIHN0YWNrX2NoZWNrX3Byb2JlX25vdGUuCgkqIGZ1bmN0aW9uLmM6IFJlcGxhY2UgdGFpbF9yZWN1cnNpb25fcmVlbnRyeSB3aXRoCglzdGFja19jaGVja19wcm9iZV9ub3RlIGV2ZXJ5d2hlcmUuCgkoZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0KTogT25seSBlbWl0IGEgbm90ZSBmb3IKCXN0YWNrX2NoZWNrX3Byb2JlX25vdGUgd2l0aCAtZnN0YWNrLXByb3RlY3QuCgkqIHN0bXQuYyAoZXhwYW5kX2Nhc2UpOiBEb24ndCBlbWl0IE5PVEVfSU5TTl9ERUxFVEVEIG5vdGVzLgoKCSogZW1pdC1ydGwuYyAocmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogUmVtb3ZlLgoJKHBhc3NfcmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogUmVtb3ZlLgoJKiBydGwuaCAocmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogZmluYWwuYyAoZmluYWxfc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBjYWxsIHJlbW92ZV91bm5lY2Vzc2FyeV9ub3Rlcy4KCSogdHJlZS1wYXNzLmggKHBhc3NfcmVtb3ZlX3VubmVjZXNzYXJ5X25vdGVzKTogUmVtb3ZlLgoJKiBwYXNzZXMuYyAocGFzc19yZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMpOiBEb24ndCBydW4gaXQuCgoyMDA2LTAzLTIwICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0cmVlLW9wdC8yNjYyOQoJKiB0cmVlLXNzYS1wcmUgKHBoaV90cmFuc2xhdGUpOiBIYW5kbGUgQVJSQVlfUkVGJ3Mgb3BlcmFuZHMuCgkodmFsaWRfaW5fc2V0KTogSGFuZGxlIEFSUkFZX1JFRi4KCUNoYW5nZSAiaWYgbWluX3ZhcmlhbnQgb3IgVkgiIHRvIGFzc2VydHMuCgkoY3JlYXRlX2NvbXBvbmVudF9yZWZfYnlfcGllY2VzKTogSGFuZGxlIEFSUkFZX1JFRi4KCShjcmVhdGVfZXhwcmVzc2lvbl9ieV9waWVjZXMpOiBMaWtld2lzZS4KCShjYW5fUFJFX29wZXJhdGlvbik6IEFSUkFZX1JFRnMgY2FuIG5vdyBiZSBQUkUnZC4KCjIwMDYtMDMtMjAgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGdlbnByZWRzLmMgKHdyaXRlX2luc25fZXh0cmFfYWRkcmVzc19jb25zdHJhaW50KTogQXJndW1lbnQgYGMnCglpcyBvcGVyYW5kIG9mIHN3aXRjaCwgbm90IHN0clswXS4KCjIwMDYtMDMtMjAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfaGFuZGxlX29wdGlvbik6IFVzZQoJVEFSR0VUX05PX0ZQX0lOX1RPQyBpbnNpZGUgI2lmZGVmIFRBUkdFVF9VU0VTX1NZU1Y0X09QVCB0b28uCgoyMDA2LTAzLTE5ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBnZW5wcmVkcy5jICh3cml0ZV90bV9wcmVkc19oKTogQWRkIHNlbWljb2xvbiBhbmQgbmV3bGluZSBhdAoJZW5kIG9mIGluc25fZXh0cmFfYWRkcmVzc19jb25zdHJhaW50IGRlY2xhcmF0aW9uLgoKMjAwNi0wMy0xOSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAub3B0IChuby1mcC1pbi10b2MpOiBVc2UgVmFyIG5vdCBNYXNrLgoJKG5vLXN1bS1pbi10b2MpOiBTYW1lLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfaGFuZGxlX29wdGlvbik6IFVzZSBuZXcKCXZhcmlhYmxlcy4KCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IFNldAoJTk9fRlBfSU5fVE9DIGZvciAtZlBJQyBpbnN0ZWFkIG9mIG1hc2suCgoJKiBjb25maWcvcnM2MDAwL3QtYWl4NDMgKFRfQURBRkxBR1MpOiBEZWxldGUuCgkoQk9PVF9MREZMQUdTKTogRGVsZXRlLgoJKExERkxBR1MpOiBEZWxldGUuCgkqIGNvbmZpZy9yczYwMDAvdC1haXg1MjogU2FtZS4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChzdG9yZV9tdWx0aXBsZV9wb3dlcik6IERlbGV0ZS4KCShzdG1zaVszNDU2NzhdX3Bvd2VyKTogTmV3LgoKMjAwNi0wMy0xNyAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBjb25maWcvaWE2NC9pYTY0Lm9wdDogQWRkIGVtcHR5IGxpbmUgdG8gZW5kIG9mIGZpbGUuCgoyMDA2LTAzLTE3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8yNjcyMQoJKiBidWlsdGlucy5jIChnZXRfcG9pbnRlcl9hbGlnbm1lbnQpOiBGb3IgY29tcG9uZW50IHN0eWxlIHJlZmVyZW5jZXMKCWFkanVzdCBhbGlnbm1lbnQgdG8gdGhlIGNvbXBvbmVudCB0eXBlIGFsaWdubWVudC4gIE1ha2Ugc3VyZQoJdG8gYWRqdXN0IGFsaWdubWVudCBmb3IgY29tcG9uZW50IGFjY2VzcyBvZiBjb25zdGFudHMuCgoyMDA2LTAzLTE3ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoc3RybGVuc2kpOiBFbWl0IGJhcnJpZXIgYWZ0ZXIKCXVuY29uZGl0aW9uYWwganVtcC4KCjIwMDYtMDMtMTcgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1ZW1udCAtLXdpdGgtbW9kZS4KCSogY29uZmlnLmdjYzogQWRkIC0td2l0aC1tb2RlIGZvciBhcm0qLSotKi4KCSogY29uZmlnL2FybS9hcm0uaCAoT1BUSU9OX0RFRkFVTFRfU1BFQ1MpOiBBZGQgIm1vZGUiLgoKMjAwNi0wMy0xNyAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN0LmNvbT4KCgkqIHNoLmMgKG1heF9sYWJlbG5vX2JlZm9yZV9yZW9yZyk6IE5ldyB2YXJpYWJsZS4KCShzaF9yZW9yZyk6IEluaXRpYWxpemUgaXQuCgkoZmluZF9iYXJyaWVyKTogQ2hlY2sgbWF4X2xhYmVsbm9fYmVmb3JlX3Jlb3JnIGJlZm9yZSB1c2luZwoJbGFiZWxfdG9fYWxpZ25tZW50LiAgVGFrZSBsZW5ndGggb2YgZXhwbGljaXQgYWxpZ25tZW50IGluc25zCglpbnRvIGFjY291bnQuICBXaGVuIHNlZWluZyBhIFVOU1BFQ1ZfQ09OU1RfRU5ELCByZXR1cm4gaXQuCgoJKiBzaC5jIChmaXh1cF9tb3ZhKTogU2V0IG1vZGUgb2YgYWZmZWN0ZWQgbGFiZWwgdG8gUUltb2RlLgoJKHVudGFuZ2xlX21vdmEpOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9iYXJyaWVyKTogVXNlIGl0LiAgQ2hlY2sgbW9kZSBvZiBsYWJlbCBiZWZvcmUgZGVjcmVtZW50aW5nCgludW1fbW92YS4KCShzaF9yZW9yZyk6IExpa2V3aXNlLgoJU2V0IG1vZGUgb2YgYWxsIGluc25zIGJhY2sgdG8gVk9JRG1vZGUuCgoJKiBzaC5jIChNT1ZBX0xBQkVMUkVGKTogTmV3IG1hY3JvLgoJKG1vdmFfcCwgZml4dXBfbW92YSwgc2hfcmVvcmcpOiBVc2UgaXQuCgkoZmluZF9iYXJyaWVyLCBzaF9yZW9yZyk6IERvbid0IGNvdW50IG51bV9tb3ZhIGJhY2sgdG8gMCB1bmxlc3MKCUFERFJfRElGRl9WRUMgbWF0Y2hlcyBtb3ZhLgoKMjAwNi0wMy0xNyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYi5nY2NAZ21haWwuY29tPgoKCSogZHdhcmYyYXNtLmMgKGR3Ml9hc21fb3V0cHV0X29mZnNldCk6IE1hcmsgJ2Jhc2UnIGFyZ3VtZW50Cgl3aXRoIEFUVFJJQlVURV9VTlVTRUQuCgoyMDA2LTAzLTE3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfc3RhY2tfYWRqdXN0KTogQWx3YXlzIHRyYWNrIHRoZSBzdGFjawoJcG9pbnRlciwgaW5zdGVhZCBvZiBhc3N1bWluZyBpdCBpcyBwb3NzaWJsZSB0byBkZXJpdmUgdGhlCgljb3JyZWN0IGFyZ3Mgc2l6ZSBmcm9tIGEgY2FsbCBpbnNuLgoKMjAwNi0wMy0xNiAgSmFuLUJlbmVkaWN0IEdsYXcgIDxqYmdsYXdAbHVnLW93bC5kZT4KCgkqIHJ0bC5oIChDT05TVF9JTlRfUCk6IERlZmluZS4KCSogY29uZmlnL3ZheC92YXguYyAocHJpbnRfb3BlcmFuZF9hZGRyZXNzKTogVXNlIENPTlNUX0lOVF9QKCkKCWluc3RlYWQgb2YgR0VUX0NPREUoeCkgPT0gQ09OU1RfSU5ULgoJKHZheF9ydHhfY29zdHMpOiBMaWtld2lzZS4KCSh2YXhfb3V0cHV0X2ludF9tb3ZlKTogTGlrZXdpc2UuCgkodmF4X291dHB1dF9pbnRfYWRkKTogTGlrZXdpc2UuCgkobGVnaXRpbWF0ZV9jb25zdGFudF9hZGRyZXNzX3ApOiBMaWtld2lzZS4KCShpbmRleF90ZXJtX3ApOiBMaWtld2lzZS4KCSogY29uZmlnL3ZheC92YXguaCAoUFJJTlRfT1BFUkFORCk6IExpa2V3aXNlLgoJKiBjb25maWcvdmF4L3ZheC5tZCAoYW5kPG1vZGU+Myk6IExpa2V3aXNlLgoJKGFzaHJzaTMpOiBMaWtld2lzZS4KCShleHR2KTogTGlrZXdpc2UuCgkobW92c3RyaWN0aGkpOiBMaWtld2lzZS4KCShtb3ZzdHJpY3RxaSk6IExpa2V3aXNlLgoJKHJvdHJzaTMpOiBMaWtld2lzZS4KCShmaXZlIHVubmFtZWQgaW5zbnMpOiBMaWtld2lzZS4KCjIwMDYtMDMtMTYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZG9jL3RtLnRleGkgKFNEQiBhbmQgRFdBUkYpOiBBZGQgZXh0cmEgcGFyYW1ldGVyIHRvCglBU01fT1VUUFVUX0RXQVJGX09GRlNFVC4gIFVzZSBAdmFyIHRvIGluZGljYXRlIG1ldGF2YXJpYWJsZXMuCgkqIGR3YXJmMmFzbS5oIChkdzJfYXNtX291dHB1dF9vZmZzZXQpOiBBZGQgc2VjdGlvbiBwYXJhbWV0ZXIuCgkqIGR3YXJmMmFzbS5jIChkdzJfYXNtX291dHB1dF9vZmZzZXQpOiBBZGQgYmFzZSBzZWN0aW9uIHBhcmFtZXRlci4KCVBhc3MgdG8gQVNNX09VVFBVVF9EV0FSRl9PRkZTRVQuCgkqIGR3YXJmMm91dC5jIChkZWJ1Z19mcmFtZV9zZWN0aW9uKTogTmV3LgoJKG91dHB1dF9jYWxsX2ZyYW1lX2luZm8pOiBVc2UgZGVidWdfZnJhbWVfc2VjdGlvbi4gIFBhc3MgaXQgdG8KCWR3Ml9hc21fb3V0cHV0X29mZnNldC4KCShvdXRwdXRfZGllKTogUGFzcyBhcHByb3ByaWF0ZSBzZWN0aW9uIHRvIGR3Ml9hc21fb3V0cHV0X29mZnNldC4KCShvdXRwdXRfY29tcGlsYXRpb25fdW5pdF9oZWFkZXIpOiBMaWtld2lzZS4KCShvdXRwdXRfcHVibmFtZXMpOiBMaWtld2lzZS4KCShvdXRwdXRfYXJhbmdlcyk6IExpa2V3aXNlLgoJKGVudW0gZHdfdmFsX2NsYXNzKTogQnJlYWsgZHdfdmFsX2NsYXNzX2xibF9vZmZzZXQgaW50bwoJZHdfdmFsX2NsYXNzX2xpbmVwdHIgYW5kIGR3X3ZhbF9jbGFzc19tYWNwdHIuCgkoYWRkX0FUX2xibF9vZmZzZXQpOiBEZWxldGUuCgkoYWRkX0FUX2xpbmVwdHIpOiBOZXcuCgkoYWRkX0FUX21hY3B0cik6IE5ldy4KCShBVF9sYmwpOiBFeHBlY3QgYSBsaW5lcHRyIG9yIG1hY3B0ci4KCShwcmludF9kaWUpOiBIYW5kbGUgZHdfdmFsX2NsYXNzX2xpbmVwdHIgYW5kIGR3X3ZhbF9jbGFzc19tYWNwdHIuCgkoYXR0cl9jaGVja3N1bSk6IExpa2V3aXNlLgoJKHNhbWVfZHdfdmFsX3ApOiBMaWtld2lzZS4KCShzaXplX29mX2RpZSk6IExpa2V3aXNlLgoJKHZhbHVlX2Zvcm1hdCk6IExpa2V3aXNlLgoJKG91dHB1dF9kaWUpOiBMaWtld2lzZS4KCShkd2FyZjJvdXRfZmluaXNoKTogQ2FsbCBhZGRfQVRfbGluZXB0ciBhbmQgYWRkX0FUX21hY3B0ciBpbnN0ZWFkIG9mCglhZGRfQVRfbGJsX29mZnNldC4KCSogY29uZmlnL2kzODYvY3lnbWluZy5oIChBU01fT1VUUFVUX0RXQVJGX09GRlNFVCk6IEFkZCBleHRyYSBwYXJhbWV0ZXIuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoeDg2X2ZpbGVfc3RhcnQpOiBDYWxsIGRhcndpbl9maWxlX3N0YXJ0LgoJKiBjb25maWcvZGFyd2luLXByb3Rvcy5oIChkYXJ3aW5fZmlsZV9zdGFydCk6IE5ldy4KCShkYXJ3aW5fYXNtX291dHB1dF9kd2FyZl9vZmZzZXQpOiBOZXcuCgkqIGNvbmZpZy9pYTY0L2lhNjQuaCAoQVNNX09VVFBVVF9EV0FSRl9PRkZTRVQpOiBBZGQgZXh0cmEgcGFyYW1ldGVyLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZGFyd2luX2ZpbGVfc3RhcnQpOiBDYWxsCglkYXJ3aW5fZmlsZV9zdGFydC4KCSogY29uZmlnL2Rhcndpbi5jIChkYXJ3aW5fZW1pdF91bndpbmRfbGFiZWwpOiBEb24ndCBvdXRwdXQgbGFiZWwKCWlmIG5vdCBFSCBzZWN0aW9uOyBzaW1wbGlmeS4KCShkYXJ3aW5fZmlsZV9zdGFydCk6IE5ldy4KCShkYXJ3aW5fYXNtX291dHB1dF9kd2FyZl9vZmZzZXQpOiBOZXcuCgkqIGNvbmZpZy9kYXJ3aW4uaCAoREVCVUdfRlJBTUVfU0VDVElPTik6IEluIF9fRFdBUkYgc2VnbWVudCwKCW1hcmsgYXMgJ2RlYnVnJy4KCShERUJVR19JTkZPX1NFQ1RJT04pOiBMaWtld2lzZS4KCShERUJVR19BQkJSRVZfU0VDVElPTik6IExpa2V3aXNlLgoJKERFQlVHX0FSQU5HRVNfU0VDVElPTik6IExpa2V3aXNlLgoJKERFQlVHX01BQ0lORk9fU0VDVElPTik6IExpa2V3aXNlLgoJKERFQlVHX0xJTkVfU0VDVElPTik6IExpa2V3aXNlLgoJKERFQlVHX0xPQ19TRUNUSU9OKTogTGlrZXdpc2UuCgkoREVCVUdfUFVCTkFNRVNfU0VDVElPTik6IExpa2V3aXNlLgoJKERFQlVHX1NUUl9TRUNUSU9OKTogTGlrZXdpc2UuCgkoREVCVUdfUkFOR0VTX1NFQ1RJT04pOiBMaWtld2lzZS4KCShGUkFNRV9CRUdJTl9MQUJFTCk6IE11c3Qgc3RhcnQgd2l0aCAnTCcgaW4gZGVidWcgc2VjdGlvbi4KCShBU01fT1VUUFVUX0RXQVJGX09GRlNFVCk6IE5ldy4KCjIwMDYtMDMtMTYgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAodG1fZGVmaW5lcyk6IEFsd2F5cyBhZGQgdG8gcHJldmlvdXMgdmFsdWUgcmF0aGVyCgl0aGFuIHJlcGxhY2luZyBpdC4KCjIwMDYtMDMtMTYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvcHJlZGljYXRlcy5tZCAoc3BsaXR0YWJsZV9jb25zdF9pbnRfb3BlcmFuZCk6IE5ldywKCXNwbGl0IGZyb20gbW92ZV9vcGVyYW5kLgoJKHNwbGl0dGFibGVfc3ltYm9saWNfb3BlcmFuZCk6IE5ldy4KCShtb3ZlX29wZXJhbmQpOiBBZGQgY29tbWVudGFyeS4gIFVzZSBzcGxpdHRhYmxlX2NvbnN0X2ludF9vcGVyYW5kLgoJSW5saW5lIG1pcHNfYXRvbWljX3N5bWJvbGljX2NvbnN0YW50X3AuCgkqIGNvbmZpZy9taXBzL21pcHMubWQ6IEFkZCBjb21iaW5lIHNwbGl0dGVycyBmb3IgaGFuZGxpbmcgbW92ZXMKCW9mIHNwbGl0dGFibGVfY29uc3RfaW50X29wZXJhbmRzIGFuZCBzcGxpdHRhYmxlX3N5bWJvbGljX29wZXJhbmRzLgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX2F0b21pY19zeW1ib2xpY19jb25zdGFudF9wKTogRGVsZXRlLgoJKG1pcHNfc3BsaXRfc3ltYm9sKTogRGVjbGFyZS4KCShtaXBzX21vdmVfaW50ZWdlcik6IERlY2xhcmUuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19zcGxpdF9wKTogTWFrZSBnbG9iYWwuCgkoVEFSR0VUX01JTl9BTkNIT1JfT0ZGU0VUKTogT3ZlcnJpZGUgZGVmYXVsdC4KCShUQVJHRVRfTUFYX0FOQ0hPUl9PRkZTRVQpOiBMaWtld2lzZS4KCShUQVJHRVRfVVNFX0JMT0NLU19GT1JfQ09OU1RBTlRfUCk6IExpa2V3aXNlLgoJKFRBUkdFVF9VU0VfQU5DSE9SU19GT1JfU1lNQk9MX1ApOiBMaWtld2lzZS4KCShtaXBzX29mZnNldF93aXRoaW5fb2JqZWN0X3ApOiBIYW5kbGUgYmxvY2sgc3ltYm9scy4KCShtaXBzX2F0b21pY19zeW1ib2xpY19jb25zdGFudF9wKTogRGVsZXRlLgoJKG1pcHNfY2Fubm90X2ZvcmNlX2NvbnN0X21lbSk6IFJldHVybiBmYWxzZSBmb3IgY29uc3RhbnRzIHRoYXQKCW1pcHNfbGVnaXRpbWl6ZV9tb3ZlIGNhbiBoYW5kbGUuCgkobWlwc191c2VfYmxvY2tzX2Zvcl9jb25zdGFudF9wKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfc3BsaXRfc3ltYm9sKTogTWFrZSBnbG9iYWwuCgkobWlwc19tb3ZlX2ludGVnZXIpOiBMaWtld2lzZS4gIEFkZCBhIHRlbXBvcmFyeSByZWdpc3RlciBhcmd1bWVudC4KCShtaXBzX2xlZ2l0aW1pemVfY29uc3RfbW92ZSk6IFVzZSBzcGxpdHRhYmxlX2NvbnN0X2ludF9vcGVyYW5kIGFuZAoJc3BsaXR0YWJsZV9zeW1ib2xpY19vcGVyYW5kLgoJKG1pcHNfdXNlX2FuY2hvcnNfZm9yX3N5bWJvbF9wKTogTmV3IGZ1bmN0aW9uLgoJKiBjb25maWcvbWlwcy9taXBzLmg6IFByb3RlY3QgZXh0ZXJucyB3aXRoICFVU0VEX0ZPUl9UQVJHRVQuCgkobWlwc19zcGxpdF9wKTogRGVjbGFyZS4KCjIwMDYtMDMtMTYgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLmdjYyAobWlwczY0Ki0qLWxpbnV4Kik6IEtlZXAgZXhpc3RpbmcgdG1fZGVmaW5lcy4KCShtaXBzKi0qLWxpbnV4Kik6IExpa2V3aXNlLgoKMjAwNi0wMy0xNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgRGFuaWVsIFNwZXllciAgPGRzcGV5ZXJAd2FtLnVtZC5lZHU+CgoJUFIgbWlkZGxlLWVuZC8xODI1OQoJKiB0cmVlLWR1bXAuYyAoZHVtcF9yZWFsKTogTmV3IGZ1bmN0aW9uLgoJKGRlcXVldWVfYW5kX2R1bXApIDxSRUFMX0NTVD46IFVzZSBpdCB0byBkdW1wIEZQIGNvbnN0YW50cy4KCSogTWFrZWZpbGUuaW4gKFJFQUxfSCk6IE5ldyBtYWNybyBmb3IgZGVwZW5kZW5jaWVzIG9uIHJlYWwuaC4KCSh0cmVlLWR1bXAubyk6IEFkZCAkKFJFQUxfSCkgdG8gdGhlIGRlcGVuZGVuY2llcy4KCjIwMDYtMDMtMTYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMjE3ODEKCSogcmVhbC5jIChyZWFsX2Zyb21fc3RyaW5nKTogSWYgdGhlIG1hbnRpc3NhIGlzIHplcm8sIGRvbid0IGJvdGhlcgoJcGFyc2luZyB0aGUgZXhwb25lbnQgYXMgdGhlIHJlc3VsdCBzaG91bGQgYWx3YXlzIGJlIHplcm8uCgoyMDA2LTAzLTE2ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3BsdXNfbWludXMpOiBTaW1wbGlmeSB3aXRoaW4gQ09OU1QgdGVybXMuCgoyMDA2LTAzLTE2ICBNYXhpbSBLdXZ5cmtvdiA8bWt1dnlya292QGlzcHJhcy5ydT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoc3RvcHNfcCk6IEFkZGVkIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uLgoJKGlhNjRfZmlyc3RfY3ljbGVfbXVsdGlwYXNzX2RmYV9sb29rYWhlYWRfZ3VhcmRfc3BlYywKCWlhNjRfaF9pX2RfZXh0ZW5kZWQsIGlhNjRfc2V0X3NjaGVkX2ZsYWdzLCBpYTY0X3NwZWN1bGF0ZV9pbnNuLAoJaWE2NF9uZWVkc19ibG9ja19wLCBpYTY0X2dlbl9jaGVjaywgaWE2NF9zY2hlZF9pbml0X2dsb2JhbCwKCWlhNjRfc2NoZWRfZmluaXNoX2dsb2JhbCk6IE5ldyBzdGF0aWMgZnVuY3Rpb25zIHRvIGltcGxlbWVudAoJaG9va3MgZnJvbSBnY2NfdGFyZ2V0LnNjaGVkLgoJKHNwZWNfY2hlY2tfbm8sIG1heF91aWQsIHBlbmRpbmdfZGF0YV9zcGVjcyk6IE5ldyBzdGF0aWMgdmFyaWFibGVzLgoJKGlhNjRfbW9kZV90b19pbnQsIGlhNjRfZ2VuX3NwZWNfaW5zbiwgaWE2NF9zcGVjX2NoZWNrX3AsCglpYTY0X3NwZWNfY2hlY2tfc3JjX3ApOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShpYTY0X2FkanVzdF9jb3N0KTogUmVuYW1lZCB0byBpYTY0X2FkanVzdF9jb3N0XzIuCgkoVEFSR0VUX1NDSEVEX0FESlVTVF9DT1NUKTogUmVtb3ZlZC4KCShUQVJHRVRfU0NIRURfQURKVVNUX0NPU1RfMiwgVEFSR0VUX1NDSEVEX0lOSVRfR0xPQkFMLAoJVEFSR0VUX1NDSEVEX0ZJTklTSF9HTE9CQUwsIFRBUkdFVF9TQ0hFRF9IX0lfRF9FWFRFTkRFRCwKCVRBUkdFVF9TQ0hFRF9TUEVDVUxBVEVfSU5TTiwgVEFSR0VUX1NDSEVEX05FRURTX0JMT0NLX1AsCglUQVJHRVRfU0NIRURfR0VOX0NIRUNLLAoJVEFSR0VUX1NDSEVEX0ZJUlNUX0NZQ0xFX01VTFRJUEFTU19ERkFfTE9PS0FIRUFEX0dVQVJEX1NQRUMsCglUQVJHRVRfU0NIRURfU0VUX1NDSEVEX0ZMQUdTKTogTmV3IG1hY3Jvcy4KCSh1cGRhdGVfc2V0X2ZsYWdzLCBncm91cF9iYXJyaWVyX25lZWRlZCwgc2V0X3NyY19uZWVkc19iYXJyaWVyKToKCUZpeGVkIHRvIGhhbmRsZSBzcGVjdWxhdGlvbiBjaGVja3MuCgkocnR4X25lZWRzX2JhcnJpZXIpOiBGaXhlZCB0byBoYW5kbGUgc3BlY3VsYXRpdmUgbG9hZHMgYW5kCgl0aGVpciBjaGVja3MuCgkoaWE2NF92YXJpYWJsZV9pc3N1ZSk6IEFkZGVkIGNvZGUgdG8gY291bnQgc3BlY3VsYXRpdmUgbG9hZHMgYW5kIHRoZWlyCgljaGVja3MuCgkoaWE2NF9maXJzdF9jeWNsZV9tdWx0aXBhc3NfZGZhX2xvb2thaGVhZF9ndWFyZCk6IEZpeGVkIHRvIGhhbmRsZQoJc3BlY3VsYXRpdmUgbG9hZHMuCgkoZW51bSBTUEVDX01PREVTLCBlbnVtIFNQRUNfR0VOX0xEX01BUCwgU1BFQ19HRU5fQ0hFQ0tfT0ZGU0VUKToKCU5ldyBlbnVtZXJhdGlvbnMuCgkoU1BFQ19HRU5fRVhURU5EX09GRlNFVCwgU1BFQ19OLCBTUEVDX0dFTl9DSEVDS19NVVRBVElPTl9PRkZTRVQpOgoJTmV3IGNvbnN0YW50cy4KCShpYTY0X2xkX2FkZHJlc3NfYnlwYXNzX3ApOiBGaXhlZCB0byBoYW5kbGUgc3BlY3VsYXRpdmUgbG9hZHMuCgkoaWE2NF9yZW9yZyk6IFJlc2V0IHN0b3BzX3AgdG8gTlVMTCBhZnRlciBpdCBpcyBmcmVlZC4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoVU5TUEVDX0xEQSwgVU5TUEVDX0xEUywgVU5TUEVDX0xEU0EsCglVTlNQRUNfTERDQ0xSLCBVTlNQRUNfQ0hLQUNMUiwgVU5TUEVDX0NIS1MpOiBOZXcgY29uc3RhbnRzLgoJKGl0YW5pdW1fY2xhc3MpOiBjaGtfcyByZW5hbWVkIHRvIGNoa19zX2kuICBOZXcgY29uc3RhbnRzOiBjaGtfc19mLAoJY2hrX2EuCgkoZGF0YV9zcGVjdWxhdGl2ZSwgY29udHJvbF9zcGVjdWxhdGl2ZSwgY2hlY2tfbG9hZCk6IE5ldyBhdHRyaWJ1dGVzLgoJKG1vdjxtb2RlPl9hZHZhbmNlZCwgbW92PG1vZGU+X3NwZWN1bGF0aXZlLAoJbW92PG1vZGU+X3NwZWN1bGF0aXZlX2FkdmFuY2VkLCB6ZXJvX2V4dGVuZDxtb2RlPmRpMl9hZHZhbmNlZCwKCXplcm9fZXh0ZW5kPG1vZGU+ZGkyX3NwZWN1bGF0aXZlLAoJemVyb19leHRlbmQ8bW9kZT5kaTJfc3BlY3VsYXRpdmVfYWR2YW5jZWQpOiBOZXcgcGF0dGVybnMgZm9yCglkYXRhIGFuZCBjb250cm9sIHNwZWN1bGF0aXZlIGxvYWRzLgoJKG1vdjxtb2RlPl9jbHIsIHplcm9fZXh0ZW5kPG1vZGU+ZGkyX2Nscik6IE5ldyBwYXR0ZXJucyBmb3IKCWNoZWNrIGxvYWRzLgoJKGFkdmFuY2VkX2xvYWRfY2hlY2tfY2xyXzxtb2RlPiwgc3BlY3VsYXRpb25fY2hlY2tfPG1vZGU+KToKCU5ldyBwYXR0ZXJuIGZvciBkYXRhIGFuZCBjb250cm9sIHNwZWN1bGF0aW9uIGNoZWNrcy4KCShNT0RFLCBNT0RFX0ZPUl9FWFRFTkQsIG91dHB1dF9hLCBvdXRwdXRfcywgb3V0cHV0X3NhLCBvdXRwdXRfY19jbHIsCglsZF9yZWdfY29uc3RyLCBsZGNfcmVnX2NvbnN0ciwgY2hrX3JlZ19jb25zdHIsIG1lbV9jb25zdHIsCglyZWdfcHJlZF9wcmVmaXgsIGxkX2NsYXNzLCBjaGthX2NsYXNzLCBjaGtzX2NsYXNzLCBhdHRyX3llcyk6CglBdXhpbGlhcnkgZGVmaW5pdGlvbnMgZm9yIHRoZSBwYXR0ZXJucy4KCSogY29uZmlnL2lhNjQvaXRhbml1bTEubWQgKDFfZmxkYywgMV9mbGRwYywgMV9sZGMsIDFfY2hrX3NfZiwgMV9jaGtfYSwKCTFiX2ZsZGMsIDFiX2ZsZHBjLCAxYl9sZGMsIDFiX2Noa19zX2YsIDFiX2Noa19hKTogTmV3IHJlc291cmNlCgljb25zdHJhaW50cy4KCSgxX2ZsZCwgMV9mbGRwLCAxX2xkLCAxYl9mbGQsIDFiX2ZsZHAsIDFiX2xkKTogQWRkIGEgY29uZGl0aW9uCglmb3Igc3BlY3VsYXRpb24uCgkoMV9jaGtfcywgMWJfY2hrX3MpOiBSZW5hbWVkIHRvIDFfY2hrX3NfaSwgMWJfY2hrX3NfaS4KCSogY29uZmlnL2lhNjQvaXRhbml1bTIubWQgKDJfZmxkYSwgMl9mbGRjLCAyX2ZsZHBjLCAyX2xkYywgMl9jaGtfc19mLAoJMl9jaGtfYSwgMmJfZmxkYSwgMmJfZmxkYywgMmJfZmxkcGMsIDJiX2xkYywgMmJfY2hrX3NfZiwgMmJfY2hrX2EpOgoJTmV3IHJlc291cmNlIGNvbnN0cmFpbnRzLgoJKDJfZmxkLCAyX2ZsZHAsIDJfbGQsIDJiX2ZsZCwgMmJfZmxkcCwgMmJfbGQpOiBBZGQgYSBjb25kaXRpb24KCWZvciBzcGVjdWxhdGlvbi4KCSgyX2Noa19zLCAyYl9jaGtfcyk6IFJlbmFtZWQgdG8gMl9jaGtfc19pLCAyYl9jaGtfc19pLgoJKiBjb25maWcvaWE2NC9pYTY0Lm9wdCAobXNjaGVkLWJyLWRhdGEtc3BlYywgbXNjaGVkLWFyLWRhdGEtc3BlYywKCW1zY2hlZC1jb250cm9sLXNwZWMsIG1zY2hlZC1ici1pbi1kYXRhLXNwZWMsIG1zY2hlZC1hci1pbi1kYXRhLXNwZWMsCgltc2NoZWQtaW4tY29udHJvbC1zcGVjLCBtc2NoZWQtbGRjLCBtc2NoZWQtY29udHJvbC1sZGMsCgltc2NoZWQtc3BlYy12ZXJib3NlLCBtc2NoZWQtcHJlZmVyLW5vbi1kYXRhLXNwZWMtaW5zbnMsCgltc2NoZWQtcHJlZmVyLW5vbi1jb250cm9sLXNwZWMtaW5zbnMsCgltc2NoZWQtY291bnQtc3BlYy1pbi1jcml0aWNhbC1wYXRoKTogTmV3IGZsYWdzIHRvIHR1bmUgc3BlY3VsYXRpdmUKCXNjaGVkdWxpbmcuCgkqIGRvYy9pbnZva2UudGV4aSAobXNjaGVkLWJyLWRhdGEtc3BlYywgbXNjaGVkLWFyLWRhdGEtc3BlYywKCW1zY2hlZC1jb250cm9sLXNwZWMsIG1zY2hlZC1ici1pbi1kYXRhLXNwZWMsIG1zY2hlZC1hci1pbi1kYXRhLXNwZWMsCgltc2NoZWQtaW4tY29udHJvbC1zcGVjLCBtc2NoZWQtbGRjLCBtc2NoZWQtY29udHJvbC1sZGMsCgltc2NoZWQtc3BlYy12ZXJib3NlLCBtc2NoZWQtcHJlZmVyLW5vbi1kYXRhLXNwZWMtaW5zbnMsCgltc2NoZWQtcHJlZmVyLW5vbi1jb250cm9sLXNwZWMtaW5zbnMsCgltc2NoZWQtY291bnQtc3BlYy1pbi1jcml0aWNhbC1wYXRoKTogRG9jdW1lbnQgbmV3IGZsYWdzLgoKMjAwNi0wMy0xNiAgTWF4aW0gS3V2eXJrb3YgPG1rdXZ5cmtvdkBpc3ByYXMucnU+CgoJKiB0YXJnZXQuaCAoc3RydWN0IHNwZWNfaW5mb19kZWYpOiBOZXcgb3BhcXVlIGRlY2xhcmF0aW9uLgoJKHN0cnVjdCBnY2NfdGFyZ2V0LnNjaGVkKTogTmV3IGZpZWxkczogYWRqdXN0X2Nvc3RfMiwgaF9pX2RfZXh0ZW5kZWQsCglzcGVjdWxhdGVfaW5zbiwgbmVlZHNfYmxvY2tfcCwgZ2VuX2NoZWNrLAoJZmlyc3RfY3ljbGVfbXVsdGlwYXNzX2RmYV9sb29rYWhlYWRfZ3VhcmRfc3BlYywgc2V0X3NjaGVkX2ZsYWdzLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9TQ0hFRF9BREpVU1RfQ09TVF8yLAoJVEFSR0VUX1NDSEVEX0hfSV9EX0VYVEVOREVELCBUQVJHRVRfU0NIRURfU1BFQ1VMQVRFX0lOU04sCglUQVJHRVRfU0NIRURfTkVFRFNfQkxPQ0tfUCwgVEFSR0VUX1NDSEVEX0dFTl9DSEVDSywKCVRBUkdFVF9TQ0hFRF9GSVJTVF9DWUNMRV9NVUxUSVBBU1NfREZBX0xPT0tBSEVBRF9HVUFSRF9TUEVDLAoJVEFSR0VUX1NDSEVEX1NFVF9TQ0hFRF9GTEFHUyk6IE5ldyBtYWNyb3MgdG8gaW5pdGlhbGl6ZSBmaWVsZHMgaW4KCWdjY190YXJnZXQuc2NoZWQuCgkoVEFSR0VUX1NDSEVEKTogVXNlIG5ldyBtYWNyb3MuCgkqIHJ0bC5oIChjb3B5X0RFUFNfTElTVF9saXN0KTogTmV3IHByb3RvdHlwZS4KCSogc2NoZWQtaW50LmggKHN0cnVjdCBzY2hlZF9pbmZvKTogQ2hhbmdlIHNpZ25hdHVyZSBvZiBuZXdfcmVhZHkgZmllbGQsCglhZGp1c3QgYWxsIGluaXRpYWxpemF0aW9ucy4gTmV3IGZpZWxkczogYWRkX3JlbW92ZV9pbnNuLAoJYmVnaW5fc2NoZWR1bGVfcmVhZHksIGFkZF9ibG9jaywgYWR2YW5jZV90YXJnZXRfYmIsIGZpeF9yZWNvdmVyeV9jZmcsCglyZWdpb25faGVhZF9vcl9sZWFmX3AuCgkoc3RydWN0IHNwZWNfaW5mb19kZWYpOiBOZXcgc3RydWN0dXJlIGRlY2xhcmF0aW9uLgoJKHNwZWNfaW5mb190KTogTmV3IHR5cGVkZWYuCgkoc3RydWN0IGhhaWZhX2luc25fZGF0YSk6IE5ldyBmaWVsZHM6IHRvZG9fc3BlYywgZG9uZV9zcGVjLCBjaGVja19zcGVjLAoJcmVjb3ZlcnlfYmxvY2ssIG9yaWdfcGF0LgoJKGdsYXRfc3RhcnQsIGdsYXRfZW5kKTogTmV3IHZhcmlhYmxlcyBkZWNsYXJhaW9ucy4KCShUT0RPX1NQRUMsIERPTkVfU1BFQywgQ0hFQ0tfU1BFQywgUkVDT1ZFUllfQkxPQ0ssIE9SSUdfUEFUKToKCU5ldyBhY2Nlc3MgbWFjcm9zLgoJKGVudW0gU0NIRURfRkxBR1MpOiBOZXcgY29uc3RhbnRzOiBTQ0hFRF9SR04sIFNDSEVEX0VCQiwKCURFVEFDSF9MSUZFX0lORk8sIFVTRV9HTEFULgoJKGVudW0gU1BFQ19TQ0hFRF9GTEFHUyk6IE5ldyBlbnVtZXJhdGlvbi4KCShOT1RFX05PVEVfQkJfUCk6IE5ldyBtYWNyby4KCShleHRlbmRfZGVwZW5kZW5jeV9jYWNoZXMsIHhyZWNhbGxvYywgdW5saW5rX2JiX25vdGVzLCBhZGRfYmxvY2ssCglhdHRhY2hfbGlmZV9pbmZvLCBkZWJ1Z19zcGVjX3N0YXR1cywgY2hlY2tfcmVnX2xpdmUpOiBOZXcgZnVuY3Rpb25zLgoJKGdldF9ibG9ja19oZWFkX3RhaWwpOiBDaGFuZ2Ugc2lnbmF0dXJlIHRvIGdldF9lYmJfaGVhZF90YWlsLCBhZGp1c3QKCWFsbCB1c2VzIGluIGRkZy5jLCBtb2R1bG8tc2NoZWQuYywgaGFpZmEtc2NoZWQuYywgc2NoZWQtcmduLmMsCglzY2hlZC1lYmIuYwoJKGdldF9kZXBfd2VhaywgZHNfbWVyZ2UpOiBQcm90b3R5cGUgZnVuY3Rpb25zIGZyb20gc2NoZWQtZGVwcy5jIC4KCSogZGRnLmMgKGdldF9ibG9ja19oZWFkX3RhaWwpOiBBZGp1c3QgYWxsIHVzZXMuCgkqIG1vZHVsby1zY2hlZC5jIChnZXRfYmxvY2tfaGVhZF90YWlsKTogQWRqdXN0IGFsbCB1c2VzLgoJKHNtc19zY2hlZF9pbmZvKTogSW5pdGlhbGl6ZSBuZXcgZmllbGRzLgoJKGNvbnRyaWJ1dGVzX3RvX3ByaW9yaXR5KTogUmVtb3ZlZC4KCSogaGFpZmEtc2NoZWQuYyAocGFyYW1zLmgpOiBOZXcgaW5jbHVkZS4KCShnZXRfYmxvY2tfaGVhZF90YWlsKTogQWRqdXN0IGFsbCB1c2VzLgoJKElTU1VFX1BPSU5UUyk6IE5ldyBtYWNyby4KCShnbGF0X3N0YXJ0LCBnbGF0X2VuZCk6IE5ldyBnbG9iYWwgdmFyaWFibGVzLgoJKHNwZWNfaW5mb192YXIsIHNwZWNfaW5mbywgYWRkZWRfcmVjb3ZlcnlfYmxvY2tfcCwgbnJfYmVnaW5fZGF0YSwKCW5yX2JlX2luX2RhdGEsIG5yX2JlZ2luX2NvbnRyb2wsIG5yX2JlX2luX2NvbnRyb2wsIGJiX2hlYWRlciwKCW9sZF9sYXN0X2Jhc2ljX2Jsb2NrLCBiZWZvcmVfcmVjb3ZlcnksIGN1cnJlbnRfc2NoZWRfaW5mb192YXIsCglyZ25fbl9pbnNucywgbHVpZCk6IE5ldyBzdGF0aWMgdmFyaWFibGVzLgoJKGluc25fY29zdDEpOiBOZXcgZnVuY3Rpb24uICBNb3ZlIGxvZ2ljIGZyb20gaW5zbl9jb3N0IHRvIGhlcmUuCgkoZmluZF9pbnNuX3JlZ193ZWlnaHQxKTogTmV3IGZ1bmN0aW9uLiAgTW92ZSBsb2dpYyBmcm9tCglmaW5kX2luc25fcmVnX3dlaWdodCB0byBoZXJlLgoJKHJlZW1pdF9ub3RlcywgbW92ZV9pbnNuLCBtYXhfaXNzdWUpOiBDaGFuZ2Ugc2lnbmF0dXJlLgoJKG1vdmVfaW5zbjEpOiBSZW1vdmVkLgoJKGV4dGVuZF9oX2lfZCwgZXh0ZW5kX3JlYWR5LCBleHRlbmRfZ2xvYmFsLCBleHRlbmRfYWxsLCBpbml0X2hfaV9kLAoJZXh0ZW5kX2JiKTogTmV3IHN0YXRpYyBmdW5jdGlvbnMgdG8gc3VwcG9ydCBleHRlbnNpb24gb2Ygc2NoZWR1bGVyJ3MKCWRhdGEgc3RydWN0dXJlcy4KCShnZW5lcmF0ZV9yZWNvdmVyeV9jb2RlLCBwcm9jZXNzX2luc25fZGVwZW5kX2JlX2luX3NwZWMsCgliZWdpbl9zcGVjdWxhdGl2ZV9ibG9jaywgYWRkX3RvX3NwZWN1bGF0aXZlX2Jsb2NrLAoJaW5pdF9iZWZvcmVfcmVjb3ZlcnksIGNyZWF0ZV9yZWNvdmVyeV9ibG9jaywgY3JlYXRlX2NoZWNrX2Jsb2NrX3R3aW4sCglmaXhfcmVjb3ZlcnlfZGVwcyk6IE5ldyBzdGF0aWMgZnVuY3Rpb25zIHRvIHN1cHBvcnQKCWdlbmVyYXRpb24gb2YgcmVjb3ZlcnkgY29kZS4KCShmaXhfanVtcF9tb3ZlLCBmaW5kX2ZhbGx0aHJ1X2VkZ2UsIGR1bXBfbmV3X2Jsb2NrX2hlYWRlciwKCXJlc3RvcmVfYmJfbm90ZXMsIG1vdmVfYmxvY2tfYWZ0ZXJfY2hlY2ssIG1vdmVfc3VjY3MpOiBOZXcgc3RhdGljCglmdW5jdGlvbnMgdG8gc3VwcG9ydCBlYmIgc2NoZWR1bGluZy4KCShpbml0X2dsYXQsIGluaXRfZ2xhdDEsIGF0dGFjaF9saWZlX2luZm8xLCBmcmVlX2dsYXQpOiBOZXcgc3RhdGljCglmdW5jdGlvbnMgdG8gc3VwcG9ydCBoYW5kbGluZyBvZiByZWdpc3RlciBsaXZlIGluZm9ybWF0aW9uLgoJKGFzc29jaWF0ZV9saW5lX25vdGVzX3dpdGhfYmxvY2tzLCBjaGFuZ2VfcGF0dGVybiwgc3BlY3VsYXRlX2luc24sCglzY2hlZF9yZW1vdmVfaW5zbiwgY2xlYXJfcHJpb3JpdGllcywgY2FsY19wcmlvcml0aWVzLCBiYl9ub3RlLAoJYWRkX2p1bXBfZGVwZW5kZW5jaWVzKToJTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoY2hlY2tfY2ZnLCBoYXNfZWRnZV9wLCBjaGVja19zY2hlZF9mbGFncyk6IE5ldyBzdGF0aWMgZnVuY3Rpb25zIGZvcgoJY29uc2lzdGFuY3kgY2hlY2tpbmcuCgkoZGVidWdfc3BlY19zdGF0dXMpOiBOZXcgZnVuY3Rpb24gdG8gY2FsbCBmcm9tIGRlYnVnZ2VyLgoJKHByaW9yaXR5KTogQWRkZWQgY29kZSB0byBoYW5kbGUgc3BlY3VsYXRpb24gY2hlY2tzLgoJKHJhbmtfZm9yX3NjaGVkdWxlKTogQWRkZWQgY29kZSB0byBkaXN0aW5ndWlzaCBzcGVjdWxhdGl2ZSBpbnN0cnVjdGlvbnMuCgkoc2NoZWR1bGVfaW5zbik6IEFkZGVkIGNvZGUgdG8gaGFuZGxlIHNwZWN1bGF0aW9uIGNoZWNrcy4KCSh1bmxpbmtfb3RoZXJfbm90ZXMsIHJtX2xpbmVfbm90ZXMsIHJlc3RvcmVfbGluZV9ub3Rlcywgcm1fb3RoZXJfbm90ZXMpOgoJRml4ZWQgdG8gaGFuZGxlIGViYnMuCgkobW92ZV9pbnNuKTogQWRkZWQgY29kZSB0byBoYW5kbGUgZWJiIHNjaGVkdWxpbmcuCgkobWF4X2lzc3VlKTogQWRkZWQgY29kZSB0byB1c2UgSVNTVUVfUE9JTlRTIG9mIGluc3RydWN0aW9ucy4KCShjaG9vc2VfcmVhZHkpOiBBZGRlZCBjb2RlIHRvIGNob29zZSBiZXR3ZWVuIHNwZWN1bGF0aXZlIGFuZAoJbm9uLXNwZWN1bGF0aXZlIGluc3RydWN0aW9ucy4KCShzY2hlZHVsZV9ibG9jayk6IEFkZGVkIGNvZGUgdG8gaGFuZGxlIGViYiBzY2hlZHVsaW5nIGFuZCBzY2hlZHVsaW5nIG9mCglzcGVjdWxhdGl2ZSBpbnN0cnVjdGlvbnMuCgkoc2NoZWRfaW5pdCk6IEluaXRpYWxpemUgbmV3IHZhcmlhYmxlcy4KCShzY2hlZF9maW5pc2gpOiBGcmVlIG5ldyB2YXJpYWJsZXMuICBQcmludCBzdGF0aXN0aWNzLgoJKHRyeV9yZWFkeSk6IEFkZGVkIGNvZGUgdG8gaGFuZGxlIHNwZWN1bGF0aXZlIGluc3RydWN0aW9ucy4KCSogbGlzdHMuYyAoY29weV9ERVBTX0xJU1RfbGlzdCk6IE5ldyBmdW5jdGlvbi4KCSogc2NoZWQtZGVwcy5jIChleHRlbmRfZGVwZW5kZW5jeV9jYWNoZXMpOiBOZXcgZnVuY3Rpb24uICBNb3ZlIGxvZ2ljCglmcm9tIGNyZWF0ZV9kZXBlbmRlbmN5X2NhY2hlcyB0byBoZXJlLgoJKGdldF9kZXBfd2VhaywgZHNfbWVyZ2UpOiBNYWtlIGdsb2JhbC4KCSogZ2VuYXR0ci5jIChtYWluKTogQ29kZSB0byBvdXRwdXQgcHJvdG90eXBlIGZvcgoJZGZhX2NsZWFyX3NpbmdsZV9pbnNuX2NhY2hlLgoJKiBnZW5hdXRvbWF0YS5jIChERkFfQ0xFQVJfU0lOR0xFX0lOU05fQ0FDSEVfRlVOQ19OQU1FKTogTmV3IG1hY3Jvcy4KCShvdXRwdXRfZGZhX2NsZWFuX2luc25fY2FjaGVfZnVuYyk6IENvZGUgdG8gb3V0cHV0CglkZmFfY2xlYXJfc2luZ2xlX2luc25fY2FjaGUgZnVuY3Rpb24uCgkqIHNjaGVkLWViYi5jICh0YXJnZXRfbl9pbnNucyk6IFJlbW92ZS4gIEFkanVzdCBhbGwgdXNlcnMgdG8gdXNlCgluX2luc25zLgoJKGNhbl9zY2hlZHVsZV9yZWFkeV9wLCBmaXhfYmFzaWNfYmxvY2tfYm91bmRhcmllcywgYWRkX21pc3NpbmdfYmJzKToKCVJlbW92ZWQuCgkobl9pbnNucywgZG9udF9jYWxjX2RlcHMsIGViYl9oZWFkLCBlYmJfdGFpbCwgbGFzdF9iYik6CglOZXcgc3RhdGljIHZhcmlhYmxlcy4KCShiZWdpbl9zY2hlZHVsZV9yZWFkeSwgYWRkX3JlbW92ZV9pbnNuLCBhZGRfYmxvY2sxLCBhZHZhbmNlX3RhcmdldF9iYiwKCWZpeF9yZWNvdmVyeV9jZmcsIGViYl9oZWFkX29yX2xlYWZfcCk6IEltcGxlbWVudCBob29rcyBmcm9tCglzdHJ1Y3Qgc2NoZWRfaW5mby4KCShlYmJfc2NoZWRfaW5mbyk6IEluaXRpYWxpemUgbmV3IGZpZWxkcy4KCShnZXRfYmxvY2tfaGVhZF90YWlsKTogQWRqdXN0IGFsbCB1c2VzLgoJKGNvbXB1dGVfanVtcF9yZWdfZGVwZW5kZW5jaWVzKTogRml4ZWQgdG8gdXNlIGdsYXRfc3RhcnQuCgkoc2NoZWR1bGVfZWJiKTogQ29kZSB0byByZW1vdmUgdW5yZWFjaGFibGUgbGFzdCBibG9jay4KCShzY2hlZHVsZV9lYmJzKTogQWRkZWQgY29kZSB0byB1cGRhdGUgcmVnaXN0ZXIgbGl2ZSBpbmZvcm1hdGlvbi4KCSogc2NoZWQtcmduLmMgKHJlZ2lvbl9zY2hlZF9pbmZvKTogSW5pdGlhbGl6ZSBuZXcgZmllbGRzLgoJKGdldF9ibG9ja19oZWFkX3RhaWwpOiBBZGp1c3QgYWxsIHVzZXMuCgkobGFzdF93YXNfanVtcCk6IFJlbW92ZWQuICBBZGp1c3QgdXNlcnMuCgkoYmVnaW5fc2NoZWR1bGVfcmVhZHksIGFkZF9yZW1vdmVfaW5zbiwgaW5zbl9wb2ludHMsIGV4dGVuZF9yZWdpb25zLAoJYWRkX2Jsb2NrMSwgZml4X3JlY292ZXJ5X2NmZywgYWR2YW5jZV90YXJnZXRfYmIsIHJlZ2lvbl9oZWFkX29yX2xlYWZfcCk6CglJbXBsZW1lbnQgbmV3IGhvb2tzLgoJKGNoZWNrX2RlYWRfbm90ZXMxKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShzdHJ1Y3QgcmVnaW9uKTogTmV3IGZpZWxkczogZG9udF9jYWxjX2RlcHMsIGhhc19yZWFsX2ViYi4KCShSR05fRE9OVF9DQUxDX0RFUFMsIFJHTl9IQVNfUkVBTF9FQkIpOiBOZXcgYWNjZXNzIG1hY3Jvcy4KCShCQl9UT19CTE9DSyk6IEZpeGVkIHRvIGhhbmRsZSBFQkJzLgoJKEVCQl9GSVJTVF9CQiwgRUJCX0xBU1RfQkIpOiBOZXcgbWFjcm9zLgoJKGViYl9oZWFkKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShkZWJ1Z19yZWdpb25zLCBjb250cmlidXRlc190b19wcmlvcml0eSk6IEZpeGVkIHRvIGhhbmRsZSBFQkJzLgoJKGZpbmRfc2luZ2xlX2Jsb2NrX3JlZ2lvbnMsIGZpbmRfcmducywgZmluZF9tb3JlX3JnbnMpOiBJbml0aWFsaXplCgluZXcgZmllbGRzLgoJKGNvbXB1dGVfZG9tX3Byb2JfcHMpOiBOZXcgYXNzZXJ0aW9uLgoJKGNoZWNrX2xpdmVfMSwgdXBkYXRlX2xpdmVfMSk6IEZpeGVkIHRvIHdvcmsgd2l0aCBnbGF0X3N0YXJ0IGluc3RlYWQgb2YKCWdsb2JhbF9saXZlX2F0X3N0YXJ0LgoJKGluaXRfcmVhZHlfbGlzdCk6IE5ldyBhc3NlcnRpb25zLgoJKGNhbl9zY2hlZHVsZV9yZWFkeV9wKTogU3BsaXQgdXBkYXRlIGNvZGUgdG8gYmVnaW5fc2NoZWR1bGVfcmVhZHkuCgkobmV3X3JlYWR5KTogQWRkIHN1cHBvcnQgZm9yIEJFR0lOX0NPTlRST0wgc3BlY3VsYXRpb24uCgkoc2NoZWR1bGVfaW5zbnMpOiBGaXhlZCBjb2RlIHRoYXQgdXBkYXRlcyByZWdpc3RlciBsaXZlIGluZm9ybWF0aW9uCgl0byBoYW5kbGUgRUJCcy4KCShzY2hlZHVsZV9yZWdpb24pOiBGaXhlZCB0byBoYW5kbGUgRUJCcy4KCShpbml0X3JlZ2lvbnMpOiBVc2UgZXh0ZW5kX3JlZ2lvbnMgYW5kIGNoZWNrX2RlYWRfbm90ZXMxLgoJKiBwYXJhbXMuZGVmIChQQVJBTV9NQVhfU0NIRURfSU5TTl9DT05GTElDVF9ERUxBWSwKCVBBUkFNX1NDSEVEX1NQRUNfUFJPQl9DVVRPRkYpOiBOZXcgcGFyYW1ldGVycy4KCSogZG9jL3RtLnRleGkgKFRBUkdFVF9TQ0hFRF9BREpVU1RfQ09TVF8yLCBUQVJHRVRfU0NIRURfSF9JX0RfRVhURU5ERUQsCglUQVJHRVRfU0NIRURfU1BFQ1VMQVRFX0lOU04sIFRBUkdFVF9TQ0hFRF9ORUVEU19CTE9DS19QLAoJVEFSR0VUX1NDSEVEX0dFTl9DSEVDSywKCVRBUkdFVF9TQ0hFRF9GSVJTVF9DWUNMRV9NVUxUSVBBU1NfREZBX0xPT0tBSEVBRF9HVUFSRF9TUEVDLAoJVEFSR0VUX1NDSEVEX1NFVF9TQ0hFRF9GTEFHUyk6IERvY3VtZW50LgoJKiBkb2MvaW52b2tlLnRleGkgKG1heC1zY2hlZC1pbnNuLWNvbmZsaWN0LWRlbGF5LAoJc2NoZWQtc3BlYy1wcm9iLWN1dG9mZik6IERvY3VtZW50LgoKMjAwNi0wMy0xNiAgTWF4aW0gS3V2eXJrb3YgPG1rdXZ5cmtvdkBpc3ByYXMucnU+CgoJKiBzY2hlZC1pbnQuaCAoc3RydWN0IGhhaWZhX2luc25fZGF0YSk6IE5ldyBmaWVsZHM6IHJlc29sdmVkX2RlcHMsCglpbnRlcl90aWNrLCBxdWV1ZV9pbmRleC4KCShzdHJ1Y3Qgc2NoZWRfaW5mbyk6IENoYW5nZSBzaWduYXR1cmUgb2YgaW5pdF9yZWFkeV9saXN0IGZpZWxkLgoJQWRqdXN0IGFsbCBpbml0aWFsaXphdGlvbnMuCgkoUkVTT0xWRURfREVQUyk6IE5ldyBhY2Nlc3MgbWFjcm8uCgkocmVhZHlfYWRkKTogUmVtb3ZlIHByb3RvdHlwZS4KCSh0cnlfcmVhZHkpOiBBZGQgcHJvdG90eXBlLgoJKiBzY2hlZC1yZ24uYyAoaW5pdF9yZWFkeV9saXN0KTogVXNlIHRyeV9yZWFkeS4KCShzY2hlZHVsZV9yZWdpb24pOiBJbml0aWFsaXplCgljdXJyZW50X3NjaGVkX2luZm8tPntzY2hlZF9tYXhfaW5zbnNfcHJpb3JpdHksIHF1ZXVlX211c3RfZmluaXNoX2VtcHR5fS4KCSogc2NoZWQtZWJiLmMgKG5ld19yZWFkeSk6IFJlbW92ZS4gIEFkanVzdCBlYmJfc2NoZWRfaW5mby4KCShpbml0X3JlYWR5X2xpc3QpOiBVc2UgdHJ5X3JlYWR5LgoJKHNjaGVkdWxlX2ViYik6IEluaXRpYWxpemUgY3VycmVudF9zY2hlZF9pbmZvLT5zY2hlZF9tYXhfaW5zbnNfcHJpb3JpdHkuCgkqIGxpc3RzLmMgKHJlbW92ZV9saXN0X2VsZW0pOiBSZW1vdmUgYHN0YXRpYycuCgkocmVtb3ZlX2ZyZWVfSU5TTl9MSVNUX2VsZW0pOiBOZXcgZnVuY3Rpb24uCgkqIHJ0bC5oIChyZW1vdmVfbGlzdF9lbGVtLCByZW1vdmVfZnJlZV9JTlNOX0xJU1RfZWxlbSk6IEFkZCBwcm90b3R5cGVzLgoJKiBoYWlmYS1zY2hlZC5jIChJTlRFUl9USUNLLCBRVUVVRV9JTkRFWCk6IE5ldyBtYWNyb3MuCgkoSU5WQUxJRF9USUNLLCBNSU5fVElDSywgUVVFVUVfU0NIRURVTEVELCBRVUVVRV9OT1dIRVJFLCBRVUVVRV9SRUFEWSk6CglOZXcgY29uc3RhbnRzLgoJKHJlYWR5cCk6IE5ldyB2YXJpYWJsZS4KCShxdWV1ZV9yZW1vdmUsIHJlYWR5X3JlbW92ZV9pbnNuLCBmaXhfaW50ZXJfdGljaywgZml4X3RpY2tfcmVhZHksCgljaGFuZ2VfcXVldWVfaW5kZXgsIHJlc29sdmVfZGVwKTogTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkodHJ5X3JlYWR5KTogTmV3IGZ1bmN0aW9uLiAgQWRqdXN0IGNhbGxlcnMgaW4gc2NoZWQtcmduLmMgYW5kCglzY2hlZC1lYmIuYyB0byB1c2UgaXQgaW5zdGVhZCBvZiByZWFkeV9hZGQuCgkoY2xvY2tfdmFyKTogTW92ZSBhdCB0aGUgYmVnaW5pbmcgb2YgZmlsZS4KCShyYW5rX2Zvcl9zY2hlZHVsZSk6IEZpeCB0eXBvLgoJKHF1ZXVlX2luc24pOiBBZGQgYXNzZXJ0aW9uLiAgSGFuZGxlIFFVRVVFX0lOREVYLgoJKHJlYWR5X2xhc3Rwb3MpOiBFbmZvcmNlIGFzc2VydGlvbi4KCShyZWFkeV9hZGQpOiBNYWtlIGl0IHN0YXRpYy4gIEhhbmRsZSBRVUVVRV9JTkRFWC4gIEFkZCBuZXcgYXJndW1lbnQsCgl1cGRhdGUgYWxsIGNhbGxlcnMuCgkocmVhZHlfcmVtb3ZlX2ZpcnN0LCByZWFkeV9yZW1vdmUpOiBIYW5kbGUgUVVFVUVfSU5ERVguCgkoc2NoZWR1bGVfaW5zbik6IFJld3JpdGUgdG8gdXNlIHRyeV9yZWFkeSBhbmQgcmVzb2x2ZV9kZXAuCgkocXVldWVfdG9fcmVhZHkpOiBVc2UgZnJlZV9JTlNOX0xJU1RfbGlzdC4KCShlYXJseV9xdWV1ZV90b19yZWFkeSk6IEZpeCB0eXBvLgoJKHNjaGVkdWxlX2Jsb2NrKTogSW5pdCByZWFkeXAuICBNb3ZlIGluaXRfcmVhZHlfbGlzdCBjYWxsIGFmdGVyIHRoZQoJaW5pdGlhbGl6YXRpb24gb2YgY2xvY2tfdmFyLiAgRml4IGVycm9yIGluIHJlamVjdGluZyBpbnNuIGJ5Cgl0YXJnZXRtLnNjaGVkLmRmYV9uZXdfY3ljbGUuICBBZGQgY2FsbCB0byBmaXhfaW50ZXJfdGljay4gIFJlbW92ZSBjb2RlCgl0aGF0IHByZXZpb3VzbHkJY29ycmVjdGVkIElOU05fVElDS3MuICBBZGQgY29kZSBmb3IgaGFuZGxpbmcKCVFVRVVFX0lOREVYLgoJKHNldF9wcmlvcml0aWVzKTogRml4IHR5cG8uCgkoc2NoZWRfaW5pdCk6IEluaXRpYWxpemUgSU5TTl9USUNLLCBJTlRFUl9USUNLIGFuZCBRVUVVRV9JTkRFWC4KCUNsYXJpZnkgY29tbWVudCBhbmQgY29kZSB0aGF0IGtlZXBzIGN1cnJlbnRfc2NoZWRfaW5mby0+bmV4dF90YWlsCglub24tbnVsbC4KCjIwMDYtMDMtMTYgIE1heGltIEt1dnlya292IDxta3V2eXJrb3ZAaXNwcmFzLnJ1PgoKCSogc2NoZWQtcmduLmMgKGV4dGVuZF9yZ25zKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShmaW5kX3JnbnMpOiBVc2UgaXQuCgkoZ2F0aGVyX3JlZ2lvbl9zdGF0aXN0aWNzLCBwcmludF9yZWdpb25fc3RhdGlzdGljcyk6IE5ldyBzdGF0aWMKCWZ1bmN0aW9ucy4KCSogcGFyYW1zLmRlZiAoUEFSQU1fTUFYX1NDSEVEX0VYVEVORF9SRUdJT05TX0lURVJTKTogTmV3IHBhcmFtZXRlci4KCSogZG9jL2ludm9rZS50ZXhpIChtYXgtc2NoZWQtZXh0ZW5kLXJlZ2lvbnMtaXRlcnMpOiBEb2N1bWVudC4KCjIwMDYtMDMtMTYgIE1heGltIEt1dnlya292IDxta3V2eXJrb3ZAaXNwcmFzLnJ1PgoJICAgIEFuZHJleSBCZWxldmFudHNldiA8YWJlbEBpc3ByYXMucnU+CgoJKiBkZGcuYyAoYnVpbGRfaW50cmFfbG9vcF9kZXBzKTogQWRqdXN0IGFkZF9mb3J3YXJkX2RlcGVuZGVuY2UgY2FsbC4KCSogbGlzdHMuYyAodW51c2VkX2RlcHNfbGlzdCk6IE5ldyB2YXJpYWJsZS4KCShmcmVlX2xpc3QpOiBBZGQgYXNzZXJ0aW9ucyB0byB2ZXJpZnkgdGhlIHByb3BlciBkaXN0aW5ndWlzaGluZwoJYmV0d2VlbiBJTlNOX0xJU1RzIGFuZCBERVBTX0xJU1RzLgoJKGZpbmRfbGlzdF9lbGVtLCByZW1vdmVfbGlzdF9lbGVtLCByZW1vdmVfbGlzdF9ub2RlKTogTmV3IHN0YXRpYwoJZnVuY3Rpb25zLgoJKGFsbG9jX0RFUFNfTElTVCwgZnJlZV9ERVBTX0xJU1QsIGZyZWVfREVQU19MSVNUX25vZGUsCglyZW1vdmVfZnJlZV9JTlNOX0xJU1RfZWxlbSwgcmVtb3ZlX2ZyZWVfREVQU19MSVNUX2VsZW0sCglyZW1vdmVfZnJlZV9JTlNOX0xJU1Rfbm9kZSwgcmVtb3ZlX2ZyZWVfREVQU19MSVNUX25vZGUpOiBOZXcgZnVuY3Rpb25zLgoJKGFsbG9jX0lOU05fTElTVCk6IEFzc2VydCB0aGF0IHRoZSBsaXN0IHdlJ3JlIHdvcmtpbmcgb24gaXMgaW5kZWVkCglhbiBJTlNOX0xJU1QuCgkoZnJlZV9JTlNOX0xJU1Rfbm9kZSk6IExpa2V3aXNlLgoJKiBtb2R1bG8tc2NoZWQuYyAoY3VycmVudF9zY2hlZF9pbmZvKTogSW5pdGlhbGl6ZSBmbGFncyBmaWVsZC4KCSogcmVnLW5vdGVzLmRlZjogRXhjaGFuZ2UgREVQX0FOVEkgYW5kIERFUF9PVVRQVVQuCgkqIHJ0bC5kZWYgKERFUFNfTElTVCk6IERlZmluZS4KCSogcnRsLmg6IERlY2xhcmUgbmV3IGZ1bmN0aW9ucyBmcm9tIGxpc3RzLmMuCgkqIHNjaGVkLWRlcHMuYyAoc3BlY19kZXBlbmRlbmN5X2NhY2hlKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShtYXliZV9hZGRfb3JfdXBkYXRlX2JhY2tfZGVwXzEsIGFkZF9iYWNrX2RlcCk6IE5ldyBzdGF0aWMgZnVuY3Rpb25zLgoJKGFkZF9kZXBlbmRlbmNlKTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIHZvaWQuICBNb3ZlIHRoZSBsb2dpYyB0byAuLi4KCShhZGRfb3JfdXBkYXRlX2JhY2tfZGVwXzEpOiAuLi4gaGVyZS4gIEhhbmRsZSBzcGVjdWxhdGl2ZSBkZXBlbmRlbmNpZXMuCgkoZGVsZXRlX2FsbF9kZXBlbmRlbmNlcyk6IEFkZCBjb21tZW50IGFib3V0IGZvcndhcmRfZGVwZW5kZW5jeV9jYWNoZS4KCUhhbmRsZSBzcGVjX2RlcGVuZGVuY3lfY2FjaGUuICBIYW5kbGUgREVQU19MSVNUcy4KCShmaXh1cF9zY2hlZF9ncm91cHMpOiBDbGFyaWZ5IHRoZSBjaGFuZ2Ugb2YgcHJpb3JpdHkgb2Ygb3V0cHV0CglhbmQgYW50aSBkZXBlbmRlbmNpZXMuCgkoc2NoZWRfYW5hbHl6ZV8yKTogQWRqdXN0IGFkZF9kZXBlbmRlbmNlIGNhbGxzIHRvIGNyZWF0ZSBkYXRhCglzcGVjdWxhdGl2ZSBkZXBlbmRlbmNlLgoJKGFkZF9mb3J3YXJkX2RlcGVuZGVuY2UpOiBSZW5hbWVkIHRvIGFkZF9mb3J3X2RlcCwgY2hhbmdlIHByb3RvdHlwZS4KCUFkanVzdCBhbGwgY2FsbGVycy4gIEhhbmRsZSBERVBTX0xJU1RTLgoJKGNvbXB1dGVfZm9yd2FyZF9kZXBlbmRlbmNlcyk6IFVzZSBhZGRfZm9yd19kZXAuICBTb3J0IExPR19MSU5LcyBpbgoJcHJlc2VuY2Ugb2Ygc3BlY3VsYXRpb24uCgkoaW5pdF9kZXBlbmRlbmN5X2NhY2hlcywgZnJlZV9kZXBlbmRlbmN5X2NhY2hlcyk6CglIYW5kbGUgc3BlY19kZXBlbmRlbmN5X2NhY2hlLgoJKGFkanVzdF9hZGRfc29ydGVkX2JhY2tfZGVwLCBhZGp1c3RfYmFja19hZGRfZm9yd19kZXAsIGRlbGV0ZV9mb3J3X2RlcCwKCWVzdGltYXRlX2RlcF93ZWFrLCBnZXRfZGVwX3dlYWssIGRzX21lcmdlLCBjaGVja19kZXBfc3RhdHVzKToKCU5ldyBzdGF0aWMgZnVuY3Rpb25zLgoJKGFkZF9vcl91cGRhdGVfYmFja19kZXAsIGFkZF9vcl91cGRhdGVfYmFja19mb3J3X2RlcCwKCWFkZF9iYWNrX2ZvcndfZGVwLCBkZWxldGVfYmFja19mb3J3X2RlcCk6IE5ldyBmdW5jdGlvbnMuCgkqIHNjaGVkLWludC5oIChkc190LCBkd190KTogTmV3IHR5cGVkZWZzLgoJKHN0cnVjdCBzY2hlZF9pbmZvKTogQWRkIG5ldyBmaWVsZCBmbGFncy4KCShzdHJ1Y3QgaGFpZmFfaW5zbl9kYXRhKTogQWRkIG5ldyBiaXRmaWVsZCBoYXNfaW50ZXJuYWxfZGVwLgoJUHJvdG90eXBlIG5ldyBzY2hlZC1kZXBzLmMgZnVuY3Rpb25zLgoJKEhBU19JTlRFUk5BTF9ERVAsIERFUF9TVEFUVVMpOiBOZXcgYWNjZXNzIG1hY3Jvcy4KCShCSVRTX1BFUl9ERVBfU1RBVFVTLCBCSVRTX1BFUl9ERVBfV0VBSywgREVQX1dFQUtfTUFTSywgTUFYX0RFUF9XRUFLLAoJTUlOX0RFUF9XRUFLLCBOT19ERVBfV0VBSywgVU5DRVJUQUlOX0RFUF9XRUFLLCBCRUdJTl9EQVRBLCBCRV9JTl9EQVRBLAoJQkVHSU5fQ09OVFJPTCwgQkVfSU5fQ09OVFJPTCwgQkVHSU5fU1BFQywgREFUQV9TUEVDLCBDT05UUk9MX1NQRUMsCglTUEVDVUxBVElWRSwgQkVfSU5fU1BFQywgRklSU1RfU1BFQ19UWVBFLCBMQVNUX1NQRUNfVFlQRSwKCVNQRUNfVFlQRV9TSElGVCwgREVQX1RSVUUsIERFUF9PVVRQVVQsIERFUF9BTlRJLCBERVBfVFlQRVMsIEhBUkRfREVQKToKCU5ldyBjb25zdGFudHMuCgkoZW51bSBTUEVDX1RZUEVTX09GRlNFVFMsIGVudW0gREVQU19BREpVU1RfUkVTVUxULCBlbnVtIFNDSEVEX0ZMQUdTKToKCU5ldyBlbnVtcy4KCSogc2NoZWQtcmduLmMgKGN1cnJlbnRfc2NoZWRfaW5mbyk6IEluaXRpYWxpemUgZmxhZ3MgZmllbGQuCgkoc2NoZWR1bGVfaW5zbnMpOiBJbml0aWFsaXplIGN1cnJlbnRfc2NoZWRfaW5mbyBiZWZvcmUgdGhlIHNjaGVkX2luaXQKCWNhbGwuCgkqIHNjaGVkLWViYi5jIChjdXJyZW50X3NjaGVkX2luZm8pOiBJbml0aWFsaXplIGZsYWdzIGZpZWxkLgoJKGFkZF9kZXBzX2Zvcl9yaXNreV9pbnNucyk6IFVzZSBjb250cm9sX2Zsb3dfaW5zbl9wIGluc3RlYWQgb2YgSlVNUF9QLgoJQ2FsbCBhZGRfb3JfdXBkYXRlX2JhY2tfZGVwIGluc3RlYWQgb2YgYWRkX2RlcGVuZGVuY2UuCglDcmVhdGUgY29udHJvbCBzcGVjdWxhdGl2ZSBkZXBlbmRlbmNpZXMuCgkoc2NoZWR1bGVfaW5zbnMpOiBJbml0aWFsaXplIGN1cnJlbnRfc2NoZWRfaW5mbyBiZWZvcmUgdGhlIHNjaGVkX2luaXQKCWNhbGwuCgoyMDA2LTAzLTE2ICBLYXogS29qaW1hICA8a2tvamltYUBnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy9zaC9saW51eC11bndpbmQuaCAoc2htZWRpYV9mYWxsYmFja19mcmFtZV9zdGF0ZSk6IFNldAoJZnMtPnNpZ25hbF9mcmFtZS4KCShzaF9mYWxsYmFja19mcmFtZV9zdGF0ZSk6IExpa2V3aXNlLgoKMjAwNi0wMy0xNSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcuZ2NjICgqLSotZGFyd2luKik6IERvbid0IGJ1aWxkIGNydDIubyBmb3IgYWxsIERhcndpbiBwb3J0cy4KCURvIHN3aXRjaCBvbiBkZWZhdWx0X3VzZV9jeGFfYXRleGl0LgoJKHBvd2VycGMqLSotZGFyd2luKik6IEJ1aWxkIGNydDIubyBvbiBwb3dlcnBjLgoJKiBjb25maWcvZGFyd2luLWNydDMubzogTmV3LgoJKiBjb25maWcvZGFyd2luLmggKExJTktfU1BFQyk6IElmIC1zaGFyZWQtbGliZ2NjLCBtYWtlIGxpbmtlciBkZWZhdWx0Cgl0byAxMC4zLiAgUGFzcyAnLW11bHRpcGx5X2RlZmluZWQgc3VwcHJlc3MnIGlmIGNydDMubyBpcyBpbiB1c2UuCgkoU1RBUlRGSUxFX1NQRUMpOiBBZGQgY3J0My5vIHdoZW4gLXNoYXJlZC1saWJnY2MgYW5kIGFwcHJvcHJpYXRlCglPUyB2ZXJzaW9uLgoJKiBjb25maWcvcnM2MDAwL3QtZGFyd2luOiBNb3ZlIGNydDIubyBidWlsZGluZyB0byBoZXJlLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5oIChDX0NPTU1PTl9PVkVSUklERV9PUFRJT05TKTogVXBkYXRlCglNYWMgT1MgdmVyc2lvbiBmb3IgdXNpbmcgX19jeGFfZ2V0X2V4Y2VwdGlvbl9wdHIuICBEb24ndCB0ZXN0IHZlcnNpb25zCglvZiBfX2N4YV9hdGV4aXQuCgoyMDA2LTAzLTE1ICBKYW4tQmVuZWRpY3QgR2xhdyAgPGpiZ2xhd0BsdWctb3dsLmRlPgoKCSogY29uZmlnL3ZheC92YXguYyAobm9uaW5kZXhlZF9hZGRyZXNzX3ApOiBDaGFuZ2UgbG9naWNhbCBuZWdhdGlvbgoJZnJvbSAnISB4eHgnIHRvICcheHh4JyBmb3IgY29kaW5nLXN0eWxlIGNvbmZvcm1hbmNlLgoJKiBjb25maWcvdmF4L3ZheC5oIChQQ0NfQklURklFTERfVFlQRV9NQVRURVJTKTogTGlrZXdpc2UuCgkoRVhUUkFfQ09OU1RSQUlOVCk6IExpa2V3aXNlLgoJKiBjb25maWcvdmF4L3ZheC5tZCAoZm91ciB1bm5hbWVkIGluc25zKTogTGlrZXdpc2UuCgoyMDA2LTAzLTE1ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAobWluaXBvb2xfcGFkKTogTmV3LgoJKGFkZF9taW5pcG9vbF9mb3J3YXJkX3JlZik6IEluY2x1ZGUgcG9vbCBhbGlnbm1lbnQgcGFkZGluZyBpbiBhZGRyZXNzCgljYWxjdWxhdGlvbi4KCShwdXNoX21pbmlwb29sX2ZpeCk6IFNldCBtaW5pcG9vbF9wYWQuCgkobWluaXBvb2xfcGFkKTogRGl0dG8uCgoyMDA2LTAzLTE1ICBKYW4tQmVuZWRpY3QgR2xhdyAgPGpiZ2xhd0BsdWctb3dsLmRlPgoKCSogY29uZmlnL3ZheC92YXguYyAoc3BsaXRfcXVhZHdvcmRfb3BlcmFuZHMpOiBVc2UgTUVNX1AoKQoJaW5zdGVhZCBvZiBHRVRfQ09ERSgpID09IE1FTSBhbmQgUkVHX1AoKSBpbnN0ZWFkIG9mCglHRVRfQ09ERSgpID09IFJFRy4KCShwcmludF9vcGVyYW5kX2FkZHJlc3MpOiBMaWtld2lzZS4KCSh2YXhfYWRkcmVzc19jb3N0KTogTGlrZXdpc2UuCgkodmF4X3J0eF9jb3N0cyk6IExpa2V3aXNlLgoJKHZheF9ub3RpY2VfdXBkYXRlX2NjKTogTGlrZXdpc2UuCgkodmF4X291dHB1dF9pbnRfYWRkKTogTGlrZXdpc2UuCgkoSU5ERVhfUkVHSVNURVJfUCk6IExpa2V3aXNlLgoJKEJBU0VfUkVHSVNURVJfUCk6IExpa2V3aXNlLgoJKG5vbmluZGV4ZWRfYWRkcmVzc19wKTogTGlrZXdpc2UuCgkodmF4X21vZGVfZGVwZW5kZW50X2FkZHJlc3NfcCk6IExpa2V3aXNlLgoJKiBjb25maWcvdmF4L3ZheC5oIChFWFRSQV9DT05TVFJBSU5UKTogTGlrZXdpc2UuCgkoUFJJTlRfT1BFUkFORCk6IExpa2V3aXNlLgoJKiBjb25maWcvdmF4L3ZheC5tZCAoYXNobHNpMyk6IExpa2V3aXNlLgoJKGFzaGxzaTMpOiBMaWtld2lzZS4KCShzb21lIG1vcmUgdW5uYW1lZCBpbnNucyk6IExpa2V3aXNlLgoKMjAwNi0wMy0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLXNzYS1kY2UuYyAoRVhFQ1VURV9JRl9DT05UUk9MX0RFUEVOREVOVCk6IE1ha2UgaXQgYW4KCWl0ZXJhdG9yLXN0eWxlIG1hY3JvLgoJKG1hcmtfY29udHJvbF9kZXBlbmRlbnRfZWRnZXNfbmVjZXNzYXJ5KTogVXBkYXRlIHRoZSB1c2Ugb2YKCUVYRUNVVEVfSUZfQ09OVFJPTF9ERVBFTkRFTlQuCgoyMDA2LTAzLTE1ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3QuY29tPgoKCSogY29uZmlnL3NoL3ByZWRpY2F0ZXMubWQgKGNhY2hlX2FkZHJlc3Nfb3BlcmFuZCk6IFNwZWNpYWwuCgkodWFfYWRkcmVzc19vcGVyYW5kKTogTGlrZXdpc2UuCgoyMDA2LTAzLTE1ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBoYWlmYS1zY2hlZC5jICh1bmxpbmtfb3RoZXJfbm90ZXMsIHJlZW1pdF9ub3Rlcyk6IERvIG5vdCBoYW5kbGUKCWxvb3Agbm90ZXMuCgkqIHNjaGVkLWRlcHMuYyAoc2NoZWRfYW5hbHl6ZV9pbnNuLCBzY2hlZF9hbmFseXplKTogRGl0dG8uCgoyMDA2LTAzLTE1ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogZ2Vuc3VwcG9ydC5jIChpZGVudGlmeV9wcmVkaWNhYmxlX2F0dHJpYnV0ZSk6IERvbid0IGZyZWUgcF9mYWxzZQoJd2hlbiBpdCBpcyBzdGlsbCBpbiB1c2UuCgoyMDA2LTAzLTE1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnLmdjYyAoZGVmYXVsdCB3aXRoX2NwdSBzZXR0aW5nKSA8c3BhcmMqLSotKj46IERvIG5vdCBtb2RpZnkKCXRoZSBkZWZhdWx0IHNldHRpbmcgaGVyZS4KCjIwMDYtMDMtMTQgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmIuZ2NjQGdtYWlsLmNvbT4KCgkqIHRyZWUtcGFzcy5oIChwYXNzX2NmZyk6IFJlbW92ZS4KCSogYWxpYXMuYyAocmVzdF9vZl9oYW5kbGVfY2ZnLCBwYXNzX2NmZyk6IFJlbW92ZS4KCSogcGFzc2VzLmMgKHBhc3NfY2ZnKTogRG9uJ3QgcnVuIGl0LgoKMjAwNi0wMy0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAocmVnLXN0YWNrLm8pOiBEb24ndCBkZXBlbmQgb24gZ3QtcmVnLXN0YWNrLmguCgkqIHJlZy1zdGFjay5jIChzdGFja19yZWdzX21lbnRpb25lZF9kYXRhKTogQ2hhbmdlIHRoZSB0eXBlIHRvCglWRUMoY2hhcixoZWFwKSAqLgoJKHN0YWNrX3JlZ3NfbWVudGlvbmVkKTogVXBkYXRlIHRoZSB1c2VzIG9mCglzdGFja19yZWdzX21lbnRpb25lZF9kYXRhLiAgRG9uJ3QgYWNjZXNzIHRoZSBhcnJheSBiZXlvbmQgaXRzCgllbmQuCgkocmVnX3RvX3N0YWNrKTogVXBkYXRlIHRoZSB1c2VzIG9mIHN0YWNrX3JlZ3NfbWVudGlvbmVkX2RhdGEuCglEb24ndCBpbmNsdWRlIGd0LXJlZy1zdGFjay5oLgoKCSogY29uZmlnL2JmaW4vYmZpbi5oIChVTkFMSUdORURfV09SRF9BU01fT1ApOiBSZW1vdmUuCgkqIHN5c3RlbS5oIChVTkFMSUdORURfV09SRF9BU01fT1ApOiBQb2lzb24uCgoJKiBjb21iaW5lLmMgKFVXSURFX1NISUZUX0xFRlRfQllfQklUU19QRVJfV09SRCk6IFJlbW92ZS4KCglQUiBtaWRkbGUtZW5kLzI2Njg0CgkqIHJlZy1zdGFjay5jIChzdGFja19yZWdzX21lbnRpb25lZF9kYXRhKTogUHV0IGl0IHVuZGVmICNpZmRlZgoJU1RBQ0tfUkVHUy4KCjIwMDYtMDMtMTQgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS9wYTMyLWxpbnV4LmggKENSVF9DQUxMX1NUQVRJQ19GVU5DVElPTik6IEZpeCB0eXBvLgoKMjAwNi0wMy0xNCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2NjcyCgkqIHRyZWUtc3NhLXByb3BhZ2F0ZS5jIChzZXRfcmhzKTogRG9uJ3Qgd2FsayBERUZzIGlmIG5vdCBpbgoJU1NBIGZvcm0uCgoyMDA2LTAzLTE0ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjY2NjcKCSogaXBhLWlubGluZS5jIChjZ3JhcGhfY2hlY2tfaW5saW5lX2xpbWl0cyk6IFdhbGsgdGhlIGNvcnJlY3QKCW5vZGUgZm9yIHRoZSBjYWxsZWVzLiAgQWx3YXlzIGFsbG93IGlubGluaW5nIGlmIGl0IHdpbGwgc2hyaW5rCgl0aGUgZnVuY3Rpb24gc2l6ZS4KCjIwMDYtMDMtMTQgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzI2NjU5CgkqIGJ1aWx0aW5zLmMgKGdldF9wb2ludGVyX2FsaWdubWVudCk6IFByZWZlciBhbGlnbm1lbnQKCWluZm9ybWF0aW9uIGZyb20gZGVjbHMgb3ZlciB0aGF0IGZyb20gdHlwZXMuCgoyMDA2LTAzLTE0ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0YXJnZXQvMjY2NTcKCSogY29uZmlnL2Rhcndpbi5oIChMSU5LX0NPTU1BTkRfU1BFQyk6IEhhbmRsZSAtZm9wZW5tcC4KCjIwMDYtMDMtMTQgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAub3B0IChtZGxtemIpOiBOZXcgb3B0aW9uLgoJKG1zY2hlZC1wcm9sb2csIG1zY2hlZC1lcGlsb2cpOiBVc2UgVmFyIG5vdCBNYXNrLgoJKiBkb2MvaW52b2tlLnRleGkgKC1tZGxtemIpOiBEb2N1bWVudC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAoVEFSR0VUX0RFRkFVTFRfVEFSR0VUX0ZMQUdTKTogUmVtb3ZlCglNQVNLX1NDSEVEX1BST0xPRy4KCShyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IEVuYWJsZSAtbWRsbXpiIGZvciA0MDUgYW5kIDQ0MC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IEFkZCBkbG16YiBzdXBwb3J0IGZvciA0MDUgYW5kIDQ0MC4KCjIwMDYtMDMtMTMgIFV0dGFtIFBhd2FyICA8dXR0YW1wQHVzLmlibS5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yNTczOQoJKiBidC1sb2FkLmMgKGF1Z21lbnRfbGl2ZV9yYW5nZSk6IEZyZWUgdG9zIHBvaW50ZXIuCgoJKiBnZW5zdXBwb3J0LmMgKGlkZW50aWZ5X3ByZWRpY2FibGVfYXR0cmlidXRlKTogRnJlZQoJcF9mYWxzZSBwb2ludGVyLgoJKiBnY292LmMgKGNyZWF0ZV9maWxlX25hbWVzKTogRnJlZSBuYW1lIHBvaW50ZXIuCgoyMDA2LTAzLTEzICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzI2NTU3CgkqIHN0bXQuYyAoZW1pdF9jYXNlX25vZGVzKTogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBpbmRleCBpcyBhCglDT05TVF9JTlQsIHdoZXJlIHRoZSBjb21wYXJpc29uIG1vZGUgaXMgc3BlY2lmaWVkIGJ5IHRoZSBpbmRleCB0eXBlLgoKMjAwNi0wMy0xMyAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhL3BhMzItbGludXguaCAoQ1JUX0NBTExfU1RBVElDX0ZVTkNUSU9OKTogRGVmaW5lIHdoZW4gQ1JUU1RVRkZTX08KCWlzIGRlZmluZWQuCgoyMDA2LTAzLTEzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKCpicmFuY2hfZnApOiBVc2UgJVoyIGZvciB0aGUgY29uZGl0aW9uLgoJKCpicmFuY2hfZnBfaW52ZXJ0ZWQpOiBMaWtld2lzZS4KCjIwMDYtMDMtMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjU5ODkKCSogb21wLWxvdy5jIChleHBhbmRfb21wX2Zvcl9nZW5lcmljKTogTWFyayBpc3RhcnQwCglhbmQgaWVuZDAgYXMgYWRkcmVzc2FibGUuCgoyMDA2LTAzLTEzICBKaWUgWmhhbmcgIDxqaWUuemhhbmdAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL3VjbGludXguaDogRGVmaW5lIF9HTlVfU09VUkNFIGluIENQTFVTUExVU19DUFBfU1BFQy4KCjIwMDYtMDMtMTMgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLXZycC5jIChzdG10X2ludGVyZXN0aW5nX2Zvcl92cnApOiBTb21lIHN0YXRlbWVudHMgd2l0aAoJdmlydHVhbCBvcGVyYW5kcyBhcmUgaW50ZXJlc3RpbmcuCgkodnJwX3Zpc2l0X3N0bXQpOiBDb3JyZXNwb25kaW5nIGNoYW5nZXMuCgoyMDA2LTAzLTEzICBCZXJuZCBTY2htaWR0ICA8YmVybmQuc2NobWlkdEBhbmFsb2cuY29tPgoKCSogY29uZmlnL2JmaW4vbGliMWZ1bmNzLmFzbSAoX19fdW1vZHNpMyk6IFVzZSBzdGFjayB0byBzYXZlIGNvbnRlbnRzCglvZiBSRVRTLgoJKiBjb25maWcvYmZpbi9iZmluLmggKFRBUkdFVF9DUFVfQ1BQX0JVSUxUSU5TKTogSWYKCVRBUkdFVF9JRF9TSEFSRURfTElCUkFSWSwgZGVmaW5lIF9fSURfU0hBUkVEX0xJQl9fLgoJKiBjb25maWcvYmZpbi9jcnRpLlM6IFVzZSBpdCBpbnN0ZWFkIG9mIF9fUElDX18uCgkqIGNvbmZpZy9iZmluL2NydG4uUzogTGlrZXdpc2UuCgoJKiBjb25maWcvYmZpbi9iZmluLm1kIChjYWxsX3ZhbHVlX3N5bWJvbCwgc2liY2FsbF92YWx1ZV9zeW1ib2wsCgljYWxsX3N5bWJvbCwgc2liY2FsbF9zeW1ib2wpOiBEaXNhbGxvdyBpZiBUQVJHRVRfSURfU0hBUkVEX0xJQlJBUlksCglub3QgaWYgZmxhZ19waWMuCglMb3NlICdHJyBtb2RpZmllciBmb3IgY2FsbCBvcGVyYW5kLgoJKiBjb25maWcvYmZpbi9iZmluLmMgKHByaW50X29wZXJhbmQpIDxjYXNlIFNZTUJPTF9SRUY+OiBEb24ndAoJcmVjb2duaXplICdHJyBtb2RpZmllci4KCjIwMDYtMDMtMTMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJUFIgbWlkZGxlLWVuZC8xODg1OQoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9zd2l0Y2hfZXhwcik6IERpc2NhcmQgZW1wdHkgcmFuZ2VzLgoJKiBzdG10LmMgKGV4cGFuZF9jYXNlKTogTGlrZXdpc2UuCgoyMDA2LTAzLTEzICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yNjI1NAoJKiBsb29wLWludmFyaWFudC5jIChzZXFfaW5zbnNfdmFsaWRfcCk6IE5ldyBmdW5jdGlvbi4KCShtb3ZlX2ludmFyaWFudF9yZWcpOiBPbmx5IGVtaXQgbmV3IGNvZGUgaWYgaXQgaXMgdmFsaWQuCgoyMDA2LTAzLTEzICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBjZmdydGwuYyAobGFzdF9sb29wX2JlZ19ub3RlLCBiYWNrX2VkZ2Vfb2Zfc3ludGFjdGljX2xvb3BfcCk6CglSZW1vdmVkLgoJKGZvcmNlX25vbmZhbGx0aHJ1X2FuZF9yZWRpcmVjdCk6IERvIG5vdCB1c2UgbGFzdF9sb29wX2JlZ19ub3RlLgoJKHJ0bF9zcGxpdF9lZGdlKTogRG8gbm90IHVzZSBiYWNrX2VkZ2Vfb2Zfc3ludGFjdGljX2xvb3BfcC4KCShjb21taXRfb25lX2VkZ2VfaW5zZXJ0aW9uKTogRG8gbm90IGxvb2sgZm9yIGxvb3Agbm90ZXMuCgoyMDA2LTAzLTEzICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBqdW1wLmMgKGZvbGxvd19qdW1wcyk6IERvIG5vdCBjaGVjayBmb3IgbG9vcCBub3Rlcy4gIE1vdmUgY2hlY2sgZm9yCglmbGFnX3Rlc3RfY292ZXJhZ2Ugb3V0IG9mIGxvb3AuCgoyMDA2LTAzLTEzICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBmaW5hbC5jIChzaG9ydGVuX2JyYW5jaGVzKTogUmVtb3ZlIG91dGRhdGVkIGNvbW1lbnQsIGFuZCB0dXJuCgl0aGUgaWYgYnJhbmNoIHRoYXQgZ3VhcmRzIGl0IHRvIGNvbnRpbnVlLgoKMjAwNi0wMy0xMyAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogY2ZnbG9vcC5jIChmbG93X2xvb3BfZHVtcCk6IERvIG5vdCBkdW1wIGxvb3AtPmludmFsaWQgZmllbGQuCgkqIGNmZ2xvb3AuaCAoc3RydWN0IGxvb3ApOiBSZW1vdmUgdW51c2VkIGZpZWxkcy4KCjIwMDYtMDMtMTMgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpICgtZmR1bXAtcnRsLWxvb3ApOiBSZW1vdmUuCgkoLWRMLCAtZmR1bXAtcnRsLWxvb3AyKTogVXBkYXRlIHRoZSBkdW1wIGZpbGUgbmFtZXMKCgkqIGRvYy9pbnZva2UudGV4aTogVXBkYXRlIGR1bXAgZmlsZSBuYW1lcy4KCjIwMDYtMDMtMTIgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmIuZ2NjQGdtYWlsLmNvbT4KCgkqIHByZWRpY3QuYyAoZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBSZW1vdmUuCgkqIHByb2ZpbGUuYyAocmVzdF9vZl9oYW5kbGVfYnJhbmNoX3Byb2IsIHBhc3NfYnJhbmNoX3Byb2IpOiBSZW1vdmUuCgkqIGJhc2ljLWJsb2NrLmggKGVzdGltYXRlX3Byb2JhYmlsaXR5KTogUmVtb3ZlIHByb3RvdHlwZS4KCSogcGFzc2VzLmMgKGZpbmlzaF9vcHRpbWl6YXRpb25fcGFzc2VzKTogRHVtcCBicmFuY2ggcHJlZGljdGlvbiBvcgoJcHJvZmlsaW5nIGhldXJpc3RpY3MgdG8gdGhlIC5wcm9maWxlIHRyZWUgZHVtcC4KCShpbml0X29wdGltaXphdGlvbl9wYXNzZXMpOiBVbnF1ZXVlIHBhc3NfYnJhbmNoX3Byb2IuCgoJKiBkb2MvaW52b2tlLnRleGkgKC1mZHVtcC1ydGwtYnApOiBSZW1vdmUuCgoyMDA2LTAzLTExICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iLmdjY0BnbWFpbC5jb20+CgoJKiBydGwuZGVmIChMQUJFTF9SRUYpOiBSZW1vdmUgdGhlIGZpZWxkIGZvciBMQUJFTF9ORVhUUkVGLgoJKiBydGwuaCAoTEFCRUxfTkVYVFJFRik6IFJlbW92ZSBmaWVsZCBhY2Nlc3Nvci4KCjIwMDYtMDMtMTEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBmdW5jdGlvbi5oIChmcmFtZV9vZmZzZXRfb3ZlcmZsb3cpOiBEZWNsYXJlLgoJKiBmdW5jdGlvbi5jIChmcmFtZV9vZmZzZXRfb3ZlcmZsb3cpOiBOZXcgZnVuY3Rpb24uCgkoYXNzaWduX3N0YWNrX2xvY2FsXzEpOiBDYWxsIGl0IHRvIGRldGVjdCB0aGF0IHRoZSBvZmZzZXQgb3ZlcmZsb3dzLgoJKiBjZmdleHBhbmQuYyAoYWxsb2Nfc3RhY2tfZnJhbWVfc3BhY2UpOiBMaWtld2lzZS4KCjIwMDYtMDMtMTEgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmIuZ2NjQGdtYWlsLmNvbT4KCgkqIGNvbmZpZy9zaC9zaC5jOiBJbmNsdWRlIGFsbG9jLXBvb2wuaC4KCShsYWJlbF9yZWZfbGlzdF9wb29sKTogTmV3IGFsbG9jIHBvb2wuCgkobGFiZWxfcmVmX2xpc3RfdCk6IE5ldyB0eXBlIGZvciBsaXN0cyBvZiBsYWJlbHMuCgkoc3RydWN0IHBvb2xfbm9kZSk6IE1ha2Ugd2VuZCBhIGxhYmVsX3JlZl9saXN0X3QuCgkoYWRkX2NvbnN0YW50KTogVXNlIHRoZSBuZXcgdHlwZSwgZXJhZGljYXRlIExBQkVMX05FWFRSRUYKCXJlZmVyZW5jZXMuCgkoZHVtcF90YWJsZSk6IExpa2V3aXNlLgoJKHNoX3Jlb3JnKTogU2V0IHVwIHRoZSBhbGxvYyBwb29sIGJlZm9yZSB1c2luZyBhZGRfY29uc3RhbnQgYW5kCglkdW1wX3RhYmxlLCBhbmQgZGVzdHJveSBpdCB3aGVuIGZpbmlzaGluZy4KCjIwMDYtMDMtMTEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy5jOiBSZW1vdmUgcmVkdW5kYW50IGNvbW1lbnQuCgoyMDA2LTAzLTEwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjLzI2MDA0CgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X21vZGlmeV9leHByX3Jocyk6IERvbid0IGRvIHJldHVybiBzbG90IG9wdCBpZgoJdGhlIHRhcmdldCB3YXMgZGVjbGFyZWQgJ3JlZ2lzdGVyJy4KCjIwMDYtMDMtMTAgIEFkYW0gTmVtZXQgIDxhbmVtZXRAY2F2aXVtbmV0d29ya3MuY29tPgoKCSogZ2VucHJlZHMuYyAod3JpdGVfaW5zbl9jb25zdHJhaW50X2xlbik6IENoYW5nZSBkZWZpbml0aW9uIG9mCglpbnNuX2NvbnN0cmFpbnRfbGVuIHRvIHJldHVybiBzaXplX3QgdG8gbWF0Y2ggdGhlIGRlY2xhcmF0aW9uLgoKMjAwNi0wMy0xMCAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbTMyYy9tMzJjLmMgKG0zMmNfY29uc3Rfb2tfZm9yX2NvbnN0cmFpbnRfcCk6IEJpdCBudW1iZXJzCglzdGFydCBhdCB6ZXJvLgoJKG0zMmNfZXhwYW5kX2luc3YpOiBGaXggdGVzdCBmb3IgYW4gQU5EIG1hc2suCgoyMDA2LTAzLTEwICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8yNjU2NQoJKiBidWlsdGlucy5jIChnZXRfcG9pbnRlcl9hbGlnbm1lbnQpOiBIYW5kbGUgY29tcG9uZW50CglyZWZlcmVuY2VzIGZvciBmaWVsZCBhbGlnbm1lbnQuCgoyMDA2LTAzLTEwICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3QuY29tPgoKCSogY29uZmlnLmdjYyAoc2gqLXN1cGVyaC1lbGYsIHNoKmVsZiAobmV3bGliKSk6IFVzZSBuZXdsaWIuaAoJd2hlbiBidWlsZGluZyB3aXRoIGxpYmdsb3NzLgoJKHNoKmVsZik6IEltcGxlbWVudCAtLXdpdGhvdXQtZnAgb3B0aW9uLgoJKHNoNjQtc3VwZXJoLWxpbnV4Kik6IERvbid0IG11bHRpbGliLgoKMjAwNi0wMy0xMCAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN0LmNvbT4KCgkqIHN0cnVjdC1lcXVpdi5jIChydHhfZXF1aXZfcCk6IEZpeCBQT1NUX01PRElGWSBjYXNlLgoKMjAwNi0wMy0wOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiB0cmVlLXNzYS1waGlvcHQuYyAodHJlZV9zc2FfcGhpb3B0KTogQWRkIGNmZ2NoYW5nZWQgdmFyaWFibGUuCglTZXQgaXQgd2hlbiBvbmUgb2YgdGhlIHJlcGxhY2VtZW50IGZ1bmN0aW9ucyByZXR1cm5lZCB0cnVlLgoJUmV0dXJuIFRPRE9fY2xlYW51cF9jZmcgaWYgY2ZnY2hhbmdlZCBpcyB0cnVlLgoJKHBhc3NfcGhpb3B0KSA8dG9kb19mbGFnc19maW5pc2g+OiBSZW1vdmUgVE9ET19jbGVhbnVwX2NmZy4KCjIwMDYtMDMtMDkgIEFkYW0gTmVtZXQgIDxhbmVtZXRAY2F2aXVtbmV0d29ya3MuY29tPgoKCSogY29tYmluZS5jIChzaW1wbGlmeV9zaGlmdF9jb25zdF8xKTogVXNlIGdlbl9sb3dwYXJ0X29yX3RydW5jYXRlCglpbnN0ZWFkIG9mIGdlbl9sb3dwYXJ0LgoKMjAwNi0wMy0wOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvbWlwcy9taXBzLXByb3Rvcy5oIChtaXBzX291dHB1dF9jb25kaXRpb25hbF9icmFuY2gpOiBDaGFuZ2UKCWludGVyZmFjZS4KCShtaXBzX291dHB1dF9vcmRlcl9jb25kaXRpb25hbF9icmFuY2gpOiBEZWNsYXJlLgoJKiBjb25maWcvbWlwcy9taXBzLmggKE1JUFNfQlJBTkNIKTogTmV3IG1hY3JvLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKGdlbl9jb25kaXRpb25hbF9icmFuY2gpOiBVc2UgVk9JRG1vZGUKCWZvciB0aGUgY29tcGFyaXNvbi4gIFVzZSBnZW5fY29uZGp1bXAuCgkobWlwc19vdXRwdXRfY29uZGl0aW9uYWxfYnJhbmNoKTogUmV3b3JrIGludGVyZmFjZSB0byB0YWtlIHRoZQoJYXNtIHRlbXBsYXRlcyBmb3IgYSBkaXJlY3QgYnJhbmNoIGFuZCB0aGUgaW52ZXJzZSBvZiBhIGRpcmVjdCBicmFuY2guCgkobWlwc19vdXRwdXRfb3JkZXJfY29uZGl0aW9uYWxfYnJhbmNoKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfYnVpbHRpbl9icmFuY2hfYW5kX21vdmUpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19leHBhbmRfYnVpbHRpbl9jb21wYXJlKTogVXNlIGl0LiAgVXNlIFZPSURtb2RlIGZvciB0aGUKCWJyYW5jaCBjb25kaXRpb24uICBVc2UgZ2VuX3NpbmdsZV9jYyBhcyB0aGUgY29uZGl0aW9uIGZvcgoJX19idWlsdGluX21pcHNfdXBwZXJfKiBvciBfX2J1aWx0aW5fbWlwc19sb3dlcl8qLgoJKG1pcHNfZXhwYW5kX2J1aWx0aW5fYnBvc2dlKTogVXNlIG1pcHNfYnVpbHRpbl9icmFuY2hfYW5kX21vdmUuCglVc2UgVk9JRG1vZGUgZm9yIHRoZSBicmFuY2ggY29uZGl0aW9uLgoJKiBjb25maWcvbWlwcy9wcmVkaWNhdGVzLm1kIChvcmRlcl9vcGVyYXRvcik6IE5ldyBwcmVkaWNhdGUuCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKFVOU1BFQ19TSU5HTEVfQ0MpOiBOZXcgY29uc3RhbnQuCgkoYnJhbmNoX2ZwKTogUmVuYW1lIHRvLi4uCgkoKmJyYW5jaF9mcCk6IC4uLnRoaXMuICBSZW1vdmUgbW9kZSBmcm9tIGNvbXBhcmlzb24gb3BlcmF0b3IuCglVc2UgbmV3IG1pcHNfb3V0cHV0X2NvbmRpdGlvbmFsX2JyYW5jaCBpbnRlcmZhY2UuCgkoYnJhbmNoX2ZwX2ludmVydGVkKTogUmVuYW1lIHRvLi4uCgkoKmJyYW5jaF9mcF9pbnZlcnRlZCk6IC4uLnRoaXMgYW5kIHVwZGF0ZSBhcyBmb3IgKmJyYW5jaF9mcC4KCSgqYnJhbmNoX3plcm88bW9kZT4pOiBSZW5hbWUgdG8uLi4KCSgqYnJhbmNoX29yZGVyPG1vZGU+KTogLi4udGhpcy4gIFJlbW92ZSBtb2RlIGZyb20gY29tcGFyaXNvbiBvcGVyYXRvci4KCVVzZSBtaXBzX291dHB1dF9vcmRlcl9jb25kaXRpb25hbF9icmFuY2guICBPbmx5IGFjY2VwdCBvcmRlcmVkCgljb21wYXJpc29ucy4KCSgqYnJhbmNoX3plcm88bW9kZT5faW52ZXJ0ZWQpOiBSZW5hbWUgdG8uLi4KCSgqYnJhbmNoX29yZGVyPG1vZGU+X2ludmVydGVkKTogLi4udGhpcyBhbmQgdXBkYXRlIGFzIGZvcgoJKmJyYW5jaF9vcmRlcjxtb2RlPi4KCSgqYnJhbmNoX2VxdWFsaXR5PG1vZGU+KTogQWNjZXB0IHplcm8gYXMgdGhlIHNlY29uZCBvcGVyYW5kIHRvCgl0aGUgZXF1YWxpdHkgb3BlcmF0b3IuICBVc2UgdGhlIG5ldyBtaXBzX291dHB1dF9jb25kaXRpb25hbF9icmFuY2gKCWludGVyZmFjZS4KCSgqYnJhbmNoX2VxdWFsaXR5PG1vZGU+X2ludmVydGVkKTogTGlrZXdpc2UuCgkoY29uZGp1bXApOiBOZXcgZXhwYW5kZXIuCgkqIGNvbmZpZy9taXBzL21pcHMtZHNwLm1kIChtaXBzX2Jwb3NnZSk6IFJlbW92ZSBtb2RlIGZyb20gY29tcGFyaXNvbgoJb3BlcmF0b3IuCgkqIGNvbmZpZy9taXBzL21pcHMtcHMtM2QubWQgKGJjMWFueTR0LCBiYzFhbnk0Zik6IExpa2V3aXNlLgoJKGJjMWFueTJ0LCBiYzFhbnkyZik6IExpa2V3aXNlLgoJKHNpbmdsZV9jYyk6IE5ldyBleHBhbmRlci4KCSgqYnJhbmNoX3VwcGVyX2xvd2VyLCAqYnJhbmNoX3VwcGVyX2xvd2VyX2ludmVydGVkKTogTmV3IHBhdHRlcm5zLgoKMjAwNi0wMy0wOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvbWQudGV4aTogVXBkYXRlIGRvY3VtZW50YXRpb24gb2YgTUlQUyBjb25zdHJhaW50cy4KCSogY29uZmlnL21pcHMvY29uc3RyYWludHMubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvbWlwcy9taXBzLm1kOiBJbmNsdWRlIGl0LgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfY2hhcl90b19jbGFzcyk6IERlbGV0ZS4KCShvdmVycmlkZV9vcHRpb25zKTogRG9uJ3QgaW5pdGlhbGl6ZSBtaXBzX2NoYXJfdG9fY2xhc3MuCgkqIGNvbmZpZy9taXBzL21pcHMuaCAobWlwc19jaGFyX3RvX2NsYXNzKTogRGVsZXRlLgoJKFJFR19DTEFTU19GUk9NX0xFVFRFUik6IERlbGV0ZS4KCShDT05TVF9PS19GT1JfTEVUVEVSX1ApOiBEZWxldGUuCgkoQ09OU1RfRE9VQkxFX09LX0ZPUl9MRVRURVJfUCk6IERlbGV0ZS4KCShFWFRSQV9DT05TVFJBSU5UX1kpOiBEZWxldGUuCgkoRVhUUkFfQ09OU1RSQUlOVF9TVFIpOiBEZWxldGUuCgkoQ09OU1RSQUlOVF9MRU4pOiBEZWxldGUuCgkoRVhUUkFfTUVNT1JZX0NPTlNUUkFJTlQpOiBEZWxldGUuCgoyMDA2LTAzLTA5ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtY2ZnLmMgKG1vdmVfYmxvY2tfdG9fZm4pOiBSZW1vdmUgdGhlIHN0YXRlbWVudHMgZnJvbSB0aGUKCW9yaWdpbmFsIGZuJ3MgZWggcmVnaW9ucy4KCjIwMDYtMDMtMDkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGJ1aWxkX3JhbmdlX2NoZWNrKTogTWFrZSBzdXJlIHRvIHVzZSBhIHZhbGlkIHR5cGUgdG8KCWFwcGx5IHRoZSAiKGM+PWxvdykgJiYgKGM8PWhpZ2gpIGludG8gKGMtbG93Pj0wKSAmJiAoYy1sb3c8PWhpZ2gtbG93KSIKCXRyYW5zZm9ybWF0aW9uLgoKCShyYW5nZV9wcmVkZWNlc3Nvcik6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkocmFuZ2Vfc3VjY2Vzc29yKTogTGlrZXdpc2UuCgkobWVyZ2VfcmFuZ2VzKTogVXNlIHRoZW0gdG8gY29tcHV0ZSBwcmVkZWNlc3NvcnMgYW5kIHN1Y2Nlc3NvcnMgb2YKCXJhbmdlIGJvdW5kcy4KCjIwMDYtMDMtMDkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMjY1NjEKCSogZm9sZC1jb25zdC5jIChmb2xkX2Rpdl9jb21wYXJlKTogV2hlbiBvcHRpbWl6aW5nIFgvQzEgb3AgQzIgYXMKCVggb3AgQzMsIGNvbnNpZGVyIHdoZXRoZXIgQzMgb3ZlcmZsb3dzIHRvd2FyZHMgK0luZiBvciAtSW5mLgoKMjAwNi0wMy0wOCAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbTMyYy9hZGRzdWIubWQgKGFkZHFpMyk6IERpc3BhcmFnZSBhMC9hMS4KCShhZGRwc2kzKTogRXhwYW5kIHRvIGluY2x1ZGUgbWVtb3J5IG9wZXJhbmRzLiAgUmVtb3ZlCglyZWxvYWQtc3BlY2lmaWMgc3BsaXRzLgoJKiBjb25maWcvbTMyYy9iaXRvcHMubWQgKGJzZXRfcWksIGJzZXRfaGksIGJjbHJfcWkpOiBOZXcuCgkoYW5kcWkzXzE2LCBhbmRoaTNfMTYsIGlvcnFpM18xNiwgaW9yaGkzXzE2KTogTmV3LgoJKGFuZHFpM18yNCwgYW5kaGkzXzI0LCBpb3JxaTNfMjQsIGlvcmhpM18yNCk6IE5ldy4KCShhbmRxaTMsIGFuZGhpMywgaW9ycWkzLCBpb3JoaTMpOiBDb252ZXJ0IHRvIGV4cGFuZGVycy4KCShzaGlmdDFfcWksIHNoaWZ0MV9oaSwgaW5zdik6IE5ldy4KCSogY29uZmlnL20zMmMvY29uZC5tZCAoY2JyYW5jaHFpNCwgY2JyYW5jaGhpNCk6IFJlbW92ZS4KCShjYnJhbmNoPG1vZGU+NCwgc3R6eF8xNiwgc3R6eF8yNF88bW9kZT4sIHN0enhfcmV2ZXJzZWQsCgljbXA8bW9kZT4sIGI8Y29kZT4sIHM8Y29kZT4sIHM8Y29kZT5fMjQsIG1vdnFpY2MsIG1vdmhpY2MsCgljb25kX3RvX2ludCk6IE5ldy4KCSogY29uZmlnL20zMmMvbTMyYy1wcm90b3MuaDogVXBkYXRlIGFzIG5lZWRlZC4KCSogY29uZmlnL20zMmMvbTMyYy5jIChtMzJjX3JlZ19jbGFzc19mcm9tX2NvbnN0cmFpbnQpOiBEb24ndAoJZGVmYXVsdCB0aGUgUmNyLCBSY2wsIFJhdywgYW5kIFJhbCBjb25zdHJhaW50cy4gIEFkZCBSYTAgYW5kIFJhMS4KCUZhaWwgZm9yIHVucmVjb2duaXplZCBSKiBjb25zdHJhaW50cy4KCShtMzJjX2Nhbm5vdF9jaGFuZ2VfbW9kZV9jbGFzcyk6IEJlIG1vcmUgcGlja3kgYWJvdXQgcHNldWRvcy4KCShtMzJjX2NvbnN0X29rX2Zvcl9jb25zdHJhaW50X3ApOiBBZGQgSW1iLCBJbXcsIGFuZCBJMDAuCgkobTMyY19leHRyYV9jb25zdHJhaW50X3AyKTogQWxsb3cgKG1lbSAocGx1cyAocGx1cyBmYiBpbnQpIGludCkpLgoJQWRkIFNwIGNvbnN0cmFpbnQuCgkobTMyY19pbml0X2xpYmZ1bmNzKTogTmV3LgoJKG0zMmNfbGVnaXRpbWF0ZV9hZGRyZXNzX3ApOiBBZGQgZGVidWcgd3JhcHBlci4KCShtMzJjX3J0eF9jb3N0cyk6IE5ldy4KCShtMzJjX2FkZHJlc3NfY29zdCk6IE5ldy4KCShjb252ZXJzaW9ucyk6IEFkZCAnQicgcHJlZml4LgoJKG0zMmNfcHJpbnRfb3BlcmFuZCk6ICdoJyBhbmQgJ0gnIHBpY2sgbG93ZXIgYW5kIHVwcGVyIGhhbHZlcyBvZgoJb3BlcmFuZHMsIG9yIHdvcmQgcmVnbmFtZXMgZm9yIFFJIG9wZXJhbmRzLiAgJ0InIHByaW50cyBiaXQKCXBvc2l0aW9uLgoJKG0zMmNfZXhwYW5kX3NldG1lbWhpKTogTmV3LgoJKG0zMmNfZXhwYW5kX21vdm1lbWhpKTogTmV3LgoJKG0zMmNfZXhwYW5kX21vdnN0cik6IE5ldy4KCShtMzJjX2V4cGFuZF9jbXBzdHIpOiBOZXcuCgkobTMyY19wcmVwYXJlX3NoaWZ0KTogU2hpZnQgY291bnRzIGFyZSBsaW1pdGVkIHRvIDE2IGJpdHMgYXQgYSB0aW1lLgoJKG0zMmNfZXhwYW5kX25lZ19tdWxwc2kzKTogSGFuZGxlIG5vbi1pbnRzLgoJKG0zMmNfY21wX2ZsZ18wKTogTmV3LgoJKG0zMmNfZXhwYW5kX21vdmNjKTogTmV3LgoJKG0zMmNfZXhwYW5kX2luc3YpOiBOZXcuCgkobTMyY19zY2NfcGF0dGVybik6IE5ldy4KCSogY29uZmlnL20zMmMvbTMyYy5oIChyZWcgY2xhc3Nlcyk6IEFkZCBBT19SRUdTIGFuZCBBMV9SRUdTLiAgVGFrZQoJYTAvYTEgb3V0IG9mIFNJcmVncy4KCShTVE9SRV9GTEFHX1ZBTFVFKTogTmV3LgoJKiBjb25maWcvbTMyYy9tMzJjLm1kOiBBZGQgdW5zcGVjcyBmb3Igc3RyaW5nIG1vdmVzLiAgRGVmaW5lIHZhcmlvdXMgbW9kZSBhbmQKCWNvZGUgbWFjcm9zLgoJKG5vX2luc24pOiBOZXcuCgkqIGNvbmZpZy9tMzJjL21vdi5tZDogTWFrZSBjb25zdHJhaW50cyBtb3JlIGxpYmVyYWwuCgkoemVyb19leHRlbmRxaWhpMik6IE9wdGltaXplIHIwL3IxIGNhc2UuCgkqIGNvbmZpZy9tMzJjL211bGRpdi5tZCAobXVscHNpMyk6IENoZWNrIGZvciBpbnR2YWxzLgoJKiBjb25maWcvbTMyYy9wcmVkaWNhdGVzLm1kIChtMzJjX2FueV9vcGVyYW5kKTogTmV3LgoJKG0zMmNfbm9uaW1tZWRpYXRlX29wZXJhbmQpOiBOZXcuCgkobTMyY19obF9vcGVyYW5kKTogTmV3LgoJKG0zMmNfcjNfb3BlcmFuZCk6IE5ldy4KCShhcF9vcGVyYW5kKTogTmV3LgoJKG1hX29wZXJhbmQpOiBOZXcuCgkobWVtc3ltX29wZXJhbmQpOiBOZXcuCgkobWVtaW1tZWRfb3BlcmFuZCk6IE5ldy4KCShhX3FpX29wZXJhbmQpOiBOZXcuCgkobTMyY19lcW5lX29wZXJhdG9yKTogTmV3LgoJKG0zMmNfMWJpdDhfb3BlcmFuZCk6IE5ldy4KCShtMzJjXzFiaXQxNl9vcGVyYW5kKTogTmV3LgoJKG0zMmNfMW1hc2s4X29wZXJhbmQpOiBOZXcuCgkobTMyY18xbWFzazE2X29wZXJhbmQpOiBOZXcuCgkqIGNvbmZpZy9tMzJjL2Jsa21vdi5tZDogTmV3IGZpbGUuCgkqIGNvbmZpZy9tMzJjL3QtbTMyYyAoTURfRklMRVMpOiBBZGQgYmxrbW92LgoKMjAwNi0wMy0wOCAgQW5kcmVhcyBUb2JsZXIgIDxhLnRvYmxlckBzY2h3ZWl6LmNoPgoKCSogZHdhcmYyb3V0LmMgKGV4cGFuZF9idWlsdGluX2R3YXJmX3NwX2NvbHVtbik6IE1ha2UgZHdhcmZfcmVnbnVtCgl1bnNpZ25lZCB0byBmaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gaXNzdWUgaW4KCURXQVJGMl9GUkFNRV9SRUdfT1VULgoJKGV4cGFuZF9idWlsdGluX2luaXRfZHdhcmZfcmVnX3NpemVzKTogTWFrZSBpIHVuc2lnbmVkIHRvIGZpeCBzaWduZWQvCgl1bnNpZ25lZCBjb21wYXJpc29uIGlzc3VlIGluIERXQVJGMl9GUkFNRV9SRUdfT1VULgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZmluYWxpemVfc3NhX2RlZl9vcHMpOiBNb3ZlIHRoZSBkZWNsYXJhdGlvbgoJb2YgcHRyIGludG8gdGhlIEVOQUJMRV9DSEVDS0lORyBzZWN0aW9uLgoKMjAwNi0wMy0wOCAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtdnJwLmMgKGluZmVyX3ZhbHVlX3JhbmdlKTogT25seSBjb3VudCBwb2ludGVyIHVzZXMKCWFuZCBkZXJlZmVyZW5jZXMgaWYgLWZkZWxldGUtbnVsbC1wb2ludGVyLWNoZWNrcyBpcyBlbmFibGVkLgoKCSogdHJlZS12cnAuYyAoZmluZF9hc3NlcnRfbG9jYXRpb25zKTogSW5mZXIgdmFsdWUgcmFuZ2VzIGZvcgoJc2luZ2xlIHVzZSBwb2ludGVycywgYnV0IGRvIG5vdCBjcmVhdGUgQVNTRVJUX0VYUFJzIGZvciB0aGVtLgoJV2hlbiBhIG5vbi1udWxsIHJhbmdlIGlzIGluZmVycmVkIGZvciBhIHBvaW50ZXIsIGJhY2t3YXJkcwoJcHJvcGFnYXRlIHRoYXQgcmFuZ2UgdG8gb3RoZXIgZXF1aXZhbGVudCBwb2ludGVycyB0aHJvdWdoIHRoZQoJdXNlLWRlZiBjaGFpbi4KCjIwMDYtMDMtMDggIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgYm9vdHN0cmFwLzI2NTAwCgkqIE1ha2VmaWxlLmluIChkdmksIGh0bWwsIGluc3RhbGwtaW5mbyk6IEludm9rZSB0aGUgY29ycmVzcG9uZGluZwoJbGFuZ3VhZ2UgaG9vayB0YXJnZXRzLgoJKiBhZGEvTWFrZS1sYW5nLmluLCBjcC9NYWtlLWxhbmcuaW4sIG9iamMvTWFrZS1sYW5nLmluLAoJb2JqY3AvTWFrZS1sYW5nLmluOiBDcmVhdGUgc3R1YiBydWxlcyBmb3IgZHZpLCBodG1sLCBpbnN0YWxsLWluZm8KCWlmIGxhbmd1YWdlIGhvb2sgdGFyZ2V0cyB3ZXJlIG1pc3NpbmcuCgoyMDA2LTAzLTA3ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLXNzYS1vcGZpbmFsaXplLmg6IFJlbW92ZWQuCgkqIE1ha2VmaWxlLmluICh0cmVlLXNzYS1vcGVyYW5kcy5vKTogUmVtb3ZlIHRyZWUtc3NhLW9wZmluYWxpemUuaAoJZGVwZW5kZW5jeS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYzogRG8gbm90IGluY2x1ZGUgdHJlZS1zc2Etb3BmaW5hbGl6ZS5oLgoJKEFMTE9DX09QVFlQRSwgQVBQRU5EX09QX0FGVEVSLCBNT1ZFX0hFQURfQUZURVIsIE1PVkVfSEVBRF9UT19GUkVFTElTVCwKCUlOSVRJQUxJWkVfVVNFLCBhZGRfZGVmX29wLCBhZGRfdXNlX29wLCBhZGRfdnVzZV9vcCwgYWRkX21heWRlZl9vcCwKCWFkZF9tdXN0ZGVmX29wLCBmaW5hbGl6ZV9zc2FfZGVmX29wcywgZmluYWxpemVfc3NhX3VzZV9vcHMsCglmaW5hbGl6ZV9zc2Ffdl9tYXlfZGVmX29wcywgZmluYWxpemVfc3NhX3Z1c2Vfb3BzLAoJZmluYWxpemVfc3NhX3ZfbXVzdF9kZWZfb3BzKTogTmV3LgoKMjAwNi0wMy0wNyAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCgkqIGRmLXNjYW4uYzogKGRmX2JiX3JlZnNfcmVjb3JkKTogRml4IG9idmlvdXMgdHlwbyB3aXRoIHdyb25nCglibG9jayBhcyBwYXJhbWV0ZXIuCgoyMDA2LTAzLTA3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIHZhcmFzbS5jIChhc3NlbWJsZV9lbmRfZnVuY3Rpb24pOiBTYXkgdGhhdCAnZm5uYW1lJyBpcyB1bnVzZWQuCgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZGVsZWdpdGltaXplX2FkZHJlc3MpOiBIYW5kbGUgRGFyd2luCglhZGRyZXNzZXMgd2l0aCBvZmZzZXRzOyByZW9yZ2FuaXplLgoKCSogZHdhcmYyb3V0LmMgKERXQVJGMl9GUkFNRV9SRUdfT1VUKTogTW92ZSB1cCBpbiBmaWxlLgoJKGV4cGFuZF9idWlsdGluX2R3YXJmX3NwX2NvbHVtbik6IENhbGwgRFdBUkYyX0ZSQU1FX1JFR19PVVQuCgkoZXhwYW5kX2J1aWx0aW5faW5pdF9kd2FyZl9yZWdfc2l6ZXMpOiBMaWtld2lzZS4KCjIwMDYtMDMtMDggIERhdmlkIEJpbGxpbmdodXJzdCA8RGF2aWQuQmlsbGluZ2h1cnN0QHJpb3RpbnRvLmNvbT4KCglQUiB0YXJnZXQvMjY1ODgKCSogY29uZmlnL2kzODYvY3lnd2luLmggKEdPTVBfU0VMRl9TUEVDUyk6IERlZmluZS4KCjIwMDYtMDMtMDggIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogY29uZmlnL2ZwLWJpdC5oIChDTVB0eXBlKTogVHlwZWRlZiB0byBhIHdvcmQgbW9kZSBpbnRlZ2VyLgoKMjAwNi0wMy0wNyAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCVBSIGdvbXAvMjYyMzgKCSogZG9jL3Bhc3Nlcy50ZXhpIChUcmVlLVNTQSBwYXNzZXMpOiBEb2N1bWVudCBvbXAgbG93ZXJpbmcgYW5kCglleHBhbnNpb24uCgoyMDA2LTAzLTA3ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjY1ODcKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoaGFuZGxlX3B0cl9hcml0aCk6IEhhbmRsZSBNSU5VU19FWFBSLgoKMjAwNi0wMy0wNyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2YXJhc20uYyAoYXNzZW1ibGVfdmFyaWFibGUpOiBGaXggc2V0dGluZyBvZiBERUNMX0lOX1RFWFRfU0VDVElPTi4KCjIwMDYtMDMtMDcgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogaG9va3MuYyAoaG9va19ib29sX21vZGVfcnR4X3RydWUpOiBOZXcgZnVuY3Rpb24uCgkqIGhvb2tzLmggKGhvb2tfYm9vbF9tb2RlX3J0eF90cnVlKTogRGVjbGFyZS4KCSogdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSk6IENhbGwgb3V0cHV0X3NoYXJlZF9jb25zdGFudF9wb29sLgoJKiB2YXJhc20uYyAoc2hhcmVkX2NvbnN0YW50X3Bvb2wpOiBOZXcgdmFyaWFibGUuCgkoYXNzZW1ibGVfc3RhcnRfZnVuY3Rpb24sIGFzc2VtYmxlX2VuZF9mdW5jdGlvbik6IFJlbW92ZSBhcmd1bWVudHMKCWZyb20gY2FsbCB0byBvdXRwdXRfY29uc3RhbnRfcG9vbC4KCShjcmVhdGVfY29uc3RhbnRfcG9vbCk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20uLi4KCShpbml0X3ZhcmFzbV9zdGF0dXMpOiAuLi5oZXJlLgoJKGZvcmNlX2NvbnN0X21lbSk6IENob29zZSBiZXR3ZWVuIHRoZSBzaGFyZWQgYW5kIHBlci1mdW5jdGlvbiBjb25zdGFudAoJcG9vbHMuICBTZXQgY3VycmVudF9mdW5jdGlvbl91c2VzX2NvbnN0X3Bvb2wgd2hlbiByZXVzaW5nIG9sZCBlbnRyaWVzCglhcyB3ZWxsIGFzIHdoZW4gY3JlYXRpbmcgbmV3IG9uZXMuCgkobWFya19jb25zdGFudCk6IElnbm9yZSBkYXRhIGFyZ3VtZW50LgoJKG1hcmtfY29uc3RhbnRzKTogUmVtb3ZlIHBvb2wgYXJndW1lbnQuCgkobWFya19jb25zdGFudF9wb29sKTogTGlrZXdpc2UuICBVc2UgY3VycmVudF9mdW5jdGlvbl91c2VzX2NvbnN0X3Bvb2wKCXRvIGRlY2lkZSB3aGV0aGVyIHRoZSBmdW5jdGlvbiB1c2VzIGEgY29uc3RhbnQgcG9vbC4KCShvdXRwdXRfY29uc3RhbnRfcG9vbF9jb250ZW50cyk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20uLi4KCShvdXRwdXRfY29uc3RhbnRfcG9vbCk6IC4uLmhlcmUuCgkob3V0cHV0X3NoYXJlZF9jb25zdGFudF9wb29sKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfdmFyYXNtX29uY2UpOiBJbml0aWFsaXplIHNoYXJlZF9jb25zdGFudF9wb29sLgoJKiBvdXRwdXQuaCAob3V0cHV0X2NvbnN0YW50X3Bvb2wpOiBEZWxldGUuCgkob3V0cHV0X3NoYXJlZF9jb25zdGFudF9wb29sKTogRGVjbGFyZS4KCSogY29uZmlnL3MzOTAvczM5MC1wcm90b3MuaCAoczM5MF9vdXRwdXRfY29uc3RhbnRfcG9vbCk6IERlbGV0ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChUQVJHRVRfVVNFX0JMT0NLU19GT1JfQ09OU1RBTlRfUCk6IE92ZXJyaWRlLgoKMjAwNi0wMy0wNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tMzJyL20zMnIuaCAoT1BUSU1JWkFUSU9OX09QVElPTlMpOiBSZW1vdmUgcmVmZXJlbmNlIHRvCglmbGFnX3N0cmVuZ3RoX3JlZHVjZS4KCjIwMDYtMDMtMDYgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogY29uZmlnLmdjYzogQWRkIHQtZGZwcnVsZXMgdG8gJHRtYWtlX2ZpbGUgZm9yIGkqODYtKi1saW51eCogYW5kCgl4ODZfNjQtKi1saW51eCogY29uZmlndXJhdGlvbnMuCgoJKiBjb25maWcvZGZwLWJpdC5oIChDTVB0eXBlKTogVHlwZWRlZiB0byBhIHdvcmQgbW9kZSBpbnRlZ2VyLgoJKExJQkdDQzJfV09SRFNfQklHX0VORElBTik6IERlZmluZS4KCjIwMDYtMDMtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmMgKHJlZGlzY292ZXJfbG9vcHNfYWZ0ZXJfdGhyZWFkaW5nKToKCVJlbW92ZS4KCSogYmFzaWMtYmxvY2suaDogUmVtb3ZlIHRoZSBleHRlcm4gZm9yCglyZWRpc2NvdmVyX2xvb3BzX2FmdGVyX3RocmVhZGluZy4KCgkqIGNmZ2xvb3AuYyAoY2FuY2VsX2xvb3ApOiBNYWtlIGl0IHN0YXRpYy4KCSogY2ZnbG9vcC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgY2FuY2VsX2xvb3AuCgoJKiBmbG93LmMgKHJlY29tcHV0ZV9yZWdfdXNhZ2UpOiBNYWtlIGl0IHN0YXRpYy4KCSogcnRsLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciByZWNvbXB1dGVfcmVnX3VzYWdlLgoKCSogZnVuY3Rpb24uYyAodXNlX3JldHVybl9yZWdpc3Rlcik6IE1ha2UgaXQgc3RhdGljLgoJKiBmdW5jdGlvbi5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZS4KCjIwMDYtMDMtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogcmVjb2cuYyAodm9sYXRpbGVfbWVtX3AsIHZhbGlkYXRlX2NoYW5nZV9tYXliZV92b2xhdGlsZSk6CglSZW1vdmUuCgkqIHJlY29nLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJdmFsaWRhdGVfY2hhbmdlX21heWJlX3ZvbGF0aWxlLgoKMjAwNi0wMy0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBydGxhbmFsLmMgKHJlcGxhY2VfcmVnKTogUmVtb3ZlLgoJKiBydGwuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIHJlcGxhY2VfcmVnLgoKMjAwNi0wMy0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiByZWdjbGFzcy5jIChyZWdfc2Nhbl91cGRhdGUpOiBSZW1vdmUuCgkocmVnX3NjYW5fbWFya19yZWZzKTogUmVtb3ZlIHRoZSBsYXN0IGFyZ3VtZW50LgoJKiBydGwuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIHJlZ19zY2FuX3VwZGF0ZS4KCjIwMDYtMDMtMDQgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogYnVpbHRpbnMuYywgYy1wcmFnbWEuaCwgYy10eXBlY2suYywgY2dyYXBoLmMsIGNncmFwaHVuaXQuYywKCWNvbWJpbmUuYywgY29tbW9uLm9wdCwgY29uZmlnL2RmcC1iaXQuYywgY29uZmlnL2kzODYvaTM4Ni5jLAoJY29uZmlnL202OGsvbTY4ay5jLCBjb25maWcvbTY4ay9tNjhrLm1kLCBjb25maWcvbXQvbXQuYywKCWNvbmZpZy9tdC9tdC5oLCBjb25maWcvczM5MC9zMzkwLm1kLCBkZi1jb3JlLmMsIGRmLXByb2JsZW1zLmMsCglkZi1zY2FuLmMsIGRmLmgsIGRpYWdub3N0aWMuYywgZXhwci5jLCBmdW5jdGlvbi5oLCBnaW1wbGlmeS5jLAoJbG9vcC1pbnZhcmlhbnQuYywgb21wLWxvdy5jLCBvcHRzLmMsIHBhc3Nlcy5jLAoJcnRsLWZhY3RvcmluZy5jLCBydGxhbmFsLmMsIHN0cnVjdC1lcXVpdi5jLCB0cmVlLWNmZ2NsZWFudXAuYywKCXRyZWUtc3NhLWxvb3Atbml0ZXIuYywgdHJlZS1zc2EtbG9vcC1wcmVmZXRjaC5jLAoJdHJlZS1zc2Etc3RydWN0YWxpYXMuYywgdHJlZS1zc2EtdGhyZWFkZWRnZS5jLAoJdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmMsIHRyZWUtdmVjdC1wYXR0ZXJucy5jLAoJdHJlZS12ZWN0LXRyYW5zZm9ybS5jLCB0cmVlLXZlY3Rvcml6ZXIuaCwgdHJlZS12cnAuYywKCXVud2luZC1kdzIuYzogRml4IGNvbW1lbnQgdHlwb3MuICBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCgoyMDA2LTAzLTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR3YXJmMm91dC5jIChkd2FyZjJvdXRfYWRkX2xpYnJhcnlfdW5pdF9pbmZvKTogUmVtb3ZlLgoJKiBkd2FyZjJvdXQuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCglkd2FyZjJvdXRfYWRkX2xpYnJhcnlfdW5pdF9pbmZvLgoKMjAwNi0wMy0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmMgKGFkZF92YXJfdG9fYmluZF9leHByKTogUmVtb3ZlLgoJKiB0cmVlLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBhZGRfdmFyX3RvX2JpbmRfZXhwci4KCjIwMDYtMDMtMDQgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogcmVnY2xhc3MuYyAobl9ub25fZml4ZWRfcmVncyk6IFJlbW92ZS4KCShpbml0X3JlZ19zZXRzXzEsIGdsb2JhbGl6ZV9yZWcpOiBSZW1vdmUgYWxsIHVzZXMgb2YKCW5fbm9uX2ZpeGVkX3JlZ3MuCgkqIGhhcmQtcmVnLXNldC5oOiBSZW1vdmUgdGhlIGV4dGVybiBmb3Igbl9ub25fZml4ZWRfcmVncy4KCjIwMDYtMDMtMDQgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogcnRsYW5hbC5jIChpbnNuc19zYWZlX3RvX21vdmVfcCk6IFJlbW92ZS4KCSogcnRsLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBpbnNuc19zYWZlX3RvX21vdmVfcC4KCjIwMDYtMDMtMDQgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZXhwbWVkLmMgKGV4cGFuZF9tdWx0X2FkZCk6IFJlbW92ZS4KCSogZXhwci5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgZXhwYW5kX211bHRfYWRkLgoKMjAwNi0wMy0wNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB1bndpbmQtZHcyLmggKF9VbndpbmRfRnJhbWVTdGF0ZSk6IEFkZCBSRUdfU0FWRURfVkFMX09GRlNFVAoJYW5kIFJFR19TQVZFRF9WQUxfRVhQIGNvbnN0YW50cy4KCSogdW53aW5kLWR3Mi5jIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0KTogQWRkIGJ5X3ZhbHVlIGFycmF5LgoJKF9VbndpbmRfR2V0R1IsIF9VbndpbmRfU2V0R1IsIF9VbndpbmRfR2V0R1JQdHIsIF9VbndpbmRfU2V0R1JQdHIpOgoJSGFuZGxlIHJlZ3Mgc3RvcmVkIGJ5IHZhbHVlLgoJKF9VbndpbmRfU2V0R1JWYWx1ZSwgX1Vud2luZF9HUkJ5VmFsdWUpOiBOZXcgZnVuY3Rpb25zLgoJKGV4ZWN1dGVfY2ZhX3Byb2dyYW0pOiBIYW5kbGUgRFdfQ0ZBX3ZhbF9vZmZzZXQsCglEV19DRkFfdmFsX29mZnNldF9zZiBhbmQgRFdfQ0ZBX3ZhbF9leHByZXNzaW9uLgoJKHV3X3VwZGF0ZV9jb250ZXh0XzEpOiBIYW5kbGUgUkVHX1NBVkVEX1JFRyB3aXRoIHJlZ3Mgc3RvcmVkIGJ5Cgl2YWx1ZSBzcGVjaWFsbHkuICBIYW5kbGUgUkVHX1NBVkVEX1ZBTF9PRkZTRVQgYW5kIFJFR19TQVZFRF9WQUxfRVhQLgoJKHV3X2luc3RhbGxfY29udGV4dF8xKTogSGFuZGxlIHRhcmdldCByZWdzIHN0b3JlZCBieSB2YWx1ZS4KCjIwMDYtMDMtMDMgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zcmEuYyAodHJlZV9zcmEpOiBSZXR1cm4gdG9kb2ZsYWdzOwoJKGdlbmVyYXRlX29uZV9lbGVtZW50KTogU2V0IFRPRE9fdXBkYXRlX3NtdF91c2FnZSBpZiBuZWVkZWQuCgkocGFzc19zcmEpOiBSZW1vdmUgVE9ET191cGRhdGVfc210X3VzYWdlLgoJKiB0cmVlLXNzYS1mb3J3cHJvcC5jIChmb3J3YXJkX3Byb3BhZ2F0ZV9hZGRyX2V4cHIpOiBBZGQgc29tZQoJcGFyYW1ldGVyLgoJKHRyZWVfc3NhX2ZvcndhcmRfcHJvcGFnYXRlX3NpbmdsZV91c2VfdmFycyk6IFJldHVybgoJVE9ET191cGRhdGVfc210X3VzYWdlIGlmIHdlIG5lZWQgdG8gdXBkYXRlIFNNVCB1c2FnZS4KCShwYXNzX2Zvcndwcm9wKTogUmVtb3ZlIFRPRE9fdXBkYXRlX3NtdF91c2FnZS4KCjIwMDYtMDMtMDMgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYzogVGlkeSB3aGl0ZXNwYWNlLiAgRml4IHNwZWxsaW5nLgoJKGNvcnJlY3RfdXNlX2xpbmspOiBSZW1vdmUgcmVmZXJlbmNlIHRvIGdldF9zdG10X29wZXJhbmRzLgoJKHVwZGF0ZV9zdG10X29wZXJhbmRzKTogTGlrZXdpc2UuCgkoZ2V0X21vZGlmeV9leHByX29wZXJhbmRzKTogTmV3IGZ1bmN0aW9uIGZhY3RvcmVkIG91dCBvZgoJcGFyc2Vfc3NhX29wZXJhbmRzIGFuZCBnZXRfZXhwcl9vcGVyYW5kcy4KCVRyeSB0byBjcmVhdGUgVl9NVVNUX0RFRnMgZm9yIExIUyBieSBkZWZhdWx0LgoJKGdldF9leHByX29wZXJhbmRzKSA8Y2FzZSBNT0RJRllfRVhQUj46IENhbGwKCWdldF9tb2RpZnlfZXhwcl9vcGVyYW5kcy4KCTxjYXNlIEFSUkFZX1JBTkdFX1JFRj46IEhhbmRsZSB0b2dldGhlciB3aXRoIEFSUkFZX1JFRi4KCTxjYXNlIEJJVF9GSUVMRF9SRUY+OiBDbGVhciBvcGZfa2lsbF9kZWYgZnJvbSBGTEFHUy4KCShwYXJzZV9zc2Ffb3BlcmFuZHMpIDxjYXNlIE1PRElGWV9FWFBSPjogQ2FsbAoJZ2V0X21vZGlmeV9leHByX29wZXJhbmRzLgoKMjAwNi0wMy0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLWRmYS5jIChyZWZlcmVuY2VkX3Zhcl9sb29rdXBfaWZfZXhpc3RzKTogUmVtb3ZlLgoJKiB0cmVlLWZsb3cuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCglyZWZlcmVuY2VkX3Zhcl9sb29rdXBfaWZfZXhpc3RzLgoKMjAwNi0wMy0wMyAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yNjM0NQoJUFIgdGFyZ2V0LzE5MDYxCgkqIGNvbmZpZy9pYTY0L3ByZWRpY2F0ZXMubWQgKGJhc2VyZWdfb3BlcmFuZCk6IERvbid0IGxvb2sgaW4gc3VicmVncy4KCjIwMDYtMDMtMDMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2NTI0CgkqIHRyZWUtc2NhbGFyLWV2b2x1dGlvbi5jIChpbnRlcnByZXRfcmhzX21vZGlmeV9leHByKTogVXNlCglmb2xkX2NvbnZlcnQgdG8gY3JlYXRlIGEgY29uc3RhbnQgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCgoyMDA2LTAzLTAzICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy90bS50ZXhpOiBSZWZlciB0byBTWU1CT0xfUkVGX0hBU19CTE9DS19JTkZPX1AgaW5zdGVhZCBvZgoJU1lNQk9MX1JFRl9JTl9CTE9DS19QLgoJKiBkb2MvcnRsLnRleGk6IExpa2V3aXNlLiAgUmVmZXIgdG8gU1lNQk9MX0ZMQUdfSEFTX0JMT0NLX0lORk8gaW5zdGVhZAoJb2YgU1lNQk9MX0ZMQUdfSU5fQkxPQ0suCgkqIGdlbmd0eXBlLmMgKGFkanVzdF9maWVsZF9ydHhfZGVmKTogVXNlIFNZTUJPTF9SRUZfSEFTX0JMT0NLX0lORk9fUAoJaW5zdGVhZCBvZiBTWU1CT0xfUkVGX0lOX0JMT0NLX1AuCgkqIGV4cGxvdy5jICh1c2VfYW5jaG9yZWRfYWRkcmVzcyk6IExpa2V3aXNlLgoJKiBydGwuYyAocnR4X3NpemUpOiBMaWtld2lzZS4KCSogdmFyYXNtLmMgKGNyZWF0ZV9ibG9ja19zeW1ib2wpOiBTZXQgU1lNQk9MX0ZMQUdfSEFTX0JMT0NLX0lORk8KCWluc3RlYWQgb2YgU1lNQk9MX0ZMQUdfSU5fQkxPQ0suCgkobWFrZV9kZWNsX3J0bCk6IFVzZSBTWU1CT0xfUkVGX0hBU19CTE9DS19JTkZPX1AgaW5zdGVhZCBvZgoJU1lNQk9MX1JFRl9JTl9CTE9DS19QLgoJKGFzc2VtYmxlX3ZhcmlhYmxlKTogTGlrZXdpc2UuCgkob3V0cHV0X2NvbnN0YW50X2RlZl9jb250ZW50cyk6IExpa2V3aXNlLgoJKG91dHB1dF9jb25zdGFudF9wb29sKTogTGlrZXdpc2UuCgkoZGVmYXVsdF9lbmNvZGVfc2VjdGlvbl9pbmZvKTogUHJlc2VydmUgU1lNQk9MX0ZMQUdfSEFTX0JMT0NLX0lORk8KCWluc3RlYWQgb2YgU1lNQk9MX0ZMQUdfSU5fQkxPQ0suCgkqIHJ0bC5oIChibG9ja19zeW1ib2wpOiBSZWZlciB0byBTWU1CT0xfUkVGX0hBU19CTE9DS19JTkZPX1AgaW5zdGVhZCBvZgoJU1lNQk9MX1JFRl9JTl9CTE9DS19QLgoJKFNZTUJPTF9SRUZfQkxPQ0spOiBMaWtld2lzZS4KCShTWU1CT0xfUkVGX09GRlNFVCk6IExpa2V3aXNlLgoJKEJMT0NLX1NZTUJPTF9DSEVDSyk6IFVzZSBTWU1CT0xfUkVGX0hBU19CTE9DS19JTkZPX1AgaW5zdGVhZCBvZgoJU1lNQk9MX1JFRl9JTl9CTE9DS19QLgoJKFNZTUJPTF9GTEFHX0lOX0JMT0NLKTogUmVwbGFjZSB3aXRoLi4uCgkoU1lNQk9MX0ZMQUdfSEFTX0JMT0NLX0lORk8pOiAuLi50aGlzLgoJKFNZTUJPTF9SRUZfSU5fQkxPQ0tfUCk6IFJlcGxhY2Ugd2l0aC4uLgoJKFNZTUJPTF9SRUZfSEFTX0JMT0NLX0lORk9fUCk6IC4uLnRoaXMuCgoyMDA2LTAzLTAzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9hcm0vdW53aW5kLWFybS5oIChfVW53aW5kX0dldElQSW5mbyk6IEZpeCBwYXN0by4KCjIwMDYtMDMtMDIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbik6IFdoZW4gc2ltcGxpZnlpbmcKCShuZWcgKGx0IFggMCkpIGludG8gKGFzaGlmdHJ0IFggQykgb3IgKGxzaGlmdHJ0IFggQyksIG1ha2Ugc3VyZQoJdGhhdCB3ZSBwZXJmb3JtIHRoZSByaWdodCBzaGlmdCBpbiB0aGUgYXBwcm9wcmlhdGUgbW9kZSwgYW5kCgl0aGVuIGV4dGVuZCBvciB0cnVuY2F0ZSB0aGUgcmVzdWx0IHRvIHJlcXVlc3RlZCBtb2RlLgoKMjAwNi0wMy0wMyAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogZ2VuZ3R5cGUuYyAobWFpbik6IEhhbmRsZSBkb3VibGVfaW50IHR5cGUuCgkqIHRyZWUuaCAoc3RydWN0IHRyZWVfaW50X2NzdCk6IE1ha2UgdHlwZSBvZiBpbnRfY3N0IGRvdWJsZV9pbnQuCgkqIGRvdWJsZS1pbnQuYzogTmV3IGZpbGUuCgkqIGRvdWJsZS1pbnQuaDogTmV3IGZpbGUuCgkqIHN5c3RlbS5oOiBJbmNsdWRlIGRvdWJsZWludC5oLgoJKiBNYWtlZmlsZS5pbiAoU1lTVEVNX0gpOiBJbmNsdWRlIGRvdWJsZS1pbnQuaC4KCShkb3VibGUtaW50Lm8pOiBBZGQuCgoyMDA2LTAzLTAzICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBib290c3RyYXAvMjY0NzgKCSogTWFrZWZpbGUuaW4gKHN0bXAtaW50LWhkcnMpOiBSZW1vdmUgaW5jbHVkZS91bndpbmQuaCBiZWZvcmUKCWNvcHlpbmcgb3ZlciBpdC4KCjIwMDYtMDMtMDIgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtdnJwLmMgKHJlbW92ZV9yYW5nZV9hc3NlcnRpb25zKTogRG8gbm90IHVwZGF0ZSBzdGF0ZW1lbnRzCgl1bm5lY2Vzc2FyaWx5LgoKMjAwNi0wMy0wMiAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogY3NlLmMgKHJlc3Rfb2ZfaGFuZGxlX2NzZSk6IERvIG5vdCBwYXNzIENMRUFOVVBfUFJFX0xPT1AgdG8gY2ZnCgljbGVhbnVwLgoJKiBnY3NlLmMgKHJlc3Rfb2ZfaGFuZGxlX2djc2UpOiBEaXR0by4KCSogZXhjZXB0LmMgKGdhdGVfaGFuZGxlX2VoKTogRGl0dG8uCgkqIGNmZ2NsZWFudXAuYyAocmVzdF9vZl9oYW5kbGVfanVtcDIpOiBEaXR0by4KCSogYmFzaWMtYmxvY2suaCAoQ0xFQU5VUF9QUkVfTE9PUCk6IFJlbW92ZS4KCjIwMDYtMDMtMDIgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG1hY2hvcGljX291dHB1dF9zdHViKTogQWRkIGluZGlyZWN0aW9uIHRvCglqdW1wLgoKMjAwNi0wMy0wMiAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogbG9vcC5jOiBSZW1vdmVkLgoKMjAwNi0wMy0wMiAgRGF2aWQgUy4gTWlsbGVyICA8ZGF2ZW1Ac3Vuc2V0LmRhdmVtbG9mdC5uZXQ+CgoJU3VuIE5pYWdhcmEgc3BlY2lmaWMgb3B0aW1pemF0aW9ucy4KCSogY29uZmlnLmdjYzogUmVjb2duaXplIG5pYWdhcmEgYXMgdGFyZ2V0LgoJKiBjb25maWcvc3BhcmMvc3BhcmMuaCAoU1BBUkNfUkVMQVhFRF9PUkRFUklORyk6IE1lbnRpb24gTmlhZ2FyYS4KCShUQVJHRVRfQ1BVX25pYWdhcmEpOiBEZWZpbmUuCgkoQ1BQX0NQVTY0X0RFRkFVTFRfU1BFQyk6IERlZmluZSBfX3NwYXJjX3Y5X18gZm9yIE5pYWdhcmEuCgkoQVNNX0NQVTY0X0RFRkFVTFRfU1BFQyk6IFBhc3MgLUF2OWIgZm9yIE5pYWdhcmEuCgkoQ1BQX0NQVV9TUEVDKTogSGFuZGxlIC1tY3B1PW5pYWdhcmEuCgkoQVNNX0NQVV9TUEVDKTogTGlrZXdpc2UuCgkoUFJPQ0VTU09SX05JQUdBUkEpOiBOZXcgZW51bSBlbnRyeS4KCShSRUdJU1RFUl9NT1ZFX0NPU1QpOiBIYW5kbGUgTmlhZ2FyYS4KCShCUkFOQ0hfQ09TVCwgUFJFRkVUQ0hfQkxPQ0ssIFNJTVVMVEFORU9VU19QUkVGRVRDSEVTKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChuaWFnYXJhX2Nvc3RzKTogTmV3IHByb2Nlc3Nvcl9jb3N0cyBlbnRyeS4KCShzcGFyY19vdmVycmlkZV9vcHRpb25zKTogUmVjb2duaXplICJuaWFnYXJhIiwgc2V0IGFwcHJvcHJpYXRlCglkZWZhdWx0IE1BU0tfKiB2YWx1ZXMgZm9yIGl0LCBhbmQgYWxpZ24gZnVuY3Rpb25zIHRvIDMyLWJ5dGVzCglieSBkZWZhdWx0IGp1c3QgbGlrZSBVTFRSQVNQQVJDL1VMVFJBU1BBUkMzLgoJKHNwYXJjX2luaXRpYWxpemVfdHJhbXBvbGluZSk6IEhhbmRsZSBuaWFnYXJhIGxpa2UgdWx0cmFzcGFyYy4KCShzcGFyYzY0X2luaXRpYWxpemVfdHJhbXBvbGluZSk6IExpa2V3aXNlLgoJKHNwYXJjX3VzZV9zY2hlZF9sb29rYWhlYWQpOiBVc2UgemVybyBmb3IgbmlhZ2FyYS4KCShzcGFyY19pc3N1ZV9yYXRlKTogVXNlIG9uZSBmb3IgbmlhZ2FyYS4KCSogY29uZmlnL3NwYXJjL25pYWdhcmEubWQ6IE5ldyBmaWxlLgoJKiBjb25maWcvc3BhcmMvc3BhcmMubWQ6IEluY2x1ZGUgaXQuCgkqIGNvbmZpZy9zcGFyYy9zb2wyLWJpLmggKENQUF9DUFU2NF9ERUZBVUxUX1NQRUMsCglBU01fQ1BVMzJfREVGQVVMVF9TUEVDLCBBU01fQ1BVNjRfREVGQVVMVF9TUEVDKTogU2V0IGFwcHJvcHJpYXRlbHkKCXdoZW4gZGVmYXVsdCBjcHUgaXMgbmlhZ2FyYS4KCShDUFBfQ1BVX1NQRUMpOiBIYW5kbGUgLW1jcHU9bmlhZ2FyYS4KCShBU01fQ1BVX1NQRUMpOiBMaWtld2lzZS4KCSogY29uZmlnL3NwYXJjL3NvbDIuaCAoQVNNX0NQVV9ERUZBVUxUX1NQRUMpOiBTZXQgYXBwcm9wcmlhdGVseQoJd2hlbiBkZWZhdWx0IGNwdSBpcyBuaWFnYXJhLgoJKEFTTV9DUFVfU1BFQyk6IEhhbmRsZSAtbWNwdT1uaWFnYXJhLgoJKiBjb25maWcvc3BhcmMvbGludXg2NC5oOiBIYW5kbGUgYSBkZWZhdWx0IG9mIFRBUkdFVF9DUFVfbmlhZ2FyYQoJanVzdCBsaWtlIHY5L3VsdHJhc3BhcmMvdWx0cmFzcGFyYzMuCgkqIGRvYy9pbnZva2UudGV4aTogQWRkIGRvY3VtZW50YXRpb24gZm9yICJuaWFnYXJhIiBhbmQgaW1wcm92ZQoJZXhpc3RpbmcgZG9jdW1lbnRhdGlvbiBmb3IgdWx0cmFzcGFyYyB2YXJpYW50cy4KCjIwMDYtMDMtMDIgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAodXBkYXRlX3N0bXRfb3BlcmFuZHMpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCjIwMDYtMDMtMDIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL3RtLnRleGkgKFRBUkdFVF9IQVZFX1NXSVRDSEFCTEVfQlNTX1NFQ1RJT05TKTogRG9jdW1lbnQuCgkoQVNNX09VVFBVVF9CU1MpOiBEZXNjcmliZSB0aGUgdHdvIHdheXMgb2YgaGFuZGxpbmcgZ2xvYmFsIEJTUywKCWFuZCBzYXkgdGhhdCBvbmx5IG9uZSBpcyBuZWVkZWQuCgkqIGRvYy9ydGwudGV4aSAoU1lNQk9MX1JFRl9CTE9DSyk6IFNheSB0aGF0IHRoZSBibG9jayBjYW4gYmUgbnVsbC4KCSogdGFyZ2V0LmggKGhhdmVfc3dpdGNoYWJsZV9ic3Nfc2VjdGlvbnMpOiBOZXcgaG9vay4KCSogZXhwbG93LmMgKHVzZV9hbmNob3JlZF9hZGRyZXNzKTogQ2hlY2sgdGhhdCB0aGUgc3ltYm9sIGlzIGluIGEgYmxvY2suCgkqIHZhcmFzbS5jICh0bHNfY29tbV9zZWN0aW9uLCBjb21tX3NlY3Rpb24sIGxjb21tX3NlY3Rpb24pCgkoYnNzX25vc3dpdGNoX3NlY3Rpb24pOiBOZXcgdmFyaWFibGVzLgoJKGdldF91bm5hbWVkX3NlY3Rpb24pOiBBZGQgU0VDVElPTl9VTk5BTUVEIHRvIHRoZSBmbGFncy4KCShnZXRfbm9zd2l0Y2hfc2VjdGlvbik6IE5ldyBmdW5jdGlvbi4KCShnZXRfYmxvY2tfZm9yX3NlY3Rpb24pOiBBbGxvdyBTRUNUIHRvIGJlIG51bGwuCgkodW5saWtlbHlfdGV4dF9zZWN0aW9uX3ApOiBVc2UgU0VDVElPTl9TVFlMRS4KCShic3NfaW5pdGlhbGl6ZXJfcCk6IE5ldyBmdW5jdGlvbi4KCShnZXRfdmFyaWFibGVfc2VjdGlvbik6IE1vdmUgZWFybGllciBpbiBmaWxlLiAgVGFrZSBhIG5ldyBhcmd1bWVudCwKCXByZWZlcl9ub3N3aXRjaF9wLiAgTW92ZSBic3MgY2hlY2tzIGZyb20gYXNzZW1ibGVfdmFyaWFibGUgdG8gaGVyZS4KCVJldHVybiBvbmUgb2YgdGhlIG5ldyAqX3NlY3Rpb25zIGluIHN1Y2ggY2FzZXMuCgkoZ2V0X2Jsb2NrX2Zvcl9kZWNsKTogTmV3IGZ1bmN0aW9uLCBleHRyYWN0aW5nIHNvbWUgbG9naWMgZnJvbQoJdXNlX2Jsb2Nrc19mb3JfZGVjbF9wLgoJKGNoYW5nZV9zeW1ib2xfc2VjdGlvbik6IFJlbW92ZSBpbiBmYXZvciBvZi4uLgoJKGNoYW5nZV9zeW1ib2xfYmxvY2spOiAuLi50aGlzIG5ldyBmdW5jdGlvbi4KCSh1c2VfYmxvY2tzX2Zvcl9kZWNsX3ApOiBSZW1vdmUgY2hlY2tzIG5vdyBwZXJmb3JtZWQgYnkKCWdldF9ibG9ja19mb3JfZGVjbC4KCShtYWtlX2RlY2xfcnRsKTogVXNlIGNoYW5nZV9zeW1ib2xfYmxvY2sgYW5kIGdldF9ibG9ja19mb3JfZGVjbC4KCShBU01fRU1JVF9MT0NBTCwgQVNNX0VNSVRfQlNTLCBBU01fRU1JVF9DT01NT04pOiBEZWxldGUgaW4gZmF2b3Igb2YuLi4KCShlbWl0X2xvY2FsLCBlbWl0X2JzcywgZW1pdF9jb21tb24pOiAuLi50aGVzZSBuZXcgZnVuY3Rpb25zLgoJUmV0dXJuIHRydWUgaWYgdGhlIGFsaWdubWVudCB3YXMgaG9ub3JlZC4KCShlbWl0X3Rsc19jb21tb24pOiBOZXcgZnVuY3Rpb24uCgkoYXNtX2VtaXRfdW5pbml0aWFsaXNlZCk6IERlbGV0ZS4KCShhc3NlbWJsZV92YXJpYWJsZV9ub3N3aXRjaCk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20uLi4KCShhc3NlbWJsZV92YXJpYWJsZSk6IC4uLmhlcmUuICBEb24ndCBtYWtlIGRlY2lzaW9ucyBhYm91dCBjb21tb24KCXZhcmlhYmxlcyBoZXJlLiAgR2xvYmFsaXplIGFsbCBwdWJsaWMgZGVjbHMgdGhhdCBnbyBpbnRvIG5vbi1jb21tb24KCXNlY3Rpb25zLiAgQ2hlY2sgd2hldGhlciBTWU1CT0xfUkVGX0JMT0NLIGlzIG51bGwuCgkob3V0cHV0X2NvbnN0YW50X2RlZl9jb250ZW50cyk6IENoZWNrIHdoZXRoZXIgU1lNQk9MX1JFRl9CTE9DSyBpcyBudWxsLgoJKG91dHB1dF9jb25zdGFudF9wb29sKTogTGlrZXdpc2UuCgkoaW5pdF92YXJhc21fb25jZSk6IEluaXRpYWxpemUgdGhlIG5ldyBzZWN0aW9uIHZhcmlhYmxlcy4KCShoYXZlX2dsb2JhbF9ic3NfcCk6IE5ldyBmdW5jdGlvbi4KCShjYXRlZ29yaXplX2RlY2xfZm9yX3NlY3Rpb24pOiBVc2UgYnNzX2luaXRpYWxpemVyX3AuCgkoc3dpdGNoX3RvX3NlY3Rpb24pOiBVc2UgU0VDVElPTl9TVFlMRS4gIEFib3J0IGZvciBTRUNUSU9OX05PU1dJVENILgoJKHBsYWNlX2Jsb2NrX3N5bWJvbCk6IEFzc2VydCB0aGF0IHRoZSBzeW1ib2wgbXVzdCBiZSBpbiBhIGJsb2NrLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9IQVZFX1NXSVRDSEFCTEVfQlNTX1NFQ1RJT05TKTogTmV3IG1hY3JvLgoJKFRBUkdFVF9JTklUSUFMSVpFUik6IEluY2x1ZGUgaXQuCgkqIHJ0bC5oIChTWU1CT0xfUkVGX0JMT0NLKTogRG9jdW1lbnQgdGhlIG51bGwgYWx0ZXJuYXRpdmUuCgkqIG91dHB1dC5oIChTRUNUSU9OX1NUWUxFX01BU0ssIFNFQ1RJT05fQ09NTU9OKTogTmV3IG1hY3Jvcy4KCShTRUNUSU9OX01BQ0hfREVQKTogQnVtcCBieSB0d28uCgkoU0VDVElPTl9VTk5BTUVELCBTRUNUSU9OX05PU1dJVENIKTogTmV3IG1hY3Jvcy4KCSh1bm5hbWVkX3NlY3Rpb24pOiBNZW50aW9uIFNFQ1RJT05fVU5OQU1FRCBpbiBjb21tZW50LgoJKG5hbWVkX3NlY3Rpb24pOiBMaWtld2lzZSBTRUNUSU9OX05BTUVELgoJKG5vc3dpdGNoX3NlY3Rpb25fY2FsbGJhY2spOiBOZXcgdHlwZS4KCShub3N3aXRjaF9zZWN0aW9uKTogTmV3IHN0cnVjdHVyZS4KCShzZWN0aW9uKTogQWRkIGEgbm9zd2l0Y2hfc2VjdGlvbiBhbHRlcm5hdGl2ZS4KCShTRUNUSU9OX1NUWUxFKTogTmV3IG1hY3JvLgoJKHRsc19jb21tX3NlY3Rpb24sIGNvbW1fc2VjdGlvbiwgbGNvbW1fc2VjdGlvbik6IERlY2xhcmUuCgkoYnNzX25vc3dpdGNoX3NlY3Rpb24sIGhhdmVfZ2xvYmFsX2Jzc19wKTogRGVjbGFyZS4KCSogY29uZmlnL2VsZm9zLmggKFRBUkdFVF9IQVZFX1NXSVRDSEFCTEVfQlNTX1NFQ1RJT05TKTogT3ZlcnJpZGUuCgkqIGNvbmZpZy9pcTIwMDAvaXEyMDAwLmMgKFRBUkdFVF9IQVZFX1NXSVRDSEFCTEVfQlNTX1NFQ1RJT05TKToKCU92ZXJyaWRlLgoJKiBjb25maWcvdjg1MC92ODUwLmMgKFRBUkdFVF9IQVZFX1NXSVRDSEFCTEVfQlNTX1NFQ1RJT05TKTogT3ZlcnJpZGUuCgkqIGNvbmZpZy9zdG9ybXkxNi9zdG9ybXkxNi5jIChUQVJHRVRfSEFWRV9TV0lUQ0hBQkxFX0JTU19TRUNUSU9OUyk6CglPdmVycmlkZS4KCjIwMDYtMDMtMDIgIERhbmllbCBCZXJsaW4gPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXZycC5jIChleGVjdXRlX3ZycCk6IFJldHVybiB2YWx1ZS4KCSogcmVncmVuYW1lLmMgKHJlc3Rfb2ZfaGFuZGxlX3JlZ3JlbmFtZSk6IERpdHRvLgoJKiB0cmVlLWludG8tc3NhLmMgKHJld3JpdGVfaW50b19zc2EpOiBEaXR0by4KCSogdHJlZS1jb21wbGV4LmMgKHRyZWVfbG93ZXJfY29tcGxleCk6IERpdHRvLgoJKHRyZWVfbG93ZXJfY29tcGxleF9PMCk6IERpdHRvLgoJKiB0cmFjZXIuYyAocmVzdF9vZl9oYW5kbGVfdHJhY2VyKTogRGl0dG8uCgkqIHBvc3RyZWxvYWQtZ2NzZS5jIChyZXN0X29mX2hhbmRsZV9nY3NlMik6IERpdHRvLgoJKiBwb3N0cmVsb2FkLmMgKHJlc3Rfb2ZfaGFuZGxlX3Bvc3RyZWxvYWQpOiBEaXR0by4KCSogdHJlZS10YWlsY2FsbC5jIChleGVjdXRlX3RhaWxfcmVjdXJzaW9uKTogRGl0dG8uCgkoZXhlY3V0ZV90YWlsX2NhbGxzKTogRGl0dG8uCgkqIHRyZWUtc3NhLWxvb3AtY2guYyAoY29weV9sb29wX2hlYWRlcnMpOiBEaXR0by4KCSogdHJlZS5oIChpbml0X2Z1bmN0aW9uX2Zvcl9jb21waWxhdGlvbik6IERpdHRvLgoJKiBpcGEtY3AuYyAoaXBjcF9kcml2ZXIpOiBEaXR0by4KCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKHNjZXZfY29uc3RfcHJvcCk6IERpdHRvLgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uaCAoc2Nldl9jb25zdF9wcm9wKTogRGl0dG8uCgkqIGZpbmFsLmMgKGNvbXB1dGVfYWxpZ25tZW50cyk6IERpdHRvLgoJKHJlc3Rfb2ZfaGFuZGxlX2ZpbmFsKTogRGl0dG8uCgkocmVzdF9vZl9oYW5kbGVfc2hvcnRlbl9icmFuY2hlcyk6IERpdHRvLgoJKHJlc3Rfb2ZfY2xlYW5fc3RhdGUpOiBEaXR0by4KCSogb21wLWxvdy5jIChleGVjdXRlX2V4cGFuZF9vbXApOiBEaXR0by4KCShleGVjdXRlX2xvd2VyX29tcCk6IERpdHRvLgoJKiB0cmVlLXNzYS1kc2UuYyAodHJlZV9zc2FfZHNlKTogRGl0dG8uCgkqIGlwYS1yZWZlcmVuY2UuYyAoc3RhdGljX2V4ZWN1dGUpOiBEaXR0by4KCSogdHJlZS1zc2EtdW5jcHJvcC5jICh0cmVlX3NzYV91bmNwcm9wKTogRGl0dG8uCgkqIHJlb3JnLmMgKHJlc3Rfb2ZfaGFuZGxlX2RlbGF5X3Nsb3RzKTogRGl0dG8uCgkocmVzdF9vZl9oYW5kbGVfbWFjaGluZV9yZW9yZyk6IERpdHRvLgoJKiBjZ3JhcGh1bml0LmMgKHJlYnVpbGRfY2dyYXBoX2VkZ2VzKTogRGl0dG8uCgkqIGZsb3cuYyAocmVjb21wdXRlX3JlZ191c2FnZSk6IERpdHRvLgoJKHJlc3Rfb2ZfaGFuZGxlX3JlbW92ZV9kZWF0aF9ub3Rlcyk6IERpdHRvLgoJKHJlc3Rfb2ZfaGFuZGxlX2xpZmUpOiBEaXR0by4KCShyZXN0X29mX2hhbmRsZV9mbG93Mik6IERpdHRvLgoJKiB0cmVlLXNzYS1jb3B5cmVuYW1lLmMgKHJlbmFtZV9zc2FfY29waWVzKTogRGl0dG8uCgkqIHRyZWUtc3NhLWNjcC5jIChkb19zc2FfY2NwKTogRGl0dG8uCgkoZG9fc3NhX3N0b3JlX2NjcCk6IERpdHRvLgoJKGV4ZWN1dGVfZm9sZF9hbGxfYnVpbHRpbnMpOiBEaXR0by4KCSogbW9kZS1zd2l0Y2hpbmcuYyAocmVzdF9vZl9oYW5kbGVfbW9kZV9zd2l0Y2hpbmcpOiBEaXR0by4KCSogbW9kdWxvLXNjaGVkLmMgKHJlc3Rfb2ZfaGFuZGxlX3Ntcyk6IERpdHRvLgoJKiBpcGEtcHVyZS1jb25zdC5jIChzdGF0aWNfZXhlY3V0ZSk6IERpdHRvLgoJKiBjc2UuYyAocmVzdF9vZl9oYW5kbGVfY3NlKTogRGl0dG8uCgkocmVzdF9vZl9oYW5kbGVfY3NlMik6IERpdHRvLgoJKiB3ZWIuYyAocmVzdF9vZl9oYW5kbGVfd2ViKTogRGl0dG8uCgkqIHRyZWUtc3RkYXJnLmMgKGV4ZWN1dGVfb3B0aW1pemVfc3RkYXJnKTogRGl0dG8uCgkqIHRyZWUtc3NhLW1hdGgtb3B0cy5jIChleGVjdXRlX2NzZV9yZWNpcHJvY2Fscyk6IERpdHRvLgoJKiB0cmVlLXNzYS1kb20uYyAodHJlZV9zc2FfZG9taW5hdG9yX29wdGltaXplKTogRGl0dG8uCgkqIHRyZWUtbnJ2LmMgKHRyZWVfbnJ2KTogRGl0dG8uCgkoZXhlY3V0ZV9yZXR1cm5fc2xvdF9vcHQpOiBEaXR0by4KCSogdHJlZS1zc2EtYWxpYXMuYyAoY29tcHV0ZV9tYXlfYWxpYXNlcyk6IERpdHRvLgoJKGNyZWF0ZV9zdHJ1Y3R1cmVfdmFycyk6IERpdHRvLgoJKiBsb29wLWluaXQuYyAocnRsX2xvb3BfaW5pdCk6IERpdHRvLgoJKHJ0bF9sb29wX2RvbmUpOiBEaXR0by4KCShydGxfbW92ZV9sb29wX2ludmFyaWFudHMpOiBEaXR0by4KCShydGxfdW5zd2l0Y2gpOiBEaXR0by4KCShydGxfdW5yb2xsX2FuZF9wZWVsX2xvb3BzKTogRGl0dG8uCgkocnRsX2RvbG9vcCk6IERpdHRvLgoJKiBnaW1wbGUtbG93LmMgKGxvd2VyX2Z1bmN0aW9uX2JvZHkpOiBEaXR0by4KCShtYXJrX3VzZWRfYmxvY2tzKTogRGl0dG8uCgkqIHRyZWUtc3NhLXNpbmsuYyAoZXhlY3V0ZV9zaW5rX2NvZGUpOiBEaXR0by4KCSogaXBhLWlubGluZS5jIChjZ3JhcGhfZGVjaWRlX2lubGluaW5nKTogRGl0dG8uCgkoY2dyYXBoX2Vhcmx5X2lubGluaW5nKTogRGl0dG8uCgkqIGdsb2JhbC5jIChyZXN0X29mX2hhbmRsZV9nbG9iYWxfYWxsb2MpOiBEaXR0by4KCSoganVtcC5jIChjbGVhbnVwX2JhcnJpZXJzKTogRGl0dG8uCgkocHVyZ2VfbGluZV9udW1iZXJfbm90ZXMpOiBEaXR0by4KCSogaWZjdnQuYyAocmVzdF9vZl9oYW5kbGVfaWZfY29udmVyc2lvbik6IERpdHRvLgoJKHJlc3Rfb2ZfaGFuZGxlX2lmX2FmdGVyX3JlbG9hZCk6IERpdHRvLgoJKiB0cmVlLXNzYS1sb29wLmMgKHRyZWVfc3NhX2xvb3BfaW5pdCk6IERpdHRvLgoJKHRyZWVfc3NhX2xvb3BfaW0pOiBEaXR0by4KCSh0cmVlX3NzYV9sb29wX3Vuc3dpdGNoKTogRGl0dG8uCgkodHJlZV92ZWN0b3JpemUpOiBEaXR0by4KCSh0cmVlX2xpbmVhcl90cmFuc2Zvcm0pOiBEaXR0by4KCSh0cmVlX3NzYV9sb29wX2l2Y2Fub24pOiBEaXR0by4KCSh0cmVlX3NzYV9lbXB0eV9sb29wKTogRGl0dG8uCgkodHJlZV9zc2FfbG9vcF9ib3VuZHMpOiBEaXR0by4KCSh0cmVlX2NvbXBsZXRlX3Vucm9sbCk6IERpdHRvLgoJKHRyZWVfc3NhX2xvb3BfcHJlZmV0Y2gpOiBEaXR0by4KCSh0cmVlX3NzYV9sb29wX2l2b3B0cyk6IERpdHRvLgoJKHRyZWVfc3NhX2xvb3BfZG9uZSk6IERpdHRvLgoJKiBwcmVkaWN0LmMgKHRyZWVfZXN0aW1hdGVfcHJvYmFiaWxpdHkpOiBEaXR0by4KCSogcmVjb2cuYyAoc3BsaXRfYWxsX2luc25zX25vZmxvdyk6IERpdHRvLgoJKHJlc3Rfb2ZfaGFuZGxlX3BlZXBob2xlMik6IERpdHRvLgoJKHJlc3Rfb2ZfaGFuZGxlX3NwbGl0X2FsbF9pbnNucyk6IERpdHRvLgoJKiB0cmVlLWVoLmMgKGxvd2VyX2VoX2NvbnN0cnVjdHMpOiBEaXR0by4KCSogcmVnbW92ZS5jIChyZXN0X29mX2hhbmRsZV9yZWdtb3ZlKTogRGl0dG8uCgkocmVzdF9vZl9oYW5kbGVfc3RhY2tfYWRqdXN0bWVudHMpOiBEaXR0by4KCSogbG9jYWwtYWxsb2MuYyAocmVzdF9vZl9oYW5kbGVfbG9jYWxfYWxsb2MpOiBEaXR0by4KCSogZnVuY3Rpb24uYyAoaW5zdGFudGlhdGVfdmlydHVhbF9yZWdzKTogRGl0dG8uCgkoaW5pdF9mdW5jdGlvbl9mb3JfY29tcGlsYXRpb24pOiBEaXR0by4KCShyZXN0X29mX2hhbmRsZV9jaGVja19sZWFmX3JlZ3MpOiBEaXR0by4KCSogZ2NzZS5jIChyZXN0X29mX2hhbmRsZV9qdW1wX2J5cGFzcyk6IERpdHRvLgoJKHJlc3Rfb2ZfaGFuZGxlX2djc2UpOiBEaXR0by4KCSogaXBhLXR5cGUtZXNjYXBlLmMgKHR5cGVfZXNjYXBlX2V4ZWN1dGUpOiBEaXR0by4KCSogYWxpYXMuYyAocmVzdF9vZl9oYW5kbGVfY2ZnKTogRGl0dG8uCgkqIHRyZWUtaWYtY29udi5jIChtYWluX3RyZWVfaWZfY29udmVyc2lvbik6IERpdHRvLgoJKiBwcm9maWxlLmMgKHJlc3Rfb2ZfaGFuZGxlX2JyYW5jaF9wcm9iKTogRGl0dG8uCgkqIHRyZWUtc3NhLXBoaW9wdC5jICh0cmVlX3NzYV9waGlvcHQpOiBEaXR0by4KCSogcnRsLWZhY3RvcmluZy5jIChyZXN0X29mX3J0bF9zZXFhYnN0cik6IERpdHRvLgoJKiBidC1sb2FkLmMgKHJlc3Rfb2ZfaGFuZGxlX2JyYW5jaF90YXJnZXRfbG9hZF9vcHRpbWl6ZSk6IERpdHRvCgkqIHRyZWUtZGZhLmMgKGZpbmRfcmVmZXJlbmNlZF92YXJzKTogRGl0dG8uCgkqIGV4Y2VwdC5jIChzZXRfbm90aHJvd19mdW5jdGlvbl9mbGFncyk6IERpdHRvLgoJKGNvbnZlcnRfdG9fZWhfcmVnaW9uX3Jhbmdlcyk6IERpdHRvLgoJKHJlc3Rfb2ZfaGFuZGxlX2VoKTogRGl0dG8uCgkqIGVtaXQtcnRsLmMgKHVuc2hhcmVfYWxsX3J0bCk6IERpdHRvLgoJKHJlbW92ZV91bm5lY2Vzc2FyeV9ub3Rlcyk6IERpdHRvLgoJKiBleGNlcHQuaCAoc2V0X25vdGhyb3dfZnVuY3Rpb25fZmxhZ3MpOiBEaXR0by4KCShjb252ZXJ0X3RvX2VoX3JlZ2lvbl9yYW5nZXMpOiBEaXR0by4KCSogY2ZnZXhwYW5kLmMgKHRyZWVfZXhwYW5kX2NmZyk6IERpdHRvLgoJKiB0cmVlLWNmZ2NsZWFudXAuYyAobWVyZ2VfcGhpX25vZGVzKTogRGl0dG8uCgkqIHRyZWUtc3NhLXByZS5jIChkb19wcmUpOiBEaXR0by4KCShleGVjdXRlX2ZyZSk6IERpdHRvLgoJKiBjZmdjbGVhbnVwLmMgKHJlc3Rfb2ZfaGFuZGxlX2p1bXApOiBEaXR0by4KCShyZXN0X29mX2hhbmRsZV9qdW1wMik6IERpdHRvLgoJKiB0cmVlLXNyYS5jICh0cmVlX3NyYSk6IERpdHRvLgoJKiB0cmVlLW11ZGZsYXAuYyAoZXhlY3V0ZV9tdWRmbGFwX2Z1bmN0aW9uX29wcyk6IERpdHRvLgoJKGV4ZWN1dGVfbXVkZmxhcF9mdW5jdGlvbl9kZWNscyk6IERpdHRvLgoJKiB0cmVlLXNzYS1jb3B5LmMgKGRvX2NvcHlfcHJvcCk6IERpdHRvLgoJKGRvX3N0b3JlX2NvcHlfcHJvcCk6IERpdHRvLgoJKiBpcGEtcHJvcC5oIChpcGNwX2RyaXZlcik6IERpdHRvLgoJKiBjZmdsYXlvdXQuYyAoaW5zbl9sb2NhdG9yc19pbml0aWFsaXplKTogRGl0dG8uCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMKCSh0cmVlX3NzYV9mb3J3YXJkX3Byb3BhZ2F0ZV9zaW5nbGVfdXNlX3ZhcnMpOiBEaXR0by4KCSogY2ZnbGF5b3V0LmggKGluc25fbG9jYXRvcnNfaW5pdGlhbGl6ZSk6IERpdHRvLgoJKiB0cmVlLXNzYS1kY2UuYyAodHJlZV9zc2FfZGNlKTogRGl0dG8uCgkqIHRyZWUtc3NhLmMgKGV4ZWN1dGVfZWFybHlfd2Fybl91bmluaXRpYWxpemVkKTogRGl0dG8uCgkoZXhlY3V0ZV9sYXRlX3dhcm5fdW5pbml0aWFsaXplZCk6IERpdHRvLgoJKiBydGwuaCAoY2xlYW51cF9iYXJyaWVycyk6IERpdHRvLgoJKHNwbGl0X2FsbF9pbnNuc19ub2Zsb3cpOiBEaXR0by4KCShwdXJnZV9saW5lX251bWJlcl9ub3Rlcyk6IERpdHRvLgoJKHVuc2hhcmVfYWxsX3J0bCk6IERpdHRvLgoJKHJlbW92ZV91bm5lY2Vzc2FyeV9ub3Rlcyk6IERpdHRvLgoJKHJlY29tcHV0ZV9yZWdfdXNhZ2UpOiBEaXR0by4KCSh2YXJpYWJsZV90cmFja2luZ19tYWluKTogRGl0dG8uCgkqIGludGVncmF0ZS5jIChlbWl0X2luaXRpYWxfdmFsdWVfc2V0cyk6IERpdHRvLgoJKiBpbnRlZ3JhdGUuaCAoZW1pdF9pbml0aWFsX3ZhbHVlX3NldHMpOiBEaXR0by4KCSogdHJlZS1vcHRpbWl6ZS5jIChleGVjdXRlX2ZyZWVfZGF0YXN0cnVjdHVyZXMpOiBEaXR0bwoJKGV4ZWN1dGVfZnJlZV9jZmdfYW5ub3RhdGlvbnMpOiBEaXR0by4KCShleGVjdXRlX2ZpeHVwX2NmZyk6IERpdHRvLgoJKGV4ZWN1dGVfY2xlYW51cF9jZmdfcHJlX2lwYSk6IERpdHRvLgoJKGV4ZWN1dGVfY2xlYW51cF9jZmdfcG9zdF9vcHRpbWl6aW5nKTogRGl0dG8uCgkoZXhlY3V0ZV9pbml0X2RhdGFzdHJ1Y3R1cmVzKTogRGl0dG8uCgkqIHRyZWUtb2JqZWN0LXNpemUuYyAoY29tcHV0ZV9vYmplY3Rfc2l6ZXMpOiBEaXR0by4KCSogY29tYmluZS5jIChyZXN0X29mX2hhbmRsZV9jb21iaW5lKTogRGl0dG8uCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKHJld3JpdGVfb3V0X29mX3NzYSk6IERpdHRvLgoJKiBiYi1yZW9yZGVyLmMgKGR1cGxpY2F0ZV9jb21wdXRlZF9nb3Rvcyk6IERpdHRvLgoJKHJlc3Rfb2ZfaGFuZGxlX3Jlb3JkZXJfYmxvY2tzKTogRGl0dG8uCgkocmVzdF9vZl9oYW5kbGVfcGFydGl0aW9uX2Jsb2Nrcyk6IERpdHRvLgoJKiB2YXItdHJhY2tpbmcuYyAodmFyaWFibGVfdHJhY2tpbmdfbWFpbik6IERpdHRvLgoJKiB0cmVlLXByb2ZpbGUuYyAodHJlZV9wcm9maWxpbmcpOiBEaXR0by4KCSogdHJlZS12ZWN0LWdlbmVyaWMuYyAoZXhwYW5kX3ZlY3Rvcl9vcGVyYXRpb25zKTogRGl0dG8uCgkqIHJlZy1zdGFjay5jIChyZXN0X29mX2hhbmRsZV9zdGFja19yZWdzKTogRGl0dG8uCgkqIHNjaGVkLXJnbi5jIChyZXN0X29mX2hhbmRsZV9zY2hlZCk6IERpdHRvLgoJKHJlc3Rfb2ZfaGFuZGxlX3NjaGVkMik6IERpdHRvLgoJKiBiYXNpYy1ibG9jay5oIChmcmVlX2JiX2luc24pOiBEaXR0by4KCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoaXBhX3B0YV9leGVjdXRlKTogRGl0dG8uCgkqIHRyZWUtY2ZnLmMgKGV4ZWN1dGVfYnVpbGRfY2ZnKTogRGl0dG8uCgkocmVtb3ZlX3VzZWxlc3Nfc3RtdHMpOiBEaXR0by4KCShzcGxpdF9jcml0aWNhbF9lZGdlcyk6IERpdHRvLgoJKGV4ZWN1dGVfd2Fybl9mdW5jdGlvbl9yZXR1cm4pOiBEaXR0by4KCShleGVjdXRlX3dhcm5fZnVuY3Rpb25fbm9yZXR1cm4pOiBEaXR0by4KCSogdHJlZS1zc2EtcmVhc3NvYy5jIChleGVjdXRlX3JlYXNzb2MpOiBEaXR0by4KCSogY2ZncnRsLmMgKGZyZWVfYmJfZm9yX2luc24pOiBEaXR0by4KCSogcGFzc2VzLmMgKGV4ZWN1dGVfb25lX3Bhc3MpOiBSdW4gYWRkaXRpb25hbAoJdG9kb3MgcmV0dXJuZWQgYnkgZXhlY3V0ZSBmdW5jdGlvbi4KCSogdHJlZS1wYXNzLmggKHN0cnVjdCB0cmVlX29wdF9wYXNzKTogTWFrZSBleGVjdXRlCglyZXR1cm4gYSB2YWx1ZS4KCjIwMDYtMDMtMDIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGZpbmRfdXNlZF9wb3J0aW9ucyk6IENvbnNpZGVyIHRha2luZwoJdGhlIGFkZHJlc3MgYXMgbWFraW5nIHRoZSB2YXJpYWJsZSBub3Qgd3JpdGUtb25seS4KCjIwMDYtMDMtMDIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjIChkZWZhdWx0X3VzZV9jeGFfYXRleGl0KTogRXh0ZW5kIHRoZSBkZXNjcmlwdGlvbiBvZgoJdGhpcyBjb25maWd1cmUgdmFyaWFibGUuICBTZXQgaXRzIGRlZmF1bHQgdmFsdWUgdG8gInllcyIgZm9yCglMaW51eCwgTmV0QlNEIGFuZCBFTEYgdGFyZ2V0cyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZXkgd2lsbAoJdXNlIEMgbGlicmFyaWVzIHdpdGggdGhlIF9fY3hhX2F0ZXhpdCBmdW5jdGlvbi4KCjIwMDYtMDMtMDIgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9saW51eC11bndpbmQuaCAoZnJvYl91cGRhdGVfY29udGV4dCk6IE1hcmsgYGZzJwoJcGFyYW1ldGVyIGFzIHVudXNlZCB0byBzdXBwcmVzcyBhIGJ1aWxkIHdhcm5pbmcuCgoyMDA2LTAzLTAyICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIG1rbGliZ2NjLmluOiBEZXBlbmQgb24gY29uZmlnL2RmcC1iaXQuaCBpbiBydWxlcyB0aGF0IGNvbXBpbGUKCWNvbmZpZy9kZnAtYml0LmMuCgoyMDA2LTAzLTAxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBvdGhlci8yNjQ4OQoJKiBndGhyLXBvc2l4LmggKF9fZ3RocncyKTogRGVmaW5lIHRvIHRha2UgdGhyZWUgcGFyYW1ldGVycywgdGhlCglkZWNsYXJlZCBuYW1lLCB0aGUgd2VhayByZWZlcmVuY2UgbmFtZSwgYW5kIHRoZSB0eXBlb2YgbmFtZS4KCShfX2d0aHJ3KTogQXZvaWQgZXhwYW5kaW5nIHRoZSBkZWNsYXJlZCBuYW1lIHN1ZmZpeC4KCShfX2d0aHJ3Myk6IE5ldyBUcnU2NCBzcGVjaWZpYyBtYWNybyB0byBzaW1wbGlmeSB0aGUgT1NGLzEgZGVjbHMuCgoyMDA2LTAzLTAxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGR3YXJmMi5oIChEV19UQUdfY29uZGl0aW9uLCBEV19UQUdfc2hhcmVkX3R5cGUpOiBOZXcgY29uc3RhbnRzCglmcm9tIERXQVJGIDMuCgkoRFdfQVRfZGVzY3JpcHRpb24sIERXX0FUX2JpbmFyeV9zY2FsZSwgRFdfQVRfZGVjaW1hbF9zY2FsZSwKCURXX0FUX3NtYWxsLCBEV19BVF9kZWNpbWFsX3NpZ24sIERXX0FUX2RpZ2l0X2NvdW50LAoJRFdfQVRfcGljdHVyZV9zdHJpbmcsIERXX0FUX211dGFibGUsIERXX0FUX3RocmVhZHNfc2NhbGVkLAoJRFdfQVRfZXhwbGljaXQsIERXX0FUX29iamVjdF9wb2ludGVyLCBEV19BVF9lbmRpYW5pdHksCglEV19BVF9lbGVtZW50YWwsIERXX0FUX3B1cmUsIERXX0FUX3JlY3Vyc2l2ZSk6IE5ldy4KCShEV19PUF9mb3JtX3Rsc19hZGRyZXNzLCBEV19PUF9jYWxsX2ZyYW1lX2NmYSwgRFdfT1BfYml0X3BpZWNlKTogTmV3LgoJKERXX0FURV9wYWNrZWRfZGVjaW1hbCwgRFdfQVRFX251bWVyaWNfc3RyaW5nLCBEV19BVEVfZWRpdGVkLAoJRFdfQVRFX3NpZ25lZF9maXhlZCwgRFdfQVRFX3Vuc2lnbmVkX2ZpeGVkKTogTmV3LgoJKERXX0RTX3Vuc2lnbmVkLCBEV19EU19sZWFkaW5nX292ZXJwdW5jaCwgRFdfRFNfdHJhaWxpbmdfb3ZlcnB1bmNoLAoJRFdfRFNfbGVhZGluZ19zZXBhcmF0ZSwgRFdfRFNfdHJhaWxpbmdfc2VwYXJhdGUpOiBOZXcuCgkoRFdfRU5EX2RlZmF1bHQsIERXX0VORF9iaWcsIERXX0VORF9saXR0bGUpOiBOZXcuCgkoRFdfRU5EX2xvX3VzZXIsIERXX0VORF9oaV91c2VyKTogRGVmaW5lLgoJKERXX0xORV9sb191c2VyLCBEV19MTkVfaGlfdXNlcik6IERlZmluZS4KCShEV19DRkFfdmFsX29mZnNldCwgRFdfQ0ZBX3ZhbF9vZmZzZXRfc2YsIERXX0NGQV92YWxfZXhwcmVzc2lvbik6IE5ldy4KCShEV19MQU5HX1BMSSwgRFdfTEFOR19PYmpDLCBEV19MQU5HX09iakNfcGx1c19wbHVzLCBEV19MQU5HX1VQQywKCURXX0xBTkdfRCk6IE5ldy4KCjIwMDYtMDMtMDEgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS5kZWYgKFNZTUJPTF9NRU1PUllfVEFHKTogUmVuYW1lIGZyb20gVFlQRV9NRU1PUllfVEFHLgoJVXBkYXRlIGFsbCB1c2Vycy4KCSogdHJlZS1wYXNzLmggKFBST1Bfc210X3VzYWdlKTogUmVuYW1lIGZyb20gUFJPUF90bXRfdXNhZ2UuCglVcGRhdGUgYWxsIHVzZXJzLgoJKFRPRE9fdXBkYXRlX3NtdF91c2FnZSk6IFJlbmFtZSBmcm9tIFRPRE9fdXBkYXRlX3RtdF91c2FnZS4KCVVwZGF0ZSBhbGwgdXNlcnMuCgkqIHRyZWUuaCAoU01UX1VTRURfQUxPTkUpOiBSZW5hbWUgZnJvbSBUTVRfVVNFRF9BTE9ORS4KCVVwZGF0ZSBhbGwgdXNlcnMuCgkqIHRyZWUtZmxvdy5oIChzdHJ1Y3QgdmFyX2Fubl9kKTogUmVuYW1lIGZpZWxkICd0eXBlX21lbV90YWcnCgl0byAnc3ltYm9sX21lbV90YWcnLgoJVXBkYXRlIGFsbCB1c2Vycy4KCSogZG9jL3RyZWUtc3NhLnRleGk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIHJlZmxlY3QgVE1ULT5TTVQKCXJlbmFtZS4KCjIwMDYtMDMtMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogYnVpbHRpbnMuYyAoZm9sZF9idWlsdGluX2NvcHlzaWduKTogRGVsZXRlIHVucmVhY2hhYmxlIGNvZGUuCgoyMDA2LTAzLTAxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0YXJnZXQvMjU3NjEKCSogY29uZmlnL2Rhcndpbi5oIChNQUNIT1BJQ19KVVNUX0lORElSRUNUKTogQ2hlY2sganVzdAoJTUFDSE9fRFlOQU1JQ19OT19QSUNfUC4KCShNQUNIT1BJQ19QVVJFKTogQ2hlY2sgZmxhZ19waWMgYW5kIG5vdCBNQUNIT19EWU5BTUlDX05PX1BJQ19QLgoKMjAwNi0wMy0wMSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdGFyZ2V0LzI2Mzg5CgkqIGNvbmZpZy9kYXJ3aW4tcHJvdG9zLmggKGRhcndpbl9hc21fb3V0cHV0X2FuY2hvcik6CglEZWNsYXJlLgoJKiBjb25maWcvZGFyd2luLXNlY3Rpb25zLmRlZiAoY3N0cmluZ19zZWN0aW9uKToKCUFkZCBTRUNUSU9OX01FUkdFIHRvIHRoZSBmbGFncy4KCShsaXRlcmFsNF9zZWN0aW9uKTogTGlrZXdpc2UuCgkobGl0ZXJhbDhfc2VjdGlvbik6IExpa2V3aXNlLgoJKG9iamNfc2VsZWN0b3JfcmVmc19zZWN0aW9uKTogTGlrZXdpc2UuCgkob2JqY19jbHNfcmVmc19zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9kYXJ3aW4uYyAoZGFyd2luX2FzbV9vdXRwdXRfYW5jaG9yKTogTmV3CglmdW5jdGlvbi4KCSogY29uZmlnL2Rhcndpbi5oIChUQVJHRVRfQVNNX09VVFBVVF9BTkNIT1IpOiBEZWZpbmUuCgoyMDA2LTAzLTAxICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglGaXggUFIgdHJlZS1vcHRpbWl6YXRpb24vMjY0NDMKCSogdHJlZS12cnAuYyAocGFzc192cnApOiBBZGQgVE9ET191cGRhdGVfdG10X3VzYWdlCgl0byB0b2RvIGFuZCBQUk9QX3RtdF91c2FnZSB0byBwcm9wZXJ0aWVzX2Rlc3Ryb3llZC4KCSogdHJlZS1zc2EtY2NwLmMgKHBhc3NfY2NwKTogRGl0dG8uCgkocGFzc19zdG9yZV9jY3ApOiBEaXR0by4KCSogdHJlZS1zc2EtZG9tLmMgKHBhc3NfZG9taW5hdG9yKTogRGl0dG8uCgoyMDA2LTAzLTAxICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmM6IENsZWFudXAgd2hpdGVzcGFjZS4KCShnZXRfYXNtX2V4cHJfb3BlcmFuZHMpOiBNb3ZlIGJlZm9yZSBmaXJzdCBpbnZvY2F0aW9uLgoJKGdldF9pbmRpcmVjdF9yZWZfb3BlcmFuZHMpOiBMaWtld2lzZS4KCShnZXRfdG1yX29wZXJhbmRzKTogTGlrZXdpc2UuCgkoZ2V0X2NhbGxfZXhwcl9vcGVyYW5kcyk6IExpa2V3aXNlLgoJKGFwcGVuZF9kZWYpOiBMaWtld2lzZS4KCShhcHBlbmRfdXNlKTogTGlrZXdpc2UuCgkoYXBwZW5kX3ZfbWF5X2RlZik6IExpa2V3aXNlLgoJKGFwcGVuZF92X211c3RfZGVmKTogTGlrZXdpc2UuCgkoYWRkX2NhbGxfY2xvYmJlcl9vcHMpOiBMaWtld2lzZS4KCShhZGRfY2FsbF9yZWFkX29wcyk6IExpa2V3aXNlLgoJKGFkZF9zdG10X29wZXJhbmQpOiBMaWtld2lzZS4KCShhZGRfdmlydHVhbF9vcGVyYW5kKTogTGlrZXdpc2UuCgkoYnVpbGRfc3NhX29wZXJhbmRzKTogTGlrZXdpc2UuCgoyMDA2LTAzLTAxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBtaWRkbGUtZW5kLzI2MDIyCglSZXZlcnQ6CglQUiBtaWRkbGUtZW5kLzI0NDM3CgkqIHRyZWUtc3NhLWNjcC5jIChmb2xkX3N0bXQpOiBNb3ZlIGZvbGRpbmcgb2YgT0JKX1RZUEVfUkVGCgl3aXRoIGEgY2FsbCBleHByIHRvIC4uLgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfdGVybmFyeSkgPGNhc2UgQ0FMTF9FWFBSPjogSGVyZS4KCjIwMDYtMDMtMDEgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS12cnAuYyAoZXh0cmFjdF9yYW5nZV9mcm9tX2Fzc2VydCk6IFJlbW92ZSBzcGVjaWFsCgloYW5kbGluZyBmb3IgdHlwZXMgd2l0aCBzdXBlci10eXBlcy4KCjIwMDYtMDMtMDEgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogY29uZmlnLmdjYzogQWRkIHQtZGZwcnVsZXMgdG8gJHRtYWtlX2ZpbGUgZm9yIHBvd2VycGMtKi1saW51eCoKCWFuZCBwb3dlcnBjNjQtKi1saW51eCogY29uZmlndXJhdGlvbnMuCgkqIGNvbmZpZy90LWRmcHJ1bGVzOiBOZXcgZmlsZS4KCgkqIG1rbGliZ2NjLmluOiBBZGQgbG9naWMgdG8gaGFuZGxlICRERlBfRU5BQkxFIGFuZCAkREZQX0NGTEFHUy4KCUNvbXBpbGUgZGZwLWJpdC5jIGZyb20gdGhlIHNvdXJjZSBkaXJlY3RvcnkgdXNpbmcgLURXSURUSCBhbmQKCSRERlBfQ0ZMQUdTIHRvIGNvbnRyb2wgdGhlIGNvbXBpbGF0aW9uIG9mIHRoYXQgZmlsZSwgcmF0aGVyIHRoYW4KCWdlbmVyYXRpbmcgd2lkdGgtc3BlY2lmaWMgdmVyc2lvbnMgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KCSogTWFrZWZpbGUuaW4gKGxpYmdjYy5tayk6IFBhc3MgZG93biBERlBfRU5BQkxFIGFuZCBERlBfQ0ZMQUdTLgoJKExJQkdDQ19ERVBTKTogUmVwbGFjZSAkKEQzMlBCSVQpIGV0IGFsIHdpdGggY29uZmlnL2RmcC1iaXQuW2hjXS4KCjIwMDYtMDItMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BwYW5peC5jb20+CgoJKiBkb2MvbWQudGV4aTogQXZvaWQgdXNlIG9mIEBoZWFkaXRlbSBzbyB0aGF0IG1ha2VpbmZvIDw0LjcKCWNvbnRpbnVlcyB0byB3b3JrLgoKMjAwNi0wMi0yOCAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvZGFyd2luLmggKEVOQUJMRV9TVEFDS19FWEVDVVRFKTogRGVmaW5lLgoJU2V0IHVwIElOX0xJQkdDQyBkZWZpbml0aW9uIG9mIFRBUkdFVF82NEJJVC4KCSogY29uZmlnL2kzODYvZGFyd2luLmggKEVOQUJMRV9TVEFDS19FWEVDVVRFKTogRGVmaW5lLgoKMjAwNi0wMi0yOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8xNDc1MgoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24pIDxNSU5VU19FWFBSLAoJQklUX1hPUl9FWFBSLCBCSVRfQU5EX0VYUFI+OiBEZWxldGUuICBMZXQgZm9sZCBvcHRpbWl6ZSB0aGVzZQoJY2FzZXMgdmlhIHRoZSBjb25zdHJ1Y3Rpb24gb2YgImV4cHIgIT0gMCIuCgoyMDA2LTAyLTI4ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iLmdjY0BnbWFpbC5jb20+CgoJKiBhbGlhcy5jIChhbGlhc19pbnZhcmlhbnQsIGFsaWFzX2ludmFyaWFudF9zaXplKTogUmVtb3ZlLgoJKHJlY29yZF9iYXNlX3ZhbHVlKTogUmVtb3ZlLgoJKG1lbXJlZnNfY29uZmxpY3RfcCk6IERvbid0IGxvb2sgYXQgYWxpYXNfaW52YXJpYW50LgoJKGVuZF9hbGlhc19hbmFseXNpcyk6IERvbid0IGZyZWUgaXQuCgkqIGFsaWFzLmggKHJlY29yZF9iYXNlX3ZhbHVlKTogUmVtb3ZlIHByb3RvdHlwZS4KCjIwMDYtMDItMjggIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgkgICAgQWRhbSBOZW1ldCAgPGFuZW1ldEBjYXZpdW1uZXR3b3Jrcy5jb20+CgoJKiBydGwuaCAodHJ1bmNhdGVkX3RvX21vZGUpOiBEZWNsYXJlIGl0LgoJKHN0cnVjdCBydGxfaG9va3MpOiBBZGQgcmVnX3RydW5jYXRlZF90b19tb2RlIGhvb2suCgkqIHJ0bGhvb2tzLWRlZi5oIChSVExfSE9PS1NfUkVHX1RSVU5DQVRFRF9UT19NT0RFKTogTmV3IG1hY3JvLgoJKFJUTF9IT09LU19JTklUSUFMSVpFUik6IEluY2x1ZGUgaXQuCgkqIHJ0bGhvb2tzLmMgKHJlZ190cnVuY2F0ZWRfdG9fbW9kZV9nZW5lcmFsKTogTmV3IGZ1bmN0aW9uLgoJKiBjb21iaW5lLmMgKFJUTF9IT09LU19SRUdfVFJVTkNBVEVEX1RPX01PREUpOiBPdmVycmlkZSB0bwoJcmVnX3RydW5jYXRlZF90b19tb2RlLgoJKiBydGxhbmFsLmMgKHRydW5jYXRlZF90b19tb2RlKTogRGVmaW5lIGl0LgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfdW5hcnlfb3BlcmF0aW9uXzEpOiBVc2UgaXQuCgoyMDA2LTAyLTI4ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1jaHJlYy5jIChjaHJlY19jb252ZXJ0X2FnZ3Jlc3NpdmUpOiBEbyBub3QgZWxpbWluYXRlCgljb252ZXJzaW9ucyB3aGVyZSBUWVBFX01JTl9WQUxVRS9UWVBFX01BWF9WQUxVRSBkbyBub3QgY292ZXIKCXRoZSByYW5nZSBhbGxvd2VkIGJ5IFRZUEVfUFJFQ0lTSU9OLgoKCSogdHJlZS5oIChzdHJjdCBwaGlfYXJnX2QpOiBSZW1vdmUgdW51c2VkIE5PTlpFUk8gZmllbGQuCgoyMDA2LTAyLTI4ICBEb3JpdCBOdXptYW4gIDxkb3JpdEBpbC5pYm0uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2NDE5CgkqIGRvYy9pbnZva2UudGV4aSAoZnRyZWUtdmVjdG9yaXplci12ZXJib3NlKTogQWRkIGluZm9ybWF0aW9uIG9uCgl2YWx1ZXMgb2Ygbi4KCjIwMDYtMDItMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BwYW5peC5jb20+CgoJKiBkb2MvbWQudGV4aTogRml4IHR5cG8gaW4gcHJldmlvdXMgY2hhbmdlLgoKMjAwNi0wMi0yNyAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCgkqIGRmLmM6IFJlbW92ZS4KCjIwMDYtMDItMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BwYW5peC5jb20+CgoJKiBydGwuZGVmIChkZWZpbmVfY29uc3RyYWludCwgZGVmaW5lX3JlZ2lzdGVyX2NvbnN0cmFpbnQpCgkoZGVmaW5lX21lbW9yeV9jb25zdHJhaW50LCBkZWZpbmVfYWRkcmVzc19jb25zdHJhaW50KTogTmV3IE1EIGZvcm1zLgoJKiBnZW5zdXBwb3J0LmMgKHByb2Nlc3NfcnR4KTogUHV0IGRlZmluZV9jb25zdHJhaW50IGV0YyBvbiB0aGUKCXByZWRpY2F0ZSBxdWV1ZS4KCSogZ2VucHJlZHMuYyAocHJvY2Vzc19kZWZpbmVfcHJlZGljYXRlKTogQWRqdXN0IGNvbW1lbnQuICBWYWxpZGF0ZQoJdGhlIG5hbWUsIGFuZCBjYWxsIHZhbGlkYXRlX2V4cCB0byB2YWxpZGF0ZSB0aGUgZXhwcmVzc2lvbi4KCShtYXJrX21vZGVfdGVzdHMsIHdyaXRlX2V4dHJhY3Rfc3ViZXhwKTogQ2FuIGFzc3VtZSBjb3JyZWN0IGlucHV0LgoJKHdyaXRlX3ByZWRpY2F0ZV9leHByKTogTGlrZXdpc2UuICBOQU1FIGFyZ3VtZW50IG5vIGxvbmdlciBuZWNlc3Nhcnk7CglhbGwgY2FsbGVycyBjaGFuZ2VkLgoJKHZhbGlkYXRlX2V4cCwgbmVlZHNfdmFyaWFibGUsIHN0cnVjdCBjb25zdHJhaW50X2RhdGEpCgkoY29uc3RyYWludHNfYnlfbGV0dGVyX3RhYmxlLCBmaXJzdF9jb25zdHJhaW50LCBsYXN0X2NvbnN0cmFpbnRfcHRyKQoJKEZPUl9BTExfQ09OU1RSQUlOVFMsIGdlbmVyaWNfY29uc3RyYWludF9sZXR0ZXJzLCBjb25zdF9pbnRfY29uc3RyYWludHMpCgkoY29uc3RfZGJsX2NvbnN0cmFpbnRzLCBjb25zdHJhaW50X21heF9uYW1lbGVuKQoJKGhhdmVfcmVnaXN0ZXJfY29uc3RyYWludHMsIGhhdmVfbWVtb3J5X2NvbnN0cmFpbnRzKQoJKGhhdmVfYWRkcmVzc19jb25zdHJhaW50cywgaGF2ZV9hZGRyZXNzX2NvbnN0cmFpbnRzKQoJKGhhdmVfZXh0cmFfY29uc3RyYWludHMsIGhhdmVfY29uc3RfaW50X2NvbnN0cmFpbnRzKQoJKGhhdmVfY29uc3RfZGJsX2NvbnN0cmFpbnRzLCBtYW5nbGUsIGFkZF9jb25zdHJhaW50KQoJKHByb2Nlc3NfZGVmaW5lX2NvbnN0cmFpbnQsIHByb2Nlc3NfZGVmaW5lX3JlZ2lzdGVyX2NvbnN0cmFpbnQpCgkod3JpdGVfZW51bV9jb25zdHJhaW50X251bSwgd3JpdGVfbG9va3VwX2NvbnN0cmFpbnQpCgkod3JpdGVfaW5zbl9jb25zdHJhaW50X2xlbiwgd3JpdGVfcmVnY2xhc3NfZm9yX2NvbnN0cmFpbnQpCgkod3JpdGVfY29uc3RyYWludF9zYXRpc2ZpZWRfcCwgd3JpdGVfaW5zbl9jb25zdF9pbnRfb2tfZm9yX2NvbnN0cmFpbnQpCgkod3JpdGVfaW5zbl9leHRyYV9tZW1vcnlfY29uc3RyYWludCkKCSh3cml0ZV9pbnNuX2V4dHJhX2FkZHJlc3NfY29uc3RyYWludCkKCSh3cml0ZV9zYXRpc2ZpZXNfY29uc3RyYWludF9mbnMpOiBOZXcuCgkod3JpdGVfdG1fcHJlZHNfaCk6IElmIHdlIGhhdmUgbmV3LXN0eWxlIGNvbnN0cmFpbnQgZGVmaW5pdGlvbnMsCglwcm90b3R5cGUgdGhlIGZ1bmN0aW9ucyBnZW5lcmF0ZWQgZnJvbSB0aGVtLCBhbmQgZGVmaW5lIHRoZQoJb2xkIGNvbnN0cmFpbnQgaW50ZXJmYWNlIChzdGlsbCB1c2VkIGJ5IGdlbmVyaWMgY29kZSkgaW4gdGVybXMgb2YKCXRob3NlIGZ1bmN0aW9ucy4KCSh3cml0ZV9pbnNuX3ByZWRzX2MpOiBJZiB3ZSBoYXZlIG5ldy1zdHlsZSBjb25zdHJhaW50IGRlZmluaXRpb25zLAoJZ2VuZXJhdGUgYWxsIHJlbGV2YW50IGZ1bmN0aW9ucyBmcm9tIHRob3NlIGRlZmluaXRpb25zLgoJKG1haW4pOiBIYW5kbGUgZGVmaW5lX2NvbnN0cmFpbnQgZXRjLgoJKiBnZW5vdXRwdXQuYyAoc3RydWN0IGNvbnN0cmFpbnRfZGF0YSwgaW5kZXBfY29uc3RyYWludHMpCgkobWRlcF9jb25zdHJhaW50X2xldHRlcnMsIGNvbnN0cmFpbnRzX2J5X2xldHRlcl90YWJsZSwgbm90ZV9jb25zdHJhaW50KQoJKG1kZXBfY29uc3RyYWludF9sZW4pOiBOZXcgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMsIGRlZmluZWQKCSNpZmRlZiBVU0VfTURfQ09OU1RSQUlOVFMuCgkoY2hlY2tfY29uc3RyYWludF9sZW4pOiBEb24ndCBkZWZpbmUgI2lmZGVmIFVTRV9NRF9DT05TVFJBSU5UUy4KCSh2YWxpZGF0ZV9pbnNuX2FsdGVybmF0aXZlcyk6IElmIFVTRV9NRF9DT05TVFJBSU5UUyBpcyBkZWZpbmVkLAoJdXNlIG5ldyBsb2dpYyB0byB2YWxpZGF0ZSBvcGVyYW5kIGNvbnN0cmFpbnRzIGFnYWluc3QgY29uc3RyYWludAoJZGVmaW5pdGlvbnMuCgkobWFpbik6IFByb2Nlc3MgZGVmaW5lX2NvbnN0cmFpbnQgZXRjLiBpZiBVU0VfTURfQ09OU1RSQUlOVFMgaXMKCWRlZmluZWQuCgkqIGRlZmF1bHRzLmg6IElmIG5vbmUgb2YgdGhlIG9sZC1zdHlsZSBjb25zdHJhaW50IG1hY3JvcyBhcmUKCWRlZmluZWQsIGRlZmluZSBVU0VfTURfQ09OU1RSQUlOVFM7IGRvIG5vdCBwcm92aWRlIGRlZmF1bHRzIGZvciBhbnkKCW9sZC1zdHlsZSBtYWNyb3M7IGFuZCBwb2lzb24gUkVHX0NMQVNTX0ZST01fTEVUVEVSLAoJQ09OU1RfT0tfRk9SX0xFVFRFUl9QLCBDT05TVF9ET1VCTEVfT0tfRk9SX0xFVFRFUl9QLCBhbmQKCUVYVFJBX0NPTlNUUkFJTlQuCgkqIHJlY29nLmMgKHJlZ19maXRzX2NsYXNzX3ApOiBJZiBjbCBpcyBOT19SRUdTLCByZXR1cm4gMCBpbW1lZGlhdGVseS4KCSogZG9jL21kLnRleGk6IERvY3VtZW50IG5ldyBjb25zdHJhaW50LWRlZmluaXRpb24gbWVjaGFuaXNtIGFuZCB0aGUKCUMgaW50ZXJmYWNlIGl0IHByb3ZpZGVzLiAgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gb2xkIG1lY2hhbmlzbQoJZWxzZXdoZXJlIGluIHRoZSBkb2N1bWVudC4KCShNYWNoaW5lIENvbnN0cmFpbnRzKTogVXNlIHBhdGhuYW1lcyByZWxhdGl2ZSB0byBnY2MgZGlyZWN0b3J5LAoJaS5lLiBjb25maWcvQVJDSC9GSUxFLiAgQ2hhbmdlIGkzODYgc2VjdGlvbiB0byByZWZlciB0bwoJY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZDsgdXBkYXRlIHRoYXQgc2VjdGlvbiB0byBtYXRjaCBkb2NzdHJpbmdzLgoJKiBkb2MvdG0udGV4aTogTW92ZSBhbGwgZG9jdW1lbnRhdGlvbiBvZiB0aGUgb2xkIGNvbnN0cmFpbnQtCglkZWZpbml0aW9uIG1hY3JvcyB0byB0aGVpciBvd24gc2VjdGlvbiwgY2xlYXJseSBtYXJrIGFzIG9ic29sZXRlLgoKCSogY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCAoUiwgcSwgUSwgbCwgYSwgYiwgYywgZCwgUywgRCwgQSwgZiwgdCkKCSh1LCB5LCB4LCBZLCBJLCBKLCBLLCBMLCBNLCBOLCBPLCBHLCBDLCBlLCBaKTogTmV3IGNvbnN0cmFpbnQKCWRlZmluaXRpb25zLgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFJFR19DTEFTU19GUk9NX0xFVFRFUiwgQ09OU1RfT0tfRk9SX0xFVFRFUl9QKQoJKENPTlNUX0RPVUJMRV9PS19GT1JfTEVUVEVSX1AsIEVYVFJBX0NPTlNUUkFJTlQpOiBEZWxldGUuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKCptb3ZkZl9ub2ludGVnZXIpOiBSZW1vdmUgc3RyYXkgJ0gnIGZyb20KCWNvbnN0cmFpbnQgc3RyaW5ncy4KCShzcGxpdHMgYW5kIHBlZXBob2xlcyk6IFVzZSBzYXRpc2ZpZXNfY29uc3RyYWludF8qLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKG1lbW9yeV9hZGRyZXNzX2xlbmd0aCkKCShpeDg2X2F0dHJfbGVuZ3RoX2ltbWVkaWF0ZV9kZWZhdWx0KTogVXNlIHNhdGlzZmllc19jb25zdHJhaW50XyouCgoyMDA2LTAyLTI3ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGxhbWJkYS1jb2RlLmMgKGNhbl9jb252ZXJ0X3RvX3BlcmZlY3RfbmVzdCk6IEFsbG93IGFueSB0eXBlIG9mCglzY2FsYXIgb3BlcmF0aW9uIHRvIGJlIHB1dCBiYWNrIGludG8gdGhlIGxvb3AuCgoyMDA2LTAyLTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBvdGhlci8yNjIwOAoJKiB1bndpbmQtZHcyLmMgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQpOiBBZGQgc2lnbmFsX2ZyYW1lIGZpZWxkLgoJKGV4dHJhY3RfY2llX2luZm8pOiBIYW5kbGUgUyBmbGFnIGluIGF1Z21lbnRhdGlvbiBzdHJpbmcuCgkoZXhlY3V0ZV9jZmFfcHJvZ3JhbSk6IElmIGNvbnRleHQtPnNpZ25hbF9mcmFtZSwgZXhlY3V0ZSBhbHNvCglmcy0+cGMgPT0gY29udGV4dC0+cmEgaW5zdHJ1Y3Rpb25zLgoJKHV3X2ZyYW1lX3N0YXRlX2Zvcik6IElmIGNvbnRleHQtPnNpZ25hbF9mcmFtZSwgZG9uJ3Qgc3VidHJhY3Qgb25lCglmcm9tIGNvbnRleHQtPnJhIHRvIGZpbmQgRkRFLgoJKHV3X3VwZGF0ZV9jb250ZXh0XzEpOiBTZXQgY29udGV4dC0+c2lnbmFsX2ZyYW1lIHRvCglmcy0+c2lnbmFsX2ZyYW1lLgoJKF9VbndpbmRfR2V0SVBJbmZvKTogTmV3IGZ1bmN0aW9uLgoJKiB1bndpbmQtZHcyLmggKF9VbndpbmRfRnJhbWVTdGF0ZSk6IEFkZCBzaWduYWxfZnJhbWUgZmllbGQuCgkqIHVud2luZC1jLmMgKFBFUlNPTkFMSVRZX0ZVTkNUSU9OKTogVXNlIF9VbndpbmRfR2V0SVBJbmZvIGluc3RlYWQKCW9mIF9VbndpbmRfR2V0SVAuCgkqIHVud2luZC1zamxqLmMgKF9VbndpbmRfR2V0SVBJbmZvKTogTmV3IGZ1bmN0aW9uLgoJKiB1bndpbmQtZ2VuZXJpYy5oIChfVW53aW5kX0dldElQSW5mbyk6IE5ldyBwcm90b3R5cGUuCgkqIHVud2luZC1jb21wYXQuYyAoX1Vud2luZF9HZXRJUEluZm8pOiBOZXcgZnVuY3Rpb24uCgkqIGxpYmdjYy1zdGQudmVyIChfVW53aW5kX0dldElQSW5mbyk6IEV4cG9ydCBAQEdDQ180LjIuMC4KCSogY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYyAoX1Vud2luZF9HZXRJUEluZm8pOiBOZXcgZnVuY3Rpb24uCgkqIGNvbmZpZy9hcm0vdW53aW5kLWFybS5oIChfVW53aW5kX0dldElQSW5mbyk6IERlZmluZS4KCSogY29uZmlnL2kzODYvbGludXgtdW53aW5kLmggKHg4Nl9mYWxsYmFja19mcmFtZV9zdGF0ZSwKCXg4Nl82NF9mYWxsYmFja19mcmFtZV9zdGF0ZSk6IFNldCBmcy0+c2lnbmFsX2ZyYW1lLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4LXVud2luZC5oIChwcGNfZmFsbGJhY2tfZnJhbWVfc3RhdGUpOiBMaWtld2lzZS4KCShNRF9GUk9CX1VQREFURV9DT05URVhUKTogRGVmaW5lIHVuY29uZGl0aW9uYWxseS4KCShmcm9iX3VwZGF0ZV9jb250ZXh0KTogTGlrZXdpc2UuICBXb3JrYXJvdW5kIG1pc3NpbmcgUyBmbGFnIGluCglMaW51eCAyLjYuMTIgLSAyLjYuMTYga2VybmVsIHZEU09zLgoJKiBjb25maWcvczM5MC9saW51eC11bndpbmQuaCAoczM5MF9mYWxsYmFja19mcmFtZV9zdGF0ZSk6IExpa2V3aXNlLgoJUmVtb3ZlIHRoZSBwc3dfYWRkciArIDEgaGFjay4KCjIwMDYtMDItMjcgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoZ2V0X2NvbnN0cmFpbnRfZm9yKTogTW92ZSBjb2RlIHRvIGRlYWwKCXdpdGggYWdncmVnYXRlcyBoZXJlLgoJKGZpbmRfZnVuY19hbGlhc2VzKTogUmVtb3ZlIGNvZGUgZm9yICY8YWdncmVnYXRlPiBmcm9tIGhlcmUuCgoyMDA2LTAyLTI2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9iaW5hcnkpIDxFUV9FWFBSPjogRm9sZCAoflggJiBDKSBlcS9uZSAwIGFzCgkoWCAmIEMpIG5lL2VxIDAsIHdoZXJlIEMgaXMgYSBzaW5nbGUgYml0LCBpLmUuIGEgcG93ZXIgb2YgdHdvLgoJRm9sZCBib3RoICIoKFggJiBDKSBeIEMpIGVxL25lIDAiIGFuZCAiKChYIF4gQykgJiBDKSBlcS9uZSAwIgoJYXMgKFggJiBDKSBuZS9lcSAwLgoKMjAwNi0wMi0yNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8xOTk4MwoJKiByZWFsLmMgKHJlYWxfbmFuKTogQWxsb3cgYm90aCAweCBhbmQgMFggYXMgaGV4YWRlY2ltYWwgcHJlZml4ZXMuCgoyMDA2LTAyLTI2ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBvcHRzLmMgKGRlY29kZV9vcHRpb25zKTogRG8gbm90IGhhbmRsZSBmbGFnX3N0cmVuZ3RoX3JlZHVjZS4KCShjb21tb25faGFuZGxlX29wdGlvbik6IEhhbmRsZSBPUFRfZmxvb3Bfb3B0aW1pemUsIE9QVF9mcmVydW5fbG9vcF9vcHQKCWFuZCBPUFRfZnN0cmVuZ3RoX3JlZHVjZS4KCSogdHJlZS1zc2EtbG9vcC5jICh0cmVlX3NzYV9sb29wX3ByZWZldGNoKTogT25seSB0ZXN0CglmbGFnX3ByZWZldGNoX2xvb3BfYXJyYXlzIGZvciBiZWluZyBub256ZXJvLgoJKiBjb21tb24ub3B0IChmbG9vcC1vcHRpbWl6ZSwgZnJlcnVuLWxvb3Atb3B0KTogUmVzdXJyZWN0ZWQgYXMKCW5vLW9wcy4KCShmcHJlZmV0Y2gtbG9vcC1hcnJheXMtcnRsKTogUmVtb3ZlZC4KCShmbGFnX3ByZWZldGNoX2xvb3BfYXJyYXlzKTogRG8gbm90IHNwZWNpZnkgdGhlIHZhbHVlLgoKCSogZG9jL3Bhc3Nlcy50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBvZiBsb29wIG9wdGltaXplcgoJcGFzc2VzLgoJKiBkb2MvaW52b2tlLnRleGkgKC1mc3RyZW5ndGgtcmVkdWNlLCAtZnByZWZldGNoLWxvb3AtYXJyYXlzLXJ0bCwKCS1mcmVydW4tbG9vcC1vcHQpOiBSZW1vdmUuCgoyMDA2LTAyLTI2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjY0MjEKCSogdHJlZS1zc2EtYWxpYXMuYyAoZmluZF91c2VkX3BvcnRpb25zKTogRG9uJ3QgdHJlYXQgcGFyYW1ldGVycwoJaW4gZnVuY3Rpb24gY2FsbHMgdGhhdCBhcmUgQUREUl9FWFBScyBhcyB1c2luZyB0aGUgd2hvbGUgc3RydWN0dXJlLgoKMjAwNi0wMi0yNiAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYi5nY2NAZ21haWwuY29tPgoKCSogY29tbW9uLm9wdCAoLWZsb29wLW9wdGltaXplLCAtZnJlcnVuLWxvb3Atb3B0KTogUmVtb3ZlLgoJKiB0cmVlLXBhc3MuaCAocGFzc19sb29wX29wdGltaXplKTogUmVtb3ZlLgoJKiBwYXNzZXMuYyAocGFzc19sb29wX29wdGltaXplKTogTmV2ZXIgcnVuIGl0LgoJKiB0b3BsZXYuYyAoYmFja2VuZF9pbml0KTogRG9uJ3QgY2FsbCBpbml0X2xvb3AuCgkqIG9wdHMuYyAoZmxhZ19sb29wX29wdGltaXplX3NldCk6IFJlbW92ZS4KCShkZWNvZGVfb3B0aW9ucyk6IE5ldmVyIHNldCBmbGFnX2xvb3Bfb3B0aW1pemUgb3IgZmxhZ19yZXJ1bl9sb29wX29wdC4KCShjb21tb25faGFuZGxlX29wdGlvbikgPE9QVF9mbG9vcF9vcHRpbWl6ZT46IFJlbW92ZS4gIERvbid0IGRpc2FibGUKCXRoZSBvbGQgUlRMIGxvb3Agb3B0aW1pemVyIHdoZW4gcHJvZmlsaW5nIGVuYWJsZWQuCgkqIHByZWRpY3QuYyAodHJlZV9lc3RpbWF0ZV9wcm9iYWJpbGl0eSk6IEFsd2F5cyBzdHJpcCBidWlsdGluX2V4cGVjdC4KCSogY2ZnY2xlYW51cC5jICh0cnlfZm9yd2FyZF9lZGdlcyk6IERvbid0IGF2b2lkIGtpbGxpbmcgbG9vcAoJcHJlLWhlYWRlcnMgZm9yIHRoZSBzYWtlIG9mIHRoZSBvbGQgUlRMIGxvb3Agb3B0aW1pemVyLgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIGxvb3Auby4KCgkqIGRvYy9pbnZva2UudGV4aTogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIC1mbG9vcC1vcHRpbWl6ZQoJYW5kIC1mcmVydW4tbG9vcC1vcHQuCgoyMDA2LTAyLTI2ICBaYWNrIFdlaW5iZXJnICA8emFja3dAcGFuaXguY29tPgoKCSogZG9jL21kLnRleGkgKE1hY2hpbmUgQ29uc3RyYWludHMpOiBSZWZlciB0byBhbGwgZmlsZXMgd2l0aCBwYXRocwoJcmVsYXRpdmUgdG8gZ2NjIGRpcmVjdG9yeSAoaS5lLiBjb25maWcvQ1BVL2ZpbGUpLiAgQWRkIG1pc3NpbmcKCUB0YWJsZSBAY29kZSAuLi4gQGVuZCB0YWJsZSB0byBNMzJDIHN1YnNlY3Rpb24uCgoyMDA2LTAyLTI2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9iaW5hcnkpIDxCSVRfWE9SX0VYUFI+OiBGb2xkIChYICYgMSkgXiAxIGFzCgkoWCAmIDEpID09IDAuCgk8QklUX0FORF9FWFBSPjogRm9sZCAoWCBeIDEpICYgMSBhbmQgflggJiAxIGFzIChYICYgMSkgPT0gMC4KCjIwMDYtMDItMjYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIEphbWVzIEEuIE1vcnJpc29uICA8cGh5dGhvbkBnY2MuZ251Lm9yZz4KCglQUiBtaWRkbGUtZW5kLzIxMTM3CgkqIGZvbGQtY29uc3QuYyAoZm9sZF9iaW5hcnkpIDxFUV9FWFBSPjogRm9sZCAoKFg+PkMxKSZDMikgZXEvbmUgMCwKCXdoZW4gQzIgaXMgYSBwb3dlciBvZiB0d28sIGFzIGVpdGhlciAoWCYoQzI8PEMxKSkgZXEvbmUgMCBpZiB0aGUKCW5ldyBjb25zdGFudCBDMjw8QzEsIG9yIGFzIChYPDApIG9yIChYLGZhbHNlKSBkZXBlbmRpbmcgdXBvbiB0aGUKCXNpZ25lZG5lc3Mgb2YgdGhlIHNoaWZ0IG9wZXJhdGlvbi4KCjIwMDYtMDItMjYgIERvcml0IE51em1hbiAgPGRvcml0QGlsLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjYzNTkKCSogdHJlZS1zc2EtYWxpYXMuYyAobmV3X3R5cGVfYWxpYXMpOiBTZXQgZmllbGRzIGZvciBuZXcgdGFnLgoKMjAwNi0wMi0yNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb25fMSk6IFNpbXBsaWZ5CgkoWF5ZKSA9PSAwIGFzIFggPT0gWSBhbmQgKFheWSkgIT0gMCBhcyBYICE9IFkuICBTaW1wbGlmeSAoWF5ZKSA9PSBZCglhcyBYID09IDAsIGFuZCBzb21lIHN5bW1ldHJ5IHJlbGF0ZWQgdHJhbnNmb3JtYXRpb25zLgoJU2ltcGxpZnkgKFheQzEpID09IEMyIGFzIFggPT0gKEMxXkMyKS4gIFNwbGl0IGxvbmcgY29tbWVudCBsaW5lLgoKMjAwNi0wMi0yNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8yMzY3MwoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfYmluYXJ5KSA8RVFfRVhQUj46IEZvbGQgKFheWSkgPT0gMCBhcyBYID09IFkKCWFuZCAoWF5ZKSAhPSAwIGFzIFggIT0gWS4gIEZvbGQgKFheWSkgPT0gWSBhcyBYID09IDAsIGFuZCBzb21lCglzeW1tZXRyeSByZWxhdGVkIHRyYW5zZm9ybWF0aW9ucy4gIEZvbGQgKFheQzEpID09IEMyIGFzCglYID09IChDMV5DMikuCgoyMDA2LTAyLTI1ICBKdWVyZ2VuIFdlaWdlcnQgIDxqd0BzdXNlLmRlPgoJUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogc2Nhbi1kZWNscy5jIChzY2FuX2RlY2xzKTogRG9uJ3QgZmV0Y2ggbmV3IHN0YXRlbWVudCBhZnRlciBDUFBfRU9GLgoKMjAwNi0wMi0yNCAgQWRhbSBOZW1ldCAgPGFuZW1ldEBjYXZpdW1uZXR3b3Jrcy5jb20+CgoJKiBjb21iaW5lLmMgKGdlbl9sb3dwYXJ0X29yX3RydW5jYXRlKTogQ2FsbAoJc2ltcGxpZnlfZ2VuX3VuYXJ5KFRSVU5DQVRFLCAuLi4pIGluc3RlYWQgb2YgZ2VuX3J0eF9UUlVOQ0FURS4KCjIwMDYtMDItMjQgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogZG9jL2ludm9rZS50ZXhpOiBNb3ZlIC1mb3Blbm1wIGRlc2NyaXB0aW9uIHRvICJPcHRpb25zIGZvcgoJQ29kZSBHZW5lcmF0aW9uIi4KCVJlbW92ZSByZWZlcmVuY2UgdG8gLWxnb21wLgoKMjAwNi0wMi0yNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogZG9jL2luc3RhbGwudGV4aTogUmVxdWlyZSBHTlUgdGFyIHZlcnNpb24gMS4xNC4KCjIwMDYtMDItMjQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZG9jL3RtLnRleGkgKFJ1bi10aW1lIFRhcmdldCk6IERvY3VtZW50IENfQ09NTU9OX09WRVJSSURFX09QVElPTlMuCgkqIGRvYy9pbnZva2UudGV4aSAoQysrIERpYWxlY3QgT3B0aW9ucyk6IERvY3VtZW50CgktZm5vLXVzZS1jeGEtZ2V0LWV4Y2VwdGlvbi1wdHIuCgkqIGNvbmZpZ3VyZS5hYzogRGVmaW5lIERFRkFVTFRfVVNFX0NYQV9BVEVYSVQgdG8gMiBub3QgMS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjLm9wdCAoZnVzZS1jeGEtZ2V0LWV4Y2VwdGlvbi1wdHIpOiBOZXcuCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogSGFuZGxlCglPUFRfZnVzZV9jeGFfZ2V0X2V4Y2VwdGlvbl9wdHIuCgkqIGMtY29tbW9uLmMgKGZsYWdfdXNlX2N4YV9hdGV4aXQpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCShmbGFnX3VzZV9jeGFfZ2V0X2V4Y2VwdGlvbl9wdHIpOiBOZXcuCgkqIGMtY29tbW9uLmggKGZsYWdfdXNlX2N4YV9nZXRfZXhjZXB0aW9uX3B0cik6IE5ldy4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBJbXByb3ZlCglkb2N1bWVudGF0aW9uLgoJKENfQ09NTU9OX09WRVJSSURFX09QVElPTlMpOiBOZXcuCgoyMDA2LTAyLTI0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzI0OTUyCgkqIGNvbWJpbmUuYyAodHJ5X2NvbWJpbmUpOiBFeHBsaWNpdGx5IGNoZWNrIHdoZXRoZXIgR0VUX0NPREUgaXMKCWEgU0VUIG9yIGEgQ0xPQkJFUiwgaW5zdGVhZCBvbiBjaGVja2luZyB0aGF0IGl0IGlzbid0IGEgVVNFLgoKMjAwNi0wMi0yNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfY29tcGFyaXNvbik6IE5ldyBzdWJyb3V0aW5lIG9mIGZvbGRfYmluYXJ5Cgljb250YWluaW5nIHRyYW5zZm9ybWF0aW9ucyBjb21tb24gdG8gYm90aCB0aGUgZXF1YWxpdHkgYW5kCglvcmRlcmluZyByZWxhdGlvbmFsIG9wZXJhdG9ycywgZmFjdG9yZWQgb3V0IG9mIGZvbGRfYmluYXJ5LgoJKGZvbGRfYmluYXJ5KTogU2VwYXJhdGUgb3V0IHRoZSBlcXVhbGl0eSBvcGVyYXRvcnMgKEVRX0VYUFIKCWFuZCBORV9FWFBSKSBmcm9tIHRoZSBvcmRlcmluZyBvcGVyYXRvcnMgKExUX0VYUFIsIEdUX0VYUFIsCglMRV9FWFBSIGFuZCBHRV9FWFBSKSwgY2FsbGluZyBmb2xkX2NvbXBhcmlzb24gdG8gcGVyZm9ybSB0aGUKCXRyYW5zZm9ybWF0aW9ucyBjb21tb24gdG8gYm90aC4KCShmb2xkX2Rpdl9jb21wYXJlKTogRml4IGxhdGVudCBidWdzIGluIHRoZSBwcmV2aW91c2x5IHVucmVhY2hhYmxlCglMVF9FWFBSIGFuZCBHRV9FWFBSIGNhc2VzLgoKMjAwNi0wMi0yNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2luaXRfYnVpbHRpbnMpOiBDaGFuZ2UKCWRlY2wgbGlibmFtZSBmb3IgY2xvZyB0byBfX2Nsb2cgb24gQUlYLgoKCSogY29uZmlnL3JzNjAwMC94Y29mZi5oIChNQVhfT0ZJTEVfQUxJR05NRU5UKTogRGVmaW5lLgoKMjAwNi0wMi0yNCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiB0YXJnZXQvMjY0NTMKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IERvbid0CglvdXRwdXQgdHJhY2ViYWNrIHRhYmxlIGZvciB0aHVua3MuICBMb2NhbGlzZSByczYwMDBfc3RhY2tfaW5mbyBjYWxsLgoKMjAwNi0wMi0yMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBndGhyLXBvc2l4LmggKF9fZ3RocncpOiBGaXggdHlwbyBpbiBjb21tZW50LgoKMjAwNi0wMi0yMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkb2MvY3BwLnRleGkgKENoYXJhY3RlciBzZXRzKTogRG9jdW1lbnQgdGhhdCB3ZSBkbyBzdXBwb3J0CglpbnB1dCBmaWxlcyB0byBiZSBpbiBhbnkgY2hhcmFjdGVyIHNldC4KCjIwMDYtMDItMjMgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLmggKFBISV9BUkdfTk9OWkVSTyk6IFJlbW92ZS4KCSogdHJlZS1waGlub2Rlcy5jIChhZGRfcGhpX2FyZyk6IE5vIGxvbmdlciBpbml0aWFsaXplIFBISV9BUkdfTk9OWkVSTy4KCShyZW1vdmVfcGhpX2FyZ19udW0pOiBObyBsb25nZXIgY29weSBQSElfQVJHX05PTlpFUk8gZnJvbSB0aGUgb2xkCglub2RlIHRvIHRoZSBuZXcgbm9kZS4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNjQyNQoJKiB0cmVlLXZycC5jICh2cnBfdmlzaXRfYXNzaWdubWVudCk6IElmIHRoZSBMSFMncyB0eXBlIGhhcyBhIE5VTEwKCW1pbi9tYXgsIHRoZW4gYXNzdW1lIGl0cyB2YXJ5aW5nLgoKMjAwNi0wMi0yMyAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjYzMTYKCSogcnRsYW5hbC5jIChlbnVtIG1heV90cmFwX3BfZmxhZ3MpOiBOZXcuCgkobWF5X3RyYXBfcF8xKTogVGFrZSBmbGFncyBpbnN0ZWFkIG9mIHVuYWxpZ25lZF9tZW1zIGFyZ3VtZW50LiAgSWdub3JlCglNRU1fTk9UUkFQX1AgaWYgZmxhZ3MgJiBNVFBfQUZURVJfTU9WRS4KCShtYXlfdHJhcF9wLCBtYXlfdHJhcF9vcl9mYXVsdF9wKTogUGFzcyBmbGFncyB0byBtYXlfdHJhcF9wXzEuCgkobWF5X3RyYXBfYWZ0ZXJfY29kZV9tb3Rpb25fcCk6IE5ldyBmdW5jdGlvbi4KCSogbG9vcC1pbnZhcmlhbnQuYyAoZmluZF9pZGVudGljYWxfaW52YXJpYW50cyk6IEZpeCBkdW1wIGZvcm1hdGluZy4KCShmaW5kX2ludmFyaWFudF9pbnNuKTogVXNlIG1heV90cmFwX2FmdGVyX2NvZGVfbW90aW9uX3AuCgkqIHJ0bC5oIChtYXlfdHJhcF9hZnRlcl9jb2RlX21vdGlvbl9wKTogRGVjbGFyZS4KCjIwMDYtMDItMjMgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCgkqIGVtaXQtcnRsLmMgKGltbWVkX2RvdWJsZV9jb25zdCk6IENsZWFudXAuCgoyMDA2LTAyLTIzICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglGaXggUFIgdHJlZS1vcHRpbWl6YXRpb24vMjYzNzYKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoZmluZF9mdW5jX2FsaWFzZXMpOiBVc2UgZ2V0X2lkX2Zvcl90cmVlLAoJcmVtb3ZlIGFzc2VydC4KCjIwMDYtMDItMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjY0MTIKCSogZ2ltcGxpZnkuYyAob21wX2FkZF92YXJpYWJsZSk6IEd1YXJkIHZhcmlhYmxlIHNpemUgZGVjbCB0ZXN0IHdpdGgKCURFQ0xfU0laRSAoZGVjbCkgY2hlY2suCgoyMDA2LTAyLTIzICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8yNjQzOQoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChmaW5kX2Z1bmNfYWxpYXNlcyk6IEhhbmRsZSBjb21wbGV4IHR5cGVzCglsaWtlIGFnZ3JlZ2F0ZSB0eXBlcy4KCjIwMDYtMDItMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmFjOiBBZGQgLS13aXRoeyxvdXR9LWxvbmctZG91YmxlLTEyOCBjb25maWd1cmUgb3B0aW9uLgoJKFRBUkdFVF9ERUZBVUxUX0xPTkdfRE9VQkxFXzEyOCk6IE5ldyB0ZXN0LgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIGNvbmZpZy5pbjogUmVidWlsdC4KCSogZG9jL2luc3RhbGwudGV4aSAoT3B0aW9ucyBzcGVjaWZpY2F0aW9uKTogRG9jdW1lbnQKCS0td2l0aC1sb25nLWRvdWJsZS0xMjguCgoJKiBjb25maWcvcnM2MDAwL2xpbnV4LmggW1RBUkdFVF9ERUZBVUxUX0xPTkdfRE9VQkxFXzEyOF0KCShSUzYwMDBfREVGQVVMVF9MT05HX0RPVUJMRV9TSVpFKTogRGVmaW5lIHRvIDEyOC4KCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggW1RBUkdFVF9ERUZBVUxUX0xPTkdfRE9VQkxFXzEyOF0KCShSUzYwMDBfREVGQVVMVF9MT05HX0RPVUJMRV9TSVpFKTogRGVmaW5lIHRvIDEyOC4KCjIwMDYtMDItMjMgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAob3ZlcnJpZGVfb3B0aW9ucyk6IEhhbmRsZQoJVEFSR0VUX0RFRkFVTFRfTE9OR19ET1VCTEVfMTI4LgoKCSogY29uZmlnL2FscGhhL2FscGhhLmMgKG92ZXJyaWRlX29wdGlvbnMpOiBIYW5kbGUKCVRBUkdFVF9ERUZBVUxUX0xPTkdfRE9VQkxFXzEyOC4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19vdmVycmlkZV9vcHRpb25zKTogSGFuZGxlCglUQVJHRVRfREVGQVVMVF9MT05HX0RPVUJMRV8xMjguCgoyMDA2LTAyLTIyICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKHN0bXAtZml4aW5jKTogVXNlIHJlYWwtJChJTlNUQUxMX0hFQURFUlNfRElSKS4KCShyZWFsLWluc3RhbGwtaGVhZGVycy10YXIsIHJlYWwtaW5zdGFsbC1oZWFkZXJzLWNwaW8pCgkocmVhbC1pbnN0YWxsLWhlYWRlcnMtY3ApOiBOZXcgdGFyZ2V0cy4KCjIwMDYtMDItMjIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5oICh2YXJpYWJsZV9zZWN0aW9uKTogRGVsZXRlLgoJKiB2YXJhc20uYyAodmFyaWFibGVfc2VjdGlvbik6IERlbGV0ZS4KCjIwMDYtMDItMjIgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBpbnN0YWxsLnRleGk6IEFkZCBub3RlcyBvbiBpbnN0YWxsLnRleGkyaHRtbC4KCShCdWlsZGluZyBpbiBwYXJhbGxlbCk6IERvIG5vdCB1c2UgZm9vdG5vdGVzLgoKMjAwNi0wMi0yMSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCVBSIGxpYmdvbXAvMjYyMzQKCSogZG9jL2luc3RhbGwudGV4aSAoQ29uZmlndXJhdGlvbik6IERvY3VtZW50IC0tZGlzYWJsZS1saWJnb21wLgoKMjAwNi0wMi0yMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoRFdBUkYyX0ZSQU1FX1JFR19PVVQpOiBOZXcuCgoyMDA2LTAyLTIxICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L3NzZS5tZCAodmVjX2V4dHJhY3R2MmRmXzFfc3NlKTogTmV3LgoJKHZlY19leHRyYWN0djJkZl8wX3NzZSk6IE5ldy4KCjIwMDYtMDItMjEgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZGVmYXVsdHMuaCAoQ0ZBX0ZSQU1FX0JBU0VfT0ZGU0VUKTogRGVmaW5lLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKENGQV9GUkFNRV9CQVNFX09GRlNFVCk6IE92ZXJyaWRlLgoJKiBkb2MvdG0udGV4aSAoQ0ZBX0ZSQU1FX0JBU0VfT0ZGU0VUKTogRG9jdW1lbnQuCgkqIGR3YXJmMm91dC5jIChidWlsZF9jZmFfbG9jKTogTmV3IG9mZnNldCBwYXJhbWV0ZXIuICBBZGQgaXQKCXRvIHRoZSByZXN1bHQgb2YgdGhlIGV4cHJlc3Npb24uCgkoZGVmX2NmYV8xKTogQWRqdXN0LgoJKGZyYW1lX3BvaW50ZXJfY2ZhX29mZnNldCk6IFJlbmFtZSB0by4uLgoJKGZyYW1lX3BvaW50ZXJfZmJfb2Zmc2V0KTogLi4uIHRoaXMuICBBZGp1c3QgYWxsIHVzZXMuCgkoY29udmVydF9jZmFfdG9fbG9jX2xpc3QpOiBSZW5hbWUgdG8uLi4KCShjb252ZXJ0X2NmYV90b19mYl9sb2NfbGlzdCk6IC4uLiB0aGlzLiAgTmV3IG9mZnNldCBwYXJhbWV0ZXIuCglQYXNzIGl0IG9uIHRvIGJ1aWxkX2NmYV9sb2MuCgkoY29tcHV0ZV9mcmFtZV9wb2ludGVyX3RvX2NmYV9kaXNwbGFjZW1lbnQpOiBSZW5hbWUgdG8uLi4KCShjb21wdXRlX2ZyYW1lX3BvaW50ZXJfdG9fZmJfZGlzcGxhY2VtZW50KTogLi4uIHRoaXMuICBOZXcKCW9mZnNldCBwYXJhbWV0ZXIuICBVc2UgaXQgaW4gY29tcHV0YXRpb24uCgkoZ2VuX3N1YnByb2dyYW1fZGllKTogQ29tcHV0ZSBjZmFfZmJfb2Zmc2V0IHdpdGggdGhlIG5ldwoJbWFjcm8sIGFuZCB1c2UgaXQgdG8gY29tcHV0ZSB0aGUgZmIgbG9jIGxpc3QgYW5kIHRoZQoJZGlzcGxhY2VtZW50LgoKMjAwNi0wMi0yMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIGNvbmZpZy9iZmluL3ByZWRpY2F0ZXMubWQgKGNjX29wZXJhbmQpOiBEZWxldGUgcHJlZGljYXRlLiAgQWxsIHVzZXMKCXJlcGxhY2VkIHdpdGggcmVnaXN0ZXJfb3BlcmFuZC4KCSogY29uZmlnL2JmaW4vYmZpbi5jIChiZmluX3JlZ2lzdGVyX21vdmVfY29zdCk6IE1vdmluZyBDQyB0byBhbnkKCW5vbi1EUkVHIGlzIGV4cGVuc2l2ZS4KCSogY29uZmlnL2JmaW4vYmZpbi5oIChGSVhFRF9SRUdJU1RFUlMpOiBDQyBpc24ndCBmaXhlZC4KCSogY29uZmlnL2JmaW4vYmZpbi5tZCAobW92YmkpOiBGaXggY29uc3RyYWludHMgYW5kIHRlbXBsYXRlIGZvciBtb3ZlcwoJaW52b2x2aW5nIG1lbW9yeS4KCjIwMDYtMDItMjEgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogZG9jL2luc3RhbGwudGV4aTJodG1sOiBVc2Ugc2V0IC1lLgoKMjAwNi0wMi0yMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkb2MvdG0udGV4aSAoQVNNX09VVFBVVF9TSEFSRURfQ09NTU9OLCBBU01fT1VUUFVUX1NIQVJFRF9CU1MpCgkoQVNNX09VVFBVVF9TSEFSRURfTE9DQUwpOiBEZWxldGUuCgkqIGRvYy9pbnZva2UudGV4aSAoLWZzaGFyZWQtZGF0YSk6IERlbGV0ZS4KCSogY29tbW9uLm9wdCAoZnNoYXJlZC1kYXRhKTogRGVsZXRlLgoJKiB2YXJhc20uYyAoYXNtX2VtaXRfdW5pbml0aWFsaXNlZCk6IFJlbW92ZSBmbGFnX3NoYXJlZF9kYXRhIGhhbmRsaW5nLgoJKGFzc2VtYmxlX3N0YXRpY19zcGFjZSk6IFJlbW92ZSAjaWYgMCBjb2RlLgoJKiBzeXN0ZW0uaCAoQVNNX09VVFBVVF9TSEFSRURfQ09NTU9OLCBBU01fT1VUUFVUX1NIQVJFRF9CU1MpCgkoQVNNX09VVFBVVF9TSEFSRURfTE9DQUwpOiBQb2lzb24uCgkqIGNvbmZpZy9jcmlzL2NyaXMuaDogUmVtb3ZlIEZJWE1FLgoKMjAwNi0wMi0yMSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhpIChGcm9udCBFbmQgRGlyZWN0b3J5KTogTm8gbW9yZSBkb3VibGUtY29sb24KCWhvb2tzLgoKMjAwNi0wMi0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNjM3OQoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X3NoaWZ0X2NvbnN0XzEpOiBEaXNhYmxlIG5lc3RlZCBzaGlmdHMKCW9wdGltaXphdGlvbiBmb3IgdmVjdG9yIHNoaWZ0cy4KCjIwMDYtMDItMjAgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2MzYxCgkqIHRyZWUtdnJwLmMgKGV4dHJhY3RfcmFuZ2VfZnJvbV91bmFyeV9leHByKTogSGFuZGxlIE5FR0FURV9FWFBSCglvZiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGVzLgoKMjAwNi0wMi0yMCAgU2ViYXN0aWFuIFBvcCAgPHBvcEBjcmkuZW5zbXAuZnI+CgoJKiB0cmVlLWNocmVjLmMgKGVxX2V2b2x1dGlvbnNfcCk6IE5ldy4KCSogdHJlZS1jaHJlYy5oIChlcV9ldm9sdXRpb25zX3ApOiBEZWNsYXJlZC4KCSogdHJlZS1kYXRhLXJlZi5jOiBGaXggZm9ybWF0dGluZy4KCShkYXRhZGVwX3N0YXRzLCBkZXBlbmRlbmNlX3N0YXRzKTogTmV3LgoJKGdjZCk6IE1vdmVkLi4uCgkocHJpbnRfZGlyZWN0aW9uX3ZlY3Rvcik6IE5ldy4KCShkdW1wX2RhdGFfZGVwZW5kZW5jZV9yZWxhdGlvbik6IFVzZSBwcmludF9kaXJlY3Rpb25fdmVjdG9yLgoJKG9iamVjdF9hbmFseXNpcywgY3JlYXRlX2RhdGFfcmVmKTogSGFuZGxlIENPTVBPTkVOVF9SRUYuCgkoY29tcHV0ZV9zdWJzY3JpcHRfZGlzdGFuY2UpOiBTdGF0aWMuCgkoaW5pdGlhbGl6ZV9kYXRhX2RlcGVuZGVuY2VfcmVsYXRpb24pOiBTdGF0aWMuICBHZXQgdGhlIG51bWJlcgoJb2YgbG9vcHMgc3Vycm91bmRpbmcgdGhlIHJlZmVyZW5jZXMgZnJvbSB0aGUgY2FsbGVycywgYW5kIGluaXRpYWxpemUKCUREUl9TSVpFX1ZFQ1QgdG8gbmJfbG9vcHMuICBVc2UgYm90aCBiYXNlX2FkZHJfZGlmZmVyX3AgYW5kCgliYXNlX29iamVjdF9kaWZmZXJfcCBhbmFseXplcnMuCgkoYW5hbHl6ZV96aXZfc3Vic2NyaXB0LCBhbmFseXplX3Npdl9zdWJzY3JpcHRfY3N0X2FmZmluZSwKCWNvbXB1dGVfb3ZlcmxhcF9zdGVwc19mb3JfYWZmaW5lXzFfMiwKCWFuYWx5emVfc3Vic2NyaXB0X2FmZmluZV9hZmZpbmUpOiBDb3VudCB0aGUgY2xhc3NpZmllZCBkZXBlbmRlbmNlcy4KCVByaW50IGEgbWVzc2FnZSB3aGVuIGEgdGVzdCBmYWlsZWQuCgkoY2FuX3VzZV9hbmFseXplX3N1YnNjcmlwdF9hZmZpbmVfYWZmaW5lKTogTmV3LgoJKGFuYWx5emVfc2l2X3N1YnNjcmlwdCk6IENvbXB1dGUgdGhlIGRhdGEgZGVwZW5kZW5jZXMgb24gc3ltYm9saWMKCXNjZXZzIHRoYXQgdmVyaWZ5IGNhbl91c2VfYW5hbHl6ZV9zdWJzY3JpcHRfYWZmaW5lX2FmZmluZS4KCShjaHJlY19zdGVwc19kaXZpZGVfY29uc3RhbnRfcCk6IFJldHVybnMgdHJ1ZSwgZmFsc2UsIG9yIHVua25vd24uCgkoYW5hbHl6ZV9taXZfc3Vic2NyaXB0KTogVXBkYXRlIHVzZSBvZiBjaHJlY19zdGVwc19kaXZpZGVfY29uc3RhbnRfcC4KCUhhbmRsZSBzeW1ib2xpYyBzY2V2cy4KCShhbmFseXplX292ZXJsYXBwaW5nX2l0ZXJhdGlvbnMpOiBMZXQgc3ltYm9saWMgYWZmaW5lIHNjZXZzIHRvIGJlCglhbmFseXplZC4KCShzdWJzY3JpcHRfZGVwZW5kZW5jZV90ZXN0ZXIpOiBNb3ZlZC4uLgoJKGJ1aWxkX2NsYXNzaWNfZGlzdF92ZWN0b3IsIGJ1aWxkX2NsYXNzaWNfZGlyX3ZlY3Rvcik6IERvbid0IHVzZQoJbGFtYmRhX3ZlY3Rvcl9jbGVhciBvbiBuZXdseSBhbGxvY2F0ZWQgdmVjdG9ycy4gIEdldCBuYl9sb29wcyBmcm9tCglERFJfU0laRV9WRUNUIGluc3RlYWQgb2YgZ2V0dGluZyBpdCBpbiBwYXJhbWV0ZXIuCgkoc3Vic2NyaXB0X2RlcGVuZGVuY2VfdGVzdGVyKTogLi4uIGhlcmUuICBUYWtlIGFzIGEgcGFyYW1ldGVyCglsb29wX25lc3RfZGVwdGguICBDYWxsIGJ1aWxkX2NsYXNzaWNfZGlzdF92ZWN0b3IgYW5kCglidWlsZF9jbGFzc2ljX2Rpcl92ZWN0b3IuCgkoY29tcHV0ZV9hZmZpbmVfZGVwZW5kZW5jZSk6IFVwZGF0ZSBzdWJzY3JpcHRfZGVwZW5kZW5jZV90ZXN0ZXIKCXBhcmFtZXRlcnMuICBVcGRhdGUgZGF0YWRlcF9zdGF0cyBjb3VudGVycy4gIENhbGwKCWNvbXB1dGVfc3Vic2NyaXB0X2Rpc3RhbmNlLgoJKGNvbXB1dGVfc2VsZl9kZXBlbmRlbmNlKTogU2F2ZSB0aGUgZGlzdCBhbmQgZGlyIHZlY3RvcnMuICBDYWxsCgljb21wdXRlX3N1YnNjcmlwdF9kaXN0YW5jZS4KCShkZHJfcCwgREVGX1ZFQ19QKGRkcl9wKSwgREVGX1ZFQ19BTExPQ19QKGRkcl9wLGhlYXApKTogTW92ZWQuLi4KCShjb21wdXRlX2FsbF9kZXBlbmRlbmNlcyk6IFJlb3JkZXIgcGFyYW1ldGVycyBhcyB0aGV5IHdlcmUgYmVmb3JlCgljb252ZXJzaW9uIHRvIFZFQy4gIFBhc3MgbmJfbG9vcHMgYW5kIGxvb3BfbmVzdF9kZXB0aC4gIERvbid0IGNhbGwKCWNvbXB1dGVfc3Vic2NyaXB0X2Rpc3RhbmNlLiAgVXBkYXRlIHRoZSB1c2Ugb2YKCWNvbXB1dGVfYWZmaW5lX2RlcGVuZGVuY2UgYW5kIGluaXRpYWxpemVfZGF0YV9kZXBlbmRlbmNlX3JlbGF0aW9uLgoJKGZpbmRfZGF0YV9yZWZlcmVuY2VzX2luX2xvb3ApOiBIYW5kbGUgQ09NUE9ORU5UX1JFRi4KCShjb21wdXRlX2RhdGFfZGVwZW5kZW5jZXNfZm9yX2xvb3ApOiBJbml0aWFsaXplIGRlcGVuZGVuY2Vfc3RhdHMuCglEb24ndCBjYWxsIGJ1aWxkX2NsYXNzaWNfZGlzdF92ZWN0b3IgYW5kIGJ1aWxkX2NsYXNzaWNfZGlyX3ZlY3Rvci4KCVVwZGF0ZSB0aGUgcGFyYW1ldGVycyBvZiBpbml0aWFsaXplX2RhdGFfZGVwZW5kZW5jZV9yZWxhdGlvbiBhbmQKCWNvbXB1dGVfYWxsX2RlcGVuZGVuY2VzLiAgUHJpbnQgdGhlIHN0YXRpc3RpY3MgZnJvbSBkYXRhZGVwX3N0YXRzLgoJKGFuYWx5emVfYWxsX2RhdGFfZGVwZW5kZW5jZXMpOiBTdGF0aWMuICBOb3QgdXNlZCB1bnRpbCB0aGUgcGFzcyBmb3IKCWNoZWNraW5nIHRoZSBkYXRhIGRlcGVuZGVuY2VzIGlzIGNvbnRyaWJ1dGVkLgoJKiB0cmVlLWRhdGEtcmVmLmggKGRkcl9wLCBERUZfVkVDX1AoZGRyX3ApLAoJREVGX1ZFQ19BTExPQ19QKGRkcl9wLGhlYXApKTogLi4uIGhlcmUuCgkoaW5pdGlhbGl6ZV9kYXRhX2RlcGVuZGVuY2VfcmVsYXRpb24sIGNvbXB1dGVfYWZmaW5lX2RlcGVuZGVuY2UsCglhbmFseXplX2FsbF9kYXRhX2RlcGVuZGVuY2VzLCBjb21wdXRlX3N1YnNjcmlwdF9kaXN0YW5jZSk6IFJlbW92ZWQuCgkocHJpbnRfZGlyZWN0aW9uX3ZlY3Rvcik6IE5ldy4KCSogbGFtYmRhLmggKGdjZCk6IC4uLiBoZXJlLgoJKGxhbWJkYV92ZWN0b3JfZ2NkKTogTW92ZWQgaGVyZSBmcm9tIGdjZF92ZWN0b3IuCgkqIGxhbWJkYS1jb2RlLmMgKGdjZCwgZ2NkX3ZlY3Rvcik6IFJlbW92ZWQuCgkobGFtYmRhX2NvbXB1dGVfdGFyZ2V0X3NwYWNlKTogVXNlIGxhbWJkYV92ZWN0b3JfZ2NkLiAgRml4IGZvcm1hdHRpbmcuCgkqIE1ha2VmaWxlLmluICh0cmVlLXZlY3QtcGF0dGVybnMubyk6IERlcGVuZHMgb24gVFJFRV9EQVRBX1JFRl9ILgoKMjAwNi0wMi0yMCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiBpcGEtdHlwZS1lc2NhcGUuYzogVGlkeSBzb21lIGNvbW1lbnRzIGFuZCB3aGl0ZSBzcGFjZS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYzogTGlrZXdpc2UuCgoyMDA2LTAyLTIwICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0cmVlLW9wdC8yNTg3OQoJKiB0cmVlLXByZXR0eS1wcmludC5jIChkZWJ1Z190cmVlX2NoYWluKTogV2FsayB0aGUgY2hhaW5zLgoJKGR1bXBfZGVjbF9uYW1lKTogRG8gbm90IHdhbGsgdGhlIGRlY2wgdHJlZSBjaGFpbnMuCgkqIHRyZWUtcGFzcy5oIChUREZfQ0hBSU4pOiBSZW1vdmUuCgoyMDA2LTAyLTIwICBSYWZhZWwgwXZpbGEgZGUgRXNw7W5kb2xhICA8cmFmYWVsLmVzcGluZG9sYUBnbWFpbC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQyk6IFJlbW92ZQoJKFBST1RPKTogUmVtb3ZlCgkoLlBIT05ZKTogUmVtb3ZlIEMgYW5kIFBST1RPCgoyMDA2LTAyLTIwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzI2MjM2CgkqIGRvYy9jLXRyZWUudGV4aSAoSU5URUdFUl9UWVBFKTogUmVtb3ZlIHJlZmVyZW5jZSB0byB0aGUgbm93CglkZXByZWNhdGVkIENIQVJfVFlQRSB0cmVlIGNvZGUuCgoyMDA2LTAyLTIwICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY29uZmlndXJlLmFjICh0YXJnZXRfbGlzdCk6IEFkZCBpbnN0YWxsLWluZm8sIGR2aSwgaHRtbC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogYWRhL01ha2UtbGFuZy5pbiwgY3AvTWFrZS1sYW5nLmluLCBmb3J0cmFuL01ha2UtbGFuZy5pbiwKCWphdmEvTWFrZS1sYW5nLmluLCBvYmpjL01ha2UtbGFuZy5pbiwgb2JqY3AvTWFrZS1sYW5nLmluLAoJdHJlZWxhbmcvTWFrZS1sYW5nLmluOiBEbyBub3QgdXNlIGRvdWJsZS1jb2xvbiBydWxlcy4KCjIwMDYtMDItMjAgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS5oIChzdHJ1Y3QgdHJlZV9tZW1vcnlfdGFnKTogQWRkIGlzX3VzZWRfYWxvbmUgbWVtYmVyLgoJKFRNVF9VU0VEX0FMT05FKTogTmV3IG1hY3JvLgoJKiB0cmVlLXBhc3MuaCAoUFJPUF90bXRfdXNhZ2UpOiBOZXcgcHJvcGVydHkuCgkoVE9ET191cGRhdGVfdG10X3VzYWdlKTogTmV3IHRvZG8uCgkqIHRyZWUtc3NhLWFsaWFzLmMgKHVwZGF0aW5nX3VzZWRfYWxvbmUpOiBOZXcgdmFyaWFibGUuCgkocmVjYWxjdWxhdGVfdXNlZF9hbG9uZSk6IE5ldyBmdW5jdGlvbi4KCShjb21wdXRlX21heV9hbGlhc2VzKTogU2V0IHVwZGF0aW5nX3VzZWRfYWxvbmUsIGNhbGwKCXJlY2FsY3VsYXRlX3VzZWRfYWxvbmUuCgkqIHRyZWUtc3JhLmMgKHBhc3Nfc3JhKTogTm90ZSB0aGF0IHRoaXMgcGFzcyBkZXN0cm95cwoJUFJPUF90bXRfdXNhZ2UsIGFuZCBhZGQgVE9ET191cGRhdGVfdG10X3VzYWdlLgoJKiB0cmVlLXNzYS1mb3J3cHJvcC5jIChwYXNzX2Zvcndwcm9wKTogRGl0dG8uCgkqIHRyZWUtZmxvdy5oICh1cGRhdGluZ191c2VkX2Fsb25lKTogUHJvdG90eXBlLgoJKHJlY2FsY3VsYXRlX3VzZWRfYWxvbmUpOiBEaXR0by4KCSogcGFzc2VzLmMgKGV4ZWN1dGVfdG9kbyk6IEFkZCBjb2RlIHRvIHNldCB1cGRhdGluZ191c2VkX2Fsb25lLAoJYW5kIGNhbGwgcmVjYWxjdWxhdGUuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGFkZF92aXJ0dWFsX29wZXJhbmQpOiBPbmx5IGFwcGVuZCBiYXJlIGRlZgoJZm9yIGNsb2JiZXIgaWYgdXNlZCBhbG9uZSwgYW5kIGFkZCBhc3NlcnQgdG8gdmVyaWZ5IHVzZWRfYWxvbmUKCXN0YXR1cy4KCjIwMDYtMDItMjAgIEFuZ2VsIE51bmV6IE1lbmNpYXMgIDxhbnVuZXpAZGUuaWJtLmNvbT4KCgkqIGNvbmZpZy9zMzkwL3MzOTAuYyAobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IEFzc2VydGlvbnMgY2hlY2tpbmcKCWZvciBub24gdGxzIHN5bWJvbHMgYWRkZWQuCgkobGVnaXRpbWl6ZV9hZGRyZXNzKTogRG8gbm90aGluZyBmb3IgUExVUyBleHByZXNzaW9ucyBpZiBvbmUgb2YgdGhlCglhZGRlbmRzIGlzIGEgdGxzIHN5bWJvbCByZWZlcmVuY2UuCgoyMDA2LTAyLTIwICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIGJvb3RzdHJhcC8yNTQ3NgoKCSogTWFrZWZpbGUuaW4gKExERkxBR1MpOiBEZWZpbmUgZnJvbSBhdXRvY29uZiBzdWJzdGl0dXRpb24uCgoJKiBNYWtlZmlsZS5pbiAoQk9PVFNUUkFQUElORyk6IE5ldy4KCShxdWlja3N0cmFwKTogTmV3IGRlZmluaXRpb24gaWYgQk9PVFNUUkFQUElORz15ZXMuCgoJKiBNYWtlZmlsZS5pbiAoQ09ORklHX0xBTkdVQUdFUyk6IFN1YnN0aXR1dGUgYWxsX3NlbGVjdGVkX2xhbmd1YWdlcy4KCSogY29uZmlndXJlLmFjOiBTdWJzdGl0dXRlIGFsbF9zZWxlY3RlZF9sYW5ndWFnZXMgd2l0aCB0aGUgbGFuZ3VhZ2VzCgl0aGF0IHdlcmUgY29uZmlndXJlZC4gIEZvciBhbGwgdGhlIG90aGVyIHZhcmlhYmxlcyBleGNlcHQKCWxhbmdfc3BlY3NfZmlsZXMsIGluY2x1ZGUgYWxsIHRoZSBsYW5ndWFnZXMgaW4gdGhlIHRyZWUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIE1ha2VmaWxlLmluIChzdG1wLWZpeGluYyk6IENvcHkgaW5jbHVkZXMgZnJvbSB0aGUgcHJldi1nY2MgZGlyZWN0b3J5LAoJaWYgdGhlcmUgaXMgb25lLiAgUnVuIHRoZSBjb21tYW5kcyB0byBydW4gZml4aW5jbHVkZXMgaW4gdGhlIHNhbWUKCXN1YnNoZWxsLgoKCSogZG9jL21ha2VmaWxlLnRleGk6IERvY3VtZW50IG5ldyBtYWtlZmlsZSB0YXJnZXRzIGZyb20gdG9wbGV2ZWwgYm9vdHN0cmFwLgoJKiBkb2MvaW5zdGFsbC50ZXhpOiBEb2N1bWVudCBleGFjdCBjb252ZW50aW9ucyBmb3Igc2VhcmNoaW5nIHRhcmdldCB0b29scy4KCURvY3VtZW50IC0td2l0aC1idWlsZC10aW1lLXRvb2xzLiAgRG9jdW1lbnQgdG9wbGV2ZWwgYm9vdHN0cmFwLiAgRG9jdW1lbnQKCXNvbWV0aGluZyBtb3JlIGFib3V0IGJ1aWxkaW5nIGFuIEFkYSBjcm9zcy1jb21waWxlci4gIERvbid0IGxpc3QgR05VIE1ha2UKCXJlcXVpcmVtZW50cyB3aGljaCBhZmZlY3QgYWxsIHBsYXRmb3Jtcy4KCjIwMDYtMDItMTkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMTk1NDMKCSogdmFyYXNtLmMgKGNvbXBhcmVfY29uc3RhbnQpIDxJTlRFR0VSX0NTVD46IEludGVnZXIgY29uc3RhbnRzIGFyZQoJb25seSBlcXVpdmFsZW50IGlmIHRoZSBoYXZlIGJvdGggdGhlIHNhbWUgbW9kZSBhbmQgcHJlY2lzaW9uLgoKMjAwNi0wMi0yMCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBkb2MvdHJlZS1zc2EudGV4aSAoSW50ZXJmYWNlcyk6IERlc2NyaWJlIGxvdyB2cy4gaGlnaCBHSU1QTEUuCgoyMDA2LTAyLTE5ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCSAgICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iLmdjY0BnbWFpbC5jb20+CgoJKiBnY3NlLmMgKHdhbnRfdG9fZ2NzZV9wKTogT24gU1RBQ0tfUkVHUyB0YXJnZXRzLCBsb29rIHRocm91Z2gKCWNvbnN0YW50IHBvb2wgcmVmZXJlbmNlcyB0byBpZGVudGlmeSBzdGFjayBtb2RlIGNvbnN0YW50cy4KCSogcnRsYW5hbC5jIChjb25zdGFudF9wb29sX2NvbnN0YW50X3ApOiBOZXcgcHJlZGljYXRlIHRvIGNoZWNrCgl3aGV0aGVyIG9wZXJhbmQgaXMgYSBmbG9hdGluZyBwb2ludCBjb25zdGFudCBpbiB0aGUgcG9vbC4KCSogcnRsLmggKGNvbnN0YW50X3Bvb2xfY29uc3RhbnRfcCk6IFByb3RvdHlwZSBoZXJlLgoJKiBsb29wLmMgKHNjYW5fbG9vcCk6IEF2b2lkIGhvaXN0aW5nIGNvbnN0YW50cyBmcm9tIHRoZSBjb25zdGFudAoJcG9vbCBvbiBTVEFDS19SRUdTIHRhcmdldHMuCgkobG9hZF9tZW1zKTogTGlrZXdpc2UuCgkqIGxvb3AtaW52YXJpYW50LmMgKGdldF9pbnZfY29zdCk6IE1ha2UgaG9pc3RpbmcgY29uc3RhbnQgcG9vbAoJbG9hZHMgaW50byB4ODcgcmVnaXN0ZXJzIGV4cGVuc2l2ZSBpbiB0ZXJtcyBvZiByZWdpc3RlciBwcmVzc3VyZS4KCjIwMDYtMDItMTkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZ3Roci1wb3NpeC5oOiBPbiBUcnU2NCwgbWFwIF9fZ3Rocl9mb28gYXMgYSB3ZWFrIHJlZmVyZW5jZSB0bwoJX19mb28gYW5kIG5vdCBmb28gd2hlbiBfUFRIUkVBRF9VU0VfTUFOR0xFRF9OQU1FU18gaXMgZGVmaW5lZC4KCjIwMDYtMDItMTkgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCgkqIGNvbmZpZy9yczYwMDAveGNvZmYuaCAoVEFSR0VUX0FTTV9PVVRQVVRfQU5DSE9SKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfeGNvZmZfYXNtX291dHB1dF9hbmNob3IpOiBEZWZpbmUuCgoyMDA2LTAyLTE5ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLWZpcGEtcHRhLgoJKiBjb21tb24ub3B0OiBBZGQgaXBhLXB0YSBvcHRpb24uCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKERPTlRfUFJPUEFHQVRFX1dJVEhfQU5ZVEhJTkcpOiBSZW1vdmVkLgoJKGRvX3NkX2NvbnN0cmFpbnQpOiBFbmFibGUgRE9OVF9QUk9QQUdBVEVfV0lUSF9BTllUSElORyBjb2RlLgoJKGRvX2RzX2NvbnN0cmFpbnQpOiBEaXR0by4KCShnZXRfY29uc3RyYWludF9mb3IpOiBPbmx5IGFkZCB0byByZWZlcmVuY2VkX3ZhcnMgaWYKCXJlZmVyZW5jZWRfdmFycyBleGlzdHMuCgkoaW5zZXJ0X2ludG9fZmllbGRfbGlzdCk6IFJld3JpdGUgdG8gZG8gdGhpcyB1bnNvcnRlZC4KCShpbnNlcnRfaW50b19maWVsZF9saXN0X3NvcnRlZCk6IFJlbmFtZSBvbGQgaW5zZXJ0X2ludG9fZmllbGRfbGlzdAoJdG8gdGhpcy4KCShjcmVhdGVfZnVuY3Rpb25faW5mb19mb3IpOiBVc2UgaW5zZXJ0X2ludG9fZmllbGRfbGlzdF9zb3J0ZWQuCgkoY3JlYXRlX3ZhcmlhYmxlX2luZm9fZm9yKTogUmV3cml0ZSBzbyBpdCB1c2VzIHVuc29ydGVkIHZlcnNpb24sCglzaW5jZSB0aGUgZmllbGQgbGlzdCBpcyBzb3J0ZWQuCgkoaW50cmFfY3JlYXRlX3ZhcmlhYmxlX2luZm9zKTogT25seSBhZGQgdG8gcmVmZXJlbmNlZF92YXJzIGlmCglyZWZlcmVuY2VkX3ZhcnMgZXhpc3RzLgoJKGlwYV9wdGFfZXhlY3V0ZSk6IEluaXQgaGVhcHZhcnMsIGFuZCBkZWxldGUgd2hlbiBkb25lLgoJKiBwYXNzZXMuYyAoaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzKTogQWRkIGNhbGwgdG8gcGFzc19pcGFfcHRhLgoKMjAwNi0wMi0xOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIGRvYy9pbnN0YWxsLnRleGk6IEFkZCBtaXNzaW5nIGBAc2FtcCcuCgoyMDA2LTAyLTE4ICBBbmRyZXcgUGluc2tpIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoQVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5UUllfUCk6CglVc2UgdGhlIGFyZ3VtZW50cy4KCjIwMDYtMDItMTggIE1hcmsgV2llbGFhcmQgIDxtYXJrQGtsb21wLm9yZz4KCgkqIGRvYy9jb250cmliLnRleGkgKENvbnRyaWJ1dG9ycyk6IEFkZCBjbGFzc3BhdGgvbGliZ2NqIGhhY2tlcnMKCXdobyBhZGRlZCBuZXcgNC4xIGZlYXR1cmVzLCBidWcgZml4ZXMgYW5kIGludGVncmF0aW9uIHN1cHBvcnQuCgoyMDA2LTAyLTE4ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJUFIgdGFyZ2V0LzI2MzUwCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChleHRlbmRkZnRmMik6IEZvcmNlIDAuMCB0byB2YWxpZGl6ZWQKCU1FTSBmb3IgQUJJX1Y0IHBpYy4KCjIwMDYtMDItMTggIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3NlbGliLmMgKGNzZWxpYl9pbml0KTogQ2hhbmdlIFJUWF9TSVpFIHRvIFJUWF9DT0RFX1NJWkUuCgkqIGVtaXQtcnRsLmMgKGNvcHlfcnR4X2lmX3NoYXJlZF8xKTogVXNlIHNoYWxsb3dfY29weV9ydHguCgkoY29weV9pbnNuXzEpOiBMaWtld2lzZS4gIERvbid0IGNvcHkgZWFjaCBmaWVsZCBpbmRpdmlkdWFsbHkuCglSZWluZGVudC4KCSogcmVhZC1ydGwuYyAoYXBwbHlfbWFjcm9fdG9fcnR4KTogVXNlIFJUWF9DT0RFX1NJWkUgaW5zdGVhZAoJb2YgUlRYX1NJWkUuCgkqIHJlbG9hZDEuYyAoZWxpbWluYXRlX3JlZ3MpOiBVc2Ugc2hhbGxvd19jb3B5X3J0eC4KCSogcnRsLmMgKHJ0eF9zaXplKTogUmVuYW1lIHZhcmlhYmxlIHRvLi4uCgkocnR4X2NvZGVfc2l6ZSk6IC4uLnRoaXMuCgkocnR4X3NpemUpOiBOZXcgZnVuY3Rpb24uCgkocnR4X2FsbG9jX3N0YXQpOiBVc2UgUlRYX0NPREVfU0laRSBpbnN0ZWFkIG9mIFJUWF9TSVpFLgoJKGNvcHlfcnR4KTogVXNlIHNoYWxsb3dfY29weV9ydHguICBEb24ndCBjb3B5IGVhY2ggZmllbGQgaW5kaXZpZHVhbGx5LgoJUmVpbmRlbnQuCgkoc2hhbGxvd19jb3B5X3J0eF9zdGF0KTogVXNlIHJ0eF9zaXplIGluc3RlYWQgb2YgUlRYX1NJWkUuCgkqIHJ0bC5oIChydHhfY29kZV9zaXplKTogTmV3IHZhcmlhYmxlLgoJKHJ0eF9zaXplKTogQ2hhbmdlIGZyb20gYSB2YXJpYWJsZSB0byBhIGZ1bmN0aW9uLgoJKFJUWF9TSVpFKTogUmVuYW1lIHRvLi4uCgkoUlRYX0NPREVfU0laRSk6IC4uLnRoaXMuCgoJUFIgdGFyZ2V0Lzk3MDMKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzE3MTA2CgkqIGRvYy90bS50ZXhpIChUQVJHRVRfVVNFX0JMT0NLU19GT1JfQ09OU1RBTlRfUCk6IERvY3VtZW50LgoJKEFuY2hvcmVkIEFkZHJlc3Nlcyk6IE5ldyBzZWN0aW9uLgoJKiBkb2MvaW52b2tlLnRleGkgKC1mc2VjdGlvbi1hbmNob3JzKTogRG9jdW1lbnQuCgkqIGRvYy9ydGwudGV4aSAoU1lNQk9MX1JFRl9JTl9CTE9DS19QLCBTWU1CT0xfRkxBR19JTl9CTE9DSyk6IExpa2V3aXNlLgoJKFNZTUJPTF9SRUZfQU5DSE9SX1AsIFNZTUJPTF9GTEFHX0FOQ0hPUik6IExpa2V3aXNlLgoJKFNZTUJPTF9SRUZfQkxPQ0ssIFNZTUJPTF9SRUZfQkxPQ0tfT0ZGU0VUKTogTGlrZXdpc2UuCgkqIGhvb2tzLmMgKGhvb2tfYm9vbF9tb2RlX3J0eF9mYWxzZSk6IE5ldyBmdW5jdGlvbi4KCSogaG9va3MuaCAoaG9va19ib29sX21vZGVfcnR4X2ZhbHNlKTogRGVjbGFyZS4KCSogZ2VuZ3R5cGUuYyAoY3JlYXRlX29wdGlvbmFsX2ZpZWxkKTogTmV3IGZ1bmN0aW9uLgoJKGFkanVzdF9maWVsZF9ydHhfZGVmKTogQWRkIHRoZSAiYmxvY2tfc3ltIiBmaWVsZCBmb3IgU1lNQk9MX1JFRnMgd2hlbgoJU1lNQk9MX1JFRl9JTl9CTE9DS19QIGlzIHRydWUuCgkqIHRhcmdldC5oIChvdXRwdXRfYW5jaG9yLCB1c2VfYmxvY2tzX2Zvcl9jb25zdGFudF9wKTogTmV3IGhvb2tzLgoJKG1pbl9hbmNob3Jfb2Zmc2V0LCBtYXhfYW5jaG9yX29mZnNldCk6IExpa2V3aXNlLgoJKHVzZV9hbmNob3JzX2Zvcl9zeW1ib2xfcCk6IE5ldyBob29rLgoJKiB0b3BsZXYuYyAoY29tcGlsZV9maWxlKTogQ2FsbCBvdXRwdXRfb2JqZWN0X2Jsb2Nrcy4KCSh0YXJnZXRfc3VwcG9ydHNfc2VjdGlvbl9hbmNob3JzX3ApOiBOZXcgZnVuY3Rpb24uCgkocHJvY2Vzc19vcHRpb25zKTogQ2hlY2sgdGhhdCAtZnNlY3Rpb24tYW5jaG9ycyBpcyBvbmx5IHVzZWQgb24KCXRhcmdldHMgdGhhdCBzdXBwb3J0IGl0IGFuZCB3aGVuIC1mdW5pdC1hdC1hLXRpbWUgaXMgaW4gZWZmZWN0LgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChwcmVwYXJlX2RlY2xfcnRsKTogT25seSBjcmVhdGUgREVDTF9SVEwKCWlmIHRoZSBkZWNsIGRvZXNuJ3QgaGF2ZSBvbmUuCgkqIGR3YXJmMm91dC5jOiBSZW1vdmUgaW5zdGFudGlhdGlvbnMgb2YgVkVDKHJ0eCxnYykuCgkqIGV4cHIuYyAoZW1pdF9tb3ZlX211bHRpX3dvcmQsIGVtaXRfbW92ZV9pbnNuKTogUGFzcyB0aGUgcmVzdWx0CglvZiBmb3JjZV9jb25zdF9tZW0gdGhyb3VnaCB1c2VfYW5jaG9yZWRfYWRkcmVzcy4KCShleHBhbmRfZXhwcl9jb25zdGFudCk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfZXhwcl9hZGRyX2V4cHJfMSk6IENhbGwgaXQuICBVc2UgdGhlIHNhbWUgbW9kaWZpZXIgd2hlbgoJY2FsbGluZyBleHBhbmRfZXhwciBmb3IgSU5ESVJFQ1RfUkVGLgoJKGV4cGFuZF9leHByX3JlYWxfMSk6IFBhc3MgREVDTF9SVEwgdGhyb3VnaCB1c2VfYW5jaG9yZWRfYWRkcmVzcwoJZm9yIGFsbCBtb2RpZmllcnMgZXhjZXB0IEVYUEFORF9JTklUSUFMSVpFUi4gIFVzZSBleHBhbmRfZXhwcl9jb25zdGFudC4KCSogZXhwci5oICh1c2VfYW5jaG9yZWRfYWRkcmVzcyk6IERlY2xhcmUuCgkqIGxvb3AtdW5yb2xsLmM6IERvbid0IGRlY2xhcmUgcnR4IHZlY3RvcnMgaGVyZS4KCSogZXhwbG93LmM6IEluY2x1ZGUgb3V0cHV0LmguCgkodmFsaWRpemVfbWVtKTogQ2FsbCB1c2VfYW5jaG9yZWRfYWRkcmVzcy4KCSh1c2VfYW5jaG9yZWRfYWRkcmVzcyk6IE5ldyBmdW5jdGlvbi4KCSogY29tbW9uLm9wdCAoLWZzZWN0aW9uLWFuY2hvcnMpOiBOZXcgc3dpdGNoLgoJKiB2YXJhc20uYyAob2JqZWN0X2Jsb2NrX2h0YWIsIGFuY2hvcl9sYWJlbG5vKTogTmV3IHZhcmlhYmxlcy4KCShoYXNoX3NlY3Rpb24sIG9iamVjdF9ibG9ja19lbnRyeV9lcSwgb2JqZWN0X2Jsb2NrX2VudHJ5X2hhc2gpCgkodXNlX29iamVjdF9ibG9ja3NfcCwgZ2V0X2Jsb2NrX2Zvcl9zZWN0aW9uLCBjcmVhdGVfYmxvY2tfc3ltYm9sKQoJKHVzZV9ibG9ja3NfZm9yX2RlY2xfcCwgY2hhbmdlX3N5bWJvbF9zZWN0aW9uKTogTmV3IGZ1bmN0aW9ucy4KCShnZXRfdmFyaWFibGVfc2VjdGlvbik6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gYXNzZW1ibGVfdmFyaWFibGUuCgkobWFrZV9kZWNsX3J0bCk6IENyZWF0ZSBhIGJsb2NrIHN5bWJvbCBpZiB1c2Vfb2JqZWN0X2Jsb2Nrc19wIGFuZAoJdXNlX2Jsb2Nrc19mb3JfZGVjbF9wIHNheSBzby4gIFVzZSBjaGFuZ2Vfc3ltYm9sX3NlY3Rpb24gaWYgdGhlCglzeW1ib2wgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLgoJKGFzc2VtYmxlX3ZhcmlhYmxlX2NvbnRlbnRzKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbS4uLgoJKGFzc2VtYmxlX3ZhcmlhYmxlKTogLi4uaGVyZS4gIERvbid0IG91dHB1dCBhbnkgY29kZSBmb3IKCWJsb2NrIHN5bWJvbHM7IGp1c3QgcGFzcyB0aGVtIHRvIHBsYWNlX2Jsb2NrX3N5bWJvbC4KCVVzZSBnZXRfdmFyaWFibGVfc2VjdGlvbiBhbmQgYXNzZW1ibGVfdmFyaWFibGVfY29udGVudHMuCgkoZ2V0X2NvbnN0YW50X2FsaWdubWVudCwgZ2V0X2NvbnN0YW50X3NlY3Rpb24sIGdldF9jb25zdGFudF9zaXplKTogTmV3CglmdW5jdGlvbnMsIHNwbGl0IGZyb20gb3V0cHV0X2NvbnN0YW50X2RlZl9jb250ZW50cy4KCShidWlsZF9jb25zdGFudF9kZXNjKTogQ3JlYXRlIGEgYmxvY2sgc3ltYm9sIGlmIHVzZV9vYmplY3RfYmxvY2tzX3AKCXNheXMgc28uICBPciBpbnRvIFNZTUJPTF9SRUZfRkxBR1MuCgkoYXNzZW1ibGVfY29uc3RhbnRfY29udGVudHMpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IGZyb20uLi4KCShvdXRwdXRfY29uc3RhbnRfZGVmX2NvbnRlbnRzKTogLi4uaGVyZS4gIERvbid0IG91dHB1dCBhbnkgY29kZQoJZm9yIGJsb2NrIHN5bWJvbHM7IGp1c3QgcGFzcyB0aGVtIHRvIHBsYWNlX3NlY3Rpb25fc3ltYm9sLgoJVXNlIGdldF9jb25zdGFudF9zZWN0aW9uIGFuZCBnZXRfY29uc3RhbnRfYWxpZ25tZW50LgoJKGZvcmNlX2NvbnN0X21lbSk6IENyZWF0ZSBhIGJsb2NrIHN5bWJvbCBpZiB1c2Vfb2JqZWN0X2Jsb2Nrc19wIGFuZAoJdXNlX2Jsb2Nrc19mb3JfY29uc3RhbnRfcCBzYXkgc28uICBPciBpbnRvIFNZTUJPTF9SRUZfRkxBR1MuCgkob3V0cHV0X2NvbnN0YW50X3Bvb2xfMSk6IEFkZCBhbiBleHBsaWNpdCBhbGlnbm1lbnQgYXJndW1lbnQuCglEb24ndCBzd2l0Y2ggc2VjdGlvbnMgaGVyZS4KCShvdXRwdXRfY29uc3RhbnRfcG9vbCk6IEFkanVzdCBjYWxsIHRvIG91dHB1dF9jb25zdGFudF9wb29sXzEuCglTd2l0Y2ggc2VjdGlvbnMgaGVyZSBpbnN0ZWFkLiAgRG9uJ3Qgb3V0cHV0IGFueXRoaW5nIGZvciBibG9jayBzeW1ib2xzOwoJanVzdCBwYXNzIHRoZW0gdG8gcGxhY2VfYmxvY2tfc3ltYm9sLgoJKGluaXRfdmFyYXNtX29uY2UpOiBJbml0aWFsaXplIG9iamVjdF9ibG9ja19odGFiLgoJKGRlZmF1bHRfZW5jb2RlX3NlY3Rpb25faW5mbyk6IEtlZXAgdGhlIG9sZCBTWU1CT0xfRkxBR19JTl9CTE9DSy4KCShkZWZhdWx0X2FzbV9vdXRwdXRfYW5jaG9yLCBkZWZhdWx0X3VzZV9hZW5jaG9yc19mb3Jfc3ltYm9sX3ApCgkocGxhY2VfYmxvY2tfc3ltYm9sLCBnZXRfc2VjdGlvbl9hbmNob3IsIG91dHB1dF9vYmplY3RfYmxvY2spCgkob3V0cHV0X29iamVjdF9ibG9ja19odGFiLCBvdXRwdXRfb2JqZWN0X2Jsb2Nrcyk6IE5ldyBmdW5jdGlvbnMuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0FTTV9PVVRQVVRfQU5DSE9SKTogTmV3IG1hY3JvLgoJKFRBUkdFVF9BU01fT1VUKTogSW5jbHVkZSBpdC4KCShUQVJHRVRfVVNFX0JMT0NLU19GT1JfQ09OU1RBTlRfUCk6IE5ldyBtYWNyby4KCShUQVJHRVRfTUlOX0FOQ0hPUl9PRkZTRVQsIFRBUkdFVF9NQVhfQU5DSE9SX09GRlNFVCk6IE5ldyBtYWNyb3MuCgkoVEFSR0VUX1VTRV9BTkNIT1JTX0ZPUl9TWU1CT0xfUCk6IE5ldyBtYWNyby4KCShUQVJHRVRfSU5JVElBTElaRVIpOiBJbmNsdWRlIHRoZW0uCgkqIHJ0bC5jIChydGxfY2hlY2tfZmFpbGVkX2Jsb2NrX3N5bWJvbCk6IE5ldyBmdW5jdGlvbi4KCSogcnRsLmg6IEluY2x1ZGUgdmVjLmguICBEZWNsYXJlIGhlYXAgYW5kIGdjIHJ0eCB2ZWN0b3JzLgoJKGJsb2NrX3N5bWJvbCwgb2JqZWN0X2Jsb2NrKTogTmV3IHN0cnVjdHVyZXMuCgkocnR4X2RlZik6IEFkZCBhIGJsb2NrX3N5bWJvbCBmaWVsZCB0byB0aGUgdW5pb24uCgkoQkxPQ0tfU1lNQk9MX0NIRUNLKTogTmV3IG1hY3JvLgoJKHJ0bF9jaGVja19mYWlsZWRfYmxvY2tfc3ltYm9sKTogRGVjbGFyZS4KCShTWU1CT0xfRkxBR19JTl9CTE9DSywgU1lNQk9MX0ZMQUdfQU5DSE9SKTogTmV3IFNZTUJPTF9SRUYgZmxhZ3MuCgkoU1lNQk9MX1JFRl9JTl9CTE9DS19QLCBTWU1CT0xfUkVGX0FOQ0hPUl9QKTogTmV3IHByZWRpY2F0ZXMuCgkoU1lNQk9MX0ZMQUdfTUFDSF9ERVBfU0hJRlQpOiBCdW1wIGJ5IDIuCgkoU1lNQk9MX1JFRl9CTE9DSywgU1lNQk9MX1JFRl9CTE9DS19PRkZTRVQpOiBOZXcgYWNjZXNzb3JzLgoJKiBvdXRwdXQuaCAob3V0cHV0X3NlY3Rpb25fc3ltYm9scyk6IERlY2xhcmUuCgkob2JqZWN0X2Jsb2NrKTogTmFtZSBzdHJ1Y3R1cmUuCgkocGxhY2Vfc2VjdGlvbl9zeW1ib2wsIGdldF9zZWN0aW9uX2FuY2hvciwgZGVmYXVsdF9hc21fb3V0cHV0X2FuY2hvcikKCShkZWZhdWx0X3VzZV9hbmNob3JzX2Zvcl9zeW1ib2xfcCk6IERlY2xhcmUuCgkqIE1ha2VmaWxlLmluIChSVExfQkFTRV9IKTogQWRkIHZlYy5oLgoJKGV4cGxvdy5vKTogRGVwZW5kIG9uIG91dHB1dC5oLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChUQVJHRVRfTUlOX0FOQ0hPUl9PRkZTRVQpOiBPdmVycmlkZSBkZWZhdWx0LgoJKFRBUkdFVF9NQVhfQU5DSE9SX09GRlNFVCk6IExpa2V3aXNlLgoJKFRBUkdFVF9VU0VfQkxPQ0tTX0ZPUl9DT05TVEFOVF9QKTogTGlrZXdpc2UuCgkocnM2MDAwX3VzZV9ibG9ja3NfZm9yX2NvbnN0YW50X3ApOiBOZXcgZnVuY3Rpb24uCgoyMDA2LTAyLTE4ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogZG9jL2luc3RhbGwudGV4aSAoaHBwYSotaHAtaHB1eCopOiBVcGRhdGUgZm9yIDQuMS4wLgoKMjAwNi0wMi0xOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdHJlZS1vcHQvMjU2ODAKCSogdHJlZS1zc2EtY2NwLmMgKGNjcF9mb2xkKTogSGFuZGxlIHN0b3JlIENDUCBvZiBSRUFMUEFSVF9FWFBSIGFuZAoJSU1BR1BBUlRfRVhQUi4KCjIwMDYtMDItMTggIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1mbG93LmggKHN0cnVjdCB2YXJfYW5uX2QpOiBSZW5hbWUgZmllbGQgaXNfYWxpYXNfdGFnIHRvCglpc19hbGlhc2VkLgoJVXBkYXRlIGFsbCB1c2Vycy4KCjIwMDYtMDItMTggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjYzMzQKCSogc3RtdC5jIChkZWNsX292ZXJsYXBzX2hhcmRfcmVnX3NldF9wKTogVXNlIERFQ0xfSEFSRF9SRUdJU1RFUgoJaW5zdGVhZCBvZiBERUNMX1JFR0lTVEVSLgoKMjAwNi0wMi0xOCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMTM0MDgKCSogcGEuaCAoV0lERVNUX0hBUkRXQVJFX0ZQX1NJWkUpOiBEZWZpbmUuCgoyMDA2LTAyLTE4ICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0YXJnZXQvMjQ4MzcKCSogY29uZmlnLmdjYzogRGVmaW5lIFVDTElCQ19ERUZBVUxUIHRvIDAgb3IgMS4KCSogb3B0aC1nZW4uYXdrOiBIYW5kbGUgVmFyIGFuZCBJbnZlcnNlTWFzayB0b2dldGhlci4KCSogY29uZmlnL2xpbnV4Lm9wdCAobXVjbGliYywgbWdsaWJjKTogVXNlIFZhcihsaW51eF91Y2xpYmMpLgoJKiBjb25maWcvbGludXguaDogVXNlICNpZiBub3QgI2lmZGVmIGZvciB0ZXN0aW5nIFVDTElCQ19ERUZBVUxULgoJKFRBUkdFVF9DOTlfRlVOQ1RJT05TKTogVGVzdCBPUFRJT05fR0xJQkMgbm90IFRBUkdFVF9HTElCQy4KCShDSE9PU0VfRFlOQU1JQ19MSU5LRVIpOiBHaXZlIGFuIGVycm9yIGZvciAtbWdsaWJjIGFuZCAtbXVjbGliYwoJdXNlZCB0b2dldGhlci4KCShVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQsCglMSU5VWF9EWU5BTUlDX0xJTktFUjMyLCBMSU5VWF9EWU5BTUlDX0xJTktFUjY0KTogRGVmaW5lLgoJKiBjb25maWcvYWxwaGEvbGludXgtZWxmLmggKEdMSUJDX0RZTkFNSUNfTElOS0VSLAoJVUNMSUJDX0RZTkFNSUNfTElOS0VSLCBDSE9PU0VfRFlOQU1JQ19MSU5LRVIsCglMSU5VWF9EWU5BTUlDX0xJTktFUik6IERlZmluZS4KCShFTEZfRFlOQU1JQ19MSU5LRVIpOiBEZWZpbmUgdG8gTElOVVhfRFlOQU1JQ19MSU5LRVIuCgkqIGNvbmZpZy9hbHBoYS9saW51eC5oIChUQVJHRVRfQzk5X0ZVTkNUSU9OUyk6IERlZmluZSB0bwoJVEFSR0VUX0dMSUJDLgoJKiBjb25maWcvY3Jpcy9saW51eC5oIChHTElCQ19EWU5BTUlDX0xJTktFUik6IERlZmluZS4KCShDUklTX0xJTktfU1VCVEFSR0VUX1NQRUMpOiBQYXNzIGEgLWR5bmFtaWMtbGlua2VyIG9wdGlvbi4KCSogY29uZmlnL2Zydi9saW51eC5oIChHTElCQ19EWU5BTUlDX0xJTktFUik6IERlZmluZS4KCShMSU5LX1NQRUMpOiBVc2UgTElOVVhfRFlOQU1JQ19MSU5LRVIuCgkoVEFSR0VUX0M5OV9GVU5DVElPTlMpOiBEb24ndCBkZWZpbmUuCgkqIGNvbmZpZy9pMzg2L2xpbnV4LmggKERZTkFNSUNfTElOS0VSKTogUmVuYW1lIHRvCglHTElCQ19EWU5BTUlDX0xJTktFUi4KCShTVUJUQVJHRVRfRVhUUkFfU1BFQ1MpOiBVc2UgTElOVVhfRFlOQU1JQ19MSU5LRVIuCgkqIGNvbmZpZy9pMzg2L2xpbnV4NjQuaCAoR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiwKCUdMSUJDX0RZTkFNSUNfTElOS0VSNjQpOiBEZWZpbmUuCgkoTElOS19TUEVDKTogVXNlIExJTlVYX0RZTkFNSUNfTElOS0VSMzIgYW5kCglMSU5VWF9EWU5BTUlDX0xJTktFUjY0LgoJKiBjb25maWcvaWE2NC9saW51eC5oIChHTElCQ19EWU5BTUlDX0xJTktFUik6IERlZmluZS4KCShMSU5LX1NQRUMpOiBVc2UgTElOVVhfRFlOQU1JQ19MSU5LRVIuCgkqIGNvbmZpZy9tMzJyL2xpbnV4LmggKEdMSUJDX0RZTkFNSUNfTElOS0UpOiBEZWZpbmUuCgkoTElOS19TUEVDKTogVXNlIExJTlVYX0RZTkFNSUNfTElOS0VSLgoJKiBjb25maWcvbTY4ay9saW51eC5oIChHTElCQ19EWU5BTUlDX0xJTktFUik6IERlZmluZS4KCShMSU5LX1NQRUMpOiBVc2UgTElOVVhfRFlOQU1JQ19MSU5LRVIuCgkqIGNvbmZpZy9taXBzL2xpbnV4NjQuaCAoR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiwKCUdMSUJDX0RZTkFNSUNfTElOS0VSNjQsIEdMSUJDX0RZTkFNSUNfTElOS0VSTjMyLAoJVUNMSUJDX0RZTkFNSUNfTElOS0VSTjMyLCBMSU5VWF9EWU5BTUlDX0xJTktFUk4zMik6IERlZmluZS4KCShMSU5LX1NQRUMpOiBVc2UgTElOVVhfRFlOQU1JQ19MSU5LRVJOMzIsIExJTlVYX0RZTkFNSUNfTElOS0VSNjQKCWFuZCBMSU5VWF9EWU5BTUlDX0xJTktFUjMyLgoJKiBjb25maWcvbW4xMDMwMC9saW51eC5oIChHTElCQ19EWU5BTUlDX0xJTktFUik6IERlZmluZS4KCShMSU5LX1NQRUMpOiBVc2UgTElOVVhfRFlOQU1JQ19MSU5LRVIuCgkqIGNvbmZpZy9wYS9wYS1saW51eC5oIChHTElCQ19EWU5BTUlDX0xJTktFUik6IERlZmluZS4KCShMSU5LX1NQRUMpOiBVc2UgTElOVVhfRFlOQU1JQ19MSU5LRVIuCgkqIGNvbmZpZy9yczYwMDAvbGludXguaCAoVEFSR0VUX0M5OV9GVU5DVElPTlMpOiBEZWZpbmUgdG8KCVRBUkdFVF9HTElCQy4KCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKFRBUkdFVF9DOTlfRlVOQ1RJT05TKTogTGlrZXdpc2UuCgkoR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiwgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCwKCVVDTElCQ19EWU5BTUlDX0xJTktFUjMyLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCwKCUNIT09TRV9EWU5BTUlDX0xJTktFUiwgQ0hPT1NFX0RZTkFNSUNfTElOS0VSLAoJTElOVVhfRFlOQU1JQ19MSU5LRVIzMiwgTElOVVhfRFlOQU1JQ19MSU5LRVI2NCk6IERlZmluZS4KCShMSU5LX09TX0xJTlVYX1NQRUMzMik6IFVzZSBMSU5VWF9EWU5BTUlDX0xJTktFUjMyLgoJKExJTktfT1NfTElOVVhfU1BFQzY0KTogVXNlIExJTlVYX0RZTkFNSUNfTElOS0VSNjQuCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoR0xJQkNfRFlOQU1JQ19MSU5LRVIsCglVQ0xJQkNfRFlOQU1JQ19MSU5LRVIsIENIT09TRV9EWU5BTUlDX0xJTktFUiwKCUxJTlVYX0RZTkFNSUNfTElOS0VSKTogRGVmaW5lLgoJKExJTktfT1NfTElOVVhfU1BFQyk6IFVzZSBMSU5VWF9EWU5BTUlDX0xJTktFLgoJKiBjb25maWcvczM5MC9saW51eC5oIChHTElCQ19EWU5BTUlDX0xJTktFUjMyLAoJR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCk6IERlZmluZS4KCShMSU5LX1NQRUMpOiBVc2UgTElOVVhfRFlOQU1JQ19MSU5LRVIzMiBhbmQKCUxJTlVYX0RZTkFNSUNfTElOS0VSNjQuCgkqIGNvbmZpZy9zaC9saW51eC5oIChHTElCQ19EWU5BTUlDX0xJTktFUik6IERlZmluZS4KCShTVUJUQVJHRVRfTElOS19TUEVDKTogVXNlIExJTlVYX0RZTkFNSUNfTElOS0VSLgoJKiBjb25maWcvc3BhcmMvbGludXguaCAoR0xJQkNfRFlOQU1JQ19MSU5LRVIsCglVQ0xJQkNfRFlOQU1JQ19MSU5LRVIsIENIT09TRV9EWU5BTUlDX0xJTktFUiwKCUxJTlVYX0RZTkFNSUNfTElOS0VSKTogRGVmaW5lLgoJKExJTktfU1BFQyk6IFVzZSBMSU5VWF9EWU5BTUlDX0xJTktFUi4KCShUQVJHRVRfQzk5X0ZVTkNUSU9OUyk6IERlZmluZSB0byBUQVJHRVRfR0xJQkMuCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0LmggKEdMSUJDX0RZTkFNSUNfTElOS0VSMzIsCglHTElCQ19EWU5BTUlDX0xJTktFUjY0LCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiwKCVVDTElCQ19EWU5BTUlDX0xJTktFUjY0LCBDSE9PU0VfRFlOQU1JQ19MSU5LRVIsCglMSU5VWF9EWU5BTUlDX0xJTktFUjMyLCBMSU5VWF9EWU5BTUlDX0xJTktFUjY0KTogRGVmaW5lLgoJKExJTktfQVJDSDMyX1NQRUMpOiBVc2UgTElOVVhfRFlOQU1JQ19MSU5LRVIzMi4KCShMSU5LX0FSQ0g2NF9TUEVDLCBMSU5LX1NQRUMpOiBVc2UgTElOVVhfRFlOQU1JQ19MSU5LRVI2NC4KCShUQVJHRVRfQzk5X0ZVTkNUSU9OUyk6IERlZmluZSB0byBUQVJHRVRfR0xJQkMuCgkqIGNvbmZpZy94dGVuc2EvbGludXguaCAoR0xJQkNfRFlOQU1JQ19MSU5LRVIpOiBEZWZpbmUuCgkoTElOS19TUEVDKTogVXNlIExJTlVYX0RZTkFNSUNfTElOS0VSLgoJKiBkb2MvaW52b2tlLnRleGkgKC1tdWNsaWJjKTogUmVtb3ZlIGNhdmVhdCBhYm91dCBzdXBwb3J0ZWQKCXRhcmdldHMuCgoyMDA2LTAyLTE3ICBHcmlnb3J5IFphZ29yb2RuZXYgPGdyaWdvcnlfemFnb3JvZG5ldkBsaW51eC5pbnRlbC5jb20+CgoJKiBkb2MvY3BwLnRleGkgKF9fVElNRVNUQU1QX18pOiBEb2N1bWVudC4KCjIwMDYtMDItMTcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMjU2MDAKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSk6IEZvbGQgKFggPj4gQykgIT0gMCBpbnRvIFggPCAwIHdoZW4KCUMgaXMgb25lIGxlc3MgdGhhbiB0aGUgd2lkdGggb2YgWCAoYW5kIHJlbGF0ZWQgdHJhbnNmb3JtYXRpb25zKS4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X3VuYXJ5X29wZXJhdGlvbl8xKTogVHJhbnNmb3JtCgkobmVnIChsdCB4IDApKSBpbnRvIGVpdGhlciAoYXNoaWZ0cnQgWCBDKSBvciAobHNoaWZ0cnQgWCBDKQoJZGVwZW5kaW5nIG9uIFNUT1JFX0ZMQUdfVkFMVUUsIHdlcmUgQyBpcyBvbmUgbGVzcyB0aGVuIHRoZQoJd2lkdGggb2YgWC4KCjIwMDYtMDItMTcgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8yNjM0MQoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfdmlydHVhbF9vcGVyYW5kKTogUmVtb3ZlIGFzc2VydAoJYWJvdXQgTkFNRV9NRU1PUllfVEFHJ3MuCgoyMDA2LTAyLTE3ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIHRhcmdldC8yNjI1NQoJKiBwYS5tZDogQ3JlYXRlIHNlcGFyYXRlIEhJIGFuZCBRSSBtb3ZlIHBhdHRlcm5zIGZvciAzMi1iaXQgYW5kIDY0LWJpdAoJd2l0aCBoYXJkd2FyZSBmbG9hdCBzdXBwb3J0LCBhbmQgc29mdHdhcmUgZmxvYXQgc3VwcG9ydC4gIEFkZCBmY3B5CglhbHRlcm5hdGl2ZSB0byBoYXJkd2FyZSBwYXR0ZXJucy4gIEFkZCBhbHRlcm5hdGl2ZXMgdG8gY29weSBiZXR3ZWVuCglnZW5lcmFsIGFuZCBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMgdG8gdGhlIDMyLWJpdCBwYXR0ZXJuLgoJKiBwYS5jIChwYV9zZWNvbmRhcnlfcmVsb2FkKTogRG9uJ3QgYWJvcnQgaWYgcmVsb2FkIHRyaWVzIHRvIGZpbmQgYQoJc2Vjb25kYXJ5IHJlbG9hZCB0byBsb2FkIGEgUUkgb3IgSEkgbW9kZSBjb25zdGFudCBpbnRvIGEgZmxvYXRpbmcKCXBvaW50IHJlZ2lzdGVyLgoJKiBwYTMyLXJlZ3MuaCAoVkFMSURfRlBfTU9ERV9QKTogQWxsb3cgUUltb2RlIGFuZCBISW1vZGUuCgkqIHBhNjQtcmVncy5oIChWQUxJRF9GUF9NT0RFX1ApOiBMaWtld2lzZS4KCjIwMDYtMDItMTcgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRhcmdldC8yNjI3MgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi5tZCAobG9hZF9tYWNob19waWNiYXNlX3NpKTogQWRkCglwYyB0byB0aGUgcGF0dGVybi4KCShsb2FkX21hY2hvX3BpY2Jhc2VfZGkpOiBMaWtld2lzZS4KCjIwMDYtMDItMTYgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLXZycC5jIChzZXRfdmFsdWVfcmFuZ2VfdG9fbm9ubmVnYXRpdmUpOiBOZXcgZnVuY3Rpb24uCgkodnJwX2V4cHJfY29tcHV0ZXNfbm9ubmVnYXRpdmUsIHNzYV9uYW1lX25vbm5lZ2F0aXZlX3ApOiBMaWtld2lzZS4KCShzc2FfbmFtZV9ub256ZXJvX3ApOiBMaWtld2lzZS4KCShnZXRfdmFsdWVfcmFuZ2UpOiBSZXR1cm4gTlVMTCBpZiBWUlAgaXMgbm90IHJ1bm5pbmcuCgkoZXh0cmFjdF9yYW5nZV9mcm9tX2V4cHIpOiBGYWxsYmFjayB0byB0cmVlX2V4cHJfWFhYX3AgaWYKCVZSUCByb3V0aW5lcyBkbyBub3QgZGlzY292ZXIgYSByYW5nZS4KCSh2cnBfZmluYWxpemUpOiBDbGVhciBWUl9WQUxVRSB0byBpbmRpY2F0ZSBWUlAgaXMgbm90IHJ1bm5pbmcuCgkqIHRyZWUuaCAoc3NhX25hbWVfbm9uemVyb19wLCBzc2FfbmFtZV9ub25uZWdhdGl2ZV9wKTogUHJvdG90eXBlLgoJKiBmb2xkLWNvbnN0LmMgKHRyZWVfZXhwcl9ub256ZXJvX3ApOiBGb3IgU1NBX05BTUVzLCBxdWVyeSBWUlAuCgkodHJlZV9leHByX25vbm5lZ2F0aXZlX3ApOiBTaW1pbGFybHkuCgkqIHRyZWUtc3NhLWRvbS5jIChub256ZXJvX3ZhcnMsIG5vbnplcm9fdmFyc19zdGFjayk6IFJlbW92ZS4KCShyZXN0b3JlX25vbnplcm9fdmFyc190b19vcmlnaW5hbF92YWx1ZSk6IFJlbW92ZS4KCSh1bnNhZmVfYXNzb2NpYXRpdmVfZnBfYmlub3ApOiBSZW1vdmUuCgkodHJlZV9zc2FfZG9taW5hdG9yX29wdGltaXplKTogUmVtb3ZlIGluaXRpYWxpemF0aW9uIGFuZAoJZmluYWxpemF0aW9uIG9mIG5vbnplcm9fdmFycyBhbmQgbm9uemVyb192YXJzX3N0YWNrLgoJKGRvbV9vcHRfaW5pdGlhbGl6ZV9ibG9jayk6IE5vIGxvbmdlciBwdXNoIG1hcmtlciBvbgoJbm9uemVyb192YXJzX3N0YWNrLgoJKGRvbV9vcHRfZmluYWxpemVfYmxvY2spOiBObyBsb25nZXIgY2FsbAoJcmVzdG9yZV9ub256ZXJvX3ZhcnNfdG9fb3JpZ2luYWxfdmFsdWUuCgkocmVjb3JkX2VxdWl2YWxlbmNlc19mcm9tX3BoaXMpOiBObyBsb25nZXIgbG9vayBmb3IKCW5vbnplcm8gUEhJIGFyZ3VtZW50cy4KCShjcHJvcF9pbnRvX3N1Y2Nlc3Nvcl9waGlzKTogTm8gbG9uZ2VyIHByb3BhZ2F0ZSBub256ZXJvCglwcm9wZXJ0eSBpbnRvIFBISSBhcmd1bWVudHMuICBMb3NlIHVudXNlZCBhcmd1bWVudC4gIENhbGxlcgoJdXBkYXRlZC4KCShyZWNvcmRfZXF1aXZhbGVuY2VzX2Zyb21fc3RtdCk6IE5vIGxvbmdlciByZWNvcmQgbm9uemVybwoJdmFsdWVzIGZvciBTU0FfTkFNRXMuCgkobG9va3VwX2F2YWlsX2V4cHIpOiBObyBsb25nZXIgdXNlIG5vbnplcm9fdmFycy4KCgkqIHN0b3ItbGF5b3V0LmMgKHNldF9zaXpldHlwZSk6IFNldCBUWVBFX01BWF9WQUxVRSBwcm9wZXJseQoJZm9yIHNpemV0eXBlIHdoZW4gc2l6ZXR5cGUgaXMgdW5zaWduZWQuCgoyMDA2LTAyLTE2ICBEZW5pcyBOYWdvcm55IDxkZW5pc19uYWdvcm55QGxpbnV4LmludGVsLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI1NjAzCgkqIHJlbG9hZC5jIChyZWdfaW5jX2ZvdW5kX2FuZF92YWxpZF9wKTogTmV3LiBDaGVjayBSRUdfSU5DIG5vdGUuCgkocmVnbm9fY2xvYmJlcmVkX3ApOiBVc2UgaXQuIFJldXNpbmcgU0VUUyBhcmd1bWVudCBmb3IgUkVHX0lOQyBjYXNlLgoJKiByZWxvYWQxLmMgKGNob29zZV9yZWxvYWRfcmVncyk6IEFkZGVkIGNhbGwgb2YgcmVnbm9fY2xvYmJlcmVkX3AKCXdpdGggbmV3IG1lYW5pbmcgb2YgU0VUUy4KCjIwMDYtMDItMTYgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIHRhcmdldC8yMDM1MwoJUFIgdGFyZ2V0LzI0NTc4CglQUiB0YXJnZXQvMjQ4MzcKCSogY29uZmlnL2xpbnV4Lm9wdDogTmV3IGZpbGUuCgkqIGNvbmZpZy9saW51eC5oIChDSE9PU0VfRFlOQU1JQ19MSU5LRVIsIFVDTElCQ19EWU5BTUlDX0xJTktFUiwKCUxJTlVYX0RZTkFNSUNfTElOS0VSKTogRGVmaW5lLgoJKFRBUkdFVF9DOTlfRlVOQ1RJT05TKTogRGVmaW5lIGRlcGVuZGluZyBvbiBUQVJHRVRfR0xJQkMuCgkqIGNvbmZpZy5nY2MgKCotKi1saW51eCopOiBEZWZpbmUgZXh0cmFfb3B0aW9ucy4KCSgqLSotKnVjbGliYyopOiBEZWZpbmUgVUNMSUJDX0RFRkFVTFQuCgkoYXJtKi0qLWxpbnV4LWdudWVhYmkpOiBDaGFuZ2UgdG8gYXJtKi0qLWxpbnV4LSplYWJpLgoJKiBjb25maWcvYXJtL2xpbnV4LWVhYmkuaCAoTElOVVhfVEFSR0VUX0lOVEVSUFJFVEVSKTogQ2hhbmdlIHRvCglHTElCQ19EWU5BTUlDX0xJTktFUi4KCSogY29uZmlnL2FybS9saW51eC1lbGYuaCAoTElOVVhfVEFSR0VUX0lOVEVSUFJFVEVSKTogTGlrZXdpc2UuCgkoTElOVVhfVEFSR0VUX0xJTktfU1BFQyk6IFVzZSBMSU5VWF9EWU5BTUlDX0xJTktFUi4KCSogY29uZmlnL21pcHMvbGludXguaCAoR0xJQkNfRFlOQU1JQ19MSU5LRVIpOiBEZWZpbmUuCgkoTElOS19TUEVDKTogVXNlIExJTlVYX0RZTkFNSUNfTElOS0VSLgoJKiBkb2MvaW52b2tlLnRleGkgKEdOVS9MaW51eCBPcHRpb25zKTogTmV3IHNlY3Rpb24uCgoyMDA2LTAyLTE2ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLm1kIChzZXRqbXApOiBSZXdyaXRlLgoJKHNldGptcF8zMik6IERlbGV0ZS4KCShzZXRqbXBfNjQpOiBMaWtld2lzZS4KCjIwMDYtMDItMTYgIERhbmllbCBCZXJsaW4gPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhY2Nlc3NfY2FuX3RvdWNoX3ZhcmlhYmxlKTogRml4IHR5cG8gaW4KCSBwcmV2aW91cyBjaGFuZ2UuCgoyMDA2LTAyLTE2ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBsb29wLWludmFyaWFudC5jIChpbnZhcmlhbnRfZm9yX3VzZSwgY2hlY2tfZGVwZW5kZW5jaWVzKTogRmFpbCBmb3IKCXJlYWQtd3JpdGUgdXNlcy4KCjIwMDYtMDItMTYgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI2Mjk2CgkqIE1ha2VmaWxlLmluIChsb29wLWludmFyaWFudC5jKTogQWRkIGV4Y2VwdC5oIGRlcGVuZGVuY3kuCgkqIGxvb3AtaW52YXJpYW50LmM6IEluY2x1ZGUgZXhjZXB0LmguCgkoZmluZF9pbnZhcmlhbnRfaW5zbik6IElnbm9yZSBpbnNucyBzYXRpc2Z5aW5nIGNhbl90aHJvd19pbnRlcm5hbC4KCjIwMDUtMDItMTYgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiByZWxvYWQxLmMgKGVtaXRfcmVsb2FkX2luc25zKTogSW52YWxpZGF0ZSBkZWFkIGlucHV0IHJlZ2lzdGVycyB1c2VkCglmb3IgcmVsb2Fkcy4KCjIwMDYtMDItMTYgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yNTYzNgoJKiBsb2NhbC1hbGxvYy5jICh1cGRhdGVfZXF1aXZfcmVncyk6IExvc2UgYSBib2d1cyBydHhfZXF1YWxfcCB0ZXN0Cgl3aGVuIGRlY2lkaW5nIHdoZXRoZXIgYW4gaW5zbiBpcyBhbiBpbml0aWFsaXppbmcgaW5zbi4KCjIwMDYtMDItMTUgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLmMgKGluaXRfdHRyZWUpOiBBZGQgU1RSVUNUX0ZJRUxEX1RBRyBoYW5kbGluZy4KCSh0cmVlX2NvZGVfc2l6ZSk6IERpdHRvLgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX21lbW9yeV90YWcpOiBSZW1vdmUgcGFyZW50X3Zhci4KCShzdHJ1Y3QgdHJlZV9zdHJ1Y3RfZmllbGRfdGFnKTogTmV3LgoJKFNGVF9PRkZTRVQpOiBOZXcuCgkoU0ZUX1NJWkUpOiBOZXcuCgkodW5pb24gdHJlZV9ub2RlKTogQWRkIHNmdCBtZW1iZXIuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGdldF90bXRfZm9yKTogRG9uJ3QgaGFuZGxlIFRZUEVfUkVBRE9OTFkKCXNwZWNpYWxseSBoZXJlLgoJKGNyZWF0ZV9zZnQpOiBBZGQgc2l6ZSBhbmQgb2Zmc2V0IGFyZ3VtZW50LCBzZXQgU0ZUX09GRlNFVCBhbmQKCVNGVF9TSVpFLgoJKGNyZWF0ZV9vdmVybGFwX3ZhcmlhYmxlc19mb3IpOiBVcGRhdGUgZm9yIFNGVF9PRkZTRVQvU0ZUX1NJWkUuCgkqIHRyZWVzdHJ1Y3QuZGVmOiBBZGQgVFNfU1RSVUNUX0ZJRUxEX1RBRy4KCSogdHJlZS1mbG93LWlubGluZS5oIChnZXRfc3VidmFyX2F0KTogVXBkYXRlIGZvcgoJU0ZUX09GRlNFVC9TRlRfU0laRS4KCSh2YXJfY2FuX2hhdmVfc3VidmFycyk6IERpdHRvLgoJKG92ZXJsYXBfc3VidmFyKTogRGl0dG8uCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IFByaW50IG91dCBpbnRlcmVzdGluZyB0aGluZ3MgZm9yCglTRlQncy4KCSogdHJlZS1mbG93LmggKHN0cnVjdCBzdWJ2YXIpOiBSZW1vdmUgb2Zmc2V0IGFuZCBzaXplIG1lbWJlcnMuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKGdldF9leHByX29wZXJhbmRzKTogVXBkYXRlIGZvcgoJZ2V0X2luZGlyZWN0X3JlZl9vcGVyYW5kcyBjaGFuZ2VzLgoJKGdldF9pbmRpcmVjdF9yZWZfb3BlcmFuZHMpOiBDYWxsIGFkZF92aXJ0dWFsX29wZXJhbmQgaW5zdGVhZCBvZgoJYWRkX3N0bXRfb3BlcmFuZC4gIE9ubHkgcmVjdXJzZSBvbiBiYXNlIHZhciBpZiByZXF1ZXN0ZWQuCgkoYWNjZXNzX2Nhbl90b3VjaF92YXJpYWJsZSk6IE5ldyBmdW5jdGlvbi4KCShhZGRfc3RtdF9vcGVyYW5kKTogU3BsaXQgdmlydHVhbCBvcGVyYW5kIGhhbmRsaW5nIGludG8gLi4uCgkoYWRkX3ZpcnR1YWxfb3BlcmFuZCk6IEhlcmUuICBBZGQgb2Zmc2V0LCBzaXplLCBhbmQgZm9yX2Nsb2JiZXIKCWFyZ3VtZW50cy4gIFBydW5lIGFsaWFzIHNldHMuCgkoYWRkX2NhbGxfY2xvYmJlcl9vcHMpOiBDYWxsIGFkZF92aXJ0dWFsX29wZXJhbmQuCgoyMDA2LTAyLTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzI2MzAwCgkqIGNvbWJpbmUuYyAobWFrZV9leHRyYWN0aW9uKTogQmFpbCBvdXQgaWYgT1JJR19QT1MgaXMgbmVnYXRpdmUuCgoJKiB0cmVlLmggKHN0cnVjdCB0cmVlX29tcF9jbGF1c2UpOiBVc2UgT01QX0NMQVVTRV9DT0RFIHJhdGhlcgoJdGhhbiBUUkVFX0NPREUgYXMgaW5kZXggaW50byBvbXBfY2xhdXNlX251bV9vcHMgYXJyYXkuCgoyMDA2LTAyLTE1ICBVdHRhbSBQYXdhciAgPHV0dGFtcEB1cy5pYm0uY29tPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjYxODQKCSogbW9kdWxvLXNjaGVkLmMgKGdlbmVyYXRlX3JlZ19tb3Zlcyk6IEZyZWUgYml0bWFwIHZlY3RvcgoJdXNlc19vZl9kZWZzLgoJKiBtb2R1bG8tc2NoZWQuYyAoc21zX3NjaGVkdWxlKTogRnJlZSBnX2FyciBwb2ludGVyLgoJKiBtb2R1bG8tc2NoZWQuYyAoc21zX3NjaGVkdWxlX2J5X29yZGVyKTogRnJlZSBiaXRtYXAgcG9pbnRlcnMKCW11c3RfcHJlY2VkZSwgbXVzdF9mb2xsb3cgYW5kIHRvYmVfc2NoZWR1bGVkLgoKCVBSIG90aGVyLzI2MTQ3CgkqIG9wdHMuYyAoY29tbW9uX2hhbmRsZV9vcHRpb24pOiBGcmVlIG5ld19vcHRpb24gcG9pbnRlci4KCSogZGYtY29yZS5jIChkZl9hbmFseXplKTogRnJlZSBwb3N0b3JkZXIgcG9pbnRlci4KCjIwMDYtMDItMTUgIFJhZmFlbCDBdmlsYSBkZSBFc3DtbmRvbGEgPHJhZmFlbC5lc3BpbmRvbGFAZ21haWwuY29tPgoKCSogTWFrZWZpbGUuaW46IEZpeCB0aGUgZXhhbXBsZXMgYWJvdXQgdGhlIHVzZSBvZiBzdGFtcHMKCjIwMDYtMDItMTUgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCglQUiBtaWRkbGUtZW5kLzIyMjc1CgoJKiBzdG9yLWxheW91dC5jIChsYXlvdXRfZGVjbCk6IFplcm8td2lkdGggYml0ZmllbGRzIGFyZW4ndAoJaW5mbHVlbmNlZCBieSBtYXhpbXVtX2ZpZWxkX2FsaWdubWVudCBvciBERUNMX1BBQ0tFRC4KCSh1cGRhdGVfYWxpZ25tZW50X2Zvcl9maWVsZCk6IERpdHRvLgoJKHBsYWNlX2ZpZWxkKTogRGl0dG8uCgkqIGRvYy9leHRlbmQudGV4aSAoPCNwcmFnbWEgcGFjaz4sIDxUeXBlIEF0dHJpYnV0ZXM+KTogRG9jdW1lbnQKCXRoaXMgYmVoYXZpb3VyLgoKMjAwNi0wMi0xNSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNmZy5jIChkdW1wX2Zsb3dfaW5mbyk6IEdldCBkdW1wIGZsYWdzIGFzIGFuIGFkZGl0aW9uYWwgcGFyYW1ldGVyLgoJKGRlYnVnX2Zsb3dfaW5mbyk6IFBhc3MgaXQuCgkqIGFsaWFzLmMgKHJlc3Rfb2ZfaGFuZGxlX2NmZyk6IEFkanVzdCBjYWxscyB0byBkdW1wX2Zsb3dfaW5mby4KCSogYmItcmVvcmRlci5jIChyZW9yZGVyX2Jhc2ljX2Jsb2Nrcyk6IExpa2V3aXNlLgoJKiBjZmdjbGVhbnVwLmMgKHJlc3Rfb2ZfaGFuZGxlX2p1bXAyKTogTGlrZXdpc2UuCgkqIGNzZS5jIChyZXN0X29mX2hhbmRsZV9jc2UsIHJlc3Rfb2ZfaGFuZGxlX2NzZTIpOiBMaWtld2lzZS4KCSogZmxvdy5jIChsaWZlX2FuYWx5c2lzLCByZWNvbXB1dGVfcmVnX3VzYWdlKTogTGlrZXdpc2UuCgkqIGdjc2UuYyAoZ2NzZV9tYWluLCBieXBhc3NfanVtcHMpOiBMaWtld2lzZS4KCSogaWZjdnQuYyAocmVzdF9vZl9oYW5kbGVfaWZfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKiBsb2NhbC1hbGxvYy5jIChyZXN0X29mX2hhbmRsZV9sb2NhbF9hbGxvYyk6IExpa2V3aXNlLgoJKiBsb29wLWluaXQuYyAocnRsX2xvb3BfaW5pdCwgcnRsX2xvb3BfZG9uZSk6IExpa2V3aXNlLgoJKiBwcm9maWxlLmMgKGNvbXB1dGVfYnJhbmNoX3Byb2JhYmlsaXRpZXMsIGJyYW5jaF9wcm9iKTogTGlrZXdpc2UuCgkqIHJ0bC5oIChkdW1wX2Zsb3dfaW5mbyk6IEFkanVzdCBwcm90b3R5cGUuCgkqIHRyYWNlci5jIChyZXN0X29mX2hhbmRsZV90cmFjZXIsIHRyYWNlcik6IExpa2V3aXNlLgoJKiB2YXItdHJhY2tpbmcuYyAodmFyaWFibGVfdHJhY2tpbmdfbWFpbik6IExpa2V3aXNlLgoJKiBwYXNzZXMuYyAoZXhlY3V0ZV90b2RvKTogT2JleSBUREZfQkxPQ0tTIGZvciBSVEwuCgkqIHRyZWUtZHVtcC5jIChlbmFibGVfcnRsX2R1bXBfZmlsZSk6IEVuYWJsZSB0aGUgZGV0YWlscyBhbmQgYmxvY2tzCglvcHRpb25zLgoKMjAwNi0wMi0xNSAgTWFyY2luIERhbGVja2kgPG1hcnRpbkBkYWxlY2tpLmRlPgoKCSogdHJlZS1zc2EtZG9tLmMgKGRvbV90aHJlYWRfYWNyb3NzX2VkZ2UpOiBmaXggdGFnIGV4cHJlc3Npb24KCWNvbnN0cnVjdGlvbi4KCjIwMDYtMDItMTQgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNjIwOQoJKiB0cmVlLXNzYS1sb29wLmMgKHBhc3Nfc2Nldl9jcHJvcCk6IEFkZCBUT0RPX2NsZWFudXBfY2ZnLgoJKiB0cmVlLWNmZ2NsZWFudXAuYyAoY2xlYW51cF9jb250cm9sX2Zsb3cpOiBSZW1vdmUgZGVhZAoJZWggZWRnZXMuCgkqIHRyZWUtY2ZnLmMgKHJlcGxhY2VfdXNlc19ieSk6IERvIG5vdCBhbHRlciBjZmcuCgoyMDA2LTAyLTE0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzIzNjcwCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9iaW5hcnkpIDxCSVRfSU9SX0VYUFI+OiBPcHRpbWl6ZSAoWCZZKXxZIGludG8KCShYLFkpIGFuZCB0aGUgY29ycmVzcG9uZGluZyBzeW1tZXRyeSByZWxhdGVkIHRyYW5zZm9ybWF0aW9ucy4KCShmb2xkX2JpbmFyeSkgPEJJVF9BTkRfRVhQUj46IExpa2V3aXNlLCBvcHRpbWl6ZSAoWHxZKSZZIGludG8KCShYLFkpIGFuZCBpdHMgc3ltbWV0cnkgcmVsYXRlZCB0cmFuc2Zvcm1hdGlvbnMuCgoyMDA2LTAyLTE0ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGRvanVtcC5jIChkb19jb21wYXJlX3J0eF9hbmRfanVtcCk6IEFsc28gaGFuZGxlIG11bHRpLXdvcmQgR1RVCglhbmQgR0VVLgoKMjAwNi0wMi0xNCAgQWRhbSBOZW1ldCAgPGFuZW1ldEBjYXZpdW1uZXR3b3Jrcy5jb20+CgoJKiBzaW1wbGlmeS1ydHguYyAoc2ltcGxpZnlfc3VicmVnKTogQ29tYmluZSBTVUJSRUcgYW5kIFRSVU5DQVRFLgoKMjAwNi0wMi0xNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJUFIgYm9vdHN0cmFwLzI2MDUzCgkqIGNvbmZpZ3VyZS5hYyAoSEFWRV9DT01EQVRfR1JPVVApOiBEb24ndCBhc3N1bWUgbm9uLUdOVSBsaW5rZXJzCglzdXBwb3J0IENPTURBVCBncm91cC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNi0wMi0xNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNjI3OQoJUFIgbWlkZGxlLWVuZC8yNjI4MAoJUFIgbWlkZGxlLWVuZC8yNjI4MwoJKiBkb2p1bXAuYyAoZG9fY29tcGFyZV9ydHhfYW5kX2p1bXApOiBIYW5kbGUgbXVsdGktd29yZCBMRS4KCjIwMDYtMDItMTQgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiB0cmVlLW9wdGltaXphdGlvbi8yNjI2MAoKCSogZG9jL2ludm9rZS50ZXhpIChtYXgtZmllbGRzLWZvci1maWVsZC1zZW5zaXRpdmUpOiBEb2N1bWVudAoJcGFyYW0uCgkqIHBhcmFtcy5oIChNQVhfRklFTERTX0ZPUl9GSUVMRF9TRU5TSVRJVkUpOiBOZXcuCgkqIHBhcmFtcy5kZWYgKFBBUkFNX01BWF9GSUVMRFNfRk9SX0ZJRUxEX1NFTlNJVElWRSk6IERpdHRvLgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChjcmVhdGVfdmFyaWFibGVfaW5mb19mb3IpOiBVc2UKCU1BWF9GSUVMRFNfRk9SX0ZJRUxEX1NFTlNJVElWRS4KCjIwMDYtMDItMTQgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCgkqIGRvYy9pbnZva2UudGV4aSAoLWZwcmVmZXRjaC1sb29wLWFycmF5cywgLWZwcmVmZXRjaC1sb29wLWFycmF5cy1ydGwpOgoJRG9jdW1lbnQuCgkqIHRyZWUtc3NhLWxvb3Atbml0ZXIuYyAobnVtYmVyX29mX2l0ZXJhdGlvbnNfbmUsCgludW1iZXJfb2ZfaXRlcmF0aW9uc19sdCwgbnVtYmVyX29mX2l0ZXJhdGlvbnNfY29uZCk6IFJlbWVtYmVyIHRoZSBzaGFwZQoJb2YgdGhlIGVuZGluZyBjb25kaXRpb24uCgkqIHRyZWUtc3NhLWxvb3AtbWFuaXAuYzogSW5jbHVkZSBwYXJhbXMuaC4KCShidWlsZF9pZl9zdG10LCBjYW5fdW5yb2xsX2xvb3BfcCwgZGV0ZXJtaW5lX2V4aXRfY29uZGl0aW9ucywKCXRyZWVfdW5yb2xsX2xvb3ApOiBOZXcgZnVuY3Rpb25zLgoJKiB0cmVlLXBhc3MuaCAocGFzc19sb29wX3ByZWZldGNoKTogRGVjbGFyZS4KCSogbG9vcC5jIChyZXN0X29mX2hhbmRsZV9sb29wX29wdGltaXplKTogVGVzdCBmb3IKCS1mcHJlZmV0Y2gtbG9vcC1hcnJheXMtcnRsLgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uaCAoYWZmaW5lX2l2KTogTW92ZWQgdG8gdHJlZS1mbG93LmguCgkqIHRpbWV2YXIuZGVmIChUVl9UUkVFX1BSRUZFVENIKTogTmV3IHRpbWV2YXIuCgkqIHRyZWUtc3NhLWxvb3AuYyAodHJlZV9zc2FfbG9vcF9wcmVmZXRjaCwgZ2F0ZV90cmVlX3NzYV9sb29wX3ByZWZldGNoLAoJcGFzc19sb29wX3ByZWZldGNoKTogTmV3LgoJKiB0cmVlLWNmZ2NsZWFudXAuYzogSW5jbHVkZSB0cmVlLXNjYWxhci1ldm9sdXRpb24uaC4KCShjbGVhbnVwX3RyZWVfY2ZnX2xvb3ApOiBDYWxsIHNjZXZfcmVzZXQuCgkqIGNvbW1vbi5vcHQgKGZwcmVmZXRjaC1sb29wLWFycmF5cy1ydGwpOiBBZGQuCgkqIHRyZWUtc3NhLWxvb3AtcHJlZmV0Y2guYzogTmV3IGZpbGUuCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKHN0cnVjdCB2YWx1ZV9leHByX2QpOiBBZGQgZXhwcl92YXJzIGZpZWxkLgoJKG5ld190ZW1wX2V4cHJfdGFibGUpOiBJbml0aWFsaXplIGV4cHJfdmFycy4KCShmcmVlX3RlbXBfZXhwcl90YWJsZSk6IENsZWFudXAgZXhwcl92YXJzLgoJKGNoZWNrX3JlcGxhY2VhYmxlLCBmaW5kX3JlcGxhY2VhYmxlX2luX2JiKTogUHJldmVudCBhY2N1bXVsYXRpbmcKCWV4cHJlc3Npb25zIGZyb20gYmVpbmcgbWVyZ2VkIGludG8gb25lLgoJKiB0cmVlLWZsb3cuaCAoYWZmaW5lX2l2KTogTW92ZWQgZnJvbSB0cmVlLXNjYWxhci1ldm9sdXRpb24uaC4KCShzdHJ1Y3QgdHJlZV9uaXRlcl9kZXNjKTogQWRkIGNvbnRyb2wsIGJvdW5kIGFuZCBjbXAgZmllbGRzLgoJKHRyZWVfc3NhX3ByZWZldGNoX2FycmF5cywgY2FuX3Vucm9sbF9sb29wX3AsIHRyZWVfdW5yb2xsX2xvb3ApOgoJRGVjbGFyZS4KCSogTWFrZWZpbGUuaW4gKHRyZWUtc3NhLWxvb3AtcHJlZmV0Y2gubyk6IEFkZC4KCSh0cmVlLWNmZ2NsZWFudXAubyk6IEFkZCBTQ0VWX0ggZGVwZW5kZW5jeS4KCSh0cmVlLXNzYS1sb29wLW1hbmlwLm8pOiBBZGQgUEFSQU1TX0ggZGVwZW5kZW5jeS4KCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IEFkZCBwYXNzX2xvb3BfcHJlZmV0Y2guCgoyMDA2LTAyLTE0ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjYyNTgKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoZmluZF9mdW5jX2FsaWFzZXMpOiBIYW5kbGUgYWdncmVnYXRlcwoJaW4gUEhJIGFyZ3VtZW50IHByb2Nlc3NpbmcuCgoyMDA2LTAyLTEzICBBZGFtIE5lbWV0ICA8YW5lbWV0QGNhdml1bW5ldHdvcmtzLmNvbT4KCgkqIHNpbXBsaWZ5LXJ0eC5jIChzaW1wbGlmeV91bmFyeV9vcGVyYXRpb25fMSkgPFRSVU5DQVRFPjogUmV0dXJuCgluZXcgZXhwcmVzc2lvbiBpbiB0aGUgcmVxdWVzdGVkIG1hY2hpbmUgbW9kZS4KCjIwMDYtMDItMTMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogb3B0YWJzLmMgKGV4cGFuZF9hYnMpOiBEb24ndCBjYWxsIGRvX2p1bXBfYnlfcGFydHNfZ3JlYXRlcl9ydHgKCWRpcmVjdGx5LCBpbnN0ZWFkIGxldCBkb19jb21wYXJlX3J0eF9hbmRfanVtcCBoYW5kbGUgdGhpcyBmb3IgdXMuCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKTogTGlrZXdpc2UuCgkqIGRvanVtcC5jIChkb19qdW1wX2J5X3BhcnRzX2dyZWF0ZXJfcnR4KTogTWFrZSBzdGF0aWMuICBNb3ZlCgliZWZvcmUgZG9fanVtcF9ieV9wYXJ0c19ncmVhdGVyLgoJKGRvX2p1bXBfYnlfcGFydHNfZ3JlYXRlcik6IE1vdmUgYWZ0ZXIgZG9fanVtcF9ieV9wYXJ0c19ncmVhdGVyX3J0eC4KCSogZXhwci5oIChkb19qdW1wX2J5X3BhcnRzX2dyZWF0ZXJfcnR4KTogRGVsZXRlIHByb3RvdHlwZS4KCjIwMDYtMDItMTMgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS9xdWFkbGliLmM6IFVzZSBkZWZpbmVzIGluc3RlYWQgb2YgZW51bSBxZmNtcF9tYWdpYy4KCjIwMDYtMDItMTMgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI2MjM1CgkqIGxvb3AtaW52YXJpYW50LmMgKGhhc2hfaW52YXJpYW50X2V4cHJfMSk6IEhhbmRsZSAnaScgYW5kICduJyBmb3JtYXRzLgoJKGludmFyaWFudF9leHByX2VxdWFsX3ApOiBIYW5kbGUgJ2knIGFuZCAnbicgZm9ybWF0cy4gIEZhaWwgb24gdW5rbm93bgoJZm9ybWF0LgoKMjAwNi0wMi0xMyAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtdnJwLmMgKGV4dHJhY3RfcmFuZ2VfZnJvbV9iaW5hcnlfZXhwcik6IFJlbW92ZSBoYW5kbGluZyBvZgoJVFJVVEhfWE9SX0VQUi4KCjIwMDYtMDItMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjYwOTIKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfY2FsbF9leHByKTogRG9uJ3QgY2FsbCBnZXRfY2FsbGVlX2ZuZGVjbAoJdHdpY2UgaWYgZGVjbCBpcyBhIGJ1aWx0aW4uICBXaGVuIHRyeWluZyBhZ2FpbiwgY2FsbCBnZXRfY2FsbGVlX2ZuZGVjbAoJZmlyc3QgdG8gdmVyaWZ5IGl0IGlzIHN0aWxsIGEgYnVpbHRpbi4KCjIwMDYtMDItMTMgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZHdhcmYyb3V0LmMgKGJhc2VfdHlwZV9kaWUpOiBEb24ndCBhZGQgQVRfbmFtZSBoZXJlLgoJKHN1YnJhbmdlX3R5cGVfZGllKTogRG9uJ3QgYWRkIEFUX25hbWUgaGVyZS4KCShtb2RpZmllZF90eXBlX2RpZSk6IFJlYXJyYW5nZSBjb2RlIGZsb3cuICBEbyBhZGQgQVRfbmFtZSBoZXJlLgoKMjAwNi0wMi0xMyAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjYyNDcKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjYyNDgKCSogbG9vcC1pbnZhcmlhbnQuYyAobWF5X2Fzc2lnbl9yZWdfcCk6IERvIG5vdCBhbGxvdyBWT0lEbW9kZS4KCjIwMDYtMDItMTMgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2Zsb2F0dW5kaXRmLmM6IFVzZSBpZiBfX0xEQkxfTUFOVF9ESUdfXyA9PSAxMTMuCgkqIGNvbmZpZy9maXh0ZmRpLmM6IExpa2V3aXNlLgoJKiBjb25maWcvZml4dW5zdGZkaS5jOiBMaWtld2lzZS4KCSogY29uZmlnL2Zsb2F0ZGl0Zi5jOiBMaWtld2lzZS4KCjIwMDYtMDItMTMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIG1pZGRsZS1lbmQvMjQ0MjcKCSogZm9sZC1jb25zdC5jIChmb2xkX2JpbmFyeSkgPEJJVF9JT1JfRVhQUj46IFRyYW5zZm9ybSAoWCZDMSl8QzIKCWludG8gKFgsQzIpIGlmIEMxIGlzIGEgc3Vic2V0IG9mIHRoZSBiaXRzIG9mIEMyLiAgVHJhbnNmb3JtCgkoWCZDMSl8QzIgaW50byBYfEMyIGlmIEMxfEMyID09IH4wLiAgQ2Fub25pY2FsaXplIChYJkMxKXxDMiBhcwoJKFgmKEMxJn5DMikpfEMyLgoJPEJJVF9BTkRfRVhQUj46IENhbm9uaWNhbGl6ZSAoWHxDMSkmQzIgYXMgKFgmQzIpfChDMSZDMikuCgoyMDA2LTAyLTEzICBKb3NoIENvbm5lciAgPGpjb25uZXJAYXBwbGUuY29tPgoKCVBSIHRhcmdldC8yNTM3NgoJKiB2YXJhc20uYyAoZnVuY3Rpb25fc2VjdGlvbik6IENoZWNrIGZvciBzZWN0aW9uIG5hbWUgYmVmb3JlCgljYWxsaW5nIHNlbGVjdF9zZWN0aW9uIG9uIHRhcmdldHMgdGhhdCBkZWZpbmUKCVVTRV9TRUxFQ1RfU0VDVElPTl9GT1JfRlVOQ1RJT05TLiAgT24gb3RoZXIgdGFyZ2V0cywgdXNlCgl1bmxpa2VseV90ZXh0X3NlY3Rpb24gaW5zdGVhZCBvZiBob3RfZnVuY3Rpb25fc2VjdGlvbiBpZgoJZmlyc3RfZnVuY3Rpb25fYmxvY2tfaXNfY29sZC4KCjIwMDYtMDItMTMgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNTMzNQoJKiByZWxvYWQxLmMgKGdlbl9yZWxvYWQpOiBBbHNvIHVzZSBmaW5kX3JlcGxhY2VtZW50IGluIFVOQVJZX1AgY2FzZS4KCjIwMDYtMDItMTIgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI2MjIyCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9zdGFja190ZW1wX2Zvcl90eXBlKTogRG8gbm90IHJldXNlIHN0YWNrIHNsb3RzCglhZnRlciB0cmVlLT5ydGwgZXhwYW5zaW9uLgoJKiBsb29wLWludmFyaWFudC5jIChtb3ZlX2ludmFyaWFudF9yZWcpOiBVc2UgZm9yY2Vfb3BlcmFuZCBvbiByaHMKCWJlZm9yZSBwYXNzaW5nIGl0IHRvIGVtaXRfbW92ZV9pbnNuLgoKMjAwNi0wMi0xMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1Xcml0ZS1zdHJpbmdzKTogRG9jdW1lbnQgdGhhdCBpdCBpcyBlbmFibGVkIGJ5CglkZWZhdWx0LgoJKiBjLm9wdCAoLVd3cml0ZS1zdHJpbmdzKTogRGVjbGFyZSB2YXJpYWJsZSB3YXJuX3dyaXRlX3N0cmluZ3MuCglDbGFyaWZ5IGRvY3VtZW50YXRpb24uCgkqIGMtY29tbW9uLmggKHdhcm5fd3JpdGVfc3RyaW5ncyk6IFJlbW92ZS4KCSogYy1jb21tb24uYyAod2Fybl93cml0ZV9zdHJpbmdzKTogTGlrZXdpc2UuCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9pbml0X29wdGlvbnMpOiBFbmFibGUgLVd3cml0ZS1zdHJpbmdzIGJ5CglkZWZhdWx0IGZvciBDKysuCgoyMDA2LTAyLTEyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBtaWRkbGUtZW5kLzI1NzI0CgkqIGRvanVtcC5jIChkb19qdW1wKTogQ2FsbCBkb19jb21wYXJlX3J0eF9hbmRfanVtcC4KCShkb19qdW1wX3BhcnRzX3plcm9fcnR4KTogTmV3IGZ1bmN0aW9uIHJlbmFtZWQgZnJvbQoJZG9fanVtcF9wYXJ0c19lcXVhbGl0eV9ydHguICBNYWRlIHN0YXRpYy4gIEFkZCBhIG1vZGUgYXJndW1lbnQuCgkoZG9fanVtcF9wYXJ0c19lcXVhbGl0eV9ydHgpOiBOZXcgZnVuY3Rpb24gc3BsaXQgb3V0IGZyb20KCWRvX2p1bXBfcGFydHNfZXF1YWxpdHkuICBPbGQgaW1wbGVtZW50YXRpb24gcmVuYW1lZCBhcyBhYm92ZS4KCUNhbGwgZG9fanVtcF9wYXJ0c196ZXJvX3J0eCBpZiBlaXRoZXIgb3BlcmFuZCBpcyB6ZXJvLgoJKGRvX2p1bXBfcGFydHNfZXF1YWxpdHkpOiBDYWxsIGRvX2p1bXBfcGFydHNfZXF1YWxpdHlfcnR4IHRvCglkbyBhbGwgb2YgdGhlIGhlYXZ5IGxpZnRpbmcuCgkoZG9fY29tcGFyZV9ydHhfYW5kX2p1bXApOiBIYW5kbGUgbXVsdGktd29yZCBjb21wYXJpc29ucyBieQoJY2FsbGluZyBlaXRoZXIgZG9fanVtcF9ieV9wYXJ0c19ncmVhdGVyX3J0eCBvcgoJZG9fanVtcF9ieV9wYXJ0c19lcXVhbGl0eV9ydHguCgkqIGV4cHIuaCAoZG9fanVtcF9ieV9wYXJ0c19lcXVhbGl0eV9ydHgpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBleHBtZWQuYyAoZG9fY21wX2FuZF9qdW1wKTogTm93IG11bHRpLXdvcmQgb3B0aW1pemF0aW9uIGhhcwoJbW92ZWQgdG8gZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAsIGNhbGwgaXQgZGlyZWN0bHkuCgkqIHN0bXQuYyAoZG9fanVtcF9pZl9lcXVhbCk6IFJlbW92ZSBzdGF0aWMgcHJvdG90eXBlLiAgQWRkIGEKCW1vZGUgYXJndW1lbnQuICBDYWxsIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1wLgoJKGVtaXRfY2FzZV9ub2Rlcyk6IFVwZGF0ZSBjYWxscyB0byBkb19qdW1wX2lmX2VxdWFsLgoKMjAwNi0wMi0xMiAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjYyMjUKCSogbG9vcC1pbnZhcmlhbnQuYyAobWF5X2Fzc2lnbl9yZWdfcCk6IERvIG5vdCBhbGxvdyBCTEttb2RlIG9wZXJhbmRzLgoKMjAwNi0wMi0xMiAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjYyMzIKCSogbG9vcC1pbnZhcmlhbnQuYyAoZmluZF9pbnZhcmlhbnRfaW5zbik6IElnbm9yZSBpbnNucyB0aGF0IHNldCBDQzAuCgoyMDA2LTAyLTExICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdC8yNDM2NQoJKiB0cmVlLWlubGluZS5jIChkZWNsYXJlX3JldHVybl92YXJpYWJsZSk6IEp1c3QgZG9uJ3QgdXNlIHRoZQoJbW9kaWZ5IHRhcmdldCBpZiBpdCdzIGEgZ2ltcGxlIGNvbXBsZXggcmVnIGFuZCB0aGUgcmV0dXJuIHNsb3QKCWlzbid0LgoKMjAwNi0wMi0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZG9jL2NvbnRyaWIudGV4aTogVXBkYXRlIG15IGVudHJ5LgoKMjAwNi0wMi0xMCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoREJYX1JFR0lTVEVSX05VTUJFUik6IERlZmluZS4KCjIwMDYtMDItMTAgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCSogdHJlZS1pbmxpbmUuYyAoZXN0aW1hdGVfbnVtX2luc25zXzEpOiBNYWtlIE9wZW5NUCBkaXJlY3RpdmVzCglleHBlbnNpdmUuCgoyMDA2LTAyLTEwICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1mbG9vcC1vcHRpbWl6ZTIpOiBSZW1vdmVkLgoJKiB0b3BsZXYuYyAocHJvY2Vzc19vcHRpb25zKTogUmVtb3ZlIGhhbmRsaW5nIG9mIGZsYWdfbG9vcF9vcHRpbWl6ZTIuCgkqIGxvb3AtaW5pdC5jIChnYXRlX2hhbmRsZV9sb29wMik6IERvIG5vdCB0ZXN0IGZsYWdfbG9vcF9vcHRpbWl6ZTIuCglUZXN0IGZsYWdfYnJhbmNoX29uX2NvdW50X3JlZyBvbmx5IGlmIEhBVkVfZG9sb29wX2VuZC4KCSogY29tbW9uLm9wdCAoZmxvb3Atb3B0aW1pemUyKTogUmVtb3ZlZC4KCShmbW92ZS1sb29wLWludmFyaWFudHMpOiBFbmFibGVkIGJ5IGRlZmF1bHQuCgoyMDA2LTAyLTEwICBTZWJhc3RpYW4gUG9wICA8cG9wQGNyaS5lbnNtcC5mcj4KCgkqIHRyZWUtaWYtY29udi5jIChjb21iaW5lX2Jsb2Nrcyk6IEZyZWUgdGhlIHJlc3VsdCBvZgoJZ2V0X2xvb3BfZXhpdF9lZGdlcy4KCjIwMDYtMDItMTAgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKHRyZWVfZXhwcl9ub256ZXJvX3ApOiBGaXggdGhpbmtvLgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI2MjEzCgkqIHRyZWUtc3NhLXRocmVhZGVkZ2UuYyAoc2ltcGxpZnlfY29udHJvbF9zdG10X2NvbmRpdGlvbik6IERvIG5vdAoJbG9vcCB0cnlpbmcgdG8gZm9sbG93IFNTQV9OQU1FX1ZBTFVFIGNoYWlucy4KCjIwMDYtMDItMTAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtZGZhLmMgKGdldF9yZWZfYmFzZV9hbmRfZXh0ZW50KTogV2hlbiBjb21wdXRpbmcgbWF4c2l6ZQoJZGVhbCB3aXRoIHN0cnVjdHVyZXMgdGhhdCBlbmQgaW4gaW1wbGljaXRseSB2YXJpYWJsZSBzaXplZCBhcnJheXMuCgoyMDA2LTAyLTA5ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yNDc2MgoJKiBkZi1zY2FuLmMgKGRmX2JiX3JlZnNfcmVjb3JkKTogUmVjb3JkIGNvcnJlY3QgcmVnaXN0ZXJzIGRlZmluZWQgb24KCWVoIGVkZ2VzLgoKMjAwNi0wMi0wOSAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAoc3RydWN0IGxvb3BfZGF0YSwgbG9vcF9kYXRhKTogUmVtb3ZlZC4KCShzdHJ1Y3QgaXZvcHRzX2RhdGEpOiBBZGQgcmVnc191c2VkIGZpZWxkLgoJKHRyZWVfc3NhX2l2X29wdGltaXplX2luaXQpOiBEbyBub3QgYWxsb2NhdGUgYXV4IGZpZWxkcyBmb3IgbG9vcHMuCgkoaXZvcHRzX2dsb2JhbF9jb3N0X2Zvcl9zaXplLCBkZXRlcm1pbmVfc2V0X2Nvc3RzKTogVXNlIGRhdGEtPnJlZ3NfdXNlZAoJaW5zdGVhZCBvZiBsb29wX2RhdGEtPnJlZ3NfdXNlZDsKCShmcmVlX2xvb3BfZGF0YSk6IERvIG5vdCBmcmVlIGF1eCBmaWVsZHMgZm9yIGxvb3BzLgoJKHRyZWVfc3NhX2l2X29wdGltaXplKTogRG8gbm90IHBhc3MgbG9vcHMgdG8gdHJlZV9zc2FfaXZfb3B0aW1pemVfaW5pdAoJYW5kIHRyZWVfc3NhX2l2X29wdGltaXplX2ZpbmFsaXplLgoKMjAwNi0wMi0wOSAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvc2guaCAoRlVOQ1RJT05fVkFMVUUpOiBEb24ndCBoYW5kbGUgQ0hBUl9UWVBFLgoKMjAwNi0wMi0wOSAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN0LmNvbT4KCglQUiB0YXJnZXQvMjYxNDEKCSogc2guYyAoc2hfZ2ltcGxpZnlfdmFfYXJnX2V4cHIpOiBEb24ndCBjaGFuZ2UgdGhlIHJlc3VsdCB0eXBlIHdoZW4KCWNvbXB1dGluZyB0aGUgZWZmZWN0aXZlIHJlc3VsdCB0eXBlLgoKMjAwNi0wMi0wOSAgSiJvcm4gUmVubmVja2UgPGpvZXJuLnJlbm5lY2tlQHN0LmNvbT4KCglQUiBpbmxpbmUtYXNtLzE2MTk0CgkqIHRyZWUuaCAoZGVjbF9vdmVybGFwc19oYXJkX3JlZ19zZXRfcCkgRG9uJ3QgZGVjbGFyZS4KCSh0cmVlX292ZXJsYXBzX2hhcmRfcmVnX3NldCk6IERlY2xhcmUuCgkqIHN0bXQuYyAoZGVjbF9vdmVybGFwc19oYXJkX3JlZ19zZXRfcCk6IE5vdyBzdGF0aWMuICBDaGFuZ2UgcmV0dXJuCgl0eXBlIGFuZCBzaWduYXR1cmUgdG8gbWF0Y2ggZnVuY3Rpb24gdHlwZSBleHBlY3RlZCBieSB3YWxrX3RyZWUuCgkodHJlZV9vdmVybGFwc19oYXJkX3JlZ19zZXQpOiBOZXcgZnVuY3Rpb24uCgkoZGVjbF9jb25mbGljdHNfd2l0aF9jbG9iYmVyc19wKTogUmVuYW1lIHRvOgoJKHRyZWVfY29uZmxpY3RzX3dpdGhfY2xvYmJlcnNfcCkuICBUYWtlIEhBUkRfUkVHX1NFVCAqIGFyZ3VtZW50LgoJVXNlIHRyZWVfb3ZlcmxhcHNfaGFyZF9yZWdfc2V0LiAgQ2hhbmdlZCBjYWxsZXIuCgkqIGRvYy90bS50ZXhpIChUQVJHRVRfTURfQVNNX0NMT0JCRVJTKTogUmVwbGFjZQoJZGVjbF9vdmVybGFwc19oYXJkX3JlZ19zZXRfcCB3aXRoIHRyZWVfb3ZlcmxhcHNfaGFyZF9yZWdfc2V0LgoJKiBjcmlzLmMgKGNyaXNfbWRfYXNtX2Nsb2JiZXJzKTogTGlrZXdpc2UuCgoyMDA2LTAyLTA5ICBCZXJuZCBTY2htaWR0ICA8YmVybmQuc2NobWlkdEBhbmFsb2cuY29tPgoKCSogcmVsb2FkMS5jIChlbWl0X2lucHV0X3JlbG9hZF9pbnNucyk6IERlbGV0ZSBjb2RlIHRoYXQgdHJpZXMgdG8KCWluaGVyaXQgdXNpbmcgZmluZF9lcXVpdl9yZWcuCgoyMDA2LTAyLTA5ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGMtY29tbW9uLmggKGZsYWdfY29uc3Rfc3RyaW5ncyk6IERvbid0IGRlY2xhcmUuCgkqIGMtY29tbW9uLmMgKGZsYWdfY29uc3Rfc3RyaW5ncyk6IFJlbW92ZS4KCSogYy5vcHQgKGZjb25zdF9zdHJpbmdzKTogUmVtb3ZlLgoJKiBjLW9wdHMuYyAoY19jb21tb25faGFuZGxlX29wdGlvbik6IFJlbW92ZSA8T1BUX2Zjb25zdF9zdHJpbmdzPi4KCTxPUFRfV3dyaXRlX3N0cmluZ3M+OiBEb24ndCBzZXQgZmxhZ19jb25zdF9zdHJpbmdzLgoJKGNfY29tbW9uX2luaXRfb3B0aW9ucyk6IERvbid0IHNldCBmbGFnX2NvbnN0X3N0cmluZ3MuCgkqIGRvYy9pbnZva2UudGV4aSAoLWZuby1jb25zdC1zdHJpbmdzKTogUmVtb3ZlIGRvY3VtZW50YXRpb24uCgoyMDA2LTAyLTA5ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmljaGFyZC5lYXJuc2hhd0Bhcm0uY29tPgoKCSogYXJtLm1kICh0bG9iaXRzX2NicmFuY2gpOiBOZXcgcGF0dGVybi4KCSogYXJtLmggKGFybV9zZWxlY3RfY2NfbW9kZSk6IEZvciB0aHVtYiwgb25seSByZXR1cm4gQ0NfTm1vZGUgaWYKCXRlc3RpbmcgYSBzaW5nbGUgYml0LgoKMjAwNi0wMi0wOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdHJlZS1vcHQvMjYxNzkKCSogdHJlZS1zc2EtcHJlLmMgKGNyZWF0ZV9jb21wb25lbnRfcmVmX2J5X3BpZWNlcyk6CglIYW5kbGUgUkVUVVJOX0RFQ0wgbGlrZSBWQVJfREVDTC4KCjIwMDYtMDItMDkgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG1pZGRsZS1lbmQvMjYxMzQKCSogZm9sZC1jb25zdC5jIChmb2xkX2luZGlyZWN0X3JlZl8xKTogRm9sZAoJIiooZm9vICopJmNvbXBsZXhmb28iIHRvICJfX3JlYWxfXyBjb21wbGV4Zm9vIgoJYW5kICIoKGZvbyopJmNvbXBsZXhmb28pWzFdIiB0byAiX19pbWFnX18gY29tcGxleGZvbyIuCgoyMDA2LTAyLTA5ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIHRyZWUtZmxvdy1pbmxpbmUuaCAodmFyX2Nhbl9oYXZlX3N1YnZhcnMpOgoJVm9sYXRpbGUgdmFyaWFibGVzIHNob3VsZCBub3QgaGF2ZSBzdWJ2YXJpYWJsZXMuCgoyMDA2LTAyLTA5ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglQUiAyNjE4MAoJKiB0cmVlLXZycC5jICh2cnBfaW50X2NvbnN0X2Jpbm9wKTogRGV0ZWN0IG92ZXJmbG93IHdoZW4KCW11bHRpcGx5aW5nIHVuc2lnbmVkIHZhbHVlcy4KCVRpZHkgY29tbWVudHMuCgoyMDA2LTAyLTA5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHRsc19jYWxsX2RlbGF5KTogRml4IG92ZXJzaWdodC4KCjIwMDYtMDItMDggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNTk3OQoJKiB0cmVlLmRlZjogRWxhYm9yYXRlIG9uIGRpZmZlcmVuY2UgZnJvbSBNT0RJRllfRVhQUi4KCSogZG9jL2MtdHJlZS50ZXhpIChJTklUX0VYUFIpOiBMaWtld2lzZS4KCSogZ2ltcGxpZnkuYyAoaW50ZXJuYWxfZ2V0X3RtcF92YXIpOiBVc2UgSU5JVF9FWFBSLgoJKGdpbXBsaWZ5X2RlY2xfZXhwciwgZ2ltcGxpZnlfaW5pdF9jdG9yX2V2YWwpOiBMaWtld2lzZS4KCShnaW1wbGlmeV90YXJnZXRfZXhwcik6IExpa2V3aXNlLgoJKGdpbXBsaWZ5X2NvbmRfZXhwcik6IFJlbW92ZSB0YXJnZXQgaGFuZGxpbmcuCgkoZ2ltcGxpZnlfbW9kaWZ5X2V4cHIpOiBEb24ndCBjbG9iYmVyIElOSVRfRVhQUiBjb2RlIGhlcmUuCgkoZ2ltcGxpZnlfZXhwcik6IENsb2JiZXIgaXQgaGVyZS4KCShnaW1wbGlmeV9tb2RpZnlfZXhwcl9yaHMpOiBQdXNoIGFzc2lnbm1lbnQgaW50byBDT05EX0VYUFIgaGVyZS4KCURvIHJldHVybiBzbG90IG9wdGltaXphdGlvbiBpZiB3ZSBoYXZlIGFuIElOSVRfRVhQUi4KCglQUiB0cmVlLW9wdC8yNDM2NQoJKiB0cmVlLWlubGluZS5jIChkZWNsYXJlX3JldHVybl92YXJpYWJsZSk6IEFsc28gY2xlYXIKCURFQ0xfQ09NUExFWF9HSU1QTEVfUkVHX1AgYXMgbmVlZGVkIGluIHRoZSBtb2RpZnlfZGVzdCBjYXNlLgoKCVBSIGMrKy8xNjQwNQoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9tb2RpZnlfZXhwcl9yaHMpOiBSZS1lbmFibGUgKiYgaGFuZGxpbmcuCgoJUFIgbWlkZGxlLWVuZC8yMjQzOQoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9vbmVfc2l6ZXBvcyk6IEZpeCB0eXBvLgoKMjAwNi0wMi0wOCAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yMTQxNwoJKiB0cmVlLXNzYS10aHJlYWRlZGdlLmMgKHRocmVhZF9hY3Jvc3NfZWRnZSk6IFJlamVjdCB0aHJlYWRpbmcKCWFjcm9zcyBhIGJhY2tlZGdlIGlmIHRoZSBjb250cm9sIHN0YXRlbWVudCBhdCB0aGUgZW5kIG9mIHRoZQoJYmxvY2sgaXMgZGF0YSBkZXBlbmRlbnQgb24gb3RoZXIgc3RhdGVtZW50cyBpbiB0aGUgc2FtZSBibG9jay4KCShyZWNvcmRfdGVtcG9yYXJ5X2VxdWl2YWxlbmNlc19mcm9tX3N0bXRzKTogUmVtb3ZlIG92ZXItY29uc2VydmF0aXZlCgl0ZXN0IGZvciB0aHJlYWRpbmcgYWNyb3NzIGJhY2tlZGdlcy4KCgkqIHRyZWUtc3NhLWRjZS5jIChyZW1vdmVfZGVhZF9zdGF0ZW1lbnQpOiBXaGVuIHJlbW92aW5nIGEgZGVhZAoJY29udHJvbCBzdGF0ZW1lbnQsIGhhbmRsZSBhbGwgdGhyZWUgc3BlY2lhbCBjYXNlcyBpbiB0aGUgc2FtZQoJbWFubmVyIGFzIHRoZXkgYWxsIGhhdmUgdGhlIHNhbWUgZGVzaXJlZCBzb2x1dGlvbi4gIE5vIGxvbmdlcgoJc3BlY2lhbCBjYXNlIGVkZ2UgZmxhZyB1cGRhdGluZyB3aGVuIHRoZSBwb3N0IGRvbWluYXRvciBpcwoJdGhlIGV4aXQgYmxvY2suCgoyMDA2LTAyLTA4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHRyZWUuZGVmIChDSEFSX1RZUEUpOiBSZW1vdmUuCgkqIGRieG91dC5jIChkYnhvdXRfdHlwZSk6IERlbGV0ZSBkZWFkIGhhbmRsaW5nIG9mIENIQVJfVFlQRS4KCSogZHdhcmYyb3V0LmMgKGJhc2VfdHlwZV9kaWUsIGlzX2Jhc2VfdHlwZSk6IExpa2V3aXNlLgoJKGdlbl90eXBlX2RpZSkgPEFSUkFZX1RZUEU+OiBSZW1vdmUgaGFuZGxpbmcgb2YgQ0hBUl9UWVBFIGFycmF5cy4KCShnZW5fc3RyaW5nX3R5cGVfZGllKTogRGVsZXRlIHVucmVhY2hhYmxlIGZ1bmN0aW9uLgoKCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9nZW5lcmljX25vZGUpOiBEb24ndCBoYW5kbGUgQ0hBUl9UWVBFLgoJKiB0cmVlLmMgKGJ1aWxkX2ludF9jc3Rfd2lkZSwgdHlwZV9jb250YWluc19wbGFjZWhvbGRlcl8xLAoJdHlwZV9oYXNoX2VxLCB2YXJpYWJseV9tb2RpZmllZF90eXBlX3AsIHdhbGtfdHlwZV9maWVsZHMpOiBMaWtld2lzZS4KCSogdHJlZS5oIChOVU1FUklDQUxfVFlQRV9DSEVDSywgSU5URUdSQUxfVFlQRV9QKTogTGlrZXdpc2UuCgkqIGJ1aWx0aW5zLmMgKHR5cGVfdG9fY2xhc3MpOiBMaWtld2lzZS4KCSogZm9sZC1jb25zdC5jIChmb2xkX2NvbnZlcnQsIGJ1aWxkX3JhbmdlX2NoZWNrLAoJbWVyZ2VfcmFuZ2VzKTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoY291bnRfdHlwZV9lbGVtZW50cyk6IExpa2V3aXNlLgoJKiBjLXByZXR0eS1wcmludC5jIChwcF9jX3R5cGVfc3BlY2lmaWVyKTogTGlrZXdpc2UuCgkqIHN0b3ItbGF5b3V0LmMgKGxheW91dF90eXBlKTogTGlrZXdpc2UuCgkqIGlwYS10eXBlLWVzY2FwZS5jICh0eXBlX3RvX2NvbnNpZGVyKTogTGlrZXdpc2UuCgkqIGdpbXBsaWZ5LmMgKG9tcF9maXJzdHByaXZhdGl6ZV90eXBlX3NpemVzLAoJZ2ltcGxpZnlfdHlwZV9zaXplcyk6IExpa2V3aXNlLgoJKiBleHBsb3cuYyAocHJvbW90ZV9tb2RlKTogTGlrZXdpc2UuCgkqIHRyZWUtc3JhLmMgKGlzX3NyYV9zY2FsYXJfdHlwZSk6IExpa2V3aXNlLgoJKiB2YXJhc20uYyAob3V0cHV0X2NvbnN0YW50KTogTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmMgKHJlbWFwX3R5cGVfMSk6IExpa2V3aXNlLgoJKiBjb252ZXJ0LmMgKGNvbnZlcnRfdG9fcG9pbnRlciwgY29udmVydF90b19yZWFsLAoJY29udmVydF90b19pbnRlZ2VyLCBjb252ZXJ0X3RvX2NvbXBsZXgpOiBMaWtld2lzZS4KCjIwMDYtMDItMDggIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogZGYtc2Nhbi5jIChkZl9kZWZfcmVjb3JkXzEpOiBBIHNldCBkZXN0aW5hdGlvbiBtYXkKCWJlIGEgcGFyYWxsZWwgcmVnYXJkbGVzcyBvZiBtb2RlLgoKMjAwNi0wMi0wOCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgdGFyZ2V0LzIyMjA5CgkqIGNvbmZpZy9taXBzL21pcHMuaCAoTUlOX1VOSVRTX1BFUl9XT1JEKTogRG9uJ3QgZGVmaW5lIGZvciBsaWJnY2MuCgkqIGNvbmZpZy9taXBzL190aWxpYi5jOiBSZW1vdmUuCgkqIGNvbmZpZy9maXh0ZmRpLmM6IE5ldyBsaWJnY2Mgc291cmNlIGZpbGUuCgkqIGNvbmZpZy9maXh1bnN0ZmRpLmM6IE5ldyBzb3VyY2UgZmlsZS4KCSogY29uZmlnL2Zsb2F0ZGl0Zi5jOiBOZXcgc291cmNlIGZpbGUuCgkqIGNvbmZpZy9mbG9hdHVuZGl0Zi5jOiBOZXcgc291Y2UgZmlsZS4KCSogY29uZmlnL21pcHMvdC1pcmlzNiAoTElCMkZVTkNTX0VYVFJBKTogSW5jbHVkZSB0aGUgbmV3IHNvdXJjZQoJZmlsZXMgYWJvdmUgaW5zdGVhZCBvZiBjb25maWcvbWlwcy9fdGlsaWIuYy4KCSogY29uZmlnL21pcHMvdC1saW51eDY0IChMSUIyRlVOQ1NfRVhUUkEpOiBMaWtld2lzZS4KCjIwMDYtMDItMDggIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjYxNjkKCSogdHJlZS12cnAuYyAoZXhlY3V0ZV92cnApOiBQZXJmb3JtIGFueSBxdWV1ZWQgU1NBIHVwZGF0ZXMgYmVmb3JlCgl0aHJlYWRpbmcganVtcHMuCgoyMDA2LTAyLTA4ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBkZi5oIChERl9SRUdfU0laRSk6IFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBpbml0aWFsaXplZAoJcGFydCBvZiB0aGUgYXJyYXkuCgoyMDA2LTAyLTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbGIxc2Y2OC5hc20gKF9fZGl2c2YzLCBfX2RpdmRmMywgX19tdWxzZjMsCglfX211bGRmMyk6IFJldHVybiBhIGNvcnJlY3RseSBzaWduZWQgemVyby4KCjIwMDYtMDItMDggIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBwYXNzZXMuYyAocmVnaXN0ZXJfb25lX2R1bXBfZmlsZSk6IEFjY2VwdCB0aGUgY3VycmVudCBwcm9wZXJ0aWVzCglpbnN0ZWFkIG9mIHBhc3MgbnVtYmVyLiAgQWRqdXN0IGNhbGwgdG8gZHVtcF9yZWdpc3Rlci4gIFJlbW92ZQoJZHVwbGljYXRlZCBjb2RlLgoJKHJlZ2lzdGVyX2R1bXBfZmlsZXMpOiBOb3cgYSB3cmFwcGVyIGFyb3VuZC4uLgoJKHJlZ2lzdGVyX2R1bXBfZmlsZXNfMSk6IC4uLiB0aGlzIG9uZS4gIERvIG5vdCBtb2RpZnkgdGhlIHBhc3MKCXN0cnVjdHVyZS4KCShuZXh0X3Bhc3NfMSk6IENvc21ldGljIGZpeC4KCShleGVjdXRlX3RvZG8pOiBLZWVwIHNlY29uZCBwYXJhbWV0ZXIgb25seS4gIFVzZSBjdXJyX3Byb3BlcnRpZXMKCWluc3RlYWQgb2YgZmV0Y2hpbmcgaXQgZnJvbSB0aGUgcGFzcyBzdHJ1Y3R1cmUuICBDaGVjayBhbmQgc2V0CglsYXN0X3ZlcmlmaWVkLgoJKGV4ZWN1dGVfb25lX3Bhc3MpOiBIYW5kbGUgVE9ET19zZXRfcHJvcHMuICBVc2UgY3Vycl9wcm9wZXJ0aWVzCglpbnN0ZWFkIG9mIGZldGNoaW5nIGl0IGZyb20gdGhlIHBhc3Mgc3RydWN0dXJlLiAgRml4IGNhbGxzIHRvCglleGVjdXRlX3RvZG8uICBVcGRhdGUgY3Vycl9wcm9wZXJ0aWVzIGFuZCBpbml0aWFsaXplIC52Y2cgUlRMIGR1bXAKCWFmdGVyIHJ1bm5pbmcgdGhlIHBhc3MuICBSZXNldCBsYXN0X3ZlcmlmaWVkLgoJKiB0cmVlLWR1bXAuYyAoZHVtcF9maWxlcyk6IFJlbnVtYmVyIGNvbnNlY3V0aXZlbHkuICBQdXQgLmNncmFwaCBkdW1wCglhdCB0aGUgYmVnaW5uaW5nLgoJKEZJUlNUX0FVVE9fTlVNQkVSRURfRFVNUCk6IE5ldy4KCShkdW1wX3JlZ2lzdGVyKTogUmVtb3ZlICJudW0iIHBhcmFtZXRlciwgYXNzaWduIGl0IHdpdGhpbiB0aGUKCWZ1bmN0aW9uLgoJKGdldF9kdW1wX2ZpbGVfbmFtZSk6IE1vZGlmeSB0ZW1wbGF0ZSBmb3IgZHVtcHMuCgkqIHRyZWUtZHVtcC5oIChkdW1wX3JlZ2lzdGVyKTogQWRqdXN0IHByb3RvdHlwZS4KCSogdHJlZS1wYXNzLmggKGVudW0gdHJlZV9kdW1wX2luZGV4KTogTW92ZSBjZ3JhcGggYXQgdGhlIGJlZ2lubmluZy4KCShQUk9QX3RyZWVzKTogQWRkIFBST1BfZ2ltcGxlX2xvbXAuCgkoVE9ET19zZXRfcHJvcHMpOiBOZXcuCgkqIGdpbXBsZS1sb3cuYyAocGFzc19sb3dlcl9jZik6IERvIG5vdCBkZXN0cm95IFBST1BfZ2ltcGxlX2xjZi4KCSogdHJlZS1laC5jIChwYXNzX2xvd2VyX2VoKTogRG8gbm90IGRlc3Ryb3kgUFJPUF9naW1wbGVfbGVoLgoJKiBjZmdleHBhbmQuYyAocGFzc19leHBhbmQpOiBEZXN0cm95IFBST1BfdHJlZXMuCgoyMDA2LTAyLTA4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5nY2MgKHNwYXJjLSotbGludXgqKTogQWRkIHNwYXJjL3QtbGludXggdG8gdG1ha2VfZmlsZS4KCShzcGFyYzY0LSotbGludXgqKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zcGFyYy90LWxpbnV4NjQgKFNITElCX01BUEZJTEVTKTogUmVtb3ZlZC4KCSogY29uZmlnL3NwYXJjL3QtbGludXg6IE5ldyBmaWxlLgoJKiBjb25maWcvc3BhcmMvbGliZ2NjLXNwYXJjLWdsaWJjLnZlciAoX19maXh0ZmRpLCBfX2ZpeHVuc3RmZGksCglfX2Zsb2F0ZGl0Zik6IEV4cG9ydCBhdCBHQ0NfTERCTF8zLjAgaWYgLW0zMiAtbWxvbmctZG91YmxlLTEyOC4KCShfX2RpdnRjMywgX19tdWx0YzMsIF9fcG93aXRmMik6IEV4cG9ydCBhdCBHQ0NfTERCTF80LjAuMCBpZgoJLW0zMiAtbWxvbmctZG91YmxlLTEyOC4KCgkqIGNvbmZpZy5nY2MgKGFscGhhKi0qLWxpbnV4Kik6IEFkZCBhbHBoYS90LWxpbnV4IHRvIHRtYWtlX2ZpbGUuCgkqIGNvbmZpZy9hbHBoYS90LWxpbnV4OiBOZXcgZmlsZS4KCSogY29uZmlnL2FscGhhL2xpYmdjYy1hbHBoYS1sZGJsLnZlcjogTmV3IGZpbGUuCgoJKiBjb25maWcvc3BhcmMvbGludXguaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZQoJX19MT05HX0RPVUJMRV8xMjhfXyBpZiBUQVJHRVRfTE9OR19ET1VCTEVfMTI4LgoJKENQUF9TVUJUQVJHRVRfU1BFQyk6IERvbid0IGFkZCAtRF9fTE9OR19ET1VCTEVfMTI4X18gaGVyZS4KCSogY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAoVEFSR0VUX09TX0NQUF9CVUlMVElOUyk6IERlZmluZQoJX19MT05HX0RPVUJMRV8xMjhfXyBpZiBUQVJHRVRfTE9OR19ET1VCTEVfMTI4IGFuZCBUQVJHRVRfQVJDSDMyLgoJKENQUF9BUkNIMzJfU1BFQyk6IFJlbW92ZS4KCjIwMDYtMDItMDcgIFV0dGFtIFBhd2FyICA8dXR0YW1wQHVzLmlibS5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjYxNDUKCSogdHJlZS1zc2EtbG9vcC11bnN3aXRjaC5jICh0cmVlX3Vuc3dpdGNoX3NpbmdsZV9sb29wKTogRnJlZQoJYmJzIHBvaW50ZXIuCgoyMDA2LTAyLTA3ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIHRhcmdldC8yNjEwOQoJKiBwYS5jIChhdHRyX2xlbmd0aF9pbmRpcmVjdF9jYWxsKTogRG9uJ3QgcmV0dXJuIGxlbmd0aCA4IGZvciBkaXN0YW5jZXMKCT49IDI0MDAwMCB3aGVuIGdlbmVyYXRpbmcgY29kZSBmb3IgU09NIHJ1bnRpbWUuCgkob3V0cHV0X2luZGlyZWN0X2NhbGwpOiBEb24ndCB1c2UgImIsbCIgaW5zdHJ1Y3Rpb24gZm9yIGluZGlyZWN0IGNhbGxzCgl0byAkJGR5bmNhbGwgd2hlbiBnZW5lcmF0aW5nIGNvZGUgZm9yIFNPTSBydW50aW1lLi4KCjIwMDYtMDItMDcgIERpcmsgTXVlbGxlciAgPGRtdWVsbGVyQHN1c2UuY29tPgoKCVBSIGMrKy8xODE1MAoJKiBkb2MvaW52b2tlLnRleGkgKC1Xc2VxdWVuY2UtcG9pbnQpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbgoJdGhhdCAtV3NlcXVlbmNlLXBvaW50IGlzIGltcGxlbWVudGVkIGZvciBDKysgYXMgd2VsbC4KCjIwMDYtMDItMDcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWcvc29sMjYuaCAoQ1BQX1NVQlRBUkdFVF9TUEVDKTogQWNjZXB0IC1wdGhyZWFkLgoJKiBjb25maWcvc29sMi5oIChDUFBfU1VCVEFSR0VUX1NQRUMpOiBMaWtld2lzZS4KCShMSUJfU1BFQyk6IExpa2V3aXNlLgoJKiBkb2MvaW52b2tlLnRleGkgKFNQQVJDIG9wdGlvbnMpOiBEb2N1bWVudCAtcHRocmVhZC4KCjIwMDYtMDItMDcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2RlbGVnaXRpbWl6ZV9hZGRyZXNzKTogU3VwcG9ydCBEYXJ3aW4KCVBJQyBhZGRyZXNzZXMuCgoyMDA2LTAyLTA3ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY190eXBlX2NvZGUpOiBEb24ndCBoYW5kbGUgQ0hBUl9UWVBFLgoJQ29ycmVjdCBjb21tZW50IGRlc2NyaWJpbmcgQk9PTEVBTl9UWVBFLgoKMjAwNi0wMi0wNyAgRGlyayBNdWVsbGVyICA8ZG11ZWxsZXJAc3VzZS5jb20+CgoJKiBjLm9wdDogQysrIGZyb250ZW5kIHN1cHBvcnRzIC1XZGl2LWJ5LXplcm8uCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogUmVtb3ZlIGRlYWQgY2FzZS4KCjIwMDYtMDItMDcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBjb25maWd1cmUuYWMgKFRMUyBhc3NlbWJsZXIgY2hlY2spOiBEbyBub3QgZW5hYmxlIFRMUyBieQoJZGVmYXVsdCBvbiBTUEFSQy9Tb2xhcmlzIGJlZm9yZSB2ZXJzaW9uIDEwLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA2LTAyLTA3ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBkb2MvaW52b2tlLnRleGkgKHhsLWNvbXBhdCk6IERvY3VtZW50IGNvbnZlcnNpb24gYW5kIHN1cHBvcnQKCXJvdXRpbmUgbmFtZXMuCgoyMDA2LTAyLTA3ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS12cnAuYyAoZmluZF9jb25kaXRpb25hbF9hc3NlcnRzKTogVXBkYXRlIGNvbW1lbnRzLgoJKHNpbXBsaWZ5X3N0bXRfZm9yX2p1bXBfdGhyZWFkaW5nKTogTmV3LgoJKGlkZW50aWZ5X2p1bXBfdGhyZWFkcywgZmluYWxpemVfanVtcF90aHJlYWRzKTogTmV3LgoJKHZycF9maW5hbGl6ZSk6IENhbGwgaWRlbnRpZnlfanVtcF90aHJlYWRzLgoJKGV4ZWN1dGVfdnJwKTogQ2FsbCBmaW5hbGl6ZV9qdW1wX3RocmVhZHMuCgkqIHRyZWUtc3NhLWRvbS5jIChzdHJ1Y3Qgb3B0X3N0YXRzX2QpOiBSZW1vdmUgbnVtX2l0ZXJhdGlvbnMgZmllbGQuCgkodnJwX2VsZW1lbnQsIHZycF9kYXRhLCB2cnBfZWxlbWVudF9wKTogUmVtb3ZlLgoJKHZycF9oYXNoX2VsdCwgdnJwX3ZhcmlhYmxlc19zdGFjayk6IFJlbW92ZS4KCSh2cnBfaGFzaCwgdnJwX2VxLCByZWNvcmRfcmFuZ2UpOiBSZW1vdmUuCgkoc2ltcGxpZnlfY29uZF9hbmRfbG9va3VwX2F2YWlsX2V4cHIpOiBSZW1vdmUuCgkoZXh0cmFjdF9yYW5nZV9mcm9tX2NvbmQpOiBSZW1vdmUuCgkodGhyZWFkX2Fjcm9zc19lZGdlKTogUmVsb2NhdGVkIGludG8gdHJlZS1zc2EtdGhyZWFkZWRnZS5jLgoJKHNpbXBsaWZ5X3N0bXRfZm9yX2p1bXBfdGhyZWFkaW5nKTogTmV3LgoJKGRvbV90aHJlYWRfYWNyb3NzX2VkZ2UpOiBOZXcgd3JhcHBlci4KCSh0cmVlX3NzYV9kb21pbmF0b3Jfb3B0aW1pemUpOiBObyBsb25nZXIgaW5pdGlhbGl6ZSBvcgoJZmluYWxpemUgYW55IG9mIHRoZSBWUlAgZGF0YXN0cnVjdHVyZXMuICBSZW1vdmUgaXRlcmF0aW9uCglzdGVwIGFuZCBzaW1wbGlmeSBhcyBhIHJlc3VsdCBvZiByZW1vdmFsIG9mIGl0ZXJhdGlvbiBzdGVwLgoJKHBhc3NfZG9taW5hdG9yKTogUGVyZm9ybSBhIGNmZyBjbGVhbnVwIGFmdGVyIERPTS4KCShkb21fb3B0X2ZpbmFsaXplX2Jsb2NrKTogVXNlIHRoZSBuZXcgY29tbW9uIHJvdXRpbmVzCglmb3IgdGhyZWFkaW5nIGp1bXBzLiAgU2ltcGxpZnkgc3RhY2sgbWFuYWdlbWVudCBzbGlnaHRseS4KCU5vIGxvbmdlciBuZWVkIHRvIHVud2luZCBWUlAgc3RhdGUuCgkocmVjb3JkX2VxdWl2YWxlbmNlc19mcm9tX2luY29taW5nX2VkZ2UpOiBObyBsb25nZXIgcmVjb3JkCglWUlAgaW5mb3JtYXRpb24uCgkoZWxpbWluYXRlX3JlZHVuZGFudF9jb21wdXRhdGlvbnMpOiBObyBsb25nZXIgY2FsbAoJc2ltcGxpZnlfY29uZF9hbmRfbG9va3VwX2F2YWlsX2V4cHIuCgkqIHRyZWUtZmxvdy5oIChwb3RlbnRpYWxseV90aHJlYWRhYmxlX2Jsb2NrKTogUHJvdG90eXBlLgoJKHRocmVhZF9hY3Jvc3NfZWRnZSk6IExpa2V3aXNlLgoJKiBNYWtlZmlsZS5pbiAoT0JKUy1jb21tb24pOiBBZGQgdHJlZS1zc2EtdGhyZWFkZWRnZS5vCgkodHJlZS1zc2EtdGhyZWFkZWRnZS5vKTogQWRkIGRlcGVuZGVuY2llcy4KCSogdHJlZS1zc2EtdGhyZWFkZWRnZS5jOiBOZXcgZmlsZS4KCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IE1lcmdlIFBISXMgYmVmb3JlCgljYWxsaW5nIFZSUC4gIFJ1biBWUlAgYWdhaW4gbGF0ZSBpbiB0aGUgU1NBIG9wdGltaXphdGlvbiBwaXBlbGluZS4KCjIwMDYtMDItMDcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiBkZi1jb3JlLmMgKGRmX3NldF9ibG9ja3MpOiBEbyBub3QgZGVyZWZlcmVuY2UgZnVuY3Rpb24gcG9pbnRlcnMuCgkoZGZfZmluaXNoMSk6IExpa2V3aXNlLgoJKGRmX2h5YnJpZF9zZWFyY2hfZm9yd2FyZCk6IExpa2V3aXNlLgoJKGRmX2h5YnJpZF9zZWFyY2hfYmFja3dhcmQpOiBMaWtld2lzZS4KCShkZl9pdGVyYXRpdmVfZGF0YWZsb3cpOiBMaWtld2lzZS4KCShkZl9hbmFseXplX3Byb2JsZW0pOiBMaWtld2lzZS4KCShkZl9jb21wYWN0X2Jsb2Nrcyk6IExpa2V3aXNlLgoJKGRmX2R1bXApOiBMaWtld2lzZS4KCSogZGYtc2Nhbi5jIChkZl9yZXNjYW5fYmxvY2tzKTogTGlrZXdpc2UuCgkoZGZfcmVjb3JkX2VudHJ5X2Jsb2NrX2RlZnMpOiBMaWtld2lzZS4KCgkqIGdlbmNvbmRpdGlvbnMuYyAod3JpdGVfY29uZGl0aW9ucyk6IEd1YXJkIHRoZSBkZWZpbml0aW9uIG9mCgknaW5zbl9jb25kaXRpb25zJyB3aXRoIHRoZSBjaGVjayBvbiBHQ0MgdmVyc2lvbi4KCSh3cml0ZV93cml0ZXIpOiBHdWFyZCB0aGUgdHJhdmVyc2FsICdpbnNuX2NvbmRpdGlvbnMnIHdpdGgKCXRoZSBjaGVjayBvbiBHQ0MgdmVyc2lvbi4KCjIwMDYtMDItMDcgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBjKysvMjYxNDAKCVJldmVydAoJMjAwNi0wMS0zMCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoJUFIgYysrLzIzMzcyCgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X3RhcmdldF9leHByKTogSGFuZGxlIGVhc3kgY2FzZXMKCXdpdGhvdXQgY3JlYXRpbmcgYSB0ZW1wb3JhcnkuCgoyMDA2LTAyLTA3ICBQZXRlIFN0ZWlubWV0eiAgPHN0ZWlubXR6QHVzLmlibS5jb20+CgoJKiBzY2hlZC1yZ24uYyAoY29tcHV0ZV9kb21fcHJvYl9wcywgY29tcHV0ZV90cmdfaW5mbyk6IEVyYWRpY2F0ZQoJdXNlIG9mIGZsb2F0IGluIHByb2JhYmlsaXR5IGNvbXB1dGF0aW9ucy4gIFVzZSBlZGdlIHByb2JhYmlsaXRpZXMKCWluIHBsYWNlIG9mIHN0YXRpY2FsbHkgY29tcHV0ZWQgcHJvYmFiaWxpdGllcy4KCShtaW5fc3BlY19wcm9iKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShzY2hlZHVsZV9pbnNucyk6IEluaXRpYWxpemUgaXQuCgkoR0VUX1NSQ19QUk9CKTogUmVtb3ZlZC4KCSogZG9jL2ludm9rZS50ZXhpIChtaW4tc2NoZWQtcHJvYik6IFJlbmFtZWQgdG8gbWluLXNwZWMtcHJvYi4KCjIwMDYtMDItMDcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIGRlYnVnLzI0NDQ0CgkqIGNvbmZpZy9pYTY0L3Vud2luZC1pYTY0LmM6IFJldmVydCBsYXN0IGNoYW5nZS4KCSogY29uZmlnL2lhNjQvaWE2NC5oIChBUkdfUE9JTlRFUl9DRkFfT0ZGU0VUKTogUmVtb3ZlZC4KCShJTkNPTUlOR19GUkFNRV9TUF9PRkZTRVQpOiBEZWZpbmUuCgoyMDA2LTAyLTA2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9pYTY0L2lhNjQuYyAoaGZhX2VsZW1lbnRfbW9kZSk6IERvbid0IGhhbmRsZSBDSEFSX1RZUEUuCgoyMDA2LTAyLTA3ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9zY2FsYXJfbW9kZV9zdXBwb3J0ZWRfcCk6IE5ldy4KCShUQVJHRVRfU0NBTEFSX01PREVfU1VQUE9SVEVEX1ApOiBEZWZpbmUgaG9vay4KCShjbGFzc2lmeV9hcmd1bWVudCk6IEhhbmRsZSBTRG1vZGUsIEREbW9kZSwgVERtb2RlIGZvciA2NC1iaXQuCgkoaXg4Nl9yZXR1cm5faW5fbWVtb3J5KTogSGFuZGxlIFREbW9kZS4KCShpeDg2X2xpYmNhbGxfdmFsdWUpOiBIYW5kbGUgU0Rtb2RlLCBERG1vZGUsIFREbW9kZS4KCShpeDg2X3ZhbHVlX3JlZ25vKTogUmV0dXJuIG5vbi1URG1vZGUgZGVjaW1hbCBmbG9hdCBtb2RlcyBpbiAlZWF4LgoKMjAwNi0wMi0wNiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiByZW9yZy5jIChkYnJfc2NoZWR1bGUpOiBVc2UgZHVtcF9maWxlIGluc3RlYWQgb2YgZmlsZS4KCjIwMDYtMDItMDYgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCVBSIHRhcmdldC8yNTkxNwoJKiBjb25maWcvaWE2NC9wcmVkaWNhdGVzLm1kIChleHRyX2xlbl9vcGVyYW5kKTogTmV3IHByZWRpY2F0ZS4KCSogY29uZmlnL2lhNjQvaWE2NC5tZCAoZXh0dik6IFRpZ2h0ZW4gY29uc3RyYWludHMuCgkoZXh0enYpOiBEaXR0by4KCSgqdGJpdF9hbmRfMik6IERpdHRvLgoJKCp0Yml0X2FuZF8zKTogRGl0dG8uCgkoKnRiaXRfb3JfMik6IERpdHRvLgoJKCp0Yml0X29yXzMpOiBEaXR0by4KCSgqYml0X3plcm8pOiBEaXR0by4KCSgqYml0X29uZSk6IERpdHRvLgoKMjAwNi0wMi0wNiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdGFyZ2V0LzIzMzU5CgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHRyYXApOiBVc2UgQVNNX1NIT1JUIGluc3RlYWQgb2YgLndvcmQuCgoyMDA2LTAyLTA2ICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiB0cmVlLXZycC5jIChleGVjdXRlX3ZycCk6IERvIG5vdCBwYXNzIGR1bXAgYXJndW1lbnQgdG8uCglsb29wX29wdGltaXplcl9pbml0IGFuZCBsb29wX29wdGltaXplcl9maW5hbGl6ZQoJKiB0cmVlLXNzYS1zaW5rLmMgKGV4ZWN1dGVfc2lua19jb2RlKTogRGl0dG8uCgkqIHRyZWUtc3NhLWxvb3AtY2guYyAoY29weV9sb29wX2hlYWRlcnMpOiBEaXR0by4KCSogdHJlZS1zc2EtbG9vcC5jICh0cmVlX2xvb3Bfb3B0aW1pemVyX2luaXQsIHRyZWVfc3NhX2xvb3BfaW5pdCwKCXRyZWVfc3NhX2xvb3BfZG9uZSk6IERpdHRvLgoJKiB0cmVlLXNzYS1wcmUuYyAoaW5pdF9wcmUsIGZpbmlfcHJlKTogRGl0dG8uCgkqIHNjaGVkLWViYi5jOiBJbmNsdWRlIG91dHB1dC5oLgoJKHNjaGVkdWxlX2ViYnMpOiBEbyBub3QgdXNlIGR1bXAgYXJndW1lbnQuCgkqIHZhbHVlLXByb2YuaCAoc3RydWN0IHByb2ZpbGVfaG9va3MpOiBSZW1vdmUgcHJvZmlsZV9kdW1wX2ZpbGUuCgkqIGxvb3AuYyAobG9vcF9kdW1wX3N0cmVhbSk6IFJlbW92ZWQuCgkobG9vcF9vcHRpbWl6ZSwgcmVzdF9vZl9oYW5kbGVfbG9vcF9vcHRpbWl6ZSk6IERvIG5vdCB1c2UgZHVtcAoJYXJndW1lbnQuCgkoc2Nhbl9sb29wLCBtb3ZlX21vdmFibGVzLCBmaW5kX2FuZF92ZXJpZnlfbG9vcHMsIG1hcmtfbG9vcF9qdW1wLAoJZW1pdF9wcmVmZXRjaF9pbnN0cnVjdGlvbnMsIGxvb3BfYml2c19maW5kLCBsb29wX2JpdnNfY2hlY2ssCglmaW5hbF9iaXZfdmFsdWUsIGxvb3BfYml2X2VsaW1pbmFibGVfcCwgbG9vcF9naXZzX3Jlc2NhbiwKCWxvb3BfaXRlcmF0aW9ucywgc3RyZW5ndGhfcmVkdWNlLCByZWNvcmRfYml2LCByZWNvcmRfZ2l2LAoJZmluYWxfZ2l2X3ZhbHVlLCBjaGVja19maW5hbF92YWx1ZSwgY2hlY2tfZXh0X2RlcGVuZGVudF9naXZzLAoJY29tYmluZV9naXZzLCBjaGVja19kYnJhX2xvb3AsIG1heWJlX2VsaW1pbmF0ZV9iaXYsIGxvYWRfbWVtcywKCXRyeV9jb3B5X3Byb3AsIGxvb3BfZGVsZXRlX2luc25zLCB0cnlfc3dhcF9jb3B5X3Byb3ApOiBVc2UKCWR1bXBfZmlsZSBpbnN0ZWFkIG9mIGxvb3BfZHVtcF9zdHJlYW0uCgkqIGRkZy5jIChwcmludF9kZGdfZWRnZSwgcHJpbnRfZGRnLCB2Y2dfcHJpbnRfZGRnKTogRG8gbm90IGNhbGwKCWFyZ3VtZW50IGR1bXBfZmlsZS4KCSogcmVvcmcuYyAoZGJyX3NjaGVkdWxlLCByZXN0X29mX2hhbmRsZV9kZWxheV9zbG90cyk6IERvIG5vdCB1c2UKCWR1bXAgYXJndW1lbnQuCgkqIGZsb3cuYyAobGlmZV9hbmFseXNpcywgcmVzdF9vZl9oYW5kbGVfbGlmZSk6IERpdHRvLgoJKiBoYWlmYS1zY2hlZC5jOiBJbmNsdWRlIG91dHB1dC5oCgkoc2NoZWR1bGVfaW5zbnMsIHNjaGVkX2luaXQpOiBEbyBub3QgdXNlIGR1bXAgYXJndW1lbnQuCgkqIG1vZGUtc3dpdGNoaW5nLmMgKG9wdGltaXplX21vZGVfc3dpdGNoaW5nKTogRGl0dG8uCgkqIG1vZHVsby1zY2hlZC5jIChzdGF0c19maWxlKTogUmVtb3ZlZC4KCShwcmludF9ub2RlX3NjaGVkX3BhcmFtcyk6IERvIG5vdCBjYWxsIGFyZ3VtZW50IGR1bXBfZmlsZS4KCShzbXNfc2NoZWR1bGVfYnlfb3JkZXIsIGxvb3BfY2Fub25fcCwgc21zX3NjaGVkdWxlLAoJcmVzdF9vZl9oYW5kbGVfc21zKTogRG8gbm90IHVzZSBkdW1wIGFyZ3VtZW50LiAgVXNlIGR1bXBfZmlsZSBpbnN0ZWFkCglvZiBzdGF0c19maWxlLgoJKiBjc2UuYyAoY3NlX21haW4sIHJlc3Rfb2ZfaGFuZGxlX2NzZSwgcmVzdF9vZl9oYW5kbGVfY3NlMik6IERvIG5vdAoJdXNlIGR1bXAgYXJndW1lbnQuCgkqIGxvb3AtaW5pdC5jIChsb29wX29wdGltaXplcl9pbml0LCBsb29wX29wdGltaXplcl9maW5hbGl6ZSwKCXJ0bF9sb29wX2luaXQsIHJ0bF9sb29wX2RvbmUpOiBEaXR0by4KCSogZ2xvYmFsLmMgKGdsb2JhbF9hbGxvYywgcmVzdF9vZl9oYW5kbGVfZ2xvYmFsX2FsbG9jKTogRGl0dG8uCgkqIHByZWRpY3QuYyAoY29tYmluZV9wcmVkaWN0aW9uc19mb3JfYmIsIHRyZWVfZXN0aW1hdGVfcHJvYmFiaWxpdHkpOgoJRGl0dG8uCgkqIHJlY29nLmMgKHBlZXBob2xlMl9vcHRpbWl6ZSwgcmVzdF9vZl9oYW5kbGVfcGVlcGhvbGUyKTogRGl0dG8uCgkqIGxjbS5jIChwcmVfZWRnZV9sY20sIHByZV9lZGdlX3Jldl9sY20pOiBEaXR0by4KCSogcmVnbW92ZS5jIChmaXh1cF9tYXRjaF8xLCBmaXh1cF9tYXRjaF8yLCByZWdtb3ZlX29wdGltaXplLAoJcmVzdF9vZl9oYW5kbGVfcmVnbW92ZSwgcmVzdF9vZl9oYW5kbGVfc3RhY2tfYWRqdXN0bWVudHMpOiBEaXR0by4KCSogZW1pdC1ydGwuYyAocmVudW1iZXJfaW5zbnMpOiBEaXR0by4KCSogY2ZnZXhwYW5kLmMgKGFkZF9yZWdfYnJfcHJvYl9ub3RlLCBleHBhbmRfZ2ltcGxlX2NvbmRfZXhwciwKCWV4cGFuZF9naW1wbGVfYmFzaWNfYmxvY2ssIHRyZWVfZXhwYW5kX2NmZyk6IERpdHRvLgoJKiByZWdjbGFzcy5jIChyZWdjbGFzcyk6IERpdHRvLgoJKiB0cmVlLW91dG9mLXNzYS5jIChhbmFseXplX2VkZ2VzX2Zvcl9iYiwgcGVyZm9ybV9lZGdlX2luc2VydHMsCglyZW1vdmVfc3NhX2Zvcm0sIHJld3JpdGVfb3V0X29mX3NzYSk6IERpdHRvLgoJKiByZWctc3RhY2suYyAoY29tcGVuc2F0ZV9lZGdlLCBjb21wZW5zYXRlX2VkZ2VzLCBjb252ZXJ0X3JlZ3NfMSwKCWNvbnZlcnRfcmVnc18yLCBjb252ZXJ0X3JlZ3MsIHJlZ190b19zdGFjaywgcmVzdF9vZl9oYW5kbGVfc3RhY2tfcmVncyk6CglEaXR0by4KCSogc2NoZWQtcmduLmMgKHNjaGVkdWxlX2luc25zLCByZXN0X29mX2hhbmRsZV9zY2hlZCk6IERpdHRvLgoJKiBsb2NhbC1hbGxvYy5jIChyZXN0X29mX2hhbmRsZV9sb2NhbF9hbGxvYyk6IERvIG5vdCBwYXNzIGR1bXBfZmlsZQoJdG8gcmVnY2xhc3MuCgkqIGdjc2UuYyAoZ2NzZV9maWxlLCBkZWJ1Z19zdGRlcnIpOiBSZW1vdmVkLgoJKGdjc2VfbWFpbiwgYnlwYXNzX2p1bXBzLCByZXN0X29mX2hhbmRsZV9qdW1wX2J5cGFzcywKCXJlc3Rfb2ZfaGFuZGxlX2djc2UpOiBEbyBub3QgdXNlIGR1bXAgYXJndW1lbnQuCgkoY3Byb3BfanVtcCwgY3Byb3BfaW5zbiwgZG9fbG9jYWxfY3Byb3AsIGNwcm9wLCBmaW5kX2ltcGxpY2l0X3NldHMsCglvbmVfY3Byb3BfcGFzcywgYnlwYXNzX2Jsb2NrLCBjb21wdXRlX3ByZV9kYXRhLCBpbnNlcnRfaW5zbl9lbmRfYmIsCglwcmVfZWRnZV9pbnNlcnQsIHByZV9pbnNlcnRfY29weV9pbnNuLCBwcmVfZGVsZXRlLCBvbmVfcHJlX2djc2VfcGFzcywKCWNvbXB1dGVfY29kZV9ob2lzdF92YmVpbm91dCwgY29tcHV0ZV9jb2RlX2hvaXN0X2RhdGEsCglvbmVfY29kZV9ob2lzdGluZ19wYXNzLCB0cmltX2xkX21vdGlvbl9tZW1zLCB1cGRhdGVfbGRfbW90aW9uX3N0b3JlcywKCWNvbXB1dGVfc3RvcmVfdGFibGUsIGJ1aWxkX3N0b3JlX3ZlY3RvcnMsIGluc2VydF9pbnNuX3N0YXJ0X2JiLAoJaW5zZXJ0X3N0b3JlLCByZW1vdmVfcmVhY2hhYmxlX2VxdWl2X25vdGVzLCByZXBsYWNlX3N0b3JlX2luc24sCglzdG9yZV9tb3Rpb24pOiBVc2UgZHVtcF9maWxlIGluc3RlYWQgb2YgZ2NzZV9maWxlLgoJKiBpcGEtdHlwZS1lc2NhcGUuYyAodHlwZV9lc2NhcGVfZXhlY3V0ZSk6IFJlbW92ZSBkZWJ1Z2dpbmcgY29tbWVudHMuCgkqIHByb2ZpbGUuYyAocHJvZmlsZV9kdW1wX2ZpbGUpOiBSZW1vdmVkLgoJKGJyYW5jaF9wcm9iKTogVXNlIGR1bXBfZmlsZSBpbnN0ZWFkIG9mIHByb2ZpbGVfZHVtcF9maWxlLgoJKiBpcGEuYyAoY2dyYXBoX3JlbW92ZV91bnJlYWNoYWJsZV9ub2Rlcyk6IERvIG5vdCBjYWxsIGFyZ3VtZW50CglkdW1wX2ZpbGUuCgkqIHRyZWUtc3NhLWNvcHkuYyAoZHVtcF9jb3B5X29mKTogRGl0dG8uCgkqIHJ0bC1mYWN0b3JpbmcuYyAocnRsX3NlcWFic3RyLCByZXN0X29mX3J0bF9zZXFhYnN0cik6IERvIG5vdCBwYXNzCglkdW1wIGZpbGUgdG8gbGlmZV9hbmFseXNpcy4KCSogYnQtbG9hZC5jIChicmFuY2hfdGFyZ2V0X2xvYWRfb3B0aW1pemUpOiBEaXR0by4KCSogY2ZnY2xlYW51cC5jIChyZXN0X29mX2hhbmRsZV9qdW1wMik6IERvIG5vdCBwYXNzIGR1bXBfZmlsZSB0bwoJcmVudW1iZXJfaW5zbnMuCgkqIHJ0bC5oIChjc2VfbWFpbiwgcmVudW1iZXJfaW5zbnMsIHNjaGVkdWxlX2luc25zLCBzY2hlZHVsZV9lYmJzLAoJcmVnY2xhc3MsIGRicl9zY2hlZHVsZSk6IERlY2xhcmF0aW9uIGNoYW5nZWQuCgkqIHNjaGVkLWludC5oIChzY2hlZF9pbml0KTogRGVjbGFyYXRpb24gY2hhbmdlZC4KCSogdHJlZS1wcm9maWxlLmMgKHRyZWVfcHJvZmlsZV9kdW1wX2ZpbGUpOiBSZW1vdmVkLgoJKHRyZWVfcHJvZmlsZV9ob29rcyk6IFJlbW92ZWQgcHJvZmlsZV9kdW1wX2ZpbGUgaG9vay4KCSogcnRsLXByb2ZpbGUgKHJ0bF9wcm9maWxlX2R1bXBfZmlsZSk6IFJlbW92ZWQuCgkocnRsX3Byb2ZpbGVfaG9va3MpOiBlbW92ZWQgcHJvZmlsZV9kdW1wX2ZpbGUgaG9vay4KCSogY2ZnbG9vcC5oIChsb29wX29wdGltaXplcl9pbml0LCBsb29wX29wdGltaXplcl9maW5hbGl6ZSk6IERlY2xhcmF0aW9uCgljaGFuZ2VkLgoJKiBjLWdpbXBsaWZ5LmMgKGNfZ2VuZXJpY2l6ZSk6IERvIG5vdCBjYWxsIGxvY2FsIHZhcmlhYmxlIGR1bXBfZmlsZS4KCSogdHJlZS1jZmcuYyAoYnVpbGRfdHJlZV9jZmcpOiBEaXR0by4KCSogTWFrZWZpbGUuaW4gKGhhaWZhLXNjaGVkLm8sIHNjaGVkLWViYi5vKTogQWRkIG91dHB1dC5oIGRlcGVuZGVuY3kuCgkqIGJhc2ljLWJsb2NrLmggKGxpZmVfYW5hbHlzaXMsIHByZV9lZGdlX2xjbSwgcHJlX2VkZ2VfcmV2X2xjbSk6CglEZWNsYXJhdGlvbiBjaGFuZ2VkLgoJKiBjb25maWcvc2gvc2guYyAoc2hfb3V0cHV0X21pX3RodW5rKTogRG8gbm90IHBhc3MgZHVtcF9maWxlIHRvCglsaWZlX2FuYWx5c2lzIGFuZCBzY2hlZHVsZV9pbnNucy4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChtNjhoYzExX3Jlb3JnKTogRG8gbm90IHBhc3MgZHVtcF9maWxlIHRvCglsaWZlX2FuYWx5c2lzLgoJKiBjb25maWcvbXQvbXQuYyAobXRfbWFjaGluZV9yZW9yZyk6IERvIG5vdCBwYXNzIGR1bXBfZmlsZSB0bwoJZGJyX3NjaGVkdWxlLgoJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfcmVvcmcpOiBEaXR0by4KCSogY29uZmlnL2lhNjQvaWE2NC5jIChpYTY0X3Jlb3JnKTogRG8gbm90IHBhc3MgZHVtcF9maWxlIHRvCglzY2hlZHVsZV9lYmJzLgoKMjAwNi0wMi0wNiAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChUQVJHRVRfTUFOR0xFX0ZVTkRBTUVOVEFMX1RZUEUpOiBEZWZpbmUuCgkoczM5MF9tYW5nbGVfZnVuZGFtZW50YWxfdHlwZSk6IE5ldy4KCSogY29uZmlnL3MzOTAvbGludXguaCAoVEFSR0VUX0FMVEVSTkFURV9MT05HX0RPVUJMRV9NQU5HTElORyk6CglEZWZpbmUuCgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoVEFSR0VUX01BTkdMRV9GVU5EQU1FTlRBTF9UWVBFKTogRGVmaW5lLgoJKGFscGhhX21hbmdsZV9mdW5kYW1lbnRhbF90eXBlKTogTmV3LgoJKiBjb25maWcvYWxwaGEvbGludXguaCAoVEFSR0VUX0FMVEVSTkFURV9MT05HX0RPVUJMRV9NQU5HTElORyk6CglEZWZpbmUuCgoJKiBjb25maWcvc3BhcmMvbGludXguaCAoVEFSR0VUX0FMVEVSTkFURV9MT05HX0RPVUJMRV9NQU5HTElORyk6CglEZWZpbmUuCgkqIGNvbmZpZy9zcGFyYy9saW51eDY0LmggKFRBUkdFVF9BTFRFUk5BVEVfTE9OR19ET1VCTEVfTUFOR0xJTkcpOgoJRGVmaW5lLgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYyAoVEFSR0VUX01BTkdMRV9GVU5EQU1FTlRBTF9UWVBFKTogRGVmaW5lLgoJKHNwYXJjX21hbmdsZV9mdW5kYW1lbnRhbF90eXBlKTogTmV3LgoKMjAwNi0wMi0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcuZ2NjIChzMzkwLSotbGludXgqKTogQWRkIHMzOTAvdC1saW51eCB0byB0bWFrZV9maWxlLgoJKHMzOTB4LSotbGludXgqKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9zMzkwL3QtbGludXg2NCAoU0hMSUJfTUFQRklMRVMpOiBSZW1vdmVkLgoJKiBjb25maWcvczM5MC90LWxpbnV4OiBOZXcgZmlsZS4KCjIwMDYtMDItMDIgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBjb25maWcvaTM4Ni9zeW5jLm1kIChzeW5jX2FkZDxtb2RlPiwgc3luY19zdWI8bW9kZT4sIHN5bmNfaW9yPG1vZGU+LAoJc3luY19hbmQ8bW9kZT4sIHN5bmNfeG9yPG1vZGU+KTogT3BlcmFuZCAwIGlzIGluLW91dC4KCjIwMDYtMDItMDYgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2EtcHJlLmMgKGJiX3ZhbHVlX3NldHNfdCk6IEFkZCBhbnRpY19zYWZlX2xvYWRzLgoJKEFOVElDX1NBRkVfTE9BRFMpOiBOZXcgbWFjcm8uCgkoZmluZF9vcl9nZW5lcmF0ZV9leHByZXNzaW9uKTogQWRkIHByb3RvdHlwZS4KCShzZXRfY29udGFpbnNfdmFsdWUpOiBBbGxvdyBudWxsIHNldCBmb3Igc2FrZSBvZiBub3QgYWx3YXlzIGhhdmluZwoJdG8gYWxsb2NhdGUgQU5USUNfU0FGRV9MT0FEUy4KCShwaGlfdHJhbnNsYXRlKTogTW92ZSBwbGFjZW1lbnQgb2YgQUdHUkVHQVRFX1RZUEVfUCBjaGVjay4KCUFsbG93IENPTVBPTkVOVF9SRUYgdG9vLgoJKHZhbGlkX2luX3NldCk6IEFsbG93IENPTVBPTkVOVF9SRUYuCglDaGVjayBBTlRJQ19TQUZFX0xPQURTIHRvby4KCShjb21wdXRlX2FudGljX2F1eCk6IFByaW50IG91dCBBTlRJQ19TQUZFX0xPQURTLgoJKGNvbXB1dGVfcnZ1c2VfYW5kX2FudGljX3NhZmUpOiBBZGQgQU5USUNfU0FGRSBjb21wdXRhdGlvbiwgYW5kCglyZW5hbWUuCgkoY2FuX1BSRV9vcGVyYXRpb24pOiBBZGQgQ09NUE9ORU5UX1JFRi4KCShjcmVhdGVfY29tcG9uZW50X3JlZl9ieV9waWVjZXMpOiBOZXcgZnVuY3Rpb24uCgkoY3JlYXRlX2V4cHJlc3Npb25fYnlfcGllY2VzKTogVXNlIGNyZWF0ZV9jb21wb25lbnRfcmVmX2J5X3BpZWNlcy4KCShpbnNlcnRfYXV4KTogTW92ZSBBR0dSRUdBVEVfVFlQRV9QIGNoZWNrIGhlcmUuCgkoY29tcHV0ZV9hdmFpbCk6IFNldCBiYiBsb2NhbCBzdG10IHVpZHMuCgkocGFzc19wcmUpOiBVc2UgVE9ET191cGRhdGVfc3NhX29ubHlfdmlydHVhbHMuCgoyMDA2LTAyLTA2ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogVW5jb25kaXRpb25hbGx5IGRpc2FibGUgZGVjaW1hbCBmbG9hdCBieSBkZWZhdWx0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA2LTAyLTA2ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIHJlYWQtcnRsLmMgKHJlYWRfbmFtZSk6IFRlcm1pbmF0ZSByZWFkaW5nIG9uIEVPRi4KCjIwMDYtMDItMDYgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogZGZwLmMgKGRlY2ltYWxfcmVhbF9hcml0aG1ldGljKTogQ2hhbmdlIHNlY29uZCBhcmd1bWVudCB0eXBlCglmcm9tIGludCB0byBlbnVtIHRyZWVfY29kZS4gRG8gbm90IGFsd2F5cyByZXR1cm4gdHJ1ZSwgYnV0IG5vdwoJcmV0dXJuIHJlc3VsdCBvZiBhbnkgY2FsbCB0byBkZWNpbWFsX2RvIGhlbHBlciBmdW5jdGlvbnMuCgkqIGRmcC5oIChkZWNpbWFsX3JlYWxfYXJpdGhtZXRpYyk6IFVwZGF0ZSBwcm90b3R5cGUuCgoyMDA2LTAyLTA1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCSogY29uZmlnL3NwYXJjL3NvbDItYmkuaCAoU1BBUkNfREVGQVVMVF9DTU9ERUwpOiBTZXQgdG8gQ01fTUVETUlELgoKMjAwNi0wMi0wNSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdHJlZS1vcHQvMjUyNTEKCSogdHJlZS1jZmcuYyAoY2xlYW51cF9kZWFkX2xhYmVscyk6IEFsc28gZG9uJ3QgcmVtb3ZlCglmb3JjZWQgbGFiZWxzLgoKMjAwNi0wMi0wNCAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS12cnAuYyAoY2ZnX2xvb3BzKTogUmVtb3ZlZC4KCShhZGp1c3RfcmFuZ2Vfd2l0aF9zY2V2LCB2cnBfdmlzaXRfYXNzaWdubWVudCwgZXhlY3V0ZV92cnApOgoJVXNlIGN1cnJlbnRfbG9vcHMgaW5zdGVhZCBvZiBjZmdfbG9vcHMuICBQYXNzIGZsYWdzIHRvCglsb29wX29wdGltaXplcl9pbml0LgoJKiBjZmdsb29wbWFuaXAuYyAoZml4X2xvb3Bfc3RydWN0dXJlKTogVXBkYXRlIG9ubHkgYXZhaWxhYmxlCglpbmZvcm1hdGlvbi4KCSogdHJlZS1zc2EtbG9vcC1jaC5jIChjb3B5X2xvb3BfaGVhZGVycyk6IFBhc3MgZmxhZ3MgdG8KCWxvb3Bfb3B0aW1pemVyX2luaXQuCgkqIG1vZHVsby1zY2hlZC5jIChidWlsZF9sb29wc19zdHJ1Y3R1cmUpOiBSZW1vdmVkLgoJKHNtc19zY2hlZHVsZSk6IFVzZSBsb29wX29wdGltaXplcl9pbml0LgoJKiBsb29wLWluaXQuYyAobG9vcF9vcHRpbWl6ZXJfaW5pdCk6IFVzZSBmbGFncyB0byBkZXRlcm1pbmUKCXdoaWNoIHByb3BlcnRpZXMgb2YgbG9vcHMgdG8gcHJlcGFyZS4KCShydGxfbG9vcF9pbml0KTogUGFzcyBmbGFncyB0byBsb29wX29wdGltaXplcl9pbml0LgoJKiB0cmVlLXNzYS1zaW5rLmMgKGV4ZWN1dGVfc2lua19jb2RlKTogRGl0dG8uCgkqIHRyZWUtc3NhLWxvb3AuYyAodHJlZV9sb29wX29wdGltaXplcl9pbml0KTogRGl0dG8uCgkqIHRyZWUtc3NhLXByZS5jIChpbml0X3ByZSk6IERpdHRvLgoJKiBjZmdsb29wLmggKExPT1BTX05PUk1BTCk6IE5ldy4KCShsb29wX29wdGltaXplcl9pbml0KTogRGVjbGFyYXRpb24gY2hhbmdlZC4KCjIwMDYtMDItMDUgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBwYS94LWFkYS1ocHV4MTAsIHBhL3QtcGEtaHB1eDEwLCBwYS90LXBhLWhwdXgxMTogTmV3IGZpbGVzLgoJKiBjb25maWcuZ2NjIChocHBhWzEyXSotKi1ocHV4MTAqKTogVXNlIHBhL3QtcGEtaHB1eDEwIGluc3RlYWQgb2YKCXBhL3QtcGEuCgkqIGNvbmZpZy5nY2MgKGhwcGFbMTJdKi0qLWhwdXgxMSopOiBVc2UgcGEvdC1wYS1ocHV4MTEgaW5zdGVhZCBvZgoJcGEvdC1wYS4KCSogY29uZmlnLmhvc3QgKGhwcGEqLSotaHB1eDEwKik6IFVzZSBwYS94LWFkYS1ocHV4MTAgaW5zdGVhZCBvZgoJcGEveC1hZGEuCgkqIHBhL3QtcGEtaHB1eDogQWRkIGxpYjJmdW5jcy5hc20gYW5kIHF1YWRsaWIuYyBydWxlcy4KCSogcGEvdC1wYTY0OiBEZWxldGUgcXVhZGxpYi5jIHJ1bGUuCgkqIHBhL3gtYWRhOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgkqIHBhL3QtcGE6IFJldmVydCBsYXN0IGNoYW5nZS4gIERlbGV0ZSBxdWFkbGliLmMgcnVsZS4KCjIwMDYtMDItMDQgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI2MDg3CgkqIHJ0bGFuYWwuYyAoY2Fub25pY2FsaXplX2NvbmRpdGlvbik6IERvIG5vdCBjcm9zcyBiYXNpYyBibG9jawoJYm91bmRhcmllcy4KCjIwMDYtMDItMDQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIGRlYnVnLzI0NDQ0CgkqIGNvbmZpZy9pYTY0L2lhNjQuYzogSW5jbHVkZSBkZWJ1Zy5oLgoJKE1BWF9BUlRJRklDSUFMX0xBQkVMX0JZVEVTKTogTmV3LgoJKGlhNjRfbGFiZWxfYWZ0ZXJfaW5zbiwgaWE2NF9kd2FyZjJvdXRfZGVmX3N0ZWFkeV9jZmEpOiBOZXcuCgkoSUE2NF9DSEFOR0VfQ0ZBX0lOX0VQSUxPR1VFKTogRGVmaW5lIHRvIDAuCgkocHJvY2Vzc19lcGlsb2d1ZSwgcHJvY2Vzc19zZXQsIHByb2Nlc3NfZm9yX3Vud2luZF9kaXJlY3RpdmUpOgoJT3V0cHV0IHVud2luZCBpbmZvIG9ubHkgaWYgcmVxdWVzdGVkLiAgQWRkIENGQSBpbmZvIGlmIHJlcXVlc3RlZC4KCUFkZCBuZXcgYXJndW1lbnRzIGFzIG5lZWRlZC4gIEFkanVzdCBjYWxsZXJzLgoJKiBjb25maWcvaWE2NC9pYTY0LmggKEFSR19QT0lOVEVSX0NGQV9PRkZTRVQpOiBPdmVycmlkZQoJaW5jb3JyZWN0IGRlZmF1bHQuCgkoRFdBUkYyX0ZSQU1FX0lORk8pOiBEZWZpbmUgdG8gemVyby4KCSogY29uZmlnL2lhNjQvdW53aW5kLWlhNjQuYzogUmVtb3ZlIGNvZGUgdGhhdCBjb21wZW5zYXRlZCBmb3IKCXRoZSBDRkEgb2Zmc2V0IGVycm9yIGZpeGVkIGFib3ZlLgoJKiBjb25maWcvaWE2NC90LWlhNjQgKGlhNjQubyk6IERlcGVuZCBvbiBkZWJ1Zy5oLgoJKiBkd2FyZjJvdXQuYyAoRFdBUkYyX0ZSQU1FX0lORk8pOiBEZWZpbmUgZGVmYXVsdC4KCShkd2FyZjJvdXRfZG9fZnJhbWUpOiBSZXF1aXJlIG5vbnplcm8gRFdBUkYyX1VOV0lORF9JTkZPIGZvcgoJLWZ1bndpbmQtdGFibGVzIGFuZCAtZmV4Y2VwdGlvbnMgdG8gZW5hYmxlIGZyYW1lIGluZm8uCgkoZHdhcmYyb3V0X2ZyYW1lX2luaXQpOiBEZWZpbmUgaW5pdGlhbCBDRkEgZXZlbiBpZgoJRFdBUkYyX1VOV0lORF9JTkZPIGlzIGRpc2FibGVkLiAgQ2FsbCBpbml0aWFsX3JldHVybl9zYXZlIGlmCglEV0FSRjJfVU5XSU5EX0lORk8gaXMgbm9uemVybywgbm90IGp1c3QgZGVmaW5lZC4KCShkd2FyZjJvdXRfZnJhbWVfZmluaXNoKTogT3V0cHV0IG5vbi1FSCBjYWxsIGZyYW1lIGluZm8gb25seQoJaWYgRFdBUkYyX0ZSQU1FX0lORk8gaXMgbm9uemVyby4KCShjb252ZXJ0X2NmYV90b19sb2NfbGlzdCwKCWNvbXB1dGVfZnJhbWVfcG9pbnRlcl90b19jZmFfZGlzcGxhY2VtZW50KTogRGVmaW5lIGV2ZW4gaWYKCXVud2luZCBpbmZvIGlzIG5vdCBzdXBwb3J0ZWQuCgkoZ2VuX3N1YnByb2dyYW1fZGllKTogVXNlIHRoZSBhYm92ZSB1bmNvbmRpdGlvbmFsbHkuICBSZW1vdmUKCWxlZ2FjeSBhbHRlcm5hdGUgY29kZS4KCSogdG9wbGV2LmMgKGNvbXBpbGVfZmlsZSk6IENvbXBpbGUgaW4gY2FsbCB0bwoJZHdhcmYyb3V0X2ZyYW1lX2ZpbmlzaCBpZiBEV0FSRjJfREVCVUdHSU5HX0lORk8gaXMgZGVmaW5lZC4KCShsYW5nX2RlcGVuZGVudF9pbml0KTogRGl0dG8gZm9yIGR3YXJmMm91dF9mcmFtZV9pbml0LgoKMjAwNi0wMi0wNCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoJICAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX21hbmdsZV9mdW5kYW1lbnRhbF90eXBlKTogTWFuZ2xlCglJQk0gZXh0ZW5kZWQgZmxvYXQgZm9ybWF0IGxvbmcgZG91YmxlIGFzICJnIiBvbiBwb3dlcnBjKi1saW51eC4KCjIwMDYtMDItMDMgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgdGFyZ2V0LzI1OTI2CgkqIHBhL3gtYWRhIChYX0FEQV9DRkxBR1MpOiBEZWZpbmUgX1hfSFBVWDEwIG9uIEhQLVVYIDEwLgoJKiBwYS90LXBhIChUQVJHRVRfTElCR0NDMl9DRkxBR1MpOiBEZWZpbmUgX1RfSFBVWDEwIG9uIEhQLVVYIDEwLgoKMjAwNi0wMi0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI1OTc5CgkqIGdpbXBsaWZ5LmMgKGdpbXBsaWZ5X21vZGlmeV9leHByX3Jocyk6IERpc2FibGUgKiYgb3B0aW1pemF0aW9uIGZvciBub3cuCgoJUFIgbWlkZGxlLWVuZC8yNTk3NwoJKiBnaW1wbGlmeS5jIChnaW1wbGlmeV9tb2RpZnlfZXhwcl9yaHMpOiBJdCdzIG5vdCBhbHdheXMgc2FmZSB0byBkbyBSVk8KCW9uIHRoZSByZXR1cm4gc2xvdCBpZiBpdCdzIGFuIE5SVi4KCjIwMDYtMDItMDMgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGVudW0gdXNlX3R5cGUpOiBSZW1vdmUgVVNFX09VVEVSLgoJKGR1bXBfdXNlLCBhZGRfZGVyaXZlZF9pdnNfY2FuZGlkYXRlcywgZGV0ZXJtaW5lX3VzZV9pdl9jb3N0LAoJcmV3cml0ZV91c2UpOiBEbyBub3QgaGFuZGxlIFVTRV9PVVRFUi4KCShmaW5kX2ludGVyZXN0aW5nX3VzZXNfb3V0ZXJfb3Jfbm9ubGluLCBmaW5kX2ludGVyZXN0aW5nX3VzZXNfb3V0ZXIsCglhZGRfaXZfb3V0ZXJfY2FuZGlkYXRlcywgbWF5X3JlcGxhY2VfZmluYWxfdmFsdWUsCglkZXRlcm1pbmVfdXNlX2l2X2Nvc3Rfb3V0ZXIsIHJld3JpdGVfdXNlX291dGVyKTogUmVtb3ZlZC4KCShmaW5kX2ludGVyZXN0aW5nX3VzZXNfb3ApOiBGdW5jdGlvbmFsaXR5IG9mCglmaW5kX2ludGVyZXN0aW5nX3VzZXNfb3V0ZXJfb3Jfbm9ubGluIG1vdmVkIGhlcmUuCgkoZmluZF9pbnRlcmVzdGluZ191c2VzX291dHNpZGUpOiBVc2UgZmluZF9pbnRlcmVzdGluZ191c2VzX29wLgoKMjAwNi0wMi0wMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiB0YXJnZXQvMjU5NjAKCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4tbGRvdWJsZS5jIChfX2djY19xYWRkKTogUHJlc2VydmUgLTAuMCByZXN1bHQuCgoyMDA2LTAyLTAzICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoJICAgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCglQUiB0YXJnZXQvMjU4NjQKCSogY29uZmlnL3MzOTAvMjA4NC5tZCAoInhfZnNpbXB0ZiIsICJ4X2ZtdWx0ZiIsICJ4X2ZkaXZ0ZiIsCgkieF9mbG9hZHRmIiwgInhfZnRydW5jdGYiLCAieF9mdHJ1bmNkZiIpOiBOZXcgaW5zbiByZXNlcnZhdGlvbnMuCgkqIGNvbmZpZy9zMzkwL2ZpeGRmZGkuaCAoX19maXh1bnN0ZmRpLCBfX2ZpeHRmZGkpOiBOZXcgZnVuY3Rpb25zLgoJKiBjb25maWcvczM5MC9zMzkwLmMgKHN0cnVjdCBwcm9jZXNzb3JfY29zdHMpOiBBZGQgbXhiciwgc3F4YnIsIGR4YnIKCWFuZCBkeHIgZmllbGRzLgoJKHo5MDBfY29zdCwgejk5MF9jb3N0LCB6OV8xMDlfY29zdCk6IFZhbHVlcyBmb3IgdGhlIG5ldyBmaWVsZHMgYWRkZWQuCgkoczM5MF9ydHhfY29zdHMpOiBVc2UgdGhlIG5ldyBmaWVsZHMgdG8gY2FsY3VsYXRlIHJ0eCBjb3N0cy4KCShzMzkwX3NlY29uZGFyeV9pbnB1dF9yZWxvYWRfY2xhc3MsIHMzOTBfc2Vjb25kYXJ5X291dHB1dF9yZWxvYWRfY2xhc3MpOgoJRGVmaW5lIHNlY29uZGFyeSByZWxvYWRzIGZvciBURm1vZGUgbW92ZXMuCgkoY29uc3RhbnRfbW9kZXMpOiBBZGQgVEZtb2RlLgoJKE5SX0NfTU9ERVMpOiBTZXQgdG8gOC4KCSogY29uZmlnL3MzOTAvczM5MC5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IEFkZCBfX0xPTkdfRE9VQkxFXzEyOF9fCglidWlsdGluIGRlZmluZS4KCShMT05HX0RPVUJMRV9UWVBFX1NJWkUpOiBTZXQgdG8gMTI4IG9yIDY0LgoJKExJQkdDQzJfTE9OR19ET1VCTEVfVFlQRV9TSVpFLCBXSURFU1RfSEFSRFdBUkVfRlBfU0laRSk6IERlZmluZS4KCShIQVJEX1JFR05PX05SRUdTLCBIQVJEX1JFR05PX01PREVfT0ssIENMQVNTX01BWF9OUkVHUywKCUNBTk5PVF9DSEFOR0VfTU9ERV9DTEFTUyk6IENvbnNpZGVyIFRGbW9kZS4KCSogY29uZmlnL3MzOTAvczM5MC5tZCAoInR5cGUiIGF0dHJpYnV0ZSk6IEFkZCBmc2ltcHRmLCBmbG9hZHRmLCBmbXVsdGYsCglmZGl2dGYsIGZzcXJ0dGYsIGZ0cnVuY3RmLCBmdHJ1bmNkZiBhcyBwb3NzaWJsZSB2YWx1ZXMuCgkoRlBSIG1vZGUgbWFjcm8pOiBBZGQgVEZtb2RlLgoJKERTRiBtb2RlIG1hY3JvKTogTmV3LgoJKDxkZT4sIDxkZWU+IG1vZGUgYXR0cmlidXRlcyk6IFJlbW92ZWQuCgkoPHhkZT4sIDx4ZGVlPiwgPFJSZT4sIDxSWGU+LCA8UmY+IG1vZGUgYXR0cmlidXRlcyk6IE5ldy4KCSgiKmNtcDxtb2RlPl9jY3NfMCIsICIqY21wPG1vZGU+X2Njc18wX2libSIsICIqY21wPG1vZGU+X2NjcyIsCgkiKmNtcDxtb2RlPl9jY3NfaWJtIiwgImZpeF90cnVuYzxGUFI6bW9kZT48R1BSOm1vZGU+Ml9pZWVlIiwKCSJmbG9hdGRpPG1vZGU+MiIsICJmbG9hdHNpPG1vZGU+Ml9pZWVlIiwgIiphZGQ8bW9kZT4zIiwKCSIqYWRkPG1vZGU+M19jYyIsICIqYWRkPG1vZGU+M19jY29ubHkiLCAiKmFkZDxtb2RlPjNfaWJtIiwKCSIqc3ViPG1vZGU+MyIsICIqc3ViPG1vZGU+M19jYyIsICIqc3ViPG1vZGU+M19jY29ubHkiLAoJIipzdWI8bW9kZT4zX2libSIsICIqbXVsPG1vZGU+M19pYm0iLCAiKmZtYWRkPG1vZGU+IiwgIipmbXN1Yjxtb2RlPiIsCgkiKmRpdjxtb2RlPjMiLCAiKmRpdjxtb2RlPjNfaWJtIiwgIipuZWc8bW9kZT4yX2NjIiwKCSIqbmVnPG1vZGU+Ml9jY29ubHkiLCAiKm5lZzxtb2RlPjIiLCAiKm5lZzxtb2RlPjJfaWJtIiwKCSIqYWJzPG1vZGU+Ml9jYyIsICIqYWJzPG1vZGU+Ml9jY29ubHkiLCAiKmFiczxtb2RlPjIiLAoJIiphYnM8bW9kZT4yX2libSIsICIqbmVnYWJzPG1vZGU+Ml9jYyIsICIqbmVnYWJzPG1vZGU+Ml9jY29ubHkiLAoJIipuZWdhYnM8bW9kZT4yIiwgInNxcnQ8bW9kZT4yIik6CglDaGFuZ2VkIDxkZT4gdG8gPHhkZT4uIFIgY29uc3RyYWludCByZXBsYWNlZCBieSA8UmY+LgoJKCIqbXVsPG1vZGU+MyIpOiBDaGFuZ2VkIDxkZWU+IHRvIDx4ZGVlPi4gUiBjb25zdHJhaW50IHJlcGxhY2VkIGJ5Cgk8UmY+LgoJKCJmaXhfdHJ1bmM8RlBSOm1vZGU+ZGkyIik6ICdGUFI6JyByZW1vdmVkLgoJKCIqZm1hZGQ8bW9kZT4iLCAiKmZtc3ViPG1vZGU+Iik6IEZQUiBtb2RlIHJlcGxhY2VkIGJ5IERTRi4KCSgiKm1vdnRmXzY0IiwgIiptb3Z0Zl8zMSIpOiBOZXcgaW5zbiBkZWZpbml0aW9ucyBmb2xsb3dlZCBieSA1CglzcGxpdHRlcnMuCgkoIm1vdnRmIiwgInJlbG9hZF9vdXR0ZiIsICJyZWxvYWRfaW50ZiIsICJ0cnVuY3RmZGYyIiwgInRydW5jdGZzZjIiLAoJImV4dGVuZGRmdGYyIiwgImV4dGVuZHNmdGYyIik6IE5ldyBleHBhbmRlcnMuCgkoIip0cnVuY3RmZGYyX2llZWUiLCAiKnRydW5jdGZkZjJfaWJtIiwgIip0cnVuY3Rmc2YyX2llZWUiLAoJIip0cnVuY3Rmc2YyX2libSIsICIqZXh0ZW5kZGZ0ZjJfaWVlZSIsICIqZXh0ZW5kZGZ0ZjJfaWJtIiwKCSIqZXh0ZW5kc2Z0ZjJfaWVlZSIsICIqZXh0ZW5kc2Z0ZjJfaWJtIik6IE5ldyBpbnNuIHBhdHRlcm5zLgoJKiBjb25maWcvczM5MC9zMzkwLm9wdCAobWxvbmctZG91YmxlLTEyOCwgbWxvbmctZG91YmxlLTY0KToKCU5ldyBvcHRpb25zLgoJKiBjb25maWcvczM5MC90LWNydHN0dWZmIChUQVJHRVRfTElCR0NDMl9DRkxBR1MpOiBNYWNybyBkZWZpbmVkLgoJKiBjb25maWcvczM5MC9saWJnY2MtZ2xpYmMudmVyIChfX2RpdnRjMywgX19tdWx0YzMsIF9fcG93aXRmMiwKCV9fZml4dGZ0aSwgX19maXh1bnN0ZnRpLCBfX2Zsb2F0dGl0ZiwgX19maXh0ZmRpLCBfX2ZpeHVuc3RmZGksCglfX2Zsb2F0ZGl0Zik6IEFkZCBhIEdDQ180LjEuMCBzeW1ib2wgdmVyc2lvbiB0YWcuCgkqIGRvYy9pbnZva2UudGV4aSAoLW1sb25nLWRvdWJsZS0xMjgsIC1tbG9uZy1kb3VibGUtNjQpOiBEb2N1bWVudAoJdGhlIG5ldyBvcHRpb25zLgoKMjAwNi0wMi0wMiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdGFyZ2V0LzI1Mzc3CgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCk6CglVc2UgdGFyZ2V0bS5iaW5kc19sb2NhbF9wIGluc3RlYWQgb2YgVFJFRV9QVUJMSUMuCgoyMDA2LTAyLTAyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHRyZWUuaCAoVFlQRV9TVFJJTkdfRkxBRyk6IERvY3VtZW50IHRoYXQgdGhpcyBmaWVsZCBtYXkgYmUgdXNlZAoJb24gSU5URUdFUl9UWVBFcyB0byBpbmRpY2F0ZSB0aGF0IGl0IGRlbm90ZXMgYSBjaGFyYWN0ZXIgdHlwZS4KCSogdHJlZS5jIChidWlsZF9jb21tb25fdHJlZV9ub2Rlcyk6IFNldCBUWVBFX1NUUklOR19GTEFHIG9uCglzaWduZWRfY2hhcl90eXBlX25vZGUsIHVuc2lnbmVkX2NoYXJfdHlwZV9ub2RlIGFuZCBjaGFyX3R5cGVfbm9kZS4KCSogZHdhcmYyb3V0LmMgKGJhc2VfdHlwZV9kaWUpOiBUcmVhdCBDSEFSX1RZUEUgaWRlbnRpY2FsbHkgdG8KCUlOVEVHRVJfVFlQRS4gIFVzZSBUWVBFX1NUUklOR19GTEFHIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGVtaXQKCWEgRFdfQVRFX1t1bl1zaWduZWRfY2hhciBpbnN0ZWFkIG9mIGEgRFdfQVRFX1t1bl1zaWduZWQuCgoyMDA2LTAyLTAyICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgkgICAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXRhaWxjYWxsLmMgKGFyZ19uZWVkc19jb3B5X3ApOiBOZXcgZnVuY3Rpb24uCgkoZWxpbWluYXRlX3RhaWxfY2FsbCk6IFVzZSBhcmdfbmVlZHNfY29weV9wLgoJKHRyZWVfb3B0aW1pemVfdGFpbF9jYWxsc18xKTogRGl0dG8uIEFsc28gY2FsbCBhZGRfdmlydHVhbF9waGlzLgoJKGFkZF92aXJ0dWFsX3BoaXMpOiBOZXcgZnVuY3Rpb24uCgoyMDA2LTAyLTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19vdXRwdXRfc2NyYXRjaF9yZWdpc3RlcnMpOiBVc2UKCSNpZ25vcmUgaW5zdGVhZCBvZiAjc2NyYXRjaCBmb3IgJWc3IC5yZWdpc3RlciBkaXJlY3RpdmUuCgoyMDA2LTAyLTAyICBBbmRyZWFzIFRvYmxlciAgPGEudG9ibGVyQHNjaHdlaXouY2g+CgoJKiBjb25maWcvc3BhcmMvZnJlZWJzZC5oIChFTkRGSUxFX1NQRUMpOiBBZGQgc3BhY2UgdG8gc2VwYXJhdGUKCW9iamVjdCBmaWxlcy4KCjIwMDYtMDItMDIgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZC5zY2htaWR0QGFuYWxvZy5jb20+CgoJKiBmbG93LmMgKGNhbGN1bGF0ZV9nbG9iYWxfcmVnc19saXZlKTogQXNzZXJ0IHRoYXQgdGhlcmUgYXJlbid0IGFueQoJRURHRV9GQUtFIGVkZ2VzLgoKMjAwNi0wMi0wMiAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIHRyZWUtZmxvdy1pbmxpbmUuaCAoYnNpX2FmdGVyX2xhYmVscyk6IFJld3JpdGUsIHJldHVybgoJd2hhdCBpdHMgbmFtZSBzYXlzLgoJKiBsYW1iZGEtY29kZS5jIChwZXJmZWN0X25lc3RpZnkpOiBVc2UgYnNpX2luc2VydF9iZWZvcmUgb24KCWJzaV9hZnRlcl9sYWJlbHMgaXRlcmF0b3IuCgkqIHRyZWUtaWYtY29udi5jIChmaW5kX3BoaV9yZXBsYWNlbWVudF9jb25kaXRpb24sCglyZXBsYWNlX3BoaV93aXRoX2NvbmRfbW9kaWZ5X2V4cHIpOiBMaWtld2lzZS4KCSogdHJlZS1zY2FsYXItZXZvbHV0aW9uLmMgKHNjZXZfY29uc3RfcHJvcCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jIChjb21wdXRlX3BoaV9hcmdfb25fZXhpdCk6IExpa2V3aXNlLgoKMjAwNi0wMi0wMiAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLWlubGluZS5jIChjb3B5X3RyZWVfcik6IEFsc28gY29weSBPTVBfQ0xBVVNFIG5vZGVzLgoKMjAwNi0wMi0wMiAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJUFIgMjU5OTAKCSogdHJlZS1jZmcuYyAobW92ZV9ibG9ja190b19mbik6IENsZWFyIG91dCB0aGUgYmFzaWMgYmxvY2sKCWFycmF5IGFmdGVyIGdyb3dpbmcgaXQuCgoyMDA2LTAyLTAxICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCglQUiBtaWRkbGUtZW5kLzI0OTAxCgkqIGZvbGQtY29uc3QuYyAoZm9sZF9jaGVja3N1bV90cmVlKTogQ2hhbmdlIHR5cGUgb2YgYnVmLgoKMjAwNi0wMi0wMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbT4KCgkqIHJlbG9hZC5jIChwdXNoX3NlY29uZGFyeV9yZWxvYWQpOiBJbml0aWFsaXplIHRfaWNvZGUuCgoyMDA2LTAyLTAxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvc3lzdjQuaCAoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBGb3IKCS1tc29mdC1mbG9hdCAtbWxvbmctZG91YmxlLTEyOCBvbmx5IGlzc3VlIGEgd2FybmluZywgYnV0IGRvbid0Cglzd2ljaCB0byBERm1vZGUgbG9uZyBkb3VibGUuCgoyMDA2LTAyLTAxICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGNzZS5jIChmb2xkX3J0eCkgPGNhc2UgUlRYX0NPTU1fQ09NUEFSRSwgUlRYX0NPTVBBUkU+OiBXaGVuIGFyZzEKCWhhcyBhIGNvbnN0YW50IGVxdWl2YWxlbnQsIGl0ZXJhdGUgb3ZlciBlcXVpdmFsZW50cyBmb3IgYXJnMCwKCWNhbGxpbmcgc2ltcGxpZnlfcmVsYXRpb25hbF9vcGVyYXRpb24gYW5kIGlmIHRoZXJlJ3MgYSByZXN1bHQKCWNoZWFwZXIgdGhhbiBYLCBhcHBseSBmb2xkX3J0eCBhbmQgcmV0dXJuIHRoZSByZXN1bHQuCgoyMDA2LTAyLTAxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBvcHRzLmMgKG5vX3VuaXRfYXRfYV90aW1lX2RlZmF1bHQpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKGRlY29kZV9vcHRpb25zKTogVXNlIGl0LgoJKiBvcHRzLmggKG5vX3VuaXRfYXRfYV90aW1lX2RlZmF1bHQpOiBEZWNsYXJlLgoKMjAwNi0wMi0wMSAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZ1bmN0aW9uLmMgKGFzc2lnbl9wYXJtX3NldHVwX3JlZyk6IFVzZSBmdW5jdGlvbiBhcmd1bWVudCBwcm9tb3Rpb24KCXJ1bGVzLgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSk6IFVzZSBmdW5jdGlvbiBhcmd1bWVudCBwcm9tb3Rpb24gcnVsZXMKCWZvciBQQVJNX0RFQ0xzLgoKMjAwNi0wMi0wMSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJKiBnY2MuYyAocHJvY2Vzc19jb21tYW5kKTogQ2hhbmdlIGogdG8gJ3Vuc2lnbmVkIGludCcuCgoyMDA2LTAxLTMxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBtaWRkbGUtZW5kLzI2MDAxCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHJfcmVhbF8xKSA8Y2FzZSBBUlJBWV9SRUY+OgoJVXNlIHRoZSBjb3JyZWN0ZWQgaW5kZXggZm9yIHRoZSBjaGFyYWN0ZXIKCW91dCBvZiB0aGUgc3RyaW5nIGNvbnN0YW50LgoKMjAwNi0wMS0zMSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBtb2RlLXN3aXRjaGluZy5jIChvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZyk6IEZpeCBzaXplCglhbGxvY2F0ZWQgZm9yIGJiX2luZm9bbl9lbnRpdGllc10uCgoyMDA2LTAxLTMxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGdjYy5jIChtYWluKTogQ29ycmVjdCB0eXBlIHRoYXQgaXMgYWxsb2NhdGVkIGZvcgoJZXhwbGljaXRfbGlua19maWxlcy4KCjIwMDYtMDEtMzEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY29uZmlnL3MzOTAvczM5MC5jIChpbml0X2FsaWdubWVudF9jb250ZXh0KTogU2V0CglBTElBU19TRVRfTUVNT1JZX0JBUlJJRVIgb24gdGhlIE1FTS4KCSogY29uZmlnL3NwYXJjL3NwYXJjLmMgKHNwYXJjX2V4cGFuZF9jb21wYXJlX2FuZF9zd2FwXzEyKTogTGlrZXdpc2UuCgoyMDA2LTAxLTMxICBVdHRhbSBQYXdhciAgPHV0dGFtcEB1cy5pYm0uY29tPgoKCVBSIG1pZGRsZS1lbmQvMjU5MzMKCSogbG9vcC11bnJvbGwuYyAodW5yb2xsX2xvb3BfcnVudGltZV9pdGVyYXRpb25zKTogRnJlZQoJZG9tX2JicyBwb2ludGVyLgoJKiB0cmVlLXNzYS1saXZlLmMgKHR5cGVfdmFyX2luaXQpOiBBbGxvY2F0ZSBiaXRtYXAgYWZ0ZXIKCWNhbGwgdG8gdHBhX2luaXQuCgoyMDA2LTAxLTMxICBNYXJjaW4gRGFsZWNraSAgPG1hcnRpbkBkYWxlY2tpLmRlPgoKCSogdHJlZS12cnAuYzogVXNlIFhORVcvWENORVcgYWxsb2NhdGlvbiB3cmFwcGVycy4KCSogcmVncmVuYW1lLmM6IERpdHRvLgoJKiB0cmVlLXNzYS1sb29wLWltLmM6IERpdHRvLgoJKiB0cmVlLWR1bXAuYzogRGl0dG8uCgkqIHRyZWUtY29tcGxleC5jOiBEaXR0by4KCSogZ2VucmVjb2cuYzogRGl0dG8uCgkqIHRyZWUtc3NhLXRocmVhZHVwZGF0ZS5jOiBEaXR0by4KCSogdHJhY2VyLmM6IERpdHRvLgoJKiBqYXZhL2NsYXNzLmM6IERpdHRvLgoJKiBqYXZhL2pjZi1wYXJzZS5jOiBEaXR0by4KCSogamF2YS9yZXNvdXJjZS5jOiBEaXR0by4KCSogamF2YS9leGNlcHQuYzogRGl0dG8uCgkqIGphdmEvanZzcGVjLmM6IERpdHRvLgoJKiBqYXZhL2pjZi13cml0ZS5jOiBEaXR0by4KCSogamF2YS9qY2YtcGF0aC5jOiBEaXR0by4KCSogamF2YS9namF2YWguYzogRGl0dG8uCgkqIGphdmEvemV4dHJhY3QuYzogRGl0dG8uCgkqIGphdmEvamNmLWlvLmM6IERpdHRvLgoJKiBqYXZhL2pjZi5oOiBEaXR0by4KCSogamF2YS9idWZmZXIuYzogRGl0dG8uCgkqIGphdmEvbGFuZy5jOiBEaXR0by4KCSogamF2YS9wYXJzZS1zY2FuLnk6IERpdHRvLgoJKiBqYXZhL2xleC5jOiBEaXR0by4KCSogamF2YS9sZXguaDogRGl0dG8uCgkqIGNmZ2xvb3BtYW5pcC5jOiBEaXR0by4KCSogcG9zdHJlbG9hZC1nY3NlLmM6IERpdHRvLgoJKiB0cmVlLXNzYS1sb29wLW1hbmlwLmM6IERpdHRvLgoJKiBwb3N0cmVsb2FkLmM6IERpdHRvLgoJKiB0cmVlLXNzYS1sb29wLWNoLmM6IERpdHRvLgoJKiBsb29wLmM6IERpdHRvLgoJKiBpcGEtY3AuYzogRGl0dG8uCgkqIGNwcHNwZWMuYzogRGl0dG8uCgkqIGRpYWdub3N0aWMuYzogRGl0dG8uCgkqIGZpbmFsLmM6IERpdHRvLgoJKiBnZW5vdXRwdXQuYzogRGl0dG8uCgkqIGdjYy5jOiBEaXR0by4KCSogY2ZnaG9va3MuYzogRGl0dG8uCgkqIGNmZ2xvb3BhbmFsLmM6IERpdHRvLgoJKiBvYmpjL29iamMtYWN0LmM6IERpdHRvLgoJKiBnY292LmM6IERpdHRvLgoJKiBnZW5leHRyYWN0LmM6IERpdHRvLgoJKiBnZW5hdXRvbWF0YS5jOiBEaXR0by4KCSogcHJldHR5LXByaW50LmM6IERpdHRvLgoJKiBnZW5lbWl0LmM6IERpdHRvLgoJKiBjZ3JhcGh1bml0LmM6IERpdHRvLgoJKiBmbG93LmM6IERpdHRvLgoJKiBkZi1zY2FuLmM6IERpdHRvLgoJKiBoYWlmYS1zY2hlZC5jOiBEaXR0by4KCSogZG9taW5hbmNlLmM6IERpdHRvLgoJKiBkYnhvdXQuYzogRGl0dG8uCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmM6IERpdHRvLgoJKiBkZi1jb3JlLmM6IERpdHRvLgoJKiBtb2RlLXN3aXRjaGluZy5jOiBEaXR0by4KCSogbW9kdWxvLXNjaGVkLmM6IERpdHRvLgoJKiBncmFwaC5jOiBEaXR0by4KCSogaXBhLXB1cmUtY29uc3QuYzogRGl0dG8uCgkqIGNzZS5jOiBEaXR0by4KCSogZml4LWhlYWRlci5jOiBEaXR0by4KCSogd2ViLmM6IERpdHRvLgoJKiB0cmVlLXN0ZGFyZy5jOiBEaXR0by4KCSogaXBhLXV0aWxzLmM6IERpdHRvLgoJKiBsb29wLWluaXQuYzogRGl0dG8uCgkqIGlwYS1pbmxpbmUuYzogRGl0dG8uCgkqIGNmZ2FuYWwuYzogRGl0dG8uCgkqIGdsb2JhbC5jOiBEaXR0by4KCSogYWxsb2MtcG9vbC5jOiBEaXR0by4KCSogZHdhcmYyb3V0LmM6IERpdHRvLgoJKiBvcHRzLmM6IERpdHRvLgoJKiBnZW5hdHRydGFiLmM6IERpdHRvLgoJKiB0cmVlLXNzYS1sb29wLWl2Y2Fub24uYzogRGl0dG8uCgkqIHByZWRpY3QuYzogRGl0dG8uCgkqIHRpbWV2YXIuYzogRGl0dG8uCgkqIGxjbS5jOiBEaXR0by4KCSogZm9ydHJhbi9nZm9ydHJhbnNwZWMuYzogRGl0dG8uCgkqIHJlZ21vdmUuYzogRGl0dG8uCgkqIGxvY2FsLWFsbG9jLmM6IERpdHRvLgoJKiBsYW5naG9va3MuYzogRGl0dG8uCgkqIGZ1bmN0aW9uLmM6IERpdHRvLgoJKiB0cmVlLXZlY3Rvcml6ZXIuYzogRGl0dG8uCgkqIGdjc2UuYzogRGl0dG8uCgkqIGlwYS10eXBlLWVzY2FwZS5jOiBEaXR0by4KCSogYWxpYXMuYzogRGl0dG8uCgkqIHRyZWUtaWYtY29udi5jOiBEaXR0by4KCSogcHJvZmlsZS5jOiBEaXR0by4KCSogaXBhLmM6IERpdHRvLgoJKiB0cmVlLWRhdGEtcmVmLmM6IERpdHRvLgoJKiBsb29wLXVucm9sbC5jOiBEaXR0by4KCSogdHJlZWxhbmcvdHJlZXRyZWUuYzogRGl0dG8uCgkqIGNhbGxzLmM6IERpdHRvLgoJKiBidC1sb2FkLmM6IERpdHRvLgoJKiBnZ2MtY29tbW9uLmM6IERpdHRvLgoJKiBleGNlcHQuYzogRGl0dG8uCgkqIGNvdmVyYWdlLmM6IERpdHRvLgoJKiBjc2VsaWIuYzogRGl0dG8uCgkqIHRyZWUtY2ZnY2xlYW51cC5jOiBEaXR0by4KCSogdHJlZS1zc2EtcHJlLmM6IERpdHRvLgoJKiBjZmdjbGVhbnVwLmM6IERpdHRvLgoJKiBsb29wLWludmFyaWFudC5jOiBEaXR0by4KCSogbG9vcC1pdi5jOiBEaXR0by4KCSogaXBhLXByb3AuYzogRGl0dG8uCgkqIHByaW50LXRyZWUuYzogRGl0dG8uCgkqIGNvbmZsaWN0LmM6IERpdHRvLgoJKiBnZ2MtcGFnZS5jOiBEaXR0by4KCSogc2NoZWQtZGVwcy5jOiBEaXR0by4KCSogcmVnY2xhc3MuYzogRGl0dG8uCgkqIHRyZWUtb2JqZWN0LXNpemUuYzogRGl0dG8uCgkqIGNvbWJpbmUuYzogRGl0dG8uCgkqIGJiLXJlb3JkZXIuYzogRGl0dG8uCgkqIHJlc291cmNlLmM6IERpdHRvLgoJKiB2YXItdHJhY2tpbmcuYzogRGl0dG8uCgkqIGNmZ2xvb3AuYzogRGl0dG8uCgkqIGRmLXByb2JsZW1zLmM6IERpdHRvLgoJKiByZWctc3RhY2suYzogRGl0dG8uCgkqIHRsaW5rLmM6IERpdHRvLgoJKiBnY2NzcGVjLmM6IERpdHRvLgoJKiBzY2hlZC1yZ24uYzogRGl0dG8uCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmM6IERpdHRvLgoJKiB0cmVlLXNzYS1yZWFzc29jLmM6IERpdHRvLgoJKiBjb25maWcvZGFyd2luLWMuYzogRGl0dG8uCgkqIGNvbmZpZy9kYXJ3aW4uYzogRGl0dG8uCgkqIGNvbmZpZy9hcm0vYXJtLmM6IERpdHRvLgoJKiBjZmdydGwuYzogRGl0dG8uCgkqIGNvbGxlY3QyLmM6IERpdHRvLgoJKiByZWxvYWQxLmM6IERpdHRvLgoKMjAwNi0wMS0zMSAgTmljb2xhcyBQaXRyZSAgPG5pY29AY2FtLm9yZz4KCgkqIGFybS5tZCAoc21heHNpMyk6IE1ha2UgYXdhcmUgb2Ygc21heF9tMS4KCShzbWF4X20xKTogTmV3LgoKMjAwNi0wMS0zMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9tNjhrL2xiMXNmNjguYXNtOiBVc2UgbW92ZXEgdG8gbG9hZCBzbWFsbCBjb25zdGFudHMuCgoyMDA2LTAxLTMxICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBkb2MvaW52b2tlLnRleGkgKC1tc3NlbGlibSk6IERvY3VtZW50LgoJKiB0YXJnZXQuaCAoZXhwYW5kX2xpYnJhcnlfYnVpbHRpbik6IE5ldyB0YXJnZXQgaG9vay4KCSogYnVpbHRpbnMuYyAoZXhwYW5kX2J1aWx0aW4pOiBVc2UgZXhwYW5kX2xpYnJhcnlfYnVpbHRpbi4KCShkZWZhdWx0X2V4cGFuZF9saWJyYXJ5X2J1aWx0aW4pOiBOZXcgZnVuY3Rpb24uCgkqIGdjYy5jIChMSU5LX0dDQ19NQVRIX1NQRUMpOiBEZWZpbmUuCgkoTElOS19DT01NQU5EX1NQRUMpOiBIYW5kbGUgJShsaW5rX2djY19tYXRoKS4KCShsaW5rX2djY19tYXRoX3NwZWMpOiBEZWNsYXJlLgoJKHN0YXRpY19zcGVjcyk6IEFkZCBsaW5rX2djY19tYXRoX3NwZWMuCgkqIGV4cHIuaCAoZGVmYXVsdF9leHBhbmRfbGlicmFyeV9idWlsdGluKTogRGVjbGFyZS4KCSogdGFyZ2V0LWRlZi5oIChUQVJHRVRfRVhQQU5EX0xJQlJBUllfQlVJTFRJTik6IERlZmluZS4KCShUQVJHRVRfSU5JVElBTElaRVIpOiBBZGQgVEFSR0VUX0VYUEFORF9MSUJSQVJZX0JVSUxUSU4uCgkqIGNvbmZpZy9pMzg2L2kzODYuaDogUHJvdmlkZSBMSU5LX0dDQ19NQVRIX1NQRUMuCgkqIGNvbmZpZy9pMzg2L2kzODYub3B0IChtc3NlbGlibSk6IE5ldyB0YXJnZXQgb3B0aW9uLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfYnVpbHRpbl9mdW5jdGlvbl92YXJpYW50cyk6IE5ldyBhcnJheS4KCShpeDg2X2luaXRfc3NlX2FiaV9idWlsdGlucyk6IE5ldyBmdW5jdGlvbi4KCShpeDg2X2V4cGFuZF9saWJyYXJ5X2J1aWx0aW4pOiBMaWtld2lzZS4KCShUQVJHRVRfRVhQQU5EX0xJQlJBUllfQlVJTFRJTik6IERlZmluZS4KCShvdmVycmlkZV9vcHRpb25zKTogSGFuZGxlIGVycm9yIGNvbmRpdGlvbnMgd3J0IC1tc3NlbGlibS4KCShpeDg2X2J1aWx0aW5zKTogQWRkIGZ1bmN0aW9uIGNvZGVzIGZvciBTU0UyIEFCSSBidWlsdGlucy4KCShpeDg2X2luaXRfYnVpbHRpbnMpOiBDYWxsIGl4ODZfaW5pdF9zc2VfYWJpX2J1aWx0aW5zLgoJKiBkb2MvZXh0ZW5kLnRleGkgKF9fYnVpbHRpbl9zc2UyXyopOiBEb2N1bWVudCBuZXcgdGFyZ2V0IHNwZWNpZmljCglidWlsdGlucy4KCjIwMDYtMDEtMzEgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCVBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBkb2MvaW5zdGFsbC50ZXhpICgtLWRpc2FibGUtbGliZ2NjLW1hdGgpOiBEb2N1bWVudC4KCjIwMDYtMDEtMzAgIE1hcmNpbiBEYWxlY2tpICA8bWFydGluQGRhbGVja2kuZGU+CgoJKiBleHByLmggKGV4cGFuZF9ub3JtYWwpOiBuZXcgaW5saW5lIGZ1bmN0aW9uLgoJKiBidWlsdGlucy5jOiB1c2UgaXQsIHVzZSBFWFBBTkRfTk9STUFMIGV4cGxpY2l0ZWx5LgoJKiBkb2p1bXAuYzogdXNlIGl0LgoJKiBkd2FyZjJvdXQuYzogdXNlIGl0LgoJKiBleHByLmM6IHVzZSBpdC4KCSogY2FsbHMuYzogdXNlIGl0LgoJKiBleHBtZWQuYzogdXNlIGl0LgoJKiBleGNlcHQuYzogdXNlIGl0LgoJKiBjb25maWcvc3BhcmMvc3BhcmMuYzogdXNlIGl0LgoJKiBjb25maWcvaTM4Ni9pMzg2LmM6IHVzZSBpdC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYzogdXNlIGl0LgoJKiBjb25maWcvYXJtL2FybS5jOiB1c2UgaXQuCgkqIGNvbmZpZy9taXBzL21pcHMuYzogdXNlIGl0LgoJKiBzdG10LmM6IHVzZSBpdCwgdXNlIEVYUEFORF9OT1JNQUwgZXhwbGljaXRlbHkuCgoyMDA2LTAxLTMwICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2N5Z3dpbi5oIChHQ0NfRFJJVkVSX0hPU1RfSU5JVElBTElaQVRJT04pOiBDYXN0Cglhcmd2IHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBlLgoKMjAwNi0wMS0zMCAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2EtZGNlLmMgKG1hcmtfc3RtdF9pZl9vYnZpb3VzbHlfbmVjZXNzYXJ5KTogUmVtb3ZlCgl1bnJlYWNoYWJsZSBjb2RlLgoKMjAwNi0wMS0zMCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCVBSIHRhcmdldC8yNjAxOAoJKiBjb25maWcvczM5MC9zMzkwLmMgKHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uKTogTmV3IGZsYWcKCWRlY29tcG9zZWRfbGl0ZXJhbF9wb29sX2FkZHJlc3Nlc19va19wLgoJKHMzOTBfcmVvcmcpOiBTZXQgaXQgYmVmb3JlIGZpbmFsIHN0YWdlIG9mIGxpdGVyYWwgcG9vbCB0cmFuc2Zvcm1zLgoJKHMzOTBfZGVjb21wb3NlX2FkZHJlc3MpOiBPbmx5IGFjY2VwdCBkaXNwbGFjZW1lbnRzIG9mIHRoZSBmb3JtCgkobWludXMgKGxhYmVsX3JlZiAuLi4pIChsYWJlbF9yZWYgLi4uKSkgaWYgdGhhdCBmbGFnIGlzIHNldC4KCjIwMDYtMDEtMzAgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb3B0YWJzLmMgKHByZXBhcmVfY21wX2luc24pOiBJZiB1bmJhaXNlZCBhbmQgdW5zaWduZWQgdGhlbiBiaWFzCgl0aGUgY29tcGFyaXNvbiByb3V0aW5lIHJldHVybi4KCjIwMDYtMDEtMzAgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCgkqIGdsb2JhbC5jIChmaW5kX3JlZyk6IE9ubHkgZXZpY3QgZm9yIGdsb2JhbCByZWdzLgoJVGFrZSBuX3JlZnMgaW50byBhY2NvdW50IGFuZCBkdW1wIG1vcmUgaW5mby4KCjIwMDYtMDEtMzAgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdC5jb20+CgoJUFIgdGFyZ2V0LzE0Nzk4OgoJKiBzaC5jIChwcmFnbWFfaW50ZXJydXB0LCB0cmFwX2V4aXQsIHNwX3N3aXRjaCk6IFJlbW92ZSB2YXJpYWJsZS4KCShwcmFnbWFfdHJhcCwgcHJhZ21hX25vc2F2ZV9sb3dfcmVncyk6IExpa2V3aXNlLgoJKGN1cnJlbnRfZnVuY3Rpb25fYW5vbnltb3VzX2FyZ3MpOiBMaWtld2lzZS4KCShzaF9kZWZlcnJlZF9mdW5jdGlvbl9hdHRyaWJ1dGVzKTogTmV3IHZhcmlhYmxlLgoJKHNoX2RlZmVycmVkX2Z1bmN0aW9uX2F0dHJpYnV0ZXNfdGFpbCk6IExpa2V3aXNlLgoJKHByaW50X29wZXJhbmQpOiBGb3IgJ0AnLCBsb29rIHVwIHRyYXBfZXhpdCBhdHRyaWJ1dGUuCgkoY2FsY19saXZlX3JlZ3MpOiBMb29rIHVwIHRyYXBhX2hhbmRsZXIgYXR0cmlidXRlLiAgRm9yIHRyYXBhCgloYW5kbGVycywgc2F2ZS9yZXN0b3JlIGZwc2NyLCBidXQgZG9uJ3QgZG8gYW55IG90aGVyCglpbnRlcnJ1cHQtc3BlY2lmaWMgc2F2ZXMuCglEb24ndCBzYXZlIHIwLi5yNyBpZiB0aGUgbm9zYXZlX2xvd19yZWdzIGF0dHJpYnV0ZSBpcyBpbiBlZmZlY3QuCglGaXggY2hlY2sgZm9yIHBhcnRpYWxseSBzYXZlZCByZWdpc3RlcnMgdG8gY2hlY2sgZm9yIFNIbWVkaWEuCgkoc2hfZXhwYW5kX3Byb2xvZ3VlLCBzaF9leHBhbmRfZXBpbG9ndWUpOiBMb29rIHVwIHNwX3N3aXRjaCBhdHRyaWJ1dGUuCgkoc2hfb3V0cHV0X2Z1bmN0aW9uX2VwaWxvZ3VlKTogRG9uJ3QgY2xlYXIgYW55IG9mIHRoZSByZW1vdmVkCgl2YXJpYWJsZXMuCgkoc2hfaW5zZXJ0X2F0dHJpYnV0ZXMpOiBEb24ndCBjaGVjayBwcmFnbWFfaW50ZXJydXB0LgoJSW5zZXJ0IGRlZmVycmVkIGF0dHJpYnV0ZXMuICBDaGVjayB0aGF0IGludGVycnVwdCBhdHRyaWJ1dGUgaXMKCXByZXNlbnQgZm9yIG90aGVyIGF0dHJpYnV0ZXMgdGhhdCByZXF1aXJlIGl0cyBwcmVzZW5jZS4KCShzaF9hdHRyaWJ1dGVfdGFibGUpOiBBZGQgbmV3IGF0dHJpYnV0ZXMgdHJhcGFfaGFuZGxlciBhbmQKCW5vc2F2ZV9sb3dfcmVncy4KCShzaF9oYW5kbGVfc3Bfc3dpdGNoX2F0dHJpYnV0ZSwgc2hfaGFuZGxlX3RyYXBfZXhpdF9hdHRyaWJ1dGUpOgoJRG9uJ3QgY2hlY2sgZm9yIHByYWdtYV9pbnRlcnJ1cHQuICBEb24ndCBzdG9yZSBhcmd1bWVudC4KCSogc2guaCAocHJhZ21hX2ludGVycnVwdCwgc3Bfc3dpdGNoKTogRG9uJ3QgZGVjbGFyZS4KCShzaF9kZWZlcnJlZF9mdW5jdGlvbl9hdHRyaWJ1dGVzKTogRGVjbGFyZS4KCShzaF9kZWZlcnJlZF9mdW5jdGlvbl9hdHRyaWJ1dGVzX3RhaWwpOiBMaWtld2lzZS4KCSogc2gubWQgKHNwX3N3aXRjaF8xKTogQWRkIG9wZXJhbmQuICBDaGFuZ2UgZ2VuZXJhdG9yIGNhbGxlci4KCShzaF9wcl9pbnRlcnJ1cHQsIHNoX3ByX3RyYXBhLCBzaF9wcl9ub3NhdmVfbG93X3JlZ3MpOiBSZW1vdmUuCgkoKnJldHVybl9pKTogRG9uJ3QgdXNlIHdoZW4gdHJhcF9leGl0IGF0dHJpYnV0ZSBpcyBpbiBlZmZlY3QuCgkoKnJldHVybl90cmFwYSk6IE5ldyBpbnNuIHBhdHRlcm4uCgkqIHNoLWMuYzogTmV3IGZpbGUuCgkqIGNvbmZpZy5nY2MgKHNoWzEyMzQ1NmJsZV0qLSogfCBzaC0qLSopOiBOZXcgdHJhaWxlciBzdGFuemEsCglzZXR0aW5nIGNfdGFyZ2V0X29ianMgYW5kIGN4eF90YXJnZXRfb2Jqcy4KCSogdC1zaDogQWRkIHJ1bGUgZm9yIHNoLWMuby4KCjIwMDYtMDEtMzAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBjKysvMjMzNzIKCSogZ2ltcGxpZnkuYyAoZ2ltcGxpZnlfdGFyZ2V0X2V4cHIpOiBIYW5kbGUgZWFzeSBjYXNlcwoJd2l0aG91dCBjcmVhdGluZyBhIHRlbXBvcmFyeS4KCjIwMDYtMDEtMzAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB2ZWMuaCAoc2FmZV9ncm93KTogUmVtb3ZlIGR1cGxpY2F0ZWQgbGluZS4KCjIwMDYtMDEtMjkgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCVBSIDI1ODc0CgkqIG9tcC1sb3cuYyAoZXhlY3V0ZV9leHBhbmRfb21wKTogTW92ZSBDRkcgY2xlYW51cCBjb2RlIC4uLgoJKGV4cGFuZF9vbXApOiAuLi4gaGVyZS4KCShleHBhbmRfb21wX3BhcmFsbGVsKTogT25seSByZW1vdmUgYmFycmllcnMgZm9yIGNvbWJpbmVkCglwYXJhbGxlbCt3b3Jrc2hhcmUgY29uc3RydWN0cy4KCjIwMDYtMDEtMjkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJUmV2ZXJ0CgoJMjAwNS0xMS0wOSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCSogdHJlZS5jIChidWlsZF9xdWFsaWZpZWRfdHlwZSk6IENoYWluIHRoZSBuZXcgdHlwZSB0byB0aGUgb3JpZ2luYWwKCXR5cGUncyBUWVBFX05FWFRfUFRSX1RPIG9yIFRZUEVfTkVYVF9SRUZfVE8gbGlua2VkIGxpc3RzIGlmIGl0IGlzCglhIFBPSU5URVJfVFlQRSBvciBhIFJFRkVSRU5DRV9UWVBFIHJlc3BlY3RpdmVseS4KCShidWlsZF9wb2ludGVyX3R5cGVfZm9yX21vZGUpOiBPbmx5IHJldHVybiB1bnF1YWxpZmllZCB0eXBlcy4KCShidWlsZF9yZWZlcmVuY2VfdHlwZV9mb3JfbW9kZSk6IExpa2V3aXNlLgoKMjAwNi0wMS0yOSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ2dyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogY29uZmlndXJlLmFjIChjeHhfY29tcGF0X3dhcm4pOiBTZXQgaWYgLVdjKystY29tcGF0IGlzIHN1cHBvcnRlZC4KCSogTWFrZWZpbGUuaW4gKENYWF9DT01QQVRfV0FSTik6IERlZmluZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNi0wMS0yOSAgRG9yaXQgTnV6bWFuICA8ZG9yaXRAaWwuaWJtLmNvbT4KCglQUiB0cmVlLW9wdC8yNTkxMQoJKiB0cmVlLXZlY3QtcGF0dGVybnMuYyAodmVjdF9yZWNvZ19kb3RfcHJvZF9wYXR0ZXJuKTogQ2hhbmdlIGFzc2VydAoJdG8gYW4gaWYgY2hlY2suCgoyMDA2LTAxLTI5ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIHRvcGxldi5jOiBGaXggdGhpbmtvLgoKMjAwNi0wMS0yOSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgkgICAgTWFyY2luIERhbGVja2kgIDxtYXJ0aW5AZGFsZWNraS5kZT4KCgkqIHRvcGxldi5jIChmbG9vcl9sb2cyLCBleGFjdF9sb2cyKTogRG9uJ3QgZGVmaW5lIGlmIF9fY3BsdXNwbHVzLgoJKHB1c2hfc3JjbG9jKTogVXNlIFhORVcuCgkoaW5pdF9hc21fb3V0cHV0LCBkZWZhdWx0X2dldF9wY2hfdmFsaWRpdHkpOiBVc2UgWE5FV1ZFQy4KCjIwMDYtMDEtMjkgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJKiBkZi1jb3JlLmMgKGRmX3NldF9ibG9ja3MpOiBEZWxldGVkIGFsbCB2YXJpYWJsZS4KCjIwMDYtMDEtMjggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9hc3NlbWJsZV9wZW5kaW5nX2Z1bmN0aW9ucyk6IENhbGwKCWNncmFwaF9vdXRwdXRfcGVuZGluZ19hc21zLgoKMjAwNi0wMS0yOCAgWmFjayBXZWluYmVyZyAgPHphY2t3QHBhbml4LmNvbT4KCgkqIGMub3B0OiBBZGQgLVcobm8tKW92ZXJsZW5ndGgtc3RyaW5ncy4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCBpdC4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiAtcGVkYW50aWMgaW1wbGllcwoJLVdvdmVybGVuZ3RoLXN0cmluZ3MsIGlmIG5vdCBleHBsaWNpdGx5IGRpc2FibGVkIGFscmVhZHkuCgkoY19jb21tb25fcG9zdF9vcHRpb25zKTogLVdvdmVybGVuZ3RoLXN0cmluZ3MgZGVmYXVsdHMgdG8gb2ZmLCBhbmQKCWlzIGFsd2F5cyBvZmYgZm9yIEMrKy4KCSogYy1jb21tb24uYyAoZml4X3N0cmluZ190eXBlKTogSXNzdWUgd2FybmluZyBhYm91dCBzdHJpbmdzIGxvbmdlcgoJdGhhbiBpcyBwb3J0YWJsZSBvbmx5IGlmIHdhcm5fb3Zlcmxlbmd0aF9zdHJpbmdzLiAgUmVhcnJhbmdlIGNvZGUKCWEgbGl0dGxlIGZvciBjbGFyaXR5LgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciAtV25vLW92ZXJsZW5ndGgtc3RyaW5ncyBhcyB3ZWxsIGJlZm9yZQoJZW5hYmxpbmcgLXBlZGFudGljIGluIHN0YWdlIDEuCgkqIE1ha2VmaWxlLmluIChTVFJJQ1QyX1dBUk4pOiBBZGQgLVduby1vdmVybGVuZ3RoLXN0cmluZ3MuCgkoZ2NjLm8td2FybiwgaW5zbi1hdXRvbWF0YS5vLXdhcm4sIGJ1aWxkL2dlbmNvbmRtZC5vLXdhcm4pOiBEZWxldGUuCgoJKiBnZW5jb25kaXRpb25zLmMgKHdyaXRlX2hlYWRlciwgd3JpdGVfb25lX2NvbmRpdGlvbikKCSh3cml0ZV9jb25kaXRpb25zLCB3cml0ZV93cml0ZXIpOiBDb25zb2xpZGF0ZSB2ZXJ5IGxvbmcgc3RyaW5ncwoJdGhhdCB3ZXJlIGJyb2tlbiB1cCB0byBmaXQgaW4gQzg5IHBvcnRhYmxlIGxpbWl0LiAgRG9uJ3QgdXNlCglwcmludGYgd2hlbiBmcHV0cyB3aWxsIGRvLgoKMjAwNi0wMS0yOCAgQWRhbSBOZW1ldCAgPGFuZW1ldEBjYXZpdW1uZXR3b3Jrcy5jb20+CgoJKiBjb21iaW5lLmMgKHNpbXBsaWZ5X2NvbXBhcmlzb24gPEFORD4pOiBDaGVjawoJVFJVTFlfTk9PUF9UUlVOQ0FUSU9OIGJlZm9yZSBzdGFydCB1c2luZyBhIHN1YnJlZy4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKCpicmFuY2hfemVybzxtb2RlPiwKCSpicmFuY2hfemVybzxtb2RlPl9pbnZlcnRlZCwgKmJyYW5jaF9lcXVhbGl0eTxtb2RlPiwKCSpicmFuY2hfZXF1YWxpdHk8bW9kZT5faW52ZXJ0ZWQsICpicmFuY2hfZXF1YWxpdHk8bW9kZT5fbWlwczE2KToKCVJlbW92ZSBtb2RlIGNoZWNrIGZyb20gY29tcGFyaXNvbnMuCgoyMDA2LTAxLTI4ICBLZW5uZXRoIFphZGVjayA8emFkZWNrQG5hdHVyYWxicmlkZ2UuY29tPgoKCSogY29uZmlnL21pcHMvbWlwcy1wcm90b3MuaCAobWlwc19zZXRfbGl2ZV9vbl9lbnRyeSk6IERlbGV0ZWQuCgoyMDA2LTAxLTI4ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4cG1lZC5jIChjb25zdF9tdWx0X2FkZF9vdmVyZmxvd19wKTogUmVtb3ZlLgoJKiBleHByLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBjb25zdF9tdWx0X2FkZF9vdmVyZmxvd19wLgoKCSogcmVjb2cuYyAodmFsaWRhdGVfcmVwbGFjZV9ydHhfc3ViZXhwKTogUmVtb3ZlLgoJKiByZWNvZy5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCXZhbGlkYXRlX3JlcGxhY2VfcnR4X3N1YmV4cC4KCgkqIGludGVncmF0ZS5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCWNvcHlfZGVjbF9mb3JfaW5saW5pbmcuCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgbWFya19jb25zdGFudF9mdW5jdGlvbi4KCSogdHJlZS12ZWN0b3JpemVyLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJdmVjdF9zdHJpcF9jb252ZXJzaW9uLgoKCSogbW9kdWxvLXNjaGVkLmMgKGNyZWF0ZV9wYXJ0aWFsX3NjaGVkdWxlLAoJZnJlZV9wYXJ0aWFsX3NjaGVkdWxlLCByZXNldF9wYXJ0aWFsX3NjaGVkdWxlKTogTWFrZSB0aGVtCglzdGF0aWMuCgoJKiBob29rcy5jIChob29rX2Jvb2xfcnR4X2ludF9mYWxzZSk6IFJlbW92ZS4KCSogaG9va3MuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIGhvb2tfYm9vbF9ydHhfaW50X2ZhbHNlLgoKMjAwNi0wMS0yOCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9haXg0My5oIChTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IC1tc29mdC1mbG9hdAoJYW5kIC1tbG9uZy1kb3VibGUtMTI4IGFyZSBpbmNvbXBhdGlibGUuCgkqIGNvbmZpZy9yczYwMDAvYWl4NTIuaCAoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOiBTYW1lLgoJKiBjb25maWcvcnM2MDAwL3QtYWl4NDMgKExJQjJGVU5DU19FWFRSQSk6IEFkZCBwcGM2NC1mcC5jLgoJKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC90LWFpeDUyIChMSUIyRlVOQ1NfRVhUUkEpOiBTYW1lLgoJKFRBUkdFVF9MSUJHQ0MyX0NGTEFHUyk6IFNhbWUuCgkqIGNvbmZpZy9yczYwMDAvcHBjNjQtZnAuYzogQ29tcGlsZSBmb3IgNjQtYml0IEFJWC4KCjIwMDYtMDEtMjggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMvMTk2MDYuCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IFBlcmZvcm0gaW1wbGljaXQgY2FzdHMgb2YKCW9wZXJhbmRzIGJlZm9yZSBzaG9ydGVuaW5nIHRoZW0uCgoJKiBjZmdsb29wbWFuaXAuYyAoc3BsaXRfbG9vcF9iYik6IFJlbW92ZS4KCSogY2ZnbG9vcC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3Igc3BsaXRfbG9vcF9iYi4KCgkqIGNmZ2xvb3AuYyAoZmxvd19sb29wX291dHNpZGVfZWRnZV9wKTogUmVtb3ZlLgoJKiBjZmdsb29wLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJZmxvd19sb29wX291dHNpZGVfZWRnZV9wLgoKCSogZW1pdC1ydGwuYyAoaW5pdF92aXJ0dWFsX3JlZ3MpOiBNYWtlIGl0IHN0YXRpYy4KCSogZnVuY3Rpb24uaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIGluaXRfdmlydHVhbF9yZWdzLgoKCSogcmVjb2cuYyAocGVlcGhvbGUyX29wdGltaXplKTogTWFrZSBpdCBzdGF0aWMuCgkqIHJlY29nLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBwZWVwaG9sZTJfb3B0aW1pemUuCgoyMDA2LTAxLTI3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBkZi1zY2FuLmMgKGRmX3JlY29yZF9lbnRyeV9ibG9ja19kZWZzKTogQ2hlY2sgaWYKCUlOQ09NSU5HX1JFVFVSTl9BRERSX1JUWCBpcyBkZWZpbmVkLgoKMjAwNi0wMS0yNyAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgkgICAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI0NzYyCgkqIGRvYy90bS50ZXhpOiBBZGRlZCBUQVJHRVRfRVhUUkFfTElWRV9PTl9FTlRSWS4KCSogdGFyZ2hvb2tzLmMgKGhvb2tfdm9pZF9iaXRtYXApOiBOZXcgaG9vayBwcm90b3R5cGUuCgkqIHRhcmdob29ocy5oIChob29rX3ZvaWRfYml0bWFwKTogRGl0dG8uCgkqIGJpdG1hcC5oIChiaXRtYXBfaGVhZF9kZWYpOiBNb3ZlZCB0byBjb3JldHlwZXMuaC4KCSogY29yZXR5cGVzLmggKGJpdG1hcF9oZWFkX2RlZik6IE1vdmVkIGZyb20gYml0bWFwLmguCgkqIHRhcmdldC5oIChsaXZlX29uX2VudHJ5KTogTmV3IGZ1bmN0aW9uIHBvaW50ZXIuCgkqIGRmLXNjYW4uYyAoZGZfYWxsX2hhcmRfcmVncyk6IFJlbW92ZWQuCgkoZGZfc2Nhbl9kdW1wLCBkZl9oYXJkX3JlZ19pbml0KTogUmVtb3ZlZCBkZl9hbGxfaGFyZF9yZWdzLgoJKGRmX3NjYW5fZnJlZV9pbnRlcm5hbCk6IEFkZGVkIGRmLT5lbnRyeV9ibG9ja19kZWZzLgoJKGRmX3NjYW5fYWxsb2MpOiBEaXR0by4KCShkZl9zY2FuX2R1bXApOiBEaXR0by4KCShkZl91c2VzX3JlY29yZCk6IFBsdW1iZWQgZmxhZyBmaWVsZCBwcm9wZXJseSB0aHJ1IGNhbGxzLgoJUmVjb3JkIEVIX1JFVFVSTl9EQVRBX1JFR05PIGluIGVoIGJsb2NrcyB1bmNvbmRpdGlvbmFsbHkuCglUaGlzIHBhcnQgZml4ZXMgUFIyNDc2Mi4KCShkZl9iYl9yZWZzX3JlY29yZCk6IEFkZGVkIGNvZGUgdG8gbWFrZSB0aGUgZnJhbWUgYW5kIGFyZwoJcG9pbnRlcnMgbGl2ZSBpbiBFSCBibG9ja3MuCgkoZGZfcmVmc19yZWNvcmQpOiBBZGRlZCBjYWxsIHRvIGRmX3JlY29yZF9lbnRyeV9ibG9ja19kZWZzLgoJKGRmX3JlY29yZF9lbnRyeV9ibG9ja19kZWZzKTogTmV3IGZ1bmN0aW9uLgoJKiBkZi1jb3JlLmM6IEFkZGVkIGNvbW1lbnRzIHRvIGRlc2NyaWJlIG5ldyBhcnRpZmljYWwgZGVmcy4KCSogZGYuaCAoREZfUkVGX0RJRVNfQUZURVJfVEhJU19VU0UpOiBOZXcgZmxhZyBpbiBlbnVtIGRmX3JlZl9mbGFncy4KCShlbnRyeV9ibG9ja19kZWZzKTogTmV3IGZpZWxkIGluIHN0cnVjdCBkZi4KCShkZl9hbGxfaGFyZF9yZWdzKTogRGVsZXRlZC4KCSogdGFyZ2V0LWRlZi5oOiBBZGRlZCBUQVJHRVRfRVhUUkFfTElWRV9PTl9FTlRSWS4KCSogZGYtcHJvYmxlbXMuYyAoZGZfcnVfYmJfbG9jYWxfY29tcHV0ZV9wcm9jZXNzX2RlZik6CglBZGRlZCBjb2RlIHRvIGhhbmRsZSBhcnRpZmljYWwgZGVmcyBpbiB0aGUgZW50cnkgdG8gYSBmdW5jdGlvbi4KCShkZl9ydV9iYl9sb2NhbF9jb21wdXRlKTogRGl0dG8uCgkoZGZfcmRfYmJfbG9jYWxfY29tcHV0ZV9wcm9jZXNzX2RlZik6IERpdHRvLgoJKGRmX3JkX2JiX2xvY2FsX2NvbXB1dGUpOiBEaXR0by4KCShkZl9scl9iYl9sb2NhbF9jb21wdXRlKTogRGl0dG8uCgkoZGZfdXJfYmJfbG9jYWxfY29tcHV0ZSk6IERpdHRvLgoJKGRmX3VyZWNfYmJfbG9jYWxfY29tcHV0ZSk6IERpdHRvLgoJKGRmX2NoYWluX2NyZWF0ZV9iYik6IERpdHRvLgoJKGRmX3VyX2xvY2FsX2ZpbmFsaXplKToJUmVtb3ZlZCBlbnRyeS4KCShkZl91cmVjX2luaXQpOiBEaXR0by4KCShkZl91cmVjX2xvY2FsX2ZpbmFsaXplKTogRGl0dG8uCgkoZGZfcmlfYmJfY29tcHV0ZSk6IEFkZGVkIGRldGVjdGlvbiBvZiBsYXN0IHVzZSBvZiBwc2V1ZG9zLgoJKiBNYWtlZmlsZS5pbiAoZGYtc2Nhbi5vKTogVXBkYXRlZCBkZXBlbmRlbmNpZXMuCgkqIGNvbmZpZy9taXBzL21pcHMtcHJvdG9zLmggKG1pcHNfc2V0X2xpdmVfb25fZW50cnkpOiBBZGRlZC4KCSogY29uZmlnL21pcHMvbWlwcy5jIChtaXBzX3NldF9saXZlX29uX2VudHJ5KTogQWRkZWQuCgkqIGNvbmZpZy9taXBzL21pcHMuYyAoVEFSR0VUX0VYVFJBX0xJVkVfT05fRU5UUlkpOiBBZGRlZCB2YWx1ZQoJZm9yIHRhcmdldCBob29rLgoJKiBkY2UuYyAobWFya2VkX2luc25fcCk6IEFkZGVkIGNvZGUgdG8gaGFuZGxlIGFydGlmaWNhbCBkZWZzLgoKMjAwNi0wMS0yNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogY29uZmlnL2kzODYvZW1taW50cmluLmggKF9tbV9jdnRzZF9mNjQpOiBBZGQgbWlzc2luZyBJbnRlbAoJaW50cmluc2ljLgoJKF9tbV9jdnRzaTEyOF9zaTY0KTogTGlrZXdpc2UuCgkoX21tX2N2dHNkX3NpNjQpOiBMaWtld2lzZS4KCShfbW1fY3Z0dHNkX3NpNjQpOiBMaWtld2lzZS4KCShfbW1fY3Z0c2k2NF9zZCk6IExpa2V3aXNlLgoJKF9tbV9jdnRzaTY0X3NpMTI4KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L21taW50cmluLmggKF9tX2Zyb21faW50NjQpOiBMaWtld2lzZS4KCShfbW1fY3Z0c2k2NF9tNjQpOiBMaWtld2lzZS4KCShfbV90b19pbnQ2NCk6IExpa2V3aXNlLgoJKF9tbV9jdnRtNjRfc2k2NCk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni94bW1pbnRyaW4uaCAoX21tX2N2dHNzX3NpNjQpOiBMaWtld2lzZS4KCShfbW1fY3Z0dHNzX3NpNjQpOiBMaWtld2lzZS4KCShfbW1fY3Z0c2k2NF9zcyk6IExpa2V3aXNlLgoJKF9tbV9jdnRzc19mMzIpOiBMaWtld2lzZS4KCjIwMDYtMDEtMjcgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy1wcmFnbWEuYyAoaW5pdF9wcmFnbWEpIDogQ2FsbCBjX3JlZ2lzdGVyX3ByYWdtYV93aXRoX2V4cGFuc2lvbgoJZm9yIHByYWdtYSByZWRlZmluZV9leHRuYW1lLgoKMjAwNi0wMS0yNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzI1ODY0CgkqIGxpYmdjYy1zdGQudmVyOiBBZGQgR0NDXzQuMS4wIHN5bWJvbCB2ZXJzaW9uLgoJKiBjb25maWcvcnM2MDAwL3QtbGludXg2NCAoVEFSR0VUX0xJQkdDQzJfQ0ZMQUdTKTogT25seSBhcHBlbmQKCS1tbm8tbWluaW1hbC10b2MgdG8gcHJldmlvdXMgY29udGVudC4KCShiaXNwZWNzKTogUmVtb3ZlIGdvYWwuCgkqIGNvbmZpZy9yczYwMDAvcHBjNjQtZnAuYzogRGVmaW5lIFRNT0RFUyBiZWZvcmUgaW5jbHVkaW5nIGZwLWJpdC5oLgoJKiBjb25maWcvcnM2MDAwL2Rhcndpbi1sZG91YmxlLmM6IERvbid0IHByb3ZpZGUgX3hscSpAR0NDXzMuNAoJY29tcGF0aWJpbGl0eSBhbGlhc2VzIG9uIHBvd2VycGMtKi0qZ251Ki4KCSogY29uZmlnL3JzNjAwMC9saWJnY2MtcHBjLWdsaWJjLnZlcjogTmV3IGZpbGUuCgkqIGNvbmZpZy9yczYwMDAvdC1wcGNjb21tIChTSExJQl9NQVBGSUxFUyk6IEFwcGVuZAoJbGliZ2NjLXBwYy1nbGliYy52ZXIgb24gcG93ZXJwYyotKi0qZ251Ki4KCShUQVJHRVRfTElCR0NDMl9DRkxBR1MpOiBBcHBlbmQgLXNwZWNzPWxkYmxzcGVjcy4KCShsZGJsc3BlY3MpOiBOZXcgZ29hbC4KCSogY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgKFNITElCX01BUEZJTEVTKTogUmVtb3ZlZC4KCSogbWtsaWJnY2MuaW46IElmICRUUEJJVCBpcyBlbXB0eSwgZG9uJ3QgY29tcGlsZSBfc2ZfdG9fdGYgYW5kCglfZGZfdG9fdGYuCgkqIGNvbmZpZy9mcC1iaXQuaCAoVE1PREVTKTogRG9uJ3QgZGVmaW5lIGlmIG5vbmUgb2YgVEZMT0FULAoJTF9zZl90b190ZiBvciBMX2RmX3RvX3RmIGlzIGRlZmluZWQuCgoyMDA2LTAxLTI3ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgkgICAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCglQUiB0YXJnZXQvMjU4NjQKCSogY29uZmlnL3JzNjAwMC9saW51eC5oIChQT1dFUlBDX0xJTlVYKTogRGVmaW5lLgoJKiBjb25maWcvcnM2MDAwL2xpbnV4NjQuaCAoUE9XRVJQQ19MSU5VWCk6IERlZmluZS4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4tbGRvdWJsZS5jOiBCdWlsZCBvbiAzMi1iaXQgUG93ZXJQQy4KCSogY29uZmlnL3JzNjAwMC9kYXJ3aW4uaCAoVEFSR0VUX0lFRUVRVUFEKTogRGVmaW5lIHRvIHplcm8uCgkqIGNvbmZpZy9yczYwMDAvYWl4LmggKFRBUkdFVF9JRUVFUVVBRCk6IERlZmluZSB0byB6ZXJvLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfaWVlZXF1YWQpOiBOZXcgdmFyaWFibGUuCgkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBJbml0aWFsaXplIHJzNjAwMF9pZWVlcXVhZC4KCUluaXRpYWxpemUgVEZtb2RlIGZvcm1hdCB0byBpYm1fZXh0ZW5kZWRfZm9ybWF0IGlmIG5vdAoJVEFSR0VUX0lFRUVRVUFELgoJKHJzNjAwMF9oYW5kbGVfb3B0aW9uKTogQWNjZXB0IC1tYWJpPSBpYm1sb25nZG91YmxlIGFuZAoJaWVlZWxvbmdkb3VibGUuCgkocnM2MDAwX2VtaXRfbW92ZSk6IE1vdmUgIVRBUkdFVF9JRUVFUVVBRCBhcyB0d28gcGFydHMuCgkocnM2MDAwX3JldHVybl9pbl9tZW1vcnkpOiBPbmx5IHJldHVybiBJRUVFUVVBRCBpbiBtZW1vcnkuCgkoZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBJQk0gbG9uZyBkb3VibGUgcGFzc2VkIGluIHR3byBGUFJzLCBub3QKCXNwbGl0LgoJKGZ1bmN0aW9uX2FyZyk6IElCTSBsb25nIGRvdWJsZSBwYXNzZWQgaW4gRlBScy4KCShyczYwMDBfcGFzc19ieV9yZWZlcmVuY2UpOiBPbmx5IElFRUVRVUFEIHBhc3NlZCBieSByZWZlcmVuY2UuCgkocnM2MDAwX2dpbXBsaWZ5X3ZhX2FyZyk6IElCTSBsb25nIGRvdWJsZSBwYXNzZWQgaW4gdHdvIEZQUnMuCglPbmx5IG11bHRpcmVnIEdQUiBhbGlnbmVkLgoJKHJzNjAwMF9pbml0X2xpYmZ1bmNzKTogRW5hYmxlIElCTSBsb25nIGRvdWJsZSBmdW5jdGlvbnMgaWYgbm90CglJRUVFUVVBRC4KCShyczYwMDBfZ2VuZXJhdGVfY29tcGFyZSk6IFVzZSBJQk0gbG9uZyBkb3VibGUgY29tcGFyZSBpZiBub3QKCVRBUkdFVF9JRUVFUVVBRC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAocnM2MDAwX2llZWVxdWFkKTogRGVjbGFyZS4KCShUQVJHRVRfSUVFRVFVQUQpOiBEZWZpbmUuCgkoQ0FOTk9UX0NIQU5HRV9NT0RFX0NMQVNTKTogQW55IG1vZGUgbGFyZ2VyIHRoYW4gZG91Ymxld29yZCBpZgoJbm90IFRBUkdFVF9JRUVFUVVBRC4KCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQ6IEVuYWJsZSBURm1vZGUgcGF0dGVybnMgaWYKCSFUQVJHRVRfSUVFRVFVQUQuCgkqIGNvbmZpZy9yczYwMDAvdC1wcGNjb21tIChMSUIyRlVOQ1NfRVhUUkEpOiBBZGQgZGFyd2luLWxkb3VibGUuYy4KCSogY29uZmlnL3JzNjAwMC9zdnI0LmggKFNVQlRBUkdFVF9PVkVSUklERV9PUFRJT05TKTogLW1zb2Z0LWZsb2F0CglhbmQgLW1sb25nLWRvdWJsZS0xMjggYXJlIGluY29tcGF0aWJsZS4KCSogZG9jL2ludm9rZS50ZXhpICgtbWFiaSk6IENvbGxlY3Qgb3B0aW9ucyB0b2dldGhlci4gIEFkZAoJaWJtbG9uZ2RvdWJsZSBhbmQgaWVlZWxvbmdkb3VibGUuCgoyMDA2LTAxLTI3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9ydGwudGV4aSAoU1lNQk9MX1JFRl9EQVRBKTogQWRqdXN0IGRvY3VtZW50YXRpb24gZm9yIG5ldwoJb3BhcXVlIHR5cGUuCgkqIG9wdGFicy5jIChpbml0X29uZV9saWJmdW5jKTogVXNlIFNFVF9TWU1CT0xfUkVGX0RFQ0wuCgkqIHZhcmFzbS5jIChtYWtlX2RlY2xfcnRsLCBidWlsZF9jb25zdGFudF9kZXNjKTogTGlrZXdpc2UuCgkoZm9yY2VfY29uc3RfbWVtKTogVXNlIFNFVF9TWU1CT0xfUkVGX0NPTlNUQU5ULgoJKiBydGwuaCAocnR1bmlvbl9kZWYpOiBSZW1vdmUgcnRfcHRyLgoJKFgwUFRSKTogRGVsZXRlLgoJKFNZTUJPTF9SRUZfREFUQSk6IFVzZSBYMEFOWSBpbnN0ZWFkIG9mIFgwUFRSLgoJKFNFVF9TWU1CT0xfUkVGX0RFQ0wsIFNFVF9TWU1CT0xfUkVGX0NPTlNUQU5UKTogTmV3IG1hY3Jvcy4KCSogY29uZmlnL2kzODYvd2lubnQuYyAoaTM4Nl9wZV9tYXJrX2RsbGV4cG9ydCkKCShpMzg2X3BlX21hcmtfZGxsaW1wb3J0KTogVXNlIFNFVF9TWU1CT0xfUkVGX0RFQ0wuCgoyMDA2LTAxLTI3IEdhYm9yIExva2kgPGxva2lAZ2NjLmdudS5vcmc+CgoJKiBjZmdjbGVhbnVwLmMgKHRyeV9jcm9zc2p1bXBfdG9fZWRnZSk6IEZpeCBjb21tZW50IHR5cG8uCgoyMDA2LTAxLTI2IEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIG90aGVyLzI0ODI5CglQUiB0YXJnZXQvMjQ4MzEKCSogZ3Roci1kY2UuaDogRG8gbm90IGd0aHJ3LWlmeSBwdGhyZWFkX29uY2VfaW5pdCwKCXB0aHJlYWRfa2V5X2RlbGV0ZS4gIEZyb20gSm9obiBEYXZpZCBBbmdsaW4uICBndGhydy1pZnkKCXB0aHJlYWRfZ2V0dW5pcXVlX25wIG9ubHkgaWYgaXQgaXQncyBub3QgYSBtYWNyby4gIERlbGV0ZQoJVU5VU0VEIG1hY3JvLgoJKF9fZ3RocmVhZF9vYmpjX2NvbmRpdGlvbl9hbGxvY2F0ZSwgX19ndGhyZWFkX29iamNfY29uZGl0aW9uX2RlYWxsb2NhdGUsCglfX2d0aHJlYWRfb2JqY19jb25kaXRpb25fd2FpdCwgX19ndGhyZWFkX29iamNfY29uZGl0aW9uX2Jyb2FkY2FzdCwKCV9fZ3RocmVhZF9vYmpjX2NvbmRpdGlvbl9zaWduYWwsIF9fZ3RocmVhZF9rZXlfZGVsZXRlKTogQWRkCgkiX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKSIgdG8gdW51c2VkIGFyZ3VtZW50cy4KCShfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X2luaXRfZnVuY3Rpb24pOiBBZGQgbWlzc2luZyByZXR1cm4uCgkqIGd0aHItZGNlLmgsIGd0aHItdHBmLmgsIGd0aHItc29sYXJpcy5oLCBndGhyLXBvc2l4LmgsCglndGhyLXBvc2l4OTUuaDogVXNlIG1hY3JvLWJhc2VkIGFwcHJvYWNoIGZvciBuYW1lIHJlZGlyZWN0aW9uCglvbiB0YXJnZXRzIG1pc3Npbmcgd2Vha3JlZi4KCjIwMDYtMDEtMjYgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BwYW5peC5jb20+CgoJKiBnZW5jb25kaXRpb25zLmMgKHdyaXRlX2hlYWRlcik6IEluIGdlbmVyYXRlZCBjb2RlLCAjaWZkZWYgb3V0CglhbGwgaW5jbHVkZXMgYW5kIGZha2UgZGVjbGFyYXRpb25zLCBleGNlcHQgaW5jbHVkZXMgb2YgYmNvbmZpZy5oCglhbmQgc3lzdGVtLmgsIHVubGVzcyBHQ0NfVkVSU0lPTiA+PSAzMDAxLiAgRG8gbm90IGluY2x1ZGUKCWdlbnN1cHBvcnQuaCBpbiBhbnkgY2FzZS4KCSh3cml0ZV9jb25kaXRpb25zKTogR2VuZXJhdGUgYSBkZWZpbml0aW9uIG9mIHN0cnVjdCBjX3Rlc3QuICBBZGQKCWEgY29tbWVudCB0byB0aGUgZ2VuZXJhdGVkICNlbmRpZi4KCSh3cml0ZV9vbmVfY29uZGl0aW9uKTogRXNjYXBlIGJhY2tzbGFzaGVzIGluIHN0cmluZyB0b28uCgkod3JpdGVfd3JpdGVyKTogR2VuZXJhdGVkIGNvZGUgbXVzdCBlc2NhcGUgYmFja3NsYXNoZXMgYW5kIHF1b3RlCgltYXJrcyAoYnV0IG5vdCBuZXdsaW5lcykgaW4gdGhlIHN0cmluZ3MgaXQgd3JpdGVzLgoJKiBNYWtlZmlsZS5pbiAoYnVpbGQvZ2VuY29uZG1kLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMjAwNi0wMS0yNiAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgdGFyZ2V0LzI1OTYxCgkqIE1ha2VmaWxlLmluIChpbnNuLWF1dG9tYXRhLm8pOiBBZGQgaGVhZGVyIGZpbGUgZGVwZW5kZW5jaWVzLgoJKiBnZW5hdXRvbWF0YS5jOiBBZGQgaW5jbHVkZXMuCgoyMDA2LTAxLTI2ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCglQUiB0YXJnZXQvMjU5NjEKCSogTWFrZWZpbGUuaW4gKGluc24tYXV0b21hdGEubyk6IEFkZCAtV25vLWVycm9yIGZsYWcuCgoyMDA2LTAxLTI2ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY29uZmlndXJlLmFjOiBFeHBlY3QgdGFyZ2V0IHRvb2xzIHBhdGhzIHRvIGJlIHBhc3NlZCBmcm9tIHRoZSB0b3BsZXZlbAoJYW5kIHdyYXAgdGhlIGRldGVjdGlvbiBpbnRvIEFTX1NFVF9WQVJfSUYuICBFeHRyYWN0IHNpZGUtZWZmZWN0cyBvdXQgb2YKCUFTX1NFVF9WQVJfSUYuCgkqIGFjaW5jbHVkZS5tNCAoZ2NjX0FDX1RPT0xfRElSUywgZ2NjX0FDX0NIRUNLX1RPT0wpOiBSZW1vdmUuCgoyMDA2LTAxLTI2ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiBjLzI1ODkyCgkqIGMub3B0IChXcG9pbnRlci1zaWduKTogSW5pdCB0byAtMS4KCSogYy1vcHRzLmMgKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBTZXQgdG8gMSBvbiBPUFRfV2FsbCBhbmQKCU9QVF9wZWRhbnRpYywgdG8gMCBvdGhlcndpc2UuCgkqIGRvYy9pbnZva2UudGV4aTogVXBkYXRlLgoKMjAwNi0wMS0yNiAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGV4dGVuZHNmZGYyLCBleHRlbmRzZnhmMiwgZXh0ZW5kZGZ4ZjIpOiBFbWl0Cgljb25zdGFudHMgcHJvdmlkZWQgYnkgODAzODcgaW5zdHJ1Y3Rpb25zIGluIHRoZSBkZXN0aW5hdGlvbiBtb2RlLgoKMjAwNi0wMS0yNiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoJICAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRyZWUtb3B0LzIxNDcwCglwYXJ0aWFsIFBSIHRyZWUtb3B0LzE3MDY0CgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKGludHJhX2NyZWF0ZV92YXJpYWJsZV9pbmZvcyk6CglDcmVhdGUgaGVhcCB2YXJpYWJsZXMgZm9yIGluY29taW5nIHBhcmFtZXRlcnMgaWYKCWZsYWdfYXJndW1lbnRfbm9hbGlhcyA+IDEuCgkoZmluZF93aGF0X3BfcG9pbnRzX3RvKTogTG9vayB0aHJvdWdoIGRlZmF1bHQgZGVmcyBvZgoJcGFyYW1ldGVyIGRlY2xzLgoKMjAwNi0wMS0yNiAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCglQUiBhZGEvMjU5MDAKCSogdHJlZS12cnAuYyAoZXh0cmFjdF9yYW5nZV9mcm9tX2Fzc2VydCk6IFdoZW4gbWVyZ2luZyBhIFZSX1JBTkdFCgl3aXRoIGEgVlJfQU5USV9SQU5HRSBhbmQgdGhlIFZSX0FOVElfUkFOR0UgaXMgY29tcGxldGVseSBjb250YWluZWQKCXdpdGhpbiB0aGUgVlJfUkFOR0UsIHVzZSB0aGUgVlJfUkFOR0UgYXMgdGhlIHJlc3VsdCwgbm90IHRoZQoJVlJfQU5USV9SQU5HRS4KCShhZGp1c3RfcmFuZ2Vfd2l0aF9zY2V2KTogUmVqZWN0IHJhbmdlcyBmcm9tIFNDRVYgd2hpY2ggYXJlIG91dCBvZgoJYm91bmRzIGZvciB0aGUgdHlwZS4KCjIwMDYtMDEtMjYgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2EtYWxpYXMuYyAobWF5YmVfY3JlYXRlX2dsb2JhbF92YXIpOiBDaGFuZ2UKCXN1YnZhciB3YWxraW5nIHRvIGFuIGFzc2VydGlvbiB0aGF0IHdlIGRvbid0IGhhdmUgc3VidmFyJ2QgdmFyaWFibGVzLgoKMjAwNi0wMS0yNiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgQy8yNTg2MQoJKiBjLWNvbW1vbi5jIChjX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24pIDxjYXNlIEFERFJfRVhQUj46CglVc2UgYSBuZXcgdmFyaWFibGUsIGlubmVyLiAgUEFSTV9ERUNMcyBhcmUgYWx3YXlzIG5vbi13ZWFrLgoKMjAwNi0wMS0yNiAgU2hhbnRvbnUgU2VuICA8c3NlbkBvcGVuZGFyd2luLm9yZz4KCgkqIHRyZWUuaCAoT01QX0NMQVVTRV9TVUJDT0RFX0NIRUNLKTogQWRkIGRlZmluaXRpb24gZm9yCgktLWRpc2FibGUtY2hlY2tpbmcuCgoyMDA2LTAxLTI2ICBBZGFtIE5lbWV0ICA8YW5lbWV0QGNhdml1bW5ldHdvcmtzLmNvbT4KCgkqIGNvbmZpZy9taXBzL21pcHMubWQgKCpjbGVhcl91cHBlcjMyKTogTmV3IGNvbWJpbmVyIHBhdHRlcm4uCgoyMDA2LTAxLTI2ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmljaGFyZC5lYXJuc2hhd0Bhcm0uY29tPgoKCSogYXJtLm1kIChzbWF4c2kzLCBzbWluc2kzKTogQ29udmVydCB0byBkZWZpbmVfZXhwYW5kLgoJKHNtYXhfaW5zbiwgc21pbl9pbnNuLCBzbWF4XzAsIHNtaW5fMCk6IE5ldy4KCjIwMDYtMDEtMjYgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCVBSIHRhcmdldC8yNTk0NwoJKiBjb25maWcvY3Jpcy9jcmlzLmMgKGNyaXNfb3JkZXJfZm9yX2FkZHNpMyk6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL2NyaXMvY3Jpcy1wcm90b3MuaDogUHJvdG90eXBlIGl0LgoJKiBjb25maWcvY3Jpcy9jcmlzLm1kIChzcGxpdCBmb3IgIm1vdmUuUzEgW3J4PXJ4K2ldLHJ5IikKCShzcGxpdCBmb3IgIm1vdmUuUzEgcnksW3J4PXJ4K2ldIiwgc3BsaXQgZm9yICJjbGVhci5bYndkXSBbcng9cngraV0iKQoJKHNwbGl0IGZvciAibW92KHN8dSkuUzEgW3J4PXJ4K2ldLHJ5Iiwgc3BsaXQgZm9yICJvcC5TMSBbcng9cngraV0scnkiKQoJKHNwbGl0IGZvciAib3AuUzEgW3J4PXJ4K2ldLHJ5IChzd2FwcGVkKSIpCgkoc3BsaXQgZm9yICJvcChzfHUpLlMxIFtyeD1yeCtpXSxyeSIpCgkoc3BsaXQgZm9yICJvcChzfHUpLlMxIFtyeD1yeCtpXSxyeSAoc3dhcHBlZCwgcGx1cyBvciBib3VuZCkiKToKCUFwcGx5IGNyaXNfb3JkZXJfZm9yX2FkZHNpMyB3aGVuIGdlbmVyYXRpbmcgYWRkc2kzIGluc25zLgoKMjAwNi0wMS0yNSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLmggKFRSRUVfUkFOR0VfQ0hFQ0spOiBGaXggcmFuZ2UgcHJlZGljYXRlLgoJKFRSRUVfQkxPQ0spOiBBZGQgY2FsbCB0byBFWFBSX0NIRUNLLgoKMjAwNi0wMS0yNSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJUFIgMjU4ODYKCSogdHJlZS1kdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBIYW5kbGUgT01QX0NMQVVTRS4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZHVtcF9vbXBfY2xhdXNlKTogRXh0cmFjdCBmcm9tIC4uLgoJKGR1bXBfb21wX2NsYXVzZXMpOiAuLi4gaGVyZS4KCShkdW1wX2dlbmVyaWNfbm9kZSk6IEhhbmRsZSBPTVBfQ0xBVVNFLgoJKiB0cmVlLmMgKG9tcF9jbGF1c2VfbnVtX29wcyk6IE5ldy4KCShvbXBfY2xhdXNlX2NvZGVfbmFtZSk6IE5ldy4KCSh0cmVlX2NvZGVfc2l6ZSk6IEhhbmRsZSBPTVBfQ0xBVVNFLgoJKHRyZWVfc2l6ZSk6IExpa2V3aXNlLgoJKG1ha2Vfbm9kZSk6IERvY3VtZW50IGhhbmRsaW5nIG9mIE9NUF9DTEFVU0UuCgkodHJlZV9ub2RlX3N0cnVjdHVyZSk6IEhhbmRsZSBPTVBfQ0xBVVNFLgoJKG9tcF9jbGF1c2VfY2hlY2tfZmFpbGVkKTogTmV3LgoJKG9tcF9jbGF1c2VfcmFuZ2VfY2hlY2tfZmFpbGVkKTogTmV3LgoJKG9tcF9jbGF1c2Vfb3BlcmFuZF9jaGVja19mYWlsZWQpOiBOZXcuCgkoYnVpbGRfb21wX2NsYXVzZSk6IE5ldy4KCSh3YWxrX3RyZWUpOiBBZGp1c3QgaGFuZGxpbmcgb2YgT01QX0NMQVVTRV8qIG5vZGVzLgoJKiB0cmVlLmggKGVudW0gb21wX2NsYXVzZV9jb2RlKTogRGVjbGFyZS4KCShPTVBfQ0xBVVNFX1NVQkNPREVfQ0hFQ0spOiBEZWZpbmUuCgkoT01QX0NMQVVTRV9SQU5HRV9DSEVDSyk6IERlZmluZS4KCShPTVBfQ0xBVVNFX0VMVF9DSEVDSyk6IERlZmluZS4KCShvbXBfY2xhdXNlX2NoZWNrX2ZhaWxlZCk6IERlY2xhcmUuCgkob21wX2NsYXVzZV9vcGVyYW5kX2NoZWNrX2ZhaWxlZCk6IERlY2xhcmUuCgkob21wX2NsYXVzZV9yYW5nZV9jaGVja19mYWlsZWQpOiBEZWNsYXJlLgoJKE9NUF9DTEFVU0VfQ0hBSU4pOiBEbyBub3QgdXNlIFRSRUVfUkFOR0VfQ0hFQ0suCgkoT01QX0NMQVVTRV9PUEVSQU5EKTogVXNlIE9NUF9DTEFVU0VfUkFOR0VfQ0hFQ0suCgkoT01QX0NMQVVTRV9QUklWQVRFX0RFQlVHKTogVXNlIE9NUF9DTEFVU0VfU1VCQ09ERV9DSEVDSy4KCShPTVBfQ0xBVVNFX0xBU1RQUklWQVRFKTogTGlrZXdpc2UuCgkoT01QX0NMQVVTRV9JRl9FWFBSKTogTGlrZXdpc2UuCgkoT01QX0NMQVVTRV9OVU1fVEhSRUFEU19FWFBSKTogTGlrZXdpc2UuCgkoT01QX0NMQVVTRV9TQ0hFRFVMRV9DSFVOS19FWFBSKTogTGlrZXdpc2UuCgkoT01QX0NMQVVTRV9SRURVQ1RJT05fQ09ERSk6IExpa2V3aXNlLgoJKE9NUF9DTEFVU0VfUkVEVUNUSU9OX0lOSVQpOiBMaWtld2lzZS4KCShPTVBfQ0xBVVNFX1JFRFVDVElPTl9NRVJHRSk6IExpa2V3aXNlLgoJKE9NUF9DTEFVU0VfUkVEVUNUSU9OX1BMQUNFSE9MREVSKTogTGlrZXdpc2UuCglVc2UgdHJlZV9ub2RlLm9tcF9jbGF1c2Uuc3ViY29kZSBpbnN0ZWFkIG9mIFRSRUVfQ09NUExFWElUWS4KCShPTVBfQ0xBVVNFX1NDSEVEVUxFX0tJTkQpOiBMaWtld2lzZS4KCShPTVBfQ0xBVVNFX0RFRkFVTFRfS0lORCk6IExpa2V3aXNlLgoJKE9NUF9DTEFVU0VfQ09ERSk6IERlZmluZS4KCShPTVBfQ0xBVVNFX1NFVF9DT0RFKTogRGVmaW5lLgoJKE9NUF9DTEFVU0VfQ09ERSk6IERlZmluZS4KCShPTVBfQ0xBVVNFX09QRVJBTkQpOiBEZWZpbmUuCgkoc3RydWN0IHRyZWVfb21wX2NsYXVzZSk6IERlY2xhcmUuCgkodW5pb24gdHJlZV9ub2RlKTogQWRkIGZpZWxkICdvbXBfY2xhdXNlJy4KCSogdHJlZXN0cnVjdC5kZWYgKFRTX09NUF9DTEFVU0UpOiBEZWZpbmUuCgkqIHRyZWUuZGVmIChPTVBfQ0xBVVNFX1BSSVZBVEUsIE9NUF9DTEFVU0VfU0hBUkVECglPTVBfQ0xBVVNFX0ZJUlNUUFJJVkFURSwgT01QX0NMQVVTRV9MQVNUUFJJVkFURSwKCU9NUF9DTEFVU0VfUkVEVUNUSU9OLCBPTVBfQ0xBVVNFX0NPUFlJTiwKCU9NUF9DTEFVU0VfQ09QWVBSSVZBVEUsIE9NUF9DTEFVU0VfSUYsCglPTVBfQ0xBVVNFX05VTV9USFJFQURTLCBPTVBfQ0xBVVNFX1NDSEVEVUxFLAoJT01QX0NMQVVTRV9OT1dBSVQsIE9NUF9DTEFVU0VfT1JERVJFRCwgT01QX0NMQVVTRV9ERUZBVUxUKTogUmVtb3ZlLgoJKE9NUF9DTEFVU0UpOiBEZWZpbmUuCgkqIHByaW50LXRyZWUuYyAocHJpbnRfbm9kZSk6IEhhbmRsZSBPTVBfQ0xBVVNFLgoJKiBvbXAtbG93LmM6IEFkYXB0IGFsbCB1c2VzIG9mIE9NUF9DTEFVU0VfKiBub2Rlcy4KCSogYy10eXBlY2suYzogTGlrZXdpc2UuCgkqIGdpbXBsaWZ5LmM6IExpa2V3aXNlLgoJKiBjLW9tcC5jOiBMaWtld2lzZS4KCSogdHJlZS1uZXN0ZWQuYzogTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmM6IExpa2V3aXNlLgoJKiBjLXBhcnNlci5jOiBMaWtld2lzZS4KCSogZ2ltcGxlLWxvdy5jIChsb3dlcl9vbXBfZGlyZWN0aXZlKTogRG8gbm90IHNldCBUUkVFX0JMT0NLIG9uCgljbGF1c2VzLgoKMjAwNi0wMS0yNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yNTcwMwoJKiBjb21iaW5lLmMgKHRyeV9jb21iaW5lKTogSGFuZGxlIHplcm9fZXh0cmFjdCBhbmQgc3RyaWN0X2xvd19wYXJ0CglvZiBub24tbG93cGFydCBTVUJSRUdzIGZvciBjb25zdGFudCByZWdfc3Vid29yZF9wIHNldCBvcHRpbWl6YXRpb24uCgoyMDA2LTAxLTI1ICBQZXRlciBCZXJnbmVyICA8YmVyZ25lckB2bmV0LmlibS5jb20+CgoJKiBnbG9iYWwuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA2LTAxLTI1ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0YXJnZXQvMjU3NTgKCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdXRwdXRfcGljX2FkZHJfY29uc3QpIDxjYXNlIFNZTUJPTF9SRUY+OgoJVXNlIG91dHB1dF9hZGRyX2NvbnN0IGluc3RlYWQgb2YgYXNzZW1ibGVfbmFtZS4KCjIwMDYtMDEtMjUgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoc2NoZWQtdmlzLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKiBoYWlmYS1zY2hlZC5jIChzY2hlZF9maW5pc2gpOiBDbGVhciBjdXJyZW50X3NjaGVkX2luZm8uCgkqIGNmZy5jIChkdW1wX2JiX2luZm8pOiBOZXcsIHNwbGl0IGZyb20gZHVtcF9mbG93X2luZm8uCgkoZHVtcF9mbG93X2luZm8pOiBDYWxsIGl0LgoJKiBwYXNzZXMuYyAoZXhlY3V0ZV90b2RvKTogQ2FsbCBwcmludF9ydGxfc2xpbV93aXRoX2JiIHRvIG1ha2UKCWEgc2xpbSBSVEwgZHVtcC4KCSogYmFzaWMtYmxvY2suaCAoZHVtcF9iYl9pbmZvKTogRGVjbGFyZS4KCSogdHJlZS1kdW1wLmMgKGR1bXBfZW5hYmxlX2FsbCk6IE9SIHRoZSBmbGFncyBvZiBhIC1mZHVtcC10cmVlLWFsbAoJb3B0aW9uLCBhbmQgYXBwbHkgb3B0aW9ucyBvbmx5IGZvciBkdW1wIGZpbGVzIHdob3NlIFRERl9SVEwsCglUREZfVFJFRSwgb3IgVERGX0lQQSBiaXRzIG1hdGNoLgoJKiBydGwuaDogRGVjbGFyZSBuZXcgZnVuY3Rpb25zIGV4cG9ydGVkIGZyb20gc2NoZWQtdmlzLmMuCgkqIHNjaGVkLXZpcy5jOiBFbmFibGUgYWxzbyBpZiBzY2hlZHVsaW5nIGlzIG5vdCB1c2VkLgoJKHByaW50X3ZhbHVlKTogUHJpbnQgdGhlIG1vZGUgb2YgcmVnaXN0ZXJzIGlmIG5vdCBpbnNpZGUgc2NoZWR1bGluZy4KCShwcmludF9pbnNuKTogTWFrZSBpdCB3b3JrIG91dHNpZGUgdGhlIHNjaGVkdWxlci4gIEJlYXV0aWZ5IHRoZSBvdXRwdXQKCWEgYml0LgoJKGR1bXBfaW5zbl9zbGltLCBkZWJ1Z19pbnNuX3NsaW0sIHByaW50X3J0bF9zbGltX3dpdGhfYmIpOiBOZXcuCgoyMDA2LTAxLTI1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRvYy9ydGwudGV4aSAoU1lNQk9MX1JFRl9DT05TVEFOVCwgU1lNQk9MX1JFRl9EQVRBKTogRG9jdW1lbnQuCgkqIGdlbmd0eXBlLmMgKGFkanVzdF9maWVsZF9ydHhfZGVmKTogR2FyYmFnZS1jb2xsZWN0IGZpZWxkIDIgb2YKCWEgU1lNQk9MX1JFRiBhcyBlaXRoZXIgYSB0cmVlIG9yIGEgY29uc3RhbnRfZGVzY3JpcHRvcl9ydHgsCglkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIENPTlNUQU5UX1BPT0xfQUREUkVTU19QLgoJKiBvcHRhYnMuYyAoaW5pdF9vbmVfbGliZnVuYyk6IE51bGxpZnkgU1lNQk9MX1JFRl9EQVRBIHJhdGhlciB0aGFuCglTWU1CT0xfUkVGX0RFQ0wuCgkqIHZhcmFzbS5jIChtYWtlX2RlY2xfcnRsLCBidWlsZF9jb25zdGFudF9kZXNjKTogU2V0IFNZTUJPTF9SRUZfREFUQQoJcmF0aGVyIHRoYW4gU1lNQk9MX1JFRl9ERUNMLgoJKHJ0eF9jb25zdGFudF9wb29sKTogUmVtb3ZlIGNvbnN0X3J0eF9zeW1faHRhYi4KCShjb25zdF9kZXNjX3J0eF9zeW1faGFzaCwgY29uc3RfZGVzY19ydHhfc3ltX2VxKTogRGVsZXRlLgoJKGluaXRfdmFyYXNtX3N0YXR1cyk6IERvbid0IGluaXRpYWxpemUgY29uc3RfcnR4X3N5bV9odGFiLgoJKGZvcmNlX2NvbnN0X21lbSk6IFBvaW50IFNZTUJPTF9SRUZfREFUQSB0byB0aGUgY29uc3RhbnQgcG9vbCBlbnRyeS4KCVJlbW92ZSBoYW5kbGluZyBvZiBjb25zdF9ydHhfc3ltX2h0YWIuCgkoZmluZF9wb29sX2NvbnN0YW50KTogRGVsZXRlLgoJKGdldF9wb29sX2NvbnN0YW50LCBnZXRfcG9vbF9jb25zdGFudF9tYXJrKTogVXNlIFNZTUJPTF9SRUZfQ09OU1RBTlQKCXJhdGhlciB0aGFuIGZpbmRfcG9vbF9jb25zdGFudC4KCShnZXRfcG9vbF9jb25zdGFudF9mb3JfZnVuY3Rpb24pOiBEZWxldGUuCgkoZ2V0X3Bvb2xfbW9kZSwgbWFya19jb25zdGFudCk6IFVzZSBTWU1CT0xfUkVGX0NPTlNUQU5UIHJhdGhlciB0aGFuCglmaW5kX3Bvb2xfY29uc3RhbnQuCgkqIHJ0bC5oIChydHVuaW9uX2RlZik6IEFkZCBydF9jb25zdGFudCBhbmQgcnRfcHRyIGZpZWxkcy4KCShYMENPTlNUQU5ULCBYMFBUUiwgU1lNQk9MX1JFRl9EQVRBKTogTmV3IG1hY3Jvcy4KCShTWU1CT0xfUkVGX0RFQ0wpOiBSZXR1cm4gTlVMTCBpZiBDT05TVEFOVF9QT09MX0FERFJFU1NfUC4KCShTWU1CT0xfUkVGX0NPTlNUQU5UKTogTmV3IG1hY3JvLgoJKGdldF9wb29sX2NvbnN0YW50X2Zvcl9mdW5jdGlvbik6IERlbGV0ZS4KCSogY29uZmlnL2kzODYvd2lubnQuYyAoaTM4Nl9wZV9tYXJrX2RsbGV4cG9ydCk6IFNldCBTWU1CT0xfUkVGX0RBVEEKCXJhdGhlciB0aGFuIFNZTUJPTF9SRUZfREVDTC4KCShpMzg2X3BlX21hcmtfZGxsaW1wb3J0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9lbWl0X21vdmUpOiBDb3B5IFNZTUJPTF9SRUZfREFUQQoJcmF0aGVyIHRoYW4gU1lNQk9MX1JFRl9ERUNMLgoJKiBjb25maWcvZGFyd2luLmMgKG1hY2hvcGljX2luZGlyZWN0X2RhdGFfcmVmZXJlbmNlKTogTGlrZXdpc2UuCgkobWFjaG9waWNfaW5kaXJlY3RfY2FsbF90YXJnZXQpOiBMaWtld2lzZS4KCjIwMDYtMDEtMjUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBmbG93LmMgKGRlbGV0ZV9ub29wX21vdmVzKTogQWRkIG1pc3NpbmcgRU9MIHRvIGR1bXAgbWVzc2FnZS4KCjIwMDYtMDEtMjUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogZ2VuYXR0cnRhYi5jIChnZW5fYnlwYXNzKTogQWxsb3cgYnlwYXNzZXMgdG8gY29udGFpbiB3aGl0ZXNwYWNlLgoKMjAwNi0wMS0yNSAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CgoJKiBjb25maWcvc2gvcHJlZGljYXRlcy5tZCAoc2hfcmVnaXN0ZXJfb3BlcmFuZCk6IEFjY2VwdCBDT05TVF9ET1VCTEUuCgoyMDA2LTAxLTI0ICBEYXZpZCBEYW5leSAgPGRkYW5leUBhdnRyZXguY29tPgoKCVBSIGphdmEvMjU4MTYKCSogY29uZmlndXJlLmFjIChlbmFibGVfdGxzKTogTmV3IGVuYWJsZSBvcHRpb24uCgkoSEFWRV9BU19UTFMpOiBEb24ndCBkbyBhc3NlbWJsZXIgY2hlY2sgaWYgZW5hYmxlX3RscyBzZXQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogZG9jL2luc3RhbGwudGV4aSAoLS1lbmFibGUtdGxzKTogRG9jdW1lbnQgbmV3IG9wdGlvbi4KCSgtLWRpc2FibGUtdGxzKTogRGl0dG8uCgoyMDA2LTAxLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRlaGF0LmNvbT4KCgkqIGFsaWFzLmggKEFMSUFTX1NFVF9NRU1PUllfQkFSUklFUik6IE5ldy4KCSogYWxpYXMuYyAodHJ1ZV9kZXBlbmRlbmNlKTogUmVzcGVjdCBpdC4KCShjYW5vbl90cnVlX2RlcGVuZGVuY2UsIHdyaXRlX2RlcGVuZGVuY2VfcCk6IExpa2V3aXNlLgoJKiBidWlsdGlucy5jIChnZXRfYnVpbHRpbl9zeW5jX21lbSk6IFNldCBpdC4KCjIwMDYtMDEtMjUgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCgkqIGxvb3AtaXYuYyAoaXZfYW5hbHlzaXNfbG9vcF9pbml0KTogVXNlIGRmIGFuYWx5c2lzIGluIGEgbW9yZQoJZWZmaWNpZW50IHdheS4KCjIwMDYtMDEtMjQgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogZXhwbWVkLmMgKHN0b3JlX2JpdF9maWVsZCk6IERvbid0IGFyYml0cmFyaWx5IGRlbnkgdXNpbmcgaW5zdgoJZm9yIHN0b3JpbmcgY29uc3RhbnRzIGluIHNpbmdsZS1iaXQgYml0ZmllbGRzLgoKMjAwNi0wMS0yNSAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBkZnAuYyAoZGZwX2J5dGVfc3dhcCk6IFVzZSB1aW50MzJfdCBhbmQgbm90IHVuc2lnbmVkIGxvbmcuCgoyMDA2LTAxLTI0ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0cmVlLW9wdC8yNTg2MAoJKiB0cmVlLXNzYS1wcmUuYyAocGhpX3RyYW5zbGF0ZSk6IFJldHVybiBOVUxMCglmb3IgQUdHUkVHQVRFX1RZUEUncy4KCjIwMDYtMDEtMjQgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BwYW5peC5jb20+CgoJKiBnZW5hdXRvbWF0YS5jIChwcm9jZXNzX3N0YXRlX2Zvcl9pbnNuX2VxdWl2X3BhcnRpdGlvbik6CglVc2UgeGNhbGxvYyBmb3IgaW5zbl9hcmNzX2FycmF5LgoJKiB2ZWMuaCAoREVGX1ZFQ19BTExPQ19GVU5DX0kpOiBOZXcgc2V0IG9mIHRlbXBsYXRlcy4KCShERUZfVkVDX0FMTE9DX0kpOiBVc2UgaXQsIG5vdCBERUZfVkVDX0FMTE9DX0ZVTkNfUC4KCjIwMDYtMDEtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBnZW5leHRyYWN0LmMgKFZFQ19zYWZlX3NldF9sb2NzdHIpOiBUYWtlIFZFQyBieSByZWZlcmVuY2U7Cgl1cGRhdGUgYWxsIGNhbGxlcnMuCgoyMDA2LTAxLTIzICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjU4OTAKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjU5MDUKCSogY29tYmluZS5jIChleHBhbmRfY29tcG91bmRfb3BlcmF0aW9uLCBleHBhbmRfZmllbGRfYXNzaWdubWVudCk6CglGYWlsIGlmIHRoZSBiaXRmaWVsZCdzIGZpbmFsIHBvc2l0aW9uIGlzIG91dCBvZiBib3VuZHMuCgoyMDA2LTAxLTI0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGFpcnMuY29tPgoKCVBSIG1pZGRsZS1lbmQvMjU5MzAKCSogY2dyYXBodW5pdC5jIChjZ3JhcGhfb3V0cHV0X2luX29yZGVyKTogRG9uJ3QgY2xlYXIKCWNncmFwaF9hc21fbm9kZXMgdW50aWwgYWZ0ZXIgYXNtIHN0cmluZ3MgaGF2ZSBiZWVuIG91dHB1dC4KCjIwMDYtMDEtMjMgIEFkYW0gTmVtZXQgIDxhbmVtZXRAY2F2aXVtbmV0d29ya3MuY29tPgoKCSogZml4LWhlYWRlci5jIChyZWFkX3NjYW5fZmlsZSk6IEFkZCBuZXcgcGFyYW1ldGVyIGltdWx0aWxpYiB3aGVuCgljYWxsaW5nIHJlZ2lzdGVyX2luY2x1ZGVfY2hhaW5zLgoKMjAwNi0wMS0yMyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiBvbXAtbG93LmM6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoKMjAwNi0wMS0yMyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgkgICAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJUFIgdHJlZS1vcHQvMjUzMTUKCVBSIHRyZWUtb3B0LzI1ODU3CgkqIHRyZWUtc3NhLXByZS5jIChpbnNlcnRfZXh0cmFfcGhpcyk6IElmIGFuIGluY29tbWluZyBlZGdlIGlzIGFibm9ybWFsCglyZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24uCgoyMDA2LTAxLTIyICBaYWNrIFdlaW5iZXJnICA8emFja3dAcGFuaXguY29tPgoKCSogcnRsLmRlZiAobWF0Y2hfY29kZSk6IEFkZCBzZWNvbmQgYXJndW1lbnQuCgkqIGdlbnByZWRzLmMgKHdyaXRlX2V4dHJhY3Rfc3ViZXhwKTogTmV3IGZ1bmN0aW9uLgoJKHdyaXRlX21hdGNoX2NvZGUpOiBBZGQgcGF0aCBhcmd1bWVudC4gIFVzZSB3cml0ZV9leHRyYWN0X3N1YmV4cC4KCSh3cml0ZV9wcmVkaWNhdGVfZXhwcik6IFBhc3MgcGF0aCB0byB3cml0ZV9tYXRjaF9jb2RlLgoJKG1hcmtfbW9kZV90ZXN0cyk6IE1BVENIX0NPREUgYXBwbGllZCB0byBhIHN1YmV4cHJlc3Npb24gZG9lcwoJbm90IHBlcmZvcm0gYSBtb2RlIHRlc3QuCgkqIGdlbnJlY29nLmMgKGNvbXB1dGVfcHJlZGljYXRlX2NvZGVzKTogTUFUQ0hfQ09ERSBhcHBsaWVkIHRvCglhIHN1YmV4cHJlc3Npb24gZG9lcyBub3QgY29uc3RyYWluIHRoZSB0b3AtbGV2ZWwgY29kZSBzZXQuCgkqIHJlYWQtcnRsLmMgKHJlYWRfcnR4X3ZhcmlhZGljKTogTmV3IGZ1bmN0aW9uLgoJKHJlYWRfcnR4XzEpOiBVc2UgaXQ7IGFsbG93IEFORCBhbmQgSU9SIHRvIGJlIHZhcmlhZGljLgoJKiBkb2MvbWQudGV4aTogRG9jdW1lbnQgbmV3IG5vdGF0aW9uLgoJKiBjb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIChjbXBzaV9vcGVyYW5kXzEpOiBGb2xkIGludG8gLi4uCgkoY21wc2lfb3BlcmFuZCk6IC4uLiBoZXJlLCB1c2luZyBuZXcgbm90YXRpb24uCgoyMDA2LTAxLTIyICBaYWNrIFdlaW5iZXJnICA8emFja3dAcGFuaXguY29tPgoKCSogdmFycmF5LmM6IFJlbW92ZSBHRU5FUkFUT1JfRklMRSAjaWZkZWZzLgoKMjAwNi0wMS0yMiAgWmFjayBXZWluYmVyZyAgPHphY2t3QHBhbml4LmNvbT4KCgkqIGdlbmF1dG9tYXRhLmMgKG91dHB1dF9yZXNlcnZlZF91bml0c190YWJsZSk6IEVtaXQgbm90aGluZyBpZgoJZGVzY3JpcHRpb24tPnF1ZXJ5X3VuaXRzX251bSBpcyB6ZXJvLiAgUmVtb3ZlIGV4dHJhIGJsYW5rIGxpbmUuCgkob3V0cHV0X2NwdV91bml0X3Jlc2VydmF0aW9uX3ApOiBTaG9ydCBjaXJjdWl0CglpZiBkZXNjcmlwdGlvbi0+cXVlcnlfdW5pdHNfbnVtIGlzIHplcm8uCgoyMDA2LTAxLTIyICBaYWNrIFdlaW5iZXJnICA8emFja3dAcGFuaXguY29tPgoKCSogZ2VuYXR0cnRhYi5jOiBEb24ndCBpbmNsdWRlIGdlbmF0dHJ0YWIuaC4gIERlZmluZSBBVFRSX05PTkUKCWFuZCBBVFRSX1NQRUNJQUwgKGZyb20gZ2VuYXR0cnRhYi5oKS4gIERvbid0IGRlZmluZSBudW1fZGZhX2RlY2xzCglub3IgYW55IG9mIHRoZSByYW5kb20gaGFuZGZ1bCBvZiB2YXJpYWJsZXMgdGhhdCB1c2VkIHRvIGJlIG5lY2Vzc2FyeQoJd2hlbiB0aGlzIHByb2dyYW0gd2FzIGxpbmtlZCB3aXRoIHJ0bGFuYWwuby4gIFBydW5lIHNldCBvZiBmb3J3YXJkCglmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgkoc3RydWN0IGF0dHJfZGVzYyk6IFJlbW92ZSBzdGF0aWNfcCBmaWVsZC4KCShoYXNoX29ic3RhY2ssIHRlbXBfb2JzdGFjaywgYXR0cl9oYXNoX3RhYmxlLCBhdHRyX3ByaW50ZikKCShjaGVja19hdHRyX3Rlc3QsIG1ha2VfaW50ZXJuYWxfYXR0ciwgbWFrZV9udW1lcmljX3ZhbHVlKTogTWFrZSBzdGF0aWMuCgkoYXR0cl9zdHJpbmcpOiBEbyBub3QgcmVhZCB0aGUgY2hhcmFjdGVyIG9uZSBwYXN0IHRoZSBsZW5ndGggb2YKCXRoZSBzdHJpbmcuCgkod3JpdGVfYXR0cl9nZXQsIGZpbmRfYXR0ciwgbWFrZV9pbnRlcm5hbF9hdHRyKTogRG9uJ3QgdG91Y2ggc3RhdGljX3AuCgkoc3RydWN0IGluc25fcmVzZXJ2LCBhbGxfaW5zbl9yZXNlcnZzLCBsYXN0X2luc25fcmVzZXJ2X3ApCgkobl9pbnNuX3Jlc2VydnMsIGdlbl9pbnNuX3Jlc2Vydiwgc3RydWN0IGJ5cGFzc19saXN0LCBhbGxfYnlwYXNzZXMpCgkobl9ieXBhc3NlcywgZ2VuX2J5cGFzc18xLCBnZW5fYnlwYXNzLCBwcm9jZXNzX2J5cGFzc2VzKQoJKG1ha2VfYXV0b21hdG9uX2F0dHJzKTogTmV3LgoJKG1haW4pOiBEbyBub3QgY2FsbCBpbnRvIGdlbmF1dG9tYXRhLiAgQ2FsbCBsb2NhbCBnZW5fYnlwYXNzCglhbmQgZ2VuX2luc25fcmVzZXJ2IGFzIGFwcHJvcHJpYXRlLiAgQ2FsbCBtYWtlX2F1dG9tYXRvbl9hdHRycy4KCVJlbW92ZSBzcGVjaWFsIGNhc2UgZm9yIGluc25fYWx0cy4KCSogZ2VuYXV0b21hdGEuYzogSW5jbHVkZSBnZW5zdXBwb3J0Lmg7IG5vdCBnZW5hdHRydGFiLmggbm9yCgl2YXJyYXkuaCAobGVmdG92ZXIgZnJvbSBwcmV2aW91cyBjaGFuZ2UpLiAgUHJ1bmUgc2V0IG9mIGZvcndhcmQKCWZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4gIFJlbW92ZSBzdGF0ZV9hbHRzIGZpZWxkcyBmcm9tIGFsbAoJc3RydWN0dXJlcy4gIFJlbW92ZSBzdGF0ZV9hbHRzX3RhYmxlIGZyb20gc3RydWN0IGF1dG9tYXRvbi4KCU1ha2UgZXZlcnl0aGluZyBleGNlcHQgbWFpbiBzdGF0aWMuICBEbyBub3QgbWFpbnRhaW4gbnVtX2RmYV9kZWNscy4KCURvIG5vdCBtYWludGFpbiBzdGF0ZV9hbHRzIGZpZWxkcyBvZiB2YXJpb3VzIHN0cnVjdHVyZXMuCgkocHJvY2Vzc19kZWNscyk6IERvbid0IHZhbGlkYXRlIGNvbmRleHAgZm9yIGRtX2luc25fcmVzZXJ2IGRlY2xzLgoJKGFkZF9hcmMpOiBSZW1vdmUgc3RhdGVfYWx0cyBhcmd1bWVudC4gIEFsbCBjYWxsZXJzIHVwZGF0ZWQuCgkob3V0cHV0X3Jlc2VydmVkX3VuaXRzX3RhYmxlKTogRW1pdCAjaWZkZWYgaGVyZS4uLgoJKG91dHB1dF90YWJsZXMpOiAuLi5ub3QgaGVyZS4gIERvbid0IGdlbmVyYXRlIHN0YXRlX2FsdHMgdGFibGVzLgoJKGV4cGFuZF9hdXRvbWF0YSk6IERvbid0IGdlbmVyYXRlIGF0dHJpYnV0ZXMuCgkod3JpdGVfYXV0b21hdGEpOiBEb24ndCBnZW5lcmF0ZSBzdGF0ZV9hbHRzIGZ1bmN0aW9ucy4KCShtYWluKTogTmV3IGZ1bmN0aW9uLgoJKGl0X2lzX2VtcHR5X3Jlc2Vydl9zZXRzLCBvdXRwdXRfc3RhdGVfYWx0c19mdWxsX3ZlY3RfbmFtZSkKCShvdXRwdXRfc3RhdGVfYWx0c19jb21iX3ZlY3RfbmFtZSwgb3V0cHV0X3N0YXRlX2FsdHNfY2hlY2tfdmVjdF9uYW1lKQoJKEFVVE9NQVRPTl9TVEFURV9BTFRTX01BQ1JPX05BTUUsIElOVEVSTkFMX1NUQVRFX0FMVFNfRlVOQ19OQU1FKQoJKFNUQVRFX0FMVFNfRlVOQ19OQU1FLCBJTlNOX0RFRkFVTFRfTEFURU5DWV9GVU5DX05BTUUpCgkoQllQQVNTX1BfRlVOQ19OQU1FLCBvdXRwdXRfc3RhdGVfYWx0c190YWJsZSkKCShvdXRwdXRfYXV0b21hdGFfbGlzdF9zdGF0ZV9hbHRzX2NvZGUsIG91dHB1dF9pbnRlcm5hbF9zdGF0ZV9hbHRzX2Z1bmMpCgkob3V0cHV0X3N0YXRlX2FsdHNfZnVuYywgbWFrZV9pbnNuX2FsdHNfYXR0ciwgbWFrZV9ieXBhc3NfYXR0cikKCShtYWtlX2ludGVybmFsX2RmYV9pbnNuX2NvZGVfYXR0ciwgbWFrZV9kZWZhdWx0X2luc25fbGF0ZW5jeV9hdHRyKToKCURlbGV0ZS4KCSogZ2VuYXR0ci5jOiBEZWNsYXJlIGludGVybmFsX2RmYV9pbnNuX2NvZGUgaW4gaW5zbi1hdHRyLmguCgkqIGdlbmF0dHJ0YWIuaDogRGVsZXRlIGZpbGUuCgkqIE1ha2VmaWxlLmluIChPQkpTLWNvbW1vbik6IEFkZCBpbnNuLWF1dG9tYXRhLm8uCgkoaW5zbi1hdXRvbWF0YS5vKTogTmV3IHJ1bGUuCgkoc2ltcGxlX2dlbmVyYXRlZF9jKTogQWRkIGluc24tYXV0b21hdGEuYy4KCShidWlsZC9nZW5hdHRydGFiLm8sIGJ1aWxkL2dlbmF1dG9tYXRhLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKGdlbnByb2dtZCk6IEFkZCBhdXRvbWF0YS4KCShidWlsZC9nZW5hdHRydGFiKTogTmVlZHMgbm8gZXh0cmEgb2JqZWN0cyBub3IgbGlicmFyaWVzLgoJKGJ1aWxkL2dlbmF1dG9tYXRhKTogTmVlZHMgYnVpbGQvdmVjLm8gYW5kIC1sbS4KCjIwMDYtMDEtMjIgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BwYW5peC5jb20+CgoJKiBnZW5hdXRvbWF0YS5jIChwcm9jZXNzX3N0YXRlX2xvbmdlc3RfcGF0aCwgbWF4X2RmYV9pc3N1ZV9yYXRlKQoJKG91dHB1dF9kZmFfbWF4X2lzc3VlX3JhdGUsIGxvY2tlZF9zdGF0ZXNfbnVtKTogRGVsZXRlLgoJKHN0cnVjdCBhdXRvbWF0b24pOiBBZGQgbG9ja2VkX3N0YXRlcyBmaWVsZC4KCShvdXRwdXRfZGVhZF9sb2NrX3ZlY3QpOiBTYXZlIG51bWJlciBvZiBsb2NrZWQgc3RhdGVzIGluCglhdXRvbWF0b24tPmxvY2tlZF9zdGF0ZXMuICBJZiBpdCBpcyB6ZXJvLCBkb24ndCBwcmludCBhbnl0aGluZy4KCShvdXRwdXRfbWF4X2luc25fcXVldWVfaW5kZXhfZGVmKTogRGVmaW5lIG1heF9pbnNuX3F1ZXVlX2luZGV4IGNvbnN0LgoJKG91dHB1dF9pbnRlcm5hbF9kZWFkX2xvY2tfZnVuYyk6IE9ubHkgdGVzdCB0aGUgZGVhZF9sb2NrX3ZlY3QKCWZvciBhdXRvbWF0YSB0aGF0IGhhdmUgbG9ja2VkIHN0YXRlcy4KCShvdXRwdXRfc3RhdGlzdGljcyk6IEFsd2F5cyBwcmludCB0aGUgbnVtYmVyIG9mIGxvY2tlZCBzdGF0ZXMgZm9yCgllYWNoIGF1dG9tYXRvbi4gIENhbGN1bGF0ZSB0b3RhbCBudW1iZXIgb2YgbG9ja2VkIHN0YXRlcyBoZXJlLgoJKHdyaXRlX2F1dG9tYXRhKTogRG9uJ3QgY2FsbCBvdXRwdXRfZGZhX21heF9pc3N1ZV9yYXRlLgoJKiBnZW5hdHRydGFiLmM6IERlZmluZSBsZW5ndGhfdW5pdF9sb2cgYXMgYSBjb25zdCB2YXJpYWJsZS4KCSogZ2VuYXR0ci5jOiBEb24ndCBlbWl0IE1BWF9ERkFfSVNTVUVfUkFURS4gIERlY2xhcmUKCW1heF9pbnNuX3F1ZXVlX2luZGV4IGNvbnN0LgoJKiBmaW5hbC5jIChsZW5ndGhfdW5pdF9sb2cpOiBEZWNsYXJlIGNvbnN0LgoJKiBkb2MvdG0udGV4aTogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIE1BWF9ERkFfSVNTVUVfUkFURS4KCjIwMDYtMDEtMjIgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BwYW5peC5jb20+CgoJKiBnZW5hdXRvbWF0YS5jOiBJbmNsdWRlIHZlYy5oLCBub3QgdmFycmF5LmguCglEZWxldGUgdmxhX3B0cl90LCBhbGwgb2YgdGhlIFZMQV9QVFJfIG1hY3JvcywgYW5kIGFsbCBvZiB0aGUKCVZMQV9IV0lOVF8gbWFjcm9zLiAgQ2hhbmdlIHZsYV9od2ludF90IHRvIGEgdHlwZWRlZiBmb3IKCVZFQyh2ZWN0X2VsX3QsaGVhcCkgKi4gIENvbnZlcnQgYWxsIHVzZXMgb2YgVkxBXyogbWFjcm9zIHRvCglWRUNfKiBtYWNyb3Mgb3BlcmF0aW5nIG9uIGFwcHJvcHJpYXRlbHkgdHlwZWQgdmVjdG9ycywgb3IgdG8KCW1hbGxvY2VkIGFycmF5cyB3aGVuIHRoZSBzaXplIGlzIGtub3duIGluIGFkdmFuY2UuICBDb25zdC1pZnkKCW1hbnkgY2hhciogdmFyaWFibGVzIGFuZCBmdW5jdGlvbiBhcmd1bWVudHMuICBObyBmdW5jdGlvbmFsIGNoYW5nZXMuCgkqIE1ha2VmaWxlLmluIChidWlsZC92YXJyYXkubyk6IERlbGV0ZSBydWxlLgoJKGJ1aWxkL2dlbmF0dHJ0YWIpOiBEZXBlbmQgb24gYnVpbGQvdmVjLm8gaW5zdGVhZCBvZiBidWlsZC92YXJyYXkuby4KCShidWlsZC9nZW5hdXRvbWF0YS5vKTogRGVwZW5kIG9uIHZlYy5oIGluc3RlYWQgb2YgJChWQVJSQVlfSCkuCgoyMDA2LTAxLTIyICBaYWNrIFdlaW5iZXJnICA8emFja3dAcGFuaXguY29tPgoKCSogZ2Vuc3VwcG9ydC5jOiBEZWZpbmUgZ2V0X2luc25fbmFtZSBhbmQgcmVjb3JkX2luc25fbmFtZSBoZXJlLgoJKHJlYWRfbWRfcnR4KTogQ2FsbCByZWNvcmRfaW5zbl9uYW1lIGFzIGFwcHJvcHJpYXRlLgoJKiBnZW5hdHRyLmMsIGdlbmF0dHJ0YWIuYywgZ2VuY29kZXMuYywgZ2VuY29uZmlnLmMsIGdlbmVtaXQuYwoJKiBnZW5leHRyYWN0LmMsIGdlbmZsYWdzLmMsIGdlbm9waW5pdC5jLCBnZW5vdXRwdXQuYywgZ2VucGVlcC5jCgkqIGdlbnByZWRzLmMsIGdlbnJlY29nLmM6IERvbid0IGRlZmluZSBnZXRfaW5zbl9uYW1lIG5vcgoJcmVjb3JkX2luc25fbmFtZS4KCSogTWFrZWZpbGUuaW4gKEJVSUxEX1NVUFBPUlQsIEJVSUxEX1BSSU5UKTogRm9sZCBpbnRvIEJVSUxEX1JUTC4KCShCVUlMRF9WQVJSQVkpOiBEZWxldGUuCgkoZ2VucHJvZ25vcm1hbCk6IFJlbmFtZSBnZW5wcm9nbWQuICBGb2xkIGluIGFsbCBwcm9ncmFtcyBmcm9tCglnZW5wcm9nbm9wcmludDsgYWxzbyBhdHRydGFiLgoJKGJ1aWxkL2dlbmF0dHJ0YWIpOiBKdXN0IG1lbnRpb24gZ2VuYXV0b21hdGEubyBhbmQgdmFycmF5Lm8uCglSZW9yZ2FuaXplIGEgYml0LCBhZGQgY29tbWVudHMgdG8gbWFrZSB0aGUgY2F0ZWdvcmllcyBjbGVhcmVyLgoKMjAwNi0wMS0yMiAgWmFjayBXZWluYmVyZyAgPHphY2t3QHBhbml4LmNvbT4KCgkqIGdlbmNvbmRpdGlvbnMuYyAoY29uZGl0aW9uX3RhYmxlLCBhZGRfY29uZGl0aW9uKTogRGVsZXRlLgoJKHdyaXRlX2NvbmRpdGlvbnMpOiBEb24ndCBlbWl0IG5faW5zbl9jb25kaXRpb25zIG5vcgoJaW5zbl9lbGlzaW9uX3VuYXZhaWxhYmxlLiAgSXNzdWUgdGhlIGdjYyB2ZXJzaW9uICNpZmRlZiBoZXJlLAoJaW5zaWRlIHRoZSB0YWJsZSwgd2l0aCBubyAjZWxzZSBjbGF1c2UgLi4uCgkod3JpdGVfaGVhZGVyKTogLi4ubm90IGhlcmUuCgkod3JpdGVfd3JpdGVyKTogTmV3IGZ1bmN0aW9uLgoJKG1haW4pOiBEb24ndCBpbml0aWFsaXplIGNvbmRpdGlvbl90YWJsZS4gIFVzZSBhZGRfY190ZXN0LgoJQ2FsbCB3cml0ZV93cml0ZXIuCgkqIGdlbnN1cHBvcnQuYyAoaW5pdF9tZF9yZWFkZXJfYXJnc19jYik6IEhhbmRsZSBtdWx0aXBsZSBpbnB1dAoJZmlsZXMgb24gdGhlIGNvbW1hbmQgbGluZS4KCShtYXliZV9ldmFsX2NfdGVzdCk6IERvbid0IGNoZWNrIGluc25fZWxpc2lvbl91bmF2YWlsYWJsZS4KCVJldHVybiAtMSBpZiB0aGVyZSBpcyBubyBlbnRyeSBpbiB0aGUgdGFibGUsIGRvbid0IGFib3J0LgoJKGFkZF9jX3Rlc3QsIHRyYXZlcnNlX2NfdGVzdHMpOiBOZXcgZnVuY3Rpb25zLgoJKiBnZW5zdXBwb3J0LmggKGluc25fZWxpc2lvbl91bmF2YWlsYWJsZSwgaW5zbl9jb25kaXRpb25zKQoJKG5faW5zbl9jb25kaXRpb25zKTogRGVsZXRlIGRlY2xhcmF0aW9ucy4KCShhZGRfY190ZXN0LCB0cmF2ZXJzZV9jX3Rlc3RzKTogRGVjbGFyZS4KCSogcmVhZC1ydGwuYzogSW5jbHVkZSBnZW5zdXBwb3J0LmguCgkocmVhZF9jb25kaXRpb25zKTogTmV3IGZ1bmN0aW9uLgoJKHJlYWRfcnR4KTogSWYgcmVhZF9ydHhfMSByZXR1cm5zIDAsIHRyZWF0IGFzIEVPRi4KCShyZWFkX3J0eF8xKTogSWYgd2UgZ2V0IEVPRiB3aGVuIHdlIHdlcmUgbG9va2luZyBmb3IgYW4gaW5pdGlhbAoJb3BlbiBwYXJlbiwgcmV0dXJuIDAuICBDYWxsIHJlYWRfY29uZGl0aW9ucyB3aGVuIGFwcHJvcHJpYXRlLgoJKiBNYWtlZmlsZS5pbjogS2lsbCBCVUlMRF9FQVJMWV9TVVBQT1JUIGFuZCBhbGwgcmVmZXJlbmNlcyB0bwoJZHVtbXktY29uZGl0aW9ucy5vLiAgRWxpbWluYXRlIHJlZmVyZW5jZXMgdG8gaW5zbi1jb25kaXRpb25zLm8sCglvciBjaGFuZ2UgdGhlbSB0byBidWlsZC9nZW5jb25kbWQubywgYXMgYXBwcm9wcmlhdGUuICBSZW1vdmUKCWluc24tY29uc3RhbnRzLmggZnJvbSAkKHNpbXBsZV9nZW5lcmF0ZWRfaCkgYW5kIGluc24tY29uZGl0aW9ucy5jCglmcm9tICQoc2ltcGxlX2dlbmVyYXRlZF9jKS4gIEZvciBhbGwgZmlsZXMgcmVtYWluaW5nIGluIHRob3NlCgl0d28gbGlzdHMsIGFkZCBpbnNuLWNvbmRpdGlvbnMubWQgdG8gdGhlIGdlbmVyYXRvciBjb21tYW5kIGxpbmUuCglHaXZlIGluc24tY29uc3RhbnRzLmgvcy1jb25zdGFudHMgdGhlaXIgb3duIHJ1bGVzLiAgQWRkIHJ1bGVzCglmb3IgYnVpbGQvZ2VuY29uZG1kLmMsIHMtY29uZGl0aW9ucywgaW5zbi1jb25kaXRpb25zLm1kLCBzLWNvbmRtZC4KCShidWlsZC9yZWFkLXJ0bC5vKTogRGVwZW5kIG9uIGdlbnN1cHBvcnQuaC4KCShnZW5wcm9nbm9ybWFsKTogSW5jbHVkZSBwcmVkcy4KCShnZW5wcm9nZWFybHkpOiBSZW5hbWUgZ2VucHJvZ25vcHJpbnQ7IG9ubHkgZGlmZmVyZW5jZSBpcyBub3cgdGhhdAoJdGhleSBkb24ndCBsaW5rIHdpdGggJChCVUlMRF9QUklOVCkuCgkqIGR1bW15LWNvbmRpdGlvbnMuYzogRGVsZXRlLgoKMjAwNi0wMS0yMiAgWmFjayBXZWluYmVyZyAgPHphY2t3QHBhbml4LmNvbT4KCgkqIGdlbmV4dHJhY3QuYzogRG9uJ3QgaW5jbHVkZSBpbnNuLWNvbmZpZy5oLiAgRG8gaW5jbHVkZSB2ZWMuaC4KCURlY2xhcmUgdmVjdG9ycyBvZiBpbnQsIGNoYXIsIGFuZCBsb2NzdHIuCgkobG9jc3RyKTogTmV3IHR5cGVkZWYuCgkoc3RydWN0IGV4dHJhY3Rpb24pOiBNYWtlIGFsbCBhcnJheSBmaWVsZHMgaW50byBiYXJlIHBvaW50ZXJzLgoJKGluc25fbmFtZV9wdHIsIGluc25fbmFtZV9wdHJfc2l6ZSk6IE1vdmUgZG93biBieSBnZXRfaW5zbl9uYW1lLgoJKGluc25fY29kZV9udW1iZXIpOiBEZWxldGUuCgkoYWNjdW1fZXh0cmFjdCk6IE5ldyBzdHJ1Y3QuCgkoVkVDX3NhZmVfc2V0X2xvY3N0ciwgVkVDX2NoYXJfdG9fc3RyaW5nKTogTmV3IGZ1bmN0aW9ucy4KCShnZW5faW5zbik6IFRha2UgaW5zbl9jb2RlX251bWJlciBhcyBhbiBhcmd1bWVudC4gIFVzZSBhbgoJYWNjdW1fZXh0cmFjdCBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBsb2FkaW5nIGRhdGEgZGlyZWN0bHkgaW50bwoJYSBzdHJ1Y3QgZXh0cmFjdGlvbiwgYW5kIGhhdmluZyB0byBrbm93IGhvdyBiaWcgaXQgbWlnaHQgZ2V0LgoJKHdhbGtfcnR4KTogT3BlcmF0ZSBlbnRpcmVseSBvbiBhbiBhY2N1bV9leHRyYWN0IHN0cnVjdHVyZS4KCShwcmludF9wYXRoKTogQXZvaWQgdW5uZWNlc3NhcnkgdXNlIG9mIHByaW50Zi4KCShwcmludF9oZWFkZXIpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBvZiBtYWluLiAgRGlzdGluZ3Vpc2gKCW1vcmUgY2FyZWZ1bGx5IGJldHdlZW4gYW4gdW5yZWNvZ25pemFibGUgaW5zbiBhbmQgYW4gaW5zbiB0aGF0CgloYXMgdGhlIGNvZGUgbnVtYmVyIG9mIGEgZGVmaW5lX2V4cGFuZC4KCShtYWluKTogUGFzcyBpbnNuX2NvZGVfbnVtYmVyIHRvIGdlbl9pbnNuLiAgQ2FsbCBwcmludF9oZWFkZXIKCW9ubHkgYWZ0ZXIgcGFyc2luZy4gIEF2b2lkIHVubmVjZXNzYXJ5IHVzZSBvZiBwcmludGYuCgkqIE1ha2VmaWxlLmluIChidWlsZC92ZWMubyk6IE5ldyBydWxlLgoJKGJ1aWxkL2dlbmV4dHJhY3QpOiBEZXBlbmQgb24gYnVpbGQvdmVjLm8uCgkoYnVpbGQvZ2VuZXh0cmFjdC5vKTogRG9uJ3QgZGVwZW5kIG9uIGluc24tY29uZmlnLmguCgoyMDA2LTAxLTIyICBaYWNrIFdlaW5iZXJnICA8emFja3dAcGFuaXguY29tPgoKCSogTWFrZWZpbGUuaW46IENvbnNvbGlkYXRlIG1vc3QgcnVsZXMgdGhhdCB1c2UgJChDQ19GT1JfQlVJTEQpIGFuZC9vcgoJJChSVU5fR0VOKS4gIFVzZSBwYXR0ZXJuIHJ1bGVzIHRvIGZhY3RvciBvdXQgYXMgbXVjaCBib2lsZXJwbGF0ZSBhcwoJcHJhY3RpY2FsLiAgRWxpbWluYXRlIHBlci1nZW5lcmF0b3ItcHJvZ3JhbSBsaW5rIHJ1bGVzLgoKMjAwNi0wMS0yMyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgbWlkZGxlLWVuZC8yNDQzNwoJKiB0cmVlLXNzYS1jY3AuYyAoZm9sZF9zdG10KTogTW92ZSBmb2xkaW5nIG9mIE9CSl9UWVBFX1JFRgoJd2l0aCBhIGNhbGwgZXhwciB0byAuLi4KCSogZm9sZC1jb25zdC5jIChmb2xkX3Rlcm5hcnkpIDxjYXNlIENBTExfRVhQUj46IEhlcmUuCgoyMDA2LTAxLTIzICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBjZmdsb29wbWFuaXAuYyAobHZfYWRqdXN0X2xvb3BfZW50cnlfZWRnZSk6IEFkZCBjb21tZW50CgliZWZvcmUgbWFrZV9lZGdlIHdpdGggY29uZGl0aW9uYWwgRURHRV9UUlVFX1ZBTFVFLgoKMjAwNi0wMS0yMyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYi5nY2NAZ21haWwuY29tPgoJSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoJUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjU2NTQKCSogY2ZnZXhwYW5kLmMgKGFnZ3JlZ2F0ZV9jb250YWluc191bmlvbl90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKGFkZF9hbGlhc19zZXRfY29uZmxpY3RzKTogQ2FsbCBpdC4gIE1ha2Ugc3VyZSB0byBhZGQgY29uZmxpY3RzCglmb3Igc3RydWN0dXJlIHZhcmlhYmxlcyB0aGF0IGNvbnRhaW4gYSB1bmlvbiB0eXBlLgoKMjAwNi0wMS0yMyAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnZW5ndHlwZS5jIChuZXdfc3RydWN0dXJlKTogUmV0dXJuIHRoZSBzdHJ1Y3R1cmUuCgkoY3JlYXRlX29wdGlvbik6IEFkZCBhbiBleHRyYSAibmV4dCIgYXJndW1lbnQuCgkoY3JlYXRlX2ZpZWxkKTogTmV3IGZ1bmN0aW9uLgoJKGFkanVzdF9maWVsZF9ydHhfZGVmKTogVXNlIGNyZWF0ZV9vcHRpb24gYW5kIGNyZWF0ZV9maWVsZC4KCVJlbW92ZSBhIG5vdy11bm5lY2Vzc2FyeSBjYWxsIHRvIGZpbmRfc3RydWN0dXJlLgoJKGFkanVzdF9maWVsZF90cmVlX2RlZik6IExpa2V3aXNlLgoJKG5vdGVfeWFjY190eXBlKTogUmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGNhbGwgdG8gZmluZF9zdHJ1Y3R1cmUuCgkqIGdlbmd0eXBlLmggKG5ld19zdHJ1Y3R1cmUpOiBSZXR1cm4gdGhlIHN0cnVjdHVyZS4KCShjcmVhdGVfb3B0aW9uKTogQWRkIGFuIGV4dHJhIGFyZ3VtZW50LgoJKiBnZW5ndHlwZS15YWNjLnkgKHR5cGUpOiBSZW1vdmUgdW5uZWNlc3NhcnkgY2FsbHMgdG8gZmluZF9zdHJ1Y3R1cmUuCgkob3B0aW9uKTogQWRqdXN0IGNhbGxzIHRvIGNyZWF0ZV9vcHRpb24uCgoyMDA2LTAxLTIyICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBjb25maWcvcnM2MDAwL2FpeC5oIChTVEFDS19CT1VOREFSWSk6IERlZmluZS4KCjIwMDYtMDEtMjIgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CglQZXRlciBCYXJhZGEgIDxwZXRlckB0aGUtYmFyYWRhcy5jb20+CgoJKiBjb25maWcvbTY4ay9tNjhrLm1kOiBBZGQgQ29sZGZpcmUgRlBVIHN1cHBvcnQuCglEZWZpbmUgRlAgbW9kZSBtYWNybyBhbmQgYXNzb2NpYXRlZCBhdHRyaWJ1dGVzLgoJVXNlIGl0IGZvciBmbG9hdCBtb2RlIHBhdHRlcm5zLgoJKiBjb25maWcvbTY4ay9saW51eC5oIChGVU5DVElPTl9WQUxVRSk6IFVzZSBtNjhrX2Z1bmN0aW9uX3ZhbHVlLgoJKExJQkNBTExfVkFMVUUpOiBVc2UgbTY4a19saWJjYWxsX3ZhbHVlLgoJKiBjb25maWcvbTY4ay9tNjhrLXByb3Rvcy5oIChtNjhrX2xpYmNhbGxfdmFsdWUpOiBBZGQgcHJvdG90eXBlLgoJKG02OGtfZnVuY3Rpb25fdmFsdWUpOiBEaXR0by4KCShlbWl0X21vdmVfc2VxdWVuY2UpOiBEaXR0by4KCSogY29uZmlnL202OGsvbTY4a2VtYi5oIChMSUJDQUxMX1ZBTFVFKTogVXNlIG02OGtfbGliY2FsbF92YWx1ZS4KCSogY29uZmlnL202OGsvbTY4ay1ub25lLmggKEFTTV9TUEVDKTogQWRkIG1jZnY0ZS4KCSogY29uZmlnL202OGsvdC1tNjhrZWxmIChNVUxUSUxJQl9PUFRJT05TKTogQWRkIG1jZnY0ZS4KCShNVUxUSUxJQl9FWENFUFRJT05TKTogRGl0dG8uCgkqIGNvbmZpZy9tNjhrL202OGsub3B0OiBBZGQgbWNmdjRlLgoJKiBjb25maWcvbTY4ay9tNjhrLmMgKG02OGtfaGFuZGxlX29wdGlvbik6IEhhbmRsZSBPUFRfbWNmdjRlLgoJKG02OGtfY29tcHV0ZV9mcmFtZV9sYXlvdXQpOiBJbmNsdWRlIHNwYWNlIGZvciBDb2xkRmlyZSBGUFUgcmVncy4KCShtNjhrX291dHB1dF9mdW5jdGlvbl9wcm9sb2d1ZSk6IFNhdmUgQ29sZEZpcmUgRlBVIHJlZ2lzdGVycy4KCShtNjhrX291dHB1dF9mdW5jdGlvbl9lcGlsb2d1ZSk6IFJlc3RvcmUgQ29sZEZpcmUgRlBVIHJlZ2lzdGVycy4KCShmb3JjZV9tb2RlLCBmcF9yZWdfb3BlcmFuZCwgZW1pdF9tb3ZlX3NlcXVlbmNlKTogTmV3IGZ1bmN0aW9ucy4KCShtNjhrX3JlZ25vX21vZGVfb2spOiBEb24ndCBhbGxvdyB0eXBlcyBsYXJnZXQgdGhhbiA4IGJ5dGVzIGluCglDb2xkRmlyZSBGUFUgcmVnaXN0ZXJzLgoJKG02OGtfbGliY2FsbF92YWx1ZSwgbTY4a19mdW5jdGlvbl92YWx1ZSk6IE5ldyBmdW5jdGlvbnMuCgkqIGNvbmZpZy9tNjhrL25ldGJzZC1lbGYuaCAoRlVOQ1RJT05fVkFMVUUpOiBVc2UgbTY4a19mdW5jdGlvbl92YWx1ZS4KCShMSUJDQUxMX1ZBTFVFKTogVXNlIG02OGtfbGliY2FsbF92YWx1ZS4KCSogY29uZmlnL202OGsvbTY4ay5oIChUQVJHRVRfQ1BVX0NQUF9CVUlMVElOUyk6IERlZmluZSBfX21jZnY0ZV9fLgoJKE1BU0tfQ09MREZJUkUpOiBBZGQgTUFTS19DRlY0RS4KCShUQVJHRVRfQ09MREZJUkVfRlBVLCBUQVJHRVRfSEFSRF9GTE9BVCwgVEFSR0VUX0ZQX1JFR19TSVpFKTogTmV3LgoJKE1PREVTX1RJRUFCTEVfUCk6IFVzZSBUQVJHRVRfSEFSRF9GTE9BVC4KCShSRUdfQ0xBU1NfRlJPTV9MRVRURVIsIFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MpOiBEaXR0by4KCShHT19JRl9DT0xERklSRV9GUFVfTEVHSVRJTUFURV9BRERSRVNTKTogRGVmaW5lLgoJKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IFVzZSBpdC4KCShMRUdJVElNSVpFX0FERFJFU1MpOiBIYW5kbGUgQ29sZEZpcmUgRlBVIGFkZHJlc3Nlcy4KCSogZG9jL2ludm9rZS50ZXg6IERvY3VtZW50IC1tY2Z2NGUgb24gbTY4ay4KCjIwMDYtMDEtMjIgIFJhbmppdCBNYXRoZXcgIDxybWF0aGV3QGdjYy5nbnUub3JnPgoKCSogZG9jL2NvbnRyaWJ1dGUudGV4aTogQ2hhbmdlIENWUyB0byBTVk4gYW5kIHVwZGF0ZSB0aGUgY29ycmVzcG9uZGluZwoJVVJMLgoKMjAwNi0wMS0yMSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJUFIgYysrLzE2MTkwCgkqIGMtb3B0cy5jIChjX2NvbW1vbl9oYW5kbGVfb3B0aW9uKTogRG9uJ3QgaW5jbHVkZQoJLVdub24tdmlydHVhbC1kdG9yIGluIC1XYWxsOyBlbmFibGUgaWYgLVdlZmZjKysuCgkqIGRvYy9pbnZva2UudGV4aSAoQysrIERpYWxlY3QgT3B0aW9ucyk6IERvY3VtZW50IHRoYXQKCS1Xbm9uLXZpcnR1YWwtZHRvciBpcyBubyBsb25nZXIgaW5jbHVkZWQgaW4gLVdhbGwuCgoyMDA2LTAxLTIxICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdjb3YuYyAocHJpbnRfdmVyc2lvbiksIGdjb3YtZHVtcC5jIChwcmludF92ZXJzaW9uKSwKCW1pcHMtdGR1bXAuYyAobWFpbiksIG1pcHMtdGZpbGUuYyAobWFpbik6IFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlCglkYXRlcy4KCjIwMDYtMDEtMjEgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJKiBkZi1zY2FuLmMgKHByb2JsZW1fU0NBTik6IEFkZGVkIE5VTEwgcmVzZXQgZnVuY3Rpb24uCgkoZGZfc2Nhbl9yZXNldF9ibG9ja3MpOiBBZGRlZCBjb2RlIHRvIGNhbGwgcmVzZXQgYmxvY2sgZnVuY3Rpb24KCShkZl9iYl9yZWZzX2RlbGV0ZSkgRml4ZWQgY29tbWVudC4KCShkZl9pbnNuX3JlZnNfZGVsZXRlKTogTWFkZSB0b2xlcmFudCBvZiBkZWxldGluZyBub24gZXhpc3RlbnQgaW5mbwoJZm9yIGRhdGFmbG93IHByb2JsZW1zIHRoYXQgbmVlZCB0byBiZSByZXNldC4KCSogZGYtY29yZS5jIChkZl9zZXRfYmxvY2tzKTogRGl0dG8uCgkqIGRmLmggKHN0cnVjdCBkZl9wcm9ibGVtKTogQWRkZWQgcmVzZXRfZnVuLgoJKiBkZi1wcm9ibGVtcy5jIChwcm9ibGVtX1JVLCBwcm9ibGVtX1JELCBwcm9ibGVtX0xSLCBwcm9ibGVtX1VSLAoJcHJvYmxlbV9VUkVDLCBwcm9ibGVtX0NIQUlOLCBwcm9ibGVtX1JJKTogSW5pdGlhbGl6ZWQgcmVzZXRfZnVuIGZpZWxkLgoJKGRmX2NoYWluX2luc25fcmVzZXQsIGRmX2NoYWluX2JiX3Jlc2V0LCBkZl9jaGFpbl9yZXNldCk6IE5ldwoJZnVuY3Rpb25zIHRvIGNsZWFyIG91dCBhbGwgcmVmZXJlbmNlcyB0byBkZWYtdXNlIG9yIHVzZS1kZWYgY2hhaW5zLgoKMjAwNi0wMS0yMSAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiB2YXJhc20uYyAoYXNzZW1ibGVfcmVhbCk6IEluaXRpYWxpc2UgZGF0YSBhcnJheS4KCjIwMDYtMDEtMjAgIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJTWVyZ2UgZnJvbSBjc2wtYXJtLWJyYW5jaC4KCTIwMDUtMDktMjEgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoJKiBjb25maWcvYXJtL2FybS5tZCAobW92ZGkpOiBGb3JjZSBvcGVyYW5kc1sxXSB0byBhIHJlZ2lzdGVyCglpZiB3ZSBoYXZlIGEgbm9uLXJlZ2lzdGVyIHNvdXJjZS4KCSgqYXJtX21vdmRpLCAqbW92ZGZfc29mdF9pbnNuKTogUmVxdWlyZSB0aGF0IG9uZSBvZiB0aGUKCW9wZXJhbmRzIGJlIGEgcmVnaXN0ZXIuCgkqIGNvbmZpZy9hcm0vaXdtbXh0Lm1kICgqaXdtbXh0X2FybV9tb3ZkaSk6IExpa2V3aXNlLgoJKiBjb25maWcvYXJtL3ZmcC5tZCAoKmFybV9tb3ZkaV92ZnAsICptb3ZkZl92ZnApOiBMaWtld2lzZS4KCjIwMDYtMDEtMjAgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogdmFyYXNtLmMgKGluaXRpYWxpemVyX2NvbnN0YW50X3ZhbGlkX3ApOiBBbGxvdyBwb2ludGVycwoJaW5pdGlhbGl6ZWQgZnJvbSBpbnRlZ2VyIGNvbnN0YW50cyBvZiBsZXNzZXIgcHJlY2lzaW9uLgoJKG91dHB1dF9jb25zdGFudCk6IEFsbG93IG5vbi1pbnQtc2l6ZWQgcG9pbnRlciBtb2RlcyB0byBiZQoJaW5pdGlhbGl6ZWQgZnJvbSBpbnRlZ2VyIGNvbnN0YW50cy4KCjIwMDYtMDEtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGxpYnN0ZGMrKy8yNTUyNAoJKiBjcHBkZWZhdWx0LmggKHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUpOiBBZGQgbXVsdGlsaWIgZmxhZy4KCSogY3BwZGVmYXVsdC5jIChjcHBfaW5jbHVkZV9kZWZhdWx0cyk6IFNldCBpdC4KCSogYy5vcHQgKC1pbXVsdGlsaWIpOiBOZXcgb3B0aW9uLgoJKiBjLW9wdHMuYyAoaW11bHRpbGliKTogTmV3LgoJKGNfY29tbW9uX2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgLWltdWx0aWxpYi4KCShjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiBMaWtld2lzZS4KCSogYy1pbmNwYXRoLmMgKGFkZF9zdGFuZGFyZF9wYXRocywgcmVnaXN0ZXJfaW5jbHVkZV9jaGFpbnMpOgoJTGlrZXdpc2UuCgkqIGMtaW5jcGF0aC5oIChyZWdpc3Rlcl9pbmNsdWRlX2NoYWlucyk6IEFkZCBleHRyYSBwYXJhbWV0ZXIuCgkqIGdjYy5jIChkb19zcGVjXzEpOiBHZW5lcmF0ZSAtaW11bHRpbGliIG9wdGlvbi4KCShUaGUgU3BlY3MgTGFuZ3VhZ2UpOiBVcGRhdGUgJUkgZGVzY3JpcHRpb24uCgkocHJvY2Vzc19jb21tYW5kKTogVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuCgkqIGRvYy9jcHBvcHRzLnRleGkgKC1pbXVsdGlsaWIpOiBEb2N1bWVudC4KCSogZG9jL2ludm9rZS50ZXhpICgtaW11bHRpbGliKTogSW5jbHVkZSBpbiBvcHRpb24gc3VtbWFyeS4KCSglSSk6IFVwZGF0ZSBzcGVjcyBkb2N1bWVudGF0aW9uLgoKMjAwNi0wMS0yMCAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogbG9vcC1pdi5jIChpdl9hbmFseXNpc19sb29wX2luaXQpOiBVc2UgZGYgaW4gbW9yZSBjb25zZXJ2YXRpdmUgd2F5LgoKMjAwNi0wMS0yMCAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzdG10LmMgKGNhc2VfYml0X3Rlc3RfY21wKTogU3RhYmlsaXplIHRoZSBzb3J0IHVzaW5nIGNvZGUKCWxhYmVsIG51bWJlcnMuCgoyMDA2LTAxLTIwICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CglTdGV2ZW4gQm9zc2NoZXIgPHN0ZXZlbmIuZ2NjQGdtYWlsLmNvbT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI0NjI2CgkqIGNmZ2xvb3BtYW5pcC5jIChsdl9hZGp1c3RfbG9vcF9lbnRyeV9lZGdlKTogRG9uJ3Qgc2V0CglFREdFX1RSVUVfVkFMVUUgaWYgaW4gUlRMIG1vZGUuCgoJUmV2ZXJ0CgkyMDA1LTAzLTMwIE1vc3RhZmEgSGFnb2cgPG11c3RhZmFAaWwuaWJtLmNvbT4KCSogY2ZncnRsLmMgKHJ0bF92ZXJpZnlfZmxvd19pbmZvXzEpOiBGaXguCgoyMDA2LTAxLTIwICBEaXJrIE11ZWxsZXIgIDxkbXVlbGxlckBzdXNlLmNvbT4KCglQUiBjKysvNTUyMAoJKiBjLXBhcnNlci5jIChjX3BhcnNlcl9pZl9ib2R5KTogVXNlIGJ1aWxkX2VtcHR5X3N0bXQoKQoJaW5zdGVhZCBvZiBhIHNwZWNpYWwgTk9QIG1hcmtlci4KCSogYy10eXBlY2suYyAoY19maW5pc2hfaWZfc3RtdCk6IFJlbW92ZSBvYnNvbGV0ZWQgc3BlY2lhbAoJTk9QIG1hcmtlciBoYW5kbGluZy4KCSogYy1jb21tb24uaCAoZW1wdHlfYm9keV93YXJuaW5nKTogQWRkIGZvcndhcmQgZGVjbGFyYXRpb24uCgkqIGMtY29tbW9uLmMgKGVtcHR5X2JvZHlfd2FybmluZyk6IEFkZCAoZnJvbSBjX2ZpbmlzaF9pZl9zdG10KS4KCU5vdyB1c2VzIElTX0VNUFRZX1NUTVQoKSBpbnN0ZWFkIG9mIHNwZWNpYWwgTk9QIG1hcmtlcnMuCgoyMDA2LTAxLTIwICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKGxhbmdfY2hlY2tzKTogS2VlcCBnb2luZyBpZiBta2RpciBmYWlscy4KCjIwMDYtMDEtMTkgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJKiBkZi1zY2FuLmMgKGRmX3NjYW5fZnJlZV9iYl9pbmZvKTogQWRkZWQgYmFzaWMgYmxvY2sgcGFyYW1ldGVyIHRvCgliZSBhYmxlIHRvIGNsZWFuIG91dCBiYXNpYyBibG9jayB3aGVuIG5vdCBuZWNlc3NhcnkuCgkoZGZfc2Nhbl9mcmVlKTogRml4ZWQgdG8gcHJvcGVybHkgZGVsZXRlIGluZm9ybWF0aW9uIGlmIGRmIGlzCgl1bnVzZWQgYmVmb3JlIGNhbGxpbmcgZGZfZmluaXNoLgoJKGRmX3NjYW5fYWxsb2MsIGRmX3Jlc2Nhbl9ibG9ja3MsIGRmX3JlZ19jaGFpbl91bmxpbmssCglkZl9pbnNuX2NyZWF0ZV9pbnNuX3JlY29yZCwgZGZfYmJfcmVmc19yZWNvcmQpOiBGaXhlZCBmb3JtYXR0aW5nCglvciBjb21tZW50IHR5cG9zLgoJKGRmX2JiX3JlZnNfZGVsZXRlKTogTmV3IGZ1bmN0aW9uLgoJKGRmX3JlZnNfZGVsZXRlKTogTW92ZWQgcGVyIGJsb2NrIGNvZGUgdG8gZGZfYmJfcmVmc19kZWxldGUuCgkqIGRmLWNvcmUuYyAoZGZfc2V0X2Jsb2Nrcyk6IEFkZGVkIGNvZGUgdG8gcHJvcGVybHkgY2xlYW4gb3V0Cgl1bnVzZWQgYmxvY2tzIGlmIHRoZXkgYXJlIG5vdCBwYXJ0IG9mIHRoZSBibG9ja3MgdG8gY29uc2lkZXIuCglBZGRlZCBhZGRpdGlvbmFsIG51bGwgY2hlY2suCgkoZGZfY29tcGFjdF9ibG9ja3MpOiBBZGRlZCBiYXNpYyBibG9jayBwYXJhbWV0ZXIgdG8gZnJlZV9iYl9mdW4gdG8KCWJlIGFibGUgdG8gY2xlYW4gb3V0IGJhc2ljIGJsb2NrIHdoZW4gbm90IG5lY2Vzc2FyeQoJKiBkZi5oIChkZl9mcmVlX2JiX2Z1bmN0aW9uKTogRGl0dG8uCgkoZGZfYmJfcmVmc19kZWxldGUpOiBOZXcgZnVuY3Rpb24uCgkqIGRmLXByb2JsZW1zLmMgKGRmX3J1X2ZyZWVfYmJfaW5mbywgZGZfcmRfc2V0X2JiX2luZm8sCglkZl9scl9zZXRfYmJfaW5mbywgZGZfdXJfZnJlZV9iYl9pbmZvLCBkZl91cmVjX2ZyZWVfYmJfaW5mbyk6QWRkZWQKCWJhc2ljIGJsb2NrIHBhcmFtZXRlciB0byBiZSBhYmxlIHRvIGNsZWFuIG91dCBiYXNpYyBibG9jayB3aGVuIG5vdAoJbmVjZXNzYXJ5LgoJKGRmX3J1X2FsbG9jLCBkZl9yZF9hbGxvYyk6IEZpeGVkIGR5c2xleGljIG92ZXJmbG93IHRlc3QuCgkoZGZfcnVfZnJlZSwgZGZfcmRfZnJlZSwgZGZfbHJfZnJlZSwgZGZfdXJfZnJlZSwgZGZfdXJlY19mcmVlKToKCUZpeGVkIHRvIHByb3Blcmx5IGRlbGV0ZSBpbmZvcm1hdGlvbiBpZiBkZiBpcyB1bnVzZWQgYmVmb3JlCgljYWxsaW5nIGRmX2ZpbmlzaC4KCjIwMDYtMDEtMTkgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yNTc5OQoJKiBkZi1wcm9ibGVtcy5jIChkZl9ydV9jb25mbHVlbmNlX24sIGRmX3JkX2NvbmZsdWVuY2Vfbik6CglDb3JyZWN0ZWQgY29uZmx1ZW5jZSBvcGVyYXRvciB0byByZW1vdmUgYml0cyBmcm9tIG9wMiBiZWZvcmUgb3JpbmcKCXdpdGggb3AxIHJhdGhlciB0aGFuIHJlbW92aW5nIGJpdHMgZnJvbSBvcDEuCgkoZGZfcnVfdHJhbnNmZXJfZnVuY3Rpb24pOiBDb3JyZWN0ZWQgdGVzdCBvbiB3cm9uZyBiaXRtYXAgd2hpY2gKCWNhdXNlZCBpbmZpbml0ZSBsb29wLiAgQm90aCBvZiB0aGVzZSBwcm9ibGVtcyB3ZXJlIGludHJvZHVjZWQgaW4KCXRoZSBkYXRhZmxvdyByZXdyaXRlLgoKMjAwNi0wMS0xOSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiByZWxvYWQxLmMgKGZpbmRfcmVsb2FkX3JlZ3MpOiBOb3RlIHRoZSBkZXRhaWxzIG9mIHJlbG9hZAoJZmFpbHVyZXMgaW4gdGhlIGR1bXAgZmlsZS4KCShzcGlsbF9mYWlsdXJlKTogTGlrZXdpc2UuCgoyMDA2LTAxLTIwICBaZGVuZWsgRHZvcmFrIDxkdm9yYWt6QHN1c2UuY3o+CgoJKiBsb29wLWl2LmM6IEluY2x1ZGUgZGYuaCBhbmQgaGFzaHRhYi5oLgoJKGVudW0gaXZfZ3JkX3Jlc3VsdCk6IE5ldyBlbnVtLgoJKERGX1JFRl9JViwgREZfUkVGX0lWX1NFVCk6IE5ldyBtYWNyb3MuCgkoc3RydWN0IGJpdl9lbnRyeSk6IE5ldy4KCShkZiwgYml2cyk6IE5ldyBnbG9iYWwgdmFyaWFibGVzLgoJKHN0cnVjdCBpbnNuX2luZm8sIGluc25faW5mbywgbGFzdF9kZWYsIGJpdnMsIG1heF9pbnNuX25vLCBtYXhfcmVnX25vLAoJYXNzaWduX2x1aWRzLCBtYXJrX3NldHMsIGtpbGxfc2V0cywgbWFya19zaW5nbGVfc2V0LCBzaW1wbGVfc2V0X3ApOgoJUmVtb3ZlZC4KCShjbGVhcl9pdl9pbmZvLCBsYXRjaF9kb21pbmF0aW5nX2RlZiwgcmVjb3JkX2l2LCBpdl9hbmFseXplX2V4cHIsCglpdl9hbmFseXplX3Jlc3VsdCwgaXZfYW5hbHl6ZV9kZWYsIGJpdl9oYXNoLCBiaXZfZXEsCglhbmFseXplZF9mb3JfYml2bmVzc19wLCByZWNvcmRfYml2KTogTmV3IGZ1bmN0aW9ucy4KCShpdl9hbmFseXNpc19sb29wX2luaXQsIGl2X2dldF9yZWFjaGluZ19kZWYsIHNpbXBsZV9yZWdfcCwKCWdldF9iaXZfc3RlcF8xLCBnZXRfYml2X3N0ZXAsIGl2X2FuYWx5emVfYml2LCBpdl9hbmFseXplX29wLAoJaXZfYW5hbHl6ZSwgYml2X3AsIGl2X2FuYWx5c2lzX2RvbmUpOiBXb3JrIHdpdGggZGYgcmVwcmVzZW50YXRpb24gb2YKCVVEIGNoYWlucy4KCShpdl9jb25zdGFudCwgaXZfc3VicmVnLCBpdl9leHRlbmQsIGl2X211bHQsIGl2X3NoaWZ0KTogRG8gbm90IHNldAoJYW5hbHlzZWQuCgkoaXZfbnVtYmVyX29mX2l0ZXJhdGlvbnMpOiBVc2UgbmV3IGludGVyZmFjZSB0byBpdiBhbmFseXNpcy4KCSogbG9vcC11bnJvbGwuYzogRG8gbm90IGluY2x1ZGUgdmFycmF5LmguCgkoYW5hbHl6ZV9pdl90b19zcGxpdF9pbnNuKTogVXNlIG5ldyBpbnRlcmZhY2UgdG8gaXYKCWFuYWx5c2lzLgoJKiBsb29wLXVuc3dpdGNoLmMgKG1heV91bnN3aXRjaF9vbik6IERpdHRvLgoJKiBkZi5jIChkZl9iaXRtYXBzX2ZyZWUpOiBPbmx5IHdvcmsgZm9yIGJicyBmb3IgdGhhdCBzdHJ1Y3R1cmVzIGFyZQoJYWxsb2NhdGVkLgoJKGRmX2JiX21vZGlmeSk6IFJlYWxsb2MgdGFibGVzIHRvIHRoZSBuZXcgaW5kZXguCgkoZGZfZmluZF91c2UpOiBOZXcgZnVuY3Rpb24uCgkqIGRmLmggKGRmX2ZpbmRfdXNlKTogRGVjbGFyZS4KCSogb3B0YWJzLmMgKGV4cGFuZF91bm9wKTogTWFrZSB0aGUgbW9kZSBvZiB0aGUgUkVHX0VRVUFMIG5vZGUgYmUKCW91dG1vZGUuCgkqIGNmZ2xvb3AuaCAoc3RydWN0IHJ0eF9pdik6IFJlbW92ZSBhbmFseXNlZCBmaWVsZC4KCShpdl9nZXRfcmVhY2hpbmdfZGVmKTogUmVtb3ZlZC4KCShpdl9hbmFseXplX3Jlc3VsdCwgaXZfYW5hbHl6ZV9leHByLCBpdl9jdXJyZW50X2xvb3BfZGYpOiBEZWNsYXJlLgoJKiBNYWtlZmlsZS5pbiAobG9vcC11bnJvbGwubyk6IFJlbW92ZSBWQVJSQVlfSCBkZXBlbmRlbmN5LgoJKGxvb3AtaXYubyk6IEFkZCBkZi5oIGFuZCBoYXNodGFiLmggZGVwZW5kZW5jeS4KCSogZGYtcHJvYmxlbXMuYyAoZGZfcnVfYWxsb2MsIGRmX3JkX2FsbG9jKTogRml4IG1lbW9yeSByZWFsbG9jYXRpb24uCgoyMDA2LTAxLTIwICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVBSIHRhcmdldC8yNTY2OAoJKiBsaWJnY2MyLmMgKF9fZmxvYXRkaXNmLCBfX2Zsb2F0ZGlkZik6IERvbid0IHVzZSBJQk0gRXh0ZW5kZWQKCURvdWJsZSBURm1vZGUuCgkoX19mbG9hdHVuZGlzZiwgX19mbG9hdHVuZGlkZik6IExpa2V3aXNlLgoJKiBsaWJnY2MyLmggKElTX0lCTV9FWFRFTkRFRCk6IERlZmluZS4KCjIwMDYtMDEtMTkgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlnL20zMmMvbTMyYy5oIChSRUdfQUxMT0NfT1JERVIpOiBEZWZpbmUuCgoyMDA2LTAxLTE5ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2NvbXB1dGVfZnVuY190eXBlKTogVHJlYXQgYWxsIGZ1bmN0aW9ucwoJYXMgbm90aHJvdyB3aGVuIHVud2luZGluZyB0YWJsZXMgYXJlIGRpc2FibGVkLgoKMjAwNi0wMS0xOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiB0ZXN0c3VpdGUvMjUxNzEKCSogYy1kZWNsLmMgKGNoZWNrX2JpdGZpZWxkX3R5cGVfYW5kX3dpZHRoKTogRG9uJ3QgaXNzdWUgcGVkd2FybiAidHlwZQoJb2YgYml0LWZpZWxkIiB3aGVuIGluIHN5c3RlbSBoZWFkZXIuCgoyMDA2LTAxLTE5ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9tMzJjL20zMmMuYyAobTMyY19wcmVwYXJlX3NoaWZ0KTogQWRkIGNvZGUgdG8gZGVhbCB3aXRoCgl0aGUgMTYgYml0IHNoaWZ0IGxpbWl0IG9mIHRoZSBtMTZjLgoKMjAwNi0wMS0xOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgdGFyZ2V0LzIyMDk5CgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGJ1aWx0aW5fc2V0am1wX3JlY2VpdmVyKTogRG9uJ3QgZW1pdCB0aGUgbGFiZWwuCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAob3V0cHV0X3NldF9nb3QpOiBPdXRwdXQgdGhlIGxhYmVsIGlmIHdlIGhhdmUgb25lCglmb3IgdGhlIFRBUkdFVF9ERUVQX0JSQU5DSF9QUkVESUNUSU9OIGNhc2UuCgoyMDA2LTAxLTE5ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgkgICAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoJICAgIEV2YW5kcm8gTWVuZXplcyA8ZXZhbmRyby5tZW5lemVzQGFtZC5jb20+CgoJKiBpbnZva2UudGV4aSAoZ2VuZXJpYyk6IERvY3VtZW50CgkoaTY4NikgVXBkYXRlLgoJKiBjb25maWcuZ2NjOiBNYWtlIHg4Nl82NC0qIGFuZCBpNjg2LSogZGVmYXVsdCB0byBnZW5lcmljIHR1bm5pbmcuCgkqIGkzODYuaCAoVEFSR0VUX0dFTkVSSUMzMiwgVEFSR0VUX0dFTkVSSUM2NCwgVEFSR0VUX0dFTkVSSUMsCglUQVJHRVRfVVNFX0lOQ0RFQywgVEFSR0VUX1BBRF9SRVRVUk5TKTogTmV3IG1hY3Jvcy4KCSh4ODZfdXNlX2luY2RlYywgeDg2X3BhZF9yZXR1cm5zKTogTmV3IHZhcmlhYmxlcwoJKFRBUkdFVF9DUFVfREVGQVVMVF9nZW5lcmljKTogTmV3IGNvbnN0YW50CgkoVEFSR0VUX0NQVV9ERUZBVUxUX05BTUVTKTogQWRkIGdlbmVyaWMuCgkoZW51bSBwcm9jZXNzb3JfdHlwZSk6IEFkZCBnZW5lcmljMzIgYW5kIGdlbmVyaWM2NC4KCSogaTM4Ni5tZCAoY3B1IGF0dHJpYnV0ZSk6IEFkZCBnZW5lcmljMzIvZ2VuZXJpYzY0CgkobW92aGkgc3BsaXR0ZXIpOiBCZWhhdmUgc2FuZWx5IHdoZW4gYm90aCBwYXJ0aWFsX3JlZ19kZXBlbmRlbmN5IGFuZAoJcGFydGlhbF9yZWdfc3RhbGwgYXJlIHNldC4KCShLOCBzcGxpdHRlcnMpOiBFbmFibGUgZm9yIGdlbmVyaWMgYXMgd2VsbC4KCSogcHJlZGljYXRlcy5tZCAoaW5jZGVjX29wZXJhbmQpOiBVc2UgVEFSR0VUX0lOQ0RFQwoJKGFsaWduZWRfb3BlcmFuZCk6IEF2b2lkIG1lbW9yeSBtaXNtYXRjaCBzdGFsbHMuCgkqIGF0aGxvbi5tZDogRW5hYmxlIGZvciBnZW5lcmljNjQsIG5ldyBwYXR0ZXJucyBmb3IgMTI4Yml0IG1vdmVzLgoJKiBwcHJvLm1kOiBFbmFibGUgZm9yIGdlbmVyaWMzMgoJKiBpMzg2LmMgKGdlbmVyaWM2NF9jb3N0LCBnZW5lcmljMzJfY29zdCk6IE5ldy4KCShtX0dFTkVSSUMzMiwgbV9HRU5FUklDNjQsIG1fR0VORVJJQyk6IE5ldyBtYWNyb3MuCgkoeDg2X3VzZV9sZWF2ZSk6IEVuYWJsZSBmb3IgZ2VuZXJpYzY0LiAgKHg4Nl91c2Vfc2FoZiwKCXg4Nl9leHRfODAzODdfY29uc3RhbnRzKTogRW5hYmxlIGZvciBnZW5lcmljMzIuICAoeDg2X3B1c2hfbWVtb3J5LAoJeDg2X21vdngsIHg4Nl91bnJvbGxfc3RybGVuLCB4ODZfZGVlcF9icmFuY2gsIHg4Nl91c2Vfc2ltb2RlX2Zpb3AsCgl4ODZfdXNlX2NsdGQsIHg4Nl9wcm9tb3RlX1FJbW9kZSwgeDg2X3N1Yl9lc3BfNCwgeDg2X3N1Yl9lc3BfOCwKCXg4Nl9hZGRfZXNwXzQsIHg4Nl9hZGRfZXNwXzgsIHg4Nl9pbnRlZ2VyX0RGbW9kZV9tb3ZlcywKCXg4Nl9wYXJ0aWFsX3JlZ19kZXBlbmRlbmN5LCB4ODZfbWVtb3J5X21pc21hdGNoX3N0YWxsLAoJeDg2X2FjY3VtdWxhdGVfb3V0Z29pbmdfYXJncywgeDg2X3Byb2xvZ3VlX3VzaW5nX21vdmUsCgl4ODZfZXBpbG9ndWVfdXNpbmdfbW92ZSwgeDg2X2FyY2hfYWx3YXlzX2ZhbmN5X21hdGhfMzg3LAoJeDg2X3NzZV9wYXJ0aWFsX3JlZ19kZXBlbmRlbmN5LCB4ODZfZm91cl9qdW1wX2xpbWl0LCB4ODZfc2NoZWR1bGUpOgoJRW5hYmxlIGZvciBnZW5lcmljLgoJKHg4Nl91c2VfaW5jZGVjLCB4ODZfcGFkX3JldHVybnMpOiBOZXcuCgkob3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCBnZW5lcmljMzIgYW5kIGdlbmVyaWM2NCwgdHJhbnNsYXRlICJnZW5lcmljIgoJdG8gZ2VuZXJpYzMyL2dlbmVyaWM2NCBhbmQgImk2ODYiIHRvICJnZW5lcmljMzIiLCByZWZ1c2UKCSJnZW5lcmljMzIiLyJnZW5lcmljNjQiIGFzIGFyY2ggdGFyZ2V0LgoJKGl4ODZfaXNzdWVfcmF0ZSwgaXg4Nl9hZGp1c3RfY29zdCk6IEhhbmRsZSBnZW5lcmljIGFzIGF0aGxvbi4KCShpeDg2X3Jlb3JnKTogSG9ub3IgUEFEX1JFVFVSTlMuCgoyMDA2LTAxLTE5ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogSGFuZGxlCglPTVBfUEFSQUxMRUxfRk4sIE9NUF9QQVJBTExFTF9EQVRBX0FSRyBhbmQgT01QX1JFVFVSTl9FWFBSLgoJKiBjZ3JhcGguYyAoY2dyYXBoX2V4cGFuZF9xdWV1ZSk6IFJlbmFtZSBmcm9tCgljZ3JhcGhfYW5hbHl6ZV9xdWV1ZS4gIFVwZGF0ZSBhbGwgdXNlcnMuCgkqIGNncmFwaHVuaXQuYyAoY2dyYXBoX2Fzc2VtYmxlX3BlbmRpbmdfZnVuY3Rpb25zKTogUHJvY2VzcwoJY2dyYXBoX2V4cGFuZF9xdWV1ZS4KCShjZ3JhcGhfZXhwYW5kX2FsbF9mdW5jdGlvbnMpOiBMaWtld2lzZS4KCShjZ3JhcGhfZmluYWxpemVfcGVuZGluZ19mdW5jdGlvbnMpOiBSZW1vdmUuICBVcGRhdGUgY2FsbGVycy4KCgkqIHRyZWUuaCAoT01QX0RJUkVDVElWRV9QKTogRGVmaW5lLgoJKE9NUF9QQVJBTExFTF9GTik6IERlZmluZS4KCShPTVBfUEFSQUxMRUxfREFUQV9BUkcpOiBEZWZpbmUuCgkoT01QX1NFQ1RJT05TX1NFQ1RJT05TKTogRGVmaW5lLgoJKiB0cmVlLXBhc3MuaCAocGFzc19leHBhbmRfb21wKTogRGVjbGFyZS4KCSogb21wLWxvdy5jIChzdHJ1Y3Qgb21wX3JlZ2lvbik6IERlY2xhcmUuCgkoc3RydWN0IG9tcF9jb250ZXh0KTogUmVtb3ZlIGZpZWxkcyAncGFyYWxsZWxfdHlwZScsCgkncGFyYWxsZWxfc3RhcnRfaXgnIGFuZCAncGFyYWxsZWxfc3RhcnRfYWRkaXRpb25hbF9hcmdzJy4KCVVwZGF0ZSBhbGwgdXNlcnMuCgkoc3RydWN0IG9tcF9mb3JfZGF0YSk6IFJlbmFtZSBmcm9tIHN0cnVjdCBleHBhbmRfb21wX2Zvcl9kYXRhLgoJKG9tcF9yZWdpb25zKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShyb290X29tcF9yZWdpb24pOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGZpbmRfb21wX2NsYXVzZSk6IE1ha2Ugc3RhdGljLgoJKGlzX2luX2NvbWJpbmVkX3BhcmFsbGVsX2N0eCk6IFJlbW92ZS4KCShpc19jb21iaW5lZF9wYXJhbGxlbCk6IE5ldy4KCShleHRyYWN0X29tcF9mb3JfZGF0YSk6IE1vdmUgZWFybGllciBpbiB0aGUgZmlsZS4KCSh3b3Jrc2hhcmVfc2FmZV90b19jb21iaW5lX3ApOiBOZXcuCgkoZ2V0X3dzX2FyZ3NfZm9yKTogTmV3LgoJKGRldGVybWluZV9wYXJhbGxlbF90eXBlKTogTW92ZSBlYXJsaWVyIGluIHRoZSBmaWxlLgoJKG9tcF9jb3B5X2RlY2xfMik6IERvIG5vdCBzZXQgREVDTF9DT05URVhUIG9mIG5ldyBsb2NhbCB0byB0aGUKCWNoaWxkIGZ1bmN0aW9uLgoJKG9tcF9jb3B5X2RlY2wpOiBMaWtld2lzZS4KCShjcmVhdGVfb21wX2NoaWxkX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkobG9va3VwX29tcF9yZWdpb24pOiBOZXcuCgkoZHVtcF9vbXBfcmVnaW9uKTogTmV3LgoJKGRlYnVnX29tcF9yZWdpb24pOiBOZXcuCgkoZGVidWdfYWxsX29tcF9yZWdpb25zKTogTmV3LgoJKG5ld19vbXBfcmVnaW9uKTogTmV3LgoJKHNjYW5fb21wX3BhcmFsbGVsKTogSWYgcGFyYWxsZWxfbmVzdGluZ19sZXZlbCA+IDEsIHRoZQoJZGlyZWN0aXZlIGlzIG5lc3RlZCB3aXRoaW4gYW5vdGhlciBwYXJhbGxlbCBkaXJlY3RpdmUuCglTZXQgT01QX1BBUkFMTEVMX0ZOLgoJKHNjYW5fb21wX2Zvcik6IERvIG5vdCB0cnkgdG8gaGFuZGxlIGNvbWJpbmVkIHBhcmFsbGVsK2ZvcgoJY2FzZXMuCglSZW1vdmUgRklYTUUgY29tbWVudC4KCShzY2FuX29tcF9uZXN0ZWQpOiBSZW1vdmUuCgkoc2Nhbl9vbXBfMSk6IERvIG5vdCBjYWxsIHNjYW5fb21wX25lc3RlZCB3aGVuCglwYXJhbGxlbF9uZXN0aW5nX2xldmVsIGlzID4gMS4KCURvIG5vdCBjaGFuZ2UgdGhlIERFQ0xfQ09OVEVYVCBvZiBsb2NhbCB2YXJpYWJsZXMgZm91bmQuCgkobG9va3VwX2RlY2xfaW5fb3V0ZXJfY3R4KTogTmV3LgoJKGxvd2VyX3JlY19pbnB1dF9jbGF1c2VzKTogUmVuYW1lIGZyb20gZXhwYW5kX3JlY19pbnB1dF9jbGF1c2VzLgoJKGxvd2VyX2xhc3Rwcml2YXRlX2NsYXVzZXMpOiBSZW5hbWUgZnJvbSBleHBhbmRfbGFzdHByaXZhdGVfY2xhdXNlcy4KCShsb3dlcl9yZWR1Y3Rpb25fY2xhdXNlcyk6IFJlbmFtZSBmcm9tIGV4cGFuZF9yZWR1Y3Rpb25fY2xhdXNlcy4KCShsb3dlcl9jb3B5cHJpdmF0ZV9jbGF1c2VzKTogUmVuYW1lIGZyb20gZXhwYW5kX2NvcHlwcml2YXRlX2NsYXVzZXMuCglJZiBDVFggaXMgbmVzdGVkLCBsb29rdXAgVkFSIGluIHRoZSBvdXRlciBjb250ZXh0IHdoZW4KCWJ1aWxkaW5nIGNvcHkgYXNzaWdubWVudC4KCShsb3dlcl9zZW5kX2NsYXVzZXMpOiBSZW5hbWUgZnJvbSBleHBhbmRfc2VuZF9jbGF1c2VzLgoJSWYgQ1RYIGlzIG5lc3RlZCwgbG9va3VwIFZBUiBpbiB0aGUgb3V0ZXIgY29udGV4dCB3aGVuCglidWlsZGluZyBjb3B5IGFzc2lnbm1lbnRzLgoJKGxvd2VyX3NlbmRfc2hhcmVkX3ZhcnMpOiBSZW5hbWUgZnJvbSBleHBhbmRfc2VuZF9zaGFyZWRfdmFycy4KCUlmIENUWCBpcyBuZXN0ZWQsIGxvb2t1cCBWQVIgaW4gdGhlIG91dGVyIGNvbnRleHQgd2hlbgoJYnVpbGRpbmcgY29weSBhc3NpZ25tZW50cy4KCShleHBhbmRfcGFyYWxsZWxfY2FsbCk6IFJlbmFtZSBmcm9tIGJ1aWxkX3BhcmFsbGVsX2NhbGwuCglIYW5kbGUgY29tYmluZWQgcGFyYWxsZWwrd29ya3NoYXJlIGNhc2VzLgoJUmUtaW1wbGVtZW50IHRvIGVtaXQgY29kZSBpbnRvIHRoZSBDRkcuCgkobGlzdDJjaGFpbik6IE5ldy4KCShleHBhbmRfb21wX3BhcmFsbGVsKTogUmUtaW1wbGVtZW50IHRvIGVtaXQgY29kZSBpbnRvIHRoZSBDRkcuCglDYWxsIG1vdmVfc2VzZV9yZWdpb25fdG9fZm4gdG8gb3V0bGluZSB0aGUgc3ViLWdyYXBoCgljb250YWluaW5nIHRoZSBwYXJhbGxlbCByZWdpb24uCgkoZXhwYW5kX29tcF9mb3JfMSk6IFJlbW92ZS4KCShleHBhbmRfb21wX2Zvcl9nZW5lcmljKTogUmUtaW1wbGVtZW50IHRvIGVtaXQgY29kZSBpbnRvIHRoZQoJQ0ZHLgoJKGV4cGFuZF9vbXBfZm9yX3N0YXRpY19ub2NodW5rKTogTGlrZXdpc2UuCgkoZXhwYW5kX29tcF9mb3Jfc3RhdGljX2NodW5rKTogTGlrZXdpc2UuCgkoZXhwYW5kX29tcF9mb3IpOiBMaWtld2lzZS4KCShleHBhbmRfb21wX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkocmVtb3ZlX2V4aXRfYmFycmllcnMpOiBOZXcuCgkoZXhwYW5kX29tcF9zeW5jaCk6IE5ldy4KCShleHBhbmRfb21wKTogTmV3LgoJKGJ1aWxkX29tcF9yZWdpb25zXzEpOiBOZXcuCgkoYnVpbGRfb21wX3JlZ2lvbnMpOiBOZXcuCgkoZXhlY3V0ZV9leHBhbmRfb21wKTogTmV3LgoJKGdhdGVfZXhwYW5kX29tcCk6IE5ldy4KCShwYXNzX2V4cGFuZF9vbXApOiBEZWZpbmUuCgkobG93ZXJfb21wX3NlY3Rpb25zKTogUmVuYW1lIGZyb20gZXhwYW5kX29tcF9zZWN0aW9ucy4KCVNldCBPTVBfU0VDVElPTlNfU0VDVElPTlMuCgkobG93ZXJfb21wX3NpbmdsZV9zaW1wbGUpOiBSZW5hbWUgZnJvbSBleHBhbmRfb21wX3NpbmdsZV9zaW1wbGUuCgkobG93ZXJfb21wX3NpbmdsZV9jb3B5KTogUmVuYW1lIGZyb20gZXhwYW5kX29tcF9zaW5nbGVfY29weS4KCShsb3dlcl9vbXBfc2luZ2xlKTogUmVuYW1lIGZyb20gZXhwYW5kX29tcF9zaW1wbGUuCgkobG93ZXJfb21wX21hc3Rlcik6IFJlbmFtZSBmcm9tIGV4cGFuZF9vbXBfbWFzdGVyLgoJKGxvd2VyX29tcF9vcmRlcmVkKTogUmVuYW1lIGZyb20gZXhwYW5kX29tcF9vcmRlcmVkLgoJKGxvd2VyX29tcF9jcml0aWNhbCk6IFJlbmFtZSBmcm9tIGV4cGFuZF9vbXBfY3JpdGljYWwuCgkobG93ZXJfb21wX2Zvcl9sYXN0cHJpdmF0ZSk6IFJlbmFtZSBmcm9tIGV4cGFuZF9vbXBfZm9yX2xhc3Rwcml2YXRlLgoJKGxvd2VyX29tcF9mb3IpOiBSZS1pbXBsZW1lbnQuCgkobG93ZXJfb21wX3BhcmFsbGVsKTogUmUtaW1wbGVtZW50LgoJKGxvd2VyX3JlZ2ltcGxpZnkpOiBSZW5hbWUgZnJvbSBleHBhbmRfcmVnaW1wbGlmeS4KCShsb3dlcl9vbXBfMSk6IFJlbmFtZSBmcm9tIGV4cGFuZF9vbXBfMS4KCUlmIHRoZXJlIGFyZSBzeW50YXggZXJyb3JzIGluIHRoZSBwcm9ncmFtLCByZXBsYWNlIGV2ZXJ5CglPcGVuTVAgZGlyZWN0aXZlIHdpdGggTk9QLgoJQ2FsbCBsb3dlcl9vbXBfKiBpbnN0ZWFkIG9mIGV4cGFuZF9vbXBfKi4KCShsb3dlcl9vbXApOiBSZW5hbWUgZnJvbSBleHBhbmRfb21wLgoKCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX3N0bXQpOiBIYW5kbGUgT01QX1JFVFVSTl9FWFBSLgoJKiB0cmVlLWdpbXBsZS5oIChlbnVtIG9tcF9wYXJhbGxlbF90eXBlKTogUmVtb3ZlLgoJKGdpbXBsZV9ib29saWZ5KTogRGVjbGFyZSBleHRlcm4uCgkoZmluZF9vbXBfY2xhdXNlLCBkZXRlcm1pbmVfcGFyYWxsZWxfdHlwZSk6IFJlbW92ZS4KCgkqIGdpbXBsZS1sb3cuYyAobG93ZXJfb21wX2RpcmVjdGl2ZSk6IE5ldy4KCShsb3dlcl9zdG10KTogQ2FsbCBpdC4KCShyZWNvcmRfdmFyc19pbnRvKTogTW92ZSBmcm9tIC4uLgoJKHJlY29yZF92YXJzKTogLi4uIGhlcmUuCglDYWxsIHJlY29yZF92YXJzX2ludG8gd2l0aCBjdXJyZW50X2Z1bmN0aW9uX2RlY2wuCgoJKiBnaW1wbGlmeS5jIChzdHJ1Y3QgZ2ltcGxpZnlfY3R4KTogUmVtb3ZlIGZpZWxkcwoJY29tYmluZWRfcHJlX3AgYW5kIGNvbWJpbmVkX2N0eHAuICBVcGRhdGUgdXNlcnMuCgkoZ2V0X2Zvcm1hbF90bXBfdmFyKTogQWRkIGRvY3VtZW50YXRpb24uCgkoZ2ltcGxlX2Jvb2xpZnkpOiBNYWtlIGV4dGVybi4KCShnaW1wbGlmeV9leHByX2luX2N0eCk6IFJlbW92ZS4gIFVwZGF0ZSBjYWxsZXJzLgoJKGdpbXBsaWZ5X29tcF9wYXJhbGxlbCk6IERvIG5vdCBhc3N1bWUgdGhhdCBPTVBfUEFSQUxMRUxfQk9EWQoJd2lsbCBhbHdheXMgYmUgYSBCSU5EX0VYUFIuCgkoZ2ltcGxpZnlfZXhwcik6IEhhbmRsZSBPTVBfUkVUVVJOX0VYUFIuCgkqIHRyZWUuZGVmIChCTE9DSyk6IFJlbW92ZSBkb2N1bWVudGF0aW9uIGFib3V0IEJMT0NLX1RZUEVfVEFHUy4KCShPTVBfUEFSQUxMRUwpOiBBZGQgMyBvcGVyYW5kcy4KCShPTVBfU0VDVElPTlMpOiBBZGQgMSBvcGVyYW5kLgoJKE9NUF9SRVRVUk5fRVhQUik6IERlZmluZS4KCgkqIHRyZWUtaW5saW5lLmMgKGVzdGltYXRlX251bV9pbnNuc18xKTogSGFuZGxlIE9wZW5NUCBkaXJlY3RpdmVzLgoJKGNvcHlfdHJlZV9yKTogUmVzdG9yZSBUUkVFX0NIQUlOIGluIE9NUF9DTEFVU0VfKi4KCSogdHJlZS1pdGVyYXRvci5jIChhbGxvY19zdG10X2xpc3QpOiBBc3NlcnQgdGhhdCB3ZSBhcmUgbm90CgljcmVhdGluZyBhIGNpcmN1bGFyIGZyZWUgbGlzdC4KCShmcmVlX3N0bXRfbGlzdCk6IEFzc2VydCB0aGF0IHdlIGFyZSBub3QgZnJlZWluZyBzdG10X2xpc3RfY2FjaGUuCgoJKiB0cmVlLWZsb3cuaCAobW92ZV9zZXNlX3JlZ2lvbl90b19mbik6IERlY2xhcmUuCgkocmVjb3JkX3ZhcnNfaW50byk6IERlY2xhcmUuCgkqIHRyZWUtY2ZnLmMgKG1ha2Vfb21wX3NlY3Rpb25zX2VkZ2VzKTogTmV3LgoJKG1ha2VfZXhpdF9lZGdlcyk6IEhhbmRsZSBPTVBfUEFSQUxMRUwsIE9NUF9GT1IsIE9NUF9TSU5HTEUsCglPTVBfTUFTVEVSLCBPTVBfT1JERVJFRCwgT01QX0NSSVRJQ0FMLCBPTVBfUkVUVVJOX0VYUFIsCglPTVBfU0VDVElPTlMgYW5kIE9NUF9TRUNUSU9OLgoJKGlzX2N0cmxfYWx0ZXJpbmdfc3RtdCk6IFJldHVybiB0cnVlIGZvciBPTVBfRElSRUNUSVZFX1AuCgkoc2V0X2JiX2Zvcl9zdG10KTogVW5kbyBjaGFuZ2UgdG8gY2hlY2sgY3VycmVudGx5X2V4cGFuZGluZ190b19ydGwuCgkodmVyaWZ5X3N0bXQpOiBEbyBub3QgaGFuZGxlIE9NUF9ESVJFQ1RJVkVfUC4KCShnYXRoZXJfYmxvY2tzX2luX3Nlc2VfcmVnaW9uKTogTmV3LgoJKHN0cnVjdCBtb3ZlX3N0bXRfZCk6IERlY2xhcmUuCgkobW92ZV9zdG10X3IpOiBOZXcuCgkobW92ZV9ibG9ja190b19mbik6IE5ldy4KCShtb3ZlX3Nlc2VfcmVnaW9uX3RvX2ZuKTogTmV3LgoKCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IFNjaGVkdWxlCglwYXNzX2V4cGFuZF9vbXAgYWZ0ZXIgcGFzc19pbml0X2RhdGFzdHJ1Y3R1cmVzLgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2V4cHJfb3BlcmFuZHMpOiBIYW5kbGUKCU9NUF9QQVJBTExFTCwgT01QX1NFQ1RJT05TLCBPTVBfRk9SLCBPTVBfUkVUVVJOX0VYUFIsCglPTVBfU0lOR0xFLCBPTVBfTUFTVEVSLCBPTVBfT1JERVJFRCwgT01QX0NSSVRJQ0FMLgoKMjAwNi0wMS0xOSAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIHRyZWUtdnJwLmMgKGV4dHJhY3RfcmFuZ2VfZnJvbV9hc3NlcnQpOiBSZWZpbmUgdGhlIHJlc3VsdCByYW5nZQoJaWYgdGhlIHZhcmlhYmxlIHJlZmVyZW5jZWQgYnkgdGhlIEFTU0VSVF9FWFBSIGhhcyBhIHJhbmdlIGFuZAoJZWl0aGVyIHRoZSB0ZW50YXRpdmUgcmVzdWx0IHJhbmdlIG9yIHRoZSBwcmV2aW91cyByYW5nZSBpcyBhCglWUl9BTlRJX1JBTkdFLgoKMjAwNi0wMS0xOSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyaWNoYXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjLWRlY2wuYyAoYWRkX2ZsZXhpYmxlX2FycmF5X2VsdHNfdG9fc2l6ZSk6IFNpbXBsaWZ5IHZlY3RvciBhY2Nlc3Nlcy4KCjIwMDYtMDEtMTkgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHRyZWUtdmVjdC1wYXR0ZXJucy5jICh2ZWN0X3BhdHRlcm5fcmVjb2dfMSk6IFByZXZlbnQgcGFyc2UgZXJyb3IuCgoyMDA2LTAxLTE5ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY29tYmluZS5jICh0cnlfY29tYmluZSk6IERvIG5vdCB3b3JyeSBhYm91dCBNRU1zIHdyYXBwZWQgYnkgVVNFcy4KCShleHBhbmRfY29tcG91bmRfb3BlcmF0aW9uLCBleHBhbmRfZmllbGRfYXNzaWdubWVudCk6IEZhaWwgaWYgdGhlCgliaXQgbGVuZ3RocyBvZiBhbiBleHRyYWN0IG9wZXJhdGlvbiBhcmUgb3V0IG9mIHJhbmdlLgoJKG1ha2VfZXh0cmFjdGlvbik6IENvbXB1dGUgd2FudGVkX2lubmVyX21vZGUgYmFzZWQgb24gdGhlIHBvc2l0aW9uCglhbmQgbGVuZ3RoIG9mIHRoZSBleHRyYWN0aW9uLiAgTWFrZSBpdCBleHRyYWN0aW9uX21vZGUgZm9yIG5vbi1jb25zdGFudAoJcG9zaXRpb25zLCBhbmQgZG8gbm90IG1vZGlmeSBvZmZzZXQgaW4gdGhhdCBjYXNlLiAgV2hlbiBnZW5lcmF0aW5nIGEKCW5ldyBNRU0sIHVzZSBhIG1vZGUgdGhhdCBjYW4gaG9sZCB0aGUgZXh0cmFjdGlvbiB3aGlsZSBrZWVwaW5nIGNvcnJlY3QKCWFsaWdubWVudC4gIFJlbW92ZSBjb2RlIHRoYXQgc3VwcG9ydGVkIE1FTXMgd3JhcHBlZCBieSBVU0VzLgoJKHNpbXBsaWZ5X3NoaWZ0X2NvbnN0XzEsIGZvcmNlX3RvX21vZGUpIDxjYXNlIFVTRT46IFJlbW92ZS4KCjIwMDYtMDEtMTkgIEFuZHJlYXMgS3JlYmJlbCAgPGtyZWJiZWwxQGRlLmlibS5jb20+CgoJKiBjb25maWcvczM5MC9zMzkwLm1kICgiWSIsICJ5Iik6IE5ldyBtb2RlIGF0dHJpYnV0ZS4KCSgiKmNtcGRpX2NjcyIsICIqY21wc2lfY2NzIiwgIiphZGRkaTNfaW1tX2NjIiwgIiphZGRkaTNfY2FycnkxX2NjIiwKCSIqYWRkZGkzX2NhcnJ5MV9jY29ubHkiLCAiKmFkZGRpM19jYXJyeTJfY2MiLCAiKmFkZGRpM19jYXJyeTJfY2Nvbmx5IiwKCSIqYWRkZGkzX2NjIiwgIiphZGRkaTNfY2Nvbmx5IiwgIiphZGRkaTNfY2Nvbmx5MiIsICIqYWRkZGkzXzY0IiwKCSIqYWRkc2kzX2ltbV9jYyIsICIqYWRkc2kzX2NhcnJ5MV9jYyIsCgkiKmFkZHNpM19jYXJyeTFfY2Nvbmx5IiwgIiphZGRzaTNfY2FycnkyX2NjIiwgIiphZGRzaTNfY2FycjJfY2Nvbmx5IiwKCSIqYWRkc2kzX2NjIiwgIiphZGRzaTNfY2Nvbmx5IiwgIiphZGRzaTNfY2Nvbmx5MiIsCgkiKnN1YmRpM19ib3Jyb3dfY2MiLCAiKnN1YmRpM19ib3Jyb3dfY2Nvbmx5IiwgIipzdWJkaTNfY2MiLAoJIipzdWJkaTNfY2MyIiwgIipzdWJkaTNfY2Nvbmx5IiwgIipzdWJkaTNfY2Nvbmx5MiIsICIqc3ViZGkzXzY0IiwKCSIqc3Vic2kzX2JvcnJvd19jYyIsICIqc3Vic2kzX2JvcnJvd19jY29ubHkiLCAiKnN1YnNpM19jYyIsCgkiKnN1YnNpM19jYzIiLCAiKnN1YnNpM19jY29ubHkiLCAiKnN1YnNpM19jY29ubHkiLCAiKnN1YnNpM19jY29ubHkyIiwKCSJhZGRzaTMiLCAic3Vic2kzIik6IEluc24gcGF0dGVybnMgcmVtb3ZlZC4KCSgiKmFkZDxtb2RlPjNfY2FycnkxX2NjIiwgIiphZGQ8bW9kZT4zX2NhcnJ5MV9jY29ubHkiLAoJIiphZGQ8bW9kZT4zX2NhcnJ5Ml9jYyIsICIqYWRkPG1vZGU+M19jYXJyeTJfY2Nvbmx5IiwgIiphZGQ8bW9kZT4zX2NjIiwKCSIqYWRkPG1vZGU+M19jY29ubHkiLCAiKmFkZDxtb2RlPjNfY2Nvbmx5MiIsICIqYWRkPG1vZGU+M19pbW1fY2MiLAoJIipzdWI8bW9kZT4zX2JvcnJvd19jYyIsICIqc3ViPG1vZGU+M19ib3Jyb3dfY2Nvbmx5IiwKCSIqc3ViPG1vZGU+M19jYyIsICIqc3ViPG1vZGU+M19jYzIiLCAiKnN1Yjxtb2RlPjNfY2Nvbmx5IiwKCSIqc3ViPG1vZGU+M19jY29ubHkyIik6IE5ldyBpbnNuIHBhdHRlcm5zLgoJKCJhZGRzaTMiLCAic3Vic2kzIik6IE5ldyBleHBhbmRlcnMuCgoyMDA2LTAxLTE5ICBEb3JpdCBOdXptYW4gIDxkb3JpdEBpbC5pYm0uY29tPgoKCSogTWFrZWZpbGUuaW4gKHRyZWUtdmVjdC1wYXR0ZXJucy5vKTogQWRkIHJ1bGUgZm9yIG5ldyBmaWxlLgoJKiB0cmVlLXZlY3QtYW5hbHl6ZS5jICh2ZWN0X2RldGVybWluZV92ZWN0b3JpemF0aW9uX2ZhY3Rvcik6IFVzZQoJZXhpc3RpbmcgU1RNVF9WSU5GT19WRUNUWVBFIGlmIGF2YWlsYWJsZS4KCSh2ZWN0X21hcmtfcmVsZXZhbnQpOiBBZGQgc3BlY2lhbCBoYW5kbGluZyBmb3Igc3RtdHMgdGhhdCBhcmUKCW1hcmtlZCBhcyBTVE1UX1ZJTkZPX0lOX1BBVFRFUk5fUC4KCSh2ZWN0X2FuYWx5emVfbG9vcCk6IENhbGwgdmVjdF9wYXR0ZXJuX3JlY29nLgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAobmV3X3N0bXRfdmVjX2luZm8pOiBJbml0aWFsaXplIG5ldyBmaWVsZHMuCgkqIHRyZWUtdmVjdG9yaXplci5oIChpbl9wYXR0ZXJuX3AsIHJlbGF0ZWRfc3RtdCk6IE5ldyBmaWVsZHMgaW4KCXN0bXRfaW5mby4KCShTVE1UX1ZJTkZPX0lOX1BBVFRFUk5fUCwgU1RNVF9WSU5GT19SRUxBVEVEX1NUTVQpOiBOZXcgbWFjcm9zLgoJKHZlY3RfcmVjb2dfZnVuY19wdHIpOiBOZXcgZnVuY3Rpb24tcG9pbnRlciB0eXBlLgoJKiB0cmVlLXZlY3QtcGF0dGVybnMuYzogTmV3IGZpbGUuCgkodmVjdF9yZWNvZ193aWRlbl9zdW1fcGF0dGVybiwgdmVjdF9yZWNvZ193aWRlbl9tdWx0X3BhdHRlcm4pOgoJKHZlY3RfcmVjb2dfZG90X3Byb2RfcGF0dGVybiwgdmVjdF9wYXR0ZXJuX3JlY29nKToKCSh2ZWN0X3BhdHRlcm5fcmVjb2dfMSk6IE5ldyBmdW5jdGlvbnMuCgkodmVjdF9wYXR0ZXJuX3JlY29nX2Z1bmNzKTogTmV3IGFycmF5IG9mIGZ1bmN0aW9uIHBvaW50ZXJzLgoKCSogdHJlZS12ZWN0b3JpemVyLmggKHRlcm5hcnlfb3ApOiBOZXcgZW51bSB2YWx1ZS4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X2NyZWF0ZV9lcGlsb2dfZm9yX3JlZHVjdGlvbik6IEFkZGVkCglkZWNsYXJhdGlvbi4gUmV2aXNlZCBkb2N1bWVudGF0aW9uLiBSZW1vdmVkIHJlZHVuZGFudCBkdW1wIHByaW50cy4KCVJlbW92ZWQgcmVkdW5kYW50IGFyZ3VtZW50LiBBZGRlZCBzdXBwb3J0IGZvciByZWR1Y3Rpb24gcGF0dGVybnMuCgkodmVjdG9yaXphYmxlX3JlZHVjdGlvbik6IEFkZGVkIHN1cHBvcnQgZm9yIHJlZHVjdGlvbiBwYXR0ZXJucy4KCSh2ZWN0X3RyYW5zZm9ybV9zdG10KTogQWRkZWQgc3VwcG9ydCBmb3IgcGF0dGVybnMuCgoJKiBleHByLmMgKGV4cGFuZF9leHByX3JlYWxfMSk6IEFkZGVkIGNhc2UgZm9yIERPVF9QUk9EX0VYUFIuCgkqIGdlbm9waW5pdC5jICh1ZG90X3Byb2Rfb3B0YWIsIHNkb3RfcHJvZF9vcHRhYik6IEluaXRpYWxpemUuCgkqIG9wdGFicy5jIChvcHRhYl9mb3JfdHJlZV9jb2RlKTogQWRkZWQgY2FzZSBmb3IgRE9UX1BST0RfRVhQUi4KCShleHBhbmRfd2lkZW5fcGF0dGVybl9leHByKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfb3B0YWJzKTogSW5pdGlhbGl6ZSBuZXcgb3B0YWJzIHVkb3RfcHJvZF9vcHRhYiwKCXNkb3RfcHJvZF9vcHRhYi4KCSogb3B0YWJzLmggKE9USV9zZG90X3Byb2QsIE9USV91ZG90X3Byb2QpOiBOZXcuCgkoc2RvdF9wcm9kX29wdGFiLCB1ZG90X3Byb2Rfb3B0YWIpOiBEZWZpbmUgbmV3IG9wdGFicy4KCShleHBhbmRfd2lkZW5fcGF0dGVybl9leHByKTogTmV3IGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoJKiB0cmVlLmRlZiAoRE9UX1BST0RfRVhQUiwgV0lERU5fU1VNX0VYUFIsIFdJREVOX01VTFRfRVhQUik6IE5ldwoJdHJlZS1jb2Rlcy4KCSogdHJlZS1pbmxpbmUuYyAoZXN0aW1hdGVfbnVtX2luc25zXzEpOiBBZGRlZCBjYXNlcyBmb3IgbmV3Cgl0cmVlLWNvZGVzIERPVF9QUk9EX0VYUFIsIFdJREVOX1NVTV9FWFBSLCBXSURFTl9NVUxUX0VYUFIuCgkqIHRyZWUtcHJldHR5LXByaW50LmMgKGR1bXBfZ2VuZXJpY19ub2RlKTogTGlrZXdpc2UuCgkob3BfcHJpbyk6IExpa2V3aXNlLgoJKG9wX3N5bWJvbCk6IEFkZGVkIGNhc2VzIGZvciBXSURFTl9TVU1fRVhQUiwgV0lERU5fTVVMVF9FWFBSLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChnZXRfZXhwcl9vcGVyYW5kcyk6IEFkZGVkIGNhc2UgZm9yCglET1RfUFJPRF9FWFBSLgoJKiB0cmVlLXZlY3QtcGF0dGVybnMuYyAod2lkZW5lZF9uYW1lX3ApOiBOZXcgZnVuY3Rpb24uCgkodmVjdF9yZWNvZ19kb3RfcHJvZF9wYXR0ZXJuKTogQWRkZWQgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24uCgkqIHRyZWUtdmVjdC10cmFuc2Zvcm0uYyAoZ2V0X2luaXRpYWxfZGVmX2Zvcl9yZWR1Y3Rpb24pOiBBZGRlZAoJY2FzZXMgZm9yIERPVF9QUk9EX0VYUFIsIFdJREVOX1NVTV9FWFBSLgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKHVkb3RfcHJvZDxtb2RlPiwgc2RvdF9wcm9kdjhoaSk6IE5ldy4KCSogY29uZmlnL2kzODYvc3NlLm1kIChzZG90X3Byb2R2OGhpLCB1ZG90X3Byb2R2NHNpKTogTmV3LgoKCSogZXhwci5jIChleHBhbmRfZXhwcl9yZWFsXzEpOiBBZGRlZCBjYXNlIGZvciBXSURFTl9TVU1fRVhQUi4KCSogZ2Vub3Bpbml0LmMgKHdpZGVuX3NzdW1fb3B0YWIsIHdpZGVuX3VzdW1fb3B0YWIpOiBJbml0aWFsaXplLgoJKiBvcHRhYnMuYyAob3B0YWJfZm9yX3RyZWVfY29kZSk6IEFkZGVkIGNhc2UgZm9yIFdJREVOX1NVTV9FWFBSLgoJKGluaXRfb3B0YWJzKTogSW5pdGlhbGl6ZSBuZXcgb3B0YWJzIHdpZGVuX3NzdW1fb3B0YWIsCgl3aWRlbl91c3VtX29wdGFiLgoJKiBvcHRhYnMuaCAoT1RJX3dpZGVuX3NzdW0sIE9USV93aWRlbl91c3VtKTogTmV3LgoJKHdpZGVuX3NzdW1fb3B0YWIsIHdpZGVuX3VzdW1fb3B0YWIpOiBEZWZpbmUgbmV3IG9wdGFicy4KCSogdHJlZS12ZWN0LWdlbmVyaWMuYzogKGV4cGFuZF92ZWN0b3Jfb3BlcmF0aW9uc18xKTogQ2hlY2sgdHlwZSBvZgoJdXNlIGluc3RlYWQgb2YgdHlwZSBvZiBkZWYuCgkqIHRyZWUtdmVjdC1wYXR0ZXJucy5jICh2ZWN0X3JlY29nX3dpZGVuX3N1bV9wYXR0ZXJuKTogQWRkZWQKCWZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgoJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKHdpZGVuX3VzdW08bW9kZT4sIHdpZGVuX3NzdW12MTZxaSwKCXdpZGVuX3NzdW12OGhpKTogTmV3LgoKCSogZG9jL3RtLnRleGkgKHNzdW1fd2lkZW4sIHVzdW1fd2lkZW4sIHNkb3RfcHJvZCwgdWRvdF9wcm9kKTogTmV3CglwYXR0ZXJucy4KCjIwMDYtMDEtMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMvMjU4MDUKCSogYy1kZWNsLmMgKGFkZF9mbGV4aWJsZV9hcnJheV9lbHRzX3RvX3NpemUpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX2RlY2wpOiBVc2UgaXQuCgoyMDA2LTAxLTE4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGRpYWdub3N0aWMuaDogSW5jbHVkZSBvcHRpb25zLmguCgkqIGNvbmZpZy9yczYwMDAveC1kYXJ3aW4gKGhvc3QtcHBjLWRhcndpbi5vKTogQ29ycmVjdCB0aGUKCWRlcGVuZGFuY2llcyBmb3IgZGlhZ25vc3RpYy5oLgoJKiBNYWtlZmlsZS5pbiAoRElBR05PU1RJQ19IKTogQWRkIG9wdGlvbnMuaC4KCjIwMDYtMDEtMTYgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuaCAoc3NhX2NhbGxfY2xvYmJlcmVkX2NhY2hlX3ZhbGlkKTogUmVtb3ZlLgoJKHNzYV9yb19jYWxsX2NhY2hlX3ZhbGlkKTogRGl0dG8uCgkqIHRyZWUtc3NhLWFsaWFzLmMgKHNvcnRfdGFnc19ieV9pZCk6IE5ldyBmdW5jdGlvbi4KCShpbml0X3RyYW5zaXRpdmVfY2xvYmJlcl93b3JrbGlzdCk6IERpdHRvLgoJKGFkZF90b193b3JrbGlzdCk6IERpdHRvLgoJKG1hcmtfYWxpYXNlc19jYWxsX2Nsb2JiZXJlZCk6IERpdHRvLgoJKGNvbXB1dGVfdGFnX3Byb3BlcnRpZXMpOiBEaXR0by4KCShzZXRfaW5pdGlhbF9wcm9wZXJ0aWVzKTogRGl0dG8uCgkoY29tcHV0ZV9jYWxsX2Nsb2JiZXJlZCk6IERpdHRvLgoJKGNvbXB1dGVfbWF5X2FsaWFzZXMpOglDYWxsIGNvbXB1dGVfY2FsbF9jbG9iYmVyZWQgYW5kIGdyb3VwaW5nLgoJKGNvbXB1dGVfZmxvd19zZW5zaXRpdmVfYWxpYXNpbmcpOiBSZW1vdmUgY2xvYmJlcmluZyByZWxhdGVkIGNvZGUuCgkoY29tcHV0ZV9mbG93X2luc2Vuc2l0aXZlX2FsaWFzaW5nKTogR3JvdXBpbmcgbm93IGhhcHBlbnMgaW4gb3VyCgljYWxsZXIuCgkoc2V0dXBfcG9pbnRlcnNfYW5kX2FkZHJlc3NhYmxlcyk6IFJlbW92ZSBjbG9iYmVyaW5nIHJlbGF0ZWQgY29kZS4KCShhZGRfbWF5X2FsaWFzKTogRGl0dG8uCgkocmVwbGFjZV9tYXlfYWxpYXMpOiBEaXR0by4KCShnZXRfbm10X2Zvcik6IERpdHRvLgoJKGNyZWF0ZV9nbG9iYWxfdmFyKToKCShpc19lc2NhcGVfc2l0ZSk6IFJldHVybiBhbiBlc2NhcGVfdHlwZSBlbnVtZXJhdGlvbi4KCSogdHJlZS1mbG93LWlubGluZS5oIChpc19jYWxsX2Nsb2JiZXJlZCk6IEdsb2JhbCB2YXIgZG9lcyBub3QKCWltcGx5IGNhbGwgY2xvYmJlcmVkLgoJKG1hcmtfY2FsbF9jbG9iYmVyZWQpOiBUYWtlIGEgcmVhc29uIGZvciBtYXJraW5nIHRoaXMuIFJlbW92ZQoJbWFya2luZyBvZiBnbG9iYWxuZXNzLCBhbmQgY2FjaGUgaW52YWxpZGF0aW9uLgoJKGNsZWFyX2NhbGxfY2xvYmJlcmVkKTogUmVtb3ZlIGNhY2hlIGludmFsaWRhdGlvbiBjb2RlLgoJKiB0cmVlLWRmYS5jIChkdW1wX3ZhcmlhYmxlKTogSWYgZGV0YWlscyBpcyBvbiwgZHVtcCB0aGUgcmVhc29uCglmb3IgZXNjYXBpbmcuCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKGNyZWF0ZV90ZW1wKTogQ29weSBlc2NhcGUgbWFzayBmcm9tIG9yaWdpbmFsCgl2YXJpYWJsZS4KCSogdHJlZS1mbG93LmggKHN0cnVjdCBwdHJfaW5mb19kZWYpOiBBZGQgZXNjYXBlIG1hc2sgbWVtYmVyLgoJKHN0cnVjdCB2YXJfYW5uX2QpOiBEaXR0by4KCShlbnVtIGVzY2FwZV90eXBlKTogTmV3LgoJKG1hcmtfY2FsbF9jbG9iYmVyZWQpOiBBZGp1c3QgcHJvdG90eXBlLgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jICh1cGRhdGVfYWxpYXNfaW5mbyk6IFVubW9kaWZpYWJsZSB2YXJzCglhcmUgbmV2ZXIgY2FsbCBjbG9iYmVyZWQuCglSZWNvcmQgcmVhc29ucyBmb3IgZXNjYXBpbmcuCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmggKGlzX2VzY2FwZV9zaXRlKTogVXBkYXRlIHByb3RvdHlwZS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoc3NhX2NhbGxfY2xvYmJlcmVkX2NhY2hlX3ZhbGlkKTogUmVtb3ZlLgoJKHNzYV9yb19jYWxsX2NhY2hlX3ZhbGlkKTogRGl0dG8uCgkoY2xvYmJlcmVkX3ZfbWF5X2RlZnMpOiBEaXR0by4KCShjbG9iYmVyZWRfdnVzZXMpOiBEaXR0by4KCShyb19jYWxsX3Z1c2VzKTogRGl0dG8uCgkoY2xvYmJlcl9zdGF0cyk6IE5ldy4KCShpbml0X3NzYV9vcGVyYW5kcyk6IFplcm8gb3V0IGNsb2JiZXIgc3RhdHMuCgkoZmluaV9zc2Ffb3BlcmFuZHMpOiBQcmludCBvdXQgY2xvYmJlciBzdGF0cy4KCShnZXRfY2FsbF9leHByX29wZXJhbmRzKTogUGFzcyBjYWxsZWUgZm5kZWNsIHRvCglhZGRfY2FsbF9yZWFkX29wcykuCgkoYWRkX2NhbGxfY2xvYmJlcl9vcHMpOiBSZW1vdmUgdXNlIG9mIGNhY2hlLgoJQWRkIHVzZSBvZiBQVVJFX0NPTlNUIGluZm9ybWF0aW9uLgoJKGFkZF9jYWxsX3JlYWRfb3BzKTogUmVtb3ZlIHVzZSBvZiBjYWNoZS4KCUFkZCB1c2Ugb2Ygc3RhdGljIG5vdF9yZWFkIGluZm9ybWF0aW9uLgoKMjAwNi0wMS0xOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJSW50cm9kdWNlIFRMUyBkZXNjcmlwdG9ycyBmb3IgaTM4NiBhbmQgeDg2XzY0LgoJKiBjb25maWcvaTM4Ni9pMzg2LmggKFRBUkdFVF9HTlUyX1RMUyk6IE5ldyBtYWNyby4KCShUQVJHRVRfQU5ZX0dOVV9UTFMpOiBOZXcgbWFjcm8uCgkoZW51bSB0bHNfZGlhbGVjdCk6IEFkZGVkIFRMU19ESUFMRUNUX0dOVTIuCgkoc3RydWN0IG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgdGxzX2Rlc2NyaXB0b3JfY2FsbF9leHBhbmRlZF9wLgoJKGl4ODZfdGxzX2Rlc2NyaXB0b3JfY2FsbHNfZXhwYW5kZV9pbl9jZnVuKTogTmV3IG1hY3JvLgoJKGl4ODZfY3VycmVudF9mdW5jdGlvbl9jYWxsc190bHNfZGVzY3JpcHRvcik6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfdGxzX2RpYWxlY3QpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKG92ZXJyaWRlX29wdGlvbnMpOiBJbnRyb2R1Y2UgZ251MiB0bHMgZGlhbGVjdC4KCShpeDg2X2ZyYW1lX3BvaW50ZXJfcmVxdWlyZWQpOiBGdW5jdGlvbnMgY29udGFpbmluZyBUTFNDQUxMcyBhcmUKCW5vdCBsZWF2ZXMuCgkoaXg4Nl9zZWxlY3RfYWx0X3BpY19yZWdudW0sIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQpOgoJTGlrZXdpc2UuCgkobGVnaXRpbWl6ZV90bHNfYWRkcmVzcyk6IEFkanVzdCBsb2dpYyBmb3IgR05VMiBUTFMuCgkoaXg4Nl9pbml0X21hY2hpbmVfc3RhdHVzKTogSW5pdGlhbGl6ZSBuZXcgZmllbGQuCgkoaXg4Nl90bHNfZ2V0X2FkZHIpOiBVc2UgVEFSR0VUX0FOWV9HTlVfVExTLgoJKGl4ODZfdGxzX21vZHVsZV9iYXNlKTogTmV3LgoJKiBjb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIChpeDg2X3Rsc19tb2R1bGVfYmFzZSk6IERlY2xhcmUgaXQuCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKFVOU1BFQ19UTFNERVNDKTogTmV3IGNvbnN0YW50LgoJKHRsc19nbG9iYWxfZHluYW1pY18zMiwgdGxzX2dsb2JhbF9keW5hbWljXzY0KTogSGFuZGxlIEdOVTIgVExTLgoJKHRsc19sb2NhbF9keW5hbWljX2Jhc2VfMzIsIHRsc19sb2NhbF9keW5hbWljX2Jhc2VfNjQpOiBMaWtld2lzZS4KCSh0bHNfZHluYW1pY19nbnUyXzMyLCAqdGxzX2R5bmFtaWNfbGVhXzMyKTogTmV3IHBhdHRlcm5zLgoJKCp0bHNfZHluYW1pY19jYWxsXzMyLCAqdGxzX2R5bmFtaWNfZ251Ml9jb21iaW5lXzMyKTogTGlrZXdpc2UuCgkodGxzX2R5bmFtaWNfZ251Ml82NCwgKnRsc19keW5hbWljX2xlYV82NCk6IExpa2V3aXNlLgoJKCp0bHNfZHluYW1pY19jYWxsXzY0LCAqdGxzX2R5bmFtaWNfZ251Ml9jb21iaW5lXzY0KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKHRsc19tb2RiYXNlX29wZXJhbmQpOiBOZXcuCgkodHBfb3JfcmVnaXN0ZXJfb3BlcmFuZCk6IE5ldy4KCjIwMDYtMDEtMTggIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogaXBhLXJlZmVyZW5jZS5jIChjaGVja19vcGVyYW5kKTogQWxsb3cgRlVOQ1RJT05fREVDTC4KCShsb29rX2Zvcl9hZGRyZXNzX29mKTogRGl0dG8uCgkoaXBhX2luaXQpOiBXYWxrIHRoZSBmdW5jdGlvbiBkZWNscy4KCShzdGF0aWNfZXhlY3V0ZSk6IERvbid0IHNldCByZWFkb25seSBvbiBGVU5DVElPTl9ERUNMJ3MuCgoyMDA2LTAxLTE4ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHNoaWZ0IHNwbGl0ZXIpOiBGaXggYSBhIHR5cG8gaW4gdGhlIHNwbGl0dGVyCglmb3Igc2hpZnRzIHdoZXJlIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlZ2lzdGVycyBhcmUgZGlmZmVyZW50LgoKMjAwNi0wMS0xOCAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCglNZXJnZSBmcm9tIGNzbC1hcm0tYnJhbmNoLgoJMjAwNS0wMy0xNCAgSnVsaWFuIEJyb3duICA8anVsaWFuQGNvZGVzb3VyY2VyeS5jb20+CgkqIGNvbmZpZy9hcm0vbGliMWZ1bmNzLmFzbSAoYXNobGRpMyk6IERvbid0IGRlZmluZSBvbiBTeW1iaWFuT1MuCgkoYWVhYmlfbGxzbCk6IExpa2V3aXNlLgoJKGFzaHJkaTMpOiBMaWtld2lzZS4KCShhZWFiaV9sYXNyKTogTGlrZXdpc2UuCgkobHNocmRpMyk6IExpa2V3aXNlLgoJKGFlYWJpX2xsc3IpOiBMaWtld2lzZS4KCTIwMDUtMDMtMTAgIEp1bGlhbiBCcm93biAgPGp1bGlhbkBjb2Rlc291cmNlcnkuY29tPgoJKiBjb25maWcuZ2NjOiBEaXNhYmxlIHNoYXJlZCBsaWJnY2MgZm9yIFN5bWJpYW5PUy4KCSogY29uZmlnL2FybS90LXN5bWJpYW4gKExJQjJBRERFSCk6IEluY2x1ZGUgY29uZmlnL2FybS9wci1zdXBwb3J0LmMuCgoyMDA2LTAxLTE4ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGMtcHJhZ21hLmMgKGhhbmRsZV9wcmFnbWFfZGlhZ25vc3RpYyk6IE5ldy4KCShpbml0X3ByYWdtYSk6IFJlZ2lzdGVyIGl0LgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IGl0LgoKCSogZGlhZ25vc3RpYy5kZWY6IEFkZCBES19VTlNQRUNJRklFRCBhbmQgREtfSUdOT1JFRC4KCSogZGlhZ25vc3RpYy5oIChkaWFnbm9zdGljX2NsYXNzaWZ5X2RpYWdub3N0aWMpOiBEZWNsYXJlLgoJKGRpYWdub3N0aWNfY29udGV4dCk6IEFkZCBjbGFzc2lmeV9kaWFnbm9zdGljW10uCgkqIGRpYWdub3N0aWMuYyAoZGlhZ25vc3RpY19jb3VudF9kaWFnbm9zdGljKTogRG9uJ3QgY291bnQgd2FybmluZ3MKCWFzIGVycm9ycyBpZiB0aGV5J3JlIG92ZXJyaWRkZW4gdG8gREtfV0FSTklORy4KCShkaWFnbm9zdGljX2luaXRpYWxpemUpOiBJbml0aWFsaXplIGNsYXNzaWZ5X2RpYWdub3N0aWNbXS4KCShkaWFnbm9zdGljX3NldF9raW5kX292ZXJyaWRlKTogTmV3LgoJKGRpYWdub3N0aWNfcmVwb3J0X2RpYWdub3N0aWMpOiBDaGVjayBmb3Iga2luZCBjaGFuZ2VzLgoJKiBvcHRzLmMgKGNvbW1vbl9oYW5kbGVfb3B0aW9uKTogVGFrZSBsYW5nX21hc2suICBVcGRhdGUgY2FsbGVycy4KCUhhbmRsZSBPUFRfV2Vycm9yXy4KCSogY29tbW9uLm9wdCAoV2Vycm9yPSk6IE5ldy4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtV2Vycm9yPSoKCjIwMDYtMDEtMTggIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLXZycC5jICh0ZXN0X2Zvcl9zaW5ndWxhcml0eSk6IENvcnJlY3QgdGVzdCBmb3IgbmV3CgltaW4gbGltaXQuICBVc2Ugb3BlcmFuZF9lcXVhbF9wIHJhdGhlciB0aGFuIHBvaW50ZXIgZXF1YWxpdHkKCWZvciB0ZXN0aW5nIGlmIG5ldyBtaW4vbWF4IHZhbHVlcyBhcmUgZXF1YWwuCgoJKiB0cmVlLXNzYS1wcm9wYWdhdGUuYyAoc3Vic3RpdHV0ZV9hbmRfZm9sZCk6IERlbGF5IHNpbXBsaWZpY2F0aW9ucwoJdXNpbmcgcmFuZ2UgaW5mb3JtYXRpb24gdW50aWwgYWZ0ZXIgcHJvcGFnYXRpb24gYW5kIGZvbGRpbmcuCgoyMDA2LTAxLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoJICAgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCSAgICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIG9tcC1sb3cuYzogTmV3IGZpbGUuCgkqIGMtb21wLmM6IE5ldyBmaWxlLgoKMjAwNi0wMS0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCSAgICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLWZvcGVubXAuCgkqIHRyZWUtZHVtcC5oIChkZWJ1Z19mdW5jdGlvbik6IERlY2xhcmUuCgkqIGhvb2tzLmMgKGhvb2tfYm9vbF90cmVlX2Jvb2xfZmFsc2UpOiBOZXcgZnVuY3Rpb24uCgkoaG9va190cmVlX3RyZWVfbnVsbCk6IFJlbW92ZS4KCShob29rX3RyZWVfdHJlZV90cmVlX251bGwpOiBOZXcuCgkqIGhvb2tzLmg6IFVwZGF0ZSB0byBtYXRjaC4KCSogdHJlZS1wcmV0dHktcHJpbnQuYyAoZGVidWdfdHJlZV9jaGFpbik6IE5ldy4KCShwcmludF9nZW5lcmljX2V4cHIpOiBIYW5kbGUgVERGX0NIQUlOLgoJKGR1bXBfZ2VuZXJpY19ub2RlKTogSGFuZGxlIEJMT0NLLgoJRG8gbm90IGFib3J0IHdpdGggaW5jb21wbGV0ZSBTV0lUQ0hfRVhQUnMuCglEbyBub3QgZHVtcCBib2R5IG9mIGFuIE9wZW5NUCBkaXJlY3RpdmUgaWYgVERGX1NMSU0gaXMgZ2l2ZW4uCgk8Y2FzZSBPTVBfUEFSQUxMRUwsIE9NUF9GT1IsIE9NUF9TRUNUSU9OUz46IERvbid0CglwcmludCBzcGFjZSBhZnRlciBkaXJlY3RpdmUgbmFtZS4KCTxPTVBfRk9SPjogSGFuZGxlIHByaW50aW5nIE9NUF9GT1JfUFJFX0JPRFkuCglIYW5kbGUgT01QX01BU1RFUiBhbmQgT01QX09SREVSRUQuCglIYW5kbGUgcHJpbnRpbmcgb2YgT01QX0JPRFkganVzdCBpbiBvbmUgcGxhY2UsIGdvdG8KCWR1bXBfb21wX2JvZHkgaW4gdGhlIHJlc3Qgb2YgT01QXyogbm9kZXMgdGhhdCBoYXZlCglPTVBfQk9EWS4KCURvbid0IGhhbmRsZSBjbGF1c2Ugbm9kZXMgaGVyZS4gIFVwZGF0ZSBvbXAgc3RhdGVtZW50cyB0bwoJdXNlIGR1bXBfb21wX2NsYXVzZXMuCglIYW5kbGUgT01QX1NJTkdMRSwgT01QX1NFQ1RJT05TLCBPTVBfU0VDVElPTiwKCU9NUF9DTEFVU0VfT1JERVJFRCwgT01QX0NMQVVTRV9TQ0hFRFVMRSwgT01QX0FUT01JQywKCU9NUF9DUklUSUNBTCwgT01QX0NMQVVTRV9OT1dBSVQsIEdPTVBfQ0xBVVNFX0lGLAoJR09NUF9DTEFVU0VfTlVNX1RIUkVBRFMsIEdPTVBfRk9SLCBHT01QX0NMQVVTRV9TSEFSRUQsCglHT01QX0NMQVVTRV9GSVJTVFBSSVZBVEUsIEdPTVBfQ0xBVVNFX0xBU1RQUklWQVRFLAoJR09NUF9DTEFVU0VfQ09QWUlOIGFuZCBHT01QX0NMQVVTRV9DT1BZUFJJVkFURS4KCUFkanVzdCBvdXRwdXQgZm9yIEdPTVBfUEFSQUxMRUwuCgkoZHVtcF9vbXBfY2xhdXNlcyk6IE5ldy4KCShwcmludF9kZWNsYXJhdGlvbik6IER1bXAgREVDTF9WQUxVRV9FWFBSLgoJKG9wX3N5bWJvbF8xKTogU3BsaXQgb3V0IG9mIG9wX3N5bWJvbC4KCShkdW1waW5nX3N0bXRzKTogUmVtb3ZlLiAgVXBkYXRlIGFsbCB1c2Vycy4KCSogY2dyYXBoLmMgKGNncmFwaF9hbmFseXplX3F1ZXVlKTogTmV3LgoJKGNncmFwaF9hZGRfbmV3X2Z1bmN0aW9uKTogTmV3LgoJKiBjZ3JhcGguaCAoY2dyYXBoX2FuYWx5emVfcXVldWUpOiBEZWNsYXJlLgoJKGNncmFwaF9hZGRfbmV3X2Z1bmN0aW9uKTogRGVjbGFyZS4KCShjZ3JhcGhfbG93ZXJfZnVuY3Rpb24pOiBSZW1vdmUuCgkqIHRyZWUuYyAod2Fsa190cmVlKTogV2FsayBPTVBfQ0xBVVNFX0NIQUlOIG9mIE9NUF9DTEFVU0VfKgoJbm9kZXMuICBVc2Ugc3dpdGNoIGZvciBhbGwgbm9kZXMsIGhhbmRsZSBtb3N0IG9mIElTX0VYUFJfQ09ERV9DTEFTUwoJYW5kIFRZUEVfUCBub2RlcyBpbiBpdHMgZGVmYXVsdCBjbGF1c2UuCgkoZW1wdHlfYm9keV9wKTogTmV3LgoJKHRyZWVfcmFuZ2VfY2hlY2tfZmFpbGVkKTogTmV3LgoJKGJ1aWxkNV9zdGF0KTogTmV3LgoJKiB0cmVlLmggKE9NUF9DTEFVU0VfUkVEVUNUSU9OX0lOSVQsCglPTVBfQ0xBVVNFX1JFRFVDVElPTl9NRVJHRSwKCU9NUF9DTEFVU0VfUkVEVUNUSU9OX1BMQUNFSE9MREVSLAoJT01QX0NMQVVTRV9QUklWQVRFX0RFQlVHLAoJT01QX0NMQVVTRV9MQVNUUFJJVkFURV9GSVJTVFBSSVZBVEUsIE9NUF9GT1JfUFJFX0JPRFksCglPTVBfTUFTVEVSX0JPRFksIE9NUF9PUkRFUkVEX0JPRFkgT01QX0JPRFksCglPTVBfQ0xBVVNFUywgT01QX0NMQVVTRV9ERUNMLCBPTVBfQ0xBVVNFX0RFRkFVTFRfS0lORCwKCU9NUF9DTEFVU0VfQ0hBSU4sIE9NUF9DTEFVU0VfT1VURVJfREVDTCwKCU9NUF9DTEFVU0VfSU5ORVJfREVDTCwgT01QX0NMQVVTRV9OVU1fVEhSRUFEU19FWFBSLAoJT01QX0NMQVVTRV9JRl9FWFBSLCBPTVBfQ0xBVVNFX1NDSEVEVUxFX0NIVU5LX0VYUFIsCglPTVBfQ0xBVVNFX1NDSEVEVUxFX0NIVU5LX1NJWkUuIE9NUF9QQVJBTExFTF9WQVJfSU5JVCwKCU9NUF9QQVJBTExFTF9WQVJfUkVEVUMsIE9NUF9GT1JfVkFSX0lOSVQsCglPTVBfRk9SX1ZBUl9MQVNULCBPTVBfRk9SX1ZBUl9SRURVQywKCU9NUF9TRUNUSU9OU19WQVJfSU5JVCwgT01QX1NFQ1RJT05TX1ZBUl9MQVNULAoJT01QX1NFQ1RJT05TX1ZBUl9SRURVQywgT01QX0NMQVVTRV9SRURVQ1RJT05fQ09ERQoJT01QX1NJTkdMRV9DTEFVU0VTLCBPTVBfU0lOR0xFX0JPRFksCglPTVBfQ0xBVVNFX1NDSEVEVUxFX0NIVU5LX1NJWkUsIE9NUF9TRUNUSU9OX0JPRFksCglPTVBfQ1JJVElDQUxfTkFNRSwgT01QX0NSSVRJQ0FMX0JPRFkpOiBOZXcuCgkoVFJFRV9SQU5HRV9DSEVDSyk6IE5ldy4KCShlbXB0eV9ib2R5X3ApOiBEZWNsYXJlLgoJKGVudW0gb21wX2NsYXVzZV9kZWZhdWx0X2tpbmQpOiBOZXcuCgkoYnVpbGRfc3RyaW5nX2xpdGVyYWwpOiBEZWNsYXJlLgoJKGVudW0gb21wX2NsYXVzZV9zY2hlZHVsZV9raW5kLCBPTVBfQ0xBVVNFX1NDSEVEVUxFX0tJTkQpOiBOZXcuCgkoYnVpbGQ1X3N0YXQsIGJ1aWxkNSk6IERlY2xhcmUuCgkqIHRyZWUtcGFzcy5oIChUREZfQ0hBSU4pOiBEZWZpbmUuCgkqIHRyZWUtcGFzcy5oIChQUk9QX2dpbXBsZV9sb21wKTogRGVmaW5lLgoJKHBhc3NfbG93ZXJfb21wKTogRGVjbGFyZS4KCSogZGlhZ25vc3RpYy5oIChkZWJ1Z190cmVlX2NoYWluKTogRGVjbGFyZS4KCSogYnVpbHRpbnMuYyAoZ2V0X2J1aWx0aW5fc3luY19tb2RlKTogVXNlIDAgYXMgbGFzdCBhcmd1bWVudCB0bwoJbW9kZV9mb3Jfc2l6ZS4KCShleHBhbmRfYnVpbHRpbik6IEhhbmRsZSBzeW5jIEJVSUxUX0lOXypfMTYgYnVpbHRpbnMuCgkqIGJ1aWx0aW5zLmMgKGJ1aWxkX3N0cmluZ19saXRlcmFsKTogTWFrZSBleHRlcm4uCgkqIGdjYy5jIChpbmNsdWRlX3NwZWNfZnVuY3Rpb24pOiBOZXcuCgkoc3RhdGljX3NwZWNfZnVuY3Rpb25zKTogQWRkIGl0LgoJKG1haW4pOiBNb3ZlIGxvYWQgb2YgbGliZ29tcC5zcGVjIC4uLgoJKExJTktfQ09NTUFORF9TUEVDKTogLi4uIGhlcmUuCgkobGlua19nb21wX3NwZWMpOiBOZXcuCgkoc3RhdGljX3NwZWNzKTogSW5jbHVkZSBpdC4KCShMSU5LX0NPTU1BTkRfU1BFQyk6IEFkZCBsaW5rX2dvbXAuCgkoR09NUF9TRUxGX1NQRUNTKTogTmV3LgoJKGRyaXZlcl9zZWxmX3NwZWNzKTogSW5jbHVkZSBpdC4KCShzd2l0Y2hfbWF0Y2hlcyk6IERvbid0IG1hcmsgaW5saW5lLgoJKG1haW4pOiBMb2FkIGxpYmdvbXAuc3BlYy4KCSogdHJlZS1naW1wbGUuYyAoaXNfZ2ltcGxlX3N0bXQpOiBUcnVlIGZvciBPTVBfTUFTVEVSLAoJT01QX09SREVSRUQsIE9NUF9DUklUSUNBTCwgT01QX1NFQ1RJT05TLCBPTVBfU0VDVElPTiwKCWFuZCBPTVBfU0lOR0xFLCBPTVBfRk9SIGFuZCBPTVBfUEFSQUxMRUwuCgkqIHRyZWUtZ2ltcGxlLmggKGVudW0gb21wX3BhcmFsbGVsKTogRGVjbGFyZS4KCShkZXRlcm1pbmVfcGFyYWxsZWxfdHlwZSk6IERlY2xhcmUuCgkob21wX2ZpcnN0cHJpdmF0aXplX3ZhcmlhYmxlKTogRGVjbGFyZS4KCShvbXBfcmVkdWN0aW9uX2luaXQpOiBEZWNsYXJlLgoJKGRpYWdub3NlX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrX2Vycm9ycyk6IERlY2xhcmUuCgkoc3RydWN0IHdhbGtfc3RtdF9pbmZvKTogQWRkIHdhbnRfcmV0dXJuX2V4cHIuCgkoc3RydWN0IHdhbGtfc3RtdF9pbmZvKTogQWRkIHdhbnRfYmluZF9leHByLCB3YW50X2xvY2F0aW9ucy4KCShmaW5kX29tcF9jbGF1c2UpOiBEZWNsYXJlLgoJKGluc2VydF9maWVsZF9pbnRvX3N0cnVjdCk6IERlY2xhcmUuCgkoc3RydWN0IHdhbGtfc3RtdF9pbmZvKTogTW92ZSBmcm9tIHRyZWUtbmVzdGVkLmMKCSh3YWxrX3N0bXRzKTogRGVjbGFyZS4KCSogYy1jcHBidWlsdGluLmMgKGNfY3BwX2J1aWx0aW5zKTogSWYgLWZvcGVubXAsICNkZWZpbmUgX09QRU5NUAoJdG8gMjAwNTA1LgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF9sb3dlcl9mdW5jdGlvbik6IE1ha2Ugc3RhdGljLgoJKGNncmFwaF9maW5hbGl6ZV9wZW5kaW5nX2Z1bmN0aW9ucyk6IE5ldy4KCShjZ3JhcGhfZmluYWxpemVfZnVuY3Rpb24pOiBDYWxsIGl0LgoJKGNncmFwaF9maW5hbGl6ZV9jb21waWxhdGlvbl91bml0KTogTGlrZXdpc2UuCgkqIGJ1aWx0aW4tdHlwZXMuZGVmIChCVF9JMTYsIEJUX0ZOX0kxNl9WUFRSX0kxNiwKCUJUX0ZOX0JPT0xfVlBUUl9JMTZfSTE2LCBCVF9GTl9JMTZfVlBUUl9JMTZfSTE2KTogQWRkLgoJKEJUX0ZOX1VJTlRfVUlOVCk6IE5ldy4KCShERUZfRlVOQ1RJT05fVFlQRV82LCBERUZfRlVOQ1RJT05fVFlQRV83LAoJREVGX0ZVTkNUSU9OX1RZUEVfVkFSXzQpOiBEb2N1bWVudC4KCShCVF9QVFJfTE9ORywgQlRfUFRSX1BUUiwgQlRfRk5fQk9PTCwgQlRfRk5fSU5ULAoJQlRfRk5fVk9JRF9QVFJQVFIsIEJUX1BUUl9GTl9WT0lEX1BUUiwKCUJUX0ZOX0JPT0xfTE9OR1BUUl9MT05HUFRSLCBCVF9GTl9WT0lEX09NUEZOX1BUUl9VSU5ULAoJQlRfRk5fVk9JRF9PTVBGTl9QVFJfVUlOVF9VSU5ULAoJQlRfRk5fQk9PTF9MT05HX0xPTkdfTE9OR19MT05HUFRSX0xPTkdQVFIsCglCVF9GTl9CT09MX0xPTkdfTE9OR19MT05HX0xPTkdfTE9OR1BUUl9MT05HUFRSLAoJQlRfRk5fVk9JRF9PTVBGTl9QVFJfVUlOVF9MT05HX0xPTkdfTE9ORywKCUJUX0ZOX1ZPSURfT01QRk5fUFRSX1VJTlRfTE9OR19MT05HX0xPTkdfTE9ORyk6IE5ldy4KCSogYnVpbHRpbnMuZGVmOiBVcGRhdGUgREVGX0JVSUxUSU4gY29tbWVudCB0byBpbmNsdWRlIENPTkQgYXJndW1lbnQuCglNb3ZlIGFsbCBERUZfU1lOQ19CVUlMVElOICgpIGFuZCBERUZfR09NUF9CVUlMVElOICgpIGJ1aWx0aW5zCglpbnRvIHNlcGFyYXRlIGZpbGVzLgoJKERFRl9HT01QX0JVSUxUSU4pOiBOZXcuCgkoQlVJTFRfSU5fT01QX0dFVF9USFJFQURfTlVNLCBCVUlMVF9JTl9HT01QX0JBUlJJRVIsCglCVUlMVF9JTl9HT01QX0NSSVRJQ0FMX1NUQVJULCBCVUlMVF9JTl9HT01QX0NSSVRJQ0FMX0VORCwKCUJVSUxUX0lOX0dPTVBfQ1JJVElDQUxfTkFNRV9TVEFSVCwgQlVJTFRfSU5fR09NUF9DUklUSUNBTF9OQU1FX0VORCwKCUJVSUxUX0lOX0dPTVBfTE9PUF9TVEFUSUNfU1RBUlQsIEJVSUxUX0lOX0dPTVBfTE9PUF9EWU5BTUlDX1NUQVJULAoJQlVJTFRfSU5fR09NUF9MT09QX0dVSURFRF9TVEFSVCwgQlVJTFRfSU5fR09NUF9MT09QX1JVTlRJTUVfU1RBUlQsCglCVUlMVF9JTl9HT01QX0xPT1BfT1JERVJFRF9TVEFUSUNfU1RBUlQsCglCVUlMVF9JTl9HT01QX0xPT1BfT1JERVJFRF9EWU5BTUlDX1NUQVJULAoJQlVJTFRfSU5fR09NUF9MT09QX09SREVSRURfR1VJREVEX1NUQVJULAoJQlVJTFRfSU5fR09NUF9MT09QX09SREVSRURfUlVOVElNRV9TVEFSVCwKCUJVSUxUX0lOX0dPTVBfTE9PUF9TVEFUSUNfTkVYVCwgQlVJTFRfSU5fR09NUF9MT09QX0RZTkFNSUNfTkVYVCwKCUJVSUxUX0lOX0dPTVBfTE9PUF9HVUlERURfTkVYVCwgQlVJTFRfSU5fR09NUF9MT09QX1JVTlRJTUVfTkVYVCwKCUJVSUxUX0lOX0dPTVBfTE9PUF9PUkRFUkVEX1NUQVRJQ19ORVhULAoJQlVJTFRfSU5fR09NUF9MT09QX09SREVSRURfRFlOQU1JQ19ORVhULAoJQlVJTFRfSU5fR09NUF9MT09QX09SREVSRURfR1VJREVEX05FWFQsCglCVUlMVF9JTl9HT01QX0xPT1BfT1JERVJFRF9SVU5USU1FX05FWFQsCglCVUlMVF9JTl9HT01QX1BBUkFMTEVMX0xPT1BfU1RBVElDX1NUQVJULAoJQlVJTFRfSU5fR09NUF9QQVJBTExFTF9MT09QX0RZTkFNSUNfU1RBUlQsCglCVUlMVF9JTl9HT01QX1BBUkFMTEVMX0xPT1BfR1VJREVEX1NUQVJULAoJQlVJTFRfSU5fR09NUF9QQVJBTExFTF9MT09QX1JVTlRJTUVfU1RBUlQsCglCVUlMVF9JTl9HT01QX0xPT1BfRU5ELCBCVUlMVF9JTl9HT01QX0xPT1BfRU5EX05PV0FJVCwKCUJVSUxUX0lOX0dPTVBfT1JERVJFRF9TVEFSVCwgQlVJTFRfSU5fR09NUF9PUkRFUkVEX0VORCwKCUJVSUxUX0lOX0dPTVBfUEFSQUxMRUxfU1RBUlQsIEJVSUxUX0lOX0dPTVBfUEFSQUxMRUxfRU5ELAoJQlVJTFRfSU5fR09NUF9TRUNUSU9OU19TVEFSVCwgQlVJTFRfSU5fR09NUF9TRUNUSU9OU19ORVhULAoJQlVJTFRfSU5fR09NUF9QQVJBTExFTF9TRUNUSU9OU19TVEFSVCwgQlVJTFRfSU5fR09NUF9TRUNUSU9OU19FTkQsCglCVUlMVF9JTl9HT01QX1NFQ1RJT05TX0VORF9OT1dBSVQsIEJVSUxUX0lOX0dPTVBfU0lOR0xFX1NUQVJULAoJQlVJTFRfSU5fR09NUF9TSU5HTEVfQ09QWV9TVEFSVCwgQlVJTFRfSU5fR09NUF9TSU5HTEVfQ09QWV9FTkQpOiBOZXcuCgkqIHN5bmMtYnVpbHRpbnMuZGVmOiBOZXcgZmlsZSwgbW92ZWQgZnJvbSBidWlsdGlucy5kZWYuCgkqIG9tcC1idWlsdGlucy5kZWY6IE5ldyBmaWxlLCBtb3ZlZCBmcm9tIGJ1aWx0aW5zLmRlZi4KCSogYy1vYmpjLWNvbW1vbi5oIChMQU5HX0hPT0tTX09NUF9QUkVERVRFUk1JTkVEX1NIQVJJTkcpOiBSZWRlZmluZS4KCSogZ2ltcGxlLWxvdy5jIChsb3dlcl9mdW5jdGlvbl9ib2R5KTogQ2xlYXIgZGF0YS4KCShsb3dlcl9zdG10KTogRG8gbm90IGhhbmRsZSBDT01QT1VORF9FWFBSLgoJUmVtb3ZlIGNhbGwgdG8gcHJpbnRfbm9kZV9icmllZi4KCSogYy10cmVlLmggKGNfZmluaXNoX29tcF9jbGF1c2VzKTogTmV3IHByb3RvdHlwZS4KCShDX0RFQ0xfVEhSRUFEUFJJVkFURV9QKTogRGVmaW5lLgoJKGxvb2t1cF9uYW1lX25vX3JlbWFwLCBjX29tcF9yZW1hcF9wcml2YXRlKTogUmVtb3ZlCgkoY19iZWdpbl9vbXBfcGFyYWxsZWwsIGNfZmluaXNoX29tcF9wYXJhbGxlbCk6IFVwZGF0ZS4KCShjaGVja19mb3JfbG9vcF9kZWNscyk6IFVwZGF0ZSBkZWNsLgoJKGxvb2t1cF9uYW1lX25vX3JlbWFwLCBjX29tcF9yZW1hcF9wcml2YXRlKTogRGVjbGFyZS4KCShidWlsZF9pbmRpcmVjdF9yZWYsIGJ1aWxkX21vZGlmeV9leHByLCBwdXNoZGVjbCwKCXB1c2hkZWNsX3RvcF9sZXZlbCk6IE1vdmUgdG8gYy1jb21tb24uaC4KCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZV8xKTogRG9uJ3Qgc2V0IHVuc2lnbmVkcAoJYmVmb3JlIHRoZSBzd2l0Y2gsIGJ1dCBqdXN0IGluIHRoZSAyIHBsYWNlcyB0aGF0IG5lZWQgaXQuCgkqIGMtZGVjbC5jIChkaWFnbm9zZV9taXNtYXRjaGVkX2RlY2xzKTogRG8gbm90IGNoZWNrIGZvcgoJbWlzbWF0Y2hlZCB0aHJlYWQtbG9jYWwgYXR0cmlidXRlcyB3aGVuIE9MRERFQ0wgaXMgbWFya2VkCgl0aHJlYWRwcml2YXRlIGFuZCBORVdERUNMIGhhcyBubyB0aHJlYWQtbG9jYWwgYXR0cmlidXRlcy4KCShtZXJnZV9kZWNscyk6IE1lcmdlIENfREVDTF9USFJFQURQUklWQVRFX1AuCgkoY19naW1wbGVfZGlhZ25vc3RpY3NfcmVjdXJzaXZlbHkpOiBSZW5hbWUgZnJvbQoJY193YXJuX3VudXNlZF9yZXN1bHRfcmVjdXJzaXZlbHkuICBJbnZva2UKCWRpYWdub3NlX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrX2Vycm9ycy4KCShjaGVja19mb3JfbG9vcF9kZWNscyk6IFJldHVybiBhIHNpbmd1bGFyIGRlY2wgZm91bmQuCgkqIGxhbmdob29rcy5jIChsaGRfb21wX3ByZWRldGVybWluZWRfc2hhcmluZyk6IFJldHVybgoJT01QX0NMQVVTRV9ERUZBVUxUX1NIQVJFRCBmb3IgREVDTF9BUlRJRklDSUFMIGRlY2xzLgoJKGxoZF9vbXBfZmlyc3Rwcml2YXRpemVfdHlwZV9zaXplcyk6IE5ldy4KCShsaGRfb21wX2Fzc2lnbm1lbnQpOiBOZXcuCgkobGhkX29tcF9wcmVkZXRlcm1pbmVkX3NoYXJpbmcpOiBOZXcuCgkqIGxhbmdob29rcy5oIChzdHJ1Y3QgZ2ltcGxpZnlfb21wX2N0eCk6IEZvcndhcmQgZGVjbGFyZS4KCShzdHJ1Y3QgbGFuZ19ob29rc19mb3JfdHlwZXMpOiBBZGQKCW9tcF9maXJzdHByaXZhdGl6ZV90eXBlX3NpemVzLCBvbXBfcHJpdmF0aXplX2J5X3JlZmVyZW5jZSwKCW9tcF9wcmVkZXRlcm1pbmVkX3NoYXJpbmcsIG9tcF9kaXNyZWdhcmRfdmFsdWVfZXhwciwKCW9tcF9wcml2YXRlX2RlYnVnX2NsYXVzZSwgb21wX2NsYXVzZV9kZWZhdWx0X2N0b3IsCglvbXBfY2xhdXNlX2NvcHlfY3Rvciwgb21wX2NsYXVzZV9hc3NpZ25fb3AsIG9tcF9jbGF1c2VfZHRvci4KCShjX2ZpbmlzaF9vbXBfY2xhdXNlcyk6IE5ldy4KCShjX2ZpbmlzaF9iY19zdG10KTogRGlhZ25vc2UgYnJlYWsgd2l0aGluIG9tcCBmb3IuCgkoY19iZWdpbl9vbXBfcGFyYWxsZWwsIGNfZmluaXNoX29tcF9wYXJhbGxlbCk6IE5ldy4KCShidWlsZF91bmFyeV9vcCk6IFJldHVybiBlcnJvcl9tYXJrIGFmdGVyIHJlcG9ydGluZwoJYSByZWFkb25seV9lcnJvci4KCShidWlsZF9tb2RpZnlfZXhwcik6IExpa2V3aXNlLgoJKiBnaW1wbGlmeS5jOiBJbmNsdWRlIG9wdGFicy5oIGFuZCBwb2ludGVyLXNldC5oLgoJKGVudW0gZ2ltcGxpZnlfb21wX3Zhcl9kYXRhKTogRGVjbGFyZS4KCShzdHJ1Y3QgZ2ltcGxpZnlfb21wX2N0eCk6IERlY2xhcmUuCgkoc3RydWN0IGdpbXBsaWZ5X2N0eCk6IEFkZCBmaWVsZHMgcHJldl9jb250ZXh0LCBjb21iaW5lZF9wcmVfcAoJYW5kIGNvbWJpbmVkX2N0eHAuCgkoZ2ltcGxpZnlfY3R4cCwgZ2ltcGxpZnlfb21wX2N0eHApOiBOZXcgbG9jYWwgdmFyaWFibGVzLgoJKHB1c2hfZ2ltcGxpZnlfY29udGV4dCwgcG9wX2dpbXBsaWZ5X2NvbnRleHQpOiBBbGxvdyBuZXN0aW5nLgoJKHNwbGF5X3RyZWVfY29tcGFyZV9kZWNsX3VpZCk6IE5ldy4KCShuZXdfb21wX2NvbnRleHQpOiBOZXcuCgkoZGVsZXRlX29tcF9jb250ZXh0KTogTmV3LgoJKGdpbXBsZV9hZGRfdG1wX3Zhcik6IENhbGwgb21wX2FkZF92YXJpYWJsZS4KCShnaW1wbGlmeV9iaW5kX2V4cHIpOiBMaWtld2lzZS4KCShnaW1wbGlmeV92YXJfb3JfcGFybV9kZWNsKTogSWYgb21wX25vdGljZV92YXJpYWJsZSByZXR1cm5lZAoJdHJ1ZSwgZGlzcmVnYXJkIERFQ0xfVkFMVUVfRVhQUiBvbiB0aGUgZGVjbCBpZiBhbnkuCgkoZ2ltcGxpZnlfZXhwcl9pbl9jdHgpOiBOZXcuCgkob21wX2ZpcnN0cHJpdmF0aXplX3ZhcmlhYmxlLCBvbXBfZmlyc3Rwcml2YXRpemVfdHlwZV9zaXplcwoJb21wX2FkZF92YXJpYWJsZSwgb21wX25vdGljZV92YXJpYWJsZSwgb21wX2lzX3ByaXZhdGUKCWdpbXBsaWZ5X3NjYW5fb21wX2NsYXVzZXMsIGdpbXBsaWZ5X2FkanVzdF9vbXBfY2xhdXNlc18xCglnaW1wbGlmeV9hZGp1c3Rfb21wX2NsYXVzZXMsIGdpbXBsaWZ5X29tcF9wYXJhbGxlbAoJZ2ltcGxpZnlfb21wX2ZvciwgZ2ltcGxpZnlfb21wX3dvcmtzaGFyZSwgZ29hX2xoc19leHByX3AKCWdpbXBsaWZ5X29tcF9hdG9taWNfZmV0Y2hfb3AsIGdvYV9zdGFiaWxpemVfZXhwcgoJZ2ltcGxpZnlfb21wX2F0b21pY19waXBlbGluZSwgZ2ltcGxpZnlfb21wX2F0b21pY19tdXRleAoJZ2ltcGxpZnlfb21wX2F0b21pYyk6IE5ldy4KCShnaW1wbGlmeV9leHByKTogSGFuZGxlIE9NUF9QQVJBTExFTCwgT01QX0ZPUiwgT01QX1NFQ1RJT05TLAoJT01QX1NJTkdMRSwgT01QX1NFQ1RJT04sIE9NUF9NQVNURVIsIE9NUF9PUkRFUkVELAoJT01QX0NSSVRJQ0FMIGFuZCBPTVBfQVRPTUlDLgoJKGdpbXBsaWZ5X2JvZHkpOiBWZXJpZnkgZ2ltcGxpZnlfY3R4cCBpcyBlbXB0eSBhZnRlciBnaW1wbGlmaWNhdGlvbi4KCSogYy1wcmFnbWEuaCAoZW51bSBwcmFnbWFfa2luZCk6IEFkZAoJUFJBR01BX09NUF9BVE9NSUMsIFBSQUdNQV9PTVBfQkFSUklFUiwKCVBSQUdNQV9PTVBfQ1JJVElDQUwsIFBSQUdNQV9PTVBfRkxVU0gsIFBSQUdNQV9PTVBfRk9SLAoJUFJBR01BX09NUF9NQVNURVIsIFBSQUdNQV9PTVBfT1JERVJFRCwKCVBSQUdNQV9PTVBfUEFSQUxMRUwsIFBSQUdNQV9PTVBfUEFSQUxMRUxfRk9SLAoJUFJBR01BX09NUF9QQVJBTExFTF9TRUNUSU9OUywgUFJBR01BX09NUF9TRUNUSU9OLAoJUFJBR01BX09NUF9TRUNUSU9OUywgUFJBR01BX09NUF9TSU5HTEUsCglQUkFHTUFfT01QX1RIUkVBRFBSSVZBVEUuCgkqIHRyZWUuZGVmIChPTVBfUEFSQUxMRUwsIE9NUF9GT1IsIE9NUF9TRUNUSU9OUywKCU9NUF9TSU5HTEUsIE9NUF9TRUNUSU9OLCBPTVBfTUFTVEVSLCBPTVBfT1JERVJFRCwKCU9NUF9DUklUSUNBTCwgT01QX0FUT01JQywgT01QX0NMQVVTRV9QUklWQVRFLAoJT01QX0NMQVVTRV9TSEFSRUQsIE9NUF9DTEFVU0VfRklSU1RQUklWQVRFLAoJT01QX0NMQVVTRV9MQVNUUFJJVkFURSwgT01QX0NMQVVTRV9SRURVQ1RJT04sCglPTVBfQ0xBVVNFX0NPUFlJTiwgT01QX0NMQVVTRV9DT1BZUFJJVkFURSwKCU9NUF9DTEFVU0VfSUYsIE9NUF9DTEFVU0VfTlVNX1RIUkVBRFMsCglPTVBfQ0xBVVNFX1NDSEVEVUxFLCBPTVBfQ0xBVVNFX05PV0FJVCwKCU9NUF9DTEFVU0VfT1JERVJFRCwgT01QX0NMQVVTRV9ERUZBVUxUKTogRGVmaW5lLgoJKiBwcmludC10cmVlLmMgKHByaW50X25vZGUpOiBEdW1wIERFQ0xfVkFMVUVfRVhQUi4KCSogdHJlZS1zc2EtZGNlLmMgKGZpbmRfY29udHJvbF9kZXBlbmRlbmNlKTogRG8gbm90IGFzc3VtZSB0aGF0CglFTlRSWV9CTE9DS19QVFItPm5leHRfYmIgPT0gc2luZ2xlX3N1Y2MgKEVOVFJZX0JMT0NLX1BUUikuCgkqIHRyZWUtbmVzdGVkLmMgKGNvbnZlcnRfY2FsbF9leHByKTogQ2FsbCB3YWxrX2JvZHkgb24gT01QX0JPRFkgZm9yCglPcGVuTVAgZGlyZWN0aXZlcy4KCShzdHJ1Y3QgbmVzdGluZ19pbmZvKTogQWRkIGZpZWxkX21hcCwKCXN1cHByZXNzX2V4cGFuc2lvbiwgZGVidWdfdmFyX2NoYWluLgoJKGNyZWF0ZV9uZXN0aW5nX3RyZWUpOiBJbml0aWFsaXplIHRoZW0uCgkobG9va3VwX2ZpZWxkX2Zvcl9kZWNsKTogVXNlIGZpZWxkX21hcC4KCShnZXRfbm9ubG9jYWxfZGVidWdfZGVjbCwgZ2V0X2xvY2FsX2RlYnVnX2RlY2wpOiBOZXcuCgkoY29udmVydF9sb2NhbF9vbXBfY2xhdXNlcyk6IE5ldy4KCShmaW5hbGl6ZV9uZXN0aW5nX3RyZWVfMSk6IEFkZCBkZWJ1Z192YXJfY2hhaW4gdG8gdG9wbGV2ZWwgYmxvY2suCgkod2Fsa19ib2R5KTogU3BsaXQgb3V0IG9mIHdhbGtfZnVuY3Rpb24uCgkoY29udmVydF9ub25sb2NhbF9vbXBfY2xhdXNlcywgY29udmVydF9sb2NhbF9vbXBfY2xhdXNlcyk6IE5ldy4KCShjb252ZXJ0X25vbmxvY2FsX3JlZmVyZW5jZSk6IEhhbmRsZSBvbXAgc3RhdGVtZW50cy4KCShjb252ZXJ0X2xvY2FsX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKHVubmVzdF9uZXN0aW5nX3RyZWVfMSk6IFNwbGl0IG91dCBvZiBmaW5hbGl6ZV9uZXN0aW5nX3RyZWVfMS4KCSh1bm5lc3RfbmVzdGluZ190cmVlKTogTmV3LgoJKGxvd2VyX25lc3RlZF9mdW5jdGlvbnMpOiBDYWxsIGl0LgoJKGluc2VydF9maWVsZF9pbnRvX3N0cnVjdCk6IE1ha2UgZXh0ZXJuLgoJKHN0cnVjdCB3YWxrX3N0bXRfaW5mbyk6IE1vdmUgdG8gdHJlZS1naW1wbGUuaC4KCSh3YWxrX3N0bXRzKTogTWFrZSBleHRlcm4uCgkqIG9tcC1idWlsdGlucy5kZWY6IE5ldyBmaWxlLgoJKiB0cmVlLWl0ZXJhdG9yLmMgKGV4cHJfb25seSk6IENsYXJpZnkgY29tbWVudC4KCSogYy1jb21tb24uaCAocHVzaGRlY2xfdG9wX2xldmVsLCBwdXNoZGVjbCwKCWJ1aWxkX21vZGlmeV9leHByLCBidWlsZF9pbmRpcmVjdF9yZWYsCgljX2ZpbmlzaF9vbXBfbWFzdGVyLCBjX2ZpbmlzaF9vbXBfY3JpdGljYWwsCgljX2ZpbmlzaF9vbXBfb3JkZXJlZCwgY19maW5pc2hfb21wX2JhcnJpZXIsCgljX2ZpbmlzaF9vbXBfYXRvbWljLCBjX2ZpbmlzaF9vbXBfZmx1c2gsCgljX2ZpbmlzaF9vbXBfZm9yLCBjX3NwbGl0X3BhcmFsbGVsX2NsYXVzZXMsCglvbXBfY2xhdXNlX2RlZmF1bHRfa2luZCwgY19vbXBfc2hhcmluZ19wcmVkZXRlcm1pbmVkLAoJY19vbXBfcmVtYXBfZGVjbCk6IERlY2xhcmUuCgkqIE1ha2VmaWxlLmluIChCVUlMVElOU19ERUYpOiBBZGQgb21wLWJ1aWx0aW5zLmRlZi4KCShPQkpTLWNvbW1vbik6IEFkZCBvbXAtbG93Lm8uCgkoYy1vbXAubywgb21wLWxvdy5vKTogQWRkLgoJKGdpbXBsaWZ5Lm8pOiBBZGQgZGVwZW5kZW5jeSBvbiAkKE9QVEFCU19IKS4KCShHVEZJTEVTKTogQWRkIG9tcC1sb3cuYy4KCShndC1zdHJpbmdwb29sLmgpOiBBZGQuCgkqIHRyZWUtY2ZnLmMgKHNldF9iYl9mb3Jfc3RtdCk6IERvIG5vdCB1cGRhdGUgdGhlCglibG9jay10by1sYWJlbHMgbWFwIGlmIHdlIGFyZSBjdXJyZW50bHkgZXhwYW5kaW5nIHRvIFJUTC4KCSh0cmVlX25vZGVfY2FuX2JlX3NoYXJlZCk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBDT05TVEFOVF9DTEFTU19QCgljaGVja3MuCglIYW5kbGUgSURFTlRJRklFUl9OT0RFLgoJKHRyZWVfdmVyaWZ5X2Zsb3dfaW5mbyk6IERvIG5vdCBJQ0Ugd2hlbiBlbWl0dGluZyBlcnJvcgoJbWVzc2FnZXMgYWJvdXQgaW52YWxpZCBsYWJlbHMuCgkoZHVtcF9mdW5jdGlvbl90b19maWxlKTogUmVzZXQgQ0ZVTiBiZWZvcmUgZW1pdHRpbmcgdGhlIGJvZHkKCW9mIHRoZSBmdW5jdGlvbi4KCShkZWJ1Z19mdW5jdGlvbik6IE5ldy4KCSogcGFzc2VzLmMgKGluaXRfb3B0aW1pemF0aW9uX3Bhc3Nlcyk6IFNjaGVkdWxlCglwYXNzX2xvd2VyX29tcC4KCSogbGFuZ2hvb2tzLWRlZi5oIChsaGRfb21wX3ByZWRldGVybWluZWRfc2hhcmluZywKCWxoZF9vbXBfYXNzaWdubWVudCwgbGhkX29tcF9maXJzdHByaXZhdGl6ZV90eXBlX3NpemVzKToKCURlY2xhcmUuCgkoTEFOR19IT09LU19PTVBfRklSU1RQUklWQVRJWkVfVFlQRV9TSVpFUyk6IERlZmluZS4KCShMQU5HX0hPT0tTX0ZPUl9UWVBFU19JTklUSUFMSVpFUik6IFVzZSBpdC4KCShMQU5HX0hPT0tTX09NUF9QUklWQVRJWkVfQllfUkVGRVJFTkNFLAoJTEFOR19IT09LU19PTVBfUFJFREVURVJNSU5FRF9TSEFSSU5HLAoJTEFOR19IT09LU19PTVBfRElTUkVHQVJEX1ZBTFVFX0VYUFIsCglMQU5HX0hPT0tTX09NUF9QUklWQVRFX0RFQlVHX0NMQVVTRSwKCUxBTkdfSE9PS1NfT01QX0NMQVVTRV9ERUZBVUxUX0NUT1IsCglMQU5HX0hPT0tTX09NUF9DTEFVU0VfQ09QWV9DVE9SLAoJTEFOR19IT09LU19PTVBfQ0xBVVNFX0FTU0lHTl9PUCwKCUxBTkdfSE9PS1NfT01QX0NMQVVTRV9EVE9SKTogRGVmaW5lLgoJKExBTkdfSE9PS19ERUNMUyk6IFVzZSB0aGVtLgoKMjAwNi0wMS0xOCAgRG1pdHJ5IEt1cm9jaGtpbiA8ZG1pdHJ5Lmt1cm9jaGtpbkBnbWFpbC5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCSAgICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIGMtcGFyc2VyLmMgKHByYWdtYV9vbXBfY2xhdXNlKTogRGVmaW5lLgoJKGNfcGFyc2VyX2RlY2xhcmF0aW9uX29yX2ZuZGVmKTogRG9jdW1lbnQgT3Blbk1QIHN5bnRheC4KCShjX3BhcnNlcl9jb21wb3VuZF9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9wcmFnbWEpOiBIYW5kbGUgb21wIHByYWdtYXMuCgkoT01QX0ZPUl9DTEFVU0VfTUFTSywgT01QX1NFQ1RJT05TX0NMQVVTRV9NQVNLLAoJT01QX1BBUkFMTEVMX0NMQVVTRV9NQVNLLCBPTVBfU0lOR0xFX0NMQVVTRV9NQVNLKTogRGVmaW5lLgoJKGNfcGFyc2VyX29tcF9jbGF1c2VfbmFtZSwgY2hlY2tfbm9fZHVwbGljYXRlX2NsYXVzZSwKCWNfcGFyc2VyX29tcF92YXJpYWJsZV9saXN0LAoJY19wYXJzZXJfb21wX3Zhcl9saXN0X3BhcmVucywgY19wYXJzZXJfb21wX2NsYXVzZV9jb3B5aW4sCgljX3BhcnNlcl9vbXBfY2xhdXNlX2NvcHlwcml2YXRlLAoJY19wYXJzZXJfb21wX2NsYXVzZV9kZWZhdWx0LAoJY19wYXJzZXJfb21wX2NsYXVzZV9maXJzdHByaXZhdGUsIGNfcGFyc2VyX29tcF9jbGF1c2VfaWYsCgljX3BhcnNlcl9vbXBfY2xhdXNlX2xhc3Rwcml2YXRlLAoJY19wYXJzZXJfb21wX2NsYXVzZV9ub3dhaXQsCgljX3BhcnNlcl9vbXBfY2xhdXNlX251bV90aHJlYWRzLAoJY19wYXJzZXJfb21wX2NsYXVzZV9vcmRlcmVkLCBjX3BhcnNlcl9vbXBfY2xhdXNlX3ByaXZhdGUsCgljX3BhcnNlcl9vbXBfY2xhdXNlX3JlZHVjdGlvbiwKCWNfcGFyc2VyX29tcF9jbGF1c2Vfc2NoZWR1bGUsIGNfcGFyc2VyX29tcF9jbGF1c2Vfc2hhcmVkLAoJY19wYXJzZXJfb21wX2FsbF9jbGF1c2VzLCBjX3BhcnNlcl9vbXBfc3RydWN0dXJlZF9ibG9jaywKCWNfcGFyc2VyX29tcF9hdG9taWMsIGNfcGFyc2VyX29tcF9iYXJyaWVyLAoJY19wYXJzZXJfb21wX2NyaXRpY2FsLCBjX3BhcnNlcl9vbXBfZmx1c2gsCgljX3BhcnNlcl9vbXBfZm9yX2xvb3AsIGNfcGFyc2VyX29tcF9mb3IsCgljX3BhcnNlcl9vbXBfbWFzdGVyLCBjX3BhcnNlcl9vbXBfb3JkZXJlZCwKCWNfcGFyc2VyX29tcF9zZWN0aW9uc19zY29wZSwgY19wYXJzZXJfb21wX3NlY3Rpb25zLAoJY19wYXJzZXJfb21wX3BhcmFsbGVsLCBjX3BhcnNlcl9vbXBfc2luZ2xlLAoJY19wYXJzZXJfb21wX2NvbnN0cnVjdCwgY19wYXJzZXJfb21wX3RocmVhZHByaXZhdGUpOiBOZXcuCgkqIGMtcHJhZ21hLmMgKGluaXRfcHJhZ21hKTogRG8gb21wIHByYWdtYSByZWdpc3RyYXRpb24gaGVyZS4KCSogYy5vcHQgKGZvcGVubXApOiBOZXcgZmxhZy4KCjIwMDYtMDEtMTggIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBnY2MuYyAoR09NUF9TRUxGX1NQRUNTKTogQnJhY2tldCBpbiAjaWZuZGVmLyNlbmRpZi4KCSogY29uZmlnL2Rhcndpbi5oIChHT01QX1NFTEZfU1BFQ1MpOiBEZWZpbmUuCgoyMDA2LTAxLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgcmVnX2FsbG9jLgoKMjAwNi0wMS0xOCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiB0YXJnZXQvMjU3MzEKCSogY29uZmlnLmdjYyAoaHBwYSotKi1saW51eCosIGhwcGFbMTJdKi0qLWhwdXgxMCosIGhwcGEqNjQqLSotaHB1eDExKiwKCWhwcGFbMTJdKi0qLWhwdXgxMSopOiBPdmVycmlkZSBkZWZhdWx0IHNoYXJlZCBsaWJnY2MgdmVyc2lvbiBmb3IgYm90aAoJc2psaiBhbmQgZHdhcmYyIGV4Y2VwdGlvbiBoYW5kbGluZy4KCSogcGEvdC1ocHV4LXNobGliIChTSExJQl9TT1ZFUlNJT04pOiBOZXcgbWFrZSB2YXJpYWJsZS4KCVJld29yayB0byBhbGxvdyBvdmVycmlkaW5nIFNITElCX0VYVCBhbmQgU0hMSUJfU09WRVJTSU9OLgoJKiBwYS9wYS5jIChmdW5jdGlvbl92YWx1ZSk6IFRyZWF0IGNvbXBsZXggYW5kIHZlY3RvciB0eXBlcyBhcwoJYWdncmVnYXRlcy4KCShmdW5jdGlvbl9hcmcpOiBMaWtld2lzZS4gIE9ubHkgcGFzcyBzY2FsYXIgZmxvYXRzIGluIHRoZSBmbG9hdGluZwoJcG9pbnQgYXJndW1lbnQgcmVnaXN0ZXJzLgoJKiBwYS90LXNsaWJnY2MtZHdhcmYtdmVyOiBOZXcgZmlsZS4KCSogcGEvdC1zbGliZ2NjLXNqbGotdmVyOiBOZXcgZmlsZS4KCSogcGEvdC1zbGliZ2NjLWVsZi12ZXI6IERlbGV0ZSBmaWxlLgoKMjAwNi0wMS0xOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9hc3NlbWJsZV9pbnRlZ2VyKTogQ29ycmVjdAoJdW5saWtlbHlfdGVzdF9zZWN0aW9uX3AgdGVzdC4KCjIwMDYtMDEtMTggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogbW9kZS1zd2l0Y2hpbmcuYyAob3B0aW1pemVfbW9kZV9zd2l0Y2hpbmcpOiBNYWtlIGl0IHN0YXRpYy4KCSogYmFzaWMtYmxvY2suaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCglvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZy4KCgkqIG1vZHVsby1zY2hlZC5jIChzbXNfc2NoZWR1bGUpOiBNYWtlIGl0IHN0YXRpYy4KCSogcnRsLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBzbXNfc2NoZWR1bGUuCgoJKiBwb3N0cmVsb2FkLWdjc2UuYyAoZ2NzZV9hZnRlcl9yZWxvYWRfbWFpbik6IE1ha2UgaXQgc3RhdGljLgoJKiBydGwuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIGdjc2VfYWZ0ZXJfcmVsb2FkX21haW4uCgoJKiByZWctc3RhY2suYyAocmVnX3RvX3N0YWNrKTogTWFrZSBpdCBzdGF0aWMuCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgcmVnX3RvX3N0YWNrLgoKCSogcmVncmVuYW1lLmMgKHJlZ3JlbmFtZV9vcHRpbWl6ZSwgY29weXByb3BfaGFyZHJlZ19mb3J3YXJkKToKCU1ha2UgdGhlbSBzdGF0aWMuCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZXMgZm9yIHJlZ3JlbmFtZV9vcHRpbWl6ZSBhbmQKCWNvcHlwcm9wX2hhcmRyZWdfZm9yd2FyZC4KCjIwMDYtMDEtMTggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBjb25maWcvYWxwaGEvYWxwaGEuYyAoYWxwaGFfc3BsaXRfdGZtb2RlX3BhaXIpOiBSZW5hbWUgaW50bwoJYWxwaGFfc3BsaXRfdG1vZGVfcGFpci4gIEFkZCAnbW9kZScgYW5kICdmaXh1cF9vdmVybGFwJyBhcmd1bWVudHMuCglUZXN0IGFnYWluc3QgdGhlIGFwcHJvcHJpYXRlIG51bGwgY29uc3RhbnQgZm9yIHRoZSBtb2RlLgoJSWYgJ2ZpeHVwX292ZXJsYXAnIGlzIHRydWUsIHN3YXAgdGhlIG9wZXJhbmRzIGlmIHRoZXkgb3ZlcmxhcC4KCShhbHBoYV9zcGxpdF90Zm1vZGVfZnJvYnNpZ24pOiBBZGp1c3QgY2FsbCB0byBhbHBoYV9zcGxpdF90Zm1vZGVfcGFpci4KCSogY29uZmlnL2FscGhhL2FscGhhLXByb3Rvcy5oIChhbHBoYV9zcGxpdF90Zm1vZGVfcGFpcik6IFJlbmFtZSBpbnRvCglhbHBoYV9zcGxpdF90bW9kZV9wYWlyIGFuZCBhZGp1c3QgZm9yIGFib3ZlIGNoYW5nZS4KCSogY29uZmlnL2FscGhhL2FscGhhLm1kIChtb3Z0Zl9pbnRlcm5hbCk6IEFkanVzdCBjYWxsIHRvCglhbHBoYV9zcGxpdF90Zm1vZGVfcGFpciBhbmQgcmVseSBvbiBpdCB0byBzd2FwIHRoZSBvcGVyYW5kcy4KCShtb3Z0aV9pbnRlcm5hbCk6IE5ldyBpbnNuIGFuZCBwb3N0LXJlbG9hZCBzcGxpdHRlci4KCShtb3Z0aSk6IE5ldyBleHBhbmRlci4KCjIwMDYtMDEtMTggIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogY29uZmlnL202OGsvbTY4ay5tZCAoKmFkZHNpM181MjAwKTogQWxsb3cgYWRkcS9zdWJxIHRvIG1lbW9yeQoJb3BlcmFuZHMuCgoyMDA2LTAxLTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0bGFuYWwuYyAoZ2xvYmFsX3JlZ19tZW50aW9uZWRfcF8xLAoJZ2xvYmFsX3JlZ19tZW50aW9uZWRfcCk6IFJlbW92ZS4KCSogcnRsLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBnbG9iYWxfcmVnX21lbnRpb25lZF9wLgoKCSogZmxvdy5jIChpbml0aWFsaXplX3VuaW5pdGlhbGl6ZWRfc3VicmVncyk6IE1ha2UgaXQgc3RhdGljLgoJKiBydGwuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yCglpbml0aWFsaXplX3VuaW5pdGlhbGl6ZWRfc3VicmVncy4KCgkqIGZ1bmN0aW9uLmMgKGluc3RhbnRpYXRlX3ZpcnR1YWxfcmVncyk6IE1ha2UgaXQgc3RhdGljLgoJKiBmdW5jdGlvbi5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCWluc3RhbnRpYXRlX3ZpcnR1YWxfcmVncy4KCgkqIHJlZ21vdmUuYyAocmVnbW92ZV9vcHRpbWl6ZSwgY29tYmluZV9zdGFja19hZGp1c3RtZW50cyk6CglNYWtlIHRoZW0gc3RhdGljLgoJKiBydGwuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGVzIGZvciByZWdtb3ZlX29wdGltaXplIGFuZAoJY29tYmluZV9zdGFja19hZGp1c3RtZW50cy4KCjIwMDYtMDEtMTcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jIChDT1NUU19OX0JZVEVTKTogTmV3IG1hY3JvLgoJKHNpemVfY29zdCk6IEVuY29kZSBjb3N0cyBpbiBieXRlcyBzbyB0aGF0IGEgcmVnLXJlZyBhZGRpdGlvbiBpcwoJZXF1aXZhbGVudCB0byBDT1NUU19OX0lOU05TKDEpLgoJKG92ZXJyaWRlX29wdGlvbnMpOiBVc2UgdGhlIHNpemVfY29zdC5icmFuY2hfY29zdCBhcyB0aGUgZGVmYXVsdAoJaXg4Nl9icmFuY2hfY29zdCB3aGVuIG9wdGltaXppbmcgZm9yIHNpemUuCgoyMDA2LTAxLTE4ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIE1ha2VmaWxlLmluIChEMzJQQklUX0ZVTkNTKTogTmV3LgoJKEQ2NFBCSVRfRlVOQ1MsIEQxMjhQQklUX0ZVTkNTKTogTGlrZXdpc2UuCgkobGliZ2NjLm1rKTogU2V0IEQzMlBCSVQsIEQ2NFBCSVQsIEQxMjhQQklULCBEMzJQQklUX0ZVTkNTLAoJRDY0UEJJVF9GVU5DUyBhbmQgRDEyOFBCSVRfRlVOQ1MuCgkoTElCR0NDX0RFUFMpOiBJbmNsdWRlICQoRDMyUEJJVCksICQoRDY0UEJJVCksICQoRDEyOFBCSVQpLgoJKiBta2xpYmdjYy5pbiBCcmluZyBpbiB0aGUgREZQIHN1cHBvcnQgY29kZSBpZiBEMzJQQklULCBENjRQQklUIG9yCglEMTI4UEJJVCBhcmUgc2V0LgoJKGRlY251bWJlcl9kZXApOiBEZWZpbmUuCgkqIGRvYy9saWJnY2MudGV4aSAoRGVjaW1hbCBmbG9hdCBsaWJyYXJ5IHJvdXRpbmVzKTogTmV3IG5vZGUuCgkqIGNvbmZpZy9kZnAtYml0LmgsIGNvbmZpZy9kZnAtYml0LmM6IE5ldyBmaWxlcy4KCjIwMDYtMDEtMTggIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogZXhwci5jIChlbWl0X21vdmVfY2hhbmdlX21vZGUpOiBBbHdheXMgYWRqdXN0IGFkZHJlc3Nlcywgbm90CglqdXN0IGR1cmluZyByZWxvYWQuICBDb3B5IHJlcGxhY2VtZW50cyBvbmx5IGR1cmluZyByZWxvYWQuCgkoZW1pdF9tb3ZlX2luc25fMSk6IE1vdmUgTU9ERV9ERUNJTUFMX0ZMT0FUIG1vZGVzIGJ5IGludm9raW5nCgllbWl0X21vdmVfdmlhX2ludGVnZXIuCgoyMDA2LTAxLTE3ICBTaGFudG9udSBTZW4gIDxzc2VuQG9wZW5kYXJ3aW4ub3JnPgoKCSogTWFrZWZpbGUuaW4gKGNoZWNrLSUsIGNoZWNrLWNvbnNpc3RlbmN5KTogVXNlICQke3NyY2Rpcn0KCWluc3RlYWQgb2YgJChzcmNkaXIpIGFuZCAke3NyY2Rpcn0uCgoyMDA2LTAxLTE3ICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCglQUiB0YXJnZXQvNTkyCglQUiBtaWRkbGUtZW5kLzExMTM1CgkqIGFybS5oIChzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbik6IEFkZCBwaWNfcmVnLgoJKiBhcm0uYyAoYXJtX3BpY19yZWdpc3Rlcik6IE1ha2UgdW5zaWduZWQuCgkoYXJtX292ZXJyaWRlX29wdGlvbnMpOiBPbmx5IHNldCBhcm1fcGljX3JlZ2lzdGVyIGlmCglUQVJHRVRfU0lOR0xFX1BJQ19CQVNFLgoJKHVzZV9yZXR1cm5faW5zbik6IE9ubHkgdGVzdCBmb3IgYSBwaWMgcmVnaXN0ZXIgaWYgaXQgaXMgZml4ZWQuCgkoYXJtX2NvbXB1dGVfc2F2ZV9yZWcwX3JlZzEyX21hc2spOiBMaWtld2lzZS4KCSh0aHVtYl9jb21wdXRlX3NhdmVfcmVnX21hc2spOiBMaWtld2lzZS4KCShsZWdpdGltYXRlX3BpY19vcGVyYW5kKTogRmFjdG9yIG91dCBzb21lIGtub3duIGludmFyaWFudHMuCgkobGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IElmIHdlIGRvbid0IGhhdmUgYSBmaXhlZCBwaWMgcmVnaXN0ZXIsCgl0aGVuIHNldCB1cCBhIHBzZXVkbyBpbiB0aGUgZnVuY3Rpb24gZW50cnkgc2VxdWVuY2UuICBIYW5kbGUgdGhlCglwaWMgYmFzZSBiZWluZyBpbiBhIHBzZXVkby4KCShhcm1fbG9hZF9waWNfcmVnaXN0ZXIpOiBIYW5kbGUgdGhlIHBpYyByZWdpc3RlciBiZWluZyBpbiBhIHBzZXVkby4KCShhcm1fZXhwYW5kX3Byb2xvZ3VlKTogT25seSBzZXQgdXAgdGhlIHBpYyByZWdpc3RlciBpZiBpdCBpcyBmaXhlZC4KCSh0aHVtYl9leHBhbmRfcHJvbG9ndWUpOiBMaWtld2lzZS4KCSogYXJtLm1kIChwaWNfbG9hZF9hZGRyX2Jhc2VkKTogSGFuZGxlIHRoZSBwaWMgYmFzZSBiZWluZyBhIHBzZXVkby4KCShwaWNfbG9hZF9hZGRyX2Jhc2VkX2luc24pOiBMaWtld2lzZS4KCShidWlsdGluX3NldGptcF9yZWNlaXZlcik6IERvbid0IHJlc3RvcmUgdGhlIHBpYyBiYXNlIGlmIGl0IGlzbid0CglmaXhlZC4KCjIwMDYtMDEtMTggIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2hhcmRfcmVnbm9fbW9kZV9vayk6IFJlamVjdAoJZGVjaW1hbCBmbG9hdCBtb2RlcyBmb3IgYWxsIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycy4KCgkqIGNvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZCAocmVnX29yX21lbV9vcGVyYW5kKTogUGFpciB1cAoJbWF0Y2hfY29kZSAibWVtIiB3aXRoIG1hdGNoX3Rlc3QgIm1hY2hvX2xvX3N1bV9tZW1vcnlfb3BlcmFuZCIuCgoyMDA2LTAxLTE3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjLzI1NjgyCgkqIGMtdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogRm9sZCBvZmZzZXRvZi1saWtlIGV4cHJlc3Npb25zCglldmVuIHdoZW4gdGhlIHBvaW50ZXIgaXMgbm90IE5VTEwuCgoyMDA2LTAxLTE2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGFpcnMuY29tPgoKCSogY29tbW9uLm9wdCAoZnRvcGxldmVsLXJlb3JkZXIpOiBOZXcgb3B0aW9uLgoJKiBjZ3JhcGguYyAoY2dyYXBoX2FzbV9ub2Rlcyk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkoY2dyYXBoX2FzbV9sYXN0X25vZGUpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGNncmFwaF9vcmRlcik6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkoY2dyYXBoX2NyZWF0ZV9ub2RlKTogU2V0IG5ldyBvcmRlciBmaWVsZC4KCShjZ3JhcGhfdmFycG9vbF9ub2RlKTogTGlrZXdpc2UuCgkoZGVjaWRlX2lzX3ZhcmlhYmxlX25lZWRlZCk6IFJldHVybiB0cnVlIGlmIG5vdAoJZmxhZ190b3BsZXZlbF9yZW9yZGVyLgoJKGNncmFwaF9hZGRfYXNtX25vZGUpOiBOZXcgZnVuY3Rpb24uCgkqIGNncmFwaC5oIChzdHJ1Y3QgY2dyYXBoX25vZGUpOiBBZGQgb3JkZXIgZmllbGQuCgkoc3RydWN0IGNncmFwaF92YXJwb29sX25vZGUpOiBBZGQgb3JkZXIgZmllbGQuCgkoc3RydWN0IGNncmFwaF9hc21fbm9kZSk6IERlZmluZS4KCShjZ3JhcGhfYXNtX25vZGVzLCBjZ3JhcGhfb3JkZXIpOiBEZWNsYXJlLgoJKGNncmFwaF9hZGRfYXNtX25vZGUpOiBEZWNsYXJlLgoJKiBjZ3JhcGh1bml0LmMgKGNncmFwaF92YXJwb29sX2Fzc2VtYmxlX2RlY2wpOiBOZXcgc3RhdGljCglmdW5jdGlvbi4KCShjZ3JhcGhfdmFycG9vbF9hc3NlbWJsZV9wZW5kaW5nX2RlY2xzKTogQ2FsbCBpdC4KCShjZ3JhcGhfb3V0cHV0X3BlbmRpbmdfYXNtcyk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQpOiBDYWxsIGl0LgoJKHN0cnVjdCBjZ3JhcGhfb3JkZXJfc29ydCk6IERlZmluZS4KCShjZ3JhcGhfb3V0cHV0X2luX29yZGVyKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShjZ3JhcGhfb3B0aW1pemUpOiBDYWxsIGNncmFwaF9vdXRwdXRfcGVuZGluZ19hc21zLiAgQWRkIGNvZGUgZm9yCgkhZmxhZ190b3BsZXZlbF9yZW9yZGVyIGNhc2UuCgkqIGMtcGFyc2VyLmM6IEluY2x1ZGUgImNncmFwaC5oIi4KCShjX3BhcnNlcl9hc21fZGVmaW5pdGlvbik6IENhbGwgY2dyYXBoX2FkZF9hc21fbm9kZSByYXRoZXIgdGhhbgoJYXNzZW1ibGVfYXNtLgoJKiBNYWtlZmlsZS5pbiAoQ1JUU1RVRkZfQ0ZMQUdTKTogVXNlIC1mbm8tdG9wbGV2ZWwtcmVvcmRlciByYXRoZXIKCXRoYW4gLWZuby11bml0LWF0LWEtdGltZS4KCSogZG9jL2ludm9rZS50ZXhpIChPcHRpb24gU3VtbWFyeSk6IE1lbnRpb24KCS1mbm8tdG9wbGV2ZWwtcmVvcmRlci4KCShPcHRpbWl6ZSBPcHRpb25zKTogRG9jdW1lbnQgLWZuby10b3BsZXZlbC1yZW9yZGVyLiAgTWVudGlvbiBpdCBpbgoJLWZ1bml0LWF0LWEtdGltZSBkb2N1bWVudGF0aW9uLgoKMjAwNi0wMS0xNyAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgkgICAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoRlVOQ1RJT05fSCwgTEFNQkRBX0gpOiBVc2UgJChUUkVFX0gpLCBub3QgdHJlZS5oLgoKMjAwNi0wMS0xNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoRlVOQ1RJT05fSCk6IE5ldy4gIFVzZSBpdCBpbnN0ZWFkIG9mCglmdW5jdGlvbi5oIHRocm91Z2hvdXQgdGhlIGZpbGUuCgkqIGZ1bmN0aW9uLmg6IEluY2x1ZGUgdHJlZS5oLgoKMjAwNi0wMS0xNyAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiByZWNvZy5jOiBTZXBhcmF0ZSBzb21lIGZ1bmN0aW9ucyB3aXRoIHdoaXRlc3BhY2UuCgoyMDA2LTAxLTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCU1lcmdlIGZyb20gZ29tcCBicmFuY2g6CgkqIE1ha2VmaWxlLmluIChUUkVFX0lOTElORV9IKTogTmV3LiAgVXNlIGl0IGFzIG5lZWRlZC4KCSogdHJlZS1pbmxpbmUuaCAoc3RydWN0IGNvcHlfYm9keV9kYXRhKTogTW92ZSBmcm9tIHRyZWUtaW5saW5lLmMKCWFuZCByZW5hbWUgZnJvbSBzdHJ1Y3QgaW5saW5lX2RhdGEuICBSZW5hbWUgY2FsbGVlKiB0byBkc3QqOwoJY2FsbGVyKiB0byBzcmMqOyBhZGQgY29weV9kZWNsIGhvb2ssIHRyYW5zZm9ybV9jYWxsX2dyYXBoX2VkZ2VzLAoJdHJhbnNmb3JtX25ld19jZmcsIHRyYW5zZm9ybV9yZXR1cm5fdG9fbW9kaWZ5LCBhbmQKCXRyYW5zZm9ybV9sYW5nX2luc2VydF9ibG9jayBmbGFnczsgcmVtb3ZlIGNsb25pbmdfcCwgdmVyc2lvbmluZ19wLAoJdXBkYXRlX2Nsb25lc19wLgoJKGNvcHlfYm9keV9yLCBpbnNlcnRfZGVjbF9tYXAsIHJlbWFwX2RlY2wsIHJlbWFwX3R5cGUpOiBEZWNsYXJlLgoJKGNvcHlfZGVjbF9mb3JfZHVwKTogUmVtb3ZlLgoJKiB0cmVlLWlubGluZS5jIChzdHJ1Y3QgaW5saW5lX2RhdGEpOiBNb3ZlIHRvIGhlYWRlci4KCShpbnNlcnRfZGVjbF9tYXApOiBFeHBvcnQuCgkocmVtYXBfZGVjbCk6IFVwZGF0ZSBmb3IgbWVtYmVyIG5hbWUgY2hhbmdlcy4gIFVzZSBjb3B5X2RlY2wgaG9vay4KCUFsbG93IGZvciByZXBsYWNlbWVudCB0byBiZSBhIG5vbi1kZWNsLiAgUmVtb3ZlIGRlYWQgY29kZS4KCShyZW1hcF90eXBlXzEpOiBDaGVjayBmb3IgZXhpc3RpbmcgbWFwcGluZy4KCShyZW1hcF90eXBlKTogRXhwb3J0LgoJKHJlbWFwX2RlY2xzKTogVXBkYXRlIGZvciBtZW1iZXIgbmFtZSBjaGFuZ2VzLgoJKHJlbWFwX2Jsb2NrLCBjb3B5X2JiLCBjb3B5X2NmZ19ib2R5LCBjb3B5X2dlbmVyaWNfYm9keSk6IExpa2V3aXNlLgoJKGNvcHlfYm9keSwgc2V0dXBfb25lX3BhcmFtZXRlciwgZGVjbGFyZV9yZXR1cm5fdmFyaWFibGUpOiBMaWtld2lzZS4KCShleHBhbmRfY2FsbF9pbmxpbmUsIG9wdGltaXplX2lubGluZV9jYWxscywgY2xvbmVfYm9keSk6IExpa2V3aXNlLgoJKGNvcHlfdHJlZV9yLCBtYXJrX2xvY2FsX2Zvcl9yZW1hcF9yLCB1bnNhdmVfZXhwcl9ub3cpOiBMaWtld2lzZS4KCSh0cmVlX2Z1bmN0aW9uX3ZlcnNpb25pbmcsIGJ1aWxkX2R1cGxpY2F0ZV90eXBlKTogTGlrZXdpc2UuCgkoY29weV9ib2R5X3IpOiBMaWtld2lzZS4gIEV4cG9ydC4KCShjb3B5X2RlY2xfZm9yX2R1cCk6IFNwbGl0IGludG8gLi4uCgkoY29weV9kZWNsX2Zvcl9kdXBfZmluaXNoLCBjb3B5X2RlY2xfdG9fdmFyLAoJY29weV9kZWNsX25vX2NoYW5nZSwgY29weV9kZWNsX21heWJlX3RvX3Zhcik6IC4uLiB0aGVzZS4KCShyZXBsYWNlX3JlZl90cmVlLCBpbmxpbmluZ19wKTogUmVtb3ZlLgoKMjAwNi0wMS0xNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpZmN2dC5jIChpZl9jb252ZXJ0KTogTWFrZSBpdCBzdGF0aWMuCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgaWZfY29udmVydC4KCgkqIGxvY2FsLWFsbG9jLmMgKGxvY2FsX2FsbG9jKTogTWFrZSBpdCBzdGF0aWMuCgkqIHJ0bC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgbG9jYWxfYWxsb2MuCgoJKiBsb29wLmMgKGxvb3Bfb3B0aW1pemUpOiBNYWtlIGl0IHN0YXRpYy4KCSogY2ZnbG9vcC5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IgbG9vcF9vcHRpbWl6ZS4KCSogcnRsLmg6IExpa2V3aXNlLgoKMjAwNi0wMS0xNiAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiByZWxvYWQuYyAocmVnX292ZXJsYXBfbWVudGlvbmVkX2Zvcl9yZWxvYWRfcCk6IEhhbmRsZSBzdWJyZWdzIG9mCgltZW1zLgoKMjAwNi0wMS0xNiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHBhLm1kOiBEaXNwYXJhZ2UgY29waWVzIGJldHdlZW4gZ2VuZXJhbCBhbmQgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzCglpbiAzMi1iaXQgbW92ZSBwYXR0ZXJucy4KCjIwMDYtMDEtMTYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCglQUiB0ZXN0c3VpdGUvMjU3NDEKCSogTWFrZWZpbGUuaW4gKGNoZWNrLSUpOiBEZXBlbmQgb24gc2l0ZS5leHAgaW5zdGVhZCBvZgoJJChURVNUU1VJVEVESVIpL3NpdGUuZXhwLiBSdW4gInJ1bnRlc3QiIGluIHNlcGFyYXRlIGxhbmd1YWdlCglkaXJlY3Rvcmllcy4KCjIwMDYtMDEtMTYgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZ2xvYmFsLmMgKGdsb2JhbF9hbGxvYyk6IE1ha2UgaXQgc3RhdGljLgoJKiBydGwuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIGdsb2JhbF9hbGxvYy4KCjIwMDYtMDEtMTYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtc3NhLWFsaWFzLmMgKHN0cnVjdCB1c2VkX3BhcnQpOiBBZGQgd3JpdGVfb25seSBmaWVsZC4KCShnZXRfb3JfY3JlYXRlX3VzZWRfcGFydF9mb3IpOiBJbml0aWFsaXplIGl0IHRvIHRydWUuCgkoY3JlYXRlX292ZXJsYXBfdmFyaWFibGVzX2Zvcik6IERvbid0IGNyZWF0ZSBzdHJ1Y3R1cmUgdmFyaWFibGVzCglmb3Igc3RydWN0dXJlcyB0aGF0IG9ubHkgYXJlIHdyaXR0ZW4gdG8uCgkoZmluZF91c2VkX3BvcnRpb25zKTogSGFuZGxlIE1PRElGWV9FWFBSIHRvIHRyYWNrIHdoZXRoZXIgYQoJc3RydWN0dXJlIGlzIG9ubHkgd3JpdHRlbiB0by4KCjIwMDYtMDEtMTYgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogYmItcmVvcmRlci5jIChwYXJ0aXRpb25faG90X2NvbGRfYmFzaWNfYmxvY2tzKTogTWFrZSBpdAoJc3RhdGljLgoJKiBiYXNpYy1ibG9jay5oOiBSZW1vdmUgdGhlIHByb3RvdHlwZSBmb3IKCXBhcnRpdGlvbl9ob3RfY29sZF9iYXNpY19ibG9ja3MuCgoyMDA2LTAxLTE2ICBSYWZhZWwgw3ZpbGEgZGUgRXNww++/va1uZG9sYSA8cmFmYWVsLmVzcGluZG9sYUBnbWFpbC5jb20+CgoJKiBjcHBzcGVjLmMgKGxhbmdfc3BlY2lmaWNfc3BlY19mdW5jdGlvbnMpOiBSZW1vdmUuCgkqIGdjYy5jIChsb29rdXBfc3BlY19mdW5jdGlvbik6IFVzZSBzdGF0aWNfc3BlY19mdW5jdGlvbnMgZGlyZWN0bHkuCgkqIGdjYy5oIChsYW5nX3NwZWNpZmljX3NwZWNfZnVuY3Rpb25zKTogUmVtb3ZlLgoJKiBnY2NzcGVjLmMgKGxhbmdfc3BlY2lmaWNfc3BlY19mdW5jdGlvbnMpOiBSZW1vdmUuCgoyMDA2LTAxLTE2ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY29tYmluZS5jIChyZWNvcmRfdmFsdWVfZm9yX3JlZyk6IEludmFsaWRhdGUgcmVnaXN0ZXJzCglpZiBJTlNOIGlzIG51bGwuCgkocmVjb3JkX2RlYWRfYW5kX3NldF9yZWdzXzEpOiBMaWtld2lzZSwgYnkgcGFzc2luZyB0aGVtIHRvCglyZWNvcmRfdmFsdWVfZm9yX3JlZy4KCShyZWNvcmRfZGVhZF9hbmRfc2V0X3JlZ3MpOiBJbnZhbGlkYXRlIHN0b3JlcyBtYWRlIGJ5IGEKCWNhbGwuICBXZSBkbyBub3QgY29tYmluZSBhY3Jvc3MgYSBjYWxsLCBidXQgd2Ugc3RpbGwKCXJlbGllZCBvbiBlcXVpdmFsZW5jZXMuCgoyMDA2LTAxLTE2ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdHJlZS12cnAuYyAoZXh0cmFjdF9yYW5nZV9mcm9tX2JpbmFyeV9leHByKTogQ29wZSB3aXRoCgl2cnBfaW50X2NvbnN0X2Jpbm9wIHJldHVybmluZyBub24tY29uc3RhbnQgbm9kZXMuCgoyMDA2LTAxLTE2ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChvdXRwdXRfbW92ZV9jb25zdF9pbnRvX2RhdGFfcmVnKToKCU91dHB1dCBjb3JyZWN0IG1uZW1vbmljIGZvciBtdnogYW5kIG12cy4KCjIwMDYtMDEtMTYgIEdhYm9yIExva2kgIDxsb2tpQGdjYy5nbnUub3JnPgoKCSogcnRsLWZhY3RvcmluZy5jOiBBZGQgc2VxdWVuY2UgYWJzdHJhY3Rpb24gYWxnb3JpdGhtLgoJKiBjZmdjbGVhbnVwLmMgKG91dGdvaW5nX2VkZ2VzX21hdGNoKTogRXh0cmEgY2hlY2tzLgoJKHRyeV9jcm9zc2p1bXBfdG9fZWRnZSk6IEF2b2lkIGRlbGV0aW5nIHByZXNlcnZlIGxhYmVsIHdoZW4gcmVkaXJlY3RpbmcKCUFCTk9STUFMIGVkZ2VzLgoJKGJsb2NrX2hhc19wcmVzZXJ2ZV9sYWJlbCk6IE5ldyBmdW5jdGlvbi4KCSogY29tbW9uLm9wdDogUmVnaXN0ZXIgbmV3IHBhc3MuCgkqIE1ha2VmaWxlLmluOiBEaXR0by4KCSogcGFzc2VzLmM6IERpdHRvLgoJKiB0aW1ldmFyLmRlZjogRGl0dG8uCgkqIHRyZWUtcGFzcy5oOiBEaXR0by4KCSogZW1pdC1ydGwuYyAobWFrZV9qdW1wX2luc25fcmF3KTogUmVtb3ZlIGZvcndhcmQgZGVjbC4KCSogcnRsLmggKG1ha2VfanVtcF9pbnNuX3Jhdyk6IEFkZCBmb3J3YXJkIGRlY2wuCgkqIGRvYy9pbnZva2UudGV4aTogQWRkIGRvY3VtZW50YXRpb24gZm9yIC1mcnRsLWFic3RyYWN0LXNlcXVlbmNlcy4KCjIwMDYtMDEtMTYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgkgICAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBmb2xkLWNvbnN0LmMgKGZvbGRfbWlubWF4KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShmb2xkX2JpbmFyeSkgPE1JTl9FWFBSPjogQ2FsbCBpdC4KCTxNQVhfRVhQUj46IExpa2V3aXNlLgoJKiBzdG9yLWxheW91dC5jIChwbGFjZV9maWVsZCk6IFVzZSBERUNMX1NJWkUgY29uc2lzdGVudGx5CglpbiB0aGUgY29tcHV0YXRpb24gb2YgdGhlIG5ldyByZWNvcmQgc2l6ZS4KCjIwMDYtMDEtMTYgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogY3NlLmMgKGNzZV9jb25kaXRpb25fY29kZV9yZWcpOiBNYWtlIGl0IHN0YXRpYy4KCSogcnRsLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBjc2VfY29uZGl0aW9uX2NvZGVfcmVnLgoKCSogY29tYmluZS5jIChjb21iaW5lX2luc3RydWN0aW9ucyk6IE1ha2UgaXQgc3RhdGljLgoJKiBydGwuaDogUmVtb3ZlIHRoZSBwcm90b3R5cGUgZm9yIGNvbWJpbmVfaW5zdHJ1Y3Rpb25zLgoKMjAwNi0wMS0xNSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiB0YXJnZXQvMjUxNjgKCSogdHJlZS5jIChnZXRfZmlsZV9mdW5jdGlvbl9uYW1lX2xvbmcpOiBDb25jYXRlbmF0ZSB0aGUgZmlyc3QgZ2xvYmFsCglvYmplY3QgbmFtZSB3aXRoIGEgc3RyaW5nIGRlcml2ZWQgZnJvbSB0aGUgaW5wdXQgZmlsZW5hbWUgb2YgdGhlIG9iamVjdAoJZm9yIHR5cGUgIkYiLgoKMjAwNi0wMS0xNiAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBjb25maWcvaTM4Ni93aW5udC1zdHVicy5jOiBVcGRhdGUgRlNGIGFkZHJlc3MuCgkqIGNvbmZpZy94dGVuc2EvaWVlZTc1NC1kZi5TOiBEaXR0by4KCSogY29uZmlnL3h0ZW5zYS9pZWVlNzU0LXNmLlM6IERpdHRvLgoKMjAwNi0wMS0xNCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBhaXJzLmNvbT4KCgkqIGlmY3Z0LmMgKG5vY2VfaW5pdF9pZl9pbmZvKTogTmV3IHN0YXRpYyBmdW5jdGlvbiwgYnJva2VuIG91dCBvZgoJbm9jZV9wcm9jZXNzX2lmX2Jsb2NrLgoJKG5vY2VfcHJvY2Vzc19pZl9ibG9jayk6IENhbGwgbm9jZV9pbml0X2lmX2luZm8uCgkoY2hlY2tfY29uZF9tb3ZlX2Jsb2NrKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShjb25kX21vdmVfcHJvY2Vzc19pZl9ibG9jayk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkocHJvY2Vzc19pZl9ibG9jayk6IENhbGwgY29uZF9tb3ZlX3Byb2Nlc3NfaWZfYmxvY2suCgoyMDA2LTAxLTE1ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNzZWxpYi5jIChoYXNoX3RhYmxlKTogUmVuYW1lIHRvIGNzZWxpYl9oYXNoX3RhYmxlLgoJKGNzZWxpYl9jbGVhcl90YWJsZSwgZGlzY2FyZF91c2VsZXNzX3ZhbHVlcywKCXJlbW92ZV91c2VsZXNzX3ZhbHVlcywgY3NlbGliX2xvb2t1cF9tZW0sIGNzZWxpYl9sb29rdXAsCgljc2VsaWJfaW5pdCwgY3NlbGliX2ZpbmlzaCk6IEFkanVzdCB1c2VzIG9mIGhhc2hfdGFibGUuCgoyMDA2LTAxLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNTQ4NQoJKiB0cmVlLXZycC5jIChleHRyYWN0X3JhbmdlX2Zyb21fYmluYXJ5X2V4cHIpOiBIYW5kbGUgY2FzZXMKCXdoZXJlIG9uZSBvZiB0aGUgb3BlcmFuZHMgb2YgVFJVVEhfQU5EX0VYUFIgYW5kIFRSVVRIX09SX0VYUFIKCWlzIGtub3duIHRvIGJlIGZhbHNlIGFuZCB0cnVlLCByZXNwZWN0aXZlbHkuCgoyMDA2LTAxLTE0ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjI1NDgKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzIyNTU1CglQUiB0cmVlLW9wdGltaXphdGlvbi8yMjUwMQoJKiBNYWtlZmlsZS5pbiAodHJlZS1zc2Etc3RydWN0YWxpYXMubyk6IERlcGVuZCBvbiAkKFBBUkFNU19IKS4KCSogcGFyYW1zLmRlZiAoc2FsaWFzLW1heC1hcnJheS1lbGVtZW50cyk6IE5ldyBwYXJhbWV0ZXIuCgkqIHBhcmFtcy5oIChTQUxJQVNfTUFYX0FSUkFZX0VMRU1FTlRTKTogRGVmaW5lLgoJKiBkb2MvaW52b2tlLnRleGkgKHNhbGlhcy1tYXgtYXJyYXktZWxlbWVudHMpOiBEb2N1bWVudC4KCSogdHJlZS1mbG93LWlubGluZS5oICh2YXJfY2FuX2hhdmVfc3VidmFycyk6IFdlIGFsc28gaGFuZGxlCglhcnJheXMgbm93LgoJKiB0cmVlLXNzYS1hbGlhcy5jIChmaW5kX3VzZWRfcG9ydGlvbnMpOiBIYW5kbGUgQVJSQVlfUkVGIGxpa2UKCUNPTVBPTkVOVF9SRUYuCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKHBhcmFtcy5oKTogSW5jbHVkZS4KCShwdXNoX2ZpZWxkc19vbnRvX2ZpZWxkc3RhY2spOiBIYW5kbGUgQVJSQVlfVFlQRS4KCShmaW5kX2Z1bmNfYWxpYXNlcyk6IEhhbmRsZSBtdWx0aXBsZSBjb25zdHJhaW50cyBmcm9tIEFSUkFZX1JFRi4KCShnZXRfY29uc3RyYWludF9mb3IpOiBGb3IgQUREUl9FWFBSIG9wZXJhdGluZyBvbiBzb21ldGhpbmcKCWNvbnRhaW5pbmcgYW4gQVJSQVlfUkVGLCBhZGQgYWxsIHN1YnZhcnMgdG8gdGhlIHNvbHV0aW9uLgoJKGhhbmRsZV9wdHJfYXJpdGgpOiBIYW5kbGUgQVJSQVlfVFlQRSBsaWtlIFJFQ09SRF9UWVBFIHR5cGVzLgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChwYXJzZV9zc2Ffb3BlcmFuZHMpOiBIYW5kbGUgQVJSQVlfUkVGCglmb3IgY3JlYXRpbmcgTVVTVF9ERUZzLgoJKGdldF9leHByX29wZXJhbmRzKTogVHJlYXQgQVJSQVlfUkVGIGxpa2UgQ09NUE9ORU5UX1JFRiB3cnQgc3VidmFycy4KCjIwMDYtMDEtMTQgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCgkqIHRyZWUtc3NhLWxvb3Atbml0ZXIuYyAobnVtYmVyX29mX2l0ZXJhdGlvbnNfY29uZCk6IFNwbGl0IGludG8gc2V2ZXJhbAoJZnVuY3Rpb25zLgoJKG51bWJlcl9vZl9pdGVyYXRpb25zX25lLCBudW1iZXJfb2ZfaXRlcmF0aW9uc19sdF90b19uZSwKCWFzc2VydF9ub19vdmVyZmxvd19sdCwgYXNzZXJ0X2xvb3Bfcm9sbHNfbHQsIG51bWJlcl9vZl9pdGVyYXRpb25zX2x0LAoJbnVtYmVyX29mX2l0ZXJhdGlvbnNfbGUpOiBOZXcgZnVuY3Rpb25zLgoJKG51bWJlcl9vZl9pdGVyYXRpb25zX3NwZWNpYWwpOiBSZW1vdmVkLgoJKG51bWJlcl9vZl9pdGVyYXRpb25zX2V4aXQpOiBEbyBub3QgdXNlIG51bWJlcl9vZl9pdGVyYXRpb25zX3NwZWNpYWwuCgkqIHRyZWUuYyAodW5zaWduZWRfdHlwZV9mb3IpOiBBbHdheXMgcmV0dXJuIGludGVnZXIgdHlwZS4KCjIwMDYtMDEtMTQgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmIuZ2NjQGdtYWlsLmNvbT4KCVJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI0MjU3CgkqIGdjc2UuYyAoZmluZF9tb3ZlYWJsZV9zdG9yZSk6IE9ubHkgY29uc2lkZXIgYSBzdG9yZSBtb3ZhYmxlCgl3aGVuIHRoZSBTRVRfU1JDIG9mIHRoZSBpbnNuIGNhbiBiZSBhc3NpZ25lZCB0byBhIHJlZ2lzdGVyLgoKMjAwNi0wMS0xNCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBhaXJzLmNvbT4KCgkqIHRyZWUuYyAodHJlZV9ub3RfY2xhc3NfY2hlY2tfZmFpbGVkKTogTmV3IGZ1bmN0aW9uLgoJKiB0cmVlLmggKE5PTl9UWVBFX0NIRUNLKTogQ2FsbCB0cmVlX25vdF9jbGFzc19jaGVja19mYWlsZWQuCgkodHJlZV9ub3RfY2xhc3NfY2hlY2tfZmFpbGVkKTogRGVjbGFyZS4KCjIwMDYtMDEtMTMgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJKiByZWxvYWQxLmMgKGRvX291dHB1dF9yZWxvYWQpOiBBZGQgYXNzZXJ0aW9uIHJlamVjdGluZyBhCglDQUxMX0lOU04uCgoyMDA2LTAxLTEzICBBZGFtIE5lbWV0ICA8YW5lbWV0QGNhdml1bW5ldHdvcmtzLmNvbT4KCgkqIGNvbWJpbmUuYyAoc3RydWN0IHJlZ19zdGF0KTogQWRkIG5ldyBmaWVsZHMgdHJ1bmNhdGlvbl9sYWJlbCBhbmQKCXRydW5jYXRlZF90b19tb2RlLgoJKHJlY29yZF92YWx1ZV9mb3JfcmVnKTogUmVzZXQgdHJ1bmNhdGVkX3RvX21vZGUuCgkocmVjb3JkX3RydW5jYXRlZF92YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19wcm9tb3RlZF9zdWJyZWcpOiBDYWxsIGl0LiAgUmVuYW1lIHRvIGNoZWNrX2NvbnZlcnNpb25zLgoJKGNvbWJpbmVfaW5zdHJ1Y3Rpb25zKTogUmVuYW1lIGNoZWNrX3Byb21vdGVkX3N1YnJlZyB0bwoJY2hlY2tfY29udmVyc2lvbnMuCgkocmVnX3RydW5jYXRlZF90b19tb2RlKTogTmV3IGZ1bmN0aW9uLgoJKG1ha2VfZXh0cmFjdGlvbik6IFVzZSBpdC4gIENoZWNrIFRSVUxZX05PT1BfVFJVTkNBVElPTi4KCShnZW5fbG93cGFydF9vcl90cnVuY2F0ZSk6IE5ldyBmdW5jdGlvbi4KCShmb3JjZV90b19tb2RlKTogVXNlIGl0IGluc3RlYWQgb2YgZ2VuX2xvd3BhcnQuCgoyMDA2LTAxLTEzICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGFkZF90eXBlX2FsaWFzKTogRml4IHR5cG8uICBUZXN0IHdoZXRoZXIKCVZBUiBpcyBhIHRhZywgbm90IGl0cyB0eXBlIHRhZy4KCjIwMDYtMDEtMTMgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnL2kzODYvc3NlLm1kICgqdmVjX2V4dHJhY3R2MmRpXzFfc3NlMik6IFJlb3JkZXIKCWFsdGVybmF0aXZlcyB0byBtYXRjaCBzdHlsZSBvZiBvdGhlciBlbnRyaWVzLgoJKCp2ZWNfZXh0cmFjdHYyZGlfMV9zc2UpOiBMaWtld2lzZS4gIEZpeCBtb2RlIGF0dHIuCgoyMDA2LTAxLTEzICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8yNTc3MQoJKiB0cmVlLXNzYS1wcmUuYyAoaW5zZXJ0X2V4dHJhX3BoaXMpOiBEb24ndCBpbnNlcnQgbWVyZ2VzIG9mIGFibm9ybWFsCglTU0FfTkFNRVMuCgoyMDA2LTAxLTEzICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiB0cmVlLW9wdC8yNDM2NQoJKiB0cmVlLWlubGluZS5jIChkZWNsYXJlX3JldHVybl92YXJpYWJsZSk6IElmIHRoZSByZXR1cm4gdmFyaWFibGUKCXdhcyBtYXJrZWQgYXMgYSBub24gZ2ltcGxlIGNvbXBsZXgsIHNldCB0aGUgcmV0dXJuIHNsb3QgdmFyaWFibGUKCXRvIGJlIGEgbm9uIGdpbXBsZSBjb21wbGUgdmFyaWFibGUuCgoyMDA2LTAxLTEzICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBidWlsdGlucy5jIChleHBhbmRfYnVpbHRpbl9zaW5jb3MpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2J1aWx0aW5fbWF0aGZuXzMpOiBSZW1vdmUgZGVhZCBjb2RlLCBzaW4gYW5kIGNvcwoJZG8gbm90IHNldCBlcnJuby4KCShleHBhbmRfYnVpbHRpbik6IEV4cGFuZCBzaW5jb3MgdXNpbmcgZXhwYW5kX2J1aWx0aW5fc2luY29zLgoKMjAwNi0wMS0xMiAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbTMyYy9zaGlmdC5tZDogUmV3cml0ZTogQWxsb3cgYXJiaXRyYXJ5IG9wZXJhbmRzIGZvcgoJc2hpZnQgY291bnRzLCBzZXBhcmF0ZSBTSSBzaGlmdHMgZm9yIG0zMmMgdnMgbTE2YywgcGFzcyBzaGlmdCB0eXBlCglzbyB0aGF0IGNvbnN0YW50IHNoaWZ0cyBjYW4gYmUgc3BsaXQuCgkqIGNvbmZpZy9tMzJjL20zMmMuYyAobTMyY19jb25zdF9va19mb3JfY29uc3RyYWludF9wKTogQWRkIEluNi4KCShtMzJjX3ZhbGlkX3BvaW50ZXJfbW9kZSk6IE1ha2Ugc3RhdGljLgoJKHNoaWZ0X2dlbl9mdW5jX2Zvcik6IE5ldy4KCShtMzJjX3ByZXBhcmVfc2hpZnQpOiBVc2UgaXQuICBTcGxpdCBsYXJnZSBjb25zdCBzaGlmdHMgaW50bwoJbXVsdGlwbGUgc2hpZnRzLgoJKiBjb25maWcvbTMyYy9wcmVkaWNhdGVzLm1kIChzaGlmdGNvdW50X29wZXJhbmQpOiBBbGxvdyBtb3JlCglnZW5lcmFsIG9wZXJhbmRzLgoJKGxvbmdzaGlmdGNvdW50X29wZXJhbmQpOiBOZXcuCgkqIGRvYy9tZC50ZXhpIChNYWNoaW5lIENvbnN0cmFpbnRzKTogRG9jdW1lbnQgSW42LgoKMjAwNi0wMS0xMyAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBkb2MvdG0udGV4aSAoRGF0YSBPdXRwdXQpOiBBZGQgUkVBTF9WQUxVRV9UT19UQVJHRVRfREVDSU1BTDMyLAoJUkVBTF9WQUxVRV9UT19UQVJHRVRfREVDSU1BTDY0IGFuZCBSRUFMX1ZBTFVFX1RPX1RBUkdFVF9ERUNJTUFMMTI4Cglkb2N1bWVudGF0aW9uLgoKMjAwNi0wMS0xMiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLXNzYS1vcGVyYW5kcy5jIChhZGRfY2FsbF9jbG9iYmVyX29wcyk6IFVzZSBTRlRfUEFSRU5UX1ZBUgoJdG8gdHJ5IHRvIGF2b2lkIGNsb2JiZXJpbmcgcGllY2VzIG9mIHN0cnVjdHVyZXMgd2hlbiB3ZSBrbm93Cglzb21ldGhpbmcgYWJvdXQgdGhlIHdob2xlIHN0cnVjdHVyZS4KCSogdHJlZS1zc2EtYWxpYXMuYyAoY3JlYXRlX3NmdCk6IFNldCBTRlRfUEFSRU5UX1ZBUgoKMjAwNi0wMS0xMyAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBkb2MvcnRsLnRleGkgKEluc25zKTogUmVtb3ZlIHN0YXRlbWVudCB0aGF0IGxpYmNhbGxzIGNhbm5vdAoJcmV0dXJuIGluIG1lbW9yeSwgYXMgdGhpcyBpcyBubyBsaW1pdGF0aW9uIGlzIG5vIGxvbmdlciBwcmVzZW50LgoKMjAwNi0wMS0xMiAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWcvbTMyYy9hZGRzdWIubWQgKGFkZGhpMyk6IEFkZCB0d28gbW9yZSBhbHRlcm5hdGl2ZXMsIGZvcgoJbW92YSB3aXRoIGZiLCBhbmQgZm9yIGZiKzAgLT4gQW4uCgoJKiBjb25maWcvbTMyYy9tb3YubWQgKHBlZXBob2xlMik6IEZpeCBlbmFibGluZyBsb2dpYy4KCgkqIGNvbmZpZy9tMzJjL20zMmMuaCAoQ1RPUl9MSVNUX0JFR0lOLCBDVE9SX0xJU1RfRU5ELAoJRFRPUl9MSVNUX0JFR0lOLCBEVE9SX0xJU1RfRU5ELCBDVE9SU19TRUNUSU9OX0FTTV9PUCwKCURUT1JTX1NFQ1RJT05fQVNNX09QLCBJTklUX0FSUkFZX1NFQ1RJT05fQVNNX09QLAoJRklOSV9BUlJBWV9TRUNUSU9OX0FTTV9PUCk6IERlZmluZS4KCgkqIGNvbmZpZy9tMzJjL20zMmMuYyAobTMyY19sZWdpdGltaXplX2FkZHJlc3MpOiBSZW1vdmUgdGVtcG9yYXJ5Cgl2YXJpYWJsZS4KCShtMzJjX2xlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MpOiBOZXcgbG9naWMgdG8gcmVsb2FkIEZCIHRvIEFuLgoJKG0zMmNfb3V0cHV0X3JlZ19wdXNoKTogQWRkIG5ld2xpbmUuCgkobTMyY19vdXRwdXRfcmVnX3BvcCk6IExpa2V3aXNlLgoKMjAwNi0wMS0xMiAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogc3RydWN0LWVxdWl2LmMgKGZpbmRfZHlpbmdfaW5wdXRzKTogRml4IG9mZi1ieS1vbmUgYnVnLgoKMjAwNi0wMS0xMSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoU1VCVEFSR0VUX0VOQ09ERV9TRUNUSU9OX0lORk8pOiBEZWZpbmUuCgoyMDA2LTAxLTExICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy9zaC9wcmVkaWNhdGVzLm1kIChzaF9yZXBfdmVjKTogQWRkIHBhcmFsbGVsIHRvCgltYXRjaF9jb2RlLgoKMjAwNi0wMS0xMSAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBydGxhbmFsLmMgKGZpbmRfcmVnX25vdGUpOiBBc3NlcnQgaW5zbiBpcyBub3QgbnVsbC4KCjIwMDYtMDEtMTEgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJKiBkZi1zY2FuLmMgKGRmX2hhcmRfcmVnX2luaXQpOiBNb3ZlIGRlY2xhcmF0aW9uIG9mIGkgb3V0c2lkZQoJaWZkZWYuCgoyMDA2LTAxLTExICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCSogdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmMgKHRocmVhZGVkX2VkZ2VzKTogTmV3IFZFQyB0bwoJaG9sZCBlZGdlIHBhaXJzLgoJKG1hcmtfdGhyZWFkZWRfYmxvY2tzLCByZWdpc3Rlcl9qdW1wX3RocmVhZCk6IE5ldyBmdW5jdGlvbnMuCgkodGhyZWFkX3Rocm91Z2hfYWxsX2Jsb2Nrcyk6IFJlbW92ZSB1bndhbnRlZCBhcmd1bWVudC4gIE5vCglsb25nZXIgcmVseSBvbiBlLT5hdXggdG8gY29tbXVuaWNhdGUgdGhyZWFkIHRhcmdldCBpbmZvLgoJQ2FsbCBtYXJrX3RocmVhZGVkX2Jsb2Nrcy4gIFJlbGVhc2UgdGhlIHRocmVhZGVkX2Jsb2NrcwoJYml0bWFwIGFuZCB0aHJlYWRlZF9lZGdlcyB2ZWN0b3Igd2hlbiBjb21wbGV0ZS4KCSogdHJlZS1zc2EtZG9tLmMgKHN0cnVjdCBlZGdlX2luZm8pOiBSZW1vdmUgcmVkaXJlY3Rpb25fdGFyZ2V0IGZpZWxkLgoJKHRocmVhZGVkX2Jsb2Nrcyk6IFJlbW92ZS4KCSh0cmVlX3NzYV9kb21pbmF0b3Jfb3B0aW1pemUpOiBSZW1vdmUgaW5pdGlhbGl6YXRpb24gYW5kCglmaW5hbGl6YXRpb24gb2YgdGhyZWFkZWRfYmxvY2tzLiAgU2ltcGxpZnkgY2FsbCB0bwoJdGhyZWFkX3Rocm91Z2hfYWxsX2Jsb2Nrcy4KCSh0aHJlYWRfYWNyb3NzX2VkZ2UpOiBDYWxsIHJlZ2lzdGVyX2p1bXBfdGhyZWFkIHJhdGhlciB0aGFuCglzdG9yaW5nIHRocmVhZCBpbmZvcm1hdGlvbiBpbnRvIGUtPmF1eC4KCShmcmVlX2FsbF9lZGdlX2luZm9zKTogU2ltcGxpZnkgbm93IHRoYXQgZS0+YXV4IGlzIG5vIGxvbmdlcgoJdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRocmVhZF90aHJvdWdoX2FsbF9ibG9ja3MuCgkqIHRyZWUtZmxvdy5oICh0aHJlYWRfdGhyb3VnaF9hbGxfYmxvY2tzKTogVXBkYXRlIHByb3RvdHlwZS4KCShyZWdpc3Rlcl9qdW1wX3RocmVhZCk6IFByb3RvdHlwZS4KCjIwMDYtMDEtMTEgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZGYtY29yZS5jIChkZl9jb21wYWN0X2Jsb2NrcywgZGZfYmJfcmVwbGFjZSk6IFVzZQoJU0VUX0JBU0lDX0JMT0NLIGluc3RlYWQgb2YgQkFTSUNfQkxPQ0suCgoyMDA2LTAxLTExICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjU3MzQKCSogdHJlZS1zc2EtZm9yd3Byb3AuYyAoZm9yd2FyZF9wcm9wYWdhdGVfYWRkcl9leHByXzEpOiBEbyBub3QKCXN0b3AgcHJvcGFnYXRpb24gYWZ0ZXIgc3VjY2Vzc2Z1bCBwcm9wYWdhdGlvbiB0byB0aGUgTEhTLgoKMjAwNi0wMS0xMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChjb250cm9sX2Zsb3dfZ3JhcGgpOiBDaGFuZ2UgdGhlIHR5cGUgb2YKCXhfYmFzaWNfYmxvY2tfaW5mbyB0byBWRUMoYmFzaWNfYmxvY2ssZ2MpICouCgkoQkFTSUNfQkxPQ0tfRk9SX0ZVTkNUSU9OLCBCQVNJQ19CTE9DSyk6IEFkanVzdCB0aGUgdXNlcyBvZgoJYmFzaWNfYmxvY2tfaW5mby4KCShTRVRfQkFTSUNfQkxPQ0spOiBOZXcuCgkqIGNmZy5jIChjb21wYWN0X2Jsb2NrcywgZXhwdW5nZV9ibG9jayk6IFVzZSBTRVRfQkFTSUNfQkxPQ0sKCWluc3RlYWQgb2YgQkFTSUNfQkxPQ0sgd2hlbiBhc3NpZ25pbmcgdG8gQkFTSUNfQkxPQ0suCgkqIGNmZ2J1aWxkLmMgKGZpbmRfYmFzaWNfYmxvY2tzKTogTGlrZXdpc2UuCgkqIGNmZ2xheW91dC5jIChmaXh1cF9yZW9yZGVyX2NoYWluKTogTGlrZXdpc2UuCgkqIGNmZ3J0bC5jIChjcmVhdGVfYmFzaWNfYmxvY2tfc3RydWN0dXJlLAoJcnRsX2NyZWF0ZV9iYXNpY19ibG9jayk6IExpa2V3aXNlLgoJKiBpZmN2dC5jIChmaW5kX2lmX2Nhc2VfMSk6IExpa2V3aXNlLgoJKiB0cmVlLWNmZy5jIChpbml0X2VtcHR5X3RyZWVfY2ZnLCBidWlsZF90cmVlX2NmZywgY3JlYXRlX2JiKToKCUxpa2V3aXNlLgoKMjAwNi0wMS0xMSAgS2VubmV0aCBaYWRlY2sgPHphZGVja0BuYXR1cmFsYnJpZGdlLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmVkIHJvdHRlZCBvZGYuYyBlbnRyeS4KCjIwMDYtMDEtMTEgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCVBSIHRhcmdldC8yNTcwNgoJKiBjb25maWcvY3Jpcy9jcmlzLm1kICgiKmV4dG9wcWloaV9zaWRlIiwgIipleHRvcDxtb2RlPnNpX3NpZGUiKQoJKCIqZXh0b3A8bW9kZT5zaV9zd2FwX3NpZGVfYmlhcCIsICIqZXh0b3A8bW9kZT5zaV9zd2FwX3NpZGUiLAoJKCIqZXh0b3BxaWhpIiwgIipleHRvcDxtb2RlPnNpIiwgIipleHRvcDxtb2RlPnNpX3N3YXAiKTogVXNlICVFCglvdXRwdXQgcGF0dGVybiBtb2RpZmllciwgbm90ICVlLgoJKiBjb25maWcvY3Jpcy9jcmlzLmMgKGNyaXNfb3Bfc3RyKTogVXBkYXRlIGNvbW1lbnQgYWJvdXQgcGF0dGVybgoJbW9kaWZpZXIuCgkoY3Jpc19wcmludF9vcGVyYW5kKSA8Y2FzZSAnZSc+OiBDbGVhciBjcmlzX291dHB1dF9pbnNuX2lzX2JvdW5kCgliZWZvcmUgZmFsbGluZyB0aHJvdWdoIGludG8uLi4KCTxjYXNlICdFJz46IFJlZGVmaW5lZCBmcm9tIG9sZCAnZScgY2FzZS4KCjIwMDYtMDEtMTEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCglQUiB0YXJnZXQvMjUwNDIKCSogaTM4Ni5jIChpeDg2X2luaXRfbW14X3NzZV9idWlsdGlucyk6IERvIG5vdCBkZWxjYXJlIGZsb2F0MTI4CgoyMDA2LTAxLTExICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBpMzg2LmggKFRBUkdFVF9ERUNPTVBPU0VfTEVBKTogS2lsbC4KCSogaTM4Ni5jICh4ODZfZGVjb21wb3NlX2xlYSk6IEtpbGwuCgkoaXg4Nl9ydHhfY29zdHMpOiBLaWxsLgoKMjAwNi0wMS0xMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogY2dyYXBoLmMgKGNncmFwaF9pbnNlcnRfbm9kZV90b19oYXNodGFibGUpOiBOZXcgZnVuY3Rpb24uCgkqIGNncmFwaC5oIChjZ3JhcGhfbm9kZSk6IEFkZCBpbmxpbmVfZGVjbC4KCShjZ3JhcGhfaW5zZXJ0X25vZGVfdG9faGFzaHRhYmxlKTogRGVjbGFyZS4KCShzYXZlX2lubGluZV9mdW5jdGlvbl9ib2R5KTogRGVjbGFyZS4KCSogY2dyYXBodW5pdC5jICh2ZXJpZnlfY2dyYXBoX25vZGUpOiBJbmxpbmUgZWRnZXMgbWlnaHQgcG9pbnQgdG8gaW5saW5lCgljbG9uZXMuCgkoY2dyYXBoX3ByZXNlcnZlX2Z1bmN0aW9uX2JvZHlfcCk6IERvIG5vdCBwcmVzcnZlIHdoZW4gZHVtcCBpcyBlbmFibGVkLgoJKGNncmFwaF9mdW5jdGlvbl92ZXJzaW9uaW5nKTogVXBkYXRlIGNhbGwgb2YgdHJlZV9mdW5jdGlvbl92ZXJzaW9uaW5nLgoJKHNhdmVfaW5saW5lX2Z1bmN0aW9uX2JvZHkpOiBOZXcgZnVuY3Rpb24uCgkqIGZ1bmN0aW9uLmggKHN0cnVjdCBmdW5jdGlvbik6IEtpbGwgc2F2ZWRfZWgsIHNhdmVkX2NmZywgc2F2ZWRfYXJncywKCXNhdmVkX3N0YXRpY19jaGFpbl9kZWNsLCBzYXZlZF9ibG9ja3MgYW5kIHNhdmVkLXVuZXhwYW5kZWRfdmFyX2xpc3QuCgkqIGlwYS1pbmxpbmUuYyAoY2dyYXBoX21hcmtfaW5saW5lX2VkZ2UpOiBMb29rIGZvciBpbmxpbmUgY2xvbmVzLgoJKGNncmFwaF9kZWZhdWx0X2lubGluZV9wKTogTGlrZXdpc2UuCgkoY2dyYXBoX2RlY2lkZV9pbmxpbmluZ19pbmNyZW1lbnRhbGx5KTogTGlrZXdpc2UuCgkqIHRyZWUtaW5saW5lLmMgKGlubGluZV9kYXRhKTogS2lsbCBzYXZpbmdfcCBhZGQgdXBkYXRlX2Nsb25lc19wLgoJKGNvcHlfYmIpOiBLaWxsIHNhdmluZzsgZG8gdXBkYXRpbmcgb2YgY2xvbmVzLgoJKGNvcHlfY2ZnX2JvZHkpOiBLaWxsIHNhdmluZy4KCShpbml0aWFsaXplX2lubGluZWQtcGFyYW1ldGVycyk6IExpa2V3aXNlLgoJKGV4cGFuZF9jYWxsX2lubGluZSk6IExpa2V3aXNlLgoJKHNhdmVfYm9keSk6IEtpbGwuCgkodHJlZV9mdW5jdGlvbl92ZXJzaW9uaW5nKTogTmV3IHBhcmFtZXRlciAidXBkYXRlX2Nsb25lcyIuCgkoaW5saW5pbmdfcCk6IEtpbGwgc2F2aW5nLgoJKiB0cmVlLWlubGluZS5oICh0cmVlX2Z1bmN0aW9uX3ZlcnNpb25pbmcpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiB0cmVlLW9wdGltaXplLmMgKHRyZWVfcmVzdF9vZl9jb21waWxhdGlvbik6IFVzZSBjbG9ubmluZyBpbnN0ZWFkIG9mCglzYXZpbmcuCgoyMDA2LTAxLTExICBJYW4gTGFuY2UgVGF5bG9yIDxpYW5AYWlycy5jb20+CgoJKiBjb21iaW5lLmMgKHN0cnVjdCB1bmRvKTogUmVtb3ZlIGlzX2ludC4gIEVudW1pZnkgdHlwZXMgb2YgdW5kb3MuCglBbGxvdyB1bmRvaW5nIHNldCBvZiBtYWNoaW5lIG1vZGUuCgkoZG9fU1VCU1QpOiBVc2UgZW51bXMgaW5zdGVhZCBvZiBpc19pbnQuCgkoZG9fU1VCU1RfTU9ERSk6IE5ldyBmdW5jdGlvbi4KCShTVUJTVF9NT0RFKTogTmV3IG1hY3JvLgoJKHRyeV9jb21iaW5lKTogVXNlIFNVQlNUX01PREUvUFVUX01PREUgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIGEgbmV3CglyZWcgYW5kIHRyeWluZyB0byByZXBsYWNlIHJlZ19yZWdub19ydHggd2l0aCBhIG5ldyByZWdpc3Rlci4KCSh1bmRvX2FsbCk6IFVzZSBuZXcgZW51bXMsIGhhbmRsZSB1bmRvaW5nIGEgUFVUX01PREUgY2hhbmdlLgoJKHNpbXBsaWZ5X3NldCk6IFVzZSBTVUJTVF9NT0RFLgoJKGRpc3RyaWJ1dGVfbm90ZXMpOiBSZW1vdmUgY29kZSB0aGF0IHRyaWVkIHRvIHVwZGF0ZSByZWcgbm90ZXMKCWZvciByZWdub19yZWdfcnR4IGNoYW5nZXMuCgoyMDA2LTAxLTExICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzIzMTA5CglQUiB0cmVlLW9wdGltaXphdGlvbi8yMzk0OAoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjQxMjMKCgkqIE1ha2VmaWxlLmluICh0cmVlLXNzYS1tYXRoLW9wdHMubyk6IEFkanVzdCBkZXBlbmRlbmNpZXMuCgkqIHRyZWUtY2ZnLmMgKHNpbmdsZV9ub25jb21wbGV4X3N1Y2MpOiBOZXcuCgkqIHRyZWUtZmxvdy5oIChzaW5nbGVfbm9uY29tcGxleF9zdWNjKTogRGVjbGFyZSBpdC4KCSogdHJlZS1zc2EtbWF0aC1vcHRzLmMgKGVudW0gcGxhY2VfcmVjaXByb2NhbCk6IFJlbW92ZS4KCSogdHJlZS1zc2EtbWF0aC1vcHRzLmMgKGVudW0gcGxhY2VfcmVjaXByb2NhbCk6IFJlbW92ZS4KCShzdHJ1Y3Qgb2NjdXJyZW5jZSwgb2NjX2hlYWQsIG9jY19wb29sLCBpc19kaXZpZGVfYnksIGNvbXB1dGVfbWVyaXQsCglpbnNlcnRfYmIsIHJlZ2lzdGVyX2RpdmlzaW9uX2luLCBpbnNlcnRfcmVjaXByb2NhbHMsCglyZXBsYWNlX3JlY2lwcm9jYWwsIGZyZWVfYmIpOiBOZXcuCgkoZXhlY3V0ZV9jc2VfcmVjaXByb2NhbHNfMSk6IFJld3JpdHRlbi4KCShleGVjdXRlX2NzZV9yZWNpcHJvY2Fscyk6IEFkanVzdCBjYWxscyB0byBleGVjdXRlX2NzZV9yZWNpcHJvY2Fsc18xLgoJRG8gbm90IGNvbW1pdCBhbnkgZWRnZSBpbnNlcnRpb24uICBBbHdheXMgY29tcHV0ZSBkb21pbmF0b3JzIGFuZAoJY3JlYXRlIHRoZSBhbGxvY2F0aW9uIHBvb2wuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX01JTl9ESVZJU0lPTlNfRk9SX1JFQ0lQX01VTCk6IE5ldy4KCSogdGFyZ2V0LmggKHN0cnVjdCBnY2NfdGFyZ2V0KTogQWRkIG1pbl9kaXZpc3Rpb25zX2Zvcl9yZWNpcF9tdWwuCgkqIHRhcmdob29rcy5jIChkZWZhdWx0X21pbl9kaXZpc3Rpb25zX2Zvcl9yZWNpcF9tdWwpOiBOZXcuCgkqIHRhcmdob29rcy5oIChkZWZhdWx0X21pbl9kaXZpc3Rpb25zX2Zvcl9yZWNpcF9tdWwpOiBOZXcgcHJvdG90eXBlLgoJKiBwYXNzZXMuYyAoaW5pdF9vcHRpbWl6YXRpb25fcGFzc2VzKTogUnVuIHJlY2lwIGFmdGVyIHRyZWUgbG9vcAoJb3B0aW1pemF0aW9ucy4KCSogZG9jL3RtLnRleGkgKE1pc2MpOiBEb2N1bWVudCBUQVJHRVRfTUlOX0RJVklTSU9OU19GT1JfUkVDSVBfTVVMLgoKMjAwNi0wMS0xMSAgRGFubnkgQmVybGluIDxkYmVybGluQGRiZXJsaW4ub3JnPgoJICAgIEtlbm5ldGggWmFkZWNrIDx6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20+CgoJKiBkZi5oIChERl9TQ0FOLCBERl9SVSwgREZfUkQsIERGX0xSLCBERl9VUiwgREZfVVJFQywgREZfQ0hBSU4sCglERl9SSSwgREZfTEFTVF9QUk9CTEVNX1BMVVMxLCBERl9EVV9DSEFJTiwgREZfVURfQ0hBSU4sCglERl9SRUZfVFlQRV9OQU1FUywgREZfSEFSRF9SRUdTLCBERl9FUVVJVl9OT1RFUywgREZfU1VCUkVHUywKCURGX1NDQU5fQkJfSU5GTywgREZfUlVfQkJfSU5GTywgREZfUkRfQkJfSU5GTywgREZfTFJfQkJfSU5GTywKCURGX1VSX0JCX0lORk8sIERGX1VSRUNfQkJfSU5GTywgREZfTElWRV9JTiwgREZfTElWRV9PVVQsCglERl9SQV9MSVZFX0lOLCBERl9SQV9MSVZFX09VVCwgREZfVVBXQVJEX0xJVkVfSU4sCglERl9VUFdBUkRfTElWRV9PVVQsIERGX1JFRl9SRUFMX1JFRywgREZfUkVGX1JFR05PLAoJREZfUkVGX1JFQUxfTE9DLCBERl9SRUZfUkVHLCBERl9SRUZfTE9DLCBERl9SRUZfQkIsIERGX1JFRl9CQk5PLAoJREZfUkVGX0lOU04sIERGX1JFRl9JTlNOX1VJRCwgREZfUkVGX1RZUEUsIERGX1JFRl9DSEFJTiwKCURGX1JFRl9JRCwgREZfUkVGX0ZMQUdTLCBERl9SRUZfTkVYVF9SRUcsIERGX1JFRl9QUkVWX1JFRywKCURGX1JFRl9ORVhUX1JFRiwgREZfUkVGX0RBVEEsIERGX1JFRl9SRUdfREVGX1AsIERGX1JFRl9SRUdfVVNFX1AsCglERl9SRUZfUkVHX01FTV9TVE9SRV9QLCBERl9SRUZfUkVHX01FTV9MT0FEX1AsIERGX1JFRl9SRUdfTUVNX1AsCglERl9ERUZTX1NJWkUsIERGX0RFRlNfR0VULCBERl9ERUZTX1NFVCwgREZfVVNFU19TSVpFLCBERl9VU0VTX0dFVCwKCURGX1VTRVNfU0VULCBERl9SRUdfU0laRSwgREZfUkVHX0RFRl9HRVQsIERGX1JFR19ERUZfU0VULAoJREZfUkVHX1VTRV9HRVQsIERGX1JFR19VU0VfU0VULCBERl9SRUdOT19GSVJTVF9ERUYsCglERl9SRUdOT19MQVNUX1VTRSwgREZfSU5TTl9TSVpFLCBERl9JTlNOX0dFVCwgREZfSU5TTl9TRVQsCglERl9JTlNOX0NPTlRBSU5TX0FTTSwgREZfSU5TTl9MVUlELCBERl9JTlNOX0RFRlMsIERGX0lOU05fVVNFUywKCURGX0lOU05fVUlEX0dFVCwgREZfSU5TTl9VSURfTFVJRCwgREZfSU5TTl9VSURfREVGUywKCURGX0lOU05fVUlEX1VTRVMsIERGX1NDQU5fSU5JVElBTCwgREZfU0NBTl9HTE9CQUwsCglERl9TQ0FOX1BPU1RfQUxMT0MpOiBOZXcgbWFjcm9zLgoJKGRmX2Zsb3dfZGlyLCBkZl9yZWZfdHlwZSwgZGZfcmVmX2ZsYWdzLCBkZl9hbGxvY19mdW5jdGlvbiwKCWRmX2ZyZWVfYmJfZnVuY3Rpb24sIGRmX2xvY2FsX2NvbXB1dGVfZnVuY3Rpb24sIGRmX2luaXRfZnVuY3Rpb24sCglkZl9kYXRhZmxvd19mdW5jdGlvbiwgZGZfY29uZmx1ZW5jZV9mdW5jdGlvbl8wLAoJZGZfY29uZmx1ZW5jZV9mdW5jdGlvbl9uLCBkZl90cmFuc2Zlcl9mdW5jdGlvbiwKCWRmX2ZpbmFsaXplcl9mdW5jdGlvbiwgZGZfZnJlZV9mdW5jdGlvbiwgZGZfZHVtcF9wcm9ibGVtX2Z1bmN0aW9uLAoJZGZfcHJvYmxlbSwgZGF0YWZsb3csIGRmX2luc25faW5mbywgZGZfcmVnX2luZm8sIGRmX3JlZiwgZGZfbGluaywKCWRmX3JlZl9pbmZvLCBkZiwgZGZfbWFwLCBkZl9zY2FuX2JiX2luZm8sIGRmX3J1X2JiX2luZm8sCglkZl9ydV9iYl9pbmZvLCBkZl9yZF9iYl9pbmZvLCBkZl9scl9iYl9pbmZvLCBkZl91cl9iYl9pbmZvLAoJZGZfdXJlY19iYl9pbmZvLCApIE5ldyB0eXBlcy4KCShkZl9pbnZhbGlkYXRlZF9ieV9jYWxsLCBkZl9hbGxfaGFyZF9yZWdzLCBkZl9zdGF0ZSkgTmV3IHB1YmxpYwoJdmFyaWFibGVzLgoJKGRmX2luaXQsIGRmX2FkZF9wcm9ibGVtLCBkZl9zZXRfYmxvY2tzLCBkZl9maW5pc2gsIGRmX2FuYWx5emUsCglkZl9hbmFseXplX3NpbXBsZV9jaGFuZ2Vfc29tZV9ibG9ja3MsCglkZl9hbmFseXplX3NpbXBsZV9jaGFuZ2Vfb25lX2Jsb2NrLCBkZl9jb21wYWN0X2Jsb2NrcywKCWRmX2JiX3JlcGxhY2UsIGRmX2JiX3JlZ25vX2xhc3RfdXNlX2ZpbmQsCglkZl9iYl9yZWdub19maXJzdF9kZWZfZmluZCwgZGZfYmJfcmVnbm9fbGFzdF9kZWZfZmluZCwKCWRmX2luc25fcmVnbm9fZGVmX3AsIGRmX2ZpbmRfZGVmLCBkZl9maW5kX3VzZSwKCWRmX2l0ZXJhdGl2ZV9kYXRhZmxvdywgZGZfZHVtcCwgZGZfY2hhaW5fZHVtcCwgZGZfcmVmc19jaGFpbl9kdW1wLAoJZGZfcmVnc19jaGFpbl9kdW1wLCBkZl9pbnNuX2RlYnVnLCBkZl9pbnNuX2RlYnVnX3JlZ25vLAoJZGZfcmVnbm9fZGVidWcsIGRmX3JlZl9kZWJ1ZywgZGVidWdfZGZfaW5zbiwgZGVidWdfZGZfcmVnbm8sCglkZWJ1Z19kZl9yZWcsIGRlYnVnX2RmX2RlZm5vLCBkZWJ1Z19kZl91c2VubywgZGVidWdfZGZfcmVmLAoJZGVidWdfZGZfY2hhaW4sIGRmX2dldF9kZXBlbmRlbnRfcHJvYmxlbSwgZGZfY2hhaW5fY3JlYXRlLAoJZGZfY2hhaW5fdW5saW5rLCBkZl9jaGFpbl9jb3B5LCBkZl9nZXRfbGl2ZV9pbiwgZGZfZ2V0X2xpdmVfb3V0LAoJZGZfZ3Jvd19iYl9pbmZvLCBkZl9jaGFpbl9kdW1wLCBkZl9wcmludF9iYl9pbmRleCwKCWRmX3J1X2FkZF9wcm9ibGVtLCBkZl9ydV9nZXRfYmJfaW5mbywgZGZfcmRfYWRkX3Byb2JsZW0sCglkZl9yZF9nZXRfYmJfaW5mbywgZGZfbHJfYWRkX3Byb2JsZW0sIGRmX2xyX2dldF9iYl9pbmZvLAoJZGZfdXJfYWRkX3Byb2JsZW0sIGRmX3VyX2dldF9iYl9pbmZvLCBkZl91cmVjX2FkZF9wcm9ibGVtLAoJZGZfdXJlY19nZXRfYmJfaW5mbywgZGZfY2hhaW5fYWRkX3Byb2JsZW0sIGRmX3JpX2FkZF9wcm9ibGVtLAoJZGZfcmVnX2xpZmV0aW1lLCBkZl9zY2FuX2dldF9iYl9pbmZvLCBkZl9zY2FuX2FkZF9wcm9ibGVtLAoJZGZfcmVzY2FuX2Jsb2NrcywgZGZfcmVmX2NyZWF0ZSwgZGZfZ2V0X2FydGlmaWNpYWxfZGVmcywKCWRmX2dldF9hcnRpZmljaWFsX3VzZXMsIGRmX3JlZ19jaGFpbl9jcmVhdGUsIGRmX3JlZ19jaGFpbl91bmxpbmssCglkZl9yZWZfcmVtb3ZlLCBkZl9pbnNuX3JlZnNfZGVsZXRlLCBkZl9yZWZzX2RlbGV0ZSwKCWRmX3Jlb3JnYW5pemVfcmVmcywgZGZfc2V0X3N0YXRlLCBkZl9oYXJkX3JlZ19pbml0LAoJZGZfcmVhZF9tb2RpZnlfc3VicmVnX3ApIE5ldyBwdWJsaWMgZnVuY3Rpb25zLgoJKiBkZi1jb3JlLmM6IFRoZSBjb3JlIGRhdGFmbG93IHNvbHZlciBhbmQgZ2x1ZSByb3V0aW5lcyBmb3IgcnRsCglkYXRhZmxvdy4KCShkZl9pbml0LCBkZl9hZGRfcHJvYmxlbSwgZGZfc2V0X2Jsb2NrcywgZGZfZmluaXNoLAoJZGZfaHlicmlkX3NlYXJjaF9mb3J3YXJkLCBkZl9oeWJyaWRfc2VhcmNoX2JhY2t3YXJkLAoJZGZfaXRlcmF0aXZlX2RhdGFmbG93LCBkZl9wcnVuZV90b19zdWJjZmcsIGRmX2FuYWx5emVfcHJvYmxlbSwKCWRmX2FuYWx5emUsIGRmX2dldF9iYl9pbmZvLCBkZl9zZXRfYmJfaW5mbywgZGZfYmJfcmVwbGFjZSwKCWRmX2JiX3JlZ25vX2xhc3RfdXNlX2ZpbmQsIGRmX2JiX3JlZ25vX2ZpcnN0X2RlZl9maW5kLAoJZGZfYmJfcmVnbm9fbGFzdF9kZWZfZmluZCwgZGZfaW5zbl9yZWdub19kZWZfcCwgZGZfZmluZF9kZWYsCglkZl9yZWdfZGVmaW5lZCwgZGZfZmluZF91c2UsIGRmX3JlZ191c2VkLCBkZl9kdW1wLAoJZGZfcmVmc19jaGFpbl9kdW1wLCBkZl9yZWdzX2NoYWluX2R1bXAsIGRmX2luc25fZGVidWcsCglkZl9pbnNuX2RlYnVnX3JlZ25vLCBkZl9yZWdub19kZWJ1ZywgZGZfcmVmX2RlYnVnLCBkZWJ1Z19kZl9pbnNuLAoJZGVidWdfZGZfcmVnLCBkZWJ1Z19kZl9yZWdubywgZGVidWdfZGZfcmVmIGRlYnVnX2RmX2RlZm5vLAoJZGVidWdfZGZfdXNlbm8sIHJlc2V0X2RmX2FmdGVyX3JlbG9hZCk6IE5ldyBmdW5jdGlvbnMuCgkqIGRmLXNjYW4uYzogVGhlIHNjYW5uaW5nIGZ1Y3Rpb25zLCBvbmNlIGluIGRmLmMsIGNvbXBsZXRlbHkKCXJld3JpdHRlbiBzbyB0aGF0IHRoZXkgbm93IGZ1bGx5IG1vZGVsIHRoZSBmdW5jdGlvbmFsaXR5IG9mCglyZWdpc3RlciB1c2FnZSBhdCB0aGUgYmFja2VuZC4KCShkZl9zY2FuX2ZyZWVfaW50ZXJuYWwsIGRmX3NjYW5fZ2V0X2JiX2luZm8sIGRmX3NjYW5fc2V0X2JiX2luZm8sCglkZl9zY2FuX2ZyZWVfYmJfaW5mbywgZGZfc2Nhbl9hbGxvYywgZGZfc2Nhbl9mcmVlLCBkZl9zY2FuX2R1bXAsCglkZl9zY2FuX2FkZF9wcm9ibGVtLCBkZl9ncm93X3JlZ19pbmZvLCBkZl9ncm93X3JlZl9pbmZvLAoJZGZfZ3Jvd19pbnNuX2luZm8sIGRmX3Jlc2Nhbl9ibG9ja3MsIGRmX3JlZl9jcmVhdGUsCglkZl9nZXRfYXJ0aWZpY2lhbF9kZWZzLCBkZl9nZXRfYXJ0aWZpY2lhbF91c2VzLAoJZGZfcmVnX2NoYWluX2NyZWF0ZSwgZGZfcmVmX3VubGluaywgZGZfcmVnX2NoYWluX3VubGluaywKCWRmX3JlZl9yZW1vdmUsIGRmX2luc25fY3JlYXRlX2luc25fcmVjb3JkLCBkZl9pbnNuX3JlZnNfZGVsZXRlLAoJZGZfcmVmc19kZWxldGUsIGRmX3Jlb3JnYW5pemVfcmVmcywgZGZfc2V0X3N0YXRlLAoJZGZfcmVmX2NyZWF0ZV9zdHJ1Y3R1cmUsIGRmX3JlZl9yZWNvcmQsIGRmX3JlYWRfbW9kaWZ5X3N1YnJlZ19wLAoJZGZfZGVmX3JlY29yZF8xLCBkZl9kZWZzX3JlY29yZCwgZGZfdXNlc19yZWNvcmQsCglkZl9pbnNuX2NvbnRhaW5zX2FzbV8xLCBkZl9pbnNuX2NvbnRhaW5zX2FzbSwgZGZfaW5zbl9yZWZzX3JlY29yZCwKCWRmX2hhc19laF9wcmVkcywgZGZfYmJfcmVmc19yZWNvcmQsIGRmX3JlZnNfcmVjb3JkLCBkZl9tYXJrX3JlZywKCWRmX3JlY29yZF9leGl0X2Jsb2NrX3VzZXMsIGRmX2hhcmRfcmVnX2luaXQpOiBOZXcgZnVuY3Rpb25zLgoKCSogZGYtcHJvYmxlbXMuYzogU2V2ZW4gY29uY3JldGUgZGF0YWZsb3cgcHJvYmxlbXMgdGhhdCB1c2UgdGhlCglzY2FubmluZyBpbiBkZi1zY2FuLmMgYW5kIGFyZSBzb2x2ZWQgYnkgdGhlIGVuZ2luZSBpbiBkZi1jb3JlLmMuCgkoZGZfZ2V0X2RlcGVuZGVudF9wcm9ibGVtLCBkZl9jaGFpbl9jcmVhdGUsIGRmX2NoYWluX3VubGluaywKCWRmX2NoYWluX2NvcHksIGRmX2dldF9saXZlX2luLCBkZl9nZXRfbGl2ZV9vdXQsIGRmX2dyb3dfYmJfaW5mbywKCWRmX2NoYWluX2R1bXAsIGRmX3ByaW50X2JiX2luZGV4LCBkZl9yZWZfYml0bWFwLCBkZl9zZXRfc2VlbiwKCWRmX3Vuc2V0X3NlZW4sIGRmX3J1X2dldF9iYl9pbmZvLCBkZl9ydV9zZXRfYmJfaW5mbywKCWRmX3J1X2ZyZWVfYmJfaW5mbywgZGZfcnVfYWxsb2MsCglkZl9ydV9iYl9sb2NhbF9jb21wdXRlX3Byb2Nlc3NfZGVmLAoJZGZfcnVfYmJfbG9jYWxfY29tcHV0ZV9wcm9jZXNzX3VzZSwgZGZfcnVfYmJfbG9jYWxfY29tcHV0ZSwKCWRmX3J1X2xvY2FsX2NvbXB1dGUsIGRmX3J1X2luaXRfc29sdXRpb24sIGRmX3J1X2NvbmZsdWVuY2VfbiwKCWRmX3J1X3RyYW5zZmVyX2Z1bmN0aW9uLCBkZl9ydV9mcmVlLCBkZl9ydV9kdW1wLAoJZGZfcnVfYWRkX3Byb2JsZW0sIGRmX3JkX2dldF9iYl9pbmZvLCBkZl9yZF9zZXRfYmJfaW5mbywKCWRmX3JkX2ZyZWVfYmJfaW5mbywgZGZfcmRfYWxsb2MsCglkZl9yZF9iYl9sb2NhbF9jb21wdXRlX3Byb2Nlc3NfZGVmLCBkZl9yZF9iYl9sb2NhbF9jb21wdXRlLAoJZGZfcmRfbG9jYWxfY29tcHV0ZSwgZGZfcmRfaW5pdF9zb2x1dGlvbiwgZGZfcmRfY29uZmx1ZW5jZV9uLAoJZGZfcmRfdHJhbnNmZXJfZnVuY3Rpb24sIGRmX3JkX2ZyZWUsIGRmX3JkX2R1bXAsCglkZl9yZF9hZGRfcHJvYmxlbSwgZGZfbHJfZ2V0X2JiX2luZm8sIGRmX2xyX3NldF9iYl9pbmZvLAoJZGZfbHJfZnJlZV9iYl9pbmZvLCBkZl9scl9hbGxvYywgZGZfbHJfYmJfbG9jYWxfY29tcHV0ZSwKCWRmX2xyX2xvY2FsX2NvbXB1dGUsIGRmX2xyX2luaXQsIGRmX2xyX2NvbmZsdWVuY2VfMCwKCWRmX2xyX2NvbmZsdWVuY2VfbiwgZGZfbHJfdHJhbnNmZXJfZnVuY3Rpb24sIGRmX2xyX2ZyZWUsCglkZl9scl9kdW1wLCBkZl9scl9hZGRfcHJvYmxlbSwgZGZfdXJfZ2V0X2JiX2luZm8sCglkZl91cl9zZXRfYmJfaW5mbywgZGZfdXJfZnJlZV9iYl9pbmZvLCBkZl91cl9hbGxvYywKCWRmX3VyX2JiX2xvY2FsX2NvbXB1dGUsIGRmX3VyX2xvY2FsX2NvbXB1dGUsIGRmX3VyX2luaXQsCglkZl91cl9sb2NhbF9maW5hbGl6ZSwgZGZfdXJfY29uZmx1ZW5jZV9uLCBkZl91cl90cmFuc2Zlcl9mdW5jdGlvbiwKCWRmX3VyX2ZyZWUsIGRmX3VyX2R1bXAsIGRmX3VyX2FkZF9wcm9ibGVtLCBkZl91cmVjX2dldF9iYl9pbmZvLAoJZGZfdXJlY19zZXRfYmJfaW5mbywgZGZfdXJlY19mcmVlX2JiX2luZm8sIGRmX3VyZWNfYWxsb2MsCglkZl91cmVjX21hcmtfcmVnX2NoYW5nZSwgZGZfdXJlY19jaGVja19lYXJseWNsb2JiZXIsCglkZl91cmVjX21hcmtfcmVnX3VzZV9mb3JfZWFybHljbG9iYmVyLAoJZGZfdXJlY19tYXJrX3JlZ191c2VfZm9yX2Vhcmx5Y2xvYmJlcl8xLCBkZl91cmVjX2JiX2xvY2FsX2NvbXB1dGUsCglkZl91cmVjX2xvY2FsX2NvbXB1dGUsIGRmX3VyZWNfaW5pdCwgZGZfdXJlY19sb2NhbF9maW5hbGl6ZSwKCWRmX3VyZWNfY29uZmx1ZW5jZV9uLCBkZl91cmVjX3RyYW5zZmVyX2Z1bmN0aW9uLCBkZl91cmVjX2ZyZWUsCglkZl91cmVjX2R1bXAsIGRmX3VyZWNfYWRkX3Byb2JsZW0sIGRmX2NoYWluX2FsbG9jLAoJZGZfY2hhaW5fY3JlYXRlX2JiX3Byb2Nlc3NfdXNlLCBkZl9jaGFpbl9jcmVhdGVfYmIsCglkZl9jaGFpbl9maW5hbGl6ZSwgZGZfY2hhaW5fZnJlZSwgZGZfY2hhaW5zX2R1bXAsCglkZl9jaGFpbl9hZGRfcHJvYmxlbSwgZGZfcmlfYWxsb2MsIGRmX3JpX2JiX2NvbXB1dGUsCglkZl9yaV9jb21wdXRlLCBkZl9yaV9mcmVlLCBkZl9yaV9kdW1wLCBkZl9yaV9hZGRfcHJvYmxlbSwKCWRmX3JlZ19saWZldGltZSk6IE5ldyBmdW5jdGlvbnMuCgkqIGRmLmM6IERlbGV0ZWQgZmlsZS4KCSogZGRnLmMgKGNyZWF0ZV9kZGdfZGVwX25vX2xpbmssIGJ1aWxkX2ludGVyX2xvb3BfZGVwcyk6IE1hZGUgY29kZQoJY29uc2lzdGVudCB3aXRoIG5ldyBkZiBhcGkuCgkqIG1vZHVsby1zY2hlZC5jIChzbXNfc2NoZWR1bGUsIHJlc3Rfb2ZfaGFuZGxlX3NtcywKCXJlc3Rfb2ZfaGFuZGxlX3Ntcyk6IERpdHRvLgoJKiB3ZWIuYyAodW5pb25maW5kX3VuaW9uLCB1bmlvbl9kZWZzLCBlbnRyeV9yZWdpc3Rlciwgd2ViX21haW4pOgoJRGl0dG8uCgkqIGxvb3BfaW52YXJpYW50LmMgKGludmFyaWFudF9mb3JfdXNlLCBoYXNoX2ludmFyaWFudF9leHByXzEsCglpbnZhcmlhbnRfZXhwcl9lcXVhbF9wLCBmaW5kX2RlZnMsIGNoZWNrX2RlcGVuZGVuY2llcywKCWZpbmRfaW52YXJpYW50X2luc24sIGZpbmRfaW52YXJpYW50c190b19tb3ZlLCBtb3ZlX2ludmFyaWFudF9yZWcsCglmcmVlX2ludl9tb3Rpb25fZGF0YSwgbW92ZV9sb29wX2ludmFyaWFudHMpOiBEaXR0by4KCSogTWFrZWZpbGUuaW4gKGRmLmMsIGRmLXNjYW4uYyBkZi1wcm9ibGVtcy5jIGRmLWNvcmUuYyk6CglVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKG9kZi5jKTogQWRkZWQgZGVmZWN0aXZlIGVudHJ5IHRoYXQgd2FzIGRlbGV0ZWQgbGF0ZXIgaW4gZGF5LgoJKiBzY2hlZC1kZXBzLmMgKHNjaGVkX2FuYWx5emVfMSk6IERpdHRvLgoKMjAwNi0wMS0xMSAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2V4cHJfb3BlcmFuZHMpOiBSZWNvcmQgYWRkcmVzc2FibGUKCXZhcmlhYmxlcyBkaXJlY3RseS4gIERvIG5vdCBjYWxsIGFkZF9zdG10X29wZXJhbmRzIGZvciBDT05TVF9ERUNMcwoJYW5kIEFSUkFZX0RFQ0xzLgoJKGdldF9pbmRpcmVjdF9yZWZfb3BlcmFuZHMpOiBSZW1vdmUgaGFuZGxpbmcgb2YgKigmYSArIG9mZnNldCkgY2FzZS4KCShhZGRfc3RtdF9vcGVyYW5kcyk6IEhhbmRsZSBvbmx5IG9iamVjdHMgc2F0aXNmeWluZyBTU0FfVkFSX1AuCgoyMDA2LTAxLTExICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9yZXR1cm5faW5fbWVtb3J5KTogRml4IGNvbW1lbnQ6IHRoaXMKCWZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpbiB0aGUgcG9zaXRpdmUgY2FzZS4KCjIwMDYtMDEtMTAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgdGFyZ2V0LzIwNzU0CgkqIGNvbmZpZy9wYS9wYS5tZDogQ3JlYXRlIHNlcGFyYXRlIDMyIGFuZCA2NC1iaXQgbW92ZSBwYXR0ZXJucwoJZm9yIFNJLCBESSwgU0YgYW5kIERGIG1vZGVzLiAgQWRkIGFsdGVybmF0aXZlcyB0byBjb3B5IGJldHdlZW4KCWdlbmVyYWwgYW5kIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyB0byB0aGUgMzItYml0IHBhdHRlcm5zLgoJKiBjb25maWcvcGEvcGEtNjQuaCAoU0VDT05EQVJZX01FTU9SWV9ORUVERURfUlRYKTogRGVsZXRlIHVuZGVmaW5lLgoJKiBjb25maWcvcGEvcGEuaCAoU0VDT05EQVJZX01FTU9SWV9ORUVERURfUlRYKTogRGVsZXRlIGRlZmluZS4KCShTRUNPTkRBUllfTUVNT1JZX05FRURFRCk6IFNlY29uZGFyeSBtZW1vcnkgaXMgb25seSBuZWVkZWQgd2hlbgoJZ2VuZXJhdGluZyA2NC1iaXQgY29kZS4KCSogY29uZmlnL3BhL3BhLmMgKG91dHB1dF9tb3ZlX2RvdWJsZSk6IEhhbmRsZSBjb3BpZXMgYmV0d2VlbiBnZW5lcmFsCglhbmQgZmxvYXRpbmcgcmVnaXN0ZXJzLgoKMjAwNi0wMS0xMCAgU3R1YXJ0IEhhc3RpbmdzICA8c3R1YXJ0QGFwcGxlLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHNldF9nb3QpOiBVcGRhdGUuCgkoc2V0X2dvdF9sYWJlbGxlZCk6IE5ldy4gIChVTlNQRUNfTERfTVBJQyk6IE5ldy4KCShidWlsdGluX3NldGptcF9yZWNlaXZlcik6IE1hY2gtTyBzdXBwb3J0LgoJKiBjb25maWcvaTM4Ni9kYXJ3aW4uaCAoVEFSR0VUX0FTTV9GSUxFX0VORCkgRGVmaW5lLgoJKEdPVF9TWU1CT0xfTkFNRSk6IERlZmluZS4KCShGT1JDRV9QUkVGRVJSRURfU1RBQ0tfQk9VTkRBUllfSU5fTUFJTik6IE5ldy4KCShUQVJHRVRfREVFUF9CUkFOQ0hfUFJFRElDVElPTik6IFJlbW92ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChvdmVycmlkZV9vcHRpb25zKTogUmV2aXNlIGZvciBEYXJ3aW4uCgkoVVNFX0hJRERFTl9MSU5LT05DRSk6IEVuYWJsZSBmb3IgTWFjaC1PLiAgKGl4ODZfZmlsZV9lbmQpOiBNYWNoLU8KCXN1cHBvcnQuICAoZGFyd2luX3g4Nl9maWxlX2VuZCk6IE5ldy4gIChvdXRwdXRfc2V0X2dvdCk6IEFkZCBsYWJlbAoJcGFyYW1ldGVyLCByZXZpc2UgZm9yIE1hY2gtTy4gICh4ODZfb3V0cHV0X21pX3RodW5rKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggKG91dHB1dF9zZXRfZ290KTogTGlrZXdpc2UuCgkqIGNvbmZpZy9kYXJ3aW4uYyAobWFjaG9waWNfbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyk6IFVwZGF0ZQoJcmVnc19ldmVyX2xpdmVbXS4KCjIwMDYtMDEtMTAgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLmggKFNINV9XT1VMRF9CRV9QQVJUSUFMX05SRUdTKTogVXNlIEdFVF9NT0RFX1NJWkUKCXdoZW4gTU9ERSBpc24ndCBCTEttb2RlLgoKMjAwNi0wMS0xMCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI1MzY3CgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5oIChIQVJEX1JFR05PX1JFTkFNRV9PSyk6IE5ldyBtYWNyby4KCjIwMDYtMDEtMTAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCVBSIHRhcmdldC8yNTcxOAoJKiBjb25maWcvY3Jpcy9jcmlzLm1kICgidW1pbnNpMyIpOiBEb24ndCB1c2UgOC0gb3IgMTYtYml0IHNpemVzCglmb3IgYSBuZWdhdGl2ZSBib3VuZC4KCjIwMDYtMDEtMTAgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtc3NhLXN0cnVjdGFsaWFzLmMgKGdldF9jb25zdHJhaW50X2Zvcl9jb21wb25lbnRfcmVmKToKCU5ldmVyIG92ZXJyaWRlIHdpdGggYW55dGhpbmcgY29uc3RyYWludC4KCjIwMDYtMDEtMTAgIEphbiBCZXVsaWNoICA8amJldWxpY2hAbm92ZWxsLmNvbT4KCgkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9kYXRhX2FsaWdubWVudCk6IERvbid0IGZvcmNlIGFsaWdubWVudCB0bwoJMjU2IGJpdHMgd2hlbiBvcHRpbWl6ZV9zaXplLgoKMjAwNi0wMS0xMCAgSmFuIEJldWxpY2ggIDxqYmV1bGljaEBub3ZlbGwuY29tPgoKCSogY29uZmlnL2kzODYvbmV0d2FyZS5oIChUQVJHRVRfU1VCVEFSR0VUX0RFRkFVTFQpOiBJbmNsdWRlCglNQVNLX0FMSUdOX0RPVUJMRS4KCSogY29uZmlnL2kzODYvbndsZC5oIChMSU5LX1NQRUMpOiBBZGQgLS1leHRlbnNpb25zOkdOVSBvcHRpb24uCgkqIGNvbmZpZy9pMzg2L3QtbndsZCAoU0hMSUJfTElOSyk6IEluc2VydCBzcGFjZXMgYmV0d2VlbiBleHByCglhcmd1bWVudHMuCgoyMDA2LTAxLTEwICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZCAoZWFzeV9mcF9jb25zdGFudCk6IERpc2NvdW50IGRlY2ltYWwKCWZsb2F0IG1vZGVzLgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfc2NhbGFyX21vZGVfc3VwcG9ydGVkX3ApOiBOZXcuCgkoVEFSR0VUX1NDQUxBUl9NT0RFX1NVUFBPUlRFRF9QKTogRGVmaW5lLgoJKFVTRV9GUF9GT1JfQVJHKTogUmVqZWN0IGRlY2ltYWwgZmxvYXQgbW9kZXMuCgkoZnVuY3Rpb25fYXJnX2FkdmFuY2UpOiBMaWtld2lzZS4KCShvdXRwdXRfdG9jKTogSGFuZGxlIGVtaXR0aW5nIFREbW9kZSwgRERtb2RlIGFuZCBTRG1vZGUgY29uc3RhbnRzLgoJKHJzNjAwMF9oYW5kbGVfYWx0aXZlY19hdHRyaWJ1dGUpOiBEbyBub3QgcGVybWl0IGRlY2ltYWwgZmxvYXRpbmcKCXBvaW50IHR5cGVzIGluIEFsdGlWZWMgdmVjdG9ycy4KCShyczYwMDBfZnVuY3Rpb25fdmFsdWUpOiBVc2UgR1BfQVJHX1JFVFVSTiBmb3IgZGVjaW1hbCBmbG9hdHMuCgkocnM2MDAwX2xpYmNhbGxfdmFsdWUpOiBMaWtld2lzZS4KCjIwMDYtMDEtMDkgIEJvYiBXaWxzb24gIDxib2Iud2lsc29uQGFjbS5vcmc+CgoJKiBjb25maWcveHRlbnNhL2llZWU3NTQtZGYuUzogTmV3IGZpbGUuCgkqIGNvbmZpZy94dGVuc2EvaWVlZTc1NC1zZi5TOiBOZXcgZmlsZS4KCSogY29uZmlnL3h0ZW5zYS90LXh0ZW5zYSAoTElCMkZVTkNTX0VYVFJBKTogUmVtb3ZlIGZwLWJpdC5jICYgZHAtYml0LmMuCgkoTElCMUFTTUZVTkNTKTogQWRkIFNGbW9kZSBhbmQgREZtb2RlIGZsb2F0aW5nLXBvaW50IGZ1bmN0aW9ucy4KCSogY29uZmlnL3h0ZW5zYS9saWIxZnVuY3MuYXNtOiBJbmNsdWRlIGllZWU3NTQtZGYuUyBhbmQgaWVlZTc1NC1zZi5TLgoKMjAwNi0wMS0wOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWcvc2gvcHJlZGljYXRlcy5tZCAoYmluYXJ5X2Zsb2F0X29wZXJhdG9yLAoJYmluYXJ5X2xvZ2ljYWxfb3BlcmF0b3IsIGNvbW11dGF0aXZlX2Zsb2F0X29wZXJhdG9yLAoJZXF1YWxpdHlfY29tcGFyaXNvbl9vcGVyYXRvciwgZ3JlYXRlcl9jb21wYXJpc29uX29wZXJhdG9yLAoJbGVzc19jb21wYXJpc29uX29wZXJhdG9yLCBsb2dpY2FsX29wZXJhdG9yLAoJbm9uY29tbXV0YXRpdmVfZmxvYXRfb3BlcmF0b3IsIHNoaWZ0X29wZXJhdG9yLAoJc3ltYm9sX3JlZl9vcGVyYW5kLCB1bmFyeV9mbG9hdF9vcGVyYXRvcik6IFJlbW92ZSByZWR1bmRhbnQKCWNvbmRpdGlvbmFscy4KCjIwMDYtMDEtMDkgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJKiB0cmVlLXNzYS1kb20uYyAoc2ltcGxpZnlfY29uZF9hbmRfbG9va3VwX2F2YWlsX2V4cHIpOiBSZW1vdmUKCWNvZGUgdG8gcHJvcGFnYXRlIHRoZSBSSFMgb2YgYSBjYXN0IGludG8gQ09ORF9FWFBSX0NPTkQuICBSZW1vdmUKCW5vdyB1bnVzZWQgYXJndW1lbnRzLiAgQ2FsbGVycyB1cGRhdGVkLgoJKGVsaW1pbmF0ZV9yZWR1bmRhbnRfY29tcHV0YXRpb25zKTogUmVtb3ZlIG5vdyB1bnVzZWQgYXJndW1lbnRzLAoJY2FsbGVycyB1cGRhdGVkLgoJKGxvY2FsX2ZvbGQpOiBSZW1vdmUsIG5vIGxvbmdlciB1c2VkLgoJKGZpbmRfZXF1aXZhbGVudF9lcXVhbGl0eV9jb21wYXJpc29uKTogUmVtb3ZlZCBmcm9tIHRyZWUtc3NhLWRvbS5jCglhbmQgbW92ZWQgdG8uLi4KCSogdHJlZS1zc2EtZm9yd3Byb3AuYyAoZmluZF9lcXVpdmFsZW50X2VxdWFsaXR5X2NvbXBhcmlzb24pOiBIZXJlLgoJKHNpbXBsaWZ5X2NvbmQpOiBOZXcgZnVuY3Rpb24uCgkoZm9yd2FyZF9wcm9wYWdhdGVfaW50b19jb25kKTogQ2FsbCBzaW1wbGlmeV9jb25kLgoKMjAwNi0wMS0wOSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcvaTM4Ni9zc2UubWQgKCp2ZWNfZXh0cmFjdHYyZGlfMV9zc2UyKTogTmV3LgoJKCp2ZWNfZXh0cmFjdHYyZGlfMV9zc2UpOiBOZXcuCgoyMDA2LTAxLTA5ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyk6IFR5cG8gZml4LgoKMjAwNi0wMS0wOCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAoZ2V0X2NvbnN0cmFpbnRfZm9yKTogUmVtb3ZlCglhbnlvZmZzZXQgYXJndW1lbnQuCgkoZ2V0X2NvbnN0cmFpbnRfZm9yX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCShkb19kZXJlZik6IExpa2V3aXNlLgoJKGdldF9jb25zdHJhaW50X2Zvcik6IExpa2V3aXNlLgoJKGRvX3N0cnVjdHVyZV9jb3B5KTogTGlrZXdpc2UuCgkoaGFuZGxlX3B0cl9hcml0aCk6IExpa2V3aXNlLgoJKGZpbmRfZnVuY19hbGlhc2VzKTogTGlrZXdpc2UuICBSZW1vdmUgdW51c2VkIG5lZWRfYW55b2Zmc2V0Cgl2YXJpYWJsZS4KCjIwMDYtMDEtMDggIEoib3JuIFJlbm5lY2tlICA8am9lcm4ucmVubmVja2VAc3QuY29tPgoJICAgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgoKCSogY29uZmlnL3NoL3NoLmggKENPTlNUX09LX0ZPUl9LMTYpOiBEZWZpbmUuCgkoQ09OU1RfT0tfRk9SX0spOiBBZGQgQ09OU1RfT0tfRk9SX0sxNiBjYXNlLgoJKEVYVFJBX0NPTlNUUkFJTlRfQzE2KTogUmVtb3ZlLgoJKEVYVFJBX0NPTlNUUkFJTlRfQ3NzLCBFWFRSQV9DT05TVFJBSU5UX0NzdSk6IERlZmluZS4KCShFWFRSQV9DT05TVFJBSU5UX0MpOiBSZW1vdmUgRVhUUkFfQ09OU1RSQUlOVF9DMTYgY2FzZSBhbmQgYWRkCglFWFRSQV9DT05TVFJBSU5UX0NzcyBhbmQgRVhUUkFfQ09OU1RSQUlOVF9Dc3UgY2FzZXMuCgkqIGNvbmZpZy9zaC9zaC5jIChwcmludF9vcGVyYW5kKTogSGFuZGxlIHVuc2lnbmVkIDE2LWJpdCBzeW1ib2xpYwoJY29uc3RhbnRzIG9mIFNIbWVkaWEuICBIYW5kbGUgbmVzdGVkIGNvbnN0YW50IGV4cHJlc3Npb25zIG9mCglTSG1lZGlhIGNvcnJlY3RseS4KCShhbmRjb3N0cyk6IEZpeCB0aGUgY29zdHMgZm9yIFNIbWVkaWEgY29uc3RhbnRzLgoJKHNoX3J0eF9jb3N0cyk6IFRha2UgYWNjb3VudCBvZiBvdXRlcl9jb2RlIGZvciBTSG1lZGlhIGNvbnN0YW50cy4KCSogY29uZmlnL3NoL3NoLm1kICgqbW92c2lfbWVkaWEpOiBVc2UgQ3NzIGNvbnN0cmFpbnQgaW5zdGVhZCBvZiBDMTYuCgkoKm1vdnNpX21lZGlhX25vZnB1LCAqbW92cWlfbWVkaWEsICptb3ZoaV9tZWRpYSk6IExpa2V3aXNlLgoJKCptb3ZkaV9tZWRpYSwgKm1vdmRpX21lZGlhX25vZnB1LCBtb3Z2OHFpX2ksIG1vdnYyaGlfaSk6IExpa2V3aXNlLgoJKG1vdnY0aGlfaSwgbW92djJzaV9pKToJTGlrZXdpc2UuCgkobW92c2lfY29uc3QpOiBBZGp1c3QgdGhlIHNlY29uZCBvcGVyYW5kIG9mIGlvciBzbyB0byBtYXRjaCB3aXRoCgl0aGUgQ3N1IGNvbnN0cmFpbnQuCgkobW92ZGlfY29uc3QsIG1vdmRpX2NvbnN0XzMyYml0KTogTGlrZXdpc2UuCgkobW92ZGlfY29uc3RfMTZiaXQrMSk6IERvbid0IHNpZ24tZXh0ZW5kIExPVy4KCShtb3ZkaV9jb25zdF8xNmJpdCsyKTogTGlrZXdpc2UuICBSZW1vdmUgdGhlIHplcm9fZXh0ZW5kIGFuZCB0cnVuY2F0ZQoJc3RlcC4KCSgqZG91YmxlX3Nob3JpKTogRml4IHRoZSBzcGxpdCBjb25kaXRpb24uICBVc2UgR0VOX0lOVCBpbnN0ZWFkCglvZiBnZXRfaW50X21vZGUgY2FsbHMuICBNYXNrIGxvd2VyIDE2LWJpdCBvZiB0aGUgYXJndW1lbnQgb2YKCXRoZSBsYXN0IEdFTl9JTlQuCgkoc3ltMkdPVFBMVCk6IFJlbW92ZS4KCShzeW1HT1RQTFQycmVnKTogUmVwbGFjZSBnZW5fc3ltMkdPVFBMVCB3aXRoIGdlbl9ydHhfQ09OU1QgYW5kCglnZW5fcnR4X1VOU1BFQy4KCSogY29uZmlnL3NoL3ByZWRpY2F0ZXMubWQgKGFyaXRoX29wZXJhbmQpOiBVc2UgRVhUUkFfQ09OU1RSQUlOVF9Dc3MKCWluc3RlYWQgb2YgRVhUUkFfQ09OU1RSQUlOVF9DMTYuCgoyMDA2LTAxLTA3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGFpcnMuY29tPgoJICAgIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AZ251Lm9yZz4KCglQUiBydGwtb3B0aW1pemF0aW9uLzI1NjYyCgkqIG9wdGFicy5jIChzaW1wbGlmeV9leHBhbmRfYmlub3ApOiBVc2Ugc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbgoJZm9yIGNvbnN0YW50IG9wZXJhbmRzIGluc3RlYWQgb2Ygc2ltcGxpZnlfZ2VuX2JpbmFyeS4KCSogc2ltcGxpZnktcnR4LmMgKHNpbXBsaWZ5X2dlbl9iaW5hcnkpOiBTd2FwIGNvbW11dGF0aXZlIG9wZXJhbmRzCglhZnRlciB0cnlpbmcgc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbgoKMjAwNi0wMS0wNiAgRGFuaWVsIEJlcmxpbiAgPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiB0cmVlLmMgKGl0ZXJhdGl2ZV9oYXNoX2V4cHIpOiBIYXNoIGRlY2xzIGJhc2VkIG9uIFVJRC4KCjIwMDYtMDEtMDYgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0BhcHBsZS5jb20+CgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX0FTTV9FTUlUX0VYQ0VQVF9UQUJMRV9MQUJFTCk6IERvY3VtZW50LgoJKFRBUkdFVF9VTldJTkRfRU1JVCk6IEZpeCBzcGVsbGluZy4KCSogdGFyZ2V0LmggKGdjY190YXJnZXQpOiBBZGQgZXhjZXB0X3RhYmxlX2xhYmVsLgoJKiBleGNlcHQuYyAob3V0cHV0X2Z1bmN0aW9uX2V4Y2VwdGlvbl90YWJsZSk6IFVzZS4KCSogdmFyYXNtLmMgKGRlZmF1bHRfZW1pdF9leGNlcHRfdGFibGVfbGFiZWwpOiBOZXcuCgkqIHRhcmdldC1kZWYuaCAoVEFSR0VUX0FTTV9FTUlUX0VYQ0VQVF9UQUJMRV9MQUJFTCk6IE5ldyBkZWZhdWx0CglkZWZpbmUuCgkoYXNtX291dCk6IEFkZCBoZXJlLgoJKiBvdXRwdXQuaCAoZGVmYXVsdF9lbWl0X2V4Y2VwdF90YWJsZV9sYWJlbCk6IFByb3RvdHlwZS4KCSogY29uZmlnL2Rhcndpbi1wcm90b3MuaCAoZGFyd2luX2VtaXRfZXhjZXB0X3RhYmxlX2xhYmVsKTogRGl0dG8uCgkqIGNvbmZpZy9kYXJ3aW4uYyAoZGFyd2luX2VtaXRfZXhjZXB0X3RhYmxlX2xhYmVsKTogRGVmaW5lLgoJKiBjb25maWcvZGFyd2luLmggKFRBUkdFVF9BU01fRU1JVF9FWENFUFRfVEFCTEUpOiBEaXR0by4KCjIwMDYtMDEtMDYgIFpkZW5layBEdm9yYWsgPGR2b3Jha3pAc3VzZS5jej4KCglQUiB0cmVlLW9wdGltaXphdGlvbi8xODUyNwoJKiB0cmVlLXNzYS1sb29wLW5pdGVyLmMgKG51bWJlcl9vZl9pdGVyYXRpb25zX2NvbmQsCgludW1iZXJfb2ZfaXRlcmF0aW9uc19zcGVjaWFsLCBudW1iZXJfb2ZfaXRlcmF0aW9uc19leGl0KToKCU1vdmUgYmFzZSBhbmQgc3RlcCBvZiBhbiBpdiB0byBhIHNpbmdsZSBzdHJ1Y3R1cmUuICBBZGQKCW5vX292ZXJmbG93IGZsYWcsIGFuZCB1c2UgaXQgaW4gIyBvZiBpdGVyYXRpb25zIGFuYWx5c2lzLgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uYyAoYW5hbHl6ZV9zY2FsYXJfZXZvbHV0aW9uX2luX2xvb3ApOiBBZGQKCWZvbGRlZF9jYXN0cyBhcmd1bWVudC4KCShzaW1wbGVfaXYpOiBQYXNzIGJhc2UgYW5kIHN0ZXAgaW4gYSBzdHJ1Y3R1cmUuICBTZXQgbm9fb3ZlcmZsb3cKCWZsYWcuCgkoc2Nldl9jb25zdF9wcm9wKTogQWRkIGFyZ3VtZW50IHRvIGFuYWx5emVfc2NhbGFyX2V2b2x1dGlvbl9pbl9sb29wLgoJRXZhbHVhdGUgZXhwZW5zaXZlbmVzcyBvZiBjb21wdXRpbmcgIyBvZiBpdGVyYXRpb25zIGluc3RlYWQgb2YKCXRoZSBmaW5hbCBleHByZXNzaW9uLgoJKiB0cmVlLXNjYWxhci1ldm9sdXRpb24uaCAoYWZmaW5lX2l2KTogTmV3IHN0cnVjdHVyZS4KCShzaW1wbGVfaXYpOiBEZWNsYXJhdGlvbiBjaGFuZ2VkLgoJKiB0cmVlLWNocmVjLmMgKGNocmVjX2FwcGx5KTogSGFuZGxlIGNocmVjcyBjb250YWluaW5nIHN5bWJvbHMuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKGRldGVybWluZV9iaXZfc3RlcCwgZmluZF9naXZzX2luX3N0bXRfc2NldiwKCWZpbmRfZ2l2c19pbl9zdG10KTogQ2hhbmdlZCBkdWUgdG8gc2ltcGxlX2l2IGNoYW5nZS4KCjIwMDYtMDEtMDYgIEplZmYgTGF3ICA8bGF3QHJlZGhhdC5jb20+CgoJUFIgYWRhLzI0OTk0CgkqIHRyZWUtY2ZnLmMgKGJzaV9yZXBsYWNlKTogUmVuYW1lIGZpbmFsIGFyZ3VtZW50IGZyb20KCVBSRVNFUlZFX0VIX0lORk8gdG8gVVBEQVRFX0VIX0lORk8uICBGaXggdHlwbyBpbiBsYXN0CgljaGFuZ2UgKHN0bXQgLT4gb3JpZ19zdG10KS4KCSogdHJlZS1laC5jICh2ZXJpZnlfZWhfdGhyb3dfc3RtdF9ub2RlKTogTmV3IGZ1bmN0aW9uLgoJKGJzaV9yZW1vdmUpOiBBZGQgbmV3IGFyZ3VtZW50LiAgUmVtb3ZlIEVIIGluZm9ybWF0aW9uCglpZiByZXF1ZXN0ZWQuCgkodmVyaWZ5X2VoX3Rocm93X3RhYmxlX3N0YXRlbWVudHMpOiBOZXcgZnVuY3Rpb24uCgkoYnNpX3JlbW92ZSk6IEFkZCBuZXcgYXJndW1lbnQgUkVNT1ZFX0VIX0lORk8uICBBbGwgY2FsbGVycwoJdXBkYXRlZC4KCSogdHJlZS1vcHRpbWl6ZS5jIChleGVjdXRlX2ZyZWVfY2ZnX2Fubm90YXRpb25zKTogVmVyaWZ5Cgl0aGUgRUggdGhyb3cgc3RhdGVtZW50IHRhYmxlIGFmdGVyIHJlbW92aW5nIGFubm90YXRpb25zLgoJKiBleGNlcHQuaCAodmVyaWZ5X2VoX3Rocm93X3RhYmxlX3N0YXRlbWVudHMpOiBQcm90b3R5cGUuCgkqIHRyZWUtZmxvdy5oIChic2lfcmVtb3ZlKTogVXBkYXRlIHByb3RvdHlwZS4KCSogdHJlZS12cnAuYyAocmVtb3ZlX3JhbmdlX2Fzc2VydGlvbnMpOiBBZGQgbmV3IGFyZ3VtZW50IHRvCglic2lfcmVtb3ZlIGNhbGwuCgkqIHRyZWUtc3NhLWxvb3AtaW0uYyAobW92ZV9jb21wdXRhdGlvbnNfc3RtdCk6IExpa2V3aXNlLgoJKiB0cmVlLWNvbXBsZXguYyAoZXhwYW5kX2NvbXBsZXhfZGl2X3dpZGUpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmMgKHJlbW92ZV9jdHJsX3N0bXRfYW5kX3VzZWxlc3NfZWRnZXMpOiBMaWtld2lzZQoJKiB0cmVlLXRhaWxjYWxsLmMgKGVsaW1pbmF0ZV90YWlsY2FsbCk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kc2UuYyAoZHNlX29wdGltaXplX3N0bXQpOiBMaWtld2lzZS4KCSogdHJlZS1zc2EtbG9vcC1pdm9wdHMuYyAocmVtb3ZlX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKiB0cmVlLW5ydi5jICh0cmVlX25ydik6IExpa2V3aXNlLgoJKiB0cmVlLXZlY3Rvcml6ZXIuYyAoc2xwZWVsX21ha2VfbG9vcF9pdGVyYXRlX250aW1lcyk6IExpa2V3aXNlLgoJKiB0cmVlLWlmLWNvbnYuYyAodHJlZV9pZl9jb252ZXJ0X2NvbmRfZXhwcik6IExpa2V3aXNlLgoJKGNvbWJpbmVfYmxvY2tzKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXBoaW9wdC5jIChyZXBsYWNlX3BoaV9lZGdlX3dpdGhfdmFyaWFibGUpOiBMaWtld2lzZS4KCSogdHJlZS1jZmdjbGVhbnVwLmMgKGNsZWFudXBfY3RybF9leHByX2dyYXBoKTogTGlrZXdpc2UuCgkoY2xlYW51cF9jb250cm9sX2Zsb3cpOiBMaWtld2lzZS4KCShyZW1vdmVfZm9yd2FyZGVyX2Jsb2NrKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLXByZS5jIChyZW1vdmVfZGVhZF9pbnNlcnRlZF9jb2RlKTogTGlrZXdpc2UuCgkqIHRyZWUtc3JhLmMgKHNyYV9yZXBsYWNlKTogTGlrZXdpc2UuCgkqIHRyZWUtc3NhLWZvcndwcm9wLmMgKGZvcndhcmRfcHJvcGFnYXRlX2ludG9fY29uZCk6IExpa2V3aXNlLgoJKGZvcndhcmRfcHJvcGFnYXRlX3NpbmdsZV91c2VfdmFycyk6IExpa2V3aXNlLgoJKiB0cmVlLXNzYS1kY2UuYyAocmVtb3ZlX2RlYWRfc3RtdCk6IExpa2V3aXNlLgoJKiB0cmVlLWlubGluZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBMaWtld2lzZS4KCSogdHJlZS12ZWN0LXRyYW5zZm9ybS5jICh2ZWN0X3RyYW5zZm9ybV9sb29wKTogTGlrZXdpc2UuCgkqIHRyZWUtb3V0b2Ytc3NhLmMgKHJld3JpdGVfdHJlZXMpOiBMaWtld2lzZS4KCSogdHJlZS1jZmcuYyAobWFrZV9nb3RvX2V4cHJfZWRnZXMpOiBMaWtld2lzZS4KCShjbGVhbnVwX2RlYWRfbGFiZWxzKTogTGlrZXdpc2UuCgkodHJlZV9tZXJnZV9ibG9ja3MsIHJlbW92ZV9iYiwgZGlzYmFuZF9pbXBsaWNpdF9lZGdlcyk6IExpa2V3aXNlLgoJKGJzaV9tb3ZlX2JlZm9yZSwgYnNpX21vdmVfYWZ0ZXIpOiBMaWtld2lzZS4KCShic2lfbW92ZV90b19iYl9lbmQsIHRyeV9yZWRpcmVjdF9ieV9yZXBsYWNpbmdfanVtcCk6IExpa2V3aXNlCgkodHJlZV9yZWRpcmVjdF9lZGdlX2FuZF9icmFuY2gsIHRyZWVfc3BsaXRfYmxvY2spOiBMaWtld2lzZS4KCjIwMDYtMDEtMDYgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIHRyZWUtb3B0LzI1NTI4CgkqIHRyZWUtc3NhLWFsaWFzLmMgKGZpbmRfdXNlZF9wb3J0aW9ucyk6IEhhbmRsZSBSRUFMUEFSVF9FWFBSCglhbmQgSU1BR1BBUlRfRVhQUi4KCSogdHJlZS1mbG93LWlubGluZS5oICh2YXJfY2FuX2hhdmVfc3VidmFycyk6IEhhbmRsZSBjb21wbGV4IHR5cGVzCglvbiBub24gZ2ltcGxlIHZhcmlhYmxlcy4gIEFsc28gYWRkIGNoZWNrcyBhdCB0aGUgdG9wIGZvciBkZWNscyBhbmQKCW10YWdzLgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChwdXNoX2ZpZWxkc19vbnRvX2ZpZWxkc3RhY2spOiBIYW5kbGUKCWNvbXBsZXggdHlwZXMuCgkqIHRyZWUtc3NhLW9wZXJhbmRzLmMgKHBhcnNlX3NzYV9vcGVyYW5kcyk6IEhhbmRsZSBSRUFMUEFSVF9FWFBSCglhbmQgSU1BR1BBUlRfRVhQUiBmb3IgY3JlYXRpbmcgTVVTVF9ERUZzLgoJKGdldF9leHByX29wZXJhbmRzKTogSGFuZGxlIFNTQV9OQU1FLCBTVFJVQ1RfRklFTERfVEFHLCBUWVBFX01FTU9SWV9UQUcsCglhbmQgTkFNRV9NRU1PUllfVEFHIHNlcGFyYXRlbHkgZnJvbSB0aGUgREVDTHMuCgoyMDA2LTAxLTA2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmVlLWRmYS5jIChtYXJrX25ld192YXJzX3RvX3JlbmFtZSk6IENyZWF0ZSBzdG10Cglhbm5vdGF0aW9uLCBpZiBuZWNlc3NhcnkuCgkqIHRyZWUtc3NhLXByZS5jIChjcmVhdGVfZXhwcmVzc2lvbl9ieV9waWVjZXMpOiBSZW1vdmUKCXJlZHVuZGFudCBjYWxscyB0byB1cGRhdGVfc3RtdC4KCSogdHJlZS1zc2EtZm9yd3Byb3AuYyAodGlkeV9hZnRlcl9mb3J3YXJkX3Byb3BhZ2F0ZV9hZGRyKToKCUxpa2V3aXNlLgoKMjAwNi0wMS0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGMtcGFyc2VyLmMgKGNfcGFyc2VyX29iamNfbWV0aG9kcHJvdG9saXN0KTogSGFuZGxlIENQUF9QUkFHTUEuCgoyMDA2LTAxLTA1ICBDYXJsb3MgTydEb25lbGwgIDxjYXJsb3NAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGMtdHlwZWNrLmM6IFVwZGF0ZSBjb3B5cmlnaHQgZGF0ZS4KCjIwMDYtMDEtMDUgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYy10eXBlY2suYyAoYnVpbGRfY19jYXN0KTogQWx3YXlzIHdhcm4gd2hlbiBjYXN0aW5nCglmcm9tIGEgcG9pbnRlciB0byBhbiBpbnRlZ2VyIG9mIGRpZmZlcmVudCBzaXplLCBldmVuIGlmCgl0aGUgbm9kZSB3YXMgY29uc3RhbnQuCgoyMDA2LTAxLTA1ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjI1NTUKCSogdHJlZS1zc2EtYWxpYXMuYyAoY3JlYXRlX292ZXJsYXBfdmFyaWFibGVzX2Zvcik6IERvIG5vdCBnaXZlIHVwLAoJaWYgb25lIHN0cnVjdHVyZSBmaWVsZCBpcyBhbiBhcnJheS4KCSogdHJlZS1zc2Etb3BlcmFuZHMuYyAoZ2V0X2V4cHJfb3BlcmFuZHMpOiBDb250aW51ZSBzY2FubmluZwoJb3BlcmFuZHMgZXZlbiBpZiB3ZSBmb3VuZCBhIHN1YnZhciwgYnV0IGlnbm9yZSBWT1BzIGluIHRoaXMKCWNhc2UuCgkqIHRyZWUtc3NhLWxvb3AtaXZvcHRzLmMgKHJld3JpdGVfdXNlKTogTWFyayBuZXcgdmFycyBpbiBzdG10Cglmb3IgcmVuYW1pbmcuCgkqIHRyZWUtc3NhLWxvb3AuYyAocGFzc19pdl9vcHRpbWl6ZSk6IFNjaGVkdWxlIFRPRE9fdXBkYXRlX3NzYS4KCjIwMDYtMDEtMDUgIFJpY2hhcmQgRWFybnNoYXcgIDxyZWFybnNoYUBhcm0uY29tPgoKCVBSIG1pZGRsZS1lbmQvMjQ5OTgKCSogYXJtL3QtbmV0YnNkIChMSUIyRlVOQ1NfRVhUUkEpOiBEZWZpbmUuCgoyMDA2LTAxLTA1ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgkgICAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiB0cmVlLXBhc3MuaCAoVE9ET19yZW1vdmVfdW51c2VkX2xvY2Fscyk6IERlZmluZS4KCSogZ2ltcGxlLWxvdy5jIChleHBhbmRfdmFyX3AsIHJlbW92ZV91c2VsZXNzX3ZhcnMsCglwYXNzX3JlbW92ZV91c2VsZXNzX3ZhcnMpOiBSZW1vdmUuICBVcGRhdGUgYWxsIHVzZXJzLgoJKiB0cmVlLXNzYS1saXZlLmMgKG1hcmtfYWxsX3ZhcnNfdXNlZF8xKTogSGFuZGxlIFNTQSBuYW1lcy4KCShyZW1vdmVfdW51c2VkX2xvY2Fscyk6IE5ldyBmdW5jdGlvbi4KCSogdHJlZS1mbG93LmggKHJlbW92ZV91bnVzZWRfbG9jYWxzKTogRGVjbGFyZS4KCSogcGFzc2VzLmMgKGV4ZWN1dGVfdG9kbyk6IENhbGwgcmVtb3ZlX3VudXNlZF9sb2NhbHMgaWYKCVRPRE9fcmVtb3ZlX3VudXNlZF9sb2NhbHMgaXMgc2V0LgoJKiB0cmVlLWludG8tc3NhLmMgKHBhc3NfYnVpbGRfc3NhKTogQWRkIFRPRE9fcmVtb3ZlX3VudXNlZF9sb2NhbHMuCgkqIHRyZWUtc3NhLWRjZS5jIChwYXNzX2RjZSk6IExpa2V3aXNlLgoJKiB0cmVlLW91dG9mLXNzYS5jIChwYXNzX2RlbF9zc2EpOiBMaWtld2lzZS4KCjIwMDYtMDEtMDUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyZWUtZmxvdy5oIChzdHJ1Y3QgZmllbGRvZmYpOiBEZWNvbXBvc2UgZmllbGQgdG8KCXR5cGUsIHNpemUgYW5kIGRlY2wuCgkqIHRyZWUtc3NhLWFsaWFzLmMgKGNyZWF0ZV9zZnQpOiBUYWtlIHR5cGUgYXMgcGFyYW1ldGVyLgoJKGNyZWF0ZV9vdmVybGFwX3ZhcmlhYmxlc19mb3IpOiBTdG9yZSB0eXBlLCBzaXplIGFuZCBkZWNsCglpbiB0aGUgZmllbGRvZmYgc3RydWN0dXJlLgoJKiB0cmVlLXNzYS1zdHJ1Y3RhbGlhcy5jIChmaWVsZG9mZl9jb21wYXJlKTogQWRqdXN0IHVzZXJzCglvZiBzdHJ1Y3QgZmllbGRvZmYuCgkocHVzaF9maWVsZHNfb250b19maWVsZHN0YWNrKTogTGlrZXdpc2UuCgkoY3JlYXRlX3ZhcmlhYmxlX2luZm9fZm9yKTogTGlrZXdpc2UuICBVc2Ugb2Zmc2V0IGZvciB0aGUKCVNGVCBuYW1lIGlmIHRoZSBkZWNsIGlzIG5vdCBhdmFpbGFibGUuCgoyMDA2LTAxLTA0ICBQYXVsIEJyb29rICA8cGF1bEBjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnL202OGsvbTY4ay5jIChtNjhrX291dHB1dF9taV90aHVuayk6IFVzZSBqbXAsIG5vdCBqc3IuCgoyMDA2LTAxLTA0ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGxhbWJkYS1jb2RlLmMgKGNhbl9wdXRfaW5faW5uZXJfbG9vcCk6IFJlbGF4CglyZXN0cmljdGlvbnMuCgkoY2FuX3B1dF9hZnRlcl9pbm5lcl9sb29wKTogTmV3IGZ1bmN0aW9uLgoJKGNhbl9jb252ZXJ0X3RvX3BlcmZlY3RfbmVzdCk6IFVzZSBjYW5fcHV0X2FmdGVyX2lubmVyX2xvb3AgYXMgd2VsbC4KCShwZXJmZWN0X25lc3RpZnkpOiBDaGFuZ2UgdG8gbWFrZSBjb3BpZXMgYW5kIG1vZGlmeSB1c2VzLgoKMjAwNi0wMS0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglNZXJnZSBmcm9tIGdvbXAgYnJhbmNoOgoJKiBjLWxleC5jIChjX2xleF93aXRoX2ZsYWdzKSA8Q1BQX1BSQUdNQT46IFNtdWdnbGUgcHJhZ21hIGlkCgl2aWEgaW50ZWdlciBjb25zdGFudC4KCShwcmFnbWFfbGV4KTogUmVtb3ZlLgoJKiBjLXBjaC5jIChjX2NvbW1vbl9wY2hfcHJhZ21hKTogQWNjZXB0IHRoZSBuYW1lIGFzIGFuIGFyZ3VtZW50LAoJcmF0aGVyIHRoYW4gcGFyc2luZyBpdC4KCSogYy1wcmFnbWEuYyAoaGFuZGxlX3ByYWdtYV93ZWFrLCBoYW5kbGVfcHJhZ21hX3JlZGVmaW5lX2V4dG5hbWUsCgloYW5kbGVfcHJhZ21hX2V4dGVybl9wcmVmaXgpOiBBZGQgJTwgJT4gcXVvdGVzLgoJKHJlZ2lzdGVyZWRfcHJhZ21hcyk6IE5ldy4KCShjX3JlZ2lzdGVyX3ByYWdtYV8xKTogTmV3LgoJKGNfcmVnaXN0ZXJfcHJhZ21hKTogVXNlIGl0LgoJKGNfcmVnaXN0ZXJfcHJhZ21hX3dpdGhfZXhwYW5zaW9uKTogTGlrZXdpc2UuCgkoY19pbnZva2VfcHJhZ21hX2hhbmRsZXIpOiBOZXcuCgkoaW5pdF9wcmFnbWEpOiBVc2UgY3BwX3JlZ2lzdGVyX2RlZmVycmVkX3ByYWdtYSBkaXJlY3RseSBmb3IKCXBjaF9wcmVwcm9jZXNzLgoJKiBjLXByYWdtYS5oIChlbnVtIHByYWdtYV9raW5kKTogTmV3LgoJKHByYWdtYV9oYW5kbGVyKTogTmV3LgoJKGNfaW52b2tlX3ByYWdtYV9oYW5kbGVyKTogRGVjbGFyZS4KCSogYy1jb21tb24uYyAoY19wYXJzZV9lcnJvcik6IFByZXR0eSBwcmludCBDUFBfUFJBR01BIGFuZAoJQ1BQX1BSQUdNQV9FT0wuCgkqIGMtY29tbW9uLmggKGNfY29tbW9uX3BjaF9wcmFnbWEpOiBVcGRhdGUgZGVjbC4KCSogTWFrZWZpbGUuaW4gKGMtcGFyc2VyLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKEdURklMRVMpOiBBZGQgYy1wcmFnbWEuaC4KCSogYy1wYXJzZXIuYyAoc3RydWN0IGNfdG9rZW4pOiBBZGQgcHJhZ21hX2tpbmQuCgkoc3RydWN0IGNfcGFyc2VyKTogQWRkIGluX3ByYWdtYS4KCShjX2xleF9vbmVfdG9rZW4pOiBBbHdheXMgaW5pdGlhbGl6ZSBrZXl3b3JkIGFuZCBwcmFnbWFfa2luZC4KCUV4dHJhY3QgZGF0YSBmb3IgQ1BQX1BSQUdNQS4KCShjX3BhcnNlcl9wZWVrXzJuZF90b2tlbik6IERlbnkgQ1BQX1BSQUdNQV9FT0wuCgkoY19wYXJzZXJfY29uc3VtZV90b2tlbik6IERvbid0IGFsbG93IENQUF9QUkFHTUEgdW5sZXNzIGVycm9ycy4KCURvbid0IGFsbG93IENQUF9QUkFHTUFfRU9MIGlmIGluX3ByYWdtYS4KCShjX3BhcnNlcl9jb25zdW1lX3ByYWdtYSk6IE5ldy4KCShjX3BhcnNlcl9za2lwX3VudGlsX2ZvdW5kKTogU3RvcCBvbiBDUFBfUFJBR01BX0VPTC4KCShjX3BhcnNlcl9za2lwX3RvX2VuZF9vZl9wYXJhbWV0ZXIpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9za2lwX3RvX2VuZF9vZl9ibG9ja19vcl9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9za2lwX3RvX3ByYWdtYV9lb2wpOiBOZXcuCgkoY19wYXJzZXJfZXh0ZXJuYWxfZGVjbGFyYXRpb24pOiBIYW5kbGUgQ1BQX1BSQUdNQS4KCShjX3BhcnNlcl9jb21wb3VuZF9zdGF0ZW1lbnRfbm9zdGFydCk6IExpa2V3aXNlLgoJKGNfcGFyc2VyX3N0YXRlbWVudF9hZnRlcl9sYWJlbHMpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9wcmFnbWEpOiBOZXcuCgkocHJhZ21hX2xleCk6IExpa2V3aXNlLgoJKGNfcGFyc2VyX3ByYWdtYV9wY2hfcHJlcHJvY2Vzcyk6IE5ldy4KCShjX3BhcnNlcl9uZXcpOiBNZXJnZSBpbnRvIC4uLgoJKGNfcGFyc2VfZmlsZSk6IC4uLiBoZXJlLiAgQ2FsbCBjX3BhcnNlcl9wcmFnbWFfcGNoX3ByZXByb2Nlc3MuCgoyMDA2LTAxLTA0ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgoKCVBSIGFkYS8yNDk5NAoJKiB0cmVlLWNmZy5jIChic2lfcmVwbGFjZSk6IFJlbW92ZSB0aGUgb3JpZ2luYWwgc3RhdGVtZW50Cglmcm9tIHRoZSBFSCB0aHJvdyBzdGF0ZW1lbnQgdGFibGUuCgoyMDA2LTAxLTA0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy9pMzg2L3BtbV9tYWxsb2MuaCAocG9zaXhfbWVtYWxpZ24pOiBJZiBfX2NwbHVzcGx1cywKCW1ha2UgdGhlIHByb3RvdHlwZSBleHRlcm4gIkMiIGFuZCBhZGQgdGhyb3cgKCkuCgoJUFIgdGFyZ2V0LzI1NTU0CgkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHRlc3RxaV9leHRfMyk6IEVuc3VyZSBsZW4gaXMgcG9zaXRpdmUKCWFuZCBwb3Mgbm9uLW5lZ2F0aXZlIGFuZCBwb3MgKyBsZW4gPD0gMzIuCgkodGVzdHFpX2V4dF8zX3JleDY0KTogRW5zdXJlIGxlbiBpcyBwb3NpdGl2ZSBhbmQgcG9zIG5vbi1uZWdhdGl2ZSwKCWRyb3AgcG9zICsgbGVuIDwgSE9TVF9CSVRTX1BFUl9XSURFX0lOVCB0ZXN0LgoJKHRlc3RxaV9leHRfMyogc3BsaXR0ZXIpOiBIYW5kbGUgcG9zICsgbGVuID09IEhPU1RfQklUU19QRVJfV0lERV9JTlQuCgoJUFIgYy8yNTU1OQoJKiBjLWNvbW1vbi5jIChoYW5kbGVfdmVjdG9yX3NpemVfYXR0cmlidXRlKTogUmVqZWN0IHplcm8gdmVjdG9yIHNpemUKCWFzIHdlbGwgYXMgc2l6ZXMgbm90IG11bHRpcGxlIG9mIGNvbXBvbmVudCBzaXplLgoKCVBSIGRlYnVnLzI1NTYyCgkqIGZ1bmN0aW9uLmMgKGluc3RhbnRpYXRlX2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkoaW5zdGFudGlhdGVfZGVjbHNfMSwgaW5zdGFudGlhdGVfZGVjbHMpOiBJZiBERUNMX0hBU19WQUxVRV9FWFBSX1AsCgl3YWxrIGl0cyBERUNMX1ZBTFVFX0VYUFIgd2l0aCBpbnN0YW50aWF0ZV9leHByLgoKCSogZHdhcmYyb3V0LmMgKGxvY19kZXNjcmlwdG9yX2Zyb21fdHJlZV8xKTogRG9uJ3QgYWRkCglEV19PUF9kZXJlZnssX3NpemV9IGlmIGFkZHJlc3MgaXNuJ3QgZ29pbmcgdG8gYmUgYWRkZWQuCgoyMDA2LTAxLTA0ICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNvbmZpZy9mcC1iaXQuaDogVXNlIHRvcC1vZi1maWxlIGNvbW1lbnQgZnJvbSBsaWJnY2MyLmMuCgkqIGNvbmZpZy9mcC1iaXQuYzogTGlrZXdpc2UuCgoyMDA2LTAxLTAzICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGRvbWluYW5jZS5jOiBBZGQgY29tbWVudCBhYm91dCB3aHkgd2UgdXNlIERGUyBudW1iZXJpbmcKCW9mIGRvbWluYW5jZSB0cmVlLgoKMjAwNi0wMS0wMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgkgICAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglNZXJnZSBmcm9tIGdvbXAtYnJhbmNoOgoJKiB2YXJhc20uYyAoYXNzZW1ibGVfdmFyaWFibGUpOiBIYW5kbGUgdGhyZWFkLWxvY2FsIENPTU1PTiBkYXRhLgoJKiBkZWZhdWx0cy5oIChBU01fT1VUUFVUX1RMU19DT01NT04pOiBEZWZpbmUuCgoyMDA2LTAxLTAzICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjU1NzgKCSogY29tYmluZS5jIChjb21iaW5lX3NpbXBsaWZ5X3J0eCwgZm9yY2VfdG9fbW9kZSk6IERvbid0CglwYXNzIGEgcGFyYW1ldGVyIHRvIHNpbXBsaWZ5X3NoaWZ0X2NvbnN0IGlmIGNoYW5naW5nIEFTSElGVFJUCgl0byBMU0hJRlRSVC4KCjIwMDYtMDEtMDMgIEFkcmlhbiBTdHJhZXRsaW5nICA8c3RyYWV0bGluZ0BkZS5pYm0uY29tPgoKCSogYnVpbHRpbnMuYyAoZ2V0X2J1aWx0aW5fc3luY19tZW0pOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2J1aWx0aW5fc3luY19vcGVyYXRpb24sIGV4cGFuZF9idWlsdGluX2NvbXBhcmVfYW5kX3N3YXAsCglleHBhbmRfYnVpbHRpbl9sb2NrX3Rlc3RfYW5kX3NldCwgZXhwYW5kX2J1aWx0aW5fbG9ja19yZWxlYXNlKToKCUNhbGwgZ2V0X2J1aWx0aW5fc3luY19tZW0gdG8gZ2VuZXJhdGUgbWVtIHJ0eC4KCjIwMDYtMDEtMDMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBjLzI1MTgzCgkqIHN0bXQuYyAoYWRkX2Nhc2Vfbm9kZSk6IE1ha2Ugc3VyZSB0byBjbGVhciBvdmVyZmxvdyBmbGFncwoJZnJvbSByYW5nZXMuCgoyMDA2LTAxLTAzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglNZXJnZSBmcm9tIGdvbXAtYnJhbmNoLgoJKiBjb25maWcvc3BhcmMvc3luYy5tZDogTmV3IGZpbGUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5tZCAoVU5TUEVDVl9NRU1CQVIsIFVOU1BFQ1ZfQ0FTLCBVTlNQRUNWX1NXQVAsCglVTlNQRUNWX0xEU1RVQik6IE5ldyBjb25zdGFudHMuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy5jIChzcGFyY19leHBhbmRfY29tcGFyZV9hbmRfc3dhcF8xMik6IE5ldyBmdW5jdGlvbi4KCSogY29uZmlnL3NwYXJjL3ByZWRpY2F0ZXMubWQgKG1lbW9yeV9yZWdfb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGUuCgkqIGNvbmZpZy9zcGFyYy9zcGFyYy1wcm90b3MuaCAoc3BhcmNfZXhwYW5kX2NvbXBhcmVfYW5kX3N3YXBfMTIpOiBOZXcKCXByb3RvdHlwZS4KCjIwMDYtMDEtMDMgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY29tYmluZS5jIChyZWdfc3Vid29yZF9wKTogTmV3IHByZWRpY2F0ZSB0byB0ZXN0IHdoZXRoZXIgdGhlCglkZXN0aW5hdGlvbiBvZiBhIHNldCByZWZlcnMgdG8gYSBzdWJ3b3JkL3BpZWNlIG9mIGEgcmVnaXN0ZXIuCgkodHJ5X2NvbWJpbmUpOiBHZW5lcmFsaXplIHRoZSBjb2RlIHRvIG1lcmdlIHRoZSBzZXR0aW5nIG9mIGEKCXBzZXVkbyB0byBhIGNvbnN0YW50IGZvbGxvd2VkIGJ5IGEgc2V0IG9mIGEgc3Vid29yZCBvZiB0aGF0CglyZWdpc3RlciB0byBhIGNvbnN0YW50LgoKMjAwNi0wMS0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBiYXNpYy1ibG9jay5oIChjb250cm9sX2Zsb3dfZ3JhcGgpOiBDaGFuZ2UgdGhlIHR5cGUgb2YKCXhfbGFiZWxfdG9fYmxvY2tfbWFwIHRvIFZFQyhiYXNpY19ibG9jayxnYykgKi4KCSogdHJlZS1jZmcuYyAoaW5pdF9lbXB0eV90cmVlX2NmZywgbGFiZWxfdG9fYmxvY2tfZm4sCglzZXRfYmJfZm9yX3N0bXQpOiBBZGp1c3QgdGhlIHVzZXMgb2YgeF9sYWJlbF90b19ibG9ja19tYXAuCgoJKiB0cmVlLXNzYS1wcm9wYWdhdGUuYyAoY2ZnX2Jsb2Nrcyk6IENoYW5nZSB0aGUgdHlwZSB0bwoJVkVDKGJhc2ljX2Jsb2NrLGhlYXApICouCgkoY2ZnX2Jsb2Nrc19hZGQsIGNmZ19ibG9ja3NfZ2V0LCBzc2FfcHJvcF9pbml0LAoJc3NhX3Byb3BfZmluaSk6IEFkanVzdCB0aGUgdXNlcyBvZiBjZmdfYmxvY2tzLgoKMjAwNi0wMS0wMyAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYi5nY2NAZ21haWwuY29tPgoKCSogZm9sZC1jb25zdC5jIChvcGVyYW5kX2VxdWFsX3ApOiBBY2NlcHQgYSBOVUxMIG9wZXJhbmQgMCBmb3IKCUNPTVBPTkVOVF9SRUZzLgoJKiBlbWl0LXJ0bC5jIChtZW1fYXR0cnNfaHRhYl9lcSk6IFVzZSBpdGVyYXRpdmVfaGFzaF9leHByIGZvcgoJaGFzaGluZyB0cmVlcyBpbnN0ZWFkIG9mIGEgcG9pbnRlciBoYXNoLgoJKG1lbV9hdHRyc19odGFiX2VxKTogRG8gYSBkZWVwIGNvbXBhcmUgaW5zdGVhZCBvZiBhIHBvaW50ZXIKCWNvbXBhcmUgZm9yIE1FTV9FWFBSLgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjUxMzAKCSogY3NlLmMgKGV4cF9lcXVpdl9wKTogQ29tcGFyZSBNRU1fQVRUUlMgaW5zdGVhZCBvZiBNRU1fQUxJQVNfU0VUCgl3aGVuIGNvbXBhcmluZyBNRU1zIGZvciBHQ1NFCgoyMDA2LTAxLTAzICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIHRhcmdob29rcy5oIChkZWZhdWx0X2RlY2ltYWxfZmxvYXRfc3VwcG9ydGVkX3ApOiBEZWNsYXJlLgoJKiB0YXJnaG9va3MuYyAoZGVmYXVsdF9kZWNpbWFsX2Zsb2F0X3N1cHBvcnRlZF9wKTogRGVmaW5lLgoJKiB0YXJnZXQtZGVmLmggKFRBUkdFVF9ERUNJTUFMX0ZMT0FUX1NVUFBPUlRFRF9QKTogUmVkZWZpbmUgdG8KCWBkZWZhdWx0X2RlY2ltYWxfZmxvYXRfc3VwcG9ydGVkX3AnLgoJKiBkb2MvdG0udGV4aSAoVEFSR0VUX0RFQ0lNQUxfRkxPQVRfU1VQUE9SVEVEX1ApOiBVcGRhdGUuCgoyMDA2LTAxLTAyICBBZGFtIE5lbWV0ICA8YW5lbWV0QGNhdml1bW5ldHdvcmtzLmNvbT4KCgkqIGNvbWJpbmUuYyAoYXBwbHlfZGlzdHJpYnV0aXZlX2xhdyA8U1VCUkVHPik6IENoZWNrCglUUlVMWV9OT09QX1RSVU5DQVRJT04uCgoyMDA2LTAxLTAyICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGR3YXJmMm91dC5jIChoYXZlX3N3aXRjaGVkX3RleHRfc2VjdGlvbik6IERlbGV0ZS4KCShoYXZlX211bHRpcGxlX2Z1bmN0aW9uX3NlY3Rpb25zKTogTmV3LgoJKGhhdmVfbG9jYXRpb25fbGlzdHMpOiBNYWtlICdib29sJy4KCShhZGRfQVRfbG9jX2xpc3QpOiBVc2UgJ3RydWUnIG5vdCAnMScuCgkoZHdhcmYyb3V0X3N3aXRjaF90ZXh0X3NlY3Rpb24pOiBTZXQgaGF2ZV9tdWx0aXBsZV9mdW5jdGlvbl9zZWN0aW9ucy4KCShvdXRwdXRfbG9jX2xpc3QpOiBVc2UgaGF2ZV9tdWx0aXBsZV9mdW5jdGlvbl9zZWN0aW9ucy4KCShvdXRwdXRfcmFuZ2VzKTogTGlrZXdpc2UuCgkoZHdhcmYyb3V0X2JlZ2luX2Z1bmN0aW9uKTogU2V0IGhhdmVfbXVsdGlwbGVfZnVuY3Rpb25fc2VjdGlvbnMgaWYKCW5lY2Vzc2FyeS4KCShkd2FyZjJvdXRfc291cmNlX2xpbmUpOiBEb24ndCBmYWtlIHNlcGFyYXRlX2xpbmVfaW5mb190YWJsZV9pbl91c2UuCglDaGVjayBmdW5jdGlvbl9zZWN0aW9uIHJhdGhlciB0aGFuIERFQ0xfU0VDVElPTl9OQU1FLgoJKGR3YXJmMm91dF9maW5pc2gpOiBVc2UgaGF2ZV9tdWx0aXBsZV9mdW5jdGlvbl9zZWN0aW9ucy4KCURvbid0IGNsZWFyIGhhdmVfbG9jYXRpb25fbGlzdHMuCgoyMDA2LTAxLTAyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoJICAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGNmZ2xheW91dC5jIChmaXh1cF9yZW9yZGVyX2NoYWluKTogUmVtb3ZlIGtsdWRnZSBmb3IgdGhlCgljYXNlIG9mIGNvbmRpdGlvbmFsIGp1bXAganVtcGluZyB0byB0aGUgbmV4dCBpbnN0cnVjdGlvbi4KCSogY2ZncnRsLmMgKGZvcmNlX25vbmZhbGx0aHJ1X2FuZF9yZWRpcmVjdCk6IEFjY2VwdCBhbGwKCWNhc2VzIG9mIGNvbmRpdGlvbmFsIGp1bXAganVtcGluZyB0byB0aGUgbmV4dCBpbnN0cnVjdGlvbi4KCjIwMDYtMDEtMDIgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGkzODYuYyAoKl9jb3N0KTogQWRkIENPU1RTX05fSU5TTlMuCgkoaXg4Nl9ydHhfY29zdHMpOiBEbyBub3QgdXNlIENPU1RTX05fSU5TTlMuCgoyMDA2LTAxLTAyICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIHRhcmdldC8yNTI1OQoJKiBNYWtlZmlsZS5pbiAoREVDTlVNSU5DKTogSW5jbHVkZSBsaWJkZWNudW1iZXIncyBidWlsZCBkaXJlY3RvcnkuCgoyMDA2LTAxLTAyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogY29uZmlnL2FybS9hcm0uYyAoYWxsX2ZwdXMpOiBGaXggY29tbWVudCB0eXBvLgoJKiBjb25maWcvZGFyd2luLmM6IExpa2V3aXNlLgoJKiBjb25maWcvZnJ2L2Zydi5oIChGUlZfU1RSVUNUX1ZBTFVFX1JFR05VTSk6IExpa2V3aXNlLgoJKiBjb25maWcvaDgzMDAvaDgzMDAubWQgKGV4dGVuZHFpc2kyX2g4MzAwaHMpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGhjMTEvbTY4aGMxMS5jIChtNjhoYzExX3JlbG9hZF9vcGVyYW5kcyk6IExpa2V3aXNlLgoKMjAwNi0wMS0wMSAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2V4cGFuZF9jb21wYXJlX2FuZF9zd2FwcWhpKTogTmV3LgoJKHJzNjAwMF9zcGxpdF9jb21wYXJlX2FuZF9zd2FwcWhpKTogTmV3LgoJKiBjb25maWcvcnM2MDAwL3N5bmMubWQgKHN5bmNfY29tcGFyZV9hbmRfc3dhcHtoaSxxaX0pOiBOZXcuCgkoc3luY19jb21wYXJlX2FuZF9zd2FwcWhpX2ludGVybmFsKTogTmV3LgoJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaDogRGVjbGFyZS4KCg==